aboutsummaryrefslogtreecommitdiffstats
path: root/el/donate
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Updated Estonian translation"Thomas Backlund2014-10-121-0/+1
| | | | This reverts commit a0b2d09125d7911656fe4cb286f20643c4432281.
* Updated Estonian translationMarek Laane2014-10-121-1/+0
|
* Greek donate page switched from php to lang systemFilip Komar2012-10-072-91/+1
|
* remove xml header tagRomain d'Alverny2012-05-251-1/+0
|
* add paypal %Damien Lallement2011-06-101-1/+1
|
* remove IBAN doc reference CCBUG 1249Romain d'Alverny2011-05-161-1/+0
|
* header changeRomain d'Alverny2011-03-301-1/+1
|
* estonian, greek, turkish, romanian donate pagesRomain d'Alverny2010-12-241-0/+93
76901ee88'>45e61de16e073594e8532af5b1fff8e76901ee88 (patch) treeeda23f712150bace0146c6011c39319484f1a715 parent2be3766b2c1fafa44da4b93b2851044d977a128a (diff)downloaddrakx-45e61de16e073594e8532af5b1fff8e76901ee88.tar
drakx-45e61de16e073594e8532af5b1fff8e76901ee88.tar.gz
drakx-45e61de16e073594e8532af5b1fff8e76901ee88.tar.bz2
drakx-45e61de16e073594e8532af5b1fff8e76901ee88.tar.xz
drakx-45e61de16e073594e8532af5b1fff8e76901ee88.zip
This commit was manufactured by cvs2svn to create tagMDK10-LACIE-restore-2
'MDK10-LACIE-restore-2'.
Diffstat
-rw-r--r--.cvsignore5
-rw-r--r--Makefile96
-rw-r--r--Makefile.common64
-rw-r--r--Makefile.config25
-rw-r--r--advanced.msg.xml17
-rw-r--r--docs/.cvsignore1
-rw-r--r--docs/9.0_errata.txt108
-rw-r--r--docs/9.1_errata.txt65
-rw-r--r--docs/BUGS10
-rw-r--r--docs/COPYING340
-rw-r--r--docs/HACKING137
-rw-r--r--docs/Partition-ends-after-end-of-disk.txt66
-rw-r--r--docs/README300
-rw-r--r--docs/README.devel252
-rw-r--r--docs/README.pxe133
-rw-r--r--docs/SHORTCUTS51
-rw-r--r--docs/TODO515
-rw-r--r--docs/advocacy87
-rw-r--r--docs/advocacy-interactive60
-rw-r--r--docs/comparisons288
-rw-r--r--docs/diskdrake.TODO23
-rw-r--r--docs/drakfont/Makefile57
-rw-r--r--docs/drakfont/dia_srcs/drakfont.diabin4599 -> 0 bytes
-rw-r--r--docs/drakfont/dia_srcs/drakfont_install.diabin3662 -> 0 bytes
-rw-r--r--docs/drakfont/dia_srcs/drakfont_uninstall.diabin1908 -> 0 bytes
-rw-r--r--docs/drakfont/drakfont.jpgbin134044 -> 0 bytes
-rw-r--r--docs/drakfont/drakfont.tex152
-rw-r--r--docs/drakfont/drakfont_install.jpgbin86455 -> 0 bytes
-rw-r--r--docs/drakfont/drakfont_uninstall.jpgbin42291 -> 0 bytes
-rw-r--r--docs/drakfont/mandrake.ps534
-rw-r--r--docs/draknet_advanced_doc.txt165
-rwxr-xr-xdocs/interactive/ask_from29
-rwxr-xr-xdocs/interactive/ask_from_list27
-rwxr-xr-xdocs/interactive/ask_from_listf27
-rwxr-xr-xdocs/interactive/ask_from_treelist27
-rwxr-xr-xdocs/interactive/wait_message13
-rw-r--r--docs/mdk-9.2129
-rw-r--r--docs/mdk-vs-redhat43
-rw-r--r--docs/net_object_class.fig73
-rw-r--r--docs/object_class.fig32
-rwxr-xr-xdocs/porting-ugtk48
-rw-r--r--docs/spec-DrakX-8.0.html405
-rw-r--r--docs/wizard.doc31
-rw-r--r--help.msg.xml21
-rw-r--r--isolinux-graphic-simple.bmpbin480566 -> 0 bytes
-rw-r--r--isolinux-graphic-simple.bmp.parameters10
-rw-r--r--isolinux-graphic.bmpbin480566 -> 0 bytes
-rw-r--r--isolinux-graphic.bmp.parameters10
-rw-r--r--kernel/.cvsignore2
-rw-r--r--kernel/Makefile16
-rw-r--r--kernel/list_modules.pm316
-rw-r--r--kernel/modules.pl280
-rwxr-xr-xkernel/strip_modules129
-rwxr-xr-xkernel/update_kernel118
-rwxr-xr-xmake_boot_img843
-rw-r--r--mdk-stage1/.cvsignore15
-rw-r--r--mdk-stage1/Makefile263
-rw-r--r--mdk-stage1/Makefile.common54
-rw-r--r--mdk-stage1/Makefile.mkinitrd_helper30
-rw-r--r--mdk-stage1/adsl.c183
-rw-r--r--mdk-stage1/adsl.h34
-rw-r--r--mdk-stage1/automatic.c165
-rw-r--r--mdk-stage1/automatic.h33
-rw-r--r--mdk-stage1/bootsplash.c70
-rw-r--r--mdk-stage1/bootsplash.h25
-rw-r--r--mdk-stage1/bzlib/Makefile42
-rw-r--r--mdk-stage1/bzlib/blocksort.c1138
-rw-r--r--mdk-stage1/bzlib/bzlib.c1567
-rw-r--r--mdk-stage1/bzlib/bzlib.h319
-rw-r--r--mdk-stage1/bzlib/bzlib_private.h530
-rw-r--r--mdk-stage1/bzlib/compress.c720
-rw-r--r--mdk-stage1/bzlib/crctable.c148
-rw-r--r--mdk-stage1/bzlib/decompress.c664
-rw-r--r--mdk-stage1/bzlib/huffman.c232
-rw-r--r--mdk-stage1/bzlib/randtable.c128
-rw-r--r--mdk-stage1/cdrom.c215
-rw-r--r--mdk-stage1/cdrom.h29
-rw-r--r--mdk-stage1/config-stage1.h105
-rw-r--r--mdk-stage1/dhcp.c676
-rw-r--r--mdk-stage1/dhcp.h37
-rw-r--r--mdk-stage1/directory.c180
-rw-r--r--mdk-stage1/directory.h29
-rw-r--r--mdk-stage1/disk.c163
-rw-r--r--mdk-stage1/disk.h27
-rw-r--r--mdk-stage1/dns.c224
-rw-r--r--mdk-stage1/dns.h30
-rw-r--r--mdk-stage1/doc/HACKING31
-rw-r--r--mdk-stage1/doc/README185
-rw-r--r--mdk-stage1/doc/TECH-INFOS101
-rw-r--r--mdk-stage1/doc/UPDATEMODULES95
-rw-r--r--mdk-stage1/doc/WHY-DIETLIBC50
-rw-r--r--mdk-stage1/doc/documented..frontend.h69
-rw-r--r--mdk-stage1/frontend-common.c45
-rw-r--r--mdk-stage1/frontend.h67
-rw-r--r--mdk-stage1/init-libc-headers.h45
-rw-r--r--mdk-stage1/init.c584
-rw-r--r--mdk-stage1/insmod-busybox/.cvsignore2
-rw-r--r--mdk-stage1/insmod-busybox/Config.h133
-rw-r--r--mdk-stage1/insmod-busybox/Makefile43
-rw-r--r--mdk-stage1/insmod-busybox/README8
-rw-r--r--mdk-stage1/insmod-busybox/busybox.h477
-rw-r--r--mdk-stage1/insmod-busybox/insmod-frontend.c24
-rw-r--r--mdk-stage1/insmod-busybox/insmod.c3758
-rw-r--r--mdk-stage1/insmod-busybox/loop.h5
-rw-r--r--mdk-stage1/insmod-busybox/messages.c90
-rw-r--r--mdk-stage1/insmod-busybox/utility.c1759
-rw-r--r--mdk-stage1/insmod-modutils/Makefile59
-rw-r--r--mdk-stage1/insmod-modutils/include/config.h108
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_alpha.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_arm.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_hppa.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_hppa64.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_i386.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_ia64.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_m68k.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_mips.h23
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_ppc.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_s390.h11
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_sparc.h9
-rw-r--r--mdk-stage1/insmod-modutils/include/elf_sparc64.h26
-rw-r--r--mdk-stage1/insmod-modutils/include/kallsyms.h129
-rw-r--r--mdk-stage1/insmod-modutils/include/kerneld.h44
-rw-r--r--mdk-stage1/insmod-modutils/include/modstat.h55
-rw-r--r--mdk-stage1/insmod-modutils/include/module.h217
-rw-r--r--mdk-stage1/insmod-modutils/include/obj.h298
-rw-r--r--mdk-stage1/insmod-modutils/include/util.h99
-rw-r--r--mdk-stage1/insmod-modutils/include/version.h1
-rw-r--r--mdk-stage1/insmod-modutils/insmod-frontend.c24
-rw-r--r--mdk-stage1/insmod-modutils/insmod.c2141
-rw-r--r--mdk-stage1/insmod-modutils/obj/Makefile38
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_alpha.c328
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_arm.c310
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_common.c416
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_hppa.c638
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_hppa64.c682
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_i386.c237
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_ia64.c1022
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_kallsyms.c290
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_load.c343
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_m68k.c145
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_mips.c254
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_ppc.c266
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_reloc.c413
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_s390.c332
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_sparc.c224
-rw-r--r--mdk-stage1/insmod-modutils/obj/obj_sparc64.c350
-rw-r--r--mdk-stage1/insmod-modutils/util/Makefile42
-rw-r--r--mdk-stage1/insmod-modutils/util/alias.h310
-rw-r--r--mdk-stage1/insmod-modutils/util/arch64.c43
-rw-r--r--mdk-stage1/insmod-modutils/util/config.c1614
-rw-r--r--mdk-stage1/insmod-modutils/util/gzfiles.c74
-rw-r--r--mdk-stage1/insmod-modutils/util/logger.c160
-rw-r--r--mdk-stage1/insmod-modutils/util/meta_expand.c339
-rw-r--r--mdk-stage1/insmod-modutils/util/modstat.c419
-rw-r--r--mdk-stage1/insmod-modutils/util/snap_shot.c154
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_cm.c86
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_dm.c35
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_gks.c35
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_nim.c51
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_oim.c38
-rw-r--r--mdk-stage1/insmod-modutils/util/sys_qm.c54
-rw-r--r--mdk-stage1/insmod-modutils/util/xftw.c422
-rw-r--r--mdk-stage1/insmod-modutils/util/xmalloc.c37
-rw-r--r--mdk-stage1/insmod-modutils/util/xrealloc.c37
-rw-r--r--mdk-stage1/insmod-modutils/util/xstrcat.c38
-rw-r--r--mdk-stage1/insmod-modutils/util/xstrdup.c39
-rw-r--r--mdk-stage1/insmod-modutils/util/xsystem.c49
-rw-r--r--mdk-stage1/insmod.h20
-rw-r--r--mdk-stage1/linux-2.2/nfs.h226
-rw-r--r--mdk-stage1/linux-2.2/nfs_mount.h53
-rw-r--r--mdk-stage1/log.c94
-rw-r--r--mdk-stage1/log.h34
-rw-r--r--mdk-stage1/lomount.c197
-rw-r--r--mdk-stage1/lomount.h21
-rw-r--r--mdk-stage1/mar/.cvsignore1
-rw-r--r--mdk-stage1/mar/Makefile49
-rw-r--r--mdk-stage1/mar/mar-extract-only.c214
-rw-r--r--mdk-stage1/mar/mar-extract-only.h32
-rw-r--r--mdk-stage1/mar/mar-frontend.c199
-rw-r--r--mdk-stage1/mar/mar.h70
-rw-r--r--mdk-stage1/minilibc.c317
-rw-r--r--mdk-stage1/minilibc.h159
-rw-r--r--mdk-stage1/mkinitrd_helper/Makefile46
-rw-r--r--mdk-stage1/mkinitrd_helper/mkinitrd_helper.c308
-rw-r--r--mdk-stage1/modules.c558
-rw-r--r--mdk-stage1/modules.h37
-rw-r--r--mdk-stage1/modules_descr.h66
-rw-r--r--mdk-stage1/mount.c227
-rw-r--r--mdk-stage1/mount.h32
-rw-r--r--mdk-stage1/mount_rpcgen.h208
-rw-r--r--mdk-stage1/network.c1164
-rw-r--r--mdk-stage1/network.h64
-rw-r--r--mdk-stage1/newt-frontend.c400
-rw-r--r--mdk-stage1/newt/Makefile42
-rw-r--r--mdk-stage1/newt/button.c192
-rw-r--r--mdk-stage1/newt/buttonbar.c46
-rw-r--r--mdk-stage1/newt/checkbox.c292
-rw-r--r--mdk-stage1/newt/checkboxtree.c714
-rw-r--r--mdk-stage1/newt/entry.c378
-rw-r--r--mdk-stage1/newt/form.c713
-rw-r--r--mdk-stage1/newt/grid.c389
-rw-r--r--mdk-stage1/newt/label.c81
-rw-r--r--mdk-stage1/newt/listbox.c752
-rw-r--r--mdk-stage1/newt/newt.c672
-rw-r--r--mdk-stage1/newt/newt.h362
-rw-r--r--mdk-stage1/newt/newt_pr.h82
-rw-r--r--mdk-stage1/newt/scale.c72
-rw-r--r--mdk-stage1/newt/scrollbar.c124
-rw-r--r--mdk-stage1/newt/textbox.c409
-rw-r--r--mdk-stage1/newt/windows.c275
-rw-r--r--mdk-stage1/nfs_mount4.h54
-rw-r--r--mdk-stage1/nfsmount.c740
-rw-r--r--mdk-stage1/nfsmount.h331
-rw-r--r--mdk-stage1/partition.c171
-rw-r--r--mdk-stage1/partition.h28
-rw-r--r--mdk-stage1/pci-resource/.cvsignore1
-rw-r--r--mdk-stage1/pci-resource/Makefile25
-rwxr-xr-xmdk-stage1/pci-resource/update-pci-ids.pl72
-rw-r--r--mdk-stage1/pcmcia_/Makefile37
-rw-r--r--mdk-stage1/pcmcia_/bulkmem.h195
-rw-r--r--mdk-stage1/pcmcia_/cardmgr.c1652
-rw-r--r--mdk-stage1/pcmcia_/cardmgr.h112
-rw-r--r--mdk-stage1/pcmcia_/cirrus.h157
-rw-r--r--mdk-stage1/pcmcia_/cistpl.h604
-rw-r--r--mdk-stage1/pcmcia_/cs.h433
-rw-r--r--mdk-stage1/pcmcia_/cs_types.h70
-rw-r--r--mdk-stage1/pcmcia_/driver_ops.h73
-rw-r--r--mdk-stage1/pcmcia_/ds.h148
-rw-r--r--mdk-stage1/pcmcia_/i82365.h135
-rw-r--r--mdk-stage1/pcmcia_/lex_config.c2053
-rwxr-xr-xmdk-stage1/pcmcia_/merge_from_pcitable47
-rw-r--r--mdk-stage1/pcmcia_/pcmcia.h21
-rw-r--r--mdk-stage1/pcmcia_/probe.c524
-rw-r--r--mdk-stage1/pcmcia_/tcic.h266
-rw-r--r--mdk-stage1/pcmcia_/version.h4
-rw-r--r--mdk-stage1/pcmcia_/vg468.h106
-rw-r--r--mdk-stage1/pcmcia_/yacc_config.c1015
-rw-r--r--mdk-stage1/pcmcia_/yacc_config.h37
-rw-r--r--mdk-stage1/ppp/.cvsignore1
-rw-r--r--mdk-stage1/ppp/Changes-2.3441
-rw-r--r--mdk-stage1/ppp/FAQ634
-rw-r--r--mdk-stage1/ppp/PLUGINS131
-rw-r--r--mdk-stage1/ppp/README168
-rw-r--r--mdk-stage1/ppp/README.MSCHAP80284
-rw-r--r--mdk-stage1/ppp/README.cbcp97
-rw-r--r--mdk-stage1/ppp/README.linux297
-rw-r--r--mdk-stage1/ppp/README.sol2220
-rw-r--r--mdk-stage1/ppp/README.sunos462
-rw-r--r--mdk-stage1/ppp/SETUP111
-rw-r--r--mdk-stage1/ppp/chat/Makefile.linux27
-rw-r--r--mdk-stage1/ppp/chat/Makefile.linux.makeopt27
-rw-r--r--mdk-stage1/ppp/chat/Makefile.sol219
-rw-r--r--mdk-stage1/ppp/chat/Makefile.sunos419
-rw-r--r--mdk-stage1/ppp/chat/chat.8515
-rw-r--r--mdk-stage1/ppp/chat/chat.c1756
-rw-r--r--mdk-stage1/ppp/common/zlib.c5376
-rw-r--r--mdk-stage1/ppp/common/zlib.h1010
-rwxr-xr-xmdk-stage1/ppp/configure141
-rw-r--r--mdk-stage1/ppp/contrib/pppgetpass/Makefile.linux16
-rw-r--r--mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.818
-rw-r--r--mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.gtk.c92
-rw-r--r--mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.sh7
-rw-r--r--mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.vt.c218
-rw-r--r--mdk-stage1/ppp/etc.ppp/chap-secrets2
-rw-r--r--mdk-stage1/ppp/etc.ppp/options5
-rw-r--r--mdk-stage1/ppp/etc.ppp/options.options1
-rw-r--r--mdk-stage1/ppp/etc.ppp/pap-secrets2
-rw-r--r--mdk-stage1/ppp/include/linux/if_ppp.h155
-rw-r--r--mdk-stage1/ppp/include/linux/if_pppvar.h138
-rw-r--r--mdk-stage1/ppp/include/linux/ppp-comp.h203
-rw-r--r--mdk-stage1/ppp/include/linux/ppp_defs.h185
-rw-r--r--mdk-stage1/ppp/include/net/if_ppp.h133
-rw-r--r--mdk-stage1/ppp/include/net/ppp-comp.h165
-rw-r--r--mdk-stage1/ppp/include/net/ppp_defs.h184
-rw-r--r--mdk-stage1/ppp/include/net/pppio.h99
-rw-r--r--mdk-stage1/ppp/include/net/slcompress.h148
-rw-r--r--mdk-stage1/ppp/include/net/vjcompress.h144
-rw-r--r--mdk-stage1/ppp/include/pcap-int.h117
-rw-r--r--mdk-stage1/ppp/linux/Makefile.top55
-rw-r--r--mdk-stage1/ppp/modules/bsd-comp.c1116
-rw-r--r--mdk-stage1/ppp/modules/deflate.c760
-rw-r--r--mdk-stage1/ppp/modules/if_ppp.c865
-rw-r--r--mdk-stage1/ppp/modules/ppp.c2486
-rw-r--r--mdk-stage1/ppp/modules/ppp_ahdlc.c878
-rw-r--r--mdk-stage1/ppp/modules/ppp_comp.c1126
-rw-r--r--mdk-stage1/ppp/modules/ppp_mod.h190
-rw-r--r--mdk-stage1/ppp/modules/vjcompress.c587
-rw-r--r--mdk-stage1/ppp/pppd/.cvsignore2
-rw-r--r--mdk-stage1/ppp/pppd/Makefile49
-rw-r--r--mdk-stage1/ppp/pppd/Makefile.linux129
-rw-r--r--mdk-stage1/ppp/pppd/Makefile.linux.make131
-rw-r--r--mdk-stage1/ppp/pppd/Makefile.linux.makeopt129
-rw-r--r--mdk-stage1/ppp/pppd/Makefile.sol248
-rw-r--r--mdk-stage1/ppp/pppd/Makefile.sunos426
-rw-r--r--mdk-stage1/ppp/pppd/auth.c1939
-rw-r--r--mdk-stage1/ppp/pppd/cbcp.c456
-rw-r--r--mdk-stage1/ppp/pppd/cbcp.h26
-rw-r--r--mdk-stage1/ppp/pppd/ccp.c1257
-rw-r--r--mdk-stage1/ppp/pppd/ccp.h48
-rw-r--r--mdk-stage1/ppp/pppd/chap.c860
-rw-r--r--mdk-stage1/ppp/pppd/chap.h124
-rw-r--r--mdk-stage1/ppp/pppd/chap_ms.c338
-rw-r--r--mdk-stage1/ppp/pppd/chap_ms.h33
-rw-r--r--mdk-stage1/ppp/pppd/demand.c351
-rw-r--r--mdk-stage1/ppp/pppd/eui64.c40
-rw-r--r--mdk-stage1/ppp/pppd/eui64.h97
-rw-r--r--mdk-stage1/ppp/pppd/fsm.c762
-rw-r--r--mdk-stage1/ppp/pppd/fsm.h144
-rw-r--r--mdk-stage1/ppp/pppd/ipcp.c2054
-rw-r--r--mdk-stage1/ppp/pppd/ipcp.h73
-rw-r--r--mdk-stage1/ppp/pppd/ipv6cp.c1512
-rw-r--r--mdk-stage1/ppp/pppd/ipv6cp.h126
-rw-r--r--mdk-stage1/ppp/pppd/ipxcp.c1570
-rw-r--r--mdk-stage1/ppp/pppd/ipxcp.h71
-rw-r--r--mdk-stage1/ppp/pppd/lcp.c2224
-rw-r--r--mdk-stage1/ppp/pppd/lcp.h95
-rw-r--r--mdk-stage1/ppp/pppd/magic.c88
-rw-r--r--mdk-stage1/ppp/pppd/magic.h23
-rw-r--r--mdk-stage1/ppp/pppd/main.c1846
-rw-r--r--mdk-stage1/ppp/pppd/md4.c298
-rw-r--r--mdk-stage1/ppp/pppd/md4.h64
-rw-r--r--mdk-stage1/ppp/pppd/md5.c309
-rw-r--r--mdk-stage1/ppp/pppd/md5.h58
-rw-r--r--mdk-stage1/ppp/pppd/multilink.c397
-rw-r--r--mdk-stage1/ppp/pppd/options.c1513
-rw-r--r--mdk-stage1/ppp/pppd/patchlevel.h4
-rw-r--r--mdk-stage1/ppp/pppd/pathnames.h25
-rw-r--r--mdk-stage1/ppp/pppd/plugins/Makefile.linux19
-rw-r--r--mdk-stage1/ppp/pppd/plugins/Makefile.sol227
-rw-r--r--mdk-stage1/ppp/pppd/plugins/minconn.c46
-rw-r--r--mdk-stage1/ppp/pppd/plugins/passprompt.c108
-rw-r--r--mdk-stage1/ppp/pppd/ppp.pam6
-rw-r--r--mdk-stage1/ppp/pppd/pppd.81591
-rw-r--r--mdk-stage1/ppp/pppd/pppd.h787
-rw-r--r--mdk-stage1/ppp/pppd/pppd.h.wtmp789
-rw-r--r--mdk-stage1/ppp/pppd/sys-linux.c2672
-rw-r--r--mdk-stage1/ppp/pppd/sys-linux.c.wtmp2750
-rw-r--r--mdk-stage1/ppp/pppd/sys-solaris.c2737
-rw-r--r--mdk-stage1/ppp/pppd/sys-sunos4.c1559
-rw-r--r--mdk-stage1/ppp/pppd/tdb.c1282
-rw-r--r--mdk-stage1/ppp/pppd/tdb.h77
-rw-r--r--mdk-stage1/ppp/pppd/tty.c1164
-rw-r--r--mdk-stage1/ppp/pppd/upap.c640
-rw-r--r--mdk-stage1/ppp/pppd/upap.h87
-rw-r--r--mdk-stage1/ppp/pppd/utils.c949
-rw-r--r--mdk-stage1/ppp/pppdump/Makefile.linux17
-rw-r--r--mdk-stage1/ppp/pppdump/Makefile.linux.makeopt17
-rw-r--r--mdk-stage1/ppp/pppdump/Makefile.linux.pppdump-Makefile17
-rw-r--r--mdk-stage1/ppp/pppdump/Makefile.sol221
-rw-r--r--mdk-stage1/ppp/pppdump/Makefile.sunos421
-rw-r--r--mdk-stage1/ppp/pppdump/bsd-comp.c750
-rw-r--r--mdk-stage1/ppp/pppdump/deflate.c344
-rw-r--r--mdk-stage1/ppp/pppdump/ppp-comp.h150
-rw-r--r--mdk-stage1/ppp/pppdump/pppdump.862
-rw-r--r--mdk-stage1/ppp/pppdump/pppdump.c502
-rw-r--r--mdk-stage1/ppp/pppdump/zlib.c4614
-rw-r--r--mdk-stage1/ppp/pppdump/zlib.h631
-rw-r--r--mdk-stage1/ppp/pppstats/Makefile.linux32
-rw-r--r--mdk-stage1/ppp/pppstats/Makefile.sol220
-rw-r--r--mdk-stage1/ppp/pppstats/Makefile.sunos430
-rw-r--r--mdk-stage1/ppp/pppstats/pppstats.8217
-rw-r--r--mdk-stage1/ppp/pppstats/pppstats.c557
-rw-r--r--mdk-stage1/ppp/sample/auth-down17
-rw-r--r--mdk-stage1/ppp/sample/auth-up17
-rw-r--r--mdk-stage1/ppp/sample/ip-down22
-rw-r--r--mdk-stage1/ppp/sample/ip-up23
-rw-r--r--mdk-stage1/ppp/sample/options153
-rw-r--r--mdk-stage1/ppp/sample/options.ttyXX14
-rw-r--r--mdk-stage1/ppp/sample/pap-secrets28
-rw-r--r--mdk-stage1/ppp/scripts/README143
-rwxr-xr-xmdk-stage1/ppp/scripts/callback77
-rw-r--r--mdk-stage1/ppp/scripts/chat-callback98
-rw-r--r--mdk-stage1/ppp/scripts/chatchat/README134
-rw-r--r--mdk-stage1/ppp/scripts/chatchat/chatchat.c409
-rw-r--r--mdk-stage1/ppp/scripts/ip-down.local.add20
-rw-r--r--mdk-stage1/ppp/scripts/ip-up.local.add24
-rw-r--r--mdk-stage1/ppp/scripts/options-rsh-loc1
-rw-r--r--mdk-stage1/ppp/scripts/options-rsh-rem1
-rw-r--r--mdk-stage1/ppp/scripts/options-ssh-loc1
-rw-r--r--mdk-stage1/ppp/scripts/options-ssh-rem1
-rwxr-xr-xmdk-stage1/ppp/scripts/ppp-off34
-rwxr-xr-xmdk-stage1/ppp/scripts/ppp-on36
-rwxr-xr-xmdk-stage1/ppp/scripts/ppp-on-dialer17
-rwxr-xr-xmdk-stage1/ppp/scripts/ppp-on-rsh72
-rwxr-xr-xmdk-stage1/ppp/scripts/ppp-on-ssh76
-rwxr-xr-xmdk-stage1/ppp/scripts/redialer96
-rw-r--r--mdk-stage1/ppp/scripts/secure-card111
-rw-r--r--mdk-stage1/ppp/solaris/Makedefs16
-rw-r--r--mdk-stage1/ppp/solaris/Makedefs.sol259
-rw-r--r--mdk-stage1/ppp/solaris/Makefile.sol266
-rw-r--r--mdk-stage1/ppp/solaris/Makefile.sol2-6485
-rw-r--r--mdk-stage1/ppp/solaris/Makefile.top50
-rw-r--r--mdk-stage1/ppp/solaris/ppp.c2486
-rw-r--r--mdk-stage1/ppp/solaris/ppp.conf1
-rw-r--r--mdk-stage1/ppp/solaris/ppp_ahdlc.c878
-rw-r--r--mdk-stage1/ppp/solaris/ppp_ahdlc_mod.c49
-rw-r--r--mdk-stage1/ppp/solaris/ppp_comp.c1126
-rw-r--r--mdk-stage1/ppp/solaris/ppp_comp_mod.c81
-rw-r--r--mdk-stage1/ppp/solaris/ppp_mod.c174
-rw-r--r--mdk-stage1/ppp/solaris/ppp_mod.h190
-rw-r--r--mdk-stage1/ppp/sunos4/Makedefs13
-rw-r--r--mdk-stage1/ppp/sunos4/Makefile57
-rw-r--r--mdk-stage1/ppp/sunos4/Makefile.top46
-rw-r--r--mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c57
-rwxr-xr-xmdk-stage1/ppp/sunos4/ppp.INSTALL104
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c57
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c57
-rw-r--r--mdk-stage1/ppp/sunos4/ppp_vdcmd.c81
-rw-r--r--mdk-stage1/ppp/svr4/Makedefs16
-rw-r--r--mdk-stage1/ppp/svr4/Makedefs.sol259
-rw-r--r--mdk-stage1/ppp/svr4/Makefile.sol266
-rw-r--r--mdk-stage1/ppp/svr4/Makefile.sol2-6485
-rw-r--r--mdk-stage1/ppp/svr4/Makefile.svr460
-rw-r--r--mdk-stage1/ppp/svr4/Makefile.top50
-rw-r--r--mdk-stage1/ppp/svr4/ppp.Master1
-rw-r--r--mdk-stage1/ppp/svr4/ppp.Node1
-rw-r--r--mdk-stage1/ppp/svr4/ppp.System1
-rw-r--r--mdk-stage1/ppp/svr4/ppp.conf1
-rw-r--r--mdk-stage1/ppp/svr4/ppp_ahdl.Master1
-rw-r--r--mdk-stage1/ppp/svr4/ppp_ahdl.System1
-rw-r--r--mdk-stage1/ppp/svr4/ppp_ahdlc_mod.c49
-rw-r--r--mdk-stage1/ppp/svr4/ppp_comp.Master1
-rw-r--r--mdk-stage1/ppp/svr4/ppp_comp.System1
-rw-r--r--mdk-stage1/ppp/svr4/ppp_comp_mod.c81
-rw-r--r--mdk-stage1/ppp/svr4/ppp_mod.c174
-rw-r--r--mdk-stage1/probing.c899
-rw-r--r--mdk-stage1/probing.h51
-rw-r--r--mdk-stage1/rescue-gui.c243
-rw-r--r--mdk-stage1/rp-pppoe/.cvsignore1
-rw-r--r--mdk-stage1/rp-pppoe/README87
-rw-r--r--mdk-stage1/rp-pppoe/configs/firewall-masq35
-rw-r--r--mdk-stage1/rp-pppoe/configs/firewall-standalone32
-rw-r--r--mdk-stage1/rp-pppoe/configs/pap-secrets9
-rw-r--r--mdk-stage1/rp-pppoe/configs/pppoe-server-options5
-rw-r--r--mdk-stage1/rp-pppoe/configs/pppoe.conf126
-rw-r--r--mdk-stage1/rp-pppoe/doc/CHANGES177
-rw-r--r--mdk-stage1/rp-pppoe/doc/HOW-TO-CONNECT295
-rw-r--r--mdk-stage1/rp-pppoe/doc/KERNEL-MODE-PPPOE39
-rw-r--r--mdk-stage1/rp-pppoe/doc/LICENSE339
-rw-r--r--mdk-stage1/rp-pppoe/doc/PROBLEMS3
-rwxr-xr-xmdk-stage1/rp-pppoe/go43
-rwxr-xr-xmdk-stage1/rp-pppoe/go-gui92
-rw-r--r--mdk-stage1/rp-pppoe/gui/Makefile.in64
-rw-r--r--mdk-stage1/rp-pppoe/gui/html/tkpppoe.html181
-rw-r--r--mdk-stage1/rp-pppoe/gui/pppoe-wrapper.145
-rw-r--r--mdk-stage1/rp-pppoe/gui/tkpppoe.136
-rwxr-xr-xmdk-stage1/rp-pppoe/gui/tkpppoe.in2891
-rw-r--r--mdk-stage1/rp-pppoe/gui/wrapper.c234
-rw-r--r--mdk-stage1/rp-pppoe/man/adsl-connect.866
-rw-r--r--mdk-stage1/rp-pppoe/man/adsl-setup.823
-rw-r--r--mdk-stage1/rp-pppoe/man/adsl-start.827
-rw-r--r--mdk-stage1/rp-pppoe/man/adsl-status.825
-rw-r--r--mdk-stage1/rp-pppoe/man/adsl-stop.821
-rw-r--r--mdk-stage1/rp-pppoe/man/pppoe-relay.8124
-rw-r--r--mdk-stage1/rp-pppoe/man/pppoe-server.8123
-rw-r--r--mdk-stage1/rp-pppoe/man/pppoe-sniff.877
-rw-r--r--mdk-stage1/rp-pppoe/man/pppoe.8236
-rw-r--r--mdk-stage1/rp-pppoe/man/pppoe.conf.5168
-rw-r--r--mdk-stage1/rp-pppoe/rp-pppoe-gui.spec98
-rw-r--r--mdk-stage1/rp-pppoe/rp-pppoe.spec71
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-connect.in278
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-init-suse.in62
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-init-turbolinux.in62
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-init.in64
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-setup.in346
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-start.in186
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-status82
-rwxr-xr-xmdk-stage1/rp-pppoe/scripts/adsl-stop.in84
-rw-r--r--mdk-stage1/rp-pppoe/src/.cvsignore2
-rw-r--r--mdk-stage1/rp-pppoe/src/Makefile45
-rw-r--r--mdk-stage1/rp-pppoe/src/Makefile.in257
-rw-r--r--mdk-stage1/rp-pppoe/src/common.c485
-rw-r--r--mdk-stage1/rp-pppoe/src/config.h135
-rw-r--r--mdk-stage1/rp-pppoe/src/config.h.in134
-rwxr-xr-xmdk-stage1/rp-pppoe/src/configure2356
-rw-r--r--mdk-stage1/rp-pppoe/src/configure.in231
-rw-r--r--mdk-stage1/rp-pppoe/src/debug.c143
-rw-r--r--mdk-stage1/rp-pppoe/src/discovery.c629
-rw-r--r--mdk-stage1/rp-pppoe/src/if.c1092
-rwxr-xr-xmdk-stage1/rp-pppoe/src/install-sh238
-rw-r--r--mdk-stage1/rp-pppoe/src/md5.c246
-rw-r--r--mdk-stage1/rp-pppoe/src/md5.h27
-rw-r--r--mdk-stage1/rp-pppoe/src/plugin.c397
-rw-r--r--mdk-stage1/rp-pppoe/src/ppp.c258
-rw-r--r--mdk-stage1/rp-pppoe/src/pppoe-server.c1247
-rw-r--r--mdk-stage1/rp-pppoe/src/pppoe-sniff.c258
-rw-r--r--mdk-stage1/rp-pppoe/src/pppoe.c834
-rw-r--r--mdk-stage1/rp-pppoe/src/pppoe.h331
-rw-r--r--mdk-stage1/rp-pppoe/src/relay.c1541
-rw-r--r--mdk-stage1/rp-pppoe/src/relay.h97
-rw-r--r--mdk-stage1/slang/Makefile42
-rw-r--r--mdk-stage1/slang/_slang.h743
-rw-r--r--mdk-stage1/slang/config.h163
-rw-r--r--mdk-stage1/slang/jdmacros.h53
-rw-r--r--mdk-stage1/slang/keywhash.c190
-rw-r--r--mdk-stage1/slang/sl-feat.h60
-rw-r--r--mdk-stage1/slang/slang.c5547
-rw-r--r--mdk-stage1/slang/slang.h1930
-rw-r--r--mdk-stage1/slang/slarith.c1656
-rw-r--r--mdk-stage1/slang/slarith.inc783
-rw-r--r--mdk-stage1/slang/slarray.c3139
-rw-r--r--mdk-stage1/slang/slarrfun.c464
-rw-r--r--mdk-stage1/slang/slarrfun.inc257
-rw-r--r--mdk-stage1/slang/slarrmis.c38
-rw-r--r--mdk-stage1/slang/slassoc.c713
-rw-r--r--mdk-stage1/slang/slbstr.c615
-rw-r--r--mdk-stage1/slang/slclass.c1391
-rw-r--r--mdk-stage1/slang/slcmd.c351
-rw-r--r--mdk-stage1/slang/slcmplex.c1142
-rw-r--r--mdk-stage1/slang/slcompat.c34
-rw-r--r--mdk-stage1/slang/slcurses.c972
-rw-r--r--mdk-stage1/slang/slcurses.h353
-rw-r--r--mdk-stage1/slang/sldisply.c2596
-rw-r--r--mdk-stage1/slang/slerr.c181
-rw-r--r--mdk-stage1/slang/slerrno.c219
-rw-r--r--mdk-stage1/slang/slgetkey.c306
-rw-r--r--mdk-stage1/slang/slimport.c281
-rw-r--r--mdk-stage1/slang/slinclud.h26
-rw-r--r--mdk-stage1/slang/slintall.c27
-rw-r--r--mdk-stage1/slang/slistruc.c218
-rw-r--r--mdk-stage1/slang/slkeymap.c596
-rw-r--r--mdk-stage1/slang/slkeypad.c163
-rw-r--r--mdk-stage1/slang/sllimits.h64
-rw-r--r--mdk-stage1/slang/slmalloc.c165
-rw-r--r--mdk-stage1/slang/slmath.c565
-rw-r--r--mdk-stage1/slang/slmemchr.c47
-rw-r--r--mdk-stage1/slang/slmemcmp.c76
-rw-r--r--mdk-stage1/slang/slmemcpy.c49
-rw-r--r--mdk-stage1/slang/slmemset.c39
-rw-r--r--mdk-stage1/slang/slmisc.c330
-rw-r--r--mdk-stage1/slang/slnspace.c242
-rw-r--r--mdk-stage1/slang/slospath.c73
-rw-r--r--mdk-stage1/slang/slpack.c785
-rw-r--r--mdk-stage1/slang/slparse.c1970
-rw-r--r--mdk-stage1/slang/slpath.c344
-rw-r--r--mdk-stage1/slang/slposdir.c1057
-rw-r--r--mdk-stage1/slang/slposio.c568
-rw-r--r--mdk-stage1/slang/slprepr.c427
-rw-r--r--mdk-stage1/slang/slproc.c155
-rw-r--r--mdk-stage1/slang/slregexp.c935
-rw-r--r--mdk-stage1/slang/slrline.c836
-rw-r--r--mdk-stage1/slang/slscanf.c718
-rw-r--r--mdk-stage1/slang/slscroll.c450
-rw-r--r--mdk-stage1/slang/slsearch.c239
-rw-r--r--mdk-stage1/slang/slsignal.c336
-rw-r--r--mdk-stage1/slang/slsmg.c1584
-rw-r--r--mdk-stage1/slang/slstd.c724
-rw-r--r--mdk-stage1/slang/slstdio.c1050
-rw-r--r--mdk-stage1/slang/slstring.c546
-rw-r--r--mdk-stage1/slang/slstrops.c1686
-rw-r--r--mdk-stage1/slang/slstruct.c932
-rw-r--r--mdk-stage1/slang/sltermin.c1155
-rw-r--r--mdk-stage1/slang/sltime.c310
-rw-r--r--mdk-stage1/slang/sltoken.c1702
-rw-r--r--mdk-stage1/slang/sltypes.c966
-rw-r--r--mdk-stage1/slang/slutty.c596
-rw-r--r--mdk-stage1/slang/slxstrng.c43
-rw-r--r--mdk-stage1/stage1-data/stage1-with-busybox.tar.bz2bin92142 -> 0 bytes
-rw-r--r--mdk-stage1/stage1-data/stage1-with-sash.tar.bz2bin345030 -> 0 bytes
-rw-r--r--mdk-stage1/stage1-data/stage1.tar.bz2bin1957 -> 0 bytes
-rw-r--r--mdk-stage1/stage1.c638
-rw-r--r--mdk-stage1/stage1.h61
-rw-r--r--mdk-stage1/stdio-frontend.c369
-rw-r--r--mdk-stage1/thirdparty.c407
-rw-r--r--mdk-stage1/thirdparty.h32
-rw-r--r--mdk-stage1/tools.c561
-rw-r--r--mdk-stage1/tools.h72
-rw-r--r--mdk-stage1/url.c524
-rw-r--r--mdk-stage1/url.h46
-rw-r--r--mdk-stage1/usb-resource/.cvsignore1
-rw-r--r--mdk-stage1/usb-resource/Makefile25
-rwxr-xr-xmdk-stage1/usb-resource/update-usb-ids.pl53
-rw-r--r--mdk-stage1/wireless.c160
-rw-r--r--mdk-stage1/wireless.h22
-rw-r--r--move/.cvsignore4
-rw-r--r--move/Makefile159
-rwxr-xr-xmove/collect-directories-to-create.pl15
-rw-r--r--move/data/.cvsignore4
-rw-r--r--move/data/BOOT-1024-MOVE.jpgbin165129 -> 0 bytes
-rw-r--r--move/data/BOOT-1280-MOVE.jpgbin248565 -> 0 bytes
-rw-r--r--move/data/BOOT-1600-MOVE.jpgbin346222 -> 0 bytes
-rw-r--r--move/data/BOOT-800-MOVE.jpgbin88325 -> 0 bytes
-rw-r--r--move/data/always.dirs0
-rw-r--r--move/data/always.list143
-rw-r--r--move/data/always_i18n.list33
-rw-r--r--move/data/boot.dirs39
-rw-r--r--move/data/boot.list879
-rw-r--r--move/data/devices4
-rw-r--r--move/data/etcfiles36
-rw-r--r--move/data/etcfiles-report151
-rw-r--r--move/data/isolinux-graphic.bmpbin481078 -> 0 bytes
-rwxr-xr-xmove/data/isolinux-graphic.bmp.parameters10
-rw-r--r--move/data/keyfiles24
-rwxr-xr-xmove/data/make_i18n_list47
-rw-r--r--move/data/nvidia.list5
-rw-r--r--move/data/symlinks4
-rw-r--r--move/data/totem.dirs2
-rw-r--r--move/data/totem.list68
-rw-r--r--move/doc/README95
-rw-r--r--move/doc/errata.144
-rwxr-xr-xmove/etc-monitorer.pl32
-rw-r--r--move/img/FE92-1024-MOVE1.jpgbin134082 -> 0 bytes
-rw-r--r--move/img/FE92-1024-MOVE2.jpgbin110160 -> 0 bytes
-rw-r--r--move/img/FE92-1024-MOVE3.jpgbin114463 -> 0 bytes
-rw-r--r--move/img/FE92-1024-MOVE4.jpgbin42557 -> 0 bytes
-rw-r--r--move/img/FE92-1024-MOVE5.jpgbin38483 -> 0 bytes
-rw-r--r--move/img/FE92-1280-MOVE1.jpgbin195812 -> 0 bytes
-rw-r--r--move/img/FE92-1280-MOVE2.jpgbin167724 -> 0 bytes
-rw-r--r--move/img/FE92-1280-MOVE3.jpgbin165527 -> 0 bytes
-rw-r--r--move/img/FE92-1280-MOVE4.jpgbin64707 -> 0 bytes
-rw-r--r--move/img/FE92-1280-MOVE5.jpgbin58419 -> 0 bytes
-rw-r--r--move/img/Mandrake.pngbin164099 -> 0 bytes
-rw-r--r--move/isolinux/.cvsignore4
-rw-r--r--move/isolinux/help.msgbin1361 -> 0 bytes
-rw-r--r--move/isolinux/isolinux.cfg14
-rw-r--r--move/isolinux/make.pl29
-rwxr-xr-xmove/make_live268
-rwxr-xr-xmove/make_live_tree_boot177
-rw-r--r--move/move.pm809
-rw-r--r--move/pkgs.pm32
-rw-r--r--move/runlevel_set.c25
-rwxr-xr-xmove/runstage225
-rw-r--r--move/todo39
-rwxr-xr-xmove/tools/busy-files25
-rw-r--r--move/tools/busy-files-accesses34
-rw-r--r--move/tools/check-fc-cache.pl27
-rwxr-xr-xmove/tools/fix-fc-cache.pl21
-rw-r--r--move/tools/kernel-nfsd.patch61
-rwxr-xr-xmove/tools/nfs-accesses67
-rwxr-xr-xmove/tools/scan-etc.pl41
-rwxr-xr-xmove/tree/X_move16
-rwxr-xr-xmove/tree/alsa_default.pl19
-rwxr-xr-xmove/tree/halt5
-rw-r--r--move/tree/kdedrc7
-rw-r--r--move/tree/konsolerc19
-rwxr-xr-xmove/tree/mdk_behind_totem106
-rw-r--r--move/tree/mdk_move_boot_loop.desktop8
-rwxr-xr-xmove/tree/mdk_move_loop56
-rwxr-xr-xmove/tree/mdk_totem125
-rw-r--r--move/tree/mdk_totem.desktop12
-rwxr-xr-xmove/tree/netscape3
-rwxr-xr-xmove/tree/reboot5
-rwxr-xr-xmove/tree/sound.initscript116
-rwxr-xr-xmove/tree/startkde_move17
-rw-r--r--move/tree/sudoers1
-rwxr-xr-xmove/tree/wait4x21
-rw-r--r--move/xwait.c19
-rw-r--r--perl-install/.cvsignore6
-rw-r--r--perl-install/.perl_checker18
-rw-r--r--perl-install/ChangeLog78833
-rw-r--r--perl-install/Makefile218
-rw-r--r--perl-install/Makefile.config21
-rw-r--r--perl-install/Makefile.drakxtools85
-rw-r--r--perl-install/Newt/.cvsignore5
-rw-r--r--perl-install/Newt/Av_CharPtrPtr.c99
-rw-r--r--perl-install/Newt/Av_CharPtrPtr.h4
-rw-r--r--perl-install/Newt/Makefile10
-rw-r--r--perl-install/Newt/Makefile.PL13
-rw-r--r--perl-install/Newt/Newt.pm20
-rw-r--r--perl-install/Newt/Newt.xs498
-rw-r--r--perl-install/Newt/typemap25
-rw-r--r--perl-install/Xconfig/FILES6
-rw-r--r--perl-install/Xconfig/card.pm607
-rw-r--r--perl-install/Xconfig/default.pm44
-rw-r--r--perl-install/Xconfig/main.pm252
-rw-r--r--perl-install/Xconfig/monitor.pm277
-rw-r--r--perl-install/Xconfig/parse.pm205
-rw-r--r--perl-install/Xconfig/proprietary.pm35
-rw-r--r--perl-install/Xconfig/resolution_and_depth.pm385
-rw-r--r--perl-install/Xconfig/screen.pm29
-rw-r--r--perl-install/Xconfig/test.pm140
-rw-r--r--perl-install/Xconfig/various.pm175
-rw-r--r--perl-install/Xconfig/xfree.pm720
-rw-r--r--perl-install/any.pm1104
-rw-r--r--perl-install/authentication.pm680
-rw-r--r--perl-install/bootloader.pm1442
-rw-r--r--perl-install/bootsplash.pm207
-rw-r--r--perl-install/c.pm19
-rw-r--r--perl-install/c/.cvsignore9
-rw-r--r--perl-install/c/Makefile17
-rw-r--r--perl-install/c/Makefile.PL25
-rw-r--r--perl-install/c/README3
-rw-r--r--perl-install/c/sbus.c156
-rw-r--r--perl-install/c/silo.c817
-rw-r--r--perl-install/c/smp-dmi.c302
-rw-r--r--perl-install/c/smp-test.c6
-rw-r--r--perl-install/c/smp.c516
-rw-r--r--perl-install/c/smp.h6
-rw-r--r--perl-install/c/stuff.pm17
-rw-r--r--perl-install/c/stuff.xs.pl817
-rw-r--r--perl-install/class_discard.pm11
-rwxr-xr-xperl-install/commands20
-rw-r--r--perl-install/commands.pm500
-rw-r--r--perl-install/common.pm308
-rw-r--r--perl-install/crypto.pm802
-rw-r--r--perl-install/detect_devices.pm1005
-rw-r--r--perl-install/devices.pm277
-rw-r--r--perl-install/diskdrake/dav.pm115
-rw-r--r--perl-install/diskdrake/diskdrake.html139
-rw-r--r--perl-install/diskdrake/hd_gtk.pm394
-rw-r--r--perl-install/diskdrake/interactive.pm1318
-rw-r--r--perl-install/diskdrake/removable.pm52
-rw-r--r--perl-install/diskdrake/resize_ntfs.pm35
-rw-r--r--perl-install/diskdrake/smbnfs_gtk.pm270
-rw-r--r--perl-install/do_pkgs.pm238
-rw-r--r--perl-install/drakxtools.spec5784
-rw-r--r--perl-install/fs.pm676
-rw-r--r--perl-install/fs/format.pm151
-rw-r--r--perl-install/fs/get.pm128
-rw-r--r--perl-install/fs/mount_options.pm263
-rw-r--r--perl-install/fs/type.pm378
-rw-r--r--perl-install/fsedit.pm638
-rw-r--r--perl-install/ftp.pm86
-rw-r--r--perl-install/handle_configs.pm160
-rw-r--r--perl-install/harddrake/TODO169
-rw-r--r--perl-install/harddrake/autoconf.pm46
-rwxr-xr-xperl-install/harddrake/check_snd.pl20
-rw-r--r--perl-install/harddrake/data.pm538
-rw-r--r--perl-install/harddrake/sound.pm368
-rw-r--r--perl-install/harddrake/v4l.pm338
-rw-r--r--perl-install/help.pm870
-rw-r--r--perl-install/http.pm50
-rwxr-xr-xperl-install/install238
-rw-r--r--perl-install/install2.pm679
-rw-r--r--perl-install/install_any.pm1869
-rw-r--r--perl-install/install_gtk.pm312
-rw-r--r--perl-install/install_interactive.pm299
-rw-r--r--perl-install/install_messages.pm147
-rw-r--r--perl-install/install_steps.pm1054
-rw-r--r--perl-install/install_steps_auto_install.pm122
-rw-r--r--perl-install/install_steps_gtk.pm711
-rw-r--r--perl-install/install_steps_interactive.pm1344
-rw-r--r--perl-install/install_steps_newt.pm56
-rw-r--r--perl-install/install_steps_stdio.pm36
-rw-r--r--perl-install/interactive.pm531
-rw-r--r--perl-install/interactive/gtk.pm774
-rw-r--r--perl-install/interactive/http.pm164
-rw-r--r--perl-install/interactive/newt.pm431
-rw-r--r--perl-install/interactive/stdio.pm180
-rw-r--r--perl-install/keyboard.pm674
-rw-r--r--perl-install/lang.pm1363
-rw-r--r--perl-install/log.pm63
-rw-r--r--perl-install/loopback.pm126
-rw-r--r--perl-install/lvm.pm155
-rw-r--r--perl-install/modules.pm329
-rw-r--r--perl-install/modules/any_conf.pm213
-rw-r--r--perl-install/modules/interactive.pm162
-rw-r--r--perl-install/modules/modprobe_conf.pm163
-rw-r--r--perl-install/modules/modules_conf.pm70
-rw-r--r--perl-install/modules/parameters.pm60
-rw-r--r--perl-install/mouse.pm641
-rw-r--r--perl-install/mygtk2.pm910
-rw-r--r--perl-install/network/activefw.pm151
-rw-r--r--perl-install/network/adsl.pm388
-rw-r--r--perl-install/network/adsl_consts.pm969
-rw-r--r--perl-install/network/dhcpd.pm51
-rw-r--r--perl-install/network/drakfirewall.pm216
-rw-r--r--perl-install/network/ethernet.pm161
-rw-r--r--perl-install/network/ipsec.pm801
-rw-r--r--perl-install/network/isdn.pm200
-rw-r--r--perl-install/network/isdn_consts.pm452
-rw-r--r--perl-install/network/modem.pm243
-rw-r--r--perl-install/network/ndiswrapper.pm108
-rw-r--r--perl-install/network/netconnect.pm1700
-rw-r--r--perl-install/network/network.pm529
-rw-r--r--perl-install/network/nfs.pm69
-rw-r--r--perl-install/network/shorewall.pm146
-rw-r--r--perl-install/network/smb.pm217
-rw-r--r--perl-install/network/smbnfs.pm45
-rw-r--r--perl-install/network/squid.pm73
-rw-r--r--perl-install/network/test.pm158
-rw-r--r--perl-install/network/tools.pm273
-rw-r--r--perl-install/network/wireless.pm174
-rw-r--r--perl-install/partition_table.pm636
-rw-r--r--perl-install/partition_table/bsd.pm147
-rw-r--r--perl-install/partition_table/dos.pm250
-rw-r--r--perl-install/partition_table/empty.pm36
-rw-r--r--perl-install/partition_table/gpt.pm263
-rw-r--r--perl-install/partition_table/mac.pm393
-rw-r--r--perl-install/partition_table/raw.pm254
-rw-r--r--perl-install/partition_table/sun.pm202
-rw-r--r--perl-install/patch/9.1/hp.diff137
-rw-r--r--perl-install/patch/9.1/patch-detectSMP-K6.pl5
-rw-r--r--perl-install/patch/9.1/patch-loopback.pl18
-rw-r--r--perl-install/patch/patch-9.0-auto-inst-network-config.pl8
-rw-r--r--perl-install/patch/patch-IMPS2.pl9
-rw-r--r--perl-install/patch/patch-da.pl6
-rw-r--r--perl-install/patch/patch-nforce.pl35
-rw-r--r--perl-install/patch/patch-oem-9.0.pl52
-rw-r--r--perl-install/patch/patch-oem-hp.pl323
-rw-r--r--perl-install/patch/patch-raidtab.pl37
-rw-r--r--perl-install/patch/patch-rh9-mdk10.pl116
-rw-r--r--perl-install/patch/patch-stage2-updatemodules.pl12
-rw-r--r--perl-install/patch/rpmsrate.oem-9.0-openoffice551
-rw-r--r--perl-install/patch/rpmsrate.oem-9.0-staroffice552
-rwxr-xr-xperl-install/perl2etags8
-rw-r--r--perl-install/pixmaps/X.pngbin2517 -> 0 bytes
-rw-r--r--perl-install/pixmaps/about-printerdrake.pngbin5433 -> 0 bytes
-rw-r--r--perl-install/pixmaps/arrow_down.pngbin155 -> 0 bytes
-rw-r--r--perl-install/pixmaps/arrow_up.pngbin156 -> 0 bytes
-rw-r--r--perl-install/pixmaps/colors.pngbin275 -> 0 bytes
-rw-r--r--perl-install/pixmaps/colors16.pngbin1136 -> 0 bytes
-rw-r--r--perl-install/pixmaps/colors8.pngbin798 -> 0 bytes
-rwxr-xr-xperl-install/pixmaps/connected.pngbin785 -> 0 bytes
-rw-r--r--perl-install/pixmaps/cups_config.pngbin2290 -> 0 bytes
-rw-r--r--perl-install/pixmaps/default.pngbin1701 -> 0 bytes
-rw-r--r--perl-install/pixmaps/disconnected.pngbin977 -> 0 bytes
-rw-r--r--perl-install/pixmaps/eth_card_mini.pngbin2712 -> 0 bytes
-rw-r--r--perl-install/pixmaps/help.pngbin1699 -> 0 bytes
-rw-r--r--perl-install/pixmaps/ic82-systemeplus-40.pngbin2370 -> 0 bytes
-rw-r--r--perl-install/pixmaps/ic82-tape-40.pngbin1673 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-af.pngbin691 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-am.pngbin658 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ar.pngbin576 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-as.pngbin681 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-az.pngbin928 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-be.pngbin935 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ber.pngbin566 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-bg.pngbin778 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-bn.pngbin439 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-br.pngbin781 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-bs.pngbin740 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ca.pngbin513 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-chr.pngbin626 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-cs.pngbin752 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-csb.pngbin1052 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-cy.pngbin809 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-da.pngbin608 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-de.pngbin730 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-el.pngbin683 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-en_GB.pngbin996 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-en_IE.pngbin1128 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-en_US.pngbin1330 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-eo.pngbin845 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-es.pngbin715 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-et.pngbin482 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-eu.pngbin602 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fa.pngbin530 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fi.pngbin554 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fo.pngbin799 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fr.pngbin644 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fur.pngbin551 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-fy.pngbin604 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ga.pngbin666 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-gd.pngbin742 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-gl.pngbin723 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-gn.pngbin770 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-gu.pngbin778 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-gv.pngbin628 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ha.pngbin468 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-he.pngbin536 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-hi.pngbin491 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-hr.pngbin658 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-hu.pngbin681 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-hy.pngbin536 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ia.pngbin755 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-id.pngbin974 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ik.pngbin670 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-is.pngbin665 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-it.pngbin551 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-iu.pngbin652 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ja.pngbin561 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ka.pngbin1012 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-kk.pngbin667 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-kl.pngbin747 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-km.pngbin671 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-kn.pngbin543 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ko.pngbin507 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ks.pngbin648 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ks@Arab.pngbin599 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ku.pngbin496 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-kw.pngbin664 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ky.pngbin719 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-lb.pngbin1161 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-lg.pngbin681 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-li.pngbin659 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-lo.pngbin230 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-lt.pngbin824 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ltg.pngbin695 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-lv.pngbin749 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-mi.pngbin558 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-mk.pngbin904 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ml.pngbin1006 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-mn.pngbin491 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-mr.pngbin452 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ms.pngbin1013 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-mt.pngbin547 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-nb.pngbin970 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-nds.pngbin877 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ne.pngbin518 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-nl.pngbin788 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-nn.pngbin811 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-no.pngbin970 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-oc.pngbin631 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-pa.pngbin470 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-pa_IN.pngbin470 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ph.pngbin490 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-pl.pngbin551 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ps.pngbin436 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-pt.pngbin814 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-pt_BR.pngbin1178 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-qu.pngbin851 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ro.pngbin671 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ru.pngbin622 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sc.pngbin634 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-se.pngbin810 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sh.pngbin724 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sk.pngbin878 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sl.pngbin995 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-so.pngbin873 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sq.pngbin557 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sr.pngbin639 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sr@Latn.pngbin724 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ss.pngbin619 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-st.pngbin684 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sv.pngbin810 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-sw.pngbin814 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ta.pngbin612 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-te.pngbin649 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-tg.pngbin524 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-th.pngbin396 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-tk.pngbin737 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-tr.pngbin573 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-tt.pngbin515 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-tt@Cyrl.pngbin567 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ug.pngbin635 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-uk.pngbin766 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ur.pngbin423 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-uz.pngbin1203 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-uz@Cyrl.pngbin1203 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-uz@Latn.pngbin1217 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-ve.pngbin608 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-vi.pngbin765 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-wa.pngbin633 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-xh.pngbin618 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-yi.pngbin369 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-zh_CN.pngbin783 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-zh_TW.pngbin890 -> 0 bytes
-rw-r--r--perl-install/pixmaps/langs/lang-zu.pngbin466 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1024.pngbin9140 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1152.pngbin8548 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1280.pngbin8066 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1400.pngbin7587 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1600.pngbin7129 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-1920.pngbin6952 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-2048.pngbin6704 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-640.pngbin14132 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor-800.pngbin12910 -> 0 bytes
-rw-r--r--perl-install/pixmaps/monitor.pngbin2377 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_2b.pngbin13589 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_2b_left.pngbin3734 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_2b_right.pngbin4169 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b+.pngbin15803 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b+_middle.pngbin1042 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b.pngbin13345 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b_left.pngbin2555 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b_middle.pngbin2429 -> 0 bytes
-rw-r--r--perl-install/pixmaps/mouse_3b_right.pngbin3138 -> 0 bytes
-rw-r--r--perl-install/pixmaps/nosplash_thumb.pngbin5115 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printer-mdk.pngbin2338 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printer_add.pngbin1704 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printer_conf.pngbin1613 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printer_default.pngbin1671 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printer_del.pngbin1552 -> 0 bytes
-rw-r--r--perl-install/pixmaps/printerdrake.pngbin1602 -> 0 bytes
-rw-r--r--perl-install/pixmaps/quit.pngbin2117 -> 0 bytes
-rw-r--r--perl-install/pixmaps/redhat-config-users.pngbin2770 -> 0 bytes
-rw-r--r--perl-install/pixmaps/refresh.pngbin1775 -> 0 bytes
-rw-r--r--perl-install/pixmaps/selected.pngbin344 -> 0 bytes
-rw-r--r--perl-install/pixmaps/slpash-drakeprint-2.pngbin5433 -> 0 bytes
-rw-r--r--perl-install/pixmaps/steps_off.pngbin401 -> 0 bytes
-rw-r--r--perl-install/pixmaps/steps_on.pngbin372 -> 0 bytes
-rw-r--r--perl-install/pixmaps/stock_cancel.xpm93
-rw-r--r--perl-install/pixmaps/stock_exit.xpm167
-rw-r--r--perl-install/pixmaps/stock_left.xpm70
-rw-r--r--perl-install/pixmaps/stock_ok.xpm77
-rw-r--r--perl-install/pixmaps/stock_right.xpm68
-rw-r--r--perl-install/pixmaps/unselected.pngbin172 -> 0 bytes
-rw-r--r--perl-install/pixmaps/warning.pngbin3169 -> 0 bytes
-rw-r--r--perl-install/pkgs.pm1460
-rw-r--r--perl-install/printer/STATUS5
-rw-r--r--perl-install/printer/common.pm86
-rw-r--r--perl-install/printer/cups.pm145
-rw-r--r--perl-install/printer/data.pm170
-rw-r--r--perl-install/printer/default.pm64
-rw-r--r--perl-install/printer/detect.pm534
-rw-r--r--perl-install/printer/main.pm3114
-rw-r--r--perl-install/printer/printerdrake.pm5371
-rw-r--r--perl-install/printer/services.pm61
-rw-r--r--perl-install/raid.pm273
-rw-r--r--perl-install/resize_fat/.cvsignore5
-rw-r--r--perl-install/resize_fat/Makefile10
-rw-r--r--perl-install/resize_fat/Makefile.PL13
-rw-r--r--perl-install/resize_fat/README8
-rw-r--r--perl-install/resize_fat/any.pm122
-rw-r--r--perl-install/resize_fat/boot_sector.pm110
-rw-r--r--perl-install/resize_fat/c_rewritten.pm14
-rw-r--r--perl-install/resize_fat/c_rewritten.xs265
-rw-r--r--perl-install/resize_fat/dir_entry.pm77
-rw-r--r--perl-install/resize_fat/directory.pm79
-rw-r--r--perl-install/resize_fat/fat.pm135
-rw-r--r--perl-install/resize_fat/info_sector.pm37
-rw-r--r--perl-install/resize_fat/io.pm58
-rw-r--r--perl-install/resize_fat/main.pm167
-rw-r--r--perl-install/run_program.pm157
-rw-r--r--perl-install/sbus_probing/main.pm138
-rwxr-xr-xperl-install/scanner.pm624
-rw-r--r--perl-install/security/help.pm139
-rw-r--r--perl-install/security/l10n.pm66
-rw-r--r--perl-install/security/level.pm70
-rw-r--r--perl-install/security/msec.pm188
-rw-r--r--perl-install/security/various.pm30
-rw-r--r--perl-install/services.pm399
-rw-r--r--perl-install/share/.cvsignore2
-rw-r--r--perl-install/share/advertising/01.pl19
-rw-r--r--perl-install/share/advertising/01.pngbin5671 -> 0 bytes
-rw-r--r--perl-install/share/advertising/02.pl19
-rw-r--r--perl-install/share/advertising/02.pngbin6215 -> 0 bytes
-rw-r--r--perl-install/share/advertising/03.pl19
-rw-r--r--perl-install/share/advertising/03.pngbin9068 -> 0 bytes
-rw-r--r--perl-install/share/advertising/04.pl17
-rw-r--r--perl-install/share/advertising/04.pngbin6269 -> 0 bytes
-rw-r--r--perl-install/share/advertising/05.pl23
-rw-r--r--perl-install/share/advertising/05.pngbin8090 -> 0 bytes
-rw-r--r--perl-install/share/advertising/06.pl17
-rw-r--r--perl-install/share/advertising/06.pngbin6230 -> 0 bytes
-rw-r--r--perl-install/share/advertising/07.pl17
-rw-r--r--perl-install/share/advertising/07.pngbin5448 -> 0 bytes
-rw-r--r--perl-install/share/advertising/08.pl17
-rw-r--r--perl-install/share/advertising/08.pngbin6655 -> 0 bytes
-rw-r--r--perl-install/share/advertising/09.pl21
-rw-r--r--perl-install/share/advertising/09.pngbin8165 -> 0 bytes
-rw-r--r--perl-install/share/advertising/10.pl19
-rw-r--r--perl-install/share/advertising/10.pngbin7688 -> 0 bytes
-rw-r--r--perl-install/share/advertising/11.pl18
-rw-r--r--perl-install/share/advertising/11.pngbin8355 -> 0 bytes
-rw-r--r--perl-install/share/advertising/12.pl19
-rw-r--r--perl-install/share/advertising/12.pngbin7330 -> 0 bytes
-rw-r--r--perl-install/share/advertising/13-a.pl19
-rw-r--r--perl-install/share/advertising/13-a.pngbin8527 -> 0 bytes
-rw-r--r--perl-install/share/advertising/13-b.pl19
-rw-r--r--perl-install/share/advertising/13-b.pngbin8527 -> 0 bytes
-rw-r--r--perl-install/share/advertising/14.pl21
-rw-r--r--perl-install/share/advertising/14.pngbin5219 -> 0 bytes
-rw-r--r--perl-install/share/advertising/15.pl19
-rw-r--r--perl-install/share/advertising/15.pngbin6818 -> 0 bytes
-rw-r--r--perl-install/share/advertising/16.pl19
-rw-r--r--perl-install/share/advertising/16.pngbin7483 -> 0 bytes
-rw-r--r--perl-install/share/advertising/17.pl19
-rw-r--r--perl-install/share/advertising/17.pngbin8763 -> 0 bytes
-rw-r--r--perl-install/share/advertising/18.pl22
-rw-r--r--perl-install/share/advertising/18.pngbin7202 -> 0 bytes
-rw-r--r--perl-install/share/advertising/19.pl19
-rw-r--r--perl-install/share/advertising/19.pngbin5528 -> 0 bytes
-rw-r--r--perl-install/share/advertising/20.pl18
-rw-r--r--perl-install/share/advertising/20.pngbin5515 -> 0 bytes
-rw-r--r--perl-install/share/advertising/21.pl25
-rw-r--r--perl-install/share/advertising/21.pngbin5598 -> 0 bytes
-rw-r--r--perl-install/share/advertising/22.pl19
-rw-r--r--perl-install/share/advertising/22.pngbin5251 -> 0 bytes
-rw-r--r--perl-install/share/advertising/23.pl18
-rw-r--r--perl-install/share/advertising/23.pngbin8966 -> 0 bytes
-rw-r--r--perl-install/share/advertising/24.pl23
-rw-r--r--perl-install/share/advertising/24.pngbin6656 -> 0 bytes
-rw-r--r--perl-install/share/advertising/25.pl17
-rw-r--r--perl-install/share/advertising/25.pngbin6150 -> 0 bytes
-rw-r--r--perl-install/share/advertising/26.pl15
-rw-r--r--perl-install/share/advertising/26.pngbin7251 -> 0 bytes
-rw-r--r--perl-install/share/advertising/27.pl21
-rw-r--r--perl-install/share/advertising/27.pngbin7259 -> 0 bytes
-rw-r--r--perl-install/share/advertising/28.pl24
-rw-r--r--perl-install/share/advertising/28.pngbin7833 -> 0 bytes
-rw-r--r--perl-install/share/advertising/29.pl21
-rw-r--r--perl-install/share/advertising/29.pngbin6032 -> 0 bytes
-rw-r--r--perl-install/share/advertising/30.pl19
-rw-r--r--perl-install/share/advertising/30.pngbin6900 -> 0 bytes
-rw-r--r--perl-install/share/advertising/Makefile11
-rw-r--r--perl-install/share/advertising/README4
-rw-r--r--perl-install/share/advertising/list-dis14
-rw-r--r--perl-install/share/advertising/list-dwd14
-rw-r--r--perl-install/share/advertising/list-ppp14
-rw-r--r--perl-install/share/advertising/list-pwp14
-rw-r--r--perl-install/share/advertising/lpi.pl8
-rw-r--r--perl-install/share/advertising/lpi.pngbin66531 -> 0 bytes
-rw-r--r--perl-install/share/aliases8
-rw-r--r--perl-install/share/base.pngbin386 -> 0 bytes
-rw-r--r--perl-install/share/compssUsers.pl244
-rw-r--r--perl-install/share/consolefonts/Cyr_a8x16bin9782 -> 0 bytes
-rw-r--r--perl-install/share/consolefonts/lat0-sun16bin9770 -> 0 bytes
-rw-r--r--perl-install/share/consolefonts/lat2-sun16bin9802 -> 0 bytes
-rw-r--r--perl-install/share/consolefonts/ruscii_8x16bin9782 -> 0 bytes
-rw-r--r--perl-install/share/devices18
-rw-r--r--perl-install/share/diskdrake.rc46
-rw-r--r--perl-install/share/floppy.pngbin317 -> 0 bytes
-rw-r--r--perl-install/share/fonts.tar.bz2bin1071110 -> 0 bytes
-rw-r--r--perl-install/share/ftin.pngbin190 -> 0 bytes
-rw-r--r--perl-install/share/ftout.pngbin190 -> 0 bytes
-rw-r--r--perl-install/share/help.pngbin3769 -> 0 bytes
-rw-r--r--perl-install/share/installed.pngbin344 -> 0 bytes
-rw-r--r--perl-install/share/keyboards.tar.bz2bin31936 -> 0 bytes
-rw-r--r--perl-install/share/keymaps.tar.bz2bin13738 -> 0 bytes
-rwxr-xr-xperl-install/share/keymaps_generate18
-rwxr-xr-xperl-install/share/kmap2bkmap37
-rw-r--r--perl-install/share/list.xml343
-rw-r--r--perl-install/share/locales-skeleton.tar.bz2bin1664 -> 0 bytes
-rw-r--r--perl-install/share/logo-mandrake.pngbin6173 -> 0 bytes
-rwxr-xr-xperl-install/share/makedev.sh89
-rw-r--r--perl-install/share/net_applet.desktop12
-rwxr-xr-xperl-install/share/net_applet.xinit5
-rw-r--r--perl-install/share/po/.cvsignore5
-rw-r--r--perl-install/share/po/DrakX.pot22179
-rw-r--r--perl-install/share/po/Makefile70
-rw-r--r--perl-install/share/po/af.po29869
-rw-r--r--perl-install/share/po/am.po23262
-rw-r--r--perl-install/share/po/ar.po26590
-rw-r--r--perl-install/share/po/az.po26401
-rw-r--r--perl-install/share/po/b_dump_strings.pm113
-rw-r--r--perl-install/share/po/be.po23758
-rw-r--r--perl-install/share/po/bg.po25549
-rw-r--r--perl-install/share/po/bn.po26570
-rw-r--r--perl-install/share/po/br.po23947
-rw-r--r--perl-install/share/po/bs.po26907
-rw-r--r--perl-install/share/po/ca.po30164
-rw-r--r--perl-install/share/po/cs.po26827
-rw-r--r--perl-install/share/po/cy.po26997
-rw-r--r--perl-install/share/po/da.po30175
-rw-r--r--perl-install/share/po/de.po27195
-rw-r--r--perl-install/share/po/el.po26088
-rw-r--r--perl-install/share/po/eo.po24419
-rw-r--r--perl-install/share/po/es.po27190
-rw-r--r--perl-install/share/po/et.po26814
-rw-r--r--perl-install/share/po/eu.po27015
-rw-r--r--perl-install/share/po/fa.po26744
-rw-r--r--perl-install/share/po/fi.po28626
-rw-r--r--perl-install/share/po/fr.po27377
-rw-r--r--perl-install/share/po/fur.po23257
-rw-r--r--perl-install/share/po/ga.po23523
-rw-r--r--perl-install/share/po/gl.po24874
-rw-r--r--perl-install/share/po/he.po24888
-rw-r--r--perl-install/share/po/help-de.pot1819
-rw-r--r--perl-install/share/po/help-es.pot1827
-rw-r--r--perl-install/share/po/help-fr.pot1794
-rw-r--r--perl-install/share/po/help-it.pot1859
-rw-r--r--perl-install/share/po/help-ru.pot1748
-rw-r--r--perl-install/share/po/help-zh_CN.pot1322
-rwxr-xr-xperl-install/share/po/help_update_english_only.pl50
-rwxr-xr-xperl-install/share/po/help_xml2pm.pl334
-rw-r--r--perl-install/share/po/hi.po26870
-rw-r--r--perl-install/share/po/hr.po25231
-rw-r--r--perl-install/share/po/hu.po28644
-rw-r--r--perl-install/share/po/id.po27904
-rw-r--r--perl-install/share/po/id.xsl5
-rw-r--r--perl-install/share/po/is.po25374
-rw-r--r--perl-install/share/po/it.po27077
-rw-r--r--perl-install/share/po/ja.po26911
-rw-r--r--perl-install/share/po/ko.po24608
-rw-r--r--perl-install/share/po/ky.po24297
-rw-r--r--perl-install/share/po/lt.po24346
-rw-r--r--perl-install/share/po/ltg.po25278
-rw-r--r--perl-install/share/po/lv.po25023
-rw-r--r--perl-install/share/po/mk.po25803
-rw-r--r--perl-install/share/po/mn.po23888
-rw-r--r--perl-install/share/po/ms.po23503
-rw-r--r--perl-install/share/po/mt.po26541
-rw-r--r--perl-install/share/po/nb.po26979
-rw-r--r--perl-install/share/po/nl.po30482
-rw-r--r--perl-install/share/po/nn.po25117
-rw-r--r--perl-install/share/po/pa_IN.po24933
-rw-r--r--perl-install/share/po/pl.po27031
-rw-r--r--perl-install/share/po/pt.po26734
-rw-r--r--perl-install/share/po/pt_BR.po26977
-rw-r--r--perl-install/share/po/ro.po24357
-rw-r--r--perl-install/share/po/ru.po27033
-rw-r--r--perl-install/share/po/sc.po23310
-rw-r--r--perl-install/share/po/sk.po26944
-rw-r--r--perl-install/share/po/sl.po26792
-rw-r--r--perl-install/share/po/sq.po27178
-rw-r--r--perl-install/share/po/sr.po26429
-rw-r--r--perl-install/share/po/sr@Latn.po26468
-rw-r--r--perl-install/share/po/sv.po26872
-rw-r--r--perl-install/share/po/ta.po24812
-rw-r--r--perl-install/share/po/tg.po29098
-rw-r--r--perl-install/share/po/th.po24149
-rw-r--r--perl-install/share/po/tl.po30518
-rw-r--r--perl-install/share/po/tr.po26138
-rwxr-xr-xperl-install/share/po/translation_size.pl45
-rw-r--r--perl-install/share/po/uk.po26946
-rw-r--r--perl-install/share/po/uz.po24098
-rw-r--r--perl-install/share/po/uz@Latn.po24141
-rwxr-xr-xperl-install/share/po/validate.pl156
-rw-r--r--perl-install/share/po/vi.po26666
-rw-r--r--perl-install/share/po/wa.po26671
-rw-r--r--perl-install/share/po/zh_CN.po25714
-rw-r--r--perl-install/share/po/zh_TW.po24737
-rw-r--r--perl-install/share/reload.pngbin157 -> 0 bytes
-rw-r--r--perl-install/share/rpmsrate755
-rw-r--r--perl-install/share/selected.pngbin344 -> 0 bytes
-rw-r--r--perl-install/share/semiselected.pngbin238 -> 0 bytes
-rw-r--r--perl-install/share/symlinks10
-rw-r--r--perl-install/share/symlinks.x86_641
-rwxr-xr-xperl-install/share/theme-editor.pl164
-rw-r--r--perl-install/share/themes-blue.rc65
-rw-r--r--perl-install/share/themes-galaxy.rc23
-rw-r--r--perl-install/share/unselected.pngbin123 -> 0 bytes
-rwxr-xr-xperl-install/share/verify_modules.pl102
-rw-r--r--perl-install/standalone.pm308
-rw-r--r--perl-install/standalone/.perl_checker1
-rwxr-xr-xperl-install/standalone/XFdrake99
-rwxr-xr-xperl-install/standalone/adduserdrake25
-rwxr-xr-xperl-install/standalone/autosetupprintqueues51
-rwxr-xr-xperl-install/standalone/bootloader-config189
-rw-r--r--perl-install/standalone/convert10
-rwxr-xr-xperl-install/standalone/diskdrake124
-rwxr-xr-xperl-install/standalone/drakTermServ2041
-rwxr-xr-xperl-install/standalone/drakauth41
-rwxr-xr-xperl-install/standalone/drakautoinst373
-rwxr-xr-xperl-install/standalone/drakbackup4385
-rwxr-xr-xperl-install/standalone/drakboot288
-rwxr-xr-xperl-install/standalone/drakbug181
-rwxr-xr-xperl-install/standalone/drakbug_report15
-rwxr-xr-xperl-install/standalone/drakclock396
-rwxr-xr-xperl-install/standalone/drakconnect1095
-rw-r--r--perl-install/standalone/drakedm85
-rwxr-xr-xperl-install/standalone/drakfirewall32
-rwxr-xr-xperl-install/standalone/drakfloppy340
-rwxr-xr-xperl-install/standalone/drakfont794
-rwxr-xr-xperl-install/standalone/drakgw475
-rw-r--r--perl-install/standalone/drakhelp38
-rw-r--r--perl-install/standalone/drakids191
-rwxr-xr-xperl-install/standalone/drakperm440
-rwxr-xr-xperl-install/standalone/drakproxy34
-rwxr-xr-xperl-install/standalone/drakpxe515
-rwxr-xr-xperl-install/standalone/drakroam398
-rwxr-xr-xperl-install/standalone/draksec363
-rwxr-xr-xperl-install/standalone/draksound61
-rwxr-xr-xperl-install/standalone/draksplash284
-rw-r--r--perl-install/standalone/draksplash2307
-rwxr-xr-xperl-install/standalone/drakupdate_fstab201
-rwxr-xr-xperl-install/standalone/drakups416
-rw-r--r--perl-install/standalone/drakvpn1150
-rwxr-xr-xperl-install/standalone/drakxservices18
-rwxr-xr-xperl-install/standalone/drakxtv166
-rwxr-xr-xperl-install/standalone/fileshareset384
-rwxr-xr-xperl-install/standalone/finish-install57
-rwxr-xr-xperl-install/standalone/finish-install.xsetup16
-rwxr-xr-xperl-install/standalone/harddrake2594
-rw-r--r--perl-install/standalone/icons/categ.pngbin5173 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakconnect.pngbin4854 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakfirewall.pngbin3052 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakfont.pngbin2965 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakgw.pngbin3391 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakups.pngbin3214 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/drakvpn.pngbin3313 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/eth_card_mini2.pngbin1538 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/fileopen.xpm34
-rw-r--r--perl-install/standalone/icons/find.xpm34
-rw-r--r--perl-install/standalone/icons/findf.xpm31
-rw-r--r--perl-install/standalone/icons/ftin.xpm30
-rw-r--r--perl-install/standalone/icons/ftout.xpm30
-rw-r--r--perl-install/standalone/icons/gmon.pngbin17411 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/cd.pngbin834 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/cpu.pngbin566 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/floppy.pngbin730 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/harddisk.pngbin725 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/harddrake.pngbin970 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/hw_mouse.pngbin751 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/hw_network.pngbin922 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/hw_printer.pngbin603 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/ide_hd.pngbin725 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/isdn.pngbin710 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/joystick.pngbin730 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/keyboard.pngbin533 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/memory.pngbin675 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/menu/harddrake-menu16.pngbin970 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/menu/harddrake-menu32.pngbin2447 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/menu/harddrake-menu48.pngbin4214 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/modem.pngbin847 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/multimedia.pngbin1010 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/scanner.pngbin809 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/scsi.pngbin275 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/scsi_hd.pngbin725 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/sound.pngbin1042 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/tape.pngbin920 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/tv.pngbin647 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/unknown.pngbin858 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/ups.pngbin699 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/usb.pngbin316 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/video.pngbin806 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/harddrake2/webcam.pngbin842 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/hori.pngbin7232 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic-drakfont-48.pngbin3290 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-CD-40.pngbin3436 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-back-up-16.pngbin1027 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-back-up-32.pngbin2977 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-back-up-48.pngbin4565 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-discdurwhat-40.pngbin2023 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-dossier-32.pngbin1858 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-moreoption-40.pngbin2354 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-network-40.pngbin2145 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-others-40.pngbin2023 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-system-40.pngbin2370 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-users-40.pngbin1638 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-when-40.pngbin2933 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/ic82-where-40.pngbin2514 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/localedrake-16.pngbin1327 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/localedrake-32.pngbin1991 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/localedrake-48.pngbin3087 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/logdrake.pngbin1760 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/mdk_logo.pngbin15639 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/net_c.pngbin3198 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/net_d.pngbin3192 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/net_u.pngbin2866 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/non-editable.pngbin872 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/printerdrake.pngbin1602 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/reload.xpm31
-rw-r--r--perl-install/standalone/icons/scannerdrake.pngbin2669 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/smbnfs_default.pngbin260 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/smbnfs_has_mntpoint.pngbin287 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/smbnfs_mounted.pngbin282 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/smbnfs_server.pngbin314 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/tradi.pngbin32579 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/verti.pngbin21123 -> 0 bytes
-rw-r--r--perl-install/standalone/icons/wiz_default_up.pngbin2686 -> 0 bytes
-rw-r--r--perl-install/standalone/interactive_http/Makefile21
-rw-r--r--perl-install/standalone/interactive_http/authorised_progs12
-rw-r--r--perl-install/standalone/interactive_http/index.html.pl14
-rwxr-xr-xperl-install/standalone/interactive_http/interactive_http.cgi95
-rw-r--r--perl-install/standalone/interactive_http/miniserv.conf13
-rw-r--r--perl-install/standalone/interactive_http/miniserv.init60
-rw-r--r--perl-install/standalone/interactive_http/miniserv.logrotate7
-rw-r--r--perl-install/standalone/interactive_http/miniserv.pam5
-rw-r--r--perl-install/standalone/interactive_http/miniserv.pem18
-rw-r--r--perl-install/standalone/interactive_http/miniserv.pl1817
-rw-r--r--perl-install/standalone/interactive_http/miniserv.users1
-rwxr-xr-xperl-install/standalone/keyboarddrake64
-rwxr-xr-xperl-install/standalone/listsupportedprinters64
-rw-r--r--perl-install/standalone/localedrake74
-rwxr-xr-xperl-install/standalone/logdrake519
-rwxr-xr-xperl-install/standalone/lsnetdrake27
-rw-r--r--perl-install/standalone/man/C/man5/drakbackup.conf.5180
-rw-r--r--perl-install/standalone/man/C/man8/drakconnect.8109
-rwxr-xr-xperl-install/standalone/mousedrake74
-rw-r--r--perl-install/standalone/net_applet345
-rwxr-xr-xperl-install/standalone/net_monitor594
-rwxr-xr-xperl-install/standalone/printerdrake580
-rwxr-xr-xperl-install/standalone/scannerdrake981
-rwxr-xr-xperl-install/standalone/service_harddrake216
-rw-r--r--perl-install/standalone/service_harddrake.sh54
-rw-r--r--perl-install/standalone/service_harddrake_confirm9
-rw-r--r--perl-install/steps.pm47
-rw-r--r--perl-install/timezone.pm254
-rw-r--r--perl-install/ugtk2.pm1564
-rw-r--r--perl-install/unused/.cvsignore1
-rw-r--r--perl-install/unused/cdrom.pm41
-rw-r--r--perl-install/unused/christmas-karaoke.patch98
-rw-r--r--perl-install/unused/demo-frozen-bubble.patch371
-rw-r--r--perl-install/unused/dns.pm64
-rw-r--r--perl-install/unused/migrate-ugtk2-to-mygtk2.el17
-rw-r--r--perl-install/unused/migrate-ugtk2-to-mygtk2.pl223
-rw-r--r--perl-install/unused/otherinsmod.pm26
-rw-r--r--perl-install/unused/scsi.pm104
-rwxr-xr-xperl-install/verify_c15
-rw-r--r--perl-install/wizards.pm206
-rw-r--r--perl-install/xf86misc/.cvsignore5
-rw-r--r--perl-install/xf86misc/Makefile10
-rw-r--r--perl-install/xf86misc/Makefile.PL15
-rw-r--r--perl-install/xf86misc/main.pm12
-rw-r--r--perl-install/xf86misc/main.xs76
-rw-r--r--rescue/.cvsignore1
-rw-r--r--rescue/Makefile12
-rw-r--r--rescue/aliases6
-rw-r--r--rescue/devices.pl54
-rw-r--r--rescue/dirs6
-rwxr-xr-xrescue/drvinst47
-rwxr-xr-xrescue/guessmounts82
-rwxr-xr-xrescue/install_bootloader63
-rw-r--r--rescue/list.xml233
-rwxr-xr-xrescue/lsparts45
-rwxr-xr-xrescue/make_partimage_save_rest_all65
-rwxr-xr-xrescue/make_rescue_img115
-rwxr-xr-xrescue/partimage_whole_disk191
-rwxr-xr-xrescue/rescue-doc60
-rwxr-xr-xrescue/restore_ms_boot69
-rwxr-xr-xrescue/tree/bin/insmod2
-rwxr-xr-xrescue/tree/bin/login2
-rw-r--r--rescue/tree/etc/fstab4
-rw-r--r--rescue/tree/etc/group1
-rw-r--r--rescue/tree/etc/host.conf2
-rw-r--r--rescue/tree/etc/hosts1
-rw-r--r--rescue/tree/etc/inittab14
-rw-r--r--rescue/tree/etc/issue28
-rw-r--r--rescue/tree/etc/passwd3
-rw-r--r--rescue/tree/etc/profile24
-rwxr-xr-xrescue/tree/etc/rc.reboot8
-rwxr-xr-xrescue/tree/etc/rc.sysinit62
-rw-r--r--rescue/tree/etc/resolv.conf2
-rwxr-xr-xrescue/tree/sbin/fakeshutdown39
-rwxr-xr-xrescue/tree/sbin/modprobe56
-rw-r--r--rescue/tree/usr/lib/CVS.0
-rw-r--r--rescue/tree/usr/share/symlinks11
-rw-r--r--tools/.cvsignore4
-rw-r--r--tools/2adsldb.pm17
-rw-r--r--tools/2isdndb.pm25
-rw-r--r--tools/Makefile39
-rwxr-xr-xtools/addchangelog.pl18
-rw-r--r--tools/alpha/cd/Makefile8
-rw-r--r--tools/alpha/cd/README40
-rw-r--r--tools/alpha/cd/README.milo13
-rw-r--r--tools/alpha/cd/aboot.cnf3
-rw-r--r--tools/alpha/cd/up1000/5100440A.txt25
-rw-r--r--tools/alpha/cd/up1000/README.txt16
-rwxr-xr-xtools/alpha/cd/up1000/apb.cfg2
-rwxr-xr-xtools/alpha/cd/up1000/apb.exebin120832 -> 0 bytes
-rw-r--r--tools/alpha/cd/up1000/install.txt356
-rw-r--r--tools/alpha/cd/up1000/up1000.palbin30464 -> 0 bytes
-rwxr-xr-xtools/alpha/e2fsck.sharedbin111080 -> 0 bytes
-rwxr-xr-xtools/checkusedmodules22
-rwxr-xr-xtools/closurepkgs108
-rwxr-xr-xtools/cvslog2changelog.pl139
-rw-r--r--tools/dmidecode/.cvsignore1
-rw-r--r--tools/dmidecode/Makefile17
-rw-r--r--tools/dmidecode/dmidecode.c856
-rw-r--r--tools/extractchangelog2
-rwxr-xr-xtools/gencompss14
-rwxr-xr-xtools/gencryptofiles115
-rwxr-xr-xtools/genmodparm145
-rwxr-xr-xtools/get-needed-drakx-modules19
-rwxr-xr-xtools/hd_grub.cgi102
-rwxr-xr-xtools/i386/busyboxbin55508 -> 0 bytes
-rwxr-xr-xtools/i386/e2fsck.sharedbin80308 -> 0 bytes
-rwxr-xr-xtools/i386/mkreiserfsbin15868 -> 0 bytes
-rw-r--r--tools/i386/netboot/.cvsignore4
-rw-r--r--tools/i386/netboot/3c503/nbgrubbin112066 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c503/pxegrubbin113090 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c503/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c503/stage2bin112130 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/nbgrubbin111616 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/pxegrubbin112640 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c507/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/stage2bin111680 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/nbgrubbin112020 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/pxegrubbin113044 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c509/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/stage2bin112084 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/nbgrubbin112724 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/pxegrubbin113748 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c529/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/stage2bin112788 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/nbgrubbin114408 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/pxegrubbin115432 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c595/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/stage2bin114472 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/nbgrubbin115520 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/pxegrubbin116544 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c90x/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/stage2bin115552 -> 0 bytes
-rw-r--r--tools/i386/netboot/cs89x0/nbgrubbin113762 -> 0 bytes
-rw-r--r--tools/i386/netboot/cs89x0/pxegrubbin114786 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/cs89x0/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/cs89x0/stage2bin113826 -> 0 bytes
-rw-r--r--tools/i386/netboot/davicom/nbgrubbin114160 -> 0 bytes
-rw-r--r--tools/i386/netboot/davicom/pxegrubbin115184 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/davicom/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/davicom/stage2bin114192 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/nbgrubbin111698 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/pxegrubbin112722 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/depca/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/stage2bin111762 -> 0 bytes
-rw-r--r--tools/i386/netboot/device.map1
-rw-r--r--tools/i386/netboot/eepro/nbgrubbin111836 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro/pxegrubbin112860 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/eepro/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro/stage2bin111900 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/nbgrubbin114112 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/pxegrubbin115136 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/eepro100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/stage2bin114144 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/nbgrubbin113184 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/pxegrubbin114208 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/epic100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/stage2bin113248 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/nbgrubbin111524 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/pxegrubbin112548 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/exos205/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/stage2bin111588 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/grubbin329223 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/nbgrubbin113680 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/pxegrubbin114704 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/lance/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/stage2bin113744 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/makeImages31
-rwxr-xr-xtools/i386/netboot/make_boot_network24
-rw-r--r--tools/i386/netboot/menu.lst.example21
-rw-r--r--tools/i386/netboot/natsemi/nbgrubbin114564 -> 0 bytes
-rw-r--r--tools/i386/netboot/natsemi/pxegrubbin115588 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/natsemi/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/natsemi/stage2bin114628 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne/nbgrubbin111752 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne/pxegrubbin112776 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ne/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne/stage2bin111784 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/nbgrubbin111962 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/pxegrubbin112986 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ne2100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/stage2bin112026 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/nbgrubbin111006 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/pxegrubbin112030 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni5010/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/stage2bin111070 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/nbgrubbin111796 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/pxegrubbin112820 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni5210/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/stage2bin111828 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/nbgrubbin111930 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/pxegrubbin112954 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni6510/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/stage2bin111994 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/nbgrubbin113896 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/pxegrubbin114920 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ns8390/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/stage2bin113960 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/nbgrubbin113680 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/pxegrubbin114704 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/otulip/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/stage2bin113744 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/nbgrubbin113152 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/pxegrubbin114176 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/rtl8139/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/stage2bin113216 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/nbgrubbin116416 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/pxegrubbin117440 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/sis900/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/stage2bin116480 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/nbgrubbin111618 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/pxegrubbin112642 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/sk_g16/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/stage2bin111650 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/nbgrubbin112162 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/pxegrubbin113186 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/smc9000/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/stage2bin112226 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/nbgrubbin110673 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/pxegrubbin111697 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/tiara/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/stage2bin110737 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/nbgrubbin123886 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/pxegrubbin124910 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/tulip/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/stage2bin123918 -> 0 bytes
-rw-r--r--tools/i386/netboot/via_rhine/nbgrubbin113768 -> 0 bytes
-rw-r--r--tools/i386/netboot/via_rhine/pxegrubbin114792 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/via_rhine/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/via_rhine/stage2bin113800 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/nbgrubbin114140 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/pxegrubbin115164 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/w89c840/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/stage2bin114172 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/nbgrubbin112088 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/pxegrubbin113112 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/wd/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/stage2bin112120 -> 0 bytes
-rwxr-xr-xtools/i386/shbin153752 -> 0 bytes
-rwxr-xr-xtools/ia64/e2fsck.sharedbin1060504 -> 0 bytes
-rwxr-xr-xtools/ia64/elilo.efibin315800 -> 0 bytes
-rwxr-xr-xtools/install-xml-file-list351
-rwxr-xr-xtools/mailchangelog.pl14
-rw-r--r--tools/make_lang_png_transparent.c167
-rwxr-xr-xtools/mdkinst_stage2_tool44
-rw-r--r--tools/ntp_servers.pl303
-rwxr-xr-xtools/patch_pcmcia_config.pl28
-rw-r--r--tools/ppc/README39
-rwxr-xr-xtools/ppc/Xpmacbin3762427 -> 0 bytes
-rwxr-xr-xtools/ppc/convert5
-rw-r--r--tools/ppc/e2fsck.sharedbin101469 -> 0 bytes
-rwxr-xr-xtools/ppc/magic89
-rwxr-xr-xtools/ppc/mapping29
-rwxr-xr-xtools/ppc/mkINSTALLCD71
-rwxr-xr-xtools/ppc/mkhybrid-1.12b5.4bin488623 -> 0 bytes
-rwxr-xr-xtools/ppc/mkhybrid-1.12b5.4-x86bin194471 -> 0 bytes
-rw-r--r--tools/ppc/yabootbin58556 -> 0 bytes
-rw-r--r--tools/rpcinfo-flushed.c740
-rw-r--r--tools/serial_probe/.cvsignore1
-rw-r--r--tools/serial_probe/Makefile13
-rw-r--r--tools/serial_probe/device.h104
-rw-r--r--tools/serial_probe/kudzu.h26
-rw-r--r--tools/serial_probe/serial.c1136
-rw-r--r--tools/serial_probe/serial.h43
-rw-r--r--tools/serial_probe/serial_probe.c114
-rw-r--r--tools/shift_all.pl113
-rw-r--r--tools/shift_img.c165
-rwxr-xr-xtools/simplify-drakx-modules5
-rwxr-xr-xtools/sparc/e2fsck.sharedbin125624 -> 0 bytes
-rwxr-xr-xtools/specific_arch9
-rwxr-xr-xtools/syncrpms267
-rwxr-xr-xtools/update_images52
-rwxr-xr-xtools/x86_64/busyboxbin74064 -> 0 bytes
-rw-r--r--tools/xhost+.c11
1597 files changed, 0 insertions, 2250087 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 2a8035f11..000000000
--- a/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-docs
-images
-unused
-drakxtools.tar.bz2
-isolinux
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 1885a64dc..000000000
--- a/Makefile
+++ /dev/null
@@ -1,96 +0,0 @@
-include Makefile.config
-
-DIRS = tools kernel mdk-stage1 perl-install rescue
-
-.PHONY: dirs install isolinux-graphic.bmp.parameters isolinux-graphic-simple.bmp.parameters images
-
-install: dirs images rescue install_only
-
-dirs:
- @for n in $(DIRS); do $(MAKE) -C $$n all || exit 1 ; done
-
-images:
- DISTRIB_DESCR=$(DISTRIB_DESCR) ./make_boot_img
-
-tar: clean
- rpm -qa > needed_rpms.lst
- cd .. ; tar cfj gi.tar.bz2 gi
- rm needed_rpms.lst
-
-install_only:
- install -d $(MISC_DEST) $(EXTRA_INSTALL_DEST) $(IMAGES_DEST) $(MEDIA_INFO_DEST)
- ifneq (ppc,$(ARCH))
- cp -f images/* $(IMAGES_DEST)
- rm -rf $(IMAGES_DEST)/alternatives
- if [ `ls $(IMAGES_DEST)/*.img-* 2>/dev/null | wc -l` -gt 0 ]; then \
- cd $(IMAGES_DEST); mkdir alternatives; cd alternatives; mv ../*.img-* .; md5sum *.img-* > MD5SUM; \
- fi
- cd $(IMAGES_DEST); md5sum *.{img,iso}* > MD5SUM
- endif
- ifeq (alpha,$(ARCH))
- cp -f images/* $(ROOTDEST)/boot
- cp -f vmlinux.gz $(ROOTDEST)/boot/instboot.gz
- make -C tools/$(ARCH)/cd install ROOTDEST=$(ROOTDEST)
- endif
-
- ifeq (i386,$(ARCH))
- rm -rf $(ROOTDEST)/isolinux
- cp -af isolinux $(ROOTDEST)
- endif
-
- ifeq (x86_64,$(ARCH))
- rm -rf $(ROOTDEST)/isolinux
- cp -af isolinux $(ROOTDEST)
- endif
-
- make -C perl-install full_stage2
- make -C perl-install/share/advertising install
- make -C rescue install
-
-clean:
- rm -rf images
-# force taking new rpms from repository
- rm -rf kernel/RPMS
- for i in $(DIRS); do make -C $$i clean; done
- find . -name "*~" -o -name ".#*" | xargs rm -f
-
-check:
- @badrights=`find $(STAGE2_LIVE) | perl -lne 'print if !((stat)[2] & 4)'`; [ -z "$$badrights" ] || { echo "bad rights for files vvvvvvvvvvvvvvvvvvvvvvvvvv" ; echo "$$badrights" ; echo "bad rights for files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" ; exit 1; }
- @missing_kb=`find -name "Entries" | xargs perl -F/ -alne 'print $$ARGV =~ m|(.*)/CVS|, "/$$F[1]" if $$F[1] =~ /\.(png|gif|bmp|xcf|gz|bz2|tar|rdz|so|a|o|mar|img|exe)$$/ && $$F[4] ne "-kb"'` ; [ -z "$$missing_kb" ] || { echo "missing -kb in CVS for files vvvvvvvvvvvvvvvvvvvvvvvvvv" ; echo "$$missing_kb" ; echo "missing -kb in CVS for files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" ; exit 1; }
- $(MAKE) -C perl-install check
-
-upload:
- $(MAKE) clean
-
-# # done before make install to increment ChangeLog version
- tools/addchangelog.pl tools/cvslog2changelog.pl | tools/mailchangelog.pl &
-
- $(MAKE) install
- $(MAKE) check
- $(MAKE) upload_only
-
-upload_only:
- function upload() { rel=`echo $$1 | sed 's!$(ROOTDEST)/!!'`; rsync -qSavz --verbose --exclude '*~' -e ssh --delete $$1/$$2 mandrake@ken:/c/cooker/$$rel; } ;\
- upload $(MEDIA_INFO_DEST) 'compssUsers.pl*' ;\
- upload $(MEDIA_INFO_DEST) rpmsrate ;\
- upload $(STAGE2_DEST) '*.clp' ;\
- upload $(STAGE2_DEST) mdkinst.kernels ;\
- upload $(STAGE2_DEST) VERSION ;\
- upload $(EXTRA_INSTALL_DEST)/advertising '' ;\
- upload $(MISC_DEST) gendistrib ;\
- upload $(MISC_DEST) mdkinst_stage2_tool ;\
- upload $(MISC_DEST) packdrake ;\
- upload $(MISC_DEST) packdrake.pm ;\
- upload $(MISC_DEST) auto ;\
- upload $(IMAGES_DEST) MD5SUM ;\
- upload $(IMAGES_DEST) '*.img*' ;\
- upload $(IMAGES_DEST) '*.iso*' ;\
- upload $(IMAGES_DEST)/alternatives '' ;\
- upload $(ROOTDEST)/isolinux '' ;\
- echo
-
-isolinux-graphic.bmp.parameters: isolinux-graphic.bmp isolinux
- perl -I perl-install perl-install/standalone/draksplash2 --isolinux --kernel isolinux/alt0/vmlinuz --initrd isolinux/alt0/all.rdz $<
-
-isolinux-graphic-simple.bmp.parameters: isolinux-graphic-simple.bmp isolinux
- perl -I perl-install perl-install/standalone/draksplash2 --isolinux --size 1400 $<
diff --git a/Makefile.common b/Makefile.common
deleted file mode 100644
index ec7066a06..000000000
--- a/Makefile.common
+++ /dev/null
@@ -1,64 +0,0 @@
- # -*- makefile -*-
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-ARCH := $(patsubst i%86,i386,$(shell uname -m))
-ARCH := $(patsubst sparc%,sparc,$(ARCH))
-
- #- default lib is dietlibc (honoured by main Makefile whenever possible)
-L = DIETLIBC
-#L = GLIBC
-
- #- default frontend is newt (honoured by main Makefile whenever possible)
-F = NEWT
-# F = STDIO
-
- #- override in some situations
-ifeq (ia64, $(ARCH))
-L = GLIBC
-endif
-ifeq (ppc, $(ARCH))
-L = GLIBC
-endif
-ifeq (x86_64, $(ARCH))
-#L = GLIBC
-endif
-
-ifeq (DIETLIBC, $(L))
-DIET = $(top_dir)/dietlibc/bin-$(ARCH)/diet
-endif
-
-
- #- flags used by all stuff
-ifeq (ppc, $(ARCH))
-CFLAGS = -Os -pipe -Wall -fomit-frame-pointer -fno-strict-aliasing
-else
-CFLAGS = -Os -pipe -Wall -Werror -fomit-frame-pointer -fno-strict-aliasing
-endif
-
-DIETLIBC_INCLUDES = -I$(top_dir)/dietlibc/include -I. -I$(top_dir)/bzlib
-GLIBC_INCLUDES = -I. -I$(top_dir)/bzlib
-INCLUDES = $($(L)_INCLUDES)
-
-GLIBC_LDFLAGS_STAGE1 = -static
-DIETLIBC_LDFLAGS_STAGE1 = -nostdlib
-LDFLAGS_STAGE1 = $($(L)_LDFLAGS_STAGE1)
-
-GLIBC_LIBC =
-DIETLIBC_LIBC =
-STAGE1_LIBC = $($(L)_LIBC)
-
-STRIPCMD = strip -R .note -R .comment
-
diff --git a/Makefile.config b/Makefile.config
deleted file mode 100644
index d798ff255..000000000
--- a/Makefile.config
+++ /dev/null
@@ -1,25 +0,0 @@
-ROOTDEST = /export
-MISC_DEST = $(ROOTDEST)/misc
-GENERIC_INSTALL_DEST = $(ROOTDEST)/install
-EXTRA_INSTALL_DEST = $(GENERIC_INSTALL_DEST)/extra
-IMAGES_DEST = $(GENERIC_INSTALL_DEST)/images
-STAGE2_DEST = $(GENERIC_INSTALL_DEST)/stage2
-STAGE2_LIVE = $(STAGE2_DEST)/live
-
-MAIN_RPMS_DIR = $(ROOTDEST)/media/main
-MEDIA_INFO_DEST = $(ROOTDEST)/media/media_info
-
-DISTRIB_NAME = Mandrakelinux
-DISTRIB_VERSION = 10.2
-DISTRIB_DESCR = "$(DISTRIB_NAME) release $(DISTRIB_VERSION) (Limited Edition 2005)"
-
-
-# not config, but useful everywhere :)
-ARCH := $(patsubst i%86,i386,$(shell uname -m))
-ARCH := $(patsubst sparc%,sparc,$(ARCH))
-
-ifeq (x86_64, $(ARCH))
-LIB = lib64
-else
-LIB = lib
-endif
diff --git a/advanced.msg.xml b/advanced.msg.xml
deleted file mode 100644
index 01c2b575a..000000000
--- a/advanced.msg.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<document>
-The following install types may be used instead of previously notified :
- o <white>vgahi</white> for high resolution graphical installation.
- o <white>vga16</white> for 640x480 in 16 colors graphical installation.
-
-The following options may be added on the command line :
- o <white>readonly=1</white> to disable editing disk partitions.
- o <white>display=ackbar:0</white> to export display to <blue>ackbar</blue> machine screen 0 during
- installation.
- o <white>noauto</white> to disable automatic detection.
- o <white>security=n</white> to set security level to value <blue>n</blue>.
- o <white>updatemodules</white> to use the special update floppy containing modules updates.
- o <white>patch</white> to use a patch from the floppy (file named <blue>patch.pl</blue>).
- o <white>auto_install=floppy</white> to enable auto_install using <blue>auto_inst.cfg</blue> file on the
- floppy.
- o <white>memtest</white> to test your computer RAM for faulty memory modules.
-</document>
diff --git a/docs/.cvsignore b/docs/.cvsignore
deleted file mode 100644
index a0593a470..000000000
--- a/docs/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-pictures
diff --git a/docs/9.0_errata.txt b/docs/9.0_errata.txt
deleted file mode 100644
index 4fec8885c..000000000
--- a/docs/9.0_errata.txt
+++ /dev/null
@@ -1,108 +0,0 @@
-# This file contains all the bugs/glitches/inconsistencies shipped in
-# 9.0 (Dolphin) Mandrake Linux Release.
-
-# Feel free to add your entry and if possible the fixes and status of
-# the errata.
-
- o Drakxtools:
- ==========
-
- widget libraries:
-
- In both XFdrake and printerdrake pop up small, empty, gray windows when
- clicking in the main menu. STATUS: Not fixed.
-
- Scroll bars and widget sizes often not correct (visible primarily in the
- printer options step of the "Add printer" wizard of printerdrake. STATUS:
- Not fixed.
-
- harddrake:
-
- logdrake:
- IS: Send the alert mail when service is stopped but the mail
- is empty.
- SHOULD BE: incorporate a text on which service is stopped.
- Status: not fixed.
-
- o Drakconf:
- =========
- IS: locale nl_NL, sl and zh_CN prevent drakconf from starting with
- a "cannot call set_active on undefined values" error.
-
- SHOULD BE: work well in all locales.
-
- a workaround has been comitted
-
- o Drakfont:
- =========
-
- drakfont get stopped in stat64("/mnt/nt/winnt/fonts/8514oem.fon",
- ...) on ntfs partitions.
- there's a bug in ntfs.o fs module of the kernel
-
- o Install:
- ========
-
- o urpmi:
- ======
-
- "urpmi mplayer" shows a list of libraries it needs and asks whether
- to install all this, after saying "y", it says that all these
- packages are missing and fails (I have shown it to François and he
- says that is a bug with the "contribs". He had to regenerate the
- hdlists somehow. STATUS: Not fixed.
-
- o XFree 4.2.x:
- ============
-
- Touchpad mouse on my Asus S8600 notebook. Worked out-of-the-box
- with Mandrake 8.2, but in 9.0 I cannot do any dragging operation
- with the PS/2-"Standard" mouse setting. I switched to "Glidepoint"
- with mousedrake and then dragging works, but the emulation of the
- third button by pressing both buttons not. Adding the lines
-
- Option "Emulate3Buttons"
- Option "Emulate3Timeout" "50"
-
- to the mouse section of /etc/X11/XF86Config-4 manually fixes the
- middle-button problem. STATUS: Not fixed.
-
-
-
- Sometimes, XFree86 can cause sound glitches because of intensive
- pci bus usage.
- Adding the line
-
- Option "PciRetry" "true"
-
- to the "Device" section /etc/X11/XF86Config-4 fixes these boxes.
-
-
- I810 driver is bogus: when Xrender extension is in use (antialiased
- fonts), X11 may crash upon vt switch.
- is fixed in devel branch of cvs
-
-
- o Printer drivers:
- ================
-
- "Best Grayscale" mode of HP DeskJet 6xx and Apollo printers does
- not work. STATUS: Fixed on linuxprinting.org, needs to be packaged
- in "printer-drivers".
-
-o kernel:
- =======
-
- Sometimes reboot stops on "illegal seek" message (having /usr on /
- fs fix it)
-
- Sometimes process get blocked in D-state on ntfs partitions (see
- drakfont)
-
- i810_audio mistakely say to modules.pm through modules.*map it
- handles nforces whereas it lacks some workaround nvidia and alsa
- uses.
- workaround: perl-install/patch/patch-nforce.pl
-
- snd-via686 is said to produce background noise since alsa-0.9.0rc3
- workaround: switch to via82cxxx_audio (oss driver) through draksound
diff --git a/docs/9.1_errata.txt b/docs/9.1_errata.txt
deleted file mode 100644
index fa73c200e..000000000
--- a/docs/9.1_errata.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-# This file contains all the bugs/glitches/inconsistencies shipped in
-# 9.1 (Bamboo) Mandrake Linux Release.
-
-# Feel free to add your entry and if possible the fixes and status of
-# the errata.
-
-
- o DrakConf:
- =========
-
- - #2439: menudrake failled to run for users other than root and
- xserver owner
-
- - #3415: do not kill "explicitely non embeddable" processes when
- killing embedded tools
-
- both fixed in 9.1-12mdk
-
-
-
- o DrakxTools:
- ===========
- - drakconnect:
- o ltmodem support is missing from mdk9.1 [added in hp release]
- o various other fixes came into mdk4hp release
-
- - explanations: most common ones are not logged because of a
- standalone.pm vs common.pm methods overloading bug [not yet
- fixed]
-
- - harddrake-ui:
- o menu entry starts logdrake instead of harddrake's gui [fixed in
- cvs]
- o status bar is not cleared on config tool exit [fixed in cvs]
- o title bar miss some spaces in french locale [fixed in cvs]
-
- - harddrake service: 5 second timeout was too short so it was
- increased up to 25 seconds [in hp release]
-
- - localedrake/drakx: legal problem with rpc vs hong-kong||taiwan
- [fixed in hp release]
-
-
-
- o Kernel:
- =======
-
- - ntfs driver has a hang, additionally also causing 100% cpu usage
- if either the size of the ntfs filesystem or the number of MFT
- entries fell to a certain range and statfs() system call was
- invoked by an application (e.g. df, gnome system monitor, etc).
- see #3353
-
- it got fixed quickly but unfortunately too late for us
-
- the probability one hits this bug is 0.2% or every 512th users.
-
- updated ntfs driver (2.1.2a) is at the usual place,
-
- http://linux-ntfs.sourceforge.net/
-
- or more precisely,
-
- http://sourceforge.net/project/showfiles.php?group_id=13956
-
diff --git a/docs/BUGS b/docs/BUGS
deleted file mode 100644
index 1d154fcf1..000000000
--- a/docs/BUGS
+++ /dev/null
@@ -1,10 +0,0 @@
-doInstallStep: if there's not enough room, error, but packages are marked installed :(
-
-when you click directly on setupFilesystems and you have scsi, you're fucked.
-Even if you go to setupSCSI, you won't be able to have partitions again.
-
-bug non reproductible:
-- /etc/passwd is empty after `root passwd' stage :(
-- reboot at the end of package installation with a lot of error messages from
-gtk about the progressbar
-
diff --git a/docs/COPYING b/docs/COPYING
deleted file mode 100644
index 60549be51..000000000
--- a/docs/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/docs/HACKING b/docs/HACKING
deleted file mode 100644
index 5b16ed18f..000000000
--- a/docs/HACKING
+++ /dev/null
@@ -1,137 +0,0 @@
--=-=--
-DrakX is a very big project, and it needs special setups to work.
-The purpose of this file is to explain how you can setup your box to make it
-compile and run.
--=-=--
-
-Beware, don't try this on a production machine with important data.
-
-
---------------------------------------------------------------------------
-Sources installation:
-
-First grab the gi.tar.bz2 archive and untar it in your home directory, for
-example from DrakX-*.src.rpm on your Mandrakelinux distribution.
-
-Fix a few things:
-% find gi -name "*/CVS/root/*" | xargs perl -pi -e 's/prigaux/anoncvs/'
-
-Then, log yourself into the cvs:
-% export CVS_RSH=ssh
-% export CVSROOT=:ext:anoncvs@cvs.mandrakesoft.com:/cooker
-% cvs checkout gi
-        (the passwd is: 'cvs')
-
-And update the gi package:
-% cvs update -P -d gi
-
-
---------------------------------------------------------------------------
-Preparing the compilation process:
-
-(1) target directory
-
-Create a top level directory called /export and give write permissions to
-the user/group that will be compiling DrakX.  It is also suggested that you
-copy a recent Mandrakelinux CD in there. (You don't have to put have all
-the RPMS...) ; you'll need roughly 1.5 Gbytes for a full install. (It is
-possible to not have a copy of Mandrakelinux there, if all you desire is to
-compile gi)
-
-
-(2) support directories
-
-You will need to create a top level /RPMS directory.  This directory needs
-to be populated with the following RPMS:
-locales-ja locales-ko locales-zh
-
-GI needs to be informed about which kernel(s) is/are to be used.
-Most of the time, no manual install is needed. Just be sure to
-have the BOOT kernel(s) in /RPMS, and typing make later on will
-extract the package(s) and build stuff from it.
-
-FYI, for each kernel, directories will be populated as follows:
-
-gi/kernel/all.kernels/2.6.0
- special files containing
- - vmlinuz, modules.dep
- - modules for stage1 (*.mar, *.tar)
- - modules for stage2 (modules.cz)
-
-
-(3) required rpm packages
-
-You need quite a number of rpm packages installed on your system
-to build gi properly. Roughly:
-
-emacs gcc make glibc-devel glibc-static-devel perl-devel XFree86
-XFree86-FBDev XFree86-VGA16 XFree86-devel libglib-devel
-libgtk+-devel ldetect ldetect-devel ldetect-lst
-ldetect-lst-devel libslang-devel libnewt-devel e2fsprogs
-libext2fs2-devel dosfstools rpm-devel rpmtools libbzip2_1
-libbzip2_1-devel libncurses5 libncurses5-devel setserial telnet
-parted raidtools pciutils mt-st gpart reiserfsprogs jfsprogs
-xfsprogs extipl pcmcia-cs gettext perl-Gtk2 perl-Glib perl-XML-Parser ash imlib
-fb2png ntfsprogs lm_sensors galaxy-gnome perl-PerlIO-gzip brltty
-lvm2 mkcd perl-URPM glibc-i18ndata cloop-utils partimage syslinux
-memtest86+ dmraid dietlibc-devel
-
-You may need a few others I forgot to mention. If the compilation fails, try
-to understand the message and install any necessary remaining package.
-
-
-(4)
-
-NEVER build or run Drakx as root.  Install sudo and setup the following
-permissions in /etc/sudoers:
-
-user ALL=(root)
-NOPASSWD:/usr/bin/patch,NOPASSWD:/bin/rpm,NOPASSWD:/bin/mount,NOPASSWD:/bin/cp,NOPASSWD:/bin/umount,NOPASSWD:/usr/bin/install,NOPASSWD:/bin/rm,NOPASSWD:/bin/mv,NOPASSWD:/bin/tar,NOPASSWD:/bin/cpio,NOPASSWD:/bin/chown,NOPASSWD:/bin/mkdir,NOPASSWD:/usr/bin/strip,NOPASSWD:/bin/mknod
-
-
-(5)
-
-pray
-
-[gc@obiwan ~/cvs/gi] make
-
-
----------------------------------------------------------------------------
-The comments written with #- are automatically stripped out at install.
-
-
----------------------------------------------------------------------------
-testing all:
-
-  go to the perl-install directory and execute ./install2 --testing
-
-  NEVER execute DrakX as root! You might need to allow all users
-  to read the block devices of your hard-disks, though (chmod a+w
-  /dev/hda* for example).
-
-
-
-Here is how I (dams) made it work on my computer.
--------------------------------------------------
-
-- get the sources
-- install the librairies needed included newt-devel gtk+-devel popt-devel popt gtk-engines
-- cd path/to/gi
-- make
-- mkdir /usr/share/gtk
-- ln -s path/to/gi/perl-install/share/themes /usr/share/gtk
-- ln -s path/to/gi/perl-install/share/step-* /usr/share
-- ln -s path/to/gi/perl-install/share/help.xpm /usr/share
-- ln -s path/to/gi/perl-install/share/isdn* /etc/sysconfdir/network-scripts
-- have a cd architecture linked on /export
-- ln -s /export /tmp/rhimage
-- export PERL_INSTALL_TEST=1
-- cd path/to/gi/perl-install
-- gendistrib --noclean --distrib /export
-- ./install2 in root (dangerous) or chmod a+r /dev/hd* and ./install2 in user
-
-
-
-address all bugreports to dave@null.com
-
-info has been added by sunny@opencurve.org
diff --git a/docs/Partition-ends-after-end-of-disk.txt b/docs/Partition-ends-after-end-of-disk.txt
deleted file mode 100644
index 3da57d561..000000000
--- a/docs/Partition-ends-after-end-of-disk.txt
+++ /dev/null
@@ -1,66 +0,0 @@
- Cylinder/Head/Size Hell Is Not Over
-
- pixel@mandrakesoft.com
- $Date$
-
-
-Nowadays, you can boot Linux without ever relying on CHS
-(Cylinder/Head/Size):
-
-- CHS information on partition table is obsolete and not used anymore.
-It was causing the 1024th cylinder limitation:
- - disallowing partitions above 8GiG. Problem overcome using 28bits Linear
- Block Addressing (LBA) in partition table.
- - disallowing to boot on partition above 8GiG (due to int13 limitation used
- in bootloaders). Problem overcome using int13 extensions (EDD)
-
-Logical CHS (Cylinder/Head/Size) and physical CHS are not related anymore.
-Especially the size of a hard drive is not a multiple of the number of
-Cylinders.
-
-
-The problem is that many tools still rely somewhat heavily on CHS information.
-- most tools adjust partitions on cylinder boundary
-- some tools compute the size of the disk based on CHS (eg: fdisk)
-
-
-Resulting problems in various tools:
-
-- last partition not cylinder boundary adjusted, and overrun CHS computed size
- - fdisk
- > Total allocated sectors %d greater than the maximum %d
- - cfdisk (need confirmation)
- > FATAL ERROR: Bad primary partition %d: Partition ends after end-of-disk
- or
- > FATAL ERROR: Bad logical partition %d: Partition ends after end-of-disk
- - Partition Magic (version?)
- > Error #109: Partition ends after end of disk
- - Windows <= 98se, Windows Me
- (doesn't like it, what error message?)
-
- Tools handling it correctly:
- - parted and so diskdruid in RedHat >= 7.2 (or is it 7.x?)
- - diskdrake >= Mandrake 8.2
- - Windows XP (need confirmation)
-
- Tools using the full size of the disk, and so causing pbs with fdisk/cfdisk/...:
- - diskdrake == Mandrake 8.2
-
-- disagreement between CHS and linear address
- - parted
- > "Warning: Unable to align partition properly. This probably means that
- > another partitioning tool generated an
- > incorrect partition table, because it didn't have the correct BIOS
- > geometry. It is safe to ignore,but
- > ignoring may cause (fixable) problems with some boot loaders.
- > Ignore Cancel ? C
- - lilo
- > Warning: Kernel & BIOS return differing head/sector geometries for device 0x80
- > Kernel: 38792 cylinders, 16 heads, 63 sectors
- > BIOS: 1023 cylinders, 255 heads, 63 sectors
- > Device 0x2100: Inconsistent partition table, 2nd entry
- > CHS address in PT: 48:0:1 --> LBA (771120)
- > LBA address in PT: 48384 --> CHS (3:3:1)
- > The partition table is *NOT* being adjusted.
-
-
diff --git a/docs/README b/docs/README
deleted file mode 100644
index 7f7c6b552..000000000
--- a/docs/README
+++ /dev/null
@@ -1,300 +0,0 @@
-Well here is a little description of what DrakX needs to work in comparison
-to the RH newt install.
-
-********************************************************************************
-* CVS **************************************************************************
-********************************************************************************
-Like all good free software, DrakX is in CVS :)
-
-You can access it at http://www.mandrakelinux.com/cgi-bin/cvsweb.cgi/gi
-
-or via
-
-export CVS_RSH=ssh
-export CVSROOT=:ext:anoncvs@cvs.mandrakesoft.com:/cooker
-cvs checkout gi
- (enter password 'cvs')
-
-
-This is only read-only access. If you want more, tell me (pixel@mandrakesoft.com)
-
-Alas, all is not in CVS, a lot of things come from rpm packages which you must
-install.
-
-Please note that redoing *all* the stuff is not for the faint of heart. I myself
-sometimes wonder what the whole make does :-%
-Instead, changing some .pm files is quite easy (nice interpreted language)
-
-********************************************************************************
-* Making your custom install ***************************************************
-********************************************************************************
-If you have your own rpms you want to add, or make your own updated cdrom, you
-just have to issue:
-
-% gendistrib --noclean --distrib <DIRS>
-
-Where <DIRS> is the root of all the media that the install will see, this first
-one is the main one :
-
-(1) network or 1-cdrom installs
- DIRS == the root directory of the Distribution
-
-(2) multi-cdrom install
- DIRS == the root directories of all the media that the install will see
-
-``gendistrib'' will scan the file media/media_info/hdlists in the main root
-directory (the first one in DIRS) to search for all media used. Typically you
-use media/main for RPM packages repository.
-For multi-cd, please use media/main or media/foo, etc.
-For one CD or a network/hd volume, please use media/main.
-
-Optionnally, you can modify ``media/media_info/rpmsrate''; this file manages
-the relative importance of the files, and thus their installation or not.
-
-To modify the code of stage2, use "misc/mdkinst_stage2_tool install/stage2" to generate "install/stage2/live".
-When you are done use "misc/mdkinst_stage2_tool install/stage2" again, the "rm -rf install/stage/live".
-See below for information about these files.
-
-********************************************************************************
-* FILES ************************************************************************
-********************************************************************************
-First here are the different things needed :
-
-media/media_info/hdlists
- description of the available install media.
- format is one line for one medium as
- <hdlist_name> <rpms_directory> <description>
- <hdlist_name> should be match regexp /hdlist\S*.cz2?/
- for example (two cd install) you get
- hdlist1.cz Mandrake/RPMS1 Boot CD
- hdlist2.cz Mandrake/RPMS2 Extension CD
-
-media/media_info/hdlist*.cz
- table of rpm's headers, referred by ``hdlists''
- their contents can be listed using ``packdrake -l <hdlist_file>'' or
- or ``parsehdlist <hdlist_file>''.
- ! Need to be remade when media/main changes (with ``gendistrib'') !
-
-media/media_info/depslist.ordered
- for each packages, tell which package it depends on. Also contains the
- size for some (obscure) bloody reasons.
- ! Need to be remade when media/main changes !
- (with ``gendistrib --noclean --distrib .'')
-
-media/media_info/compssUsers
-
-media/media_info/rpmsrate
- ranks and classify packages, so that the installer will know which
- ones to install. format is :
- <intern_group>
- <level> <packages>
- where <intern_group> is a symbolic name used in media/media_info/compssUsers* files,
- and <level> defines importance level as described below :
- 5 must have
- 4 important
- 3 very nice
- 2 nice
- 1 maybe
- by default (for non expert), group selects packages for level 4 (important)
- and 5 (must have). export mode add 3 (very nice) level. other level (below 2)
- can only be selected using individual package selection.
-
-install/stage2/live
- live system used on certain installs. See ``Ramdisk or not'' below for
- more.
-
-install/stage2/mdkinst.clp
- for the compressed loopback of install.
- generated from install/stage2/live tree using misc/mdkinst_stage2_tool
-
-install/stage2/rescue.clp
- rescue ramdisk. create_compressed_fs iso file
- this is the ramdisk loaded when typing rescue on boot prompt.
-
-install/images/*.img
- floppy boot images to use with DrakX. Use:
- - cdrom.img for cdrom install
- - network.img + network_drivers.img for ftp/nfs install (non-pcmcia devices)
- - hd_grub.img for hard-disk install (see http://qa.mandrakesoft.com/hd_grub.cgi)
- - pcmcia.img for pcmcia install (see ``PCMCIA install'' below for more)
-
-install/images/boot.iso
- iso image to burn enabling any install (cdrom/hd/nfs/ftp)
-
- Boot from cdrom:
- - boot.iso : iso image to burn
-
- Boot from hd (esp. usb key):
- - all.img : fat16 image to dd on a partition (hint: sda1)
- - it seems some bioses don't use the code on MBR (sda),
- or at least skip it when it's blanked
- (eg: "dd if=/dev/zero of=/dev/sda bs=1 count=446")
- - some bioses need it. I had some luck using
- dd if=/usr/lib/extipl/aldebaran.bin of=/dev/sda
- (install package extipl first)
-
- Boot from network:
- - all.rdz + vmlinuz via pxe
-
- Boot from floppy:
- - cdrom.img : to install from a cdrom (but not a usb drive)
- - network.img + network_drivers.img : to install from network
- - hd_grub.img : to install from hd
-
- dd for windows: http://uranus.it.swin.edu.au/~jn/linux/rawwrite/dd.htm
-
-********************************************************************************
-* logs *************************************************************************
-********************************************************************************
-During install, a lot of interesting stuff can be found in different places:
-in consoles and in files. To switch to console 2 for example, do Ctrl-Alt-F2
-from the X install.
-- alt-F1: the stdout of the install. Not very interesting stuff
-- alt-F2: simple shell. Quite a lot of commands are available but as they are
-written in perl (for space), they do not handle the very same options as normal.
-After install, you can do ``chroot /mnt'' to see your system just like after
-rebooting. ``rpm -qa'' works for example.
-- alt-F3: a lot of interesting things. Be carefull, some ``ERROR'' messages are
-not interesting.
-- alt-F4: kernel's place. aka the output of dmesg.
-- alt-F7: the graphical install lives there
-
-- command "bug" puts on floppy lots of interesting stuff.
-- /tmp/stage1.log: same as alt-F3 part when stage1 run (e.g. actions
- before graphical install really begins)
-- /tmp/ddebug.log: (nearly the) same as latter alt-F3 part
-- /tmp/syslog: same as alt-F4
-- /mnt/root/drakx/ddebug.log: at the end of each step, DrakX tries to backup
- /tmp/ddebug.log to /mnt/root/drakx. Available only after mounting of /.
-- /mnt/root/drakx/install.log: the log of the installation (or upgrade) of the rpms
-(just like rpm's /mnt/tmp/(install|upgrade).log)
-- /mnt/root/drakx/auto_inst.cfg.pl: a kickstart file generated at the end of each
-step. Can be used in 2 ways: kickstart install or ``defcfg'' install. Hopefully
-you know about kickstart. ``defcfg'' is a way to customize the default values in
-install. For example, French can be the default language with a qwerty keyboard,
-the auto-partitionning partitions can be changed, the default user class can be
-set to developer (!)...
-
-********************************************************************************
-* po translation files *********************************************************
-********************************************************************************
-DrakX uses .po files for its translation. A script takes the different
-strings out of the .pm files. It generates the DrakX.pot file which contains
-all the english strings to translate.
-
-********************************************************************************
-* PCMCIA install ***************************************************************
-********************************************************************************
-If the media you use to install is a pcmcia device, use the pcmcia boot disk.
-
-********************************************************************************
-* modules **********************************************************************
-********************************************************************************
-Modules can be found in at least 2 places:
-- in /modules/modules.mar
-- in /lib/modules.cz<KERNEL_VERSION_RELEASE>
-
-/modules/modules.mar is used in mdk-stage1. It contains only modules
-interesting for one kind of install. For example in an hd install, it
-contains scsi modules. For a network install, it contains network card
-modules. (To create, extract or view files in a ``mar'' archive, please
-use gi/mdk-stage1/mar/mar; this is basically an archive format meant to
-be minimalistic)
-
-/lib/modules.cz<KERNEL_VERSION_RELEASE> contains all modules, it is used
-in stage2.
-
-
-To manually install a module during install, switch to console #2
-and type "modprobe <modulename>". The modprobe program is a perl
-wrapper around /usr/bin/insmod. It uses the dependencies found in
-/modules/modules.dep (stage1).
-
-/usr/bin/insmod is a wrapper around /usr/bin/insmod_. It just extracts the
-module out of /lib/modules.cz in /tmp. Then it calls insmod_.
-
-/usr/bin/insmod_ is the real prog (which you usually find in /sbin/). You need
-to give it the complete path.
-
-********************************************************************************
-* Making screenshots ***********************************************************
-********************************************************************************
-1. easy solution: press "F2"!
-
-2. On a test machine, make a network install, switch to console (ctrl-alt-F2), enter:
-% xhost+
-then, on another computer:
-% DISPLAY=test_machine:0 xwd -root | convert - screenshot.png
-
-********************************************************************************
-* Auto install *****************************************************************
-********************************************************************************
-A powerful auto-install system is available. It allows performing
-an install without any human interaction.
-
-To feed automatic parameters to the stage1 part (the textmode
-part - might not be necessary for you if you plan to do
-cdrom-based auto-installs, but mostly highly needed when doing
-network installs), please refer to ../mdk-stage1/doc/TECH-INFOS.
-
-About the stage2 part (the actual installer, at the time you're
-(usually) running in graphical mode), please refer to the nice
-documentation written by David Eastcott. Either install the
-package "drakx-autoinstall-doc" from contrib, or browse:
-
-http://members.shaw.ca/mandrake/drakx/9.0/HTML/
-
-The previous document will explain you how to setup the contents
-of the auto_inst.cfg file. Note that you have 3 alternatives for
-providing this file:
-- from a floppy disk; use "kickstart=floppy" as kernel parameter,
- as explained in the document
-- from the installation volume itself; put the file in the
- "install" directory of the installation volume; use
- "kickstart" only, or "kickstart=filename" to specify another
- filename than auto_inst.cfg
-- specified by the network; setup your DHCP server to provide the
- "bootfile" parameter, this file will be used as the
- "auto_inst.cfg" file; in this case you also need to provide the
- "netauto" boot parameter
-
-In any case, if the specified file ends with -IP or -IP.pl, IP
-will be substituted by the IP address of the machine, when doing
-a network install. Might be useful so that you can control all
-your auto installs from your server.
-
-********************************************************************************
-* Miscellaneous ****************************************************************
-********************************************************************************
-> o Media access methods: nfs, ftp, http, hd, cdrom
-> o Stages: init, stage1, stage2
-> - What exactly each stage does
-
-init loads stage1
-stage1 loads stage2, from various medium type
-
-stage2 is too big to fit on a floppy, that's why stage1 exists
-
-> - How each stage relates to the various media access methods
-
-stage1 knows only how to access to the media is compiled for. It
-contains only the kernel modules needed for that media. For eg,
-the nfs/ftp/http stage1 (network.img floppy) doesn't contain scsi
-modules nor ide.
-
-> - How one stage terminates and another begins. i.e., How does
-> stage1 find, mount, and launch stage2?
-
- /sbin/init just starts /sbin/stage1, and monitors its
-execution; it's here to cleanly umount the partitions when stage1
-or stage2 dies/finished
-
- /sbin/stage1 takes care of mounting stage2 (in ramdisk if
-necessary) then it execs /usr/bin/runinstall2 (thus, stage2
-replaces stage1, and init then monitors stage2)
-
-> o Text and Graphic mode installers
-> - Architectural overview of each
-
-have a look at gi/docs/object_class.fig
-
diff --git a/docs/README.devel b/docs/README.devel
deleted file mode 100644
index 989946de9..000000000
--- a/docs/README.devel
+++ /dev/null
@@ -1,252 +0,0 @@
-Well here is a little description of how DrakX can be modified or extended.
-Please refer to README file for getting DrakX code source and to known more
-exactly how it works and what it can do.
-
-
-********************************************************************************
-* Execution of DrakX ***********************************************************
-********************************************************************************
-DrakX has originally be written by pixel in perl and C.
-entry point for stage2 is /usr/bin/runinstall2 which is typically a link to
-/usr/bin/install2 which simply load module install2.pm and execute
-install2::main with @ARGV.
-
-install2::main parse command line arguments, prepare installation, find the right
-install_interactive class (take a look at gi/docs/object_class.fig) according to
-command line, memory available and if the interactive chosen is initializing
-correctly, else it will try a less-demanding interactive object.
-Once done, $::o is set to this install & interactive object and main runs the
-various step of install2 defined in $o->{steps}, starting with $o->{steps}{first}
-and iterating with method install_any::getNextStep().
-while running step, it trap any errors that may arise and use perl exception to
-change step.
-
-********************************************************************************
-* DrakX modules descriptions ***************************************************
-********************************************************************************
-Here is a brief description of what each modules of DrakX is doing.
-
-install2: main module of DrakX as described above, main loop execution of DrakX.
-
-install_steps: generic installation module containing steps definition, all steps
- should always be defined here as some methods may be used on automatic mode.
- there is no interactivity available. typically are defined base operation for
- configuring each step according to $o.
-
-install_steps_interactive: generic installation module with generic interative
- methods. typically are found all interactive code of DrakX for each steps.
-
-install_steps_auto_install: implementation installation module without interactive
- methods to match auto_install mode. this is the simplest as almost no method are
- redefined (inherit module install_steps only, compared to other implementation
- modules described below).
-
-install_steps_stdio: implementation installation module with interactive stdio
- methods to match stdio mode. inherit modules install_steps_interactive and
- interactive_stdio.
-
-install_steps_newt: implementation installation module with interactive newt
- methods to match newt mode. inherit modules install_steps_interactive and
- interactive_newt.
-
-install_steps_gtk: implementation installation module with interactive gtk
- methods to match gtk mode. inherit modules install_steps_interactive and
- interactive_gtk.
-
-install_any: contains various methods using generic interactive interface but
- not used by standalone tools.
-
-install_gtk: contains various methods using gtk interface but not used by
- standalone tools.
-
-interactive_stdio: implementation methods for interactivity in stdio mode.
- inherit module interactive.
-
-interactive_newt: implementation methods for interactivity in newt mode.
- inherit module interactive.
-
-interactive_gtk: implementation methods for interactivity in gtk mode.
- inherit module interactive.
-
-my_gtk: basic gtk access methods.
-
-any: contains various methods using generic interactive interface. to compare
- against install_any module as this one is available for standalone tools.
-
-class_discard: simple module that implement every methods undefined to return
- nothing. this trick is used to ensure no undefined method can arise when using
- code that reference interactive method which are not defined.
-
-common: contains very simple and very usefull (common) methods to do various task.
- some methods inspired by functionnal language.
-
-c: contains wrapper to C definition of methods used by DrakX, use of C is necessary
- for C extern libraries interface (rpmlib, ldetect), kernel interface, XFree
- interface.
-
-commands: implement some un*x commands, conflicting name with perl contains
- trailing underscore (_). this module is used by commands perl script that
- determine which command to run according to $0 (this is used this way when DrakX
- is running).
-
-run_program: allow running a program with redirection but without using a shell.
- allow rooted execution.
-
-help: contains all help message displayed by DrakX.
-
-log: log facility methods.
-
-lang: language manipulation methods, get and set sysconfig file, load po.
-
-keyboard: keyboard manipulation methods, get and set sysconfig file, set console
- keyboard mapping.
-
-mouse: mouse manipulation methods, get and set sysconfig file, change mouse.
-
-timezone: time zone manipulation methods, get and set timezone.
-
-services: services manipulation methods, activate or delete services (see
- /etc/rc.d/init.d directories).
-
-detect_devices: manage detection of various class of hardware.
-
-devices: manage device file, create device special according device name.
-
-partition_table: base partition table management methods, it manages
- appriopriate partition_table_XXX object according to what has been read
- as XXX partition table type.
-
-partition_table::bsd: matches a BSD partition table.
-
-partition_table::dos: matches a DOS partition table.
-
-partition_table::emtpy: matches an empty partition table.
-
-partition_table::mac: matches an Apple partition table.
-
-partition_table::raw: generic class for the following partition_table::XXX.
-
-partition_table::sun: matches a Sun Label partition table.
-
-fs: read and write /etc/fstab file, mount and umount, format.
-
-fsedit: manage (modyfy, edit) mount point associated to partition (like editing
- /etc/fstab).
-
-swap: swap management methods, format and mount (activation).
-
-raid: raid (software only) management methods.
-
-lvm: lvm (Logical Volume Manager) management methods.
-
-loopback: loopback management methods, used for lnx4win type installation or using
- a file as a partition.
-
-diskdrake: diskdrake itself, disk graphical (using gtk) manipulation tools.
-
-ftp: ftp mangement methods, used when using ftp install.
-
-http: http management methods, used when using http install.
-
-modparm: kernel modules options management, allow building nice dialog with each
- module parameter available.
-
-modules: kernel modules management, allow loading or unloading (ala modprobe or
- insmod).
-
-printer: printer management methods, read and write both LPR or CUPS configuration.
-
-printerdrake: interactive printer management methods.
-
-network: network management methods, get and set sysconfig file.
-
-netconnect: network configuration wizard.
-
-netconnect_const: network configuration wirard data.
-
-Xconfig: X configuration (monitor + already existing config file) management.
-
-Xconfigurator: X configuration wizard.
-
-Xconfigurator_const: X configuration wizard data.
-
-booloader: bootloader (LILO, GRUB, LOADLIN, SILO) configuration management methods.
-
-pkgs: rpm package and hdlist, depslist management methods, allow selecting or
- unselecting packages, manage rpmsrate file and select group, installation and
- removal methods of rpm file.
-
-crypto: *obsoleted* module to manage crypto site and rpm file.
-
-standalone: standalone only, allow defining a standalone tools.
-
-bootlook: standalone only, interface with DrakConf to configure bootloader options.
-
-drakfirewall: standalone only, interface with DrakConf to configure a tiny firewall.
-
-********************************************************************************
-* DrakX FAT resizer module description *****************************************
-********************************************************************************
-here is a fat resizer written in perl and C used by DrakX (diskdrake) to resize
-FAT16/FAT32 partition. it moves clusters to make sure a shrink can be done on the
-limit of the partition itself, if no cluster need to be moved, only boot sector
-partition limit are modified.
-
-any: various methods to flag cluster, compute min size.
-
-boot_sector: boot sector management methods.
-
-c_rewritten: originally resize_fat was only perl, this contains code section that
- are the most sensible to speed or memory contraints and have been rewritten to C
- using perl extension.
-
-dir_entry: manage directory structure.
-
-directory: traverse directory recursively, needed to move correctly cluster.
-
-fat: manage fat structure.
-
-info_sector: manage info sector.
-
-io: manage I/O on disk (need to take care of big file as partition size may be
- larger than 2GB).
-
-main: main resizer algortihm. if needed allocate new clusters, copy files, copy
- directories. update boot sector info.
-
-********************************************************************************
-* Adding a new step to DrakX ***************************************************
-********************************************************************************
-Say we want to add a question for setting "alawindows" option.
-We put it pretty early in the install, let's say after "Select Installation
-Class".
-
-1. in install2.pm
-
-add
-
- selectAlawindows => [ __("A la windows or not"), 0, 1, '' ],
-
-after
-
- selectInstallClass => [ __("Select installation class"), 1, 1, '' ],
-
-the 0, 1, '' means not "redoable", "skip on error", "don't hide"
-
-2. add your function selectAlawindows in install2.pm
-
-sub selectAlawindows { $o->selectAlawindows }
-
-3. add your function selectAlawindows in install_steps_interactive.pm
-
-sub selectAlawindows {
- my ($o) = @_;
- $o->{alawindows} = $o->ask_yesorno('', _("Throw everything away as windobe does?"), 1);
-}
-
-4. add your function selectAlawindows in install_steps.pm (not needed in that
-case, except for auto_install)
-
-sub selectAlawindows {}
-
-
diff --git a/docs/README.pxe b/docs/README.pxe
deleted file mode 100644
index 2ddd205fe..000000000
--- a/docs/README.pxe
+++ /dev/null
@@ -1,133 +0,0 @@
-Here is a short description to configure a PXE server using dhcpd and tftpd.
-This allows a network boot for your ethernet card conforming to the Interl
-PXE specification.
-
-********************************************************************************
-********** General overview ************
-********************************************************************************
-
-You need a dhcp server and a tftp server on one or two machines to allow the
-network boot. We are not using a PXE server to achieve this as it is not
-mandatory.
-You can install tftp-server and dhcp-server package from the Mandrake
-distribution for example.
-
-On the server machine at 192.168.2.1, you will find a "/etc/dhcpd.conf" sample
-file written by Florin Grad <florin@mandrakesoft.com>, where "mydomain.com" is
-assumed to be your domain name, and 192.168.1.1 a name server. All install are
-done on subnet 192.168.2.0.
-
-All the files that will be downloaded by the tftp daemon are located under
-"/tftpboot" :
- "/tftpboot/pxelinux.0" is a program that is loaded directly by the machine
- where a network boot will be done, this program comes
- from the SYSLINUX package by H. Peter Anvin. (look at
- http://syslinux.zytor.com/pxe.php for more information)
- "/tftpboot/pxelinux.cfg/" is a directory where all configuration file for
- pxelinux.0 will be found, pxelinux.0 will download
- these file by itself. It searches first for a file
- named accordind to the machine IP address in
- hexadecimal, for example for 192.168.2.20, it
- looks for "C0A80214" first, then "C0A8021" and so
- on down to "C0", "C" and "default".
- "/tftpboot/network.rdz" is the standard network initrd for Mandrake installation.
- "/tftpboot/vmlinuz" is the boot kernel for installation.
- "/tftpboot/help.msg" is the message displayed by pxelinux.0, note that currently
- graphical message (as for install using SYSLINUX 1.48 with
- graphic patch by Mandrake) is not supported.
-
-All file "network.rdz", "vmlinuz", "help.msg" can be found by mounting "network.img",
-or the network floppy disk used for install, "pxelinux.cfg" is just an adaptation
-of the file found on the "network.img" called "syslinux.cfg" but without the reference
-to boot.msg (as it is not currently supported).
-
-Update network configuration for your needs and start dhcp server on the machine and
-tftp server and this should work.
-
-********************************************************************************
-* /etc/dhcpd.conf **************************************************************
-********************************************************************************
-ddns-update-style ad-hoc;
-
-authoritative;
-
-option space PXE;
-option PXE.mtftp-ip code 1 = ip-address;
-option PXE.mtftp-cport code 2 = unsigned integer 16;
-option PXE.mtftp-sport code 3 = unsigned integer 16;
-option PXE.mtftp-tmout code 4 = unsigned integer 8;
-option PXE.mtftp-delay code 5 = unsigned integer 8;
-option PXE.discovery-control code 6 = unsigned integer 8;
-option PXE.discovery-mcast-addr code 7 = ip-address;
-
-default-lease-time 28800;
-max-lease-time 86400;
-
-option domain-name "mydomain.com";
-option domain-name-servers 192.168.1.1;
-
-class "PXE" {
- match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
- option vendor-class-identifier "PXEClient";
-
- vendor-option-space PXE;
- option PXE.mtftp-ip 0.0.0.0;
- next-server 192.168.2.1; #tftp server location
-
- filename "pxelinux.0"; # standard TFTP
-
-}
-
-shared-network "mynetwork" {
- subnet 192.168.2.0 netmask 255.255.255.0 {
- option subnet-mask 255.255.255.0;
- option routers 192.168.2.1;
-
- ddns-domainname = "mydomain.com";
-
- pool {
- range 192.168.2.10 192.168.2.20;
- allow members of "PXE";
- }
- }
-}
-********************************************************************************
-* /tftpboot/pxelinux.cfg/default ***********************************************
-********************************************************************************
-default linux
-prompt 1
-timeout 72
-display help.msg
-label linux
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 vga=788
-label vgalo
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 vga=785
-label vgahi
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 vga=791
-label vga16
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 vga16
-label text
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 text
-label patch
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 patch vga=788
-label expert
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 expert vga=788
-label rescue
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz root=/dev/ram3 rescue rw
-label oem
- kernel vmlinuz
- append ramdisk_size=32000 initrd=network.rdz automatic=method:cdrom root=/dev/ram3 rescue oem rw
-********************************************************************************
-* Usefull linkst ***************************************************************
-********************************************************************************
-
-http://syslinux.zytor.com/pxe.php
-http://www.kano.org.uk/projects/pxe/
diff --git a/docs/SHORTCUTS b/docs/SHORTCUTS
deleted file mode 100644
index 93a7133db..000000000
--- a/docs/SHORTCUTS
+++ /dev/null
@@ -1,51 +0,0 @@
-********************************************************************************
-main shortcuts
-
-F1 -> help
-F2 -> take a screenshot
-F11 -> previous step
-F12 -> next (reachable) step
-
-********************************************************************************
-diskdrake
-
-taken directly from diskdrake.pm:
-
- "a" => \&Active,
- "b" => \&Move,
- "c" => \&Create,
- "d" => \&Delete,
- "f" => \&Format,
- "m" => \&Mount_point,
- "M" => \&Mount,
- "n" => \&Create,
- "o" => \&ReadFromFile,
- "s" => \&SaveInFile,
- "q" => \&Exit,
- "r" => \&Resize,
- "t" => \&Type,
- "u" => \&Unmount,
- "w" => \&WritePartitions,
- "W" => \&WriteFstab,
-
-hopefully it is explicit enough :)
-
-********************************************************************************
-list choice
-
-- acceleration a la windows (default): enter a letter and the selection will move to the
-first entry beginning with that letter. If you enter another letter it will try
-to find the entry beginning with the 2 letters you have given. In case it fails
-the starting_word is reset.
-- incremental search a la emacs: searches trough the list
-
-Use control-s to use incremental search and then to search next occurence
-
-********************************************************************************
-in case of complete mouse sh**t
-
-XFree86 provides a way of moving the mouse pointer:
-- first, press Ctrl-Shift-NumLock
-- then move the pointer with the keypad arrows
-- press button is ``0'' (aka Inser)
-- release button is ``.'' (aka Suppr)
diff --git a/docs/TODO b/docs/TODO
deleted file mode 100644
index cb9399f82..000000000
--- a/docs/TODO
+++ /dev/null
@@ -1,515 +0,0 @@
--URGENT---------------------------------------------------------------------------------
-check for fpons/pixel BOTH that resize_fat is clean for current version
-relative to 7.0-2.
-
-heavy testing of diskdrake to avoid corrupting partition table, current version
-should be available to fix bogus partition table, writing enabled only when
-partition is Ok (fixme? allow primary partition inside extended one, but with
-warning on diskdrake startup, made them as warning ?).
-
--features-------------------------------------------------------------------------------
-add rpmdrake in menu
-
-(7.1 or later) clean SCSI CDROM autoboot.
-(done,gc,8.0) stage1 & cdrom: add ability in expert to choose the scsi cdrom drive to use
-
-(7.1)better help for partitioning in newbie
-
-(7.1)Improved network configuration (PPP and/or Ethernet)
-PPPoE install and configuration (SuSE includes it, DHCP-like)
-(7.1)standalone applications for configuration (netdrake, timetool, authentificationconf, soundcard)
-
-----
-(7.2) replace normal with standard (in the installClass's)
-
-(7.2 or later)horizontal sub-steps
-
-(7.2 or later)diskdrake in text mode
-
-ask "do you have SCSI?" before asking "probe PCI or not"
-
-(?) paride in stage1
-(done,gc,8.0) stage1 & network: add ability to choose the network interface to use
-
-(?) msec custom
-
-(?)firewall configuration (instant firewalling?)
-
-(?)widget for displaying fdisk (dindinx)
-add fdisk using the zvt widget (taken in gnome-libs)
-
-(?)help in some configuration files.
-
-ability to add nfs/weird_fs entries in fstab
-
-size of packages in crypto
-
--to test--------------------------------------------------------------------------------
-what's lseek64?
-
-ensure installClass is set to something in auto install.
-
-for axp, swriteboot -f1 if swriteboot failed.
-axp with swap part sigsegv
-
-tree for choosing monitors (buggy?)
-
-what happens if a module fails to insmod (scsi step), in beginner/normal/expert
-
-fstab must be sorted (/usr/local after /usr)
-
-RAID upgrades
-
-add choice clean /tmp or not in expert
-
-kernel chosen by default must be the one according to supermount/secure
-
-bug if ide-scsi, no more hdX, but scd0 (aka sr0)
- (and add alias block-major-11 ide-scsi ?)
-
-check on update for conf.modules and modules.conf !
-
-with /usr, /usr/local and /usr/local/e mount points i get an error at step mounting local filesystems
-
--easy fixes-----------------------------------------------------------------------------
-rpmdrake proposition for cdrom labels
-
-use option nocheck to mount for upgrades
-
--fixes needing thinking-----------------------------------------------------------------
-bug: changing mem= in miscellaneous doesn't modify lilo conf if you backtrack
-
-ask network configuration only if NIC found?
-
-configure DHCP for newbies if ethernet & DHCP card available
-
-xvidtune like screen configuration (see SuSE's yast)
-
-live cdrom for alpha (sparc?)
-
-network boot
-
-get the error when getting/reading .rpm files fail
-better timeout handling for network installs
-
-handle not enough room for update
-(fpons)verify the free space is big enough.
-
-the XFdrake test does not handle the fontset
-
-> Here I go into the printer configuration select 'HP Deskjet 722C Colour',
-> print a test ASCII page, pressing 'No' when prompted to indicate the page did
-> not print OK and then hitting cancel when prompted to choose a printer type
-> again.
-> ask_from_list cancel at /usr/lib/libDrakX/my_gtk.pm line 504.
-
-diskdrake: take from parted mklabel, hide(?)
-
-bug in kde desktop if keeps home but not an upgrade
-
-bug in users: mandrake user is added twice in strange installs
-(mixed of security 0 + ???)
-
-bugs rpmdrake:
-- just after installing a package, switch to `Installed', the package has wrong name
-- refresh the kde desktop after package installation in rpmdrake
-(restart kpanel)
-- rpmdrake and same name packages
-
-urpmi: pb if XXX-devel requires XXX = 1.2.3 and we updgrade XXX-1.2.3
-
-bug in defcfg in with lang=fr_FR, display is buggy
-
-bug keyboard focus: after switch in console at Xconfig step
-
-
-
--to look at--------------------------------------------------------------------------
-adduserdrake to remove/update users
-
-(???)free provider auto configuration facility (to be discussed).
-auto ppp-configure with free provider
-
-(?)on laptop, configure the MMU to use swap not very often
-
-(?)checkboxes in groups based on compssList (and availableSpace?)
-
-(?)see what can be done with nvram (50 bytes to save information)
-
-better wacom support
-
-(fpons)bug: CANON BJC 4X00 do not work with current rhs-printfilters
- (work with magicfilters (debian))
- (should be handled by ghostscript BJC600's driver)
-
-(pix)install text on mem=8M, mem=16M?
-
-(pix)kickstart
-partitioning? raid?
-X configuration and bootloader in kickstart
-
-XFdrake chooseResolutions with ask_from_list do not permit ``Show all''
-
-(?) options in mkfs, progress bar when formatting
-
-(?) when some error occurs, partition must be unset isFormatted
-
--hardware-------------------------------------------------------------------------------
-- with no floppy drive, mkbootdisk step fails badly
-- with bad floppy or write protected, mkbootdisk doesn't say anything
-- try detect_devices::floppies (and how are scsi floppies handled?)
-maybe: do a iotcl FDGETPRM to detect fd1, fd0.
-
-need a simple solution to precise mouse type (syslinux option?)
-
-ELSA Gloria has bad ddc info
-
-token ring is tr0 not eth0
-
-I have Mandrake 6.1 installed and working on a ThinkPad 770.
-To enable the PCMCIA Token ring I have to append the following line to
-/etc/pcmcia/config.opts
-module "ibmtr_cs" opts "mmiobase=0xd2000 srambase=0xd4000"
-
-smp not detected (mhoward@memphisonline.com on cooker, bios=BP6PW)
-
-UDMA66 (ultra66.o for promise)
-
-aha152x needs "insmod aha152x.o aha152x=0x140,11,7"
-
-(obsolete) usb module not removed if no mouse found
-
-(fpons)handle dat drives
-
-hibernation on laptop -> clock not restored
-
-# in 2.3.15 "Silicon Integrated Systems [SiS]|SiS900 10/100 Ethernet" is handled
-
-(?)enable the testing of the mouse type (under X) (wheel)
-possibility to specify the mouse
-
--(?)---------------------------------------------------------------------------------
-(?) handle NT (add entry for it in lilo, put it in fstab)
-
-(?) lilo-0.22-19mdk is buggy with boot=/dev/hde & root=/dev/sda13, it needs
-disk=/dev/hde bios=0x80 & disk=/dev/sda bios=0x81
-
-(?)using setxkb, enable the testing of the keyboard
-
-(?)XFdrake does not handle fbdev
-
-(?) Je viens de faire une installation sur une machine où seul Be était
-installé. Je l'ai supprimé et installé (mode recommandé) Oxygen. Au
-redémarrage, le boot manager de Be apparaît et il est impossible de
-démarrer Linux.
-Pourquoi ne pas installer LILO si on supprime toutes les partitions ?
-
-(?)initrd in bzip2
-
-(?)smaller zsh (or ash in initrd)
-
-(?)is configureNetworkNet needed with dhcp/bootp?
-
-(?)bug in upgrade: install from hda1:/usr/local/blah with hda1:/
-
-(?)mandrake_desk was not installed while kdebase it there on upgrade
-
-(?)when clicking on X configuration, installation of packages is not displayed
-
-(?)maybe remove commented lines in /usr/lib/perl5/... files
-
-(?)timezone using a picture (pb: how to delimit zones)
-when asking GMT or not, display the time for each possibility
-the list is too big for USA
-
-(?)ability to select the type of install when booting of cdrom
-(?)use the ability of el torito to handle 2.88MB or more
-
-(obsolete)lilo-deinstallation in case of lilo auto-installation for beginners
-
-(?)loadFont sucks
-
-(obsolete)trash on the screen when X first starts
-
-(?)remove the gray line surrounding the logo
-
-(?)cleanup /etc/services & /etc/protocols
-
-(?)strange: no scsi of type 'fd', only 'tape'
-
-(?)remount ro before X test.
-
-(?)remove every << and >> (doesn't handle > 32bits)
-
-
--done---------------------------------------------------------------------------------
-(7.1,done,fpons) improve printerdrake to at least have the same functionalities as printtool.
-
-(done,fpons)diskdrake can olverlap partitions (resize lower, resize original typically
-after clear all and auto allocate, try maximal size available).
-
-(done,fpons)rewrite mouseconfig in perl?
-
-(done,pix)kudzu or not in miscellaneous
-
-(done,pix)warn the user if not enough ram to fulfill install
-
-(done,fpons)test after printer config
-
-(done,pix)ask for more than the memory size detected
-
-(done,fpons)modem config
-
-(done,pix)call kudzu in batch to initialize its list
-
-(done,pix)standalone generator of mdkinst_stage2.gz
-
-(done,pix)text install
-
-(done,pix) if u choose mouse usb != found mouse, it fails at X config
-
-(done,pix) diskdrake bug: saved information on floppy contains isMounted.
-
-(done,pix) update devices.c from modules.pm
-
-(done,pix) in lilo.conf, put
-disk=/dev/hdb
- bios=0x80
-
-(done,pix) diskdrake
-auto_partitions
-suggested partition tables must be better foreach installClass
-
-(done,pix) update the list of modules (in update_kernel)
-
-(done,pix) language support: only choose the right locales and upmark the packages requiring it
-
-(done,pix) move security question before isntallation of packages
-
-(done,pix) install ssh
-
-(done,fpons,pix) change the boot message of syslinux (have something different from RedHat)
-
-(done,pix) install_steps.pm: 569 (128M + 3)
-
-(done,pix) bug: mouse freeze just before network configuration (mouse primax)
- (was kudzu)
-
-(done,pix) signal 11 in stage1 nfs kickstart mount failed
-
-(done,pix) ask supermount or not, no supermount with kernel-secure
-
-(done,pix) fix bug in g_auto_install (can't go through all)
-
-(done,pix) bug: install from ciril.fr fails
-
-(done,pix)wizard for partitioning in case of one full vfat
-
-(done,dindinx)app for choosing drakxtools (drakxconf)
-(done,pix)verify being root
-(done,pix)log::l -> initlog
-
-(done,pix)install apmd for laptops (maybe not start apmd though)
-(done,pix)icewm apm (sh icewm_apm)
-(done,pix)kde apm (put Kapm.kdelnk in ~/Desktop/Autostart)
-
-(done,pix)bug in adduserdrake: missing pwconv in md5
-(done,pix)correct the default value of draksec (cp draksec)
-(done,pix)in draksec, (and maybe others) have --expert as default if /etc/sysconfig/system has TYPE=expert
-
-(done,pix)bug in XFdrake in install, cancel in choose Card do not close the window
-
-(done,pix)in XFdrake, testing should not overwrite /etc/X11/XF86Config
-
-(done,pix) hwiz and supermount and eject :(
-
-(done(replaced by msec's),pix) bug: usermod -G urpmi a not done (full install)
-
-(done,pix)perl and .ph's
-
-(done,pix) BUG bootp in network install sigsegv
-
-(done,pix) move the last done stuff before Xconfiguration if possible
-
-(done,pix)draksec is buggy, don't try security >= 4
-
-(done,pix)install apmd on laptops?? (maybe ask emcweb@btinernet.com (see alix))
-
-(done,pix)missing alias ll for root
-
-(done,pix)urpmi.addmedia: |gzip instead of doing it afterwards
-
-(done,pix)locale (and fonts?) buggy in case ramdisk is used
-
-(done,pix)rpmdrake: Installed packages not in hdlist should be there
-
-(done)in ftp install, locale not installed properly
-
-(done,pix)pcmcia.img does not handle hd/cdrom
-
-(done,pix)cyrillic font buggy in DrakX
-
-(done,fred)remove xfs user from kdm
-
-(done,pix)bug with 2 cdrom drives (.kdelnk to there for 1st drive)
-
-(done,pix(works))test ramdisk stage2 and romanian
-
-(done,pix)kfmrc
-
-(done,pix)on laptop, default to 1024x768
-
-(done,pix)mkinitrd and deps
-
-(done,fred(removed the call))XFdrake and mousedrake freeze if lothar launches them
-
-(done,pix)crypto message
-
-(done,pix)test bug with lilo and windows (if not on mbr)
-
-(done,pix)removed icons come back later (kde desktop)
-
-(done,pix(was bug in upgrade reading old config))
- segfault in linuxconf (adapter 1 empty)
- (test with the sysconfig sent)
-
-(done,fpons)bug: Lrosqu'on effectue une mise à jour et que /etc/lilo.conf
-contient la variable « default » positionnée sur autre chose que
-« linux » ou « windows », DrakX est incapable de générer LILO.
-
-(done,fpons)bug: GeForce and hd.img?
-
-(done,fpons)for upgrade in expert, give choice of packages to install
- choosing packages available in upgrade?
-
-(done,pix)rpmdrake: pb uninstalling package with dependencies (rpmdrake is killed?!) (as root too)
-
-(done,pix)noatime option for ext2 fs on laptops (do not wake up the hd)
- Do not update inode access times on this
- file system (e.g, for faster access on the
- news spool to speed up news servers).
-
-(done,pix)kde's icons: 28 horiz and 25 vert grid for big icons
-
-(done,pix)bug: DrakConf don't follow the charset -> add setlocale(LC_ALL, "")
-(done,pix)for ko|ja|zh, gnome-terminal should point to rxvt (-CLE)
-(done,pix)group cdrom in /etc/group (gid=22)
-(done,pix)drakxtools should require urpmi
-(done,pix)bug: gdm unset LANG
-(done,pix) zip with automount -> ppa not autoloaded
-(done,pix)when you set the kde icons to Large, maybe it'd be good to chown the .kderc
-(done,pix)lilo in russian/japaneese is horrible
-(ok,pix)test ide burners
-(ok)test check bad blocks optional for mke2fs
-(done,pix)hd install: no umount is done at the end of install :(
-
-just before release:
-(done,pix)- mandrake_doc-xx, the symlink is no good in /usr/doc/mandrake as
-(done,pix)- crypto dependencies to update
-(done,pix)- update kudzu's pcitable
-(done,pix)- update pcitable for 86C368 if 3.3.6 (and other S3 3D's)
- ("ATI|3D Rage P/M Mobility AGP 2x" -> changed to Server:Mach64)
-
-(done,pix)with 2MB of video ram, chooses 8bpp instead of 16bpp
-
-(done,pix) replace
- { device => "loop7", type => 0x83, size => ((cat_('/dos/lnx4win/size.txt'))[0]*2048), mntpoint => "/", isFormatted => 1, isMounted => 1 },
-by
- { device => "loop7", type => 0x83, size => cat_('/dos/lnx4win/size.txt') * 2048, mntpoint => "/", isFormatted => 1, isMounted => 1 },
-
-(done,fpons)in ftp install, bug with X server install with wu-ftpd 2.6 (see http://www.wu-ftpd.org/broken-clients.html)
-
-(done,pix)ask package installation languages (must be put in RPM_INSTALL_LANG)
-
-(done,pix)bug (by dadou): Si la partition racine est trop petite pour installer le système, un
-message d'erreur apparaît pour signaler le problème (bien) mais on ne
-peut en sortir. La seule solution est de redémarrer.
-
-(obsolete)bug when selecting compssUsers, do not deselect after (if u deselect)
-
-(done,pix)detect ide burners and then add hdX=ide-scsi to kernel cmdline
-
-(done,pix)urpmi: handle many args on cmd-line
-
-(done,pix)fix any // in path to ftp server otherwise windobe server bug :(
-
-(done,pix)diskdrake and auto partitioning, may have the last creation of partition rejected,
-try to figure why?
-
-(done,pix)in chooseResolutions: display the graphic card found
-
-(done,pix)with pcmcia, need ONBOOT=no
-
-(fpons,done) XFree: handle by card options
-eg: SIS6326 needs "no_bitblt" "no_bltimage" and 24bpp instead of 32bpp
-
-(done,pix) Xconfiguration: if "can't open fixed font", relaunch xfs.
-
-(obsolete) pb with dependencies ``missing'': icewm do not require XFree86 and so you can have icewm but no X server
-
-(obsolete) bug in ext2resizing (no sparse superbloc, don't finish properly)
-
-(done,pix,7.1)manage a lot of language (ergonomic issue as it already exists)
-
-(done,pix,7.1)tree for choosing things like timezone, monitors, graphic cards, modules, mice, keyboard? ...
-
-(done,pix,7.1)sound config, although very simple, no dedicated steps and only PCI (or maybe ISA-PNP if time left ?)
-
-(done,pix,7.1)partitioning, keyboard shortcut.
-
-(done,fpons,7.1)index/compress hdlist? (for multi-cd)
-! for multi-cd live is mandatory, small transaction are mandatory too.
-
-(done,pix,7.1?)loopback partitions (even root one)
-
-(done,pix)in ok_cancel, focus has 3 states, should be 2 (ask dindinx)
-
-(done,pix,7.1)Generally improved package selection /ergonmic issue.
-Tree -> CTree, ``all'' branch with all packages
-show the value associated (100->a must, 90->great, 80->nice, ... 10->useless, 0->do not install)
-
-(done,pix)let diskdrake have dos/win partition automatically set up with mount point,
-this will help loopback too.
-
-(done,pix,7.1)grub
-
-(done,pix,7.1)feature missing: cancel installation
-
-(obsolete) bug in diskdrake: can in strange cases create a primary partition at sector #0
-
-(done,pix(partly, protection against bugging))bug in diskdrake:
-in expert: blank, create hda5 at beginning, create hda6 at the end, create hda7
-in the middle, remove the first one. Result hda5 at the end and bug.
-
-(obsolete) have a better time estimation of the remaining time in install packages
-
-(done,dindinx+pix)ask_many_from_list can't keyboard scroll
-
-(done,pix,7.1)individual package selection: double click is tiring...
-
-(done,fpons,7.1) sparc ehancement, avoid V7+ machine target (div and mul not in v7 standard)
-
-(done,fpons,7.1)syslinux in graphical mode to be improved for heavily bogus BIOSes.
-
-(done,pix)missing feature in lilo configuration: can't give hda2 with /boot/vmlinuz if
-already hda1 with /boot/vmlinuz
-
-(done,pix)in 640x480 install box is to small (cuz of 'Cancel' button beeing added)
-
-(done,pix)chooseGroup with individual alone
-
-(done)(7.1) rewrite crypto stuff
-(done)crypto: add a cancel & progress bar while downloading
-(done)error handling (like reading hdlist)
-(done)(7.1)progression bar on crypto.
-
-(done, daouda&pix,7.1, other persons)rescue:
-- small modification for stage1 to get the rescue stage2
-- create a stage2 with many tools (fdisk, bash...)
-the rescue could be on another cd (if multi-cd)
-! care must be taken about modules (if ide is in module...)
-
-(done,7.1)install in 800x600
-- need handling of both 640x480 (mostly for VGA16) and 800x600
-
-(done,NEED 7.1) auto-install for corporate, very important (need consolidation).
diff --git a/docs/advocacy b/docs/advocacy
deleted file mode 100644
index 9e7f00b6b..000000000
--- a/docs/advocacy
+++ /dev/null
@@ -1,87 +0,0 @@
-a little DrakX history:
-
-june 1999:
- i start rewriting redhat's install in perl, partly for the fun of it. I'm
- still working for the army
-
-5 july 1999:
- i start full time job at mandrakesoft. But we don't have many computers and i
- must share the accounting computer with Merieme who is working half-time. No
- test machine (i test on others box, and destroyed Jacques partitions once),
- guess how it slows things down?
-
-august 1999:
- at last computers, even test one
- first DrakX version which can install things, very very rough
-
-september 1999:
- a friend of mine help me 2 weeks on DrakX relayed by Francois
-
-november 1999:
- first released version of DrakX (goldpack). Not really stable yet.
-
-january 2000:
- 7.0 is out, with a DrakX quite stable
-
-july 2000:
- dams starts working on draknet
-
-mid-october -> mid-january 2000:
- gc rewrites the stage1 to win every kb we can
- -> size divided by 7 (!) for cdrom
-
-
-The DrakX team is also doing a lot of other things:
-- drakxtools
-- urpmi, early MandrakeUpdate, early rpmdrake...
-- Mandrake Control Center (new DrakConf)
-- packages maintenance/enhancing (esp. ghostscript, 3D-wrappers, lilo)
-- fixing core packages to make them installable
-- scoring packages, sorting them, flagging them... (compssList, rpmsrate)
-- reading/answering cooker and other MLs
-- helping non-perl gurus :)
-
-That doesn't give much. Me being the one more working on plain DrakX. It gives 2
-people working for 1.5 years. IMO it isn't ``spending an enormous amount of
-resources''.
-And what do you mean by ``compared to the code base size''??? DrakX is currently
-around 28K lines, which is big IMO. You can compare it with linuxconf which is
-170K lines. I think the achievement of DrakX is comparable (a 6 times code size
-win from dumb C++ to expressive perl is normal imo).
-
-
-Also it seems like we don't have the same understanding of the word
-"maintenance".
-DrakX functionalities have evolved *a lot* since the beginning:
-
-- hardware detection, configuration, debugging, work-arounding (multi-kernel installs...)
-- making things prettier
- - more bitmaps
- - "advanced" button
- - syslinux graphical boot
-- making it work with latest versions of software (eg: switching to rpm4)
-- finding out the best way to use rpmlib
-- multi-cd
-- draknet: configuring every piece of stupid protocols
-- diskdrake: raid, loopback, LVM, resizing, checking stupid users entry
-- XFdrake: multi-mice, multi-heads, 3D-accel
-- porting to axp/sparc/ppc (with Stew's help)
-- always more i18n
-- keeping things small
- - .cz format
- - moving to .png
- - getFile on demand from mdkinst for ramdisk installs
-
-[...]
-
-> You don't believe the books ? Count yourself; see the man/months spent
-> in 'pure' developoment in drakX, and the resources put in mantainance
-> of the code base; as far as i know, your count should confirm what the
-> books says; more probabily, you will discover that our numbers are
-> even worse.
-
-if you count enhancements, adding features... in maintenance, i confirm the
-numbers, and find them quite normal.
-
-if you only count bug fixing, the time would be much shorter (around 30%).
-
diff --git a/docs/advocacy-interactive b/docs/advocacy-interactive
deleted file mode 100644
index 99036008e..000000000
--- a/docs/advocacy-interactive
+++ /dev/null
@@ -1,60 +0,0 @@
-
-> > We already have some functional backends, frontends, that works great, and has
-> > not been thrown away since 1 year. We use it during install, post install, mcc
-> > and so.
->
-> But aren't generic enough.
-
-DrakX handles:
-- buttons
-- bool values (checkboxes)
-- ranges
-- entries
-- combo boxes (editable or not)
-- lists / radio boxes
-- tree lists
-- iconlist
-- wait messages
-
-Features:
-- all the entries above can be mixed
-- nice separation between data and displayed data (eg: choose in list of
-objects representing hda/hdb/... but displayed nicely with size...)
-- keyboard handled nicely in GTK frontend
-- callback on events:
- ok pressed => check before the dialog is hidden
- focus changed =>
- * enables pre-setting things based on other entries
- * value checking on the fly
-- simple/advance toggle
-- shadowing of entries
-- tooltips
-- size of windows computed the best possible
-- perl-based
-
-Misfeatures:
-- display not flexible (though i don't know any of the tools we're talking
-about that is flexible => nice)
-- quite a few features are gtk only (simple/advance toggle, shadowing of
-entries, certain events, tooltips).
-- a stdio front-end exist but handle only certain entries. It would need a
-week-work to finish it
-- a http front-end could be done (mod-perl needed)
-- perl-based
-
-The DrakX frontend (called "interactive") could be moved out of DrakX.
-
-eg of use:
-
-<#part type="text/plain" filename="~/bin/perl/imessage" disposition=attachment>
-<#/part>
-
-[...]
-
-> > -provides a lot of frontends
->
-> And you ideally have to provide a frontend by widget set.
-
-nope. The interface is completly standardised, even if it include some
-gtk-like niceties. The *complete* newt (and not just entries and radioboxes
-like bus) binding takes 241 lines.
diff --git a/docs/comparisons b/docs/comparisons
deleted file mode 100644
index f399a9e84..000000000
--- a/docs/comparisons
+++ /dev/null
@@ -1,288 +0,0 @@
-redhat 6.1 (fr?), install 766MB, df 900MB, 35min (asked for all groups except "everything")
-
-upgrade to redhat 6.2, sum 757MB, df 936MB, 20min
-
-mandrake 7.1, install 755MB, df 1091MB, 17min (asked install size 910MB), 515 packages
-
-upgrade to cooker, sum 1000MB, df 1404MB, 35min
-
-
-redhat 7.0b, install 815MB, df 960MB, 18min
-redhat 7.0, install 995MB, df MB, 26min
-
-7.2b, 3.3GB 2h26
-
-
-7.2b: (lang fr)
-compssLevel df rpm time fs df/time
-
-100 64 59 0:59 ext2 500M 1.08
- 90 132 127 1:50 ext2 500M 1.20
- 80 226 218 3:26 ext2 500M 1.10
- 70 449 387 5:52 ext2 1G 1.28
- 60 614 541 8:36 ext2 1G 1.19
- 50 1113 943 17:40 ext2 2G 1.05
- 40 1193 1013 20:39 ext2 2G 0.96
- 30 1262 1072 22:28 ext2 2G 0.94
- 20 1445 1219 27:34 ext2 2G 0.87
- 10 1649 1394 36:58 ext2 2G 0.74
- 0 1943 1638 48:02 ext2 2G 0.67
--10 2957 2519 101:49 ext2 4G 0.48
-
-7.2b: (lang all)
-compssLevel df rpm time fs df/time
-
-100 70 59 1:04 ext2 500M 1.09
- 90 289 281 4:20 ext2 500M 1.11
- 80 373 361 5:41 ext2 500M 1.09
- 70 890 794 13:28 ext2 1G 1.10
-
-
-mem used 7.2cooker
-gtk: runinstall2 13608(data 9572) + FBDev 2984(data 1544)
-newt: runinstall2 9516(data 7528)
-stdio: runinstall2 9160(data 7372)
-
-8.0rc1: (lang fr)
-
-rpmsrate
-
-4 () 175 139 3:25 reiserfs 2G 0.85
-4 all 831 786 18:08 reiserfs 2G 0.76
-
-8.1b
-
-5 () 77 66 1:24 ext2 300M
-
-8.1pre_rc1 rpm df time/rpm rpm/df
-
-6 () 82 66 1:26 ext2 500M 1.05 1.24
-5 () 89 71 1:38 ext2 500M 1.10 1.25
-3 () 94 77 1:46 ext2 500M 1.13 1.22
-5 X 145 127 2:09 ext2 500M 0.89 1.14
-3 X 231 217 3:26 ext2 500M 0.89 1.06
-4 kde 393 316 4:31 ext2 2G 0.69 1.24
-4 kde 393 316 4:41 ext2 2G 0.72 1.24
-4 kde 393 316 4:43 ext2 4G 0.72 1.24
-5 all 367 337 5:02 ext2 500M 0.82 1.09
-4 kde+gnome 454 370 5:50 ext2 4G 0.77 1.23
-4 kde+gnome 454 370 6:10 ext2 4G 0.81 1.23
-4 kde+gnome 454 370 6:24 ext2 4G 0.85 1.23
-5 all 489 406 5:55 ext2 4G 0.73 1.20
-5 all 490 406 5:18 ext2 1G 0.65 1.21
-4 kd+gn+dsk 594 494 7:31 ext2 4G 0.76 1.20
-4 prev+dev 827 696 10:27 ext2 4G 0.76 1.19
-4 all 1100 988 19:34 ext2 1G 1.07 1.11
-3 all 1640 1331 31:33 ext2 2G 1.15 1.23
-3 all 1740 1434 39:38 ext2 4G 1.37 1.21
-2 all 2252 1843 54:40 ext2 4G 1.46 1.22
--1 all 2490 2048 61:02 ext2 4G 1.47 1.22
-
-# perl -alpe '$F[4] =~ /(.*):(.*)/; $r = ($1 * 60 + $2) / $F[2]; s|\S+(\s+\S+)\s*$|sprintf("%.2f", $r) . "$1"|e;'
-# perl -ape '$r = $F[2] / $F[3]; s|\S+\s*$|sprintf "%.2f\n", $r|e;'
-
-9.0beta1
-
-5 () 89 71 1:35 ext2 500M
-3 X 240 231 3:41 ext2 500M
-5 all 306 293 3:36 ext2 500M
-4 all 808 731 6:48 ext2 1G
-4 all 1433 1331 21:44 ext2 2G
-4 X+kde 822 749 6:05 ext2 2G
-4 X+gnome 369 319 5:58 ext2 2G
-
-
-redhat 7.3:
-- do not halt the box when "halt" is used
-- no sysreq
-- kdm has gnome entry whereas gnome is not installed
- => choosing gnome gives a flashing black screen and kdm reruns
-
-- repartition of packages on various CDs is crap
-
-- bootloader: handling of multiple disks is more powerful in redhat, but more
-dangerous (proposed to everyone, but not proposed especially to people having
-a dangerous combinaison)
-- why still asking about lba32!!
-
-* anaconda 7.3 vs 7.3.92
- - skipddc option (locks some machines) ??
- maybe because it's done at the beginning of their install?
-
- - LVM
- - lvm_dialog_gui.py
- - Physical Extent 1MB 2MB 4MB ... 16GB
- (vgcreate -s ${PhysicalExtentSize}k)
- - see lvm_sanity_checks.txt, take them
- - lvm on / (mkinitrd)
- - handle upgrade when lvm on /
- - vgcreate -An (ie --autobackup no) ??
- (also for lvcreate vgchange lvremove
- - see clampPVSize in lvm.py
-
- - RAID
- - Number of spares ??
- - mkraid --dangerous-no-resync ??
-
- - progress bar in ext2 formatting
-
- - ctrl-alt-suppr during install => reboots
-
- - user names: the regexp is [a-zA-Z][^\0-\x20:,\n]* or [A-Za-z][A-Za-z0-9]{0,7} (depending on wether you're in text mode or graphic mode :)
- - check the user name created is not a system one (see systemUsers)
-
- - SMB authentification
- - cloneDrive ?
-
- - edd dropped (was to detect lba32 capability, which was dumb)
-
- - reconfig type of installed removed (was something between install & upgrade)
-
- - ddcprobe code removed -> moved to kudzu
- changes: sigprocmask and movl added around lrmi_vm86
-
- - $ENV{GDK_USE_XFT} = 0
-
-* kudzu 0.99.52 vs 0.99.55
- - blacklisting modules.pcimap e100 and bcm5700
-
-* hwdata 0.14 vs 0.32
- - dropped XFree86 3.3.6 support
-
- - upgradelist: list of (old_module => new_module) for upgrades
- (a simpler way would be to drop entries in modules.conf that concern
- obsolete (and not available anymore) modules, relying on auto-detection to
- add the new one)
-
- - CardMonitorCombos (for laptops)
-
-redhat 8.0:
-
- (legend: + pros - cons / notice)
-
- Install steps difference
- + firewall wizard
- + md5sum check when booting install
- - no upgrade packages installation during install
- - no services configuration (chkconfig)
- - no printer configuration
- - no autologin
- - no real small installation
- - no small packages (groff-for-man, perl-base...)
- / still propose non-MD5 or non-shadow passwords
- / post install tool (firstconfig)
-
- General install behaviour, eye-candiness
- + package selection a la Windows
- + in language selection languages displayed in native language
- + candy timezone selection
- + help uses bold/italic/big-font
- - no one CD install
- / not using fb at install
- / python + gtk2 vs perl + gtk
- / ask many things before doing anything (esp. delayed partitioning, swap not available when selecting packages!(?))
- - more width-hard-coded dialog boxes (harder for translations)
- / use a loopback file from the CD then copied on system
-
- Partitioning
- - no diskdruid after install
- - no partitioning wizard
- - no devfs
- - no xfs (but now has reiserfs/jfs)
- - no loopback crypted fs
- - no file swap (?)
- - no supermount
- + LABELed entries in fstab
- + progress bar while formatting
-
- Bootloader
- + bootloader configuration less awkward
- - no automatic handling of bios ordering with many harddrives
- - propose to manually change bios ordering even with one harddrive
- - LBA32 checkbox
- / defaults to grub
-
- Network
- - awkward question apropos hostname when using DHCP
- - no default choice for netmask/gateway/DNS based on IP
-
- XFree
- - no wacom configuration
- - no graphic card multi-head configuration
- - no ATI tvout configuration
- - no prompt for logout after changing X config
- - VideoRam prompted for everybody
- / no XFree3
- / no Utah GLX
- / load module "fbdevhw" "record", but not "v4l"
- / always load module "glx" and "dri"
-
- Keyboard
- - many non useful keyboard entries (eg: latin0)
- - no way to choose the toggle key to choose between latin/non-latin keyboard
- - no loadkeys done during install for console
-
- Mouse
- - no way to test mouse choice
- - mouse choices include many non-useful choices, badly sorted
- (Intellimouse must be sought in Microsoft whereas it's used by many others)
-
- Multimedia
- - no bttv configuration (including webcams)
- - missing audio modules (alsa, audigy...)
-
-* anaconda 8.0 (rel. 4) vs 8.0.92
- - use vte instead of gnome.zvt
- - add alpha (axp) partitioning code
- - remove label "nofb" and options "devfs=nomount ramdisk_size=9216" from syslinux.cfg
- - edd (ddc probe) moved to kudzu
- - add "-Odir_index" option to ext3 tunefs
- - screenshoting in directory /root/anaconda-screenshots/ instead of using exported display
- - assembler code change in cpuid, smp.c
- - there is some code to read the "raid superblock" (see doGetRaidSuperblock in isys/isys.c)
- - new code for choosing to upgrade or not
- - hack to remove /var/lib/rpm/__db.00[123] (with comment "make sure that the rpmdb doesn't have stale locks :/")
-
-* anaconda 8.0.92 vs 8.0.93 (rel. 0.20030108205243)
- - drop xmode (bring up text mode in a remote xterm)
- - code available to check the ability to do a mkbootdisk
- (check size of vmlinuz + initrd, check size of floppy)
- - drop "-Odir_index" option to ext3 tunefs
- (with comment "add back -Odir_index when htree is safe")
- - waitForLink added to loader2/net.c using added ethtool thingy (get_ethtool_link_status, get_link_status)
- - OS390 fdasd & z/IPL changes
- - for kickstart, new option "--ignoremissing", (there were --ignoredeps and --resolvedeps)
- - /usr/kerberos/lib in LD_LIBRARY_PATH
- - these are symlinks so you cant make them mount points
- otherexcept = ['/var/mail', '/usr/bin/X11', '/usr/lib/X11', '/usr/tmp']
-
- elif self.mountpoint in otherexcept:
- return _("The mount point %s cannot be used. It must "
- "be a symbolic link for proper system "
- "operation. Please select a different "
- "mount point.") % (self.mountpoint,)
-
-
-* hwdata 0.47 (redhat 8.0) vs 0.62 (redhat 8.1 beta1 phoebe)
- - pcitable & upgradelist
- - replace eepro100 with e100
- - switch 0x1106 0x3059 "via82cxxx_audio" to "unknown"
- - Cards
- - remove most swcursor with comment:
- # mharris - Nov 23, 2002 - Commented out the swcursor option, if it is still
- # needed, then lets disable it right in the driver completely, or possibly
- # fix it.
- - using driver "nv" for GeForce4 and Quadro4 with comment:
- # mharris - Nov 23, 2002 - enabling "nv" driver for GeForce 4 and Quadro 4 as
- # CVS XFree86 support them now in 4.2.99.2
- - special options "externDisp" and "internDisp" for NeoMagic cards
- together with CHIPSET
-
-* kudzu 0.99.69 (redhat 8.0) vs 0.99.83 (redhat 8.1 beta1 phoebe)
- - don't read eepro100 entries from the pcitable
- - handle compressed modules
- - many changes in PS/2 mouse detection, and handle "intellips/2" mouse
- - changes in PnP serial modem detection
- - use "udf,iso9660" option for cdrom entry in fstab
- (note that comma separated choice of filesystems *is* allowed, though not
- documented in fstab(5))
diff --git a/docs/diskdrake.TODO b/docs/diskdrake.TODO
deleted file mode 100644
index e6f2da038..000000000
--- a/docs/diskdrake.TODO
+++ /dev/null
@@ -1,23 +0,0 @@
-- test what windows can handle (the number of partitions)
-- better keyboard focus handling
-- end sector in Create
-- add warnings for scsi drives if you create more than sdx15
-- the information put in save/restore partitions must be cleaned
-(remove mounted/formatted/..., also remove the Data::Dumper dependency)
-- test, test, test
-- do not allow swap partitions above 2Gigs
-- wanting the first partition to be extended is not used
-- maybe warn if a mounted partition change of dev number
-- text version
-- better error handling (what to do if we find a bad partition table?)
-- display the information about the correspondance color2type
-- handle the partition labels (missing information here)
-- add comments in the code
-- add documentation
-- handle the `luke' case (main extended partition must be extended)
-- ability to batch actions (like chained moves)
-- add a verification after fdiskReadPartitionTable that the start_cyl,
-end_cyl... do correspond to start and start+size. For the moment, this
-information is just discarded :(
-This verif can't be done in fdiskReadPartitionTable as start is relative in
-extended partitions
diff --git a/docs/drakfont/Makefile b/docs/drakfont/Makefile
deleted file mode 100644
index b70b4a0c8..000000000
--- a/docs/drakfont/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-#
-# Project : Projet Libre
-# file : pki.tex
-# Date : Thu Jun 21 19:26:19 CEST 2001
-# (o- Id : DUPONT Sebastien
-# /\ mail : <dupont_s@epita.fr>
-# Y_/___________________________________________
-#
-
-RM = @rm -f
-
-CD = @cd
-
-ECHO = @echo
-
-PRINTF = @echo -n
-
-FILE = drakfont
-
-DVI = @dvips -j0 -Pcmz -Pamz -o
-
-PS = @ps2pdf
-
-LATEX = @latex
-
-normal :
- $(ECHO) '/*--LATEX--*/'
- $(LATEX) $(FILE).tex
-
-all :
- $(ECHO) '/*----------latex -> dvi -> ps -> pdf------------'
- $(ECHO) '/*--LATEX--*/'
- $(LATEX) $(FILE).tex
- $(ECHO) '/*--DVI -> PS--*/'
- $(DVI) $(FILE).ps $(FILE).dvi
- $(ECHO) '/*--PS -> PDF--*/'
- $(PS) $(FILE).ps
- $(ECHO) '/*--That s all--*/'
-
-
-ps : normal
- $(ECHO) '/*--DVI -> PS--*/'
- $(DVI) $(FILE).ps $(FILE).dvi
- $(ECHO) '/*--That s all--*/'
-
-pdf : ps
- $(ECHO) '/*--PS -> PDF--*/'
- $(PS) $(FILE).ps
- $(ECHO) '/*--That s all--*/'
-
-clean :
- $(RM) $(FILE).toc $(FILE).log $(FILE).aux *~
-
-fclean :
- make clean
- $(RM) $(FILE).ps $(FILE).pdf $(FILE).dvi
diff --git a/docs/drakfont/dia_srcs/drakfont.dia b/docs/drakfont/dia_srcs/drakfont.dia
deleted file mode 100644
index c4502a12e..000000000
--- a/docs/drakfont/dia_srcs/drakfont.dia
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/dia_srcs/drakfont_install.dia b/docs/drakfont/dia_srcs/drakfont_install.dia
deleted file mode 100644
index 737c19b9f..000000000
--- a/docs/drakfont/dia_srcs/drakfont_install.dia
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/dia_srcs/drakfont_uninstall.dia b/docs/drakfont/dia_srcs/drakfont_uninstall.dia
deleted file mode 100644
index c06f92dd6..000000000
--- a/docs/drakfont/dia_srcs/drakfont_uninstall.dia
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/drakfont.jpg b/docs/drakfont/drakfont.jpg
deleted file mode 100644
index 898dfe440..000000000
--- a/docs/drakfont/drakfont.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/drakfont.tex b/docs/drakfont/drakfont.tex
deleted file mode 100644
index bbc936e5b..000000000
--- a/docs/drakfont/drakfont.tex
+++ /dev/null
@@ -1,152 +0,0 @@
-%\documentclass[pdftex]{article} \usepackage{hyperref} .
-%\documentclass[pdftex,onecolumn,11pt,oneside]{article}
-\documentclass[onecolumn,11pt,oneside]{article}%seminar}
-%\usepackage[pdftex]{hyperref}
-\usepackage{isolatin1}
-%\ifx\pdfoutput\undefined
-
-\usepackage[dvips]{graphicx}
-%\else
-%\usepackage[pdftex]{graphicx}
-%\usepackage[pdftex]{hyperref}
-%\usepackage{type1cm}
-%\fi
-%\pdfoutput=1
-\usepackage{color,graphicx,shortvrb,epsfig,verbatim,tabularx}
-\usepackage{url}
-\usepackage{hyperref}
-\urlstyle{sf}
-\usepackage{fancyheadings}
-\usepackage{program}
-\usepackage{ulem}
-\usepackage{amsfonts}
-\usepackage{xspace}
-\usepackage[english,francais]{babel}
-\pagestyle{fancy}
-\newcommand{\trtitle}{Drakfont\\ fonts importation for mandrake linux}
-\DeclareGraphicsRule{.ps}{eps}{.ps}{}
-\DeclareGraphicsExtensions{.ps}
-\renewcommand\star{{\ttfamily*}}
-\let\package\textsf
-\newlength{\gxlen}
-\settowidth{\gxlen}{\package{graphicx}: }
-\newcommand\gs{\makebox[\gxlen][l]{\package{graphics}:}}
-\newcommand\gx{\makebox[\gxlen][l]{\package{graphicx}:}}
-\MakeShortVerb{\|}
-\begin{document}
-\title{$Drakfont$ fonts importation for mandrake linux}
-
-\begin{figure}%[ht]
-\begin{center}
-%\caption{Exemple d'image}
-\mbox{\epsfig{file=mandrake.ps}}\\ %,height=1in,width=2in}}\\
-%\mbox{\epsfig{file=carte_.ps,height=1in,width=2in}}
-\end{center}
-\end{figure}
-%\begin{figure}
-%\begin{center}
-
-%\end{center}
-%\end{figure}
-\author{Dupont Sebastien \\ sdupont@mandrakesoft.com}
-\date{05/10/2001}
-\pagestyle{myheadings}
-\markright{\scriptsize \trtitle}
-\title{\bf \trtitle}
-\maketitle
-\section{drakfont Future Overview}
-
-\paragraph{Fonts import :\\}
-\begin{itemize}
-\item pfb ( Adobe Type 1 binary )
-\item pfa ( Adobe Type 1 ASCII )
-\item ttf ( True-Type )
-\item pcf.gz
-\item Speedo
-\item pfa ( Adobe Type 1 ASCII )
-\item ttf ( True-Type )
-\item and Bitmap (PCF, BDF, and SNF)
-\end{itemize}
-
-
-\paragraph{Features}
-\begin{itemize}
-\item Install fonts from any directory
-\item Get windows fonts on any vfat partitions
-\item UN-installation of any fonts (even if not installed through drakfont)
-\end{itemize}
-
-
-\paragraph{Support}
-\begin{itemize}
-\item Xfs
-\item ghostscript \& printer
-\item Staroffice \& printer
-\item abiword
-\item Koffice, Gnumeric, ... studying
-\item all fonts supported by printer
-\item ( aliases by RENDER in Xfree86 .... -> later )
-\end{itemize}
-
-
-\section{Window interface:}
-\begin{itemize}
-\item
-\item Fontselectiondialog widget
-\item Command buttons under Fontselectiondialog (like the actual frontend).
-\item Commands buttons:
-\item import from windows partition.
-\item import from all fat32 partitions and look for winnt/windows/font
-\item and import all (delete doublon) but don't import if already exist.
-\item import from directory
-\item look for if it exist before for each font and not delete the original.
-\item (replace all, no, none)
-\item expert options:
-\item ask the directory, and look for if it exist before
-\item if it exist ask: (replace all, no, none)
-\item uninstall with list per font type
-\item Expert additional switch
-\item option support: ghostscript, Staroffice, etc...
-\item check-button. (by default all check)
-\item Printer Application Fonts Support...
-\item check-button. (by default all check)
-\end{itemize}
-
-\section{Command line}
-\paragraph{Font Importation and monitoring application\\}
-\-\-windows\_import : import from all available windows partitions. \\
-\-\-strong : strong verification of font.\\
-\-\-install : accept any font file and any directory.\\
-\-\-uninstall : uninstall any font or any directory of font.\\
-\-\-replace : replace all font if already exist\\
-\-\-application : 0 none application.\\
- : 1 all application available supported.\\
- : name\_of\_application" like staroffice for only this one.\\
-
-\section{Graphics}
-
-to visualize the conceptual graphics please see:\\
-drakfont.jpg\\
-drakfont\_install\.jpg\\
-\& drakfont\_uninstall.jpg\\
-
-
-
-%\begin{figure}%[ht]
-%\begin{center}
-%\caption{Exemple d'image}
-%\mbox{\epsfig{file=drakfont_install.ps}}\\ %,height=1in,width=2in}}\\
-%\mbox{\epsfig{file=carte_.ps,height=1in,width=2in}}
-%\end{center}
-%\end{figure}
-
-
-%\begin{figure}%[ht]
-%\begin{center}
-%\caption{Exemple d'image}
-%\mbox{\epsfig{file=drakfont_uninstall.eps}}\\ %,height=1in,width=2in}}\\
-%\mbox{\epsfig{file=carte_.ps,height=1in,width=2in}}
-%\end{center}
-%\end{figure}
-
-\end{document}
diff --git a/docs/drakfont/drakfont_install.jpg b/docs/drakfont/drakfont_install.jpg
deleted file mode 100644
index 795a5a711..000000000
--- a/docs/drakfont/drakfont_install.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/drakfont_uninstall.jpg b/docs/drakfont/drakfont_uninstall.jpg
deleted file mode 100644
index 711f28e77..000000000
--- a/docs/drakfont/drakfont_uninstall.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/drakfont/mandrake.ps b/docs/drakfont/mandrake.ps
deleted file mode 100644
index 1af9d5bb4..000000000
--- a/docs/drakfont/mandrake.ps
+++ /dev/null
@@ -1,534 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/seb/drakfont/mandrake.ps
-%%CreationDate: Fri Oct 5 18:28:29 2001
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 424 84
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 69.000000 translate
-409.000000 -69.000000 scale
-% Image geometry
-409 69 8
-% Transformation matrix
-[ 409 0 0 69 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 409 string def
-/gstr 409 string def
-/bstr 409 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 29637 ASCII Bytes
-colorimage
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-bl7e@q"4E6s+13Ds*t~>
-bl7e@m,@els+13Ds*t~>
-bl7e@T5=@Ts+13Ds*t~>
-c2RqDnG2D<JcC<$U&TW~>
-c2RqDl/9_PJcC<$U&TW~>
-c2RqD]71%QJcC<$U&TW~>
-cMn+JnG;n/i;S<-JcDJEJ,~>
-cMn+JmbuTmh#;m)JcDJEJ,~>
-cMn+Jie^A<a8UYiJcDJEJ,~>
-cMn+DnbMk)f)($uJcDJEJ,~>
-cMn+DjkIhQchi:nJcDJEJ,~>
-cMn+DST5n_V>GiDJcDJEJ,~>
-ci47Jn+l_KeBdl?s+13Es*t~>
-ci47Jkhjh)WP\C\s+13Es*t~>
-ci47J^4K&h%!hSus+13Es*t~>
-d/OCNnbW%Rn_2+VJcC<$UAo`~>
-d/OCNn);p@^TP0>JcC<$UAo`~>
-d/OCNj+q1n%LcV6JcC<$UAo`~>
-d/OCHnG2eMo&%LUJcC<$UAo`~>
-d/OCHjkS+u^p135JcC<$UAo`~>
-d/OCHTl`:/%Lk8_JcC<$UAo`~>
-lMgqbp\sLY$2s;fp\"1NjN$P:s+13Es*t~>
-lMgqbp\sLY$2s,He&K8A[BAeGs+13Es*t~>
-lMgqbq>T^[$2r)%;B-/V%3+S`s+13Es*t~>
-li.(dk/mMerri>mqY9a_oE+4!k(3P`s.]OD~>
-li.(dk/mMersJbqin;Gk_SWgdk(3P`s.]OD~>
-li.(dmFhC'rsJbkMeO[R%M'!Pk(3P`s.]OD~>
-m/I4fjeV8=m/I1an+l\UoE4C(gAQU&JcDMFJ,~>
-m/I4fje_>>m/I4bjk\5#rk\cKUso9ns+13Fs*t~>
-m/I4flbMl_m/IIiWH^N?%Ls!Y%&s2Vs+13Fs*t~>
-mJd@ggl^4WrU'UfrU9RVp&4Lbm*a;WJcC<$U]5i~>
-mJd@gglg:XrU'UfrTiCk`r3aV];N^FJcC<$U]5i~>
-mJd@gjg<_0rU'UfrR6L%+8lZO%1J$fJcC<$U]5i~>
-mf*Iik)["5qX+:crq-'^p&+Famb#_TJcC<$U]5i~>
-mf*Iik)d(6qX+:drq#.'b/=1p"21eLoR[$ns.fUE~>
-mf*IilEnChqX+:drp>Y\/e\'l!Xrf8JcC<$U]5i~>
-n,F"!nYD2sp&>!hp%nOYp@\.TrV6BpqX41Qqt(!\hT52;s+13Fs*t~>
-n,F"!nYM8tp&>!hm-F!$l0Rm2rV6BqqW?VZ`;IIS^p(69JcC<$U]5i~>
-n,F"!o>7BVp&>!h[uQH0T!cSkrV6BqqQkK3(&JIB%70K7s+13Fs*t~>
-n,FI)^NR3SrVuomhY$U:q"X[\qY0^VpA+[ds82B`p\"CT!oq>fJcC<$U]5i~>
-n,FI)^j!BUrVuomg;hIdf%Jg6kNM-qn+?PWs82-AeAqF&!jo2uJcC<$U]5i~>
-n,FI)d@e5>rVuom_BM'9>A8)$G_hZm`nC%as80]m<Zq5K!Y$ODJcC<$U]5i~>
-nG`[jf8YC8q>UBuqVJd?m.L&NpAajeq#1!kp%eIZp%e4]kKW1@s+13Fs*t~>
-nG`[jf8YC8q>UC0qVJQ`]>_n8c-Xnhg"Y?>kiqElf#bi+_?.6OkCNYas.fUE~>
-nG`[jhm8^'q>UC0qVI;C%2gQM4%)eE@rZaAKVFlk?7QZc%Kd4N"m:I:JcDMFJ,~>
-nc&gmm]UN9m/I"a#6+8C]\r,HrUg-_rq??c!VZ3]oE4O8iVnE.JcDPGJ,~>
-nc&gmm]UQ:m/I"a(&mjRYd1mV_SX4/`lQ?JcdC7lcH*p!_?7KSh>W!*JcDPGJ,~>
-nc&gmnApp+m/I"a(&mjRCCL^_%M'-d*@NX&6:t6X5:%$?%Km:P%*&9ts+13Gs*t~>
-nc&dibD(8oq>C6srp\(Nj6cI(oE4^PjnOE,JcDPGJ,~>
-nc&dibD(;pq>C6srp\(:[(O6N_?7]o`5D>d"2VXrpjrHrs.o[F~>
-nc&dif<14fq>C6qrp\&r%J^M6%g3L](D78P%KT)pJcC<$V#Pr~>
-o)Apnm'1H"lMg\\#6!f&dH0iglLY2OnG*"XrsA\uq"XjgqtB^[JcC<$\c70~>
-o)ApnmBLT$lMg\\#6!f&\@0,fm(rqD`5^X+rqQL"rpo1Err;l[jSON.JcE:\J,~>
-o)Apnm`LrrlMg\\"T@T$+q<fI"VDOmC#f3frsA\WEU3W(qji66JcC<$\c70~>
-o)Amjb*?Map%eUlqr>9CjmVg,oEY'_p\"4Rr;QWo$2s&VmeZnNp>>Uqs+13\s*t~>
-o)Amjb*?Pbp%eUlqr>2i[_BTE_?e'"cIM%Anb`=`rsAYegtV](lHe5ZJcC<$\c70~>
-o)Amjf"$U`p%eUjqr=df%I4K1%hp3M>Ci]roD\[f$2s$mBDVSN(rc6#s+13\s*t~>
-o)Am`[;pHKrV6BrptE13kO@d/(%q:pq"X[Yp%\Lcs8M65p?qSEe(skOs+13\s*t~>
-o)Am`[W6TMrV6BrptE!V\A.@H(;n2:dFR%+k3DR:s8W)^b0fDEf>-5=JcC<$\c70~>
-o)Am`bFssSrV6BqptC`;%I4K?%hp-C8mQ7RKs0)+s8W)^Q8?5H>YX&NJcC<$\c70~>
-oD]!me>?o:lhCD`rq+[OhWjXqo`+Uap(-omq"aUUq=E"uo]5Yem/DS9JcE:\J,~>
-oD]!meYd,>lhCD`rq+[DZ+@a9_A'o,aNMlWf%T6KmIg(uccXqbaR&nWs+13\s*t~>
-oD]!mgr,DGlhCD_rq+ZT%1VS4'b:op,r7b[?>XPE\DZu+?7Vct]^5WKs+13\s*t~>
-oD]!f^6W?3nb2terp\+KipH=!o`+Uap($ilq"O+(guI)Go(DbUrdk*#s1JA^~>
-oD]!f^6`H5nb2terp\+:Zb4-;_@si+aNVuZf\>QHa2#=.eDfTZqu20HJcEC_J,~>
-oD]!fcFJk?nb2tcrp\*'%H\-7%h]a,2F:;PDg@Us1*L+oT;9Krrdk*#s1JA^~>
-oD]!]YCC#np\"OjrThAHk3qp%o_nFnp@?/4i8NJDeEQYKc-"5QrlP;YVY^&e!rCEmrQ58a`3ciI
-d/OCNp#k&U\;/o>h#@ZZp#k&V\rFr4iVs>cn`8KObf\)MdFe!gir92]puU2Tbl5cb^&\&$s*t~>
-oD]!]YCC#np\"OjrThA1\%]]>_A'o-aN2ZXdCHg.]=keag\&b7bKS30b6#MWqY1!kqUNslb6?&0
-`3ciId/OCNp#k&U\VT)@h#@ZZp#k&V]8k/7iVs>cn`8KObfe/NdFn'hir9DcpuU2Tbfe2P^V9T9
-s*t~>
-oD]!]aJt!3p\"OhrTh?P%H@p+%hp!3-mB]:J%7BArWNL]p"S9UgY;_]!n>*`p\t<kinaRe"PMAM
-b59Qc#laScjPJ7fjo4'8#laScjPS@lgAU"1%0#nbjk\\Fg=b?Co`!kM"oe>aj5&JhgAfS$qjmb;~>
-o`#-pfr/arg&(FA"oIDohWO@goFpf^hTE^[d+I+3\@B)hioYiBMk'a<!fM0fq#:d$hS6+`T:M*e
-C1Mkcdf0[Qg;:S9ZD;SVjSds8$N8Ym]Xb>FH>(\%jSoMbptsB7]<eK2rgs@hW2mGdrT4%`rTDG@
-ZDXGrT)saenX]]1~>
-o`#-pfr/asg&(FA"oIDmZ+.O/_@s_sYb@bpYJAE'\@B)hioYlDMk'a<!fM3gq#:d$hS?1aT:M*e
-C1Mnddf0[Qg;:V:ZD;SWjSds8$N8Ym]XkDGH>1b&jSoMbptsE9]<eK2rgs@hW3!MerT4%`rTDG@
-ZDXGrT)safnX]]1~>
-o`#-phSl(>g&(FA"T.;a%1V;,rs]MI#nAC@F#gb?\]3XkXJrM=rP&E>SaH4P%/o8;a1oC'[\K.H
-S+>#-$N9&:eC)RXUQ4F6hZ!r]j3uH'bep?>eGA8+#laY_hUg0!`PMPg"iA7"cKP5grs&Ggh:9`f
-_>_1NY+"mOs*t~>
-o`#-k`1LULi;W?J"o6r`jR)O$oH!MhhT2q%V6%_Zamms?io]goWKMCCDf9T7A7i^Wq>Uls_PM^#
-EG/W[H],6!df0[K[s3%5GACN#iVq^6$MV#aF)?#9>[lFajo6"lim#-6Ob7puCMe$3G'nq%P-t2M
-rseqc_lA`EF(f,p@pNR+qYpZso@s5Bs*t~>
-o`#-k`1U[Ni;W?J"o6r[[Cj?=_B$G(Yb-l2RA-dea2uK^io]goWfhOEDf9T7A7i^Wq>Uls_PM^#
-EG/W[H]5<"df0[K[s<.7GACN$iVq^6$MV&bFDc2;>[uLbjo6"lim#-6Ob7puCMe$3G'nq%PICAO
-rseqd_lA`EF(f,p@pNU,qYpZso@s5Bs*t~>
-o`#-kd(bp"i;W?J"8U`5%HJ$!%2'$U$Vu+1*4lc6i8Wnik-LYHT`1PdTU(S\rV?I%p=$pYT:h[3
-H]"0#n'_4CpW&ntT;8$8L>i-grsJMAUn"!NSr/*QqrRhkr9<%c`3ueET:MRGTqnTfZa\-TkPl"i
-kL[_[W1f]IQ'I8]k5,)[rq>LQW;hA~>
-o`#*d[?tH4iq!*Orq+U^kO]kem,#gfX.uc3c/-+Vg@4Y3s8V`JaII`jBOk^aA?5P&rseqYZA*4-
-An"tc][5[4df0XJgUa)+DIZpqkM?.FpYNZaKQL^.E9$r[rtYF__PW-/@pN2?>?b?@A7fLoF`b+j
-kl1kZ]qg0nA7#49!`N1[rVm*#m+]aaPkD!TJ,~>
-o`#*d[?tH5iq!*Qrq+UM_o(`U+2GLmT8\SmWkcK^ZHL,*n,E@eo\RZZIq35'An#;Pq>1+#rR\?0
-D.R<g>][R)iqLn$$2<2cTmU`f>^5GfrsJMW^Sup0@p<p4roX4qqq/c_LiHp1=B\p5>[_/TBQ/*:
-\,>Ii%J7B1J8/V$='/O*;cr&Xrs&Gggrugaor.n@~>
-o`#*daL[Uhiq!*Qrq+T=&eX=;rs]qU$49S'^m5IRb>Su4rr<#jhT2duQC+#+P`30KqYq$'hor9p
-R$j.jL:kmmpX9'JpY39ST:_@%Np#6u$MWDlWLorNKS\[fk5Q1nimu&PTTkChKS>2>Od;B(T;/.&
-r94.io[1OUS<f1eIXHKcG2iK##6"&QgW-\oW;hA~>
-o`#*_Y**4%ipm$Orp7u)p$;5no'G5SYcFP#`80S<da$mpg!]Zqs8DcYY`!(2BkCmdRIp@U%J7;r
-C2Rg"@9\fPp%n[9rsAYqkKfKE@U+lYh>[f[o]t&"L1=JFlK8*_qpN'DH"C;]<*!I??<^cDA7fIh
-AT[29lMhb#f;aXCARA><Dg6PQL$&F8rp%YE[[qAdm&9r7~>
-o`#*_Y**4&ipm$Orp7_N`p:Jb^q6hCN/3h#`80S%YKl1M]Wh22s8DcYY`!(3BkCmdRIp@U%J7;r
-C2Rg"@9eoRp%n[9rsAYqkKfNF@U+lYh>[f[o]t&#L1=JFlK8*_qpW-EH"C;]<**RB?X-rFA7fIh
-AT[29lMh1hf;aXCARA><DuP"jL?AO9rp%YE[[qAem&9r7~>
-o`#*__mY_]ipm$Orp619+6j@9%3>la$;[D7h<&&XcK!"r-M[W@rV>`pZBLK>R$E]4o_SRso[(%8
-R%0S,JXtfnqYnqC$2sJYcaTp<K:M;arsAYrld`SMP_,=gk5Q7phU/s3R#QQ;FaJO^I"dTHR$jJ2
-Rd9t<rsAY\`iu#$O*Z#%reLuJk5YJ\mb?C>^7Lk]W;hA~>
-o`#*ZUkW8cipcsMp"fB8mIV+`m,#gfX.uc7h=(70ftQD>j2T+,rVm5nY_6SBEG/onK^em=$iSSQ
-AoDX/BO>#Io$.1>roKu.@9o]!gA_B@WJ4hdV"!RI)#`C(R!*(K;HJLGZF-p8L1t./AnPUc]DUso
-)>M+?H=pbn?DG-N`Pp?ss8VuHXd"9O@X..9s*t~>
-o`#*ZV1rAeipcsMp"%[8mD9RQ]<IodLmP-[h=(70^o$&bj1r.lrVm5nZ%Q\DEG/onK^em=$iSSQ
-AoDX/BO>&Jo$.1>roKu.@:#c"gA_B@WeOqfV"!RI)#`C)R!*(K;HJLGZF-p8LM:70AnPUd]_q'p
-)>M+@H=pbn?DG-N`Pp?ss8VuHXd"9O@X74:s*t~>
-o`#*Z_lo/TipcsMorV=Eljj%)&ISpQ:SPe`n,)Q69AoU*Sm:^^rsJ57Xc8[=R[9,,nGE4nrS5>X
-Od;]1Ne"S/c2S%Jjhn-]K!+Xtrs%],YE=C=nE9fgrT2G=UmR0gG)iE)[BQToO-H$"R?WcQr9F;"
-ps6[OR?rbYV7X[b`ROGXs81Tm\#Gs[PNf%GJ,~>
-o`#*USpk'WipcsMo^2GHmdq7aj3"U,UTDDin,*+anBoYPs7bI*nbrIpl)/<.WHrAm@s759rsSJ2
-I:ACfH"^Ghc1oQ`#Q</JHsU*ip"TKOrR.Hg?!Y;?kPlCl^8$'h@ola#aP>qAk2+1GFD,9!@UY`"
-lMhao^RTFYA7Bc1lgXH7o_\[gps#U\B4YY(l)=W4~>
-o`#*UT710YipcsMo\e<Am_T^R[@rP8Q`A![n,*+anBoYPs7bI*nbrIpl)8B/WI&Gn@s@;:rsSJ2
-I:JIhH"^Ghc1oQ`#Q</JHsU-jp"TKOrR7Qi?!Y>@kPlCl^8$'h@ola$aP>qAk2+1HF_GB"@UYc#
-lMhao^moOZA7Bf2lgXH7o_\[gps#U\B4YY)l)=W4~>
-o`#*U^T!9KipcsMoS[$&m1'g>$OR5:U;YmVqu6WbdF%F_pYacqrVm5h`LVjeVOa*;PjJ;I$hVcD
-Ln(08RYu[Aps&gDrS#,eNe"q<g]%NWg;9eIJ&_3FrttFU_PirgJp*g.gudh_hT2LdS!f\/M6-I:
-ru(IQ]q_!^O-@uWnF?&@qu?]ke&%uMR$+!(W;hA~>
-o`#-TSpXpVgA^[C"T@]_p\""I$M!,kX.uc7h=(7?rr39#nF?DUrqQ0`rr3B*gRr(l_2W\Q@;"d$
-rs\kUW+'bVOa^kHB&<L2rs/AEVfl9Mg%sJ'#Pc0+F'E),qrn%trnXZ6D.[6aLXGVgrr<#sm`B`\
->$>!/P4JSO$NB_ai7ci8j6?C=rVn,AnE]E#]pj(TASZtFkNV-or9Wb8k/F0@AnGb*cfjZYk3)`H
-s*t~>
-o`#-TT6t$XgA^[C"T@N>dDbRk$Ga!9LmP-[h=(7?rr39#nF?DUrqQ0`rr3B*gS&.n_2`bR@;+j%
-rs\kUW+'eWP($tIBAWU3rs/AEVfl9Ng%sJ'#Pc0,F'E,-qrn%trnX]7D.[6bLXGVgrr<#sm`Bc]
->$>!/P4JSO$NB_ai7cl:j6?C=rVn,AnE]E#]ps.UASd(HkN_3pr9`h9k/F3AAnGb*cfjZZk3)`H
-s*t~>
-o`#-T^Sd0Lh#?mE"T?Pj8f@%,#n77L:SPe`n,*+`rs8Jjnb`@cq"=O`rsSh_^m'YkXJMAJMs($<%
-/o#$Nf(?RWL/KohYk_!#PlogUksTSqV2#Tps-RHLk+4Vkl2P"ilJBrR?NDkdI@&4s8W&caeauPL
-OslIo)8RqrqGmFjQ#7bn,!%^s!.O8nF5Vd]qLj]S#+d)n*KQAnaQ&6d_hlKR@9u)mdKW2mf'BhJ
-,~>
-p&>9rfUI1qAAA*6rr_uaq"=(I#jTO4W5RN\qu6*b%/\5;@X67aIVN;&b5VD?%K>h.I9iVgS:>$Q
-E97)srseu&j4W#8g[4q*f#-ePrVm?+nD;IBrVulhiRu`LrqQL&rp\gma3WGQSnqYIiVrfU$iTGD
-a6`g)o\S-WrVQU'rTr7if@K0ao\.C>rVlg-o=(-$>B&X%s8W)nimu]Zq>V-,le:"AlMgh`q8/\K
-BP(dkW9sT^rr`5OC0CL:32Q3Grq"sk`4`U`XfSb5[(FcZrr;`7_S!FWKl(F7COr.a[$dWS`50!q
-Y)I=3B52a`ZFI90PP;6[J,~>
-p&>9rfUI1qA\\37rri&Tfuh5$_?d`GLo&&Gn,*+Rrs\eJS76chQ@<RWB$1,Prsetr]7!t[aII`i
->B/d(r;R6*puL,ZfA#]jm+92@rr)j+rp\difDYaKo\nKRn,E+^%K>kSdE'\f^7T4HCZ59krsSel
-f>m7Wrq,'tir/cS!r_K>rmqA<rUegbg&:pM&+d8uBNoH9rr<#tpu9oVrV?I,rTi4kf'<87s7sR(
-H>$o$D5ck$r;Qltf5"Rg=?*/Js8MWGcG[H+YcY"3['dNop&>!cb/:m&VhJu"B5<*mZa?0pm)?fO
-]!%'3AnPk)S[,f5R[!QLs*t~>
-p&>9rgq9PJM9,Ydrri%ZC+^+e%L<LO$BrEan,*+Rrs\eS]T/*!ZDj@WMUDG&rsetsc_uAqb.Xg>
-KSegir;R6*q<I#!ioT_.nD`!err)j+rq#=.ir/oVp?CVroD\Ob%K>t_hUpZCcbH$,L#N%0rsSeq
-in3f#rq>O6lM^V[!r_WLro+.MrV#=)jSf)X&+dlSRtQUXrr<#tq<Hu!rV?I,rUAn.iU?dGs7t$U
-Vja$?QaH/Zr;QltfoULXFuZ\rs8M]Rh:U3%b/hWGc-=Vmp\t3eg"4[!`N>`"R@UCobg!f8m+Bn9
-dE/\dR@0SC^<FsK]X.@8s*t~>
-p&>9qe<bGiA\.^/rri;fq=jRMoEO?eX3pA4rpKdpp:Z]!N7jqXD.7%`qYpL'qp)$GD:$7nHsp9;
-li$i-rqG-bVh9;XWO9ORQuhZnrpJ^ob/:HB[J'1A`k&CNP0Nt&ruh:,e%:laFG6?XK4J52kPk5<
-g!RmUUOqY(gr[+(Ls#\qrsnq`b-[7VNMEen_5D=oqYpL+m]_pd>`%bGs8D-*^8cn'rVca4rqG*\
-UR%RPTs=LpoX0j'AnG[iJ'@WcrVlruke@"p3O[W8qqfH+UlpI\G'/(ZK85MVUXoD3Z^lo'H#IA.
-B52C3Jph<eeu=peJpMEMAnPdpG_(KqBRfHQs*t~>
-p&>9qeX1VkB"Rm1rri;ahU9C2_?RE4UXAN,rpKdpp:Z]!N7jqXD.7(aqYpL'qp)$GD:$7oHsp9;
-li$i-rqG-bVh9>YWO9RTQuq`orpJ^ob/:HB[J'1Aa1ALOPKj('ruh:,e@_)dFbQHYK4J53kPk5<
-g!RmVUP%_)grd1)M9Gksrsnqab-[7VNMEen_5D@qqYpL+m]i!e>`%bGs8D-*^T*"(rVca4rqG*\
-Um@[QU9XUqoX0j'AnG[iJ'@WcrVlruke@"p3O[W8qqfK,UlpI\G'/(ZK85MWUt5M4[%3#(H#IA.
-B52C3Jph<feuG!fJpMEMAnPdpG_(KqBRfHQs*t~>
-p&>9qft+#DNPkS`rri;GI7tRI%L*@LG1#aTrpKdpp<0q%SCt?PSs,,KqYpL'qq8lGL!\,[W02b$
-li$i-rqPR,`2olF`Qm#^\sr*crpo:3gXjTRanGAcg!Rs[\(^fXruh:0i6o0.Trl)DXHnR#kPk;D
-j58S@_Q2qsjkJ/#Yh8pRrsnqigWd+&Zbjr8e\n',qYpL+m_u]%Jskp(s8D<?eAeW;rVca,rqPO'
-_R[J$_9)TSoYn85rg<nYWS.(GrVlruke@"p3O[W8qrZY\_R?YIUnaccXKT%E_;Y@\aM+mZV4X3E
-R@BhGX/VG]f#G5%X/DV[R@0P9V5p_tQ^[?Fs*t~>
-p&>9qh3`IuAXiDbrr_rbq"=%H"QI&9o)A"U*:U4g@'&CoM/d$8Re?^\rp@4;=eXcaRs8=HV""B`
-,Q6oOY@q-TL6-A%LjW]Uk5P%GR[TP$I!M[1Y`jQ^I!fUSo_e_Fqq]5`?s\8GL2:U?@9ecXrRd?u
-QBI#DJ()9=P_4-kL%YKFp!UC%?<qlDE-@"k@q49irr3PoWJFtfV""E_i5)4IFCTpprr4)=jN*g$
-D1d%QHuQ7cnZ7LaAnG^mH'tnN`mNB$me,iCi[s?cpsm0RKlLX0=^#'8?=RSaG_1XmkFcNo?"%;V
-An>FX>?Y-1Gg1_G>$PKHralFG?X-c<=BBS.Y5a"~>
-p&>9qh3iP!AXrJcrri#Ufuh5#_?@3>b4>PuruCO6LL@4DZANX3A"3/ks8MDqFBYBr\XRhO?DR)i
-s!.L-bcb\bCPIpiI#*/[G38esTUVC9N-orM`j(_WH$k!QI.[@:1]-"IT3tuSP_O!hCLLJ,m/>S$
-PEqAeEe)WUY`sc`AqfpXrq4^MJR2W/QuR;)L1=cKqYpL+l)KPJ?)6uirSYPgMf`H\o`"k4rT)%i
-AT!0GEdVi/qsgbCDe<TpCjDGQ^W+[PkjJ-.rSfElo_?tPTnRJs?<LH:>[CoPD0UYebNGR5>[:cL
-AnGU`?<^T8=*`&@?s6fDAH$0H@p`JE>$+jJl)t&:~>
-p&>9qh7BGJO0/-Irri"VC+^+d%Km4Eb4>PuruCOJYD'@D^TaArN32dQs8MH3UO9'!ah4I3K!+VB
-s!.L1grc+;Js;grVm*+\O66H7^q@=jZ`'b5eB>>$V5L5[Sb2j[1]-:d^Q<o(S=,b7SW\Vqm/>nQ
-\%/rNTr-Gkb.+RLPbIdMrq>6rX,)+]TUDUZYEajsqYpL+l,KrjJZeMBrTDbLZ(mDOo`"k4rT`+M
-OGT3hTr=U#qshD(T:)+9SYj!@e(<I8mIKr7rSfj#o_@Cq_6'AqNJ3%>LlR^eSu&Kjg#oo6Mi<gc
-R@0G,NerOFIZr$VOGJgWQC+)-Q&gfYLP:29l)t&:~>
-p&>9ri0S\"A;0RGrri;fq=jRLoE4*fhYld?6gCXi@*J&VNH8W?MXg`Hqok^>C=;@PQZHJ=](Q+'
-rp%Lt?rMQ_`P77JBOP/&l2U+CMfW]JAS$."@r6'lA7f4[l2CX3qprKA=]_$-c+SaGB4,#@nb_+7
-M/R3CCN#8KEbJrj>'B93oZXOW<,AJK_jGIX@p<^+rVuosf;*h$?,H=6hQhEB?sHc`mJm4bi5(4Q
-EjE?WHZ!A@o('&0AS#IdBP_jEO-ucBZ*q3U`p!F%s81?YR<W=O<Duq-Am\kN&Rf6aDJsd;KO7ef
-@q'%^@p2q3<t'#lAm/8?A79%]AR/=6<rm7(Y5a"~>
-p&>9ri0\b#A;9XHrri;`hU0=0_?70AhYld?6gCXi@*J&VNcS`AMt-iIqok^>CXVIQQucS?](Q+'
-rp%Lt?rVZa`P77JBOP/&l2U+CN,rfKAS$."A8Z6nA7f4\l2CX3qprKA=]_$-c+SdHB4,&Anb_+7
-MK!BECN,AMEbJrj>'K?4oZaUX<,AJK_jPRZ@p<a,rVuosf;3n%?GcF7hm.NC?sHfbmJm4bi5(4R
-F0`HXHu<JBo(')2AS#IdBP_jEO-ucBZ*q3U`p!F%s81BZR<W=O<Dut/B4,%P&Rf6aDJsg<Kj\"j
-@q'%^@p2q3=:B/nB3SJCART.^AR/=6=93C*Y5a"~>
-p&>9ri4>bPOe;19rri;8HV,1C%Kd.DhYld?6gDU_K$Nf-Z_<_HU%/0_qq&W>K$ro&\tP+6_"Ia-
-rpACTOEHPj`P8(;RZ`8jl2U+TT9u1=Q^+/*LkgkKQ'm\hl2CX$qr-#2L3B3*c+Td@R?3$'nb_4I
-SX,h7S=?^MQBIJoJro?up"[`^H\&04_kiuoQ%k"NrVuosh8?4OJB%<]jijTgOG\IOmJm4bkLHeg
-KsJ@mVk0*@o('PkR$a;0R[p7U[(F2obKeJ^fC&Y<ruh3rdCZ6COFVLsH[U3kM34-nStDk)UOdT>
-N0K]tQ%s\aFps/NMgBPoMisHqQ]-:hFodB_Y5a"~>
-o`#-UP]^SJEpNAts7??ep$D;Pj2'a@s$ZkAU1IrnpXt[MAn6;Vs8MDpDHa4-l`?4a>@#qYs8MT-
-Uh!JR`T-LO]o6r=>bplho%(RBIqiCm<HOn>XaY%t?!u^ls"s]2]Tc]&S^Zrtj/n,S?<t/8rU&.L
-P(%.V@TRN?IUlARM<ju\Z$BA\]%ZT=bE7$Y?%_A?s!RZ_T6+:JgA'O+AS-3k;,aC]s8ColO^)V7
-i9Sg_H!=\@pX=Lu@:]@L6"akGDfpAVKo(nYS%ALrl+*7-B44b;GbVLOYFBWC@qB:fBnaC,WMYDh
-BP(^[H)@R?YKGP5WMueYFD>Du?YQ>8W<09Gn#l\@~>
-o`#-UP]^SJF6iJu"SCd-ai!M_!jnlbli0BPgnSFnhY5]cF(Ss2mJm1Q[r,BQl0GF5CKk,uqZ$Qc
-`2$pDIDt7:kIupq?sTSts74aUQ[`aY<`X@9ZE8UlAmJj*rr4hRhS#.Z=.Rh,o]**2D-gP[p&4:.
-^6="\A7AY\T7:BM:l=T7bcuFoA\-U`m)tQ:@U4WMrr4AB`h.?WA_Qq9XCZ!i>#A4rn,N@F^l_l9
-^>S>*T6XXLl1`YT@:<^GAjL'CC2\6@J;&iAR%1bbropt^G\:Ga;L,"B[BH'B@Uit^C2&C<YGnCS
-E+iim??rEIWNXIt^T"31P'(MOA7')Iri#t&b3uM5J,~>
-o`#-U[\T=SPO%l@"S@FZ.M;%X!Y#=mli0BPhnbV3hY5^3U6q+2mJm1Rc(B?gl0H9rSV_jLqZ$Qd
-f>Eo"N5aiIkJ4BrO+FJ's74aUW2c>LJ9QgEZE9[fR#H[Xrr4hRjO:SrG,*OQo]*EbSrJ99p&4:.
-^8S$$QAg6HTotC_ELH.gg<6=BICe/#m)uW0PD,:crr4DCdD)H4L"c=`a-)"2J9>q:n,N@Le[C3_
-^>S>*];CF;l1`YtO-,crrg?$?S=cRSWi`M5]"H>crp.qDV4!KrEJUEr[BH3^Ng,p!S!g%fYGnCg
-T:;74KnuV*WNXIt^T"31S>)L@QAU6hri#t&b3uM5J,~>
-o`#0XQ?d.RC=`CXrr`5dq=a^X#P.6Ah:prSnbMeYji6<Gs*X^eS76L"rSWl_B4,B:s81'6??Olp
-kbj/H>\i<ts8'mAH<=RmlhpeYbaWf_?,?77r:T0RP&"9(NPF*,fq*h.>@QXms8MN%Tk.;IdI[A;
-oXpN1>@#qYrqlBKViGOu<-5k$Z=$^Xbja>pN*KGaiVEKOiLka1>F"XUs"!`PRr)P[i7t\PD5jp_
-B:%6Erp[^p@9KJfqu,0MEE[;BrTCV-?<UZD@qGOL3bN,AF*`26p!9XhC1LLJLVhd-kiC=+Iq`J+
-BObeoj5S[aL2U[5?]*IpioKLtl/L^YZ\rm:A7'B*ro+"?mJ=!cJ,~>
-o`#0XQ?d.RC=`CXrri;^h9a+<_?[lg['-X=]"n-Y!k,,gli2A0bFN*_jo+,%G%Y2rl2UY*TO2lo
-punZ2AR'$0rr;i<YBj;Z_s@7#q95@Q?=(MBs8;QOY**R)=H1)Ijk68YAm8d*s8W)f^7f+?Fj]g[
-s7EsjEEcc&qYpBbj/@uR>uc!\d'@(]H-Gd3[u=QoWo<dQrSaH$@9f)crr4M@\XRGDI,NeeB5X`W
-EbLilp\sZtSmbg"j88f-YAm`bjo+ANE*c^S@:NmGAiaR<CNFfKX7af>JSJ_!<JSHFk31mW\pnF*
-AnY[i_W0Y-Tn[Jt@UG#Eio9%do',/nh6`,^An57idf/5-jR)fHs*t~>
-o`#0XZDF%TOkTg.rri;6GXNAF%fQn=$k3[@%K[(Cip6Vlqp`<?MWOfp[%s+OMs:9=fYE<!fD+RK
-YEt#uiVrlRfZL+DHc,1Is7t*VUlBoEpAb'`jhS?rLj56#fB(\kXI4lrj8]/Yo$Y@AI>H;Brr;W3
-\Y+e/g%t^Fp#EcnSVqcK^<j<AFc+E4iQnfeGcp$$rr(fjX-/%/mf*5;oZ=b;N0iJ`c'<p^[>9=)
-fD#:7e\@5mXQ03Vh8u@BLZSKt\W)?!NKKHlR/<:3R[p1NVo/2[a/b\qLj#!!g?.V[f".<;R$jD.
-P0)bDf<h]QR?NDqfAbfNmIKN$in_;RTp_4(MphUa!p&bFY5a"~>
-o`#0\SpbBcC8q('s8V]lq"=XY%.`iKfuLG"XLZ^>n+6GK"6[b[rp9Y=p:Z`"MX1<)Q?m4QA^gVB
-[r,BTm/>M0IUZQ1kl:YD[?G'&OQ-0;s7sX)F';l'qu6UAn$/*h>B%aLq>TigP@e$<jo>AXd]\:.
-=gIAms8V`'Rr2JHiVriV+7#tfA63'HjRh6#W5n/m\tE_>E7O^_s8LoOJ6uQaoD\bEn#qskCQ?fU
-NHDegi5i[anbr@/Y'aSseG&t.`0FV+L["j6hQqZ;=^"s4>$P?@@V#IM->.(*HI]WtFCnucBufQ:
-rr;umj0s>IAnPXcTDANWY`Ed9@UPDiq>U`q`g(a[A70WGW;hA~>
-o`#0\T7(KdC9%.(rr_oSfZF-0%)KWdXe(W3Q'8&Q^;9]`"1Y&Urp9Y=p:Z`"MX1<)Q[3=RB%-_C
-\8GNVm/>M1IUZT3kl:YD[?G'&OQ-0;s7sX)F';o(qu6UAn$/*h>B%aLq>TigP@e$=jo>AXe$"C/
-=gIAms8V`'Rr2JHiVriV+7#tfA63*IjRh6$W5n/m\tE_>E7O^_s8LoPJ6uQaoD\bEn$&$lCQHlV
-NHMkhi5i[anbr@0Y'aSteG&t.`0FV+M!=s7hQqZ<=^"s4>$P?@@V#IM->.(*He#`uFCnucC<,Z;
-rr;umj0sAJAnPXcT_\WXY`Ed9@UPDiq>U`q`g1g\A70ZHW;hA~>
-o`#0\[&KU_Q+HhcrrhtK@jhld%L<LP$OR1D$4IC>%Kd.J\,Pao0_W]"MONl2k-LqSP)Iuklcu,M
-[d<tJ_5WZQP3DrFkg$Z$I@K6ns8VoA^7pF4gACmL-1Aj`R"U19l1t>I_7,hcM<4d;qqK5oML)_s
-rr<#jah44$L#N%1ru^RG[$H5f\`ED<WN+#'n^"t>JVDYKs8W)W_Q&ZH[e'Lu1@N2lSX6>,e$G.J
-h;HAhf(&_9fZC(LMq%M#maeq,FI27lptiE>I=$HqL51YFO->otrg>(&RAS]_]q_!ZJq:u.qu6Wp
-puAo]R@'D.NjAK\n\MT+R?WN'nbN1jps-FGR?ieol)=W4~>
-o`#0bY^gP%AUF"BrtYM!q=aIQn`o#X]W8'.Uo1&mdH'cfr:C*SaOC%Qs!@0?Lg[%Js6HG3Cgq%n
-ouW_1FkQTeb+Eug>E%qKqSoF\>[52<rr35r]:3S@DrUcqru1.$M.9eIk5G>[n#qsd>`%bGs7Edj
-C0PN+q>UBun?A-h>^,B1ruh="Vh8A[No'X3o&/HpqV830@9]8err<#sd%GYh?IeiMs$GtLMJI3l
-WL\$Lh"gg9me6VZn[4^#D4p%Yf"HrE;.[o@s8McQa0:YNB4=qD<`r[6@:a%_B4Z"YTnR;p@9eiS
-rVZ[/q:UdLB4b[`MXpf;Y`Ed9@UPDiq>U`q`g(a[A70WGW;hA~>
-o`#0bY^pV&AUO(CrtYLoh9a*W^Ug\GQ&(ZkTr4WYVR=.Sr5&QGT?[9"s!@0?Lgd+Ks6HG3Cgq(o
-ouWb3G1l]fb+O&h>E/"LqT#L]>[52<rr35r]:3S@E8plrru1.%M.9eIk5G>[n$&$e>`%bGs7Egk
-C0PQ,q>UBun?A-h>^5H2ruh="W.SJ\O5Ba4o&/HpqV861@9f>frr<#sd%P_i?e+rNs$GtLMJI3l
-WL\$Lh"gg9me6VZn[=d$D4p%Yf"HrE;.[o@s8McQa0:\OB4G%F='8d7@:a%_B4Z"YTnR;p@9noT
-rVZ[/q:UdLB4b[aMt6o<Y`Ed9@UPDiq>U`q`g1g\A70ZHW;hA~>
-o`#0b]W7TkQC[U@rtG@EGXN>X%LijU$ORA5O/J%.$k<%C!t>X6qs=>/nA_\eY42JW[]>s`O3@4I
-]n_Htq>/RTVNHG#m/Qq2`2AK?`Uj*/#PH6PSV;mZrr2p9l,KrlJskd"s8VQ,\<_`7lMpnVbe9O"
-K\-&!rs%u3\=&&2kPkK(ro:quO+!JRqYp'Di:$O$aKUeVVX"0\s8CQbV2BfRq#::Ll,9itTWQ2I
-TTe1,qXEqHrVuE4\t5=nk4.H[Z&!FLb4>T3pZ';uR#$3<G'/"VK8PhYrg=.\T"De@SXGUlSE9_I
-rtG4]XJ2,NQB%[0s7*q4Tp_.$V"+9\#l)]UUm[O-Om/hEJ,~>
-o`#3jbCF>>ASnsUq#CBd'DV7gjOV8SX/2Yr_q3baZ*MsCnGMn\kK)$Fm/JBsWH)@^pAaWdLi?m?
-V;AUk=gIDnot?l=?X0]'s7*C\C0YK.qu6U"n?A-g>_D;?rs/PTUjlcWV"+Ha&F-<R@9]Mrs8M,[
-M.9eHkl1S]#4&4H@pFuZrr3`3dA)"m>f6.3s8DinrqXF(H<spup&=t,pq`M@>@ugls8W)RV1E2e
-Dfg)5C;'TDs!%ElW.SVlHC1@VA6;lY^#f.ks8Mocj4)&ZZE0a]K6:j;@fBsHA8HgPF(f/o@'0"s
-rtGCrV1reuA70`Ns7*=SEFrZfPO\JK#l)E)G@kAnGNl(+J,~>
-o`#3jbCOD?AT#$Vq#;*$jOhPe[Ao^TLm4C4_q3baZ)=V2^\kqN\=^n<m/JBsWH)@_pAaWdLi?m@
-V;AUk=gIDnot?l=?X9c(s7*F]C0YN/qu6U"n?A-g>_MA@rs/PTV12lYV"+Ha&F-?S@9fVts8M,\
-M.9eHkl1S]#4&7I@pFuZrr3`3dA2(n>f6.3s8DinrqXF(H<st!p&=t,pq`PA>A)mms8W)RVL`;f
-Dfg)5CVKcFs!%EmWIn_mHC:IYAQW#[^#f.ks8Mocj4)&ZZE0a]KQV!=@fBsHA8HjQF(f/o@BK+t
-rtGCrV1reuA70cOs7*=SEFrZfPO\JK#l)E*G@kAnGj21,J,~>
-o`#3jcDmA%R$u+pq#;'#L1;M>%1EUO$8Q4s_q3bg[V$!Xq[N];$_d@^s!?sKU4UDYs7!b+T9bhU
-iQdg:[d="dbIs^4J@+nIn]AA4LP4I[rr32l`OM7fQ0J;J#QEPsWfVe7nc&P"lGg)kJ?JDAro_;*
-P_,:drr2p%lbg&oK:M<-rtYLb_PW3<`Ua$.rVQQmq9ZpSNI].Drr3c/cG#s,KAc_.s8LonX-f*A
-U8+-@b5M8<0`BeGXI#0H]>1J/H?G(Xjno)Xrql6GeA]#)XJ;/DLPLnSR$jA-RA@$\R[K:l[IX4p
-'E77+Y+:uHN0N`0n\MT+R?WN'nbN1jps-FGR?ieol)=W4~>
-o`#6qhi2JbBP;n\rqcX2rTs@QiQJ^2WMHN)cJe6bqt/mh\(g-:rU^3Ub0]qNs!Ia#U1@`equ?<%
-MfWKKPI?KVHeJ5pn?A-r?!bbLs66G:A6jWHrr2p%l`,nQ?(CB_ru1aRT6O[J_=mp/rn!uq?!YVI
-s8C?>I:6K`nbrIlk,*c>?)7#irs/;5So@qLh#%!K#P"s\DHgE%r;Q^#o!Oiu>B]0.rs\eJTm:$G
-@q]FcB8?0Xs"O5]RWMk;>[1HHEJ1:2jQkXVf\"]ol1a`6kMtCKbe^K:DeN`p@V0q-C1_'eA@D7/
-rt=e+P]:;G?Ztc8nZ\'oAn#/3nbN1jpr8SCAn5:nl)=W4~>
-o`#6qhi;SdBP;n\rqcX2rT2eVZ_ES<PaA5XcJe6bqt/mhXKK+KrPAZITum)ss!Ia#UL[lgqu?<&
-N,rTLPdc]YI+e>qn?A-r?!khMs66J;A6s`Jrr2p%l`,nQ?(CB_ru1aRT6O[K_Y4$0rn+)s?!b\J
-s8C?>I:6NanbrIlk,3i??DR,jrs/;5So@qMh#%!K#P"s\DHgH&r;Q^#o!Oiu>Bf6/rs\eJU3U-H
-@qfLdB8?0Xs"O5]RWMk;?!UZLEJ1:2jQkXVg"Fosl1a`6kMtCKbe^K;DeN`p@V0q-C1_'eA[_@0
-rt=e,P]:;G?[(i9nZ\'oAn#/3nbN1jpr8VDAn5:ol)=W4~>
-o`#6qhl337R[Kr<rqcX1rOd/&%1ERN(Jp@-cJe6cqt/mhBabIK%Kd.JT_RpS-N;o=Q%@Zds7F@;
-TpVIXag?_[g%k[;`jhY!JBmohl,BilL6Ca!rr32g_m>PYW:0`c)Z%jrV2^#FpAb0lh8?4MJ'@Ze
-rRercObC(2rVm)a`3#/RY4;Mk#PZKWT883VqtpBun\qu/Lk"4Xrr32na1@^nNTU6?%/\PiV2p+[
-Ng,rtV=jcd0_il(UQ'_NI<pEsOK-@^n)i]kj5ASXp[RS4j5&80_69B$S!f\.OI;f4R@07s^A%L(
-'(<]HTp_1&OmE&;_6fo(P_c.*q>U`qcFKa=Q].'kW;hA~>
-o`#6sm&bA@AnZ4XqYL4/o^_[uY,e@pZGkP^oAlm+n,)qIb.c]qnc&._lHdfNmJeL0bFE$\j8T)R
-d>r?]DM3^N?+fV)s6HVBB3Sj$rVkNCIUccGm/I"iro']*?X'c,rr3o/\XRSB?/#2Us8'd/F'N>5
-r;ZQ,R<N(I[.aM!#Q<)DHsU*ip&=srn["Qp>^,?0qu6oeV28knEo[/urs%npP@RmUli-nnp:Zu8
->$@)HDJ!EsdJj+E(\4npDI@4VWi`_GcJS-cftXqsXe:!`qu6U*rr)WambP(/EFrcg@#Aq&AclRU
-U\FWb'(</mEFrZbHKtP#Y`Ed9@UPDiq>U`q`g(a[AR]oKW;hA~>
-o`#6sm&bDAAnZ7YqYL4/o\[]`MhmXjZGkP^oAlp-n,)qIb-/"Z^])(P\u!F@mJeL0bFN*]j8T)R
-d?&E^DM3aO?+fV)s6HYCB3Sm%rVkNDIUccHm/I"iro'`+?X0i-rr3o/\sm\C?J>;Vs8'd/F'N>5
-r;ZQ,R<N(J[.aM!#Q<)EHsU-jp&=srn[+Wq>^5E1qu6oeVMStoF6!9!rs%npP@RmUli-nnp:Zu8
->$@)HDJ!EtdJj+E(\4qqDI@7WWi`_GcJS-cftXqsXe:$aqu6U*rr)WambP+1EFrcg@#Aq&AclRV
-U\FWb'(</mEFrZbHKtP#Y`Ed9@UPDiq>U`q`g1g\AR]rLW;hA~>
-o`#6sm'rdWR@Bk\qYL4.oOf9T$48nBZGkP^oBO;snb`.Kb#AfZr=/o=%$LAPs!@Ql]oS!0rr;cB
-[%`t\XKIS0^@)"#lbg&sLk4C\rnbDhP_bsurr36&j27pYJ%5.Mru1OP]V((0gACpMqU30RLP"@[
-s7jjNUlgAEpAY'srRnubNe"q<rr35na1@[mNop?<rs.l(Z'pW1j8T&X#4BF=Q%>Fjrr3H$bIsO&
-H'jtfR?j2mrr)j5o#.u.N.\"-XgZ'khsgC!eBZ.V^S]QYrr3`4rV6$Qh7C%fR@&tgR[ok6R?iuB
-p\On&n&Mu4R?N>dlMpCj[%WnPLnsS:rs8DF\YPX[Ng&_+s*t~>
-oD]-ke:VIHBQ8U'qu$I:rTWITVkg?,e)^&okeDar]C5b!rThG=gZ\2"o^'uIp$Mc*p:Z`#M<b-@
-rS<QWAnZ$h=G#B*s8V5ZK4J5,jSo&"Q[*(NPOSSO#Q<&EH<ab,q>UC4n$&$i?#\g&s8V`&S8)8O
-jo5;PZ]K6:A%;=5rs/A=T64CFg%t^J#4&=M@pFuZqYpcaU5*JnGNf#*#3i+C@9ou)rr3GsYa/m*
-FiV=FB4bkDq#14/nZ\'nA9QD\jQZ+*qu6<(TS@c=F)SS`q>Ufm^R]IY@olp:Ir>6t!b[5Xqu7?/
-k-U(`Amef#m/QU[O)\c@@$C-Vrs8D=Q$-bOA9[::s*t~>
-oD]-ke:_OIBQA^*qu$I:rSk;MPaSMbe)^&okeMjt]C5b!rThG+Y.;<a_Rl\Wp$Mc*p:Z`#MX(6A
-rS<TXAnZ$h=G#B*s8V5[K4J5,jSo&"R!E1OPjn\P#Q<&FH<ae-q>UC4n$/*j?#em's8V`&S8)8P
-jo5;PZ]K6:A%;=5rs/A>T64CGg%t^J#4&=M@pFuZqYpcaUPESoGj,,+#3i+C@:$&*rr3GsZ'K!,
-G/qFHB4bnEq#14/nZ\'nA9QD\jQZ+*qu6<(TS@c=F)\Yaq>Ufm^R]IY@ols;J8Y?u!b[8Yqu7?/
-k-^.aAmef$m/QU[O)\c@@$C-Vrs8D>Q$-bOA9d@;s*t~>
-oD]-ke>&FuR\?e"qu$I3rNm"@+BkGPe)^&omF&)'_XIL(rThEe$k<1G!t>ZQp$Mc*p<0t'Rd0qQ
-rS=fSR@Bb/I$*7]s8V6#Xd+TsjSo&*\tt[NV==Ka#Q<;kVM]lSq>UC4n&Dl+LPb$is8V`6]pj_8
-jo5;P`3c8%M88ocrs/AH^S?[:g%t^J#4'78Q%PUnqYpca]W[fdP3DlE#3j.3P(C"1rr3Gs`jqIi
-M9!H.R@0DFq#14/n\DN(Oc\#NjQZ+*qu6<6^TXQ5Tps$rq>Ufmcb?0BP_4CfTUu.N!g]SOqu7?/
-kKU<'R?2ogm/QUl[%WnPLnsS:rs8DF\>5O[PEtI3s*t~>
-oD]3skbrH1ASZOGVsOE^ruh3s_Psrbh<an5ikpgsNPF3?rr<#qkeY$ekje<3d)>MBs!@0?M.*4L
-s8W)ZQ?m4V@TQdJnG`Idd\;/!>_MAAq9"eAAS-kirr35u`hIN\CuG9krs%_dLh'b>l2L\om]Vgb
->`7qJs73CMEFWXdp\t1)oYR8@?>SU"s8W)WVh8D`V"+<]#3hh8Cgq>Hrr36&goH!5?c2X;rsn@p
-N+6(Lk2;MDBOu/=rr2p%nZ@^h@Vk9*rri>h\rUh0Acl_$li-e]')U1eNc&E6<-H<EEFrfrAoc)n
-r;RH,bc6,*A6N-Ao)J6aO)\c@@$C-VrsAJ=OEG/JA9?`.WW.J~>
-oD]3skbrK2ASZOHW9jN_ruh3o[%t+Oh<an5il$q!Nka<@rr<#qkeXC'\\H"nVRQ-`s!@0?M.3:M
-s8W)ZQ[3=W@TQdJnG`Idd\D5">_VGBq9"hBAS6tkrr35u`hRT]D;bBlrs%_dLh'e@l2L\om]Vgb
->`A"Ks73CNEFW[fp\t1)oYR8@?>\[#s8W)WW.SMbV"+<]#3hk9CgqAIrr36&goQ'6?c2X;rsn@p
-N+6(Lk2;MDBOu2>rr2p%nZIdi@Vt?+rri>h\rUh0Acl_$li-e]')U4fNc&E6<HlKGEFrfrAol/o
-r;RH,c)Z;,A6N0Bo)J6aO)\c@@$C-VrsAJ=O`b8KA9Hf/WW.J~>
-oD]3skd-eER%:(W_XRR(ruh3V>_of0h<an5l.*2,SA3eNrr<#qkeTIl%1WjW$tf(ts!@0SZ%oLO
-s8W)ZZDO(YP_"%onG`IdftjYOKU:s'q9cUFR$496rr35udD;Q7LuA72rs%`,Ya'p*l2L\om`)`%
-Jt20,s73t0TTtVPp\t1)oZk7FMMU6js8W)Y`3#2SY4;Ag#3i_%SWf6#rr36&hoMjZK#m]crsnA4
-Z]p$0k2<83R[9K&rr2p%n\;?&PEP/,rri>ja0_K<R0/nXmf*+`')US3Z_!MAH&BY@TUD4:R%Dn-
-r;RH,fZ0t[Q\^!uo)J6r[%WnPLnsS:rsAJF[A0.XQ_!.8WW.J~>
-o)Bg*dtqgLAnlF@S]^I$s82'2fB2Z"kL6u'D0r;*jnJcQrsJYc_8"[ena+Z@na6>[lE,>?]Cl1'
--L%4TCLpdPK&6D)s7jL(H!t'Mn,N:<N,WB>GO5A0rpIXpE+4(Trr36&gSB=->`J.Mru1+#LLXkt
-nc/X]]7k-6BpJ>js8M,mP\afRkPkJdrR%Bf?<t/8qYqf)RXT$_DT;YTs8(!>H=1:<qu?]qiMM68
->cdMc]Qe%$C6\Mmrs/(sK5P7<\,H:*55jQB]74L*AnZ")S^HX!rqc!<cF9']AR88;ZerB<A7]Cg
-DMZI5s8W)mf!pl_ARAAEfD5I:Y`Ed9@UPDiq>Us#c&-IPB4u1McIg^bb5JLCJ,~>
-o)Bg*du%mMAnlFAT$$R%s82'2fB2Z"kL@&)DLAJ,jnJcQrsJYc_6'iM^UpANna6>[lE,>@]Cl1'
--L%7UCLpdPK&6D)s7jL(H!t'Nn,N:<NGrK?GjPJ1rpIXpE+4(Trr36&gSB=->`S4Nru1+#LLXkt
-nc/X]]7k-6C6nMls8M,mP\afRkPkJdrR%Eg?=(59qYqf)Rso-`DT;YTs8(!>H=1==qu?]qiMV<9
-?**Vd]Qn+%C6\Mmrs/(sK5P7<\,H:*55jQB]7=R+AnZ")T$lg#rqc!<cFB-^AR88;ZerB=A7]Cg
-DMZI5s8W)mf!pl_ARAAFfD5I:Y`Ed9@UPDiq>Us#c&6OQB4u1NcIgacbPeUDJ,~>
-o)Bg*e"E%mR%0kP^=i/Xs82'2fB2Z"mGQ<uP`W&jjnJcQrsJYc_*8>;%LihXna6>[lGocU_=dg-
--L%t?SX5:\Ol$!8s7jpTV36P3n,N:<Z_*YOSF$:Urp\=LT9#/urr36&hSQ:UJtDB/ru1+@YEb!S
-nc/X]`NGf"R'-)]s8M92\=J\DkPkJdrReucNe"q<qYqf)[],gaR*bg3s8(?dViZ_hqu?]qj2A$\
-J@+n:_5*KeR^)Yers/)/XIbfI`r5l955jcd_Q'&lR@9\C^#&/Trql3IgsER+R#ZK:\)4upQC+)0
-T<HoFs8W)niR#$+R#ZK?fD5I:_6fo(P_c.*q>Us#d^#L4R@BhYgZ%2BgAS2SJ,~>
-o)Ba/m(IUQ@qB=nJ![1Jce7C<f@J6]Vg;umQbhDFr;-F"qrY`0g$%bO`:<9q#6*J_F)'D)rr4>5
-W.f+u<a*6,rr<#i^n5aYBXIF3ro&]MAnPt[p&*jhVh8bsIHgb2-2YoZH='sZo)Jagd@G\sD6rp8
-s7k,rBP(q$_Ya,_]:+%ZAprqCrs/;6Soe1Bg%tRFEU03?BP2(>lM^"mYDdF1DqY-is8CB@HsL(&
-p\NU&D.[I&_>XE6oYc)fAncbIrVui^c'`OhJ7iA'B4u::SZ]T?_S<LQLiHp0:fES5o@f+9@:a(g
-H'PYSbKe,8P]gVF;H'1Mrr;MmO)\c@@$C-Vrsnq]JnS_-BPrBkWhXj:p9+FG~>
-o)Ba/m(IXR@qB=nJ![4Ld+[R>f[e?_W-W)oR).MGr;-F"qrY_sXgu'C\+/nd#6*J`F)0J*rr4>5
-W.f+u<a*6,rr<#i^n5aYBXIF3ro&`NAnQ"\p&*jiVh8bsId-k3-2YoZH='sZo)Jagd@PbtDR9$9
-s7k,sBP(q%_Ya,_]UF.[Aq'"Drs/;6Soe1Cg%tRFEU06@BP2(?lM^"mYDdF1E7t6js8CBAHsL+'
-p\NU&DJ!R'_YsN7oYl2hAnceKrVui^cC/akJS/J(B4u::T!,fC_nWURLiHp0:fES5o@f.:@:a(g
-H'Y_Tbg4;:P]gVF;H'1Mrr;MmO)\c@@$C-Vrsnq]K4nh.BPrBkWhXj:p9+FG~>
-o)Ba/m(f'QPaIr5Wk-3th;mk`iSiSA`MSQHT>B7Nr;-F"qrY^Z$k3XSAb#3g#6*T(U6+()rr4>5
-]<.ZgJ9Sfurr<#ic+g$<OM1;dro'oKR$jP^p\a=.`N>\rT'?7S-2Z3-VN6;8o)JagfY4>OR)&Cp
-s7k-ER[BS?dJNb#d_)KIQ(I7>rs/;D^8$O7g%tRFEU0s,R[KYMmeuV/ag.P'QJDK>s8CWfVi6/O
-p\NUASXGq?dJa+FoZ="uR%()6rVuicgq/okT9bb0R@BkN^<+gRf@8*^Yb78=GB9;0o@fq'P*_T.
-VRXe#gYLQ.\"oCPHul1Jrr;N)[%WnPLnsS:rsnq]W0s!?R\$Rn`knUap9+FG~>
-nc'R)iM^Kt?t<kbFFfLGWNrn2QuunCBp6-WlhUPTrs8Ma_8"[bf>[7Ks(;9#lH6&KFN!>@s8VZ#
-MJQNsK&6D(o^(GHP&OuPU>PtMl(Ds(AT*="XcddEAS,Ll[+3%=oXpK)>?o)?s8Vr8NH&QBIE]p?
-q;R?H@V9bCWMY2mBP(geDm\'3d-e,uA6Na,rqcY7o"B-RA8?UbXdaBWB4YXiRa]EmoY-W)=^g.b
-rp-Y+@qKV2^>dMmfnj<LAp9TQaMOii?&[14CgCFYAS>n&J;9&@Km[`H>uXU'PgK""m_s9V?".A\
-G(l6RSs"Y@@Tu]-MUV7us7*1@@piSIP4AAJ%fYUXB3\hR@qB=iA7:epY5a"~>
-nc'R)iM^Kt?t<kbFFfLGWj9"4R<E(FC6Q6XlhUPTrs8Ma_6'iJX0hBcs(;9#lH6)LFN!>@s8VZ$
-MelWtK&6D(o^(JIP&OuPU>PtMl(Ds(AT*@$Y**pHAS,Ll[+<.@oXpK)>?o)?s8Vr8NH&QBIEg!A
-q;RBJ@V9bDWMb8oBkCpfDm\*5d-e0!A6Nd-rqcY7o"B0SA8?UcY+0QZB4YXiS(#QpoY-W)=^p4c
-rp-\,@qKV2^>dMmfnsENAp9WRaMXrk?B!:5CgCFYAS>n&J;9&@Km[`H>uXX(Q-f+#m_s<W?".A\
-G(l6RSs"Y@@Tu]-MUV7us7*1@@piSIP4AAJ%fYUXBO"qS@qB=iA7:epY5a"~>
-nc'R)iNJ<#OHu<*UT:f<`lu]J];(@6JXa7"lhUPTrs8Ma_*8>;$r-6\s(;9'maoFRT$Qg's8VZ-
-Z(6brOl$!7p@74k\"B%Y\E<ejl*-V?R%LS"agRq4QC+&1a5PS)oZOe8LjmD=s8VrAZ_<bSVqKhH
-q;S9;PF8/P`l+mNQ'[l*S]B^>h<r7hQ\C.PrqcX&o#%)_QCY"hah=C>rg7/a\DQ#goZXk7Kn/"X
-rp.%bQ'n5Fd-9EIfqXaoRAILAf[[p/JXOolOc#3bR$sS@Wir\4Y,IqVMgf_kSC$j*m_tEKN0BX"
-Uoq8B^:()5P_j[*Q.,F+s7*h'Q&poVU[e0[%fYUjOc,9aQ'[r1Q&;L1Y5a"~>
-nc'L+p",mS?!CTA?t!MS@pr\J=&s:,]$fg9rUp0qqrY`/eBP_pnc)Gai3TGCAR/\cG-UrEpW.Sa
-:gh?5rqO73TQadJ>$Z,lPPXprG@4QW>$G08OFL_B=^#BOBs$TcB3S;>h#%-Oq9*kc=]o$FBP6f&
-^2mU`r`Tq;CS5cU=]np>C2'g1M.KgeFQ`K"55O#m@p3&?>$>'WQ=jB(=^c&ZNT?L@>>]7urr;`B
-JRDVb>\S1mVWGI1?<^]DBP:jZBq*B3fqN.d>?bE@rEq6b?!C?/;-%Y9dd[58qr>,4?<^T=?X[DR
-@UNJD<)HhTbjYN1s7)^m>$"^$O7E#F"nKol?WgM1=Thf*;NL@Ns*t~>
-nc'L+p",pU?!CTA?t!MS@pr\J=''C.]$fg9rUp0qqrY_rWM?N]nc)GaiO#VEAR/\dGI%,GpW7\c
-:gqE6rqO:5TQadJ>$Z,mPPXprG[OZX>$G08OFLbC=^#BOBs$TcB3S;?h#%-Oq9*nd=]o$FBP?l'
-^2mXar`Tq;CnPoW=]np>C2'g1MIfpfFm&T#55O#nA6N/@>$G-YQ=sH)=^c&[NoZXB>>];!rr;`B
-Jmhed>\S4oVrbR3?<^]DBP:m[C7EK4fqN1e>?bE@rEq6b?!C?/;HIk<dd[58qr>,5?X-c??X[DR
-@UNJD<)HhUbjYN1s7)an>$"^$OR`,G"nKol?WpS2=Thf*;NUFOs*t~>
-nc'L+p"-."K85AFOHG`kQ'.)ZH$+e2]$fg9rUp0qqrY^Z$k+u[nc*5"kKV#QQ].!!UW332pW]Ol
-GC.C"rqOsb^nm-KLl@n"ZMO4<QAC6NLk^D*R$!;]L51hRO1shcQA'R/h#%-Oq9YalL4tJJP)Sku
-^lsS.Lkp_3Jte9^L5(JEPE3H<Y*4EZMWag855O$,MhHkAL4OW0S;i;YL5_=YW8t@QKQVt/rr;`B
-S;W,XMjBou]&gYfKnbMJR@&t_J>(6Pfr9aYKo(eMrK&XlN/3%2F*3/;dd[58qr>2JJqSo;O-,Wj
-PE:]UHZF=pbjYN1s7*LXJ9uQ_TCM^V"nKp)Jpr4KJHUIKF.`!*s*t~>
-nGa:'o@UL#@Tc`5=&r:!<*O-jVSC^HpAOR^#5dQ!\[\s2nc&ag`,8sbrDsP4R.UFUgM'bkOQ-0;
-mYPO[qc>FQG45Cl\:.[a='g0Qa1$"i='KBoY1hojD.[F1jo5;[qr!`H='&mRNP4]TiO!b,<tf%s
-]Zd<l='&U?LT]@gI;<G.R-aYK+TCiPO^M6l>Ap1P`IV;r=(lrVd,:%)An[7ks8W&_]Qa?V)J"5b
-dI?,&I:$&S='K[-]%6?Io@LF+AQW&8r`9J.<)cdtAq$SmhXpdGrtP7f_j,4H='&F(=&r:!<F0sM
-cL(T0rrVc"K`65uJ$AM=rrr>daJ+0"rFQ.II^&CGs*t~>
-nG`^lo@UL#@p8k5$s$>+<Ej6lVSC^HpAOR^#5dQ!Vim_=nc&ag`,B'erE'V6R.UFUgM0knOQ-0;
-mYPR]qcGLSGOPLm\:.^c=C6BTa1$"j=BoTrYM/#lDJ*X5jo5;[qr!`I=BK*VNP4]TiO!e-=;,2!
-]Zd<m=BJgCLTfFhIV`Y2R-aYK+TCiPO^V?o>]?@R`IV>t=D</Yd,:(*B5*Ins8W&_]QjEX)J+;d
-dI?,&IUH8V=Boj/]%6?Io@LF+Am&5:r`9J.<)lk!B7HbohXpdGrtP7f_j,7J='&F(=&r:"<F:'P
-cL(T0rrVc"K`65uJ$AM=rrr>daJ+3$rFZ4JJ$ALHs*t~>
-nG`[ko@UL4J,Xa'H[9mXFEi=sW5$pJpAOR^#5dQ!57013nc&agc]s*,rH8`sWV$5fgQ-Q%S)X>F
-m\bqiqfXW:O73&0\rV,[G']"Ia1@.PG'JS&ZJ+?3LOO]6jo5;[qr"5uG'87gR(r"aiO4XCFq]7c
-]ZdR7G'8+]Pd9$#RY6-?V!RpW:&aV(S:#L'G_;d/`KY^mG(5INd,:gXIXdpSs8W&_^5[>[G(,FI
-eF;G+NdGqjG'J\/]%6?Io@LF7IsH<cH@(!bGBItMIZ12@hXpdGrtP7f_juO.G^4U^H[9jVFaAnF
-cL(T0rrVc+Q2ZR@Nk"ZTrrr>daJY#JrI+j!Nk"Y_s*t~>
-n,EUkpZ'?$Q[esZ#_\MH]Zo="q#9a^"oIH!ZG#VprrW&S\bi?:[++aJroh(qZdSLGs6n+6qPbL=
-b4#B*j2\I*X0fq*n)M6dWirtTh!j[V]"#B!nG`G6rpe@BWiWSBcJnTtpYiumWN<VTkOIBBXfAS8
-akZCObIG'sg%G.?)>idI[]?F4_:e8@bH\(L[`-kamF/_X^=MrUruh-t`36/A[DLGZqY0$k[&K4e
-YeS]Op\t3lp>sQ-SrS-pGmK4fX16=.meZq]rs/Q"m+&kSOb<RW#)SnWa5?IdrVlroim%JA!mTa"
-p\tBnn(c("rO;sCb2W3!s*t~>
-n,EUkpZ'?$Q[esZ#_\MH]Zo="q#9a^"oIH!VmYm]rrW&S\bi?:[++aJroh(qZdSLGs6n+6qPbL=
-b4#B*j2\I*X0fq*n)M6dWirtTh!j[V]"#B!nG`G6rpe@BWiWSBcJnTtpYiumWN<VTkOIBBXfAS8
-akZCObIG'sg%G.?)>idI[]?F4_:e8@bH\(L[`-kamF/_X^=MrUruh-t`36/A[DLGZqY0$k[&K4e
-YeS]Op\t3lp>sQ-Sr\3rGmSeROK5n6h<t.=rVm-%qWubIYE=M:GmAYPS[6Aoo)8Oe!r1d"rl"r`
-iqW9J"T.ZCb.dha"22k:poaXI~>
-n,EUkpZ'?$SW*N'#`tOY]Zo="q#9a^"oIH!@u'F@rrW&S\bi?:[++aJroh(qZdSLGs6n+6qPbL=
-b4#B*j2\I*X0fq*n)M6dWirtTh!j[V]"#B!nG`G6rpe@BWiWSBcJnTtpYiumWN<VTkOIBBXfAS8
-akZCObIG'sg%G.?)>idI[]?F4_:e8@bH\(L[`-kamF/_X^=MrUruh-t`36/A[DLGZqY0$k[&KLm
-YeS]Op\t3lp>sQ-U6^Z7L^Ap$R&da>h<t.=rVm-%qWubIYF1IML^/d#TsMeso)8Oe!r1d"rl"r`
-iqW9J"T.ZCb.dha"22k:poaXI~>
-mJd^oo&\KIa2Q$<cIh1Do_\XSrri5`f&$)irrW/kkkj?Mk4/?Ks7kj<kOSTOs8)-DqViOVmJ?k^
-qsik0j66%1rqYpAj5oUtqYp?\lKRX*qu-O?rU]75j65q(qu6WpqX3J)j6?47rqGd?j5oUtqYp?[
-l07R,rV-=/rUf@7j6#e*rql3Ij5fIoq#:0]lfmd.r;Q^2rqc'EioB7kpAFphqsin.gY_/]p\k$i
-"o\)WgsX=C`<XK0fAPrcqu6Ek#6";aimuAprl#)_d+d^Qqu6Nn!r_obrp^'\q#0pd$i^"om-<j"
-lKn'9rN?0N~>
-mJd^oo&\KIa2Q$<cIh1Do_\XSrri5`f&$)irrW/kkkj?Mk4/?Ks7kj<kOSTOs8)-DqViOVmJ?k^
-qsik0j66%1rqYpAj5oUtqYp?\lKRX*qu-O?rU]75j65q(qu6WpqX3J)j6?47rqGd?j5oUtqYp?[
-l07R,rV-=/rUf@7j6#e*rql3Ij5fIoq#:0]lfmd.r;Q^2rqc'EioB7kpAFphqsin.gY_/]p\k$i
-"o\)WgsX=C`<XK0fAPrcqu6Ek#6";aimuAprl#)_d+d^Qqu6Nn!r_obrp^'\q#0pd$i^"om-<j"
-lKn'9rN?0N~>
-mJd^oo&\KIa2Q$<cIh1Do_\XSrri5`f&$)irrW/kkkj?Mk4/?Ks7kj<kOSTOs8)-DqViOVmJ?k^
-qsik0j66%1rqYpAj5oUtqYp?\lKRX*qu-O?rU]75j65q(qu6WpqX3J)j6?47rqGd?j5oUtqYp?[
-l07R,rV-=/rUf@7j6#e*rql3Ij5fIoq#:0]lfmd.r;Q^2rqc'EioB7kpAFphqsin.gY_/]p\k$i
-"o\)WgsX=C`<XK0fAPrcqu6Ek#6";aimuAprl#)_d+d^Qqu6Nn!r_obrp^'\q#0pd$i^"om-<j"
-lKn'9rN?0N~>
-li.%cq=O[V"7l-]roa:`r:fsaJcF:#!r`#ppAY6oqtK[[nH8@Tq>Kma"9&&fo)A.]o(Mt[LAuc~>
-li.%cq=O[V"7l-]roa:`r:fsaJcF:#!r`#ppAY6oqtK[[nH8@Tq>Kma"9&&fo)A.]o(Mt[LAuc~>
-li.%cq=O[V"7l-]roa:`r:fsaJcF:#!r`#ppAY6oqtK[[nH8@Tq>Kma"9&&fo)A.]o(Mt[LAuc~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-JcC<$JcFs6J,~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/docs/draknet_advanced_doc.txt b/docs/draknet_advanced_doc.txt
deleted file mode 100644
index a0c0c63e0..000000000
--- a/docs/draknet_advanced_doc.txt
+++ /dev/null
@@ -1,165 +0,0 @@
-This document details the entry points you can call without the DrakX graohical
-toolkit. First, the general variables you will encounter further. If you don't
-know wht a variable is, look here. Any additional locally variables are
-commented 'in place'
-
-------------------------------
-Special types (in upper cases)
-------------------------------
- DB_FILE : file storing the ISDN ISP database. see share/isdndb.txt : file of lines in 'Unlisted - edit manually' or /^(.*)\|(.*)\|(.*)=>([0-9]*)=>(.*)=>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})=>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/ where $1=Land $2=City $3=ISP_name $4=phone_number $5=hostname $6=dns1 $7=dns2
-
----------------------------------------------------------------------------------------
-Summary of common variables used (local variables are described in the function itself)
----------------------------------------------------------------------------------------
-notation : keys : description : type : format (regexp or enumeration. `...' means it's not exhaustive
- $prefix : prefix path (empty in post-install) : string : path
- $isLaptop : flag for laptop : boolean or int : guess
- $isdn : hash table containing isdn infos
- $isdn->{login} : cnx login : string
- $isdn->{passwd} : cnx passwd : string
- $isdn->{phone_in} : user phone : /^[0-9]*$/
- $isdn->{phone_out} : ISP phone : /^[0-9]*$/
- $isdn->{dialing_mode} : dialing mode : "auto" or "manual"
- $isdn->{driver} : driver used for the card : "hisax" or "b1pci" or ...
- $isdn->{type} : type of card, used for the driver, see netconnect_consts : integer : /^[1-22]|[24-37]$/
- $isdn->{irq} : irq of the ISA card : integer |
- $isdn->{mem} : mem of the ISA card : string |
- $isdn->{io} : io of the ISA card : string | see netconnect_consts for examples.
- $isdn->{io0} : io0 of the ISA card : string |
- $isdn->{io1} : i01 of the ISA card : string |
- $isdn->{idl} : amount of time after the cnx times out in secs : int
- $isdn->{user_name} : not used anymore. Not explicit. It represented the name of the connexion.
- $isdn->{card_type} : card type : string : "isa" or "pci" or "pcmcia"
- $isdn->{protocol} : cnx protocol : int : 1|2|3 : 1 for old german specific (not used anymore), 2 for europe, 3 for rest of the world
- $isdn->{id} : card id. Associated with vendor, identify strictly the card. see pcitable : integer
- $isdn->{description} : card description from pcitable : string
- $isdn->{vendor} : card vendor : integer
- $isdn->{passwd2} : passwd verification : string
- $modem : hash table containing modem infos
- $modem->{device} : device of the modem : string : /ttyS[0-9]/
- $adsl : hash table containing modem infos
- $adsl->{login} : cnx login : string
- $adsl->{passwd} : cnx passwd : string
- $adsl->{atboot} :
- $netc : hash table containing system-wide networking infos (maybe not true, correct this) :
- $netc->{NET_DEVICE}
- $netc->{dnsServer2}
- $netc->{dnsServer3}
- $netc->{DOMAINNAME2}
- $netc->{NET_INTERFACE} is set to "ppp0"
- $in : interactive object
-
-------------
-Entry points
-------------
-
-isdn_write_config_backend : write isdn info, only for ippp0 -> ask_connect_now
-input :
- $prefix
- $isdn
-$isdn input:
- $isdn->{login} $isdn->{passwd} $isdn->{phone_in} $isdn->{phone_out} $isdn->{dialing_mode}
- $isdn->{driver} $isdn->{type} $isdn->{irq} $isdn->{mem} $isdn->{io} $isdn->{io0} $isdn->{io1}
-
-write_secret_backend : write login and passwd into /etc/ppp/{chap, pap}-secrets. Replace old passwd only if same login
-input :
- $a : login : string : /^.*$/
- $b : passwd : string : /^.*$/
-
-connect_backend : launch the cnx script
-input : $prefix
-
-connect_backend : launch the cnx script
-input : $prefix
-
-read_providers_backend : build the tree of isdn ISP
-input :
- $file : 1st location of the file : ISDN_DB_FILE
- $file2 : 2nd location of the file : ISDN_DB_FILE
-output : the list of ISP : array of strings : array of /^(.*)\|(.*)\|(.*)$/ where $1=Land $2=City $3=ISP_name
-
-get_info_isdn_backend : fills the infos from the line of the tree returned into $isdn and $netc
-input :
- $isdn
- $netc
- $name : the line choosen in the tree of ISP : string : /^(.*)\|(.*)\|(.*)$/ with $1=Land $2=City $3=ISP_name
- $file : 1st location of the file : ISDN_DB_FILE
- $file2 : 2nd location of the file : ISDN_DB_FILE
-$isdn ouput
- $isdn->{user_name}, $isdn->{phone_out}, $netc->{DOMAINNAME2}, $netc->{dnsServer2}, $netc->{dnsServer3},
-$netc output
- $netc->{DOMAINNAME2}, $netc->{dnsServer2}, $netc->{dnsServer3}
-
-isdn_detect_backend : detects isdn pci card and fills the infos in $isdn : only detects one card
-input
- $isdn
-$isdn output:
- $isdn->{description} $isdn->{vendor} $isdn->{id} $isdn->{driver} $isdn->{card_type} $isdn->{type}
-
-isdn_get_list : return isdn cards descriptions list. This function is not use internally.
-output : descriptions : list of strings
-
-isdn_get_info : return isdn card infos. This function is not use internally.
-input : the description of the card (see isdn_get_list)
-output : a reference on the decription of the card. : ref on a hash(description,type,irq,mem,io,io0,io1card,)
-
-conf_network_card_backend : configure the network cards and return the list of them, or configure one specified interface : WARNING, you have to setup the ethernet cards, by calling setup_thiskind($in, 'net', !$::expert, 1) or setup_thiskind_backend before calling this function. Basically, you call this function in 2 times.
-input
- $prefix
- $netc
- $intf
- $type : type of interface, must be given if $interface is : string : "static" or "dhcp"
- $interface : facultative, if given, set this interface and return it in a proper form. If not, return @all_cards
- $ipadr : facultative, ip address of the interface : string
- $netadr : facultative, netaddress of the interface : string
-when $interface is given, informations are written in $intf and $netc. If not, @all_cards is returned.
-$intf output: $device is the result of
- $intf->{$device}->{DEVICE} : which device is concerned : $device is the result of $interface =~ /(eth[0-9]+)/; my $device = $1;;
- $intf->{$device}->{BOOTPROTO} : $type
- $intf->{$device}->{NETMASK} : '255.255.255.0'
- $intf->{$device}->{NETWORK} : $netadr
- $intf->{$device}->{ONBOOT} : "yes"
-$netc output:
- $netc->{nb_cards} : nb of ethernet cards
- $netc->{NET_DEVICE} : this is used to indicate that this eth card is used to connect to internet : $device
-output:
- $all_cards : a list of a list ( (eth1, module1), ... , (ethn, modulen)). Pass the ethx as $interface in further call.
- $device : only returned in case $interface was given it's $interface, but filtered by /eth[0-9+]/ : string : /eth[0-9+]/
-
-adsl_conf_backend : write adsl configuration
-input :
- $prefix
- $adsl
- $netc
- $adsl_type : type of cnx : string : "pptp" or "pppoe"
-$adsl input:
- $adsl->{login}, $adsl->{passwd}, $adsl->{atboot}
-$netc input:
- $netc->{NET_DEVICE}
- $netc->{dnsServer2}
- $netc->{dnsServer3}
- $netc->{DOMAINNAME2}
-$netc output:
- $netc->{NET_INTERFACE} is set to "ppp0"
-
-modem_detect_backend : detects modem on serial ports and fills the infos in $modem : detects only one card
-input
- $modem
- $mouse : facultative, hash containing device to exclude not to test mouse port : ( device => /ttyS[0-9]/ )
-output:
- $modem->{device} : device where the modem were detected
-
-get_net_device : return the device choosen for the net cnx
-no input
-output : name of the internet device.
-
-read_net_conf : read the information stored in $prefix/etc/sysconfig/draknet and $prefix/etc/sysconfig/draknet.`type`
-input:
- $prefix
- $netcnx
- $netc
-
-set_net_conf : set the information from netcnx in $prefix/etc/sysconfig/draknet and $prefix/etc/sysconfig/draknet.`type`
- $prefix
- $netcnx
- $netc : useless! REMOVE ME
diff --git a/docs/interactive/ask_from b/docs/interactive/ask_from
deleted file mode 100755
index dad69247e..000000000
--- a/docs/interactive/ask_from
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/perl
-# Yves Duret <yduret at mandrakesoft.com>
-# license: GPL
-
-use lib qw(/usr/lib/libDrakX);
-use interactive;
-
-my $irq=1;
-my $login;
-my $login2="editable";
-my $check;
-my $range=57;
-
-my $in = 'interactive'->vnew(undef, 'default');
-
-$in->ask_from("window title - ask_from",
- "message\nexamples of utilisation of ask_from",
- [
- { label => "enter scalar", val => \$irq },
- { label => "combo (type=>combo optionnal)", val => \$login, list => ['Netherlands', 'France', 'Belgium', 'Italy', 'UK'], type => 'combo'},
- { label => "choose from list editable and sorted", val => \$login2, list => ['Netherlands', 'France', 'Belgium', 'Italy', 'UK'], not_edit => 0, sort => 1},
- { label => "check box", val => \$check, type => "bool", text => "text" },
- { label => "range", val => \$range, type => 'range', min => 0, max => 100 },
- ],
- complete => sub { print "complete\n";print "$irq\n$login\n$range\n"; },
-# focus_out => sub { print "focus_out\n"},
-# changed => sub { print "changed\n"; },
- ) or $in->exit(0);
-$in->exit(0);
diff --git a/docs/interactive/ask_from_list b/docs/interactive/ask_from_list
deleted file mode 100755
index 63c0ee996..000000000
--- a/docs/interactive/ask_from_list
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# Yves Duret <yduret at mandrakesoft.com>
-# license: GPL
-
-use lib qw(/usr/lib/libDrakX);
-use common;
-use interactive;
-
-my %l = (
- 0 => "Welcome To Crackers",
- 1 => "Poor",
- 2 => "Low",
- 3 => "Medium",
- 4 => "High",
- 5 => "Paranoid",
- );
-
-my $in = 'interactive'->vnew(undef, 'default');
-
-my $level = $in->ask_from_list("window title - ask_from_list",
- "radio button\nexamples of utilisation of ask_from_list",
- [ values %l ], $l{2}
- ) or $in->exit(0);
-
-print "$level\n";
-$in->exit(0);
-
diff --git a/docs/interactive/ask_from_listf b/docs/interactive/ask_from_listf
deleted file mode 100755
index 077540b49..000000000
--- a/docs/interactive/ask_from_listf
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# Yves Duret <yduret at mandrakesoft.com>
-# license: GPL
-
-use lib qw(/usr/lib/libDrakX);
-use interactive;
-use Data::Dumper;
-
-my $in = 'interactive'->vnew(undef, 'default');
-
-my @m=(
- { description => "dhcpcd",
- c => 1},
- { description => "dhcpxd",
- c => 3},
- { description => "dhcp-client",
- c => 4},
- );
-my $f = $in->ask_from_listf(_("ask_from_listf"),
- _("Which dhcp client do you want to use?\nDefault is dhcpcd"),
- sub { $_[0]{description} },
- \@m );
-
-print Data::Dumper->Dump([$f],['f']) . "\n";
-
-$in->exit(0);
-
diff --git a/docs/interactive/ask_from_treelist b/docs/interactive/ask_from_treelist
deleted file mode 100755
index ade7141d4..000000000
--- a/docs/interactive/ask_from_treelist
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-# Yves Duret <yduret at mandrakesoft.com>
-# license: GPL
-
-use lib qw(/usr/lib/libDrakX);
-use common;
-use interactive;
-
-my $in = 'interactive'->vnew(undef, 'default');
-my $foo = $in->ask_from_treelist("window title - ask_from_treelist",
- "message\nexamples of utilisation of ask_from_treelist",
- '|',
- ['Custom',
- 'Other|Unlisted',
- 'Matrox|Millennium II=>Matrox Millennium II',
- 'Matrox|Millennium G200=>Matrox Millennium G200',
- 'Matrox|Millennium G400=>Matrox Millennium G400',
- 'Matrox|Millennium G450=>Matrox Millennium G450',
- 'Matrox|Millennium G550=>Matrox Millennium G550',
- 'Sun|FFB 67MHz Creator=>Sun FFB 67MHz Creator',
- 'Sun|FFB 67MHz Creator 3D=>Sun FFB 67MHz Creator 3D',
- 'Sun|FFB 75MHz Creator 3D=>Sun FFB 75MHz Creator 3D',
- ],
- 'Custom'
- ) or $in->exit(0);
-print "$foo\n";
-$in->exit(0);
diff --git a/docs/interactive/wait_message b/docs/interactive/wait_message
deleted file mode 100755
index 0caec4471..000000000
--- a/docs/interactive/wait_message
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/perl
-# Yves Duret <yduret at mandrakesoft.com>
-# license: GPL
-
-use lib qw(/usr/lib/libDrakX);
-use interactive;
-
-my $in = 'interactive'->vnew(undef, 'default');
-my $wait = $in->wait_message('wainting title', _("Moving files to the new partition"));
-sleep(3);
-$wait->set(_("Removing"));
-sleep(3);
-$in->exit(0);
diff --git a/docs/mdk-9.2 b/docs/mdk-9.2
deleted file mode 100644
index 1d5a06494..000000000
--- a/docs/mdk-9.2
+++ /dev/null
@@ -1,129 +0,0 @@
--*- outline -*-
-
- todo list for mdk9.2
- (mainly gtk+ oriented for now)
-
-* erratas
-** put them in gi/perl-install/patch/mdk_9.1
-** move mdk9.1 ones from gi/perl-install/patch into gi/perl-install/patch/mdk_9.0
-
-
-* libDrakX
-** document internals through docbook like kernel-2.5.x does
-
-* mcc vs tools communication
-** faster tools embedding in mcc (gc idea)
- move gui into gui/<sg>.pm so that mcc can just do require on them
- instead of doing slow fork+perl startup (same idea as fast_cgi,
- perl_mod and the like)
-** told apps to ask user whether to save their changes or to discard them on cancel (#1437)
-** to let diskdrake fit better when embedded, we should write "formated - mounted" rather than "formated\nmounted"
-** "testing mode" option in options menu so that we pass --testing to our tools ?
-
-* ugtk2 & tools guies:
-** cleanups:
-*** $o->flush() should be sub { $_[0]->window->process_updates(1) }
- see logdrake::parse_file()'s progress bar as an example
-** saner/cleaner usage of gtk+-2.2 widgets:
-*** use MessageDialog for modal windows (cleaner)
- especially for wait/error messages so that one uses std gtk+ icons for info/error/warning and the like events
-*** use button boxes everywhere when we have several buttons for saner gui (as per gnome specs/recommendations)
-*** gtk::combo => gtk::optionMenu (as per gtk+-2 doc)
-*** use size::group to let things be smoother in some places (eg: clock.pl from mcc)
-
-* tools
-** all:
-*** provide menu entries for more gui tools (?): for now, only harddrake2 and logdrake have one
-*** explanations of std standalone.pm functions are broken due to common.pm overloading
-*** have a button or a menu to access help (was already part of mdk9.1 specs)
- only harddrake2, mcc and rpmdrake have one for now
- policy might be: "most users access tools via the mcc, so let handle help, bug reports and co only in mcc"
-*** rename and provide compatibility links:
-**** adduserdrake => drakeuseradd
-**** diskdrake => drakdisk
-**** harddrake => drakhw
-**** keyboarddrake => drakkeyboard
-**** localedrake => draklocale
-**** logdrake => draklog
-**** menudrake => drakmenu [fredc]
-**** mousedrake => drakmouse
-**** printerdrake => drakprinter
-**** userdrake => drakuser [deush]
-**** XFdrake => drakx11
-** drakboot:
-*** should prevent the user to insert a space in a kernel label (#2826)
-*** fix "Display theme under console" setting from current theme config file (#2662)
-** drakconnect
-*** does not show up zeroconf as a valid mode in "configuring lan" window in embedded mode
-** drakedm:
-*** restart dm service ?
-** harddrake:
-*** colorize the internal help
-*** add raw description (or join('|', vendor, descr)) for mass medias (see drakx bug #3???)
-*** use pure gtk+ instead of interactive for "fields description" or alter interactive so that it creates modal windows
-** logdrake:
-*** search field does not get focus when embedded
-*** we may disable the search button when one deselect all explanation files
-** mcc:
-*** make tool names be black or blue (like in rpmdrake & harddrake2 guies) (#2695)
-*** hide non executable programs instead of warning at runtime if program isn't executable
-*** make more program being options rather than depandancies (ie like rpmdrake and drakwizard)
-*** add scrollbars if root window is below 800x600 (#2961)
-*** add scrollbars for too big translated messages (but how to detect it)
-*** move drakedm from hardware to system section
-*** enhance mcc descriptions (#3265)
-** rpmdrake
-*** save mode (sort by group, mdk choice, ...)
-**** sa serait cool que tu sauve la position (aka choix mdk, tri/alpha, par
- groupe, par taille, ...) et que tu la restaure
-*** m-q accelerator to quit
-*** if package is unselectable, explain why
-*** si conflit, proposer de deselectionner le package en question +tot que de
- devoir se taper l'arborescence pour le deselectionner (a - que la
- recherche e perde pas la selection de package en cours)
-*** some windows are still non modal, like:
- o tout ce qui se rapporte aux dependances "des paquetages
- supplementaires sont necessaires", ... tu oublie de passer "{
- transient => $w->{rwindow} }"
- o toutes les fenetres grpmi. faudrait voir si on peut foutre le
- core de grpmi dans un package pour faire "use grpmi" et seter
- le nouveau $::main_window pour corriger ca.
-*** we need access to urpmi options like "no gpg signature check"
-*** bug 1
-1) selectionner des packages a installer
-
-2) rpmdrake dit que X doit etres vier
-
-3) rpmdrake le vire
-
-4) rpmdrake passe a l'update/isntall proprement dite
-
-5) rpmdrake failled
-
-rpmdrake re-tentera d'enlever le package X du 1 en cas de reessai
-alors qu'il n'est + la
-
-** scannerdrake/sane-find-scanner
-*** do not detect every usb devices as scanner
-** urpmi
-*** --repair-system: add missing dependancies for currently installed packages
-
-
-* packages
-** main package updates:
-*** rpm-4.2
-*** kernel-2.6 (if availlable and stabilized: not probable) ?
- at least, keep kernel-2.4.x
-** add new packages:
-*** kernel-mosix
-*** dvb related packages: vcr, vdr, ...
-** icewm/windowmaker/other wm
-*** export BROWSER like gnome/kde (look at /etc/gnome/gnomerc)
-
-* hardware support
-** kernel: update alsa, bttv, dvb & saa7134 drivers for better hardware support (the laters from http://bytesex.org)
-*** add "REGISTER ^dvb/adapter[0-9]+/[^/]+$ PERMISSIONS root.video 0660" to devfsd
-*** update oss audigy driver from pserver:anonymous@cvs.sourceforge.net:/cvsroot/emu10k1 cvs
-** add cx88 sound driver from http://bytesex.org/snapshot
-** isa detection/probing in ldetect ? (#118, #497) => need some old hw in order to test
- probably not
diff --git a/docs/mdk-vs-redhat b/docs/mdk-vs-redhat
deleted file mode 100644
index 4d0de8223..000000000
--- a/docs/mdk-vs-redhat
+++ /dev/null
@@ -1,43 +0,0 @@
-+ Open Development (at least DrakX)
-+ UDMA66 (HPT366)
-+ gamerz
-+ number of packages
-+ better packages(?)
-+ no automatic handling of ide burners
-+ urpmi/rpmdrake
-+ XFdrake
-+ no newbie install
-+ reiserfs
-+ fat resizing
-+ 3D handling (eg: Voodoo3)
-+ diskdrake (vs diskdruid)
-+ usb storage (?)
-+ KDE2
-+ faces in kdm/gdm
-+ menu
-+ alternatives
-+ /etc/emacs/site-start.d
-+ default config
-+ i18n (bootloader keyboard)
-
-+ More user-friendliness in general:
- + you can choose between multiple net devices when more than one are
- detected
- + you are presented with the media descriptions (disks, cdrom's)
- when you must choose between multiple media, and not only "sda",
- "hdc", ..
- + when installing from a disk partition, you are presented with an
- extract of the directory contents when you fail to give the
- correct location, which is very helpful to correct the input
- instead of simply rebooting to remember where on earth you
- mirrored the distribution on your disks
-
-+ Automatic mode (Redhat's equivalent is called "kickstart") is not
- performed according to a file on the floppy but from kernel parameters,
- which have many pros, among them: (1) we don't need the vfat filesystem
- for that purpose, and (2) with advanced bootloaders such as grub and
- lilo you can edit parameters on the fly at boot time.
-
-- no LABEL= in fstab (for auto renumbering of devices)
-- kerberos
-- LDAP
diff --git a/docs/net_object_class.fig b/docs/net_object_class.fig
deleted file mode 100644
index 19f7f5318..000000000
--- a/docs/net_object_class.fig
+++ /dev/null
@@ -1,73 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter
-100.00
-Single
--2
-1200 2
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 4050 4162 675 338 4050 4162 4725 4500
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 5700 3112 675 338 5700 3112 6375 3450
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 7275 4087 675 338 7275 4087 7950 4425
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 4800 1462 975 487 4800 1462 5775 1950
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 2700 3112 675 338 2700 3112 3375 3450
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 4875 5887 975 487 4875 5887 5850 6375
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 9450 5062 675 338 9450 5062 10125 5400
-1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 4654 4038 3900 3225 4654 4038 754 813
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 4125 1875 3225 2850
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 4575 1950 4200 3750
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 5250 1950 5475 2775
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 3000 3450 3600 3900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 5925 3450 6675 3900
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 2700 3450 4050 5550
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 4125 4500 4575 5400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 5625 3450 5025 5400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 5775 1575 9450 4725
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 7800 4275 9000 4800
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 4800 1950 4800 5400
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 9000 975 9450 4725
-2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
- 7500 75 10687 75 10687 975 7500 975 7500 75
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 7500 375 5400 1050
-2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
- 0 0 1.00 60.00 120.00
- 5550 1800 7200 3675
-4 0 0 50 0 0 12 0.0000 4 135 885 4350 1500 Netconnect\001
-4 0 0 50 0 0 12 0.0000 4 135 435 2475 3150 ISDN\001
-4 0 0 50 0 0 12 0.0000 4 135 720 3675 4200 MODEM\001
-4 0 0 50 0 0 12 0.0000 4 135 960 6825 4125 ETHERNET\001
-4 0 0 50 0 0 12 0.0000 4 135 480 5400 3150 ADSL\001
-4 0 0 50 0 0 12 0.0000 4 135 420 4650 5925 Tools\001
-4 0 0 50 0 0 12 0.0000 4 135 660 9150 5100 Network\001
-4 0 0 50 0 0 12 0.0000 4 135 1305 8400 375 Rest of the world\001
-4 0 0 50 0 0 12 0.0000 4 180 2595 7725 600 (draknet, printerdrake, tinyfirewall\001
-4 0 0 50 0 0 12 0.0000 4 180 2310 7725 825 ftp, http, net_monitor, drakgw)\001
-4 0 0 50 0 0 12 0.0000 4 195 2760 3525 6825 Global variables $in, $prefix, $install\001
-4 0 0 50 0 0 12 0.0000 4 180 2340 3525 7050 shared with the module globals\001
diff --git a/docs/object_class.fig b/docs/object_class.fig
deleted file mode 100644
index 44fd3fe89..000000000
--- a/docs/object_class.fig
+++ /dev/null
@@ -1,32 +0,0 @@
-#FIG 3.2
-Landscape
-Center
-Inches
-Letter
-100.00
-Single
--2
-1200 2
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 2625 1200 2625 1725
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 7575 1125 7575 1650
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 7575 2100 4350 3225
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 5025 2025 4350 3225
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 2625 2100 4350 3225
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 5025 2025 6075 4125
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 2625 1200 4950 1725
-2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
- 7575 1125 4950 1725
-4 0 0 100 0 0 12 0.0000 4 180 1755 1800 1050 install_steps_gtk\001
-4 0 0 100 0 0 12 0.0000 4 180 1440 6900 975 install_steps_stdio\001
-4 0 0 100 0 0 12 0.0000 4 180 1140 2100 1950 interactive_gtk\001
-4 0 0 100 0 0 12 0.0000 4 180 1275 6900 1950 interactive_stdio\001
-4 0 0 100 0 0 12 0.0000 4 180 1875 4125 1950 install_steps_interactive\001
-4 0 0 100 0 0 12 0.0000 4 135 810 3975 3450 interactive\001
-4 0 0 100 0 0 12 0.0000 4 180 975 5625 4350 install_steps\001
diff --git a/docs/porting-ugtk b/docs/porting-ugtk
deleted file mode 100755
index a72faabb6..000000000
--- a/docs/porting-ugtk
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/perl -pi
-#
-# $Id$
-#
-# This is not an automatic gtk+-1.x to gtk+-2.x port tool,
-# just a tool that ease perl apps' gtk2 port.
-# you'll have to fix all remaining problems, beginning by spotted warnings
-# it'll save you basic conversion work
-#
-# if you used Gtk::Text, a little more work will be needed (look at logdrake gtk2 port)
-# if you used Gtk::CTree, Gtk::CList or worse, Gtk::Tree, you'll need quite a lot of exhausting work :-(
-#
-# usage: porting-ugtk <file>
-#
-# hint: always use strict
-
-# switch to gtk2 :
-s!Gtk:!Gtk2:!g;
-/(use|require) Gtk/ and print STDERR "Warning: if this (bad) app that did not use my_gtk, you'll have a hard time :-)\n if not, using both Gtk && my_gtk was misdesigned ...\n";
-s!(use|require) Gtk.*!!g; #
-s!my_gtk!ugtk2!g;
-
-# one should pass the right ":stuff" to "use ugtk2 qw();"
-/ugtk::/ and print STDERR "Warning: you'll have to passe eiter :ask, :create, :helpers or :wrappers to ugtk\n";
-s!ugtk::!!g;
-# if my_gtk wasn't used, this'll be spotted by the lack of "use ugtk2;" anyway
-s!(require|use) ugtk.*!!g;
-
-
-# deprecated :
-/::(CTree|CList|Text[^V])/ and print STDERR "Warning: CTree, CList and Text widgets are deprecated... Good luck :-(\n";
-/gtkcreate_(png|xpm)/ and print STDERR "Warning: new Gtk::Pixmap(gtkcreate_(png|xpm)) should be replaced by gtkcreate_img\n";
-/set_policy/ and print STDERR "Warning: ->set_policy() should be replaced by allow_shrink/allow_grow/set_resizable\n";
-
-# obsoletes methods||functions :
-s!set_usize!set_size_request!g;
-s!gtkset_set_border_width!gtkset_border_width!g;
-s!border_width!set_border_width!g;
-s!-(end|spread|extended|start|single)!'\1'!g;
-s!createScrolledWindow!create_scrolled_window!g;
-# quite a lot less usefull with gtk+2 but who knows... :
-s!set_position\(1\)!set_position('center')!g;
-s!gtkpng!gtkcreate_img!g;
-# hacky but usefull in ->set_pixmap() context; else that'll be spoted at run time :
-s!gtkcreate_png!gtkcreate_img!g;
-# usefull sometimes but not in most cases :
-#s!new GtkVBox!create_vbox!g;
-#s!new GtkHBox!create_hbox!g;
diff --git a/docs/spec-DrakX-8.0.html b/docs/spec-DrakX-8.0.html
deleted file mode 100644
index 3fd545447..000000000
--- a/docs/spec-DrakX-8.0.html
+++ /dev/null
@@ -1,405 +0,0 @@
-<html><head><title>DrakX Specification for Linux-Mandrake 8.0</title></head>
-<body bgcolor="#FFFFFF" link="#0066FF" vlink="#0066FF" alink="#FF0000">
-<table border="0" cellpadding="0" cellspacing="0" width="100%">
-<tr>
-<td bgcolor="#99AAFF"><h2 align="left">DrakX Specification for Linux-Mandrake 8.0</h2></td></tr>
-<tr><td valign="top">
-Current team of Install group is :
-<p>
-<table cellpadding="2" cellspacing="2" border="1" width="30%">
-<tbody>
-<tr valign="Top">
-<td valign="Top">gc
-
-</td>
-</tr>
-<tr valign="Top">
-<td valign="Top">damien
-
-</td>
-</tr>
-<tr valign="Top">
-<td valign="Top">fpons
-
-</td>
-</tr>
-<tr valign="Top">
-<td valign="Top">pixel
-
-</td>
-</tr>
-</tbody>
-</table>
-<p>
-
-<pre>
-
- <b>Boot process (stage1)</b>
-
- Installation begin by booting from CD-ROM or Diskette. From CD-ROM all
-installation method are available (CD, HD, NFS, FTP, HTTP) on options. From
-Diskette according to image selected, only some related method (network or cdrom
-or hd) are available and module managed due to size limitation to 1.44Mb.
- Options are always available by pressing on F1.
-
- <b>DrakX process (stage2)</b>
-
- DrakX installation organized in steps (execution sequence described below).
-Steps listed on left side and help available on bottom right side. most of the
-screen is available for various dialog for interacting with the user. Steps
-execution sequence is automated and described below.
-
-Mouse is probed and if none has been found or if the mouse has not moved, a
-specific mouse configuration is displayed at the begining.
-
-
-Before the graphical steps, there is a detection step. It detects various
-hardware, including modems (from tty0 to tty7), mouse (serial, usb, ps/2) and
-tablets.
-
- <b>Steps</b>
-
- <i>Choose Your language</i>: step always displayed. default choice is previous one or
-<font color="#000080"><i>English</i></font>. After choosing a language, a license splash screen translated in the
-chosen language is displayed with <font color="#000080"><i>Accept</i></font> and <font color="#000080"><i>Refuse</i></font> buttons. <font color="#000080"><i>Refuse</i></font> should
-stop installation. <font color="#000080"><i>Accept</i></font> validate language choice which are propagated to all
-DrakX visible widget. Advanced mode allow to select other language available to
-be installed. Advanced mode allow to select language which will be installed on
-system.
- If step is redone, the license is no more displayed.
-
- <font color="#000080"><i>Select Install Class</i></font>: step always displayed. default choice is previous one
-or <font color="#000080"><i>Recommended</i></font>. Only one other option available is <font color="#000080"><i>Customized</i></font>. Two buttons
-available are <font color="#000080"><i>Install</i></font> or <font color="#000080"><i>Upgrade</i></font>. Available steps (left side) are changed
-according to installation class selected, where the default is the one of
-<font color="#000080"><i>Recommended</i></font> with <font color="#000080"><i>Install</i></font>.
-
- <font color="#000080"><i>Hard Drive Detection</i></font>: step always displayed. In recommended mode,
-automatically done. In Customized mode, all modules that manage SCSI/IDE cards
-are loaded automatically and a question asking for other module to load is
-displayed.
- If clicked later or if to the question to load other module the
-answer is <font color="#000080"><i>Yes</i></font>, a list of module is displayed (or if the question to other
-module to load is. When a module is chosen, two options are available
-<font color="#000080"><i>Autoprobe</i></font> and <font color="#000080"><i>Specify options</i></font>. Autoprobe try to load the module without any
-other user options (default module parameter). Specify options allow user to
-give module parameters individually in a list for all known parameters. At this
-point <font color="#000080"><i>Ok</i></font> or <font color="#000080"><i>Cancel</i></font> are available, Cancel should stop the module installation
-and go to next step. If any error occurs during module installation, a question
-asking to try with other parameter is displayed, the same module is still used.
-
- <font color="#000080"><i>Setup filesystems</i></font>: step always displayed. display a list of available choice
-accoding to what has been probed. May contains <font color="#000080"><i>Use free space</i></font>, "Use existing
-partition<font color="#000080"><i>, </i></font>Use the window partition for loopback<font color="#000080"><i>, </i></font>Use the free space on the
-Windows partition<font color="#000080"><i>, </i></font>Remove Windows(TM)<font color="#000080"><i>|</i></font>Erase entire disk" (according to disk
-configuration =&gt; only one big fat for the first case only), "Custom disk
-partitioning".
- If <font color="#000080"><i>Use free space</i></font> mode, auto allocation in available on available disk.
- If <font color="#000080"><i>Use existing partition</i></font> mode, a list of partition named in Linux
-scheme are displayed with their approximate size in Mb and propose mount point
-to choose in list boxes for each partitions available on hard drive.
- If <font color="#000080"><i>Use the window partition for loopback</i></font> mode, DrakX use available size
-on the windows partition to create a root file and a swap file which will be
-used in loopback, this means this is a lnx4win installation.
- If <font color="#000080"><i>Use the free space on the Windows partition</i></font> mode, DrakX will resize
-the windows partition and allocate true linux filesystem (at least / and swap).
- If <font color="#000080"><i>Remove Windows(TM)</i></font>|<font color="#000080"><i>Erase entire disk</i></font> mode, DrakX clean the
-partition table before auto allocating partition.
- If <font color="#000080"><i>Custom disk partitioning</i></font> mode, diskdrake is launch. TO BE DEFINED to
-change make diskdrake use only advanced mode.
-Diskdrake show all partition of all non-removable disk graphically. All special
-partition are hidden, only user accessible partition are visible: this remove
-extended partition, whole disk partition on sparc platform. Clicking on a disk
-notebook tab show all his partitions. Clicking on a partition show all actions
-available for this partition (depend if customized or advanced mode) as well as
-information on this partition (depend if customized or advanced mode). Most
-diskdrake operation are done without writing on disk (exception are Resizing
-partitions) and everything is written once on the disk when exiting diskdrake,
-at any time if writing partition table is necessary, there are always a dialog
-box asking the user to confirm the write. If no operation are modifying
-partition table, no dialog is displayed on exit (for example if giving mount
-point to partition). General action are available too:
- <font color="#000080"><i>Clear All</i></font>: clear all partition of the given disk.
- <font color="#000080"><i>Auto allocate</i></font>: try to allocate partition in available disk (not the
-seen disk).
- <font color="#000080"><i>Undo</i></font>: undo last operation.
- <font color="#000080"><i>Done</i></font>: quit and save changes.
-Other operations are available in advanced mode:
- <font color="#000080"><i>Rescue partition table</i></font>: try to rescue a lost partition table,
-absolutely no garantee to succeed and may destroy what could be saveable by
-another tools.
- <font color="#000080"><i>Reload</i></font>: reload partition table from disk, erasing all changes in
-memory done by the user.
- <font color="#000080"><i>Wizard</i></font>: go to partition wizard, that the partition filesystems default
-behaviour on startup.
- <font color="#000080"><i>Restore from floppy</i></font>: restore a partition table from previously saved
-partition table from diskdrake.
- <font color="#000080"><i>Save to floppy</i></font>: save partition table to floppy.
- <font color="#000080"><i>Options</i></font>: global options available for filesystem configuration. This
-include <font color="#000080"><i>Removable media automouting supermount</i></font> check box disabled by default.
- Operation available on partition are:
- <font color="#000080"><i>Mount point</i></font>: change or define mount point for partition, only
-available for true filesystem partition.
- <font color="#000080"><i>Resize</i></font>: resize partition, if a specific algorithm to keep data is
-used no data may be lost, else all data are lost but nothing is written by
-diskdrake on the partition data in this last case (this means data can be
-restored by restoring original size and location).
- <font color="#000080"><i>Delete</i></font>: delete partition, if the same partition is created (same type,
-location, size) all data can be restored as diskdrake doesn't write on partition
-data.
- Operation available on partition table but in advanced mode are:
- <font color="#000080"><i>Type</i></font>: change type of partition, all data will be lost but diskdrake as
-above does not destroy them, and everyting can be restored.
- <font color="#000080"><i>Format</i></font>: format partition, at this point, all data ARE LOST.
- <font color="#000080"><i>Mount</i></font>: mount partition now, usefull for swap to increase memory
-capacity for machine low on resource that are not available to complete setup
-filesystem step correctly (problably if a resize partition is used on FAT fs).
-allow Mounting swap on customized mode too.
- A legend for partition type colors is available
-(Ext2,ReiserFS,Swap,FAT,Other,Empty). It has additionnal features to create a
-partition or change its type (only available in advanced mode).
-
- <font color="#000080"><i>Format partitions</i></font>: step always displayed. display list of partition to
-format with click boxes. Some are defined according to type of partitions and if
-the partition has been created or taken back.
-If a partition has already been formated, it is not proposed, or if it should
-not be proposed (alrady existing partition like /mnt/windows).
-On Advanced tag, an additional dialog is displayed to select partition to format
-(all available partition listed) and to format them with bad block checking.
-
- <font color="#000080"><i>Choose packages</i></font>: step always displayed. default selection done to be
-<font color="#000080"><i>correct</i></font> according to size available, Install or Upgrade, Hardware available.
-This selection is done according to <font color="#000080"><i>Mandrake first choice</i></font> of packages.
-On all mode, display groups and main desktop used (KDE or Gnome), an
-individual package selection check box is available to allow selecting package
-individually. In this case, a dialog displaying a tree with groups, (Mandrake
-first choice/alternatives) and packages is shown on the left part, a description
-window for each packages is shown on the right part.
-
- <font color="#000080"><i>Install system</i></font>: step always displayed. no interactive and display
-installation progression. include if available and on a CD basis a spash screen
-of advertising and other (pub!).
-
- <font color="#000080"><i>Hardware panel</i></font>: step always displayed. show current configuration for
-Mouse, Keyboard, TimeZone, Graphic/TV Card, Monitor.
-At each values chosen (list boxes displayed a
-synthesis description) the current dialog is removed from screen and specific
-configuration panels are displayed (like currently for mouse, keyboard ...).
-And end of these specific configuration panels, this one is remapped on screen
-to be accepted in general.
-
- <b>Sub steps of Hardware panel:</b>
-
- <font color="#000080"><i>Configure mouse</i></font>: displayed on request or if the mouse has not been
-moved (so unsafe detection), but have to be displayed earlier. A mouse tree
-selection for type is displayed with default case as what is probed or
-<font color="#000080"><i>serial/Generic 2 button Mouse</i></font> if none has been probed. <font color="#000080"><i>Cancel</i></font> disable mouse
-modification and <font color="#000080"><i>Ok</i></font> allow next mouse configuration dialog. Then comes a serial
-port dialog for serial mice (default mouse connected to COM1 if nothing found).
-Then a mouse screen control is chown (according to mouse capacity: 3 buttons
-with or without mouse, need 7 buttons checking ?). Here <font color="#000080"><i>Ok</i></font> validate to go to
-next step and <font color="#000080"><i>Cancel</i></font> to first mouse dialog displayed (mouse tree selection for
-type).
-
- <font color="#000080"><i>Configure keyboard</i></font>: displayed on request. default is set according to
-TimeZone definition (itself defaulting to language selection at the beginning).
-A list of keyboard is shown to the user and <font color="#000080"><i>Ok</i></font> validates change and return to
-<font color="#000080"><i>Hardware panel</i></font> dialog with enabled change. <font color="#000080"><i>Cancel</i></font> abort any modification and
-return to the same <font color="#000080"><i>Hardware panel</i></font> dialog.
-
- <font color="#000080"><i>Configure timezone</i></font>: displayed on request. default is set according to
-language selection. A timezone tree selection is shown with only the subtree
-corresponding to the current selection expanded (as other tree dialog). <font color="#000080"><i>Ok</i></font>
-validates change and return to <font color="#000080"><i>Hardware panel</i></font> dialog whereas <font color="#000080"><i>Cancel</i></font> avoid
-the change before returning to the same main dialog.
-
- <font color="#000080"><i>Graphic Card</i></font>: display graphic card probed. No change available.
-
- <font color="#000080"><i>TV Card</i></font>: display TV/Tuner card probed. No change available.
-
- <font color="#000080"><i>Monitor</i></font>: need execution of ddcxinfos at this point. Only Size, Max
-resolution and depth displayed. No change available.
-
-
- Miscellaneous step have been removed and dispatched to other steps. "Use
-hard drive optimisation<font color="#000080"><i> and </i></font>Enable num lock at startup<font color="#000080"><i> are removed. </i></font>Choose
-security level<font color="#000080"><i> is moved to security step. </i></font>Precise RAM size if needed" and
-<font color="#000080"><i>Clean /tmp at each boot</i></font> are moved to bootloader step.
-<font color="#000080"><i>Removable media automouting</i></font> is moved to diskdrake options.
-
- <font color="#000080"><i>Security</i></font>: step displayed only in customized mode. TO BE DEFINED. should
-display at least securty level to choose. level are <font color="#000080"><i>Low</i></font>, <font color="#000080"><i>Medium</i></font>, <font color="#000080"><i>High</i></font> and
-for advanced there are <font color="#000080"><i>Welcome To Crackers</i></font>, <font color="#000080"><i>Poor</i></font>, <font color="#000080"><i>Paranoid</i></font> too.
-
- <font color="#000080"><i>Configure networking</i></font>: step always displayed. dialog always displayed in
-both <font color="#000080"><i>Recommended</i></font> and <font color="#000080"><i>Customized</i></font> mode. A list of network configuration
-entries are shown with the following:
- <font color="#000080"><i>Configure a normal modem connection</i></font>
- <font color="#000080"><i>Configure an ISDN connection</i></font>
- "Configure a DSL (or ADSL) connection
- <font color="#000080"><i>Configure a cable connection</i></font>
- <font color="#000080"><i>Configure local network</i></font>|<font color="#000080"><i>Reconfigure local network</i></font>
- <font color="#000080"><i>Disable networking</i></font>|<font color="#000080"><i>Enable networking</i></font>
- <font color="#000080"><i>Done</i></font>
- By cliking on a specific item, another dialog is displayed to configure
-some specific part of the network.
- <font color="#000080"><i>Configure a normal modem connection</i></font>: display a question to probe for a
-modem if not already detected, then if none are found or probe has been refused
-a list of possible serial device are listed (in the form ttySx / COM(x+1) with
-the current mouse device removed if it is serial). After that a dialog including
-all parameters than can be used is shown. This includes <font color="#000080"><i>Connection Name</i></font>,
-<font color="#000080"><i>Phone number</i></font>, <font color="#000080"><i>Login ID</i></font>, <font color="#000080"><i>Password</i></font>, <font color="#000080"><i>Authentication</i></font>, <font color="#000080"><i>Domain name</i></font>, <font color="#000080"><i>DNS 1</i></font>
-and <font color="#000080"><i>DNS 2</i></font>. Authentication is a combo of <font color="#000080"><i>PAP</i></font>, <font color="#000080"><i>Termina-Based</i></font> and
-<font color="#000080"><i>Script-Based</i></font> (It seems necessary to get CHAP back on this one, no way of
-testing TO BE DEFINED). If no DNS are given, the connection is configured to try
-using provider DNS. <font color="#000080"><i>Ok</i></font> and <font color="#000080"><i>Cancel</i></font> button are available.
- <font color="#000080"><i>Configure an ISDN connection</i></font>:
-Try to detect some PCI card. If not detected, asks if it's a ISA/pcmcia or PCI
-card, and gives the list of the cards. Information are then asked:
-<font color="#000080"><i>Card IRQ</i></font> only if ISA/pcmcia
-<font color="#000080"><i>Card mem (DMA)</i></font> only if ISA/pcmcia
-<font color="#000080"><i>Card IO</i></font> only if ISA/pcmcia
-<font color="#000080"><i>Card IO_0</i></font> only if ISA/pcmcia with io0
-<font color="#000080"><i>Card IO_1</i></font> only if ISA/pcmcia with io1
-<font color="#000080"><i>Your personal phone number</i></font> phone
-<font color="#000080"><i>Provider name (ex provider.net)</i></font>
-<font color="#000080"><i>Provider phone number</i></font>
-<font color="#000080"><i>Provider dns 1</i></font>
-<font color="#000080"><i>Provider dns 2</i></font>
-<font color="#000080"><i>Dialing mode</i></font> auto or manual
-<font color="#000080"><i>Account Login (user name)</i></font>
-<font color="#000080"><i>Account Password</i></font> hided
-<font color="#000080"><i>Confirm Password</i></font> again
- <font color="#000080"><i>Configure a DLS (or ADSL) connection</i></font>:
-The user chooses between pptp, pppoe and dhcp. If dhcp, redirection to LAN.
-If there is more than one ethernet card, The user must choose the card to use
-(displayed with the module). After that, some informations are asked:
-<font color="#000080"><i>Provider name (ex provider.net)</i></font>
-<font color="#000080"><i>Provider dns 1</i></font>
-<font color="#000080"><i>Provider dns 2</i></font>
-<font color="#000080"><i>Account Login (user name)</i></font>
-<font color="#000080"><i>Account Password</i></font> hided
-<font color="#000080"><i>Confirm Password</i></font> again
- <font color="#000080"><i>Configure a cable connection</i></font>: redirection to LAN
- <font color="#000080"><i>Configure local network</i></font>: display what has been probed with a question
-about using another module and <font color="#000080"><i>Yes</i></font>, <font color="#000080"><i>No</i></font> and <font color="#000080"><i>See hardware info</i></font> buttons.
-<font color="#000080"><i>No</i></font> is the default. If <font color="#000080"><i>Yes</i></font> is clicked a list of modules is displayed with
-<font color="#000080"><i>Ok</i></font> or <font color="#000080"><i>Cancel</i></font> buttons available. <font color="#000080"><i>Cancel</i></font> should go back to previous
-question. If <font color="#000080"><i>See hardware info</i></font> is clicked a list of probed hardware is
-displayed. If <font color="#000080"><i>Yes</i></font> is clicked, for each ethernet interface, a dialog asking for
-IP address, Netmask and Automatic IP check box (DHCP/BOOTP) is displayed. Then
-if DHCP has been chosen, only a dialog asking for Host name and another for HTTP
-proxy and FTP proxy if any. If DHCP has not been chosen, an IP address has to be
-defined and a dialog including <font color="#000080"><i>Host name</i></font>, <font color="#000080"><i>DNS server</i></font>, <font color="#000080"><i>Gateway</i></font> and "Gateway
-device" is displayed. Then the same HTTP proxy and FTP proxy dialog as above. As
-network configuration may to have been reworked a bit it has TO BE DEFINED if
-this is kept like that or not.
- <font color="#000080"><i>Disable networking</i></font>|<font color="#000080"><i>Enable networking</i></font> is just a way to toggle
-networking on or off, may be to be accessible only for advanced mode.
- <font color="#000080"><i>Quit</i></font> exit the network step.
-
-<b>NETWORK ADVANCED DOCUMENTATION:</b>
-Here is a list of entry points available in post install without using the ugly
-install graphic toolkit:
-
-<a href=<font color="#000080"><i>http://www.mandrakesoft.com/~damien/html/draknet_advanced_doc.txt</i></font>>http://www.mandrakesoft.com/~damien/html/draknet_advanced_doc.txt</a>
-
- <font color="#000080"><i>Configure Printer</i></font>: step always displayed. In recommended mode, only
-activated if a local printer is detected, else no printer are configured by
-default. In customized mode or if the step has been clicked a list of printer
-already configured is displayed and the possibility to add or exit the
-configuration. It allow configuration of printers for both LPR and CUPS
-individually (available by advanced mode when adding a printer). Printer
-protocol managed are local/usb/samba/ncp/lpd for LPR and
-local/usb/serial/samba/lpd/cups_network for CUPS.
-
- <font color="#000080"><i>Set root password</i></font>: step always displayed for Install only. In
-recommended mode display only a <font color="#000080"><i>Password</i></font> entry and a <font color="#000080"><i>Password (again)</i></font> entry
-to select the root password. In advanced mode, a Use NIS (yellow pages) check
-boxes and Use MD5 check box are available. <font color="#000080"><i>Ok</i></font> validate root password and "No
-password<font color="#000080"><i> avoid setting a password. </i></font>No password<font color="#000080"><i> is only available in </i></font>Low"
-security level or less. The length of the minimal password depend upon security level.
-
-In corporate firewall :
- <font color="#000080"><i>Set admin password</i></font>: step always displayed for Install only. It only
- displays a <font color="#000080"><i>Password</i></font> entry and a <font color="#000080"><i>Password (again)</i></font> entry
-to select the admin password.
-The length of the minimal password depend upon security level. (double of the
- security level)
-
- <font color="#000080"><i>Add a user</i></font>: step always displayed for Install Only. In recommend mode
-display <font color="#000080"><i>Real name</i></font>, <font color="#000080"><i>User name</i></font>, <font color="#000080"><i>Password</i></font>, <font color="#000080"><i>Password (again)</i></font> and icon
-choices as graphical. For customized mode a shell combo is available to choose a
-specific shell for the user depending on the package installed. The real name is
-the user friendly name of the user whereas user name is its login id name. The
-box display user that have already been added below the title. <font color="#000080"><i>Accept user</i></font>
-button allow the creation of the user and <font color="#000080"><i>Done</i></font> finish this step. High or
-higher security level implies the creation of at least one user. Password length
-are subject to same restriction according to security level. In advanced mode,
-allow to choose the user in auto login mode.
-
- <font color="#000080"><i>Create a boot disk</i></font>: step always displayed. In recommended mode this
-step is automatically done by doing nothing. If clicked or customized mode, the
-user is prompted to allow building a boot disk (default is yes). In advanced
-mode allow selection of floppy drive.
-
- <font color="#000080"><i>Install boot loader</i></font>: step always displayed. In recommended mode this
-step is automatically done. In customized mode, a combo <font color="#000080"><i>Boot device</i></font> list the
-various boot device that can be used where the bootloader can be installed. The
-boot device can the Linux description of the whole disk available (ex: /dev/hda)
-or partition available in these disk or floppy drives. Other platform
-specificity are not listed here.
- LBA check box is displayed in advanced mode (enabled by default) to
-allow using LBA addressing if available (PC with LILO). bootloader combo to
-select a given bootloader to use, available choice are <font color="#000080"><i>Grub</i></font>, "LILO with text
-menu<font color="#000080"><i>, </i></font>LILO with graphical menu<font color="#000080"><i>. default chosen is </i></font>LILO
-with graphical menu<font color="#000080"><i>. </i></font>Delay before booting default image" entry
-field is available with default value current setting (upgrade) or 5 else.
-<font color="#000080"><i>Precise RAM size if needed (found xx MB)</i></font> entry is displayed too,
-<font color="#000080"><i>clean /tmp</i></font> check box is disabled by default too.
-Boot in graphical mode (init 5) is available here in advanced mode too
-(previously in X configuration). <font color="#000080"><i>Video mode</i></font> combo, <font color="#000080"><i>Password</i></font>, <font color="#000080"><i>Password (again)</i></font>,
-<font color="#000080"><i>Restrict command line options</i></font> check box is displayed.
-Video mode combo list text mode and video mode used for frame buffer, video mode
-used for frame buffer are available only if the install managed to boot with
-frame buffer activated. Password are restricted according to security level as
-other password. Password are mandatory according to security level TO BE DEFINED.
-
- <font color="#000080"><i>Configure X</i></font>: step always displayed. By default on recommended mode,
-everything is done automatically if possible up to test of graphic card, and if
-the user accept the settings no more question are asked to him. In customized
-mode a dialog is displayed to choose resolution, color depth and which version
-of XFree (with 3D optionally) is available for the current card where only a
-short description is displayed. <font color="#000080"><i>Ok</i></font> button allow to jump to test phase (for the
-first time only) if available. <font color="#000080"><i>Cancel</i></font> return to main XFree configuration
-window allowing to change Monitor, Graphic card, Server options or Resolution
-with X version to choose. <font color="#000080"><i>Show all</i></font> extend resolution list to more resolutions
-according to card (with onboard memory) only and no more monitor capabilities.
- The main dialog is a list of command to change some X configuration aspect
-according to advanced mode or not :
- <font color="#000080"><i>Change Monitor</i></font>: display a tree selection of monitors where default one
-is selected. <font color="#000080"><i>Ok</i></font> and <font color="#000080"><i>Cancel</i></font> buttons are available.
- <font color="#000080"><i>Change Graphic card</i></font>: display a tree selection of graphic card where
-default one is selected. <font color="#000080"><i>Ok</i></font> and <font color="#000080"><i>Cancel</i></font> buttons are available. If <font color="#000080"><i>Unlisted</i></font>
-is chosen, then a tree of server/driver is displayed containing available server
-for XF3 or driver for XF4. <font color="#000080"><i>Cancel</i></font> return to main window and <font color="#000080"><i>Ok</i></font> validates
-change.
- <font color="#000080"><i>Change Server options</i></font>: available only in advanced mode. display list
-of check boxes options for server currently used. <font color="#000080"><i>Ok</i></font> and <font color="#000080"><i>Cancel</i></font> available.
- <font color="#000080"><i>Change Resolution</i></font>: change resolution and depth including with X server
-version chosen (relative to Xdrakres too).
- <font color="#000080"><i>Show Information</i></font>: display an information dialog showing current
-configuration internals of X.
- <font color="#000080"><i>Test again</i></font>: restart test with current configuration of X.
- <font color="#000080"><i>Quit</i></font>: exit X configuration main window. Other question about autologin
-and window manager to use are asked on Add user step.
-
- <font color="#000080"><i>Exit install</i></font>: step displayed only in customized mode but always
-executed. Only a text is displayed with a <font color="#000080"><i>Ok</i></font> button. If clicked and some step
-have not been executed/completed correctly, a question dialog ask the user if he
-really want to quit now, default answer is <font color="#000080"><i>No</i></font>. Advanced switch let user access
-to do the previously <font color="#000080"><i>Auto install floppy</i></font> step in DrakX &lt; 8.0. This is just a
-question asking the user to generate an auto install floppy automatically.
-</pre>
-</body>
-</html>
diff --git a/docs/wizard.doc b/docs/wizard.doc
deleted file mode 100644
index 0bbf8d254..000000000
--- a/docs/wizard.doc
+++ /dev/null
@@ -1,31 +0,0 @@
-How to handle wizard?
-
-to switch in wizard mode:
-set $::isWizard to true;
-if $::Wizard_no_previous is set to true, the wizard won't display the previous button. Usefull for first step
-if $::Wizard_finished is set to true, the wizard will display Finish instead of Next. Usefull for last step
-
-how to code:
-Code as if there were no wizard.
-OK button is displayed as Next
-Cancel is displayed as Previous
-a additional button Cancel is added, xhich die with the exception 'wizard_cancelled'
-
-You have to handle the previous button. For example:
-
-step 1:
-ask_from list( blablablabl) or return;
-step2:
-ask_from list( blablablabl) or goto step1;
-step3:
-ask_from list( blablablabl) or goto step2;
-
-etc... You don't have to handle the wizard Cancel button as it send an exception.
-
-Understood? If yes, you'll see that there is a pb with ask_yesorno. In this case, yes+next returns true, no+next returns false, Cancel send the exception 'wizard_canceled' and previous send the exception 'wizard previous'. So you have to handle the previous button manually.
-
-plop.
-
-dam's, pour vous servir
-
-
diff --git a/help.msg.xml b/help.msg.xml
deleted file mode 100644
index 37ead3180..000000000
--- a/help.msg.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<document>
- <green>Welcome to <blue>Mandrakelinux</blue> install help</green>
-
-In most cases, the best way to get started is to simply press the <yellow>&lt;Enter&gt;</yellow> key.
-If you experience problems with standard install, try one of the following
-install types (type the highlighted text and press <yellow>&lt;Enter&gt;</yellow>):
-
- o <white>vgalo</white> for low resolution graphical installation.
- o <white>text</white> for text installation instead of the graphical one.
- o <white>linux</white> for standard graphical installation at normal resolution.
-
-
-To repair an already installed system type <white>rescue</white> followed
-by <yellow>&lt;Enter&gt;</yellow>.
-
-You can also pass some <white>&lt;specific kernel options&gt;</white> to the Linux kernel.
-For example, try <white>linux noapic</white> if your system has trouble operating
-your network adapter correctly.
-<red>NOTE</red>: You cannot pass options to modules (SCSI, ethernet card) or devices
-such as CD-ROM drives in this way. If you need to do so, use noauto mode.
-</document>
diff --git a/isolinux-graphic-simple.bmp b/isolinux-graphic-simple.bmp
deleted file mode 100644
index eada90017..000000000
--- a/isolinux-graphic-simple.bmp
+++ /dev/null
Binary files differ
diff --git a/isolinux-graphic-simple.bmp.parameters b/isolinux-graphic-simple.bmp.parameters
deleted file mode 100644
index 8fd220512..000000000
--- a/isolinux-graphic-simple.bmp.parameters
+++ /dev/null
@@ -1,10 +0,0 @@
-clear_h=800
-clear_w=600
-isolinux_mode=1
-mode=259
-progress_c=189
-progress_h=13
-progress_real_w=425
-progress_w=4
-progress_x=186
-progress_y=396
diff --git a/isolinux-graphic.bmp b/isolinux-graphic.bmp
deleted file mode 100644
index 407c99721..000000000
--- a/isolinux-graphic.bmp
+++ /dev/null
Binary files differ
diff --git a/isolinux-graphic.bmp.parameters b/isolinux-graphic.bmp.parameters
deleted file mode 100644
index 8fd220512..000000000
--- a/isolinux-graphic.bmp.parameters
+++ /dev/null
@@ -1,10 +0,0 @@
-clear_h=800
-clear_w=600
-isolinux_mode=1
-mode=259
-progress_c=189
-progress_h=13
-progress_real_w=425
-progress_w=4
-progress_x=186
-progress_y=396
diff --git a/kernel/.cvsignore b/kernel/.cvsignore
deleted file mode 100644
index 66624465e..000000000
--- a/kernel/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-modules.description
-all.kernels
diff --git a/kernel/Makefile b/kernel/Makefile
deleted file mode 100644
index 0b4695ba1..000000000
--- a/kernel/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-all: all.kernels
-
-all.kernels: ../mdk-stage1/mar/mar update_kernel list_modules.pm
- ./update_kernel
-
-../mdk-stage1/mar/mar:
- make -C `dirname $@` mar
-
-clean:
- rm -rf *~ modules.description all.kernels
-
-check:
- perl modules.pl check > /dev/null
- @echo "unlisted drivers: "
- @for i in $$(cut -f 2 -d \" /usr/share/ldetect-lst/pcitable|egrep -v '^#|ADSL:|Bad:|Card:|H[cs]f:|ISDN:|LT:'|sort|uniq|less);do fgrep -q $$i list_modules.pm|| echo -n "$$i ";done
- @echo
diff --git a/kernel/list_modules.pm b/kernel/list_modules.pm
deleted file mode 100644
index d711f6d68..000000000
--- a/kernel/list_modules.pm
+++ /dev/null
@@ -1,316 +0,0 @@
-package list_modules; # $Id$
-
-use MDK::Common;
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(load_dependencies dependencies_closure category2modules module2category sub_categories kernel_is_26 module_extension);
-
-# the categories have 2 purposes
-# - choosing modules to include on stage1's (cf update_kernel and mdk-stage1/pci-resource/update-pci-ids.pl)
-# - performing a load_category or probe_category (modules.pm and many files in perl-install)
-
-our %l = (
- ################################################################################
- network =>
- {
- atm => [ qw(ambassador eni firestream he horizon idt77252 iphase lanai nicstar zatm) ],
- main => [
- if_(arch() =~ /ppc/, qw(bmac ibm_emac mace oaknet sungem)),
- if_(arch() =~ /^sparc/, qw(sunbmac sunhme sunqe)),
- if_(arch() !~ /alpha|sparc/,
- qw(3c501 3c503 3c505 3c507 3c509 3c515 3c990 3c990fx),
- qw(82596 ac3200 acenic aironet4500_card amd8111e at1700 atp),
- qw(b44 bcm4400 com20020-pci cs89x0 de2104x de600 de620),
- qw(defxx), # most unused
- qw(depca dgrs dmfe e100 e2100 eepro eepro100 eexpress epic100 eth16i),
- qw(ewrk3 fealnx hamachi hp hp-plus hp100),
- qw(iph5526), #- fibre channel
- qw(lance natsemi ne ne2k-pci ni5010 ni52 ni65 nvnet),
- qw(pcnet32 plip prism2_plx rcpci rhineget),
- qw(sb1000 sis900 skfp smc-ultra smc9194 starfire),
- qw(tc35815 tlan tulip typhoon uli526x via-rhine),
- qw(wd winbond-840 forcedeth),
- qw(sungem sunhme), # drivers for ultrasparc, but compiled in ix86 kernels...
- ),
- qw(3c59x 8139too 8139cp sundance), #rtl8139
- ],
- firewire => [ qw(eth1394 pcilynx) ],
- gigabit => [
- qw(cxgb dl2k e1000 ixgb myri_sbus ns83820 r8169 s2io sis190 sk98lin skge tg3 via-velocity yellowfin ),
- qw(bcm5820 bcm5700), #- encrypted
- ],
-
- raw => [
- qw(ppp_generic ppp_async ppp_deflate bsd_comp),
- ],
- pcmcia => [
- qw(3c574_cs 3c589_cs axnet_cs fmvj18x_cs),
- qw(ibmtr_cs nmclan_cs pcnet_cs smc91c92_cs),
- qw(xirc2ps_cs xircom_cb xircom_tulip_cb),
- ],
- #- generic NIC detection for USB seems broken (class, subclass,
- #- protocol reported are not accurate) so we match network adapters against
- #- known drivers :-(
- usb => [
- qw(catc CDCEther kaweth pegasus rtl8150 usbnet),
- ],
- wireless => [
- qw(acx100_pci adm8211 airo airo_cs aironet4500_cs aironet_cs),
- qw(at76c503-i3861 at76c503-i3863 at76c503-rfmd at76c503-rfmd-acc at76c505-rfmd at76c505-rfmd2958 at76c505a-rfmd2958),
- qw(ath_pci atmel_cs atmel_pci dyc_ar5),
- qw(hostap_pci hostap_plx ipw2100 ipw2200 madwifi_pci netwave_cs orinoco orinoco_cs orinoco_pci orinoco_plx),
- qw(prism2_cs prism2_pci prism2_usb prism54 r8180 ray_cs rt2400 rt2500 usbvnet_rfmd vt_ar5k wavelan_cs wvlan_cs zd1201),
- if_(arch() =~ /ppc/, qw(airport)),
- ],
- isdn => [
- qw(avmfritz c4 cdc-acm b1pci divas hfc4s8s_l1 hfc_usb hisax hisax_st5481 hisax_fcpcipnp hysdn sedlfax t1pci tpam w6692pci),
- qw(fcpci fcdsl fcdsl fcdsl2 fcdslsl fcdslslusb fcdslusb fcdslusba fcusb fcusb2 fxusb fxusb_CZ)
- ],
- modem => [
- qw(ltmodem mwave ),
- ],
- slmodem => [
- qw(slamr slusb snd-atiixp-modem snd-intel8x0m snd-via82xx-modem),
- ],
- tokenring => [ qw(3c359 abyss ibmtr lanstreamer olympic proteon skisa smctr tms380tr tmspci) ],
- wan => [ qw(c101 cosa cyclomx cycx_drv dlci farsync hdlc hostess_sv11 n2 pc300 pci200syn sbni sdla sdladrv sealevel syncppp wanxl z85230) ],
- usb_dsl => [ qw(cxacru eagle-usb speedtch usbatm xusbatm) ],
- },
-
- ################################################################################
- disk =>
- {
- # ide drivers compiled as modules:
- ide => [ qw(aec62xx cs5520 cs5530 delkin_cb ide-generic rz1000 sc1200 slc90e66 triflex trm290) ],
- # ide drivers compiled in core kernel:
- all_ide => [
- qw(ali14xx amd74xx dtc2278 ht6560b qd65xx umc8672 aec62xx alim15x3 atiixp cmd64x cs5520 cs5530 cy82c693),
- qw(hpt34x hpt366 ns87415 opti621 pdc202xx_new pdc202xx_old piix rz1000 sc1200 serverworks),
- qw(siimage sis5513 slc90e66 triflex trm290 via82cxxx),
- ],
- scsi => [
- if_(arch() =~ /ppc/, qw(mesh mac53c94)),
- if_(arch() =~ /^sparc/, qw(qlogicpti)),
- if_(arch() !~ /alpha/ && arch() !~ /sparc/,
- '53c7,8xx',
- qw(AM53C974 BusLogic NCR53c406a a100u2w advansys aha152x aha1542 aha1740),
- qw(atp870u dc395x dc395x_trm dmx3191d dtc g_NCR5380 in2000 initio pas16 pci2220i psi240i fdomain),
- qw(qla1280 qla2x00 qlogicfas qlogicfc),
- qw(seagate wd7000 sim710 sym53c416 t128 tmscsim u14-34f ultrastor),
- qw(eata eata_pio eata_dma nsp32),
- ),
- qw(aic7xxx aic7xxx_old aic79xx pci2000 qlogicisp sym53c8xx lpfc lpfcdd), # ncr53c8xx
- ],
- sata => [
- # note that ata_piix manage RAID devices on ICH6R
- qw(ahci ata_adma ata_piix sata_nv sata_promise sata_qstor sata_sil sata_sil24 sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8),
- ],
- hardware_raid => [
- if_(arch() =~ /^sparc/, qw(pluto)),
- if_(arch() !~ /alpha/ && arch() !~ /sparc/,
- # 3w-xxxx drives ATA-RAID, 3w-9xxx and arcmsr drive SATA-RAID
- qw(a320raid),
- qw(3w-9xxx 3w-xxxx aacraid arcmsr cciss cpqfc cpqarray DAC960 dpt_i2o gdth i2o_block ipr it821x it8212),
- qw(iteraid megaraid megaraid_mbox megaraid_sas mptscsih qla2100 qla2200 qla2300 qla2322 qla4xxx qla6312 qla6322 pdc-ultra),
- qw(ips ppa imm),
- if_(c::kernel_version =~ /^\Q2.4/,
- qw(ataraid hptraid silraid pdcraid)
- ),
- ),
- ],
- pcmcia => [ qw(aha152x_cs fdomain_cs nsp_cs qlogic_cs ide-cs) ], #ide_cs
- raw => [ qw(sd_mod) ],
- usb => [ qw(usb-storage) ],
- firewire => [ qw(sbp2) ],
- cdrom => [ qw(ide-cd sr_mod) ],
- },
-
- ################################################################################
-
- bus =>
- {
- usb => [ qw(usb-uhci usb-ohci ehci-hcd uhci-hcd ohci-hcd) ],
- bluetooth => [ qw(bcm203x bfusb bpa10x hci_usb) ],
- firewire => [ qw(ohci1394) ],
- i2c => [
- qw(i2c-ali1535 i2c-ali1563 i2c-ali15x3 i2c-amd756 i2c-amd8111 i2c-i801 i2c-i810 i2c-nforce2),
- qw(i2c-piix4 i2c-prosavage i2c-savage4 i2c-sis5595 i2c-sis630 i2c-sis96x i2c-via i2c-viapro i2c-voodoo3),
- if_(arch() !~ /^ppc/, qw(i2c-hydra i2c-ibm_iic i2c-mpc)),
- ],
- pcmcia => [
- if_(arch() !~ /^sparc/, qw(au1x00_ss i82365 i82092 pd6729 tcic vrc4171_card vrc4173_cardu yenta_socket)), # cb_enabler
- ],
- usb_keyboard => [ qw(usbkbd keybdev) ],
- #serial_cs
- #ftl_cs 3c575_cb apa1480_cb epic_cb serial_cb tulip_cb iflash2+_mtd iflash2_mtd
- #cb_enabler
- },
-
- fs =>
- {
- network => [ qw(af_packet nfs) ],
- cdrom => [ qw(isofs) ],
- loopback => [ qw(isofs loop cryptoloop gzloop), if_($ENV{MOVE}, qw(supermount)) ],
- local => [
- if_(arch() =~ /^i.86|x86_64/, qw(vfat ntfs)),
- if_(arch() =~ /^ppc/, qw(hfs)),
- qw(reiserfs),
- ],
- various => [ qw(smbfs romfs ext3 xfs jfs ufs ntfs) ],
-
- },
-
- ################################################################################
- multimedia =>
- {
- sound => [
- if_(arch() =~ /ppc/, qw(dmasound_pmac snd-powermac)),
- if_(arch() =~ /sparc/, qw(snd-sun-amd7930 snd-sun-cs4231 snd-sun-dbri)),
- if_(arch() !~ /^sparc/,
- qw(ad1816 ad1848 ad1889 ali5455 audigy audio awe_wave cmpci cs4232 cs4281 cs46xx),
- qw(emu10k1 es1370 es1371 esssolo1 forte gus i810_audio ice1712 kahlua mad16 maestro),
- qw(maestro3 mpu401 msnd_pinnacle nm256_audio nvaudio opl3 opl3sa opl3sa2 pas2 pss),
- qw(rme96xx sam9407 sb sgalaxy snd-ad1816a snd-ad1848 snd-ali5451 snd-als100),
- qw(snd-als4000 snd-atiixp snd-au8810 snd-au8820 snd-au8830 snd-audigyls snd-azt2320 snd-azt3328 snd-azx),
- qw(snd-bt87x snd-ca0106 snd-cmi8330 snd-cmipci snd-cs4231 snd-cs4232 snd-cs4236 snd-cs4281),
- qw(snd-cs46xx snd-darla20 snd-darla24 snd-dt019x snd-emu10k1 snd-emu10k1x snd-ens1370 snd-ens1371 snd-es1688 snd-es18xx),
- qw(snd-es1938 snd-es1968 snd-es968 snd-fm801 snd-gina20 snd-gina24 snd-gina3g snd-gusclassic snd-gusextreme),
- qw(snd-gusmax snd-hda-intel snd-hdsp snd-hdspm snd-ice1712 snd-ice1724 snd-indi snd-indigo snd-indigodj snd-indigoio snd-intel8x0 snd-interwave),
- qw(snd-interwave-stb snd-korg1212 snd-layla20 snd-layla24 snd-layla3g snd-maestro3 snd-mia snd-mixart snd-mona snd-mpu401 snd-nm256),
- qw(snd-opl3sa2 snd-opti92x-ad1848 snd-opti92x-cs4231 snd-opti93x snd-pcxhr snd-rme32),
- qw(snd-rme96 snd-rme9652 snd-sb16 snd-sb8 snd-sbawe snd-sgalaxy snd-sonicvibes),
- qw(snd-sscape snd-trident snd-via82xx snd-vx222 snd-vxp440 snd-vxpocket snd-wavefront),
- qw(snd-ymfpci sonicvibes sscape trident via82cxxx_audio wavefront ymfpci),
- ),
- ],
- tv => [ qw(bt878 bttv cx8800 cx88-blackbird dpc7146 ivtv saa7134 zr36067) ],
- dvb => [ qw(budget budget-av budget-ci cinergyT2 dvb-dibusb dvb-ttpci dvb-ttusb-budget hexium_orion hexium_gemini skystar2) ],
- photo => [ qw(dc2xx mdc800) ],
- radio => [ qw(radio-gemtek-pci radio-maxiradio) ],
- scanner => [ qw(scanner microtek) ],
- gameport => [ qw(cs461x ns558 emu10k1-gp fm801-gp lightning ns558 vortex) ],
- usb_sound => [ qw(audio dabusb dsbr100 snd-usb-audio snd-usb-usx2y usb-midi) ],
- webcam => [ qw(cpia_usb cyber2000fb ibmcam konicawc mod_quickcam ov511 ov511-alt ov518_decomp ovfx2 pwc quickcam se401 stv680 sn9c102 ultracam usbvideo usbvision vicam w9968cf) ],
- },
-
- # USB input stuff get automagically loaded by hotplug and thus
- # magically work through /dev/input/mice multiplexing:
- input => {
- joystick => [
- qw(iforce xpad),
- # there're more drivers in drivers/input/joystick but they support non USB or PCI devices
- # and thus cannot be detected but by slow (and maybe dangerous?) load_category:
- qw(a3d adi analog cobra db9 gamecon gf2k grip grip_mp guillemot interact),
- qw(joydump magellan sidewinder spaceball spaceorb stinger tmdc turbografx warrior)
- ],
- remote => [ qw(ati_remote) ],
- # USB tablets and touchscreens:
- tablet => [ qw(acecad aiptek wacom kbtab) ],
- touchscreen => [ qw(mtouchusb touchkitusb) ],
- },
-
- various =>
- # just here for classification, unused categories (nor auto-detect, nor load_thiskind)
- {
- raid => [
- qw(dm-crypt dm-mirror dm-mod linear lvm-mod multipath raid0 raid1 raid10 raid5),
- ],
- mouse => [
- qw(atixlmouse busmouse generic_serial inport logibm logibusmouse msbusmouse pcips2 qpmouse synclinkmp),
- if_(arch() =~ /ppc/, 'macserial'),
- qw(hid mousedev usbhid usbmouse),
- ],
- char => [
- if_(arch() =~ /ia64/, qw(efivars)),
- qw(applicom n_r3964 nvram pc110pad ppdev),
- qw(wdt_pci i810-tco sx), #- what are these???
- ],
- crypto => [
- qw(amd768_rng amd7xx_tco i810_rng hw_random leedslite padlock),
- ],
- laptop => [
- qw(i8k sonypi toshiba),
- ],
- serial => [
- qw(8250_pci 8250 epca esp isicom istallion moxa mxser stallion sx synclink synclinkmp),
- ],
- other => [
- qw(defxx i810fb ide-floppy ide-scsi ide-tape loop lp nbd sg st),
- qw(parport_pc parport_serial),
- qw(btaudio),
-
- arch() =~ /i.86/ ? 'aes-i586' : 'aes',
- if_(arch() =~ /sparc/, 'openprom'),
-
- qw(evdev), qw(usblp printer), 'floppy',
-
- #- these need checking
- qw(rrunner meye),
- ],
- agpgart => [
- if_(arch() =~ /alpha/, qw(alpha-agp)),
- if_(arch() =~ /ia64/, qw(hp-agp i460-agp)),
- if_(arch() =~ /ppc/, qw(uninorth-agp)),
-
- qw(ali-agp amd64-agp amd-k7-agp ati-agp efficeon-agp intel-agp),
- qw(k7-agp mch-agp nvidia-agp sis-agp sworks-agp via-agp),
- ],
- },
-);
-
-my %dependencies;
-
-sub load_dependencies {
- my ($file) = @_;
-
- %dependencies = map {
- my ($f, $deps) = split ':';
- $f => [ split ' ', $deps ];
- } cat_($file);
-}
-
-sub dependencies_closure {
- my @l = map { dependencies_closure($_) } @{$dependencies{$_[0]} || []};
- (@l, $_[0]);
-}
-
-sub category2modules {
- map {
- my ($t1, $t2s) = m|(.*)/(.*)|;
- my @sub = $t2s eq '*' ? keys %{$l{$t1}} : split('\|', $t2s);
- map {
- my $l = $l{$t1}{$_} or die "bad category $t1/$_\n" . backtrace();
- @$l;
- } @sub;
- } split(' ', $_[0]);
-}
-
-sub all_modules() {
- map { @$_ } map { values %$_ } values %l;
-}
-
-sub module2category {
- my ($module) = @_;
- foreach my $t1 (keys %l) {
- my $h = $l{$t1};
- foreach my $t2 (keys %$h) {
- $module eq $_ and return "$t1/$t2" foreach @{$h->{$t2}};
- }
- }
- return;
-}
-
-sub ethernet_categories() {
- 'network/main|gigabit|pcmcia|tokenring|usb|wireless|firewire';
-}
-
-sub sub_categories {
- my ($t1) = @_;
- keys %{$l{$t1}};
-}
-
-sub kernel_is_26 { $_[0] =~ /^2\.6/ }
-
-sub module_extension { kernel_is_26($_[0]) ? 'ko' : 'o' }
-
-1;
diff --git a/kernel/modules.pl b/kernel/modules.pl
deleted file mode 100644
index 22f71e048..000000000
--- a/kernel/modules.pl
+++ /dev/null
@@ -1,280 +0,0 @@
-use strict;
-
-
-BEGIN {
- #- for testing purpose
- (my $f = __FILE__) =~ s|/[^/]*$||;
- push @INC, $f;
-}
-
-use MDK::Common;
-use list_modules;
-
-#- seldom used modules
-#- we don't bother making a special floppy for those
-my %modules_only_for_all_img = (
-
- 'network/main' => [
- qw(acenic),
- qw(aironet4500_card com20020-pci hamachi starfire winbond-840),
-
- if_(arch() =~ /alpha|ppc/, qw(sb1000)),
- qw(iph5526),
-
- qw(ac3200 at1700 atp ni5010 ni52 ni65), #- unused from Jeff
- ],
-
- 'disk/scsi' => [
- # ISA cards:
- qw(NCR53c406a aha152x psi240i qlogicfas qlogicfc wd7000 sim710 t128 ultrastor), '53c7,8xx',
- qw(qla2x00 in2000 pas16 a100u2w seagate g_NCR5380),
- if_(arch() =~ /x86_64/, qw(53c7,8xx nsp32 initio advansys atp870u)), #- old
- qw(AM53C974), # deprecated by tmscsim
- qw(u14-34f), #- duplicate from ultrastor.o
- #- still used, keeping them: qw(aha1542 sym53c416),
- qw(lpfcdd), #- HUGE!!
-
- qw(dc395x dc395x_trm dmx3191d qla1280 BusLogic fdomain),
- qw(pci2220i eata eata_pio eata_dma),
- 'aic7xxx_old', 'qlogicisp',
- 'dtc',
- ],
- 'disk/sata' => [
- qw(ahci ata_piix sata_nv sata_promise sata_sil sata_sis sata_svw sata_sx4 sata_uli sata_via sata_vsc sx8),
- ],
-
- 'disk/hardware_raid' => [
- qw(i2o_block qla2200 qla2300 cpqfc DAC960 gdth pdc-ultra mptscsih),
- ],
-);
-
-#- modules that will only be available in stage2
-#- those modules are NOT in all.img, network.img...
-#- there should only be modules that can't be used on stage1
-#- completly unused modules should be removed directly from the kernel
-#- (and so be removed from stage2 too)
-my %modules_removed_from_stage1 = (
- 'network/main' => [
- 'plip'
- ],
-
- 'disk/hardware_raid' => [
- qw(imm ppa),
- ],
-);
-
-my @modules_always_on_stage1 = qw(floppy);
-
-
-sub flatten_and_check {
- my ($h) = @_;
- map {
- my $category = $_;
- my @l = @{$h->{$category}};
- if (my @bad = difference2(\@l, [ category2modules($category) ])) {
- foreach (@bad) {
- if (my $cat = module2category($_)) {
- warn "ERROR in modules.pl: module $_ is in category $cat, not in $category\n";
- } else {
- warn "ERROR in modules.pl: unknown module $_\n";
- }
- }
- exit 1;
- }
- @l;
- } keys %$h;
-}
-
-my @modules_only_for_all_img = flatten_and_check(\%modules_only_for_all_img);
-my @modules_removed_from_stage1 = flatten_and_check(\%modules_removed_from_stage1);
-
-
-my %images = (
- pcmcia => 'fs/cdrom|loopback disk/cdrom|raw|pcmcia bus/pcmcia',
- cdrom => 'fs/cdrom|loopback disk/cdrom|raw|scsi',
- network => 'bus/usb|usb_keyboard|pcmcia disk/raw|usb',
- network_drivers => 'fs/network|loopback network/main|pcmcia|usb|raw|gigabit',
- all => 'fs/cdrom disk/cdrom|raw bus/usb|usb_keyboard disk/usb|scsi fs/loopback|local bus/pcmcia disk/ide|pcmcia|sata|hardware_raid fs/network network/main|pcmcia|usb|raw|gigabit|wireless|tokenring bus/firewire disk/firewire',
-);
-
-my $verbose = $ARGV[0] eq '-v' && shift;
-my ($f, @para) = @ARGV;
-$::{$f}->(@para);
-
-sub image2modules {
- my ($image) = @_;
- my $l = $images{$image};
-
- my @modules = if_($image !~ /drivers/, @modules_always_on_stage1);
- push @modules, map { category2modules($_) } split(' ', $l);
-
- @modules = difference2(\@modules, \@modules_removed_from_stage1);
-
- if ($image !~ /all/) {
- @modules = difference2(\@modules, \@modules_only_for_all_img);
- }
-
- @modules;
-}
-
-sub remove_unneeded_modules {
- my ($kern_ver) = @_;
-
- #- need creating a first time the modules.dep for all modules
- #- it will be redone in make_modules_dep when unneeded modules are removed
- make_modules_dep($kern_ver);
- load_dependencies("all.kernels/$kern_ver/modules.dep");
-
- my $ext = module_extension($kern_ver);
-
- my @all = list_modules::all_modules();
- my @all_with_deps = map { dependencies_closure($_) } @all;
- my %wanted_modules = map {; "$_.$ext" => 1 } @all_with_deps;
- foreach (all("all.kernels/$kern_ver/modules")) {
- $wanted_modules{$_} or unlink "all.kernels/$kern_ver/modules/$_";
- }
-}
-
-sub make_modules_per_image {
- my ($kern_ver) = @_;
-
- make_modules_dep($kern_ver);
- load_dependencies("all.kernels/$kern_ver/modules.dep");
-
- my $ext = module_extension($kern_ver);
-
- foreach my $image (keys %images) {
- my @modules_with_deps = uniq(map { dependencies_closure($_) } image2modules($image));
- my @l = map { "$_.$ext" } @modules_with_deps;
-
- my $dir = "all.kernels/$kern_ver/modules";
- @l = grep { -e "$dir/$_" } @l;
-
- if ($image =~ /all/) {
- system("cd $dir ; tar cf ../${image}_modules.tar @l") == 0 or die "tar failed\n";
- } else {
- my $gi_base_dir = chomp_(`pwd`) . '/..';
- system("cd $dir ; $gi_base_dir/mdk-stage1/mar/mar -c ../${image}_modules.mar @l") == 0 or die "mar failed\n";
- }
- }
-}
-
-sub make_modules_dep {
- my ($kern_ver) = @_;
-
- my @l =
- kernel_is_26($kern_ver) ?
- cat_("all.kernels/$kern_ver/lib/modules/$kern_ver/modules.dep") :
- `/sbin/depmod-24 -F all.kernels/$kern_ver/boot/System.map-$kern_ver -e *.o | perl -pe 's/\\\n//'`;
-
- @l = map {
- if (/(\S+):\s+(.*)/) {
- my ($module, @deps) = map { m!.*/(.*)\.k?o(\.gz)$! && $1 } $1, split(' ', $2);
- if (member($module, 'plip', 'ppa', 'imm')) {
- @deps = map { $_ eq 'parport' ? 'parport_pc' : $_ } @deps;
- } elsif ($module eq 'vfat') {
- push @deps, 'nls_cp437', 'nls_iso8859-1';
- }
- if_(@deps, join(' ', "$module:", @deps));
- } else {
- ();
- }
- } @l;
-
- output("all.kernels/$kern_ver/modules.dep", map { "$_\n" } @l);
-}
-
-sub make_modules_description {
- my ($kern_ver) = @_;
- my $ext = module_extension($kern_ver);
- my $dir = "all.kernels/$kern_ver/modules";
-
- my @l;
- if (kernel_is_26(`uname -r`)) { #- modinfo behaves differently depending on the build kernel used
- my $name;
- @l = map {
- $name = $1 if m!^filename:\s*(.*)\.$ext!;
- if_($name && /^description:\s*(.*)/, "$name\t$1");
- } `cd $dir ; /sbin/modinfo *.$ext`;
- } else {
- @l = map {
- if_(/(.*?)\.$ext "(.*)"/, "$1\t$2\n");
- } `cd $dir ; /sbin/modinfo-24 -f '%{filename} %{description}\n' *.$ext`;
- }
- output("modules.description", @l);
-}
-
-sub pci_modules4stage1 {
- my ($category) = @_;
- my @modules = difference2([ category2modules($category) ], \@modules_removed_from_stage1);
- print "$_\n" foreach uniq(map { dependencies_closure($_) } @modules);
-}
-
-sub check() {
- my $error;
- my %listed;
- while (my ($t1, $l) = each %list_modules::l) {
- while (my ($t2, $l) = each %$l) {
- ref $l or die "bad $l in $t1/$t2";
- foreach (@$l) {
- $listed{$_} = "$t1/$t2";
- }
- }
- }
-
- my %module2category;
- my %deprecated_modules = %listed;
- my $not_listed = sub {
- my ($msg, $verbose, @l) = @_;
- my %not_listed;
- foreach (@l) {
- my ($mod) = m|([^/]*)\.k?o(\.gz)?$| or next;
- delete $deprecated_modules{$mod};
- next if $listed{$mod};
- s|.*?mdk(BOOT)?/||;
- s|kernel/||; s|drivers/||; s|3rdparty/||;
- $_ = dirname $_;
- $_ = dirname $_ if $mod eq basename($_);
- $module2category{$mod} = $_;
- push @{$not_listed{$_}}, $mod;
- }
- if ($verbose) {
- print "$msg $_: ", join(" ", @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
- }
- };
- $not_listed->('NOT LISTED', 1, `cd all.kernels/2.6* ; find -name "*.k?o" -o -name "*.k?o.gz"`);
- $not_listed->('not listed', $verbose, `rpm -qpl /RPMS/kernel-2.6*`);
- if (%deprecated_modules) {
- my %per_cat;
- push @{$per_cat{$listed{$_}}}, $_ foreach keys %deprecated_modules;
- foreach my $cat (sort keys %per_cat) {
- print "bad/old modules ($cat) : ", join(" ", sort @{$per_cat{$cat}}), "\n";
- }
- }
-
- {
- require '/usr/bin/merge2pcitable.pl';
- my $pcitable = read_pcitable("/usr/share/ldetect-lst/pcitable");
- my $usbtable = read_pcitable("/usr/share/ldetect-lst/usbtable");
-
- my @l1 = uniq grep { !/:/ && $_ ne 'unknown' } map { $_->[0] } values %$pcitable;
- if (my @l = difference2(\@l1, [ keys %listed ])) {
- my %not_listed;
- push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
- if (my $l = delete $not_listed{''}) {
- print "bad/old pcitable modules : ", join(" ", @$l), "\n";
- }
- print STDERR "PCITABLE MODULES NOT LISTED $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
- #$error = 1;
- }
-
- my @l2 = uniq grep { !/:/ && $_ ne 'unknown' } map { $_->[0] } values %$usbtable;
- if (my @l = difference2(\@l2, [ keys %listed ])) {
- my %not_listed;
- push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
- print STDERR "usbtable modules not listed $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
- }
- }
-
- exit $error;
-}
diff --git a/kernel/strip_modules b/kernel/strip_modules
deleted file mode 100755
index cd4077a66..000000000
--- a/kernel/strip_modules
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/sh
-#
-# Given a list of objects, strip all static symbols except those
-# required by insmod.
-#
-# Copyright Keith Owens <kaos@ocs.com.au>. GPL.
-# Sat Feb 1 12:52:17 EST 1997
-#
-# Mainly intended for reducing the size of modules to save space
-# on emergency and install disks. Be aware that removing the
-# static symbols reduces the amount of diagnostic information
-# available for oops. Not recommended for normal module usage.
-#
-# This code requires the modules use MODULE_PARM and EXPORT_.
-# Do not strip modules that have not been converted to use
-# MODULE_PARM or are using the old method of exporting symbols.
-# In particular do not use on modules prior to 2.1.20 (approx).
-#
-# The objects are stripped in /tmp, only if the strip works is
-# the original overwritten. If the command line to strip the
-# symbols becomes too long, the strip is done in multiple passes.
-# Running strip_module twice on the same object is safe (and a
-# waste of time).
-#
-
-sizeofptr="/tmp/$$.sizeofptr"
-echo 'int main() { return sizeof(void *); }' | gcc -xc - -o $sizeofptr
-$sizeofptr
-export SIZEOF_POINTER=$?
-rm -f $sizeofptr
-
-cat > /tmp/$$.awk <<\EOF
-BEGIN {
- strip = "/usr/bin/objcopy";
- nm = "/usr/bin/nm";
- cp = "/bin/cp";
- mv = "/bin/mv";
- rm = "/bin/rm";
- tmp = "/tmp";
- command_size = 400; # arbitrary but safe
-
- getline < "/proc/self/stat";
- pid = $1;
- tmpcopy = tmp "/" pid ".object";
- nmout = tmp "/" pid ".nmout";
-
- for (i = 1; i < ARGC; ++i)
- strip_module(ARGV[i]);
-
- do_command(rm " -f " tmpcopy " " nmout);
-
- exit(0);
-}
-
-function strip_module(object,
- keep_symbol, to_strip, symbol, command, changed) {
- do_command(cp " -a " object " " tmpcopy);
- do_command(nm " " tmpcopy " > " nmout);
- # delete array_name sometimes breaks, internal error, play safe
- for (symbol in keep_symbol)
- delete keep_symbol[symbol];
- for (symbol in to_strip)
- delete to_strip[symbol];
- new_module_format = 0;
- ptrskip = 2 + 2 * ENVIRON["SIZEOF_POINTER"];
- while ((getline < nmout) > 0) {
- $0 = substr($0, ptrskip);
- # b static variable, uninitialised
- # d static variable, initialised
- # r static array, initialised
- # t static label/procedures
- if ($1 ~ /[bdrt]/)
- to_strip[$2] = "";
- else if ($2 ~ /R __ksymtab_/)
- keep_symbol[substr($2, 11)] = "";
- else if ($0 ~ /R __module_parm_/)
- keep_symbol[substr($2, 15)] = "";
- else if ($0 ~ /D __parm_/)
- keep_symbol[substr($2, 8)] = "";
- else if ($3 ~ /__ksymtab/) {
- keep_symbol[$5] = "";
- }
- else if ($1 != "?")
- keep_symbol[$2] = "";
- if ($2 ~ /__module/)
- new_module_format = 1;
- }
- close(nmout);
- command = "";
- changed = 0;
- failure = 0;
- if (new_module_format) {
- for (symbol in to_strip) {
- if (!(symbol in keep_symbol)) {
- changed = 1;
- if (length(command) > command_size) {
- failure = failure || do_command(strip command " " tmpcopy);
- command = "";
- }
- command = command " --strip-symbol=" symbol;
- }
- }
- }
- if (command != "") {
- changed = 1;
- failure = failure || do_command(strip command " " tmpcopy);
- }
- if (changed && !failure)
- do_command(mv " " tmpcopy " " object);
-}
-
-function do_command(command) {
- if ((ret = system(command)) != 0) {
- giveup("command \"" command "\" failed " ret, ret);
- return 1;
- }
- return 0;
-}
-
-function giveup(message, ret) {
- print "strip_module: " message > "/dev/stderr";
-# exit(ret);
-}
-EOF
-
-awk -f /tmp/$$.awk "$@"
-ret=$?
-rm -f /tmp/$$.awk
-exit $ret
diff --git a/kernel/update_kernel b/kernel/update_kernel
deleted file mode 100755
index a32878339..000000000
--- a/kernel/update_kernel
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/perl
-
-# this script takes kernels rpms from RPMS/ and create various files in all_kernels/
-# for each rpms in RPMS, it does:
-# RPMS/kernel-VER-*.rpm ->
-# all.kernels/VER/all_modules.tar (used for all.rdz)
-# all.kernels/VER/*.mar (used for other rdz)
-# all.kernels/VER/modules.cz (used for stage2)
-# all.kernels/VER/modules.dep
-# all.kernels/VER/vmlinuz
-#
-# if RPMS is empty, this script tries to find kernels in $main_repository
-
-use MDK::Common;
-use list_modules;
-
-my $main_repository = '/export/media/main';
-my $rpm = 'rpm --nosignature';
-
-
-my $MOVE = $ARGV[0] eq '--move' && shift;
-
-@ARGV <= 1 or die "usage: ./update_kernel [--move] [<kernel rpm>]\n";
-
-eval { rm_rf('all.kernels') }; #- remove old things
-mkdir 'all.kernels';
-
-my $main = chomp_(cat_('RPMS/.main'));
-my $main_BOOT = chomp_(cat_('RPMS/.main-BOOT'));
-
-if (@ARGV) {
- install_kernel($ARGV[0]);
-} elsif (! -d 'RPMS') {
- update_kernel_from_repository($main_repository, '2.6', 0);
- update_kernel_from_repository($main_repository, '2.6', 1);
- install_kernel(glob("$main_repository/kernel-xbox*"), 1) if arch() =~ /i.86/;
-}
-
-extract_kernel($_) foreach glob("RPMS/*.rpm");
-
-sub system_verbose { print join(' ', @_), "\n"; system(@_) }
-sub sys { &system_verbose; $? and die }
-
-sub rpm2version {
- my ($kernel_rpm) = @_;
- `$rpm -qpl $kernel_rpm` =~ m!/boot/vmlinuz-(.*)! && $1 or die "can't find vmlinuz in $kernel_rpm\n";
-}
-
-sub update_kernel_from_repository {
- my ($repository, $main_ver, $is_BOOT) = @_;
- my $rpm_wildcard = 'kernel-' . ($is_BOOT ? 'BOOT-' : (arch() =~ /i.86/ ? 'i586-up-1GB-' : '')) . $main_ver . '*.rpm';
- my @kernels = glob("$repository/$rpm_wildcard");
-
- install_kernel($_, 1) foreach @kernels;
-}
-
-sub install_kernel {
- my ($kernel_rpm) = @_;
- my $basename = basename($kernel_rpm);
- warn "Installing rpm $basename in RPMS\n";
- mkdir 'RPMS';
- cp_af($kernel_rpm, "RPMS/$basename");
-
- if (!$main) {
- $main = rpm2version($kernel_rpm);
- output('RPMS/.main', "$main\n");
- }
- if (!$main_BOOT && $kernel_rpm =~ /BOOT/) {
- $main_BOOT = rpm2version($kernel_rpm);
- output('RPMS/.main-BOOT', "$main_BOOT\n");
- }
-}
-
-sub extract_kernel {
- my ($kernel_rpm) = @_;
-
- my $kern_ver = rpm2version($kernel_rpm);
- my $dir = "all.kernels/$kern_ver";
-
- warn "Extracting kernel $kern_ver\n";
-
- eval { rm_rf($dir) };
- mkdir_p("$dir/modules");
- sys("rpm2cpio $kernel_rpm | (cd $dir ; cpio -id)");
-
- rename "$dir/boot/vmlinuz-$kern_ver", "$dir/vmlinuz" or die "can't find vmlinuz\n";
-
- sys("find $dir -name '*.gz' | xargs gunzip");
-
- my $ext = module_extension($kern_ver);
-
- open(my $F, "find $dir -name '*.$ext' |");
- my $file; while ($file = <$F>) {
- chomp($file);
- rename $file, "$dir/modules/" . basename($file) or warn "conflict for $file\n";
- }
-
- if (kernel_is_26($kern_ver)) {
- warn "no stripping on 2.6 since it breaks modules\n";
- } else {
- print STDERR "stripping $kern_ver: ";
- sys("./strip_modules $dir/modules/*.$ext");
- print STDERR "done\n";
- }
-
- sys('perl', 'modules.pl', 'remove_unneeded_modules', $kern_ver) if $kern_ver !~ /BOOT/;
-
- sys('perl', 'modules.pl', 'make_modules_per_image', $kern_ver);
- sys('perl', 'modules.pl', 'make_modules_description', $kern_ver) if $kern_ver eq $main;
-
- if (!$MOVE) {
- print STDERR "packdrake $kern_ver: ";
- sys("cd $dir/modules ; ls *.$ext | packdrake -b9s ../modules.cz 400000");
- print STDERR "done\n";
- }
-
- eval { rm_rf("$dir$_") } foreach qw(/boot /lib /usr /modules);
-}
diff --git a/make_boot_img b/make_boot_img
deleted file mode 100755
index a1e46bbf7..000000000
--- a/make_boot_img
+++ /dev/null
@@ -1,843 +0,0 @@
-#!/usr/bin/perl
-
-use Config;
-use MDK::Common;
-Config->import;
-my ($arch) = $Config{archname} =~ /(.*?)-/;
-
-my $default_append = "ramdisk_size=128000";
-# full acpi support for x86_64, enough acpi support for x86 ht, no acpi for others
-my $default_acpi = $arch =~ /i.86/ ? "acpi=ht" : $arch =~ /x86_64/ ? "" : "acpi=off";
-my $default_vga = "vga=788 splash=silent";
-my $timeout = 150;
-
-my $instdir = "mdk-stage1";
-my $tmp_mnt = '/tmp/drakx_mnt';
-my $tmp_mnt_initrd = '/tmp/drakx_mnt2';
-
-my $sudo;
-if ($>) {
- $sudo = "sudo";
- $ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
-}
-
-sub __ { print @_, "\n"; system(@_) }
-sub _ { __ @_; $? and die }
-sub mke2fs {
- my ($f) = @_;
- _ "/sbin/mke2fs -q -m 0 -F -s 1 $f";
- _ "/sbin/tune2fs -c 0 -U clear -T 1970010101 $f";
-}
-
-_ "$sudo mkdir -p $tmp_mnt $tmp_mnt_initrd";
-mkdir "images";
-
-my $main = chomp_(cat_('kernel/RPMS/.main'));
-my $main_BOOT = chomp_(cat_('kernel/RPMS/.main-BOOT'));
-my @kernels = grep { !/xbox/ } all('kernel/all.kernels');
-my @kernels_BOOT = grep { /BOOT/ } @kernels;
-
-my @all_images = (
- if_($arch =~ /i.86|x86_64/, 'cdrom.img', 'cdrom-changedisk.img', 'pcmcia.img', 'isolinux', 'boot.iso', 'all.img', 'hd_grub.img', 'network.img', 'network_drivers.img'),
- if_($arch =~ /ia64/, 'all.img'),
- if_($arch =~ /ppc/, 'all.img'),
- );
-
-my @images = @ARGV ? @ARGV : map { "images/$_" } @all_images;
-
-if (any { /move/ } @images) {
- -e "$instdir/init-move" or die "ERROR: $instdir not built for move\n";
-} else {
- -e "$instdir/init-move" and die "ERROR: $instdir built for move\n";
-}
-
-foreach my $img (@images) {
- my ($type, $I, $extension) = $img =~ m!([^/]*)(64)?\.([^.]*)$!;
-
- if ($img =~ /hd_grub/) {
- hd_grub($img);
- } elsif ($img =~ /isolinux/) {
- isolinux($main, @kernels);
-
- if (my ($tftpboot) = grep { -e $_ } qw(/tftpboot /var/lib/tftpboot)) {
- system("/bin/cp -f isolinux/alt0/* $tftpboot");
- }
- } elsif ($img =~ /move/) {
- isolinux_move($main);
-
- if (my ($tftpboot) = grep { -e $_ } qw(/tftpboot /var/lib/tftpboot)) {
- system("/bin/cp -f move/isolinux/* $tftpboot/move 2>/dev/null");
- }
- } elsif ($img =~ /boot.iso/) {
- boot_iso($img, \@kernels);
- } elsif ($img =~ /drivers/) {
- drivers($type, $I, "$img-$_") foreach @kernels_BOOT;
- rename("$img-$main_BOOT", $img);
- } elsif ($extension eq 'rdz') {
- initrd($tmp_mnt_initrd, $type, $I, "$img-$_") foreach @kernels;
- } elsif ($extension eq 'img') {
- print STDERR "calling boot_img_$arch for $img\n";
- $::{"boot_img_$arch"}->($type, $I, "$img-$_", "kernel/all.kernels/$_/vmlinuz") foreach $type eq 'all' ? @kernels : @kernels_BOOT;
- rename("$img-$main", $img) or rename("$img-$main_BOOT", $img);
- } else {
- die "unknown image $img";
- }
-}
-
-sub syslinux_color {
- "0" . {
- default => '7',
- blue => '9',
- green => 'a',
- red => 'c',
- yellow => 'e',
- white => 'f',
- }->{$_[0]} || die "unknown color $_[0]\n";
-}
-
-sub syslinux_msg {
- my ($msg_xml_file, @more_text) = @_;
-
- require XML::Parser;
-
- sub xml_tree2syslinux {
- my ($current_color, $tree) = @_;
- my (undef, @l) = @$tree;
- join('', map {
- my ($type, $val) = @$_;
- if ($type eq '0') {
- $val;
- } else {
- syslinux_color($type) . xml_tree2syslinux($type, $val) . syslinux_color($current_color);
- }
- } group_by2(@l));
- }
-
- print "parsing $msg_xml_file\n";
- my $tree = XML::Parser->new(Style => 'Tree')->parsefile($msg_xml_file);
- $tree->[0] eq 'document' or die "bad file $msg_xml_file\n";
- my $text = xml_tree2syslinux('default', $tree->[1]);
-
- pack("C*", 0x0E, 0x80, 0x03, 0x00) . " "
- . $text . join('', @more_text)
- . "\n" . syslinux_color('red') . "[F1-Help] [F2-Advanced Help] [F3-Main]" . syslinux_color('default') . "\n";
-}
-
-sub syslinux_cfg {
- my (@entries) = @_;
-
- my $header = <<EOF;
-default linux
-prompt 1
-timeout $timeout
-display boot.msg
-F1 help.msg
-F2 advanced.msg
-F3 boot.msg
-EOF
-
- my @l = map {
- "label $_->{label}\n" .
- " kernel $_->{kernel}\n" .
- ($_->{initrd} ? " append initrd=$_->{initrd} $_->{append}\n" : '');
- } @entries;
-
- $header . join('', @l);
-}
-
-sub install_stripped { _ "strip $_[0]"; _ "$sudo install $_[0] $_[1]" }
-
-sub initrd {
- my ($mnt, $type, $I, $img, $o_raw_stage1_tree_kind) = @_;
- my $tmp = "$ENV{HOME}/tmp/initrd";
- my $tar = "$instdir/stage1-data/stage1$o_raw_stage1_tree_kind.tar.bz2";
-
- __ "$sudo umount $tmp $mnt 2>/dev/null";
- _ "dd if=/dev/zero of=$tmp bs=1k count=" . ($arch =~ /ia64/ || $type eq "all" ? 16384 : 2000);
- mke2fs($tmp);
- _ "$sudo mount -t ext2 $tmp $mnt -o loop";
-
- _ "$sudo tar xjC $mnt -f $tar";
- symlinkf "/tmp/stage2/lib64", "$mnt/lib64" if $arch =~ /x86_64/;
-
- {
- my $install = ${{
- network => "stage1-network",
- cdrom => "stage1-cdrom",
- }}{$type} || 'stage1-full';
- install_stripped("$instdir/init", "$mnt/sbin");
- install_stripped("$instdir/$install", "$mnt/sbin/stage1");
- }
-
- if (member($type, qw(network all))) {
- install_stripped("$instdir/ppp/pppd-bin", "$mnt/sbin/pppd");
- install_stripped("$instdir/rp-pppoe/pppoe-bin", "$mnt/sbin/pppoe");
- _ "$sudo mknod $mnt/dev/ppp c 108 0";
- _ "$sudo mknod $mnt/dev/ptyp0 c 2 0";
- _ "$sudo mknod $mnt/dev/ttyp0 c 3 0";
- }
-
- if (member($type, qw(pcmcia all network)) && $arch !~ /ppc|ia64/) {
- _ "$sudo cp -a /etc/pcmcia $mnt/etc";
- _ "cp $mnt/etc/pcmcia/config /tmp/pcmcia_config_tmp";
- _ "tools/patch_pcmcia_config.pl /tmp/pcmcia_config_tmp kernel/all.kernels/$main/modules.dep";
- _ "sudo mv /tmp/pcmcia_config_tmp $mnt/etc/pcmcia/config";
- }
- my ($ext) = $img =~ /rdz-(.*)/ or die "bad initrd name ($img)";
- my $modz = "kernel/all.kernels$I/$ext";
- if ($type eq 'all') {
- __ "$sudo tar xC $mnt/modules -f $modz/${type}_modules.tar";
- } else {
- _ "$sudo cp -f $modz/${type}_modules.mar $mnt/modules/modules$I.mar";
- }
- _ "$sudo cp -f $modz/modules.dep $mnt/modules/";
- _ "$sudo cp -f /sbin/sash $mnt/tmp/sh" if $type eq 'all' && $ENV{DEBUGSTAGE1};
- _ "$sudo umount $mnt";
-
-# Workaround for vfat-loop bug (quite touchy)
- _ "gzip -9f $tmp";
- _ "cp -f $tmp.gz $img";
- _ "rm -f $tmp.gz";
-# _ "gzip -9 -c $tmp > $img";
-# _ "rm -f $tmp";
-}
-
-sub entries_append {
- my ($type) = @_;
-
- my $automatic = $type =~ /cdrom/ ? 'automatic=method:cdrom ' : '';
- $automatic .= 'changedisk ' if $type =~ /changedisk/;
-
- my @simple_entries = (
- linux => $default_vga,
- vgalo => "vga=785",
- vgahi => "vga=791",
- vga16 => "vga16",
- text => "text",
- patch => "patch $default_vga",
- rescue => "rescue",
- );
- my @entries = (
- (map { $_->[0] => "$automatic$default_acpi $_->[1]" } group_by2(@simple_entries)),
- acpi => "$automatic$default_vga",
- );
-
- map { { label => $_->[0], append => "$default_append $_->[1]" } }
- group_by2(@entries);
-}
-
-sub syslinux_cfg_all {
- my ($type) = @_;
-
- syslinux_cfg(
- (map {
- { kernel => 'alt0/vmlinuz', initrd => 'alt0/all.rdz', %$_ };
- } entries_append($type)),
- (map_index {
- { label => "alt$::i", kernel => "alt$::i/vmlinuz", initrd => "alt$::i/all.rdz",
- append => "$default_append $default_acpi $default_vga" };
- } @kernels),
- { label => 'memtest', kernel => 'test/memtest.bin' },
- );
-}
-sub remove_ending_zero {
- my ($img) = @_;
- _(q(perl -0777 -pi -e 's/\0+$//' ) . $img);
-}
-
-sub boot_img_i386 {
- my ($type, $I, $img, $kernel) = @_;
-
- __ "$sudo umount $tmp_mnt 2>/dev/null";
-
- _ "dd if=/dev/zero of=$img bs=1k count=" . ($type eq 'all' ? 7000 : 1440);
- my $mk_options = $type eq 'all' ? '' : '-f 1 -r 16 -s 2'; # keep the FAT bookkeeping as small as possible
- _ "mkdosfs $mk_options $img";
- _ "$sudo syslinux-graphic $img";
-
- _ "$sudo mount -t vfat -o umask=0 $img $tmp_mnt -o loop";
- _ "cat $kernel > $tmp_mnt/vmlinuz";
- _ "lilo-bmp2mdk file:isolinux-graphic" . ($type eq 'all' ? '' : '-simple') . ".bmp >$tmp_mnt/boot.msg";
-
- output("$tmp_mnt/help.msg", syslinux_msg('help.msg.xml'));
- output("$tmp_mnt/advanced.msg", syslinux_msg('advanced.msg.xml'));
-
- (my $rdz = $img) =~ s/\.img/.rdz/;
- (my $initrd_type = $type) =~ s/-changedisk//;
- initrd($tmp_mnt_initrd, $initrd_type, $I, $rdz);
- my $short_type = substr($type, 0, 8);
-
- output("$tmp_mnt/syslinux.cfg",
- syslinux_cfg(map {
- { kernel => 'vmlinuz', initrd => "$short_type.rdz", %$_ };
- } entries_append($type)));
-
- eval { _ "cp -f $rdz $tmp_mnt/$short_type.rdz" };
- if ($@) {
- #- argh not enough room, try to suggest how to solve this
- unlink "$tmp_mnt/$short_type.rdz";
- my $avail = (split ' ', `df $tmp_mnt`)[-3];
- my $s = int((-s $rdz) / 1024);
-
- my ($ext) = $img =~ /\.img-(.*)/ or die "bad initrd name ($img)";
- my $dir = "kernel/all.kernels/$ext";
- my $pcitable = cat_('/usr/share/ldetect-lst/pcitable');
- my @l = sort { $a <=> $b } map {
- my ($name) = /(\S+)\.k?o$/ or die "bad file in .mar";
- my $gz_size = chomp_(`tar xOf $dir/all_modules.tar $_ | gzip | wc -c`);
- sprintf "%7d %6d %s\n", $gz_size, listlength($pcitable =~ /"$name"/g), $name;
- } split(' ', `mdk-stage1/mar/mar -l $dir/${initrd_type}_modules.mar`);
- output('.not-enough-room', "gz size - pcitable - name\n", @l);
-
- warn sprintf("not enough room for $rdz: need %dKB (available %dKB < needed %dKB)\n", $s - $avail, $avail, $s);
- die qq(check file ".not-enough-room" to see modules size and pcitable usage\n);
- }
- unlink $rdz;
-
- _ "sync";
- _ "df $tmp_mnt";
- _ "$sudo umount $tmp_mnt";
-}
-
-# alias to x86 variant, slightly bigger with images though
-sub boot_img_x86_64 { &boot_img_i386 }
-
-sub boot_img_alpha {
- my ($type, $I, $img) = @_;
-
- __ "$sudo umount $tmp_mnt 2>/dev/null";
- _ "dd if=/dev/zero of=$img bs=1k count=1440";
- mke2fs($img);
- _ "/sbin/e2writeboot $img /boot/bootlx";
- _ "$sudo mount -t ext2 $img $tmp_mnt -o loop";
- _ "cp -f vmlinux.gz $tmp_mnt";
- -f "$type.rdz" ? _ "cp -f $type.rdz $tmp_mnt" : initrd($tmp_mnt_initrd, $type, $I, "$tmp_mnt/$type.rdz");
-
- mkdir "$tmp_mnt/etc", 0777;
- output("$tmp_mnt/etc/aboot.conf",
-"0:vmlinux.gz initrd=$type.rdz rw $default_append $type
-1:vmlinux.gz initrd=$type.rdz rw $default_append text $type
-");
- _ "sync";
- _ "df $tmp_mnt";
-}
-
-sub boot_img_ia64 {
- my ($type, $_I, $img, $kernel) = @_;
- my $rdz = $img; $rdz =~ s/\.img/.rdz/;
-
- __ "$sudo umount $tmp_mnt 2>/dev/null";
- _ "dd if=/dev/zero of=$img bs=1k count=16384";
- _ "mkdosfs $img";
- _ "$sudo mount -t vfat $img $tmp_mnt -o loop,umask=000";
- _ "$sudo cp -f $kernel $tmp_mnt/vmlinux";
- _ "cp -f $rdz $tmp_mnt/$type.rdz";
- _ "$sudo cp -f tools/ia64/elilo.efi $tmp_mnt";
- output("$tmp_mnt/elilo.conf", qq(
-prompt
-timeout=50
-
-image=vmlinux
- label=linux
- initrd=$type.rdz
- append=" ramdisk_size=120000"
- read-only
-
-image=vmlinux
- label=rescue
- initrd=$type.rdz
- append=" rescue ramdisk_size=120000"
-"));
- _ "sync";
- _ "df $tmp_mnt";
-
-}
-
-sub boot_img_sparc {
- my ($type, $I, $_img) = @_;
- if ($type =~ /^live(.*)/) {
- #- hack to produce directly into /export the needed file for cdrom boot.
- my $dir = "/export";
- my $boot = "boot"; #- non-absolute pathname only!
-
- _ "mkdir -p $dir/$boot";
- _ "cp -f /boot/cd.b /boot/second.b $dir/$boot";
- _ "cp -f vmlinux$1 $dir/$boot/vmlinux$1";
- -f "live$1.rdz" ? _ "cp -f live$1.rdz $dir/$boot" : initrd($tmp_mnt_initrd, $type, $I, "$dir/$boot/live$1.rdz");
-
- output("$dir/$boot/silo.conf", qq(
-partition=1
-default=linux
-timeout=100
-read-write
-message=/$boot/boot.msg
-image="cat /$boot/boot.msg"
- label=1
- single-key
-image="cat /$boot/general.msg"
- label=2
- single-key
-image="cat /$boot/expert.msg"
- label=3
- single-key
-image="cat /$boot/rescue.msg"
- label=4
- single-key
-image="cat /$boot/kickit.msg"
- label=5
- single-key
-image="cat /$boot/param.msg"
- label=6
- single-key
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=linux
- alias=install
- initrd=/$boot/live.rdz
- append="ramdisk_size=128000"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=text
- initrd=/$boot/live.rdz
- append="ramdisk_size=128000 text"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=expert
- initrd=/$boot/live.rdz
- append="ramdisk_size=128000 expert"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=ks
- initrd=/$boot/live.rdz
- append="ramdisk_size=128000 ks"
-image[sun4c,sun4d,sun4m]=/$boot/vmlinux
- label=rescue
- initrd=/$boot/live.rdz
- append="ramdisk_size=128000 rescue"
-image[sun4u]=/$boot/vmlinux64
- label=linux
- alias=install
- initrd=/$boot/live64.rdz
- append="ramdisk_size=128000"
-image[sun4u]=/$boot/vmlinux64
- label=text
- initrd=/$boot/live64.rdz
- append="ramdisk_size=128000 text"
-image[sun4u]=/$boot/vmlinux64
- label=expert
- initrd=/$boot/live64.rdz
- append="ramdisk_size=128000 expert"
-image[sun4u]=/$boot/vmlinux64
- label=ks
- initrd=/$boot/live64.rdz
- append="ramdisk_size=128000 ks"
-image[sun4u]=/$boot/vmlinux64
- label=rescue
- initrd=/$boot/live64.rdz
- append="ramdisk_size=128000 rescue"
-"));
-
- output("$dir/$boot/README", "
-To Build a Bootable CD-ROM, try:
- mkisofs -R -o t.iso -s /$boot/silo.conf /export
-");
- } elsif ($type =~ /^tftprd(.*)/) {
- my $dir = "/export";
- my $boot = "images";
- my $setarch = $1 ? "sparc64" : "sparc32";
-
- _ "mkdir -p $dir/$boot";
- -f "$type.rdz" or initrd($tmp_mnt_initrd, $type, $I, "$type.rdz");
- _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
- _ "$setarch kernel$1/src/arch/sparc$1/boot/piggyback $dir/$boot/$type.img kernel$1/boot/System.map $type.rdz";
- } elsif ($type =~ /^tftp(.*)/) {
- my $dir = "/export";
- my $boot = "images";
-
- _ "mkdir -p $dir/$boot";
- _ "cp -f vmlinux$1.aout $dir/$boot/$type.img";
- } else {
- my $dir = "floppy";
- __ "$sudo umount $tmp_mnt 2>/dev/null";
- _ "rm -rf $dir";
- _ "mkdir -p $dir";
- _ "cp -f /boot/fd.b /boot/second.b $dir";
- _ "cp -f vmlinuz$I $dir/vmlinux$I.gz";
- -f "$type.rdz" ? _ "cp -f $type.rdz $dir" : initrd($tmp_mnt_initrd, $type, $I, "$dir/$type.rdz");
-
- output("$dir/boot.msg", "
-Welcome to Mandrakelinux 7.1
-
-Press <Enter> to install or upgrade a system 7mMandrakelinux7m
-");
-
- output("$dir/silo.conf", qq(
-partition=1
-default=linux
-timeout=100
-read-write
-message=/boot.msg
-image=/vmlinux$I.gz
- label=linux
- initrd=/$type.rdz
- append="ramdisk_size=128000 $type"
-"));
- _ "genromfs -d $dir -f /dev/ram -A 2048,/.. -a 512 -V 'DrakX boot disk'";
- _ "$sudo mount -t romfs /dev/ram $tmp_mnt";
- _ "silo -r $tmp_mnt -F -i /fd.b -b /second.b -C /silo.conf";
- _ "$sudo umount $tmp_mnt";
- _ "dd if=/dev/ram of=$type.img bs=1440k count=1";
- _ "sync";
- _ "$sudo mount -t romfs /dev/ram $tmp_mnt";
- _ "df $tmp_mnt";
- }
-}
-
-sub boot_img_ppc() {
- #- hack to produce directly into /export the needed file for cdrom boot.
- my $dir = "/export";
- my $boot = "boot"; #- non-absolute pathname only!
- _ "rm -rf $dir/$boot"; mkdir "$dir/$boot", 0777;
- foreach (glob("kernel/all.kernels/*")) {
- my $ext = basename($_);
- if ($ext =~ /power4/) {
- _ "cp $_/boot/vmlinuz-$ext* $dir/$boot/vmlinux-power4";
- _ "cp images/all.rdz-$ext $dir/$boot/all-power4.gz";
- }
- elsif ($ext =~ /2.6/) {
- _ "cp $_/boot/vmlinuz-$ext $dir/$boot/vmlinux";
- _ "cp images/all.rdz-$ext $dir/$boot/all.gz";
- }
- elsif ($ext =~ /2.4/) {
- _ "cp $_/boot/vmlinux $dir/$boot/vmlinux-2.4";
- _ "cp images/all.rdz-$ext $dir/$boot/all-2.4.gz";
- }
- }
- _ "cp -f /usr/lib/yaboot/yaboot $dir/$boot/yaboot";
-
- output("$dir/$boot/ofboot.b", '<CHRP-BOOT>
-<COMPATIBLE>
-MacRISC
-</COMPATIBLE>
-<DESCRIPTION>
-Mandrakelinux PPC bootloader
-</DESCRIPTION>
-<BOOT-SCRIPT>
-" screen" output
-load-base release-load-area
-dev screen
-" "(0000000000aa00aa0000aaaaaa0000aa00aaaa5500aaaaaa)" drop 0 8 set-colors
-" "(5555555555ff55ff5555ffffff5555ff55ffffff55ffffff)" drop 8 8 set-colors
-device-end
-3 to foreground-color
-0 to background-color
-" "(0C)" fb8-write drop
-" Booting Mandrakelinux PPC..." fb8-write drop 100 ms
-boot cd:,\boot\yaboot
-</BOOT-SCRIPT>
-<OS-BADGE-ICONS>
-1010
-000000000000F8FEACF6000000000000
-0000000000F5FFFFFEFEF50000000000
-00000000002BFAFEFAFCF70000000000
-0000000000F65D5857812B0000000000
-0000000000F5350B2F88560000000000
-0000000000F6335708F8FE0000000000
-00000000005600F600F5FD8100000000
-00000000F9F8000000F5FAFFF8000000
-000000008100F5F50000F6FEFE000000
-000000F8F700F500F50000FCFFF70000
-00000088F70000F50000F5FCFF2B0000
-0000002F582A00F5000008ADE02C0000
-00090B0A35A62B0000002D3B350A0000
-000A0A0B0B3BF60000505E0B0A0B0A00
-002E350B0B2F87FAFCF45F0B2E090000
-00000007335FF82BF72B575907000000
-000000000000ACFFFF81000000000000
-000000000081FFFFFFFF810000000000
-0000000000FBFFFFFFFFAC0000000000
-000000000081DFDFDFFFFB0000000000
-000000000081DD5F83FFFD0000000000
-000000000081DDDF5EACFF0000000000
-0000000000FDF981F981FFFF00000000
-00000000FFACF9F9F981FFFFAC000000
-00000000FFF98181F9F981FFFF000000
-000000ACACF981F981F9F9FFFFAC0000
-000000FFACF9F981F9F981FFFFFB0000
-00000083DFFBF981F9F95EFFFFFC0000
-005F5F5FDDFFFBF9F9F983DDDD5F0000
-005F5F5F5FDD81F9F9E7DF5F5F5F5F00
-0083DD5F5F83FFFFFFFFDF5F835F0000
-000000FBDDDFACFBACFBDFDFFB000000
-000000000000FFFFFFFF000000000000
-0000000000FFFFFFFFFFFF0000000000
-0000000000FFFFFFFFFFFF0000000000
-0000000000FFFFFFFFFFFF0000000000
-0000000000FFFFFFFFFFFF0000000000
-0000000000FFFFFFFFFFFF0000000000
-0000000000FFFFFFFFFFFFFF00000000
-00000000FFFFFFFFFFFFFFFFFF000000
-00000000FFFFFFFFFFFFFFFFFF000000
-000000FFFFFFFFFFFFFFFFFFFFFF0000
-000000FFFFFFFFFFFFFFFFFFFFFF0000
-000000FFFFFFFFFFFFFFFFFFFFFF0000
-00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
-00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00
-00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
-000000FFFFFFFFFFFFFFFFFFFF000000
-</OS-BADGE-ICONS>
-</CHRP-BOOT>
-');
-
- output("$dir/$boot/yaboot.conf", '
-init-message = "\nWelcome to Mandrakelinux PPC!\nHit <TAB> for boot options.\n\n"
-timeout = 150
-device=cd:
-default = install-gui
-message=/boot/yaboot.msg
-
-image = /boot/vmlinux
- label = install-gui
- initrd = /boot/all.gz
- initrd-size = 34000
- append = " ramdisk_size=128000"
-
-image = /boot/vmlinux-power4
- label = install-gui-power4
- initrd = /boot/all-power4.gz
- initrd-size = 34000
- append = " ramdisk_size=128000"
-
-image = /boot/vmlinux
- label = install-text
- initrd = /boot/all.gz
- initrd-size = 34000
- append = " text ramdisk_size=128000"
-
-image = /boot/vmlinux-power4
- label = install-text-power4
- initrd = /boot/all-power4.gz
- initrd-size = 34000
- append = " text ramdisk_size=128000"
-
-image = /boot/vmlinux
- label = install-gui-old
- initrd = /boot/all.gz
- initrd-size = 34000
- append = " gui-old ramdisk_size=128000"
-
-image = /boot/vmlinux-power4
- label = install-gui-old-power4
- initrd = /boot/all-power4.gz
- initrd-size = 34000
- append = " gui-old ramdisk_size=128000"
-
-image = enet:0,vmlinux
- label = install-net
- initrd = enet:0,all.gz
- initrd-size = 34000
- append = " ramdisk_size=128000"
-
-image = enet:0,vmlinux-power4
- label = install-net-power4
- initrd = enet:0,all-power4.gz
- initrd-size = 34000
- append = " ramdisk_size=128000"
-
-image = enet:0,vmlinux
- label = install-net-text
- initrd = enet:0,all.gz
- initrd-size = 34000
- append = " text ramdisk_size=128000"
-
-image = enet:0,vmlinux-power4
- label = install-net-text-power4
- initrd = enet:0,all-power4.gz
- initrd-size = 34000
- append = " text ramdisk_size=128000"
-
-image = /boot/vmlinux
- label = rescue
- initrd = /boot/all.gz
- initrd-size = 34000
- append = " rescue ramdisk_size=128000"
-
-image = /boot/vmlinux-power4
- label = rescue-power4
- initrd = /boot/all-power4.gz
- initrd-size = 34000
- append = " rescue ramdisk_size=128000"
-
-image = enet:0,vmlinux
- label = rescue-net
- initrd = enet:0,all.gz
- initrd-size = 34000
- append = " rescue ramdisk_size=128000"
-
-image = enet:0,vmlinux-power4
- label = rescue-net-power4
- initrd = enet:0,all-power4.gz
- initrd-size = 34000
- append = " rescue ramdisk_size=128000"
-');
-
- output("$dir/$boot/yaboot.msg", '
-Thanks for choosing Mandrakelinux PPC. The following is a short
-explanation of the various options for booting the install CD.
-
-All options ending with "-power4" use the BOOT kernel for ppc 9xx and POWER4.
-The default syntax with no suffix uses the BOOT kernel for ppc 6xx 7xx and 7xxx.
-The default if you just hit enter is "install-gui".
-
-install-gui: uses Xorg fbdev mode
-install-text: text based install
-install-net: allows you to use a minimal boot CD,
- pulling the rest of the install from
- a network server
-install-net-text: text mode network install
-rescue: boots the rescue image
-rescue-net: boots the rescue image from a network server
-
-');
-
-}
-
-sub VERSION {
- my ($kernels) = @_;
-
- map { "$_\n" }
- $ENV{DISTRIB_DESCR},
- scalar gmtime(),
- '', @$kernels;
-}
-
-sub syslinux_all_files {
- my ($dir, $kernels) = @_;
-
- eval { rm_rf($dir) }; mkdir_p($dir);
-
- @$kernels or die "syslinux_all_files: no kernel\n";
-
- $default_vga =~ /788/ or die 'we rely on vga=788 for bootsplash';
- my $bootspash_cfg = '/etc/bootsplash/themes/Mandrakelinux/config/bootsplash-800x600.cfg';
- -e $bootspash_cfg or die "can't find $bootspash_cfg";
-
- each_index {
- mkdir "$dir/alt$::i", 0777;
- _ "cp kernel/all.kernels/$_/vmlinuz $dir/alt$::i";
- initrd($tmp_mnt_initrd, 'all', '', "images/all.rdz-$_");
- _ "splash -s -f $bootspash_cfg >> images/all.rdz-$_" if !/BOOT/;
- rename("images/all.rdz-$_", "$dir/alt$::i/all.rdz");
- } @$kernels;
-
- _ "lilo-bmp2mdk file:isolinux-graphic.bmp >$dir/boot.msg";
-
- _ "install -m 644 -D /boot/memtest* $dir/test/memtest.bin";
-
- output("$dir/help.msg", syslinux_msg('help.msg.xml'));
- output("$dir/advanced.msg", syslinux_msg('advanced.msg.xml',
- "\nYou can choose the following kernels :\n",
- map_index { " o " . syslinux_color('white') . "alt$::i" . syslinux_color('default') . " is kernel $_\n" } @$kernels));
-}
-
-sub isolinux {
- my ($main, @kernels) = @_;
- @kernels = ($main, grep { $_ ne $main } @kernels);
-
- syslinux_all_files('isolinux', \@kernels);
-
- _ "cp /usr/lib/syslinux/isolinux.bin isolinux/isolinux.bin";
- output("isolinux/isolinux.cfg", syslinux_cfg_all('cdrom'));
-}
-
-sub boot_iso {
- my ($iso, $kernels) = @_;
-
- syslinux_all_files('.boot_iso/isolinux', $kernels);
-
- output('.boot_iso/VERSION', VERSION($kernels));
-
- _ "cp /usr/lib/syslinux/isolinux.bin .boot_iso/isolinux/isolinux.bin";
- output('.boot_iso/isolinux/isolinux.cfg', syslinux_cfg_all(''));
-
- _ "mkisofs -r -f -J -cache-inodes -V 'Mdk Boot ISO' -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $iso .boot_iso";
- rm_rf('.boot_iso');
-}
-
-sub isolinux_move {
- my ($main) = @_;
-
- _ "cp kernel/all.kernels/$main/vmlinuz move/isolinux";
- initrd($tmp_mnt_initrd, 'all', '', "move/isolinux/all.rdz-$main", '-with-busybox');
- rename "move/isolinux/all.rdz-$main", "move/isolinux/all.rdz";
-
- _ "lilo-bmp2mdk file:move/data/isolinux-graphic.bmp >move/isolinux/boot.msg";
- _ "cp /usr/lib/syslinux/isolinux.bin move/isolinux/isolinux.bin";
-}
-
-sub hd_grub {
- my ($img) = @_;
- my $mapfile = '/tmp/device.map.tmp';
-
- my @grub_files = map { "/boot/grub/$_" } qw(stage1 stage2);
- my $size = 40_000 + sum(map { -s $_ } @grub_files);
-
- __ "$sudo umount $tmp_mnt 2>/dev/null";
- _ "dd if=/dev/zero of=$img bs=1 count=$size";
- _ "mkdosfs $img";
- _ "$sudo mount -t vfat -o umask=0 $img $tmp_mnt -o loop";
- _ "cp @grub_files $tmp_mnt";
-
- output("$tmp_mnt/menu.lst", <<EOF);
-timeout 10
-default 0
-fallback 1
-
-title Mandrake Install
-
-root (hd0,0)
-kernel /cooker/isolinux/alt0/vmlinuz $default_append $default_acpi $default_vga automatic=method:disk
-initrd /cooker/isolinux/alt0/all.rdz
-
-title Help
-
-pause To display the help, press <space> until you reach "HELP END"
-pause .
-pause Please see http://qa.mandrakesoft.com/hd_grub.cgi for a friendlier solution
-pause .
-pause To specify the location where Mandrakelinux is copied,
-pause choose "Mandrake Install", and press "e".
-pause Then change "root (hd0,0)". FYI:
-pause - (hd0,0) is the first partition on first bios hard drive (usually hda1)
-pause - (hd0,4) is the first extended partition (usually hda5)
-pause - (hd1,0) is the first partition on second bios hard drive
-pause Replace /cooker to suits the directory containing Mandrakelinux
-pause .
-pause HELP END
-EOF
-
- _ "$sudo umount $tmp_mnt";
-
- output($mapfile, "(fd0) $img\n");
-
- open(my $G, "| grub --device-map=$mapfile --batch");
- print $G <<EOF;
-root (fd0)
-install /stage1 d (fd0) /stage2 p /menu.lst
-quit
-EOF
- close $G;
- unlink $mapfile;
-}
-
-sub drivers {
- my ($type, $I, $img) = @_;
-
- _ "dd if=/dev/zero of=$img bs=1k count=1440";
- mke2fs($img);
- _ "$sudo mount -t ext2 $img $tmp_mnt -o loop";
-
- my ($ext) = $img =~ /img-(.*)/ or die "bad image name ($img)";
- _ "$sudo cp -f kernel/all.kernels$I/$ext/${type}_modules.mar $tmp_mnt/modules$I.mar";
-
- _ "sync";
- _ "df $tmp_mnt";
-
- _ "$sudo umount $tmp_mnt";
-}
diff --git a/mdk-stage1/.cvsignore b/mdk-stage1/.cvsignore
deleted file mode 100644
index 28f91e89f..000000000
--- a/mdk-stage1/.cvsignore
+++ /dev/null
@@ -1,15 +0,0 @@
-init
-init-stage2
-stage1-full
-stage1-cdrom
-stage1-disk
-stage1-medias-usb
-stage1-network
-stage1-network-usb
-debug.log
-.depend
-*.rdz*
-mkinitrd_helper.tar.bz2
-hack_*
-rescue-gui
-dhcp-client
diff --git a/mdk-stage1/Makefile b/mdk-stage1/Makefile
deleted file mode 100644
index f1721d292..000000000
--- a/mdk-stage1/Makefile
+++ /dev/null
@@ -1,263 +0,0 @@
- #******************************************************************************
- #
- # mdk-stage1 - the program that will load second-stage install
- #
- # $Id$
- #
- # Pixel (pixel@mandrakesoft.com) (mostly done by Guillaume Cottenceau)
- #
- # Copyright 2000-2004 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- # Portions from Erik Troan (ewt@redhat.com) Copyright 1996 Red Hat Software
- #
- #*****************************************************************************
- #
- # Currently:
- #
- # ix86
- # init with minilibc
- # stage1 with dietlibc
- #
- # ppc
- # init with dietlibc
- # stage1 with glibc
- #
- # ia64
- # init with glibc
- # stage1 with glibc
- #
- # x86-64
- # init with minilibc
- # stage1 with dietlibc
- #
- #*****************************************************************************
-
-
-top_dir = .
-
-include $(top_dir)/Makefile.common
-include $(top_dir)/../Makefile.config
-
-
-DEFS = -DDISTRIB_NAME=\"$(DISTRIB_NAME)\" -DDISTRIB_VERSION=\"$(DISTRIB_VERSION)\" -DDISTRIB_DESCR=\"$(DISTRIB_DESCR)\" $(ADDITIONAL_DEFS) -D_FILE_OFFSET_BITS=64
-
-COMPILE = $(CC) $(DEFS) $(CFLAGS)
-
-ifeq (ppc, $(ARCH))
-INIT_HEADERS=init-libc-headers.h
-else
-ifeq (DIETLIBC, $(L))
-INIT_HEADERS=minilibc.h
-else
-INIT_HEADERS=init-libc-headers.h
-endif
-endif
-
-INIT_DEFS = -DINIT_HEADERS=\"$(INIT_HEADERS)\"
-
-ifeq (DIETLIBC, $(L))
-INITSRC = minilibc.c init.c
-INIT_DEFS += -fno-builtin
-else
-INITSRC = init.c
-INIT_DEFS += $(GLIBC_INCLUDES)
-endif
-
-INIT_DEFS_ADD = -DBINARY=\"/sbin/stage1\"
-ifdef MOVE
-INIT_DEFS_ADD_STAGE2 = -DBINARY=\"/usr/bin/runstage2.pl\"
-else
-INIT_DEFS_ADD_STAGE2 = -DBINARY=\"/usr/bin/runinstall2\"
-endif
-
-INITOBJS = $(subst .c,.o,$(INITSRC))
-INITOBJS-STAGE2 = $(subst .c,-STAGE2.o,$(INITSRC))
-
-
- #- frontends
-NEWT_FRONTEND_SRC = newt-frontend.c
-NEWT_FRONTEND_LIBS = newt/libnewt.a slang/libslang.a
-
-STDIO_FRONTEND_SRC = stdio-frontend.c
-STDIO_FRONTEND_LIBS =
-STDIO_FRONTEND_LIBS =
-
-
-FRONTEND_OBJS = $(subst .c,.o,$($(F)_FRONTEND_SRC))
-
-FRONTEND_LINK = $(FRONTEND_OBJS) $($(F)_FRONTEND_LIBS)
-
-ifeq (DIETLIBC, $(L))
-INSMOD = insmod-busybox
-else
-INSMOD = insmod-modutils
-endif
-
-STAGE1_OWN_LIBS = $(INSMOD)/libinsmod.a mar/libmar.a bzlib/libbzlib.a
-
-
-ifeq (DIETLIBC, $(L))
-STAGE1_NETWORK_LIBS = /usr/$(LIB)/dietlibc/lib-$(ARCH)/librpc.a
-else
-STAGE1_NETWORK_LIBS = /usr/$(LIB)/libresolv.a
-endif
-
- #- stage1 itself
-STAGE1SRC = stage1.c log.c tools.c modules.c probing.c mount.c automatic.c frontend-common.c lomount.c thirdparty.c
-CDROMSRC = cdrom.c
-DISKSRC = disk.c directory.c partition.c
-NETWORKSRC = network.c nfsmount.c dhcp.c url.c dns.c adsl.c directory.c wireless.c
-
-# use sort to remove duplicates
-STAGE1_ALLSRC = $(sort $(STAGE1SRC) $(CDROMSRC) $(DISKSRC) $(NETWORKSRC))
-ALLSRC = $(INITSRC) $(STAGE1_ALLSRC)
-
-
-
-STAGE1OBJS-CDROM = $(subst .c,-CDROM.o,$(STAGE1SRC) $(CDROMSRC))
-
-CDROM_DEFS = -DSPAWN_SHELL -DDISABLE_DISK -DDISABLE_NETWORK
-
-
-STAGE1OBJS-NETWORK = $(subst .c,-NETWORK.o,$(STAGE1SRC) $(NETWORKSRC))
-
-NETWORK_DEFS = -DSPAWN_SHELL -DDISABLE_CDROM -DDISABLE_DISK
-
-
-STAGE1OBJS-NETWORK-STANDALONE = $(subst .c,-NETWORK-STANDALONE.o,$(STAGE1SRC) $(NETWORKSRC))
-
-NETWORK_STANDALONE_DEFS = -DDISABLE_CDROM -DDISABLE_DISK -DENABLE_NETWORK_STANDALONE
-
-
-STAGE1OBJS-FULL = $(subst .c,-FULL.o,$(STAGE1_ALLSRC))
-
-BINS = init init-stage2 stage1-full dhcp-client
-
-ifndef MOVE
-ifeq (i386, $(ARCH))
-BINS += stage1-cdrom stage1-network
-endif
-ifeq (x86_64, $(ARCH))
-BINS += stage1-cdrom stage1-network
-endif
-endif
-
-DIRS += mar pci-resource usb-resource bzlib $(INSMOD) slang newt ppp/pppd rp-pppoe/src
-ifeq (i386, $(ARCH))
-DIRS += pcmcia_
-endif
-ifeq (x86_64, $(ARCH))
-DIRS += pcmcia_
-endif
-
-
-ifeq (i386,$(ARCH))
-PCMCIA_LIB = pcmcia_/libpcmcia.a
-PCMCIA_DEFS = -DENABLE_PCMCIA
-endif
-ifeq (x86_64,$(ARCH))
-PCMCIA_LIB = pcmcia_/libpcmcia.a
-PCMCIA_DEFS = -DENABLE_PCMCIA
-endif
-
-
-USB_DEFS_GEN = -DENABLE_USB
-USB_DEFS = -DENABLE_USB -DDISABLE_PCIADAPTERS
-
-all: dirs $(BINS)
-
-dirs:
- @for n in . $(DIRS); do \
- [ "$$n" = "." ] || make -C $$n || exit 1 ;\
- done
-
-init: $(INITOBJS)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-init-stage2: $(INITOBJS-STAGE2)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-stage1-cdrom: $(STAGE1OBJS-CDROM) $(STAGE1_OWN_LIBS) $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-stage1-network: $(STAGE1OBJS-NETWORK) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) $(PCMCIA_LIB) $(STAGE1_LIBC)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-stage1-full: $(STAGE1OBJS-FULL) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) bootsplash.o $(PCMCIA_LIB) $(STAGE1_LIBC)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-dhcp-client: $(STAGE1OBJS-NETWORK-STANDALONE) $(STAGE1_OWN_LIBS) $(STAGE1_NETWORK_LIBS) $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-
-$(INITOBJS): %.o: %.c
- $(COMPILE) $(INIT_DEFS) $(INIT_DEFS_ADD) -c $<
-
-$(INITOBJS-STAGE2): %-STAGE2.o: %.c
- $(COMPILE) $(INIT_DEFS) $(INIT_DEFS_ADD_STAGE2) -c $< -o $@
-
-$(STAGE1OBJS-CDROM): %-CDROM.o: %.c
- $(DIET) $(COMPILE) $(INCLUDES) $(CDROM_DEFS) -c $< -o $@
-
-$(STAGE1OBJS-NETWORK): %-NETWORK.o: %.c
- $(DIET) $(COMPILE) $(INCLUDES) $(NETWORK_DEFS) $(PCMCIA_DEFS) $(USB_DEFS_GEN) -DENABLE_ADDITIONAL_MODULES -c $< -o $@
-
-$(STAGE1OBJS-NETWORK-STANDALONE): %-NETWORK-STANDALONE.o: %.c
- $(DIET) $(COMPILE) $(INCLUDES) $(NETWORK_STANDALONE_DEFS) $(USB_DEFS_GEN) -c $< -o $@
-
-$(STAGE1OBJS-FULL): %-FULL.o: %.c
- $(DIET) $(COMPILE) $(INCLUDES) -DSPAWN_SHELL $(USB_DEFS_GEN) $(PCMCIA_DEFS) -DENABLE_BOOTSPLASH -c $< -o $@
-
-.c.o:
- $(DIET) $(COMPILE) $(INCLUDES) -DENABLE_BOOTSPLASH -c $<
-
-
-clean: localclean
- @for n in $(DIRS); do \
- (cd $$n; make clean) \
- done
-
-localclean:
- rm -f *.o .depend *.rdz *.img rescue-gui init-move $(BINS)
-
-
-tar-mkinitrd_helper: clean
- rm -rf mkinitrd_helper-subdir
- mkdir mkinitrd_helper-subdir
- cd mkinitrd_helper-subdir ; cp -a ../insmod-busybox ../Makefile.common ../insmod.h ../log.h . ; \
- cp ../Makefile.mkinitrd_helper Makefile
- tar cfj mkinitrd_helper.tar.bz2 mkinitrd_helper-subdir --exclude CVS
- rm -rf mkinitrd_helper-subdir
-
-rescue-gui: rescue-gui.o frontend-common.o $(FRONTEND_LINK) $(STAGE1_LIBC)
- $(DIET) $(CC) $(LDFLAGS) -o $@ $^
- $(STRIPCMD) $@
-
-
-.depend:
- $(CPP) $(CFLAGS) -M $(ALLSRC) > .depend
-
-ifeq (.depend,$(wildcard .depend))
-include .depend
-endif
-
-
-*-CDROM.o: %-CDROM.o: %.o
-
-*-NETWORK.o: %-NETWORK.o: %.o
-
-*-FULL.o: %-FULL.o: %.o
-
diff --git a/mdk-stage1/Makefile.common b/mdk-stage1/Makefile.common
deleted file mode 100644
index ce8aab84c..000000000
--- a/mdk-stage1/Makefile.common
+++ /dev/null
@@ -1,54 +0,0 @@
- # -*- makefile -*-
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-ARCH := $(patsubst i%86,i386,$(shell uname -m))
-ARCH := $(patsubst sparc%,sparc,$(ARCH))
-
- #- default lib is dietlibc (honoured by main Makefile whenever possible)
-L = DIETLIBC
-#L = GLIBC
-
- #- default frontend is newt (honoured by main Makefile whenever possible)
-F = NEWT
-# F = STDIO
-
- #- override in some situations
-ifeq (ia64, $(ARCH))
-L = GLIBC
-endif
-
-ifeq (DIETLIBC, $(L))
-DIET = diet
-endif
-
-#- flags used by all stuff
-CFLAGS = -Os -pipe -Wall -fomit-frame-pointer -fno-strict-aliasing
-
-ifneq (ppc, $(ARCH))
-CFLAGS += -Werror
-endif
-
-DIETLIBC_INCLUDES = -I/usr/lib/dietlibc/include -I. -I$(top_dir)/bzlib
-GLIBC_INCLUDES = -I. -I$(top_dir)/bzlib
-INCLUDES = $($(L)_INCLUDES)
-
-GLIBC_LDFLAGS = -static
-LDFLAGS = $($(L)_LDFLAGS)
-
-STAGE1_LIBC = $($(L)_LIBC)
-
-STRIPCMD = strip -R .note -R .comment
-
diff --git a/mdk-stage1/Makefile.mkinitrd_helper b/mdk-stage1/Makefile.mkinitrd_helper
deleted file mode 100644
index a8db2fbe0..000000000
--- a/mdk-stage1/Makefile.mkinitrd_helper
+++ /dev/null
@@ -1,30 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-
-DIRS = dietlibc insmod-busybox
-
-
-all: dirs
-
-dirs:
- @for n in . $(DIRS); do \
- [ "$$n" = "." ] || make -C $$n ;\
- done
-
-clean:
- @for n in $(DIRS); do \
- (cd $$n; make clean) \
- done
diff --git a/mdk-stage1/adsl.c b/mdk-stage1/adsl.c
deleted file mode 100644
index 595b3fae0..000000000
--- a/mdk-stage1/adsl.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/ioctl.h>
-#include <errno.h>
-#include <stdio.h>
-#include <resolv.h>
-#include <signal.h>
-
-#include "stage1.h"
-#include "log.h"
-#include "network.h"
-#include "modules.h"
-#include "tools.h"
-#include "frontend.h"
-#include "automatic.h"
-
-#include "adsl.h"
-
-
-static enum return_type adsl_connect(struct interface_info * intf, char * username, char * password, char * acname)
-{
- char pppoe_call[500];
- char * pppd_launch[] = { "/sbin/pppd", "pty", pppoe_call, "noipdefault", "noauth", "default-asyncmap", "defaultroute",
- "hide-password", "nodetach", "usepeerdns", "local", "mtu", "1492", "mru", "1492", "noaccomp",
- "noccp", "nobsdcomp", "nodeflate", "nopcomp", "novj", "novjccomp", "user", username,
- "password", password, "lcp-echo-interval", "20", "lcp-echo-failure", "3", "lock", "persist", NULL };
- int fd;
- int retries = 10;
- char * tty_adsl = "/dev/tty6";
- enum return_type status = RETURN_ERROR;
- pid_t ppp_pid;
-
- snprintf(pppoe_call, sizeof(pppoe_call), "/sbin/pppoe -p /var/run/pppoe.conf-adsl.pid.pppoe -I %s -T 80 -U -m 1412", intf->device);
-
- if (!streq(acname, "")) {
- strcat(pppoe_call, "-C ");
- strcat(pppoe_call, acname);
- }
-
- fd = open(tty_adsl, O_RDWR);
- if (fd == -1) {
- log_message("cannot open tty -- no pppd");
- return RETURN_ERROR;
- }
- else if (access(pppd_launch[0], X_OK)) {
- log_message("cannot open pppd - %s doesn't exist", pppd_launch[0]);
- return RETURN_ERROR;
- }
-
- if (!(ppp_pid = fork())) {
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
-
- close(fd);
- setsid();
- if (ioctl(0, TIOCSCTTY, NULL))
- log_perror("could not set new controlling tty");
-
- printf("\t(exec of pppd)\n");
- execv(pppd_launch[0], pppd_launch);
- log_message("execve of %s failed: %s", pppd_launch[0], strerror(errno));
- exit(-1);
- }
- close(fd);
- while (retries > 0 && kill(ppp_pid, 0) == 0) {
- FILE * f;
- if ((f = fopen("/var/run/pppd.tdb", "rb"))) {
- while (1) {
- char buf[500];
- char *p;
- if (!fgets(buf, sizeof(buf), f))
- break;
- p = strstr(buf, "IPLOCAL=");
- if (p) {
- struct sockaddr_in addr;
- if (inet_aton(p + 8, &addr.sin_addr))
- intf->ip = addr.sin_addr;
- status = RETURN_OK;
- }
- }
- fclose(f);
- if (status == RETURN_OK) {
- log_message("PPP: connected!");
- break;
- }
- }
- retries--;
- log_message("PPP: <sleep>");
- sleep(2);
- }
-
- if (status != RETURN_OK) {
- log_message("PPP: could not connect");
- kill(ppp_pid, SIGTERM);
- sleep(1);
- kill(ppp_pid, SIGKILL);
- sleep(1);
- }
- return status;
-}
-
-
-enum return_type perform_adsl(struct interface_info * intf)
-{
- struct in_addr addr;
- char * questions[] = { "Username", "Password", "AC Name", NULL };
- char * questions_auto[] = { "adsluser", "adslpass", "adslacname", NULL };
- static char ** answers = NULL;
- enum return_type results;
-
- inet_aton("10.0.0.10", &addr);
- memcpy(&intf->ip, &addr, sizeof(addr));
-
- inet_aton("255.255.255.0", &addr);
- memcpy(&intf->netmask, &addr, sizeof(addr));
-
- *((uint32_t *) &intf->broadcast) = (*((uint32_t *) &intf->ip) &
- *((uint32_t *) &intf->netmask)) | ~(*((uint32_t *) &intf->netmask));
-
- intf->is_ptp = 0;
-
- if (configure_net_device(intf)) {
- stg1_error_message("Could not configure..");
- return RETURN_ERROR;
- }
-
- results = ask_from_entries_auto("Please enter the username and password for your ADSL account.\n"
- "Leave blank the AC Name field if you don't know what it means.\n"
- "(Warning! only PPPoE protocol is supported)",
- questions, &answers, 40, questions_auto, NULL);
- if (results != RETURN_OK)
- return results;
-
- intf->boot_proto = BOOTPROTO_ADSL_PPPOE;
-
- wait_message("Waiting for ADSL connection to show up...");
- my_insmod("ppp_generic", ANY_DRIVER_TYPE, NULL, 1);
- my_insmod("ppp_async", ANY_DRIVER_TYPE, NULL, 1);
- results = adsl_connect(intf, answers[0], answers[1], answers[2]);
- remove_wait_message();
-
- if (results != RETURN_OK) {
- wait_message("Retrying the ADSL connection...");
- results = adsl_connect(intf, answers[0], answers[1], answers[2]);
- remove_wait_message();
- } else {
- intf->user = strdup(answers[0]);
- intf->pass = strdup(answers[1]);
- intf->acname = strdup(answers[2]);
- }
-
- if (results != RETURN_OK) {
- stg1_error_message("I could not connect to the ADSL network.");
- return perform_adsl(intf);
- }
-
- sleep(1);
- res_init(); /* reinit the resolver, pppd modified /etc/resolv.conf */
-
- return RETURN_OK;
-}
diff --git a/mdk-stage1/adsl.h b/mdk-stage1/adsl.h
deleted file mode 100644
index fb0baf327..000000000
--- a/mdk-stage1/adsl.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * View the homepage: http://us.mandrakesoft.com/~gc/html/stage1.html
- *
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from GRUB -- GRand Unified Bootloader
- * Copyright (C) 2000 Free Software Foundation, Inc.
- *
- * Itself based on etherboot-4.6.4 by Martin Renters.
- *
- */
-
-#ifndef _ADSL_H_
-#define _ADSL_H_
-
-#include "stage1.h"
-#include "network.h"
-
-enum return_type perform_adsl(struct interface_info * intf);
-
-#endif
diff --git a/mdk-stage1/automatic.c b/mdk-stage1/automatic.c
deleted file mode 100644
index 3a816bab1..000000000
--- a/mdk-stage1/automatic.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * This is supposed to replace the redhat "kickstart", by name but
- * also by design (less code pollution).
- *
- */
-
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include "tools.h"
-#include "stage1.h"
-#include "frontend.h"
-#include "log.h"
-
-#include "automatic.h"
-
-
-static struct param_elem * automatic_params;
-static char * value_not_bound = "";
-
-void grab_automatic_params(char * line)
-{
- int i, p;
- struct param_elem tmp_params[50];
-
- i = 0; p = 0;
- while (line[i] != '\0') {
- char *name, *value;
- int k;
- int j = i;
- while (line[i] != ':' && line[i] != '\0')
- i++;
- name = memdup(&line[j], i-j + 1);
- name[i-j] = 0;
-
- k = i+1;
- i++;
- while (line[i] != ',' && line[i] != '\0')
- i++;
- value = memdup(&line[k], i-k + 1);
- value[i-k] = 0;
-
- tmp_params[p].name = name;
- tmp_params[p].value = value;
- p++;
- if (line[i] == '\0')
- break;
- i++;
- }
-
- tmp_params[p++].name = NULL;
- automatic_params = memdup(tmp_params, sizeof(struct param_elem) * p);
-
- log_message("AUTOMATIC MODE: got %d params", p-1);
-}
-
-
-char * get_auto_value(char * auto_param)
-{
- struct param_elem * ptr = automatic_params;
-
- struct param_elem short_aliases[] =
- { { "method", "met" }, { "network", "netw" }, { "interface", "int" }, { "gateway", "gat" },
- { "netmask", "netm" }, { "adsluser", "adslu" }, { "adslpass", "adslp" }, { "hostname", "hos" },
- { "domain", "dom" }, { "server", "ser" }, { "directory", "dir" }, { "user", "use" },
- { "pass", "pas" }, { "disk", "dis" }, { "partition", "par" }, { "proxy_host", "proxh" },
- { "proxy_port", "proxp" }, { NULL, NULL } };
- struct param_elem * ptr_alias = short_aliases;
- while (ptr_alias->name) {
- if (streq(auto_param, ptr_alias->name))
- break;
- ptr_alias++;
- }
-
- while (ptr->name) {
- if (streq(ptr->name, auto_param)
- || (ptr_alias->name && streq(ptr_alias->value, ptr->name)))
- return ptr->value;
- ptr++;
- }
-
- return value_not_bound;
-}
-
-
-enum return_type ask_from_list_auto(char *msg, char ** elems, char ** choice, char * auto_param, char ** elems_auto)
-{
- if (!IS_AUTOMATIC) {
- exit_bootsplash();
- return ask_from_list(msg, elems, choice);
- } else {
- char ** sav_elems = elems;
- char * tmp = get_auto_value(auto_param);
- while (elems && *elems) {
- if (!strcmp(tmp, *elems_auto)) {
- *choice = *elems;
- log_message("AUTOMATIC: parameter %s for %s means returning %s", tmp, auto_param, *elems);
- return RETURN_OK;
- }
- elems++;
- elems_auto++;
- }
- unset_automatic(); /* we are in a fallback mode */
- return ask_from_list(msg, sav_elems, choice);
- }
-}
-
-enum return_type ask_from_list_comments_auto(char *msg, char ** elems, char ** elems_comments, char ** choice, char * auto_param, char ** elems_auto)
-{
- if (!IS_AUTOMATIC) {
- exit_bootsplash();
- return ask_from_list_comments(msg, elems, elems_comments, choice);
- } else {
- char ** sav_elems = elems;
- char * tmp = get_auto_value(auto_param);
- while (elems && *elems) {
- if (!strcmp(tmp, *elems_auto)) {
- *choice = *elems;
- log_message("AUTOMATIC: parameter %s for %s means returning %s", tmp, auto_param, *elems);
- return RETURN_OK;
- }
- elems++;
- elems_auto++;
- }
- unset_automatic(); /* we are in a fallback mode */
- return ask_from_list_comments(msg, sav_elems, elems_comments, choice);
- }
-}
-
-
-enum return_type ask_from_entries_auto(char *msg, char ** questions, char *** answers, int entry_size, char ** questions_auto, void (*callback_func)(char ** strings))
-{
- if (!IS_AUTOMATIC) {
- exit_bootsplash();
- return ask_from_entries(msg, questions, answers, entry_size, callback_func);
- } else {
- char * tmp_answers[50];
- int i = 0;
- while (questions && *questions) {
- tmp_answers[i] = get_auto_value(*questions_auto);
- log_message("AUTOMATIC: question %s answers %s because of param %s", *questions, tmp_answers[i], *questions_auto);
- i++;
- questions++;
- questions_auto++;
-
- }
- *answers = memdup(tmp_answers, sizeof(char *) * i);
- return RETURN_OK;
- }
-}
diff --git a/mdk-stage1/automatic.h b/mdk-stage1/automatic.h
deleted file mode 100644
index a5bfe212b..000000000
--- a/mdk-stage1/automatic.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * This is supposed to replace the redhat "kickstart", by name but
- * also by design (no code pollution).
- *
- */
-
-#ifndef _AUTOMATIC_H_
-#define _AUTOMATIC_H_
-
-#include "stage1.h"
-
-void grab_automatic_params(char * line);
-char * get_auto_value(char * auto_param);
-
-enum return_type ask_from_list_auto(char *msg, char ** elems, char ** choice, char * auto_param, char ** elems_auto);
-enum return_type ask_from_list_comments_auto(char *msg, char ** elems, char ** elems_comments, char ** choice, char * auto_param, char ** elems_auto);
-enum return_type ask_from_entries_auto(char *msg, char ** questions, char *** answers, int entry_size, char ** questions_auto, void (*callback_func)(char ** strings));
-
-#endif
diff --git a/mdk-stage1/bootsplash.c b/mdk-stage1/bootsplash.c
deleted file mode 100644
index d51deb543..000000000
--- a/mdk-stage1/bootsplash.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Pixel (pixel@mandrakesoft.com)
- *
- * Copyright 2004 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdio.h>
-#include "bootsplash.h"
-#include "frontend.h"
-#include "log.h"
-
-static int total_size;
-static float previous;
-static FILE* splash = NULL;
-
-static void update_progression_only(int current_size)
-{
- if (splash && total_size) {
- float ratio = (float) (current_size + 1) / total_size;
- if (ratio > previous + 0.01) {
- fprintf(splash, "show %d\n", (int) (ratio * 65534));
- fflush(splash);
- previous = ratio;
- }
- }
-}
-
-static void open_bootsplash(void)
-{
- if (!splash) splash = fopen("/proc/splash", "w");
- if (!splash) log_message("opening /proc/splash failed");
-}
-
-void exit_bootsplash(void)
-{
- log_message("exiting bootsplash");
- open_bootsplash();
- if (splash) {
- fprintf(splash, "verbose\n");
- fflush(splash);
- }
-}
-
-
-void init_progression(char *msg, int size)
-{
- previous = 0; total_size = size;
- open_bootsplash();
- update_progression_only(0);
- init_progression_raw(msg, size);
-}
-
-void update_progression(int current_size)
-{
- update_progression_only(current_size);
- update_progression_raw(current_size);
-}
-
-void end_progression(void)
-{
- end_progression_raw();
-}
diff --git a/mdk-stage1/bootsplash.h b/mdk-stage1/bootsplash.h
deleted file mode 100644
index 7d1c8403c..000000000
--- a/mdk-stage1/bootsplash.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Pixel (pixel@mandrakesoft.com)
- *
- * Copyright 2004 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _BOOTSPLASH_H_
-#define _BOOTSPLASH_H_
-
-#ifdef ENABLE_BOOTSPLASH
-void exit_bootsplash(void);
-void tell_bootsplash(char *cmd);
-#else
-#define exit_bootsplash()
-#endif
-
-#endif
diff --git a/mdk-stage1/bzlib/Makefile b/mdk-stage1/bzlib/Makefile
deleted file mode 100644
index 929164253..000000000
--- a/mdk-stage1/bzlib/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-LIBNAME = libbzlib
-
-OBJS = blocksort.o bzlib.o compress.o crctable.o decompress.o huffman.o randtable.o
-
-DEFS =
-
-INCS =
-
-
-TARGETS = $(LIBNAME).a
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o *.a
-
-$(LIBNAME).a: $(OBJS)
- ar -cru $@ $^
- ranlib $@
-
-$(OBJS): %.o: %.c
- $(DIET) $(CC) $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/bzlib/blocksort.c b/mdk-stage1/bzlib/blocksort.c
deleted file mode 100644
index c1b78c483..000000000
--- a/mdk-stage1/bzlib/blocksort.c
+++ /dev/null
@@ -1,1138 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Block sorting machinery ---*/
-/*--- blocksort.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
-
- To get some idea how the block sorting algorithms in this file
- work, read my paper
- On the Performance of BWT Sorting Algorithms
- in Proceedings of the IEEE Data Compression Conference 2000,
- Snowbird, Utah, USA, 27-30 March 2000. The main sort in this
- file implements the algorithm called cache in the paper.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "bzlib_private.h"
-
-/*---------------------------------------------*/
-/*--- Fallback O(N log(N)^2) sorting ---*/
-/*--- algorithm, for repetitive blocks ---*/
-/*---------------------------------------------*/
-
-/*---------------------------------------------*/
-static
-__inline__
-void fallbackSimpleSort ( UInt32* fmap,
- UInt32* eclass,
- Int32 lo,
- Int32 hi )
-{
- Int32 i, j, tmp;
- UInt32 ec_tmp;
-
- if (lo == hi) return;
-
- if (hi - lo > 3) {
- for ( i = hi-4; i >= lo; i-- ) {
- tmp = fmap[i];
- ec_tmp = eclass[tmp];
- for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
- fmap[j-4] = fmap[j];
- fmap[j-4] = tmp;
- }
- }
-
- for ( i = hi-1; i >= lo; i-- ) {
- tmp = fmap[i];
- ec_tmp = eclass[tmp];
- for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
- fmap[j-1] = fmap[j];
- fmap[j-1] = tmp;
- }
-}
-
-
-/*---------------------------------------------*/
-#define fswap(zz1, zz2) \
- { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
-
-#define fvswap(zzp1, zzp2, zzn) \
-{ \
- Int32 yyp1 = (zzp1); \
- Int32 yyp2 = (zzp2); \
- Int32 yyn = (zzn); \
- while (yyn > 0) { \
- fswap(fmap[yyp1], fmap[yyp2]); \
- yyp1++; yyp2++; yyn--; \
- } \
-}
-
-
-#define fmin(a,b) ((a) < (b)) ? (a) : (b)
-
-#define fpush(lz,hz) { stackLo[sp] = lz; \
- stackHi[sp] = hz; \
- sp++; }
-
-#define fpop(lz,hz) { sp--; \
- lz = stackLo[sp]; \
- hz = stackHi[sp]; }
-
-#define FALLBACK_QSORT_SMALL_THRESH 10
-#define FALLBACK_QSORT_STACK_SIZE 100
-
-
-static
-void fallbackQSort3 ( UInt32* fmap,
- UInt32* eclass,
- Int32 loSt,
- Int32 hiSt )
-{
- Int32 unLo, unHi, ltLo, gtHi, n, m;
- Int32 sp, lo, hi;
- UInt32 med, r, r3;
- Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
- Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
-
- r = 0;
-
- sp = 0;
- fpush ( loSt, hiSt );
-
- while (sp > 0) {
-
- AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 );
-
- fpop ( lo, hi );
- if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
- fallbackSimpleSort ( fmap, eclass, lo, hi );
- continue;
- }
-
- /* Random partitioning. Median of 3 sometimes fails to
- avoid bad cases. Median of 9 seems to help but
- looks rather expensive. This too seems to work but
- is cheaper. Guidance for the magic constants
- 7621 and 32768 is taken from Sedgewick's algorithms
- book, chapter 35.
- */
- r = ((r * 7621) + 1) % 32768;
- r3 = r % 3;
- if (r3 == 0) med = eclass[fmap[lo]]; else
- if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
- med = eclass[fmap[hi]];
-
- unLo = ltLo = lo;
- unHi = gtHi = hi;
-
- while (1) {
- while (1) {
- if (unLo > unHi) break;
- n = (Int32)eclass[fmap[unLo]] - (Int32)med;
- if (n == 0) {
- fswap(fmap[unLo], fmap[ltLo]);
- ltLo++; unLo++;
- continue;
- };
- if (n > 0) break;
- unLo++;
- }
- while (1) {
- if (unLo > unHi) break;
- n = (Int32)eclass[fmap[unHi]] - (Int32)med;
- if (n == 0) {
- fswap(fmap[unHi], fmap[gtHi]);
- gtHi--; unHi--;
- continue;
- };
- if (n < 0) break;
- unHi--;
- }
- if (unLo > unHi) break;
- fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
- }
-
- AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
-
- if (gtHi < ltLo) continue;
-
- n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
- m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
-
- n = lo + unLo - ltLo - 1;
- m = hi - (gtHi - unHi) + 1;
-
- if (n - lo > hi - m) {
- fpush ( lo, n );
- fpush ( m, hi );
- } else {
- fpush ( m, hi );
- fpush ( lo, n );
- }
- }
-}
-
-#undef fmin
-#undef fpush
-#undef fpop
-#undef fswap
-#undef fvswap
-#undef FALLBACK_QSORT_SMALL_THRESH
-#undef FALLBACK_QSORT_STACK_SIZE
-
-
-/*---------------------------------------------*/
-/* Pre:
- nblock > 0
- eclass exists for [0 .. nblock-1]
- ((UChar*)eclass) [0 .. nblock-1] holds block
- ptr exists for [0 .. nblock-1]
-
- Post:
- ((UChar*)eclass) [0 .. nblock-1] holds block
- All other areas of eclass destroyed
- fmap [0 .. nblock-1] holds sorted order
- bhtab [ 0 .. 2+(nblock/32) ] destroyed
-*/
-
-#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
-#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
-#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
-#define WORD_BH(zz) bhtab[(zz) >> 5]
-#define UNALIGNED_BH(zz) ((zz) & 0x01f)
-
-static
-void fallbackSort ( UInt32* fmap,
- UInt32* eclass,
- UInt32* bhtab,
- Int32 nblock,
- Int32 verb )
-{
- Int32 ftab[257];
- Int32 ftabCopy[256];
- Int32 H, i, j, k, l, r, cc, cc1;
- Int32 nNotDone;
- Int32 nBhtab;
- UChar* eclass8 = (UChar*)eclass;
-
- /*--
- Initial 1-char radix sort to generate
- initial fmap and initial BH bits.
- --*/
- if (verb >= 4)
- VPrintf0 ( " bucket sorting ...\n" );
- for (i = 0; i < 257; i++) ftab[i] = 0;
- for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
- for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i];
- for (i = 1; i < 257; i++) ftab[i] += ftab[i-1];
-
- for (i = 0; i < nblock; i++) {
- j = eclass8[i];
- k = ftab[j] - 1;
- ftab[j] = k;
- fmap[k] = i;
- }
-
- nBhtab = 2 + (nblock / 32);
- for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
- for (i = 0; i < 256; i++) SET_BH(ftab[i]);
-
- /*--
- Inductively refine the buckets. Kind-of an
- "exponential radix sort" (!), inspired by the
- Manber-Myers suffix array construction algorithm.
- --*/
-
- /*-- set sentinel bits for block-end detection --*/
- for (i = 0; i < 32; i++) {
- SET_BH(nblock + 2*i);
- CLEAR_BH(nblock + 2*i + 1);
- }
-
- /*-- the log(N) loop --*/
- H = 1;
- while (1) {
-
- if (verb >= 4)
- VPrintf1 ( " depth %6d has ", H );
-
- j = 0;
- for (i = 0; i < nblock; i++) {
- if (ISSET_BH(i)) j = i;
- k = fmap[i] - H; if (k < 0) k += nblock;
- eclass[k] = j;
- }
-
- nNotDone = 0;
- r = -1;
- while (1) {
-
- /*-- find the next non-singleton bucket --*/
- k = r + 1;
- while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
- if (ISSET_BH(k)) {
- while (WORD_BH(k) == 0xffffffff) k += 32;
- while (ISSET_BH(k)) k++;
- }
- l = k - 1;
- if (l >= nblock) break;
- while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
- if (!ISSET_BH(k)) {
- while (WORD_BH(k) == 0x00000000) k += 32;
- while (!ISSET_BH(k)) k++;
- }
- r = k - 1;
- if (r >= nblock) break;
-
- /*-- now [l, r] bracket current bucket --*/
- if (r > l) {
- nNotDone += (r - l + 1);
- fallbackQSort3 ( fmap, eclass, l, r );
-
- /*-- scan bucket and generate header bits-- */
- cc = -1;
- for (i = l; i <= r; i++) {
- cc1 = eclass[fmap[i]];
- if (cc != cc1) { SET_BH(i); cc = cc1; };
- }
- }
- }
-
- if (verb >= 4)
- VPrintf1 ( "%6d unresolved strings\n", nNotDone );
-
- H *= 2;
- if (H > nblock || nNotDone == 0) break;
- }
-
- /*--
- Reconstruct the original block in
- eclass8 [0 .. nblock-1], since the
- previous phase destroyed it.
- --*/
- if (verb >= 4)
- VPrintf0 ( " reconstructing block ...\n" );
- j = 0;
- for (i = 0; i < nblock; i++) {
- while (ftabCopy[j] == 0) j++;
- ftabCopy[j]--;
- eclass8[fmap[i]] = (UChar)j;
- }
- AssertH ( j < 256, 1005 );
-}
-
-#undef SET_BH
-#undef CLEAR_BH
-#undef ISSET_BH
-#undef WORD_BH
-#undef UNALIGNED_BH
-
-
-/*---------------------------------------------*/
-/*--- The main, O(N^2 log(N)) sorting ---*/
-/*--- algorithm. Faster for "normal" ---*/
-/*--- non-repetitive blocks. ---*/
-/*---------------------------------------------*/
-
-/*---------------------------------------------*/
-static
-__inline__
-Bool mainGtU ( UInt32 i1,
- UInt32 i2,
- UChar* block,
- UInt16* quadrant,
- UInt32 nblock,
- Int32* budget )
-{
- Int32 k;
- UChar c1, c2;
- UInt16 s1, s2;
-
- AssertD ( i1 != i2, "mainGtU" );
- /* 1 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 2 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 3 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 4 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 5 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 6 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 7 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 8 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 9 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 10 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 11 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
- /* 12 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- i1++; i2++;
-
- k = nblock + 8;
-
- do {
- /* 1 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 2 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 3 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 4 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 5 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 6 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 7 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
- /* 8 */
- c1 = block[i1]; c2 = block[i2];
- if (c1 != c2) return (c1 > c2);
- s1 = quadrant[i1]; s2 = quadrant[i2];
- if (s1 != s2) return (s1 > s2);
- i1++; i2++;
-
- if (i1 >= nblock) i1 -= nblock;
- if (i2 >= nblock) i2 -= nblock;
-
- k -= 8;
- (*budget)--;
- }
- while (k >= 0);
-
- return False;
-}
-
-
-/*---------------------------------------------*/
-/*--
- Knuth's increments seem to work better
- than Incerpi-Sedgewick here. Possibly
- because the number of elems to sort is
- usually small, typically <= 20.
---*/
-static
-Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
- 9841, 29524, 88573, 265720,
- 797161, 2391484 };
-
-static
-void mainSimpleSort ( UInt32* ptr,
- UChar* block,
- UInt16* quadrant,
- Int32 nblock,
- Int32 lo,
- Int32 hi,
- Int32 d,
- Int32* budget )
-{
- Int32 i, j, h, bigN, hp;
- UInt32 v;
-
- bigN = hi - lo + 1;
- if (bigN < 2) return;
-
- hp = 0;
- while (incs[hp] < bigN) hp++;
- hp--;
-
- for (; hp >= 0; hp--) {
- h = incs[hp];
-
- i = lo + h;
- while (True) {
-
- /*-- copy 1 --*/
- if (i > hi) break;
- v = ptr[i];
- j = i;
- while ( mainGtU (
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
- ) ) {
- ptr[j] = ptr[j-h];
- j = j - h;
- if (j <= (lo + h - 1)) break;
- }
- ptr[j] = v;
- i++;
-
- /*-- copy 2 --*/
- if (i > hi) break;
- v = ptr[i];
- j = i;
- while ( mainGtU (
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
- ) ) {
- ptr[j] = ptr[j-h];
- j = j - h;
- if (j <= (lo + h - 1)) break;
- }
- ptr[j] = v;
- i++;
-
- /*-- copy 3 --*/
- if (i > hi) break;
- v = ptr[i];
- j = i;
- while ( mainGtU (
- ptr[j-h]+d, v+d, block, quadrant, nblock, budget
- ) ) {
- ptr[j] = ptr[j-h];
- j = j - h;
- if (j <= (lo + h - 1)) break;
- }
- ptr[j] = v;
- i++;
-
- if (*budget < 0) return;
- }
- }
-}
-
-
-/*---------------------------------------------*/
-/*--
- The following is an implementation of
- an elegant 3-way quicksort for strings,
- described in a paper "Fast Algorithms for
- Sorting and Searching Strings", by Robert
- Sedgewick and Jon L. Bentley.
---*/
-
-#define mswap(zz1, zz2) \
- { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
-
-#define mvswap(zzp1, zzp2, zzn) \
-{ \
- Int32 yyp1 = (zzp1); \
- Int32 yyp2 = (zzp2); \
- Int32 yyn = (zzn); \
- while (yyn > 0) { \
- mswap(ptr[yyp1], ptr[yyp2]); \
- yyp1++; yyp2++; yyn--; \
- } \
-}
-
-static
-__inline__
-UChar mmed3 ( UChar a, UChar b, UChar c )
-{
- UChar t;
- if (a > b) { t = a; a = b; b = t; };
- if (b > c) {
- b = c;
- if (a > b) b = a;
- }
- return b;
-}
-
-#define mmin(a,b) ((a) < (b)) ? (a) : (b)
-
-#define mpush(lz,hz,dz) { stackLo[sp] = lz; \
- stackHi[sp] = hz; \
- stackD [sp] = dz; \
- sp++; }
-
-#define mpop(lz,hz,dz) { sp--; \
- lz = stackLo[sp]; \
- hz = stackHi[sp]; \
- dz = stackD [sp]; }
-
-
-#define mnextsize(az) (nextHi[az]-nextLo[az])
-
-#define mnextswap(az,bz) \
- { Int32 tz; \
- tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
- tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
- tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
-
-
-#define MAIN_QSORT_SMALL_THRESH 20
-#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
-#define MAIN_QSORT_STACK_SIZE 100
-
-static
-void mainQSort3 ( UInt32* ptr,
- UChar* block,
- UInt16* quadrant,
- Int32 nblock,
- Int32 loSt,
- Int32 hiSt,
- Int32 dSt,
- Int32* budget )
-{
- Int32 unLo, unHi, ltLo, gtHi, n, m, med;
- Int32 sp, lo, hi, d;
-
- Int32 stackLo[MAIN_QSORT_STACK_SIZE];
- Int32 stackHi[MAIN_QSORT_STACK_SIZE];
- Int32 stackD [MAIN_QSORT_STACK_SIZE];
-
- Int32 nextLo[3];
- Int32 nextHi[3];
- Int32 nextD [3];
-
- sp = 0;
- mpush ( loSt, hiSt, dSt );
-
- while (sp > 0) {
-
- AssertH ( sp < MAIN_QSORT_STACK_SIZE, 1001 );
-
- mpop ( lo, hi, d );
- if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
- d > MAIN_QSORT_DEPTH_THRESH) {
- mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
- if (*budget < 0) return;
- continue;
- }
-
- med = (Int32)
- mmed3 ( block[ptr[ lo ]+d],
- block[ptr[ hi ]+d],
- block[ptr[ (lo+hi)>>1 ]+d] );
-
- unLo = ltLo = lo;
- unHi = gtHi = hi;
-
- while (True) {
- while (True) {
- if (unLo > unHi) break;
- n = ((Int32)block[ptr[unLo]+d]) - med;
- if (n == 0) {
- mswap(ptr[unLo], ptr[ltLo]);
- ltLo++; unLo++; continue;
- };
- if (n > 0) break;
- unLo++;
- }
- while (True) {
- if (unLo > unHi) break;
- n = ((Int32)block[ptr[unHi]+d]) - med;
- if (n == 0) {
- mswap(ptr[unHi], ptr[gtHi]);
- gtHi--; unHi--; continue;
- };
- if (n < 0) break;
- unHi--;
- }
- if (unLo > unHi) break;
- mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
- }
-
- AssertD ( unHi == unLo-1, "mainQSort3(2)" );
-
- if (gtHi < ltLo) {
- mpush(lo, hi, d+1 );
- continue;
- }
-
- n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
- m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
-
- n = lo + unLo - ltLo - 1;
- m = hi - (gtHi - unHi) + 1;
-
- nextLo[0] = lo; nextHi[0] = n; nextD[0] = d;
- nextLo[1] = m; nextHi[1] = hi; nextD[1] = d;
- nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
-
- if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
- if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
- if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
-
- AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
- AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
-
- mpush (nextLo[0], nextHi[0], nextD[0]);
- mpush (nextLo[1], nextHi[1], nextD[1]);
- mpush (nextLo[2], nextHi[2], nextD[2]);
- }
-}
-
-#undef mswap
-#undef mvswap
-#undef mpush
-#undef mpop
-#undef mmin
-#undef mnextsize
-#undef mnextswap
-#undef MAIN_QSORT_SMALL_THRESH
-#undef MAIN_QSORT_DEPTH_THRESH
-#undef MAIN_QSORT_STACK_SIZE
-
-
-/*---------------------------------------------*/
-/* Pre:
- nblock > N_OVERSHOOT
- block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
- ((UChar*)block32) [0 .. nblock-1] holds block
- ptr exists for [0 .. nblock-1]
-
- Post:
- ((UChar*)block32) [0 .. nblock-1] holds block
- All other areas of block32 destroyed
- ftab [0 .. 65536 ] destroyed
- ptr [0 .. nblock-1] holds sorted order
- if (*budget < 0), sorting was abandoned
-*/
-
-#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
-#define SETMASK (1 << 21)
-#define CLEARMASK (~(SETMASK))
-
-static
-void mainSort ( UInt32* ptr,
- UChar* block,
- UInt16* quadrant,
- UInt32* ftab,
- Int32 nblock,
- Int32 verb,
- Int32* budget )
-{
- Int32 i, j, k, ss, sb;
- Int32 runningOrder[256];
- Bool bigDone[256];
- Int32 copyStart[256];
- Int32 copyEnd [256];
- UChar c1;
- Int32 numQSorted;
- UInt16 s;
- if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" );
-
- /*-- set up the 2-byte frequency table --*/
- for (i = 65536; i >= 0; i--) ftab[i] = 0;
-
- j = block[0] << 8;
- i = nblock-1;
- for (; i >= 3; i -= 4) {
- quadrant[i] = 0;
- j = (j >> 8) | ( ((UInt16)block[i]) << 8);
- ftab[j]++;
- quadrant[i-1] = 0;
- j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
- ftab[j]++;
- quadrant[i-2] = 0;
- j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
- ftab[j]++;
- quadrant[i-3] = 0;
- j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
- ftab[j]++;
- }
- for (; i >= 0; i--) {
- quadrant[i] = 0;
- j = (j >> 8) | ( ((UInt16)block[i]) << 8);
- ftab[j]++;
- }
-
- /*-- (emphasises close relationship of block & quadrant) --*/
- for (i = 0; i < BZ_N_OVERSHOOT; i++) {
- block [nblock+i] = block[i];
- quadrant[nblock+i] = 0;
- }
-
- if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" );
-
- /*-- Complete the initial radix sort --*/
- for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
-
- s = block[0] << 8;
- i = nblock-1;
- for (; i >= 3; i -= 4) {
- s = (s >> 8) | (block[i] << 8);
- j = ftab[s] -1;
- ftab[s] = j;
- ptr[j] = i;
- s = (s >> 8) | (block[i-1] << 8);
- j = ftab[s] -1;
- ftab[s] = j;
- ptr[j] = i-1;
- s = (s >> 8) | (block[i-2] << 8);
- j = ftab[s] -1;
- ftab[s] = j;
- ptr[j] = i-2;
- s = (s >> 8) | (block[i-3] << 8);
- j = ftab[s] -1;
- ftab[s] = j;
- ptr[j] = i-3;
- }
- for (; i >= 0; i--) {
- s = (s >> 8) | (block[i] << 8);
- j = ftab[s] -1;
- ftab[s] = j;
- ptr[j] = i;
- }
-
- /*--
- Now ftab contains the first loc of every small bucket.
- Calculate the running order, from smallest to largest
- big bucket.
- --*/
- for (i = 0; i <= 255; i++) {
- bigDone [i] = False;
- runningOrder[i] = i;
- }
-
- {
- Int32 vv;
- Int32 h = 1;
- do h = 3 * h + 1; while (h <= 256);
- do {
- h = h / 3;
- for (i = h; i <= 255; i++) {
- vv = runningOrder[i];
- j = i;
- while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
- runningOrder[j] = runningOrder[j-h];
- j = j - h;
- if (j <= (h - 1)) goto zero;
- }
- zero:
- runningOrder[j] = vv;
- }
- } while (h != 1);
- }
-
- /*--
- The main sorting loop.
- --*/
-
- numQSorted = 0;
-
- for (i = 0; i <= 255; i++) {
-
- /*--
- Process big buckets, starting with the least full.
- Basically this is a 3-step process in which we call
- mainQSort3 to sort the small buckets [ss, j], but
- also make a big effort to avoid the calls if we can.
- --*/
- ss = runningOrder[i];
-
- /*--
- Step 1:
- Complete the big bucket [ss] by quicksorting
- any unsorted small buckets [ss, j], for j != ss.
- Hopefully previous pointer-scanning phases have already
- completed many of the small buckets [ss, j], so
- we don't have to sort them at all.
- --*/
- for (j = 0; j <= 255; j++) {
- if (j != ss) {
- sb = (ss << 8) + j;
- if ( ! (ftab[sb] & SETMASK) ) {
- Int32 lo = ftab[sb] & CLEARMASK;
- Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
- if (hi > lo) {
- if (verb >= 4)
- VPrintf4 ( " qsort [0x%x, 0x%x] "
- "done %d this %d\n",
- ss, j, numQSorted, hi - lo + 1 );
- mainQSort3 (
- ptr, block, quadrant, nblock,
- lo, hi, BZ_N_RADIX, budget
- );
- numQSorted += (hi - lo + 1);
- if (*budget < 0) return;
- }
- }
- ftab[sb] |= SETMASK;
- }
- }
-
- AssertH ( !bigDone[ss], 1006 );
-
- /*--
- Step 2:
- Now scan this big bucket [ss] so as to synthesise the
- sorted order for small buckets [t, ss] for all t,
- including, magically, the bucket [ss,ss] too.
- This will avoid doing Real Work in subsequent Step 1's.
- --*/
- {
- for (j = 0; j <= 255; j++) {
- copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK;
- copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
- }
- for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
- k = ptr[j]-1; if (k < 0) k += nblock;
- c1 = block[k];
- if (!bigDone[c1])
- ptr[ copyStart[c1]++ ] = k;
- }
- for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
- k = ptr[j]-1; if (k < 0) k += nblock;
- c1 = block[k];
- if (!bigDone[c1])
- ptr[ copyEnd[c1]-- ] = k;
- }
- }
-
- AssertH ( copyStart[ss]-1 == copyEnd[ss], 1007 );
-
- for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
-
- /*--
- Step 3:
- The [ss] big bucket is now done. Record this fact,
- and update the quadrant descriptors. Remember to
- update quadrants in the overshoot area too, if
- necessary. The "if (i < 255)" test merely skips
- this updating for the last bucket processed, since
- updating for the last bucket is pointless.
-
- The quadrant array provides a way to incrementally
- cache sort orderings, as they appear, so as to
- make subsequent comparisons in fullGtU() complete
- faster. For repetitive blocks this makes a big
- difference (but not big enough to be able to avoid
- the fallback sorting mechanism, exponential radix sort).
-
- The precise meaning is: at all times:
-
- for 0 <= i < nblock and 0 <= j <= nblock
-
- if block[i] != block[j],
-
- then the relative values of quadrant[i] and
- quadrant[j] are meaningless.
-
- else {
- if quadrant[i] < quadrant[j]
- then the string starting at i lexicographically
- precedes the string starting at j
-
- else if quadrant[i] > quadrant[j]
- then the string starting at j lexicographically
- precedes the string starting at i
-
- else
- the relative ordering of the strings starting
- at i and j has not yet been determined.
- }
- --*/
- bigDone[ss] = True;
-
- if (i < 255) {
- Int32 bbStart = ftab[ss << 8] & CLEARMASK;
- Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
- Int32 shifts = 0;
-
- while ((bbSize >> shifts) > 65534) shifts++;
-
- for (j = bbSize-1; j >= 0; j--) {
- Int32 a2update = ptr[bbStart + j];
- UInt16 qVal = (UInt16)(j >> shifts);
- quadrant[a2update] = qVal;
- if (a2update < BZ_N_OVERSHOOT)
- quadrant[a2update + nblock] = qVal;
- }
- AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
- }
-
- }
-
- if (verb >= 4)
- VPrintf3 ( " %d pointers, %d sorted, %d scanned\n",
- nblock, numQSorted, nblock - numQSorted );
-}
-
-#undef BIGFREQ
-#undef SETMASK
-#undef CLEARMASK
-
-
-/*---------------------------------------------*/
-/* Pre:
- nblock > 0
- arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
- ((UChar*)arr2) [0 .. nblock-1] holds block
- arr1 exists for [0 .. nblock-1]
-
- Post:
- ((UChar*)arr2) [0 .. nblock-1] holds block
- All other areas of block destroyed
- ftab [ 0 .. 65536 ] destroyed
- arr1 [0 .. nblock-1] holds sorted order
-*/
-void BZ2_blockSort ( EState* s )
-{
- UInt32* ptr = s->ptr;
- UChar* block = s->block;
- UInt32* ftab = s->ftab;
- Int32 nblock = s->nblock;
- Int32 verb = s->verbosity;
- Int32 wfact = s->workFactor;
- UInt16* quadrant;
- Int32 budget;
- Int32 budgetInit;
- Int32 i;
-
- if (nblock < 10000) {
- fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
- } else {
- /* Calculate the location for quadrant, remembering to get
- the alignment right. Assumes that &(block[0]) is at least
- 2-byte aligned -- this should be ok since block is really
- the first section of arr2.
- */
- i = nblock+BZ_N_OVERSHOOT;
- if (i & 1) i++;
- quadrant = (UInt16*)(&(block[i]));
-
- /* (wfact-1) / 3 puts the default-factor-30
- transition point at very roughly the same place as
- with v0.1 and v0.9.0.
- Not that it particularly matters any more, since the
- resulting compressed stream is now the same regardless
- of whether or not we use the main sort or fallback sort.
- */
- if (wfact < 1 ) wfact = 1;
- if (wfact > 100) wfact = 100;
- budgetInit = nblock * ((wfact-1) / 3);
- budget = budgetInit;
-
- mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
- if (verb >= 3)
- VPrintf3 ( " %d work, %d block, ratio %5.2f\n",
- budgetInit - budget,
- nblock,
- (float)(budgetInit - budget) /
- (float)(nblock==0 ? 1 : nblock) );
- if (budget < 0) {
- if (verb >= 2)
- VPrintf0 ( " too repetitive; using fallback"
- " sorting algorithm\n" );
- fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
- }
- }
-
- s->origPtr = -1;
- for (i = 0; i < s->nblock; i++)
- if (ptr[i] == 0)
- { s->origPtr = i; break; };
-
- AssertH( s->origPtr != -1, 1003 );
-}
-
-
-/*-------------------------------------------------------------*/
-/*--- end blocksort.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/bzlib.c b/mdk-stage1/bzlib/bzlib.c
deleted file mode 100644
index b1fc85236..000000000
--- a/mdk-stage1/bzlib/bzlib.c
+++ /dev/null
@@ -1,1567 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Library top-level functions. ---*/
-/*--- bzlib.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-/*--
- CHANGES
- ~~~~~~~
- 0.9.0 -- original version.
-
- 0.9.0a/b -- no changes in this file.
-
- 0.9.0c
- * made zero-length BZ_FLUSH work correctly in bzCompress().
- * fixed bzWrite/bzRead to ignore zero-length requests.
- * fixed bzread to correctly handle read requests after EOF.
- * wrong parameter order in call to bzDecompressInit in
- bzBuffToBuffDecompress. Fixed.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-
-#include "bzlib_private.h"
-
-
-/*---------------------------------------------------*/
-/*--- Compression stuff ---*/
-/*---------------------------------------------------*/
-
-
-/*---------------------------------------------------*/
-#ifndef BZ_NO_STDIO
-void BZ2_bz__AssertH__fail ( int errcode )
-{
- fprintf(stderr,
- "\n\nbzip2/libbzip2: internal error number %d.\n"
- "This is a bug in bzip2/libbzip2, %s.\n"
- "Please report it to me at: jseward@acm.org. If this happened\n"
- "when you were using some program which uses libbzip2 as a\n"
- "component, you should also report this bug to the author(s)\n"
- "of that program. Please make an effort to report this bug;\n"
- "timely and accurate bug reports eventually lead to higher\n"
- "quality software. Thanks. Julian Seward, 21 March 2000.\n\n",
- errcode,
- BZ2_bzlibVersion()
- );
- exit(3);
-}
-#endif
-
-
-/*---------------------------------------------------*/
-static
-int bz_config_ok ( void )
-{
- if (sizeof(int) != 4) return 0;
- if (sizeof(short) != 2) return 0;
- if (sizeof(char) != 1) return 0;
- return 1;
-}
-
-
-/*---------------------------------------------------*/
-static
-void* default_bzalloc ( void* opaque __attribute__ ((unused)), Int32 items, Int32 size )
-{
- void* v = malloc ( items * size );
- return v;
-}
-
-static
-void default_bzfree ( void* opaque __attribute__ ((unused)), void* addr )
-{
- if (addr != NULL) free ( addr );
-}
-
-
-/*---------------------------------------------------*/
-static
-void prepare_new_block ( EState* s )
-{
- Int32 i;
- s->nblock = 0;
- s->numZ = 0;
- s->state_out_pos = 0;
- BZ_INITIALISE_CRC ( s->blockCRC );
- for (i = 0; i < 256; i++) s->inUse[i] = False;
- s->blockNo++;
-}
-
-
-/*---------------------------------------------------*/
-static
-void init_RL ( EState* s )
-{
- s->state_in_ch = 256;
- s->state_in_len = 0;
-}
-
-
-static
-Bool isempty_RL ( EState* s )
-{
- if (s->state_in_ch < 256 && s->state_in_len > 0)
- return False; else
- return True;
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzCompressInit)
- ( bz_stream* strm,
- int blockSize100k,
- int verbosity,
- int workFactor )
-{
- Int32 n;
- EState* s;
-
- if (!bz_config_ok()) return BZ_CONFIG_ERROR;
-
- if (strm == NULL ||
- blockSize100k < 1 || blockSize100k > 9 ||
- workFactor < 0 || workFactor > 250)
- return BZ_PARAM_ERROR;
-
- if (workFactor == 0) workFactor = 30;
- if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
- if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
-
- s = BZALLOC( sizeof(EState) );
- if (s == NULL) return BZ_MEM_ERROR;
- s->strm = strm;
-
- s->arr1 = NULL;
- s->arr2 = NULL;
- s->ftab = NULL;
-
- n = 100000 * blockSize100k;
- s->arr1 = BZALLOC( n * sizeof(UInt32) );
- s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
- s->ftab = BZALLOC( 65537 * sizeof(UInt32) );
-
- if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) {
- if (s->arr1 != NULL) BZFREE(s->arr1);
- if (s->arr2 != NULL) BZFREE(s->arr2);
- if (s->ftab != NULL) BZFREE(s->ftab);
- if (s != NULL) BZFREE(s);
- return BZ_MEM_ERROR;
- }
-
- s->blockNo = 0;
- s->state = BZ_S_INPUT;
- s->mode = BZ_M_RUNNING;
- s->combinedCRC = 0;
- s->blockSize100k = blockSize100k;
- s->nblockMAX = 100000 * blockSize100k - 19;
- s->verbosity = verbosity;
- s->workFactor = workFactor;
-
- s->block = (UChar*)s->arr2;
- s->mtfv = (UInt16*)s->arr1;
- s->zbits = NULL;
- s->ptr = (UInt32*)s->arr1;
-
- strm->state = s;
- strm->total_in_lo32 = 0;
- strm->total_in_hi32 = 0;
- strm->total_out_lo32 = 0;
- strm->total_out_hi32 = 0;
- init_RL ( s );
- prepare_new_block ( s );
- return BZ_OK;
-}
-
-
-/*---------------------------------------------------*/
-static
-void add_pair_to_block ( EState* s )
-{
- Int32 i;
- UChar ch = (UChar)(s->state_in_ch);
- for (i = 0; i < s->state_in_len; i++) {
- BZ_UPDATE_CRC( s->blockCRC, ch );
- }
- s->inUse[s->state_in_ch] = True;
- switch (s->state_in_len) {
- case 1:
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- break;
- case 2:
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- break;
- case 3:
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- break;
- default:
- s->inUse[s->state_in_len-4] = True;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = (UChar)ch; s->nblock++;
- s->block[s->nblock] = ((UChar)(s->state_in_len-4));
- s->nblock++;
- break;
- }
-}
-
-
-/*---------------------------------------------------*/
-static
-void flush_RL ( EState* s )
-{
- if (s->state_in_ch < 256) add_pair_to_block ( s );
- init_RL ( s );
-}
-
-
-/*---------------------------------------------------*/
-#define ADD_CHAR_TO_BLOCK(zs,zchh0) \
-{ \
- UInt32 zchh = (UInt32)(zchh0); \
- /*-- fast track the common case --*/ \
- if (zchh != zs->state_in_ch && \
- zs->state_in_len == 1) { \
- UChar ch = (UChar)(zs->state_in_ch); \
- BZ_UPDATE_CRC( zs->blockCRC, ch ); \
- zs->inUse[zs->state_in_ch] = True; \
- zs->block[zs->nblock] = (UChar)ch; \
- zs->nblock++; \
- zs->state_in_ch = zchh; \
- } \
- else \
- /*-- general, uncommon cases --*/ \
- if (zchh != zs->state_in_ch || \
- zs->state_in_len == 255) { \
- if (zs->state_in_ch < 256) \
- add_pair_to_block ( zs ); \
- zs->state_in_ch = zchh; \
- zs->state_in_len = 1; \
- } else { \
- zs->state_in_len++; \
- } \
-}
-
-
-/*---------------------------------------------------*/
-static
-Bool copy_input_until_stop ( EState* s )
-{
- Bool progress_in = False;
-
- if (s->mode == BZ_M_RUNNING) {
-
- /*-- fast track the common case --*/
- while (True) {
- /*-- block full? --*/
- if (s->nblock >= s->nblockMAX) break;
- /*-- no input? --*/
- if (s->strm->avail_in == 0) break;
- progress_in = True;
- ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
- s->strm->next_in++;
- s->strm->avail_in--;
- s->strm->total_in_lo32++;
- if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
- }
-
- } else {
-
- /*-- general, uncommon case --*/
- while (True) {
- /*-- block full? --*/
- if (s->nblock >= s->nblockMAX) break;
- /*-- no input? --*/
- if (s->strm->avail_in == 0) break;
- /*-- flush/finish end? --*/
- if (s->avail_in_expect == 0) break;
- progress_in = True;
- ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) );
- s->strm->next_in++;
- s->strm->avail_in--;
- s->strm->total_in_lo32++;
- if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
- s->avail_in_expect--;
- }
- }
- return progress_in;
-}
-
-
-/*---------------------------------------------------*/
-static
-Bool copy_output_until_stop ( EState* s )
-{
- Bool progress_out = False;
-
- while (True) {
-
- /*-- no output space? --*/
- if (s->strm->avail_out == 0) break;
-
- /*-- block done? --*/
- if (s->state_out_pos >= s->numZ) break;
-
- progress_out = True;
- *(s->strm->next_out) = s->zbits[s->state_out_pos];
- s->state_out_pos++;
- s->strm->avail_out--;
- s->strm->next_out++;
- s->strm->total_out_lo32++;
- if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
- }
-
- return progress_out;
-}
-
-
-/*---------------------------------------------------*/
-static
-Bool handle_compress ( bz_stream* strm )
-{
- Bool progress_in = False;
- Bool progress_out = False;
- EState* s = strm->state;
-
- while (True) {
-
- if (s->state == BZ_S_OUTPUT) {
- progress_out |= copy_output_until_stop ( s );
- if (s->state_out_pos < s->numZ) break;
- if (s->mode == BZ_M_FINISHING &&
- s->avail_in_expect == 0 &&
- isempty_RL(s)) break;
- prepare_new_block ( s );
- s->state = BZ_S_INPUT;
- if (s->mode == BZ_M_FLUSHING &&
- s->avail_in_expect == 0 &&
- isempty_RL(s)) break;
- }
-
- if (s->state == BZ_S_INPUT) {
- progress_in |= copy_input_until_stop ( s );
- if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) {
- flush_RL ( s );
- BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) );
- s->state = BZ_S_OUTPUT;
- }
- else
- if (s->nblock >= s->nblockMAX) {
- BZ2_compressBlock ( s, False );
- s->state = BZ_S_OUTPUT;
- }
- else
- if (s->strm->avail_in == 0) {
- break;
- }
- }
-
- }
-
- return progress_in || progress_out;
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
-{
- Bool progress;
- EState* s;
- if (strm == NULL) return BZ_PARAM_ERROR;
- s = strm->state;
- if (s == NULL) return BZ_PARAM_ERROR;
- if (s->strm != strm) return BZ_PARAM_ERROR;
-
- preswitch:
- switch (s->mode) {
-
- case BZ_M_IDLE:
- return BZ_SEQUENCE_ERROR;
-
- case BZ_M_RUNNING:
- if (action == BZ_RUN) {
- progress = handle_compress ( strm );
- return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
- }
- else
- if (action == BZ_FLUSH) {
- s->avail_in_expect = strm->avail_in;
- s->mode = BZ_M_FLUSHING;
- goto preswitch;
- }
- else
- if (action == BZ_FINISH) {
- s->avail_in_expect = strm->avail_in;
- s->mode = BZ_M_FINISHING;
- goto preswitch;
- }
- else
- return BZ_PARAM_ERROR;
-
- case BZ_M_FLUSHING:
- if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR;
- if (s->avail_in_expect != s->strm->avail_in)
- return BZ_SEQUENCE_ERROR;
- progress = handle_compress ( strm );
- if (s->avail_in_expect > 0 || !isempty_RL(s) ||
- s->state_out_pos < s->numZ) return BZ_FLUSH_OK;
- s->mode = BZ_M_RUNNING;
- return BZ_RUN_OK;
-
- case BZ_M_FINISHING:
- if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR;
- if (s->avail_in_expect != s->strm->avail_in)
- return BZ_SEQUENCE_ERROR;
- progress = handle_compress ( strm );
- if (!progress) return BZ_SEQUENCE_ERROR;
- if (s->avail_in_expect > 0 || !isempty_RL(s) ||
- s->state_out_pos < s->numZ) return BZ_FINISH_OK;
- s->mode = BZ_M_IDLE;
- return BZ_STREAM_END;
- }
- return BZ_OK; /*--not reached--*/
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm )
-{
- EState* s;
- if (strm == NULL) return BZ_PARAM_ERROR;
- s = strm->state;
- if (s == NULL) return BZ_PARAM_ERROR;
- if (s->strm != strm) return BZ_PARAM_ERROR;
-
- if (s->arr1 != NULL) BZFREE(s->arr1);
- if (s->arr2 != NULL) BZFREE(s->arr2);
- if (s->ftab != NULL) BZFREE(s->ftab);
- BZFREE(strm->state);
-
- strm->state = NULL;
-
- return BZ_OK;
-}
-
-
-/*---------------------------------------------------*/
-/*--- Decompression stuff ---*/
-/*---------------------------------------------------*/
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzDecompressInit)
- ( bz_stream* strm,
- int verbosity,
- int small )
-{
- DState* s;
-
- if (!bz_config_ok()) return BZ_CONFIG_ERROR;
-
- if (strm == NULL) return BZ_PARAM_ERROR;
- if (small != 0 && small != 1) return BZ_PARAM_ERROR;
- if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR;
-
- if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
- if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
-
- s = BZALLOC( sizeof(DState) );
- if (s == NULL) return BZ_MEM_ERROR;
- s->strm = strm;
- strm->state = s;
- s->state = BZ_X_MAGIC_1;
- s->bsLive = 0;
- s->bsBuff = 0;
- s->calculatedCombinedCRC = 0;
- strm->total_in_lo32 = 0;
- strm->total_in_hi32 = 0;
- strm->total_out_lo32 = 0;
- strm->total_out_hi32 = 0;
- s->smallDecompress = (Bool)small;
- s->ll4 = NULL;
- s->ll16 = NULL;
- s->tt = NULL;
- s->currBlockNo = 0;
- s->verbosity = verbosity;
-
- return BZ_OK;
-}
-
-
-/*---------------------------------------------------*/
-static
-void unRLE_obuf_to_output_FAST ( DState* s )
-{
- UChar k1;
-
- if (s->blockRandomised) {
-
- while (True) {
- /* try to finish existing run */
- while (True) {
- if (s->strm->avail_out == 0) return;
- if (s->state_out_len == 0) break;
- *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
- BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
- s->state_out_len--;
- s->strm->next_out++;
- s->strm->avail_out--;
- s->strm->total_out_lo32++;
- if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
- }
-
- /* can a new run be started? */
- if (s->nblock_used == s->save_nblock+1) return;
-
-
- s->state_out_len = 1;
- s->state_out_ch = s->k0;
- BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 2;
- BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 3;
- BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- BZ_GET_FAST(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- s->state_out_len = ((Int32)k1) + 4;
- BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK;
- s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
- }
-
- } else {
-
- /* restore */
- UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC;
- UChar c_state_out_ch = s->state_out_ch;
- Int32 c_state_out_len = s->state_out_len;
- Int32 c_nblock_used = s->nblock_used;
- Int32 c_k0 = s->k0;
- UInt32* c_tt = s->tt;
- UInt32 c_tPos = s->tPos;
- char* cs_next_out = s->strm->next_out;
- unsigned int cs_avail_out = s->strm->avail_out;
- /* end restore */
-
- UInt32 avail_out_INIT = cs_avail_out;
- Int32 s_save_nblockPP = s->save_nblock+1;
- unsigned int total_out_lo32_old;
-
- while (True) {
-
- /* try to finish existing run */
- if (c_state_out_len > 0) {
- while (True) {
- if (cs_avail_out == 0) goto return_notr;
- if (c_state_out_len == 1) break;
- *( (UChar*)(cs_next_out) ) = c_state_out_ch;
- BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
- c_state_out_len--;
- cs_next_out++;
- cs_avail_out--;
- }
- s_state_out_len_eq_one:
- {
- if (cs_avail_out == 0) {
- c_state_out_len = 1; goto return_notr;
- };
- *( (UChar*)(cs_next_out) ) = c_state_out_ch;
- BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
- cs_next_out++;
- cs_avail_out--;
- }
- }
- /* can a new run be started? */
- if (c_nblock_used == s_save_nblockPP) {
- c_state_out_len = 0; goto return_notr;
- };
- c_state_out_ch = c_k0;
- BZ_GET_FAST_C(k1); c_nblock_used++;
- if (k1 != c_k0) {
- c_k0 = k1; goto s_state_out_len_eq_one;
- };
- if (c_nblock_used == s_save_nblockPP)
- goto s_state_out_len_eq_one;
-
- c_state_out_len = 2;
- BZ_GET_FAST_C(k1); c_nblock_used++;
- if (c_nblock_used == s_save_nblockPP) continue;
- if (k1 != c_k0) { c_k0 = k1; continue; };
-
- c_state_out_len = 3;
- BZ_GET_FAST_C(k1); c_nblock_used++;
- if (c_nblock_used == s_save_nblockPP) continue;
- if (k1 != c_k0) { c_k0 = k1; continue; };
-
- BZ_GET_FAST_C(k1); c_nblock_used++;
- c_state_out_len = ((Int32)k1) + 4;
- BZ_GET_FAST_C(c_k0); c_nblock_used++;
- }
-
- return_notr:
- total_out_lo32_old = s->strm->total_out_lo32;
- s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out);
- if (s->strm->total_out_lo32 < total_out_lo32_old)
- s->strm->total_out_hi32++;
-
- /* save */
- s->calculatedBlockCRC = c_calculatedBlockCRC;
- s->state_out_ch = c_state_out_ch;
- s->state_out_len = c_state_out_len;
- s->nblock_used = c_nblock_used;
- s->k0 = c_k0;
- s->tt = c_tt;
- s->tPos = c_tPos;
- s->strm->next_out = cs_next_out;
- s->strm->avail_out = cs_avail_out;
- /* end save */
- }
-}
-
-
-
-/*---------------------------------------------------*/
-__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
-{
- Int32 nb, na, mid;
- nb = 0;
- na = 256;
- do {
- mid = (nb + na) >> 1;
- if (indx >= cftab[mid]) nb = mid; else na = mid;
- }
- while (na - nb != 1);
- return nb;
-}
-
-
-/*---------------------------------------------------*/
-static
-void unRLE_obuf_to_output_SMALL ( DState* s )
-{
- UChar k1;
-
- if (s->blockRandomised) {
-
- while (True) {
- /* try to finish existing run */
- while (True) {
- if (s->strm->avail_out == 0) return;
- if (s->state_out_len == 0) break;
- *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
- BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
- s->state_out_len--;
- s->strm->next_out++;
- s->strm->avail_out--;
- s->strm->total_out_lo32++;
- if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
- }
-
- /* can a new run be started? */
- if (s->nblock_used == s->save_nblock+1) return;
-
-
- s->state_out_len = 1;
- s->state_out_ch = s->k0;
- BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 2;
- BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 3;
- BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK;
- k1 ^= BZ_RAND_MASK; s->nblock_used++;
- s->state_out_len = ((Int32)k1) + 4;
- BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK;
- s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
- }
-
- } else {
-
- while (True) {
- /* try to finish existing run */
- while (True) {
- if (s->strm->avail_out == 0) return;
- if (s->state_out_len == 0) break;
- *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
- BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
- s->state_out_len--;
- s->strm->next_out++;
- s->strm->avail_out--;
- s->strm->total_out_lo32++;
- if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
- }
-
- /* can a new run be started? */
- if (s->nblock_used == s->save_nblock+1) return;
-
- s->state_out_len = 1;
- s->state_out_ch = s->k0;
- BZ_GET_SMALL(k1); s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 2;
- BZ_GET_SMALL(k1); s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- s->state_out_len = 3;
- BZ_GET_SMALL(k1); s->nblock_used++;
- if (s->nblock_used == s->save_nblock+1) continue;
- if (k1 != s->k0) { s->k0 = k1; continue; };
-
- BZ_GET_SMALL(k1); s->nblock_used++;
- s->state_out_len = ((Int32)k1) + 4;
- BZ_GET_SMALL(s->k0); s->nblock_used++;
- }
-
- }
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
-{
- DState* s;
- if (strm == NULL) return BZ_PARAM_ERROR;
- s = strm->state;
- if (s == NULL) return BZ_PARAM_ERROR;
- if (s->strm != strm) return BZ_PARAM_ERROR;
-
- while (True) {
- if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
- if (s->state == BZ_X_OUTPUT) {
- if (s->smallDecompress)
- unRLE_obuf_to_output_SMALL ( s ); else
- unRLE_obuf_to_output_FAST ( s );
- if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
- BZ_FINALISE_CRC ( s->calculatedBlockCRC );
- if (s->verbosity >= 3)
- VPrintf2 ( " {0x%x, 0x%x}", s->storedBlockCRC,
- s->calculatedBlockCRC );
- if (s->verbosity >= 2) VPrintf0 ( "]" );
- if (s->calculatedBlockCRC != s->storedBlockCRC)
- return BZ_DATA_ERROR;
- s->calculatedCombinedCRC
- = (s->calculatedCombinedCRC << 1) |
- (s->calculatedCombinedCRC >> 31);
- s->calculatedCombinedCRC ^= s->calculatedBlockCRC;
- s->state = BZ_X_BLKHDR_1;
- } else {
- return BZ_OK;
- }
- }
- if (s->state >= BZ_X_MAGIC_1) {
- Int32 r = BZ2_decompress ( s );
- if (r == BZ_STREAM_END) {
- if (s->verbosity >= 3)
- VPrintf2 ( "\n combined CRCs: stored = 0x%x, computed = 0x%x",
- s->storedCombinedCRC, s->calculatedCombinedCRC );
- if (s->calculatedCombinedCRC != s->storedCombinedCRC)
- return BZ_DATA_ERROR;
- return r;
- }
- if (s->state != BZ_X_OUTPUT) return r;
- }
- }
-
- AssertH ( 0, 6001 );
-
- return 0; /*NOTREACHED*/
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm )
-{
- DState* s;
- if (strm == NULL) return BZ_PARAM_ERROR;
- s = strm->state;
- if (s == NULL) return BZ_PARAM_ERROR;
- if (s->strm != strm) return BZ_PARAM_ERROR;
-
- if (s->tt != NULL) BZFREE(s->tt);
- if (s->ll16 != NULL) BZFREE(s->ll16);
- if (s->ll4 != NULL) BZFREE(s->ll4);
-
- BZFREE(strm->state);
- strm->state = NULL;
-
- return BZ_OK;
-}
-
-
-#ifndef BZ_NO_STDIO
-/*---------------------------------------------------*/
-/*--- File I/O stuff ---*/
-/*---------------------------------------------------*/
-
-#define BZ_SETERR(eee) \
-{ \
- if (bzerror != NULL) *bzerror = eee; \
- if (bzf != NULL) bzf->lastErr = eee; \
-}
-
-typedef
- struct {
- FILE* handle;
- Char buf[BZ_MAX_UNUSED];
- Int32 bufN;
- Bool writing;
- bz_stream strm;
- Int32 lastErr;
- Bool initialisedOk;
- }
- bzFile;
-
-
-/*---------------------------------------------*/
-static Bool myfeof ( FILE* f )
-{
- return feof(f) ? True : False;
-}
-
-
-/*---------------------------------------------------*/
-BZFILE* BZ_API(BZ2_bzWriteOpen)
- ( int* bzerror,
- FILE* f,
- int blockSize100k,
- int verbosity,
- int workFactor )
-{
- Int32 ret;
- bzFile* bzf = NULL;
-
- BZ_SETERR(BZ_OK);
-
- if (f == NULL ||
- (blockSize100k < 1 || blockSize100k > 9) ||
- (workFactor < 0 || workFactor > 250) ||
- (verbosity < 0 || verbosity > 4))
- { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
-
- if (ferror(f))
- { BZ_SETERR(BZ_IO_ERROR); return NULL; };
-
- bzf = malloc ( sizeof(bzFile) );
- if (bzf == NULL)
- { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
-
- BZ_SETERR(BZ_OK);
- bzf->initialisedOk = False;
- bzf->bufN = 0;
- bzf->handle = f;
- bzf->writing = True;
- bzf->strm.bzalloc = NULL;
- bzf->strm.bzfree = NULL;
- bzf->strm.opaque = NULL;
-
- if (workFactor == 0) workFactor = 30;
- ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k,
- verbosity, workFactor );
- if (ret != BZ_OK)
- { BZ_SETERR(ret); free(bzf); return NULL; };
-
- bzf->strm.avail_in = 0;
- bzf->initialisedOk = True;
- return bzf;
-}
-
-
-
-/*---------------------------------------------------*/
-void BZ_API(BZ2_bzWrite)
- ( int* bzerror,
- BZFILE* b,
- void* buf,
- int len )
-{
- Int32 n, n2, ret;
- bzFile* bzf = (bzFile*)b;
-
- BZ_SETERR(BZ_OK);
- if (bzf == NULL || buf == NULL || len < 0)
- { BZ_SETERR(BZ_PARAM_ERROR); return; };
- if (!(bzf->writing))
- { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
- if (ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return; };
-
- if (len == 0)
- { BZ_SETERR(BZ_OK); return; };
-
- bzf->strm.avail_in = len;
- bzf->strm.next_in = buf;
-
- while (True) {
- bzf->strm.avail_out = BZ_MAX_UNUSED;
- bzf->strm.next_out = bzf->buf;
- ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN );
- if (ret != BZ_RUN_OK)
- { BZ_SETERR(ret); return; };
-
- if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
- n = BZ_MAX_UNUSED - bzf->strm.avail_out;
- n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
- n, bzf->handle );
- if (n != n2 || ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return; };
- }
-
- if (bzf->strm.avail_in == 0)
- { BZ_SETERR(BZ_OK); return; };
- }
-}
-
-
-/*---------------------------------------------------*/
-void BZ_API(BZ2_bzWriteClose)
- ( int* bzerror,
- BZFILE* b,
- int abandon,
- unsigned int* nbytes_in,
- unsigned int* nbytes_out )
-{
- BZ2_bzWriteClose64 ( bzerror, b, abandon,
- nbytes_in, NULL, nbytes_out, NULL );
-}
-
-
-void BZ_API(BZ2_bzWriteClose64)
- ( int* bzerror,
- BZFILE* b,
- int abandon,
- unsigned int* nbytes_in_lo32,
- unsigned int* nbytes_in_hi32,
- unsigned int* nbytes_out_lo32,
- unsigned int* nbytes_out_hi32 )
-{
- Int32 n, n2, ret;
- bzFile* bzf = (bzFile*)b;
-
- if (bzf == NULL)
- { BZ_SETERR(BZ_OK); return; };
- if (!(bzf->writing))
- { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
- if (ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return; };
-
- if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0;
- if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0;
- if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0;
- if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0;
-
- if ((!abandon) && bzf->lastErr == BZ_OK) {
- while (True) {
- bzf->strm.avail_out = BZ_MAX_UNUSED;
- bzf->strm.next_out = bzf->buf;
- ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH );
- if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END)
- { BZ_SETERR(ret); return; };
-
- if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
- n = BZ_MAX_UNUSED - bzf->strm.avail_out;
- n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar),
- n, bzf->handle );
- if (n != n2 || ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return; };
- }
-
- if (ret == BZ_STREAM_END) break;
- }
- }
-
- if ( !abandon && !ferror ( bzf->handle ) ) {
- fflush ( bzf->handle );
- if (ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return; };
- }
-
- if (nbytes_in_lo32 != NULL)
- *nbytes_in_lo32 = bzf->strm.total_in_lo32;
- if (nbytes_in_hi32 != NULL)
- *nbytes_in_hi32 = bzf->strm.total_in_hi32;
- if (nbytes_out_lo32 != NULL)
- *nbytes_out_lo32 = bzf->strm.total_out_lo32;
- if (nbytes_out_hi32 != NULL)
- *nbytes_out_hi32 = bzf->strm.total_out_hi32;
-
- BZ_SETERR(BZ_OK);
- BZ2_bzCompressEnd ( &(bzf->strm) );
- free ( bzf );
-}
-
-
-/*---------------------------------------------------*/
-BZFILE* BZ_API(BZ2_bzReadOpen)
- ( int* bzerror,
- FILE* f,
- int verbosity,
- int small,
- void* unused,
- int nUnused )
-{
- bzFile* bzf = NULL;
- int ret;
-
- BZ_SETERR(BZ_OK);
-
- if (f == NULL ||
- (small != 0 && small != 1) ||
- (verbosity < 0 || verbosity > 4) ||
- (unused == NULL && nUnused != 0) ||
- (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED)))
- { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
-
- if (ferror(f))
- { BZ_SETERR(BZ_IO_ERROR); return NULL; };
-
- bzf = malloc ( sizeof(bzFile) );
- if (bzf == NULL)
- { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
-
- BZ_SETERR(BZ_OK);
-
- bzf->initialisedOk = False;
- bzf->handle = f;
- bzf->bufN = 0;
- bzf->writing = False;
- bzf->strm.bzalloc = NULL;
- bzf->strm.bzfree = NULL;
- bzf->strm.opaque = NULL;
-
- while (nUnused > 0) {
- bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++;
- unused = ((void*)( 1 + ((UChar*)(unused)) ));
- nUnused--;
- }
-
- ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small );
- if (ret != BZ_OK)
- { BZ_SETERR(ret); free(bzf); return NULL; };
-
- bzf->strm.avail_in = bzf->bufN;
- bzf->strm.next_in = bzf->buf;
-
- bzf->initialisedOk = True;
- return bzf;
-}
-
-
-/*---------------------------------------------------*/
-void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b )
-{
- bzFile* bzf = (bzFile*)b;
-
- BZ_SETERR(BZ_OK);
- if (bzf == NULL)
- { BZ_SETERR(BZ_OK); return; };
-
- if (bzf->writing)
- { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
-
- if (bzf->initialisedOk)
- (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
- free ( bzf );
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzRead)
- ( int* bzerror,
- BZFILE* b,
- void* buf,
- int len )
-{
- Int32 n, ret;
- bzFile* bzf = (bzFile*)b;
-
- BZ_SETERR(BZ_OK);
-
- if (bzf == NULL || buf == NULL || len < 0)
- { BZ_SETERR(BZ_PARAM_ERROR); return 0; };
-
- if (bzf->writing)
- { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; };
-
- if (len == 0)
- { BZ_SETERR(BZ_OK); return 0; };
-
- bzf->strm.avail_out = len;
- bzf->strm.next_out = buf;
-
- while (True) {
-
- if (ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return 0; };
-
- if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) {
- n = fread ( bzf->buf, sizeof(UChar),
- BZ_MAX_UNUSED, bzf->handle );
- if (ferror(bzf->handle))
- { BZ_SETERR(BZ_IO_ERROR); return 0; };
- bzf->bufN = n;
- bzf->strm.avail_in = bzf->bufN;
- bzf->strm.next_in = bzf->buf;
- }
-
- ret = BZ2_bzDecompress ( &(bzf->strm) );
-
- if (ret != BZ_OK && ret != BZ_STREAM_END)
- { BZ_SETERR(ret); return 0; };
-
- if (ret == BZ_OK && myfeof(bzf->handle) &&
- bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0)
- { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; };
-
- if (ret == BZ_STREAM_END)
- { BZ_SETERR(BZ_STREAM_END);
- return len - bzf->strm.avail_out; };
- if (bzf->strm.avail_out == 0)
- { BZ_SETERR(BZ_OK); return len; };
-
- }
-
- return 0; /*not reached*/
-}
-
-
-/*---------------------------------------------------*/
-void BZ_API(BZ2_bzReadGetUnused)
- ( int* bzerror,
- BZFILE* b,
- void** unused,
- int* nUnused )
-{
- bzFile* bzf = (bzFile*)b;
- if (bzf == NULL)
- { BZ_SETERR(BZ_PARAM_ERROR); return; };
- if (bzf->lastErr != BZ_STREAM_END)
- { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
- if (unused == NULL || nUnused == NULL)
- { BZ_SETERR(BZ_PARAM_ERROR); return; };
-
- BZ_SETERR(BZ_OK);
- *nUnused = bzf->strm.avail_in;
- *unused = bzf->strm.next_in;
-}
-#endif
-
-
-/*---------------------------------------------------*/
-/*--- Misc convenience stuff ---*/
-/*---------------------------------------------------*/
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzBuffToBuffCompress)
- ( char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int blockSize100k,
- int verbosity,
- int workFactor )
-{
- bz_stream strm;
- int ret;
-
- if (dest == NULL || destLen == NULL ||
- source == NULL ||
- blockSize100k < 1 || blockSize100k > 9 ||
- verbosity < 0 || verbosity > 4 ||
- workFactor < 0 || workFactor > 250)
- return BZ_PARAM_ERROR;
-
- if (workFactor == 0) workFactor = 30;
- strm.bzalloc = NULL;
- strm.bzfree = NULL;
- strm.opaque = NULL;
- ret = BZ2_bzCompressInit ( &strm, blockSize100k,
- verbosity, workFactor );
- if (ret != BZ_OK) return ret;
-
- strm.next_in = source;
- strm.next_out = dest;
- strm.avail_in = sourceLen;
- strm.avail_out = *destLen;
-
- ret = BZ2_bzCompress ( &strm, BZ_FINISH );
- if (ret == BZ_FINISH_OK) goto output_overflow;
- if (ret != BZ_STREAM_END) goto errhandler;
-
- /* normal termination */
- *destLen -= strm.avail_out;
- BZ2_bzCompressEnd ( &strm );
- return BZ_OK;
-
- output_overflow:
- BZ2_bzCompressEnd ( &strm );
- return BZ_OUTBUFF_FULL;
-
- errhandler:
- BZ2_bzCompressEnd ( &strm );
- return ret;
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzBuffToBuffDecompress)
- ( char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int small,
- int verbosity )
-{
- bz_stream strm;
- int ret;
-
- if (dest == NULL || destLen == NULL ||
- source == NULL ||
- (small != 0 && small != 1) ||
- verbosity < 0 || verbosity > 4)
- return BZ_PARAM_ERROR;
-
- strm.bzalloc = NULL;
- strm.bzfree = NULL;
- strm.opaque = NULL;
- ret = BZ2_bzDecompressInit ( &strm, verbosity, small );
- if (ret != BZ_OK) return ret;
-
- strm.next_in = source;
- strm.next_out = dest;
- strm.avail_in = sourceLen;
- strm.avail_out = *destLen;
-
- ret = BZ2_bzDecompress ( &strm );
- if (ret == BZ_OK) goto output_overflow_or_eof;
- if (ret != BZ_STREAM_END) goto errhandler;
-
- /* normal termination */
- *destLen -= strm.avail_out;
- BZ2_bzDecompressEnd ( &strm );
- return BZ_OK;
-
- output_overflow_or_eof:
- if (strm.avail_out > 0) {
- BZ2_bzDecompressEnd ( &strm );
- return BZ_UNEXPECTED_EOF;
- } else {
- BZ2_bzDecompressEnd ( &strm );
- return BZ_OUTBUFF_FULL;
- };
-
- errhandler:
- BZ2_bzDecompressEnd ( &strm );
- return ret;
-}
-
-
-/*---------------------------------------------------*/
-/*--
- Code contributed by Yoshioka Tsuneo
- (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
- to support better zlib compatibility.
- This code is not _officially_ part of libbzip2 (yet);
- I haven't tested it, documented it, or considered the
- threading-safeness of it.
- If this code breaks, please contact both Yoshioka and me.
---*/
-/*---------------------------------------------------*/
-
-/*---------------------------------------------------*/
-/*--
- return version like "0.9.0c".
---*/
-const char * BZ_API(BZ2_bzlibVersion)(void)
-{
- return BZ_VERSION;
-}
-
-
-#ifndef BZ_NO_STDIO
-/*---------------------------------------------------*/
-
-#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
-# include <fcntl.h>
-# include <io.h>
-# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
-#else
-# define SET_BINARY_MODE(file)
-#endif
-static
-BZFILE * bzopen_or_bzdopen
- ( const char *path, /* no use when bzdopen */
- int fd, /* no use when bzdopen */
- const char *mode,
- int open_mode) /* bzopen: 0, bzdopen:1 */
-{
- int bzerr;
- char unused[BZ_MAX_UNUSED];
- int blockSize100k = 9;
- int writing = 0;
- char mode2[10] = "";
- FILE *fp = NULL;
- BZFILE *bzfp = NULL;
- int verbosity = 0;
- int workFactor = 30;
- int smallMode = 0;
- int nUnused = 0;
-
- if (mode == NULL) return NULL;
- while (*mode) {
- switch (*mode) {
- case 'r':
- writing = 0; break;
- case 'w':
- writing = 1; break;
- case 's':
- smallMode = 1; break;
- default:
- if (isdigit((int)(*mode))) {
- blockSize100k = *mode-'0';
- }
- }
- mode++;
- }
- strcat(mode2, writing ? "w" : "r" );
- strcat(mode2,"b"); /* binary mode */
-
- if (open_mode==0) {
- if (path==NULL || strcmp(path,"")==0) {
- fp = (writing ? stdout : stdin);
- SET_BINARY_MODE(fp);
- } else {
- fp = fopen(path,mode2);
- }
- } else {
-#ifdef BZ_STRICT_ANSI
- fp = NULL;
-#else
- fp = fdopen(fd,mode2);
-#endif
- }
- if (fp == NULL) return NULL;
-
- if (writing) {
- /* Guard against total chaos and anarchy -- JRS */
- if (blockSize100k < 1) blockSize100k = 1;
- if (blockSize100k > 9) blockSize100k = 9;
- bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k,
- verbosity,workFactor);
- } else {
- bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode,
- unused,nUnused);
- }
- if (bzfp == NULL) {
- if (fp != stdin && fp != stdout) fclose(fp);
- return NULL;
- }
- return bzfp;
-}
-
-
-/*---------------------------------------------------*/
-/*--
- open file for read or write.
- ex) bzopen("file","w9")
- case path="" or NULL => use stdin or stdout.
---*/
-BZFILE * BZ_API(BZ2_bzopen)
- ( const char *path,
- const char *mode )
-{
- return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0);
-}
-
-
-/*---------------------------------------------------*/
-BZFILE * BZ_API(BZ2_bzdopen)
- ( int fd,
- const char *mode )
-{
- return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1);
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len )
-{
- int bzerr, nread;
- if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0;
- nread = BZ2_bzRead(&bzerr,b,buf,len);
- if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) {
- return nread;
- } else {
- return -1;
- }
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
-{
- int bzerr;
-
- BZ2_bzWrite(&bzerr,b,buf,len);
- if(bzerr == BZ_OK){
- return len;
- }else{
- return -1;
- }
-}
-
-
-/*---------------------------------------------------*/
-int BZ_API(BZ2_bzflush) (BZFILE *b __attribute__ ((unused)))
-{
- /* do nothing now... */
- return 0;
-}
-
-
-/*---------------------------------------------------*/
-void BZ_API(BZ2_bzclose) (BZFILE* b)
-{
- int bzerr;
- FILE *fp = ((bzFile *)b)->handle;
-
- if (b==NULL) {return;}
- if(((bzFile*)b)->writing){
- BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
- if(bzerr != BZ_OK){
- BZ2_bzWriteClose(NULL,b,1,NULL,NULL);
- }
- }else{
- BZ2_bzReadClose(&bzerr,b);
- }
- if(fp!=stdin && fp!=stdout){
- fclose(fp);
- }
-}
-
-
-/*---------------------------------------------------*/
-/*--
- return last error code
---*/
-static char *bzerrorstrings[] = {
- "OK"
- ,"SEQUENCE_ERROR"
- ,"PARAM_ERROR"
- ,"MEM_ERROR"
- ,"DATA_ERROR"
- ,"DATA_ERROR_MAGIC"
- ,"IO_ERROR"
- ,"UNEXPECTED_EOF"
- ,"OUTBUFF_FULL"
- ,"CONFIG_ERROR"
- ,"???" /* for future */
- ,"???" /* for future */
- ,"???" /* for future */
- ,"???" /* for future */
- ,"???" /* for future */
- ,"???" /* for future */
-};
-
-
-const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum)
-{
- int err = ((bzFile *)b)->lastErr;
-
- if(err>0) err = 0;
- *errnum = err;
- return bzerrorstrings[err*-1];
-}
-#endif
-
-
-/*-------------------------------------------------------------*/
-/*--- end bzlib.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/bzlib.h b/mdk-stage1/bzlib/bzlib.h
deleted file mode 100644
index c9447a295..000000000
--- a/mdk-stage1/bzlib/bzlib.h
+++ /dev/null
@@ -1,319 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Public header file for the library. ---*/
-/*--- bzlib.h ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-
-#ifndef _BZLIB_H
-#define _BZLIB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define BZ_RUN 0
-#define BZ_FLUSH 1
-#define BZ_FINISH 2
-
-#define BZ_OK 0
-#define BZ_RUN_OK 1
-#define BZ_FLUSH_OK 2
-#define BZ_FINISH_OK 3
-#define BZ_STREAM_END 4
-#define BZ_SEQUENCE_ERROR (-1)
-#define BZ_PARAM_ERROR (-2)
-#define BZ_MEM_ERROR (-3)
-#define BZ_DATA_ERROR (-4)
-#define BZ_DATA_ERROR_MAGIC (-5)
-#define BZ_IO_ERROR (-6)
-#define BZ_UNEXPECTED_EOF (-7)
-#define BZ_OUTBUFF_FULL (-8)
-#define BZ_CONFIG_ERROR (-9)
-
-typedef
- struct {
- char *next_in;
- unsigned int avail_in;
- unsigned int total_in_lo32;
- unsigned int total_in_hi32;
-
- char *next_out;
- unsigned int avail_out;
- unsigned int total_out_lo32;
- unsigned int total_out_hi32;
-
- void *state;
-
- void *(*bzalloc)(void *,int,int);
- void (*bzfree)(void *,void *);
- void *opaque;
- }
- bz_stream;
-
-
-#ifndef BZ_IMPORT
-#define BZ_EXPORT
-#endif
-
-#ifdef _WIN32
-# include <stdio.h>
-# include <windows.h>
-# ifdef small
- /* windows.h define small to char */
-# undef small
-# endif
-# ifdef BZ_EXPORT
-# define BZ_API(func) WINAPI func
-# define BZ_EXTERN extern
-# else
- /* import windows dll dynamically */
-# define BZ_API(func) (WINAPI * func)
-# define BZ_EXTERN
-# endif
-#else
-# define BZ_API(func) func
-# define BZ_EXTERN extern
-#endif
-
-
-/*-- Core (low-level) library functions --*/
-
-BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
- bz_stream* strm,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzCompress) (
- bz_stream* strm,
- int action
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
- bz_stream* strm
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
- bz_stream *strm,
- int verbosity,
- int small
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
- bz_stream* strm
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
- bz_stream *strm
- );
-
-
-
-/*-- High(er) level library functions --*/
-
-#ifndef BZ_NO_STDIO
-#define BZ_MAX_UNUSED 5000
-
-typedef void BZFILE;
-
-BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
- int* bzerror,
- FILE* f,
- int verbosity,
- int small,
- void* unused,
- int nUnused
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
- int* bzerror,
- BZFILE* b
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
- int* bzerror,
- BZFILE* b,
- void** unused,
- int* nUnused
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzRead) (
- int* bzerror,
- BZFILE* b,
- void* buf,
- int len
- );
-
-BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
- int* bzerror,
- FILE* f,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzWrite) (
- int* bzerror,
- BZFILE* b,
- void* buf,
- int len
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
- int* bzerror,
- BZFILE* b,
- int abandon,
- unsigned int* nbytes_in,
- unsigned int* nbytes_out
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
- int* bzerror,
- BZFILE* b,
- int abandon,
- unsigned int* nbytes_in_lo32,
- unsigned int* nbytes_in_hi32,
- unsigned int* nbytes_out_lo32,
- unsigned int* nbytes_out_hi32
- );
-#endif
-
-
-/*-- Utility functions --*/
-
-BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
- char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int blockSize100k,
- int verbosity,
- int workFactor
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
- char* dest,
- unsigned int* destLen,
- char* source,
- unsigned int sourceLen,
- int small,
- int verbosity
- );
-
-
-/*--
- Code contributed by Yoshioka Tsuneo
- (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
- to support better zlib compatibility.
- This code is not _officially_ part of libbzip2 (yet);
- I haven't tested it, documented it, or considered the
- threading-safeness of it.
- If this code breaks, please contact both Yoshioka and me.
---*/
-
-BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
- void
- );
-
-#ifndef BZ_NO_STDIO
-BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
- const char *path,
- const char *mode
- );
-
-BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
- int fd,
- const char *mode
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzread) (
- BZFILE* b,
- void* buf,
- int len
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzwrite) (
- BZFILE* b,
- void* buf,
- int len
- );
-
-BZ_EXTERN int BZ_API(BZ2_bzflush) (
- BZFILE* b
- );
-
-BZ_EXTERN void BZ_API(BZ2_bzclose) (
- BZFILE* b
- );
-
-BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
- BZFILE *b,
- int *errnum
- );
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/*-------------------------------------------------------------*/
-/*--- end bzlib.h ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/bzlib_private.h b/mdk-stage1/bzlib/bzlib_private.h
deleted file mode 100644
index fb51c7a1d..000000000
--- a/mdk-stage1/bzlib/bzlib_private.h
+++ /dev/null
@@ -1,530 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Private header file for the library. ---*/
-/*--- bzlib_private.h ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-
-#ifndef _BZLIB_PRIVATE_H
-#define _BZLIB_PRIVATE_H
-
-#include <stdlib.h>
-
-#ifndef BZ_NO_STDIO
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#endif
-
-#include "bzlib.h"
-
-
-
-/*-- General stuff. --*/
-
-#define BZ_VERSION "1.0.1, 23-June-2000"
-
-typedef char Char;
-typedef unsigned char Bool;
-typedef unsigned char UChar;
-typedef int Int32;
-typedef unsigned int UInt32;
-typedef short Int16;
-typedef unsigned short UInt16;
-
-#define True ((Bool)1)
-#define False ((Bool)0)
-
-#ifndef __GNUC__
-#define __inline__ /* */
-#endif
-
-#ifndef BZ_NO_STDIO
-extern void BZ2_bz__AssertH__fail ( int errcode );
-#define AssertH(cond,errcode) \
- { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
-#if BZ_DEBUG
-#define AssertD(cond,msg) \
- { if (!(cond)) { \
- fprintf ( stderr, \
- "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
- exit(1); \
- }}
-#else
-#define AssertD(cond,msg) /* */
-#endif
-#define VPrintf0(zf) \
- fprintf(stderr,zf)
-#define VPrintf1(zf,za1) \
- fprintf(stderr,zf,za1)
-#define VPrintf2(zf,za1,za2) \
- fprintf(stderr,zf,za1,za2)
-#define VPrintf3(zf,za1,za2,za3) \
- fprintf(stderr,zf,za1,za2,za3)
-#define VPrintf4(zf,za1,za2,za3,za4) \
- fprintf(stderr,zf,za1,za2,za3,za4)
-#define VPrintf5(zf,za1,za2,za3,za4,za5) \
- fprintf(stderr,zf,za1,za2,za3,za4,za5)
-#else
-extern void bz_internal_error ( int errcode );
-#define AssertH(cond,errcode) \
- { if (!(cond)) bz_internal_error ( errcode ); }
-#define AssertD(cond,msg) /* */
-#define VPrintf0(zf) /* */
-#define VPrintf1(zf,za1) /* */
-#define VPrintf2(zf,za1,za2) /* */
-#define VPrintf3(zf,za1,za2,za3) /* */
-#define VPrintf4(zf,za1,za2,za3,za4) /* */
-#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */
-#endif
-
-
-#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
-#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp))
-
-
-/*-- Constants for the back end. --*/
-
-#define BZ_MAX_ALPHA_SIZE 258
-#define BZ_MAX_CODE_LEN 23
-
-#define BZ_RUNA 0
-#define BZ_RUNB 1
-
-#define BZ_N_GROUPS 6
-#define BZ_G_SIZE 50
-#define BZ_N_ITERS 4
-
-#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
-
-
-
-/*-- Stuff for randomising repetitive blocks. --*/
-
-extern Int32 BZ2_rNums[512];
-
-#define BZ_RAND_DECLS \
- Int32 rNToGo; \
- Int32 rTPos \
-
-#define BZ_RAND_INIT_MASK \
- s->rNToGo = 0; \
- s->rTPos = 0 \
-
-#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
-
-#define BZ_RAND_UPD_MASK \
- if (s->rNToGo == 0) { \
- s->rNToGo = BZ2_rNums[s->rTPos]; \
- s->rTPos++; \
- if (s->rTPos == 512) s->rTPos = 0; \
- } \
- s->rNToGo--;
-
-
-
-/*-- Stuff for doing CRCs. --*/
-
-extern UInt32 BZ2_crc32Table[256];
-
-#define BZ_INITIALISE_CRC(crcVar) \
-{ \
- crcVar = 0xffffffffL; \
-}
-
-#define BZ_FINALISE_CRC(crcVar) \
-{ \
- crcVar = ~(crcVar); \
-}
-
-#define BZ_UPDATE_CRC(crcVar,cha) \
-{ \
- crcVar = (crcVar << 8) ^ \
- BZ2_crc32Table[(crcVar >> 24) ^ \
- ((UChar)cha)]; \
-}
-
-
-
-/*-- States and modes for compression. --*/
-
-#define BZ_M_IDLE 1
-#define BZ_M_RUNNING 2
-#define BZ_M_FLUSHING 3
-#define BZ_M_FINISHING 4
-
-#define BZ_S_OUTPUT 1
-#define BZ_S_INPUT 2
-
-#define BZ_N_RADIX 2
-#define BZ_N_QSORT 12
-#define BZ_N_SHELL 18
-#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
-
-
-
-
-/*-- Structure holding all the compression-side stuff. --*/
-
-typedef
- struct {
- /* pointer back to the struct bz_stream */
- bz_stream* strm;
-
- /* mode this stream is in, and whether inputting */
- /* or outputting data */
- Int32 mode;
- Int32 state;
-
- /* remembers avail_in when flush/finish requested */
- UInt32 avail_in_expect;
-
- /* for doing the block sorting */
- UInt32* arr1;
- UInt32* arr2;
- UInt32* ftab;
- Int32 origPtr;
-
- /* aliases for arr1 and arr2 */
- UInt32* ptr;
- UChar* block;
- UInt16* mtfv;
- UChar* zbits;
-
- /* for deciding when to use the fallback sorting algorithm */
- Int32 workFactor;
-
- /* run-length-encoding of the input */
- UInt32 state_in_ch;
- Int32 state_in_len;
- BZ_RAND_DECLS;
-
- /* input and output limits and current posns */
- Int32 nblock;
- Int32 nblockMAX;
- Int32 numZ;
- Int32 state_out_pos;
-
- /* map of bytes used in block */
- Int32 nInUse;
- Bool inUse[256];
- UChar unseqToSeq[256];
-
- /* the buffer for bit stream creation */
- UInt32 bsBuff;
- Int32 bsLive;
-
- /* block and combined CRCs */
- UInt32 blockCRC;
- UInt32 combinedCRC;
-
- /* misc administratium */
- Int32 verbosity;
- Int32 blockNo;
- Int32 blockSize100k;
-
- /* stuff for coding the MTF values */
- Int32 nMTF;
- Int32 mtfFreq [BZ_MAX_ALPHA_SIZE];
- UChar selector [BZ_MAX_SELECTORS];
- UChar selectorMtf[BZ_MAX_SELECTORS];
-
- UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- /* second dimension: only 3 needed; 4 makes index calculations faster */
- UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4];
-
- }
- EState;
-
-
-
-/*-- externs for compression. --*/
-
-extern void
-BZ2_blockSort ( EState* );
-
-extern void
-BZ2_compressBlock ( EState*, Bool );
-
-extern void
-BZ2_bsInitWrite ( EState* );
-
-extern void
-BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
-
-extern void
-BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
-
-
-
-/*-- states for decompression. --*/
-
-#define BZ_X_IDLE 1
-#define BZ_X_OUTPUT 2
-
-#define BZ_X_MAGIC_1 10
-#define BZ_X_MAGIC_2 11
-#define BZ_X_MAGIC_3 12
-#define BZ_X_MAGIC_4 13
-#define BZ_X_BLKHDR_1 14
-#define BZ_X_BLKHDR_2 15
-#define BZ_X_BLKHDR_3 16
-#define BZ_X_BLKHDR_4 17
-#define BZ_X_BLKHDR_5 18
-#define BZ_X_BLKHDR_6 19
-#define BZ_X_BCRC_1 20
-#define BZ_X_BCRC_2 21
-#define BZ_X_BCRC_3 22
-#define BZ_X_BCRC_4 23
-#define BZ_X_RANDBIT 24
-#define BZ_X_ORIGPTR_1 25
-#define BZ_X_ORIGPTR_2 26
-#define BZ_X_ORIGPTR_3 27
-#define BZ_X_MAPPING_1 28
-#define BZ_X_MAPPING_2 29
-#define BZ_X_SELECTOR_1 30
-#define BZ_X_SELECTOR_2 31
-#define BZ_X_SELECTOR_3 32
-#define BZ_X_CODING_1 33
-#define BZ_X_CODING_2 34
-#define BZ_X_CODING_3 35
-#define BZ_X_MTF_1 36
-#define BZ_X_MTF_2 37
-#define BZ_X_MTF_3 38
-#define BZ_X_MTF_4 39
-#define BZ_X_MTF_5 40
-#define BZ_X_MTF_6 41
-#define BZ_X_ENDHDR_2 42
-#define BZ_X_ENDHDR_3 43
-#define BZ_X_ENDHDR_4 44
-#define BZ_X_ENDHDR_5 45
-#define BZ_X_ENDHDR_6 46
-#define BZ_X_CCRC_1 47
-#define BZ_X_CCRC_2 48
-#define BZ_X_CCRC_3 49
-#define BZ_X_CCRC_4 50
-
-
-
-/*-- Constants for the fast MTF decoder. --*/
-
-#define MTFA_SIZE 4096
-#define MTFL_SIZE 16
-
-
-
-/*-- Structure holding all the decompression-side stuff. --*/
-
-typedef
- struct {
- /* pointer back to the struct bz_stream */
- bz_stream* strm;
-
- /* state indicator for this stream */
- Int32 state;
-
- /* for doing the final run-length decoding */
- UChar state_out_ch;
- Int32 state_out_len;
- Bool blockRandomised;
- BZ_RAND_DECLS;
-
- /* the buffer for bit stream reading */
- UInt32 bsBuff;
- Int32 bsLive;
-
- /* misc administratium */
- Int32 blockSize100k;
- Bool smallDecompress;
- Int32 currBlockNo;
- Int32 verbosity;
-
- /* for undoing the Burrows-Wheeler transform */
- Int32 origPtr;
- UInt32 tPos;
- Int32 k0;
- Int32 unzftab[256];
- Int32 nblock_used;
- Int32 cftab[257];
- Int32 cftabCopy[257];
-
- /* for undoing the Burrows-Wheeler transform (FAST) */
- UInt32 *tt;
-
- /* for undoing the Burrows-Wheeler transform (SMALL) */
- UInt16 *ll16;
- UChar *ll4;
-
- /* stored and calculated CRCs */
- UInt32 storedBlockCRC;
- UInt32 storedCombinedCRC;
- UInt32 calculatedBlockCRC;
- UInt32 calculatedCombinedCRC;
-
- /* map of bytes used in block */
- Int32 nInUse;
- Bool inUse[256];
- Bool inUse16[16];
- UChar seqToUnseq[256];
-
- /* for decoding the MTF values */
- UChar mtfa [MTFA_SIZE];
- Int32 mtfbase[256 / MTFL_SIZE];
- UChar selector [BZ_MAX_SELECTORS];
- UChar selectorMtf[BZ_MAX_SELECTORS];
- UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
-
- Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 minLens[BZ_N_GROUPS];
-
- /* save area for scalars in the main decompress code */
- Int32 save_i;
- Int32 save_j;
- Int32 save_t;
- Int32 save_alphaSize;
- Int32 save_nGroups;
- Int32 save_nSelectors;
- Int32 save_EOB;
- Int32 save_groupNo;
- Int32 save_groupPos;
- Int32 save_nextSym;
- Int32 save_nblockMAX;
- Int32 save_nblock;
- Int32 save_es;
- Int32 save_N;
- Int32 save_curr;
- Int32 save_zt;
- Int32 save_zn;
- Int32 save_zvec;
- Int32 save_zj;
- Int32 save_gSel;
- Int32 save_gMinlen;
- Int32* save_gLimit;
- Int32* save_gBase;
- Int32* save_gPerm;
-
- }
- DState;
-
-
-
-/*-- Macros for decompression. --*/
-
-#define BZ_GET_FAST(cccc) \
- s->tPos = s->tt[s->tPos]; \
- cccc = (UChar)(s->tPos & 0xff); \
- s->tPos >>= 8;
-
-#define BZ_GET_FAST_C(cccc) \
- c_tPos = c_tt[c_tPos]; \
- cccc = (UChar)(c_tPos & 0xff); \
- c_tPos >>= 8;
-
-#define SET_LL4(i,n) \
- { if (((i) & 0x1) == 0) \
- s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \
- s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \
- }
-
-#define GET_LL4(i) \
- ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
-
-#define SET_LL(i,n) \
- { s->ll16[i] = (UInt16)(n & 0x0000ffff); \
- SET_LL4(i, n >> 16); \
- }
-
-#define GET_LL(i) \
- (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
-
-#define BZ_GET_SMALL(cccc) \
- cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
- s->tPos = GET_LL(s->tPos);
-
-
-/*-- externs for decompression. --*/
-
-extern Int32
-BZ2_indexIntoF ( Int32, Int32* );
-
-extern Int32
-BZ2_decompress ( DState* );
-
-extern void
-BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
- Int32, Int32, Int32 );
-
-
-#endif
-
-
-/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
-
-#ifdef BZ_NO_STDIO
-#ifndef NULL
-#define NULL 0
-#endif
-#endif
-
-
-/*-------------------------------------------------------------*/
-/*--- end bzlib_private.h ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/compress.c b/mdk-stage1/bzlib/compress.c
deleted file mode 100644
index 58d5abe7c..000000000
--- a/mdk-stage1/bzlib/compress.c
+++ /dev/null
@@ -1,720 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Compression machinery (not incl block sorting) ---*/
-/*--- compress.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-/*--
- CHANGES
- ~~~~~~~
- 0.9.0 -- original version.
-
- 0.9.0a/b -- no changes in this file.
-
- 0.9.0c
- * changed setting of nGroups in sendMTFValues() so as to
- do a bit better on small files
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-
-#include "bzlib_private.h"
-
-
-/*---------------------------------------------------*/
-/*--- Bit stream I/O ---*/
-/*---------------------------------------------------*/
-
-/*---------------------------------------------------*/
-void BZ2_bsInitWrite ( EState* s )
-{
- s->bsLive = 0;
- s->bsBuff = 0;
-}
-
-
-/*---------------------------------------------------*/
-static
-void bsFinishWrite ( EState* s )
-{
- while (s->bsLive > 0) {
- s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
- s->numZ++;
- s->bsBuff <<= 8;
- s->bsLive -= 8;
- }
-}
-
-
-/*---------------------------------------------------*/
-#define bsNEEDW(nz) \
-{ \
- while (s->bsLive >= 8) { \
- s->zbits[s->numZ] \
- = (UChar)(s->bsBuff >> 24); \
- s->numZ++; \
- s->bsBuff <<= 8; \
- s->bsLive -= 8; \
- } \
-}
-
-
-/*---------------------------------------------------*/
-static
-__inline__
-void bsW ( EState* s, Int32 n, UInt32 v )
-{
- bsNEEDW ( n );
- s->bsBuff |= (v << (32 - s->bsLive - n));
- s->bsLive += n;
-}
-
-
-/*---------------------------------------------------*/
-static
-void bsPutUInt32 ( EState* s, UInt32 u )
-{
- bsW ( s, 8, (u >> 24) & 0xffL );
- bsW ( s, 8, (u >> 16) & 0xffL );
- bsW ( s, 8, (u >> 8) & 0xffL );
- bsW ( s, 8, u & 0xffL );
-}
-
-
-/*---------------------------------------------------*/
-static
-void bsPutUChar ( EState* s, UChar c )
-{
- bsW( s, 8, (UInt32)c );
-}
-
-
-/*---------------------------------------------------*/
-/*--- The back end proper ---*/
-/*---------------------------------------------------*/
-
-/*---------------------------------------------------*/
-static
-void makeMaps_e ( EState* s )
-{
- Int32 i;
- s->nInUse = 0;
- for (i = 0; i < 256; i++)
- if (s->inUse[i]) {
- s->unseqToSeq[i] = s->nInUse;
- s->nInUse++;
- }
-}
-
-
-/*---------------------------------------------------*/
-static
-void generateMTFValues ( EState* s )
-{
- UChar yy[256];
- Int32 i, j;
- Int32 zPend;
- Int32 wr;
- Int32 EOB;
-
- /*
- After sorting (eg, here),
- s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
- and
- ((UChar*)s->arr2) [ 0 .. s->nblock-1 ]
- holds the original block data.
-
- The first thing to do is generate the MTF values,
- and put them in
- ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
- Because there are strictly fewer or equal MTF values
- than block values, ptr values in this area are overwritten
- with MTF values only when they are no longer needed.
-
- The final compressed bitstream is generated into the
- area starting at
- (UChar*) (&((UChar*)s->arr2)[s->nblock])
-
- These storage aliases are set up in bzCompressInit(),
- except for the last one, which is arranged in
- compressBlock().
- */
- UInt32* ptr = s->ptr;
- UChar* block = s->block;
- UInt16* mtfv = s->mtfv;
-
- makeMaps_e ( s );
- EOB = s->nInUse+1;
-
- for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
-
- wr = 0;
- zPend = 0;
- for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
-
- for (i = 0; i < s->nblock; i++) {
- UChar ll_i;
- AssertD ( wr <= i, "generateMTFValues(1)" );
- j = ptr[i]-1; if (j < 0) j += s->nblock;
- ll_i = s->unseqToSeq[block[j]];
- AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
-
- if (yy[0] == ll_i) {
- zPend++;
- } else {
-
- if (zPend > 0) {
- zPend--;
- while (True) {
- if (zPend & 1) {
- mtfv[wr] = BZ_RUNB; wr++;
- s->mtfFreq[BZ_RUNB]++;
- } else {
- mtfv[wr] = BZ_RUNA; wr++;
- s->mtfFreq[BZ_RUNA]++;
- }
- if (zPend < 2) break;
- zPend = (zPend - 2) / 2;
- };
- zPend = 0;
- }
- {
- register UChar rtmp;
- register UChar* ryy_j;
- register UChar rll_i;
- rtmp = yy[1];
- yy[1] = yy[0];
- ryy_j = &(yy[1]);
- rll_i = ll_i;
- while ( rll_i != rtmp ) {
- register UChar rtmp2;
- ryy_j++;
- rtmp2 = rtmp;
- rtmp = *ryy_j;
- *ryy_j = rtmp2;
- };
- yy[0] = rtmp;
- j = ryy_j - &(yy[0]);
- mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
- }
-
- }
- }
-
- if (zPend > 0) {
- zPend--;
- while (True) {
- if (zPend & 1) {
- mtfv[wr] = BZ_RUNB; wr++;
- s->mtfFreq[BZ_RUNB]++;
- } else {
- mtfv[wr] = BZ_RUNA; wr++;
- s->mtfFreq[BZ_RUNA]++;
- }
- if (zPend < 2) break;
- zPend = (zPend - 2) / 2;
- };
- zPend = 0;
- }
-
- mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
-
- s->nMTF = wr;
-}
-
-
-/*---------------------------------------------------*/
-#define BZ_LESSER_ICOST 0
-#define BZ_GREATER_ICOST 15
-
-static
-void sendMTFValues ( EState* s )
-{
- Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
- Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
- Int32 nGroups, nBytes;
-
- /*--
- UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- is a global since the decoder also needs it.
-
- Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
- are also globals only used in this proc.
- Made global to keep stack frame size small.
- --*/
-
-
- UInt16 cost[BZ_N_GROUPS];
- Int32 fave[BZ_N_GROUPS];
-
- UInt16* mtfv = s->mtfv;
-
- if (s->verbosity >= 3)
- VPrintf3( " %d in block, %d after MTF & 1-2 coding, "
- "%d+2 syms in use\n",
- s->nblock, s->nMTF, s->nInUse );
-
- alphaSize = s->nInUse+2;
- for (t = 0; t < BZ_N_GROUPS; t++)
- for (v = 0; v < alphaSize; v++)
- s->len[t][v] = BZ_GREATER_ICOST;
-
- /*--- Decide how many coding tables to use ---*/
- AssertH ( s->nMTF > 0, 3001 );
- if (s->nMTF < 200) nGroups = 2; else
- if (s->nMTF < 600) nGroups = 3; else
- if (s->nMTF < 1200) nGroups = 4; else
- if (s->nMTF < 2400) nGroups = 5; else
- nGroups = 6;
-
- /*--- Generate an initial set of coding tables ---*/
- {
- Int32 nPart, remF, tFreq, aFreq;
-
- nPart = nGroups;
- remF = s->nMTF;
- gs = 0;
- while (nPart > 0) {
- tFreq = remF / nPart;
- ge = gs-1;
- aFreq = 0;
- while (aFreq < tFreq && ge < alphaSize-1) {
- ge++;
- aFreq += s->mtfFreq[ge];
- }
-
- if (ge > gs
- && nPart != nGroups && nPart != 1
- && ((nGroups-nPart) % 2 == 1)) {
- aFreq -= s->mtfFreq[ge];
- ge--;
- }
-
- if (s->verbosity >= 3)
- VPrintf5( " initial group %d, [%d .. %d], "
- "has %d syms (%4.1f%%)\n",
- nPart, gs, ge, aFreq,
- (100.0 * (float)aFreq) / (float)(s->nMTF) );
-
- for (v = 0; v < alphaSize; v++)
- if (v >= gs && v <= ge)
- s->len[nPart-1][v] = BZ_LESSER_ICOST; else
- s->len[nPart-1][v] = BZ_GREATER_ICOST;
-
- nPart--;
- gs = ge+1;
- remF -= aFreq;
- }
- }
-
- /*---
- Iterate up to BZ_N_ITERS times to improve the tables.
- ---*/
- for (iter = 0; iter < BZ_N_ITERS; iter++) {
-
- for (t = 0; t < nGroups; t++) fave[t] = 0;
-
- for (t = 0; t < nGroups; t++)
- for (v = 0; v < alphaSize; v++)
- s->rfreq[t][v] = 0;
-
- /*---
- Set up an auxiliary length table which is used to fast-track
- the common case (nGroups == 6).
- ---*/
- if (nGroups == 6) {
- for (v = 0; v < alphaSize; v++) {
- s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
- s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
- s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
- }
- }
-
- nSelectors = 0;
- totc = 0;
- gs = 0;
- while (True) {
-
- /*--- Set group start & end marks. --*/
- if (gs >= s->nMTF) break;
- ge = gs + BZ_G_SIZE - 1;
- if (ge >= s->nMTF) ge = s->nMTF-1;
-
- /*--
- Calculate the cost of this group as coded
- by each of the coding tables.
- --*/
- for (t = 0; t < nGroups; t++) cost[t] = 0;
-
- if (nGroups == 6 && 50 == ge-gs+1) {
- /*--- fast track the common case ---*/
- register UInt32 cost01, cost23, cost45;
- register UInt16 icv;
- cost01 = cost23 = cost45 = 0;
-
-# define BZ_ITER(nn) \
- icv = mtfv[gs+(nn)]; \
- cost01 += s->len_pack[icv][0]; \
- cost23 += s->len_pack[icv][1]; \
- cost45 += s->len_pack[icv][2]; \
-
- BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4);
- BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9);
- BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
- BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
- BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
- BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
- BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
- BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
- BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
- BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
-
-# undef BZ_ITER
-
- cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
- cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
- cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
-
- } else {
- /*--- slow version which correctly handles all situations ---*/
- for (i = gs; i <= ge; i++) {
- UInt16 icv = mtfv[i];
- for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
- }
- }
-
- /*--
- Find the coding table which is best for this group,
- and record its identity in the selector table.
- --*/
- bc = 999999999; bt = -1;
- for (t = 0; t < nGroups; t++)
- if (cost[t] < bc) { bc = cost[t]; bt = t; };
- totc += bc;
- fave[bt]++;
- s->selector[nSelectors] = bt;
- nSelectors++;
-
- /*--
- Increment the symbol frequencies for the selected table.
- --*/
- if (nGroups == 6 && 50 == ge-gs+1) {
- /*--- fast track the common case ---*/
-
-# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
-
- BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4);
- BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9);
- BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
- BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
- BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
- BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
- BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
- BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
- BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
- BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
-
-# undef BZ_ITUR
-
- } else {
- /*--- slow version which correctly handles all situations ---*/
- for (i = gs; i <= ge; i++)
- s->rfreq[bt][ mtfv[i] ]++;
- }
-
- gs = ge+1;
- }
- if (s->verbosity >= 3) {
- VPrintf2 ( " pass %d: size is %d, grp uses are ",
- iter+1, totc/8 );
- for (t = 0; t < nGroups; t++)
- VPrintf1 ( "%d ", fave[t] );
- VPrintf0 ( "\n" );
- }
-
- /*--
- Recompute the tables based on the accumulated frequencies.
- --*/
- for (t = 0; t < nGroups; t++)
- BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]),
- alphaSize, 20 );
- }
-
-
- AssertH( nGroups < 8, 3002 );
- AssertH( nSelectors < 32768 &&
- nSelectors <= (2 + (900000 / BZ_G_SIZE)),
- 3003 );
-
-
- /*--- Compute MTF values for the selectors. ---*/
- {
- UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
- for (i = 0; i < nGroups; i++) pos[i] = i;
- for (i = 0; i < nSelectors; i++) {
- ll_i = s->selector[i];
- j = 0;
- tmp = pos[j];
- while ( ll_i != tmp ) {
- j++;
- tmp2 = tmp;
- tmp = pos[j];
- pos[j] = tmp2;
- };
- pos[0] = tmp;
- s->selectorMtf[i] = j;
- }
- };
-
- /*--- Assign actual codes for the tables. --*/
- for (t = 0; t < nGroups; t++) {
- minLen = 32;
- maxLen = 0;
- for (i = 0; i < alphaSize; i++) {
- if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
- if (s->len[t][i] < minLen) minLen = s->len[t][i];
- }
- AssertH ( !(maxLen > 20), 3004 );
- AssertH ( !(minLen < 1), 3005 );
- BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]),
- minLen, maxLen, alphaSize );
- }
-
- /*--- Transmit the mapping table. ---*/
- {
- Bool inUse16[16];
- for (i = 0; i < 16; i++) {
- inUse16[i] = False;
- for (j = 0; j < 16; j++)
- if (s->inUse[i * 16 + j]) inUse16[i] = True;
- }
-
- nBytes = s->numZ;
- for (i = 0; i < 16; i++)
- if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
-
- for (i = 0; i < 16; i++)
- if (inUse16[i])
- for (j = 0; j < 16; j++) {
- if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
- }
-
- if (s->verbosity >= 3)
- VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes );
- }
-
- /*--- Now the selectors. ---*/
- nBytes = s->numZ;
- bsW ( s, 3, nGroups );
- bsW ( s, 15, nSelectors );
- for (i = 0; i < nSelectors; i++) {
- for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
- bsW(s,1,0);
- }
- if (s->verbosity >= 3)
- VPrintf1( "selectors %d, ", s->numZ-nBytes );
-
- /*--- Now the coding tables. ---*/
- nBytes = s->numZ;
-
- for (t = 0; t < nGroups; t++) {
- Int32 curr = s->len[t][0];
- bsW ( s, 5, curr );
- for (i = 0; i < alphaSize; i++) {
- while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
- while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
- bsW ( s, 1, 0 );
- }
- }
-
- if (s->verbosity >= 3)
- VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
-
- /*--- And finally, the block data proper ---*/
- nBytes = s->numZ;
- selCtr = 0;
- gs = 0;
- while (True) {
- if (gs >= s->nMTF) break;
- ge = gs + BZ_G_SIZE - 1;
- if (ge >= s->nMTF) ge = s->nMTF-1;
- AssertH ( s->selector[selCtr] < nGroups, 3006 );
-
- if (nGroups == 6 && 50 == ge-gs+1) {
- /*--- fast track the common case ---*/
- UInt16 mtfv_i;
- UChar* s_len_sel_selCtr
- = &(s->len[s->selector[selCtr]][0]);
- Int32* s_code_sel_selCtr
- = &(s->code[s->selector[selCtr]][0]);
-
-# define BZ_ITAH(nn) \
- mtfv_i = mtfv[gs+(nn)]; \
- bsW ( s, \
- s_len_sel_selCtr[mtfv_i], \
- s_code_sel_selCtr[mtfv_i] )
-
- BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4);
- BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9);
- BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
- BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
- BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
- BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
- BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
- BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
- BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
- BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
-
-# undef BZ_ITAH
-
- } else {
- /*--- slow version which correctly handles all situations ---*/
- for (i = gs; i <= ge; i++) {
- bsW ( s,
- s->len [s->selector[selCtr]] [mtfv[i]],
- s->code [s->selector[selCtr]] [mtfv[i]] );
- }
- }
-
-
- gs = ge+1;
- selCtr++;
- }
- AssertH( selCtr == nSelectors, 3007 );
-
- if (s->verbosity >= 3)
- VPrintf1( "codes %d\n", s->numZ-nBytes );
-}
-
-
-/*---------------------------------------------------*/
-void BZ2_compressBlock ( EState* s, Bool is_last_block )
-{
- if (s->nblock > 0) {
-
- BZ_FINALISE_CRC ( s->blockCRC );
- s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
- s->combinedCRC ^= s->blockCRC;
- if (s->blockNo > 1) s->numZ = 0;
-
- if (s->verbosity >= 2)
- VPrintf4( " block %d: crc = 0x%8x, "
- "combined CRC = 0x%8x, size = %d\n",
- s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
-
- BZ2_blockSort ( s );
- }
-
- s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
-
- /*-- If this is the first block, create the stream header. --*/
- if (s->blockNo == 1) {
- BZ2_bsInitWrite ( s );
- bsPutUChar ( s, 'B' );
- bsPutUChar ( s, 'Z' );
- bsPutUChar ( s, 'h' );
- bsPutUChar ( s, (UChar)('0' + s->blockSize100k) );
- }
-
- if (s->nblock > 0) {
-
- bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
- bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
- bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
-
- /*-- Now the block's CRC, so it is in a known place. --*/
- bsPutUInt32 ( s, s->blockCRC );
-
- /*--
- Now a single bit indicating (non-)randomisation.
- As of version 0.9.5, we use a better sorting algorithm
- which makes randomisation unnecessary. So always set
- the randomised bit to 'no'. Of course, the decoder
- still needs to be able to handle randomised blocks
- so as to maintain backwards compatibility with
- older versions of bzip2.
- --*/
- bsW(s,1,0);
-
- bsW ( s, 24, s->origPtr );
- generateMTFValues ( s );
- sendMTFValues ( s );
- }
-
-
- /*-- If this is the last block, add the stream trailer. --*/
- if (is_last_block) {
-
- bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
- bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
- bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
- bsPutUInt32 ( s, s->combinedCRC );
- if (s->verbosity >= 2)
- VPrintf1( " final combined CRC = 0x%x\n ", s->combinedCRC );
- bsFinishWrite ( s );
- }
-}
-
-
-/*-------------------------------------------------------------*/
-/*--- end compress.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/crctable.c b/mdk-stage1/bzlib/crctable.c
deleted file mode 100644
index c0ea3f769..000000000
--- a/mdk-stage1/bzlib/crctable.c
+++ /dev/null
@@ -1,148 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Table for doing CRCs ---*/
-/*--- crctable.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "bzlib_private.h"
-
-/*--
- I think this is an implementation of the AUTODIN-II,
- Ethernet & FDDI 32-bit CRC standard. Vaguely derived
- from code by Rob Warnock, in Section 51 of the
- comp.compression FAQ.
---*/
-
-UInt32 BZ2_crc32Table[256] = {
-
- /*-- Ugly, innit? --*/
-
- 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
- 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
- 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
- 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
- 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
- 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
- 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
- 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
- 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
- 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
- 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
- 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
- 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
- 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
- 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
- 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
- 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
- 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
- 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
- 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
- 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
- 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
- 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
- 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
- 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
- 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
- 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
- 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
- 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
- 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
- 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
- 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
- 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
- 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
- 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
- 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
- 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
- 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
- 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
- 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
- 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
- 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
- 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
- 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
- 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
- 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
- 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
- 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
- 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
- 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
- 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
- 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
- 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
- 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
- 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
- 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
- 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
- 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
- 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
- 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
- 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
- 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
- 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
- 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
-};
-
-
-/*-------------------------------------------------------------*/
-/*--- end crctable.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/decompress.c b/mdk-stage1/bzlib/decompress.c
deleted file mode 100644
index 65cf75d8f..000000000
--- a/mdk-stage1/bzlib/decompress.c
+++ /dev/null
@@ -1,664 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Decompression machinery ---*/
-/*--- decompress.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "bzlib_private.h"
-
-
-/*---------------------------------------------------*/
-static
-void makeMaps_d ( DState* s )
-{
- Int32 i;
- s->nInUse = 0;
- for (i = 0; i < 256; i++)
- if (s->inUse[i]) {
- s->seqToUnseq[s->nInUse] = i;
- s->nInUse++;
- }
-}
-
-
-/*---------------------------------------------------*/
-#define RETURN(rrr) \
- { retVal = rrr; goto save_state_and_return; };
-
-#define GET_BITS(lll,vvv,nnn) \
- case lll: s->state = lll; \
- while (True) { \
- if (s->bsLive >= nnn) { \
- UInt32 v; \
- v = (s->bsBuff >> \
- (s->bsLive-nnn)) & ((1 << nnn)-1); \
- s->bsLive -= nnn; \
- vvv = v; \
- break; \
- } \
- if (s->strm->avail_in == 0) RETURN(BZ_OK); \
- s->bsBuff \
- = (s->bsBuff << 8) | \
- ((UInt32) \
- (*((UChar*)(s->strm->next_in)))); \
- s->bsLive += 8; \
- s->strm->next_in++; \
- s->strm->avail_in--; \
- s->strm->total_in_lo32++; \
- if (s->strm->total_in_lo32 == 0) \
- s->strm->total_in_hi32++; \
- }
-
-#define GET_UCHAR(lll,uuu) \
- GET_BITS(lll,uuu,8)
-
-#define GET_BIT(lll,uuu) \
- GET_BITS(lll,uuu,1)
-
-/*---------------------------------------------------*/
-#define GET_MTF_VAL(label1,label2,lval) \
-{ \
- if (groupPos == 0) { \
- groupNo++; \
- if (groupNo >= nSelectors) \
- RETURN(BZ_DATA_ERROR); \
- groupPos = BZ_G_SIZE; \
- gSel = s->selector[groupNo]; \
- gMinlen = s->minLens[gSel]; \
- gLimit = &(s->limit[gSel][0]); \
- gPerm = &(s->perm[gSel][0]); \
- gBase = &(s->base[gSel][0]); \
- } \
- groupPos--; \
- zn = gMinlen; \
- GET_BITS(label1, zvec, zn); \
- while (1) { \
- if (zn > 20 /* the longest code */) \
- RETURN(BZ_DATA_ERROR); \
- if (zvec <= gLimit[zn]) break; \
- zn++; \
- GET_BIT(label2, zj); \
- zvec = (zvec << 1) | zj; \
- }; \
- if (zvec - gBase[zn] < 0 \
- || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \
- RETURN(BZ_DATA_ERROR); \
- lval = gPerm[zvec - gBase[zn]]; \
-}
-
-
-/*---------------------------------------------------*/
-Int32 BZ2_decompress ( DState* s )
-{
- UChar uc;
- Int32 retVal;
- Int32 minLen, maxLen;
- bz_stream* strm = s->strm;
-
- /* stuff that needs to be saved/restored */
- Int32 i;
- Int32 j;
- Int32 t;
- Int32 alphaSize;
- Int32 nGroups;
- Int32 nSelectors;
- Int32 EOB;
- Int32 groupNo;
- Int32 groupPos;
- Int32 nextSym;
- Int32 nblockMAX;
- Int32 nblock;
- Int32 es;
- Int32 N;
- Int32 curr;
- Int32 zt;
- Int32 zn;
- Int32 zvec;
- Int32 zj;
- Int32 gSel;
- Int32 gMinlen;
- Int32* gLimit;
- Int32* gBase;
- Int32* gPerm;
-
- if (s->state == BZ_X_MAGIC_1) {
- /*initialise the save area*/
- s->save_i = 0;
- s->save_j = 0;
- s->save_t = 0;
- s->save_alphaSize = 0;
- s->save_nGroups = 0;
- s->save_nSelectors = 0;
- s->save_EOB = 0;
- s->save_groupNo = 0;
- s->save_groupPos = 0;
- s->save_nextSym = 0;
- s->save_nblockMAX = 0;
- s->save_nblock = 0;
- s->save_es = 0;
- s->save_N = 0;
- s->save_curr = 0;
- s->save_zt = 0;
- s->save_zn = 0;
- s->save_zvec = 0;
- s->save_zj = 0;
- s->save_gSel = 0;
- s->save_gMinlen = 0;
- s->save_gLimit = NULL;
- s->save_gBase = NULL;
- s->save_gPerm = NULL;
- }
-
- /*restore from the save area*/
- i = s->save_i;
- j = s->save_j;
- t = s->save_t;
- alphaSize = s->save_alphaSize;
- nGroups = s->save_nGroups;
- nSelectors = s->save_nSelectors;
- EOB = s->save_EOB;
- groupNo = s->save_groupNo;
- groupPos = s->save_groupPos;
- nextSym = s->save_nextSym;
- nblockMAX = s->save_nblockMAX;
- nblock = s->save_nblock;
- es = s->save_es;
- N = s->save_N;
- curr = s->save_curr;
- zt = s->save_zt;
- zn = s->save_zn;
- zvec = s->save_zvec;
- zj = s->save_zj;
- gSel = s->save_gSel;
- gMinlen = s->save_gMinlen;
- gLimit = s->save_gLimit;
- gBase = s->save_gBase;
- gPerm = s->save_gPerm;
-
- retVal = BZ_OK;
-
- switch (s->state) {
-
- GET_UCHAR(BZ_X_MAGIC_1, uc);
- if (uc != 'B') RETURN(BZ_DATA_ERROR_MAGIC);
-
- GET_UCHAR(BZ_X_MAGIC_2, uc);
- if (uc != 'Z') RETURN(BZ_DATA_ERROR_MAGIC);
-
- GET_UCHAR(BZ_X_MAGIC_3, uc)
- if (uc != 'h') RETURN(BZ_DATA_ERROR_MAGIC);
-
- GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
- if (s->blockSize100k < '1' ||
- s->blockSize100k > '9') RETURN(BZ_DATA_ERROR_MAGIC);
- s->blockSize100k -= '0';
-
- if (s->smallDecompress) {
- s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
- s->ll4 = BZALLOC(
- ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
- );
- if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
- } else {
- s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
- if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
- }
-
- GET_UCHAR(BZ_X_BLKHDR_1, uc);
-
- if (uc == 0x17) goto endhdr_2;
- if (uc != 0x31) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_BLKHDR_2, uc);
- if (uc != 0x41) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_BLKHDR_3, uc);
- if (uc != 0x59) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_BLKHDR_4, uc);
- if (uc != 0x26) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_BLKHDR_5, uc);
- if (uc != 0x53) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_BLKHDR_6, uc);
- if (uc != 0x59) RETURN(BZ_DATA_ERROR);
-
- s->currBlockNo++;
- if (s->verbosity >= 2)
- VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo );
-
- s->storedBlockCRC = 0;
- GET_UCHAR(BZ_X_BCRC_1, uc);
- s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_BCRC_2, uc);
- s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_BCRC_3, uc);
- s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_BCRC_4, uc);
- s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
-
- GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
-
- s->origPtr = 0;
- GET_UCHAR(BZ_X_ORIGPTR_1, uc);
- s->origPtr = (s->origPtr << 8) | ((Int32)uc);
- GET_UCHAR(BZ_X_ORIGPTR_2, uc);
- s->origPtr = (s->origPtr << 8) | ((Int32)uc);
- GET_UCHAR(BZ_X_ORIGPTR_3, uc);
- s->origPtr = (s->origPtr << 8) | ((Int32)uc);
-
- if (s->origPtr < 0)
- RETURN(BZ_DATA_ERROR);
- if (s->origPtr > 10 + 100000*s->blockSize100k)
- RETURN(BZ_DATA_ERROR);
-
- /*--- Receive the mapping table ---*/
- for (i = 0; i < 16; i++) {
- GET_BIT(BZ_X_MAPPING_1, uc);
- if (uc == 1)
- s->inUse16[i] = True; else
- s->inUse16[i] = False;
- }
-
- for (i = 0; i < 256; i++) s->inUse[i] = False;
-
- for (i = 0; i < 16; i++)
- if (s->inUse16[i])
- for (j = 0; j < 16; j++) {
- GET_BIT(BZ_X_MAPPING_2, uc);
- if (uc == 1) s->inUse[i * 16 + j] = True;
- }
- makeMaps_d ( s );
- if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
- alphaSize = s->nInUse+2;
-
- /*--- Now the selectors ---*/
- GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
- if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
- GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
- if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
- for (i = 0; i < nSelectors; i++) {
- j = 0;
- while (True) {
- GET_BIT(BZ_X_SELECTOR_3, uc);
- if (uc == 0) break;
- j++;
- if (j >= nGroups) RETURN(BZ_DATA_ERROR);
- }
- s->selectorMtf[i] = j;
- }
-
- /*--- Undo the MTF values for the selectors. ---*/
- {
- UChar pos[BZ_N_GROUPS], tmp, v;
- for (v = 0; v < nGroups; v++) pos[v] = v;
-
- for (i = 0; i < nSelectors; i++) {
- v = s->selectorMtf[i];
- tmp = pos[v];
- while (v > 0) { pos[v] = pos[v-1]; v--; }
- pos[0] = tmp;
- s->selector[i] = tmp;
- }
- }
-
- /*--- Now the coding tables ---*/
- for (t = 0; t < nGroups; t++) {
- GET_BITS(BZ_X_CODING_1, curr, 5);
- for (i = 0; i < alphaSize; i++) {
- while (True) {
- if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
- GET_BIT(BZ_X_CODING_2, uc);
- if (uc == 0) break;
- GET_BIT(BZ_X_CODING_3, uc);
- if (uc == 0) curr++; else curr--;
- }
- s->len[t][i] = curr;
- }
- }
-
- /*--- Create the Huffman decoding tables ---*/
- for (t = 0; t < nGroups; t++) {
- minLen = 32;
- maxLen = 0;
- for (i = 0; i < alphaSize; i++) {
- if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
- if (s->len[t][i] < minLen) minLen = s->len[t][i];
- }
- BZ2_hbCreateDecodeTables (
- &(s->limit[t][0]),
- &(s->base[t][0]),
- &(s->perm[t][0]),
- &(s->len[t][0]),
- minLen, maxLen, alphaSize
- );
- s->minLens[t] = minLen;
- }
-
- /*--- Now the MTF values ---*/
-
- EOB = s->nInUse+1;
- nblockMAX = 100000 * s->blockSize100k;
- groupNo = -1;
- groupPos = 0;
-
- for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
-
- /*-- MTF init --*/
- {
- Int32 ii, jj, kk;
- kk = MTFA_SIZE-1;
- for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
- for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
- s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
- kk--;
- }
- s->mtfbase[ii] = kk + 1;
- }
- }
- /*-- end MTF init --*/
-
- nblock = 0;
- GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
-
- while (True) {
-
- if (nextSym == EOB) break;
-
- if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
-
- es = -1;
- N = 1;
- do {
- if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
- if (nextSym == BZ_RUNB) es = es + (1+1) * N;
- N = N * 2;
- GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
- }
- while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
-
- es++;
- uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
- s->unzftab[uc] += es;
-
- if (s->smallDecompress)
- while (es > 0) {
- if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
- s->ll16[nblock] = (UInt16)uc;
- nblock++;
- es--;
- }
- else
- while (es > 0) {
- if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
- s->tt[nblock] = (UInt32)uc;
- nblock++;
- es--;
- };
-
- continue;
-
- } else {
-
- if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
-
- /*-- uc = MTF ( nextSym-1 ) --*/
- {
- Int32 ii, jj, kk, pp, lno, off;
- UInt32 nn;
- nn = (UInt32)(nextSym - 1);
-
- if (nn < MTFL_SIZE) {
- /* avoid general-case expense */
- pp = s->mtfbase[0];
- uc = s->mtfa[pp+nn];
- while (nn > 3) {
- Int32 z = pp+nn;
- s->mtfa[(z) ] = s->mtfa[(z)-1];
- s->mtfa[(z)-1] = s->mtfa[(z)-2];
- s->mtfa[(z)-2] = s->mtfa[(z)-3];
- s->mtfa[(z)-3] = s->mtfa[(z)-4];
- nn -= 4;
- }
- while (nn > 0) {
- s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--;
- };
- s->mtfa[pp] = uc;
- } else {
- /* general case */
- lno = nn / MTFL_SIZE;
- off = nn % MTFL_SIZE;
- pp = s->mtfbase[lno] + off;
- uc = s->mtfa[pp];
- while (pp > s->mtfbase[lno]) {
- s->mtfa[pp] = s->mtfa[pp-1]; pp--;
- };
- s->mtfbase[lno]++;
- while (lno > 0) {
- s->mtfbase[lno]--;
- s->mtfa[s->mtfbase[lno]]
- = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
- lno--;
- }
- s->mtfbase[0]--;
- s->mtfa[s->mtfbase[0]] = uc;
- if (s->mtfbase[0] == 0) {
- kk = MTFA_SIZE-1;
- for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
- for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
- s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
- kk--;
- }
- s->mtfbase[ii] = kk + 1;
- }
- }
- }
- }
- /*-- end uc = MTF ( nextSym-1 ) --*/
-
- s->unzftab[s->seqToUnseq[uc]]++;
- if (s->smallDecompress)
- s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
- s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]);
- nblock++;
-
- GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
- continue;
- }
- }
-
- /* Now we know what nblock is, we can do a better sanity
- check on s->origPtr.
- */
- if (s->origPtr < 0 || s->origPtr >= nblock)
- RETURN(BZ_DATA_ERROR);
-
- s->state_out_len = 0;
- s->state_out_ch = 0;
- BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
- s->state = BZ_X_OUTPUT;
- if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
-
- /*-- Set up cftab to facilitate generation of T^(-1) --*/
- s->cftab[0] = 0;
- for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
- for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
-
- if (s->smallDecompress) {
-
- /*-- Make a copy of cftab, used in generation of T --*/
- for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
-
- /*-- compute the T vector --*/
- for (i = 0; i < nblock; i++) {
- uc = (UChar)(s->ll16[i]);
- SET_LL(i, s->cftabCopy[uc]);
- s->cftabCopy[uc]++;
- }
-
- /*-- Compute T^(-1) by pointer reversal on T --*/
- i = s->origPtr;
- j = GET_LL(i);
- do {
- Int32 tmp = GET_LL(j);
- SET_LL(j, i);
- i = j;
- j = tmp;
- }
- while (i != s->origPtr);
-
- s->tPos = s->origPtr;
- s->nblock_used = 0;
- if (s->blockRandomised) {
- BZ_RAND_INIT_MASK;
- BZ_GET_SMALL(s->k0); s->nblock_used++;
- BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
- } else {
- BZ_GET_SMALL(s->k0); s->nblock_used++;
- }
-
- } else {
-
- /*-- compute the T^(-1) vector --*/
- for (i = 0; i < nblock; i++) {
- uc = (UChar)(s->tt[i] & 0xff);
- s->tt[s->cftab[uc]] |= (i << 8);
- s->cftab[uc]++;
- }
-
- s->tPos = s->tt[s->origPtr] >> 8;
- s->nblock_used = 0;
- if (s->blockRandomised) {
- BZ_RAND_INIT_MASK;
- BZ_GET_FAST(s->k0); s->nblock_used++;
- BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK;
- } else {
- BZ_GET_FAST(s->k0); s->nblock_used++;
- }
-
- }
-
- RETURN(BZ_OK);
-
-
-
- endhdr_2:
-
- GET_UCHAR(BZ_X_ENDHDR_2, uc);
- if (uc != 0x72) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_ENDHDR_3, uc);
- if (uc != 0x45) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_ENDHDR_4, uc);
- if (uc != 0x38) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_ENDHDR_5, uc);
- if (uc != 0x50) RETURN(BZ_DATA_ERROR);
- GET_UCHAR(BZ_X_ENDHDR_6, uc);
- if (uc != 0x90) RETURN(BZ_DATA_ERROR);
-
- s->storedCombinedCRC = 0;
- GET_UCHAR(BZ_X_CCRC_1, uc);
- s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_CCRC_2, uc);
- s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_CCRC_3, uc);
- s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
- GET_UCHAR(BZ_X_CCRC_4, uc);
- s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
-
- s->state = BZ_X_IDLE;
- RETURN(BZ_STREAM_END);
-
- default: AssertH ( False, 4001 );
- }
-
- AssertH ( False, 4002 );
-
- save_state_and_return:
-
- s->save_i = i;
- s->save_j = j;
- s->save_t = t;
- s->save_alphaSize = alphaSize;
- s->save_nGroups = nGroups;
- s->save_nSelectors = nSelectors;
- s->save_EOB = EOB;
- s->save_groupNo = groupNo;
- s->save_groupPos = groupPos;
- s->save_nextSym = nextSym;
- s->save_nblockMAX = nblockMAX;
- s->save_nblock = nblock;
- s->save_es = es;
- s->save_N = N;
- s->save_curr = curr;
- s->save_zt = zt;
- s->save_zn = zn;
- s->save_zvec = zvec;
- s->save_zj = zj;
- s->save_gSel = gSel;
- s->save_gMinlen = gMinlen;
- s->save_gLimit = gLimit;
- s->save_gBase = gBase;
- s->save_gPerm = gPerm;
-
- return retVal;
-}
-
-
-/*-------------------------------------------------------------*/
-/*--- end decompress.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/huffman.c b/mdk-stage1/bzlib/huffman.c
deleted file mode 100644
index 8994f0bb9..000000000
--- a/mdk-stage1/bzlib/huffman.c
+++ /dev/null
@@ -1,232 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Huffman coding low-level stuff ---*/
-/*--- huffman.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "bzlib_private.h"
-
-/*---------------------------------------------------*/
-#define WEIGHTOF(zz0) ((zz0) & 0xffffff00)
-#define DEPTHOF(zz1) ((zz1) & 0x000000ff)
-#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
-
-#define ADDWEIGHTS(zw1,zw2) \
- (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \
- (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
-
-#define UPHEAP(z) \
-{ \
- Int32 zz, tmp; \
- zz = z; tmp = heap[zz]; \
- while (weight[tmp] < weight[heap[zz >> 1]]) { \
- heap[zz] = heap[zz >> 1]; \
- zz >>= 1; \
- } \
- heap[zz] = tmp; \
-}
-
-#define DOWNHEAP(z) \
-{ \
- Int32 zz, yy, tmp; \
- zz = z; tmp = heap[zz]; \
- while (True) { \
- yy = zz << 1; \
- if (yy > nHeap) break; \
- if (yy < nHeap && \
- weight[heap[yy+1]] < weight[heap[yy]]) \
- yy++; \
- if (weight[tmp] < weight[heap[yy]]) break; \
- heap[zz] = heap[yy]; \
- zz = yy; \
- } \
- heap[zz] = tmp; \
-}
-
-
-/*---------------------------------------------------*/
-void BZ2_hbMakeCodeLengths ( UChar *len,
- Int32 *freq,
- Int32 alphaSize,
- Int32 maxLen )
-{
- /*--
- Nodes and heap entries run from 1. Entry 0
- for both the heap and nodes is a sentinel.
- --*/
- Int32 nNodes, nHeap, n1, n2, i, j, k;
- Bool tooLong;
-
- Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ];
- Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
- Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ];
-
- for (i = 0; i < alphaSize; i++)
- weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
-
- while (True) {
-
- nNodes = alphaSize;
- nHeap = 0;
-
- heap[0] = 0;
- weight[0] = 0;
- parent[0] = -2;
-
- for (i = 1; i <= alphaSize; i++) {
- parent[i] = -1;
- nHeap++;
- heap[nHeap] = i;
- UPHEAP(nHeap);
- }
-
- AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
-
- while (nHeap > 1) {
- n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
- n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
- nNodes++;
- parent[n1] = parent[n2] = nNodes;
- weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
- parent[nNodes] = -1;
- nHeap++;
- heap[nHeap] = nNodes;
- UPHEAP(nHeap);
- }
-
- AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
-
- tooLong = False;
- for (i = 1; i <= alphaSize; i++) {
- j = 0;
- k = i;
- while (parent[k] >= 0) { k = parent[k]; j++; }
- len[i-1] = j;
- if (j > maxLen) tooLong = True;
- }
-
- if (! tooLong) break;
-
- for (i = 1; i < alphaSize; i++) {
- j = weight[i] >> 8;
- j = 1 + (j / 2);
- weight[i] = j << 8;
- }
- }
-}
-
-
-/*---------------------------------------------------*/
-void BZ2_hbAssignCodes ( Int32 *code,
- UChar *length,
- Int32 minLen,
- Int32 maxLen,
- Int32 alphaSize )
-{
- Int32 n, vec, i;
-
- vec = 0;
- for (n = minLen; n <= maxLen; n++) {
- for (i = 0; i < alphaSize; i++)
- if (length[i] == n) { code[i] = vec; vec++; };
- vec <<= 1;
- }
-}
-
-
-/*---------------------------------------------------*/
-void BZ2_hbCreateDecodeTables ( Int32 *limit,
- Int32 *base,
- Int32 *perm,
- UChar *length,
- Int32 minLen,
- Int32 maxLen,
- Int32 alphaSize )
-{
- Int32 pp, i, j, vec;
-
- pp = 0;
- for (i = minLen; i <= maxLen; i++)
- for (j = 0; j < alphaSize; j++)
- if (length[j] == i) { perm[pp] = j; pp++; };
-
- for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
- for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
-
- for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
-
- for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
- vec = 0;
-
- for (i = minLen; i <= maxLen; i++) {
- vec += (base[i+1] - base[i]);
- limit[i] = vec-1;
- vec <<= 1;
- }
- for (i = minLen + 1; i <= maxLen; i++)
- base[i] = ((limit[i-1] + 1) << 1) - base[i];
-}
-
-
-/*-------------------------------------------------------------*/
-/*--- end huffman.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/bzlib/randtable.c b/mdk-stage1/bzlib/randtable.c
deleted file mode 100644
index a1fc82cfb..000000000
--- a/mdk-stage1/bzlib/randtable.c
+++ /dev/null
@@ -1,128 +0,0 @@
-
-/*-------------------------------------------------------------*/
-/*--- Table for randomising repetitive blocks ---*/
-/*--- randtable.c ---*/
-/*-------------------------------------------------------------*/
-
-/*--
- This file is a part of bzip2 and/or libbzip2, a program and
- library for lossless, block-sorting data compression.
-
- Copyright (C) 1996-2000 Julian R Seward. 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.
-
- 2. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product
- documentation would be appreciated but is not required.
-
- 3. Altered source versions must be plainly marked as such, and must
- not be misrepresented as being the original software.
-
- 4. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
- 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.
-
- Julian Seward, Cambridge, UK.
- jseward@acm.org
- bzip2/libbzip2 version 1.0 of 21 March 2000
-
- This program is based on (at least) the work of:
- Mike Burrows
- David Wheeler
- Peter Fenwick
- Alistair Moffat
- Radford Neal
- Ian H. Witten
- Robert Sedgewick
- Jon L. Bentley
-
- For more information on these sources, see the manual.
---*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "bzlib_private.h"
-
-
-/*---------------------------------------------*/
-Int32 BZ2_rNums[512] = {
- 619, 720, 127, 481, 931, 816, 813, 233, 566, 247,
- 985, 724, 205, 454, 863, 491, 741, 242, 949, 214,
- 733, 859, 335, 708, 621, 574, 73, 654, 730, 472,
- 419, 436, 278, 496, 867, 210, 399, 680, 480, 51,
- 878, 465, 811, 169, 869, 675, 611, 697, 867, 561,
- 862, 687, 507, 283, 482, 129, 807, 591, 733, 623,
- 150, 238, 59, 379, 684, 877, 625, 169, 643, 105,
- 170, 607, 520, 932, 727, 476, 693, 425, 174, 647,
- 73, 122, 335, 530, 442, 853, 695, 249, 445, 515,
- 909, 545, 703, 919, 874, 474, 882, 500, 594, 612,
- 641, 801, 220, 162, 819, 984, 589, 513, 495, 799,
- 161, 604, 958, 533, 221, 400, 386, 867, 600, 782,
- 382, 596, 414, 171, 516, 375, 682, 485, 911, 276,
- 98, 553, 163, 354, 666, 933, 424, 341, 533, 870,
- 227, 730, 475, 186, 263, 647, 537, 686, 600, 224,
- 469, 68, 770, 919, 190, 373, 294, 822, 808, 206,
- 184, 943, 795, 384, 383, 461, 404, 758, 839, 887,
- 715, 67, 618, 276, 204, 918, 873, 777, 604, 560,
- 951, 160, 578, 722, 79, 804, 96, 409, 713, 940,
- 652, 934, 970, 447, 318, 353, 859, 672, 112, 785,
- 645, 863, 803, 350, 139, 93, 354, 99, 820, 908,
- 609, 772, 154, 274, 580, 184, 79, 626, 630, 742,
- 653, 282, 762, 623, 680, 81, 927, 626, 789, 125,
- 411, 521, 938, 300, 821, 78, 343, 175, 128, 250,
- 170, 774, 972, 275, 999, 639, 495, 78, 352, 126,
- 857, 956, 358, 619, 580, 124, 737, 594, 701, 612,
- 669, 112, 134, 694, 363, 992, 809, 743, 168, 974,
- 944, 375, 748, 52, 600, 747, 642, 182, 862, 81,
- 344, 805, 988, 739, 511, 655, 814, 334, 249, 515,
- 897, 955, 664, 981, 649, 113, 974, 459, 893, 228,
- 433, 837, 553, 268, 926, 240, 102, 654, 459, 51,
- 686, 754, 806, 760, 493, 403, 415, 394, 687, 700,
- 946, 670, 656, 610, 738, 392, 760, 799, 887, 653,
- 978, 321, 576, 617, 626, 502, 894, 679, 243, 440,
- 680, 879, 194, 572, 640, 724, 926, 56, 204, 700,
- 707, 151, 457, 449, 797, 195, 791, 558, 945, 679,
- 297, 59, 87, 824, 713, 663, 412, 693, 342, 606,
- 134, 108, 571, 364, 631, 212, 174, 643, 304, 329,
- 343, 97, 430, 751, 497, 314, 983, 374, 822, 928,
- 140, 206, 73, 263, 980, 736, 876, 478, 430, 305,
- 170, 514, 364, 692, 829, 82, 855, 953, 676, 246,
- 369, 970, 294, 750, 807, 827, 150, 790, 288, 923,
- 804, 378, 215, 828, 592, 281, 565, 555, 710, 82,
- 896, 831, 547, 261, 524, 462, 293, 465, 502, 56,
- 661, 821, 976, 991, 658, 869, 905, 758, 745, 193,
- 768, 550, 608, 933, 378, 286, 215, 979, 792, 961,
- 61, 688, 793, 644, 986, 403, 106, 366, 905, 644,
- 372, 567, 466, 434, 645, 210, 389, 550, 919, 135,
- 780, 773, 635, 389, 707, 100, 626, 958, 165, 504,
- 920, 176, 193, 713, 857, 265, 203, 50, 668, 108,
- 645, 990, 626, 197, 510, 357, 358, 850, 858, 364,
- 936, 638
-};
-
-
-/*-------------------------------------------------------------*/
-/*--- end randtable.c ---*/
-/*-------------------------------------------------------------*/
diff --git a/mdk-stage1/cdrom.c b/mdk-stage1/cdrom.c
deleted file mode 100644
index ef762a3c3..000000000
--- a/mdk-stage1/cdrom.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <sys/mount.h>
-#include "stage1.h"
-#include "frontend.h"
-#include "modules.h"
-#include "probing.h"
-#include "log.h"
-#include "mount.h"
-
-#include "cdrom.h"
-
-
-static int mount_that_cd_device(char * dev_name)
-{
- char device_fullname[50];
-
- strcpy(device_fullname, "/dev/");
- strcat(device_fullname, dev_name);
-
-#ifdef MANDRAKE_MOVE
- return my_mount(device_fullname, IMAGE_LOCATION, "supermount", 0);
-#else
- return my_mount(device_fullname, IMAGE_LOCATION, "iso9660", 0);
-#endif
-}
-
-
-static enum return_type try_with_device(char * dev_name, char * dev_model);
-
-static enum return_type do_with_device(char * dev_name, char * dev_model)
-{
- if (!image_has_stage2()) {
- enum return_type results;
- umount(IMAGE_LOCATION);
- results = ask_yes_no("That CDROM disc does not seem to be a " DISTRIB_NAME " Installation CDROM.\nRetry with another disc?");
- if (results == RETURN_OK)
- return try_with_device(dev_name, dev_model);
- return results;
- }
-
- log_message("found a " DISTRIB_NAME " CDROM, good news!");
-
-#ifndef MANDRAKE_MOVE
- may_load_clp();
-
- if (!KEEP_MOUNTED)
- /* in rescue mode, we don't need the media anymore */
- umount(IMAGE_LOCATION);
-#endif
-
- add_to_env("METHOD", "cdrom");
- return RETURN_OK;
-}
-
-static enum return_type try_with_device(char * dev_name, char * dev_model)
-{
- wait_message("Trying to access a CDROM disc (drive %s)", dev_model);
-
- if (mount_that_cd_device(dev_name) == -1) {
- enum return_type results;
- char msg[500];
- unset_automatic(); /* we are in a fallback mode */
- remove_wait_message();
-
- snprintf(msg, sizeof(msg), "I can't access a " DISTRIB_NAME " Installation disc in your CDROM drive (%s).\nRetry?", dev_model);
- results = ask_yes_no(msg);
- if (results == RETURN_OK)
- return try_with_device(dev_name, dev_model);
- return results;
- }
- remove_wait_message();
-
- return do_with_device(dev_name, dev_model);
-}
-
-int try_automatic(char ** medias, char ** medias_models)
-{
- static char * already_tried[50] = { NULL };
- char ** model = medias_models;
- char ** ptr = medias;
- int i = 0;
- while (ptr && *ptr) {
- char ** p;
- for (p = already_tried; p && *p; p++)
- if (streq(*p, *ptr))
- goto try_automatic_already_tried;
- *p = strdup(*ptr);
- *(p+1) = NULL;
-
- wait_message("Trying to access " DISTRIB_NAME " CDROM disc (drive %s)", *model);
- if (mount_that_cd_device(*ptr) != -1) {
- if (image_has_stage2()) {
- remove_wait_message();
- return i;
- }
- else
- umount(IMAGE_LOCATION);
- }
- remove_wait_message();
-
- try_automatic_already_tried:
- ptr++;
- model++;
- i++;
- }
- return -1;
-}
-
-enum return_type cdrom_prepare(void)
-{
- char ** medias, ** ptr, ** medias_models;
- char * choice;
- int i, count = 0;
- enum return_type results;
- static int already_probed_ide_generic = 0;
-
- my_insmod("ide-cd", ANY_DRIVER_TYPE, NULL, 0);
-
- if (IS_AUTOMATIC) {
- get_medias(CDROM, &medias, &medias_models, BUS_IDE);
- if ((i = try_automatic(medias, medias_models)) != -1)
- return do_with_device(medias[i], medias_models[i]);
-
- my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0);
- get_medias(CDROM, &medias, &medias_models, BUS_SCSI);
- if ((i = try_automatic(medias, medias_models)) != -1)
- return do_with_device(medias[i], medias_models[i]);
-
- get_medias(CDROM, &medias, &medias_models, BUS_USB);
- if ((i = try_automatic(medias, medias_models)) != -1)
- return do_with_device(medias[i], medias_models[i]);
-
- unset_automatic();
- } else
- my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0);
-
-
- get_medias(CDROM, &medias, &medias_models, BUS_ANY);
- ptr = medias;
- while (ptr && *ptr) {
- count++;
- ptr++;
- }
-
- if (count == 0) {
- if (!already_probed_ide_generic) {
- already_probed_ide_generic = 1;
- my_insmod("ide-generic", ANY_DRIVER_TYPE, NULL, 0);
- return cdrom_prepare();
- }
- stg1_error_message("No CDROM device found.");
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return cdrom_prepare();
- }
-
- if (count == 1) {
- results = try_with_device(*medias, *medias_models);
- if (results == RETURN_OK)
- return RETURN_OK;
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return cdrom_prepare();
- }
-
- results = ask_from_list_comments("Please choose the CDROM drive to use for the installation.", medias, medias_models, &choice);
- if (results == RETURN_OK) {
- char ** model = medias_models;
- ptr = medias;
- while (ptr && *ptr && model && *model) {
- if (!strcmp(*ptr, choice))
- break;
- ptr++;
- model++;
- }
- results = try_with_device(choice, *model);
- } else
- return results;
-
- if (results == RETURN_OK)
- return RETURN_OK;
- if (results == RETURN_BACK)
- return cdrom_prepare();
-
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return cdrom_prepare();
-}
diff --git a/mdk-stage1/cdrom.h b/mdk-stage1/cdrom.h
deleted file mode 100644
index c9ebc78aa..000000000
--- a/mdk-stage1/cdrom.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _CDROM_H_
-#define _CDROM_H_
-
-#include "stage1.h"
-
-enum return_type cdrom_prepare(void);
-
-#endif
diff --git a/mdk-stage1/config-stage1.h b/mdk-stage1/config-stage1.h
deleted file mode 100644
index 3fd918ec7..000000000
--- a/mdk-stage1/config-stage1.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _CONFIG_STAGE1_H_
-#define _CONFIG_STAGE1_H_
-
-#ifdef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-#define _GNU_SOURCE 1
-
-
-/* If we have more than that amount of memory (in Mbytes), we assume we can load the second stage as a ramdisk */
-#define MEM_LIMIT_DRAKX 68
-/* If we have more than that amount of memory (in Mbytes), we preload the second stage as a ramdisk */
-#define MEM_LIMIT_DRAKX_PRELOAD 100
-
-/* If we have more than that amount of memory (in Mbytes), we assume we can load the rescue as a ramdisk */
-#define MEM_LIMIT_RESCUE 40
-/* If we have more than that amount of memory (in Mbytes), we preload the rescue as a ramdisk */
-#define MEM_LIMIT_RESCUE_PRELOAD 100
-
-
-#define SLASH_LOCATION "/sysroot"
-
-#ifdef MANDRAKE_MOVE
-
-#define MEM_LIMIT_MOVE 120
-
-#undef DISTRIB_NAME
-#define DISTRIB_NAME "Mandrakemove"
-#undef DISTRIB_DESCR
-#define DISTRIB_DESCR DISTRIB_NAME
-
-#define IMAGE_LOCATION_DIR SLASH_LOCATION "/"
-#define IMAGE_LOCATION_REL "cdrom"
-#define IMAGE_LOCATION IMAGE_LOCATION_DIR IMAGE_LOCATION_REL
-
-#define CLP_LOCATION IMAGE_LOCATION
-
-#define STAGE2_LOCATION_ROOTED "/image"
-#define STAGE2_LOCATION SLASH_LOCATION STAGE2_LOCATION_ROOTED
-
-#define BOOT_LOCATION SLASH_LOCATION "/image_boot"
-#define ALWAYS_LOCATION SLASH_LOCATION "/image_always"
-#define TOTEM_LOCATION SLASH_LOCATION "/image_totem"
-
-#else
-
-#define LIVE_LOCATION_REL "install/stage2/live/"
-#define CLP_LOCATION_REL "install/stage2/"
-#define CLP_STAGE2_NAME "mdkinst.clp"
-#define CLP_RESCUE_NAME "rescue.clp"
-#define CLP_NAME(prefix) (IS_RESCUE ? prefix CLP_RESCUE_NAME : prefix CLP_STAGE2_NAME)
-#define CLP_FILE_REL(prefix) CLP_NAME(prefix CLP_LOCATION_REL)
-
-/* the remote media is mounted in
- - IMAGE_LOCATION_DIR "nfsimage", and IMAGE_LOCATION is a symlink image -> nfsimage/mdk/mirror/dir
- - IMAGE_LOCATION_DIR "hdimage", and IMAGE_LOCATION is a symlink image -> hdimage/mdk/mirror/dir
- - directly in IMAGE_LOCATION (for cdroms and .iso images)
- */
-#define IMAGE_LOCATION_DIR SLASH_LOCATION "/tmp/"
-#define IMAGE_LOCATION_REL "image"
-#define IMAGE_LOCATION IMAGE_LOCATION_DIR IMAGE_LOCATION_REL
-
-#define CLP_LOCATION IMAGE_LOCATION "/" CLP_LOCATION_REL
-
-/* - if we use a clp : STAGE2_LOCATION is a the mount point
- - if we use the live: STAGE2_LOCATION is a relative symlink to IMAGE_LOCATION_REL/install/stage2/live
-*/
-#define STAGE2_LOCATION_ROOTED "/tmp/stage2"
-#define STAGE2_LOCATION SLASH_LOCATION STAGE2_LOCATION_ROOTED
-
-#endif
-
-
-/* user-definable (in Makefile): DISABLE_NETWORK, DISABLE_DISK, DISABLE_CDROM, DISABLE_PCMCIA */
-
-
-/* some factorizing for disabling more features */
-
-#ifdef DISABLE_DISK
-#ifdef DISABLE_CDROM
-#define DISABLE_MEDIAS
-#endif
-#endif
-
-/* path to mirror list for net install */
-#ifndef DISABLE_NETWORK
-#define MIRRORLIST_HOST "www.mandrivalinux.com"
-#define MIRRORLIST_PATH "/mirrorsfull.list"
-#endif
-
-#endif
diff --git a/mdk-stage1/dhcp.c b/mdk-stage1/dhcp.c
deleted file mode 100644
index f5de6543e..000000000
--- a/mdk-stage1/dhcp.c
+++ /dev/null
@@ -1,676 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-/*
- * Portions from GRUB -- GRand Unified Bootloader
- * Copyright (C) 2000 Free Software Foundation, Inc.
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-#include <arpa/inet.h>
-#include <net/route.h>
-#include <errno.h>
-#include <net/ethernet.h>
-#include <netinet/ip.h>
-#include <netinet/udp.h>
-#include <sys/time.h>
-#include <time.h>
-#include <fcntl.h>
-#include <sys/poll.h>
-
-#include "stage1.h"
-#include "log.h"
-#include "network.h"
-#include "frontend.h"
-#include "automatic.h"
-
-#include "dhcp.h"
-
-
-typedef int bp_int32;
-typedef short bp_int16;
-
-#define BOOTP_OPTION_NETMASK 1
-#define BOOTP_OPTION_GATEWAY 3
-#define BOOTP_OPTION_DNS 6
-#define BOOTP_OPTION_HOSTNAME 12
-#define BOOTP_OPTION_DOMAIN 15
-#define BOOTP_OPTION_BROADCAST 28
-
-#define DHCP_OPTION_REQADDR 50
-#define DHCP_OPTION_LEASE 51
-#define DHCP_OPTION_TYPE 53
-#define DHCP_OPTION_SERVER 54
-#define DHCP_OPTION_OPTIONREQ 55
-#define DHCP_OPTION_MAXSIZE 57
-
-#define DHCP_OPTION_CLIENT_IDENTIFIER 61
-
-#define BOOTP_CLIENT_PORT 68
-#define BOOTP_SERVER_PORT 67
-
-#define BOOTP_OPCODE_REQUEST 1
-#define BOOTP_OPCODE_REPLY 2
-
-#define DHCP_TYPE_DISCOVER 1
-#define DHCP_TYPE_OFFER 2
-#define DHCP_TYPE_REQUEST 3
-#define DHCP_TYPE_ACK 5
-#define DHCP_TYPE_RELEASE 7
-
-#define BOOTP_VENDOR_LENGTH 64
-#define DHCP_VENDOR_LENGTH 340
-
-struct bootp_request {
- char opcode;
- char hw;
- char hwlength;
- char hopcount;
- bp_int32 id;
- bp_int16 secs;
- bp_int16 flags;
- bp_int32 ciaddr, yiaddr, server_ip, bootp_gw_ip;
- char hwaddr[16];
- char servername[64];
- char bootfile[128];
- char vendor[DHCP_VENDOR_LENGTH];
-} ;
-
-static const char vendor_cookie[] = { 99, 130, 83, 99, 255 };
-
-
-static unsigned int verify_checksum(void * buf2, int length2)
-{
- unsigned int csum = 0;
- unsigned short * sp;
-
- for (sp = (unsigned short *) buf2; length2 > 0; (length2 -= 2), sp++)
- csum += *sp;
-
- while (csum >> 16)
- csum = (csum & 0xffff) + (csum >> 16);
-
- return (csum == 0xffff);
-}
-
-
-static int initial_setup_interface(char * device, int s) {
- struct sockaddr_in * addrp;
- struct ifreq req;
- struct rtentry route;
- int true = 1;
-
- addrp = (struct sockaddr_in *) &req.ifr_addr;
-
- strcpy(req.ifr_name, device);
- addrp->sin_family = AF_INET;
- addrp->sin_port = 0;
- memset(&addrp->sin_addr, 0, sizeof(addrp->sin_addr));
-
- req.ifr_flags = 0; /* take it down */
- if (ioctl(s, SIOCSIFFLAGS, &req)) {
- log_perror("SIOCSIFFLAGS (downing)");
- return -1;
- }
-
- addrp->sin_family = AF_INET;
- addrp->sin_addr.s_addr = htonl(0);
- if (ioctl(s, SIOCSIFADDR, &req)) {
- log_perror("SIOCSIFADDR");
- return -1;
- }
-
- req.ifr_flags = IFF_UP | IFF_BROADCAST | IFF_RUNNING;
- if (ioctl(s, SIOCSIFFLAGS, &req)) {
- log_perror("SIOCSIFFLAGS (upping)");
- return -1;
- }
-
- memset(&route, 0, sizeof(route));
- memcpy(&route.rt_gateway, addrp, sizeof(*addrp));
-
- addrp->sin_family = AF_INET;
- addrp->sin_port = 0;
- addrp->sin_addr.s_addr = INADDR_ANY;
- memcpy(&route.rt_dst, addrp, sizeof(*addrp));
- memcpy(&route.rt_genmask, addrp, sizeof(*addrp));
-
- route.rt_dev = device;
- route.rt_flags = RTF_UP;
- route.rt_metric = 0;
-
- if (ioctl(s, SIOCADDRT, &route)) {
- if (errno != EEXIST) {
- close(s);
- log_perror("SIOCADDRT");
- return -1;
- }
- }
-
- if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &true, sizeof(true))) {
- close(s);
- log_perror("setsockopt");
- return -1;
- }
-
- /* I need to sleep a bit in order for kernel to finish init of the
- network device; this would allow to not send further multiple
- dhcp requests when only one is needed. */
- wait_message("Bringing up networking...");
- sleep(2);
- remove_wait_message();
-
- return 0;
-}
-
-
-void set_missing_ip_info(struct interface_info * intf)
-{
- bp_int32 ipNum = *((bp_int32 *) &intf->ip);
- bp_int32 nmNum;
-
- if (intf->netmask.s_addr == 0)
- inet_aton(guess_netmask(inet_ntoa(intf->ip)), &intf->netmask);
-
- nmNum = *((bp_int32 *) &intf->netmask);
-
- if (intf->broadcast.s_addr == 0)
- *((bp_int32 *) &intf->broadcast) = (ipNum & nmNum) | ~(nmNum);
-
- if (intf->network.s_addr == 0)
- *((bp_int32 *) &intf->network) = ipNum & nmNum;
-}
-
-static void parse_reply(struct bootp_request * breq, struct interface_info * intf)
-{
- unsigned char * chptr;
- unsigned char option, length;
-
- if (breq->bootfile && strlen(breq->bootfile) > 0) {
- if (IS_NETAUTO)
- add_to_env("KICKSTART", breq->bootfile);
- else
- log_message("warning: ignoring `bootfile' DHCP server parameter, since `netauto' boot parameter was not given; reboot with `linux netauto' (and anymore useful boot parameters) if you want `bootfile' to be used as a `auto_inst.cfg.pl' stage2 configuration file");
- }
-
- memcpy(&intf->ip, &breq->yiaddr, 4);
-
- chptr = (unsigned char *) breq->vendor;
- chptr += 4;
- while (*chptr != 0xFF && (void *) chptr < (void *) breq->vendor + DHCP_VENDOR_LENGTH) {
- char tmp_str[500];
- option = *chptr++;
- if (!option)
- continue;
- length = *chptr++;
-
- switch (option) {
- case BOOTP_OPTION_DNS:
- memcpy(&dns_server, chptr, sizeof(dns_server));
- log_message("got dns %s", inet_ntoa(dns_server));
- if (length >= sizeof(dns_server)*2) {
- memcpy(&dns_server2, chptr+sizeof(dns_server), sizeof(dns_server2));
- log_message("got dns2 %s", inet_ntoa(dns_server2));
- }
- break;
-
- case BOOTP_OPTION_NETMASK:
- memcpy(&intf->netmask, chptr, sizeof(intf->netmask));
- log_message("got netmask %s", inet_ntoa(intf->netmask));
- break;
-
- case BOOTP_OPTION_DOMAIN:
- memcpy(tmp_str, chptr, length);
- tmp_str[length] = '\0';
- domain = strdup(tmp_str);
- log_message("got domain %s", domain);
- break;
-
- case BOOTP_OPTION_BROADCAST:
- memcpy(&intf->broadcast, chptr, sizeof(intf->broadcast));
- log_message("got broadcast %s", inet_ntoa(intf->broadcast));
- break;
-
- case BOOTP_OPTION_GATEWAY:
- memcpy(&gateway, chptr, sizeof(gateway));
- log_message("got gateway %s", inet_ntoa(gateway));
- break;
-
- }
-
- chptr += length;
- }
-
- set_missing_ip_info(intf);
-}
-
-
-static void init_vendor_codes(struct bootp_request * breq) {
- memcpy(breq->vendor, vendor_cookie, sizeof(vendor_cookie));
-}
-
-static char gen_hwaddr[16];
-
-static int prepare_request(struct bootp_request * breq, int sock, char * device)
-{
- struct ifreq req;
-
- memset(breq, 0, sizeof(*breq));
-
- breq->opcode = BOOTP_OPCODE_REQUEST;
-
- strcpy(req.ifr_name, device);
- if (ioctl(sock, SIOCGIFHWADDR, &req)) {
- log_perror("SIOCSIFHWADDR");
- return -1;
- }
-
- breq->hw = req.ifr_hwaddr.sa_family;
- breq->hwlength = IFHWADDRLEN;
- memcpy(breq->hwaddr, req.ifr_hwaddr.sa_data, IFHWADDRLEN);
- memcpy(gen_hwaddr, req.ifr_hwaddr.sa_data, IFHWADDRLEN);
-
- breq->hopcount = 0;
-
- init_vendor_codes(breq);
-
- return 0;
-}
-
-static int get_vendor_code(struct bootp_request * bresp, unsigned char option, void * data)
-{
- unsigned char * chptr;
- unsigned int length, theOption;
-
- chptr = (unsigned char*) bresp->vendor + 4;
- while (*chptr != 0xFF && *chptr != option) {
- theOption = *chptr++;
- if (!theOption)
- continue;
- length = *chptr++;
- chptr += length;
- }
-
- if (*chptr++ == 0xff)
- return 1;
-
- length = *chptr++;
- memcpy(data, chptr, length);
-
- return 0;
-}
-
-
-static unsigned long currticks(void)
-{
- struct timeval tv;
- unsigned long csecs;
- unsigned long ticks_per_csec, ticks_per_usec;
-
- /* Note: 18.2 ticks/sec. */
-
- gettimeofday (&tv, 0);
- csecs = tv.tv_sec / 10;
- ticks_per_csec = csecs * 182;
- ticks_per_usec = (((tv.tv_sec - csecs * 10) * 1000000 + tv.tv_usec) * 182 / 10000000);
- return ticks_per_csec + ticks_per_usec;
-}
-
-
-#define BACKOFF_LIMIT 7
-#define TICKS_PER_SEC 18
-#define MAX_ARP_RETRIES 7
-
-static void rfc951_sleep(int exp)
-{
- static long seed = 0;
- long q;
- unsigned long tmo;
-
- if (exp > BACKOFF_LIMIT)
- exp = BACKOFF_LIMIT;
-
- if (!seed)
- /* Initialize linear congruential generator. */
- seed = (currticks () + *(long *) &gen_hwaddr + ((short *) gen_hwaddr)[2]);
-
- /* Simplified version of the LCG given in Bruce Scheier's
- "Applied Cryptography". */
- q = seed / 53668;
- if ((seed = 40014 * (seed - 53668 * q) - 12211 * q) < 0)
- seed += 2147483563l;
-
- /* Compute mask. */
- for (tmo = 63; tmo <= 60 * TICKS_PER_SEC && --exp > 0; tmo = 2 * tmo + 1)
- ;
-
- /* Sleep. */
- log_message("<sleep>");
-
- for (tmo = (tmo & seed) + currticks (); currticks () < tmo;);
-}
-
-
-static int handle_transaction(int s, struct bootp_request * breq, struct bootp_request * bresp,
- struct sockaddr_in * server_addr, int dhcp_type)
-{
- struct pollfd polls;
- int i, j;
- int retry = 1;
- int sin;
- char eth_packet[ETH_FRAME_LEN];
- struct iphdr * ip_hdr;
- struct udphdr * udp_hdr;
- unsigned char type;
- unsigned long starttime;
- int timeout = 1;
-
- breq->id = starttime = currticks();
- breq->secs = 0;
-
- sin = socket(AF_PACKET, SOCK_DGRAM, ntohs(ETH_P_IP));
- if (sin < 0) {
- log_perror("af_packet socket");
- return -1;
- }
-
- while (retry <= MAX_ARP_RETRIES) {
- i = sizeof(*breq);
-
- if (sendto(s, breq, i, 0, (struct sockaddr *) server_addr, sizeof(*server_addr)) != i) {
- close(s);
- log_perror("sendto");
- return -1;
- }
-
- polls.fd = sin;
- polls.events = POLLIN;
-
- while (poll(&polls, 1, timeout*1000) == 1) {
-
- if ((j = recv(sin, eth_packet, sizeof(eth_packet), 0)) == -1) {
- log_perror("recv");
- continue;
- }
-
- /* We need to do some basic sanity checking of the header */
- if (j < (signed)(sizeof(*ip_hdr) + sizeof(*udp_hdr)))
- continue;
-
- ip_hdr = (void *) eth_packet;
- if (!verify_checksum(ip_hdr, sizeof(*ip_hdr)))
- continue;
-
- if (ntohs(ip_hdr->tot_len) > j)
- continue;
-
- j = ntohs(ip_hdr->tot_len);
-
- if (ip_hdr->protocol != IPPROTO_UDP)
- continue;
-
- udp_hdr = (void *) (eth_packet + sizeof(*ip_hdr));
-
- if (ntohs(udp_hdr->source) != BOOTP_SERVER_PORT)
- continue;
-
- if (ntohs(udp_hdr->dest) != BOOTP_CLIENT_PORT)
- continue;
- /* Go on with this packet; it looks sane */
-
- /* Originally copied sizeof (*bresp) - this is a security
- problem due to a potential underflow of the source
- buffer. Also, it trusted that the packet was properly
- 0xFF terminated, which is not true in the case of the
- DHCP server on Cisco 800 series ISDN router. */
-
- memset (bresp, 0xFF, sizeof (*bresp));
- memcpy (bresp, (char *) udp_hdr + sizeof (*udp_hdr), j - sizeof (*ip_hdr) - sizeof (*udp_hdr));
-
- /* sanity checks */
- if (bresp->id != breq->id)
- continue;
- if (bresp->opcode != BOOTP_OPCODE_REPLY)
- continue;
- if (bresp->hwlength != breq->hwlength)
- continue;
- if (memcmp(bresp->hwaddr, breq->hwaddr, bresp->hwlength))
- continue;
- if (get_vendor_code(bresp, DHCP_OPTION_TYPE, &type) || type != dhcp_type)
- continue;
- if (memcmp(bresp->vendor, vendor_cookie, 4))
- continue;
- return 0;
- }
- rfc951_sleep(retry);
- breq->secs = htons ((currticks () - starttime) / 20);
- retry++;
- timeout *= 2;
- if (timeout > 5)
- timeout = 5;
- }
-
- return -1;
-}
-
-static void add_vendor_code(struct bootp_request * breq, unsigned char option, unsigned char length, void * data)
-{
- unsigned char * chptr;
- int theOption, theLength;
-
- chptr = (unsigned char*) breq->vendor;
- chptr += 4;
- while (*chptr != 0xFF && *chptr != option) {
- theOption = *chptr++;
- if (!theOption) continue;
- theLength = *chptr++;
- chptr += theLength;
- }
-
- *chptr++ = option;
- *chptr++ = length;
- memcpy(chptr, data, length);
- chptr[length] = 0xff;
-}
-
-
-char * dhcp_hostname = NULL;
-char * dhcp_domain = NULL;
-
-enum return_type perform_dhcp(struct interface_info * intf)
-{
- int s, i;
- struct sockaddr_in server_addr;
- struct sockaddr_in client_addr;
- struct sockaddr_in broadcast_addr;
- struct bootp_request breq, bresp;
- unsigned char messageType;
- unsigned int lease;
- short aShort;
- int num_options;
- char requested_options[50];
- char * client_id_str, * client_id_hwaddr;
-
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
- log_perror("socket");
- return RETURN_ERROR;
- }
-
- {
- enum return_type results;
- char * questions[] = { "Host name", "Domain name", NULL };
- char * questions_auto[] = { "hostname", "domain" };
- static char ** answers = NULL;
- char * boulet;
-
- client_id_str = client_id_hwaddr = NULL;
-
- results = ask_from_entries_auto("If the DHCP server needs to know you by name; please fill in this information. "
- "Valid answers are for example: `mybox' for hostname and `mynetwork.com' for "
- "domain name, for a machine called `mybox.mynetwork.com' on the Internet.",
- questions, &answers, 32, questions_auto, NULL);
- if (results == RETURN_OK)
- {
- dhcp_hostname = answers[0];
- if ((boulet = strchr(dhcp_hostname, '.')) != NULL)
- boulet[0] = '\0';
- dhcp_domain = answers[1];
-
- if (*dhcp_hostname && *dhcp_domain) {
- /* if we have both, then create client id from them */
- client_id_str = malloc(1 + strlen(dhcp_hostname) + 1 + strlen(dhcp_domain) + 1);
- client_id_str[0] = '\0';
- sprintf(client_id_str+1, "%s.%s", dhcp_hostname, dhcp_domain);
- }
- }
- }
-
- if (initial_setup_interface(intf->device, s) != 0) {
- close(s);
- return RETURN_ERROR;
- }
-
- if (prepare_request(&breq, s, intf->device) != 0) {
- close(s);
- return RETURN_ERROR;
- }
-
- messageType = DHCP_TYPE_DISCOVER;
- add_vendor_code(&breq, DHCP_OPTION_TYPE, 1, &messageType);
-
- /* add pieces needed to have DDNS/DHCP IP selection based on requested name */
- if (dhcp_hostname && *dhcp_hostname) { /* pick client id form based on absence or presence of domain name */
- if (*dhcp_domain) /* alternate style <hostname>.<domainname> */
- add_vendor_code(&breq, DHCP_OPTION_CLIENT_IDENTIFIER, strlen(client_id_str+1)+1, client_id_str);
- else { /* usual style (aka windows / dhcpcd) */
- /* but put MAC in form required for client identifier first */
- client_id_hwaddr = malloc(IFHWADDRLEN+2);
- /* (from pump-0.8.22/dhcp.c)
- * Microsoft uses a client identifier field of the 802.3 address with a
- * pre-byte of a "1". In order to re-use the DHCP address that they set
- * for this interface, we have to mimic their identifier.
- */
- client_id_hwaddr[0] = 1; /* set flag for ethernet */
- memcpy(client_id_hwaddr+1, gen_hwaddr, IFHWADDRLEN);
- add_vendor_code(&breq, DHCP_OPTION_CLIENT_IDENTIFIER, IFHWADDRLEN+1, client_id_hwaddr);
- }
- /* this is the one that the dhcp server really wants for DDNS updates */
- add_vendor_code(&breq, BOOTP_OPTION_HOSTNAME, strlen(dhcp_hostname), dhcp_hostname);
- log_message("DHCP: telling server to use name = %s", dhcp_hostname);
- }
-
- memset(&client_addr.sin_addr, 0, sizeof(&client_addr.sin_addr));
- client_addr.sin_family = AF_INET;
- client_addr.sin_port = htons(BOOTP_CLIENT_PORT); /* bootp client */
-
- if (bind(s, (struct sockaddr *) &client_addr, sizeof(client_addr))) {
- log_perror("bind");
- return RETURN_ERROR;
- }
-
- broadcast_addr.sin_family = AF_INET;
- broadcast_addr.sin_port = htons(BOOTP_SERVER_PORT); /* bootp server */
- memset(&broadcast_addr.sin_addr, 0xff, sizeof(broadcast_addr.sin_addr)); /* broadcast */
-
- log_message("DHCP: sending DISCOVER");
-
- wait_message("Sending DHCP request...");
- i = handle_transaction(s, &breq, &bresp, &broadcast_addr, DHCP_TYPE_OFFER);
- remove_wait_message();
-
- if (i != 0) {
- stg1_error_message("No DHCP reply received.");
- close(s);
- return RETURN_ERROR;
- }
-
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(BOOTP_SERVER_PORT); /* bootp server */
- if (get_vendor_code(&bresp, DHCP_OPTION_SERVER, &server_addr.sin_addr)) {
- close(s);
- log_message("DHCPOFFER didn't include server address");
- return RETURN_ERROR;
- }
-
- init_vendor_codes(&breq);
- messageType = DHCP_TYPE_REQUEST;
- add_vendor_code(&breq, DHCP_OPTION_TYPE, 1, &messageType);
- add_vendor_code(&breq, DHCP_OPTION_SERVER, 4, &server_addr.sin_addr);
- add_vendor_code(&breq, DHCP_OPTION_REQADDR, 4, &bresp.yiaddr);
-
- /* if used the first time, then have to use it again */
- if (dhcp_hostname && *dhcp_hostname) { /* add pieces needed to have DDNS/DHCP IP selection based on requested name */
- if (dhcp_domain && *dhcp_domain) /* alternate style */
- add_vendor_code(&breq, DHCP_OPTION_CLIENT_IDENTIFIER, strlen(client_id_str+1)+1, client_id_str);
- else /* usual style (aka windows / dhcpcd) */
- add_vendor_code(&breq, DHCP_OPTION_CLIENT_IDENTIFIER, IFHWADDRLEN+1, client_id_hwaddr);
- /* this is the one that the dhcp server really wants for DDNS updates */
- add_vendor_code(&breq, BOOTP_OPTION_HOSTNAME, strlen(dhcp_hostname), dhcp_hostname);
- }
-
- aShort = ntohs(sizeof(struct bootp_request));
- add_vendor_code(&breq, DHCP_OPTION_MAXSIZE, 2, &aShort);
-
- num_options = 0;
- requested_options[num_options++] = BOOTP_OPTION_NETMASK;
- requested_options[num_options++] = BOOTP_OPTION_GATEWAY;
- requested_options[num_options++] = BOOTP_OPTION_DNS;
- requested_options[num_options++] = BOOTP_OPTION_DOMAIN;
- requested_options[num_options++] = BOOTP_OPTION_BROADCAST;
- add_vendor_code(&breq, DHCP_OPTION_OPTIONREQ, num_options, requested_options);
-
- /* request a lease of 1 hour */
- i = htonl(60 * 60);
- add_vendor_code(&breq, DHCP_OPTION_LEASE, 4, &i);
-
- log_message("DHCP: sending REQUEST");
-
- i = handle_transaction(s, &breq, &bresp, &broadcast_addr, DHCP_TYPE_ACK);
-
- if (i != 0) {
- close(s);
- return RETURN_ERROR;
- }
-
- if (get_vendor_code(&bresp, DHCP_OPTION_LEASE, &lease)) {
- log_message("failed to get lease time\n");
- return RETURN_ERROR;
- }
- lease = ntohl(lease);
-
- close(s);
-
- intf->netmask.s_addr = 0;
- intf->broadcast.s_addr = 0;
- intf->network.s_addr = 0;
-
- parse_reply(&bresp, intf);
-
- return RETURN_OK;
-}
diff --git a/mdk-stage1/dhcp.h b/mdk-stage1/dhcp.h
deleted file mode 100644
index d1ad8ae9e..000000000
--- a/mdk-stage1/dhcp.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * View the homepage: http://us.mandrakesoft.com/~gc/html/stage1.html
- *
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from GRUB -- GRand Unified Bootloader
- * Copyright (C) 2000 Free Software Foundation, Inc.
- *
- * Itself based on etherboot-4.6.4 by Martin Renters.
- *
- */
-
-#ifndef _DHCP_H_
-#define _DHCP_H_
-
-#include "stage1.h"
-#include "network.h"
-
-enum return_type perform_dhcp(struct interface_info * intf);
-
-extern char * dhcp_hostname;
-extern char * dhcp_domain;
-
-#endif
diff --git a/mdk-stage1/directory.c b/mdk-stage1/directory.c
deleted file mode 100644
index 6115b600c..000000000
--- a/mdk-stage1/directory.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- * Olivier Blin (oblin@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <unistd.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <libgen.h>
-#include "stage1.h"
-#include "frontend.h"
-#include "log.h"
-#include "lomount.h"
-
-char * extract_list_directory(char * direct)
-{
- char ** full = list_directory(direct);
- char tmp[20000] = "";
- int i;
- for (i=0; i<50 ; i++) {
- if (!full || !*full)
- break;
- strcat(tmp, *full);
- strcat(tmp, "\n");
- full++;
- }
- return strdup(tmp);
-}
-
-static void choose_iso_in_directory(char *directory, char *location_full)
-{
- char **file;
- char *stage2_isos[100] = { "Use directory as a mirror tree", "-----" };
- int stage2_iso_number = 2;
-
- log_message("\"%s\" exists and is a directory, looking for iso files", directory);
-
- for (file = list_directory(directory); *file; file++) {
- char isofile[500];
- char * loopdev = NULL;
-
- if (strstr(*file, ".iso") != *file + strlen(*file) - 4)
- /* file doesn't end in .iso, skipping */
- continue;
-
- strcpy(isofile, directory);
- strcat(isofile, "/");
- strcat(isofile, *file);
-
- if (lomount(isofile, IMAGE_LOCATION, &loopdev, 0)) {
- log_message("unable to mount iso file \"%s\", skipping", isofile);
- continue;
- }
-
- if (image_has_stage2()) {
- log_message("stage2 installer found in ISO image \"%s\"", isofile);
- stage2_isos[stage2_iso_number++] = strdup(*file);
- } else {
- log_message("ISO image \"%s\" doesn't contain stage2 installer", isofile);
- }
-
- umount(IMAGE_LOCATION);
- del_loop(loopdev);
- }
-
- stage2_isos[stage2_iso_number] = NULL;
-
- if (stage2_iso_number > 2) {
- enum return_type results;
- do {
- results = ask_from_list("Please choose the ISO image to be used to install the "
- DISTRIB_NAME " Distribution.",
- stage2_isos, file);
- if (results == RETURN_BACK) {
- return;
- } else if (results == RETURN_OK) {
- if (!strcmp(*file, stage2_isos[0])) {
- /* use directory as a mirror tree */
- continue;
- } else if (!strcmp(*file, stage2_isos[1])) {
- /* the separator has been selected */
- results = RETURN_ERROR;
- continue;
- } else {
- /* use selected ISO image */
- strcat(location_full, "/");
- strcat(location_full, *file);
- log_message("installer will use ISO image \"%s\"", location_full);
- }
- }
- } while (results == RETURN_ERROR);
- } else {
- log_message("no ISO image found in \"%s\" directory", location_full);
- }
-}
-
-
-enum return_type try_with_directory(char *directory, char *method_live, char *method_iso) {
- char location_full[500];
- char * loopdev = NULL;
- struct stat statbuf;
- enum return_type ret = RETURN_OK;
-
- unlink(IMAGE_LOCATION);
- strcpy(location_full, directory);
-
-#ifndef MANDRAKE_MOVE
- if (!stat(directory, &statbuf) && S_ISDIR(statbuf.st_mode)) {
- choose_iso_in_directory(directory, location_full);
- }
-#endif
-
- loopdev = NULL;
- if (!stat(location_full, &statbuf) && !S_ISDIR(statbuf.st_mode)) {
- log_message("%s exists and is not a directory, assuming this is an ISO image", location_full);
- if (lomount(location_full, IMAGE_LOCATION, &loopdev, 0)) {
- stg1_error_message("Could not mount file %s as an ISO image of the " DISTRIB_NAME " Distribution.", location_full);
- return RETURN_ERROR;
- }
- add_to_env("ISOPATH", location_full);
- add_to_env("METHOD", method_iso);
- } else {
- int offset = strncmp(location_full, IMAGE_LOCATION_DIR, sizeof(IMAGE_LOCATION_DIR) - 1) == 0 ? sizeof(IMAGE_LOCATION_DIR) - 1 : 0;
- log_message("assuming %s is a mirror tree", location_full + offset);
-
- rmdir(IMAGE_LOCATION); /* useful if we loopback mounted it */
- symlink(location_full + offset, IMAGE_LOCATION);
- add_to_env("METHOD", method_live);
- }
-
-#ifdef MANDRAKE_MOVE
- if (access(IMAGE_LOCATION "/live_tree/etc/fstab", R_OK) && access(IMAGE_LOCATION "/live_tree.clp", R_OK)) {
- stg1_error_message("I can't find the " DISTRIB_NAME " Distribution in the specified directory. "
- "(I need the file " IMAGE_LOCATION "/live_tree/etc/fstab" ")\n"
- "Here's a short extract of the files in the directory:\n"
- "%s", extract_list_directory(IMAGE_LOCATION));
- ret = RETURN_BACK;
- }
-#else
- if (access(IMAGE_LOCATION "/" CLP_LOCATION_REL, R_OK)) {
- stg1_error_message("I can't find the " DISTRIB_NAME " Distribution in the specified directory. "
- "(I need the subdirectory " CLP_LOCATION_REL ")\n"
- "Here's a short extract of the files in the directory:\n"
- "%s", extract_list_directory(IMAGE_LOCATION));
- ret = RETURN_BACK;
- } else if (may_load_clp() != RETURN_OK) {
- stg1_error_message("Could not load program into memory.");
- ret = RETURN_ERROR;
- }
-
- if (ret == RETURN_OK)
- log_message("found the " DISTRIB_NAME " Installation, good news!");
-
-#endif
- if (!KEEP_MOUNTED || ret != RETURN_OK) {
- /* in rescue mode, we don't need the media anymore */
- umount(IMAGE_LOCATION);
- del_loop(loopdev);
- }
-
- return ret;
-}
diff --git a/mdk-stage1/directory.h b/mdk-stage1/directory.h
deleted file mode 100644
index eb744520b..000000000
--- a/mdk-stage1/directory.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- * Olivier Blin (oblin@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _DIRECTORY_H_
-#define _DIRECTORY_H_
-
-char * extract_list_directory(char * direct);
-enum return_type try_with_directory(char *location_full, char *method_live, char *method_iso);
-
-#endif
diff --git a/mdk-stage1/disk.c b/mdk-stage1/disk.c
deleted file mode 100644
index e3e84d7da..000000000
--- a/mdk-stage1/disk.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <libgen.h>
-#include "stage1.h"
-#include "frontend.h"
-#include "modules.h"
-#include "probing.h"
-#include "log.h"
-#include "mount.h"
-#include "lomount.h"
-#include "automatic.h"
-#include "directory.h"
-#include "partition.h"
-
-#include "disk.h"
-
-static enum return_type try_with_device(char *dev_name)
-{
- char * questions_location[] = { "Directory or ISO images directory or ISO image", NULL };
- char * questions_location_auto[] = { "directory", NULL };
- static char ** answers_location = NULL;
- char location_full[500];
-
- char * disk_own_mount = IMAGE_LOCATION_DIR "hdimage";
-
- char * parts[50];
- char * parts_comments[50];
- enum return_type results;
- char * choice;
-
- if (list_partitions(dev_name, parts, parts_comments)) {
- stg1_error_message("Could not read partitions information.");
- return RETURN_ERROR;
- }
-
- /* uglyness to allow auto starting with devfs */
- if (!IS_AUTOMATIC || streq((choice = get_auto_value("partition")), "")) {
- if (parts[0] == NULL) {
- stg1_error_message("No partition found.");
- return RETURN_ERROR;
- }
-
- results = ask_from_list_comments_auto("Please select the partition containing the copy of the "
- DISTRIB_NAME " Distribution install source.",
- parts, parts_comments, &choice, "partition", parts);
- if (results != RETURN_OK)
- return results;
- }
-
- /* in testing mode, assume the partition is already mounted on IMAGE_LOCATION_DIR "hdimage" */
- if (!IS_TESTING && try_mount(choice, disk_own_mount)) {
- stg1_error_message("I can't find a valid filesystem (tried: ext2, vfat, ntfs, reiserfs). "
- "Make sure the partition has been cleanly unmounted.");
- return try_with_device(dev_name);
- }
-
- ask_dir:
- if (ask_from_entries_auto("Please enter the directory (or ISO image file) containing the "
- DISTRIB_NAME " Distribution install source.",
- questions_location, &answers_location, 24, questions_location_auto, NULL) != RETURN_OK) {
- umount(disk_own_mount);
- return try_with_device(dev_name);
- }
-
- strcpy(location_full, disk_own_mount);
- strcat(location_full, "/");
- strcat(location_full, answers_location[0]);
-
- if (access(location_full, R_OK)) {
- char * path = strdup(answers_location[0]);
- stg1_error_message("Directory or ISO image file could not be found on partition.\n"
- "Here's a short extract of the files in the directory %s:\n"
- "%s", dirname(path), extract_list_directory(dirname(location_full)));
- free(path);
- goto ask_dir;
- }
-
- results = try_with_directory(location_full, "disk", "disk-iso");
- if (results != RETURN_OK) {
- goto ask_dir;
- }
-
- if (!KEEP_MOUNTED)
- umount(disk_own_mount);
-
- return RETURN_OK;
-}
-
-enum return_type disk_prepare(void)
-{
- char ** medias, ** medias_models;
- char * choice;
- int i;
- enum return_type results;
- static int already_probed_ide_generic = 0;
-
- int count = get_disks(&medias, &medias_models);
-
- if (count == 0) {
- if (!already_probed_ide_generic) {
- already_probed_ide_generic = 1;
- my_insmod("ide-generic", ANY_DRIVER_TYPE, NULL, 0);
- return disk_prepare();
- }
- stg1_error_message("No DISK drive found.");
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return disk_prepare();
- }
-
- if (count == 1) {
- results = try_with_device(*medias);
- if (results != RETURN_ERROR)
- return results;
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return disk_prepare();
- }
-
- results = ask_from_list_comments_auto("Please select the disk containing the copy of the "
- DISTRIB_NAME " Distribution install source.",
- medias, medias_models, &choice, "disk", medias);
-
- if (results != RETURN_OK)
- return results;
-
- results = try_with_device(choice);
- if (results != RETURN_ERROR)
- return results;
- i = ask_insmod(SCSI_ADAPTERS);
- if (i == RETURN_BACK)
- return RETURN_BACK;
- return disk_prepare();
-}
diff --git a/mdk-stage1/disk.h b/mdk-stage1/disk.h
deleted file mode 100644
index fae890894..000000000
--- a/mdk-stage1/disk.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _DISK_H_
-#define _DISK_H_
-
-enum return_type disk_prepare(void);
-
-#endif
diff --git a/mdk-stage1/dns.c b/mdk-stage1/dns.c
deleted file mode 100644
index 1d7d2d6c8..000000000
--- a/mdk-stage1/dns.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-
-// dietlibc can do hostname lookup, whereas glibc can't when linked statically :-(
-
-#if defined(__dietlibc__)
-
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <netdb.h>
-#include <sys/socket.h>
-#include <resolv.h>
-
-#include "network.h"
-#include "log.h"
-
-#include "dns.h"
-
-int mygethostbyname(char * name, struct in_addr * addr)
-{
- struct hostent * h;
-
- /* prevent from timeouts */
- if (_res.nscount == 0)
- return -1;
-
- h = gethostbyname(name);
-
- if (!h && domain) {
- // gethostbyname from dietlibc doesn't support domain handling
- char fully_qualified[500];
- sprintf(fully_qualified, "%s.%s", name, domain);
- h = gethostbyname(fully_qualified);
- }
-
- if (h && h->h_addr_list && (h->h_addr_list)[0]) {
- memcpy(addr, (h->h_addr_list)[0], sizeof(*addr));
- log_message("is-at: %s", inet_ntoa(*addr));
- return 0;
- }
-
- log_message("unknown host %s", name);
- return -1;
-}
-
-char * mygethostbyaddr(char * ipnum)
-{
- struct in_addr in;
- struct hostent * host;
-
- /* prevent from timeouts */
- if (_res.nscount == 0)
- return NULL;
-
- if (!inet_aton(ipnum, &in))
- return NULL;
- host = gethostbyaddr(&(in.s_addr), sizeof(in.s_addr) /* INADDRSZ */, AF_INET);
- if (host && host->h_name)
- return host->h_name;
- return NULL;
-}
-
-#elif defined(__GLIBC__)
-
-#include <alloca.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <resolv.h>
-#include <arpa/nameser.h>
-#include <arpa/inet.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "log.h"
-
-#include "dns.h"
-
-/* This is dumb, but glibc doesn't like to do hostname lookups w/o libc.so */
-
-union dns_response {
- HEADER hdr;
- u_char buf[PACKETSZ];
-} ;
-
-static int do_query(char * query, int queryType, char ** domainName, struct in_addr * ipNum)
-{
- int len, ancount, type;
- u_char * data, * end;
- char name[MAXDNAME];
- union dns_response response;
-
-#ifdef __sparc__
- /* from jj: */
- /* We have to wait till ethernet negotiation is done */
- _res.retry = 3;
-#else
- _res.retry = 2;
-#endif
-
-
- len = res_search(query, C_IN, queryType, (void *) &response, sizeof(response));
- if (len <= 0)
- return -1;
-
- if (ntohs(response.hdr.rcode) != NOERROR)
- return -1;
-
- ancount = ntohs(response.hdr.ancount);
- if (ancount < 1)
- return -1;
-
- data = response.buf + sizeof(HEADER);
- end = response.buf + len;
-
- /* skip the question */
- data += dn_skipname(data, end) + QFIXEDSZ;
-
- /* parse the answer(s) */
- while (--ancount >= 0 && data < end) {
-
- /* skip the domain name portion of the RR record */
- data += dn_skipname(data, end);
-
- /* get RR information */
- GETSHORT(type, data);
- data += INT16SZ; /* skipp class */
- data += INT32SZ; /* skipp TTL */
- GETSHORT(len, data);
-
- if (type == T_PTR) {
- /* we got a pointer */
- len = dn_expand(response.buf, end, data, name, sizeof(name));
- if (len <= 0) return -1;
- if (queryType == T_PTR && domainName) {
- /* we wanted a pointer */
- *domainName = malloc(strlen(name) + 1);
- strcpy(*domainName, name);
- return 0;
- }
- } else if (type == T_A) {
- /* we got an address */
- if (queryType == T_A && ipNum) {
- /* we wanted an address */
- memcpy(ipNum, data, sizeof(*ipNum));
- return 0;
- }
- }
-
- /* move ahead to next RR */
- data += len;
- }
-
- return -1;
-}
-
-char * mygethostbyaddr(char * ipnum) {
- int rc;
- char * result;
- char * strbuf;
- char * chptr;
- char * splits[4];
- int i;
-
- _res.retry = 1;
-
- strbuf = alloca(strlen(ipnum) + 1);
- strcpy(strbuf, ipnum);
-
- ipnum = alloca(strlen(strbuf) + 20);
-
- for (i = 0; i < 4; i++) {
- chptr = strbuf;
- while (*chptr && *chptr != '.')
- chptr++;
- *chptr = '\0';
-
- if (chptr - strbuf > 3) return NULL;
- splits[i] = strbuf;
- strbuf = chptr + 1;
- }
-
- sprintf(ipnum, "%s.%s.%s.%s.in-addr.arpa", splits[3], splits[2], splits[1], splits[0]);
-
- rc = do_query(ipnum, T_PTR, &result, NULL);
-
- if (rc)
- return NULL;
- else
- return result;
-}
-
-int mygethostbyname(char * name, struct in_addr * addr) {
- int rc = do_query(name, T_A, NULL, addr);
- if (!rc)
- log_message("is-at %s", inet_ntoa(*addr));
- return rc;
-}
-
-#else
-
-#error "Unsupported C library"
-
-#endif
diff --git a/mdk-stage1/dns.h b/mdk-stage1/dns.h
deleted file mode 100644
index 21d0c63ac..000000000
--- a/mdk-stage1/dns.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef H_DNS
-#define H_DNS
-
-#include <netinet/in.h>
-
-int mygethostbyname(char * name, struct in_addr * addr);
-char * mygethostbyaddr(char * ipnum);
-
-#endif
diff --git a/mdk-stage1/doc/HACKING b/mdk-stage1/doc/HACKING
deleted file mode 100644
index d196c8010..000000000
--- a/mdk-stage1/doc/HACKING
+++ /dev/null
@@ -1,31 +0,0 @@
-If you have to boot pretty often, you'll appreciate to speed the things up
-a little.
-
-Here's what we use: the GRUB feature to boot from the network using the
-DHCP protocol and the TFTP protocol.
-
-Here's the "menu.lst" to do that:
-
--=-=--
-
-timeout 0
-
-title linux
-dhcp
-tftpserver 192.168.1.17
-kernel (nd)/tftpboot/gc/vmlinuz ramdisk=32000 vga=788
-initrd (nd)/tftpboot/gc/network.rdz
-
--=-=--
-
-
-The option "tftpserver" is used to override the tftpserver address given
-as an answer by the DHCP server. That way, you'll not need to bother your
-system administrator to modify his dhcp server configuration.
-
-The directory /tftpboot seems to be the only one defaultly accepted by the
-server, and its subdirs.
-
-
-Of course, your GRUB needs to be compiled with the specific code for your
-network card; use ./configure --help in the GRUB build dir for more infos.
diff --git a/mdk-stage1/doc/README b/mdk-stage1/doc/README
deleted file mode 100644
index 6a1d92bf9..000000000
--- a/mdk-stage1/doc/README
+++ /dev/null
@@ -1,185 +0,0 @@
--------------------------------------------------------
-* Stage1 of the Mandrakelinux installation program *
--------------------------------------------------------
-
-
-[ Author ]
-
- Guillaume Cottenceau (gc at mandrakesoft.com)
-
-
-[ Copyright ]
-
- Copyright 2000, 2001, 2002 Mandrakesoft
-
- Partially inspired by Redhat stuff (install from 5.x and 7.x) copyright
- Red Hat Software, and Debian stuff (boot-floppies) copyright by their
- respective holders.
-
-
-[ Licence ]
-
- 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
- *** WARNING! ***
-
- This General Public License does not permit incorporating any part
- of this program as a library into proprietary programs.
-
-
-[ Online ]
-
- http://people.mandrakesoft.com/~gc/html/stage1.html
-
-
-[ Purpose ]
-
- This code will take the control of the computer after that Linux
- kernel booted properly, and will try to run the main installer
- (also known as "stage 2") from a series of different media
- including harddrive, cdrom, and network.
-
- Use the source, Luke.
-
-
-
-
- -=-=-- Okay, now, more details --=-=-
-
-
- [ Installing Mandrakelinux ]
-
-Per default, just insert your Mandrakelinux Installation CD into your
-CDROM tray, be sure your system BIOS is configured to boot on your CDROM,
-and that's all.
-
-If you have multiple CDROM drives and the installer can't autodetect in
-which CDROM drive is the disc, it may ask you to choose the correct drive,
-between your CDROM drives.
-
-Also, if you want to install from an SCSI CDROM, the installer should
-detect your SCSI adapter; if it fails you may have to select the right
-driver and/or supply additional parameters.
-
-
- [ Position of the problem ]
-
-The need for alternate installation methods come with more specific
-hardware configuration and/or need for frequent updates of the Installer
-software.
-
-All of these methods will require to use a special boot disk. The method
-is to download it and then to copy it "physically" to a floppy with the
-command:
-
-# dd if=<boot-disk> of=/dev/fd0
-
-Our boot disks are called "cdrom.img", "network.img", etc.
-
-
- [ Installation from CDROM ]
-
-The first situation you may encounter is an old BIOS which does not permit
-you to boot from your CDROM drive.
-
-In that case, you'll need to use the "cdrom.img" image file. The steps are
-the same as with CDROM boot, and everything should be automatic.
-
-
- [ Installation from DISK ]
-
-If you like trying occasionnally our development version, the Cooker, one
-of the easiest way is to grab a local copy of the Distribution on one of
-your local hard drives, and to install from that location.
-
-At present time, you can install from IDE or SCSI drives, from Linux
-(ext2), Windows (vfat) or Reiserfs partition.
-
-In that case, you'll need to use the "hd.img" image file. The dialogs will
-ask you to choose the DISK drive to use to install from, then the
-partition on which you copied the Distribution, then the location
-(directory) in which you copied the Distribution.
-
-
- [ Installation from NETWORK ]
-
-For convenience, you can also install from a NFS volume, from a FTP
-server, or from a HTTP server. NFS installs are maybe the fastest
-and most convenient possible, so if you need to do frequent and/or
-multiple installs, you may like this option.
-
-In that case, you'll need to use the "network.img" image file. If you have
-PCI network card(s), you'll probably have to only setup your network
-options. If not, you'll have to choose the appropriate driver(s) and/or
-optional parameters. Supported network configurations include static IP
-allocation and DHCP automatic configuration.
-
-
- [ Installation from PCMCIA ]
-
-If you want to perform an installation on your laptop that is not based on
-local IDE CDROM or DISK, nor on built-in network card, but on PCMCIA
-extension (probably a network adapter or CDROM drive), you'll need the
-"pcmcia.img" image file.
-
-PCMCIA services should automatically start and be transparent to you.
-Then, you'll follow the instructions according to your preferred
-installation method.
-
-
- [ Monitoring a stage1 session ]
-
-Linux supports virtual consoles. You can switch between them by issueing
-Ctrl+Alt+Fx key, in which 'x' is the number of the console. Here's console
-occupancy during stage1.
-
-(#1) The user-interface of the stage1 is on the first console. In case of
-newt interaction, it's provided with a neat blue and black color scheme,
-and nice widgets. In case of stdio interaction (cdrom and disk installs),
-it's more basic but still usable :-).
-
-(#2) A shell is provided on second console in some cases (you need to
-compile it with -DSPAWN_SHELL and you need to provide a valid shell in the
-initrd) and of course it's not in, in image files of Mandrakelinux
-releases because it's too much diskspace.
-
-(#3) The log is printed out on the third console. This is the location
-where you can find most valuable information, prefixed by a '*'. See
-"log.h" for calls that print things out to the log.
-
-(#4) The kernel messages are printed on the fourth console. There is a
-process forked very early in the init (the program before the stage1)
-which monitors /proc/kmsg for new kernel messages. Also, syslog stuff (the
-logs commited by the programs) should appear on the /dev/log Unix socket,
-this is also printed on this console.
-
-(#5) Former place for the stderr of insmod calls. It's not used anymore.
-
-(#6) Place where a trivial interactive communication with the stage1 is
-set up if the parameter -DSPAWN_INTERACTIVE is compiled in. Basically, you
-can set switches such as "expert" and "rescue" on the fly with this
-feature. It's implemented with a fork and a Unix pipe.
-
-
- [ Rescueing a system ]
-
-Since Mandrakelinux 7.1, we provide a rescue system through each of the
-previously described methods. You don't need a special "rescue.img" file.
-Just hit "F1" at boot time, type in "rescue", and follow the first steps
-of the installation according to the method you chose (choose
-disks/partitions for disk method, network parameters for network method,
-etc). Then, you'll end up with a workable system, very useful to rescue a
-damaged system, or do other basic actions.
diff --git a/mdk-stage1/doc/TECH-INFOS b/mdk-stage1/doc/TECH-INFOS
deleted file mode 100644
index e66c9daa5..000000000
--- a/mdk-stage1/doc/TECH-INFOS
+++ /dev/null
@@ -1,101 +0,0 @@
-
-| (*) Automatic install
-\----------------------
-
-This feature is used to replace redhat kickstart. It uses the kernel
-parameter "automatic" with keywords separated with commas and colons, on
-the following genres:
-
- automatic=method:nfs,network:static,ip:192.168.1.24,server:192.168.1.7,directory:/stable/i586
-
- automatic=method:ftp,network:dhcp,server:ftp.ciril.fr,directory:/pub/linux/mandrake-devel/cooker
-
- automatic=method:ftp,network:dhcp,server:companyserver,directory:/mdkinst,user:XXX,pass:XXX
-
- automatic=method:ftp,interface:eth1,network:dhcp,...
-
- automatic=method:ftp,network:adsl,adsluser:XXX,adslpass:XXX,...
-
- automatic=method:cdrom
-
- automatic=method:disk,disk:hdb,partition:hdb7,directory:/cooker
-
-
-The keywords correspond to each "virtual" question answered automatically,
-either from a list or from a free field.
-
-
-Keywords are:
-
-
-`method' <- (nfs,ftp,http,cdrom,disk)
-
-if nfs/ftp/http:
-
- `network' <- (static,dhcp,adsl)
-
- if multiple interfaces detected:
-
- `interface' <- (list-of-detected-interfaces)
-
- fi
-
- if static:
-
- `ip', `dns', `gateway', `netmask' (free fields)
-
- elsif adsl:
-
- `adsluser', `adslpass' (free field)
-
- fi
-
- if resolving fails:
-
- `hostname', `domain' (free fields)
-
- fi
-
- `server', `directory' (free fields)
-
- if ftp:
-
- `user', `pass' (free fields)
-
- fi
-
-fi
-
-if disk:
-
- `disk' <- (list-of-detected-disks)
-
- `partition' <- (list-of-detected-partitions)
-
- `directory' (free fields)
-
-fi
-
-
-
-You may use shorter versions of keywords (it helps reducing size of
-commandline), please find each keyword short-alias counterpart in file
-../automatic.c under the identifier named "short_aliases".
-
-This gives for example for:
-
- automatic=method:nfs,network:static,ip:192.168.1.24,server:192.168.1.7,directory:/stable/i586
-==>
- automatic=met:nfs,net:static,ip:192.168.1.24,ser:192.168.1.7,dir:/stable/i586
-
-
-
-You may specify a stage2 auto-install file, different from the
-default `auto_inst.cfg.pl' in install/, by filling the
-`bootfile' parameter of your DHCP server response.
-
-Note that if the name ends with `-IP' or `-IP.pl', IP will be
-replaced by the IP address given to the host, normalized to
-hexadecimal (that is, `192.168.100.57' would give 'C0A86439').
-
-
diff --git a/mdk-stage1/doc/UPDATEMODULES b/mdk-stage1/doc/UPDATEMODULES
deleted file mode 100644
index ceef21758..000000000
--- a/mdk-stage1/doc/UPDATEMODULES
+++ /dev/null
@@ -1,95 +0,0 @@
-This is the documentation for the "Update Modules" (Update Drivers)
-feature.
-
-This feature aims to propose new modules or replacement modules for the
-install and afterwards. This is useful when there is a firmware update for a
-given driver, an additional driver needed for something, etc.
-
-
-You must use a floppy disk with e2fs filesystem (NOT vfat/windows
-formatted). Use "mke2fs /dev/fd0" on your own box to format a floppy with
-e2fs filesystem.
-
-This disk may contain a number of kernel modules; some of them
-may replace existing modules, some of them may be added.
-This disk must contain a special file, named "to_load", on
-the root (not in a subdirectory). This file will contain a series of
-module names, with optional module options; the program will try to load
-all these modules one after another, using file on the floppy if present,
-else using file within standard module repository ("marfile" on the boot
-floppy). It can contain comments, these are strictly defined by the
-presence of a hash (#) character on column 0 of any line.
-
-This disk may also contain some update or new modules for installed kernels.
-Those modules must be placed in directory <kernel-version>. They must be
-gzipped if the installed kernel modules are gzipped.
-
-You may need to specify the "category" so that new modules are used correctly.
-For example, a scsi module should be put in category disk/scsi so that it is
-put in scsi_hostadapter and initrd.
-
-
-Here's a typical scenario:
-
-
-1. Boot the floppy (or cdrom) with the option "updatemodules"
-
- (you may do that by pressing F1 then entering "linux updatemodules")
-
-
-2. At the very beginning of the User Interface, you are asked to insert
- the Update Modules disk. Insert the Update Modules disk and press
- Enter.
-
---=----=----=----=----=----=----=----=----=--
-Our example disk contains:
-
-[root@obiwan mnt]# ll floppy/
-total 77
-drwxr-xr-x 2 root root 12288 Jul 26 12:02 lost+found/
--rw-r--r-- 1 root root 9051 Jul 26 12:43 msdos.ko
--rw-r--r-- 1 root root 13660 Jul 26 12:04 ppa.ko
--rw-r--r-- 1 root root 54 Jul 26 12:46 to_load
--rw-r--r-- 1 root root 32108 Jul 26 12:04 uhci.ko
--rw-r--r-- 1 root root 6572 Jul 26 12:04 wacom.ko
-drwxr-xr-x 4 root root 4096 Jul 26 12:04 2.6.8.1-20mdk
-drwxr-xr-x 4 root root 4096 Jul 26 12:04 2.6.8.1-20mdksmp
-[root@obiwan mnt]# cat floppy/to_load
-# Update Drivers description file
-3c59x
-# fat is a dep for msdos
-fat
-# updated msdos (handling of 9+4 filenames)
-msdos
-ppa
-# ISA network card needing options
-ne io=0x300 irq=7
-# New module [list_modules: disk/scsi]
-a320raid
-[root@obiwan mnt]# (cd floppy/2.6.8.1-20mdk ; find -type f)
-./kernel/fs/msdos/msdos.ko.gz
-./kernel/drivers/scsi/ppa.ko.gz
-./kernel/drivers/usb/host/uhci-hcd.ko.gz
-./kernel/drivers/usb/input/wacom.ko.gz
-[root@obiwan mnt]#
---=----=----=----=----=----=----=----=----=--
-
-
-3. The program reads the special file "to_load" and processes the files.
-
- a- 3c59x loaded from the marfile on the boot floppy
- b- fat loaded from the marfile on the boot floppy
- c- msdos loaded from the update modules floppy
- d- ppa loaded from the update modules floppy
- e- ne loaded from the marfile on the boot floppy
-
-
-
-!!! Beware !!!, the dependencies are not handled automatically in
-the case of load from the update modules floppy, that's why on
-our example we need to load "fat" from the standard modules
-before "msdos" from the update floppy.
-
-
-4. When system is installed, update floppy is asked again so that update
-modules for the installed kernels can be copied. Then depmod is called.
diff --git a/mdk-stage1/doc/WHY-DIETLIBC b/mdk-stage1/doc/WHY-DIETLIBC
deleted file mode 100644
index e7c526b49..000000000
--- a/mdk-stage1/doc/WHY-DIETLIBC
+++ /dev/null
@@ -1,50 +0,0 @@
-(the dietlibc is a replacement for the glibc, which aim is to produce
-smaller statically linked binaries)
-
-
-The use for dietlibc in the stage1 was clear because currently used
-install process on x86 is from a 1.44 Mbytes floppy. On this floppy we
-need to fit the kernel, modules (scsi and network access), and the code to
-do the basic things to load the stage2. The only part on which we could
-progress was the code.
-
-As always, figures demonstrate evidences. Here are the size of the
-binaries used for the cdrom, disk, network and full floppy installs, using
-newt as the UI library:
-
- - with glibc
-
--rwxr-xr-x 1 gc gc 569448 May 15 15:29 stage1-cdrom
--rwxr-xr-x 1 gc gc 572264 May 15 15:29 stage1-disk
--rwxr-xr-x 1 gc gc 624712 May 15 15:30 stage1-network
--rwxr-xr-x 1 gc gc 720360 May 15 15:29 stage1-full
-
- - with dietlibc
-
--rwxr-xr-x 1 gc gc 169332 May 15 14:26 stage1-cdrom
--rwxr-xr-x 1 gc gc 172180 May 15 14:26 stage1-disk
--rwxr-xr-x 1 gc gc 198612 May 15 14:26 stage1-network
--rwxr-xr-x 1 gc gc 251764 May 15 14:26 stage1-full
-
-
-The `stage1-full' binary has code for many things, most notably: data
-decrunching (bzlib), archive extraction (in-house format), module loading
-(insmod from busybox), PCI detection, ide and scsi handling,
-cdrom/disk/loopback mounting, DHCP client negociation (redhat+grub), NFS
-mounting (util-linux), FTP and HTTP transmission (redhat), pcmcia
-initializing (pcmcia-cs), UI interaction (slang/newt); with use of the
-dietlibc, the binary is only 250 kbytes!
-
-
-Due to the modular coding, it is also possible to choose to not use
-slang/newt as the UI, but a stdio-only UI. In that case, the binaries get
-even smaller:
-
--rwxr-xr-x 1 gc gc 104500 May 15 15:46 stage1-cdrom*
--rwxr-xr-x 1 gc gc 107348 May 15 15:46 stage1-disk*
--rwxr-xr-x 1 gc gc 133972 May 15 15:47 stage1-network*
--rwxr-xr-x 1 gc gc 187348 May 15 15:46 stage1-full*
-
-
-
-gc [Tue May 15 15:58:34 2001] \ No newline at end of file
diff --git a/mdk-stage1/doc/documented..frontend.h b/mdk-stage1/doc/documented..frontend.h
deleted file mode 100644
index 0e666d534..000000000
--- a/mdk-stage1/doc/documented..frontend.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Using high-level UI.
- *
- * These functions are frontend-independant: your program won't know each
- * `frontend' (e.g. each way to grab user input) will be used.
- *
- * Then you may link your binary against any `frontend' that implement all
- * these functions (and possibly necessary libraries).
- */
-
-
-#ifndef _FRONTEND_H_
-#define _FRONTEND_H_
-
-/* this must be called before anything else */
-void init_frontend(void);
-
-/* this must be called before exit of program */
-void finish_frontend(void);
-
-
-void info_message(char *msg, ...) __attribute__ ((format (printf, 1, 2))); /* (blocks program) */
-
-void error_message(char *msg, ...) __attribute__ ((format (printf, 1, 2))); /* (blocks program) */
-
-/* (doesn't block program)
- * (this is not necessarily stackable, e.g. only one wait_message at a time) */
-void wait_message(char *msg, ...) __attribute__ ((format (printf, 1, 2)));
-
-/* call this to finish the wait on wait_message */
-void remove_wait_message(void);
-
-/* monitor progression of something (downloading a file, etc)
- * if size of progression is unknown, use `0' */
-void init_progression(char *msg, int size);
-void update_progression(int current_size);
-void end_progression(void);
-
-enum frontend_return { RETURN_OK, RETURN_BACK, RETURN_ERROR };
-
-/* Yes == RETURN_OK No == RETURN_ERROR Back == RETURN_BACK */
-enum frontend_return ask_yes_no(char *msg);
-
-/* [elems] NULL terminated array of char*
- * [choice] address of a (unitialized) char* */
-enum frontend_return ask_from_list(char *msg, char ** elems, char ** choice);
-
-enum frontend_return ask_from_list_comments(char *msg, char ** elems, char ** elems_comments, char ** choice);
-
-/* [questions] NULL terminated array of char*
- * [answers] address of a (unitialized) char**, will contain a non-NULL terminated array of char*
- * [callback_func] function called at most when the answers change; it can examine the array of char* and assign some new char* */
-enum frontend_return ask_from_entries(char *msg, char ** questions, char *** answers, int entry_size, void (*callback_func)(char ** strings));
-
-#endif
diff --git a/mdk-stage1/frontend-common.c b/mdk-stage1/frontend-common.c
deleted file mode 100644
index a66db457a..000000000
--- a/mdk-stage1/frontend-common.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include <probing.h>
-
-#include "frontend.h"
-
-
-void info_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- vinfo_message(msg, args);
- va_end(args);
-}
-
-void wait_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- vwait_message(msg, args);
- va_end(args);
-}
-
-void error_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- verror_message(msg, args);
- va_end(args);
-}
diff --git a/mdk-stage1/frontend.h b/mdk-stage1/frontend.h
deleted file mode 100644
index 1737ee7e7..000000000
--- a/mdk-stage1/frontend.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * For doc please read doc/documented..frontend.h
- */
-
-#ifndef _FRONTEND_H_
-#define _FRONTEND_H_
-
-#include <stdarg.h>
-
-/* 'unused' atttribute, gcc specific and just to turn down some warnings. */
-#if defined __GNUC__
-#define UNUSED __attribute__((unused))
-#else
-#define UNUSED
-#endif
-
-enum return_type { RETURN_OK, RETURN_BACK, RETURN_ERROR };
-
-void init_frontend(char * welcome_msg);
-void finish_frontend(void);
-
-void error_message(char *msg, ...) __attribute__ ((format (printf, 1, 2))); /* blocking */
-void info_message(char *msg, ...) __attribute__ ((format (printf, 1, 2))); /* blocking */
-void wait_message(char *msg, ...) __attribute__ ((format (printf, 1, 2))); /* non-blocking */
-void remove_wait_message(void);
-
-void init_progression_raw(char *msg, int size);
-void update_progression_raw(int current_size);
-void end_progression_raw(void);
-
-#ifdef ENABLE_BOOTSPLASH
-void init_progression(char *msg, int size);
-void update_progression(int current_size);
-void end_progression(void);
-#else
-#define init_progression init_progression_raw
-#define update_progression update_progression_raw
-#define end_progression end_progression_raw
-#endif
-
-enum return_type ask_yes_no(char *msg);
-enum return_type ask_from_list(char *msg, char ** elems, char ** choice);
-enum return_type ask_from_list_comments(char *msg, char ** elems, char ** elems_comments, char ** choice);
-enum return_type ask_from_entries(char *msg, char ** questions, char *** answers, int entry_size, void (*callback_func)(char ** strings));
-
-void suspend_to_console(void);
-void resume_from_suspend(void);
-
-void verror_message(char *msg, va_list ap);
-void vinfo_message(char *msg, va_list ap);
-void vwait_message(char *msg, va_list ap);
-
-#endif
diff --git a/mdk-stage1/init-libc-headers.h b/mdk-stage1/init-libc-headers.h
deleted file mode 100644
index 55d6f10b3..000000000
--- a/mdk-stage1/init-libc-headers.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/mount.h>
-#include <linux/un.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <linux/unistd.h>
-#include <sys/select.h>
-#include <sys/ioctl.h>
-
-#ifndef SOCK_STREAM
-#define SOCK_STREAM 1
-#endif
-
-static inline _syscall3(int, syslog, int, type, char *, bufp, int, len);
-static inline _syscall3(int, reboot, int, magic, int, magic2, int, flag);
diff --git a/mdk-stage1/init.c b/mdk-stage1/init.c
deleted file mode 100644
index f5a46010b..000000000
--- a/mdk-stage1/init.c
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef INIT_HEADERS
-#include "init-libc-headers.h"
-#else
-#include INIT_HEADERS
-#endif
-
-#include "config-stage1.h"
-#include <linux/cdrom.h>
-
-#if defined(__powerpc__)
-#define TIOCSCTTY 0x540E
-#endif
-
-char * env[] = {
- "PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sbin:/mnt/usr/sbin:/mnt/bin:/mnt/usr/bin",
- "LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/lib:/mnt/usr/lib:/usr/X11R6/lib:/mnt/usr/X11R6/lib"
-#if defined(__x86_64__) || defined(__ppc64__)
- ":/lib64:/usr/lib64:/usr/X11R6/lib64:/mnt/lib64:/mnt/usr/lib64:/mnt/usr/X11R6/lib64"
-#endif
- ,
- "HOME=/",
- "TERM=linux",
- "TERMINFO=/etc/terminfo",
- NULL
-};
-
-
-/*
- * this needs to handle the following cases:
- *
- * 1) run from a CD root filesystem
- * 2) run from a read only nfs rooted filesystem
- * 3) run from a floppy
- * 4) run from a floppy that's been loaded into a ramdisk
- *
- */
-
-int testing = 0;
-int klog_pid;
-
-
-void fatal_error(char *msg)
-{
- printf("FATAL ERROR IN INIT: %s\n\nI can't recover from this, please reboot manually and send bugreport.\n", msg);
- select(0, NULL, NULL, NULL, NULL);
-}
-
-void print_error(char *msg)
-{
- printf("E: %s\n", msg);
-}
-
-void print_warning(char *msg)
-{
- printf("W: %s\n", msg);
-}
-
-void print_int_init(int fd, int i)
-{
- char buf[10];
- char * chptr = buf + 9;
- int j = 0;
-
- if (i < 0)
- {
- write(1, "-", 1);
- i = -1 * i;
- }
-
- while (i)
- {
- *chptr-- = '0' + (i % 10);
- j++;
- i = i / 10;
- }
-
- write(fd, chptr + 1, j);
-}
-
-void print_str_init(int fd, char * string)
-{
- write(fd, string, strlen(string));
-}
-
-/* fork to:
- * (1) watch /proc/kmsg and copy the stuff to /dev/tty4
- * (2) listens to /dev/log and copy also this stuff (log from programs)
- */
-void doklog()
-{
- fd_set readset, unixs;
- int in, out, i;
- int log;
- int s;
- int sock = -1;
- struct sockaddr_un sockaddr;
- char buf[1024];
- int readfd;
-
- /* open kernel message logger */
- in = open("/proc/kmsg", O_RDONLY,0);
- if (in < 0) {
- print_error("could not open /proc/kmsg");
- return;
- }
-
- mkdir("/tmp", 0755);
- if ((log = open("/tmp/syslog", O_WRONLY | O_CREAT | O_APPEND, 0644)) < 0) {
- print_error("error opening /tmp/syslog");
- sleep(5);
- return;
- }
-
- if ((klog_pid = fork())) {
- close(in);
- close(log);
- return;
- } else {
- close(0);
- close(1);
- close(2);
- }
-
- out = open("/dev/tty4", O_WRONLY, 0);
- if (out < 0)
- print_warning("couldn't open tty for syslog -- still using /tmp/syslog\n");
-
- /* now open the syslog socket */
-// ############# LINUX 2.4 /dev/log IS BUGGED! --> apparently the syslogs can't reach me, and it's full up after a while
-// sockaddr.sun_family = AF_UNIX;
-// strncpy(sockaddr.sun_path, "/dev/log", UNIX_PATH_MAX);
-// sock = socket(AF_UNIX, SOCK_STREAM, 0);
-// if (sock < 0) {
-// printf("error creating socket: %d\n", errno);
-// sleep(5);
-// }
-//
-// print_str_init(log, "] got socket\n");
-// if (bind(sock, (struct sockaddr *) &sockaddr, sizeof(sockaddr.sun_family) + strlen(sockaddr.sun_path))) {
-// print_str_init(log, "] bind error: ");
-// print_int_init(log, errno);
-// print_str_init(log, "\n");
-// sleep(// }
-//
-// print_str_init(log, "] bound socket\n");
-// chmod("/dev/log", 0666);
-// if (listen(sock, 5)) {
-// print_str_init(log, "] listen error: ");
-// print_int_init(log, errno);
-// print_str_init(log, "\n");
-// sleep(5);
-// }
-
- /* disable on-console syslog output */
- syslog(8, NULL, 1);
-
- print_str_init(log, "] kernel/system logger ok\n");
- FD_ZERO(&unixs);
- while (1) {
- memcpy(&readset, &unixs, sizeof(unixs));
-
- if (sock >= 0)
- FD_SET(sock, &readset);
- FD_SET(in, &readset);
-
- i = select(20, &readset, NULL, NULL, NULL);
- if (i <= 0)
- continue;
-
- /* has /proc/kmsg things to tell us? */
- if (FD_ISSET(in, &readset)) {
- i = read(in, buf, sizeof(buf));
- if (i > 0) {
- if (out >= 0)
- write(out, buf, i);
- write(log, buf, i);
- }
- }
-
- /* examine some fd's in the hope to find some syslog outputs from programs */
- for (readfd = 0; readfd < 20; ++readfd) {
- if (FD_ISSET(readfd, &readset) && FD_ISSET(readfd, &unixs)) {
- i = read(readfd, buf, sizeof(buf));
- if (i > 0) {
- /* grep out the output of RPM telling that it installed/removed some packages */
- if (!strstr(buf, "mdk installed") && !strstr(buf, "mdk removed")) {
- if (out >= 0)
- write(out, buf, i);
- write(log, buf, i);
- }
- } else if (i == 0) {
- /* socket closed */
- close(readfd);
- FD_CLR(readfd, &unixs);
- }
- }
- }
-
- /* the socket has moved, new stuff to do */
- if (sock >= 0 && FD_ISSET(sock, &readset)) {
- s = sizeof(sockaddr);
- readfd = accept(sock, (struct sockaddr *) &sockaddr, &s);
- if (readfd < 0) {
- char * msg_error = "] error in accept\n";
- if (out >= 0)
- write(out, msg_error, strlen(msg_error));
- write(log, msg_error, strlen(msg_error));
- close(sock);
- sock = -1;
- }
- else
- FD_SET(readfd, &unixs);
- }
- }
-}
-
-
-#define LOOP_CLR_FD 0x4C01
-
-void del_loops(void)
-{
- char loopdev[] = "/dev/loop0";
- char chloopdev[] = "/dev/chloop0";
- int i;
- for (i=0; i<8; i++) {
- int fd;
- loopdev[9] = '0' + i;
- fd = open(loopdev, O_RDONLY, 0);
- if (fd > 0) {
- if (!ioctl(fd, LOOP_CLR_FD, 0))
- printf("\t%s\n", loopdev);
- close(fd);
- }
- chloopdev[11] = '0' + i;
- fd = open(chloopdev, O_RDONLY, 0);
- if (fd > 0) {
- if (!ioctl(fd, LOOP_CLR_FD, 0))
- printf("\t%s\n", chloopdev);
- close(fd);
- }
- }
-}
-
-struct filesystem
-{
- char * dev;
- char * name;
- char * fs;
- int mounted;
-};
-
-char* strcat(register char* s,register const char* t)
-{
- char *dest=s;
- s+=strlen(s);
- for (;;) {
- if (!(*s = *t)) break; ++s; ++t;
- }
- return dest;
-}
-
-/* attempt to unmount all filesystems in /proc/mounts */
-void unmount_filesystems(void)
-{
- int fd, size;
- char buf[65535]; /* this should be big enough */
- char *p;
- struct filesystem fs[500];
- int numfs = 0;
- int i, nb;
- int disallow_eject = 0;
-
- printf("unmounting filesystems...\n");
-
- fd = open("/proc/mounts", O_RDONLY, 0);
- if (fd < 1) {
- print_error("failed to open /proc/mounts");
- sleep(2);
- return;
- }
-
- size = read(fd, buf, sizeof(buf) - 1);
- buf[size] = '\0';
-
- close(fd);
-
- p = buf;
- while (*p) {
- fs[numfs].mounted = 1;
- fs[numfs].dev = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- fs[numfs].name = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- fs[numfs].fs = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- while (*p != '\n') p++;
- p++;
- if (!strcmp(fs[numfs].fs, "nfs"))
- disallow_eject = 1;
- if (strcmp(fs[numfs].name, "/")
- && !strstr(fs[numfs].dev, "ram")
- && strcmp(fs[numfs].name, "/dev")
- && strcmp(fs[numfs].name, "/sys")
- && strncmp(fs[numfs].name, "/proc", 5))
- numfs++;
- }
-
- /* Pixel's ultra-optimized sorting algorithm:
- multiple passes trying to umount everything until nothing moves
- anymore (a.k.a holy shotgun method) */
- do {
- nb = 0;
- for (i = 0; i < numfs; i++) {
- /*printf("trying with %s\n", fs[i].name);*/
- del_loops();
- if (fs[i].mounted && umount(fs[i].name) == 0) {
- printf("\t%s\n", fs[i].name);
- fs[i].mounted = 0;
- nb++;
- }
- }
- } while (nb);
-
- for (i = nb = 0; i < numfs; i++)
- if (fs[i].mounted) {
-#ifdef MANDRAKE_MOVE
- if (!strcmp(fs[i].name, "/cdrom") || !strcmp(fs[i].name, "/image_always"))
- continue;
-#endif
- printf("\tumount failed: %s\n", fs[i].name);
- if (strcmp(fs[i].fs, "ext3") == 0) nb++; /* don't count not-ext3 umount failed */
- }
-
-#ifdef MANDRAKE_MOVE
- if (!disallow_eject) {
- fd = open("/proc/fs/supermount/subfs", O_RDONLY, 0);
- if (fd > 0) {
- char devices[100][100];
- int i = 0;
- char * ptr1, * ptr2;
- size = read(fd, buf, sizeof(buf) - 1);
- buf[size] = '\0';
- close(fd);
- ptr1 = buf;
- ptr2 = buf;
- while (*ptr1 && *ptr2) {
- char * ptrf = ptr1;
- while (*ptr2 && *ptr2 != '\n')
- ptr2++;
- while (*ptrf && *ptrf != ' ')
- ptrf++;
- if (*ptrf)
- *ptrf = '\0';
- strcpy(devices[i], ptr1);
- i++;
- if (*ptr2)
- ptr2++;
- ptr1 = ptr2;
- }
- while (i >= 1) {
- i--;
- strcat(devices[i], " release force");
- fd = open("/proc/fs/supermount/subfs", O_WRONLY, 0);
- write(fd, devices[i], strlen(devices[i]));
- close(fd);
- }
- }
- fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK, 0);
- if (fd > 0) {
- ioctl(fd, CDROM_LOCKDOOR, 0);
- close(fd);
- }
- fd = open("/dev/cdrom", O_RDONLY|O_NONBLOCK, 0);
- if (fd > 0) {
- ioctl(fd, CDROMEJECT, 0);
- close(fd);
- }
- }
-#endif
-
- if (nb) {
- printf("failed to umount some filesystems\n");
- select(0, NULL, NULL, NULL, NULL);
- }
-}
-
-#define BMAGIC_HARD 0x89ABCDEF
-#define BMAGIC_SOFT 0
-#define BMAGIC_REBOOT 0x01234567
-#define BMAGIC_HALT 0xCDEF0123
-#define BMAGIC_POWEROFF 0x4321FEDC
-int reboot_magic = BMAGIC_REBOOT;
-
-int in_reboot(void)
-{
- int fd;
- if ((fd = open("/var/run/rebootctl", O_RDONLY, 0)) > 0) {
- char buf[100];
- int i = read(fd, buf, sizeof(buf));
- close(fd);
- if (strstr(buf, "halt"))
- reboot_magic = BMAGIC_POWEROFF;
- return i > 0;
- }
- return 0;
-}
-
-int exit_value_proceed = 66;
-int exit_value_restart = 0x35;
-
-int main(int argc, char **argv)
-{
- pid_t installpid, childpid;
- int wait_status;
- int fd;
- int abnormal_termination = 0;
-
- if (argc > 1 && argv[1][0] >= '0' && argv[1][0] <= '9') {
- printf("This is no normal init, sorry.\n"
- "Call `reboot' or `halt' directly.\n");
- return 0;
- }
-
- if (!testing) {
- /* turn off screen blanking */
- printf("\033[9;0]");
- printf("\033[8]");
- }
- else
- printf("*** TESTING MODE *** (pid is %d)\n", getpid());
-
-
- if (!testing) {
- mkdir("/proc", 0755);
- if (mount("/proc", "/proc", "proc", 0, NULL))
- fatal_error("Unable to mount proc filesystem");
- }
-
-
- /* ignore Control-C and keyboard stop signals */
- signal(SIGINT, SIG_IGN);
- signal(SIGTSTP, SIG_IGN);
-
-#ifdef MANDRAKE_MOVE
- /* disallow Ctrl Alt Del to reboot */
- reboot(0xfee1dead, 672274793, BMAGIC_SOFT);
-#endif
-
- if (!testing) {
- fd = open("/dev/console", O_RDWR, 0);
- if (fd < 0)
- fatal_error("failed to open /dev/console");
-
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
- close(fd);
- }
-
-
- /* I set me up as session leader (probably not necessary?) */
- setsid();
-// if (ioctl(0, TIOCSCTTY, NULL))
-// print_error("could not set new controlling tty");
-
- if (!testing) {
- char my_hostname[] = "localhost";
- sethostname(my_hostname, sizeof(my_hostname));
- /* the default domainname (as of 2.0.35) is "(none)", which confuses
- glibc */
- setdomainname("", 0);
- }
-
- if (!testing)
- doklog();
-
- /* Go into normal init mode - keep going, and then do a orderly shutdown
- when:
-
- 1) install exits
- 2) we receive a SIGHUP
- */
-
- do {
- if (!(installpid = fork())) {
- /* child */
- char * child_argv[2];
- child_argv[0] = BINARY;
- child_argv[1] = NULL;
-
- execve(child_argv[0], child_argv, env);
- printf("error in exec of %s :-( [%d]\n", BINARY, errno);
- return 0;
- }
-
- do {
- childpid = wait4(-1, &wait_status, 0, NULL);
- } while (childpid != installpid);
- } while (WIFEXITED(wait_status) && WEXITSTATUS(wait_status) == exit_value_restart);
-
- /* allow Ctrl Alt Del to reboot */
- reboot(0xfee1dead, 672274793, BMAGIC_HARD);
-
- if (in_reboot()) {
- // any exitcode is valid if we're in_reboot
- } else if (WIFEXITED(wait_status) && WEXITSTATUS(wait_status) == exit_value_proceed) {
- kill(klog_pid, 9);
- printf("proceeding, please wait...\n");
- return 0;
- } else if (!WIFEXITED(wait_status) || WEXITSTATUS(wait_status) != 0) {
- printf("exited abnormally :-( ");
- if (WIFSIGNALED(wait_status))
- printf("-- received signal %d", WTERMSIG(wait_status));
- printf("\n");
- abnormal_termination = 1;
- }
-
- if (!abnormal_termination) {
- int i;
- for (i=0; i<50; i++)
- printf("\n"); /* cleanup startkde messages */
- }
-
- if (testing)
- return 0;
-
- sync(); sync();
- sleep(2);
-
- printf("sending termination signals...");
- kill(-1, 15);
- sleep(2);
- printf("done\n");
-
- printf("sending kill signals...");
- kill(-1, 9);
- sleep(2);
- printf("done\n");
-
- unmount_filesystems();
-
- sync(); sync();
-
- if (!abnormal_termination) {
- if (reboot_magic == BMAGIC_REBOOT) {
-#ifdef DEBUG
- printf("automatic reboot in 10 seconds\n");
- sleep(10);
-#endif
- reboot(0xfee1dead, 672274793, reboot_magic);
- } else {
- printf("you may safely poweroff your computer now\n");
- }
- } else {
- printf("you may safely reboot or halt your system\n");
- }
-
- select(0, NULL, NULL, NULL, NULL);
- return 0;
-}
diff --git a/mdk-stage1/insmod-busybox/.cvsignore b/mdk-stage1/insmod-busybox/.cvsignore
deleted file mode 100644
index 26a2c08c9..000000000
--- a/mdk-stage1/insmod-busybox/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-insmod
-insmod-DIET
diff --git a/mdk-stage1/insmod-busybox/Config.h b/mdk-stage1/insmod-busybox/Config.h
deleted file mode 100644
index f02ac0253..000000000
--- a/mdk-stage1/insmod-busybox/Config.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* vi: set sw=4 ts=4: */
-// This file defines the feature set to be compiled into busybox.
-// When you turn things off here, they won't be compiled in at all.
-//
-//// This file is parsed by sed. You MUST use single line comments.
-// i.e. //#define BB_BLAH
-//
-//
-// BusyBox Applications
-#define BB_INSMOD
-// End of Applications List
-//
-//
-//
-// ---------------------------------------------------------
-// This is where feature definitions go. Generally speaking,
-// turning this stuff off makes things a bit smaller (and less
-// pretty/useful).
-//
-//
-//
-// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
-// thereby eliminating the need for the /proc filesystem and thereby saving
-// lots and lots memory for more important things. You can not use this and
-// USE_PROCFS at the same time... NOTE: If you enable this feature, you
-// _must_ have patched the kernel to include the devps patch that is included
-// in the busybox/kernel-patches directory. You will also need to create some
-// device special files in /dev on your embedded system:
-// mknod /dev/mtab c 10 22
-// mknod /dev/ps c 10 21
-// I emailed Linus and this patch will not be going into the stock kernel.
-//#define BB_FEATURE_USE_DEVPS_PATCH
-//
-// enable features that use the /proc filesystem (apps that
-// break without this will tell you on compile)...
-// You can't use this and BB_FEATURE_USE_DEVPS_PATCH
-// at the same time...
-#define BB_FEATURE_USE_PROCFS
-
-//
-// Enable tab completion in the shell (not yet
-// working very well -- so don't turn this on)
-//#define BB_FEATURE_SH_TAB_COMPLETION
-//
-//Turn on extra fbset options
-//#define BB_FEATURE_FBSET_FANCY
-//
-//Turn on fbset readmode support
-//#define BB_FEATURE_FBSET_READMODE
-//
-// You must enable one or both of these features
-// Support insmod/lsmod/rmmod for post 2.1 kernels
-#define BB_FEATURE_NEW_MODULE_INTERFACE
-//
-// Support insmod/lsmod/rmmod for pre 2.1 kernels
-//#define BB_FEATURE_OLD_MODULE_INTERFACE
-//
-// Support module version checking
-//#define BB_FEATURE_INSMOD_VERSION_CHECKING
-//
-// Support for Minix filesystem, version 2
-//#define BB_FEATURE_MINIX2
-//
-//
-// Enable busybox --install [-s]
-// to create links (or symlinks) for all the commands that are
-// compiled into the binary. (needs /proc filesystem)
-// #define BB_FEATURE_INSTALLER
-//
-// Clean up all memory before exiting -- usually not needed
-// as the OS can clean up... Don't enable this unless you
-// have a really good reason for cleaning things up manually.
-//#define BB_FEATURE_CLEAN_UP
-//
-// End of Features List
-//
-//
-//
-//
-//
-//
-//---------------------------------------------------
-// Nothing beyond this point should ever be touched by
-// mere mortals so leave this stuff alone.
-//
-#ifdef BB_FEATURE_MOUNT_MTAB_SUPPORT
-#define BB_MTAB
-#endif
-//
-#if defined BB_FEATURE_SH_COMMAND_EDITING && defined BB_SH
-#define BB_CMDEDIT
-#endif
-//
-#ifdef BB_KILLALL
-#ifndef BB_KILL
-#define BB_KILL
-#endif
-#endif
-//
-#ifdef BB_FEATURE_LINUXRC
-#ifndef BB_INIT
-#define BB_INIT
-#endif
-#define BB_LINUXRC
-#endif
-//
-#ifdef BB_GZIP
-#ifndef BB_GUNZIP
-#define BB_GUNZIP
-#endif
-#endif
-//
-#if defined BB_MOUNT && defined BB_FEATURE_NFSMOUNT
-#define BB_NFSMOUNT
-#endif
-//
-#if defined BB_FEATURE_SH_COMMAND_EDITING
-#ifndef BB_FEATURE_USE_TERMIOS
-#define BB_FEATURE_USE_TERMIOS
-#endif
-#endif
-//
-#if defined BB_FEATURE_AUTOWIDTH
-#ifndef BB_FEATURE_USE_TERMIOS
-#define BB_FEATURE_USE_TERMIOS
-#endif
-#endif
-//
-#if defined BB_INSMOD
-#if ! defined BB_FEATURE_NEW_MODULE_INTERFACE && ! defined BB_FEATURE_OLD_MODULE_INTERFACE
-#define BB_FEATURE_NEW_MODULE_INTERFACE
-#endif
-#endif
diff --git a/mdk-stage1/insmod-busybox/Makefile b/mdk-stage1/insmod-busybox/Makefile
deleted file mode 100644
index 236874f96..000000000
--- a/mdk-stage1/insmod-busybox/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
- #******************************************************************************
- #
- # insmod from busybox (i386 only)
- #
- # $Id$
- #
- # Copyright (C) 1999,2000 by Lineo, inc.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-all: insmod libinsmod.a
-
-clean:
- rm -f *.o insmod libinsmod.a
-
-
-FLAGS = -c -Wall -Os -fomit-frame-pointer -D_GNU_SOURCE -DBB_VER='"0.60.5"' -DBB_BT='"2003.04.16-15:25+0000"'
-
-
-insmod: insmod-frontend.o insmod.o utility-standalone.o
- $(DIET) gcc -o $@ $^
- $(STRIPCMD) $@
-
-libinsmod.a: insmod.o utility.o
- ar cru $@ $^
- ranlib $@
-
-insmod-frontend.o: insmod-frontend.c busybox.h
- $(DIET) gcc $(FLAGS) $(INCLUDES) insmod-frontend.c
-
-utility.o: utility.c busybox.h
- $(DIET) gcc $(FLAGS) $(INCLUDES) utility.c
-
-utility-standalone.o: utility.c busybox.h
- $(DIET) gcc $(FLAGS) $(INCLUDES) -o $@ -D_STANDALONE_ utility.c
-
-insmod.o: insmod.c busybox.h
- $(DIET) gcc $(FLAGS) $(INCLUDES) insmod.c
diff --git a/mdk-stage1/insmod-busybox/README b/mdk-stage1/insmod-busybox/README
deleted file mode 100644
index 0ae697e92..000000000
--- a/mdk-stage1/insmod-busybox/README
+++ /dev/null
@@ -1,8 +0,0 @@
-This insmod code comes from busybox-0.60.5
-
-<http://www.busybox.net/>
-
-Suported architectures: x86, x86-64, ppc, arm, sh3, sh4, m68k, mips.
-
-
-gb
diff --git a/mdk-stage1/insmod-busybox/busybox.h b/mdk-stage1/insmod-busybox/busybox.h
deleted file mode 100644
index 9e6052fce..000000000
--- a/mdk-stage1/insmod-busybox/busybox.h
+++ /dev/null
@@ -1,477 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Busybox main internal header file
- *
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
- * Permission has been granted to redistribute this code under the GPL.
- *
- */
-#ifndef _BB_INTERNAL_H_
-#define _BB_INTERNAL_H_ 1
-
-#include "Config.h"
-
-#ifdef DMALLOC
-#include "dmalloc.h"
-#endif
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-/* for the _syscall() macros */
-#include <sys/syscall.h>
-#include <linux/unistd.h>
-#include <linux/kernel.h>
-
-/* Some useful definitions */
-#define FALSE ((int) 1)
-#define TRUE ((int) 0)
-
-/* for mtab.c */
-#define MTAB_GETMOUNTPT '1'
-#define MTAB_GETDEVICE '2'
-
-#define BUF_SIZE 8192
-#define EXPAND_ALLOC 1024
-
-
-#define isBlank(ch) (((ch) == ' ') || ((ch) == '\t'))
-#define isDecimal(ch) (((ch) >= '0') && ((ch) <= '9'))
-#define isOctal(ch) (((ch) >= '0') && ((ch) <= '7'))
-#define isWildCard(ch) (((ch) == '*') || ((ch) == '?') || ((ch) == '['))
-
-/* Macros for min/max. */
-#ifndef MIN
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#endif
-
-#ifndef MAX
-#define MAX(a,b) (((a)>(b))?(a):(b))
-#endif
-
-
-/* I don't like nested includes, but the string and io functions are used
- * too often
- */
-#include <stdio.h>
-#if !defined(NO_STRING_H) || defined(STDC_HEADERS)
-# include <string.h>
-# if !defined(STDC_HEADERS) && !defined(NO_MEMORY_H) && !defined(__GNUC__)
-# include <memory.h>
-# endif
-# define memzero(s, n) memset ((void *)(s), 0, (n))
-#else
-# include <strings.h>
-# define strchr index
-# define strrchr rindex
-# define memcpy(d, s, n) bcopy((s), (d), (n))
-# define memcmp(s1, s2, n) bcmp((s1), (s2), (n))
-# define memzero(s, n) bzero((s), (n))
-#endif
-
-
-enum Location {
- _BB_DIR_ROOT = 0,
- _BB_DIR_BIN,
- _BB_DIR_SBIN,
- _BB_DIR_USR_BIN,
- _BB_DIR_USR_SBIN
-};
-
-struct BB_applet {
- const char* name;
- int (*main)(int argc, char** argv);
- enum Location location;
- const char* usage;
-};
-/* From busybox.c */
-extern const struct BB_applet applets[];
-
-extern int ar_main(int argc, char **argv);
-extern int basename_main(int argc, char **argv);
-extern int bogomips_main(int argc, char **argv);
-extern int busybox_main(int argc, char** argv);
-extern int cat_main(int argc, char** argv);
-extern int chmod_chown_chgrp_main(int argc, char** argv);
-extern int chroot_main(int argc, char** argv);
-extern int chvt_main(int argc, char** argv);
-extern int clear_main(int argc, char** argv);
-extern int cp_mv_main(int argc, char** argv);
-extern int cut_main(int argc, char** argv);
-extern int date_main(int argc, char** argv);
-extern int dc_main(int argc, char** argv);
-extern int dd_main(int argc, char** argv);
-extern int dirname_main(int argc, char** argv);
-extern int deallocvt_main(int argc, char** argv);
-extern int df_main(int argc, char** argv);
-extern int dmesg_main(int argc, char** argv);
-extern int dos2unix_main(int argc, char** argv);
-extern int du_main(int argc, char** argv);
-extern int dumpkmap_main(int argc, char** argv);
-extern int dutmp_main(int argc, char** argv);
-extern int echo_main(int argc, char** argv);
-extern int expr_main(int argc, char** argv);
-extern int false_main(int argc, char** argv);
-extern int fbset_main(int argc, char** argv);
-extern int fdisk_main(int argc, char** argv);
-extern int fdflush_main(int argc, char **argv);
-extern int fsck_minix_main(int argc, char **argv);
-extern int find_main(int argc, char** argv);
-extern int free_main(int argc, char** argv);
-extern int freeramdisk_main(int argc, char** argv);
-extern int getopt_main(int argc, char** argv);
-extern int grep_main(int argc, char** argv);
-extern int gunzip_main (int argc, char** argv);
-extern int gzip_main(int argc, char** argv);
-extern int halt_main(int argc, char** argv);
-extern int head_main(int argc, char** argv);
-extern int hostid_main(int argc, char** argv);
-extern int hostname_main(int argc, char** argv);
-extern int id_main(int argc, char** argv);
-extern int init_main(int argc, char** argv);
-extern int insmod_main(int argc, char** argv);
-extern int kill_main(int argc, char** argv);
-extern int length_main(int argc, char** argv);
-extern int ln_main(int argc, char** argv);
-extern int loadacm_main(int argc, char** argv);
-extern int loadfont_main(int argc, char** argv);
-extern int loadkmap_main(int argc, char** argv);
-extern int losetup_main(int argc, char** argv);
-extern int logger_main(int argc, char **argv);
-extern int logname_main(int argc, char **argv);
-extern int ls_main(int argc, char** argv);
-extern int lsmod_main(int argc, char** argv);
-extern int makedevs_main(int argc, char** argv);
-extern int md5sum_main(int argc, char** argv);
-extern int mkdir_main(int argc, char** argv);
-extern int mkfifo_main(int argc, char **argv);
-extern int mkfs_minix_main(int argc, char **argv);
-extern int mknod_main(int argc, char** argv);
-extern int mkswap_main(int argc, char** argv);
-extern int mktemp_main(int argc, char **argv);
-extern int nc_main(int argc, char** argv);
-extern int more_main(int argc, char** argv);
-extern int mount_main(int argc, char** argv);
-extern int mt_main(int argc, char** argv);
-extern int nslookup_main(int argc, char **argv);
-extern int ping_main(int argc, char **argv);
-extern int poweroff_main(int argc, char **argv);
-extern int printf_main(int argc, char** argv);
-extern int ps_main(int argc, char** argv);
-extern int pwd_main(int argc, char** argv);
-extern int rdate_main(int argc, char** argv);
-extern int reboot_main(int argc, char** argv);
-extern int renice_main(int argc, char** argv);
-extern int reset_main(int argc, char** argv);
-extern int rm_main(int argc, char** argv);
-extern int rmdir_main(int argc, char **argv);
-extern int rmmod_main(int argc, char** argv);
-extern int sed_main(int argc, char** argv);
-extern int sfdisk_main(int argc, char** argv);
-extern int setkeycodes_main(int argc, char** argv);
-extern int shell_main(int argc, char** argv);
-extern int sleep_main(int argc, char** argv);
-extern int sort_main(int argc, char** argv);
-extern int swap_on_off_main(int argc, char** argv);
-extern int sync_main(int argc, char** argv);
-extern int syslogd_main(int argc, char **argv);
-extern int tail_main(int argc, char** argv);
-extern int tar_main(int argc, char** argv);
-extern int tee_main(int argc, char** argv);
-extern int test_main(int argc, char** argv);
-extern int telnet_main(int argc, char** argv);
-extern int touch_main(int argc, char** argv);
-extern int tr_main(int argc, char** argv);
-extern int true_main(int argc, char** argv);
-extern int tput_main(int argc, char** argv);
-extern int tryopen_main(int argc, char** argv);
-extern int tty_main(int argc, char** argv);
-extern int umount_main(int argc, char** argv);
-extern int uname_main(int argc, char** argv);
-extern int uniq_main(int argc, char** argv);
-extern int unix2dos_main(int argc, char** argv);
-extern int unrpm_main(int argc, char** argv);
-extern int update_main(int argc, char** argv);
-extern int uptime_main(int argc, char** argv);
-extern int usleep_main(int argc, char** argv);
-extern int uuencode_main(int argc, char** argv);
-extern int uudecode_main(int argc, char** argv);
-extern int wc_main(int argc, char** argv);
-extern int wget_main(int argc, char** argv);
-extern int which_main(int argc, char** argv);
-extern int whoami_main(int argc, char** argv);
-extern int xargs_main(int argc, char** argv);
-extern int yes_main(int argc, char** argv);
-
-extern const char ar_usage[];
-extern const char basename_usage[];
-extern const char cat_usage[];
-extern const char chgrp_usage[];
-extern const char chmod_usage[];
-extern const char chown_usage[];
-extern const char chroot_usage[];
-extern const char chvt_usage[];
-extern const char clear_usage[];
-extern const char cp_usage[];
-extern const char cut_usage[];
-extern const char date_usage[];
-extern const char dc_usage[];
-extern const char dd_usage[];
-extern const char deallocvt_usage[];
-extern const char df_usage[];
-extern const char dirname_usage[];
-extern const char dmesg_usage[];
-extern const char dos2unix_usage[];
-extern const char du_usage[];
-extern const char dumpkmap_usage[];
-extern const char dutmp_usage[];
-extern const char echo_usage[];
-extern const char expr_usage[];
-extern const char false_usage[];
-extern const char fdflush_usage[];
-extern const char find_usage[];
-extern const char free_usage[];
-extern const char freeramdisk_usage[];
-extern const char fsck_minix_usage[];
-extern const char grep_usage[];
-extern const char gunzip_usage[];
-extern const char gzip_usage[];
-extern const char halt_usage[];
-extern const char head_usage[];
-extern const char hostid_usage[];
-extern const char hostname_usage[];
-extern const char id_usage[];
-extern const char insmod_usage[];
-extern const char kill_usage[];
-extern const char killall_usage[];
-extern const char length_usage[];
-extern const char ln_usage[];
-extern const char loadacm_usage[];
-extern const char loadfont_usage[];
-extern const char loadkmap_usage[];
-extern const char logger_usage[];
-extern const char logname_usage[];
-extern const char ls_usage[];
-extern const char lsmod_usage[];
-extern const char makedevs_usage[];
-extern const char md5sum_usage[];
-extern const char mkdir_usage[];
-extern const char mkfifo_usage[];
-extern const char mkfs_minix_usage[];
-extern const char mknod_usage[];
-extern const char mkswap_usage[];
-extern const char mktemp_usage[];
-extern const char more_usage[];
-extern const char mount_usage[];
-extern const char mt_usage[];
-extern const char mv_usage[];
-extern const char nc_usage[];
-extern const char nslookup_usage[];
-extern const char ping_usage[];
-extern const char poweroff_usage[];
-extern const char printf_usage[];
-extern const char ps_usage[];
-extern const char pwd_usage[];
-extern const char rdate_usage[];
-extern const char reboot_usage[];
-extern const char renice_usage[];
-extern const char reset_usage[];
-extern const char rm_usage[];
-extern const char rmdir_usage[];
-extern const char rmmod_usage[];
-extern const char sed_usage[];
-extern const char setkeycodes_usage[];
-extern const char shell_usage[];
-extern const char sleep_usage[];
-extern const char sort_usage[];
-extern const char swapoff_usage[];
-extern const char swapon_usage[];
-extern const char sync_usage[];
-extern const char syslogd_usage[];
-extern const char tail_usage[];
-extern const char tar_usage[];
-extern const char tee_usage[];
-extern const char telnet_usage[];
-extern const char test_usage[];
-extern const char touch_usage[];
-extern const char tr_usage[];
-extern const char true_usage[];
-extern const char tty_usage[];
-extern const char umount_usage[];
-extern const char uname_usage[];
-extern const char uniq_usage[];
-extern const char unix2dos_usage[];
-extern const char unrpm_usage[];
-extern const char update_usage[];
-extern const char uptime_usage[];
-extern const char usleep_usage[];
-extern const char uudecode_usage[];
-extern const char uuencode_usage[];
-extern const char wc_usage[];
-extern const char wget_usage[];
-extern const char which_usage[];
-extern const char whoami_usage[];
-extern const char xargs_usage[];
-extern const char yes_usage[];
-
-extern const char *applet_name;
-
-extern void usage(const char *usage) __attribute__ ((noreturn));
-extern void errorMsg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
-extern void logperror(char *s);
-extern void fatalError(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
-
-const char *modeString(int mode);
-const char *timeString(time_t timeVal);
-int isDirectory(const char *name, const int followLinks, struct stat *statBuf);
-int isDevice(const char *name);
-
-typedef struct ino_dev_hash_bucket_struct {
- struct ino_dev_hash_bucket_struct *next;
- ino_t ino;
- dev_t dev;
- char name[1];
-} ino_dev_hashtable_bucket_t;
-int is_in_ino_dev_hashtable(const struct stat *statbuf, char **name);
-void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name);
-void reset_ino_dev_hashtable(void);
-
-int copyFile(const char *srcName, const char *destName,
- int setModes, int followLinks, int forceFlag);
-int copySubFile(int srcFd, int dstFd, size_t remaining);
-char *buildName(const char *dirName, const char *fileName);
-int makeString(int argc, const char **argv, char *buf, int bufLen);
-char *getChunk(int size);
-char *chunkstrdup(const char *str);
-void freeChunks(void);
-int fullWrite(int fd, const char *buf, int len);
-int fullRead(int fd, char *buf, int len);
-int recursiveAction(const char *fileName, int recurse, int followLinks, int depthFirst,
- int (*fileAction) (const char *fileName, struct stat* statbuf, void* userData),
- int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData),
- void* userData);
-
-extern int createPath (const char *name, int mode);
-extern int parse_mode( const char* s, mode_t* theMode);
-
-extern int get_kernel_revision(void);
-
-extern int get_console_fd(char* tty_name);
-extern struct mntent *findMountPoint(const char *name, const char *table);
-extern void write_mtab(char* blockDevice, char* directory,
- char* filesystemType, long flags, char* string_flags);
-extern void erase_mtab(const char * name);
-extern void mtab_read(void);
-extern char *mtab_first(void **iter);
-extern char *mtab_next(void **iter);
-extern char *mtab_getinfo(const char *match, const char which);
-extern int check_wildcard_match(const char* text, const char* pattern);
-extern long getNum (const char *cp);
-extern pid_t* findPidByName( char* pidName);
-extern int find_real_root_device_name(char* name);
-extern char *get_line_from_file(FILE *file);
-extern void print_file(FILE *file);
-extern int print_file_by_name(char *filename);
-extern char process_escape_sequence(char **ptr);
-extern char *get_last_path_component(char *path);
-// extern void xregcomp(regex_t *preg, const char *regex, int cflags);
-
-#ifndef DMALLOC
-extern void *xmalloc (size_t size);
-extern void *xrealloc(void *old, size_t size);
-extern void *xcalloc(size_t nmemb, size_t size);
-extern char *xstrdup (const char *s);
-#endif
-extern char *xstrndup (const char *s, int n);
-
-
-/* These parse entries in /etc/passwd and /etc/group. This is desirable
- * for BusyBox since we want to avoid using the glibc NSS stuff, which
- * increases target size and is often not needed embedded systems. */
-extern long my_getpwnam(char *name);
-extern long my_getgrnam(char *name);
-extern void my_getpwuid(char *name, long uid);
-extern void my_getgrgid(char *group, long gid);
-extern long my_getpwnamegid(char *name);
-
-extern int device_open(char *device, int mode);
-
-#if defined BB_FEATURE_MOUNT_LOOP
-extern int del_loop(const char *device);
-extern int set_loop(const char *device, const char *file, int offset, int *loopro);
-extern char *find_unused_loop_device (void);
-#endif
-
-
-#if (__GLIBC__ < 2) && (defined BB_SYSLOGD || defined BB_INIT)
-extern int vdprintf(int d, const char *format, va_list ap);
-#endif
-
-#if defined BB_NFSMOUNT
-int nfsmount(const char *spec, const char *node, int *flags,
- char **extra_opts, char **mount_opts, int running_bg);
-#endif
-
-#ifndef RB_POWER_OFF
-/* Stop system and switch power off if possible. */
-#define RB_POWER_OFF 0x4321fedc
-#endif
-
-/* Include our own copy of struct sysinfo to avoid binary compatability
- * problems with Linux 2.4, which changed things. Grumble, grumble. */
-//struct sysinfo {
-// long uptime; /* Seconds since boot */
-// unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
-// unsigned long totalram; /* Total usable main memory size */
-// unsigned long freeram; /* Available memory size */
-// unsigned long sharedram; /* Amount of shared memory */
-// unsigned long bufferram; /* Memory used by buffers */
-// unsigned long totalswap; /* Total swap space size */
-// unsigned long freeswap; /* swap space still available */
-// unsigned short procs; /* Number of current processes */
-// unsigned long totalhigh; /* Total high memory size */
-// unsigned long freehigh; /* Available high memory size */
-// unsigned int mem_unit; /* Memory unit size in bytes */
-// char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
-//};
-extern int sysinfo (struct sysinfo* info);
-
-/* Bit map related macros -- libc5 doens't provide these... sigh. */
-#ifndef setbit
-#define NBBY CHAR_BIT
-#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
-#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
-#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
-#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
-#endif
-
-/* Merge from busybox 0.60.5 */
-#define error_msg errorMsg
-#define perror_msg(FORMAT,...) error_msg(FORMAT ": %s", ## __VA_ARGS__, strerror(errno))
-#define recursive_action recursiveAction
-
-#define safe_strncpy(DST, SRC, SIZE) do { \
- (DST)[SIZE-1] = '\0'; \
- return strncpy((DST), (SRC),(SIZE)-1); \
-} while (0)
-
-#endif /* _BB_INTERNAL_H_ */
diff --git a/mdk-stage1/insmod-busybox/insmod-frontend.c b/mdk-stage1/insmod-busybox/insmod-frontend.c
deleted file mode 100644
index 963a96893..000000000
--- a/mdk-stage1/insmod-busybox/insmod-frontend.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdio.h>
-
-
-int insmod_main( int argc, char **argv);
-
-int main( int argc, char **argv)
-{
- printf("Using insmod provided by busybox.\n");
- return insmod_main(argc, argv);
-}
diff --git a/mdk-stage1/insmod-busybox/insmod.c b/mdk-stage1/insmod-busybox/insmod.c
deleted file mode 100644
index e6e5b8f5f..000000000
--- a/mdk-stage1/insmod-busybox/insmod.c
+++ /dev/null
@@ -1,3758 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Mini insmod implementation for busybox
- *
- * This version of insmod supports x86, ARM, SH3/4, powerpc, m68k,
- * MIPS, and x86-64.
- *
- *
- * Copyright (C) 1999,2000 by Lineo, inc. and Erik Andersen
- * Copyright (C) 1999-2002 Erik Andersen <andersee@debian.org>
- * Written by Erik Andersen and Ron Alder <alder@lineo.com>
- *
- * Modified by Bryan Rittmeyer <bryan@ixiacom.com> to support SH4
- * and (theoretically) SH3. I have only tested SH4 in little endian mode.
- *
- * Modified by Alcove, Julien Gaulmin <julien.gaulmin@alcove.fr> and
- * Nicolas Ferre <nicolas.ferre@alcove.fr> to support ARM7TDMI. Only
- * very minor changes required to also work with StrongArm and presumably
- * all ARM based systems.
- *
- * Magnus Damm <damm@opensource.se> 22-May-2002.
- * The plt and got code are now using the same structs.
- * Added generic linked list code to fully support PowerPC.
- * Replaced the mess in arch_apply_relocation() with architecture blocks.
- * The arch_create_got() function got cleaned up with architecture blocks.
- * These blocks should be easy maintain and sync with obj_xxx.c in modutils.
- *
- * Magnus Damm <damm@opensource.se> added PowerPC support 20-Feb-2001.
- * PowerPC specific code stolen from modutils-2.3.16,
- * written by Paul Mackerras, Copyright 1996, 1997 Linux International.
- * I've only tested the code on mpc8xx platforms in big-endian mode.
- * Did some cleanup and added BB_USE_xxx_ENTRIES...
- *
- * Quinn Jensen <jensenq@lineo.com> added MIPS support 23-Feb-2001.
- * based on modutils-2.4.2
- * MIPS specific support for Elf loading and relocation.
- * Copyright 1996, 1997 Linux International.
- * Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>
- *
- * Based almost entirely on the Linux modutils-2.3.11 implementation.
- * Copyright 1996, 1997 Linux International.
- * New implementation contributed by Richard Henderson <rth@tamu.edu>
- * Based on original work by Bjorn Ekwall <bj0rn@blox.se>
- * Restructured (and partly rewritten) by:
- * Björn Ekwall <bj0rn@blox.se> February 1999
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include "../insmod.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <errno.h>
-#include <unistd.h>
-#include <dirent.h>
-#include <ctype.h>
-#include <assert.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/utsname.h>
-#include "busybox.h"
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-# undef BB_FEATURE_OLD_MODULE_INTERFACE
-# define new_sys_init_module init_module
-#else
-# define old_sys_init_module init_module
-#endif
-
-/* FIXME: Remove once we switched to dietlibc 0.22 */
-#if 0
-
-#undef new_sys_init_module
-#define __NR_new_sys_init_module __NR_init_module
-struct new_module;
-_syscall2(int, new_sys_init_module, const char *, name,
- const struct new_module *, info)
-
-#undef old_sys_init_module
-#define __NR_old_sys_init_module __NR_init_module
-struct old_mod_routines;
-struct old_symbol_table;
-_syscall5(int, old_sys_init_module, const char *, name, char *, code,
- unsigned, codesize, struct old_mod_routines *, routines,
- struct old_symbol_table *, symtab)
-
-_syscall1(int, delete_module, const char *, name)
-
-#if defined(__i386__) || defined(__m68k__) || defined(__arm__)
-/* Jump through hoops to fixup error return codes */
-#define __NR__create_module __NR_create_module
-static inline _syscall2(long, _create_module, const char *, name, size_t,
- size)
-unsigned long create_module(const char *name, size_t size)
-{
- long ret = _create_module(name, size);
-
- if (ret == -1 && errno > 125) {
- ret = -errno;
- errno = 0;
- }
- return ret;
-}
-#else
-_syscall2(unsigned long, create_module, const char *, name, size_t, size)
-#endif
-
-#endif
-
-#ifdef BB_FEATURE_INSMOD_LOADINKMEM
-#define LOADBITS 0
-#else
-#define LOADBITS 1
-#endif
-
-#if defined(__arm__)
-#define BB_USE_PLT_ENTRIES
-#define BB_PLT_ENTRY_SIZE 8
-#define BB_USE_GOT_ENTRIES
-#define BB_GOT_ENTRY_SIZE 8
-#define BB_USE_SINGLE
-
-#define MATCH_MACHINE(x) (x == EM_ARM)
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
-#define ELFCLASSM ELFCLASS32
-#endif
-
-#if defined(__i386__)
-#define BB_USE_GOT_ENTRIES
-#define BB_GOT_ENTRY_SIZE 4
-#define BB_USE_SINGLE
-
-#ifndef EM_486
-#define MATCH_MACHINE(x) (x == EM_386)
-#else
-#define MATCH_MACHINE(x) (x == EM_386 || x == EM_486)
-#endif
-
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
-#define ELFCLASSM ELFCLASS32
-#endif
-
-#if defined(__x86_64__)
-#define BB_USE_GOT_ENTRIES
-#define BB_GOT_ENTRY_SIZE 8
-#define BB_USE_SINGLE
-
-#define MATCH_MACHINE(x) (x == EM_X86_64)
-
-#define SHT_RELM SHT_RELA
-#define Elf64_RelM Elf64_Rela
-#define ELFCLASSM ELFCLASS64
-#endif
-
-#if defined(__mc68000__)
-#define BB_USE_GOT_ENTRIES
-#define BB_GOT_ENTRY_SIZE 4
-#define BB_USE_SINGLE
-
-#define MATCH_MACHINE(x) (x == EM_68K)
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
-#endif
-
-#if defined(__mips__)
-/* Account for ELF spec changes. */
-#ifndef EM_MIPS_RS3_LE
-#ifdef EM_MIPS_RS4_BE
-#define EM_MIPS_RS3_LE EM_MIPS_RS4_BE
-#else
-#define EM_MIPS_RS3_LE 10
-#endif
-#endif /* !EM_MIPS_RS3_LE */
-
-#define MATCH_MACHINE(x) (x == EM_MIPS || x == EM_MIPS_RS3_LE)
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
-#define ELFCLASSM ELFCLASS32
-#define ARCHDATAM "__dbe_table"
-#endif
-
-#if defined(__powerpc__)
-#define BB_USE_PLT_ENTRIES
-#define BB_PLT_ENTRY_SIZE 16
-#define BB_USE_PLT_LIST
-#define BB_LIST_ARCHTYPE ElfW(Addr)
-#define BB_USE_LIST
-
-#define MATCH_MACHINE(x) (x == EM_PPC)
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
-#define ELFCLASSM ELFCLASS32
-#define ARCHDATAM "__ftr_fixup"
-#endif
-
-#if defined(__sh__)
-#define BB_USE_GOT_ENTRIES
-#define BB_GOT_ENTRY_SIZE 4
-#define BB_USE_SINGLE
-
-#define MATCH_MACHINE(x) (x == EM_SH)
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
-#define ELFCLASSM ELFCLASS32
-
-/* the SH changes have only been tested on the SH4 in =little endian= mode */
-/* I'm not sure about big endian, so let's warn: */
-
-#if (defined(__SH4__) || defined(__SH3__)) && defined(__BIG_ENDIAN__)
-#error insmod.c may require changes for use on big endian SH4/SH3
-#endif
-
-/* it may or may not work on the SH1/SH2... So let's error on those
- also */
-#if (defined(__sh__) && (!(defined(__SH3__) || defined(__SH4__))))
-#error insmod.c may require changes for non-SH3/SH4 use
-#endif
-#endif
-
-#ifndef SHT_RELM
-#error Sorry, but insmod.c does not yet support this architecture...
-#endif
-
-//----------------------------------------------------------------------------
-//--------modutils module.h, lines 45-242
-//----------------------------------------------------------------------------
-
-/* Definitions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-#ifndef MODUTILS_MODULE_H
-#define MODUTILS_MODULE_H
-
-/* This file contains the structures used by the 2.0 and 2.1 kernels.
- We do not use the kernel headers directly because we do not wish
- to be dependant on a particular kernel version to compile insmod. */
-
-
-/*======================================================================*/
-/* The structures used by Linux 2.0. */
-
-/* The symbol format used by get_kernel_syms(2). */
-struct old_kernel_sym
-{
- unsigned long value;
- char name[60];
-};
-
-struct old_module_ref
-{
- unsigned long module; /* kernel addresses */
- unsigned long next;
-};
-
-struct old_module_symbol
-{
- unsigned long addr;
- unsigned long name;
-};
-
-struct old_symbol_table
-{
- int size; /* total, including string table!!! */
- int n_symbols;
- int n_refs;
- struct old_module_symbol symbol[0]; /* actual size defined by n_symbols */
- struct old_module_ref ref[0]; /* actual size defined by n_refs */
-};
-
-struct old_mod_routines
-{
- unsigned long init;
- unsigned long cleanup;
-};
-
-struct old_module
-{
- unsigned long next;
- unsigned long ref; /* the list of modules that refer to me */
- unsigned long symtab;
- unsigned long name;
- int size; /* size of module in pages */
- unsigned long addr; /* address of module */
- int state;
- unsigned long cleanup; /* cleanup routine */
-};
-
-/* Sent to init_module(2) or'ed into the code size parameter. */
-static const int OLD_MOD_AUTOCLEAN = 0x40000000; /* big enough, but no sign problems... */
-
-int get_kernel_syms(struct old_kernel_sym *);
-int old_sys_init_module(const char *name, char *code, unsigned codesize,
- struct old_mod_routines *, struct old_symbol_table *);
-
-/*======================================================================*/
-/* For sizeof() which are related to the module platform and not to the
- environment isnmod is running in, use sizeof_xx instead of sizeof(xx). */
-
-#define tgt_sizeof_char sizeof(char)
-#define tgt_sizeof_short sizeof(short)
-#define tgt_sizeof_int sizeof(int)
-#define tgt_sizeof_long sizeof(long)
-#define tgt_sizeof_char_p sizeof(char *)
-#define tgt_sizeof_void_p sizeof(void *)
-#define tgt_long long
-
-#if defined(__sparc__) && !defined(__sparc_v9__) && defined(ARCH_sparc64)
-#undef tgt_sizeof_long
-#undef tgt_sizeof_char_p
-#undef tgt_sizeof_void_p
-#undef tgt_long
-static const int tgt_sizeof_long = 8;
-static const int tgt_sizeof_char_p = 8;
-static const int tgt_sizeof_void_p = 8;
-#define tgt_long long long
-#endif
-
-/*======================================================================*/
-/* The structures used in Linux 2.1. */
-
-/* Note: new_module_symbol does not use tgt_long intentionally */
-struct new_module_symbol
-{
- unsigned long value;
- unsigned long name;
-};
-
-struct new_module_persist;
-
-struct new_module_ref
-{
- unsigned tgt_long dep; /* kernel addresses */
- unsigned tgt_long ref;
- unsigned tgt_long next_ref;
-};
-
-struct new_module
-{
- unsigned tgt_long size_of_struct; /* == sizeof(module) */
- unsigned tgt_long next;
- unsigned tgt_long name;
- unsigned tgt_long size;
-
- tgt_long usecount;
- unsigned tgt_long flags; /* AUTOCLEAN et al */
-
- unsigned nsyms;
- unsigned ndeps;
-
- unsigned tgt_long syms;
- unsigned tgt_long deps;
- unsigned tgt_long refs;
- unsigned tgt_long init;
- unsigned tgt_long cleanup;
- unsigned tgt_long ex_table_start;
- unsigned tgt_long ex_table_end;
-#ifdef __alpha__
- unsigned tgt_long gp;
-#endif
- /* Everything after here is extension. */
- unsigned tgt_long persist_start;
- unsigned tgt_long persist_end;
- unsigned tgt_long can_unload;
- unsigned tgt_long runsize;
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
- const char *kallsyms_start; /* All symbols for kernel debugging */
- const char *kallsyms_end;
- const char *archdata_start; /* arch specific data for module */
- const char *archdata_end;
- const char *kernel_data; /* Reserved for kernel internal use */
-#endif
-};
-
-#ifdef ARCHDATAM
-#define ARCHDATA_SEC_NAME ARCHDATAM
-#else
-#define ARCHDATA_SEC_NAME "__archdata"
-#endif
-#define KALLSYMS_SEC_NAME "__kallsyms"
-
-
-struct new_module_info
-{
- unsigned long addr;
- unsigned long size;
- unsigned long flags;
- long usecount;
-};
-
-/* Bits of module.flags. */
-static const int NEW_MOD_RUNNING = 1;
-static const int NEW_MOD_DELETED = 2;
-static const int NEW_MOD_AUTOCLEAN = 4;
-static const int NEW_MOD_VISITED = 8;
-static const int NEW_MOD_USED_ONCE = 16;
-
-int new_sys_init_module(const char *name, const struct new_module *);
-int query_module(const char *name, int which, void *buf, size_t bufsize,
- size_t *ret);
-
-/* Values for query_module's which. */
-
-static const int QM_MODULES = 1;
-static const int QM_DEPS = 2;
-static const int QM_REFS = 3;
-static const int QM_SYMBOLS = 4;
-static const int QM_INFO = 5;
-
-/*======================================================================*/
-/* The system calls unchanged between 2.0 and 2.1. */
-
-unsigned long create_module(const char *, size_t);
-int delete_module(const char *);
-
-
-#endif /* module.h */
-
-//----------------------------------------------------------------------------
-//--------end of modutils module.h
-//----------------------------------------------------------------------------
-
-
-
-//----------------------------------------------------------------------------
-//--------modutils obj.h, lines 253-462
-//----------------------------------------------------------------------------
-
-/* Elf object file loading and relocation routines.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-#ifndef MODUTILS_OBJ_H
-static const int MODUTILS_OBJ_H = 1;
-
-/* The relocatable object is manipulated using elfin types. */
-
-#include <stdio.h>
-#include <elf.h>
-#include <endian.h>
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define ELFDATAM ELFDATA2LSB
-#elif __BYTE_ORDER == __BIG_ENDIAN
-#define ELFDATAM ELFDATA2MSB
-#endif
-
-#ifndef ElfW
-# if ELFCLASSM == ELFCLASS32
-# define ElfW(x) Elf32_ ## x
-# define ELFW(x) ELF32_ ## x
-# else
-# define ElfW(x) Elf64_ ## x
-# define ELFW(x) ELF64_ ## x
-# endif
-#endif
-
-/* For some reason this is missing from libc5. */
-#ifndef ELF32_ST_INFO
-# define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#endif
-
-#ifndef ELF64_ST_INFO
-# define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#endif
-
-struct obj_string_patch;
-struct obj_symbol_patch;
-
-struct obj_section
-{
- ElfW(Shdr) header;
- const char *name;
- char *contents;
- struct obj_section *load_next;
- int idx;
-};
-
-struct obj_symbol
-{
- struct obj_symbol *next; /* hash table link */
- const char *name;
- unsigned long value;
- unsigned long size;
- int secidx; /* the defining section index/module */
- int info;
- int ksymidx; /* for export to the kernel symtab */
- int referenced; /* actually used in the link */
-};
-
-/* Hardcode the hash table size. We shouldn't be needing so many
- symbols that we begin to degrade performance, and we get a big win
- by giving the compiler a constant divisor. */
-
-#define HASH_BUCKETS 521
-
-struct obj_file
-{
- ElfW(Ehdr) header;
- ElfW(Addr) baseaddr;
- struct obj_section **sections;
- struct obj_section *load_order;
- struct obj_section **load_order_search_start;
- struct obj_string_patch *string_patches;
- struct obj_symbol_patch *symbol_patches;
- int (*symbol_cmp)(const char *, const char *);
- unsigned long (*symbol_hash)(const char *);
- unsigned long local_symtab_size;
- struct obj_symbol **local_symtab;
- struct obj_symbol *symtab[HASH_BUCKETS];
-};
-
-enum obj_reloc
-{
- obj_reloc_ok,
- obj_reloc_overflow,
- obj_reloc_dangerous,
- obj_reloc_unhandled
-};
-
-struct obj_string_patch
-{
- struct obj_string_patch *next;
- int reloc_secidx;
- ElfW(Addr) reloc_offset;
- ElfW(Addr) string_offset;
-};
-
-struct obj_symbol_patch
-{
- struct obj_symbol_patch *next;
- int reloc_secidx;
- ElfW(Addr) reloc_offset;
- struct obj_symbol *sym;
-};
-
-
-/* Generic object manipulation routines. */
-
-static unsigned long obj_elf_hash(const char *);
-
-static unsigned long obj_elf_hash_n(const char *, unsigned long len);
-
-static struct obj_symbol *obj_find_symbol (struct obj_file *f,
- const char *name);
-
-static ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
- struct obj_symbol *sym);
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
-static void obj_set_symbol_compare(struct obj_file *f,
- int (*cmp)(const char *, const char *),
- unsigned long (*hash)(const char *));
-#endif
-
-static struct obj_section *obj_find_section (struct obj_file *f,
- const char *name);
-
-static void obj_insert_section_load_order (struct obj_file *f,
- struct obj_section *sec);
-
-static struct obj_section *obj_create_alloced_section (struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size);
-
-static struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size);
-
-static void *obj_extend_section (struct obj_section *sec, unsigned long more);
-
-static int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- const char *string);
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-static int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- struct obj_symbol *sym);
-#endif
-
-static int obj_check_undefineds(struct obj_file *f);
-
-static void obj_allocate_commons(struct obj_file *f);
-
-static unsigned long obj_load_size (struct obj_file *f);
-
-static int obj_relocate (struct obj_file *f, ElfW(Addr) base);
-
-static struct obj_file *obj_load(FILE *f, int loadprogbits);
-
-static int obj_create_image (struct obj_file *f, char *image);
-
-/* Architecture specific manipulation routines. */
-
-static struct obj_file *arch_new_file (void);
-
-static struct obj_section *arch_new_section (void);
-
-static struct obj_symbol *arch_new_symbol (void);
-
-static enum obj_reloc arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- ElfW(RelM) *rel, ElfW(Addr) value);
-
-static void arch_create_got (struct obj_file *f);
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-static int arch_init_module (struct obj_file *f, struct new_module *);
-#endif
-
-#endif /* obj.h */
-//----------------------------------------------------------------------------
-//--------end of modutils obj.h
-//----------------------------------------------------------------------------
-
-
-
-
-
-#define _PATH_MODULES "/lib/modules"
-static const int STRVERSIONLEN = 32;
-
-/*======================================================================*/
-
-static const int flag_force_load = 1;
-static const int flag_autoclean = 0;
-static const int flag_quiet = 0;
-static const int flag_export = 1;
-
-
-/*======================================================================*/
-
-#if defined(BB_USE_LIST)
-
-struct arch_list_entry
-{
- struct arch_list_entry *next;
- BB_LIST_ARCHTYPE addend;
- int offset;
- int inited : 1;
-};
-
-#endif
-
-#if defined(BB_USE_SINGLE)
-
-struct arch_single_entry
-{
- int offset;
- int inited : 1;
- int allocated : 1;
-};
-
-#endif
-
-#if defined(__mips__)
-struct mips_hi16
-{
- struct mips_hi16 *next;
- Elf32_Addr *addr;
- Elf32_Addr value;
-};
-#endif
-
-struct arch_file {
- struct obj_file root;
-#if defined(BB_USE_PLT_ENTRIES)
- struct obj_section *plt;
-#endif
-#if defined(BB_USE_GOT_ENTRIES)
- struct obj_section *got;
-#endif
-#if defined(__mips__)
- struct mips_hi16 *mips_hi16_list;
-#endif
-};
-
-struct arch_symbol {
- struct obj_symbol root;
-#if defined(BB_USE_PLT_ENTRIES)
-#if defined(BB_USE_PLT_LIST)
- struct arch_list_entry *pltent;
-#else
- struct arch_single_entry pltent;
-#endif
-#endif
-#if defined(BB_USE_GOT_ENTRIES)
- struct arch_single_entry gotent;
-#endif
-};
-
-
-struct external_module {
- const char *name;
- ElfW(Addr) addr;
- int used;
- size_t nsyms;
- struct new_module_symbol *syms;
-};
-
-static struct new_module_symbol *ksyms;
-static size_t nksyms;
-
-static struct external_module *ext_modules;
-static int n_ext_modules;
-static int n_ext_modules_used;
-extern int delete_module(const char *);
-
-#ifndef FILENAME_MAX
-#define FILENAME_MAX 4095
-#endif
-
-static char m_filename[FILENAME_MAX];
-static char m_fullName[FILENAME_MAX];
-
-
-
-/*======================================================================*/
-
-static struct obj_file *arch_new_file(void)
-{
- struct arch_file *f;
- f = xmalloc(sizeof(*f));
-
- memset(f, 0, sizeof(*f));
-
- return &f->root;
-}
-
-static struct obj_section *arch_new_section(void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-static struct obj_symbol *arch_new_symbol(void)
-{
- struct arch_symbol *sym;
- sym = xmalloc(sizeof(*sym));
-
- memset(sym, 0, sizeof(*sym));
-
- return &sym->root;
-}
-
-static enum obj_reloc
-arch_apply_relocation(struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- ElfW(RelM) *rel, ElfW(Addr) v)
-{
- struct arch_file *ifile = (struct arch_file *) f;
- enum obj_reloc ret = obj_reloc_ok;
- ElfW(Addr) *loc = (ElfW(Addr) *) (targsec->contents + rel->r_offset);
- ElfW(Addr) dot = targsec->header.sh_addr + rel->r_offset;
-#if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
- struct arch_symbol *isym = (struct arch_symbol *) sym;
-#endif
-#if defined(BB_USE_GOT_ENTRIES)
- ElfW(Addr) got = ifile->got ? ifile->got->header.sh_addr : 0;
-#endif
-#if defined(BB_USE_PLT_ENTRIES)
- ElfW(Addr) plt = ifile->plt ? ifile->plt->header.sh_addr : 0;
- unsigned long *ip;
-#if defined(BB_USE_PLT_LIST)
- struct arch_list_entry *pe;
-#else
- struct arch_single_entry *pe;
-#endif
-#endif
-
- switch (ELF32_R_TYPE(rel->r_info)) {
-
-#if defined(__arm__)
- case R_ARM_NONE:
- break;
-
- case R_ARM_ABS32:
- *loc += v;
- break;
-
- case R_ARM_GOT32:
- goto bb_use_got;
-
- case R_ARM_GOTPC:
- /* relative reloc, always to _GLOBAL_OFFSET_TABLE_
- * (which is .got) similar to branch,
- * but is full 32 bits relative */
-
- assert(got);
- *loc += got - dot;
- break;
-
- case R_ARM_PC24:
- case R_ARM_PLT32:
- goto bb_use_plt;
-
- case R_ARM_GOTOFF: /* address relative to the got */
- assert(got);
- *loc += v - got;
- break;
-
-#elif defined(__i386__)
-
- case R_386_NONE:
- break;
-
- case R_386_32:
- *loc += v;
- break;
-
- case R_386_PLT32:
- case R_386_PC32:
- *loc += v - dot;
- break;
-
- case R_386_GLOB_DAT:
- case R_386_JMP_SLOT:
- *loc = v;
- break;
-
- case R_386_RELATIVE:
- *loc += f->baseaddr;
- break;
-
- case R_386_GOTPC:
- assert(got != 0);
- *loc += got - dot;
- break;
-
- case R_386_GOT32:
- goto bb_use_got;
-
- case R_386_GOTOFF:
- assert(got != 0);
- *loc += v - got;
- break;
-
-#elif defined(__x86_64__)
-
- case R_X86_64_NONE:
- break;
-
- case R_X86_64_64:
- *loc += v;
- break;
-
- case R_X86_64_32:
- *(unsigned int *) loc += v;
- break;
-
- case R_X86_64_32S:
- *(signed int *) loc += v;
- break;
-
- case R_X86_64_16:
- *(unsigned short *) loc += v;
- break;
-
- case R_X86_64_8:
- *(unsigned char *) loc += v;
- break;
-
- case R_X86_64_PC32:
- *(unsigned int *) loc += v - dot;
- break;
-
- case R_X86_64_PC16:
- *(unsigned short *) loc += v - dot;
- break;
-
- case R_X86_64_PC8:
- *(unsigned char *) loc += v - dot;
- break;
-
- case R_X86_64_GLOB_DAT:
- case R_X86_64_JUMP_SLOT:
- *loc = v;
- break;
-
- case R_X86_64_RELATIVE:
- *loc += f->baseaddr;
- break;
-
- case R_X86_64_GOT32:
- case R_X86_64_GOTPCREL:
- goto bb_use_got;
-
-#elif defined(__mc68000__)
-
- case R_68K_NONE:
- break;
-
- case R_68K_32:
- *loc += v;
- break;
-
- case R_68K_8:
- if (v > 0xff) {
- ret = obj_reloc_overflow;
- }
- *(char *)loc = v;
- break;
-
- case R_68K_16:
- if (v > 0xffff) {
- ret = obj_reloc_overflow;
- }
- *(short *)loc = v;
- break;
-
- case R_68K_PC8:
- v -= dot;
- if ((Elf32_Sword)v > 0x7f ||
- (Elf32_Sword)v < -(Elf32_Sword)0x80) {
- ret = obj_reloc_overflow;
- }
- *(char *)loc = v;
- break;
-
- case R_68K_PC16:
- v -= dot;
- if ((Elf32_Sword)v > 0x7fff ||
- (Elf32_Sword)v < -(Elf32_Sword)0x8000) {
- ret = obj_reloc_overflow;
- }
- *(short *)loc = v;
- break;
-
- case R_68K_PC32:
- *(int *)loc = v - dot;
- break;
-
- case R_68K_GLOB_DAT:
- case R_68K_JMP_SLOT:
- *loc = v;
- break;
-
- case R_68K_RELATIVE:
- *(int *)loc += f->baseaddr;
- break;
-
- case R_68K_GOT32:
- goto bb_use_got;
-
- case R_68K_GOTOFF:
- assert(got != 0);
- *loc += v - got;
- break;
-
-#elif defined(__mips__)
-
- case R_MIPS_NONE:
- break;
-
- case R_MIPS_32:
- *loc += v;
- break;
-
- case R_MIPS_26:
- if (v % 4)
- ret = obj_reloc_dangerous;
- if ((v & 0xf0000000) != ((dot + 4) & 0xf0000000))
- ret = obj_reloc_overflow;
- *loc =
- (*loc & ~0x03ffffff) | ((*loc + (v >> 2)) &
- 0x03ffffff);
- break;
-
- case R_MIPS_HI16:
- {
- struct mips_hi16 *n;
-
- /* We cannot relocate this one now because we don't know the value
- of the carry we need to add. Save the information, and let LO16
- do the actual relocation. */
- n = (struct mips_hi16 *) xmalloc(sizeof *n);
- n->addr = loc;
- n->value = v;
- n->next = ifile->mips_hi16_list;
- ifile->mips_hi16_list = n;
- break;
- }
-
- case R_MIPS_LO16:
- {
- unsigned long insnlo = *loc;
- Elf32_Addr val, vallo;
-
- /* Sign extend the addend we extract from the lo insn. */
- vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
-
- if (ifile->mips_hi16_list != NULL) {
- struct mips_hi16 *l;
-
- l = ifile->mips_hi16_list;
- while (l != NULL) {
- struct mips_hi16 *next;
- unsigned long insn;
-
- /* The value for the HI16 had best be the same. */
- assert(v == l->value);
-
- /* Do the HI16 relocation. Note that we actually don't
- need to know anything about the LO16 itself, except where
- to find the low 16 bits of the addend needed by the LO16. */
- insn = *l->addr;
- val =
- ((insn & 0xffff) << 16) +
- vallo;
- val += v;
-
- /* Account for the sign extension that will happen in the
- low bits. */
- val =
- ((val >> 16) +
- ((val & 0x8000) !=
- 0)) & 0xffff;
-
- insn = (insn & ~0xffff) | val;
- *l->addr = insn;
-
- next = l->next;
- free(l);
- l = next;
- }
-
- ifile->mips_hi16_list = NULL;
- }
-
- /* Ok, we're done with the HI16 relocs. Now deal with the LO16. */
- val = v + vallo;
- insnlo = (insnlo & ~0xffff) | (val & 0xffff);
- *loc = insnlo;
- break;
- }
-
-#elif defined(__powerpc__)
-
- case R_PPC_ADDR16_HA:
- *(unsigned short *)loc = (v + 0x8000) >> 16;
- break;
-
- case R_PPC_ADDR16_HI:
- *(unsigned short *)loc = v >> 16;
- break;
-
- case R_PPC_ADDR16_LO:
- *(unsigned short *)loc = v;
- break;
-
- case R_PPC_REL24:
- goto bb_use_plt;
-
- case R_PPC_REL32:
- *loc = v - dot;
- break;
-
- case R_PPC_ADDR32:
- *loc = v;
- break;
-
-#elif defined(__sh__)
-
- case R_SH_NONE:
- break;
-
- case R_SH_DIR32:
- *loc += v;
- break;
-
- case R_SH_REL32:
- *loc += v - dot;
- break;
-
- case R_SH_PLT32:
- *loc = v - dot;
- break;
-
- case R_SH_GLOB_DAT:
- case R_SH_JMP_SLOT:
- *loc = v;
- break;
-
- case R_SH_RELATIVE:
- *loc = f->baseaddr + rel->r_addend;
- break;
-
- case R_SH_GOTPC:
- assert(got != 0);
- *loc = got - dot + rel->r_addend;
- break;
-
- case R_SH_GOT32:
- goto bb_use_got;
-
- case R_SH_GOTOFF:
- assert(got != 0);
- *loc = v - got;
- break;
-
-#endif
-
- default:
- printf("Warning: unhandled reloc %d\n",(int)ELF32_R_TYPE(rel->r_info));
- ret = obj_reloc_unhandled;
- break;
-
-#if defined(BB_USE_PLT_ENTRIES)
-
- bb_use_plt:
-
- /* find the plt entry and initialize it if necessary */
- assert(isym != NULL);
-
-#if defined(BB_USE_PLT_LIST)
- for (pe = isym->pltent; pe != NULL && pe->addend != rel->r_addend;)
- pe = pe->next;
- assert(pe != NULL);
-#else
- pe = &isym->pltent;
-#endif
-
- if (! pe->inited) {
- ip = (unsigned long *) (ifile->plt->contents + pe->offset);
-
- /* generate some machine code */
-
-#if defined(__arm__)
- ip[0] = 0xe51ff004; /* ldr pc,[pc,#-4] */
- ip[1] = v; /* sym@ */
-#endif
-#if defined(__powerpc__)
- ip[0] = 0x3d600000 + ((v + 0x8000) >> 16); /* lis r11,sym@ha */
- ip[1] = 0x396b0000 + (v & 0xffff); /* addi r11,r11,sym@l */
- ip[2] = 0x7d6903a6; /* mtctr r11 */
- ip[3] = 0x4e800420; /* bctr */
-#endif
- pe->inited = 1;
- }
-
- /* relative distance to target */
- v -= dot;
- /* if the target is too far away.... */
- if ((int)v < -0x02000000 || (int)v >= 0x02000000) {
- /* go via the plt */
- v = plt + pe->offset - dot;
- }
- if (v & 3)
- ret = obj_reloc_dangerous;
-
- /* merge the offset into the instruction. */
-#if defined(__arm__)
- /* Convert to words. */
- v >>= 2;
-
- *loc = (*loc & ~0x00ffffff) | ((v + *loc) & 0x00ffffff);
-#endif
-#if defined(__powerpc__)
- *loc = (*loc & ~0x03fffffc) | (v & 0x03fffffc);
-#endif
- break;
-#endif /* BB_USE_PLT_ENTRIES */
-
-#if defined(BB_USE_GOT_ENTRIES)
- bb_use_got:
-
- assert(isym != NULL);
- /* needs an entry in the .got: set it, once */
- if (!isym->gotent.inited) {
- isym->gotent.inited = 1;
- *(ElfW(Addr) *) (ifile->got->contents + isym->gotent.offset) = v;
- }
- /* make the reloc with_respect_to_.got */
-#if defined(__sh__)
- *loc += isym->gotent.offset + rel->r_addend;
-#elif defined(__i386__) || defined(__arm__) || defined(__mc68000__)
- *loc += isym->gotent.offset;
-#elif defined(__x86_64__)
- /* XXX are these really correct? */
- if (ELF64_R_TYPE(rel->r_info) == R_X86_64_GOTPCREL)
- *(unsigned int *) loc += v + isym->gotent.offset;
- else
- *loc += isym->gotent.offset;
-#endif
- break;
-
-#endif /* BB_USE_GOT_ENTRIES */
- }
-
- return ret;
-}
-
-#if defined(BB_USE_LIST)
-
-static int arch_list_add(ElfW(RelM) *rel, struct arch_list_entry **list,
- int offset, int size)
-{
- struct arch_list_entry *pe;
-
- for (pe = *list; pe != NULL; pe = pe->next) {
- if (pe->addend == rel->r_addend) {
- break;
- }
- }
-
- if (pe == NULL) {
- pe = xmalloc(sizeof(struct arch_list_entry));
- pe->next = *list;
- pe->addend = rel->r_addend;
- pe->offset = offset;
- pe->inited = 0;
- *list = pe;
- return size;
- }
- return 0;
-}
-
-#endif
-
-#if defined(BB_USE_SINGLE)
-
-static int arch_single_init(ElfW(RelM) *rel, struct arch_single_entry *single,
- int offset, int size)
-{
- if (single->allocated == 0) {
- single->allocated = 1;
- single->offset = offset;
- single->inited = 0;
- return size;
- }
- return 0;
-}
-
-#endif
-
-#if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
-
-static struct obj_section *arch_xsect_init(struct obj_file *f, char *name,
- int offset, int size)
-{
- struct obj_section *myrelsec = obj_find_section(f, name);
-
- if (offset == 0) {
- offset += size;
- }
-
- if (myrelsec) {
- obj_extend_section(myrelsec, offset);
- } else {
- myrelsec = obj_create_alloced_section(f, name,
- size, offset);
- assert(myrelsec);
- }
-
- return myrelsec;
-}
-
-#endif
-
-static void arch_create_got(struct obj_file *f)
-{
-#if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
- struct arch_file *ifile = (struct arch_file *) f;
- int i;
-#if defined(BB_USE_GOT_ENTRIES)
- int got_offset = 0, got_needed = 0, got_allocate;
-#endif
-#if defined(BB_USE_PLT_ENTRIES)
- int plt_offset = 0, plt_needed = 0, plt_allocate;
-#endif
- struct obj_section *relsec, *symsec, *strsec;
- ElfW(RelM) *rel, *relend;
- ElfW(Sym) *symtab, *extsym;
- const char *strtab, *name;
- struct arch_symbol *intsym;
-
- for (i = 0; i < f->header.e_shnum; ++i) {
- relsec = f->sections[i];
-
- if (relsec->header.sh_type != SHT_RELM)
- continue;
-
- symsec = f->sections[relsec->header.sh_link];
- strsec = f->sections[symsec->header.sh_link];
-
- rel = (ElfW(RelM) *) relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(ElfW(RelM)));
- symtab = (ElfW(Sym) *) symsec->contents;
- strtab = (const char *) strsec->contents;
-
- for (; rel < relend; ++rel) {
- extsym = &symtab[ELF32_R_SYM(rel->r_info)];
-
-#if defined(BB_USE_GOT_ENTRIES)
- got_allocate = 0;
-#endif
-#if defined(BB_USE_PLT_ENTRIES)
- plt_allocate = 0;
-#endif
-
- switch (ELF32_R_TYPE(rel->r_info)) {
-
-#if defined(__arm__)
-
- case R_ARM_PC24:
- case R_ARM_PLT32:
- plt_allocate = 1;
- break;
-
- case R_ARM_GOTOFF:
- case R_ARM_GOTPC:
- got_needed = 1;
- continue;
-
- case R_ARM_GOT32:
- got_allocate = 1;
- break;
-
-#elif defined(__i386__)
-
- case R_386_GOTPC:
- case R_386_GOTOFF:
- got_needed = 1;
- continue;
-
- case R_386_GOT32:
- got_allocate = 1;
- break;
-
-#elif defined(__x86_64__)
-
- case R_X86_64_GOTPCREL:
- case R_X86_64_GOT32:
- got_needed = 1;
- continue;
-
-#elif defined(__powerpc__)
-
- case R_PPC_REL24:
- plt_allocate = 1;
- break;
-
-#elif defined(__mc68000__)
-
- case R_68K_GOT32:
- got_allocate = 1;
- break;
-
- case R_68K_GOTOFF:
- got_needed = 1;
- continue;
-
-#elif defined(__sh__)
-
- case R_SH_GOT32:
- got_allocate = 1;
- break;
-
- case R_SH_GOTPC:
- case R_SH_GOTOFF:
- got_needed = 1;
- continue;
-
-#endif
- default:
- continue;
- }
-
- if (extsym->st_name != 0) {
- name = strtab + extsym->st_name;
- } else {
- name = f->sections[extsym->st_shndx]->name;
- }
- intsym = (struct arch_symbol *) obj_find_symbol(f, name);
-#if defined(BB_USE_GOT_ENTRIES)
- if (got_allocate) {
- got_offset += arch_single_init(
- rel, &intsym->gotent,
- got_offset, BB_GOT_ENTRY_SIZE);
-
- got_needed = 1;
- }
-#endif
-#if defined(BB_USE_PLT_ENTRIES)
- if (plt_allocate) {
-#if defined(BB_USE_PLT_LIST)
- plt_offset += arch_list_add(
- rel, &intsym->pltent,
- plt_offset, BB_PLT_ENTRY_SIZE);
-#else
- plt_offset += arch_single_init(
- rel, &intsym->pltent,
- plt_offset, BB_PLT_ENTRY_SIZE);
-#endif
- plt_needed = 1;
- }
-#endif
- }
- }
-
-#if defined(BB_USE_GOT_ENTRIES)
- if (got_needed) {
- ifile->got = arch_xsect_init(f, ".got", got_offset,
- BB_GOT_ENTRY_SIZE);
- }
-#endif
-
-#if defined(BB_USE_PLT_ENTRIES)
- if (plt_needed) {
- ifile->plt = arch_xsect_init(f, ".plt", plt_offset,
- BB_PLT_ENTRY_SIZE);
- }
-#endif
-
-#endif /* defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES) */
-}
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-static int arch_init_module(struct obj_file *f, struct new_module *mod)
-{
- return 1;
-}
-#endif
-
-
-/*======================================================================*/
-
-/* Standard ELF hash function. */
-static inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
-{
- unsigned long h = 0;
- unsigned long g;
- unsigned char ch;
-
- while (n > 0) {
- ch = *name++;
- h = (h << 4) + ch;
- if ((g = (h & 0xf0000000)) != 0) {
- h ^= g >> 24;
- h &= ~g;
- }
- n--;
- }
- return h;
-}
-
-static unsigned long obj_elf_hash(const char *name)
-{
- return obj_elf_hash_n(name, strlen(name));
-}
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
-/* String comparison for non-co-versioned kernel and module. */
-
-static int ncv_strcmp(const char *a, const char *b)
-{
- size_t alen = strlen(a), blen = strlen(b);
-
- if (blen == alen + 10 && b[alen] == '_' && b[alen + 1] == 'R')
- return strncmp(a, b, alen);
- else if (alen == blen + 10 && a[blen] == '_' && a[blen + 1] == 'R')
- return strncmp(a, b, blen);
- else
- return strcmp(a, b);
-}
-
-/* String hashing for non-co-versioned kernel and module. Here
- we are simply forced to drop the crc from the hash. */
-
-static unsigned long ncv_symbol_hash(const char *str)
-{
- size_t len = strlen(str);
- if (len > 10 && str[len - 10] == '_' && str[len - 9] == 'R')
- len -= 10;
- return obj_elf_hash_n(str, len);
-}
-
-static void
-obj_set_symbol_compare(struct obj_file *f,
- int (*cmp) (const char *, const char *),
- unsigned long (*hash) (const char *))
-{
- if (cmp)
- f->symbol_cmp = cmp;
- if (hash) {
- struct obj_symbol *tmptab[HASH_BUCKETS], *sym, *next;
- int i;
-
- f->symbol_hash = hash;
-
- memcpy(tmptab, f->symtab, sizeof(tmptab));
- memset(f->symtab, 0, sizeof(f->symtab));
-
- for (i = 0; i < HASH_BUCKETS; ++i)
- for (sym = tmptab[i]; sym; sym = next) {
- unsigned long h = hash(sym->name) % HASH_BUCKETS;
- next = sym->next;
- sym->next = f->symtab[h];
- f->symtab[h] = sym;
- }
- }
-}
-
-#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
-
-static struct obj_symbol *
-obj_add_symbol(struct obj_file *f, const char *name,
- unsigned long symidx, int info,
- int secidx, ElfW(Addr) value,
- unsigned long size)
-{
- struct obj_symbol *sym;
- unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
- int n_type = ELFW(ST_TYPE) (info);
- int n_binding = ELFW(ST_BIND) (info);
-
- for (sym = f->symtab[hash]; sym; sym = sym->next)
- if (f->symbol_cmp(sym->name, name) == 0) {
- int o_secidx = sym->secidx;
- int o_info = sym->info;
- int o_type = ELFW(ST_TYPE) (o_info);
- int o_binding = ELFW(ST_BIND) (o_info);
-
- /* A redefinition! Is it legal? */
-
- if (secidx == SHN_UNDEF)
- return sym;
- else if (o_secidx == SHN_UNDEF)
- goto found;
- else if (n_binding == STB_GLOBAL && o_binding == STB_LOCAL) {
- /* Cope with local and global symbols of the same name
- in the same object file, as might have been created
- by ld -r. The only reason locals are now seen at this
- level at all is so that we can do semi-sensible things
- with parameters. */
-
- struct obj_symbol *nsym, **p;
-
- nsym = arch_new_symbol();
- nsym->next = sym->next;
- nsym->ksymidx = -1;
-
- /* Excise the old (local) symbol from the hash chain. */
- for (p = &f->symtab[hash]; *p != sym; p = &(*p)->next)
- continue;
- *p = sym = nsym;
- goto found;
- } else if (n_binding == STB_LOCAL) {
- /* Another symbol of the same name has already been defined.
- Just add this to the local table. */
- sym = arch_new_symbol();
- sym->next = NULL;
- sym->ksymidx = -1;
- f->local_symtab[symidx] = sym;
- goto found;
- } else if (n_binding == STB_WEAK)
- return sym;
- else if (o_binding == STB_WEAK)
- goto found;
- /* Don't unify COMMON symbols with object types the programmer
- doesn't expect. */
- else if (secidx == SHN_COMMON
- && (o_type == STT_NOTYPE || o_type == STT_OBJECT))
- return sym;
- else if (o_secidx == SHN_COMMON
- && (n_type == STT_NOTYPE || n_type == STT_OBJECT))
- goto found;
- else {
- /* Don't report an error if the symbol is coming from
- the kernel or some external module. */
- if (secidx <= SHN_HIRESERVE)
- error_msg("%s multiply defined", name);
- return sym;
- }
- }
-
- /* Completely new symbol. */
- sym = arch_new_symbol();
- sym->next = f->symtab[hash];
- f->symtab[hash] = sym;
- sym->ksymidx = -1;
-
- if (ELFW(ST_BIND)(info) == STB_LOCAL && symidx != -1) {
- if (symidx >= f->local_symtab_size)
- error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
- name, (long) symidx, (long) f->local_symtab_size);
- else
- f->local_symtab[symidx] = sym;
- }
-
- found:
- sym->name = name;
- sym->value = value;
- sym->size = size;
- sym->secidx = secidx;
- sym->info = info;
-
- return sym;
-}
-
-static struct obj_symbol *
-obj_find_symbol(struct obj_file *f, const char *name)
-{
- struct obj_symbol *sym;
- unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
-
- for (sym = f->symtab[hash]; sym; sym = sym->next)
- if (f->symbol_cmp(sym->name, name) == 0)
- return sym;
-
- return NULL;
-}
-
-static ElfW(Addr)
- obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym)
-{
- if (sym) {
- if (sym->secidx >= SHN_LORESERVE)
- return sym->value;
-
- return sym->value + f->sections[sym->secidx]->header.sh_addr;
- } else {
- /* As a special case, a NULL sym has value zero. */
- return 0;
- }
-}
-
-static struct obj_section *obj_find_section(struct obj_file *f, const char *name)
-{
- int i, n = f->header.e_shnum;
-
- for (i = 0; i < n; ++i)
- if (strcmp(f->sections[i]->name, name) == 0)
- return f->sections[i];
-
- return NULL;
-}
-
-static int obj_load_order_prio(struct obj_section *a)
-{
- unsigned long af, ac;
-
- af = a->header.sh_flags;
-
- ac = 0;
- if (a->name[0] != '.' || strlen(a->name) != 10 ||
- strcmp(a->name + 5, ".init"))
- ac |= 32;
- if (af & SHF_ALLOC)
- ac |= 16;
- if (!(af & SHF_WRITE))
- ac |= 8;
- if (af & SHF_EXECINSTR)
- ac |= 4;
- if (a->header.sh_type != SHT_NOBITS)
- ac |= 2;
-
- return ac;
-}
-
-static void
-obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
-{
- struct obj_section **p;
- int prio = obj_load_order_prio(sec);
- for (p = f->load_order_search_start; *p; p = &(*p)->load_next)
- if (obj_load_order_prio(*p) < prio)
- break;
- sec->load_next = *p;
- *p = sec;
-}
-
-static struct obj_section *obj_create_alloced_section(struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size)
-{
- int newidx = f->header.e_shnum++;
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (newidx + 1) * sizeof(sec));
- f->sections[newidx] = sec = arch_new_section();
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = SHF_WRITE | SHF_ALLOC;
- sec->header.sh_size = size;
- sec->header.sh_addralign = align;
- sec->name = name;
- sec->idx = newidx;
- if (size)
- sec->contents = xmalloc(size);
-
- obj_insert_section_load_order(f, sec);
-
- return sec;
-}
-
-static struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size)
-{
- int newidx = f->header.e_shnum++;
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (newidx + 1) * sizeof(sec));
- f->sections[newidx] = sec = arch_new_section();
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = SHF_WRITE | SHF_ALLOC;
- sec->header.sh_size = size;
- sec->header.sh_addralign = align;
- sec->name = name;
- sec->idx = newidx;
- if (size)
- sec->contents = xmalloc(size);
-
- sec->load_next = f->load_order;
- f->load_order = sec;
- if (f->load_order_search_start == &f->load_order)
- f->load_order_search_start = &sec->load_next;
-
- return sec;
-}
-
-static void *obj_extend_section(struct obj_section *sec, unsigned long more)
-{
- unsigned long oldsize = sec->header.sh_size;
- if (more) {
- sec->contents = xrealloc(sec->contents, sec->header.sh_size += more);
- }
- return sec->contents + oldsize;
-}
-
-
-/* Conditionally add the symbols from the given symbol set to the
- new module. */
-
-static int
-add_symbols_from(
- struct obj_file *f,
- int idx, struct new_module_symbol *syms, size_t nsyms)
-{
- struct new_module_symbol *s;
- size_t i;
- int used = 0;
-
- for (i = 0, s = syms; i < nsyms; ++i, ++s) {
-
- /* Only add symbols that are already marked external. If we
- override locals we may cause problems for argument initialization.
- We will also create a false dependency on the module. */
- struct obj_symbol *sym;
-
- sym = obj_find_symbol(f, (char *) s->name);
- if (sym && !ELFW(ST_BIND) (sym->info) == STB_LOCAL) {
- sym = obj_add_symbol(f, (char *) s->name, -1,
- ELFW(ST_INFO) (STB_GLOBAL, STT_NOTYPE),
- idx, s->value, 0);
- /* Did our symbol just get installed? If so, mark the
- module as "used". */
- if (sym->secidx == idx)
- used = 1;
- }
- }
-
- return used;
-}
-
-static void add_kernel_symbols(struct obj_file *f)
-{
- struct external_module *m;
- int i, nused = 0;
-
- /* Add module symbols first. */
-
- for (i = 0, m = ext_modules; i < n_ext_modules; ++i, ++m)
- if (m->nsyms
- && add_symbols_from(f, SHN_HIRESERVE + 2 + i, m->syms,
- m->nsyms)) m->used = 1, ++nused;
-
- n_ext_modules_used = nused;
-
- /* And finally the symbols from the kernel proper. */
-
- if (nksyms)
- add_symbols_from(f, SHN_HIRESERVE + 1, ksyms, nksyms);
-}
-
-static char *get_modinfo_value(struct obj_file *f, const char *key)
-{
- struct obj_section *sec;
- char *p, *v, *n, *ep;
- size_t klen = strlen(key);
-
- sec = obj_find_section(f, ".modinfo");
- if (sec == NULL)
- return NULL;
- p = sec->contents;
- ep = p + sec->header.sh_size;
- while (p < ep) {
- v = strchr(p, '=');
- n = strchr(p, '\0');
- if (v) {
- if (p + klen == v && strncmp(p, key, klen) == 0)
- return v + 1;
- } else {
- if (p + klen == n && strcmp(p, key) == 0)
- return n;
- }
- p = n + 1;
- }
-
- return NULL;
-}
-
-
-/*======================================================================*/
-/* Functions relating to module loading in pre 2.1 kernels. */
-
-static int
-old_process_module_arguments(struct obj_file *f, int argc, char **argv)
-{
- while (argc > 0) {
- char *p, *q;
- struct obj_symbol *sym;
- int *loc;
-
- p = *argv;
- if ((q = strchr(p, '=')) == NULL) {
- argc--;
- continue;
- }
- *q++ = '\0';
-
- sym = obj_find_symbol(f, p);
-
- /* Also check that the parameter was not resolved from the kernel. */
- if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
- error_msg("symbol for parameter %s not found", p);
- return 0;
- }
-
- loc = (int *) (f->sections[sym->secidx]->contents + sym->value);
-
- /* Do C quoting if we begin with a ". */
- if (*q == '"') {
- char *r, *str;
-
- str = alloca(strlen(q));
- for (r = str, q++; *q != '"'; ++q, ++r) {
- if (*q == '\0') {
- error_msg("improperly terminated string argument for %s", p);
- return 0;
- } else if (*q == '\\')
- switch (*++q) {
- case 'a':
- *r = '\a';
- break;
- case 'b':
- *r = '\b';
- break;
- case 'e':
- *r = '\033';
- break;
- case 'f':
- *r = '\f';
- break;
- case 'n':
- *r = '\n';
- break;
- case 'r':
- *r = '\r';
- break;
- case 't':
- *r = '\t';
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- {
- int c = *q - '0';
- if (q[1] >= '0' && q[1] <= '7') {
- c = (c * 8) + *++q - '0';
- if (q[1] >= '0' && q[1] <= '7')
- c = (c * 8) + *++q - '0';
- }
- *r = c;
- }
- break;
-
- default:
- *r = *q;
- break;
- } else
- *r = *q;
- }
- *r = '\0';
- obj_string_patch(f, sym->secidx, sym->value, str);
- } else if (*q >= '0' && *q <= '9') {
- do
- *loc++ = strtoul(q, &q, 0);
- while (*q++ == ',');
- } else {
- char *contents = f->sections[sym->secidx]->contents;
- char *myloc = contents + sym->value;
- char *r; /* To search for commas */
-
- /* Break the string with comas */
- while ((r = strchr(q, ',')) != (char *) NULL) {
- *r++ = '\0';
- obj_string_patch(f, sym->secidx, myloc - contents, q);
- myloc += sizeof(char *);
- q = r;
- }
-
- /* last part */
- obj_string_patch(f, sym->secidx, myloc - contents, q);
- }
-
- argc--, argv++;
- }
-
- return 1;
-}
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
-static int old_is_module_checksummed(struct obj_file *f)
-{
- return obj_find_symbol(f, "Using_Versions") != NULL;
-}
-/* Get the module's kernel version in the canonical integer form. */
-
-static int
-old_get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
-{
- struct obj_symbol *sym;
- char *p, *q;
- int a, b, c;
-
- sym = obj_find_symbol(f, "kernel_version");
- if (sym == NULL)
- return -1;
-
- p = f->sections[sym->secidx]->contents + sym->value;
- safe_strncpy(str, p, STRVERSIONLEN);
-
- a = strtoul(p, &p, 10);
- if (*p != '.')
- return -1;
- b = strtoul(p + 1, &p, 10);
- if (*p != '.')
- return -1;
- c = strtoul(p + 1, &q, 10);
- if (p + 1 == q)
- return -1;
-
- return a << 16 | b << 8 | c;
-}
-
-#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
-
-#ifdef BB_FEATURE_OLD_MODULE_INTERFACE
-
-/* Fetch all the symbols and divvy them up as appropriate for the modules. */
-
-static int old_get_kernel_symbols(const char *m_name)
-{
- struct old_kernel_sym *ks, *k;
- struct new_module_symbol *s;
- struct external_module *mod;
- int nks, nms, nmod, i;
-
- nks = get_kernel_syms(NULL);
- if (nks <= 0) {
- if (nks)
- perror_msg("get_kernel_syms: %s", m_name);
- else
- error_msg("No kernel symbols");
- return 0;
- }
-
- ks = k = xmalloc(nks * sizeof(*ks));
-
- if (get_kernel_syms(ks) != nks) {
- perror("inconsistency with get_kernel_syms -- is someone else "
- "playing with modules?");
- free(ks);
- return 0;
- }
-
- /* Collect the module information. */
-
- mod = NULL;
- nmod = -1;
-
- while (k->name[0] == '#' && k->name[1]) {
- struct old_kernel_sym *k2;
-
- /* Find out how many symbols this module has. */
- for (k2 = k + 1; k2->name[0] != '#'; ++k2)
- continue;
- nms = k2 - k - 1;
-
- mod = xrealloc(mod, (++nmod + 1) * sizeof(*mod));
- mod[nmod].name = k->name + 1;
- mod[nmod].addr = k->value;
- mod[nmod].used = 0;
- mod[nmod].nsyms = nms;
- mod[nmod].syms = s = (nms ? xmalloc(nms * sizeof(*s)) : NULL);
-
- for (i = 0, ++k; i < nms; ++i, ++s, ++k) {
- s->name = (unsigned long) k->name;
- s->value = k->value;
- }
-
- k = k2;
- }
-
- ext_modules = mod;
- n_ext_modules = nmod + 1;
-
- /* Now collect the symbols for the kernel proper. */
-
- if (k->name[0] == '#')
- ++k;
-
- nksyms = nms = nks - (k - ks);
- ksyms = s = (nms ? xmalloc(nms * sizeof(*s)) : NULL);
-
- for (i = 0; i < nms; ++i, ++s, ++k) {
- s->name = (unsigned long) k->name;
- s->value = k->value;
- }
-
- return 1;
-}
-
-/* Return the kernel symbol checksum version, or zero if not used. */
-
-static int old_is_kernel_checksummed(void)
-{
- /* Using_Versions is the first symbol. */
- if (nksyms > 0
- && strcmp((char *) ksyms[0].name,
- "Using_Versions") == 0) return ksyms[0].value;
- else
- return 0;
-}
-
-
-static int old_create_mod_use_count(struct obj_file *f)
-{
- struct obj_section *sec;
-
- sec = obj_create_alloced_section_first(f, ".moduse", sizeof(long),
- sizeof(long));
-
- obj_add_symbol(f, "mod_use_count_", -1,
- ELFW(ST_INFO) (STB_LOCAL, STT_OBJECT), sec->idx, 0,
- sizeof(long));
-
- return 1;
-}
-
-static int
-old_init_module(const char *m_name, struct obj_file *f,
- unsigned long m_size)
-{
- char *image;
- struct old_mod_routines routines;
- struct old_symbol_table *symtab;
- int ret;
-
- /* Create the symbol table */
- {
- int nsyms = 0, strsize = 0, total;
-
- /* Size things first... */
- if (flag_export) {
- int i;
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (ELFW(ST_BIND) (sym->info) != STB_LOCAL
- && sym->secidx <= SHN_HIRESERVE)
- {
- sym->ksymidx = nsyms++;
- strsize += strlen(sym->name) + 1;
- }
- }
- }
-
- total = (sizeof(struct old_symbol_table)
- + nsyms * sizeof(struct old_module_symbol)
- + n_ext_modules_used * sizeof(struct old_module_ref)
- + strsize);
- symtab = xmalloc(total);
- symtab->size = total;
- symtab->n_symbols = nsyms;
- symtab->n_refs = n_ext_modules_used;
-
- if (flag_export && nsyms) {
- struct old_module_symbol *ksym;
- char *str;
- int i;
-
- ksym = symtab->symbol;
- str = ((char *) ksym + nsyms * sizeof(struct old_module_symbol)
- + n_ext_modules_used * sizeof(struct old_module_ref));
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->ksymidx >= 0) {
- ksym->addr = obj_symbol_final_value(f, sym);
- ksym->name =
- (unsigned long) str - (unsigned long) symtab;
-
- strcpy(str, sym->name);
- str += strlen(sym->name) + 1;
- ksym++;
- }
- }
- }
-
- if (n_ext_modules_used) {
- struct old_module_ref *ref;
- int i;
-
- ref = (struct old_module_ref *)
- ((char *) symtab->symbol + nsyms * sizeof(struct old_module_symbol));
-
- for (i = 0; i < n_ext_modules; ++i)
- if (ext_modules[i].used)
- ref++->module = ext_modules[i].addr;
- }
- }
-
- /* Fill in routines. */
-
- routines.init =
- obj_symbol_final_value(f, obj_find_symbol(f, "init_module"));
- routines.cleanup =
- obj_symbol_final_value(f, obj_find_symbol(f, "cleanup_module"));
-
- /* Whew! All of the initialization is complete. Collect the final
- module image and give it to the kernel. */
-
- image = xmalloc(m_size);
- obj_create_image(f, image);
-
- /* image holds the complete relocated module, accounting correctly for
- mod_use_count. However the old module kernel support assume that
- it is receiving something which does not contain mod_use_count. */
- ret = old_sys_init_module(m_name, image + sizeof(long),
- m_size | (flag_autoclean ? OLD_MOD_AUTOCLEAN
- : 0), &routines, symtab);
- if (ret)
- perror_msg("init_module: %s", m_name);
-
- free(image);
- free(symtab);
-
- return ret == 0;
-}
-
-#else
-
-#define old_create_mod_use_count(x) TRUE
-#define old_init_module(x, y, z) TRUE
-
-#endif /* BB_FEATURE_OLD_MODULE_INTERFACE */
-
-
-
-/*======================================================================*/
-/* Functions relating to module loading after 2.1.18. */
-
-static int
-new_process_module_arguments(struct obj_file *f, int argc, char **argv)
-{
- while (argc > 0) {
- char *p, *q, *key;
- struct obj_symbol *sym;
- char *contents, *loc;
- int min, max, n;
-
- p = *argv;
- if ((q = strchr(p, '=')) == NULL) {
- argc--;
- continue;
- }
-
- key = alloca(q - p + 6);
- memcpy(key, "parm_", 5);
- memcpy(key + 5, p, q - p);
- key[q - p + 5] = 0;
-
- p = get_modinfo_value(f, key);
- key += 5;
- if (p == NULL) {
- error_msg("invalid parameter %s", key);
- return 0;
- }
-
- sym = obj_find_symbol(f, key);
-
- /* Also check that the parameter was not resolved from the kernel. */
- if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
- error_msg("symbol for parameter %s not found", key);
- return 0;
- }
-
- if (isdigit(*p)) {
- min = strtoul(p, &p, 10);
- if (*p == '-')
- max = strtoul(p + 1, &p, 10);
- else
- max = min;
- } else
- min = max = 1;
-
- contents = f->sections[sym->secidx]->contents;
- loc = contents + sym->value;
- n = (*++q != '\0');
-
- while (1) {
- if ((*p == 's') || (*p == 'c')) {
- char *str;
-
- /* Do C quoting if we begin with a ", else slurp the lot. */
- if (*q == '"') {
- char *r;
-
- str = alloca(strlen(q));
- for (r = str, q++; *q != '"'; ++q, ++r) {
- if (*q == '\0') {
- error_msg("improperly terminated string argument for %s",
- key);
- return 0;
- } else if (*q == '\\')
- switch (*++q) {
- case 'a':
- *r = '\a';
- break;
- case 'b':
- *r = '\b';
- break;
- case 'e':
- *r = '\033';
- break;
- case 'f':
- *r = '\f';
- break;
- case 'n':
- *r = '\n';
- break;
- case 'r':
- *r = '\r';
- break;
- case 't':
- *r = '\t';
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- {
- int c = *q - '0';
- if (q[1] >= '0' && q[1] <= '7') {
- c = (c * 8) + *++q - '0';
- if (q[1] >= '0' && q[1] <= '7')
- c = (c * 8) + *++q - '0';
- }
- *r = c;
- }
- break;
-
- default:
- *r = *q;
- break;
- } else
- *r = *q;
- }
- *r = '\0';
- ++q;
- } else {
- char *r;
-
- /* In this case, the string is not quoted. We will break
- it using the coma (like for ints). If the user wants to
- include comas in a string, he just has to quote it */
-
- /* Search the next coma */
- r = strchr(q, ',');
-
- /* Found ? */
- if (r != (char *) NULL) {
- /* Recopy the current field */
- str = alloca(r - q + 1);
- memcpy(str, q, r - q);
-
- /* I don't know if it is usefull, as the previous case
- doesn't null terminate the string ??? */
- str[r - q] = '\0';
-
- /* Keep next fields */
- q = r;
- } else {
- /* last string */
- str = q;
- q = "";
- }
- }
-
- if (*p == 's') {
- /* Normal string */
- obj_string_patch(f, sym->secidx, loc - contents, str);
- loc += tgt_sizeof_char_p;
- } else {
- /* Array of chars (in fact, matrix !) */
- unsigned long charssize; /* size of each member */
-
- /* Get the size of each member */
- /* Probably we should do that outside the loop ? */
- if (!isdigit(*(p + 1))) {
- error_msg("parameter type 'c' for %s must be followed by"
- " the maximum size", key);
- return 0;
- }
- charssize = strtoul(p + 1, (char **) NULL, 10);
-
- /* Check length */
- if (strlen(str) >= charssize) {
- error_msg("string too long for %s (max %ld)", key,
- charssize - 1);
- return 0;
- }
-
- /* Copy to location */
- strcpy((char *) loc, str);
- loc += charssize;
- }
- } else {
- long v = strtoul(q, &q, 0);
- switch (*p) {
- case 'b':
- *loc++ = v;
- break;
- case 'h':
- *(short *) loc = v;
- loc += tgt_sizeof_short;
- break;
- case 'i':
- *(int *) loc = v;
- loc += tgt_sizeof_int;
- break;
- case 'l':
- *(long *) loc = v;
- loc += tgt_sizeof_long;
- break;
-
- default:
- error_msg("unknown parameter type '%c' for %s", *p, key);
- return 0;
- }
- }
-
- retry_end_of_value:
- switch (*q) {
- case '\0':
- goto end_of_arg;
-
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- ++q;
- goto retry_end_of_value;
-
- case ',':
- if (++n > max) {
- error_msg("too many values for %s (max %d)", key, max);
- return 0;
- }
- ++q;
- break;
-
- default:
- error_msg("invalid argument syntax for %s", key);
- return 0;
- }
- }
-
- end_of_arg:
- if (n < min) {
- error_msg("too few values for %s (min %d)", key, min);
- return 0;
- }
-
- argc--, argv++;
- }
-
- return 1;
-}
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
-static int new_is_module_checksummed(struct obj_file *f)
-{
- const char *p = get_modinfo_value(f, "using_checksums");
- if (p)
- return atoi(p);
- else
- return 0;
-}
-
-/* Get the module's kernel version in the canonical integer form. */
-
-static int
-new_get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
-{
- char *p, *q;
- int a, b, c;
-
- p = get_modinfo_value(f, "kernel_version");
- if (p == NULL)
- return -1;
- safe_strncpy(str, p, STRVERSIONLEN);
-
- a = strtoul(p, &p, 10);
- if (*p != '.')
- return -1;
- b = strtoul(p + 1, &p, 10);
- if (*p != '.')
- return -1;
- c = strtoul(p + 1, &q, 10);
- if (p + 1 == q)
- return -1;
-
- return a << 16 | b << 8 | c;
-}
-
-#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
-
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-
-/* Fetch the loaded modules, and all currently exported symbols. */
-
-static int new_get_kernel_symbols(void)
-{
- char *module_names, *mn;
- struct external_module *modules, *m;
- struct new_module_symbol *syms, *s;
- size_t ret, bufsize, nmod, nsyms, i, j;
-
- /* Collect the loaded modules. */
-
- module_names = xmalloc(bufsize = 256);
- retry_modules_load:
- if (query_module(NULL, QM_MODULES, module_names, bufsize, &ret)) {
- if (errno == ENOSPC && bufsize < ret) {
- module_names = xrealloc(module_names, bufsize = ret);
- goto retry_modules_load;
- }
- perror_msg("QM_MODULES");
- return 0;
- }
-
- n_ext_modules = nmod = ret;
-
- /* Collect the modules' symbols. */
-
- if (nmod){
- ext_modules = modules = xmalloc(nmod * sizeof(*modules));
- memset(modules, 0, nmod * sizeof(*modules));
- for (i = 0, mn = module_names, m = modules;
- i < nmod; ++i, ++m, mn += strlen(mn) + 1) {
- struct new_module_info info;
-
- if (query_module(mn, QM_INFO, &info, sizeof(info), &ret)) {
- if (errno == ENOENT) {
- /* The module was removed out from underneath us. */
- continue;
- }
- perror_msg("query_module: QM_INFO: %s", mn);
- return 0;
- }
-
- syms = xmalloc(bufsize = 1024);
- retry_mod_sym_load:
- if (query_module(mn, QM_SYMBOLS, syms, bufsize, &ret)) {
- switch (errno) {
- case ENOSPC:
- syms = xrealloc(syms, bufsize = ret);
- goto retry_mod_sym_load;
- case ENOENT:
- /* The module was removed out from underneath us. */
- continue;
- default:
- perror_msg("query_module: QM_SYMBOLS: %s", mn);
- return 0;
- }
- }
- nsyms = ret;
-
- m->name = mn;
- m->addr = info.addr;
- m->nsyms = nsyms;
- m->syms = syms;
-
- for (j = 0, s = syms; j < nsyms; ++j, ++s) {
- s->name += (unsigned long) syms;
- }
- }
- }
-
- /* Collect the kernel's symbols. */
-
- syms = xmalloc(bufsize = 16 * 1024);
- retry_kern_sym_load:
- if (query_module(NULL, QM_SYMBOLS, syms, bufsize, &ret)) {
- if (errno == ENOSPC && bufsize < ret) {
- syms = xrealloc(syms, bufsize = ret);
- goto retry_kern_sym_load;
- }
- perror_msg("kernel: QM_SYMBOLS");
- return 0;
- }
- nksyms = nsyms = ret;
- ksyms = syms;
-
- for (j = 0, s = syms; j < nsyms; ++j, ++s) {
- s->name += (unsigned long) syms;
- }
- return 1;
-}
-
-
-/* Return the kernel symbol checksum version, or zero if not used. */
-
-static int new_is_kernel_checksummed(void)
-{
- struct new_module_symbol *s;
- size_t i;
-
- /* Using_Versions is not the first symbol, but it should be in there. */
-
- for (i = 0, s = ksyms; i < nksyms; ++i, ++s)
- if (strcmp((char *) s->name, "Using_Versions") == 0)
- return s->value;
-
- return 0;
-}
-
-
-static int new_create_this_module(struct obj_file *f, const char *m_name)
-{
- struct obj_section *sec;
-
- sec = obj_create_alloced_section_first(f, ".this", tgt_sizeof_long,
- sizeof(struct new_module));
- memset(sec->contents, 0, sizeof(struct new_module));
-
- obj_add_symbol(f, "__this_module", -1,
- ELFW(ST_INFO) (STB_LOCAL, STT_OBJECT), sec->idx, 0,
- sizeof(struct new_module));
-
- obj_string_patch(f, sec->idx, offsetof(struct new_module, name),
- m_name);
-
- return 1;
-}
-
-
-static int new_create_module_ksymtab(struct obj_file *f)
-{
- struct obj_section *sec;
- int i;
-
- /* We must always add the module references. */
-
- if (n_ext_modules_used) {
- struct new_module_ref *dep;
- struct obj_symbol *tm;
-
- sec = obj_create_alloced_section(f, ".kmodtab", tgt_sizeof_void_p,
- (sizeof(struct new_module_ref)
- * n_ext_modules_used));
- if (!sec)
- return 0;
-
- tm = obj_find_symbol(f, "__this_module");
- dep = (struct new_module_ref *) sec->contents;
- for (i = 0; i < n_ext_modules; ++i)
- if (ext_modules[i].used) {
- dep->dep = ext_modules[i].addr;
- obj_symbol_patch(f, sec->idx,
- (char *) &dep->ref - sec->contents, tm);
- dep->next_ref = 0;
- ++dep;
- }
- }
-
- if (flag_export && !obj_find_section(f, "__ksymtab")) {
- size_t nsyms;
- int *loaded;
-
- sec =
- obj_create_alloced_section(f, "__ksymtab", tgt_sizeof_void_p,
- 0);
-
- /* We don't want to export symbols residing in sections that
- aren't loaded. There are a number of these created so that
- we make sure certain module options don't appear twice. */
-
- loaded = alloca(sizeof(int) * (i = f->header.e_shnum));
- while (--i >= 0)
- loaded[i] = (f->sections[i]->header.sh_flags & SHF_ALLOC) != 0;
-
- for (nsyms = i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (ELFW(ST_BIND) (sym->info) != STB_LOCAL
- && sym->secidx <= SHN_HIRESERVE
- && (sym->secidx >= SHN_LORESERVE
- || loaded[sym->secidx])) {
- ElfW(Addr) ofs = nsyms * 2 * tgt_sizeof_void_p;
-
- obj_symbol_patch(f, sec->idx, ofs, sym);
- obj_string_patch(f, sec->idx, ofs + tgt_sizeof_void_p,
- sym->name);
-
- nsyms++;
- }
- }
-
- obj_extend_section(sec, nsyms * 2 * tgt_sizeof_char_p);
- }
-
- return 1;
-}
-
-
-static int
-new_init_module(const char *m_name, struct obj_file *f,
- unsigned long m_size)
-{
- struct new_module *module;
- struct obj_section *sec;
- void *image;
- int ret;
- tgt_long m_addr;
-
- sec = obj_find_section(f, ".this");
- if (!sec || !sec->contents) {
- perror_msg("corrupt module %s?",m_name);
- exit(EXIT_FAILURE);
- }
- module = (struct new_module *) sec->contents;
- m_addr = sec->header.sh_addr;
-
- module->size_of_struct = sizeof(*module);
- module->size = m_size;
- module->flags = flag_autoclean ? NEW_MOD_AUTOCLEAN : 0;
-
- sec = obj_find_section(f, "__ksymtab");
- if (sec && sec->header.sh_size) {
- module->syms = sec->header.sh_addr;
- module->nsyms = sec->header.sh_size / (2 * tgt_sizeof_char_p);
- }
-
- if (n_ext_modules_used) {
- sec = obj_find_section(f, ".kmodtab");
- module->deps = sec->header.sh_addr;
- module->ndeps = n_ext_modules_used;
- }
-
- module->init =
- obj_symbol_final_value(f, obj_find_symbol(f, "init_module"));
- module->cleanup =
- obj_symbol_final_value(f, obj_find_symbol(f, "cleanup_module"));
-
- sec = obj_find_section(f, "__ex_table");
- if (sec) {
- module->ex_table_start = sec->header.sh_addr;
- module->ex_table_end = sec->header.sh_addr + sec->header.sh_size;
- }
-
- sec = obj_find_section(f, ".text.init");
- if (sec) {
- module->runsize = sec->header.sh_addr - m_addr;
- }
- sec = obj_find_section(f, ".data.init");
- if (sec) {
- if (!module->runsize ||
- module->runsize > sec->header.sh_addr - m_addr)
- module->runsize = sec->header.sh_addr - m_addr;
- }
- sec = obj_find_section(f, ARCHDATA_SEC_NAME);
- if (sec && sec->header.sh_size) {
- module->archdata_start = (void*)sec->header.sh_addr;
- module->archdata_end = module->archdata_start + sec->header.sh_size;
- }
- sec = obj_find_section(f, KALLSYMS_SEC_NAME);
- if (sec && sec->header.sh_size) {
- module->kallsyms_start = (void*)sec->header.sh_addr;
- module->kallsyms_end = module->kallsyms_start + sec->header.sh_size;
- }
-
- if (!arch_init_module(f, module))
- return 0;
-
- /* Whew! All of the initialization is complete. Collect the final
- module image and give it to the kernel. */
-
- image = xmalloc(m_size);
- obj_create_image(f, image);
-
- ret = new_sys_init_module(m_name, (struct new_module *) image);
- if (ret)
- perror_msg("init_module: %s", m_name);
-
- free(image);
-
- return ret == 0;
-}
-
-#else
-
-#define new_init_module(x, y, z) TRUE
-#define new_create_this_module(x, y) 0
-#define new_create_module_ksymtab(x)
-#define query_module(v, w, x, y, z) -1
-
-#endif /* BB_FEATURE_NEW_MODULE_INTERFACE */
-
-
-/*======================================================================*/
-
-static int
-obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- const char *string)
-{
- struct obj_string_patch *p;
- struct obj_section *strsec;
- size_t len = strlen(string) + 1;
- char *loc;
-
- p = xmalloc(sizeof(*p));
- p->next = f->string_patches;
- p->reloc_secidx = secidx;
- p->reloc_offset = offset;
- f->string_patches = p;
-
- strsec = obj_find_section(f, ".kstrtab");
- if (strsec == NULL) {
- strsec = obj_create_alloced_section(f, ".kstrtab", 1, len);
- p->string_offset = 0;
- loc = strsec->contents;
- } else {
- p->string_offset = strsec->header.sh_size;
- loc = obj_extend_section(strsec, len);
- }
- memcpy(loc, string, len);
-
- return 1;
-}
-
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
-static int
-obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- struct obj_symbol *sym)
-{
- struct obj_symbol_patch *p;
-
- p = xmalloc(sizeof(*p));
- p->next = f->symbol_patches;
- p->reloc_secidx = secidx;
- p->reloc_offset = offset;
- p->sym = sym;
- f->symbol_patches = p;
-
- return 1;
-}
-#endif
-
-static int obj_check_undefineds(struct obj_file *f)
-{
- unsigned long i;
- int ret = 1;
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->secidx == SHN_UNDEF) {
- if (ELFW(ST_BIND) (sym->info) == STB_WEAK) {
- sym->secidx = SHN_ABS;
- sym->value = 0;
- } else {
- if (!flag_quiet) {
- error_msg("unresolved symbol %s", sym->name);
- }
- ret = 0;
- }
- }
- }
-
- return ret;
-}
-
-static void obj_allocate_commons(struct obj_file *f)
-{
- struct common_entry {
- struct common_entry *next;
- struct obj_symbol *sym;
- } *common_head = NULL;
-
- unsigned long i;
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->secidx == SHN_COMMON) {
- /* Collect all COMMON symbols and sort them by size so as to
- minimize space wasted by alignment requirements. */
- {
- struct common_entry **p, *n;
- for (p = &common_head; *p; p = &(*p)->next)
- if (sym->size <= (*p)->sym->size)
- break;
-
- n = alloca(sizeof(*n));
- n->next = *p;
- n->sym = sym;
- *p = n;
- }
- }
- }
-
- for (i = 1; i < f->local_symtab_size; ++i) {
- struct obj_symbol *sym = f->local_symtab[i];
- if (sym && sym->secidx == SHN_COMMON) {
- struct common_entry **p, *n;
- for (p = &common_head; *p; p = &(*p)->next)
- if (sym == (*p)->sym)
- break;
- else if (sym->size < (*p)->sym->size) {
- n = alloca(sizeof(*n));
- n->next = *p;
- n->sym = sym;
- *p = n;
- break;
- }
- }
- }
-
- if (common_head) {
- /* Find the bss section. */
- for (i = 0; i < f->header.e_shnum; ++i)
- if (f->sections[i]->header.sh_type == SHT_NOBITS)
- break;
-
- /* If for some reason there hadn't been one, create one. */
- if (i == f->header.e_shnum) {
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (i + 1) * sizeof(sec));
- f->sections[i] = sec = arch_new_section();
- f->header.e_shnum = i + 1;
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = SHF_WRITE | SHF_ALLOC;
- sec->name = ".bss";
- sec->idx = i;
- }
-
- /* Allocate the COMMONS. */
- {
- ElfW(Addr) bss_size = f->sections[i]->header.sh_size;
- ElfW(Addr) max_align = f->sections[i]->header.sh_addralign;
- struct common_entry *c;
-
- for (c = common_head; c; c = c->next) {
- ElfW(Addr) align = c->sym->value;
-
- if (align > max_align)
- max_align = align;
- if (bss_size & (align - 1))
- bss_size = (bss_size | (align - 1)) + 1;
-
- c->sym->secidx = i;
- c->sym->value = bss_size;
-
- bss_size += c->sym->size;
- }
-
- f->sections[i]->header.sh_size = bss_size;
- f->sections[i]->header.sh_addralign = max_align;
- }
- }
-
- /* For the sake of patch relocation and parameter initialization,
- allocate zeroed data for NOBITS sections now. Note that after
- this we cannot assume NOBITS are really empty. */
- for (i = 0; i < f->header.e_shnum; ++i) {
- struct obj_section *s = f->sections[i];
- if (s->header.sh_type == SHT_NOBITS) {
- if (s->header.sh_size != 0)
- s->contents = memset(xmalloc(s->header.sh_size),
- 0, s->header.sh_size);
- else
- s->contents = NULL;
-
- s->header.sh_type = SHT_PROGBITS;
- }
- }
-}
-
-static unsigned long obj_load_size(struct obj_file *f)
-{
- unsigned long dot = 0;
- struct obj_section *sec;
-
- /* Finalize the positions of the sections relative to one another. */
-
- for (sec = f->load_order; sec; sec = sec->load_next) {
- ElfW(Addr) align;
-
- align = sec->header.sh_addralign;
- if (align && (dot & (align - 1)))
- dot = (dot | (align - 1)) + 1;
-
- sec->header.sh_addr = dot;
- dot += sec->header.sh_size;
- }
-
- return dot;
-}
-
-static int obj_relocate(struct obj_file *f, ElfW(Addr) base)
-{
- int i, n = f->header.e_shnum;
- int ret = 1;
-
- /* Finalize the addresses of the sections. */
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
-
- /* And iterate over all of the relocations. */
-
- for (i = 0; i < n; ++i) {
- struct obj_section *relsec, *symsec, *targsec, *strsec;
- ElfW(RelM) * rel, *relend;
- ElfW(Sym) * symtab;
- const char *strtab;
-
- relsec = f->sections[i];
- if (relsec->header.sh_type != SHT_RELM)
- continue;
-
- symsec = f->sections[relsec->header.sh_link];
- targsec = f->sections[relsec->header.sh_info];
- strsec = f->sections[symsec->header.sh_link];
-
- rel = (ElfW(RelM) *) relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(ElfW(RelM)));
- symtab = (ElfW(Sym) *) symsec->contents;
- strtab = (const char *) strsec->contents;
-
- for (; rel < relend; ++rel) {
- ElfW(Addr) value = 0;
- struct obj_symbol *intsym = NULL;
- unsigned long symndx;
- ElfW(Sym) * extsym = 0;
- const char *errmsg;
-
- /* Attempt to find a value to use for this relocation. */
-
- symndx = ELFW(R_SYM) (rel->r_info);
- if (symndx) {
- /* Note we've already checked for undefined symbols. */
-
- extsym = &symtab[symndx];
- if (ELFW(ST_BIND) (extsym->st_info) == STB_LOCAL) {
- /* Local symbols we look up in the local table to be sure
- we get the one that is really intended. */
- intsym = f->local_symtab[symndx];
- } else {
- /* Others we look up in the hash table. */
- const char *name;
- if (extsym->st_name)
- name = strtab + extsym->st_name;
- else
- name = f->sections[extsym->st_shndx]->name;
- intsym = obj_find_symbol(f, name);
- }
-
- value = obj_symbol_final_value(f, intsym);
- intsym->referenced = 1;
- }
-#if SHT_RELM == SHT_RELA
-#if defined(__alpha__) && defined(AXP_BROKEN_GAS)
- /* Work around a nasty GAS bug, that is fixed as of 2.7.0.9. */
- if (!extsym || !extsym->st_name ||
- ELFW(ST_BIND) (extsym->st_info) != STB_LOCAL)
-#endif
- value += rel->r_addend;
-#endif
-
- /* Do it! */
- switch (arch_apply_relocation
- (f, targsec, symsec, intsym, rel, value)) {
- case obj_reloc_ok:
- break;
-
- case obj_reloc_overflow:
- errmsg = "Relocation overflow";
- goto bad_reloc;
- case obj_reloc_dangerous:
- errmsg = "Dangerous relocation";
- goto bad_reloc;
- case obj_reloc_unhandled:
- errmsg = "Unhandled relocation";
- bad_reloc:
- if (extsym) {
- error_msg("%s of type %ld for %s", errmsg,
- (long) ELFW(R_TYPE) (rel->r_info),
- strtab + extsym->st_name);
- } else {
- error_msg("%s of type %ld", errmsg,
- (long) ELFW(R_TYPE) (rel->r_info));
- }
- ret = 0;
- break;
- }
- }
- }
-
- /* Finally, take care of the patches. */
-
- if (f->string_patches) {
- struct obj_string_patch *p;
- struct obj_section *strsec;
- ElfW(Addr) strsec_base;
- strsec = obj_find_section(f, ".kstrtab");
- strsec_base = strsec->header.sh_addr;
-
- for (p = f->string_patches; p; p = p->next) {
- struct obj_section *targsec = f->sections[p->reloc_secidx];
- *(ElfW(Addr) *) (targsec->contents + p->reloc_offset)
- = strsec_base + p->string_offset;
- }
- }
-
- if (f->symbol_patches) {
- struct obj_symbol_patch *p;
-
- for (p = f->symbol_patches; p; p = p->next) {
- struct obj_section *targsec = f->sections[p->reloc_secidx];
- *(ElfW(Addr) *) (targsec->contents + p->reloc_offset)
- = obj_symbol_final_value(f, p->sym);
- }
- }
-
- return ret;
-}
-
-static int obj_create_image(struct obj_file *f, char *image)
-{
- struct obj_section *sec;
- ElfW(Addr) base = f->baseaddr;
-
- for (sec = f->load_order; sec; sec = sec->load_next) {
- char *secimg;
-
- if (sec->contents == 0 || sec->header.sh_size == 0)
- continue;
-
- secimg = image + (sec->header.sh_addr - base);
-
- /* Note that we allocated data for NOBITS sections earlier. */
- memcpy(secimg, sec->contents, sec->header.sh_size);
- }
-
- return 1;
-}
-
-/*======================================================================*/
-
-static struct obj_file *obj_load(FILE * fp, int loadprogbits)
-{
- struct obj_file *f;
- ElfW(Shdr) * section_headers;
- int shnum, i;
- char *shstrtab;
-
- /* Read the file header. */
-
- f = arch_new_file();
- memset(f, 0, sizeof(*f));
- f->symbol_cmp = strcmp;
- f->symbol_hash = obj_elf_hash;
- f->load_order_search_start = &f->load_order;
-
- fseek(fp, 0, SEEK_SET);
- if (fread(&f->header, sizeof(f->header), 1, fp) != 1) {
- perror_msg("error reading ELF header");
- return NULL;
- }
-
- if (f->header.e_ident[EI_MAG0] != ELFMAG0
- || f->header.e_ident[EI_MAG1] != ELFMAG1
- || f->header.e_ident[EI_MAG2] != ELFMAG2
- || f->header.e_ident[EI_MAG3] != ELFMAG3) {
- error_msg("not an ELF file");
- return NULL;
- }
- if (f->header.e_ident[EI_CLASS] != ELFCLASSM
- || f->header.e_ident[EI_DATA] != ELFDATAM
- || f->header.e_ident[EI_VERSION] != EV_CURRENT
- || !MATCH_MACHINE(f->header.e_machine)) {
- error_msg("ELF file not for this architecture");
- return NULL;
- }
- if (f->header.e_type != ET_REL) {
- error_msg("ELF file not a relocatable object");
- return NULL;
- }
-
- /* Read the section headers. */
-
- if (f->header.e_shentsize != sizeof(ElfW(Shdr))) {
- error_msg("section header size mismatch: %lu != %lu",
- (unsigned long) f->header.e_shentsize,
- (unsigned long) sizeof(ElfW(Shdr)));
- return NULL;
- }
-
- shnum = f->header.e_shnum;
- f->sections = xmalloc(sizeof(struct obj_section *) * shnum);
- memset(f->sections, 0, sizeof(struct obj_section *) * shnum);
-
- section_headers = alloca(sizeof(ElfW(Shdr)) * shnum);
- fseek(fp, f->header.e_shoff, SEEK_SET);
- if (fread(section_headers, sizeof(ElfW(Shdr)), shnum, fp) != shnum) {
- perror_msg("error reading ELF section headers");
- return NULL;
- }
-
- /* Read the section data. */
-
- for (i = 0; i < shnum; ++i) {
- struct obj_section *sec;
-
- f->sections[i] = sec = arch_new_section();
- memset(sec, 0, sizeof(*sec));
-
- sec->header = section_headers[i];
- sec->idx = i;
-
- if(sec->header.sh_size) switch (sec->header.sh_type) {
- case SHT_NULL:
- case SHT_NOTE:
- case SHT_NOBITS:
- /* ignore */
- break;
-
- case SHT_PROGBITS:
-#if LOADBITS
- if (!loadprogbits) {
- sec->contents = NULL;
- break;
- }
-#endif
- case SHT_SYMTAB:
- case SHT_STRTAB:
- case SHT_RELM:
- if (sec->header.sh_size > 0) {
- sec->contents = xmalloc(sec->header.sh_size);
- fseek(fp, sec->header.sh_offset, SEEK_SET);
- if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
- perror_msg("error reading ELF section data");
- return NULL;
- }
- } else {
- sec->contents = NULL;
- }
- break;
-
-#if SHT_RELM == SHT_REL
- case SHT_RELA:
- error_msg("RELA relocations not supported on this architecture");
- return NULL;
-#else
- case SHT_REL:
- error_msg("REL relocations not supported on this architecture");
- return NULL;
-#endif
-
- default:
- if (sec->header.sh_type >= SHT_LOPROC) {
- /* Assume processor specific section types are debug
- info and can safely be ignored. If this is ever not
- the case (Hello MIPS?), don't put ifdefs here but
- create an arch_load_proc_section(). */
- break;
- }
-
- error_msg("can't handle sections of type %ld",
- (long) sec->header.sh_type);
- return NULL;
- }
- }
-
- /* Do what sort of interpretation as needed by each section. */
-
- shstrtab = f->sections[f->header.e_shstrndx]->contents;
-
- for (i = 0; i < shnum; ++i) {
- struct obj_section *sec = f->sections[i];
- sec->name = shstrtab + sec->header.sh_name;
- }
-
- for (i = 0; i < shnum; ++i) {
- struct obj_section *sec = f->sections[i];
-
- /* .modinfo should be contents only but gcc has no attribute for that.
- * The kernel may have marked .modinfo as ALLOC, ignore this bit.
- */
- if (strcmp(sec->name, ".modinfo") == 0)
- sec->header.sh_flags &= ~SHF_ALLOC;
-
- if (sec->header.sh_flags & SHF_ALLOC)
- obj_insert_section_load_order(f, sec);
-
- switch (sec->header.sh_type) {
- case SHT_SYMTAB:
- {
- unsigned long nsym, j;
- char *strtab;
- ElfW(Sym) * sym;
-
- if (sec->header.sh_entsize != sizeof(ElfW(Sym))) {
- error_msg("symbol size mismatch: %lu != %lu",
- (unsigned long) sec->header.sh_entsize,
- (unsigned long) sizeof(ElfW(Sym)));
- return NULL;
- }
-
- nsym = sec->header.sh_size / sizeof(ElfW(Sym));
- strtab = f->sections[sec->header.sh_link]->contents;
- sym = (ElfW(Sym) *) sec->contents;
-
- /* Allocate space for a table of local symbols. */
- j = f->local_symtab_size = sec->header.sh_info;
- f->local_symtab = xcalloc(j, sizeof(struct obj_symbol *));
-
- /* Insert all symbols into the hash table. */
- for (j = 1, ++sym; j < nsym; ++j, ++sym) {
- const char *name;
- if (sym->st_name)
- name = strtab + sym->st_name;
- else
- name = f->sections[sym->st_shndx]->name;
-
- obj_add_symbol(f, name, j, sym->st_info, sym->st_shndx,
- sym->st_value, sym->st_size);
- }
- }
- break;
-
- case SHT_RELM:
- if (sec->header.sh_entsize != sizeof(ElfW(RelM))) {
- error_msg("relocation entry size mismatch: %lu != %lu",
- (unsigned long) sec->header.sh_entsize,
- (unsigned long) sizeof(ElfW(RelM)));
- return NULL;
- }
- break;
- /* XXX Relocation code from modutils-2.3.19 is not here.
- * Why? That's about 20 lines of code from obj/obj_load.c,
- * which gets done in a second pass through the sections.
- * This BusyBox insmod does similar work in obj_relocate(). */
- }
- }
-
- return f;
-}
-
-#ifdef BB_FEATURE_INSMOD_LOADINKMEM
-/*
- * load the unloaded sections directly into the memory allocated by
- * kernel for the module
- */
-
-static int obj_load_progbits(FILE * fp, struct obj_file* f, char* imagebase)
-{
- ElfW(Addr) base = f->baseaddr;
- struct obj_section* sec;
-
- for (sec = f->load_order; sec; sec = sec->load_next) {
-
- /* section already loaded? */
- if (sec->contents != NULL)
- continue;
-
- if (sec->header.sh_size == 0)
- continue;
-
- sec->contents = imagebase + (sec->header.sh_addr - base);
- fseek(fp, sec->header.sh_offset, SEEK_SET);
- if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
- error_msg("error reading ELF section data: %s\n", strerror(errno));
- return 0;
- }
-
- }
- return 1;
-}
-#endif
-
-static void hide_special_symbols(struct obj_file *f)
-{
- static const char *const specials[] = {
- "cleanup_module",
- "init_module",
- "kernel_version",
- NULL
- };
-
- struct obj_symbol *sym;
- const char *const *p;
-
- for (p = specials; *p; ++p)
- if ((sym = obj_find_symbol(f, *p)) != NULL)
- sym->info =
- ELFW(ST_INFO) (STB_LOCAL, ELFW(ST_TYPE) (sym->info));
-}
-
-#ifdef BB_FEATURE_INSMOD_CHECK_TAINTED
-static int obj_gpl_license(struct obj_file *f, const char **license)
-{
- struct obj_section *sec;
- /* This list must match *exactly* the list of allowable licenses in
- * linux/include/linux/module.h. Checking for leading "GPL" will not
- * work, somebody will use "GPL sucks, this is proprietary".
- */
- static const char *gpl_licenses[] = {
- "GPL",
- "GPL v2",
- "GPL and additional rights",
- "Dual BSD/GPL",
- "Dual MPL/GPL",
- };
-
- if ((sec = obj_find_section(f, ".modinfo"))) {
- const char *value, *ptr, *endptr;
- ptr = sec->contents;
- endptr = ptr + sec->header.sh_size;
- while (ptr < endptr) {
- if ((value = strchr(ptr, '=')) && strncmp(ptr, "license", value-ptr) == 0) {
- int i;
- if (license)
- *license = value+1;
- for (i = 0; i < sizeof(gpl_licenses)/sizeof(gpl_licenses[0]); ++i) {
- if (strcmp(value+1, gpl_licenses[i]) == 0)
- return(0);
- }
- return(2);
- }
- if (strchr(ptr, '\0'))
- ptr = strchr(ptr, '\0') + 1;
- else
- ptr = endptr;
- }
- }
- return(1);
-}
-
-#define TAINT_FILENAME "/proc/sys/kernel/tainted"
-#define TAINT_PROPRIETORY_MODULE (1<<0)
-#define TAINT_FORCED_MODULE (1<<1)
-#define TAINT_UNSAFE_SMP (1<<2)
-#define TAINT_URL "http://www.tux.org/lkml/#export-tainted"
-
-static void set_tainted(struct obj_file *f, int fd, char *m_name,
- int kernel_has_tainted, int taint, const char *text1, const char *text2)
-{
- char buf[80];
- int oldval;
- static int first = 1;
- if (fd < 0 && !kernel_has_tainted)
- return; /* New modutils on old kernel */
- printf("Warning: loading %s will taint the kernel: %s%s\n",
- m_name, text1, text2);
- if (first) {
- printf(" See %s for information about tainted modules\n", TAINT_URL);
- first = 0;
- }
- if (fd >= 0) {
- read(fd, buf, sizeof(buf)-1);
- buf[sizeof(buf)-1] = '\0';
- oldval = strtoul(buf, NULL, 10);
- sprintf(buf, "%d\n", oldval | taint);
- write(fd, buf, strlen(buf));
- }
-}
-#endif
-
-/* Check if loading this module will taint the kernel. */
-static void check_tainted_module(struct obj_file *f, char *m_name)
-{
-#ifdef BB_FEATURE_INSMOD_CHECK_TAINTED
- static const char tainted_file[] = TAINT_FILENAME;
- int fd, kernel_has_tainted;
- const char *ptr;
-
- kernel_has_tainted = 1;
- if ((fd = open(tainted_file, O_RDWR)) < 0) {
- if (errno == ENOENT)
- kernel_has_tainted = 0;
- else if (errno == EACCES)
- kernel_has_tainted = 1;
- else {
- perror(tainted_file);
- kernel_has_tainted = 0;
- }
- }
-
- switch (obj_gpl_license(f, &ptr)) {
- case 0:
- break;
- case 1:
- set_tainted(f, fd, m_name, kernel_has_tainted, TAINT_PROPRIETORY_MODULE, "no license", "");
- break;
- case 2:
- /* The module has a non-GPL license so we pretend that the
- * kernel always has a taint flag to get a warning even on
- * kernels without the proc flag.
- */
- set_tainted(f, fd, m_name, 1, TAINT_PROPRIETORY_MODULE, "non-GPL license - ", ptr);
- break;
- default:
- set_tainted(f, fd, m_name, 1, TAINT_PROPRIETORY_MODULE, "Unexpected return from obj_gpl_license", "");
- break;
- }
-
- if (flag_force_load)
- set_tainted(f, fd, m_name, 1, TAINT_FORCED_MODULE, "forced load", "");
-
- if (fd >= 0)
- close(fd);
-#endif
-}
-
-void my_usage(void)
-{
- printf("Usage.");
- exit(0);
-}
-
-extern int insmod_main( int argc, char **argv)
-{
- int k_crcs;
- int k_new_syscalls;
- int len;
- char *tmp;
- unsigned long m_size;
- ElfW(Addr) m_addr;
- FILE *fp;
- struct obj_file *f;
- char m_name[FILENAME_MAX] = "\0";
- int exit_status = EXIT_FAILURE;
- int m_has_modinfo;
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
- struct utsname uts_info;
- char m_strversion[STRVERSIONLEN];
- int m_version;
- int m_crcs;
-#endif
-
- if (argc <= 1)
- my_usage();
-
- argv++; argc--;
-
- /* Grab the module name */
- if ((tmp = strrchr(*argv, '/')) != NULL) {
- tmp++;
- } else {
- tmp = *argv;
- }
- len = strlen(tmp);
-
- if (len > 2 && tmp[len - 2] == '.' && tmp[len - 1] == 'o')
- len -= 2;
- memcpy(m_name, tmp, len);
- strcpy(m_fullName, m_name);
- strcat(m_fullName, ".o");
-
- /* Get a filedesc for the module. Check we we have a complete path */
- if ((fp = fopen(*argv, "r")) == NULL) {
- errorMsg("Module %s not found", *argv);
- return -1;
- } else
- memcpy(m_filename, *argv, strlen(*argv));
-
-
- if ((f = obj_load(fp, LOADBITS)) == NULL) {
- logperror("Could not load the module");
- goto out;
- }
-
- if (get_modinfo_value(f, "kernel_version") == NULL)
- m_has_modinfo = 0;
- else
- m_has_modinfo = 1;
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
- /* Version correspondence? */
- if (!flag_quiet) {
- if (uname(&uts_info) < 0)
- uts_info.release[0] = '\0';
- if (m_has_modinfo) {
- m_version = new_get_module_version(f, m_strversion);
- } else {
- m_version = old_get_module_version(f, m_strversion);
- if (m_version == -1) {
- error_msg("couldn't find the kernel version the module was "
- "compiled for");
- goto out;
- }
- }
-
- if (strncmp(uts_info.release, m_strversion, STRVERSIONLEN) != 0) {
- if (flag_force_load) {
- error_msg("Warning: kernel-module version mismatch\n"
- "\t%s was compiled for kernel version %s\n"
- "\twhile this kernel is version %s",
- m_filename, m_strversion, uts_info.release);
- } else {
- error_msg("kernel-module version mismatch\n"
- "\t%s was compiled for kernel version %s\n"
- "\twhile this kernel is version %s.",
- m_filename, m_strversion, uts_info.release);
- goto out;
- }
- }
- }
- k_crcs = 0;
-#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
-
- k_new_syscalls = !query_module(NULL, 0, NULL, 0, NULL);
-
- if (k_new_syscalls) {
-#ifdef BB_FEATURE_NEW_MODULE_INTERFACE
- if (!new_get_kernel_symbols())
- goto out;
- k_crcs = new_is_kernel_checksummed();
-#else
- error_msg("Not configured to support new kernels");
- goto out;
-#endif
- } else {
-#ifdef BB_FEATURE_OLD_MODULE_INTERFACE
- if (!old_get_kernel_symbols(m_name))
- goto out;
- k_crcs = old_is_kernel_checksummed();
-#else
- error_msg("Not configured to support old kernels");
- goto out;
-#endif
- }
-
-#ifdef BB_FEATURE_INSMOD_VERSION_CHECKING
- if (m_has_modinfo)
- m_crcs = new_is_module_checksummed(f);
- else
- m_crcs = old_is_module_checksummed(f);
-
- if (m_crcs != k_crcs)
- obj_set_symbol_compare(f, ncv_strcmp, ncv_symbol_hash);
-#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
-
- /* Let the module know about the kernel symbols. */
- add_kernel_symbols(f);
-
- /* Allocate common symbols, symbol tables, and string tables. */
-
- if (k_new_syscalls
- ? !new_create_this_module(f, m_name)
- : !old_create_mod_use_count(f))
- {
- goto out;
- }
-
- if (!obj_check_undefineds(f)) {
- goto out;
- }
- obj_allocate_commons(f);
- check_tainted_module(f, m_name);
-
- if (m_has_modinfo
- ? !new_process_module_arguments(f, argc - 1, argv + 1)
- : !old_process_module_arguments(f, argc - 1, argv + 1))
- {
- goto out;
- }
-
- arch_create_got(f);
- hide_special_symbols(f);
-
- if (k_new_syscalls)
- new_create_module_ksymtab(f);
-
- /* Find current size of the module */
- m_size = obj_load_size(f);
-
-
- m_addr = create_module(m_name, m_size);
- if (m_addr==-1) switch (errno) {
- case EEXIST:
- error_msg("A module named %s already exists", m_name);
- goto out;
- case ENOMEM:
- error_msg("Can't allocate kernel memory for module; needed %lu bytes",
- m_size);
- goto out;
- default:
- perror_msg("create_module: %s", m_name);
- goto out;
- }
-
-#if !LOADBITS
- /*
- * the PROGBITS section was not loaded by the obj_load
- * now we can load them directly into the kernel memory
- */
- if (!obj_load_progbits(fp, f, (char*)m_addr)) {
- delete_module(m_name);
- goto out;
- }
-#endif
-
- if (!obj_relocate(f, m_addr)) {
- delete_module(m_name);
- goto out;
- }
-
- if (k_new_syscalls
- ? !new_init_module(m_name, f, m_size)
- : !old_init_module(m_name, f, m_size))
- {
- delete_module(m_name);
- goto out;
- }
-
- exit_status = EXIT_SUCCESS;
-
-out:
- fclose(fp);
- return(exit_status);
-}
-
-int insmod_call(char * full_filename, char * params)
-{
- int argc = 2;
- char *argv[50];
- char * ptr = params;
- argv[0] = "stage1";
- argv[1] = full_filename;
-
- while (ptr != NULL) {
- argv[argc] = ptr;
- argc++;
- ptr = strchr(ptr, ' ');
- if (ptr) {
- ptr[0] = '\0';
- ptr++;
- }
- }
-
- return insmod_main(argc, argv);
-}
diff --git a/mdk-stage1/insmod-busybox/loop.h b/mdk-stage1/insmod-busybox/loop.h
deleted file mode 100644
index cba8c6b2b..000000000
--- a/mdk-stage1/insmod-busybox/loop.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <linux/posix_types.h>
-#undef dev_t
-#define dev_t __kernel_dev_t
-#include <linux/loop.h>
-#undef dev_t
diff --git a/mdk-stage1/insmod-busybox/messages.c b/mdk-stage1/insmod-busybox/messages.c
deleted file mode 100644
index 81fd9c75c..000000000
--- a/mdk-stage1/insmod-busybox/messages.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Copyright (C) 2000 by BitterSweet Enterprises, LLC.
- * Written by Karl M. Hegbloom <karlheg@debian.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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-/*
- * Let's put all of these messages in one place, and link this in as
- * a separate object module, so that there are not going to be
- * multiple non-unique but very similar strings in the binary.
- * Perhaps this will make it simpler to internationalize also, and
- * may make the binary slightly smaller.
- */
-
-// To use this header file, include something like this:
-//
-//#define BB_DECLARE_EXTERN
-//#define bb_need_memory_exhausted
-//#include "messages.c"
-//
-//Then just use the string memory_exhausted when it is needed.
-//
-
-#include "busybox.h"
-#ifndef _BB_MESSAGES_C
-#define _BB_MESSAGES_C
-
-#ifdef BB_DECLARE_EXTERN
-# define BB_DEF_MESSAGE(symbol, string_const) extern const char *symbol;
-#else
-# define BB_DEF_MESSAGE(symbol, string_const) const char *symbol = string_const;
-#endif
-
-
-#if defined bb_need_full_version || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(full_version,
- "BusyBox v" BB_VER " (" BB_BT ") multi-call binary -- GPL2")
-#endif
-#if defined bb_need_name_too_long || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(name_too_long, "file name too long\n")
-#endif
-#if defined bb_need_omitting_directory || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(omitting_directory, "%s: omitting directory\n")
-#endif
-#if defined bb_need_not_a_directory || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(not_a_directory, "%s: not a directory\n")
-#endif
-#if defined bb_need_memory_exhausted || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(memory_exhausted, "memory exhausted\n")
-#endif
-#if defined bb_need_invalid_date || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(invalid_date, "invalid date `%s'\n")
-#endif
-#if defined bb_need_invalid_option || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(invalid_option, "invalid option -- %c\n")
-#endif
-#if defined bb_need_io_error || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(io_error, "%s: input/output error -- %s\n")
-#endif
-#if defined bb_need_help || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(dash_dash_help, "--help")
-#endif
-#if defined bb_need_write_error || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(write_error, "Write Error\n")
-#endif
-#if defined bb_need_too_few_args || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(too_few_args, "too few arguments\n")
-#endif
-#if defined bb_need_name_longer_then_foo || ! defined BB_DECLARE_EXTERN
- BB_DEF_MESSAGE(name_longer_then_foo, "Names longer then %d chars not supported.\n")
-#endif
-
-
-#endif /* _BB_MESSAGES_C */
-
diff --git a/mdk-stage1/insmod-busybox/utility.c b/mdk-stage1/insmod-busybox/utility.c
deleted file mode 100644
index ffd323347..000000000
--- a/mdk-stage1/insmod-busybox/utility.c
+++ /dev/null
@@ -1,1759 +0,0 @@
-/* vi: set sw=4 ts=4: */
-/*
- * Utility routines.
- *
- * Copyright (C) tons of folks. Tracking down who wrote what
- * isn't something I'm going to worry about... If you wrote something
- * here, please feel free to acknowledge your work.
- *
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
- * Permission has been granted to redistribute this code under the GPL.
- *
- */
-
-#include "busybox.h"
-#if defined (BB_CHMOD_CHOWN_CHGRP) \
- || defined (BB_CP_MV) \
- || defined (BB_FIND) \
- || defined (BB_INSMOD) \
- || defined (BB_LS) \
- || defined (BB_RM) \
- || defined (BB_TAR)
-/* same conditions as recursiveAction */
-#define bb_need_name_too_long
-#endif
-#define bb_need_memory_exhausted
-#define bb_need_full_version
-#define BB_DECLARE_EXTERN
-#include "messages.c"
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <time.h>
-#include <utime.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/ioctl.h>
-#include <sys/utsname.h> /* for uname(2) */
-
-/* Busybox mount uses either /proc/filesystems or /dev/mtab to get the
- * list of available filesystems used for the -t auto option */
-#if defined BB_FEATURE_USE_PROCFS && defined BB_FEATURE_USE_DEVPS_PATCH
-//#error Sorry, but busybox can't use both /proc and /dev/ps at the same time -- Pick one and try again.
-#error "Sorry, but busybox can't use both /proc and /dev/ps at the same time -- Pick one and try again."
-#endif
-
-
-#if defined BB_MOUNT || defined BB_UMOUNT || defined BB_DF
-# if defined BB_MTAB
-const char mtab_file[] = "/etc/mtab";
-# else
-# if defined BB_FEATURE_USE_PROCFS
-const char mtab_file[] = "/proc/mounts";
-# else
-# if defined BB_FEATURE_USE_DEVPS_PATCH
-const char mtab_file[] = "/dev/mtab";
-# else
-# error With (BB_MOUNT||BB_UMOUNT||BB_DF) defined, you must define either BB_MTAB or ( BB_FEATURE_USE_PROCFS | BB_FEATURE_USE_DEVPS_PATCH)
-# endif
-# endif
-# endif
-#endif
-
-#ifdef _STANDALONE_
-void errorMsg(const char *s, ...)
-{
- va_list p;
-
- fflush(stdout);
- printf("busybox: ");
- va_start(p, s);
- vprintf(s, p);
- va_end(p);
- printf("\n");
- fflush(stdout);
-}
-
-extern void logperror(char *s)
-{
- perror(s);
-}
-
-void fatalError(const char *s, ...)
-{
- va_list p;
-
- fflush(stdout);
- fprintf(stdout, "busybox: ");
- va_start(p, s);
- vfprintf(stdout, s, p);
- va_end(p);
- fprintf(stdout, "\n");
- fflush(stdout);
- exit(FALSE);
-}
-#else /* _STANDALONE_ */
-#include "../log.h"
-extern void errorMsg(const char *s, ...)
-{
- va_list p;
-
- va_start(p, s);
- vlog_message(s, p);
- va_end(p);
-}
-
-extern void logperror(char *s)
-{
- log_perror(s);
-}
-
-extern void fatalError(const char *s, ...)
-{
- va_list p;
-
- va_start(p, s);
- vlog_message(s, p);
- va_end(p);
- while (1);
-}
-#endif /* _STANDALONE_ */
-
-
-#if defined BB_INIT
-/* Returns kernel version encoded as major*65536 + minor*256 + patch,
- * so, for example, to check if the kernel is greater than 2.2.11:
- * if (get_kernel_revision() <= 2*65536+2*256+11) { <stuff> }
- */
-extern int get_kernel_revision(void)
-{
- struct utsname name;
- int major = 0, minor = 0, patch = 0;
-
- if (uname(&name) == -1) {
- perror("cannot get system information");
- return (0);
- }
- sscanf(name.version, "%d.%d.%d", &major, &minor, &patch);
- return major * 65536 + minor * 256 + patch;
-}
-#endif /* BB_INIT */
-
-
-
-#if defined BB_FREE || defined BB_INIT || defined BB_UNAME || defined BB_UPTIME
-_syscall1(int, sysinfo, struct sysinfo *, info);
-#endif /* BB_INIT */
-
-#if defined BB_MOUNT || defined BB_UMOUNT
-
-#ifndef __NR_umount2
-#define __NR_umount2 52
-#endif
-
-/* Include our own version of <sys/mount.h>, since libc5 doesn't
- * know about umount2 */
-extern _syscall1(int, umount, const char *, special_file);
-extern _syscall2(int, umount2, const char *, special_file, int, flags);
-extern _syscall5(int, mount, const char *, special_file, const char *, dir,
- const char *, fstype, unsigned long int, rwflag, const void *, data);
-#endif
-
-#if defined BB_INSMOD || defined BB_LSMOD
-#ifndef __NR_query_module
-#define __NR_query_module 167
-#endif
-_syscall5(int, query_module, const char *, name, int, which,
- void *, buf, size_t, bufsize, size_t*, ret);
-#endif
-
-
-#if defined (BB_CP_MV) || defined (BB_DU)
-
-#define HASH_SIZE 311 /* Should be prime */
-#define hash_inode(i) ((i) % HASH_SIZE)
-
-static ino_dev_hashtable_bucket_t *ino_dev_hashtable[HASH_SIZE];
-
-/*
- * Return 1 if statbuf->st_ino && statbuf->st_dev are recorded in
- * `ino_dev_hashtable', else return 0
- *
- * If NAME is a non-NULL pointer to a character pointer, and there is
- * a match, then set *NAME to the value of the name slot in that
- * bucket.
- */
-int is_in_ino_dev_hashtable(const struct stat *statbuf, char **name)
-{
- ino_dev_hashtable_bucket_t *bucket;
-
- bucket = ino_dev_hashtable[hash_inode(statbuf->st_ino)];
- while (bucket != NULL) {
- if ((bucket->ino == statbuf->st_ino) &&
- (bucket->dev == statbuf->st_dev))
- {
- if (name) *name = bucket->name;
- return 1;
- }
- bucket = bucket->next;
- }
- return 0;
-}
-
-/* Add statbuf to statbuf hash table */
-void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name)
-{
- int i;
- size_t s;
- ino_dev_hashtable_bucket_t *bucket;
-
- i = hash_inode(statbuf->st_ino);
- s = name ? strlen(name) : 0;
- bucket = xmalloc(sizeof(ino_dev_hashtable_bucket_t) + s);
- bucket->ino = statbuf->st_ino;
- bucket->dev = statbuf->st_dev;
- if (name)
- strcpy(bucket->name, name);
- else
- bucket->name[0] = '\0';
- bucket->next = ino_dev_hashtable[i];
- ino_dev_hashtable[i] = bucket;
-}
-
-/* Clear statbuf hash table */
-void reset_ino_dev_hashtable(void)
-{
- int i;
- ino_dev_hashtable_bucket_t *bucket;
-
- for (i = 0; i < HASH_SIZE; i++) {
- while (ino_dev_hashtable[i] != NULL) {
- bucket = ino_dev_hashtable[i]->next;
- free(ino_dev_hashtable[i]);
- ino_dev_hashtable[i] = bucket;
- }
- }
-}
-
-#endif /* BB_CP_MV || BB_DU */
-
-#if defined (BB_CP_MV) || defined (BB_DU) || defined (BB_LN) || defined (BB_AR)
-/*
- * Return TRUE if a fileName is a directory.
- * Nonexistant files return FALSE.
- */
-int isDirectory(const char *fileName, const int followLinks, struct stat *statBuf)
-{
- int status;
- int didMalloc = 0;
-
- if (statBuf == NULL) {
- statBuf = (struct stat *)xmalloc(sizeof(struct stat));
- ++didMalloc;
- }
-
- if (followLinks == TRUE)
- status = stat(fileName, statBuf);
- else
- status = lstat(fileName, statBuf);
-
- if (status < 0 || !(S_ISDIR(statBuf->st_mode))) {
- status = FALSE;
- }
- else status = TRUE;
-
- if (didMalloc) {
- free(statBuf);
- statBuf = NULL;
- }
- return status;
-}
-#endif
-
-#if defined (BB_AR) || defined BB_CP_MV
-/*
- * Copy readSize bytes between two file descriptors
- */
-int copySubFile(int srcFd, int dstFd, size_t remaining)
-{
- size_t size;
- char buffer[BUFSIZ];
-
- while (remaining > 0) {
- if (remaining > BUFSIZ)
- size = BUFSIZ;
- else
- size = remaining;
- if (fullWrite(dstFd, buffer, fullRead(srcFd, buffer, size)) < size)
- return(FALSE);
- remaining -= size;
- }
- return (TRUE);
-}
-#endif
-
-
-#if defined (BB_CP_MV)
-/*
- * Copy one file to another, while possibly preserving its modes, times, and
- * modes. Returns TRUE if successful, or FALSE on a failure with an error
- * message output. (Failure is not indicated if attributes cannot be set.)
- * -Erik Andersen
- */
-int
-copyFile(const char *srcName, const char *destName,
- int setModes, int followLinks, int forceFlag)
-{
- int rfd;
- int wfd;
- int status;
- struct stat srcStatBuf;
- struct stat dstStatBuf;
- struct utimbuf times;
-
- if (followLinks == TRUE)
- status = stat(srcName, &srcStatBuf);
- else
- status = lstat(srcName, &srcStatBuf);
-
- if (status < 0) {
- perror(srcName);
- return FALSE;
- }
-
- if (followLinks == TRUE)
- status = stat(destName, &dstStatBuf);
- else
- status = lstat(destName, &dstStatBuf);
-
- if (status < 0 || forceFlag==TRUE) {
- unlink(destName);
- dstStatBuf.st_ino = -1;
- dstStatBuf.st_dev = -1;
- }
-
- if ((srcStatBuf.st_dev == dstStatBuf.st_dev) &&
- (srcStatBuf.st_ino == dstStatBuf.st_ino)) {
- errorMsg("Copying file \"%s\" to itself\n", srcName);
- return FALSE;
- }
-
- if (S_ISDIR(srcStatBuf.st_mode)) {
- //fprintf(stderr, "copying directory %s to %s\n", srcName, destName);
- /* Make sure the directory is writable */
- status = mkdir(destName, 0777777 ^ umask(0));
- if (status < 0 && errno != EEXIST) {
- perror(destName);
- return FALSE;
- }
- } else if (S_ISLNK(srcStatBuf.st_mode)) {
- char link_val[BUFSIZ + 1];
- int link_size;
-
- //fprintf(stderr, "copying link %s to %s\n", srcName, destName);
- /* Warning: This could possibly truncate silently, to BUFSIZ chars */
- link_size = readlink(srcName, &link_val[0], BUFSIZ);
- if (link_size < 0) {
- perror(srcName);
- return FALSE;
- }
- link_val[link_size] = '\0';
- status = symlink(link_val, destName);
- if (status < 0) {
- perror(destName);
- return FALSE;
- }
-#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)
- if (setModes == TRUE) {
- /* Try to set owner, but fail silently like GNU cp */
- lchown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid);
- }
-#endif
- return TRUE;
- } else if (S_ISFIFO(srcStatBuf.st_mode)) {
- //fprintf(stderr, "copying fifo %s to %s\n", srcName, destName);
- if (mkfifo(destName, 0644) < 0) {
- perror(destName);
- return FALSE;
- }
- } else if (S_ISBLK(srcStatBuf.st_mode) || S_ISCHR(srcStatBuf.st_mode)
- || S_ISSOCK(srcStatBuf.st_mode)) {
- //fprintf(stderr, "copying soc, blk, or chr %s to %s\n", srcName, destName);
- if (mknod(destName, srcStatBuf.st_mode, srcStatBuf.st_rdev) < 0) {
- perror(destName);
- return FALSE;
- }
- } else if (S_ISREG(srcStatBuf.st_mode)) {
- //fprintf(stderr, "copying regular file %s to %s\n", srcName, destName);
- rfd = open(srcName, O_RDONLY);
- if (rfd < 0) {
- perror(srcName);
- return FALSE;
- }
-
- wfd = open(destName, O_WRONLY | O_CREAT | O_TRUNC,
- srcStatBuf.st_mode);
- if (wfd < 0) {
- perror(destName);
- close(rfd);
- return FALSE;
- }
-
- if (copySubFile(rfd, wfd, srcStatBuf.st_size)==FALSE)
- goto error_exit;
-
- close(rfd);
- if (close(wfd) < 0) {
- return FALSE;
- }
- }
-
- if (setModes == TRUE) {
- /* This is fine, since symlinks never get here */
- if (chown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid) < 0) {
- perror(destName);
- exit FALSE;
- }
- if (chmod(destName, srcStatBuf.st_mode) < 0) {
- perror(destName);
- exit FALSE;
- }
- times.actime = srcStatBuf.st_atime;
- times.modtime = srcStatBuf.st_mtime;
- if (utime(destName, &times) < 0) {
- perror(destName);
- exit FALSE;
- }
- }
-
- return TRUE;
-
- error_exit:
- perror(destName);
- close(rfd);
- close(wfd);
-
- return FALSE;
-}
-#endif /* BB_CP_MV */
-
-
-
-#if defined BB_TAR || defined BB_LS ||defined BB_AR
-
-#define TYPEINDEX(mode) (((mode) >> 12) & 0x0f)
-#define TYPECHAR(mode) ("0pcCd?bB-?l?s???" [TYPEINDEX(mode)])
-
-/* The special bits. If set, display SMODE0/1 instead of MODE0/1 */
-static const mode_t SBIT[] = {
- 0, 0, S_ISUID,
- 0, 0, S_ISGID,
- 0, 0, S_ISVTX
-};
-
-/* The 9 mode bits to test */
-static const mode_t MBIT[] = {
- S_IRUSR, S_IWUSR, S_IXUSR,
- S_IRGRP, S_IWGRP, S_IXGRP,
- S_IROTH, S_IWOTH, S_IXOTH
-};
-
-#define MODE1 "rwxrwxrwx"
-#define MODE0 "---------"
-#define SMODE1 "..s..s..t"
-#define SMODE0 "..S..S..T"
-
-/*
- * Return the standard ls-like mode string from a file mode.
- * This is static and so is overwritten on each call.
- */
-const char *modeString(int mode)
-{
- static char buf[12];
-
- int i;
-
- buf[0] = TYPECHAR(mode);
- for (i = 0; i < 9; i++) {
- if (mode & SBIT[i])
- buf[i + 1] = (mode & MBIT[i]) ? SMODE1[i] : SMODE0[i];
- else
- buf[i + 1] = (mode & MBIT[i]) ? MODE1[i] : MODE0[i];
- }
- return buf;
-}
-#endif /* BB_TAR || BB_LS */
-
-
-#if defined BB_TAR || defined BB_AR
-/*
- * Return the standard ls-like time string from a time_t
- * This is static and so is overwritten on each call.
- */
-const char *timeString(time_t timeVal)
-{
- time_t now;
- char *str;
- static char buf[26];
-
- time(&now);
-
- str = ctime(&timeVal);
-
- strcpy(buf, &str[4]);
- buf[12] = '\0';
-
- if ((timeVal > now) || (timeVal < now - 365 * 24 * 60 * 60L)) {
- strcpy(&buf[7], &str[20]);
- buf[11] = '\0';
- }
-
- return buf;
-}
-#endif /* BB_TAR || BB_AR */
-
-#if defined BB_TAR || defined BB_CP_MV || defined BB_AR
-/*
- * Write all of the supplied buffer out to a file.
- * This does multiple writes as necessary.
- * Returns the amount written, or -1 on an error.
- */
-int fullWrite(int fd, const char *buf, int len)
-{
- int cc;
- int total;
-
- total = 0;
-
- while (len > 0) {
- cc = write(fd, buf, len);
-
- if (cc < 0)
- return -1;
-
- buf += cc;
- total += cc;
- len -= cc;
- }
-
- return total;
-}
-#endif /* BB_TAR || BB_CP_MV || BB_AR */
-
-
-#if defined BB_TAR || defined BB_TAIL || defined BB_AR || defined BB_SH || defined BB_CP_MV
-/*
- * Read all of the supplied buffer from a file.
- * This does multiple reads as necessary.
- * Returns the amount read, or -1 on an error.
- * A short read is returned on an end of file.
- */
-int fullRead(int fd, char *buf, int len)
-{
- int cc;
- int total;
-
- total = 0;
-
- while (len > 0) {
- cc = read(fd, buf, len);
-
- if (cc < 0)
- return -1;
-
- if (cc == 0)
- break;
-
- buf += cc;
- total += cc;
- len -= cc;
- }
-
- return total;
-}
-#endif /* BB_TAR || BB_TAIL || BB_AR || BB_SH */
-
-
-#if defined (BB_CHMOD_CHOWN_CHGRP) \
- || defined (BB_CP_MV) \
- || defined (BB_FIND) \
- || defined (BB_INSMOD) \
- || defined (BB_LS) \
- || defined (BB_RM) \
- || defined (BB_TAR)
-
-/*
- * Walk down all the directories under the specified
- * location, and do something (something specified
- * by the fileAction and dirAction function pointers).
- *
- * Unfortunatly, while nftw(3) could replace this and reduce
- * code size a bit, nftw() wasn't supported before GNU libc 2.1,
- * and so isn't sufficiently portable to take over since glibc2.1
- * is so stinking huge.
- */
-int recursiveAction(const char *fileName,
- int recurse, int followLinks, int depthFirst,
- int (*fileAction) (const char *fileName,
- struct stat * statbuf,
- void* userData),
- int (*dirAction) (const char *fileName,
- struct stat * statbuf,
- void* userData),
- void* userData)
-{
- int status;
- struct stat statbuf;
- struct dirent *next;
-
- if (followLinks == TRUE)
- status = stat(fileName, &statbuf);
- else
- status = lstat(fileName, &statbuf);
-
- if (status < 0) {
-#ifdef BB_DEBUG_PRINT_SCAFFOLD
- fprintf(stderr,
- "status=%d followLinks=%d TRUE=%d\n",
- status, followLinks, TRUE);
-#endif
- perror(fileName);
- return FALSE;
- }
-
- if ((followLinks == FALSE) && (S_ISLNK(statbuf.st_mode))) {
- if (fileAction == NULL)
- return TRUE;
- else
- return fileAction(fileName, &statbuf, userData);
- }
-
- if (recurse == FALSE) {
- if (S_ISDIR(statbuf.st_mode)) {
- if (dirAction != NULL)
- return (dirAction(fileName, &statbuf, userData));
- else
- return TRUE;
- }
- }
-
- if (S_ISDIR(statbuf.st_mode)) {
- DIR *dir;
-
- dir = opendir(fileName);
- if (!dir) {
- perror(fileName);
- return FALSE;
- }
- if (dirAction != NULL && depthFirst == FALSE) {
- status = dirAction(fileName, &statbuf, userData);
- if (status == FALSE) {
- perror(fileName);
- return FALSE;
- }
- }
- while ((next = readdir(dir)) != NULL) {
- char nextFile[BUFSIZ + 1];
-
- if ((strcmp(next->d_name, "..") == 0)
- || (strcmp(next->d_name, ".") == 0)) {
- continue;
- }
- if (strlen(fileName) + strlen(next->d_name) + 1 > BUFSIZ) {
- errorMsg("name_too_long");
- return FALSE;
- }
- memset(nextFile, 0, sizeof(nextFile));
- sprintf(nextFile, "%s/%s", fileName, next->d_name);
- status =
- recursiveAction(nextFile, TRUE, followLinks, depthFirst,
- fileAction, dirAction, userData);
- if (status == FALSE) {
- closedir(dir);
- return FALSE;
- }
- }
- status = closedir(dir);
- if (status < 0) {
- perror(fileName);
- return FALSE;
- }
- if (dirAction != NULL && depthFirst == TRUE) {
- status = dirAction(fileName, &statbuf, userData);
- if (status == FALSE) {
- perror(fileName);
- return FALSE;
- }
- }
- } else {
- if (fileAction == NULL)
- return TRUE;
- else
- return fileAction(fileName, &statbuf, userData);
- }
- return TRUE;
-}
-
-#endif /* BB_CHMOD_CHOWN_CHGRP || BB_CP_MV || BB_FIND || BB_LS || BB_INSMOD */
-
-
-
-#if defined (BB_TAR) || defined (BB_MKDIR) || defined (BB_AR)
-/*
- * Attempt to create the directories along the specified path, except for
- * the final component. The mode is given for the final directory only,
- * while all previous ones get default protections. Errors are not reported
- * here, as failures to restore files can be reported later.
- */
-extern int createPath(const char *name, int mode)
-{
- char *cp;
- char *cpOld;
- char buf[BUFSIZ + 1];
- int retVal = 0;
-
- strcpy(buf, name);
- for (cp = buf; *cp == '/'; cp++);
- cp = strchr(cp, '/');
- while (cp) {
- cpOld = cp;
- cp = strchr(cp + 1, '/');
- *cpOld = '\0';
- retVal = mkdir(buf, cp ? 0777 : mode);
- if (retVal != 0 && errno != EEXIST) {
- perror(buf);
- return FALSE;
- }
- *cpOld = '/';
- }
- return TRUE;
-}
-#endif /* BB_TAR || BB_MKDIR */
-
-
-
-#if defined (BB_CHMOD_CHOWN_CHGRP) || defined (BB_MKDIR) \
- || defined (BB_MKFIFO) || defined (BB_MKNOD) || defined (BB_AR)
-/* [ugoa]{+|-|=}[rwxst] */
-
-
-
-extern int parse_mode(const char *s, mode_t * theMode)
-{
- mode_t andMode =
-
- S_ISVTX | S_ISUID | S_ISGID | S_IRWXU | S_IRWXG | S_IRWXO;
- mode_t orMode = 0;
- mode_t mode = 0;
- mode_t groups = 0;
- char type;
- char c;
-
- if (s==NULL)
- return (FALSE);
-
- do {
- for (;;) {
- switch (c = *s++) {
- case '\0':
- return -1;
- case 'u':
- groups |= S_ISUID | S_IRWXU;
- continue;
- case 'g':
- groups |= S_ISGID | S_IRWXG;
- continue;
- case 'o':
- groups |= S_IRWXO;
- continue;
- case 'a':
- groups |= S_ISUID | S_ISGID | S_IRWXU | S_IRWXG | S_IRWXO;
- continue;
- case '+':
- case '=':
- case '-':
- type = c;
- if (groups == 0) /* The default is "all" */
- groups |=
- S_ISUID | S_ISGID | S_IRWXU | S_IRWXG | S_IRWXO;
- break;
- default:
- if (isdigit(c) && c >= '0' && c <= '7' &&
- mode == 0 && groups == 0) {
- *theMode = strtol(--s, NULL, 8);
- return (TRUE);
- } else
- return (FALSE);
- }
- break;
- }
-
- while ((c = *s++) != '\0') {
- switch (c) {
- case ',':
- break;
- case 'r':
- mode |= S_IRUSR | S_IRGRP | S_IROTH;
- continue;
- case 'w':
- mode |= S_IWUSR | S_IWGRP | S_IWOTH;
- continue;
- case 'x':
- mode |= S_IXUSR | S_IXGRP | S_IXOTH;
- continue;
- case 's':
- mode |= S_IXGRP | S_ISUID | S_ISGID;
- continue;
- case 't':
- mode |= 0;
- continue;
- default:
- *theMode &= andMode;
- *theMode |= orMode;
- return (TRUE);
- }
- break;
- }
- switch (type) {
- case '=':
- andMode &= ~(groups);
- /* fall through */
- case '+':
- orMode |= mode & groups;
- break;
- case '-':
- andMode &= ~(mode & groups);
- orMode &= andMode;
- break;
- }
- } while (c == ',');
- *theMode &= andMode;
- *theMode |= orMode;
- return (TRUE);
-}
-
-
-#endif
-/* BB_CHMOD_CHOWN_CHGRP || BB_MKDIR || BB_MKFIFO || BB_MKNOD */
-
-
-
-
-
-#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \
- || defined BB_TAR || defined BB_ID || defined BB_LOGGER \
- || defined BB_LOGNAME || defined BB_WHOAMI
-
-/* This parses entries in /etc/passwd and /etc/group. This is desirable
- * for BusyBox, since we want to avoid using the glibc NSS stuff, which
- * increases target size and is often not needed or wanted for embedded
- * systems.
- *
- * /etc/passwd entries look like this:
- * root:x:0:0:root:/root:/bin/bash
- * and /etc/group entries look like this:
- * root:x:0:
- *
- * This uses buf as storage to hold things.
- *
- */
-unsigned long my_getid(const char *filename, char *name, long id, long *gid)
-{
- FILE *file;
- char *rname, *start, *end, buf[128];
- long rid;
- long rgid = 0;
-
- file = fopen(filename, "r");
- if (file == NULL) {
- /* Do not complain. It is ok for /etc/passwd and
- * friends to be missing... */
- return (-1);
- }
-
- while (fgets(buf, 128, file) != NULL) {
- if (buf[0] == '#')
- continue;
-
- /* username/group name */
- start = buf;
- end = strchr(start, ':');
- if (end == NULL)
- continue;
- *end = '\0';
- rname = start;
-
- /* password */
- start = end + 1;
- end = strchr(start, ':');
- if (end == NULL)
- continue;
-
- /* uid in passwd, gid in group */
- start = end + 1;
- rid = (unsigned long) strtol(start, &end, 10);
- if (end == start)
- continue;
-
- /* gid in passwd */
- start = end + 1;
- rgid = (unsigned long) strtol(start, &end, 10);
-
- if (name) {
- if (0 == strcmp(rname, name)) {
- if (gid) *gid = rgid;
- fclose(file);
- return (rid);
- }
- }
- if (id != -1 && id == rid) {
- strncpy(name, rname, 8);
- if (gid) *gid = rgid;
- fclose(file);
- return (TRUE);
- }
- }
- fclose(file);
- return (-1);
-}
-
-/* returns a uid given a username */
-long my_getpwnam(char *name)
-{
- return my_getid("/etc/passwd", name, -1, NULL);
-}
-
-/* returns a gid given a group name */
-long my_getgrnam(char *name)
-{
- return my_getid("/etc/group", name, -1, NULL);
-}
-
-/* gets a username given a uid */
-void my_getpwuid(char *name, long uid)
-{
- my_getid("/etc/passwd", name, uid, NULL);
-}
-
-/* gets a groupname given a gid */
-void my_getgrgid(char *group, long gid)
-{
- my_getid("/etc/group", group, gid, NULL);
-}
-
-/* gets a gid given a user name */
-long my_getpwnamegid(char *name)
-{
- long gid;
- my_getid("/etc/passwd", name, -1, &gid);
- return gid;
-}
-
-#endif
- /* BB_CHMOD_CHOWN_CHGRP || BB_PS || BB_LS || BB_TAR \
- || BB_ID || BB_LOGGER || BB_LOGNAME || BB_WHOAMI */
-
-
-#if (defined BB_CHVT) || (defined BB_DEALLOCVT) || (defined BB_SETKEYCODES)
-
-/* From <linux/kd.h> */
-#define KDGKBTYPE 0x4B33 /* get keyboard type */
-#define KB_84 0x01
-#define KB_101 0x02 /* this is what we always answer */
-
-int is_a_console(int fd)
-{
- char arg;
-
- arg = 0;
- return (ioctl(fd, KDGKBTYPE, &arg) == 0
- && ((arg == KB_101) || (arg == KB_84)));
-}
-
-static int open_a_console(char *fnam)
-{
- int fd;
-
- /* try read-only */
- fd = open(fnam, O_RDWR);
-
- /* if failed, try read-only */
- if (fd < 0 && errno == EACCES)
- fd = open(fnam, O_RDONLY);
-
- /* if failed, try write-only */
- if (fd < 0 && errno == EACCES)
- fd = open(fnam, O_WRONLY);
-
- /* if failed, fail */
- if (fd < 0)
- return -1;
-
- /* if not a console, fail */
- if (!is_a_console(fd)) {
- close(fd);
- return -1;
- }
-
- /* success */
- return fd;
-}
-
-/*
- * Get an fd for use with kbd/console ioctls.
- * We try several things because opening /dev/console will fail
- * if someone else used X (which does a chown on /dev/console).
- *
- * if tty_name is non-NULL, try this one instead.
- */
-
-int get_console_fd(char *tty_name)
-{
- int fd;
-
- if (tty_name) {
- if (-1 == (fd = open_a_console(tty_name)))
- return -1;
- else
- return fd;
- }
-
- fd = open_a_console("/dev/tty");
- if (fd >= 0)
- return fd;
-
- fd = open_a_console("/dev/tty0");
- if (fd >= 0)
- return fd;
-
- fd = open_a_console("/dev/console");
- if (fd >= 0)
- return fd;
-
- for (fd = 0; fd < 3; fd++)
- if (is_a_console(fd))
- return fd;
-
- errorMsg("Couldnt get a file descriptor referring to the console\n");
- return -1; /* total failure */
-}
-
-
-#endif /* BB_CHVT || BB_DEALLOCVT || BB_SETKEYCODES */
-
-
-#if defined BB_FIND || defined BB_INSMOD
-/*
- * Routine to see if a text string is matched by a wildcard pattern.
- * Returns TRUE if the text is matched, or FALSE if it is not matched
- * or if the pattern is invalid.
- * * matches zero or more characters
- * ? matches a single character
- * [abc] matches 'a', 'b' or 'c'
- * \c quotes character c
- * Adapted from code written by Ingo Wilken, and
- * then taken from sash, Copyright (c) 1999 by David I. Bell
- * Permission is granted to use, distribute, or modify this source,
- * provided that this copyright notice remains intact.
- * Permission to distribute this code under the GPL has been granted.
- */
-extern int check_wildcard_match(const char *text, const char *pattern)
-{
- const char *retryPat;
- const char *retryText;
- int ch;
- int found;
- int len;
-
- retryPat = NULL;
- retryText = NULL;
-
- while (*text || *pattern) {
- ch = *pattern++;
-
- switch (ch) {
- case '*':
- retryPat = pattern;
- retryText = text;
- break;
-
- case '[':
- found = FALSE;
-
- while ((ch = *pattern++) != ']') {
- if (ch == '\\')
- ch = *pattern++;
-
- if (ch == '\0')
- return FALSE;
-
- if (*text == ch)
- found = TRUE;
- }
- len=strlen(text);
- if (found == FALSE && len!=0) {
- return FALSE;
- }
- if (found == TRUE) {
- if (strlen(pattern)==0 && len==1) {
- return TRUE;
- }
- if (len!=0) {
- text++;
- continue;
- }
- }
-
- /* fall into next case */
-
- case '?':
- if (*text++ == '\0')
- return FALSE;
-
- break;
-
- case '\\':
- ch = *pattern++;
-
- if (ch == '\0')
- return FALSE;
-
- /* fall into next case */
-
- default:
- if (*text == ch) {
- if (*text)
- text++;
- break;
- }
-
- if (*text) {
- pattern = retryPat;
- text = ++retryText;
- break;
- }
-
- return FALSE;
- }
-
- if (pattern == NULL)
- return FALSE;
- }
-
- return TRUE;
-}
-#endif /* BB_FIND || BB_INSMOD */
-
-
-
-
-#if defined BB_DF || defined BB_MTAB
-/*
- * Given a block device, find the mount table entry if that block device
- * is mounted.
- *
- * Given any other file (or directory), find the mount table entry for its
- * filesystem.
- */
-extern struct mntent *findMountPoint(const char *name, const char *table)
-{
- struct stat s;
- dev_t mountDevice;
- FILE *mountTable;
- struct mntent *mountEntry;
-
- if (stat(name, &s) != 0)
- return 0;
-
- if ((s.st_mode & S_IFMT) == S_IFBLK)
- mountDevice = s.st_rdev;
- else
- mountDevice = s.st_dev;
-
-
- if ((mountTable = setmntent(table, "r")) == 0)
- return 0;
-
- while ((mountEntry = getmntent(mountTable)) != 0) {
- if (strcmp(name, mountEntry->mnt_dir) == 0
- || strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */
- break;
- if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */
- break;
- if (stat(mountEntry->mnt_dir, &s) == 0 && s.st_dev == mountDevice) /* Match the directory's mount point. */
- break;
- }
- endmntent(mountTable);
- return mountEntry;
-}
-#endif /* BB_DF || BB_MTAB */
-
-
-
-#if defined BB_DD || defined BB_TAIL
-/*
- * Read a number with a possible multiplier.
- * Returns -1 if the number format is illegal.
- */
-extern long getNum(const char *cp)
-{
- long value;
-
- if (!isDecimal(*cp))
- return -1;
-
- value = 0;
-
- while (isDecimal(*cp))
- value = value * 10 + *cp++ - '0';
-
- switch (*cp++) {
- case 'M':
- case 'm': /* `tail' uses it traditionally */
- value *= 1048576;
- break;
-
- case 'k':
- value *= 1024;
- break;
-
- case 'b':
- value *= 512;
- break;
-
- case 'w':
- value *= 2;
- break;
-
- case '\0':
- return value;
-
- default:
- return -1;
- }
-
- if (*cp)
- return -1;
-
- return value;
-}
-#endif /* BB_DD || BB_TAIL */
-
-
-#if defined BB_INIT || defined BB_SYSLOGD
-/* try to open up the specified device */
-extern int device_open(char *device, int mode)
-{
- int m, f, fd = -1;
-
- m = mode | O_NONBLOCK;
-
- /* Retry up to 5 times */
- for (f = 0; f < 5; f++)
- if ((fd = open(device, m, 0600)) >= 0)
- break;
- if (fd < 0)
- return fd;
- /* Reset original flags. */
- if (m != mode)
- fcntl(fd, F_SETFL, mode);
- return fd;
-}
-#endif /* BB_INIT BB_SYSLOGD */
-
-
-#if defined BB_KILLALL || ( defined BB_FEATURE_LINUXRC && ( defined BB_HALT || defined BB_REBOOT || defined BB_POWEROFF ))
-#ifdef BB_FEATURE_USE_DEVPS_PATCH
-#include <linux/devps.h> /* For Erik's nifty devps device driver */
-#endif
-
-#if defined BB_FEATURE_USE_DEVPS_PATCH
-/* findPidByName()
- *
- * This finds the pid of the specified process,
- * by using the /dev/ps device driver.
- *
- * Returns a list of all matching PIDs
- */
-extern pid_t* findPidByName( char* pidName)
-{
- int fd, i, j;
- char device[] = "/dev/ps";
- pid_t num_pids;
- pid_t* pid_array = NULL;
- pid_t* pidList=NULL;
-
- /* open device */
- fd = open(device, O_RDONLY);
- if (fd < 0)
- fatalError( "open failed for `%s': %s\n", device, strerror (errno));
-
- /* Find out how many processes there are */
- if (ioctl (fd, DEVPS_GET_NUM_PIDS, &num_pids)<0)
- fatalError( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
-
- /* Allocate some memory -- grab a few extras just in case
- * some new processes start up while we wait. The kernel will
- * just ignore any extras if we give it too many, and will trunc.
- * the list if we give it too few. */
- pid_array = (pid_t*) xcalloc( num_pids+10, sizeof(pid_t));
- pid_array[0] = num_pids+10;
-
- /* Now grab the pid list */
- if (ioctl (fd, DEVPS_GET_PID_LIST, pid_array)<0)
- fatalError( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
-
- /* Now search for a match */
- for (i=1, j=0; i<pid_array[0] ; i++) {
- char* p;
- struct pid_info info;
-
- info.pid = pid_array[i];
- if (ioctl (fd, DEVPS_GET_PID_INFO, &info)<0)
- fatalError( "\nDEVPS_GET_PID_INFO: %s\n", strerror (errno));
-
- /* Make sure we only match on the process name */
- p=info.command_line+1;
- while ((*p != 0) && !isspace(*(p)) && (*(p-1) != '\\')) {
- (p)++;
- }
- if (isspace(*(p)))
- *p='\0';
-
- if ((strstr(info.command_line, pidName) != NULL)
- && (strlen(pidName) == strlen(info.command_line))) {
- pidList=xrealloc( pidList, sizeof(pid_t) * (j+2));
- pidList[j++]=info.pid;
- }
- }
- if (pidList)
- pidList[j]=0;
-
- /* Free memory */
- free( pid_array);
-
- /* close device */
- if (close (fd) != 0)
- fatalError( "close failed for `%s': %s\n",device, strerror (errno));
-
- return pidList;
-}
-#else /* BB_FEATURE_USE_DEVPS_PATCH */
-#if ! defined BB_FEATURE_USE_PROCFS
-#error Sorry, I depend on the /proc filesystem right now.
-#endif
-
-/* findPidByName()
- *
- * This finds the pid of the specified process.
- * Currently, it's implemented by rummaging through
- * the proc filesystem.
- *
- * Returns a list of all matching PIDs
- */
-extern pid_t* findPidByName( char* pidName)
-{
- DIR *dir;
- struct dirent *next;
- pid_t* pidList=NULL;
- int i=0;
-
- dir = opendir("/proc");
- if (!dir)
- fatalError( "Cannot open /proc: %s\n", strerror (errno));
-
- while ((next = readdir(dir)) != NULL) {
- FILE *status;
- char filename[256];
- char buffer[256];
-
- /* If it isn't a number, we don't want it */
- if (!isdigit(*next->d_name))
- continue;
-
- sprintf(filename, "/proc/%s/cmdline", next->d_name);
- status = fopen(filename, "r");
- if (!status) {
- continue;
- }
- fgets(buffer, 256, status);
- fclose(status);
-
- if (strstr(get_last_path_component(buffer), pidName) != NULL) {
- pidList=xrealloc( pidList, sizeof(pid_t) * (i+2));
- pidList[i++]=strtol(next->d_name, NULL, 0);
- }
- }
-
- if (pidList)
- pidList[i]=0;
- return pidList;
-}
-#endif /* BB_FEATURE_USE_DEVPS_PATCH */
-#endif /* BB_KILLALL || ( BB_FEATURE_LINUXRC && ( BB_HALT || BB_REBOOT || BB_POWEROFF )) */
-
-#ifndef DMALLOC
-/* this should really be farmed out to libbusybox.a */
-extern void *xmalloc(size_t size)
-{
- void *ptr = malloc(size);
-
- if (!ptr)
- fatalError("memory_exhausted");
- return ptr;
-}
-
-extern void *xrealloc(void *old, size_t size)
-{
- void *ptr;
- if (!size)
- size = 1;
- ptr = realloc(old, size);
- if (!ptr)
- fatalError("memory_exhausted");
- return ptr;
-}
-
-extern void *xcalloc(size_t nmemb, size_t size)
-{
- void *ptr = calloc(nmemb, size);
- if (!ptr)
- fatalError("memory_exhausted");
- return ptr;
-}
-#endif
-
-#if defined BB_FEATURE_NFSMOUNT || defined BB_SH || defined BB_LS
-# ifndef DMALLOC
-extern char * xstrdup (const char *s) {
- char *t;
-
- if (s == NULL)
- return NULL;
-
- t = strdup (s);
-
- if (t == NULL)
- fatalError("memory_exhausted");
-
- return t;
-}
-# endif
-#endif
-
-#if defined BB_FEATURE_NFSMOUNT
-extern char * xstrndup (const char *s, int n) {
- char *t;
-
- if (s == NULL)
- fatalError("xstrndup bug");
-
- t = xmalloc(n+1);
- strncpy(t,s,n);
- t[n] = 0;
-
- return t;
-}
-#endif
-
-
-#if (__GLIBC__ < 2) && (defined BB_SYSLOGD || defined BB_INIT)
-extern int vdprintf(int d, const char *format, va_list ap)
-{
- char buf[BUF_SIZE];
- int len;
-
- len = vsprintf(buf, format, ap);
- return write(d, buf, len);
-}
-#endif /* BB_SYSLOGD */
-
-
-#if defined BB_FEATURE_MOUNT_LOOP
-#include <fcntl.h>
-#include "loop.h" /* Pull in loop device support */
-
-extern int del_loop(const char *device)
-{
- int fd;
-
- if ((fd = open(device, O_RDONLY)) < 0) {
- perror(device);
- return (FALSE);
- }
- if (ioctl(fd, LOOP_CLR_FD, 0) < 0) {
- perror("ioctl: LOOP_CLR_FD");
- return (FALSE);
- }
- close(fd);
- return (TRUE);
-}
-
-extern int set_loop(const char *device, const char *file, int offset,
- int *loopro)
-{
- struct loop_info loopinfo;
- int fd, ffd, mode;
-
- mode = *loopro ? O_RDONLY : O_RDWR;
- if ((ffd = open(file, mode)) < 0 && !*loopro
- && (errno != EROFS || (ffd = open(file, mode = O_RDONLY)) < 0)) {
- perror(file);
- return 1;
- }
- if ((fd = open(device, mode)) < 0) {
- close(ffd);
- perror(device);
- return 1;
- }
- *loopro = (mode == O_RDONLY);
-
- memset(&loopinfo, 0, sizeof(loopinfo));
- strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
- loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
-
- loopinfo.lo_offset = offset;
-
- loopinfo.lo_encrypt_key_size = 0;
- if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
- perror("ioctl: LOOP_SET_FD");
- close(fd);
- close(ffd);
- return 1;
- }
- if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
- (void) ioctl(fd, LOOP_CLR_FD, 0);
- perror("ioctl: LOOP_SET_STATUS");
- close(fd);
- close(ffd);
- return 1;
- }
- close(fd);
- close(ffd);
- return 0;
-}
-
-extern char *find_unused_loop_device(void)
-{
- char dev[20];
- int i, fd;
- struct stat statbuf;
- struct loop_info loopinfo;
-
- for (i = 0; i <= 7; i++) {
- sprintf(dev, "/dev/loop%d", i);
- if (stat(dev, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)) {
- if ((fd = open(dev, O_RDONLY)) >= 0) {
- if (ioctl(fd, LOOP_GET_STATUS, &loopinfo) == -1) {
- if (errno == ENXIO) { /* probably free */
- close(fd);
- return strdup(dev);
- }
- }
- close(fd);
- }
- }
- }
- return NULL;
-}
-#endif /* BB_FEATURE_MOUNT_LOOP */
-
-#if defined BB_MOUNT || defined BB_DF || ( defined BB_UMOUNT && ! defined BB_MTAB)
-extern int find_real_root_device_name(char* name)
-{
- DIR *dir;
- struct dirent *entry;
- struct stat statBuf, rootStat;
- char fileName[BUFSIZ];
-
- if (stat("/", &rootStat) != 0) {
- errorMsg("could not stat '/'\n");
- return( FALSE);
- }
-
- dir = opendir("/dev");
- if (!dir) {
- errorMsg("could not open '/dev'\n");
- return( FALSE);
- }
-
- while((entry = readdir(dir)) != NULL) {
-
- /* Must skip ".." since that is "/", and so we
- * would get a false positive on ".." */
- if (strcmp(entry->d_name, "..") == 0)
- continue;
-
- snprintf( fileName, strlen(name)+1, "/dev/%s", entry->d_name);
-
- if (stat(fileName, &statBuf) != 0)
- continue;
- /* Some char devices have the same dev_t as block
- * devices, so make sure this is a block device */
- if (! S_ISBLK(statBuf.st_mode))
- continue;
- if (statBuf.st_rdev == rootStat.st_rdev) {
- strcpy(name, fileName);
- return ( TRUE);
- }
- }
-
- return( FALSE);
-}
-#endif
-
-
-/* get_line_from_file() - This function reads an entire line from a text file
- * up to a newline. It returns a malloc'ed char * which must be stored and
- * free'ed by the caller. */
-extern char *get_line_from_file(FILE *file)
-{
- static const int GROWBY = 80; /* how large we will grow strings by */
-
- int ch;
- int idx = 0;
- char *linebuf = NULL;
- int linebufsz = 0;
-
- while (1) {
- ch = fgetc(file);
- if (ch == EOF)
- break;
- /* grow the line buffer as necessary */
- while (idx > linebufsz-2)
- linebuf = xrealloc(linebuf, linebufsz += GROWBY);
- linebuf[idx++] = (char)ch;
- if ((char)ch == '\n')
- break;
- }
-
- if (idx == 0)
- return NULL;
-
- linebuf[idx] = 0;
- return linebuf;
-}
-
-#if defined BB_CAT
-extern void print_file(FILE *file)
-{
- int c;
-
- while ((c = getc(file)) != EOF)
- putc(c, stdout);
- fclose(file);
- fflush(stdout);
-}
-
-extern int print_file_by_name(char *filename)
-{
- FILE *file;
- file = fopen(filename, "r");
- if (file == NULL) {
- return FALSE;
- }
- print_file(file);
- return TRUE;
-}
-#endif /* BB_CAT || BB_LSMOD */
-
-#if defined BB_ECHO || defined BB_TR
-char process_escape_sequence(char **ptr)
-{
- char c;
-
- switch (c = *(*ptr)++) {
- case 'a':
- c = '\a';
- break;
- case 'b':
- c = '\b';
- break;
- case 'f':
- c = '\f';
- break;
- case 'n':
- c = '\n';
- break;
- case 't':
- c = '\t';
- break;
- case 'v':
- c = '\v';
- break;
- case '\\':
- c = '\\';
- break;
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- c -= '0';
- if ('0' <= **ptr && **ptr <= '7') {
- c = c * 8 + (*(*ptr)++ - '0');
- if ('0' <= **ptr && **ptr <= '7')
- c = c * 8 + (*(*ptr)++ - '0');
- }
- break;
- default:
- (*ptr)--;
- c = '\\';
- break;
- }
- return c;
-}
-#endif
-
-#if defined BB_BASENAME || defined BB_LN || defined BB_SH
-char *get_last_path_component(char *path)
-{
- char *s=path+strlen(path)-1;
-
- /* strip trailing slashes */
- while (s && *s == '/') {
- *s-- = '\0';
- }
-
- /* find last component */
- s = strrchr(path, '/');
- if (s==NULL) return path;
- else return s+1;
-}
-#endif
-
-#if defined BB_GREP || defined BB_SED
-void xregcomp(regex_t *preg, const char *regex, int cflags)
-{
- int ret;
- if ((ret = regcomp(preg, regex, cflags)) != 0) {
- int errmsgsz = regerror(ret, preg, NULL, 0);
- char *errmsg = xmalloc(errmsgsz);
- regerror(ret, preg, errmsg, errmsgsz);
- fatalError("bb_regcomp: %s\n", errmsg);
- }
-}
-#endif
-
-/* END CODE */
-/*
-Local Variables:
-c-file-style: "linux"
-c-basic-offset: 4
-tab-width: 4
-End:
-*/
diff --git a/mdk-stage1/insmod-modutils/Makefile b/mdk-stage1/insmod-modutils/Makefile
deleted file mode 100644
index 48508ba1f..000000000
--- a/mdk-stage1/insmod-modutils/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
- #******************************************************************************
- #
- # insmod from modutils (generic)
- #
- # $Id$
- #
- # Copyright 1996, 1997 Linux International.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-INCS = -I./include
-
-TAINT_URL = http://www.tux.org/lkml/\#export-tainted
-
-DEFS = -Wno-error -D_GNU_SOURCE \
- -DELF_MACHINE_H='"elf_$(ARCH).h"' -DARCH_$(ARCH) \
- -DTAINT_URL='"$(TAINT_URL)"'
-
-
-DIRS = util obj
-
-all: dirs insmod libinsmod.a
-
-dirs:
- @for n in . $(DIRS); do \
- [ "$$n" = "." ] || make -C $$n ;\
- done
-
-clean:
- @for n in $(DIRS); do \
- (cd $$n; make clean) \
- done
- rm -rf t *.o insmod libinsmod.a
-
-
-insmod: insmod-frontend.o insmod.o ./util/libutil-STANDALONE.a ./obj/libobj.a
- $(DIET) gcc -o $@ $^
- $(STRIPCMD) $@
-
-t/.create_stuff: util/libutil.a obj/libobj.a
- rm -rf t
- mkdir t
- cd t && for e in $^; do ar -x ../$$e; done
- touch t/.create_stuff
-
-libinsmod.a: insmod.o t/.create_stuff
- ar cru $@ insmod.o t/*
- ranlib $@
-
-insmod-frontend.o: insmod-frontend.c insmod.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c insmod-frontend.c
-
-insmod.o: insmod.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c insmod.c
diff --git a/mdk-stage1/insmod-modutils/include/config.h b/mdk-stage1/insmod-modutils/include/config.h
deleted file mode 100644
index 3a37b00d4..000000000
--- a/mdk-stage1/insmod-modutils/include/config.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Configuration file management
- *
- * Copyright 1994, 1995, 1996, 1997:
- * Jacques Gelinas <jack@solucorp.qc.ca>
- * Björn Ekwall <bj0rn@blox.se> February, March 1999
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef _CONFIG_H
-#define _CONFIG_H
-
-#include <stdio.h>
-#include <sys/utsname.h>
-
-#define MODUTILS_MACROS "/lib/modutils/macros"
-#define ETC_MODULES_CONF "/etc/modules.conf"
-
-#define EXEC_PRE_INSTALL 0
-#define EXEC_POST_INSTALL 1
-#define EXEC_PRE_REMOVE 2
-#define EXEC_POST_REMOVE 3
-#define EXEC_INSTALL 4
-#define EXEC_REMOVE 5
-
-struct PATH_TYPE {
- char *type;
- char *path;
-};
-
-struct EXEC_TYPE {
- int when;
- char *module;
- char *cmd;
-};
-
-typedef struct {
- char *name;
- GLOB_LIST *opts;
- int autoclean;
-} OPT_LIST;
-
-/* config.c */
-extern int flag_autoclean;
-extern struct utsname uts_info;
-extern char *aliaslist[];
-extern struct PATH_TYPE *modpath;
-extern int nmodpath;
-extern struct EXEC_TYPE *execs;
-extern int nexecs;
-extern char *insmod_opt;
-extern char *config_file;
-extern char *optlist[];
-extern char *prune[];
-extern OPT_LIST *opt_list;
-extern OPT_LIST *abovelist;
-extern OPT_LIST *belowlist;
-extern OPT_LIST *prunelist;
-extern OPT_LIST *probe_list;
-extern OPT_LIST *probeall_list;
-extern OPT_LIST *aliases;
-extern time_t config_mtime;
-extern int root_check_off; /* Check modules are owned by root? */
-
-/* Information about generated files */
-struct gen_files {
- char *base; /* xxx in /lib/modules/`uname -r`/modules.xxx */
- char *name; /* name actually used */
- time_t mtime;
-};
-
-extern struct gen_files gen_file[];
-extern const int gen_file_count;
-/* The enum order must match the gen_file initialization order in config.c */
-enum gen_file_enum {
- GEN_GENERIC_STRINGFILE,
- GEN_PCIMAPFILE,
- GEN_ISAPNPMAPFILE,
- GEN_USBMAPFILE,
- GEN_PARPORTMAPFILE,
- GEN_IEEE1394MAPFILE,
- GEN_PNPBIOSMAPFILE,
- GEN_DEPFILE,
-};
-
-extern char *persistdir;
-
-char *fgets_strip(char *buf, int sizebuf, FILE * fin, int *lineno);
-int config_read(int all, char *force_ver, char *base_dir, char *conf_file);
-GLOB_LIST *config_lstmod(const char *match, const char *type, int first_only);
-char *search_module_path(const char *base);
-
-#endif /* _CONFIG_H */
diff --git a/mdk-stage1/insmod-modutils/include/elf_alpha.h b/mdk-stage1/insmod-modutils/include/elf_alpha.h
deleted file mode 100644
index 4202bcc14..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_alpha.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for the Alpha. */
-
-#define ELFCLASSM ELFCLASS64
-#define ELFDATAM ELFDATA2LSB
-
-#define MATCH_MACHINE(x) (x == EM_ALPHA)
-
-#define SHT_RELM SHT_RELA
-#define Elf64_RelM Elf64_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_arm.h b/mdk-stage1/insmod-modutils/include/elf_arm.h
deleted file mode 100644
index cf04cafe0..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_arm.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for ARM. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2LSB
-
-#define MATCH_MACHINE(x) (x == EM_ARM)
-
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
diff --git a/mdk-stage1/insmod-modutils/include/elf_hppa.h b/mdk-stage1/insmod-modutils/include/elf_hppa.h
deleted file mode 100644
index 9a1bd34ce..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_hppa.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for HP-PA. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2MSB
-
-#define MATCH_MACHINE(x) (x == EM_PARISC)
-
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_hppa64.h b/mdk-stage1/insmod-modutils/include/elf_hppa64.h
deleted file mode 100644
index 05b201aef..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_hppa64.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for HP-PA64. */
-
-#define ELFCLASSM ELFCLASS64
-#define ELFDATAM ELFDATA2MSB
-
-#define MATCH_MACHINE(x) (x == EM_PARISC)
-
-#define SHT_RELM SHT_RELA
-#define Elf64_RelM Elf64_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_i386.h b/mdk-stage1/insmod-modutils/include/elf_i386.h
deleted file mode 100644
index f5c57d384..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_i386.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for i386 et al. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2LSB
-
-#define MATCH_MACHINE(x) (x == EM_386)
-
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
diff --git a/mdk-stage1/insmod-modutils/include/elf_ia64.h b/mdk-stage1/insmod-modutils/include/elf_ia64.h
deleted file mode 100644
index b4d902956..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_ia64.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for ia64. */
-
-#define ELFCLASSM ELFCLASS64
-#define ELFDATAM ELFDATA2LSB
-
-#define MATCH_MACHINE(x) (x == EM_IA_64)
-
-#define SHT_RELM SHT_RELA
-#define Elf64_RelM Elf64_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_m68k.h b/mdk-stage1/insmod-modutils/include/elf_m68k.h
deleted file mode 100644
index c488ba9d1..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_m68k.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for m68k. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2MSB
-
-#define MATCH_MACHINE(x) (x == EM_68K)
-
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_mips.h b/mdk-stage1/insmod-modutils/include/elf_mips.h
deleted file mode 100644
index 4b91ddd01..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_mips.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Machine-specific elf macros for MIPS. */
-
-#define ELFCLASSM ELFCLASS32
-#ifdef __MIPSEB__
-#define ELFDATAM ELFDATA2MSB
-#endif
-#ifdef __MIPSEL__
-#define ELFDATAM ELFDATA2LSB
-#endif
-
-/* Account for ELF spec changes. */
-#ifndef EM_MIPS_RS3_LE
-#ifdef EM_MIPS_RS4_BE
-#define EM_MIPS_RS3_LE EM_MIPS_RS4_BE
-#else
-#define EM_MIPS_RS3_LE 10
-#endif
-#endif /* !EM_MIPS_RS3_LE */
-
-#define MATCH_MACHINE(x) (x == EM_MIPS || x == EM_MIPS_RS3_LE)
-
-#define SHT_RELM SHT_REL
-#define Elf32_RelM Elf32_Rel
diff --git a/mdk-stage1/insmod-modutils/include/elf_ppc.h b/mdk-stage1/insmod-modutils/include/elf_ppc.h
deleted file mode 100644
index b0060ace1..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_ppc.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for the PowerPC. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2MSB
-
-#define MATCH_MACHINE(x) (x == EM_PPC)
-
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_s390.h b/mdk-stage1/insmod-modutils/include/elf_s390.h
deleted file mode 100644
index 7a35bde93..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_s390.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Machine-specific elf macros for i386 et al. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2MSB
-
-#define EM_S390_OLD 0xa390
-
-#define MATCH_MACHINE(x) (x == EM_S390 || x == EM_S390_OLD)
-
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_sparc.h b/mdk-stage1/insmod-modutils/include/elf_sparc.h
deleted file mode 100644
index 8903b2654..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_sparc.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Machine-specific elf macros for the Sparc. */
-
-#define ELFCLASSM ELFCLASS32
-#define ELFDATAM ELFDATA2MSB
-
-#define MATCH_MACHINE(x) (x == EM_SPARC)
-
-#define SHT_RELM SHT_RELA
-#define Elf32_RelM Elf32_Rela
diff --git a/mdk-stage1/insmod-modutils/include/elf_sparc64.h b/mdk-stage1/insmod-modutils/include/elf_sparc64.h
deleted file mode 100644
index 891e0c3d9..000000000
--- a/mdk-stage1/insmod-modutils/include/elf_sparc64.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Machine-specific elf macros for the Sparc. */
-
-#define ELFCLASSM ELFCLASS64
-#define ELFDATAM ELFDATA2MSB
-
-#ifndef EM_SPARCV9
-#define EM_SPARCV9 43
-#endif
-#ifndef EM_SPARC64
-#define EM_SPARC64 11
-#endif
-#define MATCH_MACHINE(x) ((x) == EM_SPARCV9 || (x) == EM_SPARC64)
-
-#define SHT_RELM SHT_RELA
-#define Elf64_RelM Elf64_Rela
-
-#ifndef ELF64_R_SYM
-#define ELF64_R_SYM(x) ((x) >> 32)
-#define ELF64_R_TYPE(x) ((unsigned)(x))
-#endif
-
-#ifndef ELF64_ST_BIND
-#define ELF64_ST_BIND(x) ((x) >> 4)
-#define ELF64_ST_TYPE(x) ((x) & 0xf)
-#endif
-
diff --git a/mdk-stage1/insmod-modutils/include/kallsyms.h b/mdk-stage1/insmod-modutils/include/kallsyms.h
deleted file mode 100644
index 90bb75f22..000000000
--- a/mdk-stage1/insmod-modutils/include/kallsyms.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef MODUTILS_KALLSYMS_H
-#define MODUTILS_KALLSYMS_H 1
-
-/* kallsyms headers
- Copyright 2000 Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils. It is exported to kernel
- space so debuggers can access the kallsyms data.
-
- The kallsyms data contains all the non-stack symbols from a kernel
- or a module. The kernel symbols are held between __start___kallsyms
- and __stop___kallsyms. The symbols for a module are accessed via
- the struct module chain which is based at module_list.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/* Have to (re)define these ElfW entries here because external kallsyms
- * code does not have access to modutils/include/obj.h. This code is
- * included from user spaces tools (modutils) and kernel, they need
- * different includes.
- */
-
-#ifndef ELFCLASS32
-#ifdef __KERNEL__
-#include <linux/elf.h>
-#else /* __KERNEL__ */
-#include <elf.h>
-#endif /* __KERNEL__ */
-#endif /* ELFCLASS32 */
-
-#ifndef ELFCLASSM
-#define ELFCLASSM ELF_CLASS
-#endif
-
-#ifndef ElfW
-# if ELFCLASSM == ELFCLASS32
-# define ElfW(x) Elf32_ ## x
-# define ELFW(x) ELF32_ ## x
-# else
-# define ElfW(x) Elf64_ ## x
-# define ELFW(x) ELF64_ ## x
-# endif
-#endif
-
-/* Format of data in the kallsyms section.
- * Most of the fields are small numbers but the total size and all
- * offsets can be large so use the 32/64 bit types for these fields.
- *
- * Do not use sizeof() on these structures, modutils may be using extra
- * fields. Instead use the size fields in the header to access the
- * other bits of data.
- */
-
-struct kallsyms_header {
- int size; /* Size of this header */
- ElfW(Word) total_size; /* Total size of kallsyms data */
- int sections; /* Number of section entries */
- ElfW(Off) section_off; /* Offset to first section entry */
- int section_size; /* Size of one section entry */
- int symbols; /* Number of symbol entries */
- ElfW(Off) symbol_off; /* Offset to first symbol entry */
- int symbol_size; /* Size of one symbol entry */
- ElfW(Off) string_off; /* Offset to first string */
- ElfW(Addr) start; /* Start address of first section */
- ElfW(Addr) end; /* End address of last section */
-};
-
-struct kallsyms_section {
- ElfW(Addr) start; /* Start address of section */
- ElfW(Word) size; /* Size of this section */
- ElfW(Off) name_off; /* Offset to section name */
- ElfW(Word) flags; /* Flags from section */
-};
-
-struct kallsyms_symbol {
- ElfW(Off) section_off; /* Offset to section that owns this symbol */
- ElfW(Addr) symbol_addr; /* Address of symbol */
- ElfW(Off) name_off; /* Offset to symbol name */
-};
-
-#define KALLSYMS_SEC_NAME "__kallsyms"
-#define KALLSYMS_IDX 2 /* obj_kallsyms creates kallsyms as section 2 */
-
-#define kallsyms_next_sec(h,s) \
- ((s) = (struct kallsyms_section *)((char *)(s) + (h)->section_size))
-#define kallsyms_next_sym(h,s) \
- ((s) = (struct kallsyms_symbol *)((char *)(s) + (h)->symbol_size))
-
-int kallsyms_symbol_to_address(
- const char *name, /* Name to lookup */
- unsigned long *token, /* Which module to start with */
- const char **mod_name, /* Set to module name or "kernel" */
- unsigned long *mod_start, /* Set to start address of module */
- unsigned long *mod_end, /* Set to end address of module */
- const char **sec_name, /* Set to section name */
- unsigned long *sec_start, /* Set to start address of section */
- unsigned long *sec_end, /* Set to end address of section */
- const char **sym_name, /* Set to full symbol name */
- unsigned long *sym_start, /* Set to start address of symbol */
- unsigned long *sym_end /* Set to end address of symbol */
- );
-
-int kallsyms_address_to_symbol(
- unsigned long address, /* Address to lookup */
- const char **mod_name, /* Set to module name */
- unsigned long *mod_start, /* Set to start address of module */
- unsigned long *mod_end, /* Set to end address of module */
- const char **sec_name, /* Set to section name */
- unsigned long *sec_start, /* Set to start address of section */
- unsigned long *sec_end, /* Set to end address of section */
- const char **sym_name, /* Set to full symbol name */
- unsigned long *sym_start, /* Set to start address of symbol */
- unsigned long *sym_end /* Set to end address of symbol */
- );
-
-#endif /* kallsyms.h */
diff --git a/mdk-stage1/insmod-modutils/include/kerneld.h b/mdk-stage1/insmod-modutils/include/kerneld.h
deleted file mode 100644
index f32e34b4a..000000000
--- a/mdk-stage1/insmod-modutils/include/kerneld.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Definitions for the Linux kerneld SYSV IPC interface.
- This file was part of the Linux kernel, and so is covered by the GPL. */
-
-#ifndef MODUTILS_KERNELD_H
-#define MODUTILS_KERNELD_H
-
-#define KERNELD_SYSTEM 1
-#define KERNELD_REQUEST_MODULE 2 /* "insmod" */
-#define KERNELD_RELEASE_MODULE 3 /* "rmmod" */
-#define KERNELD_DELAYED_RELEASE_MODULE 4 /* "rmmod" */
-#define KERNELD_CANCEL_RELEASE_MODULE 5 /* "rmmod" */
-#define KERNELD_REQUEST_ROUTE 6 /* net/ipv4/route.c */
-#define KERNELD_BLANKER 7 /* drivers/char/console.c */
-#define KERNELD_PNP 8 /* drivers/pnp/kerneld.c */
-#define KERNELD_ARP 256 /* net/ipv4/arp.c */
-
-#ifdef NEW_KERNELD_PROTOCOL
-# define OLDIPC_KERNELD 00040000 /* old kerneld message channel */
-# define IPC_KERNELD 00140000 /* new kerneld message channel */
-# define KDHDR (sizeof(long) + sizeof(short) + sizeof(short))
-# define NULL_KDHDR 0, 2, 0
-#else /* NEW_KERNELD_PROTOCOL */
-# define IPC_KERNELD 00040000
-# define KDHDR (sizeof(long))
-# define NULL_KDHDR 0
-#endif /* NEW_KERNELD_PROTOCOL */
-
-#define KERNELD_MAXCMD 0x7ffeffff
-#define KERNELD_MINSEQ 0x7fff0000 /* "commands" legal up to 0x7ffeffff */
-#define KERNELD_WAIT 0x80000000
-#define KERNELD_NOWAIT 0
-
-struct kerneld_msg
- {
- long mtype;
- long id;
-#ifdef NEW_KERNELD_PROTOCOL
- short version;
- short pid;
-#endif /* NEW_KERNELD_PROTOCOL */
- char text[1];
- };
-
-#endif /* kerneld.h */
diff --git a/mdk-stage1/insmod-modutils/include/modstat.h b/mdk-stage1/insmod-modutils/include/modstat.h
deleted file mode 100644
index b8a58eeae..000000000
--- a/mdk-stage1/insmod-modutils/include/modstat.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * For kernel module status and information
- *
- * Add module_name_list and l_module_name_list.
- * Keith Owens <kaos@ocs.com.au> November 1999.
- * Björn Ekwall <bj0rn@blox.se> February 1999.
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-#ifndef _KERNEL_H
-#define _KERNEL_H
-
-#define K_SYMBOLS 1 /* Want info about symbols */
-#define K_INFO 2 /* Want extended module info */
-#define K_REFS 4 /* Want info about references */
-
-struct module_stat {
- char *name;
- unsigned long addr;
- unsigned long modstruct; /* COMPAT_2_0! *//* depends on architecture? */
- unsigned long size;
- unsigned long flags;
- long usecount;
- size_t nsyms;
- struct module_symbol *syms;
- size_t nrefs;
- struct module_stat **refs;
- unsigned long status;
-};
-
-extern struct module_stat *module_stat;
-extern size_t n_module_stat;
-extern char *module_name_list;
-extern size_t l_module_name_list;
-extern struct module_symbol *ksyms;
-extern size_t nksyms;
-extern int k_new_syscalls;
-
-int get_kernel_info(int type);
-
-#endif /* _KERNEL_H */
diff --git a/mdk-stage1/insmod-modutils/include/module.h b/mdk-stage1/insmod-modutils/include/module.h
deleted file mode 100644
index ae8224f8a..000000000
--- a/mdk-stage1/insmod-modutils/include/module.h
+++ /dev/null
@@ -1,217 +0,0 @@
-#ifndef MODUTILS_MODULE_H
-#define MODUTILS_MODULE_H 1
-
-/* Definitions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-/* This file contains the structures used by the 2.0 and 2.1 kernels.
- We do not use the kernel headers directly because we do not wish
- to be dependant on a particular kernel version to compile insmod. */
-
-
-/*======================================================================*/
-/* The structures used by Linux 2.0. */
-
-/* The symbol format used by get_kernel_syms(2). */
-struct old_kernel_sym
-{
- unsigned long value;
- char name[60];
-};
-
-struct old_module_ref
-{
- unsigned long module; /* kernel addresses */
- unsigned long next;
-};
-
-struct old_module_symbol
-{
- unsigned long addr;
- unsigned long name;
-};
-
-struct old_symbol_table
-{
- int size; /* total, including string table!!! */
- int n_symbols;
- int n_refs;
- struct old_module_symbol symbol[0]; /* actual size defined by n_symbols */
- struct old_module_ref ref[0]; /* actual size defined by n_refs */
-};
-
-struct old_mod_routines
-{
- unsigned long init;
- unsigned long cleanup;
-};
-
-struct old_module
-{
- unsigned long next;
- unsigned long ref; /* the list of modules that refer to me */
- unsigned long symtab;
- unsigned long name;
- int size; /* size of module in pages */
- unsigned long addr; /* address of module */
- int state;
- unsigned long cleanup; /* cleanup routine */
-};
-
-/* Sent to init_module(2) or'ed into the code size parameter. */
-#define OLD_MOD_AUTOCLEAN 0x40000000 /* big enough, but no sign problems... */
-
-int get_kernel_syms(struct old_kernel_sym *);
-int old_sys_init_module(const char *name, char *code, unsigned codesize,
- struct old_mod_routines *, struct old_symbol_table *);
-
-/*======================================================================*/
-/* For sizeof() which are related to the module platform and not to the
- environment isnmod is running in, use sizeof_xx instead of sizeof(xx). */
-
-#define tgt_sizeof_char sizeof(char)
-#define tgt_sizeof_short sizeof(short)
-#define tgt_sizeof_int sizeof(int)
-#define tgt_sizeof_long sizeof(long)
-#define tgt_sizeof_char_p sizeof(char *)
-#define tgt_sizeof_void_p sizeof(void *)
-#define tgt_long long
-#define tgt_long_fmt "l"
-
-/* This assumes that long long on a 32 bit system is equivalent to long on the
- * equivalent 64 bit system. Also that void and char pointers are 8 bytes on
- * all 64 bit systems. Add per system tweaks if it ever becomes necessary.
- */
-#if defined(COMMON_3264) && defined(ONLY_64)
-#undef tgt_long
-#undef tgt_long_fmt
-#undef tgt_sizeof_long
-#undef tgt_sizeof_char_p
-#undef tgt_sizeof_void_p
-#define tgt_long long long
-#define tgt_long_fmt "ll"
-#define tgt_sizeof_long 8
-#define tgt_sizeof_char_p 8
-#define tgt_sizeof_void_p 8
-#endif
-
-/*======================================================================*/
-/* The structures used in Linux 2.1 onwards. */
-
-/* Note: module_symbol does not use tgt_long intentionally */
-struct module_symbol
-{
- unsigned long value;
- unsigned long name;
-};
-
-struct module_ref
-{
- unsigned tgt_long dep; /* kernel addresses */
- unsigned tgt_long ref;
- unsigned tgt_long next_ref;
-};
-
-struct module
-{
- unsigned tgt_long size_of_struct; /* == sizeof(module) */
- unsigned tgt_long next;
- unsigned tgt_long name;
- unsigned tgt_long size;
-
- tgt_long usecount;
- unsigned tgt_long flags; /* AUTOCLEAN et al */
-
- unsigned nsyms;
- unsigned ndeps;
-
- unsigned tgt_long syms;
- unsigned tgt_long deps;
- unsigned tgt_long refs;
- unsigned tgt_long init;
- unsigned tgt_long cleanup;
- unsigned tgt_long ex_table_start;
- unsigned tgt_long ex_table_end;
-#ifdef __alpha__
- unsigned tgt_long gp;
-#endif
- /* Everything after here is extension. */
- unsigned tgt_long read_start; /* Read data from existing module */
- unsigned tgt_long read_end;
- unsigned tgt_long can_unload;
- unsigned tgt_long runsize;
- unsigned tgt_long kallsyms_start;
- unsigned tgt_long kallsyms_end;
- unsigned tgt_long archdata_start;
- unsigned tgt_long archdata_end;
- unsigned tgt_long kernel_data;
-};
-
-struct module_info
-{
- unsigned long addr;
- unsigned long size;
- unsigned long flags;
- long usecount;
-};
-
-/* Bits of module.flags. */
-#define NEW_MOD_RUNNING 1
-#define NEW_MOD_DELETED 2
-#define NEW_MOD_AUTOCLEAN 4
-#define NEW_MOD_VISITED 8
-#define NEW_MOD_USED_ONCE 16
-#define NEW_MOD_INITIALIZING 64
-
-int sys_init_module(const char *name, const struct module *);
-int query_module(const char *name, int which, void *buf, size_t bufsize,
- size_t *ret);
-
-/* Values for query_module's which. */
-
-#define QM_MODULES 1
-#define QM_DEPS 2
-#define QM_REFS 3
-#define QM_SYMBOLS 4
-#define QM_INFO 5
-
-/*======================================================================*/
-/* The system calls unchanged between 2.0 and 2.1. */
-
-unsigned long create_module(const char *, size_t);
-int delete_module(const char *);
-
-/* In safe mode the last parameter is forced to be a module name and meta
- * expansion is not allowed on that name.
- */
-extern unsigned int safemode;
-
-/*======================================================================*/
-/* Tainted kernel information. This must match include/linux/kernel.h */
-/* and kernel/panic.c. */
-
-#define TAINT_FILENAME "/proc/sys/kernel/tainted"
-#define TAINT_PROPRIETORY_MODULE (1<<0)
-#define TAINT_FORCED_MODULE (1<<1)
-#define TAINT_UNSAFE_SMP (1<<2)
-
-#endif /* module.h */
diff --git a/mdk-stage1/insmod-modutils/include/obj.h b/mdk-stage1/insmod-modutils/include/obj.h
deleted file mode 100644
index de346b16a..000000000
--- a/mdk-stage1/insmod-modutils/include/obj.h
+++ /dev/null
@@ -1,298 +0,0 @@
-#ifndef MODUTILS_OBJ_H
-#define MODUTILS_OBJ_H 1
-
-/* Elf object file loading and relocation routines.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
- obj_free() added by Björn Ekwall <bj0rn@blox.se> March 1999
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-/* The relocatable object is manipulated using elfin types. */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <elf.h>
-#include ELF_MACHINE_H
-#include "module.h"
-
-#ifndef ElfW
-# if ELFCLASSM == ELFCLASS32
-# define ElfW(x) Elf32_ ## x
-# define ELFW(x) ELF32_ ## x
-# else
-# define ElfW(x) Elf64_ ## x
-# define ELFW(x) ELF64_ ## x
-# endif
-#endif
-
-#if defined(COMMON_3264) && defined(ONLY_32)
-# define ObjW(x) obj32_ ## x
-#else
-# if defined(COMMON_3264) && defined(ONLY_64)
-# define ObjW(x) obj64_ ## x
-# else
-# define ObjW(x) obj_ ## x
-# endif
-#endif
-
-/* For some reason this is missing from lib5. */
-#ifndef ELF32_ST_INFO
-# define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#endif
-
-#ifndef ELF64_ST_INFO
-# define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-#endif
-
-struct obj_string_patch_struct;
-struct obj_symbol_patch_struct;
-
-struct obj_section
-{
- ElfW(Shdr) header;
- const char *name;
- char *contents;
- struct obj_section *load_next;
- int idx;
-};
-
-struct obj_symbol
-{
- struct obj_symbol *next; /* hash table link */
- const char *name;
- tgt_long value;
- unsigned long size;
- int secidx; /* the defining section index/module */
- int info;
- int ksymidx; /* for export to the kernel symtab */
- int r_type; /* relocation type */
-};
-
-/* Hardcode the hash table size. We shouldn't be needing so many
- symbols that we begin to degrade performance, and we get a big win
- by giving the compiler a constant divisor. */
-
-#define HASH_BUCKETS 521
-
-struct obj_file
-{
- ElfW(Ehdr) header;
- ElfW(Addr) baseaddr;
- struct obj_section **sections;
- struct obj_section *load_order;
- struct obj_section **load_order_search_start;
- struct obj_string_patch_struct *string_patches;
- struct obj_symbol_patch_struct *symbol_patches;
- int (*symbol_cmp)(const char *, const char *);
- unsigned long (*symbol_hash)(const char *);
- unsigned long local_symtab_size;
- struct obj_symbol **local_symtab;
- struct obj_symbol *symtab[HASH_BUCKETS];
- const char *filename;
- char *persist;
-};
-
-enum obj_reloc
-{
- obj_reloc_ok,
- obj_reloc_overflow,
- obj_reloc_dangerous,
- obj_reloc_unhandled,
- obj_reloc_constant_gp
-};
-
-struct obj_string_patch_struct
-{
- struct obj_string_patch_struct *next;
- int reloc_secidx;
- ElfW(Addr) reloc_offset;
- ElfW(Addr) string_offset;
-};
-
-struct obj_symbol_patch_struct
-{
- struct obj_symbol_patch_struct *next;
- int reloc_secidx;
- ElfW(Addr) reloc_offset;
- struct obj_symbol *sym;
-};
-
-
-/* Generic object manipulation routines. */
-
-#define obj_elf_hash ObjW(elf_hash)
-#define obj_elf_hash_n ObjW(elf_hash_n)
-#define obj_add_symbol ObjW(add_symbol)
-#define obj_find_symbol ObjW(find_symbol)
-#define obj_symbol_final_value ObjW(symbol_final_value)
-#define obj_set_symbol_compare ObjW(set_symbol_compare)
-#define obj_find_section ObjW(find_section)
-#define obj_insert_section_load_order ObjW(insert_section_load_order)
-#define obj_create_alloced_section ObjW(create_alloced_section)
-#define obj_create_alloced_section_first \
- ObjW(create_alloced_section_first)
-#define obj_extend_section ObjW(extend_section)
-#define obj_string_patch ObjW(string_patch)
-#define obj_symbol_patch ObjW(symbol_patch)
-#define obj_check_undefineds ObjW(check_undefineds)
-#define obj_clear_undefineds ObjW(clear_undefineds)
-#define obj_allocate_commons ObjW(allocate_commons)
-#define obj_load_size ObjW(load_size)
-#define obj_relocate ObjW(relocate)
-#define obj_load ObjW(load)
-#define obj_free ObjW(free)
-#define obj_create_image ObjW(create_image)
-#define obj_addr_to_native_ptr ObjW(addr_to_native_ptr)
-#define obj_native_ptr_to_addr ObjW(native_ptr_to_addr)
-#define obj_kallsyms ObjW(kallsyms)
-#define obj_gpl_license ObjW(gpl_license)
-#define arch_new_file ObjW(arch_new_file)
-#define arch_new_section ObjW(arch_new_section)
-#define arch_new_symbol ObjW(arch_new_symbol)
-#define arch_apply_relocation ObjW(arch_apply_relocation)
-#define arch_create_got ObjW(arch_create_got)
-#define arch_init_module ObjW(arch_init_module)
-#define arch_load_proc_section ObjW(arch_load_proc_section)
-#define arch_finalize_section_address ObjW(arch_finalize_section_address)
-#define arch_archdata ObjW(arch_archdata)
-
-unsigned long obj_elf_hash (const char *);
-
-unsigned long obj_elf_hash_n (const char *, unsigned long len);
-
-struct obj_symbol *obj_add_symbol (struct obj_file *f, const char *name,
- unsigned long symidx, int info, int secidx,
- ElfW(Addr) value, unsigned long size);
-
-struct obj_symbol *obj_find_symbol (struct obj_file *f,
- const char *name);
-
-ElfW(Addr) obj_symbol_final_value (struct obj_file *f,
- struct obj_symbol *sym);
-
-void obj_set_symbol_compare (struct obj_file *f,
- int (*cmp)(const char *, const char *),
- unsigned long (*hash)(const char *));
-
-struct obj_section *obj_find_section (struct obj_file *f,
- const char *name);
-
-void obj_insert_section_load_order (struct obj_file *f,
- struct obj_section *sec);
-
-struct obj_section *obj_create_alloced_section (struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size,
- unsigned long flags);
-
-struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
- const char *name,
- unsigned long align,
- unsigned long size);
-
-void *obj_extend_section (struct obj_section *sec, unsigned long more);
-
-int obj_string_patch (struct obj_file *f, int secidx, ElfW(Addr) offset,
- const char *string);
-
-int obj_symbol_patch (struct obj_file *f, int secidx, ElfW(Addr) offset,
- struct obj_symbol *sym);
-
-int obj_check_undefineds (struct obj_file *f, int quiet);
-
-void obj_clear_undefineds (struct obj_file *f);
-
-void obj_allocate_commons (struct obj_file *f);
-
-unsigned long obj_load_size (struct obj_file *f);
-
-int obj_relocate (struct obj_file *f, ElfW(Addr) base);
-
-struct obj_file *obj_load (int f, Elf32_Half e_type, const char *filename);
-
-void obj_free (struct obj_file *f);
-
-int obj_create_image (struct obj_file *f, char *image);
-
-int obj_kallsyms (struct obj_file *fin, struct obj_file **fout);
-
-/* Architecture specific manipulation routines. */
-
-struct obj_file *arch_new_file (void);
-
-struct obj_section *arch_new_section (void);
-
-struct obj_symbol *arch_new_symbol (void);
-
-enum obj_reloc arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- ElfW(RelM) *rel, ElfW(Addr) value);
-
-int arch_create_got (struct obj_file *f);
-
-struct module;
-int arch_init_module (struct obj_file *f, struct module *);
-
-int arch_load_proc_section (struct obj_section *sec, int fp);
-
-int arch_finalize_section_address (struct obj_file *f, ElfW(Addr) base);
-
-int arch_archdata (struct obj_file *fin, struct obj_section *sec);
-
-#define ARCHDATA_SEC_NAME "__archdata"
-
-/* Pointers in objects can be 32 or 64 bit */
-union obj_ptr_4 {
- Elf32_Word addr;
- void *ptr;
-};
-union obj_ptr_8 {
- u_int64_t addr; /* Should be Elf64_Xword but not all users have this yet */
- void *ptr;
-};
-
-void *obj_addr_to_native_ptr(ElfW(Addr));
-
-ElfW(Addr) obj_native_ptr_to_addr(void *);
-
-/* Standard method of finding relocation symbols, sets isym */
-#define obj_find_relsym(isym, f, find, rel, symtab, strtab) \
- { \
- unsigned long symndx = ELFW(R_SYM)((rel)->r_info); \
- ElfW(Sym) *extsym = (symtab)+symndx; \
- if (ELFW(ST_BIND)(extsym->st_info) == STB_LOCAL) { \
- isym = (typeof(isym)) (f)->local_symtab[symndx]; \
- } \
- else { \
- const char *name; \
- if (extsym->st_name) \
- name = (strtab) + extsym->st_name; \
- else \
- name = (f)->sections[extsym->st_shndx]->name; \
- isym = (typeof(isym)) obj_find_symbol((find), name); \
- } \
- }
-
-int obj_gpl_license(struct obj_file *, const char **);
-
-#endif /* obj.h */
diff --git a/mdk-stage1/insmod-modutils/include/util.h b/mdk-stage1/insmod-modutils/include/util.h
deleted file mode 100644
index 0a1354bec..000000000
--- a/mdk-stage1/insmod-modutils/include/util.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef MODUTILS_UTIL_H
-#define MODUTILS_UTIL_H 1
-
-/* Miscelaneous utility functions.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-
-#include <stdio.h>
-#include <sys/stat.h>
-
-#define SHELL_META "&();|<>$`\"'\\!{}[]~=+:?*" /* Sum of bj0rn and Debian */
-
-void *xmalloc(size_t);
-void *xrealloc(void *, size_t);
-char *xstrdup(const char *);
-char *xstrcat(char *, const char *, size_t);
-int xsystem(const char *, char *const[]);
-int arch64(void);
-
-typedef int (*xftw_func_t)(const char *, const struct stat *);
-extern int xftw(const char *directory, xftw_func_t);
-
-/* Error logging */
-extern int log;
-extern int errors;
-extern const char *error_file;
-
-extern int flag_verbose;
-extern void verbose(const char *ctl,...);
-
-void error(const char *fmt, ...)
-#ifdef __GNUC__
- __attribute__((format(printf, 1, 2)))
-#endif
- ;
-
-void lprintf(const char *fmt, ...)
-#ifdef __GNUC__
- __attribute__((format(printf, 1, 2)))
-#endif
- ;
-
-void setsyslog(const char *program);
-
-/*
- * Generic globlist <bj0rn@blox.se>
- */
-typedef struct {
- int pathc; /* Count of paths matched so far */
- char **pathv; /* List of matched pathnames. */
-} GLOB_LIST;
-int meta_expand(char *pt, GLOB_LIST *g, char *base_dir, char *version, int type);
-#define ME_BUILTIN_COMMAND 1
-#define ME_SHELL_COMMAND 2
-#define ME_GLOB 4
-#define ME_ALL (ME_GLOB|ME_SHELL_COMMAND|ME_BUILTIN_COMMAND)
-
-extern void snap_shot(const char *module_name, int number);
-extern void snap_shot_log(const char *fmt,...);
-
-#ifdef CONFIG_USE_ZLIB
-int gzf_open(const char *name, int mode);
-int gzf_read(int fd, void *buf, size_t count);
-off_t gzf_lseek(int fd, off_t offset, int whence);
-void gzf_close(int fd);
-
-#else /* ! CONFIG_USE_ZLIB */
-
-#include <unistd.h>
-
-#define gzf_open open
-#define gzf_read read
-#define gzf_lseek lseek
-#define gzf_close close
-
-#endif /* CONFIG_USE_ZLIB */
-
-#define SYMPREFIX "__insmod_";
-extern const char symprefix[10]; /* Must be sizeof(SYMPREFIX), including nul */
-
-#endif /* util.h */
diff --git a/mdk-stage1/insmod-modutils/include/version.h b/mdk-stage1/insmod-modutils/include/version.h
deleted file mode 100644
index 9ca0c57a9..000000000
--- a/mdk-stage1/insmod-modutils/include/version.h
+++ /dev/null
@@ -1 +0,0 @@
-#define MODUTILS_VERSION "2.4.19"
diff --git a/mdk-stage1/insmod-modutils/insmod-frontend.c b/mdk-stage1/insmod-modutils/insmod-frontend.c
deleted file mode 100644
index 26fe73c47..000000000
--- a/mdk-stage1/insmod-modutils/insmod-frontend.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdio.h>
-
-
-int insmod_main( int argc, char **argv);
-
-int main( int argc, char **argv)
-{
- printf("Using insmod provided by modutils.\n");
- return insmod_main(argc, argv);
-}
diff --git a/mdk-stage1/insmod-modutils/insmod.c b/mdk-stage1/insmod-modutils/insmod.c
deleted file mode 100644
index b0b7c2a0d..000000000
--- a/mdk-stage1/insmod-modutils/insmod.c
+++ /dev/null
@@ -1,2141 +0,0 @@
-/* Insert a module into a running kernel.
- Copyright 1996, 1997 Linux International.
-
- New implementation contributed by Richard Henderson <rth@tamu.edu>
- Based on original work by Bjorn Ekwall <bj0rn@blox.se>
- Restructured (and partly rewritten) by:
- Björn Ekwall <bj0rn@blox.se> February 1999
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
- /*
- Fixes:
-
- Adjust module size for mod_use_count in old_init_module:
- B. James Phillippe <bryan@terran.org>
-
- Merged modprobe + many fixes: Björn Ekwall <bj0rn@blox.se> February 1999
- SMP "friendliness" (and -P): Bill Zumach <zumach+@transarc.com>
-
- Ksymoops support: Keith Owens <kaos@ocs.com.au> August 1999.
-
- Add -r flag: Keith Owens <kaos@ocs.com.au> October 1999.
-
- More flexible recognition of the way the utility was called.
- Suggested by Stepan Kasal, implemented in a different way by Keith
- Owens <kaos@ocs.com.au> December 1999.
-
- Rationalize common code for 32/64 bit architectures.
- Keith Owens <kaos@ocs.com.au> December 1999.
- Add arch64().
- Keith Owens <kaos@ocs.com.au> December 1999.
- kallsyms support
- Keith Owens <kaos@ocs.com.au> April 2000.
- archdata support
- Keith Owens <kaos@ocs.com.au> August 2000.
- Add insmod -O, move print map before sys_init_module.
- Keith Owens <kaos@ocs.com.au> October 2000.
- Add insmod -S.
- Keith Owens <kaos@ocs.com.au> November 2000.
- Add persistent data support.
- Keith Owens <kaos@ocs.com.au> November 2000.
- Add tainted module support.
- Keith Owens <kaos@ocs.com.au> September 2001.
- */
-
-#include "../insmod.h"
-#include <sys/types.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <limits.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stddef.h>
-#include <getopt.h>
-#include <sys/stat.h>
-#include <sys/file.h>
-#include <sys/fcntl.h>
-
-#include "module.h"
-#include "obj.h"
-#include "kallsyms.h"
-#include "util.h"
-#include "version.h"
-
-#include "modstat.h"
-#include "config.h"
-
-#define STRVERSIONLEN 32
-
-/*======================================================================*/
-
-static int flag_force_load = 0;
-static int flag_silent_probe = 0;
-static int flag_export = 1;
-static int flag_load_map = 0;
-static int flag_ksymoops = 1;
-static int flag_numeric_only = 0;
-
-static int n_ext_modules_used;
-static int m_has_modinfo;
-static int gplonly_seen;
-static int warnings;
-
-extern int insmod_main(int argc, char **argv);
-extern int insmod_main_32(int argc, char **argv);
-extern int insmod_main_64(int argc, char **argv);
-extern int modprobe_main(int argc, char **argv);
-extern int rmmod_main(int argc, char **argv);
-extern int ksyms_main(int argc, char **argv);
-extern int lsmod_main(int argc, char **argv);
-extern int kallsyms_main(int argc, char **argv);
-
-/*======================================================================*/
-
-/* Only use the numeric part of the version string? */
-
-static void use_numeric_only(int major, int minor, char *str)
-{
- if (((major << 8) + minor) >= 0x0205 /* kernel 2.5 */
- || flag_numeric_only)
- *str = '\0';
-}
-
-/* Get the kernel version in the canonical integer form. */
-
-static int get_kernel_version(char str[STRVERSIONLEN])
-{
- char *p, *q;
- int a, b, c;
-
- strncpy(str, uts_info.release, STRVERSIONLEN-1);
- str[STRVERSIONLEN-1] = '\0';
- p = str;
-
- a = strtoul(p, &p, 10);
- if (*p != '.')
- return -1;
- b = strtoul(p + 1, &p, 10);
- if (*p != '.')
- return -1;
- c = strtoul(p + 1, &q, 10);
- if (p + 1 == q)
- return -1;
- use_numeric_only(a, b, q);
-
- return a << 16 | b << 8 | c;
-}
-
-/* String comparison for non-co-versioned kernel and module.
- * prefix should be the same as used by genksyms for this kernel.
- */
-static char *ncv_prefix = NULL; /* Overridden by --prefix option */
-static int ncv_plen = 0;
-
-/* Only set prefix once. If set by the user, use it. If not set by the
- * user, look for a well known kernel symbol and derive the prefix from
- * there. Otherwise set the prefix depending on whether uts_info
- * includes SMP or not for backwards compatibility.
- */
-static void set_ncv_prefix(char *prefix)
-{
- static char derived_prefix[256];
- static const char *well_known_symbol[] = { "get_module_symbol_R",
- "inter_module_get_R",
- };
- struct module_symbol *s;
- int i, j, l, m, pl;
- const char *name;
- char *p;
-
- if (ncv_prefix)
- return;
-
- if (prefix)
- ncv_prefix = prefix;
- else {
- /* Extract the prefix (if any) from well known symbols */
- for (i = 0, s = ksyms; i < nksyms; ++i, ++s) {
- name = (char *) s->name;
- l = strlen(name);
- for (j = 0; j < sizeof(well_known_symbol)/sizeof(well_known_symbol[0]); ++j) {
- m = strlen(well_known_symbol[j]);
- if (m + 8 > l ||
- strncmp(name, well_known_symbol[j], m))
- continue;
- pl = l - m - 8;
- if (pl > sizeof(derived_prefix)-1)
- continue; /* Prefix is wrong length */
- /* Must end with 8 hex digits */
- (void) strtoul(name+l-8, &p, 16);
- if (*p == 0) {
- strncpy(derived_prefix, name+m, pl);
- *(derived_prefix+pl) = '\0';
- ncv_prefix = derived_prefix;
- break;
- }
- }
- }
- }
- if (!ncv_prefix) {
- p = strchr(uts_info.version, ' ');
- if (p && *(++p) && !strncmp(p, "SMP ", 4))
- ncv_prefix = "smp_";
- else
- ncv_prefix = "";
- }
- ncv_plen = strlen(ncv_prefix);
- if (flag_verbose)
- lprintf("Symbol version prefix '%s'", ncv_prefix);
-}
-
-static int ncv_strcmp(const char *a, const char *b)
-{
- size_t alen = strlen(a), blen = strlen(b);
-
- if (blen == alen + 10 + ncv_plen &&
- b[alen] == '_' &&
- b[alen + 1] == 'R' &&
- !(ncv_plen && strncmp(b + alen + 2, ncv_prefix, ncv_plen))) {
- return strncmp(a, b, alen);
- } else if (alen == blen + 10 + ncv_plen &&
- a[blen] == '_' && a[blen + 1] == 'R' &&
- !(ncv_plen && strncmp(a + blen + 2, ncv_prefix, ncv_plen))) {
- return strncmp(a, b, blen);
- } else
- return strcmp(a, b);
-}
-
-/*
- * String hashing for non-co-versioned kernel and module.
- * Here we are simply forced to drop the crc from the hash.
- */
-static unsigned long ncv_symbol_hash(const char *str)
-{
- size_t len = strlen(str);
-
- if (len > 10 + ncv_plen &&
- str[len - 10 - ncv_plen] == '_' &&
- str[len - 9 - ncv_plen] == 'R' &&
- !(
- ncv_plen &&
- strncmp(str + len - (8 + ncv_plen), ncv_prefix, ncv_plen)
- ))
- len -= 10 + ncv_plen;
- return obj_elf_hash_n(str, len);
-}
-
-/*
- * Conditionally add the symbols from the given symbol set
- * to the new module.
- */
-static int add_symbols_from(struct obj_file *f, int idx,
- struct module_symbol *syms, size_t nsyms, int gpl)
-{
- struct module_symbol *s;
- size_t i;
- int used = 0;
-
- for (i = 0, s = syms; i < nsyms; ++i, ++s) {
- /*
- * Only add symbols that are already marked external.
- * If we override locals we may cause problems for
- * argument initialization.
- * We will also create a false dependency on the module.
- */
- struct obj_symbol *sym;
-
- /* GPL licensed modules can use symbols exported with
- * EXPORT_SYMBOL_GPL, so ignore any GPLONLY_ prefix on the
- * exported names. Non-GPL modules never see any GPLONLY_
- * symbols so they cannot fudge it by adding the prefix on
- * their references.
- */
- if (strncmp((char *)s->name, "GPLONLY_", 8) == 0) {
- gplonly_seen = 1;
- if (gpl)
- ((char *)s->name) += 8;
- else
- continue;
- }
-
- sym = obj_find_symbol(f, (char *) s->name);
-#ifdef ARCH_ppc64
- if (!sym)
- {
- static size_t buflen = 0;
- static char *buf = 0;
- int len;
-
- /* ppc64 is one of those architectures with
- function descriptors. A function is exported
- and accessed across object boundaries via its
- function descriptor. The function code symbol
- happens to be the function name, prefixed with
- '.', and a function call is a branch to the
- code symbol. The linker recognises when a call
- crosses object boundaries, and inserts a stub
- to call via the function descriptor.
- obj_ppc64.c of course does the same thing, so
- here we recognise that an undefined code symbol
- can be satisfied by the corresponding function
- descriptor symbol. */
-
- len = strlen ((char *) s->name) + 2;
- if (buflen < len)
- {
- buflen = len + (len >> 1);
- if (buf)
- free (buf);
- buf = malloc (buflen);
- }
- buf[0] = '.';
- strcpy (buf + 1, (char *) s->name);
- sym = obj_find_symbol(f, buf);
- }
-#endif /* ARCH_ppc64 */
-
- if (sym && ELFW(ST_BIND) (sym->info) != STB_LOCAL) {
- sym = obj_add_symbol(f, (char *) s->name, -1,
- ELFW(ST_INFO) (STB_GLOBAL, STT_NOTYPE),
- idx, s->value, 0);
- /*
- * Did our symbol just get installed?
- * If so, mark the module as "used".
- */
- if (sym->secidx == idx)
- used = 1;
- }
- }
-
- return used;
-}
-
-static void add_kernel_symbols(struct obj_file *f, int gpl)
-{
- struct module_stat *m;
- size_t i, nused = 0;
-
- /* Add module symbols first. */
- for (i = 0, m = module_stat; i < n_module_stat; ++i, ++m)
- if (m->nsyms &&
- add_symbols_from(f, SHN_HIRESERVE + 2 + i, m->syms, m->nsyms, gpl))
- m->status = 1 /* used */, ++nused;
- n_ext_modules_used = nused;
-
- /* And finally the symbols from the kernel proper. */
- if (nksyms)
- add_symbols_from(f, SHN_HIRESERVE + 1, ksyms, nksyms, gpl);
-}
-
-static void hide_special_symbols(struct obj_file *f)
-{
- struct obj_symbol *sym;
- const char *const *p;
- static const char *const specials[] =
- {
- "cleanup_module",
- "init_module",
- "kernel_version",
- NULL
- };
-
- for (p = specials; *p; ++p)
- if ((sym = obj_find_symbol(f, *p)) != NULL)
- sym->info = ELFW(ST_INFO) (STB_LOCAL, ELFW(ST_TYPE) (sym->info));
-}
-
-static void print_load_map(struct obj_file *f)
-{
- struct obj_symbol *sym;
- struct obj_symbol **all, **p;
- struct obj_section *sec;
- int load_map_cmp(const void *a, const void *b) {
- struct obj_symbol **as = (struct obj_symbol **) a;
- struct obj_symbol **bs = (struct obj_symbol **) b;
- unsigned long aa = obj_symbol_final_value(f, *as);
- unsigned long ba = obj_symbol_final_value(f, *bs);
- return aa < ba ? -1 : aa > ba ? 1 : 0;
- }
- int i, nsyms, *loaded;
-
- /* Report on the section layout. */
-
- lprintf("Sections: Size %-*s Align",
- (int) (2 * sizeof(void *)), "Address");
-
- for (sec = f->load_order; sec; sec = sec->load_next) {
- int a;
- unsigned long tmp;
-
- for (a = -1, tmp = sec->header.sh_addralign; tmp; ++a)
- tmp >>= 1;
- if (a == -1)
- a = 0;
-
- lprintf("%-15s %08lx %0*lx 2**%d",
- sec->name,
- (long)sec->header.sh_size,
- (int) (2 * sizeof(void *)),
- (long)sec->header.sh_addr,
- a);
- }
-
- /* Quick reference which section indicies are loaded. */
-
- loaded = alloca(sizeof(int) * (i = f->header.e_shnum));
- while (--i >= 0)
- loaded[i] = (f->sections[i]->header.sh_flags & SHF_ALLOC) != 0;
-
- /* Collect the symbols we'll be listing. */
-
- for (nsyms = i = 0; i < HASH_BUCKETS; ++i)
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->secidx <= SHN_HIRESERVE
- && (sym->secidx >= SHN_LORESERVE || loaded[sym->secidx]))
- ++nsyms;
-
- all = alloca(nsyms * sizeof(struct obj_symbol *));
-
- for (i = 0, p = all; i < HASH_BUCKETS; ++i)
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->secidx <= SHN_HIRESERVE
- && (sym->secidx >= SHN_LORESERVE || loaded[sym->secidx]))
- *p++ = sym;
-
- /* Sort them by final value. */
- qsort(all, nsyms, sizeof(struct obj_file *), load_map_cmp);
-
- /* And list them. */
- lprintf("\nSymbols:");
- for (p = all; p < all + nsyms; ++p) {
- char type = '?';
- unsigned long value;
-
- sym = *p;
- if (sym->secidx == SHN_ABS) {
- type = 'A';
- value = sym->value;
- } else if (sym->secidx == SHN_UNDEF) {
- type = 'U';
- value = 0;
- } else {
- struct obj_section *sec = f->sections[sym->secidx];
-
- if (sec->header.sh_type == SHT_NOBITS)
- type = 'B';
- else if (sec->header.sh_flags & SHF_ALLOC) {
- if (sec->header.sh_flags & SHF_EXECINSTR)
- type = 'T';
- else if (sec->header.sh_flags & SHF_WRITE)
- type = 'D';
- else
- type = 'R';
- }
- value = sym->value + sec->header.sh_addr;
- }
-
- if (ELFW(ST_BIND) (sym->info) == STB_LOCAL)
- type = tolower(type);
-
- lprintf("%0*lx %c %s", (int) (2 * sizeof(void *)), value,
- type, sym->name);
- }
-}
-
-/************************************************************************/
-/* begin compat */
-
-static char * get_modinfo_value(struct obj_file *f, const char *key)
-{
- struct obj_section *sec;
- char *p, *v, *n, *ep;
- size_t klen = strlen(key);
-
- sec = obj_find_section(f, ".modinfo");
- if (sec == NULL)
- return NULL;
-
- p = sec->contents;
- ep = p + sec->header.sh_size;
- while (p < ep) {
- v = strchr(p, '=');
- n = strchr(p, '\0');
- if (v) {
- if (v - p == klen && strncmp(p, key, klen) == 0)
- return v + 1;
- } else {
- if (n - p == klen && strcmp(p, key) == 0)
- return n;
- }
- p = n + 1;
- }
-
- return NULL;
-}
-
-static int create_this_module(struct obj_file *f, const char *m_name)
-{
- struct obj_section *sec;
-
- sec = obj_create_alloced_section_first(f, ".this", tgt_sizeof_long,
- sizeof(struct module));
- memset(sec->contents, 0, sizeof(struct module));
-
- obj_add_symbol(f, "__this_module", -1, ELFW(ST_INFO) (STB_LOCAL, STT_OBJECT),
- sec->idx, 0, sizeof(struct module));
-
- obj_string_patch(f, sec->idx, offsetof(struct module, name), m_name);
-
- return 1;
-}
-
-#ifdef COMPAT_2_0
-static int old_create_mod_use_count(struct obj_file *f)
-{
- struct obj_section *sec;
- struct obj_symbol *got;
-
- sec = obj_create_alloced_section_first(f, ".moduse",
- sizeof(long), sizeof(long));
-
- obj_add_symbol(f, "mod_use_count_",
- -1, ELFW(ST_INFO)(STB_LOCAL, STT_OBJECT),
- sec->idx, 0, sizeof(long));
-
- /*
- * patb: if there is a _GLOBAL_OFFSET_TABLE_,
- * add .got section for PIC type modules;
- * we have to do this here, because obj_* calls are not made until
- * after obj_check_undefined
- * is there a better place for this exception?
- */
- got = obj_find_symbol(f, "_GLOBAL_OFFSET_TABLE_");
- if (got)
- {
- sec = obj_create_alloced_section(f, ".got",
- sizeof(long), sizeof(long),
- SHF_WRITE);
- got->secidx = sec->idx; /* mark the symbol as defined */
- }
- return 1;
-}
-#endif
-
-/* add an entry to the __ksymtab section, creating it if necessary */
-static void add_ksymtab(struct obj_file *f, struct obj_symbol *sym)
-{
- struct obj_section *sec;
- ElfW(Addr) ofs;
-
- /* ensure __ksymtab is allocated, EXPORT_NOSYMBOLS creates a non-alloc section.
- * If __ksymtab is defined but not marked alloc, x out the first character
- * (no obj_delete routine) and create a new __ksymtab with the correct
- * characteristics.
- */
- sec = obj_find_section(f, "__ksymtab");
- if (sec && !(sec->header.sh_flags & SHF_ALLOC)) {
- *((char *)(sec->name)) = 'x'; /* override const */
- sec = NULL;
- }
- if (!sec)
- sec = obj_create_alloced_section(f, "__ksymtab",
- tgt_sizeof_void_p, 0, 0);
- if (!sec)
- return;
- sec->header.sh_flags |= SHF_ALLOC;
-
- ofs = sec->header.sh_size;
- obj_symbol_patch(f, sec->idx, ofs, sym);
- obj_string_patch(f, sec->idx, ofs + tgt_sizeof_void_p, sym->name);
- obj_extend_section(sec, 2 * tgt_sizeof_char_p);
-}
-
-static int create_module_ksymtab(struct obj_file *f)
-{
- struct obj_section *sec;
- int i;
-
- /* We must always add the module references. */
-
- if (n_ext_modules_used) {
- struct module_ref *dep;
- struct obj_symbol *tm;
-
- sec = obj_create_alloced_section(f, ".kmodtab",
- tgt_sizeof_void_p,
- sizeof(struct module_ref) * n_ext_modules_used, 0);
- if (!sec)
- return 0;
-
- tm = obj_find_symbol(f, "__this_module");
- dep = (struct module_ref *) sec->contents;
- for (i = 0; i < n_module_stat; ++i)
- if (module_stat[i].status /* used */) {
- dep->dep = module_stat[i].addr;
-#ifdef ARCH_ppc64
- dep->dep |= ppc64_module_base (f);
-#endif
- obj_symbol_patch(f, sec->idx, (char *) &dep->ref - sec->contents, tm);
- dep->next_ref = 0;
- ++dep;
- }
- }
- if (flag_export && !obj_find_section(f, "__ksymtab")) {
- int *loaded;
-
- /* We don't want to export symbols residing in sections that
- aren't loaded. There are a number of these created so that
- we make sure certain module options don't appear twice. */
-
- loaded = alloca(sizeof(int) * (i = f->header.e_shnum));
- while (--i >= 0)
- loaded[i] = (f->sections[i]->header.sh_flags & SHF_ALLOC) != 0;
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next) {
- if (ELFW(ST_BIND) (sym->info) != STB_LOCAL
- && sym->secidx <= SHN_HIRESERVE
- && (sym->secidx >= SHN_LORESERVE
- || loaded[sym->secidx])) {
- add_ksymtab(f, sym);
- }
- }
- }
- }
- return 1;
-}
-
-/* Get the module's kernel version in the canonical integer form. */
-static int get_module_version(struct obj_file *f, char str[STRVERSIONLEN])
-{
- int a, b, c;
- char *p, *q;
-
- if ((p = get_modinfo_value(f, "kernel_version")) == NULL) {
- struct obj_symbol *sym;
-
- m_has_modinfo = 0;
- if ((sym = obj_find_symbol(f, "kernel_version")) == NULL)
- sym = obj_find_symbol(f, "__module_kernel_version");
- if (sym == NULL)
- return -1;
- p = f->sections[sym->secidx]->contents + sym->value;
- } else
- m_has_modinfo = 1;
-
- strncpy(str, p, STRVERSIONLEN-1);
- str[STRVERSIONLEN-1] = '\0';
- p = str;
-
- a = strtoul(p, &p, 10);
- if (*p != '.')
- return -1;
- b = strtoul(p + 1, &p, 10);
- if (*p != '.')
- return -1;
- c = strtoul(p + 1, &q, 10);
- if (p + 1 == q)
- return -1;
- use_numeric_only(a, b, q);
-
- return a << 16 | b << 8 | c;
-}
-
-/* Return the kernel symbol checksum version, or zero if not used. */
-static int is_kernel_checksummed(void)
-{
- struct module_symbol *s;
- size_t i;
-
- /*
- * Using_Versions might not be the first symbol,
- * but it should be in there.
- */
- for (i = 0, s = ksyms; i < nksyms; ++i, ++s)
- if (strcmp((char *) s->name, "Using_Versions") == 0)
- return s->value;
-
- return 0;
-}
-
-static int is_module_checksummed(struct obj_file *f)
-{
- if (m_has_modinfo) {
- const char *p = get_modinfo_value(f, "using_checksums");
- if (p)
- return atoi(p);
- else
- return 0;
- } else
- return obj_find_symbol(f, "Using_Versions") != NULL;
-}
-
-/* add module source, timestamp, kernel version and a symbol for the
- * start of some sections. this info is used by ksymoops to do better
- * debugging.
- */
-static void add_ksymoops_symbols(struct obj_file *f, const char *filename,
- const char *m_name)
-{
- struct obj_section *sec;
- struct obj_symbol *sym;
- char *name, *absolute_filename;
- char str[STRVERSIONLEN], real[PATH_MAX];
- int i, l, lm_name, lfilename, use_ksymtab, version;
- struct stat statbuf;
-
- static const char *section_names[] = {
- ".text",
- ".rodata",
- ".data",
- ".bss"
- };
-
- if (realpath(filename, real)) {
- absolute_filename = xstrdup(real);
- }
- else {
- int save_errno = errno;
- error("cannot get realpath for %s", filename);
- errno = save_errno;
- perror("");
- absolute_filename = xstrdup(filename);
- }
-
- lm_name = strlen(m_name);
- lfilename = strlen(absolute_filename);
-
- /* add to ksymtab if it already exists or there is no ksymtab and other symbols
- * are not to be exported. otherwise leave ksymtab alone for now, the
- * "export all symbols" compatibility code will export these symbols later.
- */
-
- use_ksymtab = obj_find_section(f, "__ksymtab") || !flag_export;
-
- if ((sec = obj_find_section(f, ".this"))) {
- /* tag the module header with the object name, last modified
- * timestamp and module version. worst case for module version
- * is 0xffffff, decimal 16777215. putting all three fields in
- * one symbol is less readable but saves kernel space.
- */
- l = sizeof(symprefix)+ /* "__insmod_" */
- lm_name+ /* module name */
- 2+ /* "_O" */
- lfilename+ /* object filename */
- 2+ /* "_M" */
- 2*sizeof(statbuf.st_mtime)+ /* mtime in hex */
- 2+ /* "_V" */
- 8+ /* version in dec */
- 1; /* nul */
- name = xmalloc(l);
- if (stat(absolute_filename, &statbuf) != 0)
- statbuf.st_mtime = 0;
- version = get_module_version(f, str); /* -1 if not found */
- snprintf(name, l, "%s%s_O%s_M%0*lX_V%d",
- symprefix, m_name, absolute_filename,
- (int)(2*sizeof(statbuf.st_mtime)), statbuf.st_mtime,
- version);
- sym = obj_add_symbol(f, name, -1,
- ELFW(ST_INFO) (STB_GLOBAL, STT_NOTYPE),
- sec->idx, sec->header.sh_addr, 0);
- if (use_ksymtab)
- add_ksymtab(f, sym);
- }
- free(absolute_filename);
-
- /* record where the persistent data is going, same address as previous symbol */
-
- if (f->persist) {
- l = sizeof(symprefix)+ /* "__insmod_" */
- lm_name+ /* module name */
- 2+ /* "_P" */
- strlen(f->persist)+ /* data store */
- 1; /* nul */
- name = xmalloc(l);
- snprintf(name, l, "%s%s_P%s",
- symprefix, m_name, f->persist);
- sym = obj_add_symbol(f, name, -1, ELFW(ST_INFO) (STB_GLOBAL, STT_NOTYPE),
- sec->idx, sec->header.sh_addr, 0);
- if (use_ksymtab)
- add_ksymtab(f, sym);
- }
-
- /* tag the desired sections if size is non-zero */
-
- for (i = 0; i < sizeof(section_names)/sizeof(section_names[0]); ++i) {
- if ((sec = obj_find_section(f, section_names[i])) &&
- sec->header.sh_size) {
- l = sizeof(symprefix)+ /* "__insmod_" */
- lm_name+ /* module name */
- 2+ /* "_S" */
- strlen(sec->name)+ /* section name */
- 2+ /* "_L" */
- 8+ /* length in dec */
- 1; /* nul */
- name = xmalloc(l);
- snprintf(name, l, "%s%s_S%s_L%ld",
- symprefix, m_name, sec->name,
- (long)sec->header.sh_size);
- sym = obj_add_symbol(f, name, -1, ELFW(ST_INFO) (STB_GLOBAL, STT_NOTYPE),
- sec->idx, sec->header.sh_addr, 0);
- if (use_ksymtab)
- add_ksymtab(f, sym);
- }
- }
-}
-
-static int process_module_arguments(struct obj_file *f, int argc, char **argv, int required)
-{
- for (; argc > 0; ++argv, --argc) {
- struct obj_symbol *sym;
- int c;
- int min, max;
- int n;
- char *contents;
- char *input;
- char *fmt;
- char *key;
- char *loc;
-
- if ((input = strchr(*argv, '=')) == NULL)
- continue;
-
- n = input - *argv;
- input += 1; /* skip '=' */
-
- key = alloca(n + 6);
-
- if (m_has_modinfo) {
- memcpy(key, "parm_", 5);
- memcpy(key + 5, *argv, n);
- key[n + 5] = '\0';
- if ((fmt = get_modinfo_value(f, key)) == NULL) {
- if (required || flag_verbose) {
- lprintf("Warning: ignoring %s, no such parameter in this module", *argv);
- ++warnings;
- continue;
- }
- }
- key += 5;
-
- if (isdigit(*fmt)) {
- min = strtoul(fmt, &fmt, 10);
- if (*fmt == '-')
- max = strtoul(fmt + 1, &fmt, 10);
- else
- max = min;
- } else
- min = max = 1;
- } else { /* not m_has_modinfo */
- memcpy(key, *argv, n);
- key[n] = '\0';
-
- if (isdigit(*input))
- fmt = "i";
- else
- fmt = "s";
- min = max = 0;
- }
-
- sym = obj_find_symbol(f, key);
-
- /*
- * Also check that the parameter was not
- * resolved from the kernel.
- */
- if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
- error("symbol for parameter %s not found", key);
- return 0;
- }
-
- contents = f->sections[sym->secidx]->contents;
- loc = contents + sym->value;
- n = 1;
-
- while (*input) {
- char *str;
-
- switch (*fmt) {
- case 's':
- case 'c':
- /*
- * Do C quoting if we begin with a ",
- * else slurp the lot.
- */
- if (*input == '"') {
- char *r;
-
- str = alloca(strlen(input));
- for (r = str, input++; *input != '"'; ++input, ++r) {
- if (*input == '\0') {
- error("improperly terminated string argument for %s", key);
- return 0;
- }
- /* else */
- if (*input != '\\') {
- *r = *input;
- continue;
- }
- /* else handle \ */
- switch (*++input) {
- case 'a': *r = '\a'; break;
- case 'b': *r = '\b'; break;
- case 'e': *r = '\033'; break;
- case 'f': *r = '\f'; break;
- case 'n': *r = '\n'; break;
- case 'r': *r = '\r'; break;
- case 't': *r = '\t'; break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- c = *input - '0';
- if ('0' <= input[1] && input[1] <= '7') {
- c = (c * 8) + *++input - '0';
- if ('0' <= input[1] && input[1] <= '7')
- c = (c * 8) + *++input - '0';
- }
- *r = c;
- break;
-
- default: *r = *input; break;
- }
- }
- *r = '\0';
- ++input;
- } else {
- /*
- * The string is not quoted.
- * We will break it using the comma
- * (like for ints).
- * If the user wants to include commas
- * in a string, he just has to quote it
- */
- char *r;
-
- /* Search the next comma */
- if ((r = strchr(input, ',')) != NULL) {
- /*
- * Found a comma
- * Recopy the current field
- */
- str = alloca(r - input + 1);
- memcpy(str, input, r - input);
- str[r - input] = '\0';
- /* Keep next fields */
- input = r;
- } else {
- /* last string */
- str = input;
- input = "";
- }
- }
-
- if (*fmt == 's') {
- /* Normal string */
- obj_string_patch(f, sym->secidx, loc - contents, str);
- loc += tgt_sizeof_char_p;
- } else {
- /* Array of chars (in fact, matrix !) */
- long charssize; /* size of each member */
-
- /* Get the size of each member */
- /* Probably we should do that outside the loop ? */
- if (!isdigit(*(fmt + 1))) {
- error("parameter type 'c' for %s must be followed by"
- " the maximum size", key);
- return 0;
- }
- charssize = strtoul(fmt + 1, (char **) NULL, 10);
-
- /* Check length */
- if (strlen(str) >= charssize-1) {
- error("string too long for %s (max %ld)",
- key, charssize - 1);
- return 0;
- }
- /* Copy to location */
- strcpy((char *) loc, str); /* safe, see check above */
- loc += charssize;
- }
- /*
- * End of 's' and 'c'
- */
- break;
-
- case 'b':
- *loc++ = strtoul(input, &input, 0);
- break;
-
- case 'h':
- *(short *) loc = strtoul(input, &input, 0);
- loc += tgt_sizeof_short;
- break;
-
- case 'i':
- *(int *) loc = strtoul(input, &input, 0);
- loc += tgt_sizeof_int;
- break;
-
- case 'l':
- *(long *) loc = strtoul(input, &input, 0);
- loc += tgt_sizeof_long;
- break;
-
- default:
- error("unknown parameter type '%c' for %s",
- *fmt, key);
- return 0;
- }
- /*
- * end of switch (*fmt)
- */
-
- while (*input && isspace(*input))
- ++input;
- if (*input == '\0')
- break; /* while (*input) */
- /* else */
-
- if (*input == ',') {
- if (max && (++n > max)) {
- error("too many values for %s (max %d)", key, max);
- return 0;
- }
- ++input;
- /* continue with while (*input) */
- } else {
- error("invalid argument syntax for %s: '%c'",
- key, *input);
- return 0;
- }
- } /* end of while (*input) */
-
- if (min && (n < min)) {
- error("too few values for %s (min %d)", key, min);
- return 0;
- }
- } /* end of for (;argc > 0;) */
-
- return 1;
-}
-
-
-/* Add a kallsyms section if the kernel supports all symbols. */
-static int add_kallsyms(struct obj_file *f,
- struct obj_section **module_kallsyms, int force_kallsyms)
-{
- struct module_symbol *s;
- struct obj_file *f_kallsyms;
- struct obj_section *sec_kallsyms;
- size_t i;
- int l;
- const char *p, *pt_R;
- unsigned long start = 0, stop = 0;
-
- for (i = 0, s = ksyms; i < nksyms; ++i, ++s) {
- p = (char *)s->name;
- pt_R = strstr(p, "_R");
- if (pt_R)
- l = pt_R - p;
- else
- l = strlen(p);
- if (strncmp(p, "__start_" KALLSYMS_SEC_NAME, l) == 0)
- start = s->value;
- else if (strncmp(p, "__stop_" KALLSYMS_SEC_NAME, l) == 0)
- stop = s->value;
- }
-
- if (start >= stop && !force_kallsyms)
- return(0);
-
- /* The kernel contains all symbols, do the same for this module. */
-
- /* Add an empty kallsyms section to the module if necessary */
- for (i = 0; i < f->header.e_shnum; ++i) {
- if (strcmp(f->sections[i]->name, KALLSYMS_SEC_NAME) == 0) {
- *module_kallsyms = f->sections[i];
- break;
- }
- }
- if (!*module_kallsyms)
- *module_kallsyms = obj_create_alloced_section(f, KALLSYMS_SEC_NAME, 0, 0, 0);
-
- /* Size and populate kallsyms */
- if (obj_kallsyms(f, &f_kallsyms))
- return(1);
- sec_kallsyms = f_kallsyms->sections[KALLSYMS_IDX];
- (*module_kallsyms)->header.sh_addralign = sec_kallsyms->header.sh_addralign;
- (*module_kallsyms)->header.sh_size = sec_kallsyms->header.sh_size;
- free((*module_kallsyms)->contents);
- (*module_kallsyms)->contents = sec_kallsyms->contents;
- sec_kallsyms->contents = NULL;
- obj_free(f_kallsyms);
-
- return 0;
-}
-
-
-/* Add an arch data section if the arch wants it. */
-static int add_archdata(struct obj_file *f,
- struct obj_section **sec)
-{
- size_t i;
-
- *sec = NULL;
- /* Add an empty archdata section to the module if necessary */
- for (i = 0; i < f->header.e_shnum; ++i) {
- if (strcmp(f->sections[i]->name, ARCHDATA_SEC_NAME) == 0) {
- *sec = f->sections[i];
- break;
- }
- }
- if (!*sec)
- *sec = obj_create_alloced_section(f, ARCHDATA_SEC_NAME, 16, 0, 0);
-
- /* Size and populate archdata */
- if (arch_archdata(f, *sec))
- return(1);
- return 0;
-}
-
-
-static int init_module(const char *m_name, struct obj_file *f,
- unsigned long m_size, const char *blob_name,
- unsigned int noload, unsigned int flag_load_map)
-{
- struct module *module;
- struct obj_section *sec;
- void *image;
- int ret = 0;
- tgt_long m_addr;
-
- sec = obj_find_section(f, ".this");
- module = (struct module *) sec->contents;
- m_addr = sec->header.sh_addr;
-
- module->size_of_struct = sizeof(*module);
- module->size = m_size;
- module->flags = flag_autoclean ? NEW_MOD_AUTOCLEAN : 0;
-
- sec = obj_find_section(f, "__ksymtab");
- if (sec && sec->header.sh_size) {
- module->syms = sec->header.sh_addr;
- module->nsyms = sec->header.sh_size / (2 * tgt_sizeof_char_p);
- }
- if (n_ext_modules_used) {
- sec = obj_find_section(f, ".kmodtab");
- module->deps = sec->header.sh_addr;
- module->ndeps = n_ext_modules_used;
- }
- module->init = obj_symbol_final_value(f, obj_find_symbol(f, "init_module"));
- module->cleanup = obj_symbol_final_value(f,
- obj_find_symbol(f, "cleanup_module"));
-
- sec = obj_find_section(f, "__ex_table");
- if (sec) {
- module->ex_table_start = sec->header.sh_addr;
- module->ex_table_end = sec->header.sh_addr + sec->header.sh_size;
- }
- sec = obj_find_section(f, ".text.init");
- if (sec) {
- module->runsize = sec->header.sh_addr - m_addr;
- }
- sec = obj_find_section(f, ".data.init");
- if (sec) {
- if (!module->runsize ||
- module->runsize > sec->header.sh_addr - m_addr)
- module->runsize = sec->header.sh_addr - m_addr;
- }
- sec = obj_find_section(f, ARCHDATA_SEC_NAME);
- if (sec && sec->header.sh_size) {
- module->archdata_start = sec->header.sh_addr;
- module->archdata_end = module->archdata_start + sec->header.sh_size;
- }
- sec = obj_find_section(f, KALLSYMS_SEC_NAME);
- if (sec && sec->header.sh_size) {
- module->kallsyms_start = sec->header.sh_addr;
- module->kallsyms_end = module->kallsyms_start + sec->header.sh_size;
- }
- if (!arch_init_module(f, module))
- return 0;
-
- /*
- * Whew! All of the initialization is complete.
- * Collect the final module image and give it to the kernel.
- */
- image = xmalloc(m_size);
- obj_create_image(f, image);
-
- if (flag_load_map)
- print_load_map(f);
-
- if (blob_name) {
- int fd, l;
- fd = open(blob_name, O_WRONLY|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
- if (fd < 0) {
- error("open %s failed %m", blob_name);
- ret = -1;
- }
- else {
- if ((l = write(fd, image, m_size)) != m_size) {
- error("write %s failed %m", blob_name);
- ret = -1;
- }
- close(fd);
- }
- }
-
- if (ret == 0 && !noload) {
- fflush(stdout); /* Flush any debugging output */
- ret = sys_init_module(m_name, (struct module *) image);
- if (ret) {
- error("init_module: %m");
- lprintf("Hint: insmod errors can be caused by incorrect module parameters, "
- "including invalid IO or IRQ parameters.\n"
- " You may find more information in syslog or the output from dmesg");
- }
- }
-
- free(image);
-
- return ret == 0;
-}
-
-#ifdef COMPAT_2_0
-static int old_init_module(const char *m_name, struct obj_file *f,
- unsigned long m_size)
-{
- char *image;
- struct old_mod_routines routines;
- struct old_symbol_table *symtab;
- int ret;
- int nsyms = 0, strsize = 0, total;
-
- /* Create the symbol table */
- /* Size things first... */
- if (flag_export) {
- int i;
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
-
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (ELFW(ST_BIND) (sym->info) != STB_LOCAL &&
- sym->secidx <= SHN_HIRESERVE) {
- sym->ksymidx = nsyms++;
- strsize += strlen(sym->name) + 1;
- }
- }
- }
- total = (sizeof(struct old_symbol_table) +
- nsyms * sizeof(struct old_module_symbol) +
- n_ext_modules_used * sizeof(struct old_module_ref) +
- strsize);
- symtab = xmalloc(total);
- symtab->size = total;
- symtab->n_symbols = nsyms;
- symtab->n_refs = n_ext_modules_used;
-
- if (flag_export && nsyms) {
- struct old_module_symbol *ksym;
- char *str;
- int i;
-
- ksym = symtab->symbol;
- str = ((char *) ksym +
- nsyms * sizeof(struct old_module_symbol) +
- n_ext_modules_used * sizeof(struct old_module_ref));
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym; sym = sym->next)
- if (sym->ksymidx >= 0) {
- ksym->addr = obj_symbol_final_value(f, sym);
- ksym->name = (unsigned long) str - (unsigned long) symtab;
-
- str = stpcpy(str, sym->name) + 1;
- ksym++;
- }
- }
- }
-
- if (n_ext_modules_used) {
- struct old_module_ref *ref;
- int i;
-
- ref = (struct old_module_ref *)
- ((char *) symtab->symbol + nsyms * sizeof(struct old_module_symbol));
-
- for (i = 0; i < n_module_stat; ++i) {
- if (module_stat[i].status /* used */) {
- ref++->module = module_stat[i].modstruct;
- }
- }
- }
-
- /* Fill in routines. */
-
- routines.init = obj_symbol_final_value(f, obj_find_symbol(f, "init_module"));
- routines.cleanup = obj_symbol_final_value(f,
- obj_find_symbol(f, "cleanup_module"));
-
- /*
- * Whew! All of the initialization is complete.
- * Collect the final module image and give it to the kernel.
- */
- image = xmalloc(m_size);
- obj_create_image(f, image);
-
- /*
- * image holds the complete relocated module,
- * accounting correctly for mod_use_count.
- * However the old module kernel support assume that it
- * is receiving something which does not contain mod_use_count.
- */
- ret = old_sys_init_module(m_name, image + sizeof(long),
- (m_size - sizeof(long)) |
- (flag_autoclean ? OLD_MOD_AUTOCLEAN : 0),
- &routines,
- symtab);
- if (ret)
- error("init_module: %m");
-
- free(image);
- free(symtab);
-
- return ret == 0;
-}
-#endif
-/* end compat */
-/************************************************************************/
-
-/* Check that a module parameter has a reasonable definition */
-static int check_module_parameter(struct obj_file *f, char *key, char *value, int *persist_flag)
-{
- struct obj_symbol *sym;
- int min, max;
- char *p = value;
-
- sym = obj_find_symbol(f, key);
- if (sym == NULL) {
- /* FIXME: For 2.2 kernel compatibility, only issue warnings for
- * most error conditions. Make these all errors in 2.5.
- */
- lprintf("Warning: %s symbol for parameter %s not found", error_file, key);
- ++warnings;
- return(1);
- }
-
- if (isdigit(*p)) {
- min = strtoul(p, &p, 10);
- if (*p == '-')
- max = strtoul(p + 1, &p, 10);
- else
- max = min;
- } else
- min = max = 1;
-
- if (max < min) {
- lprintf("Warning: %s parameter %s has max < min!", error_file, key);
- ++warnings;
- return(1);
- }
-
- switch (*p) {
- case 'c':
- if (!isdigit(p[1])) {
- lprintf("%s parameter %s has no size after 'c'!", error_file, key);
- ++warnings;
- return(1);
- }
- while (isdigit(p[1]))
- ++p; /* swallow c array size */
- break;
- case 'b': /* drop through */
- case 'h': /* drop through */
- case 'i': /* drop through */
- case 'l': /* drop through */
- case 's':
- break;
- case '\0':
- lprintf("%s parameter %s has no format character!", error_file, key);
- ++warnings;
- return(1);
- default:
- lprintf("%s parameter %s has unknown format character '%c'", error_file, key, *p);
- ++warnings;
- return(1);
- }
- switch (*++p) {
- case 'p':
- if (*(p-1) == 's') {
- error("parameter %s is invalid persistent string", key);
- return(1);
- }
- *persist_flag = 1;
- break;
- case '\0':
- break;
- default:
- lprintf("%s parameter %s has unknown format modifier '%c'", error_file, key, *p);
- ++warnings;
- return(1);
- }
- return(0);
-}
-
-/* Check that all module parameters have reasonable definitions */
-static void check_module_parameters(struct obj_file *f, int *persist_flag)
-{
- struct obj_section *sec;
- char *ptr, *value, *n, *endptr;
- int namelen, err = 0;
-
- sec = obj_find_section(f, ".modinfo");
- if (sec == NULL) {
- /* module does not support typed parameters */
- return;
- }
-
- ptr = sec->contents;
- endptr = ptr + sec->header.sh_size;
- while (ptr < endptr && !err) {
- value = strchr(ptr, '=');
- n = strchr(ptr, '\0');
- if (value) {
- namelen = value - ptr;
- if (namelen >= 5 && strncmp(ptr, "parm_", 5) == 0
- && !(namelen > 10 && strncmp(ptr, "parm_desc_", 10) == 0)) {
- char *pname = xmalloc(namelen + 1);
- strncpy(pname, ptr + 5, namelen - 5);
- pname[namelen - 5] = '\0';
- err = check_module_parameter(f, pname, value+1, persist_flag);
- free(pname);
- }
- } else {
- if (n - ptr >= 5 && strncmp(ptr, "parm_", 5) == 0) {
- error("parameter %s found with no value", ptr);
- err = 1;
- }
- }
- ptr = n + 1;
- }
-
- if (err)
- *persist_flag = 0;
- return;
-}
-
-static void set_tainted(struct obj_file *f, int fd, int kernel_has_tainted,
- int noload, int taint,
- const char *text1, const char *text2)
-{
- char buf[80];
- int oldval;
- static int first = 1;
- if (fd < 0 && !kernel_has_tainted)
- return; /* New modutils on old kernel */
- lprintf("Warning: loading %s will taint the kernel: %s%s",
- f->filename, text1, text2);
- ++warnings;
- if (first) {
- lprintf(" See %s for information about tainted modules", TAINT_URL);
- first = 0;
- }
- if (fd >= 0 && !noload) {
- read(fd, buf, sizeof(buf)-1);
- buf[sizeof(buf)-1] = '\0';
- oldval = strtoul(buf, NULL, 10);
- sprintf(buf, "%d\n", oldval | taint);
- write(fd, buf, strlen(buf));
- }
-}
-
-/* Check if loading this module will taint the kernel. */
-static void check_tainted_module(struct obj_file *f, int noload)
-{
- static const char tainted_file[] = TAINT_FILENAME;
- int fd, kernel_has_tainted;
- const char *ptr;
-
- if ((fd = open(tainted_file, O_RDWR)) < 0) {
- if (errno == ENOENT)
- kernel_has_tainted = 0;
- else if (errno == EACCES)
- kernel_has_tainted = 1;
- else {
- perror(tainted_file);
- kernel_has_tainted = 0;
- }
- }
- else
- kernel_has_tainted = 1;
-
- switch (obj_gpl_license(f, &ptr)) {
- case 0:
- break;
- case 1:
- set_tainted(f, fd, kernel_has_tainted, noload, TAINT_PROPRIETORY_MODULE, "no license", "");
- break;
- case 2:
- /* The module has a non-GPL license so we pretend that the
- * kernel always has a taint flag to get a warning even on
- * kernels without the proc flag.
- */
- set_tainted(f, fd, 1, noload, TAINT_PROPRIETORY_MODULE, "non-GPL license - ", ptr);
- break;
- default:
- set_tainted(f, fd, 1, noload, TAINT_PROPRIETORY_MODULE, "Unexpected return from obj_gpl_license", "");
- break;
- }
-
- if (flag_force_load)
- set_tainted(f, fd, 1, noload, TAINT_FORCED_MODULE, "forced load", "");
- if (fd >= 0)
- close(fd);
-}
-
-/* For common 3264 code, only compile the usage message once, in the 64 bit version */
-#if defined(COMMON_3264) && defined(ONLY_32)
-extern void insmod_usage(void); /* Use the copy in the 64 bit version */
-#else /* Common 64 bit version or any non common code - compile usage routine */
-void insmod_usage(void)
-{
- fputs("Usage:\n"
- "insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name] [-o module_name] [-O blob_name] [-P prefix] module [ symbol=value ... ]\n"
- "\n"
- " module Name of a loadable kernel module ('.o' can be omitted)\n"
- " -f, --force Force loading under wrong kernel version\n"
- " -h, --help Print this message\n"
- " -k, --autoclean Make module autoclean-able\n"
- " -L, --lock Prevent simultaneous loads of the same module\n"
- " -m, --map Generate load map (so crashes can be traced)\n"
- " -n, --noload Don't load, just show\n"
- " -p, --probe Probe mode; check if the module matches the kernel\n"
- " -q, --quiet Don't print unresolved symbols\n"
- " -r, --root Allow root to load modules not owned by root\n"
- " -s, --syslog Report errors via syslog\n"
- " -S, --kallsyms Force kallsyms on module\n"
- " -v, --verbose Verbose output\n"
- " -V, --version Show version\n"
- " -x, --noexport Do not export externs\n"
- " -X, --export Do export externs (default)\n"
- " -y, --noksymoops Do not add ksymoops symbols\n"
- " -Y, --ksymoops Do add ksymoops symbols (default)\n"
- " -N, --numeric-only Only check the numeric part of the kernel version\n"
- " -e persist_name\n"
- " --persist=persist_name Filename to hold any persistent data from the module\n"
- " -o NAME, --name=NAME Set internal module name to NAME\n"
- " -O NAME, --blob=NAME Save the object as a binary blob in NAME\n"
- " -P PREFIX\n"
- " --prefix=PREFIX Prefix for kernel or module symbols\n"
- ,stderr);
- exit(1);
-}
-#endif /* defined(COMMON_3264) && defined(ONLY_32) */
-
-#if defined(COMMON_3264) && defined(ONLY_32)
-#define INSMOD_MAIN insmod_main_32 /* 32 bit version */
-#elif defined(COMMON_3264) && defined(ONLY_64)
-#define INSMOD_MAIN insmod_main_64 /* 64 bit version */
-#else
-#define INSMOD_MAIN insmod_main /* Not common code */
-#endif
-
-int INSMOD_MAIN(int argc, char **argv)
-{
- int k_version;
- int k_crcs;
- char k_strversion[STRVERSIONLEN];
- struct option long_opts[] = {
- {"force", 0, 0, 'f'},
- {"help", 0, 0, 'h'},
- {"autoclean", 0, 0, 'k'},
- {"lock", 0, 0, 'L'},
- {"map", 0, 0, 'm'},
- {"noload", 0, 0, 'n'},
- {"probe", 0, 0, 'p'},
- {"poll", 0, 0, 'p'}, /* poll is deprecated, remove in 2.5 */
- {"quiet", 0, 0, 'q'},
- {"root", 0, 0, 'r'},
- {"syslog", 0, 0, 's'},
- {"kallsyms", 0, 0, 'S'},
- {"verbose", 0, 0, 'v'},
- {"version", 0, 0, 'V'},
- {"noexport", 0, 0, 'x'},
- {"export", 0, 0, 'X'},
- {"noksymoops", 0, 0, 'y'},
- {"ksymoops", 0, 0, 'Y'},
- {"persist", 1, 0, 'e'},
- {"numeric-only", 1, 0, 'N'},
- {"name", 1, 0, 'o'},
- {"blob", 1, 0, 'O'},
- {"prefix", 1, 0, 'P'},
- {0, 0, 0, 0}
- };
- char *m_name = NULL;
- char *blob_name = NULL; /* Save object as binary blob */
- int m_version;
- ElfW(Addr) m_addr;
- unsigned long m_size;
- int m_crcs;
- char m_strversion[STRVERSIONLEN];
- char *filename;
- char *persist_name = NULL; /* filename to hold any persistent data */
- int fp;
- struct obj_file *f;
- struct obj_section *kallsyms = NULL, *archdata = NULL;
- int o;
- int noload = 0;
- int dolock = 1; /*Note: was: 0; */
- int quiet = 0;
- int exit_status = 1;
- int force_kallsyms = 0;
- int persist_parms = 0; /* does module have persistent parms? */
- int i;
- int gpl;
-
- error_file = "insmod";
-
- /* To handle repeated calls from combined modprobe */
- errors = optind = 0;
-
- /* Process the command line. */
- while ((o = getopt_long(argc, argv, "fhkLmnpqrsSvVxXyYNe:o:O:P:R:",
- &long_opts[0], NULL)) != EOF)
- switch (o) {
- case 'f': /* force loading */
- flag_force_load = 1;
- break;
- case 'h': /* Print the usage message. */
- insmod_usage();
- break;
- case 'k': /* module loaded by kerneld, auto-cleanable */
- flag_autoclean = 1;
- break;
- case 'L': /* protect against recursion. */
- dolock = 1;
- break;
- case 'm': /* generate load map */
- flag_load_map = 1;
- break;
- case 'n': /* don't load, just check */
- noload = 1;
- break;
- case 'p': /* silent probe mode */
- flag_silent_probe = 1;
- break;
- case 'q': /* Don't print unresolved symbols */
- quiet = 1;
- break;
- case 'r': /* allow root to load non-root modules */
- root_check_off = !root_check_off;
- break;
- case 's': /* start syslog */
- setsyslog("insmod");
- break;
- case 'S': /* Force kallsyms */
- force_kallsyms = 1;
- break;
- case 'v': /* verbose output */
- flag_verbose = 1;
- break;
- case 'V':
- fputs("insmod version " MODUTILS_VERSION "\n", stderr);
- break;
- case 'x': /* do not export externs */
- flag_export = 0;
- break;
- case 'X': /* do export externs */
- flag_export = 1;
- break;
- case 'y': /* do not define ksymoops symbols */
- flag_ksymoops = 0;
- break;
- case 'Y': /* do define ksymoops symbols */
- flag_ksymoops = 1;
- break;
- case 'N': /* only check numeric part of kernel version */
- flag_numeric_only = 1;
- break;
-
- case 'e': /* persistent data filename */
- free(persist_name);
- persist_name = xstrdup(optarg);
- break;
- case 'o': /* name the output module */
- m_name = optarg;
- break;
- case 'O': /* save the output module object */
- blob_name = optarg;
- break;
- case 'P': /* use prefix on crc */
- set_ncv_prefix(optarg);
- break;
-
- default:
- insmod_usage();
- break;
- }
-
- if (optind >= argc) {
- insmod_usage();
- }
- filename = argv[optind++];
-
- if (config_read(0, NULL, "", NULL) < 0) {
- error("Failed handle configuration");
- }
-
- if (persist_name && !*persist_name &&
- (!persistdir || !*persistdir)) {
- free(persist_name);
- persist_name = NULL;
- if (flag_verbose) {
- lprintf("insmod: -e \"\" ignored, no persistdir");
- ++warnings;
- }
- }
-
- if (m_name == NULL) {
- size_t len;
- char *p;
-
- if ((p = strrchr(filename, '/')) != NULL)
- p++;
- else
- p = filename;
- len = strlen(p);
- if (len > 2 && p[len - 2] == '.' && p[len - 1] == 'o')
- len -= 2;
- else if (len > 4 && p[len - 4] == '.' && p[len - 3] == 'm'
- && p[len - 2] == 'o' && p[len - 1] == 'd')
- len -= 4;
-#ifdef CONFIG_USE_ZLIB
- else if (len > 5 && !strcmp(p + len - 5, ".o.gz"))
- len -= 5;
-#endif
-
- m_name = xmalloc(len + 1);
- memcpy(m_name, p, len);
- m_name[len] = '\0';
- }
-
- /* Locate the file to be loaded. */
- if (!strchr(filename, '/') && !strchr(filename, '.')) {
- char *tmp = search_module_path(filename);
- if (tmp == NULL) {
- error("%s: no module by that name found", filename);
- return 1;
- }
- filename = tmp;
- lprintf("Using %s", filename);
- } else if (flag_verbose)
- lprintf("Using %s", filename);
-
- /* And open it. */
- if ((fp = gzf_open(filename, O_RDONLY)) == -1) {
- error("%s: %m", filename);
- return 1;
- }
- /* Try to prevent multiple simultaneous loads. */
- if (dolock)
- flock(fp, LOCK_EX);
-
- if (!get_kernel_info(K_SYMBOLS))
- goto out;
-
- /*
- * Set the genksyms prefix if this is a versioned kernel
- * and it's not already set.
- */
- set_ncv_prefix(NULL);
-
- for (i = 0; !noload && i < n_module_stat; ++i) {
- if (strcmp(module_stat[i].name, m_name) == 0) {
- error("a module named %s already exists", m_name);
- goto out;
- }
- }
-
- error_file = filename;
- if ((f = obj_load(fp, ET_REL, filename)) == NULL)
- goto out;
-
- /* Version correspondence? */
- k_version = get_kernel_version(k_strversion);
- m_version = get_module_version(f, m_strversion);
- if (m_version == -1) {
- error("couldn't find the kernel version the module was compiled for");
- goto out;
- }
-
- k_crcs = is_kernel_checksummed();
- m_crcs = is_module_checksummed(f);
- if ((m_crcs == 0 || k_crcs == 0) &&
- strncmp(k_strversion, m_strversion, STRVERSIONLEN) != 0) {
- if (flag_force_load) {
- lprintf("Warning: kernel-module version mismatch\n"
- "\t%s was compiled for kernel version %s\n"
- "\twhile this kernel is version %s",
- filename, m_strversion, k_strversion);
- ++warnings;
- } else {
- if (!quiet)
- error("kernel-module version mismatch\n"
- "\t%s was compiled for kernel version %s\n"
- "\twhile this kernel is version %s.",
- filename, m_strversion, k_strversion);
- goto out;
- }
- }
- if (m_crcs != k_crcs)
- obj_set_symbol_compare(f, ncv_strcmp, ncv_symbol_hash);
-
- /* Let the module know about the kernel symbols. */
- gpl = obj_gpl_license(f, NULL) == 0;
- add_kernel_symbols(f, gpl);
-
-#ifdef ARCH_ppc64
- if (!ppc64_process_syms (f))
- goto out;
-#endif
-
- /* Allocate common symbols, symbol tables, and string tables.
- *
- * The calls marked DEPMOD indicate the bits of code that depmod
- * uses to do a pseudo relocation, ignoring undefined symbols.
- * Any changes made to the relocation sequence here should be
- * checked against depmod.
- */
-#ifdef COMPAT_2_0
- if (k_new_syscalls
- ? !create_this_module(f, m_name)
- : !old_create_mod_use_count(f))
- goto out;
-#else
- if (!create_this_module(f, m_name))
- goto out;
-#endif
-
- arch_create_got(f); /* DEPMOD */
- if (!obj_check_undefineds(f, quiet)) { /* DEPMOD, obj_clear_undefineds */
- if (!gpl && !quiet) {
- if (gplonly_seen)
- error("\n"
- "Hint: You are trying to load a module without a GPL compatible license\n"
- " and it has unresolved symbols. The module may be trying to access\n"
- " GPLONLY symbols but the problem is more likely to be a coding or\n"
- " user error. Contact the module supplier for assistance, only they\n"
- " can help you.\n");
- else
- error("\n"
- "Hint: You are trying to load a module without a GPL compatible license\n"
- " and it has unresolved symbols. Contact the module supplier for\n"
- " assistance, only they can help you.\n");
- }
- goto out;
- }
- obj_allocate_commons(f); /* DEPMOD */
-
- check_module_parameters(f, &persist_parms);
- check_tainted_module(f, noload);
-
- if (optind < argc) {
- if (!process_module_arguments(f, argc - optind, argv + optind, 1))
- goto out;
- }
- hide_special_symbols(f);
-
- if (persist_parms && persist_name && *persist_name) {
- f->persist = persist_name;
- persist_name = NULL;
- }
-
- if (persist_parms &&
- persist_name && !*persist_name) {
- /* -e "". This is ugly. Take the filename, compare it against
- * each of the module paths until we find a match on the start
- * of the filename, assume the rest is the relative path. Have
- * to do it this way because modprobe uses absolute filenames
- * for module names in modules.dep and the format of modules.dep
- * does not allow for any backwards compatible changes, so there
- * is nowhere to store the relative filename. The only way this
- * should fail to calculate a relative path is "insmod ./xxx", for
- * that case the user has to specify -e filename.
- */
- int j, l = strlen(filename);
- char *relative = NULL;
- char *p;
- for (i = 0; i < nmodpath; ++i) {
- p = modpath[i].path;
- j = strlen(p);
- while (j && p[j] == '/')
- --j;
- if (j < l && strncmp(filename, p, j) == 0 && filename[j] == '/') {
- while (filename[j] == '/')
- ++j;
- relative = xstrdup(filename+j);
- break;
- }
- }
- if (relative) {
- i = strlen(relative);
- if (i > 3 && strcmp(relative+i-3, ".gz") == 0)
- relative[i -= 3] = '\0';
- if (i > 2 && strcmp(relative+i-2, ".o") == 0)
- relative[i -= 2] = '\0';
- else if (i > 4 && strcmp(relative+i-4, ".mod") == 0)
- relative[i -= 4] = '\0';
- f->persist = xmalloc(strlen(persistdir) + 1 + i + 1);
- strcpy(f->persist, persistdir); /* safe, xmalloc */
- strcat(f->persist, "/"); /* safe, xmalloc */
- strcat(f->persist, relative); /* safe, xmalloc */
- free(relative);
- }
- else
- error("Cannot calculate persistent filename");
- }
-
- if (f->persist && *(f->persist) != '/') {
- error("Persistent filenames must be absolute, ignoring '%s'",
- f->persist);
- free(f->persist);
- f->persist = NULL;
- }
-
- if (f->persist && !flag_ksymoops) {
- error("has persistent data but ksymoops symbols are not available");
- free(f->persist);
- f->persist = NULL;
- }
-
- if (f->persist && !k_new_syscalls) {
- error("has persistent data but the kernel is too old to support it");
- free(f->persist);
- f->persist = NULL;
- }
-
- if (persist_parms && flag_verbose) {
- if (f->persist)
- lprintf("Persist filename '%s'", f->persist);
- else
- lprintf("No persistent filename available");
- }
-
- if (f->persist) {
- FILE *fp = fopen(f->persist, "r");
- if (!fp) {
- if (flag_verbose)
- lprintf("Cannot open persist file '%s' %m", f->persist);
- }
- else {
- int pargc = 0;
- char *pargv[1000]; /* hard coded but big enough */
- char line[3000]; /* hard coded but big enough */
- char *p;
- while (fgets(line, sizeof(line), fp)) {
- p = strchr(line, '\n');
- if (!p) {
- error("Persistent data line is too long\n%s", line);
- break;
- }
- *p = '\0';
- p = line;
- while (isspace(*p))
- ++p;
- if (!*p || *p == '#')
- continue;
- if (pargc == sizeof(pargv)/sizeof(pargv[0])) {
- error("More than %d persistent parameters", pargc);
- break;
- }
- pargv[pargc++] = xstrdup(p);
- }
- fclose(fp);
- if (!process_module_arguments(f, pargc, pargv, 0))
- goto out;
- while (pargc--)
- free(pargv[pargc]);
- }
- }
-
- if (flag_ksymoops)
- add_ksymoops_symbols(f, filename, m_name);
-
- if (k_new_syscalls)
- create_module_ksymtab(f);
-
- /* archdata based on relocatable addresses */
- if (add_archdata(f, &archdata))
- goto out;
-
- /* kallsyms based on relocatable addresses */
- if (add_kallsyms(f, &kallsyms, force_kallsyms))
- goto out;
- /**** No symbols or sections to be changed after kallsyms above ***/
-
- if (errors)
- goto out;
-
- /* If we were just checking, we made it. */
- if (flag_silent_probe) {
- exit_status = 0;
- goto out;
- }
- /* Module has now finished growing; find its size and install it. */
- m_size = obj_load_size(f); /* DEPMOD */
-
- if (noload) {
- /* Don't bother actually touching the kernel. */
- m_addr = 0x12340000;
- } else {
- errno = 0;
- m_addr = create_module(m_name, m_size);
-#ifdef ARCH_ppc64
- m_addr |= ppc64_module_base (f);
-#endif
- switch (errno) {
- case 0:
- break;
- case EEXIST:
- if (dolock) {
- /*
- * Assume that we were just invoked
- * simultaneous with another insmod
- * and return success.
- */
- exit_status = 0;
- goto out;
- }
- error("a module named %s already exists", m_name);
- goto out;
- case ENOMEM:
- error("can't allocate kernel memory for module; needed %lu bytes",
- m_size);
- goto out;
- default:
- error("create_module: %m");
- goto out;
- }
- }
-
- /* module is already built, complete with ksymoops symbols for the
- * persistent filename. If the kernel does not support persistent data
- * then give an error but continue. It is too difficult to clean up at
- * this stage and this error will only occur on backported modules.
- * rmmod will also get an error so warn the user now.
- */
- if (f->persist && !noload) {
- struct {
- struct module m;
- int data;
- } test_read;
- memset(&test_read, 0, sizeof(test_read));
- test_read.m.size_of_struct = -sizeof(test_read.m); /* -ve size => read, not write */
- test_read.m.read_start = m_addr + sizeof(struct module);
- test_read.m.read_end = test_read.m.read_start + sizeof(test_read.data);
- if (sys_init_module(m_name, (struct module *) &test_read)) {
- int old_errors = errors;
- error("has persistent data but the kernel is too old to support it."
- " Expect errors during rmmod as well");
- errors = old_errors;
- }
- }
-
- if (!obj_relocate(f, m_addr)) { /* DEPMOD */
- if (!noload)
- delete_module(m_name);
- goto out;
- }
-
- /* Do archdata again, this time we have the final addresses */
- if (add_archdata(f, &archdata))
- goto out;
-
- /* Do kallsyms again, this time we have the final addresses */
- if (add_kallsyms(f, &kallsyms, force_kallsyms))
- goto out;
-
-#ifdef COMPAT_2_0
- if (k_new_syscalls)
- init_module(m_name, f, m_size, blob_name, noload, flag_load_map);
- else if (!noload)
- old_init_module(m_name, f, m_size);
-#else
- init_module(m_name, f, m_size, blob_name, noload, flag_load_map);
-#endif
- if (errors) {
- if (!noload)
- delete_module(m_name);
- goto out;
- }
- if (warnings && !noload)
- lprintf("Module %s loaded, with warnings", m_name);
- exit_status = 0;
-
- out:
- if (dolock)
- flock(fp, LOCK_UN);
- close(fp);
- if (!noload)
- snap_shot(NULL, 0);
-
- return exit_status;
-}
-
-/* For common 3264 code, add an overall insmod_main, in the 64 bit version. */
-#if defined(COMMON_3264) && defined(ONLY_64)
-int insmod_main(int argc, char **argv)
-{
- if (arch64())
- return insmod_main_64(argc, argv);
- else
- return insmod_main_32(argc, argv);
-}
-#endif /* defined(COMMON_3264) && defined(ONLY_64) */
-
-
-int insmod_call(char * full_filename, char * params)
-{
- int argc = 2;
- char *argv[50];
- char * ptr = params;
- argv[0] = "stage1";
- argv[1] = full_filename;
-
- while (ptr != NULL) {
- argv[argc] = ptr;
- argc++;
- ptr = strchr(ptr, ' ');
- if (ptr) {
- ptr[0] = '\0';
- ptr++;
- }
- }
-
- return insmod_main(argc, argv);
-}
diff --git a/mdk-stage1/insmod-modutils/obj/Makefile b/mdk-stage1/insmod-modutils/obj/Makefile
deleted file mode 100644
index d44b2a6c6..000000000
--- a/mdk-stage1/insmod-modutils/obj/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
- #******************************************************************************
- #
- # insmod from modutils (generic)
- #
- # $Id$
- #
- # Copyright 1996, 1997 Linux International.
- #
- #*****************************************************************************
-
-top_dir = ../..
-
-include $(top_dir)/Makefile.common
-
-
-all: libobj.a
-
-clean:
- rm -f *.o *.a
-
-
-INCS = -I./../include
-
-DEFS = -D_GNU_SOURCE -DELF_MACHINE_H='"elf_$(ARCH).h"' -DARCH_$(ARCH) -DCONFIG_ROOT_CHECK_OFF=0
-
-ifeq (x86_64, $(ARCH))
-DEFS += -Wno-error
-endif
-
-OBJS = obj_kallsyms.o obj_common.o obj_load.o obj_reloc.o obj_$(ARCH).o \
- obj_gpl_license.o
-
-libobj.a: $(OBJS)
- ar cru $@ $^
- ranlib $@
-
-%.o: %.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $<
diff --git a/mdk-stage1/insmod-modutils/obj/obj_alpha.c b/mdk-stage1/insmod-modutils/obj/obj_alpha.c
deleted file mode 100644
index 175012716..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_alpha.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/* Alpha specific support for Elf loading and relocation.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/* This relocation got renamed, and the change hasn't propagated yet. */
-#ifndef R_ALPHA_GPREL16
-#define R_ALPHA_GPREL16 R_ALPHA_IMMED_GP_16
-#endif
-
-/*======================================================================*/
-
-struct alpha_got_entry
-{
- struct alpha_got_entry *next;
- ElfW(Addr) addend;
- int offset;
- int reloc_done;
-};
-
-struct alpha_file
-{
- struct obj_file root;
- struct obj_section *got;
-};
-
-struct alpha_symbol
-{
- struct obj_symbol root;
- struct alpha_got_entry *got_entries;
-};
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- struct alpha_file *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- struct alpha_symbol *sym;
- sym = xmalloc(sizeof(*sym));
- sym->got_entries = NULL;
- return &sym->root;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf64_Rela *rel,
- Elf64_Addr v)
-{
- struct alpha_file *af = (struct alpha_file *)f;
- struct alpha_symbol *asym = (struct alpha_symbol *)sym;
-
- unsigned long *lloc = (unsigned long *)(targsec->contents + rel->r_offset);
- unsigned int *iloc = (unsigned int *)lloc;
- unsigned short *sloc = (unsigned short *)lloc;
- Elf64_Addr dot = targsec->header.sh_addr + rel->r_offset;
- Elf64_Addr gp = af->got->header.sh_addr + 0x8000;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF64_R_TYPE(rel->r_info))
- {
- case R_ALPHA_NONE:
- case R_ALPHA_LITUSE:
- break;
-
- case R_ALPHA_REFQUAD:
- *lloc += v;
- break;
-
- case R_ALPHA_GPREL16:
- v -= gp;
- if ((Elf64_Sxword)v > 0x7fff
- || (Elf64_Sxword)v < -(Elf64_Sxword)0x8000)
- ret = obj_reloc_overflow;
- *sloc = v;
- break;
-
- case R_ALPHA_GPRELLOW:
- /* GPRELLOW does not overflow. Errors are seen in the
- corresponding GPRELHIGH. */
- v -= gp;
- *sloc = v;
- break;
-
- case R_ALPHA_GPRELHIGH:
- v -= gp;
- v = ((Elf64_Sxword)v >> 16) + ((v >> 15) & 1);
- if ((Elf64_Sxword)v > 0x7fff
- || (Elf64_Sxword)v < -(Elf64_Sxword)0x8000)
- ret = obj_reloc_overflow;
- *sloc = v;
- break;
-
- case R_ALPHA_GPREL32:
- v -= gp;
- if ((Elf64_Sxword)v > 0x7fffffff
- || (Elf64_Sxword)v < -(Elf64_Sxword)0x80000000)
- ret = obj_reloc_overflow;
- *iloc = v;
- break;
-
- case R_ALPHA_LITERAL:
- {
- struct alpha_got_entry *gotent;
-
- assert(asym != NULL);
- gotent = asym->got_entries;
- while (gotent->addend != rel->r_addend)
- gotent = gotent->next;
-
- if (!gotent->reloc_done)
- {
- *(unsigned long *)(af->got->contents + gotent->offset) = v;
- gotent->reloc_done = 1;
- }
-
- *sloc = gotent->offset - 0x8000;
- }
- break;
-
- case R_ALPHA_GPDISP:
- {
- unsigned int *p_ldah, *p_lda;
- unsigned int i_ldah, i_lda, hi, lo;
-
- p_ldah = iloc;
- p_lda = (unsigned int *)((char *)iloc + rel->r_addend);
- i_ldah = *p_ldah;
- i_lda = *p_lda;
-
- /* Make sure the instructions are righteous. */
- if ((i_ldah >> 26) != 9 || (i_lda >> 26) != 8)
- ret = obj_reloc_dangerous;
-
- /* Extract the existing addend. */
- v = (i_ldah & 0xffff) << 16 | (i_lda & 0xffff);
- v = (v ^ 0x80008000) - 0x80008000;
-
- v += gp - dot;
-
- if ((Elf64_Sxword)v >= 0x7fff8000
- || (Elf64_Sxword)v < -(Elf64_Sxword)0x80000000)
- ret = obj_reloc_overflow;
-
- /* Modify the instructions and finish up. */
- lo = v & 0xffff;
- hi = ((v >> 16) + ((v >> 15) & 1)) & 0xffff;
-
- *p_ldah = (i_ldah & 0xffff0000) | hi;
- *p_lda = (i_lda & 0xffff0000) | lo;
- }
- break;
-
- case R_ALPHA_BRADDR:
- v -= dot + 4;
- if (v % 4)
- ret = obj_reloc_dangerous;
- else if ((Elf64_Sxword)v > 0x3fffff
- || (Elf64_Sxword)v < -(Elf64_Sxword)0x400000)
- ret = obj_reloc_overflow;
- v /= 4;
-
- *iloc = (*iloc & ~0x1fffff) | (v & 0x1fffff);
- break;
-
- case R_ALPHA_HINT:
- v -= dot + 4;
- if (v % 4)
- ret = obj_reloc_dangerous;
- v /= 4;
-
- *iloc = (*iloc & ~0x3fff) | (v & 0x3fff);
- break;
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- struct alpha_file *af = (struct alpha_file *)f;
- int i, n, offset = 0;
-
- n = af->root.header.e_shnum;
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf64_Rela *rel, *relend;
- Elf64_Sym *symtab;
- const char *strtab;
-
- relsec = af->root.sections[i];
- if (relsec->header.sh_type != SHT_RELA)
- continue;
-
- symsec = af->root.sections[relsec->header.sh_link];
- strsec = af->root.sections[symsec->header.sh_link];
-
- rel = (Elf64_Rela *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf64_Rela));
- symtab = (Elf64_Sym *)symsec->contents;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- struct alpha_got_entry *ent;
- struct alpha_symbol *intsym;
-
- if (ELF64_R_TYPE(rel->r_info) != R_ALPHA_LITERAL)
- continue;
-
- obj_find_relsym(intsym, f, &af->root, rel, symtab, strtab);
-
- for (ent = intsym->got_entries; ent ; ent = ent->next)
- if (ent->addend == rel->r_addend)
- goto found;
-
- ent = xmalloc(sizeof(*ent));
- ent->addend = rel->r_addend;
- ent->offset = offset;
- ent->reloc_done = 0;
- ent->next = intsym->got_entries;
- intsym->got_entries = ent;
- offset += 8;
-
- found:;
- }
- }
-
- if (offset > 0x10000)
- {
- error(".got section overflow: %#x > 0x10000", offset);
- return 0;
- }
-
- /* We always want a .got section so that we always have a GP for
- use with GPDISP and GPREL relocs. Besides, if the section
- is empty we don't use up space anyway. */
- af->got = obj_create_alloced_section(&af->root, ".got", 8, offset,
- SHF_WRITE | SHF_ALPHA_GPREL);
-
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- struct alpha_file *af = (struct alpha_file *)f;
-
- mod->gp = af->got->header.sh_addr + 0x8000;
-
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf64_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_arm.c b/mdk-stage1/insmod-modutils/obj/obj_arm.c
deleted file mode 100644
index 78b53700c..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_arm.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* ARM specific support for Elf loading and relocation.
- Copyright 1996, 1997, 1998 Linux International.
-
- Contributed by Phil Blundell <philb@gnu.org>
- and wms <woody@corelcomputer.com>
- based on the i386 code by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct arm_plt_entry
-{
- int offset;
- int allocated:1;
- int inited:1; // has been set up
-};
-
-struct arm_got_entry
-{
- int offset;
- int allocated : 1;
- unsigned reloc_done : 1;
-};
-
-struct arm_file
-{
- struct obj_file root;
- struct obj_section *plt;
- struct obj_section *got;
-};
-
-struct arm_symbol
-{
- struct obj_symbol root;
- struct arm_plt_entry pltent;
- struct arm_got_entry gotent;
-};
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- struct arm_file *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- struct arm_symbol *sym;
- sym = xmalloc(sizeof(*sym));
- memset(&sym->gotent, 0, sizeof(sym->gotent));
- memset(&sym->pltent, 0, sizeof(sym->pltent));
- return &sym->root;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rel *rel,
- Elf32_Addr v)
-{
- struct arm_file *afile = (struct arm_file *)f;
- struct arm_symbol *asym = (struct arm_symbol *)sym;
-
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
- Elf32_Addr got = afile->got ? afile->got->header.sh_addr : 0;
- Elf32_Addr plt = afile->plt ? afile->plt->header.sh_addr : 0;
-
- struct arm_plt_entry *pe;
- unsigned long *ip;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_ARM_NONE:
- break;
-
- case R_ARM_ABS32:
- *loc += v;
- break;
-
- case R_ARM_GOT32:
- /* needs an entry in the .got: set it, once */
- if (! asym->gotent.reloc_done)
- {
- asym->gotent.reloc_done = 1;
- *(Elf32_Addr *)(afile->got->contents + asym->gotent.offset) = v;
- }
- /* make the reloc with_respect_to_.got */
- *loc += asym->gotent.offset;
- break;
-
- /* relative reloc, always to _GLOBAL_OFFSET_TABLE_ (which is .got)
- similar to branch, but is full 32 bits relative */
- case R_ARM_GOTPC:
- assert(got);
- *loc += got - dot;
- break;
-
- case R_ARM_PC24:
- case R_ARM_PLT32:
- /* find the plt entry and initialize it if necessary */
- assert(asym != NULL);
- pe = (struct arm_plt_entry*) &asym->pltent;
- if (! pe->inited)
- {
- ip = (unsigned long *) (afile->plt->contents + pe->offset);
- ip[0] = 0xe51ff004; /* ldr pc,[pc,#-4] */
- ip[1] = v; /* sym@ */
- pe->inited = 1;
- }
-
- /* relative distance to target */
- v -= dot;
- /* if the target is too far away.... */
- if ((int)v < -0x02000000 || (int)v >= 0x02000000)
- {
- /* go via the plt */
- v = plt + pe->offset - dot;
- }
- if (v & 3)
- ret = obj_reloc_dangerous;
-
- /* Convert to words. */
- v >>= 2;
-
- /* merge the offset into the instruction. */
- *loc = (*loc & ~0x00ffffff) | ((v + *loc) & 0x00ffffff);
- break;
-
- /* address relative to the got */
- case R_ARM_GOTOFF:
- assert(got);
- *loc += v - got;
- break;
-
- default:
- printf("Warning: unhandled reloc %d\n",ELF32_R_TYPE(rel->r_info));
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- struct arm_file *afile = (struct arm_file *) f;
- int i;
- struct obj_section *sec, *syms, *strs;
- ElfW(Rel) *rel, *relend;
- ElfW(Sym) *symtab, *extsym;
- const char *strtab;
- struct arm_symbol *intsym;
- struct arm_plt_entry *pe;
- struct arm_got_entry *ge;
- int got_offset = 0, plt_offset = 0;
-
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- sec = f->sections[i];
- if (sec->header.sh_type != SHT_RELM)
- continue;
- syms = f->sections[sec->header.sh_link];
- strs = f->sections[syms->header.sh_link];
-
- rel = (ElfW(RelM) *) sec->contents;
- relend = rel + (sec->header.sh_size / sizeof(ElfW(RelM)));
- symtab = (ElfW(Sym) *) syms->contents;
- strtab = (const char *) strs->contents;
-
- for (; rel < relend; ++rel)
- {
- extsym = &symtab[ELF32_R_SYM(rel->r_info)];
-
- switch(ELF32_R_TYPE(rel->r_info)) {
- case R_ARM_PC24:
- case R_ARM_PLT32:
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
-
- pe = &intsym->pltent;
-
- if (! pe->allocated)
- {
- pe->allocated = 1;
- pe->offset = plt_offset;
- plt_offset += 8;
- pe->inited = 0;
- }
- break;
-
- /* these two don_t need got entries, but they need
- the .got to exist */
- case R_ARM_GOTOFF:
- case R_ARM_GOTPC:
- if (got_offset==0) got_offset = 4;
- break;
-
- case R_ARM_GOT32:
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
-
- ge = (struct arm_got_entry *) &intsym->gotent;
- if (! ge->allocated)
- {
- ge->allocated = 1;
- ge->offset = got_offset;
- got_offset += sizeof(void*);
- }
- break;
-
- default:
- continue;
- }
- }
- }
-
- /* if there was a _GLOBAL_OFFSET_TABLE_, then the .got section
- exists already; find it and use it */
- if (got_offset)
- {
- struct obj_section* sec = obj_find_section(f, ".got");
- if (sec)
- obj_extend_section(sec, got_offset);
- else
- {
- sec = obj_create_alloced_section(f, ".got", 8, got_offset,
- SHF_WRITE);
- assert(sec);
- }
- afile->got = sec;
- }
-
- if (plt_offset)
- afile->plt = obj_create_alloced_section(f, ".plt", 8, plt_offset,
- SHF_WRITE);
-
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_common.c b/mdk-stage1/insmod-modutils/obj/obj_common.c
deleted file mode 100644
index a957ff1be..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_common.c
+++ /dev/null
@@ -1,416 +0,0 @@
-/* Elf file, section, and symbol manipulation routines.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <alloca.h>
-
-#include <obj.h>
-#include <util.h>
-#include <module.h>
-
-/*======================================================================*/
-
-/* Standard ELF hash function. */
-inline unsigned long
-obj_elf_hash_n(const char *name, unsigned long n)
-{
- unsigned long h = 0;
- unsigned long g;
- unsigned char ch;
-
- while (n > 0)
- {
- ch = *name++;
- h = (h << 4) + ch;
- if ((g = (h & 0xf0000000)) != 0)
- {
- h ^= g >> 24;
- h &= ~g;
- }
- n--;
- }
- return h;
-}
-
-unsigned long
-obj_elf_hash (const char *name)
-{
- return obj_elf_hash_n(name, strlen(name));
-}
-
-void
-obj_set_symbol_compare (struct obj_file *f,
- int (*cmp)(const char *, const char *),
- unsigned long (*hash)(const char *))
-{
- if (cmp)
- f->symbol_cmp = cmp;
- if (hash)
- {
- struct obj_symbol *tmptab[HASH_BUCKETS], *sym, *next;
- int i;
-
- f->symbol_hash = hash;
-
- memcpy(tmptab, f->symtab, sizeof(tmptab));
- memset(f->symtab, 0, sizeof(f->symtab));
-
- for (i = 0; i < HASH_BUCKETS; ++i)
- for (sym = tmptab[i]; sym ; sym = next)
- {
- unsigned long h = hash(sym->name) % HASH_BUCKETS;
- next = sym->next;
- sym->next = f->symtab[h];
- f->symtab[h] = sym;
- }
- }
-}
-
-struct obj_symbol *
-obj_add_symbol (struct obj_file *f, const char *name, unsigned long symidx,
- int info, int secidx, ElfW(Addr) value, unsigned long size)
-{
- struct obj_symbol *sym;
- unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
- int n_type = ELFW(ST_TYPE)(info);
- int n_binding = ELFW(ST_BIND)(info);
-
- for (sym = f->symtab[hash]; sym; sym = sym->next)
- if (f->symbol_cmp(sym->name, name) == 0)
- {
- int o_secidx = sym->secidx;
- int o_info = sym->info;
- int o_type = ELFW(ST_TYPE)(o_info);
- int o_binding = ELFW(ST_BIND)(o_info);
-
- /* A redefinition! Is it legal? */
-
- if (secidx == SHN_UNDEF)
- return sym;
- else if (o_secidx == SHN_UNDEF)
- goto found;
- else if (n_binding == STB_GLOBAL && o_binding == STB_LOCAL)
- {
- /* Cope with local and global symbols of the same name
- in the same object file, as might have been created
- by ld -r. The only reason locals are now seen at this
- level at all is so that we can do semi-sensible things
- with parameters. */
-
- struct obj_symbol *nsym, **p;
-
- nsym = arch_new_symbol();
- nsym->next = sym->next;
- nsym->ksymidx = -1;
-
- /* Excise the old (local) symbol from the hash chain. */
- for (p = &f->symtab[hash]; *p != sym; p = &(*p)->next)
- continue;
- *p = sym = nsym;
- goto found;
- }
- else if (n_binding == STB_LOCAL)
- {
- /* Another symbol of the same name has already been defined.
- Just add this to the local table. */
- sym = arch_new_symbol();
- sym->next = NULL;
- sym->ksymidx = -1;
- f->local_symtab[symidx] = sym;
- goto found;
- }
- else if (n_binding == STB_WEAK)
- return sym;
- else if (o_binding == STB_WEAK)
- goto found;
- /* Don't unify COMMON symbols with object types the programmer
- doesn't expect. */
- else if (secidx == SHN_COMMON
- && (o_type == STT_NOTYPE || o_type == STT_OBJECT))
- return sym;
- else if (o_secidx == SHN_COMMON
- && (n_type == STT_NOTYPE || n_type == STT_OBJECT))
- goto found;
- else
- {
- /* Don't report an error if the symbol is coming from
- the kernel or some external module. */
- if (secidx <= SHN_HIRESERVE)
- error("%s multiply defined", name);
- return sym;
- }
- }
-
- /* Completely new symbol. */
- sym = arch_new_symbol();
- sym->next = f->symtab[hash];
- f->symtab[hash] = sym;
- sym->ksymidx = -1;
-
- if (ELFW(ST_BIND)(info) == STB_LOCAL && symidx != -1) {
- if (symidx >= f->local_symtab_size)
- error("local symbol %s with index %ld exceeds local_symtab_size %ld",
- name, (long) symidx, (long) f->local_symtab_size);
- else
- f->local_symtab[symidx] = sym;
- }
-
-found:
- sym->name = name;
- sym->value = value;
- sym->size = size;
- sym->secidx = secidx;
- sym->info = info;
- sym->r_type = 0; /* should be R_arch_NONE for all arch */
-
- return sym;
-}
-
-struct obj_symbol *
-obj_find_symbol (struct obj_file *f, const char *name)
-{
- struct obj_symbol *sym;
- unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
-
- for (sym = f->symtab[hash]; sym; sym = sym->next)
- if (f->symbol_cmp(sym->name, name) == 0)
- return sym;
-
- return NULL;
-}
-
-ElfW(Addr)
-obj_symbol_final_value (struct obj_file *f, struct obj_symbol *sym)
-{
- if (sym)
- {
- if (sym->secidx >= SHN_LORESERVE)
- return sym->value;
-
- return sym->value + f->sections[sym->secidx]->header.sh_addr;
- }
- else
- {
- /* As a special case, a NULL sym has value zero. */
- return 0;
- }
-}
-
-struct obj_section *
-obj_find_section (struct obj_file *f, const char *name)
-{
- int i, n = f->header.e_shnum;
-
- for (i = 0; i < n; ++i)
- if (strcmp(f->sections[i]->name, name) == 0)
- return f->sections[i];
-
- return NULL;
-}
-
-#if defined (ARCH_alpha)
-#define ARCH_SHF_SHORT SHF_ALPHA_GPREL
-#elif defined (ARCH_ia64)
-#define ARCH_SHF_SHORT SHF_IA_64_SHORT
-#else
-#define ARCH_SHF_SHORT 0
-#endif
-
-static int
-obj_load_order_prio(struct obj_section *a)
-{
- unsigned long af, ac;
-
- af = a->header.sh_flags;
-
- ac = 0;
- if (a->name[0] != '.'
- || strlen(a->name) != 10
- || strcmp(a->name + 5, ".init"))
- ac |= 64;
- if (af & SHF_ALLOC) ac |= 32;
- if (af & SHF_EXECINSTR) ac |= 16;
- if (!(af & SHF_WRITE)) ac |= 8;
- if (a->header.sh_type != SHT_NOBITS) ac |= 4;
- /* Desired order is
- P S AC & 7
- .data 1 0 4
- .got 1 1 3
- .sdata 1 1 1
- .sbss 0 1 1
- .bss 0 0 0 */
- if (strcmp (a->name, ".got") == 0) ac |= 2;
- if (af & ARCH_SHF_SHORT)
- ac = (ac & ~4) | 1;
-
- return ac;
-}
-
-void
-obj_insert_section_load_order (struct obj_file *f, struct obj_section *sec)
-{
- struct obj_section **p;
- int prio = obj_load_order_prio(sec);
- for (p = f->load_order_search_start; *p ; p = &(*p)->load_next)
- if (obj_load_order_prio(*p) < prio)
- break;
- sec->load_next = *p;
- *p = sec;
-}
-
-struct obj_section *
-obj_create_alloced_section (struct obj_file *f, const char *name,
- unsigned long align, unsigned long size,
- unsigned long flags)
-{
- int newidx = f->header.e_shnum++;
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (newidx+1) * sizeof(sec));
- f->sections[newidx] = sec = arch_new_section();
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = flags | SHF_ALLOC;
- sec->header.sh_size = size;
- sec->header.sh_addralign = align;
- sec->name = name;
- sec->idx = newidx;
- if (size)
- sec->contents = xmalloc(size);
-
- obj_insert_section_load_order(f, sec);
-
- return sec;
-}
-
-struct obj_section *
-obj_create_alloced_section_first (struct obj_file *f, const char *name,
- unsigned long align, unsigned long size)
-{
- int newidx = f->header.e_shnum++;
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (newidx+1) * sizeof(sec));
- f->sections[newidx] = sec = arch_new_section();
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = SHF_WRITE|SHF_ALLOC;
- sec->header.sh_size = size;
- sec->header.sh_addralign = align;
- sec->name = name;
- sec->idx = newidx;
- if (size)
- sec->contents = xmalloc(size);
-
- sec->load_next = f->load_order;
- f->load_order = sec;
- if (f->load_order_search_start == &f->load_order)
- f->load_order_search_start = &sec->load_next;
-
- return sec;
-}
-
-void *
-obj_extend_section (struct obj_section *sec, unsigned long more)
-{
- unsigned long oldsize = sec->header.sh_size;
- sec->contents = xrealloc(sec->contents, sec->header.sh_size += more);
- return sec->contents + oldsize;
-}
-
-/* Convert an object pointer (address) to a native pointer and vice versa.
- * It gets interesting when the object has 64 bit pointers but modutils
- * is running 32 bit. This is nasty code but it stops the compiler giving
- * spurious warning messages. "I know what I am doing" ...
- */
-
-void *
-obj_addr_to_native_ptr (ElfW(Addr) addr)
-{
- unsigned int convert = (sizeof(void *) << 8) + sizeof(addr); /* to, from */
- union obj_ptr_4 p4;
- union obj_ptr_8 p8;
- switch (convert) {
- case 0x0404:
- p4.addr = addr;
- return(p4.ptr);
- break;
- case 0x0408:
- p4.addr = addr;
- if (p4.addr != addr) {
- error("obj_addr_to_native_ptr truncation %" tgt_long_fmt "x",
- (tgt_long) addr);
- exit(1);
- }
- return(p4.ptr);
- break;
- case 0x0804:
- p8.addr = addr;
- return(p8.ptr);
- break;
- case 0x0808:
- p8.addr = addr;
- return(p8.ptr);
- break;
- default:
- error("obj_addr_to_native_ptr unknown conversion 0x%04x", convert);
- exit(1);
- }
-}
-
-ElfW(Addr)
-obj_native_ptr_to_addr (void *ptr)
-{
- unsigned int convert = (sizeof(ElfW(Addr)) << 8) + sizeof(ptr); /* to, from */
- union obj_ptr_4 p4;
- union obj_ptr_8 p8;
- switch (convert) {
- case 0x0404:
- p4.ptr = ptr;
- return(p4.addr);
- break;
- case 0x0408:
- p8.ptr = ptr;
- p4.addr = p8.addr;
- if (p4.addr != p8.addr) {
- error("obj_native_ptr_to_addr truncation %" tgt_long_fmt "x",
- (tgt_long) p8.addr);
- exit(1);
- }
- return(p4.addr);
- break;
- case 0x0804:
- p4.ptr = ptr;
- return(p4.addr); /* compiler expands to 8 */
- break;
- case 0x0808:
- p8.ptr = ptr;
- return(p8.addr);
- break;
- default:
- error("obj_native_ptr_to_addr unknown conversion 0x%04x", convert);
- exit(1);
- }
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_hppa.c b/mdk-stage1/insmod-modutils/obj/obj_hppa.c
deleted file mode 100644
index a6f703c5d..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_hppa.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- * PA-RISC specific support for Elf loading and relocation.
- * Copyright 2000 David Huggins-Daines <dhd@linuxcare.com>, Linuxcare Inc.
- * Copyright 2000 Richard Hirst <rhirst@linuxcare.com>, Linuxcare Inc.
- *
- * Based on the IA-64 support, which is:
- * Copyright 2000 Mike Stephens <mike.stephens@intel.com>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-#include <modstat.h> /* For ksyms */
-
-
-typedef struct _hppa_stub_t
-{
- struct _hppa_stub_t *next;
- int offset;
- int reloc_done;
-} hppa_stub_t;
-
-typedef struct _hppa_symbol_t
-{
- struct obj_symbol root;
- hppa_stub_t *stub;
-} hppa_symbol_t;
-
-typedef struct _hppa_file_t
-{
- struct obj_file root;
- struct obj_section *stub;
- Elf32_Addr dp;
-} hppa_file_t;
-
-/* The ABI defines various more esoteric types, but these are the only
- ones we actually need. */
-enum hppa_fsel
-{
- e_fsel,
- e_lsel,
- e_rsel,
- e_lrsel,
- e_rrsel
-};
-
-struct obj_file *
-arch_new_file (void)
-{
- hppa_file_t *f;
- f = xmalloc(sizeof(*f));
- f->stub = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- hppa_symbol_t *sym;
- sym = xmalloc(sizeof(*sym));
- sym->stub = NULL;
- return &sym->root;
-}
-
-/* This is called for architecture specific sections we might need to
- do special things to. */
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-/* =================================================================
-
- These functions are from libhppa.h in the GNU BFD library.
- (c) 1990, 91, 92, 93, 94, 95, 96, 98, 99, 2000
- Free Software Foundation, Inc.
-
- ================================================================= */
-
-/* The *sign_extend functions are used to assemble various bitfields
- taken from an instruction and return the resulting immediate
- value. */
-
-static inline int
-sign_extend (x, len)
- int x, len;
-{
- int signbit = (1 << (len - 1));
- int mask = (signbit << 1) - 1;
- return ((x & mask) ^ signbit) - signbit;
-}
-
-static inline int
-low_sign_extend (x, len)
- int x, len;
-{
- return (x >> 1) - ((x & 1) << (len - 1));
-}
-
-
-/* The re_assemble_* functions prepare an immediate value for
- insertion into an opcode. pa-risc uses all sorts of weird bitfields
- in the instruction to hold the value. */
-
-static inline int
-sign_unext (x, len)
- int x, len;
-{
- int len_ones;
-
- len_ones = (1 << len) - 1;
-
- return x & len_ones;
-}
-
-static inline int
-low_sign_unext (x, len)
- int x, len;
-{
- int temp;
- int sign;
-
- sign = (x >> (len-1)) & 1;
-
- temp = sign_unext (x, len-1);
-
- return (temp << 1) | sign;
-}
-
-static inline int
-re_assemble_3 (as3)
- int as3;
-{
- return (( (as3 & 4) << (13-2))
- | ((as3 & 3) << (13+1)));
-}
-
-static inline int
-re_assemble_12 (as12)
- int as12;
-{
- return (( (as12 & 0x800) >> 11)
- | ((as12 & 0x400) >> (10 - 2))
- | ((as12 & 0x3ff) << (1 + 2)));
-}
-
-static inline int
-re_assemble_14 (as14)
- int as14;
-{
- return (( (as14 & 0x1fff) << 1)
- | ((as14 & 0x2000) >> 13));
-}
-
-static inline int
-re_assemble_16 (as16)
- int as16;
-{
- int s, t;
-
- /* Unusual 16-bit encoding, for wide mode only. */
- t = (as16 << 1) & 0xffff;
- s = (as16 & 0x8000);
- return (t ^ s ^ (s >> 1)) | (s >> 15);
-}
-
-static inline int
-re_assemble_17 (as17)
- int as17;
-{
- return (( (as17 & 0x10000) >> 16)
- | ((as17 & 0x0f800) << (16 - 11))
- | ((as17 & 0x00400) >> (10 - 2))
- | ((as17 & 0x003ff) << (1 + 2)));
-}
-
-static inline int
-re_assemble_21 (as21)
- int as21;
-{
- return (( (as21 & 0x100000) >> 20)
- | ((as21 & 0x0ffe00) >> 8)
- | ((as21 & 0x000180) << 7)
- | ((as21 & 0x00007c) << 14)
- | ((as21 & 0x000003) << 12));
-}
-
-static inline int
-re_assemble_22 (as22)
- int as22;
-{
- return (( (as22 & 0x200000) >> 21)
- | ((as22 & 0x1f0000) << (21 - 16))
- | ((as22 & 0x00f800) << (16 - 11))
- | ((as22 & 0x000400) >> (10 - 2))
- | ((as22 & 0x0003ff) << (1 + 2)));
-}
-
-
-/* Handle field selectors for PA instructions.
- The L and R (and LS, RS etc.) selectors are used in pairs to form a
- full 32 bit address. eg.
-
- LDIL L'start,%r1 ; put left part into r1
- LDW R'start(%r1),%r2 ; add r1 and right part to form address
-
- This function returns sign extended values in all cases.
-*/
-
-static inline unsigned int
-hppa_field_adjust (value, addend, r_field)
- unsigned int value;
- int addend;
- enum hppa_fsel r_field;
-{
- unsigned int sym_val;
-
- sym_val = value - addend;
- switch (r_field)
- {
- case e_fsel:
- /* F: No change. */
- break;
-
- case e_lsel:
- /* L: Select top 21 bits. */
- value = value >> 11;
- break;
-
- case e_rsel:
- /* R: Select bottom 11 bits. */
- value = value & 0x7ff;
- break;
-
- case e_lrsel:
- /* LR: L with rounding of the addend to nearest 8k. */
- value = sym_val + ((addend + 0x1000) & -0x2000);
- value = value >> 11;
- break;
-
- case e_rrsel:
- /* RR: R with rounding of the addend to nearest 8k.
- We need to return a value such that 2048 * LR'x + RR'x == x
- ie. RR'x = s+a - (s + (((a + 0x1000) & -0x2000) & -0x800))
- . = s+a - ((s & -0x800) + ((a + 0x1000) & -0x2000))
- . = (s & 0x7ff) + a - ((a + 0x1000) & -0x2000) */
- value = (sym_val & 0x7ff) + (((addend & 0x1fff) ^ 0x1000) - 0x1000);
- break;
-
- default:
- abort();
- }
- return value;
-}
-
-/* Insert VALUE into INSN using R_FORMAT to determine exactly what
- bits to change. */
-
-static inline int
-hppa_rebuild_insn (insn, value, r_format)
- int insn;
- int value;
- int r_format;
-{
- switch (r_format)
- {
- case 11:
- return (insn & ~ 0x7ff) | low_sign_unext (value, 11);
-
- case 12:
- return (insn & ~ 0x1ffd) | re_assemble_12 (value);
-
-
- case 10:
- return (insn & ~ 0x3ff1) | re_assemble_14 (value & -8);
-
- case -11:
- return (insn & ~ 0x3ff9) | re_assemble_14 (value & -4);
-
- case 14:
- return (insn & ~ 0x3fff) | re_assemble_14 (value);
-
-
- case -10:
- return (insn & ~ 0xfff1) | re_assemble_16 (value & -8);
-
- case -16:
- return (insn & ~ 0xfff9) | re_assemble_16 (value & -4);
-
- case 16:
- return (insn & ~ 0xffff) | re_assemble_16 (value);
-
-
- case 17:
- return (insn & ~ 0x1f1ffd) | re_assemble_17 (value);
-
- case 21:
- return (insn & ~ 0x1fffff) | re_assemble_21 (value);
-
- case 22:
- return (insn & ~ 0x3ff1ffd) | re_assemble_22 (value);
-
- case 32:
- return value;
-
- default:
- abort ();
- }
- return insn;
-}
-
-/* ====================================================================
-
- End of functions from GNU BFD.
-
- ==================================================================== */
-
-/* This is where we get the opportunity to create any extra dynamic
- sections we might need. In our case we do not need a GOT because
- our code is not PIC, but we do need to create a stub section.
-
- This is significantly less complex than what we do for shared
- libraries because, obviously, modules are not shared. Also we have
- no issues related to symbol visibility, lazy linking, etc.
- The kernels dp is fixed (at symbol $global$), and we can fix up any
- DPREL refs in the module to use that same dp value.
- All PCREL* refs result in a stub with the following format:
-
- ldil L'func_addr,%r1
- be,n R'func_addr(%sr4,%r1)
-
- Note, all PCREL* get a stub, regardless of whether they are
- local or external. With local ones, and external ones to other
- modules, there is a good chance we could manage without the stub.
- I'll leave that for a future optimisation.
- */
-
-#define LDIL_R1 0x20200000 /* ldil L'XXX,%r1 */
-#define BE_N_SR4_R1 0xe0202002 /* be,n R'XXX(%sr4,%r1) */
-
-#define STUB_SIZE 8
-
-int
-arch_create_got(struct obj_file *f)
-{
- hppa_file_t *hfile = (hppa_file_t *)f;
- int i, n;
- int stub_offset = 0;
-
- /* Create stub section.
- * XXX set flags, see obj_ia64.c
- */
- hfile->stub = obj_create_alloced_section(f, ".stub", STUB_SIZE,
- 0, SHF_WRITE);
-
- /* Actually this is a lot like check_relocs() in a BFD backend. We
- walk all sections and all their relocations and look for ones
- that need special treatment. */
- n = hfile->root.header.e_shnum;
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf32_Rela *rel, *relend;
- Elf32_Sym *symtab;
- char const *strtab;
-
- relsec = hfile->root.sections[i];
- if (relsec->header.sh_type != SHT_RELA)
- continue;
-
- symsec = hfile->root.sections[relsec->header.sh_link];
- strsec = hfile->root.sections[symsec->header.sh_link];
-
- rel = (Elf32_Rela *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf32_Rela));
- symtab = (Elf32_Sym *)symsec->contents;
- strtab = (char const *)strsec->contents;
-
- for (; rel < relend; rel++)
- {
- int need_stub = 0;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- default:
- continue;
-
- case R_PARISC_PCREL17F:
- case R_PARISC_PCREL22F:
- need_stub = 1;
- break;
- }
-
- if (need_stub)
- {
- hppa_symbol_t *hsym;
- int local;
-
- obj_find_relsym(hsym, f, f, rel, symtab, strtab);
- local = hsym->root.secidx <= SHN_HIRESERVE;
-
- if (need_stub)
- {
- hppa_stub_t *stub;
-
- if (hsym->stub == NULL)
- {
- stub = (hppa_stub_t *) xmalloc(sizeof(hppa_stub_t));
- stub->offset = stub_offset;
- stub->reloc_done = 0;
- hsym->stub = stub;
- stub_offset += STUB_SIZE;
- need_stub = 0;
- }
- }
- }
- }
- }
- if (stub_offset)
- {
- hfile->stub->contents = xmalloc(stub_offset);
- hfile->stub->header.sh_size = stub_offset;
- }
- return 1;
-}
-
-
-enum obj_reloc
-arch_apply_relocation(struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rela *rel,
- Elf32_Addr v)
-{
- hppa_file_t *hfile = (hppa_file_t *) f;
- hppa_symbol_t *hsym = (hppa_symbol_t *) sym;
-
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = (targsec->header.sh_addr + rel->r_offset) & ~0x03;
- Elf32_Addr dp = hfile->dp;
- Elf32_Word r_info = ELF32_R_TYPE(rel->r_info);
-
- enum obj_reloc ret = obj_reloc_ok;
- enum hppa_fsel fsel = e_fsel; /* Avoid compiler warning */
- unsigned int r_format;
-
- /* Fix up the value, and determine whether we can handle this
- relocation. */
- switch (r_info)
- {
- case R_PARISC_PLABEL32:
- case R_PARISC_DIR32:
- case R_PARISC_DIR21L:
- case R_PARISC_DIR14R:
- /* Easy. */
- break;
-
- case R_PARISC_SEGREL32:
- v -= f->baseaddr;
- break;
-
- case R_PARISC_DPREL21L:
- case R_PARISC_DPREL14R:
- v -= dp;
- break;
-
- case R_PARISC_PCREL17F:
- case R_PARISC_PCREL22F:
- /* Find an import stub. */
- assert(hsym->stub != NULL);
- assert(hfile->stub != NULL);
- /* XXX Optimise. We may not need a stub for short branches */
- if (!hsym->stub->reloc_done) {
- /* Need to create the .stub entry */
- Elf32_Addr *pstub, stubv;
-
- pstub = (Elf32_Addr *)(hfile->stub->contents + hsym->stub->offset);
- pstub[0] = LDIL_R1;
- pstub[1] = BE_N_SR4_R1;
- stubv = hppa_field_adjust(v, rel->r_addend, e_lrsel);
- pstub[0] = hppa_rebuild_insn(pstub[0], stubv, 21);
- stubv = hppa_field_adjust(v, rel->r_addend, e_rrsel);
- stubv >>= 2; /* Branch; divide by 4 */
- pstub[1] = hppa_rebuild_insn(pstub[1], stubv, 17);
- hsym->stub->reloc_done = 1;
- }
- v = hsym->stub->offset + hfile->stub->header.sh_addr;
- break;
-
- default:
- return obj_reloc_unhandled;
- }
-
- /* Find the field selector. */
- switch (r_info)
- {
- case R_PARISC_DIR32:
- case R_PARISC_PLABEL32:
- case R_PARISC_PCREL17F:
- case R_PARISC_SEGREL32:
- case R_PARISC_PCREL22F:
- fsel = e_fsel;
- break;
-
- case R_PARISC_DPREL21L:
- case R_PARISC_DIR21L:
- fsel = e_lrsel;
- break;
-
- case R_PARISC_DPREL14R:
- case R_PARISC_DIR14R:
- fsel = e_rrsel;
- break;
- }
-
- v = hppa_field_adjust(v, rel->r_addend, fsel);
-
- switch (r_info)
- {
- case R_PARISC_PCREL17F:
- case R_PARISC_PCREL17R:
- case R_PARISC_PCREL22F:
- v = v - dot - 8;
- case R_PARISC_DIR17F:
- case R_PARISC_DIR17R:
- /* This is a branch. Divide the offset by four. */
- v >>= 2;
- break;
- default:
- break;
- }
-
- /* Find the format. */
- switch (r_info)
- {
- case R_PARISC_DIR32:
- case R_PARISC_PLABEL32:
- case R_PARISC_SEGREL32:
- r_format = 32;
- break;
-
- case R_PARISC_DPREL21L:
- case R_PARISC_DIR21L:
- r_format = 21;
- break;
-
- case R_PARISC_PCREL17F:
- r_format = 17;
- break;
-
- case R_PARISC_DPREL14R:
- case R_PARISC_DIR14R:
- r_format = 14;
- break;
-
- case R_PARISC_PCREL22F:
- r_format = 22;
- break;
-
- default:
- abort();
- }
-
- *loc = hppa_rebuild_insn(*loc, v, r_format);
-
- return ret;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *f, struct obj_section *sec)
-{
- struct module_symbol *s;
- int i;
- hppa_file_t *hfile = (hppa_file_t *)f;
-
- /* Initialise dp to the kernels dp (symbol $global$)
- */
- for (i = 0, s = ksyms; i < nksyms; i++, s++)
- if (!strcmp((char *)s->name, "$global$"))
- break;
- if (i >= nksyms) {
- error("Cannot initialise dp, '$global$' not found\n");
- return 1;
- }
- hfile->dp = s->value;
-
- return 0;
-}
-
diff --git a/mdk-stage1/insmod-modutils/obj/obj_hppa64.c b/mdk-stage1/insmod-modutils/obj/obj_hppa64.c
deleted file mode 100644
index d9f1ada9d..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_hppa64.c
+++ /dev/null
@@ -1,682 +0,0 @@
-/*
- * hppa parisc64 specific support for Elf loading and relocation.
- * Copyright 2000 Richard Hirst <rhirst@linuxcare.com>, Linuxcare Inc.
- *
- * Based on ia64 specific support which was
- * Copyright 2000 Mike Stephens <mike.stephens@intel.com>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE ~FALSE
-#endif
-
-/*======================================================================*/
-
-typedef struct _hppa64_opd_t
-{
- int offset;
- int reloc_done;
-} hppa64_opd_t;
-
-typedef struct _hppa64_stub_t
-{
- struct _hppa64_stub_t *next;
- Elf64_Addr addend;
- int offset;
- int reloc_done;
-} hppa64_stub_t;
-
-typedef struct _hppa64_got_t
-{
- struct _hppa64_got_t *next;
- Elf64_Addr addend;
- int offset;
- int reloc_done;
-} hppa64_got_t;
-
-typedef struct _hppa64_symbol_t
-{
- struct obj_symbol root;
- hppa64_got_t *gotent;
- hppa64_opd_t *opdent;
- hppa64_stub_t *stubent;
-} hppa64_symbol_t;
-
-typedef struct _hppa64_file_t
-{
- struct obj_file root;
- struct obj_section *got;
- struct obj_section *opd;
- struct obj_section *stub;
- Elf64_Addr gp;
- Elf64_Addr text;
- Elf64_Addr data;
- Elf64_Addr bss;
-} hppa64_file_t;
-
-/*
- * XXX This stub assumes it can reach the .got entry with a +/- 8K offset
- * from dp. Perhaps we should use a .plt for these entries to give a
- * greater chance of that being true.
- *
- * 53 7b 00 00 ldd 0(dp),dp
- * R_PARISC_LTOFF14R <.got entry offset from dp>
- * 53 61 00 20 ldd 10(dp),r1
- * e8 20 d0 00 bve (r1)
- * 53 7b 00 30 ldd 18(dp),dp
- *
- * We need a different stub for millicode calls, which doesn't depend on
- * or modify dp:
- *
- * 20 20 00 00 ldil 0,r1
- * R_PARISC_DIR21L <addr of kernels opd entry>
- * 34 21 00 00 ldo 0(r1),r1
- * R_PARISC_DIR14R <addr of kernels opd entry>
- * 50 21 00 20 ldd 10(r1),r1
- * e8 20 d0 02 bve,n (r1)
- */
-
-/* NOTE: to keep the code cleaner we make all stubs the same size.
- */
-
-#define SIZEOF_STUB 16
-
-unsigned char hppa64_stub_extern[] =
-{
- 0x53, 0x7b, 0x00, 0x00,
- 0x53, 0x61, 0x00, 0x20,
- 0xe8, 0x20, 0xd0, 0x00,
- 0x53, 0x7b, 0x00, 0x30,
-};
-
-unsigned char hppa64_stub_millicode[] =
-{
- 0x20, 0x20, 0x00, 0x00,
- 0x34, 0x21, 0x00, 0x00,
- 0x50, 0x21, 0x00, 0x20,
- 0xe8, 0x20, 0xd0, 0x02,
-};
-
-/*======================================================================*/
-
-enum obj_reloc
-patch_14r(Elf64_Xword v64, Elf64_Word *p)
-{
- Elf64_Word i = *p;
- Elf64_Word v = (Elf64_Word)v64;
-
- if (v & 0x80000000)
- v |= ~0x7ff;
- else
- v &= 0x7ff;
- i &= ~ 0x3fff;
- i |= (v & 0x1fff) << 1 |
- (v & 0x2000) >> 13;
- *p = i;
-
- return obj_reloc_ok;
-}
-
-enum obj_reloc
-patch_21l(Elf64_Xword v64, Elf64_Word *p)
-{
- Elf64_Word i = *p;
- Elf64_Word v = (Elf64_Word)v64;
-
- v &= 0xfffff800;
- if (v & 0x80000000)
- v += 0x800;
- i &= ~ 0x1fffff;
- i |= (v & 0x80000000) >> 31 |
- (v & 0x7ff00000) >> 19 |
- (v & 0x000c0000) >> 4 |
- (v & 0x0003e000) << 3 |
- (v & 0x00001800) << 1;
- *p = i;
-
- return obj_reloc_ok;
-}
-
-
-/* All 14 bits this time... This is used to patch the .got offset in
- * a stub for PCREL22F.
- */
-
-enum obj_reloc
-patch_14r2(Elf64_Xword v64, Elf64_Word *p)
-{
- Elf64_Word i = *p;
- Elf64_Word v = (Elf64_Word)v64;
-
- if ((Elf64_Sxword)v64 > 0x1fffL ||
- (Elf64_Sxword)v64 < -0x2000L)
- return obj_reloc_overflow;
- i &= ~ 0x3fff;
- i |= (v & 0x2000) >> 13 |
- (v & 0x1fff) << 1;
- *p = i;
-
- return obj_reloc_ok;
-}
-
-
-enum obj_reloc
-patch_22f(Elf64_Xword v64, Elf64_Word *p)
-{
- Elf64_Word i = *p;
- Elf64_Word v = (Elf64_Word)v64;
-
- if ((Elf64_Sxword)v64 > 0x800000-1 ||
- (Elf64_Sxword)v64 < -0x800000)
- return obj_reloc_overflow;
-
- i &= ~ 0x03ff1ffd;
- i |= (v & 0x00800000) >> 23 |
- (v & 0x007c0000) << 3 |
- (v & 0x0003e000) << 3 |
- (v & 0x00001000) >> 10 |
- (v & 0x00000ffc) << 1;
- *p = i;
-
- return obj_reloc_ok;
-}
-
-
-struct obj_section *
-obj_hppa64_create_alloced_section (struct obj_file *f, const char *name,
- unsigned long align, unsigned long size, unsigned long sh_flags)
-{
- int newidx = f->header.e_shnum++;
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (newidx+1) * sizeof(sec));
- f->sections[newidx] = sec = arch_new_section();
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = sh_flags;
- sec->header.sh_size = size;
- sec->header.sh_addralign = align;
- sec->name = name;
- sec->idx = newidx;
- if (size)
- sec->contents = xmalloc(size);
-
- obj_insert_section_load_order(f, sec);
-
- return sec;
-}
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- hppa64_file_t *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- f->opd = NULL;
- f->stub = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- hppa64_symbol_t *sym;
- sym = xmalloc(sizeof(*sym));
- sym->gotent = NULL;
- sym->opdent = NULL;
- sym->stubent = NULL;
- return &sym->root;
-}
-
-/* This may not be needed, but does no harm (copied from ia64).
- */
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- switch (sec->header.sh_type)
- {
- case SHT_PARISC_EXT :
- sec->contents = NULL;
- break;
-
- case SHT_PARISC_UNWIND :
- if (sec->header.sh_size > 0)
- {
- sec->contents = xmalloc(sec->header.sh_size);
- gzf_lseek(fp, sec->header.sh_offset, SEEK_SET);
- if (gzf_read(fp, sec->contents, sec->header.sh_size) != sec->header.sh_size)
- {
- error("error reading ELF section data: %m");
- return -1;
- }
- }
- else
- sec->contents = NULL;
- break;
- default:
- error("Unknown section header type: %08x", sec->header.sh_type);
- return -1;
- }
- return 0;
-}
-
-int
-arch_create_got(struct obj_file *f)
-{
- hppa64_file_t *hfile = (hppa64_file_t *)f;
- int i;
- int n;
- int got_offset = 0;
- int opd_offset = 64;
- int stub_offset = 0;
-
- n = hfile->root.header.e_shnum;
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf64_Rela *rel, *relend;
- Elf64_Sym *symtab;
- const char *strtab;
-
- relsec = hfile->root.sections[i];
- if (relsec->header.sh_type != SHT_RELA)
- continue;
-
- symsec = hfile->root.sections[relsec->header.sh_link];
- strsec = hfile->root.sections[symsec->header.sh_link];
-
- rel = (Elf64_Rela *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf64_Rela));
- symtab = (Elf64_Sym *)symsec->contents;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- int need_got = FALSE;
- int need_opd = FALSE;
- int need_stub = FALSE;
-
- switch (ELF64_R_TYPE(rel->r_info))
- {
- default:
- {
- unsigned r_info = ELF64_R_TYPE(rel->r_info);
- printf("r_info 0x%x not handled\n", r_info);
- }
- continue;
- case R_PARISC_LTOFF14R:
- case R_PARISC_LTOFF21L:
- /* These are simple indirect references to symbols through the
- * DLT. We need to create a DLT entry for any symbols which
- * appears in a DLTIND relocation.
- */
- need_got = TRUE;
- break;
- case R_PARISC_PCREL22F:
- /* These are function calls. Depending on their precise
- * target we may need to make a stub for them. The stub
- * uses the dlt, so we need to create dlt entries for
- * these symbols too.
- */
- need_got = TRUE;
- need_stub = TRUE;
- break;
- case R_PARISC_DIR64:
- case R_PARISC_SEGREL32:
- break;
- case R_PARISC_FPTR64:
- /* This is a simple OPD entry (only created for local symbols,
- * see below).
- */
- need_opd = TRUE;
- break;
- }
-
- if (need_got || need_opd || need_stub)
- {
- hppa64_symbol_t *isym;
- int local;
-
- obj_find_relsym(isym, f, f, rel, symtab, strtab);
- local = isym->root.secidx <= SHN_HIRESERVE;
-
- if (need_stub)
- {
- hppa64_stub_t *stub;
-
- for (stub = isym->stubent; stub != NULL; stub = stub->next)
- if (stub->addend == rel->r_addend)
- break;
- if (stub == NULL)
- {
- stub = (hppa64_stub_t *) xmalloc(sizeof(hppa64_stub_t));
- stub->next = isym->stubent;
- stub->addend = rel->r_addend;
- stub->offset = stub_offset;
- stub->reloc_done = FALSE;
- isym->stubent = stub;
- {
- stub_offset += SIZEOF_STUB;
- }
- need_stub = FALSE;
- }
- }
- if (need_got)
- {
- hppa64_got_t *got;
-
- for (got = isym->gotent; got != NULL; got = got->next)
- if (got->addend == rel->r_addend)
- break;
- if (got == NULL)
- {
- got = (hppa64_got_t *) xmalloc(sizeof(hppa64_got_t));
- got->next = isym->gotent;
- got->addend = rel->r_addend;
- got->offset = got_offset;
- got->reloc_done = FALSE;
- isym->gotent = got;
- got_offset += 8;
- need_got = FALSE;
- }
- }
- if (need_opd && local)
- {
- hppa64_opd_t *opd;
-
- if (isym->opdent == NULL)
- {
- opd = (hppa64_opd_t *) xmalloc(sizeof(hppa64_opd_t));
- opd->offset = opd_offset;
- opd->reloc_done = FALSE;
- isym->opdent = opd;
- opd_offset += 32;
- need_opd = FALSE;
- }
- }
- }
- }
- }
-
- hfile->got = obj_hppa64_create_alloced_section(f, ".got", 8, got_offset,
- (SHF_ALLOC | SHF_WRITE | SHF_PARISC_SHORT));
- assert(hfile->got != NULL);
-
- hfile->opd = obj_hppa64_create_alloced_section(f, ".opd", 16, opd_offset,
- (SHF_ALLOC | SHF_WRITE | SHF_PARISC_SHORT));
- assert(hfile->opd != NULL);
-
- if (stub_offset > 0)
- {
- hfile->stub = obj_hppa64_create_alloced_section(f, ".stub", 16,
- stub_offset, (SHF_ALLOC | SHF_EXECINSTR | SHF_PARISC_SHORT));
- assert(hfile->stub != NULL);
- }
-
- return 1;
-}
-
-
-/* This is a small simple version which seems to work fine. ia64 has
- * a much more complex algorithm. We point dp at the end of the .got,
- * which is the start of the .opd.
- */
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf64_Addr base)
-{
- hppa64_file_t *hfile = (hppa64_file_t *)f;
- int n = f->header.e_shnum;
- int i;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
-
- /* Pick a sensible value for gp */
- hfile->gp = hfile->got->header.sh_addr + hfile->got->header.sh_size;
-
- return 1;
-}
-
-
-enum obj_reloc
-arch_apply_relocation(struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf64_Rela *rel,
- Elf64_Addr v)
-{
- hppa64_file_t *hfile = (hppa64_file_t *) f;
- hppa64_symbol_t *isym = (hppa64_symbol_t *) sym;
-
- Elf64_Word *loc = (Elf64_Word *)(targsec->contents + rel->r_offset);
- Elf64_Addr dot = (targsec->header.sh_addr + rel->r_offset) & ~0x03;
-
- Elf64_Addr got = hfile->got->header.sh_addr;
- Elf64_Addr gp = hfile->gp;
-
- Elf64_Xword r_info = ELF64_R_TYPE(rel->r_info);
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (r_info)
- {
- default:
- ret = obj_reloc_unhandled;
- break;
- case R_PARISC_LTOFF14R:
- case R_PARISC_LTOFF21L:
- {
- hppa64_got_t *ge;
-
- assert(isym != NULL);
- for (ge = isym->gotent; ge != NULL && ge->addend != rel->r_addend; )
- ge = ge->next;
- assert(ge != NULL);
- if (!ge->reloc_done)
- {
- ge->reloc_done = TRUE;
- *(Elf64_Addr *)(hfile->got->contents + ge->offset) = v;
- }
- v = got + ge->offset - gp;
- if (r_info == R_PARISC_LTOFF14R)
- ret = patch_14r(v, loc);
- else
- ret = patch_21l(v, loc);
- }
- break;
- case R_PARISC_PCREL22F:
- {
- hppa64_got_t *ge;
-
- assert(isym != NULL);
- for (ge = isym->gotent; ge != NULL && ge->addend != rel->r_addend; )
- ge = ge->next;
- assert(ge != NULL);
- if (!ge->reloc_done)
- {
- ge->reloc_done = TRUE;
- *(Elf64_Addr *)(hfile->got->contents + ge->offset) = v;
- }
- if ((isym->root.secidx > SHN_HIRESERVE) ||
- ((Elf64_Sxword) (v - dot - 8) > 0x800000-1) ||
- ((Elf64_Sxword) (v - dot - 8) < -0x800000))
- {
- hppa64_stub_t *se;
-
- for (se = isym->stubent; se != NULL && se->addend != rel->r_addend; )
- se = se->next;
- assert(se != NULL);
- if (!se->reloc_done)
- {
- /* This requires that we can get from dp to the entry in +/- 8K,
- * or +/- 1000 entries. patch_14r2() will check that.
- * Only need these dlt entries for calls to external/far
- * functions, so should probably put them in a seperate section
- * before dlt and point dp at the section. Change to that
- * scheme if we hit problems with big modules.
- */
- unsigned char *stub;
-
- if (!strncmp(isym->root.name, "$$", 2)) {
- stub = hppa64_stub_millicode;
- memcpy((Elf64_Addr *)(hfile->stub->contents + se->offset),
- stub, SIZEOF_STUB);
- v = (Elf64_Addr)isym->root.value;
- ret = patch_21l(v, (Elf64_Word *)(hfile->stub->contents + se->offset));
- if (ret == obj_reloc_ok)
- ret = patch_14r(v, (Elf64_Word *)(hfile->stub->contents + se->offset + 4));
- }
- else {
- stub = hppa64_stub_extern;
- memcpy((Elf64_Addr *)(hfile->stub->contents + se->offset),
- stub, SIZEOF_STUB);
- v = (Elf64_Addr)(hfile->got->header.sh_addr + ge->offset) - gp;
- ret = patch_14r2(v, (Elf64_Word *)(hfile->stub->contents + se->offset));
- }
- se->reloc_done = TRUE;
- }
- v = hfile->stub->header.sh_addr + se->offset;
- }
- v = v - dot - 8;
- if (ret == obj_reloc_ok)
- ret = patch_22f(v, loc);
- }
- break;
- case R_PARISC_DIR64:
- {
- loc[0] = v >> 32;
- loc[1] = v;
- }
- break;
- case R_PARISC_SEGREL32:
- {
- loc[0] = v - f->baseaddr;
- }
- break;
- case R_PARISC_FPTR64:
- {
- assert(isym != NULL);
- if (isym->root.secidx <= SHN_HIRESERVE) /* local */
- {
- assert(isym->opdent != NULL);
- if (!isym->opdent->reloc_done)
- {
- isym->opdent->reloc_done = TRUE;
- *(Elf64_Addr *)(hfile->opd->contents + isym->opdent->offset + 16) = v;
- *(Elf64_Addr *)(hfile->opd->contents + isym->opdent->offset + 24) = gp;
- }
- v = hfile->opd->header.sh_addr + isym->opdent->offset;
- }
- loc[0] = v >> 32;
- loc[1] = v;
- }
- break;
- }
- return ret;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- hppa64_file_t *hfile = (hppa64_file_t *)f;
- Elf64_Addr *opd = (Elf64_Addr *)(hfile->opd->contents);
-
- opd[0] = 0;
- opd[1] = 0;
- if ((opd[2] = mod->init) != 0)
- {
- opd[3] = hfile->gp;
- mod->init = hfile->opd->header.sh_addr;
- }
-
- opd[4] = 0;
- opd[5] = 0;
- if ((opd[6] = mod->cleanup) != 0)
- {
- opd[7] = hfile->gp;
- mod->cleanup = hfile->opd->header.sh_addr + 32;
- }
-
- return 1;
-}
-
-/* XXX Is this relevant to parisc? */
-
-int
-arch_archdata (struct obj_file *f, struct obj_section *archdata_sec)
-{
- hppa64_file_t *hfile = (hppa64_file_t *)f;
- struct archdata {
- unsigned tgt_long unw_table;
- unsigned tgt_long segment_base;
- unsigned tgt_long unw_start;
- unsigned tgt_long unw_end;
- unsigned tgt_long gp;
- } *ad;
- int i;
- struct obj_section *sec;
-
- free(archdata_sec->contents);
- archdata_sec->contents = xmalloc(sizeof(struct archdata));
- memset(archdata_sec->contents, 0, sizeof(struct archdata));
- archdata_sec->header.sh_size = sizeof(struct archdata);
-
- ad = (struct archdata *)(archdata_sec->contents);
- ad->gp = hfile->gp;
- ad->unw_start = 0;
- ad->unw_end = 0;
- ad->unw_table = 0;
- ad->segment_base = f->sections[1]->header.sh_addr;
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- sec = f->sections[i];
- if (sec->header.sh_type == SHT_PARISC_UNWIND)
- {
- ad->unw_start = sec->header.sh_addr;
- ad->unw_end = sec->header.sh_addr + sec->header.sh_size;
- break;
- }
- }
-
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_i386.c b/mdk-stage1/insmod-modutils/obj/obj_i386.c
deleted file mode 100644
index fcbce8e04..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_i386.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/* i386 specific support for Elf loading and relocation.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct i386_got_entry
-{
- int offset;
- unsigned offset_done : 1;
- unsigned reloc_done : 1;
-};
-
-struct i386_file
-{
- struct obj_file root;
- struct obj_section *got;
-};
-
-struct i386_symbol
-{
- struct obj_symbol root;
- struct i386_got_entry gotent;
-};
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- struct i386_file *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- struct i386_symbol *sym;
- sym = xmalloc(sizeof(*sym));
- memset(&sym->gotent, 0, sizeof(sym->gotent));
- return &sym->root;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rel *rel,
- Elf32_Addr v)
-{
- struct i386_file *ifile = (struct i386_file *)f;
- struct i386_symbol *isym = (struct i386_symbol *)sym;
-
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
- Elf32_Addr got = ifile->got ? ifile->got->header.sh_addr : 0;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_386_NONE:
- break;
-
- case R_386_32:
- *loc += v;
- break;
-
- case R_386_PLT32:
- case R_386_PC32:
- *loc += v - dot;
- break;
-
- case R_386_GLOB_DAT:
- case R_386_JMP_SLOT:
- *loc = v;
- break;
-
- case R_386_RELATIVE:
- *loc += f->baseaddr;
- break;
-
- case R_386_GOTPC:
- assert(got != 0);
- *loc += got - dot;
- break;
-
- case R_386_GOT32:
- assert(isym != NULL);
- if (!isym->gotent.reloc_done)
- {
- isym->gotent.reloc_done = 1;
- *(Elf32_Addr *)(ifile->got->contents + isym->gotent.offset) = v;
- }
- *loc += isym->gotent.offset;
- break;
-
- case R_386_GOTOFF:
- assert(got != 0);
- *loc += v - got;
- break;
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- struct i386_file *ifile = (struct i386_file *)f;
- int i, n, offset = 0, gotneeded = 0;
-
- n = ifile->root.header.e_shnum;
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf32_Rel *rel, *relend;
- Elf32_Sym *symtab;
- const char *strtab;
-
- relsec = ifile->root.sections[i];
- if (relsec->header.sh_type != SHT_REL)
- continue;
-
- symsec = ifile->root.sections[relsec->header.sh_link];
- strsec = ifile->root.sections[symsec->header.sh_link];
-
- rel = (Elf32_Rel *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf32_Rel));
- symtab = (Elf32_Sym *)symsec->contents;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- struct i386_symbol *intsym;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_386_GOTPC:
- case R_386_GOTOFF:
- gotneeded = 1;
- default:
- continue;
-
- case R_386_GOT32:
- break;
- }
-
- obj_find_relsym(intsym, f, &ifile->root, rel, symtab, strtab);
-
- if (!intsym->gotent.offset_done)
- {
- intsym->gotent.offset_done = 1;
- intsym->gotent.offset = offset;
- offset += 4;
- }
- }
- }
-
- if (offset > 0 || gotneeded)
- ifile->got = obj_create_alloced_section(&ifile->root, ".got", 4, offset,
- SHF_WRITE);
-
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_ia64.c b/mdk-stage1/insmod-modutils/obj/obj_ia64.c
deleted file mode 100644
index d207a9042..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_ia64.c
+++ /dev/null
@@ -1,1022 +0,0 @@
-/*
- * ia64 specific support for Elf loading and relocation.
- * Copyright 2000 Mike Stephens <mike.stephens@intel.com>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <string.h>
-#include <assert.h>
-#include <stdlib.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE ~FALSE
-#endif
-
-/*======================================================================*/
-
-typedef struct _ia64_opd_t
-{
- int offset;
- int reloc_done;
-} ia64_opd_t;
-
-typedef struct _ia64_plt_t
-{
- struct _ia64_plt_t *next;
- Elf64_Addr addend;
- int text_offset;
- int data_offset;
- int reloc_done;
-} ia64_plt_t;
-
-typedef struct _ia64_got_t
-{
- struct _ia64_got_t *next;
- Elf64_Addr addend;
- int offset;
- int reloc_done;
-} ia64_got_t;
-
-typedef struct _ia64_symbol_t
-{
- struct obj_symbol root;
- ia64_got_t *gotent;
- ia64_opd_t *opdent;
- ia64_plt_t *pltent;
-} ia64_symbol_t;
-
-typedef struct _ia64_file_t
-{
- struct obj_file root;
- struct obj_section *got;
- struct obj_section *opd;
- struct obj_section *pltt;
- struct obj_section *pltd;
- Elf64_Addr gp;
- Elf64_Addr text;
- Elf64_Addr data;
- Elf64_Addr bss;
-} ia64_file_t;
-
-/*
- * aa=gp rel address of the function descriptor in the .IA_64.pltoff section
- */
-unsigned char ia64_plt_local[] =
-{
- 0x0b, 0x78, 0x00, 0x02, 0x00, 0x24, /* [MMI] addl r15=aa,gp;; */
- 0x00, 0x41, 0x3c, 0x30, 0x28, 0xc0, /* ld8 r16=[r15],8 */
- 0x01, 0x08, 0x00, 0x84, /* mov r14=gp;; */
- 0x11, 0x08, 0x00, 0x1e, 0x18, 0x10, /* [MIB] ld8 gp=[r15] */
- 0x60, 0x80, 0x04, 0x80, 0x03, 0x00, /* mov b6=r16 */
- 0x60, 0x00, 0x80, 0x00 /* br.few b6;; */
-};
-
-unsigned char ia64_plt_extern[] =
-{
- 0x0b, 0x80, 0x00, 0x02, 0x00, 0x24, /* [MMI] addl r16=aa,gp;; */
- 0xf0, 0x00, 0x40, 0x30, 0x20, 0x00, /* ld8 r15=[r16] */
- 0x00, 0x00, 0x04, 0x00, /* nop.i 0x0;; */
- 0x0b, 0x80, 0x20, 0x1e, 0x18, 0x14, /* [MMI] ld8 r16=[r15],8;; */
- 0x10, 0x00, 0x3c, 0x30, 0x20, 0xc0, /* ld8 gp=[r15] */
- 0x00, 0x09, 0x00, 0x07, /* mov b6=r16;; */
- 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MIB] nop.m 0x0 */
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* nop.i 0x0 */
- 0x60, 0x00, 0x80, 0x00 /* br.few b6;; */
-};
-
-/*======================================================================*/
-
-/*
- * return the instruction at slot in bundle
- */
-Elf64_Xword
-obj_ia64_ins_extract_from_bundle(Elf64_Addr *bundle, Elf64_Xword slot)
-{
- switch (slot)
- {
- case 0 :
- return (*bundle >> 5) & 0x1ffffffffff;
-
- case 1 :
- return (((*bundle >> 46) & 0x3ffff) |
- (*(bundle + 1) << 18)) & 0x1ffffffffff;
-
- case 2 :
- return (*(bundle + 1) >> 23) & 0x1ffffffffff;
-
- default:
- }
- return (-1);
-}
-
-/*
- * insert a instruction at slot in bundle
- */
-void
-obj_ia64_ins_insert_in_bundle(Elf64_Addr *bundle, Elf64_Xword slot, Elf64_Xword ins)
-{
- Elf64_Xword i;
- Elf64_Xword in = ins & 0x1ffffffffff;
-
- switch (slot)
- {
- case 0 :
- i = *bundle & 0xffffc0000000001f;
- *bundle = i | (in << 5);
- break;
-
- case 1 :
- i = *bundle & 0x00003fffffffffff;
- *bundle = i | (in << 46);
-
- ++bundle;
- i = *bundle & 0xffffffffff800000;
- *bundle = i | (in >> 18);
- break;
-
- case 2 :
- ++bundle;
- i = *bundle & 0x00000000007fffff;
- *bundle = i | (in << 23);
- break;
- }
-}
-
-/*
- * add a immediate 14 value to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_imm14(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffee07f01fff;
- ins |= ((v & 0x2000) << 23) | ((v & 0x1f80) << 20) | ((v & 0x007f) << 13);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- if (((Elf64_Sxword) v > 8191) || ((Elf64_Sxword) v < -8192))
- return obj_reloc_overflow;
- return obj_reloc_ok;
-}
-
-/*
- * add a immediate 22 value to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_imm22(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffe000301fff;
- ins |= ((v & 0x200000) << 15) | ((v & 0x1f0000) << 6) |
- ((v & 0x00ff80) << 20) | ((v & 0x00007f) << 13);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- if (((Elf64_Sxword) v > 2097151) || ((Elf64_Sxword) v < -2097152))
- return obj_reloc_overflow;
- return obj_reloc_ok;
-}
-
-/*
- * add a immediate 21 value (form 1) to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_pcrel21b(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffee00001fff;
- ins |= ((v & 0x1000000) << 12) | ((v & 0x0fffff0) << 9);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- return obj_reloc_ok;
-}
-
-/*
- * add a immediate 21 value (form 2) to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_pcrel21m(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffee000fe03f;
- ins |= ((v & 0x1000000) << 12) | ((v & 0x0fff800) << 9) |
- ((v & 0x00007f0) << 2);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- return obj_reloc_ok;
-}
-
-/*
- * add a immediate 21 value (form 3) to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_pcrel21f(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffeffc00003f;
- ins |= ((v & 0x1000000) << 12) | ((v & 0x0fffff0) << 2);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- return obj_reloc_ok;
-}
-
-/*
- * add a immediate 64 value to the instruction at slot in bundle
- */
-enum obj_reloc
-obj_ia64_ins_imm64(Elf64_Xword v, Elf64_Addr *bundle, Elf64_Xword slot)
-{
- Elf64_Xword ins;
-
- assert(slot == 2);
-
- ins = obj_ia64_ins_extract_from_bundle(bundle, slot);
- ins &= 0xffffffe000101fff;
- ins |= ((v & 0x8000000000000000) >> 27) | ((v & 0x0000000000200000)) |
- ((v & 0x00000000001f0000) << 6) | ((v & 0x000000000000ff80) << 20) |
- ((v & 0x000000000000007f) << 13);
- obj_ia64_ins_insert_in_bundle(bundle, slot, ins);
- obj_ia64_ins_insert_in_bundle(bundle, --slot, ((v & 0x7fffffffffc00000) >> 22));
- return obj_reloc_ok;
-}
-
-/*
- * create a plt entry
- */
-enum obj_reloc
-obj_ia64_generate_plt(Elf64_Addr v,
- Elf64_Addr gp,
- ia64_file_t *ifile,
- ia64_symbol_t *isym,
- ia64_plt_t *pltent)
-{
- *(Elf64_Addr *)(ifile->pltd->contents + pltent->data_offset) = v;
- if (isym->root.secidx <= SHN_HIRESERVE)
- {
- /* local entry */
- *(Elf64_Addr *)(ifile->pltd->contents + pltent->data_offset + 8) = gp;
- memcpy((Elf64_Addr *)(ifile->pltt->contents + pltent->text_offset),
- ia64_plt_local, sizeof(ia64_plt_local));
- }
- else
- {
- /* external entry */
- memcpy((Elf64_Addr *)(ifile->pltt->contents + pltent->text_offset),
- ia64_plt_extern, sizeof(ia64_plt_extern));
- }
- return obj_ia64_ins_imm22(
- (ifile->pltd->header.sh_addr + pltent->data_offset - gp),
- (Elf64_Addr *)(ifile->pltt->contents + pltent->text_offset), 0);
-}
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- ia64_file_t *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- f->opd = NULL;
- f->pltt = NULL;
- f->pltd = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- ia64_symbol_t *sym;
- sym = xmalloc(sizeof(*sym));
- sym->gotent = NULL;
- sym->opdent = NULL;
- sym->pltent = NULL;
- return &sym->root;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- switch (sec->header.sh_type)
- {
- case SHT_IA_64_EXT :
- sec->contents = NULL;
- break;
-
- case SHT_IA_64_UNWIND :
- if (sec->header.sh_size > 0)
- {
- sec->contents = xmalloc(sec->header.sh_size);
- gzf_lseek(fp, sec->header.sh_offset, SEEK_SET);
- if (gzf_read(fp, sec->contents, sec->header.sh_size) != sec->header.sh_size)
- {
- error("error reading ELF section data: %m");
- return -1;
- }
- }
- else
- sec->contents = NULL;
- break;
-
- default:
- error("Unknown section header type: %08x", sec->header.sh_type);
- return -1;
- }
- return 0;
-}
-
-int
-arch_create_got(struct obj_file *f)
-{
- ia64_file_t *ifile = (ia64_file_t *)f;
- int i;
- int n;
- int got_offset = 0;
- int opd_offset = 32;
- int plt_text_offset = 0;
- int plt_data_offset = 0;
-
- n = ifile->root.header.e_shnum;
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf64_Rela *rel, *relend;
- Elf64_Sym *symtab;
- const char *strtab;
-
- relsec = ifile->root.sections[i];
- if (relsec->header.sh_type != SHT_RELA)
- continue;
-
- symsec = ifile->root.sections[relsec->header.sh_link];
- strsec = ifile->root.sections[symsec->header.sh_link];
-
- rel = (Elf64_Rela *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf64_Rela));
- symtab = (Elf64_Sym *)symsec->contents;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- int need_got = FALSE;
- int need_opd = FALSE;
- int need_plt = FALSE;
-
- switch (ELF64_R_TYPE(rel->r_info))
- {
- default:
- continue;
-
- case R_IA64_FPTR64I : /* @fptr(sym + add), mov imm64 */
- case R_IA64_FPTR32LSB : /* @fptr(sym + add), data4 LSB */
- case R_IA64_FPTR64LSB : /* @fptr(sym + add), data8 LSB */
- need_opd = TRUE;
- break;
-
- case R_IA64_LTOFF22 : /* @ltoff(sym + add), add imm22 */
- case R_IA64_LTOFF22X :
- case R_IA64_LTOFF64I : /* @ltoff(sym + add), mov imm64 */
- need_got = TRUE;
- break;
-
- case R_IA64_LTOFF_FPTR22 : /* @ltoff(@fptr(s+a)), imm22 */
- case R_IA64_LTOFF_FPTR64I : /* @ltoff(@fptr(s+a)), imm64 */
- case R_IA64_LTOFF_FPTR32LSB :
- case R_IA64_LTOFF_FPTR64LSB :
- need_got = TRUE;
- need_opd = TRUE;
- break;
-
- case R_IA64_PLTOFF22 : /* @pltoff(sym + add), add imm22 */
- case R_IA64_PLTOFF64I : /* @pltoff(sym + add), mov imm64 */
- case R_IA64_PLTOFF64LSB : /* @pltoff(sym + add), data8 LSB */
-
- case R_IA64_PCREL21B : /* @pcrel(sym + add), ptb, call */
- case R_IA64_PCREL21M : /* @pcrel(sym + add), chk.s */
- case R_IA64_PCREL21F : /* @pcrel(sym + add), fchkf */
- need_plt = TRUE;
- break;
- }
-
- if (need_got || need_opd || need_plt)
- {
- ia64_symbol_t *isym;
- int local;
-
- obj_find_relsym(isym, f, f, rel, symtab, strtab);
- local = isym->root.secidx <= SHN_HIRESERVE;
-
- if (need_plt)
- {
- ia64_plt_t *plt;
-
- for (plt = isym->pltent; plt != NULL; plt = plt->next)
- if (plt->addend == rel->r_addend)
- break;
- if (plt == NULL)
- {
- plt = (ia64_plt_t *) xmalloc(sizeof(ia64_plt_t));
- plt->next = isym->pltent;
- plt->addend = rel->r_addend;
- plt->text_offset = plt_text_offset;
- plt->data_offset = plt_data_offset;
- plt->reloc_done = FALSE;
- isym->pltent = plt;
- if (local)
- {
- plt_text_offset += sizeof(ia64_plt_local);
- plt_data_offset += 16;
- }
- else
- {
- plt_text_offset += sizeof(ia64_plt_extern);
- plt_data_offset += 8;
- }
- need_plt = FALSE;
- }
- }
- if (need_got)
- {
- ia64_got_t *got;
-
- for (got = isym->gotent; got != NULL; got = got->next)
- if (got->addend == rel->r_addend)
- break;
- if (got == NULL)
- {
- got = (ia64_got_t *) xmalloc(sizeof(ia64_got_t));
- got->next = isym->gotent;
- got->addend = rel->r_addend;
- got->offset = got_offset;
- got->reloc_done = FALSE;
- isym->gotent = got;
- got_offset += 8;
- need_got = FALSE;
- }
- }
- if (need_opd && local)
- {
- ia64_opd_t *opd;
-
- if (isym->opdent == NULL)
- {
- opd = (ia64_opd_t *) xmalloc(sizeof(ia64_opd_t));
- opd->offset = opd_offset;
- opd->reloc_done = FALSE;
- isym->opdent = opd;
- opd_offset += 16;
- need_opd = FALSE;
- }
- }
- }
- }
- }
-
- ifile->got = obj_create_alloced_section(f, ".got", 8, got_offset,
- SHF_WRITE | SHF_IA_64_SHORT);
- assert(ifile->got != NULL);
-
- ifile->opd = obj_create_alloced_section(f, ".opd", 16, opd_offset,
- SHF_WRITE | SHF_IA_64_SHORT);
- assert(ifile->opd != NULL);
-
- if (plt_text_offset > 0)
- {
- ifile->pltt = obj_create_alloced_section(f, ".plt", 16,
- plt_text_offset,
- SHF_WRITE | SHF_IA_64_SHORT);
- ifile->pltd = obj_create_alloced_section(f, ".IA_64.pltoff", 16,
- plt_data_offset,
- SHF_WRITE | SHF_IA_64_SHORT);
- assert(ifile->pltt != NULL);
- assert(ifile->pltd != NULL);
- }
-
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf64_Addr base)
-{
- ia64_file_t *ifile = (ia64_file_t *)f;
- Elf64_Addr min_addr = (Elf64_Addr) -1;
- Elf64_Addr max_addr = 0;
- Elf64_Addr min_short_addr = (Elf64_Addr) -1;
- Elf64_Addr max_short_addr = 0;
- Elf64_Addr gp;
- Elf64_Addr text = (Elf64_Addr) -1;
- Elf64_Addr data = (Elf64_Addr) -1;
- Elf64_Addr bss = (Elf64_Addr) -1;
- int n = f->header.e_shnum;
- int i;
-
- /*
- * Finalize the addresses of the sections, find the min and max
- * address of all sections marked short, and collect min and max
- * address of any type, for use in selecting a nice gp.
- *
- * The algorithm used for selecting set the GP value was taken from
- * the ld/bfd code contributed by David Mosberger-Tang <davidm@hpl.hp.com>
- */
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- {
- Elf64_Shdr *header = &f->sections[i]->header;
- Elf64_Addr lo;
- Elf64_Addr hi;
-
- header->sh_addr += base;
- if (header->sh_flags & SHF_ALLOC)
- {
- lo = header->sh_addr;
- hi = header->sh_addr + header->sh_size;
- if (hi < lo)
- hi = (Elf64_Addr) -1;
-
- if (min_addr > lo)
- min_addr = lo;
- if (max_addr < hi)
- max_addr = hi;
- if (header->sh_flags & SHF_IA_64_SHORT)
- {
- if (min_short_addr > lo)
- min_short_addr = lo;
- if (max_short_addr < hi)
- max_short_addr = hi;
- }
- if ((header->sh_type & SHT_NOBITS) && (lo < bss))
- bss = lo;
- else if ((header->sh_flags & SHF_EXECINSTR) && (lo < text))
- text = lo;
- else if (lo < data)
- data = lo;
- }
- }
- /* Pick a sensible value for gp */
-
- /* Start with just the address of the .got */
- gp = ifile->got->header.sh_addr;
-
- /*
- * If it is possible to address the entire image, but we
- * don't with the choice above, adjust.
- */
- if ((max_addr - min_addr < 0x400000) && (max_addr - gp <= 0x200000) &&
- (gp - min_addr > 0x200000))
- {
- gp = min_addr + 0x200000;
- }
- else if (max_short_addr != 0)
- {
- /* If we don't cover all the short data, adjust */
- if (max_short_addr - gp >= 0x200000)
- gp = min_short_addr + 0x200000;
-
- /* If we're addressing stuff past the end, adjust back */
- if (gp > max_addr)
- gp = max_addr - 0x200000 + 8;
- }
-
- /*
- * Validate whether all SHF_IA_64_SHORT sections are within
- * range of the chosen GP.
- */
- if (max_short_addr != 0)
- {
- if (max_short_addr - min_short_addr >= 0x400000)
- {
- error("short data segment overflowed (0x%lx >= 0x400000)",
- (unsigned long)(max_short_addr - min_short_addr));
- return 0;
- }
- else if (((gp > min_short_addr) && (gp - min_short_addr > 0x200000)) ||
- ((gp < max_short_addr) && (max_short_addr - gp >= 0x200000)))
- {
- error("GP does not cover short data segment");
- return 0;
- }
- }
- ifile->gp = gp;
- ifile->text = text;
- ifile->data = data;
- ifile->bss = bss;
- return 1;
-}
-
-/* Targets can be unaligned, use memcpy instead of assignment */
-#define COPY_64LSB(loc, v) \
- do { \
- Elf64_Xword reloc = (v); \
- memcpy((void *)(loc), &reloc, 8); \
- } while(0)
-#define COPY_32LSB(loc, v) \
- do { \
- Elf32_Xword reloc = (v); \
- memcpy((void *)(loc), &reloc, 4); \
- if ((v) != reloc) \
- ret = obj_reloc_overflow; \
- } while(0)
-
-enum obj_reloc
-arch_apply_relocation(struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf64_Rela *rel,
- Elf64_Addr v)
-{
- ia64_file_t *ifile = (ia64_file_t *) f;
- ia64_symbol_t *isym = (ia64_symbol_t *) sym;
-
- Elf64_Addr loc = (Elf64_Addr)(targsec->contents + rel->r_offset);
- Elf64_Addr dot = (targsec->header.sh_addr + rel->r_offset) & ~0x03;
-
- Elf64_Addr got = ifile->got->header.sh_addr;
- Elf64_Addr gp = ifile->gp;
-
- Elf64_Addr *bundle = (Elf64_Addr *)(loc & ~0x03);
- Elf64_Xword slot = loc & 0x03;
-
- Elf64_Xword r_info = ELF64_R_TYPE(rel->r_info);
-
- enum obj_reloc ret = obj_reloc_ok;
-
- /* We cannot load modules compiled with -mconstant-gp */
-#ifndef EF_IA_64_CONS_GP
-#define EF_IA_64_CONS_GP 0x00000040
-#endif
-#ifndef EF_IA_64_NOFUNCDESC_CONS_GP
-#define EF_IA_64_NOFUNCDESC_CONS_GP 0x00000080
-#endif
- if (f->header.e_flags & (EF_IA_64_CONS_GP | EF_IA_64_NOFUNCDESC_CONS_GP))
- return obj_reloc_constant_gp;
-
- switch (r_info)
- {
- case R_IA64_NONE : /* none */
- case R_IA64_LDXMOV : /* Use of LTOFF22X. */
- break;
-
- case R_IA64_IMM14 : /* symbol + addend, add imm14 */
- ret = obj_ia64_ins_imm14(v, bundle, slot);
- break;
-
- case R_IA64_IMM22 : /* symbol + addend, add imm22 */
- ret = obj_ia64_ins_imm22(v, bundle, slot);
- break;
-
- case R_IA64_IMM64 : /* symbol + addend, movl imm64 */
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- break;
-
- case R_IA64_DIR32LSB : /* symbol + addend, data4 LSB */
- COPY_32LSB(loc, v);
- break;
-
- case R_IA64_DIR64LSB : /* symbol + addend, data8 LSB */
- COPY_64LSB(loc, v);
- break;
-
- case R_IA64_GPREL22 : /* @gprel(sym + add), add imm22 */
- v -= gp;
- ret = obj_ia64_ins_imm22(v, bundle, slot);
- break;
-
- case R_IA64_GPREL64I : /* @gprel(sym + add), mov imm64 */
- v -= gp;
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- break;
-
- case R_IA64_GPREL32LSB : /* @gprel(sym + add), data4 LSB */
- COPY_32LSB(loc, v-gp);
- break;
-
- case R_IA64_GPREL64LSB : /* @gprel(sym + add), data8 LSB */
- COPY_64LSB(loc, v-gp);
- break;
-
- case R_IA64_LTOFF22 : /* @ltoff(sym + add), add imm22 */
- case R_IA64_LTOFF22X : /* LTOFF22, relaxable. */
- case R_IA64_LTOFF64I : /* @ltoff(sym + add), mov imm64 */
- {
- ia64_got_t *ge;
-
- assert(isym != NULL);
- for (ge = isym->gotent; ge != NULL && ge->addend != rel->r_addend; )
- ge = ge->next;
- assert(ge != NULL);
- if (!ge->reloc_done)
- {
- ge->reloc_done = TRUE;
- *(Elf64_Addr *)(ifile->got->contents + ge->offset) = v;
- }
- v = got + ge->offset - gp;
- if (r_info == R_IA64_LTOFF64I)
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- else
- ret = obj_ia64_ins_imm22(v, bundle, slot);
- }
- break;
-
- case R_IA64_PLTOFF22 : /* @pltoff(sym + add), add imm22 */
- case R_IA64_PLTOFF64I : /* @pltoff(sym + add), mov imm64 */
- case R_IA64_PLTOFF64LSB : /* @pltoff(sym + add), data8 LSB */
- {
- ia64_plt_t *pe;
-
- assert(isym != NULL);
- for (pe = isym->pltent; pe != NULL && pe->addend != rel->r_addend; )
- pe = pe->next;
- assert(pe != NULL);
- if (!pe->reloc_done)
- {
- pe->reloc_done = TRUE;
- ret = obj_ia64_generate_plt(v, gp, ifile, isym, pe);
- }
- v = ifile->pltt->header.sh_addr + pe->text_offset - gp;
- switch (r_info)
- {
- case R_IA64_PLTOFF22 :
- ret = obj_ia64_ins_imm22(v, bundle, slot);
- break;
-
- case R_IA64_PLTOFF64I :
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- break;
-
- case R_IA64_PLTOFF64LSB :
- COPY_64LSB(loc, v);
- break;
- }
- }
- break;
-
- case R_IA64_FPTR64I : /* @fptr(sym + add), mov imm64 */
- case R_IA64_FPTR32LSB : /* @fptr(sym + add), data4 LSB */
- case R_IA64_FPTR64LSB : /* @fptr(sym + add), data8 LSB */
- assert(isym != NULL);
- if (isym->root.secidx <= SHN_HIRESERVE)
- {
- assert(isym->opdent != NULL);
- if (!isym->opdent->reloc_done)
- {
- isym->opdent->reloc_done = TRUE;
- *(Elf64_Addr *)(ifile->opd->contents + isym->opdent->offset) = v;
- *(Elf64_Addr *)(ifile->opd->contents + isym->opdent->offset + 8) = gp;
- }
- v = ifile->opd->header.sh_addr + isym->opdent->offset;
- }
- switch (r_info)
- {
- case R_IA64_FPTR64I :
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- break;
-
- case R_IA64_FPTR32LSB :
- COPY_32LSB(loc, v);
- break;
-
- case R_IA64_FPTR64LSB : /* @fptr(sym + add), data8 LSB */
- /* Target can be unaligned */
- COPY_64LSB(loc, v);
- break;
- }
- break;
-
- case R_IA64_PCREL21B : /* @pcrel(sym + add), ptb, call */
- case R_IA64_PCREL21M : /* @pcrel(sym + add), chk.s */
- case R_IA64_PCREL21F : /* @pcrel(sym + add), fchkf */
- assert(isym != NULL);
- if ((isym->root.secidx > SHN_HIRESERVE) ||
- ((Elf64_Sxword) (v - dot) > 16777215) ||
- ((Elf64_Sxword) (v - dot) < -16777216))
- {
- ia64_plt_t *pe;
-
- for (pe = isym->pltent; pe != NULL && pe->addend != rel->r_addend; )
- pe = pe->next;
- assert(pe != NULL);
- if (!pe->reloc_done)
- {
- pe->reloc_done = TRUE;
- ret = obj_ia64_generate_plt(v, gp, ifile, isym, pe);
- }
- v = ifile->pltt->header.sh_addr + pe->text_offset;
- }
- v -= dot;
- switch (r_info)
- {
- case R_IA64_PCREL21B :
- ret = obj_ia64_ins_pcrel21b(v, bundle, slot);
- break;
-
- case R_IA64_PCREL21M :
- ret = obj_ia64_ins_pcrel21m(v, bundle, slot);
- break;
-
- case R_IA64_PCREL21F :
- ret = obj_ia64_ins_pcrel21f(v, bundle, slot);
- break;
- }
- break;
-
- case R_IA64_PCREL32LSB : /* @pcrel(sym + add), data4 LSB */
- COPY_32LSB(loc, v-dot);
- break;
-
- case R_IA64_PCREL64LSB : /* @pcrel(sym + add), data8 LSB */
- COPY_64LSB(loc, v-dot);
- break;
-
- case R_IA64_LTOFF_FPTR22 : /* @ltoff(@fptr(s+a)), imm22 */
- case R_IA64_LTOFF_FPTR64I : /* @ltoff(@fptr(s+a)), imm64 */
- case R_IA64_LTOFF_FPTR32LSB : /* @ltoff(@fptr(s+a)), data4 */
- case R_IA64_LTOFF_FPTR64LSB : /* @ltoff(@fptr(s+a)), data8 */
- {
- ia64_got_t *ge;
-
- assert(isym != NULL);
- if (isym->root.secidx <= SHN_HIRESERVE)
- {
- assert(isym->opdent != NULL);
- if (!isym->opdent->reloc_done)
- {
- isym->opdent->reloc_done = TRUE;
- *(Elf64_Addr *)(ifile->opd->contents + isym->opdent->offset) = v;
- *(Elf64_Addr *)(ifile->opd->contents + isym->opdent->offset + 8) = gp;
- }
- v = ifile->opd->header.sh_addr + isym->opdent->offset;
- }
- for (ge = isym->gotent; ge != NULL && ge->addend != rel->r_addend; )
- ge = ge->next;
- assert(ge != NULL);
- if (!ge->reloc_done)
- {
- ge->reloc_done = TRUE;
- *(Elf64_Addr *)(ifile->got->contents + ge->offset) = v;
- }
- v = got + ge->offset - gp;
- switch (r_info)
- {
- case R_IA64_LTOFF_FPTR22 :
- ret = obj_ia64_ins_imm22(v, bundle, slot);
- break;
-
- case R_IA64_LTOFF_FPTR64I :
- ret = obj_ia64_ins_imm64(v, bundle, slot);
- break;
-
- case R_IA64_LTOFF_FPTR32LSB :
- COPY_32LSB(loc, v);
- break;
-
- case R_IA64_LTOFF_FPTR64LSB :
- COPY_64LSB(loc, v);
- break;
- }
- }
- break;
-
- case R_IA64_SEGREL32LSB : /* @segrel(sym + add), data4 LSB */
- case R_IA64_SEGREL64LSB : /* @segrel(sym + add), data8 LSB */
- /* Only one segment for modules, see segment_base in arch_archdata */
- v -= f->sections[1]->header.sh_addr;
- if (r_info == R_IA64_SEGREL32LSB)
- COPY_32LSB(loc, v);
- else
- COPY_64LSB(loc, v);
- break;
-
- case R_IA64_SECREL32LSB : /* @secrel(sym + add), data4 LSB */
- COPY_32LSB(loc, targsec->header.sh_addr - v);
- break;
-
- case R_IA64_SECREL64LSB : /* @secrel(sym + add), data8 LSB */
- COPY_64LSB(loc, targsec->header.sh_addr - v);
- break;
-
- /*
- * We don't handle the big-endian relocates
- *
- * R_IA64_DIR32MSB symbol + addend, data4 MSB
- * R_IA64_DIR64MSB symbol + addend, data8 MSB
- * R_IA64_GPREL32MSB @gprel(sym + add), data4 MSB
- * R_IA64_GPREL64MSB @gprel(sym + add), data8 MSB
- * R_IA64_PLTOFF64MSB @pltoff(sym + add), data8 MSB
- * R_IA64_FPTR32MSB @fptr(sym + add), data4 MSB
- * R_IA64_FPTR64MSB @fptr(sym + add), data8 MSB
- * R_IA64_PCREL32MSB @pcrel(sym + add), data4 MSB
- * R_IA64_PCREL64MSB @pcrel(sym + add), data8 MSB
- * R_IA64_SEGREL32MSB @segrel(sym + add), data4 MSB
- * R_IA64_SEGREL64MSB @segrel(sym + add), data8 MSB
- * R_IA64_SECREL32MSB @secrel(sym + add), data4 MSB
- * R_IA64_SECREL64MSB @secrel(sym + add), data8 MSB
- * R_IA64_REL32MSB data 4 + REL
- * R_IA64_REL64MSB data 8 + REL
- * R_IA64_LTV32MSB symbol + addend, data4 MSB
- * R_IA64_LTV64MSB symbol + addend, data8 MSB
- * R_IA64_IPLTMSB dynamic reloc, imported PLT, MSB
- */
- default:
- case R_IA64_REL32LSB : /* data 4 + REL */
- case R_IA64_REL64LSB : /* data 8 + REL */
- case R_IA64_LTV32LSB : /* symbol + addend, data4 LSB */
- case R_IA64_LTV64LSB : /* symbol + addend, data8 LSB */
- case R_IA64_IPLTLSB : /* dynamic reloc, imported PLT, LSB */
- ret = obj_reloc_unhandled;
- break;
- }
- return ret;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- ia64_file_t *ifile = (ia64_file_t *)f;
- Elf64_Addr *opd = (Elf64_Addr *)(ifile->opd->contents);
-
- if ((opd[0] = mod->init) != 0)
- {
- opd[1] = ifile->gp;
- mod->init = ifile->opd->header.sh_addr;
- }
-
- if ((opd[2] = mod->cleanup) != 0)
- {
- opd[3] = ifile->gp;
- mod->cleanup = ifile->opd->header.sh_addr + 16;
- }
-
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *f, struct obj_section *archdata_sec)
-{
- ia64_file_t *ifile = (ia64_file_t *)f;
- struct archdata {
- unsigned tgt_long unw_table;
- unsigned tgt_long segment_base;
- unsigned tgt_long unw_start;
- unsigned tgt_long unw_end;
- unsigned tgt_long gp;
- } *ad;
- int i;
- struct obj_section *sec;
-
- free(archdata_sec->contents);
- archdata_sec->contents = xmalloc(sizeof(struct archdata));
- memset(archdata_sec->contents, 0, sizeof(struct archdata));
- archdata_sec->header.sh_size = sizeof(struct archdata);
-
- ad = (struct archdata *)(archdata_sec->contents);
- ad->gp = ifile->gp;
- ad->unw_start = 0;
- ad->unw_end = 0;
- ad->unw_table = 0;
- ad->segment_base = f->sections[1]->header.sh_addr;
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- sec = f->sections[i];
- if (sec->header.sh_type == SHT_IA_64_UNWIND)
- {
- ad->unw_start = sec->header.sh_addr;
- ad->unw_end = sec->header.sh_addr + sec->header.sh_size;
- break;
- }
- }
-
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_kallsyms.c b/mdk-stage1/insmod-modutils/obj/obj_kallsyms.c
deleted file mode 100644
index 1836141e9..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_kallsyms.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/* Build a section containing all non-stack symbols.
- Copyright 2000 Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <malloc.h>
-
-#include "obj.h"
-#include "kallsyms.h"
-#include "util.h"
-
-/*======================================================================*/
-
-#define EXPAND_BY 4096 /* Arbitrary */
-
-/* Append a string to the big list of strings */
-
-static void
-append_string (const char *s, char **strings,
- ElfW(Word) *strings_size, ElfW(Word) *strings_left)
-{
- size_t l = strlen(s) + 1;
- while (l > *strings_left) {
- *strings = xrealloc(*strings, *strings_size += EXPAND_BY);
- *strings_left += EXPAND_BY;
- }
- memcpy((char *)*strings+*strings_size-*strings_left, s, l);
- *strings_left -= l;
-}
-
-
-/* Append a symbol to the big list of symbols */
-
-static void
-append_symbol (const struct kallsyms_symbol *s,
- struct kallsyms_symbol **symbols,
- ElfW(Word) *symbols_size, ElfW(Word) *symbols_left)
-{
- size_t l = sizeof(*s);
- while (l > *symbols_left) {
- *symbols = xrealloc(*symbols, *symbols_size += EXPAND_BY);
- *symbols_left += EXPAND_BY;
- }
- memcpy((char *)*symbols+*symbols_size-*symbols_left, s, l);
- *symbols_left -= l;
-}
-
-/* qsort compare routine to sort symbols */
-
-static const char *sym_strings;
-
-static int
-symbol_compare (const void *a, const void *b)
-{
- struct kallsyms_symbol *c = (struct kallsyms_symbol *) a;
- struct kallsyms_symbol *d = (struct kallsyms_symbol *) b;
-
- if (c->symbol_addr > d->symbol_addr)
- return(1);
- if (c->symbol_addr < d->symbol_addr)
- return(-1);
- return(strcmp(sym_strings+c->name_off, sym_strings+d->name_off));
-}
-
-
-/* Extract all symbols from the input obj_file, ignore ones that are
- * no use for debugging, build an output obj_file containing only the
- * kallsyms section.
- *
- * The kallsyms section is a bit unusual. It deliberately has no
- * relocatable data, all "pointers" are represented as byte offsets
- * into the the section. This means it can be stored anywhere without
- * relocation problems. In particular it can be stored within a kernel
- * image, it can be stored separately from the kernel image, it can be
- * appended to a module just before loading, it can be stored in a
- * separate area etc.
- *
- * Format of the kallsyms section.
- *
- * Header:
- * Size of header.
- * Total size of kallsyms data, including strings.
- * Number of loaded sections.
- * Offset to first section entry from start of header.
- * Size of each section entry, excluding the name string.
- * Number of symbols.
- * Offset to first symbol entry from start of header.
- * Size of each symbol entry, excluding the name string.
- *
- * Section entry - one per loaded section.
- * Start of section[1].
- * Size of section.
- * Offset to name of section, from start of strings.
- * Section flags.
- *
- * Symbol entry - one per symbol in the input file[2].
- * Offset of section that owns this symbol, from start of section data.
- * Address of symbol within the real section[1].
- * Offset to name of symbol, from start of strings.
- *
- * Notes: [1] This is an exception to the "represent pointers as
- * offsets" rule, it is a value, not an offset. The start
- * address of a section or a symbol is extracted from the
- * obj_file data which may contain absolute or relocatable
- * addresses. If the addresses are relocatable then the
- * caller must adjust the section and/or symbol entries in
- * kallsyms after relocation.
- * [2] Only symbols that fall within loaded sections are stored.
- */
-
-int
-obj_kallsyms (struct obj_file *fin, struct obj_file **fout_result)
-{
- struct obj_file *fout;
- int i, loaded = 0, *fin_to_allsym_map;
- struct obj_section *isec, *osec;
- struct kallsyms_header *a_hdr;
- struct kallsyms_section *a_sec;
- ElfW(Off) sec_off;
- struct kallsyms_symbol *symbols = NULL, a_sym;
- ElfW(Word) symbols_size = 0, symbols_left = 0;
- char *strings = NULL, *p;
- ElfW(Word) strings_size = 0, strings_left = 0;
- ElfW(Off) file_offset;
- static char strtab[] = "\000" KALLSYMS_SEC_NAME;
-
- /* Create the kallsyms section. */
- fout = arch_new_file();
- memset(fout, 0, sizeof(*fout));
- fout->symbol_cmp = strcmp;
- fout->symbol_hash = obj_elf_hash;
- fout->load_order_search_start = &fout->load_order;
-
- /* Copy file characteristics from input file and modify to suit */
- memcpy(&fout->header, &fin->header, sizeof(fout->header));
- fout->header.e_type = ET_REL; /* Output is relocatable */
- fout->header.e_entry = 0; /* No entry point */
- fout->header.e_phoff = 0; /* No program header */
- file_offset = sizeof(fout->header); /* Step over Elf header */
- fout->header.e_shoff = file_offset; /* Section headers next */
- fout->header.e_phentsize = 0; /* No program header */
- fout->header.e_phnum = 0; /* No program header */
- fout->header.e_shnum = KALLSYMS_IDX+1; /* Initial, strtab, kallsyms */
- fout->header.e_shstrndx = KALLSYMS_IDX-1; /* strtab */
- file_offset += fout->header.e_shentsize * fout->header.e_shnum;
-
- /* Populate the section data for kallsyms itself */
- fout->sections = xmalloc(sizeof(*(fout->sections))*fout->header.e_shnum);
- memset(fout->sections, 0, sizeof(*(fout->sections))*fout->header.e_shnum);
-
- fout->sections[0] = osec = arch_new_section();
- memset(osec, 0, sizeof(*osec));
- osec->header.sh_type = SHT_NULL;
- osec->header.sh_link = SHN_UNDEF;
-
- fout->sections[KALLSYMS_IDX-1] = osec = arch_new_section();
- memset(osec, 0, sizeof(*osec));
- osec->name = ".strtab";
- osec->header.sh_type = SHT_STRTAB;
- osec->header.sh_link = SHN_UNDEF;
- osec->header.sh_offset = file_offset;
- osec->header.sh_size = sizeof(strtab);
- osec->contents = xmalloc(sizeof(strtab));
- memcpy(osec->contents, strtab, sizeof(strtab));
- file_offset += osec->header.sh_size;
-
- fout->sections[KALLSYMS_IDX] = osec = arch_new_section();
- memset(osec, 0, sizeof(*osec));
- osec->name = KALLSYMS_SEC_NAME;
- osec->header.sh_name = 1; /* Offset in strtab */
- osec->header.sh_type = SHT_PROGBITS; /* Load it */
- osec->header.sh_flags = SHF_ALLOC; /* Read only data */
- osec->header.sh_link = SHN_UNDEF;
- osec->header.sh_addralign = sizeof(ElfW(Word));
- file_offset = (file_offset + osec->header.sh_addralign - 1)
- & -(osec->header.sh_addralign);
- osec->header.sh_offset = file_offset;
-
- /* How many loaded sections are there? */
- for (i = 0; i < fin->header.e_shnum; ++i) {
- if (fin->sections[i]->header.sh_flags & SHF_ALLOC)
- ++loaded;
- }
-
- /* Initial contents, header + one entry per input section. No strings. */
- osec->header.sh_size = sizeof(*a_hdr) + loaded*sizeof(*a_sec);
- a_hdr = (struct kallsyms_header *) osec->contents =
- xmalloc(osec->header.sh_size);
- memset(osec->contents, 0, osec->header.sh_size);
- a_hdr->size = sizeof(*a_hdr);
- a_hdr->sections = loaded;
- a_hdr->section_off = a_hdr->size;
- a_hdr->section_size = sizeof(*a_sec);
- a_hdr->symbol_off = osec->header.sh_size;
- a_hdr->symbol_size = sizeof(a_sym);
- a_hdr->start = (ElfW(Addr))(~0);
-
- /* Map input section numbers to kallsyms section offsets. */
- sec_off = 0; /* Offset to first kallsyms section entry */
- fin_to_allsym_map = xmalloc(sizeof(*fin_to_allsym_map)*fin->header.e_shnum);
- for (i = 0; i < fin->header.e_shnum; ++i) {
- isec = fin->sections[i];
- if (isec->header.sh_flags & SHF_ALLOC) {
- fin_to_allsym_map[isec->idx] = sec_off;
- sec_off += a_hdr->section_size;
- }
- else
- fin_to_allsym_map[isec->idx] = -1; /* Ignore this section */
- }
-
- /* Copy the loaded section data. */
- a_sec = (struct kallsyms_section *) ((char *) a_hdr + a_hdr->section_off);
- for (i = 0; i < fin->header.e_shnum; ++i) {
- isec = fin->sections[i];
- if (!(isec->header.sh_flags & SHF_ALLOC))
- continue;
- a_sec->start = isec->header.sh_addr;
- a_sec->size = isec->header.sh_size;
- a_sec->flags = isec->header.sh_flags;
- a_sec->name_off = strings_size - strings_left;
- append_string(isec->name, &strings, &strings_size, &strings_left);
- if (a_sec->start < a_hdr->start)
- a_hdr->start = a_sec->start;
- if (a_sec->start+a_sec->size > a_hdr->end)
- a_hdr->end = a_sec->start+a_sec->size;
- ++a_sec;
- }
-
- /* Build the kallsyms symbol table from the symbol hashes. */
- for (i = 0; i < HASH_BUCKETS; ++i) {
- struct obj_symbol *sym = fin->symtab[i];
- for (sym = fin->symtab[i]; sym ; sym = sym->next) {
- if (!sym || sym->secidx >= fin->header.e_shnum)
- continue;
- if ((a_sym.section_off = fin_to_allsym_map[sym->secidx]) == -1)
- continue;
- if (strcmp(sym->name, "gcc2_compiled.") == 0 ||
- strncmp(sym->name, "__insmod_", 9) == 0)
- continue;
- a_sym.symbol_addr = sym->value;
- if (fin->header.e_type == ET_REL)
- a_sym.symbol_addr += fin->sections[sym->secidx]->header.sh_addr;
- a_sym.name_off = strings_size - strings_left;
- append_symbol(&a_sym, &symbols, &symbols_size, &symbols_left);
- append_string(sym->name, &strings, &strings_size, &strings_left);
- ++a_hdr->symbols;
- }
- }
- free(fin_to_allsym_map);
-
- /* Sort the symbols into ascending order by address and name */
- sym_strings = strings; /* For symbol_compare */
- qsort((char *) symbols, (unsigned) a_hdr->symbols,
- sizeof(* symbols), symbol_compare);
- sym_strings = NULL;
-
- /* Put the lot together */
- osec->header.sh_size = a_hdr->total_size =
- a_hdr->symbol_off +
- a_hdr->symbols*a_hdr->symbol_size +
- strings_size - strings_left;
- a_hdr = (struct kallsyms_header *) osec->contents =
- xrealloc(a_hdr, a_hdr->total_size);
- p = (char *)a_hdr + a_hdr->symbol_off;
- memcpy(p, symbols, a_hdr->symbols*a_hdr->symbol_size);
- free(symbols);
- p += a_hdr->symbols*a_hdr->symbol_size;
- a_hdr->string_off = p - (char *)a_hdr;
- memcpy(p, strings, strings_size - strings_left);
- free(strings);
-
- *fout_result = fout;
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_load.c b/mdk-stage1/insmod-modutils/obj/obj_load.c
deleted file mode 100644
index 62977acb7..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_load.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/* Elf file reader.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
- obj_free() added by Björn Ekwall <bj0rn@blox.se> March 1999
- Support for kallsyms Keith Owens <kaos@ocs.com.au> April 2000
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <alloca.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "obj.h"
-#include "util.h"
-
-/*======================================================================*/
-
-struct obj_file *
-obj_load (int fp, Elf32_Half e_type, const char *filename)
-{
- struct obj_file *f;
- ElfW(Shdr) *section_headers;
- int shnum, i;
- char *shstrtab;
-
- /* Read the file header. */
-
- f = arch_new_file();
- memset(f, 0, sizeof(*f));
- f->symbol_cmp = strcmp;
- f->symbol_hash = obj_elf_hash;
- f->load_order_search_start = &f->load_order;
-
- gzf_lseek(fp, 0, SEEK_SET);
- if (gzf_read(fp, &f->header, sizeof(f->header)) != sizeof(f->header))
- {
- error("cannot read ELF header from %s", filename);
- return NULL;
- }
-
- if (f->header.e_ident[EI_MAG0] != ELFMAG0
- || f->header.e_ident[EI_MAG1] != ELFMAG1
- || f->header.e_ident[EI_MAG2] != ELFMAG2
- || f->header.e_ident[EI_MAG3] != ELFMAG3)
- {
- error("%s is not an ELF file", filename);
- return NULL;
- }
- if (f->header.e_ident[EI_CLASS] != ELFCLASSM
- || f->header.e_ident[EI_DATA] != ELFDATAM
- || f->header.e_ident[EI_VERSION] != EV_CURRENT
- || !MATCH_MACHINE(f->header.e_machine))
- {
- error("ELF file %s not for this architecture", filename);
- return NULL;
- }
- if (f->header.e_type != e_type && e_type != ET_NONE)
- {
- switch (e_type) {
- case ET_REL:
- error("ELF file %s not a relocatable object", filename);
- break;
- case ET_EXEC:
- error("ELF file %s not an executable object", filename);
- break;
- default:
- error("ELF file %s has wrong type, expecting %d got %d",
- filename, e_type, f->header.e_type);
- break;
- }
- return NULL;
- }
-
- /* Read the section headers. */
-
- if (f->header.e_shentsize != sizeof(ElfW(Shdr)))
- {
- error("section header size mismatch %s: %lu != %lu",
- filename,
- (unsigned long)f->header.e_shentsize,
- (unsigned long)sizeof(ElfW(Shdr)));
- return NULL;
- }
-
- shnum = f->header.e_shnum;
- f->sections = xmalloc(sizeof(struct obj_section *) * shnum);
- memset(f->sections, 0, sizeof(struct obj_section *) * shnum);
-
- section_headers = alloca(sizeof(ElfW(Shdr)) * shnum);
- gzf_lseek(fp, f->header.e_shoff, SEEK_SET);
- if (gzf_read(fp, section_headers, sizeof(ElfW(Shdr))*shnum) != sizeof(ElfW(Shdr))*shnum)
- {
- error("error reading ELF section headers %s: %m", filename);
- return NULL;
- }
-
- /* Read the section data. */
-
- for (i = 0; i < shnum; ++i)
- {
- struct obj_section *sec;
-
- f->sections[i] = sec = arch_new_section();
- memset(sec, 0, sizeof(*sec));
-
- sec->header = section_headers[i];
- sec->idx = i;
-
- switch (sec->header.sh_type)
- {
- case SHT_NULL:
- case SHT_NOTE:
- case SHT_NOBITS:
- /* ignore */
- break;
-
- case SHT_PROGBITS:
- case SHT_SYMTAB:
- case SHT_STRTAB:
- case SHT_RELM:
- if (sec->header.sh_size > 0)
- {
- sec->contents = xmalloc(sec->header.sh_size);
- gzf_lseek(fp, sec->header.sh_offset, SEEK_SET);
- if (gzf_read(fp, sec->contents, sec->header.sh_size) != sec->header.sh_size)
- {
- error("error reading ELF section data %s: %m", filename);
- return NULL;
- }
- }
- else
- sec->contents = NULL;
- break;
-
-#if SHT_RELM == SHT_REL
- case SHT_RELA:
- if (sec->header.sh_size) {
- error("RELA relocations not supported on this architecture %s", filename);
- return NULL;
- }
- break;
-#else
- case SHT_REL:
- if (sec->header.sh_size) {
- error("REL relocations not supported on this architecture %s", filename);
- return NULL;
- }
- break;
-#endif
-
- default:
- if (sec->header.sh_type >= SHT_LOPROC)
- {
- if (arch_load_proc_section(sec, fp) < 0)
- return NULL;
- break;
- }
-
- error("can't handle sections of type %ld %s",
- (long)sec->header.sh_type, filename);
- return NULL;
- }
- }
-
- /* Do what sort of interpretation as needed by each section. */
-
- shstrtab = f->sections[f->header.e_shstrndx]->contents;
-
- for (i = 0; i < shnum; ++i)
- {
- struct obj_section *sec = f->sections[i];
- sec->name = shstrtab + sec->header.sh_name;
- }
-
- for (i = 0; i < shnum; ++i)
- {
- struct obj_section *sec = f->sections[i];
-
- /* .modinfo and .modstring should be contents only but gcc has no
- * attribute for that. The kernel may have marked these sections as
- * ALLOC, ignore the allocate bit.
- */
- if (strcmp(sec->name, ".modinfo") == 0 ||
- strcmp(sec->name, ".modstring") == 0)
- sec->header.sh_flags &= ~SHF_ALLOC;
-
- if (sec->header.sh_flags & SHF_ALLOC)
- obj_insert_section_load_order(f, sec);
-
- switch (sec->header.sh_type)
- {
- case SHT_SYMTAB:
- {
- unsigned long nsym, j;
- char *strtab;
- ElfW(Sym) *sym;
-
- if (sec->header.sh_entsize != sizeof(ElfW(Sym)))
- {
- error("symbol size mismatch %s: %lu != %lu",
- filename,
- (unsigned long)sec->header.sh_entsize,
- (unsigned long)sizeof(ElfW(Sym)));
- return NULL;
- }
-
- nsym = sec->header.sh_size / sizeof(ElfW(Sym));
- strtab = f->sections[sec->header.sh_link]->contents;
- sym = (ElfW(Sym) *) sec->contents;
-
- /* Allocate space for a table of local symbols. */
- j = f->local_symtab_size = sec->header.sh_info;
- f->local_symtab = xmalloc(j *= sizeof(struct obj_symbol *));
- memset(f->local_symtab, 0, j);
-
- /* Insert all symbols into the hash table. */
- for (j = 1, ++sym; j < nsym; ++j, ++sym)
- {
- const char *name;
- if (sym->st_name)
- name = strtab+sym->st_name;
- else
- name = f->sections[sym->st_shndx]->name;
-
- obj_add_symbol(f, name, j, sym->st_info, sym->st_shndx,
- sym->st_value, sym->st_size);
-
- }
- }
- break;
- }
- }
-
- /* second pass to add relocation data to symbols */
- for (i = 0; i < shnum; ++i)
- {
- struct obj_section *sec = f->sections[i];
- switch (sec->header.sh_type)
- {
- case SHT_RELM:
- {
- unsigned long nrel, j, nsyms;
- ElfW(RelM) *rel;
- struct obj_section *symtab;
- char *strtab;
- if (sec->header.sh_entsize != sizeof(ElfW(RelM)))
- {
- error("relocation entry size mismatch %s: %lu != %lu",
- filename,
- (unsigned long)sec->header.sh_entsize,
- (unsigned long)sizeof(ElfW(RelM)));
- return NULL;
- }
-
- nrel = sec->header.sh_size / sizeof(ElfW(RelM));
- rel = (ElfW(RelM) *) sec->contents;
- symtab = f->sections[sec->header.sh_link];
- nsyms = symtab->header.sh_size / symtab->header.sh_entsize;
- strtab = f->sections[symtab->header.sh_link]->contents;
-
- /* Save the relocate type in each symbol entry. */
- for (j = 0; j < nrel; ++j, ++rel)
- {
- struct obj_symbol *intsym;
- unsigned long symndx;
- symndx = ELFW(R_SYM)(rel->r_info);
- if (symndx)
- {
- if (symndx >= nsyms)
- {
- error("%s: Bad symbol index: %08lx >= %08lx",
- filename, symndx, nsyms);
- continue;
- }
-
- obj_find_relsym(intsym, f, f, rel, (ElfW(Sym) *)(symtab->contents), strtab);
- intsym->r_type = ELFW(R_TYPE)(rel->r_info);
- }
- }
- }
- break;
- }
- }
-
- f->filename = xstrdup(filename);
-
- return f;
-}
-
-void obj_free(struct obj_file *f)
-{
- struct obj_section *sec;
- struct obj_symbol *sym;
- struct obj_symbol *next;
- int i;
- int n;
-
- if (f->sections) {
- n = f->header.e_shnum;
- for (i = 0; i < n; ++i) {
- if ((sec = f->sections[i]) != NULL) {
- if (sec->contents)
- free(sec->contents);
- free(sec);
- }
- }
- free(f->sections);
- }
-
- for (i = 0; i < HASH_BUCKETS; ++i) {
- for (sym = f->symtab[i]; sym; sym = next) {
- next = sym->next;
- free(sym);
- }
- }
-
- if (f->local_symtab)
- free(f->local_symtab);
-
- if (f->filename)
- free((char *)(f->filename));
-
- if (f->persist)
- free((char *)(f->persist));
-
- free(f);
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_m68k.c b/mdk-stage1/insmod-modutils/obj/obj_m68k.c
deleted file mode 100644
index abc070bca..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_m68k.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* m68k specific support for Elf loading and relocation.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stddef.h>
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- return xmalloc(sizeof(struct obj_file));
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- return xmalloc(sizeof(struct obj_symbol));
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *ef,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rela *rel,
- Elf32_Addr v)
-{
- char *loc = targsec->contents + rel->r_offset;
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_68K_NONE:
- break;
-
- case R_68K_8:
- if (v > 0xff)
- ret = obj_reloc_overflow;
- *(char *)loc = v;
- break;
- case R_68K_16:
- if (v > 0xffff)
- ret = obj_reloc_overflow;
- *(short *)loc = v;
- break;
- case R_68K_32:
- *(int *)loc = v;
- break;
-
- case R_68K_PC8:
- v -= dot;
- if ((Elf32_Sword)v > 0x7f || (Elf32_Sword)v < -(Elf32_Sword)0x80)
- ret = obj_reloc_overflow;
- *(char *)loc = v;
- break;
- case R_68K_PC16:
- v -= dot;
- if ((Elf32_Sword)v > 0x7fff || (Elf32_Sword)v < -(Elf32_Sword)0x8000)
- ret = obj_reloc_overflow;
- *(short *)loc = v;
- break;
- case R_68K_PC32:
- *(int *)loc = v - dot;
- break;
-
- case R_68K_RELATIVE:
- *(int *)loc += ef->baseaddr;
- break;
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *ef)
-{
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_mips.c b/mdk-stage1/insmod-modutils/obj/obj_mips.c
deleted file mode 100644
index 2db0791b6..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_mips.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* MIPS specific support for Elf loading and relocation.
- Copyright 1997, 1998 Linux International.
- Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct mips_hi16
-{
- struct mips_hi16 *next;
- Elf32_Addr *addr;
- Elf32_Addr value;
-};
-
-struct mips_file
-{
- struct obj_file root;
- struct mips_hi16 *mips_hi16_list;
-};
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- struct mips_file *mf;
-
- mf = xmalloc(sizeof(*mf));
- mf->mips_hi16_list = NULL;
-
- return (struct obj_file *) mf;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- return xmalloc(sizeof(struct obj_symbol));
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- switch (sec->header.sh_type)
- {
- case SHT_MIPS_DEBUG:
- case SHT_MIPS_REGINFO:
- /* Actually these two sections are as useless as something can be ... */
- sec->contents = NULL;
- break;
-
- case SHT_MIPS_LIBLIST:
- case SHT_MIPS_CONFLICT:
- case SHT_MIPS_GPTAB:
- case SHT_MIPS_UCODE:
- case SHT_MIPS_OPTIONS:
- case SHT_MIPS_DWARF:
- case SHT_MIPS_EVENTS:
- /* These shouldn't ever be in a module file. */
- error("Unhandled section header type: %08x", sec->header.sh_type);
-
- default:
- /* We don't even know the type. This time it might as well be a
- supernova. */
- error("Unknown section header type: %08x", sec->header.sh_type);
- return -1;
- }
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rel *rel,
- Elf32_Addr v)
-{
- struct mips_file *mf = (struct mips_file *)f;
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
- enum obj_reloc ret = obj_reloc_ok;
-
- /* _gp_disp is a magic symbol for PIC which is not supported for
- the kernel and loadable modules. */
- if (strcmp(sym->name, "_gp_disp") == 0)
- ret = obj_reloc_unhandled;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_MIPS_NONE:
- break;
-
- case R_MIPS_32:
- *loc += v;
- break;
-
- case R_MIPS_26:
- if (v % 4)
- ret = obj_reloc_dangerous;
- if ((v & 0xf0000000) != ((dot + 4) & 0xf0000000))
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x03ffffff) | ((*loc + (v >> 2)) & 0x03ffffff);
- break;
-
- case R_MIPS_HI16:
- {
- struct mips_hi16 *n;
-
- /* We cannot relocate this one now because we don't know the value
- of the carry we need to add. Save the information, and let LO16
- do the actual relocation. */
- n = (struct mips_hi16 *) xmalloc (sizeof *n);
- n->addr = loc;
- n->value = v;
- n->next = mf->mips_hi16_list;
- mf->mips_hi16_list = n;
- break;
- }
-
- case R_MIPS_LO16:
- {
- unsigned long insnlo = *loc;
- Elf32_Addr val, vallo;
-
- /* Sign extend the addend we extract from the lo insn. */
- vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
-
- if (mf->mips_hi16_list != NULL)
- {
- struct mips_hi16 *l;
-
- l = mf->mips_hi16_list;
- while (l != NULL)
- {
- struct mips_hi16 *next;
- unsigned long insn;
-
- /* The value for the HI16 had best be the same. */
- assert(v == l->value);
-
- /* Do the HI16 relocation. Note that we actually don't
- need to know anything about the LO16 itself, except where
- to find the low 16 bits of the addend needed by the LO16. */
- insn = *l->addr;
- val = ((insn & 0xffff) << 16) + vallo;
- val += v;
-
- /* Account for the sign extension that will happen in the
- low bits. */
- val = ((val >> 16) + ((val & 0x8000) != 0)) & 0xffff;
-
- insn = (insn &~ 0xffff) | val;
- *l->addr = insn;
-
- next = l->next;
- free(l);
- l = next;
- }
-
- mf->mips_hi16_list = NULL;
- }
-
- /* Ok, we're done with the HI16 relocs. Now deal with the LO16. */
- val = v + vallo;
- insnlo = (insnlo & ~0xffff) | (val & 0xffff);
- *loc = insnlo;
- break;
- }
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *f, struct obj_section *archdata_sec)
-{
- struct archdata {
- unsigned tgt_long __start___dbe_table;
- unsigned tgt_long __stop___dbe_table;
- } *ad;
- struct obj_section *sec;
-
- if (archdata_sec->contents)
- free(archdata_sec->contents);
- archdata_sec->header.sh_size = 0;
- sec = obj_find_section(f, "__dbe_table");
- if (sec) {
- ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad));
- memset(ad, 0, sizeof(*ad));
- archdata_sec->header.sh_size = sizeof(*ad);
- ad->__start___dbe_table = sec->header.sh_addr;
- ad->__stop___dbe_table = sec->header.sh_addr + sec->header.sh_size;
- }
-
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_ppc.c b/mdk-stage1/insmod-modutils/obj/obj_ppc.c
deleted file mode 100644
index 4889454f2..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_ppc.c
+++ /dev/null
@@ -1,266 +0,0 @@
-/* PowerPC specific support for Elf loading and relocation.
- Copyright 1996, 1997 Linux International.
-
- Adapted by Paul Mackerras <paulus@cs.anu.edu.au> from the
- obj-sparc.c and obj-alpha.c files.
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stddef.h>
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-#include <assert.h>
-
-
-/*======================================================================*/
-
-/*
- * Unfortunately, the bl (branch-and-link) instruction used for
- * procedure calls on the PowerPC can only reach +/- 32MB from the
- * current instruction. If the module is loaded far enough away from
- * the main kernel text (or other modules) that this limit is
- * exceeded, we have to redirect procedure calls via a procedure
- * linkage table (PLT). Each entry in the PLT contains instructions
- * to put the address of the procedure in a register and jump to it.
- */
-
-typedef unsigned int instruction; /* a powerpc instruction (4 bytes) */
-
-struct ppc_plt_entry
-{
- struct ppc_plt_entry *next;
- ElfW(Addr) addend;
- int offset;
- int inited;
-};
-
-struct ppc_file
-{
- struct obj_file file;
- struct obj_section *plt;
-};
-
-struct ppc_symbol
-{
- struct obj_symbol sym;
- struct ppc_plt_entry *plt_entries;
-};
-
-struct obj_file *
-arch_new_file (void)
-{
- struct ppc_file *f;
-
- f = xmalloc(sizeof(struct ppc_file));
- f->plt = NULL;
- return &f->file;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- struct ppc_symbol *p;
-
- p = xmalloc(sizeof(struct ppc_symbol));
- p->plt_entries = NULL;
- return &p->sym;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *ef,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rela *rel,
- Elf32_Addr v)
-{
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
- struct ppc_file *pf = (struct ppc_file *) ef;
- struct ppc_symbol *psym = (struct ppc_symbol *) sym;
- struct ppc_plt_entry *pe;
- instruction *ip;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_PPC_ADDR16_HA:
- *(unsigned short *)loc = (v + 0x8000) >> 16;
- break;
-
- case R_PPC_ADDR16_HI:
- *(unsigned short *)loc = v >> 16;
- break;
-
- case R_PPC_ADDR16_LO:
- *(unsigned short *)loc = v;
- break;
-
- case R_PPC_REL24:
- /* find the plt entry and initialize it if necessary */
- assert(psym != NULL);
- for (pe = psym->plt_entries; pe != NULL && pe->addend != rel->r_addend; )
- pe = pe->next;
- assert(pe != NULL);
- if (!pe->inited)
- {
- ip = (instruction *) (pf->plt->contents + pe->offset);
- ip[0] = 0x3d600000 + ((v + 0x8000) >> 16); /* lis r11,sym@ha */
- ip[1] = 0x396b0000 + (v & 0xffff); /* addi r11,r11,sym@l */
- ip[2] = 0x7d6903a6; /* mtctr r11 */
- ip[3] = 0x4e800420; /* bctr */
- pe->inited = 1;
- }
-
- v -= dot;
- if ((int)v < -0x02000000 || (int)v >= 0x02000000)
- {
- /* go via the plt */
- v = pf->plt->header.sh_addr + pe->offset - dot;
- }
- if (v & 3)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x03fffffc) | (v & 0x03fffffc);
- break;
-
- case R_PPC_REL32:
- *loc = v - dot;
- break;
-
- case R_PPC_ADDR32:
- *loc = v;
- break;
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- struct ppc_file *pf = (struct ppc_file *) f;
- int i, offset;
- struct obj_section *sec, *syms, *strs;
- ElfW(Rela) *rel, *relend;
- ElfW(Sym) *symtab;
- const char *strtab;
- struct ppc_symbol *intsym;
- struct ppc_plt_entry *pe;
-
- offset = 0;
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- sec = f->sections[i];
- if (sec->header.sh_type != SHT_RELM)
- continue;
- syms = f->sections[sec->header.sh_link];
- strs = f->sections[syms->header.sh_link];
-
- rel = (ElfW(RelM) *) sec->contents;
- relend = rel + (sec->header.sh_size / sizeof(ElfW(RelM)));
- symtab = (ElfW(Sym) *) syms->contents;
- strtab = (const char *) strs->contents;
-
- for (; rel < relend; ++rel)
- {
- if (ELF32_R_TYPE(rel->r_info) != R_PPC_REL24)
- continue;
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
-
- for (pe = intsym->plt_entries; pe != NULL; pe = pe->next)
- if (pe->addend == rel->r_addend)
- break;
- if (pe == NULL)
- {
- pe = xmalloc(sizeof(struct ppc_plt_entry));
- pe->next = intsym->plt_entries;
- pe->addend = rel->r_addend;
- pe->offset = offset;
- pe->inited = 0;
- intsym->plt_entries = pe;
- offset += 16;
- }
- }
- }
-
- pf->plt = obj_create_alloced_section(f, ".plt", 16, offset, SHF_WRITE);
-
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *f, struct obj_section *archdata_sec)
-{
- struct archdata {
- unsigned tgt_long __start___ftr_fixup;
- unsigned tgt_long __stop___ftr_fixup;
- } *ad;
- struct obj_section *sec;
-
- if (archdata_sec->contents)
- free(archdata_sec->contents);
- archdata_sec->header.sh_size = 0;
- sec = obj_find_section(f, "__ftr_fixup");
- if (sec) {
- ad = (struct archdata *) (archdata_sec->contents) = xmalloc(sizeof(*ad));
- memset(ad, 0, sizeof(*ad));
- archdata_sec->header.sh_size = sizeof(*ad);
- ad->__start___ftr_fixup = sec->header.sh_addr;
- ad->__stop___ftr_fixup = sec->header.sh_addr + sec->header.sh_size;
- }
-
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_reloc.c b/mdk-stage1/insmod-modutils/obj/obj_reloc.c
deleted file mode 100644
index 3f2c8aab0..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_reloc.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/* Elf relocation routines.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <assert.h>
-#include <alloca.h>
-
-#include <obj.h>
-#include <util.h>
-
-/*======================================================================*/
-
-int
-obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- const char *string)
-{
- struct obj_string_patch_struct *p;
- struct obj_section *strsec;
- size_t len = strlen(string)+1;
- char *loc;
-
- p = xmalloc(sizeof(*p));
- p->next = f->string_patches;
- p->reloc_secidx = secidx;
- p->reloc_offset = offset;
- f->string_patches = p;
-
- strsec = obj_find_section(f, ".kstrtab");
- if (strsec == NULL)
- {
- strsec = obj_create_alloced_section(f, ".kstrtab", 1, len, 0);
- p->string_offset = 0;
- loc = strsec->contents;
- }
- else
- {
- p->string_offset = strsec->header.sh_size;
- loc = obj_extend_section(strsec, len);
- }
- memcpy(loc, string, len);
-
- return 1;
-}
-
-int
-obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
- struct obj_symbol *sym)
-{
- struct obj_symbol_patch_struct *p;
-
- p = xmalloc(sizeof(*p));
- p->next = f->symbol_patches;
- p->reloc_secidx = secidx;
- p->reloc_offset = offset;
- p->sym = sym;
- f->symbol_patches = p;
-
- return 1;
-}
-
-int
-obj_check_undefineds(struct obj_file *f, int quiet)
-{
- unsigned long i;
- int ret = 1;
-
- for (i = 0; i < HASH_BUCKETS; ++i)
- {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym ; sym = sym->next)
- if (sym->secidx == SHN_UNDEF)
- {
- if (ELFW(ST_BIND)(sym->info) == STB_WEAK)
- {
- sym->secidx = SHN_ABS;
- sym->value = 0;
- }
- else if (sym->r_type) /* assumes R_arch_NONE is 0 on all arch */
- {
- if (!quiet)
- error("unresolved symbol %s", sym->name);
- ret = 0;
- }
- }
- }
-
- return ret;
-}
-
-void
-obj_clear_undefineds(struct obj_file *f)
-{
- unsigned long i;
- struct obj_symbol *sym;
- for (i = 0; i < HASH_BUCKETS; ++i)
- {
- for (sym = f->symtab[i]; sym ; sym = sym->next)
- if (sym->secidx == SHN_UNDEF)
- {
- sym->secidx = SHN_ABS;
- sym->value = 0;
- }
- }
-}
-
-void
-obj_allocate_commons(struct obj_file *f)
-{
- struct common_entry
- {
- struct common_entry *next;
- struct obj_symbol *sym;
- } *common_head = NULL;
-
- unsigned long i;
-
- for (i = 0; i < HASH_BUCKETS; ++i)
- {
- struct obj_symbol *sym;
- for (sym = f->symtab[i]; sym ; sym = sym->next)
- if (sym->secidx == SHN_COMMON)
- {
- /* Collect all COMMON symbols and sort them by size so as to
- minimize space wasted by alignment requirements. */
- {
- struct common_entry **p, *n;
- for (p = &common_head; *p ; p = &(*p)->next)
- if (sym->size <= (*p)->sym->size)
- break;
-
- n = alloca(sizeof(*n));
- n->next = *p;
- n->sym = sym;
- *p = n;
- }
- }
- }
-
- for (i = 1; i < f->local_symtab_size; ++i)
- {
- struct obj_symbol *sym = f->local_symtab[i];
- if (sym && sym->secidx == SHN_COMMON)
- {
- struct common_entry **p, *n;
- for (p = &common_head; *p ; p = &(*p)->next)
- if (sym == (*p)->sym)
- break;
- else if (sym->size < (*p)->sym->size)
- {
- n = alloca(sizeof(*n));
- n->next = *p;
- n->sym = sym;
- *p = n;
- break;
- }
- }
- }
-
- if (common_head)
- {
- /* Find the bss section. */
- for (i = 0; i < f->header.e_shnum; ++i)
- if (f->sections[i]->header.sh_type == SHT_NOBITS)
- break;
-
- /* If for some reason there hadn't been one, create one. */
- if (i == f->header.e_shnum)
- {
- struct obj_section *sec;
-
- f->sections = xrealloc(f->sections, (i+1) * sizeof(sec));
- f->sections[i] = sec = arch_new_section();
- f->header.e_shnum = i+1;
-
- memset(sec, 0, sizeof(*sec));
- sec->header.sh_type = SHT_PROGBITS;
- sec->header.sh_flags = SHF_WRITE|SHF_ALLOC;
- sec->name = ".bss";
- sec->idx = i;
- }
-
- /* Allocate the COMMONS. */
- {
- ElfW(Addr) bss_size = f->sections[i]->header.sh_size;
- ElfW(Addr) max_align = f->sections[i]->header.sh_addralign;
- struct common_entry *c;
-
- for (c = common_head; c ; c = c->next)
- {
- ElfW(Addr) align = c->sym->value;
-
- if (align > max_align)
- max_align = align;
- if (bss_size & (align - 1))
- bss_size = (bss_size | (align - 1)) + 1;
-
- c->sym->secidx = i;
- c->sym->value = bss_size;
-
- bss_size += c->sym->size;
- }
-
- f->sections[i]->header.sh_size = bss_size;
- f->sections[i]->header.sh_addralign = max_align;
- }
- }
-
- /* For the sake of patch relocation and parameter initialization,
- allocate zeroed data for NOBITS sections now. Note that after
- this we cannot assume NOBITS are really empty. */
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- struct obj_section *s = f->sections[i];
- if (s->header.sh_type == SHT_NOBITS)
- {
- if (s->header.sh_size)
- s->contents = memset(xmalloc(s->header.sh_size),
- 0, s->header.sh_size);
- else
- s->contents = NULL;
- s->header.sh_type = SHT_PROGBITS;
- }
- }
-}
-
-unsigned long
-obj_load_size (struct obj_file *f)
-{
- unsigned long dot = 0;
- struct obj_section *sec;
-
- /* Finalize the positions of the sections relative to one another. */
-
- for (sec = f->load_order; sec ; sec = sec->load_next)
- {
- ElfW(Addr) align;
-
- align = sec->header.sh_addralign;
- if (align && (dot & (align - 1)))
- dot = (dot | (align - 1)) + 1;
-
- sec->header.sh_addr = dot;
- dot += sec->header.sh_size;
- }
-
- return dot;
-}
-
-int
-obj_relocate (struct obj_file *f, ElfW(Addr) base)
-{
- int i, n = f->header.e_shnum;
- int ret = 1;
-
- /* Finalize the addresses of the sections. */
-
- arch_finalize_section_address(f, base);
-
- /* And iterate over all of the relocations. */
-
- for (i = 0; i < n; ++i)
- {
- struct obj_section *relsec, *symsec, *targsec, *strsec;
- ElfW(RelM) *rel, *relend;
- ElfW(Sym) *symtab;
- const char *strtab;
- unsigned long nsyms;
-
- relsec = f->sections[i];
- if (relsec->header.sh_type != SHT_RELM)
- continue;
-
- symsec = f->sections[relsec->header.sh_link];
- targsec = f->sections[relsec->header.sh_info];
- strsec = f->sections[symsec->header.sh_link];
-
- if (!(targsec->header.sh_flags & SHF_ALLOC))
- continue;
-
- rel = (ElfW(RelM) *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(ElfW(RelM)));
- symtab = (ElfW(Sym) *)symsec->contents;
- nsyms = symsec->header.sh_size / symsec->header.sh_entsize;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- ElfW(Addr) value = 0;
- struct obj_symbol *intsym = NULL;
- unsigned long symndx;
- const char *errmsg;
-
- /* Attempt to find a value to use for this relocation. */
-
- symndx = ELFW(R_SYM)(rel->r_info);
- if (symndx)
- {
- /* Note we've already checked for undefined symbols. */
-
- if (symndx >= nsyms)
- {
- error("Bad symbol index: %08lx >= %08lx",
- symndx, nsyms);
- continue;
- }
-
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
- value = obj_symbol_final_value(f, intsym);
- }
-
-#if SHT_RELM == SHT_RELA
- value += rel->r_addend;
-#endif
-
- /* Do it! */
- switch (arch_apply_relocation(f,targsec,symsec,intsym,rel,value))
- {
- case obj_reloc_ok:
- break;
-
- case obj_reloc_overflow:
- errmsg = "Relocation overflow";
- goto bad_reloc;
- case obj_reloc_dangerous:
- errmsg = "Dangerous relocation";
- goto bad_reloc;
- case obj_reloc_unhandled:
- errmsg = "Unhandled relocation";
- goto bad_reloc;
- case obj_reloc_constant_gp:
- errmsg = "Modules compiled with -mconstant-gp cannot be loaded";
- goto bad_reloc;
- bad_reloc:
- error("%s of type %ld for %s", errmsg,
- (long)ELFW(R_TYPE)(rel->r_info), intsym->name);
- ret = 0;
- break;
- }
- }
- }
-
- /* Finally, take care of the patches. */
-
- if (f->string_patches)
- {
- struct obj_string_patch_struct *p;
- struct obj_section *strsec;
- ElfW(Addr) strsec_base;
- strsec = obj_find_section(f, ".kstrtab");
- strsec_base = strsec->header.sh_addr;
-
- for (p = f->string_patches; p ; p = p->next)
- {
- struct obj_section *targsec = f->sections[p->reloc_secidx];
- *(ElfW(Addr) *)(targsec->contents + p->reloc_offset)
- = strsec_base + p->string_offset;
- }
- }
-
- if (f->symbol_patches)
- {
- struct obj_symbol_patch_struct *p;
-
- for (p = f->symbol_patches; p; p = p->next)
- {
- struct obj_section *targsec = f->sections[p->reloc_secidx];
- *(ElfW(Addr) *)(targsec->contents + p->reloc_offset)
- = obj_symbol_final_value(f, p->sym);
- }
- }
-
- return ret;
-}
-
-int
-obj_create_image (struct obj_file *f, char *image)
-{
- struct obj_section *sec;
- ElfW(Addr) base = f->baseaddr;
-
- for (sec = f->load_order; sec ; sec = sec->load_next)
- {
- char *secimg;
-
- if (sec->contents == 0)
- continue;
-
- secimg = image + (sec->header.sh_addr - base);
-
- /* Note that we allocated data for NOBITS sections earlier. */
- memcpy(secimg, sec->contents, sec->header.sh_size);
- }
-
- return 1;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_s390.c b/mdk-stage1/insmod-modutils/obj/obj_s390.c
deleted file mode 100644
index a76e28479..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_s390.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/* IBM S/390 31-bit specific support for Elf loading and relocation.
- Copyright 2000, 2001 IBM Deutschland Entwicklung GmbH, IBM Corporation.
-
- Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- Derived from obj/obj_i386.c:
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <string.h>
-#include <assert.h>
-
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct s390_plt_entry
-{
- long offset;
- int allocated:1;
- int initialized:1;
-};
-
-struct s390_got_entry
-{
- long offset;
- unsigned allocated:1;
- unsigned reloc_done : 1;
-};
-
-struct s390_file
-{
- struct obj_file root;
- struct obj_section *plt;
- struct obj_section *got;
-};
-
-struct s390_symbol
-{
- struct obj_symbol root;
- struct s390_plt_entry pltent;
- struct s390_got_entry gotent;
-};
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- struct s390_file *f;
- f = xmalloc(sizeof(*f));
- f->got = NULL;
- f->plt = NULL;
- return &f->root;
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- struct s390_symbol *sym;
- sym = xmalloc(sizeof(*sym));
- memset(&sym->gotent, 0, sizeof(sym->gotent));
- memset(&sym->pltent, 0, sizeof(sym->pltent));
- return &sym->root;
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *f,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rela *rel,
- Elf32_Addr v)
-{
- struct s390_file *ifile = (struct s390_file *) f;
- struct s390_symbol *isym = (struct s390_symbol *) sym;
- struct s390_plt_entry *pe;
-
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
- Elf32_Addr got = ifile->got ? ifile->got->header.sh_addr : 0;
- Elf32_Addr plt = ifile->plt ? ifile->plt->header.sh_addr : 0;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_390_NONE:
- break;
-
- case R_390_32:
- *(unsigned int *) loc += v;
- break;
- case R_390_16:
- *(unsigned short *) loc += v;
- break;
- case R_390_8:
- *(unsigned char *) loc += v;
- break;
-
- case R_390_PC32:
- *(unsigned int *) loc += v - dot;
- break;
- case R_390_PC16DBL:
- *(unsigned short *) loc += (v - dot) >> 1;
- break;
- case R_390_PC16:
- *(unsigned short *) loc += v - dot;
- break;
-
- case R_390_PLT32:
- case R_390_PLT16DBL:
- /* find the plt entry and initialize it. */
- assert(isym != NULL);
- pe = (struct s390_plt_entry *) &isym->pltent;
- assert(pe->allocated);
- if (pe->initialized == 0) {
- unsigned int *ip = (unsigned int *)(ifile->plt->contents + pe->offset);
- ip[0] = 0x0d105810; /* basr 1,0; lg 1,10(1); br 1 */
- ip[1] = 0x100607f1;
- if (ELF32_R_TYPE(rel->r_info) == R_390_PLT16DBL)
- ip[2] = v - 2;
- else
- ip[2] = v;
- pe->initialized = 1;
- }
-
- /* Insert relative distance to target. */
- v = plt + pe->offset - dot;
- if (ELF32_R_TYPE(rel->r_info) == R_390_PLT32)
- *(unsigned int *) loc = (unsigned int) v;
- else if (ELF32_R_TYPE(rel->r_info) == R_390_PLT16DBL)
- *(unsigned short *) loc = (unsigned short) ((v + 2) >> 1);
- break;
-
- case R_390_GLOB_DAT:
- case R_390_JMP_SLOT:
- *loc = v;
- break;
-
- case R_390_RELATIVE:
- *loc += f->baseaddr;
- break;
-
- case R_390_GOTPC:
- assert(got != 0);
- *(unsigned long *) loc += got - dot;
- break;
-
- case R_390_GOT12:
- case R_390_GOT16:
- case R_390_GOT32:
- assert(isym != NULL);
- assert(got != 0);
- if (!isym->gotent.reloc_done)
- {
- isym->gotent.reloc_done = 1;
- *(Elf32_Addr *)(ifile->got->contents + isym->gotent.offset) = v;
- }
- if (ELF32_R_TYPE(rel->r_info) == R_390_GOT12)
- *(unsigned short *) loc |= (*(unsigned short *) loc + isym->gotent.offset) & 0xfff;
- else if (ELF32_R_TYPE(rel->r_info) == R_390_GOT16)
- *(unsigned short *) loc += isym->gotent.offset;
- else if (ELF32_R_TYPE(rel->r_info) == R_390_GOT32)
- *(unsigned int *) loc += isym->gotent.offset;
- break;
-
- case R_390_GOTOFF:
- assert(got != 0);
- *loc += v - got;
- break;
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *f)
-{
- struct s390_file *ifile = (struct s390_file *) f;
- int i, got_offset = 0, plt_offset = 0, gotneeded = 0;
-
- for (i = 0; i < f->header.e_shnum; ++i)
- {
- struct obj_section *relsec, *symsec, *strsec;
- Elf32_Rela *rel, *relend;
- Elf32_Sym *symtab;
- const char *strtab;
-
- relsec = f->sections[i];
- if (relsec->header.sh_type != SHT_RELA)
- continue;
-
- symsec = f->sections[relsec->header.sh_link];
- strsec = f->sections[symsec->header.sh_link];
-
- rel = (Elf32_Rela *)relsec->contents;
- relend = rel + (relsec->header.sh_size / sizeof(Elf32_Rela));
- symtab = (Elf32_Sym *)symsec->contents;
- strtab = (const char *)strsec->contents;
-
- for (; rel < relend; ++rel)
- {
- struct s390_symbol *intsym;
- struct s390_plt_entry *pe;
- struct s390_got_entry *ge;
-
- switch (ELF32_R_TYPE(rel->r_info)) {
- /* These four relocations refer to a plt entry. */
- case R_390_PLT16DBL:
- case R_390_PLT32:
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
- assert(intsym);
- pe = &intsym->pltent;
- if (!pe->allocated) {
- pe->allocated = 1;
- pe->offset = plt_offset;
- plt_offset += 12;
- }
- break;
- /* The next three don't need got entries but the address
- of the got itself. */
- case R_390_GOTPC:
- case R_390_GOTOFF:
- gotneeded = 1;
- break;
-
- case R_390_GOT12:
- case R_390_GOT16:
- case R_390_GOT32:
- obj_find_relsym(intsym, f, f, rel, symtab, strtab);
- assert(intsym);
- ge = (struct s390_got_entry *) &intsym->gotent;
- if (!ge->allocated) {
- ge->allocated = 1;
- ge->offset = got_offset;
- got_offset += sizeof(void*);
- }
- break;
-
- default:
- break;
- }
- }
- }
-
- if (got_offset > 0 || gotneeded) {
- struct obj_section *gotsec;
- struct obj_symbol *gotsym;
-
- gotsec = obj_find_section(f, ".got");
- if (gotsec == NULL)
- gotsec = obj_create_alloced_section(f, ".got", 4, got_offset, SHF_WRITE);
- else
- obj_extend_section(gotsec, got_offset);
- gotsym = obj_add_symbol(f, "_GLOBAL_OFFSET_TABLE_", -1,
- ELFW(ST_INFO) (STB_LOCAL, STT_OBJECT),
- gotsec->idx, 0, 0);
- gotsym->secidx = gotsec->idx; /* mark the symbol as defined */
- ifile->got = gotsec;
- }
-
- if (plt_offset > 0)
- ifile->plt = obj_create_alloced_section(f, ".plt", 4, plt_offset,
- SHF_WRITE);
-
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
-
diff --git a/mdk-stage1/insmod-modutils/obj/obj_sparc.c b/mdk-stage1/insmod-modutils/obj/obj_sparc.c
deleted file mode 100644
index d1eb3da44..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_sparc.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/* Sparc specific support for Elf loading and relocation.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stddef.h>
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- return xmalloc(sizeof(struct obj_file));
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- return xmalloc(sizeof(struct obj_symbol));
-}
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *ef,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf32_Rela *rel,
- Elf32_Addr v)
-{
- Elf32_Addr *loc = (Elf32_Addr *)(targsec->contents + rel->r_offset);
- Elf32_Addr dot = targsec->header.sh_addr + rel->r_offset;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF32_R_TYPE(rel->r_info))
- {
- case R_SPARC_NONE:
- break;
- case R_SPARC_8:
- if (v > 0xff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xff) | (v & 0xff);
- break;
- case R_SPARC_16:
- if (v > 0xffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xffff) | (v & 0xffff);
- break;
- case R_SPARC_32:
- *loc = v;
- break;
- case R_SPARC_DISP8:
- v -= dot;
- if (v > 0xff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xff) | (v & 0xff);
- break;
- case R_SPARC_DISP16:
- v -= dot;
- if (v > 0xffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xffff) | (v & 0xffff);
- break;
- case R_SPARC_DISP32:
- v -= dot;
- *loc = v;
- break;
- case R_SPARC_WDISP30:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x3fffffff) | (v >> 2);
- break;
- case R_SPARC_WDISP22:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x3fffff) | ((v >> 2) & 0x3fffff);
- break;
- case R_SPARC_HI22:
- *loc = (*loc & ~0x3fffff) | (v >> 10);
- break;
- case R_SPARC_22:
- if (v > 0x3fffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3fffff) | (v & 0x3fffff);
- break;
- case R_SPARC_13:
- if (v > 0x1fff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x1fff) | (v & 0x1fff);
- break;
- case R_SPARC_LO10:
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
-
- case R_SPARC_PC10:
- v -= dot;
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
- case R_SPARC_PC22:
- v -= dot;
- *loc = (*loc & ~0x3fffff) | (v >> 10);
- break;
-
- case R_SPARC_UA32:
- *(((char *)loc) + 0) = (char)(v >> 24);
- *(((char *)loc) + 1) = (char)(v >> 16);
- *(((char *)loc) + 2) = (char)(v >> 8);
- *(((char *)loc) + 3) = (char)v;
- break;
-
-#ifdef R_SPARC_10
- case R_SPARC_10:
- if (v > 0x3ff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
- case R_SPARC_11:
- if (v > 0x7ff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x7ff) | (v & 0x7ff);
- break;
- case R_SPARC_WDISP16:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x303fff) | ((v << 4) & 0x300000) | ((v >> 2) & 0x3fff);
- break;
- case R_SPARC_WDISP19:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x7ffff) | ((v >> 2) & 0x7ffff);
- break;
- case R_SPARC_7:
- if (v > 0x7f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x7f) | (v & 0x7f);
- break;
- case R_SPARC_5:
- if (v > 0x1f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x1f) | (v & 0x1f);
- break;
- case R_SPARC_6:
- if (v > 0x3f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3f) | (v & 0x3f);
- break;
-#endif /* R_SPARC_10 */
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *ef)
-{
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf32_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/obj/obj_sparc64.c b/mdk-stage1/insmod-modutils/obj/obj_sparc64.c
deleted file mode 100644
index f025667f8..000000000
--- a/mdk-stage1/insmod-modutils/obj/obj_sparc64.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/* Sparc64 specific support for Elf loading and relocation.
- Copyright 1997 Linux International.
-
- Contributed by Jakub Jelinek <jj@sunsite.mff.cuni.cz>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stddef.h>
-#include <module.h>
-#include <obj.h>
-#include <util.h>
-
-
-/*======================================================================*/
-
-struct obj_file *
-arch_new_file (void)
-{
- return xmalloc(sizeof(struct obj_file));
-}
-
-struct obj_section *
-arch_new_section (void)
-{
- return xmalloc(sizeof(struct obj_section));
-}
-
-struct obj_symbol *
-arch_new_symbol (void)
-{
- return xmalloc(sizeof(struct obj_symbol));
-}
-
-#ifdef BROKEN_SPARC64_RELOCS
-
-#undef R_SPARC_PLT32
-#undef R_SPARC_HIPLT22
-#undef R_SPARC_LOPLT10
-#undef R_SPARC_PCPLT32
-#undef R_SPARC_PCPLT22
-#undef R_SPARC_PCPLT10
-#undef R_SPARC_10
-#undef R_SPARC_11
-#undef R_SPARC_64
-#undef R_SPARC_OLO10
-#undef R_SPARC_HH22
-#undef R_SPARC_HM10
-#undef R_SPARC_LM22
-#undef R_SPARC_PC_HH22
-#undef R_SPARC_PC_HM10
-#undef R_SPARC_PC_LM22
-#undef R_SPARC_WDISP16
-#undef R_SPARC_WDISP19
-#undef R_SPARC_GLOB_JMP
-#undef R_SPARC_7
-#undef R_SPARC_5
-#undef R_SPARC_6
-
-#define R_SPARC_10 24
-#define R_SPARC_11 25
-#define R_SPARC_64 26
-#define R_SPARC_OLO10 27
-#define R_SPARC_HH22 28
-#define R_SPARC_HM10 29
-#define R_SPARC_LM22 30
-#define R_SPARC_PC_HH22 31
-#define R_SPARC_PC_HM10 32
-#define R_SPARC_PC_LM22 33
-#define R_SPARC_WDISP16 34
-#define R_SPARC_WDISP19 35
-#define R_SPARC_GLOB_JMP 36
-#define R_SPARC_7 37
-#define R_SPARC_5 38
-#define R_SPARC_6 39
-
-#else
-
-#ifndef R_SPARC_64
-
-#define R_SPARC_64 32
-#define R_SPARC_OLO10 33
-#define R_SPARC_HH22 34
-#define R_SPARC_HM10 35
-#define R_SPARC_LM22 36
-#define R_SPARC_PC_HH22 37
-#define R_SPARC_PC_HM10 38
-#define R_SPARC_PC_LM22 39
-
-#endif
-
-#endif
-
-int
-arch_load_proc_section(struct obj_section *sec, int fp)
-{
- /* Assume it's just a debugging section that we can safely
- ignore ... */
- sec->contents = NULL;
-
- return 0;
-}
-
-#define ELF64_R_TYPE_ID(info) ((info) & 0xff)
-#define ELF64_R_TYPE_DATA(info) ((info) >> 8)
-
-enum obj_reloc
-arch_apply_relocation (struct obj_file *ef,
- struct obj_section *targsec,
- struct obj_section *symsec,
- struct obj_symbol *sym,
- Elf64_Rela *rel,
- Elf64_Addr v)
-{
- unsigned int *loc = (unsigned int *)(targsec->contents + rel->r_offset);
- unsigned int dot = targsec->header.sh_addr + rel->r_offset;
-
- enum obj_reloc ret = obj_reloc_ok;
-
- switch (ELF64_R_TYPE_ID(rel->r_info))
- {
- case R_SPARC_NONE:
- break;
-
- case R_SPARC_64:
- case R_SPARC_UA64:
- if (! ((long) loc & 3)) {
- /* Common in .eh_frame */
- ((unsigned int *) loc) [0] = v >> 32;
- ((unsigned int *) loc) [1] = v;
- break;
- }
- ((unsigned char *) loc) [0] = v >> 56;
- ((unsigned char *) loc) [1] = v >> 48;
- ((unsigned char *) loc) [2] = v >> 40;
- ((unsigned char *) loc) [3] = v >> 32;
- ((unsigned char *) loc) [4] = v >> 24;
- ((unsigned char *) loc) [5] = v >> 16;
- ((unsigned char *) loc) [6] = v >> 8;
- ((unsigned char *) loc) [7] = v;
- break;
- case R_SPARC_32:
- case R_SPARC_UA32:
- if (! ((long) loc & 3)) {
- *loc = v;
- break;
- }
- ((unsigned char *) loc) [0] = v >> 24;
- ((unsigned char *) loc) [1] = v >> 16;
- ((unsigned char *) loc) [2] = v >> 8;
- ((unsigned char *) loc) [3] = v;
- break;
- case R_SPARC_16:
- if (v > 0xffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xffff) | (v & 0xffff);
- break;
- case R_SPARC_8:
- if (v > 0xff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xff) | (v & 0xff);
- break;
-
- case R_SPARC_DISP32:
- v -= dot;
- *loc = v;
- break;
- case R_SPARC_DISP16:
- v -= dot;
- if (v > 0xffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xffff) | (v & 0xffff);
- break;
- case R_SPARC_DISP8:
- v -= dot;
- if (v > 0xff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0xff) | (v & 0xff);
- break;
- case R_SPARC_WDISP30:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x3fffffff) | ((v >> 2) & 0x3fffffff);
- break;
-
- /* MEDLOW code model relocs */
- case R_SPARC_LO10:
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
- case R_SPARC_HI22:
- *loc = (*loc & ~0x3fffff) | (v >> 10);
- break;
- case R_SPARC_OLO10:
- *loc = (*loc & ~0x1fff) | (((v & 0x3ff) + ELF64_R_TYPE_DATA (rel->r_info)) & 0x1fff);
- break;
-
- /* MEDMID code model relocs */
- case R_SPARC_H44:
- *loc = (*loc & ~0x3fffff) | (v >> 22);
- break;
- case R_SPARC_M44:
- *loc = (*loc & ~0x3ff) | ((v >> 12) & 0x3ff);
- break;
- case R_SPARC_L44:
- *loc = (*loc & ~0xfff) | (v & 0xfff);
- break;
-
- /* MEDANY code model relocs */
- case R_SPARC_HH22:
- *loc = (*loc & ~0x3fffff) | (v >> 42);
- break;
- case R_SPARC_HM10:
- *loc = (*loc & ~0x3ff) | ((v >> 32) & 0x3ff);
- break;
- case R_SPARC_LM22:
- *loc = (*loc & ~0x3fffff) | ((v >> 10) & 0x3fffff);
- break;
-
- case R_SPARC_WDISP22:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x3fffff) | ((v >> 2) & 0x3fffff);
- break;
- case R_SPARC_22:
- if (v > 0x3fffff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3fffff) | (v & 0x3fffff);
- break;
- case R_SPARC_13:
- if (v > 0x1fff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x1fff) | (v & 0x1fff);
- break;
-
- case R_SPARC_PC10:
- v -= dot;
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
- case R_SPARC_PC22:
- v -= dot;
- *loc = (*loc & ~0x3fffff) | ((v >> 10) & 0x3fffff);
- break;
-
-#ifdef R_SPARC_10
- case R_SPARC_10:
- if (v > 0x3ff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3ff) | (v & 0x3ff);
- break;
- case R_SPARC_11:
- if (v > 0x7ff)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x7ff) | (v & 0x7ff);
- break;
-
-#ifdef R_SPARC_64
- case R_SPARC_PC_HH22:
- v -= dot;
- *loc = (*loc & ~0x3fffff) | (v >> 42);
- break;
- case R_SPARC_PC_HM10:
- v -= dot;
- *loc = (*loc & ~0x3ff) | ((v >> 32) & 0x3ff);
- break;
- case R_SPARC_PC_LM22:
- v -= dot;
- *loc = (*loc & ~0x3fffff) | ((v >> 10) & 0x3fffff);
- break;
-#endif
-
- case R_SPARC_WDISP16:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x303fff) | ((v << 4) & 0x300000) | ((v >> 2) & 0x3fff);
- break;
- case R_SPARC_WDISP19:
- v -= dot;
- if (v % 4)
- ret = obj_reloc_dangerous;
- *loc = (*loc & ~0x7ffff) | ((v >> 2) & 0x7ffff);
- break;
- case R_SPARC_7:
- if (v > 0x7f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x7f) | (v & 0x7f);
- break;
- case R_SPARC_5:
- if (v > 0x1f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x1f) | (v & 0x1f);
- break;
- case R_SPARC_6:
- if (v > 0x3f)
- ret = obj_reloc_overflow;
- *loc = (*loc & ~0x3f) | (v & 0x3f);
- break;
-#endif /* R_SPARC_10 */
-
- default:
- ret = obj_reloc_unhandled;
- break;
- }
-
- return ret;
-}
-
-int
-arch_create_got (struct obj_file *ef)
-{
- return 1;
-}
-
-int
-arch_init_module (struct obj_file *f, struct module *mod)
-{
- return 1;
-}
-
-int
-arch_finalize_section_address(struct obj_file *f, Elf64_Addr base)
-{
- int i, n = f->header.e_shnum;
-
- f->baseaddr = base;
- for (i = 0; i < n; ++i)
- f->sections[i]->header.sh_addr += base;
- return 1;
-}
-
-int
-arch_archdata (struct obj_file *fin, struct obj_section *sec)
-{
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/util/Makefile b/mdk-stage1/insmod-modutils/util/Makefile
deleted file mode 100644
index dd8107435..000000000
--- a/mdk-stage1/insmod-modutils/util/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
- #******************************************************************************
- #
- # insmod from modutils (generic)
- #
- # $Id$
- #
- # Copyright 1996, 1997 Linux International.
- #
- #*****************************************************************************
-
-top_dir = ../..
-
-include $(top_dir)/Makefile.common
-
-
-all: libutil.a libutil-STANDALONE.a
-
-clean:
- rm -f *.o *.a
-
-
-INCS = -I./../include
-
-DEFS = -Wno-error -D_GNU_SOURCE -DELF_MACHINE_H='"elf_$(ARCH).h"' -DARCH_$(ARCH) -DHAVE_WORDEXP=1 -DHAVE_GLOB=1 -DCONFIG_ROOT_CHECK_OFF=0
-
-
-OBJS = xmalloc.o xrealloc.o xstrcat.o xstrdup.o xsystem.o xftw.o \
- modstat.o meta_expand.o config.o snap_shot.o arch64.o gzfiles.o sys_nim.o sys_oim.o
-
-libutil.a: $(OBJS) logger.o
- ar cru $@ $^
- ranlib $@
-
-libutil-STANDALONE.a: $(OBJS) logger-standalone.o
- ar cru $@ $^
- ranlib $@
-
-logger-standalone.o: logger.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -o $@ -D_STANDALONE_ -c logger.c
-
-%.o: %.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $<
diff --git a/mdk-stage1/insmod-modutils/util/alias.h b/mdk-stage1/insmod-modutils/util/alias.h
deleted file mode 100644
index 7d0c08938..000000000
--- a/mdk-stage1/insmod-modutils/util/alias.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * This file is split out from config.c for easier editing
- */
-
-/*
- * tbpath and tbtype are used to build the complete set of paths for finding
- * modules, but only when we search for individual directories, they are not
- * used for [boot] and [toplevel] searches.
- */
-static char *tbpath[] =
-{
- "/lib/modules",
- NULL /* marks the end of the list! */
-};
-
-char *tbtype[] =
-{
- "kernel", /* as of 2.3.14 this must be first */
- "fs",
- "net",
- "scsi",
- "block",
- "cdrom",
- "ipv4",
- "ipv6",
- "sound",
- "fc4",
- "video",
- "misc",
- "pcmcia",
- "atm",
- "usb",
- "ide",
- "ieee1394",
- "mtd",
- NULL /* marks the end of the list! */
-};
-
-/*
- * This is the list of pre-defined aliases.
- * Each entry can be overridden by an entry in /etc/modules.conf
- */
-char *aliaslist[] =
-{
- "binfmt-0000 off",
- "binfmt-204 binfmt_aout",
- "binfmt-263 binfmt_aout",
- "binfmt-264 binfmt_aout",
- "binfmt-267 binfmt_aout",
- "binfmt-387 binfmt_aout",
- "binfmt-332 iBCS",
- "binfmt--310 binfmt_java",
-
- "block-major-1 rd",
- "block-major-2 floppy",
- "block-major-3 ide-probe-mod",
- "block-major-7 loop",
- "block-major-8 sd_mod",
- "block-major-9 md", /* For modular RAID */
- "block-major-11 sr_mod",
- "block-major-13 xd",
- "block-major-15 cdu31a",
- "block-major-16 gscd",
- "block-major-17 optcd",
- "block-major-18 sjcd",
- "block-major-20 mcdx",
- "block-major-22 ide-probe-mod",
- "block-major-23 mcd",
- "block-major-24 sonycd535",
- "block-major-25 sbpcd",
- "block-major-26 sbpcd",
- "block-major-27 sbpcd",
- "block-major-29 aztcd",
- "block-major-32 cm206",
- "block-major-33 ide-probe-mod",
- "block-major-34 ide-probe-mod",
- "block-major-37 ide-tape",
- "block-major-44 ftl", /* from David Woodhouse <dwmw2@infradead.org> */
- "block-major-46 pcd",
- "block-major-47 pf",
- "block-major-56 ide-probe-mod",
- "block-major-57 ide-probe-mod",
- "block-major-58 lvm-mod",
- "block-major-88 ide-probe-mod",
- "block-major-89 ide-probe-mod",
- "block-major-90 ide-probe-mod",
- "block-major-91 ide-probe-mod",
- "block-major-93 nftl", /* from David Woodhouse <dwmw2@infradead.org> */
- "block-major-97 pg",
-
-#if !defined(__s390__) && !defined(__s390x__)
- "char-major-4 serial",
-#else
- "char-major-4 off",
-#endif
- "char-major-5 serial",
- "char-major-6 lp",
- "char-major-9 st",
- "char-major-10 off", /* was: mouse, was: misc */
- "char-major-10-0 busmouse", /* /dev/logibm Logitech bus mouse */
- "char-major-10-1 off", /* /dev/psaux PS/2-style mouse port */
- "char-major-10-2 msbusmouse", /* /dev/inportbm Microsoft Inport bus mouse */
- "char-major-10-3 atixlmouse", /* /dev/atibm ATI XL bus mouse */
- /* /dev/jbm J-mouse */
- /* /dev/amigamouse Amiga mouse (68k/Amiga) */
- /* /dev/atarimouse Atari mouse */
- /* /dev/sunmouse Sun mouse */
- /* /dev/beep Fancy beep device */
- /* /dev/modreq Kernel module load request */
- "char-major-10-130 wdt", /* /dev/watchdog Watchdog timer port */
- "char-major-10-131 wdt", /* /dev/temperature Machine internal temperature */
- /* /dev/hwtrap Hardware fault trap */
- /* /dev/exttrp External device trap */
- "char-major-10-135 rtc", /* /dev/rtc Real time clock */
- "char-major-10-139 openprom", /* /dev/openprom Linux/Sparc interface */
- "char-major-10-144 nvram", /* from Tigran Aivazian <tigran@sco.COM> */
- "char-major-10-157 applicom", /* from David Woodhouse <dwmw2@infradead.org> */
- "char-major-10-175 agpgart", /* /dev/agpgart GART AGP mapping access */
- "char-major-10-184 microcode", /* Tigran Aivazian <tigran@veritas.com> */
-
- "char-major-13 input",
- "char-major-13-32 mousedev",
- "char-major-14 soundcore",
- "char-major-19 cyclades",
- "char-major-20 cyclades",
- "char-major-21 sg",
- "char-major-22 pcxx", /* ?? */
- "char-major-23 pcxx", /* ?? */
- "char-major-27 ftape",
- "char-major-34 scc",
- "char-major-35 tclmidi",
- "char-major-36 netlink",
- "char-major-37 ide-tape",
- "char-major-48 riscom8",
- "char-major-49 riscom8",
- "char-major-57 esp",
- "char-major-58 esp",
- "char-major-63 kdebug",
- "char-major-90 mtdchar", /* from David Woodhouse <dwmw2@infradead.org> */
- "char-major-96 pt",
- "char-major-99 ppdev",
- "char-major-107 3dfx", /* from Tigran Aivazian <tigran@sco.COM> */
- "char-major-108 ppp_generic",
- "char-major-109 lvm-mod",
- "char-major-161 ircomm-tty",
- "char-major-171 raw1394",
- "char-major-195 NVdriver",
- "char-major-200 vxspec",
-
- "dos msdos",
- "dummy0 dummy",
- "dummy1 dummy",
- "eth0 off",
- "iso9660 isofs",
- "md-personality-1 linear",
- "md-personality-2 raid0",
- "md-personality-3 raid1",
- "md-personality-4 raid5",
- "md-personality-7 multipath",
-
- "net-pf-1 unix", /* PF_UNIX 1 Unix domain sockets */
- "net-pf-2 ipv4", /* PF_INET 2 Internet IP Protocol */
- "net-pf-3 off", /* PF_AX25 3 Amateur Radio AX.25 */
- "net-pf-4 ipx", /* PF_IPX 4 Novell IPX */
- "net-pf-5 appletalk", /* PF_APPLETALK 5 Appletalk DDP */
- "net-pf-6 off", /* PF_NETROM 6 Amateur radio NetROM */
- /* PF_BRIDGE 7 Multiprotocol bridge */
- /* PF_AAL5 8 Reserved for Werner's ATM */
- /* PF_X25 9 Reserved for X.25 project */
- "net-pf-10 off", /* PF_INET6 10 IP version 6 */
-
- /* next two from <dairiki@matthews.dairiki.org> Thanks! */
- "net-pf-17 af_packet",
- "net-pf-19 off", /* acorn econet */
-
- "netalias-2 ip_alias",
-
- /* To be able to attach some dongles */
- "irlan0 irlan",
- "irda-dongle-0 tekram",
- "irda-dongle-1 esi",
- "irda-dongle-2 actisys",
- "irda-dongle-3 actisys",
- "irda-dongle-4 girbil",
- "irda-dongle-5 litelink",
- "irda-dongle-6 airport",
- "irda-dongle-7 old_belkin",
-
- "plip0 plip",
- "plip1 plip",
- "tunl0 ipip",
- "cipcb0 cipcb",
- "cipcb1 cipcb",
- "cipcb2 cipcb",
- "cipcb3 cipcb",
-#if defined(__s390__) || defined(__s390x__)
- "ctc0 ctc",
- "ctc1 ctc",
- "ctc2 ctc",
- "iucv0 netiucv",
- "iucv1 netiucv",
-#endif
- "ppp0 ppp",
- "ppp1 ppp",
- "slip0 slip",
- "slip1 slip",
- "tty-ldisc-1 slip",
- "tty-ldisc-3 ppp_async",
- "tty-ldisc-11 irtty", /* IrDA over a normal serial port, or a serial port compatible IrDA port */
- "tty-ldisc-14 ppp_synctty",
- "ppp-compress-18 ppp_mppe",
- "ppp-compress-21 bsd_comp",
- "ppp-compress-24 ppp_deflate",
- "ppp-compress-26 ppp_deflate",
- "ppp ppp_async", /* for 2.4 */
-
-#ifndef __sparc__
- "parport_lowlevel parport_pc",
-#else
- "parport_lowlevel parport_ax",
-#endif
-
- "usbdevfs usbcore",
-
- NULL /* marks the end of the list! */
-};
-
-/*
- * This is the list of pre-defined options.
- * Each entry can be overridden by an entry in /etc/modules.conf
- */
-char *optlist[] =
-{
- "dummy0 -o dummy0",
- "dummy1 -o dummy1",
- "sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330",
- NULL /* marks the end of the list! */
-};
-
-/*
- * This is the list of pre-defined "above"s,
- * used for pull-in of additional modules
- * Each entry can be overridden by an entry in /etc/modules.conf
- */
-char *above[] =
-{
- "hid keybdev mousedev",
- "usbmouse hid",
- "wacom evdev",
- NULL /* marks the end of the list! */
-};
-
-/*
- * This is the list of pre-defined "below"s,
- * used for push-in of additional modules
- * Each entry can be overridden by an entry in /etc/modules.conf
- */
-char *below[] =
-{
- NULL /* marks the end of the list! */
-};
-
-/*
- * This is the list of pre-defined "post-install"s,
- * used to execute commands after loading modules.
- * /etc/modules.conf can add entries but not remove them.
- */
-char *post_install[] =
-{
- "binfmt_misc /bin/mount -t binfmt_misc none /proc/sys/fs/binfmt_misc > /dev/null 2>&1 || :",
- NULL
-};
-
-/*
- * This is the list of pre-defined "pre-remove"s,
- * used to execute commands before unloading modules.
- * /etc/modules.conf can add entries but not remove them.
- */
-char *pre_remove[] =
-{
- "binfmt_misc /bin/umount /proc/sys/fs/binfmt_misc > /dev/null 2>&1 || :",
- NULL
-};
-
-/*
- * This is the list of pre-defined "prune"s,
- * used to exclude paths from scan of /lib/modules.
- * /etc/modules.conf can add entries but not remove them.
- */
-char *prune[] =
-{
- "modules.dep",
- "modules.description",
- "modules.generic_string",
- "modules.pcimap",
- "modules.isapnpmap",
- "modules.usbmap",
- "modules.parportmap",
- "modules.ieee1394map",
- "modules.pnpbiosmap",
- "System.map",
- ".config",
- "build", /* symlink to source tree */
- "vmlinux",
- "vmlinuz",
- "bzImage",
- "zImage",
- ".rhkmvtag", /* wish RedHat had told me before they did this */
- NULL /* marks the end of the list! */
-};
diff --git a/mdk-stage1/insmod-modutils/util/arch64.c b/mdk-stage1/insmod-modutils/util/arch64.c
deleted file mode 100644
index 90886d16b..000000000
--- a/mdk-stage1/insmod-modutils/util/arch64.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Misc utility functions.
- Copyright 1996, 1997 Linux International.
- Written by Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/utsname.h>
-#include "util.h"
-
-/*======================================================================*/
-
-/* Indicate if the current machine uses 64 bit architecture */
-int arch64(void)
-{
- struct utsname uts;
- char *uname_m;
- if (uname(&uts))
- return(0);
- if ((uname_m = getenv("UNAME_MACHINE"))) {
- int l = strlen(uname_m);
- if (l >= sizeof(uts.machine))
- l = sizeof(uts.machine)-1;
- memcpy(uts.machine, uname_m, l);
- uts.machine[l] = '\0';
- }
- return(strstr(uts.machine, "64") != NULL);
-}
diff --git a/mdk-stage1/insmod-modutils/util/config.c b/mdk-stage1/insmod-modutils/util/config.c
deleted file mode 100644
index 7568d955f..000000000
--- a/mdk-stage1/insmod-modutils/util/config.c
+++ /dev/null
@@ -1,1614 +0,0 @@
-/*
- * Handle the configuration, including /etc/modules.conf
- *
- * Copyright 1994, 1995, 1996, 1997:
- * Jacques Gelinas <jack@solucorp.qc.ca>
- * Björn Ekwall <bj0rn@blox.se> February 1999
- * Keith Owens <kaos@ocs.com.au> October 1999
- *
- * "kernelversion" idea from the Debian release via:
- * Wichert Akkerman <wakkerma@cs.leidenuniv.nl>
- *
- * Björn, inspired by Richard Henderson <rth@twiddle.net>, cleaned up
- * the wildcard handling and started using ftw in March 1999
- * Cleanup of hardcoded arrays: Björn Ekwall <bj0rn@blox.se> March 1999
- * Many additional keywords: Björn Ekwall <bj0rn@blox.se> (C) March 1999
- * Standardize on /etc/modules.conf Keith Owens <kaos@ocs.com.au> October 1999
- *
- * Alpha typecast:Michal Jaegermann <michal@ellpspace.math.ualberta.ca>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/*
- * Specification: /etc/modules.conf / format
- * Modules may be located at different places in the filesystem.
- *
- * The file /etc/modules.conf contains different definitions to
- * control the manipulation of modules.
- *
- * Standard Unix style comments and continuation line are supported.
- * Comments begin with a # and continue until the end of the line.
- * A line continues on the next one if the last non-white character
- * is a \.
- */
-/* #Specification: /etc/modules.conf / format / official name */
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/stat.h>
-#include <signal.h>
-#include <limits.h>
-#include <sys/param.h>
-#include <errno.h>
-
-#include "util.h"
-#include "config.h"
-#include "alias.h"
-
-int flag_autoclean; /* set/used by modprobe and insmod */
-
-struct utsname uts_info;
-
-struct PATH_TYPE *modpath;
-int nmodpath = 0;
-static int maxpath = 0;
-
-struct EXEC_TYPE *execs;
-int nexecs = 0;
-static int maxexecs = 0;
-
-OPT_LIST *opt_list;
-static int n_opt_list;
-
-OPT_LIST *abovelist;
-static int n_abovelist;
-
-OPT_LIST *belowlist;
-static int n_belowlist;
-
-OPT_LIST *prunelist;
-static int n_prunelist;
-
-OPT_LIST *probe_list;
-static int n_probe_list;
-
-OPT_LIST *probeall_list;
-static int n_probeall_list;
-
-OPT_LIST *aliases;
-static int n_aliases;
-
-char *persistdir = "/var/lib/modules/persist";
-
-const char symprefix[] = SYMPREFIX;
-
-char *insmod_opt = NULL;
-char *config_file = NULL; /* Which file was actually used */
-time_t config_mtime;
-int root_check_off = CONFIG_ROOT_CHECK_OFF; /* Default is modules must be owned by root */
-static char *config_version; /* Hack for config_add */
-int quick = 0; /* Option -A */
-
-/* The initialization order must match the gen_file_enum order in config.h */
-struct gen_files gen_file[] = {
- {"generic_string", NULL, 0},
- {"pcimap", NULL, 0},
- {"isapnpmap", NULL, 0},
- {"usbmap", NULL, 0},
- {"parportmap", NULL, 0},
- {"ieee1394map", NULL, 0},
- {"pnpbiosmap", NULL, 0},
- {"dep", NULL, 0},
-};
-
-const int gen_file_count = sizeof(gen_file)/sizeof(gen_file[0]);
-
-int flag_verbose;
-
-unsigned long safemode;
-
-void verbose(const char *ctl,...)
-{
- if (flag_verbose) {
- va_list list;
- va_start(list, ctl);
- vprintf(ctl, list);
- va_end(list);
- fflush(stdout);
- }
-}
-
-
-/*
- * Check to see if the existing modules.xxx files need updating,
- * based on the timestamps of the modules and the config file.
- */
-static int check_update (const char *file, const struct stat *sb)
-{
- int len = strlen(file);
- int i;
-
- if (!S_ISREG(sb->st_mode))
- return 0;
- for (i = 0; i < gen_file_count; ++i) {
- if (sb->st_mtime > gen_file[i].mtime)
- break;
- }
- if (i == gen_file_count)
- return 0; /* All generated files are up to date */
-
- if (len > 2 && !strcmp(file + len - 2, ".o"))
- return 1;
- else if (len > 4 && !strcmp(file + len - 4, ".mod"))
- return 1;
-#ifdef CONFIG_USE_ZLIB
- else if (len > 5 && !strcmp(file + len - 5, ".o.gz"))
- return 1;
-#endif
- return 0;
-}
-
-static int need_update (const char *force_ver, const char *base_dir)
-{
- struct stat tmp;
- char dep[PATH_MAX];
- int i;
- uname (&uts_info);
- if (!force_ver)
- force_ver = uts_info.release;
-
- if (strlen (force_ver) > 50)
- /* That's just silly. */
- return 1;
-
- for (i = 0; i < gen_file_count; ++i) {
- if (stat(gen_file[i].name, &tmp))
- return 1; /* No dependency file yet, so we need to build it. */
- gen_file[i].mtime = tmp.st_mtime;
- }
-
- if (stat ("/etc/modules.conf", &tmp) &&
- stat ("/etc/conf.modules", &tmp))
- return 1;
-
- for (i = 0; i < gen_file_count; ++i) {
- if (tmp.st_mtime > gen_file[i].mtime)
- return 1; /* Config file is newer. */
- }
-
- snprintf (dep, sizeof(dep), "%s/lib/modules/%s", base_dir, force_ver);
- return xftw (dep, check_update);
-}
-
-
-/*
- * Strip white char at the end of a string.
- * Return the address of the last non white char + 1 (point on the '\0').
- */
-static char *strip_end(char *str)
-{
- int len = strlen(str);
-
- for (str += len - 1; len > 0 && (isspace(*str)); --len, --str)
- *str = '\0';
- return str + 1;
-}
-
-/*
- * Read a line of a configuration file and process continuation lines.
- * Return buf, or NULL if EOF.
- * Blank at the end of line are always stripped.
- * Everything on a line following comchar is a comment.
- *
- * Continuation character is \
- * Comment character is #
- */
-char *fgets_strip(char *buf, int sizebuf, FILE * fin, int *lineno)
-{
- int nocomment = 1; /* No comments found ? */
- int contline = 0;
- char *start = buf;
- char *ret = NULL;
- char comchar = '#';
- char contchar = '\\';
-
- *buf = '\0';
-
- while (fgets(buf, sizebuf, fin) != NULL) {
- char *end = strip_end(buf);
- char *pt = strchr(buf, comchar);
-
- if (pt != NULL) {
- nocomment = 0;
- *pt = '\0';
- end = strip_end(buf);
- }
-
- if (lineno != NULL)
- (*lineno)++;
- ret = start;
- if (contline) {
- char *pt = buf;
-
- while (isspace(*pt))
- pt++;
- if (pt > buf + 1) {
- strcpy(buf + 1, pt); /* safe, backward copy */
- buf[0] = ' ';
- end -= (int) (pt - buf) - 1;
- } else if (pt == buf + 1) {
- buf[0] = ' ';
- }
- }
- if (end > buf && *(end - 1) == contchar) {
- if (end == buf + 1 || *(end - 2) != contchar) {
- /* Continuation */
- contline = 1;
- end--;
- *end = '\0';
- buf = end;
- } else {
- *(end - 1) = '\0';
- break;
- }
- } else {
- break;
- }
- }
-
- return ret;
-}
-
-static char *next_word(char *pt)
-{
- char *match;
- char *pt2;
-
- /* find end of word */
- for (pt2 = pt; *pt2 && !(isspace(*pt2)); ++pt2) {
- if ((match = strchr("\"'`", *pt2)) != NULL) {
- for (++pt2; *pt2 && *pt2 != *match; ++pt2) {
- if (*pt2 == '\\' && *(pt2 + 1) == *match)
- ++pt2;
- }
- }
- }
-
- /* skip leading whitespace before next word */
- if (*pt2) {
- *pt2++ = '\0'; /* terminate last word */
- while (*pt2 && isspace(*pt2))
- ++pt2;
- }
- return pt2;
-}
-
-static GLOB_LIST *addlist(GLOB_LIST *orig, GLOB_LIST *add)
-{
- if (!orig)
- return add;
- /* else */
- orig->pathv = (char **)xrealloc(orig->pathv,
- (orig->pathc + add->pathc + 1) *
- sizeof(char *));
- memcpy(orig->pathv + orig->pathc, add->pathv,
- add->pathc * sizeof(char *));
- orig->pathc += add->pathc;
- orig->pathv[orig->pathc] = NULL;
- /*
- free(add->pathv);
- free(add);
- */
- return orig;
-}
-
-static void decode_list(int *n, OPT_LIST **list, char *arg, int adding,
- char *version, int opts)
-{
- GLOB_LIST *pg;
- GLOB_LIST *prevlist = NULL;
- int i, autoclean = 1;
- int where = *n;
- char *arg2 = next_word(arg);
-
- if (opts && !strcmp (arg, "-k")) {
- if (!*arg2)
- error("Missing module argument after -k\n");
- arg = arg2;
- arg2 = next_word(arg);
- autoclean = 0;
- }
-
- for (i = 0; i < *n; ++i) {
- if (strcmp((*list)[i].name, arg) == 0) {
- if (adding)
- prevlist = (*list)[i].opts;
- else
- free((*list)[i].opts);
- (*list)[i].opts = NULL;
- where = i;
- break;
- }
- }
- if (where == *n) {
- (*list) = (OPT_LIST *)xrealloc((*list),
- (*n + 2) * sizeof(OPT_LIST));
- (*list)[*n].name = xstrdup(arg);
- (*list)[*n].autoclean = autoclean;
- *n += 1;
- memset(&(*list)[*n], 0, sizeof(OPT_LIST));
- } else if (!autoclean)
- (*list)[where].autoclean = 0;
- pg = (GLOB_LIST *)xmalloc(sizeof(GLOB_LIST));
- meta_expand(arg2, pg, NULL, version, ME_ALL);
- (*list)[where].opts = addlist(prevlist, pg);
-}
-
-static void decode_exec(char *arg, int type)
-{
- char *arg2;
-
- execs[nexecs].when = type;
- arg2 = next_word(arg);
- execs[nexecs].module = xstrdup(arg);
- execs[nexecs].cmd = xstrdup(arg2);
- if (++nexecs >= maxexecs) {
- maxexecs += 10;
- execs = (struct EXEC_TYPE *)xrealloc(execs,
- maxexecs * sizeof(struct EXEC_TYPE));
- }
-}
-
-static int build_list(char **in, OPT_LIST **out, char *version, int opts)
-{
- GLOB_LIST *pg;
- int i;
-
- for (i = 0; in[i]; ++i) {
- char *p = xstrdup(in[i]);
- char *pt = next_word(p);
- char *pn = p;
-
- *out = (OPT_LIST *)xrealloc(*out, (i + 2) * sizeof(OPT_LIST));
- (*out)[i].autoclean = 1;
- if (opts && !strcmp (p, "-k")) {
- pn = pt;
- pt = next_word(pn);
- (*out)[i].autoclean = 0;
- }
- pg = (GLOB_LIST *)xmalloc(sizeof(GLOB_LIST));
- meta_expand(pt, pg, NULL, version, ME_ALL);
- (*out)[i].name = xstrdup(pn);
- (*out)[i].opts = pg;
- free(p);
- }
- memset(&(*out)[i], 0, sizeof(OPT_LIST));
-
- return i;
-}
-
-/* Environment variables can override defaults, testing only */
-static void gen_file_env(struct gen_files *gf)
-{
- if (!safemode) {
- char *e = xmalloc(strlen(gf->base)+5), *p1 = gf->base, *p2 = e;
- while ((*p2++ = toupper(*p1++))) ;
- strcpy(p2-1, "PATH"); /* safe, xmalloc */
- if ((p2 = getenv(e)) != NULL) {
- free(gf->name);
- gf->name = xstrdup(p2);
- }
- free(e);
- }
-}
-
-/* Read a config option for a generated filename */
-static int gen_file_conf(struct gen_files *gf, int assgn, const char *parm, const char *arg)
-{
-
- int l = strlen(gf->base);
- if (assgn &&
- strncmp(parm, gf->base, l) == 0 &&
- strcmp(parm+l, "file") == 0 &&
- !gf->name) {
- gf->name = xstrdup(arg);
- return(0);
- }
- return(1);
-}
-
-/* Check we have a name for a generated file */
-static int gen_file_check(struct gen_files *gf, GLOB_LIST *g,
- char *base_dir, char *version)
-{
- char tmp[PATH_MAX];
- int ret = 0;
- if (!gf->name) {
- /*
- * Specification: config file / no xxxfile parameter
- * The default value for generated filename xxx is:
- *
- * xxxfile=/lib/modules/`uname -r`/modules.xxx
- *
- * If the config file exists but lacks an xxxfile
- * specification, the default value is used since
- * the system can't work without one.
- */
- snprintf(tmp, sizeof(tmp), "%s/lib/modules/%s/modules.%s",
- base_dir, version, gf->base);
- gf->name = xstrdup(tmp);
- } else { /* xxxfile defined in modules.conf */
- /*
- * If we have a xxxfile definition in the configuration file
- * we must resolve any shell meta-chars in its value.
- */
- if (meta_expand(gf->name, g, base_dir, version, ME_ALL))
- ret = -1;
- else if (!g->pathv || g->pathv[0] == NULL)
- ret = -1;
- else {
- free(gf->name);
- gf->name = xstrdup(g->pathv[0]);
- }
- }
- return(ret);
-}
-
-/*
- * Read the configuration file.
- * If parameter "all" == 0 then ignore everything except path info
- * Return -1 if any error.
- * Error messages generated.
- */
-static int do_read(int all, char *force_ver, char *base_dir, char *conf_file, int depth)
-{
- #define MAX_LEVEL 20
- FILE *fin;
- GLOB_LIST g;
- int i;
- int assgn;
- int drop_default_paths = 1;
- int lineno = 0;
- int ret = 0;
- int state[MAX_LEVEL + 1]; /* nested "if" */
- int level = 0;
- char buf[3000];
- char tmpline[PATH_MAX];
- char **pathp;
- char *envpath;
- char *version;
- char *type;
- char **glb;
- char old_name[] = "/etc/conf.modules";
- int conf_file_specified = 0;
-
- /*
- * The configuration file is optional.
- * No error is printed if it is missing.
- * If it is missing the following content is assumed.
- *
- * path[boot]=/lib/modules/boot
- *
- * path[toplevel]=/lib/modules/`uname -r`
- *
- * path[toplevel]=/lib/modules/`kernelversion`
- * (where kernelversion gives the major kernel version: "2.0", "2.2"...)
- *
- * path[toplevel]=/lib/modules/default
- *
- * path[kernel]=/lib/modules/kernel
- * path[fs]=/lib/modules/fs
- * path[net]=/lib/modules/net
- * path[scsi]=/lib/modules/scsi
- * path[block]=/lib/modules/block
- * path[cdrom]=/lib/modules/cdrom
- * path[ipv4]=/lib/modules/ipv4
- * path[ipv6]=/lib/modules/ipv6
- * path[sound]=/lib/modules/sound
- * path[fc4]=/lib/modules/fc4
- * path[video]=/lib/modules/video
- * path[misc]=/lib/modules/misc
- * path[pcmcia]=/lib/modules/pcmcia
- * path[atm]=/lib/modules/atm
- * path[usb]=/lib/modules/usb
- * path[ide]=/lib/modules/ide
- * path[ieee1394]=/lib/modules/ieee1394
- * path[mtd]=/lib/modules/mtd
- *
- * The idea is that modprobe will look first if the
- * modules are compiled for the current release of the kernel.
- * If not found, it will look for modules that fit for the
- * general kernelversion (2.0, 2.2 and so on).
- * If still not found, it will look into the default release.
- * And if still not found, it will look in the other directories.
- *
- * The strategy should be like this:
- * When you install a new linux kernel, the modules should go
- * into a directory related to the release (version) of the kernel.
- * Then you can do a symlink "default" to this directory.
- *
- * Each time you compile a new kernel, the make modules_install
- * will create a new directory, but it won't change thee default.
- *
- * When you get a module unrelated to the kernel distribution
- * you can place it in one of the last three directory types.
- *
- * This is the default strategy. Of course you can overide
- * this in /etc/modules.conf.
- *
- * 2.3.15 added a new file tree walk algorithm which made it possible to
- * point at a top level directory and get the same behaviour as earlier
- * versions of modutils. 2.3.16 takes this one stage further, it
- * removes all the individual directory names from most of the scans,
- * only pointing at the top level directory. The only exception is the
- * last ditch scan, scanning all of /lib/modules would be a bad idea(TM)
- * so the last ditch scan still runs individual directory names under
- * /lib/modules.
- *
- * Additional syntax:
- *
- * [add] above module module1 ...
- * Specify additional modules to pull in on top of a module
- *
- * [add] below module module1 ...
- * Specify additional modules needed to be able to load a module
- *
- * [add] prune filename ...
- *
- * [add] probe name module1 ...
- * When "name" is requested, modprobe tries to install each
- * module in the list until it succeeds.
- *
- * [add] probeall name module1 ...
- * When "name" is requested, modprobe tries to install all
- * modules in the list.
- * If any module is installed, the command has succeeded.
- *
- * [add] options module option_list
- *
- * For all of the above, the optional "add" prefix is used to
- * add to a list instead of replacing the contents.
- *
- * include FILE_TO_INCLUDE
- * This does what you expect. No limitation on include levels.
- *
- * persistdir=persist_directory
- * Name the directory to save persistent data from modules.
- *
- * In the following WORD is a sequence if non-white characters.
- * If ' " or ` is found in the string, all characters up to the
- * matching ' " or ` will also be included, even whitespace.
- * Every WORD will then be expanded w.r.t. meta-characters.
- * If the expanded result gives more than one word, then only
- * the first word of the result will be used.
- *
- *
- * define CODE WORD
- * Do a putenv("CODE=WORD")
- *
- * EXPRESSION below can be:
- * WORD compare_op WORD
- * where compare_op is one of == != < <= >= >
- * The string values of the WORDs are compared
- * or
- * -n WORD compare_op WORD
- * where compare_op is one of == != < <= >= >
- * The numeric values of the WORDs are compared
- * or
- * WORD
- * if the expansion of WORD fails, or if the
- * expansion is "0" (zero), "false" or "" (empty)
- * then the expansion has the value FALSE.
- * Otherwise the expansion has the value TRUE
- * or
- * -f FILENAME
- * Test if the file FILENAME exists
- * or
- * -k
- * Test if "autoclean" (i.e. called from the kernel)
- * or
- * ! EXPRESSION
- * A negated expression is also an expression
- *
- * if EXPRESSION
- * any config line
- * ...
- * elseif EXPRESSION
- * any config line
- * ...
- * else
- * any config line
- * ...
- * endif
- *
- * The else and elseif keywords are optional.
- * "if"-statements nest up to 20 levels.
- */
-
- state[0] = 1;
-
- if (force_ver)
- version = force_ver;
- else
- version = uts_info.release;
-
- config_version = xstrdup(version);
-
- /* Only read the default entries on the first file */
- if (depth == 0) {
- maxpath = 100;
- modpath = (struct PATH_TYPE *)xmalloc(maxpath * sizeof(struct PATH_TYPE));
- nmodpath = 0;
-
- maxexecs = 10;
- execs = (struct EXEC_TYPE *)xmalloc(maxexecs * sizeof(struct EXEC_TYPE));
- nexecs = 0;
-
- /*
- * Build predef options
- */
- if (all && optlist[0])
- n_opt_list = build_list(optlist, &opt_list, version, 1);
-
- /*
- * Build predef above
- */
- if (all && above[0])
- n_abovelist = build_list(above, &abovelist, version, 0);
-
- /*
- * Build predef below
- */
- if (all && below[0])
- n_belowlist = build_list(below, &belowlist, version, 0);
-
- /*
- * Build predef prune list
- */
- if (prune[0])
- n_prunelist = build_list(prune, &prunelist, version, 0);
-
- /*
- * Build predef aliases
- */
- if (all && aliaslist[0])
- n_aliases = build_list(aliaslist, &aliases, version, 0);
-
- /*
- * Build predef postinstalls
- */
- if (all && post_install[0])
- for (i=0 ; post_install[i] ; i++ )
- decode_exec(xstrdup(post_install[i]), EXEC_POST_INSTALL);
-
- /*
- * Build predef preremoves
- */
- if (all && pre_remove[0])
- for (i=0 ; pre_remove[i] ; i++ )
- decode_exec(xstrdup(pre_remove[i]), EXEC_PRE_REMOVE);
-
- /* Order and priority is now: (MODPATH + modules.conf) || (predefs + modules.conf) */
- if ((envpath = getenv("MODPATH")) != NULL && !safemode) {
- size_t len;
- char *p;
- char *path;
-
- /* Make a copy so's we can mung it with strtok. */
- len = strlen(envpath) + 1;
- p = alloca(len);
- memcpy(p, envpath, len);
- path = alloca(PATH_MAX);
-
- for (p = strtok(p, ":"); p != NULL; p = strtok(NULL, ":")) {
- len = snprintf(path, PATH_MAX, p, version);
- modpath[nmodpath].path = xstrdup(path);
- if ((type = strrchr(path, '/')) != NULL)
- type += 1;
- else
- type = "misc";
- modpath[nmodpath].type = xstrdup(type);
- if (++nmodpath >= maxpath) {
- maxpath += 100;
- modpath = (struct PATH_TYPE *)xrealloc(modpath,
- maxpath * sizeof(struct PATH_TYPE));
- }
-
- }
- } else {
- /*
- * Build the default "path[type]" configuration
- */
- int n;
- char *k;
-
- /* The first entry in the path list */
- modpath[nmodpath].type = xstrdup("boot");
- snprintf(tmpline, sizeof(tmpline), "%s/lib/modules/boot", base_dir);
- modpath[nmodpath].path = xstrdup(tmpline);
- ++nmodpath;
-
- /* The second entry in the path list, `uname -r` */
- modpath[nmodpath].type = xstrdup("toplevel");
- snprintf(tmpline, sizeof(tmpline), "%s/lib/modules/%s", base_dir, version);
- modpath[nmodpath].path = xstrdup(tmpline);
- ++nmodpath;
-
- /* The third entry in the path list, `kernelversion` */
- modpath[nmodpath].type = xstrdup("toplevel");
- for (n = 0, k = version; *k; ++k) {
- if (*k == '.' && ++n == 2)
- break;
- }
- snprintf(tmpline, sizeof(tmpline), "%s/lib/modules/%.*s", base_dir,
- (/* typecast for Alpha */ int)(k - version), version);
- modpath[nmodpath].path = xstrdup(tmpline);
- ++nmodpath;
-
- /* The rest of the entries in the path list */
- for (pathp = tbpath; *pathp; ++pathp) {
- char **type;
-
- for (type = tbtype; *type; ++type) {
- char path[PATH_MAX];
-
- snprintf(path, sizeof(path), "%s%s/%s", base_dir, *pathp, *type);
- if (meta_expand(path, &g, NULL, version, ME_ALL))
- return -1;
-
- for (glb = g.pathv; glb && *glb; ++glb) {
- modpath[nmodpath].type = xstrdup(*type);
- modpath[nmodpath].path = *glb;
- if (++nmodpath >= maxpath) {
- maxpath += 100;
- modpath = (struct PATH_TYPE *)xrealloc(modpath,
- maxpath * sizeof(struct PATH_TYPE));
- }
- }
- }
- }
- }
-
- /* Environment overrides for testing only, undocumented */
- for (i = 0; i < gen_file_count; ++i)
- gen_file_env(gen_file+i);
-
- } /* End of depth == 0 */
-
- if (conf_file ||
- ((conf_file = getenv("MODULECONFIG")) != NULL && *conf_file && !safemode)) {
- if (!(fin = fopen(conf_file, "r"))) {
- error("Can't open %s", conf_file);
- return -1;
- }
- conf_file_specified = 1;
- } else {
- if (!(fin = fopen((conf_file = ETC_MODULES_CONF), "r"))) {
- /* Fall back to non-standard name */
- if ((fin = fopen((conf_file = old_name), "r"))) {
- fprintf(stderr,
- "Warning: modutils is reading from %s because\n"
- " %s does not exist. The use of %s is\n"
- " deprecated, please rename %s to %s\n"
- " as soon as possible. Command\n"
- " mv %s %s\n",
- old_name, ETC_MODULES_CONF,
- old_name, old_name, ETC_MODULES_CONF,
- old_name, ETC_MODULES_CONF);
- }
- /* So what... use the default configuration */
- }
- }
-
- if (fin) {
- struct stat statbuf1, statbuf2;
- if (fstat(fileno(fin), &statbuf1) == 0)
- config_mtime = statbuf1.st_mtime;
- config_file = xstrdup(conf_file); /* Save name actually used */
- if (!conf_file_specified &&
- stat(ETC_MODULES_CONF, &statbuf1) == 0 &&
- stat(old_name, &statbuf2) == 0) {
- /* Both /etc files exist */
- if (statbuf1.st_dev == statbuf2.st_dev &&
- statbuf1.st_ino == statbuf2.st_ino) {
- if (lstat(ETC_MODULES_CONF, &statbuf1) == 0 &&
- S_ISLNK(statbuf1.st_mode))
- fprintf(stderr,
- "Warning: You do not need a link from %s to\n"
- " %s. The use of %s is deprecated,\n"
- " please remove %s and rename %s\n"
- " to %s as soon as possible. Commands.\n"
- " rm %s\n"
- " mv %s %s\n",
- ETC_MODULES_CONF, old_name,
- old_name, ETC_MODULES_CONF, old_name, ETC_MODULES_CONF,
- ETC_MODULES_CONF,
- old_name, ETC_MODULES_CONF);
- else {
-#ifndef NO_WARN_ON_OLD_LINK
- fprintf(stderr,
- "Warning: You do not need a link from %s to\n"
- " %s. The use of %s is deprecated,\n"
- " please remove %s as soon as possible. Command\n"
- " rm %s\n",
- old_name, ETC_MODULES_CONF,
- old_name, old_name,
- old_name);
-#endif
- }
- }
- else
- fprintf(stderr,
- "Warning: modutils is reading from %s and\n"
- " ignoring %s. The use of %s is deprecated,\n"
- " please remove %s as soon as possible. Command\n"
- " rm %s\n",
- ETC_MODULES_CONF, old_name,
- old_name, old_name,
- old_name);
- }
- }
-
- /*
- * Finally, decode the file
- */
- while (fin && fgets_strip(buf, sizeof(buf) - 1, fin, &lineno) != NULL) {
- char *arg2;
- char *parm = buf;
- char *arg;
- int one_err = 0;
- int adding;
-
- while (isspace(*parm))
- parm++;
-
- if (strncmp(parm, "add", 3) == 0) {
- adding = 1;
- parm += 3;
- while (isspace(*parm))
- parm++;
- } else
- adding = 0;
-
- arg = parm;
-
- if (*parm == '\0')
- continue;
-
- one_err = 1;
-
- while (*arg > ' ' && *arg != '=')
- arg++;
-
- if (*arg == '=')
- assgn = 1;
- else
- assgn = 0;
- *arg++ = '\0';
- while (isspace(*arg))
- arg++;
-
- /*
- * endif
- */
- if (!assgn && strcmp(parm, "endif") == 0) {
- if (level > 0)
- --level;
- else {
- error("unmatched endif in line %d", lineno);
- return -1;
- }
- continue;
- }
-
- /*
- * else
- */
- if (!assgn && strcmp(parm, "else") == 0) {
- if (level <= 0) {
- error("else without if in line %d", lineno);
- return -1;
- }
- state[level] = !state[level];
- continue;
- }
-
- /*
- * elseif
- */
- if (!assgn && strcmp(parm, "elseif") == 0) {
- if (level <= 0) {
- error("elseif without if in line %d", lineno);
- return -1;
- }
- if (state[level] != 0) {
- /*
- * We have already found a TRUE
- * if statement in this "chain".
- * That's what "2" means.
- */
- state[level] = 2;
- continue;
- }
- /* else: No TRUE if has been found, cheat */
- /*
- * The "if" handling increments level,
- * but this is the _same_ level as before.
- * So, compensate for it.
- */
- --level;
- parm = "if";
- /* Fallthru to "if" */
- }
-
- /*
- * if
- */
- if (strcmp(parm, "if") == 0) {
- char *cmp;
- int not = 0;
- int numeric = 0;
-
- if (level >= MAX_LEVEL) {
- error("Too many nested if's in line %d\n", lineno);
- return -1;
- }
- state[++level] = 0; /* default false */
-
- if (*arg == '!') {
- not = 1;
- arg = next_word(arg);
- }
-
- if (strncmp(arg, "-k", 2) == 0) {
- state[level] = flag_autoclean;
- continue;
- }
-
- if (strncmp(arg, "-f", 2) == 0) {
- char *file = next_word(arg);
- meta_expand(file, &g, NULL, version, ME_ALL);
- if (access(g.pathc ? g.pathv[0] : file, R_OK) == 0)
- state[level] = !not;
- else
- state[level] = not;
- continue;
- }
-
- if (strncmp(arg, "-n", 2) == 0) {
- numeric = 1;
- arg = next_word(arg);
- }
-
-
- cmp = next_word(arg);
- if (*cmp) {
- GLOB_LIST g2;
- long n1 = 0;
- long n2 = 0;
- char *w1 = "";
- char *w2 = "";
-
- arg2 = next_word(cmp);
-
- meta_expand(arg, &g, NULL, version, ME_ALL);
- if (g.pathc && g.pathv[0])
- w1 = g.pathv[0];
-
- meta_expand(arg2, &g2, NULL, version, ME_ALL);
- if (g2.pathc && g2.pathv[0])
- w2 = g2.pathv[0];
-
- if (numeric) {
- n1 = strtol(w1, NULL, 0);
- n2 = strtol(w2, NULL, 0);
- }
-
- if (strcmp(cmp, "==") == 0 ||
- strcmp(cmp, "=") == 0) {
- if (numeric)
- state[level] = (n1 == n2);
- else
- state[level] = strcmp(w1, w2) == 0;
- } else if (strcmp(cmp, "!=") == 0) {
- if (numeric)
- state[level] = (n1 != n2);
- else
- state[level] = strcmp(w1, w2) != 0;
- } else if (strcmp(cmp, ">=") == 0) {
- if (numeric)
- state[level] = (n1 >= n2);
- else
- state[level] = strcmp(w1, w2) >= 0;
- } else if (strcmp(cmp, "<=") == 0) {
- if (numeric)
- state[level] = (n1 <= n2);
- else
- state[level] = strcmp(w1, w2) <= 0;
- } else if (strcmp(cmp, ">") == 0) {
- if (numeric)
- state[level] = (n1 > n2);
- else
- state[level] = strcmp(w1, w2) > 0;
- } else if (strcmp(cmp, "<") == 0) {
- if (numeric)
- state[level] = (n1 < n2);
- else
- state[level] = strcmp(w1, w2) < 0;
- }
- } else { /* Check defined value, if any */
- /* undef or defined as
- * "" or "0" or "false" => false
- * defined => true
- */
- if (!meta_expand(arg, &g, NULL, version, ME_ALL) &&
- g.pathc > 0 &&
- strcmp(g.pathv[0], "0") != 0 &&
- strcmp(g.pathv[0], "false") != 0 &&
- strlen(g.pathv[0]) != 0)
- state[level] = 1; /* true */
- }
- if (not)
- state[level] = !state[level];
-
- continue;
- }
-
- /*
- * Should we bother?
- */
- if (state[level] != 1)
- continue;
-
- /*
- * define
- */
- if (!assgn && strcmp(parm, "define") == 0) {
- char env[PATH_MAX];
-
- arg2 = next_word(arg);
- meta_expand(arg2, &g, NULL, version, ME_ALL);
- snprintf(env, sizeof(env), "%s=%s", arg, (g.pathc ? g.pathv[0] : ""));
- putenv(xstrdup(env));
- one_err = 0;
- }
-
- /*
- * include
- */
- if (!assgn && strcmp(parm, "include") == 0) {
- meta_expand(arg, &g, NULL, version, ME_ALL);
-
- if (!do_read(all, version, base_dir, g.pathc ? g.pathv[0] : arg, depth+1))
- one_err = 0;
- else
- error("include %s failed\n", arg);
- }
-
- /*
- * above
- */
- else if (all && !assgn && strcmp(parm, "above") == 0) {
- decode_list(&n_abovelist, &abovelist, arg, adding, version, 0);
- one_err = 0;
- }
-
- /*
- * below
- */
- else if (all && !assgn && strcmp(parm, "below") == 0) {
- decode_list(&n_belowlist, &belowlist, arg, adding, version, 0);
- one_err = 0;
- }
-
- /*
- * prune
- */
- else if (!assgn && strcmp(parm, "prune") == 0) {
- decode_list(&n_prunelist, &prunelist, arg, adding, version, 0);
- one_err = 0;
- }
-
- /*
- * probe
- */
- else if (all && !assgn && strcmp(parm, "probe") == 0) {
- decode_list(&n_probe_list, &probe_list, arg, adding, version, 0);
- one_err = 0;
- }
-
- /*
- * probeall
- */
- else if (all && !assgn && strcmp(parm, "probeall") == 0) {
- decode_list(&n_probeall_list, &probeall_list, arg, adding, version, 0);
- one_err = 0;
- }
-
- /*
- * options
- */
- else if (all && !assgn && strcmp(parm, "options") == 0) {
- decode_list(&n_opt_list, &opt_list, arg, adding, version, 1);
- one_err = 0;
- }
-
- /*
- * alias
- */
- else if (all && !assgn && strcmp(parm, "alias") == 0) {
- /*
- * Replace any previous (default) definitions
- * for the same module
- */
- decode_list(&n_aliases, &aliases, arg, 0, version, 0);
- one_err = 0;
- }
-
- /*
- * Specification: /etc/modules.conf
- * The format of the commands in /etc/modules.conf are:
- *
- * pre-install module command
- * install module command
- * post-install module command
- * pre-remove module command
- * remove module command
- * post-remove module command
- *
- * The different words are separated by tabs or spaces.
- */
- /*
- * pre-install
- */
- else if (all && !assgn && (strcmp(parm, "pre-install") == 0)) {
- decode_exec(arg, EXEC_PRE_INSTALL);
- one_err = 0;
- }
-
- /*
- * install
- */
- else if (all && !assgn && (strcmp(parm, "install") == 0)) {
- decode_exec(arg, EXEC_INSTALL);
- one_err = 0;
- }
-
- /*
- * post-install
- */
- else if (all && !assgn && (strcmp(parm, "post-install") == 0)) {
- decode_exec(arg, EXEC_POST_INSTALL);
- one_err = 0;
- }
-
- /*
- * pre-remove
- */
- else if (all && !assgn && (strcmp(parm, "pre-remove") == 0)) {
- decode_exec(arg, EXEC_PRE_REMOVE);
- one_err = 0;
- }
-
- /*
- * remove
- */
- else if (all && !assgn && (strcmp(parm, "remove") == 0)) {
- decode_exec(arg, EXEC_REMOVE);
- one_err = 0;
- }
-
- /*
- * post-remove
- */
- else if (all && !assgn && (strcmp(parm, "post-remove") == 0)) {
- decode_exec(arg, EXEC_POST_REMOVE);
- one_err = 0;
- }
-
- /*
- * insmod_opt=
- */
- else if (assgn && (strcmp(parm, "insmod_opt") == 0)) {
- insmod_opt = xstrdup(arg);
- one_err = 0;
- }
-
- /*
- * keep
- */
- else if (!assgn && (strcmp(parm, "keep") == 0)) {
- drop_default_paths = 0;
- one_err = 0;
- }
-
- /*
- * path...=
- */
- else if (assgn && strncmp(parm, "path", 4) == 0) {
- /*
- * Specification: config file / path parameter
- * The path parameter specifies a directory to
- * search for modules.
- * This parameter may be repeated multiple times.
- *
- * Note that the actual path may be defined using
- * wildcards and other shell meta-chars, such as "*?`".
- * For example:
- * path[misc]=/lib/modules/1.1.5?/misc
- *
- * Optionally the path keyword carries a tag.
- * This tells us a little more about the purpose of
- * this directory and allows some automated operations.
- * A path is marked with a tag by adding the tag,
- * enclosed in square brackets, to the path keyword:
- * #
- * path[boot]=/lib/modules/boot
- * #
- * This case identifies the path a of directory
- * holding modules loadable a boot time.
- */
-
- if (drop_default_paths) {
- int n;
-
- /*
- * Specification: config file / path / default
- *
- * Whenever there is a path[] specification
- * in the config file, all the default
- * path are reset.
- *
- * If one instead wants to _add_ to the default
- * set of paths, one has to have the option
- * keep
- * before the first path[]-specification line
- * in the configuration file.
- */
- drop_default_paths = 0;
- for (n = 0; n < nmodpath; n++) {
- free(modpath[n].path);
- free(modpath[n].type);
- }
- nmodpath = 0;
- }
-
- /*
- * Get (the optional) tag
- * If the tag is missing, the word "misc"
- * is assumed.
- */
- type = "misc";
-
- if (parm[4] == '[') {
- char *pt_type = parm + 5;
-
- while (*pt_type != '\0' && *pt_type != ']')
- pt_type++;
-
- if (*pt_type == ']' && pt_type[1] == '\0') {
- *pt_type = '\0';
- type = parm + 5;
- } /* else CHECKME */
- }
-
- /*
- * Handle the actual path description
- */
- if (meta_expand(arg, &g, base_dir, version, ME_ALL))
- return -1;
- for (glb = g.pathv; glb && *glb; ++glb) {
- modpath[nmodpath].type = xstrdup(type);
- modpath[nmodpath].path = *glb;
- if (++nmodpath >= maxpath) {
- maxpath += 100;
- modpath = (struct PATH_TYPE *)xrealloc(modpath,
- maxpath * sizeof(struct PATH_TYPE));
- }
- }
- one_err = 0;
- }
-
- /*
- * persistdir
- */
- else if (assgn && strcmp(parm, "persistdir") == 0) {
- meta_expand(arg, &g, NULL, version, ME_ALL);
- persistdir = xstrdup(g.pathc ? g.pathv[0] : arg);
- one_err = 0;
- }
-
- /* Names for generated files in config file */
- for (i = 0; one_err && i < gen_file_count; ++i)
- one_err = gen_file_conf(gen_file+i, assgn, parm, arg);
-
- /*
- * any errors so far?
- */
- if (all == 0)
- one_err = 0;
- else if (one_err) {
- error("Invalid line %d in %s\n\t%s",
- lineno, conf_file, buf);
- ret = -1;
- }
- }
- if (fin)
- fclose(fin);
-
- if (level) {
- error("missing endif at %s EOF", conf_file);
- ret = -1;
- }
-
- if (ret)
- return ret;
- /* else */
-
- if (depth == 0) {
- /* Check we have names for generated files */
- for (i = 0; !ret && i < gen_file_count; ++i)
- ret = gen_file_check(gen_file+i, &g, base_dir, version);
- }
-
- return ret;
-}
-
-int config_read(int all, char *force_ver, char *base_dir, char *conf_file)
-{
- int r;
- if (modpath != NULL)
- return 0; /* already initialized */
-
- if (uname(&uts_info) < 0) {
- error("Failed to find kernel name information");
- return -1;
- }
-
- if (access(MODUTILS_MACROS, R_OK) == 0){
- r = do_read(all, force_ver, base_dir, MODUTILS_MACROS, 0);
- r = do_read(all, force_ver, "", conf_file, 1);
- } else {
- r = do_read(all, force_ver, base_dir, conf_file, 0);
- }
-
- if (quick && !r && !need_update (force_ver, base_dir))
- exit (0);
-
- return r;
-}
-
-/****************************************************************************/
-/*
- * FIXME: Far too much global state. KAO.
- */
-static int found;
-static int favail;
-static int one_only;
-static int meta_expand_type;
-char **list;
-static const char *filter_by_file;
-static char *filter_by_dir;
-
-/*
- * Add a file name if it exist
- */
-static int config_add(const char *file, const struct stat *sb)
-{
- int i;
- int npaths = 0;
- char **paths = NULL;
-
- if (meta_expand_type) {
- GLOB_LIST g;
- char **p;
- char full[PATH_MAX];
-
- snprintf(full, sizeof(full), "%s/%s", file, filter_by_file);
-
- if (filter_by_dir && !strstr(full, filter_by_dir))
- return 0;
-
- if (meta_expand(full, &g, NULL, config_version, meta_expand_type))
- return 1;
- for (p = g.pathv; p && *p; ++p) {
- paths = (char **)xrealloc(paths,
- (npaths + 1) * sizeof(char *));
- paths[npaths++] = *p;
- }
- } else { /* normal path match or match with "*" */
- if (!S_ISREG(sb->st_mode))
- return 0;
-
- if (strcmp(filter_by_file, "*")) {
- char *p;
-
- if ((p = strrchr(file, '/')) == NULL)
- p = (char *)file;
- else
- p += 1;
-
- if (strcmp(p, filter_by_file))
- return 0;
- }
- if (filter_by_dir && !strstr(file, filter_by_dir))
- return 0;
- paths = (char **)xmalloc(sizeof(char **));
- *paths = xstrdup(file);
- npaths = 1;
- }
-
- for (i = 0; i < npaths; ++i) {
- struct stat sbuf;
-
- if (S_ISDIR(sb->st_mode)) {
- if (stat(paths[i], &sbuf) == 0)
- sb = &sbuf;
- }
- if (S_ISREG(sb->st_mode) && sb->st_mode & S_IRUSR) {
- int j;
- char **this;
-
- if (!root_check_off) {
- if (sb->st_uid != 0) {
- error("%s is not owned by root", paths[i]);
- continue;
- }
- }
-
- /* avoid duplicates */
- for (j = 0, this = list; j < found; ++j, ++this) {
- if (strcmp(*this, paths[i]) == 0) {
- free(paths[i]);
- goto next;
- }
- }
-
- list[found] = paths[i];
- if (++found >= favail)
- list = (char **)xrealloc(list,
- (favail += 100) * sizeof(char *));
-
- if (one_only) {
- for (j = i + 1; j < npaths; ++j)
- free(paths[j]);
- free(paths);
- return 1; /* finish xftw */
- }
- }
- next:
- }
-
- if (npaths > 0)
- free(paths);
-
- return 0;
-}
-
-/*
- * Find modules matching the name "match" in directory of type "type"
- * (type == NULL matches all)
- *
- * Return a pointer to the list of modules found (or NULL if error).
- * Update the counter (sent as parameter).
- */
-GLOB_LIST *config_lstmod(const char *match, const char *type, int first_only)
-{
- /*
- * Note:
- * There are _no_ wildcards remaining in the path descriptions!
- */
- struct stat sb;
- int i;
- int ret = 0;
- char *path = NULL;
- char this[PATH_MAX];
-
- if (!match)
- match = "*";
- one_only = first_only;
- found = 0;
- filter_by_file = match;
- filter_by_dir = NULL;
- if (type) {
- char tmpdir[PATH_MAX];
- snprintf(tmpdir, sizeof(tmpdir), "/%s/", type);
- filter_by_dir = xstrdup(tmpdir);
- }
- /* In safe mode, the module name is always handled as is, without meta
- * expansion. It might have come from an end user via kmod and must
- * not be trusted. Even in unsafe mode, only apply globbing to the
- * module name, not command expansion. We trust config file input so
- * applying command expansion is safe, we do not trust command line input.
- * This assumes that the only time the user can specify -C config file
- * is when they run under their own authority. In particular all
- * mechanisms that call modprobe as root on behalf of the user must
- * run in safe mode, without letting the user supply a config filename.
- */
- meta_expand_type = 0;
- if (strpbrk(match, SHELL_META) && strcmp(match, "*") && !safemode)
- meta_expand_type = ME_GLOB|ME_BUILTIN_COMMAND;
-
- list = (char **)xmalloc((favail = 100) * sizeof(char *));
-
- for (i = 0; i < nmodpath; i++) {
- path = modpath[i].path;
- /* Special case: insmod: handle single, non-wildcard match */
- if (first_only && strpbrk(match, SHELL_META) == NULL) {
- /* Fix for "2.1.121 syntax */
- snprintf(this, sizeof(this), "%s/%s/%s", path,
- modpath[i].type, match);
- if (stat(this, &sb) == 0 &&
- config_add(this, &sb))
- break;
- /* End fix for "2.1.121 syntax */
-
- snprintf(this, sizeof(this), "%s/%s", path, match);
- if (stat(this, &sb) == 0 &&
- config_add(this, &sb))
- break;
- }
-
- /* Start looking */
- if ((ret = xftw(path, config_add))) {
- break;
- }
- }
- if (ret >= 0) {
- GLOB_LIST *g = (GLOB_LIST *)xmalloc(sizeof(GLOB_LIST));
- g->pathc = found;
- g->pathv = list;
- free(filter_by_dir);
- return g;
- }
- free(list);
- free(filter_by_dir);
- return NULL;
-}
-
-/* Given a bare module name, poke through the module path to find the file. */
-char *search_module_path(const char *base)
-{
- GLOB_LIST *g;
-
- if (config_read(0, NULL, "", NULL) < 0)
- return NULL;
- /* else */
- g = config_lstmod(base, NULL, 1);
- if (g == NULL || g->pathc == 0) {
- char base_o[PATH_MAX];
-
- snprintf(base_o, sizeof(base_o), "%s.o", base);
- g = config_lstmod(base_o, NULL, 1);
-#ifdef CONFIG_USE_ZLIB
- if (g == NULL || g->pathc == 0) {
- snprintf(base_o, sizeof(base_o), "%s.o.gz", base);
- g = config_lstmod(base_o, NULL, 1);
- }
-#endif
- }
- if (g == NULL || g->pathc == 0)
- return NULL;
- /* else */
- return g->pathv[0];
-}
diff --git a/mdk-stage1/insmod-modutils/util/gzfiles.c b/mdk-stage1/insmod-modutils/util/gzfiles.c
deleted file mode 100644
index 8d02253bb..000000000
--- a/mdk-stage1/insmod-modutils/util/gzfiles.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * This simple library intends to make it transparent to read gzipped and/or
- * standard files. This is simple enough to fit modutils' needs, but may be
- * easily adapted to anyone's needs. It's completely free, do what you want
- * with it . - Willy Tarreau <willy@meta-x.org> - 2000/05/05 -
- */
-
-#ifdef CONFIG_USE_ZLIB
-
-#include <stdio.h>
-#include <zlib.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-/* redefinition of gz_stream which isn't exported by zlib */
-typedef struct gz_stream {
- z_stream stream;
- int z_err; /* error code for last stream operation */
- int z_eof; /* set if end of input file */
- FILE *file; /* .gz file */
- Byte *inbuf; /* input buffer */
- Byte *outbuf; /* output buffer */
- uLong crc; /* crc32 of uncompressed data */
- char *msg; /* error message */
- char *path; /* path name for debugging only */
- int transparent; /* 1 if input file is not a .gz file */
- char mode; /* 'w' or 'r' */
- long startpos; /* start of compressed data in file (header skipped) */
-} gz_stream;
-
-/* maximum number of simultaneous open files, also greater file descriptor number */
-#define MAXFD 64
-
-/* this static list is assumed to be filled with NULLs at runtime */
-static gzFile gzf_fds[MAXFD];
-
-/* returns the filedesc of the opened file. */
-int gzf_open(const char *name, int mode) {
- int fd;
- gzFile g;
-
- if ((g=gzopen(name, "rb")) != NULL) {
- fd=fileno(((gz_stream*)g)->file);
- gzf_fds[fd]=g;
- }
- else if ((fd=open(name, mode)) != -1) {
- gzf_fds[fd]=NULL; /* NULL means not GZ mode */
- }
- return fd;
-}
-
-off_t gzf_lseek(int fd, off_t offset, int whence) {
- if (fd<0 || fd>=MAXFD || gzf_fds[fd]==NULL)
- return lseek(fd, offset, whence);
- else
- return gzseek(gzf_fds[fd], offset, whence);
-}
-
-int gzf_read(int fd, void *buf, size_t count) {
- if (fd<0 || fd>=MAXFD || gzf_fds[fd]==NULL)
- return read(fd, buf, count);
- else
- return gzread(gzf_fds[fd], buf, count);
-}
-
-void gzf_close(int fd) {
- if (fd<0 || fd>=MAXFD || gzf_fds[fd]==NULL)
- close(fd);
- else
- gzclose(gzf_fds[fd]);
-}
-#endif
-
diff --git a/mdk-stage1/insmod-modutils/util/logger.c b/mdk-stage1/insmod-modutils/util/logger.c
deleted file mode 100644
index 4774a0beb..000000000
--- a/mdk-stage1/insmod-modutils/util/logger.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* Error logging facilities.
- Copyright 1996, 1997 Linux International.
-
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <limits.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <syslog.h>
-
-#include "util.h"
-
-/*======================================================================*/
-
-int log;
-
-int errors;
-const char *error_file;
-
-#define STOREMSG
-#ifdef STOREMSG
-struct cbuf {
- struct cbuf *next;
- int type;
- char *msg;
-} *head, *tail;
-
-static void dumpmsg(void)
-{
- for (;head; head = head->next)
- syslog(head->type, "%s", head->msg);
-}
-#endif /* STOREMSG */
-
-void setsyslog(const char *program)
-{
- openlog(program, LOG_CONS, LOG_DAEMON);
-#ifdef STOREMSG
- atexit(dumpmsg);
-#endif
- log = 1;
-}
-
-#ifdef _STANDALONE_
-static int silent;
-
-const char *program_name;
-
-static void savemsg(int type, char *msg)
-{
- struct cbuf *me = (struct cbuf *)xmalloc(sizeof(struct cbuf));
- char *s = xstrdup(msg);
-
- me->next = NULL;
- me->type = type;
- me->msg = s;
-
- if (tail)
- tail->next = me;
- else
- head = me;
- tail = me;
-}
-
-void error(const char *fmt,...)
-{
- va_list args;
-
- if (silent)
- ;
- else if (log) {
- char buf[2*PATH_MAX];
- int n;
-
- if (error_file)
- n = snprintf(buf, sizeof(buf), "%s: ", error_file);
- else
- n = 0;
- va_start(args, fmt);
- vsnprintf(buf + n, sizeof(buf) - n, fmt, args);
- va_end(args);
-#ifdef STOREMSG
- savemsg(LOG_ERR, buf);
-#else
- syslog(LOG_ERR, "%s", buf);
-#endif
- } else {
- if (error_file)
- fprintf(stderr, "%s: ", error_file);
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
- putc('\n', stderr);
- }
-
- errors++;
-}
-
-void lprintf(const char *fmt,...)
-{
- va_list args;
-
- if (silent);
- else if (log) {
- char buf[2*PATH_MAX];
- va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-#ifdef STOREMSG
- savemsg(LOG_INFO, buf);
-#else
- syslog(LOG_INFO, "%s", buf);
-#endif
- } else {
- va_start(args, fmt);
- vfprintf(stdout, fmt, args);
- va_end(args);
- putchar('\n');
- }
-}
-#else /* _STANDALONE_ */
-#include "../../log.h"
-void error(const char *s, ...)
-{
- va_list p;
-
- va_start(p, s);
- vlog_message(s, p);
- va_end(p);
-}
-
-void lprintf(const char *s, ...)
-{
- va_list p;
-
- va_start(p, s);
- vlog_message(s, p);
- va_end(p);
-}
-#endif
-
diff --git a/mdk-stage1/insmod-modutils/util/meta_expand.c b/mdk-stage1/insmod-modutils/util/meta_expand.c
deleted file mode 100644
index 41fb4024c..000000000
--- a/mdk-stage1/insmod-modutils/util/meta_expand.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Handle expansion of meta charaters
- *
- * Copyright 1999 Björn Ekwall <bj0rn@blox.se>
- *
- * "kernelversion" idea from the Debian release via:
- * Wichert Akkerman <wakkerma@cs.leidenuniv.nl>
- *
- * Use wordexp(): idea from Tim Waugh <tim@cyberelk.demon.co.uk>
- *
- * Alpha typecast: Michal Jaegermann <michal@ellpspace.math.ualberta.ca>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_WORDEXP
-#undef HAVE_WORDEXP
-#define HAVE_WORDEXP 0
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
-#include <ctype.h>
-#if HAVE_WORDEXP
-#include <wordexp.h>
-#elif HAVE_GLOB
-#include <glob.h>
-#endif
-#include "util.h"
-
-/*
- * Split into words delimited by whitespace,
- * handle remaining quotes though...
- * If strip_quotes != 0 then strip one level of quotes from the line.
- */
-static void split_line(GLOB_LIST *g, char *line, int strip_quotes)
-{
- int len;
- char *d;
- char *e;
- char *p;
- char tmpline[PATH_MAX];
-
- for (p = line; *p; p = e) {
- /* Skip leading whitespace */
- while (*p && isspace(*p))
- ++p;
-
- /* find end of word */
- d = tmpline;
- for (e = p; *e && !(isspace(*e)); ++e) {
- char match;
-
- /* Quote handling */
- switch (*e) {
- case '\\':
- if (!strip_quotes)
- *d++ = *e;
- break;
-
- case '"':
- case '\'':
- match = *e;
- if (!strip_quotes)
- *d++ = *e;
- for (++e; *e && *e != match; ++e) {
- *d++ = *e;
- if (*e == '\\' && *(e + 1) == match)
- *d++ = *++e;
- }
- if (!strip_quotes)
- *d++ = *e;
- break;
-
- default:
- *d++ = *e;
- break;
- }
- }
-
- if ((len = (int)(d - tmpline)) > 0) {
- char *str = xmalloc(len + 1);
- strncpy(str, tmpline, len);
- str[len] = '\0';
- g->pathv = (char **)xrealloc(g->pathv,
- (g->pathc + 2) * sizeof(char *));
- g->pathv[g->pathc++] = str;
- }
- }
-
- if (g->pathc)
- g->pathv[g->pathc] = NULL;
-}
-
-static int glob_it(char *pt, GLOB_LIST *g)
-{
-#if HAVE_WORDEXP
- wordexp_t w;
-
- memset(&w, 0, sizeof(w));
- if (wordexp(pt, &w, WRDE_UNDEF)) {
- /*
- error("wordexp %s failed", pt);
- */
- return -1;
- }
- /* else */
- g->pathc = w.we_wordc;
- g->pathv = w.we_wordv;
-
- return 0;
-#elif HAVE_GLOB /* but not wordexp */
- glob_t w;
-
- memset(&w, 0, sizeof(w));
- if (glob(pt, GLOB_NOSORT, NULL, &w)) {
- /*
- error("glob %s failed", pt);
- */
- return -1;
- }
- /* else */
- if (w.gl_pathc && strpbrk(w.gl_pathv[0], SHELL_META)) {
- globfree(&w);
- return -1;
- }
- g->pathc = w.gl_pathc;
- g->pathv = w.gl_pathv;
-
- return 0;
-#else /* Neither wordexp nor glob */
- return -1;
-#endif
-}
-
-/*
- * Expand the string (including meta-character) to a list of matches
- *
- * Return 0 if OK else -1
- */
-int meta_expand(char *pt, GLOB_LIST *g, char *base_dir, char *version, int type)
-{
- FILE *fin;
- int len = 0;
- char *line = NULL;
- char *p, *p1;
- char tmpline[PATH_MAX + 1];
- char wrk[sizeof(tmpline)];
- char tmpcmd[2*sizeof(tmpline)+20]; /* room for /bin/echo "text" */
-
- g->pathc = 0;
- g->pathv = NULL;
-
- /*
- * Take care of version dependent expansions
- * Needed for forced version handling
- */
- if ((p = strchr(pt, '`')) != NULL && (type & ME_BUILTIN_COMMAND)) {
- do {
- char *s;
-
- for (s = p + 1; isspace(*s); ++s)
- ;
-
- if (strncmp(s, "uname -r", 8) == 0) {
- while (*s && (*s != '`'))
- ++s;
- if (*s == '`') {
- *p = '\0';
- snprintf(wrk, sizeof(wrk), "%s%s%s",
- pt,
- version,
- s + 1);
- *p = '`';
- }
- strcpy(tmpline, wrk); /* safe, same size */
- pt = tmpline;
- } else if (strncmp(s, "kernelversion", 13) == 0) {
- while (*s && (*s != '`'))
- ++s;
- if (*s == '`') {
- int n;
- char *k;
-
- *p = '\0';
- for (n = 0, k = version; *k; ++k) {
- if (*k == '.' && ++n == 2)
- break;
- }
- snprintf(wrk, sizeof(wrk), "%s%.*s%s",
- pt,
- /* typecast for Alpha */
- (int)(k - version),
- version,
- s + 1);
- *p = '`';
- strcpy(tmpline, wrk); /* safe, same size */
- pt = tmpline;
- }
- } else
- break;
- } while ((p = strchr(pt, '`')) != NULL);
- }
-
- /*
- * Any remaining meta-chars?
- */
- if (strpbrk(pt, SHELL_META) == NULL) {
- /*
- * No meta-chars.
- * Split into words, delimited by whitespace.
- */
- snprintf(wrk, sizeof(wrk), "%s%s", (base_dir ? base_dir : ""), pt);
- strcpy(tmpline, wrk); /* safe, same size */
- if ((p = strtok(tmpline, " \t\n")) != NULL) {
- while (p) {
- g->pathv = (char **)xrealloc(g->pathv,
- (g->pathc + 2) * sizeof(char *));
- g->pathv[g->pathc++] = xstrdup(p);
- p = strtok(NULL, " \t\n");
- }
- }
- if (g->pathc)
- g->pathv[g->pathc] = NULL;
- return 0;
- }
- /* else */
- /*
- * Handle remaining meta-chars
- */
-
- /*
- * Just plain quotes?
- */
- if (strpbrk(pt, "&();|<>$`!{}[]~=+:?*") == NULL &&
- (p = strpbrk(pt, "\"'\\"))) {
- split_line(g, pt, 1);
- return 0;
- }
-
- if (strpbrk(pt, "&();|<>$`\"'\\!{}~+:[]~?*") == NULL) {
- /* Only "=" remaining, should be module options */
- split_line(g, pt, 0);
- return 0;
- }
-
- /*
- * If there are meta-characters and
- * if they are only shell glob meta-characters: do globbing
- */
-#if HAVE_WORDEXP
- if (strpbrk(pt, "&();|<>`\"'\\!{}~=+:") == NULL &&
- strpbrk(pt, "$[]~?*"))
-#else
- if (strpbrk(pt, "&();|<>$`\"'\\!{}~=+:") == NULL &&
- strpbrk(pt, "[]~?*"))
-#endif
- if ((type & ME_GLOB) && glob_it(pt, g) == 0)
- return 0;
-
- if (strpbrk(pt, "&();|<>$`\"'\\!{}~+:[]~?*") == NULL) {
- /* Only "=" remaining, should be module options */
- split_line(g, pt, 0);
- return 0;
- }
-
- /*
- * Last resort: Use "echo".
- * DANGER: Applying shell expansion to user supplied input is a
- * major security risk. Modutils code should only do meta
- * expansion via shell commands for trusted data. Basically
- * this means only for data in the config file. Even that
- * assumes that the user cannot run modprobe as root with
- * their own config file. Programs (including the kernel)
- * that invoke modprobe as root with user supplied input must
- * pass exactly one user supplied parameter and must set
- * safe mode.
- */
- if (!(type & ME_SHELL_COMMAND))
- return 0;
- snprintf(wrk, sizeof(wrk), "%s%s", (base_dir ? base_dir : ""), pt);
- strcpy(tmpline, wrk); /* safe, same size */
- snprintf(tmpcmd, sizeof(tmpcmd), "/bin/echo \"");
- for (p = tmpline, p1 = tmpcmd + strlen(tmpcmd); *p; ++p, ++p1) {
- if (*p == '"' || *p == '\\')
- *p1++ = '\\';
- *p1 = *p;
- }
- *p1++ = '"';
- *p1++ = '\0';
- if (p1 - tmpcmd > sizeof(tmpcmd)) {
- error("tmpcmd overflow, should never happen");
- exit(1);
- }
- if ((fin = popen(tmpcmd, "r")) == NULL) {
- error("Can't execute: %s", tmpcmd);
- return -1;
- }
- /* else */
-
- /*
- * Collect the result
- */
- while (fgets(tmpcmd, PATH_MAX, fin) != NULL) {
- int l = strlen(tmpcmd);
-
- line = (char *)xrealloc(line, len + l + 1);
- line[len] = '\0';
- strcat(line + len, tmpcmd); /* safe, realloc */
- len += l;
- }
- pclose(fin);
-
- if (line) {
- /* shell used to strip one set of quotes. Paranoia code in
- * 2.3.20 stops that strip so we do it ourselves.
- */
- split_line(g, line, 1);
- free(line);
- }
-
- return 0;
-}
diff --git a/mdk-stage1/insmod-modutils/util/modstat.c b/mdk-stage1/insmod-modutils/util/modstat.c
deleted file mode 100644
index ad82306c0..000000000
--- a/mdk-stage1/insmod-modutils/util/modstat.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Get kernel symbol table(s) and other relevant module info.
- *
- * Add module_name_list and l_module_name_list.
- * Keith Owens <kaos@ocs.com.au> November 1999.
- * Björn Ekwall <bj0rn@blox.se> in February 1999 (C)
- * Initial work contributed by Richard Henderson <rth@tamu.edu>
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include "util.h"
-#include "module.h"
-#include "obj.h"
-#include "modstat.h"
-
-struct module_stat *module_stat;
-size_t n_module_stat;
-char *module_name_list;
-size_t l_module_name_list;
-struct module_symbol *ksyms;
-size_t nksyms;
-int k_new_syscalls;
-
-static void *old_kernsym;
-
-/************************************************************************/
-static void drop(void)
-{
- /*
- * Clean the slate for multiple runs
- */
- if (module_stat) {
- struct module_stat *m;
- int i;
-
- for (i = 0, m = module_stat; i < n_module_stat; ++i, ++m) {
- if (m->syms)
- free(m->syms);
- if (m->refs)
- free(m->refs);
- }
- free(module_stat);
- module_stat = NULL;
- n_module_stat = 0;
- }
- if (module_name_list) {
- free(module_name_list);
- module_name_list = NULL;
- l_module_name_list = 0;
- }
- if (ksyms) {
- free(ksyms);
- ksyms = NULL;
- nksyms = 0;
- }
- if (old_kernsym) {
- free(old_kernsym);
- old_kernsym = NULL;
- }
-}
-
-static int new_get_kernel_info(int type)
-{
- struct module_stat *modules;
- struct module_stat *m;
- struct module_symbol *syms;
- struct module_symbol *s;
- size_t ret;
- size_t bufsize;
- size_t nmod;
- size_t nsyms;
- size_t i;
- size_t j;
- char *module_names;
- char *mn;
-
- drop();
-
- /*
- * Collect the loaded modules
- */
- module_names = xmalloc(bufsize = 256);
- while (query_module(NULL, QM_MODULES, module_names, bufsize, &ret)) {
- if (errno != ENOSPC) {
- error("QM_MODULES: %m\n");
- return 0;
- }
- module_names = xrealloc(module_names, bufsize = ret);
- }
- module_name_list = module_names;
- l_module_name_list = bufsize;
- n_module_stat = nmod = ret;
- module_stat = modules = xmalloc(nmod * sizeof(struct module_stat));
- memset(modules, 0, nmod * sizeof(struct module_stat));
-
- /* Collect the info from the modules */
- for (i = 0, mn = module_names, m = modules;
- i < nmod;
- ++i, ++m, mn += strlen(mn) + 1) {
- struct module_info info;
-
- m->name = mn;
- if (query_module(mn, QM_INFO, &info, sizeof(info), &ret)) {
- if (errno == ENOENT) {
- /* The module was removed out from underneath us. */
- m->flags = NEW_MOD_DELETED;
- continue;
- }
- /* else oops */
- error("module %s: QM_INFO: %m", mn);
- return 0;
- }
-
- m->addr = info.addr;
-
- if (type & K_INFO) {
- m->size = info.size;
- m->flags = info.flags;
- m->usecount = info.usecount;
- m->modstruct = info.addr;
- }
-
- if (type & K_REFS) {
- int mm;
- char *mrefs;
- char *mr;
-
- mrefs = xmalloc(bufsize = 64);
- while (query_module(mn, QM_REFS, mrefs, bufsize, &ret)) {
- if (errno != ENOSPC) {
- error("QM_REFS: %m");
- return 1;
- }
- mrefs = xrealloc(mrefs, bufsize = ret);
- }
- for (j = 0, mr = mrefs;
- j < ret;
- ++j, mr += strlen(mr) + 1) {
- for (mm = 0; mm < i; ++mm) {
- if (strcmp(mr, module_stat[mm].name) == 0) {
- m->nrefs += 1;
- m->refs = xrealloc(m->refs, m->nrefs * sizeof(struct module_stat **));
- m->refs[m->nrefs - 1] = module_stat + mm;
- break;
- }
- }
- }
- free(mrefs);
- }
-
- if (type & K_SYMBOLS) { /* Want info about symbols */
- syms = xmalloc(bufsize = 1024);
- while (query_module(mn, QM_SYMBOLS, syms, bufsize, &ret)) {
- if (errno == ENOSPC) {
- syms = xrealloc(syms, bufsize = ret);
- continue;
- }
- if (errno == ENOENT) {
- /*
- * The module was removed out
- * from underneath us.
- */
- m->flags = NEW_MOD_DELETED;
- free(syms);
- goto next;
- } else {
- error("module %s: QM_SYMBOLS: %m", mn);
- return 0;
- }
- }
- nsyms = ret;
-
- m->nsyms = nsyms;
- m->syms = syms;
-
- /* Convert string offsets to string pointers */
- for (j = 0, s = syms; j < nsyms; ++j, ++s)
- s->name += (unsigned long) syms;
- }
- next:
- }
-
- if (type & K_SYMBOLS) { /* Want info about symbols */
- /* Collect the kernel's symbols. */
- syms = xmalloc(bufsize = 16 * 1024);
- while (query_module(NULL, QM_SYMBOLS, syms, bufsize, &ret)) {
- if (errno != ENOSPC) {
- error("kernel: QM_SYMBOLS: %m");
- return 0;
- }
- syms = xrealloc(syms, bufsize = ret);
- }
- nksyms = nsyms = ret;
- ksyms = syms;
-
- /* Convert string offsets to string pointers */
- for (j = 0, s = syms; j < nsyms; ++j, ++s)
- s->name += (unsigned long) syms;
- }
-
- return 1;
-}
-
-#ifdef COMPAT_2_0
-/************************************************************************/
-
-#define mscan(offs,siz,ptr) \
- if (lseek(kmem_fd, (off_t)(offs), SEEK_SET) == -1 || \
- read(kmem_fd, (ptr), (siz)) != (siz)) { \
- if (kmem_fd != -1) \
- close(kmem_fd); \
- error("kmem: %m"); \
- return 0; \
- }
-
-#define OLD_MOD_RUNNING 1
-#define OLD_MOD_DELETED 2
-#define OLD_MOD_VISITED 0x20000000
-
-/* Fetch all the symbols and divvy them up as appropriate for the modules. */
-static int old_get_kernel_info(int type)
-{
- struct old_kernel_sym *kernsym;
- struct old_kernel_sym *k;
- struct module_stat *module;
- struct module_stat *mod;
- struct module_symbol *s = NULL;
- int kmem_fd = -1;
- int nkernsym;
- int nmod;
- int nm;
- int nms;
- int i;
-
- drop();
- module_name_list = xmalloc(1);
- *module_name_list = '\0';
-
- if ((nkernsym = get_kernel_syms(NULL)) < 0) {
- error("get_kernel_syms: %m");
- return 0;
- }
- kernsym = k = xmalloc(nkernsym * sizeof(struct old_kernel_sym));
- old_kernsym = kernsym;
- if (get_kernel_syms(kernsym) != nkernsym) {
- error("inconsistency with get_kernel_syms -- is someone else "
- "playing with modules?");
- free(kernsym);
- return 0;
- }
-
- /* Number of modules */
- for (k = kernsym, nmod = 0, i = 0; i < nkernsym; ++i, ++k) {
- if (k->name[0] == '#') {
- if (k->name[1]) {
- ++nmod;
- i = strlen(k->name+1) + 1;
- module_name_list =
- xrealloc(module_name_list,
- l_module_name_list + i);
- strcpy(module_name_list+l_module_name_list, /* safe, xrealloc */
- k->name+1);
- l_module_name_list += i; /* NUL separated strings */
- }
- else
- break;
- }
- }
- module_stat = mod = module = xmalloc(nmod * sizeof(struct module_stat));
- memset(module, 0, nmod * sizeof(struct module_stat));
- n_module_stat = nmod;
-
- /*
- * Will we need kernel internal info?
- */
- if ((type & K_INFO) || (type & K_REFS)) {
- if ((kmem_fd = open("/dev/kmem", O_RDONLY)) < 0) {
- perror("ksyms: open /dev/kmem");
- return 0;
- }
- }
-
- /*
- * Collect the module information.
- */
- for (k = kernsym, nm = 0, i = 0; i < nkernsym; ++i, ++k) {
- if (k->name[0] == '#') {
- struct old_kernel_sym *p;
- struct old_module info;
-
- if (k->name[1] == '\0')
- break; /* kernel resident symbols follow */
- /* else normal module */
-
- module = mod++;
- ++nm;
- module->name = k->name + 1;
- module->modstruct = k->value;
-
- if ((type & K_INFO) || (type & K_REFS)) {
- long tmp;
- /*
- * k->value is the address of the
- * struct old_module
- * in the kernel (for use via /dev/kmem)
- */
- mscan(k->value, sizeof(info), &info);
- module->addr = info.addr;
- module->size = info.size * getpagesize();
-
- mscan(info.addr, sizeof(long), &tmp);
- module->flags = info.state &
- (OLD_MOD_RUNNING | OLD_MOD_DELETED);
- module->flags |= NEW_MOD_USED_ONCE; /* Cheat */
- if (tmp & OLD_MOD_AUTOCLEAN)
- module->flags |= NEW_MOD_AUTOCLEAN;
- if (tmp & OLD_MOD_VISITED)
- module->flags |= NEW_MOD_VISITED;
-
- module->usecount = tmp & ~(OLD_MOD_AUTOCLEAN | OLD_MOD_VISITED);
- }
-
- if ((type & K_REFS) && info.ref) {
- struct old_module_ref mr;
- int j;
- unsigned long ref = info.ref;
-
- do {
- mscan(ref, sizeof(struct old_module_ref), &mr);
- for (j = 0; j < nm -1; ++j) {
- if (mr.module == module_stat[j].modstruct) {
- module->nrefs += 1;
- module->refs = xrealloc(module->refs, module->nrefs * sizeof(struct module_stat **));
- module->refs[module->nrefs - 1] = module_stat + j;
- break;
- }
- }
- } while ((ref = mr.next) != 0);
- }
-
- if (!(type & K_SYMBOLS))
- continue;
- /*
- * Find out how many symbols this module has.
- */
- for (nms = 0, p = k+1; p->name[0] != '#'; ++p)
- ++nms;
- s = xmalloc(nms * sizeof(struct module_symbol));
- module->syms = s;
- module->nsyms = nms;
- } else if (type & K_SYMBOLS) { /* Want info about symbols */
- s->name = (unsigned long) k->name;
- s->value = k->value;
- ++s;
- }
- }
- if ((type & K_INFO) || (type & K_REFS)) {
- if (kmem_fd != -1)
- close(kmem_fd);
- }
-
- /*
- * Kernel resident symbols follows
- */
- if (type & K_SYMBOLS) { /* Want info about symbols */
- if (k->name[0] == '#')
- ++k;
- nksyms = nkernsym - (k - kernsym);
- if (nksyms) {
- ksyms = s = xmalloc(nksyms * sizeof(struct module_symbol));
- for (i = 0; i < nksyms; ++i, ++k) {
- if (k->name[0] != '#') {
- s->name = (unsigned long) k->name;
- s->value = k->value;
- ++s;
- }
- }
- nksyms = s - ksyms;
- } else
- ksyms = NULL;
- }
-
- return 1;
-}
-#endif /* COMPAT_2_0 */
-
-int get_kernel_info(int type)
-{
- k_new_syscalls = !query_module(NULL, 0, NULL, 0, NULL);
-
-#ifdef COMPAT_2_0
- if (!k_new_syscalls)
- return old_get_kernel_info(type);
-#endif /* COMPAT_2_0 */
-
- return new_get_kernel_info(type);
-}
diff --git a/mdk-stage1/insmod-modutils/util/snap_shot.c b/mdk-stage1/insmod-modutils/util/snap_shot.c
deleted file mode 100644
index adf54d28e..000000000
--- a/mdk-stage1/insmod-modutils/util/snap_shot.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Take a snap shot of ksyms and modules for Oops debugging
- Copyright 1999 Linux International.
-
- Contributed by Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <time.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "module.h"
-#include "obj.h"
-#include "modstat.h"
-#include "util.h"
-
-static char snap_dir[] = "/var/log/ksymoops";
-
-/* If snap_dir exists, take a snap shot of ksyms and modules to snap_dir.
- * Prefix the files with the equivalent of
- * date +%Y%m%d%T%M%S | sed -e 's/://g'
- */
-void snap_shot(const char *module_names, int n_module_names)
-{
- char file[] = "ccyymmddhhmmss.modules", buffer[4096];
- static char *infile[] = { "/proc/ksyms", "/proc/modules" };
- static char *suffix[] = { "ksyms", "modules" };
- struct tm *local;
- time_t t;
- int i, l;
- FILE *in, *out;
-
- if (module_names) {
- /* Only snap shot if the list of modules has changed.
- * Otherwise auto cleanup takes a snap shot every time
- * and ends up with a large snap shot directory.
- */
- char *new_module_names;
- size_t n_new_module_names;
- get_kernel_info(0);
- new_module_names = module_name_list;
- n_new_module_names = n_module_stat;
- if (n_module_names && n_new_module_names == n_module_names) {
- while (n_module_names) {
- if (strcmp(module_names, new_module_names))
- break; /* difference detected */
- i = strlen(module_names) + 1;
- module_names += i;
- new_module_names += i;
- --n_module_names;
- }
- }
- if (!n_module_names)
- return; /* no difference, no need for snap shot */
- }
-
- if (chdir(snap_dir))
- return;
- t = time(NULL);
- local = localtime(&t);
- for (i = 0; i < sizeof(infile)/sizeof(infile[0]); ++i) {
- snprintf(file, sizeof(file), "%04d%02d%02d%02d%02d%02d.%s",
- local->tm_year+1900,
- local->tm_mon + 1,
- local->tm_mday,
- local->tm_hour,
- local->tm_min,
- local->tm_sec,
- suffix[i]);
- out = fopen(file, "w");
- if (!out) {
- error("cannot create %s/%s %m", snap_dir, file);
- return;
- }
- in = fopen(infile[i], "r");
- if (!in) {
- error("cannot open %s %m", infile[i]);
- return;
- }
- while ((l = fread(buffer, 1, sizeof(buffer), in)) > 0) {
- if (fwrite(buffer, l, 1, out) != 1) {
- error("unable to write to %s %m", file);
- fclose(in);
- fclose(out);
- return;
- }
- }
- if (ferror(in))
- error("unable to read from %s %m", infile[i]);
- fclose(in);
- fflush(out);
- fclose(out);
- }
-}
-
-/* If snap_dir exists, log a message to snap_dir. The log file is called the
- * equivalent of date +%Y%m%d | sed -e 's/://g'. Each line is prefixed with
- * timestamp down to seconds and followed by a newline.
- */
-void snap_shot_log(const char *fmt,...)
-{
- char date[] = "ccyymmdd", file[] = "ccyymmdd.log", stamp[] = "ccyymmdd hhmmss";
- struct tm *local;
- time_t t;
- FILE *log;
- va_list args;
- int save_errno = errno;
-
- if (chdir(snap_dir))
- return;
- t = time(NULL);
- local = localtime(&t);
- snprintf(date, sizeof(date), "%04d%02d%02d",
- local->tm_year+1900,
- local->tm_mon + 1,
- local->tm_mday);
- snprintf(file, sizeof(file), "%s.log", date);
- log = fopen(file, "a");
- if (!log) {
- error("cannot create %s/%s %m", snap_dir, file);
- return;
- }
- snprintf(stamp, sizeof(stamp), "%s %02d%02d%02d",
- date,
- local->tm_hour,
- local->tm_min,
- local->tm_sec);
- fprintf(log, "%s ", stamp);
- va_start(args, fmt);
- errno = save_errno; /* fmt may use %m */
- vfprintf(log, fmt, args);
- va_end(args);
- fprintf(log, "\n");
- fflush(log);
- fclose(log);
-}
diff --git a/mdk-stage1/insmod-modutils/util/sys_cm.c b/mdk-stage1/insmod-modutils/util/sys_cm.c
deleted file mode 100644
index d19a5ba4b..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_cm.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-#if defined(__i386__) || defined(__m68k__) || defined(__arm__)
-
-#define __NR__create_module __NR_create_module
-static inline _syscall2(long, _create_module, const char *, name, size_t, size)
-
-unsigned long create_module(const char *name, size_t size)
-{
- /* Why all this fuss?
-
- In linux 2.1, the address returned by create module point in
- kernel space which is now mapped at the top of user space (at
- 0xc0000000 on i386). This looks like a negative number for a
- long. The normal syscall macro of linux 2.0 (and all libc compile
- with linux 2.0 or below) consider that the return value is a
- negative number and consider it is an error number (A kernel
- convention, return value are positive or negative, indicating the
- error number).
-
- By checking the value of errno, we know if we have been fooled by
- the syscall2 macro and we fix it. */
-
- long ret = _create_module(name, size);
- if (ret == -1 && errno > 125)
- {
- ret = -errno;
- errno = 0;
- }
- return ret;
-}
-
-#elif defined(__alpha__)
-
-/* Alpha doesn't have the same problem, exactly, but a bug in older
- kernels fails to clear the error flag. Clear it here explicitly. */
-
-#define __NR__create_module __NR_create_module
-static inline _syscall4(unsigned long, _create_module, const char *, name,
- size_t, size, size_t, dummy, size_t, err);
-
-unsigned long create_module(const char *name, size_t size)
-{
- return _create_module(name, size, 0, 0);
-}
-
-#else
-
-/* Sparc, MIPS, (and Alpha, but that's another problem) don't mistake
- return values for errors due to the nature of the system call. */
-
-_syscall2(unsigned long, create_module, const char *, name, size_t, size)
-
-#endif
diff --git a/mdk-stage1/insmod-modutils/util/sys_dm.c b/mdk-stage1/insmod-modutils/util/sys_dm.c
deleted file mode 100644
index 611234efa..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_dm.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-_syscall1(int, delete_module, const char *, name)
diff --git a/mdk-stage1/insmod-modutils/util/sys_gks.c b/mdk-stage1/insmod-modutils/util/sys_gks.c
deleted file mode 100644
index b639fc990..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_gks.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-_syscall1(int, get_kernel_syms, struct old_kernel_sym *, ksyms)
diff --git a/mdk-stage1/insmod-modutils/util/sys_nim.c b/mdk-stage1/insmod-modutils/util/sys_nim.c
deleted file mode 100644
index c267ddf10..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_nim.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-#ifndef CONFIG_USE_SYSCALL
-
-extern int init_module(const char *name, const struct module *info);
-
-int
-sys_init_module(const char *name, const struct module *info)
-{
- return init_module(name, info);
-}
-
-#else
-
-#define __NR_sys_init_module __NR_init_module
-_syscall2(int, sys_init_module, const char *, name,
- const struct module *, info)
-
-#endif
diff --git a/mdk-stage1/insmod-modutils/util/sys_oim.c b/mdk-stage1/insmod-modutils/util/sys_oim.c
deleted file mode 100644
index b915e36a5..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_oim.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-#define __NR_old_sys_init_module __NR_init_module
-_syscall5(int, old_sys_init_module, const char *, name, char *, code,
- unsigned, codesize, struct old_mod_routines *, routines,
- struct old_symbol_table *, symtab)
diff --git a/mdk-stage1/insmod-modutils/util/sys_qm.c b/mdk-stage1/insmod-modutils/util/sys_qm.c
deleted file mode 100644
index ba478832b..000000000
--- a/mdk-stage1/insmod-modutils/util/sys_qm.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Functions for the Linux module syscall interface.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <errno.h>
-
-#include "module.h"
-
-/* Kernel headers before 2.1.mumble need this on the Alpha to get
- _syscall* defined. */
-#define __LIBRARY__
-
-#include <asm/unistd.h>
-
-
-/*======================================================================*/
-
-/* I am fucking tired of the "this doesn't build on 2.0.x" questions.
- But if you ask, we still officially require 2.1.x to build. */
-#if !defined(__NR_query_module)
-# if defined(__i386__)
-# define __NR_query_module 167
-# elif defined(__alpha__)
-# define __NR_query_module 347
-# elif defined(__sparc__)
-# define __NR_query_module 184
-# elif defined(__mc68000__)
-# define __NR_query_module 167
-# elif defined(__arm__)
-# define __NR_query_module (__NR_SYSCALL_BASE + 167)
-# elif defined(__mips__)
-# define __NR_query_module 4187
-# endif
-#endif
-
-_syscall5(int, query_module, const char *, name, int, which,
- void *, buf, size_t, bufsize, size_t *, ret);
diff --git a/mdk-stage1/insmod-modutils/util/xftw.c b/mdk-stage1/insmod-modutils/util/xftw.c
deleted file mode 100644
index fe764a63c..000000000
--- a/mdk-stage1/insmod-modutils/util/xftw.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * modutils specific implementation of ftw().
- *
- * Copyright 2000:
- * Keith Owens <kaos@ocs.com.au> August 2000
- *
- * This file is part of the Linux modutils.
- *
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-/*
- modutils requires special processing during the file tree walk
- of /lib/modules/<version> and any paths that the user specifies.
- The standard ftw() does a blind walk of all paths and can end
- up following the build symlink down the kernel source tree.
- Although nftw() has the option to get more control such as not
- automatically following symbolic links, even that is not enough
- for modutils. The requirements are:
-
- Paths must be directories or symlinks to directories.
-
- Each directory is read and sorted into alphabetical order
- before processing.
-
- A directory is type 1 iff it was specified on a path statement
- (either explicit or default) and the directory contains a
- subdirectory with one of the known names and the directory name
- does not end with "/kernel". Otherwise it is type 2.
-
- In a type 1 directory, walk the kernel subdirectory if it exists,
- then the old known names in their historical order then any
- remaining directory entries in alphabetical order and finally any
- non-directory entries in alphabetical order.
-
- Entries in a type 1 directory are filtered against the "prune"
- list. A type 1 directory can contain additional files which
- are not modules nor symlinks to modules. The prune list skips
- known additional files, if a distribution wants to store
- additional text files in the top level directory they should be
- added to the prune list.
-
- A type 2 directory must contain only modules or symlinks to
- modules. They are processed in alphabetical order, without
- pruning. Symlinks to directories are an error in type 2
- directories.
-
- The user function is not called for type 1 directories, nor for
- pruned entries. It is called for type 2 directories and their
- contents. It is also called for any files left in a type 1
- directory after pruning and processing type 2 subdirectories.
- The user function never sees symlinks, they are resolved before
- calling the function.
-
- Why have different directory types? The original file tree
- walk was not well defined. Some users specified each directory
- individually, others just pointed at the top level directory.
- Either version worked until the "build" symlink was added. Now
- users who specify the top level directory end up running the
- entire kernel source tree looking for modules, not nice. We
- cannot just ignore symlinks because pcmcia uses symlinks to
- modules for backwards compatibility.
-
- Type 1 is when a user specifies the top level directory which needs
- special processing, type 2 is individual subdirectories. But the
- only way to tell the difference is by looking at the contents. The
- "/kernel" directory introduced in 2.3.12 either contains nothing
- (old make modules_install) or contains all the kernel modules using
- the same tree structure as the source. Because "/kernel" can
- contain old names but is really a type 2 directory, it is detected
- as a special case.
- */
-
-#include <dirent.h>
-#include <errno.h>
-#include <limits.h>
-#include <malloc.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#include "util.h"
-#include "config.h"
-
-extern char *tbpath[];
-
-extern OPT_LIST *prune_list;
-extern int n_prune_list;
-
-extern char *tbtype[];
-
-struct xftw_dirent {
- struct stat statbuf;
- char *name;
- char *fullname;
-};
-
-#define XFTW_MAXDEPTH 64 /* Maximum directory depth handled */
-
-typedef struct {
- struct xftw_dirent *contents;
- int size;
- int used;
-} xftw_tree_t;
-
-static xftw_tree_t tree[XFTW_MAXDEPTH];
-
-/* Free all data for one tree level */
-static void xftw_free_tree(int depth)
-{
- int i;
- xftw_tree_t *t = tree+depth;
- for (i = 0; i < t->size; ++i) {
- free(t->contents[i].name);
- free(t->contents[i].fullname);
- }
- free(t->contents);
- t->contents = NULL;
- t->size = 0;
- t->used = 0;
-}
-
-/* Increment dirents used at this depth, resizing if necessary */
-static void xftw_add_dirent(int depth)
-{
- xftw_tree_t *t = tree+depth;
- int i, size = t->size;
- if (++t->used < size)
- return;
- size += 10; /* arbitrary increment */
- t->contents = xrealloc(t->contents, size*sizeof(*(t->contents)));
- for (i = t->size; i < size; ++i) {
- memset(&(t->contents[i].statbuf), 0, sizeof(t->contents[i].statbuf));
- t->contents[i].name = NULL;
- t->contents[i].fullname = NULL;
- }
- t->size = size;
-}
-
-/* Concatenate directory name and entry name into one string.
- * Note: caller must free result or leak.
- */
-static char *xftw_dir_name(const char *directory, const char *entry)
-{
- int i = strlen(directory);
- char *name;
- if (entry)
- i += strlen(entry);
- i += 2;
- name = xmalloc(i);
- strcpy(name, directory); /* safe, xmalloc */
- if (*directory && entry)
- strcat(name, "/"); /* safe, xmalloc */
- if (entry)
- strcat(name, entry); /* safe, xmalloc */
- return(name);
-}
-
-/* Call the user function for a directory entry */
-static int xftw_do_name(const char *directory, const char *entry, struct stat *sb, xftw_func_t funcptr)
-{
- int ret = 0;
- char *name = xftw_dir_name(directory, entry);
-
- if (S_ISLNK(sb->st_mode)) {
- char real[PATH_MAX], *newname;
- verbose("resolving %s symlink to ", name);
- if (!(newname = realpath(name, real))) {
- if (errno == ENOENT) {
- verbose("%s: does not exist, dangling symlink ignored\n", real);
- goto cleanup;
- }
- perror("... failed");
- goto cleanup;
- }
- verbose("%s ", newname);
- if (lstat(newname, sb)) {
- error("lstat on %s failed ", newname);
- perror("");
- goto cleanup;
- }
- free(name);
- name = xstrdup(newname);
- }
-
- if (!S_ISREG(sb->st_mode) &&
- !S_ISDIR(sb->st_mode)) {
- error("%s is not plain file nor directory\n", name);
- goto cleanup;
- }
-
- verbose("user function %s\n", name);
- ret = (*funcptr)(name, sb);
-cleanup:
- free(name);
- return(ret);
-}
-
-/* Sort directory entries into alphabetical order */
-static int xftw_sortdir(const void *a, const void *b)
-{
- return(strcmp(((struct xftw_dirent *)a)->name, ((struct xftw_dirent *)b)->name));
-}
-
-/* Read a directory and sort it, ignoring "." and ".." */
-static int xftw_readdir(const char *directory, int depth)
-{
- DIR *d;
- struct dirent *ent;
- verbose("xftw_readdir %s\n", directory);
- if (!(d = opendir(directory))) {
- perror(directory);
- return(1);
- }
- while ((ent = readdir(d))) {
- char *name;
- struct xftw_dirent *f;
- if (strcmp(ent->d_name, ".") == 0 ||
- strcmp(ent->d_name, "..") == 0)
- continue;
- name = xftw_dir_name(directory, ent->d_name);
- xftw_add_dirent(depth);
- f = tree[depth].contents+tree[depth].used-1;
- f->name = xstrdup(ent->d_name);
- f->fullname = name; /* do not free name, it is in use */
- if (lstat(name, &(f->statbuf))) {
- perror(name);
- return(1);
- }
- }
- closedir(d);
- qsort(tree[depth].contents, tree[depth].used, sizeof(*(tree[0].contents)), &xftw_sortdir);
- return(0);
-}
-
-/* Process a type 2 directory */
-int xftw_type2(const char *directory, const char *entry, int depth, xftw_func_t funcptr)
-{
- int ret, i;
- xftw_tree_t *t = tree+depth;
- struct stat statbuf;
- char *dirname = xftw_dir_name(directory, entry);
-
- verbose("type 2 %s\n", dirname);
- if (depth > XFTW_MAXDEPTH) {
- error("xftw_type2 exceeded maxdepth\n");
- ret = 1;
- goto cleanup;
- }
- if ((ret = xftw_readdir(dirname, depth)))
- goto cleanup;
-
- t = tree+depth;
- /* user function sees type 2 directories */
- if ((ret = lstat(dirname, &statbuf)) ||
- (ret = xftw_do_name("", dirname, &statbuf, funcptr)))
- goto cleanup;
-
- /* user sees all contents of type 2 directory, no pruning */
- for (i = 0; i < t->used; ++i) {
- struct xftw_dirent *c = t->contents+i;
- if (S_ISLNK(c->statbuf.st_mode)) {
- if (!stat(c->name, &(c->statbuf))) {
- if (S_ISDIR(c->statbuf.st_mode)) {
- error("symlink to directory is not allowed, %s ignored\n", c->name);
- *(c->name) = '\0'; /* ignore it */
- }
- }
- }
- if (!*(c->name))
- continue;
- if (S_ISDIR(c->statbuf.st_mode)) {
- /* recursion is the curse of the programming classes */
- ret = xftw_type2(dirname, c->name, depth+1, funcptr);
- if (ret)
- goto cleanup;
- }
- else if ((ret = xftw_do_name(dirname, c->name, &(c->statbuf), funcptr)))
- goto cleanup;
- *(c->name) = '\0'; /* processed */
- }
-
- ret = 0;
-cleanup:
- free(dirname);
- return(ret);
-}
-
-/* Only external visible function. Decide on the type of directory and
- * process accordingly.
- */
-int xftw(const char *directory, xftw_func_t funcptr)
-{
- struct stat statbuf;
- int ret, i, j, type;
- xftw_tree_t *t;
- struct xftw_dirent *c;
-
- verbose("xftw starting at %s ", directory);
- if (lstat(directory, &statbuf)) {
- verbose("lstat on %s failed\n", directory);
- return(0);
- }
- if (S_ISLNK(statbuf.st_mode)) {
- char real[PATH_MAX];
- verbose("resolving symlink to ");
- if (!(directory = realpath(directory, real))) {
- if (errno == ENOENT) {
- verbose("%s: does not exist, dangling symlink ignored\n", real);
- return(0);
- }
- perror("... failed");
- return(-1);
- }
- verbose("%s ", directory);
- if (lstat(directory, &statbuf)) {
- error("lstat on %s failed ", directory);
- perror("");
- return(-1);
- }
- }
- if (!S_ISDIR(statbuf.st_mode)) {
- error("%s is not a directory\n", directory);
- return(-1);
- }
- verbose("\n");
-
- /* All returns after this point must be via cleanup */
-
- if ((ret = xftw_readdir(directory, 0)))
- goto cleanup;
-
- t = tree; /* depth 0 */
- type = 2;
- for (i = 0 ; type == 2 && i < t->used; ++i) {
- c = t->contents+i;
- for (j = 0; tbtype[j]; ++j) {
- if (strcmp(c->name, tbtype[j]) == 0 &&
- S_ISDIR(c->statbuf.st_mode)) {
- const char *p = directory + strlen(directory) - 1;
- if (*p == '/')
- --p;
- if (p - directory >= 6 && strncmp(p-6, "/kernel", 7) == 0)
- continue; /* "/kernel" path is a special case, type 2 */
- type = 1; /* known subdirectory */
- break;
- }
- }
- }
-
- if (type == 1) {
- OPT_LIST *p;
- /* prune entries in type 1 directories only */
- for (i = 0 ; i < t->used; ++i) {
- for (p = prunelist; p->name; ++p) {
- c = t->contents+i;
- if (strcmp(p->name, c->name) == 0) {
- verbose("pruned %s\n", c->name);
- *(c->name) = '\0'; /* ignore */
- }
- }
- }
- /* run known subdirectories first in historical order, "kernel" is now top of list */
- for (i = 0 ; i < t->used; ++i) {
- c = t->contents+i;
- for (j = 0; tbtype[j]; ++j) {
- if (*(c->name) &&
- strcmp(c->name, tbtype[j]) == 0 &&
- S_ISDIR(c->statbuf.st_mode)) {
- if ((ret = xftw_type2(directory, c->name, 1, funcptr)))
- goto cleanup;
- *(c->name) = '\0'; /* processed */
- }
- }
- }
- /* any other directories left, in alphabetical order */
- for (i = 0 ; i < t->used; ++i) {
- c = t->contents+i;
- if (*(c->name) &&
- S_ISDIR(c->statbuf.st_mode)) {
- if ((ret = xftw_type2(directory, c->name, 1, funcptr)))
- goto cleanup;
- *(c->name) = '\0'; /* processed */
- }
- }
- /* anything else is passed to the user function */
- for (i = 0 ; i < t->used; ++i) {
- c = t->contents+i;
- if (*(c->name)) {
- verbose("%s found in type 1 directory %s\n", c->name, directory);
- if ((ret = xftw_do_name(directory, c->name, &(c->statbuf), funcptr)))
- goto cleanup;
- *(c->name) = '\0'; /* processed */
- }
- }
- }
- else {
- /* type 2 */
- xftw_free_tree(0);
- if ((ret = xftw_type2(directory, NULL, 0, funcptr)))
- goto cleanup;
- }
-
- /* amazing, it all worked */
- ret = 0;
-cleanup:
- for (i = 0; i < XFTW_MAXDEPTH; ++i)
- xftw_free_tree(i);
- return(ret);
-}
diff --git a/mdk-stage1/insmod-modutils/util/xmalloc.c b/mdk-stage1/insmod-modutils/util/xmalloc.c
deleted file mode 100644
index da0be2953..000000000
--- a/mdk-stage1/insmod-modutils/util/xmalloc.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Misc utility functions.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include "util.h"
-
-
-/*======================================================================*/
-
-void *
-xmalloc(size_t size)
-{
- void *ptr = malloc(size ? size : 1);
- if (!ptr)
- {
- error("Out of memory");
- exit(1);
- }
- return ptr;
-}
diff --git a/mdk-stage1/insmod-modutils/util/xrealloc.c b/mdk-stage1/insmod-modutils/util/xrealloc.c
deleted file mode 100644
index adc0558f1..000000000
--- a/mdk-stage1/insmod-modutils/util/xrealloc.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Misc utility functions.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include "util.h"
-
-
-/*======================================================================*/
-
-void *
-xrealloc(void *old, size_t size)
-{
- void *ptr = realloc(old, size);
- if (!ptr)
- {
- error("Out of memory");
- exit(1);
- }
- return ptr;
-}
diff --git a/mdk-stage1/insmod-modutils/util/xstrcat.c b/mdk-stage1/insmod-modutils/util/xstrcat.c
deleted file mode 100644
index ed4a2bf20..000000000
--- a/mdk-stage1/insmod-modutils/util/xstrcat.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Misc utility functions.
- Copyright 2000 Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdlib.h>
-#include <string.h>
-#include "util.h"
-
-
-/*======================================================================*/
-
-char *
-xstrcat(char *dest, const char *src, size_t size)
-{
- int ldest = strlen(dest);
- int lsrc = strlen(src);
- if ((size - ldest - 1) < lsrc) {
- error("xstrcat: destination overflow");
- exit(1);
- }
- memcpy(dest+ldest, src, lsrc+1);
- return(dest);
-}
diff --git a/mdk-stage1/insmod-modutils/util/xstrdup.c b/mdk-stage1/insmod-modutils/util/xstrdup.c
deleted file mode 100644
index 46889a094..000000000
--- a/mdk-stage1/insmod-modutils/util/xstrdup.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Misc utility functions.
- Copyright 1996, 1997 Linux International.
- Contributed by Richard Henderson <rth@tamu.edu>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "util.h"
-
-
-/*======================================================================*/
-
-char *
-xstrdup(const char *s)
-{
- char *n = strdup(s);
- if (!n)
- {
- error("Out of memory");
- exit(1);
- }
- return n;
-}
diff --git a/mdk-stage1/insmod-modutils/util/xsystem.c b/mdk-stage1/insmod-modutils/util/xsystem.c
deleted file mode 100644
index 8ffa490a9..000000000
--- a/mdk-stage1/insmod-modutils/util/xsystem.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Misc utility functions.
- Copyright 2000 Keith Owens <kaos@ocs.com.au>
-
- This file is part of the Linux modutils.
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <errno.h>
-#include <unistd.h>
-
-
-/*======================================================================*/
-
-/* Clone of the system() function From Steven's Advanced Programming in a Unix
- * Environment. Modified to use *argv[] and execvp to avoid shell expansion
- * problems, modutils runs as root so system() is unsafe.
- */
-
-int
-xsystem(const char *file, char *const argv[])
-{
- pid_t pid;
- int status;
- if ((pid = fork()) < 0)
- return(-1);
- if (pid == 0) {
- execvp(file, argv);
- _exit(127);
- }
- while (waitpid(pid, &status, 0) < 0) {
- if (errno != EINTR)
- return(-1);
- }
- return(status);
-}
diff --git a/mdk-stage1/insmod.h b/mdk-stage1/insmod.h
deleted file mode 100644
index 67a746858..000000000
--- a/mdk-stage1/insmod.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _INSMOD_INTERFACE_H_
-#define _INSMOD_INTERFACE_H_
-
-int insmod_call(char * full_filename, char * params);
-
-#endif
diff --git a/mdk-stage1/linux-2.2/nfs.h b/mdk-stage1/linux-2.2/nfs.h
deleted file mode 100644
index 7936d5a71..000000000
--- a/mdk-stage1/linux-2.2/nfs.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * NFS protocol definitions
- */
-#ifndef _LINUX_NFS_H
-#define _LINUX_NFS_H
-
-#include <linux/sunrpc/msg_prot.h>
-
-#define NFS_PORT 2049
-#define NFS_MAXDATA 8192
-#define NFS_MAXPATHLEN 1024
-#define NFS_MAXNAMLEN 255
-#define NFS_MAXGROUPS 16
-#define NFS_FHSIZE 32
-#define NFS_COOKIESIZE 4
-#define NFS_FIFO_DEV (-1)
-#define NFSMODE_FMT 0170000
-#define NFSMODE_DIR 0040000
-#define NFSMODE_CHR 0020000
-#define NFSMODE_BLK 0060000
-#define NFSMODE_REG 0100000
-#define NFSMODE_LNK 0120000
-#define NFSMODE_SOCK 0140000
-#define NFSMODE_FIFO 0010000
-
-
-enum nfs_stat {
- NFS_OK = 0,
- NFSERR_PERM = 1,
- NFSERR_NOENT = 2,
- NFSERR_IO = 5,
- NFSERR_NXIO = 6,
- NFSERR_EAGAIN = 11,
- NFSERR_ACCES = 13,
- NFSERR_EXIST = 17,
- NFSERR_XDEV = 18,
- NFSERR_NODEV = 19,
- NFSERR_NOTDIR = 20,
- NFSERR_ISDIR = 21,
- NFSERR_INVAL = 22, /* that Sun forgot */
- NFSERR_FBIG = 27,
- NFSERR_NOSPC = 28,
- NFSERR_ROFS = 30,
- NFSERR_OPNOTSUPP = 45,
- NFSERR_NAMETOOLONG = 63,
- NFSERR_NOTEMPTY = 66,
- NFSERR_DQUOT = 69,
- NFSERR_STALE = 70,
- NFSERR_WFLUSH = 99
-};
-
-enum nfs_ftype {
- NFNON = 0,
- NFREG = 1,
- NFDIR = 2,
- NFBLK = 3,
- NFCHR = 4,
- NFLNK = 5,
- NFSOCK = 6,
- NFBAD = 7,
- NFFIFO = 8
-};
-
-struct nfs_fh {
- char data[NFS_FHSIZE];
-};
-
-#define NFS_PROGRAM 100003
-#define NFS_VERSION 2
-#define NFSPROC_NULL 0
-#define NFSPROC_GETATTR 1
-#define NFSPROC_SETATTR 2
-#define NFSPROC_ROOT 3
-#define NFSPROC_LOOKUP 4
-#define NFSPROC_READLINK 5
-#define NFSPROC_READ 6
-#define NFSPROC_WRITECACHE 7
-#define NFSPROC_WRITE 8
-#define NFSPROC_CREATE 9
-#define NFSPROC_REMOVE 10
-#define NFSPROC_RENAME 11
-#define NFSPROC_LINK 12
-#define NFSPROC_SYMLINK 13
-#define NFSPROC_MKDIR 14
-#define NFSPROC_RMDIR 15
-#define NFSPROC_READDIR 16
-#define NFSPROC_STATFS 17
-
-/* Mount support for NFSroot */
-#ifdef __KERNEL__
-#define NFS_MNT_PROGRAM 100005
-#define NFS_MNT_VERSION 1
-#define NFS_MNT_PORT 627
-#define NFS_MNTPROC_MNT 1
-#define NFS_MNTPROC_UMNT 3
-#endif
-
-#if defined(__KERNEL__) || defined(NFS_NEED_KERNEL_TYPES)
-
-extern struct rpc_program nfs_program;
-extern struct rpc_stat nfs_rpcstat;
-
-struct nfs_time {
- __u32 seconds;
- __u32 useconds;
-};
-
-struct nfs_fattr {
- enum nfs_ftype type;
- __u32 mode;
- __u32 nlink;
- __u32 uid;
- __u32 gid;
- __u32 size;
- __u32 blocksize;
- __u32 rdev;
- __u32 blocks;
- __u32 fsid;
- __u32 fileid;
- struct nfs_time atime;
- struct nfs_time mtime;
- struct nfs_time ctime;
-};
-
-struct nfs_sattr {
- __u32 mode;
- __u32 uid;
- __u32 gid;
- __u32 size;
- struct nfs_time atime;
- struct nfs_time mtime;
-};
-
-struct nfs_fsinfo {
- __u32 tsize;
- __u32 bsize;
- __u32 blocks;
- __u32 bfree;
- __u32 bavail;
-};
-
-struct nfs_writeargs {
- struct nfs_fh * fh;
- __u32 offset;
- __u32 count;
- const void * buffer;
-};
-
-#ifdef NFS_NEED_XDR_TYPES
-
-struct nfs_sattrargs {
- struct nfs_fh * fh;
- struct nfs_sattr * sattr;
-};
-
-struct nfs_diropargs {
- struct nfs_fh * fh;
- const char * name;
-};
-
-struct nfs_readargs {
- struct nfs_fh * fh;
- __u32 offset;
- __u32 count;
- void * buffer;
-};
-
-struct nfs_createargs {
- struct nfs_fh * fh;
- const char * name;
- struct nfs_sattr * sattr;
-};
-
-struct nfs_renameargs {
- struct nfs_fh * fromfh;
- const char * fromname;
- struct nfs_fh * tofh;
- const char * toname;
-};
-
-struct nfs_linkargs {
- struct nfs_fh * fromfh;
- struct nfs_fh * tofh;
- const char * toname;
-};
-
-struct nfs_symlinkargs {
- struct nfs_fh * fromfh;
- const char * fromname;
- const char * topath;
- struct nfs_sattr * sattr;
-};
-
-struct nfs_readdirargs {
- struct nfs_fh * fh;
- __u32 cookie;
- void * buffer;
- unsigned int bufsiz;
-};
-
-struct nfs_diropok {
- struct nfs_fh * fh;
- struct nfs_fattr * fattr;
-};
-
-struct nfs_readres {
- struct nfs_fattr * fattr;
- unsigned int count;
-};
-
-struct nfs_readlinkres {
- char ** string;
- unsigned int * lenp;
- unsigned int maxlen;
- void * buffer;
-};
-
-struct nfs_readdirres {
- void * buffer;
- unsigned int bufsiz;
-};
-
-#endif /* NFS_NEED_XDR_TYPES */
-#endif /* __KERNEL__ */
-
-#endif
diff --git a/mdk-stage1/linux-2.2/nfs_mount.h b/mdk-stage1/linux-2.2/nfs_mount.h
deleted file mode 100644
index 60493b150..000000000
--- a/mdk-stage1/linux-2.2/nfs_mount.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _LINUX_NFS_MOUNT_H
-#define _LINUX_NFS_MOUNT_H
-
-/*
- * linux/include/linux/nfs_mount.h
- *
- * Copyright (C) 1992 Rick Sladkey
- *
- * structure passed from user-space to kernel-space during an nfs mount
- */
-
-/*
- * WARNING! Do not delete or change the order of these fields. If
- * a new field is required then add it to the end. The version field
- * tracks which fields are present. This will ensure some measure of
- * mount-to-kernel version compatibility. Some of these aren't used yet
- * but here they are anyway.
- */
-#define NFS_MOUNT_VERSION 3
-
-struct nfs_mount_data {
- int version; /* 1 */
- int fd; /* 1 */
- struct nfs_fh root; /* 1 */
- int flags; /* 1 */
- int rsize; /* 1 */
- int wsize; /* 1 */
- int timeo; /* 1 */
- int retrans; /* 1 */
- int acregmin; /* 1 */
- int acregmax; /* 1 */
- int acdirmin; /* 1 */
- int acdirmax; /* 1 */
- struct sockaddr_in addr; /* 1 */
- char hostname[256]; /* 1 */
- int namlen; /* 2 */
- unsigned int bsize; /* 3 */
-};
-
-/* bits in the flags field */
-
-#define NFS_MOUNT_SOFT 0x0001 /* 1 */
-#define NFS_MOUNT_INTR 0x0002 /* 1 */
-#define NFS_MOUNT_SECURE 0x0004 /* 1 */
-#define NFS_MOUNT_POSIX 0x0008 /* 1 */
-#define NFS_MOUNT_NOCTO 0x0010 /* 1 */
-#define NFS_MOUNT_NOAC 0x0020 /* 1 */
-#define NFS_MOUNT_TCP 0x0040 /* 2 */
-#define NFS_MOUNT_VER3 0x0080 /* 3 */
-#define NFS_MOUNT_KERBEROS 0x0100 /* 3 */
-#define NFS_MOUNT_NONLM 0x0200 /* 3 */
-
-#endif
diff --git a/mdk-stage1/log.c b/mdk-stage1/log.c
deleted file mode 100644
index c108a8f50..000000000
--- a/mdk-stage1/log.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <errno.h>
-#include "stage1.h"
-
-#include "log.h"
-
-static FILE * logtty = NULL;
-static FILE * logfile = NULL;
-
-
-void vlog_message(const char * s, va_list args)
-{
- va_list args_copy;
- va_copy(args_copy, args);
-
- if (logfile) {
- fprintf(logfile, "* ");
- vfprintf(logfile, s, args);
- fprintf(logfile, "\n");
- fflush(logfile);
- }
- if (logtty) {
- fprintf(logtty, "* ");
- vfprintf(logtty, s, args_copy);
- fprintf(logtty, "\n");
- fflush(logtty);
- }
-
- va_end(args_copy);
-}
-
-
-void log_message(const char * s, ...)
-{
- va_list args;
- va_start(args, s);
- vlog_message(s, args);
- va_end(args);
-
- return;
-}
-
-void log_perror(const char *msg)
-{
- log_message("%s: %s", msg, strerror(errno));
-}
-
-
-void open_log(void)
-{
- if (!IS_TESTING) {
- logtty = fopen("/dev/tty3", "w");
- logfile = fopen(SLASH_LOCATION "/tmp/stage1.log", "w");
- }
- else
- logfile = fopen("debug.log", "w");
-}
-
-void close_log(void)
-{
- if (logfile) {
- log_message("stage1: disconnecting life support systems");
- fclose(logfile);
- if (logtty)
- fclose(logtty);
- }
-}
diff --git a/mdk-stage1/log.h b/mdk-stage1/log.h
deleted file mode 100644
index 6a30fea8f..000000000
--- a/mdk-stage1/log.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-
-#ifndef _LOG_H_
-#define _LOG_H_
-
-#include <stdarg.h>
-
-void log_message(const char * s, ...) __attribute__ ((format (printf, 1, 2)));
-void vlog_message(const char * s, va_list args);
-void log_perror(const char *msg);
-void open_log(void);
-void close_log(void);
-
-#endif
diff --git a/mdk-stage1/lomount.c b/mdk-stage1/lomount.c
deleted file mode 100644
index e1142e4dd..000000000
--- a/mdk-stage1/lomount.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/* This code comes from util-linux-2.10n (mount/lomount.c)
- * (this is a simplified version of this code)
- */
-
-#include <sys/types.h>
-#include <sys/mount.h>
-#include <sys/ioctl.h>
-#include <sys/mount.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "stage1.h"
-#include "frontend.h"
-#include "log.h"
-#include "mount.h"
-#include "modules.h"
-
-#include "lomount.h"
-
-
-#define LO_NAME_SIZE 64
-#define LO_KEY_SIZE 32
-
-struct loop_info
-{
- int lo_number; /* ioctl r/o */
- dev_t lo_device; /* ioctl r/o */
- unsigned long lo_inode; /* ioctl r/o */
- dev_t lo_rdevice; /* ioctl r/o */
- int lo_offset;
- int lo_encrypt_type;
- int lo_encrypt_key_size; /* ioctl w/o */
- int lo_flags; /* ioctl r/o */
- char lo_name[LO_NAME_SIZE];
- unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
- unsigned long lo_init[2];
- char reserved[4];
-};
-
-#define LOOP_SET_FD 0x4C00
-#define LOOP_CLR_FD 0x4C01
-#define LOOP_SET_STATUS 0x4C02
-#define LOOP_GET_STATUS 0x4C03
-
-int
-set_loop (const char *device, const char *file, int gz)
-{
- struct loop_info loopinfo;
- int fd, ffd, mode;
-
- mode = O_RDONLY;
-
- if ((ffd = open (file, mode)) < 0)
- return 1;
-
- if ((fd = open (device, mode)) < 0) {
- close(ffd);
- return 1;
- }
-
- memset(&loopinfo, 0, sizeof (loopinfo));
- strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
- loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
- loopinfo.lo_offset = 0;
- if (gz) {
- my_insmod("cryptoloop", ANY_DRIVER_TYPE, NULL, 1);
- my_insmod("zlib_inflate", ANY_DRIVER_TYPE, NULL, 1);
- my_insmod("gzloop", ANY_DRIVER_TYPE, NULL, 1);
- loopinfo.lo_encrypt_type = 13; /* LO_CRYPT_GZ */
- }
-
-#ifdef MCL_FUTURE
- /*
- * Oh-oh, sensitive data coming up. Better lock into memory to prevent
- * passwd etc being swapped out and left somewhere on disk.
- */
-
- if(mlockall(MCL_CURRENT|MCL_FUTURE)) {
- log_message("CRITICAL Couldn't lock into memory! %s (memlock)", strerror(errno));
- return 1;
- }
-#endif
-
- if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
- close(fd);
- close(ffd);
- return 1;
- }
-
- if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
- (void) ioctl (fd, LOOP_CLR_FD, 0);
- close(fd);
- close(ffd);
- return 1;
- }
-
- close(fd);
- close(ffd);
- return 0;
-}
-
-
-char* find_free_loop()
-{
- struct loop_info loopinfo;
- int i;
- for (i=0; i<256; i++) {
- int fd;
- char ldev[100];
- sprintf(ldev, "/dev/loop%d", i);
- ensure_dev_exists(ldev);
- fd = open(ldev, O_RDONLY);
- if (!ioctl(fd, LOOP_GET_STATUS, &loopinfo)) {
- close(fd);
- continue;
- }
- if (errno == ENXIO) {
- log_message("%s is available", ldev);
- close(fd);
- return strdup(ldev);
- } else {
- log_perror("LOOP_GET_STATUS(unexpected error)");
- close(fd);
- continue;
- }
- }
- return NULL;
-}
-
-void
-del_loop(char * loopdev)
-{
- int fd;
-
- if (!loopdev)
- return;
-
- if ((fd = open (loopdev, O_RDONLY)) < 0)
- return;
-
- if (ioctl (fd, LOOP_CLR_FD, 0) < 0)
- return;
-
- close (fd);
-}
-
-int
-lomount(char *loopfile, char *where, char **dev, int gz)
-{
-
- long int flag;
- char * loopdev;
-
- flag = MS_MGC_VAL;
- flag |= MS_RDONLY;
-
- my_insmod("loop", ANY_DRIVER_TYPE, "max_loop=256", 1);
-
- if (!(loopdev = find_free_loop())) {
- log_message("could not find a free loop");
- return 1;
- }
- if (dev)
- *dev = loopdev;
-
- if (set_loop(loopdev, loopfile, gz)) {
- log_message("set_loop failed on %s (%s)", loopdev, strerror(errno));
- return 1;
- }
-
- if (my_mount(loopdev, where, "iso9660", 0)) {
- del_loop(loopdev);
- return 1;
- }
-
- log_message("lomount succeeded for %s on %s", loopfile, where);
- return 0;
-}
-
-
diff --git a/mdk-stage1/lomount.h b/mdk-stage1/lomount.h
deleted file mode 100644
index 05ddd520b..000000000
--- a/mdk-stage1/lomount.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef LOMOUNT_H
-#define LOMOUNT_H
-
-int lomount(char *loopfile, char *where, char **loopdev, int gz);
-void del_loop(char *loopdev);
-
-#endif
diff --git a/mdk-stage1/mar/.cvsignore b/mdk-stage1/mar/.cvsignore
deleted file mode 100644
index bfde37886..000000000
--- a/mdk-stage1/mar/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-mar
diff --git a/mdk-stage1/mar/Makefile b/mdk-stage1/mar/Makefile
deleted file mode 100644
index 4271bb954..000000000
--- a/mdk-stage1/mar/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
- #******************************************************************************
- #
- # mar - The Mandrake Archiver
- #
- # $Id$
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-TARGETS = libmar.a mar
-
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o libmar.a mar
-
-
-mar: mar-frontend.o mar-extract-only-standalone.o
- gcc -o mar mar-frontend.o mar-extract-only-standalone.o -lbz2
- $(STRIPCMD) $@
-
-libmar.a: mar-extract-only.o
- ar -cru $@ $^
- ranlib $@
-
-mar-extract-only.o: mar-extract-only.c mar-extract-only.h mar.h
- $(DIET) gcc $(CFLAGS) $(INCLUDES) -c mar-extract-only.c
-
-mar-frontend.o: mar-frontend.c mar.h mar-extract-only.h
- gcc $(CFLAGS) $(GLIBC_INCLUDES) -c mar-frontend.c
-
-mar-extract-only-standalone.o: mar-extract-only.c mar-extract-only.h mar.h
- gcc $(CFLAGS) $(GLIBC_INCLUDES) -o $@ -D_STANDALONE_ -c mar-extract-only.c
diff --git a/mdk-stage1/mar/mar-extract-only.c b/mdk-stage1/mar/mar-extract-only.c
deleted file mode 100644
index dbc9c1bbc..000000000
--- a/mdk-stage1/mar/mar-extract-only.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * mar - The Mandrake Archiver
- *
- * An archiver that supports compression (through zlib).
- *
- */
-
-/*
- * This code should suffice for stage1 on-the-fly uncompression of kernel modules.
- * (and it DOES perform tests and return values, blaaaah..)
- */
-
-#include "mar-extract-only.h"
-#include "mar.h"
-
-#ifdef _STANDALONE_
-void
-zerr(BZFILE * f) /* decrease code size */
-{
- fprintf(stderr, BZ2_bzerror(f, &z_errnum));
-}
-
-inline void
-log_perror(char *msg)
-{
- perror(msg);
-}
-void
-log_message(char *msg)
-{
- fprintf(stderr, msg);
-}
-#else /* _STANDALONE_ */
-#include "../log.h"
-void
-zerr(BZFILE * f) /* decrease code size */
-{
- log_message(BZ2_bzerror(f, &z_errnum));
-}
-#endif /* _STANDALONE_ */
-
-
-static int
-mar_open_file(char *filename, struct mar_stream *s)
-{
- int end_filetable = 0;
- struct mar_element * previous_element = NULL;
-
- /* mar_zfile */
- s->mar_zfile = BZ2_bzopen(filename, "rb");
- if (!s->mar_zfile)
- {
- log_perror(filename);
- return -1;
- }
-
- while (end_filetable == 0)
- {
- char buf[512];
- int ptr = 0;
- /* read filename */
- do
- {
- if (BZ2_bzread(s->mar_zfile, &(buf[ptr]), sizeof(char)) != sizeof(char))
- {
- zerr(s->mar_zfile);
- return -1;
- }
- ptr++;
- } while ((buf[ptr-1] != 0) && (ptr < 512));
- /* ptr == 1 when we arrive on the "char 0" of the end of the filetable */
- if (ptr > 1)
- {
- struct mar_element * e = (struct mar_element *) malloc(sizeof(struct mar_element));
- e->filename = strdup(buf);
- /* read file_length */
- if (BZ2_bzread(s->mar_zfile, &(e->file_length), sizeof(int)) != sizeof(int))
- {
- zerr(s->mar_zfile);
- return -1;
- }
- /* read data_offset */
- if (BZ2_bzread(s->mar_zfile, &(e->data_offset), sizeof(int)) != sizeof(int))
- {
- zerr(s->mar_zfile);
- return -1;
- }
- /* write down chaining */
- if (previous_element)
- previous_element->next_element = e;
- else
- s->first_element = e;
- previous_element = e;
- }
- else
- end_filetable = 1;
-
- }
- /* chaining for last element */
- previous_element->next_element = NULL;
-
- return 0;
-}
-
-
-char **
-mar_list_contents(char * mar_filename)
-{
- struct mar_stream s;
- struct mar_element * elem;
- char * tmp_contents[500];
- char ** answ;
- int i = 0;
-
- if (mar_open_file(mar_filename, &s))
- return NULL;
-
- elem = s.first_element;
- while (elem)
- {
- tmp_contents[i++] = strdup(elem->filename);
- elem = elem->next_element;
- }
- tmp_contents[i++] = NULL;
- answ = (char **) malloc(sizeof(char *) * i);
- memcpy(answ, tmp_contents, sizeof(char *) * i);
- return answ;
-}
-
-
-int
-mar_extract_file(char *mar_filename, char *filename_to_extract, char *dest_dir)
-{
- struct mar_stream s;
- struct mar_element * elem;
-
- if (mar_open_file(mar_filename, &s))
- return -1;
-
- elem = s.first_element;
- while (elem)
- {
- if (strcmp(elem->filename, filename_to_extract) == 0)
- {
- char garb_buf[4096];
- char *buf;
- char *dest_file;
- int fd;
- size_t i;
- dest_file = (char *) alloca(strlen(dest_dir) + strlen(filename_to_extract) + 1);
- strcpy(dest_file, dest_dir);
- strcat(dest_file, filename_to_extract);
- fd = creat(dest_file, 00660);
- if (fd == -1)
- {
- log_perror(dest_file);
- return -1;
- }
- buf = (char *) alloca(elem->file_length);
- if (!buf)
- {
- log_perror(dest_file);
- return -1;
- }
- i = elem->data_offset;
- while (i > 0) {
- int to_read = i > sizeof(garb_buf) ? sizeof(garb_buf) : i;
- if (BZ2_bzread(s.mar_zfile, garb_buf, to_read) != to_read) {
- log_message("MAR: unexpected EOF in stream");
- close(fd);
- unlink(dest_file);
- return -1;
- }
- i -= to_read;
- }
- if (BZ2_bzread(s.mar_zfile, buf, elem->file_length) != elem->file_length)
- {
- zerr(s.mar_zfile);
- close(fd);
- unlink(dest_file);
- return -1;
- }
- if (write(fd, buf, elem->file_length) != elem->file_length)
- {
- log_perror(dest_file);
- close(fd);
- unlink(dest_file);
- return -1;
- }
- close(fd); /* do not check return value for code size */
- BZ2_bzclose(s.mar_zfile);
- return 0;
- }
- elem = elem->next_element;
- }
- BZ2_bzclose(s.mar_zfile);
- return 1; /* 1 for file_not_found_in_archive */
-}
-
-
diff --git a/mdk-stage1/mar/mar-extract-only.h b/mdk-stage1/mar/mar-extract-only.h
deleted file mode 100644
index 715d75556..000000000
--- a/mdk-stage1/mar/mar-extract-only.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * mar - The Mandrake Archiver
- *
- * An archiver that supports compression (through zlib).
- *
- */
-
-/*
- * Header for stage1 on-the-fly needs.
- */
-
-#ifndef MAR_EXTRACT_ONLY_H
-#define MAR_EXTRACT_ONLY_H
-
-int mar_extract_file(char *mar_filename, char *filename_to_extract, char *dest_dir);
-char ** mar_list_contents(char *mar_filename);
-
-#endif
diff --git a/mdk-stage1/mar/mar-frontend.c b/mdk-stage1/mar/mar-frontend.c
deleted file mode 100644
index cfffc34ae..000000000
--- a/mdk-stage1/mar/mar-frontend.c
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * mar - The Mandrake Archiver
- *
- * An archiver that supports compression (through zlib).
- *
- */
-
-/*
- * This code includes the extracting and creating features.
- *
- */
-
-#include "mar.h"
-#include "mar-extract-only.h"
-
-
-int
-file_size(char *filename)
-{
- struct stat buf;
- if (stat(filename, &buf) != 0)
- {
- perror(filename);
- return -1;
- }
- return buf.st_size;
-}
-
-
-/* Yes I don't use the datastructure I directly write the final fileformat in memory then write down it.
- * Yes it's bad.
- */
-/* ``files'' is a NULL-terminated array of char* */
-
-char * fnf_tag = "FILE_NOT_FOUND&";
-
-int
-mar_create_file(char *dest_file, char **files)
-{
- int filenum = 0;
- int current_offset_filetable = 0;
- int current_delta_rawdata = 0;
- int filetable_size;
- char * temp_marfile_buffer;
- int total_length = 0;
-
- filetable_size = sizeof(char); /* ``char 0'' */
- while (files[filenum])
- {
- int fsiz = file_size(files[filenum]);
- if (fsiz == -1)
- files[filenum] = fnf_tag;
- else {
- filetable_size += 2*sizeof(int) /* file_length, data_offset */ + strlen(files[filenum]) + 1;
- total_length += fsiz;
- }
- filenum++;
- }
-
- total_length += filetable_size;
-
- temp_marfile_buffer = (char *) malloc(total_length); /* create the whole file in-memory (not with alloca! it can be bigger than typical limit for stack of programs (ulimit -s) */
- DEBUG_MAR(printf("D: mar::create_marfile total-length %d\n", total_length););
-
- filenum = 0;
- while (files[filenum])
- {
- if (strcmp(files[filenum], fnf_tag)) {
- FILE * f = fopen(files[filenum], "r");
- int fsize;
- if (!f)
- {
- perror(files[filenum]);
- return -1;
- }
-
- /* filename */
- strcpy(&(temp_marfile_buffer[current_offset_filetable]), files[filenum]);
- current_offset_filetable += strlen(files[filenum]) + 1;
-
- /* file_length */
- fsize = file_size(files[filenum]);
- if (fsize == -1) return -1;
- memcpy(&temp_marfile_buffer[current_offset_filetable], &fsize, sizeof(int));
- current_offset_filetable += sizeof(int);
-
- /* data_offset */
- memcpy(&temp_marfile_buffer[current_offset_filetable], &current_delta_rawdata, sizeof(int));
- current_offset_filetable += sizeof(int);
-
- /* data_raw_data */
- if (fread(&temp_marfile_buffer[current_delta_rawdata + filetable_size], 1, fsize, f) != (size_t)fsize)
- {
- perror(files[filenum]);
- return -1;
- }
- fclose(f);
-
- current_delta_rawdata += fsize;
- }
-
- filenum++;
- }
-
- /* write down ``char 0'' to terminate file table */
- memset(&temp_marfile_buffer[current_offset_filetable], 0, sizeof(char));
-
- /* ok, buffer is ready, let's write it on-disk */
- {
- BZFILE * f = BZ2_bzopen(dest_file, "w9");
- if (!f)
- {
- perror(dest_file);
- return -1;
- }
- if (BZ2_bzwrite(f, temp_marfile_buffer, total_length) != total_length)
- {
- fprintf(stderr, BZ2_bzerror(f, &z_errnum));
- return -1;
- }
- BZ2_bzclose(f);
- }
-
- printf("mar: created archive %s (%d files, length %d)\n", dest_file, filenum, total_length);
- return 0;
-}
-
-
-void
-print_usage(char *progname)
-{
- printf("Usage: %s [-lxc] [files..]\n", progname);
- exit(0);
-}
-
-int
-main(int argc, char **argv)
-{
- if (argc <= 2)
- print_usage(argv[0]);
-
- if (argc >= 3)
- {
- if (strcmp(argv[1], "-l") == 0)
- {
- char ** contents = mar_list_contents(argv[2]);
- if (contents)
- while (contents && *contents) {
- printf("\t%s\n", *contents);
- contents++;
- }
- exit(0);
- }
- if ((strcmp(argv[1], "-x") == 0) && argc == 4)
- {
- int res = mar_extract_file(argv[2], argv[3], "./");
- if (res == 1)
- fprintf(stderr, "W: file-not-found-in-archive %s\n", argv[3]);
- if (res == -1)
- exit(-1);
- exit(0);
- }
- if ((strcmp(argv[1], "-c") == 0) && argc >= 4)
- {
- char **files = (char **) alloca(((argc-3)+1) * sizeof(char *));
- int i = 3;
- while (i < argc)
- {
- files[i-3] = argv[i];
- i++;
- }
- files[argc-3] = NULL;
- {
- int results;
- results = mar_create_file(argv[2], files);
- if (results != 0)
- fprintf(stderr, "E: create-marfile-failed\n");
- exit(results);
- }
-
- }
- }
-
- return 0;
-}
diff --git a/mdk-stage1/mar/mar.h b/mdk-stage1/mar/mar.h
deleted file mode 100644
index 61b50ca90..000000000
--- a/mdk-stage1/mar/mar.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * mar - The Mandrake Archiver
- *
- * An archiver that supports compression (through bzlib).
- *
- * Designed to be small so these bad designs are inside:
- * . archive and compression are mixed together
- * . create the mar file in-memory
- * . does not free memory
- *
- */
-
-#ifndef MAR_H
-#define MAR_H
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <bzlib.h>
-
-/*
- * Format of a mar file:
- *
- * ASCIIZ filename \ |
- * int file_length | repeated | bzipped
- * int pointer_in_archive / |
- * char 0 |
- * raw_files_data /
- *
- */
-
-struct mar_element
-{
- char * filename; /* filename (ASCIIZ) of the element */
- int file_length; /* length (in bytes) of the raw data of the element */
- int data_offset; /* seek start of the raw data in the underlying mar stream */
- struct mar_element * next_element; /* pointer to the next element in the mar stream; NULL if last */
-};
-
-struct mar_stream
-{
- struct mar_element * first_element; /* pointer to the first element inside the mar stream */
- BZFILE * mar_zfile; /* associated zfile (opened) */
-};
-
-int z_errnum;
-
-#define DEBUG_MAR(x)
-
-#endif
diff --git a/mdk-stage1/minilibc.c b/mdk-stage1/minilibc.c
deleted file mode 100644
index 7388c527c..000000000
--- a/mdk-stage1/minilibc.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-
-#define MINILIBC_INTERNAL
-
-#include "minilibc.h"
-
-int atexit (void (*__func) (void) __attribute__ ((unused)))
-{
- return 0;
-}
-
-void exit()
-{
- _do_exit(0);
- for (;;); /* Shut up gcc */
-}
-
-
-char ** _environ = NULL;
-int errno = 0;
-
-void _init (int __status __attribute__ ((unused)))
-{
-}
-
-void __libc_init_first (int __status __attribute__ ((unused)))
-{
-}
-
-void __libc_csu_fini(int __status __attribute__ ((unused)))
-{
-}
-
-void __libc_csu_init(int __status __attribute__ ((unused)))
-{
-}
-
-
-int __libc_start_main (int (*main) (int, char **, char **), int argc,
- char **argv, void (*init) (void) __attribute__ ((unused)), void (*fini) (void) __attribute__ ((unused)),
- void (*rtld_fini) (void) __attribute__ ((unused)), void *stack_end __attribute__ ((unused)))
-{
- exit ((*main) (argc, argv, NULL));
- /* never get here */
- return 0;
-}
-
-void _fini (int __status __attribute__ ((unused)))
-{
-}
-
-#ifdef __x86_64__
-/* x86-64 implementation of signal() derived from glibc sources */
-
-static inline int sigemptyset(sigset_t *set) {
- *set = 0;
- return 0;
-}
-
-static inline int sigaddset(sigset_t *set, int sig) {
- __asm__("btsq %1,%0" : "=m" (*set) : "Ir" (sig - 1L) : "cc");
- return 0;
-}
-
-#define __NR___rt_sigaction __NR_rt_sigaction
-static inline _syscall3(int,__rt_sigaction,int,signum,const void *,act,void *,oldact)
-#define __NR___rt_sigreturn __NR_rt_sigreturn
-static _syscall1(int,__rt_sigreturn,unsigned long,unused)
-
-static void restore_rt(void) {
- __rt_sigreturn(0);
-}
-
-int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) {
- struct sigaction *newact = (struct sigaction *)act;
- if (act) {
- newact = __builtin_alloca(sizeof(*newact));
- newact->sa_handler = act->sa_handler;
- newact->sa_flags = act->sa_flags | SA_RESTORER;
- newact->sa_restorer = &restore_rt;
- newact->sa_mask = act->sa_mask;
- }
- return __rt_sigaction(signum, newact, oldact);
-}
-
-__sighandler_t signal(int signum, __sighandler_t action) {
- struct sigaction sa,oa;
- sa.sa_handler=action;
- sigemptyset(&sa.sa_mask);
- sigaddset(&sa.sa_mask,signum);
- sa.sa_flags=SA_RESTART;
- if (sigaction(signum,&sa,&oa))
- return SIG_ERR;
- return oa.sa_handler;
-}
-
-#endif
-
-#ifdef __NR_socketcall
-
-int socket(int a, int b, int c)
-{
- unsigned long args[] = { a, b, c };
-
- return socketcall(SYS_SOCKET, args);
-}
-
-int bind(int a, void * b, int c)
-{
- unsigned long args[] = { a, (long) b, c };
-
- return socketcall(SYS_BIND, args);
-}
-
-int listen(int a, int b)
-{
- unsigned long args[] = { a, b, 0 };
-
- return socketcall(SYS_LISTEN, args);
-}
-
-int accept(int a, void * addr, void * addr2)
-{
- unsigned long args[] = { a, (long) addr, (long) addr2 };
-
- return socketcall(SYS_ACCEPT, args);
-}
-
-#else
-
-_syscall3(int,socket,int,domain,int,type,int,protocol)
-_syscall3(int,bind,int,sockfd,void *,my_addr,int,addrlen)
-_syscall2(int,listen,int,s,int,backlog)
-_syscall3(int,accept,int,s,void *,addr,void *,addrlen)
-
-#endif
-
-
-void sleep(int secs)
-{
- struct timeval tv;
-
- tv.tv_sec = secs;
- tv.tv_usec = 0;
-
- select(0, NULL, NULL, NULL, &tv);
-}
-
-
-int strlen(const char * string)
-{
- int i = 0;
-
- while (*string++) i++;
-
- return i;
-}
-
-char * strncpy(char * dst, const char * src, int len)
-{
- char * chptr = dst;
- int i = 0;
-
- while (*src && i < len) *dst++ = *src++, i++;
- if (i < len) *dst = '\0';
-
- return chptr;
-}
-
-char * strcpy(char * dst, const char * src)
-{
- char * chptr = dst;
-
- while (*src) *dst++ = *src++;
- *dst = '\0';
-
- return chptr;
-}
-
-void * memcpy(void * dst, const void * src, size_t count)
-{
- char * a = dst;
- const char * b = src;
-
- while (count--)
- *a++ = *b++;
-
- return dst;
-}
-
-
-int strcmp(const char * a, const char * b)
-{
- int i, j;
-
- i = strlen(a); j = strlen(b);
- if (i < j)
- return -1;
- else if (j < i)
- return 1;
-
- while (*a && (*a == *b)) a++, b++;
-
- if (!*a) return 0;
-
- if (*a < *b)
- return -1;
- else
- return 1;
-}
-
-int strncmp(const char * a, const char * b, int len)
-{
- char buf1[1000], buf2[1000];
-
- strncpy(buf1, a, len);
- strncpy(buf2, b, len);
- buf1[len] = '\0';
- buf2[len] = '\0';
-
- return strcmp(buf1, buf2);
-}
-
-char * strchr(char * str, int ch)
-{
- char * chptr;
-
- chptr = str;
- while (*chptr)
- {
- if (*chptr == ch) return chptr;
- chptr++;
- }
-
- return NULL;
-}
-
-
-char * strstr(char *haystack, char *needle)
-{
- char * tmp = haystack;
- while ((tmp = strchr(tmp, needle[0])) != NULL) {
- int i = 1;
- while (i < strlen(tmp) && i < strlen(needle) && tmp[i] == needle[i])
- i++;
- if (needle[i] == '\0')
- return tmp;
- tmp++;
- }
- return NULL;
-}
-
-
-/* Minimum printf which handles only characters, %d's and %s's */
-void printf(char * fmt, ...)
-{
- char buf[2048];
- char * start = buf;
- char * chptr = buf;
- va_list args;
- char * strarg;
- int numarg;
-
- strncpy(buf, fmt, sizeof(buf));
- va_start(args, fmt);
-
- while (start)
- {
- while (*chptr != '%' && *chptr) chptr++;
-
- if (*chptr == '%')
- {
- *chptr++ = '\0';
- print_str_init(1, start);
-
- switch (*chptr++)
- {
- case 's':
- strarg = va_arg(args, char *);
- print_str_init(1, strarg);
- break;
-
- case 'd':
- numarg = va_arg(args, int);
- print_int_init(1, numarg);
- break;
- }
-
- start = chptr;
- }
- else
- {
- print_str_init(1, start);
- start = NULL;
- }
- }
-}
diff --git a/mdk-stage1/minilibc.h b/mdk-stage1/minilibc.h
deleted file mode 100644
index e1d3e5b1f..000000000
--- a/mdk-stage1/minilibc.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-
-#include <stdarg.h>
-
-#define _LOOSE_KERNEL_NAMES 1
-
-#define NULL ((void *) 0)
-
-#define WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
-#define WIFSIGNALED(status) (!WIFSTOPPED(status) && !WIFEXITED(status))
-#define WEXITSTATUS(status) (((status) & 0xff00) >> 8)
-#define WTERMSIG(status) ((status) & 0x7f)
-#define WSTOPSIG(status) WEXITSTATUS(status)
-#define WIFEXITED(status) (WTERMSIG(status) == 0)
-
-#define MS_MGC_VAL 0xc0ed0000
-
-#define isspace(a) (a == ' ' || a == '\t')
-
-extern char ** _environ;
-
-extern int errno;
-
-/* Aieee, gcc 2.95+ creates a stub for posix_types.h on i386 which brings
- glibc headers in and thus makes __FD_SET etc. not defined with 2.3+ kernels. */
-#define _FEATURES_H 1
-#include <linux/posix_types.h>
-#include <linux/socket.h>
-#include <linux/types.h>
-#include <linux/time.h>
-#include <linux/if.h>
-#include <linux/un.h>
-#include <linux/loop.h>
-#include <linux/net.h>
-#include <asm/termios.h>
-#include <asm/ioctls.h>
-#include <asm/unistd.h>
-#include <asm/fcntl.h>
-#include <asm/signal.h>
-
-#ifndef __NR__newselect
-#define __NR__newselect __NR_select
-#endif
-
-#ifndef MINILIBC_INTERNAL
-static inline _syscall5(int,mount,const char *,spec,const char *,dir,const char *,type,unsigned long,rwflag,const void *,data);
-static inline _syscall5(int,_newselect,int,n,fd_set *,rd,fd_set *,wr,fd_set *,ex,struct timeval *,timeval);
-static inline _syscall4(int,wait4,pid_t,pid,int *,status,int,opts,void *,rusage)
-static inline _syscall3(int,write,int,fd,const char *,buf,unsigned long,count)
-static inline _syscall3(int,reboot,int,magic,int,magic_too,int,flag)
-static inline _syscall3(int,execve,const char *,fn,void *,argv,void *,envp)
-static inline _syscall3(int,read,int,fd,const char *,buf,unsigned long,count)
-static inline _syscall3(int,open,const char *,fn,int,flags,mode_t,mode)
-static inline _syscall3(int,ioctl,int,fd,int,request,void *,argp)
-static inline _syscall2(int,dup2,int,one,int,two)
-static inline _syscall2(int,kill,pid_t,pid,int,sig)
-static inline _syscall2(int,symlink,const char *,a,const char *,b)
-static inline _syscall2(int,chmod,const char * ,path,mode_t,mode)
-static inline _syscall2(int,sethostname,const char *,name,int,len)
-static inline _syscall2(int,setdomainname,const char *,name,int,len)
-static inline _syscall2(int,setpgid,int,name,int,len)
-static inline _syscall2(int,mkdir,const char *,pathname,mode_t,mode)
-#ifdef __x86_64__
-extern __sighandler_t signal(int signum, __sighandler_t handler);
-#else
-static inline _syscall2(int,signal,int,num,void *,len)
-#endif
-#ifdef __NR_umount
-static inline _syscall1(int,umount,const char *,dir)
-#else
-static inline _syscall2(int,umount2,const char *,dir,int,flags)
-static inline int umount(const char * dir) { return umount2(dir, 0); }
-#endif
-static inline _syscall1(int,unlink,const char *,fn)
-static inline _syscall1(int,close,int,fd)
-static inline _syscall1(int,swapoff,const char *,fn)
-static inline _syscall0(int,getpid)
-static inline _syscall0(int,sync)
-#ifdef __sparc__
-/* Nonstandard fork calling convention :( */
-static inline int fork(void) {
- int __res;
- __asm__ __volatile__ (
- "mov %0, %%g1\n\t"
- "t 0x10\n\t"
- "bcc 1f\n\t"
- "dec %%o1\n\t"
- "sethi %%hi(%2), %%g1\n\t"
- "st %%o0, [%%g1 + %%lo(%2)]\n\t"
- "b 2f\n\t"
- "mov -1, %0\n\t"
- "1:\n\t"
- "and %%o0, %%o1, %0\n\t"
- "2:\n\t"
- : "=r" (__res)
- : "0" (__NR_fork), "i" (&errno)
- : "g1", "o0", "cc");
- return __res;
-}
-#else
-static inline _syscall0(int,fork)
-#endif
-static inline _syscall0(pid_t,setsid)
-static inline _syscall3(int,syslog,int, type, char *, buf, int, len);
-#else
-static inline _syscall5(int,_newselect,int,n,fd_set *,rd,fd_set *,wr,fd_set *,ex,struct timeval *,timeval);
-static inline _syscall3(int,write,int,fd,const char *,buf,unsigned long,count)
-#ifdef __NR_socketcall
-static inline _syscall2(int,socketcall,int,code,unsigned long *, args)
-#endif
-#define __NR__do_exit __NR_exit
-static inline _syscall1(int,_do_exit,int,exitcode)
-#endif
-
-#define select _newselect
-
-extern int errno;
-
-int socket(int a, int b, int c);
-int bind(int a, void * b, int c);
-int listen(int a, int b);
-int accept(int a, void * addr, void * addr2);
-
-void sleep(int secs);
-
-int strlen(const char * string);
-char * strcpy(char * dst, const char * src);
-void * memcpy(void * dst, const void * src, size_t count);
-int strcmp(const char * a, const char * b);
-int strncmp(const char * a, const char * b, int len);
-char * strchr(char * str, int ch);
-char * strstr(char *haystack, char *needle);
-char * strncpy(char * dst, const char * src, int len);
-
-void print_str_init(int fd, char * string);
-void print_int_init(int fd, int i);
-/* Minimum printf which handles only characters, %d's and %s's */
-void printf(char * fmt, ...) __attribute__ ((format (printf, 1, 2)));
-
diff --git a/mdk-stage1/mkinitrd_helper/Makefile b/mdk-stage1/mkinitrd_helper/Makefile
deleted file mode 100644
index 269fd3ddc..000000000
--- a/mdk-stage1/mkinitrd_helper/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-VERSION = 1.1.1
-
-DEFS = -DVERSION=\"$(VERSION)\"
-
-
-MKINITRD_HELPER_SRC = mkinitrd_helper.c
-MKINITRD_HELPER_LIBS = ../insmod-busybox/libinsmod-DIET.a
-
-MKINITRD_HELPER_OBJS = $(subst .c,.o,$(MKINITRD_HELPER_SRC))
-
-BIN = mkinitrd_helper
-
-all: $(BIN)
-
-clean:
- rm -f *.o $(BIN)
-
-FLAGS = -Wall -Werror -Os -fomit-frame-pointer -c
-
-
-$(MKINITRD_HELPER_OBJS): %.o: %.c
- $(CC) $(DEFS) $(DIETLIBC_INCLUDES) -I.. -c $< -o $@
-
-mkinitrd_helper: $(MKINITRD_HELPER_OBJS) $(MKINITRD_HELPER_LIBS) $(DIETLIBC_LIBC)
- $(CC) $(DIETLIBC_LDFLAGS_STAGE1) -o $@ $^
- $(STRIPCMD) $@
diff --git a/mdk-stage1/mkinitrd_helper/mkinitrd_helper.c b/mdk-stage1/mkinitrd_helper/mkinitrd_helper.c
deleted file mode 100644
index 3e47bca2d..000000000
--- a/mdk-stage1/mkinitrd_helper/mkinitrd_helper.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2001 Mandrakesoft
- *
- * This software is covered by the GPL license.
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * This little program replaces usual sash and insmod.static based script
- * from mkinitrd (that insmod modules, plus possibly mount a partition and
- * losetup a loopback-based / on the partition).
- *
- *
- * On my machine:
- * gzipped sash + insmod.static 502491 bytes
- * gzipped <this-program> 14243 bytes
- *
- * There will be room for linux-2.4 and many modules, now. Cool.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <sys/mount.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <signal.h>
-
-#include "insmod.h"
-
-int quiet = 0;
-
-void vlog_message(const char * s, va_list args)
-{
- vprintf(s, args);
- printf("\n");
-}
-
-void log_perror(char *msg)
-{
- perror(msg);
-}
-
-
-static void fatal_error(char *msg)
-{
- printf("[] E: %s\n[] giving hand to kernel.\n", msg);
- exit(-1);
-}
-
-static void warning(char *msg)
-{
- printf("[] W: %s\n", msg);
-}
-
-static void parse_parms(const char * parm, char ** parm1, char ** parm2, char ** parm3)
-{
- char * ptr;
-
- ptr = strchr(parm, '\n');
- if (!ptr)
- fatal_error("bad config file: no newline after parms");
-
- *parm1 = malloc(ptr-parm+1); /* yup, never freed :-) */
- memcpy(*parm1, parm, ptr-parm);
- (*parm1)[ptr-parm] = '\0';
-
- if (!parm2)
- return;
-
- *parm2 = strchr(*parm1, ' ');
- if (!*parm2)
- return;
- **parm2 = '\0';
- (*parm2)++;
-
- if (!parm3)
- return;
-
- *parm3 = strchr(*parm2, ' ');
- if (!*parm3)
- return;
- **parm3 = '\0';
- (*parm3)++;
-}
-
-
-static void insmod_(const char * parm)
-{
- char * mod_name, * options;
-
- parse_parms(parm, &mod_name, &options, NULL);
-
-#ifdef DEBUG
- printf("insmod %s options %s\n", mod_name, options);
-#endif
- if (!quiet)
- printf("[] Loading module %s\n", mod_name);
-
- if (insmod_call(mod_name, options))
- perror("insmod failed");
-}
-
-
-static void mount_(const char * parm)
-{
- char * dev, * location, * fs;
- unsigned long flags;
- char * opts = NULL;
-
- parse_parms(parm, &dev, &location, &fs);
-
-#ifdef DEBUG
- printf("mounting %s on %s as type %s\n", dev, location, fs);
-#endif
- if (!quiet)
- printf("[] Mounting device containing loopback root filesystem\n");
-
- flags = MS_MGC_VAL;
-
- if (!strcmp(fs, "vfat"))
- opts = "check=relaxed";
-
- if (mount(dev, location, fs, flags, opts))
- perror("mount failed");
-}
-
-
-#define LO_NAME_SIZE 64
-#define LO_KEY_SIZE 32
-
-struct loop_info
-{
- int lo_number; /* ioctl r/o */
- dev_t lo_device; /* ioctl r/o */
- unsigned long lo_inode; /* ioctl r/o */
- dev_t lo_rdevice; /* ioctl r/o */
- int lo_offset;
- int lo_encrypt_type;
- int lo_encrypt_key_size; /* ioctl w/o */
- int lo_flags; /* ioctl r/o */
- char lo_name[LO_NAME_SIZE];
- unsigned char lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
- unsigned long lo_init[2];
- char reserved[4];
-};
-
-#define LOOP_SET_FD 0x4C00
-#define LOOP_CLR_FD 0x4C01
-#define LOOP_SET_STATUS 0x4C02
-
-static void set_loop_(const char * parm)
-{
- struct loop_info loopinfo;
- int fd, ffd;
- char * device, * file;
-
- parse_parms(parm, &device, &file, NULL);
-
-#ifdef DEBUG
- printf("set_looping %s with %s\n", device, file);
-#endif
- if (!quiet)
- printf("[] Setting up loopback file %s\n", file);
-
- if ((ffd = open(file, O_RDWR)) < 0) {
- perror("set_loop, opening file in rw");
- exit(-1);
- }
-
- if ((fd = open(device, O_RDWR)) < 0) {
- perror("set_loop, opening loop device in rw");
- close(ffd);
- exit(-1);
- }
-
- memset(&loopinfo, 0, sizeof (loopinfo));
- strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
- loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
- loopinfo.lo_offset = 0;
-
- if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
- close(fd);
- close(ffd);
- perror("LOOP_SET_FD");
- exit(-1);
- }
-
- if (ioctl(fd, LOOP_SET_STATUS, &loopinfo) < 0) {
- (void) ioctl (fd, LOOP_CLR_FD, 0);
- close(fd);
- close(ffd);
- perror("LOOP_SET_STATUS");
- exit(-1);
- }
-
- close(fd);
- close(ffd);
-}
-
-
-#define MD_MAJOR 9
-#define RAID_AUTORUN _IO (MD_MAJOR, 0x14)
-#include <linux/raid/md_u.h>
-
-static void raidautorun_(const char * parm)
-{
- char * device;
- int fd;
-
- parse_parms(parm, &device, NULL, NULL);
-
- if (!quiet)
- printf("[] Calling raid autorun for %s\n", device);
-
- fd = open(device, O_RDWR, 0);
- if (fd < 0) {
- printf("raidautorun: failed to open %s: %d\n", device, errno);
- return;
- }
-
- if (ioctl(fd, RAID_AUTORUN, 0)) {
- printf("raidautorun: RAID_AUTORUN failed: %d\n", errno);
- }
-
- close(fd);
-}
-
-static int handle_command(char ** ptr, char * cmd_name, void (*cmd_func)(const char * parm))
-{
- if (!strncmp(*ptr, cmd_name, strlen(cmd_name))) {
- *ptr = strchr(*ptr, '\n');
- if (!*ptr)
- fatal_error("Bad config file: no newline after command");
- (*ptr)++;
- cmd_func(*ptr);
- *ptr = strchr(*ptr, '\n');
- if (!*ptr)
- exit(0);
- (*ptr)++;
- return 1;
- }
- return 0;
-}
-
-
-int main(int argc, char **argv)
-{
- int fd_conf, i;
- char buf[5000];
- char * ptr;
-
- if (strstr(argv[0], "modprobe"))
- exit(0);
-
- if (mount("/proc", "/loopfs", "proc", 0, NULL))
- printf("[] couldn't mount proc filesystem\n");
- else {
- int fd_cmdline = open("/loopfs/cmdline", O_RDONLY);
- if (fd_cmdline > 0) {
- i = read(fd_cmdline, buf, sizeof(buf));
- if (i == -1)
- warning("could not read cmdline");
- else {
- buf[i] = '\0';
- if (strstr(buf, "quiet"))
- quiet = 1;
- }
- close(fd_cmdline);
- }
- umount("/loopfs");
- }
-
- if (!quiet)
- printf("[] initrd_helper v" VERSION "\n");
-
- if ((fd_conf = open("/mkinitrd_helper.conf", O_RDONLY)) < 0)
- fatal_error("could not open mkinitrd_helper config file");
-
- i = read(fd_conf, buf, sizeof(buf));
- if (i == -1)
- fatal_error("could not read mkinitrd_helper config file");
- buf[i] = '\0';
- close(fd_conf);
-
- ptr = buf;
-
- while (*ptr)
- if (!(handle_command(&ptr, "insmod", insmod_) +
- handle_command(&ptr, "mount", mount_) +
- handle_command(&ptr, "raidautorun", raidautorun_) +
- handle_command(&ptr, "set_loop", set_loop_)))
- warning("unkown command (trying to continue)");
-
- return 0;
-}
diff --git a/mdk-stage1/modules.c b/mdk-stage1/modules.c
deleted file mode 100644
index 11e118030..000000000
--- a/mdk-stage1/modules.c
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * (1) calculate dependencies
- * (2) unarchive relevant modules
- * (3) insmod them
- */
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/mount.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include "insmod.h"
-#include "stage1.h"
-#include "log.h"
-#include "mar/mar-extract-only.h"
-#include "frontend.h"
-#include "mount.h"
-#include "modules_descr.h"
-
-#include "modules.h"
-
-static struct module_deps_elem * modules_deps = NULL;
-
-static char archive_name[] = "/modules/modules.mar";
-static char additional_archive_name[] = "/tmp/tmpfs/modules.mar";
-int allow_additional_modules_floppy = 1;
-
-extern long init_module(void *, unsigned long, const char *);
-
-
-static const char *moderror(int err)
-{
- switch (err) {
- case ENOEXEC:
- return "Invalid module format";
- case ENOENT:
- return "Unknown symbol in module";
- case ESRCH:
- return "Module has wrong symbol version";
- case EINVAL:
- return "Invalid parameters";
- default:
- return strerror(err);
- }
-}
-
-static void *grab_file(const char *filename, unsigned long *size)
-{
- unsigned int max = 16384;
- int ret, fd;
- void *buffer = malloc(max);
-
- fd = open(filename, O_RDONLY, 0);
- if (fd < 0)
- return NULL;
-
- *size = 0;
- while ((ret = read(fd, buffer + *size, max - *size)) > 0) {
- *size += ret;
- if (*size == max)
- buffer = realloc(buffer, max *= 2);
- }
- if (ret < 0) {
- free(buffer);
- buffer = NULL;
- }
- close(fd);
- return buffer;
-}
-
-static enum return_type ensure_additional_modules_available(void)
-{
-#ifdef ENABLE_ADDITIONAL_MODULES
- struct stat statbuf;
- if (stat(additional_archive_name, &statbuf)) {
- char floppy_mount_location[] = "/tmp/floppy";
- char floppy_modules_mar[] = "/tmp/floppy/modules.mar";
- int ret;
- int automatic = 0;
-
- if (stat("/tmp/tmpfs", &statbuf)) {
- if (scall(mkdir("/tmp/tmpfs", 0755), "mkdir"))
- return RETURN_ERROR;
- if (scall(mount("none", "/tmp/tmpfs", "tmpfs", MS_MGC_VAL, NULL), "mount tmpfs"))
- return RETURN_ERROR;
- }
-
- if (IS_AUTOMATIC) {
- unset_automatic();
- automatic = 1;
- }
-
- retry:
- stg1_info_message("Please insert the Additional Drivers floppy.");;
-
- while (my_mount(floppy_device(), floppy_mount_location, "ext2", 0) == -1) {
- enum return_type results = ask_yes_no(errno == ENXIO ?
- "There is no detected floppy drive, or no floppy disk in drive.\nRetry?"
- : errno == EINVAL ?
- "Floppy is not a Linux ext2 floppy in first floppy drive.\nRetry?"
- : "Can't find a linux ext2 floppy in first floppy drive.\nRetry?");
- if (results != RETURN_OK) {
- allow_additional_modules_floppy = 0;
- if (automatic)
- set_param(MODE_AUTOMATIC);
- return results;
- }
- }
-
- if (stat(floppy_modules_mar, &statbuf)) {
- stg1_error_message("This is not an Additional Drivers floppy, as far as I can see.");
- umount(floppy_mount_location);
- goto retry;
- }
-
- init_progression("Copying...", file_size(floppy_modules_mar));
- ret = copy_file(floppy_modules_mar, additional_archive_name, update_progression);
- end_progression();
- umount(floppy_mount_location);
- if (automatic)
- set_param(MODE_AUTOMATIC);
- return ret;
- } else
- return RETURN_OK;
-#else
- allow_additional_modules_floppy = 0;
- return RETURN_ERROR;
-#endif
-}
-
-int insmod_local_file(char * path, char * options)
-{
- if (kernel_version() <= 4) {
- return insmod_call(path, options);
- } else {
- void *file;
- unsigned long len;
- int rc;
-
- file = grab_file(path, &len);
-
- if (!file) {
- log_perror(asprintf_("\terror reading %s", path));
- return -1;
- }
-
- rc = init_module(file, len, options ? options : "");
- if (rc)
- log_message("\terror: %s", moderror(errno));
- return rc;
- }
-}
-
-static char *kernel_module_extension(void)
-{
- return kernel_version() <= 4 ? ".o" : ".ko";
-}
-
-/* unarchive and insmod given module
- * WARNING: module must not contain the trailing ".o"
- */
-static enum insmod_return insmod_archived_file(const char * mod_name, char * options, int allow_modules_floppy)
-{
- char module_name[50];
- char final_name[50] = "/tmp/";
- int i, rc;
-
- strncpy(module_name, mod_name, sizeof(module_name));
- strcat(module_name, kernel_module_extension());
- i = mar_extract_file(archive_name, module_name, "/tmp/");
- if (i == 1) {
- static int recurse = 0;
- if (allow_additional_modules_floppy && allow_modules_floppy && !recurse) {
- recurse = 1;
- if (ensure_additional_modules_available() == RETURN_OK)
- i = mar_extract_file(additional_archive_name, module_name, "/tmp/");
- recurse = 0;
- }
- }
- if (i == 1) {
- log_message("file-not-found-in-archive %s (maybe you can try another boot floppy such as 'hdcdrom_usb.img')", module_name);
- return INSMOD_FAILED_FILE_NOT_FOUND;
- }
- if (i != 0)
- return INSMOD_FAILED;
-
- strcat(final_name, module_name);
-
- rc = insmod_local_file(final_name, options);
-
- unlink(final_name); /* sucking no space left on device */
-
- if (rc) {
- log_message("\tfailed");
- return INSMOD_FAILED;
- }
- return INSMOD_OK;
-}
-
-
-
-static int load_modules_dependencies(void)
-{
- char * deps_file = "/modules/modules.dep";
- char * buf, * ptr, * start, * end;
- struct stat s;
- int fd, line, i;
-
- log_message("loading modules dependencies");
-
- if (IS_TESTING)
- return 0;
-
- fd = open(deps_file, O_RDONLY);
- if (fd == -1) {
- log_perror(deps_file);
- return -1;
- }
-
- fstat(fd, &s);
- buf = alloca(s.st_size + 1);
- if (read(fd, buf, s.st_size) != (ssize_t)s.st_size) {
- log_perror(deps_file);
- return -1;
- }
- buf[s.st_size] = '\0';
- close(fd);
-
- ptr = buf;
- line = 0;
- while (ptr) {
- line++;
- ptr = strchr(ptr + 1, '\n');
- }
-
- modules_deps = malloc(sizeof(*modules_deps) * (line+1));
-
- start = buf;
- line = 0;
- while (start < (buf+s.st_size) && *start) {
- char * tmp_deps[50];
-
- end = strchr(start, '\n');
- *end = '\0';
-
- ptr = strchr(start, ':');
- if (!ptr) {
- start = end + 1;
- continue;
- }
- *ptr = '\0';
- ptr++;
-
- while (*ptr && (*ptr == ' ')) ptr++;
- if (!*ptr) {
- start = end + 1;
- continue;
- }
-
- /* sort of a good line */
- modules_deps[line].name = strdup(start);
-
- start = ptr;
- i = 0;
- while (start && *start) {
- ptr = strchr(start, ' ');
- if (ptr) *ptr = '\0';
- tmp_deps[i++] = strdup(start);
- if (ptr)
- start = ptr + 1;
- else
- start = NULL;
- while (start && *start && *start == ' ')
- start++;
- }
- tmp_deps[i++] = NULL;
-
- modules_deps[line].deps = memdup(tmp_deps, sizeof(char *) * i);
-
- line++;
- start = end + 1;
- }
- modules_deps[line].name = NULL;
-
- return 0;
-}
-
-
-void init_modules_insmoding(void)
-{
- if (load_modules_dependencies()) {
- fatal_error("warning, error initing modules stuff, modules loading disabled");
- }
-}
-
-
-static void add_modules_conf(char * str)
-{
- static char data[5000] = "";
- char * target = "/tmp/modules.conf";
- int fd;
-
- if (strlen(data) + strlen(str) >= sizeof(data))
- return;
-
- strcat(data, str);
- strcat(data, "\n");
-
- fd = open(target, O_CREAT|O_WRONLY|O_TRUNC, 00660);
-
- if (fd == -1) {
- log_perror(str);
- return;
- }
-
- if (write(fd, data, strlen(data) + 1) != (ssize_t) (strlen(data) + 1))
- log_perror(str);
-
- close(fd);
-}
-
-
-int module_already_present(const char * name)
-{
- FILE * f;
- int answ = 0;
-
- if ((f = fopen("/proc/modules", "rb"))) {
- while (1) {
- char buf[500];
- if (!fgets(buf, sizeof(buf), f)) break;
- if (!strncmp(name, buf, strlen(name)) && buf[strlen(name)] == ' ')
- answ = 1;
- }
- fclose(f);
- }
- return answ;
-}
-
-
-static enum insmod_return insmod_with_deps(const char * mod_name, char * options, int allow_modules_floppy)
-{
- struct module_deps_elem * dep;
-
- dep = modules_deps;
- while (dep && dep->name && strcmp(dep->name, mod_name)) dep++;
-
- if (dep && dep->name && dep->deps) {
- char ** one_dep;
- one_dep = dep->deps;
- while (*one_dep) {
- /* here, we can fail but we don't care, if the error is
- * important, the desired module will fail also */
- insmod_with_deps(*one_dep, NULL, allow_modules_floppy);
- one_dep++;
- }
- }
-
- if (module_already_present(mod_name))
- return INSMOD_OK;
-
- log_message("needs %s", mod_name);
- {
- char *file = asprintf_("/modules/%s%s", mod_name, kernel_module_extension());
- if (access(file, R_OK) == 0)
- return insmod_local_file(file, options);
- else
- return insmod_archived_file(mod_name, options, allow_modules_floppy);
- }
-}
-
-
-static const char * get_name_kernel_26_transition(const char * name)
-{
- struct kernel_24_26_mapping {
- const char * name_24;
- const char * name_26;
- };
- static struct kernel_24_26_mapping mappings[] = {
- { "usb-ohci", "ohci-hcd" },
- { "usb-uhci", "uhci-hcd" },
- { "uhci", "uhci-hcd" },
-// { "printer", "usblp" },
- { "bcm4400", "b44" },
- { "3c559", "3c359" },
- { "3c90x", "3c59x" },
- { "dc395x_trm", "dc395x" },
-// { "audigy", "snd-emu10k1" },
- };
- int mappings_nb = sizeof(mappings) / sizeof(struct kernel_24_26_mapping);
- int i;
-
- /* pcitable contains 2.4 names. this will need to change if/when it contains 2.6 names! */
- if (kernel_version() > 4)
- for (i=0; i<mappings_nb; i++) {
- if (streq(name, mappings[i].name_24))
- return mappings[i].name_26;
- }
- return name;
-}
-
-
-#ifndef DISABLE_NETWORK
-enum insmod_return my_insmod(const char * mod_name, enum driver_type type, char * options, int allow_modules_floppy)
-#else
-enum insmod_return my_insmod(const char * mod_name, enum driver_type type __attribute__ ((unused)), char * options, int allow_modules_floppy)
-#endif
-{
- int i;
-#ifndef DISABLE_NETWORK
- char ** net_devices = NULL; /* fucking compiler */
-#endif
-
- const char * real_mod_name = get_name_kernel_26_transition(mod_name);
-
- if (module_already_present(real_mod_name))
- return INSMOD_OK;
-
- log_message("have to insmod %s", real_mod_name);
-
-#ifndef DISABLE_NETWORK
- if (type == NETWORK_DEVICES)
- net_devices = get_net_devices();
-#endif
-
- if (IS_TESTING)
- return INSMOD_OK;
-
-#ifdef ENABLE_NETWORK_STANDALONE
- {
- char *cmd = options ? asprintf_("/sbin/modprobe %s %s", mod_name, options) :
- asprintf_("/sbin/modprobe %s", mod_name);
- log_message("running %s", cmd);
- i = system(cmd);
- }
-#else
- i = insmod_with_deps(real_mod_name, options, allow_modules_floppy);
-#endif
- if (i == 0) {
- log_message("\tsucceeded %s", real_mod_name);
-#ifndef DISABLE_NETWORK
- if (type == NETWORK_DEVICES) {
- char ** new_net_devices = get_net_devices();
- while (new_net_devices && *new_net_devices) {
- char alias[500];
- char ** ptr = net_devices;
- while (ptr && *ptr) {
- if (!strcmp(*new_net_devices, *ptr))
- goto already_present;
- ptr++;
- }
- sprintf(alias, "alias %s %s", *new_net_devices, mod_name);
- add_modules_conf(alias);
- log_message("NET: %s", alias);
- net_discovered_interface(*new_net_devices);
-
- already_present:
- new_net_devices++;
- }
- }
-#endif
- } else
- log_message("warning, insmod failed (%s %s) (%d)", real_mod_name, options, i);
-
- return i;
-
-}
-
-static enum return_type insmod_with_options(char * mod, enum driver_type type)
-{
- char * questions[] = { "Options", NULL };
- static char ** answers = NULL;
- enum return_type results;
- char options[500] = "options ";
-
- results = ask_from_entries("Please enter the parameters to give to the kernel:", questions, &answers, 24, NULL);
- if (results != RETURN_OK)
- return results;
-
- strcat(options, mod);
- strcat(options, " ");
- strcat(options, answers[0]); // because my_insmod will eventually modify the string
-
- if (my_insmod(mod, type, answers[0], 1) != INSMOD_OK) {
- stg1_error_message("Insmod failed.");
- return RETURN_ERROR;
- }
-
- add_modules_conf(options);
-
- return RETURN_OK;
-}
-
-enum return_type ask_insmod(enum driver_type type)
-{
- char * mytype;
- char msg[200];
- enum return_type results;
- char * choice;
-
- unset_automatic(); /* we are in a fallback mode */
-
- if (type == SCSI_ADAPTERS)
- mytype = "SCSI";
- else if (type == NETWORK_DEVICES)
- mytype = "NET";
- else
- return RETURN_ERROR;
-
- snprintf(msg, sizeof(msg), "Which driver should I try to gain %s access?", mytype);
-
- {
- char ** modules = mar_list_contents(ensure_additional_modules_available() == RETURN_OK ? additional_archive_name
- : archive_name);
- char ** descrs = malloc(sizeof(char *) * string_array_length(modules));
- char ** p_modules = modules;
- char ** p_descrs = descrs;
- while (p_modules && *p_modules) {
- int i;
- *p_descrs = NULL;
- for (i = 0 ; i < modules_descriptions_num ; i++) {
- if (!strncmp(*p_modules, modules_descriptions[i].module, strlen(modules_descriptions[i].module))
- && (*p_modules)[strlen(modules_descriptions[i].module)] == '.') /* one contains '.o' not the other */
- *p_descrs = modules_descriptions[i].descr;
- }
- p_modules++;
- p_descrs++;
- }
- if (modules && *modules)
- results = ask_from_list_comments(msg, modules, descrs, &choice);
- else
- results = RETURN_BACK;
- }
-
- if (results == RETURN_OK) {
- choice[strlen(choice)-strlen(kernel_module_extension())] = '\0'; /* remove trailing .ko or .o */
- return insmod_with_options(choice, type);
- } else
- return results;
-}
diff --git a/mdk-stage1/modules.h b/mdk-stage1/modules.h
deleted file mode 100644
index d42d55218..000000000
--- a/mdk-stage1/modules.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _MODULES_H_
-#define _MODULES_H_
-
-#include "stage1.h"
-#include "probing.h"
-
-enum insmod_return { INSMOD_OK, INSMOD_FAILED, INSMOD_FAILED_FILE_NOT_FOUND };
-
-void init_modules_insmoding(void);
-int insmod_local_file(char * path, char * options);
-enum insmod_return my_insmod(const char * mod_name, enum driver_type type, char * options, int allow_modules_floppy);
-enum return_type ask_insmod(enum driver_type);
-int module_already_present(const char * name);
-
-struct module_deps_elem {
- char * name;
- char ** deps;
-};
-
-extern int disable_modules;
-extern int allow_additional_modules_floppy;
-
-#endif
diff --git a/mdk-stage1/modules_descr.h b/mdk-stage1/modules_descr.h
deleted file mode 100644
index 8faf726af..000000000
--- a/mdk-stage1/modules_descr.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2001 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _MODULES_DESCR_H_
-#define _MODULES_DESCR_H_
-
-struct module_descr {
- const char * module;
- char * descr;
-};
-
-struct module_descr modules_descriptions[] = {
-#ifndef DISABLE_NETWORK
- /* description of network drivers that have not very explicit names */
- { "ne", "NE1000/NE2000/clones" },
- { "ne2k-pci", "PCI NE2000" },
- { "depca", "DEC DEPCA/DE100/DE101/DE200/DE201/DE202/DE210/DE422" },
- { "dgrs", "Digi RightSwitch SE-X" },
- { "ewrk3", "DEC DE203/DE204/DE205" },
- { "lance", "Allied Telesis AT1500, HP J2405A, NE2100/NE2500" },
- { "sis900", "SiS 900/7016/630E, Am79c901, RTL8201" },
- { "via-rhine", "VIA VT86c100A Rhine-II, 3043 Rhine-I" },
- { "tulip", "DEC 21040-family based cards" },
- { "wd", "WD8003/WD8013" },
- { "bmac", "Macintosh integrated ethernet (G3)" },
- { "gmac", "Macintosh integrated ethernet (G4/iBook)" },
- { "mace", "Macintosh integrated ethernet (PowerMac)" },
-#endif
-
-#ifndef DISABLE_MEDIAS
- /* description of scsi drivers that have not very explicit names */
- { "53c7,8xx", "NCR53c810/700" },
- { "sim710", "NCR53c710" },
- { "aic7xxx", "Adaptec 7xxx family (AIC/AHA/etc)" },
- { "atp870u", "ACARD/ARTOP AEC-6710/6712" },
- { "ncr53c8xx", "Symbios 53c family" },
- { "sym53c8xx", "Symbios 53c family" },
- { "sim710", "NCR53C710 family" },
- { "mesh", "Macintosh integrated SCSI (NewWorld or internal SCSI)" },
- { "mac53c94", "Macintosh integrated SCSI (OldWorld or external SCSI)" },
-#endif
-
-#ifdef ENABLE_USB
- /* description of usb drivers that have not very explicit names */
- { "usbnet", "Netchip or Prolific USB-USB Bridge" },
- { "pegasus", "ADMtek AN986 (USB Ethernet chipset)" },
- { "kaweth", "KL5KUSB101 (USB Ethernet chipset)" },
- { "catc", "CATC EL1210A NetMate USB Ethernet" },
-#endif
-};
-
-int modules_descriptions_num = sizeof(modules_descriptions) / sizeof(struct module_descr);
-
-
-#endif
diff --git a/mdk-stage1/mount.c b/mdk-stage1/mount.c
deleted file mode 100644
index 40b94a8ec..000000000
--- a/mdk-stage1/mount.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include "log.h"
-#include "modules.h"
-
-#include "mount.h"
-
-
-
-/* WARNING: this won't work if the argument is not /dev/ based */
-int ensure_dev_exists(const char * dev)
-{
- int major, minor;
- int type = S_IFBLK; /* my default type is block. don't forget to change for chars */
- const char * name;
- struct stat buf;
- char * ptr;
-
- name = &dev[5]; /* we really need that dev be passed as /dev/something.. */
-
- if (!stat(dev, &buf))
- return 0; /* if the file already exists, we assume it's correct */
-
- if (ptr_begins_static_str(name, "sd")) {
- /* SCSI disks */
- major = 8;
- minor = (name[2] - 'a') << 4;
- if (name[3] && name[4])
- minor += 10 + (name[4] - '0');
- else if (name[3])
- minor += (name[3] - '0');
- } else if (ptr_begins_static_str(name, "hd")) {
- /* IDE disks/cd's */
- if (name[2] == 'a')
- major = 3, minor = 0;
- else if (name[2] == 'b')
- major = 3, minor = 64;
- else if (name[2] == 'c')
- major = 22, minor = 0;
- else if (name[2] == 'd')
- major = 22, minor = 64;
- else if (name[2] == 'e')
- major = 33, minor = 0;
- else if (name[2] == 'f')
- major = 33, minor = 64;
- else if (name[2] == 'g')
- major = 34, minor = 0;
- else if (name[2] == 'h')
- major = 34, minor = 64;
- else if (name[2] == 'i')
- major = 56, minor = 0;
- else if (name[2] == 'j')
- major = 56, minor = 64;
- else if (name[2] == 'k')
- major = 57, minor = 0;
- else if (name[2] == 'l')
- major = 57, minor = 64;
- else if (name[2] == 'm')
- major = 88, minor = 0;
- else if (name[2] == 'n')
- major = 88, minor = 64;
- else if (name[2] == 'o')
- major = 89, minor = 0;
- else if (name[2] == 'p')
- major = 89, minor = 64;
- else if (name[2] == 'q')
- major = 90, minor = 0;
- else if (name[2] == 'r')
- major = 90, minor = 64;
- else if (name[2] == 's')
- major = 91, minor = 0;
- else if (name[2] == 't')
- major = 91, minor = 64;
- else
- return -1;
-
- if (name[3] && name[4])
- minor += 10 + (name[4] - '0');
- else if (name[3])
- minor += (name[3] - '0');
- } else if (ptr_begins_static_str(name , "sr")) {
- /* SCSI cd's */
- major = 11;
- minor = name[2] - '0';
- } else if (ptr_begins_static_str(name, "ida/") ||
- ptr_begins_static_str(name, "cciss/")) {
- /* Compaq Smart Array "ida/c0d0{p1}" */
- ptr = strchr(name, '/');
- mkdir("/dev/ida", 0755);
- mkdir("/dev/cciss", 0755);
- major = ptr_begins_static_str(name, "ida/") ? 72 : 104 + charstar_to_int(ptr+2);
- ptr = strchr(ptr, 'd');
- minor = 16 * charstar_to_int(ptr+1);
- ptr = strchr(ptr, 'p');
- minor += charstar_to_int(ptr+1);
- } else if (ptr_begins_static_str(name, "rd/")) {
- /* DAC960 "rd/cXdXXpX" */
- mkdir("/dev/rd", 0755);
- major = 48 + charstar_to_int(name+4);
- ptr = strchr(name+4, 'd');
- minor = 8 * charstar_to_int(ptr+1);
- ptr = strchr(ptr, 'p');
- minor += charstar_to_int(ptr+1);
- } else if (ptr_begins_static_str(name, "loop")) {
- major = 7;
- minor = name[4] - '0';
- } else if (ptr_begins_static_str(name, "chloop")) {
- major = 100;
- minor = name[6] - '0';
- } else {
- log_message("I don't know how to create device %s, please post bugreport to me!", dev);
- return -1;
- }
-
- if (mknod(dev, type | 0600, makedev(major, minor))) {
- log_perror(dev);
- return -1;
- }
-
- return 0;
-}
-
-
-/* mounts, creating the device if needed+possible */
-int my_mount(char *dev, char *location, char *fs, int force_rw)
-{
- unsigned long flags = MS_MGC_VAL | (force_rw ? 0 : MS_RDONLY);
- char * opts = NULL;
- struct stat buf;
- int rc;
-
- if (strcmp(fs, "nfs")) {
- rc = ensure_dev_exists(dev);
- if (rc != 0) {
- log_message("could not create required device file");
- return -1;
- }
- }
-
- log_message("mounting %s on %s as type %s", dev, location, fs);
-
- if (stat(location, &buf)) {
- if (mkdir(location, 0755)) {
- log_perror("could not create location dir");
- return -1;
- }
- } else if (!S_ISDIR(buf.st_mode)) {
- log_message("not a dir %s, will unlink and mkdir", location);
- if (unlink(location)) {
- log_perror("could not unlink");
- return -1;
- }
- if (mkdir(location, 0755)) {
- log_perror("could not create location dir");
- return -1;
- }
- }
-
- if (!strcmp(fs, "supermount")) {
- my_insmod("supermount", ANY_DRIVER_TYPE, NULL, 1);
- my_insmod("isofs", ANY_DRIVER_TYPE, NULL, 1);
- opts = alloca(500);
- sprintf(opts, "dev=%s,fs=iso9660,tray_lock=always", dev);
- dev = "none";
- }
-
-#ifndef DISABLE_MEDIAS
- if (!strcmp(fs, "vfat")) {
- my_insmod("vfat", ANY_DRIVER_TYPE, NULL, 1);
- opts = "check=relaxed";
- }
-
- if (!strcmp(fs, "ntfs")) {
- my_insmod("ntfs", ANY_DRIVER_TYPE, NULL, 1);
- }
-
- if (!strcmp(fs, "reiserfs"))
- my_insmod("reiserfs", ANY_DRIVER_TYPE, NULL, 1);
-
-#endif
- if (!strcmp(fs, "iso9660"))
- my_insmod("isofs", ANY_DRIVER_TYPE, NULL, 1);
-
-#ifndef DISABLE_NETWORK
- if (!strcmp(fs, "nfs")) {
- my_insmod("nfs", ANY_DRIVER_TYPE, NULL, 1);
- log_message("preparing nfsmount for %s", dev);
- rc = nfsmount_prepare(dev, &opts);
- if (rc != 0)
- return rc;
- }
-#endif
-
- rc = mount(dev, location, fs, flags, opts);
- if (rc != 0) {
- log_perror("mount failed");
- rmdir(location);
- }
-
- return rc;
-}
diff --git a/mdk-stage1/mount.h b/mdk-stage1/mount.h
deleted file mode 100644
index 4a4317182..000000000
--- a/mdk-stage1/mount.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _MOUNT_H_
-#define _MOUNT_H_
-
-#ifndef DISABLE_NETWORK
-#include "nfsmount.h"
-#endif
-
-int my_mount(char *dev, char *location, char *fs, int force_rw);
-int ensure_dev_exists(const char * dev);
-
-#endif
diff --git a/mdk-stage1/mount_rpcgen.h b/mdk-stage1/mount_rpcgen.h
deleted file mode 100644
index d70ccaf9d..000000000
--- a/mdk-stage1/mount_rpcgen.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _MOUNT_H_RPCGEN
-#define _MOUNT_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-#define MNTPATHLEN 1024
-#define MNTNAMLEN 255
-#define FHSIZE 32
-
-typedef char fhandle[FHSIZE];
-#ifdef __cplusplus
-extern "C" bool_t xdr_fhandle(XDR *, fhandle);
-#elif __STDC__
-extern bool_t xdr_fhandle(XDR *, fhandle);
-#else /* Old Style C */
-bool_t xdr_fhandle();
-#endif /* Old Style C */
-
-
-struct fhstatus {
- u_int fhs_status;
- union {
- fhandle fhs_fhandle;
- } fhstatus_u;
-};
-typedef struct fhstatus fhstatus;
-#ifdef __cplusplus
-extern "C" bool_t xdr_fhstatus(XDR *, fhstatus*);
-#elif __STDC__
-extern bool_t xdr_fhstatus(XDR *, fhstatus*);
-#else /* Old Style C */
-bool_t xdr_fhstatus();
-#endif /* Old Style C */
-
-
-typedef char *dirpath;
-#ifdef __cplusplus
-extern "C" bool_t xdr_dirpath(XDR *, dirpath*);
-#elif __STDC__
-extern bool_t xdr_dirpath(XDR *, dirpath*);
-#else /* Old Style C */
-bool_t xdr_dirpath();
-#endif /* Old Style C */
-
-
-typedef char *name;
-#ifdef __cplusplus
-extern "C" bool_t xdr_name(XDR *, name*);
-#elif __STDC__
-extern bool_t xdr_name(XDR *, name*);
-#else /* Old Style C */
-bool_t xdr_name();
-#endif /* Old Style C */
-
-
-typedef struct mountbody *mountlist;
-#ifdef __cplusplus
-extern "C" bool_t xdr_mountlist(XDR *, mountlist*);
-#elif __STDC__
-extern bool_t xdr_mountlist(XDR *, mountlist*);
-#else /* Old Style C */
-bool_t xdr_mountlist();
-#endif /* Old Style C */
-
-
-struct mountbody {
- name ml_hostname;
- dirpath ml_directory;
- mountlist ml_next;
-};
-typedef struct mountbody mountbody;
-#ifdef __cplusplus
-extern "C" bool_t xdr_mountbody(XDR *, mountbody*);
-#elif __STDC__
-extern bool_t xdr_mountbody(XDR *, mountbody*);
-#else /* Old Style C */
-bool_t xdr_mountbody();
-#endif /* Old Style C */
-
-
-typedef struct groupnode *groups;
-#ifdef __cplusplus
-extern "C" bool_t xdr_groups(XDR *, groups*);
-#elif __STDC__
-extern bool_t xdr_groups(XDR *, groups*);
-#else /* Old Style C */
-bool_t xdr_groups();
-#endif /* Old Style C */
-
-
-struct groupnode {
- name gr_name;
- groups gr_next;
-};
-typedef struct groupnode groupnode;
-#ifdef __cplusplus
-extern "C" bool_t xdr_groupnode(XDR *, groupnode*);
-#elif __STDC__
-extern bool_t xdr_groupnode(XDR *, groupnode*);
-#else /* Old Style C */
-bool_t xdr_groupnode();
-#endif /* Old Style C */
-
-
-typedef struct exportnode *exports;
-#ifdef __cplusplus
-extern "C" bool_t xdr_exports(XDR *, exports*);
-#elif __STDC__
-extern bool_t xdr_exports(XDR *, exports*);
-#else /* Old Style C */
-bool_t xdr_exports();
-#endif /* Old Style C */
-
-
-struct exportnode {
- dirpath ex_dir;
- groups ex_groups;
- exports ex_next;
-};
-typedef struct exportnode exportnode;
-#ifdef __cplusplus
-extern "C" bool_t xdr_exportnode(XDR *, exportnode*);
-#elif __STDC__
-extern bool_t xdr_exportnode(XDR *, exportnode*);
-#else /* Old Style C */
-bool_t xdr_exportnode();
-#endif /* Old Style C */
-
-
-#define MOUNTPROG ((u_long)100005)
-#define MOUNTVERS ((u_long)1)
-
-#ifdef __cplusplus
-#define MOUNTPROC_NULL ((u_long)0)
-extern "C" void * mountproc_null_1(void *, CLIENT *);
-extern "C" void * mountproc_null_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_MNT ((u_long)1)
-extern "C" fhstatus * mountproc_mnt_1(dirpath *, CLIENT *);
-extern "C" fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_DUMP ((u_long)2)
-extern "C" mountlist * mountproc_dump_1(void *, CLIENT *);
-extern "C" mountlist * mountproc_dump_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_UMNT ((u_long)3)
-extern "C" void * mountproc_umnt_1(dirpath *, CLIENT *);
-extern "C" void * mountproc_umnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_UMNTALL ((u_long)4)
-extern "C" void * mountproc_umntall_1(void *, CLIENT *);
-extern "C" void * mountproc_umntall_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORT ((u_long)5)
-extern "C" exports * mountproc_export_1(void *, CLIENT *);
-extern "C" exports * mountproc_export_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORTALL ((u_long)6)
-extern "C" exports * mountproc_exportall_1(void *, CLIENT *);
-extern "C" exports * mountproc_exportall_1_svc(void *, struct svc_req *);
-
-#elif __STDC__
-#define MOUNTPROC_NULL ((u_long)0)
-extern void * mountproc_null_1(void *, CLIENT *);
-extern void * mountproc_null_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_MNT ((u_long)1)
-extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *);
-extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_DUMP ((u_long)2)
-extern mountlist * mountproc_dump_1(void *, CLIENT *);
-extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_UMNT ((u_long)3)
-extern void * mountproc_umnt_1(dirpath *, CLIENT *);
-extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_UMNTALL ((u_long)4)
-extern void * mountproc_umntall_1(void *, CLIENT *);
-extern void * mountproc_umntall_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORT ((u_long)5)
-extern exports * mountproc_export_1(void *, CLIENT *);
-extern exports * mountproc_export_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORTALL ((u_long)6)
-extern exports * mountproc_exportall_1(void *, CLIENT *);
-extern exports * mountproc_exportall_1_svc(void *, struct svc_req *);
-
-#else /* Old Style C */
-#define MOUNTPROC_NULL ((u_long)0)
-extern void * mountproc_null_1();
-extern void * mountproc_null_1_svc();
-#define MOUNTPROC_MNT ((u_long)1)
-extern fhstatus * mountproc_mnt_1();
-extern fhstatus * mountproc_mnt_1_svc();
-#define MOUNTPROC_DUMP ((u_long)2)
-extern mountlist * mountproc_dump_1();
-extern mountlist * mountproc_dump_1_svc();
-#define MOUNTPROC_UMNT ((u_long)3)
-extern void * mountproc_umnt_1();
-extern void * mountproc_umnt_1_svc();
-#define MOUNTPROC_UMNTALL ((u_long)4)
-extern void * mountproc_umntall_1();
-extern void * mountproc_umntall_1_svc();
-#define MOUNTPROC_EXPORT ((u_long)5)
-extern exports * mountproc_export_1();
-extern exports * mountproc_export_1_svc();
-#define MOUNTPROC_EXPORTALL ((u_long)6)
-extern exports * mountproc_exportall_1();
-extern exports * mountproc_exportall_1_svc();
-#endif /* Old Style C */
-
-#endif /* !_MOUNT_H_RPCGEN */
diff --git a/mdk-stage1/network.c b/mdk-stage1/network.c
deleted file mode 100644
index 1d65acdaf..000000000
--- a/mdk-stage1/network.c
+++ /dev/null
@@ -1,1164 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-/* define _GNU_SOURCE so strndup is available */
-#define _GNU_SOURCE
-#include <string.h>
-#include <unistd.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <arpa/inet.h>
-#include <net/route.h>
-#include <sys/ioctl.h>
-#include <sys/mount.h>
-#include <stdio.h>
-#include <netdb.h>
-#include <resolv.h>
-#include <sys/utsname.h>
-
-#include "stage1.h"
-#include "frontend.h"
-#include "modules.h"
-#include "probing.h"
-#include "log.h"
-#include "mount.h"
-#include "automatic.h"
-#include "dhcp.h"
-#include "adsl.h"
-#include "url.h"
-#include "dns.h"
-
-#include "network.h"
-#include "directory.h"
-#include "wireless.h"
-
-static void error_message_net(void) /* reduce code size */
-{
- stg1_error_message("Could not configure network.");
-}
-
-
-int configure_net_device(struct interface_info * intf)
-{
- struct ifreq req;
- struct rtentry route;
- int s;
- struct sockaddr_in addr;
- struct in_addr ia;
- char ip[20], nm[20], nw[20], bc[20];
-
- addr.sin_family = AF_INET;
- addr.sin_port = 0;
-
- memcpy(&ia, &intf->ip, sizeof(intf->ip));
- strcpy(ip, inet_ntoa(ia));
-
- memcpy(&ia, &intf->netmask, sizeof(intf->netmask));
- strcpy(nm, inet_ntoa(ia));
-
- memcpy(&ia, &intf->broadcast, sizeof(intf->broadcast));
- strcpy(bc, inet_ntoa(ia));
-
- memcpy(&ia, &intf->network, sizeof(intf->network));
- strcpy(nw, inet_ntoa(ia));
-
- log_message("configuring device %s ip: %s nm: %s nw: %s bc: %s", intf->device, ip, nm, nw, bc);
-
- if (IS_TESTING)
- return 0;
-
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
- log_perror("socket");
- error_message_net();
- return 1;
- }
-
- strcpy(req.ifr_name, intf->device);
-
- if (intf->is_up == 1) {
- log_message("interface already up, downing before reconfigure");
-
- req.ifr_flags = 0;
- if (ioctl(s, SIOCSIFFLAGS, &req)) {
- close(s);
- log_perror("SIOCSIFFLAGS (downing)");
- error_message_net();
- return 1;
- }
- }
-
- /* sets IP address */
- addr.sin_port = 0;
- memcpy(&addr.sin_addr, &intf->ip, sizeof(intf->ip));
- memcpy(&req.ifr_addr, &addr, sizeof(addr));
- if (ioctl(s, SIOCSIFADDR, &req)) {
- close(s);
- log_perror("SIOCSIFADDR");
- error_message_net();
- return 1;
- }
-
- /* sets broadcast */
- memcpy(&addr.sin_addr, &intf->broadcast, sizeof(intf->broadcast));
- memcpy(&req.ifr_broadaddr, &addr, sizeof(addr));
- if (ioctl(s, SIOCSIFBRDADDR, &req)) {
- close(s);
- log_perror("SIOCSIFBRDADDR");
- error_message_net();
- return 1;
- }
-
- /* sets netmask */
- memcpy(&addr.sin_addr, &intf->netmask, sizeof(intf->netmask));
- memcpy(&req.ifr_netmask, &addr, sizeof(addr));
- if (ioctl(s, SIOCSIFNETMASK, &req)) {
- close(s);
- log_perror("SIOCSIFNETMASK");
- error_message_net();
- return 1;
- }
-
- if (intf->is_ptp)
- req.ifr_flags = IFF_UP | IFF_RUNNING | IFF_POINTOPOINT | IFF_NOARP;
- else
- req.ifr_flags = IFF_UP | IFF_RUNNING | IFF_BROADCAST;
-
- /* brings up networking! */
- if (ioctl(s, SIOCSIFFLAGS, &req)) {
- close(s);
- log_perror("SIOCSIFFLAGS (upping)");
- error_message_net();
- return 1;
- }
-
- memset(&route, 0, sizeof(route));
- route.rt_dev = intf->device;
- route.rt_flags = RTF_UP;
-
- memcpy(&addr.sin_addr, &intf->network, sizeof(intf->network));
- memcpy(&route.rt_dst, &addr, sizeof(addr));
-
- memcpy(&addr.sin_addr, &intf->netmask, sizeof(intf->netmask));
- memcpy(&route.rt_genmask, &addr, sizeof(addr));
-
- /* adds route */
- if (ioctl(s, SIOCADDRT, &route)) {
- close(s);
- log_perror("SIOCADDRT");
- error_message_net();
- return 1;
- }
-
- close(s);
-
- intf->is_up = 1;
-
- if (intf->boot_proto != BOOTPROTO_DHCP && !streq(intf->device, "lo")) {
- /* I need to sleep a bit in order for kernel to finish
- init of the network device; if not, first sendto() for
- gethostbyaddr will get an EINVAL. */
- wait_message("Bringing up networking...");
- sleep(2);
- remove_wait_message();
- }
-
- return 0;
-}
-
-/* host network informations */
-char * hostname = NULL;
-char * domain = NULL;
-struct in_addr gateway = { 0 };
-struct in_addr dns_server = { 0 };
-struct in_addr dns_server2 = { 0 };
-
-static int add_default_route(void)
-{
- int s;
- struct rtentry route;
- struct sockaddr_in addr;
-
- if (IS_TESTING)
- return 0;
-
- if (gateway.s_addr == 0) {
- log_message("no gateway provided, can't add default route");
- return 0;
- }
-
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
- close(s);
- log_perror("socket");
- error_message_net();
- return 1;
- }
-
- memset(&route, 0, sizeof(route));
-
- addr.sin_family = AF_INET;
- addr.sin_port = 0;
- addr.sin_addr = gateway;
- memcpy(&route.rt_gateway, &addr, sizeof(addr));
-
- addr.sin_addr.s_addr = INADDR_ANY;
- memcpy(&route.rt_dst, &addr, sizeof(addr));
- memcpy(&route.rt_genmask, &addr, sizeof(addr));
-
- route.rt_flags = RTF_UP | RTF_GATEWAY;
- route.rt_metric = 0;
-
- if (ioctl(s, SIOCADDRT, &route)) {
- close(s);
- log_perror("SIOCADDRT");
- error_message_net();
- return 1;
- }
-
- close(s);
-
- return 0;
-}
-
-
-static int write_resolvconf(void)
-{
- char * filename = "/etc/resolv.conf";
- FILE * f;
-
- if (dns_server.s_addr == 0) {
- log_message("resolvconf needs a dns server");
- return -1;
- }
-
- f = fopen(filename, "w");
- if (!f) {
- log_perror(filename);
- return -1;
- }
-
- if (domain)
- fprintf(f, "search %s\n", domain); /* we can live without the domain search (user will have to enter fully-qualified names) */
- fprintf(f, "nameserver %s\n", inet_ntoa(dns_server));
- if (dns_server2.s_addr != 0)
- fprintf(f, "nameserver %s\n", inet_ntoa(dns_server2));
-
- fclose(f);
- res_init(); /* reinit the resolver so DNS changes take affect */
-
- return 0;
-}
-
-
-static int save_netinfo(struct interface_info * intf)
-{
- char * file_network = "/tmp/network";
- char file_intf[500];
- FILE * f;
-
- f = fopen(file_network, "w");
- if (!f) {
- log_perror(file_network);
- return -1;
- }
-
- fprintf(f, "NETWORKING=yes\n");
- fprintf(f, "FORWARD_IPV4=false\n");
-
- if (hostname && !intf->boot_proto == BOOTPROTO_DHCP)
- fprintf(f, "HOSTNAME=%s\n", hostname);
- if (domain)
- fprintf(f, "DOMAINNAME=%s\n", domain);
- if (dhcp_hostname && !streq(dhcp_hostname, ""))
- fprintf(f, "DHCP_HOSTNAME=%s\n", dhcp_hostname);
-
- if (gateway.s_addr != 0)
- fprintf(f, "GATEWAY=%s\n", inet_ntoa(gateway));
-
- fclose(f);
-
-
- strcpy(file_intf, "/tmp/ifcfg-");
- strcat(file_intf, intf->device);
-
- f = fopen(file_intf, "w");
- if (!f) {
- log_perror(file_intf);
- return -1;
- }
-
- fprintf(f, "DEVICE=%s\n", intf->device);
-
- if (intf->boot_proto == BOOTPROTO_DHCP)
- fprintf(f, "BOOTPROTO=dhcp\n");
- else if (intf->boot_proto == BOOTPROTO_STATIC) {
- fprintf(f, "BOOTPROTO=static\n");
- fprintf(f, "IPADDR=%s\n", inet_ntoa(intf->ip));
- fprintf(f, "NETMASK=%s\n", inet_ntoa(intf->netmask));
- fprintf(f, "NETWORK=%s\n", inet_ntoa(intf->network));
- fprintf(f, "BROADCAST=%s\n", inet_ntoa(intf->broadcast));
- } else if (intf->boot_proto == BOOTPROTO_ADSL_PPPOE) {
- fprintf(f, "BOOTPROTO=adsl_pppoe\n");
- fprintf(f, "USER=%s\n", intf->user);
- fprintf(f, "PASS=%s\n", intf->pass);
- fprintf(f, "ACNAME=%s\n", intf->acname);
- }
-
- fclose(f);
-
- return 0;
-}
-
-
-char * guess_netmask(char * ip_addr)
-{
- struct in_addr addr;
- unsigned long int tmp;
-
- if (streq(ip_addr, "") || !inet_aton(ip_addr, &addr))
- return "";
-
- log_message("guessing netmask");
-
- tmp = ntohl(addr.s_addr);
-
- if (((tmp & 0xFF000000) >> 24) <= 127)
- return "255.0.0.0";
- else if (((tmp & 0xFF000000) >> 24) <= 191)
- return "255.255.0.0";
- else
- return "255.255.255.0";
-}
-
-
-char * guess_domain_from_hostname(char *hostname)
-{
- char *domain = strchr(strdup(hostname), '.');
- if (!domain || domain[1] == '\0') {
- log_message("unable to guess domain from hostname: %s", hostname);
- return NULL;
- }
- return domain + 1; /* skip '.' */
-}
-
-
-static void static_ip_callback(char ** strings)
-{
- struct in_addr addr;
-
- static int done = 0;
- if (done)
- return;
- if (streq(strings[0], "") || !inet_aton(strings[0], &addr))
- return;
- done = 1;
-
- if (!strcmp(strings[1], "")) {
- char * ptr;
- strings[1] = strdup(strings[0]);
- ptr = strrchr(strings[1], '.');
- if (ptr)
- *(ptr+1) = '\0';
- }
-
- if (!strcmp(strings[2], ""))
- strings[2] = strdup(strings[1]);
-
- if (!strcmp(strings[3], ""))
- strings[3] = strdup(guess_netmask(strings[0]));
-}
-
-
-static enum return_type setup_network_interface(struct interface_info * intf)
-{
- enum return_type results;
- char * bootprotos[] = { "Static", "DHCP", "ADSL", NULL };
- char * bootprotos_auto[] = { "static", "dhcp", "adsl" };
- char * choice;
-
- results = ask_from_list_auto("Please select your network connection type.", bootprotos, &choice, "network", bootprotos_auto);
- if (results != RETURN_OK)
- return results;
-
- if (!strcmp(choice, "Static")) {
- char * questions[] = { "IP of this machine", "IP of DNS", "IP of default gateway", "Netmask", NULL };
- char * questions_auto[] = { "ip", "dns", "gateway", "netmask" };
- static char ** answers = NULL;
- struct in_addr addr;
-
- results = ask_from_entries_auto("Please enter the network information. (leave netmask blank for Internet standard)",
- questions, &answers, 16, questions_auto, static_ip_callback);
- if (results != RETURN_OK)
- return setup_network_interface(intf);
-
- if (streq(answers[0], "") || !inet_aton(answers[0], &addr)) {
- stg1_error_message("Invalid IP address.");
- return setup_network_interface(intf);
- }
- memcpy(&intf->ip, &addr, sizeof(addr));
-
- if (!inet_aton(answers[1], &dns_server)) {
- log_message("invalid DNS");
- dns_server.s_addr = 0; /* keep an understandable state */
- }
-
- if (streq(answers[0], answers[1])) {
- log_message("IP and DNS are the same, guess you don't want a DNS, disabling it");
- dns_server.s_addr = 0; /* keep an understandable state */
- }
-
- if (!inet_aton(answers[2], &gateway)) {
- log_message("invalid gateway");
- gateway.s_addr = 0; /* keep an understandable state */
- }
-
- if ((streq(answers[3], "") && inet_aton(guess_netmask(answers[0]), &addr))
- || inet_aton(answers[3], &addr))
- memcpy(&intf->netmask, &addr, sizeof(addr));
- else {
- stg1_error_message("Invalid netmask.");
- return setup_network_interface(intf);
- }
-
- *((uint32_t *) &intf->broadcast) = (*((uint32_t *) &intf->ip) &
- *((uint32_t *) &intf->netmask)) | ~(*((uint32_t *) &intf->netmask));
-
- inet_aton("255.255.255.255", &addr);
- if (!memcmp(&addr, &intf->netmask, sizeof(addr))) {
- log_message("netmask is 255.255.255.255 -> point to point device");
- intf->network = gateway;
- intf->is_ptp = 1;
- } else {
- *((uint32_t *) &intf->network) = *((uint32_t *) &intf->ip) & *((uint32_t *) &intf->netmask);
- intf->is_ptp = 0;
- }
- intf->boot_proto = BOOTPROTO_STATIC;
-
- if (configure_net_device(intf))
- return RETURN_ERROR;
-
- } else if (streq(choice, "DHCP")) {
- results = perform_dhcp(intf);
-
- if (results == RETURN_BACK)
- return setup_network_interface(intf);
- if (results == RETURN_ERROR)
- return results;
- intf->boot_proto = BOOTPROTO_DHCP;
-
- if (configure_net_device(intf))
- return RETURN_ERROR;
-
- } else if (streq(choice, "ADSL")) {
- results = perform_adsl(intf);
-
- if (results == RETURN_BACK)
- return setup_network_interface(intf);
- if (results == RETURN_ERROR)
- return results;
- } else
- return RETURN_ERROR;
-
- return add_default_route();
-}
-
-
-static enum return_type configure_network(struct interface_info * intf)
-{
- char * dnshostname;
-
- if (hostname && domain)
- return RETURN_OK;
-
- dnshostname = mygethostbyaddr(inet_ntoa(intf->ip));
-
- if (dnshostname) {
- if (intf->boot_proto == BOOTPROTO_STATIC)
- hostname = strdup(dnshostname);
- domain = guess_domain_from_hostname(dnshostname);
- if (domain) {
- log_message("got hostname and domain from dns entry, %s and %s", dnshostname, domain);
- return RETURN_OK;
- }
- } else
- log_message("reverse name lookup on self failed");
-
- if (domain)
- return RETURN_OK;
-
- dnshostname = NULL;
- if (dns_server.s_addr != 0) {
- wait_message("Trying to resolve dns...");
- dnshostname = mygethostbyaddr(inet_ntoa(dns_server));
- remove_wait_message();
- if (dnshostname) {
- log_message("got DNS fullname, %s", dnshostname);
- domain = guess_domain_from_hostname(dnshostname);
- } else
- log_message("reverse name lookup on DNS failed");
- } else
- log_message("no DNS, unable to guess domain");
-
- if (domain) {
- log_message("got domain from DNS fullname, %s", domain);
- } else {
- enum return_type results;
- char * questions[] = { "Host name", "Domain name", NULL };
- char * questions_auto[] = { "hostname", "domain" };
- static char ** answers = NULL;
- char * boulet;
-
- if (dhcp_hostname || dhcp_domain) {
- answers = (char **) malloc(sizeof(questions));
- answers[0] = strdup(dhcp_hostname);
- answers[1] = strdup(dhcp_domain);
- }
-
- if (!dhcp_hostname || !dhcp_hostname) {
- results = ask_from_entries_auto("I could not guess hostname and domain name; please fill in this information. "
- "Valid answers are for example: `mybox' for hostname and `mynetwork.com' for "
- "domain name, for a machine called `mybox.mynetwork.com' on the Internet.",
- questions, &answers, 32, questions_auto, NULL);
- if (results != RETURN_OK)
- return results;
- }
-
- hostname = answers[0];
- if ((boulet = strchr(hostname, '.')) != NULL)
- boulet[0] = '\0';
- domain = answers[1];
- }
-
- log_message("using hostname %s", hostname);
- log_message("using domain %s", domain);
-
- return RETURN_OK;
-}
-
-
-static enum return_type bringup_networking(struct interface_info * intf)
-{
- static struct interface_info loopback;
- enum return_type results;
-
- my_insmod("af_packet", ANY_DRIVER_TYPE, NULL, 1);
-
- do {
- results = configure_wireless(intf->device);
- } while (results == RETURN_ERROR);
-
- if (results == RETURN_BACK)
- return RETURN_BACK;
-
- do {
- results = setup_network_interface(intf);
- if (results != RETURN_OK)
- return results;
- write_resolvconf();
- results = configure_network(intf);
- } while (results == RETURN_ERROR);
-
- if (results == RETURN_BACK)
- return bringup_networking(intf);
-
- write_resolvconf(); /* maybe we have now domain to write also */
-
- if (loopback.is_up == 0) {
- int rc;
- strcpy(loopback.device, "lo");
- loopback.is_ptp = 0;
- loopback.is_up = 0;
- loopback.ip.s_addr = htonl(0x7f000001);
- loopback.netmask.s_addr = htonl(0xff000000);
- loopback.broadcast.s_addr = htonl(0x7fffffff);
- loopback.network.s_addr = htonl(0x7f000000);
- rc = configure_net_device(&loopback);
- if (rc)
- return RETURN_ERROR;
- }
-
- return RETURN_OK;
-}
-
-
-static char * interface_select(void)
-{
- char ** interfaces, ** ptr;
- char * descriptions[50];
- char * choice;
- int i, count = 0;
- enum return_type results;
-
- interfaces = get_net_devices();
-
- ptr = interfaces;
- while (ptr && *ptr) {
- count++;
- ptr++;
- }
-
- if (count == 0) {
- stg1_error_message("No NET device found.\n"
- "Hint: if you're using a Laptop, note that PCMCIA Network adapters are now supported either with `pcmcia.img' or `network.img', please try both these bootdisks.");
- i = ask_insmod(NETWORK_DEVICES);
- if (i == RETURN_BACK)
- return NULL;
- return interface_select();
- }
-
- if (count == 1)
- return *interfaces;
-
- i = 0;
- while (interfaces[i]) {
- descriptions[i] = get_net_intf_description(interfaces[i]);
- i++;
- }
-
- results = ask_from_list_comments_auto("Please choose the NET device to use for the installation.",
- interfaces, descriptions, &choice, "interface", interfaces);
-
- if (results != RETURN_OK)
- return NULL;
-
- return choice;
-}
-
-#ifndef MANDRAKE_MOVE
-static enum return_type get_http_proxy(char **http_proxy_host, char **http_proxy_port)
-{
- char *questions[] = { "HTTP proxy host", "HTTP proxy port", NULL };
- char *questions_auto[] = { "proxy_host", "proxy_port", NULL };
- static char ** answers = NULL;
- enum return_type results;
-
- results = ask_from_entries_auto("Please enter HTTP proxy host and port if you need it, else leave them blank or cancel.",
- questions, &answers, 40, questions_auto, NULL);
- if (results == RETURN_OK) {
- *http_proxy_host = answers[0];
- *http_proxy_port = answers[1];
- } else {
- *http_proxy_host = NULL;
- *http_proxy_port = NULL;
- }
-
- return results;
-}
-
-
-static int mirrorlist_entry_split(const char *entry, char *mirror[4]) /* mirror = { medium, protocol, host, path } */
-{
- char *medium_sep, *protocol_sep, *host_sep, *path_sep;
-
- medium_sep = strchr(entry, ':');
- if (!medium_sep || medium_sep == entry) {
- log_message("NETWORK: no medium in \"%s\"", entry);
- return -1;
- }
-
- mirror[0] = strndup(entry, medium_sep - entry);
- entry = medium_sep + 1;
-
- protocol_sep = strstr(entry, "://");
- if (!protocol_sep || protocol_sep == entry) {
- log_message("NETWORK: no protocol in \"%s\"", entry);
- return -1;
- }
-
- mirror[1] = strndup(entry, protocol_sep - entry);
- entry = protocol_sep + 3;
-
- host_sep = strchr(entry, '/');
- if (!host_sep || host_sep == entry) {
- log_message("NETWORK: no hostname in \"%s\"", entry);
- return -1;
- }
-
- mirror[2] = strndup(entry, host_sep - entry);
- entry = host_sep;
-
- path_sep = strstr(entry, "/media/main");
- if (!path_sep || path_sep == entry) {
- log_message("NETWORK: this path isn't valid : \"%s\"", entry);
- return -1;
- }
-
- mirror[3] = strndup(entry, path_sep - entry);
-
- return 0;
-}
-
-
-#define MIRRORLIST_MAX_ITEMS 500
-#define MIRRORLIST_MAX_MEDIA 10
-
-static int choose_mirror_from_host_list(char *mirrorlist[][4], const char *protocol, char *medium, char **selected_host, char **filepath)
-{
- enum return_type results;
- char *hostlist[MIRRORLIST_MAX_ITEMS+1] = { "Specify the mirror manually", "-----" };
- int hostlist_index = 2, mirrorlist_index;
-
- /* select hosts matching medium and protocol */
- for (mirrorlist_index = 0; mirrorlist[mirrorlist_index][0]; mirrorlist_index++) {
- if (!strcmp(mirrorlist[mirrorlist_index][0], medium) &&
- !strcmp(mirrorlist[mirrorlist_index][1], protocol)) {
- hostlist[hostlist_index] = mirrorlist[mirrorlist_index][2];
- hostlist_index++;
- if (hostlist_index == MIRRORLIST_MAX_ITEMS)
- break;
- }
- }
- hostlist[hostlist_index] = NULL;
-
- do {
- results = ask_from_list("Please select a mirror from the list below.",
- hostlist, selected_host);
-
- if (results == RETURN_BACK) {
- return RETURN_ERROR;
- } else if (results == RETURN_OK) {
- if (!strcmp(*selected_host, hostlist[0])) {
- /* enter the mirror manually */
- return RETURN_OK;
- } else if (!strcmp(*selected_host, hostlist[1])) {
- /* the separator has been selected */
- results = RETURN_ERROR;
- continue;
- }
- }
-
- /* select the path according to medium, protocol and host */
- for (mirrorlist_index = 0; mirrorlist[mirrorlist_index][0]; mirrorlist_index++) {
- if (!strcmp(mirrorlist[mirrorlist_index][0], medium) &&
- !strcmp(mirrorlist[mirrorlist_index][1], protocol) &&
- !strcmp(mirrorlist[mirrorlist_index][2], *selected_host)) {
- *filepath = mirrorlist[mirrorlist_index][3];
- return RETURN_OK;
- }
- }
-
- stg1_info_message("Unable to find the path for this mirror, please select another one");
- results = RETURN_ERROR;
-
- } while (results == RETURN_ERROR);
-
- return RETURN_ERROR;
-}
-
-
-static int choose_mirror_from_list(char *http_proxy_host, char *http_proxy_port, const char *protocol, char **selected_host, char **filepath)
-{
- enum return_type results;
- char *mirrorlist[MIRRORLIST_MAX_ITEMS+1][4];
- int mirrorlist_number = 0;
- char *medialist[MIRRORLIST_MAX_MEDIA+1] = { "Specify the mirror manually", "-----" };
- int media_number = 2;
- char *selected_medium;
- int fd, size, line_pos = 0;
- char line[500];
- int use_http_proxy = http_proxy_host && http_proxy_port && !streq(http_proxy_host, "") && !streq(http_proxy_port, "");
-
- fd = http_download_file(MIRRORLIST_HOST, MIRRORLIST_PATH, &size, use_http_proxy ? "http" : NULL, http_proxy_host, http_proxy_port);
- if (fd < 0) {
- log_message("HTTP: unable to get mirrors list");
- return RETURN_ERROR;
- }
-
- while (read(fd, line + line_pos, 1) > 0) {
- if (line[line_pos] == '\n') {
- line[line_pos] = '\0';
- line_pos = 0;
-
- /* skip medium if it looks like an updates one */
- if (strstr(line, "updates"))
- continue;
-
- if (mirrorlist_entry_split(line, mirrorlist[mirrorlist_number]) < 0)
- continue;
-
- /* add medium in media list if different from previous one */
- if (media_number == 2 ||
- strcmp(mirrorlist[mirrorlist_number][0], medialist[media_number-1])) {
- medialist[media_number] = mirrorlist[mirrorlist_number][0];
- media_number++;
- }
-
- mirrorlist_number++;
- } else {
- line_pos++;
- }
-
- if (mirrorlist_number >= MIRRORLIST_MAX_ITEMS || media_number >= MIRRORLIST_MAX_MEDIA)
- break;
- }
- close(fd);
-
- mirrorlist[mirrorlist_number][0] = NULL;
- medialist[media_number] = NULL;
-
- do {
- results = ask_from_list("Please select a medium from the list below.",
- medialist, &selected_medium);
-
- if (results == RETURN_BACK) {
- return RETURN_BACK;
- } else if (results == RETURN_OK) {
- if (!strcmp(selected_medium, medialist[0])) {
- /* enter the mirror manually */
- return RETURN_OK;
- } else if (!strcmp(selected_medium, medialist[1])) {
- /* the separator has been selected */
- results = RETURN_ERROR;
- continue;
- } else {
- /* a medium has been selected */
- results = choose_mirror_from_host_list(mirrorlist, protocol, selected_medium, selected_host, filepath);
- }
- }
- } while (results == RETURN_ERROR);
-
- return results;
-}
-#endif
-
-
-/* -=-=-- */
-
-
-enum return_type intf_select_and_up()
-{
- static struct interface_info intf[20];
- static int num_interfaces = 0;
- struct interface_info * sel_intf = NULL;
- int i;
- enum return_type results;
- char * iface = interface_select();
-
- if (iface == NULL)
- return RETURN_BACK;
-
- for (i = 0; i < num_interfaces ; i++)
- if (!strcmp(intf[i].device, iface))
- sel_intf = &(intf[i]);
-
- if (sel_intf == NULL) {
- sel_intf = &(intf[num_interfaces]);
- strcpy(sel_intf->device, iface);
- sel_intf->is_up = 0;
- num_interfaces++;
- }
-
- results = bringup_networking(sel_intf);
-
- if (results == RETURN_OK)
- save_netinfo(sel_intf);
-
- return results;
-}
-
-
-
-enum return_type nfs_prepare(void)
-{
- char * questions[] = { "NFS server name", DISTRIB_NAME " directory", NULL };
- char * questions_auto[] = { "server", "directory", NULL };
- static char ** answers = NULL;
- char * nfs_own_mount = IMAGE_LOCATION_DIR "nfsimage";
- char * nfsmount_location;
- enum return_type results = intf_select_and_up(NULL, NULL);
-
- if (results != RETURN_OK)
- return results;
-
- do {
- results = ask_from_entries_auto("Please enter the name or IP address of your NFS server, "
- "and the directory containing the " DISTRIB_NAME " Distribution.",
- questions, &answers, 40, questions_auto, NULL);
- if (results != RETURN_OK || streq(answers[0], "")) {
- unset_automatic(); /* we are in a fallback mode */
- return nfs_prepare();
- }
-
- nfsmount_location = malloc(strlen(answers[0]) + strlen(answers[1]) + 2);
- strcpy(nfsmount_location, answers[0]);
- strcat(nfsmount_location, ":");
- strcat(nfsmount_location, answers[1]);
-
- if (my_mount(nfsmount_location, nfs_own_mount, "nfs", 0) == -1) {
- stg1_error_message("I can't mount the directory from the NFS server.");
- results = RETURN_BACK;
- continue;
- }
-
- results = try_with_directory(nfs_own_mount, "nfs", "nfs-iso");
- if (results != RETURN_OK)
- umount(nfs_own_mount);
- if (results == RETURN_ERROR)
- return RETURN_ERROR;
- }
- while (results == RETURN_BACK);
-
- return RETURN_OK;
-}
-
-
-#ifndef MANDRAKE_MOVE
-enum return_type ftp_prepare(void)
-{
- char * questions[] = { "FTP server", DISTRIB_NAME " directory", "Login", "Password", NULL };
- char * questions_auto[] = { "server", "directory", "user", "pass", NULL };
- static char ** answers = NULL;
- enum return_type results;
- struct utsname kernel_uname;
- char *http_proxy_host, *http_proxy_port;
- int use_http_proxy;
-
- if (!ramdisk_possible()) {
- stg1_error_message("FTP install needs more than %d Mbytes of memory (detected %d Mbytes). You may want to try an NFS install.",
- MEM_LIMIT_DRAKX, total_memory());
- return RETURN_ERROR;
- }
-
- results = intf_select_and_up();
-
- if (results != RETURN_OK)
- return results;
-
- get_http_proxy(&http_proxy_host, &http_proxy_port);
- use_http_proxy = http_proxy_host && http_proxy_port && !streq(http_proxy_host, "") && !streq(http_proxy_port, "");
-
- uname(&kernel_uname);
-
- do {
- char location_full[500];
- int ftp_serv_response = -1;
- int fd, size;
- char ftp_hostname[500];
-
- if (!IS_AUTOMATIC) {
- if (answers == NULL)
- answers = (char **) malloc(sizeof(questions));
-
- results = choose_mirror_from_list(http_proxy_host, http_proxy_port, "ftp", &answers[0], &answers[1]);
-
- if (results == RETURN_BACK)
- return ftp_prepare();
-
- if (use_http_proxy) {
- results = ask_yes_no("Do you want to use this HTTP proxy for FTP connections too ?");
-
- if (results == RETURN_BACK)
- return ftp_prepare();
-
- use_http_proxy = results == RETURN_OK;
- }
- }
-
- results = ask_from_entries_auto("Please enter the name or IP address of the FTP server, "
- "the directory containing the " DISTRIB_NAME " Distribution, "
- "and the login/pass if necessary (leave login blank for anonymous). ",
- questions, &answers, 40, questions_auto, NULL);
- if (results != RETURN_OK || streq(answers[0], "")) {
- unset_automatic(); /* we are in a fallback mode */
- return ftp_prepare();
- }
-
- strcpy(location_full, answers[1][0] == '/' ? "" : "/");
- strcat(location_full, answers[1]);
-
- if (use_http_proxy) {
- log_message("FTP: don't connect to %s directly, will use proxy", answers[0]);
- } else {
- char *kernels_list_file, *kernels_list;
-
- log_message("FTP: trying to connect to %s", answers[0]);
- ftp_serv_response = ftp_open_connection(answers[0], answers[2], answers[3], "");
- if (ftp_serv_response < 0) {
- log_message("FTP: error connect %d", ftp_serv_response);
- if (ftp_serv_response == FTPERR_BAD_HOSTNAME)
- stg1_error_message("Error: bad hostname.");
- else if (ftp_serv_response == FTPERR_FAILED_CONNECT)
- stg1_error_message("Error: failed to connect to remote host.");
- else
- stg1_error_message("Error: couldn't connect.");
- results = RETURN_BACK;
- continue;
- }
- kernels_list_file = asprintf_("%s/" CLP_LOCATION_REL "mdkinst.kernels", location_full);
-
- log_message("FTP: trying to retrieve %s", kernels_list_file);
- fd = ftp_start_download(ftp_serv_response, kernels_list_file, &size);
-
- if (fd < 0) {
- char *msg = str_ftp_error(fd);
- log_message("FTP: error get %d for remote file %s", fd, kernels_list_file);
- stg1_error_message("Error: %s.", msg ? msg : "couldn't retrieve list of kernel versions");
- results = RETURN_BACK;
- continue;
- }
-
- kernels_list = alloca(size);
- size = read(fd, kernels_list, size);
- close(fd);
- ftp_end_data_command(ftp_serv_response);
-
- if (!strstr(kernels_list, asprintf_("%s\n", kernel_uname.release))) {
- stg1_info_message("The modules for this kernel (%s) can't be found on this mirror, please update your boot disk", kernel_uname.release);
- results = RETURN_BACK;
- continue;
- }
- }
-
- strcat(location_full, CLP_FILE_REL("/"));
-
- log_message("FTP: trying to retrieve %s", location_full);
-
- if (use_http_proxy) {
- if (strcmp(answers[2], "")) {
- strcpy(ftp_hostname, answers[2]); /* user name */
- strcat(ftp_hostname, ":");
- strcat(ftp_hostname, answers[3]); /* password */
- strcat(ftp_hostname, "@");
- } else {
- strcpy(ftp_hostname, "");
- }
- strcat(ftp_hostname, answers[0]);
- fd = http_download_file(ftp_hostname, location_full, &size, "ftp", http_proxy_host, http_proxy_port);
- } else {
- fd = ftp_start_download(ftp_serv_response, location_full, &size);
- }
-
- if (fd < 0) {
- char *msg = str_ftp_error(fd);
- log_message("FTP: error get %d for remote file %s", fd, location_full);
- stg1_error_message("Error: %s.", msg ? msg : "couldn't retrieve Installation program");
- results = RETURN_BACK;
- continue;
- }
-
- log_message("FTP: size of download %d bytes", size);
-
- results = load_clp_fd(fd, size);
- if (results == RETURN_OK) {
- if (!use_http_proxy)
- ftp_end_data_command(ftp_serv_response);
- } else {
- unset_automatic(); /* we are in a fallback mode */
- return results;
- }
-
- if (use_http_proxy) {
- add_to_env("METHOD", "http");
- sprintf(location_full, "ftp://%s%s", ftp_hostname, answers[1]);
- add_to_env("URLPREFIX", location_full);
- add_to_env("PROXY", http_proxy_host);
- add_to_env("PROXYPORT", http_proxy_port);
- } else {
- add_to_env("METHOD", "ftp");
- add_to_env("HOST", answers[0]);
- add_to_env("PREFIX", answers[1]);
- if (!streq(answers[2], "")) {
- add_to_env("LOGIN", answers[2]);
- add_to_env("PASSWORD", answers[3]);
- }
- }
- }
- while (results == RETURN_BACK);
-
- return RETURN_OK;
-}
-
-enum return_type http_prepare(void)
-{
- char * questions[] = { "HTTP server", DISTRIB_NAME " directory", NULL };
- char * questions_auto[] = { "server", "directory", NULL };
- static char ** answers = NULL;
- enum return_type results;
- char *http_proxy_host, *http_proxy_port;
-
- if (!ramdisk_possible()) {
- stg1_error_message("HTTP install needs more than %d Mbytes of memory (detected %d Mbytes). You may want to try an NFS install.",
- MEM_LIMIT_DRAKX, total_memory());
- return RETURN_ERROR;
- }
-
- results = intf_select_and_up();
-
- if (results != RETURN_OK)
- return results;
-
- get_http_proxy(&http_proxy_host, &http_proxy_port);
-
- do {
- char location_full[500];
- int fd, size;
- int use_http_proxy;
-
- results = ask_from_entries_auto("Please enter the name or IP address of the HTTP server, "
- "and the directory containing the " DISTRIB_NAME " Distribution.",
- questions, &answers, 40, questions_auto, NULL);
- if (results != RETURN_OK || streq(answers[0], "")) {
- unset_automatic(); /* we are in a fallback mode */
- return http_prepare();
- }
-
- strcpy(location_full, answers[1][0] == '/' ? "" : "/");
- strcat(location_full, answers[1]);
- strcat(location_full, CLP_FILE_REL("/"));
-
- log_message("HTTP: trying to retrieve %s from %s", location_full, answers[0]);
-
- use_http_proxy = http_proxy_host && http_proxy_port && !streq(http_proxy_host, "") && !streq(http_proxy_port, "");
-
- fd = http_download_file(answers[0], location_full, &size, use_http_proxy ? "http" : NULL, http_proxy_host, http_proxy_port);
- if (fd < 0) {
- log_message("HTTP: error %d", fd);
- if (fd == FTPERR_FAILED_CONNECT)
- stg1_error_message("Error: couldn't connect to server.");
- else
- stg1_error_message("Error: couldn't get file (%s).", location_full);
- results = RETURN_BACK;
- continue;
- }
-
- log_message("HTTP: size of download %d bytes", size);
-
- if (load_clp_fd(fd, size) != RETURN_OK) {
- unset_automatic(); /* we are in a fallback mode */
- return RETURN_ERROR;
- }
-
- add_to_env("METHOD", "http");
- sprintf(location_full, "http://%s%s%s", answers[0], answers[1][0] == '/' ? "" : "/", answers[1]);
- add_to_env("URLPREFIX", location_full);
- if (!streq(http_proxy_host, ""))
- add_to_env("PROXY", http_proxy_host);
- if (!streq(http_proxy_port, ""))
- add_to_env("PROXYPORT", http_proxy_port);
- }
- while (results == RETURN_BACK);
-
- return RETURN_OK;
-
-}
-#endif
diff --git a/mdk-stage1/network.h b/mdk-stage1/network.h
deleted file mode 100644
index a94f8150b..000000000
--- a/mdk-stage1/network.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _NETWORK_H_
-#define _NETWORK_H_
-
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <arpa/inet.h>
-
-enum return_type intf_select_and_up();
-
-enum return_type nfs_prepare(void);
-#ifndef MANDRAKE_MOVE
-enum return_type ftp_prepare(void);
-enum return_type http_prepare(void);
-#endif
-
-
-enum boot_proto_type { BOOTPROTO_STATIC, BOOTPROTO_DHCP, BOOTPROTO_ADSL_PPPOE };
-
-/* all of these in_addr things are in network byte order! */
-struct interface_info {
- char device[10];
- int is_ptp, is_up;
- struct in_addr ip, netmask, broadcast, network;
- enum boot_proto_type boot_proto;
- char *user, *pass, *acname; /* for ADSL connection */
-};
-
-
-/* these are to be used only by dhcp.c */
-
-char * guess_netmask(char * ip_addr);
-
-int configure_net_device(struct interface_info * intf);
-
-extern char * hostname;
-extern char * domain;
-extern struct in_addr gateway;
-extern struct in_addr dns_server;
-extern struct in_addr dns_server2;
-
-
-
-#endif
diff --git a/mdk-stage1/newt-frontend.c b/mdk-stage1/newt-frontend.c
deleted file mode 100644
index 4bedda82b..000000000
--- a/mdk-stage1/newt-frontend.c
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-
-/*
- * Each different frontend must implement all functions defined in frontend.h
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <sys/time.h>
-#include "newt/newt.h"
-
-#include <probing.h>
-
-#include "frontend.h"
-
-void init_frontend(char * welcome_msg)
-{
- int i;
- for (i=0; i<38; i++) printf("\n");
- newtInit();
- newtCls();
-
- newtDrawRootText(0, 0, welcome_msg);
-
- if (welcome_msg[0])
- newtPushHelpLine(" <Alt-F1> for here, <Alt-F3> to see the logs, <Alt-F4> for kernel msg");
-
- newtRefresh();
-}
-
-
-void finish_frontend(void)
-{
- newtFinished();
-}
-
-
-void verror_message(char *msg, va_list ap)
-{
- newtWinMessagev("Error", "Ok", msg, ap);
-}
-
-void vinfo_message(char *msg, va_list ap)
-{
- newtWinMessagev("Notice", "Ok", msg, ap);
-}
-
-
-void vwait_message(char *msg, va_list ap)
-{
- int width, height;
- char * title = "Please wait...";
- newtComponent c, f;
- newtGrid grid;
- char * buf = NULL;
- char * flowed;
- int size = 0;
- int i = 0;
-
- do {
- size += 1000;
- if (buf) free(buf);
- buf = malloc(size);
- i = vsnprintf(buf, size, msg, ap);
- } while (i >= size || i == -1);
-
- flowed = newtReflowText(buf, 60, 5, 5, &width, &height);
-
- c = newtTextbox(-1, -1, width, height, NEWT_TEXTBOX_WRAP);
- newtTextboxSetText(c, flowed);
-
- grid = newtCreateGrid(1, 1);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, c, 0, 0, 0, 0, 0, 0);
- newtGridWrappedWindow(grid, title);
-
- free(flowed);
- free(buf);
-
- f = newtForm(NULL, NULL, 0);
- newtFormAddComponent(f, c);
-
- newtDrawForm(f);
- newtRefresh();
- newtFormDestroy(f);
-}
-
-void remove_wait_message(void)
-{
- newtPopWindow();
-}
-
-
-static newtComponent form = NULL, scale = NULL;
-static int size_progress;
-static int actually_drawn;
-static char * msg_progress;
-
-void init_progression_raw(char *msg, int size)
-{
- size_progress = size;
- if (size) {
- actually_drawn = 0;
- newtCenteredWindow(70, 5, "Please wait...");
- form = newtForm(NULL, NULL, 0);
- newtFormAddComponent(form, newtLabel(1, 1, msg));
- scale = newtScale(1, 3, 68, size);
- newtFormAddComponent(form, scale);
- newtDrawForm(form);
- newtRefresh();
- }
- else {
- wait_message(msg);
- msg_progress = msg;
- }
-}
-
-void update_progression_raw(int current_size)
-{
- if (size_progress) {
- if (current_size <= size_progress)
- newtScaleSet(scale, current_size);
- newtRefresh();
- }
- else {
- struct timeval t;
- int time;
- static int last_time = -1;
- gettimeofday(&t, NULL);
- time = t.tv_sec*3 + t.tv_usec/300000;
- if (time != last_time) {
- char msg_prog_final[500];
- sprintf(msg_prog_final, "%s (%d bytes read) ", msg_progress, current_size);
- remove_wait_message();
- wait_message(msg_prog_final);
- }
- last_time = time;
- }
-}
-
-void end_progression_raw(void)
-{
- if (size_progress) {
- newtPopWindow();
- newtFormDestroy(form);
- }
- else
- remove_wait_message();
-}
-
-
-enum return_type ask_from_list_comments(char *msg, char ** elems, char ** elems_comments, char ** choice)
-{
- char * items[500];
- int answer = 0, rc;
- char ** sav_elems = elems;
- int i;
-
- i = 0;
- while (elems && *elems) {
- int j = (*elems_comments) ? strlen(*elems_comments) : 0;
- items[i] = malloc(sizeof(char) * (strlen(*elems) + j + 4));
- strcpy(items[i], *elems);
- if (*elems_comments) {
- strcat(items[i], " (");
- strcat(items[i], *elems_comments);
- strcat(items[i], ")");
- }
- elems_comments++;
- i++;
- elems++;
- }
- items[i] = NULL;
-
- rc = newtWinMenu("Please choose...", msg, 52, 5, 5, 7, items, &answer, "Ok", "Cancel", NULL);
-
- if (rc == 2)
- return RETURN_BACK;
-
- *choice = strdup(sav_elems[answer]);
-
- return RETURN_OK;
-}
-
-
-enum return_type ask_from_list(char *msg, char ** elems, char ** choice)
-{
- int answer = 0, rc;
-
- rc = newtWinMenu("Please choose...", msg, 52, 5, 5, 7, elems, &answer, "Ok", "Cancel", NULL);
-
- if (rc == 2)
- return RETURN_BACK;
-
- *choice = strdup(elems[answer]);
-
- return RETURN_OK;
-}
-
-
-enum return_type ask_yes_no(char *msg)
-{
- int rc;
-
- rc = newtWinTernary("Please answer...", "Yes", "No", "Back", msg);
-
- if (rc == 1)
- return RETURN_OK;
- else if (rc == 3)
- return RETURN_BACK;
- else return RETURN_ERROR;
-}
-
-
-static void (*callback_real_function)(char ** strings) = NULL;
-
-static void default_callback(newtComponent co __attribute__ ((unused)), void * data)
-{
- newtComponent * entries = data;
- char * strings[50], ** ptr;
-
- if (!callback_real_function)
- return;
-
- ptr = strings;
- while (entries && *entries) {
- *ptr = newtEntryGetValue(*entries);
- entries++;
- ptr++;
- }
-
- callback_real_function(strings);
-
- ptr = strings;
- entries = data;
- while (entries && *entries) {
- newtEntrySet(*entries, strdup(*ptr), 1);
- entries++;
- ptr++;
- }
-}
-
-/* only supports up to 50 buttons and entries -- shucks! */
-static int mynewtWinEntries(char * title, char * text, int suggestedWidth, int flexDown,
- int flexUp, int dataWidth, void (*callback_func)(char ** strings),
- struct newtWinEntry * items, char * button1, ...) {
- newtComponent buttons[50], result, form, textw;
- newtGrid grid, buttonBar, subgrid;
- int numItems;
- int rc, i;
- int numButtons;
- char * buttonName;
- newtComponent entries[50];
-
- va_list args;
-
- textw = newtTextboxReflowed(-1, -1, text, suggestedWidth, flexDown,
- flexUp, 0);
-
- for (numItems = 0; items[numItems].text; numItems++);
-
- buttonName = button1, numButtons = 0;
- va_start(args, button1);
- while (buttonName) {
- buttons[numButtons] = newtButton(-1, -1, buttonName);
- numButtons++;
- buttonName = va_arg(args, char *);
- }
-
- va_end(args);
-
- buttonBar = newtCreateGrid(numButtons, 1);
- for (i = 0; i < numButtons; i++) {
- newtGridSetField(buttonBar, i, 0, NEWT_GRID_COMPONENT,
- buttons[i],
- i ? 1 : 0, 0, 0, 0, 0, 0);
- }
-
- if (callback_func) {
- callback_real_function = callback_func;
- entries[numItems] = NULL;
- }
- else
- callback_real_function = NULL;
-
- subgrid = newtCreateGrid(2, numItems);
- for (i = 0; i < numItems; i++) {
- newtComponent entr = newtEntry(-1, -1, items[i].value ?
- *items[i].value : NULL, dataWidth,
- items[i].value, items[i].flags);
-
- newtGridSetField(subgrid, 0, i, NEWT_GRID_COMPONENT,
- newtLabel(-1, -1, items[i].text),
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(subgrid, 1, i, NEWT_GRID_COMPONENT,
- entr,
- 1, 0, 0, 0, 0, 0);
- if (callback_func) {
- entries[i] = entr;
- newtComponentAddCallback(entr, default_callback, entries);
- }
- }
-
-
- grid = newtCreateGrid(1, 3);
- form = newtForm(NULL, 0, 0);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, textw,
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(grid, 0, 1, NEWT_GRID_SUBGRID, subgrid,
- 0, 1, 0, 0, 0, 0);
- newtGridSetField(grid, 0, 2, NEWT_GRID_SUBGRID, buttonBar,
- 0, 1, 0, 0, 0, NEWT_GRID_FLAG_GROWX);
- newtGridAddComponentsToForm(grid, form, 1);
- newtGridWrappedWindow(grid, title);
- newtGridFree(grid, 1);
-
- result = newtRunForm(form);
-
- for (rc = 0; rc < numItems; rc++)
- *items[rc].value = strdup(*items[rc].value);
-
- for (rc = 0; result != buttons[rc] && rc < numButtons; rc++);
- if (rc == numButtons)
- rc = 0; /* F12 */
- else
- rc++;
-
- newtFormDestroy(form);
- newtPopWindow();
-
- return rc;
-}
-
-
-enum return_type ask_from_entries(char *msg, char ** questions, char *** answers, int entry_size, void (*callback_func)(char ** strings))
-{
- struct newtWinEntry entries[50];
- int j, i = 0;
- int rc;
- char ** already_answers = NULL;
-
- while (questions && *questions) {
- entries[i].text = *questions;
- entries[i].flags = NEWT_FLAG_SCROLL | (!strcmp(*questions, "Password") ? NEWT_FLAG_PASSWORD : 0);
- i++;
- questions++;
- }
- entries[i].text = NULL;
- entries[i].value = NULL;
-
- if (*answers == NULL)
- *answers = (char **) malloc(sizeof(char *) * i);
- else
- already_answers = *answers;
-
- for (j = 0 ; j < i ; j++) {
- entries[j].value = &((*answers)[j]);
- if (already_answers && *already_answers) {
- *(entries[j].value) = *already_answers;
- already_answers++;
- } else
- *(entries[j].value) = NULL;
- }
-
- rc = mynewtWinEntries("Please fill in entries...", msg, 52, 5, 5, entry_size, callback_func, entries, "Ok", "Cancel", NULL);
-
- if (rc == 3)
- return RETURN_BACK;
- if (rc != 1)
- return RETURN_ERROR;
-
- return RETURN_OK;
-}
-
-
-void suspend_to_console(void) { newtSuspend(); }
-void resume_from_suspend(void) { newtResume(); }
diff --git a/mdk-stage1/newt/Makefile b/mdk-stage1/newt/Makefile
deleted file mode 100644
index fb6cdd5ff..000000000
--- a/mdk-stage1/newt/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-LIBNAME = libnewt
-
-OBJS = newt.o button.o form.o checkbox.o entry.o label.o listbox.o scrollbar.o textbox.o scale.o grid.o windows.o buttonbar.o checkboxtree.o
-
-DEFS = -DVERSION=\"0.50.19\"
-
-INCS = -I../slang
-
-
-TARGETS = $(LIBNAME).a
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o *.a
-
-$(LIBNAME).a: $(OBJS)
- ar -cru $@ $^
- ranlib $@
-
-$(OBJS): %.o: %.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/newt/button.c b/mdk-stage1/newt/button.c
deleted file mode 100644
index d7da58175..000000000
--- a/mdk-stage1/newt/button.c
+++ /dev/null
@@ -1,192 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct button {
- char * text;
- int compact;
-};
-
-static void buttonDrawIt(newtComponent co, int active, int pushed);
-static void buttonDrawText(newtComponent co, int active, int pushed);
-
-static void buttonDraw(newtComponent c);
-static void buttonDestroy(newtComponent co);
-static struct eventResult buttonEvent(newtComponent c,
- struct event ev);
-static void buttonPlace(newtComponent co, int newLeft, int newTop);
-
-static struct componentOps buttonOps = {
- buttonDraw,
- buttonEvent,
- buttonDestroy,
- buttonPlace,
- newtDefaultMappedHandler,
-} ;
-
-static newtComponent createButton(int left, int row, const char * text, int compact) {
- newtComponent co;
- struct button * bu;
-
- co = malloc(sizeof(*co));
- bu = malloc(sizeof(struct button));
- co->data = bu;
-
- bu->text = strdup(text);
- bu->compact = compact;
- co->ops = &buttonOps;
-
- if (bu->compact) {
- co->height = 1;
- co->width = strlen(text) + 3;
- } else {
- co->height = 4;
- co->width = strlen(text) + 5;
- }
-
- co->top = row;
- co->left = left;
- co->takesFocus = 1;
- co->isMapped = 0;
-
- newtGotorc(co->top, co->left);
-
- return co;
-}
-
-newtComponent newtCompactButton(int left, int row, const char * text) {
- return createButton(left, row, text, 1);
-}
-
-newtComponent newtButton(int left, int row, const char * text) {
- return createButton(left, row, text, 0);
-}
-
-static void buttonDestroy(newtComponent co) {
- struct button * bu = co->data;
-
- free(bu->text);
- free(bu);
- free(co);
-}
-
-static void buttonPlace(newtComponent co, int newLeft, int newTop) {
- co->top = newTop;
- co->left = newLeft;
-
- newtGotorc(co->top, co->left);
-}
-
-static void buttonDraw(newtComponent co) {
- buttonDrawIt(co, 0, 0);
-}
-
-static void buttonDrawIt(newtComponent co, int active, int pushed) {
- struct button * bu = co->data;
-
- if (!co->isMapped) return;
-
- SLsmg_set_color(NEWT_COLORSET_BUTTON);
-
- if (bu->compact) {
- if (active)
- SLsmg_set_color(NEWT_COLORSET_COMPACTBUTTON);
- else
- SLsmg_set_color(NEWT_COLORSET_BUTTON);
- newtGotorc(co->top+ pushed, co->left + 1 + pushed);
- SLsmg_write_char('<');
- SLsmg_write_string(bu->text);
- SLsmg_write_char('>');
- } else {
- if (pushed) {
- SLsmg_set_color(NEWT_COLORSET_BUTTON);
- newtDrawBox(co->left + 1, co->top + 1, co->width - 1, 3, 0);
-
- SLsmg_set_color(NEWT_COLORSET_WINDOW);
- newtClearBox(co->left, co->top, co->width, 1);
- newtClearBox(co->left, co->top, 1, co->height);
- } else {
- newtDrawBox(co->left, co->top, co->width - 1, 3, 1);
- }
-
- buttonDrawText(co, active, pushed);
- }
-}
-
-static void buttonDrawText(newtComponent co, int active, int pushed) {
- struct button * bu = co->data;
-
- if (pushed) pushed = 1;
-
- if (active)
- SLsmg_set_color(NEWT_COLORSET_ACTBUTTON);
- else
- SLsmg_set_color(NEWT_COLORSET_BUTTON);
-
- newtGotorc(co->top + 1 + pushed, co->left + 1 + pushed);
- SLsmg_write_char(' ');
- SLsmg_write_string(bu->text);
- SLsmg_write_char(' ');
-}
-
-static struct eventResult buttonEvent(newtComponent co,
- struct event ev) {
- struct eventResult er;
- struct button * bu = co->data;
- er.result = ER_IGNORED;
- er.u.focus = NULL;
-
- if (ev.when == EV_NORMAL) {
- switch (ev.event) {
- case EV_FOCUS:
- buttonDrawIt(co, 1, 0);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_UNFOCUS:
- buttonDrawIt(co, 0, 0);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_KEYPRESS:
- if (ev.u.key == ' ' || ev.u.key == '\r') {
- if (!bu->compact) {
- /* look pushed */
- buttonDrawIt(co, 1, 1);
- newtRefresh();
- newtDelay(150000);
- buttonDrawIt(co, 1, 0);
- newtRefresh();
- newtDelay(150000);
- }
-
- er.result = ER_EXITFORM;
- } else
- er.result = ER_IGNORED;
- break;
- case EV_MOUSE:
- if (ev.u.mouse.type == MOUSE_BUTTON_DOWN &&
- co->top <= ev.u.mouse.y &&
- co->top + co->height - !bu->compact > ev.u.mouse.y &&
- co->left <= ev.u.mouse.x &&
- co->left + co->width - !bu->compact > ev.u.mouse.x) {
- if (!bu->compact) {
- buttonDrawIt(co, 1, 1);
- newtRefresh();
- newtDelay(150000);
- buttonDrawIt(co, 1, 0);
- newtRefresh();
- newtDelay(150000);
- }
- er.result = ER_EXITFORM;
- }
- break;
- }
- } else
- er.result = ER_IGNORED;
-
- return er;
-}
diff --git a/mdk-stage1/newt/buttonbar.c b/mdk-stage1/newt/buttonbar.c
deleted file mode 100644
index 45473c9d2..000000000
--- a/mdk-stage1/newt/buttonbar.c
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <stdarg.h>
-
-#include "newt.h"
-
-/* if they try and pack more then 50 buttons, screw 'em */
-newtGrid newtButtonBarv(char * button1, newtComponent * b1comp, va_list args) {
- newtGrid grid;
- struct buttonInfo {
- char * name;
- newtComponent * compPtr;
- } buttons[50];
- int num;
- int i;
-
- buttons[0].name = button1, buttons[0].compPtr = b1comp, num = 1;
- while (1) {
- buttons[num].name = va_arg(args, char *);
- if (!buttons[num].name) break;
- buttons[num].compPtr = va_arg(args, newtComponent *);
- num++;
- }
-
- grid = newtCreateGrid(num, 1);
-
- for (i = 0; i < num; i++) {
- *buttons[i].compPtr = newtButton(-1, -1, buttons[i].name);
- newtGridSetField(grid, i, 0, NEWT_GRID_COMPONENT,
- *buttons[i].compPtr,
- num ? 1 : 0, 0, 0, 0, 0, 0);
- }
-
- return grid;
-}
-
-newtGrid newtButtonBar(char * button1, newtComponent * b1comp, ...) {
- va_list args;
- newtGrid grid;
-
- va_start(args, b1comp);
-
- grid = newtButtonBarv(button1, b1comp, args);
-
- va_end(args);
-
- return grid;
-}
diff --git a/mdk-stage1/newt/checkbox.c b/mdk-stage1/newt/checkbox.c
deleted file mode 100644
index 643609d34..000000000
--- a/mdk-stage1/newt/checkbox.c
+++ /dev/null
@@ -1,292 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-enum type { CHECK, RADIO };
-
-struct checkbox {
- char * text;
- char * seq;
- char * result;
- newtComponent prevButton, lastButton;
- enum type type;
- char value;
- int active, inactive;
- const void * data;
- int flags;
- int hasFocus;
-};
-
-static void makeActive(newtComponent co);
-
-static void cbDraw(newtComponent c);
-static void cbDestroy(newtComponent co);
-struct eventResult cbEvent(newtComponent co, struct event ev);
-
-static struct componentOps cbOps = {
- cbDraw,
- cbEvent,
- cbDestroy,
- newtDefaultPlaceHandler,
- newtDefaultMappedHandler,
-} ;
-
-newtComponent newtRadiobutton(int left, int top, const char * text, int isDefault,
- newtComponent prevButton) {
- newtComponent co;
- newtComponent curr;
- struct checkbox * rb;
- char initialValue;
-
- if (isDefault)
- initialValue = '*';
- else
- initialValue = ' ';
-
- co = newtCheckbox(left, top, text, initialValue, " *", NULL);
- rb = co->data;
- rb->type = RADIO;
-
- rb->prevButton = prevButton;
-
- for (curr = co; curr; curr = rb->prevButton) {
- rb = curr->data;
- rb->lastButton = co;
- }
-
- return co;
-}
-
-newtComponent newtRadioGetCurrent(newtComponent setMember) {
- struct checkbox * rb = setMember->data;
-
- setMember = rb->lastButton;
- rb = setMember->data;
-
- while (rb && rb->value != '*') {
- setMember = rb->prevButton;
- if (!setMember)
- return NULL;
- rb = setMember->data;
- }
-
- return setMember;
-}
-
-char newtCheckboxGetValue(newtComponent co) {
- struct checkbox * cb = co->data;
-
- return cb->value;
-}
-
-void newtCheckboxSetValue(newtComponent co, char value) {
- struct checkbox * cb = co->data;
-
- *cb->result = value;
- cbDraw(co);
-}
-
-newtComponent newtCheckbox(int left, int top, const char * text, char defValue,
- const char * seq, char * result) {
- newtComponent co;
- struct checkbox * cb;
-
- if (!seq) seq = " *";
-
- co = malloc(sizeof(*co));
- cb = malloc(sizeof(struct checkbox));
- co->data = cb;
- cb->flags = 0;
- if (result)
- cb->result = result;
- else
- cb->result = &cb->value;
-
- cb->text = strdup(text);
- cb->seq = strdup(seq);
- cb->type = CHECK;
- cb->hasFocus = 0;
- cb->inactive = COLORSET_CHECKBOX;
- cb->active = COLORSET_ACTCHECKBOX;
- defValue ? (*cb->result = defValue) : (*cb->result = cb->seq[0]);
-
- co->ops = &cbOps;
-
- co->callback = NULL;
- co->height = 1;
- co->width = strlen(text) + 4;
- co->top = top;
- co->left = left;
- co->takesFocus = 1;
-
- return co;
-}
-
-void newtCheckboxSetFlags(newtComponent co, int flags, enum newtFlagsSense sense) {
- struct checkbox * cb = co->data;
- int row, col;
-
- cb->flags = newtSetFlags(cb->flags, flags, sense);
-
- if (!(cb->flags & NEWT_FLAG_DISABLED))
- co->takesFocus = 1;
- else
- co->takesFocus = 0;
-
- newtGetrc(&row, &col);
- cbDraw(co);
- newtGotorc(row, col);
-}
-
-static void cbDraw(newtComponent c) {
- struct checkbox * cb = c->data;
-
- if (c->top == -1 || !c->isMapped) return;
-
- if (cb->flags & NEWT_FLAG_DISABLED) {
- cb->inactive = NEWT_COLORSET_DISENTRY;
- cb->active = NEWT_COLORSET_DISENTRY;
- } else {
- cb->inactive = COLORSET_CHECKBOX;
- cb->active = COLORSET_ACTCHECKBOX;
- }
-
- SLsmg_set_color(cb->inactive);
-
- newtGotorc(c->top, c->left);
-
- switch (cb->type) {
- case RADIO:
- SLsmg_write_string("( ) ");
- break;
-
- case CHECK:
- SLsmg_write_string("[ ] ");
- break;
-
- default:
- break;
- }
-
- SLsmg_write_string(cb->text);
-
- if (cb->hasFocus)
- SLsmg_set_color(cb->active);
-
- newtGotorc(c->top, c->left + 1);
- SLsmg_write_char(*cb->result);
-}
-
-static void cbDestroy(newtComponent co) {
- struct checkbox * cb = co->data;
-
- free(cb->text);
- free(cb->seq);
- free(cb);
- free(co);
-}
-
-struct eventResult cbEvent(newtComponent co, struct event ev) {
- struct checkbox * cb = co->data;
- struct eventResult er;
- const char * cur;
- er.result = ER_IGNORED;
- er.u.focus = NULL;
-
- if (ev.when == EV_NORMAL) {
- switch (ev.event) {
- case EV_FOCUS:
- cb->hasFocus = 1;
- cbDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_UNFOCUS:
- cb->hasFocus = 0;
- cbDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_KEYPRESS:
- if (ev.u.key == ' ') {
- if (cb->type == RADIO) {
- makeActive(co);
- } else if (cb->type == CHECK) {
- cur = strchr(cb->seq, *cb->result);
- if (!cur)
- *cb->result = *cb->seq;
- else {
- cur++;
- if (! *cur)
- *cb->result = *cb->seq;
- else
- *cb->result = *cur;
- }
- cbDraw(co);
- er.result = ER_SWALLOWED;
-
- if (co->callback)
- co->callback(co, co->callbackData);
- } else {
- er.result = ER_IGNORED;
- }
- } else if(ev.u.key == NEWT_KEY_ENTER) {
- er.result = ER_IGNORED;
- } else {
- er.result = ER_IGNORED;
- }
- break;
- case EV_MOUSE:
- if (ev.u.mouse.type == MOUSE_BUTTON_DOWN) {
- if (cb->type == RADIO) {
- makeActive(co);
- } else if (cb->type == CHECK) {
- cur = strchr(cb->seq, *cb->result);
- if (!cur)
- *cb->result = *cb->seq;
- else {
- cur++;
- if (! *cur)
- *cb->result = *cb->seq;
- else
- *cb->result = *cur;
- }
- cbDraw(co);
- er.result = ER_SWALLOWED;
-
- if (co->callback)
- co->callback(co, co->callbackData);
- }
- }
- }
- } else
- er.result = ER_IGNORED;
-
- return er;
-}
-
-static void makeActive(newtComponent co) {
- struct checkbox * cb = co->data;
- struct checkbox * rb;
- newtComponent curr;
-
- /* find the one that's turned off */
- curr = cb->lastButton;
- rb = curr->data;
- while (curr && rb->value == rb->seq[0]) {
- curr = rb->prevButton;
- if (curr) rb = curr->data;
- }
- if (curr) {
- rb->value = rb->seq[0];
- cbDraw(curr);
- }
- cb->value = cb->seq[1];
- cbDraw(co);
-
- if (co->callback)
- co->callback(co, co->callbackData);
-}
diff --git a/mdk-stage1/newt/checkboxtree.c b/mdk-stage1/newt/checkboxtree.c
deleted file mode 100644
index 00113f23e..000000000
--- a/mdk-stage1/newt/checkboxtree.c
+++ /dev/null
@@ -1,714 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct items {
- char * text;
- const void *data;
- unsigned char selected;
- struct items *next;
- struct items *prev;
- struct items *branch;
- int flags;
- int depth;
-};
-
-struct CheckboxTree {
- newtComponent sb;
- int curWidth; /* size of text w/o scrollbar or border*/
- int curHeight; /* size of text w/o border */
- struct items * itemlist;
- struct items ** flatList, ** currItem, ** firstItem;
- int flatCount;
- int flags;
- int pad;
- char * seq;
- char * result;
-};
-
-static void ctDraw(newtComponent c);
-static void ctDestroy(newtComponent co);
-static void ctPlace(newtComponent co, int newLeft, int newTop);
-struct eventResult ctEvent(newtComponent co, struct event ev);
-static void ctMapped(newtComponent co, int isMapped);
-static struct items * findItem(struct items * items, const void * data);
-static void buildFlatList(newtComponent co);
-static void doBuildFlatList(struct CheckboxTree * ct, struct items * item);
-enum countWhat { COUNT_EXPOSED=0, COUNT_SELECTED=1 };
-static int countItems(struct items * item, enum countWhat justExposed);
-
-static struct componentOps ctOps = {
- ctDraw,
- ctEvent,
- ctDestroy,
- ctPlace,
- ctMapped,
-} ;
-
-static int countItems(struct items * item, enum countWhat what) {
- int count = 0;
-
- while (item) {
- if ((!item->branch && item->selected == what) || (what == COUNT_EXPOSED))
- count++;
- if (item->branch || (what == COUNT_EXPOSED && item->selected))
- count += countItems(item->branch, what);
- item = item->next;
- }
-
- return count;
-}
-
-static void doBuildFlatList(struct CheckboxTree * ct, struct items * item) {
- while (item) {
- ct->flatList[ct->flatCount++] = item;
- if (item->branch && item->selected) doBuildFlatList(ct, item->branch);
- item = item->next;
- }
-}
-
-static void buildFlatList(newtComponent co) {
- struct CheckboxTree * ct = co->data;
-
- if (ct->flatList) free(ct->flatList);
- ct->flatCount = countItems(ct->itemlist, COUNT_EXPOSED);
-
- ct->flatList = malloc(sizeof(*ct->flatList) * (ct->flatCount+1));
- ct->flatCount = 0;
- doBuildFlatList(ct, ct->itemlist);
- ct->flatList[ct->flatCount] = NULL;
-}
-
-int newtCheckboxTreeAddItem(newtComponent co,
- const char * text, const void * data,
- int flags, int index, ...) {
- va_list argList;
- int numIndexes;
- int * indexes;
- int i;
-
- va_start(argList, index);
- numIndexes = 0;
- i = index;
- while (i != NEWT_ARG_LAST) {
- numIndexes++;
- i = va_arg(argList, int);
- }
-
- va_end(argList);
-
- indexes = alloca(sizeof(*indexes) * (numIndexes + 1));
- va_start(argList, index);
- numIndexes = 0;
- i = index;
- va_start(argList, index);
- while (i != NEWT_ARG_LAST) {
- indexes[numIndexes++] = i;
- i = va_arg(argList, int);
- }
- va_end(argList);
-
- indexes[numIndexes++] = NEWT_ARG_LAST;
-
- return newtCheckboxTreeAddArray(co, text, data, flags, indexes);
-}
-
-static int doFindItemPath(struct items * items, void * data, int * path,
- int * len) {
- int where = 0;
-
- while (items) {
- if (items->data == data) {
- if (path) path[items->depth] = where;
- if (len) *len = items->depth + 1;
- return 1;
- }
-
- if (items->branch && doFindItemPath(items->branch, data, path, len)) {
- if (path) path[items->depth] = where;
- return 1;
- }
-
- items = items->next;
- where++;
- }
-
- return 0;
-}
-
-int * newtCheckboxTreeFindItem(newtComponent co, void * data) {
- int len;
- int * path;
- struct CheckboxTree * ct = co->data;
-
- if (!doFindItemPath(ct->itemlist, data, NULL, &len)) return NULL;
-
- path = malloc(sizeof(*path) * (len + 1));
- doFindItemPath(ct->itemlist, data, path, NULL);
- path[len] = NEWT_ARG_LAST;
-
- return path;
-}
-
-int newtCheckboxTreeAddArray(newtComponent co,
- const char * text, const void * data,
- int flags, int * indexes) {
- struct items * curList, * newNode, * item = NULL;
- struct items ** listPtr = NULL;
- int i, index, numIndexes;
- struct CheckboxTree * ct = co->data;
-
- numIndexes = 0;
- while (indexes[numIndexes] != NEWT_ARG_LAST) numIndexes++;
-
- if (!ct->itemlist) {
- if (numIndexes > 1) return -1;
-
- ct->itemlist = malloc(sizeof(*ct->itemlist));
- item = ct->itemlist;
- item->prev = NULL;
- item->next = NULL;
- } else {
- curList = ct->itemlist;
- listPtr = &ct->itemlist;
-
- i = 0;
- index = indexes[i];
- while (i < numIndexes) {
- item = curList;
-
- if (index == NEWT_ARG_APPEND) {
- item = NULL;
- } else {
- while (index && item)
- item = item->next, index--;
- }
-
- i++;
- if (i < numIndexes) {
- curList = item->branch;
- listPtr = &item->branch;
- if (!curList && (i + 1 != numIndexes)) return -1;
-
- index = indexes[i];
- }
- }
-
- if (!curList) { /* create a new branch */
- item = malloc(sizeof(*curList->prev));
- item->next = item->prev = NULL;
- *listPtr = item;
- } else if (!item) { /* append to end */
- item = curList;
- while (item->next) item = item->next;
- item->next = malloc(sizeof(*curList->prev));
- item->next->prev = item;
- item = item->next;
- item->next = NULL;
- } else {
- newNode = malloc(sizeof(*newNode));
- newNode->prev = item->prev;
- newNode->next = item;
-
- if (item->prev) item->prev->next = newNode;
- item->prev = newNode;
- item = newNode;
- if (!item->prev) *listPtr = item;
- }
- }
-
- item->text = strdup(text);
- item->data = data;
- if (flags & NEWT_FLAG_SELECTED) {
- item->selected = 1;
- } else {
- item->selected = 0;
- }
- item->flags = flags;
- item->branch = NULL;
- item->depth = numIndexes - 1;
-
- i = 4 + (3 * item->depth);
-
- if ((strlen(text) + i + ct->pad) > (size_t)co->width) {
- co->width = strlen(text) + i + ct->pad;
- }
-
- return 0;
-}
-
-static struct items * findItem(struct items * items, const void * data) {
- struct items * i;
-
- while (items) {
- if (items->data == data) return items;
- if (items->branch) {
- i = findItem(items->branch, data);
- if (i) return i;
- }
-
- items = items->next;
- }
-
- return NULL;
-}
-
-static void listSelected(struct items * items, int * num, const void ** list, int seqindex) {
- while (items) {
- if ((seqindex ? items->selected==seqindex : items->selected) && !items->branch)
- list[(*num)++] = (void *) items->data;
- if (items->branch)
- listSelected(items->branch, num, list, seqindex);
- items = items->next;
- }
-}
-
-const void ** newtCheckboxTreeGetSelection(newtComponent co, int *numitems)
-{
- return newtCheckboxTreeGetMultiSelection(co, numitems, 0);
-}
-
-const void ** newtCheckboxTreeGetMultiSelection(newtComponent co, int *numitems, char seqnum)
-{
- struct CheckboxTree * ct;
- const void **retval;
- int seqindex=0;
-
- if(!co || !numitems) return NULL;
-
- ct = co->data;
-
- if (seqnum) {
- while( ct->seq[seqindex] && ( ct->seq[seqindex] != seqnum )) seqindex++;
- } else {
- seqindex = 0;
- }
-
- *numitems = countItems(ct->itemlist, (seqindex ? seqindex : COUNT_SELECTED));
- if (!*numitems) return NULL;
-
- retval = malloc(*numitems * sizeof(void *));
- *numitems = 0;
- listSelected(ct->itemlist, numitems, retval, seqindex);
-
- return retval;
-}
-
-newtComponent newtCheckboxTree(int left, int top, int height, int flags) {
- return newtCheckboxTreeMulti(left, top, height, NULL, flags);
-}
-
-newtComponent newtCheckboxTreeMulti(int left, int top, int height, char *seq, int flags) {
- newtComponent co;
- struct CheckboxTree * ct;
-
- co = malloc(sizeof(*co));
- ct = malloc(sizeof(struct CheckboxTree));
- co->callback = NULL;
- co->data = ct;
- co->ops = &ctOps;
- co->takesFocus = 1;
- co->height = height;
- co->width = 0;
- co->isMapped = 0;
- ct->itemlist = NULL;
- ct->firstItem = NULL;
- ct->currItem = NULL;
- ct->flatList = NULL;
- if (seq)
- ct->seq = strdup(seq);
- else
- ct->seq = strdup(" *");
- if (flags & NEWT_FLAG_SCROLL) {
- ct->sb = newtVerticalScrollbar(left, top, height,
- COLORSET_LISTBOX, COLORSET_ACTLISTBOX);
- ct->pad = 2;
- } else {
- ct->sb = NULL;
- ct->pad = 0;
- }
-
- return co;
-}
-
-static void ctMapped(newtComponent co, int isMapped) {
- struct CheckboxTree * ct = co->data;
-
- co->isMapped = isMapped;
- if (ct->sb)
- ct->sb->ops->mapped(ct->sb, isMapped);
-}
-
-static void ctPlace(newtComponent co, int newLeft, int newTop) {
- struct CheckboxTree * ct = co->data;
-
- co->top = newTop;
- co->left = newLeft;
-
- if (ct->sb)
- ct->sb->ops->place(ct->sb, co->left + co->width - 1, co->top);
-}
-
-int ctSetItem(newtComponent co, struct items *item, enum newtFlagsSense sense)
-{
- struct CheckboxTree * ct = co->data;
- struct items * currItem;
- struct items * firstItem;
-
- if (!item)
- return 1;
-
- switch(sense) {
- case NEWT_FLAGS_RESET:
- item->selected = 0;
- break;
- case NEWT_FLAGS_SET:
- item->selected = 1;
- break;
- case NEWT_FLAGS_TOGGLE:
- if (item->branch)
- item->selected = !item->selected;
- else {
- item->selected++;
- if (item->selected==strlen(ct->seq))
- item->selected = 0;
- }
- break;
- }
-
- if (item->branch) {
- currItem = *ct->currItem;
- firstItem = *ct->firstItem;
-
- buildFlatList(co);
-
- ct->currItem = ct->flatList;
- while (*ct->currItem != currItem) ct->currItem++;
-
- ct->firstItem = ct->flatList;
- if (ct->flatCount > co->height) {
- struct items ** last = ct->flatList + ct->flatCount - co->height;
- while (*ct->firstItem != firstItem && ct->firstItem != last)
- ct->firstItem++;
- }
- }
-
- return 0;
-}
-
-static void ctSetItems(struct items *item, int selected)
-{
- for (; item; item = item->next) {
- if (!item->branch)
- item->selected = selected;
- else
- ctSetItems(item->branch, selected);
- }
-}
-
-static void ctDraw(newtComponent co) {
- struct CheckboxTree * ct = co->data;
- struct items ** item;
- int i, j;
- char * spaces = NULL;
- int currRow = -1;
-
- if (!co->isMapped) return ;
-
- if (!ct->firstItem) {
- buildFlatList(co);
- ct->firstItem = ct->currItem = ct->flatList;
- }
-
- item = ct->firstItem;
-
- i = 0;
- while (*item && i < co->height) {
- newtGotorc(co->top + i, co->left);
- if (*item == *ct->currItem) {
- SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX);
- currRow = co->top + i;
- } else
- SLsmg_set_color(NEWT_COLORSET_LISTBOX);
-
- for (j = 0; j < (*item)->depth; j++)
- SLsmg_write_string(" ");
-
- if ((*item)->branch) {
- if ((*item)->selected)
- SLsmg_write_string("<-> ");
- else
- SLsmg_write_string("<+> ");
- } else {
- char tmp[5];
- snprintf(tmp,5,"[%c] ",ct->seq[(*item)->selected]);
- SLsmg_write_string(tmp);
- }
-
- SLsmg_write_nstring((*item)->text, co->width - 4 -
- (3 * (*item)->depth));
- item++;
- i++;
- }
-
- /* There could be empty lines left (i.e. if the user closes an expanded
- list which is the last thing in the tree, and whose elements are
- displayed at the bottom of the screen */
- if (i < co->height) {
- spaces = alloca(co->width);
- memset(spaces, ' ', co->width);
- SLsmg_set_color(NEWT_COLORSET_LISTBOX);
- }
- while (i < co->height) {
- newtGotorc(co->top + i, co->left);
- SLsmg_write_nstring(spaces, co->width);
- i++;
- }
-
- if(ct->sb) {
- newtScrollbarSet(ct->sb, ct->currItem - ct->flatList,
- ct->flatCount - 1);
- ct->sb->ops->draw(ct->sb);
- }
-
- newtGotorc(currRow, co->left + 1);
-}
-
-static void ctDestroy(newtComponent co) {
- struct CheckboxTree * ct = co->data;
- struct items * item, * nextitem;
-
- nextitem = item = ct->itemlist;
-
- while (item != NULL) {
- nextitem = item->next;
- free(item->text);
- free(item);
- item = nextitem;
- }
-
- free(ct->seq);
- free(ct);
- free(co);
-}
-
-struct eventResult ctEvent(newtComponent co, struct event ev) {
- struct CheckboxTree * ct = co->data;
- struct eventResult er;
- struct items ** listEnd, ** lastItem;
- int key, selnum = 1;
-
- er.result = ER_IGNORED;
-
- if(ev.when == EV_EARLY || ev.when == EV_LATE) {
- return er;
- }
-
- switch(ev.event) {
- case EV_KEYPRESS:
- key = ev.u.key;
- if (key == (char) key && key != ' ') {
- for (selnum = 0; ct->seq[selnum]; selnum++)
- if (key == ct->seq[selnum])
- break;
- if (!ct->seq[selnum])
- switch (key) {
- case '-': selnum = 0; break;
- case '+':
- case '*': selnum = 1; break;
- }
- if (ct->seq[selnum])
- key = '*';
- }
- switch(key) {
- case ' ':
- case NEWT_KEY_ENTER:
- ctSetItem(co, *ct->currItem, NEWT_FLAGS_TOGGLE);
- er.result = ER_SWALLOWED;
- if (!(*ct->currItem)->branch || (*ct->currItem)->selected)
- key = NEWT_KEY_DOWN;
- else
- key = '*';
- break;
- case '*':
- if ((*ct->currItem)->branch) {
- ctSetItems((*ct->currItem)->branch, selnum);
- if (!(*ct->currItem)->selected)
- key = NEWT_KEY_DOWN;
- } else {
- (*ct->currItem)->selected = selnum;
- key = NEWT_KEY_DOWN;
- }
- er.result = ER_SWALLOWED;
- break;
- }
- switch (key) {
- case '*':
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- return er;
- case NEWT_KEY_HOME:
- ct->currItem = ct->flatList;
- ct->firstItem = ct->flatList;
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- return er;
- case NEWT_KEY_END:
- ct->currItem = ct->flatList + ct->flatCount - 1;
- if (ct->flatCount <= co->height)
- ct->firstItem = ct->flatList;
- else
- ct->firstItem = ct->flatList + ct->flatCount - co->height;
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- return er;
- case NEWT_KEY_DOWN:
- if (ev.u.key != NEWT_KEY_DOWN) {
- if(co->callback) co->callback(co, co->callbackData);
- if (strlen(ct->seq) != 2) {
- ctDraw(co);
- return er;
- }
- }
- if ((ct->currItem - ct->flatList + 1) < ct->flatCount) {
- ct->currItem++;
-
- if (ct->currItem - ct->firstItem >= co->height)
- ct->firstItem++;
-
- ctDraw(co);
- } else if (ev.u.key != NEWT_KEY_DOWN)
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- return er;
- case NEWT_KEY_UP:
- if (ct->currItem != ct->flatList) {
- ct->currItem--;
-
- if (ct->currItem < ct->firstItem)
- ct->firstItem = ct->currItem;
-
- ctDraw(co);
- }
- er.result = ER_SWALLOWED;
- if(co->callback) co->callback(co, co->callbackData);
- return er;
- case NEWT_KEY_PGUP:
- if (ct->firstItem - co->height < ct->flatList) {
- ct->firstItem = ct->currItem = ct->flatList;
- } else {
- ct->currItem -= co->height;
- ct->firstItem -= co->height;
- }
-
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- return er;
- case NEWT_KEY_PGDN:
- listEnd = ct->flatList + ct->flatCount - 1;
- lastItem = ct->firstItem + co->height - 1;
-
- if (lastItem + co->height > listEnd) {
- ct->firstItem = listEnd - co->height + 1;
- ct->currItem = listEnd;
- } else {
- ct->currItem += co->height;
- ct->firstItem += co->height;
- }
-
- ctDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- return er;
- }
- break;
-
- case EV_FOCUS:
- ctDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_UNFOCUS:
- ctDraw(co);
- er.result = ER_SWALLOWED;
- break;
- default:
- break;
- }
-
- return er;
-}
-
-const void * newtCheckboxTreeGetCurrent(newtComponent co) {
- struct CheckboxTree * ct = co->data;
-
- if (!ct->currItem) return NULL;
- return (*ct->currItem)->data;
-}
-
-void newtCheckboxTreeSetEntry(newtComponent co, const void * data, const char * text)
-{
- struct CheckboxTree * ct;
- struct items * item;
- int i;
-
- if (!co) return;
- ct = co->data;
- item = findItem(ct->itemlist, data);
- if (!item) return;
-
- free(item->text);
- item->text = strdup(text);
-
- i = 4 + (3 * item->depth);
-
- if ((strlen(text) + i + ct->pad) > (size_t)co->width) {
- co->width = strlen(text) + i + ct->pad;
- }
-
- ctDraw(co);
-}
-
-char newtCheckboxTreeGetEntryValue(newtComponent co, const void * data)
-{
- struct CheckboxTree * ct;
- struct items * item;
-
- if (!co) return -1;
- ct = co->data;
- item = findItem(ct->itemlist, data);
- if (!item) return -1;
- if (item->branch)
- return item->selected ? NEWT_CHECKBOXTREE_EXPANDED : NEWT_CHECKBOXTREE_COLLAPSED;
- else
- return ct->seq[item->selected];
-}
-
-void newtCheckboxTreeSetEntryValue(newtComponent co, const void * data, char value)
-{
- struct CheckboxTree * ct;
- struct items * item;
- int i;
-
- if (!co) return;
- ct = co->data;
- item = findItem(ct->itemlist, data);
- if (!item || item->branch) return;
-
- for(i = 0; ct->seq[i]; i++)
- if (value == ct->seq[i])
- break;
-
- if (!ct->seq[i]) return;
- item->selected = i;
-
- ctDraw(co);
-}
-
diff --git a/mdk-stage1/newt/entry.c b/mdk-stage1/newt/entry.c
deleted file mode 100644
index 0ee449cf9..000000000
--- a/mdk-stage1/newt/entry.c
+++ /dev/null
@@ -1,378 +0,0 @@
-#include <ctype.h>
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct entry {
- int flags;
- char * buf;
- char ** resultPtr;
- int bufAlloced;
- int bufUsed; /* amount of the buffer that's been used */
- int cursorPosition; /* cursor *in the string* on on screen */
- int firstChar; /* first character position being shown */
- newtEntryFilter filter;
- void * filterData;
-};
-
-static void entryDraw(newtComponent co);
-static void entryDestroy(newtComponent co);
-static struct eventResult entryEvent(newtComponent co,
- struct event ev);
-
-static struct eventResult entryHandleKey(newtComponent co, int key);
-
-static struct componentOps entryOps = {
- entryDraw,
- entryEvent,
- entryDestroy,
- newtDefaultPlaceHandler,
- newtDefaultMappedHandler,
-} ;
-
-void newtEntrySet(newtComponent co, const char * value, int cursorAtEnd) {
- struct entry * en = co->data;
-
- if ((strlen(value) + 1) > (unsigned int)en->bufAlloced) {
- free(en->buf);
- en->bufAlloced = strlen(value) + 1;
- en->buf = malloc(en->bufAlloced);
- if (en->resultPtr) *en->resultPtr = en->buf;
- }
- memset(en->buf, 0, en->bufAlloced); /* clear the buffer */
- strcpy(en->buf, value);
- en->bufUsed = strlen(value);
- en->firstChar = 0;
- if (cursorAtEnd)
- en->cursorPosition = en->bufUsed;
- else
- en->cursorPosition = 0;
-
- entryDraw(co);
-} ;
-
-newtComponent newtEntry(int left, int top, const char * initialValue, int width,
- char ** resultPtr, int flags) {
- newtComponent co;
- struct entry * en;
-
- co = malloc(sizeof(*co));
- en = malloc(sizeof(struct entry));
- co->data = en;
-
- co->top = top;
- co->left = left;
- co->height = 1;
- co->width = width;
- co->isMapped = 0;
- co->callback = NULL;
-
- co->ops = &entryOps;
-
- en->flags = flags;
- en->cursorPosition = 0;
- en->firstChar = 0;
- en->bufUsed = 0;
- en->bufAlloced = width + 1;
- en->filter = NULL;
-
- if (!(en->flags & NEWT_FLAG_DISABLED))
- co->takesFocus = 1;
- else
- co->takesFocus = 0;
-
- if (initialValue && strlen(initialValue) > (unsigned int)width) {
- en->bufAlloced = strlen(initialValue) + 1;
- }
- en->buf = malloc(en->bufAlloced);
- en->resultPtr = resultPtr;
- if (en->resultPtr) *en->resultPtr = en->buf;
-
- memset(en->buf, 0, en->bufAlloced);
- if (initialValue) {
- strcpy(en->buf, initialValue);
- en->bufUsed = strlen(initialValue);
- en->cursorPosition = en->bufUsed;
- } else {
- *en->buf = '\0';
- en->bufUsed = 0;
- en->cursorPosition = 0;
- }
-
- return co;
-}
-
-static void entryDraw(newtComponent co) {
- struct entry * en = co->data;
- int i;
- char * chptr;
- int len;
-
- if (!co->isMapped) return;
-
- if (en->flags & NEWT_FLAG_DISABLED)
- SLsmg_set_color(NEWT_COLORSET_DISENTRY);
- else
- SLsmg_set_color(NEWT_COLORSET_ENTRY);
-
- if (en->flags & NEWT_FLAG_HIDDEN) {
- newtGotorc(co->top, co->left);
- for (i = 0; i < co->width; i++)
- SLsmg_write_char('_');
- newtGotorc(co->top, co->left);
-
- return;
- }
-
- newtGotorc(co->top, co->left);
-
- if (en->cursorPosition < en->firstChar) {
- /* scroll to the left */
- en->firstChar = en->cursorPosition;
- } else if ((en->firstChar + co->width) <= en->cursorPosition) {
- /* scroll to the right */
- en->firstChar = en->cursorPosition - co->width + 1;
- }
-
- chptr = en->buf + en->firstChar;
-
- if (en->flags & NEWT_FLAG_PASSWORD) {
- char *tmpptr, *p;
-
- tmpptr = alloca(strlen(chptr+2));
- strcpy(tmpptr, chptr);
- for (p = tmpptr; *p; p++)
- *p = '*';
- chptr = tmpptr;
- }
-
- len = strlen(chptr);
-
- if (len <= co->width) {
- i = len;
- SLsmg_write_string(chptr);
- while (i < co->width) {
- SLsmg_write_char('_');
- i++;
- }
- } else {
- SLsmg_write_nstring(chptr, co->width);
- }
-
- if (en->flags & NEWT_FLAG_HIDDEN)
- newtGotorc(co->top, co->left);
- else
- newtGotorc(co->top, co->left + (en->cursorPosition - en->firstChar));
-}
-
-void newtEntrySetFlags(newtComponent co, int flags, enum newtFlagsSense sense) {
- struct entry * en = co->data;
- int row, col;
-
- en->flags = newtSetFlags(en->flags, flags, sense);
-
- if (!(en->flags & NEWT_FLAG_DISABLED))
- co->takesFocus = 1;
- else
- co->takesFocus = 0;
-
- newtGetrc(&row, &col);
- entryDraw(co);
- newtGotorc(row, col);
-}
-
-static void entryDestroy(newtComponent co) {
- struct entry * en = co->data;
-
- free(en->buf);
- free(en);
- free(co);
-}
-
-static struct eventResult entryEvent(newtComponent co,
- struct event ev) {
- struct entry * en = co->data;
- struct eventResult er;
- int ch;
- er.result = ER_IGNORED;
- er.u.focus = NULL;
-
- if (ev.when == EV_NORMAL) {
- switch (ev.event) {
- case EV_FOCUS:
- newtCursorOn();
- if (en->flags & NEWT_FLAG_HIDDEN)
- newtGotorc(co->top, co->left);
- else
- newtGotorc(co->top, co->left +
- (en->cursorPosition - en->firstChar));
- er.result = ER_SWALLOWED;
- break;
-
- case EV_UNFOCUS:
- newtCursorOff();
- newtGotorc(0, 0);
- er.result = ER_SWALLOWED;
- if (co->callback)
- co->callback(co, co->callbackData);
- break;
-
- case EV_KEYPRESS:
- ch = ev.u.key;
- if (en->filter)
- ch = en->filter(co, en->filterData, ch, en->cursorPosition);
- if (ch) er = entryHandleKey(co, ch);
- break;
-
- case EV_MOUSE:
- if ((ev.u.mouse.type == MOUSE_BUTTON_DOWN) &&
- (en->flags ^ NEWT_FLAG_HIDDEN)) {
- if (strlen(en->buf) >= (size_t) (ev.u.mouse.x - co->left)) {
- en->cursorPosition = ev.u.mouse.x - co->left;
- newtGotorc(co->top,
- co->left +(en->cursorPosition - en->firstChar));
- } else {
- en->cursorPosition = strlen(en->buf);
- newtGotorc(co->top,
- co->left +(en->cursorPosition - en->firstChar));
- }
- }
- break;
- }
- } else
- er.result = ER_IGNORED;
-
- return er;
-}
-
-static struct eventResult entryHandleKey(newtComponent co, int key) {
- struct entry * en = co->data;
- struct eventResult er;
- char * chptr, * insPoint;
-
- er.result = ER_SWALLOWED;
- switch (key) {
- case '\r': /* Return */
- if (en->flags & NEWT_FLAG_RETURNEXIT) {
- er.result = ER_EXITFORM;
- } else {
- er.result = ER_NEXTCOMP;
- }
- break;
-
- case '\001': /* ^A */
- case NEWT_KEY_HOME:
- en->cursorPosition = 0;
- break;
-
- case '\005': /* ^E */
- case NEWT_KEY_END:
- en->cursorPosition = en->bufUsed;
- break;
-
- case '\013': /* ^K */
- en->bufUsed = en->cursorPosition;
- memset(en->buf + en->bufUsed, 0, en->bufAlloced - en->bufUsed);
- break;
-
- case '\002': /* ^B */
- case NEWT_KEY_LEFT:
- if (en->cursorPosition)
- en->cursorPosition--;
- break;
-
- case '\004':
- case NEWT_KEY_DELETE:
- chptr = en->buf + en->cursorPosition;
- if (*chptr) {
- chptr++;
- while (*chptr) {
- *(chptr - 1) = *chptr;
- chptr++;
- }
- *(chptr - 1) = '\0';
- en->bufUsed--;
- }
- break;
-
- case NEWT_KEY_BKSPC:
- if (en->cursorPosition) {
- /* if this isn't true, there's nothing to erase */
- chptr = en->buf + en->cursorPosition;
- en->bufUsed--;
- en->cursorPosition--;
- while (*chptr) {
- *(chptr - 1) = *chptr;
- chptr++;
- }
- *(chptr - 1) = '\0';
- }
- break;
-
- case '\006': /* ^B */
- case NEWT_KEY_RIGHT:
- if (en->cursorPosition < en->bufUsed)
- en->cursorPosition++;
- break;
-
- default:
- if ((key >= 0x20 && key <= 0x7e) || (key >= 0xa0 && key <= 0xff)) {
- if (!(en->flags & NEWT_FLAG_SCROLL) && en->bufUsed >= co->width) {
- SLtt_beep();
- break;
- }
-
- if ((en->bufUsed + 1) == en->bufAlloced) {
- en->bufAlloced += 20;
- en->buf = realloc(en->buf, en->bufAlloced);
- if (en->resultPtr) *en->resultPtr = en->buf;
- memset(en->buf + en->bufUsed + 1, 0, 20);
- }
-
- if (en->cursorPosition == en->bufUsed) {
- en->bufUsed++;
- } else {
- /* insert the new character */
-
- /* chptr is the last character in the string */
- chptr = (en->buf + en->bufUsed) - 1;
- if ((en->bufUsed + 1) == en->bufAlloced) {
- /* this string fills the buffer, so clip it */
- chptr--;
- } else
- en->bufUsed++;
-
- insPoint = en->buf + en->cursorPosition;
-
- while (chptr >= insPoint) {
- *(chptr + 1) = *chptr;
- chptr--;
- }
-
- }
-
- en->buf[en->cursorPosition++] = key;
- } else {
- er.result = ER_IGNORED;
- }
- }
-
- entryDraw(co);
-
- return er;
-}
-
-char * newtEntryGetValue(newtComponent co) {
- struct entry * en = co->data;
-
- return en->buf;
-}
-
-void newtEntrySetFilter(newtComponent co, newtEntryFilter filter, void * data) {
- struct entry * en = co->data;
- en->filter = filter;
- en->filterData = data;
-}
diff --git a/mdk-stage1/newt/form.c b/mdk-stage1/newt/form.c
deleted file mode 100644
index ad7520e95..000000000
--- a/mdk-stage1/newt/form.c
+++ /dev/null
@@ -1,713 +0,0 @@
-#include <unistd.h>
-#include <slang.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-
-/****************************************************************************
- These forms handle vertical scrolling of components with a height of 1
-
- Horizontal scrolling won't work, and scrolling large widgets will fail
- miserably. It shouldn't be too hard to fix either of those if anyone
- cares to. I only use scrolling for listboxes and text boxes though so
- I didn't bother.
-*****************************************************************************/
-
-struct element {
- int top, left; /* Actual, not virtual. These are translated */
- newtComponent co; /* into actual through vertOffset */
-};
-
-struct fdInfo {
- int fd;
- int flags;
-};
-
-struct form {
- int numCompsAlloced;
- struct element * elements;
- int numComps;
- int currComp;
- int fixedHeight;
- int flags;
- int vertOffset;
- newtComponent vertBar, exitComp;
- const char * help;
- int numRows;
- int * hotKeys;
- int numHotKeys;
- int background;
- int beenSet;
- int numFds;
- struct fdInfo * fds;
- int maxFd;
- int timer; /* in milliseconds */
- struct timeval lastTimeout;
- void * helpTag;
- newtCallback helpCb;
-};
-
-static void gotoComponent(struct form * form, int newComp);
-static struct eventResult formEvent(newtComponent co, struct event ev);
-static struct eventResult sendEvent(newtComponent comp, struct event ev);
-static void formPlace(newtComponent co, int left, int top);
-
-/* Global, ick */
-static newtCallback helpCallback;
-
-/* this isn't static as grid.c tests against it to find forms */
-struct componentOps formOps = {
- newtDrawForm,
- formEvent,
- newtFormDestroy,
- formPlace,
- newtDefaultMappedHandler,
-} ;
-
-static inline int componentFits(newtComponent co, int compNum) {
- struct form * form = co->data;
- struct element * el = form->elements + compNum;
-
- if ((co->top + form->vertOffset) > el->top) return 0;
- if ((co->top + form->vertOffset + co->height) <
- (el->top + el->co->height)) return 0;
-
- return 1;
-}
-
-newtComponent newtForm(newtComponent vertBar, void * help, int flags) {
- newtComponent co;
- struct form * form;
-
- co = malloc(sizeof(*co));
- form = malloc(sizeof(*form));
- co->data = form;
- co->width = 0;
- co->height = 0;
- co->top = -1;
- co->left = -1;
- co->isMapped = 0;
-
- co->takesFocus = 0; /* we may have 0 components */
- co->ops = &formOps;
-
- form->help = help;
- form->flags = flags;
- form->numCompsAlloced = 5;
- form->numComps = 0;
- form->currComp = -1;
- form->vertOffset = 0;
- form->fixedHeight = 0;
- form->numRows = 0;
- form->numFds = 0;
- form->maxFd = 0;
- form->fds = NULL;
- form->beenSet = 0;
- form->elements = malloc(sizeof(*(form->elements)) * form->numCompsAlloced);
-
- form->background = COLORSET_WINDOW;
- form->hotKeys = malloc(sizeof(int));
- form->numHotKeys = 0;
- form->timer = 0;
- form->lastTimeout.tv_sec = form->lastTimeout.tv_usec = 0;
- if (!(form->flags & NEWT_FLAG_NOF12)) {
- newtFormAddHotKey(co, NEWT_KEY_F12);
- }
-
- if (vertBar)
- form->vertBar = vertBar;
- else
- form->vertBar = NULL;
-
- form->helpTag = help;
- form->helpCb = helpCallback;
-
- return co;
-}
-
-newtComponent newtFormGetCurrent(newtComponent co) {
- struct form * form = co->data;
-
- return form->elements[form->currComp].co;
-}
-
-void newtFormSetCurrent(newtComponent co, newtComponent subco) {
- struct form * form = co->data;
- int i, new;
-
- for (i = 0; i < form->numComps; i++) {
- if (form->elements[i].co == subco) break;
- }
-
- if (form->elements[i].co != subco) return;
- new = i;
-
- if (co->isMapped && !componentFits(co, new)) {
- gotoComponent(form, -1);
- form->vertOffset = form->elements[new].top - co->top - 1;
- if (form->vertOffset > (form->numRows - co->height))
- form->vertOffset = form->numRows - co->height;
- }
-
- gotoComponent(form, new);
-}
-
-void newtFormSetTimer(newtComponent co, int millisecs) {
- struct form * form = co->data;
-
- form->timer = millisecs;
- form->lastTimeout.tv_usec = 0;
- form->lastTimeout.tv_sec = 0;
-}
-
-void newtFormSetHeight(newtComponent co, int height) {
- struct form * form = co->data;
-
- form->fixedHeight = 1;
- co->height = height;
-}
-
-void newtFormSetWidth(newtComponent co, int width) {
- co->width = width;
-}
-
-void newtFormAddComponent(newtComponent co, newtComponent newco) {
- struct form * form = co->data;
-
- co->takesFocus = 1;
-
- if (form->numCompsAlloced == form->numComps) {
- form->numCompsAlloced += 5;
- form->elements = realloc(form->elements,
- sizeof(*(form->elements)) * form->numCompsAlloced);
- }
-
- /* we grab real values for these a bit later */
- form->elements[form->numComps].left = -2;
- form->elements[form->numComps].top = -2;
- form->elements[form->numComps].co = newco;
-
- if (newco->takesFocus && form->currComp == -1)
- form->currComp = form->numComps;
-
- form->numComps++;
-}
-
-void newtFormAddComponents(newtComponent co, ...) {
- va_list ap;
- newtComponent subco;
-
- va_start(ap, co);
-
- while ((subco = va_arg(ap, newtComponent)))
- newtFormAddComponent(co, subco);
-
- va_end(ap);
-}
-
-static void formPlace(newtComponent co, int left, int top) {
- struct form * form = co->data;
- int vertDelta, horizDelta;
- struct element * el;
- int i;
-
- newtFormSetSize(co);
-
- vertDelta = top - co->top;
- horizDelta = left - co->left;
- co->top = top;
- co->left = left;
-
- for (i = 0, el = form->elements; i < form->numComps; i++, el++) {
- el->co->top += vertDelta;
- el->top += vertDelta;
- el->co->left += horizDelta;
- el->left += horizDelta;
- }
-}
-
-void newtDrawForm(newtComponent co) {
- struct form * form = co->data;
- struct element * el;
- int i;
-
- newtFormSetSize(co);
-
- SLsmg_set_color(form->background);
- newtClearBox(co->left, co->top, co->width, co->height);
- for (i = 0, el = form->elements; i < form->numComps; i++, el++) {
- /* the scrollbar *always* fits somewhere */
- if (el->co == form->vertBar) {
- el->co->ops->mapped(el->co, 1);
- el->co->ops->draw(el->co);
- } else {
- /* only draw it if it'll fit on the screen vertically */
- if (componentFits(co, i)) {
- el->co->top = el->top - form->vertOffset;
- el->co->ops->mapped(el->co, 1);
- el->co->ops->draw(el->co);
- } else {
- el->co->ops->mapped(el->co, 0);
- }
- }
- }
-
- if (form->vertBar)
- newtScrollbarSet(form->vertBar, form->vertOffset,
- form->numRows - co->height);
-}
-
-static struct eventResult formEvent(newtComponent co, struct event ev) {
- struct form * form = co->data;
- newtComponent subco = form->elements[form->currComp].co;
- int new, wrap = 0;
- struct eventResult er;
- int dir = 0, page = 0;
- int i, num, found;
- struct element * el;
-
- er.result = ER_IGNORED;
- if (!form->numComps) return er;
-
- subco = form->elements[form->currComp].co;
-
- switch (ev.when) {
- case EV_EARLY:
- if (ev.event == EV_KEYPRESS) {
- if (ev.u.key == NEWT_KEY_TAB) {
- er.result = ER_SWALLOWED;
- dir = 1;
- wrap = 1;
- } else if (ev.u.key == NEWT_KEY_UNTAB) {
- er.result = ER_SWALLOWED;
- dir = -1;
- wrap = 1;
- }
- }
-
- if (form->numComps) {
- i = form->currComp;
- num = 0;
- while (er.result == ER_IGNORED && num != form->numComps ) {
- er = form->elements[i].co->ops->event(form->elements[i].co, ev);
-
- num++;
- i++;
- if (i == form->numComps) i = 0;
- }
- }
-
- break;
-
- case EV_NORMAL:
- if (ev.event == EV_MOUSE) {
- found = 0;
- for (i = 0, el = form->elements; i < form->numComps; i++, el++) {
- if ((el->co->top <= ev.u.mouse.y) &&
- (el->co->top + el->co->height > ev.u.mouse.y) &&
- (el->co->left <= ev.u.mouse.x) &&
- (el->co->left + el->co->width > ev.u.mouse.x)) {
- found = 1;
- if (el->co->takesFocus) {
- gotoComponent(form, i);
- subco = form->elements[form->currComp].co;
- }
- }
- /* If we did not find a co to send this event to, we
- should just swallow the event here. */
- }
- if (!found) {
- er.result = ER_SWALLOWED;
-
- return er;
- }
- }
- er = subco->ops->event(subco, ev);
- switch (er.result) {
- case ER_NEXTCOMP:
- er.result = ER_SWALLOWED;
- dir = 1;
- break;
-
- case ER_EXITFORM:
- form->exitComp = subco;
- break;
-
- default:
- break;
- }
- break;
-
- case EV_LATE:
- er = subco->ops->event(subco, ev);
-
- if (er.result == ER_IGNORED) {
- switch (ev.u.key) {
- case NEWT_KEY_UP:
- case NEWT_KEY_LEFT:
- case NEWT_KEY_BKSPC:
- er.result = ER_SWALLOWED;
- dir = -1;
- break;
-
- case NEWT_KEY_DOWN:
- case NEWT_KEY_RIGHT:
- er.result = ER_SWALLOWED;
- dir = 1;
- break;
-
- case NEWT_KEY_PGUP:
- er.result = ER_SWALLOWED;
- dir = -1;
- page = 1;
- break;
-
- case NEWT_KEY_PGDN:
- er.result = ER_SWALLOWED;
- dir = 1;
- page = 1;
- break;
- }
- }
- }
-
- if (dir) {
- new = form->currComp;
-
- if (page) {
- new += dir * co->height;
- if (new < 0)
- new = 0;
- else if (new >= form->numComps)
- new = (form->numComps - 1);
-
- while (!form->elements[new].co->takesFocus)
- new = new - dir;
- } else {
- do {
- new += dir;
-
- if (wrap) {
- if (new < 0)
- new = form->numComps - 1;
- else if (new >= form->numComps)
- new = 0;
- } else if (new < 0 || new >= form->numComps)
- return er;
- } while (!form->elements[new].co->takesFocus);
- }
-
- /* make sure this component is visible */
- if (!componentFits(co, new)) {
- gotoComponent(form, -1);
-
- if (dir < 0) {
- /* make the new component the first one */
- form->vertOffset = form->elements[new].top - co->top;
- } else {
- /* make the new component the last one */
- form->vertOffset = (form->elements[new].top +
- form->elements[new].co->height) -
- (co->top + co->height);
- }
-
- if (form->vertOffset < 0) form->vertOffset = 0;
- if (form->vertOffset > (form->numRows - co->height))
- form->vertOffset = form->numRows - co->height;
-
- newtDrawForm(co);
- }
-
- gotoComponent(form, new);
- er.result = ER_SWALLOWED;
- }
-
- return er;
-}
-
-/* this also destroys all of the components on the form */
-void newtFormDestroy(newtComponent co) {
- newtComponent subco;
- struct form * form = co->data;
- int i;
-
- /* first, destroy all of the components */
- for (i = 0; i < form->numComps; i++) {
- subco = form->elements[i].co;
- if (subco->ops->destroy) {
- subco->ops->destroy(subco);
- } else {
- if (subco->data) free(subco->data);
- free(subco);
- }
- }
-
- if (form->hotKeys) free(form->hotKeys);
-
- free(form->elements);
- free(form);
- free(co);
-}
-
-newtComponent newtRunForm(newtComponent co) {
- struct newtExitStruct es;
-
- newtFormRun(co, &es);
- if (es.reason == NEWT_EXIT_HOTKEY) {
- if (es.u.key == NEWT_KEY_F12) {
- es.reason = NEWT_EXIT_COMPONENT;
- es.u.co = co;
- } else {
- return NULL;
- }
- }
-
- return es.u.co;
-}
-
-void newtFormAddHotKey(newtComponent co, int key) {
- struct form * form = co->data;
-
- form->numHotKeys++;
- form->hotKeys = realloc(form->hotKeys, sizeof(int) * form->numHotKeys);
- form->hotKeys[form->numHotKeys - 1] = key;
-}
-
-void newtFormSetSize(newtComponent co) {
- struct form * form = co->data;
- int delta, i;
- struct element * el;
-
- if (form->beenSet) return;
-
- form->beenSet = 1;
-
- if (!form->numComps) return;
-
- co->width = 0;
- if (!form->fixedHeight) co->height = 0;
-
- co->top = form->elements[0].co->top;
- co->left = form->elements[0].co->left;
- for (i = 0, el = form->elements; i < form->numComps; i++, el++) {
- if (el->co->ops == &formOps)
- newtFormSetSize(el->co);
-
- el->left = el->co->left;
- el->top = el->co->top;
-
- if (co->left > el->co->left) {
- delta = co->left - el->co->left;
- co->left -= delta;
- co->width += delta;
- }
-
- if (co->top > el->co->top) {
- delta = co->top - el->co->top;
- co->top -= delta;
- if (!form->fixedHeight)
- co->height += delta;
- }
-
- if ((co->left + co->width) < (el->co->left + el->co->width))
- co->width = (el->co->left + el->co->width) - co->left;
-
- if (!form->fixedHeight) {
- if ((co->top + co->height) < (el->co->top + el->co->height))
- co->height = (el->co->top + el->co->height) - co->top;
- }
-
- if ((el->co->top + el->co->height - co->top) > form->numRows) {
- form->numRows = el->co->top + el->co->height - co->top;
- }
- }
-}
-
-void newtFormRun(newtComponent co, struct newtExitStruct * es) {
- struct form * form = co->data;
- struct event ev;
- struct eventResult er;
- int key, i, max;
- int done = 0;
- fd_set readSet, writeSet;
- struct timeval nextTimeout, now, timeout;
-
- newtFormSetSize(co);
- /* draw all of the components */
- newtDrawForm(co);
-
- if (form->currComp == -1) {
- gotoComponent(form, 0);
- } else
- gotoComponent(form, form->currComp);
-
- while (!done) {
- newtRefresh();
-
- FD_ZERO(&readSet);
- FD_ZERO(&writeSet);
- FD_SET(0, &readSet);
- max = form->maxFd;
-
- for (i = 0; i < form->numFds; i++) {
- if (form->fds[i].flags & NEWT_FD_READ)
- FD_SET(form->fds[i].fd, &readSet);
- if (form->fds[i].flags & NEWT_FD_WRITE)
- FD_SET(form->fds[i].fd, &writeSet);
- }
-
- if (form->timer) {
- /* Calculate when we next need to return with a timeout. Do
- this inside the loop in case a callback resets the timer. */
- if (!form->lastTimeout.tv_sec && !form->lastTimeout.tv_usec)
- gettimeofday(&form->lastTimeout, NULL);
-
- nextTimeout.tv_sec = form->lastTimeout.tv_sec +
- (form->timer / 1000);
- nextTimeout.tv_usec = form->lastTimeout.tv_usec +
- (form->timer % 1000) * 1000;
-
- gettimeofday(&now, 0);
-
- if (now.tv_sec > nextTimeout.tv_sec) {
- timeout.tv_sec = timeout.tv_usec = 0;
- } else if (now.tv_sec == nextTimeout.tv_sec) {
- timeout.tv_sec = 0;
- if (now.tv_usec > nextTimeout.tv_usec)
- timeout.tv_usec = 0;
- else
- timeout.tv_usec = nextTimeout.tv_usec - now.tv_usec;
- } else if (now.tv_sec < nextTimeout.tv_sec) {
- timeout.tv_sec = nextTimeout.tv_sec - now.tv_sec;
- if (now.tv_usec > nextTimeout.tv_usec)
- timeout.tv_sec--,
- timeout.tv_usec = nextTimeout.tv_usec + 1000000 -
- now.tv_usec;
- else
- timeout.tv_usec = nextTimeout.tv_usec - now.tv_usec;
- }
- } else {
- timeout.tv_sec = timeout.tv_usec = 0;
- }
-
- i = select(max + 1, &readSet, &writeSet, NULL,
- form->timer ? &timeout : NULL);
- if (i < 0) continue; /* ?? What should we do here? */
-
- if (i == 0) {
- done = 1;
- es->reason = NEWT_EXIT_TIMER;
- gettimeofday(&form->lastTimeout, NULL);
- } else
- {
- if (FD_ISSET(0, &readSet)) {
-
- key = newtGetKey();
-
- if (key == NEWT_KEY_RESIZE) {
- /* newtResizeScreen(1); */
- continue;
- }
-
- for (i = 0; i < form->numHotKeys; i++) {
- if (form->hotKeys[i] == key) {
- es->reason = NEWT_EXIT_HOTKEY;
- es->u.key = key;
- done = 1;
- break;
- }
- }
-
- if (key == NEWT_KEY_F1 && form->helpTag && form->helpCb)
- form->helpCb(co, form->helpTag);
-
- if (!done) {
- ev.event = EV_KEYPRESS;
- ev.u.key = key;
-
- er = sendEvent(co, ev);
-
- if (er.result == ER_EXITFORM) {
- done = 1;
- es->reason = NEWT_EXIT_COMPONENT;
- es->u.co = form->exitComp;
- }
- }
- } else {
- es->reason = NEWT_EXIT_FDREADY;
- done = 1;
- }
- }
- }
- newtRefresh();
-}
-
-static struct eventResult sendEvent(newtComponent co, struct event ev) {
- struct eventResult er;
-
- ev.when = EV_EARLY;
- er = co->ops->event(co, ev);
-
- if (er.result == ER_IGNORED) {
- ev.when = EV_NORMAL;
- er = co->ops->event(co, ev);
- }
-
- if (er.result == ER_IGNORED) {
- ev.when = EV_LATE;
- er = co->ops->event(co, ev);
- }
-
- return er;
-}
-
-static void gotoComponent(struct form * form, int newComp) {
- struct event ev;
-
- if (form->currComp != -1) {
- ev.event = EV_UNFOCUS;
- sendEvent(form->elements[form->currComp].co, ev);
- }
-
- form->currComp = newComp;
-
- if (form->currComp != -1) {
- ev.event = EV_FOCUS;
- ev.when = EV_NORMAL;
- sendEvent(form->elements[form->currComp].co, ev);
- }
-}
-
-void newtComponentAddCallback(newtComponent co, newtCallback f, void * data) {
- co->callback = f;
- co->callbackData = data;
-}
-
-void newtComponentTakesFocus(newtComponent co, int val) {
- co->takesFocus = val;
-}
-
-void newtFormSetBackground(newtComponent co, int color) {
- struct form * form = co->data;
-
- form->background = color;
-}
-
-void newtFormWatchFd(newtComponent co, int fd, int fdFlags) {
- struct form * form = co->data;
-
- form->fds = realloc(form->fds, (form->numFds + 1) * sizeof(*form->fds));
- form->fds[form->numFds].fd = fd;
- form->fds[form->numFds++].flags = fdFlags;
- if (form->maxFd < fd) form->maxFd = fd;
-}
-
-void newtSetHelpCallback(newtCallback cb) {
- helpCallback = cb;
-}
diff --git a/mdk-stage1/newt/grid.c b/mdk-stage1/newt/grid.c
deleted file mode 100644
index 37d2b2e74..000000000
--- a/mdk-stage1/newt/grid.c
+++ /dev/null
@@ -1,389 +0,0 @@
-#include <alloca.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct gridField {
- enum newtGridElement type;
- union {
- newtGrid grid;
- newtComponent co;
- } u;
- int padLeft, padTop, padRight, padBottom;
- int anchor;
- int flags;
-};
-
-struct grid_s {
- int rows, cols;
- int width, height; /* totals, -1 means unknown */
- struct gridField ** fields;
-};
-
-/* this is a bit of a hack */
-extern struct componentOps formOps[];
-
-newtGrid newtCreateGrid(int cols, int rows) {
- newtGrid grid;
-
- grid = malloc(sizeof(*grid));
- grid->rows = rows;
- grid->cols = cols;
-
- grid->fields = malloc(sizeof(*grid->fields) * cols);
- while (cols--) {
- grid->fields[cols] = malloc(sizeof(**(grid->fields)) * rows);
- memset(grid->fields[cols], 0, sizeof(**(grid->fields)) * rows);
- }
-
- grid->width = grid->height = -1;
-
- return grid;
-}
-
-void newtGridSetField(newtGrid grid, int col, int row,
- enum newtGridElement type, void * val, int padLeft,
- int padTop, int padRight, int padBottom, int anchor,
- int flags) {
- struct gridField * field = &grid->fields[col][row];
-
- if (field->type == NEWT_GRID_SUBGRID)
- newtGridFree(field->u.grid, 1);
-
- field->type = type;
- field->u.co = (void *) val;
-
- field->padLeft = padLeft;
- field->padRight = padRight;
- field->padTop = padTop;
- field->padBottom = padBottom;
- field->anchor = anchor;
- field->flags = flags;
-
- grid->width = grid->height = -1;
-}
-
-static void distSpace(int extra, int items, int * list) {
- int all, some, i;
-
- all = extra / items;
- some = extra % items;
- for (i = 0; i < items; i++) {
- list[i] += all;
- if (some) {
- list[i]++;
- some--;
- }
- }
-}
-
-static void shuffleGrid(newtGrid grid, int left, int top, int set) {
- struct gridField * field;
- int row, col;
- int i, j;
- int minWidth, minHeight;
- int * widths, * heights;
- int thisLeft, thisTop;
- int x, y, remx, remy;
-
- widths = alloca(sizeof(*widths) * grid->cols);
- memset(widths, 0, sizeof(*widths) * grid->cols);
- heights = alloca(sizeof(*heights) * grid->rows);
- memset(heights, 0, sizeof(*heights) * grid->rows);
-
- minWidth = 0;
- for (row = 0; row < grid->rows; row++) {
- i = 0;
- for (col = 0; col < grid->cols; col++) {
- field = &grid->fields[col][row];
- if (field->type == NEWT_GRID_SUBGRID) {
- /* we'll have to redo this later */
- if (field->u.grid->width == -1)
- shuffleGrid(field->u.grid, left, top, 0);
- j = field->u.grid->width;
- } else if (field->type == NEWT_GRID_COMPONENT) {
- if (field->u.co->ops == formOps)
- newtFormSetSize(field->u.co);
- j = field->u.co->width;
- } else
- j = 0;
-
- j += field->padLeft + field->padRight;
-
- if (j > widths[col]) widths[col] = j;
- i += widths[col];
- }
-
- if (i > minWidth) minWidth = i;
- }
-
- minHeight = 0;
- for (col = 0; col < grid->cols; col++) {
- i = 0;
- for (row = 0; row < grid->rows; row++) {
- field = &grid->fields[col][row];
- if (field->type == NEWT_GRID_SUBGRID) {
- /* we'll have to redo this later */
- if (field->u.grid->height == -1)
- shuffleGrid(field->u.grid, 0, 0, 0);
- j = field->u.grid->height;
- } else if (field->type == NEWT_GRID_COMPONENT){
- j = field->u.co->height;
- } else
- j = 0;
-
- j += field->padTop + field->padBottom;
-
- if (j > heights[row]) heights[row] = j;
- i += heights[row];
- }
-
- if (i > minHeight) minHeight = i;
- }
-
- /* this catches the -1 case */
- if (grid->width < minWidth) grid->width = minWidth; /* ack! */
- if (grid->height < minHeight) grid->height = minHeight; /* ditto! */
-
- if (!set) return;
-
- distSpace(grid->width - minWidth, grid->cols, widths);
- distSpace(grid->height - minHeight, grid->rows, heights);
-
- thisTop = top;
- for (row = 0; row < grid->rows; row++) {
- i = 0;
- thisLeft = left;
- for (col = 0; col < grid->cols; col++) {
- field = &grid->fields[col][row];
-
- if (field->type == NEWT_GRID_EMPTY) continue;
-
- x = thisLeft + field->padLeft;
- remx = widths[col] - field->padLeft - field->padRight;
- y = thisTop + field->padTop;
- remy = heights[row] - field->padTop - field->padBottom;
-
- if (field->type == NEWT_GRID_SUBGRID) {
- remx -= field->u.grid->width;
- remy -= field->u.grid->height;
- } else if (field->type == NEWT_GRID_COMPONENT) {
- remx -= field->u.co->width;
- remy -= field->u.co->height;
- }
-
- if (!(field->flags & NEWT_GRID_FLAG_GROWX)) {
- if (field->anchor & NEWT_ANCHOR_RIGHT)
- x += remx;
- else if (!(field->anchor & NEWT_ANCHOR_LEFT))
- x += (remx / 2);
- }
-
- if (!(field->flags & NEWT_GRID_FLAG_GROWY)) {
- if (field->anchor & NEWT_ANCHOR_BOTTOM)
- y += remx;
- else if (!(field->anchor & NEWT_ANCHOR_TOP))
- y += (remy / 2);
- }
-
- if (field->type == NEWT_GRID_SUBGRID) {
- if (field->flags & NEWT_GRID_FLAG_GROWX)
- field->u.grid->width = widths[col] - field->padLeft
- - field->padRight;
- if (field->flags & NEWT_GRID_FLAG_GROWY)
- field->u.grid->height = heights[col] - field->padTop
- - field->padBottom;
-
- shuffleGrid(field->u.grid, x, y, 1);
- } else if (field->type == NEWT_GRID_COMPONENT) {
- field->u.co->ops->place(field->u.co, x, y);
- }
-
- thisLeft += widths[col];
- }
-
- thisTop += heights[row];
- }
-}
-
-void newtGridPlace(newtGrid grid, int left, int top) {
- shuffleGrid(grid, left, top, 1);
-}
-
-void newtGridFree(newtGrid grid, int recurse) {
- int row, col;
-
- for (col = 0; col < grid->cols; col++) {
- if (recurse) {
- for (row = 0; row < grid->rows; row++) {
- if (grid->fields[col][row].type == NEWT_GRID_SUBGRID)
- newtGridFree(grid->fields[col][row].u.grid, 1);
- }
- }
-
- free(grid->fields[col]);
- }
-
- free(grid->fields);
- free(grid);
-}
-
-void newtGridGetSize(newtGrid grid, int * width, int * height) {
- if (grid->width == -1 || grid->height == -1) {
- grid->width = grid->height = -1;
- shuffleGrid(grid, 0, 0, 1);
- }
-
- *width = grid->width;
- *height = grid->height;
-}
-
-void newtGridWrappedWindow(newtGrid grid, char * title) {
- int width, height, offset = 0;
-
- newtGridGetSize(grid, &width, &height);
- if ((size_t)width < strlen(title) + 2) {
- offset = ((strlen(title) + 2) - width) / 2;
- width = strlen(title) + 2;
- }
- newtCenteredWindow(width + 2, height + 2, title);
- newtGridPlace(grid, 1 + offset, 1);
-}
-
-void newtGridWrappedWindowAt(newtGrid grid, char * title, int left, int top) {
- int width, height;
-
- newtGridGetSize(grid, &width, &height);
- newtOpenWindow(left, top, width + 2, height + 2, title);
- newtGridPlace(grid, 1, 1);
-}
-
-void newtGridAddComponentsToForm(newtGrid grid, newtComponent form,
- int recurse) {
- int row, col;
-
- for (col = 0; col < grid->cols; col++) {
- for (row = 0; row < grid->rows; row++) {
- if (grid->fields[col][row].type == NEWT_GRID_SUBGRID && recurse)
- newtGridAddComponentsToForm(grid->fields[col][row].u.grid,
- form, 1);
- else if (grid->fields[col][row].type == NEWT_GRID_COMPONENT)
- newtFormAddComponent(form, grid->fields[col][row].u.co);
- }
- }
-}
-
-/* this handles up to 50 items */
-static newtGrid stackem(int isVert, enum newtGridElement type1, void * what1,
- va_list args, int close) {
- struct item {
- enum newtGridElement type;
- void * what;
- } items[50];
- int i, num;
- newtGrid grid;
-
- items[0].type = type1, items[0].what = what1, num = 1;
- while (1) {
- items[num].type = va_arg(args, enum newtGridElement);
- if (items[num].type == NEWT_GRID_EMPTY) break;
-
- items[num].what = va_arg(args, void *);
- num++;
- }
-
- grid = newtCreateGrid(isVert ? 1 : num, isVert ? num : 1);
-
- for (i = 0; i < num; i++) {
- newtGridSetField(grid, isVert ? 0 : i, isVert ? i : 0,
- items[i].type, items[i].what,
- close ? 0 : (i ? (isVert ? 0 : 1) : 0),
- close ? 0 : (i ? (isVert ? 1 : 0) : 0), 0, 0, 0, 0);
- }
-
- return grid;
-}
-
-newtGrid newtGridHCloseStacked(enum newtGridElement type1, void * what1, ...) {
- va_list args;
- newtGrid grid;
-
- va_start(args, what1);
-
- grid = stackem(0, type1, what1, args, 1);
-
- va_start(args, what1);
-
- return grid;
-}
-
-newtGrid newtGridVCloseStacked(enum newtGridElement type1, void * what1, ...) {
- va_list args;
- newtGrid grid;
-
- va_start(args, what1);
-
- grid = stackem(1, type1, what1, args, 1);
-
- va_start(args, what1);
-
- return grid;
-}
-
-newtGrid newtGridVStacked(enum newtGridElement type1, void * what1, ...) {
- va_list args;
- newtGrid grid;
-
- va_start(args, what1);
-
- grid = stackem(1, type1, what1, args, 0);
-
- va_start(args, what1);
-
- return grid;
-}
-
-newtGrid newtGridHStacked(enum newtGridElement type1, void * what1, ...) {
- va_list args;
- newtGrid grid;
-
- va_start(args, what1);
-
- grid = stackem(0, type1, what1, args, 0);
-
- va_start(args, what1);
-
- return grid;
-}
-
-newtGrid newtGridBasicWindow(newtComponent text, newtGrid middle,
- newtGrid buttons) {
- newtGrid grid;
-
- grid = newtCreateGrid(1, 3);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, text,
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(grid, 0, 1, NEWT_GRID_SUBGRID, middle,
- 0, 1, 0, 0, 0, 0);
- newtGridSetField(grid, 0, 2, NEWT_GRID_SUBGRID, buttons,
- 0, 1, 0, 0, 0, NEWT_GRID_FLAG_GROWX);
-
- return grid;
-}
-
-newtGrid newtGridSimpleWindow(newtComponent text, newtComponent middle,
- newtGrid buttons) {
- newtGrid grid;
-
- grid = newtCreateGrid(1, 3);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, text,
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(grid, 0, 1, NEWT_GRID_COMPONENT, middle,
- 0, 1, 0, 0, 0, 0);
- newtGridSetField(grid, 0, 2, NEWT_GRID_SUBGRID, buttons,
- 0, 1, 0, 0, 0, NEWT_GRID_FLAG_GROWX);
-
- return grid;
-}
diff --git a/mdk-stage1/newt/label.c b/mdk-stage1/newt/label.c
deleted file mode 100644
index f1a9cebbf..000000000
--- a/mdk-stage1/newt/label.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct label {
- char * text;
- int length;
-};
-
-static void labelDraw(newtComponent co);
-static void labelDestroy(newtComponent co);
-
-static struct componentOps labelOps = {
- labelDraw,
- newtDefaultEventHandler,
- labelDestroy,
- newtDefaultPlaceHandler,
- newtDefaultMappedHandler,
-} ;
-
-newtComponent newtLabel(int left, int top, const char * text) {
- newtComponent co;
- struct label * la;
-
- co = malloc(sizeof(*co));
- la = malloc(sizeof(struct label));
- co->data = la;
-
- co->ops = &labelOps;
-
- co->height = 1;
- co->width = strlen(text);
- co->top = top;
- co->left = left;
- co->takesFocus = 0;
-
- la->length = strlen(text);
- la->text = strdup(text);
-
- return co;
-}
-
-void newtLabelSetText(newtComponent co, const char * text) {
- int newLength;
- struct label * la = co->data;
-
- newLength = strlen(text);
- if (newLength <= la->length) {
- memset(la->text, ' ', la->length);
- memcpy(la->text, text, newLength);
- } else {
- free(la->text);
- la->text = strdup(text);
- la->length = newLength;
- co->width = newLength;
- }
-
- labelDraw(co);
-}
-
-static void labelDraw(newtComponent co) {
- struct label * la = co->data;
-
- if (co->isMapped == -1) return;
-
- SLsmg_set_color(COLORSET_LABEL);
-
- newtGotorc(co->top, co->left);
- SLsmg_write_string(la->text);
-}
-
-static void labelDestroy(newtComponent co) {
- struct label * la = co->data;
-
- free(la->text);
- free(la);
- free(co);
-}
diff --git a/mdk-stage1/newt/listbox.c b/mdk-stage1/newt/listbox.c
deleted file mode 100644
index cdbf792ca..000000000
--- a/mdk-stage1/newt/listbox.c
+++ /dev/null
@@ -1,752 +0,0 @@
-/* This goofed-up box whacked into shape by Elliot Lee <sopwith@cuc.edu>
- (from the original listbox by Erik Troan <ewt@redhat.com>)
- and contributed to newt for use under the LGPL license.
- Copyright (C) 1996, 1997 Elliot Lee */
-
-#include <slang.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-
-/* Linked list of items in the listbox */
-struct items {
- char * text;
- const void *data;
- unsigned char isSelected;
- struct items *next;
-};
-
-/* Holds all the relevant information for this listbox */
-struct listbox {
- newtComponent sb; /* Scrollbar on right side of listbox */
- int curWidth; /* size of text w/o scrollbar or border*/
- int curHeight; /* size of text w/o border */
- int sbAdjust;
- int bdxAdjust, bdyAdjust;
- int numItems, numSelected;
- int userHasSetWidth;
- int currItem, startShowItem; /* startShowItem is the first item displayed
- on the screen */
- int isActive; /* If we handle key events all the time, it seems
- to do things even when they are supposed to be for
- another button/whatever */
- struct items *boxItems;
- int grow;
- int flags; /* flags for this listbox, right now just
- NEWT_FLAG_RETURNEXIT */
-};
-
-static void listboxDraw(newtComponent co);
-static void listboxDestroy(newtComponent co);
-static struct eventResult listboxEvent(newtComponent co, struct event ev);
-static void newtListboxRealSetCurrent(newtComponent co);
-static void listboxPlace(newtComponent co, int newLeft, int newTop);
-static inline void updateWidth(newtComponent co, struct listbox * li,
- int maxField);
-static void listboxMapped(newtComponent co, int isMapped);
-
-static struct componentOps listboxOps = {
- listboxDraw,
- listboxEvent,
- listboxDestroy,
- listboxPlace,
- listboxMapped,
-};
-
-static void listboxMapped(newtComponent co, int isMapped) {
- struct listbox * li = co->data;
-
- co->isMapped = isMapped;
- if (li->sb)
- li->sb->ops->mapped(li->sb, isMapped);
-}
-
-static void listboxPlace(newtComponent co, int newLeft, int newTop) {
- struct listbox * li = co->data;
-
- co->top = newTop;
- co->left = newLeft;
-
- if (li->sb)
- li->sb->ops->place(li->sb, co->left + co->width - li->bdxAdjust - 1,
- co->top);
-}
-
-newtComponent newtListbox(int left, int top, int height, int flags) {
- newtComponent co, sb;
- struct listbox * li;
-
- if (!(co = malloc(sizeof(*co))))
- return NULL;
-
- if (!(li = malloc(sizeof(struct listbox)))) {
- free(co);
- return NULL;
- }
-
- li->boxItems = NULL;
- li->numItems = 0;
- li->currItem = 0;
- li->numSelected = 0;
- li->isActive = 0;
- li->userHasSetWidth = 0;
- li->startShowItem = 0;
- li->sbAdjust = 0;
- li->bdxAdjust = 0;
- li->bdyAdjust = 0;
- li->flags = flags & (NEWT_FLAG_RETURNEXIT | NEWT_FLAG_BORDER |
- NEWT_FLAG_MULTIPLE);
-
- if (li->flags & NEWT_FLAG_BORDER) {
- li->bdxAdjust = 2;
- li->bdyAdjust = 1;
- }
-
- co->height = height;
- li->curHeight = co->height - (2 * li->bdyAdjust);
-
- if (height) {
- li->grow = 0;
- if (flags & NEWT_FLAG_SCROLL) {
- sb = newtVerticalScrollbar(left, top + li->bdyAdjust,
- li->curHeight,
- COLORSET_LISTBOX, COLORSET_ACTLISTBOX);
- li->sbAdjust = 3;
- } else {
- sb = NULL;
- }
- } else {
- li->grow = 1;
- sb = NULL;
- }
-
- li->sb = sb;
- co->data = li;
- co->isMapped = 0;
- co->left = left;
- co->top = top;
- co->ops = &listboxOps;
- co->takesFocus = 1;
- co->callback = NULL;
-
- updateWidth(co, li, 5);
-
- return co;
-}
-
-static inline void updateWidth(newtComponent co, struct listbox * li,
- int maxField) {
- li->curWidth = maxField;
- co->width = li->curWidth + li->sbAdjust + 2 * li->bdxAdjust;
-
- if (li->sb)
- li->sb->left = co->left + co->width - li->bdxAdjust - 1;
-}
-
-void newtListboxSetCurrentByKey(newtComponent co, void * key) {
- struct listbox * li = co->data;
- struct items * item;
- int i;
-
- item = li->boxItems, i = 0;
- while (item && item->data != key)
- item = item->next, i++;
-
- if (item)
- newtListboxSetCurrent(co, i);
-}
-
-void newtListboxSetCurrent(newtComponent co, int num)
-{
- struct listbox * li = co->data;
-
- if (num >= li->numItems)
- li->currItem = li->numItems - 1;
- else if (num < 0)
- li->currItem = 0;
- else
- li->currItem = num;
-
- if (li->currItem < li->startShowItem)
- li->startShowItem = li->currItem;
- else if (li->currItem - li->startShowItem > li->curHeight - 1)
- li->startShowItem = li->currItem - li->curHeight + 1;
- if (li->startShowItem + li->curHeight > li->numItems)
- li->startShowItem = li->numItems - li->curHeight;
- if(li->startShowItem < 0)
- li->startShowItem = 0;
-
- newtListboxRealSetCurrent(co);
-}
-
-static void newtListboxRealSetCurrent(newtComponent co)
-{
- struct listbox * li = co->data;
-
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
-}
-
-void newtListboxSetWidth(newtComponent co, int width) {
- struct listbox * li = co->data;
-
- co->width = width;
- li->curWidth = co->width - li->sbAdjust - 2 * li->bdxAdjust;
- li->userHasSetWidth = 1;
- if (li->sb) li->sb->left = co->width + co->left - 1;
- listboxDraw(co);
-}
-
-void * newtListboxGetCurrent(newtComponent co) {
- struct listbox * li = co->data;
- int i;
- struct items *item;
-
- for(i = 0, item = li->boxItems; item != NULL && i < li->currItem;
- i++, item = item->next);
-
- if (item)
- return (void *)item->data;
- else
- return NULL;
-}
-
-void newtListboxSelectItem(newtComponent co, const void * key,
- enum newtFlagsSense sense)
-{
- struct listbox * li = co->data;
- int i;
- struct items * item;
-
- item = li->boxItems, i = 0;
- while (item && item->data != key)
- item = item->next, i++;
-
- if (!item) return;
-
- if (item->isSelected)
- li->numSelected--;
-
- switch(sense) {
- case NEWT_FLAGS_RESET:
- item->isSelected = 0; break;
- case NEWT_FLAGS_SET:
- item->isSelected = 1; break;
- case NEWT_FLAGS_TOGGLE:
- item->isSelected = !item->isSelected;
- }
-
- if (item->isSelected)
- li->numSelected++;
-
- listboxDraw(co);
-}
-
-void newtListboxClearSelection(newtComponent co)
-{
- struct items *item;
- struct listbox * li = co->data;
-
- for(item = li->boxItems; item != NULL;
- item = item->next)
- item->isSelected = 0;
- li->numSelected = 0;
- listboxDraw(co);
-}
-
-/* Free the returned array after use, but NOT the values in the array */
-void ** newtListboxGetSelection(newtComponent co, int *numitems)
-{
- struct listbox * li;
- int i;
- void **retval;
- struct items *item;
-
- if(!co || !numitems) return NULL;
-
- li = co->data;
- if(!li || !li->numSelected) return NULL;
-
- retval = malloc(li->numSelected * sizeof(void *));
- for(i = 0, item = li->boxItems; item != NULL;
- item = item->next)
- if(item->isSelected)
- retval[i++] = (void *)item->data;
- *numitems = li->numSelected;
- return retval;
-}
-
-void newtListboxSetEntry(newtComponent co, int num, const char * text) {
- struct listbox * li = co->data;
- int i;
- struct items *item;
-
- for(i = 0, item = li->boxItems; item != NULL && i < num;
- i++, item = item->next);
-
- if(!item)
- return;
- else {
- free(item->text);
- item->text = strdup(text);
- }
- if (li->userHasSetWidth == 0 && strlen(text) > (size_t)li->curWidth) {
- updateWidth(co, li, strlen(text));
- }
-
- if (num >= li->startShowItem && num <= li->startShowItem + co->height)
- listboxDraw(co);
-}
-
-void newtListboxSetData(newtComponent co, int num, void * data) {
- struct listbox * li = co->data;
- int i;
- struct items *item;
-
- for(i = 0, item = li->boxItems; item != NULL && i < num;
- i++, item = item->next);
-
- item->data = data;
-}
-
-int newtListboxAppendEntry(newtComponent co, const char * text,
- const void * data) {
- struct listbox * li = co->data;
- struct items *item;
-
- if(li->boxItems) {
- for (item = li->boxItems; item->next != NULL; item = item->next);
-
- item = item->next = malloc(sizeof(struct items));
- } else {
- item = li->boxItems = malloc(sizeof(struct items));
- }
-
- if (!li->userHasSetWidth && text && (strlen(text) > (size_t)li->curWidth))
- updateWidth(co, li, strlen(text));
-
- item->text = strdup(text); item->data = data; item->next = NULL;
- item->isSelected = 0;
-
- if (li->grow)
- co->height++, li->curHeight++;
- li->numItems++;
-
- return 0;
-}
-
-int newtListboxInsertEntry(newtComponent co, const char * text,
- const void * data, void * key) {
- struct listbox * li = co->data;
- struct items *item, *t;
-
- if (li->boxItems) {
- if (key) {
- item = li->boxItems;
- while (item && item->data != key) item = item->next;
-
- if (!item) return 1;
-
- t = item->next;
- item = item->next = malloc(sizeof(struct items));
- item->next = t;
- } else {
- t = li->boxItems;
- item = li->boxItems = malloc(sizeof(struct items));
- item->next = t;
- }
- } else if (key) {
- return 1;
- } else {
- item = li->boxItems = malloc(sizeof(struct items));
- item->next = NULL;
- }
-
- if (!li->userHasSetWidth && text && (strlen(text) > (size_t)li->curWidth))
- updateWidth(co, li, strlen(text));
-
- item->text = strdup(text?text:"(null)"); item->data = data;
- item->isSelected = 0;
-
- if (li->sb)
- li->sb->left = co->left + co->width - li->bdxAdjust - 1;
- li->numItems++;
-
- listboxDraw(co);
-
- return 0;
-}
-
-int newtListboxDeleteEntry(newtComponent co, void * key) {
- struct listbox * li = co->data;
- int widest = 0, t;
- struct items *item, *item2 = NULL;
- int num;
-
- if (li->boxItems == NULL || li->numItems <= 0)
- return 0;
-
- num = 0;
-
- item2 = NULL, item = li->boxItems;
- while (item && item->data != key) {
- item2 = item;
- item = item->next;
- num++;
- }
-
- if (!item)
- return -1;
-
- if (item2)
- item2->next = item->next;
- else
- li->boxItems = item->next;
-
- free(item->text);
- free(item);
- li->numItems--;
-
- if (!li->userHasSetWidth) {
- widest = 0;
- for (item = li->boxItems; item != NULL; item = item->next)
- if ((t = strlen(item->text)) > widest) widest = t;
- }
-
- if (li->currItem >= num)
- li->currItem--;
-
- if (!li->userHasSetWidth) {
- updateWidth(co, li, widest);
- }
-
- listboxDraw(co);
-
- return 0;
-}
-
-void newtListboxClear(newtComponent co)
-{
- struct listbox * li;
- struct items *anitem, *nextitem;
- if(co == NULL || (li = co->data) == NULL)
- return;
- for(anitem = li->boxItems; anitem != NULL; anitem = nextitem) {
- nextitem = anitem->next;
- free(anitem->text);
- free(anitem);
- }
- li->numItems = li->numSelected = li->currItem = li->startShowItem = 0;
- li->boxItems = NULL;
- if (!li->userHasSetWidth)
- updateWidth(co, li, 5);
-}
-
-/* If you don't want to get back the text, pass in NULL for the ptr-ptr. Same
- goes for the data. */
-void newtListboxGetEntry(newtComponent co, int num, char **text, void **data) {
- struct listbox * li = co->data;
- int i;
- struct items *item;
-
- if (!li->boxItems || num >= li->numItems) {
- if(text)
- *text = NULL;
- if(data)
- *data = NULL;
- return;
- }
-
- i = 0;
- item = li->boxItems;
- while (item && i < num) {
- i++, item = item->next;
- }
-
- if (item) {
- if (text)
- *text = item->text;
- if (data)
- *data = (void *)item->data;
- }
-}
-
-static void listboxDraw(newtComponent co)
-{
- struct listbox * li = co->data;
- struct items *item;
- int i, j;
-
- if (!co->isMapped) return ;
-
- if(li->flags & NEWT_FLAG_BORDER) {
- if(li->isActive)
- SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX);
- else
- SLsmg_set_color(NEWT_COLORSET_LISTBOX);
-
- newtDrawBox(co->left, co->top, co->width, co->height, 0);
- }
-
- if(li->sb)
- li->sb->ops->draw(li->sb);
-
- SLsmg_set_color(NEWT_COLORSET_LISTBOX);
-
- for(i = 0, item = li->boxItems; item != NULL && i < li->startShowItem;
- i++, item = item->next);
-
- j = i;
-
- for (i = 0; item != NULL && i < li->curHeight; i++, item = item->next) {
- if (!item->text) continue;
-
- newtGotorc(co->top + i + li->bdyAdjust, co->left + li->bdxAdjust);
- if(j + i == li->currItem) {
- if(item->isSelected)
- SLsmg_set_color(NEWT_COLORSET_ACTSELLISTBOX);
- else
- SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX);
- } else if(item->isSelected)
- SLsmg_set_color(NEWT_COLORSET_SELLISTBOX);
- else
- SLsmg_set_color(NEWT_COLORSET_LISTBOX);
-
- SLsmg_write_nstring(item->text, li->curWidth);
-
- }
- newtGotorc(co->top + (li->currItem - li->startShowItem), co->left);
-}
-
-static struct eventResult listboxEvent(newtComponent co, struct event ev) {
- struct eventResult er;
- struct listbox * li = co->data;
- struct items *item;
- int i;
-
- er.result = ER_IGNORED;
-
- if(ev.when == EV_EARLY || ev.when == EV_LATE) {
- return er;
- }
-
- switch(ev.event) {
- case EV_KEYPRESS:
- if (!li->isActive) break;
-
- switch(ev.u.key) {
- case ' ':
- if(!(li->flags & NEWT_FLAG_MULTIPLE)) break;
- newtListboxSelectItem(co, li->boxItems[li->currItem].data,
- NEWT_FLAGS_TOGGLE);
- er.result = ER_SWALLOWED;
- /* We don't break here, because it is cool to be able to
- hold space to select a bunch of items in a list at once */
-
- case NEWT_KEY_DOWN:
- if(li->numItems <= 0) break;
- if(li->currItem < li->numItems - 1) {
- li->currItem++;
- if(li->currItem > (li->startShowItem + li->curHeight - 1)) {
- li->startShowItem = li->currItem - li->curHeight + 1;
- if(li->startShowItem + li->curHeight > li->numItems)
- li->startShowItem = li->numItems - li->curHeight;
- }
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
- }
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_ENTER:
- if(li->numItems <= 0) break;
- if(li->flags & NEWT_FLAG_RETURNEXIT)
- er.result = ER_EXITFORM;
- break;
-
- case NEWT_KEY_UP:
- if(li->numItems <= 0) break;
- if(li->currItem > 0) {
- li->currItem--;
- if(li->currItem < li->startShowItem)
- li->startShowItem = li->currItem;
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
- }
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_PGUP:
- if(li->numItems <= 0) break;
- li->startShowItem -= li->curHeight - 1;
- if(li->startShowItem < 0)
- li->startShowItem = 0;
- li->currItem -= li->curHeight - 1;
- if(li->currItem < 0)
- li->currItem = 0;
- newtListboxRealSetCurrent(co);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_PGDN:
- if(li->numItems <= 0) break;
- li->startShowItem += li->curHeight;
- if(li->startShowItem > (li->numItems - li->curHeight)) {
- li->startShowItem = li->numItems - li->curHeight;
- }
- li->currItem += li->curHeight;
- if(li->currItem >= li->numItems) {
- li->currItem = li->numItems - 1;
- }
- newtListboxRealSetCurrent(co);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_HOME:
- if(li->numItems <= 0) break;
- newtListboxSetCurrent(co, 0);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_END:
- if(li->numItems <= 0) break;
- li->startShowItem = li->numItems - li->curHeight;
- if(li->startShowItem < 0)
- li->startShowItem = 0;
- li->currItem = li->numItems - 1;
- newtListboxRealSetCurrent(co);
- er.result = ER_SWALLOWED;
- break;
- default:
- if (li->numItems <= 0) break;
- if (ev.u.key < NEWT_KEY_EXTRA_BASE && isalpha(ev.u.key)) {
- for(i = 0, item = li->boxItems; item != NULL &&
- i < li->currItem; i++, item = item->next);
-
- if (item && item->text && (toupper(*item->text) == toupper(ev.u.key))) {
- item = item->next;
- i++;
- } else {
- item = li->boxItems;
- i = 0;
- }
- while (item && item->text &&
- toupper(*item->text) != toupper(ev.u.key)) {
- item = item->next;
- i++;
- }
- if (item) {
- li->currItem = i;
- if(li->currItem < li->startShowItem ||
- li->currItem > li->startShowItem)
- li->startShowItem =
- li->currItem > li->numItems - li->curHeight ?
- li->startShowItem = li->numItems - li->curHeight :
- li->currItem;
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- newtListboxRealSetCurrent(co);
- er.result = ER_SWALLOWED;
- }
- }
- }
- break;
-
- case EV_FOCUS:
- li->isActive = 1;
- listboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_UNFOCUS:
- li->isActive = 0;
- listboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case EV_MOUSE:
- /* if this mouse click was within the listbox, make the current
- item the item clicked on. */
- /* Up scroll arrow */
- if (li->sb &&
- ev.u.mouse.x == co->left + co->width - li->bdxAdjust - 1 &&
- ev.u.mouse.y == co->top + li->bdyAdjust) {
- if(li->numItems <= 0) break;
- if(li->currItem > 0) {
- li->currItem--;
- if(li->currItem < li->startShowItem)
- li->startShowItem = li->currItem;
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
- }
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- break;
- }
- /* Down scroll arrow */
- if (li->sb &&
- ev.u.mouse.x == co->left + co->width - li->bdxAdjust - 1 &&
- ev.u.mouse.y == co->top + co->height - li->bdyAdjust - 1) {
- if(li->numItems <= 0) break;
- if(li->currItem < li->numItems - 1) {
- li->currItem++;
- if(li->currItem > (li->startShowItem + li->curHeight - 1)) {
- li->startShowItem = li->currItem - li->curHeight + 1;
- if(li->startShowItem + li->curHeight > li->numItems)
- li->startShowItem = li->numItems - li->curHeight;
- }
- if(li->sb)
- newtScrollbarSet(li->sb, li->currItem + 1, li->numItems);
- listboxDraw(co);
- }
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- break;
- }
- if ((ev.u.mouse.y >= co->top + li->bdyAdjust) &&
- (ev.u.mouse.y <= co->top + co->height - (li->bdyAdjust * 2)) &&
- (ev.u.mouse.x >= co->left + li->bdxAdjust) &&
- (ev.u.mouse.x <= co->left + co->width + (li->bdxAdjust * 2))) {
- li->currItem = li->startShowItem +
- (ev.u.mouse.y - li->bdyAdjust - co->top);
- newtListboxRealSetCurrent(co);
- listboxDraw(co);
- if(co->callback) co->callback(co, co->callbackData);
- er.result = ER_SWALLOWED;
- break;
- }
- }
-
- return er;
-}
-
-static void listboxDestroy(newtComponent co) {
- struct listbox * li = co->data;
- struct items * item, * nextitem;
-
- nextitem = item = li->boxItems;
-
- while (item != NULL) {
- nextitem = item->next;
- free(item->text);
- free(item);
- item = nextitem;
- }
-
- if (li->sb) li->sb->ops->destroy(li->sb);
-
- free(li);
- free(co);
-}
diff --git a/mdk-stage1/newt/newt.c b/mdk-stage1/newt/newt.c
deleted file mode 100644
index a41b7900b..000000000
--- a/mdk-stage1/newt/newt.c
+++ /dev/null
@@ -1,672 +0,0 @@
-#include <slang.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/signal.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <termios.h>
-#include <unistd.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct Window {
- int height, width, top, left;
- short * buffer;
- char * title;
-};
-
-struct keymap {
- char * str;
- int code;
- char * tc;
-};
-
-static struct Window windowStack[20];
-static struct Window * currentWindow = NULL;
-
-static char * helplineStack[20];
-static char ** currentHelpline = NULL;
-
-static int cursorRow, cursorCol;
-static int needResize;
-static int cursorOn = 1;
-
-static const char * defaultHelpLine =
-" <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen"
-;
-
-const struct newtColors newtDefaultColorPalette = {
- "cyan", "black", /* root fg, bg */
- "black", "blue", /* border fg, bg */
- "white", "blue", /* window fg, bg */
- "white", "black", /* shadow fg, bg */
- "white", "blue", /* title fg, bg */
- "black", "cyan", /* button fg, bg */
- "yellow", "cyan", /* active button fg, bg */
- "yellow", "blue", /* checkbox fg, bg */
- "blue", "brown", /* active checkbox fg, bg */
- "yellow", "blue", /* entry box fg, bg */
- "white", "blue", /* label fg, bg */
- "black", "cyan", /* listbox fg, bg */
- "yellow", "cyan", /* active listbox fg, bg */
- "white", "blue", /* textbox fg, bg */
- "cyan", "black", /* active textbox fg, bg */
- "white", "blue", /* help line */
- "yellow", "blue", /* root text */
- "blue", /* scale full */
- "red", /* scale empty */
- "blue", "cyan", /* disabled entry fg, bg */
- "white", "blue", /* compact button fg, bg */
- "yellow", "red", /* active & sel listbox */
- "black", "brown" /* selected listbox */
-};
-
-static const struct keymap keymap[] = {
- { "\033OA", NEWT_KEY_UP, "kh" },
- { "\033[A", NEWT_KEY_UP, "ku" },
- { "\033OB", NEWT_KEY_DOWN, "kd" },
- { "\033[B", NEWT_KEY_DOWN, "kd" },
- { "\033[C", NEWT_KEY_RIGHT, "kr" },
- { "\033OC", NEWT_KEY_RIGHT, "kr" },
- { "\033[D", NEWT_KEY_LEFT, "kl" },
- { "\033OD", NEWT_KEY_LEFT, "kl" },
- { "\033[H", NEWT_KEY_HOME, "kh" },
- { "\033[1~", NEWT_KEY_HOME, "kh" },
- { "\033Ow", NEWT_KEY_END, "kH" },
- { "\033[4~", NEWT_KEY_END, "kH" },
-
- { "\033[3~", NEWT_KEY_DELETE, "kl" },
- { "\033[2~", NEWT_KEY_INSERT, NULL },
-
- { "\033\t", NEWT_KEY_UNTAB, NULL },
-
- { "\033[5~", NEWT_KEY_PGUP, NULL },
- { "\033[6~", NEWT_KEY_PGDN, NULL },
- { "\033V", NEWT_KEY_PGUP, "kH" },
- { "\033v", NEWT_KEY_PGUP, "kH" },
-
- { "\033[[A", NEWT_KEY_F1, NULL },
- { "\033[[B", NEWT_KEY_F2, NULL },
- { "\033[[C", NEWT_KEY_F3, NULL },
- { "\033[[D", NEWT_KEY_F4, NULL },
- { "\033[[E", NEWT_KEY_F5, NULL },
-
- { "\033OP", NEWT_KEY_F1, NULL },
- { "\033OQ", NEWT_KEY_F2, NULL },
- { "\033OR", NEWT_KEY_F3, NULL },
- { "\033OS", NEWT_KEY_F4, NULL },
-
- { "\033[11~", NEWT_KEY_F1, NULL },
- { "\033[12~", NEWT_KEY_F2, NULL },
- { "\033[13~", NEWT_KEY_F3, NULL },
- { "\033[14~", NEWT_KEY_F4, NULL },
- { "\033[15~", NEWT_KEY_F5, NULL },
- { "\033[17~", NEWT_KEY_F6, NULL },
- { "\033[18~", NEWT_KEY_F7, NULL },
- { "\033[19~", NEWT_KEY_F8, NULL },
- { "\033[20~", NEWT_KEY_F9, NULL },
- { "\033[21~", NEWT_KEY_F10, NULL },
- { "\033[23~", NEWT_KEY_F11, NULL },
- { "\033[24~", NEWT_KEY_F12, NULL },
-
- { NULL, 0, NULL }, /* LEAVE this one */
-};
-static char keyPrefix = '\033';
-
-static const char * version = "Newt windowing library version " VERSION
- " - (C) 1996-2000 Red Hat Software. "
- "Redistributable under the term of the Library "
- "GNU Public License. "
- "Written by Erik Troan\n";
-
-static newtSuspendCallback suspendCallback = NULL;
-static void * suspendCallbackData = NULL;
-
-void newtSetSuspendCallback(newtSuspendCallback cb, void * data) {
- suspendCallback = cb;
- suspendCallbackData = data;
-}
-
-static void handleSigwinch(int signum __attribute__ ((unused))) {
- needResize = 1;
-}
-
-static int getkeyInterruptHook(void) {
- return -1;
-}
-
-void newtFlushInput(void) {
- while (SLang_input_pending(0)) {
- SLang_getkey();
- }
-}
-
-void newtRefresh(void) {
- SLsmg_refresh();
-}
-
-void newtSuspend(void) {
- SLtt_set_cursor_visibility (1);
- SLsmg_suspend_smg();
- SLang_reset_tty();
- SLtt_set_cursor_visibility (cursorOn);
-}
-
-void newtResume(void) {
- SLsmg_resume_smg ();
- SLsmg_refresh();
- SLang_init_tty(0, 0, 0);
-}
-
-void newtCls(void) {
- SLsmg_set_color(NEWT_COLORSET_ROOT);
- SLsmg_gotorc(0, 0);
- SLsmg_erase_eos();
-
- newtRefresh();
-}
-
-#if defined(THIS_DOESNT_WORK)
-void newtResizeScreen(int redraw) {
- newtPushHelpLine("");
-
- SLtt_get_screen_size();
- SLang_init_tty(0, 0, 0);
-
- SLsmg_touch_lines (0, SLtt_Screen_Rows - 1);
-
- /* I don't know why I need this */
- SLsmg_refresh();
-
- newtPopHelpLine();
-
- if (redraw)
- SLsmg_refresh();
-}
-#endif
-
-int newtInit(void) {
- char * MonoValue, * MonoEnv = "NEWT_MONO";
-
- /* use the version variable just to be sure it gets included */
- strlen(version);
-
- SLtt_get_terminfo();
- SLtt_get_screen_size();
-
- MonoValue = getenv(MonoEnv);
- if ( MonoValue == NULL ) {
- SLtt_Use_Ansi_Colors = 1;
- } else {
- SLtt_Use_Ansi_Colors = 0;
- }
-
- SLsmg_init_smg();
- SLang_init_tty(0, 0, 0);
-
- newtSetColors(newtDefaultColorPalette);
- newtCursorOff();
- /*initKeymap();*/
-
- /*memset(&sa, 0, sizeof(sa));
- sa.sa_handler = handleSigwinch;
- sigaction(SIGWINCH, &sa, NULL);*/
-
- SLsignal_intr(SIGWINCH, handleSigwinch);
- SLang_getkey_intr_hook = getkeyInterruptHook;
-
-
-
- return 0;
-}
-
-int newtFinished(void) {
- SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
- newtCursorOn();
- SLsmg_refresh();
- SLsmg_reset_smg();
- SLang_reset_tty();
-
- return 0;
-}
-
-void newtSetColors(struct newtColors colors) {
- SLtt_set_color(NEWT_COLORSET_ROOT, "", colors.rootFg, colors.rootBg);
- SLtt_set_color(NEWT_COLORSET_BORDER, "", colors.borderFg, colors.borderBg);
- SLtt_set_color(NEWT_COLORSET_WINDOW, "", colors.windowFg, colors.windowBg);
- SLtt_set_color(NEWT_COLORSET_SHADOW, "", colors.shadowFg, colors.shadowBg);
- SLtt_set_color(NEWT_COLORSET_TITLE, "", colors.titleFg, colors.titleBg);
- SLtt_set_color(NEWT_COLORSET_BUTTON, "", colors.buttonFg, colors.buttonBg);
- SLtt_set_color(NEWT_COLORSET_ACTBUTTON, "", colors.actButtonFg,
- colors.actButtonBg);
- SLtt_set_color(NEWT_COLORSET_CHECKBOX, "", colors.checkboxFg,
- colors.checkboxBg);
- SLtt_set_color(NEWT_COLORSET_ACTCHECKBOX, "", colors.actCheckboxFg,
- colors.actCheckboxBg);
- SLtt_set_color(NEWT_COLORSET_ENTRY, "", colors.entryFg, colors.entryBg);
- SLtt_set_color(NEWT_COLORSET_LABEL, "", colors.labelFg, colors.labelBg);
- SLtt_set_color(NEWT_COLORSET_LISTBOX, "", colors.listboxFg,
- colors.listboxBg);
- SLtt_set_color(NEWT_COLORSET_ACTLISTBOX, "", colors.actListboxFg,
- colors.actListboxBg);
- SLtt_set_color(NEWT_COLORSET_TEXTBOX, "", colors.textboxFg,
- colors.textboxBg);
- SLtt_set_color(NEWT_COLORSET_ACTTEXTBOX, "", colors.actTextboxFg,
- colors.actTextboxBg);
- SLtt_set_color(NEWT_COLORSET_HELPLINE, "", colors.helpLineFg,
- colors.helpLineBg);
- SLtt_set_color(NEWT_COLORSET_ROOTTEXT, "", colors.rootTextFg,
- colors.rootTextBg);
-
- SLtt_set_color(NEWT_COLORSET_EMPTYSCALE, "", "black",
- colors.emptyScale);
- SLtt_set_color(NEWT_COLORSET_FULLSCALE, "", "black",
- colors.fullScale);
- SLtt_set_color(NEWT_COLORSET_DISENTRY, "", colors.disabledEntryFg,
- colors.disabledEntryBg);
-
- SLtt_set_color(NEWT_COLORSET_COMPACTBUTTON, "", colors.compactButtonFg,
- colors.compactButtonBg);
-
- SLtt_set_color(NEWT_COLORSET_ACTSELLISTBOX, "", colors.actSelListboxFg,
- colors.actSelListboxBg);
- SLtt_set_color(NEWT_COLORSET_SELLISTBOX, "", colors.selListboxFg,
- colors.selListboxBg);
-}
-
-int newtGetKey(void) {
- int key;
- char buf[10], * chptr = buf;
- const struct keymap * curr;
-
- do {
- key = SLang_getkey();
- if (key == 0xFFFF) {
- if (needResize)
- return NEWT_KEY_RESIZE;
-
- /* ignore other signals */
- continue;
- }
-
- if (key == NEWT_KEY_SUSPEND && suspendCallback)
- suspendCallback(suspendCallbackData);
- } while (key == NEWT_KEY_SUSPEND);
-
- switch (key) {
- case 'v' | 0x80:
- case 'V' | 0x80:
- return NEWT_KEY_PGUP;
-
- case 22:
- return NEWT_KEY_PGDN;
-
- return NEWT_KEY_BKSPC;
- case 0x7f:
- return NEWT_KEY_BKSPC;
-
- case 0x08:
- return NEWT_KEY_BKSPC;
-
- default:
- if (key != keyPrefix) return key;
- }
-
- memset(buf, 0, sizeof(buf));
-
- *chptr++ = key;
- while (SLang_input_pending(5)) {
- key = SLang_getkey();
- if (key == keyPrefix) {
- /* he hit unknown keys too many times -- start over */
- memset(buf, 0, sizeof(buf));
- chptr = buf;
- }
-
- *chptr++ = key;
-
- /* this search should use bsearch(), but when we only look through
- a list of 20 (or so) keymappings, it's probably faster just to
- do a inline linear search */
-
- for (curr = keymap; curr->code; curr++) {
- if (curr->str) {
- if (!strcmp(curr->str, buf))
- return curr->code;
- }
- }
- }
-
- for (curr = keymap; curr->code; curr++) {
- if (curr->str) {
- if (!strcmp(curr->str, buf))
- return curr->code;
- }
- }
-
- /* Looks like we were a bit overzealous in reading characters. Return
- just the first character, and put everything else back in the buffer
- for later */
-
- chptr--;
- while (chptr > buf)
- SLang_ungetkey(*chptr--);
-
- return *chptr;
-}
-
-void newtWaitForKey(void) {
- newtRefresh();
-
- SLang_getkey();
- newtClearKeyBuffer();
-}
-
-void newtClearKeyBuffer(void) {
- while (SLang_input_pending(1)) {
- SLang_getkey();
- }
-}
-
-int newtOpenWindow(int left, int top, int width, int height,
- const char * title) {
- int j, row, col;
- int n;
- int i;
-
- newtFlushInput();
-
- if (!currentWindow) {
- currentWindow = windowStack;
- } else {
- currentWindow++;
- }
-
- currentWindow->left = left;
- currentWindow->top = top;
- currentWindow->width = width;
- currentWindow->height = height;
- currentWindow->title = title ? strdup(title) : NULL;
-
- currentWindow->buffer = malloc(sizeof(short) * (width + 3) * (height + 3));
-
- row = top - 1;
- col = left - 1;
- n = 0;
- for (j = 0; j < height + 3; j++, row++) {
- SLsmg_gotorc(row, col);
- SLsmg_read_raw((SLsmg_Char_Type *)currentWindow->buffer + n,
- currentWindow->width + 3);
- n += currentWindow->width + 3;
- }
-
- SLsmg_set_color(NEWT_COLORSET_BORDER);
- SLsmg_draw_box(top - 1, left - 1, height + 2, width + 2);
-
- if (currentWindow->title) {
- i = strlen(currentWindow->title) + 4;
- i = ((width - i) / 2) + left;
- SLsmg_gotorc(top - 1, i);
- SLsmg_set_char_set(1);
- SLsmg_write_char(SLSMG_RTEE_CHAR);
- SLsmg_set_char_set(0);
- SLsmg_write_char(' ');
- SLsmg_set_color(NEWT_COLORSET_TITLE);
- SLsmg_write_string((char *)currentWindow->title);
- SLsmg_set_color(NEWT_COLORSET_BORDER);
- SLsmg_write_char(' ');
- SLsmg_set_char_set(1);
- SLsmg_write_char(SLSMG_LTEE_CHAR);
- SLsmg_set_char_set(0);
- }
-
- SLsmg_set_color(NEWT_COLORSET_WINDOW);
- SLsmg_fill_region(top, left, height, width, ' ');
-
- SLsmg_set_color(NEWT_COLORSET_SHADOW);
- SLsmg_fill_region(top + height + 1, left, 1, width + 2, ' ');
- SLsmg_fill_region(top, left + width + 1, height + 1, 1, ' ');
-
- for (i = top; i < (top + height + 1); i++) {
- SLsmg_gotorc(i, left + width + 1);
- SLsmg_write_string(" ");
- }
-
- return 0;
-}
-
-int newtCenteredWindow(int width, int height, const char * title) {
- int top, left;
-
- top = (SLtt_Screen_Rows - height) / 2;
-
- /* I don't know why, but this seems to look better */
- if ((SLtt_Screen_Rows % 2) && (top % 2)) top--;
-
- left = (SLtt_Screen_Cols - width) / 2;
-
- newtOpenWindow(left, top, width, height, title);
-
- return 0;
-}
-
-void newtPopWindow(void) {
- int j, row, col;
- int n = 0;
-
- row = col = 0;
-
- row = currentWindow->top - 1;
- col = currentWindow->left - 1;
- for (j = 0; j < currentWindow->height + 3; j++, row++) {
- SLsmg_gotorc(row, col);
- SLsmg_write_raw((SLsmg_Char_Type *)currentWindow->buffer + n,
- currentWindow->width + 3);
- n += currentWindow->width + 3;
- }
-
- free(currentWindow->buffer);
- free(currentWindow->title);
-
- if (currentWindow == windowStack)
- currentWindow = NULL;
- else
- currentWindow--;
-
- SLsmg_set_char_set(0);
-
- newtRefresh();
-}
-
-void newtGetWindowPos(int * x, int * y) {
- if (currentWindow) {
- *x = currentWindow->left;
- *y = currentWindow->top;
- } else
- *x = *y = 0;
-}
-
-void newtGetrc(int * row, int * col) {
- *row = cursorRow;
- *col = cursorCol;
-}
-
-void newtGotorc(int newRow, int newCol) {
- if (currentWindow) {
- newRow += currentWindow->top;
- newCol += currentWindow->left;
- }
-
- cursorRow = newRow;
- cursorCol = newCol;
- SLsmg_gotorc(cursorRow, cursorCol);
-}
-
-void newtDrawBox(int left, int top, int width, int height, int shadow) {
- if (currentWindow) {
- top += currentWindow->top;
- left += currentWindow->left;
- }
-
- SLsmg_draw_box(top, left, height, width);
-
- if (shadow) {
- SLsmg_set_color(NEWT_COLORSET_SHADOW);
- SLsmg_fill_region(top + height, left + 1, 1, width - 1, ' ');
- SLsmg_fill_region(top + 1, left + width, height, 1, ' ');
- }
-}
-
-void newtClearBox(int left, int top, int width, int height) {
- if (currentWindow) {
- top += currentWindow->top;
- left += currentWindow->left;
- }
-
- SLsmg_fill_region(top, left, height, width, ' ');
-}
-
-#if 0
-/* This doesn't seem to work quite right. I don't know why not, but when
- I rsh from an rxvt into a box and run this code, the machine returns
- console key's (\033[B) rather then xterm ones (\033OB). */
-static void initKeymap(void) {
- struct keymap * curr;
-
- for (curr = keymap; curr->code; curr++) {
- if (!curr->str)
- curr->str = SLtt_tgetstr(curr->tc);
- }
-
- /* Newt's keymap handling is a bit broken. It assumes that any extended
- keystrokes begin with ESC. If you're using a homebrek terminal you
- will probably need to fix this, or just yell at me and I'll be so
- ashamed of myself for doing it this way I'll fix it */
-
- keyPrefix = 0x1b; /* ESC */
-}
-#endif
-
-void newtDelay(int usecs) {
- fd_set set;
- struct timeval tv;
-
- FD_ZERO(&set);
-
- tv.tv_sec = usecs / 1000000;
- tv.tv_usec = usecs % 1000000;
-
- select(0, &set, &set, &set, &tv);
-}
-
-struct eventResult newtDefaultEventHandler(newtComponent c __attribute__ ((unused)),
- struct event ev __attribute__ ((unused))) {
- struct eventResult er;
-
- er.result = ER_IGNORED;
- return er;
-}
-
-void newtRedrawHelpLine(void) {
- char * buf;
-
- SLsmg_set_color(NEWT_COLORSET_HELPLINE);
-
- buf = alloca(SLtt_Screen_Cols + 1);
- memset(buf, ' ', SLtt_Screen_Cols);
- buf[SLtt_Screen_Cols] = '\0';
-
- if (currentHelpline)
- memcpy(buf, *currentHelpline, strlen(*currentHelpline));
-
- SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
- SLsmg_write_string(buf);
-}
-
-void newtPushHelpLine(const char * text) {
- if (!text)
- text = defaultHelpLine;
-
- if (currentHelpline)
- (*(++currentHelpline)) = strdup(text);
- else {
- currentHelpline = helplineStack;
- *currentHelpline = strdup(text);
- }
-
- newtRedrawHelpLine();
-}
-
-void newtPopHelpLine(void) {
- if (!currentHelpline) return;
-
- free(*currentHelpline);
- if (currentHelpline == helplineStack)
- currentHelpline = NULL;
- else
- currentHelpline--;
-
- newtRedrawHelpLine();
-}
-
-void newtDrawRootText(int col, int row, const char * text) {
- SLsmg_set_color(NEWT_COLORSET_ROOTTEXT);
-
- if (col < 0) {
- col = SLtt_Screen_Cols + col;
- }
-
- if (row < 0) {
- row = SLtt_Screen_Rows + row;
- }
-
- SLsmg_gotorc(row, col);
- SLsmg_write_string((char *)text);
-}
-
-int newtSetFlags(int oldFlags, int newFlags, enum newtFlagsSense sense) {
- switch (sense) {
- case NEWT_FLAGS_SET:
- return oldFlags | newFlags;
-
- case NEWT_FLAGS_RESET:
- return oldFlags & (~newFlags);
-
- case NEWT_FLAGS_TOGGLE:
- return oldFlags ^ newFlags;
-
- default:
- return oldFlags;
- }
-}
-
-void newtBell(void)
-{
- SLtt_beep();
-}
-
-void newtGetScreenSize(int * cols, int * rows) {
- if (rows) *rows = SLtt_Screen_Rows;
- if (cols) *cols = SLtt_Screen_Cols;
-}
-
-void newtDefaultPlaceHandler(newtComponent c, int newLeft, int newTop) {
- c->left = newLeft;
- c->top = newTop;
-}
-
-void newtDefaultMappedHandler(newtComponent c, int isMapped) {
- c->isMapped = isMapped;
-}
-
-void newtCursorOff(void) {
- cursorOn = 0;
- SLtt_set_cursor_visibility (cursorOn);
-}
-
-void newtCursorOn(void) {
- cursorOn = 1;
- SLtt_set_cursor_visibility (cursorOn);
-}
diff --git a/mdk-stage1/newt/newt.h b/mdk-stage1/newt/newt.h
deleted file mode 100644
index d3fd8bedc..000000000
--- a/mdk-stage1/newt/newt.h
+++ /dev/null
@@ -1,362 +0,0 @@
-#ifndef H_NEWT
-#define H_NEWT
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdarg.h>
-
-#define NEWT_COLORSET_ROOT 2
-#define NEWT_COLORSET_BORDER 3
-#define NEWT_COLORSET_WINDOW 4
-#define NEWT_COLORSET_SHADOW 5
-#define NEWT_COLORSET_TITLE 6
-#define NEWT_COLORSET_BUTTON 7
-#define NEWT_COLORSET_ACTBUTTON 8
-#define NEWT_COLORSET_CHECKBOX 9
-#define NEWT_COLORSET_ACTCHECKBOX 10
-#define NEWT_COLORSET_ENTRY 11
-#define NEWT_COLORSET_LABEL 12
-#define NEWT_COLORSET_LISTBOX 13
-#define NEWT_COLORSET_ACTLISTBOX 14
-#define NEWT_COLORSET_TEXTBOX 15
-#define NEWT_COLORSET_ACTTEXTBOX 16
-#define NEWT_COLORSET_HELPLINE 17
-#define NEWT_COLORSET_ROOTTEXT 18
-#define NEWT_COLORSET_EMPTYSCALE 19
-#define NEWT_COLORSET_FULLSCALE 20
-#define NEWT_COLORSET_DISENTRY 21
-#define NEWT_COLORSET_COMPACTBUTTON 22
-#define NEWT_COLORSET_ACTSELLISTBOX 23
-#define NEWT_COLORSET_SELLISTBOX 24
-
-#define NEWT_ARG_LAST -100000
-#define NEWT_ARG_APPEND -1
-
-struct newtColors {
- char * rootFg, * rootBg;
- char * borderFg, * borderBg;
- char * windowFg, * windowBg;
- char * shadowFg, * shadowBg;
- char * titleFg, * titleBg;
- char * buttonFg, * buttonBg;
- char * actButtonFg, * actButtonBg;
- char * checkboxFg, * checkboxBg;
- char * actCheckboxFg, * actCheckboxBg;
- char * entryFg, * entryBg;
- char * labelFg, * labelBg;
- char * listboxFg, * listboxBg;
- char * actListboxFg, * actListboxBg;
- char * textboxFg, * textboxBg;
- char * actTextboxFg, * actTextboxBg;
- char * helpLineFg, * helpLineBg;
- char * rootTextFg, * rootTextBg;
- char * emptyScale, * fullScale;
- char * disabledEntryFg, * disabledEntryBg;
- char * compactButtonFg, * compactButtonBg;
- char * actSelListboxFg, * actSelListboxBg;
- char * selListboxFg, * selListboxBg;
-};
-
-enum newtFlagsSense { NEWT_FLAGS_SET, NEWT_FLAGS_RESET, NEWT_FLAGS_TOGGLE };
-
-#define NEWT_FLAG_RETURNEXIT (1 << 0)
-#define NEWT_FLAG_HIDDEN (1 << 1)
-#define NEWT_FLAG_SCROLL (1 << 2)
-#define NEWT_FLAG_DISABLED (1 << 3)
-/* OBSOLETE #define NEWT_FLAG_NOSCROLL (1 << 4) for listboxes */
-#define NEWT_FLAG_BORDER (1 << 5)
-#define NEWT_FLAG_WRAP (1 << 6)
-#define NEWT_FLAG_NOF12 (1 << 7)
-#define NEWT_FLAG_MULTIPLE (1 << 8)
-#define NEWT_FLAG_SELECTED (1 << 9)
-#define NEWT_FLAG_CHECKBOX (1 << 10)
-#define NEWT_FLAG_PASSWORD (1 << 11) /* draw '*' of chars in entrybox */
-#define NEWT_FD_READ (1 << 0)
-#define NEWT_FD_WRITE (1 << 1)
-
-#define NEWT_CHECKBOXTREE_COLLAPSED '\0'
-#define NEWT_CHECKBOXTREE_EXPANDED '\1'
-#define NEWT_CHECKBOXTREE_UNSELECTED ' '
-#define NEWT_CHECKBOXTREE_SELECTED '*'
-
-/* Backwards compatibility */
-#define NEWT_LISTBOX_RETURNEXIT NEWT_FLAG_RETURNEXIT
-#define NEWT_ENTRY_SCROLL NEWT_FLAG_SCROLL
-#define NEWT_ENTRY_HIDDEN NEWT_FLAG_HIDDEN
-#define NEWT_ENTRY_RETURNEXIT NEWT_FLAG_RETURNEXIT
-#define NEWT_ENTRY_DISABLED NEWT_FLAG_DISABLED
-
-#define NEWT_TEXTBOX_WRAP NEWT_FLAG_WRAP
-#define NEWT_TEXTBOX_SCROLL NEWT_FLAG_SCROLL
-#define NEWT_FORM_NOF12 NEWT_FLAG_NOF12
-
-#define newtListboxAddEntry newtListboxAppendEntry
-
-
-typedef struct newtComponent_struct * newtComponent;
-
-extern const struct newtColors newtDefaultColorPalette;
-
-typedef void (*newtCallback)(newtComponent, void *);
-typedef void (*newtSuspendCallback)(void * data);
-
-int newtInit(void);
-int newtFinished(void);
-void newtCls(void);
-void newtResizeScreen(int redraw);
-void newtWaitForKey(void);
-void newtClearKeyBuffer(void);
-void newtDelay(int usecs);
-/* top, left are *not* counting the border */
-int newtOpenWindow(int left, int top, int width, int height,
- const char * title);
-int newtCenteredWindow(int width, int height, const char * title);
-void newtPopWindow(void);
-void newtSetColors(struct newtColors colors);
-void newtRefresh(void);
-void newtSuspend(void);
-void newtSetSuspendCallback(newtSuspendCallback cb, void * data);
-void newtSetHelpCallback(newtCallback cb);
-void newtResume(void);
-void newtPushHelpLine(const char * text);
-void newtRedrawHelpLine(void);
-void newtPopHelpLine(void);
-void newtDrawRootText(int col, int row, const char * text);
-void newtBell(void);
-void newtCursorOff(void);
-void newtCursorOn(void);
-
-/* Components */
-
-newtComponent newtCompactButton(int left, int top, const char * text);
-newtComponent newtButton(int left, int top, const char * text);
-newtComponent newtCheckbox(int left, int top, const char * text, char defValue,
- const char * seq, char * result);
-char newtCheckboxGetValue(newtComponent co);
-void newtCheckboxSetValue(newtComponent co, char value);
-void newtCheckboxSetFlags(newtComponent co, int flags, enum newtFlagsSense sense);
-
-
-newtComponent newtRadiobutton(int left, int top, const char * text, int isDefault,
- newtComponent prevButton);
-newtComponent newtRadioGetCurrent(newtComponent setMember);
-newtComponent newtListitem(int left, int top, const char * text, int isDefault,
- newtComponent prevItem, const void * data, int flags);
-void newtListitemSet(newtComponent co, const char * text);
-void * newtListitemGetData(newtComponent co);
-void newtGetScreenSize(int * cols, int * rows);
-
-newtComponent newtLabel(int left, int top, const char * text);
-void newtLabelSetText(newtComponent co, const char * text);
-newtComponent newtVerticalScrollbar(int left, int top, int height,
- int normalColorset, int thumbColorset);
-void newtScrollbarSet(newtComponent co, int where, int total);
-
-newtComponent newtListbox(int left, int top, int height, int flags);
-void * newtListboxGetCurrent(newtComponent co);
-void newtListboxSetCurrent(newtComponent co, int num);
-void newtListboxSetCurrentByKey(newtComponent co, void * key);
-void newtListboxSetEntry(newtComponent co, int num, const char * text);
-void newtListboxSetWidth(newtComponent co, int width);
-void newtListboxSetData(newtComponent co, int num, void * data);
-int newtListboxAppendEntry(newtComponent co, const char * text,
- const void * data);
-/* Send the key to insert after, or NULL to insert at the top */
-int newtListboxInsertEntry(newtComponent co, const char * text, const void * data, void * key);
-int newtListboxDeleteEntry(newtComponent co, void * data);
-void newtListboxClear(newtComponent co); /* removes all entries from listbox */
-void newtListboxGetEntry(newtComponent co, int num, char **text, void **data);
-/* Returns an array of data pointers from items, last element is NULL */
-void **newtListboxGetSelection(newtComponent co, int *numitems);
-void newtListboxClearSelection(newtComponent co);
-void newtListboxSelectItem(newtComponent co, const void * key,
- enum newtFlagsSense sense);
-
-newtComponent newtCheckboxTree(int left, int top, int height, int flags);
-newtComponent newtCheckboxTreeMulti(int left, int top, int height, char *seq, int flags);
-const void ** newtCheckboxTreeGetSelection(newtComponent co, int *numitems);
-const void * newtCheckboxTreeGetCurrent(newtComponent co);
-const void ** newtCheckboxTreeGetMultiSelection(newtComponent co, int *numitems, char seqnum);
-/* last item is NEWT_ARG_LAST for all of these */
-int newtCheckboxTreeAddItem(newtComponent co,
- const char * text, const void * data,
- int flags, int index, ...);
-int newtCheckboxTreeAddArray(newtComponent co,
- const char * text, const void * data,
- int flags, int * indexes);
-int * newtCheckboxTreeFindItem(newtComponent co, void * data);
-void newtCheckboxTreeSetEntry(newtComponent co, const void * data,
- const char * text);
-char newtCheckboxTreeGetEntryValue(newtComponent co, const void * data);
-void newtCheckboxTreeSetEntryValue(newtComponent co, const void * data,
- char value);
-
-newtComponent newtTextboxReflowed(int left, int top, char * text, int width,
- int flexDown, int flexUp, int flags);
-newtComponent newtTextbox(int left, int top, int width, int height, int flags);
-void newtTextboxSetText(newtComponent co, const char * text);
-void newtTextboxSetHeight(newtComponent co, int height);
-int newtTextboxGetNumLines(newtComponent co);
-char * newtReflowText(char * text, int width, int flexDown, int flexUp,
- int * actualWidth, int * actualHeight);
-
-struct newtExitStruct {
- enum { NEWT_EXIT_HOTKEY, NEWT_EXIT_COMPONENT, NEWT_EXIT_FDREADY,
- NEWT_EXIT_TIMER } reason;
- union {
- int key;
- newtComponent co;
- } u;
-} ;
-
-newtComponent newtForm(newtComponent vertBar, void * helpTag, int flags);
-void newtFormSetTimer(newtComponent form, int millisecs);
-void newtFormWatchFd(newtComponent form, int fd, int fdFlags);
-void newtFormSetSize(newtComponent co);
-newtComponent newtFormGetCurrent(newtComponent co);
-void newtFormSetBackground(newtComponent co, int color);
-void newtFormSetCurrent(newtComponent co, newtComponent subco);
-void newtFormAddComponent(newtComponent form, newtComponent co);
-void newtFormAddComponents(newtComponent form, ...);
-void newtFormSetHeight(newtComponent co, int height);
-void newtFormSetWidth(newtComponent co, int width);
-newtComponent newtRunForm(newtComponent form); /* obsolete */
-void newtFormRun(newtComponent co, struct newtExitStruct * es);
-void newtDrawForm(newtComponent form);
-void newtFormAddHotKey(newtComponent co, int key);
-
-typedef int (*newtEntryFilter)(newtComponent entry, void * data, int ch,
- int cursor);
-newtComponent newtEntry(int left, int top, const char * initialValue, int width,
- char ** resultPtr, int flags);
-void newtEntrySet(newtComponent co, const char * value, int cursorAtEnd);
-void newtEntrySetFilter(newtComponent co, newtEntryFilter filter, void * data);
-char * newtEntryGetValue(newtComponent co);
-void newtEntrySetFlags(newtComponent co, int flags, enum newtFlagsSense sense);
-
-newtComponent newtScale(int left, int top, int width, int fullValue);
-void newtScaleSet(newtComponent co, unsigned int amount);
-
-void newtComponentAddCallback(newtComponent co, newtCallback f, void * data);
-void newtComponentTakesFocus(newtComponent co, int val);
-
-/* this also destroys all of the components (including other forms) on the
- form */
-void newtFormDestroy(newtComponent form);
-
-/* Key codes */
-
-#define NEWT_KEY_TAB '\t'
-#define NEWT_KEY_ENTER '\r'
-#define NEWT_KEY_SUSPEND '\032' /* ctrl - z*/
-#define NEWT_KEY_RETURN NEWT_KEY_ENTER
-
-#define NEWT_KEY_EXTRA_BASE 0x8000
-#define NEWT_KEY_UP NEWT_KEY_EXTRA_BASE + 1
-#define NEWT_KEY_DOWN NEWT_KEY_EXTRA_BASE + 2
-#define NEWT_KEY_LEFT NEWT_KEY_EXTRA_BASE + 4
-#define NEWT_KEY_RIGHT NEWT_KEY_EXTRA_BASE + 5
-#define NEWT_KEY_BKSPC NEWT_KEY_EXTRA_BASE + 6
-#define NEWT_KEY_DELETE NEWT_KEY_EXTRA_BASE + 7
-#define NEWT_KEY_HOME NEWT_KEY_EXTRA_BASE + 8
-#define NEWT_KEY_END NEWT_KEY_EXTRA_BASE + 9
-#define NEWT_KEY_UNTAB NEWT_KEY_EXTRA_BASE + 10
-#define NEWT_KEY_PGUP NEWT_KEY_EXTRA_BASE + 11
-#define NEWT_KEY_PGDN NEWT_KEY_EXTRA_BASE + 12
-#define NEWT_KEY_INSERT NEWT_KEY_EXTRA_BASE + 13
-
-#define NEWT_KEY_F1 NEWT_KEY_EXTRA_BASE + 101
-#define NEWT_KEY_F2 NEWT_KEY_EXTRA_BASE + 102
-#define NEWT_KEY_F3 NEWT_KEY_EXTRA_BASE + 103
-#define NEWT_KEY_F4 NEWT_KEY_EXTRA_BASE + 104
-#define NEWT_KEY_F5 NEWT_KEY_EXTRA_BASE + 105
-#define NEWT_KEY_F6 NEWT_KEY_EXTRA_BASE + 106
-#define NEWT_KEY_F7 NEWT_KEY_EXTRA_BASE + 107
-#define NEWT_KEY_F8 NEWT_KEY_EXTRA_BASE + 108
-#define NEWT_KEY_F9 NEWT_KEY_EXTRA_BASE + 109
-#define NEWT_KEY_F10 NEWT_KEY_EXTRA_BASE + 110
-#define NEWT_KEY_F11 NEWT_KEY_EXTRA_BASE + 111
-#define NEWT_KEY_F12 NEWT_KEY_EXTRA_BASE + 112
-
-/* not really a key, but newtGetKey returns it */
-#define NEWT_KEY_RESIZE NEWT_KEY_EXTRA_BASE + 113
-
-#define NEWT_ANCHOR_LEFT (1 << 0)
-#define NEWT_ANCHOR_RIGHT (1 << 1)
-#define NEWT_ANCHOR_TOP (1 << 2)
-#define NEWT_ANCHOR_BOTTOM (1 << 3)
-
-#define NEWT_GRID_FLAG_GROWX (1 << 0)
-#define NEWT_GRID_FLAG_GROWY (1 << 1)
-
-typedef struct grid_s * newtGrid;
-enum newtGridElement { NEWT_GRID_EMPTY = 0,
- NEWT_GRID_COMPONENT, NEWT_GRID_SUBGRID };
-
-newtGrid newtCreateGrid(int cols, int rows);
-/* TYPE, what, TYPE, what, ..., NULL */
-newtGrid newtGridVStacked(enum newtGridElement type, void * what, ...);
-newtGrid newtGridVCloseStacked(enum newtGridElement type, void * what, ...);
-newtGrid newtGridHStacked(enum newtGridElement type1, void * what1, ...);
-newtGrid newtGridHCloseStacked(enum newtGridElement type1, void * what1, ...);
-newtGrid newtGridBasicWindow(newtComponent text, newtGrid middle,
- newtGrid buttons);
-newtGrid newtGridSimpleWindow(newtComponent text, newtComponent middle,
- newtGrid buttons);
-void newtGridSetField(newtGrid grid, int col, int row,
- enum newtGridElement type, void * val, int padLeft,
- int padTop, int padRight, int padBottom, int anchor,
- int flags);
-void newtGridPlace(newtGrid grid, int left, int top);
-#define newtGridDestroy newtGridFree
-void newtGridFree(newtGrid grid, int recurse);
-void newtGridGetSize(newtGrid grid, int * width, int * height);
-void newtGridWrappedWindow(newtGrid grid, char * title);
-void newtGridWrappedWindowAt(newtGrid grid, char * title, int left, int top);
-void newtGridAddComponentsToForm(newtGrid grid, newtComponent form,
- int recurse);
-
-/* convienve */
-newtGrid newtButtonBarv(char * button1, newtComponent * b1comp, va_list args);
-newtGrid newtButtonBar(char * button1, newtComponent * b1comp, ...);
-
-/* automatically centered and shrink wrapped */
-void newtWinMessage(char * title, char * buttonText, char * text, ...);
-void newtWinMessagev(char * title, char * buttonText, char * text,
- va_list argv);
-
-/* having separate calls for these two seems silly, but having two separate
- variable length-arg lists seems like a bad idea as well */
-
-/* Returns 0 if F12 was pressed, 1 for button1, 2 for button2 */
-int newtWinChoice(char * title, char * button1, char * button2,
- char * text, ...);
-/* Returns 0 if F12 was pressed, 1 for button1, 2 for button2,
- 3 for button3 */
-int newtWinTernary(char * title, char * button1, char * button2,
- char * button3, char * message, ...);
-
-/* Returns the button number pressed, 0 on F12 */
-int newtWinMenu(char * title, char * text, int suggestedWidth, int flexDown,
- int flexUp, int maxListHeight, char ** items, int * listItem,
- char * button1, ...);
-
-struct newtWinEntry {
- char * text;
- char ** value; /* may be initialized to set default */
- int flags;
-};
-
-/* Returns the button number pressed, 0 on F12. The final values are
- dynamically allocated, and need to be freed. */
-int newtWinEntries(char * title, char * text, int suggestedWidth, int flexDown,
- int flexUp, int dataWidth,
- struct newtWinEntry * items, char * button1, ...);
-
-#ifdef __cplusplus
-} /* End of extern "C" { */
-#endif
-
-#endif /* H_NEWT */
diff --git a/mdk-stage1/newt/newt_pr.h b/mdk-stage1/newt/newt_pr.h
deleted file mode 100644
index 76f5e2f6f..000000000
--- a/mdk-stage1/newt/newt_pr.h
+++ /dev/null
@@ -1,82 +0,0 @@
-#ifndef H_NEWT_PR
-#define H_NEWT_PR
-
-#define COLORSET_ROOT NEWT_COLORSET_ROOT
-#define COLORSET_BORDER NEWT_COLORSET_BORDER
-#define COLORSET_WINDOW NEWT_COLORSET_WINDOW
-#define COLORSET_SHADOW NEWT_COLORSET_SHADOW
-#define COLORSET_TITLE NEWT_COLORSET_TITLE
-#define COLORSET_BUTTON NEWT_COLORSET_BUTTON
-#define COLORSET_ACTBUTTON NEWT_COLORSET_ACTBUTTON
-#define COLORSET_CHECKBOX NEWT_COLORSET_CHECKBOX
-#define COLORSET_ACTCHECKBOX NEWT_COLORSET_ACTCHECKBOX
-#define COLORSET_ENTRY NEWT_COLORSET_ENTRY
-#define COLORSET_LABEL NEWT_COLORSET_LABEL
-#define COLORSET_LISTBOX NEWT_COLORSET_LISTBOX
-#define COLORSET_ACTLISTBOX NEWT_COLORSET_ACTLISTBOX
-#define COLORSET_TEXTBOX NEWT_COLORSET_TEXTBOX
-#define COLORSET_ACTTEXTBOX NEWT_COLORSET_ACTTEXTBOX
-
-int newtSetFlags(int oldFlags, int newFlags, enum newtFlagsSense sense);
-
-void newtGotorc(int row, int col);
-void newtGetrc(int * row, int * col);
-void newtGetWindowPos(int * x, int * y);
-void newtDrawBox(int left, int top, int width, int height, int shadow);
-void newtClearBox(int left, int top, int width, int height);
-
-int newtGetKey(void);
-
-struct newtComponent_struct {
- /* common data */
- int height, width;
- int top, left;
- int takesFocus;
- int isMapped;
-
- struct componentOps * ops;
-
- newtCallback callback;
- void * callbackData;
-
- void * data;
-} ;
-
-enum eventResultTypes { ER_IGNORED, ER_SWALLOWED, ER_EXITFORM, ER_SETFOCUS,
- ER_NEXTCOMP };
-struct eventResult {
- enum eventResultTypes result;
- union {
- newtComponent focus;
- } u;
-};
-
-enum eventTypes { EV_FOCUS, EV_UNFOCUS, EV_KEYPRESS, EV_MOUSE };
-enum eventSequence { EV_EARLY, EV_NORMAL, EV_LATE };
-
-struct event {
- enum eventTypes event;
- enum eventSequence when;
- union {
- int key;
- struct {
- enum { MOUSE_MOTION, MOUSE_BUTTON_DOWN, MOUSE_BUTTON_UP } type;
- int x, y;
- } mouse;
- } u;
-} ;
-
-struct componentOps {
- void (* draw)(newtComponent c);
- struct eventResult (* event)(newtComponent c, struct event ev);
- void (* destroy)(newtComponent c);
- void (* place)(newtComponent c, int newLeft, int newTop);
- void (* mapped)(newtComponent c, int isMapped);
-} ;
-
-void newtDefaultPlaceHandler(newtComponent c, int newLeft, int newTop);
-void newtDefaultMappedHandler(newtComponent c, int isMapped);
-struct eventResult newtDefaultEventHandler(newtComponent c,
- struct event ev);
-
-#endif /* H_NEWT_PR */
diff --git a/mdk-stage1/newt/scale.c b/mdk-stage1/newt/scale.c
deleted file mode 100644
index 800958580..000000000
--- a/mdk-stage1/newt/scale.c
+++ /dev/null
@@ -1,72 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct scale {
- int fullValue;
- int charsSet;
-};
-
-static void scaleDraw(newtComponent co);
-
-static struct componentOps scaleOps = {
- scaleDraw,
- newtDefaultEventHandler,
- NULL,
- newtDefaultPlaceHandler,
- newtDefaultMappedHandler,
-} ;
-
-newtComponent newtScale(int left, int top, int width, int fullValue) {
- newtComponent co;
- struct scale * sc;
-
- co = malloc(sizeof(*co));
- sc = malloc(sizeof(struct scale));
- co->data = sc;
-
- co->ops = &scaleOps;
-
- co->height = 1;
- co->width = width;
- co->top = top;
- co->left = left;
- co->takesFocus = 0;
-
- sc->fullValue = fullValue;
- sc->charsSet = 0;
-
- return co;
-}
-
-void newtScaleSet(newtComponent co, unsigned int amount) {
- struct scale * sc = co->data;
- int newCharsSet;
-
- newCharsSet = (amount * co->width) / sc->fullValue;
-
- if (newCharsSet != sc->charsSet) {
- sc->charsSet = newCharsSet;
- scaleDraw(co);
- }
-}
-
-static void scaleDraw(newtComponent co) {
- struct scale * sc = co->data;
- int i;
-
- if (co->top == -1) return;
-
- newtGotorc(co->top, co->left);
-
- SLsmg_set_color(NEWT_COLORSET_FULLSCALE);
- for (i = 0; i < sc->charsSet; i++)
- SLsmg_write_string(" ");
-
- SLsmg_set_color(NEWT_COLORSET_EMPTYSCALE);
- for (i = 0; i < (co->width - sc->charsSet); i++)
- SLsmg_write_string(" ");
-}
diff --git a/mdk-stage1/newt/scrollbar.c b/mdk-stage1/newt/scrollbar.c
deleted file mode 100644
index cb4bc2757..000000000
--- a/mdk-stage1/newt/scrollbar.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct scrollbar {
- int curr;
- int cs, csThumb;
- int arrows;
-} ;
-
-static void sbDraw(newtComponent co);
-static void sbDestroy(newtComponent co);
-static void sbDrawThumb(newtComponent co, int isOn);
-
-static struct componentOps sbOps = {
- sbDraw,
- newtDefaultEventHandler,
- sbDestroy,
- newtDefaultPlaceHandler,
- newtDefaultMappedHandler,
-} ;
-
-void newtScrollbarSet(newtComponent co, int where, int total) {
- struct scrollbar * sb = co->data;
- int new;
-
- if (sb->arrows)
- new = (where * (co->height - 3)) / (total ? total : 1) + 1;
- else
- new = (where * (co->height - 1)) / (total ? total : 1);
- if (new != sb->curr) {
- sbDrawThumb(co, 0);
- sb->curr = new;
- sbDrawThumb(co, 1);
- }
-}
-
-newtComponent newtVerticalScrollbar(int left, int top, int height,
- int normalColorset, int thumbColorset) {
- newtComponent co;
- struct scrollbar * sb;
-
- co = malloc(sizeof(*co));
- sb = malloc(sizeof(*sb));
- co->data = sb;
-
- if (!strcmp(getenv("TERM"), "linux") && height >= 2) {
- sb->arrows = 1;
- sb->curr = 1;
- } else {
- sb->arrows = 0;
- sb->curr = 0;
- }
- sb->cs = normalColorset;
- sb->csThumb = thumbColorset;
-
- co->ops = &sbOps;
- co->isMapped = 0;
- co->left = left;
- co->top = top;
- co->height = height;
- co->width = 1;
- co->takesFocus = 0;
-
- return co;
-}
-
-static void sbDraw(newtComponent co) {
- struct scrollbar * sb = co->data;
- int i;
-
- if (!co->isMapped) return;
-
- SLsmg_set_color(sb->cs);
-
- SLsmg_set_char_set(1);
- if (sb->arrows) {
- newtGotorc(co->top, co->left);
- SLsmg_write_char('\x2d');
- for (i = 1; i < co->height - 1; i++) {
- newtGotorc(i + co->top, co->left);
- SLsmg_write_char('\x61');
- }
- newtGotorc(co->top + co->height - 1, co->left);
- SLsmg_write_char('\x2e');
- } else {
- for (i = 0; i < co->height; i++) {
- newtGotorc(i + co->top, co->left);
- SLsmg_write_char('\x61');
- }
- }
-
- SLsmg_set_char_set(0);
-
- sbDrawThumb(co, 1);
-}
-
-static void sbDrawThumb(newtComponent co, int isOn) {
- struct scrollbar * sb = co->data;
- char ch = isOn ? '#' : '\x61';
-
- if (!co->isMapped) return;
-
- newtGotorc(sb->curr + co->top, co->left);
- SLsmg_set_char_set(1);
-
- /*if (isOn)
- SLsmg_set_color(sb->csThumb);
- else*/
- SLsmg_set_color(sb->cs);
-
- SLsmg_write_char(ch);
- SLsmg_set_char_set(0);
-}
-
-static void sbDestroy(newtComponent co) {
- struct scrollbar * sb = co->data;
-
- free(sb);
- free(co);
-}
diff --git a/mdk-stage1/newt/textbox.c b/mdk-stage1/newt/textbox.c
deleted file mode 100644
index 8eb4ae4db..000000000
--- a/mdk-stage1/newt/textbox.c
+++ /dev/null
@@ -1,409 +0,0 @@
-#include <ctype.h>
-#include <slang.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "newt.h"
-#include "newt_pr.h"
-
-struct textbox {
- char ** lines;
- int numLines;
- int linesAlloced;
- int doWrap;
- newtComponent sb;
- int topLine;
- int textWidth;
-};
-
-static char * expandTabs(const char * text);
-static void textboxDraw(newtComponent co);
-static void addLine(newtComponent co, const char * s, int len);
-static void doReflow(const char * text, char ** resultPtr, int width,
- int * badness, int * heightPtr);
-static struct eventResult textboxEvent(newtComponent c,
- struct event ev);
-static void textboxDestroy(newtComponent co);
-static void textboxPlace(newtComponent co, int newLeft, int newTop);
-static void textboxMapped(newtComponent co, int isMapped);
-
-static struct componentOps textboxOps = {
- textboxDraw,
- textboxEvent,
- textboxDestroy,
- textboxPlace,
- textboxMapped,
-} ;
-
-static void textboxMapped(newtComponent co, int isMapped) {
- struct textbox * tb = co->data;
-
- co->isMapped = isMapped;
- if (tb->sb)
- tb->sb->ops->mapped(tb->sb, isMapped);
-}
-
-static void textboxPlace(newtComponent co, int newLeft, int newTop) {
- struct textbox * tb = co->data;
-
- co->top = newTop;
- co->left = newLeft;
-
- if (tb->sb)
- tb->sb->ops->place(tb->sb, co->left + co->width - 1, co->top);
-}
-
-void newtTextboxSetHeight(newtComponent co, int height) {
- co->height = height;
-}
-
-int newtTextboxGetNumLines(newtComponent co) {
- struct textbox * tb = co->data;
-
- return (tb->numLines);
-}
-
-newtComponent newtTextboxReflowed(int left, int top, char * text, int width,
- int flexDown, int flexUp, int flags __attribute__ ((unused))) {
- newtComponent co;
- char * reflowedText;
- int actWidth, actHeight;
-
- reflowedText = newtReflowText(text, width, flexDown, flexUp,
- &actWidth, &actHeight);
-
- co = newtTextbox(left, top, actWidth, actHeight, NEWT_FLAG_WRAP);
- newtTextboxSetText(co, reflowedText);
- free(reflowedText);
-
- return co;
-}
-
-newtComponent newtTextbox(int left, int top, int width, int height, int flags) {
- newtComponent co;
- struct textbox * tb;
-
- co = malloc(sizeof(*co));
- tb = malloc(sizeof(*tb));
- co->data = tb;
-
- co->ops = &textboxOps;
-
- co->height = height;
- co->top = top;
- co->left = left;
- co->takesFocus = 0;
- co->width = width;
-
- tb->doWrap = flags & NEWT_FLAG_WRAP;
- tb->numLines = 0;
- tb->linesAlloced = 0;
- tb->lines = NULL;
- tb->topLine = 0;
- tb->textWidth = width;
-
- if (flags & NEWT_FLAG_SCROLL) {
- co->width += 2;
- tb->sb = newtVerticalScrollbar(co->left + co->width - 1, co->top,
- co->height, COLORSET_TEXTBOX, COLORSET_TEXTBOX);
- } else {
- tb->sb = NULL;
- }
-
- return co;
-}
-
-static char * expandTabs(const char * text) {
- int bufAlloced = strlen(text) + 40;
- char * buf, * dest;
- const char * src;
- int bufUsed = 0;
- int linePos = 0;
- int i;
-
- buf = malloc(bufAlloced + 1);
- for (src = text, dest = buf; *src; src++) {
- if ((bufUsed + 10) > bufAlloced) {
- bufAlloced += strlen(text) / 2;
- buf = realloc(buf, bufAlloced + 1);
- dest = buf + bufUsed;
- }
- if (*src == '\t') {
- i = 8 - (linePos & 8);
- memset(dest, ' ', i);
- dest += i, bufUsed += i, linePos += i;
- } else {
- if (*src == '\n')
- linePos = 0;
- else
- linePos++;
-
- *dest++ = *src;
- bufUsed++;
- }
- }
-
- *dest = '\0';
- return buf;
-}
-
-#define iseuckanji(c) (0xa1 <= (unsigned char)(c&0xff) && (unsigned char)(c&0xff) <= 0xfe)
-
-static void doReflow(const char * text, char ** resultPtr, int width,
- int * badness, int * heightPtr) {
- char * result = NULL;
- const char * chptr, * end;
- int i;
- int howbad = 0;
- int height = 0;
- int kanji = 0;
-
- if (resultPtr) {
- /* XXX I think this will work */
- result = malloc(strlen(text) + (strlen(text) / width) + 50);
- *result = '\0';
- }
-
- while (*text) {
- kanji = 0;
- end = strchr(text, '\n');
- if (!end)
- end = text + strlen(text);
-
- while (*text && text < end) {
- if (end - text < width) {
- if (result) {
- strncat(result, text, end - text);
- strcat(result, "\n");
- height++;
- }
-
- if (end - text < (width / 2))
- howbad += ((width / 2) - (end - text)) / 2;
- text = end;
- if (*text) text++;
- } else {
- chptr = text;
- kanji = 0;
- for ( i = 0; i < width - 1; i++ ) {
- if ( !iseuckanji(*chptr)) {
- kanji = 0;
- } else if ( kanji == 1 ) {
- kanji = 2;
- } else {
- kanji = 1;
- }
- chptr++;
- }
- if (kanji == 0) {
- while (chptr > text && !isspace(*chptr)) chptr--;
- while (chptr > text && isspace(*chptr)) chptr--;
- chptr++;
- }
-
- if (chptr-text == 1 && !isspace(*chptr))
- chptr = text + width - 1;
-
- if (chptr > text)
- howbad += width - (chptr - text) + 1;
- if (result) {
- if (kanji == 1) {
- strncat(result, text, chptr - text + 1);
- chptr++;
- kanji = 0;
- } else {
- strncat(result, text, chptr - text);
- }
- strcat(result, "\n");
- height++;
- }
-
- if (isspace(*chptr))
- text = chptr + 1;
- else
- text = chptr;
- while (isspace(*text)) text++;
- }
- }
- }
-
-// if (result) printf("result: %s\n", result);
-
- if (badness) *badness = howbad;
- if (resultPtr) *resultPtr = result;
- if (heightPtr) *heightPtr = height;
-}
-
-char * newtReflowText(char * text, int width, int flexDown, int flexUp,
- int * actualWidth, int * actualHeight) {
- int min, max;
- int i;
- char * result;
- int minbad, minbadwidth, howbad;
- char * expandedText;
-
- expandedText = expandTabs(text);
-
- if (flexDown || flexUp) {
- min = width - flexDown;
- max = width + flexUp;
-
- minbad = -1;
- minbadwidth = width;
-
- for (i = min; i <= max; i++) {
- doReflow(expandedText, NULL, i, &howbad, NULL);
-
- if (minbad == -1 || howbad < minbad) {
- minbad = howbad;
- minbadwidth = i;
- }
- }
-
- width = minbadwidth;
- }
-
- doReflow(expandedText, &result, width, NULL, actualHeight);
- free(expandedText);
- if (actualWidth) *actualWidth = width;
- return result;
-}
-
-void newtTextboxSetText(newtComponent co, const char * text) {
- const char * start, * end;
- struct textbox * tb = co->data;
- char * reflowed, * expanded;
- int badness, height;
-
- if (tb->lines) {
- free(tb->lines);
- tb->linesAlloced = tb->numLines = 0;
- }
-
- expanded = expandTabs(text);
-
- if (tb->doWrap) {
- doReflow(expanded, &reflowed, tb->textWidth, &badness, &height);
- free(expanded);
- expanded = reflowed;
- }
-
- for (start = expanded; *start; start++)
- if (*start == '\n') tb->linesAlloced++;
-
- /* This ++ leaves room for an ending line w/o a \n */
- tb->linesAlloced++;
- tb->lines = malloc(sizeof(char *) * tb->linesAlloced);
-
- start = expanded;
- while ((end = strchr(start, '\n'))) {
- addLine(co, start, end - start);
- start = end + 1;
- }
-
- if (*start)
- addLine(co, start, strlen(start));
-
- free(expanded);
-}
-
-/* This assumes the buffer is allocated properly! */
-static void addLine(newtComponent co, const char * s, int len) {
- struct textbox * tb = co->data;
-
- if (len > tb->textWidth) len = tb->textWidth;
-
- tb->lines[tb->numLines] = malloc(tb->textWidth + 1);
- memset(tb->lines[tb->numLines], ' ', tb->textWidth);
- memcpy(tb->lines[tb->numLines], s, len);
- tb->lines[tb->numLines++][tb->textWidth] = '\0';
-}
-
-static void textboxDraw(newtComponent c) {
- int i;
- struct textbox * tb = c->data;
- int size;
-
- if (tb->sb) {
- size = tb->numLines - c->height;
- newtScrollbarSet(tb->sb, tb->topLine, size ? size : 0);
- tb->sb->ops->draw(tb->sb);
- }
-
- SLsmg_set_color(NEWT_COLORSET_TEXTBOX);
-
- for (i = 0; (i + tb->topLine) < tb->numLines && i < c->height; i++) {
- newtGotorc(c->top + i, c->left);
- SLsmg_write_string(tb->lines[i + tb->topLine]);
- }
-}
-
-static struct eventResult textboxEvent(newtComponent co,
- struct event ev) {
- struct textbox * tb = co->data;
- struct eventResult er;
-
- er.result = ER_IGNORED;
-
- if (ev.when == EV_EARLY && ev.event == EV_KEYPRESS && tb->sb) {
- switch (ev.u.key) {
- case NEWT_KEY_UP:
- if (tb->topLine) tb->topLine--;
- textboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_DOWN:
- if (tb->topLine < (tb->numLines - co->height)) tb->topLine++;
- textboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_PGDN:
- tb->topLine += co->height;
- if (tb->topLine > (tb->numLines - co->height)) {
- tb->topLine = tb->numLines - co->height;
- if (tb->topLine < 0) tb->topLine = 0;
- }
- textboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
-
- case NEWT_KEY_PGUP:
- tb->topLine -= co->height;
- if (tb->topLine < 0) tb->topLine = 0;
- textboxDraw(co);
- er.result = ER_SWALLOWED;
- break;
- }
- }
- if (ev.when == EV_EARLY && ev.event == EV_MOUSE && tb->sb) {
- /* Top scroll arrow */
- if (ev.u.mouse.x == co->width && ev.u.mouse.y == co->top) {
- if (tb->topLine) tb->topLine--;
- textboxDraw(co);
-
- er.result = ER_SWALLOWED;
- }
- /* Bottom scroll arrow */
- if (ev.u.mouse.x == co->width &&
- ev.u.mouse.y == co->top + co->height - 1) {
- if (tb->topLine < (tb->numLines - co->height)) tb->topLine++;
- textboxDraw(co);
-
- er.result = ER_SWALLOWED;
- }
- }
- return er;
-}
-
-static void textboxDestroy(newtComponent co) {
- int i;
- struct textbox * tb = co->data;
-
- for (i = 0; i < tb->numLines; i++)
- free(tb->lines[i]);
- free(tb->lines);
- free(tb);
- free(co);
-}
diff --git a/mdk-stage1/newt/windows.c b/mdk-stage1/newt/windows.c
deleted file mode 100644
index 30a8d526c..000000000
--- a/mdk-stage1/newt/windows.c
+++ /dev/null
@@ -1,275 +0,0 @@
-#include <errno.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "errno.h"
-#include "newt.h"
-
-static void * newtvwindow(char * title, char * button1, char * button2,
- char * button3, char * message, va_list args) {
- newtComponent b1, b2 = NULL, b3 = NULL, t, f, answer;
- char * buf = NULL;
- int size = 0;
- int i = 0;
- int scroll = 0;
- int width, height;
- char * flowedText;
- newtGrid grid, buttonGrid;
-
- do {
- size += 1000;
- if (buf) free(buf);
- buf = malloc(size);
- i = vsnprintf(buf, size, message, args);
- } while (i >= size || i == -1);
-
- flowedText = newtReflowText(buf, 50, 5, 5, &width, &height);
- if (height > 6) {
- free(flowedText);
- flowedText = newtReflowText(buf, 60, 5, 5, &width, &height);
- }
- free(buf);
-
- if (height > 12) {
- height = 12;
- scroll = NEWT_FLAG_SCROLL;
- }
- t = newtTextbox(-1, -1, width, height, NEWT_TEXTBOX_WRAP | scroll);
- newtTextboxSetText(t, flowedText);
- free(flowedText);
-
- if (button3) {
- buttonGrid = newtButtonBar(button1, &b1, button2, &b2,
- button3, &b3, NULL);
- } else if (button2) {
- buttonGrid = newtButtonBar(button1, &b1, button2, &b2, NULL);
- } else {
- buttonGrid = newtButtonBar(button1, &b1, NULL);
- }
-
- newtGridSetField(buttonGrid, 0, 0, NEWT_GRID_COMPONENT, b1,
- 0, 0, button2 ? 1 : 0, 0, 0, 0);
-
- grid = newtCreateGrid(1, 2);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, t, 0, 0, 0, 0, 0, 0);
- newtGridSetField(grid, 0, 1, NEWT_GRID_SUBGRID, buttonGrid,
- 0, 1, 0, 0, 0, NEWT_GRID_FLAG_GROWX);
- newtGridWrappedWindow(grid, title);
-
- f = newtForm(NULL, NULL, 0);
- newtFormAddComponents(f, t, b1, NULL);
-
- if (button2)
- newtFormAddComponent(f, b2);
- if (button3)
- newtFormAddComponent(f, b3);
-
- answer = newtRunForm(f);
- newtGridFree(grid, 1);
-
- newtFormDestroy(f);
- newtPopWindow();
-
- if (answer == f)
- return NULL;
- else if (answer == b1)
- return button1;
- else if (answer == b2)
- return button2;
-
- return button3;
-}
-
-int newtWinChoice(char * title, char * button1, char * button2,
- char * message, ...) {
- va_list args;
- void * rc;
-
- va_start(args, message);
- rc = newtvwindow(title, button1, button2, NULL, message, args);
- va_end(args);
-
- if (rc == button1)
- return 1;
- else if (rc == button2)
- return 2;
-
- return 0;
-}
-
-void newtWinMessage(char * title, char * buttonText, char * text, ...) {
- va_list args;
-
- va_start(args, text);
- newtvwindow(title, buttonText, NULL, NULL, text, args);
- va_end(args);
-}
-
-void newtWinMessagev(char * title, char * buttonText, char * text,
- va_list argv) {
- newtvwindow(title, buttonText, NULL, NULL, text, argv);
-}
-
-int newtWinTernary(char * title, char * button1, char * button2,
- char * button3, char * message, ...) {
- va_list args;
- void * rc;
-
- va_start(args, message);
- rc = newtvwindow(title, button1, button2, button3, message, args);
- va_end(args);
-
- if (rc == button1)
- return 1;
- else if (rc == button2)
- return 2;
- else if (rc == button3)
- return 3;
-
- return 0;
-}
-
-/* only supports up to 50 buttons -- shucks! */
-int newtWinMenu(char * title, char * text, int suggestedWidth, int flexDown,
- int flexUp, int maxListHeight, char ** items, int * listItem,
- char * button1, ...) {
- newtComponent textbox, listbox, result, form;
- va_list args;
- newtComponent buttons[50];
- newtGrid grid, buttonBar;
- int numButtons;
- int i, rc;
- int needScroll;
- char * buttonName;
-
- textbox = newtTextboxReflowed(-1, -1, text, suggestedWidth, flexDown,
- flexUp, 0);
-
- for (i = 0; items[i]; i++) ;
- if (i < maxListHeight) maxListHeight = i;
- needScroll = i > maxListHeight;
-
- listbox = newtListbox(-1, -1, maxListHeight,
- (needScroll ? NEWT_FLAG_SCROLL : 0) | NEWT_FLAG_RETURNEXIT);
- for (i = 0; items[i]; i++) {
- newtListboxAddEntry(listbox, items[i], (void *) (long)i);
- }
-
- newtListboxSetCurrent(listbox, *listItem);
-
- buttonName = button1, numButtons = 0;
- va_start(args, button1);
- while (buttonName) {
- buttons[numButtons] = newtButton(-1, -1, buttonName);
- numButtons++;
- buttonName = va_arg(args, char *);
- }
-
- va_end(args);
-
- buttonBar = newtCreateGrid(numButtons, 1);
- for (i = 0; i < numButtons; i++) {
- newtGridSetField(buttonBar, i, 0, NEWT_GRID_COMPONENT,
- buttons[i],
- i ? 1 : 0, 0, 0, 0, 0, 0);
- }
-
- grid = newtGridSimpleWindow(textbox, listbox, buttonBar);
- newtGridWrappedWindow(grid, title);
-
- form = newtForm(NULL, 0, 0);
- newtGridAddComponentsToForm(grid, form, 1);
- newtGridFree(grid, 1);
-
- result = newtRunForm(form);
-
- *listItem = ((long) newtListboxGetCurrent(listbox));
-
- for (rc = 0; result != buttons[rc] && rc < numButtons; rc++);
- if (rc == numButtons)
- rc = 0; /* F12 or return-on-exit (which are the same for us) */
- else
- rc++;
-
- newtFormDestroy(form);
- newtPopWindow();
-
- return rc;
-}
-
-/* only supports up to 50 buttons and entries -- shucks! */
-int newtWinEntries(char * title, char * text, int suggestedWidth, int flexDown,
- int flexUp, int dataWidth,
- struct newtWinEntry * items, char * button1, ...) {
- newtComponent buttons[50], result, form, textw;
- newtGrid grid, buttonBar, subgrid;
- int numItems;
- int rc, i;
- int numButtons;
- char * buttonName;
- va_list args;
-
- textw = newtTextboxReflowed(-1, -1, text, suggestedWidth, flexDown,
- flexUp, 0);
-
- for (numItems = 0; items[numItems].text; numItems++);
-
- buttonName = button1, numButtons = 0;
- va_start(args, button1);
- while (buttonName) {
- buttons[numButtons] = newtButton(-1, -1, buttonName);
- numButtons++;
- buttonName = va_arg(args, char *);
- }
-
- va_end(args);
-
- buttonBar = newtCreateGrid(numButtons, 1);
- for (i = 0; i < numButtons; i++) {
- newtGridSetField(buttonBar, i, 0, NEWT_GRID_COMPONENT,
- buttons[i],
- i ? 1 : 0, 0, 0, 0, 0, 0);
- }
-
- subgrid = newtCreateGrid(2, numItems);
- for (i = 0; i < numItems; i++) {
- newtGridSetField(subgrid, 0, i, NEWT_GRID_COMPONENT,
- newtLabel(-1, -1, items[i].text),
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(subgrid, 1, i, NEWT_GRID_COMPONENT,
- newtEntry(-1, -1, items[i].value ?
- *items[i].value : NULL, dataWidth,
- items[i].value, items[i].flags),
- 1, 0, 0, 0, 0, 0);
- }
-
- grid = newtCreateGrid(1, 3);
- form = newtForm(NULL, 0, 0);
- newtGridSetField(grid, 0, 0, NEWT_GRID_COMPONENT, textw,
- 0, 0, 0, 0, NEWT_ANCHOR_LEFT, 0);
- newtGridSetField(grid, 0, 1, NEWT_GRID_SUBGRID, subgrid,
- 0, 1, 0, 0, 0, 0);
- newtGridSetField(grid, 0, 2, NEWT_GRID_SUBGRID, buttonBar,
- 0, 1, 0, 0, 0, NEWT_GRID_FLAG_GROWX);
- newtGridAddComponentsToForm(grid, form, 1);
- newtGridWrappedWindow(grid, title);
- newtGridFree(grid, 1);
-
- result = newtRunForm(form);
-
- for (rc = 0; rc < numItems; rc++)
- *items[rc].value = strdup(*items[rc].value);
-
- for (rc = 0; result != buttons[rc] && rc < numButtons; rc++);
- if (rc == numButtons)
- rc = 0; /* F12 */
- else
- rc++;
-
- newtFormDestroy(form);
- newtPopWindow();
-
- return rc;
-}
diff --git a/mdk-stage1/nfs_mount4.h b/mdk-stage1/nfs_mount4.h
deleted file mode 100644
index 85650773a..000000000
--- a/mdk-stage1/nfs_mount4.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * We want to be able to compile mount on old kernels in such a way
- * that the binary will work well on more recent kernels.
- * Thus, if necessary we teach nfsmount.c the structure of new fields
- * that will come later.
- *
- * Moreover, the new kernel includes conflict with glibc includes
- * so it is easiest to ignore the kernel altogether (at compile time).
- */
-
-#define NFS_MOUNT_VERSION 4
-
-struct nfs2_fh {
- char data[32];
-};
-struct nfs3_fh {
- unsigned short size;
- unsigned char data[64];
-};
-
-struct nfs_mount_data {
- int version; /* 1 */
- int fd; /* 1 */
- struct nfs2_fh old_root; /* 1 */
- int flags; /* 1 */
- int rsize; /* 1 */
- int wsize; /* 1 */
- int timeo; /* 1 */
- int retrans; /* 1 */
- int acregmin; /* 1 */
- int acregmax; /* 1 */
- int acdirmin; /* 1 */
- int acdirmax; /* 1 */
- struct sockaddr_in addr; /* 1 */
- char hostname[256]; /* 1 */
- int namlen; /* 2 */
- unsigned int bsize; /* 3 */
- struct nfs3_fh root; /* 4 */
-};
-
-/* bits in the flags field */
-
-#define NFS_MOUNT_SOFT 0x0001 /* 1 */
-#define NFS_MOUNT_INTR 0x0002 /* 1 */
-#define NFS_MOUNT_SECURE 0x0004 /* 1 */
-#define NFS_MOUNT_POSIX 0x0008 /* 1 */
-#define NFS_MOUNT_NOCTO 0x0010 /* 1 */
-#define NFS_MOUNT_NOAC 0x0020 /* 1 */
-#define NFS_MOUNT_TCP 0x0040 /* 2 */
-#define NFS_MOUNT_VER3 0x0080 /* 3 */
-#define NFS_MOUNT_KERBEROS 0x0100 /* 3 */
-#define NFS_MOUNT_NONLM 0x0200 /* 3 */
-#define NFS_MOUNT_BROKEN_SUID 0x0400 /* 4 */
-
diff --git a/mdk-stage1/nfsmount.c b/mdk-stage1/nfsmount.c
deleted file mode 100644
index 55a0b0b1e..000000000
--- a/mdk-stage1/nfsmount.c
+++ /dev/null
@@ -1,740 +0,0 @@
- /*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2003 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * basing on nfsmount.c from util-linux-2.11z:
- * - use our logging facilities
- * - use our host resolving stuff
- * - remove unneeded code
- */
-
-/*
- * nfsmount.c -- Linux NFS mount
- * Copyright (C) 1993 Rick Sladkey <jrs@world.std.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 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * Wed Feb 8 12:51:48 1995, biro@yggdrasil.com (Ross Biro): allow all port
- * numbers to be specified on the command line.
- *
- * Fri, 8 Mar 1996 18:01:39, Swen Thuemmler <swen@uni-paderborn.de>:
- * Omit the call to connect() for Linux version 1.3.11 or later.
- *
- * Wed Oct 1 23:55:28 1997: Dick Streefland <dick_streefland@tasking.com>
- * Implemented the "bg", "fg" and "retry" mount options for NFS.
- *
- * 1999-02-22 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
- * - added Native Language Support
- *
- * Modified by Olaf Kirch and Trond Myklebust for new NFS code,
- * plus NFSv3 stuff.
- *
- * 2003-04-14 David Black <david.black@xilinx.com>
- * - added support for multiple hostname NFS mounts
- */
-
-/*
- * nfsmount.c,v 1.1.1.1 1993/11/18 08:40:51 jrs Exp
- */
-
-#define HAVE_rpcsvc_nfs_prot_h
-#define HAVE_inet_aton
-
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <netdb.h>
-#include <time.h>
-#include <rpc/rpc.h>
-#include <rpc/pmap_prot.h>
-#include <rpc/pmap_clnt.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <sys/utsname.h>
-#include <sys/stat.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <values.h>
-
-#include "nfsmount.h"
-
-#ifdef HAVE_rpcsvc_nfs_prot_h
-#include <rpcsvc/nfs_prot.h>
-#else
-#include <linux/nfs.h>
-#define nfsstat nfs_stat
-#endif
-
-#include "nfs_mount4.h"
-
-#include "log.h"
-#include "dns.h"
-
-#ifndef NFS_PORT
-#define NFS_PORT 2049
-#endif
-#ifndef NFS_FHSIZE
-#define NFS_FHSIZE 32
-#endif
-
-static char *nfs_strerror(int stat);
-
-#define MAKE_VERSION(p,q,r) (65536*(p) + 256*(q) + (r))
-
-#define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2)
-
-bool_t
-xdr_fhandle3 (XDR *xdrs, fhandle3 *objp)
-{
- if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_mountstat3 (XDR *xdrs, mountstat3 *objp)
-{
- if (!xdr_enum (xdrs, (enum_t *) objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp)
-{
- if (!xdr_fhandle3 (xdrs, &objp->fhandle))
- return FALSE;
- if (!xdr_array (xdrs, (char **)&objp->auth_flavours.auth_flavours_val, (u_int *) &objp->auth_flavours.auth_flavours_len, ~0,
- sizeof (int), (xdrproc_t) xdr_int))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_mountres3 (XDR *xdrs, mountres3 *objp)
-{
- if (!xdr_mountstat3 (xdrs, &objp->fhs_status))
- return FALSE;
- switch (objp->fhs_status) {
- case MNT_OK:
- if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_dirpath (XDR *xdrs, dirpath *objp)
-{
- if (!xdr_string (xdrs, objp, MNTPATHLEN))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_fhandle (XDR *xdrs, fhandle objp)
-{
- if (!xdr_opaque (xdrs, objp, FHSIZE))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_fhstatus (XDR *xdrs, fhstatus *objp)
-{
- if (!xdr_u_int (xdrs, &objp->fhs_status))
- return FALSE;
- switch (objp->fhs_status) {
- case 0:
- if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-
-static int
-linux_version_code(void) {
- struct utsname my_utsname;
- int p, q, r;
-
- if (uname(&my_utsname) == 0) {
- p = atoi(strtok(my_utsname.release, "."));
- q = atoi(strtok(NULL, "."));
- r = atoi(strtok(NULL, "."));
- return MAKE_VERSION(p,q,r);
- }
- return 0;
-}
-
-/*
- * Unfortunately, the kernel prints annoying console messages
- * in case of an unexpected nfs mount version (instead of
- * just returning some error). Therefore we'll have to try
- * and figure out what version the kernel expects.
- *
- * Variables:
- * NFS_MOUNT_VERSION: these nfsmount sources at compile time
- * nfs_mount_version: version this source and running kernel can handle
- */
-static int
-find_kernel_nfs_mount_version(void) {
- static int kernel_version = -1;
- int nfs_mount_version = NFS_MOUNT_VERSION;
-
- if (kernel_version == -1)
- kernel_version = linux_version_code();
-
- if (kernel_version) {
- if (kernel_version < MAKE_VERSION(2,1,32))
- nfs_mount_version = 1;
- else if (kernel_version < MAKE_VERSION(2,2,18))
- nfs_mount_version = 3;
- else if (kernel_version < MAKE_VERSION(2,3,0))
- nfs_mount_version = 4; /* since 2.2.18pre9 */
- else if (kernel_version < MAKE_VERSION(2,3,99))
- nfs_mount_version = 3;
- else
- nfs_mount_version = 4; /* since 2.3.99pre4 */
- }
- if (nfs_mount_version > NFS_MOUNT_VERSION)
- nfs_mount_version = NFS_MOUNT_VERSION;
- log_message("nfsmount: kernel_nfs_mount_version: %d", nfs_mount_version);
- return nfs_mount_version;
-}
-
-static struct pmap *
-get_mountport(struct sockaddr_in *server_addr,
- long unsigned prog,
- long unsigned version,
- long unsigned proto,
- long unsigned port,
- int nfs_mount_version)
-{
- struct pmaplist *pmap;
- static struct pmap p = {0, 0, 0, 0};
-
- if (version > MAX_NFSPROT)
- version = MAX_NFSPROT;
- if (!prog)
- prog = MOUNTPROG;
- p.pm_prog = prog;
- p.pm_vers = version;
- p.pm_prot = proto;
- p.pm_port = port;
-
- server_addr->sin_port = PMAPPORT;
- pmap = pmap_getmaps(server_addr);
-
- while (pmap) {
- if (pmap->pml_map.pm_prog != prog)
- goto next;
- if (!version && p.pm_vers > pmap->pml_map.pm_vers)
- goto next;
- if (version > 2 && pmap->pml_map.pm_vers != version)
- goto next;
- if (version && version <= 2 && pmap->pml_map.pm_vers > 2)
- goto next;
- if (pmap->pml_map.pm_vers > MAX_NFSPROT ||
- (proto && p.pm_prot && pmap->pml_map.pm_prot != proto) ||
- (port && pmap->pml_map.pm_port != port))
- goto next;
- memcpy(&p, &pmap->pml_map, sizeof(p));
- next:
- pmap = pmap->pml_next;
- }
- if (!p.pm_vers)
- p.pm_vers = MOUNTVERS;
- if (!p.pm_prot)
- p.pm_prot = IPPROTO_TCP;
- return &p;
-}
-
-
-
-int nfsmount_prepare(const char *spec, char **mount_opts)
-{
- char hostdir[1024];
- CLIENT *mclient;
- char *hostname, *dirname, *mounthost = NULL;
- struct timeval total_timeout;
- enum clnt_stat clnt_stat;
- static struct nfs_mount_data data;
- int nfs_mount_version;
- int val;
- struct sockaddr_in server_addr;
- struct sockaddr_in mount_server_addr;
- struct pmap *pm_mnt;
- int msock, fsock;
- struct timeval retry_timeout;
- union {
- struct fhstatus nfsv2;
- struct mountres3 nfsv3;
- } status;
- char *s;
- int port, mountport, proto, soft, intr;
- int posix, nocto, noac, broken_suid, nolock;
- int retry, tcp;
- int mountprog, mountvers, nfsprog, nfsvers;
- int retval;
- time_t t;
- time_t prevt;
- time_t timeout;
-
- nfs_mount_version = find_kernel_nfs_mount_version();
-
- retval = -1;
- msock = fsock = -1;
- mclient = NULL;
- if (strlen(spec) >= sizeof(hostdir)) {
- log_message("nfsmount: excessively long host:dir argument");
- goto fail;
- }
- strcpy(hostdir, spec);
- if ((s = strchr(hostdir, ':'))) {
- hostname = hostdir;
- dirname = s + 1;
- *s = '\0';
- } else {
- log_message("nfsmount: directory to mount not in host:dir format");
- goto fail;
- }
-
- server_addr.sin_family = AF_INET;
-#ifdef HAVE_inet_aton
- if (!inet_aton(hostname, &server_addr.sin_addr))
-#endif
- {
- if (mygethostbyname(hostname, &server_addr.sin_addr)) {
- log_message("nfsmount: can't get address for %s", hostname);
- goto fail;
- }
- }
-
- memcpy (&mount_server_addr, &server_addr, sizeof (mount_server_addr));
-
-
-
- /* Set default options.
- * rsize/wsize are set to 8192 to enable nfs install on
- * old i586 machines
- * timeo is filled in after we know whether it'll be TCP or UDP. */
- memset(&data, 0, sizeof(data));
- data.rsize = 8192;
- data.wsize = 8192;
- data.retrans = 30;
- data.acregmin = 3;
- data.acregmax = 60;
- data.acdirmin = 30;
- data.acdirmax = 60;
-#if NFS_MOUNT_VERSION >= 2
- data.namlen = NAME_MAX;
-#endif
-
- soft = 1;
- intr = 0;
- posix = 0;
- nocto = 0;
- nolock = 1;
- broken_suid = 0;
- noac = 0;
- retry = 10000; /* 10000 minutes ~ 1 week */
- tcp = 0;
-
- mountprog = MOUNTPROG;
- mountvers = 0;
- port = 0;
- mountport = 0;
- nfsprog = NFS_PROGRAM;
- nfsvers = 0;
-
-
-
-retry_mount:
- proto = (tcp) ? IPPROTO_TCP : IPPROTO_UDP;
-
- data.flags = (soft ? NFS_MOUNT_SOFT : 0)
- | (intr ? NFS_MOUNT_INTR : 0)
- | (posix ? NFS_MOUNT_POSIX : 0)
- | (nocto ? NFS_MOUNT_NOCTO : 0)
- | (noac ? NFS_MOUNT_NOAC : 0);
-#if NFS_MOUNT_VERSION >= 2
- if (nfs_mount_version >= 2)
- data.flags |= (tcp ? NFS_MOUNT_TCP : 0);
-#endif
-#if NFS_MOUNT_VERSION >= 3
- if (nfs_mount_version >= 3)
- data.flags |= (nolock ? NFS_MOUNT_NONLM : 0);
-#endif
-#if NFS_MOUNT_VERSION >= 4
- if (nfs_mount_version >= 4)
- data.flags |= (broken_suid ? NFS_MOUNT_BROKEN_SUID : 0);
-#endif
- if (nfsvers > MAX_NFSPROT) {
- log_message("NFSv%d not supported!", nfsvers);
- return 0;
- }
- if (mountvers > MAX_NFSPROT) {
- log_message("NFSv%d not supported!", nfsvers);
- return 0;
- }
- if (nfsvers && !mountvers)
- mountvers = (nfsvers < 3) ? 1 : nfsvers;
- if (nfsvers && nfsvers < mountvers)
- mountvers = nfsvers;
-
- /* Adjust options if none specified */
- if (!data.timeo)
- data.timeo = tcp ? 70 : 7;
-
-#ifdef NFS_MOUNT_DEBUG
- log_message("rsize = %d, wsize = %d, timeo = %d, retrans = %d",
- data.rsize, data.wsize, data.timeo, data.retrans);
- log_message("acreg (min, max) = (%d, %d), acdir (min, max) = (%d, %d)",
- data.acregmin, data.acregmax, data.acdirmin, data.acdirmax);
- log_message("port = %d, retry = %d, flags = %.8x",
- port, retry, data.flags);
- log_message("mountprog = %d, mountvers = %d, nfsprog = %d, nfsvers = %d",
- mountprog, mountvers, nfsprog, nfsvers);
- log_message("soft = %d, intr = %d, posix = %d, nocto = %d, noac = %d",
- (data.flags & NFS_MOUNT_SOFT) != 0,
- (data.flags & NFS_MOUNT_INTR) != 0,
- (data.flags & NFS_MOUNT_POSIX) != 0,
- (data.flags & NFS_MOUNT_NOCTO) != 0,
- (data.flags & NFS_MOUNT_NOAC) != 0);
-#if NFS_MOUNT_VERSION >= 2
- log_message("tcp = %d",
- (data.flags & NFS_MOUNT_TCP) != 0);
-#endif
-#endif
-
- data.version = nfs_mount_version;
- *mount_opts = (char *) &data;
-
-
- /* create mount deamon client */
- /* See if the nfs host = mount host. */
- if (mounthost) {
- if (mounthost[0] >= '0' && mounthost[0] <= '9') {
- mount_server_addr.sin_family = AF_INET;
- mount_server_addr.sin_addr.s_addr = inet_addr(hostname);
- } else {
- if (mygethostbyname(mounthost, &mount_server_addr.sin_addr)) {
- log_message("nfsmount: can't get address for %s", mounthost);
- goto fail;
- }
- }
- }
-
- /*
- * The following loop implements the mount retries. On the first
- * call, "running_bg" is 0. When the mount times out, and the
- * "bg" option is set, the exit status EX_BG will be returned.
- * For a backgrounded mount, there will be a second call by the
- * child process with "running_bg" set to 1.
- *
- * The case where the mount point is not present and the "bg"
- * option is set, is treated as a timeout. This is done to
- * support nested mounts.
- *
- * The "retry" count specified by the user is the number of
- * minutes to retry before giving up.
- *
- * Only the first error message will be displayed.
- */
- retry_timeout.tv_sec = 3;
- retry_timeout.tv_usec = 0;
- total_timeout.tv_sec = 20;
- total_timeout.tv_usec = 0;
- timeout = time(NULL) + 60 * retry;
- prevt = 0;
- t = 30;
- val = 1;
-
-
- /* be careful not to use too many CPU cycles */
- if (t - prevt < 30)
- sleep(30);
-
- pm_mnt = get_mountport(&mount_server_addr,
- mountprog,
- mountvers,
- proto,
- mountport,
- nfs_mount_version);
-
- /* contact the mount daemon via TCP */
- mount_server_addr.sin_port = htons(pm_mnt->pm_port);
- msock = RPC_ANYSOCK;
-
- switch (pm_mnt->pm_prot) {
- case IPPROTO_UDP:
- mclient = clntudp_create(&mount_server_addr,
- pm_mnt->pm_prog,
- pm_mnt->pm_vers,
- retry_timeout,
- &msock);
- if (mclient)
- break;
- mount_server_addr.sin_port =
- htons(pm_mnt->pm_port);
- msock = RPC_ANYSOCK;
- case IPPROTO_TCP:
- mclient = clnttcp_create(&mount_server_addr,
- pm_mnt->pm_prog,
- pm_mnt->pm_vers,
- &msock, 0, 0);
- break;
- default:
- mclient = 0;
- }
-
- if (mclient) {
- /* try to mount hostname:dirname */
- mclient->cl_auth = authunix_create_default();
-
- /* make pointers in xdr_mountres3 NULL so
- * that xdr_array allocates memory for us
- */
- memset(&status, 0, sizeof(status));
-
- log_message("nfsmount: doing client call in nfs version: %ld", pm_mnt->pm_vers);
- if (pm_mnt->pm_vers == 3)
- clnt_stat = clnt_call(mclient,
- MOUNTPROC3_MNT,
- (xdrproc_t) xdr_dirpath,
- (caddr_t) &dirname,
- (xdrproc_t) xdr_mountres3,
- (caddr_t) &status,
- total_timeout);
- else
- clnt_stat = clnt_call(mclient,
- MOUNTPROC_MNT,
- (xdrproc_t) xdr_dirpath,
- (caddr_t) &dirname,
- (xdrproc_t) xdr_fhstatus,
- (caddr_t) &status,
- total_timeout);
-
- if (clnt_stat == RPC_SUCCESS)
- goto succeeded;
-
- if (prevt == 0)
- log_message("could not call server: probably protocol or version error");
- auth_destroy(mclient->cl_auth);
- clnt_destroy(mclient);
- mclient = 0;
- close(msock);
- } else {
- log_message("could not create rpc client: host probably not found or NFS server is down");
- }
- prevt = t;
-
- goto fail;
-
- succeeded:
- nfsvers = (pm_mnt->pm_vers < 2) ? 2 : pm_mnt->pm_vers;
-
- if (nfsvers == 2) {
- if (status.nfsv2.fhs_status != 0) {
- log_message("nfsmount: %s:%s failed, reason given by server: %s",
- hostname, dirname, nfs_strerror(status.nfsv2.fhs_status));
- goto fail;
- }
- memcpy(data.root.data,
- (char *) status.nfsv2.fhstatus_u.fhs_fhandle,
- NFS_FHSIZE);
-#if NFS_MOUNT_VERSION >= 4
- data.root.size = NFS_FHSIZE;
- memcpy(data.old_root.data,
- (char *) status.nfsv2.fhstatus_u.fhs_fhandle,
- NFS_FHSIZE);
-#endif
- } else {
-#if NFS_MOUNT_VERSION >= 4
- fhandle3 *fhandle;
- if (status.nfsv3.fhs_status != 0) {
- log_message("nfsmount: %s:%s failed, reason given by server: %s",
- hostname, dirname, nfs_strerror(status.nfsv3.fhs_status));
- goto fail;
- }
- fhandle = &status.nfsv3.mountres3_u.mountinfo.fhandle;
- memset(data.old_root.data, 0, NFS_FHSIZE);
- memset(&data.root, 0, sizeof(data.root));
- data.root.size = fhandle->fhandle3_len;
- memcpy(data.root.data,
- (char *) fhandle->fhandle3_val,
- fhandle->fhandle3_len);
-
- data.flags |= NFS_MOUNT_VER3;
-#endif
- }
-
- /* create nfs socket for kernel */
-
- if (tcp) {
- if (nfs_mount_version < 3) {
- log_message("NFS over TCP is not supported.");
- goto fail;
- }
- fsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- } else
- fsock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if (fsock < 0) {
- log_perror("nfs socket");
- goto fail;
- }
- if (bindresvport(fsock, 0) < 0) {
- log_perror("nfs bindresvport");
- goto fail;
- }
- if (port == 0) {
- server_addr.sin_port = PMAPPORT;
- port = pmap_getport(&server_addr, nfsprog, nfsvers,
- tcp ? IPPROTO_TCP : IPPROTO_UDP);
-#if 1
- /* Here we check to see if user is mounting with the
- * tcp option. If so, and if the portmap returns a
- * '0' for port (service unavailable), we then notify
- * the user, and retry with udp.
- */
- if (port == 0 && tcp == 1) {
- log_message("NFS server reported TCP not available, retrying with UDP...");
- tcp = 0;
- goto retry_mount;
- }
-#endif
-
- if (port == 0)
- port = NFS_PORT;
-#ifdef NFS_MOUNT_DEBUG
- else
- log_message("used portmapper to find NFS port");
-#endif
- }
-#ifdef NFS_MOUNT_DEBUG
- log_message("using port %d for nfs deamon", port);
-#endif
- server_addr.sin_port = htons(port);
- /*
- * connect() the socket for kernels 1.3.10 and below only,
- * to avoid problems with multihomed hosts.
- * --Swen
- */
- if (linux_version_code() <= 66314
- && connect(fsock, (struct sockaddr *) &server_addr,
- sizeof (server_addr)) < 0) {
- log_perror("nfs connect");
- goto fail;
- }
-
- /* prepare data structure for kernel */
-
- data.fd = fsock;
- memcpy((char *) &data.addr, (char *) &server_addr, sizeof(data.addr));
- strncpy(data.hostname, hostname, sizeof(data.hostname));
-
- /* clean up */
-
- auth_destroy(mclient->cl_auth);
- clnt_destroy(mclient);
- close(msock);
- return 0;
-
- /* abort */
-
- fail:
- if (msock != -1) {
- if (mclient) {
- auth_destroy(mclient->cl_auth);
- clnt_destroy(mclient);
- }
- close(msock);
- }
- if (fsock != -1)
- close(fsock);
- return retval;
-}
-
-/*
- * We need to translate between nfs status return values and
- * the local errno values which may not be the same.
- *
- * Andreas Schwab <schwab@LS5.informatik.uni-dortmund.de>: change errno:
- * "after #include <errno.h> the symbol errno is reserved for any use,
- * it cannot even be used as a struct tag or field name".
- */
-
-#ifndef EDQUOT
-#define EDQUOT ENOSPC
-#endif
-
-static struct {
- enum nfsstat stat;
- int errnum;
-} nfs_errtbl[] = {
- { NFS_OK, 0 },
- { NFSERR_PERM, EPERM },
- { NFSERR_NOENT, ENOENT },
- { NFSERR_IO, EIO },
- { NFSERR_NXIO, ENXIO },
- { NFSERR_ACCES, EACCES },
- { NFSERR_EXIST, EEXIST },
- { NFSERR_NODEV, ENODEV },
- { NFSERR_NOTDIR, ENOTDIR },
- { NFSERR_ISDIR, EISDIR },
-#ifdef NFSERR_INVAL
- { NFSERR_INVAL, EINVAL }, /* that Sun forgot */
-#endif
- { NFSERR_FBIG, EFBIG },
- { NFSERR_NOSPC, ENOSPC },
- { NFSERR_ROFS, EROFS },
- { NFSERR_NAMETOOLONG, ENAMETOOLONG },
- { NFSERR_NOTEMPTY, ENOTEMPTY },
- { NFSERR_DQUOT, EDQUOT },
- { NFSERR_STALE, ESTALE },
-#ifdef EWFLUSH
- { NFSERR_WFLUSH, EWFLUSH },
-#endif
- /* Throw in some NFSv3 values for even more fun (HP returns these) */
- { 71, EREMOTE },
-
- { -1, EIO }
-};
-
-static char *nfs_strerror(int stat)
-{
- int i;
- static char buf[256];
-
- for (i = 0; nfs_errtbl[i].stat != (unsigned)-1; i++) {
- if (nfs_errtbl[i].stat == (unsigned)stat)
- return strerror(nfs_errtbl[i].errnum);
- }
- sprintf(buf, "unknown nfs status return value: %d", stat);
- return buf;
-}
-
diff --git a/mdk-stage1/nfsmount.h b/mdk-stage1/nfsmount.h
deleted file mode 100644
index a27e8a8d7..000000000
--- a/mdk-stage1/nfsmount.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Please do not edit this file.
- * It was generated using rpcgen.
- */
-
-#ifndef _NFSMOUNT_H_RPCGEN
-#define _NFSMOUNT_H_RPCGEN
-
-#include <rpc/rpc.h>
-
-int nfsmount_prepare(const char *spec, char **mount_opts);
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
- * unrestricted use provided that this legend is included on all tape
- * media and as a part of the software program in whole or part. Users
- * may copy or modify Sun RPC without charge, but are not authorized
- * to license or distribute it to anyone else except as part of a product or
- * program developed by the user or with the express written consent of
- * Sun Microsystems, Inc.
- *
- * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
- * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
- *
- * Sun RPC is provided with no support and without any obligation on the
- * part of Sun Microsystems, Inc. to assist in its use, correction,
- * modification or enhancement.
- *
- * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
- * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
- * OR ANY PART THEREOF.
- *
- * In no event will Sun Microsystems, Inc. be liable for any lost revenue
- * or profits or other special, indirect and consequential damages, even if
- * Sun has been advised of the possibility of such damages.
- *
- * Sun Microsystems, Inc.
- * 2550 Garcia Avenue
- * Mountain View, California 94043
- */
-/*
- * Copyright (c) 1985, 1990 by Sun Microsystems, Inc.
- */
-
-/* from @(#)mount.x 1.3 91/03/11 TIRPC 1.0 */
-#ifndef _rpcsvc_mount_h
-#define _rpcsvc_mount_h
-#include <asm/types.h>
-#define MNTPATHLEN 1024
-#define MNTNAMLEN 255
-#define FHSIZE 32
-#define FHSIZE3 64
-
-typedef char fhandle[FHSIZE];
-
-typedef struct {
- u_int fhandle3_len;
- char *fhandle3_val;
-} fhandle3;
-
-enum mountstat3 {
- MNT_OK = 0,
- MNT3ERR_PERM = 1,
- MNT3ERR_NOENT = 2,
- MNT3ERR_IO = 5,
- MNT3ERR_ACCES = 13,
- MNT3ERR_NOTDIR = 20,
- MNT3ERR_INVAL = 22,
- MNT3ERR_NAMETOOLONG = 63,
- MNT3ERR_NOTSUPP = 10004,
- MNT3ERR_SERVERFAULT = 10006,
-};
-typedef enum mountstat3 mountstat3;
-
-struct fhstatus {
- u_int fhs_status;
- union {
- fhandle fhs_fhandle;
- } fhstatus_u;
-};
-typedef struct fhstatus fhstatus;
-
-struct mountres3_ok {
- fhandle3 fhandle;
- struct {
- u_int auth_flavours_len;
- int *auth_flavours_val;
- } auth_flavours;
-};
-typedef struct mountres3_ok mountres3_ok;
-
-struct mountres3 {
- mountstat3 fhs_status;
- union {
- mountres3_ok mountinfo;
- } mountres3_u;
-};
-typedef struct mountres3 mountres3;
-
-typedef char *dirpath;
-
-typedef char *name;
-
-typedef struct mountbody *mountlist;
-
-struct mountbody {
- name ml_hostname;
- dirpath ml_directory;
- mountlist ml_next;
-};
-typedef struct mountbody mountbody;
-
-typedef struct groupnode *groups;
-
-struct groupnode {
- name gr_name;
- groups gr_next;
-};
-typedef struct groupnode groupnode;
-
-typedef struct exportnode *exports;
-
-struct exportnode {
- dirpath ex_dir;
- groups ex_groups;
- exports ex_next;
-};
-typedef struct exportnode exportnode;
-
-struct ppathcnf {
- int pc_link_max;
- short pc_max_canon;
- short pc_max_input;
- short pc_name_max;
- short pc_path_max;
- short pc_pipe_buf;
- u_char pc_vdisable;
- char pc_xxx;
- short pc_mask[2];
-};
-typedef struct ppathcnf ppathcnf;
-#endif /*!_rpcsvc_mount_h*/
-
-#define MOUNTPROG 100005
-#define MOUNTVERS 1
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define MOUNTPROC_NULL 0
-extern void * mountproc_null_1(void *, CLIENT *);
-extern void * mountproc_null_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_MNT 1
-extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *);
-extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_DUMP 2
-extern mountlist * mountproc_dump_1(void *, CLIENT *);
-extern mountlist * mountproc_dump_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_UMNT 3
-extern void * mountproc_umnt_1(dirpath *, CLIENT *);
-extern void * mountproc_umnt_1_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC_UMNTALL 4
-extern void * mountproc_umntall_1(void *, CLIENT *);
-extern void * mountproc_umntall_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORT 5
-extern exports * mountproc_export_1(void *, CLIENT *);
-extern exports * mountproc_export_1_svc(void *, struct svc_req *);
-#define MOUNTPROC_EXPORTALL 6
-extern exports * mountproc_exportall_1(void *, CLIENT *);
-extern exports * mountproc_exportall_1_svc(void *, struct svc_req *);
-extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-#else /* K&R C */
-#define MOUNTPROC_NULL 0
-extern void * mountproc_null_1();
-extern void * mountproc_null_1_svc();
-#define MOUNTPROC_MNT 1
-extern fhstatus * mountproc_mnt_1();
-extern fhstatus * mountproc_mnt_1_svc();
-#define MOUNTPROC_DUMP 2
-extern mountlist * mountproc_dump_1();
-extern mountlist * mountproc_dump_1_svc();
-#define MOUNTPROC_UMNT 3
-extern void * mountproc_umnt_1();
-extern void * mountproc_umnt_1_svc();
-#define MOUNTPROC_UMNTALL 4
-extern void * mountproc_umntall_1();
-extern void * mountproc_umntall_1_svc();
-#define MOUNTPROC_EXPORT 5
-extern exports * mountproc_export_1();
-extern exports * mountproc_export_1_svc();
-#define MOUNTPROC_EXPORTALL 6
-extern exports * mountproc_exportall_1();
-extern exports * mountproc_exportall_1_svc();
-extern int mountprog_1_freeresult ();
-#endif /* K&R C */
-#define MOUNTVERS_POSIX 2
-
-#if defined(__STDC__) || defined(__cplusplus)
-extern void * mountproc_null_2(void *, CLIENT *);
-extern void * mountproc_null_2_svc(void *, struct svc_req *);
-extern fhstatus * mountproc_mnt_2(dirpath *, CLIENT *);
-extern fhstatus * mountproc_mnt_2_svc(dirpath *, struct svc_req *);
-extern mountlist * mountproc_dump_2(void *, CLIENT *);
-extern mountlist * mountproc_dump_2_svc(void *, struct svc_req *);
-extern void * mountproc_umnt_2(dirpath *, CLIENT *);
-extern void * mountproc_umnt_2_svc(dirpath *, struct svc_req *);
-extern void * mountproc_umntall_2(void *, CLIENT *);
-extern void * mountproc_umntall_2_svc(void *, struct svc_req *);
-extern exports * mountproc_export_2(void *, CLIENT *);
-extern exports * mountproc_export_2_svc(void *, struct svc_req *);
-extern exports * mountproc_exportall_2(void *, CLIENT *);
-extern exports * mountproc_exportall_2_svc(void *, struct svc_req *);
-#define MOUNTPROC_PATHCONF 7
-extern ppathcnf * mountproc_pathconf_2(dirpath *, CLIENT *);
-extern ppathcnf * mountproc_pathconf_2_svc(dirpath *, struct svc_req *);
-extern int mountprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-#else /* K&R C */
-extern void * mountproc_null_2();
-extern void * mountproc_null_2_svc();
-extern fhstatus * mountproc_mnt_2();
-extern fhstatus * mountproc_mnt_2_svc();
-extern mountlist * mountproc_dump_2();
-extern mountlist * mountproc_dump_2_svc();
-extern void * mountproc_umnt_2();
-extern void * mountproc_umnt_2_svc();
-extern void * mountproc_umntall_2();
-extern void * mountproc_umntall_2_svc();
-extern exports * mountproc_export_2();
-extern exports * mountproc_export_2_svc();
-extern exports * mountproc_exportall_2();
-extern exports * mountproc_exportall_2_svc();
-#define MOUNTPROC_PATHCONF 7
-extern ppathcnf * mountproc_pathconf_2();
-extern ppathcnf * mountproc_pathconf_2_svc();
-extern int mountprog_2_freeresult ();
-#endif /* K&R C */
-#define MOUNT_V3 3
-
-#if defined(__STDC__) || defined(__cplusplus)
-#define MOUNTPROC3_NULL 0
-extern void * mountproc3_null_3(void *, CLIENT *);
-extern void * mountproc3_null_3_svc(void *, struct svc_req *);
-#define MOUNTPROC3_MNT 1
-extern mountres3 * mountproc3_mnt_3(dirpath *, CLIENT *);
-extern mountres3 * mountproc3_mnt_3_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC3_DUMP 2
-extern mountlist * mountproc3_dump_3(void *, CLIENT *);
-extern mountlist * mountproc3_dump_3_svc(void *, struct svc_req *);
-#define MOUNTPROC3_UMNT 3
-extern void * mountproc3_umnt_3(dirpath *, CLIENT *);
-extern void * mountproc3_umnt_3_svc(dirpath *, struct svc_req *);
-#define MOUNTPROC3_UMNTALL 4
-extern void * mountproc3_umntall_3(void *, CLIENT *);
-extern void * mountproc3_umntall_3_svc(void *, struct svc_req *);
-#define MOUNTPROC3_EXPORT 5
-extern exports * mountproc3_export_3(void *, CLIENT *);
-extern exports * mountproc3_export_3_svc(void *, struct svc_req *);
-extern int mountprog_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-#else /* K&R C */
-#define MOUNTPROC3_NULL 0
-extern void * mountproc3_null_3();
-extern void * mountproc3_null_3_svc();
-#define MOUNTPROC3_MNT 1
-extern mountres3 * mountproc3_mnt_3();
-extern mountres3 * mountproc3_mnt_3_svc();
-#define MOUNTPROC3_DUMP 2
-extern mountlist * mountproc3_dump_3();
-extern mountlist * mountproc3_dump_3_svc();
-#define MOUNTPROC3_UMNT 3
-extern void * mountproc3_umnt_3();
-extern void * mountproc3_umnt_3_svc();
-#define MOUNTPROC3_UMNTALL 4
-extern void * mountproc3_umntall_3();
-extern void * mountproc3_umntall_3_svc();
-#define MOUNTPROC3_EXPORT 5
-extern exports * mountproc3_export_3();
-extern exports * mountproc3_export_3_svc();
-extern int mountprog_3_freeresult ();
-#endif /* K&R C */
-
-/* the xdr functions */
-
-#if defined(__STDC__) || defined(__cplusplus)
-extern bool_t xdr_fhandle (XDR *, fhandle);
-extern bool_t xdr_fhandle3 (XDR *, fhandle3*);
-extern bool_t xdr_mountstat3 (XDR *, mountstat3*);
-extern bool_t xdr_fhstatus (XDR *, fhstatus*);
-extern bool_t xdr_mountres3_ok (XDR *, mountres3_ok*);
-extern bool_t xdr_mountres3 (XDR *, mountres3*);
-extern bool_t xdr_dirpath (XDR *, dirpath*);
-extern bool_t xdr_name (XDR *, name*);
-extern bool_t xdr_mountlist (XDR *, mountlist*);
-extern bool_t xdr_mountbody (XDR *, mountbody*);
-extern bool_t xdr_groups (XDR *, groups*);
-extern bool_t xdr_groupnode (XDR *, groupnode*);
-extern bool_t xdr_exports (XDR *, exports*);
-extern bool_t xdr_exportnode (XDR *, exportnode*);
-extern bool_t xdr_ppathcnf (XDR *, ppathcnf*);
-
-#else /* K&R C */
-extern bool_t xdr_fhandle ();
-extern bool_t xdr_fhandle3 ();
-extern bool_t xdr_mountstat3 ();
-extern bool_t xdr_fhstatus ();
-extern bool_t xdr_mountres3_ok ();
-extern bool_t xdr_mountres3 ();
-extern bool_t xdr_dirpath ();
-extern bool_t xdr_name ();
-extern bool_t xdr_mountlist ();
-extern bool_t xdr_mountbody ();
-extern bool_t xdr_groups ();
-extern bool_t xdr_groupnode ();
-extern bool_t xdr_exports ();
-extern bool_t xdr_exportnode ();
-extern bool_t xdr_ppathcnf ();
-
-#endif /* K&R C */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !_NFSMOUNT_H_RPCGEN */
-
diff --git a/mdk-stage1/partition.c b/mdk-stage1/partition.c
deleted file mode 100644
index 8fd581017..000000000
--- a/mdk-stage1/partition.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <libgen.h>
-#include "stage1.h"
-#include "frontend.h"
-#include "modules.h"
-#include "probing.h"
-#include "log.h"
-#include "mount.h"
-#include "lomount.h"
-#include "automatic.h"
-
-#include "disk.h"
-#include "partition.h"
-
-struct partition_detection_anchor {
- off_t offset;
- const char * anchor;
-};
-
-static int seek_and_compare(int fd, struct partition_detection_anchor anch)
-{
- char buf[500];
- size_t count;
- if (lseek(fd, anch.offset, SEEK_SET) == (off_t)-1) {
- log_perror("seek failed");
- return -1;
- }
- count = read(fd, buf, strlen(anch.anchor));
- if (count != strlen(anch.anchor)) {
- log_perror("read failed");
- return -1;
- }
- buf[count] = '\0';
- if (strcmp(anch.anchor, buf))
- return 1;
- return 0;
-}
-
-static const char * detect_partition_type(char * dev)
-{
- struct partition_detection_info {
- const char * name;
- struct partition_detection_anchor anchor0;
- struct partition_detection_anchor anchor1;
- struct partition_detection_anchor anchor2;
- };
- struct partition_detection_info partitions_signatures[] = {
- { "Linux Swap", { 4086, "SWAP-SPACE" }, { 0, NULL }, { 0, NULL } },
- { "Linux Swap", { 4086, "SWAPSPACE2" }, { 0, NULL }, { 0, NULL } },
- { "Ext2", { 0x438, "\x53\xEF" }, { 0, NULL }, { 0, NULL } },
- { "ReiserFS", { 0x10034, "ReIsErFs" }, { 0, NULL }, { 0, NULL } },
- { "ReiserFS", { 0x10034, "ReIsEr2Fs" }, { 0, NULL }, { 0, NULL } },
- { "XFS", { 0, "XFSB" }, { 0x200, "XAGF" }, { 0x400, "XAGI" } },
- { "JFS", { 0x8000, "JFS1" }, { 0, NULL }, { 0, NULL } },
- { "NTFS", { 0x1FE, "\x55\xAA" }, { 0x3, "NTFS" }, { 0, NULL } },
- { "FAT32", { 0x1FE, "\x55\xAA" }, { 0x52, "FAT32" }, { 0, NULL } },
- { "FAT", { 0x1FE, "\x55\xAA" }, { 0x36, "FAT" }, { 0, NULL } },
- { "Linux LVM", { 0, "HM\1\0" }, { 0, NULL }, { 0, NULL } }
- };
- int partitions_signatures_nb = sizeof(partitions_signatures) / sizeof(struct partition_detection_info);
- int i;
- int fd;
- const char *part_type = NULL;
-
- char device_fullname[50];
- strcpy(device_fullname, "/dev/");
- strcat(device_fullname, dev);
-
- if (ensure_dev_exists(device_fullname))
- return NULL;
- log_message("guessing type of %s", device_fullname);
-
- if ((fd = open(device_fullname, O_RDONLY, 0)) < 0) {
- log_perror("open");
- return NULL;
- }
-
- for (i=0; i<partitions_signatures_nb; i++) {
- int results = seek_and_compare(fd, partitions_signatures[i].anchor0);
- if (results == -1)
- goto detect_partition_type_end;
- if (results == 1)
- continue;
- if (!partitions_signatures[i].anchor1.anchor)
- goto detect_partition_found_it;
-
- results = seek_and_compare(fd, partitions_signatures[i].anchor1);
- if (results == -1)
- goto detect_partition_type_end;
- if (results == 1)
- continue;
- if (!partitions_signatures[i].anchor2.anchor)
- goto detect_partition_found_it;
-
- results = seek_and_compare(fd, partitions_signatures[i].anchor2);
- if (results == -1)
- goto detect_partition_type_end;
- if (results == 1)
- continue;
-
- detect_partition_found_it:
- part_type = partitions_signatures[i].name;
- break;
- }
-
- detect_partition_type_end:
- close(fd);
- return part_type;
-}
-
-int list_partitions(char * dev_name, char ** parts, char ** comments)
-{
- int major, minor, blocks;
- char name[100];
- FILE * f;
- int i = 0;
- char buf[512];
-
- if (!(f = fopen("/proc/partitions", "rb")) || !fgets(buf, sizeof(buf), f) || !fgets(buf, sizeof(buf), f)) {
- log_perror(dev_name);
- return 1;
- }
-
- while (fgets(buf, sizeof(buf), f)) {
- memset(name, 0, sizeof(name));
- sscanf(buf, " %d %d %d %s", &major, &minor, &blocks, name);
- if ((strstr(name, dev_name) == name) && (blocks > 1) && (name[strlen(dev_name)] != '\0')) {
- const char * partition_type = detect_partition_type(name);
- parts[i] = strdup(name);
- comments[i] = (char *) malloc(sizeof(char) * 100);
- sprintf(comments[i], "size: %d Mbytes", blocks >> 10);
- if (partition_type) {
- strcat(comments[i], ", type: ");
- strcat(comments[i], partition_type);
- }
- i++;
- }
- }
- parts[i] = NULL;
- fclose(f);
-
- return 0;
-}
diff --git a/mdk-stage1/partition.h b/mdk-stage1/partition.h
deleted file mode 100644
index e901662df..000000000
--- a/mdk-stage1/partition.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Olivier Blin (oblin@mandrakesoft.com)
- *
- * Copyright 2005 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _PARTITION_H_
-#define _PARTITION_H_
-
-int list_partitions(char * dev_name, char ** parts, char ** comments);
-
-#endif
-
diff --git a/mdk-stage1/pci-resource/.cvsignore b/mdk-stage1/pci-resource/.cvsignore
deleted file mode 100644
index 4c7b0844b..000000000
--- a/mdk-stage1/pci-resource/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-pci-ids.h
diff --git a/mdk-stage1/pci-resource/Makefile b/mdk-stage1/pci-resource/Makefile
deleted file mode 100644
index 955c92f5e..000000000
--- a/mdk-stage1/pci-resource/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
- #******************************************************************************
- #
- # $Id$
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-
-all: pci-ids.h
-
-pci-ids.h: /usr/share/ldetect-lst/pcitable update-pci-ids.pl
- perl update-pci-ids.pl > $@ || { rm -f $@; exit 1; }
-
-clean:
- rm -f pci-ids.h
diff --git a/mdk-stage1/pci-resource/update-pci-ids.pl b/mdk-stage1/pci-resource/update-pci-ids.pl
deleted file mode 100755
index 01839dcf2..000000000
--- a/mdk-stage1/pci-resource/update-pci-ids.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use MDK::Common;
-
-require '/usr/bin/merge2pcitable.pl';
-my $pci = read_pcitable("/usr/share/ldetect-lst/pcitable");
-
-print '
-#define PCI_REVISION_ID 0x08 /* Revision ID */
-
-struct pci_module_map {
- unsigned short vendor; /* PCI vendor id */
- unsigned short device; /* PCI device id */
- const char *name; /* PCI human readable name */
- const char *module; /* module to load */
-};
-
-struct pci_module_map_full {
- unsigned short vendor; /* PCI vendor id */
- unsigned short device; /* PCI device id */
- unsigned short subvendor; /* PCI subvendor id */
- unsigned short subdevice; /* PCI subdevice id */
- const char *name; /* PCI human readable name */
- const char *module; /* module to load */
-};
-
-';
-
-my %t = (
- network => 'network/main|gigabit|tokenring|wireless',
- medias => 'disk/scsi|hardware_raid|sata',
-);
-
-foreach my $type (keys %t) {
- my @modules = chomp_(`perl ../../kernel/modules.pl pci_modules4stage1 "$t{$type}"`);
-
- my (@entries, @entries_full);
-
- foreach my $k (sort keys %$pci) {
- my $v = $pci->{$k};
- member($v->[0], @modules) or next;
- $k =~ /^(....)(....)(....)(....)/;
- my $values = { vendor => $1, device => $2, subvendor => $3, subdevice => $4, driver => $v->[0], description => $v->[1] };
- if ($values->{subdevice} eq 'ffff' && $values->{subvendor} eq 'ffff') {
- push @entries, $values;
- } else {
- push @entries_full, $values;
- }
- }
-
- print "#ifndef DISABLE_".uc($type)."
-struct pci_module_map ${type}_pci_ids[] = {
-";
- printf qq|\t{ 0x%s, 0x%s, "%s", "%s" },\n|, $_->{vendor}, $_->{device}, $_->{description}, $_->{driver}
- foreach @entries;
- print "};
-unsigned int ${type}_num_ids = sizeof(${type}_pci_ids) / sizeof(struct pci_module_map);
-";
-
- print "
-struct pci_module_map_full ${type}_pci_ids_full[] = {
-";
- printf qq|\t{ 0x%s, 0x%s, 0x%s, 0x%s, "%s", "%s" },\n|, $_->{vendor}, $_->{device}, $_->{subvendor}, $_->{subdevice}, $_->{description}, $_->{driver}
- foreach @entries_full;
- print "};
-unsigned int ${type}_num_ids_full = sizeof(${type}_pci_ids_full) / sizeof(struct pci_module_map_full);
-
-#endif
-
-";
-}
diff --git a/mdk-stage1/pcmcia_/Makefile b/mdk-stage1/pcmcia_/Makefile
deleted file mode 100644
index 9cecc8784..000000000
--- a/mdk-stage1/pcmcia_/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2001 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-all: libpcmcia.a
-
-clean:
- rm -f *.o libpcmcia.a
-
-FLAGS = -D__linux__ -Wall -Werror -Wno-deprecated-declarations -Os -fomit-frame-pointer -pipe -c -I.. -D_BSD_SOURCE
-
-
-OBJS = probe.o cardmgr.o lex_config.o yacc_config.o
-
-
-libpcmcia.a: $(OBJS)
- ar -cru $@ $^
- ranlib $@
-
-$(OBJS): %.o: %.c
- $(DIET) gcc $(FLAGS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/pcmcia_/bulkmem.h b/mdk-stage1/pcmcia_/bulkmem.h
deleted file mode 100644
index 7748d4432..000000000
--- a/mdk-stage1/pcmcia_/bulkmem.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Definitions for bulk memory services
- *
- * bulkmem.h 1.13 2001/08/24 12:16:12
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- * bulkmem.h 1.3 1995/05/27 04:49:49
- */
-
-#ifndef _LINUX_BULKMEM_H
-#define _LINUX_BULKMEM_H
-
-/* For GetFirstRegion and GetNextRegion */
-typedef struct region_info_t {
- u_int Attributes;
- u_int CardOffset;
- u_int RegionSize;
- u_int AccessSpeed;
- u_int BlockSize;
- u_int PartMultiple;
- u_char JedecMfr, JedecInfo;
- memory_handle_t next;
-} region_info_t;
-
-#define REGION_TYPE 0x0001
-#define REGION_TYPE_CM 0x0000
-#define REGION_TYPE_AM 0x0001
-#define REGION_PREFETCH 0x0008
-#define REGION_CACHEABLE 0x0010
-#define REGION_BAR_MASK 0xe000
-#define REGION_BAR_SHIFT 13
-
-/* For OpenMemory */
-typedef struct open_mem_t {
- u_int Attributes;
- u_int Offset;
-} open_mem_t;
-
-/* Attributes for OpenMemory */
-#define MEMORY_TYPE 0x0001
-#define MEMORY_TYPE_CM 0x0000
-#define MEMORY_TYPE_AM 0x0001
-#define MEMORY_EXCLUSIVE 0x0002
-#define MEMORY_PREFETCH 0x0008
-#define MEMORY_CACHEABLE 0x0010
-#define MEMORY_BAR_MASK 0xe000
-#define MEMORY_BAR_SHIFT 13
-
-typedef struct eraseq_entry_t {
- memory_handle_t Handle;
- u_char State;
- u_int Size;
- u_int Offset;
- void *Optional;
-} eraseq_entry_t;
-
-typedef struct eraseq_hdr_t {
- int QueueEntryCnt;
- eraseq_entry_t *QueueEntryArray;
-} eraseq_hdr_t;
-
-#define ERASE_QUEUED 0x00
-#define ERASE_IN_PROGRESS(n) (((n) > 0) && ((n) < 0x80))
-#define ERASE_IDLE 0xff
-#define ERASE_PASSED 0xe0
-#define ERASE_FAILED 0xe1
-
-#define ERASE_MISSING 0x80
-#define ERASE_MEDIA_WRPROT 0x84
-#define ERASE_NOT_ERASABLE 0x85
-#define ERASE_BAD_OFFSET 0xc1
-#define ERASE_BAD_TECH 0xc2
-#define ERASE_BAD_SOCKET 0xc3
-#define ERASE_BAD_VCC 0xc4
-#define ERASE_BAD_VPP 0xc5
-#define ERASE_BAD_SIZE 0xc6
-
-/* For CopyMemory */
-typedef struct copy_op_t {
- u_int Attributes;
- u_int SourceOffset;
- u_int DestOffset;
- u_int Count;
-} copy_op_t;
-
-/* For ReadMemory and WriteMemory */
-typedef struct mem_op_t {
- u_int Attributes;
- u_int Offset;
- u_int Count;
-} mem_op_t;
-
-#define MEM_OP_BUFFER 0x01
-#define MEM_OP_BUFFER_USER 0x00
-#define MEM_OP_BUFFER_KERNEL 0x01
-#define MEM_OP_DISABLE_ERASE 0x02
-#define MEM_OP_VERIFY 0x04
-
-/* For RegisterMTD */
-typedef struct mtd_reg_t {
- u_int Attributes;
- u_int Offset;
- u_long MediaID;
-} mtd_reg_t;
-
-/*
- * Definitions for MTD requests
- */
-
-typedef struct mtd_request_t {
- u_int SrcCardOffset;
- u_int DestCardOffset;
- u_int TransferLength;
- u_int Function;
- u_long MediaID;
- u_int Status;
- u_int Timeout;
-} mtd_request_t;
-
-/* Fields in MTD Function */
-#define MTD_REQ_ACTION 0x003
-#define MTD_REQ_ERASE 0x000
-#define MTD_REQ_READ 0x001
-#define MTD_REQ_WRITE 0x002
-#define MTD_REQ_COPY 0x003
-#define MTD_REQ_NOERASE 0x004
-#define MTD_REQ_VERIFY 0x008
-#define MTD_REQ_READY 0x010
-#define MTD_REQ_TIMEOUT 0x020
-#define MTD_REQ_LAST 0x040
-#define MTD_REQ_FIRST 0x080
-#define MTD_REQ_KERNEL 0x100
-
-/* Status codes */
-#define MTD_WAITREQ 0x00
-#define MTD_WAITTIMER 0x01
-#define MTD_WAITRDY 0x02
-#define MTD_WAITPOWER 0x03
-
-/*
- * Definitions for MTD helper functions
- */
-
-/* For MTDModifyWindow */
-typedef struct mtd_mod_win_t {
- u_int Attributes;
- u_int AccessSpeed;
- u_int CardOffset;
-} mtd_mod_win_t;
-
-/* For MTDSetVpp */
-typedef struct mtd_vpp_req_t {
- u_char Vpp1, Vpp2;
-} mtd_vpp_req_t;
-
-/* For MTDRDYMask */
-typedef struct mtd_rdy_req_t {
- u_int Mask;
-} mtd_rdy_req_t;
-
-enum mtd_helper {
- MTDRequestWindow, MTDModifyWindow, MTDReleaseWindow,
- MTDSetVpp, MTDRDYMask
-};
-
-#ifdef IN_CARD_SERVICES
-extern int MTDHelperEntry(int func, void *a1, void *a2);
-#else
-extern int MTDHelperEntry(int func, ...);
-#endif
-
-#endif /* _LINUX_BULKMEM_H */
diff --git a/mdk-stage1/pcmcia_/cardmgr.c b/mdk-stage1/pcmcia_/cardmgr.c
deleted file mode 100644
index f67b02f72..000000000
--- a/mdk-stage1/pcmcia_/cardmgr.c
+++ /dev/null
@@ -1,1652 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * Code comes from /anonymous@projects.sourceforge.net:/pub/pcmcia-cs/pcmcia-cs-3.1.29.tar.bz2
- *
- * Licence of this code follows:
- *
- */
-/*======================================================================
-
- PCMCIA Card Manager daemon
-
- cardmgr.c 1.161 2001/08/24 12:19:19
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
- except in compliance with the License. You may obtain a copy of
- the License at http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS
- IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- implied. See the License for the specific language governing
- rights and limitations under the License.
-
- The initial developer of the original code is David A. Hinds
- <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-
- Alternatively, the contents of this file may be used under the
- terms of the GNU General Public License version 2 (the "GPL"), in
- which case the provisions of the GPL are applicable instead of the
- above. If you wish to allow the use of your version of this file
- only under the terms of the GPL and not to allow others to use
- your version of this file under the MPL, indicate your decision
- by deleting the provisions above and replace them with the notice
- and other provisions required by the GPL. If you do not delete
- the provisions above, a recipient may use your version of this
- file under either the MPL or the GPL.
-
-======================================================================*/
-
-#ifndef __linux__
-#include <pcmcia/u_compat.h>
-#endif
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-//mdk-stage1// #include <syslog.h>
-//mdk-stage1// #include <getopt.h>
-#include <signal.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <sys/file.h>
-
-#include <pcmcia_/version.h>
-//mdk-stage1// #include <pcmcia/config.h>
-#include <pcmcia_/cs_types.h>
-#include <pcmcia_/cs.h>
-#include <pcmcia_/cistpl.h>
-#include <pcmcia_/ds.h>
-
-#include "cardmgr.h"
-
-#include "../log.h"
-#include "modules.h"
-#include "pcmcia.h"
-
-/*====================================================================*/
-
-typedef struct socket_info_t {
- int fd;
- int state;
- card_info_t *card;
- bind_info_t *bind[MAX_BINDINGS];
- mtd_ident_t *mtd[2*CISTPL_MAX_DEVICES];
-} socket_info_t;
-
-#define SOCKET_PRESENT 0x01
-#define SOCKET_READY 0x02
-#define SOCKET_HOTPLUG 0x04
-
-/* Linked list of resource adjustments */
-struct adjust_list_t *root_adjust = NULL;
-
-/* Linked list of device definitions */
-struct device_info_t *root_device = NULL;
-
-/* Special pointer to "anonymous" card definition */
-struct card_info_t *blank_card = NULL;
-
-/* Linked list of card definitions */
-struct card_info_t *root_card = NULL;
-
-/* Linked list of function definitions */
-struct card_info_t *root_func = NULL;
-
-/* Linked list of MTD definitions */
-struct mtd_ident_t *root_mtd = NULL;
-
-/* Default MTD */
-struct mtd_ident_t *default_mtd = NULL;
-
-static int sockets;
-static struct socket_info_t socket[MAX_SOCKS];
-
-/* Default path for config file, device scripts */
-#ifdef ETC
-static char *configpath = ETC;
-#else
-static char *configpath = "/etc/pcmcia";
-#endif
-
-/* Default path for pid file */
-//mdk-stage1// static char *pidfile = "/var/run/cardmgr.pid";
-
-#ifdef __linux__
-/* Default path for finding modules */
-//mdk-stage1// static char *modpath = NULL;
-#endif
-
-/* Default path for socket info table */
-static char *stabfile;
-
-/* If set, don't generate beeps when cards are inserted */
-//mdk-stage1// static int be_quiet = 0;
-
-/* If set, use modprobe instead of insmod */
-//mdk-stage1// static int do_modprobe = 0;
-
-/* If set, configure already inserted cards, then exit */
-//mdk-stage1// static int one_pass = 0;
-
-/* Extra message logging? */
-//mdk-stage1// static int verbose = 0;
-
-/*====================================================================*/
-
-#ifdef __linux__
-
-static int major = 0;
-
-static int lookup_dev(char *name)
-{
- FILE *f;
- int n;
- char s[32], t[32];
-
- f = fopen("/proc/devices", "r");
- if (f == NULL)
- return -errno;
- while (fgets(s, 32, f) != NULL) {
- if (sscanf(s, "%d %s", &n, t) == 2)
- if (strcmp(name, t) == 0)
- break;
- }
- fclose(f);
- if (strcmp(name, t) == 0)
- return n;
- else
- return -ENODEV;
-}
-
-int open_dev(dev_t dev, int mode)
-{
- char * fn = "/tmp/cardmgr_tmp";
- int fd;
-
- unlink(fn);
- if (mknod(fn, mode, dev) != 0)
- return -1;
- fd = open(fn, (mode&S_IWRITE)?O_RDWR:O_RDONLY);
- if (fd < 0)
- fd = open(fn, O_NONBLOCK|((mode&S_IWRITE)?O_RDWR:O_RDONLY));
- unlink(fn);
- return fd;
-}
-
-#endif /* __linux__ */
-
-int open_sock(int sock, int mode)
-{
-#ifdef __linux__
- dev_t dev = (major<<8)+sock;
- return open_dev(dev, mode);
-#endif
-#ifdef __BEOS__
- int fd;
- char fn[B_OS_NAME_LENGTH];
- sprintf(fn, "/dev/pcmcia/sock%d", sock);
- return open(fn, (mode & S_IWRITE) ? O_RDWR: O_RDONLY);
-#endif
-}
-
-/*======================================================================
-
- xlate_scsi_name() is a sort-of-hack used to deduce the minor
- device numbers of SCSI devices, from the information available to
- the low-level driver.
-
-======================================================================*/
-
-#ifdef __linux__
-
-#include <linux/major.h>
-#include <scsi/scsi.h>
-//mdk-stage1// #define VERSION(v,p,s) (((v)<<16)+(p<<8)+s)
-//mdk-stage1// #if (LINUX_VERSION_CODE < VERSION(2,1,126))
-//mdk-stage1// #define SCSI_DISK0_MAJOR SCSI_DISK_MAJOR
-//mdk-stage1// #endif
-
-static int xlate_scsi_name(bind_info_t *bind)
-{
- int i, fd, mode, minor;
- u_int arg[2], id1, id2;
-
- id1 = strtol(bind->name+3, NULL, 16);
- if ((bind->major == SCSI_DISK0_MAJOR) ||
- (bind->major == SCSI_CDROM_MAJOR))
- mode = S_IREAD|S_IFBLK;
- else
- mode = S_IREAD|S_IFCHR;
-
- for (i = 0; i < 16; i++) {
- minor = (bind->major == SCSI_DISK0_MAJOR) ? (i<<4) : i;
- fd = open_dev((bind->major<<8)+minor, mode);
- if (fd < 0)
- continue;
- if (ioctl(fd, SCSI_IOCTL_GET_IDLUN, arg) == 0) {
- id2 = (arg[0]&0x0f) + ((arg[0]>>4)&0xf0) +
- ((arg[0]>>8)&0xf00) + ((arg[0]>>12)&0xf000);
- if (id1 == id2) {
- close(fd);
- switch (bind->major) {
- case SCSI_DISK0_MAJOR:
- case SCSI_GENERIC_MAJOR:
- sprintf(bind->name+2, "%c", 'a'+i); break;
- case SCSI_CDROM_MAJOR:
- sprintf(bind->name, "scd%d", i); break;
- case SCSI_TAPE_MAJOR:
- sprintf(bind->name+2, "%d", i); break;
- }
- bind->minor = minor;
- return 0;
- }
- }
- close(fd);
- }
- return -1;
-}
-#endif
-
-/*====================================================================*/
-
-#define BEEP_TIME 150
-#define BEEP_OK 1000
-#define BEEP_WARN 2000
-#define BEEP_ERR 4000
-
-#ifdef __linux__
-
-//mdk-stage1// #include <sys/kd.h>
-//mdk-stage1//
-static void beep(unsigned int ms, unsigned int freq)
-{
-//mdk-stage1// int fd, arg;
-//mdk-stage1//
-//mdk-stage1// if (be_quiet)
-//mdk-stage1// return;
-//mdk-stage1// fd = open("/dev/console", O_RDWR);
-//mdk-stage1// if (fd < 0)
-//mdk-stage1// return;
-//mdk-stage1// arg = (ms << 16) | freq;
-//mdk-stage1// ioctl(fd, KDMKTONE, arg);
-//mdk-stage1// close(fd);
-//mdk-stage1// usleep(ms*1000);
-}
-
-#endif /* __linux__ */
-
-#ifdef __BEOS__
-static void beep(unsigned int ms, unsigned int freq)
-{
- if (!be_quiet) system("/bin/beep");
-}
-#endif
-
-/*====================================================================*/
-
-//mdk-stage1// static void write_pid(void)
-//mdk-stage1// {
-//mdk-stage1// FILE *f;
-//mdk-stage1// f = fopen(pidfile, "w");
-//mdk-stage1// if (f == NULL)
-//mdk-stage1// syslog(LOG_WARNING, "could not open %s: %m", pidfile);
-//mdk-stage1// else {
-//mdk-stage1// fprintf(f, "%d\n", getpid());
-//mdk-stage1// fclose(f);
-//mdk-stage1// }
-//mdk-stage1// }
-
-static void write_stab(void)
-{
- int i, j, k;
- FILE *f;
- socket_info_t *s;
- bind_info_t *bind;
-
- f = fopen(stabfile, "w");
- if (f == NULL) {
- log_message("CM: fopen(stabfile) failed: %m");
- return;
- }
-#ifndef __BEOS__
- if (flock(fileno(f), LOCK_EX) != 0) {
- log_message("CM: flock(stabfile) failed: %m");
- return;
- }
-#endif
- for (i = 0; i < sockets; i++) {
- s = &socket[i];
- fprintf(f, "Socket %d: ", i);
- if (!(s->state & SOCKET_PRESENT)) {
- fprintf(f, "empty\n");
-//mdk-stage1// } else if (s->state & SOCKET_HOTPLUG) {
-//mdk-stage1// fprintf(f, "CardBus hotplug device\n");
- } else if (!s->card) {
- fprintf(f, "unsupported card\n");
- } else {
- fprintf(f, "%s\n", s->card->name);
- for (j = 0; j < s->card->bindings; j++)
- for (k = 0, bind = s->bind[j];
- bind != NULL;
- k++, bind = bind->next) {
- char *class = s->card->device[j]->class;
- fprintf(f, "%d\t%s\t%s\t%d\t%s",
- i, (class ? class : "none"),
- bind->dev_info, k, bind->name);
- if (bind->major)
- fprintf(f, "\t%d\t%d\n",
- bind->major, bind->minor);
- else
- fputc('\n', f);
- }
- }
- }
- fflush(f);
-#ifndef __BEOS__
- flock(fileno(f), LOCK_UN);
-#endif
- fclose(f);
-}
-
-/*====================================================================*/
-
-static int get_tuple(int ns, cisdata_t code, ds_ioctl_arg_t *arg)
-{
- socket_info_t *s = &socket[ns];
-
- arg->tuple.DesiredTuple = code;
- arg->tuple.Attributes = 0;
- if (ioctl(s->fd, DS_GET_FIRST_TUPLE, arg) != 0)
- return -1;
- arg->tuple.TupleOffset = 0;
- if (ioctl(s->fd, DS_GET_TUPLE_DATA, arg) != 0) {
- log_message("CM: error reading CIS data on socket %d: %m", ns);
- return -1;
- }
- if (ioctl(s->fd, DS_PARSE_TUPLE, arg) != 0) {
- log_message("CM: error parsing CIS on socket %d: %m", ns);
- return -1;
- }
- return 0;
-}
-
-/*======================================================================
-
- Code to fetch a 2.4 kernel's hot plug PCI driver list
-
- This is distasteful but is the best I could come up with.
-
-======================================================================*/
-
-#ifdef __linux__
-
-typedef struct pci_id {
- u_short vendor, device;
- struct pci_id *next;
-} pci_id_t;
-
-static int get_pci_id(int ns, pci_id_t *id)
-{
- socket_info_t *s = &socket[ns];
- config_info_t config;
-
- config.Function = config.ConfigBase = 0;
- if ((ioctl(s->fd, DS_GET_CONFIGURATION_INFO, &config) != 0) ||
- (config.IntType != INT_CARDBUS) || !config.ConfigBase)
- return 0;
- id->vendor = config.ConfigBase & 0xffff;
- id->device = config.ConfigBase >> 16;
- return 1;
-}
-
-#endif /* __linux__ */
-
-/*====================================================================*/
-
-//mdk-stage1// static void log_card_info(cistpl_vers_1_t *vers,
-//mdk-stage1// cistpl_manfid_t *manfid,
-//mdk-stage1// cistpl_funcid_t *funcid,
-//mdk-stage1// pci_id_t *pci_id)
-//mdk-stage1// {
-//mdk-stage1// char v[256] = "";
-//mdk-stage1// int i;
-//mdk-stage1// static char *fn[] = {
-//mdk-stage1// "multi", "memory", "serial", "parallel", "fixed disk",
-//mdk-stage1// "video", "network", "AIMS", "SCSI"
-//mdk-stage1// };
-//mdk-stage1//
-//mdk-stage1// if (vers) {
-//mdk-stage1// for (i = 0; i < vers->ns; i++)
-//mdk-stage1// sprintf(v+strlen(v), "%s\"%s\"",
-//mdk-stage1// (i>0) ? ", " : "", vers->str+vers->ofs[i]);
-//mdk-stage1// syslog(LOG_INFO, " product info: %s", v);
-//mdk-stage1// } else {
-//mdk-stage1// syslog(LOG_INFO, " no product info available");
-//mdk-stage1// }
-//mdk-stage1// *v = '\0';
-//mdk-stage1// if (manfid->manf != 0)
-//mdk-stage1// sprintf(v, " manfid: 0x%04x, 0x%04x",
-//mdk-stage1// manfid->manf, manfid->card);
-//mdk-stage1// if (funcid->func != 0xff)
-//mdk-stage1// sprintf(v+strlen(v), " function: %d (%s)", funcid->func,
-//mdk-stage1// fn[funcid->func]);
-//mdk-stage1// if (strlen(v) > 0) syslog(LOG_INFO, "%s", v);
-//mdk-stage1// if (pci_id->vendor != 0)
-//mdk-stage1// syslog(LOG_INFO, " PCI id: 0x%04x, 0x%04x",
-//mdk-stage1// pci_id->vendor, pci_id->device);
-//mdk-stage1// }
-
-static card_info_t *lookup_card(int ns)
-{
- socket_info_t *s = &socket[ns];
- card_info_t *card = NULL;
- ds_ioctl_arg_t arg;
- cistpl_vers_1_t *vers = NULL;
- cistpl_manfid_t manfid = { 0, 0 };
- pci_id_t pci_id = { 0, 0 };
- cistpl_funcid_t funcid = { 0xff, 0xff };
- cs_status_t status;
- int i, ret, has_cis = 0;
-
- /* Do we have a CIS structure? */
- ret = ioctl(s->fd, DS_VALIDATE_CIS, &arg);
- has_cis = ((ret == 0) && (arg.cisinfo.Chains > 0));
-
- /* Try to read VERS_1, MANFID tuples */
- if (has_cis) {
- /* rule of thumb: cards with no FUNCID, but with common memory
- device geometry information, are probably memory cards */
- if (get_tuple(ns, CISTPL_FUNCID, &arg) == 0)
- memcpy(&funcid, &arg.tuple_parse.parse.funcid,
- sizeof(funcid));
- else if (get_tuple(ns, CISTPL_DEVICE_GEO, &arg) == 0)
- funcid.func = CISTPL_FUNCID_MEMORY;
- if (get_tuple(ns, CISTPL_MANFID, &arg) == 0)
- memcpy(&manfid, &arg.tuple_parse.parse.manfid,
- sizeof(manfid));
- if (get_tuple(ns, CISTPL_VERS_1, &arg) == 0)
- vers = &arg.tuple_parse.parse.version_1;
-
- for (card = root_card; card; card = card->next) {
-
- if (card->ident_type &
- ~(VERS_1_IDENT|MANFID_IDENT|TUPLE_IDENT))
- continue;
-
- if (card->ident_type & VERS_1_IDENT) {
- if (vers == NULL)
- continue;
- for (i = 0; i < card->id.vers.ns; i++) {
- if (strcmp(card->id.vers.pi[i], "*") == 0)
- continue;
- if (i >= vers->ns)
- break;
- if (strcmp(card->id.vers.pi[i],
- vers->str+vers->ofs[i]) != 0)
- break;
- }
- if (i < card->id.vers.ns)
- continue;
- }
-
- if (card->ident_type & MANFID_IDENT) {
- if ((manfid.manf != card->manfid.manf) ||
- (manfid.card != card->manfid.card))
- continue;
- }
-
- if (card->ident_type & TUPLE_IDENT) {
- arg.tuple.DesiredTuple = card->id.tuple.code;
- arg.tuple.Attributes = 0;
- ret = ioctl(s->fd, DS_GET_FIRST_TUPLE, &arg);
- if (ret != 0) continue;
- arg.tuple.TupleOffset = card->id.tuple.ofs;
- ret = ioctl(s->fd, DS_GET_TUPLE_DATA, &arg);
- if (ret != 0) continue;
- if (strncmp((char *)arg.tuple_parse.data,
- card->id.tuple.info,
- strlen(card->id.tuple.info)) != 0)
- continue;
- }
-
- break; /* we have a match */
- }
- }
-
- /* Check PCI vendor/device info */
- status.Function = 0;
- ioctl(s->fd, DS_GET_STATUS, &status);
- if (status.CardState & CS_EVENT_CB_DETECT) {
- if (get_pci_id(ns, &pci_id)) {
- if (!card) {
- for (card = root_card; card; card = card->next)
- if ((card->ident_type == PCI_IDENT) &&
- (pci_id.vendor == card->manfid.manf) &&
- (pci_id.device == card->manfid.card))
- break;
- }
- } else {
- /* this is a 2.4 kernel; hotplug handles these cards */
-//mdk-stage1// s->state |= SOCKET_HOTPLUG;
- log_message("CM: socket %d: CardBus hotplug device", ns);
- //beep(BEEP_TIME, BEEP_OK);
-//mdk-stage1// return NULL;
- }
- }
-
- /* Try for a FUNCID match */
- if (!card && (funcid.func != 0xff)) {
- for (card = root_func; card; card = card->next)
- if (card->id.func.funcid == funcid.func)
- break;
- }
-
- if (card) {
- log_message("CM: socket %d: %s", ns, card->name);
- beep(BEEP_TIME, BEEP_OK);
-//mdk-stage1// if (verbose) log_card_info(vers, &manfid, &funcid, &pci_id);
- return card;
- }
-
- if (!blank_card || (status.CardState & CS_EVENT_CB_DETECT) ||
- manfid.manf || manfid.card || pci_id.vendor || vers) {
- log_message("CM: unsupported card in socket %d", ns);
-//mdk-stage1// if (one_pass) return NULL;
- beep(BEEP_TIME, BEEP_ERR);
-//mdk-stage1// log_card_info(vers, &manfid, &funcid, &pci_id);
- return NULL;
- } else {
- card = blank_card;
- log_message("CM: socket %d: %s", ns, card->name);
- beep(BEEP_TIME, BEEP_WARN);
- return card;
- }
-}
-
-/*====================================================================*/
-
-static int load_config(void)
-{
- if (chdir(configpath) != 0) {
- log_message("CM: chdir to %s failed: %m", configpath);
- return -1;
- }
- if (parse_configfile("config") != 0) {
- log_message("CM: parsing of config file failed: %m");
- return -1;
- }
- if (root_device == NULL)
- log_message("CM: no device drivers defined");
- if ((root_card == NULL) && (root_func == NULL))
- log_message("CM: no cards defined");
- return 0;
-}
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static void free_card(card_info_t *card)
-//mdk-stage1// {
-//mdk-stage1// if (card && (--card->refs == 0)) {
-//mdk-stage1// int i;
-//mdk-stage1// free(card->name);
-//mdk-stage1// switch(card->ident_type) {
-//mdk-stage1// case VERS_1_IDENT:
-//mdk-stage1// for (i = 0; i < card->id.vers.ns; i++)
-//mdk-stage1// free(card->id.vers.pi[i]);
-//mdk-stage1// break;
-//mdk-stage1// case TUPLE_IDENT:
-//mdk-stage1// free(card->id.tuple.info);
-//mdk-stage1// break;
-//mdk-stage1// default:
-//mdk-stage1// break;
-//mdk-stage1// }
-//mdk-stage1// free(card);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static void free_device(device_info_t *dev)
-//mdk-stage1// {
-//mdk-stage1// if (dev && (--dev->refs == 0)) {
-//mdk-stage1// int i;
-//mdk-stage1// for (i = 0; i < dev->modules; i++) {
-//mdk-stage1// free(dev->module[i]);
-//mdk-stage1// if (dev->opts[i]) free(dev->opts[i]);
-//mdk-stage1// }
-//mdk-stage1// if (dev->class) free(dev->class);
-//mdk-stage1// free(dev);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static void free_mtd(mtd_ident_t *mtd)
-//mdk-stage1// {
-//mdk-stage1// if (mtd && (--mtd->refs == 0)) {
-//mdk-stage1// free(mtd->name);
-//mdk-stage1// free(mtd->module);
-//mdk-stage1// free(mtd);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static void free_config(void)
-//mdk-stage1// {
-//mdk-stage1// while (root_adjust != NULL) {
-//mdk-stage1// adjust_list_t *adj = root_adjust;
-//mdk-stage1// root_adjust = root_adjust->next;
-//mdk-stage1// free(adj);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// while (root_device != NULL) {
-//mdk-stage1// device_info_t *dev = root_device;
-//mdk-stage1// root_device = root_device->next;
-//mdk-stage1// free_device(dev);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// while (root_card != NULL) {
-//mdk-stage1// card_info_t *card = root_card;
-//mdk-stage1// root_card = root_card->next;
-//mdk-stage1// free_card(card);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// while (root_func != NULL) {
-//mdk-stage1// card_info_t *card = root_func;
-//mdk-stage1// root_func = root_func->next;
-//mdk-stage1// free_card(card);
-//mdk-stage1// }
-//mdk-stage1// blank_card = NULL;
-//mdk-stage1//
-//mdk-stage1// while (root_mtd != NULL) {
-//mdk-stage1// mtd_ident_t *mtd = root_mtd;
-//mdk-stage1// root_mtd = root_mtd->next;
-//mdk-stage1// free_mtd(mtd);
-//mdk-stage1// }
-//mdk-stage1// default_mtd = NULL;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static int execute(char *msg, char *cmd)
-//mdk-stage1// {
-//mdk-stage1// int ret;
-//mdk-stage1// FILE *f;
-//mdk-stage1// char line[256];
-//mdk-stage1//
-//mdk-stage1// syslog(LOG_INFO, "executing: '%s'", cmd);
-//mdk-stage1// strcat(cmd, " 2>&1");
-//mdk-stage1// f = popen(cmd, "r");
-//mdk-stage1// while (fgets(line, 255, f)) {
-//mdk-stage1// line[strlen(line)-1] = '\0';
-//mdk-stage1// syslog(LOG_INFO, "+ %s", line);
-//mdk-stage1// }
-//mdk-stage1// ret = pclose(f);
-//mdk-stage1// if (WIFEXITED(ret)) {
-//mdk-stage1// if (WEXITSTATUS(ret))
-//mdk-stage1// syslog(LOG_INFO, "%s exited with status %d",
-//mdk-stage1// msg, WEXITSTATUS(ret));
-//mdk-stage1// return WEXITSTATUS(ret);
-//mdk-stage1// } else
-//mdk-stage1// syslog(LOG_INFO, "%s exited on signal %d",
-//mdk-stage1// msg, WTERMSIG(ret));
-//mdk-stage1// return -1;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static int execute_on_dev(char *action, char *class, char *dev)
-//mdk-stage1// {
-//mdk-stage1// /* Fixed length strings are ok here */
-//mdk-stage1// char msg[128], cmd[128];
-//mdk-stage1//
-//mdk-stage1// sprintf(msg, "%s cmd", action);
-//mdk-stage1// sprintf(cmd, "./%s %s %s", class, action, dev);
-//mdk-stage1// return execute(msg, cmd);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static int execute_on_all(char *cmd, char *class, int sn, int fn)
-//mdk-stage1// {
-//mdk-stage1// socket_info_t *s = &socket[sn];
-//mdk-stage1// bind_info_t *bind;
-//mdk-stage1// int ret = 0;
-//mdk-stage1// for (bind = s->bind[fn]; bind != NULL; bind = bind->next)
-//mdk-stage1// if (bind->name[0] && (bind->name[2] != '#'))
-//mdk-stage1// ret |= execute_on_dev(cmd, class, bind->name);
-//mdk-stage1// return ret;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// #ifdef __linux__
-//mdk-stage1//
-//mdk-stage1// typedef struct module_list_t {
-//mdk-stage1// char *mod;
-//mdk-stage1// int usage;
-//mdk-stage1// struct module_list_t *next;
-//mdk-stage1// } module_list_t;
-//mdk-stage1//
-//mdk-stage1// static module_list_t *module_list = NULL;
-//mdk-stage1//
-//mdk-stage1// static int try_insmod(char *mod, char *opts)
-//mdk-stage1// {
-//mdk-stage1// char *cmd = malloc(strlen(mod) + strlen(modpath) +
-//mdk-stage1// (opts ? strlen(opts) : 0) + 30);
-//mdk-stage1// int ret;
-//mdk-stage1//
-//mdk-stage1// strcpy(cmd, "insmod ");
-//mdk-stage1// if (strchr(mod, '/') != NULL)
-//mdk-stage1// sprintf(cmd+7, "%s/%s.o", modpath, mod);
-//mdk-stage1// else
-//mdk-stage1// sprintf(cmd+7, "%s/pcmcia/%s.o", modpath, mod);
-//mdk-stage1// if (access(cmd+7, R_OK) != 0) {
-//mdk-stage1// syslog(LOG_INFO, "module %s not available", cmd+7);
-//mdk-stage1// free(cmd);
-//mdk-stage1// return -1;
-//mdk-stage1// }
-//mdk-stage1// if (opts) {
-//mdk-stage1// strcat(cmd, " ");
-//mdk-stage1// strcat(cmd, opts);
-//mdk-stage1// }
-//mdk-stage1// ret = execute("insmod", cmd);
-//mdk-stage1// free(cmd);
-//mdk-stage1// return ret;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static int try_modprobe(char *mod, char *opts)
-//mdk-stage1// {
-//mdk-stage1// char *cmd = malloc(strlen(mod) + (opts ? strlen(opts) : 0) + 20);
-//mdk-stage1// char *s = strrchr(mod, '/');
-//mdk-stage1// int ret;
-//mdk-stage1//
-//mdk-stage1// sprintf(cmd, "modprobe %s", (s) ? s+1 : mod);
-//mdk-stage1// if (opts) {
-//mdk-stage1// strcat(cmd, " ");
-//mdk-stage1// strcat(cmd, opts);
-//mdk-stage1// }
-//mdk-stage1// ret = execute("modprobe", cmd);
-//mdk-stage1// free(cmd);
-//mdk-stage1// return ret;
-//mdk-stage1// }
-
-static void install_module(char *mod, char *opts)
-{
- my_insmod(mod, ANY_DRIVER_TYPE, opts, 1);
-//mdk-stage1// module_list_t *ml;
-//mdk-stage1//
-//mdk-stage1// for (ml = module_list; ml != NULL; ml = ml->next)
-//mdk-stage1// if (strcmp(mod, ml->mod) == 0) break;
-//mdk-stage1// if (ml == NULL) {
-//mdk-stage1// ml = (module_list_t *)malloc(sizeof(struct module_list_t));
-//mdk-stage1// ml->mod = mod;
-//mdk-stage1// ml->usage = 0;
-//mdk-stage1// ml->next = module_list;
-//mdk-stage1// module_list = ml;
-//mdk-stage1// }
-//mdk-stage1// ml->usage++;
-//mdk-stage1// if (ml->usage != 1)
-//mdk-stage1// return;
-//mdk-stage1//
-//mdk-stage1// #ifdef __linux__
-//mdk-stage1// if (access("/proc/bus/pccard/drivers", R_OK) == 0) {
-//mdk-stage1// FILE *f = fopen("/proc/bus/pccard/drivers", "r");
-//mdk-stage1// if (f) {
-//mdk-stage1// char a[61], s[33];
-//mdk-stage1// while (fgets(a, 60, f)) {
-//mdk-stage1// int is_kernel;
-//mdk-stage1// sscanf(a, "%s %d", s, &is_kernel);
-//mdk-stage1// if (strcmp(s, mod) != 0) continue;
-//mdk-stage1// /* If it isn't a module, we won't try to rmmod */
-//mdk-stage1// ml->usage += is_kernel;
-//mdk-stage1// fclose(f);
-//mdk-stage1// return;
-//mdk-stage1// }
-//mdk-stage1// fclose(f);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// #endif
-//mdk-stage1//
-//mdk-stage1// if (do_modprobe) {
-//mdk-stage1// if (try_modprobe(mod, opts) != 0)
-//mdk-stage1// try_insmod(mod, opts);
-//mdk-stage1// } else {
-//mdk-stage1// if (try_insmod(mod, opts) != 0)
-//mdk-stage1// try_modprobe(mod, opts);
-//mdk-stage1// }
-}
-
-//mdk-stage1// static void remove_module(char *mod)
-//mdk-stage1// {
-//mdk-stage1// char *s, cmd[128];
-//mdk-stage1// module_list_t *ml;
-//mdk-stage1//
-//mdk-stage1// for (ml = module_list; ml != NULL; ml = ml->next)
-//mdk-stage1// if (strcmp(mod, ml->mod) == 0) break;
-//mdk-stage1// if (ml != NULL) {
-//mdk-stage1// ml->usage--;
-//mdk-stage1// if (ml->usage == 0) {
-//mdk-stage1// /* Strip off leading path names */
-//mdk-stage1// s = strrchr(mod, '/');
-//mdk-stage1// s = (s) ? s+1 : mod;
-//mdk-stage1// sprintf(cmd, do_modprobe ? "modprobe -r %s" : "rmmod %s", s);
-//mdk-stage1// execute(do_modprobe ? "modprobe" : "rmmod", cmd);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// #endif /* __linux__ */
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// #ifdef __BEOS__
-//mdk-stage1//
-//mdk-stage1// #define install_module(a,b)
-//mdk-stage1// #define remove_module(a)
-//mdk-stage1//
-//mdk-stage1// static void republish_driver(char *mod)
-//mdk-stage1// {
-//mdk-stage1// int fd = open("/dev", O_RDWR);
-//mdk-stage1// write(fd, mod, strlen(mod));
-//mdk-stage1// close(fd);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// #endif /* __BEOS__ */
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-
-static mtd_ident_t *lookup_mtd(region_info_t *region)
-{
- mtd_ident_t *mtd;
- int match = 0;
-
- for (mtd = root_mtd; mtd; mtd = mtd->next) {
- switch (mtd->mtd_type) {
- case JEDEC_MTD:
- if ((mtd->jedec_mfr == region->JedecMfr) &&
- (mtd->jedec_info == region->JedecInfo)) {
- match = 1;
- break;
- }
- case DTYPE_MTD:
- break;
- default:
- break;
- }
- if (match) break;
- }
- if (mtd)
- return mtd;
- else
- return default_mtd;
-}
-
-/*====================================================================*/
-
-static void bind_mtd(int sn)
-{
- socket_info_t *s = &socket[sn];
- region_info_t region;
- bind_info_t bind;
- mtd_info_t mtd_info;
- mtd_ident_t *mtd;
- int i, attr, ret, nr;
-
- nr = 0;
- for (attr = 0; attr < 2; attr++) {
- region.Attributes = attr;
- ret = ioctl(s->fd, DS_GET_FIRST_REGION, &region);
- while (ret == 0) {
- mtd = lookup_mtd(&region);
- if (mtd) {
- /* Have we seen this MTD before? */
- for (i = 0; i < nr; i++)
- if (s->mtd[i] == mtd) break;
- if (i == nr) {
- install_module(mtd->module, mtd->opts);
- s->mtd[nr] = mtd;
- mtd->refs++;
- nr++;
- }
- log_message("CM: %s memory region at 0x%x: %s",
- attr ? "Attribute" : "Common", region.CardOffset,
- mtd->name);
- /* Bind MTD to this region */
- strcpy(mtd_info.dev_info, s->mtd[i]->module);
- mtd_info.Attributes = region.Attributes;
- mtd_info.CardOffset = region.CardOffset;
- if (ioctl(s->fd, DS_BIND_MTD, &mtd_info) != 0) {
- log_message("CM: bind MTD '%s' to region at 0x%x failed: %m",
- (char *)mtd_info.dev_info, region.CardOffset);
- }
- }
- ret = ioctl(s->fd, DS_GET_NEXT_REGION, &region);
- }
- }
- s->mtd[nr] = NULL;
-
- /* Now bind each unique MTD as a normal client of this socket */
- for (i = 0; i < nr; i++) {
- strcpy(bind.dev_info, s->mtd[i]->module);
- bind.function = 0;
- if (ioctl(s->fd, DS_BIND_REQUEST, &bind) != 0)
- log_message("CM: bind MTD '%s' to socket %d failed: %m",
- (char *)bind.dev_info, sn);
- }
-}
-
-/*====================================================================*/
-
-static void update_cis(socket_info_t *s)
-{
- cisdump_t cis;
- FILE *f = fopen(s->card->cis_file, "r");
- if (f == NULL)
- log_message("CM: could not open '%s': %m", s->card->cis_file);
- else {
- cis.Length = fread(cis.Data, 1, CISTPL_MAX_CIS_SIZE, f);
- fclose(f);
- if (ioctl(s->fd, DS_REPLACE_CIS, &cis) != 0)
- log_message("CM: could not replace CIS: %m");
- }
-}
-
-/*====================================================================*/
-
-static void do_insert(int sn)
-{
- socket_info_t *s = &socket[sn];
- card_info_t *card;
- device_info_t **dev;
- bind_info_t *bind, **tail;
- int i, j, ret;
-
- /* Already identified? */
- if ((s->card != NULL) && (s->card != blank_card))
- return;
-
- log_message("CM: initializing socket %d", sn);
- card = lookup_card(sn);
- if (s->state & SOCKET_HOTPLUG) {
- write_stab();
- return;
- }
- /* Make sure we've learned something new before continuing */
- if (card == s->card)
- return;
- s->card = card;
- card->refs++;
- if (card->cis_file) update_cis(s);
-
- dev = card->device;
-
- /* Set up MTD's */
- for (i = 0; i < card->bindings; i++)
- if (dev[i]->needs_mtd)
- break;
- if (i < card->bindings)
- bind_mtd(sn);
-
-#ifdef __linux__
- /* Install kernel modules */
- for (i = 0; i < card->bindings; i++) {
- dev[i]->refs++;
- for (j = 0; j < dev[i]->modules; j++)
- install_module(dev[i]->module[j], dev[i]->opts[j]);
- }
-#endif
-
- /* Bind drivers by their dev_info identifiers */
- for (i = 0; i < card->bindings; i++) {
- bind = calloc(1, sizeof(bind_info_t));
- strcpy((char *)bind->dev_info, (char *)dev[i]->dev_info);
- if (strcmp(bind->dev_info, "cb_enabler") == 0)
- bind->function = BIND_FN_ALL;
- else
- bind->function = card->dev_fn[i];
- if (ioctl(s->fd, DS_BIND_REQUEST, bind) != 0) {
- if (errno == EBUSY) {
- log_message("CM: '%s' already bound to socket %d",
- (char *)bind->dev_info, sn);
- } else {
- log_message("CM: bind '%s' to socket %d failed: %m",
- (char *)bind->dev_info, sn);
- beep(BEEP_TIME, BEEP_ERR);
- write_stab();
- return;
- }
- }
-
-#ifdef __BEOS__
- republish_driver(dev[i]->module[0]);
-#endif
-
- for (ret = j = 0; j < 10; j++) {
- ret = ioctl(s->fd, DS_GET_DEVICE_INFO, bind);
- if ((ret == 0) || (errno != EAGAIN))
- break;
- usleep(100000);
- }
- if (ret != 0) {
- log_message("CM: get dev info on socket %d failed: %m",
- sn);
- ioctl(s->fd, DS_UNBIND_REQUEST, bind);
- beep(BEEP_TIME, BEEP_ERR);
- write_stab();
- return;
- }
- tail = &s->bind[i];
- while (ret == 0) {
- bind_info_t *old;
-#ifdef __linux__
- if ((strlen(bind->name) > 3) && (bind->name[2] == '#'))
- xlate_scsi_name(bind);
-#endif
- old = *tail = bind; tail = (bind_info_t **)&bind->next;
- bind = (bind_info_t *)malloc(sizeof(bind_info_t));
- memcpy(bind, old, sizeof(bind_info_t));
- ret = ioctl(s->fd, DS_GET_NEXT_DEVICE, bind);
- }
- *tail = NULL; free(bind);
- write_stab();
- }
-
-//mdk-stage1// /* Run "start" commands */
-//mdk-stage1// for (i = ret = 0; i < card->bindings; i++)
-//mdk-stage1// if (dev[i]->class)
-//mdk-stage1// ret |= execute_on_all("start", dev[i]->class, sn, i);
-//mdk-stage1// beep(BEEP_TIME, (ret) ? BEEP_ERR : BEEP_OK);
-
-}
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static int do_check(int sn)
-//mdk-stage1// {
-//mdk-stage1// socket_info_t *s = &socket[sn];
-//mdk-stage1// card_info_t *card;
-//mdk-stage1// device_info_t **dev;
-//mdk-stage1// int i, ret;
-//mdk-stage1//
-//mdk-stage1// card = s->card;
-//mdk-stage1// if (card == NULL)
-//mdk-stage1// return 0;
-//mdk-stage1//
-//mdk-stage1// /* Run "check" commands */
-//mdk-stage1// dev = card->device;
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// if (dev[i]->class) {
-//mdk-stage1// ret = execute_on_all("check", dev[i]->class, sn, i);
-//mdk-stage1// if (ret != 0)
-//mdk-stage1// return CS_IN_USE;
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// return 0;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static void do_remove(int sn)
-//mdk-stage1// {
-//mdk-stage1// socket_info_t *s = &socket[sn];
-//mdk-stage1// card_info_t *card;
-//mdk-stage1// device_info_t **dev;
-//mdk-stage1// bind_info_t *bind;
-//mdk-stage1// int i, j;
-//mdk-stage1//
-//mdk-stage1// if (verbose) syslog(LOG_INFO, "shutting down socket %d", sn);
-//mdk-stage1//
-//mdk-stage1// card = s->card;
-//mdk-stage1// if (card == NULL)
-//mdk-stage1// goto done;
-//mdk-stage1//
-//mdk-stage1// /* Run "stop" commands */
-//mdk-stage1// dev = card->device;
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// if (dev[i]->class) {
-//mdk-stage1// execute_on_all("stop", dev[i]->class, sn, i);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /* unbind driver instances */
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// if (s->bind[i]) {
-//mdk-stage1// if (ioctl(s->fd, DS_UNBIND_REQUEST, s->bind[i]) != 0)
-//mdk-stage1// syslog(LOG_INFO, "unbind '%s' from socket %d failed: %m",
-//mdk-stage1// (char *)s->bind[i]->dev_info, sn);
-//mdk-stage1// while (s->bind[i]) {
-//mdk-stage1// bind = s->bind[i];
-//mdk-stage1// s->bind[i] = bind->next;
-//mdk-stage1// free(bind);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// for (i = 0; (s->mtd[i] != NULL); i++) {
-//mdk-stage1// bind_info_t b;
-//mdk-stage1// strcpy(b.dev_info, s->mtd[i]->module);
-//mdk-stage1// b.function = 0;
-//mdk-stage1// if (ioctl(s->fd, DS_UNBIND_REQUEST, &b) != 0)
-//mdk-stage1// syslog(LOG_INFO, "unbind MTD '%s' from socket %d failed: %m",
-//mdk-stage1// s->mtd[i]->module, sn);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /* remove kernel modules in inverse order */
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// for (j = dev[i]->modules-1; j >= 0; j--)
-//mdk-stage1// remove_module(dev[i]->module[j]);
-//mdk-stage1// free_device(dev[i]);
-//mdk-stage1// }
-//mdk-stage1// /* Remove any MTD's bound to this socket */
-//mdk-stage1// for (i = 0; (s->mtd[i] != NULL); i++) {
-//mdk-stage1// remove_module(s->mtd[i]->module);
-//mdk-stage1// free_mtd(s->mtd[i]);
-//mdk-stage1// s->mtd[i] = NULL;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// done:
-//mdk-stage1// beep(BEEP_TIME, BEEP_OK);
-//mdk-stage1// free_card(card);
-//mdk-stage1// s->card = NULL;
-//mdk-stage1// write_stab();
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static void do_suspend(int sn)
-//mdk-stage1// {
-//mdk-stage1// socket_info_t *s = &socket[sn];
-//mdk-stage1// card_info_t *card;
-//mdk-stage1// device_info_t **dev;
-//mdk-stage1// int i, ret;
-//mdk-stage1//
-//mdk-stage1// card = s->card;
-//mdk-stage1// if (card == NULL)
-//mdk-stage1// return;
-//mdk-stage1// dev = card->device;
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// if (dev[i]->class) {
-//mdk-stage1// ret = execute_on_all("suspend", dev[i]->class, sn, i);
-//mdk-stage1// if (ret != 0)
-//mdk-stage1// beep(BEEP_TIME, BEEP_ERR);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static void do_resume(int sn)
-//mdk-stage1// {
-//mdk-stage1// socket_info_t *s = &socket[sn];
-//mdk-stage1// card_info_t *card;
-//mdk-stage1// device_info_t **dev;
-//mdk-stage1// int i, ret;
-//mdk-stage1//
-//mdk-stage1// card = s->card;
-//mdk-stage1// if (card == NULL)
-//mdk-stage1// return;
-//mdk-stage1// dev = card->device;
-//mdk-stage1// for (i = 0; i < card->bindings; i++) {
-//mdk-stage1// if (dev[i]->class) {
-//mdk-stage1// ret = execute_on_all("resume", dev[i]->class, sn, i);
-//mdk-stage1// if (ret != 0)
-//mdk-stage1// beep(BEEP_TIME, BEEP_ERR);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
-
-/*====================================================================*/
-
-static void wait_for_pending(void)
-{
- cs_status_t status;
- int i;
- status.Function = 0;
- for (;;) {
- usleep(100000);
- for (i = 0; i < sockets; i++)
- if ((ioctl(socket[i].fd, DS_GET_STATUS, &status) == 0) &&
- (status.CardState & CS_EVENT_CARD_INSERTION))
- break;
- if (i == sockets) break;
- }
-}
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static void free_resources(void)
-//mdk-stage1// {
-//mdk-stage1// adjust_list_t *al;
-//mdk-stage1// int fd = socket[0].fd;
-//mdk-stage1//
-//mdk-stage1// for (al = root_adjust; al; al = al->next) {
-//mdk-stage1// if (al->adj.Action == ADD_MANAGED_RESOURCE) {
-//mdk-stage1// al->adj.Action = REMOVE_MANAGED_RESOURCE;
-//mdk-stage1// ioctl(fd, DS_ADJUST_RESOURCE_INFO, &al->adj);
-//mdk-stage1// } else if ((al->adj.Action == REMOVE_MANAGED_RESOURCE) &&
-//mdk-stage1// (al->adj.Resource == RES_IRQ)) {
-//mdk-stage1// al->adj.Action = ADD_MANAGED_RESOURCE;
-//mdk-stage1// ioctl(fd, DS_ADJUST_RESOURCE_INFO, &al->adj);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// }
-
-/*====================================================================*/
-
-static void adjust_resources(void)
-{
- adjust_list_t *al;
- int ret;
- char tmp[64];
- int fd = socket[0].fd;
-
- for (al = root_adjust; al; al = al->next) {
- ret = ioctl(fd, DS_ADJUST_RESOURCE_INFO, &al->adj);
- if (ret != 0) {
- switch (al->adj.Resource) {
- case RES_MEMORY_RANGE:
- sprintf(tmp, "memory %#lx-%#lx",
- al->adj.resource.memory.Base,
- al->adj.resource.memory.Base +
- al->adj.resource.memory.Size - 1);
- break;
- case RES_IO_RANGE:
- sprintf(tmp, "IO ports %#x-%#x",
- al->adj.resource.io.BasePort,
- al->adj.resource.io.BasePort +
- al->adj.resource.io.NumPorts - 1);
- break;
- case RES_IRQ:
- sprintf(tmp, "irq %u", al->adj.resource.irq.IRQ);
- break;
- }
- log_message("CM: could not adjust resource: %s: %m", tmp);
- }
- }
-}
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// static int cleanup_files = 0;
-//mdk-stage1//
-//mdk-stage1// static void fork_now(void)
-//mdk-stage1// {
-//mdk-stage1// int ret;
-//mdk-stage1// if ((ret = fork()) > 0) {
-//mdk-stage1// cleanup_files = 0;
-//mdk-stage1// exit(0);
-//mdk-stage1// }
-//mdk-stage1// if (ret == -1)
-//mdk-stage1// syslog(LOG_ERR, "forking: %m");
-//mdk-stage1// if (setsid() < 0)
-//mdk-stage1// syslog(LOG_ERR, "detaching from tty: %m");
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static void done(void)
-//mdk-stage1// {
-//mdk-stage1// syslog(LOG_INFO, "exiting");
-//mdk-stage1// if (cleanup_files) {
-//mdk-stage1// unlink(pidfile);
-//mdk-stage1// unlink(stabfile);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// /* most recent signal */
-//mdk-stage1// static int caught_signal = 0;
-//mdk-stage1//
-//mdk-stage1// static void catch_signal(int sig)
-//mdk-stage1// {
-//mdk-stage1// caught_signal = sig;
-//mdk-stage1// if (signal(sig, catch_signal) == SIG_ERR)
-//mdk-stage1// syslog(LOG_INFO, "signal(%d): %m", sig);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// static void handle_signal(void)
-//mdk-stage1// {
-//mdk-stage1// int i;
-//mdk-stage1// switch (caught_signal) {
-//mdk-stage1// case SIGTERM:
-//mdk-stage1// case SIGINT:
-//mdk-stage1// for (i = 0; i < sockets; i++)
-//mdk-stage1// if ((socket[i].state & SOCKET_PRESENT) &&
-//mdk-stage1// (do_check(i) == 0)) do_remove(i);
-//mdk-stage1// free_resources();
-//mdk-stage1// exit(0);
-//mdk-stage1// break;
-//mdk-stage1// case SIGHUP:
-//mdk-stage1// free_resources();
-//mdk-stage1// free_config();
-//mdk-stage1// syslog(LOG_INFO, "re-loading config file");
-//mdk-stage1// load_config();
-//mdk-stage1// adjust_resources();
-//mdk-stage1// break;
-//mdk-stage1// #ifdef SIGPWR
-//mdk-stage1// case SIGPWR:
-//mdk-stage1// break;
-//mdk-stage1// #endif
-//mdk-stage1// }
-//mdk-stage1// }
-
-/*====================================================================*/
-
-static int init_sockets(void)
-{
- int fd, i;
- servinfo_t serv;
-
-#ifdef __linux__
- major = lookup_dev("pcmcia");
- if (major < 0) {
- if (major == -ENODEV)
- log_message("CM: no pcmcia driver in /proc/devices");
- else
- log_message("CM: could not open /proc/devices: %m");
- return -1;
- }
-#endif
- for (fd = -1, i = 0; i < MAX_SOCKS; i++) {
- fd = open_sock(i, S_IFCHR|S_IREAD|S_IWRITE);
- if (fd < 0) break;
- socket[i].fd = fd;
- socket[i].state = 0;
- }
- if ((fd < 0) && (errno != ENODEV) && (errno != ENOENT))
- log_message("CM: open_sock(socket %d) failed: %m", i);
- sockets = i;
- if (sockets == 0) {
- log_message("CM: no sockets found!");
- return -1;
- } else
- log_message("CM: watching %d sockets", sockets);
-
- if (ioctl(socket[0].fd, DS_GET_CARD_SERVICES_INFO, &serv) == 0) {
- if (serv.Revision != CS_RELEASE_CODE)
- log_message("CM: warning, Card Services release does not match kernel (generally harmless)");
- } else {
- log_message("CM: could not get CS revision info!");
- return -1;
- }
- adjust_resources();
- return 0;
-}
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// int main(int argc, char *argv[])
-//mdk-stage1// {
-//mdk-stage1// int optch, errflg;
-//mdk-stage1// int i, max_fd, ret, event, pass;
-//mdk-stage1// int delay_fork = 0;
-//mdk-stage1// struct timeval tv;
-//mdk-stage1// fd_set fds;
-//mdk-stage1//
-//mdk-stage1// if (access("/var/lib/pcmcia", R_OK) == 0) {
-//mdk-stage1// stabfile = "/var/lib/pcmcia/stab";
-//mdk-stage1// } else {
-//mdk-stage1// stabfile = "/var/run/stab";
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// errflg = 0;
-//mdk-stage1// while ((optch = getopt(argc, argv, "Vqdvofc:m:p:s:")) != -1) {
-//mdk-stage1// switch (optch) {
-//mdk-stage1// case 'V':
-//mdk-stage1// fprintf(stderr, "cardmgr version " CS_RELEASE "\n");
-//mdk-stage1// return 0;
-//mdk-stage1// break;
-//mdk-stage1// case 'q':
-//mdk-stage1// be_quiet = 1; break;
-//mdk-stage1// case 'v':
-//mdk-stage1// verbose = 1; break;
-//mdk-stage1// case 'o':
-//mdk-stage1// one_pass = 1; break;
-//mdk-stage1// case 'f':
-//mdk-stage1// delay_fork = 1; break;
-//mdk-stage1// case 'c':
-//mdk-stage1// configpath = strdup(optarg); break;
-//mdk-stage1// #ifdef __linux__
-//mdk-stage1// case 'd':
-//mdk-stage1// do_modprobe = 1; break;
-//mdk-stage1// case 'm':
-//mdk-stage1// modpath = strdup(optarg); break;
-//mdk-stage1// #endif
-//mdk-stage1// case 'p':
-//mdk-stage1// pidfile = strdup(optarg); break;
-//mdk-stage1// case 's':
-//mdk-stage1// stabfile = strdup(optarg); break;
-//mdk-stage1// default:
-//mdk-stage1// errflg = 1; break;
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// if (errflg || (optind < argc)) {
-//mdk-stage1// fprintf(stderr, "usage: %s [-V] [-q] [-v] [-d] [-o] [-f] "
-//mdk-stage1// "[-c configpath] [-m modpath]\n "
-//mdk-stage1// "[-p pidfile] [-s stabfile]\n", argv[0]);
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// #ifdef DEBUG
-//mdk-stage1// openlog("cardmgr", LOG_PID|LOG_PERROR, LOG_DAEMON);
-//mdk-stage1// #else
-//mdk-stage1// openlog("cardmgr", LOG_PID|LOG_CONS, LOG_DAEMON);
-//mdk-stage1// close(0); close(1); close(2);
-//mdk-stage1// if (!delay_fork && !one_pass)
-//mdk-stage1// fork_now();
-//mdk-stage1// #endif
-//mdk-stage1//
-//mdk-stage1// syslog(LOG_INFO, "starting, version is " CS_RELEASE);
-//mdk-stage1// atexit(&done);
-//mdk-stage1// putenv("PATH=/bin:/sbin:/usr/bin:/usr/sbin");
-//mdk-stage1// if (verbose)
-//mdk-stage1// putenv("VERBOSE=1");
-//mdk-stage1//
-//mdk-stage1// #ifdef __linux__
-//mdk-stage1// if (modpath == NULL) {
-//mdk-stage1// if (access("/lib/modules/preferred", X_OK) == 0)
-//mdk-stage1// modpath = "/lib/modules/preferred";
-//mdk-stage1// else {
-//mdk-stage1// struct utsname utsname;
-//mdk-stage1// if (uname(&utsname) != 0) {
-//mdk-stage1// syslog(LOG_ERR, "uname(): %m");
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1// }
-//mdk-stage1// modpath = (char *)malloc(strlen(utsname.release)+14);
-//mdk-stage1// sprintf(modpath, "/lib/modules/%s", utsname.release);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// if (access(modpath, X_OK) != 0)
-//mdk-stage1// syslog(LOG_INFO, "cannot access %s: %m", modpath);
-//mdk-stage1// /* We default to using modprobe if it is available */
-//mdk-stage1// do_modprobe |= (access("/sbin/modprobe", X_OK) == 0);
-//mdk-stage1// #endif /* __linux__ */
-//mdk-stage1//
-//mdk-stage1// load_config();
-//mdk-stage1//
-//mdk-stage1// if (init_sockets() != 0)
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1//
-//mdk-stage1// /* If we've gotten this far, then clean up pid and stab at exit */
-//mdk-stage1// write_pid();
-//mdk-stage1// write_stab();
-//mdk-stage1// cleanup_files = 1;
-//mdk-stage1//
-//mdk-stage1// if (signal(SIGHUP, catch_signal) == SIG_ERR)
-//mdk-stage1// syslog(LOG_ERR, "signal(SIGHUP): %m");
-//mdk-stage1// if (signal(SIGTERM, catch_signal) == SIG_ERR)
-//mdk-stage1// syslog(LOG_ERR, "signal(SIGTERM): %m");
-//mdk-stage1// if (signal(SIGINT, catch_signal) == SIG_ERR)
-//mdk-stage1// syslog(LOG_ERR, "signal(SIGINT): %m");
-//mdk-stage1// #ifdef SIGPWR
-//mdk-stage1// if (signal(SIGPWR, catch_signal) == SIG_ERR)
-//mdk-stage1// syslog(LOG_ERR, "signal(SIGPWR): %m");
-//mdk-stage1// #endif
-//mdk-stage1//
-//mdk-stage1// for (i = max_fd = 0; i < sockets; i++)
-//mdk-stage1// max_fd = (socket[i].fd > max_fd) ? socket[i].fd : max_fd;
-//mdk-stage1//
-//mdk-stage1// /* First select() call: poll, don't wait */
-//mdk-stage1// tv.tv_sec = tv.tv_usec = 0;
-//mdk-stage1//
-//mdk-stage1// /* Wait for sockets in setup-pending state to settle */
-//mdk-stage1// if (one_pass || delay_fork)
-//mdk-stage1// wait_for_pending();
-//mdk-stage1//
-//mdk-stage1// for (pass = 0; ; pass++) {
-//mdk-stage1// FD_ZERO(&fds);
-//mdk-stage1// for (i = 0; i < sockets; i++)
-//mdk-stage1// FD_SET(socket[i].fd, &fds);
-//mdk-stage1//
-//mdk-stage1// while ((ret = select(max_fd+1, &fds, NULL, NULL,
-//mdk-stage1// ((pass == 0) ? &tv : NULL))) < 0) {
-//mdk-stage1// if (errno == EINTR) {
-//mdk-stage1// handle_signal();
-//mdk-stage1// } else {
-//mdk-stage1// syslog(LOG_ERR, "select(): %m");
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// for (i = 0; i < sockets; i++) {
-//mdk-stage1// if (!FD_ISSET(socket[i].fd, &fds))
-//mdk-stage1// continue;
-//mdk-stage1// ret = read(socket[i].fd, &event, 4);
-//mdk-stage1// if ((ret == -1) && (errno != EAGAIN))
-//mdk-stage1// syslog(LOG_INFO, "read(%d): %m\n", i);
-//mdk-stage1// if (ret != 4)
-//mdk-stage1// continue;
-//mdk-stage1//
-//mdk-stage1// switch (event) {
-//mdk-stage1// case CS_EVENT_CARD_REMOVAL:
-//mdk-stage1// socket[i].state = 0;
-//mdk-stage1// do_remove(i);
-//mdk-stage1// break;
-//mdk-stage1// case CS_EVENT_EJECTION_REQUEST:
-//mdk-stage1// ret = do_check(i);
-//mdk-stage1// if (ret == 0) {
-//mdk-stage1// socket[i].state = 0;
-//mdk-stage1// do_remove(i);
-//mdk-stage1// }
-//mdk-stage1// write(socket[i].fd, &ret, 4);
-//mdk-stage1// break;
-//mdk-stage1// case CS_EVENT_CARD_INSERTION:
-//mdk-stage1// case CS_EVENT_INSERTION_REQUEST:
-//mdk-stage1// socket[i].state |= SOCKET_PRESENT;
-//mdk-stage1// case CS_EVENT_CARD_RESET:
-//mdk-stage1// socket[i].state |= SOCKET_READY;
-//mdk-stage1// do_insert(i);
-//mdk-stage1// break;
-//mdk-stage1// case CS_EVENT_RESET_PHYSICAL:
-//mdk-stage1// socket[i].state &= ~SOCKET_READY;
-//mdk-stage1// break;
-//mdk-stage1// case CS_EVENT_PM_SUSPEND:
-//mdk-stage1// do_suspend(i);
-//mdk-stage1// break;
-//mdk-stage1// case CS_EVENT_PM_RESUME:
-//mdk-stage1// do_resume(i);
-//mdk-stage1// break;
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// if (one_pass)
-//mdk-stage1// exit(EXIT_SUCCESS);
-//mdk-stage1// if (delay_fork) {
-//mdk-stage1// fork_now();
-//mdk-stage1// write_pid();
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// } /* repeat */
-//mdk-stage1// return 0;
-//mdk-stage1// }
-
-
-
-static void cardmgr_fail(void)
-{
- log_message("CM: cardmgr: failed");
-}
-
-int cardmgr_call(void)
-{
- int i, max_fd, ret, event;
- struct timeval tv;
- fd_set fds;
-
- stabfile = "/var/run/stab";
-
- log_message("CM: cardmgr/hacked starting, version is " CS_RELEASE);
-
- if (load_config()) {
- cardmgr_fail();
- return -1;
- }
-
- if (init_sockets()) {
- cardmgr_fail();
- return -1;
- }
-
- /* If we've gotten this far, then clean up pid and stab at exit */
- write_stab();
-
- for (i = max_fd = 0; i < sockets; i++)
- max_fd = (socket[i].fd > max_fd) ? socket[i].fd : max_fd;
-
- /* First select() call: poll, don't wait */
- tv.tv_sec = tv.tv_usec = 0;
-
- /* Wait for sockets in setup-pending state to settle */
- wait_for_pending();
-
-
- FD_ZERO(&fds);
- for (i = 0; i < sockets; i++)
- FD_SET(socket[i].fd, &fds);
-
- if (select(max_fd+1, &fds, NULL, NULL, &tv) < 0) {
- log_perror("CM: select fails");
- return -1;
- }
-
- for (i = 0; i < sockets; i++) {
- if (!FD_ISSET(socket[i].fd, &fds))
- continue;
- ret = read(socket[i].fd, &event, 4);
- if ((ret == -1) && (errno != EAGAIN))
- log_message("CM: read(%d): %m", i);
- if (ret != 4)
- continue;
-
- switch (event) {
- case CS_EVENT_CARD_INSERTION:
- case CS_EVENT_INSERTION_REQUEST:
- socket[i].state |= SOCKET_PRESENT;
- case CS_EVENT_CARD_RESET:
- socket[i].state |= SOCKET_READY;
- do_insert(i);
- break;
- case CS_EVENT_RESET_PHYSICAL:
- socket[i].state &= ~SOCKET_READY;
- break;
- }
-
- }
-
- return 0;
-
-}
diff --git a/mdk-stage1/pcmcia_/cardmgr.h b/mdk-stage1/pcmcia_/cardmgr.h
deleted file mode 100644
index 1d002e972..000000000
--- a/mdk-stage1/pcmcia_/cardmgr.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * cardmgr.h 1.37 2001/08/24 12:19:20
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#define MAX_SOCKS 8
-#define MAX_BINDINGS 4
-#define MAX_MODULES 4
-
-typedef struct adjust_list_t {
- adjust_t adj;
- struct adjust_list_t *next;
-} adjust_list_t;
-
-typedef struct func_ident_t {
- u_char funcid;
-} func_ident_t;
-
-typedef struct manfid_ident_t {
- u_short manf;
- u_short card;
-} manfid_ident_t;
-
-typedef struct vers_ident_t {
- int ns;
- char *pi[4];
-} vers_ident_t;
-
-typedef struct tuple_ident_t {
- cisdata_t code;
- long ofs;
- char *info;
-} tuple_ident_t;
-
-typedef struct device_info_t {
- dev_info_t dev_info;
- int needs_mtd;
- int modules;
- char *module[MAX_MODULES];
- char *opts[MAX_MODULES];
- char *class;
- int refs;
- struct device_info_t *next;
-} device_info_t;
-
-#define VERS_1_IDENT 0x0001
-#define MANFID_IDENT 0x0002
-#define TUPLE_IDENT 0x0010
-#define FUNC_IDENT 0x0020
-#define BLANK_IDENT 0x0040
-#define PCI_IDENT 0x0080
-#define EXCL_IDENT 0x00f0
-
-typedef struct card_info_t {
- char *name;
- int ident_type;
- union {
- vers_ident_t vers;
- tuple_ident_t tuple;
- func_ident_t func;
- } id;
- manfid_ident_t manfid;
- int bindings;
- device_info_t *device[MAX_BINDINGS];
- int dev_fn[MAX_BINDINGS];
- char *cis_file;
- int refs;
- struct card_info_t *next;
-} card_info_t;
-
-typedef struct mtd_ident_t {
- char *name;
- enum {
- JEDEC_MTD=1, DTYPE_MTD, DEFAULT_MTD
- } mtd_type;
- int dtype, jedec_mfr, jedec_info;
- char *module, *opts;
- int refs;
- struct mtd_ident_t *next;
-} mtd_ident_t;
-
-extern adjust_list_t *root_adjust;
-extern device_info_t *root_device;
-extern card_info_t *blank_card;
-extern card_info_t *root_card, *root_func;
-extern mtd_ident_t *root_mtd, *default_mtd;
-
-int parse_configfile(char *fn);
diff --git a/mdk-stage1/pcmcia_/cirrus.h b/mdk-stage1/pcmcia_/cirrus.h
deleted file mode 100644
index 78f73b26d..000000000
--- a/mdk-stage1/pcmcia_/cirrus.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * cirrus.h 1.10 2001/08/24 12:15:33
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_CIRRUS_H
-#define _LINUX_CIRRUS_H
-
-#ifndef PCI_VENDOR_ID_CIRRUS
-#define PCI_VENDOR_ID_CIRRUS 0x1013
-#endif
-#ifndef PCI_DEVICE_ID_CIRRUS_6729
-#define PCI_DEVICE_ID_CIRRUS_6729 0x1100
-#endif
-#ifndef PCI_DEVICE_ID_CIRRUS_6832
-#define PCI_DEVICE_ID_CIRRUS_6832 0x1110
-#endif
-
-#define PD67_MISC_CTL_1 0x16 /* Misc control 1 */
-#define PD67_FIFO_CTL 0x17 /* FIFO control */
-#define PD67_MISC_CTL_2 0x1E /* Misc control 2 */
-#define PD67_CHIP_INFO 0x1f /* Chip information */
-#define PD67_ATA_CTL 0x026 /* 6730: ATA control */
-#define PD67_EXT_INDEX 0x2e /* Extension index */
-#define PD67_EXT_DATA 0x2f /* Extension data */
-
-/* PD6722 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD67_DATA_MASK0 0x01 /* Data mask 0 */
-#define PD67_DATA_MASK1 0x02 /* Data mask 1 */
-#define PD67_DMA_CTL 0x03 /* DMA control */
-
-/* PD6730 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD67_EXT_CTL_1 0x03 /* Extension control 1 */
-#define PD67_MEM_PAGE(n) ((n)+5) /* PCI window bits 31:24 */
-#define PD67_EXTERN_DATA 0x0a
-#define PD67_MISC_CTL_3 0x25
-#define PD67_SMB_PWR_CTL 0x26
-
-/* I/O window address offset */
-#define PD67_IO_OFF(w) (0x36+((w)<<1))
-
-/* Timing register sets */
-#define PD67_TIME_SETUP(n) (0x3a + 3*(n))
-#define PD67_TIME_CMD(n) (0x3b + 3*(n))
-#define PD67_TIME_RECOV(n) (0x3c + 3*(n))
-
-/* Flags for PD67_MISC_CTL_1 */
-#define PD67_MC1_5V_DET 0x01 /* 5v detect */
-#define PD67_MC1_MEDIA_ENA 0x01 /* 6730: Multimedia enable */
-#define PD67_MC1_VCC_3V 0x02 /* 3.3v Vcc */
-#define PD67_MC1_PULSE_MGMT 0x04
-#define PD67_MC1_PULSE_IRQ 0x08
-#define PD67_MC1_SPKR_ENA 0x10
-#define PD67_MC1_INPACK_ENA 0x80
-
-/* Flags for PD67_FIFO_CTL */
-#define PD67_FIFO_EMPTY 0x80
-
-/* Flags for PD67_MISC_CTL_2 */
-#define PD67_MC2_FREQ_BYPASS 0x01
-#define PD67_MC2_DYNAMIC_MODE 0x02
-#define PD67_MC2_SUSPEND 0x04
-#define PD67_MC2_5V_CORE 0x08
-#define PD67_MC2_LED_ENA 0x10 /* IRQ 12 is LED enable */
-#define PD67_MC2_FAST_PCI 0x10 /* 6729: PCI bus > 25 MHz */
-#define PD67_MC2_3STATE_BIT7 0x20 /* Floppy change bit */
-#define PD67_MC2_DMA_MODE 0x40
-#define PD67_MC2_IRQ15_RI 0x80 /* IRQ 15 is ring enable */
-
-/* Flags for PD67_CHIP_INFO */
-#define PD67_INFO_SLOTS 0x20 /* 0 = 1 slot, 1 = 2 slots */
-#define PD67_INFO_CHIP_ID 0xc0
-#define PD67_INFO_REV 0x1c
-
-/* Fields in PD67_TIME_* registers */
-#define PD67_TIME_SCALE 0xc0
-#define PD67_TIME_SCALE_1 0x00
-#define PD67_TIME_SCALE_16 0x40
-#define PD67_TIME_SCALE_256 0x80
-#define PD67_TIME_SCALE_4096 0xc0
-#define PD67_TIME_MULT 0x3f
-
-/* Fields in PD67_DMA_CTL */
-#define PD67_DMA_MODE 0xc0
-#define PD67_DMA_OFF 0x00
-#define PD67_DMA_DREQ_INPACK 0x40
-#define PD67_DMA_DREQ_WP 0x80
-#define PD67_DMA_DREQ_BVD2 0xc0
-#define PD67_DMA_PULLUP 0x20 /* Disable socket pullups? */
-
-/* Fields in PD67_EXT_CTL_1 */
-#define PD67_EC1_VCC_PWR_LOCK 0x01
-#define PD67_EC1_AUTO_PWR_CLEAR 0x02
-#define PD67_EC1_LED_ENA 0x04
-#define PD67_EC1_INV_CARD_IRQ 0x08
-#define PD67_EC1_INV_MGMT_IRQ 0x10
-#define PD67_EC1_PULLUP_CTL 0x20
-
-/* Fields in PD67_MISC_CTL_3 */
-#define PD67_MC3_IRQ_MASK 0x03
-#define PD67_MC3_IRQ_PCPCI 0x00
-#define PD67_MC3_IRQ_EXTERN 0x01
-#define PD67_MC3_IRQ_PCIWAY 0x02
-#define PD67_MC3_IRQ_PCI 0x03
-#define PD67_MC3_PWR_MASK 0x0c
-#define PD67_MC3_PWR_SERIAL 0x00
-#define PD67_MC3_PWR_TI2202 0x08
-#define PD67_MC3_PWR_SMB 0x0c
-
-/* Register definitions for Cirrus PD6832 PCI-to-CardBus bridge */
-
-/* PD6832 extension registers -- indexed in PD67_EXT_INDEX */
-#define PD68_EXT_CTL_2 0x0b
-#define PD68_PCI_SPACE 0x22
-#define PD68_PCCARD_SPACE 0x23
-#define PD68_WINDOW_TYPE 0x24
-#define PD68_EXT_CSC 0x2e
-#define PD68_MISC_CTL_4 0x2f
-#define PD68_MISC_CTL_5 0x30
-#define PD68_MISC_CTL_6 0x31
-
-/* Extra flags in PD67_MISC_CTL_3 */
-#define PD68_MC3_HW_SUSP 0x10
-#define PD68_MC3_MM_EXPAND 0x40
-#define PD68_MC3_MM_ARM 0x80
-
-/* Bridge Control Register */
-#define PD6832_BCR_MGMT_IRQ_ENA 0x0800
-
-/* Socket Number Register */
-#define PD6832_SOCKET_NUMBER 0x004c /* 8 bit */
-
-#endif /* _LINUX_CIRRUS_H */
diff --git a/mdk-stage1/pcmcia_/cistpl.h b/mdk-stage1/pcmcia_/cistpl.h
deleted file mode 100644
index 1d4cac20e..000000000
--- a/mdk-stage1/pcmcia_/cistpl.h
+++ /dev/null
@@ -1,604 +0,0 @@
-/*
- * cistpl.h 1.35 2001/08/24 12:16:12
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_CISTPL_H
-#define _LINUX_CISTPL_H
-
-#define CISTPL_NULL 0x00
-#define CISTPL_DEVICE 0x01
-#define CISTPL_LONGLINK_CB 0x02
-#define CISTPL_INDIRECT 0x03
-#define CISTPL_CONFIG_CB 0x04
-#define CISTPL_CFTABLE_ENTRY_CB 0x05
-#define CISTPL_LONGLINK_MFC 0x06
-#define CISTPL_BAR 0x07
-#define CISTPL_PWR_MGMNT 0x08
-#define CISTPL_EXTDEVICE 0x09
-#define CISTPL_CHECKSUM 0x10
-#define CISTPL_LONGLINK_A 0x11
-#define CISTPL_LONGLINK_C 0x12
-#define CISTPL_LINKTARGET 0x13
-#define CISTPL_NO_LINK 0x14
-#define CISTPL_VERS_1 0x15
-#define CISTPL_ALTSTR 0x16
-#define CISTPL_DEVICE_A 0x17
-#define CISTPL_JEDEC_C 0x18
-#define CISTPL_JEDEC_A 0x19
-#define CISTPL_CONFIG 0x1a
-#define CISTPL_CFTABLE_ENTRY 0x1b
-#define CISTPL_DEVICE_OC 0x1c
-#define CISTPL_DEVICE_OA 0x1d
-#define CISTPL_DEVICE_GEO 0x1e
-#define CISTPL_DEVICE_GEO_A 0x1f
-#define CISTPL_MANFID 0x20
-#define CISTPL_FUNCID 0x21
-#define CISTPL_FUNCE 0x22
-#define CISTPL_SWIL 0x23
-#define CISTPL_END 0xff
-/* Layer 2 tuples */
-#define CISTPL_VERS_2 0x40
-#define CISTPL_FORMAT 0x41
-#define CISTPL_GEOMETRY 0x42
-#define CISTPL_BYTEORDER 0x43
-#define CISTPL_DATE 0x44
-#define CISTPL_BATTERY 0x45
-#define CISTPL_FORMAT_A 0x47
-/* Layer 3 tuples */
-#define CISTPL_ORG 0x46
-#define CISTPL_SPCL 0x90
-
-typedef struct cistpl_longlink_t {
- u_int addr;
-} cistpl_longlink_t;
-
-typedef struct cistpl_checksum_t {
- u_short addr;
- u_short len;
- u_char sum;
-} cistpl_checksum_t;
-
-#define CISTPL_MAX_FUNCTIONS 8
-#define CISTPL_MFC_ATTR 0x00
-#define CISTPL_MFC_COMMON 0x01
-
-typedef struct cistpl_longlink_mfc_t {
- u_char nfn;
- struct {
- u_char space;
- u_int addr;
- } fn[CISTPL_MAX_FUNCTIONS];
-} cistpl_longlink_mfc_t;
-
-#define CISTPL_MAX_ALTSTR_STRINGS 4
-
-typedef struct cistpl_altstr_t {
- u_char ns;
- u_char ofs[CISTPL_MAX_ALTSTR_STRINGS];
- char str[254];
-} cistpl_altstr_t;
-
-#define CISTPL_DTYPE_NULL 0x00
-#define CISTPL_DTYPE_ROM 0x01
-#define CISTPL_DTYPE_OTPROM 0x02
-#define CISTPL_DTYPE_EPROM 0x03
-#define CISTPL_DTYPE_EEPROM 0x04
-#define CISTPL_DTYPE_FLASH 0x05
-#define CISTPL_DTYPE_SRAM 0x06
-#define CISTPL_DTYPE_DRAM 0x07
-#define CISTPL_DTYPE_FUNCSPEC 0x0d
-#define CISTPL_DTYPE_EXTEND 0x0e
-
-#define CISTPL_MAX_DEVICES 4
-
-typedef struct cistpl_device_t {
- u_char ndev;
- struct {
- u_char type;
- u_char wp;
- u_int speed;
- u_int size;
- } dev[CISTPL_MAX_DEVICES];
-} cistpl_device_t;
-
-#define CISTPL_DEVICE_MWAIT 0x01
-#define CISTPL_DEVICE_3VCC 0x02
-
-typedef struct cistpl_device_o_t {
- u_char flags;
- cistpl_device_t device;
-} cistpl_device_o_t;
-
-#define CISTPL_VERS_1_MAX_PROD_STRINGS 4
-
-typedef struct cistpl_vers_1_t {
- u_char major;
- u_char minor;
- u_char ns;
- u_char ofs[CISTPL_VERS_1_MAX_PROD_STRINGS];
- char str[254];
-} cistpl_vers_1_t;
-
-typedef struct cistpl_jedec_t {
- u_char nid;
- struct {
- u_char mfr;
- u_char info;
- } id[CISTPL_MAX_DEVICES];
-} cistpl_jedec_t;
-
-typedef struct cistpl_manfid_t {
- u_short manf;
- u_short card;
-} cistpl_manfid_t;
-
-#define CISTPL_FUNCID_MULTI 0x00
-#define CISTPL_FUNCID_MEMORY 0x01
-#define CISTPL_FUNCID_SERIAL 0x02
-#define CISTPL_FUNCID_PARALLEL 0x03
-#define CISTPL_FUNCID_FIXED 0x04
-#define CISTPL_FUNCID_VIDEO 0x05
-#define CISTPL_FUNCID_NETWORK 0x06
-#define CISTPL_FUNCID_AIMS 0x07
-#define CISTPL_FUNCID_SCSI 0x08
-
-#define CISTPL_SYSINIT_POST 0x01
-#define CISTPL_SYSINIT_ROM 0x02
-
-typedef struct cistpl_funcid_t {
- u_char func;
- u_char sysinit;
-} cistpl_funcid_t;
-
-typedef struct cistpl_funce_t {
- u_char type;
- u_char data[0];
-} cistpl_funce_t;
-
-/*======================================================================
-
- Modem Function Extension Tuples
-
-======================================================================*/
-
-#define CISTPL_FUNCE_SERIAL_IF 0x00
-#define CISTPL_FUNCE_SERIAL_CAP 0x01
-#define CISTPL_FUNCE_SERIAL_SERV_DATA 0x02
-#define CISTPL_FUNCE_SERIAL_SERV_FAX 0x03
-#define CISTPL_FUNCE_SERIAL_SERV_VOICE 0x04
-#define CISTPL_FUNCE_SERIAL_CAP_DATA 0x05
-#define CISTPL_FUNCE_SERIAL_CAP_FAX 0x06
-#define CISTPL_FUNCE_SERIAL_CAP_VOICE 0x07
-#define CISTPL_FUNCE_SERIAL_IF_DATA 0x08
-#define CISTPL_FUNCE_SERIAL_IF_FAX 0x09
-#define CISTPL_FUNCE_SERIAL_IF_VOICE 0x0a
-
-/* UART identification */
-#define CISTPL_SERIAL_UART_8250 0x00
-#define CISTPL_SERIAL_UART_16450 0x01
-#define CISTPL_SERIAL_UART_16550 0x02
-#define CISTPL_SERIAL_UART_8251 0x03
-#define CISTPL_SERIAL_UART_8530 0x04
-#define CISTPL_SERIAL_UART_85230 0x05
-
-/* UART capabilities */
-#define CISTPL_SERIAL_UART_SPACE 0x01
-#define CISTPL_SERIAL_UART_MARK 0x02
-#define CISTPL_SERIAL_UART_ODD 0x04
-#define CISTPL_SERIAL_UART_EVEN 0x08
-#define CISTPL_SERIAL_UART_5BIT 0x01
-#define CISTPL_SERIAL_UART_6BIT 0x02
-#define CISTPL_SERIAL_UART_7BIT 0x04
-#define CISTPL_SERIAL_UART_8BIT 0x08
-#define CISTPL_SERIAL_UART_1STOP 0x10
-#define CISTPL_SERIAL_UART_MSTOP 0x20
-#define CISTPL_SERIAL_UART_2STOP 0x40
-
-typedef struct cistpl_serial_t {
- u_char uart_type;
- u_char uart_cap_0;
- u_char uart_cap_1;
-} cistpl_serial_t;
-
-typedef struct cistpl_modem_cap_t {
- u_char flow;
- u_char cmd_buf;
- u_char rcv_buf_0, rcv_buf_1, rcv_buf_2;
- u_char xmit_buf_0, xmit_buf_1, xmit_buf_2;
-} cistpl_modem_cap_t;
-
-#define CISTPL_SERIAL_MOD_103 0x01
-#define CISTPL_SERIAL_MOD_V21 0x02
-#define CISTPL_SERIAL_MOD_V23 0x04
-#define CISTPL_SERIAL_MOD_V22 0x08
-#define CISTPL_SERIAL_MOD_212A 0x10
-#define CISTPL_SERIAL_MOD_V22BIS 0x20
-#define CISTPL_SERIAL_MOD_V26 0x40
-#define CISTPL_SERIAL_MOD_V26BIS 0x80
-#define CISTPL_SERIAL_MOD_V27BIS 0x01
-#define CISTPL_SERIAL_MOD_V29 0x02
-#define CISTPL_SERIAL_MOD_V32 0x04
-#define CISTPL_SERIAL_MOD_V32BIS 0x08
-#define CISTPL_SERIAL_MOD_V34 0x10
-
-#define CISTPL_SERIAL_ERR_MNP2_4 0x01
-#define CISTPL_SERIAL_ERR_V42_LAPM 0x02
-
-#define CISTPL_SERIAL_CMPR_V42BIS 0x01
-#define CISTPL_SERIAL_CMPR_MNP5 0x02
-
-#define CISTPL_SERIAL_CMD_AT1 0x01
-#define CISTPL_SERIAL_CMD_AT2 0x02
-#define CISTPL_SERIAL_CMD_AT3 0x04
-#define CISTPL_SERIAL_CMD_MNP_AT 0x08
-#define CISTPL_SERIAL_CMD_V25BIS 0x10
-#define CISTPL_SERIAL_CMD_V25A 0x20
-#define CISTPL_SERIAL_CMD_DMCL 0x40
-
-typedef struct cistpl_data_serv_t {
- u_char max_data_0;
- u_char max_data_1;
- u_char modulation_0;
- u_char modulation_1;
- u_char error_control;
- u_char compression;
- u_char cmd_protocol;
- u_char escape;
- u_char encrypt;
- u_char misc_features;
- u_char ccitt_code[0];
-} cistpl_data_serv_t;
-
-typedef struct cistpl_fax_serv_t {
- u_char max_data_0;
- u_char max_data_1;
- u_char modulation;
- u_char encrypt;
- u_char features_0;
- u_char features_1;
- u_char ccitt_code[0];
-} cistpl_fax_serv_t;
-
-typedef struct cistpl_voice_serv_t {
- u_char max_data_0;
- u_char max_data_1;
-} cistpl_voice_serv_t;
-
-/*======================================================================
-
- LAN Function Extension Tuples
-
-======================================================================*/
-
-#define CISTPL_FUNCE_LAN_TECH 0x01
-#define CISTPL_FUNCE_LAN_SPEED 0x02
-#define CISTPL_FUNCE_LAN_MEDIA 0x03
-#define CISTPL_FUNCE_LAN_NODE_ID 0x04
-#define CISTPL_FUNCE_LAN_CONNECTOR 0x05
-
-/* LAN technologies */
-#define CISTPL_LAN_TECH_ARCNET 0x01
-#define CISTPL_LAN_TECH_ETHERNET 0x02
-#define CISTPL_LAN_TECH_TOKENRING 0x03
-#define CISTPL_LAN_TECH_LOCALTALK 0x04
-#define CISTPL_LAN_TECH_FDDI 0x05
-#define CISTPL_LAN_TECH_ATM 0x06
-#define CISTPL_LAN_TECH_WIRELESS 0x07
-
-typedef struct cistpl_lan_tech_t {
- u_char tech;
-} cistpl_lan_tech_t;
-
-typedef struct cistpl_lan_speed_t {
- u_int speed;
-} cistpl_lan_speed_t;
-
-/* LAN media definitions */
-#define CISTPL_LAN_MEDIA_UTP 0x01
-#define CISTPL_LAN_MEDIA_STP 0x02
-#define CISTPL_LAN_MEDIA_THIN_COAX 0x03
-#define CISTPL_LAN_MEDIA_THICK_COAX 0x04
-#define CISTPL_LAN_MEDIA_FIBER 0x05
-#define CISTPL_LAN_MEDIA_900MHZ 0x06
-#define CISTPL_LAN_MEDIA_2GHZ 0x07
-#define CISTPL_LAN_MEDIA_5GHZ 0x08
-#define CISTPL_LAN_MEDIA_DIFF_IR 0x09
-#define CISTPL_LAN_MEDIA_PTP_IR 0x0a
-
-typedef struct cistpl_lan_media_t {
- u_char media;
-} cistpl_lan_media_t;
-
-typedef struct cistpl_lan_node_id_t {
- u_char nb;
- u_char id[16];
-} cistpl_lan_node_id_t;
-
-typedef struct cistpl_lan_connector_t {
- u_char code;
-} cistpl_lan_connector_t;
-
-/*======================================================================
-
- IDE Function Extension Tuples
-
-======================================================================*/
-
-#define CISTPL_IDE_INTERFACE 0x01
-
-typedef struct cistpl_ide_interface_t {
- u_char interface;
-} cistpl_ide_interface_t;
-
-/* First feature byte */
-#define CISTPL_IDE_SILICON 0x04
-#define CISTPL_IDE_UNIQUE 0x08
-#define CISTPL_IDE_DUAL 0x10
-
-/* Second feature byte */
-#define CISTPL_IDE_HAS_SLEEP 0x01
-#define CISTPL_IDE_HAS_STANDBY 0x02
-#define CISTPL_IDE_HAS_IDLE 0x04
-#define CISTPL_IDE_LOW_POWER 0x08
-#define CISTPL_IDE_REG_INHIBIT 0x10
-#define CISTPL_IDE_HAS_INDEX 0x20
-#define CISTPL_IDE_IOIS16 0x40
-
-typedef struct cistpl_ide_feature_t {
- u_char feature1;
- u_char feature2;
-} cistpl_ide_feature_t;
-
-#define CISTPL_FUNCE_IDE_IFACE 0x01
-#define CISTPL_FUNCE_IDE_MASTER 0x02
-#define CISTPL_FUNCE_IDE_SLAVE 0x03
-
-/*======================================================================
-
- Configuration Table Entries
-
-======================================================================*/
-
-#define CISTPL_BAR_SPACE 0x07
-#define CISTPL_BAR_SPACE_IO 0x10
-#define CISTPL_BAR_PREFETCH 0x20
-#define CISTPL_BAR_CACHEABLE 0x40
-#define CISTPL_BAR_1MEG_MAP 0x80
-
-typedef struct cistpl_bar_t {
- u_char attr;
- u_int size;
-} cistpl_bar_t;
-
-typedef struct cistpl_config_t {
- u_char last_idx;
- u_int base;
- u_int rmask[4];
- u_char subtuples;
-} cistpl_config_t;
-
-/* These are bits in the 'present' field, and indices in 'param' */
-#define CISTPL_POWER_VNOM 0
-#define CISTPL_POWER_VMIN 1
-#define CISTPL_POWER_VMAX 2
-#define CISTPL_POWER_ISTATIC 3
-#define CISTPL_POWER_IAVG 4
-#define CISTPL_POWER_IPEAK 5
-#define CISTPL_POWER_IDOWN 6
-
-#define CISTPL_POWER_HIGHZ_OK 0x01
-#define CISTPL_POWER_HIGHZ_REQ 0x02
-
-typedef struct cistpl_power_t {
- u_char present;
- u_char flags;
- u_int param[7];
-} cistpl_power_t;
-
-typedef struct cistpl_timing_t {
- u_int wait, waitscale;
- u_int ready, rdyscale;
- u_int reserved, rsvscale;
-} cistpl_timing_t;
-
-#define CISTPL_IO_LINES_MASK 0x1f
-#define CISTPL_IO_8BIT 0x20
-#define CISTPL_IO_16BIT 0x40
-#define CISTPL_IO_RANGE 0x80
-
-#define CISTPL_IO_MAX_WIN 16
-
-typedef struct cistpl_io_t {
- u_char flags;
- u_char nwin;
- struct {
- u_int base;
- u_int len;
- } win[CISTPL_IO_MAX_WIN];
-} cistpl_io_t;
-
-typedef struct cistpl_irq_t {
- u_int IRQInfo1;
- u_int IRQInfo2;
-} cistpl_irq_t;
-
-#define CISTPL_MEM_MAX_WIN 8
-
-typedef struct cistpl_mem_t {
- u_char flags;
- u_char nwin;
- struct {
- u_int len;
- u_int card_addr;
- u_int host_addr;
- } win[CISTPL_MEM_MAX_WIN];
-} cistpl_mem_t;
-
-#define CISTPL_CFTABLE_DEFAULT 0x0001
-#define CISTPL_CFTABLE_BVDS 0x0002
-#define CISTPL_CFTABLE_WP 0x0004
-#define CISTPL_CFTABLE_RDYBSY 0x0008
-#define CISTPL_CFTABLE_MWAIT 0x0010
-#define CISTPL_CFTABLE_AUDIO 0x0800
-#define CISTPL_CFTABLE_READONLY 0x1000
-#define CISTPL_CFTABLE_PWRDOWN 0x2000
-
-typedef struct cistpl_cftable_entry_t {
- u_char index;
- u_short flags;
- u_char interface;
- cistpl_power_t vcc, vpp1, vpp2;
- cistpl_timing_t timing;
- cistpl_io_t io;
- cistpl_irq_t irq;
- cistpl_mem_t mem;
- u_char subtuples;
-} cistpl_cftable_entry_t;
-
-#define CISTPL_CFTABLE_MASTER 0x000100
-#define CISTPL_CFTABLE_INVALIDATE 0x000200
-#define CISTPL_CFTABLE_VGA_PALETTE 0x000400
-#define CISTPL_CFTABLE_PARITY 0x000800
-#define CISTPL_CFTABLE_WAIT 0x001000
-#define CISTPL_CFTABLE_SERR 0x002000
-#define CISTPL_CFTABLE_FAST_BACK 0x004000
-#define CISTPL_CFTABLE_BINARY_AUDIO 0x010000
-#define CISTPL_CFTABLE_PWM_AUDIO 0x020000
-
-typedef struct cistpl_cftable_entry_cb_t {
- u_char index;
- u_int flags;
- cistpl_power_t vcc, vpp1, vpp2;
- u_char io;
- cistpl_irq_t irq;
- u_char mem;
- u_char subtuples;
-} cistpl_cftable_entry_cb_t;
-
-typedef struct cistpl_device_geo_t {
- u_char ngeo;
- struct {
- u_char buswidth;
- u_int erase_block;
- u_int read_block;
- u_int write_block;
- u_int partition;
- u_int interleave;
- } geo[CISTPL_MAX_DEVICES];
-} cistpl_device_geo_t;
-
-typedef struct cistpl_vers_2_t {
- u_char vers;
- u_char comply;
- u_short dindex;
- u_char vspec8, vspec9;
- u_char nhdr;
- u_char vendor, info;
- char str[244];
-} cistpl_vers_2_t;
-
-typedef struct cistpl_org_t {
- u_char data_org;
- char desc[30];
-} cistpl_org_t;
-
-#define CISTPL_ORG_FS 0x00
-#define CISTPL_ORG_APPSPEC 0x01
-#define CISTPL_ORG_XIP 0x02
-
-typedef struct cistpl_format_t {
- u_char type;
- u_char edc;
- u_int offset;
- u_int length;
-} cistpl_format_t;
-
-#define CISTPL_FORMAT_DISK 0x00
-#define CISTPL_FORMAT_MEM 0x01
-
-#define CISTPL_EDC_NONE 0x00
-#define CISTPL_EDC_CKSUM 0x01
-#define CISTPL_EDC_CRC 0x02
-#define CISTPL_EDC_PCC 0x03
-
-typedef union cisparse_t {
- cistpl_device_t device;
- cistpl_checksum_t checksum;
- cistpl_longlink_t longlink;
- cistpl_longlink_mfc_t longlink_mfc;
- cistpl_vers_1_t version_1;
- cistpl_altstr_t altstr;
- cistpl_jedec_t jedec;
- cistpl_manfid_t manfid;
- cistpl_funcid_t funcid;
- cistpl_funce_t funce;
- cistpl_bar_t bar;
- cistpl_config_t config;
- cistpl_cftable_entry_t cftable_entry;
- cistpl_cftable_entry_cb_t cftable_entry_cb;
- cistpl_device_geo_t device_geo;
- cistpl_vers_2_t vers_2;
- cistpl_org_t org;
- cistpl_format_t format;
-} cisparse_t;
-
-typedef struct tuple_t {
- u_int Attributes;
- cisdata_t DesiredTuple;
- u_int Flags; /* internal use */
- u_int LinkOffset; /* internal use */
- u_int CISOffset; /* internal use */
- cisdata_t TupleCode;
- cisdata_t TupleLink;
- cisdata_t TupleOffset;
- cisdata_t TupleDataMax;
- cisdata_t TupleDataLen;
- cisdata_t *TupleData;
-} tuple_t;
-
-/* Special cisdata_t value */
-#define RETURN_FIRST_TUPLE 0xff
-
-/* Attributes for tuple calls */
-#define TUPLE_RETURN_LINK 0x01
-#define TUPLE_RETURN_COMMON 0x02
-
-/* For ValidateCIS */
-typedef struct cisinfo_t {
- u_int Chains;
-} cisinfo_t;
-
-#define CISTPL_MAX_CIS_SIZE 0x200
-
-/* For ReplaceCIS */
-typedef struct cisdump_t {
- u_int Length;
- cisdata_t Data[CISTPL_MAX_CIS_SIZE];
-} cisdump_t;
-
-#endif /* LINUX_CISTPL_H */
diff --git a/mdk-stage1/pcmcia_/cs.h b/mdk-stage1/pcmcia_/cs.h
deleted file mode 100644
index 9abeac216..000000000
--- a/mdk-stage1/pcmcia_/cs.h
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * cs.h 1.73 2001/08/24 12:16:12
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_CS_H
-#define _LINUX_CS_H
-
-/* For AccessConfigurationRegister */
-typedef struct conf_reg_t {
- u_char Function;
- u_int Action;
- off_t Offset;
- u_int Value;
-} conf_reg_t;
-
-/* Actions */
-#define CS_READ 1
-#define CS_WRITE 2
-
-/* for AdjustResourceInfo */
-typedef struct adjust_t {
- u_int Action;
- u_int Resource;
- u_int Attributes;
- union {
- struct memory {
- unsigned long Base;
- unsigned long Size;
- } memory;
- struct io {
- ioaddr_t BasePort;
- ioaddr_t NumPorts;
- u_int IOAddrLines;
- } io;
- struct irq {
- u_int IRQ;
- } irq;
- } resource;
-} adjust_t;
-
-/* Action field */
-#define REMOVE_MANAGED_RESOURCE 1
-#define ADD_MANAGED_RESOURCE 2
-#define GET_FIRST_MANAGED_RESOURCE 3
-#define GET_NEXT_MANAGED_RESOURCE 4
-/* Resource field */
-#define RES_MEMORY_RANGE 1
-#define RES_IO_RANGE 2
-#define RES_IRQ 3
-/* Attribute field */
-#define RES_IRQ_TYPE 0x03
-#define RES_IRQ_TYPE_EXCLUSIVE 0
-#define RES_IRQ_TYPE_TIME 1
-#define RES_IRQ_TYPE_DYNAMIC 2
-#define RES_IRQ_CSC 0x04
-#define RES_SHARED 0x08
-#define RES_RESERVED 0x10
-#define RES_ALLOCATED 0x20
-#define RES_REMOVED 0x40
-
-typedef struct servinfo_t {
- char Signature[2];
- u_int Count;
- u_int Revision;
- u_int CSLevel;
- char *VendorString;
-} servinfo_t;
-
-typedef struct event_callback_args_t {
- client_handle_t client_handle;
- void *info;
- void *mtdrequest;
- void *buffer;
- void *misc;
- void *client_data;
- struct bus_operations *bus;
-} event_callback_args_t;
-
-/* for GetConfigurationInfo */
-typedef struct config_info_t {
- u_char Function;
- u_int Attributes;
- u_int Vcc, Vpp1, Vpp2;
- u_int IntType;
- u_int ConfigBase;
- u_char Status, Pin, Copy, Option, ExtStatus;
- u_int Present;
- u_int CardValues;
- u_int AssignedIRQ;
- u_int IRQAttributes;
- ioaddr_t BasePort1;
- ioaddr_t NumPorts1;
- u_int Attributes1;
- ioaddr_t BasePort2;
- ioaddr_t NumPorts2;
- u_int Attributes2;
- u_int IOAddrLines;
-} config_info_t;
-
-/* For CardValues field */
-#define CV_OPTION_VALUE 0x01
-#define CV_STATUS_VALUE 0x02
-#define CV_PIN_REPLACEMENT 0x04
-#define CV_COPY_VALUE 0x08
-#define CV_EXT_STATUS 0x10
-
-/* For GetFirst/NextClient */
-typedef struct client_req_t {
- socket_t Socket;
- u_int Attributes;
-} client_req_t;
-
-#define CLIENT_THIS_SOCKET 0x01
-
-/* For RegisterClient */
-typedef struct client_reg_t {
- dev_info_t *dev_info;
- u_int Attributes;
- u_int EventMask;
- int (*event_handler)(event_t event, int priority,
- event_callback_args_t *);
- event_callback_args_t event_callback_args;
- u_int Version;
-} client_reg_t;
-
-/* ModifyConfiguration */
-typedef struct modconf_t {
- u_int Attributes;
- u_int Vcc, Vpp1, Vpp2;
-} modconf_t;
-
-/* Attributes for ModifyConfiguration */
-#define CONF_IRQ_CHANGE_VALID 0x100
-#define CONF_VCC_CHANGE_VALID 0x200
-#define CONF_VPP1_CHANGE_VALID 0x400
-#define CONF_VPP2_CHANGE_VALID 0x800
-
-/* For RequestConfiguration */
-typedef struct config_req_t {
- u_int Attributes;
- u_int Vcc, Vpp1, Vpp2;
- u_int IntType;
- u_int ConfigBase;
- u_char Status, Pin, Copy, ExtStatus;
- u_char ConfigIndex;
- u_int Present;
-} config_req_t;
-
-/* Attributes for RequestConfiguration */
-#define CONF_ENABLE_IRQ 0x01
-#define CONF_ENABLE_DMA 0x02
-#define CONF_ENABLE_SPKR 0x04
-#define CONF_VALID_CLIENT 0x100
-
-/* IntType field */
-#define INT_MEMORY 0x01
-#define INT_MEMORY_AND_IO 0x02
-#define INT_CARDBUS 0x04
-#define INT_ZOOMED_VIDEO 0x08
-
-/* For RequestIO and ReleaseIO */
-typedef struct io_req_t {
- ioaddr_t BasePort1;
- ioaddr_t NumPorts1;
- u_int Attributes1;
- ioaddr_t BasePort2;
- ioaddr_t NumPorts2;
- u_int Attributes2;
- u_int IOAddrLines;
-} io_req_t;
-
-/* Attributes for RequestIO and ReleaseIO */
-#define IO_SHARED 0x01
-#define IO_FIRST_SHARED 0x02
-#define IO_FORCE_ALIAS_ACCESS 0x04
-#define IO_DATA_PATH_WIDTH 0x18
-#define IO_DATA_PATH_WIDTH_8 0x00
-#define IO_DATA_PATH_WIDTH_16 0x08
-#define IO_DATA_PATH_WIDTH_AUTO 0x10
-
-/* For RequestIRQ and ReleaseIRQ */
-typedef struct irq_req_t {
- u_int Attributes;
- u_int AssignedIRQ;
- u_int IRQInfo1, IRQInfo2;
- void *Handler;
- void *Instance;
-} irq_req_t;
-
-/* Attributes for RequestIRQ and ReleaseIRQ */
-#define IRQ_TYPE 0x03
-#define IRQ_TYPE_EXCLUSIVE 0x00
-#define IRQ_TYPE_TIME 0x01
-#define IRQ_TYPE_DYNAMIC_SHARING 0x02
-#define IRQ_FORCED_PULSE 0x04
-#define IRQ_FIRST_SHARED 0x08
-#define IRQ_HANDLE_PRESENT 0x10
-#define IRQ_PULSE_ALLOCATED 0x100
-
-/* Bits in IRQInfo1 field */
-#define IRQ_MASK 0x0f
-#define IRQ_NMI_ID 0x01
-#define IRQ_IOCK_ID 0x02
-#define IRQ_BERR_ID 0x04
-#define IRQ_VEND_ID 0x08
-#define IRQ_INFO2_VALID 0x10
-#define IRQ_LEVEL_ID 0x20
-#define IRQ_PULSE_ID 0x40
-#define IRQ_SHARE_ID 0x80
-
-typedef struct eventmask_t {
- u_int Attributes;
- u_int EventMask;
-} eventmask_t;
-
-#define CONF_EVENT_MASK_VALID 0x01
-
-/* Configuration registers present */
-#define PRESENT_OPTION 0x001
-#define PRESENT_STATUS 0x002
-#define PRESENT_PIN_REPLACE 0x004
-#define PRESENT_COPY 0x008
-#define PRESENT_EXT_STATUS 0x010
-#define PRESENT_IOBASE_0 0x020
-#define PRESENT_IOBASE_1 0x040
-#define PRESENT_IOBASE_2 0x080
-#define PRESENT_IOBASE_3 0x100
-#define PRESENT_IOSIZE 0x200
-
-/* For GetMemPage, MapMemPage */
-typedef struct memreq_t {
- u_int CardOffset;
- page_t Page;
-} memreq_t;
-
-/* For ModifyWindow */
-typedef struct modwin_t {
- u_int Attributes;
- u_int AccessSpeed;
-} modwin_t;
-
-/* For RequestWindow */
-typedef struct win_req_t {
- u_int Attributes;
- unsigned long Base;
- u_int Size;
- u_int AccessSpeed;
-} win_req_t;
-
-/* Attributes for RequestWindow */
-#define WIN_ADDR_SPACE 0x0001
-#define WIN_ADDR_SPACE_MEM 0x0000
-#define WIN_ADDR_SPACE_IO 0x0001
-#define WIN_MEMORY_TYPE 0x0002
-#define WIN_MEMORY_TYPE_CM 0x0000
-#define WIN_MEMORY_TYPE_AM 0x0002
-#define WIN_ENABLE 0x0004
-#define WIN_DATA_WIDTH 0x0018
-#define WIN_DATA_WIDTH_8 0x0000
-#define WIN_DATA_WIDTH_16 0x0008
-#define WIN_DATA_WIDTH_32 0x0010
-#define WIN_PAGED 0x0020
-#define WIN_SHARED 0x0040
-#define WIN_FIRST_SHARED 0x0080
-#define WIN_USE_WAIT 0x0100
-#define WIN_STRICT_ALIGN 0x0200
-#define WIN_MAP_BELOW_1MB 0x0400
-#define WIN_PREFETCH 0x0800
-#define WIN_CACHEABLE 0x1000
-#define WIN_BAR_MASK 0xe000
-#define WIN_BAR_SHIFT 13
-
-/* Attributes for RegisterClient */
-#define INFO_MASTER_CLIENT 0x01
-#define INFO_IO_CLIENT 0x02
-#define INFO_MTD_CLIENT 0x04
-#define INFO_MEM_CLIENT 0x08
-#define MAX_NUM_CLIENTS 3
-
-#define INFO_CARD_SHARE 0x10
-#define INFO_CARD_EXCL 0x20
-
-typedef struct cs_status_t {
- u_char Function;
- event_t CardState;
- event_t SocketState;
-} cs_status_t;
-
-typedef struct error_info_t {
- int func;
- int retcode;
-} error_info_t;
-
-/* Special stuff for binding drivers to sockets */
-typedef struct bind_req_t {
- socket_t Socket;
- u_char Function;
- dev_info_t *dev_info;
-} bind_req_t;
-
-/* Flag to bind to all functions */
-#define BIND_FN_ALL 0xff
-
-typedef struct mtd_bind_t {
- socket_t Socket;
- u_int Attributes;
- u_int CardOffset;
- dev_info_t *dev_info;
-} mtd_bind_t;
-
-/* Events */
-#define CS_EVENT_PRI_LOW 0
-#define CS_EVENT_PRI_HIGH 1
-
-#define CS_EVENT_WRITE_PROTECT 0x000001
-#define CS_EVENT_CARD_LOCK 0x000002
-#define CS_EVENT_CARD_INSERTION 0x000004
-#define CS_EVENT_CARD_REMOVAL 0x000008
-#define CS_EVENT_BATTERY_DEAD 0x000010
-#define CS_EVENT_BATTERY_LOW 0x000020
-#define CS_EVENT_READY_CHANGE 0x000040
-#define CS_EVENT_CARD_DETECT 0x000080
-#define CS_EVENT_RESET_REQUEST 0x000100
-#define CS_EVENT_RESET_PHYSICAL 0x000200
-#define CS_EVENT_CARD_RESET 0x000400
-#define CS_EVENT_REGISTRATION_COMPLETE 0x000800
-#define CS_EVENT_RESET_COMPLETE 0x001000
-#define CS_EVENT_PM_SUSPEND 0x002000
-#define CS_EVENT_PM_RESUME 0x004000
-#define CS_EVENT_INSERTION_REQUEST 0x008000
-#define CS_EVENT_EJECTION_REQUEST 0x010000
-#define CS_EVENT_MTD_REQUEST 0x020000
-#define CS_EVENT_ERASE_COMPLETE 0x040000
-#define CS_EVENT_REQUEST_ATTENTION 0x080000
-#define CS_EVENT_CB_DETECT 0x100000
-#define CS_EVENT_3VCARD 0x200000
-#define CS_EVENT_XVCARD 0x400000
-
-/* Return codes */
-#define CS_SUCCESS 0x00
-#define CS_BAD_ADAPTER 0x01
-#define CS_BAD_ATTRIBUTE 0x02
-#define CS_BAD_BASE 0x03
-#define CS_BAD_EDC 0x04
-#define CS_BAD_IRQ 0x06
-#define CS_BAD_OFFSET 0x07
-#define CS_BAD_PAGE 0x08
-#define CS_READ_FAILURE 0x09
-#define CS_BAD_SIZE 0x0a
-#define CS_BAD_SOCKET 0x0b
-#define CS_BAD_TYPE 0x0d
-#define CS_BAD_VCC 0x0e
-#define CS_BAD_VPP 0x0f
-#define CS_BAD_WINDOW 0x11
-#define CS_WRITE_FAILURE 0x12
-#define CS_NO_CARD 0x14
-#define CS_UNSUPPORTED_FUNCTION 0x15
-#define CS_UNSUPPORTED_MODE 0x16
-#define CS_BAD_SPEED 0x17
-#define CS_BUSY 0x18
-#define CS_GENERAL_FAILURE 0x19
-#define CS_WRITE_PROTECTED 0x1a
-#define CS_BAD_ARG_LENGTH 0x1b
-#define CS_BAD_ARGS 0x1c
-#define CS_CONFIGURATION_LOCKED 0x1d
-#define CS_IN_USE 0x1e
-#define CS_NO_MORE_ITEMS 0x1f
-#define CS_OUT_OF_RESOURCE 0x20
-#define CS_BAD_HANDLE 0x21
-
-#define CS_BAD_TUPLE 0x40
-
-#ifdef __KERNEL__
-
-/*
- * The main Card Services entry point
- */
-
-enum service {
- AccessConfigurationRegister, AddSocketServices,
- AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory,
- DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo,
- GetClientInfo, GetConfigurationInfo, GetEventMask,
- GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple,
- GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple,
- GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage,
- MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow,
- OpenMemory, ParseTuple, ReadMemory, RegisterClient,
- RegisterEraseQueue, RegisterMTD, RegisterTimer,
- ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ,
- ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices,
- RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ,
- RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry,
- SetEventMask, SetRegion, ValidateCIS, VendorSpecific,
- WriteMemory, BindDevice, BindMTD, ReportError,
- SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS,
- GetFirstWindow, GetNextWindow, GetMemPage
-};
-
-#ifdef IN_CARD_SERVICES
-extern int CardServices(int func, void *a1, void *a2, void *a3);
-#else
-extern int CardServices(int func, ...);
-#endif
-
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_CS_H */
diff --git a/mdk-stage1/pcmcia_/cs_types.h b/mdk-stage1/pcmcia_/cs_types.h
deleted file mode 100644
index 4598d7f48..000000000
--- a/mdk-stage1/pcmcia_/cs_types.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * cs_types.h 1.19 2001/08/24 12:16:12
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_CS_TYPES_H
-#define _LINUX_CS_TYPES_H
-
-#ifdef __linux__
-#ifdef __KERNEL__
-#include <linux/types.h>
-#else
-#include <sys/types.h>
-#endif
-#endif
-
-#ifdef __arm__
-typedef u_int ioaddr_t;
-#else
-typedef u_short ioaddr_t;
-#endif
-
-typedef u_short socket_t;
-typedef u_int event_t;
-typedef u_char cisdata_t;
-typedef u_short page_t;
-
-struct client_t;
-typedef struct client_t *client_handle_t;
-
-struct window_t;
-typedef struct window_t *window_handle_t;
-
-struct region_t;
-typedef struct region_t *memory_handle_t;
-
-struct eraseq_t;
-typedef struct eraseq_t *eraseq_handle_t;
-
-#ifndef DEV_NAME_LEN
-#define DEV_NAME_LEN 32
-#endif
-
-typedef char dev_info_t[DEV_NAME_LEN];
-
-#endif /* _LINUX_CS_TYPES_H */
diff --git a/mdk-stage1/pcmcia_/driver_ops.h b/mdk-stage1/pcmcia_/driver_ops.h
deleted file mode 100644
index 2f0a066d3..000000000
--- a/mdk-stage1/pcmcia_/driver_ops.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * driver_ops.h 1.16 2001/08/24 12:16:13
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_DRIVER_OPS_H
-#define _LINUX_DRIVER_OPS_H
-
-#ifndef DEV_NAME_LEN
-#define DEV_NAME_LEN 32
-#endif
-
-#ifdef __KERNEL__
-
-typedef struct dev_node_t {
- char dev_name[DEV_NAME_LEN];
- u_short major, minor;
- struct dev_node_t *next;
-} dev_node_t;
-
-typedef struct dev_locator_t {
- enum { LOC_ISA, LOC_PCI } bus;
- union {
- struct {
- u_short io_base_1, io_base_2;
- u_long mem_base;
- u_char irq, dma;
- } isa;
- struct {
- u_char bus;
- u_char devfn;
- } pci;
- } b;
-} dev_locator_t;
-
-typedef struct driver_operations {
- char *name;
- dev_node_t *(*attach) (dev_locator_t *loc);
- void (*suspend) (dev_node_t *dev);
- void (*resume) (dev_node_t *dev);
- void (*detach) (dev_node_t *dev);
-} driver_operations;
-
-int register_driver(struct driver_operations *ops);
-void unregister_driver(struct driver_operations *ops);
-
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_DRIVER_OPS_H */
diff --git a/mdk-stage1/pcmcia_/ds.h b/mdk-stage1/pcmcia_/ds.h
deleted file mode 100644
index 29db7b415..000000000
--- a/mdk-stage1/pcmcia_/ds.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * ds.h 1.57 2001/08/24 12:16:13
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_DS_H
-#define _LINUX_DS_H
-
-#include <pcmcia_/driver_ops.h>
-#include <pcmcia_/bulkmem.h>
-
-typedef struct tuple_parse_t {
- tuple_t tuple;
- cisdata_t data[255];
- cisparse_t parse;
-} tuple_parse_t;
-
-typedef struct win_info_t {
- window_handle_t handle;
- win_req_t window;
- memreq_t map;
-} win_info_t;
-
-typedef struct bind_info_t {
- dev_info_t dev_info;
- u_char function;
- struct dev_link_t *instance;
- char name[DEV_NAME_LEN];
- u_short major, minor;
- void *next;
-} bind_info_t;
-
-typedef struct mtd_info_t {
- dev_info_t dev_info;
- u_int Attributes;
- u_int CardOffset;
-} mtd_info_t;
-
-typedef union ds_ioctl_arg_t {
- servinfo_t servinfo;
- adjust_t adjust;
- config_info_t config;
- tuple_t tuple;
- tuple_parse_t tuple_parse;
- client_req_t client_req;
- cs_status_t status;
- conf_reg_t conf_reg;
- cisinfo_t cisinfo;
- region_info_t region;
- bind_info_t bind_info;
- mtd_info_t mtd_info;
- win_info_t win_info;
- cisdump_t cisdump;
-} ds_ioctl_arg_t;
-
-#define DS_GET_CARD_SERVICES_INFO _IOR ('d', 1, servinfo_t)
-#define DS_ADJUST_RESOURCE_INFO _IOWR('d', 2, adjust_t)
-#define DS_GET_CONFIGURATION_INFO _IOWR('d', 3, config_info_t)
-#define DS_GET_FIRST_TUPLE _IOWR('d', 4, tuple_t)
-#define DS_GET_NEXT_TUPLE _IOWR('d', 5, tuple_t)
-#define DS_GET_TUPLE_DATA _IOWR('d', 6, tuple_parse_t)
-#define DS_PARSE_TUPLE _IOWR('d', 7, tuple_parse_t)
-#define DS_RESET_CARD _IO ('d', 8)
-#define DS_GET_STATUS _IOWR('d', 9, cs_status_t)
-#define DS_ACCESS_CONFIGURATION_REGISTER _IOWR('d', 10, conf_reg_t)
-#define DS_VALIDATE_CIS _IOR ('d', 11, cisinfo_t)
-#define DS_SUSPEND_CARD _IO ('d', 12)
-#define DS_RESUME_CARD _IO ('d', 13)
-#define DS_EJECT_CARD _IO ('d', 14)
-#define DS_INSERT_CARD _IO ('d', 15)
-#define DS_GET_FIRST_REGION _IOWR('d', 16, region_info_t)
-#define DS_GET_NEXT_REGION _IOWR('d', 17, region_info_t)
-#define DS_REPLACE_CIS _IOWR('d', 18, cisdump_t)
-#define DS_GET_FIRST_WINDOW _IOR ('d', 19, win_info_t)
-#define DS_GET_NEXT_WINDOW _IOWR('d', 20, win_info_t)
-#define DS_GET_MEM_PAGE _IOWR('d', 21, win_info_t)
-
-#define DS_BIND_REQUEST _IOWR('d', 60, bind_info_t)
-#define DS_GET_DEVICE_INFO _IOWR('d', 61, bind_info_t)
-#define DS_GET_NEXT_DEVICE _IOWR('d', 62, bind_info_t)
-#define DS_UNBIND_REQUEST _IOW ('d', 63, bind_info_t)
-#define DS_BIND_MTD _IOWR('d', 64, mtd_info_t)
-
-#ifdef __KERNEL__
-
-typedef struct dev_link_t {
- dev_node_t *dev;
- u_int state, open;
- wait_queue_head_t pending;
- struct timer_list release;
- client_handle_t handle;
- io_req_t io;
- irq_req_t irq;
- config_req_t conf;
- window_handle_t win;
- void *priv;
- struct dev_link_t *next;
-} dev_link_t;
-
-/* Flags for device state */
-#define DEV_PRESENT 0x01
-#define DEV_CONFIG 0x02
-#define DEV_STALE_CONFIG 0x04 /* release on close */
-#define DEV_STALE_LINK 0x08 /* detach on release */
-#define DEV_CONFIG_PENDING 0x10
-#define DEV_RELEASE_PENDING 0x20
-#define DEV_SUSPEND 0x40
-#define DEV_BUSY 0x80
-
-#define DEV_OK(l) \
- ((l) && ((l->state & ~DEV_BUSY) == (DEV_CONFIG|DEV_PRESENT)))
-
-int register_pccard_driver(dev_info_t *dev_info,
- dev_link_t *(*attach)(void),
- void (*detach)(dev_link_t *));
-
-int unregister_pccard_driver(dev_info_t *dev_info);
-
-#define register_pcmcia_driver register_pccard_driver
-#define unregister_pcmcia_driver unregister_pccard_driver
-
-#endif /* __KERNEL__ */
-
-#endif /* _LINUX_DS_H */
diff --git a/mdk-stage1/pcmcia_/i82365.h b/mdk-stage1/pcmcia_/i82365.h
deleted file mode 100644
index 38ff167fb..000000000
--- a/mdk-stage1/pcmcia_/i82365.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * i82365.h 1.21 2001/08/24 12:15:33
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_I82365_H
-#define _LINUX_I82365_H
-
-/* register definitions for the Intel 82365SL PCMCIA controller */
-
-/* Offsets for PCIC registers */
-#define I365_IDENT 0x00 /* Identification and revision */
-#define I365_STATUS 0x01 /* Interface status */
-#define I365_POWER 0x02 /* Power and RESETDRV control */
-#define I365_INTCTL 0x03 /* Interrupt and general control */
-#define I365_CSC 0x04 /* Card status change */
-#define I365_CSCINT 0x05 /* Card status change interrupt control */
-#define I365_ADDRWIN 0x06 /* Address window enable */
-#define I365_IOCTL 0x07 /* I/O control */
-#define I365_GENCTL 0x16 /* Card detect and general control */
-#define I365_GBLCTL 0x1E /* Global control register */
-
-/* Offsets for I/O and memory window registers */
-#define I365_IO(map) (0x08+((map)<<2))
-#define I365_MEM(map) (0x10+((map)<<3))
-#define I365_W_START 0
-#define I365_W_STOP 2
-#define I365_W_OFF 4
-
-/* Flags for I365_STATUS */
-#define I365_CS_BVD1 0x01
-#define I365_CS_STSCHG 0x01
-#define I365_CS_BVD2 0x02
-#define I365_CS_SPKR 0x02
-#define I365_CS_DETECT 0x0C
-#define I365_CS_WRPROT 0x10
-#define I365_CS_READY 0x20 /* Inverted */
-#define I365_CS_POWERON 0x40
-#define I365_CS_GPI 0x80
-
-/* Flags for I365_POWER */
-#define I365_PWR_OFF 0x00 /* Turn off the socket */
-#define I365_PWR_OUT 0x80 /* Output enable */
-#define I365_PWR_NORESET 0x40 /* Disable RESETDRV on resume */
-#define I365_PWR_AUTO 0x20 /* Auto pwr switch enable */
-#define I365_VCC_MASK 0x18 /* Mask for turning off Vcc */
-/* There are different layouts for B-step and DF-step chips: the B
- step has independent Vpp1/Vpp2 control, and the DF step has only
- Vpp1 control, plus 3V control */
-#define I365_VCC_5V 0x10 /* Vcc = 5.0v */
-#define I365_VCC_3V 0x18 /* Vcc = 3.3v */
-#define I365_VPP2_MASK 0x0c /* Mask for turning off Vpp2 */
-#define I365_VPP2_5V 0x04 /* Vpp2 = 5.0v */
-#define I365_VPP2_12V 0x08 /* Vpp2 = 12.0v */
-#define I365_VPP1_MASK 0x03 /* Mask for turning off Vpp1 */
-#define I365_VPP1_5V 0x01 /* Vpp2 = 5.0v */
-#define I365_VPP1_12V 0x02 /* Vpp2 = 12.0v */
-
-/* Flags for I365_INTCTL */
-#define I365_RING_ENA 0x80
-#define I365_PC_RESET 0x40
-#define I365_PC_IOCARD 0x20
-#define I365_INTR_ENA 0x10
-#define I365_IRQ_MASK 0x0F
-
-/* Flags for I365_CSC and I365_CSCINT*/
-#define I365_CSC_BVD1 0x01
-#define I365_CSC_STSCHG 0x01
-#define I365_CSC_BVD2 0x02
-#define I365_CSC_READY 0x04
-#define I365_CSC_DETECT 0x08
-#define I365_CSC_ANY 0x0F
-#define I365_CSC_GPI 0x10
-
-/* Flags for I365_ADDRWIN */
-#define I365_ENA_IO(map) (0x40 << (map))
-#define I365_ENA_MEM(map) (0x01 << (map))
-
-/* Flags for I365_IOCTL */
-#define I365_IOCTL_MASK(map) (0x0F << (map<<2))
-#define I365_IOCTL_WAIT(map) (0x08 << (map<<2))
-#define I365_IOCTL_0WS(map) (0x04 << (map<<2))
-#define I365_IOCTL_IOCS16(map) (0x02 << (map<<2))
-#define I365_IOCTL_16BIT(map) (0x01 << (map<<2))
-
-/* Flags for I365_GENCTL */
-#define I365_CTL_16DELAY 0x01
-#define I365_CTL_RESET 0x02
-#define I365_CTL_GPI_ENA 0x04
-#define I365_CTL_GPI_CTL 0x08
-#define I365_CTL_RESUME 0x10
-#define I365_CTL_SW_IRQ 0x20
-
-/* Flags for I365_GBLCTL */
-#define I365_GBL_PWRDOWN 0x01
-#define I365_GBL_CSC_LEV 0x02
-#define I365_GBL_WRBACK 0x04
-#define I365_GBL_IRQ_0_LEV 0x08
-#define I365_GBL_IRQ_1_LEV 0x10
-
-/* Flags for memory window registers */
-#define I365_MEM_16BIT 0x8000 /* In memory start high byte */
-#define I365_MEM_0WS 0x4000
-#define I365_MEM_WS1 0x8000 /* In memory stop high byte */
-#define I365_MEM_WS0 0x4000
-#define I365_MEM_WRPROT 0x8000 /* In offset high byte */
-#define I365_MEM_REG 0x4000
-
-#define I365_REG(slot, reg) (((slot) << 6) + reg)
-
-#endif /* _LINUX_I82365_H */
diff --git a/mdk-stage1/pcmcia_/lex_config.c b/mdk-stage1/pcmcia_/lex_config.c
deleted file mode 100644
index 2f990618d..000000000
--- a/mdk-stage1/pcmcia_/lex_config.c
+++ /dev/null
@@ -1,2053 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header$
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#include <unistd.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif /* __STDC__ */
-#endif /* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition. This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state. The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator). This
- * avoids problems with code like:
- *
- * if ( condition_holds )
- * yyless( 5 );
- * else
- * do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- *yy_cp = yy_hold_char; \
- YY_RESTORE_YY_MORE_OFFSET \
- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
- while ( 0 )
-
-//mdk-stage1// #define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- int yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
- * shouldn't try reading from the input source any more. We might
- * still have a bunch of tokens to match, though, because of
- * possible backing-up.
- *
- * When we actually see the EOF, we change the status to "new"
- * (via yyrestart()), so that the user can continue scanning by
- * just pointing yyin at a new input file.
- */
-#define YY_BUFFER_EOF_PENDING 2
- };
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1; /* whether we need to initialize */
-static int yy_start = 0; /* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin. A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
- { \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_is_interactive = is_interactive; \
- }
-
-#define yy_set_bol(at_bol) \
- { \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_at_bol = at_bol; \
- }
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
- yytext_ptr = yy_bp; \
- yyleng = (int) (yy_cp - yy_bp); \
- yy_hold_char = *yy_cp; \
- *yy_cp = '\0'; \
- yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 45
-#define YY_END_OF_BUFFER 46
-static yyconst short int yy_accept[247] =
- { 0,
- 5, 5, 2, 2, 46, 44, 5, 4, 5, 44,
- 6, 41, 41, 44, 44, 44, 44, 44, 44, 44,
- 44, 44, 44, 44, 44, 44, 44, 44, 44, 3,
- 2, 45, 5, 5, 6, 0, 43, 0, 6, 41,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 30, 0,
- 0, 0, 3, 2, 0, 43, 0, 42, 0, 0,
- 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
- 0, 18, 0, 0, 0, 0, 23, 0, 0, 0,
-
- 0, 26, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 10, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,
- 0, 27, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 11, 0, 0, 14, 0, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 31, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 0, 20, 21, 22, 0, 0, 0, 28,
- 0, 0, 0, 1, 0, 0, 0, 0, 12, 15,
- 0, 0, 17, 0, 0, 0, 0, 29, 0, 0,
-
- 32, 0, 0, 0, 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 39, 7, 0, 0, 24, 0, 0,
- 0, 0, 0, 36, 0, 0, 0, 0, 0, 0,
- 33, 0, 0, 0, 34, 0, 0, 0, 40, 0,
- 0, 35, 37, 0, 38, 0
- } ;
-
-static yyconst int yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 1, 5, 6, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 7, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 1, 6, 1,
- 1, 1, 1, 1, 9, 9, 9, 9, 9, 9,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 10, 1, 1, 11, 1, 12, 13, 14, 15,
-
- 16, 17, 18, 1, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-static yyconst int yy_meta[36] =
- { 0,
- 1, 2, 3, 2, 1, 1, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-static yyconst short int yy_base[253] =
- { 0,
- 0, 0, 34, 37, 293, 294, 40, 294, 41, 41,
- 0, 41, 45, 31, 273, 42, 40, 257, 38, 34,
- 274, 47, 273, 262, 53, 271, 57, 35, 60, 0,
- 79, 294, 82, 83, 0, 83, 294, 87, 0, 87,
- 0, 263, 260, 260, 255, 253, 269, 74, 245, 265,
- 244, 253, 262, 248, 259, 249, 249, 256, 255, 80,
- 239, 240, 248, 238, 80, 236, 236, 232, 294, 236,
- 233, 245, 0, 97, 95, 97, 108, 0, 230, 234,
- 242, 241, 294, 226, 242, 234, 226, 229, 234, 235,
- 226, 294, 231, 229, 220, 213, 294, 228, 209, 212,
-
- 228, 294, 209, 219, 221, 217, 216, 206, 211, 203,
- 215, 219, 194, 294, 294, 199, 196, 212, 209, 193,
- 208, 192, 190, 206, 200, 190, 195, 187, 190, 294,
- 192, 294, 188, 184, 200, 198, 195, 192, 188, 181,
- 191, 181, 294, 181, 186, 294, 186, 189, 180, 183,
- 294, 182, 161, 179, 183, 165, 170, 167, 158, 177,
- 166, 171, 294, 161, 174, 172, 158, 152, 294, 165,
- 165, 154, 162, 294, 166, 294, 153, 154, 158, 294,
- 157, 157, 160, 294, 146, 157, 140, 136, 294, 294,
- 147, 141, 294, 150, 133, 151, 139, 294, 148, 133,
-
- 294, 143, 142, 127, 126, 294, 142, 138, 140, 140,
- 124, 124, 136, 294, 294, 126, 118, 294, 130, 118,
- 113, 114, 115, 294, 125, 127, 108, 116, 99, 87,
- 294, 90, 87, 86, 294, 96, 78, 74, 294, 75,
- 64, 294, 294, 46, 294, 294, 118, 122, 126, 130,
- 134, 64
- } ;
-
-static yyconst short int yy_def[253] =
- { 0,
- 246, 1, 247, 247, 246, 246, 246, 246, 246, 248,
- 249, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 250,
- 246, 246, 246, 246, 249, 248, 246, 251, 249, 246,
- 252, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 250, 246, 248, 248, 251, 252, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
-
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 0, 246, 246, 246, 246,
- 246, 246
- } ;
-
-static yyconst short int yy_nxt[330] =
- { 0,
- 6, 7, 8, 9, 10, 11, 12, 13, 6, 6,
- 6, 14, 15, 16, 17, 18, 19, 6, 20, 21,
- 6, 6, 22, 23, 24, 25, 6, 26, 27, 28,
- 6, 29, 6, 6, 6, 31, 32, 31, 31, 32,
- 31, 33, 33, 33, 34, 37, 35, 40, 40, 42,
- 38, 40, 40, 45, 43, 48, 51, 53, 56, 69,
- 46, 54, 57, 47, 62, 70, 63, 78, 52, 49,
- 66, 58, 67, 245, 41, 71, 59, 64, 72, 244,
- 74, 68, 74, 33, 33, 33, 34, 37, 35, 36,
- 85, 76, 38, 40, 40, 98, 77, 104, 74, 37,
-
- 74, 37, 243, 242, 38, 86, 38, 241, 105, 99,
- 36, 240, 76, 239, 238, 237, 236, 77, 30, 30,
- 30, 30, 36, 36, 36, 36, 39, 39, 235, 39,
- 73, 234, 233, 73, 75, 75, 75, 75, 232, 231,
- 230, 229, 228, 227, 226, 225, 224, 223, 222, 221,
- 220, 219, 218, 217, 216, 215, 214, 213, 212, 211,
- 210, 209, 208, 207, 206, 205, 204, 203, 202, 201,
- 200, 199, 198, 197, 196, 195, 194, 193, 192, 191,
- 190, 189, 188, 187, 186, 185, 184, 183, 182, 181,
- 180, 179, 178, 177, 176, 175, 174, 173, 172, 171,
-
- 170, 169, 168, 167, 166, 165, 164, 163, 162, 161,
- 160, 159, 158, 157, 156, 155, 154, 153, 152, 151,
- 150, 149, 148, 147, 146, 145, 144, 143, 142, 141,
- 140, 139, 138, 137, 136, 135, 134, 133, 132, 131,
- 130, 129, 128, 127, 126, 125, 124, 123, 122, 121,
- 120, 119, 118, 117, 116, 115, 114, 113, 112, 111,
- 110, 109, 108, 107, 106, 103, 102, 101, 100, 97,
- 96, 95, 94, 93, 92, 91, 90, 89, 88, 87,
- 84, 83, 82, 81, 80, 79, 65, 61, 60, 55,
- 50, 44, 246, 5, 246, 246, 246, 246, 246, 246,
-
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246
- } ;
-
-static yyconst short int yy_chk[330] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 3, 3, 4, 4,
- 4, 7, 9, 7, 9, 10, 9, 12, 12, 14,
- 10, 13, 13, 16, 14, 17, 19, 20, 22, 28,
- 16, 20, 22, 16, 25, 28, 25, 252, 19, 17,
- 27, 22, 27, 244, 12, 29, 22, 25, 29, 241,
- 31, 27, 31, 33, 34, 33, 34, 36, 34, 38,
- 48, 38, 36, 40, 40, 60, 38, 65, 74, 75,
-
- 74, 76, 240, 238, 75, 48, 76, 237, 65, 60,
- 77, 236, 77, 234, 233, 232, 230, 77, 247, 247,
- 247, 247, 248, 248, 248, 248, 249, 249, 229, 249,
- 250, 228, 227, 250, 251, 251, 251, 251, 226, 225,
- 223, 222, 221, 220, 219, 217, 216, 213, 212, 211,
- 210, 209, 208, 207, 205, 204, 203, 202, 200, 199,
- 197, 196, 195, 194, 192, 191, 188, 187, 186, 185,
- 183, 182, 181, 179, 178, 177, 175, 173, 172, 171,
- 170, 168, 167, 166, 165, 164, 162, 161, 160, 159,
- 158, 157, 156, 155, 154, 153, 152, 150, 149, 148,
-
- 147, 145, 144, 142, 141, 140, 139, 138, 137, 136,
- 135, 134, 133, 131, 129, 128, 127, 126, 125, 124,
- 123, 122, 121, 120, 119, 118, 117, 116, 113, 112,
- 111, 110, 109, 108, 107, 106, 105, 104, 103, 101,
- 100, 99, 98, 96, 95, 94, 93, 91, 90, 89,
- 88, 87, 86, 85, 84, 82, 81, 80, 79, 72,
- 71, 70, 68, 67, 66, 64, 63, 62, 61, 59,
- 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
- 47, 46, 45, 44, 43, 42, 26, 24, 23, 21,
- 18, 15, 5, 246, 246, 246, 246, 246, 246, 246,
-
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246, 246,
- 246, 246, 246, 246, 246, 246, 246, 246, 246
- } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "lex_config.l"
-#define INITIAL 0
-/* Special state for handling include files */
-#define src 1
-
-#line 5 "lex_config.l"
-/*
- * lex_config.l 1.40 2001/08/24 12:21:25
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#undef src
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <syslog.h>
-#include <glob.h>
-#define src 1
-
-#include <pcmcia_/cs_types.h>
-#include <pcmcia_/cs.h>
-
-#include "yacc_config.h"
-
-/* For assembling nice error messages */
-char *current_file;
-int current_lineno;
-
-static int lex_number(char *s);
-static int lex_string(char *s);
-static void do_source(char *fn);
-static int do_eof(void);
-
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-//mdk-stage1// static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines. This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
- if ( yy_current_buffer->yy_is_interactive ) \
- { \
- int c = '*', n; \
- for ( n = 0; n < max_size && \
- (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( yyin ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
- else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
- && ferror( yyin ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" );
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
- YY_USER_ACTION
-
-YY_DECL
- {
- register yy_state_type yy_current_state;
- register char *yy_cp = NULL, *yy_bp = NULL;
- register int yy_act;
-
-#line 63 "lex_config.l"
-
-
-
- if ( yy_init )
- {
- yy_init = 0;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! yy_start )
- yy_start = 1; /* first start state */
-
- if ( ! yyin )
- yyin = stdin;
-
- if ( ! yyout )
- yyout = stdout;
-
- if ( ! yy_current_buffer )
- yy_current_buffer =
- yy_create_buffer( yyin, YY_BUF_SIZE );
-
- yy_load_buffer_state();
- }
-
- while ( 1 ) /* loops until end-of-file is reached */
- {
- yy_cp = yy_c_buf_p;
-
- /* Support of yytext. */
- *yy_cp = yy_hold_char;
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
- yy_current_state = yy_start;
-yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 247 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- ++yy_cp;
- }
- while ( yy_base[yy_current_state] != 294 );
-
-yy_find_action:
- yy_act = yy_accept[yy_current_state];
- if ( yy_act == 0 )
- { /* have to back up */
- yy_cp = yy_last_accepting_cpos;
- yy_current_state = yy_last_accepting_state;
- yy_act = yy_accept[yy_current_state];
- }
-
- YY_DO_BEFORE_ACTION;
-
-
-do_action: /* This label is used only to access EOF actions. */
-
-
- switch ( yy_act )
- { /* beginning of action switch */
- case 0: /* must back up */
- /* undo the effects of YY_DO_BEFORE_ACTION */
- *yy_cp = yy_hold_char;
- yy_cp = yy_last_accepting_cpos;
- yy_current_state = yy_last_accepting_state;
- goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 65 "lex_config.l"
-BEGIN(src);
- YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 66 "lex_config.l"
-/* skip */ ;
- YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 67 "lex_config.l"
-do_source(yytext); BEGIN(INITIAL);
- YY_BREAK
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(src):
-#line 68 "lex_config.l"
-if (do_eof()) yyterminate();
- YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 70 "lex_config.l"
-current_lineno++;
- YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 71 "lex_config.l"
-/* skip */ ;
- YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 72 "lex_config.l"
-/* skip */ ;
- YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 74 "lex_config.l"
-return ANONYMOUS;
- YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 75 "lex_config.l"
-return BIND;
- YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 76 "lex_config.l"
-return CIS;
- YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 77 "lex_config.l"
-return CARD;
- YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 78 "lex_config.l"
-return CLASS;
- YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 79 "lex_config.l"
-return DEFAULT;
- YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 80 "lex_config.l"
-return DEVICE;
- YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 81 "lex_config.l"
-return DTYPE;
- YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 82 "lex_config.l"
-return EXCLUDE;
- YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 83 "lex_config.l"
-return FUNCTION;
- YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 84 "lex_config.l"
-return INCLUDE;
- YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 85 "lex_config.l"
-return IRQ_NO;
- YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 86 "lex_config.l"
-return JEDEC;
- YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 87 "lex_config.l"
-return MANFID;
- YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 88 "lex_config.l"
-return MEMORY;
- YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 89 "lex_config.l"
-return MODULE;
- YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 90 "lex_config.l"
-return MTD;
- YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 91 "lex_config.l"
-return NEEDS_MTD;
- YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 92 "lex_config.l"
-return OPTS;
- YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 93 "lex_config.l"
-return PCI;
- YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 94 "lex_config.l"
-return PORT;
- YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 95 "lex_config.l"
-return REGION;
- YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 96 "lex_config.l"
-return RESERVE;
- YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 97 "lex_config.l"
-return TO;
- YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 98 "lex_config.l"
-return TUPLE;
- YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 99 "lex_config.l"
-return VERSION;
- YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 101 "lex_config.l"
-return lex_number("1");
- YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 102 "lex_config.l"
-return lex_number("2");
- YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 103 "lex_config.l"
-return lex_number("3");
- YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 104 "lex_config.l"
-return lex_number("4");
- YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 105 "lex_config.l"
-return lex_number("5");
- YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 106 "lex_config.l"
-return lex_number("6");
- YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 107 "lex_config.l"
-return lex_number("7");
- YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 108 "lex_config.l"
-return lex_number("8");
- YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 110 "lex_config.l"
-return lex_number(yytext);
- YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 112 "lex_config.l"
-return lex_number(yytext);
- YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 114 "lex_config.l"
-return lex_string(yytext);
- YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 116 "lex_config.l"
-return yytext[0];
- YY_BREAK
-case 45:
-YY_RULE_SETUP
-#line 118 "lex_config.l"
-ECHO;
- YY_BREAK
-
- case YY_END_OF_BUFFER:
- {
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yy_hold_char;
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
- * consistency between yy_current_buffer and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yy_current_buffer->yy_input_file = yyin;
- yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
- }
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state();
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state );
-
- yy_bp = yytext_ptr + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++yy_c_buf_p;
- yy_current_state = yy_next_state;
- goto yy_match;
- }
-
- else
- {
- yy_cp = yy_c_buf_p;
- goto yy_find_action;
- }
- }
-
- else switch ( yy_get_next_buffer() )
- {
- case EOB_ACT_END_OF_FILE:
- {
- yy_did_buffer_switch_on_eof = 0;
-
- if ( yywrap() )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * yytext, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
- }
- break;
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p =
- yytext_ptr + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state();
-
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- yy_c_buf_p =
- &yy_current_buffer->yy_ch_buf[yy_n_chars];
-
- yy_current_state = yy_get_previous_state();
-
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
- goto yy_find_action;
- }
- break;
- }
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
- } /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
- {
- register char *dest = yy_current_buffer->yy_ch_buf;
- register char *source = yytext_ptr;
- register int number_to_move, i;
- int ret_val;
-
- if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( yy_current_buffer->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
- }
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
- }
- }
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
- else
- {
- int num_to_read =
- yy_current_buffer->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
- YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
- /* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = yy_current_buffer;
-
- int yy_c_buf_p_offset =
- (int) (yy_c_buf_p - b->yy_ch_buf);
-
- if ( b->yy_is_our_buffer )
- {
- int new_size = b->yy_buf_size * 2;
-
- if ( new_size <= 0 )
- b->yy_buf_size += b->yy_buf_size / 8;
- else
- b->yy_buf_size *= 2;
-
- b->yy_ch_buf = (char *)
- /* Include room in for 2 EOB chars. */
- yy_flex_realloc( (void *) b->yy_ch_buf,
- b->yy_buf_size + 2 );
- }
- else
- /* Can't grow it, we don't own it. */
- b->yy_ch_buf = 0;
-
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR(
- "fatal error - scanner input buffer overflow" );
-
- yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
- num_to_read = yy_current_buffer->yy_buf_size -
- number_to_move - 1;
-#endif
- }
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
- yy_n_chars, num_to_read );
-
- yy_current_buffer->yy_n_chars = yy_n_chars;
- }
-
- if ( yy_n_chars == 0 )
- {
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
- }
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- yy_current_buffer->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
- }
- }
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- yy_n_chars += number_to_move;
- yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
- yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
- yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
- return ret_val;
- }
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
- {
- register yy_state_type yy_current_state;
- register char *yy_cp;
-
- yy_current_state = yy_start;
-
- for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
- {
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 247 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- }
-
- return yy_current_state;
- }
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
- {
- register int yy_is_jam;
- register char *yy_cp = yy_c_buf_p;
-
- register YY_CHAR yy_c = 1;
- if ( yy_accept[yy_current_state] )
- {
- yy_last_accepting_state = yy_current_state;
- yy_last_accepting_cpos = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 247 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 246);
-
- return yy_is_jam ? 0 : yy_current_state;
- }
-
-
-//mdk-stage1// #ifndef YY_NO_UNPUT
-//mdk-stage1// #ifdef YY_USE_PROTOS
-//mdk-stage1// static void yyunput( int c, register char *yy_bp )
-//mdk-stage1// #else
-//mdk-stage1// static void yyunput( c, yy_bp )
-//mdk-stage1// int c;
-//mdk-stage1// register char *yy_bp;
-//mdk-stage1// #endif
-//mdk-stage1// {
-//mdk-stage1// register char *yy_cp = yy_c_buf_p;
-//mdk-stage1//
-//mdk-stage1// /* undo effects of setting up yytext */
-//mdk-stage1// *yy_cp = yy_hold_char;
-//mdk-stage1//
-//mdk-stage1// if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-//mdk-stage1// { /* need to shift things up to make room */
-//mdk-stage1// /* +2 for EOB chars. */
-//mdk-stage1// register int number_to_move = yy_n_chars + 2;
-//mdk-stage1// register char *dest = &yy_current_buffer->yy_ch_buf[
-//mdk-stage1// yy_current_buffer->yy_buf_size + 2];
-//mdk-stage1// register char *source =
-//mdk-stage1// &yy_current_buffer->yy_ch_buf[number_to_move];
-//mdk-stage1//
-//mdk-stage1// while ( source > yy_current_buffer->yy_ch_buf )
-//mdk-stage1// *--dest = *--source;
-//mdk-stage1//
-//mdk-stage1// yy_cp += (int) (dest - source);
-//mdk-stage1// yy_bp += (int) (dest - source);
-//mdk-stage1// yy_current_buffer->yy_n_chars =
-//mdk-stage1// yy_n_chars = yy_current_buffer->yy_buf_size;
-//mdk-stage1//
-//mdk-stage1// if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-//mdk-stage1// YY_FATAL_ERROR( "flex scanner push-back overflow" );
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// *--yy_cp = (char) c;
-//mdk-stage1//
-//mdk-stage1//
-//mdk-stage1// yytext_ptr = yy_bp;
-//mdk-stage1// yy_hold_char = *yy_cp;
-//mdk-stage1// yy_c_buf_p = yy_cp;
-//mdk-stage1// }
-//mdk-stage1// #endif /* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
- {
- int c;
-
- *yy_c_buf_p = yy_hold_char;
-
- if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
- {
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
- /* This was really a NUL. */
- *yy_c_buf_p = '\0';
-
- else
- { /* need more input */
- int offset = yy_c_buf_p - yytext_ptr;
- ++yy_c_buf_p;
-
- switch ( yy_get_next_buffer() )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- yyrestart( yyin );
-
- /* fall through */
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( yywrap() )
- return EOF;
-
- if ( ! yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
-#ifdef __cplusplus
- return yyinput();
-#else
- return input();
-#endif
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p = yytext_ptr + offset;
- break;
- }
- }
- }
-
- c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
- *yy_c_buf_p = '\0'; /* preserve yytext */
- yy_hold_char = *++yy_c_buf_p;
-
-
- return c;
- }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
- {
- if ( ! yy_current_buffer )
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
- yy_init_buffer( yy_current_buffer, input_file );
- yy_load_buffer_state();
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
- {
- if ( yy_current_buffer == new_buffer )
- return;
-
- if ( yy_current_buffer )
- {
- /* Flush out information for old buffer. */
- *yy_c_buf_p = yy_hold_char;
- yy_current_buffer->yy_buf_pos = yy_c_buf_p;
- yy_current_buffer->yy_n_chars = yy_n_chars;
- }
-
- yy_current_buffer = new_buffer;
- yy_load_buffer_state();
-
- /* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
- * to go ahead and always set it.
- */
- yy_did_buffer_switch_on_eof = 1;
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
- {
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
- yyin = yy_current_buffer->yy_input_file;
- yy_hold_char = *yy_c_buf_p;
- }
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
- {
- YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_buf_size = size;
-
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
- yy_init_buffer( b, file );
-
- return b;
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
- {
- if ( ! b )
- return;
-
- if ( b == yy_current_buffer )
- yy_current_buffer = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
- yy_flex_free( (void *) b->yy_ch_buf );
-
- yy_flex_free( (void *) b );
- }
-
-
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
- {
- yy_flush_buffer( b );
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
- b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
- b->yy_is_interactive = 0;
-#else
- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
- {
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == yy_current_buffer )
- yy_load_buffer_state();
- }
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
- {
- YY_BUFFER_STATE b;
-
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- yy_switch_to_buffer( b );
-
- return b;
- }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
- {
- int len;
- for ( len = 0; yy_str[len]; ++len )
- ;
-
- return yy_scan_bytes( yy_str, len );
- }
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
- {
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- int i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = len + 2;
- buf = (char *) yy_flex_alloc( n );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
- for ( i = 0; i < len; ++i )
- buf[i] = bytes[i];
-
- buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = yy_scan_buffer( buf, n );
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
-
- return b;
- }
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
- {
- if ( yy_start_stack_ptr >= yy_start_stack_depth )
- {
- yy_size_t new_size;
-
- yy_start_stack_depth += YY_START_STACK_INCR;
- new_size = yy_start_stack_depth * sizeof( int );
-
- if ( ! yy_start_stack )
- yy_start_stack = (int *) yy_flex_alloc( new_size );
-
- else
- yy_start_stack = (int *) yy_flex_realloc(
- (void *) yy_start_stack, new_size );
-
- if ( ! yy_start_stack )
- YY_FATAL_ERROR(
- "out of memory expanding start-condition stack" );
- }
-
- yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
- BEGIN(new_state);
- }
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
- {
- if ( --yy_start_stack_ptr < 0 )
- YY_FATAL_ERROR( "start-condition stack underflow" );
-
- BEGIN(yy_start_stack[yy_start_stack_ptr]);
- }
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
- {
- return yy_start_stack[yy_start_stack_ptr - 1];
- }
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
- {
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
- }
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- yytext[yyleng] = yy_hold_char; \
- yy_c_buf_p = yytext + n; \
- yy_hold_char = *yy_c_buf_p; \
- *yy_c_buf_p = '\0'; \
- yyleng = n; \
- } \
- while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
- {
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
- }
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
- {
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
-
- return n;
- }
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
- {
- return (void *) malloc( size );
- }
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
- {
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
- }
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
- {
- free( ptr );
- }
-
-#if YY_MAIN
-int main()
- {
- yylex();
- return 0;
- }
-#endif
-#line 118 "lex_config.l"
-
-
-#ifndef yywrap
-int yywrap() { return 1; }
-#endif
-
-/*======================================================================
-
- Stuff to parse basic data types
-
-======================================================================*/
-
-static int lex_number(char *s)
-{
- yylval.num = strtoul(s, NULL, 0);
- return NUMBER;
-}
-
-static int lex_string(char *s)
-{
- int n = strlen(s);
- yylval.str = malloc(n-1);
- strncpy(yylval.str, s+1, n-2);
- yylval.str[n-2] = '\0';
- return STRING;
-}
-
-/*======================================================================
-
- Code to support nesting of configuration files
-
-======================================================================*/
-
-#define MAX_SOURCE_DEPTH 4
-struct source_stack {
- YY_BUFFER_STATE buffer;
- char *filename;
- int lineno, fileno;
- FILE *file;
- glob_t glob;
-} source_stack[MAX_SOURCE_DEPTH];
-static int source_stack_ptr = 0;
-static int parse_env = 0;
-
-static int get_glob(void)
-{
- struct source_stack *s = &source_stack[source_stack_ptr];
- while (s->fileno < s->glob.gl_pathc) {
- char *fn = s->glob.gl_pathv[s->fileno];
- s->file = fopen(fn, "r");
- if (s->file == NULL) {
- if (strpbrk(fn, "?*[") == NULL)
- syslog(LOG_INFO, "could not open '%s': %m", fn);
- s->fileno++;
- } else {
- current_lineno = 1;
- current_file = strdup(fn);
- yy_switch_to_buffer(yy_create_buffer(s->file, YY_BUF_SIZE));
- source_stack_ptr++;
- s->fileno++;
- return 0;
- }
- }
- return -1;
-}
-
-static void do_source(char *fn)
-{
- struct source_stack *s = &source_stack[source_stack_ptr];
-
- if (source_stack_ptr >= MAX_SOURCE_DEPTH) {
- syslog(LOG_INFO, "source depth limit exceeded");
- return;
- }
- glob(fn, GLOB_NOCHECK, NULL, &s->glob);
- s->fileno = 0;
- s->buffer = YY_CURRENT_BUFFER;
- s->lineno = current_lineno;
- s->filename = current_file;
- get_glob();
-}
-
-static int do_eof(void)
-{
- struct source_stack *s = &source_stack[--source_stack_ptr];
- if (source_stack_ptr < 0) {
- if (parse_env == 0) {
- char *t = getenv("PCMCIA_OPTS");
- if (t == NULL) return -1;
- parse_env = 1;
- source_stack_ptr = 0;
- current_file = "PCMCIA_OPTS";
- current_lineno = 1;
- yy_scan_string(t);
- return 0;
- } else
- return -1;
- }
- fclose(s->file);
- free(current_file);
- yy_delete_buffer(YY_CURRENT_BUFFER);
- if (get_glob() != 0) {
- yy_switch_to_buffer(s->buffer);
- current_lineno = s->lineno;
- current_file = s->filename;
- }
- return 0;
-}
-
-/*======================================================================
-
- The main entry point... returns -1 if the file can't be accessed.
-
-======================================================================*/
-int yyparse(void);
-
-int parse_configfile(char *fn)
-{
- FILE *f;
-
- f = fopen(fn, "r");
- if (!f) {
- syslog(LOG_INFO, "could not open '%s': %m", fn);
- return -1;
- }
- current_lineno = 1;
- current_file = fn;
- source_stack_ptr = 0;
- yyrestart(f);
- yyparse();
- fclose(f);
- return 0;
-}
-
diff --git a/mdk-stage1/pcmcia_/merge_from_pcitable b/mdk-stage1/pcmcia_/merge_from_pcitable
deleted file mode 100755
index 3b88a1cd8..000000000
--- a/mdk-stage1/pcmcia_/merge_from_pcitable
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/perl
-
-# This program will show on stdout yenta_socket stuff from pcitable
-# which is not in probe.c
-
-use MDK::Common;
-
-my %probes;
-foreach (cat_('probe.c')) {
- if (/^pci_id_t pci_id\[\] = {/ ... /^};/) {
- /^\s*{\s*0x([\da-f]+),\s*0x([\da-f]+),\s*"([^"]*)",\s*"([^"]*)"\s*}/
- and $probes{"$1$2"} = { vendor => $1, device => $2, driver => $3, name => $4 };
- }
-}
-
-require '/usr/bin/merge2pcitable.pl';
-my $drivers = read_pcitable("/usr/share/ldetect-lst/pcitable");
-
-my %pcitable = map_each {
- $::a =~ /^(....)(....)/ or die;
- "$1$2" => { vendor => $1, device => $2, driver => $::b->[0], name => $::b->[1] };
-} %$drivers;
-
-my @yenta_socket_ids = grep { $pcitable{$_}{driver} eq 'yenta_socket' } keys %pcitable;
-
-if (my @missing_in_probe_c = difference2(\@yenta_socket_ids, [ keys %probes ])) {
- print "Missing in `probe.c':\n",
- map {
- my $p = $pcitable{$_};
- qq( { 0x$p->{vendor}, 0x$p->{device}, "yenta_socket", "$p->{name}" },\n);
- } sort @missing_in_probe_c;
-}
-
-my @res;
-foreach my $id (keys %probes) {
- my $p = $probes{$id};
- my $r = $pcitable{$id};
- if (!$r || $r->{driver} ne 'yenta_socket') {
- push @res, qq(0x$p->{vendor}\t0x$p->{device}\t"yenta_socket"\t") . ($r ? $r->{name} : '(COMPLETELY MISSING)') . qq("\n);
- }
- if ($r && $r->{driver} ne 'unknown' && $r->{driver} ne $p->{driver}) {
- warn "WARNING: $id: pcitable:$r->{driver} vs probe.c:$p->{driver}\n";
- }
-}
-if (@res) {
- print "\n", "Missing in pcitable:\n", sort @res;
-}
diff --git a/mdk-stage1/pcmcia_/pcmcia.h b/mdk-stage1/pcmcia_/pcmcia.h
deleted file mode 100644
index 3559d5fd6..000000000
--- a/mdk-stage1/pcmcia_/pcmcia.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _PCMCIA_CARDMGR_INTERFACE_H_
-#define _PCMCIA_CARDMGR_INTERFACE_H_
-
-char * pcmcia_probe(void);
-int cardmgr_call(void);
-
-#endif
diff --git a/mdk-stage1/pcmcia_/probe.c b/mdk-stage1/pcmcia_/probe.c
deleted file mode 100644
index 8f8a4bc8e..000000000
--- a/mdk-stage1/pcmcia_/probe.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000-2001 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- * Code comes from /anonymous@projects.sourceforge.net:/pub/pcmcia-cs/pcmcia-cs-3.1.29.tar.bz2
- */
-
-/*======================================================================
-
- PCMCIA controller probe
-
- probe.c 1.55 2001/08/24 12:19:20
-
- The contents of this file are subject to the Mozilla Public
- License Version 1.1 (the "License"); you may not use this file
- except in compliance with the License. You may obtain a copy of
- the License at http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS
- IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- implied. See the License for the specific language governing
- rights and limitations under the License.
-
- The initial developer of the original code is David A. Hinds
- <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
-
- Alternatively, the contents of this file may be used under the
- terms of the GNU General Public License version 2 (the "GPL"), in
- which case the provisions of the GPL are applicable instead of the
- above. If you wish to allow the use of your version of this file
- only under the terms of the GPL and not to allow others to use
- your version of this file under the MPL, indicate your decision
- by deleting the provisions above and replace them with the notice
- and other provisions required by the GPL. If you do not delete
- the provisions above, a recipient may use your version of this
- file under either the MPL or the GPL.
-
-======================================================================*/
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-
-//mdk-stage1// #include <pcmcia/config.h>
-#include "log.h"
-#include "pcmcia.h"
-
-/*====================================================================*/
-
-//mdk-stage1// #ifdef CONFIG_PCI
-
-typedef struct {
- u_short vendor, device;
- char *modname;
- char *name;
-} pci_id_t;
-
-pci_id_t pci_id[] = {
- { 0x1013, 0x1100, "i82365", "Cirrus Logic CL 6729" },
- { 0x1013, 0x1110, "yenta_socket", "Cirrus Logic PD 6832" },
- { 0x10b3, 0xb106, "yenta_socket", "SMC 34C90" },
- { 0x1180, 0x0465, "yenta_socket", "Ricoh RL5C465" },
- { 0x1180, 0x0466, "yenta_socket", "Ricoh RL5C466" },
- { 0x1180, 0x0475, "yenta_socket", "Ricoh RL5C475" },
- { 0x1180, 0x0476, "yenta_socket", "Ricoh RL5C476" },
- { 0x1180, 0x0477, "yenta_socket", "Ricoh RL5C477" },
- { 0x1180, 0x0478, "yenta_socket", "Ricoh RL5C478" },
- { 0x104c, 0xac12, "yenta_socket", "Texas Instruments PCI1130" },
- { 0x104c, 0xac13, "yenta_socket", "Texas Instruments PCI1031" },
- { 0x104c, 0xac15, "yenta_socket", "Texas Instruments PCI1131" },
- { 0x104c, 0xac1a, "yenta_socket", "Texas Instruments PCI1210" },
- { 0x104c, 0xac1e, "yenta_socket", "Texas Instruments PCI1211" },
- { 0x104c, 0xac17, "yenta_socket", "Texas Instruments PCI1220" },
- { 0x104c, 0xac19, "yenta_socket", "Texas Instruments PCI1221" },
- { 0x104c, 0xac1c, "yenta_socket", "Texas Instruments PCI1225" },
- { 0x104c, 0xac16, "yenta_socket", "Texas Instruments PCI1250" },
- { 0x104c, 0xac1d, "yenta_socket", "Texas Instruments PCI1251A" },
- { 0x104c, 0xac1f, "yenta_socket", "Texas Instruments PCI1251B" },
- { 0x104c, 0xac50, "yenta_socket", "Texas Instruments PCI1410" },
- { 0x104c, 0xac51, "yenta_socket", "Texas Instruments PCI1420" },
- { 0x104c, 0xac1b, "yenta_socket", "Texas Instruments PCI1450" },
- { 0x104c, 0xac52, "yenta_socket", "Texas Instruments PCI1451" },
- { 0x104c, 0xac56, "yenta_socket", "Texas Instruments PCI1510" },
- { 0x104c, 0xac55, "yenta_socket", "Texas Instruments PCI1520" },
- { 0x104c, 0xac54, "yenta_socket", "Texas Instruments PCI1620" },
- { 0x104c, 0xac41, "yenta_socket", "Texas Instruments PCI4410" },
- { 0x104c, 0xac40, "yenta_socket", "Texas Instruments PCI4450" },
- { 0x104c, 0xac42, "yenta_socket", "Texas Instruments PCI4451" },
- { 0x104c, 0xac44, "yenta_socket", "Texas Instruments PCI4510" },
- { 0x104c, 0xac46, "yenta_socket", "Texas Instruments PCI4520" },
- { 0x104c, 0xac49, "yenta_socket", "Texas Instruments PCI7410" },
- { 0x104c, 0xac47, "yenta_socket", "Texas Instruments PCI7510" },
- { 0x104c, 0xac48, "yenta_socket", "Texas Instruments PCI7610" },
- { 0x104c, 0xac8e, "yenta_socket", "Texas Instruments PCI7420" },
- { 0x1217, 0x6729, "i82365", "O2 Micro 6729" },
- { 0x1217, 0x673a, "i82365", "O2 Micro 6730" },
- { 0x1217, 0x6832, "yenta_socket", "O2 Micro 6832/6833" },
- { 0x1217, 0x6836, "yenta_socket", "O2 Micro 6836/6860" },
- { 0x1217, 0x6872, "yenta_socket", "O2 Micro 6812" },
- { 0x1217, 0x6925, "yenta_socket", "O2 Micro 6922" },
- { 0x1217, 0x6933, "yenta_socket", "O2 Micro 6933" },
- { 0x1217, 0x6972, "yenta_socket", "O2 Micro 6912" },
- { 0x1217, 0x7114, "yenta_socket", "O2 Micro 711M1" },
- { 0x1179, 0x0603, "i82365", "Toshiba ToPIC95-A" },
- { 0x1179, 0x060a, "yenta_socket", "Toshiba ToPIC95-B" },
- { 0x1179, 0x060f, "yenta_socket", "Toshiba ToPIC97" },
- { 0x1179, 0x0617, "yenta_socket", "Toshiba ToPIC100" },
- { 0x119b, 0x1221, "i82365", "Omega Micro 82C092G" },
- { 0x8086, 0x1221, "i82092", "Intel 82092AA_0" },
- { 0x8086, 0x1222, "i82092", "Intel 82092AA_1" },
- { 0x1524, 0x1211, "yenta_socket", "ENE 1211" },
- { 0x1524, 0x1225, "yenta_socket", "ENE 1225" },
- { 0x1524, 0x1410, "yenta_socket", "ENE 1410" },
- { 0x1524, 0x1411, "yenta_socket", "ENE Technology CB1411" },
- { 0x1524, 0x1420, "yenta_socket", "ENE 1420" },
-};
-#define PCI_COUNT (sizeof(pci_id)/sizeof(pci_id_t))
-
-char * driver = NULL;
-
-static int pci_probe(void)
-{
- char s[256], *name = NULL;
- u_int device, vendor, i;
- FILE *f;
-
-//mdk-stage1// if (!module)
- log_message("PCMCIA: probing PCI bus..");
-
- if ((f = fopen("/proc/bus/pci/devices", "r")) != NULL) {
- while (fgets(s, 256, f) != NULL) {
- u_int n = strtoul(s+5, NULL, 16);
- vendor = (n >> 16); device = (n & 0xffff);
- for (i = 0; i < PCI_COUNT; i++)
- if ((vendor == pci_id[i].vendor) &&
- (device == pci_id[i].device)) break;
- if (i < PCI_COUNT) {
- name = pci_id[i].name;
- driver = pci_id[i].modname;
- }
- }
- }
-//mdk-stage1// else if ((f = fopen("/proc/pci", "r")) != NULL) {
-//mdk-stage1// while (fgets(s, 256, f) != NULL) {
-//mdk-stage1// t = strstr(s, "Device id=");
-//mdk-stage1// if (t) {
-//mdk-stage1// device = strtoul(t+10, NULL, 16);
-//mdk-stage1// t = strstr(s, "Vendor id=");
-//mdk-stage1// vendor = strtoul(t+10, NULL, 16);
-//mdk-stage1// for (i = 0; i < PCI_COUNT; i++)
-//mdk-stage1// if ((vendor == pci_id[i].vendor) &&
-//mdk-stage1// (device == pci_id[i].device)) break;
-//mdk-stage1// } else
-//mdk-stage1// for (i = 0; i < PCI_COUNT; i++)
-//mdk-stage1// if (strstr(s, pci_id[i].tag) != NULL) break;
-//mdk-stage1// if (i != PCI_COUNT) {
-//mdk-stage1// name = pci_id[i].name;
-//mdk-stage1// break;
-//mdk-stage1// } else {
-//mdk-stage1// t = strstr(s, "CardBus bridge");
-//mdk-stage1// if (t != NULL) {
-//mdk-stage1// name = t + 16;
-//mdk-stage1// t = strchr(s, '(');
-//mdk-stage1// t[-1] = '\0';
-//mdk-stage1// break;
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// }
- fclose(f);
-
- if (name) {
-//mdk-stage1// if (module)
-//mdk-stage1// printf("i82365\n");
-//mdk-stage1// else
- log_message("\t%s found, 2 sockets (driver %s).", name, driver);
- return 0;
- } else {
-//mdk-stage1// if (!module)
- log_message("\tnot found.");
- return -ENODEV;
- }
-}
-//mdk-stage1// #endif
-
-/*====================================================================*/
-
-//mdk-stage1// #ifdef CONFIG_ISA
-//mdk-stage1//
-//mdk-stage1// #ifdef __GLIBC__
-#include <sys/io.h>
-//mdk-stage1// #else
-//mdk-stage1// #include <asm/io.h>
-//mdk-stage1// #endif
-typedef u_short ioaddr_t;
-
-#include "i82365.h"
-#include "cirrus.h"
-#include "vg468.h"
-
-static ioaddr_t i365_base = 0x03e0;
-
-static u_char i365_get(u_short sock, u_short reg)
-{
- u_char val = I365_REG(sock, reg);
- outb(val, i365_base); val = inb(i365_base+1);
- return val;
-}
-
-static void i365_set(u_short sock, u_short reg, u_char data)
-{
- u_char val = I365_REG(sock, reg);
- outb(val, i365_base); outb(data, i365_base+1);
-}
-
-static void i365_bset(u_short sock, u_short reg, u_char mask)
-{
- u_char d = i365_get(sock, reg);
- d |= mask;
- i365_set(sock, reg, d);
-}
-
-static void i365_bclr(u_short sock, u_short reg, u_char mask)
-{
- u_char d = i365_get(sock, reg);
- d &= ~mask;
- i365_set(sock, reg, d);
-}
-
-int i365_probe(void)
-{
- int val, sock, done;
- char *name = "i82365sl";
-
-//mdk-stage1// if (!module)
- log_message("PCMCIA: probing for Intel PCIC (ISA)..");
-//mdk-stage1// if (verbose) printf("\n");
-
- sock = done = 0;
- if (ioperm(i365_base, 4, 1)) {
- log_perror("PCMCIA: ioperm");
- return -1;
- }
- ioperm(0x80, 1, 1);
- for (; sock < 2; sock++) {
- val = i365_get(sock, I365_IDENT);
-//mdk-stage1// if (verbose)
-//mdk-stage1// printf(" ident(%d)=%#2.2x", sock, val);
- switch (val) {
- case 0x82:
- name = "i82365sl A step";
- break;
- case 0x83:
- name = "i82365sl B step";
- break;
- case 0x84:
- name = "VLSI 82C146";
- break;
- case 0x88: case 0x89: case 0x8a:
- name = "IBM Clone";
- break;
- case 0x8b: case 0x8c:
- break;
- default:
- done = 1;
- }
- if (done) break;
- }
-
-//mdk-stage1// if (verbose) printf("\n ");
- if (sock == 0) {
-//mdk-stage1// if (!module)
- log_message("\tnot found.");
- return -ENODEV;
- }
-
- if ((sock == 2) && (strcmp(name, "VLSI 82C146") == 0))
- name = "i82365sl DF";
-
- /* Check for Vadem chips */
- outb(0x0e, i365_base);
- outb(0x37, i365_base);
- i365_bset(0, VG468_MISC, VG468_MISC_VADEMREV);
- val = i365_get(0, I365_IDENT);
- if (val & I365_IDENT_VADEM) {
- if ((val & 7) < 4)
- name = "Vadem VG-468";
- else
- name = "Vadem VG-469";
- i365_bclr(0, VG468_MISC, VG468_MISC_VADEMREV);
- }
-
- /* Check for Cirrus CL-PD67xx chips */
- i365_set(0, PD67_CHIP_INFO, 0);
- val = i365_get(0, PD67_CHIP_INFO);
- if ((val & PD67_INFO_CHIP_ID) == PD67_INFO_CHIP_ID) {
- val = i365_get(0, PD67_CHIP_INFO);
- if ((val & PD67_INFO_CHIP_ID) == 0) {
- if (val & PD67_INFO_SLOTS)
- name = "Cirrus CL-PD672x";
- else {
- name = "Cirrus CL-PD6710";
- sock = 1;
- }
- i365_set(0, PD67_EXT_INDEX, 0xe5);
- if (i365_get(0, PD67_EXT_INDEX) != 0xe5)
- name = "VIA VT83C469";
- }
- }
-
-//mdk-stage1// if (module)
-//mdk-stage1// printf("i82365\n");
-//mdk-stage1// else
- printf("\t%s found, %d sockets.\n", name, sock);
- return 0;
-
-} /* i365_probe */
-
-//mdk-stage1//#endif /* CONFIG_ISA */
-
-/*====================================================================*/
-
-//mdk-stage1//#ifdef CONFIG_ISA
-
-#include "tcic.h"
-
-//mdk-stage1//static ioaddr_t tcic_base = TCIC_BASE;
-
-static u_char tcic_getb(ioaddr_t base, u_char reg)
-{
- u_char val = inb(base+reg);
- return val;
-}
-
-static void tcic_setb(ioaddr_t base, u_char reg, u_char data)
-{
- outb(data, base+reg);
-}
-
-static u_short tcic_getw(ioaddr_t base, u_char reg)
-{
- u_short val = inw(base+reg);
- return val;
-}
-
-static void tcic_setw(ioaddr_t base, u_char reg, u_short data)
-{
- outw(data, base+reg);
-}
-
-static u_short tcic_aux_getw(ioaddr_t base, u_short reg)
-{
- u_char mode = (tcic_getb(base, TCIC_MODE) & TCIC_MODE_PGMMASK) | reg;
- tcic_setb(base, TCIC_MODE, mode);
- return tcic_getw(base, TCIC_AUX);
-}
-
-static void tcic_aux_setw(ioaddr_t base, u_short reg, u_short data)
-{
- u_char mode = (tcic_getb(base, TCIC_MODE) & TCIC_MODE_PGMMASK) | reg;
- tcic_setb(base, TCIC_MODE, mode);
- tcic_setw(base, TCIC_AUX, data);
-}
-
-static int get_tcic_id(ioaddr_t base)
-{
- u_short id;
- tcic_aux_setw(base, TCIC_AUX_TEST, TCIC_TEST_DIAG);
- id = tcic_aux_getw(base, TCIC_AUX_ILOCK);
- id = (id & TCIC_ILOCKTEST_ID_MASK) >> TCIC_ILOCKTEST_ID_SH;
- tcic_aux_setw(base, TCIC_AUX_TEST, 0);
- return id;
-}
-
-int tcic_probe_at(ioaddr_t base)
-{
- int i;
- u_short old;
-
- /* Anything there?? */
- for (i = 0; i < 0x10; i += 2)
- if (tcic_getw(base, i) == 0xffff)
- return -1;
-
-//mdk-stage1// if (!module)
- log_message("\tat %#3.3x: ", base); fflush(stdout);
-
- /* Try to reset the chip */
- tcic_setw(base, TCIC_SCTRL, TCIC_SCTRL_RESET);
- tcic_setw(base, TCIC_SCTRL, 0);
-
- /* Can we set the addr register? */
- old = tcic_getw(base, TCIC_ADDR);
- tcic_setw(base, TCIC_ADDR, 0);
- if (tcic_getw(base, TCIC_ADDR) != 0) {
- tcic_setw(base, TCIC_ADDR, old);
- return -2;
- }
-
- tcic_setw(base, TCIC_ADDR, 0xc3a5);
- if (tcic_getw(base, TCIC_ADDR) != 0xc3a5)
- return -3;
-
- return 2;
-}
-
-int tcic_probe(void)
-{
- int sock, id;
-
-//mdk-stage1// if (!module)
- log_message("PCMCIA: probing for Databook TCIC-2 (ISA).."); fflush(stdout);
-
- if (ioperm(TCIC_BASE, 16, 1)) {
- log_perror("PCMCIA: ioperm");
- return -1;
- }
- ioperm(0x80, 1, 1);
- sock = tcic_probe_at(TCIC_BASE);
-
- if (sock <= 0) {
-//mdk-stage1// if (!module)
- log_message("\tnot found.");
- return -ENODEV;
- }
-
-//mdk-stage1// if (module)
-//mdk-stage1// printf("tcic\n");
-//mdk-stage1// else {
- id = get_tcic_id(TCIC_BASE);
- switch (id) {
- case TCIC_ID_DB86082:
- log_message("DB86082"); break;
- case TCIC_ID_DB86082A:
- log_message("DB86082A"); break;
- case TCIC_ID_DB86084:
- log_message("DB86084"); break;
- case TCIC_ID_DB86084A:
- log_message("DB86084A"); break;
- case TCIC_ID_DB86072:
- log_message("DB86072"); break;
- case TCIC_ID_DB86184:
- log_message("DB86184"); break;
- case TCIC_ID_DB86082B:
- log_message("DB86082B"); break;
- default:
- log_message("Unknown TCIC-2 ID 0x%02x", id);
- }
- log_message(" found at %#6x, %d sockets.", TCIC_BASE, sock);
-//mdk-stage1// }
- return 0;
-
-} /* tcic_probe */
-
-//mdk-stage1// #endif /* CONFIG_ISA */
-
-//mdk-stage1// /*====================================================================*/
-//mdk-stage1//
-//mdk-stage1// int main(int argc, char *argv[])
-//mdk-stage1// {
-//mdk-stage1// int optch, errflg;
-//mdk-stage1// extern char *optarg;
-//mdk-stage1// int verbose = 0, module = 0;
-//mdk-stage1//
-//mdk-stage1// errflg = 0;
-//mdk-stage1// while ((optch = getopt(argc, argv, "t:vxm")) != -1) {
-//mdk-stage1// switch (optch) {
-//mdk-stage1// #ifdef CONFIG_ISA
-//mdk-stage1// case 't':
-//mdk-stage1// tcic_base = strtoul(optarg, NULL, 0); break;
-//mdk-stage1// #endif
-//mdk-stage1// case 'v':
-//mdk-stage1// verbose = 1; break;
-//mdk-stage1// case 'm':
-//mdk-stage1// module = 1; break;
-//mdk-stage1// default:
-//mdk-stage1// errflg = 1; break;
-//mdk-stage1// }
-//mdk-stage1// }
-//mdk-stage1// if (errflg || (optind < argc)) {
-//mdk-stage1// fprintf(stderr, "usage: %s [-t tcic_base] [-v] [-m]\n", argv[0]);
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1// }
-//mdk-stage1//
-//mdk-stage1// #ifdef CONFIG_PCI
-//mdk-stage1// if (pci_probe(verbose, module) == 0)
-//mdk-stage1// exit(EXIT_SUCCESS);
-//mdk-stage1// #endif
-//mdk-stage1// #ifdef CONFIG_ISA
-//mdk-stage1// if (i365_probe(verbose, module) == 0)
-//mdk-stage1// exit(EXIT_SUCCESS);
-//mdk-stage1// else if (tcic_probe(verbose, module, tcic_base) == 0)
-//mdk-stage1// exit(EXIT_SUCCESS);
-//mdk-stage1// #endif
-//mdk-stage1// exit(EXIT_FAILURE);
-//mdk-stage1// return 0;
-//mdk-stage1// }
-
-
-char * pcmcia_probe(void)
-{
- if (!pci_probe())
- return driver;
- else if (!i365_probe())
- return "i82365";
- else if (!tcic_probe())
- return "tcic";
- else
- return NULL;
-}
diff --git a/mdk-stage1/pcmcia_/tcic.h b/mdk-stage1/pcmcia_/tcic.h
deleted file mode 100644
index cad193885..000000000
--- a/mdk-stage1/pcmcia_/tcic.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * tcic.h 1.15 2001/08/24 12:15:34
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_TCIC_H
-#define _LINUX_TCIC_H
-
-#define TCIC_BASE 0x240
-
-/* offsets of registers from TCIC_BASE */
-#define TCIC_DATA 0x00
-#define TCIC_ADDR 0x02
-#define TCIC_SCTRL 0x06
-#define TCIC_SSTAT 0x07
-#define TCIC_MODE 0x08
-#define TCIC_PWR 0x09
-#define TCIC_EDC 0x0A
-#define TCIC_ICSR 0x0C
-#define TCIC_IENA 0x0D
-#define TCIC_AUX 0x0E
-
-#define TCIC_SS_SHFT 12
-#define TCIC_SS_MASK 0x7000
-
-/* Flags for TCIC_ADDR */
-#define TCIC_ADR2_REG 0x8000
-#define TCIC_ADR2_INDREG 0x0800
-
-#define TCIC_ADDR_REG 0x80000000
-#define TCIC_ADDR_SS_SHFT (TCIC_SS_SHFT+16)
-#define TCIC_ADDR_SS_MASK (TCIC_SS_MASK<<16)
-#define TCIC_ADDR_INDREG 0x08000000
-#define TCIC_ADDR_IO 0x04000000
-#define TCIC_ADDR_MASK 0x03ffffff
-
-/* Flags for TCIC_SCTRL */
-#define TCIC_SCTRL_ENA 0x01
-#define TCIC_SCTRL_INCMODE 0x18
-#define TCIC_SCTRL_INCMODE_HOLD 0x00
-#define TCIC_SCTRL_INCMODE_WORD 0x08
-#define TCIC_SCTRL_INCMODE_REG 0x10
-#define TCIC_SCTRL_INCMODE_AUTO 0x18
-#define TCIC_SCTRL_EDCSUM 0x20
-#define TCIC_SCTRL_RESET 0x80
-
-/* Flags for TCIC_SSTAT */
-#define TCIC_SSTAT_6US 0x01
-#define TCIC_SSTAT_10US 0x02
-#define TCIC_SSTAT_PROGTIME 0x04
-#define TCIC_SSTAT_LBAT1 0x08
-#define TCIC_SSTAT_LBAT2 0x10
-#define TCIC_SSTAT_RDY 0x20 /* Inverted */
-#define TCIC_SSTAT_WP 0x40
-#define TCIC_SSTAT_CD 0x80 /* Card detect */
-
-/* Flags for TCIC_MODE */
-#define TCIC_MODE_PGMMASK 0x1f
-#define TCIC_MODE_NORMAL 0x00
-#define TCIC_MODE_PGMWR 0x01
-#define TCIC_MODE_PGMRD 0x02
-#define TCIC_MODE_PGMCE 0x04
-#define TCIC_MODE_PGMDBW 0x08
-#define TCIC_MODE_PGMWORD 0x10
-#define TCIC_MODE_AUXSEL_MASK 0xe0
-
-/* Registers accessed through TCIC_AUX, by setting TCIC_MODE */
-#define TCIC_AUX_TCTL (0<<5)
-#define TCIC_AUX_PCTL (1<<5)
-#define TCIC_AUX_WCTL (2<<5)
-#define TCIC_AUX_EXTERN (3<<5)
-#define TCIC_AUX_PDATA (4<<5)
-#define TCIC_AUX_SYSCFG (5<<5)
-#define TCIC_AUX_ILOCK (6<<5)
-#define TCIC_AUX_TEST (7<<5)
-
-/* Flags for TCIC_PWR */
-#define TCIC_PWR_VCC(sock) (0x01<<(sock))
-#define TCIC_PWR_VCC_MASK 0x03
-#define TCIC_PWR_VPP(sock) (0x08<<(sock))
-#define TCIC_PWR_VPP_MASK 0x18
-#define TCIC_PWR_CLIMENA 0x40
-#define TCIC_PWR_CLIMSTAT 0x80
-
-/* Flags for TCIC_ICSR */
-#define TCIC_ICSR_CLEAR 0x01
-#define TCIC_ICSR_SET 0x02
-#define TCIC_ICSR_JAM (TCIC_ICSR_CLEAR|TCIC_ICSR_SET)
-#define TCIC_ICSR_STOPCPU 0x04
-#define TCIC_ICSR_ILOCK 0x08
-#define TCIC_ICSR_PROGTIME 0x10
-#define TCIC_ICSR_ERR 0x20
-#define TCIC_ICSR_CDCHG 0x40
-#define TCIC_ICSR_IOCHK 0x80
-
-/* Flags for TCIC_IENA */
-#define TCIC_IENA_CFG_MASK 0x03
-#define TCIC_IENA_CFG_OFF 0x00 /* disabled */
-#define TCIC_IENA_CFG_OD 0x01 /* active low, open drain */
-#define TCIC_IENA_CFG_LOW 0x02 /* active low, totem pole */
-#define TCIC_IENA_CFG_HIGH 0x03 /* active high, totem pole */
-#define TCIC_IENA_ILOCK 0x08
-#define TCIC_IENA_PROGTIME 0x10
-#define TCIC_IENA_ERR 0x20 /* overcurrent or iochk */
-#define TCIC_IENA_CDCHG 0x40
-
-/* Flags for TCIC_AUX_WCTL */
-#define TCIC_WAIT_COUNT_MASK 0x001f
-#define TCIC_WAIT_ASYNC 0x0020
-#define TCIC_WAIT_SENSE 0x0040
-#define TCIC_WAIT_SRC 0x0080
-#define TCIC_WCTL_WR 0x0100
-#define TCIC_WCTL_RD 0x0200
-#define TCIC_WCTL_CE 0x0400
-#define TCIC_WCTL_LLBAT1 0x0800
-#define TCIC_WCTL_LLBAT2 0x1000
-#define TCIC_WCTL_LRDY 0x2000
-#define TCIC_WCTL_LWP 0x4000
-#define TCIC_WCTL_LCD 0x8000
-
-/* Flags for TCIC_AUX_SYSCFG */
-#define TCIC_SYSCFG_IRQ_MASK 0x000f
-#define TCIC_SYSCFG_MCSFULL 0x0010
-#define TCIC_SYSCFG_IO1723 0x0020
-#define TCIC_SYSCFG_MCSXB 0x0040
-#define TCIC_SYSCFG_ICSXB 0x0080
-#define TCIC_SYSCFG_NOPDN 0x0100
-#define TCIC_SYSCFG_MPSEL_SHFT 9
-#define TCIC_SYSCFG_MPSEL_MASK 0x0e00
-#define TCIC_SYSCFG_MPSENSE 0x2000
-#define TCIC_SYSCFG_AUTOBUSY 0x4000
-#define TCIC_SYSCFG_ACC 0x8000
-
-#define TCIC_ILOCK_OUT 0x01
-#define TCIC_ILOCK_SENSE 0x02
-#define TCIC_ILOCK_CRESET 0x04
-#define TCIC_ILOCK_CRESENA 0x08
-#define TCIC_ILOCK_CWAIT 0x10
-#define TCIC_ILOCK_CWAITSNS 0x20
-#define TCIC_ILOCK_HOLD_MASK 0xc0
-#define TCIC_ILOCK_HOLD_CCLK 0xc0
-
-#define TCIC_ILOCKTEST_ID_SH 8
-#define TCIC_ILOCKTEST_ID_MASK 0x7f00
-#define TCIC_ILOCKTEST_MCIC_1 0x8000
-
-#define TCIC_ID_DB86082 0x02
-#define TCIC_ID_DB86082A 0x03
-#define TCIC_ID_DB86084 0x04
-#define TCIC_ID_DB86084A 0x08
-#define TCIC_ID_DB86072 0x15
-#define TCIC_ID_DB86184 0x14
-#define TCIC_ID_DB86082B 0x17
-
-#define TCIC_TEST_DIAG 0x8000
-
-/*
- * Indirectly addressed registers
- */
-
-#define TCIC_SCF1(sock) ((sock)<<3)
-#define TCIC_SCF2(sock) (((sock)<<3)+2)
-
-/* Flags for SCF1 */
-#define TCIC_SCF1_IRQ_MASK 0x000f
-#define TCIC_SCF1_IRQ_OFF 0x0000
-#define TCIC_SCF1_IRQOC 0x0010
-#define TCIC_SCF1_PCVT 0x0020
-#define TCIC_SCF1_IRDY 0x0040
-#define TCIC_SCF1_ATA 0x0080
-#define TCIC_SCF1_DMA_SHIFT 8
-#define TCIC_SCF1_DMA_MASK 0x0700
-#define TCIC_SCF1_DMA_OFF 0
-#define TCIC_SCF1_DREQ2 2
-#define TCIC_SCF1_IOSTS 0x0800
-#define TCIC_SCF1_SPKR 0x1000
-#define TCIC_SCF1_FINPACK 0x2000
-#define TCIC_SCF1_DELWR 0x4000
-#define TCIC_SCF1_HD7IDE 0x8000
-
-/* Flags for SCF2 */
-#define TCIC_SCF2_RI 0x0001
-#define TCIC_SCF2_IDBR 0x0002
-#define TCIC_SCF2_MDBR 0x0004
-#define TCIC_SCF2_MLBAT1 0x0008
-#define TCIC_SCF2_MLBAT2 0x0010
-#define TCIC_SCF2_MRDY 0x0020
-#define TCIC_SCF2_MWP 0x0040
-#define TCIC_SCF2_MCD 0x0080
-#define TCIC_SCF2_MALL 0x00f8
-
-/* Indirect addresses for memory window registers */
-#define TCIC_MWIN(sock,map) (0x100+(((map)+((sock)<<2))<<3))
-#define TCIC_MBASE_X 2
-#define TCIC_MMAP_X 4
-#define TCIC_MCTL_X 6
-
-#define TCIC_MBASE_4K_BIT 0x4000
-#define TCIC_MBASE_HA_SHFT 12
-#define TCIC_MBASE_HA_MASK 0x0fff
-
-#define TCIC_MMAP_REG 0x8000
-#define TCIC_MMAP_CA_SHFT 12
-#define TCIC_MMAP_CA_MASK 0x3fff
-
-#define TCIC_MCTL_WSCNT_MASK 0x001f
-#define TCIC_MCTL_WCLK 0x0020
-#define TCIC_MCTL_WCLK_CCLK 0x0000
-#define TCIC_MCTL_WCLK_BCLK 0x0020
-#define TCIC_MCTL_QUIET 0x0040
-#define TCIC_MCTL_WP 0x0080
-#define TCIC_MCTL_ACC 0x0100
-#define TCIC_MCTL_KE 0x0200
-#define TCIC_MCTL_EDC 0x0400
-#define TCIC_MCTL_B8 0x0800
-#define TCIC_MCTL_SS_SHFT TCIC_SS_SHFT
-#define TCIC_MCTL_SS_MASK TCIC_SS_MASK
-#define TCIC_MCTL_ENA 0x8000
-
-/* Indirect addresses for I/O window registers */
-#define TCIC_IWIN(sock,map) (0x200+(((map)+((sock)<<1))<<2))
-#define TCIC_IBASE_X 0
-#define TCIC_ICTL_X 2
-
-#define TCIC_ICTL_WSCNT_MASK TCIC_MCTL_WSCNT_MASK
-#define TCIC_ICTL_QUIET TCIC_MCTL_QUIET
-#define TCIC_ICTL_1K 0x0080
-#define TCIC_ICTL_PASS16 0x0100
-#define TCIC_ICTL_ACC TCIC_MCTL_ACC
-#define TCIC_ICTL_TINY 0x0200
-#define TCIC_ICTL_B16 0x0400
-#define TCIC_ICTL_B8 TCIC_MCTL_B8
-#define TCIC_ICTL_BW_MASK (TCIC_ICTL_B16|TCIC_ICTL_B8)
-#define TCIC_ICTL_BW_DYN 0
-#define TCIC_ICTL_BW_8 TCIC_ICTL_B8
-#define TCIC_ICTL_BW_16 TCIC_ICTL_B16
-#define TCIC_ICTL_BW_ATA (TCIC_ICTL_B16|TCIC_ICTL_B8)
-#define TCIC_ICTL_SS_SHFT TCIC_SS_SHFT
-#define TCIC_ICTL_SS_MASK TCIC_SS_MASK
-#define TCIC_ICTL_ENA TCIC_MCTL_ENA
-
-#endif /* _LINUX_TCIC_H */
diff --git a/mdk-stage1/pcmcia_/version.h b/mdk-stage1/pcmcia_/version.h
deleted file mode 100644
index 3be8f28bc..000000000
--- a/mdk-stage1/pcmcia_/version.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* version.h 1.101 2001/08/09 12:29:14 (David Hinds) */
-
-#define CS_RELEASE "3.1.29"
-#define CS_RELEASE_CODE 0x311d
diff --git a/mdk-stage1/pcmcia_/vg468.h b/mdk-stage1/pcmcia_/vg468.h
deleted file mode 100644
index 23890cd07..000000000
--- a/mdk-stage1/pcmcia_/vg468.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * vg468.h 1.14 2001/08/24 12:15:34
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#ifndef _LINUX_VG468_H
-#define _LINUX_VG468_H
-
-/* Special bit in I365_IDENT used for Vadem chip detection */
-#define I365_IDENT_VADEM 0x08
-
-/* Special definitions in I365_POWER */
-#define VG468_VPP2_MASK 0x0c
-#define VG468_VPP2_5V 0x04
-#define VG468_VPP2_12V 0x08
-
-/* Unique Vadem registers */
-#define VG469_VSENSE 0x1f /* Card voltage sense */
-#define VG469_VSELECT 0x2f /* Card voltage select */
-#define VG468_CTL 0x38 /* Control register */
-#define VG468_TIMER 0x39 /* Timer control */
-#define VG468_MISC 0x3a /* Miscellaneous */
-#define VG468_GPIO_CFG 0x3b /* GPIO configuration */
-#define VG469_EXT_MODE 0x3c /* Extended mode register */
-#define VG468_SELECT 0x3d /* Programmable chip select */
-#define VG468_SELECT_CFG 0x3e /* Chip select configuration */
-#define VG468_ATA 0x3f /* ATA control */
-
-/* Flags for VG469_VSENSE */
-#define VG469_VSENSE_A_VS1 0x01
-#define VG469_VSENSE_A_VS2 0x02
-#define VG469_VSENSE_B_VS1 0x04
-#define VG469_VSENSE_B_VS2 0x08
-
-/* Flags for VG469_VSELECT */
-#define VG469_VSEL_VCC 0x03
-#define VG469_VSEL_5V 0x00
-#define VG469_VSEL_3V 0x03
-#define VG469_VSEL_MAX 0x0c
-#define VG469_VSEL_EXT_STAT 0x10
-#define VG469_VSEL_EXT_BUS 0x20
-#define VG469_VSEL_MIXED 0x40
-#define VG469_VSEL_ISA 0x80
-
-/* Flags for VG468_CTL */
-#define VG468_CTL_SLOW 0x01 /* 600ns memory timing */
-#define VG468_CTL_ASYNC 0x02 /* Asynchronous bus clocking */
-#define VG468_CTL_TSSI 0x08 /* Tri-state some outputs */
-#define VG468_CTL_DELAY 0x10 /* Card detect debounce */
-#define VG468_CTL_INPACK 0x20 /* Obey INPACK signal? */
-#define VG468_CTL_POLARITY 0x40 /* VCCEN polarity */
-#define VG468_CTL_COMPAT 0x80 /* Compatibility stuff */
-
-#define VG469_CTL_WS_COMPAT 0x04 /* Wait state compatibility */
-#define VG469_CTL_STRETCH 0x10 /* LED stretch */
-
-/* Flags for VG468_TIMER */
-#define VG468_TIMER_ZEROPWR 0x10 /* Zero power control */
-#define VG468_TIMER_SIGEN 0x20 /* Power up */
-#define VG468_TIMER_STATUS 0x40 /* Activity timer status */
-#define VG468_TIMER_RES 0x80 /* Timer resolution */
-#define VG468_TIMER_MASK 0x0f /* Activity timer timeout */
-
-/* Flags for VG468_MISC */
-#define VG468_MISC_GPIO 0x04 /* General-purpose IO */
-#define VG468_MISC_DMAWSB 0x08 /* DMA wait state control */
-#define VG469_MISC_LEDENA 0x10 /* LED enable */
-#define VG468_MISC_VADEMREV 0x40 /* Vadem revision control */
-#define VG468_MISC_UNLOCK 0x80 /* Unique register lock */
-
-/* Flags for VG469_EXT_MODE_A */
-#define VG469_MODE_VPPST 0x03 /* Vpp steering control */
-#define VG469_MODE_INT_SENSE 0x04 /* Internal voltage sense */
-#define VG469_MODE_CABLE 0x08
-#define VG469_MODE_COMPAT 0x10 /* i82365sl B or DF step */
-#define VG469_MODE_TEST 0x20
-#define VG469_MODE_RIO 0x40 /* Steer RIO to INTR? */
-
-/* Flags for VG469_EXT_MODE_B */
-#define VG469_MODE_B_3V 0x01 /* 3.3v for socket B */
-
-#endif /* _LINUX_VG468_H */
diff --git a/mdk-stage1/pcmcia_/yacc_config.c b/mdk-stage1/pcmcia_/yacc_config.c
deleted file mode 100644
index 2262d52f3..000000000
--- a/mdk-stage1/pcmcia_/yacc_config.c
+++ /dev/null
@@ -1,1015 +0,0 @@
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define yyclearin (yychar=(-1))
-#define yyerrok (yyerrflag=0)
-#define YYRECOVERING (yyerrflag!=0)
-#define YYPREFIX "yy"
-#line 2 "yacc_config.y"
-/*
- * yacc_config.y 1.53 2001/08/24 12:21:34
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License
- * at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- * the License for the specific language governing rights and
- * limitations under the License.
- *
- * The initial developer of the original code is David A. Hinds
- * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds
- * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
- *
- * Alternatively, the contents of this file may be used under the
- * terms of the GNU General Public License version 2 (the "GPL"), in
- * which case the provisions of the GPL are applicable instead of the
- * above. If you wish to allow the use of your version of this file
- * only under the terms of the GPL and not to allow others to use
- * your version of this file under the MPL, indicate your decision by
- * deleting the provisions above and replace them with the notice and
- * other provisions required by the GPL. If you do not delete the
- * provisions above, a recipient may use your version of this file
- * under either the MPL or the GPL.
- */
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <syslog.h>
-#include <sys/types.h>
-
-#include <pcmcia_/cs_types.h>
-#include <pcmcia_/cs.h>
-#include <pcmcia_/cistpl.h>
-#include <pcmcia_/ds.h>
-
-#include "cardmgr.h"
-
-/* If bison: generate nicer error messages */
-#define YYERROR_VERBOSE 1
-
-/* from lex_config, for nice error messages */
-extern char *current_file;
-extern int current_lineno;
-
-void yyerror(char *msg, ...);
-
-static int add_binding(card_info_t *card, char *name, int fn);
-static int add_module(device_info_t *card, char *name);
-
-#line 65 "yacc_config.y"
-typedef union {
- char *str;
- unsigned long num;
- struct device_info_t *device;
- struct card_info_t *card;
- struct mtd_ident_t *mtd;
- struct adjust_list_t *adjust;
-} YYSTYPE;
-#line 77 "y.tab.c"
-#define DEVICE 257
-#define CARD 258
-#define ANONYMOUS 259
-#define TUPLE 260
-#define MANFID 261
-#define VERSION 262
-#define FUNCTION 263
-#define PCI 264
-#define BIND 265
-#define CIS 266
-#define TO 267
-#define NEEDS_MTD 268
-#define MODULE 269
-#define OPTS 270
-#define CLASS 271
-#define REGION 272
-#define JEDEC 273
-#define DTYPE 274
-#define DEFAULT 275
-#define MTD 276
-#define INCLUDE 277
-#define EXCLUDE 278
-#define RESERVE 279
-#define IRQ_NO 280
-#define PORT 281
-#define MEMORY 282
-#define STRING 283
-#define NUMBER 284
-#define YYERRCODE 256
-short yylhs[] = { -1,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
- 1, 1, 2, 2, 2, 3, 3, 3, 3, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 8, 9,
- 10, 11, 12, 12, 13, 15, 14, 14, 14, 14,
- 4, 21, 5, 5, 5, 6, 16, 16, 16, 16,
- 18, 17, 19, 20, 20, 22,
-};
-short yylen[] = { 2,
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 3, 2, 4, 4, 2, 1, 1, 1, 2,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 7,
- 5, 5, 3, 3, 3, 3, 3, 5, 3, 5,
- 2, 4, 3, 3, 3, 3, 2, 1, 1, 1,
- 3, 4, 2, 3, 3, 4,
-};
-short yydefred[] = { 1,
- 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 17, 0, 19, 0, 21, 22, 23, 24,
- 0, 26, 0, 28, 0, 49, 48, 50, 0, 6,
- 7, 16, 20, 0, 47, 0, 0, 0, 0, 9,
- 10, 11, 0, 41, 0, 0, 0, 0, 29, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 53, 0, 0, 0, 0, 13, 0, 0, 12, 43,
- 46, 44, 45, 0, 0, 33, 35, 0, 0, 36,
- 34, 0, 0, 51, 54, 55, 42, 56, 0, 0,
- 0, 0, 0, 0, 0, 52, 14, 15, 0, 31,
- 32, 38, 40, 0, 30,
-};
-short yydgoto[] = { 1,
- 11, 40, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31,
-};
-short yysindex[] = { 0,
- -250, 0, -279, -278, -274, -265, -259, -242, -242, -242,
- -10, -248, 0, -44, 0, -249, 0, 0, 0, 0,
- -9, 0, -3, 0, -243, 0, 0, 0, -233, 0,
- 0, 0, 0, -228, 0, -227, -240, -238, -237, 0,
- 0, 0, -242, 0, -235, -232, -231, -230, 0, -234,
- -229, -226, -225, -224, -222, -221, -220, -219, -218, -217,
- 0, -215, -213, -212, -211, 0, 9, 11, 0, 0,
- 0, 0, 0, 14, 21, 0, 0, 30, -192, 0,
- 0, -191, -207, 0, 0, 0, 0, 0, -206, -205,
- -204, -203, -202, -201, -200, 0, 0, 0, 41, 0,
- 0, 0, 0, -197, 0,
-};
-short yyrindex[] = { 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 107, 149, 0, 90, 0, 124, 0, 0, 0, 0,
- 49, 0, 73, 0, 0, 0, 0, 0, 141, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 0, 25, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
-};
-short yygindex[] = { 0,
- 0, -7, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,
-};
-#define YYTABLESIZE 428
-short yytable[] = { 48,
- 37, 41, 42, 32, 33, 2, 3, 4, 34, 49,
- 50, 51, 52, 53, 54, 55, 56, 35, 5, 44,
- 45, 6, 46, 36, 39, 7, 8, 9, 10, 59,
- 60, 61, 62, 43, 57, 69, 63, 37, 38, 39,
- 58, 64, 65, 66, 37, 67, 68, 70, 25, 74,
- 71, 72, 73, 89, 75, 90, 76, 91, 77, 78,
- 79, 80, 81, 82, 92, 83, 84, 85, 39, 86,
- 87, 88, 27, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 0, 0, 0, 18,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 47, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 37, 37, 37, 37,
- 37, 37, 37, 37, 37, 37, 37, 0, 0, 37,
- 0, 0, 37, 0, 0, 0, 37, 37, 37, 37,
- 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 0, 0, 39, 0, 0, 39, 0, 0, 0,
- 39, 39, 39, 39, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 25, 25, 0, 0, 25, 0, 0,
- 25, 0, 0, 0, 25, 25, 25, 25, 27, 27,
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 0,
- 0, 27, 0, 0, 27, 18, 18, 18, 27, 27,
- 27, 27, 0, 0, 0, 0, 0, 18, 18, 0,
- 18, 18, 2, 2, 2, 18, 18, 18, 18, 0,
- 0, 0, 0, 0, 0, 2, 0, 0, 2, 5,
- 5, 5, 2, 2, 2, 2, 0, 0, 0, 0,
- 0, 0, 5, 0, 0, 5, 4, 4, 4, 5,
- 5, 5, 5, 0, 3, 3, 3, 0, 0, 4,
- 0, 0, 4, 0, 0, 0, 4, 4, 4, 4,
- 3, 0, 0, 0, 3, 3, 3, 3,
-};
-short yycheck[] = { 44,
- 0, 9, 10, 283, 283, 256, 257, 258, 283, 259,
- 260, 261, 262, 263, 264, 265, 266, 283, 269, 268,
- 269, 272, 271, 283, 0, 276, 277, 278, 279, 273,
- 274, 275, 276, 44, 44, 43, 270, 280, 281, 282,
- 44, 270, 270, 284, 44, 284, 284, 283, 0, 284,
- 283, 283, 283, 45, 284, 45, 283, 44, 284, 284,
- 283, 283, 283, 283, 44, 284, 284, 283, 44, 283,
- 283, 283, 0, 44, 267, 267, 284, 284, 284, 284,
- 284, 284, 284, 284, 44, 283, -1, -1, -1, 0,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, 0, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 270, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, -1, -1, 269,
- -1, -1, 272, -1, -1, -1, 276, 277, 278, 279,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, -1, -1, 269, -1, -1, 272, -1, -1, -1,
- 276, 277, 278, 279, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, -1, -1, 269, -1, -1,
- 272, -1, -1, -1, 276, 277, 278, 279, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, -1,
- -1, 269, -1, -1, 272, 256, 257, 258, 276, 277,
- 278, 279, -1, -1, -1, -1, -1, 268, 269, -1,
- 271, 272, 256, 257, 258, 276, 277, 278, 279, -1,
- -1, -1, -1, -1, -1, 269, -1, -1, 272, 256,
- 257, 258, 276, 277, 278, 279, -1, -1, -1, -1,
- -1, -1, 269, -1, -1, 272, 256, 257, 258, 276,
- 277, 278, 279, -1, 256, 257, 258, -1, -1, 269,
- -1, -1, 272, -1, -1, -1, 276, 277, 278, 279,
- 272, -1, -1, -1, 276, 277, 278, 279,
-};
-#define YYFINAL 1
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 284
-#if YYDEBUG
-char *yyname[] = {
-"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,"','","'-'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"DEVICE","CARD",
-"ANONYMOUS","TUPLE","MANFID","VERSION","FUNCTION","PCI","BIND","CIS","TO",
-"NEEDS_MTD","MODULE","OPTS","CLASS","REGION","JEDEC","DTYPE","DEFAULT","MTD",
-"INCLUDE","EXCLUDE","RESERVE","IRQ_NO","PORT","MEMORY","STRING","NUMBER",
-};
-char *yyrule[] = {
-"$accept : list",
-"list :",
-"list : list adjust",
-"list : list device",
-"list : list mtd",
-"list : list card",
-"list : list opts",
-"list : list mtd_opts",
-"list : list error",
-"adjust : INCLUDE resource",
-"adjust : EXCLUDE resource",
-"adjust : RESERVE resource",
-"adjust : adjust ',' resource",
-"resource : IRQ_NO NUMBER",
-"resource : PORT NUMBER '-' NUMBER",
-"resource : MEMORY NUMBER '-' NUMBER",
-"device : DEVICE STRING",
-"device : needs_mtd",
-"device : module",
-"device : class",
-"card : CARD STRING",
-"card : anonymous",
-"card : tuple",
-"card : manfid",
-"card : pci",
-"card : version",
-"card : function",
-"card : bind",
-"card : cis",
-"anonymous : card ANONYMOUS",
-"tuple : card TUPLE NUMBER ',' NUMBER ',' STRING",
-"manfid : card MANFID NUMBER ',' NUMBER",
-"pci : card PCI NUMBER ',' NUMBER",
-"version : card VERSION STRING",
-"version : version ',' STRING",
-"function : card FUNCTION NUMBER",
-"cis : card CIS STRING",
-"bind : card BIND STRING",
-"bind : card BIND STRING TO NUMBER",
-"bind : bind ',' STRING",
-"bind : bind ',' STRING TO NUMBER",
-"needs_mtd : device NEEDS_MTD",
-"opts : MODULE STRING OPTS STRING",
-"module : device MODULE STRING",
-"module : module OPTS STRING",
-"module : module ',' STRING",
-"class : device CLASS STRING",
-"region : REGION STRING",
-"region : dtype",
-"region : jedec",
-"region : default",
-"dtype : region DTYPE NUMBER",
-"jedec : region JEDEC NUMBER NUMBER",
-"default : region DEFAULT",
-"mtd : region MTD STRING",
-"mtd : mtd OPTS STRING",
-"mtd_opts : MTD STRING OPTS STRING",
-};
-#endif
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH 500
-#endif
-#endif
-int yydebug;
-int yynerrs;
-int yyerrflag;
-int yychar;
-short *yyssp;
-YYSTYPE *yyvsp;
-YYSTYPE yyval;
-YYSTYPE yylval;
-short yyss[YYSTACKSIZE];
-YYSTYPE yyvs[YYSTACKSIZE];
-#define yystacksize YYSTACKSIZE
-#line 468 "yacc_config.y"
-void yyerror(char *msg, ...)
-{
- va_list ap;
- char str[256];
-
- va_start(ap, msg);
- sprintf(str, "config error, file '%s' line %d: ",
- current_file, current_lineno);
- vsprintf(str+strlen(str), msg, ap);
-#if YYDEBUG
- fprintf(stderr, "%s\n", str);
-#else
- syslog(LOG_ERR, "%s", str);
-#endif
- va_end(ap);
-}
-
-static int add_binding(card_info_t *card, char *name, int fn)
-{
- device_info_t *dev = root_device;
- if (card->bindings == MAX_BINDINGS) {
- yyerror("too many bindings\n");
- return -1;
- }
- for (; dev; dev = dev->next)
- if (strcmp((char *)dev->dev_info, name) == 0) break;
- if (dev == NULL) {
- yyerror("unknown device: %s", name);
- return -1;
- }
- card->device[card->bindings] = dev;
- card->dev_fn[card->bindings] = fn;
- card->bindings++;
- free(name);
- return 0;
-}
-
-static int add_module(device_info_t *dev, char *name)
-{
- if (dev->modules == MAX_MODULES) {
- yyerror("too many modules");
- return -1;
- }
- dev->module[dev->modules] = name;
- dev->opts[dev->modules] = NULL;
- dev->modules++;
- return 0;
-}
-
-#if YYDEBUG
-adjust_list_t *root_adjust = NULL;
-device_info_t *root_device = NULL;
-card_info_t *root_card = NULL, *blank_card = NULL, *root_func = NULL;
-mtd_ident_t *root_mtd = NULL, *default_mtd = NULL;
-
-void main(int argc, char *argv[])
-{
- yydebug = 1;
- if (argc > 1)
- parse_configfile(argv[1]);
-}
-#endif
-#line 426 "y.tab.c"
-#define YYABORT goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR goto yyerrlab
-int yylex(void);
-int
-yyparse()
-{
- register int yym, yyn, yystate;
-#if YYDEBUG
- register char *yys;
- extern char *getenv();
-
- if (yys = getenv("YYDEBUG"))
- {
- yyn = *yys;
- if (yyn >= '0' && yyn <= '9')
- yydebug = yyn - '0';
- }
-#endif
-
- yynerrs = 0;
- yyerrflag = 0;
- yychar = (-1);
-
- yyssp = yyss;
- yyvsp = yyvs;
- *yyssp = yystate = 0;
-
-yyloop:
- if ((yyn = yydefred[yystate])) goto yyreduce;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- }
- if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, shifting to state %d\n",
- YYPREFIX, yystate, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- yychar = (-1);
- if (yyerrflag > 0) --yyerrflag;
- goto yyloop;
- }
- if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
- {
- yyn = yytable[yyn];
- goto yyreduce;
- }
- if (yyerrflag) goto yyinrecovery;
- yyerror("syntax error");
-#ifdef lint
- goto yyerrlab;
-#endif
-yyerrlab:
- ++yynerrs;
-yyinrecovery:
- if (yyerrflag < 3)
- {
- yyerrflag = 3;
- for (;;)
- {
- if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate = yytable[yyn];
- *++yyvsp = yylval;
- goto yyloop;
- }
- else
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: error recovery discarding state %d\n",
- YYPREFIX, *yyssp);
-#endif
- if (yyssp <= yyss) goto yyabort;
- --yyssp;
- --yyvsp;
- }
- }
- }
- else
- {
- if (yychar == 0) goto yyabort;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
- YYPREFIX, yystate, yychar, yys);
- }
-#endif
- yychar = (-1);
- goto yyloop;
- }
-yyreduce:
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: state %d, reducing by rule %d (%s)\n",
- YYPREFIX, yystate, yyn, yyrule[yyn]);
-#endif
- yym = yylen[yyn];
- yyval = yyvsp[1-yym];
- switch (yyn)
- {
-case 2:
-#line 84 "yacc_config.y"
-{
- adjust_list_t **tail = &root_adjust;
- while (*tail != NULL) tail = &(*tail)->next;
- *tail = yyvsp[0].adjust;
- }
-break;
-case 3:
-#line 90 "yacc_config.y"
-{
- yyvsp[0].device->next = root_device;
- root_device = yyvsp[0].device;
- }
-break;
-case 4:
-#line 95 "yacc_config.y"
-{
- if (yyvsp[0].mtd->mtd_type == 0) {
- yyerror("no ID method for this card");
- YYERROR;
- }
- if (yyvsp[0].mtd->module == NULL) {
- yyerror("no MTD module specified");
- YYERROR;
- }
- yyvsp[0].mtd->next = root_mtd;
- root_mtd = yyvsp[0].mtd;
- }
-break;
-case 5:
-#line 108 "yacc_config.y"
-{
- if (yyvsp[0].card->ident_type == 0) {
- yyerror("no ID method for this card");
- YYERROR;
- }
- if (yyvsp[0].card->bindings == 0) {
- yyerror("no function bindings");
- YYERROR;
- }
- if (yyvsp[0].card->ident_type == FUNC_IDENT) {
- yyvsp[0].card->next = root_func;
- root_func = yyvsp[0].card;
- } else {
- yyvsp[0].card->next = root_card;
- root_card = yyvsp[0].card;
- }
- }
-break;
-case 9:
-#line 131 "yacc_config.y"
-{
- yyvsp[0].adjust->adj.Action = ADD_MANAGED_RESOURCE;
- yyval.adjust = yyvsp[0].adjust;
- }
-break;
-case 10:
-#line 136 "yacc_config.y"
-{
- yyvsp[0].adjust->adj.Action = REMOVE_MANAGED_RESOURCE;
- yyval.adjust = yyvsp[0].adjust;
- }
-break;
-case 11:
-#line 141 "yacc_config.y"
-{
- yyvsp[0].adjust->adj.Action = ADD_MANAGED_RESOURCE;
- yyvsp[0].adjust->adj.Attributes |= RES_RESERVED;
- yyval.adjust = yyvsp[0].adjust;
- }
-break;
-case 12:
-#line 147 "yacc_config.y"
-{
- yyvsp[0].adjust->adj.Action = yyvsp[-2].adjust->adj.Action;
- yyvsp[0].adjust->adj.Attributes = yyvsp[-2].adjust->adj.Attributes;
- yyvsp[0].adjust->next = yyvsp[-2].adjust;
- yyval.adjust = yyvsp[0].adjust;
- }
-break;
-case 13:
-#line 156 "yacc_config.y"
-{
- yyval.adjust = calloc(sizeof(adjust_list_t), 1);
- yyval.adjust->adj.Resource = RES_IRQ;
- yyval.adjust->adj.resource.irq.IRQ = yyvsp[0].num;
- }
-break;
-case 14:
-#line 162 "yacc_config.y"
-{
- if ((yyvsp[0].num < yyvsp[-2].num) || (yyvsp[0].num > 0xffff)) {
- yyerror("invalid port range");
- YYERROR;
- }
- yyval.adjust = calloc(sizeof(adjust_list_t), 1);
- yyval.adjust->adj.Resource = RES_IO_RANGE;
- yyval.adjust->adj.resource.io.BasePort = yyvsp[-2].num;
- yyval.adjust->adj.resource.io.NumPorts = yyvsp[0].num - yyvsp[-2].num + 1;
- }
-break;
-case 15:
-#line 173 "yacc_config.y"
-{
- if (yyvsp[0].num < yyvsp[-2].num) {
- yyerror("invalid address range");
- YYERROR;
- }
- yyval.adjust = calloc(sizeof(adjust_list_t), 1);
- yyval.adjust->adj.Resource = RES_MEMORY_RANGE;
- yyval.adjust->adj.resource.memory.Base = yyvsp[-2].num;
- yyval.adjust->adj.resource.memory.Size = yyvsp[0].num - yyvsp[-2].num + 1;
- }
-break;
-case 16:
-#line 186 "yacc_config.y"
-{
- yyval.device = calloc(sizeof(device_info_t), 1);
- yyval.device->refs = 1;
- strcpy(yyval.device->dev_info, yyvsp[0].str);
- free(yyvsp[0].str);
- }
-break;
-case 20:
-#line 198 "yacc_config.y"
-{
- yyval.card = calloc(sizeof(card_info_t), 1);
- yyval.card->refs = 1;
- yyval.card->name = yyvsp[0].str;
- }
-break;
-case 29:
-#line 214 "yacc_config.y"
-{
- if (yyvsp[-1].card->ident_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- if (blank_card) {
- yyerror("Anonymous card already defined");
- YYERROR;
- }
- yyvsp[-1].card->ident_type = BLANK_IDENT;
- blank_card = yyvsp[-1].card;
- }
-break;
-case 30:
-#line 229 "yacc_config.y"
-{
- if (yyvsp[-6].card->ident_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- yyvsp[-6].card->ident_type = TUPLE_IDENT;
- yyvsp[-6].card->id.tuple.code = yyvsp[-4].num;
- yyvsp[-6].card->id.tuple.ofs = yyvsp[-2].num;
- yyvsp[-6].card->id.tuple.info = yyvsp[0].str;
- }
-break;
-case 31:
-#line 242 "yacc_config.y"
-{
- if (yyvsp[-4].card->ident_type & EXCL_IDENT) {
- yyerror("ID method already defined");
- YYERROR;
- }
- yyvsp[-4].card->ident_type = MANFID_IDENT;
- yyvsp[-4].card->manfid.manf = yyvsp[-2].num;
- yyvsp[-4].card->manfid.card = yyvsp[0].num;
- }
-break;
-case 32:
-#line 253 "yacc_config.y"
-{
- if (yyvsp[-4].card->ident_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- yyvsp[-4].card->ident_type = PCI_IDENT;
- yyvsp[-4].card->manfid.manf = yyvsp[-2].num;
- yyvsp[-4].card->manfid.card = yyvsp[0].num;
- }
-break;
-case 33:
-#line 264 "yacc_config.y"
-{
- if (yyvsp[-2].card->ident_type & EXCL_IDENT) {
- yyerror("ID method already defined\n");
- YYERROR;
- }
- yyvsp[-2].card->ident_type = VERS_1_IDENT;
- yyvsp[-2].card->id.vers.ns = 1;
- yyvsp[-2].card->id.vers.pi[0] = yyvsp[0].str;
- }
-break;
-case 34:
-#line 274 "yacc_config.y"
-{
- if (yyvsp[-2].card->id.vers.ns == 4) {
- yyerror("too many version strings");
- YYERROR;
- }
- yyvsp[-2].card->id.vers.pi[yyvsp[-2].card->id.vers.ns] = yyvsp[0].str;
- yyvsp[-2].card->id.vers.ns++;
- }
-break;
-case 35:
-#line 285 "yacc_config.y"
-{
- if (yyvsp[-2].card->ident_type != 0) {
- yyerror("ID method already defined\n");
- YYERROR;
- }
- yyvsp[-2].card->ident_type = FUNC_IDENT;
- yyvsp[-2].card->id.func.funcid = yyvsp[0].num;
- }
-break;
-case 36:
-#line 296 "yacc_config.y"
-{ yyvsp[-2].card->cis_file = strdup(yyvsp[0].str); }
-break;
-case 37:
-#line 300 "yacc_config.y"
-{
- if (add_binding(yyvsp[-2].card, yyvsp[0].str, 0) != 0)
- YYERROR;
- }
-break;
-case 38:
-#line 305 "yacc_config.y"
-{
- if (add_binding(yyvsp[-4].card, yyvsp[-2].str, yyvsp[0].num) != 0)
- YYERROR;
- }
-break;
-case 39:
-#line 310 "yacc_config.y"
-{
- if (add_binding(yyvsp[-2].card, yyvsp[0].str, 0) != 0)
- YYERROR;
- }
-break;
-case 40:
-#line 315 "yacc_config.y"
-{
- if (add_binding(yyvsp[-4].card, yyvsp[-2].str, yyvsp[0].num) != 0)
- YYERROR;
- }
-break;
-case 41:
-#line 322 "yacc_config.y"
-{
- yyvsp[-1].device->needs_mtd = 1;
- }
-break;
-case 42:
-#line 328 "yacc_config.y"
-{
- device_info_t *d;
- int i, found = 0;
- for (d = root_device; d; d = d->next) {
- for (i = 0; i < d->modules; i++)
- if (strcmp(yyvsp[-2].str, d->module[i]) == 0) break;
- if (i < d->modules) {
- if (d->opts[i])
- free(d->opts[i]);
- d->opts[i] = strdup(yyvsp[0].str);
- found = 1;
- }
- }
- free(yyvsp[-2].str); free(yyvsp[0].str);
- if (!found) {
- yyerror("module name not found!");
- YYERROR;
- }
- }
-break;
-case 43:
-#line 350 "yacc_config.y"
-{
- if (add_module(yyvsp[-2].device, yyvsp[0].str) != 0)
- YYERROR;
- }
-break;
-case 44:
-#line 355 "yacc_config.y"
-{
- if (yyvsp[-2].device->opts[yyvsp[-2].device->modules-1] == NULL) {
- yyvsp[-2].device->opts[yyvsp[-2].device->modules-1] = yyvsp[0].str;
- } else {
- yyerror("too many options");
- YYERROR;
- }
- }
-break;
-case 45:
-#line 364 "yacc_config.y"
-{
- if (add_module(yyvsp[-2].device, yyvsp[0].str) != 0)
- YYERROR;
- }
-break;
-case 46:
-#line 371 "yacc_config.y"
-{
- if (yyvsp[-2].device->class != NULL) {
- yyerror("extra class string");
- YYERROR;
- }
- yyvsp[-2].device->class = yyvsp[0].str;
- }
-break;
-case 47:
-#line 381 "yacc_config.y"
-{
- yyval.mtd = calloc(sizeof(mtd_ident_t), 1);
- yyval.mtd->refs = 1;
- yyval.mtd->name = yyvsp[0].str;
- }
-break;
-case 51:
-#line 392 "yacc_config.y"
-{
- if (yyvsp[-2].mtd->mtd_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- yyvsp[-2].mtd->mtd_type = DTYPE_MTD;
- yyvsp[-2].mtd->dtype = yyvsp[0].num;
- }
-break;
-case 52:
-#line 403 "yacc_config.y"
-{
- if (yyvsp[-3].mtd->mtd_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- yyvsp[-3].mtd->mtd_type = JEDEC_MTD;
- yyvsp[-3].mtd->jedec_mfr = yyvsp[-1].num;
- yyvsp[-3].mtd->jedec_info = yyvsp[0].num;
- }
-break;
-case 53:
-#line 415 "yacc_config.y"
-{
- if (yyvsp[-1].mtd->mtd_type != 0) {
- yyerror("ID method already defined");
- YYERROR;
- }
- if (default_mtd) {
- yyerror("Default MTD already defined");
- YYERROR;
- }
- yyvsp[-1].mtd->mtd_type = DEFAULT_MTD;
- default_mtd = yyvsp[-1].mtd;
- }
-break;
-case 54:
-#line 430 "yacc_config.y"
-{
- if (yyvsp[-2].mtd->module != NULL) {
- yyerror("extra MTD entry");
- YYERROR;
- }
- yyvsp[-2].mtd->module = yyvsp[0].str;
- }
-break;
-case 55:
-#line 438 "yacc_config.y"
-{
- if (yyvsp[-2].mtd->opts == NULL) {
- yyvsp[-2].mtd->opts = yyvsp[0].str;
- } else {
- yyerror("too many options");
- YYERROR;
- }
- }
-break;
-case 56:
-#line 449 "yacc_config.y"
-{
- mtd_ident_t *m;
- int found = 0;
- for (m = root_mtd; m; m = m->next)
- if (strcmp(yyvsp[-2].str, m->module) == 0) break;
- if (m) {
- if (m->opts) free(m->opts);
- m->opts = strdup(yyvsp[0].str);
- found = 1;
- }
- free(yyvsp[-2].str); free(yyvsp[0].str);
- if (!found) {
- yyerror("MTD name not found!");
- YYERROR;
- }
- }
-break;
-#line 966 "y.tab.c"
- }
- yyssp -= yym;
- yystate = *yyssp;
- yyvsp -= yym;
- yym = yylhs[yyn];
- if (yystate == 0 && yym == 0)
- {
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
- yystate = YYFINAL;
- *++yyssp = YYFINAL;
- *++yyvsp = yyval;
- if (yychar < 0)
- {
- if ((yychar = yylex()) < 0) yychar = 0;
-#if YYDEBUG
- if (yydebug)
- {
- yys = 0;
- if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
- if (!yys) yys = "illegal-symbol";
- printf("%sdebug: state %d, reading %d (%s)\n",
- YYPREFIX, YYFINAL, yychar, yys);
- }
-#endif
- }
- if (yychar == 0) goto yyaccept;
- goto yyloop;
- }
- if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
- yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
- yystate = yytable[yyn];
- else
- yystate = yydgoto[yym];
-#if YYDEBUG
- if (yydebug)
- printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yyssp, yystate);
-#endif
- if (yyssp >= yyss + yystacksize - 1)
- {
- goto yyoverflow;
- }
- *++yyssp = yystate;
- *++yyvsp = yyval;
- goto yyloop;
-yyoverflow:
- yyerror("yacc stack overflow");
-yyabort:
- return (1);
-yyaccept:
- return (0);
-}
diff --git a/mdk-stage1/pcmcia_/yacc_config.h b/mdk-stage1/pcmcia_/yacc_config.h
deleted file mode 100644
index f9b881def..000000000
--- a/mdk-stage1/pcmcia_/yacc_config.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#define DEVICE 257
-#define CARD 258
-#define ANONYMOUS 259
-#define TUPLE 260
-#define MANFID 261
-#define VERSION 262
-#define FUNCTION 263
-#define PCI 264
-#define BIND 265
-#define CIS 266
-#define TO 267
-#define NEEDS_MTD 268
-#define MODULE 269
-#define OPTS 270
-#define CLASS 271
-#define REGION 272
-#define JEDEC 273
-#define DTYPE 274
-#define DEFAULT 275
-#define MTD 276
-#define INCLUDE 277
-#define EXCLUDE 278
-#define RESERVE 279
-#define IRQ_NO 280
-#define PORT 281
-#define MEMORY 282
-#define STRING 283
-#define NUMBER 284
-typedef union {
- char *str;
- unsigned long num;
- struct device_info_t *device;
- struct card_info_t *card;
- struct mtd_ident_t *mtd;
- struct adjust_list_t *adjust;
-} YYSTYPE;
-extern YYSTYPE yylval;
diff --git a/mdk-stage1/ppp/.cvsignore b/mdk-stage1/ppp/.cvsignore
deleted file mode 100644
index c258b925d..000000000
--- a/mdk-stage1/ppp/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-pppd-bin
diff --git a/mdk-stage1/ppp/Changes-2.3 b/mdk-stage1/ppp/Changes-2.3
deleted file mode 100644
index f5c954b4b..000000000
--- a/mdk-stage1/ppp/Changes-2.3
+++ /dev/null
@@ -1,441 +0,0 @@
-What was new in ppp-2.3.11.
-***************************
-
-* Support for Solaris 8 has been added, including support for
- replumbing and IPV6.
-
-* The Solaris `snoop' utility should now work on ppp interfaces.
-
-* New hooks have been added - pap_logout_hook, ip_up_hook, and
- ip_down_hook.
-
-* A new `passprompt' plugin is included, thanks to Alan Curry, which
- makes it possible for pppd to call an external program to get the
- PAP password to send to the peer.
-
-* The error messages for the situation where authentication is
- required because the system has a default route have been improved.
-
-* There is a new connect_delay option which specifies how long pppd
- should pause after the connect script finishes. Previously this
- delay was fixed at 1 second. (This delay terminates as soon as pppd
- sees a valid PPP frame from the peer.)
-
-* The `hide-password' option is now the default, and there is a new
- `show-password' option to enable the printing of password strings in
- the debug output.
-
-* A fairly complete list of the names of PPP protocols has been added
- so that when pppd rejects a frame because its protocol is not
- supported, it can print the name of the unsupported protocol.
-
-* Synchronous serial lines are supported under Linux 2.3.x.
-
-* The bug where pppd would not recognize a modem hangup under Linux
- 2.3.x kernels has been fixed.
-
-
-What was new in ppp-2.3.10.
-***************************
-
-* Pppd now supports `plugins', which are pieces of code (packaged as
- shared libraries) which can be loaded into pppd at runtime and which
- can affect its behaviour. The intention is that plugins provide a
- way for people to customize the behaviour of pppd for their own
- needs without needing to change the base pppd source. I have added
- some hooks into pppd (places where pppd will call a function
- pointer, if non-zero, to replace some of pppd's code) and I will be
- receptive to suggestions about places to add more hooks. Plugins
- are supported under Linux and Solaris at present.
-
-* We have a new maintainer for the Solaris port, Adi Masputra of Sun
- Microsystems, and he has updated the Solaris port so that it should
- work on 64-bit machines under Solaris 7 and later.
-
-* Pppd now has an `allow-ip' option, which takes an argument which is
- an IP address (or subnet) which peers are permitted to use without
- authenticating themselves. The argument takes the same form as each
- element of the allowed IP address list in the secrets files. The
- allow-ip option is privileged and may be specified multiple times.
- Using the allow-ip option should be cleaner than putting a line like
- `"" * "" address' in /etc/ppp/pap-secrets.
-
-* Chat can now substitute environment variables into the script. This
- is enabled by the -E flag. (Thanks to Andreas Arens for the patch.)
-
-* If the PAP username and password from the peer contains unprintable
- characters, they will be translated to a printable form before
- looking in the pap-secrets file. Characters >= 0x80 are translated
- to a M- form, and characters from 0 to 0x1f (and 0x7f as well) are
- translated to a ^X form. If this change causes you grief, let me
- know what would be a better translation. It appears that some peers
- send nulls or other control characters in their usernames and
- passwords.
-
-* Pppd has new `ktune' and `noktune' options, which enable/disable
- it to change kernel settings as appropriate. This is only
- implemented under Linux, and requires the /proc filesystem to be
- mounted. Under Linux, with the ktune option, pppd will enable IP
- forwarding in the kernel if the proxyarp option is used, and will
- enable the dynamic IP address kernel option in demand mode if the
- local IP address changes.
-
-* Pppd no longer requires a remote address to be specified for demand
- dialling. If none is specified, it will use a default value of
- 10.112.112.112+unit_number. (It will not propose this default to
- the peer.)
-
-* The default holdoff is now 0 if no connect script is given.
-
-* The IPV6 code from Tommi Komulainen, which I unfortunately only
- partially merged in to ppp-2.3.9, has been fixed and updated.
-
-* The linux compilation glitches should be fixed now.
-
-
-What was new in ppp-2.3.9.
-**************************
-
-* Support for the new generic PPP layer under development for the
- Linux kernel.
-
-* You can now place extra options to apply to specific users at the
- end of the line with their password in the pap-secrets or
- chap-secrets file, separated from the IP address(es) with a "--"
- separator. These options are parsed after the peer is authenticated
- but before network protocol (IPCP, IPXCP) or CCP negotiation
- commences.
-
-* Pppd will apply the holdoff period if the link was terminated by the
- peer. It doesn't apply it if the link was terminated because the
- local pppd thought it was idle.
-
-* Synchronous support for Solaris has been added, thanks to John
- Morrison, and for FreeBSD, thanks to Paul Fulghum.
-
-* IPV6 support has been merged in, from Tommi Komulainen. At the
- moment it only supports Linux and it is not tested by me.
-
-* The `nodefaultip' option can be used in demand mode to say that pppd
- should not suggest its local IP address to the peer.
-
-* The `init' option has been added; this causes pppd to run a script
- to initialize the serial device (e.g. by sending an init string to
- the modem). Unlike the connect option, this can be used in a
- dial-in situation. (Thanks to Tobias Ringstrom.)
-
-* There is a new `logfile' option to send log messages to a file as
- well as syslog.
-
-* There is a new, privileged `linkname' option which sets a logical
- name for the link. Pppd will create a /var/run/ppp-<linkname>.pid
- file containing its process ID.
-
-* There is a new `maxfail' option which specifies how many consecutive
- failed connection attempts are permitted before pppd will exit. The
- default value is 10, and 0 means infinity. :-)
-
-* Sundry bugs fixed.
-
-
-What was new in ppp-2.3.8.
-**************************
-
-* The exit status of pppd will now indicate whether the link was
- successfully established, or if not, what error was encountered.
-
-* Pppd has two new options: fdlog <n> will send log messages to file
- descriptor <n> instead of standard output, and nofdlog will stop log
- messages from being sent to any file descriptor (they will still be
- sent to syslog). Pppd now will not send log messages to a file
- descriptor if the serial port is open on that file descriptor.
-
-* Pppd sets an environment variable called PPPLOGNAME for scripts that
- it runs, indicating the login name of the user who invoked pppd.
-
-* Pppd sets environment variables CONNECT_TIME, BYTES_SENT and
- BYTES_RCVD for the ip-down and auth-down scripts indicating the
- statistics for the connection just terminated. (CONNECT_TIME is in
- seconds.)
-
-* If the user has the serial device open on standard input and
- specifies a symbolic link to the serial device on the command line,
- pppd will detect this and behave correctly (i.e. not detach from its
- controlling terminal). Furthermore, if the serial port is open for
- reading and writing on standard input, pppd will assume that it is
- locked by its invoker and not lock it itself.
-
-* Chat now has a feature where if a string to be sent begins with an
- at sign (@), the rest of the string is taken as the name of a file
- (regular file or named pipe), and the actual string to send is taken
- from that file.
-
-* Support for FreeBSD-2.2.8 and 3.0 has been added, thanks to Paul
- Fulghum.
-
-* The Tru64 (aka Digital Unix aka OSF/1) port has been updated.
-
-* The system panics on Solaris SMP systems related to PPP connections
- being established and terminated should no longer occur.
-
-* Fixed quite a few bugs.
-
-
-What was new in ppp-2.3.7.
-**************************
-
-* Pppd can now automatically allocate itself a pseudo-tty to use as
- the serial device. This has made three new options possible:
-
- - `pty script' will run `script' with its standard input and output
- connected to the master side of the pty. For example:
- pppd pty 'ssh -t server.my.net pppd'
- is a basic command for setting up a PPP link (tunnel) over ssh.
- (In practice you may need to specify other options such as IP
- addresses, etc.)
-
- - `notty' tells pppd to communicate over its standard input and
- output, which do not have to be a terminal device.
-
- - `record filename' tells pppd to record all of the characters sent
- and received over the serial device to a file called `filename'.
- The data is recorded in a tagged format with timestamps, which can
- be printed in a readable form with the pppdump program, which is
- included in this distribution.
-
-* Pppd now logs the connect time and number of bytes sent and received
- (at the level of the serial device) when the connection is
- terminated.
-
-* If you use the updetach or nodetach option, pppd will print its
- messages to standard output as well as logging them with syslog
- (provided of course pppd isn't using its standard input or output as
- its serial device).
-
-* There is a new `privgroup groupname' option (a privileged option).
- If the user running pppd is in group `groupname', s/he can use
- privileged options without restriction.
-
-* There is a new `receive-all' option, which causes pppd to accept all
- control characters, even the ones that the peer should be escaping
- (i.e. the receive asyncmap is 0). This is useful with some buggy
- peers.
-
-* The default asyncmap is now 0.
-
-* There is a new `sync' option, currently only implemented under
- Linux, which allows pppd to run on synchronous HDLC devices.
-
-* If a value for the device name or for the connect, disconnect,
- welcome or pty option is given in a privileged option file
- (i.e. /etc/ppp/options or a file loaded with the `call' option), it
- cannot be overridden by a non-privileged user.
-
-* Many bugs have been fixed, notably:
- - signals are not blocked unnecessarily, as they were in 2.3.6.
- - the usepeerdns option should work now.
- - the SPEED environment variable for scripts is set correctly.
- - the /etc/ppp/auth-down script is not run until auth-up completes.
- - the device is opened as root if it is the device on standard
- input.
- - pppd doesn't die with the ioctl(PPPIOCSASYNCMAP) error under linux
- if a hangup occurs at the wrong time.
-
-* Some error messages have been changed to be clearer (I hope :-)
-
-
-What was new in ppp-2.3.6.
-**************************
-
-* Pppd now opens the tty device as the user (rather than as root) if
- the device name was given by the user, i.e. on the command line or
- in the ~/.ppprc file. If the device name was given in
- /etc/ppp/options or in a file loaded with the `call' option, the
- device is opened as root.
-
-* The default behaviour of pppd is now to let a peer which has not
- authenticated itself (e.g. your ISP) use any IP address to which the
- system does not already have a route. (This is currently only
- supported under Linux, Solaris and Digital Unix; on the other
- systems, the peer must now authenticate itself unless the noauth
- option is used.)
-
-* Added new option `usepeerdns', thanks to Nick Walker
- <nickwalker@email.com>. If the peer supplies DNS addresses, these
- will be written to /etc/ppp/resolv.conf. The ip-up script can then
- be used to add these addresses to /etc/resolv.conf if desired (see
- the ip-up.local.add and ip-down.local.add files in the scripts
- directory).
-
-* The Solaris ppp driver should now work correctly on SMP systems.
-
-* Minor corrections so that the code can compile under Solaris 7,
- and under Linux with glibc-2.1.
-
-* The Linux kernel driver has been restructured for improved
- performance.
-
-* Pppd now won't start the ip-down script until the ip-up script has
- finished.
-
-
-What was new in ppp-2.3.5.
-**************************
-
-* Minor corrections to the Digital UNIX and NetBSD ports.
-
-* A workaround to avoid tickling a bug in the `se' serial port driver
-on Sun PCI Ultra machines running Solaris.
-
-* Fixed a bug in the negotiation of the Microsoft WINS server address
-option.
-
-* Fixed a bug in the Linux port where it would fail for kernel
-versions above 2.1.99.
-
-
-What was new in ppp-2.3.4.
-**************************
-
-* The NeXT port has been updated, thanks to Steve Perkins.
-
-* ppp-2.3.4 compiles and works under Solaris 2.6, using either gcc or
-cc.
-
-* With the Solaris, SVR4 and SunOS ports, you can control the choice
-of C compiler, C compiler options, and installation directories by
-editing the svr4/Makedefs or sunos4/Makedefs file.
-
-* Until now, we have been using the number 24 to identify Deflate
-compression in the CCP negotiations, which was the number in the draft
-RFC describing Deflate. The number actually assigned to Deflate is
-26. The code has been changed to use 26, but to allow the use of 24
-for now for backwards compatibility. (This can be disabled with the
-`nodeflatedraft' option to pppd.)
-
-* Fixed some bugs in the linux driver and deflate compressor which
-were causing compression problems, including corrupting long
-incompressible packets sometimes.
-
-* Fixes to the PAM and shadow password support in pppd, from Al
-Longyear and others.
-
-* Pppd now sets some environment variables for scripts it invokes
-(ip-up/down, auth-ip/down), giving information about the connection.
-The variables it sets are PEERNAME, IPLOCAL, IPREMOTE, UID, DEVICE,
-SPEED, and IFNAME.
-
-* Pppd now has an `updetach' option, which will cause it to detach
-from its controlling terminal once the link has come up (i.e. once it
-is available for IP traffic).
-
-
-What was new in ppp-2.3.3.
-**************************
-
-* Fixed compilation problems under SunOS.
-
-* Fixed a bug introduced into chat in 2.3.2, and compilation problems
-introduced into the MS-CHAP implementation in 2.3.2.
-
-* The linux kernel driver has been updated for recent 2.1-series
-kernel changes, and it now will ask kerneld to load compression
-modules when required, if the kernel is configured to support kerneld.
-
-* Pppd should now compile correctly under linux on systems with glibc.
-
-
-What was new in ppp-2.3.2.
-**************************
-
-* In 2.3.1, I made a change which was intended to make pppd able to
-detect loss of CD during or immediately after the connection script
-runs. Unfortunately, this had the side-effect that the connection
-script wouldn't work at all on some systems. This change has been
-reversed.
-
-* Fix compilation problems in the Linux kernel driver.
-
-
-What was new in ppp-2.3.1.
-**************************
-
-* Enhancements to chat, thanks to Francis Demierre. Chat can now
-accept comments in the chat script file, and has new SAY, HANGUP,
-CLR_ABORT and CLR_REPORT keywords.
-
-* Fixed a bug which causes 2.3.0 to crash Solaris systems.
-
-* Bug-fixes and restructuring of the Linux kernel driver.
-
-* The holdoff behaviour of pppd has been changed slightly: now, if
-the link comes up for IP (or other network protocol) traffic, we
-consider that the link has been successfully established, and don't
-enforce the holdoff period after the link goes down.
-
-* Pppd should now correctly wait for CD (carrier detect) from the
-modem, even when the serial port initially had CLOCAL set, and it
-should also detect loss of CD during or immediately after the
-connection script runs.
-
-* Under linux, pppd will work with older 2.2.0* version kernel
-drivers, although demand-dialling is not supported with them.
-
-* Minor bugfixes for pppd.
-
-
-What was new in ppp-2.3.
-************************
-
-* Demand-dialling. Pppd now has a mode where it will establish the
-network interface immediately when it starts, but not actually bring
-the link up until it sees some data to be sent. Look for the demand
-option description in the pppd man page. Demand-dialling is not
-supported under Ultrix or NeXTStep.
-
-* Idle timeout. Pppd will optionally terminate the link if no data
-packets are sent or received within a certain time interval.
-
-* Pppd now runs the /etc/ppp/auth-up script, if it exists, when the
-peer successfully authenticates itself, and /etc/ppp/auth-down when
-the connection is subsequently terminated. This can be useful for
-accounting purposes.
-
-* A new packet compression scheme, Deflate, has been implemented.
-This uses the same compression method as `gzip'. This method is free
-of patent or copyright restrictions, and it achieves better
-compression than BSD-Compress. It does consume more CPU cycles for
-compression than BSD-Compress, but this shouldn't be a problem for
-links running at 100kbit/s or less.
-
-* There is no code in this distribution which is covered by Brad
-Clements' restrictive copyright notice. The STREAMS modules for SunOS
-and OSF/1 have been rewritten, based on the Solaris 2 modules, which
-were written from scratch without any Clements code.
-
-* Pppstats has been reworked to clean up the output format somewhat.
-It also has a new -d option which displays data rate in kbyte/s for
-those columns which would normally display bytes.
-
-* Pppd options beginning with - or + have been renamed, e.g. -ip
-became noip, +chap became require-chap, etc. The old options are
-still accepted for compatibility but may be removed in future.
-
-* Pppd now has some options (such as the new `noauth' option) which
-can only be specified if it is being run by root, or in an
-"privileged" options file: /etc/ppp/options or an options file in the
-/etc/ppp/peers directory. There is a new "call" option to read
-options from a file in /etc/ppp/peers, making it possible for non-root
-users to make unauthenticated connections, but only to certain trusted
-peers. My intention is to make the `auth' option the default in a
-future release.
-
-* Several minor new features have been added to pppd, including the
-maxconnect and welcome options. Pppd will now terminate the
-connection when there are no network control protocols running. The
-allowed IP address(es) field in the secrets files can now specify
-subnets (with a notation like 123.45.67.89/24) and addresses which are
-not acceptable (put a ! on the front).
-
-* Numerous bugs have been fixed (no doubt some have been introduced :-)
-Thanks to those who reported bugs in ppp-2.2.
diff --git a/mdk-stage1/ppp/FAQ b/mdk-stage1/ppp/FAQ
deleted file mode 100644
index 96bc5c708..000000000
--- a/mdk-stage1/ppp/FAQ
+++ /dev/null
@@ -1,634 +0,0 @@
-This is a list of Frequently Asked Questions about using ppp-2.x and
-their answers.
-
-
-------------------------------------------------------------------------
-
-Q: Can you give me an example of how I might set up my machine to dial
-out to an ISP?
-
-A: Here's an example for dialling out to an ISP via a modem on
-/dev/tty02. The modem uses hardware (CTS/RTS) flow control, and the
-serial port is run at 38400 baud. The ISP assigns our IP address.
-
-To configure pppd for this connection, create a file under
-/etc/ppp/peers called (say) my-isp containing the following:
-
-tty02 crtscts 38400
-connect 'chat -v -f /etc/ppp/chat/my-isp'
-defaultroute
-
-The ppp connection is then initiated using the following command:
-
-pppd call my-isp
-
-Of course, if the directory containing pppd is not in your path, you
-will need to give the full pathname for pppd, for example,
-/usr/sbin/pppd.
-
-When you run this, pppd will use the chat program to dial the ISP and
-invoke its ppp service. Chat will read the file specified with -f,
-namely /etc/ppp/chat/my-isp, to find a list of strings to expect to
-receive, and strings to send. This file would contain something like
-this:
-
-ABORT "NO CARRIER"
-ABORT "NO DIALTONE"
-ABORT "ERROR"
-ABORT "NO ANSWER"
-ABORT "BUSY"
-ABORT "Username/Password Incorrect"
-"" "at"
-OK "at&d2&c1"
-OK "atdt2479381"
-"name:" "^Uusername"
-"word:" "\qpassword"
-"annex" "\q^Uppp"
-"Switching to PPP-ppp-Switching to PPP"
-
-You will need to change the details here. The first string on each
-line is a string to expect to receive; the second is the string to
-send. You can add or delete lines according to the dialog required to
-access your ISP's system. This example is for a modem with a standard
-AT command set, dialling out to an Annex terminal server. The \q
-toggles "quiet" mode; when quiet mode is on, the strings to be sent
-are replaced by ?????? in the log. You may need to go through the
-dialog manually using kermit or tip first to determine what should go
-in the script.
-
-To terminate the link, run the following script, called (say)
-kill-ppp:
-
-#!/bin/sh
-unit=ppp${1-0}
-piddir=/var/run
-if [ -f $piddir/$unit.pid ]; then
- kill -1 `cat $piddir/$unit.pid`
-fi
-
-On some systems (SunOS, Solaris, Ultrix), you will need to change
-/var/run to /etc/ppp.
-
-
-------------------------------------------------------------------------
-
-Q: Can you give me an example of how I could set up my office machine
-so I can dial in to it from home?
-
-A: Let's assume that the office machine is called "office" and is on a
-local ethernet subnet. Call the home machine "home" and give it an IP
-address on the same subnet as "office". We'll require both machines
-to authenticate themselves to each other.
-
-Set up the files on "office" as follows:
-
-/etc/ppp/options contains:
-
-auth # require the peer to authenticate itself
-lock
-# other options can go here if desired
-
-/etc/ppp/chap-secrets contains:
-
-home office "beware the frub-jub" home
-office home "bird, my son!%&*" -
-
-Set up a modem on a serial port so that users can dial in to the
-modem and get a login prompt.
-
-On "home", set up the files as follows:
-
-/etc/ppp/options contains the same as on "office".
-
-/etc/ppp/chap-secrets contains:
-
-home office "beware the frub-jub" -
-office home "bird, my son!%&*" office
-
-Create a file called /etc/ppp/peers/office containing the following:
-
-tty02 crtscts 38400
-connect 'chat -v -f /etc/ppp/chat/office'
-defaultroute
-
-(You may need to change some of the details here.)
-
-Create the /etc/ppp/chat/office file containing the following:
-
-ABORT "NO CARRIER"
-ABORT "NO DIALTONE"
-ABORT "ERROR"
-ABORT "NO ANSWER"
-ABORT "BUSY"
-ABORT "ogin incorrect"
-"" "at"
-OK "at&d2&c1"
-OK "atdt2479381"
-"name:" "^Uusername"
-"word:" "\qpassword"
-"$" "\q^U/usr/sbin/pppd proxyarp"
-"~"
-
-You will need to change the details. Note that the "$" in the
-second-last line is expecting the shell prompt after a successful
-login - you may need to change it to "%" or something else.
-
-You then initiate the connection (from home) with the command:
-
-pppd call office
-
-------------------------------------------------------------------------
-
-Q: When I try to establish a connection, the modem successfully dials
-the remote system, but then hangs up a few seconds later. How do I
-find out what's going wrong?
-
-A: There are a number of possible problems here. The first thing to
-do is to ensure that pppd's messages are visible. Pppd uses the
-syslog facility to log messages which help to identify specific
-problems. Messages from pppd have facility "daemon" and levels
-ranging from "debug" to "error".
-
-Usually it is useful to see messages of level "notice" or higher on
-the console. To see these, find the line in /etc/syslog.conf which
-has /dev/console on the right-hand side, and add "daemon.notice" in
-the list on the left. The line will end up looking something like
-this:
-
-*.err;kern.debug;auth.notice;mail.crit;daemon.notice /dev/console
-
-Note that the whitespace is tabs, *not* spaces.
-
-If you are having problems, it may be useful to see messages of level
-"info" as well, in which case you would change "daemon.notice" to
-"daemon.info".
-
-In addition, it is useful to collect pppd's debugging output in a
-file - the debug option to pppd causes it to log the contents of all
-control packets sent and received in human-readable form. To do this,
-add a line like this to /etc/syslog.conf:
-
-daemon,local2.debug /etc/ppp/log
-
-and create an empty /etc/ppp/log file.
-
-When you change syslog.conf, you will need to send a HUP signal to
-syslogd to causes it to re-read syslog.conf. You can do this with a
-command like this (as root):
-
- kill -HUP `cat /etc/syslogd.pid`
-
-(On some systems, you need to use /var/run/syslog.pid instead of
-/etc/syslogd.pid.)
-
-After setting up syslog like this, you can use the -v flag to chat and
-the `debug' option to pppd to get more information. Try initiating
-the connection again; when it fails, inspect /etc/ppp/log to see what
-happened and where the connection failed.
-
-
-------------------------------------------------------------------------
-
-Q: When I try to establish a connection, I get an error message saying
-"Serial link is not 8-bit clean". Why?
-
-A: The most common cause is that your connection script hasn't
-successfully dialled out to the remote system and invoked ppp service
-there. Instead, pppd is talking to something (a shell or login
-process on the remote machine, or maybe just the modem) which is only
-outputting 7-bit characters.
-
-This can also arise with a modem which uses an AT command set if the
-dial command is issued before pppd is invoked, rather than within a
-connect script started by pppd. If the serial port is set to 7
-bits/character plus parity when the last AT command is issued, the
-modem serial port will be set to the same setting.
-
-Note that pppd *always* sets the local serial port to 8 bits per
-character, with no parity and 1 stop bit. So you shouldn't need to
-issue an stty command before invoking pppd.
-
-
-------------------------------------------------------------------------
-
-Q: When I try to establish a connection, I get an error message saying
-"Serial line is looped back". Why?
-
-A: Probably your connection script hasn't successfully dialled out to
-the remote system and invoked ppp service there. Instead, pppd is
-talking to something which is just echoing back the characters it
-receives. The -v option to chat can help you find out what's going
-on. It can be useful to include "~" as the last expect string to
-chat, so chat won't return until it's seen the start of the first PPP
-frame from the remote system.
-
-Another possibility is that your phone connection has dropped for some
-obscure reason and the modem is echoing the characters it receives
-from your system.
-
-
-------------------------------------------------------------------------
-
-Q: I installed pppd successfully, but when I try to run it, I get a
-message saying something like "peer authentication required but no
-authentication files accessible".
-
-A: When pppd is used on a machine which already has a connection to
-the Internet (or to be more precise, one which has a default route in
-its routing table), it will require all peers to authenticate
-themselves. The reason for this is that if you don't require
-authentication, you have a security hole, because the peer can
-basically choose any IP address it wants, even the IP address of some
-trusted host (for example, a host mentioned in some .rhosts file).
-
-On machines which don't have a default route, pppd does not require
-the peer to authenticate itself. The reason is that such machines
-would mostly be using pppd to dial out to an ISP which will refuse to
-authenticate itself. In that case the peer can use any IP address as
-long as the system does not already have a route to that address.
-For example, if you have a local ethernet network, the peer can't use
-an address on that network. (In fact it could if it authenticated
-itself and it was permitted to use that address by the pap-secrets or
-chap-secrets file.)
-
-There are 3 ways around the problem:
-
-1. If possible, arrange for the peer to authenticate itself, and
-create the necessary secrets files (/etc/ppp/pap-secrets and/or
-/etc/ppp/chap-secrets).
-
-2. If the peer refuses to authenticate itself, and will always be
-using the same IP address, or one of a small set of IP addresses, you
-can create an entry in the /etc/ppp/pap-secrets file like this:
-
- "" * "" his-ip.his-domain his-other-ip.other-domain
-
-(that is, using the empty string for the client name and password
-fields). Of couse, you replace the 4th and following fields in the
-example above with the IP address(es) that the peer may use. You can
-use either hostnames or numeric IP addresses.
-
-3. You can add the `noauth' option to the /etc/ppp/options file.
-Pppd will then not ask the peer to authenticate itself. If you do
-this, I *strongly* recommend that you remove the set-uid bit from the
-permissions on the pppd executable, with a command like this:
-
- chmod u-s /usr/sbin/pppd
-
-Then, an intruder could only use pppd maliciously if they had already
-become root, in which case they couldn't do any more damage using pppd
-than they could anyway.
-
-
-------------------------------------------------------------------------
-
-Q: What do I need to put in the secrets files?
-
-A: Three things:
- - secrets (i.e. passwords) to use for authenticating this host to
- other hosts (i.e., for proving our identity to others);
- - secrets which other hosts can use for authenticating themselves
- to us (i.e., so that they can prove their identity to us); and
- - information about which IP addresses other hosts may use, once
- they have authenticated themselves.
-
-There are two authentication files: /etc/ppp/pap-secrets, which
-contains secrets for use with PAP (the Password Authentication
-Protocol), and /etc/ppp/chap-secrets, which contains secrets for use
-with CHAP (the Challenge Handshake Authentication Protocol). Both
-files have the same simple format, which is as follows:
-
-- The file contains a series of entries, each of which contains a
-secret for authenticating one machine to another.
-
-- Each entry is contained on a single logical line. A logical line
-may be continued across several lines by placing a backslash (\) at
-the end of each line except the last.
-
-- Each entry has 3 or more fields, separated by whitespace (spaces
-and/or tabs). These fields are, in order:
- * The name of the machine that is authenticating itself
- (the "client").
- * The name of the machine that is authenticating the client
- (the "server").
- * The secret to be used for authenticating that client to that
- server. If this field begins with the at-sign `@', the rest
- of the field is taken as the name of a file containing the
- actual secret.
- * The 4th and any following fields list the IP address(es)
- that the client may use.
-
-- The file may contain comments, which begin with a `#' and continue
-to the end of the line.
-
-- Double quotes `"' should be used around a field if it contains
-characters with special significance, such as space, tab, `#', etc.
-
-- The backslash `\' may be used before characters with special
-significance (space, tab, `#', `\', etc.) to remove that significance.
-
-Some important points to note:
-
-* A machine can be *both* a "client" and a "server" for the purposes
-of authentication - this happens when both peers require the other to
-authenticate itself. So A would authenticate itself to B, and B would
-also authenticate itself to A (possibly using a different
-authentication protocol).
-
-* If both the "client" and the "server" are running ppp-2.x, they need
-to have a similar entry in the appropriate secrets file; the first two
-fields are *not* swapped on the client, compared to the server. So
-the client might have an entry like this:
-
- ay bee "our little secret" -
-
-and the corresponding entry on the server could look like this:
-
- ay bee "our little secret" 123.45.67.89
-
-
-------------------------------------------------------------------------
-
-Q: Explain about PAP and CHAP?
-
-PAP stands for the Password Authentication Protocol. With this
-protocol, the "client" (the machine that needs to authenticate itself)
-sends its name and a password, in clear text, to the "server". The
-server returns a message indicating whether the name and password are
-valid.
-
-CHAP stands for the Challenge Handshake Authentication Protocol. It
-is designed to address some of the deficiencies and vulnerabilities of
-PAP. Like PAP, it is based on the client and server having a shared
-secret, but the secret is never passed in clear text over the link.
-Instead, the server sends a "challenge" - an arbitrary string of
-bytes, and the client must prove it knows the shared secret by
-generating a hash value from the challenge combined with the shared
-secret, and sending the hash value back to the server. The server
-also generates the hash value and compares it with the value received
-from the client.
-
-At a practical level, CHAP can be slightly easier to configure than
-PAP because the server sends its name with the challenge. Thus, when
-finding the appropriate secret in the secrets file, the client knows
-the server's name. In contrast, with PAP, the client has to find its
-password (i.e. the shared secret) before it has received anything from
-the server. Thus, it may be necessary to use the `remotename' option
-to pppd when using PAP authentication so that it can select the
-appropriate secret from /etc/ppp/pap-secrets.
-
-Microsoft also has a variant of CHAP which uses a different hashing
-arrangement from normal CHAP. There is a client-side implementation
-of Microsoft's CHAP in ppp-2.3; see README.MSCHAP80.
-
-
-------------------------------------------------------------------------
-
-Q: When the modem hangs up, without the remote system having
-terminated the connection properly, pppd does not notice the hangup,
-but just keeps running. How do I get pppd to notice the hangup and
-exit?
-
-A: Pppd detects modem hangup by looking for an end-of-file indication
-from the serial driver, which should be generated when the CD (carrier
-detect) signal on the serial port is deasserted. For this to work:
-
-- The modem has to be set to assert CD when the connection is made and
-deassert it when the phone line hangs up. Usually the AT&C1 modem
-command sets this mode.
-
-- The cable from the modem to the serial port must connect the CD
-signal (on pin 8).
-
-- Some serial drivers have a "software carrier detect" mode, which
-must be *disabled*. The method of doing this varies between systems.
-Under SunOS, use the ttysoftcar command. Under NetBSD, edit /etc/ttys
-to remove the "softcar" flag from the line for the serial port, and
-run ttyflags.
-
-
-------------------------------------------------------------------------
-
-Q: Why should I use PPP compression (BSD-Compress or Deflate) when my
-modem already does V.42 compression? Won't it slow the CPU down a
-lot?
-
-A: Using PPP compression is preferable, especially when using modems
-over phone lines, for the following reasons:
-
-- The V.42 compression in the modem isn't very strong - it's an LZW
-technique (same as BSD-Compress) with a 10, 11 or 12 bit code size.
-With BSD-Compress you can use a code size of up to 15 bits and get
-much better compression, or you can use Deflate and get even better
-compression ratios.
-
-- I have found that enabling V.42 compression in my 14.4k modem
-increases the round-trip time for a character to be sent, echoed and
-returned by around 40ms, from 160ms to 200ms (with error correction
-enabled). This is enough to make it feel less responsive on rlogin or
-telnet sessions. Using PPP compression adds less than 5ms (small
-enough that I couldn't measure it reliably). I admit my modem is a
-cheapie and other modems may well perform better.
-
-- While compression and decompression do require some CPU time, they
-reduce the amount of time spent in the serial driver to transmit a
-given amount of data. Many machines require an interrupt for each
-character sent or received, and the interrupt handler can take a
-significant amount of CPU time. So the increase in CPU load isn't as
-great as you might think. My measurements indicate that a system with
-a 33MHz 486 CPU should be able to do Deflate compression for serial
-link speeds of up to 100kb/s or more. It depends somewhat on the type
-of data, of course; for example, when compressing a string of nulls
-with Deflate, it's hard to get a high output data rate from the
-compressor, simply because it compresses strings of nulls so well that
-it has to eat a very large amount of input data to get each byte of
-output.
-
-
-------------------------------------------------------------------------
-
-Q: I get messages saying "Unsupported protocol (...) received". What do
-these mean?
-
-A: If you only get one or two when pppd starts negotiating with the
-peer, they mean that the peer wanted to negotiate some PPP protocol
-that pppd doesn't understand. This doesn't represent a problem, it
-simply means that there is some functionality that the peer supports
-that pppd doesn't, so that functionality can't be used.
-
-If you get them sporadically while the link is operating, or if the
-protocol numbers (in parentheses) don't correspond to any valid PPP
-protocol that the peer might be using, then the problem is probably
-that characters are getting corrupted on the receive side, or that
-extra characters are being inserted into the receive stream somehow.
-If this is happening, most packets that get corrupted should get
-discarded by the FCS (Frame Check Sequence, a 16-bit CRC) check, but a
-small number may get through.
-
-One possibility may be that you are receiving broadcast messages on
-the remote system which are being sent over your serial link. Another
-possibility is that your modem is set for XON/XOFF (software) flow
-control and is inserting ^Q and ^S characters into the receive data
-stream.
-
-
-------------------------------------------------------------------------
-
-Q: I get messages saying "Protocol-Reject for unsupported protocol ...".
-What do these mean?
-
-A: This is the other side of the previous question. If characters are
-getting corrupted on the way to the peer, or if your system is
-inserting extra bogus characters into the transmit data stream, the
-peer may send protocol-reject messages to you, resulting in the above
-message (since your pppd doesn't recognize the protocol number
-either.)
-
-
-------------------------------------------------------------------------
-
-Q: I get a message saying something like "ioctl(TIOCSETD): Operation
-not permitted". How do I fix this?
-
-A: This is because pppd is not running as root. If you have not
-installed pppd setuid-root, you will have to be root to run it. If
-you have installed pppd setuid-root and you still get this message, it
-is probably because your shell is using some other copy of pppd than
-the installed one - for example, if you are in the pppd directory
-where you've just built pppd and your $PATH has . before /usr/sbin (or
-wherever pppd gets installed).
-
-
-------------------------------------------------------------------------
-
-Q: Has your package been ported to HP/UX or IRIX or AIX?
-
-A: No. I don't have access to systems running HP/UX or AIX. No-one
-has volunteered to port it to HP/UX. I had someone who did a port for
-AIX 4.x, but who is no longer able to maintain it. And apparently AIX
-3.x is quite different, so it would need a separate port.
-
-IRIX includes a good PPP implementation in the standard distribution,
-as far as I know.
-
-
-------------------------------------------------------------------------
-
-Q: Under SunOS 4, when I try to modload the ppp modules, I get the
-message "can't open /dev/vd: No such device".
-
-A: First check in /dev that there is an entry like this:
-
-crw-r--r-- 1 root 57, 0 Oct 2 1991 vd
-
-If not, make one (mknod /dev/vd c 57 0). If the problem still exists,
-probably your kernel has been configured without the vd driver
-included. The vd driver is needed for loadable module support.
-
-First, identify the config file that was used. When you boot your
-machine, or if you run /etc/dmesg, you'll see a line that looks
-something like this:
-
-SunOS Release 4.1.3_U1 (CAP_XBOX) #7: Thu Mar 21 15:31:56 EST 1996
- ^^^^^^^^
- this is the config file name
-
-The config file will be in the /sys/`arch -k`/conf directory (arch -k
-should return sun4m for a SparcStation 10, sun3x for a Sun 3/80,
-etc.). Look in there for a line saying "options VDDRV". If that line
-isn't present (or is commented out), add it (or uncomment it).
-
-You then need to rebuild the kernel as described in the SunOS
-manuals. Basically you need to run config and make like this:
-
- /usr/etc/config CAP_XBOX
- cd ../CAP_XBOX
- make
-
-(replacing the string CAP_XBOX by the name of the config file for your
-kernel, of course).
-
-Then copy the new kernel to /:
-
- mv /vmunix /vmunix.working
- cp vmunix /
-
-and reboot. Modload should then work.
-
-
-------------------------------------------------------------------------
-
-Q: I'm running Linux (or NetBSD or FreeBSD), and my system comes with
-PPP already. Should I consider installing this package? Why?
-
-A: The PPP that is already installed in your system is (or is derived
-from) some version of this PPP package. You can find out what version
-of this package is already installed with the command "pppd --help".
-If this is older than the latest version, you may wish to install the
-latest version so that you can take advantage of the new features or
-bug fixes.
-
-
-------------------------------------------------------------------------
-
-Q: I'm running pppd in demand mode, and I find that pppd often dials
-out unnecessarily when I try to make a connection within my local
-machine or with a machine on my local LAN. What can I do about this?
-
-A: Very often the cause of this is that a program is trying to contact
-a nameserver to resolve a hostname, and the nameserver (specified in
-/etc/resolv.conf, usually) is on the far side of the ppp link. You
-can try executing a command such as `ping myhost' (where myhost is the
-name of the local machine, or some other machine on a local LAN), to
-see whether that starts the ppp link. If it does, check the setup of
-your /etc/hosts file to make sure you have the local machine and any
-hosts on your local LAN listed, and /etc/resolv.conf and/or
-/etc/nsswitch.conf files to make sure you resolve hostnames from
-/etc/hosts if possible before trying to contact a nameserver.
-
-
-------------------------------------------------------------------------
-
-Q: Since I installed ppp-2.3.6, dialin users to my server have been
-getting this message when they run pppd:
-
-peer authentication required but no suitable secret(s) found for
-authenticating any peer to us (ispserver)
-
-A: In 2.3.6, the default is to let an unauthenticated peer only use IP
-addresses to which the machine doesn't already have a route. So on a
-machine with a default route, everyone has to authenticate. If you
-really don't want that, you can put `noauth' in the /etc/ppp/options
-file. Note that there is then no check on who is using which IP
-address. IMHO, this is undesirably insecure, but I guess it may be
-tolerable as long as you don't use any .rhosts files or anything like
-that. I recommend that you require dialin users to authenticate, even
-if just with PAP using their login password (using the `login' option
-to pppd). If you do use `noauth', you should at least have a pppusers
-group and set the permissions on pppd to allow only user and group to
-execute it.
-
-------------------------------------------------------------------------
-
-Q: When running pppd as a dial-in server, I often get the message
-"LCP: timeout sending Config-Requests" from pppd. It seems to be
-random, but dial-out always works fine. What is wrong?
-
-A: Most modern modems auto-detects the speed of the serial line
-between the modem and the computer. This auto-detection occurs when
-the computer sends characters to the modem, when the modem is in
-command mode. It does not occur when the modem is in data mode.
-Thus, if you send commands to the modem at 2400 bps, and then change
-the serial port speed to 115200 bps, the modem will not detect this
-change until something is transmitted from the computer to the modem.
-When running pppd in dial-in mode (i.e. without a connect script),
-pppd sets the speed of the serial port, but does not transmit
-anything. If the modem was already running at the specified speed,
-everything is fine, but if not, you will just receive garbage from the
-modem. To cure this, use an init script such as the following:
-
- pppd ttyS0 115200 modem crtscts init "chat '' AT OK"
-
-To reset the modem and enable auto-answer, use:
-
- pppd ttyS0 115200 modem crtscts init "chat '' ATZ OK ATS0=1 OK"
diff --git a/mdk-stage1/ppp/PLUGINS b/mdk-stage1/ppp/PLUGINS
deleted file mode 100644
index 0eeabe249..000000000
--- a/mdk-stage1/ppp/PLUGINS
+++ /dev/null
@@ -1,131 +0,0 @@
-Starting with version 2.3.10, pppd includes support for `plugins' -
-pieces of code which can be loaded into pppd at runtime and which can
-affect its behaviour in various ways. The idea of plugins is to
-provide a way for people to customize the behaviour of pppd without
-having to either apply local patches to each version or get their
-patches accepted into the standard distribution. My aim is that
-plugins will be able to be used with successive versions of pppd
-without needing to recompile the plugins.
-
-A plugin is a standard shared library object, typically with a name
-ending in .so. They are loaded using the standard dlopen() library
-call, so plugins are only supported on systems which support shared
-libraries and the dlopen call. At present pppd is compiled with
-plugin support only under Linux and Solaris.
-
-Plugins are loaded into pppd using the `plugin' option, which takes
-one argument, the name of a shared object file. The plugin option is
-a privileged option. I suggest that you give the full path name of
-the shared object file; if you don't, it may be possible for
-unscrupulous users to substitute another shared object file for the
-one you mean to load, e.g. by setting the LD_LIBRARY_PATH variable.
-
-Plugins are usually written in C and compiled and linked to a shared
-object file in the appropriate manner for your platform. Using gcc
-under Linux, a plugin called `xyz' could be compiled and linked with
-the following commands:
-
- gcc -c -O xyz.c
- gcc -shared -o xyz.so xyz.o
-
-There are some example plugins in the pppd/plugins directory in the
-ppp distribution. Currently there is one example, minconn.c, which
-implements a `minconnect' option, which specifies a minimum connect
-time before the idle timeout applies.
-
-Plugins can access global variables within pppd, so it is useful for
-them to #include "pppd.h" from the pppd source directory.
-
-Every plugin must contain a global procedure called `plugin_init'.
-This procedure will get called (with no arguments) immediately after
-the plugin is loaded.
-
-Plugins can affect the behaviour of pppd in at least three ways:
-
-1. They can add extra options which pppd will then recognize. This is
- done by calling the add_options() procedure with a pointer to an
- array of option_t structures. The last entry in the array must
- have its name field set to NULL.
-
-2. Pppd contains `hook' variables which are procedure pointers. If a
- given hook is not NULL, pppd will call the procedure it points to
- at the appropriate point in its processing. The plugin can set any
- of these hooks to point to its own procedures. See below for a
- description of the hooks which are currently implemented.
-
-3. Plugin code can call any global procedures and access any global
- variables in pppd.
-
-Here is a list of the currently implemented hooks in pppd.
-
-
-int (*idle_time_hook)(struct ppp_idle *idlep);
-
-The idle_time_hook is called when the link first comes up (i.e. when
-the first network protocol comes up) and at intervals thereafter. On
-the first call, the idlep parameter is NULL, and the return value is
-the number of seconds before pppd should check the link activity, or 0
-if there is to be no idle timeout.
-
-On subsequent calls, idlep points to a structure giving the number of
-seconds since the last packets were sent and received. If the return
-value is > 0, pppd will wait that many seconds before checking again.
-If it is <= 0, that indicates that the link should be terminated due
-to lack of activity.
-
-
-int (*holdoff_hook)(void);
-
-The holdoff_hook is called when an attempt to bring up the link fails,
-or the link is terminated, and the persist or demand option was used.
-It returns the number of seconds that pppd should wait before trying
-to reestablish the link (0 means immediately).
-
-
-int (*pap_check_hook)(void);
-int (*pap_passwd_hook)(char *user, char *passwd);
-int (*pap_auth_hook)(char *user, int userlen,
- char *passwd, int passlen,
- char **msgp, int *msglenp,
- struct wordlist **paddrs,
- struct wordlist **popts);
-
-These hooks are designed to allow a plugin to replace the normal PAP
-password processing in pppd with something different (e.g. contacting
-an external server).
-
-The pap_check_hook is called to check whether there is any possibility
-that the peer could authenticate itself to us. If it returns 1, pppd
-will ask the peer to authenticate itself. If it returns 0, pppd will
-not ask the peer to authenticate itself (but if authentication is
-required, pppd may exit, or terminate the link before network protocol
-negotiation). If it returns -1, pppd will look in the pap-secrets
-file as it would normally.
-
-The pap_passwd_hook is called to determine what username and password
-pppd should use in authenticating itself to the peer with PAP. The
-user string will already be initialized, by the `user' option, the
-`name' option, or from the hostname, but can be changed if necessary.
-MAXNAMELEN bytes of space are available at *user, and MAXSECRETLEN
-bytes of space at *passwd. If this hook returns 0, pppd will use the
-values at *user and *passwd; if it returns -1, pppd will look in the
-pap-secrets file, or use the value from the +ua or password option, as
-it would normally.
-
-The pap_auth_hook is called to determine whether the username and
-password supplied by the peer are valid. user and passwd point to
-null-terminated strings containing the username and password supplied
-by the peer, with non-printable characters converted to a printable
-form. The pap_auth_hook function should set msg to a string to be
-returned to the peer and return 1 if the username/password was valid
-and 0 if not. If the hook returns -1, pppd will look in the
-pap-secrets file as usual.
-
-If the username/password was valid, the hook can set *paddrs to point
-to a wordlist containing the IP address(es) which the peer is
-permitted to use, formatted as in the pap-secrets file. It can also
-set *popts to a wordlist containing any extra options for this user
-which pppd should apply at this point.
-
-
-## $Id$ ##
diff --git a/mdk-stage1/ppp/README b/mdk-stage1/ppp/README
deleted file mode 100644
index aa1e5f9c2..000000000
--- a/mdk-stage1/ppp/README
+++ /dev/null
@@ -1,168 +0,0 @@
-This is the README file for ppp-2.4, a package which implements the
-Point-to-Point Protocol (PPP) to provide Internet connections over
-serial lines.
-
-
-Introduction.
-*************
-
-The Point-to-Point Protocol (PPP) provides a standard way to establish
-a network connection over a serial link. At present, this package
-supports IP and the protocols layered above IP, such as TCP and UDP.
-The Linux and Solaris ports of this package have optional support for
-IPV6; the Linux port of this package also has support for IPX.
-
-This software consists of two parts:
-
-- Kernel code, which establishes a network interface and passes
-packets between the serial port, the kernel networking code and the
-PPP daemon (pppd). This code is implemented using STREAMS modules on
-SunOS 4.x and Solaris, and as a line discipline under Linux and FreeBSD.
-
-- The PPP daemon (pppd), which negotiates with the peer to establish
-the link and sets up the ppp network interface. Pppd includes support
-for authentication, so you can control which other systems may make a
-PPP connection and what IP addresses they may use.
-
-The primary platforms supported by this package are Linux and Solaris.
-Code for SunOS 4.x is included here but is largely untested. I have
-code for NeXTStep, FreeBSD, SVR4, Tru64 (Digital Unix), AIX and Ultrix
-but no active maintainers for these platforms. Code for all of these
-except AIX is included in the ppp-2.3.11 release.
-
-
-Installation.
-*************
-
-The file SETUP contains general information about setting up your
-system for using PPP. There is also a README file for each supported
-system, which contains more specific details for installing PPP on
-that system. The supported systems, and the corresponding README
-files, are:
-
- Linux README.linux
- Solaris 2 README.sol2
- SunOS 4.x README.sunos4
-
-In each case you start by running the ./configure script. This works
-out which operating system you are using and creates symbolic links to
-the appropriate makefiles. You then run `make' to compile the
-user-level code, and (as root) `make install' to install the
-user-level programs pppd, chat and pppstats.
-
-N.B. Since 2.3.0, leaving the permitted IP addresses column of the
-pap-secrets or chap-secrets file empty means that no addresses are
-permitted. You need to put a "*" in that column to allow the peer to
-use any IP address. (This only applies where the peer is
-authenticating itself to you, of course.)
-
-
-What's new in ppp-2.4.1.
-************************
-
-* Pppd can now print out the set of options that are in effect. The
- new `dump' option causes pppd to print out the option values after
- option parsing is complete. The `dryrun' option causes pppd to
- print the options and then exit.
-
-* The option parsing code has been fixed so that options in the
- per-tty options file are parsed correctly, and don't override values
- from the command line in most cases.
-
-* The plugin option now looks in /usr/lib/pppd/<pppd-version> (for
- example, /usr/lib/pppd/2.4.1b1) for shared objects for plugins if
- there is no slash in the plugin name.
-
-* When loading a plugin, pppd will now check the version of pppd for
- which the plugin was compiled, and refuse to load it if it is
- different to pppd's version string. To enable this, the plugin
- source needs to #include "pppd.h" and have a line saying:
- char pppd_version[] = VERSION;
-
-* There is a bug in zlib, discovered by James Carlson, which can cause
- kernel memory corruption if Deflate is used with the lowest setting,
- 8. As a workaround pppd will now insist on using at least 9.
-
-* Pppd should compile on Solaris and SunOS again.
-
-* Pppd should now set the MTU correctly on demand-dialled interfaces.
-
-
-What was new in ppp-2.4.0.
-**************************
-
-* Multilink: this package now allows you to combine multiple serial
- links into one logical link or `bundle', for increased bandwidth and
- reduced latency. This is currently only supported under the
- Linux-2.3.99pre5 or later kernels.
-
-* All the pppd processes running on a system now write information
- into a common database. I used the `tdb' code from samba for this.
-
-* New hooks have been added.
-
-For a list of the changes made during the 2.3 series releases of this
-package, see the Changes-2.3 file.
-
-
-Compression methods.
-********************
-
-This package supports two packet compression methods: Deflate and
-BSD-Compress. Other compression methods which are in common use
-include Predictor, LZS, and MPPC. These methods are not supported for
-two reasons - they are patent-encumbered, and they cause some packets
-to expand slightly, which pppd doesn't currently allow for.
-BSD-Compress is also patent-encumbered (its inclusion in this package
-can be considered a historical anomaly :-) but it doesn't ever expand
-packets. Neither does Deflate, which uses the same algorithm as gzip.
-
-
-Patents.
-********
-
-The BSD-Compress algorithm used for packet compression is the same as
-that used in the Unix "compress" command. It is apparently covered by
-U.S. patents 4,814,746 (owned by IBM) and 4,558,302 (owned by Unisys),
-and corresponding patents in various other countries (but not
-Australia). If this is of concern, you can build the package without
-including BSD-Compress. To do this, edit net/ppp-comp.h to change the
-definition of DO_BSD_COMPRESS to 0. The bsd-comp.c files are then no
-longer needed, so the references to bsd-comp.o may optionally be
-removed from the Makefiles.
-
-
-Contacts.
-*********
-
-The comp.protocols.ppp newsgroup is a useful place to get help if you
-have trouble getting your ppp connections to work. Please do not send
-me questions of the form "please help me get connected to my ISP" -
-I'm sorry, but I simply do not have the time to answer all the
-questions like this that I get.
-
-If you find bugs in this package, please report them to the maintainer
-for the port for the operating system you are using:
-
-Linux Paul Mackerras <paulus@linuxcare.com>
-Solaris 2 James Carlson <james.d.carlson@east.sun.com>
-SunOS 4.x Adi Masputra <adi.masputra@sun.com>
-
-
-Copyrights:
-***********
-
-All of the code can be freely used and redistributed. The individual
-source files each have their own copyright and permission notice; some
-have a BSD-style notice and some are under the GPL.
-
-
-Distribution:
-*************
-
-The primary site for releases of this software is:
-
- ftp://linuxcare.com.au/pub/ppp/
-
-
-($Id$)
diff --git a/mdk-stage1/ppp/README.MSCHAP80 b/mdk-stage1/ppp/README.MSCHAP80
deleted file mode 100644
index d3ed291b7..000000000
--- a/mdk-stage1/ppp/README.MSCHAP80
+++ /dev/null
@@ -1,284 +0,0 @@
-PPP Client Support for Microsoft's CHAP-80
-==========================================
-
-Eric Rosenquist rosenqui@strataware.com
-(updated by Paul Mackerras)
-(updated by Al Longyear)
-(updated by Farrell Woods)
-
-INTRODUCTION
-
-Microsoft has introduced an extension to the Challenge/Handshake
-Authentication Protocol (CHAP) which avoids storing cleartext
-passwords on a server. (Unfortunately, this is not as secure as it
-sounds, because the encrypted password stored on a server can be used
-by a bogus client to gain access to the server just as easily as if
-the password were stored in cleartext.) The details of the Microsoft
-extensions can be found in the document:
-
- <ftp://ftp.microsoft.com/developr/rfc/chapexts.txt>
-
-In short, MS-CHAP is identified as <auth chap 80> since the hex value
-of 80 is used to designate Microsoft's scheme. Standard PPP CHAP uses
-a value of 5. If you enable PPP debugging with the "debug" option and
-see something like the following in your logs, the remote server is
-requesting MS-CHAP:
-
- rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]
- ^^^^^^^^^^^^
-
-The standard pppd implementation will indicate its lack of support for
-MS-CHAP by NAKing it:
-
- sent [LCP ConfNak id=0x2 <auth chap 05>]
-
-Windows NT Server systems are often configured to "Accept only
-Microsoft Authentication" (this is intended to enhance security). Up
-until now, that meant that you couldn't use this version of PPPD to
-connect to such a system. I've managed to get a client-only
-implementation of MS-CHAP working; it will authenticate itself to
-another system using MS-CHAP, but if you're using PPPD as a dial-in
-server, you won't be able to use MS-CHAP to authenticate the clients.
-This would not be a lot of extra work given that the framework is in
-place, but I didn't need it myself so I didn't implement it.
-
-
-BUILDING THE PPPD
-
-MS-CHAP uses a combination of MD4 hashing and DES encryption for
-authentication. You may need to get Eric Young's libdes library in
-order to use my MS-CHAP extensions. A lot of UNIX systems already
-have DES encryption available via the crypt(3), encrypt(3) and
-setkey(3) interfaces. Some may (such as that on Digital UNIX)
-provide only the encryption mechanism and will not perform
-decryption. This is okay. We only need to encrypt to perform
-MS-CHAP authentication.
-
-If you have encrypt/setkey available, then hopefully you need only
-define these two things in your Makefile: -DUSE_CRYPT and -DCHAPMS.
-Skip the paragraphs below about obtaining and building libdes. Do
-the "make clean" and "make" as described below. Linux users
-should not need to modify their Makefiles. Instead,
-just do "make CHAPMS=1 USE_CRYPT=1".
-
-If you don't have encrypt and setkey, you will need Eric Young's
-libdes library. You can find it in:
-
-ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.psy.uq.oz.au/DES/libdes-3.06.tar.gz
-
-Australian residents can get libdes from Eric Young's site:
-
-ftp://ftp.psy.uq.oz.au/pub/Crypto/DES/libdes-3.06.tar.gz
-
-It is also available on many other sites (ask Archie).
-
-I used libdes-3.06, but hopefully anything newer than that will work
-also. Get the library, build and test it on your system, and install
-it somewhere (typically /usr/local/lib and /usr/local/include).
-
-
-
-You should now be ready to (re)compile the PPPD. Go to the pppd
-subdirectory and make sure the Makefile contains "-DCHAPMS" in the
-CFLAGS or COMPILE_FLAGS macro, and that the LIBS macro (or LDADD for
-BSD systems) contains "-ldes". Depending on your system and where the
-DES library was installed, you may also need to alter the include and
-library paths used by your compiler.
-
-Do a "make clean" and then a "make" to rebuild pppd. Assuming all
-goes well, install the new pppd and move on to the CONFIGURATION
-section.
-
-
-CONFIGURATION
-
-If you've never used PPPD with CHAP before, read the man page (type
-"man pppd") and read the description in there. Basically, you need to
-edit the "chap-secrets" file typically named /etc/ppp/chap-secrets.
-This should contain the following two lines for each system with which
-you use CHAP (with no leading blanks):
-
- RemoteHost Account Secret
- Account RemoteHost Secret
-
-Note that you need both lines and that item 1 and 2 are swapped in the
-second line. I'm not sure why you need it twice, but it works and I didn't
-have time to look into it further. The "RemoteHost" is a somewhat
-arbitrary name for the remote Windows NT system you're dialing. It doesn't
-have to match the NT system's name, but it *does* have to match what you
-use with the "remotename" parameter. The "Account" is the Windows NT
-account name you have been told to use when dialing, and the "Secret" is
-the password for that account. For example, if your service provider calls
-their machine "DialupNT" and tells you your account and password are
-"customer47" and "foobar", add the following to your chap-secrets file:
-
- DialupNT customer47 foobar
- customer47 DialupNT foobar
-
-The only other thing you need to do for MS-CHAP (compared to normal CHAP)
-is to always use the "remotename" option, either on the command line or in
-your "options" file (see the pppd man page for details). In the case of
-the above example, you would need to use the following command line:
-
- pppd name customer47 remotename DialupNT <other options>
-
-or add:
-
- name customer47
- remotename DialupNT
-
-to your PPPD "options" file.
-
-The "remotename" option is required for MS-CHAP since Microsoft PPP servers
-don't send their system name in the CHAP challenge packet.
-
-
-E=691 (AUTHENTICATION_FAILURE) ERRORS WHEN YOU HAVE THE VALID SECRET (PASSWORD)
-
-If your RAS server is not the domain controller and is not a 'stand-alone'
-server then it must make a query to the domain controller for your domain.
-
-You need to specify the domain name with the user name when you attempt to
-use this type of a configuration. The domain name is specified with the
-local name in the chap-secrets file and with the option for the 'name'
-parameter.
-
-For example, the previous example would become:
-
- DialupNT domain\\customer47 foobar
- domain\\customer47 DialupNT foobar
-
-and
-
- pppd name 'domain\\customer47' remotename DialupNT <other options>
-
-or add:
-
- name domain\\customer47
- remotename DialupNT
-
-when the Windows NT domain name is simply called 'domain'.
-
-
-TROUBLESHOOTING
-
-Assuming that everything else has been configured correctly for PPP and
-CHAP, the MS-CHAP-specific problems you're likely to encounter are mostly
-related to your Windows NT account and its settings. A Microsoft server
-returns error codes in its CHAP response. The following are extracted from
-Microsoft's "chapexts.txt" file referenced above:
-
- 646 ERROR_RESTRICTED_LOGON_HOURS
- 647 ERROR_ACCT_DISABLED
- 648 ERROR_PASSWD_EXPIRED
- 649 ERROR_NO_DIALIN_PERMISSION
- 691 ERROR_AUTHENTICATION_FAILURE
- 709 ERROR_CHANGING_PASSWORD
-
-You'll see these in your pppd log as a line similar to:
-
- Remote message: E=649 R=0
-
-The "E=" is the error number from the table above, and the "R=" flag
-indicates whether the error is transient and the client should retry. If
-you consistently get error 691, then either you're using the wrong account
-name/password, or the DES library or MD4 hashing (in md4.c) aren't working
-properly. Verify your account name and password (use a Windows NT or
-Windows 95 system to dial-in if you have one available). If that checks
-out, test the DES library with the "destest" program included with the DES
-library. If DES checks out, the md4.c routines are probably failing
-(system byte ordering may be a problem) or my code is screwing up. I've
-only got access to a Linux system, so you're on your own for anything else.
-
-Another thing that might cause problems is that some RAS servers won't
-respond at all to LCP config requests without seeing the word "CLIENT"
-from the other end. If you see pppd sending out LCP config requests
-without getting any reply, try putting something in your chat script
-to send the word CLIENT after the modem has connected.
-
-If everything compiles cleanly, but fails at authentication time, then
-it might be a case of the MD4 or DES code screwing up. The following
-small program can be used to test the MS-CHAP code to see if it
-produces a known response:
-
------------------
-#include <stdio.h>
-
-#include "pppd.h"
-#include "chap.h"
-#include "chap_ms.h"
-
-int main(argc, argv)
- int argc;
- char *argv[];
-{
- u_char challenge[8];
- int challengeInt[sizeof(challenge)];
- chap_state cstate;
- int i;
-
- if (argc != 3) {
- fprintf(stderr, "Usage: %s <16-hexchar challenge> <password>\n",
- argv[0]); exit(1);
- }
-
- sscanf(argv[1], "%2x%2x%2x%2x%2x%2x%2x%2x",
- challengeInt + 0, challengeInt + 1, challengeInt + 2,
- challengeInt + 3, challengeInt + 4, challengeInt + 5,
- challengeInt + 6, challengeInt + 7);
-
- for (i = 0; i < sizeof(challenge); i++)
- challenge[i] = (u_char)challengeInt[i];
-
- ChapMS(&cstate, challenge, sizeof(challenge), argv[2], strlen(argv[2]));
- printf("Response length is %d, response is:", cstate.resp_length);
-
- for (i = 0; i < cstate.resp_length; i++) {
- if (i % 8 == 0)
- putchar('\n');
- printf("%02X ", (unsigned int)cstate.response[i]);
- }
-
- putchar('\n');
-
- exit(0);
-}
--------------
-
-This needs to link against chap_ms.o, md4.o, and the DES library. When
-you run it with the command line:
-
- $ testchap 00000000000000000000000000000000 hello
-
-it should output the following:
-
- Response length is 49, response is:
- 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00
- F4 D9 9D AF 82 64 DC 3C
- 53 F9 BC 92 14 B5 5D 9E
- 78 C4 21 48 9D B7 A8 B4
- 01
-
-if not, then either the DES library is not working, the MD4 code isn't
-working, or there are some problems with the port of the code in
-chap_ms.c.
-
-
-STILL TO DO
-
-A site using only MS-CHAP to authenticate has no need to store cleartext
-passwords in the "chap-secrets" file. A utility that spits out the ASCII
-hex MD4 hash of a given password would be nice, and would allow that hash
-to be used in chap-secrets in place of the password. The code to do this
-could quite easily be lifted from chap_ms.c (you have to convert the
-password to Unicode before hashing it). The chap_ms.c file would also have
-to be changed to recognize a password hash (16 binary bytes == 32 ASCII hex
-characters) and skip the hashing stage.
-
-A server implementation would allow MS-CHAP to be used with Windows NT and
-Windows 95 clients for enhanced security. Some new command-line options
-would be required, as would code to generate the Challenge packet and
-verify the response. Most of the helper functions are in place, so this
-shouldn't be too hard for someone to add.
diff --git a/mdk-stage1/ppp/README.cbcp b/mdk-stage1/ppp/README.cbcp
deleted file mode 100644
index 6f7b7685e..000000000
--- a/mdk-stage1/ppp/README.cbcp
+++ /dev/null
@@ -1,97 +0,0 @@
- Microsoft Call Back Configuration Protocol.
- by Pedro Roque Marques
- (updated by Paul Mackerras)
-
-The CBCP is a method by which the Microsoft Windows NT Server may
-implement additional security. It is possible to configure the server
-in such a manner so as to require that the client systems which
-connect with it are required that following a valid authentication to
-leave a method by which the number may be returned call.
-
-It is a requirement of servers so configured that the protocol be
-exchanged.
-
-So, this set of patches may be applied to the pppd process to enable
-the cbcp client *only* portion of the specification. It is primarily
-meant to permit connection with Windows NT Servers.
-
-The ietf-working specification may be obtained from ftp.microsoft.com
-in the developr/rfc directory.
-
-The ietf task group has decided to recommend that the LCP sequence be
-extended to permit the callback operation. For this reason, these
-patches are not 'part' of pppd but are an adjunct to the code.
-
-To enable CBCP support, all that is required is to change the
-appropriate Makefile in the pppd subdirectory to add "-DCBCP_SUPPORT"
-to the CFLAGS definition and add cbcp.o to the list of object files,
-and then recompile pppd. The patch below does this for Makefile.bsd
-and Makefile.linux.
-
-
---------------------------------cut here-------------------------------
-diff -r -c ppp-2.3.orig/pppd/Makefile.bsd ppp-2.3/pppd/Makefile.bsd
-*** ppp-2.3.orig/pppd/Makefile.bsd Tue Oct 8 13:33:33 1996
---- ppp-2.3/pppd/Makefile.bsd Fri Apr 11 23:59:15 1997
-***************
-*** 4,14 ****
- # -D_BITYPES is for FreeBSD, which doesn't define anything to
- # tell us that u_int32_t gets defined if <sys/types.h> is included.
- # Remove for older *BSD systems for which this isn't true.
-! CFLAGS+= -g -I.. -DHAVE_PATHS_H -D_BITYPES
-
- PROG= pppd
- SRCS= main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \
-! demand.c auth.c options.c sys-bsd.c
- MAN= pppd.cat8
- MAN8= pppd.8
- BINMODE=4555
---- 4,14 ----
- # -D_BITYPES is for FreeBSD, which doesn't define anything to
- # tell us that u_int32_t gets defined if <sys/types.h> is included.
- # Remove for older *BSD systems for which this isn't true.
-! CFLAGS+= -I.. -DHAVE_PATHS_H -D_BITYPES -DCBCP_SUPPORT
-
- PROG= pppd
- SRCS= main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \
-! demand.c auth.c options.c sys-bsd.c cbcp.c
- MAN= pppd.cat8
- MAN8= pppd.8
- BINMODE=4555
-diff -r -c ppp-2.3.orig/pppd/Makefile.linux ppp-2.3/pppd/Makefile.linux
-*** ppp-2.3.orig/pppd/Makefile.linux Tue Oct 8 15:42:41 1996
---- ppp-2.3/pppd/Makefile.linux Sat Apr 12 00:02:28 1997
-***************
-*** 14,20 ****
- ipxcp.h cbcp.h
- MANPAGES = pppd.8
- PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
-! auth.o options.o demand.o sys-linux.o ipxcp.o
-
- all: pppd
-
---- 14,20 ----
- ipxcp.h cbcp.h
- MANPAGES = pppd.8
- PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
-! auth.o options.o demand.o sys-linux.o ipxcp.o cbcp.o
-
- all: pppd
-
-***************
-*** 36,42 ****
- #INCLUDE_DIRS= -I/usr/include -I..
- INCLUDE_DIRS=
-
-! COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE
-
- CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
---- 36,42 ----
- #INCLUDE_DIRS= -I/usr/include -I..
- INCLUDE_DIRS=
-
-! COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE -DCBCP_SUPPORT
-
- CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
diff --git a/mdk-stage1/ppp/README.linux b/mdk-stage1/ppp/README.linux
deleted file mode 100644
index 62ed9ca7f..000000000
--- a/mdk-stage1/ppp/README.linux
+++ /dev/null
@@ -1,297 +0,0 @@
- PPP for Linux
- -------------
-
- Paul Mackerras
- 8 March 2001
-
- for ppp-2.4.1
-
-1. Introduction
----------------
-
-The Linux PPP implementation includes both kernel and user-level
-parts. This package contains the user-level part, which consists of
-the PPP daemon (pppd) and associated utilities. In the past this
-package has contained updated kernel drivers. This is no longer
-necessary, as the current 2.2 and 2.4 kernel sources contain
-up-to-date drivers.
-
-The Linux PPP implementation is capable of being used both for
-initiating PPP connections (as a `client') or for handling incoming
-PPP connections (as a `server'). Note that this is an operational
-distinction, based on how the connection is created, rather than a
-distinction that is made in the PPP protocols themselves.
-
-Mostly this package is used for PPP connections over modems connected
-via asynchronous serial ports, so this guide concentrates on this
-situation.
-
-The PPP protocol consists of two parts. One is a scheme for framing
-and encoding packets, the other is a series of protocols called LCP,
-IPCP, PAP and CHAP, for negotiating link options and for
-authentication. This package similarly consists of two parts: a
-kernel module which handles PPP's low-level framing protocol, and a
-user-level program called pppd which implements PPP's negotiation
-protocols.
-
-The kernel module assembles/disassembles PPP frames, handles error
-detection, and forwards packets between the serial port and either the
-kernel network code or the user-level program pppd. IP packets go
-directly to the kernel network code. So once pppd has negotiated the
-link, it in practice lies completely dormant until you want to take
-the link down, when it negotiates a graceful disconnect.
-
-
-2. Installation
----------------
-
-2.1 Kernel driver
-
-Assuming you are running a recent 2.2 or 2.4 (or later) series kernel,
-the kernel source code will contain an up-to-date kernel PPP driver.
-If the PPP driver was included in your kernel configuration when your
-kernel was built, then you only need to install the user-level
-programs. Otherwise you will need to get the source tree for your
-kernel version, configure it with PPP included, and recompile. Most
-Linux distribution vendors ship kernels with PPP included in the
-configuration.
-
-The PPP driver can be either compiled into the kernel or compiled as a
-kernel module. If it is compiled into the kernel, the PPP driver is
-included in the kernel image which is loaded at boot time. If it is
-compiled as a module, the PPP driver is present in one or more files
-under /lib/modules and is loaded into the kernel when needed.
-
-The 2.2 series kernels contain an older version of the kernel PPP
-driver, one which doesn't support multilink. If you want multilink,
-you need to run the latest 2.4 series kernel. The kernel PPP driver
-was completely rewritten for the 2.4 series kernels to support
-multilink and to allow it to operate over diverse kinds of
-communication medium (the 2.2 driver only operates over serial ports
-and devices which look like serial ports, such as pseudo-ttys).
-
-Under the 2.2 kernels, if PPP is compiled as a module, the PPP driver
-modules should be present in the /lib/modules/`uname -r`/net directory
-(where `uname -r` represents the kernel version number). The PPP
-driver module itself is called ppp.o, and there will usually be
-compression modules there, ppp_deflate.o and bsd_comp.o, as well as
-slhc.o, which handles TCP/IP header compression. If the PPP driver is
-compiled into the kernel, the compression code will still be compiled
-as modules, for kernels before 2.2.17pre12. For 2.2.17pre12 and later,
-if the PPP driver is compiled in, the compression code will also.
-
-Under the 2.4 kernels, there are two PPP modules, ppp_generic.o and
-ppp_async.o, plus the compression modules (ppp_deflate.o, bsd_comp.o
-and slhc.o). If the PPP generic driver is compiled into the kernel,
-the other four can then be present either as modules or compiled into
-the kernel. There is a sixth module, ppp_synctty.o, which is used for
-synchronous tty devices such as high-speed WAN adaptors.
-
-
-2.2 User-level programs
-
-If you obtained this package in .rpm or .deb format, you simply follow
-the usual procedure for installing the package.
-
-If you are using the .tar.gz form of this package, then cd into the
-ppp-2.4.1b1 directory you obtained by unpacking the archive and issue
-the following commands:
-
-$ ./configure
-$ make
-# make install
-
-The `make install' has to be done as root. This makes and installs
-four programs and their man pages: pppd, chat, pppstats and pppdump.
-If the /etc/ppp configuration directory doesn't exist, the `make
-install' step will create it and install some default configuration
-files.
-
-
-2.3 System setup for 2.4 kernels
-
-Under the 2.4 series kernels, pppd needs to be able to open /dev/ppp,
-character device (108,0). If you are using devfs (the device
-filesystem), the /dev/ppp node will automagically appear when the
-ppp_generic module is loaded, or at startup if ppp_generic is compiled
-in.
-
-If you have ppp_generic as a module, and you are using devfsd (the
-devfs daemon), you will need to add a line like this to your
-/etc/devfsd.conf:
-
-LOOKUP ppp MODLOAD
-
-Otherwise you will need to create a /dev/ppp device node with the
-commands:
-
-# mknod /dev/ppp c 108 0
-# chmod 600 /dev/ppp
-
-If you use module autoloading and have PPP as a module, you will need
-to add the following to your /etc/modules.conf or /etc/conf.modules:
-
-alias /dev/ppp ppp_generic
-alias char-major-108 ppp_generic
-alias tty-ldisc-3 ppp_async
-alias tty-ldisc-14 ppp_synctty
-alias ppp-compress-21 bsd_comp
-alias ppp-compress-24 ppp_deflate
-alias ppp-compress-26 ppp_deflate
-
-
-2.4 System setup under 2.2 series kernels
-
-Under the 2.2 series kernels, you should add the following to your
-/etc/modules.conf or /etc/conf.modules:
-
-alias tty-ldisc-3 ppp
-alias ppp-compress-21 bsd_comp
-alias ppp-compress-24 ppp_deflate
-alias ppp-compress-26 ppp_deflate
-
-
-3. Getting help with problems
------------------------------
-
-If you have problems with your PPP setup, or you just want to ask some
-questions, or better yet if you can help others with their PPP
-questions, then you should join the linux-ppp mailing list. Send an
-email to majordomo@vger.kernel.org with a line in the body saying
-
-subscribe linux-ppp
-
-To leave the mailing list, send an email to majordomo@vger.kernel.org
-with a line in the body saying
-
-unsubscribe linux-ppp
-
-To send a message to the list, email it to linux-ppp@vger.kernel.org.
-You don't have to be subscribed to send messages to the list.
-
-You can also email me (paulus@linuxcare.com.au) but I am overloaded
-with email and I can't respond to most messages I get in a timely
-fashion.
-
-There are also several relevant news groups, such as comp.protocols.ppp,
-comp.os.linux.networking, or comp.os.linux.setup.
-
-
-4. Configuring your dial-out PPP connections
---------------------------------------------
-
-Some Linux distribution makers include tools in their distributions
-for setting up PPP connections. For example, for Red Hat Linux and
-derivatives, you should probably use linuxconf or netcfg to set up
-your PPP connections.
-
-The two main windowing environments for Linux, KDE and Gnome, both
-come with GUI utilities for configuring and controlling PPP dial-out
-connections. They are convenient and relatively easy to configure.
-
-A third alternative is to use a PPP front-end package such as wvdial
-or ezppp. These also will handle most of the details of talking to
-the modem and setting up the PPP connection for you.
-
-Assuming that you don't want to use any of these tools, you want to
-set up the configuration manually yourself, then read on. This
-document gives a brief description and example. More details can be
-found by reading the pppd and chat man pages and the PPP-HOWTO.
-
-We assume that you have a modem that uses the Hayes-compatible AT
-command set connected to an async serial port (e.g. /dev/ttyS0) and
-that you are dialling out to an ISP.
-
-The trickiest and most variable part of setting up a dial-out PPP
-connection is the part which involves getting the modem to dial and
-then invoking PPP service at the far end. Generally, once both ends
-are talking PPP the rest is relatively straightforward.
-
-Now in fact pppd doesn't know anything about how to get modems to dial
-or what you have to say to the system at the far end to get it to talk
-PPP. That's handled by an external program such as chat, specified
-with the connect option to pppd. Chat takes a series of strings to
-expect from the modem interleaved with a series of strings to send to
-the modem. See the chat man page for more information. Here is a
-simple example for connecting to an ISP, assuming that the ISP's
-system starts talking PPP as soon as it answers the phone:
-
-pppd connect 'chat -v "" AT OK ATDT5551212 ~' \
- /dev/ttyS0 57600 crtscts debug defaultroute
-
-Going through pppd's options in order:
- connect 'chat ...' This gives a command to run to contact the
- PPP server. Here the supplied 'chat' program is used to dial a
- remote computer. The whole command is enclosed in single quotes
- because pppd expects a one-word argument for the 'connect' option.
- The options to 'chat' itself are:
-
- -v verbose mode; log what we do to syslog
- "" don't wait for any prompt, but instead...
- AT send the string "AT"
- OK expect the response "OK", then
- ATDT5551212 dial the modem, then
- ~ wait for a ~ character, indicating the start
- of a PPP frame from the server
-
- /dev/ttyS0 specifies which serial port the modem is connected to
- 57600 specifies the baud rate to use
- crtscts use hardware flow control using the RTS & CTS signals
- debug log the PPP negotiation with syslog
- defaultroute add default network route via the PPP link
-
-Pppd will write error messages and debugging logs to the syslogd
-daemon using the facility name "daemon". These messages may already
-be logged to the console or to a file like /var/log/messages; consult
-your /etc/syslog.conf file to see. If you want to make all pppd
-messages go to a file such as /var/log/ppp-debug, add the line
-
-daemon.* /var/log/ppp-debug
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- This is one or more tabs. Do not use spaces.
-
-to syslog.conf; make sure to put one or more TAB characters (not
-spaces!) between the two fields. Then you need to create an empty
-/var/log/ppp-debug file with a command such as
-
- touch /var/log/ppp-debug
-
-and then restart syslogd, usually by sending it a SIGHUP signal with a
-command like this:
-
- killall -HUP syslogd
-
-
-4.1 Is the link up?
-
-The main way to tell if your PPP link is up and operational is the
-ifconfig ("interface configuration") command. Type
-
- /sbin/ifconfig
-
-at a shell prompt. It should print a list of interfaces including one
-like this example:
-
-ppp0 Link encap Point-to-Point Protocol
- inet addr 192.76.32.3 P-t-P 129.67.1.165 Mask 255.255.255.0
- UP POINTOPOINT RUNNING MTU 1500 Metric 1
- RX packets 33 errors 0 dropped 0 overrun 0
- TX packets 42 errors 0 dropped 0 overrun 0
-
-Assuming that ifconfig shows the ppp network interface, you can test
-the link using the ping command like this:
-
- /sbin/ping -c 3 129.67.1.165
-
-where the address you give is the address shown as the P-t-P address
-in the ifconfig output. If the link is operating correctly, you
-should see output like this:
-
- PING 129.67.1.165 (129.67.1.165): 56 data bytes
- 64 bytes from 129.67.1.165: icmp_seq=0 ttl=255 time=268 ms
- 64 bytes from 129.67.1.165: icmp_seq=1 ttl=255 time=247 ms
- 64 bytes from 129.67.1.165: icmp_seq=2 ttl=255 time=266 ms
- --- 129.67.1.165 ping statistics ---
- 3 packets transmitted, 3 packets received, 0% packet loss
- round-trip min/avg/max = 247/260/268 ms
-
diff --git a/mdk-stage1/ppp/README.sol2 b/mdk-stage1/ppp/README.sol2
deleted file mode 100644
index 4c862208f..000000000
--- a/mdk-stage1/ppp/README.sol2
+++ /dev/null
@@ -1,220 +0,0 @@
-This file describes the installation process for ppp-2.3 on systems
-running Solaris 2. The Solaris 2 and SVR4 ports share a lot of code
-but are not identical. The STREAMS kernel modules and driver for
-Solaris 2 are in the svr4 directory (and use some code from the
-modules directory).
-
-NOTE: Although the kernel driver and modules have been designed to
-operate correctly on SMP systems, they have not been extensively
-tested on SMP machines. Some users of SMP Solaris x86 systems have
-reported system problems apparently linked to the use of previous
-versions of this software. I believe these problems have been fixed.
-
-
-Installation.
-*************
-
-1. Run the configure script and make the user-level programs and the
-kernel modules.
-
- ./configure
- make
-
-If you wish to use gcc (or another compiler) instead of Sun's cc, edit
-the svr4/Makedefs file and uncomment the definition of CC. You can
-also change the options passed to the C compiler by editing the COPTS
-definition.
-
-2. Install the programs and kernel modules: as root, do
-
- make install
-
-This installs pppd, chat and pppstats in /usr/local/bin and the kernel
-modules in /kernel/drv and /kernel/strmod, and creates the /etc/ppp
-directory and populates it with default configuration files. You can
-change the installation directories by editing svr4/Makedefs.
-
-If your system normally has only one network interface, the default
-Solaris 2 system startup scripts will disable IP forwarding in the IP
-kernel module. This will prevent the remote machine from using the
-local machine as a gateway to access other hosts. The solution is to
-create an /etc/ppp/ip-up script containing something like this:
-
- #!/bin/sh
- /usr/sbin/ndd -set /dev/ip ip_forwarding 1
-
-See the man page for ip(7p) for details.
-
-Dynamic STREAMS Re-Plumbing Support.
-************************************
-
-Solaris 8 includes dynamic re-plumbing support. With this, modules
-below ip can be inserted, or removed, without having the ip stream be
-unplumbed, and re-plumbed again. All states in ip for an interface
-will therefore now be preserved. Users can install (or upgrade)
-modules like firewall, bandwidth manager, cache manager, tunneling,
-etc., without shutting the machine down.
-
-To support this, ppp driver now uses /dev/udp instead of /dev/ip for
-the ip stream. The interface stream (where ip module pushed on top of
-ppp) is then I_PLINK'ed below the ip stream. /dev/udp is used because
-STREAMS will not let a driver be PLINK'ed under itself, and /dev/ip is
-typically the driver at the bottom of the tunneling interfaces
-stream. The mux ids of the ip streams are then added using
-SIOCSxIFMUXID ioctl.
-
-Users will be able to see the modules on the interface stream by, for
-example:
-
- pikapon% ifconfig ppp modlist
- 0 ip
- 1 ppp
-
-Or arbitrarily if bandwidth manager and firewall modules are installed:
-
- pikapon% ifconfig hme0 modlist
- 0 arp
- 1 ip
- 2 ipqos
- 3 firewall
- 4 hme
-
-Snoop Support.
-**************
-
-This version includes support for /usr/sbin/snoop. Tests has been done
-on both Solaris 7 and 8. Only IPv4 and IPv6 packets will be sent up to
-stream(s) marked as promiscuous, e.g, snoop et al.
-
-Users will be able to see the packets on the ppp interface by, for example:
-
- snoop -d ppp0
-
-See the man page for snoop(1M) for details.
-
-IPv6 Support.
-*************
-
-This is for Solaris 8 and later.
-
-This version has been tested under Solaris 8 running IPv6. As of now,
-interoperability testing has only been done between Solaris machines
-in terms of the IPV6 NCP. An additional command line option for the
-pppd daemon has been added: ipv6cp-use-persistent.
-
-By default, compilation for IPv6 support is not enabled. Uncomment
-the necessary lines in pppd/Makefile.sol2 to enable it. Once done, the
-quickest way to get IPv6 running is to add the following somewhere in
-the command line option:
-
- +ipv6 ipv6cp-use-persistent
-
-The persistent id for the link-local address was added to conform to
-RFC 2472; such that if there's an EUI-48 available, use that to make
-up the EUI-64. As of now, the Solaris implementation extracts the
-EUI-48 id from the Ethernet's MAC address (the ethernet interface
-needs to be up). Future works might support other ways of obtaining a
-unique yet persistent id, such as EEPROM serial numbers, etc.
-
-There need not be any up/down scripts for ipv6, e.g. /etc/ppp/ipv6-up
-or /etc/ppp/ipv6-down, to trigger IPv6 neighbor discovery for auto
-configuration and routing. The in.ndpd daemon will perform all of the
-necessary jobs in the background. /etc/inet/ndpd.conf can be further
-customized to enable the machine as an IPv6 router. See the man page
-for in.ndpd(1M) and ndpd.conf(4) for details.
-
-Below is a sample output of "ifconfig -a" with persistent link-local
-address. Note the UNNUMBERED flag is set because hme0 and ppp0 both
-have identical link-local IPv6 addresses:
-
-lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
- inet 127.0.0.1 netmask ff000000
-hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
- inet 129.146.86.248 netmask ffffff00 broadcast 129.146.86.255
- ether 8:0:20:8d:38:c1
-lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
- inet6 ::1/128
-hme0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
- ether 8:0:20:8d:38:c1
- inet6 fe80::a00:20ff:fe8d:38c1/10
-hme0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 fec0::56:a00:20ff:fe8d:38c1/64
-hme0:2: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 2000::56:a00:20ff:fe8d:38c1/64
-hme0:3: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
- inet6 2::56:a00:20ff:fe8d:38c1/64
-ppp0: flags=10008d1<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4> mtu 1500 index 12
- inet 172.16.1.1 --> 172.16.1.2 netmask ffffff00
-ppp0: flags=2202851<UP,POINTOPOINT,RUNNING,MULTICAST,UNNUMBERED,NONUD,IPv6> mtu 1500 index 12
- inet6 fe80::a00:20ff:fe8d:38c1/10 --> fe80::a00:20ff:fe7a:24fb
-
-Note also that a plumbed ipv6 interface stream will exist throughout
-the entire PPP session in the case where the peer rejects IPV6CP,
-which further causes the interface state to stay down. Unplumbing will
-happen when the daemon exits. This is done by design and is not a bug.
-
-64-bit Support.
-***************
-
-This version has been tested under Solaris 7 (and Solaris 8 ) in both
-32- and 64-bits environments (Ultra class machines). Installing the
-package by executing "make install" will result in additional files
-residing in /kernel/drv/sparcv9 and /kernel/strmod/sparcv9
-subdirectories.
-
-64-bit modules and driver have been compiled and tested using Sun's cc.
-
-Synchronous Serial Support.
-***************************
-
-This version has working but limited support for the on-board
-synchronous HDLC interfaces. It has been tested with the /dev/se_hdlc
-and /dev/zsh drivers. Synchronous mode was tested with a Cisco
-router.
-
-There ppp daemon does not directly support controlling the serial
-interface. It relies on the /usr/sbin/syncinit command to initialize
-HDLC mode and clocking.
-
-Some bugs remain: large sized frames are not sent/received properly,
-and may be related to the IP mtu. This may be due to bugs in pppd
-itself, bugs in Solaris or the serial drivers. The /dev/zsh driver
-seems more larger and can send/receive larger frames than the
-/dev/se_hdlc driver. There is a confirmed bug with NRZ/NRZI mode in
-the /dev/se_hdlc driver, and Solaris patch 104596-11 is needed to
-correct it. (However this patch seems to introduce other serial
-problems. If you don't apply the patch, the workaround is to change
-the nrzi mode to yes or no, whichever works)
-
-How to start pppd with synchronous support:
-
-#!/bin/sh
-
-local=1.1.1.1 # your ip address here
-baud=38400 # needed, but ignored by serial driver
-
-# Change to the correct serial driver/port
-#dev=/dev/zsh0
-dev=/dev/se_hdlc0
-
-# Change the driver, nrzi mode, speed and clocking to match your setup
-# This configuration is for external clocking from the DCE
-connect="syncinit se_hdlc0 nrzi=no speed=64000 txc=rxc rxc=rxc"
-
-/usr/sbin/pppd $dev sync $baud novj noauth $local: connect "$connect"
-
-
-Sample Cisco router config excerpt:
-
-!
-! Cisco router setup as DCE with RS-232 DCE cable
-!
-!
-interface Serial0
- ip address 1.1.1.2 255.255.255.0
- encapsulation ppp
- clockrate 64000
- no nrzi-encoding
- no shutdown
-!
-
diff --git a/mdk-stage1/ppp/README.sunos4 b/mdk-stage1/ppp/README.sunos4
deleted file mode 100644
index b48aec377..000000000
--- a/mdk-stage1/ppp/README.sunos4
+++ /dev/null
@@ -1,62 +0,0 @@
-This file describes the installation process for ppp-2.3 on systems
-running SunOS 4.1.x (or the equivalent).
-
-The STREAMS modules in the sunos4 directory provide kernel support for
-PPP on SunOS 4.1.x systems. They have been tested under SunOS 4.1.3
-on a SparcStation 1+. They should work under earlier SunOS 4.1.x
-systems, but no guarantees are given.
-
-These modules are designed to be loaded into the running kernel using
-the `modload' command.
-
-
-Installation.
-*************
-
-1. Run the configure script and make the user-level programs and the
-kernel modules.
-
- ./configure
- make
-
-If you wish to compile using gcc instead of cc, edit the
-sunos4/Makedefs file and uncomment the line saying "CC = gcc". You
-can also change the C compiler options by editing the COPTS
-definition.
-
-2. Install the pppd, pppstats and chat programs and the loadable
-module object files (you need to be root to do this):
-
- make install
-
-By default, the programs and the loadable module object files go into
-/usr/local/etc. Doing `make install' also copies a script called
-ppp.INSTALL into /dev, and makes ppp.LOAD, ppp.UNLOAD, ppp.MKDEV and
-ppp.RMDEV links to it. You can change the installation directories by
-editing sunos4/Makedefs.
-
-3. Load the ppp modules (you need to be root for this too):
-
- /dev/ppp.LOAD
-
-You will want to do this in your /etc/rc.local file once you have
-everything installed. I suggest you put something like the following
-in /etc/rc.local (or /etc/loadable, if you have one):
-
- if [ -f /dev/ppp.AUTOLOAD ]; then
- /dev/ppp.LOAD
- fi
-
-and then create a /dev/ppp.AUTOLOAD file with the command
-
- touch /dev/ppp.AUTOLOAD
-
-It is not advisable to unload the "if_ppp" module, because it creates
-network interface units, and SunOS does not provide any way to destroy
-network interfaces once created. If you do unload it, the system will
-probably crash at some later stage.
-
-If you have previously had ppp-2.2 installed, you may have statements
-in your /etc/rc.local to load the ppp module. You will need to remove
-those. Having done this, you will need to reboot to remove the old
-ppp module and load the new modules.
diff --git a/mdk-stage1/ppp/SETUP b/mdk-stage1/ppp/SETUP
deleted file mode 100644
index fb28a2138..000000000
--- a/mdk-stage1/ppp/SETUP
+++ /dev/null
@@ -1,111 +0,0 @@
- Configuring a PPP link.
-
-After you have compiled and installed this package, there are some
-configuration files which will generally need to be set up. The
-pppd(8) man page is the best reference for the full details; this file
-outlines the configuration process for the most common case, where
-this package is being used to enable a machine to dial an ISP and
-connect to the internet. The FAQ and README.linux files also provide
-useful information about setting up PPP.
-
-Dialling an ISP.
-****************
-
-Usually, an ISP will assign an IP address to your machine, and will
-refuse to authenticate itself to you. Some ISPs require a username
-and password to be entered before PPP service commences, while others
-use PPP authentication (using either the PAP or CHAP protocols).
-
-The recommended way to set up to dial an ISP is for the system
-administrator to create a file under /etc/ppp/peers, named for the ISP
-that you will be dialling. For example, suppose the file is called
-/etc/ppp/peers/isp. This file would contain something like this:
-
-cua0 # modem is connected to /dev/cua0
-38400 # run the serial port at 38400 baud
-crtscts # use hardware flow control
-noauth # don't require the ISP to authenticate itself
-defaultroute # use the ISP as our default route
-connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'
-
-If there are any other pppd options that should apply when calling
-this ISP, they can also be placed in this file.
-
-The /etc/ppp/chat-isp file named in the last line contains the script
-for chat(8) to use to dial the ISP and go through any username/
-password authentication required before PPP service starts. Here is
-an example (for dialling an Annex terminal server):
-
-ABORT "NO CARRIER"
-ABORT "NO DIALTONE"
-ABORT "ERROR"
-ABORT "NO ANSWER"
-ABORT "BUSY"
-ABORT "Username/Password Incorrect"
-"" "at"
-OK "at&d2&c1"
-OK "atdt2479381"
-"name:" "^Uusername"
-"word:" "\qpassword"
-"annex" "ppp"
-"Switching to PPP-ppp-Switching to PPP"
-
-See the chat(8) man page for details of the script. If you are not
-sure how the initial dialog with your ISP will go, you could use
-a terminal emulator such as kermit or minicom to go through the
-process manually.
-
-If your ISP requires PAP or CHAP authentication, you will have to
-create a line in /etc/ppp/pap-secrets or /etc/ppp/chap-secrets like
-this:
-
-myhostname * "password"
-
-(Replace myhostname with the hostname of your machine.)
-
-At this point, you can initiate the link with the command:
-
-/usr/sbin/pppd call isp
-
-(N.B.: pppd might be installed in a different directory on some
-systems).
-
-This will return to the shell prompt immediately, as pppd will detach
-itself from its controlling terminal. (If you don't want it to do
-this, use the "nodetach" option.)
-
-Pppd will log messages describing the progress of the connection and
-any errors using the syslog facility (see the syslogd(8) and
-syslog.conf(5) man pages). Pppd issues messages using syslog facility
-daemon (or local2 if it has been compiled with debugging enabled);
-chat uses facility local2. It is often useful to see messages of
-priority notice or higher on the console. To see these, find the line
-in /etc/syslog.conf which has /dev/console on the right-hand side, and
-add `daemon.notice' on the left. This line should end up something
-like this:
-
-*.err;kern.debug;daemon,local2,auth.notice;mail.crit /dev/console
-
-If you want to see more messages from pppd, request messages of
-priority info or higher for facility daemon, like this:
-
-*.err;kern.debug;daemon.info;local2,auth.notice;mail.crit /dev/console
-
-It is also useful to add a line like this:
-
-daemon,local2.debug /etc/ppp/ppp-log
-
-If you do this, you will need to create an empty /etc/ppp/ppp-log
-file.
-
-After modifying syslog.conf, you will then need to send a HUP signal
-to syslogd (or reboot).
-
-When you wish terminate the PPP link, you should send a TERM or INTR
-signal to pppd. Pppd writes its process ID to a file called
-ppp<n>.pid in /var/run (or /etc/ppp on older systems such as SunOS or
-Ultrix). Here <n> is the PPP interface unit number, which will be 0
-unless you have more than one PPP link running simultaneously. Thus
-you can terminate the link with a command like
-
- kill `cat /var/run/ppp0.pid`
diff --git a/mdk-stage1/ppp/chat/Makefile.linux b/mdk-stage1/ppp/chat/Makefile.linux
deleted file mode 100644
index 586cbd876..000000000
--- a/mdk-stage1/ppp/chat/Makefile.linux
+++ /dev/null
@@ -1,27 +0,0 @@
-# $Id$
-
-CDEF1= -DTERMIOS # Use the termios structure
-CDEF2= -DSIGTYPE=void # Standard definition
-CDEF3= -UNO_SLEEP # Use the usleep function
-CDEF4= -DFNDELAY=O_NDELAY # Old name value
-CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)
-
-CFLAGS= $(RPM_OPT_FLAGS) $(CDEFS)
-
-INSTALL= install
-
-all: chat
-
-chat: chat.o
- $(CC) -o chat chat.o
-
-chat.o: chat.c
- $(CC) -c $(CFLAGS) -o chat.o chat.c
-
-install: chat
- mkdir -p $(BINDIR)
- $(INSTALL) -s -c chat $(BINDIR)
- $(INSTALL) -c -m 644 chat.8 $(MANDIR)/man8
-
-clean:
- rm -f chat.o chat *~
diff --git a/mdk-stage1/ppp/chat/Makefile.linux.makeopt b/mdk-stage1/ppp/chat/Makefile.linux.makeopt
deleted file mode 100644
index 974680a93..000000000
--- a/mdk-stage1/ppp/chat/Makefile.linux.makeopt
+++ /dev/null
@@ -1,27 +0,0 @@
-# $Id$
-
-CDEF1= -DTERMIOS # Use the termios structure
-CDEF2= -DSIGTYPE=void # Standard definition
-CDEF3= -UNO_SLEEP # Use the usleep function
-CDEF4= -DFNDELAY=O_NDELAY # Old name value
-CDEFS= $(CDEF1) $(CDEF2) $(CDEF3) $(CDEF4)
-
-CFLAGS= -O2 -g -pipe $(CDEFS)
-
-INSTALL= install
-
-all: chat
-
-chat: chat.o
- $(CC) -o chat chat.o
-
-chat.o: chat.c
- $(CC) -c $(CFLAGS) -o chat.o chat.c
-
-install: chat
- mkdir -p $(BINDIR)
- $(INSTALL) -s -c chat $(BINDIR)
- $(INSTALL) -c -m 644 chat.8 $(MANDIR)/man8
-
-clean:
- rm -f chat.o chat *~
diff --git a/mdk-stage1/ppp/chat/Makefile.sol2 b/mdk-stage1/ppp/chat/Makefile.sol2
deleted file mode 100644
index f566cc68b..000000000
--- a/mdk-stage1/ppp/chat/Makefile.sol2
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Makefile for chat on Solaris 2
-#
-
-include ../solaris/Makedefs
-
-CFLAGS = $(COPTS) -DNO_USLEEP -DSOL2
-
-all: chat
-
-chat: chat.o
- $(CC) -o chat chat.o
-
-install: chat
- $(INSTALL) -f $(BINDIR) chat
- $(INSTALL) -m 444 -f $(MANDIR)/man8 chat.8
-
-clean:
- rm -f *~ *.o chat
diff --git a/mdk-stage1/ppp/chat/Makefile.sunos4 b/mdk-stage1/ppp/chat/Makefile.sunos4
deleted file mode 100644
index b3507360e..000000000
--- a/mdk-stage1/ppp/chat/Makefile.sunos4
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Makefile for chat on suns
-#
-
-include ../sunos4/Makedefs
-
-CFLAGS = -DSUNOS $(COPTS)
-
-all: chat
-
-chat: chat.o
- $(CC) -o chat chat.o
-
-install: chat
- $(INSTALL) -c chat $(BINDIR)/chat
- $(INSTALL) -c -m 444 chat.8 $(MANDIR)/man8/chat.8
-
-clean:
- rm -f *~ *.o chat
diff --git a/mdk-stage1/ppp/chat/chat.8 b/mdk-stage1/ppp/chat/chat.8
deleted file mode 100644
index 8d2029609..000000000
--- a/mdk-stage1/ppp/chat/chat.8
+++ /dev/null
@@ -1,515 +0,0 @@
-.\" -*- nroff -*-
-.\" manual page [] for chat 1.8
-.\" $Id$
-.\" SH section heading
-.\" SS subsection heading
-.\" LP paragraph
-.\" IP indented paragraph
-.\" TP hanging label
-.TH CHAT 8 "22 May 1999" "Chat Version 1.22"
-.SH NAME
-chat \- Automated conversational script with a modem
-.SH SYNOPSIS
-.B chat
-[
-.I options
-]
-.I script
-.SH DESCRIPTION
-.LP
-The \fIchat\fR program defines a conversational exchange between the
-computer and the modem. Its primary purpose is to establish the
-connection between the Point-to-Point Protocol Daemon (\fIpppd\fR) and
-the remote's \fIpppd\fR process.
-.SH OPTIONS
-.TP
-.B -f \fI<chat file>
-Read the chat script from the chat \fIfile\fR. The use of this option
-is mutually exclusive with the chat script parameters. The user must
-have read access to the file. Multiple lines are permitted in the
-file. Space or horizontal tab characters should be used to separate
-the strings.
-.TP
-.B -t \fI<timeout>
-Set the timeout for the expected string to be received. If the string
-is not received within the time limit then the reply string is not
-sent. An alternate reply may be sent or the script will fail if there
-is no alternate reply string. A failed script will cause the
-\fIchat\fR program to terminate with a non-zero error code.
-.TP
-.B -r \fI<report file>
-Set the file for output of the report strings. If you use the keyword
-\fIREPORT\fR, the resulting strings are written to this file. If this
-option is not used and you still use \fIREPORT\fR keywords, the
-\fIstderr\fR file is used for the report strings.
-.TP
-.B -e
-Start with the echo option turned on. Echoing may also be turned on
-or off at specific points in the chat script by using the \fIECHO\fR
-keyword. When echoing is enabled, all output from the modem is echoed
-to \fIstderr\fR.
-.TP
-.B -E
-Enables environment variable substituion within chat scripts using the
-standard \fI$xxx\fR syntax.
-.TP
-.B -v
-Request that the \fIchat\fR script be executed in a verbose mode. The
-\fIchat\fR program will then log the execution state of the chat
-script as well as all text received from the modem and the output
-strings sent to the modem. The default is to log through the SYSLOG;
-the logging method may be altered with the -S and -s flags.
-.TP
-.B -V
-Request that the \fIchat\fR script be executed in a stderr verbose
-mode. The \fIchat\fR program will then log all text received from the
-modem and the output strings sent to the modem to the stderr device. This
-device is usually the local console at the station running the chat or
-pppd program.
-.TP
-.B -s
-Use stderr. All log messages from '-v' and all error messages will be
-sent to stderr.
-.TP
-.B -S
-Do not use the SYSLOG. By default, error messages are sent to the
-SYSLOG. The use of -S will prevent both log messages from '-v' and
-error messages from being sent to the SYSLOG.
-.TP
-.B -T \fI<phone number>
-Pass in an arbitary string, usually a phone number, that will be
-substituted for the \\T substitution metacharacter in a send string.
-.TP
-.B -U \fI<phone number 2>
-Pass in a second string, usually a phone number, that will be
-substituted for the \\U substitution metacharacter in a send string.
-This is useful when dialing an ISDN terminal adapter that requires two
-numbers.
-.TP
-.B script
-If the script is not specified in a file with the \fI-f\fR option then
-the script is included as parameters to the \fIchat\fR program.
-.SH CHAT SCRIPT
-.LP
-The \fIchat\fR script defines the communications.
-.LP
-A script consists of one or more "expect-send" pairs of strings,
-separated by spaces, with an optional "subexpect-subsend" string pair,
-separated by a dash as in the following example:
-.IP
-ogin:-BREAK-ogin: ppp ssword: hello2u2
-.LP
-This line indicates that the \fIchat\fR program should expect the string
-"ogin:". If it fails to receive a login prompt within the time interval
-allotted, it is to send a break sequence to the remote and then expect the
-string "ogin:". If the first "ogin:" is received then the break sequence is
-not generated.
-.LP
-Once it received the login prompt the \fIchat\fR program will send the
-string ppp and then expect the prompt "ssword:". When it receives the
-prompt for the password, it will send the password hello2u2.
-.LP
-A carriage return is normally sent following the reply string. It is not
-expected in the "expect" string unless it is specifically requested by using
-the \\r character sequence.
-.LP
-The expect sequence should contain only what is needed to identify the
-string. Since it is normally stored on a disk file, it should not contain
-variable information. It is generally not acceptable to look for time
-strings, network identification strings, or other variable pieces of data as
-an expect string.
-.LP
-To help correct for characters which may be corrupted during the initial
-sequence, look for the string "ogin:" rather than "login:". It is possible
-that the leading "l" character may be received in error and you may never
-find the string even though it was sent by the system. For this reason,
-scripts look for "ogin:" rather than "login:" and "ssword:" rather than
-"password:".
-.LP
-A very simple script might look like this:
-.IP
-ogin: ppp ssword: hello2u2
-.LP
-In other words, expect ....ogin:, send ppp, expect ...ssword:, send hello2u2.
-.LP
-In actual practice, simple scripts are rare. At the vary least, you
-should include sub-expect sequences should the original string not be
-received. For example, consider the following script:
-.IP
-ogin:--ogin: ppp ssword: hello2u2
-.LP
-This would be a better script than the simple one used earlier. This would look
-for the same login: prompt, however, if one was not received, a single
-return sequence is sent and then it will look for login: again. Should line
-noise obscure the first login prompt then sending the empty line will
-usually generate a login prompt again.
-.SH COMMENTS
-Comments can be embedded in the chat script. A comment is a line which
-starts with the \fB#\fR (hash) character in column 1. Such comment
-lines are just ignored by the chat program. If a '#' character is to
-be expected as the first character of the expect sequence, you should
-quote the expect string.
-If you want to wait for a prompt that starts with a # (hash)
-character, you would have to write something like this:
-.IP
-# Now wait for the prompt and send logout string
-.br
-\'# ' logout
-.LP
-
-.SH SENDING DATA FROM A FILE
-If the string to send starts with an at sign (@), the rest of the
-string is taken to be the name of a file to read to get the string to
-send. If the last character of the data read is a newline, it is
-removed. The file can be a named pipe (or fifo) instead of a regular
-file. This provides a way for \fBchat\fR to communicate with another
-program, for example, a program to prompt the user and receive a
-password typed in.
-.LP
-
-.SH ABORT STRINGS
-Many modems will report the status of the call as a string. These
-strings may be \fBCONNECTED\fR or \fBNO CARRIER\fR or \fBBUSY\fR. It
-is often desirable to terminate the script should the modem fail to
-connect to the remote. The difficulty is that a script would not know
-exactly which modem string it may receive. On one attempt, it may
-receive \fBBUSY\fR while the next time it may receive \fBNO CARRIER\fR.
-.LP
-These "abort" strings may be specified in the script using the \fIABORT\fR
-sequence. It is written in the script as in the following example:
-.IP
-ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT
-.LP
-This sequence will expect nothing; and then send the string ATZ. The
-expected response to this is the string \fIOK\fR. When it receives \fIOK\fR,
-the string ATDT5551212 to dial the telephone. The expected string is
-\fICONNECT\fR. If the string \fICONNECT\fR is received the remainder of the
-script is executed. However, should the modem find a busy telephone, it will
-send the string \fIBUSY\fR. This will cause the string to match the abort
-character sequence. The script will then fail because it found a match to
-the abort string. If it received the string \fINO CARRIER\fR, it will abort
-for the same reason. Either string may be received. Either string will
-terminate the \fIchat\fR script.
-.SH CLR_ABORT STRINGS
-This sequence allows for clearing previously set \fBABORT\fR strings.
-\fBABORT\fR strings are kept in an array of a pre-determined size (at
-compilation time); \fBCLR_ABORT\fR will reclaim the space for cleared
-entries so that new strings can use that space.
-.SH SAY STRINGS
-The \fBSAY\fR directive allows the script to send strings to the user
-at the terminal via standard error. If \fBchat\fR is being run by
-pppd, and pppd is running as a daemon (detached from its controlling
-terminal), standard error will normally be redirected to the file
-/etc/ppp/connect-errors.
-.LP
-\fBSAY\fR strings must be enclosed in single or double quotes. If
-carriage return and line feed are needed in the string to be output,
-you must explicitely add them to your string.
-.LP
-The SAY strings could be used to give progress messages in sections of
-the script where you want to have 'ECHO OFF' but still let the user
-know what is happening. An example is:
-.IP
-ABORT BUSY
-.br
-ECHO OFF
-.br
-SAY "Dialling your ISP...\\n"
-.br
-\'' ATDT5551212
-.br
-TIMEOUT 120
-.br
-SAY "Waiting up to 2 minutes for connection ... "
-.br
-CONNECT ''
-.br
-SAY "Connected, now logging in ...\n"
-.br
-ogin: account
-.br
-ssword: pass
-.br
-$ \c
-SAY "Logged in OK ...\n"
-\fIetc ...\fR
-.LP
-This sequence will only present the SAY strings to the user and all
-the details of the script will remain hidden. For example, if the
-above script works, the user will see:
-.IP
-Dialling your ISP...
-.br
-Waiting up to 2 minutes for connection ... Connected, now logging in ...
-.br
-Logged in OK ...
-.LP
-
-.SH REPORT STRINGS
-A \fBreport\fR string is similar to the ABORT string. The difference
-is that the strings, and all characters to the next control character
-such as a carriage return, are written to the report file.
-.LP
-The report strings may be used to isolate the transmission rate of the
-modem's connect string and return the value to the chat user. The
-analysis of the report string logic occurs in conjunction with the
-other string processing such as looking for the expect string. The use
-of the same string for a report and abort sequence is probably not
-very useful, however, it is possible.
-.LP
-The report strings to no change the completion code of the program.
-.LP
-These "report" strings may be specified in the script using the \fIREPORT\fR
-sequence. It is written in the script as in the following example:
-.IP
-REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account
-.LP
-This sequence will expect nothing; and then send the string
-ATDT5551212 to dial the telephone. The expected string is
-\fICONNECT\fR. If the string \fICONNECT\fR is received the remainder
-of the script is executed. In addition the program will write to the
-expect-file the string "CONNECT" plus any characters which follow it
-such as the connection rate.
-.SH CLR_REPORT STRINGS
-This sequence allows for clearing previously set \fBREPORT\fR strings.
-\fBREPORT\fR strings are kept in an array of a pre-determined size (at
-compilation time); \fBCLR_REPORT\fR will reclaim the space for cleared
-entries so that new strings can use that space.
-.SH ECHO
-The echo options controls whether the output from the modem is echoed
-to \fIstderr\fR. This option may be set with the \fI-e\fR option, but
-it can also be controlled by the \fIECHO\fR keyword. The "expect-send"
-pair \fIECHO\fR \fION\fR enables echoing, and \fIECHO\fR \fIOFF\fR
-disables it. With this keyword you can select which parts of the
-conversation should be visible. For instance, with the following
-script:
-.IP
-ABORT 'BUSY'
-.br
-ABORT 'NO CARRIER'
-.br
-'' ATZ
-.br
-OK\\r\\n ATD1234567
-.br
-\\r\\n \\c
-.br
-ECHO ON
-.br
-CONNECT \\c
-.br
-ogin: account
-.LP
-all output resulting from modem configuration and dialing is not visible,
-but starting with the \fICONNECT\fR (or \fIBUSY\fR) message, everything
-will be echoed.
-.SH HANGUP
-The HANGUP options control whether a modem hangup should be considered
-as an error or not. This option is useful in scripts for dialling
-systems which will hang up and call your system back. The HANGUP
-options can be \fBON\fR or \fBOFF\fR.
-.br
-When HANGUP is set OFF and the modem hangs up (e.g., after the first
-stage of logging in to a callback system), \fBchat\fR will continue
-running the script (e.g., waiting for the incoming call and second
-stage login prompt). As soon as the incoming call is connected, you
-should use the \fBHANGUP ON\fR directive to reinstall normal hang up
-signal behavior. Here is an (simple) example script:
-.IP
-ABORT 'BUSY'
-.br
-'' ATZ
-.br
-OK\\r\\n ATD1234567
-.br
-\\r\\n \\c
-.br
-CONNECT \\c
-.br
-\'Callback login:' call_back_ID
-.br
-HANGUP OFF
-.br
-ABORT "Bad Login"
-.br
-\'Callback Password:' Call_back_password
-.br
-TIMEOUT 120
-.br
-CONNECT \\c
-.br
-HANGUP ON
-.br
-ABORT "NO CARRIER"
-.br
-ogin:--BREAK--ogin: real_account
-.br
-\fIetc ...\fR
-.LP
-.SH TIMEOUT
-The initial timeout value is 45 seconds. This may be changed using the \fB-t\fR
-parameter.
-.LP
-To change the timeout value for the next expect string, the following
-example may be used:
-.IP
-ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2
-.LP
-This will change the timeout to 10 seconds when it expects the login:
-prompt. The timeout is then changed to 5 seconds when it looks for the
-password prompt.
-.LP
-The timeout, once changed, remains in effect until it is changed again.
-.SH SENDING EOT
-The special reply string of \fIEOT\fR indicates that the chat program
-should send an EOT character to the remote. This is normally the
-End-of-file character sequence. A return character is not sent
-following the EOT.
-.PR
-The EOT sequence may be embedded into the send string using the
-sequence \fI^D\fR.
-.SH GENERATING BREAK
-The special reply string of \fIBREAK\fR will cause a break condition
-to be sent. The break is a special signal on the transmitter. The
-normal processing on the receiver is to change the transmission rate.
-It may be used to cycle through the available transmission rates on
-the remote until you are able to receive a valid login prompt.
-.PR
-The break sequence may be embedded into the send string using the
-\fI\\K\fR sequence.
-.SH ESCAPE SEQUENCES
-The expect and reply strings may contain escape sequences. All of the
-sequences are legal in the reply string. Many are legal in the expect.
-Those which are not valid in the expect sequence are so indicated.
-.TP
-.B ''
-Expects or sends a null string. If you send a null string then it will still
-send the return character. This sequence may either be a pair of apostrophe
-or quote characters.
-.TP
-.B \\\\b
-represents a backspace character.
-.TP
-.B \\\\c
-Suppresses the newline at the end of the reply string. This is the only
-method to send a string without a trailing return character. It must
-be at the end of the send string. For example,
-the sequence hello\\c will simply send the characters h, e, l, l, o.
-.I (not valid in expect.)
-.TP
-.B \\\\d
-Delay for one second. The program uses sleep(1) which will delay to a
-maximum of one second.
-.I (not valid in expect.)
-.TP
-.B \\\\K
-Insert a BREAK
-.I (not valid in expect.)
-.TP
-.B \\\\n
-Send a newline or linefeed character.
-.TP
-.B \\\\N
-Send a null character. The same sequence may be represented by \\0.
-.I (not valid in expect.)
-.TP
-.B \\\\p
-Pause for a fraction of a second. The delay is 1/10th of a second.
-.I (not valid in expect.)
-.TP
-.B \\\\q
-Suppress writing the string to the SYSLOG file. The string ?????? is
-written to the log in its place.
-.I (not valid in expect.)
-.TP
-.B \\\\r
-Send or expect a carriage return.
-.TP
-.B \\\\s
-Represents a space character in the string. This may be used when it
-is not desirable to quote the strings which contains spaces. The
-sequence 'HI TIM' and HI\\sTIM are the same.
-.TP
-.B \\\\t
-Send or expect a tab character.
-.TP
-.B \\\\T
-Send the phone number string as specified with the \fI-T\fR option
-.I (not valid in expect.)
-.TP
-.B \\\\U
-Send the phone number 2 string as specified with the \fI-U\fR option
-.I (not valid in expect.)
-.TP
-.B \\\\\\\\
-Send or expect a backslash character.
-.TP
-.B \\\\ddd
-Collapse the octal digits (ddd) into a single ASCII character and send that
-character.
-.I (some characters are not valid in expect.)
-.TP
-.B \^^C
-Substitute the sequence with the control character represented by C.
-For example, the character DC1 (17) is shown as \^^Q.
-.I (some characters are not valid in expect.)
-.SH ENVIRONMENT VARIABLES
-Environment variables are available within chat scripts, if the \fI-E\fR
-option was specified in the command line. The metacharacter \fI$\fR is used
-to introduce the name of the environment variable to substitute. If the
-substition fails, because the requested environment variable is not set,
-\fInothing\fR is replaced for the variable.
-.SH TERMINATION CODES
-The \fIchat\fR program will terminate with the following completion
-codes.
-.TP
-.B 0
-The normal termination of the program. This indicates that the script
-was executed without error to the normal conclusion.
-.TP
-.B 1
-One or more of the parameters are invalid or an expect string was too
-large for the internal buffers. This indicates that the program as not
-properly executed.
-.TP
-.B 2
-An error occurred during the execution of the program. This may be due
-to a read or write operation failing for some reason or chat receiving
-a signal such as SIGINT.
-.TP
-.B 3
-A timeout event occurred when there was an \fIexpect\fR string without
-having a "-subsend" string. This may mean that you did not program the
-script correctly for the condition or that some unexpected event has
-occurred and the expected string could not be found.
-.TP
-.B 4
-The first string marked as an \fIABORT\fR condition occurred.
-.TP
-.B 5
-The second string marked as an \fIABORT\fR condition occurred.
-.TP
-.B 6
-The third string marked as an \fIABORT\fR condition occurred.
-.TP
-.B 7
-The fourth string marked as an \fIABORT\fR condition occurred.
-.TP
-.B ...
-The other termination codes are also strings marked as an \fIABORT\fR
-condition.
-.LP
-Using the termination code, it is possible to determine which event
-terminated the script. It is possible to decide if the string "BUSY"
-was received from the modem as opposed to "NO DIAL TONE". While the
-first event may be retried, the second will probably have little
-chance of succeeding during a retry.
-.SH SEE ALSO
-Additional information about \fIchat\fR scripts may be found with UUCP
-documentation. The \fIchat\fR script was taken from the ideas proposed
-by the scripts used by the \fIuucico\fR program.
-.LP
-uucico(1), uucp(1)
-.SH COPYRIGHT
-The \fIchat\fR program is in public domain. This is not the GNU public
-license. If it breaks then you get to keep both pieces.
diff --git a/mdk-stage1/ppp/chat/chat.c b/mdk-stage1/ppp/chat/chat.c
deleted file mode 100644
index 1b22907a8..000000000
--- a/mdk-stage1/ppp/chat/chat.c
+++ /dev/null
@@ -1,1756 +0,0 @@
-/*
- * Chat -- a program for automatic session establishment (i.e. dial
- * the phone and log in).
- *
- * Standard termination codes:
- * 0 - successful completion of the script
- * 1 - invalid argument, expect string too large, etc.
- * 2 - error on an I/O operation or fatal error condition.
- * 3 - timeout waiting for a simple string.
- * 4 - the first string declared as "ABORT"
- * 5 - the second string declared as "ABORT"
- * 6 - ... and so on for successive ABORT strings.
- *
- * This software is in the public domain.
- *
- * -----------------
- * 22-May-99 added environment substitutuion, enabled with -E switch.
- * Andreas Arens <andras@cityweb.de>.
- *
- * 12-May-99 added a feature to read data to be sent from a file,
- * if the send string starts with @. Idea from gpk <gpk@onramp.net>.
- *
- * added -T and -U option and \T and \U substitution to pass a phone
- * number into chat script. Two are needed for some ISDN TA applications.
- * Keith Dart <kdart@cisco.com>
- *
- *
- * Added SAY keyword to send output to stderr.
- * This allows to turn ECHO OFF and to output specific, user selected,
- * text to give progress messages. This best works when stderr
- * exists (i.e.: pppd in nodetach mode).
- *
- * Added HANGUP directives to allow for us to be called
- * back. When HANGUP is set to NO, chat will not hangup at HUP signal.
- * We rely on timeouts in that case.
- *
- * Added CLR_ABORT to clear previously set ABORT string. This has been
- * dictated by the HANGUP above as "NO CARRIER" (for example) must be
- * an ABORT condition until we know the other host is going to close
- * the connection for call back. As soon as we have completed the
- * first stage of the call back sequence, "NO CARRIER" is a valid, non
- * fatal string. As soon as we got called back (probably get "CONNECT"),
- * we should re-arm the ABORT "NO CARRIER". Hence the CLR_ABORT command.
- * Note that CLR_ABORT packs the abort_strings[] array so that we do not
- * have unused entries not being reclaimed.
- *
- * In the same vein as above, added CLR_REPORT keyword.
- *
- * Allow for comments. Line starting with '#' are comments and are
- * ignored. If a '#' is to be expected as the first character, the
- * expect string must be quoted.
- *
- *
- * Francis Demierre <Francis@SwissMail.Com>
- * Thu May 15 17:15:40 MET DST 1997
- *
- *
- * Added -r "report file" switch & REPORT keyword.
- * Robert Geer <bgeer@xmission.com>
- *
- * Added -s "use stderr" and -S "don't use syslog" switches.
- * June 18, 1997
- * Karl O. Pinc <kop@meme.com>
- *
- *
- * Added -e "echo" switch & ECHO keyword
- * Dick Streefland <dicks@tasking.nl>
- *
- *
- * Considerable updates and modifications by
- * Al Longyear <longyear@pobox.com>
- * Paul Mackerras <paulus@cs.anu.edu.au>
- *
- *
- * The original author is:
- *
- * Karl Fox <karl@MorningStar.Com>
- * Morning Star Technologies, Inc.
- * 1760 Zollinger Road
- * Columbus, OH 43221
- * (614)451-1883
- *
- */
-
-#ifndef __STDC__
-#define const
-#endif
-
-#ifndef lint
-static const char rcsid[] = "$Id$";
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <time.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <syslog.h>
-
-#ifndef TERMIO
-#undef TERMIOS
-#define TERMIOS
-#endif
-
-#ifdef TERMIO
-#include <termio.h>
-#endif
-#ifdef TERMIOS
-#include <termios.h>
-#endif
-
-#define STR_LEN 1024
-
-#ifndef SIGTYPE
-#define SIGTYPE void
-#endif
-
-#undef __P
-#undef __V
-
-#ifdef __STDC__
-#include <stdarg.h>
-#define __V(x) x
-#define __P(x) x
-#else
-#include <varargs.h>
-#define __V(x) (va_alist) va_dcl
-#define __P(x) ()
-#define const
-#endif
-
-#ifndef O_NONBLOCK
-#define O_NONBLOCK O_NDELAY
-#endif
-
-#ifdef SUNOS
-extern int sys_nerr;
-extern char *sys_errlist[];
-#define memmove(to, from, n) bcopy(from, to, n)
-#define strerror(n) ((unsigned)(n) < sys_nerr? sys_errlist[(n)] :\
- "unknown error")
-#endif
-
-/*************** Micro getopt() *********************************************/
-#define OPTION(c,v) (_O&2&&**v?*(*v)++:!c||_O&4?0:(!(_O&1)&& \
- (--c,++v),_O=4,c&&**v=='-'&&v[0][1]?*++*v=='-'\
- &&!v[0][1]?(--c,++v,0):(_O=2,*(*v)++):0))
-#define OPTARG(c,v) (_O&2?**v||(++v,--c)?(_O=1,--c,*v++): \
- (_O=4,(char*)0):(char*)0)
-#define OPTONLYARG(c,v) (_O&2&&**v?(_O=1,--c,*v++):(char*)0)
-#define ARG(c,v) (c?(--c,*v++):(char*)0)
-
-static int _O = 0; /* Internal state */
-/*************** Micro getopt() *********************************************/
-
-char *program_name;
-
-#define MAX_ABORTS 50
-#define MAX_REPORTS 50
-#define DEFAULT_CHAT_TIMEOUT 45
-
-int echo = 0;
-int verbose = 0;
-int to_log = 1;
-int to_stderr = 0;
-int Verbose = 0;
-int quiet = 0;
-int report = 0;
-int use_env = 0;
-int exit_code = 0;
-FILE* report_fp = (FILE *) 0;
-char *report_file = (char *) 0;
-char *chat_file = (char *) 0;
-char *phone_num = (char *) 0;
-char *phone_num2 = (char *) 0;
-int timeout = DEFAULT_CHAT_TIMEOUT;
-
-int have_tty_parameters = 0;
-
-#ifdef TERMIO
-#define term_parms struct termio
-#define get_term_param(param) ioctl(0, TCGETA, param)
-#define set_term_param(param) ioctl(0, TCSETA, param)
-struct termio saved_tty_parameters;
-#endif
-
-#ifdef TERMIOS
-#define term_parms struct termios
-#define get_term_param(param) tcgetattr(0, param)
-#define set_term_param(param) tcsetattr(0, TCSANOW, param)
-struct termios saved_tty_parameters;
-#endif
-
-char *abort_string[MAX_ABORTS], *fail_reason = (char *)0,
- fail_buffer[50];
-int n_aborts = 0, abort_next = 0, timeout_next = 0, echo_next = 0;
-int clear_abort_next = 0;
-
-char *report_string[MAX_REPORTS] ;
-char report_buffer[50] ;
-int n_reports = 0, report_next = 0, report_gathering = 0 ;
-int clear_report_next = 0;
-
-int say_next = 0, hup_next = 0;
-
-void *dup_mem __P((void *b, size_t c));
-void *copy_of __P((char *s));
-void usage __P((void));
-void logf __P((const char *fmt, ...));
-void fatal __P((int code, const char *fmt, ...));
-SIGTYPE sigalrm __P((int signo));
-SIGTYPE sigint __P((int signo));
-SIGTYPE sigterm __P((int signo));
-SIGTYPE sighup __P((int signo));
-void unalarm __P((void));
-void init __P((void));
-void set_tty_parameters __P((void));
-void echo_stderr __P((int));
-void break_sequence __P((void));
-void terminate __P((int status));
-void do_file __P((char *chat_file));
-int get_string __P((register char *string));
-int put_string __P((register char *s));
-int write_char __P((int c));
-int put_char __P((int c));
-int get_char __P((void));
-void chat_send __P((register char *s));
-char *character __P((int c));
-void chat_expect __P((register char *s));
-char *clean __P((register char *s, int sending));
-void break_sequence __P((void));
-void terminate __P((int status));
-void pack_array __P((char **array, int end));
-char *expect_strtok __P((char *, char *));
-int vfmtmsg __P((char *, int, const char *, va_list)); /* vsprintf++ */
-
-int main __P((int, char *[]));
-
-void *dup_mem(b, c)
-void *b;
-size_t c;
-{
- void *ans = malloc (c);
- if (!ans)
- fatal(2, "memory error!");
-
- memcpy (ans, b, c);
- return ans;
-}
-
-void *copy_of (s)
-char *s;
-{
- return dup_mem (s, strlen (s) + 1);
-}
-
-/*
- * chat [ -v ] [ -E ] [ -T number ] [ -U number ] [ -t timeout ] [ -f chat-file ] \
- * [ -r report-file ] \
- * [...[[expect[-say[-expect...]] say expect[-say[-expect]] ...]]]
- *
- * Perform a UUCP-dialer-like chat script on stdin and stdout.
- */
-int
-main(argc, argv)
- int argc;
- char **argv;
-{
- int option;
- char *arg;
-
- program_name = *argv;
- tzset();
-
- while ((option = OPTION(argc, argv)) != 0) {
- switch (option) {
- case 'e':
- ++echo;
- break;
-
- case 'E':
- ++use_env;
- break;
-
- case 'v':
- ++verbose;
- break;
-
- case 'V':
- ++Verbose;
- break;
-
- case 's':
- ++to_stderr;
- break;
-
- case 'S':
- to_log = 0;
- break;
-
- case 'f':
- if ((arg = OPTARG(argc, argv)) != NULL)
- chat_file = copy_of(arg);
- else
- usage();
- break;
-
- case 't':
- if ((arg = OPTARG(argc, argv)) != NULL)
- timeout = atoi(arg);
- else
- usage();
- break;
-
- case 'r':
- arg = OPTARG (argc, argv);
- if (arg) {
- if (report_fp != NULL)
- fclose (report_fp);
- report_file = copy_of (arg);
- report_fp = fopen (report_file, "a");
- if (report_fp != NULL) {
- if (verbose)
- fprintf (report_fp, "Opening \"%s\"...\n",
- report_file);
- report = 1;
- }
- }
- break;
-
- case 'T':
- if ((arg = OPTARG(argc, argv)) != NULL)
- phone_num = copy_of(arg);
- else
- usage();
- break;
-
- case 'U':
- if ((arg = OPTARG(argc, argv)) != NULL)
- phone_num2 = copy_of(arg);
- else
- usage();
- break;
-
- default:
- usage();
- break;
- }
- }
-/*
- * Default the report file to the stderr location
- */
- if (report_fp == NULL)
- report_fp = stderr;
-
- if (to_log) {
-#ifdef ultrix
- openlog("chat", LOG_PID);
-#else
- openlog("chat", LOG_PID | LOG_NDELAY, LOG_LOCAL2);
-
- if (verbose)
- setlogmask(LOG_UPTO(LOG_INFO));
- else
- setlogmask(LOG_UPTO(LOG_WARNING));
-#endif
- }
-
- init();
-
- if (chat_file != NULL) {
- arg = ARG(argc, argv);
- if (arg != NULL)
- usage();
- else
- do_file (chat_file);
- } else {
- while ((arg = ARG(argc, argv)) != NULL) {
- chat_expect(arg);
-
- if ((arg = ARG(argc, argv)) != NULL)
- chat_send(arg);
- }
- }
-
- terminate(0);
- return 0;
-}
-
-/*
- * Process a chat script when read from a file.
- */
-
-void do_file (chat_file)
-char *chat_file;
-{
- int linect, sendflg;
- char *sp, *arg, quote;
- char buf [STR_LEN];
- FILE *cfp;
-
- cfp = fopen (chat_file, "r");
- if (cfp == NULL)
- fatal(1, "%s -- open failed: %m", chat_file);
-
- linect = 0;
- sendflg = 0;
-
- while (fgets(buf, STR_LEN, cfp) != NULL) {
- sp = strchr (buf, '\n');
- if (sp)
- *sp = '\0';
-
- linect++;
- sp = buf;
-
- /* lines starting with '#' are comments. If a real '#'
- is to be expected, it should be quoted .... */
- if ( *sp == '#' )
- continue;
-
- while (*sp != '\0') {
- if (*sp == ' ' || *sp == '\t') {
- ++sp;
- continue;
- }
-
- if (*sp == '"' || *sp == '\'') {
- quote = *sp++;
- arg = sp;
- while (*sp != quote) {
- if (*sp == '\0')
- fatal(1, "unterminated quote (line %d)", linect);
-
- if (*sp++ == '\\') {
- if (*sp != '\0')
- ++sp;
- }
- }
- }
- else {
- arg = sp;
- while (*sp != '\0' && *sp != ' ' && *sp != '\t')
- ++sp;
- }
-
- if (*sp != '\0')
- *sp++ = '\0';
-
- if (sendflg)
- chat_send (arg);
- else
- chat_expect (arg);
- sendflg = !sendflg;
- }
- }
- fclose (cfp);
-}
-
-/*
- * We got an error parsing the command line.
- */
-void usage()
-{
- fprintf(stderr, "\
-Usage: %s [-e] [-E] [-v] [-V] [-t timeout] [-r report-file]\n\
- [-T phone-number] [-U phone-number2] {-f chat-file | chat-script}\n", program_name);
- exit(1);
-}
-
-char line[1024];
-
-/*
- * Send a message to syslog and/or stderr.
- */
-void logf __V((const char *fmt, ...))
-{
- va_list args;
-
-#ifdef __STDC__
- va_start(args, fmt);
-#else
- char *fmt;
- va_start(args);
- fmt = va_arg(args, char *);
-#endif
-
- vfmtmsg(line, sizeof(line), fmt, args);
- if (to_log)
- syslog(LOG_INFO, "%s", line);
- if (to_stderr)
- fprintf(stderr, "%s\n", line);
-}
-
-/*
- * Print an error message and terminate.
- */
-
-void fatal __V((int code, const char *fmt, ...))
-{
- va_list args;
-
-#ifdef __STDC__
- va_start(args, fmt);
-#else
- int code;
- char *fmt;
- va_start(args);
- code = va_arg(args, int);
- fmt = va_arg(args, char *);
-#endif
-
- vfmtmsg(line, sizeof(line), fmt, args);
- if (to_log)
- syslog(LOG_ERR, "%s", line);
- if (to_stderr)
- fprintf(stderr, "%s\n", line);
- terminate(code);
-}
-
-int alarmed = 0;
-
-SIGTYPE sigalrm(signo)
-int signo;
-{
- int flags;
-
- alarm(1);
- alarmed = 1; /* Reset alarm to avoid race window */
- signal(SIGALRM, sigalrm); /* that can cause hanging in read() */
-
- if ((flags = fcntl(0, F_GETFL, 0)) == -1)
- fatal(2, "Can't get file mode flags on stdin: %m");
-
- if (fcntl(0, F_SETFL, flags | O_NONBLOCK) == -1)
- fatal(2, "Can't set file mode flags on stdin: %m");
-
- if (verbose)
- logf("alarm");
-}
-
-void unalarm()
-{
- int flags;
-
- if ((flags = fcntl(0, F_GETFL, 0)) == -1)
- fatal(2, "Can't get file mode flags on stdin: %m");
-
- if (fcntl(0, F_SETFL, flags & ~O_NONBLOCK) == -1)
- fatal(2, "Can't set file mode flags on stdin: %m");
-}
-
-SIGTYPE sigint(signo)
-int signo;
-{
- fatal(2, "SIGINT");
-}
-
-SIGTYPE sigterm(signo)
-int signo;
-{
- fatal(2, "SIGTERM");
-}
-
-SIGTYPE sighup(signo)
-int signo;
-{
- fatal(2, "SIGHUP");
-}
-
-void init()
-{
- signal(SIGINT, sigint);
- signal(SIGTERM, sigterm);
- signal(SIGHUP, sighup);
-
- set_tty_parameters();
- signal(SIGALRM, sigalrm);
- alarm(0);
- alarmed = 0;
-}
-
-void set_tty_parameters()
-{
-#if defined(get_term_param)
- term_parms t;
-
- if (get_term_param (&t) < 0)
- fatal(2, "Can't get terminal parameters: %m");
-
- saved_tty_parameters = t;
- have_tty_parameters = 1;
-
- t.c_iflag |= IGNBRK | ISTRIP | IGNPAR;
- t.c_oflag = 0;
- t.c_lflag = 0;
- t.c_cc[VERASE] =
- t.c_cc[VKILL] = 0;
- t.c_cc[VMIN] = 1;
- t.c_cc[VTIME] = 0;
-
- if (set_term_param (&t) < 0)
- fatal(2, "Can't set terminal parameters: %m");
-#endif
-}
-
-void break_sequence()
-{
-#ifdef TERMIOS
- tcsendbreak (0, 0);
-#endif
-}
-
-void terminate(status)
-int status;
-{
- static int terminating = 0;
-
- if (terminating)
- exit(status);
- terminating = 1;
- echo_stderr(-1);
-/*
- * Allow the last of the report string to be gathered before we terminate.
- */
- if (report_gathering) {
- int c, rep_len;
-
- rep_len = strlen(report_buffer);
- while (rep_len + 1 <= sizeof(report_buffer)) {
- alarm(1);
- c = get_char();
- alarm(0);
- if (c < 0 || iscntrl(c))
- break;
- report_buffer[rep_len] = c;
- ++rep_len;
- }
- report_buffer[rep_len] = 0;
- fprintf (report_fp, "chat: %s\n", report_buffer);
- }
- if (report_file != (char *) 0 && report_fp != (FILE *) NULL) {
- if (verbose)
- fprintf (report_fp, "Closing \"%s\".\n", report_file);
- fclose (report_fp);
- report_fp = (FILE *) NULL;
- }
-
-#if defined(get_term_param)
- if (have_tty_parameters) {
- if (set_term_param (&saved_tty_parameters) < 0)
- fatal(2, "Can't restore terminal parameters: %m");
- }
-#endif
-
- exit(status);
-}
-
-/*
- * 'Clean up' this string.
- */
-char *clean(s, sending)
-register char *s;
-int sending; /* set to 1 when sending (putting) this string. */
-{
- char temp[STR_LEN], env_str[STR_LEN], cur_chr;
- register char *s1, *phchar;
- int add_return = sending;
-#define isoctal(chr) (((chr) >= '0') && ((chr) <= '7'))
-#define isalnumx(chr) ((((chr) >= '0') && ((chr) <= '9')) \
- || (((chr) >= 'a') && ((chr) <= 'z')) \
- || (((chr) >= 'A') && ((chr) <= 'Z')) \
- || (chr) == '_')
-
- s1 = temp;
- while (*s) {
- cur_chr = *s++;
- if (cur_chr == '^') {
- cur_chr = *s++;
- if (cur_chr == '\0') {
- *s1++ = '^';
- break;
- }
- cur_chr &= 0x1F;
- if (cur_chr != 0) {
- *s1++ = cur_chr;
- }
- continue;
- }
-
- if (use_env && cur_chr == '$') { /* ARI */
- phchar = env_str;
- while (isalnumx(*s))
- *phchar++ = *s++;
- *phchar = '\0';
- phchar = getenv(env_str);
- if (phchar)
- while (*phchar)
- *s1++ = *phchar++;
- continue;
- }
-
- if (cur_chr != '\\') {
- *s1++ = cur_chr;
- continue;
- }
-
- cur_chr = *s++;
- if (cur_chr == '\0') {
- if (sending) {
- *s1++ = '\\';
- *s1++ = '\\';
- }
- break;
- }
-
- switch (cur_chr) {
- case 'b':
- *s1++ = '\b';
- break;
-
- case 'c':
- if (sending && *s == '\0')
- add_return = 0;
- else
- *s1++ = cur_chr;
- break;
-
- case '\\':
- case 'K':
- case 'p':
- case 'd':
- if (sending)
- *s1++ = '\\';
- *s1++ = cur_chr;
- break;
-
- case 'T':
- if (sending && phone_num) {
- for (phchar = phone_num; *phchar != '\0'; phchar++)
- *s1++ = *phchar;
- }
- else {
- *s1++ = '\\';
- *s1++ = 'T';
- }
- break;
-
- case 'U':
- if (sending && phone_num2) {
- for (phchar = phone_num2; *phchar != '\0'; phchar++)
- *s1++ = *phchar;
- }
- else {
- *s1++ = '\\';
- *s1++ = 'U';
- }
- break;
-
- case 'q':
- quiet = 1;
- break;
-
- case 'r':
- *s1++ = '\r';
- break;
-
- case 'n':
- *s1++ = '\n';
- break;
-
- case 's':
- *s1++ = ' ';
- break;
-
- case 't':
- *s1++ = '\t';
- break;
-
- case 'N':
- if (sending) {
- *s1++ = '\\';
- *s1++ = '\0';
- }
- else
- *s1++ = 'N';
- break;
-
- case '$': /* ARI */
- if (use_env) {
- *s1++ = cur_chr;
- break;
- }
- /* FALL THROUGH */
-
- default:
- if (isoctal (cur_chr)) {
- cur_chr &= 0x07;
- if (isoctal (*s)) {
- cur_chr <<= 3;
- cur_chr |= *s++ - '0';
- if (isoctal (*s)) {
- cur_chr <<= 3;
- cur_chr |= *s++ - '0';
- }
- }
-
- if (cur_chr != 0 || sending) {
- if (sending && (cur_chr == '\\' || cur_chr == 0))
- *s1++ = '\\';
- *s1++ = cur_chr;
- }
- break;
- }
-
- if (sending)
- *s1++ = '\\';
- *s1++ = cur_chr;
- break;
- }
- }
-
- if (add_return)
- *s1++ = '\r';
-
- *s1++ = '\0'; /* guarantee closure */
- *s1++ = '\0'; /* terminate the string */
- return dup_mem (temp, (size_t) (s1 - temp)); /* may have embedded nuls */
-}
-
-/*
- * A modified version of 'strtok'. This version skips \ sequences.
- */
-
-char *expect_strtok (s, term)
- char *s, *term;
-{
- static char *str = "";
- int escape_flag = 0;
- char *result;
-
-/*
- * If a string was specified then do initial processing.
- */
- if (s)
- str = s;
-
-/*
- * If this is the escape flag then reset it and ignore the character.
- */
- if (*str)
- result = str;
- else
- result = (char *) 0;
-
- while (*str) {
- if (escape_flag) {
- escape_flag = 0;
- ++str;
- continue;
- }
-
- if (*str == '\\') {
- ++str;
- escape_flag = 1;
- continue;
- }
-
-/*
- * If this is not in the termination string, continue.
- */
- if (strchr (term, *str) == (char *) 0) {
- ++str;
- continue;
- }
-
-/*
- * This is the terminator. Mark the end of the string and stop.
- */
- *str++ = '\0';
- break;
- }
- return (result);
-}
-
-/*
- * Process the expect string
- */
-
-void chat_expect (s)
-char *s;
-{
- char *expect;
- char *reply;
-
- if (strcmp(s, "HANGUP") == 0) {
- ++hup_next;
- return;
- }
-
- if (strcmp(s, "ABORT") == 0) {
- ++abort_next;
- return;
- }
-
- if (strcmp(s, "CLR_ABORT") == 0) {
- ++clear_abort_next;
- return;
- }
-
- if (strcmp(s, "REPORT") == 0) {
- ++report_next;
- return;
- }
-
- if (strcmp(s, "CLR_REPORT") == 0) {
- ++clear_report_next;
- return;
- }
-
- if (strcmp(s, "TIMEOUT") == 0) {
- ++timeout_next;
- return;
- }
-
- if (strcmp(s, "ECHO") == 0) {
- ++echo_next;
- return;
- }
-
- if (strcmp(s, "SAY") == 0) {
- ++say_next;
- return;
- }
-
-/*
- * Fetch the expect and reply string.
- */
- for (;;) {
- expect = expect_strtok (s, "-");
- s = (char *) 0;
-
- if (expect == (char *) 0)
- return;
-
- reply = expect_strtok (s, "-");
-
-/*
- * Handle the expect string. If successful then exit.
- */
- if (get_string (expect))
- return;
-
-/*
- * If there is a sub-reply string then send it. Otherwise any condition
- * is terminal.
- */
- if (reply == (char *) 0 || exit_code != 3)
- break;
-
- chat_send (reply);
- }
-
-/*
- * The expectation did not occur. This is terminal.
- */
- if (fail_reason)
- logf("Failed (%s)", fail_reason);
- else
- logf("Failed");
- terminate(exit_code);
-}
-
-/*
- * Translate the input character to the appropriate string for printing
- * the data.
- */
-
-char *character(c)
-int c;
-{
- static char string[10];
- char *meta;
-
- meta = (c & 0x80) ? "M-" : "";
- c &= 0x7F;
-
- if (c < 32)
- sprintf(string, "%s^%c", meta, (int)c + '@');
- else if (c == 127)
- sprintf(string, "%s^?", meta);
- else
- sprintf(string, "%s%c", meta, c);
-
- return (string);
-}
-
-/*
- * process the reply string
- */
-void chat_send (s)
-register char *s;
-{
- char file_data[STR_LEN];
-
- if (say_next) {
- say_next = 0;
- s = clean(s, 1);
- write(2, s, strlen(s));
- free(s);
- return;
- }
-
- if (hup_next) {
- hup_next = 0;
- if (strcmp(s, "OFF") == 0)
- signal(SIGHUP, SIG_IGN);
- else
- signal(SIGHUP, sighup);
- return;
- }
-
- if (echo_next) {
- echo_next = 0;
- echo = (strcmp(s, "ON") == 0);
- return;
- }
-
- if (abort_next) {
- char *s1;
-
- abort_next = 0;
-
- if (n_aborts >= MAX_ABORTS)
- fatal(2, "Too many ABORT strings");
-
- s1 = clean(s, 0);
-
- if (strlen(s1) > strlen(s)
- || strlen(s1) + 1 > sizeof(fail_buffer))
- fatal(1, "Illegal or too-long ABORT string ('%v')", s);
-
- abort_string[n_aborts++] = s1;
-
- if (verbose)
- logf("abort on (%v)", s);
- return;
- }
-
- if (clear_abort_next) {
- char *s1;
- int i;
- int old_max;
- int pack = 0;
-
- clear_abort_next = 0;
-
- s1 = clean(s, 0);
-
- if (strlen(s1) > strlen(s)
- || strlen(s1) + 1 > sizeof(fail_buffer))
- fatal(1, "Illegal or too-long CLR_ABORT string ('%v')", s);
-
- old_max = n_aborts;
- for (i=0; i < n_aborts; i++) {
- if ( strcmp(s1,abort_string[i]) == 0 ) {
- free(abort_string[i]);
- abort_string[i] = NULL;
- pack++;
- n_aborts--;
- if (verbose)
- logf("clear abort on (%v)", s);
- }
- }
- free(s1);
- if (pack)
- pack_array(abort_string,old_max);
- return;
- }
-
- if (report_next) {
- char *s1;
-
- report_next = 0;
- if (n_reports >= MAX_REPORTS)
- fatal(2, "Too many REPORT strings");
-
- s1 = clean(s, 0);
-
- if (strlen(s1) > strlen(s) || strlen(s1) > sizeof fail_buffer - 1)
- fatal(1, "Illegal or too-long REPORT string ('%v')", s);
-
- report_string[n_reports++] = s1;
-
- if (verbose)
- logf("report (%v)", s);
- return;
- }
-
- if (clear_report_next) {
- char *s1;
- int i;
- int old_max;
- int pack = 0;
-
- clear_report_next = 0;
-
- s1 = clean(s, 0);
-
- if (strlen(s1) > strlen(s) || strlen(s1) > sizeof fail_buffer - 1)
- fatal(1, "Illegal or too-long REPORT string ('%v')", s);
-
- old_max = n_reports;
- for (i=0; i < n_reports; i++) {
- if ( strcmp(s1,report_string[i]) == 0 ) {
- free(report_string[i]);
- report_string[i] = NULL;
- pack++;
- n_reports--;
- if (verbose)
- logf("clear report (%v)", s);
- }
- }
- free(s1);
- if (pack)
- pack_array(report_string,old_max);
-
- return;
- }
-
- if (timeout_next) {
- timeout_next = 0;
- timeout = atoi(s);
-
- if (timeout <= 0)
- timeout = DEFAULT_CHAT_TIMEOUT;
-
- if (verbose)
- logf("timeout set to %d seconds", timeout);
-
- return;
- }
-
- /*
- * The syntax @filename means read the string to send from the
- * file `filename'.
- */
- if (s[0] == '@') {
- /* skip the @ and any following white-space */
- char *fn = s;
- while (*++fn == ' ' || *fn == '\t')
- ;
-
- if (*fn != 0) {
- FILE *f;
- int n = 0;
-
- /* open the file and read until STR_LEN-1 bytes or end-of-file */
- f = fopen(fn, "r");
- if (f == NULL)
- fatal(1, "%s -- open failed: %m", fn);
- while (n < STR_LEN - 1) {
- int nr = fread(&file_data[n], 1, STR_LEN - 1 - n, f);
- if (nr < 0)
- fatal(1, "%s -- read error", fn);
- if (nr == 0)
- break;
- n += nr;
- }
- fclose(f);
-
- /* use the string we got as the string to send,
- but trim off the final newline if any. */
- if (n > 0 && file_data[n-1] == '\n')
- --n;
- file_data[n] = 0;
- s = file_data;
- }
- }
-
- if (strcmp(s, "EOT") == 0)
- s = "^D\\c";
- else if (strcmp(s, "BREAK") == 0)
- s = "\\K\\c";
-
- if (!put_string(s))
- fatal(1, "Failed");
-}
-
-int get_char()
-{
- int status;
- char c;
-
- status = read(0, &c, 1);
-
- switch (status) {
- case 1:
- return ((int)c & 0x7F);
-
- default:
- logf("warning: read() on stdin returned %d", status);
-
- case -1:
- if ((status = fcntl(0, F_GETFL, 0)) == -1)
- fatal(2, "Can't get file mode flags on stdin: %m");
-
- if (fcntl(0, F_SETFL, status & ~O_NONBLOCK) == -1)
- fatal(2, "Can't set file mode flags on stdin: %m");
-
- return (-1);
- }
-}
-
-int put_char(c)
-int c;
-{
- int status;
- char ch = c;
-
- usleep(10000); /* inter-character typing delay (?) */
-
- status = write(1, &ch, 1);
-
- switch (status) {
- case 1:
- return (0);
-
- default:
- logf("warning: write() on stdout returned %d", status);
-
- case -1:
- if ((status = fcntl(0, F_GETFL, 0)) == -1)
- fatal(2, "Can't get file mode flags on stdin, %m");
-
- if (fcntl(0, F_SETFL, status & ~O_NONBLOCK) == -1)
- fatal(2, "Can't set file mode flags on stdin: %m");
-
- return (-1);
- }
-}
-
-int write_char (c)
-int c;
-{
- if (alarmed || put_char(c) < 0) {
- alarm(0);
- alarmed = 0;
-
- if (verbose) {
- if (errno == EINTR || errno == EWOULDBLOCK)
- logf(" -- write timed out");
- else
- logf(" -- write failed: %m");
- }
- return (0);
- }
- return (1);
-}
-
-int put_string (s)
-register char *s;
-{
- quiet = 0;
- s = clean(s, 1);
-
- if (verbose) {
- if (quiet)
- logf("send (??????)");
- else
- logf("send (%v)", s);
- }
-
- alarm(timeout); alarmed = 0;
-
- while (*s) {
- register char c = *s++;
-
- if (c != '\\') {
- if (!write_char (c))
- return 0;
- continue;
- }
-
- c = *s++;
- switch (c) {
- case 'd':
- sleep(1);
- break;
-
- case 'K':
- break_sequence();
- break;
-
- case 'p':
- usleep(10000); /* 1/100th of a second (arg is microseconds) */
- break;
-
- default:
- if (!write_char (c))
- return 0;
- break;
- }
- }
-
- alarm(0);
- alarmed = 0;
- return (1);
-}
-
-/*
- * Echo a character to stderr.
- * When called with -1, a '\n' character is generated when
- * the cursor is not at the beginning of a line.
- */
-void echo_stderr(n)
-int n;
-{
- static int need_lf;
- char *s;
-
- switch (n) {
- case '\r': /* ignore '\r' */
- break;
- case -1:
- if (need_lf == 0)
- break;
- /* fall through */
- case '\n':
- write(2, "\n", 1);
- need_lf = 0;
- break;
- default:
- s = character(n);
- write(2, s, strlen(s));
- need_lf = 1;
- break;
- }
-}
-
-/*
- * 'Wait for' this string to appear on this file descriptor.
- */
-int get_string(string)
-register char *string;
-{
- char temp[STR_LEN];
- int c, printed = 0, len, minlen;
- register char *s = temp, *end = s + STR_LEN;
- char *logged = temp;
-
- fail_reason = (char *)0;
- string = clean(string, 0);
- len = strlen(string);
- minlen = (len > sizeof(fail_buffer)? len: sizeof(fail_buffer)) - 1;
-
- if (verbose)
- logf("expect (%v)", string);
-
- if (len > STR_LEN) {
- logf("expect string is too long");
- exit_code = 1;
- return 0;
- }
-
- if (len == 0) {
- if (verbose)
- logf("got it");
- return (1);
- }
-
- alarm(timeout);
- alarmed = 0;
-
- while ( ! alarmed && (c = get_char()) >= 0) {
- int n, abort_len, report_len;
-
- if (echo)
- echo_stderr(c);
- if (verbose && c == '\n') {
- if (s == logged)
- logf(""); /* blank line */
- else
- logf("%0.*v", s - logged, logged);
- logged = s + 1;
- }
-
- *s++ = c;
-
- if (verbose && s >= logged + 80) {
- logf("%0.*v", s - logged, logged);
- logged = s;
- }
-
- if (Verbose) {
- if (c == '\n')
- fputc( '\n', stderr );
- else if (c != '\r')
- fprintf( stderr, "%s", character(c) );
- }
-
- if (!report_gathering) {
- for (n = 0; n < n_reports; ++n) {
- if ((report_string[n] != (char*) NULL) &&
- s - temp >= (report_len = strlen(report_string[n])) &&
- strncmp(s - report_len, report_string[n], report_len) == 0) {
- time_t time_now = time ((time_t*) NULL);
- struct tm* tm_now = localtime (&time_now);
-
- strftime (report_buffer, 20, "%b %d %H:%M:%S ", tm_now);
- strcat (report_buffer, report_string[n]);
-
- report_string[n] = (char *) NULL;
- report_gathering = 1;
- break;
- }
- }
- }
- else {
- if (!iscntrl (c)) {
- int rep_len = strlen (report_buffer);
- report_buffer[rep_len] = c;
- report_buffer[rep_len + 1] = '\0';
- }
- else {
- report_gathering = 0;
- fprintf (report_fp, "chat: %s\n", report_buffer);
- }
- }
-
- if (s - temp >= len &&
- c == string[len - 1] &&
- strncmp(s - len, string, len) == 0) {
- if (verbose) {
- if (s > logged)
- logf("%0.*v", s - logged, logged);
- logf(" -- got it\n");
- }
-
- alarm(0);
- alarmed = 0;
- return (1);
- }
-
- for (n = 0; n < n_aborts; ++n) {
- if (s - temp >= (abort_len = strlen(abort_string[n])) &&
- strncmp(s - abort_len, abort_string[n], abort_len) == 0) {
- if (verbose) {
- if (s > logged)
- logf("%0.*v", s - logged, logged);
- logf(" -- failed");
- }
-
- alarm(0);
- alarmed = 0;
- exit_code = n + 4;
- strcpy(fail_reason = fail_buffer, abort_string[n]);
- return (0);
- }
- }
-
- if (s >= end) {
- if (logged < s - minlen) {
- if (verbose)
- logf("%0.*v", s - logged, logged);
- logged = s;
- }
- s -= minlen;
- memmove(temp, s, minlen);
- logged = temp + (logged - s);
- s = temp + minlen;
- }
-
- if (alarmed && verbose)
- logf("warning: alarm synchronization problem");
- }
-
- alarm(0);
-
- if (verbose && printed) {
- if (alarmed)
- logf(" -- read timed out");
- else
- logf(" -- read failed: %m");
- }
-
- exit_code = 3;
- alarmed = 0;
- return (0);
-}
-
-/*
- * Gross kludge to handle Solaris versions >= 2.6 having usleep.
- */
-#ifdef SOL2
-#include <sys/param.h>
-#if MAXUID > 65536 /* then this is Solaris 2.6 or later */
-#undef NO_USLEEP
-#endif
-#endif /* SOL2 */
-
-#ifdef NO_USLEEP
-#include <sys/types.h>
-#include <sys/time.h>
-
-/*
- usleep -- support routine for 4.2BSD system call emulations
- last edit: 29-Oct-1984 D A Gwyn
- */
-
-extern int select();
-
-int
-usleep( usec ) /* returns 0 if ok, else -1 */
- long usec; /* delay in microseconds */
-{
- static struct { /* `timeval' */
- long tv_sec; /* seconds */
- long tv_usec; /* microsecs */
- } delay; /* _select() timeout */
-
- delay.tv_sec = usec / 1000000L;
- delay.tv_usec = usec % 1000000L;
-
- return select(0, (long *)0, (long *)0, (long *)0, &delay);
-}
-#endif
-
-void
-pack_array (array, end)
- char **array; /* The address of the array of string pointers */
- int end; /* The index of the next free entry before CLR_ */
-{
- int i, j;
-
- for (i = 0; i < end; i++) {
- if (array[i] == NULL) {
- for (j = i+1; j < end; ++j)
- if (array[j] != NULL)
- array[i++] = array[j];
- for (; i < end; ++i)
- array[i] = NULL;
- break;
- }
- }
-}
-
-/*
- * vfmtmsg - format a message into a buffer. Like vsprintf except we
- * also specify the length of the output buffer, and we handle the
- * %m (error message) format.
- * Doesn't do floating-point formats.
- * Returns the number of chars put into buf.
- */
-#define OUTCHAR(c) (buflen > 0? (--buflen, *buf++ = (c)): 0)
-
-int
-vfmtmsg(buf, buflen, fmt, args)
- char *buf;
- int buflen;
- const char *fmt;
- va_list args;
-{
- int c, i, n;
- int width, prec, fillch;
- int base, len, neg, quoted;
- unsigned long val = 0;
- char *str, *buf0;
- const char *f;
- unsigned char *p;
- char num[32];
- static char hexchars[] = "0123456789abcdef";
-
- buf0 = buf;
- --buflen;
- while (buflen > 0) {
- for (f = fmt; *f != '%' && *f != 0; ++f)
- ;
- if (f > fmt) {
- len = f - fmt;
- if (len > buflen)
- len = buflen;
- memcpy(buf, fmt, len);
- buf += len;
- buflen -= len;
- fmt = f;
- }
- if (*fmt == 0)
- break;
- c = *++fmt;
- width = prec = 0;
- fillch = ' ';
- if (c == '0') {
- fillch = '0';
- c = *++fmt;
- }
- if (c == '*') {
- width = va_arg(args, int);
- c = *++fmt;
- } else {
- while (isdigit(c)) {
- width = width * 10 + c - '0';
- c = *++fmt;
- }
- }
- if (c == '.') {
- c = *++fmt;
- if (c == '*') {
- prec = va_arg(args, int);
- c = *++fmt;
- } else {
- while (isdigit(c)) {
- prec = prec * 10 + c - '0';
- c = *++fmt;
- }
- }
- }
- str = 0;
- base = 0;
- neg = 0;
- ++fmt;
- switch (c) {
- case 'd':
- i = va_arg(args, int);
- if (i < 0) {
- neg = 1;
- val = -i;
- } else
- val = i;
- base = 10;
- break;
- case 'o':
- val = va_arg(args, unsigned int);
- base = 8;
- break;
- case 'x':
- val = va_arg(args, unsigned int);
- base = 16;
- break;
- case 'p':
- val = (unsigned long) va_arg(args, void *);
- base = 16;
- neg = 2;
- break;
- case 's':
- str = va_arg(args, char *);
- break;
- case 'c':
- num[0] = va_arg(args, int);
- num[1] = 0;
- str = num;
- break;
- case 'm':
- str = strerror(errno);
- break;
- case 'v': /* "visible" string */
- case 'q': /* quoted string */
- quoted = c == 'q';
- p = va_arg(args, unsigned char *);
- if (fillch == '0' && prec > 0) {
- n = prec;
- } else {
- n = strlen((char *)p);
- if (prec > 0 && prec < n)
- n = prec;
- }
- while (n > 0 && buflen > 0) {
- c = *p++;
- --n;
- if (!quoted && c >= 0x80) {
- OUTCHAR('M');
- OUTCHAR('-');
- c -= 0x80;
- }
- if (quoted && (c == '"' || c == '\\'))
- OUTCHAR('\\');
- if (c < 0x20 || (0x7f <= c && c < 0xa0)) {
- if (quoted) {
- OUTCHAR('\\');
- switch (c) {
- case '\t': OUTCHAR('t'); break;
- case '\n': OUTCHAR('n'); break;
- case '\b': OUTCHAR('b'); break;
- case '\f': OUTCHAR('f'); break;
- default:
- OUTCHAR('x');
- OUTCHAR(hexchars[c >> 4]);
- OUTCHAR(hexchars[c & 0xf]);
- }
- } else {
- if (c == '\t')
- OUTCHAR(c);
- else {
- OUTCHAR('^');
- OUTCHAR(c ^ 0x40);
- }
- }
- } else
- OUTCHAR(c);
- }
- continue;
- default:
- *buf++ = '%';
- if (c != '%')
- --fmt; /* so %z outputs %z etc. */
- --buflen;
- continue;
- }
- if (base != 0) {
- str = num + sizeof(num);
- *--str = 0;
- while (str > num + neg) {
- *--str = hexchars[val % base];
- val = val / base;
- if (--prec <= 0 && val == 0)
- break;
- }
- switch (neg) {
- case 1:
- *--str = '-';
- break;
- case 2:
- *--str = 'x';
- *--str = '0';
- break;
- }
- len = num + sizeof(num) - 1 - str;
- } else {
- len = strlen(str);
- if (prec > 0 && len > prec)
- len = prec;
- }
- if (width > 0) {
- if (width > buflen)
- width = buflen;
- if ((n = width - len) > 0) {
- buflen -= n;
- for (; n > 0; --n)
- *buf++ = fillch;
- }
- }
- if (len > buflen)
- len = buflen;
- memcpy(buf, str, len);
- buf += len;
- buflen -= len;
- }
- *buf = 0;
- return buf - buf0;
-}
diff --git a/mdk-stage1/ppp/common/zlib.c b/mdk-stage1/ppp/common/zlib.c
deleted file mode 100644
index 503076886..000000000
--- a/mdk-stage1/ppp/common/zlib.c
+++ /dev/null
@@ -1,5376 +0,0 @@
-/*
- * This file is derived from various .h and .c files from the zlib-1.0.4
- * distribution by Jean-loup Gailly and Mark Adler, with some additions
- * by Paul Mackerras to aid in implementing Deflate compression and
- * decompression for PPP packets. See zlib.h for conditions of
- * distribution and use.
- *
- * Changes that have been made include:
- * - added Z_PACKET_FLUSH (see zlib.h for details)
- * - added inflateIncomp and deflateOutputPending
- * - allow strm->next_out to be NULL, meaning discard the output
- *
- * $Id$
- */
-
-/*
- * ==FILEVERSION 971210==
- *
- * This marker is used by the Linux installation script to determine
- * whether an up-to-date version of this file is already installed.
- */
-
-#define NO_DUMMY_DECL
-#define NO_ZCFUNCS
-#define MY_ZCALLOC
-
-#if defined(__FreeBSD__) && (defined(KERNEL) || defined(_KERNEL))
-#define inflate inflate_ppp /* FreeBSD already has an inflate :-( */
-#endif
-
-
-/* +++ zutil.h */
-/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-1996 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* From: zutil.h,v 1.16 1996/07/24 13:41:13 me Exp $ */
-
-#ifndef _Z_UTIL_H
-#define _Z_UTIL_H
-
-#include "zlib.h"
-
-#if defined(KERNEL) || defined(_KERNEL)
-/* Assume this is a *BSD or SVR4 kernel */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/systm.h>
-#undef u
-# define HAVE_MEMCPY
-# define memcpy(d, s, n) bcopy((s), (d), (n))
-# define memset(d, v, n) bzero((d), (n))
-# define memcmp bcmp
-
-#else
-#if defined(__KERNEL__)
-/* Assume this is a Linux kernel */
-#include <linux/string.h>
-#define HAVE_MEMCPY
-
-#else /* not kernel */
-
-#if defined(MSDOS)||defined(VMS)||defined(CRAY)||defined(WIN32)||defined(RISCOS)
-# include <stddef.h>
-# include <errno.h>
-#else
- extern int errno;
-#endif
-#ifdef STDC
-# include <string.h>
-# include <stdlib.h>
-#endif
-#endif /* __KERNEL__ */
-#endif /* _KERNEL || KERNEL */
-
-#ifndef local
-# define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-typedef unsigned char uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long ulg;
-
-extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
-/* (size given to avoid silly warnings with Visual C++) */
-
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
-
-#define ERR_RETURN(strm,err) \
- return (strm->msg = (char*)ERR_MSG(err), (err))
-/* To be used only when the state is known to be valid */
-
- /* common constants */
-
-#ifndef DEF_WBITS
-# define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-# define DEF_MEM_LEVEL 8
-#else
-# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES 2
-/* The three kinds of block type */
-
-#define MIN_MATCH 3
-#define MAX_MATCH 258
-/* The minimum and maximum match lengths */
-
-#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
-
- /* target dependencies */
-
-#ifdef MSDOS
-# define OS_CODE 0x00
-# ifdef __TURBOC__
-# include <alloc.h>
-# else /* MSC or DJGPP */
-# include <malloc.h>
-# endif
-#endif
-
-#ifdef OS2
-# define OS_CODE 0x06
-#endif
-
-#ifdef WIN32 /* Window 95 & Windows NT */
-# define OS_CODE 0x0b
-#endif
-
-#if defined(VAXC) || defined(VMS)
-# define OS_CODE 0x02
-# define FOPEN(name, mode) \
- fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
-#endif
-
-#ifdef AMIGA
-# define OS_CODE 0x01
-#endif
-
-#if defined(ATARI) || defined(atarist)
-# define OS_CODE 0x05
-#endif
-
-#ifdef MACOS
-# define OS_CODE 0x07
-#endif
-
-#ifdef __50SERIES /* Prime/PRIMOS */
-# define OS_CODE 0x0F
-#endif
-
-#ifdef TOPS20
-# define OS_CODE 0x0a
-#endif
-
-#if defined(_BEOS_) || defined(RISCOS)
-# define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
- /* Common defaults */
-
-#ifndef OS_CODE
-# define OS_CODE 0x03 /* assume Unix */
-#endif
-
-#ifndef FOPEN
-# define FOPEN(name, mode) fopen((name), (mode))
-#endif
-
- /* functions */
-
-#ifdef HAVE_STRERROR
- extern char *strerror OF((int));
-# define zstrerror(errnum) strerror(errnum)
-#else
-# define zstrerror(errnum) ""
-#endif
-
-#if defined(pyr)
-# define NO_MEMCPY
-#endif
-#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(_MSC_VER)
- /* Use our own functions for small and medium model with MSC <= 5.0.
- * You may have to use the same strategy for Borland C (untested).
- */
-# define NO_MEMCPY
-#endif
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-# define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
-# define zmemcpy _fmemcpy
-# define zmemcmp _fmemcmp
-# define zmemzero(dest, len) _fmemset(dest, 0, len)
-# else
-# define zmemcpy memcpy
-# define zmemcmp memcmp
-# define zmemzero(dest, len) memset(dest, 0, len)
-# endif
-#else
- extern void zmemcpy OF((Bytef* dest, Bytef* source, uInt len));
- extern int zmemcmp OF((Bytef* s1, Bytef* s2, uInt len));
- extern void zmemzero OF((Bytef* dest, uInt len));
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG_ZLIB
-# include <stdio.h>
-# ifndef verbose
-# define verbose 0
-# endif
- extern void z_error OF((char *m));
-# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-# define Trace(x) fprintf x
-# define Tracev(x) {if (verbose) fprintf x ;}
-# define Tracevv(x) {if (verbose>1) fprintf x ;}
-# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
-# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
-#else
-# define Assert(cond,msg)
-# define Trace(x)
-# define Tracev(x)
-# define Tracevv(x)
-# define Tracec(c,x)
-# define Tracecv(c,x)
-#endif
-
-
-typedef uLong (*check_func) OF((uLong check, const Bytef *buf, uInt len));
-
-voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
-void zcfree OF((voidpf opaque, voidpf ptr));
-
-#define ZALLOC(strm, items, size) \
- (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
-#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
-
-#endif /* _Z_UTIL_H */
-/* --- zutil.h */
-
-/* +++ deflate.h */
-/* deflate.h -- internal compression state
- * Copyright (C) 1995-1996 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* From: deflate.h,v 1.10 1996/07/02 12:41:00 me Exp $ */
-
-#ifndef _DEFLATE_H
-#define _DEFLATE_H
-
-/* #include "zutil.h" */
-
-/* ===========================================================================
- * Internal compression state.
- */
-
-#define LENGTH_CODES 29
-/* number of length codes, not counting the special END_BLOCK code */
-
-#define LITERALS 256
-/* number of literal bytes 0..255 */
-
-#define L_CODES (LITERALS+1+LENGTH_CODES)
-/* number of Literal or Length codes, including the END_BLOCK code */
-
-#define D_CODES 30
-/* number of distance codes */
-
-#define BL_CODES 19
-/* number of codes used to transfer the bit lengths */
-
-#define HEAP_SIZE (2*L_CODES+1)
-/* maximum heap size */
-
-#define MAX_BITS 15
-/* All codes must not exceed MAX_BITS bits */
-
-#define INIT_STATE 42
-#define BUSY_STATE 113
-#define FINISH_STATE 666
-/* Stream status */
-
-
-/* Data structure describing a single value and its code string. */
-typedef struct ct_data_s {
- union {
- ush freq; /* frequency count */
- ush code; /* bit string */
- } fc;
- union {
- ush dad; /* father node in Huffman tree */
- ush len; /* length of bit string */
- } dl;
-} FAR ct_data;
-
-#define Freq fc.freq
-#define Code fc.code
-#define Dad dl.dad
-#define Len dl.len
-
-typedef struct static_tree_desc_s static_tree_desc;
-
-typedef struct tree_desc_s {
- ct_data *dyn_tree; /* the dynamic tree */
- int max_code; /* largest code with non zero frequency */
- static_tree_desc *stat_desc; /* the corresponding static tree */
-} FAR tree_desc;
-
-typedef ush Pos;
-typedef Pos FAR Posf;
-typedef unsigned IPos;
-
-/* A Pos is an index in the character window. We use short instead of int to
- * save space in the various tables. IPos is used only for parameter passing.
- */
-
-typedef struct deflate_state {
- z_streamp strm; /* pointer back to this zlib stream */
- int status; /* as the name implies */
- Bytef *pending_buf; /* output still pending */
- ulg pending_buf_size; /* size of pending_buf */
- Bytef *pending_out; /* next pending byte to output to the stream */
- int pending; /* nb of bytes in the pending buffer */
- int noheader; /* suppress zlib header and adler32 */
- Byte data_type; /* UNKNOWN, BINARY or ASCII */
- Byte method; /* STORED (for zip only) or DEFLATED */
- int last_flush; /* value of flush param for previous deflate call */
-
- /* used by deflate.c: */
-
- uInt w_size; /* LZ77 window size (32K by default) */
- uInt w_bits; /* log2(w_size) (8..16) */
- uInt w_mask; /* w_size - 1 */
-
- Bytef *window;
- /* Sliding window. Input bytes are read into the second half of the window,
- * and move to the first half later to keep a dictionary of at least wSize
- * bytes. With this organization, matches are limited to a distance of
- * wSize-MAX_MATCH bytes, but this ensures that IO is always
- * performed with a length multiple of the block size. Also, it limits
- * the window size to 64K, which is quite useful on MSDOS.
- * To do: use the user input buffer as sliding window.
- */
-
- ulg window_size;
- /* Actual size of window: 2*wSize, except when the user input buffer
- * is directly used as sliding window.
- */
-
- Posf *prev;
- /* Link to older string with same hash index. To limit the size of this
- * array to 64K, this link is maintained only for the last 32K strings.
- * An index in this array is thus a window index modulo 32K.
- */
-
- Posf *head; /* Heads of the hash chains or NIL. */
-
- uInt ins_h; /* hash index of string to be inserted */
- uInt hash_size; /* number of elements in hash table */
- uInt hash_bits; /* log2(hash_size) */
- uInt hash_mask; /* hash_size-1 */
-
- uInt hash_shift;
- /* Number of bits by which ins_h must be shifted at each input
- * step. It must be such that after MIN_MATCH steps, the oldest
- * byte no longer takes part in the hash key, that is:
- * hash_shift * MIN_MATCH >= hash_bits
- */
-
- long block_start;
- /* Window position at the beginning of the current output block. Gets
- * negative when the window is moved backwards.
- */
-
- uInt match_length; /* length of best match */
- IPos prev_match; /* previous match */
- int match_available; /* set if previous match exists */
- uInt strstart; /* start of string to insert */
- uInt match_start; /* start of matching string */
- uInt lookahead; /* number of valid bytes ahead in window */
-
- uInt prev_length;
- /* Length of the best match at previous step. Matches not greater than this
- * are discarded. This is used in the lazy match evaluation.
- */
-
- uInt max_chain_length;
- /* To speed up deflation, hash chains are never searched beyond this
- * length. A higher limit improves compression ratio but degrades the
- * speed.
- */
-
- uInt max_lazy_match;
- /* Attempt to find a better match only when the current match is strictly
- * smaller than this value. This mechanism is used only for compression
- * levels >= 4.
- */
-# define max_insert_length max_lazy_match
- /* Insert new strings in the hash table only if the match length is not
- * greater than this length. This saves time but degrades compression.
- * max_insert_length is used only for compression levels <= 3.
- */
-
- int level; /* compression level (1..9) */
- int strategy; /* favor or force Huffman coding*/
-
- uInt good_match;
- /* Use a faster search when the previous match is longer than this */
-
- int nice_match; /* Stop searching when current match exceeds this */
-
- /* used by trees.c: */
- /* Didn't use ct_data typedef below to supress compiler warning */
- struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
- struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
- struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
-
- struct tree_desc_s l_desc; /* desc. for literal tree */
- struct tree_desc_s d_desc; /* desc. for distance tree */
- struct tree_desc_s bl_desc; /* desc. for bit length tree */
-
- ush bl_count[MAX_BITS+1];
- /* number of codes at each bit length for an optimal tree */
-
- int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
- int heap_len; /* number of elements in the heap */
- int heap_max; /* element of largest frequency */
- /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
- * The same heap array is used to build all trees.
- */
-
- uch depth[2*L_CODES+1];
- /* Depth of each subtree used as tie breaker for trees of equal frequency
- */
-
- uchf *l_buf; /* buffer for literals or lengths */
-
- uInt lit_bufsize;
- /* Size of match buffer for literals/lengths. There are 4 reasons for
- * limiting lit_bufsize to 64K:
- * - frequencies can be kept in 16 bit counters
- * - if compression is not successful for the first block, all input
- * data is still in the window so we can still emit a stored block even
- * when input comes from standard input. (This can also be done for
- * all blocks if lit_bufsize is not greater than 32K.)
- * - if compression is not successful for a file smaller than 64K, we can
- * even emit a stored file instead of a stored block (saving 5 bytes).
- * This is applicable only for zip (not gzip or zlib).
- * - creating new Huffman trees less frequently may not provide fast
- * adaptation to changes in the input data statistics. (Take for
- * example a binary file with poorly compressible code followed by
- * a highly compressible string table.) Smaller buffer sizes give
- * fast adaptation but have of course the overhead of transmitting
- * trees more frequently.
- * - I can't count above 4
- */
-
- uInt last_lit; /* running index in l_buf */
-
- ushf *d_buf;
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
- * the same number of elements. To use different lengths, an extra flag
- * array would be necessary.
- */
-
- ulg opt_len; /* bit length of current block with optimal trees */
- ulg static_len; /* bit length of current block with static trees */
- ulg compressed_len; /* total bit length of compressed file */
- uInt matches; /* number of string matches in current block */
- int last_eob_len; /* bit length of EOB code for last block */
-
-#ifdef DEBUG_ZLIB
- ulg bits_sent; /* bit length of the compressed data */
-#endif
-
- ush bi_buf;
- /* Output buffer. bits are inserted starting at the bottom (least
- * significant bits).
- */
- int bi_valid;
- /* Number of valid bits in bi_buf. All bits above the last valid bit
- * are always zero.
- */
-
-} FAR deflate_state;
-
-/* Output a byte on the stream.
- * IN assertion: there is enough room in pending_buf.
- */
-#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
-
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
-/* In order to simplify the code, particularly on 16 bit machines, match
- * distances are limited to MAX_DIST instead of WSIZE.
- */
-
- /* in trees.c */
-void _tr_init OF((deflate_state *s));
-int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
-ulg _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
- int eof));
-void _tr_align OF((deflate_state *s));
-void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
- int eof));
-void _tr_stored_type_only OF((deflate_state *));
-
-#endif
-/* --- deflate.h */
-
-/* +++ deflate.c */
-/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-1996 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * ALGORITHM
- *
- * The "deflation" process depends on being able to identify portions
- * of the input text which are identical to earlier input (within a
- * sliding window trailing behind the input currently being processed).
- *
- * The most straightforward technique turns out to be the fastest for
- * most input files: try all possible matches and select the longest.
- * The key feature of this algorithm is that insertions into the string
- * dictionary are very simple and thus fast, and deletions are avoided
- * completely. Insertions are performed at each input character, whereas
- * string matches are performed only when the previous match ends. So it
- * is preferable to spend more time in matches to allow very fast string
- * insertions and avoid deletions. The matching algorithm for small
- * strings is inspired from that of Rabin & Karp. A brute force approach
- * is used to find longer strings when a small match has been found.
- * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
- * (by Leonid Broukhis).
- * A previous version of this file used a more sophisticated algorithm
- * (by Fiala and Greene) which is guaranteed to run in linear amortized
- * time, but has a larger average cost, uses more memory and is patented.
- * However the F&G algorithm may be faster for some highly redundant
- * files if the parameter max_chain_length (described below) is too large.
- *
- * ACKNOWLEDGEMENTS
- *
- * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
- * I found it in 'freeze' written by Leonid Broukhis.
- * Thanks to many people for bug reports and testing.
- *
- * REFERENCES
- *
- * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification".
- * Available in ftp://ds.internic.net/rfc/rfc1951.txt
- *
- * A description of the Rabin and Karp algorithm is given in the book
- * "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
- *
- * Fiala,E.R., and Greene,D.H.
- * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
- *
- */
-
-/* From: deflate.c,v 1.15 1996/07/24 13:40:58 me Exp $ */
-
-/* #include "deflate.h" */
-
-char deflate_copyright[] = " deflate 1.0.4 Copyright 1995-1996 Jean-loup Gailly ";
-/*
- If you use the zlib library in a product, an acknowledgment is welcome
- in the documentation of your product. If for some reason you cannot
- include such an acknowledgment, I would appreciate that you keep this
- copyright string in the executable of your product.
- */
-
-/* ===========================================================================
- * Function prototypes.
- */
-typedef enum {
- need_more, /* block not completed, need more input or more output */
- block_done, /* block flush performed */
- finish_started, /* finish started, need only more output at next deflate */
- finish_done /* finish done, accept no more input or output */
-} block_state;
-
-typedef block_state (*compress_func) OF((deflate_state *s, int flush));
-/* Compression function. Returns the block state after the call. */
-
-local void fill_window OF((deflate_state *s));
-local block_state deflate_stored OF((deflate_state *s, int flush));
-local block_state deflate_fast OF((deflate_state *s, int flush));
-local block_state deflate_slow OF((deflate_state *s, int flush));
-local void lm_init OF((deflate_state *s));
-local void putShortMSB OF((deflate_state *s, uInt b));
-local void flush_pending OF((z_streamp strm));
-local int read_buf OF((z_streamp strm, charf *buf, unsigned size));
-#ifdef ASMV
- void match_init OF((void)); /* asm code initialization */
- uInt longest_match OF((deflate_state *s, IPos cur_match));
-#else
-local uInt longest_match OF((deflate_state *s, IPos cur_match));
-#endif
-
-#ifdef DEBUG_ZLIB
-local void check_match OF((deflate_state *s, IPos start, IPos match,
- int length));
-#endif
-
-/* ===========================================================================
- * Local data
- */
-
-#define NIL 0
-/* Tail of hash chains */
-
-#ifndef TOO_FAR
-# define TOO_FAR 4096
-#endif
-/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-/* Values for max_lazy_match, good_match and max_chain_length, depending on
- * the desired pack level (0..9). The values given below have been tuned to
- * exclude worst case performance for pathological files. Better values may be
- * found for specific files.
- */
-typedef struct config_s {
- ush good_length; /* reduce lazy search above this match length */
- ush max_lazy; /* do not perform lazy search above this match length */
- ush nice_length; /* quit search above this match length */
- ush max_chain;
- compress_func func;
-} config;
-
-local config configuration_table[10] = {
-/* good lazy nice chain */
-/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */
-/* 1 */ {4, 4, 8, 4, deflate_fast}, /* maximum speed, no lazy matches */
-/* 2 */ {4, 5, 16, 8, deflate_fast},
-/* 3 */ {4, 6, 32, 32, deflate_fast},
-
-/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */
-/* 5 */ {8, 16, 32, 32, deflate_slow},
-/* 6 */ {8, 16, 128, 128, deflate_slow},
-/* 7 */ {8, 32, 128, 256, deflate_slow},
-/* 8 */ {32, 128, 258, 1024, deflate_slow},
-/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* maximum compression */
-
-/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
- * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
- * meaning.
- */
-
-#define EQUAL 0
-/* result of memcmp for equal strings */
-
-#ifndef NO_DUMMY_DECL
-struct static_tree_desc_s {int dummy;}; /* for buggy compilers */
-#endif
-
-/* ===========================================================================
- * Update a hash value with the given input byte
- * IN assertion: all calls to to UPDATE_HASH are made with consecutive
- * input characters, so that a running hash key can be computed from the
- * previous key instead of complete recalculation each time.
- */
-#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
-
-
-/* ===========================================================================
- * Insert string str in the dictionary and set match_head to the previous head
- * of the hash chain (the most recent string with same hash key). Return
- * the previous length of the hash chain.
- * IN assertion: all calls to to INSERT_STRING are made with consecutive
- * input characters and the first MIN_MATCH bytes of str are valid
- * (except for the last MIN_MATCH-1 bytes of the input file).
- */
-#define INSERT_STRING(s, str, match_head) \
- (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
- s->prev[(str) & s->w_mask] = match_head = s->head[s->ins_h], \
- s->head[s->ins_h] = (Pos)(str))
-
-/* ===========================================================================
- * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
- * prev[] will be initialized on the fly.
- */
-#define CLEAR_HASH(s) \
- s->head[s->hash_size-1] = NIL; \
- zmemzero((charf *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
-
-/* ========================================================================= */
-int deflateInit_(strm, level, version, stream_size)
- z_streamp strm;
- int level;
- const char *version;
- int stream_size;
-{
- return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
- Z_DEFAULT_STRATEGY, version, stream_size);
- /* To do: ignore strm->next_in if we use it as window */
-}
-
-/* ========================================================================= */
-int deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
- version, stream_size)
- z_streamp strm;
- int level;
- int method;
- int windowBits;
- int memLevel;
- int strategy;
- const char *version;
- int stream_size;
-{
- deflate_state *s;
- int noheader = 0;
- static char* my_version = ZLIB_VERSION;
-
- ushf *overlay;
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
- * output size for (length,distance) codes is <= 24 bits.
- */
-
- if (version == Z_NULL || version[0] != my_version[0] ||
- stream_size != sizeof(z_stream)) {
- return Z_VERSION_ERROR;
- }
- if (strm == Z_NULL) return Z_STREAM_ERROR;
-
- strm->msg = Z_NULL;
-#ifndef NO_ZCFUNCS
- if (strm->zalloc == Z_NULL) {
- strm->zalloc = zcalloc;
- strm->opaque = (voidpf)0;
- }
- if (strm->zfree == Z_NULL) strm->zfree = zcfree;
-#endif
-
- if (level == Z_DEFAULT_COMPRESSION) level = 6;
-
- if (windowBits < 0) { /* undocumented feature: suppress zlib header */
- noheader = 1;
- windowBits = -windowBits;
- }
- if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED ||
- windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
- strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
- return Z_STREAM_ERROR;
- }
- s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
- if (s == Z_NULL) return Z_MEM_ERROR;
- strm->state = (struct internal_state FAR *)s;
- s->strm = strm;
-
- s->noheader = noheader;
- s->w_bits = windowBits;
- s->w_size = 1 << s->w_bits;
- s->w_mask = s->w_size - 1;
-
- s->hash_bits = memLevel + 7;
- s->hash_size = 1 << s->hash_bits;
- s->hash_mask = s->hash_size - 1;
- s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
-
- s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
- s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos));
- s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos));
-
- s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
- s->pending_buf = (uchf *) overlay;
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
-
- if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
- s->pending_buf == Z_NULL) {
- strm->msg = (char*)ERR_MSG(Z_MEM_ERROR);
- deflateEnd (strm);
- return Z_MEM_ERROR;
- }
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
-
- s->level = level;
- s->strategy = strategy;
- s->method = (Byte)method;
-
- return deflateReset(strm);
-}
-
-/* ========================================================================= */
-int deflateSetDictionary (strm, dictionary, dictLength)
- z_streamp strm;
- const Bytef *dictionary;
- uInt dictLength;
-{
- deflate_state *s;
- uInt length = dictLength;
- uInt n;
- IPos hash_head = 0;
-
- if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL)
- return Z_STREAM_ERROR;
-
- s = (deflate_state *) strm->state;
- if (s->status != INIT_STATE) return Z_STREAM_ERROR;
-
- strm->adler = adler32(strm->adler, dictionary, dictLength);
-
- if (length < MIN_MATCH) return Z_OK;
- if (length > MAX_DIST(s)) {
- length = MAX_DIST(s);
-#ifndef USE_DICT_HEAD
- dictionary += dictLength - length; /* use the tail of the dictionary */
-#endif
- }
- zmemcpy((charf *)s->window, dictionary, length);
- s->strstart = length;
- s->block_start = (long)length;
-
- /* Insert all strings in the hash table (except for the last two bytes).
- * s->lookahead stays null, so s->ins_h will be recomputed at the next
- * call of fill_window.
- */
- s->ins_h = s->window[0];
- UPDATE_HASH(s, s->ins_h, s->window[1]);
- for (n = 0; n <= length - MIN_MATCH; n++) {
- INSERT_STRING(s, n, hash_head);
- }
- if (hash_head) hash_head = 0; /* to make compiler happy */
- return Z_OK;
-}
-
-/* ========================================================================= */
-int deflateReset (strm)
- z_streamp strm;
-{
- deflate_state *s;
-
- if (strm == Z_NULL || strm->state == Z_NULL ||
- strm->zalloc == Z_NULL || strm->zfree == Z_NULL) return Z_STREAM_ERROR;
-
- strm->total_in = strm->total_out = 0;
- strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
- strm->data_type = Z_UNKNOWN;
-
- s = (deflate_state *)strm->state;
- s->pending = 0;
- s->pending_out = s->pending_buf;
-
- if (s->noheader < 0) {
- s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */
- }
- s->status = s->noheader ? BUSY_STATE : INIT_STATE;
- strm->adler = 1;
- s->last_flush = Z_NO_FLUSH;
-
- _tr_init(s);
- lm_init(s);
-
- return Z_OK;
-}
-
-/* ========================================================================= */
-int deflateParams(strm, level, strategy)
- z_streamp strm;
- int level;
- int strategy;
-{
- deflate_state *s;
- compress_func func;
- int err = Z_OK;
-
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- s = (deflate_state *) strm->state;
-
- if (level == Z_DEFAULT_COMPRESSION) {
- level = 6;
- }
- if (level < 0 || level > 9 || strategy < 0 || strategy > Z_HUFFMAN_ONLY) {
- return Z_STREAM_ERROR;
- }
- func = configuration_table[s->level].func;
-
- if (func != configuration_table[level].func && strm->total_in != 0) {
- /* Flush the last buffer: */
- err = deflate(strm, Z_PARTIAL_FLUSH);
- }
- if (s->level != level) {
- s->level = level;
- s->max_lazy_match = configuration_table[level].max_lazy;
- s->good_match = configuration_table[level].good_length;
- s->nice_match = configuration_table[level].nice_length;
- s->max_chain_length = configuration_table[level].max_chain;
- }
- s->strategy = strategy;
- return err;
-}
-
-/* =========================================================================
- * Put a short in the pending buffer. The 16-bit value is put in MSB order.
- * IN assertion: the stream state is correct and there is enough room in
- * pending_buf.
- */
-local void putShortMSB (s, b)
- deflate_state *s;
- uInt b;
-{
- put_byte(s, (Byte)(b >> 8));
- put_byte(s, (Byte)(b & 0xff));
-}
-
-/* =========================================================================
- * Flush as much pending output as possible. All deflate() output goes
- * through this function so some applications may wish to modify it
- * to avoid allocating a large strm->next_out buffer and copying into it.
- * (See also read_buf()).
- */
-local void flush_pending(strm)
- z_streamp strm;
-{
- deflate_state *s = (deflate_state *) strm->state;
- unsigned len = s->pending;
-
- if (len > strm->avail_out) len = strm->avail_out;
- if (len == 0) return;
-
- if (strm->next_out != Z_NULL) {
- zmemcpy(strm->next_out, s->pending_out, len);
- strm->next_out += len;
- }
- s->pending_out += len;
- strm->total_out += len;
- strm->avail_out -= len;
- s->pending -= len;
- if (s->pending == 0) {
- s->pending_out = s->pending_buf;
- }
-}
-
-/* ========================================================================= */
-int deflate (strm, flush)
- z_streamp strm;
- int flush;
-{
- int old_flush; /* value of flush param for previous deflate call */
- deflate_state *s;
-
- if (strm == Z_NULL || strm->state == Z_NULL ||
- flush > Z_FINISH || flush < 0) {
- return Z_STREAM_ERROR;
- }
- s = (deflate_state *) strm->state;
-
- if ((strm->next_in == Z_NULL && strm->avail_in != 0) ||
- (s->status == FINISH_STATE && flush != Z_FINISH)) {
- ERR_RETURN(strm, Z_STREAM_ERROR);
- }
- if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
-
- s->strm = strm; /* just in case */
- old_flush = s->last_flush;
- s->last_flush = flush;
-
- /* Write the zlib header */
- if (s->status == INIT_STATE) {
-
- uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
- uInt level_flags = (s->level-1) >> 1;
-
- if (level_flags > 3) level_flags = 3;
- header |= (level_flags << 6);
- if (s->strstart != 0) header |= PRESET_DICT;
- header += 31 - (header % 31);
-
- s->status = BUSY_STATE;
- putShortMSB(s, header);
-
- /* Save the adler32 of the preset dictionary: */
- if (s->strstart != 0) {
- putShortMSB(s, (uInt)(strm->adler >> 16));
- putShortMSB(s, (uInt)(strm->adler & 0xffff));
- }
- strm->adler = 1L;
- }
-
- /* Flush as much pending output as possible */
- if (s->pending != 0) {
- flush_pending(strm);
- if (strm->avail_out == 0) {
- /* Since avail_out is 0, deflate will be called again with
- * more output space, but possibly with both pending and
- * avail_in equal to zero. There won't be anything to do,
- * but this is not an error situation so make sure we
- * return OK instead of BUF_ERROR at next call of deflate:
- */
- s->last_flush = -1;
- return Z_OK;
- }
-
- /* Make sure there is something to do and avoid duplicate consecutive
- * flushes. For repeated and useless calls with Z_FINISH, we keep
- * returning Z_STREAM_END instead of Z_BUFF_ERROR.
- */
- } else if (strm->avail_in == 0 && flush <= old_flush &&
- flush != Z_FINISH) {
- ERR_RETURN(strm, Z_BUF_ERROR);
- }
-
- /* User must not provide more input after the first FINISH: */
- if (s->status == FINISH_STATE && strm->avail_in != 0) {
- ERR_RETURN(strm, Z_BUF_ERROR);
- }
-
- /* Start a new block or continue the current one.
- */
- if (strm->avail_in != 0 || s->lookahead != 0 ||
- (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) {
- block_state bstate;
-
- bstate = (*(configuration_table[s->level].func))(s, flush);
-
- if (bstate == finish_started || bstate == finish_done) {
- s->status = FINISH_STATE;
- }
- if (bstate == need_more || bstate == finish_started) {
- if (strm->avail_out == 0) {
- s->last_flush = -1; /* avoid BUF_ERROR next call, see above */
- }
- return Z_OK;
- /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
- * of deflate should use the same flush parameter to make sure
- * that the flush is complete. So we don't have to output an
- * empty block here, this will be done at next call. This also
- * ensures that for a very small output buffer, we emit at most
- * one empty block.
- */
- }
- if (bstate == block_done) {
- if (flush == Z_PARTIAL_FLUSH) {
- _tr_align(s);
- } else if (flush == Z_PACKET_FLUSH) {
- /* Output just the 3-bit `stored' block type value,
- but not a zero length. */
- _tr_stored_type_only(s);
- } else { /* FULL_FLUSH or SYNC_FLUSH */
- _tr_stored_block(s, (char*)0, 0L, 0);
- /* For a full flush, this empty block will be recognized
- * as a special marker by inflate_sync().
- */
- if (flush == Z_FULL_FLUSH) {
- CLEAR_HASH(s); /* forget history */
- }
- }
- flush_pending(strm);
- if (strm->avail_out == 0) {
- s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */
- return Z_OK;
- }
- }
- }
- Assert(strm->avail_out > 0, "bug2");
-
- if (flush != Z_FINISH) return Z_OK;
- if (s->noheader) return Z_STREAM_END;
-
- /* Write the zlib trailer (adler32) */
- putShortMSB(s, (uInt)(strm->adler >> 16));
- putShortMSB(s, (uInt)(strm->adler & 0xffff));
- flush_pending(strm);
- /* If avail_out is zero, the application will call deflate again
- * to flush the rest.
- */
- s->noheader = -1; /* write the trailer only once! */
- return s->pending != 0 ? Z_OK : Z_STREAM_END;
-}
-
-/* ========================================================================= */
-int deflateEnd (strm)
- z_streamp strm;
-{
- int status;
- deflate_state *s;
-
- if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
- s = (deflate_state *) strm->state;
-
- status = s->status;
- if (status != INIT_STATE && status != BUSY_STATE &&
- status != FINISH_STATE) {
- return Z_STREAM_ERROR;
- }
-
- /* Deallocate in reverse order of allocations: */
- TRY_FREE(strm, s->pending_buf);
- TRY_FREE(strm, s->head);
- TRY_FREE(strm, s->prev);
- TRY_FREE(strm, s->window);
-
- ZFREE(strm, s);
- strm->state = Z_NULL;
-
- return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK;
-}
-
-/* =========================================================================
- * Copy the source state to the destination state.
- */
-int deflateCopy (dest, source)
- z_streamp dest;
- z_streamp source;
-{
- deflate_state *ds;
- deflate_state *ss;
- ushf *overlay;
-
- if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL)
- return Z_STREAM_ERROR;
- ss = (deflate_state *) source->state;
-
- zmemcpy(dest, source, sizeof(*dest));
-
- ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state));
- if (ds == Z_NULL) return Z_MEM_ERROR;
- dest->state = (struct internal_state FAR *) ds;
- zmemcpy(ds, ss, sizeof(*ds));
- ds->strm = dest;
-
- ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
- ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
- ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
- ds->pending_buf = (uchf *) overlay;
-
- if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
- ds->pending_buf == Z_NULL) {
- deflateEnd (dest);
- return Z_MEM_ERROR;
- }
- /* ??? following zmemcpy doesn't work for 16-bit MSDOS */
- zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
- zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos));
- zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos));
- zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
-
- ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
-
- ds->l_desc.dyn_tree = ds->dyn_ltree;
- ds->d_desc.dyn_tree = ds->dyn_dtree;
- ds->bl_desc.dyn_tree = ds->bl_tree;
-
- return Z_OK;
-}
-
-/* ===========================================================================
- * Return the number of bytes of output which are immediately available
- * for output from the decompressor.
- */
-int deflateOutputPending (strm)
- z_streamp strm;
-{
- if (strm == Z_NULL || strm->state == Z_NULL) return 0;
-
- return ((deflate_state *)(strm->state))->pending;
-}
-
-/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read. All deflate() input goes through
- * this function so some applications may wish to modify it to avoid
- * allocating a large strm->next_in buffer and copying from it.
- * (See also flush_pending()).
- */
-local int read_buf(strm, buf, size)
- z_streamp strm;
- charf *buf;
- unsigned size;
-{
- unsigned len = strm->avail_in;
-
- if (len > size) len = size;
- if (len == 0) return 0;
-
- strm->avail_in -= len;
-
- if (!((deflate_state *)(strm->state))->noheader) {
- strm->adler = adler32(strm->adler, strm->next_in, len);
- }
- zmemcpy(buf, strm->next_in, len);
- strm->next_in += len;
- strm->total_in += len;
-
- return (int)len;
-}
-
-/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */
-local void lm_init (s)
- deflate_state *s;
-{
- s->window_size = (ulg)2L*s->w_size;
-
- CLEAR_HASH(s);
-
- /* Set the default configuration parameters:
- */
- s->max_lazy_match = configuration_table[s->level].max_lazy;
- s->good_match = configuration_table[s->level].good_length;
- s->nice_match = configuration_table[s->level].nice_length;
- s->max_chain_length = configuration_table[s->level].max_chain;
-
- s->strstart = 0;
- s->block_start = 0L;
- s->lookahead = 0;
- s->match_length = s->prev_length = MIN_MATCH-1;
- s->match_available = 0;
- s->ins_h = 0;
-#ifdef ASMV
- match_init(); /* initialize the asm code */
-#endif
-}
-
-/* ===========================================================================
- * Set match_start to the longest match starting at the given string and
- * return its length. Matches shorter or equal to prev_length are discarded,
- * in which case the result is equal to prev_length and match_start is
- * garbage.
- * IN assertions: cur_match is the head of the hash chain for the current
- * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
- * OUT assertion: the match length is not greater than s->lookahead.
- */
-#ifndef ASMV
-/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
- * match.S. The code will be functionally equivalent.
- */
-local uInt longest_match(s, cur_match)
- deflate_state *s;
- IPos cur_match; /* current match */
-{
- unsigned chain_length = s->max_chain_length;/* max hash chain length */
- register Bytef *scan = s->window + s->strstart; /* current string */
- register Bytef *match; /* matched string */
- register int len; /* length of current match */
- int best_len = s->prev_length; /* best match length so far */
- int nice_match = s->nice_match; /* stop if match long enough */
- IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
- s->strstart - (IPos)MAX_DIST(s) : NIL;
- /* Stop when cur_match becomes <= limit. To simplify the code,
- * we prevent matches with the string of window index 0.
- */
- Posf *prev = s->prev;
- uInt wmask = s->w_mask;
-
-#ifdef UNALIGNED_OK
- /* Compare two bytes at a time. Note: this is not always beneficial.
- * Try with and without -DUNALIGNED_OK to check.
- */
- register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
- register ush scan_start = *(ushf*)scan;
- register ush scan_end = *(ushf*)(scan+best_len-1);
-#else
- register Bytef *strend = s->window + s->strstart + MAX_MATCH;
- register Byte scan_end1 = scan[best_len-1];
- register Byte scan_end = scan[best_len];
-#endif
-
- /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
- * It is easy to get rid of this optimization if necessary.
- */
- Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-
- /* Do not waste too much time if we already have a good match: */
- if (s->prev_length >= s->good_match) {
- chain_length >>= 2;
- }
- /* Do not look for matches beyond the end of the input. This is necessary
- * to make deflate deterministic.
- */
- if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
- Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-
- do {
- Assert(cur_match < s->strstart, "no future");
- match = s->window + cur_match;
-
- /* Skip to next match if the match length cannot increase
- * or if the match length is less than 2:
- */
-#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
- /* This code assumes sizeof(unsigned short) == 2. Do not use
- * UNALIGNED_OK if your compiler uses a different size.
- */
- if (*(ushf*)(match+best_len-1) != scan_end ||
- *(ushf*)match != scan_start) continue;
-
- /* It is not necessary to compare scan[2] and match[2] since they are
- * always equal when the other bytes match, given that the hash keys
- * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
- * strstart+3, +5, ... up to strstart+257. We check for insufficient
- * lookahead only every 4th comparison; the 128th check will be made
- * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
- * necessary to put more guard bytes at the end of the window, or
- * to check more often for insufficient lookahead.
- */
- Assert(scan[2] == match[2], "scan[2]?");
- scan++, match++;
- do {
- } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- scan < strend);
- /* The funny "do {}" generates better code on most compilers */
-
- /* Here, scan <= window+strstart+257 */
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
- if (*scan == *match) scan++;
-
- len = (MAX_MATCH - 1) - (int)(strend-scan);
- scan = strend - (MAX_MATCH-1);
-
-#else /* UNALIGNED_OK */
-
- if (match[best_len] != scan_end ||
- match[best_len-1] != scan_end1 ||
- *match != *scan ||
- *++match != scan[1]) continue;
-
- /* The check at best_len-1 can be removed because it will be made
- * again later. (This heuristic is not always a win.)
- * It is not necessary to compare scan[2] and match[2] since they
- * are always equal when the other bytes match, given that
- * the hash keys are equal and that HASH_BITS >= 8.
- */
- scan += 2, match++;
- Assert(*scan == *match, "match[2]?");
-
- /* We check for insufficient lookahead only every 8th comparison;
- * the 256th check will be made at strstart+258.
- */
- do {
- } while (*++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- scan < strend);
-
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-
- len = MAX_MATCH - (int)(strend - scan);
- scan = strend - MAX_MATCH;
-
-#endif /* UNALIGNED_OK */
-
- if (len > best_len) {
- s->match_start = cur_match;
- best_len = len;
- if (len >= nice_match) break;
-#ifdef UNALIGNED_OK
- scan_end = *(ushf*)(scan+best_len-1);
-#else
- scan_end1 = scan[best_len-1];
- scan_end = scan[best_len];
-#endif
- }
- } while ((cur_match = prev[cur_match & wmask]) > limit
- && --chain_length != 0);
-
- if ((uInt)best_len <= s->lookahead) return best_len;
- return s->lookahead;
-}
-#endif /* ASMV */
-
-#ifdef DEBUG_ZLIB
-/* ===========================================================================
- * Check that the match at match_start is indeed a match.
- */
-local void check_match(s, start, match, length)
- deflate_state *s;
- IPos start, match;
- int length;
-{
- /* check that the match is indeed a match */
- if (zmemcmp((charf *)s->window + match,
- (charf *)s->window + start, length) != EQUAL) {
- fprintf(stderr, " start %u, match %u, length %d\n",
- start, match, length);
- do {
- fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
- } while (--length != 0);
- z_error("invalid match");
- }
- if (z_verbose > 1) {
- fprintf(stderr,"\\[%d,%d]", start-match, length);
- do { putc(s->window[start++], stderr); } while (--length != 0);
- }
-}
-#else
-# define check_match(s, start, match, length)
-#endif
-
-/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- * At least one byte has been read, or avail_in == 0; reads are
- * performed for at least two bytes (required for the zip translate_eol
- * option -- not supported here).
- */
-local void fill_window(s)
- deflate_state *s;
-{
- register unsigned n, m;
- register Posf *p;
- unsigned more; /* Amount of free space at the end of the window. */
- uInt wsize = s->w_size;
-
- do {
- more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-
- /* Deal with !@#$% 64K limit: */
- if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
- more = wsize;
-
- } else if (more == (unsigned)(-1)) {
- /* Very unlikely, but possible on 16 bit machine if strstart == 0
- * and lookahead == 1 (input done one byte at time)
- */
- more--;
-
- /* If the window is almost full and there is insufficient lookahead,
- * move the upper half to the lower one to make room in the upper half.
- */
- } else if (s->strstart >= wsize+MAX_DIST(s)) {
-
- zmemcpy((charf *)s->window, (charf *)s->window+wsize,
- (unsigned)wsize);
- s->match_start -= wsize;
- s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
- s->block_start -= (long) wsize;
-
- /* Slide the hash table (could be avoided with 32 bit values
- at the expense of memory usage). We slide even when level == 0
- to keep the hash table consistent if we switch back to level > 0
- later. (Using level 0 permanently is not an optimal usage of
- zlib, so we don't care about this pathological case.)
- */
- n = s->hash_size;
- p = &s->head[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- } while (--n);
-
- n = wsize;
- p = &s->prev[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- /* If n is not on any hash chain, prev[n] is garbage but
- * its value will never be used.
- */
- } while (--n);
- more += wsize;
- }
- if (s->strm->avail_in == 0) return;
-
- /* If there was no sliding:
- * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
- * more == window_size - lookahead - strstart
- * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
- * => more >= window_size - 2*WSIZE + 2
- * In the BIG_MEM or MMAP case (not yet supported),
- * window_size == input_size + MIN_LOOKAHEAD &&
- * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
- * Otherwise, window_size == 2*WSIZE so more >= 2.
- * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
- */
- Assert(more >= 2, "more < 2");
-
- n = read_buf(s->strm, (charf *)s->window + s->strstart + s->lookahead,
- more);
- s->lookahead += n;
-
- /* Initialize the hash value now that we have some input: */
- if (s->lookahead >= MIN_MATCH) {
- s->ins_h = s->window[s->strstart];
- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
- Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
- }
- /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
- * but this is not important since only literal bytes will be emitted.
- */
-
- } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-}
-
-/* ===========================================================================
- * Flush the current block, with given end-of-file flag.
- * IN assertion: strstart is set to the end of the current match.
- */
-#define FLUSH_BLOCK_ONLY(s, eof) { \
- _tr_flush_block(s, (s->block_start >= 0L ? \
- (charf *)&s->window[(unsigned)s->block_start] : \
- (charf *)Z_NULL), \
- (ulg)((long)s->strstart - s->block_start), \
- (eof)); \
- s->block_start = s->strstart; \
- flush_pending(s->strm); \
- Tracev((stderr,"[FLUSH]")); \
-}
-
-/* Same but force premature exit if necessary. */
-#define FLUSH_BLOCK(s, eof) { \
- FLUSH_BLOCK_ONLY(s, eof); \
- if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \
-}
-
-/* ===========================================================================
- * Copy without compression as much as possible from the input stream, return
- * the current block state.
- * This function does not insert new strings in the dictionary since
- * uncompressible data is probably not useful. This function is used
- * only for the level=0 compression option.
- * NOTE: this function should be optimized to avoid extra copying from
- * window to pending_buf.
- */
-local block_state deflate_stored(s, flush)
- deflate_state *s;
- int flush;
-{
- /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
- * to pending_buf_size, and each stored block has a 5 byte header:
- */
- ulg max_block_size = 0xffff;
- ulg max_start;
-
- if (max_block_size > s->pending_buf_size - 5) {
- max_block_size = s->pending_buf_size - 5;
- }
-
- /* Copy as much as possible from input to output: */
- for (;;) {
- /* Fill the window as much as possible: */
- if (s->lookahead <= 1) {
-
- Assert(s->strstart < s->w_size+MAX_DIST(s) ||
- s->block_start >= (long)s->w_size, "slide too late");
-
- fill_window(s);
- if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more;
-
- if (s->lookahead == 0) break; /* flush the current block */
- }
- Assert(s->block_start >= 0L, "block gone");
-
- s->strstart += s->lookahead;
- s->lookahead = 0;
-
- /* Emit a stored block if pending_buf will be full: */
- max_start = s->block_start + max_block_size;
- if (s->strstart == 0 || (ulg)s->strstart >= max_start) {
- /* strstart == 0 is possible when wraparound on 16-bit machine */
- s->lookahead = (uInt)(s->strstart - max_start);
- s->strstart = (uInt)max_start;
- FLUSH_BLOCK(s, 0);
- }
- /* Flush if we may have to slide, otherwise block_start may become
- * negative and the data will be gone:
- */
- if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) {
- FLUSH_BLOCK(s, 0);
- }
- }
- FLUSH_BLOCK(s, flush == Z_FINISH);
- return flush == Z_FINISH ? finish_done : block_done;
-}
-
-/* ===========================================================================
- * Compress as much as possible from the input stream, return the current
- * block state.
- * This function does not perform lazy evaluation of matches and inserts
- * new strings in the dictionary only for unmatched strings or for short
- * matches. It is used only for the fast compression options.
- */
-local block_state deflate_fast(s, flush)
- deflate_state *s;
- int flush;
-{
- IPos hash_head = NIL; /* head of the hash chain */
- int bflush; /* set if current block must be flushed */
-
- for (;;) {
- /* Make sure that we always have enough lookahead, except
- * at the end of the input file. We need MAX_MATCH bytes
- * for the next match, plus MIN_MATCH bytes to insert the
- * string following the next match.
- */
- if (s->lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
- return need_more;
- }
- if (s->lookahead == 0) break; /* flush the current block */
- }
-
- /* Insert the string window[strstart .. strstart+2] in the
- * dictionary, and set hash_head to the head of the hash chain:
- */
- if (s->lookahead >= MIN_MATCH) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
-
- /* Find the longest match, discarding those <= prev_length.
- * At this point we have always match_length < MIN_MATCH
- */
- if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
- /* To simplify the code, we prevent matches with the string
- * of window index 0 (in particular we have to avoid a match
- * of the string with itself at the start of the input file).
- */
- if (s->strategy != Z_HUFFMAN_ONLY) {
- s->match_length = longest_match (s, hash_head);
- }
- /* longest_match() sets match_start */
- }
- if (s->match_length >= MIN_MATCH) {
- check_match(s, s->strstart, s->match_start, s->match_length);
-
- bflush = _tr_tally(s, s->strstart - s->match_start,
- s->match_length - MIN_MATCH);
-
- s->lookahead -= s->match_length;
-
- /* Insert new strings in the hash table only if the match length
- * is not too large. This saves time but degrades compression.
- */
- if (s->match_length <= s->max_insert_length &&
- s->lookahead >= MIN_MATCH) {
- s->match_length--; /* string at strstart already in hash table */
- do {
- s->strstart++;
- INSERT_STRING(s, s->strstart, hash_head);
- /* strstart never exceeds WSIZE-MAX_MATCH, so there are
- * always MIN_MATCH bytes ahead.
- */
- } while (--s->match_length != 0);
- s->strstart++;
- } else {
- s->strstart += s->match_length;
- s->match_length = 0;
- s->ins_h = s->window[s->strstart];
- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
- Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
- /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
- * matter since it will be recomputed at next deflate call.
- */
- }
- } else {
- /* No match, output a literal byte */
- Tracevv((stderr,"%c", s->window[s->strstart]));
- bflush = _tr_tally (s, 0, s->window[s->strstart]);
- s->lookahead--;
- s->strstart++;
- }
- if (bflush) FLUSH_BLOCK(s, 0);
- }
- FLUSH_BLOCK(s, flush == Z_FINISH);
- return flush == Z_FINISH ? finish_done : block_done;
-}
-
-/* ===========================================================================
- * Same as above, but achieves better compression. We use a lazy
- * evaluation for matches: a match is finally adopted only if there is
- * no better match at the next window position.
- */
-local block_state deflate_slow(s, flush)
- deflate_state *s;
- int flush;
-{
- IPos hash_head = NIL; /* head of hash chain */
- int bflush; /* set if current block must be flushed */
-
- /* Process the input block. */
- for (;;) {
- /* Make sure that we always have enough lookahead, except
- * at the end of the input file. We need MAX_MATCH bytes
- * for the next match, plus MIN_MATCH bytes to insert the
- * string following the next match.
- */
- if (s->lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) {
- return need_more;
- }
- if (s->lookahead == 0) break; /* flush the current block */
- }
-
- /* Insert the string window[strstart .. strstart+2] in the
- * dictionary, and set hash_head to the head of the hash chain:
- */
- if (s->lookahead >= MIN_MATCH) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
-
- /* Find the longest match, discarding those <= prev_length.
- */
- s->prev_length = s->match_length, s->prev_match = s->match_start;
- s->match_length = MIN_MATCH-1;
-
- if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
- s->strstart - hash_head <= MAX_DIST(s)) {
- /* To simplify the code, we prevent matches with the string
- * of window index 0 (in particular we have to avoid a match
- * of the string with itself at the start of the input file).
- */
- if (s->strategy != Z_HUFFMAN_ONLY) {
- s->match_length = longest_match (s, hash_head);
- }
- /* longest_match() sets match_start */
-
- if (s->match_length <= 5 && (s->strategy == Z_FILTERED ||
- (s->match_length == MIN_MATCH &&
- s->strstart - s->match_start > TOO_FAR))) {
-
- /* If prev_match is also MIN_MATCH, match_start is garbage
- * but we will ignore the current match anyway.
- */
- s->match_length = MIN_MATCH-1;
- }
- }
- /* If there was a match at the previous step and the current
- * match is not better, output the previous match:
- */
- if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
- uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
- /* Do not insert strings in hash table beyond this. */
-
- check_match(s, s->strstart-1, s->prev_match, s->prev_length);
-
- bflush = _tr_tally(s, s->strstart -1 - s->prev_match,
- s->prev_length - MIN_MATCH);
-
- /* Insert in hash table all strings up to the end of the match.
- * strstart-1 and strstart are already inserted. If there is not
- * enough lookahead, the last two strings are not inserted in
- * the hash table.
- */
- s->lookahead -= s->prev_length-1;
- s->prev_length -= 2;
- do {
- if (++s->strstart <= max_insert) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
- } while (--s->prev_length != 0);
- s->match_available = 0;
- s->match_length = MIN_MATCH-1;
- s->strstart++;
-
- if (bflush) FLUSH_BLOCK(s, 0);
-
- } else if (s->match_available) {
- /* If there was no match at the previous position, output a
- * single literal. If there was a match but the current match
- * is longer, truncate the previous match to a single literal.
- */
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
- if (_tr_tally (s, 0, s->window[s->strstart-1])) {
- FLUSH_BLOCK_ONLY(s, 0);
- }
- s->strstart++;
- s->lookahead--;
- if (s->strm->avail_out == 0) return need_more;
- } else {
- /* There is no previous match to compare with, wait for
- * the next step to decide.
- */
- s->match_available = 1;
- s->strstart++;
- s->lookahead--;
- }
- }
- Assert (flush != Z_NO_FLUSH, "no flush?");
- if (s->match_available) {
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
- _tr_tally (s, 0, s->window[s->strstart-1]);
- s->match_available = 0;
- }
- FLUSH_BLOCK(s, flush == Z_FINISH);
- return flush == Z_FINISH ? finish_done : block_done;
-}
-/* --- deflate.c */
-
-/* +++ trees.c */
-/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-1996 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * ALGORITHM
- *
- * The "deflation" process uses several Huffman trees. The more
- * common source values are represented by shorter bit sequences.
- *
- * Each code tree is stored in a compressed form which is itself
- * a Huffman encoding of the lengths of all the code strings (in
- * ascending order by source values). The actual code strings are
- * reconstructed from the lengths in the inflate process, as described
- * in the deflate specification.
- *
- * REFERENCES
- *
- * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
- * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
- *
- * Storer, James A.
- * Data Compression: Methods and Theory, pp. 49-50.
- * Computer Science Press, 1988. ISBN 0-7167-8156-5.
- *
- * Sedgewick, R.
- * Algorithms, p290.
- * Addison-Wesley, 1983. ISBN 0-201-06672-6.
- */
-
-/* From: trees.c,v 1.11 1996/07/24 13:41:06 me Exp $ */
-
-/* #include "deflate.h" */
-
-#ifdef DEBUG_ZLIB
-# include <ctype.h>
-#endif
-
-/* ===========================================================================
- * Constants
- */
-
-#define MAX_BL_BITS 7
-/* Bit length codes must not exceed MAX_BL_BITS bits */
-
-#define END_BLOCK 256
-/* end of block literal code */
-
-#define REP_3_6 16
-/* repeat previous bit length 3-6 times (2 bits of repeat count) */
-
-#define REPZ_3_10 17
-/* repeat a zero length 3-10 times (3 bits of repeat count) */
-
-#define REPZ_11_138 18
-/* repeat a zero length 11-138 times (7 bits of repeat count) */
-
-local int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
- = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
-
-local int extra_dbits[D_CODES] /* extra bits for each distance code */
- = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
-
-local int extra_blbits[BL_CODES]/* extra bits for each bit length code */
- = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
-
-local uch bl_order[BL_CODES]
- = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
-/* The lengths of the bit length codes are sent in order of decreasing
- * probability, to avoid transmitting the lengths for unused bit length codes.
- */
-
-#define Buf_size (8 * 2*sizeof(char))
-/* Number of bits used within bi_buf. (bi_buf might be implemented on
- * more than 16 bits on some systems.)
- */
-
-/* ===========================================================================
- * Local data. These are initialized only once.
- */
-
-local ct_data static_ltree[L_CODES+2];
-/* The static literal tree. Since the bit lengths are imposed, there is no
- * need for the L_CODES extra codes used during heap construction. However
- * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
- * below).
- */
-
-local ct_data static_dtree[D_CODES];
-/* The static distance tree. (Actually a trivial tree since all codes use
- * 5 bits.)
- */
-
-local uch dist_code[512];
-/* distance codes. The first 256 values correspond to the distances
- * 3 .. 258, the last 256 values correspond to the top 8 bits of
- * the 15 bit distances.
- */
-
-local uch length_code[MAX_MATCH-MIN_MATCH+1];
-/* length code for each normalized match length (0 == MIN_MATCH) */
-
-local int base_length[LENGTH_CODES];
-/* First normalized length for each code (0 = MIN_MATCH) */
-
-local int base_dist[D_CODES];
-/* First normalized distance for each code (0 = distance of 1) */
-
-struct static_tree_desc_s {
- ct_data *static_tree; /* static tree or NULL */
- intf *extra_bits; /* extra bits for each code or NULL */
- int extra_base; /* base index for extra_bits */
- int elems; /* max number of elements in the tree */
- int max_length; /* max bit length for the codes */
-};
-
-local static_tree_desc static_l_desc =
-{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
-
-local static_tree_desc static_d_desc =
-{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS};
-
-local static_tree_desc static_bl_desc =
-{(ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS};
-
-/* ===========================================================================
- * Local (static) routines in this file.
- */
-
-local void tr_static_init OF((void));
-local void init_block OF((deflate_state *s));
-local void pqdownheap OF((deflate_state *s, ct_data *tree, int k));
-local void gen_bitlen OF((deflate_state *s, tree_desc *desc));
-local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count));
-local void build_tree OF((deflate_state *s, tree_desc *desc));
-local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code));
-local void send_tree OF((deflate_state *s, ct_data *tree, int max_code));
-local int build_bl_tree OF((deflate_state *s));
-local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
- int blcodes));
-local void compress_block OF((deflate_state *s, ct_data *ltree,
- ct_data *dtree));
-local void set_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
-local void bi_windup OF((deflate_state *s));
-local void bi_flush OF((deflate_state *s));
-local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
- int header));
-
-#ifndef DEBUG_ZLIB
-# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
- /* Send a code of the given tree. c and tree must not have side effects */
-
-#else /* DEBUG_ZLIB */
-# define send_code(s, c, tree) \
- { if (verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \
- send_bits(s, tree[c].Code, tree[c].Len); }
-#endif
-
-#define d_code(dist) \
- ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
-/* Mapping from a distance to a distance code. dist is the distance - 1 and
- * must not have side effects. dist_code[256] and dist_code[257] are never
- * used.
- */
-
-/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */
-#define put_short(s, w) { \
- put_byte(s, (uch)((w) & 0xff)); \
- put_byte(s, (uch)((ush)(w) >> 8)); \
-}
-
-/* ===========================================================================
- * Send a value on a given number of bits.
- * IN assertion: length <= 16 and value fits in length bits.
- */
-#ifdef DEBUG_ZLIB
-local void send_bits OF((deflate_state *s, int value, int length));
-
-local void send_bits(s, value, length)
- deflate_state *s;
- int value; /* value to send */
- int length; /* number of bits */
-{
- Tracevv((stderr," l %2d v %4x ", length, value));
- Assert(length > 0 && length <= 15, "invalid length");
- s->bits_sent += (ulg)length;
-
- /* If not enough room in bi_buf, use (valid) bits from bi_buf and
- * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
- * unused bits in value.
- */
- if (s->bi_valid > (int)Buf_size - length) {
- s->bi_buf |= (value << s->bi_valid);
- put_short(s, s->bi_buf);
- s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
- s->bi_valid += length - Buf_size;
- } else {
- s->bi_buf |= value << s->bi_valid;
- s->bi_valid += length;
- }
-}
-#else /* !DEBUG_ZLIB */
-
-#define send_bits(s, value, length) \
-{ int len = length;\
- if (s->bi_valid > (int)Buf_size - len) {\
- int val = value;\
- s->bi_buf |= (val << s->bi_valid);\
- put_short(s, s->bi_buf);\
- s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
- s->bi_valid += len - Buf_size;\
- } else {\
- s->bi_buf |= (value) << s->bi_valid;\
- s->bi_valid += len;\
- }\
-}
-#endif /* DEBUG_ZLIB */
-
-
-#define MAX(a,b) (a >= b ? a : b)
-/* the arguments must not have side effects */
-
-/* ===========================================================================
- * Initialize the various 'constant' tables. In a multi-threaded environment,
- * this function may be called by two threads concurrently, but this is
- * harmless since both invocations do exactly the same thing.
- */
-local void tr_static_init()
-{
- static int static_init_done = 0;
- int n; /* iterates over tree elements */
- int bits; /* bit counter */
- int length; /* length value */
- int code; /* code value */
- int dist; /* distance index */
- ush bl_count[MAX_BITS+1];
- /* number of codes at each bit length for an optimal tree */
-
- if (static_init_done) return;
-
- /* Initialize the mapping length (0..255) -> length code (0..28) */
- length = 0;
- for (code = 0; code < LENGTH_CODES-1; code++) {
- base_length[code] = length;
- for (n = 0; n < (1<<extra_lbits[code]); n++) {
- length_code[length++] = (uch)code;
- }
- }
- Assert (length == 256, "tr_static_init: length != 256");
- /* Note that the length 255 (match length 258) can be represented
- * in two different ways: code 284 + 5 bits or code 285, so we
- * overwrite length_code[255] to use the best encoding:
- */
- length_code[length-1] = (uch)code;
-
- /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
- dist = 0;
- for (code = 0 ; code < 16; code++) {
- base_dist[code] = dist;
- for (n = 0; n < (1<<extra_dbits[code]); n++) {
- dist_code[dist++] = (uch)code;
- }
- }
- Assert (dist == 256, "tr_static_init: dist != 256");
- dist >>= 7; /* from now on, all distances are divided by 128 */
- for ( ; code < D_CODES; code++) {
- base_dist[code] = dist << 7;
- for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
- dist_code[256 + dist++] = (uch)code;
- }
- }
- Assert (dist == 256, "tr_static_init: 256+dist != 512");
-
- /* Construct the codes of the static literal tree */
- for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
- n = 0;
- while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
- while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
- while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
- while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
- /* Codes 286 and 287 do not exist, but we must include them in the
- * tree construction to get a canonical Huffman tree (longest code
- * all ones)
- */
- gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
-
- /* The static distance tree is trivial: */
- for (n = 0; n < D_CODES; n++) {
- static_dtree[n].Len = 5;
- static_dtree[n].Code = bi_reverse((unsigned)n, 5);
- }
- static_init_done = 1;
-}
-
-/* ===========================================================================
- * Initialize the tree data structures for a new zlib stream.
- */
-void _tr_init(s)
- deflate_state *s;
-{
- tr_static_init();
-
- s->compressed_len = 0L;
-
- s->l_desc.dyn_tree = s->dyn_ltree;
- s->l_desc.stat_desc = &static_l_desc;
-
- s->d_desc.dyn_tree = s->dyn_dtree;
- s->d_desc.stat_desc = &static_d_desc;
-
- s->bl_desc.dyn_tree = s->bl_tree;
- s->bl_desc.stat_desc = &static_bl_desc;
-
- s->bi_buf = 0;
- s->bi_valid = 0;
- s->last_eob_len = 8; /* enough lookahead for inflate */
-#ifdef DEBUG_ZLIB
- s->bits_sent = 0L;
-#endif
-
- /* Initialize the first block of the first file: */
- init_block(s);
-}
-
-/* ===========================================================================
- * Initialize a new block.
- */
-local void init_block(s)
- deflate_state *s;
-{
- int n; /* iterates over tree elements */
-
- /* Initialize the trees. */
- for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0;
- for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0;
- for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-
- s->dyn_ltree[END_BLOCK].Freq = 1;
- s->opt_len = s->static_len = 0L;
- s->last_lit = s->matches = 0;
-}
-
-#define SMALLEST 1
-/* Index within the heap array of least frequent node in the Huffman tree */
-
-
-/* ===========================================================================
- * Remove the smallest element from the heap and recreate the heap with
- * one less element. Updates heap and heap_len.
- */
-#define pqremove(s, tree, top) \
-{\
- top = s->heap[SMALLEST]; \
- s->heap[SMALLEST] = s->heap[s->heap_len--]; \
- pqdownheap(s, tree, SMALLEST); \
-}
-
-/* ===========================================================================
- * Compares to subtrees, using the tree depth as tie breaker when
- * the subtrees have equal frequency. This minimizes the worst case length.
- */
-#define smaller(tree, n, m, depth) \
- (tree[n].Freq < tree[m].Freq || \
- (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
-
-/* ===========================================================================
- * Restore the heap property by moving down the tree starting at node k,
- * exchanging a node with the smallest of its two sons if necessary, stopping
- * when the heap property is re-established (each father smaller than its
- * two sons).
- */
-local void pqdownheap(s, tree, k)
- deflate_state *s;
- ct_data *tree; /* the tree to restore */
- int k; /* node to move down */
-{
- int v = s->heap[k];
- int j = k << 1; /* left son of k */
- while (j <= s->heap_len) {
- /* Set j to the smallest of the two sons: */
- if (j < s->heap_len &&
- smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
- j++;
- }
- /* Exit if v is smaller than both sons */
- if (smaller(tree, v, s->heap[j], s->depth)) break;
-
- /* Exchange v with the smallest son */
- s->heap[k] = s->heap[j]; k = j;
-
- /* And continue down the tree, setting j to the left son of k */
- j <<= 1;
- }
- s->heap[k] = v;
-}
-
-/* ===========================================================================
- * Compute the optimal bit lengths for a tree and update the total bit length
- * for the current block.
- * IN assertion: the fields freq and dad are set, heap[heap_max] and
- * above are the tree nodes sorted by increasing frequency.
- * OUT assertions: the field len is set to the optimal bit length, the
- * array bl_count contains the frequencies for each bit length.
- * The length opt_len is updated; static_len is also updated if stree is
- * not null.
- */
-local void gen_bitlen(s, desc)
- deflate_state *s;
- tree_desc *desc; /* the tree descriptor */
-{
- ct_data *tree = desc->dyn_tree;
- int max_code = desc->max_code;
- ct_data *stree = desc->stat_desc->static_tree;
- intf *extra = desc->stat_desc->extra_bits;
- int base = desc->stat_desc->extra_base;
- int max_length = desc->stat_desc->max_length;
- int h; /* heap index */
- int n, m; /* iterate over the tree elements */
- int bits; /* bit length */
- int xbits; /* extra bits */
- ush f; /* frequency */
- int overflow = 0; /* number of elements with bit length too large */
-
- for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
-
- /* In a first pass, compute the optimal bit lengths (which may
- * overflow in the case of the bit length tree).
- */
- tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
-
- for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
- n = s->heap[h];
- bits = tree[tree[n].Dad].Len + 1;
- if (bits > max_length) bits = max_length, overflow++;
- tree[n].Len = (ush)bits;
- /* We overwrite tree[n].Dad which is no longer needed */
-
- if (n > max_code) continue; /* not a leaf node */
-
- s->bl_count[bits]++;
- xbits = 0;
- if (n >= base) xbits = extra[n-base];
- f = tree[n].Freq;
- s->opt_len += (ulg)f * (bits + xbits);
- if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
- }
- if (overflow == 0) return;
-
- Trace((stderr,"\nbit length overflow\n"));
- /* This happens for example on obj2 and pic of the Calgary corpus */
-
- /* Find the first bit length which could increase: */
- do {
- bits = max_length-1;
- while (s->bl_count[bits] == 0) bits--;
- s->bl_count[bits]--; /* move one leaf down the tree */
- s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
- s->bl_count[max_length]--;
- /* The brother of the overflow item also moves one step up,
- * but this does not affect bl_count[max_length]
- */
- overflow -= 2;
- } while (overflow > 0);
-
- /* Now recompute all bit lengths, scanning in increasing frequency.
- * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
- * lengths instead of fixing only the wrong ones. This idea is taken
- * from 'ar' written by Haruhiko Okumura.)
- */
- for (bits = max_length; bits != 0; bits--) {
- n = s->bl_count[bits];
- while (n != 0) {
- m = s->heap[--h];
- if (m > max_code) continue;
- if (tree[m].Len != (unsigned) bits) {
- Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
- s->opt_len += ((long)bits - (long)tree[m].Len)
- *(long)tree[m].Freq;
- tree[m].Len = (ush)bits;
- }
- n--;
- }
- }
-}
-
-/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- * zero code length.
- */
-local void gen_codes (tree, max_code, bl_count)
- ct_data *tree; /* the tree to decorate */
- int max_code; /* largest code with non zero frequency */
- ushf *bl_count; /* number of codes at each bit length */
-{
- ush next_code[MAX_BITS+1]; /* next code value for each bit length */
- ush code = 0; /* running code value */
- int bits; /* bit index */
- int n; /* code index */
-
- /* The distribution counts are first used to generate the code values
- * without bit reversal.
- */
- for (bits = 1; bits <= MAX_BITS; bits++) {
- next_code[bits] = code = (code + bl_count[bits-1]) << 1;
- }
- /* Check that the bit counts in bl_count are consistent. The last code
- * must be all ones.
- */
- Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
- "inconsistent bit counts");
- Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
- for (n = 0; n <= max_code; n++) {
- int len = tree[n].Len;
- if (len == 0) continue;
- /* Now reverse the bits */
- tree[n].Code = bi_reverse(next_code[len]++, len);
-
- Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
- n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
- }
-}
-
-/* ===========================================================================
- * Construct one Huffman tree and assigns the code bit strings and lengths.
- * Update the total bit length for the current block.
- * IN assertion: the field freq is set for all tree elements.
- * OUT assertions: the fields len and code are set to the optimal bit length
- * and corresponding code. The length opt_len is updated; static_len is
- * also updated if stree is not null. The field max_code is set.
- */
-local void build_tree(s, desc)
- deflate_state *s;
- tree_desc *desc; /* the tree descriptor */
-{
- ct_data *tree = desc->dyn_tree;
- ct_data *stree = desc->stat_desc->static_tree;
- int elems = desc->stat_desc->elems;
- int n, m; /* iterate over heap elements */
- int max_code = -1; /* largest code with non zero frequency */
- int node; /* new node being created */
-
- /* Construct the initial heap, with least frequent element in
- * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
- * heap[0] is not used.
- */
- s->heap_len = 0, s->heap_max = HEAP_SIZE;
-
- for (n = 0; n < elems; n++) {
- if (tree[n].Freq != 0) {
- s->heap[++(s->heap_len)] = max_code = n;
- s->depth[n] = 0;
- } else {
- tree[n].Len = 0;
- }
- }
-
- /* The pkzip format requires that at least one distance code exists,
- * and that at least one bit should be sent even if there is only one
- * possible code. So to avoid special checks later on we force at least
- * two codes of non zero frequency.
- */
- while (s->heap_len < 2) {
- node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
- tree[node].Freq = 1;
- s->depth[node] = 0;
- s->opt_len--; if (stree) s->static_len -= stree[node].Len;
- /* node is 0 or 1 so it does not have extra bits */
- }
- desc->max_code = max_code;
-
- /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
- * establish sub-heaps of increasing lengths:
- */
- for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
-
- /* Construct the Huffman tree by repeatedly combining the least two
- * frequent nodes.
- */
- node = elems; /* next internal node of the tree */
- do {
- pqremove(s, tree, n); /* n = node of least frequency */
- m = s->heap[SMALLEST]; /* m = node of next least frequency */
-
- s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
- s->heap[--(s->heap_max)] = m;
-
- /* Create a new node father of n and m */
- tree[node].Freq = tree[n].Freq + tree[m].Freq;
- s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1);
- tree[n].Dad = tree[m].Dad = (ush)node;
-#ifdef DUMP_BL_TREE
- if (tree == s->bl_tree) {
- fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
- node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
- }
-#endif
- /* and insert the new node in the heap */
- s->heap[SMALLEST] = node++;
- pqdownheap(s, tree, SMALLEST);
-
- } while (s->heap_len >= 2);
-
- s->heap[--(s->heap_max)] = s->heap[SMALLEST];
-
- /* At this point, the fields freq and dad are set. We can now
- * generate the bit lengths.
- */
- gen_bitlen(s, (tree_desc *)desc);
-
- /* The field len is now set, we can generate the bit codes */
- gen_codes ((ct_data *)tree, max_code, s->bl_count);
-}
-
-/* ===========================================================================
- * Scan a literal or distance tree to determine the frequencies of the codes
- * in the bit length tree.
- */
-local void scan_tree (s, tree, max_code)
- deflate_state *s;
- ct_data *tree; /* the tree to be scanned */
- int max_code; /* and its largest code of non zero frequency */
-{
- int n; /* iterates over all tree elements */
- int prevlen = -1; /* last emitted length */
- int curlen; /* length of current code */
- int nextlen = tree[0].Len; /* length of next code */
- int count = 0; /* repeat count of the current code */
- int max_count = 7; /* max repeat count */
- int min_count = 4; /* min repeat count */
-
- if (nextlen == 0) max_count = 138, min_count = 3;
- tree[max_code+1].Len = (ush)0xffff; /* guard */
-
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen; nextlen = tree[n+1].Len;
- if (++count < max_count && curlen == nextlen) {
- continue;
- } else if (count < min_count) {
- s->bl_tree[curlen].Freq += count;
- } else if (curlen != 0) {
- if (curlen != prevlen) s->bl_tree[curlen].Freq++;
- s->bl_tree[REP_3_6].Freq++;
- } else if (count <= 10) {
- s->bl_tree[REPZ_3_10].Freq++;
- } else {
- s->bl_tree[REPZ_11_138].Freq++;
- }
- count = 0; prevlen = curlen;
- if (nextlen == 0) {
- max_count = 138, min_count = 3;
- } else if (curlen == nextlen) {
- max_count = 6, min_count = 3;
- } else {
- max_count = 7, min_count = 4;
- }
- }
-}
-
-/* ===========================================================================
- * Send a literal or distance tree in compressed form, using the codes in
- * bl_tree.
- */
-local void send_tree (s, tree, max_code)
- deflate_state *s;
- ct_data *tree; /* the tree to be scanned */
- int max_code; /* and its largest code of non zero frequency */
-{
- int n; /* iterates over all tree elements */
- int prevlen = -1; /* last emitted length */
- int curlen; /* length of current code */
- int nextlen = tree[0].Len; /* length of next code */
- int count = 0; /* repeat count of the current code */
- int max_count = 7; /* max repeat count */
- int min_count = 4; /* min repeat count */
-
- /* tree[max_code+1].Len = -1; */ /* guard already set */
- if (nextlen == 0) max_count = 138, min_count = 3;
-
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen; nextlen = tree[n+1].Len;
- if (++count < max_count && curlen == nextlen) {
- continue;
- } else if (count < min_count) {
- do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
-
- } else if (curlen != 0) {
- if (curlen != prevlen) {
- send_code(s, curlen, s->bl_tree); count--;
- }
- Assert(count >= 3 && count <= 6, " 3_6?");
- send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
-
- } else if (count <= 10) {
- send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
-
- } else {
- send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
- }
- count = 0; prevlen = curlen;
- if (nextlen == 0) {
- max_count = 138, min_count = 3;
- } else if (curlen == nextlen) {
- max_count = 6, min_count = 3;
- } else {
- max_count = 7, min_count = 4;
- }
- }
-}
-
-/* ===========================================================================
- * Construct the Huffman tree for the bit lengths and return the index in
- * bl_order of the last bit length code to send.
- */
-local int build_bl_tree(s)
- deflate_state *s;
-{
- int max_blindex; /* index of last bit length code of non zero freq */
-
- /* Determine the bit length frequencies for literal and distance trees */
- scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
- scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
-
- /* Build the bit length tree: */
- build_tree(s, (tree_desc *)(&(s->bl_desc)));
- /* opt_len now includes the length of the tree representations, except
- * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
- */
-
- /* Determine the number of bit length codes to send. The pkzip format
- * requires that at least 4 bit length codes be sent. (appnote.txt says
- * 3 but the actual value used is 4.)
- */
- for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
- if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
- }
- /* Update opt_len to include the bit length tree and counts */
- s->opt_len += 3*(max_blindex+1) + 5+5+4;
- Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
- s->opt_len, s->static_len));
-
- return max_blindex;
-}
-
-/* ===========================================================================
- * Send the header for a block using dynamic Huffman trees: the counts, the
- * lengths of the bit length codes, the literal tree and the distance tree.
- * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
- */
-local void send_all_trees(s, lcodes, dcodes, blcodes)
- deflate_state *s;
- int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{
- int rank; /* index in bl_order */
-
- Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
- Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
- "too many codes");
- Tracev((stderr, "\nbl counts: "));
- send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
- send_bits(s, dcodes-1, 5);
- send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
- for (rank = 0; rank < blcodes; rank++) {
- Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
- send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
- }
- Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-
- send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
- Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-
- send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
- Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-}
-
-/* ===========================================================================
- * Send a stored block
- */
-void _tr_stored_block(s, buf, stored_len, eof)
- deflate_state *s;
- charf *buf; /* input block */
- ulg stored_len; /* length of input block */
- int eof; /* true if this is the last block for a file */
-{
- send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */
- s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
- s->compressed_len += (stored_len + 4) << 3;
-
- copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
-}
-
-/* Send just the `stored block' type code without any length bytes or data.
- */
-void _tr_stored_type_only(s)
- deflate_state *s;
-{
- send_bits(s, (STORED_BLOCK << 1), 3);
- bi_windup(s);
- s->compressed_len = (s->compressed_len + 3) & ~7L;
-}
-
-
-/* ===========================================================================
- * Send one empty static block to give enough lookahead for inflate.
- * This takes 10 bits, of which 7 may remain in the bit buffer.
- * The current inflate code requires 9 bits of lookahead. If the
- * last two codes for the previous block (real code plus EOB) were coded
- * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode
- * the last real code. In this case we send two empty static blocks instead
- * of one. (There are no problems if the previous block is stored or fixed.)
- * To simplify the code, we assume the worst case of last real code encoded
- * on one bit only.
- */
-void _tr_align(s)
- deflate_state *s;
-{
- send_bits(s, STATIC_TREES<<1, 3);
- send_code(s, END_BLOCK, static_ltree);
- s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
- bi_flush(s);
- /* Of the 10 bits for the empty block, we have already sent
- * (10 - bi_valid) bits. The lookahead for the last real code (before
- * the EOB of the previous block) was thus at least one plus the length
- * of the EOB plus what we have just sent of the empty static block.
- */
- if (1 + s->last_eob_len + 10 - s->bi_valid < 9) {
- send_bits(s, STATIC_TREES<<1, 3);
- send_code(s, END_BLOCK, static_ltree);
- s->compressed_len += 10L;
- bi_flush(s);
- }
- s->last_eob_len = 7;
-}
-
-/* ===========================================================================
- * Determine the best encoding for the current block: dynamic trees, static
- * trees or store, and output the encoded block to the zip file. This function
- * returns the total compressed length for the file so far.
- */
-ulg _tr_flush_block(s, buf, stored_len, eof)
- deflate_state *s;
- charf *buf; /* input block, or NULL if too old */
- ulg stored_len; /* length of input block */
- int eof; /* true if this is the last block for a file */
-{
- ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
- int max_blindex = 0; /* index of last bit length code of non zero freq */
-
- /* Build the Huffman trees unless a stored block is forced */
- if (s->level > 0) {
-
- /* Check if the file is ascii or binary */
- if (s->data_type == Z_UNKNOWN) set_data_type(s);
-
- /* Construct the literal and distance trees */
- build_tree(s, (tree_desc *)(&(s->l_desc)));
- Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
- s->static_len));
-
- build_tree(s, (tree_desc *)(&(s->d_desc)));
- Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
- s->static_len));
- /* At this point, opt_len and static_len are the total bit lengths of
- * the compressed block data, excluding the tree representations.
- */
-
- /* Build the bit length tree for the above two trees, and get the index
- * in bl_order of the last bit length code to send.
- */
- max_blindex = build_bl_tree(s);
-
- /* Determine the best encoding. Compute first the block length in bytes*/
- opt_lenb = (s->opt_len+3+7)>>3;
- static_lenb = (s->static_len+3+7)>>3;
-
- Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
- opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
- s->last_lit));
-
- if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
-
- } else {
- Assert(buf != (char*)0, "lost buf");
- opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
- }
-
- /* If compression failed and this is the first and last block,
- * and if the .zip file can be seeked (to rewrite the local header),
- * the whole file is transformed into a stored file:
- */
-#ifdef STORED_FILE_OK
-# ifdef FORCE_STORED_FILE
- if (eof && s->compressed_len == 0L) { /* force stored file */
-# else
- if (stored_len <= opt_lenb && eof && s->compressed_len==0L && seekable()) {
-# endif
- /* Since LIT_BUFSIZE <= 2*WSIZE, the input data must be there: */
- if (buf == (charf*)0) error ("block vanished");
-
- copy_block(s, buf, (unsigned)stored_len, 0); /* without header */
- s->compressed_len = stored_len << 3;
- s->method = STORED;
- } else
-#endif /* STORED_FILE_OK */
-
-#ifdef FORCE_STORED
- if (buf != (char*)0) { /* force stored block */
-#else
- if (stored_len+4 <= opt_lenb && buf != (char*)0) {
- /* 4: two words for the lengths */
-#endif
- /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
- * Otherwise we can't have processed more than WSIZE input bytes since
- * the last block flush, because compression would have been
- * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
- * transform a block into a stored block.
- */
- _tr_stored_block(s, buf, stored_len, eof);
-
-#ifdef FORCE_STATIC
- } else if (static_lenb >= 0) { /* force static trees */
-#else
- } else if (static_lenb == opt_lenb) {
-#endif
- send_bits(s, (STATIC_TREES<<1)+eof, 3);
- compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
- s->compressed_len += 3 + s->static_len;
- } else {
- send_bits(s, (DYN_TREES<<1)+eof, 3);
- send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
- max_blindex+1);
- compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
- s->compressed_len += 3 + s->opt_len;
- }
- Assert (s->compressed_len == s->bits_sent, "bad compressed size");
- init_block(s);
-
- if (eof) {
- bi_windup(s);
- s->compressed_len += 7; /* align on byte boundary */
- }
- Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
- s->compressed_len-7*eof));
-
- return s->compressed_len >> 3;
-}
-
-/* ===========================================================================
- * Save the match info and tally the frequency counts. Return true if
- * the current block must be flushed.
- */
-int _tr_tally (s, dist, lc)
- deflate_state *s;
- unsigned dist; /* distance of matched string */
- unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{
- s->d_buf[s->last_lit] = (ush)dist;
- s->l_buf[s->last_lit++] = (uch)lc;
- if (dist == 0) {
- /* lc is the unmatched char */
- s->dyn_ltree[lc].Freq++;
- } else {
- s->matches++;
- /* Here, lc is the match length - MIN_MATCH */
- dist--; /* dist = match distance - 1 */
- Assert((ush)dist < (ush)MAX_DIST(s) &&
- (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
- (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
-
- s->dyn_ltree[length_code[lc]+LITERALS+1].Freq++;
- s->dyn_dtree[d_code(dist)].Freq++;
- }
-
- /* Try to guess if it is profitable to stop the current block here */
- if (s->level > 2 && (s->last_lit & 0xfff) == 0) {
- /* Compute an upper bound for the compressed length */
- ulg out_length = (ulg)s->last_lit*8L;
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
- int dcode;
- for (dcode = 0; dcode < D_CODES; dcode++) {
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
- (5L+extra_dbits[dcode]);
- }
- out_length >>= 3;
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
- s->last_lit, in_length, out_length,
- 100L - out_length*100L/in_length));
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
- }
- return (s->last_lit == s->lit_bufsize-1);
- /* We avoid equality with lit_bufsize because of wraparound at 64K
- * on 16 bit machines and because stored blocks are restricted to
- * 64K-1 bytes.
- */
-}
-
-/* ===========================================================================
- * Send the block data compressed using the given Huffman trees
- */
-local void compress_block(s, ltree, dtree)
- deflate_state *s;
- ct_data *ltree; /* literal tree */
- ct_data *dtree; /* distance tree */
-{
- unsigned dist; /* distance of matched string */
- int lc; /* match length or unmatched char (if dist == 0) */
- unsigned lx = 0; /* running index in l_buf */
- unsigned code; /* the code to send */
- int extra; /* number of extra bits to send */
-
- if (s->last_lit != 0) do {
- dist = s->d_buf[lx];
- lc = s->l_buf[lx++];
- if (dist == 0) {
- send_code(s, lc, ltree); /* send a literal byte */
- Tracecv(isgraph(lc), (stderr," '%c' ", lc));
- } else {
- /* Here, lc is the match length - MIN_MATCH */
- code = length_code[lc];
- send_code(s, code+LITERALS+1, ltree); /* send the length code */
- extra = extra_lbits[code];
- if (extra != 0) {
- lc -= base_length[code];
- send_bits(s, lc, extra); /* send the extra length bits */
- }
- dist--; /* dist is now the match distance - 1 */
- code = d_code(dist);
- Assert (code < D_CODES, "bad d_code");
-
- send_code(s, code, dtree); /* send the distance code */
- extra = extra_dbits[code];
- if (extra != 0) {
- dist -= base_dist[code];
- send_bits(s, dist, extra); /* send the extra distance bits */
- }
- } /* literal or match pair ? */
-
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
- Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow");
-
- } while (lx < s->last_lit);
-
- send_code(s, END_BLOCK, ltree);
- s->last_eob_len = ltree[END_BLOCK].Len;
-}
-
-/* ===========================================================================
- * Set the data type to ASCII or BINARY, using a crude approximation:
- * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise.
- * IN assertion: the fields freq of dyn_ltree are set and the total of all
- * frequencies does not exceed 64K (to fit in an int on 16 bit machines).
- */
-local void set_data_type(s)
- deflate_state *s;
-{
- int n = 0;
- unsigned ascii_freq = 0;
- unsigned bin_freq = 0;
- while (n < 7) bin_freq += s->dyn_ltree[n++].Freq;
- while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq;
- while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
- s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII);
-}
-
-/* ===========================================================================
- * Reverse the first len bits of a code, using straightforward code (a faster
- * method would use a table)
- * IN assertion: 1 <= len <= 15
- */
-local unsigned bi_reverse(code, len)
- unsigned code; /* the value to invert */
- int len; /* its bit length */
-{
- register unsigned res = 0;
- do {
- res |= code & 1;
- code >>= 1, res <<= 1;
- } while (--len > 0);
- return res >> 1;
-}
-
-/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */
-local void bi_flush(s)
- deflate_state *s;
-{
- if (s->bi_valid == 16) {
- put_short(s, s->bi_buf);
- s->bi_buf = 0;
- s->bi_valid = 0;
- } else if (s->bi_valid >= 8) {
- put_byte(s, (Byte)s->bi_buf);
- s->bi_buf >>= 8;
- s->bi_valid -= 8;
- }
-}
-
-/* ===========================================================================
- * Flush the bit buffer and align the output on a byte boundary
- */
-local void bi_windup(s)
- deflate_state *s;
-{
- if (s->bi_valid > 8) {
- put_short(s, s->bi_buf);
- } else if (s->bi_valid > 0) {
- put_byte(s, (Byte)s->bi_buf);
- }
- s->bi_buf = 0;
- s->bi_valid = 0;
-#ifdef DEBUG_ZLIB
- s->bits_sent = (s->bits_sent+7) & ~7;
-#endif
-}
-
-/* ===========================================================================
- * Copy a stored block, storing first the length and its
- * one's complement if requested.
- */
-local void copy_block(s, buf, len, header)
- deflate_state *s;
- charf *buf; /* the input data */
- unsigned len; /* its length */
- int header; /* true if block header must be written */
-{
- bi_windup(s); /* align on byte boundary */
- s->last_eob_len = 8; /* enough lookahead for inflate */
-
- if (header) {
- put_short(s, (ush)len);
- put_short(s, (ush)~len);
-#ifdef DEBUG_ZLIB
- s->bits_sent += 2*16;
-#endif
- }
-#ifdef DEBUG_ZLIB
- s->bits_sent += (ulg)len<<3;
-#endif
- /* bundle up the put_byte(s, *buf++) calls */
- zmemcpy(&s->pending_buf[s->pending], buf, len);
- s->pending += len;
-}
-/* --- trees.c */
-
-/* +++ inflate.c */
-/* inflate.c -- zlib interface to inflate modules
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-
-/* +++ infblock.h */
-/* infblock.h -- header to use infblock.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_blocks_state;
-typedef struct inflate_blocks_state FAR inflate_blocks_statef;
-
-extern inflate_blocks_statef * inflate_blocks_new OF((
- z_streamp z,
- check_func c, /* check function */
- uInt w)); /* window size */
-
-extern int inflate_blocks OF((
- inflate_blocks_statef *,
- z_streamp ,
- int)); /* initial return code */
-
-extern void inflate_blocks_reset OF((
- inflate_blocks_statef *,
- z_streamp ,
- uLongf *)); /* check value on output */
-
-extern int inflate_blocks_free OF((
- inflate_blocks_statef *,
- z_streamp ,
- uLongf *)); /* check value on output */
-
-extern void inflate_set_dictionary OF((
- inflate_blocks_statef *s,
- const Bytef *d, /* dictionary */
- uInt n)); /* dictionary length */
-
-extern int inflate_addhistory OF((
- inflate_blocks_statef *,
- z_streamp));
-
-extern int inflate_packet_flush OF((
- inflate_blocks_statef *));
-/* --- infblock.h */
-
-#ifndef NO_DUMMY_DECL
-struct inflate_blocks_state {int dummy;}; /* for buggy compilers */
-#endif
-
-/* inflate private state */
-struct internal_state {
-
- /* mode */
- enum {
- METHOD, /* waiting for method byte */
- FLAG, /* waiting for flag byte */
- DICT4, /* four dictionary check bytes to go */
- DICT3, /* three dictionary check bytes to go */
- DICT2, /* two dictionary check bytes to go */
- DICT1, /* one dictionary check byte to go */
- DICT0, /* waiting for inflateSetDictionary */
- BLOCKS, /* decompressing blocks */
- CHECK4, /* four check bytes to go */
- CHECK3, /* three check bytes to go */
- CHECK2, /* two check bytes to go */
- CHECK1, /* one check byte to go */
- DONE, /* finished check, done */
- BAD} /* got an error--stay here */
- mode; /* current inflate mode */
-
- /* mode dependent information */
- union {
- uInt method; /* if FLAGS, method byte */
- struct {
- uLong was; /* computed check value */
- uLong need; /* stream check value */
- } check; /* if CHECK, check values to compare */
- uInt marker; /* if BAD, inflateSync's marker bytes count */
- } sub; /* submode */
-
- /* mode independent information */
- int nowrap; /* flag for no wrapper */
- uInt wbits; /* log2(window size) (8..15, defaults to 15) */
- inflate_blocks_statef
- *blocks; /* current inflate_blocks state */
-
-};
-
-
-int inflateReset(z)
-z_streamp z;
-{
- uLong c;
-
- if (z == Z_NULL || z->state == Z_NULL)
- return Z_STREAM_ERROR;
- z->total_in = z->total_out = 0;
- z->msg = Z_NULL;
- z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
- inflate_blocks_reset(z->state->blocks, z, &c);
- Trace((stderr, "inflate: reset\n"));
- return Z_OK;
-}
-
-
-int inflateEnd(z)
-z_streamp z;
-{
- uLong c;
-
- if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL)
- return Z_STREAM_ERROR;
- if (z->state->blocks != Z_NULL)
- inflate_blocks_free(z->state->blocks, z, &c);
- ZFREE(z, z->state);
- z->state = Z_NULL;
- Trace((stderr, "inflate: end\n"));
- return Z_OK;
-}
-
-
-int inflateInit2_(z, w, version, stream_size)
-z_streamp z;
-int w;
-const char *version;
-int stream_size;
-{
- if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
- stream_size != sizeof(z_stream))
- return Z_VERSION_ERROR;
-
- /* initialize state */
- if (z == Z_NULL)
- return Z_STREAM_ERROR;
- z->msg = Z_NULL;
-#ifndef NO_ZCFUNCS
- if (z->zalloc == Z_NULL)
- {
- z->zalloc = zcalloc;
- z->opaque = (voidpf)0;
- }
- if (z->zfree == Z_NULL) z->zfree = zcfree;
-#endif
- if ((z->state = (struct internal_state FAR *)
- ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL)
- return Z_MEM_ERROR;
- z->state->blocks = Z_NULL;
-
- /* handle undocumented nowrap option (no zlib header or check) */
- z->state->nowrap = 0;
- if (w < 0)
- {
- w = - w;
- z->state->nowrap = 1;
- }
-
- /* set window size */
- if (w < 8 || w > 15)
- {
- inflateEnd(z);
- return Z_STREAM_ERROR;
- }
- z->state->wbits = (uInt)w;
-
- /* create inflate_blocks state */
- if ((z->state->blocks =
- inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, (uInt)1 << w))
- == Z_NULL)
- {
- inflateEnd(z);
- return Z_MEM_ERROR;
- }
- Trace((stderr, "inflate: allocated\n"));
-
- /* reset state */
- inflateReset(z);
- return Z_OK;
-}
-
-
-int inflateInit_(z, version, stream_size)
-z_streamp z;
-const char *version;
-int stream_size;
-{
- return inflateInit2_(z, DEF_WBITS, version, stream_size);
-}
-
-
-#define NEEDBYTE {if(z->avail_in==0)goto empty;r=Z_OK;}
-#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
-
-int inflate(z, f)
-z_streamp z;
-int f;
-{
- int r;
- uInt b;
-
- if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL || f < 0)
- return Z_STREAM_ERROR;
- r = Z_BUF_ERROR;
- while (1) switch (z->state->mode)
- {
- case METHOD:
- NEEDBYTE
- if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
- {
- z->state->mode = BAD;
- z->msg = (char*)"unknown compression method";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
- {
- z->state->mode = BAD;
- z->msg = (char*)"invalid window size";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- z->state->mode = FLAG;
- case FLAG:
- NEEDBYTE
- b = NEXTBYTE;
- if (((z->state->sub.method << 8) + b) % 31)
- {
- z->state->mode = BAD;
- z->msg = (char*)"incorrect header check";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- Trace((stderr, "inflate: zlib header ok\n"));
- if (!(b & PRESET_DICT))
- {
- z->state->mode = BLOCKS;
- break;
- }
- z->state->mode = DICT4;
- case DICT4:
- NEEDBYTE
- z->state->sub.check.need = (uLong)NEXTBYTE << 24;
- z->state->mode = DICT3;
- case DICT3:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 16;
- z->state->mode = DICT2;
- case DICT2:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 8;
- z->state->mode = DICT1;
- case DICT1:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE;
- z->adler = z->state->sub.check.need;
- z->state->mode = DICT0;
- return Z_NEED_DICT;
- case DICT0:
- z->state->mode = BAD;
- z->msg = (char*)"need dictionary";
- z->state->sub.marker = 0; /* can try inflateSync */
- return Z_STREAM_ERROR;
- case BLOCKS:
- r = inflate_blocks(z->state->blocks, z, r);
- if (f == Z_PACKET_FLUSH && z->avail_in == 0 && z->avail_out != 0)
- r = inflate_packet_flush(z->state->blocks);
- if (r == Z_DATA_ERROR)
- {
- z->state->mode = BAD;
- z->state->sub.marker = 0; /* can try inflateSync */
- break;
- }
- if (r != Z_STREAM_END)
- return r;
- r = Z_OK;
- inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
- if (z->state->nowrap)
- {
- z->state->mode = DONE;
- break;
- }
- z->state->mode = CHECK4;
- case CHECK4:
- NEEDBYTE
- z->state->sub.check.need = (uLong)NEXTBYTE << 24;
- z->state->mode = CHECK3;
- case CHECK3:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 16;
- z->state->mode = CHECK2;
- case CHECK2:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 8;
- z->state->mode = CHECK1;
- case CHECK1:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE;
-
- if (z->state->sub.check.was != z->state->sub.check.need)
- {
- z->state->mode = BAD;
- z->msg = (char*)"incorrect data check";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- Trace((stderr, "inflate: zlib check ok\n"));
- z->state->mode = DONE;
- case DONE:
- return Z_STREAM_END;
- case BAD:
- return Z_DATA_ERROR;
- default:
- return Z_STREAM_ERROR;
- }
-
- empty:
- if (f != Z_PACKET_FLUSH)
- return r;
- z->state->mode = BAD;
- z->msg = (char *)"need more for packet flush";
- z->state->sub.marker = 0; /* can try inflateSync */
- return Z_DATA_ERROR;
-}
-
-
-int inflateSetDictionary(z, dictionary, dictLength)
-z_streamp z;
-const Bytef *dictionary;
-uInt dictLength;
-{
- uInt length = dictLength;
-
- if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0)
- return Z_STREAM_ERROR;
-
- if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR;
- z->adler = 1L;
-
- if (length >= ((uInt)1<<z->state->wbits))
- {
- length = (1<<z->state->wbits)-1;
- dictionary += dictLength - length;
- }
- inflate_set_dictionary(z->state->blocks, dictionary, length);
- z->state->mode = BLOCKS;
- return Z_OK;
-}
-
-/*
- * This subroutine adds the data at next_in/avail_in to the output history
- * without performing any output. The output buffer must be "caught up";
- * i.e. no pending output (hence s->read equals s->write), and the state must
- * be BLOCKS (i.e. we should be willing to see the start of a series of
- * BLOCKS). On exit, the output will also be caught up, and the checksum
- * will have been updated if need be.
- */
-
-int inflateIncomp(z)
-z_stream *z;
-{
- if (z->state->mode != BLOCKS)
- return Z_DATA_ERROR;
- return inflate_addhistory(z->state->blocks, z);
-}
-
-
-int inflateSync(z)
-z_streamp z;
-{
- uInt n; /* number of bytes to look at */
- Bytef *p; /* pointer to bytes */
- uInt m; /* number of marker bytes found in a row */
- uLong r, w; /* temporaries to save total_in and total_out */
-
- /* set up */
- if (z == Z_NULL || z->state == Z_NULL)
- return Z_STREAM_ERROR;
- if (z->state->mode != BAD)
- {
- z->state->mode = BAD;
- z->state->sub.marker = 0;
- }
- if ((n = z->avail_in) == 0)
- return Z_BUF_ERROR;
- p = z->next_in;
- m = z->state->sub.marker;
-
- /* search */
- while (n && m < 4)
- {
- if (*p == (Byte)(m < 2 ? 0 : 0xff))
- m++;
- else if (*p)
- m = 0;
- else
- m = 4 - m;
- p++, n--;
- }
-
- /* restore */
- z->total_in += p - z->next_in;
- z->next_in = p;
- z->avail_in = n;
- z->state->sub.marker = m;
-
- /* return no joy or set up to restart on a new block */
- if (m != 4)
- return Z_DATA_ERROR;
- r = z->total_in; w = z->total_out;
- inflateReset(z);
- z->total_in = r; z->total_out = w;
- z->state->mode = BLOCKS;
- return Z_OK;
-}
-
-#undef NEEDBYTE
-#undef NEXTBYTE
-/* --- inflate.c */
-
-/* +++ infblock.c */
-/* infblock.c -- interpret and process block types to last block
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-/* #include "infblock.h" */
-
-/* +++ inftrees.h */
-/* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* Huffman code lookup table entry--this entry is four bytes for machines
- that have 16-bit pointers (e.g. PC's in the small or medium model). */
-
-typedef struct inflate_huft_s FAR inflate_huft;
-
-struct inflate_huft_s {
- union {
- struct {
- Byte Exop; /* number of extra bits or operation */
- Byte Bits; /* number of bits in this code or subcode */
- } what;
- Bytef *pad; /* pad structure to a power of 2 (4 bytes for */
- } word; /* 16-bit, 8 bytes for 32-bit machines) */
- union {
- uInt Base; /* literal, length base, or distance base */
- inflate_huft *Next; /* pointer to next level of table */
- } more;
-};
-
-#ifdef DEBUG_ZLIB
- extern uInt inflate_hufts;
-#endif
-
-extern int inflate_trees_bits OF((
- uIntf *, /* 19 code lengths */
- uIntf *, /* bits tree desired/actual depth */
- inflate_huft * FAR *, /* bits tree result */
- z_streamp )); /* for zalloc, zfree functions */
-
-extern int inflate_trees_dynamic OF((
- uInt, /* number of literal/length codes */
- uInt, /* number of distance codes */
- uIntf *, /* that many (total) code lengths */
- uIntf *, /* literal desired/actual bit depth */
- uIntf *, /* distance desired/actual bit depth */
- inflate_huft * FAR *, /* literal/length tree result */
- inflate_huft * FAR *, /* distance tree result */
- z_streamp )); /* for zalloc, zfree functions */
-
-extern int inflate_trees_fixed OF((
- uIntf *, /* literal desired/actual bit depth */
- uIntf *, /* distance desired/actual bit depth */
- inflate_huft * FAR *, /* literal/length tree result */
- inflate_huft * FAR *)); /* distance tree result */
-
-extern int inflate_trees_free OF((
- inflate_huft *, /* tables to free */
- z_streamp )); /* for zfree function */
-
-/* --- inftrees.h */
-
-/* +++ infcodes.h */
-/* infcodes.h -- header to use infcodes.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_codes_state;
-typedef struct inflate_codes_state FAR inflate_codes_statef;
-
-extern inflate_codes_statef *inflate_codes_new OF((
- uInt, uInt,
- inflate_huft *, inflate_huft *,
- z_streamp ));
-
-extern int inflate_codes OF((
- inflate_blocks_statef *,
- z_streamp ,
- int));
-
-extern void inflate_codes_free OF((
- inflate_codes_statef *,
- z_streamp ));
-
-/* --- infcodes.h */
-
-/* +++ infutil.h */
-/* infutil.h -- types and macros common to blocks and codes
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-#ifndef _INFUTIL_H
-#define _INFUTIL_H
-
-typedef enum {
- TYPE, /* get type bits (3, including end bit) */
- LENS, /* get lengths for stored */
- STORED, /* processing stored block */
- TABLE, /* get table lengths */
- BTREE, /* get bit lengths tree for a dynamic block */
- DTREE, /* get length, distance trees for a dynamic block */
- CODES, /* processing fixed or dynamic block */
- DRY, /* output remaining window bytes */
- DONEB, /* finished last block, done */
- BADB} /* got a data error--stuck here */
-inflate_block_mode;
-
-/* inflate blocks semi-private state */
-struct inflate_blocks_state {
-
- /* mode */
- inflate_block_mode mode; /* current inflate_block mode */
-
- /* mode dependent information */
- union {
- uInt left; /* if STORED, bytes left to copy */
- struct {
- uInt table; /* table lengths (14 bits) */
- uInt index; /* index into blens (or border) */
- uIntf *blens; /* bit lengths of codes */
- uInt bb; /* bit length tree depth */
- inflate_huft *tb; /* bit length decoding tree */
- } trees; /* if DTREE, decoding info for trees */
- struct {
- inflate_huft *tl;
- inflate_huft *td; /* trees to free */
- inflate_codes_statef
- *codes;
- } decode; /* if CODES, current state */
- } sub; /* submode */
- uInt last; /* true if this block is the last block */
-
- /* mode independent information */
- uInt bitk; /* bits in bit buffer */
- uLong bitb; /* bit buffer */
- Bytef *window; /* sliding window */
- Bytef *end; /* one byte after sliding window */
- Bytef *read; /* window read pointer */
- Bytef *write; /* window write pointer */
- check_func checkfn; /* check function */
- uLong check; /* check on output */
-
-};
-
-
-/* defines for inflate input/output */
-/* update pointers and return */
-#define UPDBITS {s->bitb=b;s->bitk=k;}
-#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
-#define UPDOUT {s->write=q;}
-#define UPDATE {UPDBITS UPDIN UPDOUT}
-#define LEAVE {UPDATE return inflate_flush(s,z,r);}
-/* get bytes and bits */
-#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
-#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
-#define NEXTBYTE (n--,*p++)
-#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-#define DUMPBITS(j) {b>>=(j);k-=(j);}
-/* output bytes */
-#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
-#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
-#define WWRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
-#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
-#define NEEDOUT {if(m==0){WWRAP if(m==0){FLUSH WWRAP if(m==0) LEAVE}}r=Z_OK;}
-#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
-/* load local pointers */
-#define LOAD {LOADIN LOADOUT}
-
-/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
-extern uInt inflate_mask[17];
-
-/* copy as much as possible from the sliding window to the output area */
-extern int inflate_flush OF((
- inflate_blocks_statef *,
- z_streamp ,
- int));
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-#endif
-/* --- infutil.h */
-
-#ifndef NO_DUMMY_DECL
-struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-#endif
-
-/* Table for deflate from PKZIP's appnote.txt. */
-local const uInt border[] = { /* Order of the bit length code lengths */
- 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-/*
- Notes beyond the 1.93a appnote.txt:
-
- 1. Distance pointers never point before the beginning of the output
- stream.
- 2. Distance pointers can point back across blocks, up to 32k away.
- 3. There is an implied maximum of 7 bits for the bit length table and
- 15 bits for the actual data.
- 4. If only one code exists, then it is encoded using one bit. (Zero
- would be more efficient, but perhaps a little confusing.) If two
- codes exist, they are coded using one bit each (0 and 1).
- 5. There is no way of sending zero distance codes--a dummy must be
- sent if there are none. (History: a pre 2.0 version of PKZIP would
- store blocks with no distance codes, but this was discovered to be
- too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
- zero distance codes, which is sent as one code of zero bits in
- length.
- 6. There are up to 286 literal/length codes. Code 256 represents the
- end-of-block. Note however that the static length tree defines
- 288 codes just to fill out the Huffman codes. Codes 286 and 287
- cannot be used though, since there is no length base or extra bits
- defined for them. Similarily, there are up to 30 distance codes.
- However, static trees define 32 codes (all 5 bits) to fill out the
- Huffman codes, but the last two had better not show up in the data.
- 7. Unzip can check dynamic Huffman blocks for complete code sets.
- The exception is that a single code would not be complete (see #4).
- 8. The five bits following the block type is really the number of
- literal codes sent minus 257.
- 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
- (1+6+6). Therefore, to output three times the length, you output
- three codes (1+1+1), whereas to output four times the same length,
- you only need two codes (1+3). Hmm.
- 10. In the tree reconstruction algorithm, Code = Code + Increment
- only if BitLength(i) is not zero. (Pretty obvious.)
- 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
- 12. Note: length code 284 can represent 227-258, but length code 285
- really is 258. The last length deserves its own, short code
- since it gets used a lot in very redundant files. The length
- 258 is special since 258 - 3 (the min match length) is 255.
- 13. The literal/length and distance code bit lengths are read as a
- single stream of lengths. It is possible (and advantageous) for
- a repeat code (16, 17, or 18) to go across the boundary between
- the two sets of lengths.
- */
-
-
-void inflate_blocks_reset(s, z, c)
-inflate_blocks_statef *s;
-z_streamp z;
-uLongf *c;
-{
- if (s->checkfn != Z_NULL)
- *c = s->check;
- if (s->mode == BTREE || s->mode == DTREE)
- ZFREE(z, s->sub.trees.blens);
- if (s->mode == CODES)
- {
- inflate_codes_free(s->sub.decode.codes, z);
- inflate_trees_free(s->sub.decode.td, z);
- inflate_trees_free(s->sub.decode.tl, z);
- }
- s->mode = TYPE;
- s->bitk = 0;
- s->bitb = 0;
- s->read = s->write = s->window;
- if (s->checkfn != Z_NULL)
- z->adler = s->check = (*s->checkfn)(0L, Z_NULL, 0);
- Trace((stderr, "inflate: blocks reset\n"));
-}
-
-
-inflate_blocks_statef *inflate_blocks_new(z, c, w)
-z_streamp z;
-check_func c;
-uInt w;
-{
- inflate_blocks_statef *s;
-
- if ((s = (inflate_blocks_statef *)ZALLOC
- (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
- return s;
- if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
- {
- ZFREE(z, s);
- return Z_NULL;
- }
- s->end = s->window + w;
- s->checkfn = c;
- s->mode = TYPE;
- Trace((stderr, "inflate: blocks allocated\n"));
- inflate_blocks_reset(s, z, &s->check);
- return s;
-}
-
-
-#ifdef DEBUG_ZLIB
- extern uInt inflate_hufts;
-#endif
-int inflate_blocks(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
- uInt t; /* temporary storage */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
-
- /* copy input/output information to locals (UPDATE macro restores) */
- LOAD
-
- /* process input based on current state */
- while (1) switch (s->mode)
- {
- case TYPE:
- NEEDBITS(3)
- t = (uInt)b & 7;
- s->last = t & 1;
- switch (t >> 1)
- {
- case 0: /* stored */
- Trace((stderr, "inflate: stored block%s\n",
- s->last ? " (last)" : ""));
- DUMPBITS(3)
- t = k & 7; /* go to byte boundary */
- DUMPBITS(t)
- s->mode = LENS; /* get length of stored block */
- break;
- case 1: /* fixed */
- Trace((stderr, "inflate: fixed codes block%s\n",
- s->last ? " (last)" : ""));
- {
- uInt bl, bd;
- inflate_huft *tl, *td;
-
- inflate_trees_fixed(&bl, &bd, &tl, &td);
- s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
- if (s->sub.decode.codes == Z_NULL)
- {
- r = Z_MEM_ERROR;
- LEAVE
- }
- s->sub.decode.tl = Z_NULL; /* don't try to free these */
- s->sub.decode.td = Z_NULL;
- }
- DUMPBITS(3)
- s->mode = CODES;
- break;
- case 2: /* dynamic */
- Trace((stderr, "inflate: dynamic codes block%s\n",
- s->last ? " (last)" : ""));
- DUMPBITS(3)
- s->mode = TABLE;
- break;
- case 3: /* illegal */
- DUMPBITS(3)
- s->mode = BADB;
- z->msg = (char*)"invalid block type";
- r = Z_DATA_ERROR;
- LEAVE
- }
- break;
- case LENS:
- NEEDBITS(32)
- if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
- {
- s->mode = BADB;
- z->msg = (char*)"invalid stored block lengths";
- r = Z_DATA_ERROR;
- LEAVE
- }
- s->sub.left = (uInt)b & 0xffff;
- b = k = 0; /* dump bits */
- Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
- s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
- break;
- case STORED:
- if (n == 0)
- LEAVE
- NEEDOUT
- t = s->sub.left;
- if (t > n) t = n;
- if (t > m) t = m;
- zmemcpy(q, p, t);
- p += t; n -= t;
- q += t; m -= t;
- if ((s->sub.left -= t) != 0)
- break;
- Tracev((stderr, "inflate: stored end, %lu total out\n",
- z->total_out + (q >= s->read ? q - s->read :
- (s->end - s->read) + (q - s->window))));
- s->mode = s->last ? DRY : TYPE;
- break;
- case TABLE:
- NEEDBITS(14)
- s->sub.trees.table = t = (uInt)b & 0x3fff;
-#ifndef PKZIP_BUG_WORKAROUND
- if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
- {
- s->mode = BADB;
- z->msg = (char*)"too many length or distance symbols";
- r = Z_DATA_ERROR;
- LEAVE
- }
-#endif
- t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
- if (t < 19)
- t = 19;
- if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
- {
- r = Z_MEM_ERROR;
- LEAVE
- }
- DUMPBITS(14)
- s->sub.trees.index = 0;
- Tracev((stderr, "inflate: table sizes ok\n"));
- s->mode = BTREE;
- case BTREE:
- while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
- {
- NEEDBITS(3)
- s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
- DUMPBITS(3)
- }
- while (s->sub.trees.index < 19)
- s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
- s->sub.trees.bb = 7;
- t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
- &s->sub.trees.tb, z);
- if (t != Z_OK)
- {
- ZFREE(z, s->sub.trees.blens);
- r = t;
- if (r == Z_DATA_ERROR)
- s->mode = BADB;
- LEAVE
- }
- s->sub.trees.index = 0;
- Tracev((stderr, "inflate: bits tree ok\n"));
- s->mode = DTREE;
- case DTREE:
- while (t = s->sub.trees.table,
- s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
- {
- inflate_huft *h;
- uInt i, j, c;
-
- t = s->sub.trees.bb;
- NEEDBITS(t)
- h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
- t = h->word.what.Bits;
- c = h->more.Base;
- if (c < 16)
- {
- DUMPBITS(t)
- s->sub.trees.blens[s->sub.trees.index++] = c;
- }
- else /* c == 16..18 */
- {
- i = c == 18 ? 7 : c - 14;
- j = c == 18 ? 11 : 3;
- NEEDBITS(t + i)
- DUMPBITS(t)
- j += (uInt)b & inflate_mask[i];
- DUMPBITS(i)
- i = s->sub.trees.index;
- t = s->sub.trees.table;
- if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
- (c == 16 && i < 1))
- {
- inflate_trees_free(s->sub.trees.tb, z);
- ZFREE(z, s->sub.trees.blens);
- s->mode = BADB;
- z->msg = (char*)"invalid bit length repeat";
- r = Z_DATA_ERROR;
- LEAVE
- }
- c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
- do {
- s->sub.trees.blens[i++] = c;
- } while (--j);
- s->sub.trees.index = i;
- }
- }
- inflate_trees_free(s->sub.trees.tb, z);
- s->sub.trees.tb = Z_NULL;
- {
- uInt bl, bd;
- inflate_huft *tl, *td;
- inflate_codes_statef *c;
-
- bl = 9; /* must be <= 9 for lookahead assumptions */
- bd = 6; /* must be <= 9 for lookahead assumptions */
- t = s->sub.trees.table;
-#ifdef DEBUG_ZLIB
- inflate_hufts = 0;
-#endif
- t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
- s->sub.trees.blens, &bl, &bd, &tl, &td, z);
- ZFREE(z, s->sub.trees.blens);
- if (t != Z_OK)
- {
- if (t == (uInt)Z_DATA_ERROR)
- s->mode = BADB;
- r = t;
- LEAVE
- }
- Tracev((stderr, "inflate: trees ok, %d * %d bytes used\n",
- inflate_hufts, sizeof(inflate_huft)));
- if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
- {
- inflate_trees_free(td, z);
- inflate_trees_free(tl, z);
- r = Z_MEM_ERROR;
- LEAVE
- }
- s->sub.decode.codes = c;
- s->sub.decode.tl = tl;
- s->sub.decode.td = td;
- }
- s->mode = CODES;
- case CODES:
- UPDATE
- if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
- return inflate_flush(s, z, r);
- r = Z_OK;
- inflate_codes_free(s->sub.decode.codes, z);
- inflate_trees_free(s->sub.decode.td, z);
- inflate_trees_free(s->sub.decode.tl, z);
- LOAD
- Tracev((stderr, "inflate: codes end, %lu total out\n",
- z->total_out + (q >= s->read ? q - s->read :
- (s->end - s->read) + (q - s->window))));
- if (!s->last)
- {
- s->mode = TYPE;
- break;
- }
- if (k > 7) /* return unused byte, if any */
- {
- Assert(k < 16, "inflate_codes grabbed too many bytes")
- k -= 8;
- n++;
- p--; /* can always return one */
- }
- s->mode = DRY;
- case DRY:
- FLUSH
- if (s->read != s->write)
- LEAVE
- s->mode = DONEB;
- case DONEB:
- r = Z_STREAM_END;
- LEAVE
- case BADB:
- r = Z_DATA_ERROR;
- LEAVE
- default:
- r = Z_STREAM_ERROR;
- LEAVE
- }
-}
-
-
-int inflate_blocks_free(s, z, c)
-inflate_blocks_statef *s;
-z_streamp z;
-uLongf *c;
-{
- inflate_blocks_reset(s, z, c);
- ZFREE(z, s->window);
- ZFREE(z, s);
- Trace((stderr, "inflate: blocks freed\n"));
- return Z_OK;
-}
-
-
-void inflate_set_dictionary(s, d, n)
-inflate_blocks_statef *s;
-const Bytef *d;
-uInt n;
-{
- zmemcpy((charf *)s->window, d, n);
- s->read = s->write = s->window + n;
-}
-
-/*
- * This subroutine adds the data at next_in/avail_in to the output history
- * without performing any output. The output buffer must be "caught up";
- * i.e. no pending output (hence s->read equals s->write), and the state must
- * be BLOCKS (i.e. we should be willing to see the start of a series of
- * BLOCKS). On exit, the output will also be caught up, and the checksum
- * will have been updated if need be.
- */
-int inflate_addhistory(s, z)
-inflate_blocks_statef *s;
-z_stream *z;
-{
- uLong b; /* bit buffer */ /* NOT USED HERE */
- uInt k; /* bits in bit buffer */ /* NOT USED HERE */
- uInt t; /* temporary storage */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
-
- if (s->read != s->write)
- return Z_STREAM_ERROR;
- if (s->mode != TYPE)
- return Z_DATA_ERROR;
-
- /* we're ready to rock */
- LOAD
- /* while there is input ready, copy to output buffer, moving
- * pointers as needed.
- */
- while (n) {
- t = n; /* how many to do */
- /* is there room until end of buffer? */
- if (t > m) t = m;
- /* update check information */
- if (s->checkfn != Z_NULL)
- s->check = (*s->checkfn)(s->check, q, t);
- zmemcpy(q, p, t);
- q += t;
- p += t;
- n -= t;
- z->total_out += t;
- s->read = q; /* drag read pointer forward */
-/* WWRAP */ /* expand WWRAP macro by hand to handle s->read */
- if (q == s->end) {
- s->read = q = s->window;
- m = WAVAIL;
- }
- }
- UPDATE
- return Z_OK;
-}
-
-
-/*
- * At the end of a Deflate-compressed PPP packet, we expect to have seen
- * a `stored' block type value but not the (zero) length bytes.
- */
-int inflate_packet_flush(s)
- inflate_blocks_statef *s;
-{
- if (s->mode != LENS)
- return Z_DATA_ERROR;
- s->mode = TYPE;
- return Z_OK;
-}
-/* --- infblock.c */
-
-/* +++ inftrees.c */
-/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-/* #include "inftrees.h" */
-
-char inflate_copyright[] = " inflate 1.0.4 Copyright 1995-1996 Mark Adler ";
-/*
- If you use the zlib library in a product, an acknowledgment is welcome
- in the documentation of your product. If for some reason you cannot
- include such an acknowledgment, I would appreciate that you keep this
- copyright string in the executable of your product.
- */
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-
-local int huft_build OF((
- uIntf *, /* code lengths in bits */
- uInt, /* number of codes */
- uInt, /* number of "simple" codes */
- const uIntf *, /* list of base values for non-simple codes */
- const uIntf *, /* list of extra bits for non-simple codes */
- inflate_huft * FAR*,/* result: starting table */
- uIntf *, /* maximum lookup bits (returns actual) */
- z_streamp )); /* for zalloc function */
-
-local voidpf falloc OF((
- voidpf, /* opaque pointer (not used) */
- uInt, /* number of items */
- uInt)); /* size of item */
-
-/* Tables for deflate from PKZIP's appnote.txt. */
-local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
- 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
- /* see note #13 above about 258 */
-local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
- 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
-local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
- 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
- 8193, 12289, 16385, 24577};
-local const uInt cpdext[30] = { /* Extra bits for distance codes */
- 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
- 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
- 12, 12, 13, 13};
-
-/*
- Huffman code decoding is performed using a multi-level table lookup.
- The fastest way to decode is to simply build a lookup table whose
- size is determined by the longest code. However, the time it takes
- to build this table can also be a factor if the data being decoded
- is not very long. The most common codes are necessarily the
- shortest codes, so those codes dominate the decoding time, and hence
- the speed. The idea is you can have a shorter table that decodes the
- shorter, more probable codes, and then point to subsidiary tables for
- the longer codes. The time it costs to decode the longer codes is
- then traded against the time it takes to make longer tables.
-
- This results of this trade are in the variables lbits and dbits
- below. lbits is the number of bits the first level table for literal/
- length codes can decode in one step, and dbits is the same thing for
- the distance codes. Subsequent tables are also less than or equal to
- those sizes. These values may be adjusted either when all of the
- codes are shorter than that, in which case the longest code length in
- bits is used, or when the shortest code is *longer* than the requested
- table size, in which case the length of the shortest code in bits is
- used.
-
- There are two different values for the two tables, since they code a
- different number of possibilities each. The literal/length table
- codes 286 possible values, or in a flat code, a little over eight
- bits. The distance table codes 30 possible values, or a little less
- than five bits, flat. The optimum values for speed end up being
- about one bit more than those, so lbits is 8+1 and dbits is 5+1.
- The optimum values may differ though from machine to machine, and
- possibly even between compilers. Your mileage may vary.
- */
-
-
-/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
-#define BMAX 15 /* maximum bit length of any code */
-#define N_MAX 288 /* maximum number of codes in any set */
-
-#ifdef DEBUG_ZLIB
- uInt inflate_hufts;
-#endif
-
-local int huft_build(b, n, s, d, e, t, m, zs)
-uIntf *b; /* code lengths in bits (all assumed <= BMAX) */
-uInt n; /* number of codes (assumed <= N_MAX) */
-uInt s; /* number of simple-valued codes (0..s-1) */
-const uIntf *d; /* list of base values for non-simple codes */
-const uIntf *e; /* list of extra bits for non-simple codes */
-inflate_huft * FAR *t; /* result: starting table */
-uIntf *m; /* maximum lookup bits, returns actual */
-z_streamp zs; /* for zalloc function */
-/* Given a list of code lengths and a maximum table size, make a set of
- tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
- if the given code set is incomplete (the tables are still built in this
- case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of
- lengths), or Z_MEM_ERROR if not enough memory. */
-{
-
- uInt a; /* counter for codes of length k */
- uInt c[BMAX+1]; /* bit length count table */
- uInt f; /* i repeats in table every f entries */
- int g; /* maximum code length */
- int h; /* table level */
- register uInt i; /* counter, current code */
- register uInt j; /* counter */
- register int k; /* number of bits in current code */
- int l; /* bits per table (returned in m) */
- register uIntf *p; /* pointer into c[], b[], or v[] */
- inflate_huft *q; /* points to current table */
- struct inflate_huft_s r; /* table entry for structure assignment */
- inflate_huft *u[BMAX]; /* table stack */
- uInt v[N_MAX]; /* values in order of bit length */
- register int w; /* bits before this table == (l * h) */
- uInt x[BMAX+1]; /* bit offsets, then code stack */
- uIntf *xp; /* pointer into x */
- int y; /* number of dummy codes added */
- uInt z; /* number of entries in current table */
-
-
- /* Generate counts for each bit length */
- p = c;
-#define C0 *p++ = 0;
-#define C2 C0 C0 C0 C0
-#define C4 C2 C2 C2 C2
- C4 /* clear c[]--assume BMAX+1 is 16 */
- p = b; i = n;
- do {
- c[*p++]++; /* assume all entries <= BMAX */
- } while (--i);
- if (c[0] == n) /* null input--all zero length codes */
- {
- *t = (inflate_huft *)Z_NULL;
- *m = 0;
- return Z_OK;
- }
-
-
- /* Find minimum and maximum length, bound *m by those */
- l = *m;
- for (j = 1; j <= BMAX; j++)
- if (c[j])
- break;
- k = j; /* minimum code length */
- if ((uInt)l < j)
- l = j;
- for (i = BMAX; i; i--)
- if (c[i])
- break;
- g = i; /* maximum code length */
- if ((uInt)l > i)
- l = i;
- *m = l;
-
-
- /* Adjust last length count to fill out codes, if needed */
- for (y = 1 << j; j < i; j++, y <<= 1)
- if ((y -= c[j]) < 0)
- return Z_DATA_ERROR;
- if ((y -= c[i]) < 0)
- return Z_DATA_ERROR;
- c[i] += y;
-
-
- /* Generate starting offsets into the value table for each length */
- x[1] = j = 0;
- p = c + 1; xp = x + 2;
- while (--i) { /* note that i == g from above */
- *xp++ = (j += *p++);
- }
-
-
- /* Make a table of values in order of bit lengths */
- p = b; i = 0;
- do {
- if ((j = *p++) != 0)
- v[x[j]++] = i;
- } while (++i < n);
- n = x[g]; /* set n to length of v */
-
-
- /* Generate the Huffman codes and for each, make the table entries */
- x[0] = i = 0; /* first Huffman code is zero */
- p = v; /* grab values in bit order */
- h = -1; /* no tables yet--level -1 */
- w = -l; /* bits decoded == (l * h) */
- u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */
- q = (inflate_huft *)Z_NULL; /* ditto */
- z = 0; /* ditto */
-
- /* go through the bit lengths (k already is bits in shortest code) */
- for (; k <= g; k++)
- {
- a = c[k];
- while (a--)
- {
- /* here i is the Huffman code of length k bits for value *p */
- /* make tables up to required level */
- while (k > w + l)
- {
- h++;
- w += l; /* previous table always l bits */
-
- /* compute minimum size table less than or equal to l bits */
- z = g - w;
- z = z > (uInt)l ? l : z; /* table size upper limit */
- if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
- { /* too few codes for k-w bit table */
- f -= a + 1; /* deduct codes from patterns left */
- xp = c + k;
- if (j < z)
- while (++j < z) /* try smaller tables up to z bits */
- {
- if ((f <<= 1) <= *++xp)
- break; /* enough codes to use up j bits */
- f -= *xp; /* else deduct codes from patterns */
- }
- }
- z = 1 << j; /* table entries for j-bit table */
-
- /* allocate and link in new table */
- if ((q = (inflate_huft *)ZALLOC
- (zs,z + 1,sizeof(inflate_huft))) == Z_NULL)
- {
- if (h)
- inflate_trees_free(u[0], zs);
- return Z_MEM_ERROR; /* not enough memory */
- }
-#ifdef DEBUG_ZLIB
- inflate_hufts += z + 1;
-#endif
- *t = q + 1; /* link to list for huft_free() */
- *(t = &(q->next)) = Z_NULL;
- u[h] = ++q; /* table starts after link */
-
- /* connect to last table, if there is one */
- if (h)
- {
- x[h] = i; /* save pattern for backing up */
- r.bits = (Byte)l; /* bits to dump before this table */
- r.exop = (Byte)j; /* bits in this table */
- r.next = q; /* pointer to this table */
- j = i >> (w - l); /* (get around Turbo C bug) */
- u[h-1][j] = r; /* connect to last table */
- }
- }
-
- /* set up table entry in r */
- r.bits = (Byte)(k - w);
- if (p >= v + n)
- r.exop = 128 + 64; /* out of values--invalid code */
- else if (*p < s)
- {
- r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
- r.base = *p++; /* simple code is just the value */
- }
- else
- {
- r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */
- r.base = d[*p++ - s];
- }
-
- /* fill code-like entries with r */
- f = 1 << (k - w);
- for (j = i >> w; j < z; j += f)
- q[j] = r;
-
- /* backwards increment the k-bit code i */
- for (j = 1 << (k - 1); i & j; j >>= 1)
- i ^= j;
- i ^= j;
-
- /* backup over finished tables */
- while ((i & ((1 << w) - 1)) != x[h])
- {
- h--; /* don't need to update q */
- w -= l;
- }
- }
- }
-
-
- /* Return Z_BUF_ERROR if we were given an incomplete table */
- return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
-}
-
-
-int inflate_trees_bits(c, bb, tb, z)
-uIntf *c; /* 19 code lengths */
-uIntf *bb; /* bits tree desired/actual depth */
-inflate_huft * FAR *tb; /* bits tree result */
-z_streamp z; /* for zfree function */
-{
- int r;
-
- r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL, tb, bb, z);
- if (r == Z_DATA_ERROR)
- z->msg = (char*)"oversubscribed dynamic bit lengths tree";
- else if (r == Z_BUF_ERROR || *bb == 0)
- {
- inflate_trees_free(*tb, z);
- z->msg = (char*)"incomplete dynamic bit lengths tree";
- r = Z_DATA_ERROR;
- }
- return r;
-}
-
-
-int inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, z)
-uInt nl; /* number of literal/length codes */
-uInt nd; /* number of distance codes */
-uIntf *c; /* that many (total) code lengths */
-uIntf *bl; /* literal desired/actual bit depth */
-uIntf *bd; /* distance desired/actual bit depth */
-inflate_huft * FAR *tl; /* literal/length tree result */
-inflate_huft * FAR *td; /* distance tree result */
-z_streamp z; /* for zfree function */
-{
- int r;
-
- /* build literal/length tree */
- r = huft_build(c, nl, 257, cplens, cplext, tl, bl, z);
- if (r != Z_OK || *bl == 0)
- {
- if (r == Z_DATA_ERROR)
- z->msg = (char*)"oversubscribed literal/length tree";
- else if (r != Z_MEM_ERROR)
- {
- inflate_trees_free(*tl, z);
- z->msg = (char*)"incomplete literal/length tree";
- r = Z_DATA_ERROR;
- }
- return r;
- }
-
- /* build distance tree */
- r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, z);
- if (r != Z_OK || (*bd == 0 && nl > 257))
- {
- if (r == Z_DATA_ERROR)
- z->msg = (char*)"oversubscribed distance tree";
- else if (r == Z_BUF_ERROR) {
-#ifdef PKZIP_BUG_WORKAROUND
- r = Z_OK;
- }
-#else
- inflate_trees_free(*td, z);
- z->msg = (char*)"incomplete distance tree";
- r = Z_DATA_ERROR;
- }
- else if (r != Z_MEM_ERROR)
- {
- z->msg = (char*)"empty distance tree with lengths";
- r = Z_DATA_ERROR;
- }
- inflate_trees_free(*tl, z);
- return r;
-#endif
- }
-
- /* done */
- return Z_OK;
-}
-
-
-/* build fixed tables only once--keep them here */
-local int fixed_built = 0;
-#define FIXEDH 530 /* number of hufts used by fixed tables */
-local inflate_huft fixed_mem[FIXEDH];
-local uInt fixed_bl;
-local uInt fixed_bd;
-local inflate_huft *fixed_tl;
-local inflate_huft *fixed_td;
-
-
-local voidpf falloc(q, n, s)
-voidpf q; /* opaque pointer */
-uInt n; /* number of items */
-uInt s; /* size of item */
-{
- Assert(s == sizeof(inflate_huft) && n <= *(intf *)q,
- "inflate_trees falloc overflow");
- *(intf *)q -= n+s-s; /* s-s to avoid warning */
- return (voidpf)(fixed_mem + *(intf *)q);
-}
-
-
-int inflate_trees_fixed(bl, bd, tl, td)
-uIntf *bl; /* literal desired/actual bit depth */
-uIntf *bd; /* distance desired/actual bit depth */
-inflate_huft * FAR *tl; /* literal/length tree result */
-inflate_huft * FAR *td; /* distance tree result */
-{
- /* build fixed tables if not already (multiple overlapped executions ok) */
- if (!fixed_built)
- {
- int k; /* temporary variable */
- unsigned c[288]; /* length list for huft_build */
- z_stream z; /* for falloc function */
- int f = FIXEDH; /* number of hufts left in fixed_mem */
-
- /* set up fake z_stream for memory routines */
- z.zalloc = falloc;
- z.zfree = Z_NULL;
- z.opaque = (voidpf)&f;
-
- /* literal table */
- for (k = 0; k < 144; k++)
- c[k] = 8;
- for (; k < 256; k++)
- c[k] = 9;
- for (; k < 280; k++)
- c[k] = 7;
- for (; k < 288; k++)
- c[k] = 8;
- fixed_bl = 7;
- huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl, &z);
-
- /* distance table */
- for (k = 0; k < 30; k++)
- c[k] = 5;
- fixed_bd = 5;
- huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd, &z);
-
- /* done */
- Assert(f == 0, "invalid build of fixed tables");
- fixed_built = 1;
- }
- *bl = fixed_bl;
- *bd = fixed_bd;
- *tl = fixed_tl;
- *td = fixed_td;
- return Z_OK;
-}
-
-
-int inflate_trees_free(t, z)
-inflate_huft *t; /* table to free */
-z_streamp z; /* for zfree function */
-/* Free the malloc'ed tables built by huft_build(), which makes a linked
- list of the tables it made, with the links in a dummy first entry of
- each table. */
-{
- register inflate_huft *p, *q, *r;
-
- /* Reverse linked list */
- p = Z_NULL;
- q = t;
- while (q != Z_NULL)
- {
- r = (q - 1)->next;
- (q - 1)->next = p;
- p = q;
- q = r;
- }
- /* Go through linked list, freeing from the malloced (t[-1]) address. */
- while (p != Z_NULL)
- {
- q = (--p)->next;
- ZFREE(z,p);
- p = q;
- }
- return Z_OK;
-}
-/* --- inftrees.c */
-
-/* +++ infcodes.c */
-/* infcodes.c -- process literals and length/distance pairs
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-/* #include "inftrees.h" */
-/* #include "infblock.h" */
-/* #include "infcodes.h" */
-/* #include "infutil.h" */
-
-/* +++ inffast.h */
-/* inffast.h -- header to use inffast.c
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-extern int inflate_fast OF((
- uInt,
- uInt,
- inflate_huft *,
- inflate_huft *,
- inflate_blocks_statef *,
- z_streamp ));
-/* --- inffast.h */
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-/* inflate codes private state */
-struct inflate_codes_state {
-
- /* mode */
- enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
- START, /* x: set up for LEN */
- LEN, /* i: get length/literal/eob next */
- LENEXT, /* i: getting length extra (have base) */
- DIST, /* i: get distance next */
- DISTEXT, /* i: getting distance extra */
- COPY, /* o: copying bytes in window, waiting for space */
- LIT, /* o: got literal, waiting for output space */
- WASH, /* o: got eob, possibly still output waiting */
- END, /* x: got eob and all data flushed */
- BADCODE} /* x: got error */
- mode; /* current inflate_codes mode */
-
- /* mode dependent information */
- uInt len;
- union {
- struct {
- inflate_huft *tree; /* pointer into tree */
- uInt need; /* bits needed */
- } code; /* if LEN or DIST, where in tree */
- uInt lit; /* if LIT, literal */
- struct {
- uInt get; /* bits to get for extra */
- uInt dist; /* distance back to copy from */
- } copy; /* if EXT or COPY, where and how much */
- } sub; /* submode */
-
- /* mode independent information */
- Byte lbits; /* ltree bits decoded per branch */
- Byte dbits; /* dtree bits decoder per branch */
- inflate_huft *ltree; /* literal/length/eob tree */
- inflate_huft *dtree; /* distance tree */
-
-};
-
-
-inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
-uInt bl, bd;
-inflate_huft *tl;
-inflate_huft *td; /* need separate declaration for Borland C++ */
-z_streamp z;
-{
- inflate_codes_statef *c;
-
- if ((c = (inflate_codes_statef *)
- ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
- {
- c->mode = START;
- c->lbits = (Byte)bl;
- c->dbits = (Byte)bd;
- c->ltree = tl;
- c->dtree = td;
- Tracev((stderr, "inflate: codes new\n"));
- }
- return c;
-}
-
-
-int inflate_codes(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
- uInt j; /* temporary storage */
- inflate_huft *t; /* temporary pointer */
- uInt e; /* extra bits or operation */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
- Bytef *f; /* pointer to copy strings from */
- inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
-
- /* copy input/output information to locals (UPDATE macro restores) */
- LOAD
-
- /* process input and output based on current state */
- while (1) switch (c->mode)
- { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
- case START: /* x: set up for LEN */
-#ifndef SLOW
- if (m >= 258 && n >= 10)
- {
- UPDATE
- r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
- LOAD
- if (r != Z_OK)
- {
- c->mode = r == Z_STREAM_END ? WASH : BADCODE;
- break;
- }
- }
-#endif /* !SLOW */
- c->sub.code.need = c->lbits;
- c->sub.code.tree = c->ltree;
- c->mode = LEN;
- case LEN: /* i: get length/literal/eob next */
- j = c->sub.code.need;
- NEEDBITS(j)
- t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
- DUMPBITS(t->bits)
- e = (uInt)(t->exop);
- if (e == 0) /* literal */
- {
- c->sub.lit = t->base;
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", t->base));
- c->mode = LIT;
- break;
- }
- if (e & 16) /* length */
- {
- c->sub.copy.get = e & 15;
- c->len = t->base;
- c->mode = LENEXT;
- break;
- }
- if ((e & 64) == 0) /* next table */
- {
- c->sub.code.need = e;
- c->sub.code.tree = t->next;
- break;
- }
- if (e & 32) /* end of block */
- {
- Tracevv((stderr, "inflate: end of block\n"));
- c->mode = WASH;
- break;
- }
- c->mode = BADCODE; /* invalid code */
- z->msg = (char*)"invalid literal/length code";
- r = Z_DATA_ERROR;
- LEAVE
- case LENEXT: /* i: getting length extra (have base) */
- j = c->sub.copy.get;
- NEEDBITS(j)
- c->len += (uInt)b & inflate_mask[j];
- DUMPBITS(j)
- c->sub.code.need = c->dbits;
- c->sub.code.tree = c->dtree;
- Tracevv((stderr, "inflate: length %u\n", c->len));
- c->mode = DIST;
- case DIST: /* i: get distance next */
- j = c->sub.code.need;
- NEEDBITS(j)
- t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
- DUMPBITS(t->bits)
- e = (uInt)(t->exop);
- if (e & 16) /* distance */
- {
- c->sub.copy.get = e & 15;
- c->sub.copy.dist = t->base;
- c->mode = DISTEXT;
- break;
- }
- if ((e & 64) == 0) /* next table */
- {
- c->sub.code.need = e;
- c->sub.code.tree = t->next;
- break;
- }
- c->mode = BADCODE; /* invalid code */
- z->msg = (char*)"invalid distance code";
- r = Z_DATA_ERROR;
- LEAVE
- case DISTEXT: /* i: getting distance extra */
- j = c->sub.copy.get;
- NEEDBITS(j)
- c->sub.copy.dist += (uInt)b & inflate_mask[j];
- DUMPBITS(j)
- Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
- c->mode = COPY;
- case COPY: /* o: copying bytes in window, waiting for space */
-#ifndef __TURBOC__ /* Turbo C bug for following expression */
- f = (uInt)(q - s->window) < c->sub.copy.dist ?
- s->end - (c->sub.copy.dist - (q - s->window)) :
- q - c->sub.copy.dist;
-#else
- f = q - c->sub.copy.dist;
- if ((uInt)(q - s->window) < c->sub.copy.dist)
- f = s->end - (c->sub.copy.dist - (uInt)(q - s->window));
-#endif
- while (c->len)
- {
- NEEDOUT
- OUTBYTE(*f++)
- if (f == s->end)
- f = s->window;
- c->len--;
- }
- c->mode = START;
- break;
- case LIT: /* o: got literal, waiting for output space */
- NEEDOUT
- OUTBYTE(c->sub.lit)
- c->mode = START;
- break;
- case WASH: /* o: got eob, possibly more output */
- FLUSH
- if (s->read != s->write)
- LEAVE
- c->mode = END;
- case END:
- r = Z_STREAM_END;
- LEAVE
- case BADCODE: /* x: got error */
- r = Z_DATA_ERROR;
- LEAVE
- default:
- r = Z_STREAM_ERROR;
- LEAVE
- }
-}
-
-
-void inflate_codes_free(c, z)
-inflate_codes_statef *c;
-z_streamp z;
-{
- ZFREE(z, c);
- Tracev((stderr, "inflate: codes free\n"));
-}
-/* --- infcodes.c */
-
-/* +++ infutil.c */
-/* inflate_util.c -- data and routines common to blocks and codes
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-/* #include "infblock.h" */
-/* #include "inftrees.h" */
-/* #include "infcodes.h" */
-/* #include "infutil.h" */
-
-#ifndef NO_DUMMY_DECL
-struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-#endif
-
-/* And'ing with mask[n] masks the lower n bits */
-uInt inflate_mask[17] = {
- 0x0000,
- 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
- 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
-};
-
-
-/* copy as much as possible from the sliding window to the output area */
-int inflate_flush(s, z, r)
-inflate_blocks_statef *s;
-z_streamp z;
-int r;
-{
- uInt n;
- Bytef *p;
- Bytef *q;
-
- /* local copies of source and destination pointers */
- p = z->next_out;
- q = s->read;
-
- /* compute number of bytes to copy as far as end of window */
- n = (uInt)((q <= s->write ? s->write : s->end) - q);
- if (n > z->avail_out) n = z->avail_out;
- if (n && r == Z_BUF_ERROR) r = Z_OK;
-
- /* update counters */
- z->avail_out -= n;
- z->total_out += n;
-
- /* update check information */
- if (s->checkfn != Z_NULL)
- z->adler = s->check = (*s->checkfn)(s->check, q, n);
-
- /* copy as far as end of window */
- if (p != Z_NULL) {
- zmemcpy(p, q, n);
- p += n;
- }
- q += n;
-
- /* see if more to copy at beginning of window */
- if (q == s->end)
- {
- /* wrap pointers */
- q = s->window;
- if (s->write == s->end)
- s->write = s->window;
-
- /* compute bytes to copy */
- n = (uInt)(s->write - q);
- if (n > z->avail_out) n = z->avail_out;
- if (n && r == Z_BUF_ERROR) r = Z_OK;
-
- /* update counters */
- z->avail_out -= n;
- z->total_out += n;
-
- /* update check information */
- if (s->checkfn != Z_NULL)
- z->adler = s->check = (*s->checkfn)(s->check, q, n);
-
- /* copy */
- if (p != Z_NULL) {
- zmemcpy(p, q, n);
- p += n;
- }
- q += n;
- }
-
- /* update pointers */
- z->next_out = p;
- s->read = q;
-
- /* done */
- return r;
-}
-/* --- infutil.c */
-
-/* +++ inffast.c */
-/* inffast.c -- process literals and length/distance pairs fast
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* #include "zutil.h" */
-/* #include "inftrees.h" */
-/* #include "infblock.h" */
-/* #include "infcodes.h" */
-/* #include "infutil.h" */
-/* #include "inffast.h" */
-
-#ifndef NO_DUMMY_DECL
-struct inflate_codes_state {int dummy;}; /* for buggy compilers */
-#endif
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-/* macros for bit input with no checking and for returning unused bytes */
-#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-#define UNGRAB {n+=(c=k>>3);p-=c;k&=7;}
-
-/* Called with number of bytes left to write in window at least 258
- (the maximum string length) and number of input bytes available
- at least ten. The ten bytes are six bytes for the longest length/
- distance pair plus four bytes for overloading the bit buffer. */
-
-int inflate_fast(bl, bd, tl, td, s, z)
-uInt bl, bd;
-inflate_huft *tl;
-inflate_huft *td; /* need separate declaration for Borland C++ */
-inflate_blocks_statef *s;
-z_streamp z;
-{
- inflate_huft *t; /* temporary pointer */
- uInt e; /* extra bits or operation */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
- uInt ml; /* mask for literal/length tree */
- uInt md; /* mask for distance tree */
- uInt c; /* bytes to copy */
- uInt d; /* distance back to copy from */
- Bytef *r; /* copy source pointer */
-
- /* load input, output, bit values */
- LOAD
-
- /* initialize masks */
- ml = inflate_mask[bl];
- md = inflate_mask[bd];
-
- /* do until not enough input or output space for fast loop */
- do { /* assume called with m >= 258 && n >= 10 */
- /* get literal/length code */
- GRABBITS(20) /* max bits for literal/length code */
- if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
- {
- DUMPBITS(t->bits)
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: * literal '%c'\n" :
- "inflate: * literal 0x%02x\n", t->base));
- *q++ = (Byte)t->base;
- m--;
- continue;
- }
- do {
- DUMPBITS(t->bits)
- if (e & 16)
- {
- /* get extra bits for length */
- e &= 15;
- c = t->base + ((uInt)b & inflate_mask[e]);
- DUMPBITS(e)
- Tracevv((stderr, "inflate: * length %u\n", c));
-
- /* decode distance base of block to copy */
- GRABBITS(15); /* max bits for distance code */
- e = (t = td + ((uInt)b & md))->exop;
- do {
- DUMPBITS(t->bits)
- if (e & 16)
- {
- /* get extra bits to add to distance base */
- e &= 15;
- GRABBITS(e) /* get extra bits (up to 13) */
- d = t->base + ((uInt)b & inflate_mask[e]);
- DUMPBITS(e)
- Tracevv((stderr, "inflate: * distance %u\n", d));
-
- /* do the copy */
- m -= c;
- if ((uInt)(q - s->window) >= d) /* offset before dest */
- { /* just copy */
- r = q - d;
- *q++ = *r++; c--; /* minimum count is three, */
- *q++ = *r++; c--; /* so unroll loop a little */
- }
- else /* else offset after destination */
- {
- e = d - (uInt)(q - s->window); /* bytes from offset to end */
- r = s->end - e; /* pointer to offset */
- if (c > e) /* if source crosses, */
- {
- c -= e; /* copy to end of window */
- do {
- *q++ = *r++;
- } while (--e);
- r = s->window; /* copy rest from start of window */
- }
- }
- do { /* copy all or what's left */
- *q++ = *r++;
- } while (--c);
- break;
- }
- else if ((e & 64) == 0)
- e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop;
- else
- {
- z->msg = (char*)"invalid distance code";
- UNGRAB
- UPDATE
- return Z_DATA_ERROR;
- }
- } while (1);
- break;
- }
- if ((e & 64) == 0)
- {
- if ((e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop) == 0)
- {
- DUMPBITS(t->bits)
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: * literal '%c'\n" :
- "inflate: * literal 0x%02x\n", t->base));
- *q++ = (Byte)t->base;
- m--;
- break;
- }
- }
- else if (e & 32)
- {
- Tracevv((stderr, "inflate: * end of block\n"));
- UNGRAB
- UPDATE
- return Z_STREAM_END;
- }
- else
- {
- z->msg = (char*)"invalid literal/length code";
- UNGRAB
- UPDATE
- return Z_DATA_ERROR;
- }
- } while (1);
- } while (m >= 258 && n >= 10);
-
- /* not enough input or output--restore pointers and return */
- UNGRAB
- UPDATE
- return Z_OK;
-}
-/* --- inffast.c */
-
-/* +++ zutil.c */
-/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995-1996 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: zutil.c,v 1.17 1996/07/24 13:41:12 me Exp $ */
-
-#ifdef DEBUG_ZLIB
-#include <stdio.h>
-#endif
-
-/* #include "zutil.h" */
-
-#ifndef NO_DUMMY_DECL
-struct internal_state {int dummy;}; /* for buggy compilers */
-#endif
-
-#ifndef STDC
-extern void exit OF((int));
-#endif
-
-const char *z_errmsg[10] = {
-"need dictionary", /* Z_NEED_DICT 2 */
-"stream end", /* Z_STREAM_END 1 */
-"", /* Z_OK 0 */
-"file error", /* Z_ERRNO (-1) */
-"stream error", /* Z_STREAM_ERROR (-2) */
-"data error", /* Z_DATA_ERROR (-3) */
-"insufficient memory", /* Z_MEM_ERROR (-4) */
-"buffer error", /* Z_BUF_ERROR (-5) */
-"incompatible version",/* Z_VERSION_ERROR (-6) */
-""};
-
-
-const char *zlibVersion()
-{
- return ZLIB_VERSION;
-}
-
-#ifdef DEBUG_ZLIB
-void z_error (m)
- char *m;
-{
- fprintf(stderr, "%s\n", m);
- exit(1);
-}
-#endif
-
-#ifndef HAVE_MEMCPY
-
-void zmemcpy(dest, source, len)
- Bytef* dest;
- Bytef* source;
- uInt len;
-{
- if (len == 0) return;
- do {
- *dest++ = *source++; /* ??? to be unrolled */
- } while (--len != 0);
-}
-
-int zmemcmp(s1, s2, len)
- Bytef* s1;
- Bytef* s2;
- uInt len;
-{
- uInt j;
-
- for (j = 0; j < len; j++) {
- if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
- }
- return 0;
-}
-
-void zmemzero(dest, len)
- Bytef* dest;
- uInt len;
-{
- if (len == 0) return;
- do {
- *dest++ = 0; /* ??? to be unrolled */
- } while (--len != 0);
-}
-#endif
-
-#ifdef __TURBOC__
-#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__)
-/* Small and medium model in Turbo C are for now limited to near allocation
- * with reduced MAX_WBITS and MAX_MEM_LEVEL
- */
-# define MY_ZCALLOC
-
-/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
- * and farmalloc(64K) returns a pointer with an offset of 8, so we
- * must fix the pointer. Warning: the pointer must be put back to its
- * original form in order to free it, use zcfree().
- */
-
-#define MAX_PTR 10
-/* 10*64K = 640K */
-
-local int next_ptr = 0;
-
-typedef struct ptr_table_s {
- voidpf org_ptr;
- voidpf new_ptr;
-} ptr_table;
-
-local ptr_table table[MAX_PTR];
-/* This table is used to remember the original form of pointers
- * to large buffers (64K). Such pointers are normalized with a zero offset.
- * Since MSDOS is not a preemptive multitasking OS, this table is not
- * protected from concurrent access. This hack doesn't work anyway on
- * a protected system like OS/2. Use Microsoft C instead.
- */
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
- voidpf buf = opaque; /* just to make some compilers happy */
- ulg bsize = (ulg)items*size;
-
- /* If we allocate less than 65520 bytes, we assume that farmalloc
- * will return a usable pointer which doesn't have to be normalized.
- */
- if (bsize < 65520L) {
- buf = farmalloc(bsize);
- if (*(ush*)&buf != 0) return buf;
- } else {
- buf = farmalloc(bsize + 16L);
- }
- if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
- table[next_ptr].org_ptr = buf;
-
- /* Normalize the pointer to seg:0 */
- *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
- *(ush*)&buf = 0;
- table[next_ptr++].new_ptr = buf;
- return buf;
-}
-
-void zcfree (voidpf opaque, voidpf ptr)
-{
- int n;
- if (*(ush*)&ptr != 0) { /* object < 64K */
- farfree(ptr);
- return;
- }
- /* Find the original pointer */
- for (n = 0; n < next_ptr; n++) {
- if (ptr != table[n].new_ptr) continue;
-
- farfree(table[n].org_ptr);
- while (++n < next_ptr) {
- table[n-1] = table[n];
- }
- next_ptr--;
- return;
- }
- ptr = opaque; /* just to make some compilers happy */
- Assert(0, "zcfree: ptr not found");
-}
-#endif
-#endif /* __TURBOC__ */
-
-
-#if defined(M_I86) && !defined(__32BIT__)
-/* Microsoft C in 16-bit mode */
-
-# define MY_ZCALLOC
-
-#if (!defined(_MSC_VER) || (_MSC_VER < 600))
-# define _halloc halloc
-# define _hfree hfree
-#endif
-
-voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
- if (opaque) opaque = 0; /* to make compiler happy */
- return _halloc((long)items, size);
-}
-
-void zcfree (voidpf opaque, voidpf ptr)
-{
- if (opaque) opaque = 0; /* to make compiler happy */
- _hfree(ptr);
-}
-
-#endif /* MSC */
-
-
-#ifndef MY_ZCALLOC /* Any system without a special alloc function */
-
-#ifndef STDC
-extern voidp calloc OF((uInt items, uInt size));
-extern void free OF((voidpf ptr));
-#endif
-
-voidpf zcalloc (opaque, items, size)
- voidpf opaque;
- unsigned items;
- unsigned size;
-{
- if (opaque) items += size - size; /* make compiler happy */
- return (voidpf)calloc(items, size);
-}
-
-void zcfree (opaque, ptr)
- voidpf opaque;
- voidpf ptr;
-{
- free(ptr);
- if (opaque) return; /* make compiler happy */
-}
-
-#endif /* MY_ZCALLOC */
-/* --- zutil.c */
-
-/* +++ adler32.c */
-/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995-1996 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: adler32.c,v 1.10 1996/05/22 11:52:18 me Exp $ */
-
-/* #include "zlib.h" */
-
-#define BASE 65521L /* largest prime smaller than 65536 */
-#define NMAX 5552
-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-
-#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
-#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
-#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
-#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
-#define DO16(buf) DO8(buf,0); DO8(buf,8);
-
-/* ========================================================================= */
-uLong adler32(adler, buf, len)
- uLong adler;
- const Bytef *buf;
- uInt len;
-{
- unsigned long s1 = adler & 0xffff;
- unsigned long s2 = (adler >> 16) & 0xffff;
- int k;
-
- if (buf == Z_NULL) return 1L;
-
- while (len > 0) {
- k = len < NMAX ? len : NMAX;
- len -= k;
- while (k >= 16) {
- DO16(buf);
- buf += 16;
- k -= 16;
- }
- if (k != 0) do {
- s1 += *buf++;
- s2 += s1;
- } while (--k);
- s1 %= BASE;
- s2 %= BASE;
- }
- return (s2 << 16) | s1;
-}
-/* --- adler32.c */
diff --git a/mdk-stage1/ppp/common/zlib.h b/mdk-stage1/ppp/common/zlib.h
deleted file mode 100644
index 188ddaff9..000000000
--- a/mdk-stage1/ppp/common/zlib.h
+++ /dev/null
@@ -1,1010 +0,0 @@
-/* $Id$ */
-
-/*
- * This file is derived from zlib.h and zconf.h from the zlib-1.0.4
- * distribution by Jean-loup Gailly and Mark Adler, with some additions
- * by Paul Mackerras to aid in implementing Deflate compression and
- * decompression for PPP packets.
- */
-
-/*
- * ==FILEVERSION 971127==
- *
- * This marker is used by the Linux installation script to determine
- * whether an up-to-date version of this file is already installed.
- */
-
-
-/* +++ zlib.h */
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.0.4, Jul 24th, 1996.
-
- Copyright (C) 1995-1996 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- gzip@prep.ai.mit.edu madler@alumni.caltech.edu
-
-
- The data format used by the zlib library is described by RFCs (Request for
- Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
- (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef _ZLIB_H
-#define _ZLIB_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* +++ zconf.h */
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-1996 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: zconf.h,v 1.20 1996/07/02 15:09:28 me Exp $ */
-
-#ifndef _ZCONF_H
-#define _ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-# define deflateInit_ z_deflateInit_
-# define deflate z_deflate
-# define deflateEnd z_deflateEnd
-# define inflateInit_ z_inflateInit_
-# define inflate z_inflate
-# define inflateEnd z_inflateEnd
-# define deflateInit2_ z_deflateInit2_
-# define deflateSetDictionary z_deflateSetDictionary
-# define deflateCopy z_deflateCopy
-# define deflateReset z_deflateReset
-# define deflateParams z_deflateParams
-# define inflateInit2_ z_inflateInit2_
-# define inflateSetDictionary z_inflateSetDictionary
-# define inflateSync z_inflateSync
-# define inflateReset z_inflateReset
-# define compress z_compress
-# define uncompress z_uncompress
-# define adler32 z_adler32
-# define crc32 z_crc32
-# define get_crc_table z_get_crc_table
-
-# define Byte z_Byte
-# define uInt z_uInt
-# define uLong z_uLong
-# define Bytef z_Bytef
-# define charf z_charf
-# define intf z_intf
-# define uIntf z_uIntf
-# define uLongf z_uLongf
-# define voidpf z_voidpf
-# define voidp z_voidp
-#endif
-
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-# define WIN32
-#endif
-#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
-# ifndef __32BIT__
-# define __32BIT__
-# endif
-#endif
-#if defined(__MSDOS__) && !defined(MSDOS)
-# define MSDOS
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#if defined(MSDOS) && !defined(__32BIT__)
-# define MAXSEG_64K
-#endif
-#ifdef MSDOS
-# define UNALIGNED_OK
-#endif
-
-#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
-# define STDC
-#endif
-#if (defined(__STDC__) || defined(__cplusplus)) && !defined(STDC)
-# define STDC
-#endif
-
-#ifndef STDC
-# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-# define const
-# endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
-# define NO_DUMMY_DECL
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2 */
-#ifndef MAX_WBITS
-# define MAX_WBITS 15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
- 1 << (windowBits+2) + 1 << (memLevel+9)
- that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
- make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
- The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
- /* Type declarations */
-
-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
- /* MSC small or medium model */
-# define SMALL_MEDIUM
-# ifdef _MSC_VER
-# define FAR __far
-# else
-# define FAR far
-# endif
-#endif
-#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
-# ifndef __32BIT__
-# define SMALL_MEDIUM
-# define FAR __far
-# endif
-#endif
-#ifndef FAR
-# define FAR
-#endif
-
-typedef unsigned char Byte; /* 8 bits */
-typedef unsigned int uInt; /* 16 bits or more */
-typedef unsigned long uLong; /* 32 bits or more */
-
-#if defined(__BORLANDC__) && defined(SMALL_MEDIUM)
- /* Borland C/C++ ignores FAR inside typedef */
-# define Bytef Byte FAR
-#else
- typedef Byte FAR Bytef;
-#endif
-typedef char FAR charf;
-typedef int FAR intf;
-typedef uInt FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
- typedef void FAR *voidpf;
- typedef void *voidp;
-#else
- typedef Byte FAR *voidpf;
- typedef Byte *voidp;
-#endif
-
-
-/* Compile with -DZLIB_DLL for Windows DLL support */
-#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL)
-# include <windows.h>
-# define EXPORT WINAPI
-#else
-# define EXPORT
-#endif
-
-#endif /* _ZCONF_H */
-/* --- zconf.h */
-
-#define ZLIB_VERSION "1.0.4P"
-
-/*
- The 'zlib' compression library provides in-memory compression and
- decompression functions, including integrity checks of the uncompressed
- data. This version of the library supports only one compression method
- (deflation) but other algorithms may be added later and will have the same
- stream interface.
-
- For compression the application must provide the output buffer and
- may optionally provide the input buffer for optimization. For decompression,
- the application must provide the input buffer and may optionally provide
- the output buffer for optimization.
-
- Compression can be done in a single step if the buffers are large
- enough (for example if an input file is mmap'ed), or can be done by
- repeated calls of the compression function. In the latter case, the
- application must provide more input and/or consume the output
- (providing more output space) before each call.
-
- The library does not install any signal handler. It is recommended to
- add at least a handler for SIGSEGV when decompressing; the library checks
- the consistency of the input data whenever possible but may go nuts
- for some forms of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void (*free_func) OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
- Bytef *next_in; /* next input byte */
- uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total nb of input bytes read so far */
-
- Bytef *next_out; /* next output byte should be put there */
- uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total nb of bytes output so far */
-
- char *msg; /* last error message, NULL if no error */
- struct internal_state FAR *state; /* not visible by applications */
-
- alloc_func zalloc; /* used to allocate the internal state */
- free_func zfree; /* used to free the internal state */
- voidpf opaque; /* private data object passed to zalloc and zfree */
-
- int data_type; /* best guess about the data type: ascii or binary */
- uLong adler; /* adler32 value of the uncompressed data */
- uLong reserved; /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
- The application must update next_in and avail_in when avail_in has
- dropped to zero. It must update next_out and avail_out when avail_out
- has dropped to zero. The application must initialize zalloc, zfree and
- opaque before calling the init function. All other fields are set by the
- compression library and must not be updated by the application.
-
- The opaque value provided by the application will be passed as the first
- parameter for calls of zalloc and zfree. This can be useful for custom
- memory management. The compression library attaches no meaning to the
- opaque value.
-
- zalloc must return Z_NULL if there is not enough memory for the object.
- On 16-bit systems, the functions zalloc and zfree must be able to allocate
- exactly 65536 bytes, but will not be required to allocate more than this
- if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
- pointers returned by zalloc for objects of exactly 65536 bytes *must*
- have their offset normalized to zero. The default allocation function
- provided by this library ensures this (see zutil.c). To reduce memory
- requirements and avoid any allocation of 64K objects, at the expense of
- compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
- The fields total_in and total_out can be used for statistics or
- progress reports. After compression, total_in holds the total size of
- the uncompressed data and may be saved for use in the decompressor
- (particularly if the decompressor wants to decompress everything in
- a single step).
-*/
-
- /* constants */
-
-#define Z_NO_FLUSH 0
-#define Z_PARTIAL_FLUSH 1
-#define Z_PACKET_FLUSH 2
-#define Z_SYNC_FLUSH 3
-#define Z_FULL_FLUSH 4
-#define Z_FINISH 5
-/* Allowed flush values; see deflate() below for details */
-
-#define Z_OK 0
-#define Z_STREAM_END 1
-#define Z_NEED_DICT 2
-#define Z_ERRNO (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR (-3)
-#define Z_MEM_ERROR (-4)
-#define Z_BUF_ERROR (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION 0
-#define Z_BEST_SPEED 1
-#define Z_BEST_COMPRESSION 9
-#define Z_DEFAULT_COMPRESSION (-1)
-/* compression levels */
-
-#define Z_FILTERED 1
-#define Z_HUFFMAN_ONLY 2
-#define Z_DEFAULT_STRATEGY 0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY 0
-#define Z_ASCII 1
-#define Z_UNKNOWN 2
-/* Possible values of the data_type field */
-
-#define Z_DEFLATED 8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
- /* basic functions */
-
-extern const char * EXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is
- not compatible with the zlib.h header file used by the application.
- This check is automatically made by deflateInit and inflateInit.
- */
-
-/*
-extern int EXPORT deflateInit OF((z_streamp strm, int level));
-
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller.
- If zalloc and zfree are set to Z_NULL, deflateInit updates them to
- use default allocation functions.
-
- The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
- 1 gives best speed, 9 gives best compression, 0 gives no compression at
- all (the input data is simply copied a block at a time).
- Z_DEFAULT_COMPRESSION requests a default compromise between speed and
- compression (currently equivalent to level 6).
-
- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if level is not a valid compression level,
- Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
- with the version assumed by the caller (ZLIB_VERSION).
- msg is set to null if there is no error message. deflateInit does not
- perform any compression: this will be done by deflate().
-*/
-
-
-extern int EXPORT deflate OF((z_streamp strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Compress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in and avail_in are updated and
- processing will resume at this point for the next call of deflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. This action is forced if the parameter flush is non zero.
- Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications).
- Some output may be provided even if flush is not set.
-
- Before the call of deflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating avail_in or avail_out accordingly; avail_out
- should never be zero before the call. The application can consume the
- compressed output when it wants, for example when the output buffer is full
- (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
- and with zero avail_out, it must be called again after making room in the
- output buffer because there might be more output pending.
-
- If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression
- block is terminated and flushed to the output buffer so that the
- decompressor can get all input data available so far. For method 9, a future
- variant on method 8, the current block will be flushed but not terminated.
- Z_SYNC_FLUSH has the same effect as partial flush except that the compressed
- output is byte aligned (the compressor can clear its internal bit buffer)
- and the current block is always terminated; this can be useful if the
- compressor has to be restarted from scratch after an interruption (in which
- case the internal state of the compressor may be lost).
- If flush is set to Z_FULL_FLUSH, the compression block is terminated, a
- special marker is output and the compression dictionary is discarded; this
- is useful to allow the decompressor to synchronize if one compressed block
- has been damaged (see inflateSync below). Flushing degrades compression and
- so should be used only when necessary. Using Z_FULL_FLUSH too often can
- seriously degrade the compression. If deflate returns with avail_out == 0,
- this function must be called again with the same value of the flush
- parameter and more output space (updated avail_out), until the flush is
- complete (deflate returns with non-zero avail_out).
-
- If the parameter flush is set to Z_PACKET_FLUSH, the compression
- block is terminated, and a zero-length stored block is output,
- omitting the length bytes (the effect of this is that the 3-bit type
- code 000 for a stored block is output, and the output is then
- byte-aligned). This is designed for use at the end of a PPP packet.
-
- If the parameter flush is set to Z_FINISH, pending input is processed,
- pending output is flushed and deflate returns with Z_STREAM_END if there
- was enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the
- stream are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least
- 0.1% larger than avail_in plus 12 bytes. If deflate does not return
- Z_STREAM_END, then it must be called again as described above.
-
- deflate() may update data_type if it can make a good guess about
- the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect
- the compression algorithm in any manner.
-
- deflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if all input has been
- consumed and all output has been produced (only when flush is set to
- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible.
-*/
-
-
-extern int EXPORT deflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- stream state was inconsistent, Z_DATA_ERROR if the stream was freed
- prematurely (some input or output was discarded). In the error case,
- msg may be set but then points to a static string (which must not be
- deallocated).
-*/
-
-
-/*
-extern int EXPORT inflateInit OF((z_streamp strm));
-
- Initializes the internal stream state for decompression. The fields
- zalloc, zfree and opaque must be initialized before by the caller. If
- zalloc and zfree are set to Z_NULL, inflateInit updates them to use default
- allocation functions.
-
- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_VERSION_ERROR if the zlib library version is incompatible
- with the version assumed by the caller. msg is set to null if there is no
- error message. inflateInit does not perform any decompression: this will be
- done by inflate().
-*/
-
-
-extern int EXPORT inflate OF((z_streamp strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Decompress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing
- will resume at this point for the next call of inflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. inflate() provides as much output as possible, until there
- is no more input data or no more space in the output buffer (see below
- about the flush parameter).
-
- Before the call of inflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating the next_* and avail_* values accordingly.
- The application can consume the uncompressed output when it wants, for
- example when the output buffer is full (avail_out == 0), or after each
- call of inflate(). If inflate returns Z_OK and with zero avail_out, it
- must be called again after making room in the output buffer because there
- might be more output pending.
-
- If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH,
- inflate flushes as much output as possible to the output buffer. The
- flushing behavior of inflate is not specified for values of the flush
- parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the
- current implementation actually flushes as much output as possible
- anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data
- has been consumed, it is expecting to see the length field of a stored
- block; if not, it returns Z_DATA_ERROR.
-
- inflate() should normally be called until it returns Z_STREAM_END or an
- error. However if all decompression is to be performed in a single step
- (a single call of inflate), the parameter flush should be set to
- Z_FINISH. In this case all pending input is processed and all pending
- output is flushed; avail_out must be large enough to hold all the
- uncompressed data. (The size of the uncompressed data may have been saved
- by the compressor for this purpose.) The next operation on this stream must
- be inflateEnd to deallocate the decompression state. The use of Z_FINISH
- is never required, but can be used to inform inflate that a faster routine
- may be used for the single inflate() call.
-
- inflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if the end of the
- compressed data has been reached and all uncompressed output has been
- produced, Z_NEED_DICT if a preset dictionary is needed at this point (see
- inflateSetDictionary below), Z_DATA_ERROR if the input data was corrupted,
- Z_STREAM_ERROR if the stream structure was inconsistent (for example if
- next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
- Z_BUF_ERROR if no progress is possible or if there was not enough room in
- the output buffer when Z_FINISH is used. In the Z_DATA_ERROR case, the
- application may then call inflateSync to look for a good compression block.
- In the Z_NEED_DICT case, strm->adler is set to the Adler32 value of the
- dictionary chosen by the compressor.
-*/
-
-
-extern int EXPORT inflateEnd OF((z_streamp strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
-*/
-
- /* Advanced functions */
-
-/*
- The following functions are needed only in some special applications.
-*/
-
-/*
-extern int EXPORT deflateInit2 OF((z_streamp strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy));
-
- This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by
- the caller.
-
- The method parameter is the compression method. It must be Z_DEFLATED in
- this version of the library. (Method 9 will allow a 64K history buffer and
- partial block flushes.)
-
- The windowBits parameter is the base two logarithm of the window size
- (the size of the history buffer). It should be in the range 8..15 for this
- version of the library (the value 16 will be allowed for method 9). Larger
- values of this parameter result in better compression at the expense of
- memory usage. The default value is 15 if deflateInit is used instead.
-
- The memLevel parameter specifies how much memory should be allocated
- for the internal compression state. memLevel=1 uses minimum memory but
- is slow and reduces compression ratio; memLevel=9 uses maximum memory
- for optimal speed. The default value is 8. See zconf.h for total memory
- usage as a function of windowBits and memLevel.
-
- The strategy parameter is used to tune the compression algorithm. Use the
- value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
- filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
- string match). Filtered data consists mostly of small values with a
- somewhat random distribution. In this case, the compression algorithm is
- tuned to compress them better. The effect of Z_FILTERED is to force more
- Huffman coding and less string matching; it is somewhat intermediate
- between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
- the compression ratio but not the correctness of the compressed output even
- if it is not set appropriately.
-
- If next_in is not null, the library will use this buffer to hold also
- some history information; the buffer must either hold the entire input
- data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in
- is null, the library will allocate its own history buffer (and leave next_in
- null). next_out need not be provided here but must be provided by the
- application for the next call of deflate().
-
- If the history buffer is provided by the application, next_in must
- must never be changed by the application since the compressor maintains
- information inside this buffer from call to call; the application
- must provide more input only by increasing avail_in. next_in is always
- reset by the library in this case.
-
- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- an invalid method). msg is set to null if there is no error message.
- deflateInit2 does not perform any compression: this will be done by
- deflate().
-*/
-
-extern int EXPORT deflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the compression dictionary (history buffer) from the given
- byte sequence without producing any compressed output. This function must
- be called immediately after deflateInit or deflateInit2, before any call
- of deflate. The compressor and decompressor must use exactly the same
- dictionary (see inflateSetDictionary).
- The dictionary should consist of strings (byte sequences) that are likely
- to be encountered later in the data to be compressed, with the most commonly
- used strings preferably put towards the end of the dictionary. Using a
- dictionary is most useful when the data to be compressed is short and
- can be predicted with good accuracy; the data can then be compressed better
- than with the default empty dictionary. In this version of the library,
- only the last 32K bytes of the dictionary are used.
- Upon return of this function, strm->adler is set to the Adler32 value
- of the dictionary; the decompressor may later use this value to determine
- which dictionary has been used by the compressor. (The Adler32 value
- applies to the whole dictionary even if only a subset of the dictionary is
- actually used by the compressor.)
-
- deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state
- is inconsistent (for example if deflate has already been called for this
- stream). deflateSetDictionary does not perform any compression: this will
- be done by deflate().
-*/
-
-extern int EXPORT deflateCopy OF((z_streamp dest,
- z_streamp source));
-/*
- Sets the destination stream as a complete copy of the source stream. If
- the source stream is using an application-supplied history buffer, a new
- buffer is allocated for the destination stream. The compressed output
- buffer is always application-supplied. It's the responsibility of the
- application to provide the correct values of next_out and avail_out for the
- next call of deflate.
-
- This function can be useful when several compression strategies will be
- tried, for example when there are several ways of pre-processing the input
- data with a filter. The streams that will be discarded should then be freed
- by calling deflateEnd. Note that deflateCopy duplicates the internal
- compression state which can be quite large, so this strategy is slow and
- can consume lots of memory.
-
- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being NULL). msg is left unchanged in both source and
- destination.
-*/
-
-extern int EXPORT deflateReset OF((z_streamp strm));
-/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state.
- The stream will keep the same compression level and any other attributes
- that may have been set by deflateInit2.
-
- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-extern int EXPORT deflateParams OF((z_streamp strm, int level, int strategy));
-/*
- Dynamically update the compression level and compression strategy.
- This can be used to switch between compression and straight copy of
- the input data, or to switch to a different kind of input data requiring
- a different strategy. If the compression level is changed, the input
- available so far is compressed with the old level (and may be flushed);
- the new level will take effect only at the next call of deflate().
-
- Before the call of deflateParams, the stream state must be set as for
- a call of deflate(), since the currently available input may have to
- be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
- if strm->avail_out was zero.
-*/
-
-extern int EXPORT deflateOutputPending OF((z_streamp strm));
-/*
- Returns the number of bytes of output which are immediately
- available from the compressor (i.e. without any further input
- or flush).
-*/
-
-/*
-extern int EXPORT inflateInit2 OF((z_streamp strm,
- int windowBits));
-
- This is another version of inflateInit with more compression options. The
- fields next_out, zalloc, zfree and opaque must be initialized before by
- the caller.
-
- The windowBits parameter is the base two logarithm of the maximum window
- size (the size of the history buffer). It should be in the range 8..15 for
- this version of the library (the value 16 will be allowed soon). The
- default value is 15 if inflateInit is used instead. If a compressed stream
- with a larger window size is given as input, inflate() will return with
- the error code Z_DATA_ERROR instead of trying to allocate a larger window.
-
- If next_out is not null, the library will use this buffer for the history
- buffer; the buffer must either be large enough to hold the entire output
- data, or have at least 1<<windowBits bytes. If next_out is null, the
- library will allocate its own buffer (and leave next_out null). next_in
- need not be provided here but must be provided by the application for the
- next call of inflate().
-
- If the history buffer is provided by the application, next_out must
- never be changed by the application since the decompressor maintains
- history information inside this buffer from call to call; the application
- can only reset next_out to the beginning of the history buffer when
- avail_out is zero and all output has been consumed.
-
- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- windowBits < 8). msg is set to null if there is no error message.
- inflateInit2 does not perform any decompression: this will be done by
- inflate().
-*/
-
-extern int EXPORT inflateSetDictionary OF((z_streamp strm,
- const Bytef *dictionary,
- uInt dictLength));
-/*
- Initializes the decompression dictionary (history buffer) from the given
- uncompressed byte sequence. This function must be called immediately after
- a call of inflate if this call returned Z_NEED_DICT. The dictionary chosen
- by the compressor can be determined from the Adler32 value returned by this
- call of inflate. The compressor and decompressor must use exactly the same
- dictionary (see deflateSetDictionary).
-
- inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
- parameter is invalid (such as NULL dictionary) or the stream state is
- inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
- expected one (incorrect Adler32 value). inflateSetDictionary does not
- perform any decompression: this will be done by subsequent calls of
- inflate().
-*/
-
-extern int EXPORT inflateSync OF((z_streamp strm));
-/*
- Skips invalid compressed data until the special marker (see deflate()
- above) can be found, or until all available input is skipped. No output
- is provided.
-
- inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR
- if no more input was provided, Z_DATA_ERROR if no marker has been found,
- or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
- case, the application may save the current current value of total_in which
- indicates where valid compressed data was found. In the error case, the
- application may repeatedly call inflateSync, providing more input each time,
- until success or end of the input data.
-*/
-
-extern int EXPORT inflateReset OF((z_streamp strm));
-/*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state.
- The stream will keep attributes that may have been set by inflateInit2.
-
- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-extern int inflateIncomp OF((z_stream *strm));
-/*
- This function adds the data at next_in (avail_in bytes) to the output
- history without performing any output. There must be no pending output,
- and the decompressor must be expecting to see the start of a block.
- Calling this function is equivalent to decompressing a stored block
- containing the data at next_in (except that the data is not output).
-*/
-
- /* utility functions */
-
-/*
- The following utility functions are implemented on top of the
- basic stream-oriented functions. To simplify the interface, some
- default options are assumed (compression level, window size,
- standard memory allocation functions). The source code of these
- utility functions can easily be modified if you need special options.
-*/
-
-extern int EXPORT compress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Compresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be at least 0.1% larger than
- sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
- compressed buffer.
- This function can be used to compress a whole file at once if the
- input file is mmap'ed.
- compress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer.
-*/
-
-extern int EXPORT uncompress OF((Bytef *dest, uLongf *destLen,
- const Bytef *source, uLong sourceLen));
-/*
- Decompresses the source buffer into the destination buffer. sourceLen is
- the byte length of the source buffer. Upon entry, destLen is the total
- size of the destination buffer, which must be large enough to hold the
- entire uncompressed data. (The size of the uncompressed data must have
- been saved previously by the compressor and transmitted to the decompressor
- by some mechanism outside the scope of this compression library.)
- Upon exit, destLen is the actual size of the compressed buffer.
- This function can be used to decompress a whole file at once if the
- input file is mmap'ed.
-
- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_BUF_ERROR if there was not enough room in the output
- buffer, or Z_DATA_ERROR if the input data was corrupted.
-*/
-
-
-typedef voidp gzFile;
-
-extern gzFile EXPORT gzopen OF((const char *path, const char *mode));
-/*
- Opens a gzip (.gz) file for reading or writing. The mode parameter
- is as in fopen ("rb" or "wb") but can also include a compression level
- ("wb9"). gzopen can be used to read a file which is not in gzip format;
- in this case gzread will directly read from the file without decompression.
- gzopen returns NULL if the file could not be opened or if there was
- insufficient memory to allocate the (de)compression state; errno
- can be checked to distinguish the two cases (if errno is zero, the
- zlib error is Z_MEM_ERROR).
-*/
-
-extern gzFile EXPORT gzdopen OF((int fd, const char *mode));
-/*
- gzdopen() associates a gzFile with the file descriptor fd. File
- descriptors are obtained from calls like open, dup, creat, pipe or
- fileno (in the file has been previously opened with fopen).
- The mode parameter is as in gzopen.
- The next call of gzclose on the returned gzFile will also close the
- file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
- descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
- gzdopen returns NULL if there was insufficient memory to allocate
- the (de)compression state.
-*/
-
-extern int EXPORT gzread OF((gzFile file, voidp buf, unsigned len));
-/*
- Reads the given number of uncompressed bytes from the compressed file.
- If the input file was not in gzip format, gzread copies the given number
- of bytes into the buffer.
- gzread returns the number of uncompressed bytes actually read (0 for
- end of file, -1 for error). */
-
-extern int EXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len));
-/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes actually written
- (0 in case of error).
-*/
-
-extern int EXPORT gzflush OF((gzFile file, int flush));
-/*
- Flushes all pending output into the compressed file. The parameter
- flush is as in the deflate() function. The return value is the zlib
- error number (see function gzerror below). gzflush returns Z_OK if
- the flush parameter is Z_FINISH and all output could be flushed.
- gzflush should be called only when strictly necessary because it can
- degrade compression.
-*/
-
-extern int EXPORT gzclose OF((gzFile file));
-/*
- Flushes all pending output if necessary, closes the compressed file
- and deallocates all the (de)compression state. The return value is the zlib
- error number (see function gzerror below).
-*/
-
-extern const char * EXPORT gzerror OF((gzFile file, int *errnum));
-/*
- Returns the error message for the last error which occurred on the
- given compressed file. errnum is set to zlib error number. If an
- error occurred in the file system and not in the compression library,
- errnum is set to Z_ERRNO and the application may consult errno
- to get the exact error code.
-*/
-
- /* checksum functions */
-
-/*
- These functions are not related to compression but are exported
- anyway because they might be useful in applications using the
- compression library.
-*/
-
-extern uLong EXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-
-/*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is NULL, this function returns
- the required initial value for the checksum.
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- much faster. Usage example:
-
- uLong adler = adler32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- adler = adler32(adler, buffer, length);
- }
- if (adler != original_adler) error();
-*/
-
-extern uLong EXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
-/*
- Update a running crc with the bytes buf[0..len-1] and return the updated
- crc. If buf is NULL, this function returns the required initial value
- for the crc. Pre- and post-conditioning (one's complement) is performed
- within this function so it shouldn't be done by the application.
- Usage example:
-
- uLong crc = crc32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- crc = crc32(crc, buffer, length);
- }
- if (crc != original_crc) error();
-*/
-
-
- /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-extern int EXPORT deflateInit_ OF((z_streamp strm, int level,
- const char *version, int stream_size));
-extern int EXPORT inflateInit_ OF((z_streamp strm,
- const char *version, int stream_size));
-extern int EXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
- int windowBits, int memLevel, int strategy,
- const char *version, int stream_size));
-extern int EXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
- const char *version, int stream_size));
-#define deflateInit(strm, level) \
- deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
- inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
- deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
- (strategy), ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
- inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-
-#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
- struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-uLongf *get_crc_table OF((void)); /* can be used by asm versions of crc32() */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ZLIB_H */
-/* --- zlib.h */
diff --git a/mdk-stage1/ppp/configure b/mdk-stage1/ppp/configure
deleted file mode 100755
index 544fb0d71..000000000
--- a/mdk-stage1/ppp/configure
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/bin/sh
-# $Id$
-
-# if [ -d /NextApps ]; then
-# system="NeXTStep"
-# else
- system=`uname -s`
- release=`uname -r`
- machine=`uname -p`
- arch=`uname -m`
-# fi
-state="unknown"
-
-case $system in
- Linux)
- makext="linux";
- ksrc="linux";
- state="known";;
- SunOS)
- case $release in
-# [0-3]*) state="ancient";;
-# 4*) state="known"; ksrc="sunos4"; makext="sunos4";;
- 5.[1-6]*) state="known"; ksrc="solaris"; makext="sol2";;
- 5.[7-9]*) state="known"; ksrc="solaris"; makext="sol2";
- case $arch in
- sun4u) lp64='y';;
- *) ;;
- esac;;
- esac;;
- NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
- state="notincluded";;
-# NetBSD)
-# makext="bsd";
-# case $release in
-# 0.*) state="ancient";;
-# 1.0*) state="ancient";;
-# 1.1*) state="known"; ksrc="netbsd-1.1";;
-# 1.2*) state="known"; ksrc="netbsd-1.2"; makext="netbsd-1.2";;
-# 1.[3-9]*|[2-9]*)
-# state="late"; ksrc="netbsd-1.2";;
-# esac;;
-# ULTRIX)
-# makext="ultrix";
-# case $release in
-# [0-3]*) state="ancient";;
-# 4.[01]*) state="early"; ksrc="ultrix";;
-# 4.[234]) state="known"; ksrc="ultrix";;
-# esac;;
-# OSF1)
-# makext="osf";
-# case $release in
-# V1.*) state="neolithic"; ksrc="osf1";;
-# V[23].*) state="neolithic"; ksrc="osf1";;
-# V4.*) state="known"; ksrc="osf1";;
-# V[5-9]*) state="late"; ksrc="osf1";;
-# esac;;
-# FreeBSD)
-# makext="bsd";
-# case $release in
-# 1.*) state="known"; ksrc="freebsd-old";;
-# 2.[01]*) state="known"; ksrc="freebsd-2.0";;
-# 2.2.[2-7]*) state="late"; ksrc="freebsd-2.0";;
-# 2.2.8*) state="known"; ksrc="freebsd-2.2.8";;
-# 3.[0-1]*) state="known"; ksrc="freebsd-3.0";;
-# esac;;
-# NeXTStep)
-# makext="NeXT";
-# ksrc="NeXT";
-# state="known";;
-# SINIX-?)
-# case $release in
-# 5.4[01]) state=known; ksrc=svr4; makext=svr4;;
-# 5.4[2-9]) state=late; ksrc=svr4; makext=svr4;;
-# esac;;
-# # Intel SVR4 systems come with a bug in the uname program. Unless
-# # your provider fixed the bug, or you get a fix for it, uname -S will
-# # overwrite the system name with the node name!
-# UNIX_SV|UNIX_System_V|`uname -n`)
-# case $release in
-# 4.0) state=known; ksrc=svr4; makext=svr4;;
-# 4.2) state=late; ksrc=svr4; makext=svr4;;
-# esac;;
-esac
-
-if [ -d "$ksrc" ]; then :; else
- state="notincluded"
- unset ksrc
-fi
-
-case $state in
- neolithic)
- echo "This is a newer release on an outdated OS ($system)."
- echo " This software may or may not work on this OS."
- echo " You may want to download an older version of PPP for this OS.";;
- ancient)
- echo "This is an old release of a supported OS ($system)."
- echo "This software cannot be used as-is on this system,"
- echo "but you may be able to port it. Good luck!"
- exit;;
- early)
- echo "This is an old release of a supported OS ($system)."
- echo "This software should install and run on this system,"
- echo "but it hasn't been tested.";;
- late)
- echo "This is a newer release of $system than is supported by"
- echo "this software. It may or may not work.";;
- unknown)
- echo "This software has not been ported to this system. Sorry.";;
- notincluded)
- echo "Support for this system has not been included"
- echo "in this distribution. Sorry.";;
-esac
-
-orig_makext=$makext
-
-if [ -d "$ksrc" ]; then
- echo "Creating links to Makefiles."
- rm -f Makefile
- ln -s $ksrc/Makefile.top Makefile
- echo " Makefile -> $ksrc/Makefile.top"
- if [ "$ksrc" = solaris ]; then
- # Point to 64-bit Makefile extension
- if [ "$lp64" = y ]; then
- makext=$makext-64
- fi
- rm -f $ksrc/Makefile
- ln -s Makefile.$makext $ksrc/Makefile
- echo " $ksrc/Makefile -> Makefile.$makext"
- # Restore extension
- if [ "$lp64" = y ]; then
- makext=$orig_makext
- fi
- fi
- for dir in pppd pppstats chat pppdump; do
- rm -f $dir/Makefile
- if [ -f $dir/Makefile.$makext ]; then
- ln -s Makefile.$makext $dir/Makefile
- echo " $dir/Makefile -> Makefile.$makext"
- fi
- done
-fi
diff --git a/mdk-stage1/ppp/contrib/pppgetpass/Makefile.linux b/mdk-stage1/ppp/contrib/pppgetpass/Makefile.linux
deleted file mode 100644
index 7eb217dac..000000000
--- a/mdk-stage1/ppp/contrib/pppgetpass/Makefile.linux
+++ /dev/null
@@ -1,16 +0,0 @@
-all: pppgetpass.vt pppgetpass.gtk
-
-pppgetpass.vt: pppgetpass.vt.o
-
-pppgetpass.gtk: pppgetpass.gtk.o
- $(CC) $(LDFLAGS) pppgetpass.gtk.o `gtk-config --libs` -o pppgetpass.gtk
-pppgetpass.gtk.o: pppgetpass.gtk.c
- $(CC) $(CFLAGS) -c pppgetpass.gtk.c `gtk-config --cflags`
-
-install: all
- install -m 755 pppgetpass.sh /usr/bin/pppgetpass
- install -m 4755 -o root -g root pppgetpass.vt /usr/bin/
- install -m 755 -o root -g root pppgetpass.gtk /usr/X11/bin/
-
-clean:
- rm -f *.o pppgetpass.gtk pppgetpass.vt core
diff --git a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.8 b/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.8
deleted file mode 100644
index ade576970..000000000
--- a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.8
+++ /dev/null
@@ -1,18 +0,0 @@
-.TH PPPGETPASS 8 "26 Sep 1999"
-.SH NAME
-pppgetpass \- prompt for PAP password
-.SH SYNOPSIS
-.B pppgetpass
-.I client server fd
-.SH DESCRIPTION
-.B pppgetpass
-the outer half of a plugin for PAP password prompting in pppd.
-If the peer requires PAP, and the
-.B passprompt.so
-plugin is loaded into pppd, it will run
-.B /usr/sbin/pppgetpass
-(or another program specified by the
-.B promptprog
-option) to prompt the user for the password.
-.SH SEE ALSO
-pppd(8)
diff --git a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.gtk.c b/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.gtk.c
deleted file mode 100644
index 48ca04202..000000000
--- a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.gtk.c
+++ /dev/null
@@ -1,92 +0,0 @@
-#include <glib.h>
-#include <gdk/gdk.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkbutton.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtksignal.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <syslog.h>
-
-int outfd;
-int err;
-
-static void okpressed(void *widget, void *clientdata)
-{
- GtkWidget *answer=clientdata;
- gchar *pass;
- int passlen;
- ssize_t wrote;
- (void)widget;
-
- pass=gtk_entry_get_text(GTK_ENTRY(answer));
-
- passlen=strlen(pass);
- if(!passlen)
- return;
-
- if((wrote=write(outfd, pass, passlen))!=passlen) {
- if(wrote<0)
- syslog(LOG_ERR, "write error on outpipe: %m");
- else
- syslog(LOG_ERR, "short write on outpipe");
- err=1;
- }
- gtk_main_quit();
-}
-
-int main(int argc, char **argv)
-{
- GtkWidget *mainwindow, *vbox, *question, *answer, *ok;
- char buf[1024];
- gtk_init(&argc, &argv);
-
- openlog(argv[0], LOG_PID, LOG_DAEMON);
- if(argc!=4) {
- syslog(LOG_WARNING, "Usage error");
- return 1;
- }
- outfd=atoi(argv[3]);
- mainwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(mainwindow), "pppgetpass");
- gtk_signal_connect(GTK_OBJECT(mainwindow), "destroy",
- GTK_SIGNAL_FUNC(gtk_main_quit), 0);
-
- vbox=gtk_vbox_new(FALSE, 5);
- gtk_container_add(GTK_CONTAINER(mainwindow), vbox);
- gtk_widget_show(vbox);
-
- if(argv[1][0] && argv[2][0])
- snprintf(buf, sizeof buf, "Password for PPP client %s on server %s: ", argv[1], argv[2]);
- else if(argv[1][0] && !argv[2][0])
- snprintf(buf, sizeof buf, "Password for PPP client %s: ", argv[1]);
- else if(!argv[1][0] && argv[2][0])
- snprintf(buf, sizeof buf, "Password for PPP on server %s: ", argv[2]);
- else
- snprintf(buf, sizeof buf, "Enter PPP password: ");
- question=gtk_label_new(buf);
- gtk_box_pack_start(GTK_BOX(vbox), question, FALSE, TRUE, 0);
- gtk_widget_show(question);
-
- answer=gtk_entry_new();
- gtk_entry_set_visibility(GTK_ENTRY(answer), 0);
- gtk_box_pack_start(GTK_BOX(vbox), answer, FALSE, TRUE, 0);
- gtk_widget_show(answer);
-
- ok=gtk_button_new_with_label("OK");
- gtk_box_pack_start(GTK_BOX(vbox), ok, FALSE, TRUE, 0);
- gtk_signal_connect(GTK_OBJECT(ok), "clicked",
- GTK_SIGNAL_FUNC(okpressed), answer);
- gtk_widget_show(ok);
-
- gtk_widget_show(mainwindow);
- gtk_main();
-
- return err;
-}
diff --git a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.sh b/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.sh
deleted file mode 100644
index 09c480519..000000000
--- a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-if [ -z "$DISPLAY" ]; then
- exec pppgetpass.vt "$@"
-else
- exec pppgetpass.gtk "$@"
-fi
diff --git a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.vt.c b/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.vt.c
deleted file mode 100644
index a1520883c..000000000
--- a/mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.vt.c
+++ /dev/null
@@ -1,218 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <syslog.h>
-#include <termios.h>
-#include <sys/vt.h>
-
-static int console_owner(uid_t, int);
-
-int main(int argc, char **argv)
-{
- int console;
- uid_t uid;
- struct vt_stat origstate;
- int openvtnum;
- char openvtname[256];
- int openvt;
- gid_t gid;
- int chowned;
- FILE *fp;
- struct termios t;
- char pass[256], *nl;
- int outfd, passlen;
- ssize_t wrote;
- console=open("/dev/console", O_RDWR);
-
- uid=getuid();
- gid=getgid();
- seteuid(uid);
-
- openlog(argv[0], LOG_PID, LOG_DAEMON);
-
- if(argc!=4) {
- syslog(LOG_WARNING, "Usage error");
- return 1;
- }
-
- if(console<0) {
- syslog(LOG_ERR, "open(/dev/console): %m");
- return 1;
- }
-
- if(ioctl(console, VT_GETSTATE, &origstate)<0) {
- syslog(LOG_ERR, "VT_GETSTATE: %m");
- return 1;
- }
-
- if(uid) {
- if(!console_owner(uid, origstate.v_active)) {
- int i;
- for(i=0;i<64;++i) {
- if(i!=origstate.v_active && console_owner(uid, i))
- break;
- }
- if(i==64) {
- syslog(LOG_WARNING, "run by uid %lu not at console", (unsigned long)uid);
- return 1;
- }
- }
- }
-
- if(ioctl(console, VT_OPENQRY, &openvtnum)<0) {
- syslog(LOG_ERR, "VT_OPENQRY: %m");
- return 1;
- }
- if(openvtnum==-1) {
- syslog(LOG_ERR, "No free VTs");
- return 1;
- }
-
- snprintf(openvtname, sizeof openvtname, "/dev/tty%d", openvtnum);
- seteuid(0);
- openvt=open(openvtname, O_RDWR);
- if(openvt<0) {
- seteuid(uid);
- syslog(LOG_ERR, "open(%s): %m", openvtname);
- return 1;
- }
-
- chowned=fchown(openvt, uid, gid);
- if(chowned<0) {
- seteuid(uid);
- syslog(LOG_ERR, "fchown(%s): %m", openvtname);
- return 1;
- }
-
- close(console);
-
- if(ioctl(openvt, VT_ACTIVATE, openvtnum)<0) {
- seteuid(uid);
- syslog(LOG_ERR, "VT_ACTIVATE(%d): %m", openvtnum);
- return 1;
- }
-
- while(ioctl(openvt, VT_WAITACTIVE, openvtnum)<0) {
- if(errno!=EINTR) {
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "VT_WAITACTIVE(%d): %m", openvtnum);
- return 1;
- }
- }
-
- seteuid(uid);
- fp=fdopen(openvt, "r+");
- if(!fp) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "fdopen(%s): %m", openvtname);
- return 1;
- }
-
- if(tcgetattr(openvt, &t)<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "tcgetattr(%s): %m", openvtname);
- return 1;
- }
- t.c_lflag &= ~ECHO;
- if(tcsetattr(openvt, TCSANOW, &t)<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "tcsetattr(%s): %m", openvtname);
- return 1;
- }
-
- if(fprintf(fp, "\033[2J\033[H")<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "write error on %s: %m", openvtname);
- return 1;
- }
- if(argv[1][0] && argv[2][0]) {
- if(fprintf(fp, "Password for PPP client %s on server %s: ", argv[1], argv[2])<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "write error on %s: %m", openvtname);
- return 1;
- }
- } else if(argv[1][0] && !argv[2][0]) {
- if(fprintf(fp, "Password for PPP client %s: ", argv[1])<0) {
- syslog(LOG_ERR, "write error on %s: %m", openvtname);
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- return 1;
- }
- } else if(!argv[1][0] && argv[2][0]) {
- if(fprintf(fp, "Password for PPP on server %s: ", argv[2])<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "write error on %s: %m", openvtname);
- return 1;
- }
- } else {
- if(fprintf(fp, "Enter PPP password: ")<0) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- syslog(LOG_ERR, "write error on %s: %m", openvtname);
- return 1;
- }
- }
-
- if(!fgets(pass, sizeof pass, fp)) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- if(ferror(fp)) {
- syslog(LOG_ERR, "read error on %s: %m", openvtname);
- }
- return 1;
- }
- if((nl=strchr(pass, '\n')))
- *nl=0;
- passlen=strlen(pass);
-
- outfd=atoi(argv[3]);
- if((wrote=write(outfd, pass, passlen))!=passlen) {
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- if(wrote<0)
- syslog(LOG_ERR, "write error on outpipe: %m");
- else
- syslog(LOG_ERR, "short write on outpipe");
- return 1;
- }
-
- seteuid(0);
- ioctl(openvt, VT_ACTIVATE, origstate.v_active);
- seteuid(uid);
- return 0;
-}
-
-static int console_owner(uid_t uid, int cons)
-{
- char name[256];
- struct stat st;
- snprintf(name, sizeof name, "/dev/tty%d", cons);
- if(stat(name, &st)<0) {
- if(errno!=ENOENT)
- syslog(LOG_ERR, "stat(%s): %m", name);
- return 0;
- }
- return uid==st.st_uid;
-}
diff --git a/mdk-stage1/ppp/etc.ppp/chap-secrets b/mdk-stage1/ppp/etc.ppp/chap-secrets
deleted file mode 100644
index 7d1c3cd7c..000000000
--- a/mdk-stage1/ppp/etc.ppp/chap-secrets
+++ /dev/null
@@ -1,2 +0,0 @@
-# Secrets for authentication using CHAP
-# client server secret IP addresses
diff --git a/mdk-stage1/ppp/etc.ppp/options b/mdk-stage1/ppp/etc.ppp/options
deleted file mode 100644
index 0f77a9aa0..000000000
--- a/mdk-stage1/ppp/etc.ppp/options
+++ /dev/null
@@ -1,5 +0,0 @@
-lock
-noauth
-noipdefault
-usepeerdns
-
diff --git a/mdk-stage1/ppp/etc.ppp/options.options b/mdk-stage1/ppp/etc.ppp/options.options
deleted file mode 100644
index 4b67b6a0d..000000000
--- a/mdk-stage1/ppp/etc.ppp/options.options
+++ /dev/null
@@ -1 +0,0 @@
-lock
diff --git a/mdk-stage1/ppp/etc.ppp/pap-secrets b/mdk-stage1/ppp/etc.ppp/pap-secrets
deleted file mode 100644
index f8b7dce3c..000000000
--- a/mdk-stage1/ppp/etc.ppp/pap-secrets
+++ /dev/null
@@ -1,2 +0,0 @@
-# Secrets for authentication using PAP
-# client server secret IP addresses
diff --git a/mdk-stage1/ppp/include/linux/if_ppp.h b/mdk-stage1/ppp/include/linux/if_ppp.h
deleted file mode 100644
index 1febf0931..000000000
--- a/mdk-stage1/ppp/include/linux/if_ppp.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* $Id$ */
-
-/*
- * if_ppp.h - Point-to-Point Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
-
-/*
- * ==FILEVERSION 20000724==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
- * if_ppp.h is shipped with a PPP distribution as well as with the kernel;
- * if everyone increases the FILEVERSION number above, then scripts
- * can do the right thing when deciding whether to install a new if_ppp.h
- * file. Don't change the format of that line otherwise, so the
- * installation script can recognize it.
- */
-
-#ifndef _IF_PPP_H_
-#define _IF_PPP_H_
-
-/*
- * Packet sizes
- */
-
-#define PPP_MTU 1500 /* Default MTU (size of Info field) */
-#define PPP_MAXMRU 65000 /* Largest MRU we allow */
-#define PROTO_IPX 0x002b /* protocol numbers */
-#define PROTO_DNA_RT 0x0027 /* DNA Routing */
-
-
-/*
- * Bit definitions for flags.
- */
-
-#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */
-#define SC_COMP_AC 0x00000002 /* header compression (output) */
-#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */
-#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */
-#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */
-#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */
-#define SC_CCP_OPEN 0x00000040 /* Look at CCP packets */
-#define SC_CCP_UP 0x00000080 /* May send/recv compressed packets */
-#define SC_ENABLE_IP 0x00000100 /* IP packets may be exchanged */
-#define SC_LOOP_TRAFFIC 0x00000200 /* send traffic to pppd */
-#define SC_MULTILINK 0x00000400 /* do multilink encapsulation */
-#define SC_MP_SHORTSEQ 0x00000800 /* use short MP sequence numbers */
-#define SC_COMP_RUN 0x00001000 /* compressor has been inited */
-#define SC_DECOMP_RUN 0x00002000 /* decompressor has been inited */
-#define SC_MP_XSHORTSEQ 0x00004000 /* transmit short MP seq numbers */
-#define SC_DEBUG 0x00010000 /* enable debug messages */
-#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */
-#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */
-#define SC_LOG_RAWIN 0x00080000 /* log all chars received */
-#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */
-#define SC_SYNC 0x00200000 /* synchronous serial mode */
-#define SC_MASK 0x0f200fff /* bits that user can change */
-
-/* state bits */
-#define SC_XMIT_BUSY 0x10000000 /* (used by isdn_ppp?) */
-#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */
-#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */
-#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 1 */
-#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */
-#define SC_DC_FERROR 0x00800000 /* fatal decomp error detected */
-#define SC_DC_ERROR 0x00400000 /* non-fatal decomp error detected */
-
-/*
- * Ioctl definitions.
- */
-
-struct npioctl {
- int protocol; /* PPP protocol, e.g. PPP_IP */
- enum NPmode mode;
-};
-
-/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */
-struct ppp_option_data {
- __u8 *ptr;
- __u32 length;
- int transmit;
-};
-
-struct ifpppstatsreq {
- struct ifreq b;
- struct ppp_stats stats; /* statistic information */
-};
-
-struct ifpppcstatsreq {
- struct ifreq b;
- struct ppp_comp_stats stats;
-};
-
-#define ifr__name b.ifr_ifrn.ifrn_name
-#define stats_ptr b.ifr_ifru.ifru_data
-
-/*
- * Ioctl definitions.
- */
-
-#define PPPIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */
-#define PPPIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */
-#define PPPIOCGASYNCMAP _IOR('t', 88, int) /* get async map */
-#define PPPIOCSASYNCMAP _IOW('t', 87, int) /* set async map */
-#define PPPIOCGUNIT _IOR('t', 86, int) /* get ppp unit number */
-#define PPPIOCGRASYNCMAP _IOR('t', 85, int) /* get receive async map */
-#define PPPIOCSRASYNCMAP _IOW('t', 84, int) /* set receive async map */
-#define PPPIOCGMRU _IOR('t', 83, int) /* get max receive unit */
-#define PPPIOCSMRU _IOW('t', 82, int) /* set max receive unit */
-#define PPPIOCSMAXCID _IOW('t', 81, int) /* set VJ max slot ID */
-#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */
-#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */
-#define PPPIOCXFERUNIT _IO('t', 78) /* transfer PPP unit */
-#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data)
-#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl) /* get NP mode */
-#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) /* set NP mode */
-#define PPPIOCSPASS _IOW('t', 71, struct sock_fprog) /* set pass filter */
-#define PPPIOCSACTIVE _IOW('t', 70, struct sock_fprog) /* set active filt */
-#define PPPIOCGDEBUG _IOR('t', 65, int) /* Read debug level */
-#define PPPIOCSDEBUG _IOW('t', 64, int) /* Set debug level */
-#define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle) /* get idle time */
-#define PPPIOCNEWUNIT _IOWR('t', 62, int) /* create new ppp unit */
-#define PPPIOCATTACH _IOW('t', 61, int) /* attach to ppp unit */
-#define PPPIOCDETACH _IOW('t', 60, int) /* detach from ppp unit/chan */
-#define PPPIOCSMRRU _IOW('t', 59, int) /* set multilink MRU */
-#define PPPIOCCONNECT _IOW('t', 58, int) /* connect channel to unit */
-#define PPPIOCDISCONN _IO('t', 57) /* disconnect channel */
-#define PPPIOCATTCHAN _IOW('t', 56, int) /* attach to ppp channel */
-#define PPPIOCGCHAN _IOR('t', 55, int) /* get ppp channel number */
-
-#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
-#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */
-#define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2)
-
-#if !defined(ifr_mtu)
-#define ifr_mtu ifr_ifru.ifru_metric
-#endif
-
-#endif /* _IF_PPP_H_ */
diff --git a/mdk-stage1/ppp/include/linux/if_pppvar.h b/mdk-stage1/ppp/include/linux/if_pppvar.h
deleted file mode 100644
index b2485cd9d..000000000
--- a/mdk-stage1/ppp/include/linux/if_pppvar.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* From: if_pppvar.h,v 1.2 1995/06/12 11:36:51 paulus Exp */
-/*
- * if_pppvar.h - private structures and declarations for PPP.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
- * ==FILEVERSION 990911==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
- * if_pppvar.h is shipped with a PPP distribution as well as with the kernel;
- * if everyone increases the FILEVERSION number above, then scripts
- * can do the right thing when deciding whether to install a new if_pppvar.h
- * file. Don't change the format of that line otherwise, so the
- * installation script can recognize it.
- */
-
-/*
- * Supported network protocols. These values are used for
- * indexing sc_npmode.
- */
-
-#define NP_IP 0 /* Internet Protocol */
-#define NP_IPX 1 /* IPX protocol */
-#define NP_AT 2 /* Appletalk protocol */
-#define NP_IPV6 3 /* Internet Protocol */
-#define NUM_NP 4 /* Number of NPs. */
-
-#define OBUFSIZE 256 /* # chars of output buffering */
-
-/*
- * Structure describing each ppp unit.
- */
-
-struct ppp {
- int magic; /* magic value for structure */
- struct ppp *next; /* unit with next index */
- unsigned long inuse; /* are we allocated? */
- int line; /* network interface unit # */
- __u32 flags; /* miscellaneous control flags */
- int mtu; /* maximum xmit frame size */
- int mru; /* maximum receive frame size */
- struct slcompress *slcomp; /* for TCP header compression */
- struct sk_buff_head xmt_q; /* frames to send from pppd */
- struct sk_buff_head rcv_q; /* frames for pppd to read */
- unsigned long xmit_busy; /* bit 0 set when xmitter busy */
-
- /* Information specific to using ppp on async serial lines. */
- struct tty_struct *tty; /* ptr to TTY structure */
- struct tty_struct *backup_tty; /* TTY to use if tty gets closed */
- __u8 escape; /* 0x20 if prev char was PPP_ESC */
- __u8 toss; /* toss this frame */
- volatile __u8 tty_pushing; /* internal state flag */
- volatile __u8 woke_up; /* internal state flag */
- __u32 xmit_async_map[8]; /* 1 bit means that given control
- character is quoted on output*/
- __u32 recv_async_map; /* 1 bit means that given control
- character is ignored on input*/
- __u32 bytes_sent; /* Bytes sent on frame */
- __u32 bytes_rcvd; /* Bytes recvd on frame */
-
- /* Async transmission information */
- struct sk_buff *tpkt; /* frame currently being sent */
- int tpkt_pos; /* how much of it we've done */
- __u16 tfcs; /* FCS so far for it */
- unsigned char *optr; /* where we're up to in sending */
- unsigned char *olim; /* points past last valid char */
-
- /* Async reception information */
- struct sk_buff *rpkt; /* frame currently being rcvd */
- __u16 rfcs; /* FCS so far of rpkt */
-
- /* Queues for select() functionality */
- struct wait_queue *read_wait; /* queue for reading processes */
-
- /* info for detecting idle channels */
- unsigned long last_xmit; /* time of last transmission */
- unsigned long last_recv; /* time last packet received */
-
- /* Statistic information */
- struct pppstat stats; /* statistic information */
-
- /* PPP compression protocol information */
- struct compressor *sc_xcomp; /* transmit compressor */
- void *sc_xc_state; /* transmit compressor state */
- struct compressor *sc_rcomp; /* receive decompressor */
- void *sc_rc_state; /* receive decompressor state */
-
- enum NPmode sc_npmode[NUM_NP]; /* what to do with each NP */
- int sc_xfer; /* PID of reserved PPP table */
- char name[8]; /* space for unit name */
- struct device dev; /* net device structure */
- struct enet_statistics estats; /* more detailed stats */
-
- /* tty output buffer */
- unsigned char obuf[OBUFSIZE]; /* buffer for characters to send */
-};
-
-#define PPP_MAGIC 0x5002
-#define PPP_VERSION "2.3.11"
diff --git a/mdk-stage1/ppp/include/linux/ppp-comp.h b/mdk-stage1/ppp/include/linux/ppp-comp.h
deleted file mode 100644
index 3184d0731..000000000
--- a/mdk-stage1/ppp/include/linux/ppp-comp.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * ppp-comp.h - Definitions for doing PPP packet compression.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * ==FILEVERSION 980319==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
- * ppp-comp.h is shipped with a PPP distribution as well as with the kernel;
- * if everyone increases the FILEVERSION number above, then scripts
- * can do the right thing when deciding whether to install a new ppp-comp.h
- * file. Don't change the format of that line otherwise, so the
- * installation script can recognize it.
- */
-
-#ifndef _NET_PPP_COMP_H
-#define _NET_PPP_COMP_H
-
-/*
- * The following symbols control whether we include code for
- * various compression methods.
- */
-
-#ifndef DO_BSD_COMPRESS
-#define DO_BSD_COMPRESS 1 /* by default, include BSD-Compress */
-#endif
-#ifndef DO_DEFLATE
-#define DO_DEFLATE 1 /* by default, include Deflate */
-#endif
-#define DO_PREDICTOR_1 0
-#define DO_PREDICTOR_2 0
-
-/*
- * Structure giving methods for compression/decompression.
- */
-
-struct compressor {
- int compress_proto; /* CCP compression protocol number */
-
- /* Allocate space for a compressor (transmit side) */
- void *(*comp_alloc) (unsigned char *options, int opt_len);
-
- /* Free space used by a compressor */
- void (*comp_free) (void *state);
-
- /* Initialize a compressor */
- int (*comp_init) (void *state, unsigned char *options,
- int opt_len, int unit, int opthdr, int debug);
-
- /* Reset a compressor */
- void (*comp_reset) (void *state);
-
- /* Compress a packet */
- int (*compress) (void *state, unsigned char *rptr,
- unsigned char *obuf, int isize, int osize);
-
- /* Return compression statistics */
- void (*comp_stat) (void *state, struct compstat *stats);
-
- /* Allocate space for a decompressor (receive side) */
- void *(*decomp_alloc) (unsigned char *options, int opt_len);
-
- /* Free space used by a decompressor */
- void (*decomp_free) (void *state);
-
- /* Initialize a decompressor */
- int (*decomp_init) (void *state, unsigned char *options,
- int opt_len, int unit, int opthdr, int mru,
- int debug);
-
- /* Reset a decompressor */
- void (*decomp_reset) (void *state);
-
- /* Decompress a packet. */
- int (*decompress) (void *state, unsigned char *ibuf, int isize,
- unsigned char *obuf, int osize);
-
- /* Update state for an incompressible packet received */
- void (*incomp) (void *state, unsigned char *ibuf, int icnt);
-
- /* Return decompression statistics */
- void (*decomp_stat) (void *state, struct compstat *stats);
-};
-
-/*
- * The return value from decompress routine is the length of the
- * decompressed packet if successful, otherwise DECOMP_ERROR
- * or DECOMP_FATALERROR if an error occurred.
- *
- * We need to make this distinction so that we can disable certain
- * useful functionality, namely sending a CCP reset-request as a result
- * of an error detected after decompression. This is to avoid infringing
- * a patent held by Motorola.
- * Don't you just lurve software patents.
- */
-
-#define DECOMP_ERROR -1 /* error detected before decomp. */
-#define DECOMP_FATALERROR -2 /* error detected after decomp. */
-
-/*
- * CCP codes.
- */
-
-#define CCP_CONFREQ 1
-#define CCP_CONFACK 2
-#define CCP_TERMREQ 5
-#define CCP_TERMACK 6
-#define CCP_RESETREQ 14
-#define CCP_RESETACK 15
-
-/*
- * Max # bytes for a CCP option
- */
-
-#define CCP_MAX_OPTION_LENGTH 32
-
-/*
- * Parts of a CCP packet.
- */
-
-#define CCP_CODE(dp) ((dp)[0])
-#define CCP_ID(dp) ((dp)[1])
-#define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3])
-#define CCP_HDRLEN 4
-
-#define CCP_OPT_CODE(dp) ((dp)[0])
-#define CCP_OPT_LENGTH(dp) ((dp)[1])
-#define CCP_OPT_MINLEN 2
-
-/*
- * Definitions for BSD-Compress.
- */
-
-#define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */
-#define CILEN_BSD_COMPRESS 3 /* length of config. option */
-
-/* Macros for handling the 3rd byte of the BSD-Compress config option. */
-#define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */
-#define BSD_VERSION(x) ((x) >> 5) /* version of option format */
-#define BSD_CURRENT_VERSION 1 /* current version number */
-#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n))
-
-#define BSD_MIN_BITS 9 /* smallest code size supported */
-#define BSD_MAX_BITS 15 /* largest code size supported */
-
-/*
- * Definitions for Deflate.
- */
-
-#define CI_DEFLATE 26 /* config option for Deflate */
-#define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */
-#define CILEN_DEFLATE 4 /* length of its config option */
-
-#define DEFLATE_MIN_SIZE 8
-#define DEFLATE_MAX_SIZE 15
-#define DEFLATE_METHOD_VAL 8
-#define DEFLATE_SIZE(x) (((x) >> 4) + DEFLATE_MIN_SIZE)
-#define DEFLATE_METHOD(x) ((x) & 0x0F)
-#define DEFLATE_MAKE_OPT(w) ((((w) - DEFLATE_MIN_SIZE) << 4) \
- + DEFLATE_METHOD_VAL)
-#define DEFLATE_CHK_SEQUENCE 0
-
-/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-
-#define CI_PREDICTOR_1 1 /* config option for Predictor-1 */
-#define CILEN_PREDICTOR_1 2 /* length of its config option */
-#define CI_PREDICTOR_2 2 /* config option for Predictor-2 */
-#define CILEN_PREDICTOR_2 2 /* length of its config option */
-
-#ifdef __KERNEL__
-extern int ppp_register_compressor(struct compressor *);
-extern void ppp_unregister_compressor(struct compressor *);
-#endif /* __KERNEL__ */
-
-#endif /* _NET_PPP_COMP_H */
diff --git a/mdk-stage1/ppp/include/linux/ppp_defs.h b/mdk-stage1/ppp/include/linux/ppp_defs.h
deleted file mode 100644
index 46946fbdc..000000000
--- a/mdk-stage1/ppp/include/linux/ppp_defs.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* $Id$ */
-
-/*
- * ppp_defs.h - PPP definitions.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-/*
- * ==FILEVERSION 20000114==
- *
- * NOTE TO MAINTAINERS:
- * If you modify this file at all, please set the above date.
- * ppp_defs.h is shipped with a PPP distribution as well as with the kernel;
- * if everyone increases the FILEVERSION number above, then scripts
- * can do the right thing when deciding whether to install a new ppp_defs.h
- * file. Don't change the format of that line otherwise, so the
- * installation script can recognize it.
- */
-
-#ifndef _PPP_DEFS_H_
-#define _PPP_DEFS_H_
-
-/*
- * The basic PPP frame.
- */
-#define PPP_HDRLEN 4 /* octets for standard ppp header */
-#define PPP_FCSLEN 2 /* octets for FCS */
-#define PPP_MRU 1500 /* default MRU = max length of info field */
-
-#define PPP_ADDRESS(p) (((__u8 *)(p))[0])
-#define PPP_CONTROL(p) (((__u8 *)(p))[1])
-#define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3])
-
-/*
- * Significant octet values.
- */
-#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
-#define PPP_UI 0x03 /* Unnumbered Information */
-#define PPP_FLAG 0x7e /* Flag Sequence */
-#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */
-#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
-
-/*
- * Protocol field values.
- */
-#define PPP_IP 0x21 /* Internet Protocol */
-#define PPP_AT 0x29 /* AppleTalk Protocol */
-#define PPP_IPX 0x2b /* IPX protocol */
-#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */
-#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */
-#define PPP_MP 0x3d /* Multilink protocol */
-#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */
-#define PPP_COMPFRAG 0xfb /* fragment compressed below bundle */
-#define PPP_COMP 0xfd /* compressed packet */
-#define PPP_IPCP 0x8021 /* IP Control Protocol */
-#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
-#define PPP_IPXCP 0x802b /* IPX Control Protocol */
-#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */
-#define PPP_CCPFRAG 0x80fb /* CCP at link level (below MP bundle) */
-#define PPP_CCP 0x80fd /* Compression Control Protocol */
-#define PPP_LCP 0xc021 /* Link Control Protocol */
-#define PPP_PAP 0xc023 /* Password Authentication Protocol */
-#define PPP_LQR 0xc025 /* Link Quality Report protocol */
-#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */
-#define PPP_CBCP 0xc029 /* Callback Control Protocol */
-
-/*
- * Values for FCS calculations.
- */
-
-#define PPP_INITFCS 0xffff /* Initial FCS value */
-#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */
-#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
-
-/*
- * Extended asyncmap - allows any character to be escaped.
- */
-
-typedef __u32 ext_accm[8];
-
-/*
- * What to do with network protocol (NP) packets.
- */
-enum NPmode {
- NPMODE_PASS, /* pass the packet through */
- NPMODE_DROP, /* silently drop the packet */
- NPMODE_ERROR, /* return an error */
- NPMODE_QUEUE /* save it up for later. */
-};
-
-/*
- * Statistics for LQRP and pppstats
- */
-struct pppstat {
- __u32 ppp_discards; /* # frames discarded */
-
- __u32 ppp_ibytes; /* bytes received */
- __u32 ppp_ioctects; /* bytes received not in error */
- __u32 ppp_ipackets; /* packets received */
- __u32 ppp_ierrors; /* receive errors */
- __u32 ppp_ilqrs; /* # LQR frames received */
-
- __u32 ppp_obytes; /* raw bytes sent */
- __u32 ppp_ooctects; /* frame bytes sent */
- __u32 ppp_opackets; /* packets sent */
- __u32 ppp_oerrors; /* transmit errors */
- __u32 ppp_olqrs; /* # LQR frames sent */
-};
-
-struct vjstat {
- __u32 vjs_packets; /* outbound packets */
- __u32 vjs_compressed; /* outbound compressed packets */
- __u32 vjs_searches; /* searches for connection state */
- __u32 vjs_misses; /* times couldn't find conn. state */
- __u32 vjs_uncompressedin; /* inbound uncompressed packets */
- __u32 vjs_compressedin; /* inbound compressed packets */
- __u32 vjs_errorin; /* inbound unknown type packets */
- __u32 vjs_tossed; /* inbound packets tossed because of error */
-};
-
-struct compstat {
- __u32 unc_bytes; /* total uncompressed bytes */
- __u32 unc_packets; /* total uncompressed packets */
- __u32 comp_bytes; /* compressed bytes */
- __u32 comp_packets; /* compressed packets */
- __u32 inc_bytes; /* incompressible bytes */
- __u32 inc_packets; /* incompressible packets */
-
- /* the compression ratio is defined as in_count / bytes_out */
- __u32 in_count; /* Bytes received */
- __u32 bytes_out; /* Bytes transmitted */
-
- double ratio; /* not computed in kernel. */
-};
-
-struct ppp_stats {
- struct pppstat p; /* basic PPP statistics */
- struct vjstat vj; /* VJ header compression statistics */
-};
-
-struct ppp_comp_stats {
- struct compstat c; /* packet compression statistics */
- struct compstat d; /* packet decompression statistics */
-};
-
-/*
- * The following structure records the time in seconds since
- * the last NP packet was sent or received.
- */
-struct ppp_idle {
- time_t xmit_idle; /* time since last NP packet sent */
- time_t recv_idle; /* time since last NP packet received */
-};
-
-#ifndef __P
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-#endif
-
-#endif /* _PPP_DEFS_H_ */
diff --git a/mdk-stage1/ppp/include/net/if_ppp.h b/mdk-stage1/ppp/include/net/if_ppp.h
deleted file mode 100644
index 1527ecf3f..000000000
--- a/mdk-stage1/ppp/include/net/if_ppp.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $Id$ */
-
-/*
- * if_ppp.h - Point-to-Point Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef _IF_PPP_H_
-#define _IF_PPP_H_
-
-/*
- * Bit definitions for flags.
- */
-#define SC_COMP_PROT 0x00000001 /* protocol compression (output) */
-#define SC_COMP_AC 0x00000002 /* header compression (output) */
-#define SC_COMP_TCP 0x00000004 /* TCP (VJ) compression (output) */
-#define SC_NO_TCP_CCID 0x00000008 /* disable VJ connection-id comp. */
-#define SC_REJ_COMP_AC 0x00000010 /* reject adrs/ctrl comp. on input */
-#define SC_REJ_COMP_TCP 0x00000020 /* reject TCP (VJ) comp. on input */
-#define SC_CCP_OPEN 0x00000040 /* Look at CCP packets */
-#define SC_CCP_UP 0x00000080 /* May send/recv compressed packets */
-#define SC_DEBUG 0x00010000 /* enable debug messages */
-#define SC_LOG_INPKT 0x00020000 /* log contents of good pkts recvd */
-#define SC_LOG_OUTPKT 0x00040000 /* log contents of pkts sent */
-#define SC_LOG_RAWIN 0x00080000 /* log all chars received */
-#define SC_LOG_FLUSH 0x00100000 /* log all chars flushed */
-#define SC_RCV_B7_0 0x01000000 /* have rcvd char with bit 7 = 0 */
-#define SC_RCV_B7_1 0x02000000 /* have rcvd char with bit 7 = 1 */
-#define SC_RCV_EVNP 0x04000000 /* have rcvd char with even parity */
-#define SC_RCV_ODDP 0x08000000 /* have rcvd char with odd parity */
-#define SC_SYNC 0x00200000 /* use synchronous HDLC framing */
-#define SC_MASK 0x0fff00ff /* bits that user can change */
-
-/*
- * State bits in sc_flags, not changeable by user.
- */
-#define SC_TIMEOUT 0x00000400 /* timeout is currently pending */
-#define SC_VJ_RESET 0x00000800 /* need to reset VJ decomp */
-#define SC_COMP_RUN 0x00001000 /* compressor has been inited */
-#define SC_DECOMP_RUN 0x00002000 /* decompressor has been inited */
-#define SC_DC_ERROR 0x00004000 /* non-fatal decomp error detected */
-#define SC_DC_FERROR 0x00008000 /* fatal decomp error detected */
-#define SC_TBUSY 0x10000000 /* xmitter doesn't need a packet yet */
-#define SC_PKTLOST 0x20000000 /* have lost or dropped a packet */
-#define SC_FLUSH 0x40000000 /* flush input until next PPP_FLAG */
-#define SC_ESCAPED 0x80000000 /* saw a PPP_ESCAPE */
-
-/*
- * Ioctl definitions.
- */
-
-struct npioctl {
- int protocol; /* PPP procotol, e.g. PPP_IP */
- enum NPmode mode;
-};
-
-/* Structure describing a CCP configuration option, for PPPIOCSCOMPRESS */
-struct ppp_option_data {
- u_char *ptr;
- u_int length;
- int transmit;
-};
-
-struct ifpppstatsreq {
- char ifr_name[IFNAMSIZ];
- struct ppp_stats stats;
-};
-
-struct ifpppcstatsreq {
- char ifr_name[IFNAMSIZ];
- struct ppp_comp_stats stats;
-};
-
-/*
- * Ioctl definitions.
- */
-
-#define PPPIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */
-#define PPPIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */
-#define PPPIOCGASYNCMAP _IOR('t', 88, int) /* get async map */
-#define PPPIOCSASYNCMAP _IOW('t', 87, int) /* set async map */
-#define PPPIOCGUNIT _IOR('t', 86, int) /* get ppp unit number */
-#define PPPIOCGRASYNCMAP _IOR('t', 85, int) /* get receive async map */
-#define PPPIOCSRASYNCMAP _IOW('t', 84, int) /* set receive async map */
-#define PPPIOCGMRU _IOR('t', 83, int) /* get max receive unit */
-#define PPPIOCSMRU _IOW('t', 82, int) /* set max receive unit */
-#define PPPIOCSMAXCID _IOW('t', 81, int) /* set VJ max slot ID */
-#define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm) /* get extended ACCM */
-#define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm) /* set extended ACCM */
-#define PPPIOCXFERUNIT _IO('t', 78) /* transfer PPP unit */
-#define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data)
-#define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl) /* get NP mode */
-#define PPPIOCSNPMODE _IOW('t', 75, struct npioctl) /* set NP mode */
-#define PPPIOCGIDLE _IOR('t', 74, struct ppp_idle) /* get idle time */
-#ifdef PPP_FILTER
-#define PPPIOCSPASS _IOW('t', 71, struct bpf_program) /* set pass filter */
-#define PPPIOCSACTIVE _IOW('t', 70, struct bpf_program) /* set active filt */
-#endif /* PPP_FILTER */
-
-/* PPPIOC[GS]MTU are alternatives to SIOC[GS]IFMTU, used under Ultrix */
-#define PPPIOCGMTU _IOR('t', 73, int) /* get interface MTU */
-#define PPPIOCSMTU _IOW('t', 72, int) /* set interface MTU */
-
-/*
- * These two are interface ioctls so that pppstats can do them on
- * a socket without having to open the serial device.
- */
-#define SIOCGPPPSTATS _IOWR('i', 123, struct ifpppstatsreq)
-#define SIOCGPPPCSTATS _IOWR('i', 122, struct ifpppcstatsreq)
-
-#if !defined(ifr_mtu)
-#define ifr_mtu ifr_ifru.ifru_metric
-#endif
-
-#if (defined(_KERNEL) || defined(KERNEL)) && !defined(NeXT)
-void pppattach __P((void));
-void pppintr __P((void));
-#endif
-#endif /* _IF_PPP_H_ */
diff --git a/mdk-stage1/ppp/include/net/ppp-comp.h b/mdk-stage1/ppp/include/net/ppp-comp.h
deleted file mode 100644
index 0e6a9c672..000000000
--- a/mdk-stage1/ppp/include/net/ppp-comp.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * ppp-comp.h - Definitions for doing PPP packet compression.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-#ifndef _NET_PPP_COMP_H
-#define _NET_PPP_COMP_H
-
-/*
- * The following symbols control whether we include code for
- * various compression methods.
- */
-#ifndef DO_BSD_COMPRESS
-#define DO_BSD_COMPRESS 1 /* by default, include BSD-Compress */
-#endif
-#ifndef DO_DEFLATE
-#define DO_DEFLATE 1 /* by default, include Deflate */
-#endif
-#define DO_PREDICTOR_1 0
-#define DO_PREDICTOR_2 0
-
-/*
- * Structure giving methods for compression/decompression.
- */
-#ifdef PACKETPTR
-struct compressor {
- int compress_proto; /* CCP compression protocol number */
-
- /* Allocate space for a compressor (transmit side) */
- void *(*comp_alloc) __P((u_char *options, int opt_len));
- /* Free space used by a compressor */
- void (*comp_free) __P((void *state));
- /* Initialize a compressor */
- int (*comp_init) __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int debug));
- /* Reset a compressor */
- void (*comp_reset) __P((void *state));
- /* Compress a packet */
- int (*compress) __P((void *state, PACKETPTR *mret,
- PACKETPTR mp, int orig_len, int max_len));
- /* Return compression statistics */
- void (*comp_stat) __P((void *state, struct compstat *stats));
-
- /* Allocate space for a decompressor (receive side) */
- void *(*decomp_alloc) __P((u_char *options, int opt_len));
- /* Free space used by a decompressor */
- void (*decomp_free) __P((void *state));
- /* Initialize a decompressor */
- int (*decomp_init) __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
- /* Reset a decompressor */
- void (*decomp_reset) __P((void *state));
- /* Decompress a packet. */
- int (*decompress) __P((void *state, PACKETPTR mp,
- PACKETPTR *dmpp));
- /* Update state for an incompressible packet received */
- void (*incomp) __P((void *state, PACKETPTR mp));
- /* Return decompression statistics */
- void (*decomp_stat) __P((void *state, struct compstat *stats));
-};
-#endif /* PACKETPTR */
-
-/*
- * Return values for decompress routine.
- * We need to make these distinctions so that we can disable certain
- * useful functionality, namely sending a CCP reset-request as a result
- * of an error detected after decompression. This is to avoid infringing
- * a patent held by Motorola.
- * Don't you just lurve software patents.
- */
-#define DECOMP_OK 0 /* everything went OK */
-#define DECOMP_ERROR 1 /* error detected before decomp. */
-#define DECOMP_FATALERROR 2 /* error detected after decomp. */
-
-/*
- * CCP codes.
- */
-#define CCP_CONFREQ 1
-#define CCP_CONFACK 2
-#define CCP_TERMREQ 5
-#define CCP_TERMACK 6
-#define CCP_RESETREQ 14
-#define CCP_RESETACK 15
-
-/*
- * Max # bytes for a CCP option
- */
-#define CCP_MAX_OPTION_LENGTH 32
-
-/*
- * Parts of a CCP packet.
- */
-#define CCP_CODE(dp) ((dp)[0])
-#define CCP_ID(dp) ((dp)[1])
-#define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3])
-#define CCP_HDRLEN 4
-
-#define CCP_OPT_CODE(dp) ((dp)[0])
-#define CCP_OPT_LENGTH(dp) ((dp)[1])
-#define CCP_OPT_MINLEN 2
-
-/*
- * Definitions for BSD-Compress.
- */
-#define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */
-#define CILEN_BSD_COMPRESS 3 /* length of config. option */
-
-/* Macros for handling the 3rd byte of the BSD-Compress config option. */
-#define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */
-#define BSD_VERSION(x) ((x) >> 5) /* version of option format */
-#define BSD_CURRENT_VERSION 1 /* current version number */
-#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n))
-
-#define BSD_MIN_BITS 9 /* smallest code size supported */
-#define BSD_MAX_BITS 15 /* largest code size supported */
-
-/*
- * Definitions for Deflate.
- */
-#define CI_DEFLATE 26 /* config option for Deflate */
-#define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */
-#define CILEN_DEFLATE 4 /* length of its config option */
-
-#define DEFLATE_MIN_SIZE 8
-#define DEFLATE_MAX_SIZE 15
-#define DEFLATE_METHOD_VAL 8
-#define DEFLATE_SIZE(x) (((x) >> 4) + DEFLATE_MIN_SIZE)
-#define DEFLATE_METHOD(x) ((x) & 0x0F)
-#define DEFLATE_MAKE_OPT(w) ((((w) - DEFLATE_MIN_SIZE) << 4) \
- + DEFLATE_METHOD_VAL)
-#define DEFLATE_CHK_SEQUENCE 0
-
-/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-#define CI_PREDICTOR_1 1 /* config option for Predictor-1 */
-#define CILEN_PREDICTOR_1 2 /* length of its config option */
-#define CI_PREDICTOR_2 2 /* config option for Predictor-2 */
-#define CILEN_PREDICTOR_2 2 /* length of its config option */
-
-#endif /* _NET_PPP_COMP_H */
diff --git a/mdk-stage1/ppp/include/net/ppp_defs.h b/mdk-stage1/ppp/include/net/ppp_defs.h
deleted file mode 100644
index 46bef52bb..000000000
--- a/mdk-stage1/ppp/include/net/ppp_defs.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* $Id$ */
-
-/*
- * ppp_defs.h - PPP definitions.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-#ifndef _PPP_DEFS_H_
-#define _PPP_DEFS_H_
-
-/*
- * The basic PPP frame.
- */
-#define PPP_HDRLEN 4 /* octets for standard ppp header */
-#define PPP_FCSLEN 2 /* octets for FCS */
-
-/*
- * Packet sizes
- *
- * Note - lcp shouldn't be allowed to negotiate stuff outside these
- * limits. See lcp.h in the pppd directory.
- * (XXX - these constants should simply be shared by lcp.c instead
- * of living in lcp.h)
- */
-#define PPP_MTU 1500 /* Default MTU (size of Info field) */
-#define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
-#define PPP_MINMTU 64
-#define PPP_MRU 1500 /* default MRU = max length of info field */
-#define PPP_MAXMRU 65000 /* Largest MRU we allow */
-#define PPP_MINMRU 128
-
-#define PPP_ADDRESS(p) (((u_char *)(p))[0])
-#define PPP_CONTROL(p) (((u_char *)(p))[1])
-#define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3])
-
-/*
- * Significant octet values.
- */
-#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */
-#define PPP_UI 0x03 /* Unnumbered Information */
-#define PPP_FLAG 0x7e /* Flag Sequence */
-#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */
-#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */
-
-/*
- * Protocol field values.
- */
-#define PPP_IP 0x21 /* Internet Protocol */
-#define PPP_AT 0x29 /* AppleTalk Protocol */
-#define PPP_IPX 0x2b /* IPX protocol */
-#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */
-#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */
-#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */
-#define PPP_COMP 0xfd /* compressed packet */
-#define PPP_IPCP 0x8021 /* IP Control Protocol */
-#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */
-#define PPP_IPXCP 0x802b /* IPX Control Protocol */
-#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */
-#define PPP_CCP 0x80fd /* Compression Control Protocol */
-#define PPP_LCP 0xc021 /* Link Control Protocol */
-#define PPP_PAP 0xc023 /* Password Authentication Protocol */
-#define PPP_LQR 0xc025 /* Link Quality Report protocol */
-#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */
-#define PPP_CBCP 0xc029 /* Callback Control Protocol */
-
-/*
- * Values for FCS calculations.
- */
-#define PPP_INITFCS 0xffff /* Initial FCS value */
-#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */
-#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
-
-/*
- * A 32-bit unsigned integral type.
- */
-
-#if !defined(__BIT_TYPES_DEFINED__) && !defined(_BITYPES) \
- && !defined(__FreeBSD__) && (NS_TARGET < 40) && !defined(__dietlibc__)
-#ifdef UINT32_T
-typedef UINT32_T u_int32_t;
-#else
-typedef unsigned int u_int32_t;
-typedef unsigned short u_int16_t;
-#endif
-#endif
-
-/*
- * Extended asyncmap - allows any character to be escaped.
- */
-typedef u_int32_t ext_accm[8];
-
-/*
- * What to do with network protocol (NP) packets.
- */
-enum NPmode {
- NPMODE_PASS, /* pass the packet through */
- NPMODE_DROP, /* silently drop the packet */
- NPMODE_ERROR, /* return an error */
- NPMODE_QUEUE /* save it up for later. */
-};
-
-/*
- * Statistics.
- */
-struct pppstat {
- unsigned int ppp_ibytes; /* bytes received */
- unsigned int ppp_ipackets; /* packets received */
- unsigned int ppp_ierrors; /* receive errors */
- unsigned int ppp_obytes; /* bytes sent */
- unsigned int ppp_opackets; /* packets sent */
- unsigned int ppp_oerrors; /* transmit errors */
-};
-
-struct vjstat {
- unsigned int vjs_packets; /* outbound packets */
- unsigned int vjs_compressed; /* outbound compressed packets */
- unsigned int vjs_searches; /* searches for connection state */
- unsigned int vjs_misses; /* times couldn't find conn. state */
- unsigned int vjs_uncompressedin; /* inbound uncompressed packets */
- unsigned int vjs_compressedin; /* inbound compressed packets */
- unsigned int vjs_errorin; /* inbound unknown type packets */
- unsigned int vjs_tossed; /* inbound packets tossed because of error */
-};
-
-struct ppp_stats {
- struct pppstat p; /* basic PPP statistics */
- struct vjstat vj; /* VJ header compression statistics */
-};
-
-struct compstat {
- unsigned int unc_bytes; /* total uncompressed bytes */
- unsigned int unc_packets; /* total uncompressed packets */
- unsigned int comp_bytes; /* compressed bytes */
- unsigned int comp_packets; /* compressed packets */
- unsigned int inc_bytes; /* incompressible bytes */
- unsigned int inc_packets; /* incompressible packets */
- unsigned int ratio; /* recent compression ratio << 8 */
-};
-
-struct ppp_comp_stats {
- struct compstat c; /* packet compression statistics */
- struct compstat d; /* packet decompression statistics */
-};
-
-/*
- * The following structure records the time in seconds since
- * the last NP packet was sent or received.
- */
-struct ppp_idle {
- time_t xmit_idle; /* time since last NP packet sent */
- time_t recv_idle; /* time since last NP packet received */
-};
-
-#ifndef __P
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-#endif
-
-#endif /* _PPP_DEFS_H_ */
diff --git a/mdk-stage1/ppp/include/net/pppio.h b/mdk-stage1/ppp/include/net/pppio.h
deleted file mode 100644
index 9db1ca9ab..000000000
--- a/mdk-stage1/ppp/include/net/pppio.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * pppio.h - ioctl and other misc. definitions for STREAMS modules.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-#define _PPPIO(n) (('p' << 8) + (n))
-
-#define PPPIO_NEWPPA _PPPIO(130) /* allocate a new PPP unit */
-#define PPPIO_GETSTAT _PPPIO(131) /* get PPP statistics */
-#define PPPIO_GETCSTAT _PPPIO(132) /* get PPP compression stats */
-#define PPPIO_MTU _PPPIO(133) /* set max transmission unit */
-#define PPPIO_MRU _PPPIO(134) /* set max receive unit */
-#define PPPIO_CFLAGS _PPPIO(135) /* set/clear/get compression flags */
-#define PPPIO_XCOMP _PPPIO(136) /* alloc transmit compressor */
-#define PPPIO_RCOMP _PPPIO(137) /* alloc receive decompressor */
-#define PPPIO_XACCM _PPPIO(138) /* set transmit asyncmap */
-#define PPPIO_RACCM _PPPIO(139) /* set receive asyncmap */
-#define PPPIO_VJINIT _PPPIO(140) /* initialize VJ comp/decomp */
-#define PPPIO_ATTACH _PPPIO(141) /* attach to a ppa (without putmsg) */
-#define PPPIO_LASTMOD _PPPIO(142) /* mark last ppp module */
-#define PPPIO_GCLEAN _PPPIO(143) /* get 8-bit-clean flags */
-#define PPPIO_DEBUG _PPPIO(144) /* request debug information */
-#define PPPIO_BIND _PPPIO(145) /* bind to SAP */
-#define PPPIO_NPMODE _PPPIO(146) /* set mode for handling data pkts */
-#define PPPIO_GIDLE _PPPIO(147) /* get time since last data pkt */
-#define PPPIO_PASSFILT _PPPIO(148) /* set filter for packets to pass */
-#define PPPIO_ACTIVEFILT _PPPIO(149) /* set filter for "link active" pkts */
-
-/*
- * Values for PPPIO_CFLAGS
- */
-#define COMP_AC 0x1 /* compress address/control */
-#define DECOMP_AC 0x2 /* decompress address/control */
-#define COMP_PROT 0x4 /* compress PPP protocol */
-#define DECOMP_PROT 0x8 /* decompress PPP protocol */
-
-#define COMP_VJC 0x10 /* compress TCP/IP headers */
-#define COMP_VJCCID 0x20 /* compress connection ID as well */
-#define DECOMP_VJC 0x40 /* decompress TCP/IP headers */
-#define DECOMP_VJCCID 0x80 /* accept compressed connection ID */
-
-#define CCP_ISOPEN 0x100 /* look at CCP packets */
-#define CCP_ISUP 0x200 /* do packet comp/decomp */
-#define CCP_ERROR 0x400 /* (status) error in packet decomp */
-#define CCP_FATALERROR 0x800 /* (status) fatal error ditto */
-#define CCP_COMP_RUN 0x1000 /* (status) seen CCP ack sent */
-#define CCP_DECOMP_RUN 0x2000 /* (status) seen CCP ack rcvd */
-
-/*
- * Values for 8-bit-clean flags.
- */
-#define RCV_B7_0 1 /* have rcvd char with bit 7 = 0 */
-#define RCV_B7_1 2 /* have rcvd char with bit 7 = 1 */
-#define RCV_EVNP 4 /* have rcvd char with even parity */
-#define RCV_ODDP 8 /* have rcvd char with odd parity */
-
-/*
- * Values for the first byte of M_CTL messages passed between
- * PPP modules.
- */
-#define PPPCTL_OERROR 0xe0 /* output error [up] */
-#define PPPCTL_IERROR 0xe1 /* input error (e.g. FCS) [up] */
-#define PPPCTL_MTU 0xe2 /* set MTU [down] */
-#define PPPCTL_MRU 0xe3 /* set MRU [down] */
-#define PPPCTL_UNIT 0xe4 /* note PPP unit number [down] */
-
-/*
- * Values for the integer argument to PPPIO_DEBUG.
- */
-#define PPPDBG_DUMP 0x10000 /* print out debug info now */
-#define PPPDBG_LOG 0x100 /* log various things */
-#define PPPDBG_DRIVER 0 /* identifies ppp driver as target */
-#define PPPDBG_IF 1 /* identifies ppp network i/f target */
-#define PPPDBG_COMP 2 /* identifies ppp compression target */
-#define PPPDBG_AHDLC 3 /* identifies ppp async hdlc target */
diff --git a/mdk-stage1/ppp/include/net/slcompress.h b/mdk-stage1/ppp/include/net/slcompress.h
deleted file mode 100644
index 9e19bc0ed..000000000
--- a/mdk-stage1/ppp/include/net/slcompress.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Definitions for tcp compression routines.
- *
- * $Id$
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
- * - Initial distribution.
- */
-
-#ifndef _SLCOMPRESS_H_
-#define _SLCOMPRESS_H_
-
-#define MAX_STATES 16 /* must be > 2 and < 256 */
-#define MAX_HDR MLEN /* XXX 4bsd-ism: should really be 128 */
-
-/*
- * Compressed packet format:
- *
- * The first octet contains the packet type (top 3 bits), TCP
- * 'push' bit, and flags that indicate which of the 4 TCP sequence
- * numbers have changed (bottom 5 bits). The next octet is a
- * conversation number that associates a saved IP/TCP header with
- * the compressed packet. The next two octets are the TCP checksum
- * from the original datagram. The next 0 to 15 octets are
- * sequence number changes, one change per bit set in the header
- * (there may be no changes and there are two special cases where
- * the receiver implicitly knows what changed -- see below).
- *
- * There are 5 numbers which can change (they are always inserted
- * in the following order): TCP urgent pointer, window,
- * acknowlegement, sequence number and IP ID. (The urgent pointer
- * is different from the others in that its value is sent, not the
- * change in value.) Since typical use of SLIP links is biased
- * toward small packets (see comments on MTU/MSS below), changes
- * use a variable length coding with one octet for numbers in the
- * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the
- * range 256 - 65535 or 0. (If the change in sequence number or
- * ack is more than 65535, an uncompressed packet is sent.)
- */
-
-/*
- * Packet types (must not conflict with IP protocol version)
- *
- * The top nibble of the first octet is the packet type. There are
- * three possible types: IP (not proto TCP or tcp with one of the
- * control flags set); uncompressed TCP (a normal IP/TCP packet but
- * with the 8-bit protocol field replaced by an 8-bit connection id --
- * this type of packet syncs the sender & receiver); and compressed
- * TCP (described above).
- *
- * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and
- * is logically part of the 4-bit "changes" field that follows. Top
- * three bits are actual packet type. For backward compatibility
- * and in the interest of conserving bits, numbers are chosen so the
- * IP protocol version number (4) which normally appears in this nibble
- * means "IP packet".
- */
-
-/* packet types */
-#define TYPE_IP 0x40
-#define TYPE_UNCOMPRESSED_TCP 0x70
-#define TYPE_COMPRESSED_TCP 0x80
-#define TYPE_ERROR 0x00
-
-/* Bits in first octet of compressed packet */
-#define NEW_C 0x40 /* flag bits for what changed in a packet */
-#define NEW_I 0x20
-#define NEW_S 0x08
-#define NEW_A 0x04
-#define NEW_W 0x02
-#define NEW_U 0x01
-
-/* reserved, special-case values of above */
-#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */
-#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */
-#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U)
-
-#define TCP_PUSH_BIT 0x10
-
-
-/*
- * "state" data for each active tcp conversation on the wire. This is
- * basically a copy of the entire IP/TCP header from the last packet
- * we saw from the conversation together with a small identifier
- * the transmit & receive ends of the line use to locate saved header.
- */
-struct cstate {
- struct cstate *cs_next; /* next most recently used cstate (xmit only) */
- u_short cs_hlen; /* size of hdr (receive only) */
- u_char cs_id; /* connection # associated with this state */
- u_char cs_filler;
- union {
- char csu_hdr[MAX_HDR];
- struct ip csu_ip; /* ip/tcp hdr from most recent packet */
- } slcs_u;
-};
-#define cs_ip slcs_u.csu_ip
-#define cs_hdr slcs_u.csu_hdr
-
-/*
- * all the state data for one serial line (we need one of these
- * per line).
- */
-struct slcompress {
- struct cstate *last_cs; /* most recently used tstate */
- u_char last_recv; /* last rcvd conn. id */
- u_char last_xmit; /* last sent conn. id */
- u_short flags;
-#ifndef SL_NO_STATS
- int sls_packets; /* outbound packets */
- int sls_compressed; /* outbound compressed packets */
- int sls_searches; /* searches for connection state */
- int sls_misses; /* times couldn't find conn. state */
- int sls_uncompressedin; /* inbound uncompressed packets */
- int sls_compressedin; /* inbound compressed packets */
- int sls_errorin; /* inbound unknown type packets */
- int sls_tossed; /* inbound packets tossed because of error */
-#endif
- struct cstate tstate[MAX_STATES]; /* xmit connection states */
- struct cstate rstate[MAX_STATES]; /* receive connection states */
-};
-/* flag values */
-#define SLF_TOSS 1 /* tossing rcvd frames because of input err */
-
-void sl_compress_init __P((struct slcompress *));
-void sl_compress_setup __P((struct slcompress *, int));
-u_int sl_compress_tcp __P((struct mbuf *,
- struct ip *, struct slcompress *, int));
-int sl_uncompress_tcp __P((u_char **, int, u_int, struct slcompress *));
-int sl_uncompress_tcp_core __P((u_char *, int, int, u_int,
- struct slcompress *, u_char **, u_int *));
-
-#endif /* _SLCOMPRESS_H_ */
diff --git a/mdk-stage1/ppp/include/net/vjcompress.h b/mdk-stage1/ppp/include/net/vjcompress.h
deleted file mode 100644
index c64596926..000000000
--- a/mdk-stage1/ppp/include/net/vjcompress.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Definitions for tcp compression routines.
- *
- * $Id$
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
- * - Initial distribution.
- */
-
-#ifndef _VJCOMPRESS_H_
-#define _VJCOMPRESS_H_
-
-#define MAX_STATES 16 /* must be > 2 and < 256 */
-#define MAX_HDR 128
-
-/*
- * Compressed packet format:
- *
- * The first octet contains the packet type (top 3 bits), TCP
- * 'push' bit, and flags that indicate which of the 4 TCP sequence
- * numbers have changed (bottom 5 bits). The next octet is a
- * conversation number that associates a saved IP/TCP header with
- * the compressed packet. The next two octets are the TCP checksum
- * from the original datagram. The next 0 to 15 octets are
- * sequence number changes, one change per bit set in the header
- * (there may be no changes and there are two special cases where
- * the receiver implicitly knows what changed -- see below).
- *
- * There are 5 numbers which can change (they are always inserted
- * in the following order): TCP urgent pointer, window,
- * acknowlegement, sequence number and IP ID. (The urgent pointer
- * is different from the others in that its value is sent, not the
- * change in value.) Since typical use of SLIP links is biased
- * toward small packets (see comments on MTU/MSS below), changes
- * use a variable length coding with one octet for numbers in the
- * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the
- * range 256 - 65535 or 0. (If the change in sequence number or
- * ack is more than 65535, an uncompressed packet is sent.)
- */
-
-/*
- * Packet types (must not conflict with IP protocol version)
- *
- * The top nibble of the first octet is the packet type. There are
- * three possible types: IP (not proto TCP or tcp with one of the
- * control flags set); uncompressed TCP (a normal IP/TCP packet but
- * with the 8-bit protocol field replaced by an 8-bit connection id --
- * this type of packet syncs the sender & receiver); and compressed
- * TCP (described above).
- *
- * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and
- * is logically part of the 4-bit "changes" field that follows. Top
- * three bits are actual packet type. For backward compatibility
- * and in the interest of conserving bits, numbers are chosen so the
- * IP protocol version number (4) which normally appears in this nibble
- * means "IP packet".
- */
-
-/* packet types */
-#define TYPE_IP 0x40
-#define TYPE_UNCOMPRESSED_TCP 0x70
-#define TYPE_COMPRESSED_TCP 0x80
-#define TYPE_ERROR 0x00
-
-/* Bits in first octet of compressed packet */
-#define NEW_C 0x40 /* flag bits for what changed in a packet */
-#define NEW_I 0x20
-#define NEW_S 0x08
-#define NEW_A 0x04
-#define NEW_W 0x02
-#define NEW_U 0x01
-
-/* reserved, special-case values of above */
-#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */
-#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */
-#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U)
-
-#define TCP_PUSH_BIT 0x10
-
-
-/*
- * "state" data for each active tcp conversation on the wire. This is
- * basically a copy of the entire IP/TCP header from the last packet
- * we saw from the conversation together with a small identifier
- * the transmit & receive ends of the line use to locate saved header.
- */
-struct cstate {
- struct cstate *cs_next; /* next most recently used state (xmit only) */
- u_short cs_hlen; /* size of hdr (receive only) */
- u_char cs_id; /* connection # associated with this state */
- u_char cs_filler;
- union {
- char csu_hdr[MAX_HDR];
- struct ip csu_ip; /* ip/tcp hdr from most recent packet */
- } vjcs_u;
-};
-#define cs_ip vjcs_u.csu_ip
-#define cs_hdr vjcs_u.csu_hdr
-
-/*
- * all the state data for one serial line (we need one of these per line).
- */
-struct vjcompress {
- struct cstate *last_cs; /* most recently used tstate */
- u_char last_recv; /* last rcvd conn. id */
- u_char last_xmit; /* last sent conn. id */
- u_short flags;
-#ifndef VJ_NO_STATS
- struct vjstat stats;
-#endif
- struct cstate tstate[MAX_STATES]; /* xmit connection states */
- struct cstate rstate[MAX_STATES]; /* receive connection states */
-};
-
-/* flag values */
-#define VJF_TOSS 1 /* tossing rcvd frames because of input err */
-
-extern void vj_compress_init __P((struct vjcompress *comp, int max_state));
-extern u_int vj_compress_tcp __P((struct ip *ip, u_int mlen,
- struct vjcompress *comp, int compress_cid_flag,
- u_char **vjhdrp));
-extern void vj_uncompress_err __P((struct vjcompress *comp));
-extern int vj_uncompress_uncomp __P((u_char *buf, int buflen,
- struct vjcompress *comp));
-extern int vj_uncompress_tcp __P((u_char *buf, int buflen, int total_len,
- struct vjcompress *comp, u_char **hdrp,
- u_int *hlenp));
-
-#endif /* _VJCOMPRESS_H_ */
diff --git a/mdk-stage1/ppp/include/pcap-int.h b/mdk-stage1/ppp/include/pcap-int.h
deleted file mode 100644
index 323994929..000000000
--- a/mdk-stage1/ppp/include/pcap-int.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1994, 1995, 1996
- * The Regents of the University of California. 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.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the Computer Systems
- * Engineering Group at Lawrence Berkeley Laboratory.
- * 4. Neither the name of the University nor of the Laboratory may be used
- * to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- *
- * @(#) $Header$ (LBL)
- */
-
-#ifndef pcap_int_h
-#define pcap_int_h
-
-#include <pcap.h>
-
-/*
- * Savefile
- */
-struct pcap_sf {
- FILE *rfile;
- int swapped;
- int version_major;
- int version_minor;
- u_char *base;
-};
-
-struct pcap_md {
- struct pcap_stat stat;
- /*XXX*/
- int use_bpf;
- u_long TotPkts; /* can't oflow for 79 hrs on ether */
- u_long TotAccepted; /* count accepted by filter */
- u_long TotDrops; /* count of dropped packets */
- long TotMissed; /* missed by i/f during this run */
- long OrigMissed; /* missed by i/f before this run */
-#ifdef linux
- int pad;
- int skip;
- char *device;
-#endif
-};
-
-struct pcap {
- int fd;
- int snapshot;
- int linktype;
- int tzoff; /* timezone offset */
- int offset; /* offset for proper alignment */
-
- struct pcap_sf sf;
- struct pcap_md md;
-
- /*
- * Read buffer.
- */
- int bufsize;
- u_char *buffer;
- u_char *bp;
- int cc;
-
- /*
- * Place holder for pcap_next().
- */
- u_char *pkt;
-
-
- /*
- * Placeholder for filter code if bpf not in kernel.
- */
- struct bpf_program fcode;
-
- char errbuf[PCAP_ERRBUF_SIZE];
-};
-
-int yylex(void);
-
-#ifndef min
-#define min(a, b) ((a) > (b) ? (b) : (a))
-#endif
-
-/* XXX should these be in pcap.h? */
-int pcap_offline_read(pcap_t *, int, pcap_handler, u_char *);
-int pcap_read(pcap_t *, int cnt, pcap_handler, u_char *);
-
-/* Ultrix pads to make everything line up on a nice boundary */
-#if defined(ultrix) || defined(__alpha)
-#define PCAP_FDDIPAD 3
-#endif
-
-/* XXX */
-extern int pcap_fddipad;
-#endif
diff --git a/mdk-stage1/ppp/linux/Makefile.top b/mdk-stage1/ppp/linux/Makefile.top
deleted file mode 100644
index fa34ce59f..000000000
--- a/mdk-stage1/ppp/linux/Makefile.top
+++ /dev/null
@@ -1,55 +0,0 @@
-# PPP top-level Makefile for Linux.
-
-
-BINDIR = $(DESTDIR)/usr/sbin
-MANDIR = $(DESTDIR)/usr/man
-ETCDIR = $(DESTDIR)/etc/ppp
-
-# uid 0 = root
-INSTALL= install
-
-all:
- cd chat; $(MAKE) $(MFLAGS) all
- cd pppd; $(MAKE) $(MFLAGS) all
- cd pppstats; $(MAKE) $(MFLAGS) all
- cd pppdump; $(MAKE) $(MFLAGS) all
-
-install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp
-
-install-progs:
- cd chat; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) $(MFLAGS) install
- cd pppd; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) $(MFLAGS) install
- cd pppstats; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) $(MFLAGS) install
- cd pppdump; $(MAKE) BINDIR=$(BINDIR) MANDIR=$(MANDIR) $(MFLAGS) install
-
-install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
- $(ETCDIR)/chap-secrets
-
-$(ETCDIR)/options:
- $(INSTALL) -c -m 644 etc.ppp/options $@
-$(ETCDIR)/pap-secrets:
- $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@
-$(ETCDIR)/chap-secrets:
- $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@
-
-$(BINDIR):
- $(INSTALL) -d -m 755 $@
-$(MANDIR)/man8:
- $(INSTALL) -d -m 755 $@
-$(ETCDIR):
- $(INSTALL) -d -m 755 $@
-
-clean:
- rm -f `find . -name '*.[oas]' -print`
- rm -f `find . -name 'core' -print`
- rm -f `find . -name '*~' -print`
- cd chat; $(MAKE) clean
- cd pppd; $(MAKE) clean
- cd pppstats; $(MAKE) clean
- cd pppdump; $(MAKE) clean
-
-dist-clean: clean
- rm -f Makefile `find . -name Makefile -print`
-
-#kernel:
-# cd linux; ./kinstall.sh
diff --git a/mdk-stage1/ppp/modules/bsd-comp.c b/mdk-stage1/ppp/modules/bsd-comp.c
deleted file mode 100644
index b1b9325c7..000000000
--- a/mdk-stage1/ppp/modules/bsd-comp.c
+++ /dev/null
@@ -1,1116 +0,0 @@
-/* Because this code is derived from the 4.3BSD compress source:
- *
- *
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * 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.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- */
-
-/*
- * This version is for use with STREAMS under SunOS 4.x,
- * Digital UNIX, AIX 4.x, and SVR4 systems including Solaris 2.
- *
- * $Id$
- */
-
-#ifdef AIX4
-#include <net/net_globals.h>
-#endif
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/stream.h>
-#include <net/ppp_defs.h>
-#include "ppp_mod.h"
-
-#ifdef SVR4
-#include <sys/byteorder.h>
-#ifndef _BIG_ENDIAN
-#define BSD_LITTLE_ENDIAN
-#endif
-#endif
-
-#ifdef __osf__
-#undef FIRST
-#undef LAST
-#define BSD_LITTLE_ENDIAN
-#endif
-
-#define PACKETPTR mblk_t *
-#include <net/ppp-comp.h>
-
-#if DO_BSD_COMPRESS
-
-/*
- * PPP "BSD compress" compression
- * The differences between this compression and the classic BSD LZW
- * source are obvious from the requirement that the classic code worked
- * with files while this handles arbitrarily long streams that
- * are broken into packets. They are:
- *
- * When the code size expands, a block of junk is not emitted by
- * the compressor and not expected by the decompressor.
- *
- * New codes are not necessarily assigned every time an old
- * code is output by the compressor. This is because a packet
- * end forces a code to be emitted, but does not imply that a
- * new sequence has been seen.
- *
- * The compression ratio is checked at the first end of a packet
- * after the appropriate gap. Besides simplifying and speeding
- * things up, this makes it more likely that the transmitter
- * and receiver will agree when the dictionary is cleared when
- * compression is not going well.
- */
-
-/*
- * A dictionary for doing BSD compress.
- */
-struct bsd_db {
- int totlen; /* length of this structure */
- u_int hsize; /* size of the hash table */
- u_char hshift; /* used in hash function */
- u_char n_bits; /* current bits/code */
- u_char maxbits;
- u_char debug;
- u_char unit;
- u_short seqno; /* sequence number of next packet */
- u_int hdrlen; /* header length to preallocate */
- u_int mru;
- u_int maxmaxcode; /* largest valid code */
- u_int max_ent; /* largest code in use */
- u_int in_count; /* uncompressed bytes, aged */
- u_int bytes_out; /* compressed bytes, aged */
- u_int ratio; /* recent compression ratio */
- u_int checkpoint; /* when to next check the ratio */
- u_int clear_count; /* times dictionary cleared */
- u_int incomp_count; /* incompressible packets */
- u_int incomp_bytes; /* incompressible bytes */
- u_int uncomp_count; /* uncompressed packets */
- u_int uncomp_bytes; /* uncompressed bytes */
- u_int comp_count; /* compressed packets */
- u_int comp_bytes; /* compressed bytes */
- u_short *lens; /* array of lengths of codes */
- struct bsd_dict {
- union { /* hash value */
- u_int32_t fcode;
- struct {
-#ifdef BSD_LITTLE_ENDIAN
- u_short prefix; /* preceding code */
- u_char suffix; /* last character of new code */
- u_char pad;
-#else
- u_char pad;
- u_char suffix; /* last character of new code */
- u_short prefix; /* preceding code */
-#endif
- } hs;
- } f;
- u_short codem1; /* output of hash table -1 */
- u_short cptr; /* map code to hash table entry */
- } dict[1];
-};
-
-#define BSD_OVHD 2 /* BSD compress overhead/packet */
-#define BSD_INIT_BITS BSD_MIN_BITS
-
-static void *bsd_comp_alloc __P((u_char *options, int opt_len));
-static void *bsd_decomp_alloc __P((u_char *options, int opt_len));
-static void bsd_free __P((void *state));
-static int bsd_comp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int debug));
-static int bsd_decomp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
-static int bsd_compress __P((void *state, mblk_t **mret,
- mblk_t *mp, int slen, int maxolen));
-static void bsd_incomp __P((void *state, mblk_t *dmsg));
-static int bsd_decompress __P((void *state, mblk_t *cmp, mblk_t **dmpp));
-static void bsd_reset __P((void *state));
-static void bsd_comp_stats __P((void *state, struct compstat *stats));
-
-/*
- * Procedures exported to ppp_comp.c.
- */
-struct compressor ppp_bsd_compress = {
- CI_BSD_COMPRESS, /* compress_proto */
- bsd_comp_alloc, /* comp_alloc */
- bsd_free, /* comp_free */
- bsd_comp_init, /* comp_init */
- bsd_reset, /* comp_reset */
- bsd_compress, /* compress */
- bsd_comp_stats, /* comp_stat */
- bsd_decomp_alloc, /* decomp_alloc */
- bsd_free, /* decomp_free */
- bsd_decomp_init, /* decomp_init */
- bsd_reset, /* decomp_reset */
- bsd_decompress, /* decompress */
- bsd_incomp, /* incomp */
- bsd_comp_stats, /* decomp_stat */
-};
-
-/*
- * the next two codes should not be changed lightly, as they must not
- * lie within the contiguous general code space.
- */
-#define CLEAR 256 /* table clear output code */
-#define FIRST 257 /* first free entry */
-#define LAST 255
-
-#define MAXCODE(b) ((1 << (b)) - 1)
-#define BADCODEM1 MAXCODE(BSD_MAX_BITS)
-
-#define BSD_HASH(prefix,suffix,hshift) ((((u_int32_t)(suffix)) << (hshift)) \
- ^ (u_int32_t)(prefix))
-#define BSD_KEY(prefix,suffix) ((((u_int32_t)(suffix)) << 16) \
- + (u_int32_t)(prefix))
-
-#define CHECK_GAP 10000 /* Ratio check interval */
-
-#define RATIO_SCALE_LOG 8
-#define RATIO_SCALE (1<<RATIO_SCALE_LOG)
-#define RATIO_MAX (0x7fffffff>>RATIO_SCALE_LOG)
-
-#define DECOMP_CHUNK 256
-
-/*
- * clear the dictionary
- */
-static void
-bsd_clear(db)
- struct bsd_db *db;
-{
- db->clear_count++;
- db->max_ent = FIRST-1;
- db->n_bits = BSD_INIT_BITS;
- db->ratio = 0;
- db->bytes_out = 0;
- db->in_count = 0;
- db->checkpoint = CHECK_GAP;
-}
-
-/*
- * If the dictionary is full, then see if it is time to reset it.
- *
- * Compute the compression ratio using fixed-point arithmetic
- * with 8 fractional bits.
- *
- * Since we have an infinite stream instead of a single file,
- * watch only the local compression ratio.
- *
- * Since both peers must reset the dictionary at the same time even in
- * the absence of CLEAR codes (while packets are incompressible), they
- * must compute the same ratio.
- */
-static int /* 1=output CLEAR */
-bsd_check(db)
- struct bsd_db *db;
-{
- u_int new_ratio;
-
- if (db->in_count >= db->checkpoint) {
- /* age the ratio by limiting the size of the counts */
- if (db->in_count >= RATIO_MAX
- || db->bytes_out >= RATIO_MAX) {
- db->in_count -= db->in_count/4;
- db->bytes_out -= db->bytes_out/4;
- }
-
- db->checkpoint = db->in_count + CHECK_GAP;
-
- if (db->max_ent >= db->maxmaxcode) {
- /* Reset the dictionary only if the ratio is worse,
- * or if it looks as if it has been poisoned
- * by incompressible data.
- *
- * This does not overflow, because
- * db->in_count <= RATIO_MAX.
- */
- new_ratio = db->in_count << RATIO_SCALE_LOG;
- if (db->bytes_out != 0)
- new_ratio /= db->bytes_out;
-
- if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE) {
- bsd_clear(db);
- return 1;
- }
- db->ratio = new_ratio;
- }
- }
- return 0;
-}
-
-/*
- * Return statistics.
- */
-static void
-bsd_comp_stats(state, stats)
- void *state;
- struct compstat *stats;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int out;
-
- stats->unc_bytes = db->uncomp_bytes;
- stats->unc_packets = db->uncomp_count;
- stats->comp_bytes = db->comp_bytes;
- stats->comp_packets = db->comp_count;
- stats->inc_bytes = db->incomp_bytes;
- stats->inc_packets = db->incomp_count;
- stats->ratio = db->in_count;
- out = db->bytes_out;
- if (stats->ratio <= 0x7fffff)
- stats->ratio <<= 8;
- else
- out >>= 8;
- if (out != 0)
- stats->ratio /= out;
-}
-
-/*
- * Reset state, as on a CCP ResetReq.
- */
-static void
-bsd_reset(state)
- void *state;
-{
- struct bsd_db *db = (struct bsd_db *) state;
-
- db->seqno = 0;
- bsd_clear(db);
- db->clear_count = 0;
-}
-
-/*
- * Allocate space for a (de) compressor.
- */
-static void *
-bsd_alloc(options, opt_len, decomp)
- u_char *options;
- int opt_len, decomp;
-{
- int bits;
- u_int newlen, hsize, hshift, maxmaxcode;
- struct bsd_db *db;
-
- if (opt_len != 3 || options[0] != CI_BSD_COMPRESS || options[1] != 3
- || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION)
- return NULL;
-
- bits = BSD_NBITS(options[2]);
- switch (bits) {
- case 9: /* needs 82152 for both directions */
- case 10: /* needs 84144 */
- case 11: /* needs 88240 */
- case 12: /* needs 96432 */
- hsize = 5003;
- hshift = 4;
- break;
- case 13: /* needs 176784 */
- hsize = 9001;
- hshift = 5;
- break;
- case 14: /* needs 353744 */
- hsize = 18013;
- hshift = 6;
- break;
- case 15: /* needs 691440 */
- hsize = 35023;
- hshift = 7;
- break;
- case 16: /* needs 1366160--far too much, */
- /* hsize = 69001; */ /* and 69001 is too big for cptr */
- /* hshift = 8; */ /* in struct bsd_db */
- /* break; */
- default:
- return NULL;
- }
-
- maxmaxcode = MAXCODE(bits);
- newlen = sizeof(*db) + (hsize-1) * (sizeof(db->dict[0]));
-#ifdef __osf__
- db = (struct bsd_db *) ALLOC_SLEEP(newlen);
-#else
- db = (struct bsd_db *) ALLOC_NOSLEEP(newlen);
-#endif
- if (!db)
- return NULL;
- bzero(db, sizeof(*db) - sizeof(db->dict));
-
- if (!decomp) {
- db->lens = NULL;
- } else {
-#ifdef __osf__
- db->lens = (u_short *) ALLOC_SLEEP((maxmaxcode+1) * sizeof(db->lens[0]));
-#else
- db->lens = (u_short *) ALLOC_NOSLEEP((maxmaxcode+1) * sizeof(db->lens[0]));
-#endif
- if (!db->lens) {
- FREE(db, newlen);
- return NULL;
- }
- }
-
- db->totlen = newlen;
- db->hsize = hsize;
- db->hshift = hshift;
- db->maxmaxcode = maxmaxcode;
- db->maxbits = bits;
-
- return (void *) db;
-}
-
-static void
-bsd_free(state)
- void *state;
-{
- struct bsd_db *db = (struct bsd_db *) state;
-
- if (db->lens)
- FREE(db->lens, (db->maxmaxcode+1) * sizeof(db->lens[0]));
- FREE(db, db->totlen);
-}
-
-static void *
-bsd_comp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- return bsd_alloc(options, opt_len, 0);
-}
-
-static void *
-bsd_decomp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- return bsd_alloc(options, opt_len, 1);
-}
-
-/*
- * Initialize the database.
- */
-static int
-bsd_init(db, options, opt_len, unit, hdrlen, mru, debug, decomp)
- struct bsd_db *db;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug, decomp;
-{
- int i;
-
- if (opt_len < CILEN_BSD_COMPRESS
- || options[0] != CI_BSD_COMPRESS || options[1] != CILEN_BSD_COMPRESS
- || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION
- || BSD_NBITS(options[2]) != db->maxbits
- || decomp && db->lens == NULL)
- return 0;
-
- if (decomp) {
- i = LAST+1;
- while (i != 0)
- db->lens[--i] = 1;
- }
- i = db->hsize;
- while (i != 0) {
- db->dict[--i].codem1 = BADCODEM1;
- db->dict[i].cptr = 0;
- }
-
- db->unit = unit;
- db->hdrlen = hdrlen;
- db->mru = mru;
- if (debug)
- db->debug = 1;
-
- bsd_reset(db);
-
- return 1;
-}
-
-static int
-bsd_comp_init(state, options, opt_len, unit, hdrlen, debug)
- void *state;
- u_char *options;
- int opt_len, unit, hdrlen, debug;
-{
- return bsd_init((struct bsd_db *) state, options, opt_len,
- unit, hdrlen, 0, debug, 0);
-}
-
-static int
-bsd_decomp_init(state, options, opt_len, unit, hdrlen, mru, debug)
- void *state;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug;
-{
- return bsd_init((struct bsd_db *) state, options, opt_len,
- unit, hdrlen, mru, debug, 1);
-}
-
-
-/*
- * compress a packet
- * One change from the BSD compress command is that when the
- * code size expands, we do not output a bunch of padding.
- *
- * N.B. at present, we ignore the hdrlen specified in the comp_init call.
- */
-static int /* new slen */
-bsd_compress(state, mretp, mp, slen, maxolen)
- void *state;
- mblk_t **mretp; /* return compressed mbuf chain here */
- mblk_t *mp; /* from here */
- int slen; /* uncompressed length */
- int maxolen; /* max compressed length */
-{
- struct bsd_db *db = (struct bsd_db *) state;
- int hshift = db->hshift;
- u_int max_ent = db->max_ent;
- u_int n_bits = db->n_bits;
- u_int bitno = 32;
- u_int32_t accm = 0, fcode;
- struct bsd_dict *dictp;
- u_char c;
- int hval, disp, ent, ilen;
- mblk_t *np, *mret;
- u_char *rptr, *wptr;
- u_char *cp_end;
- int olen;
- mblk_t *m, **mnp;
-
-#define PUTBYTE(v) { \
- if (wptr) { \
- *wptr++ = (v); \
- if (wptr >= cp_end) { \
- m->b_wptr = wptr; \
- m = m->b_cont; \
- if (m) { \
- wptr = m->b_wptr; \
- cp_end = m->b_datap->db_lim; \
- } else \
- wptr = NULL; \
- } \
- } \
- ++olen; \
-}
-
-#define OUTPUT(ent) { \
- bitno -= n_bits; \
- accm |= ((ent) << bitno); \
- do { \
- PUTBYTE(accm >> 24); \
- accm <<= 8; \
- bitno += 8; \
- } while (bitno <= 24); \
-}
-
- /*
- * First get the protocol and check that we're
- * interested in this packet.
- */
- *mretp = NULL;
- rptr = mp->b_rptr;
- if (rptr + PPP_HDRLEN > mp->b_wptr) {
- if (!pullupmsg(mp, PPP_HDRLEN))
- return 0;
- rptr = mp->b_rptr;
- }
- ent = PPP_PROTOCOL(rptr); /* get the protocol */
- if (ent < 0x21 || ent > 0xf9)
- return 0;
-
- /* Don't generate compressed packets which are larger than
- the uncompressed packet. */
- if (maxolen > slen)
- maxolen = slen;
-
- /* Allocate enough message blocks to give maxolen total space. */
- mnp = &mret;
- for (olen = maxolen; olen > 0; ) {
- m = allocb((olen < 4096? olen: 4096), BPRI_MED);
- *mnp = m;
- if (m == NULL) {
- if (mret != NULL) {
- freemsg(mret);
- mnp = &mret;
- }
- break;
- }
- mnp = &m->b_cont;
- olen -= m->b_datap->db_lim - m->b_wptr;
- }
- *mnp = NULL;
-
- if ((m = mret) != NULL) {
- wptr = m->b_wptr;
- cp_end = m->b_datap->db_lim;
- } else
- wptr = cp_end = NULL;
- olen = 0;
-
- /*
- * Copy the PPP header over, changing the protocol,
- * and install the 2-byte sequence number.
- */
- if (wptr) {
- wptr[0] = PPP_ADDRESS(rptr);
- wptr[1] = PPP_CONTROL(rptr);
- wptr[2] = 0; /* change the protocol */
- wptr[3] = PPP_COMP;
- wptr[4] = db->seqno >> 8;
- wptr[5] = db->seqno;
- wptr += PPP_HDRLEN + BSD_OVHD;
- }
- ++db->seqno;
- rptr += PPP_HDRLEN;
-
- slen = mp->b_wptr - rptr;
- ilen = slen + 1;
- np = mp->b_cont;
- for (;;) {
- if (slen <= 0) {
- if (!np)
- break;
- rptr = np->b_rptr;
- slen = np->b_wptr - rptr;
- np = np->b_cont;
- if (!slen)
- continue; /* handle 0-length buffers */
- ilen += slen;
- }
-
- slen--;
- c = *rptr++;
- fcode = BSD_KEY(ent, c);
- hval = BSD_HASH(ent, c, hshift);
- dictp = &db->dict[hval];
-
- /* Validate and then check the entry. */
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- if (dictp->f.fcode == fcode) {
- ent = dictp->codem1+1;
- continue; /* found (prefix,suffix) */
- }
-
- /* continue probing until a match or invalid entry */
- disp = (hval == 0) ? 1 : hval;
- do {
- hval += disp;
- if (hval >= db->hsize)
- hval -= db->hsize;
- dictp = &db->dict[hval];
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- } while (dictp->f.fcode != fcode);
- ent = dictp->codem1 + 1; /* finally found (prefix,suffix) */
- continue;
-
- nomatch:
- OUTPUT(ent); /* output the prefix */
-
- /* code -> hashtable */
- if (max_ent < db->maxmaxcode) {
- struct bsd_dict *dictp2;
- /* expand code size if needed */
- if (max_ent >= MAXCODE(n_bits))
- db->n_bits = ++n_bits;
-
- /* Invalidate old hash table entry using
- * this code, and then take it over.
- */
- dictp2 = &db->dict[max_ent+1];
- if (db->dict[dictp2->cptr].codem1 == max_ent)
- db->dict[dictp2->cptr].codem1 = BADCODEM1;
- dictp2->cptr = hval;
- dictp->codem1 = max_ent;
- dictp->f.fcode = fcode;
-
- db->max_ent = ++max_ent;
- }
- ent = c;
- }
-
- OUTPUT(ent); /* output the last code */
- db->bytes_out += olen;
- db->in_count += ilen;
- if (bitno < 32)
- ++db->bytes_out; /* count complete bytes */
-
- if (bsd_check(db))
- OUTPUT(CLEAR); /* do not count the CLEAR */
-
- /*
- * Pad dribble bits of last code with ones.
- * Do not emit a completely useless byte of ones.
- */
- if (bitno != 32)
- PUTBYTE((accm | (0xff << (bitno-8))) >> 24);
-
- /*
- * Increase code size if we would have without the packet
- * boundary and as the decompressor will.
- */
- if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
- db->n_bits++;
-
- db->uncomp_bytes += ilen;
- ++db->uncomp_count;
- if (olen + PPP_HDRLEN + BSD_OVHD > maxolen && mret != NULL) {
- /* throw away the compressed stuff if it is longer than uncompressed */
- freemsg(mret);
- mret = NULL;
- ++db->incomp_count;
- db->incomp_bytes += ilen;
- } else if (wptr != NULL) {
- m->b_wptr = wptr;
- if (m->b_cont) {
- freemsg(m->b_cont);
- m->b_cont = NULL;
- }
- ++db->comp_count;
- db->comp_bytes += olen + BSD_OVHD;
- }
-
- *mretp = mret;
- return olen + PPP_HDRLEN + BSD_OVHD;
-#undef OUTPUT
-#undef PUTBYTE
-}
-
-
-/*
- * Update the "BSD Compress" dictionary on the receiver for
- * incompressible data by pretending to compress the incoming data.
- */
-static void
-bsd_incomp(state, dmsg)
- void *state;
- mblk_t *dmsg;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int hshift = db->hshift;
- u_int max_ent = db->max_ent;
- u_int n_bits = db->n_bits;
- struct bsd_dict *dictp;
- u_int32_t fcode;
- u_char c;
- long hval, disp;
- int slen, ilen;
- u_int bitno = 7;
- u_char *rptr;
- u_int ent;
-
- rptr = dmsg->b_rptr;
- if (rptr + PPP_HDRLEN > dmsg->b_wptr) {
- if (!pullupmsg(dmsg, PPP_HDRLEN))
- return;
- rptr = dmsg->b_rptr;
- }
- ent = PPP_PROTOCOL(rptr); /* get the protocol */
- if (ent < 0x21 || ent > 0xf9)
- return;
-
- db->seqno++;
- ilen = 1; /* count the protocol as 1 byte */
- rptr += PPP_HDRLEN;
- for (;;) {
- slen = dmsg->b_wptr - rptr;
- if (slen <= 0) {
- dmsg = dmsg->b_cont;
- if (!dmsg)
- break;
- rptr = dmsg->b_rptr;
- continue; /* skip zero-length buffers */
- }
- ilen += slen;
-
- do {
- c = *rptr++;
- fcode = BSD_KEY(ent, c);
- hval = BSD_HASH(ent, c, hshift);
- dictp = &db->dict[hval];
-
- /* validate and then check the entry */
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- if (dictp->f.fcode == fcode) {
- ent = dictp->codem1+1;
- continue; /* found (prefix,suffix) */
- }
-
- /* continue probing until a match or invalid entry */
- disp = (hval == 0) ? 1 : hval;
- do {
- hval += disp;
- if (hval >= db->hsize)
- hval -= db->hsize;
- dictp = &db->dict[hval];
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- } while (dictp->f.fcode != fcode);
- ent = dictp->codem1+1;
- continue; /* finally found (prefix,suffix) */
-
- nomatch: /* output (count) the prefix */
- bitno += n_bits;
-
- /* code -> hashtable */
- if (max_ent < db->maxmaxcode) {
- struct bsd_dict *dictp2;
- /* expand code size if needed */
- if (max_ent >= MAXCODE(n_bits))
- db->n_bits = ++n_bits;
-
- /* Invalidate previous hash table entry
- * assigned this code, and then take it over.
- */
- dictp2 = &db->dict[max_ent+1];
- if (db->dict[dictp2->cptr].codem1 == max_ent)
- db->dict[dictp2->cptr].codem1 = BADCODEM1;
- dictp2->cptr = hval;
- dictp->codem1 = max_ent;
- dictp->f.fcode = fcode;
-
- db->max_ent = ++max_ent;
- db->lens[max_ent] = db->lens[ent]+1;
- }
- ent = c;
- } while (--slen != 0);
- }
- bitno += n_bits; /* output (count) the last code */
- db->bytes_out += bitno/8;
- db->in_count += ilen;
- (void)bsd_check(db);
-
- ++db->incomp_count;
- db->incomp_bytes += ilen;
- ++db->uncomp_count;
- db->uncomp_bytes += ilen;
-
- /* Increase code size if we would have without the packet
- * boundary and as the decompressor will.
- */
- if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
- db->n_bits++;
-}
-
-
-/*
- * Decompress "BSD Compress"
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression. For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-static int
-bsd_decompress(state, cmsg, dmpp)
- void *state;
- mblk_t *cmsg, **dmpp;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int max_ent = db->max_ent;
- u_int32_t accm = 0;
- u_int bitno = 32; /* 1st valid bit in accm */
- u_int n_bits = db->n_bits;
- u_int tgtbitno = 32-n_bits; /* bitno when we have a code */
- struct bsd_dict *dictp;
- int explen, i, seq, len;
- u_int incode, oldcode, finchar;
- u_char *p, *rptr, *wptr;
- mblk_t *dmsg, *mret;
- int adrs, ctrl, ilen;
- int dlen, space, codelen, extra;
-
- /*
- * Get at least the BSD Compress header in the first buffer
- */
- rptr = cmsg->b_rptr;
- if (rptr + PPP_HDRLEN + BSD_OVHD >= cmsg->b_wptr) {
- if (!pullupmsg(cmsg, PPP_HDRLEN + BSD_OVHD + 1)) {
- if (db->debug)
- printf("bsd_decomp%d: failed to pullup\n", db->unit);
- return DECOMP_ERROR;
- }
- rptr = cmsg->b_rptr;
- }
-
- /*
- * Save the address/control from the PPP header
- * and then get the sequence number.
- */
- adrs = PPP_ADDRESS(rptr);
- ctrl = PPP_CONTROL(rptr);
- rptr += PPP_HDRLEN;
- seq = (rptr[0] << 8) + rptr[1];
- rptr += BSD_OVHD;
- ilen = len = cmsg->b_wptr - rptr;
-
- /*
- * Check the sequence number and give up if it is not what we expect.
- */
- if (seq != db->seqno++) {
- if (db->debug)
- printf("bsd_decomp%d: bad sequence # %d, expected %d\n",
- db->unit, seq, db->seqno - 1);
- return DECOMP_ERROR;
- }
-
- /*
- * Allocate one message block to start with.
- */
- if ((dmsg = allocb(DECOMP_CHUNK + db->hdrlen, BPRI_MED)) == NULL)
- return DECOMP_ERROR;
- mret = dmsg;
- dmsg->b_wptr += db->hdrlen;
- dmsg->b_rptr = wptr = dmsg->b_wptr;
-
- /* Fill in the ppp header, but not the last byte of the protocol
- (that comes from the decompressed data). */
- wptr[0] = adrs;
- wptr[1] = ctrl;
- wptr[2] = 0;
- wptr += PPP_HDRLEN - 1;
- space = dmsg->b_datap->db_lim - wptr;
-
- oldcode = CLEAR;
- explen = 0;
- for (;;) {
- if (len == 0) {
- cmsg = cmsg->b_cont;
- if (!cmsg) /* quit at end of message */
- break;
- rptr = cmsg->b_rptr;
- len = cmsg->b_wptr - rptr;
- ilen += len;
- continue; /* handle 0-length buffers */
- }
-
- /*
- * Accumulate bytes until we have a complete code.
- * Then get the next code, relying on the 32-bit,
- * unsigned accm to mask the result.
- */
- bitno -= 8;
- accm |= *rptr++ << bitno;
- --len;
- if (tgtbitno < bitno)
- continue;
- incode = accm >> tgtbitno;
- accm <<= n_bits;
- bitno += n_bits;
-
- if (incode == CLEAR) {
- /*
- * The dictionary must only be cleared at
- * the end of a packet. But there could be an
- * empty message block at the end.
- */
- if (len > 0 || cmsg->b_cont != 0) {
- if (cmsg->b_cont)
- len += msgdsize(cmsg->b_cont);
- if (len > 0) {
- freemsg(dmsg);
- if (db->debug)
- printf("bsd_decomp%d: bad CLEAR\n", db->unit);
- return DECOMP_FATALERROR;
- }
- }
- bsd_clear(db);
- explen = ilen = 0;
- break;
- }
-
- if (incode > max_ent + 2 || incode > db->maxmaxcode
- || incode > max_ent && oldcode == CLEAR) {
- freemsg(dmsg);
- if (db->debug) {
- printf("bsd_decomp%d: bad code 0x%x oldcode=0x%x ",
- db->unit, incode, oldcode);
- printf("max_ent=0x%x dlen=%d seqno=%d\n",
- max_ent, dlen, db->seqno);
- }
- return DECOMP_FATALERROR; /* probably a bug */
- }
-
- /* Special case for KwKwK string. */
- if (incode > max_ent) {
- finchar = oldcode;
- extra = 1;
- } else {
- finchar = incode;
- extra = 0;
- }
-
- codelen = db->lens[finchar];
- explen += codelen + extra;
- if (explen > db->mru + 1) {
- freemsg(dmsg);
- if (db->debug)
- printf("bsd_decomp%d: ran out of mru\n", db->unit);
- return DECOMP_FATALERROR;
- }
-
- /*
- * Decode this code and install it in the decompressed buffer.
- */
- space -= codelen + extra;
- if (space < 0) {
- /* Allocate another message block. */
- dmsg->b_wptr = wptr;
- dlen = codelen + extra;
- if (dlen < DECOMP_CHUNK)
- dlen = DECOMP_CHUNK;
- if ((dmsg->b_cont = allocb(dlen, BPRI_MED)) == NULL) {
- freemsg(dmsg);
- return DECOMP_ERROR;
- }
- dmsg = dmsg->b_cont;
- wptr = dmsg->b_wptr;
- space = dmsg->b_datap->db_lim - wptr - codelen - extra;
- }
- p = (wptr += codelen);
- while (finchar > LAST) {
- dictp = &db->dict[db->dict[finchar].cptr];
-#ifdef DEBUG
- --codelen;
- if (codelen <= 0) {
- freemsg(dmsg);
- printf("bsd_decomp%d: fell off end of chain ", db->unit);
- printf("0x%x at 0x%x by 0x%x, max_ent=0x%x\n",
- incode, finchar, db->dict[finchar].cptr, max_ent);
- return DECOMP_FATALERROR;
- }
- if (dictp->codem1 != finchar-1) {
- freemsg(dmsg);
- printf("bsd_decomp%d: bad code chain 0x%x finchar=0x%x ",
- db->unit, incode, finchar);
- printf("oldcode=0x%x cptr=0x%x codem1=0x%x\n", oldcode,
- db->dict[finchar].cptr, dictp->codem1);
- return DECOMP_FATALERROR;
- }
-#endif
- *--p = dictp->f.hs.suffix;
- finchar = dictp->f.hs.prefix;
- }
- *--p = finchar;
-
-#ifdef DEBUG
- if (--codelen != 0)
- printf("bsd_decomp%d: short by %d after code 0x%x, max_ent=0x%x\n",
- db->unit, codelen, incode, max_ent);
-#endif
-
- if (extra) /* the KwKwK case again */
- *wptr++ = finchar;
-
- /*
- * If not first code in a packet, and
- * if not out of code space, then allocate a new code.
- *
- * Keep the hash table correct so it can be used
- * with uncompressed packets.
- */
- if (oldcode != CLEAR && max_ent < db->maxmaxcode) {
- struct bsd_dict *dictp2;
- u_int32_t fcode;
- int hval, disp;
-
- fcode = BSD_KEY(oldcode,finchar);
- hval = BSD_HASH(oldcode,finchar,db->hshift);
- dictp = &db->dict[hval];
-
- /* look for a free hash table entry */
- if (dictp->codem1 < max_ent) {
- disp = (hval == 0) ? 1 : hval;
- do {
- hval += disp;
- if (hval >= db->hsize)
- hval -= db->hsize;
- dictp = &db->dict[hval];
- } while (dictp->codem1 < max_ent);
- }
-
- /*
- * Invalidate previous hash table entry
- * assigned this code, and then take it over
- */
- dictp2 = &db->dict[max_ent+1];
- if (db->dict[dictp2->cptr].codem1 == max_ent) {
- db->dict[dictp2->cptr].codem1 = BADCODEM1;
- }
- dictp2->cptr = hval;
- dictp->codem1 = max_ent;
- dictp->f.fcode = fcode;
-
- db->max_ent = ++max_ent;
- db->lens[max_ent] = db->lens[oldcode]+1;
-
- /* Expand code size if needed. */
- if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) {
- db->n_bits = ++n_bits;
- tgtbitno = 32-n_bits;
- }
- }
- oldcode = incode;
- }
- dmsg->b_wptr = wptr;
-
- /*
- * Keep the checkpoint right so that incompressible packets
- * clear the dictionary at the right times.
- */
- db->bytes_out += ilen;
- db->in_count += explen;
- if (bsd_check(db) && db->debug) {
- printf("bsd_decomp%d: peer should have cleared dictionary\n",
- db->unit);
- }
-
- ++db->comp_count;
- db->comp_bytes += ilen + BSD_OVHD;
- ++db->uncomp_count;
- db->uncomp_bytes += explen;
-
- *dmpp = mret;
- return DECOMP_OK;
-}
-#endif /* DO_BSD_COMPRESS */
diff --git a/mdk-stage1/ppp/modules/deflate.c b/mdk-stage1/ppp/modules/deflate.c
deleted file mode 100644
index 1b9054412..000000000
--- a/mdk-stage1/ppp/modules/deflate.c
+++ /dev/null
@@ -1,760 +0,0 @@
-/*
- * ppp_deflate.c - interface the zlib procedures for Deflate compression
- * and decompression (as used by gzip) to the PPP code.
- * This version is for use with STREAMS under SunOS 4.x, Solaris 2,
- * SVR4, OSF/1 and AIX 4.x.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-#ifdef AIX4
-#include <net/net_globals.h>
-#endif
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/stream.h>
-#include <net/ppp_defs.h>
-#include "ppp_mod.h"
-
-#define PACKETPTR mblk_t *
-#include <net/ppp-comp.h>
-
-#ifdef __osf__
-#include "zlib.h"
-#else
-#include "../common/zlib.h"
-#endif
-
-#if DO_DEFLATE
-
-#define DEFLATE_DEBUG 1
-
-/*
- * State for a Deflate (de)compressor.
- */
-struct deflate_state {
- int seqno;
- int w_size;
- int unit;
- int hdrlen;
- int mru;
- int debug;
- z_stream strm;
- struct compstat stats;
-};
-
-#define DEFLATE_OVHD 2 /* Deflate overhead/packet */
-
-static void *z_alloc __P((void *, u_int items, u_int size));
-static void *z_alloc_init __P((void *, u_int items, u_int size));
-static void z_free __P((void *, void *ptr));
-static void *z_comp_alloc __P((u_char *options, int opt_len));
-static void *z_decomp_alloc __P((u_char *options, int opt_len));
-static void z_comp_free __P((void *state));
-static void z_decomp_free __P((void *state));
-static int z_comp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int debug));
-static int z_decomp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
-static int z_compress __P((void *state, mblk_t **mret,
- mblk_t *mp, int slen, int maxolen));
-static void z_incomp __P((void *state, mblk_t *dmsg));
-static int z_decompress __P((void *state, mblk_t *cmp,
- mblk_t **dmpp));
-static void z_comp_reset __P((void *state));
-static void z_decomp_reset __P((void *state));
-static void z_comp_stats __P((void *state, struct compstat *stats));
-
-/*
- * Procedures exported to ppp_comp.c.
- */
-struct compressor ppp_deflate = {
- CI_DEFLATE, /* compress_proto */
- z_comp_alloc, /* comp_alloc */
- z_comp_free, /* comp_free */
- z_comp_init, /* comp_init */
- z_comp_reset, /* comp_reset */
- z_compress, /* compress */
- z_comp_stats, /* comp_stat */
- z_decomp_alloc, /* decomp_alloc */
- z_decomp_free, /* decomp_free */
- z_decomp_init, /* decomp_init */
- z_decomp_reset, /* decomp_reset */
- z_decompress, /* decompress */
- z_incomp, /* incomp */
- z_comp_stats, /* decomp_stat */
-};
-
-struct compressor ppp_deflate_draft = {
- CI_DEFLATE_DRAFT, /* compress_proto */
- z_comp_alloc, /* comp_alloc */
- z_comp_free, /* comp_free */
- z_comp_init, /* comp_init */
- z_comp_reset, /* comp_reset */
- z_compress, /* compress */
- z_comp_stats, /* comp_stat */
- z_decomp_alloc, /* decomp_alloc */
- z_decomp_free, /* decomp_free */
- z_decomp_init, /* decomp_init */
- z_decomp_reset, /* decomp_reset */
- z_decompress, /* decompress */
- z_incomp, /* incomp */
- z_comp_stats, /* decomp_stat */
-};
-
-#define DECOMP_CHUNK 512
-
-/*
- * Space allocation and freeing routines for use by zlib routines.
- */
-struct zchunk {
- u_int size;
- u_int guard;
-};
-
-#define GUARD_MAGIC 0x77a6011a
-
-static void *
-z_alloc_init(notused, items, size)
- void *notused;
- u_int items, size;
-{
- struct zchunk *z;
-
- size = items * size + sizeof(struct zchunk);
-#ifdef __osf__
- z = (struct zchunk *) ALLOC_SLEEP(size);
-#else
- z = (struct zchunk *) ALLOC_NOSLEEP(size);
-#endif
- z->size = size;
- z->guard = GUARD_MAGIC;
- return (void *) (z + 1);
-}
-
-static void *
-z_alloc(notused, items, size)
- void *notused;
- u_int items, size;
-{
- struct zchunk *z;
-
- size = items * size + sizeof(struct zchunk);
- z = (struct zchunk *) ALLOC_NOSLEEP(size);
- z->size = size;
- z->guard = GUARD_MAGIC;
- return (void *) (z + 1);
-}
-
-static void
-z_free(notused, ptr)
- void *notused;
- void *ptr;
-{
- struct zchunk *z = ((struct zchunk *) ptr) - 1;
-
- if (z->guard != GUARD_MAGIC) {
- printf("ppp: z_free of corrupted chunk at %x (%x, %x)\n",
- z, z->size, z->guard);
- return;
- }
- FREE(z, z->size);
-}
-
-/*
- * Allocate space for a compressor.
- */
-static void *
-z_comp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- struct deflate_state *state;
- int w_size;
-
- if (opt_len != CILEN_DEFLATE
- || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT)
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return NULL;
- w_size = DEFLATE_SIZE(options[2]);
- /*
- * N.B. the 9 below should be DEFLATE_MIN_SIZE (8), but using
- * 8 will cause kernel crashes because of a bug in zlib.
- */
- if (w_size < 9 || w_size > DEFLATE_MAX_SIZE)
- return NULL;
-
-
-#ifdef __osf__
- state = (struct deflate_state *) ALLOC_SLEEP(sizeof(*state));
-#else
- state = (struct deflate_state *) ALLOC_NOSLEEP(sizeof(*state));
-#endif
-
- if (state == NULL)
- return NULL;
-
- state->strm.next_in = NULL;
- state->strm.zalloc = (alloc_func) z_alloc_init;
- state->strm.zfree = (free_func) z_free;
- if (deflateInit2(&state->strm, Z_DEFAULT_COMPRESSION, DEFLATE_METHOD_VAL,
- -w_size, 8, Z_DEFAULT_STRATEGY) != Z_OK) {
- FREE(state, sizeof(*state));
- return NULL;
- }
-
- state->strm.zalloc = (alloc_func) z_alloc;
- state->w_size = w_size;
- bzero(&state->stats, sizeof(state->stats));
- return (void *) state;
-}
-
-static void
-z_comp_free(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- deflateEnd(&state->strm);
- FREE(state, sizeof(*state));
-}
-
-static int
-z_comp_init(arg, options, opt_len, unit, hdrlen, debug)
- void *arg;
- u_char *options;
- int opt_len, unit, hdrlen, debug;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- if (opt_len < CILEN_DEFLATE
- || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT)
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || DEFLATE_SIZE(options[2]) != state->w_size
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return 0;
-
- state->seqno = 0;
- state->unit = unit;
- state->hdrlen = hdrlen;
- state->debug = debug;
-
- deflateReset(&state->strm);
-
- return 1;
-}
-
-static void
-z_comp_reset(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- state->seqno = 0;
- deflateReset(&state->strm);
-}
-
-static int
-z_compress(arg, mret, mp, orig_len, maxolen)
- void *arg;
- mblk_t **mret; /* compressed packet (out) */
- mblk_t *mp; /* uncompressed packet (in) */
- int orig_len, maxolen;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_char *rptr, *wptr;
- int proto, olen, wspace, r, flush;
- mblk_t *m;
-
- /*
- * Check that the protocol is in the range we handle.
- */
- *mret = NULL;
- rptr = mp->b_rptr;
- if (rptr + PPP_HDRLEN > mp->b_wptr) {
- if (!pullupmsg(mp, PPP_HDRLEN))
- return 0;
- rptr = mp->b_rptr;
- }
- proto = PPP_PROTOCOL(rptr);
- if (proto > 0x3fff || proto == 0xfd || proto == 0xfb)
- return orig_len;
-
- /* Allocate one mblk initially. */
- if (maxolen > orig_len)
- maxolen = orig_len;
- if (maxolen <= PPP_HDRLEN + 2) {
- wspace = 0;
- m = NULL;
- } else {
- wspace = maxolen + state->hdrlen;
- if (wspace > 4096)
- wspace = 4096;
- m = allocb(wspace, BPRI_MED);
- }
- if (m != NULL) {
- *mret = m;
- if (state->hdrlen + PPP_HDRLEN + 2 < wspace) {
- m->b_rptr += state->hdrlen;
- m->b_wptr = m->b_rptr;
- wspace -= state->hdrlen;
- }
- wptr = m->b_wptr;
-
- /*
- * Copy over the PPP header and store the 2-byte sequence number.
- */
- wptr[0] = PPP_ADDRESS(rptr);
- wptr[1] = PPP_CONTROL(rptr);
- wptr[2] = PPP_COMP >> 8;
- wptr[3] = PPP_COMP;
- wptr += PPP_HDRLEN;
- wptr[0] = state->seqno >> 8;
- wptr[1] = state->seqno;
- wptr += 2;
- state->strm.next_out = wptr;
- state->strm.avail_out = wspace - (PPP_HDRLEN + 2);
- } else {
- state->strm.next_out = NULL;
- state->strm.avail_out = 1000000;
- }
- ++state->seqno;
-
- rptr += (proto > 0xff)? 2: 3; /* skip 1st proto byte if 0 */
- state->strm.next_in = rptr;
- state->strm.avail_in = mp->b_wptr - rptr;
- mp = mp->b_cont;
- flush = (mp == NULL)? Z_PACKET_FLUSH: Z_NO_FLUSH;
- olen = 0;
- for (;;) {
- r = deflate(&state->strm, flush);
- if (r != Z_OK) {
- printf("z_compress: deflate returned %d (%s)\n",
- r, (state->strm.msg? state->strm.msg: ""));
- break;
- }
- if (flush != Z_NO_FLUSH && state->strm.avail_out != 0)
- break; /* all done */
- if (state->strm.avail_in == 0 && mp != NULL) {
- state->strm.next_in = mp->b_rptr;
- state->strm.avail_in = mp->b_wptr - mp->b_rptr;
- mp = mp->b_cont;
- if (mp == NULL)
- flush = Z_PACKET_FLUSH;
- }
- if (state->strm.avail_out == 0) {
- if (m != NULL) {
- m->b_wptr += wspace;
- olen += wspace;
- wspace = maxolen - olen;
- if (wspace <= 0) {
- wspace = 0;
- m->b_cont = NULL;
- } else {
- if (wspace < 32)
- wspace = 32;
- else if (wspace > 4096)
- wspace = 4096;
- m->b_cont = allocb(wspace, BPRI_MED);
- }
- m = m->b_cont;
- if (m != NULL) {
- state->strm.next_out = m->b_wptr;
- state->strm.avail_out = wspace;
- }
- }
- if (m == NULL) {
- state->strm.next_out = NULL;
- state->strm.avail_out = 1000000;
- }
- }
- }
- if (m != NULL) {
- m->b_wptr += wspace - state->strm.avail_out;
- olen += wspace - state->strm.avail_out;
- }
-
- /*
- * See if we managed to reduce the size of the packet.
- */
- if (olen < orig_len && m != NULL) {
- state->stats.comp_bytes += olen;
- state->stats.comp_packets++;
- } else {
- if (*mret != NULL) {
- freemsg(*mret);
- *mret = NULL;
- }
- state->stats.inc_bytes += orig_len;
- state->stats.inc_packets++;
- olen = orig_len;
- }
- state->stats.unc_bytes += orig_len;
- state->stats.unc_packets++;
-
- return olen;
-}
-
-static void
-z_comp_stats(arg, stats)
- void *arg;
- struct compstat *stats;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_int out;
-
- *stats = state->stats;
- stats->ratio = stats->unc_bytes;
- out = stats->comp_bytes + stats->unc_bytes;
- if (stats->ratio <= 0x7ffffff)
- stats->ratio <<= 8;
- else
- out >>= 8;
- if (out != 0)
- stats->ratio /= out;
-}
-
-/*
- * Allocate space for a decompressor.
- */
-static void *
-z_decomp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- struct deflate_state *state;
- int w_size;
-
- if (opt_len != CILEN_DEFLATE
- || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT)
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return NULL;
- w_size = DEFLATE_SIZE(options[2]);
- /*
- * N.B. the 9 below should be DEFLATE_MIN_SIZE (8), but using
- * 8 will cause kernel crashes because of a bug in zlib.
- */
- if (w_size < 9 || w_size > DEFLATE_MAX_SIZE)
- return NULL;
-
-#ifdef __osf__
- state = (struct deflate_state *) ALLOC_SLEEP(sizeof(*state));
-#else
- state = (struct deflate_state *) ALLOC_NOSLEEP(sizeof(*state));
-#endif
- if (state == NULL)
- return NULL;
-
- state->strm.next_out = NULL;
- state->strm.zalloc = (alloc_func) z_alloc_init;
- state->strm.zfree = (free_func) z_free;
- if (inflateInit2(&state->strm, -w_size) != Z_OK) {
- FREE(state, sizeof(*state));
- return NULL;
- }
-
- state->strm.zalloc = (alloc_func) z_alloc;
- state->w_size = w_size;
- bzero(&state->stats, sizeof(state->stats));
- return (void *) state;
-}
-
-static void
-z_decomp_free(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- inflateEnd(&state->strm);
- FREE(state, sizeof(*state));
-}
-
-static int
-z_decomp_init(arg, options, opt_len, unit, hdrlen, mru, debug)
- void *arg;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- if (opt_len < CILEN_DEFLATE
- || (options[0] != CI_DEFLATE && options[0] != CI_DEFLATE_DRAFT)
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || DEFLATE_SIZE(options[2]) != state->w_size
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return 0;
-
- state->seqno = 0;
- state->unit = unit;
- state->hdrlen = hdrlen;
- state->debug = debug;
- state->mru = mru;
-
- inflateReset(&state->strm);
-
- return 1;
-}
-
-static void
-z_decomp_reset(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- state->seqno = 0;
- inflateReset(&state->strm);
-}
-
-/*
- * Decompress a Deflate-compressed packet.
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression. For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-static int
-z_decompress(arg, mi, mop)
- void *arg;
- mblk_t *mi, **mop;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- mblk_t *mo, *mo_head;
- u_char *rptr, *wptr;
- int rlen, olen, ospace;
- int seq, i, flush, r, decode_proto;
- u_char hdr[PPP_HDRLEN + DEFLATE_OVHD];
-
- *mop = NULL;
- rptr = mi->b_rptr;
- for (i = 0; i < PPP_HDRLEN + DEFLATE_OVHD; ++i) {
- while (rptr >= mi->b_wptr) {
- mi = mi->b_cont;
- if (mi == NULL)
- return DECOMP_ERROR;
- rptr = mi->b_rptr;
- }
- hdr[i] = *rptr++;
- }
-
- /* Check the sequence number. */
- seq = (hdr[PPP_HDRLEN] << 8) + hdr[PPP_HDRLEN+1];
- if (seq != state->seqno) {
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_decompress%d: bad seq # %d, expected %d\n",
- state->unit, seq, state->seqno);
- return DECOMP_ERROR;
- }
- ++state->seqno;
-
- /* Allocate an output message block. */
- mo = allocb(DECOMP_CHUNK + state->hdrlen, BPRI_MED);
- if (mo == NULL)
- return DECOMP_ERROR;
- mo_head = mo;
- mo->b_cont = NULL;
- mo->b_rptr += state->hdrlen;
- mo->b_wptr = wptr = mo->b_rptr;
- ospace = DECOMP_CHUNK;
- olen = 0;
-
- /*
- * Fill in the first part of the PPP header. The protocol field
- * comes from the decompressed data.
- */
- wptr[0] = PPP_ADDRESS(hdr);
- wptr[1] = PPP_CONTROL(hdr);
- wptr[2] = 0;
-
- /*
- * Set up to call inflate. We set avail_out to 1 initially so we can
- * look at the first byte of the output and decide whether we have
- * a 1-byte or 2-byte protocol field.
- */
- state->strm.next_in = rptr;
- state->strm.avail_in = mi->b_wptr - rptr;
- mi = mi->b_cont;
- flush = (mi == NULL)? Z_PACKET_FLUSH: Z_NO_FLUSH;
- rlen = state->strm.avail_in + PPP_HDRLEN + DEFLATE_OVHD;
- state->strm.next_out = wptr + 3;
- state->strm.avail_out = 1;
- decode_proto = 1;
-
- /*
- * Call inflate, supplying more input or output as needed.
- */
- for (;;) {
- r = inflate(&state->strm, flush);
- if (r != Z_OK) {
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_decompress%d: inflate returned %d (%s)\n",
- state->unit, r, (state->strm.msg? state->strm.msg: ""));
- freemsg(mo_head);
- return DECOMP_FATALERROR;
- }
- if (flush != Z_NO_FLUSH && state->strm.avail_out != 0)
- break; /* all done */
- if (state->strm.avail_in == 0 && mi != NULL) {
- state->strm.next_in = mi->b_rptr;
- state->strm.avail_in = mi->b_wptr - mi->b_rptr;
- rlen += state->strm.avail_in;
- mi = mi->b_cont;
- if (mi == NULL)
- flush = Z_PACKET_FLUSH;
- }
- if (state->strm.avail_out == 0) {
- if (decode_proto) {
- state->strm.avail_out = ospace - PPP_HDRLEN;
- if ((wptr[3] & 1) == 0) {
- /* 2-byte protocol field */
- wptr[2] = wptr[3];
- --state->strm.next_out;
- ++state->strm.avail_out;
- }
- decode_proto = 0;
- } else {
- mo->b_wptr += ospace;
- olen += ospace;
- mo->b_cont = allocb(DECOMP_CHUNK, BPRI_MED);
- mo = mo->b_cont;
- if (mo == NULL) {
- freemsg(mo_head);
- return DECOMP_ERROR;
- }
- state->strm.next_out = mo->b_rptr;
- state->strm.avail_out = ospace = DECOMP_CHUNK;
- }
- }
- }
- if (decode_proto) {
- freemsg(mo_head);
- return DECOMP_ERROR;
- }
- mo->b_wptr += ospace - state->strm.avail_out;
- olen += ospace - state->strm.avail_out;
-
-#if DEFLATE_DEBUG
- if (olen > state->mru + PPP_HDRLEN)
- printf("ppp_deflate%d: exceeded mru (%d > %d)\n",
- state->unit, olen, state->mru + PPP_HDRLEN);
-#endif
-
- state->stats.unc_bytes += olen;
- state->stats.unc_packets++;
- state->stats.comp_bytes += rlen;
- state->stats.comp_packets++;
-
- *mop = mo_head;
- return DECOMP_OK;
-}
-
-/*
- * Incompressible data has arrived - add it to the history.
- */
-static void
-z_incomp(arg, mi)
- void *arg;
- mblk_t *mi;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_char *rptr;
- int rlen, proto, r;
-
- /*
- * Check that the protocol is one we handle.
- */
- rptr = mi->b_rptr;
- if (rptr + PPP_HDRLEN > mi->b_wptr) {
- if (!pullupmsg(mi, PPP_HDRLEN))
- return;
- rptr = mi->b_rptr;
- }
- proto = PPP_PROTOCOL(rptr);
- if (proto > 0x3fff || proto == 0xfd || proto == 0xfb)
- return;
-
- ++state->seqno;
-
- /*
- * Iterate through the message blocks, adding the characters in them
- * to the decompressor's history. For the first block, we start
- * at the either the 1st or 2nd byte of the protocol field,
- * depending on whether the protocol value is compressible.
- */
- rlen = mi->b_wptr - mi->b_rptr;
- state->strm.next_in = rptr + 3;
- state->strm.avail_in = rlen - 3;
- if (proto > 0xff) {
- --state->strm.next_in;
- ++state->strm.avail_in;
- }
- for (;;) {
- r = inflateIncomp(&state->strm);
- if (r != Z_OK) {
- /* gak! */
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_incomp%d: inflateIncomp returned %d (%s)\n",
- state->unit, r, (state->strm.msg? state->strm.msg: ""));
- return;
- }
- mi = mi->b_cont;
- if (mi == NULL)
- break;
- state->strm.next_in = mi->b_rptr;
- state->strm.avail_in = mi->b_wptr - mi->b_rptr;
- rlen += state->strm.avail_in;
- }
-
- /*
- * Update stats.
- */
- state->stats.inc_bytes += rlen;
- state->stats.inc_packets++;
- state->stats.unc_bytes += rlen;
- state->stats.unc_packets++;
-}
-
-#endif /* DO_DEFLATE */
diff --git a/mdk-stage1/ppp/modules/if_ppp.c b/mdk-stage1/ppp/modules/if_ppp.c
deleted file mode 100644
index 14e89eb4a..000000000
--- a/mdk-stage1/ppp/modules/if_ppp.c
+++ /dev/null
@@ -1,865 +0,0 @@
-/*
- * if_ppp.c - a network interface connected to a STREAMS module.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under SunOS 4 and Digital UNIX.
- *
- * This file provides the glue between PPP and IP.
- */
-
-#define INET 1
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <net/netisr.h>
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include <netinet/in.h>
-#include <netinet/in_var.h>
-#ifdef __osf__
-#include <sys/ioctl.h>
-#include <net/if_types.h>
-#else
-#include <sys/sockio.h>
-#endif
-#include "ppp_mod.h"
-
-#include <sys/stream.h>
-
-#ifdef SNIT_SUPPORT
-#include <sys/time.h>
-#include <net/nit_if.h>
-#include <netinet/if_ether.h>
-#endif
-
-#ifdef __osf__
-#define SIOCSIFMTU SIOCSIPMTU
-#define SIOCGIFMTU SIOCRIPMTU
-#define IFA_ADDR(ifa) (*(ifa)->ifa_addr)
-#else
-#define IFA_ADDR(ifa) ((ifa)->ifa_addr)
-#endif
-
-#define ifr_mtu ifr_metric
-
-static int if_ppp_open __P((queue_t *, int, int, int));
-static int if_ppp_close __P((queue_t *, int));
-static int if_ppp_wput __P((queue_t *, mblk_t *));
-static int if_ppp_rput __P((queue_t *, mblk_t *));
-
-#define PPP_IF_ID 0x8021
-static struct module_info minfo = {
- PPP_IF_ID, "if_ppp", 0, INFPSZ, 4096, 128
-};
-
-static struct qinit rinit = {
- if_ppp_rput, NULL, if_ppp_open, if_ppp_close, NULL, &minfo, NULL
-};
-
-static struct qinit winit = {
- if_ppp_wput, NULL, NULL, NULL, NULL, &minfo, NULL
-};
-
-struct streamtab if_pppinfo = {
- &rinit, &winit, NULL, NULL
-};
-
-typedef struct if_ppp_state {
- int unit;
- queue_t *q;
- int flags;
-} if_ppp_t;
-
-/* Values for flags */
-#define DBGLOG 1
-
-static int if_ppp_count; /* Number of currently-active streams */
-
-static int ppp_nalloc; /* Number of elements of ifs and states */
-static struct ifnet **ifs; /* Array of pointers to interface structs */
-static if_ppp_t **states; /* Array of pointers to state structs */
-
-static int if_ppp_output __P((struct ifnet *, struct mbuf *,
- struct sockaddr *));
-static int if_ppp_ioctl __P((struct ifnet *, u_int, caddr_t));
-static struct mbuf *make_mbufs __P((mblk_t *, int));
-static mblk_t *make_message __P((struct mbuf *, int));
-
-#ifdef SNIT_SUPPORT
-/* Fake ether header for SNIT */
-static struct ether_header snit_ehdr = {{0}, {0}, ETHERTYPE_IP};
-#endif
-
-#ifndef __osf__
-static void ppp_if_detach __P((struct ifnet *));
-
-/*
- * Detach all the interfaces before unloading.
- * Not sure this works.
- */
-int
-if_ppp_unload()
-{
- int i;
-
- if (if_ppp_count > 0)
- return EBUSY;
- for (i = 0; i < ppp_nalloc; ++i)
- if (ifs[i] != 0)
- ppp_if_detach(ifs[i]);
- if (ifs) {
- FREE(ifs, ppp_nalloc * sizeof (struct ifnet *));
- FREE(states, ppp_nalloc * sizeof (struct if_ppp_t *));
- }
- ppp_nalloc = 0;
- return 0;
-}
-#endif /* __osf__ */
-
-/*
- * STREAMS module entry points.
- */
-static int
-if_ppp_open(q, dev, flag, sflag)
- queue_t *q;
- int dev;
- int flag, sflag;
-{
- if_ppp_t *sp;
-
- if (q->q_ptr == 0) {
- sp = (if_ppp_t *) ALLOC_SLEEP(sizeof (if_ppp_t));
- if (sp == 0)
- return OPENFAIL;
- bzero(sp, sizeof (if_ppp_t));
- q->q_ptr = (caddr_t) sp;
- WR(q)->q_ptr = (caddr_t) sp;
- sp->unit = -1; /* no interface unit attached at present */
- sp->q = WR(q);
- sp->flags = 0;
- ++if_ppp_count;
- }
- return 0;
-}
-
-static int
-if_ppp_close(q, flag)
- queue_t *q;
- int flag;
-{
- if_ppp_t *sp;
- struct ifnet *ifp;
-
- sp = (if_ppp_t *) q->q_ptr;
- if (sp != 0) {
- if (sp->flags & DBGLOG)
- printf("if_ppp closed, q=%x sp=%x\n", q, sp);
- if (sp->unit >= 0) {
- if (sp->unit < ppp_nalloc) {
- states[sp->unit] = 0;
- ifp = ifs[sp->unit];
- if (ifp != 0)
- ifp->if_flags &= ~(IFF_UP | IFF_RUNNING);
-#ifdef DEBUG
- } else {
- printf("if_ppp: unit %d nonexistent!\n", sp->unit);
-#endif
- }
- }
- FREE(sp, sizeof (if_ppp_t));
- --if_ppp_count;
- }
- return 0;
-}
-
-static int
-if_ppp_wput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- if_ppp_t *sp;
- struct iocblk *iop;
- int error, unit;
- struct ifnet *ifp;
-
- sp = (if_ppp_t *) q->q_ptr;
- switch (mp->b_datap->db_type) {
- case M_DATA:
- /*
- * Now why would we be getting data coming in here??
- */
- if (sp->flags & DBGLOG)
- printf("if_ppp: got M_DATA len=%d\n", msgdsize(mp));
- freemsg(mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
-
- if (sp->flags & DBGLOG)
- printf("if_ppp: got ioctl cmd=%x count=%d\n",
- iop->ioc_cmd, iop->ioc_count);
-
- switch (iop->ioc_cmd) {
- case PPPIO_NEWPPA: /* well almost */
- if (iop->ioc_count != sizeof(int) || sp->unit >= 0)
- break;
- if ((error = NOTSUSER()) != 0)
- break;
- unit = *(int *)mp->b_cont->b_rptr;
-
- /* Check that this unit isn't already in use */
- if (unit < ppp_nalloc && states[unit] != 0) {
- error = EADDRINUSE;
- break;
- }
-
- /* Extend ifs and states arrays if necessary. */
- error = ENOSR;
- if (unit >= ppp_nalloc) {
- int newn;
- struct ifnet **newifs;
- if_ppp_t **newstates;
-
- newn = unit + 4;
- if (sp->flags & DBGLOG)
- printf("if_ppp: extending ifs to %d\n", newn);
- newifs = (struct ifnet **)
- ALLOC_NOSLEEP(newn * sizeof (struct ifnet *));
- if (newifs == 0)
- break;
- bzero(newifs, newn * sizeof (struct ifnet *));
- newstates = (if_ppp_t **)
- ALLOC_NOSLEEP(newn * sizeof (struct if_ppp_t *));
- if (newstates == 0) {
- FREE(newifs, newn * sizeof (struct ifnet *));
- break;
- }
- bzero(newstates, newn * sizeof (struct if_ppp_t *));
- bcopy(ifs, newifs, ppp_nalloc * sizeof(struct ifnet *));
- bcopy(states, newstates, ppp_nalloc * sizeof(if_ppp_t *));
- if (ifs) {
- FREE(ifs, ppp_nalloc * sizeof(struct ifnet *));
- FREE(states, ppp_nalloc * sizeof(if_ppp_t *));
- }
- ifs = newifs;
- states = newstates;
- ppp_nalloc = newn;
- }
-
- /* Allocate a new ifnet struct if necessary. */
- ifp = ifs[unit];
- if (ifp == 0) {
- ifp = (struct ifnet *) ALLOC_NOSLEEP(sizeof (struct ifnet));
- if (ifp == 0)
- break;
- bzero(ifp, sizeof (struct ifnet));
- ifs[unit] = ifp;
- ifp->if_name = "ppp";
- ifp->if_unit = unit;
- ifp->if_mtu = PPP_MTU;
- ifp->if_flags = IFF_POINTOPOINT | IFF_RUNNING;
-#ifndef __osf__
-#ifdef IFF_MULTICAST
- ifp->if_flags |= IFF_MULTICAST;
-#endif
-#endif /* __osf__ */
- ifp->if_output = if_ppp_output;
-#ifdef __osf__
- ifp->if_version = "Point-to-Point Protocol, version 2.3.11";
- ifp->if_mediamtu = PPP_MTU;
- ifp->if_type = IFT_PPP;
- ifp->if_hdrlen = PPP_HDRLEN;
- ifp->if_addrlen = 0;
- ifp->if_flags |= IFF_NOARP | IFF_SIMPLEX | IFF_NOTRAILERS;
-#ifdef IFF_VAR_MTU
- ifp->if_flags |= IFF_VAR_MTU;
-#endif
-#ifdef NETMASTERCPU
- ifp->if_affinity = NETMASTERCPU;
-#endif
-#endif
- ifp->if_ioctl = if_ppp_ioctl;
- ifp->if_snd.ifq_maxlen = IFQ_MAXLEN;
- if_attach(ifp);
- if (sp->flags & DBGLOG)
- printf("if_ppp: created unit %d\n", unit);
- } else {
- ifp->if_mtu = PPP_MTU;
- ifp->if_flags |= IFF_RUNNING;
- }
-
- states[unit] = sp;
- sp->unit = unit;
-
- error = 0;
- iop->ioc_count = 0;
- if (sp->flags & DBGLOG)
- printf("if_ppp: attached unit %d, sp=%x q=%x\n", unit,
- sp, sp->q);
- break;
-
- case PPPIO_DEBUG:
- error = -1;
- if (iop->ioc_count == sizeof(int)) {
- if (*(int *)mp->b_cont->b_rptr == PPPDBG_LOG + PPPDBG_IF) {
- printf("if_ppp: debug log enabled, q=%x sp=%x\n", q, sp);
- sp->flags |= DBGLOG;
- error = 0;
- iop->ioc_count = 0;
- }
- }
- break;
-
- default:
- error = -1;
- break;
- }
-
- if (sp->flags & DBGLOG)
- printf("if_ppp: ioctl result %d\n", error);
- if (error < 0)
- putnext(q, mp);
- else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
- mp->b_datap->db_type = M_IOCNAK;
- iop->ioc_count = 0;
- iop->ioc_error = error;
- qreply(q, mp);
- }
- break;
-
- default:
- putnext(q, mp);
- }
- return 0;
-}
-
-static int
-if_ppp_rput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- if_ppp_t *sp;
- int proto, s;
- struct mbuf *mb;
- struct ifqueue *inq;
- struct ifnet *ifp;
- int len;
-
- sp = (if_ppp_t *) q->q_ptr;
- switch (mp->b_datap->db_type) {
- case M_DATA:
- /*
- * Convert the message into an mbuf chain
- * and inject it into the network code.
- */
- if (sp->flags & DBGLOG)
- printf("if_ppp: rput pkt len %d data %x %x %x %x %x %x %x %x\n",
- msgdsize(mp), mp->b_rptr[0], mp->b_rptr[1], mp->b_rptr[2],
- mp->b_rptr[3], mp->b_rptr[4], mp->b_rptr[5], mp->b_rptr[6],
- mp->b_rptr[7]);
-
- if (sp->unit < 0) {
- freemsg(mp);
- break;
- }
- if (sp->unit >= ppp_nalloc || (ifp = ifs[sp->unit]) == 0) {
-#ifdef DEBUG
- printf("if_ppp: no unit %d!\n", sp->unit);
-#endif
- freemsg(mp);
- break;
- }
-
- if ((ifp->if_flags & IFF_UP) == 0) {
- freemsg(mp);
- break;
- }
- ++ifp->if_ipackets;
-
- proto = PPP_PROTOCOL(mp->b_rptr);
- adjmsg(mp, PPP_HDRLEN);
- len = msgdsize(mp);
- mb = make_mbufs(mp, sizeof(struct ifnet *));
- freemsg(mp);
- if (mb == NULL) {
- if (sp->flags & DBGLOG)
- printf("if_ppp%d: make_mbufs failed\n", ifp->if_unit);
- ++ifp->if_ierrors;
- break;
- }
-
-#ifdef SNIT_SUPPORT
- if (proto == PPP_IP && (ifp->if_flags & IFF_PROMISC)) {
- struct nit_if nif;
-
- nif.nif_header = (caddr_t) &snit_ehdr;
- nif.nif_hdrlen = sizeof(snit_ehdr);
- nif.nif_bodylen = len;
- nif.nif_promisc = 0;
- snit_intr(ifp, mb, &nif);
- }
-#endif
-
-/*
- * For Digital UNIX, there's space set aside in the header mbuf
- * for the interface info.
- *
- * For Sun it's smuggled around via a pointer at the front of the mbuf.
- */
-#ifdef __osf__
- mb->m_pkthdr.rcvif = ifp;
- mb->m_pkthdr.len = len;
-#else
- mb->m_off -= sizeof(struct ifnet *);
- mb->m_len += sizeof(struct ifnet *);
- *mtod(mb, struct ifnet **) = ifp;
-#endif
-
- inq = 0;
- switch (proto) {
- case PPP_IP:
- inq = &ipintrq;
- schednetisr(NETISR_IP);
- }
-
- if (inq != 0) {
- s = splhigh();
- if (IF_QFULL(inq)) {
- IF_DROP(inq);
- ++ifp->if_ierrors;
- if (sp->flags & DBGLOG)
- printf("if_ppp: inq full, proto=%x\n", proto);
- m_freem(mb);
- } else {
- IF_ENQUEUE(inq, mb);
- }
- splx(s);
- } else {
- if (sp->flags & DBGLOG)
- printf("if_ppp%d: proto=%x?\n", ifp->if_unit, proto);
- ++ifp->if_ierrors;
- m_freem(mb);
- }
- break;
-
- default:
- putnext(q, mp);
- }
- return 0;
-}
-
-/*
- * Network code wants to output a packet.
- * Turn it into a STREAMS message and send it down.
- */
-static int
-if_ppp_output(ifp, m0, dst)
- struct ifnet *ifp;
- struct mbuf *m0;
- struct sockaddr *dst;
-{
- mblk_t *mp;
- int proto, s;
- if_ppp_t *sp;
- u_char *p;
-
- if ((ifp->if_flags & IFF_UP) == 0) {
- m_freem(m0);
- return ENETDOWN;
- }
-
- if ((unsigned)ifp->if_unit >= ppp_nalloc) {
-#ifdef DEBUG
- printf("if_ppp_output: unit %d?\n", ifp->if_unit);
-#endif
- m_freem(m0);
- return EINVAL;
- }
- sp = states[ifp->if_unit];
- if (sp == 0) {
-#ifdef DEBUG
- printf("if_ppp_output: no queue?\n");
-#endif
- m_freem(m0);
- return ENETDOWN;
- }
-
- if (sp->flags & DBGLOG) {
- p = mtod(m0, u_char *);
- printf("if_ppp_output%d: af=%d data=%x %x %x %x %x %x %x %x q=%x\n",
- ifp->if_unit, dst->sa_family, p[0], p[1], p[2], p[3], p[4],
- p[5], p[6], p[7], sp->q);
- }
-
- switch (dst->sa_family) {
- case AF_INET:
- proto = PPP_IP;
-#ifdef SNIT_SUPPORT
- if (ifp->if_flags & IFF_PROMISC) {
- struct nit_if nif;
- struct mbuf *m;
- int len;
-
- for (len = 0, m = m0; m != NULL; m = m->m_next)
- len += m->m_len;
- nif.nif_header = (caddr_t) &snit_ehdr;
- nif.nif_hdrlen = sizeof(snit_ehdr);
- nif.nif_bodylen = len;
- nif.nif_promisc = 0;
- snit_intr(ifp, m0, &nif);
- }
-#endif
- break;
-
- default:
- m_freem(m0);
- return EAFNOSUPPORT;
- }
-
- ++ifp->if_opackets;
- mp = make_message(m0, PPP_HDRLEN);
- m_freem(m0);
- if (mp == 0) {
- ++ifp->if_oerrors;
- return ENOBUFS;
- }
- mp->b_rptr -= PPP_HDRLEN;
- mp->b_rptr[0] = PPP_ALLSTATIONS;
- mp->b_rptr[1] = PPP_UI;
- mp->b_rptr[2] = proto >> 8;
- mp->b_rptr[3] = proto;
-
- s = splstr();
- if (sp->flags & DBGLOG)
- printf("if_ppp: putnext(%x, %x), r=%x w=%x p=%x\n",
- sp->q, mp, mp->b_rptr, mp->b_wptr, proto);
- putnext(sp->q, mp);
- splx(s);
-
- return 0;
-}
-
-/*
- * Socket ioctl routine for ppp interfaces.
- */
-static int
-if_ppp_ioctl(ifp, cmd, data)
- struct ifnet *ifp;
- u_int cmd;
- caddr_t data;
-{
- int s, error;
- struct ifreq *ifr = (struct ifreq *) data;
- struct ifaddr *ifa = (struct ifaddr *) data;
- u_short mtu;
-
- error = 0;
- s = splimp();
- switch (cmd) {
- case SIOCSIFFLAGS:
- if ((ifp->if_flags & IFF_RUNNING) == 0)
- ifp->if_flags &= ~IFF_UP;
- break;
-
- case SIOCSIFADDR:
- if (IFA_ADDR(ifa).sa_family != AF_INET)
- error = EAFNOSUPPORT;
- break;
-
- case SIOCSIFDSTADDR:
- if (IFA_ADDR(ifa).sa_family != AF_INET)
- error = EAFNOSUPPORT;
- break;
-
- case SIOCSIFMTU:
- if ((error = NOTSUSER()) != 0)
- break;
-#ifdef __osf__
- /* this hack is necessary because ifioctl checks ifr_data
- * in 4.0 and 5.0, but ifr_data and ifr_metric overlay each
- * other in the definition of struct ifreq so pppd can't set both.
- */
- bcopy(ifr->ifr_data, &mtu, sizeof (u_short));
- ifr->ifr_mtu = mtu;
-#endif
-
- if (ifr->ifr_mtu < PPP_MINMTU || ifr->ifr_mtu > PPP_MAXMTU) {
- error = EINVAL;
- break;
- }
- ifp->if_mtu = ifr->ifr_mtu;
- break;
-
- case SIOCGIFMTU:
- ifr->ifr_mtu = ifp->if_mtu;
- break;
-
- case SIOCADDMULTI:
- case SIOCDELMULTI:
- switch(ifr->ifr_addr.sa_family) {
- case AF_INET:
- break;
- default:
- error = EAFNOSUPPORT;
- break;
- }
- break;
-
- default:
- error = EINVAL;
- }
- splx(s);
- return (error);
-}
-
-/*
- * Turn a STREAMS message into an mbuf chain.
- */
-static struct mbuf *
-make_mbufs(mp, off)
- mblk_t *mp;
- int off;
-{
- struct mbuf *head, **prevp, *m;
- int len, space, n;
- unsigned char *cp, *dp;
-
- len = msgdsize(mp);
- if (len == 0)
- return 0;
- prevp = &head;
- space = 0;
- cp = mp->b_rptr;
-#ifdef __osf__
- MGETHDR(m, M_DONTWAIT, MT_DATA);
- m->m_len = 0;
- space = MHLEN;
- *prevp = m;
- prevp = &m->m_next;
- dp = mtod(m, unsigned char *);
- len -= space;
- off = 0;
-#endif
- for (;;) {
- while (cp >= mp->b_wptr) {
- mp = mp->b_cont;
- if (mp == 0) {
- *prevp = 0;
- return head;
- }
- cp = mp->b_rptr;
- }
- n = mp->b_wptr - cp;
- if (space == 0) {
- MGET(m, M_DONTWAIT, MT_DATA);
- *prevp = m;
- if (m == 0) {
- if (head != 0)
- m_freem(head);
- return 0;
- }
- if (len + off > 2 * MLEN) {
-#ifdef __osf__
- MCLGET(m, M_DONTWAIT);
-#else
- MCLGET(m);
-#endif
- }
-#ifdef __osf__
- space = ((m->m_flags & M_EXT) ? MCLBYTES : MLEN);
-#else
- space = (m->m_off > MMAXOFF? MCLBYTES: MLEN) - off;
- m->m_off += off;
-#endif
- m->m_len = 0;
- len -= space;
- dp = mtod(m, unsigned char *);
- off = 0;
- prevp = &m->m_next;
- }
- if (n > space)
- n = space;
- bcopy(cp, dp, n);
- cp += n;
- dp += n;
- space -= n;
- m->m_len += n;
- }
-}
-
-/*
- * Turn an mbuf chain into a STREAMS message.
- */
-#define ALLOCB_MAX 4096
-
-static mblk_t *
-make_message(m, off)
- struct mbuf *m;
- int off;
-{
- mblk_t *head, **prevp, *mp;
- int len, space, n, nb;
- unsigned char *cp, *dp;
- struct mbuf *nm;
-
- len = 0;
- for (nm = m; nm != 0; nm = nm->m_next)
- len += nm->m_len;
- prevp = &head;
- space = 0;
- cp = mtod(m, unsigned char *);
- nb = m->m_len;
- for (;;) {
- while (nb <= 0) {
- m = m->m_next;
- if (m == 0) {
- *prevp = 0;
- return head;
- }
- cp = mtod(m, unsigned char *);
- nb = m->m_len;
- }
- if (space == 0) {
- space = len + off;
- if (space > ALLOCB_MAX)
- space = ALLOCB_MAX;
- mp = allocb(space, BPRI_LO);
- *prevp = mp;
- if (mp == 0) {
- if (head != 0)
- freemsg(head);
- return 0;
- }
- dp = mp->b_rptr += off;
- space -= off;
- len -= space;
- off = 0;
- prevp = &mp->b_cont;
- }
- n = nb < space? nb: space;
- bcopy(cp, dp, n);
- cp += n;
- dp += n;
- nb -= n;
- space -= n;
- mp->b_wptr = dp;
- }
-}
-
-/*
- * Digital UNIX doesn't allow for removing ifnet structures
- * from the list. But then we're not using this as a loadable
- * module anyway, so that's OK.
- *
- * Under SunOS, this should allow the module to be unloaded.
- * Unfortunately, it doesn't seem to detach all the references,
- * so your system may well crash after you unload this module :-(
- */
-#ifndef __osf__
-
-/*
- * Remove an interface from the system.
- * This routine contains magic.
- */
-#include <net/route.h>
-#include <netinet/in_pcb.h>
-#include <netinet/ip_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcp_timer.h>
-#include <netinet/tcp_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-
-static void
-ppp_if_detach(ifp)
- struct ifnet *ifp;
-{
- int s;
- struct inpcb *pcb;
- struct ifaddr *ifa;
- struct in_ifaddr **inap;
- struct ifnet **ifpp;
-
- s = splhigh();
-
- /*
- * Clear the interface from any routes currently cached in
- * TCP or UDP protocol control blocks.
- */
- for (pcb = tcb.inp_next; pcb != &tcb; pcb = pcb->inp_next)
- if (pcb->inp_route.ro_rt && pcb->inp_route.ro_rt->rt_ifp == ifp)
- in_losing(pcb);
- for (pcb = udb.inp_next; pcb != &udb; pcb = pcb->inp_next)
- if (pcb->inp_route.ro_rt && pcb->inp_route.ro_rt->rt_ifp == ifp)
- in_losing(pcb);
-
- /*
- * Delete routes through all addresses of the interface.
- */
- for (ifa = ifp->if_addrlist; ifa != 0; ifa = ifa->ifa_next) {
- rtinit(ifa, ifa, SIOCDELRT, RTF_HOST);
- rtinit(ifa, ifa, SIOCDELRT, 0);
- }
-
- /*
- * Unlink the interface's address(es) from the in_ifaddr list.
- */
- for (inap = &in_ifaddr; *inap != 0; ) {
- if ((*inap)->ia_ifa.ifa_ifp == ifp)
- *inap = (*inap)->ia_next;
- else
- inap = &(*inap)->ia_next;
- }
-
- /*
- * Delete the interface from the ifnet list.
- */
- for (ifpp = &ifnet; (*ifpp) != 0; ) {
- if (*ifpp == ifp)
- break;
- ifpp = &(*ifpp)->if_next;
- }
- if (*ifpp == 0)
- printf("couldn't find interface ppp%d in ifnet list\n", ifp->if_unit);
- else
- *ifpp = ifp->if_next;
-
- splx(s);
-}
-
-#endif /* __osf__ */
diff --git a/mdk-stage1/ppp/modules/ppp.c b/mdk-stage1/ppp/modules/ppp.c
deleted file mode 100644
index 44bf08dff..000000000
--- a/mdk-stage1/ppp/modules/ppp.c
+++ /dev/null
@@ -1,2486 +0,0 @@
-/*
- * ppp.c - STREAMS multiplexing pseudo-device driver for PPP.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2, SVR4, SunOS 4, and Digital UNIX.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/errno.h>
-#ifdef __osf__
-#include <sys/ioctl.h>
-#include <sys/cmn_err.h>
-#define queclass(mp) ((mp)->b_band & QPCTL)
-#else
-#include <sys/ioccom.h>
-#endif
-#include <sys/time.h>
-#ifdef SVR4
-#include <sys/cmn_err.h>
-#include <sys/conf.h>
-#include <sys/dlpi.h>
-#include <sys/ddi.h>
-#ifdef SOL2
-#include <sys/ksynch.h>
-#include <sys/kstat.h>
-#include <sys/sunddi.h>
-#include <sys/ethernet.h>
-#else
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <net/if.h>
-#include <netinet/in.h>
-#endif /* SOL2 */
-#else /* not SVR4 */
-#include <sys/user.h>
-#endif /* SVR4 */
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-/*
- * Modifications marked with #ifdef PRIOQ are for priority queueing of
- * interactive traffic, and are due to Marko Zec <zec@japa.tel.fer.hr>.
- */
-#ifdef PRIOQ
-#endif /* PRIOQ */
-
-#include <netinet/in.h> /* leave this outside of PRIOQ for htons */
-
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-
-/*
- * The IP module may use this SAP value for IP packets.
- */
-#ifndef ETHERTYPE_IP
-#define ETHERTYPE_IP 0x800
-#endif
-
-#if !defined(ETHERTYPE_IPV6)
-#define ETHERTYPE_IPV6 0x86dd
-#endif /* !defined(ETHERTYPE_IPV6) */
-
-#if !defined(ETHERTYPE_ALLSAP) && defined(SOL2)
-#define ETHERTYPE_ALLSAP 0
-#endif /* !defined(ETHERTYPE_ALLSAP) && defined(SOL2) */
-
-#if !defined(PPP_ALLSAP) && defined(SOL2)
-#define PPP_ALLSAP PPP_ALLSTATIONS
-#endif /* !defined(PPP_ALLSAP) && defined(SOL2) */
-
-extern time_t time;
-
-#ifdef SOL2
-/*
- * We use this reader-writer lock to ensure that the lower streams
- * stay connected to the upper streams while the lower-side put and
- * service procedures are running. Essentially it is an existence
- * lock for the upper stream associated with each lower stream.
- */
-krwlock_t ppp_lower_lock;
-#define LOCK_LOWER_W rw_enter(&ppp_lower_lock, RW_WRITER)
-#define LOCK_LOWER_R rw_enter(&ppp_lower_lock, RW_READER)
-#define TRYLOCK_LOWER_R rw_tryenter(&ppp_lower_lock, RW_READER)
-#define UNLOCK_LOWER rw_exit(&ppp_lower_lock)
-
-#define MT_ENTER(x) mutex_enter(x)
-#define MT_EXIT(x) mutex_exit(x)
-
-/*
- * Notes on multithreaded implementation for Solaris 2:
- *
- * We use an inner perimeter around each queue pair and an outer
- * perimeter around the whole driver. The inner perimeter is
- * entered exclusively for all entry points (open, close, put,
- * service). The outer perimeter is entered exclusively for open
- * and close and shared for put and service. This is all done for
- * us by the streams framework.
- *
- * I used to think that the perimeters were entered for the lower
- * streams' put and service routines as well as for the upper streams'.
- * Because of problems experienced by people, and after reading the
- * documentation more closely, I now don't think that is true. So we
- * now use ppp_lower_lock to give us an existence guarantee on the
- * upper stream controlling each lower stream.
- *
- * Shared entry to the outer perimeter protects the existence of all
- * the upper streams and their upperstr_t structures, and guarantees
- * that the following fields of any upperstr_t won't change:
- * nextmn, next, nextppa. It guarantees that the lowerq field of an
- * upperstr_t won't go from non-zero to zero, that the global `ppas'
- * won't change and that the no lower stream will get unlinked.
- *
- * Shared (reader) access to ppa_lower_lock guarantees that no lower
- * stream will be unlinked and that the lowerq field of all upperstr_t
- * structures won't change.
- */
-
-#else /* SOL2 */
-#define LOCK_LOWER_W 0
-#define LOCK_LOWER_R 0
-#define TRYLOCK_LOWER_R 1
-#define UNLOCK_LOWER 0
-#define MT_ENTER(x) 0
-#define MT_EXIT(x) 0
-
-#endif /* SOL2 */
-
-/*
- * Private information; one per upper stream.
- */
-typedef struct upperstr {
- minor_t mn; /* minor device number */
- struct upperstr *nextmn; /* next minor device */
- queue_t *q; /* read q associated with this upper stream */
- int flags; /* flag bits, see below */
- int state; /* current DLPI state */
- int sap; /* service access point */
- int req_sap; /* which SAP the DLPI client requested */
- struct upperstr *ppa; /* control stream for our ppa */
- struct upperstr *next; /* next stream for this ppa */
- uint ioc_id; /* last ioctl ID for this stream */
- enum NPmode npmode; /* what to do with packets on this SAP */
- unsigned char rblocked; /* flow control has blocked upper read strm */
- /* N.B. rblocked is only changed by control stream's put/srv procs */
- /*
- * There is exactly one control stream for each PPA.
- * The following fields are only used for control streams.
- */
- int ppa_id;
- queue_t *lowerq; /* write queue attached below this PPA */
- struct upperstr *nextppa; /* next control stream */
- int mru;
- int mtu;
- struct pppstat stats; /* statistics */
- time_t last_sent; /* time last NP packet sent */
- time_t last_recv; /* time last NP packet rcvd */
-#ifdef SOL2
- kmutex_t stats_lock; /* lock for stats updates */
- kstat_t *kstats; /* stats for netstat */
-#endif /* SOL2 */
-#ifdef LACHTCP
- int ifflags;
- char ifname[IFNAMSIZ];
- struct ifstats ifstats;
-#endif /* LACHTCP */
-} upperstr_t;
-
-/* Values for flags */
-#define US_PRIV 1 /* stream was opened by superuser */
-#define US_CONTROL 2 /* stream is a control stream */
-#define US_BLOCKED 4 /* flow ctrl has blocked lower write stream */
-#define US_LASTMOD 8 /* no PPP modules below us */
-#define US_DBGLOG 0x10 /* log various occurrences */
-#define US_RBLOCKED 0x20 /* flow ctrl has blocked upper read stream */
-
-#if defined(SOL2)
-#if DL_CURRENT_VERSION >= 2
-#define US_PROMISC 0x40 /* stream is promiscuous */
-#endif /* DL_CURRENT_VERSION >= 2 */
-#define US_RAWDATA 0x80 /* raw M_DATA, no DLPI header */
-#endif /* defined(SOL2) */
-
-#ifdef PRIOQ
-static u_char max_band=0;
-static u_char def_band=0;
-
-#define IPPORT_DEFAULT 65535
-
-/*
- * Port priority table
- * Highest priority ports are listed first, lowest are listed last.
- * ICMP & packets using unlisted ports will be treated as "default".
- * If IPPORT_DEFAULT is not listed here, "default" packets will be
- * assigned lowest priority.
- * Each line should be terminated with "0".
- * Line containing only "0" marks the end of the list.
- */
-
-static u_short prioq_table[]= {
- 113, 53, 0,
- 22, 23, 513, 517, 518, 0,
- 514, 21, 79, 111, 0,
- 25, 109, 110, 0,
- IPPORT_DEFAULT, 0,
- 20, 70, 80, 8001, 8008, 8080, 0, /* 8001,8008,8080 - common proxy ports */
-0 };
-
-#endif /* PRIOQ */
-
-
-static upperstr_t *minor_devs = NULL;
-static upperstr_t *ppas = NULL;
-
-#ifdef SVR4
-static int pppopen __P((queue_t *, dev_t *, int, int, cred_t *));
-static int pppclose __P((queue_t *, int, cred_t *));
-#else
-static int pppopen __P((queue_t *, int, int, int));
-static int pppclose __P((queue_t *, int));
-#endif /* SVR4 */
-static int pppurput __P((queue_t *, mblk_t *));
-static int pppuwput __P((queue_t *, mblk_t *));
-static int pppursrv __P((queue_t *));
-static int pppuwsrv __P((queue_t *));
-static int ppplrput __P((queue_t *, mblk_t *));
-static int ppplwput __P((queue_t *, mblk_t *));
-static int ppplrsrv __P((queue_t *));
-static int ppplwsrv __P((queue_t *));
-#ifndef NO_DLPI
-static void dlpi_request __P((queue_t *, mblk_t *, upperstr_t *));
-static void dlpi_error __P((queue_t *, upperstr_t *, int, int, int));
-static void dlpi_ok __P((queue_t *, int));
-#endif
-static int send_data __P((mblk_t *, upperstr_t *));
-static void new_ppa __P((queue_t *, mblk_t *));
-static void attach_ppa __P((queue_t *, mblk_t *));
-static void detach_ppa __P((queue_t *, mblk_t *));
-static void detach_lower __P((queue_t *, mblk_t *));
-static void debug_dump __P((queue_t *, mblk_t *));
-static upperstr_t *find_dest __P((upperstr_t *, int));
-#if defined(SOL2)
-static upperstr_t *find_promisc __P((upperstr_t *, int));
-static mblk_t *prepend_ether __P((upperstr_t *, mblk_t *, int));
-static mblk_t *prepend_udind __P((upperstr_t *, mblk_t *, int));
-static void promisc_sendup __P((upperstr_t *, mblk_t *, int, int));
-#endif /* defined(SOL2) */
-static int putctl2 __P((queue_t *, int, int, int));
-static int putctl4 __P((queue_t *, int, int, int));
-static int pass_packet __P((upperstr_t *ppa, mblk_t *mp, int outbound));
-#ifdef FILTER_PACKETS
-static int ip_hard_filter __P((upperstr_t *ppa, mblk_t *mp, int outbound));
-#endif /* FILTER_PACKETS */
-
-#define PPP_ID 0xb1a6
-static struct module_info ppp_info = {
-#ifdef PRIOQ
- PPP_ID, "ppp", 0, 512, 512, 384
-#else
- PPP_ID, "ppp", 0, 512, 512, 128
-#endif /* PRIOQ */
-};
-
-static struct qinit pppurint = {
- pppurput, pppursrv, pppopen, pppclose, NULL, &ppp_info, NULL
-};
-
-static struct qinit pppuwint = {
- pppuwput, pppuwsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-static struct qinit ppplrint = {
- ppplrput, ppplrsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-static struct qinit ppplwint = {
- ppplwput, ppplwsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-#ifdef LACHTCP
-extern struct ifstats *ifstats;
-int pppdevflag = 0;
-#endif
-
-struct streamtab pppinfo = {
- &pppurint, &pppuwint,
- &ppplrint, &ppplwint
-};
-
-int ppp_count;
-
-/*
- * How we maintain statistics.
- */
-#ifdef SOL2
-#define INCR_IPACKETS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[0].value.ul++; \
- }
-#define INCR_IERRORS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[1].value.ul++; \
- }
-#define INCR_OPACKETS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[2].value.ul++; \
- }
-#define INCR_OERRORS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[3].value.ul++; \
- }
-#endif
-
-#ifdef LACHTCP
-#define INCR_IPACKETS(ppa) ppa->ifstats.ifs_ipackets++;
-#define INCR_IERRORS(ppa) ppa->ifstats.ifs_ierrors++;
-#define INCR_OPACKETS(ppa) ppa->ifstats.ifs_opackets++;
-#define INCR_OERRORS(ppa) ppa->ifstats.ifs_oerrors++;
-#endif
-
-/*
- * STREAMS driver entry points.
- */
-static int
-#ifdef SVR4
-pppopen(q, devp, oflag, sflag, credp)
- queue_t *q;
- dev_t *devp;
- int oflag, sflag;
- cred_t *credp;
-#else
-pppopen(q, dev, oflag, sflag)
- queue_t *q;
- int dev; /* really dev_t */
- int oflag, sflag;
-#endif
-{
- upperstr_t *up;
- upperstr_t **prevp;
- minor_t mn;
-#ifdef PRIOQ
- u_short *ptr;
- u_char new_band;
-#endif /* PRIOQ */
-
- if (q->q_ptr)
- DRV_OPEN_OK(dev); /* device is already open */
-
-#ifdef PRIOQ
- /* Calculate max_bband & def_band from definitions in prioq.h
- This colud be done at some more approtiate time (less often)
- but this way it works well so I'll just leave it here */
-
- max_band = 1;
- def_band = 0;
- ptr = prioq_table;
- while (*ptr) {
- new_band = 1;
- while (*ptr)
- if (*ptr++ == IPPORT_DEFAULT) {
- new_band = 0;
- def_band = max_band;
- }
- max_band += new_band;
- ptr++;
- }
- if (def_band)
- def_band = max_band - def_band;
- --max_band;
-#endif /* PRIOQ */
-
- if (sflag == CLONEOPEN) {
- mn = 0;
- for (prevp = &minor_devs; (up = *prevp) != 0; prevp = &up->nextmn) {
- if (up->mn != mn)
- break;
- ++mn;
- }
- } else {
-#ifdef SVR4
- mn = getminor(*devp);
-#else
- mn = minor(dev);
-#endif
- for (prevp = &minor_devs; (up = *prevp) != 0; prevp = &up->nextmn) {
- if (up->mn >= mn)
- break;
- }
- if (up->mn == mn) {
- /* this can't happen */
- q->q_ptr = WR(q)->q_ptr = (caddr_t) up;
- DRV_OPEN_OK(dev);
- }
- }
-
- /*
- * Construct a new minor node.
- */
- up = (upperstr_t *) ALLOC_SLEEP(sizeof(upperstr_t));
- bzero((caddr_t) up, sizeof(upperstr_t));
- if (up == 0) {
- DPRINT("pppopen: out of kernel memory\n");
- OPEN_ERROR(ENXIO);
- }
- up->nextmn = *prevp;
- *prevp = up;
- up->mn = mn;
-#ifdef SVR4
- *devp = makedevice(getmajor(*devp), mn);
-#endif
- up->q = q;
- if (NOTSUSER() == 0)
- up->flags |= US_PRIV;
-#ifndef NO_DLPI
- up->state = DL_UNATTACHED;
-#endif
-#ifdef LACHTCP
- up->ifflags = IFF_UP | IFF_POINTOPOINT;
-#endif
- up->sap = -1;
- up->last_sent = up->last_recv = time;
- up->npmode = NPMODE_DROP;
- q->q_ptr = (caddr_t) up;
- WR(q)->q_ptr = (caddr_t) up;
- noenable(WR(q));
-#ifdef SOL2
- mutex_init(&up->stats_lock, NULL, MUTEX_DRIVER, NULL);
-#endif
- ++ppp_count;
-
- qprocson(q);
- DRV_OPEN_OK(makedev(major(dev), mn));
-}
-
-static int
-#ifdef SVR4
-pppclose(q, flag, credp)
- queue_t *q;
- int flag;
- cred_t *credp;
-#else
-pppclose(q, flag)
- queue_t *q;
- int flag;
-#endif
-{
- upperstr_t *up, **upp;
- upperstr_t *as, *asnext;
- upperstr_t **prevp;
-
- qprocsoff(q);
-
- up = (upperstr_t *) q->q_ptr;
- if (up == 0) {
- DPRINT("pppclose: q_ptr = 0\n");
- return 0;
- }
- if (up->flags & US_DBGLOG)
- DPRINT2("ppp/%d: close, flags=%x\n", up->mn, up->flags);
- if (up->flags & US_CONTROL) {
-#ifdef LACHTCP
- struct ifstats *ifp, *pifp;
-#endif
- if (up->lowerq != 0) {
- /* Gack! the lower stream should have be unlinked earlier! */
- DPRINT1("ppp%d: lower stream still connected on close?\n",
- up->mn);
- LOCK_LOWER_W;
- up->lowerq->q_ptr = 0;
- RD(up->lowerq)->q_ptr = 0;
- up->lowerq = 0;
- UNLOCK_LOWER;
- }
-
- /*
- * This stream represents a PPA:
- * For all streams attached to the PPA, clear their
- * references to this PPA.
- * Then remove this PPA from the list of PPAs.
- */
- for (as = up->next; as != 0; as = asnext) {
- asnext = as->next;
- as->next = 0;
- as->ppa = 0;
- if (as->flags & US_BLOCKED) {
- as->flags &= ~US_BLOCKED;
- flushq(WR(as->q), FLUSHDATA);
- }
- }
- for (upp = &ppas; *upp != 0; upp = &(*upp)->nextppa)
- if (*upp == up) {
- *upp = up->nextppa;
- break;
- }
-#ifdef LACHTCP
- /* Remove the statistics from the active list. */
- for (ifp = ifstats, pifp = 0; ifp; ifp = ifp->ifs_next) {
- if (ifp == &up->ifstats) {
- if (pifp)
- pifp->ifs_next = ifp->ifs_next;
- else
- ifstats = ifp->ifs_next;
- break;
- }
- pifp = ifp;
- }
-#endif
- } else {
- /*
- * If this stream is attached to a PPA,
- * remove it from the PPA's list.
- */
- if ((as = up->ppa) != 0) {
- for (; as->next != 0; as = as->next)
- if (as->next == up) {
- as->next = up->next;
- break;
- }
- }
- }
-
-#ifdef SOL2
- if (up->kstats)
- kstat_delete(up->kstats);
- mutex_destroy(&up->stats_lock);
-#endif
-
- q->q_ptr = NULL;
- WR(q)->q_ptr = NULL;
-
- for (prevp = &minor_devs; *prevp != 0; prevp = &(*prevp)->nextmn) {
- if (*prevp == up) {
- *prevp = up->nextmn;
- break;
- }
- }
- FREE(up, sizeof(upperstr_t));
- --ppp_count;
-
- return 0;
-}
-
-/*
- * A message from on high. We do one of three things:
- * - qreply()
- * - put the message on the lower write stream
- * - queue it for our service routine
- */
-static int
-pppuwput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *ppa, *nps;
- struct iocblk *iop;
- struct linkblk *lb;
-#ifdef LACHTCP
- struct ifreq *ifr;
- int i;
-#endif
- queue_t *lq;
- int error, n, sap;
- mblk_t *mq;
- struct ppp_idle *pip;
-#ifdef PRIOQ
- queue_t *tlq;
-#endif /* PRIOQ */
-#ifdef NO_DLPI
- upperstr_t *os;
-#endif
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppuwput: q_ptr = 0!\n");
- return 0;
- }
- if (mp == 0) {
- DPRINT1("pppuwput/%d: mp = 0!\n", us->mn);
- return 0;
- }
- if (mp->b_datap == 0) {
- DPRINT1("pppuwput/%d: mp->b_datap = 0!\n", us->mn);
- return 0;
- }
- switch (mp->b_datap->db_type) {
-#ifndef NO_DLPI
- case M_PCPROTO:
- case M_PROTO:
- dlpi_request(q, mp, us);
- break;
-#endif /* NO_DLPI */
-
- case M_DATA:
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: uwput M_DATA len=%d flags=%x\n",
- us->mn, msgdsize(mp), us->flags);
- if (us->ppa == 0 || msgdsize(mp) > us->ppa->mtu + PPP_HDRLEN
-#ifndef NO_DLPI
- || (us->flags & US_CONTROL) == 0
-#endif /* NO_DLPI */
- ) {
- DPRINT1("pppuwput: junk data len=%d\n", msgdsize(mp));
- freemsg(mp);
- break;
- }
-#ifdef NO_DLPI
- if ((us->flags & US_CONTROL) == 0 && !pass_packet(us, mp, 1))
- break;
-#endif
- if (!send_data(mp, us))
- putq(q, mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: ioctl %x count=%d\n",
- us->mn, iop->ioc_cmd, iop->ioc_count);
- switch (iop->ioc_cmd) {
-#if defined(SOL2)
- case DLIOCRAW: /* raw M_DATA mode */
- us->flags |= US_RAWDATA;
- error = 0;
- break;
-#endif /* defined(SOL2) */
- case I_LINK:
- if ((us->flags & US_CONTROL) == 0 || us->lowerq != 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl I_LINK b_cont = 0!\n", us->mn);
- break;
- }
- lb = (struct linkblk *) mp->b_cont->b_rptr;
- lq = lb->l_qbot;
- if (lq == 0) {
- DPRINT1("pppuwput/%d: ioctl I_LINK l_qbot = 0!\n", us->mn);
- break;
- }
- LOCK_LOWER_W;
- us->lowerq = lq;
- lq->q_ptr = (caddr_t) q;
- RD(lq)->q_ptr = (caddr_t) us->q;
- UNLOCK_LOWER;
- iop->ioc_count = 0;
- error = 0;
- us->flags &= ~US_LASTMOD;
- /* Unblock upper streams which now feed this lower stream. */
- qenable(q);
- /* Send useful information down to the modules which
- are now linked below us. */
- putctl2(lq, M_CTL, PPPCTL_UNIT, us->ppa_id);
- putctl4(lq, M_CTL, PPPCTL_MRU, us->mru);
- putctl4(lq, M_CTL, PPPCTL_MTU, us->mtu);
-#ifdef PRIOQ
- /* Lower tty driver's queue hiwat/lowat from default 4096/128
- to 256/128 since we don't want queueing of data on
- output to physical device */
-
- freezestr(lq);
- for (tlq = lq; tlq->q_next != NULL; tlq = tlq->q_next)
- ;
- strqset(tlq, QHIWAT, 0, 256);
- strqset(tlq, QLOWAT, 0, 128);
- unfreezestr(lq);
-#endif /* PRIOQ */
- break;
-
- case I_UNLINK:
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl I_UNLINK b_cont = 0!\n", us->mn);
- break;
- }
- lb = (struct linkblk *) mp->b_cont->b_rptr;
-#if DEBUG
- if (us->lowerq != lb->l_qbot) {
- DPRINT2("ppp unlink: lowerq=%x qbot=%x\n",
- us->lowerq, lb->l_qbot);
- break;
- }
-#endif
- iop->ioc_count = 0;
- qwriter(q, mp, detach_lower, PERIM_OUTER);
- error = -1;
- break;
-
- case PPPIO_NEWPPA:
- if (us->flags & US_CONTROL)
- break;
- if ((us->flags & US_PRIV) == 0) {
- error = EPERM;
- break;
- }
- /* Arrange to return an int */
- if ((mq = mp->b_cont) == 0
- || mq->b_datap->db_lim - mq->b_rptr < sizeof(int)) {
- mq = allocb(sizeof(int), BPRI_HI);
- if (mq == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = mq;
- mq->b_cont = 0;
- }
- iop->ioc_count = sizeof(int);
- mq->b_wptr = mq->b_rptr + sizeof(int);
- qwriter(q, mp, new_ppa, PERIM_OUTER);
- error = -1;
- break;
-
- case PPPIO_ATTACH:
- /* like dlpi_attach, for programs which can't write to
- the stream (like pppstats) */
- if (iop->ioc_count != sizeof(int) || us->ppa != 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_ATTACH b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- for (ppa = ppas; ppa != 0; ppa = ppa->nextppa)
- if (ppa->ppa_id == n)
- break;
- if (ppa == 0)
- break;
- us->ppa = ppa;
- iop->ioc_count = 0;
- qwriter(q, mp, attach_ppa, PERIM_OUTER);
- error = -1;
- break;
-
-#ifdef NO_DLPI
- case PPPIO_BIND:
- /* Attach to a given SAP. */
- if (iop->ioc_count != sizeof(int) || us->ppa == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_BIND b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- /* n must be a valid PPP network protocol number. */
- if (n < 0x21 || n > 0x3fff || (n & 0x101) != 1)
- break;
- /* check that no other stream is bound to this sap already. */
- for (os = us->ppa; os != 0; os = os->next)
- if (os->sap == n)
- break;
- if (os != 0)
- break;
- us->sap = n;
- iop->ioc_count = 0;
- error = 0;
- break;
-#endif /* NO_DLPI */
-
- case PPPIO_MRU:
- if (iop->ioc_count != sizeof(int) || (us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_MRU b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n <= 0 || n > PPP_MAXMRU)
- break;
- if (n < PPP_MRU)
- n = PPP_MRU;
- us->mru = n;
- if (us->lowerq)
- putctl4(us->lowerq, M_CTL, PPPCTL_MRU, n);
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_MTU:
- if (iop->ioc_count != sizeof(int) || (us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_MTU b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n <= 0 || n > PPP_MAXMTU)
- break;
- us->mtu = n;
-#ifdef LACHTCP
- /* The MTU reported in netstat, not used as IP max packet size! */
- us->ifstats.ifs_mtu = n;
-#endif
- if (us->lowerq)
- putctl4(us->lowerq, M_CTL, PPPCTL_MTU, n);
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_LASTMOD:
- us->flags |= US_LASTMOD;
- error = 0;
- break;
-
- case PPPIO_DEBUG:
- if (iop->ioc_count != sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_DEBUG b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n == PPPDBG_DUMP + PPPDBG_DRIVER) {
- qwriter(q, NULL, debug_dump, PERIM_OUTER);
- iop->ioc_count = 0;
- error = -1;
- } else if (n == PPPDBG_LOG + PPPDBG_DRIVER) {
- DPRINT1("ppp/%d: debug log enabled\n", us->mn);
- us->flags |= US_DBGLOG;
- iop->ioc_count = 0;
- error = 0;
- } else {
- if (us->ppa == 0 || us->ppa->lowerq == 0)
- break;
- putnext(us->ppa->lowerq, mp);
- error = -1;
- }
- break;
-
- case PPPIO_NPMODE:
- if (iop->ioc_count != 2 * sizeof(int))
- break;
- if ((us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_NPMODE b_cont = 0!\n", us->mn);
- break;
- }
- sap = ((int *)mp->b_cont->b_rptr)[0];
- for (nps = us->next; nps != 0; nps = nps->next) {
- if (us->flags & US_DBGLOG)
- DPRINT2("us = 0x%x, us->next->sap = 0x%x\n", nps, nps->sap);
- if (nps->sap == sap)
- break;
- }
- if (nps == 0) {
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: no stream for sap %x\n", us->mn, sap);
- break;
- }
- /* XXX possibly should use qwriter here */
- nps->npmode = (enum NPmode) ((int *)mp->b_cont->b_rptr)[1];
- if (nps->npmode != NPMODE_QUEUE && (nps->flags & US_BLOCKED) != 0)
- qenable(WR(nps->q));
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_GIDLE:
- if ((ppa = us->ppa) == 0)
- break;
- mq = allocb(sizeof(struct ppp_idle), BPRI_HI);
- if (mq == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = mq;
- mq->b_cont = 0;
- pip = (struct ppp_idle *) mq->b_wptr;
- pip->xmit_idle = time - ppa->last_sent;
- pip->recv_idle = time - ppa->last_recv;
- mq->b_wptr += sizeof(struct ppp_idle);
- iop->ioc_count = sizeof(struct ppp_idle);
- error = 0;
- break;
-
-#ifdef LACHTCP
- case SIOCSIFNAME:
- /* Sent from IP down to us. Attach the ifstats structure. */
- if (iop->ioc_count != sizeof(struct ifreq) || us->ppa == 0)
- break;
- ifr = (struct ifreq *)mp->b_cont->b_rptr;
- /* Find the unit number in the interface name. */
- for (i = 0; i < IFNAMSIZ; i++) {
- if (ifr->ifr_name[i] == 0 ||
- (ifr->ifr_name[i] >= '0' &&
- ifr->ifr_name[i] <= '9'))
- break;
- else
- us->ifname[i] = ifr->ifr_name[i];
- }
- us->ifname[i] = 0;
-
- /* Convert the unit number to binary. */
- for (n = 0; i < IFNAMSIZ; i++) {
- if (ifr->ifr_name[i] == 0) {
- break;
- }
- else {
- n = n * 10 + ifr->ifr_name[i] - '0';
- }
- }
-
- /* Verify the ppa. */
- if (us->ppa->ppa_id != n)
- break;
- ppa = us->ppa;
-
- /* Set up the netstat block. */
- strncpy (ppa->ifname, us->ifname, IFNAMSIZ);
-
- ppa->ifstats.ifs_name = ppa->ifname;
- ppa->ifstats.ifs_unit = n;
- ppa->ifstats.ifs_active = us->state != DL_UNBOUND;
- ppa->ifstats.ifs_mtu = ppa->mtu;
-
- /* Link in statistics used by netstat. */
- ppa->ifstats.ifs_next = ifstats;
- ifstats = &ppa->ifstats;
-
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case SIOCGIFFLAGS:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- ((struct iocblk_in *)iop)->ioc_ifflags = us->ifflags;
- error = 0;
- break;
-
- case SIOCSIFFLAGS:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- us->ifflags = ((struct iocblk_in *)iop)->ioc_ifflags;
- error = 0;
- break;
-
- case SIOCSIFADDR:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- us->ifflags |= IFF_RUNNING;
- ((struct iocblk_in *)iop)->ioc_ifflags |= IFF_RUNNING;
- error = 0;
- break;
-
- case SIOCSIFMTU:
- /*
- * Vanilla SVR4 systems don't handle SIOCSIFMTU, rather
- * they take the MTU from the DL_INFO_ACK we sent in response
- * to their DL_INFO_REQ. Fortunately, they will update the
- * MTU if we send an unsolicited DL_INFO_ACK up.
- */
- if ((mq = allocb(sizeof(dl_info_req_t), BPRI_HI)) == 0)
- break; /* should do bufcall */
- ((union DL_primitives *)mq->b_rptr)->dl_primitive = DL_INFO_REQ;
- mq->b_wptr = mq->b_rptr + sizeof(dl_info_req_t);
- dlpi_request(q, mq, us);
- error = 0;
- break;
-
- case SIOCGIFNETMASK:
- case SIOCSIFNETMASK:
- case SIOCGIFADDR:
- case SIOCGIFDSTADDR:
- case SIOCSIFDSTADDR:
- case SIOCGIFMETRIC:
- error = 0;
- break;
-#endif /* LACHTCP */
-
- default:
- if (us->ppa == 0 || us->ppa->lowerq == 0)
- break;
- us->ioc_id = iop->ioc_id;
- error = -1;
- switch (iop->ioc_cmd) {
- case PPPIO_GETSTAT:
- case PPPIO_GETCSTAT:
- if (us->flags & US_LASTMOD) {
- error = EINVAL;
- break;
- }
- putnext(us->ppa->lowerq, mp);
- break;
- default:
- if (us->flags & US_PRIV)
- putnext(us->ppa->lowerq, mp);
- else {
- DPRINT1("ppp ioctl %x rejected\n", iop->ioc_cmd);
- error = EPERM;
- }
- break;
- }
- break;
- }
-
- if (error > 0) {
- iop->ioc_error = error;
- mp->b_datap->db_type = M_IOCNAK;
- qreply(q, mp);
- } else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- }
- break;
-
- case M_FLUSH:
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: flush %x\n", us->mn, *mp->b_rptr);
- if (*mp->b_rptr & FLUSHW)
- flushq(q, FLUSHDATA);
- if (*mp->b_rptr & FLUSHR) {
- *mp->b_rptr &= ~FLUSHW;
- qreply(q, mp);
- } else
- freemsg(mp);
- break;
-
- default:
- freemsg(mp);
- break;
- }
- return 0;
-}
-
-#ifndef NO_DLPI
-static void
-dlpi_request(q, mp, us)
- queue_t *q;
- mblk_t *mp;
- upperstr_t *us;
-{
- union DL_primitives *d = (union DL_primitives *) mp->b_rptr;
- int size = mp->b_wptr - mp->b_rptr;
- mblk_t *reply, *np;
- upperstr_t *ppa, *os;
- int sap, len;
- dl_info_ack_t *info;
- dl_bind_ack_t *ackp;
-#if DL_CURRENT_VERSION >= 2
- dl_phys_addr_ack_t *paddrack;
- static struct ether_addr eaddr = {0};
-#endif
-
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: dlpi prim %x len=%d\n", us->mn,
- d->dl_primitive, size);
- switch (d->dl_primitive) {
- case DL_INFO_REQ:
- if (size < sizeof(dl_info_req_t))
- goto badprim;
- if ((reply = allocb(sizeof(dl_info_ack_t), BPRI_HI)) == 0)
- break; /* should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- info = (dl_info_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_info_ack_t);
- bzero((caddr_t) info, sizeof(dl_info_ack_t));
- info->dl_primitive = DL_INFO_ACK;
- info->dl_max_sdu = us->ppa? us->ppa->mtu: PPP_MAXMTU;
- info->dl_min_sdu = 1;
- info->dl_addr_length = sizeof(uint);
- info->dl_mac_type = DL_ETHER; /* a bigger lie */
- info->dl_current_state = us->state;
- info->dl_service_mode = DL_CLDLS;
- info->dl_provider_style = DL_STYLE2;
-#if DL_CURRENT_VERSION >= 2
- info->dl_sap_length = sizeof(uint);
- info->dl_version = DL_CURRENT_VERSION;
-#endif
- qreply(q, reply);
- break;
-
- case DL_ATTACH_REQ:
- if (size < sizeof(dl_attach_req_t))
- goto badprim;
- if (us->state != DL_UNATTACHED || us->ppa != 0) {
- dlpi_error(q, us, DL_ATTACH_REQ, DL_OUTSTATE, 0);
- break;
- }
- for (ppa = ppas; ppa != 0; ppa = ppa->nextppa)
- if (ppa->ppa_id == d->attach_req.dl_ppa)
- break;
- if (ppa == 0) {
- dlpi_error(q, us, DL_ATTACH_REQ, DL_BADPPA, 0);
- break;
- }
- us->ppa = ppa;
- qwriter(q, mp, attach_ppa, PERIM_OUTER);
- return;
-
- case DL_DETACH_REQ:
- if (size < sizeof(dl_detach_req_t))
- goto badprim;
- if (us->state != DL_UNBOUND || us->ppa == 0) {
- dlpi_error(q, us, DL_DETACH_REQ, DL_OUTSTATE, 0);
- break;
- }
- qwriter(q, mp, detach_ppa, PERIM_OUTER);
- return;
-
- case DL_BIND_REQ:
- if (size < sizeof(dl_bind_req_t))
- goto badprim;
- if (us->state != DL_UNBOUND || us->ppa == 0) {
- dlpi_error(q, us, DL_BIND_REQ, DL_OUTSTATE, 0);
- break;
- }
-#if 0
- /* apparently this test fails (unnecessarily?) on some systems */
- if (d->bind_req.dl_service_mode != DL_CLDLS) {
- dlpi_error(q, us, DL_BIND_REQ, DL_UNSUPPORTED, 0);
- break;
- }
-#endif
-
- /* saps must be valid PPP network protocol numbers,
- except that we accept ETHERTYPE_IP in place of PPP_IP. */
- sap = d->bind_req.dl_sap;
- us->req_sap = sap;
-
-#if defined(SOL2)
- if (us->flags & US_DBGLOG)
- DPRINT2("DL_BIND_REQ: ip gives sap = 0x%x, us = 0x%x", sap, us);
-
- if (sap == ETHERTYPE_IP) /* normal IFF_IPV4 */
- sap = PPP_IP;
- else if (sap == ETHERTYPE_IPV6) /* when IFF_IPV6 is set */
- sap = PPP_IPV6;
- else if (sap == ETHERTYPE_ALLSAP) /* snoop gives sap of 0 */
- sap = PPP_ALLSAP;
- else {
- DPRINT2("DL_BIND_REQ: unrecognized sap = 0x%x, us = 0x%x", sap, us);
- dlpi_error(q, us, DL_BIND_REQ, DL_BADADDR, 0);
- break;
- }
-#else
- if (sap == ETHERTYPE_IP)
- sap = PPP_IP;
- if (sap < 0x21 || sap > 0x3fff || (sap & 0x101) != 1) {
- dlpi_error(q, us, DL_BIND_REQ, DL_BADADDR, 0);
- break;
- }
-#endif /* defined(SOL2) */
-
- /* check that no other stream is bound to this sap already. */
- for (os = us->ppa; os != 0; os = os->next)
- if (os->sap == sap)
- break;
- if (os != 0) {
- dlpi_error(q, us, DL_BIND_REQ, DL_NOADDR, 0);
- break;
- }
-
- us->sap = sap;
- us->state = DL_IDLE;
-
- if ((reply = allocb(sizeof(dl_bind_ack_t) + sizeof(uint),
- BPRI_HI)) == 0)
- break; /* should do bufcall */
- ackp = (dl_bind_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_bind_ack_t) + sizeof(uint);
- reply->b_datap->db_type = M_PCPROTO;
- bzero((caddr_t) ackp, sizeof(dl_bind_ack_t));
- ackp->dl_primitive = DL_BIND_ACK;
- ackp->dl_sap = sap;
- ackp->dl_addr_length = sizeof(uint);
- ackp->dl_addr_offset = sizeof(dl_bind_ack_t);
- *(uint *)(ackp+1) = sap;
- qreply(q, reply);
- break;
-
- case DL_UNBIND_REQ:
- if (size < sizeof(dl_unbind_req_t))
- goto badprim;
- if (us->state != DL_IDLE) {
- dlpi_error(q, us, DL_UNBIND_REQ, DL_OUTSTATE, 0);
- break;
- }
- us->sap = -1;
- us->state = DL_UNBOUND;
-#ifdef LACHTCP
- us->ppa->ifstats.ifs_active = 0;
-#endif
- dlpi_ok(q, DL_UNBIND_REQ);
- break;
-
- case DL_UNITDATA_REQ:
- if (size < sizeof(dl_unitdata_req_t))
- goto badprim;
- if (us->state != DL_IDLE) {
- dlpi_error(q, us, DL_UNITDATA_REQ, DL_OUTSTATE, 0);
- break;
- }
- if ((ppa = us->ppa) == 0) {
- cmn_err(CE_CONT, "ppp: in state dl_idle but ppa == 0?\n");
- break;
- }
- len = mp->b_cont == 0? 0: msgdsize(mp->b_cont);
- if (len > ppa->mtu) {
- DPRINT2("dlpi data too large (%d > %d)\n", len, ppa->mtu);
- break;
- }
-
-#if defined(SOL2)
- /*
- * Should there be any promiscuous stream(s), send the data
- * up for each promiscuous stream that we recognize.
- */
- if (mp->b_cont)
- promisc_sendup(ppa, mp->b_cont, us->sap, 0);
-#endif /* defined(SOL2) */
-
- mp->b_band = 0;
-#ifdef PRIOQ
- /* Extract s_port & d_port from IP-packet, the code is a bit
- dirty here, but so am I, too... */
- if (mp->b_datap->db_type == M_PROTO && us->sap == PPP_IP
- && mp->b_cont != 0) {
- u_char *bb, *tlh;
- int iphlen, len;
- u_short *ptr;
- u_char band_unset, cur_band, syn;
- u_short s_port, d_port;
-
- bb = mp->b_cont->b_rptr; /* bb points to IP-header*/
- len = mp->b_cont->b_wptr - mp->b_cont->b_rptr;
- syn = 0;
- s_port = IPPORT_DEFAULT;
- d_port = IPPORT_DEFAULT;
- if (len >= 20) { /* 20 = minimum length of IP header */
- iphlen = (bb[0] & 0x0f) * 4;
- tlh = bb + iphlen;
- len -= iphlen;
- switch (bb[9]) {
- case IPPROTO_TCP:
- if (len >= 20) { /* min length of TCP header */
- s_port = (tlh[0] << 8) + tlh[1];
- d_port = (tlh[2] << 8) + tlh[3];
- syn = tlh[13] & 0x02;
- }
- break;
- case IPPROTO_UDP:
- if (len >= 8) { /* min length of UDP header */
- s_port = (tlh[0] << 8) + tlh[1];
- d_port = (tlh[2] << 8) + tlh[3];
- }
- break;
- }
- }
-
- /*
- * Now calculate b_band for this packet from the
- * port-priority table.
- */
- ptr = prioq_table;
- cur_band = max_band;
- band_unset = 1;
- while (*ptr) {
- while (*ptr && band_unset)
- if (s_port == *ptr || d_port == *ptr++) {
- mp->b_band = cur_band;
- band_unset = 0;
- break;
- }
- ptr++;
- cur_band--;
- }
- if (band_unset)
- mp->b_band = def_band;
- /* It may be usable to urge SYN packets a bit */
- if (syn)
- mp->b_band++;
- }
-#endif /* PRIOQ */
- /* this assumes PPP_HDRLEN <= sizeof(dl_unitdata_req_t) */
- if (mp->b_datap->db_ref > 1) {
- np = allocb(PPP_HDRLEN, BPRI_HI);
- if (np == 0)
- break; /* gak! */
- np->b_cont = mp->b_cont;
- mp->b_cont = 0;
- freeb(mp);
- mp = np;
- } else
- mp->b_datap->db_type = M_DATA;
- /* XXX should use dl_dest_addr_offset/length here,
- but we would have to translate ETHERTYPE_IP -> PPP_IP */
- mp->b_wptr = mp->b_rptr + PPP_HDRLEN;
- mp->b_rptr[0] = PPP_ALLSTATIONS;
- mp->b_rptr[1] = PPP_UI;
- mp->b_rptr[2] = us->sap >> 8;
- mp->b_rptr[3] = us->sap;
- if (pass_packet(us, mp, 1)) {
- if (!send_data(mp, us))
- putq(q, mp);
- }
- return;
-
-#if DL_CURRENT_VERSION >= 2
- case DL_PHYS_ADDR_REQ:
- if (size < sizeof(dl_phys_addr_req_t))
- goto badprim;
-
- /*
- * Don't check state because ifconfig sends this one down too
- */
-
- if ((reply = allocb(sizeof(dl_phys_addr_ack_t)+ETHERADDRL,
- BPRI_HI)) == 0)
- break; /* should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- paddrack = (dl_phys_addr_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_phys_addr_ack_t);
- bzero((caddr_t) paddrack, sizeof(dl_phys_addr_ack_t)+ETHERADDRL);
- paddrack->dl_primitive = DL_PHYS_ADDR_ACK;
- paddrack->dl_addr_length = ETHERADDRL;
- paddrack->dl_addr_offset = sizeof(dl_phys_addr_ack_t);
- bcopy(&eaddr, reply->b_wptr, ETHERADDRL);
- reply->b_wptr += ETHERADDRL;
- qreply(q, reply);
- break;
-
-#if defined(SOL2)
- case DL_PROMISCON_REQ:
- if (size < sizeof(dl_promiscon_req_t))
- goto badprim;
- us->flags |= US_PROMISC;
- dlpi_ok(q, DL_PROMISCON_REQ);
- break;
-
- case DL_PROMISCOFF_REQ:
- if (size < sizeof(dl_promiscoff_req_t))
- goto badprim;
- us->flags &= ~US_PROMISC;
- dlpi_ok(q, DL_PROMISCOFF_REQ);
- break;
-#else
- case DL_PROMISCON_REQ: /* fall thru */
- case DL_PROMISCOFF_REQ: /* fall thru */
-#endif /* defined(SOL2) */
-#endif /* DL_CURRENT_VERSION >= 2 */
-
-#if DL_CURRENT_VERSION >= 2
- case DL_SET_PHYS_ADDR_REQ:
- case DL_SUBS_BIND_REQ:
- case DL_SUBS_UNBIND_REQ:
- case DL_ENABMULTI_REQ:
- case DL_DISABMULTI_REQ:
- case DL_XID_REQ:
- case DL_TEST_REQ:
- case DL_REPLY_UPDATE_REQ:
- case DL_REPLY_REQ:
- case DL_DATA_ACK_REQ:
-#endif
- case DL_CONNECT_REQ:
- case DL_TOKEN_REQ:
- dlpi_error(q, us, d->dl_primitive, DL_NOTSUPPORTED, 0);
- break;
-
- case DL_CONNECT_RES:
- case DL_DISCONNECT_REQ:
- case DL_RESET_REQ:
- case DL_RESET_RES:
- dlpi_error(q, us, d->dl_primitive, DL_OUTSTATE, 0);
- break;
-
- case DL_UDQOS_REQ:
- dlpi_error(q, us, d->dl_primitive, DL_BADQOSTYPE, 0);
- break;
-
-#if DL_CURRENT_VERSION >= 2
- case DL_TEST_RES:
- case DL_XID_RES:
- break;
-#endif
-
- default:
- cmn_err(CE_CONT, "ppp: unknown dlpi prim 0x%x\n", d->dl_primitive);
- /* fall through */
- badprim:
- dlpi_error(q, us, d->dl_primitive, DL_BADPRIM, 0);
- break;
- }
- freemsg(mp);
-}
-
-static void
-dlpi_error(q, us, prim, err, uerr)
- queue_t *q;
- upperstr_t *us;
- int prim, err, uerr;
-{
- mblk_t *reply;
- dl_error_ack_t *errp;
-
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: dlpi error, prim=%x, err=%x\n", us->mn, prim, err);
- reply = allocb(sizeof(dl_error_ack_t), BPRI_HI);
- if (reply == 0)
- return; /* XXX should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- errp = (dl_error_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_error_ack_t);
- errp->dl_primitive = DL_ERROR_ACK;
- errp->dl_error_primitive = prim;
- errp->dl_errno = err;
- errp->dl_unix_errno = uerr;
- qreply(q, reply);
-}
-
-static void
-dlpi_ok(q, prim)
- queue_t *q;
- int prim;
-{
- mblk_t *reply;
- dl_ok_ack_t *okp;
-
- reply = allocb(sizeof(dl_ok_ack_t), BPRI_HI);
- if (reply == 0)
- return; /* XXX should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- okp = (dl_ok_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_ok_ack_t);
- okp->dl_primitive = DL_OK_ACK;
- okp->dl_correct_primitive = prim;
- qreply(q, reply);
-}
-#endif /* NO_DLPI */
-
-static int
-pass_packet(us, mp, outbound)
- upperstr_t *us;
- mblk_t *mp;
- int outbound;
-{
- int pass;
- upperstr_t *ppa;
-
- if ((ppa = us->ppa) == 0) {
- freemsg(mp);
- return 0;
- }
-
-#ifdef FILTER_PACKETS
- pass = ip_hard_filter(us, mp, outbound);
-#else
- /*
- * Here is where we might, in future, decide whether to pass
- * or drop the packet, and whether it counts as link activity.
- */
- pass = 1;
-#endif /* FILTER_PACKETS */
-
- if (pass < 0) {
- /* pass only if link already up, and don't update time */
- if (ppa->lowerq == 0) {
- freemsg(mp);
- return 0;
- }
- pass = 1;
- } else if (pass) {
- if (outbound)
- ppa->last_sent = time;
- else
- ppa->last_recv = time;
- }
-
- return pass;
-}
-
-/*
- * We have some data to send down to the lower stream (or up the
- * control stream, if we don't have a lower stream attached).
- * Returns 1 if the message was dealt with, 0 if it wasn't able
- * to be sent on and should therefore be queued up.
- */
-static int
-send_data(mp, us)
- mblk_t *mp;
- upperstr_t *us;
-{
- upperstr_t *ppa;
-
- if ((us->flags & US_BLOCKED) || us->npmode == NPMODE_QUEUE)
- return 0;
- ppa = us->ppa;
- if (ppa == 0 || us->npmode == NPMODE_DROP || us->npmode == NPMODE_ERROR) {
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: dropping pkt (npmode=%d)\n", us->mn, us->npmode);
- freemsg(mp);
- return 1;
- }
- if (ppa->lowerq == 0) {
- /* try to send it up the control stream */
- if (bcanputnext(ppa->q, mp->b_band)) {
- /*
- * The message seems to get corrupted for some reason if
- * we just send the message up as it is, so we send a copy.
- */
- mblk_t *np = copymsg(mp);
- freemsg(mp);
- if (np != 0)
- putnext(ppa->q, np);
- return 1;
- }
- } else {
- if (bcanputnext(ppa->lowerq, mp->b_band)) {
- MT_ENTER(&ppa->stats_lock);
- ppa->stats.ppp_opackets++;
- ppa->stats.ppp_obytes += msgdsize(mp);
-#ifdef INCR_OPACKETS
- INCR_OPACKETS(ppa);
-#endif
- MT_EXIT(&ppa->stats_lock);
- /*
- * The lower queue is only ever detached while holding an
- * exclusive lock on the whole driver. So we can be confident
- * that the lower queue is still there.
- */
- putnext(ppa->lowerq, mp);
- return 1;
- }
- }
- us->flags |= US_BLOCKED;
- return 0;
-}
-
-/*
- * Allocate a new PPA id and link this stream into the list of PPAs.
- * This procedure is called with an exclusive lock on all queues in
- * this driver.
- */
-static void
-new_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *up, **usp;
- int ppa_id;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("new_ppa: q_ptr = 0!\n");
- return;
- }
-
- usp = &ppas;
- ppa_id = 0;
- while ((up = *usp) != 0 && ppa_id == up->ppa_id) {
- ++ppa_id;
- usp = &up->nextppa;
- }
- us->ppa_id = ppa_id;
- us->ppa = us;
- us->next = 0;
- us->nextppa = *usp;
- *usp = us;
- us->flags |= US_CONTROL;
- us->npmode = NPMODE_PASS;
-
- us->mtu = PPP_MTU;
- us->mru = PPP_MRU;
-
-#ifdef SOL2
- /*
- * Create a kstats record for our statistics, so netstat -i works.
- */
- if (us->kstats == 0) {
- char unit[32];
-
- sprintf(unit, "ppp%d", us->ppa->ppa_id);
- us->kstats = kstat_create("ppp", us->ppa->ppa_id, unit,
- "net", KSTAT_TYPE_NAMED, 4, 0);
- if (us->kstats != 0) {
- kstat_named_t *kn = KSTAT_NAMED_PTR(us->kstats);
-
- strcpy(kn[0].name, "ipackets");
- kn[0].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[1].name, "ierrors");
- kn[1].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[2].name, "opackets");
- kn[2].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[3].name, "oerrors");
- kn[3].data_type = KSTAT_DATA_ULONG;
- kstat_install(us->kstats);
- }
- }
-#endif /* SOL2 */
-
- *(int *)mp->b_cont->b_rptr = ppa_id;
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-static void
-attach_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *t;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("attach_ppa: q_ptr = 0!\n");
- return;
- }
-
-#ifndef NO_DLPI
- us->state = DL_UNBOUND;
-#endif
- for (t = us->ppa; t->next != 0; t = t->next)
- ;
- t->next = us;
- us->next = 0;
- if (mp->b_datap->db_type == M_IOCTL) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
-#ifndef NO_DLPI
- dlpi_ok(q, DL_ATTACH_REQ);
-#endif
- }
-}
-
-static void
-detach_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *t;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("detach_ppa: q_ptr = 0!\n");
- return;
- }
-
- for (t = us->ppa; t->next != 0; t = t->next)
- if (t->next == us) {
- t->next = us->next;
- break;
- }
- us->next = 0;
- us->ppa = 0;
-#ifndef NO_DLPI
- us->state = DL_UNATTACHED;
- dlpi_ok(q, DL_DETACH_REQ);
-#endif
-}
-
-/*
- * We call this with qwriter in order to give the upper queue procedures
- * the guarantee that the lower queue is not going to go away while
- * they are executing.
- */
-static void
-detach_lower(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("detach_lower: q_ptr = 0!\n");
- return;
- }
-
- LOCK_LOWER_W;
- us->lowerq->q_ptr = 0;
- RD(us->lowerq)->q_ptr = 0;
- us->lowerq = 0;
- UNLOCK_LOWER;
-
- /* Unblock streams which now feed back up the control stream. */
- qenable(us->q);
-
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-static int
-pppuwsrv(q)
- queue_t *q;
-{
- upperstr_t *us, *as;
- mblk_t *mp;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppuwsrv: q_ptr = 0!\n");
- return 0;
- }
-
- /*
- * If this is a control stream, then this service procedure
- * probably got enabled because of flow control in the lower
- * stream being enabled (or because of the lower stream going
- * away). Therefore we enable the service procedure of all
- * attached upper streams.
- */
- if (us->flags & US_CONTROL) {
- for (as = us->next; as != 0; as = as->next)
- qenable(WR(as->q));
- }
-
- /* Try to send on any data queued here. */
- us->flags &= ~US_BLOCKED;
- while ((mp = getq(q)) != 0) {
- if (!send_data(mp, us)) {
- putbq(q, mp);
- break;
- }
- }
-
- return 0;
-}
-
-/* should never get called... */
-static int
-ppplwput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- putnext(q, mp);
- return 0;
-}
-
-static int
-ppplwsrv(q)
- queue_t *q;
-{
- queue_t *uq;
-
- /*
- * Flow control has back-enabled this stream:
- * enable the upper write service procedure for
- * the upper control stream for this lower stream.
- */
- LOCK_LOWER_R;
- uq = (queue_t *) q->q_ptr;
- if (uq != 0)
- qenable(uq);
- UNLOCK_LOWER;
- return 0;
-}
-
-/*
- * This should only get called for control streams.
- */
-static int
-pppurput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *ppa, *us;
- int proto, len;
- struct iocblk *iop;
-
- ppa = (upperstr_t *) q->q_ptr;
- if (ppa == 0) {
- DPRINT("pppurput: q_ptr = 0!\n");
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_CTL:
- MT_ENTER(&ppa->stats_lock);
- switch (*mp->b_rptr) {
- case PPPCTL_IERROR:
-#ifdef INCR_IERRORS
- INCR_IERRORS(ppa);
-#endif
- ppa->stats.ppp_ierrors++;
- break;
- case PPPCTL_OERROR:
-#ifdef INCR_OERRORS
- INCR_OERRORS(ppa);
-#endif
- ppa->stats.ppp_oerrors++;
- break;
- }
- MT_EXIT(&ppa->stats_lock);
- freemsg(mp);
- break;
-
- case M_IOCACK:
- case M_IOCNAK:
- /*
- * Attempt to match up the response with the stream
- * that the request came from.
- */
- iop = (struct iocblk *) mp->b_rptr;
- for (us = ppa; us != 0; us = us->next)
- if (us->ioc_id == iop->ioc_id)
- break;
- if (us == 0)
- freemsg(mp);
- else
- putnext(us->q, mp);
- break;
-
- case M_HANGUP:
- /*
- * The serial device has hung up. We don't want to send
- * the M_HANGUP message up to pppd because that will stop
- * us from using the control stream any more. Instead we
- * send a zero-length message as an end-of-file indication.
- */
- freemsg(mp);
- mp = allocb(1, BPRI_HI);
- if (mp == 0) {
- DPRINT1("ppp/%d: couldn't allocate eof message!\n", ppa->mn);
- break;
- }
- putnext(ppa->q, mp);
- break;
-
- default:
- if (mp->b_datap->db_type == M_DATA) {
- len = msgdsize(mp);
- if (mp->b_wptr - mp->b_rptr < PPP_HDRLEN) {
- PULLUP(mp, PPP_HDRLEN);
- if (mp == 0) {
- DPRINT1("ppp_urput: msgpullup failed (len=%d)\n", len);
- break;
- }
- }
- MT_ENTER(&ppa->stats_lock);
- ppa->stats.ppp_ipackets++;
- ppa->stats.ppp_ibytes += len;
-#ifdef INCR_IPACKETS
- INCR_IPACKETS(ppa);
-#endif
- MT_EXIT(&ppa->stats_lock);
-
- proto = PPP_PROTOCOL(mp->b_rptr);
-
-#if defined(SOL2)
- /*
- * Should there be any promiscuous stream(s), send the data
- * up for each promiscuous stream that we recognize.
- */
- promisc_sendup(ppa, mp, proto, 1);
-#endif /* defined(SOL2) */
-
- if (proto < 0x8000 && (us = find_dest(ppa, proto)) != 0) {
- /*
- * A data packet for some network protocol.
- * Queue it on the upper stream for that protocol.
- * XXX could we just putnext it? (would require thought)
- * The rblocked flag is there to ensure that we keep
- * messages in order for each network protocol.
- */
- if (!pass_packet(us, mp, 0))
- break;
- if (!us->rblocked && !canput(us->q))
- us->rblocked = 1;
- if (!us->rblocked)
- putq(us->q, mp);
- else
- putq(q, mp);
- break;
- }
- }
- /*
- * A control frame, a frame for an unknown protocol,
- * or some other message type.
- * Send it up to pppd via the control stream.
- */
- if (queclass(mp) == QPCTL || canputnext(ppa->q))
- putnext(ppa->q, mp);
- else
- putq(q, mp);
- break;
- }
-
- return 0;
-}
-
-static int
-pppursrv(q)
- queue_t *q;
-{
- upperstr_t *us, *as;
- mblk_t *mp, *hdr;
-#ifndef NO_DLPI
- dl_unitdata_ind_t *ud;
-#endif
- int proto;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppursrv: q_ptr = 0!\n");
- return 0;
- }
-
- if (us->flags & US_CONTROL) {
- /*
- * A control stream.
- * If there is no lower queue attached, run the write service
- * routines of other upper streams attached to this PPA.
- */
- if (us->lowerq == 0) {
- as = us;
- do {
- if (as->flags & US_BLOCKED)
- qenable(WR(as->q));
- as = as->next;
- } while (as != 0);
- }
-
- /*
- * Messages get queued on this stream's read queue if they
- * can't be queued on the read queue of the attached stream
- * that they are destined for. This is for flow control -
- * when this queue fills up, the lower read put procedure will
- * queue messages there and the flow control will propagate
- * down from there.
- */
- while ((mp = getq(q)) != 0) {
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto < 0x8000 && (as = find_dest(us, proto)) != 0) {
- if (!canput(as->q))
- break;
- putq(as->q, mp);
- } else {
- if (!canputnext(q))
- break;
- putnext(q, mp);
- }
- }
- if (mp) {
- putbq(q, mp);
- } else {
- /* can now put stuff directly on network protocol streams again */
- for (as = us->next; as != 0; as = as->next)
- as->rblocked = 0;
- }
-
- /*
- * If this stream has a lower stream attached,
- * enable the read queue's service routine.
- * XXX we should really only do this if the queue length
- * has dropped below the low-water mark.
- */
- if (us->lowerq != 0)
- qenable(RD(us->lowerq));
-
- } else {
- /*
- * A network protocol stream. Put a DLPI header on each
- * packet and send it on.
- * (Actually, it seems that the IP module will happily
- * accept M_DATA messages without the DL_UNITDATA_IND header.)
- */
- while ((mp = getq(q)) != 0) {
- if (!canputnext(q)) {
- putbq(q, mp);
- break;
- }
-#ifndef NO_DLPI
- proto = PPP_PROTOCOL(mp->b_rptr);
- mp->b_rptr += PPP_HDRLEN;
- hdr = allocb(sizeof(dl_unitdata_ind_t) + 2 * sizeof(uint),
- BPRI_MED);
- if (hdr == 0) {
- /* XXX should put it back and use bufcall */
- freemsg(mp);
- continue;
- }
- hdr->b_datap->db_type = M_PROTO;
- ud = (dl_unitdata_ind_t *) hdr->b_wptr;
- hdr->b_wptr += sizeof(dl_unitdata_ind_t) + 2 * sizeof(uint);
- hdr->b_cont = mp;
- ud->dl_primitive = DL_UNITDATA_IND;
- ud->dl_dest_addr_length = sizeof(uint);
- ud->dl_dest_addr_offset = sizeof(dl_unitdata_ind_t);
- ud->dl_src_addr_length = sizeof(uint);
- ud->dl_src_addr_offset = ud->dl_dest_addr_offset + sizeof(uint);
-#if DL_CURRENT_VERSION >= 2
- ud->dl_group_address = 0;
-#endif
- /* Send the DLPI client the data with the SAP they requested,
- (e.g. ETHERTYPE_IP) rather than the PPP protocol number
- (e.g. PPP_IP) */
- ((uint *)(ud + 1))[0] = us->req_sap; /* dest SAP */
- ((uint *)(ud + 1))[1] = us->req_sap; /* src SAP */
- putnext(q, hdr);
-#else /* NO_DLPI */
- putnext(q, mp);
-#endif /* NO_DLPI */
- }
- /*
- * Now that we have consumed some packets from this queue,
- * enable the control stream's read service routine so that we
- * can process any packets for us that might have got queued
- * there for flow control reasons.
- */
- if (us->ppa)
- qenable(us->ppa->q);
- }
-
- return 0;
-}
-
-static upperstr_t *
-find_dest(ppa, proto)
- upperstr_t *ppa;
- int proto;
-{
- upperstr_t *us;
-
- for (us = ppa->next; us != 0; us = us->next)
- if (proto == us->sap)
- break;
- return us;
-}
-
-#if defined (SOL2)
-/*
- * Test upstream promiscuous conditions. As of now, only pass IPv4 and
- * Ipv6 packets upstream (let PPP packets be decoded elsewhere).
- */
-static upperstr_t *
-find_promisc(us, proto)
- upperstr_t *us;
- int proto;
-{
-
- if ((proto != PPP_IP) && (proto != PPP_IPV6))
- return (upperstr_t *)0;
-
- for ( ; us; us = us->next) {
- if ((us->flags & US_PROMISC) && (us->state == DL_IDLE))
- return us;
- }
-
- return (upperstr_t *)0;
-}
-
-/*
- * Prepend an empty Ethernet header to msg for snoop, et al.
- */
-static mblk_t *
-prepend_ether(us, mp, proto)
- upperstr_t *us;
- mblk_t *mp;
- int proto;
-{
- mblk_t *eh;
- int type;
-
- if ((eh = allocb(sizeof(struct ether_header), BPRI_HI)) == 0) {
- freemsg(mp);
- return (mblk_t *)0;
- }
-
- if (proto == PPP_IP)
- type = ETHERTYPE_IP;
- else if (proto == PPP_IPV6)
- type = ETHERTYPE_IPV6;
- else
- type = proto; /* What else? Let decoder decide */
-
- eh->b_wptr += sizeof(struct ether_header);
- bzero((caddr_t)eh->b_rptr, sizeof(struct ether_header));
- ((struct ether_header *)eh->b_rptr)->ether_type = htons((short)type);
- eh->b_cont = mp;
- return (eh);
-}
-
-/*
- * Prepend DL_UNITDATA_IND mblk to msg
- */
-static mblk_t *
-prepend_udind(us, mp, proto)
- upperstr_t *us;
- mblk_t *mp;
- int proto;
-{
- dl_unitdata_ind_t *dlu;
- mblk_t *dh;
- size_t size;
-
- size = sizeof(dl_unitdata_ind_t);
- if ((dh = allocb(size, BPRI_MED)) == 0) {
- freemsg(mp);
- return (mblk_t *)0;
- }
-
- dh->b_datap->db_type = M_PROTO;
- dh->b_wptr = dh->b_datap->db_lim;
- dh->b_rptr = dh->b_wptr - size;
-
- dlu = (dl_unitdata_ind_t *)dh->b_rptr;
- dlu->dl_primitive = DL_UNITDATA_IND;
- dlu->dl_dest_addr_length = 0;
- dlu->dl_dest_addr_offset = sizeof(dl_unitdata_ind_t);
- dlu->dl_src_addr_length = 0;
- dlu->dl_src_addr_offset = sizeof(dl_unitdata_ind_t);
- dlu->dl_group_address = 0;
-
- dh->b_cont = mp;
- return (dh);
-}
-
-/*
- * For any recognized promiscuous streams, send data upstream
- */
-static void
-promisc_sendup(ppa, mp, proto, skip)
- upperstr_t *ppa;
- mblk_t *mp;
- int proto, skip;
-{
- mblk_t *dup_mp, *dup_dup_mp;
- upperstr_t *prus, *nprus;
-
- if ((prus = find_promisc(ppa, proto)) != 0) {
- if (dup_mp = dupmsg(mp)) {
-
- if (skip)
- dup_mp->b_rptr += PPP_HDRLEN;
-
- for ( ; nprus = find_promisc(prus->next, proto);
- prus = nprus) {
-
- if (dup_dup_mp = dupmsg(dup_mp)) {
- if (canputnext(prus->q)) {
- if (prus->flags & US_RAWDATA) {
- dup_dup_mp = prepend_ether(prus, dup_dup_mp, proto);
- putnext(prus->q, dup_dup_mp);
- } else {
- dup_dup_mp = prepend_udind(prus, dup_dup_mp, proto);
- putnext(prus->q, dup_dup_mp);
- }
- } else {
- DPRINT("ppp_urput: data to promisc q dropped\n");
- freemsg(dup_dup_mp);
- }
- }
- }
-
- if (canputnext(prus->q)) {
- if (prus->flags & US_RAWDATA) {
- dup_mp = prepend_ether(prus, dup_mp, proto);
- putnext(prus->q, dup_mp);
- } else {
- dup_mp = prepend_udind(prus, dup_mp, proto);
- putnext(prus->q, dup_mp);
- }
- } else {
- DPRINT("ppp_urput: data to promisc q dropped\n");
- freemsg(dup_mp);
- }
- }
- }
-}
-#endif /* defined(SOL2) */
-
-/*
- * We simply put the message on to the associated upper control stream
- * (either here or in ppplrsrv). That way we enter the perimeters
- * before looking through the list of attached streams to decide which
- * stream it should go up.
- */
-static int
-ppplrput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- queue_t *uq;
- struct iocblk *iop;
-
- switch (mp->b_datap->db_type) {
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- iop->ioc_error = EINVAL;
- mp->b_datap->db_type = M_IOCNAK;
- qreply(q, mp);
- return 0;
- case M_FLUSH:
- if (*mp->b_rptr & FLUSHR)
- flushq(q, FLUSHDATA);
- if (*mp->b_rptr & FLUSHW) {
- *mp->b_rptr &= ~FLUSHR;
- qreply(q, mp);
- } else
- freemsg(mp);
- return 0;
- }
-
- /*
- * If we can't get the lower lock straight away, queue this one
- * rather than blocking, to avoid the possibility of deadlock.
- */
- if (!TRYLOCK_LOWER_R) {
- putq(q, mp);
- return 0;
- }
-
- /*
- * Check that we're still connected to the driver.
- */
- uq = (queue_t *) q->q_ptr;
- if (uq == 0) {
- UNLOCK_LOWER;
- DPRINT1("ppplrput: q = %x, uq = 0??\n", q);
- freemsg(mp);
- return 0;
- }
-
- /*
- * Try to forward the message to the put routine for the upper
- * control stream for this lower stream.
- * If there are already messages queued here, queue this one so
- * they don't get out of order.
- */
- if (queclass(mp) == QPCTL || (qsize(q) == 0 && canput(uq)))
- put(uq, mp);
- else
- putq(q, mp);
-
- UNLOCK_LOWER;
- return 0;
-}
-
-static int
-ppplrsrv(q)
- queue_t *q;
-{
- mblk_t *mp;
- queue_t *uq;
-
- /*
- * Packets get queued here for flow control reasons
- * or if the lrput routine couldn't get the lower lock
- * without blocking.
- */
- LOCK_LOWER_R;
- uq = (queue_t *) q->q_ptr;
- if (uq == 0) {
- UNLOCK_LOWER;
- flushq(q, FLUSHALL);
- DPRINT1("ppplrsrv: q = %x, uq = 0??\n", q);
- return 0;
- }
- while ((mp = getq(q)) != 0) {
- if (queclass(mp) == QPCTL || canput(uq))
- put(uq, mp);
- else {
- putbq(q, mp);
- break;
- }
- }
- UNLOCK_LOWER;
- return 0;
-}
-
-static int
-putctl2(q, type, code, val)
- queue_t *q;
- int type, code, val;
-{
- mblk_t *mp;
-
- mp = allocb(2, BPRI_HI);
- if (mp == 0)
- return 0;
- mp->b_datap->db_type = type;
- mp->b_wptr[0] = code;
- mp->b_wptr[1] = val;
- mp->b_wptr += 2;
- putnext(q, mp);
- return 1;
-}
-
-static int
-putctl4(q, type, code, val)
- queue_t *q;
- int type, code, val;
-{
- mblk_t *mp;
-
- mp = allocb(4, BPRI_HI);
- if (mp == 0)
- return 0;
- mp->b_datap->db_type = type;
- mp->b_wptr[0] = code;
- ((short *)mp->b_wptr)[1] = val;
- mp->b_wptr += 4;
- putnext(q, mp);
- return 1;
-}
-
-static void
-debug_dump(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us;
- queue_t *uq, *lq;
-
- DPRINT("ppp upper streams:\n");
- for (us = minor_devs; us != 0; us = us->nextmn) {
- uq = us->q;
- DPRINT3(" %d: q=%x rlev=%d",
- us->mn, uq, (uq? qsize(uq): 0));
- DPRINT3(" wlev=%d flags=0x%b", (uq? qsize(WR(uq)): 0),
- us->flags, "\020\1priv\2control\3blocked\4last");
- DPRINT3(" state=%x sap=%x req_sap=%x", us->state, us->sap,
- us->req_sap);
- if (us->ppa == 0)
- DPRINT(" ppa=?\n");
- else
- DPRINT1(" ppa=%d\n", us->ppa->ppa_id);
- if (us->flags & US_CONTROL) {
- lq = us->lowerq;
- DPRINT3(" control for %d lq=%x rlev=%d",
- us->ppa_id, lq, (lq? qsize(RD(lq)): 0));
- DPRINT3(" wlev=%d mru=%d mtu=%d\n",
- (lq? qsize(lq): 0), us->mru, us->mtu);
- }
- }
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-#ifdef FILTER_PACKETS
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/udp.h>
-#include <netinet/tcp.h>
-
-#define MAX_IPHDR 128 /* max TCP/IP header size */
-
-
-/* The following table contains a hard-coded list of protocol/port pairs.
- * Any matching packets are either discarded unconditionally, or,
- * if ok_if_link_up is non-zero when a connection does not currently exist
- * (i.e., they go through if the connection is present, but never initiate
- * a dial-out).
- * This idea came from a post by dm@garage.uun.org (David Mazieres)
- */
-static struct pktfilt_tab {
- int proto;
- u_short port;
- u_short ok_if_link_up;
-} pktfilt_tab[] = {
- { IPPROTO_UDP, 520, 1 }, /* RIP, ok to pass if link is up */
- { IPPROTO_UDP, 123, 1 }, /* NTP, don't keep up the link for it */
- { -1, 0, 0 } /* terminator entry has port == -1 */
-};
-
-
-static int
-ip_hard_filter(us, mp, outbound)
- upperstr_t *us;
- mblk_t *mp;
- int outbound;
-{
- struct ip *ip;
- struct pktfilt_tab *pft;
- mblk_t *temp_mp;
- int proto;
- int len, hlen;
-
-
- /* Note, the PPP header has already been pulled up in all cases */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: filter, proto=0x%x, out=%d\n", us->mn, proto, outbound);
-
- switch (proto)
- {
- case PPP_IP:
- if ((mp->b_wptr - mp->b_rptr) == PPP_HDRLEN && mp->b_cont != 0) {
- temp_mp = mp->b_cont;
- len = msgdsize(temp_mp);
- hlen = (len < MAX_IPHDR) ? len : MAX_IPHDR;
- PULLUP(temp_mp, hlen);
- if (temp_mp == 0) {
- DPRINT2("ppp/%d: filter, pullup next failed, len=%d\n",
- us->mn, hlen);
- mp->b_cont = 0; /* PULLUP() freed the rest */
- freemsg(mp);
- return 0;
- }
- ip = (struct ip *)mp->b_cont->b_rptr;
- }
- else {
- len = msgdsize(mp);
- hlen = (len < (PPP_HDRLEN+MAX_IPHDR)) ? len : (PPP_HDRLEN+MAX_IPHDR);
- PULLUP(mp, hlen);
- if (mp == 0) {
- DPRINT2("ppp/%d: filter, pullup failed, len=%d\n",
- us->mn, hlen);
- return 0;
- }
- ip = (struct ip *)(mp->b_rptr + PPP_HDRLEN);
- }
-
- /* For IP traffic, certain packets (e.g., RIP) may be either
- * 1. ignored - dropped completely
- * 2. will not initiate a connection, but
- * will be passed if a connection is currently up.
- */
- for (pft=pktfilt_tab; pft->proto != -1; pft++) {
- if (ip->ip_p == pft->proto) {
- switch(pft->proto) {
- case IPPROTO_UDP:
- if (((struct udphdr *) &((int *)ip)[ip->ip_hl])->uh_dport
- == htons(pft->port)) goto endfor;
- break;
- case IPPROTO_TCP:
- if (((struct tcphdr *) &((int *)ip)[ip->ip_hl])->th_dport
- == htons(pft->port)) goto endfor;
- break;
- }
- }
- }
- endfor:
- if (pft->proto != -1) {
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: found IP pkt, proto=0x%x (%d)\n",
- us->mn, pft->proto, pft->port);
- /* Discard if not connected, or if not pass_with_link_up */
- /* else, if link is up let go by, but don't update time */
- return pft->ok_if_link_up? -1: 0;
- }
- break;
- } /* end switch (proto) */
-
- return 1;
-}
-#endif /* FILTER_PACKETS */
-
diff --git a/mdk-stage1/ppp/modules/ppp_ahdlc.c b/mdk-stage1/ppp/modules/ppp_ahdlc.c
deleted file mode 100644
index d0b961258..000000000
--- a/mdk-stage1/ppp/modules/ppp_ahdlc.c
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
- * ppp_ahdlc.c - STREAMS module for doing PPP asynchronous HDLC.
- *
- * Re-written by Adi Masputra <adi.masputra@sun.com>, based on
- * the original ppp_ahdlc.c
- *
- * Copyright (c) 2000 by Sun Microsystems, Inc.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies.
- *
- * SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2, SVR4, SunOS 4, and Digital UNIX.
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stream.h>
-#include <sys/errno.h>
-
-#ifdef SVR4
-#include <sys/conf.h>
-#include <sys/kmem.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#else
-#include <sys/user.h>
-#ifdef __osf__
-#include <sys/cmn_err.h>
-#endif
-#endif /* SVR4 */
-
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-/*
- * Right now, mutex is only enabled for Solaris 2.x
- */
-#if defined(SOL2)
-#define USE_MUTEX
-#endif /* SOL2 */
-
-/*
- * intpointer_t and uintpointer_t are signed and unsigned integer types
- * large enough to hold any data pointer; that is, data pointers can be
- * assigned into or from these integer types without losing precision.
- * On recent Solaris releases, these types are defined in sys/int_types.h,
- * but not on SunOS 4.x or the earlier Solaris versions.
- */
-#if defined(_LP64) || defined(_I32LPx)
-typedef long intpointer_t;
-typedef unsigned long uintpointer_t;
-#else
-typedef int intpointer_t;
-typedef unsigned int uintpointer_t;
-#endif
-
-MOD_OPEN_DECL(ahdlc_open);
-MOD_CLOSE_DECL(ahdlc_close);
-static int ahdlc_wput __P((queue_t *, mblk_t *));
-static int ahdlc_rput __P((queue_t *, mblk_t *));
-static void ahdlc_encode __P((queue_t *, mblk_t *));
-static void ahdlc_decode __P((queue_t *, mblk_t *));
-static int msg_byte __P((mblk_t *, unsigned int));
-
-#if defined(SOL2)
-/*
- * Don't send HDLC start flag is last transmit is within 1.5 seconds -
- * FLAG_TIME is defined is microseconds
- */
-#define FLAG_TIME 1500
-#define ABS(x) (x >= 0 ? x : (-x))
-#endif /* SOL2 */
-
-/*
- * Extract byte i of message mp
- */
-#define MSG_BYTE(mp, i) ((i) < (mp)->b_wptr - (mp)->b_rptr? (mp)->b_rptr[i]: \
- msg_byte((mp), (i)))
-
-/*
- * Is this LCP packet one we have to transmit using LCP defaults?
- */
-#define LCP_USE_DFLT(mp) (1 <= (code = MSG_BYTE((mp), 4)) && code <= 7)
-
-/*
- * Standard STREAMS declarations
- */
-static struct module_info minfo = {
- 0x7d23, "ppp_ahdl", 0, INFPSZ, 32768, 512
-};
-
-static struct qinit rinit = {
- ahdlc_rput, NULL, ahdlc_open, ahdlc_close, NULL, &minfo, NULL
-};
-
-static struct qinit winit = {
- ahdlc_wput, NULL, NULL, NULL, NULL, &minfo, NULL
-};
-
-#if defined(SVR4) && !defined(SOL2)
-int phdldevflag = 0;
-#define ppp_ahdlcinfo phdlinfo
-#endif /* defined(SVR4) && !defined(SOL2) */
-
-struct streamtab ppp_ahdlcinfo = {
- &rinit, /* ptr to st_rdinit */
- &winit, /* ptr to st_wrinit */
- NULL, /* ptr to st_muxrinit */
- NULL, /* ptr to st_muxwinit */
-#if defined(SUNOS4)
- NULL /* ptr to ptr to st_modlist */
-#endif /* SUNOS4 */
-};
-
-#if defined(SUNOS4)
-int ppp_ahdlc_count = 0; /* open counter */
-#endif /* SUNOS4 */
-
-/*
- * Per-stream state structure
- */
-typedef struct ahdlc_state {
-#if defined(USE_MUTEX)
- kmutex_t lock; /* lock for this structure */
-#endif /* USE_MUTEX */
- int flags; /* link flags */
- mblk_t *rx_buf; /* ptr to receive buffer */
- int rx_buf_size; /* receive buffer size */
- ushort_t infcs; /* calculated rx HDLC FCS */
- u_int32_t xaccm[8]; /* 256-bit xmit ACCM */
- u_int32_t raccm; /* 32-bit rcv ACCM */
- int mtu; /* interface MTU */
- int mru; /* link MRU */
- int unit; /* current PPP unit number */
- struct pppstat stats; /* statistic structure */
-#if defined(SOL2)
- clock_t flag_time; /* time in usec between flags */
- clock_t lbolt; /* last updated lbolt */
-#endif /* SOL2 */
-} ahdlc_state_t;
-
-/*
- * Values for flags
- */
-#define ESCAPED 0x100 /* last saw escape char on input */
-#define IFLUSH 0x200 /* flushing input due to error */
-
-/*
- * RCV_B7_1, etc., defined in net/pppio.h, are stored in flags also.
- */
-#define RCV_FLAGS (RCV_B7_1|RCV_B7_0|RCV_ODDP|RCV_EVNP)
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static u_short fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-static u_int32_t paritytab[8] =
-{
- 0x96696996, 0x69969669, 0x69969669, 0x96696996,
- 0x69969669, 0x96696996, 0x96696996, 0x69969669
-};
-
-/*
- * STREAMS module open (entry) point
- */
-MOD_OPEN(ahdlc_open)
-{
- ahdlc_state_t *state;
-
- /*
- * Return if it's already opened
- */
- if (q->q_ptr) {
- return 0;
- }
-
- /*
- * This can only be opened as a module
- */
- if (sflag != MODOPEN) {
- return 0;
- }
-
- state = (ahdlc_state_t *) ALLOC_NOSLEEP(sizeof(ahdlc_state_t));
- if (state == 0)
- OPEN_ERROR(ENOSR);
- bzero((caddr_t) state, sizeof(ahdlc_state_t));
-
- q->q_ptr = (caddr_t) state;
- WR(q)->q_ptr = (caddr_t) state;
-
-#if defined(USE_MUTEX)
- mutex_init(&state->lock, NULL, MUTEX_DEFAULT, NULL);
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- state->xaccm[0] = ~0; /* escape 0x00 through 0x1f */
- state->xaccm[3] = 0x60000000; /* escape 0x7d and 0x7e */
- state->mru = PPP_MRU; /* default of 1500 bytes */
-#if defined(SOL2)
- state->flag_time = drv_usectohz(FLAG_TIME);
-#endif /* SOL2 */
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-
-#if defined(SUNOS4)
- ppp_ahdlc_count++;
-#endif /* SUNOS4 */
-
- qprocson(q);
-
- return 0;
-}
-
-/*
- * STREAMS module close (exit) point
- */
-MOD_CLOSE(ahdlc_close)
-{
- ahdlc_state_t *state;
-
- qprocsoff(q);
-
- state = (ahdlc_state_t *) q->q_ptr;
-
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_close\n");
- return 0;
- }
-
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- if (state->rx_buf != 0) {
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- }
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
- mutex_destroy(&state->lock);
-#endif /* USE_MUTEX */
-
- FREE(q->q_ptr, sizeof(ahdlc_state_t));
- q->q_ptr = NULL;
- OTHERQ(q)->q_ptr = NULL;
-
-#if defined(SUNOS4)
- if (ppp_ahdlc_count)
- ppp_ahdlc_count--;
-#endif /* SUNOS4 */
-
- return 0;
-}
-
-/*
- * Write side put routine
- */
-static int
-ahdlc_wput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- struct iocblk *iop;
- int error;
- mblk_t *np;
- struct ppp_stats *psp;
-
- state = (ahdlc_state_t *) q->q_ptr;
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_wput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_DATA:
- /*
- * A data packet - do character-stuffing and FCS, and
- * send it onwards.
- */
- ahdlc_encode(q, mp);
- freemsg(mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- switch (iop->ioc_cmd) {
- case PPPIO_XACCM:
- if ((iop->ioc_count < sizeof(u_int32_t)) ||
- (iop->ioc_count > sizeof(ext_accm))) {
- break;
- }
- if (mp->b_cont == 0) {
- DPRINT1("ahdlc_wput/%d: PPPIO_XACCM b_cont = 0!\n", state->unit);
- break;
- }
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)state->xaccm,
- iop->ioc_count);
- state->xaccm[2] &= ~0x40000000; /* don't escape 0x5e */
- state->xaccm[3] |= 0x60000000; /* do escape 0x7d, 0x7e */
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_RACCM:
- if (iop->ioc_count != sizeof(u_int32_t))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ahdlc_wput/%d: PPPIO_RACCM b_cont = 0!\n", state->unit);
- break;
- }
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)&state->raccm,
- sizeof(u_int32_t));
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_GCLEAN:
- np = allocb(sizeof(int), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- *(int *)np->b_wptr = state->flags & RCV_FLAGS;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- np->b_wptr += sizeof(int);
- iop->ioc_count = sizeof(int);
- error = 0;
- break;
-
- case PPPIO_GETSTAT:
- np = allocb(sizeof(struct ppp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- psp = (struct ppp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_stats);
- bzero((caddr_t)psp, sizeof(struct ppp_stats));
- psp->p = state->stats;
- iop->ioc_count = sizeof(struct ppp_stats);
- error = 0;
- break;
-
- case PPPIO_LASTMOD:
- /* we knew this anyway */
- error = 0;
- break;
-
- default:
- error = -1;
- break;
- }
-
- if (error < 0)
- putnext(q, mp);
- else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
- mp->b_datap->db_type = M_IOCNAK;
- iop->ioc_count = 0;
- iop->ioc_error = error;
- qreply(q, mp);
- }
- break;
-
- case M_CTL:
- switch (*mp->b_rptr) {
- case PPPCTL_MTU:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->mtu = ((unsigned short *)mp->b_rptr)[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- freemsg(mp);
- break;
- case PPPCTL_MRU:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->mru = ((unsigned short *)mp->b_rptr)[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- freemsg(mp);
- break;
- case PPPCTL_UNIT:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->unit = mp->b_rptr[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- break;
- default:
- putnext(q, mp);
- }
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-/*
- * Read side put routine
- */
-static int
-ahdlc_rput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
-
- state = (ahdlc_state_t *) q->q_ptr;
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_rput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_DATA:
- ahdlc_decode(q, mp);
- freemsg(mp);
- break;
-
- case M_HANGUP:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- if (state->rx_buf != 0) {
- /* XXX would like to send this up for debugging */
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- }
- state->flags = IFLUSH;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
- return 0;
-}
-
-/*
- * Extract bit c from map m, to determine if c needs to be escaped
- */
-#define IN_TX_MAP(c, m) ((m)[(c) >> 5] & (1 << ((c) & 0x1f)))
-
-static void
-ahdlc_encode(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- u_int32_t *xaccm, loc_xaccm[8];
- ushort_t fcs;
- size_t outmp_len;
- mblk_t *outmp, *tmp;
- uchar_t *dp, fcs_val;
- int is_lcp, code;
-#if defined(SOL2)
- clock_t lbolt;
-#endif /* SOL2 */
-
- if (msgdsize(mp) < 4) {
- return;
- }
-
- state = (ahdlc_state_t *)q->q_ptr;
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- /*
- * Allocate an output buffer large enough to handle a case where all
- * characters need to be escaped
- */
- outmp_len = (msgdsize(mp) << 1) + /* input block x 2 */
- (sizeof(fcs) << 2) + /* HDLC FCS x 4 */
- (sizeof(uchar_t) << 1); /* HDLC flags x 2 */
-
- outmp = allocb(outmp_len, BPRI_MED);
- if (outmp == NULL) {
- state->stats.ppp_oerrors++;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- return;
- }
-
-#if defined(SOL2)
- /*
- * Check if our last transmit happenned within flag_time, using
- * the system's LBOLT value in clock ticks
- */
- if (drv_getparm(LBOLT, &lbolt) != -1) {
- if (ABS((clock_t)lbolt - state->lbolt) > state->flag_time) {
- *outmp->b_wptr++ = PPP_FLAG;
- }
- state->lbolt = lbolt;
- } else {
- *outmp->b_wptr++ = PPP_FLAG;
- }
-#else
- /*
- * If the driver below still has a message to process, skip the
- * HDLC flag, otherwise, put one in the beginning
- */
- if (qsize(q->q_next) == 0) {
- *outmp->b_wptr++ = PPP_FLAG;
- }
-#endif
-
- /*
- * All control characters must be escaped for LCP packets with code
- * values between 1 (Conf-Req) and 7 (Code-Rej).
- */
- is_lcp = ((MSG_BYTE(mp, 0) == PPP_ALLSTATIONS) &&
- (MSG_BYTE(mp, 1) == PPP_UI) &&
- (MSG_BYTE(mp, 2) == (PPP_LCP >> 8)) &&
- (MSG_BYTE(mp, 3) == (PPP_LCP & 0xff)) &&
- LCP_USE_DFLT(mp));
-
- xaccm = state->xaccm;
- if (is_lcp) {
- bcopy((caddr_t)state->xaccm, (caddr_t)loc_xaccm, sizeof(loc_xaccm));
- loc_xaccm[0] = ~0; /* force escape on 0x00 through 0x1f */
- xaccm = loc_xaccm;
- }
-
- fcs = PPP_INITFCS; /* Initial FCS is 0xffff */
-
- /*
- * Process this block and the rest (if any) attached to the this one
- */
- for (tmp = mp; tmp; tmp = tmp->b_cont) {
- if (tmp->b_datap->db_type == M_DATA) {
- for (dp = tmp->b_rptr; dp < tmp->b_wptr; dp++) {
- fcs = PPP_FCS(fcs, *dp);
- if (IN_TX_MAP(*dp, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = *dp ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = *dp;
- }
- }
- } else {
- continue; /* skip if db_type is something other than M_DATA */
- }
- }
-
- /*
- * Append the HDLC FCS, making sure that escaping is done on any
- * necessary bytes
- */
- fcs_val = (fcs ^ 0xffff) & 0xff;
- if (IN_TX_MAP(fcs_val, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = fcs_val ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = fcs_val;
- }
-
- fcs_val = ((fcs ^ 0xffff) >> 8) & 0xff;
- if (IN_TX_MAP(fcs_val, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = fcs_val ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = fcs_val;
- }
-
- /*
- * And finally, append the HDLC flag, and send it away
- */
- *outmp->b_wptr++ = PPP_FLAG;
-
- state->stats.ppp_obytes += msgdsize(outmp);
- state->stats.ppp_opackets++;
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-
- putnext(q, outmp);
- return;
-}
-
-/*
- * Checks the 32-bit receive ACCM to see if the byte needs un-escaping
- */
-#define IN_RX_MAP(c, m) ((((unsigned int) (uchar_t) (c)) < 0x20) && \
- (m) & (1 << (c)))
-
-
-/*
- * Process received characters.
- */
-static void
-ahdlc_decode(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- mblk_t *om;
- uchar_t *dp;
- ushort_t fcs;
-#if defined(SOL2)
- mblk_t *zmp;
-#endif /* SOL2 */
-
-#if defined(SOL2)
- /*
- * In case the driver (or something below) doesn't send
- * data upstream in one message block, concatenate everything
- */
- if (!((mp->b_wptr - mp->b_rptr == msgdsize(mp)) &&
- ((intpointer_t)mp->b_rptr % sizeof(intpointer_t) == 0))) {
-
- zmp = msgpullup(mp, -1);
- freemsg(mp);
- mp = zmp;
- if (mp == 0)
- return;
- }
-#endif /* SOL2 */
-
- state = (ahdlc_state_t *) q->q_ptr;
-
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- state->stats.ppp_ibytes += msgdsize(mp);
-
- for (dp = mp->b_rptr; dp < mp->b_wptr; dp++) {
-
- /*
- * This should detect the lack of 8-bit communication channel
- * which is necessary for PPP to work. In addition, it also
- * checks on the parity.
- */
- if (*dp & 0x80)
- state->flags |= RCV_B7_1;
- else
- state->flags |= RCV_B7_0;
-
- if (paritytab[*dp >> 5] & (1 << (*dp & 0x1f)))
- state->flags |= RCV_ODDP;
- else
- state->flags |= RCV_EVNP;
-
- /*
- * So we have a HDLC flag ...
- */
- if (*dp == PPP_FLAG) {
-
- /*
- * If we think that it marks the beginning of the frame,
- * then continue to process the next octects
- */
- if ((state->flags & IFLUSH) ||
- (state->rx_buf == 0) ||
- (msgdsize(state->rx_buf) == 0)) {
-
- state->flags &= ~IFLUSH;
- continue;
- }
-
- /*
- * We get here because the above condition isn't true,
- * in which case the HDLC flag was there to mark the end
- * of the frame (or so we think)
- */
- om = state->rx_buf;
-
- if (state->infcs == PPP_GOODFCS) {
- state->stats.ppp_ipackets++;
- adjmsg(om, -PPP_FCSLEN);
- putnext(q, om);
- } else {
- DPRINT2("ppp%d: bad fcs (len=%d)\n",
- state->unit, msgdsize(state->rx_buf));
- freemsg(state->rx_buf);
- state->flags &= ~(IFLUSH | ESCAPED);
- state->stats.ppp_ierrors++;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- }
-
- state->rx_buf = 0;
- continue;
- }
-
- if (state->flags & IFLUSH) {
- continue;
- }
-
- /*
- * Allocate a receive buffer, large enough to store a frame (after
- * un-escaping) of at least 1500 octets. If MRU is negotiated to
- * be more than the default, then allocate that much. In addition,
- * we add an extra 32-bytes for a fudge factor
- */
- if (state->rx_buf == 0) {
- state->rx_buf_size = (state->mru < PPP_MRU ? PPP_MRU : state->mru);
- state->rx_buf_size += (sizeof(u_int32_t) << 3);
- state->rx_buf = allocb(state->rx_buf_size, BPRI_MED);
-
- /*
- * If allocation fails, try again on the next frame
- */
- if (state->rx_buf == 0) {
- state->flags |= IFLUSH;
- continue;
- }
- state->flags &= ~(IFLUSH | ESCAPED);
- state->infcs = PPP_INITFCS;
- }
-
- if (*dp == PPP_ESCAPE) {
- state->flags |= ESCAPED;
- continue;
- }
-
- /*
- * Make sure we un-escape the necessary characters, as well as the
- * ones in our receive async control character map
- */
- if (state->flags & ESCAPED) {
- *dp ^= PPP_TRANS;
- state->flags &= ~ESCAPED;
- } else if (IN_RX_MAP(*dp, state->raccm))
- continue;
-
- /*
- * Unless the peer lied to us about the negotiated MRU, we should
- * never get a frame which is too long. If it happens, toss it away
- * and grab the next incoming one
- */
- if (msgdsize(state->rx_buf) < state->rx_buf_size) {
- state->infcs = PPP_FCS(state->infcs, *dp);
- *state->rx_buf->b_wptr++ = *dp;
- } else {
- DPRINT2("ppp%d: frame too long (%d)\n",
- state->unit, msgdsize(state->rx_buf));
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- state->flags |= IFLUSH;
- }
- }
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-}
-
-static int
-msg_byte(mp, i)
- mblk_t *mp;
- unsigned int i;
-{
- while (mp != 0 && i >= mp->b_wptr - mp->b_rptr)
- mp = mp->b_cont;
- if (mp == 0)
- return -1;
- return mp->b_rptr[i];
-}
diff --git a/mdk-stage1/ppp/modules/ppp_comp.c b/mdk-stage1/ppp/modules/ppp_comp.c
deleted file mode 100644
index f6eef5ab1..000000000
--- a/mdk-stage1/ppp/modules/ppp_comp.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/*
- * ppp_comp.c - STREAMS module for kernel-level compression and CCP support.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under SVR4, Solaris 2, SunOS 4, and Digital UNIX.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/stream.h>
-
-#ifdef SVR4
-#include <sys/conf.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#else
-#include <sys/user.h>
-#ifdef __osf__
-#include <sys/cmn_err.h>
-#endif
-#endif /* SVR4 */
-
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-#ifdef __osf__
-#include <sys/mbuf.h>
-#include <sys/protosw.h>
-#endif
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <net/vjcompress.h>
-
-#define PACKETPTR mblk_t *
-#include <net/ppp-comp.h>
-
-MOD_OPEN_DECL(ppp_comp_open);
-MOD_CLOSE_DECL(ppp_comp_close);
-static int ppp_comp_rput __P((queue_t *, mblk_t *));
-static int ppp_comp_rsrv __P((queue_t *));
-static int ppp_comp_wput __P((queue_t *, mblk_t *));
-static int ppp_comp_wsrv __P((queue_t *));
-static void ppp_comp_ccp __P((queue_t *, mblk_t *, int));
-static int msg_byte __P((mblk_t *, unsigned int));
-
-/* Extract byte i of message mp. */
-#define MSG_BYTE(mp, i) ((i) < (mp)->b_wptr - (mp)->b_rptr? (mp)->b_rptr[i]: \
- msg_byte((mp), (i)))
-
-/* Is this LCP packet one we have to transmit using LCP defaults? */
-#define LCP_USE_DFLT(mp) (1 <= (code = MSG_BYTE((mp), 4)) && code <= 7)
-
-#define PPP_COMP_ID 0xbadf
-static struct module_info minfo = {
-#ifdef PRIOQ
- PPP_COMP_ID, "ppp_comp", 0, INFPSZ, 16512, 16384,
-#else
- PPP_COMP_ID, "ppp_comp", 0, INFPSZ, 16384, 4096,
-#endif
-};
-
-static struct qinit r_init = {
- ppp_comp_rput, ppp_comp_rsrv, ppp_comp_open, ppp_comp_close,
- NULL, &minfo, NULL
-};
-
-static struct qinit w_init = {
- ppp_comp_wput, ppp_comp_wsrv, NULL, NULL, NULL, &minfo, NULL
-};
-
-#if defined(SVR4) && !defined(SOL2)
-int pcmpdevflag = 0;
-#define ppp_compinfo pcmpinfo
-#endif
-struct streamtab ppp_compinfo = {
- &r_init, &w_init, NULL, NULL
-};
-
-int ppp_comp_count; /* number of module instances in use */
-
-#ifdef __osf__
-
-static void ppp_comp_alloc __P((comp_state_t *));
-typedef struct memreq {
- unsigned char comp_opts[20];
- int cmd;
- int thread_status;
- char *returned_mem;
-} memreq_t;
-
-#endif
-
-typedef struct comp_state {
- int flags;
- int mru;
- int mtu;
- int unit;
- struct compressor *xcomp;
- void *xstate;
- struct compressor *rcomp;
- void *rstate;
- struct vjcompress vj_comp;
- int vj_last_ierrors;
- struct pppstat stats;
-#ifdef __osf__
- memreq_t memreq;
- thread_t thread;
-#endif
-} comp_state_t;
-
-
-#ifdef __osf__
-extern task_t first_task;
-#endif
-
-/* Bits in flags are as defined in pppio.h. */
-#define CCP_ERR (CCP_ERROR | CCP_FATALERROR)
-#define LAST_MOD 0x1000000 /* no ppp modules below us */
-#define DBGLOG 0x2000000 /* log debugging stuff */
-
-#define MAX_IPHDR 128 /* max TCP/IP header size */
-#define MAX_VJHDR 20 /* max VJ compressed header size (?) */
-
-#undef MIN /* just in case */
-#define MIN(a, b) ((a) < (b)? (a): (b))
-
-/*
- * List of compressors we know about.
- */
-
-#if DO_BSD_COMPRESS
-extern struct compressor ppp_bsd_compress;
-#endif
-#if DO_DEFLATE
-extern struct compressor ppp_deflate, ppp_deflate_draft;
-#endif
-
-struct compressor *ppp_compressors[] = {
-#if DO_BSD_COMPRESS
- &ppp_bsd_compress,
-#endif
-#if DO_DEFLATE
- &ppp_deflate,
- &ppp_deflate_draft,
-#endif
- NULL
-};
-
-/*
- * STREAMS module entry points.
- */
-MOD_OPEN(ppp_comp_open)
-{
- comp_state_t *cp;
-#ifdef __osf__
- thread_t thread;
-#endif
-
- if (q->q_ptr == NULL) {
- cp = (comp_state_t *) ALLOC_SLEEP(sizeof(comp_state_t));
- if (cp == NULL)
- OPEN_ERROR(ENOSR);
- bzero((caddr_t)cp, sizeof(comp_state_t));
- WR(q)->q_ptr = q->q_ptr = (caddr_t) cp;
- cp->mru = PPP_MRU;
- cp->mtu = PPP_MTU;
- cp->xstate = NULL;
- cp->rstate = NULL;
- vj_compress_init(&cp->vj_comp, -1);
-#ifdef __osf__
- if (!(thread = kernel_thread_w_arg(first_task, ppp_comp_alloc, (void *)cp)))
- OPEN_ERROR(ENOSR);
- cp->thread = thread;
-#endif
- ++ppp_comp_count;
- qprocson(q);
- }
- return 0;
-}
-
-MOD_CLOSE(ppp_comp_close)
-{
- comp_state_t *cp;
-
- qprocsoff(q);
- cp = (comp_state_t *) q->q_ptr;
- if (cp != NULL) {
- if (cp->xstate != NULL)
- (*cp->xcomp->comp_free)(cp->xstate);
- if (cp->rstate != NULL)
- (*cp->rcomp->decomp_free)(cp->rstate);
-#ifdef __osf__
- if (!cp->thread)
- printf("ppp_comp_close: NULL thread!\n");
- else
- thread_terminate(cp->thread);
-#endif
- FREE(cp, sizeof(comp_state_t));
- q->q_ptr = NULL;
- OTHERQ(q)->q_ptr = NULL;
- --ppp_comp_count;
- }
- return 0;
-}
-
-#ifdef __osf__
-
-/* thread for calling back to a compressor's memory allocator
- * Needed for Digital UNIX since it's VM can't handle requests
- * for large amounts of memory without blocking. The thread
- * provides a context in which we can call a memory allocator
- * that may block.
- */
-static void
-ppp_comp_alloc(comp_state_t *cp)
-{
- int len, cmd;
- unsigned char *compressor_options;
- thread_t thread;
- void *(*comp_allocator)();
-
-
-#if defined(MAJOR_VERSION) && (MAJOR_VERSION <= 2)
-
- /* In 2.x and earlier the argument gets passed
- * in the thread structure itself. Yuck.
- */
- thread = current_thread();
- cp = thread->reply_port;
- thread->reply_port = PORT_NULL;
-
-#endif
-
- for (;;) {
- assert_wait((vm_offset_t)&cp->memreq.thread_status, TRUE);
- thread_block();
-
- if (thread_should_halt(current_thread()))
- thread_halt_self();
- cmd = cp->memreq.cmd;
- compressor_options = &cp->memreq.comp_opts[0];
- len = compressor_options[1];
- if (cmd == PPPIO_XCOMP) {
- cp->memreq.returned_mem = cp->xcomp->comp_alloc(compressor_options, len);
- if (!cp->memreq.returned_mem) {
- cp->memreq.thread_status = ENOSR;
- } else {
- cp->memreq.thread_status = 0;
- }
- } else {
- cp->memreq.returned_mem = cp->rcomp->decomp_alloc(compressor_options, len);
- if (!cp->memreq.returned_mem) {
- cp->memreq.thread_status = ENOSR;
- } else {
- cp->memreq.thread_status = 0;
- }
- }
- }
-}
-
-#endif /* __osf__ */
-
-/* here's the deal with memory allocation under Digital UNIX.
- * Some other may also benefit from this...
- * We can't ask for huge chunks of memory in a context where
- * the caller can't be put to sleep (like, here.) The alloc
- * is likely to fail. Instead we do this: the first time we
- * get called, kick off a thread to do the allocation. Return
- * immediately to the caller with EAGAIN, as an indication that
- * they should send down the ioctl again. By the time the
- * second call comes in it's likely that the memory allocation
- * thread will have returned with the requested memory. We will
- * continue to return EAGAIN however until the thread has completed.
- * When it has, we return zero (and the memory) if the allocator
- * was successful and ENOSR otherwise.
- *
- * Callers of the RCOMP and XCOMP ioctls are encouraged (but not
- * required) to loop for some number of iterations with a small
- * delay in the loop body (for instance a 1/10-th second "sleep"
- * via select.)
- */
-static int
-ppp_comp_wput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- struct iocblk *iop;
- comp_state_t *cp;
- int error, len, n;
- int flags, mask;
- mblk_t *np;
- struct compressor **comp;
- struct ppp_stats *psp;
- struct ppp_comp_stats *csp;
- unsigned char *opt_data;
- int nxslots, nrslots;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_wput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
-
- case M_DATA:
- putq(q, mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- switch (iop->ioc_cmd) {
-
- case PPPIO_CFLAGS:
- /* set/get CCP state */
- if (iop->ioc_count != 2 * sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_CFLAGS b_cont = 0!\n", cp->unit);
- break;
- }
- flags = ((int *) mp->b_cont->b_rptr)[0];
- mask = ((int *) mp->b_cont->b_rptr)[1];
- cp->flags = (cp->flags & ~mask) | (flags & mask);
- if ((mask & CCP_ISOPEN) && (flags & CCP_ISOPEN) == 0) {
- if (cp->xstate != NULL) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = NULL;
- }
- if (cp->rstate != NULL) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- cp->flags &= ~CCP_ISUP;
- }
- error = 0;
- iop->ioc_count = sizeof(int);
- ((int *) mp->b_cont->b_rptr)[0] = cp->flags;
- mp->b_cont->b_wptr = mp->b_cont->b_rptr + sizeof(int);
- break;
-
- case PPPIO_VJINIT:
- /*
- * Initialize VJ compressor/decompressor
- */
- if (iop->ioc_count != 2)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_VJINIT b_cont = 0!\n", cp->unit);
- break;
- }
- nxslots = mp->b_cont->b_rptr[0] + 1;
- nrslots = mp->b_cont->b_rptr[1] + 1;
- if (nxslots > MAX_STATES || nrslots > MAX_STATES)
- break;
- vj_compress_init(&cp->vj_comp, nxslots);
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_XCOMP:
- case PPPIO_RCOMP:
- if (iop->ioc_count <= 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_[XR]COMP b_cont = 0!\n", cp->unit);
- break;
- }
- opt_data = mp->b_cont->b_rptr;
- len = mp->b_cont->b_wptr - opt_data;
- if (len > iop->ioc_count)
- len = iop->ioc_count;
- if (opt_data[1] < 2 || opt_data[1] > len)
- break;
- for (comp = ppp_compressors; *comp != NULL; ++comp)
- if ((*comp)->compress_proto == opt_data[0]) {
- /* here's the handler! */
- error = 0;
-#ifndef __osf__
- if (iop->ioc_cmd == PPPIO_XCOMP) {
- /* A previous call may have fetched memory for a compressor
- * that's now being retired or reset. Free it using it's
- * mechanism for freeing stuff.
- */
- if (cp->xstate != NULL) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = NULL;
- }
- cp->xcomp = *comp;
- cp->xstate = (*comp)->comp_alloc(opt_data, len);
- if (cp->xstate == NULL)
- error = ENOSR;
- } else {
- if (cp->rstate != NULL) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- cp->rcomp = *comp;
- cp->rstate = (*comp)->decomp_alloc(opt_data, len);
- if (cp->rstate == NULL)
- error = ENOSR;
- }
-#else
- if ((error = cp->memreq.thread_status) != EAGAIN)
- if (iop->ioc_cmd == PPPIO_XCOMP) {
- if (cp->xstate) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = 0;
- }
- /* sanity check for compressor options
- */
- if (sizeof (cp->memreq.comp_opts) < len) {
- printf("can't handle options for compressor %d (%d)\n", opt_data[0],
- opt_data[1]);
- cp->memreq.thread_status = ENOSR;
- cp->memreq.returned_mem = 0;
- }
- /* fill in request for the thread and kick it off
- */
- if (cp->memreq.thread_status == 0 && !cp->memreq.returned_mem) {
- bcopy(opt_data, cp->memreq.comp_opts, len);
- cp->memreq.cmd = PPPIO_XCOMP;
- cp->xcomp = *comp;
- error = cp->memreq.thread_status = EAGAIN;
- thread_wakeup((vm_offset_t)&cp->memreq.thread_status);
- } else {
- cp->xstate = cp->memreq.returned_mem;
- cp->memreq.returned_mem = 0;
- cp->memreq.thread_status = 0;
- }
- } else {
- if (cp->rstate) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- if (sizeof (cp->memreq.comp_opts) < len) {
- printf("can't handle options for compressor %d (%d)\n", opt_data[0],
- opt_data[1]);
- cp->memreq.thread_status = ENOSR;
- cp->memreq.returned_mem = 0;
- }
- if (cp->memreq.thread_status == 0 && !cp->memreq.returned_mem) {
- bcopy(opt_data, cp->memreq.comp_opts, len);
- cp->memreq.cmd = PPPIO_RCOMP;
- cp->rcomp = *comp;
- error = cp->memreq.thread_status = EAGAIN;
- thread_wakeup((vm_offset_t)&cp->memreq.thread_status);
- } else {
- cp->rstate = cp->memreq.returned_mem;
- cp->memreq.returned_mem = 0;
- cp->memreq.thread_status = 0;
- }
- }
-#endif
- break;
- }
- iop->ioc_count = 0;
- break;
-
- case PPPIO_GETSTAT:
- if ((cp->flags & LAST_MOD) == 0) {
- error = -1; /* let the ppp_ahdl module handle it */
- break;
- }
- np = allocb(sizeof(struct ppp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- psp = (struct ppp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_stats);
- iop->ioc_count = sizeof(struct ppp_stats);
- psp->p = cp->stats;
- psp->vj = cp->vj_comp.stats;
- error = 0;
- break;
-
- case PPPIO_GETCSTAT:
- np = allocb(sizeof(struct ppp_comp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- csp = (struct ppp_comp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_comp_stats);
- iop->ioc_count = sizeof(struct ppp_comp_stats);
- bzero((caddr_t)csp, sizeof(struct ppp_comp_stats));
- if (cp->xstate != 0)
- (*cp->xcomp->comp_stat)(cp->xstate, &csp->c);
- if (cp->rstate != 0)
- (*cp->rcomp->decomp_stat)(cp->rstate, &csp->d);
- error = 0;
- break;
-
- case PPPIO_DEBUG:
- if (iop->ioc_count != sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_DEBUG b_cont = 0!\n", cp->unit);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n == PPPDBG_LOG + PPPDBG_COMP) {
- DPRINT1("ppp_comp%d: debug log enabled\n", cp->unit);
- cp->flags |= DBGLOG;
- error = 0;
- iop->ioc_count = 0;
- } else {
- error = -1;
- }
- break;
-
- case PPPIO_LASTMOD:
- cp->flags |= LAST_MOD;
- error = 0;
- break;
-
- default:
- error = -1;
- break;
- }
-
- if (error < 0)
- putnext(q, mp);
- else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
- mp->b_datap->db_type = M_IOCNAK;
- iop->ioc_error = error;
- iop->ioc_count = 0;
- qreply(q, mp);
- }
- break;
-
- case M_CTL:
- switch (*mp->b_rptr) {
- case PPPCTL_MTU:
- cp->mtu = ((unsigned short *)mp->b_rptr)[1];
- break;
- case PPPCTL_MRU:
- cp->mru = ((unsigned short *)mp->b_rptr)[1];
- break;
- case PPPCTL_UNIT:
- cp->unit = mp->b_rptr[1];
- break;
- }
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_wsrv(q)
- queue_t *q;
-{
- mblk_t *mp, *cmp = NULL;
- comp_state_t *cp;
- int len, proto, type, hlen, code;
- struct ip *ip;
- unsigned char *vjhdr, *dp;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_wsrv\n");
- return 0;
- }
-
- while ((mp = getq(q)) != 0) {
- /* assert(mp->b_datap->db_type == M_DATA) */
-#ifdef PRIOQ
- if (!bcanputnext(q,mp->b_band))
-#else
- if (!canputnext(q))
-#endif PRIOQ
- {
- putbq(q, mp);
- break;
- }
-
- /*
- * First check the packet length and work out what the protocol is.
- */
- len = msgdsize(mp);
- if (len < PPP_HDRLEN) {
- DPRINT1("ppp_comp_wsrv: bogus short packet (%d)\n", len);
- freemsg(mp);
- cp->stats.ppp_oerrors++;
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- continue;
- }
- proto = (MSG_BYTE(mp, 2) << 8) + MSG_BYTE(mp, 3);
-
- /*
- * Make sure we've got enough data in the first mblk
- * and that we are its only user.
- */
- if (proto == PPP_CCP)
- hlen = len;
- else if (proto == PPP_IP)
- hlen = PPP_HDRLEN + MAX_IPHDR;
- else
- hlen = PPP_HDRLEN;
- if (hlen > len)
- hlen = len;
- if (mp->b_wptr < mp->b_rptr + hlen || mp->b_datap->db_ref > 1) {
- PULLUP(mp, hlen);
- if (mp == 0) {
- DPRINT1("ppp_comp_wsrv: pullup failed (%d)\n", hlen);
- cp->stats.ppp_oerrors++;
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- continue;
- }
- }
-
- /*
- * Do VJ compression if requested.
- */
- if (proto == PPP_IP && (cp->flags & COMP_VJC)) {
- ip = (struct ip *) (mp->b_rptr + PPP_HDRLEN);
- if (ip->ip_p == IPPROTO_TCP) {
- type = vj_compress_tcp(ip, len - PPP_HDRLEN, &cp->vj_comp,
- (cp->flags & COMP_VJCCID), &vjhdr);
- switch (type) {
- case TYPE_UNCOMPRESSED_TCP:
- mp->b_rptr[3] = proto = PPP_VJC_UNCOMP;
- break;
- case TYPE_COMPRESSED_TCP:
- dp = vjhdr - PPP_HDRLEN;
- dp[1] = mp->b_rptr[1]; /* copy control field */
- dp[0] = mp->b_rptr[0]; /* copy address field */
- dp[2] = 0; /* set protocol field */
- dp[3] = proto = PPP_VJC_COMP;
- mp->b_rptr = dp;
- break;
- }
- }
- }
-
- /*
- * Do packet compression if enabled.
- */
- if (proto == PPP_CCP)
- ppp_comp_ccp(q, mp, 0);
- else if (proto != PPP_LCP && (cp->flags & CCP_COMP_RUN)
- && cp->xstate != NULL) {
- len = msgdsize(mp);
- (*cp->xcomp->compress)(cp->xstate, &cmp, mp, len,
- (cp->flags & CCP_ISUP? cp->mtu + PPP_HDRLEN: 0));
- if (cmp != NULL) {
-#ifdef PRIOQ
- cmp->b_band=mp->b_band;
-#endif PRIOQ
- freemsg(mp);
- mp = cmp;
- }
- }
-
- /*
- * Do address/control and protocol compression if enabled.
- */
- if ((cp->flags & COMP_AC)
- && !(proto == PPP_LCP && LCP_USE_DFLT(mp))) {
- mp->b_rptr += 2; /* drop the address & ctrl fields */
- if (proto < 0x100 && (cp->flags & COMP_PROT))
- ++mp->b_rptr; /* drop the high protocol byte */
- } else if (proto < 0x100 && (cp->flags & COMP_PROT)) {
- /* shuffle up the address & ctrl fields */
- mp->b_rptr[2] = mp->b_rptr[1];
- mp->b_rptr[1] = mp->b_rptr[0];
- ++mp->b_rptr;
- }
-
- cp->stats.ppp_opackets++;
- cp->stats.ppp_obytes += msgdsize(mp);
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_rput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- comp_state_t *cp;
- struct iocblk *iop;
- struct ppp_stats *psp;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_rput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
-
- case M_DATA:
- putq(q, mp);
- break;
-
- case M_IOCACK:
- iop = (struct iocblk *) mp->b_rptr;
- switch (iop->ioc_cmd) {
- case PPPIO_GETSTAT:
- /*
- * Catch this on the way back from the ppp_ahdl module
- * so we can fill in the VJ stats.
- */
- if (mp->b_cont == 0 || iop->ioc_count != sizeof(struct ppp_stats))
- break;
- psp = (struct ppp_stats *) mp->b_cont->b_rptr;
- psp->vj = cp->vj_comp.stats;
- break;
- }
- putnext(q, mp);
- break;
-
- case M_CTL:
- switch (mp->b_rptr[0]) {
- case PPPCTL_IERROR:
- ++cp->stats.ppp_ierrors;
- break;
- case PPPCTL_OERROR:
- ++cp->stats.ppp_oerrors;
- break;
- }
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_rsrv(q)
- queue_t *q;
-{
- int proto, rv, i;
- mblk_t *mp, *dmp = NULL, *np;
- uchar_t *dp, *iphdr;
- comp_state_t *cp;
- int len, hlen, vjlen;
- u_int iphlen;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_rsrv\n");
- return 0;
- }
-
- while ((mp = getq(q)) != 0) {
- /* assert(mp->b_datap->db_type == M_DATA) */
- if (!canputnext(q)) {
- putbq(q, mp);
- break;
- }
-
- len = msgdsize(mp);
- cp->stats.ppp_ibytes += len;
- cp->stats.ppp_ipackets++;
-
- /*
- * First work out the protocol and where the PPP header ends.
- */
- i = 0;
- proto = MSG_BYTE(mp, 0);
- if (proto == PPP_ALLSTATIONS) {
- i = 2;
- proto = MSG_BYTE(mp, 2);
- }
- if ((proto & 1) == 0) {
- ++i;
- proto = (proto << 8) + MSG_BYTE(mp, i);
- }
- hlen = i + 1;
-
- /*
- * Now reconstruct a complete, contiguous PPP header at the
- * start of the packet.
- */
- if (hlen < ((cp->flags & DECOMP_AC)? 0: 2)
- + ((cp->flags & DECOMP_PROT)? 1: 2)) {
- /* count these? */
- goto bad;
- }
- if (mp->b_rptr + hlen > mp->b_wptr) {
- adjmsg(mp, hlen); /* XXX check this call */
- hlen = 0;
- }
- if (hlen != PPP_HDRLEN) {
- /*
- * We need to put some bytes on the front of the packet
- * to make a full-length PPP header.
- * If we can put them in *mp, we do, otherwise we
- * tack another mblk on the front.
- * XXX we really shouldn't need to carry around
- * the address and control at this stage.
- */
- dp = mp->b_rptr + hlen - PPP_HDRLEN;
- if (dp < mp->b_datap->db_base || mp->b_datap->db_ref > 1) {
- np = allocb(PPP_HDRLEN, BPRI_MED);
- if (np == 0)
- goto bad;
- np->b_cont = mp;
- mp->b_rptr += hlen;
- mp = np;
- dp = mp->b_wptr;
- mp->b_wptr += PPP_HDRLEN;
- } else
- mp->b_rptr = dp;
-
- dp[0] = PPP_ALLSTATIONS;
- dp[1] = PPP_UI;
- dp[2] = proto >> 8;
- dp[3] = proto;
- }
-
- /*
- * Now see if we have a compressed packet to decompress,
- * or a CCP packet to take notice of.
- */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto == PPP_CCP) {
- len = msgdsize(mp);
- if (mp->b_wptr < mp->b_rptr + len) {
- PULLUP(mp, len);
- if (mp == 0)
- goto bad;
- }
- ppp_comp_ccp(q, mp, 1);
- } else if (proto == PPP_COMP) {
- if ((cp->flags & CCP_ISUP)
- && (cp->flags & CCP_DECOMP_RUN) && cp->rstate
- && (cp->flags & CCP_ERR) == 0) {
- rv = (*cp->rcomp->decompress)(cp->rstate, mp, &dmp);
- switch (rv) {
- case DECOMP_OK:
- freemsg(mp);
- mp = dmp;
- if (mp == NULL) {
- /* no error, but no packet returned either. */
- continue;
- }
- break;
- case DECOMP_ERROR:
- cp->flags |= CCP_ERROR;
- ++cp->stats.ppp_ierrors;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- break;
- case DECOMP_FATALERROR:
- cp->flags |= CCP_FATALERROR;
- ++cp->stats.ppp_ierrors;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- break;
- }
- }
- } else if (cp->rstate && (cp->flags & CCP_DECOMP_RUN)) {
- (*cp->rcomp->incomp)(cp->rstate, mp);
- }
-
- /*
- * Now do VJ decompression.
- */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto == PPP_VJC_COMP || proto == PPP_VJC_UNCOMP) {
- len = msgdsize(mp) - PPP_HDRLEN;
- if ((cp->flags & DECOMP_VJC) == 0 || len <= 0)
- goto bad;
-
- /*
- * Advance past the ppp header.
- * Here we assume that the whole PPP header is in the first mblk.
- */
- np = mp;
- dp = np->b_rptr + PPP_HDRLEN;
- if (dp >= mp->b_wptr) {
- np = np->b_cont;
- dp = np->b_rptr;
- }
-
- /*
- * Make sure we have sufficient contiguous data at this point.
- */
- hlen = (proto == PPP_VJC_COMP)? MAX_VJHDR: MAX_IPHDR;
- if (hlen > len)
- hlen = len;
- if (np->b_wptr < dp + hlen || np->b_datap->db_ref > 1) {
- PULLUP(mp, hlen + PPP_HDRLEN);
- if (mp == 0)
- goto bad;
- np = mp;
- dp = np->b_rptr + PPP_HDRLEN;
- }
-
- if (proto == PPP_VJC_COMP) {
- /*
- * Decompress VJ-compressed packet.
- * First reset compressor if an input error has occurred.
- */
- if (cp->stats.ppp_ierrors != cp->vj_last_ierrors) {
- if (cp->flags & DBGLOG)
- DPRINT1("ppp%d: resetting VJ\n", cp->unit);
- vj_uncompress_err(&cp->vj_comp);
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- }
-
- vjlen = vj_uncompress_tcp(dp, np->b_wptr - dp, len,
- &cp->vj_comp, &iphdr, &iphlen);
- if (vjlen < 0) {
- if (cp->flags & DBGLOG)
- DPRINT2("ppp%d: vj_uncomp_tcp failed, pkt len %d\n",
- cp->unit, len);
- ++cp->vj_last_ierrors; /* so we don't reset next time */
- goto bad;
- }
-
- /* drop ppp and vj headers off */
- if (mp != np) {
- freeb(mp);
- mp = np;
- }
- mp->b_rptr = dp + vjlen;
-
- /* allocate a new mblk for the ppp and ip headers */
- if ((np = allocb(iphlen + PPP_HDRLEN + 4, BPRI_MED)) == 0)
- goto bad;
- dp = np->b_rptr; /* prepend mblk with TCP/IP hdr */
- dp[0] = PPP_ALLSTATIONS; /* reconstruct PPP header */
- dp[1] = PPP_UI;
- dp[2] = PPP_IP >> 8;
- dp[3] = PPP_IP;
- bcopy((caddr_t)iphdr, (caddr_t)dp + PPP_HDRLEN, iphlen);
- np->b_wptr = dp + iphlen + PPP_HDRLEN;
- np->b_cont = mp;
-
- /* XXX there seems to be a bug which causes panics in strread
- if we make an mbuf with only the IP header in it :-( */
- if (mp->b_wptr - mp->b_rptr > 4) {
- bcopy((caddr_t)mp->b_rptr, (caddr_t)np->b_wptr, 4);
- mp->b_rptr += 4;
- np->b_wptr += 4;
- } else {
- bcopy((caddr_t)mp->b_rptr, (caddr_t)np->b_wptr,
- mp->b_wptr - mp->b_rptr);
- np->b_wptr += mp->b_wptr - mp->b_rptr;
- np->b_cont = mp->b_cont;
- freeb(mp);
- }
-
- mp = np;
-
- } else {
- /*
- * "Decompress" a VJ-uncompressed packet.
- */
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- if (!vj_uncompress_uncomp(dp, hlen, &cp->vj_comp)) {
- if (cp->flags & DBGLOG)
- DPRINT2("ppp%d: vj_uncomp_uncomp failed, pkt len %d\n",
- cp->unit, len);
- ++cp->vj_last_ierrors; /* don't need to reset next time */
- goto bad;
- }
- mp->b_rptr[3] = PPP_IP; /* fix up the PPP protocol field */
- }
- }
-
- putnext(q, mp);
- continue;
-
- bad:
- if (mp != 0)
- freemsg(mp);
- cp->stats.ppp_ierrors++;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- }
-
- return 0;
-}
-
-/*
- * Handle a CCP packet being sent or received.
- * Here all the data in the packet is in a single mbuf.
- */
-static void
-ppp_comp_ccp(q, mp, rcvd)
- queue_t *q;
- mblk_t *mp;
- int rcvd;
-{
- int len, clen;
- comp_state_t *cp;
- unsigned char *dp;
-
- len = msgdsize(mp);
- if (len < PPP_HDRLEN + CCP_HDRLEN)
- return;
-
- cp = (comp_state_t *) q->q_ptr;
- dp = mp->b_rptr + PPP_HDRLEN;
- len -= PPP_HDRLEN;
- clen = CCP_LENGTH(dp);
- if (clen > len)
- return;
-
- switch (CCP_CODE(dp)) {
- case CCP_CONFREQ:
- case CCP_TERMREQ:
- case CCP_TERMACK:
- cp->flags &= ~CCP_ISUP;
- break;
-
- case CCP_CONFACK:
- if ((cp->flags & (CCP_ISOPEN | CCP_ISUP)) == CCP_ISOPEN
- && clen >= CCP_HDRLEN + CCP_OPT_MINLEN
- && clen >= CCP_HDRLEN + CCP_OPT_LENGTH(dp + CCP_HDRLEN)) {
- if (!rcvd) {
- if (cp->xstate != NULL
- && (*cp->xcomp->comp_init)
- (cp->xstate, dp + CCP_HDRLEN, clen - CCP_HDRLEN,
- cp->unit, 0, ((cp->flags & DBGLOG) != 0)))
- cp->flags |= CCP_COMP_RUN;
- } else {
- if (cp->rstate != NULL
- && (*cp->rcomp->decomp_init)
- (cp->rstate, dp + CCP_HDRLEN, clen - CCP_HDRLEN,
- cp->unit, 0, cp->mru, ((cp->flags & DBGLOG) != 0)))
- cp->flags = (cp->flags & ~CCP_ERR) | CCP_DECOMP_RUN;
- }
- }
- break;
-
- case CCP_RESETACK:
- if (cp->flags & CCP_ISUP) {
- if (!rcvd) {
- if (cp->xstate && (cp->flags & CCP_COMP_RUN))
- (*cp->xcomp->comp_reset)(cp->xstate);
- } else {
- if (cp->rstate && (cp->flags & CCP_DECOMP_RUN)) {
- (*cp->rcomp->decomp_reset)(cp->rstate);
- cp->flags &= ~CCP_ERROR;
- }
- }
- }
- break;
- }
-}
-
-#if 0
-dump_msg(mp)
- mblk_t *mp;
-{
- dblk_t *db;
-
- while (mp != 0) {
- db = mp->b_datap;
- DPRINT2("mp=%x cont=%x ", mp, mp->b_cont);
- DPRINT3("rptr=%x wptr=%x datap=%x\n", mp->b_rptr, mp->b_wptr, db);
- DPRINT2(" base=%x lim=%x", db->db_base, db->db_lim);
- DPRINT2(" ref=%d type=%d\n", db->db_ref, db->db_type);
- mp = mp->b_cont;
- }
-}
-#endif
-
-static int
-msg_byte(mp, i)
- mblk_t *mp;
- unsigned int i;
-{
- while (mp != 0 && i >= mp->b_wptr - mp->b_rptr)
- mp = mp->b_cont;
- if (mp == 0)
- return -1;
- return mp->b_rptr[i];
-}
diff --git a/mdk-stage1/ppp/modules/ppp_mod.h b/mdk-stage1/ppp/modules/ppp_mod.h
deleted file mode 100644
index f0af00886..000000000
--- a/mdk-stage1/ppp/modules/ppp_mod.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Miscellaneous definitions for PPP STREAMS modules.
- */
-
-/*
- * Macros for allocating and freeing kernel memory.
- */
-#ifdef SVR4 /* SVR4, including Solaris 2 */
-#include <sys/kmem.h>
-#define ALLOC_SLEEP(n) kmem_alloc((n), KM_SLEEP)
-#define ALLOC_NOSLEEP(n) kmem_alloc((n), KM_NOSLEEP)
-#define FREE(p, n) kmem_free((p), (n))
-#endif
-
-#ifdef SUNOS4
-#include <sys/kmem_alloc.h> /* SunOS 4.x */
-#define ALLOC_SLEEP(n) kmem_alloc((n), KMEM_SLEEP)
-#define ALLOC_NOSLEEP(n) kmem_alloc((n), KMEM_NOSLEEP)
-#define FREE(p, n) kmem_free((p), (n))
-#define NOTSUSER() (suser()? 0: EPERM)
-#define bcanputnext(q, band) canputnext((q))
-#endif /* SunOS 4 */
-
-#ifdef __osf__
-#include <sys/malloc.h>
-
-/* caution: this mirrors macros in sys/malloc.h, and uses interfaces
- * which are subject to change.
- * The problems are that:
- * - the official MALLOC macro wants the lhs of the assignment as an argument,
- * and it takes care of the assignment itself (yuck.)
- * - PPP insists on using "FREE" which conflicts with a macro of the same name.
- *
- */
-#ifdef BUCKETINDX /* V2.0 */
-#define ALLOC_SLEEP(n) (void *)malloc((u_long)(n), BUCKETP(n), M_DEVBUF, M_WAITOK)
-#define ALLOC_NOSLEEP(n) (void *)malloc((u_long)(n), BUCKETP(n), M_DEVBUF, M_NOWAIT)
-#else
-#define ALLOC_SLEEP(n) (void *)malloc((u_long)(n), BUCKETINDEX(n), M_DEVBUF, M_WAITOK)
-#define ALLOC_NOSLEEP(n) (void *)malloc((u_long)(n), BUCKETINDEX(n), M_DEVBUF, M_NOWAIT)
-#endif
-
-#define bcanputnext(q, band) canputnext((q))
-
-#ifdef FREE
-#undef FREE
-#endif
-#define FREE(p, n) free((void *)(p), M_DEVBUF)
-
-#define NO_DLPI 1
-
-#ifndef IFT_PPP
-#define IFT_PPP 0x17
-#endif
-
-#include <sys/proc.h>
-#define NOTSUSER() (suser(u.u_procp->p_rcred, &u.u_acflag) ? EPERM : 0)
-
-/* #include "ppp_osf.h" */
-
-#endif /* __osf__ */
-
-#ifdef AIX4
-#define ALLOC_SLEEP(n) xmalloc((n), 0, pinned_heap) /* AIX V4.x */
-#define ALLOC_NOSLEEP(n) xmalloc((n), 0, pinned_heap) /* AIX V4.x */
-#define FREE(p, n) xmfree((p), pinned_heap)
-#define NOTSUSER() (suser()? 0: EPERM)
-#endif /* AIX */
-
-/*
- * Macros for printing debugging stuff.
- */
-#ifdef DEBUG
-#if defined(SVR4) || defined(__osf__)
-#if defined(SNI)
-#include <sys/strlog.h>
-#define STRLOG_ID 4712
-#define DPRINT(f) strlog(STRLOG_ID, 0, 0, SL_TRACE, f)
-#define DPRINT1(f, a1) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1)
-#define DPRINT2(f, a1, a2) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1, a2, a3)
-#else
-#define DPRINT(f) cmn_err(CE_CONT, f)
-#define DPRINT1(f, a1) cmn_err(CE_CONT, f, a1)
-#define DPRINT2(f, a1, a2) cmn_err(CE_CONT, f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) cmn_err(CE_CONT, f, a1, a2, a3)
-#endif /* SNI */
-#else
-#define DPRINT(f) printf(f)
-#define DPRINT1(f, a1) printf(f, a1)
-#define DPRINT2(f, a1, a2) printf(f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) printf(f, a1, a2, a3)
-#endif /* SVR4 or OSF */
-
-#else
-#define DPRINT(f) 0
-#define DPRINT1(f, a1) 0
-#define DPRINT2(f, a1, a2) 0
-#define DPRINT3(f, a1, a2, a3) 0
-#endif /* DEBUG */
-
-#ifndef SVR4
-typedef unsigned char uchar_t;
-typedef unsigned short ushort_t;
-#ifndef __osf__
-typedef int minor_t;
-#endif
-#endif
-
-/*
- * If we don't have multithreading support, define substitutes.
- */
-#ifndef D_MP
-# define qprocson(q)
-# define qprocsoff(q)
-# define put(q, mp) ((*(q)->q_qinfo->qi_putp)((q), (mp)))
-# define canputnext(q) canput((q)->q_next)
-# define qwriter(q, mp, func, scope) (func)((q), (mp))
-#endif
-
-#ifdef D_MP
-/* Use msgpullup if we have other multithreading support. */
-#define PULLUP(mp, len) \
- do { \
- mblk_t *np = msgpullup((mp), (len)); \
- freemsg((mp)); \
- mp = np; \
- } while (0)
-
-#else
-/* Use pullupmsg if we don't have any multithreading support. */
-#define PULLUP(mp, len) \
- do { \
- if (!pullupmsg((mp), (len))) { \
- freemsg((mp)); \
- mp = 0; \
- } \
- } while (0)
-#endif
-
-/*
- * How to declare the open and close procedures for a module.
- */
-#ifdef SVR4
-#define MOD_OPEN_DECL(name) \
-static int name __P((queue_t *, dev_t *, int, int, cred_t *))
-
-#define MOD_CLOSE_DECL(name) \
-static int name __P((queue_t *, int, cred_t *))
-
-#define MOD_OPEN(name) \
-static int name(q, devp, flag, sflag, credp) \
- queue_t *q; \
- dev_t *devp; \
- int flag, sflag; \
- cred_t *credp;
-
-#define MOD_CLOSE(name) \
-static int name(q, flag, credp) \
- queue_t *q; \
- int flag; \
- cred_t *credp;
-
-#define OPEN_ERROR(x) return (x)
-#define DRV_OPEN_OK(dev) return 0
-
-#define NOTSUSER() (drv_priv(credp))
-
-#else /* not SVR4 */
-#define MOD_OPEN_DECL(name) \
-static int name __P((queue_t *, int, int, int))
-
-#define MOD_CLOSE_DECL(name) \
-static int name __P((queue_t *, int))
-
-#define MOD_OPEN(name) \
-static int name(q, dev, flag, sflag) \
- queue_t *q; \
- int dev; \
- int flag, sflag;
-
-#define MOD_CLOSE(name) \
-static int name(q, flag) \
- queue_t *q; \
- int flag;
-
-#define OPEN_ERROR(x) { u.u_error = (x); return OPENFAIL; }
-#define DRV_OPEN_OK(dev) return (dev)
-
-#endif /* SVR4 */
diff --git a/mdk-stage1/ppp/modules/vjcompress.c b/mdk-stage1/ppp/modules/vjcompress.c
deleted file mode 100644
index 809b87231..000000000
--- a/mdk-stage1/ppp/modules/vjcompress.c
+++ /dev/null
@@ -1,587 +0,0 @@
-/*
- * Routines to compress and uncompess tcp packets (for transmission
- * over low speed serial lines.
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989:
- * - Initial distribution.
- *
- * Modified June 1993 by Paul Mackerras, paulus@cs.anu.edu.au,
- * so that the entire packet being decompressed doesn't have
- * to be in contiguous memory (just the compressed header).
- */
-
-/*
- * This version is used under SunOS 4.x, Digital UNIX, AIX 4.x,
- * and SVR4 systems including Solaris 2.
- *
- * $Id$
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-
-#ifdef SVR4
-#ifndef __GNUC__
-#include <sys/byteorder.h> /* for ntohl, etc. */
-#else
-/* make sure we don't get the gnu "fixed" one! */
-#include "/usr/include/sys/byteorder.h"
-#endif
-#endif
-
-#ifdef __osf__
-#include <net/net_globals.h>
-#endif
-#include <netinet/in.h>
-
-#ifdef AIX4
-#define _NETINET_IN_SYSTM_H_
-typedef u_long n_long;
-#else
-#include <netinet/in_systm.h>
-#endif
-
-#include <netinet/ip.h>
-#include <netinet/tcp.h>
-
-#include <net/ppp_defs.h>
-#include <net/vjcompress.h>
-
-#ifndef VJ_NO_STATS
-#define INCR(counter) ++comp->stats.counter
-#else
-#define INCR(counter)
-#endif
-
-#define BCMP(p1, p2, n) bcmp((char *)(p1), (char *)(p2), (int)(n))
-#undef BCOPY
-#define BCOPY(p1, p2, n) bcopy((char *)(p1), (char *)(p2), (int)(n))
-#ifndef KERNEL
-#define ovbcopy bcopy
-#endif
-
-#ifdef __osf__
-#define getip_hl(base) (((base).ip_vhl)&0xf)
-#define getth_off(base) ((((base).th_xoff)&0xf0)>>4)
-
-#else
-#define getip_hl(base) ((base).ip_hl)
-#define getth_off(base) ((base).th_off)
-#endif
-
-void
-vj_compress_init(comp, max_state)
- struct vjcompress *comp;
- int max_state;
-{
- register u_int i;
- register struct cstate *tstate = comp->tstate;
-
- if (max_state == -1)
- max_state = MAX_STATES - 1;
- bzero((char *)comp, sizeof(*comp));
- for (i = max_state; i > 0; --i) {
- tstate[i].cs_id = i;
- tstate[i].cs_next = &tstate[i - 1];
- }
- tstate[0].cs_next = &tstate[max_state];
- tstate[0].cs_id = 0;
- comp->last_cs = &tstate[0];
- comp->last_recv = 255;
- comp->last_xmit = 255;
- comp->flags = VJF_TOSS;
-}
-
-
-/* ENCODE encodes a number that is known to be non-zero. ENCODEZ
- * checks for zero (since zero has to be encoded in the long, 3 byte
- * form).
- */
-#define ENCODE(n) { \
- if ((u_short)(n) >= 256) { \
- *cp++ = 0; \
- cp[1] = (n); \
- cp[0] = (n) >> 8; \
- cp += 2; \
- } else { \
- *cp++ = (n); \
- } \
-}
-#define ENCODEZ(n) { \
- if ((u_short)(n) >= 256 || (u_short)(n) == 0) { \
- *cp++ = 0; \
- cp[1] = (n); \
- cp[0] = (n) >> 8; \
- cp += 2; \
- } else { \
- *cp++ = (n); \
- } \
-}
-
-#define DECODEL(f) { \
- if (*cp == 0) {\
- u_int32_t tmp = ntohl(f) + ((cp[1] << 8) | cp[2]); \
- (f) = htonl(tmp); \
- cp += 3; \
- } else { \
- u_int32_t tmp = ntohl(f) + (u_int32_t)*cp++; \
- (f) = htonl(tmp); \
- } \
-}
-
-#define DECODES(f) { \
- if (*cp == 0) {\
- u_short tmp = ntohs(f) + ((cp[1] << 8) | cp[2]); \
- (f) = htons(tmp); \
- cp += 3; \
- } else { \
- u_short tmp = ntohs(f) + (u_int32_t)*cp++; \
- (f) = htons(tmp); \
- } \
-}
-
-#define DECODEU(f) { \
- if (*cp == 0) {\
- (f) = htons((cp[1] << 8) | cp[2]); \
- cp += 3; \
- } else { \
- (f) = htons((u_int32_t)*cp++); \
- } \
-}
-
-u_int
-vj_compress_tcp(ip, mlen, comp, compress_cid, vjhdrp)
- register struct ip *ip;
- u_int mlen;
- struct vjcompress *comp;
- int compress_cid;
- u_char **vjhdrp;
-{
- register struct cstate *cs = comp->last_cs->cs_next;
- register u_int hlen = getip_hl(*ip);
- register struct tcphdr *oth;
- register struct tcphdr *th;
- register u_int deltaS, deltaA;
- register u_int changes = 0;
- u_char new_seq[16];
- register u_char *cp = new_seq;
-
- /*
- * Bail if this is an IP fragment or if the TCP packet isn't
- * `compressible' (i.e., ACK isn't set or some other control bit is
- * set). (We assume that the caller has already made sure the
- * packet is IP proto TCP).
- */
- if ((ip->ip_off & htons(0x3fff)) || mlen < 40)
- return (TYPE_IP);
-
- th = (struct tcphdr *)&((int *)ip)[hlen];
- if ((th->th_flags & (TH_SYN|TH_FIN|TH_RST|TH_ACK)) != TH_ACK)
- return (TYPE_IP);
- /*
- * Packet is compressible -- we're going to send either a
- * COMPRESSED_TCP or UNCOMPRESSED_TCP packet. Either way we need
- * to locate (or create) the connection state. Special case the
- * most recently used connection since it's most likely to be used
- * again & we don't have to do any reordering if it's used.
- */
- INCR(vjs_packets);
- if (ip->ip_src.s_addr != cs->cs_ip.ip_src.s_addr ||
- ip->ip_dst.s_addr != cs->cs_ip.ip_dst.s_addr ||
- *(int *)th != ((int *)&cs->cs_ip)[getip_hl(cs->cs_ip)]) {
- /*
- * Wasn't the first -- search for it.
- *
- * States are kept in a circularly linked list with
- * last_cs pointing to the end of the list. The
- * list is kept in lru order by moving a state to the
- * head of the list whenever it is referenced. Since
- * the list is short and, empirically, the connection
- * we want is almost always near the front, we locate
- * states via linear search. If we don't find a state
- * for the datagram, the oldest state is (re-)used.
- */
- register struct cstate *lcs;
- register struct cstate *lastcs = comp->last_cs;
-
- do {
- lcs = cs; cs = cs->cs_next;
- INCR(vjs_searches);
- if (ip->ip_src.s_addr == cs->cs_ip.ip_src.s_addr
- && ip->ip_dst.s_addr == cs->cs_ip.ip_dst.s_addr
- && *(int *)th == ((int *)&cs->cs_ip)[getip_hl(cs->cs_ip)])
- goto found;
- } while (cs != lastcs);
-
- /*
- * Didn't find it -- re-use oldest cstate. Send an
- * uncompressed packet that tells the other side what
- * connection number we're using for this conversation.
- * Note that since the state list is circular, the oldest
- * state points to the newest and we only need to set
- * last_cs to update the lru linkage.
- */
- INCR(vjs_misses);
- comp->last_cs = lcs;
- hlen += getth_off(*th);
- hlen <<= 2;
- if (hlen > mlen)
- return (TYPE_IP);
- goto uncompressed;
-
- found:
- /*
- * Found it -- move to the front on the connection list.
- */
- if (cs == lastcs)
- comp->last_cs = lcs;
- else {
- lcs->cs_next = cs->cs_next;
- cs->cs_next = lastcs->cs_next;
- lastcs->cs_next = cs;
- }
- }
-
- /*
- * Make sure that only what we expect to change changed. The first
- * line of the `if' checks the IP protocol version, header length &
- * type of service. The 2nd line checks the "Don't fragment" bit.
- * The 3rd line checks the time-to-live and protocol (the protocol
- * check is unnecessary but costless). The 4th line checks the TCP
- * header length. The 5th line checks IP options, if any. The 6th
- * line checks TCP options, if any. If any of these things are
- * different between the previous & current datagram, we send the
- * current datagram `uncompressed'.
- */
- oth = (struct tcphdr *)&((int *)&cs->cs_ip)[hlen];
- deltaS = hlen;
- hlen += getth_off(*th);
- hlen <<= 2;
- if (hlen > mlen)
- return (TYPE_IP);
-
- if (((u_short *)ip)[0] != ((u_short *)&cs->cs_ip)[0] ||
- ((u_short *)ip)[3] != ((u_short *)&cs->cs_ip)[3] ||
- ((u_short *)ip)[4] != ((u_short *)&cs->cs_ip)[4] ||
- getth_off(*th) != getth_off(*oth) ||
- (deltaS > 5 && BCMP(ip + 1, &cs->cs_ip + 1, (deltaS - 5) << 2)) ||
- (getth_off(*th) > 5 && BCMP(th + 1, oth + 1, (getth_off(*th) - 5) << 2)))
- goto uncompressed;
-
- /*
- * Figure out which of the changing fields changed. The
- * receiver expects changes in the order: urgent, window,
- * ack, seq (the order minimizes the number of temporaries
- * needed in this section of code).
- */
- if (th->th_flags & TH_URG) {
- deltaS = ntohs(th->th_urp);
- ENCODEZ(deltaS);
- changes |= NEW_U;
- } else if (th->th_urp != oth->th_urp)
- /* argh! URG not set but urp changed -- a sensible
- * implementation should never do this but RFC793
- * doesn't prohibit the change so we have to deal
- * with it. */
- goto uncompressed;
-
- if ((deltaS = (u_short)(ntohs(th->th_win) - ntohs(oth->th_win))) > 0) {
- ENCODE(deltaS);
- changes |= NEW_W;
- }
-
- if ((deltaA = ntohl(th->th_ack) - ntohl(oth->th_ack)) > 0) {
- if (deltaA > 0xffff)
- goto uncompressed;
- ENCODE(deltaA);
- changes |= NEW_A;
- }
-
- if ((deltaS = ntohl(th->th_seq) - ntohl(oth->th_seq)) > 0) {
- if (deltaS > 0xffff)
- goto uncompressed;
- ENCODE(deltaS);
- changes |= NEW_S;
- }
-
- switch(changes) {
-
- case 0:
- /*
- * Nothing changed. If this packet contains data and the
- * last one didn't, this is probably a data packet following
- * an ack (normal on an interactive connection) and we send
- * it compressed. Otherwise it's probably a retransmit,
- * retransmitted ack or window probe. Send it uncompressed
- * in case the other side missed the compressed version.
- */
- if (ip->ip_len != cs->cs_ip.ip_len &&
- ntohs(cs->cs_ip.ip_len) == hlen)
- break;
-
- /* (fall through) */
-
- case SPECIAL_I:
- case SPECIAL_D:
- /*
- * actual changes match one of our special case encodings --
- * send packet uncompressed.
- */
- goto uncompressed;
-
- case NEW_S|NEW_A:
- if (deltaS == deltaA && deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {
- /* special case for echoed terminal traffic */
- changes = SPECIAL_I;
- cp = new_seq;
- }
- break;
-
- case NEW_S:
- if (deltaS == ntohs(cs->cs_ip.ip_len) - hlen) {
- /* special case for data xfer */
- changes = SPECIAL_D;
- cp = new_seq;
- }
- break;
- }
-
- deltaS = ntohs(ip->ip_id) - ntohs(cs->cs_ip.ip_id);
- if (deltaS != 1) {
- ENCODEZ(deltaS);
- changes |= NEW_I;
- }
- if (th->th_flags & TH_PUSH)
- changes |= TCP_PUSH_BIT;
- /*
- * Grab the cksum before we overwrite it below. Then update our
- * state with this packet's header.
- */
- deltaA = ntohs(th->th_sum);
- BCOPY(ip, &cs->cs_ip, hlen);
-
- /*
- * We want to use the original packet as our compressed packet.
- * (cp - new_seq) is the number of bytes we need for compressed
- * sequence numbers. In addition we need one byte for the change
- * mask, one for the connection id and two for the tcp checksum.
- * So, (cp - new_seq) + 4 bytes of header are needed. hlen is how
- * many bytes of the original packet to toss so subtract the two to
- * get the new packet size.
- */
- deltaS = cp - new_seq;
- cp = (u_char *)ip;
- if (compress_cid == 0 || comp->last_xmit != cs->cs_id) {
- comp->last_xmit = cs->cs_id;
- hlen -= deltaS + 4;
- *vjhdrp = (cp += hlen);
- *cp++ = changes | NEW_C;
- *cp++ = cs->cs_id;
- } else {
- hlen -= deltaS + 3;
- *vjhdrp = (cp += hlen);
- *cp++ = changes;
- }
- *cp++ = deltaA >> 8;
- *cp++ = deltaA;
- BCOPY(new_seq, cp, deltaS);
- INCR(vjs_compressed);
- return (TYPE_COMPRESSED_TCP);
-
- /*
- * Update connection state cs & send uncompressed packet (that is,
- * a regular ip/tcp packet but with the 'conversation id' we hope
- * to use on future compressed packets in the protocol field).
- */
- uncompressed:
- BCOPY(ip, &cs->cs_ip, hlen);
- ip->ip_p = cs->cs_id;
- comp->last_xmit = cs->cs_id;
- return (TYPE_UNCOMPRESSED_TCP);
-}
-
-/*
- * Called when we may have missed a packet.
- */
-void
-vj_uncompress_err(comp)
- struct vjcompress *comp;
-{
- comp->flags |= VJF_TOSS;
- INCR(vjs_errorin);
-}
-
-/*
- * "Uncompress" a packet of type TYPE_UNCOMPRESSED_TCP.
- */
-int
-vj_uncompress_uncomp(buf, buflen, comp)
- u_char *buf;
- int buflen;
- struct vjcompress *comp;
-{
- register u_int hlen;
- register struct cstate *cs;
- register struct ip *ip;
-
- ip = (struct ip *) buf;
- hlen = getip_hl(*ip) << 2;
- if (ip->ip_p >= MAX_STATES
- || hlen + sizeof(struct tcphdr) > buflen
- || (hlen += getth_off(*((struct tcphdr *)&((char *)ip)[hlen])) << 2)
- > buflen
- || hlen > MAX_HDR) {
- comp->flags |= VJF_TOSS;
- INCR(vjs_errorin);
- return (0);
- }
- cs = &comp->rstate[comp->last_recv = ip->ip_p];
- comp->flags &=~ VJF_TOSS;
- ip->ip_p = IPPROTO_TCP;
- BCOPY(ip, &cs->cs_ip, hlen);
- cs->cs_hlen = hlen;
- INCR(vjs_uncompressedin);
- return (1);
-}
-
-/*
- * Uncompress a packet of type TYPE_COMPRESSED_TCP.
- * The packet starts at buf and is of total length total_len.
- * The first buflen bytes are at buf; this must include the entire
- * compressed TCP/IP header. This procedure returns the length
- * of the VJ header, with a pointer to the uncompressed IP header
- * in *hdrp and its length in *hlenp.
- */
-int
-vj_uncompress_tcp(buf, buflen, total_len, comp, hdrp, hlenp)
- u_char *buf;
- int buflen, total_len;
- struct vjcompress *comp;
- u_char **hdrp;
- u_int *hlenp;
-{
- register u_char *cp;
- register u_int hlen, changes;
- register struct tcphdr *th;
- register struct cstate *cs;
- register u_short *bp;
- register u_int vjlen;
- register u_int32_t tmp;
-
- INCR(vjs_compressedin);
- cp = buf;
- changes = *cp++;
- if (changes & NEW_C) {
- /* Make sure the state index is in range, then grab the state.
- * If we have a good state index, clear the 'discard' flag. */
- if (*cp >= MAX_STATES)
- goto bad;
-
- comp->flags &=~ VJF_TOSS;
- comp->last_recv = *cp++;
- } else {
- /* this packet has an implicit state index. If we've
- * had a line error since the last time we got an
- * explicit state index, we have to toss the packet. */
- if (comp->flags & VJF_TOSS) {
- INCR(vjs_tossed);
- return (-1);
- }
- }
- cs = &comp->rstate[comp->last_recv];
- hlen = getip_hl(cs->cs_ip) << 2;
- th = (struct tcphdr *)&((u_char *)&cs->cs_ip)[hlen];
- th->th_sum = htons((*cp << 8) | cp[1]);
- cp += 2;
- if (changes & TCP_PUSH_BIT)
- th->th_flags |= TH_PUSH;
- else
- th->th_flags &=~ TH_PUSH;
-
- switch (changes & SPECIALS_MASK) {
- case SPECIAL_I:
- {
- register u_int32_t i = ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;
- /* some compilers can't nest inline assembler.. */
- tmp = ntohl(th->th_ack) + i;
- th->th_ack = htonl(tmp);
- tmp = ntohl(th->th_seq) + i;
- th->th_seq = htonl(tmp);
- }
- break;
-
- case SPECIAL_D:
- /* some compilers can't nest inline assembler.. */
- tmp = ntohl(th->th_seq) + ntohs(cs->cs_ip.ip_len) - cs->cs_hlen;
- th->th_seq = htonl(tmp);
- break;
-
- default:
- if (changes & NEW_U) {
- th->th_flags |= TH_URG;
- DECODEU(th->th_urp);
- } else
- th->th_flags &=~ TH_URG;
- if (changes & NEW_W)
- DECODES(th->th_win);
- if (changes & NEW_A)
- DECODEL(th->th_ack);
- if (changes & NEW_S)
- DECODEL(th->th_seq);
- break;
- }
- if (changes & NEW_I) {
- DECODES(cs->cs_ip.ip_id);
- } else {
- cs->cs_ip.ip_id = ntohs(cs->cs_ip.ip_id) + 1;
- cs->cs_ip.ip_id = htons(cs->cs_ip.ip_id);
- }
-
- /*
- * At this point, cp points to the first byte of data in the
- * packet. Fill in the IP total length and update the IP
- * header checksum.
- */
- vjlen = cp - buf;
- buflen -= vjlen;
- if (buflen < 0)
- /* we must have dropped some characters (crc should detect
- * this but the old slip framing won't) */
- goto bad;
-
- total_len += cs->cs_hlen - vjlen;
- cs->cs_ip.ip_len = htons(total_len);
-
- /* recompute the ip header checksum */
- bp = (u_short *) &cs->cs_ip;
- cs->cs_ip.ip_sum = 0;
- for (changes = 0; hlen > 0; hlen -= 2)
- changes += *bp++;
- changes = (changes & 0xffff) + (changes >> 16);
- changes = (changes & 0xffff) + (changes >> 16);
- cs->cs_ip.ip_sum = ~ changes;
-
- *hdrp = (u_char *) &cs->cs_ip;
- *hlenp = cs->cs_hlen;
- return vjlen;
-
- bad:
- comp->flags |= VJF_TOSS;
- INCR(vjs_errorin);
- return (-1);
-}
diff --git a/mdk-stage1/ppp/pppd/.cvsignore b/mdk-stage1/ppp/pppd/.cvsignore
deleted file mode 100644
index 476ef2253..000000000
--- a/mdk-stage1/ppp/pppd/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-pppd
-pppd-DIET
diff --git a/mdk-stage1/ppp/pppd/Makefile b/mdk-stage1/ppp/pppd/Makefile
deleted file mode 100644
index 3544dd19d..000000000
--- a/mdk-stage1/ppp/pppd/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ../..
-
-include $(top_dir)/Makefile.common
-
-
-TARGETS = pppd
-
-BINTARGET = ../pppd-bin
-
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o *.a $(BINTARGET) pppd
-
-FLAGS = -Wall -Wno-deprecated-declarations -Werror -Os -fomit-frame-pointer -DDO_BSD_COMPRESS=0 -D_linux_=1 -DHAVE_MMAP -DNO_DRAND48 -D_BSD_SOURCE -D_GNU_SOURCE
-
-INCS = -I../include -I.
-
-ifeq (GLIBC, $(L))
-LIBS = -static -lcrypt
-endif
-
-
-OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o multilink.o tdb.o tty.o
-
-
-pppd: $(OBJS)
- $(DIET) gcc -o $@ $^ $(LIBS)
- $(STRIPCMD) $@
- cp -f $@ $(BINTARGET)
-
-$(OBJS): %.o: %.c
- $(DIET) gcc $(FLAGS) $(INCS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/ppp/pppd/Makefile.linux b/mdk-stage1/ppp/pppd/Makefile.linux
deleted file mode 100644
index 47d6ba01e..000000000
--- a/mdk-stage1/ppp/pppd/Makefile.linux
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# pppd makefile for Linux
-# $Id$
-#
-
-# Default installation locations
-BINDIR = $(DESTDIR)/usr/sbin
-MANDIR = $(DESTDIR)/usr/man
-
-PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \
- ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c cbcp.c \
- demand.c utils.c multilink.c tdb.c tty.c
-HEADERS = callout.h pathnames.h patchlevel.h chap.h md5.h chap_ms.h md4.h \
- ipxcp.h cbcp.h tdb.h
-MANPAGES = pppd.8
-PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
- auth.o options.o demand.o utils.o sys-linux.o ipxcp.o multilink.o \
- tdb.o tty.o
-
-all: pppd
-
-#
-# include dependancies if present and backup if as a header file
-ifeq (.depend,$(wildcard .depend))
-include .depend
-endif
-
-CC = gcc
-#
-COPTS = -Wall $(RPM_OPT_FLAGS)
-LIBS = -lutil
-
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-LIBS += -lcrypt
-endif
-
-# Uncomment the next 2 lines to include support for Microsoft's
-# MS-CHAP authentication protocol.
-CHAPMS=y
-USE_CRYPT=y
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-HAVE_CRYPT_H=y
-endif
-
-# Uncomment the next line to include support for PPP packet filtering.
-# This requires that the libpcap library and headers be installed
-# and that the kernel driver support PPP packet filtering, which it
-# doesn't yet.
-#FILTER=y
-
-HAS_SHADOW=y
-USE_PAM=y
-#HAVE_INET6=y
-
-PLUGIN=y
-
-INCLUDE_DIRS= -I../include
-
-COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MULTILINK -DHAVE_MMAP
-
-CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
-ifdef CHAPMS
-CFLAGS += -DCHAPMS=1
-ifndef USE_CRYPT
-LIBS := -ldes $(LIBS)
-else
-CFLAGS += -DUSE_CRYPT=1
-ifneq ($(wildcard /usr/include/crypt.h),)
-CFLAGS += -DHAVE_CRYPT_H=1
-endif
-endif
-PPPDOBJS += md4.o chap_ms.o
-ifdef MSLANMAN
-CFLAGS += -DMSLANMAN=1
-endif
-endif
-
-ifdef HAS_SHADOW
-CFLAGS += -DHAS_SHADOW
-#LIBS := -lshadow $(LIBS)
-endif
-
-# For "Pluggable Authentication Modules", see ftp.redhat.com:/pub/pam/.
-ifdef USE_PAM
-CFLAGS += -DUSE_PAM
-LIBS := -lpam -ldl $(LIBS)
-endif
-
-# Lock library binary for Linux is included in 'linux' subdirectory.
-ifdef LOCKLIB
-LIBS := -llock $(LIBS)
-CFLAGS += -DLOCKLIB=1
-endif
-
-ifdef PLUGIN
-CFLAGS += -DPLUGIN
-LDFLAGS += -Wl,-E
-LIBS += -ldl
-endif
-
-ifdef FILTER
-LIBS += -lpcap
-CFLAGS += -DPPP_FILTER -I/usr/include/pcap
-endif
-
-ifdef HAVE_INET6
- PPPDSRCS += ipv6cp.c eui64.c
- HEADERS += ipv6cp.h eui64.h
- PPPDOBJS += ipv6cp.o eui64.o
- CFLAGS += -DINET6=1
-endif
-
-
-INSTALL= install
-
-install: pppd
- mkdir -p $(BINDIR) $(MANDIR)
- $(INSTALL) -m 555 pppd $(BINDIR)/pppd
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)/man8
-
-pppd: $(PPPDOBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) -o pppd $(PPPDOBJS) $(LIBS)
-
-clean:
- rm -f $(PPPDOBJS) pppd *~ #* core
-
-depend:
- $(CPP) -M $(CFLAGS) $(PPPDSRCS) >.depend
diff --git a/mdk-stage1/ppp/pppd/Makefile.linux.make b/mdk-stage1/ppp/pppd/Makefile.linux.make
deleted file mode 100644
index d98a32562..000000000
--- a/mdk-stage1/ppp/pppd/Makefile.linux.make
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# pppd makefile for Linux
-# $Id$
-#
-
-# Default installation locations
-BINDIR = /usr/sbin
-MANDIR = /usr/man
-
-PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \
- ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c cbcp.c \
- demand.c utils.c multilink.c tdb.c tty.c
-HEADERS = callout.h pathnames.h patchlevel.h chap.h md5.h chap_ms.h md4.h \
- ipxcp.h cbcp.h tdb.h
-MANPAGES = pppd.8
-PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
- auth.o options.o demand.o utils.o sys-linux.o ipxcp.o multilink.o \
- tdb.o tty.o
-
-all: pppd
-
-#
-# include dependancies if present and backup if as a header file
-ifeq (.depend,$(wildcard .depend))
-include .depend
-endif
-
-# CC = gcc
-#
-COPTS = -O2 -pipe -Wall -g
-LIBS =
-
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-LIBS += -lcrypt
-endif
-
-# Uncomment the next 2 lines to include support for Microsoft's
-# MS-CHAP authentication protocol.
-CHAPMS=y
-USE_CRYPT=y
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-HAVE_CRYPT_H=y
-endif
-
-# Uncomment the next line to include support for PPP packet filtering.
-# This requires that the libpcap library and headers be installed
-# and that the kernel driver support PPP packet filtering, which it
-# doesn't yet.
-#FILTER=y
-
-HAS_SHADOW=y
-#USE_PAM=y
-#HAVE_INET6=y
-
-PLUGIN=y
-
-INCLUDE_DIRS= -I../include
-
-COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MULTILINK -DHAVE_MMAP
-
-CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
-ifdef CHAPMS
-CFLAGS += -DCHAPMS=1
-ifndef USE_CRYPT
-LIBS := -ldes $(LIBS)
-else
-CFLAGS += -DUSE_CRYPT=1
-ifneq ($(wildcard /usr/include/crypt.h),)
-CFLAGS += -DHAVE_CRYPT_H=1
-endif
-endif
-PPPDOBJS += md4.o chap_ms.o
-ifdef MSLANMAN
-CFLAGS += -DMSLANMAN=1
-endif
-endif
-
-ifdef HAS_SHADOW
-CFLAGS += -DHAS_SHADOW
-#LIBS := -lshadow $(LIBS)
-endif
-
-# For "Pluggable Authentication Modules", see ftp.redhat.com:/pub/pam/.
-ifdef USE_PAM
-CFLAGS += -DUSE_PAM
-LIBS := -lpam -ldl $(LIBS)
-endif
-
-# Lock library binary for Linux is included in 'linux' subdirectory.
-ifdef LOCKLIB
-LIBS := -llock $(LIBS)
-CFLAGS += -DLOCKLIB=1
-endif
-
-ifdef PLUGIN
-CFLAGS += -DPLUGIN
-LDFLAGS += -Wl,-E
-LIBS += -ldl
-endif
-
-ifdef FILTER
-LIBS += -lpcap
-CFLAGS += -DPPP_FILTER -I/usr/include/pcap
-endif
-
-ifdef HAVE_INET6
- PPPDSRCS += ipv6cp.c eui64.c
- HEADERS += ipv6cp.h eui64.h
- PPPDOBJS += ipv6cp.o eui64.o
- CFLAGS += -DINET6=1
-endif
-
-
-INSTALL= install -o root
-
-install: pppd
- mkdir -p $(BINDIR) $(MANDIR)
- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
- if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
- chmod o-rx,u+s $(BINDIR)/pppd; fi
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)/man8
-
-pppd: $(PPPDOBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) -o pppd $(PPPDOBJS) $(LIBS)
-
-clean:
- rm -f $(PPPDOBJS) pppd *~ #* core
-
-depend:
- $(CPP) -M $(CFLAGS) $(PPPDSRCS) >.depend
diff --git a/mdk-stage1/ppp/pppd/Makefile.linux.makeopt b/mdk-stage1/ppp/pppd/Makefile.linux.makeopt
deleted file mode 100644
index 3094c941c..000000000
--- a/mdk-stage1/ppp/pppd/Makefile.linux.makeopt
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# pppd makefile for Linux
-# $Id$
-#
-
-# Default installation locations
-BINDIR = $(DESTDIR)/usr/sbin
-MANDIR = $(DESTDIR)/usr/man
-
-PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap.c md5.c ccp.c \
- ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c cbcp.c \
- demand.c utils.c multilink.c tdb.c tty.c
-HEADERS = callout.h pathnames.h patchlevel.h chap.h md5.h chap_ms.h md4.h \
- ipxcp.h cbcp.h tdb.h
-MANPAGES = pppd.8
-PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
- auth.o options.o demand.o utils.o sys-linux.o ipxcp.o multilink.o \
- tdb.o tty.o
-
-all: pppd
-
-#
-# include dependancies if present and backup if as a header file
-ifeq (.depend,$(wildcard .depend))
-include .depend
-endif
-
-CC = gcc
-#
-COPTS = -O2 -pipe -Wall -g
-LIBS = -lutil
-
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-LIBS += -lcrypt
-endif
-
-# Uncomment the next 2 lines to include support for Microsoft's
-# MS-CHAP authentication protocol.
-CHAPMS=y
-USE_CRYPT=y
-ifneq ($(wildcard /usr/lib/libcrypt.*),)
-HAVE_CRYPT_H=y
-endif
-
-# Uncomment the next line to include support for PPP packet filtering.
-# This requires that the libpcap library and headers be installed
-# and that the kernel driver support PPP packet filtering, which it
-# doesn't yet.
-#FILTER=y
-
-HAS_SHADOW=y
-USE_PAM=y
-#HAVE_INET6=y
-
-PLUGIN=y
-
-INCLUDE_DIRS= -I../include
-
-COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MULTILINK -DHAVE_MMAP
-
-CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)
-
-ifdef CHAPMS
-CFLAGS += -DCHAPMS=1
-ifndef USE_CRYPT
-LIBS := -ldes $(LIBS)
-else
-CFLAGS += -DUSE_CRYPT=1
-ifneq ($(wildcard /usr/include/crypt.h),)
-CFLAGS += -DHAVE_CRYPT_H=1
-endif
-endif
-PPPDOBJS += md4.o chap_ms.o
-ifdef MSLANMAN
-CFLAGS += -DMSLANMAN=1
-endif
-endif
-
-ifdef HAS_SHADOW
-CFLAGS += -DHAS_SHADOW
-#LIBS := -lshadow $(LIBS)
-endif
-
-# For "Pluggable Authentication Modules", see ftp.redhat.com:/pub/pam/.
-ifdef USE_PAM
-CFLAGS += -DUSE_PAM
-LIBS := -lpam -ldl $(LIBS)
-endif
-
-# Lock library binary for Linux is included in 'linux' subdirectory.
-ifdef LOCKLIB
-LIBS := -llock $(LIBS)
-CFLAGS += -DLOCKLIB=1
-endif
-
-ifdef PLUGIN
-CFLAGS += -DPLUGIN
-LDFLAGS += -Wl,-E
-LIBS += -ldl
-endif
-
-ifdef FILTER
-LIBS += -lpcap
-CFLAGS += -DPPP_FILTER -I/usr/include/pcap
-endif
-
-ifdef HAVE_INET6
- PPPDSRCS += ipv6cp.c eui64.c
- HEADERS += ipv6cp.h eui64.h
- PPPDOBJS += ipv6cp.o eui64.o
- CFLAGS += -DINET6=1
-endif
-
-
-INSTALL= install
-
-install: pppd
- mkdir -p $(BINDIR) $(MANDIR)
- $(INSTALL) -m 555 pppd $(BINDIR)/pppd
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)/man8
-
-pppd: $(PPPDOBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) -o pppd $(PPPDOBJS) $(LIBS)
-
-clean:
- rm -f $(PPPDOBJS) pppd *~ #* core
-
-depend:
- $(CPP) -M $(CFLAGS) $(PPPDSRCS) >.depend
diff --git a/mdk-stage1/ppp/pppd/Makefile.sol2 b/mdk-stage1/ppp/pppd/Makefile.sol2
deleted file mode 100644
index dfdcddd97..000000000
--- a/mdk-stage1/ppp/pppd/Makefile.sol2
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Makefile for pppd under Solaris 2.
-# $Id$
-#
-
-include ../solaris/Makedefs
-
-COPTS += -xO2 -xspace -W0,-Lt
-CFLAGS = -I../include -DSVR4 -DSOL2 $(COPTS)
-LIBS = -lsocket -lnsl
-
-OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o tty.o \
- ccp.o auth.o options.o demand.o utils.o sys-solaris.o tdb.o
-
-#
-# uncomment the following to enable plugins
-#
-CFLAGS += -DPLUGIN
-LIBS += -ldl
-
-#
-# Solaris 8 and above accomodates /var/run, so uncomment the
-# following to place pppd process IDs on that location
-#
-#CFLAGS += -D_PATH_VARRUN='"/var/run/"'
-
-#
-# uncomment the following to enable IPv6
-#
-# Solaris 8 and on includes support for IPv6
-#
-#CFLAGS += -DINET6
-#OBJS += ipv6cp.o eui64.o
-
-#
-# Make targets
-#
-all: pppd
-
-pppd: $(OBJS)
- $(CC) -o pppd $(OBJS) $(LIBS)
-
-install:
- $(INSTALL) -f $(BINDIR) -m 4755 -u root pppd
- $(INSTALL) -f $(MANDIR)/man8 -m 444 pppd.8
-
-clean:
- rm -f $(OBJS) pppd *~ core y.tab.c y.tab.h
diff --git a/mdk-stage1/ppp/pppd/Makefile.sunos4 b/mdk-stage1/ppp/pppd/Makefile.sunos4
deleted file mode 100644
index 694ac341f..000000000
--- a/mdk-stage1/ppp/pppd/Makefile.sunos4
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Makefile for pppd under SunOS 4.
-# $Id$
-#
-
-include ../sunos4/Makedefs
-
-LIBS =
-
-CFLAGS = $(COPTS) -I../include -DSUNOS4 -DGIDSET_TYPE=int \
- -DLOCK_DIR=\"/usr/spool/locks\"
-
-all: pppd
-
-OBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
- auth.o options.o demand.o utils.o sys-sunos4.o tty.o
-
-pppd: $(OBJS)
- $(CC) -o pppd $(OBJS) $(LIBS)
-
-install:
- $(INSTALL) -c -m 4555 pppd $(BINDIR)/pppd
- $(INSTALL) -c -m 444 pppd.8 $(MANDIR)/man8/pppd.8
-
-clean:
- rm -f $(OBJS) pppd *~ core
diff --git a/mdk-stage1/ppp/pppd/auth.c b/mdk-stage1/ppp/pppd/auth.c
deleted file mode 100644
index 5f95a2982..000000000
--- a/mdk-stage1/ppp/pppd/auth.c
+++ /dev/null
@@ -1,1939 +0,0 @@
-/*
- * auth.c - PPP authentication and phase control.
- *
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <utmp.h>
-#include <fcntl.h>
-#if defined(_PATH_LASTLOG) && defined(_linux_)
-#include <lastlog.h>
-#endif
-
-#include <netdb.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#ifdef USE_PAM
-#include <security/pam_appl.h>
-#endif
-
-#ifdef HAS_SHADOW
-#include <shadow.h>
-#ifndef PW_PPP
-#define PW_PPP PW_LOGIN
-#endif
-#endif
-
-#include "pppd.h"
-#include "fsm.h"
-#include "lcp.h"
-#include "ipcp.h"
-#include "upap.h"
-#include "chap.h"
-#ifdef CBCP_SUPPORT
-#include "cbcp.h"
-#endif
-#include "pathnames.h"
-
-#include <time.h>
-
-static const char rcsid[] = RCSID;
-
-/* Bits in scan_authfile return value */
-#define NONWILD_SERVER 1
-#define NONWILD_CLIENT 2
-
-#define ISWILD(word) (word[0] == '*' && word[1] == 0)
-
-/* The name by which the peer authenticated itself to us. */
-char peer_authname[MAXNAMELEN];
-
-/* Records which authentication operations haven't completed yet. */
-static int auth_pending[NUM_PPP];
-
-/* Set if we have successfully called plogin() */
-static int logged_in;
-
-/* List of addresses which the peer may use. */
-static struct permitted_ip *addresses[NUM_PPP];
-
-/* Wordlist giving addresses which the peer may use
- without authenticating itself. */
-static struct wordlist *noauth_addrs;
-
-/* Extra options to apply, from the secrets file entry for the peer. */
-static struct wordlist *extra_options;
-
-/* Number of network protocols which we have opened. */
-static int num_np_open;
-
-/* Number of network protocols which have come up. */
-static int num_np_up;
-
-/* Set if we got the contents of passwd[] from the pap-secrets file. */
-static int passwd_from_file;
-
-/* Set if we require authentication only because we have a default route. */
-static bool default_auth;
-
-/* Hook to enable a plugin to control the idle time limit */
-int (*idle_time_hook) __P((struct ppp_idle *)) = NULL;
-
-/* Hook for a plugin to say whether we can possibly authenticate any peer */
-int (*pap_check_hook) __P((void)) = NULL;
-
-/* Hook for a plugin to check the PAP user and password */
-int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
- struct wordlist **paddrs,
- struct wordlist **popts)) = NULL;
-
-/* Hook for a plugin to know about the PAP user logout */
-void (*pap_logout_hook) __P((void)) = NULL;
-
-/* Hook for a plugin to get the PAP password for authenticating us */
-int (*pap_passwd_hook) __P((char *user, char *passwd)) = NULL;
-
-/*
- * This is used to ensure that we don't start an auth-up/down
- * script while one is already running.
- */
-enum script_state {
- s_down,
- s_up
-};
-
-static enum script_state auth_state = s_down;
-static enum script_state auth_script_state = s_down;
-static pid_t auth_script_pid = 0;
-
-static int used_login; /* peer authenticated against login database */
-
-/*
- * Option variables.
- */
-bool uselogin = 0; /* Use /etc/passwd for checking PAP */
-bool cryptpap = 0; /* Passwords in pap-secrets are encrypted */
-bool refuse_pap = 0; /* Don't wanna auth. ourselves with PAP */
-bool refuse_chap = 0; /* Don't wanna auth. ourselves with CHAP */
-bool usehostname = 0; /* Use hostname for our_name */
-bool auth_required = 0; /* Always require authentication from peer */
-bool allow_any_ip = 0; /* Allow peer to use any IP address */
-bool explicit_remote = 0; /* User specified explicit remote name */
-char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
-
-static char *uafname; /* name of most recent +ua file */
-
-/* Bits in auth_pending[] */
-#define PAP_WITHPEER 1
-#define PAP_PEER 2
-#define CHAP_WITHPEER 4
-#define CHAP_PEER 8
-
-extern char *crypt __P((const char *, const char *));
-
-/* Prototypes for procedures local to this file. */
-
-static void network_phase __P((int));
-static void check_idle __P((void *));
-static void connect_time_expired __P((void *));
-static int plogin __P((char *, char *, char **));
-static void plogout __P((void));
-static int null_login __P((int));
-static int get_pap_passwd __P((char *));
-static int have_pap_secret __P((int *));
-static int have_chap_secret __P((char *, char *, int, int *));
-static int ip_addr_check __P((u_int32_t, struct permitted_ip *));
-static int scan_authfile __P((FILE *, char *, char *, char *,
- struct wordlist **, struct wordlist **,
- char *));
-static void free_wordlist __P((struct wordlist *));
-static void auth_script __P((char *));
-static void auth_script_done __P((void *));
-static void set_allowed_addrs __P((int, struct wordlist *, struct wordlist *));
-static int some_ip_ok __P((struct wordlist *));
-static int setupapfile __P((char **));
-static int privgroup __P((char **));
-static int set_noauth_addr __P((char **));
-static void check_access __P((FILE *, char *));
-static int wordlist_count __P((struct wordlist *));
-
-/*
- * Authentication-related options.
- */
-option_t auth_options[] = {
- { "auth", o_bool, &auth_required,
- "Require authentication from peer", OPT_PRIO | 1 },
- { "noauth", o_bool, &auth_required,
- "Don't require peer to authenticate", OPT_PRIOSUB | OPT_PRIV,
- &allow_any_ip },
- { "require-pap", o_bool, &lcp_wantoptions[0].neg_upap,
- "Require PAP authentication from peer",
- OPT_PRIOSUB | 1, &auth_required },
- { "+pap", o_bool, &lcp_wantoptions[0].neg_upap,
- "Require PAP authentication from peer",
- OPT_ALIAS | OPT_PRIOSUB | 1, &auth_required },
- { "require-chap", o_bool, &lcp_wantoptions[0].neg_chap,
- "Require CHAP authentication from peer",
- OPT_PRIOSUB | 1, &auth_required },
- { "+chap", o_bool, &lcp_wantoptions[0].neg_chap,
- "Require CHAP authentication from peer",
- OPT_ALIAS | OPT_PRIOSUB | 1, &auth_required },
-
- { "refuse-pap", o_bool, &refuse_pap,
- "Don't agree to auth to peer with PAP", 1 },
- { "-pap", o_bool, &refuse_pap,
- "Don't allow PAP authentication with peer", OPT_ALIAS | 1 },
-
- { "refuse-chap", o_bool, &refuse_chap,
- "Don't agree to auth to peer with CHAP", 1 },
- { "-chap", o_bool, &refuse_chap,
- "Don't allow CHAP authentication with peer", OPT_ALIAS | 1 },
-
- { "name", o_string, our_name,
- "Set local name for authentication",
- OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXNAMELEN },
-
- { "+ua", o_special, (void *)setupapfile,
- "Get PAP user and password from file",
- OPT_PRIO | OPT_A2STRVAL, &uafname },
-
- { "user", o_string, user,
- "Set name for auth with peer", OPT_PRIO | OPT_STATIC, NULL, MAXNAMELEN },
-
- { "password", o_string, passwd,
- "Password for authenticating us to the peer",
- OPT_PRIO | OPT_STATIC | OPT_HIDE, NULL, MAXSECRETLEN },
-
- { "usehostname", o_bool, &usehostname,
- "Must use hostname for authentication", 1 },
-
- { "remotename", o_string, remote_name,
- "Set remote name for authentication", OPT_PRIO | OPT_STATIC,
- &explicit_remote, MAXNAMELEN },
-
- { "login", o_bool, &uselogin,
- "Use system password database for PAP", 1 },
-
- { "papcrypt", o_bool, &cryptpap,
- "PAP passwords are encrypted", 1 },
-
- { "privgroup", o_special, (void *)privgroup,
- "Allow group members to use privileged options", OPT_PRIV | OPT_A2LIST },
-
- { "allow-ip", o_special, (void *)set_noauth_addr,
- "Set IP address(es) which can be used without authentication",
- OPT_PRIV | OPT_A2LIST },
-
- { NULL }
-};
-
-/*
- * setupapfile - specifies UPAP info for authenticating with peer.
- */
-static int
-setupapfile(argv)
- char **argv;
-{
- FILE *ufile;
- int l;
- char u[MAXNAMELEN], p[MAXSECRETLEN];
- char *fname;
-
- lcp_allowoptions[0].neg_upap = 1;
-
- /* open user info file */
- fname = strdup(*argv);
- if (fname == NULL)
- novm("+ua file name");
- seteuid(getuid());
- ufile = fopen(fname, "r");
- seteuid(0);
- if (ufile == NULL) {
- option_error("unable to open user login data file %s", fname);
- return 0;
- }
- check_access(ufile, fname);
- uafname = fname;
-
- /* get username */
- if (fgets(u, MAXNAMELEN - 1, ufile) == NULL
- || fgets(p, MAXSECRETLEN - 1, ufile) == NULL){
- option_error("unable to read user login data file %s", fname);
- return 0;
- }
- fclose(ufile);
-
- /* get rid of newlines */
- l = strlen(u);
- if (l > 0 && u[l-1] == '\n')
- u[l-1] = 0;
- l = strlen(p);
- if (l > 0 && p[l-1] == '\n')
- p[l-1] = 0;
-
- if (override_value("user", option_priority, fname))
- strlcpy(user, u, sizeof(user));
- if (override_value("passwd", option_priority, fname))
- strlcpy(passwd, p, sizeof(passwd));
-
- return (1);
-}
-
-
-/*
- * privgroup - allow members of the group to have privileged access.
- */
-static int
-privgroup(argv)
- char **argv;
-{
- struct group *g;
- int i;
-
- g = getgrnam(*argv);
- if (g == 0) {
- option_error("group %s is unknown", *argv);
- return 0;
- }
- for (i = 0; i < ngroups; ++i) {
- if (groups[i] == g->gr_gid) {
- privileged = 1;
- break;
- }
- }
- return 1;
-}
-
-
-/*
- * set_noauth_addr - set address(es) that can be used without authentication.
- * Equivalent to specifying an entry like `"" * "" addr' in pap-secrets.
- */
-static int
-set_noauth_addr(argv)
- char **argv;
-{
- char *addr = *argv;
- int l = strlen(addr) + 1;
- struct wordlist *wp;
-
- wp = (struct wordlist *) malloc(sizeof(struct wordlist) + l);
- if (wp == NULL)
- novm("allow-ip argument");
- wp->word = (char *) (wp + 1);
- wp->next = noauth_addrs;
- BCOPY(addr, wp->word, l);
- noauth_addrs = wp;
- return 1;
-}
-
-
-/*
- * An Open on LCP has requested a change from Dead to Establish phase.
- * Do what's necessary to bring the physical layer up.
- */
-void
-link_required(unit)
- int unit;
-{
-}
-
-/*
- * LCP has terminated the link; go to the Dead phase and take the
- * physical layer down.
- */
-void
-link_terminated(unit)
- int unit;
-{
- if (phase == PHASE_DEAD)
- return;
- if (pap_logout_hook) {
- pap_logout_hook();
- } else {
- if (logged_in)
- plogout();
- }
- new_phase(PHASE_DEAD);
- notice("Connection terminated.");
-}
-
-/*
- * LCP has gone down; it will either die or try to re-establish.
- */
-void
-link_down(unit)
- int unit;
-{
- int i;
- struct protent *protp;
-
- auth_state = s_down;
- if (auth_script_state == s_up && auth_script_pid == 0) {
- update_link_stats(unit);
- auth_script_state = s_down;
- auth_script(_PATH_AUTHDOWN);
- }
- for (i = 0; (protp = protocols[i]) != NULL; ++i) {
- if (!protp->enabled_flag)
- continue;
- if (protp->protocol != PPP_LCP && protp->lowerdown != NULL)
- (*protp->lowerdown)(unit);
- if (protp->protocol < 0xC000 && protp->close != NULL)
- (*protp->close)(unit, "LCP down");
- }
- num_np_open = 0;
- num_np_up = 0;
- if (phase != PHASE_DEAD)
- new_phase(PHASE_TERMINATE);
-}
-
-/*
- * The link is established.
- * Proceed to the Dead, Authenticate or Network phase as appropriate.
- */
-void
-link_established(unit)
- int unit;
-{
- int auth;
- lcp_options *wo = &lcp_wantoptions[unit];
- lcp_options *go = &lcp_gotoptions[unit];
- lcp_options *ho = &lcp_hisoptions[unit];
- int i;
- struct protent *protp;
-
- /*
- * Tell higher-level protocols that LCP is up.
- */
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->protocol != PPP_LCP && protp->enabled_flag
- && protp->lowerup != NULL)
- (*protp->lowerup)(unit);
-
- if (auth_required && !(go->neg_chap || go->neg_upap)) {
- /*
- * We wanted the peer to authenticate itself, and it refused:
- * if we have some address(es) it can use without auth, fine,
- * otherwise treat it as though it authenticated with PAP using
- * a username * of "" and a password of "". If that's not OK,
- * boot it out.
- */
- if (noauth_addrs != NULL) {
- set_allowed_addrs(unit, NULL, NULL);
- } else if (!wo->neg_upap || uselogin || !null_login(unit)) {
- warn("peer refused to authenticate: terminating link");
- lcp_close(unit, "peer refused to authenticate");
- status = EXIT_PEER_AUTH_FAILED;
- return;
- }
- }
-
- new_phase(PHASE_AUTHENTICATE);
- used_login = 0;
- auth = 0;
- if (go->neg_chap) {
- ChapAuthPeer(unit, our_name, go->chap_mdtype);
- auth |= CHAP_PEER;
- } else if (go->neg_upap) {
- upap_authpeer(unit);
- auth |= PAP_PEER;
- }
- if (ho->neg_chap) {
- ChapAuthWithPeer(unit, user, ho->chap_mdtype);
- auth |= CHAP_WITHPEER;
- } else if (ho->neg_upap) {
- if (passwd[0] == 0) {
- passwd_from_file = 1;
- if (!get_pap_passwd(passwd))
- error("No secret found for PAP login");
- }
- upap_authwithpeer(unit, user, passwd);
- auth |= PAP_WITHPEER;
- }
- auth_pending[unit] = auth;
-
- if (!auth)
- network_phase(unit);
-}
-
-/*
- * Proceed to the network phase.
- */
-static void
-network_phase(unit)
- int unit;
-{
- lcp_options *go = &lcp_gotoptions[unit];
-
- /*
- * If the peer had to authenticate, run the auth-up script now.
- */
- if (go->neg_chap || go->neg_upap) {
- auth_state = s_up;
- if (auth_script_state == s_down && auth_script_pid == 0) {
- auth_script_state = s_up;
- auth_script(_PATH_AUTHUP);
- }
- }
-
-#ifdef CBCP_SUPPORT
- /*
- * If we negotiated callback, do it now.
- */
- if (go->neg_cbcp) {
- new_phase(PHASE_CALLBACK);
- (*cbcp_protent.open)(unit);
- return;
- }
-#endif
-
- /*
- * Process extra options from the secrets file
- */
- if (extra_options) {
- options_from_list(extra_options, 1);
- free_wordlist(extra_options);
- extra_options = 0;
- }
- start_networks();
-}
-
-void
-start_networks()
-{
- int i;
- struct protent *protp;
-
- new_phase(PHASE_NETWORK);
-
-#ifdef HAVE_MULTILINK
- if (multilink) {
- if (mp_join_bundle()) {
- if (updetach && !nodetach)
- detach();
- return;
- }
- }
-#endif /* HAVE_MULTILINK */
-
-#ifdef PPP_FILTER
- if (!demand)
- set_filters(&pass_filter, &active_filter);
-#endif
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->protocol < 0xC000 && protp->enabled_flag
- && protp->open != NULL) {
- (*protp->open)(0);
- if (protp->protocol != PPP_CCP)
- ++num_np_open;
- }
-
- if (num_np_open == 0)
- /* nothing to do */
- lcp_close(0, "No network protocols running");
-}
-
-/*
- * The peer has failed to authenticate himself using `protocol'.
- */
-void
-auth_peer_fail(unit, protocol)
- int unit, protocol;
-{
- /*
- * Authentication failure: take the link down
- */
- lcp_close(unit, "Authentication failed");
- status = EXIT_PEER_AUTH_FAILED;
-}
-
-/*
- * The peer has been successfully authenticated using `protocol'.
- */
-void
-auth_peer_success(unit, protocol, name, namelen)
- int unit, protocol;
- char *name;
- int namelen;
-{
- int bit;
-
- switch (protocol) {
- case PPP_CHAP:
- bit = CHAP_PEER;
- break;
- case PPP_PAP:
- bit = PAP_PEER;
- break;
- default:
- warn("auth_peer_success: unknown protocol %x", protocol);
- return;
- }
-
- /*
- * Save the authenticated name of the peer for later.
- */
- if (namelen > sizeof(peer_authname) - 1)
- namelen = sizeof(peer_authname) - 1;
- BCOPY(name, peer_authname, namelen);
- peer_authname[namelen] = 0;
- script_setenv("PEERNAME", peer_authname, 0);
-
- /*
- * If there is no more authentication still to be done,
- * proceed to the network (or callback) phase.
- */
- if ((auth_pending[unit] &= ~bit) == 0)
- network_phase(unit);
-}
-
-/*
- * We have failed to authenticate ourselves to the peer using `protocol'.
- */
-void
-auth_withpeer_fail(unit, protocol)
- int unit, protocol;
-{
- if (passwd_from_file)
- BZERO(passwd, MAXSECRETLEN);
- /*
- * We've failed to authenticate ourselves to our peer.
- * Some servers keep sending CHAP challenges, but there
- * is no point in persisting without any way to get updated
- * authentication secrets.
- */
- lcp_close(unit, "Failed to authenticate ourselves to peer");
- status = EXIT_AUTH_TOPEER_FAILED;
-}
-
-/*
- * We have successfully authenticated ourselves with the peer using `protocol'.
- */
-void
-auth_withpeer_success(unit, protocol)
- int unit, protocol;
-{
- int bit;
-
- switch (protocol) {
- case PPP_CHAP:
- bit = CHAP_WITHPEER;
- break;
- case PPP_PAP:
- if (passwd_from_file)
- BZERO(passwd, MAXSECRETLEN);
- bit = PAP_WITHPEER;
- break;
- default:
- warn("auth_withpeer_success: unknown protocol %x", protocol);
- bit = 0;
- }
-
- /*
- * If there is no more authentication still being done,
- * proceed to the network (or callback) phase.
- */
- if ((auth_pending[unit] &= ~bit) == 0)
- network_phase(unit);
-}
-
-
-/*
- * np_up - a network protocol has come up.
- */
-void
-np_up(unit, proto)
- int unit, proto;
-{
- int tlim;
-
- if (num_np_up == 0) {
- /*
- * At this point we consider that the link has come up successfully.
- */
- status = EXIT_OK;
- unsuccess = 0;
- new_phase(PHASE_RUNNING);
-
- if (idle_time_hook != 0)
- tlim = (*idle_time_hook)(NULL);
- else
- tlim = idle_time_limit;
- if (tlim > 0)
- TIMEOUT(check_idle, NULL, tlim);
-
- /*
- * Set a timeout to close the connection once the maximum
- * connect time has expired.
- */
- if (maxconnect > 0)
- TIMEOUT(connect_time_expired, 0, maxconnect);
-
- /*
- * Detach now, if the updetach option was given.
- */
- if (updetach && !nodetach)
- detach();
- }
- ++num_np_up;
-}
-
-/*
- * np_down - a network protocol has gone down.
- */
-void
-np_down(unit, proto)
- int unit, proto;
-{
- if (--num_np_up == 0) {
- UNTIMEOUT(check_idle, NULL);
- new_phase(PHASE_NETWORK);
- }
-}
-
-/*
- * np_finished - a network protocol has finished using the link.
- */
-void
-np_finished(unit, proto)
- int unit, proto;
-{
- if (--num_np_open <= 0) {
- /* no further use for the link: shut up shop. */
- lcp_close(0, "No network protocols running");
- }
-}
-
-/*
- * check_idle - check whether the link has been idle for long
- * enough that we can shut it down.
- */
-static void
-check_idle(arg)
- void *arg;
-{
- struct ppp_idle idle;
- time_t itime;
- int tlim;
-
- if (!get_idle_time(0, &idle))
- return;
- if (idle_time_hook != 0) {
- tlim = idle_time_hook(&idle);
- } else {
- itime = MIN(idle.xmit_idle, idle.recv_idle);
- tlim = idle_time_limit - itime;
- }
- if (tlim <= 0) {
- /* link is idle: shut it down. */
- notice("Terminating connection due to lack of activity.");
- lcp_close(0, "Link inactive");
- need_holdoff = 0;
- status = EXIT_IDLE_TIMEOUT;
- } else {
- TIMEOUT(check_idle, NULL, tlim);
- }
-}
-
-/*
- * connect_time_expired - log a message and close the connection.
- */
-static void
-connect_time_expired(arg)
- void *arg;
-{
- info("Connect time expired");
- lcp_close(0, "Connect time expired"); /* Close connection */
- status = EXIT_CONNECT_TIME;
-}
-
-/*
- * auth_check_options - called to check authentication options.
- */
-void
-auth_check_options()
-{
- lcp_options *wo = &lcp_wantoptions[0];
- int can_auth;
- int lacks_ip;
-
- /* Default our_name to hostname, and user to our_name */
- if (our_name[0] == 0 || usehostname)
- strlcpy(our_name, hostname, sizeof(our_name));
- if (user[0] == 0)
- strlcpy(user, our_name, sizeof(user));
-
- /*
- * If we have a default route, require the peer to authenticate
- * unless the noauth option was given or the real user is root.
- */
- if (!auth_required && !allow_any_ip && have_route_to(0) && !privileged) {
- auth_required = 1;
- default_auth = 1;
- }
-
- /* If authentication is required, ask peer for CHAP or PAP. */
- if (auth_required) {
- allow_any_ip = 0;
- if (!wo->neg_chap && !wo->neg_upap) {
- wo->neg_chap = 1;
- wo->neg_upap = 1;
- }
- } else {
- wo->neg_chap = 0;
- wo->neg_upap = 0;
- }
-
- /*
- * Check whether we have appropriate secrets to use
- * to authenticate the peer.
- */
- lacks_ip = 0;
- can_auth = wo->neg_upap && (uselogin || have_pap_secret(&lacks_ip));
- if (!can_auth && wo->neg_chap) {
- can_auth = have_chap_secret((explicit_remote? remote_name: NULL),
- our_name, 1, &lacks_ip);
- }
-
- if (auth_required && !can_auth && noauth_addrs == NULL) {
- if (default_auth) {
- option_error(
-"By default the remote system is required to authenticate itself");
- option_error(
-"(because this system has a default route to the internet)");
- } else if (explicit_remote)
- option_error(
-"The remote system (%s) is required to authenticate itself",
- remote_name);
- else
- option_error(
-"The remote system is required to authenticate itself");
- option_error(
-"but I couldn't find any suitable secret (password) for it to use to do so.");
- if (lacks_ip)
- option_error(
-"(None of the available passwords would let it use an IP address.)");
-
- exit(1);
- }
-}
-
-/*
- * auth_reset - called when LCP is starting negotiations to recheck
- * authentication options, i.e. whether we have appropriate secrets
- * to use for authenticating ourselves and/or the peer.
- */
-void
-auth_reset(unit)
- int unit;
-{
- lcp_options *go = &lcp_gotoptions[unit];
- lcp_options *ao = &lcp_allowoptions[0];
-
- ao->neg_upap = !refuse_pap && (passwd[0] != 0 || get_pap_passwd(NULL));
- ao->neg_chap = !refuse_chap
- && (passwd[0] != 0
- || have_chap_secret(user, (explicit_remote? remote_name: NULL),
- 0, NULL));
-
- if (go->neg_upap && !uselogin && !have_pap_secret(NULL))
- go->neg_upap = 0;
- if (go->neg_chap) {
- if (!have_chap_secret((explicit_remote? remote_name: NULL),
- our_name, 1, NULL))
- go->neg_chap = 0;
- }
-}
-
-
-/*
- * check_passwd - Check the user name and passwd against the PAP secrets
- * file. If requested, also check against the system password database,
- * and login the user if OK.
- *
- * returns:
- * UPAP_AUTHNAK: Authentication failed.
- * UPAP_AUTHACK: Authentication succeeded.
- * In either case, msg points to an appropriate message.
- */
-int
-check_passwd(unit, auser, userlen, apasswd, passwdlen, msg)
- int unit;
- char *auser;
- int userlen;
- char *apasswd;
- int passwdlen;
- char **msg;
-{
- int ret;
- char *filename;
- FILE *f;
- struct wordlist *addrs = NULL, *opts = NULL;
- char passwd[256], user[256];
- char secret[MAXWORDLEN];
- static int attempts = 0;
-
- /*
- * Make copies of apasswd and auser, then null-terminate them.
- * If there are unprintable characters in the password, make
- * them visible.
- */
- slprintf(passwd, sizeof(passwd), "%.*v", passwdlen, apasswd);
- slprintf(user, sizeof(user), "%.*v", userlen, auser);
- *msg = "";
-
- /*
- * Check if a plugin wants to handle this.
- */
- if (pap_auth_hook) {
- ret = (*pap_auth_hook)(user, passwd, msg, &addrs, &opts);
- if (ret >= 0) {
- if (ret)
- set_allowed_addrs(unit, addrs, opts);
- BZERO(passwd, sizeof(passwd));
- if (addrs != 0)
- free_wordlist(addrs);
- return ret? UPAP_AUTHACK: UPAP_AUTHNAK;
- }
- }
-
- /*
- * Open the file of pap secrets and scan for a suitable secret
- * for authenticating this user.
- */
- filename = _PATH_UPAPFILE;
- addrs = opts = NULL;
- ret = UPAP_AUTHNAK;
- f = fopen(filename, "r");
- if (f == NULL) {
- error("Can't open PAP password file %s: %m", filename);
-
- } else {
- check_access(f, filename);
- if (scan_authfile(f, user, our_name, secret, &addrs, &opts, filename) < 0) {
- warn("no PAP secret found for %s", user);
- } else {
- /*
- * If the secret is "@login", it means to check
- * the password against the login database.
- */
- int login_secret = strcmp(secret, "@login") == 0;
- ret = UPAP_AUTHACK;
- if (uselogin || login_secret) {
- /* login option or secret is @login */
- ret = plogin(user, passwd, msg);
- if (ret == UPAP_AUTHNAK)
- warn("PAP login failure for %s", user);
- else
- used_login = 1;
- }
- if (secret[0] != 0 && !login_secret) {
- /* password given in pap-secrets - must match */
- if ((cryptpap || strcmp(passwd, secret) != 0)
- && strcmp(crypt(passwd, secret), secret) != 0) {
- ret = UPAP_AUTHNAK;
- warn("PAP authentication failure for %s", user);
- }
- }
- }
- fclose(f);
- }
-
- if (ret == UPAP_AUTHNAK) {
- if (**msg == 0)
- *msg = "Login incorrect";
- /*
- * XXX can we ever get here more than once??
- * Frustrate passwd stealer programs.
- * Allow 10 tries, but start backing off after 3 (stolen from login).
- * On 10'th, drop the connection.
- */
- if (attempts++ >= 10) {
- warn("%d LOGIN FAILURES ON %s, %s", attempts, devnam, user);
- lcp_close(unit, "login failed");
- }
- if (attempts > 3)
- sleep((u_int) (attempts - 3) * 5);
- if (opts != NULL)
- free_wordlist(opts);
-
- } else {
- attempts = 0; /* Reset count */
- if (**msg == 0)
- *msg = "Login ok";
- set_allowed_addrs(unit, addrs, opts);
- }
-
- if (addrs != NULL)
- free_wordlist(addrs);
- BZERO(passwd, sizeof(passwd));
- BZERO(secret, sizeof(secret));
-
- return ret;
-}
-
-/*
- * This function is needed for PAM.
- */
-
-#ifdef USE_PAM
-/* Static variables used to communicate between the conversation function
- * and the server_login function
- */
-static char *PAM_username;
-static char *PAM_password;
-static int PAM_error = 0;
-static pam_handle_t *pamh = NULL;
-
-/* PAM conversation function
- * Here we assume (for now, at least) that echo on means login name, and
- * echo off means password.
- */
-
-static int PAM_conv (int num_msg, const struct pam_message **msg,
- struct pam_response **resp, void *appdata_ptr)
-{
- int replies = 0;
- struct pam_response *reply = NULL;
-
-#define COPY_STRING(s) (s) ? strdup(s) : NULL
-
- reply = malloc(sizeof(struct pam_response) * num_msg);
- if (!reply) return PAM_CONV_ERR;
-
- for (replies = 0; replies < num_msg; replies++) {
- switch (msg[replies]->msg_style) {
- case PAM_PROMPT_ECHO_ON:
- reply[replies].resp_retcode = PAM_SUCCESS;
- reply[replies].resp = COPY_STRING(PAM_username);
- /* PAM frees resp */
- break;
- case PAM_PROMPT_ECHO_OFF:
- reply[replies].resp_retcode = PAM_SUCCESS;
- reply[replies].resp = COPY_STRING(PAM_password);
- /* PAM frees resp */
- break;
- case PAM_TEXT_INFO:
- /* fall through */
- case PAM_ERROR_MSG:
- /* ignore it, but pam still wants a NULL response... */
- reply[replies].resp_retcode = PAM_SUCCESS;
- reply[replies].resp = NULL;
- break;
- default:
- /* Must be an error of some sort... */
- free (reply);
- PAM_error = 1;
- return PAM_CONV_ERR;
- }
- }
- *resp = reply;
- return PAM_SUCCESS;
-}
-
-static struct pam_conv PAM_conversation = {
- &PAM_conv,
- NULL
-};
-#endif /* USE_PAM */
-
-/*
- * plogin - Check the user name and password against the system
- * password database, and login the user if OK.
- *
- * returns:
- * UPAP_AUTHNAK: Login failed.
- * UPAP_AUTHACK: Login succeeded.
- * In either case, msg points to an appropriate message.
- */
-
-static int
-plogin(user, passwd, msg)
- char *user;
- char *passwd;
- char **msg;
-{
- char *tty;
-
-#ifdef USE_PAM
- int pam_error;
-
- pam_error = pam_start ("ppp", user, &PAM_conversation, &pamh);
- if (pam_error != PAM_SUCCESS) {
- *msg = (char *) pam_strerror (pamh, pam_error);
- reopen_log();
- return UPAP_AUTHNAK;
- }
- /*
- * Define the fields for the credential validation
- */
-
- PAM_username = user;
- PAM_password = passwd;
- PAM_error = 0;
- pam_set_item (pamh, PAM_TTY, devnam); /* this might be useful to some modules */
-
- /*
- * Validate the user
- */
- pam_error = pam_authenticate (pamh, PAM_SILENT);
- if (pam_error == PAM_SUCCESS && !PAM_error) {
- pam_error = pam_acct_mgmt (pamh, PAM_SILENT);
- if (pam_error == PAM_SUCCESS)
- pam_error = pam_open_session (pamh, PAM_SILENT);
- }
-
- *msg = (char *) pam_strerror (pamh, pam_error);
-
- /*
- * Clean up the mess
- */
- reopen_log(); /* apparently the PAM stuff does closelog() */
- PAM_username = NULL;
- PAM_password = NULL;
- if (pam_error != PAM_SUCCESS)
- return UPAP_AUTHNAK;
-#else /* #ifdef USE_PAM */
-
-/*
- * Use the non-PAM methods directly
- */
-
-#ifdef HAS_SHADOW
- struct spwd *spwd;
- struct spwd *getspnam();
-#endif
- struct passwd *pw = getpwnam(user);
-
- endpwent();
- if (pw == NULL)
- return (UPAP_AUTHNAK);
-
-#ifdef HAS_SHADOW
- spwd = getspnam(user);
- endspent();
- if (spwd) {
- /* check the age of the password entry */
- long now = time(NULL) / 86400L;
-
- if ((spwd->sp_expire > 0 && now >= spwd->sp_expire)
- || ((spwd->sp_max >= 0 && spwd->sp_max < 10000)
- && spwd->sp_lstchg >= 0
- && now >= spwd->sp_lstchg + spwd->sp_max)) {
- warn("Password for %s has expired", user);
- return (UPAP_AUTHNAK);
- }
- pw->pw_passwd = spwd->sp_pwdp;
- }
-#endif
-
- /*
- * If no passwd, don't let them login.
- */
- if (pw->pw_passwd == NULL || strlen(pw->pw_passwd) < 2
- || strcmp(crypt(passwd, pw->pw_passwd), pw->pw_passwd) != 0)
- return (UPAP_AUTHNAK);
-
-#endif /* #ifdef USE_PAM */
-
- /*
- * Write a wtmp entry for this user.
- */
-
- tty = devnam;
- if (strncmp(tty, "/dev/", 5) == 0)
- tty += 5;
-// logwtmp(tty, user, remote_name); /* Add wtmp login entry */
-
-#if defined(_PATH_LASTLOG) && !defined(USE_PAM)
- if (pw != (struct passwd *)NULL) {
- struct lastlog ll;
- int fd;
-
- if ((fd = open(_PATH_LASTLOG, O_RDWR, 0)) >= 0) {
- (void)lseek(fd, (off_t)(pw->pw_uid * sizeof(ll)), SEEK_SET);
- memset((void *)&ll, 0, sizeof(ll));
- (void)time(&ll.ll_time);
- (void)strncpy(ll.ll_line, tty, sizeof(ll.ll_line));
- (void)write(fd, (char *)&ll, sizeof(ll));
- (void)close(fd);
- }
- }
-#endif /* _PATH_LASTLOG and not USE_PAM */
-
- info("user %s logged in", user);
- logged_in = 1;
-
- return (UPAP_AUTHACK);
-}
-
-/*
- * plogout - Logout the user.
- */
-static void
-plogout()
-{
-#ifdef USE_PAM
- int pam_error;
-
- if (pamh != NULL) {
- pam_error = pam_close_session (pamh, PAM_SILENT);
- pam_end (pamh, pam_error);
- pamh = NULL;
- }
- /* Apparently the pam stuff does closelog(). */
- reopen_log();
-#else /* ! USE_PAM */
- char *tty;
-
- tty = devnam;
- if (strncmp(tty, "/dev/", 5) == 0)
- tty += 5;
-// logwtmp(tty, "", ""); /* Wipe out utmp logout entry */
-#endif /* ! USE_PAM */
- logged_in = 0;
-}
-
-
-/*
- * null_login - Check if a username of "" and a password of "" are
- * acceptable, and iff so, set the list of acceptable IP addresses
- * and return 1.
- */
-static int
-null_login(unit)
- int unit;
-{
- char *filename;
- FILE *f;
- int i, ret;
- struct wordlist *addrs, *opts;
- char secret[MAXWORDLEN];
-
- /*
- * Open the file of pap secrets and scan for a suitable secret.
- */
- filename = _PATH_UPAPFILE;
- addrs = NULL;
- f = fopen(filename, "r");
- if (f == NULL)
- return 0;
- check_access(f, filename);
-
- i = scan_authfile(f, "", our_name, secret, &addrs, &opts, filename);
- ret = i >= 0 && secret[0] == 0;
- BZERO(secret, sizeof(secret));
-
- if (ret)
- set_allowed_addrs(unit, addrs, opts);
- else if (opts != 0)
- free_wordlist(opts);
- if (addrs != 0)
- free_wordlist(addrs);
-
- fclose(f);
- return ret;
-}
-
-
-/*
- * get_pap_passwd - get a password for authenticating ourselves with
- * our peer using PAP. Returns 1 on success, 0 if no suitable password
- * could be found.
- * Assumes passwd points to MAXSECRETLEN bytes of space (if non-null).
- */
-static int
-get_pap_passwd(passwd)
- char *passwd;
-{
- char *filename;
- FILE *f;
- int ret;
- char secret[MAXWORDLEN];
-
- /*
- * Check whether a plugin wants to supply this.
- */
- if (pap_passwd_hook) {
- ret = (*pap_passwd_hook)(user, passwd);
- if (ret >= 0)
- return ret;
- }
-
- filename = _PATH_UPAPFILE;
- f = fopen(filename, "r");
- if (f == NULL)
- return 0;
- check_access(f, filename);
- ret = scan_authfile(f, user,
- (remote_name[0]? remote_name: NULL),
- secret, NULL, NULL, filename);
- fclose(f);
- if (ret < 0)
- return 0;
- if (passwd != NULL)
- strlcpy(passwd, secret, MAXSECRETLEN);
- BZERO(secret, sizeof(secret));
- return 1;
-}
-
-
-/*
- * have_pap_secret - check whether we have a PAP file with any
- * secrets that we could possibly use for authenticating the peer.
- */
-static int
-have_pap_secret(lacks_ipp)
- int *lacks_ipp;
-{
- FILE *f;
- int ret;
- char *filename;
- struct wordlist *addrs;
-
- /* let the plugin decide, if there is one */
- if (pap_check_hook) {
- ret = (*pap_check_hook)();
- if (ret >= 0)
- return ret;
- }
-
- filename = _PATH_UPAPFILE;
- f = fopen(filename, "r");
- if (f == NULL)
- return 0;
-
- ret = scan_authfile(f, (explicit_remote? remote_name: NULL), our_name,
- NULL, &addrs, NULL, filename);
- fclose(f);
- if (ret >= 0 && !some_ip_ok(addrs)) {
- if (lacks_ipp != 0)
- *lacks_ipp = 1;
- ret = -1;
- }
- if (addrs != 0)
- free_wordlist(addrs);
-
- return ret >= 0;
-}
-
-
-/*
- * have_chap_secret - check whether we have a CHAP file with a
- * secret that we could possibly use for authenticating `client'
- * on `server'. Either can be the null string, meaning we don't
- * know the identity yet.
- */
-static int
-have_chap_secret(client, server, need_ip, lacks_ipp)
- char *client;
- char *server;
- int need_ip;
- int *lacks_ipp;
-{
- FILE *f;
- int ret;
- char *filename;
- struct wordlist *addrs;
-
- filename = _PATH_CHAPFILE;
- f = fopen(filename, "r");
- if (f == NULL)
- return 0;
-
- if (client != NULL && client[0] == 0)
- client = NULL;
- else if (server != NULL && server[0] == 0)
- server = NULL;
-
- ret = scan_authfile(f, client, server, NULL, &addrs, NULL, filename);
- fclose(f);
- if (ret >= 0 && need_ip && !some_ip_ok(addrs)) {
- if (lacks_ipp != 0)
- *lacks_ipp = 1;
- ret = -1;
- }
- if (addrs != 0)
- free_wordlist(addrs);
-
- return ret >= 0;
-}
-
-
-/*
- * get_secret - open the CHAP secret file and return the secret
- * for authenticating the given client on the given server.
- * (We could be either client or server).
- */
-int
-get_secret(unit, client, server, secret, secret_len, am_server)
- int unit;
- char *client;
- char *server;
- char *secret;
- int *secret_len;
- int am_server;
-{
- FILE *f;
- int ret, len;
- char *filename;
- struct wordlist *addrs, *opts;
- char secbuf[MAXWORDLEN];
-
- if (!am_server && passwd[0] != 0) {
- strlcpy(secbuf, passwd, sizeof(secbuf));
- } else {
- filename = _PATH_CHAPFILE;
- addrs = NULL;
- secbuf[0] = 0;
-
- f = fopen(filename, "r");
- if (f == NULL) {
- error("Can't open chap secret file %s: %m", filename);
- return 0;
- }
- check_access(f, filename);
-
- ret = scan_authfile(f, client, server, secbuf, &addrs, &opts, filename);
- fclose(f);
- if (ret < 0)
- return 0;
-
- if (am_server)
- set_allowed_addrs(unit, addrs, opts);
- else if (opts != 0)
- free_wordlist(opts);
- if (addrs != 0)
- free_wordlist(addrs);
- }
-
- len = strlen(secbuf);
- if (len > MAXSECRETLEN) {
- error("Secret for %s on %s is too long", client, server);
- len = MAXSECRETLEN;
- }
- BCOPY(secbuf, secret, len);
- BZERO(secbuf, sizeof(secbuf));
- *secret_len = len;
-
- return 1;
-}
-
-/*
- * set_allowed_addrs() - set the list of allowed addresses.
- * Also looks for `--' indicating options to apply for this peer
- * and leaves the following words in extra_options.
- */
-static void
-set_allowed_addrs(unit, addrs, opts)
- int unit;
- struct wordlist *addrs;
- struct wordlist *opts;
-{
- int n;
- struct wordlist *ap, **plink;
- struct permitted_ip *ip;
- char *ptr_word, *ptr_mask;
- struct hostent *hp;
- u_int32_t a, mask, offset;
- struct ipcp_options *wo = &ipcp_wantoptions[unit];
- u_int32_t suggested_ip = 0;
-
- if (addresses[unit] != NULL)
- free(addresses[unit]);
- addresses[unit] = NULL;
- if (extra_options != NULL)
- free_wordlist(extra_options);
- extra_options = opts;
-
- /*
- * Count the number of IP addresses given.
- */
- n = wordlist_count(addrs) + wordlist_count(noauth_addrs);
- if (n == 0)
- return;
- ip = (struct permitted_ip *) malloc((n + 1) * sizeof(struct permitted_ip));
- if (ip == 0)
- return;
-
- /* temporarily append the noauth_addrs list to addrs */
- for (plink = &addrs; *plink != NULL; plink = &(*plink)->next)
- ;
- *plink = noauth_addrs;
-
- n = 0;
- for (ap = addrs; ap != NULL; ap = ap->next) {
- /* "-" means no addresses authorized, "*" means any address allowed */
- ptr_word = ap->word;
- if (strcmp(ptr_word, "-") == 0)
- break;
- if (strcmp(ptr_word, "*") == 0) {
- ip[n].permit = 1;
- ip[n].base = ip[n].mask = 0;
- ++n;
- break;
- }
-
- ip[n].permit = 1;
- if (*ptr_word == '!') {
- ip[n].permit = 0;
- ++ptr_word;
- }
-
- mask = ~ (u_int32_t) 0;
- offset = 0;
- ptr_mask = strchr (ptr_word, '/');
- if (ptr_mask != NULL) {
- int bit_count;
- char *endp;
-
- bit_count = (int) strtol (ptr_mask+1, &endp, 10);
- if (bit_count <= 0 || bit_count > 32) {
- warn("invalid address length %v in auth. address list",
- ptr_mask+1);
- continue;
- }
- bit_count = 32 - bit_count; /* # bits in host part */
- if (*endp == '+') {
- offset = ifunit + 1;
- ++endp;
- }
- if (*endp != 0) {
- warn("invalid address length syntax: %v", ptr_mask+1);
- continue;
- }
- *ptr_mask = '\0';
- mask <<= bit_count;
- }
-
- hp = gethostbyname(ptr_word);
- if (hp != NULL && hp->h_addrtype == AF_INET) {
- a = *(u_int32_t *)hp->h_addr;
- } else {
- printf("*** getnetbyname is unsupported, please report bug! ***\n");
- return;
- }
-
- if (ptr_mask != NULL)
- *ptr_mask = '/';
-
- if (a == (u_int32_t)-1L) {
- warn("unknown host %s in auth. address list", ap->word);
- continue;
- }
- if (offset != 0) {
- if (offset >= ~mask) {
- warn("interface unit %d too large for subnet %v",
- ifunit, ptr_word);
- continue;
- }
- a = htonl((ntohl(a) & mask) + offset);
- mask = ~(u_int32_t)0;
- }
- ip[n].mask = htonl(mask);
- ip[n].base = a & ip[n].mask;
- ++n;
- if (~mask == 0 && suggested_ip == 0)
- suggested_ip = a;
- }
- *plink = NULL;
-
- ip[n].permit = 0; /* make the last entry forbid all addresses */
- ip[n].base = 0; /* to terminate the list */
- ip[n].mask = 0;
-
- addresses[unit] = ip;
-
- /*
- * If the address given for the peer isn't authorized, or if
- * the user hasn't given one, AND there is an authorized address
- * which is a single host, then use that if we find one.
- */
- if (suggested_ip != 0
- && (wo->hisaddr == 0 || !auth_ip_addr(unit, wo->hisaddr))) {
- wo->hisaddr = suggested_ip;
- /*
- * Do we insist on this address? No, if there are other
- * addresses authorized than the suggested one.
- */
- if (n > 1)
- wo->accept_remote = 1;
- }
-}
-
-/*
- * auth_ip_addr - check whether the peer is authorized to use
- * a given IP address. Returns 1 if authorized, 0 otherwise.
- */
-int
-auth_ip_addr(unit, addr)
- int unit;
- u_int32_t addr;
-{
- int ok;
-
- /* don't allow loopback or multicast address */
- if (bad_ip_adrs(addr))
- return 0;
-
- if (addresses[unit] != NULL) {
- ok = ip_addr_check(addr, addresses[unit]);
- if (ok >= 0)
- return ok;
- }
- if (auth_required)
- return 0; /* no addresses authorized */
- return allow_any_ip || privileged || !have_route_to(addr);
-}
-
-static int
-ip_addr_check(addr, addrs)
- u_int32_t addr;
- struct permitted_ip *addrs;
-{
- for (; ; ++addrs)
- if ((addr & addrs->mask) == addrs->base)
- return addrs->permit;
-}
-
-/*
- * bad_ip_adrs - return 1 if the IP address is one we don't want
- * to use, such as an address in the loopback net or a multicast address.
- * addr is in network byte order.
- */
-int
-bad_ip_adrs(addr)
- u_int32_t addr;
-{
- addr = ntohl(addr);
- return (addr >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET
- || IN_MULTICAST(addr) || IN_BADCLASS(addr);
-}
-
-/*
- * some_ip_ok - check a wordlist to see if it authorizes any
- * IP address(es).
- */
-static int
-some_ip_ok(addrs)
- struct wordlist *addrs;
-{
- for (; addrs != 0; addrs = addrs->next) {
- if (addrs->word[0] == '-')
- break;
- if (addrs->word[0] != '!')
- return 1; /* some IP address is allowed */
- }
- return 0;
-}
-
-/*
- * check_access - complain if a secret file has too-liberal permissions.
- */
-static void
-check_access(f, filename)
- FILE *f;
- char *filename;
-{
- struct stat sbuf;
-
- if (fstat(fileno(f), &sbuf) < 0) {
- warn("cannot stat secret file %s: %m", filename);
- } else if ((sbuf.st_mode & (S_IRWXG | S_IRWXO)) != 0) {
- warn("Warning - secret file %s has world and/or group access",
- filename);
- }
-}
-
-
-/*
- * scan_authfile - Scan an authorization file for a secret suitable
- * for authenticating `client' on `server'. The return value is -1
- * if no secret is found, otherwise >= 0. The return value has
- * NONWILD_CLIENT set if the secret didn't have "*" for the client, and
- * NONWILD_SERVER set if the secret didn't have "*" for the server.
- * Any following words on the line up to a "--" (i.e. address authorization
- * info) are placed in a wordlist and returned in *addrs. Any
- * following words (extra options) are placed in a wordlist and
- * returned in *opts.
- * We assume secret is NULL or points to MAXWORDLEN bytes of space.
- */
-static int
-scan_authfile(f, client, server, secret, addrs, opts, filename)
- FILE *f;
- char *client;
- char *server;
- char *secret;
- struct wordlist **addrs;
- struct wordlist **opts;
- char *filename;
-{
- int newline, xxx;
- int got_flag, best_flag;
- FILE *sf;
- struct wordlist *ap, *addr_list, *alist, **app;
- char word[MAXWORDLEN];
- char atfile[MAXWORDLEN];
- char lsecret[MAXWORDLEN];
-
- if (addrs != NULL)
- *addrs = NULL;
- if (opts != NULL)
- *opts = NULL;
- addr_list = NULL;
- if (!getword(f, word, &newline, filename))
- return -1; /* file is empty??? */
- newline = 1;
- best_flag = -1;
- for (;;) {
- /*
- * Skip until we find a word at the start of a line.
- */
- while (!newline && getword(f, word, &newline, filename))
- ;
- if (!newline)
- break; /* got to end of file */
-
- /*
- * Got a client - check if it's a match or a wildcard.
- */
- got_flag = 0;
- if (client != NULL && strcmp(word, client) != 0 && !ISWILD(word)) {
- newline = 0;
- continue;
- }
- if (!ISWILD(word))
- got_flag = NONWILD_CLIENT;
-
- /*
- * Now get a server and check if it matches.
- */
- if (!getword(f, word, &newline, filename))
- break;
- if (newline)
- continue;
- if (!ISWILD(word)) {
- if (server != NULL && strcmp(word, server) != 0)
- continue;
- got_flag |= NONWILD_SERVER;
- }
-
- /*
- * Got some sort of a match - see if it's better than what
- * we have already.
- */
- if (got_flag <= best_flag)
- continue;
-
- /*
- * Get the secret.
- */
- if (!getword(f, word, &newline, filename))
- break;
- if (newline)
- continue;
-
- if (secret != NULL) {
- /*
- * Special syntax: @/pathname means read secret from file.
- */
- if (word[0] == '@' && word[1] == '/') {
- strlcpy(atfile, word+1, sizeof(atfile));
- if ((sf = fopen(atfile, "r")) == NULL) {
- warn("can't open indirect secret file %s", atfile);
- continue;
- }
- check_access(sf, atfile);
- if (!getword(sf, word, &xxx, atfile)) {
- warn("no secret in indirect secret file %s", atfile);
- fclose(sf);
- continue;
- }
- fclose(sf);
- }
- strlcpy(lsecret, word, sizeof(lsecret));
- }
-
- /*
- * Now read address authorization info and make a wordlist.
- */
- app = &alist;
- for (;;) {
- if (!getword(f, word, &newline, filename) || newline)
- break;
- ap = (struct wordlist *)
- malloc(sizeof(struct wordlist) + strlen(word) + 1);
- if (ap == NULL)
- novm("authorized addresses");
- ap->word = (char *) (ap + 1);
- strcpy(ap->word, word);
- *app = ap;
- app = &ap->next;
- }
- *app = NULL;
-
- /*
- * This is the best so far; remember it.
- */
- best_flag = got_flag;
- if (addr_list)
- free_wordlist(addr_list);
- addr_list = alist;
- if (secret != NULL)
- strlcpy(secret, lsecret, MAXWORDLEN);
-
- if (!newline)
- break;
- }
-
- /* scan for a -- word indicating the start of options */
- for (app = &addr_list; (ap = *app) != NULL; app = &ap->next)
- if (strcmp(ap->word, "--") == 0)
- break;
- /* ap = start of options */
- if (ap != NULL) {
- ap = ap->next; /* first option */
- free(*app); /* free the "--" word */
- *app = NULL; /* terminate addr list */
- }
- if (opts != NULL)
- *opts = ap;
- else if (ap != NULL)
- free_wordlist(ap);
- if (addrs != NULL)
- *addrs = addr_list;
- else if (addr_list != NULL)
- free_wordlist(addr_list);
-
- return best_flag;
-}
-
-/*
- * wordlist_count - return the number of items in a wordlist
- */
-static int
-wordlist_count(wp)
- struct wordlist *wp;
-{
- int n;
-
- for (n = 0; wp != NULL; wp = wp->next)
- ++n;
- return n;
-}
-
-/*
- * free_wordlist - release memory allocated for a wordlist.
- */
-static void
-free_wordlist(wp)
- struct wordlist *wp;
-{
- struct wordlist *next;
-
- while (wp != NULL) {
- next = wp->next;
- free(wp);
- wp = next;
- }
-}
-
-/*
- * auth_script_done - called when the auth-up or auth-down script
- * has finished.
- */
-static void
-auth_script_done(arg)
- void *arg;
-{
- auth_script_pid = 0;
- switch (auth_script_state) {
- case s_up:
- if (auth_state == s_down) {
- auth_script_state = s_down;
- auth_script(_PATH_AUTHDOWN);
- }
- break;
- case s_down:
- if (auth_state == s_up) {
- auth_script_state = s_up;
- auth_script(_PATH_AUTHUP);
- }
- break;
- }
-}
-
-/*
- * auth_script - execute a script with arguments
- * interface-name peer-name real-user tty speed
- */
-static void
-auth_script(script)
- char *script;
-{
- char strspeed[32];
- struct passwd *pw;
- char struid[32];
- char *user_name;
- char *argv[8];
-
- if ((pw = getpwuid(getuid())) != NULL && pw->pw_name != NULL)
- user_name = pw->pw_name;
- else {
- slprintf(struid, sizeof(struid), "%d", getuid());
- user_name = struid;
- }
- slprintf(strspeed, sizeof(strspeed), "%d", baud_rate);
-
- argv[0] = script;
- argv[1] = ifname;
- argv[2] = peer_authname;
- argv[3] = user_name;
- argv[4] = devnam;
- argv[5] = strspeed;
- argv[6] = NULL;
-
- auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL);
-}
diff --git a/mdk-stage1/ppp/pppd/cbcp.c b/mdk-stage1/ppp/pppd/cbcp.c
deleted file mode 100644
index 8c57b3cde..000000000
--- a/mdk-stage1/ppp/pppd/cbcp.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * cbcp - Call Back Configuration Protocol.
- *
- * Copyright (c) 1995 Pedro Roque Marques
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Pedro Roque Marques. The name of the author may not be used to
- * endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include "pppd.h"
-#include "cbcp.h"
-#include "fsm.h"
-#include "lcp.h"
-
-static const char rcsid[] = RCSID;
-
-/*
- * Options.
- */
-static int setcbcp __P((char **));
-
-static option_t cbcp_option_list[] = {
- { "callback", o_special, setcbcp,
- "Ask for callback", OPT_PRIO | OPT_A2STRVAL, &cbcp[0].us_number },
- { NULL }
-};
-
-/*
- * Protocol entry points.
- */
-static void cbcp_init __P((int unit));
-static void cbcp_open __P((int unit));
-static void cbcp_lowerup __P((int unit));
-static void cbcp_input __P((int unit, u_char *pkt, int len));
-static void cbcp_protrej __P((int unit));
-static int cbcp_printpkt __P((u_char *pkt, int len,
- void (*printer) __P((void *, char *, ...)),
- void *arg));
-
-struct protent cbcp_protent = {
- PPP_CBCP,
- cbcp_init,
- cbcp_input,
- cbcp_protrej,
- cbcp_lowerup,
- NULL,
- cbcp_open,
- NULL,
- cbcp_printpkt,
- NULL,
- 0,
- "CBCP",
- NULL,
- cbcp_option_list,
- NULL,
- NULL,
- NULL
-};
-
-cbcp_state cbcp[NUM_PPP];
-
-/* internal prototypes */
-
-static void cbcp_recvreq __P((cbcp_state *us, char *pckt, int len));
-static void cbcp_resp __P((cbcp_state *us));
-static void cbcp_up __P((cbcp_state *us));
-static void cbcp_recvack __P((cbcp_state *us, char *pckt, int len));
-static void cbcp_send __P((cbcp_state *us, u_char code, u_char *buf, int len));
-
-/* option processing */
-static int
-setcbcp(argv)
- char **argv;
-{
- lcp_wantoptions[0].neg_cbcp = 1;
- cbcp_protent.enabled_flag = 1;
- cbcp[0].us_number = strdup(*argv);
- if (cbcp[0].us_number == 0)
- novm("callback number");
- cbcp[0].us_type |= (1 << CB_CONF_USER);
- cbcp[0].us_type |= (1 << CB_CONF_ADMIN);
- return (1);
-}
-
-/* init state */
-static void
-cbcp_init(iface)
- int iface;
-{
- cbcp_state *us;
-
- us = &cbcp[iface];
- memset(us, 0, sizeof(cbcp_state));
- us->us_unit = iface;
- us->us_type |= (1 << CB_CONF_NO);
-}
-
-/* lower layer is up */
-static void
-cbcp_lowerup(iface)
- int iface;
-{
- cbcp_state *us = &cbcp[iface];
-
- dbglog("cbcp_lowerup");
- dbglog("want: %d", us->us_type);
-
- if (us->us_type == CB_CONF_USER)
- dbglog("phone no: %s", us->us_number);
-}
-
-static void
-cbcp_open(unit)
- int unit;
-{
- dbglog("cbcp_open");
-}
-
-/* process an incomming packet */
-static void
-cbcp_input(unit, inpacket, pktlen)
- int unit;
- u_char *inpacket;
- int pktlen;
-{
- u_char *inp;
- u_char code, id;
- u_short len;
-
- cbcp_state *us = &cbcp[unit];
-
- inp = inpacket;
-
- if (pktlen < CBCP_MINLEN) {
- error("CBCP packet is too small");
- return;
- }
-
- GETCHAR(code, inp);
- GETCHAR(id, inp);
- GETSHORT(len, inp);
-
-#if 0
- if (len > pktlen) {
- error("CBCP packet: invalid length");
- return;
- }
-#endif
-
- len -= CBCP_MINLEN;
-
- switch(code) {
- case CBCP_REQ:
- us->us_id = id;
- cbcp_recvreq(us, inp, len);
- break;
-
- case CBCP_RESP:
- dbglog("CBCP_RESP received");
- break;
-
- case CBCP_ACK:
- if (id != us->us_id)
- dbglog("id doesn't match: expected %d recv %d",
- us->us_id, id);
-
- cbcp_recvack(us, inp, len);
- break;
-
- default:
- break;
- }
-}
-
-/* protocol was rejected by foe */
-void cbcp_protrej(int iface)
-{
-}
-
-char *cbcp_codenames[] = {
- "Request", "Response", "Ack"
-};
-
-char *cbcp_optionnames[] = {
- "NoCallback",
- "UserDefined",
- "AdminDefined",
- "List"
-};
-
-/* pretty print a packet */
-static int
-cbcp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, opt, id, len, olen, delay;
- u_char *pstart;
-
- if (plen < HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(cbcp_codenames) / sizeof(char *))
- printer(arg, " %s", cbcp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
-
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
-
- switch (code) {
- case CBCP_REQ:
- case CBCP_RESP:
- case CBCP_ACK:
- while(len >= 2) {
- GETCHAR(opt, p);
- GETCHAR(olen, p);
-
- if (olen < 2 || olen > len) {
- break;
- }
-
- printer(arg, " <");
- len -= olen;
-
- if (opt >= 1 && opt <= sizeof(cbcp_optionnames) / sizeof(char *))
- printer(arg, " %s", cbcp_optionnames[opt-1]);
- else
- printer(arg, " option=0x%x", opt);
-
- if (olen > 2) {
- GETCHAR(delay, p);
- printer(arg, " delay = %d", delay);
- }
-
- if (olen > 3) {
- int addrt;
- char str[256];
-
- GETCHAR(addrt, p);
- memcpy(str, p, olen - 4);
- str[olen - 4] = 0;
- printer(arg, " number = %s", str);
- }
- printer(arg, ">");
- break;
- }
-
- default:
- break;
- }
-
- for (; len > 0; --len) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
-
- return p - pstart;
-}
-
-/* received CBCP request */
-static void
-cbcp_recvreq(us, pckt, pcktlen)
- cbcp_state *us;
- char *pckt;
- int pcktlen;
-{
- u_char type, opt_len, delay, addr_type;
- char address[256];
- int len = pcktlen;
-
- address[0] = 0;
-
- while (len) {
- dbglog("length: %d", len);
-
- GETCHAR(type, pckt);
- GETCHAR(opt_len, pckt);
-
- if (opt_len > 2)
- GETCHAR(delay, pckt);
-
- us->us_allowed |= (1 << type);
-
- switch(type) {
- case CB_CONF_NO:
- dbglog("no callback allowed");
- break;
-
- case CB_CONF_USER:
- dbglog("user callback allowed");
- if (opt_len > 4) {
- GETCHAR(addr_type, pckt);
- memcpy(address, pckt, opt_len - 4);
- address[opt_len - 4] = 0;
- if (address[0])
- dbglog("address: %s", address);
- }
- break;
-
- case CB_CONF_ADMIN:
- dbglog("user admin defined allowed");
- break;
-
- case CB_CONF_LIST:
- break;
- }
- len -= opt_len;
- }
-
- cbcp_resp(us);
-}
-
-static void
-cbcp_resp(us)
- cbcp_state *us;
-{
- u_char cb_type;
- u_char buf[256];
- u_char *bufp = buf;
- int len = 0;
-
- cb_type = us->us_allowed & us->us_type;
- dbglog("cbcp_resp cb_type=%d", cb_type);
-
-#if 0
- if (!cb_type)
- lcp_down(us->us_unit);
-#endif
-
- if (cb_type & ( 1 << CB_CONF_USER ) ) {
- dbglog("cbcp_resp CONF_USER");
- PUTCHAR(CB_CONF_USER, bufp);
- len = 3 + 1 + strlen(us->us_number) + 1;
- PUTCHAR(len , bufp);
- PUTCHAR(5, bufp); /* delay */
- PUTCHAR(1, bufp);
- BCOPY(us->us_number, bufp, strlen(us->us_number) + 1);
- cbcp_send(us, CBCP_RESP, buf, len);
- return;
- }
-
- if (cb_type & ( 1 << CB_CONF_ADMIN ) ) {
- dbglog("cbcp_resp CONF_ADMIN");
- PUTCHAR(CB_CONF_ADMIN, bufp);
- len = 3;
- PUTCHAR(len, bufp);
- PUTCHAR(5, bufp); /* delay */
- cbcp_send(us, CBCP_RESP, buf, len);
- return;
- }
-
- if (cb_type & ( 1 << CB_CONF_NO ) ) {
- dbglog("cbcp_resp CONF_NO");
- PUTCHAR(CB_CONF_NO, bufp);
- len = 3;
- PUTCHAR(len , bufp);
- PUTCHAR(0, bufp);
- cbcp_send(us, CBCP_RESP, buf, len);
- start_networks();
- return;
- }
-}
-
-static void
-cbcp_send(us, code, buf, len)
- cbcp_state *us;
- u_char code;
- u_char *buf;
- int len;
-{
- u_char *outp;
- int outlen;
-
- outp = outpacket_buf;
-
- outlen = 4 + len;
-
- MAKEHEADER(outp, PPP_CBCP);
-
- PUTCHAR(code, outp);
- PUTCHAR(us->us_id, outp);
- PUTSHORT(outlen, outp);
-
- if (len)
- BCOPY(buf, outp, len);
-
- output(us->us_unit, outpacket_buf, outlen + PPP_HDRLEN);
-}
-
-static void
-cbcp_recvack(us, pckt, len)
- cbcp_state *us;
- char *pckt;
- int len;
-{
- u_char type, delay, addr_type;
- int opt_len;
- char address[256];
-
- if (len) {
- GETCHAR(type, pckt);
- GETCHAR(opt_len, pckt);
-
- if (opt_len > 2)
- GETCHAR(delay, pckt);
-
- if (opt_len > 4) {
- GETCHAR(addr_type, pckt);
- memcpy(address, pckt, opt_len - 4);
- address[opt_len - 4] = 0;
- if (address[0])
- dbglog("peer will call: %s", address);
- }
- if (type == CB_CONF_NO)
- return;
- }
-
- cbcp_up(us);
-}
-
-/* ok peer will do callback */
-static void
-cbcp_up(us)
- cbcp_state *us;
-{
- persist = 0;
- lcp_close(0, "Call me back, please");
- status = EXIT_CALLBACK;
-}
diff --git a/mdk-stage1/ppp/pppd/cbcp.h b/mdk-stage1/ppp/pppd/cbcp.h
deleted file mode 100644
index c2ab3f689..000000000
--- a/mdk-stage1/ppp/pppd/cbcp.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef CBCP_H
-#define CBCP_H
-
-typedef struct cbcp_state {
- int us_unit; /* Interface unit number */
- u_char us_id; /* Current id */
- u_char us_allowed;
- int us_type;
- char *us_number; /* Telefone Number */
-} cbcp_state;
-
-extern cbcp_state cbcp[];
-
-extern struct protent cbcp_protent;
-
-#define CBCP_MINLEN 4
-
-#define CBCP_REQ 1
-#define CBCP_RESP 2
-#define CBCP_ACK 3
-
-#define CB_CONF_NO 1
-#define CB_CONF_USER 2
-#define CB_CONF_ADMIN 3
-#define CB_CONF_LIST 4
-#endif
diff --git a/mdk-stage1/ppp/pppd/ccp.c b/mdk-stage1/ppp/pppd/ccp.c
deleted file mode 100644
index 7e36e384e..000000000
--- a/mdk-stage1/ppp/pppd/ccp.c
+++ /dev/null
@@ -1,1257 +0,0 @@
-/*
- * ccp.c - PPP Compression Control Protocol.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-#define RCSID "$Id$"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ccp.h"
-#include <net/ppp-comp.h>
-
-static const char rcsid[] = RCSID;
-
-/*
- * Unfortunately there is a bug in zlib which means that using a
- * size of 8 (window size = 256) for Deflate compression will cause
- * buffer overruns and kernel crashes in the deflate module.
- * Until this is fixed we only accept sizes in the range 9 .. 15.
- * Thanks to James Carlson for pointing this out.
- */
-#define DEFLATE_MIN_WORKS 9
-
-/*
- * Command-line options.
- */
-static int setbsdcomp __P((char **));
-static int setdeflate __P((char **));
-static char bsd_value[8];
-static char deflate_value[8];
-
-static option_t ccp_option_list[] = {
- { "noccp", o_bool, &ccp_protent.enabled_flag,
- "Disable CCP negotiation" },
- { "-ccp", o_bool, &ccp_protent.enabled_flag,
- "Disable CCP negotiation", OPT_ALIAS },
-
- { "bsdcomp", o_special, (void *)setbsdcomp,
- "Request BSD-Compress packet compression",
- OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, bsd_value },
- { "nobsdcomp", o_bool, &ccp_wantoptions[0].bsd_compress,
- "don't allow BSD-Compress", OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].bsd_compress },
- { "-bsdcomp", o_bool, &ccp_wantoptions[0].bsd_compress,
- "don't allow BSD-Compress", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].bsd_compress },
-
- { "deflate", o_special, (void *)setdeflate,
- "request Deflate compression",
- OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, deflate_value },
- { "nodeflate", o_bool, &ccp_wantoptions[0].deflate,
- "don't allow Deflate compression", OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].deflate },
- { "-deflate", o_bool, &ccp_wantoptions[0].deflate,
- "don't allow Deflate compression", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].deflate },
-
- { "nodeflatedraft", o_bool, &ccp_wantoptions[0].deflate_draft,
- "don't use draft deflate #", OPT_A2COPY,
- &ccp_allowoptions[0].deflate_draft },
-
- { "predictor1", o_bool, &ccp_wantoptions[0].predictor_1,
- "request Predictor-1", 1, &ccp_allowoptions[0].predictor_1, OPT_PRIO },
- { "nopredictor1", o_bool, &ccp_wantoptions[0].predictor_1,
- "don't allow Predictor-1", OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].predictor_1 },
- { "-predictor1", o_bool, &ccp_wantoptions[0].predictor_1,
- "don't allow Predictor-1", OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR,
- &ccp_allowoptions[0].predictor_1 },
-
- { NULL }
-};
-
-/*
- * Protocol entry points from main code.
- */
-static void ccp_init __P((int unit));
-static void ccp_open __P((int unit));
-static void ccp_close __P((int unit, char *));
-static void ccp_lowerup __P((int unit));
-static void ccp_lowerdown __P((int));
-static void ccp_input __P((int unit, u_char *pkt, int len));
-static void ccp_protrej __P((int unit));
-static int ccp_printpkt __P((u_char *pkt, int len,
- void (*printer) __P((void *, char *, ...)),
- void *arg));
-static void ccp_datainput __P((int unit, u_char *pkt, int len));
-
-struct protent ccp_protent = {
- PPP_CCP,
- ccp_init,
- ccp_input,
- ccp_protrej,
- ccp_lowerup,
- ccp_lowerdown,
- ccp_open,
- ccp_close,
- ccp_printpkt,
- ccp_datainput,
- 1,
- "CCP",
- "Compressed",
- ccp_option_list,
- NULL,
- NULL,
- NULL
-};
-
-fsm ccp_fsm[NUM_PPP];
-ccp_options ccp_wantoptions[NUM_PPP]; /* what to request the peer to use */
-ccp_options ccp_gotoptions[NUM_PPP]; /* what the peer agreed to do */
-ccp_options ccp_allowoptions[NUM_PPP]; /* what we'll agree to do */
-ccp_options ccp_hisoptions[NUM_PPP]; /* what we agreed to do */
-
-/*
- * Callbacks for fsm code.
- */
-static void ccp_resetci __P((fsm *));
-static int ccp_cilen __P((fsm *));
-static void ccp_addci __P((fsm *, u_char *, int *));
-static int ccp_ackci __P((fsm *, u_char *, int));
-static int ccp_nakci __P((fsm *, u_char *, int));
-static int ccp_rejci __P((fsm *, u_char *, int));
-static int ccp_reqci __P((fsm *, u_char *, int *, int));
-static void ccp_up __P((fsm *));
-static void ccp_down __P((fsm *));
-static int ccp_extcode __P((fsm *, int, int, u_char *, int));
-static void ccp_rack_timeout __P((void *));
-static char *method_name __P((ccp_options *, ccp_options *));
-
-static fsm_callbacks ccp_callbacks = {
- ccp_resetci,
- ccp_cilen,
- ccp_addci,
- ccp_ackci,
- ccp_nakci,
- ccp_rejci,
- ccp_reqci,
- ccp_up,
- ccp_down,
- NULL,
- NULL,
- NULL,
- NULL,
- ccp_extcode,
- "CCP"
-};
-
-/*
- * Do we want / did we get any compression?
- */
-#define ANY_COMPRESS(opt) ((opt).deflate || (opt).bsd_compress \
- || (opt).predictor_1 || (opt).predictor_2)
-
-/*
- * Local state (mainly for handling reset-reqs and reset-acks).
- */
-static int ccp_localstate[NUM_PPP];
-#define RACK_PENDING 1 /* waiting for reset-ack */
-#define RREQ_REPEAT 2 /* send another reset-req if no reset-ack */
-
-#define RACKTIMEOUT 1 /* second */
-
-static int all_rejected[NUM_PPP]; /* we rejected all peer's options */
-
-/*
- * Option parsing.
- */
-static int
-setbsdcomp(argv)
- char **argv;
-{
- int rbits, abits;
- char *str, *endp;
-
- str = *argv;
- abits = rbits = strtol(str, &endp, 0);
- if (endp != str && *endp == ',') {
- str = endp + 1;
- abits = strtol(str, &endp, 0);
- }
- if (*endp != 0 || endp == str) {
- option_error("invalid parameter '%s' for bsdcomp option", *argv);
- return 0;
- }
- if ((rbits != 0 && (rbits < BSD_MIN_BITS || rbits > BSD_MAX_BITS))
- || (abits != 0 && (abits < BSD_MIN_BITS || abits > BSD_MAX_BITS))) {
- option_error("bsdcomp option values must be 0 or %d .. %d",
- BSD_MIN_BITS, BSD_MAX_BITS);
- return 0;
- }
- if (rbits > 0) {
- ccp_wantoptions[0].bsd_compress = 1;
- ccp_wantoptions[0].bsd_bits = rbits;
- } else
- ccp_wantoptions[0].bsd_compress = 0;
- if (abits > 0) {
- ccp_allowoptions[0].bsd_compress = 1;
- ccp_allowoptions[0].bsd_bits = abits;
- } else
- ccp_allowoptions[0].bsd_compress = 0;
- slprintf(bsd_value, sizeof(bsd_value),
- rbits == abits? "%d": "%d,%d", rbits, abits);
-
- return 1;
-}
-
-static int
-setdeflate(argv)
- char **argv;
-{
- int rbits, abits;
- char *str, *endp;
-
- str = *argv;
- abits = rbits = strtol(str, &endp, 0);
- if (endp != str && *endp == ',') {
- str = endp + 1;
- abits = strtol(str, &endp, 0);
- }
- if (*endp != 0 || endp == str) {
- option_error("invalid parameter '%s' for deflate option", *argv);
- return 0;
- }
- if ((rbits != 0 && (rbits < DEFLATE_MIN_SIZE || rbits > DEFLATE_MAX_SIZE))
- || (abits != 0 && (abits < DEFLATE_MIN_SIZE
- || abits > DEFLATE_MAX_SIZE))) {
- option_error("deflate option values must be 0 or %d .. %d",
- DEFLATE_MIN_SIZE, DEFLATE_MAX_SIZE);
- return 0;
- }
- if (rbits == DEFLATE_MIN_SIZE || abits == DEFLATE_MIN_SIZE) {
- if (rbits == DEFLATE_MIN_SIZE)
- rbits = DEFLATE_MIN_WORKS;
- if (abits == DEFLATE_MIN_SIZE)
- abits = DEFLATE_MIN_WORKS;
- warn("deflate option value of %d changed to %d to avoid zlib bug",
- DEFLATE_MIN_SIZE, DEFLATE_MIN_WORKS);
- }
- if (rbits > 0) {
- ccp_wantoptions[0].deflate = 1;
- ccp_wantoptions[0].deflate_size = rbits;
- } else
- ccp_wantoptions[0].deflate = 0;
- if (abits > 0) {
- ccp_allowoptions[0].deflate = 1;
- ccp_allowoptions[0].deflate_size = abits;
- } else
- ccp_allowoptions[0].deflate = 0;
- slprintf(deflate_value, sizeof(deflate_value),
- rbits == abits? "%d": "%d,%d", rbits, abits);
-
- return 1;
-}
-
-/*
- * ccp_init - initialize CCP.
- */
-static void
-ccp_init(unit)
- int unit;
-{
- fsm *f = &ccp_fsm[unit];
-
- f->unit = unit;
- f->protocol = PPP_CCP;
- f->callbacks = &ccp_callbacks;
- fsm_init(f);
-
- memset(&ccp_wantoptions[unit], 0, sizeof(ccp_options));
- memset(&ccp_gotoptions[unit], 0, sizeof(ccp_options));
- memset(&ccp_allowoptions[unit], 0, sizeof(ccp_options));
- memset(&ccp_hisoptions[unit], 0, sizeof(ccp_options));
-
- ccp_wantoptions[0].deflate = 1;
- ccp_wantoptions[0].deflate_size = DEFLATE_MAX_SIZE;
- ccp_wantoptions[0].deflate_correct = 1;
- ccp_wantoptions[0].deflate_draft = 1;
- ccp_allowoptions[0].deflate = 1;
- ccp_allowoptions[0].deflate_size = DEFLATE_MAX_SIZE;
- ccp_allowoptions[0].deflate_correct = 1;
- ccp_allowoptions[0].deflate_draft = 1;
-
- ccp_wantoptions[0].bsd_compress = 1;
- ccp_wantoptions[0].bsd_bits = BSD_MAX_BITS;
- ccp_allowoptions[0].bsd_compress = 1;
- ccp_allowoptions[0].bsd_bits = BSD_MAX_BITS;
-
- ccp_allowoptions[0].predictor_1 = 1;
-}
-
-/*
- * ccp_open - CCP is allowed to come up.
- */
-static void
-ccp_open(unit)
- int unit;
-{
- fsm *f = &ccp_fsm[unit];
-
- if (f->state != OPENED)
- ccp_flags_set(unit, 1, 0);
-
- /*
- * Find out which compressors the kernel supports before
- * deciding whether to open in silent mode.
- */
- ccp_resetci(f);
- if (!ANY_COMPRESS(ccp_gotoptions[unit]))
- f->flags |= OPT_SILENT;
-
- fsm_open(f);
-}
-
-/*
- * ccp_close - Terminate CCP.
- */
-static void
-ccp_close(unit, reason)
- int unit;
- char *reason;
-{
- ccp_flags_set(unit, 0, 0);
- fsm_close(&ccp_fsm[unit], reason);
-}
-
-/*
- * ccp_lowerup - we may now transmit CCP packets.
- */
-static void
-ccp_lowerup(unit)
- int unit;
-{
- fsm_lowerup(&ccp_fsm[unit]);
-}
-
-/*
- * ccp_lowerdown - we may not transmit CCP packets.
- */
-static void
-ccp_lowerdown(unit)
- int unit;
-{
- fsm_lowerdown(&ccp_fsm[unit]);
-}
-
-/*
- * ccp_input - process a received CCP packet.
- */
-static void
-ccp_input(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- fsm *f = &ccp_fsm[unit];
- int oldstate;
-
- /*
- * Check for a terminate-request so we can print a message.
- */
- oldstate = f->state;
- fsm_input(f, p, len);
- if (oldstate == OPENED && p[0] == TERMREQ && f->state != OPENED)
- notice("Compression disabled by peer.");
-
- /*
- * If we get a terminate-ack and we're not asking for compression,
- * close CCP.
- */
- if (oldstate == REQSENT && p[0] == TERMACK
- && !ANY_COMPRESS(ccp_gotoptions[unit]))
- ccp_close(unit, "No compression negotiated");
-}
-
-/*
- * Handle a CCP-specific code.
- */
-static int
-ccp_extcode(f, code, id, p, len)
- fsm *f;
- int code, id;
- u_char *p;
- int len;
-{
- switch (code) {
- case CCP_RESETREQ:
- if (f->state != OPENED)
- break;
- /* send a reset-ack, which the transmitter will see and
- reset its compression state. */
- fsm_sdata(f, CCP_RESETACK, id, NULL, 0);
- break;
-
- case CCP_RESETACK:
- if (ccp_localstate[f->unit] & RACK_PENDING && id == f->reqid) {
- ccp_localstate[f->unit] &= ~(RACK_PENDING | RREQ_REPEAT);
- UNTIMEOUT(ccp_rack_timeout, f);
- }
- break;
-
- default:
- return 0;
- }
-
- return 1;
-}
-
-/*
- * ccp_protrej - peer doesn't talk CCP.
- */
-static void
-ccp_protrej(unit)
- int unit;
-{
- ccp_flags_set(unit, 0, 0);
- fsm_lowerdown(&ccp_fsm[unit]);
-}
-
-/*
- * ccp_resetci - initialize at start of negotiation.
- */
-static void
-ccp_resetci(f)
- fsm *f;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
- u_char opt_buf[16];
-
- *go = ccp_wantoptions[f->unit];
- all_rejected[f->unit] = 0;
-
- /*
- * Check whether the kernel knows about the various
- * compression methods we might request.
- */
- if (go->bsd_compress) {
- opt_buf[0] = CI_BSD_COMPRESS;
- opt_buf[1] = CILEN_BSD_COMPRESS;
- opt_buf[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION, BSD_MIN_BITS);
- if (ccp_test(f->unit, opt_buf, CILEN_BSD_COMPRESS, 0) <= 0)
- go->bsd_compress = 0;
- }
- if (go->deflate) {
- if (go->deflate_correct) {
- opt_buf[0] = CI_DEFLATE;
- opt_buf[1] = CILEN_DEFLATE;
- opt_buf[2] = DEFLATE_MAKE_OPT(DEFLATE_MIN_WORKS);
- opt_buf[3] = DEFLATE_CHK_SEQUENCE;
- if (ccp_test(f->unit, opt_buf, CILEN_DEFLATE, 0) <= 0)
- go->deflate_correct = 0;
- }
- if (go->deflate_draft) {
- opt_buf[0] = CI_DEFLATE_DRAFT;
- opt_buf[1] = CILEN_DEFLATE;
- opt_buf[2] = DEFLATE_MAKE_OPT(DEFLATE_MIN_WORKS);
- opt_buf[3] = DEFLATE_CHK_SEQUENCE;
- if (ccp_test(f->unit, opt_buf, CILEN_DEFLATE, 0) <= 0)
- go->deflate_draft = 0;
- }
- if (!go->deflate_correct && !go->deflate_draft)
- go->deflate = 0;
- }
- if (go->predictor_1) {
- opt_buf[0] = CI_PREDICTOR_1;
- opt_buf[1] = CILEN_PREDICTOR_1;
- if (ccp_test(f->unit, opt_buf, CILEN_PREDICTOR_1, 0) <= 0)
- go->predictor_1 = 0;
- }
- if (go->predictor_2) {
- opt_buf[0] = CI_PREDICTOR_2;
- opt_buf[1] = CILEN_PREDICTOR_2;
- if (ccp_test(f->unit, opt_buf, CILEN_PREDICTOR_2, 0) <= 0)
- go->predictor_2 = 0;
- }
-}
-
-/*
- * ccp_cilen - Return total length of our configuration info.
- */
-static int
-ccp_cilen(f)
- fsm *f;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
-
- return (go->bsd_compress? CILEN_BSD_COMPRESS: 0)
- + (go->deflate? CILEN_DEFLATE: 0)
- + (go->predictor_1? CILEN_PREDICTOR_1: 0)
- + (go->predictor_2? CILEN_PREDICTOR_2: 0);
-}
-
-/*
- * ccp_addci - put our requests in a packet.
- */
-static void
-ccp_addci(f, p, lenp)
- fsm *f;
- u_char *p;
- int *lenp;
-{
- int res;
- ccp_options *go = &ccp_gotoptions[f->unit];
- u_char *p0 = p;
-
- /*
- * Add the compression types that we can receive, in decreasing
- * preference order. Get the kernel to allocate the first one
- * in case it gets Acked.
- */
- if (go->deflate) {
- p[0] = go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT;
- p[1] = CILEN_DEFLATE;
- p[2] = DEFLATE_MAKE_OPT(go->deflate_size);
- p[3] = DEFLATE_CHK_SEQUENCE;
- for (;;) {
- res = ccp_test(f->unit, p, CILEN_DEFLATE, 0);
- if (res > 0) {
- p += CILEN_DEFLATE;
- break;
- }
- if (res < 0 || go->deflate_size <= DEFLATE_MIN_WORKS) {
- go->deflate = 0;
- break;
- }
- --go->deflate_size;
- p[2] = DEFLATE_MAKE_OPT(go->deflate_size);
- }
- if (p != p0 && go->deflate_correct && go->deflate_draft) {
- p[0] = CI_DEFLATE_DRAFT;
- p[1] = CILEN_DEFLATE;
- p[2] = p[2 - CILEN_DEFLATE];
- p[3] = DEFLATE_CHK_SEQUENCE;
- p += CILEN_DEFLATE;
- }
- }
- if (go->bsd_compress) {
- p[0] = CI_BSD_COMPRESS;
- p[1] = CILEN_BSD_COMPRESS;
- p[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION, go->bsd_bits);
- if (p != p0) {
- p += CILEN_BSD_COMPRESS; /* not the first option */
- } else {
- for (;;) {
- res = ccp_test(f->unit, p, CILEN_BSD_COMPRESS, 0);
- if (res > 0) {
- p += CILEN_BSD_COMPRESS;
- break;
- }
- if (res < 0 || go->bsd_bits <= BSD_MIN_BITS) {
- go->bsd_compress = 0;
- break;
- }
- --go->bsd_bits;
- p[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION, go->bsd_bits);
- }
- }
- }
- /* XXX Should Predictor 2 be preferable to Predictor 1? */
- if (go->predictor_1) {
- p[0] = CI_PREDICTOR_1;
- p[1] = CILEN_PREDICTOR_1;
- if (p == p0 && ccp_test(f->unit, p, CILEN_PREDICTOR_1, 0) <= 0) {
- go->predictor_1 = 0;
- } else {
- p += CILEN_PREDICTOR_1;
- }
- }
- if (go->predictor_2) {
- p[0] = CI_PREDICTOR_2;
- p[1] = CILEN_PREDICTOR_2;
- if (p == p0 && ccp_test(f->unit, p, CILEN_PREDICTOR_2, 0) <= 0) {
- go->predictor_2 = 0;
- } else {
- p += CILEN_PREDICTOR_2;
- }
- }
-
- go->method = (p > p0)? p0[0]: -1;
-
- *lenp = p - p0;
-}
-
-/*
- * ccp_ackci - process a received configure-ack, and return
- * 1 iff the packet was OK.
- */
-static int
-ccp_ackci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
- u_char *p0 = p;
-
- if (go->deflate) {
- if (len < CILEN_DEFLATE
- || p[0] != (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
- || p[1] != CILEN_DEFLATE
- || p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
- || p[3] != DEFLATE_CHK_SEQUENCE)
- return 0;
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- /* XXX Cope with first/fast ack */
- if (len == 0)
- return 1;
- if (go->deflate_correct && go->deflate_draft) {
- if (len < CILEN_DEFLATE
- || p[0] != CI_DEFLATE_DRAFT
- || p[1] != CILEN_DEFLATE
- || p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
- || p[3] != DEFLATE_CHK_SEQUENCE)
- return 0;
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- }
- }
- if (go->bsd_compress) {
- if (len < CILEN_BSD_COMPRESS
- || p[0] != CI_BSD_COMPRESS || p[1] != CILEN_BSD_COMPRESS
- || p[2] != BSD_MAKE_OPT(BSD_CURRENT_VERSION, go->bsd_bits))
- return 0;
- p += CILEN_BSD_COMPRESS;
- len -= CILEN_BSD_COMPRESS;
- /* XXX Cope with first/fast ack */
- if (p == p0 && len == 0)
- return 1;
- }
- if (go->predictor_1) {
- if (len < CILEN_PREDICTOR_1
- || p[0] != CI_PREDICTOR_1 || p[1] != CILEN_PREDICTOR_1)
- return 0;
- p += CILEN_PREDICTOR_1;
- len -= CILEN_PREDICTOR_1;
- /* XXX Cope with first/fast ack */
- if (p == p0 && len == 0)
- return 1;
- }
- if (go->predictor_2) {
- if (len < CILEN_PREDICTOR_2
- || p[0] != CI_PREDICTOR_2 || p[1] != CILEN_PREDICTOR_2)
- return 0;
- p += CILEN_PREDICTOR_2;
- len -= CILEN_PREDICTOR_2;
- /* XXX Cope with first/fast ack */
- if (p == p0 && len == 0)
- return 1;
- }
-
- if (len != 0)
- return 0;
- return 1;
-}
-
-/*
- * ccp_nakci - process received configure-nak.
- * Returns 1 iff the nak was OK.
- */
-static int
-ccp_nakci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
- ccp_options no; /* options we've seen already */
- ccp_options try; /* options to ask for next time */
-
- memset(&no, 0, sizeof(no));
- try = *go;
-
- if (go->deflate && len >= CILEN_DEFLATE
- && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
- && p[1] == CILEN_DEFLATE) {
- no.deflate = 1;
- /*
- * Peer wants us to use a different code size or something.
- * Stop asking for Deflate if we don't understand his suggestion.
- */
- if (DEFLATE_METHOD(p[2]) != DEFLATE_METHOD_VAL
- || DEFLATE_SIZE(p[2]) < DEFLATE_MIN_WORKS
- || p[3] != DEFLATE_CHK_SEQUENCE)
- try.deflate = 0;
- else if (DEFLATE_SIZE(p[2]) < go->deflate_size)
- try.deflate_size = DEFLATE_SIZE(p[2]);
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- if (go->deflate_correct && go->deflate_draft
- && len >= CILEN_DEFLATE && p[0] == CI_DEFLATE_DRAFT
- && p[1] == CILEN_DEFLATE) {
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- }
- }
-
- if (go->bsd_compress && len >= CILEN_BSD_COMPRESS
- && p[0] == CI_BSD_COMPRESS && p[1] == CILEN_BSD_COMPRESS) {
- no.bsd_compress = 1;
- /*
- * Peer wants us to use a different number of bits
- * or a different version.
- */
- if (BSD_VERSION(p[2]) != BSD_CURRENT_VERSION)
- try.bsd_compress = 0;
- else if (BSD_NBITS(p[2]) < go->bsd_bits)
- try.bsd_bits = BSD_NBITS(p[2]);
- p += CILEN_BSD_COMPRESS;
- len -= CILEN_BSD_COMPRESS;
- }
-
- /*
- * Predictor-1 and 2 have no options, so they can't be Naked.
- *
- * There may be remaining options but we ignore them.
- */
-
- if (f->state != OPENED)
- *go = try;
- return 1;
-}
-
-/*
- * ccp_rejci - reject some of our suggested compression methods.
- */
-static int
-ccp_rejci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
- ccp_options try; /* options to request next time */
-
- try = *go;
-
- /*
- * Cope with empty configure-rejects by ceasing to send
- * configure-requests.
- */
- if (len == 0 && all_rejected[f->unit])
- return -1;
-
- if (go->deflate && len >= CILEN_DEFLATE
- && p[0] == (go->deflate_correct? CI_DEFLATE: CI_DEFLATE_DRAFT)
- && p[1] == CILEN_DEFLATE) {
- if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
- || p[3] != DEFLATE_CHK_SEQUENCE)
- return 0; /* Rej is bad */
- if (go->deflate_correct)
- try.deflate_correct = 0;
- else
- try.deflate_draft = 0;
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- if (go->deflate_correct && go->deflate_draft
- && len >= CILEN_DEFLATE && p[0] == CI_DEFLATE_DRAFT
- && p[1] == CILEN_DEFLATE) {
- if (p[2] != DEFLATE_MAKE_OPT(go->deflate_size)
- || p[3] != DEFLATE_CHK_SEQUENCE)
- return 0; /* Rej is bad */
- try.deflate_draft = 0;
- p += CILEN_DEFLATE;
- len -= CILEN_DEFLATE;
- }
- if (!try.deflate_correct && !try.deflate_draft)
- try.deflate = 0;
- }
- if (go->bsd_compress && len >= CILEN_BSD_COMPRESS
- && p[0] == CI_BSD_COMPRESS && p[1] == CILEN_BSD_COMPRESS) {
- if (p[2] != BSD_MAKE_OPT(BSD_CURRENT_VERSION, go->bsd_bits))
- return 0;
- try.bsd_compress = 0;
- p += CILEN_BSD_COMPRESS;
- len -= CILEN_BSD_COMPRESS;
- }
- if (go->predictor_1 && len >= CILEN_PREDICTOR_1
- && p[0] == CI_PREDICTOR_1 && p[1] == CILEN_PREDICTOR_1) {
- try.predictor_1 = 0;
- p += CILEN_PREDICTOR_1;
- len -= CILEN_PREDICTOR_1;
- }
- if (go->predictor_2 && len >= CILEN_PREDICTOR_2
- && p[0] == CI_PREDICTOR_2 && p[1] == CILEN_PREDICTOR_2) {
- try.predictor_2 = 0;
- p += CILEN_PREDICTOR_2;
- len -= CILEN_PREDICTOR_2;
- }
-
- if (len != 0)
- return 0;
-
- if (f->state != OPENED)
- *go = try;
-
- return 1;
-}
-
-/*
- * ccp_reqci - processed a received configure-request.
- * Returns CONFACK, CONFNAK or CONFREJ and the packet modified
- * appropriately.
- */
-static int
-ccp_reqci(f, p, lenp, dont_nak)
- fsm *f;
- u_char *p;
- int *lenp;
- int dont_nak;
-{
- int ret, newret, res;
- u_char *p0, *retp;
- int len, clen, type, nb;
- ccp_options *ho = &ccp_hisoptions[f->unit];
- ccp_options *ao = &ccp_allowoptions[f->unit];
-
- ret = CONFACK;
- retp = p0 = p;
- len = *lenp;
-
- memset(ho, 0, sizeof(ccp_options));
- ho->method = (len > 0)? p[0]: -1;
-
- while (len > 0) {
- newret = CONFACK;
- if (len < 2 || p[1] < 2 || p[1] > len) {
- /* length is bad */
- clen = len;
- newret = CONFREJ;
-
- } else {
- type = p[0];
- clen = p[1];
-
- switch (type) {
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (!ao->deflate || clen != CILEN_DEFLATE
- || (!ao->deflate_correct && type == CI_DEFLATE)
- || (!ao->deflate_draft && type == CI_DEFLATE_DRAFT)) {
- newret = CONFREJ;
- break;
- }
-
- ho->deflate = 1;
- ho->deflate_size = nb = DEFLATE_SIZE(p[2]);
- if (DEFLATE_METHOD(p[2]) != DEFLATE_METHOD_VAL
- || p[3] != DEFLATE_CHK_SEQUENCE
- || nb > ao->deflate_size || nb < DEFLATE_MIN_WORKS) {
- newret = CONFNAK;
- if (!dont_nak) {
- p[2] = DEFLATE_MAKE_OPT(ao->deflate_size);
- p[3] = DEFLATE_CHK_SEQUENCE;
- /* fall through to test this #bits below */
- } else
- break;
- }
-
- /*
- * Check whether we can do Deflate with the window
- * size they want. If the window is too big, reduce
- * it until the kernel can cope and nak with that.
- * We only check this for the first option.
- */
- if (p == p0) {
- for (;;) {
- res = ccp_test(f->unit, p, CILEN_DEFLATE, 1);
- if (res > 0)
- break; /* it's OK now */
- if (res < 0 || nb == DEFLATE_MIN_WORKS || dont_nak) {
- newret = CONFREJ;
- p[2] = DEFLATE_MAKE_OPT(ho->deflate_size);
- break;
- }
- newret = CONFNAK;
- --nb;
- p[2] = DEFLATE_MAKE_OPT(nb);
- }
- }
- break;
-
- case CI_BSD_COMPRESS:
- if (!ao->bsd_compress || clen != CILEN_BSD_COMPRESS) {
- newret = CONFREJ;
- break;
- }
-
- ho->bsd_compress = 1;
- ho->bsd_bits = nb = BSD_NBITS(p[2]);
- if (BSD_VERSION(p[2]) != BSD_CURRENT_VERSION
- || nb > ao->bsd_bits || nb < BSD_MIN_BITS) {
- newret = CONFNAK;
- if (!dont_nak) {
- p[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION, ao->bsd_bits);
- /* fall through to test this #bits below */
- } else
- break;
- }
-
- /*
- * Check whether we can do BSD-Compress with the code
- * size they want. If the code size is too big, reduce
- * it until the kernel can cope and nak with that.
- * We only check this for the first option.
- */
- if (p == p0) {
- for (;;) {
- res = ccp_test(f->unit, p, CILEN_BSD_COMPRESS, 1);
- if (res > 0)
- break;
- if (res < 0 || nb == BSD_MIN_BITS || dont_nak) {
- newret = CONFREJ;
- p[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION,
- ho->bsd_bits);
- break;
- }
- newret = CONFNAK;
- --nb;
- p[2] = BSD_MAKE_OPT(BSD_CURRENT_VERSION, nb);
- }
- }
- break;
-
- case CI_PREDICTOR_1:
- if (!ao->predictor_1 || clen != CILEN_PREDICTOR_1) {
- newret = CONFREJ;
- break;
- }
-
- ho->predictor_1 = 1;
- if (p == p0
- && ccp_test(f->unit, p, CILEN_PREDICTOR_1, 1) <= 0) {
- newret = CONFREJ;
- }
- break;
-
- case CI_PREDICTOR_2:
- if (!ao->predictor_2 || clen != CILEN_PREDICTOR_2) {
- newret = CONFREJ;
- break;
- }
-
- ho->predictor_2 = 1;
- if (p == p0
- && ccp_test(f->unit, p, CILEN_PREDICTOR_2, 1) <= 0) {
- newret = CONFREJ;
- }
- break;
-
- default:
- newret = CONFREJ;
- }
- }
-
- if (newret == CONFNAK && dont_nak)
- newret = CONFREJ;
- if (!(newret == CONFACK || (newret == CONFNAK && ret == CONFREJ))) {
- /* we're returning this option */
- if (newret == CONFREJ && ret == CONFNAK)
- retp = p0;
- ret = newret;
- if (p != retp)
- BCOPY(p, retp, clen);
- retp += clen;
- }
-
- p += clen;
- len -= clen;
- }
-
- if (ret != CONFACK) {
- if (ret == CONFREJ && *lenp == retp - p0)
- all_rejected[f->unit] = 1;
- else
- *lenp = retp - p0;
- }
- return ret;
-}
-
-/*
- * Make a string name for a compression method (or 2).
- */
-static char *
-method_name(opt, opt2)
- ccp_options *opt, *opt2;
-{
- static char result[64];
-
- if (!ANY_COMPRESS(*opt))
- return "(none)";
- switch (opt->method) {
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (opt2 != NULL && opt2->deflate_size != opt->deflate_size)
- slprintf(result, sizeof(result), "Deflate%s (%d/%d)",
- (opt->method == CI_DEFLATE_DRAFT? "(old#)": ""),
- opt->deflate_size, opt2->deflate_size);
- else
- slprintf(result, sizeof(result), "Deflate%s (%d)",
- (opt->method == CI_DEFLATE_DRAFT? "(old#)": ""),
- opt->deflate_size);
- break;
- case CI_BSD_COMPRESS:
- if (opt2 != NULL && opt2->bsd_bits != opt->bsd_bits)
- slprintf(result, sizeof(result), "BSD-Compress (%d/%d)",
- opt->bsd_bits, opt2->bsd_bits);
- else
- slprintf(result, sizeof(result), "BSD-Compress (%d)",
- opt->bsd_bits);
- break;
- case CI_PREDICTOR_1:
- return "Predictor 1";
- case CI_PREDICTOR_2:
- return "Predictor 2";
- default:
- slprintf(result, sizeof(result), "Method %d", opt->method);
- }
- return result;
-}
-
-/*
- * CCP has come up - inform the kernel driver and log a message.
- */
-static void
-ccp_up(f)
- fsm *f;
-{
- ccp_options *go = &ccp_gotoptions[f->unit];
- ccp_options *ho = &ccp_hisoptions[f->unit];
- char method1[64];
-
- ccp_flags_set(f->unit, 1, 1);
- if (ANY_COMPRESS(*go)) {
- if (ANY_COMPRESS(*ho)) {
- if (go->method == ho->method) {
- notice("%s compression enabled", method_name(go, ho));
- } else {
- strlcpy(method1, method_name(go, NULL), sizeof(method1));
- notice("%s / %s compression enabled",
- method1, method_name(ho, NULL));
- }
- } else
- notice("%s receive compression enabled", method_name(go, NULL));
- } else if (ANY_COMPRESS(*ho))
- notice("%s transmit compression enabled", method_name(ho, NULL));
-}
-
-/*
- * CCP has gone down - inform the kernel driver.
- */
-static void
-ccp_down(f)
- fsm *f;
-{
- if (ccp_localstate[f->unit] & RACK_PENDING)
- UNTIMEOUT(ccp_rack_timeout, f);
- ccp_localstate[f->unit] = 0;
- ccp_flags_set(f->unit, 1, 0);
-}
-
-/*
- * Print the contents of a CCP packet.
- */
-static char *ccp_codenames[] = {
- "ConfReq", "ConfAck", "ConfNak", "ConfRej",
- "TermReq", "TermAck", "CodeRej",
- NULL, NULL, NULL, NULL, NULL, NULL,
- "ResetReq", "ResetAck",
-};
-
-static int
-ccp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- u_char *p0, *optend;
- int code, id, len;
- int optlen;
-
- p0 = p;
- if (plen < HEADERLEN)
- return 0;
- code = p[0];
- id = p[1];
- len = (p[2] << 8) + p[3];
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(ccp_codenames) / sizeof(char *)
- && ccp_codenames[code-1] != NULL)
- printer(arg, " %s", ccp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
- p += HEADERLEN;
-
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- /* print list of possible compression methods */
- while (len >= 2) {
- code = p[0];
- optlen = p[1];
- if (optlen < 2 || optlen > len)
- break;
- printer(arg, " <");
- len -= optlen;
- optend = p + optlen;
- switch (code) {
- case CI_DEFLATE:
- case CI_DEFLATE_DRAFT:
- if (optlen >= CILEN_DEFLATE) {
- printer(arg, "deflate%s %d",
- (code == CI_DEFLATE_DRAFT? "(old#)": ""),
- DEFLATE_SIZE(p[2]));
- if (DEFLATE_METHOD(p[2]) != DEFLATE_METHOD_VAL)
- printer(arg, " method %d", DEFLATE_METHOD(p[2]));
- if (p[3] != DEFLATE_CHK_SEQUENCE)
- printer(arg, " check %d", p[3]);
- p += CILEN_DEFLATE;
- }
- break;
- case CI_BSD_COMPRESS:
- if (optlen >= CILEN_BSD_COMPRESS) {
- printer(arg, "bsd v%d %d", BSD_VERSION(p[2]),
- BSD_NBITS(p[2]));
- p += CILEN_BSD_COMPRESS;
- }
- break;
- case CI_PREDICTOR_1:
- if (optlen >= CILEN_PREDICTOR_1) {
- printer(arg, "predictor 1");
- p += CILEN_PREDICTOR_1;
- }
- break;
- case CI_PREDICTOR_2:
- if (optlen >= CILEN_PREDICTOR_2) {
- printer(arg, "predictor 2");
- p += CILEN_PREDICTOR_2;
- }
- break;
- }
- while (p < optend)
- printer(arg, " %.2x", *p++);
- printer(arg, ">");
- }
- break;
-
- case TERMACK:
- case TERMREQ:
- if (len > 0 && *p >= ' ' && *p < 0x7f) {
- print_string((char *)p, len, printer, arg);
- p += len;
- len = 0;
- }
- break;
- }
-
- /* dump out the rest of the packet in hex */
- while (--len >= 0)
- printer(arg, " %.2x", *p++);
-
- return p - p0;
-}
-
-/*
- * We have received a packet that the decompressor failed to
- * decompress. Here we would expect to issue a reset-request, but
- * Motorola has a patent on resetting the compressor as a result of
- * detecting an error in the decompressed data after decompression.
- * (See US patent 5,130,993; international patent publication number
- * WO 91/10289; Australian patent 73296/91.)
- *
- * So we ask the kernel whether the error was detected after
- * decompression; if it was, we take CCP down, thus disabling
- * compression :-(, otherwise we issue the reset-request.
- */
-static void
-ccp_datainput(unit, pkt, len)
- int unit;
- u_char *pkt;
- int len;
-{
- fsm *f;
-
- f = &ccp_fsm[unit];
- if (f->state == OPENED) {
- if (ccp_fatal_error(unit)) {
- /*
- * Disable compression by taking CCP down.
- */
- error("Lost compression sync: disabling compression");
- ccp_close(unit, "Lost compression sync");
- } else {
- /*
- * Send a reset-request to reset the peer's compressor.
- * We don't do that if we are still waiting for an
- * acknowledgement to a previous reset-request.
- */
- if (!(ccp_localstate[f->unit] & RACK_PENDING)) {
- fsm_sdata(f, CCP_RESETREQ, f->reqid = ++f->id, NULL, 0);
- TIMEOUT(ccp_rack_timeout, f, RACKTIMEOUT);
- ccp_localstate[f->unit] |= RACK_PENDING;
- } else
- ccp_localstate[f->unit] |= RREQ_REPEAT;
- }
- }
-}
-
-/*
- * Timeout waiting for reset-ack.
- */
-static void
-ccp_rack_timeout(arg)
- void *arg;
-{
- fsm *f = arg;
-
- if (f->state == OPENED && ccp_localstate[f->unit] & RREQ_REPEAT) {
- fsm_sdata(f, CCP_RESETREQ, f->reqid, NULL, 0);
- TIMEOUT(ccp_rack_timeout, f, RACKTIMEOUT);
- ccp_localstate[f->unit] &= ~RREQ_REPEAT;
- } else
- ccp_localstate[f->unit] &= ~RACK_PENDING;
-}
-
diff --git a/mdk-stage1/ppp/pppd/ccp.h b/mdk-stage1/ppp/pppd/ccp.h
deleted file mode 100644
index 609d858c5..000000000
--- a/mdk-stage1/ppp/pppd/ccp.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * ccp.h - Definitions for PPP Compression Control Protocol.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-typedef struct ccp_options {
- bool bsd_compress; /* do BSD Compress? */
- bool deflate; /* do Deflate? */
- bool predictor_1; /* do Predictor-1? */
- bool predictor_2; /* do Predictor-2? */
- bool deflate_correct; /* use correct code for deflate? */
- bool deflate_draft; /* use draft RFC code for deflate? */
- u_short bsd_bits; /* # bits/code for BSD Compress */
- u_short deflate_size; /* lg(window size) for Deflate */
- short method; /* code for chosen compression method */
-} ccp_options;
-
-extern fsm ccp_fsm[];
-extern ccp_options ccp_wantoptions[];
-extern ccp_options ccp_gotoptions[];
-extern ccp_options ccp_allowoptions[];
-extern ccp_options ccp_hisoptions[];
-
-extern struct protent ccp_protent;
diff --git a/mdk-stage1/ppp/pppd/chap.c b/mdk-stage1/ppp/pppd/chap.c
deleted file mode 100644
index 54c0e0095..000000000
--- a/mdk-stage1/ppp/pppd/chap.c
+++ /dev/null
@@ -1,860 +0,0 @@
-/*
- * chap.c - Challenge Handshake Authentication Protocol.
- *
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Copyright (c) 1991 Gregory M. Christy.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Gregory M. Christy. The name of the author may not be used to
- * endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include "pppd.h"
-#include "chap.h"
-#include "md5.h"
-#ifdef CHAPMS
-#include "chap_ms.h"
-#endif
-
-static const char rcsid[] = RCSID;
-
-/*
- * Command-line options.
- */
-static option_t chap_option_list[] = {
- { "chap-restart", o_int, &chap[0].timeouttime,
- "Set timeout for CHAP", OPT_PRIO },
- { "chap-max-challenge", o_int, &chap[0].max_transmits,
- "Set max #xmits for challenge", OPT_PRIO },
- { "chap-interval", o_int, &chap[0].chal_interval,
- "Set interval for rechallenge", OPT_PRIO },
-#ifdef MSLANMAN
- { "ms-lanman", o_bool, &ms_lanman,
- "Use LanMan passwd when using MS-CHAP", 1 },
-#endif
- { NULL }
-};
-
-/*
- * Protocol entry points.
- */
-static void ChapInit __P((int));
-static void ChapLowerUp __P((int));
-static void ChapLowerDown __P((int));
-static void ChapInput __P((int, u_char *, int));
-static void ChapProtocolReject __P((int));
-static int ChapPrintPkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-
-struct protent chap_protent = {
- PPP_CHAP,
- ChapInit,
- ChapInput,
- ChapProtocolReject,
- ChapLowerUp,
- ChapLowerDown,
- NULL,
- NULL,
- ChapPrintPkt,
- NULL,
- 1,
- "CHAP",
- NULL,
- chap_option_list,
- NULL,
- NULL,
- NULL
-};
-
-chap_state chap[NUM_PPP]; /* CHAP state; one for each unit */
-
-static void ChapChallengeTimeout __P((void *));
-static void ChapResponseTimeout __P((void *));
-static void ChapReceiveChallenge __P((chap_state *, u_char *, int, int));
-static void ChapRechallenge __P((void *));
-static void ChapReceiveResponse __P((chap_state *, u_char *, int, int));
-static void ChapReceiveSuccess __P((chap_state *, u_char *, int, int));
-static void ChapReceiveFailure __P((chap_state *, u_char *, int, int));
-static void ChapSendStatus __P((chap_state *, int));
-static void ChapSendChallenge __P((chap_state *));
-static void ChapSendResponse __P((chap_state *));
-static void ChapGenChallenge __P((chap_state *));
-
-extern double drand48 __P((void));
-extern void srand48 __P((long));
-
-/*
- * ChapInit - Initialize a CHAP unit.
- */
-static void
-ChapInit(unit)
- int unit;
-{
- chap_state *cstate = &chap[unit];
-
- BZERO(cstate, sizeof(*cstate));
- cstate->unit = unit;
- cstate->clientstate = CHAPCS_INITIAL;
- cstate->serverstate = CHAPSS_INITIAL;
- cstate->timeouttime = CHAP_DEFTIMEOUT;
- cstate->max_transmits = CHAP_DEFTRANSMITS;
- /* random number generator is initialized in magic_init */
-}
-
-
-/*
- * ChapAuthWithPeer - Authenticate us with our peer (start client).
- *
- */
-void
-ChapAuthWithPeer(unit, our_name, digest)
- int unit;
- char *our_name;
- int digest;
-{
- chap_state *cstate = &chap[unit];
-
- cstate->resp_name = our_name;
- cstate->resp_type = digest;
-
- if (cstate->clientstate == CHAPCS_INITIAL ||
- cstate->clientstate == CHAPCS_PENDING) {
- /* lower layer isn't up - wait until later */
- cstate->clientstate = CHAPCS_PENDING;
- return;
- }
-
- /*
- * We get here as a result of LCP coming up.
- * So even if CHAP was open before, we will
- * have to re-authenticate ourselves.
- */
- cstate->clientstate = CHAPCS_LISTEN;
-}
-
-
-/*
- * ChapAuthPeer - Authenticate our peer (start server).
- */
-void
-ChapAuthPeer(unit, our_name, digest)
- int unit;
- char *our_name;
- int digest;
-{
- chap_state *cstate = &chap[unit];
-
- cstate->chal_name = our_name;
- cstate->chal_type = digest;
-
- if (cstate->serverstate == CHAPSS_INITIAL ||
- cstate->serverstate == CHAPSS_PENDING) {
- /* lower layer isn't up - wait until later */
- cstate->serverstate = CHAPSS_PENDING;
- return;
- }
-
- ChapGenChallenge(cstate);
- ChapSendChallenge(cstate); /* crank it up dude! */
- cstate->serverstate = CHAPSS_INITIAL_CHAL;
-}
-
-
-/*
- * ChapChallengeTimeout - Timeout expired on sending challenge.
- */
-static void
-ChapChallengeTimeout(arg)
- void *arg;
-{
- chap_state *cstate = (chap_state *) arg;
-
- /* if we aren't sending challenges, don't worry. then again we */
- /* probably shouldn't be here either */
- if (cstate->serverstate != CHAPSS_INITIAL_CHAL &&
- cstate->serverstate != CHAPSS_RECHALLENGE)
- return;
-
- if (cstate->chal_transmits >= cstate->max_transmits) {
- /* give up on peer */
- error("Peer failed to respond to CHAP challenge");
- cstate->serverstate = CHAPSS_BADAUTH;
- auth_peer_fail(cstate->unit, PPP_CHAP);
- return;
- }
-
- ChapSendChallenge(cstate); /* Re-send challenge */
-}
-
-
-/*
- * ChapResponseTimeout - Timeout expired on sending response.
- */
-static void
-ChapResponseTimeout(arg)
- void *arg;
-{
- chap_state *cstate = (chap_state *) arg;
-
- /* if we aren't sending a response, don't worry. */
- if (cstate->clientstate != CHAPCS_RESPONSE)
- return;
-
- ChapSendResponse(cstate); /* re-send response */
-}
-
-
-/*
- * ChapRechallenge - Time to challenge the peer again.
- */
-static void
-ChapRechallenge(arg)
- void *arg;
-{
- chap_state *cstate = (chap_state *) arg;
-
- /* if we aren't sending a response, don't worry. */
- if (cstate->serverstate != CHAPSS_OPEN)
- return;
-
- ChapGenChallenge(cstate);
- ChapSendChallenge(cstate);
- cstate->serverstate = CHAPSS_RECHALLENGE;
-}
-
-
-/*
- * ChapLowerUp - The lower layer is up.
- *
- * Start up if we have pending requests.
- */
-static void
-ChapLowerUp(unit)
- int unit;
-{
- chap_state *cstate = &chap[unit];
-
- if (cstate->clientstate == CHAPCS_INITIAL)
- cstate->clientstate = CHAPCS_CLOSED;
- else if (cstate->clientstate == CHAPCS_PENDING)
- cstate->clientstate = CHAPCS_LISTEN;
-
- if (cstate->serverstate == CHAPSS_INITIAL)
- cstate->serverstate = CHAPSS_CLOSED;
- else if (cstate->serverstate == CHAPSS_PENDING) {
- ChapGenChallenge(cstate);
- ChapSendChallenge(cstate);
- cstate->serverstate = CHAPSS_INITIAL_CHAL;
- }
-}
-
-
-/*
- * ChapLowerDown - The lower layer is down.
- *
- * Cancel all timeouts.
- */
-static void
-ChapLowerDown(unit)
- int unit;
-{
- chap_state *cstate = &chap[unit];
-
- /* Timeout(s) pending? Cancel if so. */
- if (cstate->serverstate == CHAPSS_INITIAL_CHAL ||
- cstate->serverstate == CHAPSS_RECHALLENGE)
- UNTIMEOUT(ChapChallengeTimeout, cstate);
- else if (cstate->serverstate == CHAPSS_OPEN
- && cstate->chal_interval != 0)
- UNTIMEOUT(ChapRechallenge, cstate);
- if (cstate->clientstate == CHAPCS_RESPONSE)
- UNTIMEOUT(ChapResponseTimeout, cstate);
-
- cstate->clientstate = CHAPCS_INITIAL;
- cstate->serverstate = CHAPSS_INITIAL;
-}
-
-
-/*
- * ChapProtocolReject - Peer doesn't grok CHAP.
- */
-static void
-ChapProtocolReject(unit)
- int unit;
-{
- chap_state *cstate = &chap[unit];
-
- if (cstate->serverstate != CHAPSS_INITIAL &&
- cstate->serverstate != CHAPSS_CLOSED)
- auth_peer_fail(unit, PPP_CHAP);
- if (cstate->clientstate != CHAPCS_INITIAL &&
- cstate->clientstate != CHAPCS_CLOSED)
- auth_withpeer_fail(unit, PPP_CHAP);
- ChapLowerDown(unit); /* shutdown chap */
-}
-
-
-/*
- * ChapInput - Input CHAP packet.
- */
-static void
-ChapInput(unit, inpacket, packet_len)
- int unit;
- u_char *inpacket;
- int packet_len;
-{
- chap_state *cstate = &chap[unit];
- u_char *inp;
- u_char code, id;
- int len;
-
- /*
- * Parse header (code, id and length).
- * If packet too short, drop it.
- */
- inp = inpacket;
- if (packet_len < CHAP_HEADERLEN) {
- CHAPDEBUG(("ChapInput: rcvd short header."));
- return;
- }
- GETCHAR(code, inp);
- GETCHAR(id, inp);
- GETSHORT(len, inp);
- if (len < CHAP_HEADERLEN) {
- CHAPDEBUG(("ChapInput: rcvd illegal length."));
- return;
- }
- if (len > packet_len) {
- CHAPDEBUG(("ChapInput: rcvd short packet."));
- return;
- }
- len -= CHAP_HEADERLEN;
-
- /*
- * Action depends on code (as in fact it usually does :-).
- */
- switch (code) {
- case CHAP_CHALLENGE:
- ChapReceiveChallenge(cstate, inp, id, len);
- break;
-
- case CHAP_RESPONSE:
- ChapReceiveResponse(cstate, inp, id, len);
- break;
-
- case CHAP_FAILURE:
- ChapReceiveFailure(cstate, inp, id, len);
- break;
-
- case CHAP_SUCCESS:
- ChapReceiveSuccess(cstate, inp, id, len);
- break;
-
- default: /* Need code reject? */
- warn("Unknown CHAP code (%d) received.", code);
- break;
- }
-}
-
-
-/*
- * ChapReceiveChallenge - Receive Challenge and send Response.
- */
-static void
-ChapReceiveChallenge(cstate, inp, id, len)
- chap_state *cstate;
- u_char *inp;
- int id;
- int len;
-{
- int rchallenge_len;
- u_char *rchallenge;
- int secret_len;
- char secret[MAXSECRETLEN];
- char rhostname[256];
- MD5_CTX mdContext;
- u_char hash[MD5_SIGNATURE_SIZE];
-
- if (cstate->clientstate == CHAPCS_CLOSED ||
- cstate->clientstate == CHAPCS_PENDING) {
- CHAPDEBUG(("ChapReceiveChallenge: in state %d", cstate->clientstate));
- return;
- }
-
- if (len < 2) {
- CHAPDEBUG(("ChapReceiveChallenge: rcvd short packet."));
- return;
- }
-
- GETCHAR(rchallenge_len, inp);
- len -= sizeof (u_char) + rchallenge_len; /* now name field length */
- if (len < 0) {
- CHAPDEBUG(("ChapReceiveChallenge: rcvd short packet."));
- return;
- }
- rchallenge = inp;
- INCPTR(rchallenge_len, inp);
-
- if (len >= sizeof(rhostname))
- len = sizeof(rhostname) - 1;
- BCOPY(inp, rhostname, len);
- rhostname[len] = '\000';
-
- /* Microsoft doesn't send their name back in the PPP packet */
- if (explicit_remote || (remote_name[0] != 0 && rhostname[0] == 0)) {
- strlcpy(rhostname, remote_name, sizeof(rhostname));
- CHAPDEBUG(("ChapReceiveChallenge: using '%q' as remote name",
- rhostname));
- }
-
- /* get secret for authenticating ourselves with the specified host */
- if (!get_secret(cstate->unit, cstate->resp_name, rhostname,
- secret, &secret_len, 0)) {
- secret_len = 0; /* assume null secret if can't find one */
- warn("No CHAP secret found for authenticating us to %q", rhostname);
- }
-
- /* cancel response send timeout if necessary */
- if (cstate->clientstate == CHAPCS_RESPONSE)
- UNTIMEOUT(ChapResponseTimeout, cstate);
-
- cstate->resp_id = id;
- cstate->resp_transmits = 0;
-
- /* generate MD based on negotiated type */
- switch (cstate->resp_type) {
-
- case CHAP_DIGEST_MD5:
- MD5Init(&mdContext);
- MD5Update(&mdContext, &cstate->resp_id, 1);
- MD5Update(&mdContext, secret, secret_len);
- MD5Update(&mdContext, rchallenge, rchallenge_len);
- MD5Final(hash, &mdContext);
- BCOPY(hash, cstate->response, MD5_SIGNATURE_SIZE);
- cstate->resp_length = MD5_SIGNATURE_SIZE;
- break;
-
-#ifdef CHAPMS
- case CHAP_MICROSOFT:
- ChapMS(cstate, rchallenge, rchallenge_len, secret, secret_len);
- break;
-#endif
-
- default:
- CHAPDEBUG(("unknown digest type %d", cstate->resp_type));
- return;
- }
-
- BZERO(secret, sizeof(secret));
- ChapSendResponse(cstate);
-}
-
-
-/*
- * ChapReceiveResponse - Receive and process response.
- */
-static void
-ChapReceiveResponse(cstate, inp, id, len)
- chap_state *cstate;
- u_char *inp;
- int id;
- int len;
-{
- u_char *remmd, remmd_len;
- int secret_len, old_state;
- int code;
- char rhostname[256];
- MD5_CTX mdContext;
- char secret[MAXSECRETLEN];
- u_char hash[MD5_SIGNATURE_SIZE];
-
- if (cstate->serverstate == CHAPSS_CLOSED ||
- cstate->serverstate == CHAPSS_PENDING) {
- CHAPDEBUG(("ChapReceiveResponse: in state %d", cstate->serverstate));
- return;
- }
-
- if (id != cstate->chal_id)
- return; /* doesn't match ID of last challenge */
-
- /*
- * If we have received a duplicate or bogus Response,
- * we have to send the same answer (Success/Failure)
- * as we did for the first Response we saw.
- */
- if (cstate->serverstate == CHAPSS_OPEN) {
- ChapSendStatus(cstate, CHAP_SUCCESS);
- return;
- }
- if (cstate->serverstate == CHAPSS_BADAUTH) {
- ChapSendStatus(cstate, CHAP_FAILURE);
- return;
- }
-
- if (len < 2) {
- CHAPDEBUG(("ChapReceiveResponse: rcvd short packet."));
- return;
- }
- GETCHAR(remmd_len, inp); /* get length of MD */
- remmd = inp; /* get pointer to MD */
- INCPTR(remmd_len, inp);
-
- len -= sizeof (u_char) + remmd_len;
- if (len < 0) {
- CHAPDEBUG(("ChapReceiveResponse: rcvd short packet."));
- return;
- }
-
- UNTIMEOUT(ChapChallengeTimeout, cstate);
-
- if (len >= sizeof(rhostname))
- len = sizeof(rhostname) - 1;
- BCOPY(inp, rhostname, len);
- rhostname[len] = '\000';
-
- /*
- * Get secret for authenticating them with us,
- * do the hash ourselves, and compare the result.
- */
- code = CHAP_FAILURE;
- if (!get_secret(cstate->unit, (explicit_remote? remote_name: rhostname),
- cstate->chal_name, secret, &secret_len, 1)) {
- warn("No CHAP secret found for authenticating %q", rhostname);
- } else {
-
- /* generate MD based on negotiated type */
- switch (cstate->chal_type) {
-
- case CHAP_DIGEST_MD5: /* only MD5 is defined for now */
- if (remmd_len != MD5_SIGNATURE_SIZE)
- break; /* it's not even the right length */
- MD5Init(&mdContext);
- MD5Update(&mdContext, &cstate->chal_id, 1);
- MD5Update(&mdContext, secret, secret_len);
- MD5Update(&mdContext, cstate->challenge, cstate->chal_len);
- MD5Final(hash, &mdContext);
-
- /* compare local and remote MDs and send the appropriate status */
- if (memcmp (hash, remmd, MD5_SIGNATURE_SIZE) == 0)
- code = CHAP_SUCCESS; /* they are the same! */
- break;
-
- default:
- CHAPDEBUG(("unknown digest type %d", cstate->chal_type));
- }
- }
-
- BZERO(secret, sizeof(secret));
- ChapSendStatus(cstate, code);
-
- if (code == CHAP_SUCCESS) {
- old_state = cstate->serverstate;
- cstate->serverstate = CHAPSS_OPEN;
- if (old_state == CHAPSS_INITIAL_CHAL) {
- auth_peer_success(cstate->unit, PPP_CHAP, rhostname, len);
- }
- if (cstate->chal_interval != 0)
- TIMEOUT(ChapRechallenge, cstate, cstate->chal_interval);
- notice("CHAP peer authentication succeeded for %q", rhostname);
-
- } else {
- error("CHAP peer authentication failed for remote host %q", rhostname);
- cstate->serverstate = CHAPSS_BADAUTH;
- auth_peer_fail(cstate->unit, PPP_CHAP);
- }
-}
-
-/*
- * ChapReceiveSuccess - Receive Success
- */
-static void
-ChapReceiveSuccess(cstate, inp, id, len)
- chap_state *cstate;
- u_char *inp;
- u_char id;
- int len;
-{
-
- if (cstate->clientstate == CHAPCS_OPEN)
- /* presumably an answer to a duplicate response */
- return;
-
- if (cstate->clientstate != CHAPCS_RESPONSE) {
- /* don't know what this is */
- CHAPDEBUG(("ChapReceiveSuccess: in state %d\n", cstate->clientstate));
- return;
- }
-
- UNTIMEOUT(ChapResponseTimeout, cstate);
-
- /*
- * Print message.
- */
- if (len > 0)
- PRINTMSG(inp, len);
-
- cstate->clientstate = CHAPCS_OPEN;
-
- auth_withpeer_success(cstate->unit, PPP_CHAP);
-}
-
-
-/*
- * ChapReceiveFailure - Receive failure.
- */
-static void
-ChapReceiveFailure(cstate, inp, id, len)
- chap_state *cstate;
- u_char *inp;
- u_char id;
- int len;
-{
- if (cstate->clientstate != CHAPCS_RESPONSE) {
- /* don't know what this is */
- CHAPDEBUG(("ChapReceiveFailure: in state %d\n", cstate->clientstate));
- return;
- }
-
- UNTIMEOUT(ChapResponseTimeout, cstate);
-
- /*
- * Print message.
- */
- if (len > 0)
- PRINTMSG(inp, len);
-
- error("CHAP authentication failed");
- auth_withpeer_fail(cstate->unit, PPP_CHAP);
-}
-
-
-/*
- * ChapSendChallenge - Send an Authenticate challenge.
- */
-static void
-ChapSendChallenge(cstate)
- chap_state *cstate;
-{
- u_char *outp;
- int chal_len, name_len;
- int outlen;
-
- chal_len = cstate->chal_len;
- name_len = strlen(cstate->chal_name);
- outlen = CHAP_HEADERLEN + sizeof (u_char) + chal_len + name_len;
- outp = outpacket_buf;
-
- MAKEHEADER(outp, PPP_CHAP); /* paste in a CHAP header */
-
- PUTCHAR(CHAP_CHALLENGE, outp);
- PUTCHAR(cstate->chal_id, outp);
- PUTSHORT(outlen, outp);
-
- PUTCHAR(chal_len, outp); /* put length of challenge */
- BCOPY(cstate->challenge, outp, chal_len);
- INCPTR(chal_len, outp);
-
- BCOPY(cstate->chal_name, outp, name_len); /* append hostname */
-
- output(cstate->unit, outpacket_buf, outlen + PPP_HDRLEN);
-
- TIMEOUT(ChapChallengeTimeout, cstate, cstate->timeouttime);
- ++cstate->chal_transmits;
-}
-
-
-/*
- * ChapSendStatus - Send a status response (ack or nak).
- */
-static void
-ChapSendStatus(cstate, code)
- chap_state *cstate;
- int code;
-{
- u_char *outp;
- int outlen, msglen;
- char msg[256];
-
- if (code == CHAP_SUCCESS)
- slprintf(msg, sizeof(msg), "Welcome to %s.", hostname);
- else
- slprintf(msg, sizeof(msg), "I don't like you. Go 'way.");
- msglen = strlen(msg);
-
- outlen = CHAP_HEADERLEN + msglen;
- outp = outpacket_buf;
-
- MAKEHEADER(outp, PPP_CHAP); /* paste in a header */
-
- PUTCHAR(code, outp);
- PUTCHAR(cstate->chal_id, outp);
- PUTSHORT(outlen, outp);
- BCOPY(msg, outp, msglen);
- output(cstate->unit, outpacket_buf, outlen + PPP_HDRLEN);
-}
-
-/*
- * ChapGenChallenge is used to generate a pseudo-random challenge string of
- * a pseudo-random length between min_len and max_len. The challenge
- * string and its length are stored in *cstate, and various other fields of
- * *cstate are initialized.
- */
-
-static void
-ChapGenChallenge(cstate)
- chap_state *cstate;
-{
- int chal_len;
- u_char *ptr = cstate->challenge;
- int i;
-
- /* pick a random challenge length between MIN_CHALLENGE_LENGTH and
- MAX_CHALLENGE_LENGTH */
- chal_len = (unsigned) ((drand48() *
- (MAX_CHALLENGE_LENGTH - MIN_CHALLENGE_LENGTH)) +
- MIN_CHALLENGE_LENGTH);
- cstate->chal_len = chal_len;
- cstate->chal_id = ++cstate->id;
- cstate->chal_transmits = 0;
-
- /* generate a random string */
- for (i = 0; i < chal_len; i++)
- *ptr++ = (char) (drand48() * 0xff);
-}
-
-/*
- * ChapSendResponse - send a response packet with values as specified
- * in *cstate.
- */
-/* ARGSUSED */
-static void
-ChapSendResponse(cstate)
- chap_state *cstate;
-{
- u_char *outp;
- int outlen, md_len, name_len;
-
- md_len = cstate->resp_length;
- name_len = strlen(cstate->resp_name);
- outlen = CHAP_HEADERLEN + sizeof (u_char) + md_len + name_len;
- outp = outpacket_buf;
-
- MAKEHEADER(outp, PPP_CHAP);
-
- PUTCHAR(CHAP_RESPONSE, outp); /* we are a response */
- PUTCHAR(cstate->resp_id, outp); /* copy id from challenge packet */
- PUTSHORT(outlen, outp); /* packet length */
-
- PUTCHAR(md_len, outp); /* length of MD */
- BCOPY(cstate->response, outp, md_len); /* copy MD to buffer */
- INCPTR(md_len, outp);
-
- BCOPY(cstate->resp_name, outp, name_len); /* append our name */
-
- /* send the packet */
- output(cstate->unit, outpacket_buf, outlen + PPP_HDRLEN);
-
- cstate->clientstate = CHAPCS_RESPONSE;
- TIMEOUT(ChapResponseTimeout, cstate, cstate->timeouttime);
- ++cstate->resp_transmits;
-}
-
-/*
- * ChapPrintPkt - print the contents of a CHAP packet.
- */
-static char *ChapCodenames[] = {
- "Challenge", "Response", "Success", "Failure"
-};
-
-static int
-ChapPrintPkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len;
- int clen, nlen;
- u_char x;
-
- if (plen < CHAP_HEADERLEN)
- return 0;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < CHAP_HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(ChapCodenames) / sizeof(char *))
- printer(arg, " %s", ChapCodenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= CHAP_HEADERLEN;
- switch (code) {
- case CHAP_CHALLENGE:
- case CHAP_RESPONSE:
- if (len < 1)
- break;
- clen = p[0];
- if (len < clen + 1)
- break;
- ++p;
- nlen = len - clen - 1;
- printer(arg, " <");
- for (; clen > 0; --clen) {
- GETCHAR(x, p);
- printer(arg, "%.2x", x);
- }
- printer(arg, ">, name = ");
- print_string((char *)p, nlen, printer, arg);
- break;
- case CHAP_FAILURE:
- case CHAP_SUCCESS:
- printer(arg, " ");
- print_string((char *)p, len, printer, arg);
- break;
- default:
- for (clen = len; clen > 0; --clen) {
- GETCHAR(x, p);
- printer(arg, " %.2x", x);
- }
- }
-
- return len + CHAP_HEADERLEN;
-}
diff --git a/mdk-stage1/ppp/pppd/chap.h b/mdk-stage1/ppp/pppd/chap.h
deleted file mode 100644
index 945d051d0..000000000
--- a/mdk-stage1/ppp/pppd/chap.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * chap.h - Challenge Handshake Authentication Protocol definitions.
- *
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Copyright (c) 1991 Gregory M. Christy
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the author.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-#ifndef __CHAP_INCLUDE__
-
-/* Code + ID + length */
-#define CHAP_HEADERLEN 4
-
-/*
- * CHAP codes.
- */
-
-#define CHAP_DIGEST_MD5 5 /* use MD5 algorithm */
-#define MD5_SIGNATURE_SIZE 16 /* 16 bytes in a MD5 message digest */
-#define CHAP_MICROSOFT 0x80 /* use Microsoft-compatible alg. */
-#define MS_CHAP_RESPONSE_LEN 49 /* Response length for MS-CHAP */
-
-#define CHAP_CHALLENGE 1
-#define CHAP_RESPONSE 2
-#define CHAP_SUCCESS 3
-#define CHAP_FAILURE 4
-
-/*
- * Challenge lengths (for challenges we send) and other limits.
- */
-#define MIN_CHALLENGE_LENGTH 16
-#define MAX_CHALLENGE_LENGTH 24
-#define MAX_RESPONSE_LENGTH 64 /* sufficient for MD5 or MS-CHAP */
-
-/*
- * Each interface is described by a chap structure.
- */
-
-typedef struct chap_state {
- int unit; /* Interface unit number */
- int clientstate; /* Client state */
- int serverstate; /* Server state */
- u_char challenge[MAX_CHALLENGE_LENGTH]; /* last challenge string sent */
- u_char chal_len; /* challenge length */
- u_char chal_id; /* ID of last challenge */
- u_char chal_type; /* hash algorithm for challenges */
- u_char id; /* Current id */
- char *chal_name; /* Our name to use with challenge */
- int chal_interval; /* Time until we challenge peer again */
- int timeouttime; /* Timeout time in seconds */
- int max_transmits; /* Maximum # of challenge transmissions */
- int chal_transmits; /* Number of transmissions of challenge */
- int resp_transmits; /* Number of transmissions of response */
- u_char response[MAX_RESPONSE_LENGTH]; /* Response to send */
- u_char resp_length; /* length of response */
- u_char resp_id; /* ID for response messages */
- u_char resp_type; /* hash algorithm for responses */
- char *resp_name; /* Our name to send with response */
-} chap_state;
-
-
-/*
- * Client (peer) states.
- */
-#define CHAPCS_INITIAL 0 /* Lower layer down, not opened */
-#define CHAPCS_CLOSED 1 /* Lower layer up, not opened */
-#define CHAPCS_PENDING 2 /* Auth us to peer when lower up */
-#define CHAPCS_LISTEN 3 /* Listening for a challenge */
-#define CHAPCS_RESPONSE 4 /* Sent response, waiting for status */
-#define CHAPCS_OPEN 5 /* We've received Success */
-
-/*
- * Server (authenticator) states.
- */
-#define CHAPSS_INITIAL 0 /* Lower layer down, not opened */
-#define CHAPSS_CLOSED 1 /* Lower layer up, not opened */
-#define CHAPSS_PENDING 2 /* Auth peer when lower up */
-#define CHAPSS_INITIAL_CHAL 3 /* We've sent the first challenge */
-#define CHAPSS_OPEN 4 /* We've sent a Success msg */
-#define CHAPSS_RECHALLENGE 5 /* We've sent another challenge */
-#define CHAPSS_BADAUTH 6 /* We've sent a Failure msg */
-
-/*
- * Timeouts.
- */
-#define CHAP_DEFTIMEOUT 3 /* Timeout time in seconds */
-#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
-
-extern chap_state chap[];
-
-void ChapAuthWithPeer __P((int, char *, int));
-void ChapAuthPeer __P((int, char *, int));
-
-extern struct protent chap_protent;
-
-#define __CHAP_INCLUDE__
-#endif /* __CHAP_INCLUDE__ */
diff --git a/mdk-stage1/ppp/pppd/chap_ms.c b/mdk-stage1/ppp/pppd/chap_ms.c
deleted file mode 100644
index 81a57bb5a..000000000
--- a/mdk-stage1/ppp/pppd/chap_ms.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * chap_ms.c - Microsoft MS-CHAP compatible implementation.
- *
- * Copyright (c) 1995 Eric Rosenquist, Strata Software Limited.
- * http://www.strataware.com/
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Eric Rosenquist. The name of the author may not be used to
- * endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/*
- * Modifications by Lauri Pesonen / lpesonen@clinet.fi, april 1997
- *
- * Implemented LANManager type password response to MS-CHAP challenges.
- * Now pppd provides both NT style and LANMan style blocks, and the
- * prefered is set by option "ms-lanman". Default is to use NT.
- * The hash text (StdText) was taken from Win95 RASAPI32.DLL.
- *
- * You should also use DOMAIN\\USERNAME as described in README.MSCHAP80
- */
-
-#define RCSID "$Id$"
-
-#ifdef CHAPMS
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#ifdef HAVE_CRYPT_H
-#include <crypt.h>
-#endif
-
-#include "pppd.h"
-#include "chap.h"
-#include "chap_ms.h"
-#include "md4.h"
-
-#ifndef USE_CRYPT
-#include <des.h>
-#endif
-
-static const char rcsid[] = RCSID;
-
-typedef struct {
- u_char LANManResp[24];
- u_char NTResp[24];
- u_char UseNT; /* If 1, ignore the LANMan response field */
-} MS_ChapResponse;
-/* We use MS_CHAP_RESPONSE_LEN, rather than sizeof(MS_ChapResponse),
- in case this struct gets padded. */
-
-
-static void ChallengeResponse __P((u_char *, u_char *, u_char *));
-static void DesEncrypt __P((u_char *, u_char *, u_char *));
-static void MakeKey __P((u_char *, u_char *));
-static u_char Get7Bits __P((u_char *, int));
-static void ChapMS_NT __P((char *, int, char *, int, MS_ChapResponse *));
-#ifdef MSLANMAN
-static void ChapMS_LANMan __P((char *, int, char *, int, MS_ChapResponse *));
-#endif
-
-#ifdef USE_CRYPT
-static void Expand __P((u_char *, u_char *));
-static void Collapse __P((u_char *, u_char *));
-#endif
-
-#ifdef MSLANMAN
-bool ms_lanman = 0; /* Use LanMan password instead of NT */
- /* Has meaning only with MS-CHAP challenges */
-#endif
-
-static void
-ChallengeResponse(challenge, pwHash, response)
- u_char *challenge; /* IN 8 octets */
- u_char *pwHash; /* IN 16 octets */
- u_char *response; /* OUT 24 octets */
-{
- char ZPasswordHash[21];
-
- BZERO(ZPasswordHash, sizeof(ZPasswordHash));
- BCOPY(pwHash, ZPasswordHash, MD4_SIGNATURE_SIZE);
-
-#if 0
- dbglog("ChallengeResponse - ZPasswordHash %.*B",
- sizeof(ZPasswordHash), ZPasswordHash);
-#endif
-
- DesEncrypt(challenge, ZPasswordHash + 0, response + 0);
- DesEncrypt(challenge, ZPasswordHash + 7, response + 8);
- DesEncrypt(challenge, ZPasswordHash + 14, response + 16);
-
-#if 0
- dbglog("ChallengeResponse - response %.24B", response);
-#endif
-}
-
-
-#ifdef USE_CRYPT
-static void
-DesEncrypt(clear, key, cipher)
- u_char *clear; /* IN 8 octets */
- u_char *key; /* IN 7 octets */
- u_char *cipher; /* OUT 8 octets */
-{
- u_char des_key[8];
- u_char crypt_key[66];
- u_char des_input[66];
-
- MakeKey(key, des_key);
-
- Expand(des_key, crypt_key);
- setkey(crypt_key);
-
-#if 0
- CHAPDEBUG((LOG_INFO, "DesEncrypt: 8 octet input : %.8B", clear));
-#endif
-
- Expand(clear, des_input);
- encrypt(des_input, 0);
- Collapse(des_input, cipher);
-
-#if 0
- CHAPDEBUG((LOG_INFO, "DesEncrypt: 8 octet output: %.8B", cipher));
-#endif
-}
-
-#else /* USE_CRYPT */
-
-static void
-DesEncrypt(clear, key, cipher)
- u_char *clear; /* IN 8 octets */
- u_char *key; /* IN 7 octets */
- u_char *cipher; /* OUT 8 octets */
-{
- des_cblock des_key;
- des_key_schedule key_schedule;
-
- MakeKey(key, des_key);
-
- des_set_key(&des_key, key_schedule);
-
-#if 0
- CHAPDEBUG((LOG_INFO, "DesEncrypt: 8 octet input : %.8B", clear));
-#endif
-
- des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1);
-
-#if 0
- CHAPDEBUG((LOG_INFO, "DesEncrypt: 8 octet output: %.8B", cipher));
-#endif
-}
-
-#endif /* USE_CRYPT */
-
-
-static u_char Get7Bits(input, startBit)
- u_char *input;
- int startBit;
-{
- register unsigned int word;
-
- word = (unsigned)input[startBit / 8] << 8;
- word |= (unsigned)input[startBit / 8 + 1];
-
- word >>= 15 - (startBit % 8 + 7);
-
- return word & 0xFE;
-}
-
-#ifdef USE_CRYPT
-
-/* in == 8-byte string (expanded version of the 56-bit key)
- * out == 64-byte string where each byte is either 1 or 0
- * Note that the low-order "bit" is always ignored by by setkey()
- */
-static void Expand(in, out)
- u_char *in;
- u_char *out;
-{
- int j, c;
- int i;
-
- for(i = 0; i < 64; in++){
- c = *in;
- for(j = 7; j >= 0; j--)
- *out++ = (c >> j) & 01;
- i += 8;
- }
-}
-
-/* The inverse of Expand
- */
-static void Collapse(in, out)
- u_char *in;
- u_char *out;
-{
- int j;
- int i;
- unsigned int c;
-
- for (i = 0; i < 64; i += 8, out++) {
- c = 0;
- for (j = 7; j >= 0; j--, in++)
- c |= *in << j;
- *out = c & 0xff;
- }
-}
-#endif
-
-static void MakeKey(key, des_key)
- u_char *key; /* IN 56 bit DES key missing parity bits */
- u_char *des_key; /* OUT 64 bit DES key with parity bits added */
-{
- des_key[0] = Get7Bits(key, 0);
- des_key[1] = Get7Bits(key, 7);
- des_key[2] = Get7Bits(key, 14);
- des_key[3] = Get7Bits(key, 21);
- des_key[4] = Get7Bits(key, 28);
- des_key[5] = Get7Bits(key, 35);
- des_key[6] = Get7Bits(key, 42);
- des_key[7] = Get7Bits(key, 49);
-
-#ifndef USE_CRYPT
- des_set_odd_parity((des_cblock *)des_key);
-#endif
-
-#if 0
- CHAPDEBUG((LOG_INFO, "MakeKey: 56-bit input : %.7B", key));
- CHAPDEBUG((LOG_INFO, "MakeKey: 64-bit output: %.8B", des_key));
-#endif
-}
-
-static void
-ChapMS_NT(rchallenge, rchallenge_len, secret, secret_len, response)
- char *rchallenge;
- int rchallenge_len;
- char *secret;
- int secret_len;
- MS_ChapResponse *response;
-{
- int i;
-#ifdef __NetBSD__
- /* NetBSD uses the libc md4 routines which take bytes instead of bits */
- int mdlen = secret_len * 2;
-#else
- int mdlen = secret_len * 2 * 8;
-#endif
- MD4_CTX md4Context;
- u_char hash[MD4_SIGNATURE_SIZE];
- u_char unicodePassword[MAX_NT_PASSWORD * 2];
-
- /* Initialize the Unicode version of the secret (== password). */
- /* This implicitly supports 8-bit ISO8859/1 characters. */
- BZERO(unicodePassword, sizeof(unicodePassword));
- for (i = 0; i < secret_len; i++)
- unicodePassword[i * 2] = (u_char)secret[i];
-
- MD4Init(&md4Context);
- MD4Update(&md4Context, unicodePassword, mdlen);
-
- MD4Final(hash, &md4Context); /* Tell MD4 we're done */
-
- ChallengeResponse(rchallenge, hash, response->NTResp);
-}
-
-#ifdef MSLANMAN
-static u_char *StdText = (u_char *)"KGS!@#$%"; /* key from rasapi32.dll */
-
-static void
-ChapMS_LANMan(rchallenge, rchallenge_len, secret, secret_len, response)
- char *rchallenge;
- int rchallenge_len;
- char *secret;
- int secret_len;
- MS_ChapResponse *response;
-{
- int i;
- u_char UcasePassword[MAX_NT_PASSWORD]; /* max is actually 14 */
- u_char PasswordHash[MD4_SIGNATURE_SIZE];
-
- /* LANMan password is case insensitive */
- BZERO(UcasePassword, sizeof(UcasePassword));
- for (i = 0; i < secret_len; i++)
- UcasePassword[i] = (u_char)toupper(secret[i]);
- DesEncrypt( StdText, UcasePassword + 0, PasswordHash + 0 );
- DesEncrypt( StdText, UcasePassword + 7, PasswordHash + 8 );
- ChallengeResponse(rchallenge, PasswordHash, response->LANManResp);
-}
-#endif
-
-void
-ChapMS(cstate, rchallenge, rchallenge_len, secret, secret_len)
- chap_state *cstate;
- char *rchallenge;
- int rchallenge_len;
- char *secret;
- int secret_len;
-{
- MS_ChapResponse response;
-
-#if 0
- CHAPDEBUG((LOG_INFO, "ChapMS: secret is '%.*s'", secret_len, secret));
-#endif
- BZERO(&response, sizeof(response));
-
- /* Calculate both always */
- ChapMS_NT(rchallenge, rchallenge_len, secret, secret_len, &response);
-
-#ifdef MSLANMAN
- ChapMS_LANMan(rchallenge, rchallenge_len, secret, secret_len, &response);
-
- /* prefered method is set by option */
- response.UseNT = !ms_lanman;
-#else
- response.UseNT = 1;
-#endif
-
- BCOPY(&response, cstate->response, MS_CHAP_RESPONSE_LEN);
- cstate->resp_length = MS_CHAP_RESPONSE_LEN;
-}
-
-#endif /* CHAPMS */
diff --git a/mdk-stage1/ppp/pppd/chap_ms.h b/mdk-stage1/ppp/pppd/chap_ms.h
deleted file mode 100644
index fad2755c8..000000000
--- a/mdk-stage1/ppp/pppd/chap_ms.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * chap.h - Challenge Handshake Authentication Protocol definitions.
- *
- * Copyright (c) 1995 Eric Rosenquist, Strata Software Limited.
- * http://www.strataware.com/
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Eric Rosenquist. The name of the author may not be used to
- * endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-#ifndef __CHAPMS_INCLUDE__
-
-#define MD4_SIGNATURE_SIZE 16 /* 16 bytes in a MD4 message digest */
-#define MAX_NT_PASSWORD 256 /* Maximum number of (Unicode) chars in an NT password */
-
-void ChapMS __P((chap_state *, char *, int, char *, int));
-
-#define __CHAPMS_INCLUDE__
-#endif /* __CHAPMS_INCLUDE__ */
diff --git a/mdk-stage1/ppp/pppd/demand.c b/mdk-stage1/ppp/pppd/demand.c
deleted file mode 100644
index 9a740be8d..000000000
--- a/mdk-stage1/ppp/pppd/demand.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * demand.c - Support routines for demand-dialling.
- *
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#ifdef PPP_FILTER
-#include <net/if.h>
-#include <net/bpf.h>
-#include <pcap.h>
-#endif
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipcp.h"
-#include "lcp.h"
-
-static const char rcsid[] = RCSID;
-
-char *frame;
-int framelen;
-int framemax;
-int escape_flag;
-int flush_flag;
-int fcs;
-
-struct packet {
- int length;
- struct packet *next;
- unsigned char data[1];
-};
-
-struct packet *pend_q;
-struct packet *pend_qtail;
-
-static int active_packet __P((unsigned char *, int));
-
-/*
- * demand_conf - configure the interface for doing dial-on-demand.
- */
-void
-demand_conf()
-{
- int i;
- struct protent *protp;
-
-/* framemax = lcp_allowoptions[0].mru;
- if (framemax < PPP_MRU) */
- framemax = PPP_MRU;
- framemax += PPP_HDRLEN + PPP_FCSLEN;
- frame = malloc(framemax);
- if (frame == NULL)
- novm("demand frame");
- framelen = 0;
- pend_q = NULL;
- escape_flag = 0;
- flush_flag = 0;
- fcs = PPP_INITFCS;
-
- netif_set_mtu(0, MIN(lcp_allowoptions[0].mru, PPP_MRU));
- ppp_send_config(0, PPP_MRU, (u_int32_t) 0, 0, 0);
- ppp_recv_config(0, PPP_MRU, (u_int32_t) 0, 0, 0);
-
-#ifdef PPP_FILTER
- set_filters(&pass_filter, &active_filter);
-#endif
-
- /*
- * Call the demand_conf procedure for each protocol that's got one.
- */
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->enabled_flag && protp->demand_conf != NULL)
- if (!((*protp->demand_conf)(0)))
- die(1);
-}
-
-
-/*
- * demand_block - set each network protocol to block further packets.
- */
-void
-demand_block()
-{
- int i;
- struct protent *protp;
-
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->enabled_flag && protp->demand_conf != NULL)
- sifnpmode(0, protp->protocol & ~0x8000, NPMODE_QUEUE);
- get_loop_output();
-}
-
-/*
- * demand_discard - set each network protocol to discard packets
- * with an error.
- */
-void
-demand_discard()
-{
- struct packet *pkt, *nextpkt;
- int i;
- struct protent *protp;
-
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->enabled_flag && protp->demand_conf != NULL)
- sifnpmode(0, protp->protocol & ~0x8000, NPMODE_ERROR);
- get_loop_output();
-
- /* discard all saved packets */
- for (pkt = pend_q; pkt != NULL; pkt = nextpkt) {
- nextpkt = pkt->next;
- free(pkt);
- }
- pend_q = NULL;
- framelen = 0;
- flush_flag = 0;
- escape_flag = 0;
- fcs = PPP_INITFCS;
-}
-
-/*
- * demand_unblock - set each enabled network protocol to pass packets.
- */
-void
-demand_unblock()
-{
- int i;
- struct protent *protp;
-
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->enabled_flag && protp->demand_conf != NULL)
- sifnpmode(0, protp->protocol & ~0x8000, NPMODE_PASS);
-}
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static u_short fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-/*
- * loop_chars - process characters received from the loopback.
- * Calls loop_frame when a complete frame has been accumulated.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- */
-int
-loop_chars(p, n)
- unsigned char *p;
- int n;
-{
- int c, rv;
-
- rv = 0;
- for (; n > 0; --n) {
- c = *p++;
- if (c == PPP_FLAG) {
- if (!escape_flag && !flush_flag
- && framelen > 2 && fcs == PPP_GOODFCS) {
- framelen -= 2;
- if (loop_frame((unsigned char *)frame, framelen))
- rv = 1;
- }
- framelen = 0;
- flush_flag = 0;
- escape_flag = 0;
- fcs = PPP_INITFCS;
- continue;
- }
- if (flush_flag)
- continue;
- if (escape_flag) {
- c ^= PPP_TRANS;
- escape_flag = 0;
- } else if (c == PPP_ESCAPE) {
- escape_flag = 1;
- continue;
- }
- if (framelen >= framemax) {
- flush_flag = 1;
- continue;
- }
- frame[framelen++] = c;
- fcs = PPP_FCS(fcs, c);
- }
- return rv;
-}
-
-/*
- * loop_frame - given a frame obtained from the loopback,
- * decide whether to bring up the link or not, and, if we want
- * to transmit this frame later, put it on the pending queue.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- * We assume that the kernel driver has already applied the
- * pass_filter, so we won't get packets it rejected.
- * We apply the active_filter to see if we want this packet to
- * bring up the link.
- */
-int
-loop_frame(frame, len)
- unsigned char *frame;
- int len;
-{
- struct packet *pkt;
-
- /* dbglog("from loop: %P", frame, len); */
- if (len < PPP_HDRLEN)
- return 0;
- if ((PPP_PROTOCOL(frame) & 0x8000) != 0)
- return 0; /* shouldn't get any of these anyway */
- if (!active_packet(frame, len))
- return 0;
-
- pkt = (struct packet *) malloc(sizeof(struct packet) + len);
- if (pkt != NULL) {
- pkt->length = len;
- pkt->next = NULL;
- memcpy(pkt->data, frame, len);
- if (pend_q == NULL)
- pend_q = pkt;
- else
- pend_qtail->next = pkt;
- pend_qtail = pkt;
- }
- return 1;
-}
-
-/*
- * demand_rexmit - Resend all those frames which we got via the
- * loopback, now that the real serial link is up.
- */
-void
-demand_rexmit(proto)
- int proto;
-{
- struct packet *pkt, *prev, *nextpkt;
-
- prev = NULL;
- pkt = pend_q;
- pend_q = NULL;
- for (; pkt != NULL; pkt = nextpkt) {
- nextpkt = pkt->next;
- if (PPP_PROTOCOL(pkt->data) == proto) {
- output(0, pkt->data, pkt->length);
- free(pkt);
- } else {
- if (prev == NULL)
- pend_q = pkt;
- else
- prev->next = pkt;
- prev = pkt;
- }
- }
- pend_qtail = prev;
- if (prev != NULL)
- prev->next = NULL;
-}
-
-/*
- * Scan a packet to decide whether it is an "active" packet,
- * that is, whether it is worth bringing up the link for.
- */
-static int
-active_packet(p, len)
- unsigned char *p;
- int len;
-{
- int proto, i;
- struct protent *protp;
-
- if (len < PPP_HDRLEN)
- return 0;
- proto = PPP_PROTOCOL(p);
-#ifdef PPP_FILTER
- if (pass_filter.bf_len != 0
- && bpf_filter(pass_filter.bf_insns, p, len, len) == 0)
- return 0;
- if (active_filter.bf_len != 0
- && bpf_filter(active_filter.bf_insns, p, len, len) == 0)
- return 0;
-#endif
- for (i = 0; (protp = protocols[i]) != NULL; ++i) {
- if (protp->protocol < 0xC000 && (protp->protocol & ~0x8000) == proto) {
- if (!protp->enabled_flag)
- return 0;
- if (protp->active_pkt == NULL)
- return 1;
- return (*protp->active_pkt)(p, len);
- }
- }
- return 0; /* not a supported protocol !!?? */
-}
diff --git a/mdk-stage1/ppp/pppd/eui64.c b/mdk-stage1/ppp/pppd/eui64.c
deleted file mode 100644
index 7f3176035..000000000
--- a/mdk-stage1/ppp/pppd/eui64.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- eui64.c - EUI64 routines for IPv6CP.
- Copyright (C) 1999 Tommi Komulainen <Tommi.Komulainen@iki.fi>
-
- Redistribution and use in source and binary forms are permitted
- provided that the above copyright notice and this paragraph are
- duplicated in all such forms and that any documentation,
- advertising materials, and other materials related to such
- distribution and use acknowledge that the software was developed
- by Tommi Komulainen. The name of the author may not be used
- to endorse or promote products derived from this software without
- specific prior written permission.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
- $Id$
-*/
-
-#define RCSID "$Id$"
-
-#include "pppd.h"
-
-static const char rcsid[] = RCSID;
-
-/*
- * eui64_ntoa - Make an ascii representation of an interface identifier
- */
-char *
-eui64_ntoa(e)
- eui64_t e;
-{
- static char buf[32];
-
- snprintf(buf, 32, "%02x%02x:%02x%02x:%02x%02x:%02x%02x",
- e.e8[0], e.e8[1], e.e8[2], e.e8[3],
- e.e8[4], e.e8[5], e.e8[6], e.e8[7]);
- return buf;
-}
diff --git a/mdk-stage1/ppp/pppd/eui64.h b/mdk-stage1/ppp/pppd/eui64.h
deleted file mode 100644
index ca4445345..000000000
--- a/mdk-stage1/ppp/pppd/eui64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- eui64.h - EUI64 routines for IPv6CP.
- Copyright (C) 1999 Tommi Komulainen <Tommi.Komulainen@iki.fi>
-
- Redistribution and use in source and binary forms are permitted
- provided that the above copyright notice and this paragraph are
- duplicated in all such forms and that any documentation,
- advertising materials, and other materials related to such
- distribution and use acknowledge that the software was developed
- by Tommi Komulainen. The name of the author may not be used
- to endorse or promote products derived from this software without
- specific prior written permission.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-
- $Id$
-*/
-
-#ifndef __EUI64_H__
-#define __EUI64_H__
-
-#if !defined(INET6)
-#error "this file should only be included when INET6 is defined"
-#endif /* not defined(INET6) */
-
-#if defined(SOL2)
-#include <netinet/in.h>
-
-typedef union {
- uint8_t e8[8]; /* lower 64-bit IPv6 address */
- uint32_t e32[2]; /* lower 64-bit IPv6 address */
-} eui64_t;
-
-/*
- * Declare the two below, since in.h only defines them when _KERNEL
- * is declared - which shouldn't be true when dealing with user-land programs
- */
-#define s6_addr8 _S6_un._S6_u8
-#define s6_addr32 _S6_un._S6_u32
-
-#else /* else if not defined(SOL2) */
-
-/*
- * TODO:
- *
- * Maybe this should be done by processing struct in6_addr directly...
- */
-typedef union
-{
- u_int8_t e8[8];
- u_int16_t e16[4];
- u_int32_t e32[2];
-} eui64_t;
-
-#endif /* defined(SOL2) */
-
-#define eui64_iszero(e) (((e).e32[0] | (e).e32[1]) == 0)
-#define eui64_equals(e, o) (((e).e32[0] == (o).e32[0]) && \
- ((e).e32[1] == (o).e32[1]))
-#define eui64_zero(e) (e).e32[0] = (e).e32[1] = 0;
-
-#define eui64_copy(s, d) memcpy(&(d), &(s), sizeof(eui64_t))
-
-#define eui64_magic(e) do { \
- (e).e32[0] = magic(); \
- (e).e32[1] = magic(); \
- (e).e8[0] &= ~2; \
- } while (0)
-#define eui64_magic_nz(x) do { \
- eui64_magic(x); \
- } while (eui64_iszero(x))
-#define eui64_magic_ne(x, y) do { \
- eui64_magic(x); \
- } while (eui64_equals(x, y))
-
-#define eui64_get(ll, cp) do { \
- eui64_copy((*cp), (ll)); \
- (cp) += sizeof(eui64_t); \
- } while (0)
-
-#define eui64_put(ll, cp) do { \
- eui64_copy((ll), (*cp)); \
- (cp) += sizeof(eui64_t); \
- } while (0)
-
-#define eui64_set32(e, l) do { \
- (e).e32[0] = 0; \
- (e).e32[1] = htonl(l); \
- } while (0)
-#define eui64_setlo32(e, l) eui64_set32(e, l)
-
-char *eui64_ntoa __P((eui64_t)); /* Returns ascii representation of id */
-
-#endif /* __EUI64_H__ */
-
diff --git a/mdk-stage1/ppp/pppd/fsm.c b/mdk-stage1/ppp/pppd/fsm.c
deleted file mode 100644
index 07a8c11f1..000000000
--- a/mdk-stage1/ppp/pppd/fsm.c
+++ /dev/null
@@ -1,762 +0,0 @@
-/*
- * fsm.c - {Link, IP} Control Protocol Finite State Machine.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- * Randomize fsm id on link/init.
- * Deal with variable outgoing MTU.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "pppd.h"
-#include "fsm.h"
-
-static const char rcsid[] = RCSID;
-
-static void fsm_timeout __P((void *));
-static void fsm_rconfreq __P((fsm *, int, u_char *, int));
-static void fsm_rconfack __P((fsm *, int, u_char *, int));
-static void fsm_rconfnakrej __P((fsm *, int, int, u_char *, int));
-static void fsm_rtermreq __P((fsm *, int, u_char *, int));
-static void fsm_rtermack __P((fsm *));
-static void fsm_rcoderej __P((fsm *, u_char *, int));
-static void fsm_sconfreq __P((fsm *, int));
-
-#define PROTO_NAME(f) ((f)->callbacks->proto_name)
-
-int peer_mru[NUM_PPP];
-
-
-/*
- * fsm_init - Initialize fsm.
- *
- * Initialize fsm state.
- */
-void
-fsm_init(f)
- fsm *f;
-{
- f->state = INITIAL;
- f->flags = 0;
- f->id = 0; /* XXX Start with random id? */
- f->timeouttime = DEFTIMEOUT;
- f->maxconfreqtransmits = DEFMAXCONFREQS;
- f->maxtermtransmits = DEFMAXTERMREQS;
- f->maxnakloops = DEFMAXNAKLOOPS;
- f->term_reason_len = 0;
-}
-
-
-/*
- * fsm_lowerup - The lower layer is up.
- */
-void
-fsm_lowerup(f)
- fsm *f;
-{
- switch( f->state ){
- case INITIAL:
- f->state = CLOSED;
- break;
-
- case STARTING:
- if( f->flags & OPT_SILENT )
- f->state = STOPPED;
- else {
- /* Send an initial configure-request */
- fsm_sconfreq(f, 0);
- f->state = REQSENT;
- }
- break;
-
- default:
- FSMDEBUG(("%s: Up event in state %d!", PROTO_NAME(f), f->state));
- }
-}
-
-
-/*
- * fsm_lowerdown - The lower layer is down.
- *
- * Cancel all timeouts and inform upper layers.
- */
-void
-fsm_lowerdown(f)
- fsm *f;
-{
- switch( f->state ){
- case CLOSED:
- f->state = INITIAL;
- break;
-
- case STOPPED:
- f->state = STARTING;
- if( f->callbacks->starting )
- (*f->callbacks->starting)(f);
- break;
-
- case CLOSING:
- f->state = INITIAL;
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- break;
-
- case STOPPING:
- case REQSENT:
- case ACKRCVD:
- case ACKSENT:
- f->state = STARTING;
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- break;
-
- case OPENED:
- if( f->callbacks->down )
- (*f->callbacks->down)(f);
- f->state = STARTING;
- break;
-
- default:
- FSMDEBUG(("%s: Down event in state %d!", PROTO_NAME(f), f->state));
- }
-}
-
-
-/*
- * fsm_open - Link is allowed to come up.
- */
-void
-fsm_open(f)
- fsm *f;
-{
- switch( f->state ){
- case INITIAL:
- f->state = STARTING;
- if( f->callbacks->starting )
- (*f->callbacks->starting)(f);
- break;
-
- case CLOSED:
- if( f->flags & OPT_SILENT )
- f->state = STOPPED;
- else {
- /* Send an initial configure-request */
- fsm_sconfreq(f, 0);
- f->state = REQSENT;
- }
- break;
-
- case CLOSING:
- f->state = STOPPING;
- /* fall through */
- case STOPPED:
- case OPENED:
- if( f->flags & OPT_RESTART ){
- fsm_lowerdown(f);
- fsm_lowerup(f);
- }
- break;
- }
-}
-
-
-/*
- * fsm_close - Start closing connection.
- *
- * Cancel timeouts and either initiate close or possibly go directly to
- * the CLOSED state.
- */
-void
-fsm_close(f, reason)
- fsm *f;
- char *reason;
-{
- f->term_reason = reason;
- f->term_reason_len = (reason == NULL? 0: strlen(reason));
- switch( f->state ){
- case STARTING:
- f->state = INITIAL;
- break;
- case STOPPED:
- f->state = CLOSED;
- break;
- case STOPPING:
- f->state = CLOSING;
- break;
-
- case REQSENT:
- case ACKRCVD:
- case ACKSENT:
- case OPENED:
- if( f->state != OPENED )
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- else if( f->callbacks->down )
- (*f->callbacks->down)(f); /* Inform upper layers we're down */
-
- /* Init restart counter, send Terminate-Request */
- f->retransmits = f->maxtermtransmits;
- fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
- (u_char *) f->term_reason, f->term_reason_len);
- TIMEOUT(fsm_timeout, f, f->timeouttime);
- --f->retransmits;
-
- f->state = CLOSING;
- break;
- }
-}
-
-
-/*
- * fsm_timeout - Timeout expired.
- */
-static void
-fsm_timeout(arg)
- void *arg;
-{
- fsm *f = (fsm *) arg;
-
- switch (f->state) {
- case CLOSING:
- case STOPPING:
- if( f->retransmits <= 0 ){
- /*
- * We've waited for an ack long enough. Peer probably heard us.
- */
- f->state = (f->state == CLOSING)? CLOSED: STOPPED;
- if( f->callbacks->finished )
- (*f->callbacks->finished)(f);
- } else {
- /* Send Terminate-Request */
- fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
- (u_char *) f->term_reason, f->term_reason_len);
- TIMEOUT(fsm_timeout, f, f->timeouttime);
- --f->retransmits;
- }
- break;
-
- case REQSENT:
- case ACKRCVD:
- case ACKSENT:
- if (f->retransmits <= 0) {
- warn("%s: timeout sending Config-Requests\n", PROTO_NAME(f));
- f->state = STOPPED;
- if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished )
- (*f->callbacks->finished)(f);
-
- } else {
- /* Retransmit the configure-request */
- if (f->callbacks->retransmit)
- (*f->callbacks->retransmit)(f);
- fsm_sconfreq(f, 1); /* Re-send Configure-Request */
- if( f->state == ACKRCVD )
- f->state = REQSENT;
- }
- break;
-
- default:
- FSMDEBUG(("%s: Timeout event in state %d!", PROTO_NAME(f), f->state));
- }
-}
-
-
-/*
- * fsm_input - Input packet.
- */
-void
-fsm_input(f, inpacket, l)
- fsm *f;
- u_char *inpacket;
- int l;
-{
- u_char *inp;
- u_char code, id;
- int len;
-
- /*
- * Parse header (code, id and length).
- * If packet too short, drop it.
- */
- inp = inpacket;
- if (l < HEADERLEN) {
- FSMDEBUG(("fsm_input(%x): Rcvd short header.", f->protocol));
- return;
- }
- GETCHAR(code, inp);
- GETCHAR(id, inp);
- GETSHORT(len, inp);
- if (len < HEADERLEN) {
- FSMDEBUG(("fsm_input(%x): Rcvd illegal length.", f->protocol));
- return;
- }
- if (len > l) {
- FSMDEBUG(("fsm_input(%x): Rcvd short packet.", f->protocol));
- return;
- }
- len -= HEADERLEN; /* subtract header length */
-
- if( f->state == INITIAL || f->state == STARTING ){
- FSMDEBUG(("fsm_input(%x): Rcvd packet in state %d.",
- f->protocol, f->state));
- return;
- }
-
- /*
- * Action depends on code.
- */
- switch (code) {
- case CONFREQ:
- fsm_rconfreq(f, id, inp, len);
- break;
-
- case CONFACK:
- fsm_rconfack(f, id, inp, len);
- break;
-
- case CONFNAK:
- case CONFREJ:
- fsm_rconfnakrej(f, code, id, inp, len);
- break;
-
- case TERMREQ:
- fsm_rtermreq(f, id, inp, len);
- break;
-
- case TERMACK:
- fsm_rtermack(f);
- break;
-
- case CODEREJ:
- fsm_rcoderej(f, inp, len);
- break;
-
- default:
- if( !f->callbacks->extcode
- || !(*f->callbacks->extcode)(f, code, id, inp, len) )
- fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN);
- break;
- }
-}
-
-
-/*
- * fsm_rconfreq - Receive Configure-Request.
- */
-static void
-fsm_rconfreq(f, id, inp, len)
- fsm *f;
- u_char id;
- u_char *inp;
- int len;
-{
- int code, reject_if_disagree;
-
- switch( f->state ){
- case CLOSED:
- /* Go away, we're closed */
- fsm_sdata(f, TERMACK, id, NULL, 0);
- return;
- case CLOSING:
- case STOPPING:
- return;
-
- case OPENED:
- /* Go down and restart negotiation */
- if( f->callbacks->down )
- (*f->callbacks->down)(f); /* Inform upper layers */
- fsm_sconfreq(f, 0); /* Send initial Configure-Request */
- break;
-
- case STOPPED:
- /* Negotiation started by our peer */
- fsm_sconfreq(f, 0); /* Send initial Configure-Request */
- f->state = REQSENT;
- break;
- }
-
- /*
- * Pass the requested configuration options
- * to protocol-specific code for checking.
- */
- if (f->callbacks->reqci){ /* Check CI */
- reject_if_disagree = (f->nakloops >= f->maxnakloops);
- code = (*f->callbacks->reqci)(f, inp, &len, reject_if_disagree);
- } else if (len)
- code = CONFREJ; /* Reject all CI */
- else
- code = CONFACK;
-
- /* send the Ack, Nak or Rej to the peer */
- fsm_sdata(f, code, id, inp, len);
-
- if (code == CONFACK) {
- if (f->state == ACKRCVD) {
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- f->state = OPENED;
- if (f->callbacks->up)
- (*f->callbacks->up)(f); /* Inform upper layers */
- } else
- f->state = ACKSENT;
- f->nakloops = 0;
-
- } else {
- /* we sent CONFACK or CONFREJ */
- if (f->state != ACKRCVD)
- f->state = REQSENT;
- if( code == CONFNAK )
- ++f->nakloops;
- }
-}
-
-
-/*
- * fsm_rconfack - Receive Configure-Ack.
- */
-static void
-fsm_rconfack(f, id, inp, len)
- fsm *f;
- int id;
- u_char *inp;
- int len;
-{
- if (id != f->reqid || f->seen_ack) /* Expected id? */
- return; /* Nope, toss... */
- if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len):
- (len == 0)) ){
- /* Ack is bad - ignore it */
- error("Received bad configure-ack: %P", inp, len);
- return;
- }
- f->seen_ack = 1;
-
- switch (f->state) {
- case CLOSED:
- case STOPPED:
- fsm_sdata(f, TERMACK, id, NULL, 0);
- break;
-
- case REQSENT:
- f->state = ACKRCVD;
- f->retransmits = f->maxconfreqtransmits;
- break;
-
- case ACKRCVD:
- /* Huh? an extra valid Ack? oh well... */
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- fsm_sconfreq(f, 0);
- f->state = REQSENT;
- break;
-
- case ACKSENT:
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- f->state = OPENED;
- f->retransmits = f->maxconfreqtransmits;
- if (f->callbacks->up)
- (*f->callbacks->up)(f); /* Inform upper layers */
- break;
-
- case OPENED:
- /* Go down and restart negotiation */
- if (f->callbacks->down)
- (*f->callbacks->down)(f); /* Inform upper layers */
- fsm_sconfreq(f, 0); /* Send initial Configure-Request */
- f->state = REQSENT;
- break;
- }
-}
-
-
-/*
- * fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
- */
-static void
-fsm_rconfnakrej(f, code, id, inp, len)
- fsm *f;
- int code, id;
- u_char *inp;
- int len;
-{
- int (*proc) __P((fsm *, u_char *, int));
- int ret;
-
- if (id != f->reqid || f->seen_ack) /* Expected id? */
- return; /* Nope, toss... */
- proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci;
- if (!proc || !(ret = proc(f, inp, len))) {
- /* Nak/reject is bad - ignore it */
- error("Received bad configure-nak/rej: %P", inp, len);
- return;
- }
- f->seen_ack = 1;
-
- switch (f->state) {
- case CLOSED:
- case STOPPED:
- fsm_sdata(f, TERMACK, id, NULL, 0);
- break;
-
- case REQSENT:
- case ACKSENT:
- /* They didn't agree to what we wanted - try another request */
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- if (ret < 0)
- f->state = STOPPED; /* kludge for stopping CCP */
- else
- fsm_sconfreq(f, 0); /* Send Configure-Request */
- break;
-
- case ACKRCVD:
- /* Got a Nak/reject when we had already had an Ack?? oh well... */
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- fsm_sconfreq(f, 0);
- f->state = REQSENT;
- break;
-
- case OPENED:
- /* Go down and restart negotiation */
- if (f->callbacks->down)
- (*f->callbacks->down)(f); /* Inform upper layers */
- fsm_sconfreq(f, 0); /* Send initial Configure-Request */
- f->state = REQSENT;
- break;
- }
-}
-
-
-/*
- * fsm_rtermreq - Receive Terminate-Req.
- */
-static void
-fsm_rtermreq(f, id, p, len)
- fsm *f;
- int id;
- u_char *p;
- int len;
-{
- switch (f->state) {
- case ACKRCVD:
- case ACKSENT:
- f->state = REQSENT; /* Start over but keep trying */
- break;
-
- case OPENED:
- if (len > 0) {
- info("%s terminated by peer (%0.*v)", PROTO_NAME(f), len, p);
- } else
- info("%s terminated by peer", PROTO_NAME(f));
- if (f->callbacks->down)
- (*f->callbacks->down)(f); /* Inform upper layers */
- f->retransmits = 0;
- f->state = STOPPING;
- TIMEOUT(fsm_timeout, f, f->timeouttime);
- break;
- }
-
- fsm_sdata(f, TERMACK, id, NULL, 0);
-}
-
-
-/*
- * fsm_rtermack - Receive Terminate-Ack.
- */
-static void
-fsm_rtermack(f)
- fsm *f;
-{
- switch (f->state) {
- case CLOSING:
- UNTIMEOUT(fsm_timeout, f);
- f->state = CLOSED;
- if( f->callbacks->finished )
- (*f->callbacks->finished)(f);
- break;
- case STOPPING:
- UNTIMEOUT(fsm_timeout, f);
- f->state = STOPPED;
- if( f->callbacks->finished )
- (*f->callbacks->finished)(f);
- break;
-
- case ACKRCVD:
- f->state = REQSENT;
- break;
-
- case OPENED:
- if (f->callbacks->down)
- (*f->callbacks->down)(f); /* Inform upper layers */
- fsm_sconfreq(f, 0);
- break;
- }
-}
-
-
-/*
- * fsm_rcoderej - Receive an Code-Reject.
- */
-static void
-fsm_rcoderej(f, inp, len)
- fsm *f;
- u_char *inp;
- int len;
-{
- u_char code, id;
-
- if (len < HEADERLEN) {
- FSMDEBUG(("fsm_rcoderej: Rcvd short Code-Reject packet!"));
- return;
- }
- GETCHAR(code, inp);
- GETCHAR(id, inp);
- warn("%s: Rcvd Code-Reject for code %d, id %d", PROTO_NAME(f), code, id);
-
- if( f->state == ACKRCVD )
- f->state = REQSENT;
-}
-
-
-/*
- * fsm_protreject - Peer doesn't speak this protocol.
- *
- * Treat this as a catastrophic error (RXJ-).
- */
-void
-fsm_protreject(f)
- fsm *f;
-{
- switch( f->state ){
- case CLOSING:
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- /* fall through */
- case CLOSED:
- f->state = CLOSED;
- if( f->callbacks->finished )
- (*f->callbacks->finished)(f);
- break;
-
- case STOPPING:
- case REQSENT:
- case ACKRCVD:
- case ACKSENT:
- UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */
- /* fall through */
- case STOPPED:
- f->state = STOPPED;
- if( f->callbacks->finished )
- (*f->callbacks->finished)(f);
- break;
-
- case OPENED:
- if( f->callbacks->down )
- (*f->callbacks->down)(f);
-
- /* Init restart counter, send Terminate-Request */
- f->retransmits = f->maxtermtransmits;
- fsm_sdata(f, TERMREQ, f->reqid = ++f->id,
- (u_char *) f->term_reason, f->term_reason_len);
- TIMEOUT(fsm_timeout, f, f->timeouttime);
- --f->retransmits;
-
- f->state = STOPPING;
- break;
-
- default:
- FSMDEBUG(("%s: Protocol-reject event in state %d!",
- PROTO_NAME(f), f->state));
- }
-}
-
-
-/*
- * fsm_sconfreq - Send a Configure-Request.
- */
-static void
-fsm_sconfreq(f, retransmit)
- fsm *f;
- int retransmit;
-{
- u_char *outp;
- int cilen;
-
- if( f->state != REQSENT && f->state != ACKRCVD && f->state != ACKSENT ){
- /* Not currently negotiating - reset options */
- if( f->callbacks->resetci )
- (*f->callbacks->resetci)(f);
- f->nakloops = 0;
- }
-
- if( !retransmit ){
- /* New request - reset retransmission counter, use new ID */
- f->retransmits = f->maxconfreqtransmits;
- f->reqid = ++f->id;
- }
-
- f->seen_ack = 0;
-
- /*
- * Make up the request packet
- */
- outp = outpacket_buf + PPP_HDRLEN + HEADERLEN;
- if( f->callbacks->cilen && f->callbacks->addci ){
- cilen = (*f->callbacks->cilen)(f);
- if( cilen > peer_mru[f->unit] - HEADERLEN )
- cilen = peer_mru[f->unit] - HEADERLEN;
- if (f->callbacks->addci)
- (*f->callbacks->addci)(f, outp, &cilen);
- } else
- cilen = 0;
-
- /* send the request to our peer */
- fsm_sdata(f, CONFREQ, f->reqid, outp, cilen);
-
- /* start the retransmit timer */
- --f->retransmits;
- TIMEOUT(fsm_timeout, f, f->timeouttime);
-}
-
-
-/*
- * fsm_sdata - Send some data.
- *
- * Used for all packets sent to our peer by this module.
- */
-void
-fsm_sdata(f, code, id, data, datalen)
- fsm *f;
- u_char code, id;
- u_char *data;
- int datalen;
-{
- u_char *outp;
- int outlen;
-
- /* Adjust length to be smaller than MTU */
- outp = outpacket_buf;
- if (datalen > peer_mru[f->unit] - HEADERLEN)
- datalen = peer_mru[f->unit] - HEADERLEN;
- if (datalen && data != outp + PPP_HDRLEN + HEADERLEN)
- BCOPY(data, outp + PPP_HDRLEN + HEADERLEN, datalen);
- outlen = datalen + HEADERLEN;
- MAKEHEADER(outp, f->protocol);
- PUTCHAR(code, outp);
- PUTCHAR(id, outp);
- PUTSHORT(outlen, outp);
- output(f->unit, outpacket_buf, outlen + PPP_HDRLEN);
-}
diff --git a/mdk-stage1/ppp/pppd/fsm.h b/mdk-stage1/ppp/pppd/fsm.h
deleted file mode 100644
index c94a68e6c..000000000
--- a/mdk-stage1/ppp/pppd/fsm.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Packet header = Code, id, length.
- */
-#define HEADERLEN 4
-
-
-/*
- * CP (LCP, IPCP, etc.) codes.
- */
-#define CONFREQ 1 /* Configuration Request */
-#define CONFACK 2 /* Configuration Ack */
-#define CONFNAK 3 /* Configuration Nak */
-#define CONFREJ 4 /* Configuration Reject */
-#define TERMREQ 5 /* Termination Request */
-#define TERMACK 6 /* Termination Ack */
-#define CODEREJ 7 /* Code Reject */
-
-
-/*
- * Each FSM is described by an fsm structure and fsm callbacks.
- */
-typedef struct fsm {
- int unit; /* Interface unit number */
- int protocol; /* Data Link Layer Protocol field value */
- int state; /* State */
- int flags; /* Contains option bits */
- u_char id; /* Current id */
- u_char reqid; /* Current request id */
- u_char seen_ack; /* Have received valid Ack/Nak/Rej to Req */
- int timeouttime; /* Timeout time in milliseconds */
- int maxconfreqtransmits; /* Maximum Configure-Request transmissions */
- int retransmits; /* Number of retransmissions left */
- int maxtermtransmits; /* Maximum Terminate-Request transmissions */
- int nakloops; /* Number of nak loops since last ack */
- int maxnakloops; /* Maximum number of nak loops tolerated */
- struct fsm_callbacks *callbacks; /* Callback routines */
- char *term_reason; /* Reason for closing protocol */
- int term_reason_len; /* Length of term_reason */
-} fsm;
-
-
-typedef struct fsm_callbacks {
- void (*resetci) /* Reset our Configuration Information */
- __P((fsm *));
- int (*cilen) /* Length of our Configuration Information */
- __P((fsm *));
- void (*addci) /* Add our Configuration Information */
- __P((fsm *, u_char *, int *));
- int (*ackci) /* ACK our Configuration Information */
- __P((fsm *, u_char *, int));
- int (*nakci) /* NAK our Configuration Information */
- __P((fsm *, u_char *, int));
- int (*rejci) /* Reject our Configuration Information */
- __P((fsm *, u_char *, int));
- int (*reqci) /* Request peer's Configuration Information */
- __P((fsm *, u_char *, int *, int));
- void (*up) /* Called when fsm reaches OPENED state */
- __P((fsm *));
- void (*down) /* Called when fsm leaves OPENED state */
- __P((fsm *));
- void (*starting) /* Called when we want the lower layer */
- __P((fsm *));
- void (*finished) /* Called when we don't want the lower layer */
- __P((fsm *));
- void (*protreject) /* Called when Protocol-Reject received */
- __P((int));
- void (*retransmit) /* Retransmission is necessary */
- __P((fsm *));
- int (*extcode) /* Called when unknown code received */
- __P((fsm *, int, int, u_char *, int));
- char *proto_name; /* String name for protocol (for messages) */
-} fsm_callbacks;
-
-
-/*
- * Link states.
- */
-#define INITIAL 0 /* Down, hasn't been opened */
-#define STARTING 1 /* Down, been opened */
-#define CLOSED 2 /* Up, hasn't been opened */
-#define STOPPED 3 /* Open, waiting for down event */
-#define CLOSING 4 /* Terminating the connection, not open */
-#define STOPPING 5 /* Terminating, but open */
-#define REQSENT 6 /* We've sent a Config Request */
-#define ACKRCVD 7 /* We've received a Config Ack */
-#define ACKSENT 8 /* We've sent a Config Ack */
-#define OPENED 9 /* Connection available */
-
-
-/*
- * Flags - indicate options controlling FSM operation
- */
-#define OPT_PASSIVE 1 /* Don't die if we don't get a response */
-#define OPT_RESTART 2 /* Treat 2nd OPEN as DOWN, UP */
-#define OPT_SILENT 4 /* Wait for peer to speak first */
-
-
-/*
- * Timeouts.
- */
-#define DEFTIMEOUT 3 /* Timeout time in seconds */
-#define DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
-#define DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
-#define DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
-
-
-/*
- * Prototypes
- */
-void fsm_init __P((fsm *));
-void fsm_lowerup __P((fsm *));
-void fsm_lowerdown __P((fsm *));
-void fsm_open __P((fsm *));
-void fsm_close __P((fsm *, char *));
-void fsm_input __P((fsm *, u_char *, int));
-void fsm_protreject __P((fsm *));
-void fsm_sdata __P((fsm *, int, int, u_char *, int));
-
-
-/*
- * Variables
- */
-extern int peer_mru[]; /* currently negotiated peer MRU (per unit) */
diff --git a/mdk-stage1/ppp/pppd/ipcp.c b/mdk-stage1/ppp/pppd/ipcp.c
deleted file mode 100644
index 3f64357ed..000000000
--- a/mdk-stage1/ppp/pppd/ipcp.c
+++ /dev/null
@@ -1,2054 +0,0 @@
-/*
- * ipcp.c - PPP IP Control Protocol.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <netdb.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipcp.h"
-#include "pathnames.h"
-
-static const char rcsid[] = RCSID;
-
-/* global vars */
-ipcp_options ipcp_wantoptions[NUM_PPP]; /* Options that we want to request */
-ipcp_options ipcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */
-ipcp_options ipcp_allowoptions[NUM_PPP]; /* Options we allow peer to request */
-ipcp_options ipcp_hisoptions[NUM_PPP]; /* Options that we ack'd */
-
-u_int32_t netmask = 0; /* IP netmask to set on interface */
-
-bool disable_defaultip = 0; /* Don't use hostname for default IP adrs */
-
-/* Hook for a plugin to know when IP protocol has come up */
-void (*ip_up_hook) __P((void)) = NULL;
-
-/* Hook for a plugin to know when IP protocol has come down */
-void (*ip_down_hook) __P((void)) = NULL;
-
-/* Hook for a plugin to choose the remote IP address */
-void (*ip_choose_hook) __P((u_int32_t *)) = NULL;
-
-/* local vars */
-static int default_route_set[NUM_PPP]; /* Have set up a default route */
-static int proxy_arp_set[NUM_PPP]; /* Have created proxy arp entry */
-static bool usepeerdns; /* Ask peer for DNS addrs */
-static int ipcp_is_up; /* have called np_up() */
-static bool ask_for_local; /* request our address from peer */
-static char vj_value[8]; /* string form of vj option value */
-static char netmask_str[20]; /* string form of netmask value */
-
-/*
- * Callbacks for fsm code. (CI = Configuration Information)
- */
-static void ipcp_resetci __P((fsm *)); /* Reset our CI */
-static int ipcp_cilen __P((fsm *)); /* Return length of our CI */
-static void ipcp_addci __P((fsm *, u_char *, int *)); /* Add our CI */
-static int ipcp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
-static int ipcp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
-static int ipcp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
-static int ipcp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */
-static void ipcp_up __P((fsm *)); /* We're UP */
-static void ipcp_down __P((fsm *)); /* We're DOWN */
-static void ipcp_finished __P((fsm *)); /* Don't need lower layer */
-
-fsm ipcp_fsm[NUM_PPP]; /* IPCP fsm structure */
-
-static fsm_callbacks ipcp_callbacks = { /* IPCP callback routines */
- ipcp_resetci, /* Reset our Configuration Information */
- ipcp_cilen, /* Length of our Configuration Information */
- ipcp_addci, /* Add our Configuration Information */
- ipcp_ackci, /* ACK our Configuration Information */
- ipcp_nakci, /* NAK our Configuration Information */
- ipcp_rejci, /* Reject our Configuration Information */
- ipcp_reqci, /* Request peer's Configuration Information */
- ipcp_up, /* Called when fsm reaches OPENED state */
- ipcp_down, /* Called when fsm leaves OPENED state */
- NULL, /* Called when we want the lower layer up */
- ipcp_finished, /* Called when we want the lower layer down */
- NULL, /* Called when Protocol-Reject received */
- NULL, /* Retransmission is necessary */
- NULL, /* Called to handle protocol-specific codes */
- "IPCP" /* String name of protocol */
-};
-
-/*
- * Command-line options.
- */
-static int setvjslots __P((char **));
-static int setdnsaddr __P((char **));
-static int setwinsaddr __P((char **));
-static int setnetmask __P((char **));
-static int setipaddr __P((char *, char **, int));
-static void printipaddr __P((option_t *, void (*)(void *, char *,...),void *));
-
-static option_t ipcp_option_list[] = {
- { "noip", o_bool, &ipcp_protent.enabled_flag,
- "Disable IP and IPCP" },
- { "-ip", o_bool, &ipcp_protent.enabled_flag,
- "Disable IP and IPCP", OPT_ALIAS },
-
- { "novj", o_bool, &ipcp_wantoptions[0].neg_vj,
- "Disable VJ compression", OPT_A2CLR, &ipcp_allowoptions[0].neg_vj },
- { "-vj", o_bool, &ipcp_wantoptions[0].neg_vj,
- "Disable VJ compression", OPT_ALIAS | OPT_A2CLR,
- &ipcp_allowoptions[0].neg_vj },
-
- { "novjccomp", o_bool, &ipcp_wantoptions[0].cflag,
- "Disable VJ connection-ID compression", OPT_A2CLR,
- &ipcp_allowoptions[0].cflag },
- { "-vjccomp", o_bool, &ipcp_wantoptions[0].cflag,
- "Disable VJ connection-ID compression", OPT_ALIAS | OPT_A2CLR,
- &ipcp_allowoptions[0].cflag },
-
- { "vj-max-slots", o_special, (void *)setvjslots,
- "Set maximum VJ header slots",
- OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, vj_value },
-
- { "ipcp-accept-local", o_bool, &ipcp_wantoptions[0].accept_local,
- "Accept peer's address for us", 1 },
- { "ipcp-accept-remote", o_bool, &ipcp_wantoptions[0].accept_remote,
- "Accept peer's address for it", 1 },
-
- { "ipparam", o_string, &ipparam,
- "Set ip script parameter", OPT_PRIO },
-
- { "noipdefault", o_bool, &disable_defaultip,
- "Don't use name for default IP adrs", 1 },
-
- { "ms-dns", 1, (void *)setdnsaddr,
- "DNS address for the peer's use" },
- { "ms-wins", 1, (void *)setwinsaddr,
- "Nameserver for SMB over TCP/IP for peer" },
-
- { "ipcp-restart", o_int, &ipcp_fsm[0].timeouttime,
- "Set timeout for IPCP", OPT_PRIO },
- { "ipcp-max-terminate", o_int, &ipcp_fsm[0].maxtermtransmits,
- "Set max #xmits for term-reqs", OPT_PRIO },
- { "ipcp-max-configure", o_int, &ipcp_fsm[0].maxconfreqtransmits,
- "Set max #xmits for conf-reqs", OPT_PRIO },
- { "ipcp-max-failure", o_int, &ipcp_fsm[0].maxnakloops,
- "Set max #conf-naks for IPCP", OPT_PRIO },
-
- { "defaultroute", o_bool, &ipcp_wantoptions[0].default_route,
- "Add default route", OPT_ENABLE|1, &ipcp_allowoptions[0].default_route },
- { "nodefaultroute", o_bool, &ipcp_allowoptions[0].default_route,
- "disable defaultroute option", OPT_A2CLR,
- &ipcp_wantoptions[0].default_route },
- { "-defaultroute", o_bool, &ipcp_allowoptions[0].default_route,
- "disable defaultroute option", OPT_ALIAS | OPT_A2CLR,
- &ipcp_wantoptions[0].default_route },
-
- { "proxyarp", o_bool, &ipcp_wantoptions[0].proxy_arp,
- "Add proxy ARP entry", OPT_ENABLE|1, &ipcp_allowoptions[0].proxy_arp },
- { "noproxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
- "disable proxyarp option", OPT_A2CLR,
- &ipcp_wantoptions[0].proxy_arp },
- { "-proxyarp", o_bool, &ipcp_allowoptions[0].proxy_arp,
- "disable proxyarp option", OPT_ALIAS | OPT_A2CLR,
- &ipcp_wantoptions[0].proxy_arp },
-
- { "usepeerdns", o_bool, &usepeerdns,
- "Ask peer for DNS address(es)", 1 },
-
- { "netmask", o_special, (void *)setnetmask,
- "set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str },
-
- { "IP addresses", o_wild, (void *) &setipaddr,
- "set local and remote IP addresses",
- OPT_NOARG | OPT_A2PRINTER, (void *) &printipaddr },
-
- { NULL }
-};
-
-/*
- * Protocol entry points from main code.
- */
-static void ipcp_init __P((int));
-static void ipcp_open __P((int));
-static void ipcp_close __P((int, char *));
-static void ipcp_lowerup __P((int));
-static void ipcp_lowerdown __P((int));
-static void ipcp_input __P((int, u_char *, int));
-static void ipcp_protrej __P((int));
-static int ipcp_printpkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-static void ip_check_options __P((void));
-static int ip_demand_conf __P((int));
-static int ip_active_pkt __P((u_char *, int));
-static void create_resolv __P((u_int32_t, u_int32_t));
-
-struct protent ipcp_protent = {
- PPP_IPCP,
- ipcp_init,
- ipcp_input,
- ipcp_protrej,
- ipcp_lowerup,
- ipcp_lowerdown,
- ipcp_open,
- ipcp_close,
- ipcp_printpkt,
- NULL,
- 1,
- "IPCP",
- "IP",
- ipcp_option_list,
- ip_check_options,
- ip_demand_conf,
- ip_active_pkt
-};
-
-static void ipcp_clear_addrs __P((int, u_int32_t, u_int32_t));
-static void ipcp_script __P((char *)); /* Run an up/down script */
-static void ipcp_script_done __P((void *));
-
-/*
- * Lengths of configuration options.
- */
-#define CILEN_VOID 2
-#define CILEN_COMPRESS 4 /* min length for compression protocol opt. */
-#define CILEN_VJ 6 /* length for RFC1332 Van-Jacobson opt. */
-#define CILEN_ADDR 6 /* new-style single address option */
-#define CILEN_ADDRS 10 /* old-style dual address option */
-
-
-#define CODENAME(x) ((x) == CONFACK ? "ACK" : \
- (x) == CONFNAK ? "NAK" : "REJ")
-
-/*
- * This state variable is used to ensure that we don't
- * run an ipcp-up/down script while one is already running.
- */
-static enum script_state {
- s_down,
- s_up,
-} ipcp_script_state;
-static pid_t ipcp_script_pid;
-
-/*
- * Make a string representation of a network IP address.
- */
-char *
-ip_ntoa(ipaddr)
-u_int32_t ipaddr;
-{
- static char b[64];
-
- slprintf(b, sizeof(b), "%I", ipaddr);
- return b;
-}
-
-/*
- * Option parsing.
- */
-
-/*
- * setvjslots - set maximum number of connection slots for VJ compression
- */
-static int
-setvjslots(argv)
- char **argv;
-{
- int value;
-
- if (!int_option(*argv, &value))
- return 0;
- if (value < 2 || value > 16) {
- option_error("vj-max-slots value must be between 2 and 16");
- return 0;
- }
- ipcp_wantoptions [0].maxslotindex =
- ipcp_allowoptions[0].maxslotindex = value - 1;
- slprintf(vj_value, sizeof(vj_value), "%d", value);
- return 1;
-}
-
-/*
- * setdnsaddr - set the dns address(es)
- */
-static int
-setdnsaddr(argv)
- char **argv;
-{
- u_int32_t dns;
- struct hostent *hp;
-
- dns = inet_addr(*argv);
- if (dns == (u_int32_t) -1) {
- if ((hp = gethostbyname(*argv)) == NULL) {
- option_error("invalid address parameter '%s' for ms-dns option",
- *argv);
- return 0;
- }
- dns = *(u_int32_t *)hp->h_addr;
- }
-
- /* We take the last 2 values given, the 2nd-last as the primary
- and the last as the secondary. If only one is given it
- becomes both primary and secondary. */
- if (ipcp_allowoptions[0].dnsaddr[1] == 0)
- ipcp_allowoptions[0].dnsaddr[0] = dns;
- else
- ipcp_allowoptions[0].dnsaddr[0] = ipcp_allowoptions[0].dnsaddr[1];
-
- /* always set the secondary address value. */
- ipcp_allowoptions[0].dnsaddr[1] = dns;
-
- return (1);
-}
-
-/*
- * setwinsaddr - set the wins address(es)
- * This is primrarly used with the Samba package under UNIX or for pointing
- * the caller to the existing WINS server on a Windows NT platform.
- */
-static int
-setwinsaddr(argv)
- char **argv;
-{
- u_int32_t wins;
- struct hostent *hp;
-
- wins = inet_addr(*argv);
- if (wins == (u_int32_t) -1) {
- if ((hp = gethostbyname(*argv)) == NULL) {
- option_error("invalid address parameter '%s' for ms-wins option",
- *argv);
- return 0;
- }
- wins = *(u_int32_t *)hp->h_addr;
- }
-
- /* We take the last 2 values given, the 2nd-last as the primary
- and the last as the secondary. If only one is given it
- becomes both primary and secondary. */
- if (ipcp_allowoptions[0].winsaddr[1] == 0)
- ipcp_allowoptions[0].winsaddr[0] = wins;
- else
- ipcp_allowoptions[0].winsaddr[0] = ipcp_allowoptions[0].winsaddr[1];
-
- /* always set the secondary address value. */
- ipcp_allowoptions[0].winsaddr[1] = wins;
-
- return (1);
-}
-
-/*
- * setipaddr - Set the IP address
- * If doit is 0, the call is to check whether this option is
- * potentially an IP address specification.
- */
-static int
-setipaddr(arg, argv, doit)
- char *arg;
- char **argv;
- int doit;
-{
- struct hostent *hp;
- char *colon;
- u_int32_t local, remote;
- ipcp_options *wo = &ipcp_wantoptions[0];
- static int prio_local = 0, prio_remote = 0;
-
- /*
- * IP address pair separated by ":".
- */
- if ((colon = strchr(arg, ':')) == NULL)
- return 0;
- if (!doit)
- return 1;
-
- /*
- * If colon first character, then no local addr.
- */
- if (colon != arg && option_priority >= prio_local) {
- *colon = '\0';
- if ((local = inet_addr(arg)) == (u_int32_t) -1) {
- if ((hp = gethostbyname(arg)) == NULL) {
- option_error("unknown host: %s", arg);
- return 0;
- }
- local = *(u_int32_t *)hp->h_addr;
- }
- if (bad_ip_adrs(local)) {
- option_error("bad local IP address %s", ip_ntoa(local));
- return 0;
- }
- if (local != 0)
- wo->ouraddr = local;
- *colon = ':';
- prio_local = option_priority;
- }
-
- /*
- * If colon last character, then no remote addr.
- */
- if (*++colon != '\0' && option_priority >= prio_remote) {
- if ((remote = inet_addr(colon)) == (u_int32_t) -1) {
- if ((hp = gethostbyname(colon)) == NULL) {
- option_error("unknown host: %s", colon);
- return 0;
- }
- remote = *(u_int32_t *)hp->h_addr;
- if (remote_name[0] == 0)
- strlcpy(remote_name, colon, sizeof(remote_name));
- }
- if (bad_ip_adrs(remote)) {
- option_error("bad remote IP address %s", ip_ntoa(remote));
- return 0;
- }
- if (remote != 0)
- wo->hisaddr = remote;
- prio_remote = option_priority;
- }
-
- return 1;
-}
-
-static void
-printipaddr(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- ipcp_options *wo = &ipcp_wantoptions[0];
-
- if (wo->ouraddr != 0)
- printer(arg, "%I", wo->ouraddr);
- printer(arg, ":");
- if (wo->hisaddr != 0)
- printer(arg, "%I", wo->hisaddr);
-}
-
-/*
- * setnetmask - set the netmask to be used on the interface.
- */
-static int
-setnetmask(argv)
- char **argv;
-{
- u_int32_t mask;
- int n;
- char *p;
-
- /*
- * Unfortunately, if we use inet_addr, we can't tell whether
- * a result of all 1s is an error or a valid 255.255.255.255.
- */
- p = *argv;
- n = parse_dotted_ip(p, &mask);
-
- mask = htonl(mask);
-
- if (n == 0 || p[n] != 0 || (netmask & ~mask) != 0) {
- option_error("invalid netmask value '%s'", *argv);
- return 0;
- }
-
- netmask = mask;
- slprintf(netmask_str, sizeof(netmask_str), "%I", mask);
-
- return (1);
-}
-
-int
-parse_dotted_ip(p, vp)
- char *p;
- u_int32_t *vp;
-{
- int n;
- u_int32_t v, b;
- char *endp, *p0 = p;
-
- v = 0;
- for (n = 3;; --n) {
- b = strtoul(p, &endp, 0);
- if (endp == p)
- return 0;
- if (b > 255) {
- if (n < 3)
- return 0;
- /* accept e.g. 0xffffff00 */
- *vp = b;
- return endp - p0;
- }
- v |= b << (n * 8);
- p = endp;
- if (n == 0)
- break;
- if (*p != '.')
- return 0;
- ++p;
- }
- *vp = v;
- return p - p0;
-}
-
-
-/*
- * ipcp_init - Initialize IPCP.
- */
-static void
-ipcp_init(unit)
- int unit;
-{
- fsm *f = &ipcp_fsm[unit];
- ipcp_options *wo = &ipcp_wantoptions[unit];
- ipcp_options *ao = &ipcp_allowoptions[unit];
-
- f->unit = unit;
- f->protocol = PPP_IPCP;
- f->callbacks = &ipcp_callbacks;
- fsm_init(&ipcp_fsm[unit]);
-
- memset(wo, 0, sizeof(*wo));
- memset(ao, 0, sizeof(*ao));
-
- wo->neg_addr = 1;
- wo->neg_vj = 1;
- wo->vj_protocol = IPCP_VJ_COMP;
- wo->maxslotindex = MAX_STATES - 1; /* really max index */
- wo->cflag = 1;
-
-
- /* max slots and slot-id compression are currently hardwired in */
- /* ppp_if.c to 16 and 1, this needs to be changed (among other */
- /* things) gmc */
-
- ao->neg_addr = 1;
- ao->neg_vj = 1;
- ao->maxslotindex = MAX_STATES - 1;
- ao->cflag = 1;
-
- /*
- * XXX These control whether the user may use the proxyarp
- * and defaultroute options.
- */
- ao->proxy_arp = 1;
- ao->default_route = 1;
-}
-
-
-/*
- * ipcp_open - IPCP is allowed to come up.
- */
-static void
-ipcp_open(unit)
- int unit;
-{
- fsm_open(&ipcp_fsm[unit]);
-}
-
-
-/*
- * ipcp_close - Take IPCP down.
- */
-static void
-ipcp_close(unit, reason)
- int unit;
- char *reason;
-{
- fsm_close(&ipcp_fsm[unit], reason);
-}
-
-
-/*
- * ipcp_lowerup - The lower layer is up.
- */
-static void
-ipcp_lowerup(unit)
- int unit;
-{
- fsm_lowerup(&ipcp_fsm[unit]);
-}
-
-
-/*
- * ipcp_lowerdown - The lower layer is down.
- */
-static void
-ipcp_lowerdown(unit)
- int unit;
-{
- fsm_lowerdown(&ipcp_fsm[unit]);
-}
-
-
-/*
- * ipcp_input - Input IPCP packet.
- */
-static void
-ipcp_input(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- fsm_input(&ipcp_fsm[unit], p, len);
-}
-
-
-/*
- * ipcp_protrej - A Protocol-Reject was received for IPCP.
- *
- * Pretend the lower layer went down, so we shut up.
- */
-static void
-ipcp_protrej(unit)
- int unit;
-{
- fsm_lowerdown(&ipcp_fsm[unit]);
-}
-
-
-/*
- * ipcp_resetci - Reset our CI.
- * Called by fsm_sconfreq, Send Configure Request.
- */
-static void
-ipcp_resetci(f)
- fsm *f;
-{
- ipcp_options *wo = &ipcp_wantoptions[f->unit];
- ipcp_options *go = &ipcp_gotoptions[f->unit];
-
- wo->req_addr = wo->neg_addr && ipcp_allowoptions[f->unit].neg_addr;
- if (wo->ouraddr == 0)
- wo->accept_local = 1;
- if (wo->hisaddr == 0)
- wo->accept_remote = 1;
- wo->req_dns1 = usepeerdns; /* Request DNS addresses from the peer */
- wo->req_dns2 = usepeerdns;
- *go = *wo;
- if (!ask_for_local)
- go->ouraddr = 0;
- if (ip_choose_hook)
- ip_choose_hook(&wo->hisaddr);
-}
-
-
-/*
- * ipcp_cilen - Return length of our CI.
- * Called by fsm_sconfreq, Send Configure Request.
- */
-static int
-ipcp_cilen(f)
- fsm *f;
-{
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- ipcp_options *wo = &ipcp_wantoptions[f->unit];
- ipcp_options *ho = &ipcp_hisoptions[f->unit];
-
-#define LENCIVJ(neg, old) (neg ? (old? CILEN_COMPRESS : CILEN_VJ) : 0)
-#define LENCIADDR(neg, old) (neg ? (old? CILEN_ADDRS : CILEN_ADDR) : 0)
-#define LENCIDNS(neg) (neg ? (CILEN_ADDR) : 0)
-
- /*
- * First see if we want to change our options to the old
- * forms because we have received old forms from the peer.
- */
- if (wo->neg_addr && !go->neg_addr && !go->old_addrs) {
- /* use the old style of address negotiation */
- go->neg_addr = 1;
- go->old_addrs = 1;
- }
- if (wo->neg_vj && !go->neg_vj && !go->old_vj) {
- /* try an older style of VJ negotiation */
- /* use the old style only if the peer did */
- if (ho->neg_vj && ho->old_vj) {
- go->neg_vj = 1;
- go->old_vj = 1;
- go->vj_protocol = ho->vj_protocol;
- }
- }
-
- return (LENCIADDR(go->neg_addr, go->old_addrs) +
- LENCIVJ(go->neg_vj, go->old_vj) +
- LENCIDNS(go->req_dns1) +
- LENCIDNS(go->req_dns2)) ;
-}
-
-
-/*
- * ipcp_addci - Add our desired CIs to a packet.
- * Called by fsm_sconfreq, Send Configure Request.
- */
-static void
-ipcp_addci(f, ucp, lenp)
- fsm *f;
- u_char *ucp;
- int *lenp;
-{
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- int len = *lenp;
-
-#define ADDCIVJ(opt, neg, val, old, maxslotindex, cflag) \
- if (neg) { \
- int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \
- if (len >= vjlen) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(vjlen, ucp); \
- PUTSHORT(val, ucp); \
- if (!old) { \
- PUTCHAR(maxslotindex, ucp); \
- PUTCHAR(cflag, ucp); \
- } \
- len -= vjlen; \
- } else \
- neg = 0; \
- }
-
-#define ADDCIADDR(opt, neg, old, val1, val2) \
- if (neg) { \
- int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \
- if (len >= addrlen) { \
- u_int32_t l; \
- PUTCHAR(opt, ucp); \
- PUTCHAR(addrlen, ucp); \
- l = ntohl(val1); \
- PUTLONG(l, ucp); \
- if (old) { \
- l = ntohl(val2); \
- PUTLONG(l, ucp); \
- } \
- len -= addrlen; \
- } else \
- neg = 0; \
- }
-
-#define ADDCIDNS(opt, neg, addr) \
- if (neg) { \
- if (len >= CILEN_ADDR) { \
- u_int32_t l; \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_ADDR, ucp); \
- l = ntohl(addr); \
- PUTLONG(l, ucp); \
- len -= CILEN_ADDR; \
- } else \
- neg = 0; \
- }
-
- ADDCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), go->neg_addr,
- go->old_addrs, go->ouraddr, go->hisaddr);
-
- ADDCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol, go->old_vj,
- go->maxslotindex, go->cflag);
-
- ADDCIDNS(CI_MS_DNS1, go->req_dns1, go->dnsaddr[0]);
-
- ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
-
- *lenp -= len;
-}
-
-
-/*
- * ipcp_ackci - Ack our CIs.
- * Called by fsm_rconfack, Receive Configure ACK.
- *
- * Returns:
- * 0 - Ack was bad.
- * 1 - Ack was good.
- */
-static int
-ipcp_ackci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- u_short cilen, citype, cishort;
- u_int32_t cilong;
- u_char cimaxslotindex, cicflag;
-
- /*
- * CIs must be in exactly the same order that we sent...
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-
-#define ACKCIVJ(opt, neg, val, old, maxslotindex, cflag) \
- if (neg) { \
- int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \
- if ((len -= vjlen) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != vjlen || \
- citype != opt) \
- goto bad; \
- GETSHORT(cishort, p); \
- if (cishort != val) \
- goto bad; \
- if (!old) { \
- GETCHAR(cimaxslotindex, p); \
- if (cimaxslotindex != maxslotindex) \
- goto bad; \
- GETCHAR(cicflag, p); \
- if (cicflag != cflag) \
- goto bad; \
- } \
- }
-
-#define ACKCIADDR(opt, neg, old, val1, val2) \
- if (neg) { \
- int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \
- u_int32_t l; \
- if ((len -= addrlen) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != addrlen || \
- citype != opt) \
- goto bad; \
- GETLONG(l, p); \
- cilong = htonl(l); \
- if (val1 != cilong) \
- goto bad; \
- if (old) { \
- GETLONG(l, p); \
- cilong = htonl(l); \
- if (val2 != cilong) \
- goto bad; \
- } \
- }
-
-#define ACKCIDNS(opt, neg, addr) \
- if (neg) { \
- u_int32_t l; \
- if ((len -= CILEN_ADDR) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_ADDR || citype != opt) \
- goto bad; \
- GETLONG(l, p); \
- cilong = htonl(l); \
- if (addr != cilong) \
- goto bad; \
- }
-
- ACKCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), go->neg_addr,
- go->old_addrs, go->ouraddr, go->hisaddr);
-
- ACKCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol, go->old_vj,
- go->maxslotindex, go->cflag);
-
- ACKCIDNS(CI_MS_DNS1, go->req_dns1, go->dnsaddr[0]);
-
- ACKCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- return (1);
-
-bad:
- IPCPDEBUG(("ipcp_ackci: received bad Ack!"));
- return (0);
-}
-
-/*
- * ipcp_nakci - Peer has sent a NAK for some of our CIs.
- * This should not modify any state if the Nak is bad
- * or if IPCP is in the OPENED state.
- * Calback from fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
- *
- * Returns:
- * 0 - Nak was bad.
- * 1 - Nak was good.
- */
-static int
-ipcp_nakci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- u_char cimaxslotindex, cicflag;
- u_char citype, cilen, *next;
- u_short cishort;
- u_int32_t ciaddr1, ciaddr2, l, cidnsaddr;
- ipcp_options no; /* options we've seen Naks for */
- ipcp_options try; /* options to request next time */
-
- BZERO(&no, sizeof(no));
- try = *go;
-
- /*
- * Any Nak'd CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define NAKCIADDR(opt, neg, old, code) \
- if (go->neg && \
- len >= (cilen = (old? CILEN_ADDRS: CILEN_ADDR)) && \
- p[1] == cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- GETLONG(l, p); \
- ciaddr1 = htonl(l); \
- if (old) { \
- GETLONG(l, p); \
- ciaddr2 = htonl(l); \
- no.old_addrs = 1; \
- } else \
- ciaddr2 = 0; \
- no.neg = 1; \
- code \
- }
-
-#define NAKCIVJ(opt, neg, code) \
- if (go->neg && \
- ((cilen = p[1]) == CILEN_COMPRESS || cilen == CILEN_VJ) && \
- len >= cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- no.neg = 1; \
- code \
- }
-
-#define NAKCIDNS(opt, neg, code) \
- if (go->neg && \
- ((cilen = p[1]) == CILEN_ADDR) && \
- len >= cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- GETLONG(l, p); \
- cidnsaddr = htonl(l); \
- no.neg = 1; \
- code \
- }
-
- /*
- * Accept the peer's idea of {our,his} address, if different
- * from our idea, only if the accept_{local,remote} flag is set.
- */
- NAKCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), neg_addr, go->old_addrs,
- if (go->accept_local && ciaddr1) { /* Do we know our address? */
- try.ouraddr = ciaddr1;
- }
- if (go->accept_remote && ciaddr2) { /* Does he know his? */
- try.hisaddr = ciaddr2;
- }
- );
-
- /*
- * Accept the peer's value of maxslotindex provided that it
- * is less than what we asked for. Turn off slot-ID compression
- * if the peer wants. Send old-style compress-type option if
- * the peer wants.
- */
- NAKCIVJ(CI_COMPRESSTYPE, neg_vj,
- if (cilen == CILEN_VJ) {
- GETCHAR(cimaxslotindex, p);
- GETCHAR(cicflag, p);
- if (cishort == IPCP_VJ_COMP) {
- try.old_vj = 0;
- if (cimaxslotindex < go->maxslotindex)
- try.maxslotindex = cimaxslotindex;
- if (!cicflag)
- try.cflag = 0;
- } else {
- try.neg_vj = 0;
- }
- } else {
- if (cishort == IPCP_VJ_COMP || cishort == IPCP_VJ_COMP_OLD) {
- try.old_vj = 1;
- try.vj_protocol = cishort;
- } else {
- try.neg_vj = 0;
- }
- }
- );
-
- NAKCIDNS(CI_MS_DNS1, req_dns1,
- try.dnsaddr[0] = cidnsaddr;
- );
-
- NAKCIDNS(CI_MS_DNS2, req_dns2,
- try.dnsaddr[1] = cidnsaddr;
- );
-
- /*
- * There may be remaining CIs, if the peer is requesting negotiation
- * on an option that we didn't include in our request packet.
- * If they want to negotiate about IP addresses, we comply.
- * If they want us to ask for compression, we refuse.
- */
- while (len > CILEN_VOID) {
- GETCHAR(citype, p);
- GETCHAR(cilen, p);
- if( (len -= cilen) < 0 )
- goto bad;
- next = p + cilen - 2;
-
- switch (citype) {
- case CI_COMPRESSTYPE:
- if (go->neg_vj || no.neg_vj ||
- (cilen != CILEN_VJ && cilen != CILEN_COMPRESS))
- goto bad;
- no.neg_vj = 1;
- break;
- case CI_ADDRS:
- if ((go->neg_addr && go->old_addrs) || no.old_addrs
- || cilen != CILEN_ADDRS)
- goto bad;
- try.neg_addr = 1;
- try.old_addrs = 1;
- GETLONG(l, p);
- ciaddr1 = htonl(l);
- if (ciaddr1 && go->accept_local)
- try.ouraddr = ciaddr1;
- GETLONG(l, p);
- ciaddr2 = htonl(l);
- if (ciaddr2 && go->accept_remote)
- try.hisaddr = ciaddr2;
- no.old_addrs = 1;
- break;
- case CI_ADDR:
- if (go->neg_addr || no.neg_addr || cilen != CILEN_ADDR)
- goto bad;
- try.old_addrs = 0;
- GETLONG(l, p);
- ciaddr1 = htonl(l);
- if (ciaddr1 && go->accept_local)
- try.ouraddr = ciaddr1;
- if (try.ouraddr != 0)
- try.neg_addr = 1;
- no.neg_addr = 1;
- break;
- }
- p = next;
- }
-
- /*
- * OK, the Nak is good. Now we can update state.
- * If there are any remaining options, we ignore them.
- */
- if (f->state != OPENED)
- *go = try;
-
- return 1;
-
-bad:
- IPCPDEBUG(("ipcp_nakci: received bad Nak!"));
- return 0;
-}
-
-
-/*
- * ipcp_rejci - Reject some of our CIs.
- * Callback from fsm_rconfnakrej.
- */
-static int
-ipcp_rejci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- u_char cimaxslotindex, ciflag, cilen;
- u_short cishort;
- u_int32_t cilong;
- ipcp_options try; /* options to request next time */
-
- try = *go;
- /*
- * Any Rejected CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define REJCIADDR(opt, neg, old, val1, val2) \
- if (go->neg && \
- len >= (cilen = old? CILEN_ADDRS: CILEN_ADDR) && \
- p[1] == cilen && \
- p[0] == opt) { \
- u_int32_t l; \
- len -= cilen; \
- INCPTR(2, p); \
- GETLONG(l, p); \
- cilong = htonl(l); \
- /* Check rejected value. */ \
- if (cilong != val1) \
- goto bad; \
- if (old) { \
- GETLONG(l, p); \
- cilong = htonl(l); \
- /* Check rejected value. */ \
- if (cilong != val2) \
- goto bad; \
- } \
- try.neg = 0; \
- }
-
-#define REJCIVJ(opt, neg, val, old, maxslot, cflag) \
- if (go->neg && \
- p[1] == (old? CILEN_COMPRESS : CILEN_VJ) && \
- len >= p[1] && \
- p[0] == opt) { \
- len -= p[1]; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- /* Check rejected value. */ \
- if (cishort != val) \
- goto bad; \
- if (!old) { \
- GETCHAR(cimaxslotindex, p); \
- if (cimaxslotindex != maxslot) \
- goto bad; \
- GETCHAR(ciflag, p); \
- if (ciflag != cflag) \
- goto bad; \
- } \
- try.neg = 0; \
- }
-
-#define REJCIDNS(opt, neg, dnsaddr) \
- if (go->neg && \
- ((cilen = p[1]) == CILEN_ADDR) && \
- len >= cilen && \
- p[0] == opt) { \
- u_int32_t l; \
- len -= cilen; \
- INCPTR(2, p); \
- GETLONG(l, p); \
- cilong = htonl(l); \
- /* Check rejected value. */ \
- if (cilong != dnsaddr) \
- goto bad; \
- try.neg = 0; \
- }
-
-
- REJCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), neg_addr,
- go->old_addrs, go->ouraddr, go->hisaddr);
-
- REJCIVJ(CI_COMPRESSTYPE, neg_vj, go->vj_protocol, go->old_vj,
- go->maxslotindex, go->cflag);
-
- REJCIDNS(CI_MS_DNS1, req_dns1, go->dnsaddr[0]);
-
- REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- /*
- * Now we can update state.
- */
- if (f->state != OPENED)
- *go = try;
- return 1;
-
-bad:
- IPCPDEBUG(("ipcp_rejci: received bad Reject!"));
- return 0;
-}
-
-
-/*
- * ipcp_reqci - Check the peer's requested CIs and send appropriate response.
- * Callback from fsm_rconfreq, Receive Configure Request
- *
- * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
- * appropriately. If reject_if_disagree is non-zero, doesn't return
- * CONFNAK; returns CONFREJ if it can't return CONFACK.
- */
-static int
-ipcp_reqci(f, inp, len, reject_if_disagree)
- fsm *f;
- u_char *inp; /* Requested CIs */
- int *len; /* Length of requested CIs */
- int reject_if_disagree;
-{
- ipcp_options *wo = &ipcp_wantoptions[f->unit];
- ipcp_options *ho = &ipcp_hisoptions[f->unit];
- ipcp_options *ao = &ipcp_allowoptions[f->unit];
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- u_char *cip, *next; /* Pointer to current and next CIs */
- u_short cilen, citype; /* Parsed len, type */
- u_short cishort; /* Parsed short value */
- u_int32_t tl, ciaddr1, ciaddr2;/* Parsed address values */
- int rc = CONFACK; /* Final packet return code */
- int orc; /* Individual option return code */
- u_char *p; /* Pointer to next char to parse */
- u_char *ucp = inp; /* Pointer to current output char */
- int l = *len; /* Length left */
- u_char maxslotindex, cflag;
- int d;
-
- /*
- * Reset all his options.
- */
- BZERO(ho, sizeof(*ho));
-
- /*
- * Process all his options.
- */
- next = inp;
- while (l) {
- orc = CONFACK; /* Assume success */
- cip = p = next; /* Remember begining of CI */
- if (l < 2 || /* Not enough data for CI header or */
- p[1] < 2 || /* CI length too small or */
- p[1] > l) { /* CI length too big? */
- IPCPDEBUG(("ipcp_reqci: bad CI length!"));
- orc = CONFREJ; /* Reject bad CI */
- cilen = l; /* Reject till end of packet */
- l = 0; /* Don't loop again */
- goto endswitch;
- }
- GETCHAR(citype, p); /* Parse CI type */
- GETCHAR(cilen, p); /* Parse CI length */
- l -= cilen; /* Adjust remaining length */
- next += cilen; /* Step to next CI */
-
- switch (citype) { /* Check CI type */
- case CI_ADDRS:
- if (!ao->neg_addr ||
- cilen != CILEN_ADDRS) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
-
- /*
- * If he has no address, or if we both have his address but
- * disagree about it, then NAK it with our idea.
- * In particular, if we don't know his address, but he does,
- * then accept it.
- */
- GETLONG(tl, p); /* Parse source address (his) */
- ciaddr1 = htonl(tl);
- if (ciaddr1 != wo->hisaddr
- && (ciaddr1 == 0 || !wo->accept_remote)) {
- orc = CONFNAK;
- if (!reject_if_disagree) {
- DECPTR(sizeof(u_int32_t), p);
- tl = ntohl(wo->hisaddr);
- PUTLONG(tl, p);
- }
- } else if (ciaddr1 == 0 && wo->hisaddr == 0) {
- /*
- * If neither we nor he knows his address, reject the option.
- */
- orc = CONFREJ;
- wo->req_addr = 0; /* don't NAK with 0.0.0.0 later */
- break;
- }
-
- /*
- * If he doesn't know our address, or if we both have our address
- * but disagree about it, then NAK it with our idea.
- */
- GETLONG(tl, p); /* Parse desination address (ours) */
- ciaddr2 = htonl(tl);
- if (ciaddr2 != wo->ouraddr) {
- if (ciaddr2 == 0 || !wo->accept_local) {
- orc = CONFNAK;
- if (!reject_if_disagree) {
- DECPTR(sizeof(u_int32_t), p);
- tl = ntohl(wo->ouraddr);
- PUTLONG(tl, p);
- }
- } else {
- go->ouraddr = ciaddr2; /* accept peer's idea */
- }
- }
-
- ho->neg_addr = 1;
- ho->old_addrs = 1;
- ho->hisaddr = ciaddr1;
- ho->ouraddr = ciaddr2;
- break;
-
- case CI_ADDR:
- if (!ao->neg_addr ||
- cilen != CILEN_ADDR) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
-
- /*
- * If he has no address, or if we both have his address but
- * disagree about it, then NAK it with our idea.
- * In particular, if we don't know his address, but he does,
- * then accept it.
- */
- GETLONG(tl, p); /* Parse source address (his) */
- ciaddr1 = htonl(tl);
- if (ciaddr1 != wo->hisaddr
- && (ciaddr1 == 0 || !wo->accept_remote)) {
- orc = CONFNAK;
- if (!reject_if_disagree) {
- DECPTR(sizeof(u_int32_t), p);
- tl = ntohl(wo->hisaddr);
- PUTLONG(tl, p);
- }
- } else if (ciaddr1 == 0 && wo->hisaddr == 0) {
- /*
- * Don't ACK an address of 0.0.0.0 - reject it instead.
- */
- orc = CONFREJ;
- wo->req_addr = 0; /* don't NAK with 0.0.0.0 later */
- break;
- }
-
- ho->neg_addr = 1;
- ho->hisaddr = ciaddr1;
- break;
-
- case CI_MS_DNS1:
- case CI_MS_DNS2:
- /* Microsoft primary or secondary DNS request */
- d = citype == CI_MS_DNS2;
-
- /* If we do not have a DNS address then we cannot send it */
- if (ao->dnsaddr[d] == 0 ||
- cilen != CILEN_ADDR) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
- GETLONG(tl, p);
- if (htonl(tl) != ao->dnsaddr[d]) {
- DECPTR(sizeof(u_int32_t), p);
- tl = ntohl(ao->dnsaddr[d]);
- PUTLONG(tl, p);
- orc = CONFNAK;
- }
- break;
-
- case CI_MS_WINS1:
- case CI_MS_WINS2:
- /* Microsoft primary or secondary WINS request */
- d = citype == CI_MS_WINS2;
-
- /* If we do not have a DNS address then we cannot send it */
- if (ao->winsaddr[d] == 0 ||
- cilen != CILEN_ADDR) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
- GETLONG(tl, p);
- if (htonl(tl) != ao->winsaddr[d]) {
- DECPTR(sizeof(u_int32_t), p);
- tl = ntohl(ao->winsaddr[d]);
- PUTLONG(tl, p);
- orc = CONFNAK;
- }
- break;
-
- case CI_COMPRESSTYPE:
- if (!ao->neg_vj ||
- (cilen != CILEN_VJ && cilen != CILEN_COMPRESS)) {
- orc = CONFREJ;
- break;
- }
- GETSHORT(cishort, p);
-
- if (!(cishort == IPCP_VJ_COMP ||
- (cishort == IPCP_VJ_COMP_OLD && cilen == CILEN_COMPRESS))) {
- orc = CONFREJ;
- break;
- }
-
- ho->neg_vj = 1;
- ho->vj_protocol = cishort;
- if (cilen == CILEN_VJ) {
- GETCHAR(maxslotindex, p);
- if (maxslotindex > ao->maxslotindex) {
- orc = CONFNAK;
- if (!reject_if_disagree){
- DECPTR(1, p);
- PUTCHAR(ao->maxslotindex, p);
- }
- }
- GETCHAR(cflag, p);
- if (cflag && !ao->cflag) {
- orc = CONFNAK;
- if (!reject_if_disagree){
- DECPTR(1, p);
- PUTCHAR(wo->cflag, p);
- }
- }
- ho->maxslotindex = maxslotindex;
- ho->cflag = cflag;
- } else {
- ho->old_vj = 1;
- ho->maxslotindex = MAX_STATES - 1;
- ho->cflag = 1;
- }
- break;
-
- default:
- orc = CONFREJ;
- break;
- }
-endswitch:
- if (orc == CONFACK && /* Good CI */
- rc != CONFACK) /* but prior CI wasnt? */
- continue; /* Don't send this one */
-
- if (orc == CONFNAK) { /* Nak this CI? */
- if (reject_if_disagree) /* Getting fed up with sending NAKs? */
- orc = CONFREJ; /* Get tough if so */
- else {
- if (rc == CONFREJ) /* Rejecting prior CI? */
- continue; /* Don't send this one */
- if (rc == CONFACK) { /* Ack'd all prior CIs? */
- rc = CONFNAK; /* Not anymore... */
- ucp = inp; /* Backup */
- }
- }
- }
-
- if (orc == CONFREJ && /* Reject this CI */
- rc != CONFREJ) { /* but no prior ones? */
- rc = CONFREJ;
- ucp = inp; /* Backup */
- }
-
- /* Need to move CI? */
- if (ucp != cip)
- BCOPY(cip, ucp, cilen); /* Move it */
-
- /* Update output pointer */
- INCPTR(cilen, ucp);
- }
-
- /*
- * If we aren't rejecting this packet, and we want to negotiate
- * their address, and they didn't send their address, then we
- * send a NAK with a CI_ADDR option appended. We assume the
- * input buffer is long enough that we can append the extra
- * option safely.
- */
- if (rc != CONFREJ && !ho->neg_addr &&
- wo->req_addr && !reject_if_disagree) {
- if (rc == CONFACK) {
- rc = CONFNAK;
- ucp = inp; /* reset pointer */
- wo->req_addr = 0; /* don't ask again */
- }
- PUTCHAR(CI_ADDR, ucp);
- PUTCHAR(CILEN_ADDR, ucp);
- tl = ntohl(wo->hisaddr);
- PUTLONG(tl, ucp);
- }
-
- *len = ucp - inp; /* Compute output length */
- IPCPDEBUG(("ipcp: returning Configure-%s", CODENAME(rc)));
- return (rc); /* Return final code */
-}
-
-
-/*
- * ip_check_options - check that any IP-related options are OK,
- * and assign appropriate defaults.
- */
-static void
-ip_check_options()
-{
- struct hostent *hp;
- u_int32_t local;
- ipcp_options *wo = &ipcp_wantoptions[0];
-
- /*
- * Default our local IP address based on our hostname.
- * If local IP address already given, don't bother.
- */
- if (wo->ouraddr == 0 && !disable_defaultip) {
- /*
- * Look up our hostname (possibly with domain name appended)
- * and take the first IP address as our local IP address.
- * If there isn't an IP address for our hostname, too bad.
- */
- wo->accept_local = 1; /* don't insist on this default value */
- if ((hp = gethostbyname(hostname)) != NULL) {
- local = *(u_int32_t *)hp->h_addr;
- if (local != 0 && !bad_ip_adrs(local))
- wo->ouraddr = local;
- }
- }
- ask_for_local = wo->ouraddr != 0 || !disable_defaultip;
-}
-
-
-/*
- * ip_demand_conf - configure the interface as though
- * IPCP were up, for use with dial-on-demand.
- */
-static int
-ip_demand_conf(u)
- int u;
-{
- ipcp_options *wo = &ipcp_wantoptions[u];
-
- if (wo->hisaddr == 0) {
- /* make up an arbitrary address for the peer */
- wo->hisaddr = htonl(0x0a707070 + ifunit);
- wo->accept_remote = 1;
- }
- if (wo->ouraddr == 0) {
- /* make up an arbitrary address for us */
- wo->ouraddr = htonl(0x0a404040 + ifunit);
- wo->accept_local = 1;
- ask_for_local = 0; /* don't tell the peer this address */
- }
- if (!sifaddr(u, wo->ouraddr, wo->hisaddr, GetMask(wo->ouraddr)))
- return 0;
- if (!sifup(u))
- return 0;
- if (!sifnpmode(u, PPP_IP, NPMODE_QUEUE))
- return 0;
- if (wo->default_route)
- if (sifdefaultroute(u, wo->ouraddr, wo->hisaddr))
- default_route_set[u] = 1;
- if (wo->proxy_arp)
- if (sifproxyarp(u, wo->hisaddr))
- proxy_arp_set[u] = 1;
-
- notice("local IP address %I", wo->ouraddr);
- notice("remote IP address %I", wo->hisaddr);
-
- return 1;
-}
-
-
-/*
- * ipcp_up - IPCP has come UP.
- *
- * Configure the IP network interface appropriately and bring it up.
- */
-static void
-ipcp_up(f)
- fsm *f;
-{
- u_int32_t mask;
- ipcp_options *ho = &ipcp_hisoptions[f->unit];
- ipcp_options *go = &ipcp_gotoptions[f->unit];
- ipcp_options *wo = &ipcp_wantoptions[f->unit];
-
- IPCPDEBUG(("ipcp: up"));
-
- /*
- * We must have a non-zero IP address for both ends of the link.
- */
- if (!ho->neg_addr)
- ho->hisaddr = wo->hisaddr;
-
- if (go->ouraddr == 0) {
- error("Could not determine local IP address");
- ipcp_close(f->unit, "Could not determine local IP address");
- return;
- }
- if (ho->hisaddr == 0) {
- ho->hisaddr = htonl(0x0a404040 + ifunit);
- warn("Could not determine remote IP address: defaulting to %I",
- ho->hisaddr);
- }
- script_setenv("IPLOCAL", ip_ntoa(go->ouraddr), 0);
- script_setenv("IPREMOTE", ip_ntoa(ho->hisaddr), 1);
-
- if (usepeerdns && (go->dnsaddr[0] || go->dnsaddr[1])) {
- script_setenv("USEPEERDNS", "1", 0);
- if (go->dnsaddr[0])
- script_setenv("DNS1", ip_ntoa(go->dnsaddr[0]), 0);
- if (go->dnsaddr[1])
- script_setenv("DNS2", ip_ntoa(go->dnsaddr[1]), 0);
- create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
- }
-
- /*
- * Check that the peer is allowed to use the IP address it wants.
- */
- if (!auth_ip_addr(f->unit, ho->hisaddr)) {
- error("Peer is not authorized to use remote address %I", ho->hisaddr);
- ipcp_close(f->unit, "Unauthorized remote IP address");
- return;
- }
-
- /* set tcp compression */
- sifvjcomp(f->unit, ho->neg_vj, ho->cflag, ho->maxslotindex);
-
- /*
- * If we are doing dial-on-demand, the interface is already
- * configured, so we put out any saved-up packets, then set the
- * interface to pass IP packets.
- */
- if (demand) {
- if (go->ouraddr != wo->ouraddr || ho->hisaddr != wo->hisaddr) {
- ipcp_clear_addrs(f->unit, wo->ouraddr, wo->hisaddr);
- if (go->ouraddr != wo->ouraddr) {
- warn("Local IP address changed to %I", go->ouraddr);
- script_setenv("OLDIPLOCAL", ip_ntoa(wo->ouraddr), 0);
- wo->ouraddr = go->ouraddr;
- } else
- script_unsetenv("OLDIPLOCAL");
- if (ho->hisaddr != wo->hisaddr) {
- warn("Remote IP address changed to %I", ho->hisaddr);
- script_setenv("OLDIPREMOTE", ip_ntoa(wo->hisaddr), 0);
- wo->hisaddr = ho->hisaddr;
- } else
- script_unsetenv("OLDIPREMOTE");
-
- /* Set the interface to the new addresses */
- mask = GetMask(go->ouraddr);
- if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
- if (debug)
- warn("Interface configuration failed");
- ipcp_close(f->unit, "Interface configuration failed");
- return;
- }
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
- if (ipcp_wantoptions[f->unit].proxy_arp)
- if (sifproxyarp(f->unit, ho->hisaddr))
- proxy_arp_set[f->unit] = 1;
-
- }
- demand_rexmit(PPP_IP);
- sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
-
- } else {
- /*
- * Set IP addresses and (if specified) netmask.
- */
- mask = GetMask(go->ouraddr);
-
-#if !(defined(SVR4) && (defined(SNI) || defined(__USLC__)))
- if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
- if (debug)
- warn("Interface configuration failed");
- ipcp_close(f->unit, "Interface configuration failed");
- return;
- }
-#endif
-
- /* bring the interface up for IP */
- if (!sifup(f->unit)) {
- if (debug)
- warn("Interface failed to come up");
- ipcp_close(f->unit, "Interface configuration failed");
- return;
- }
-
-#if (defined(SVR4) && (defined(SNI) || defined(__USLC__)))
- if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
- if (debug)
- warn("Interface configuration failed");
- ipcp_close(f->unit, "Interface configuration failed");
- return;
- }
-#endif
- sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
-
- /* assign a default route through the interface if required */
- if (ipcp_wantoptions[f->unit].default_route)
- if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
- default_route_set[f->unit] = 1;
-
- /* Make a proxy ARP entry if requested. */
- if (ipcp_wantoptions[f->unit].proxy_arp)
- if (sifproxyarp(f->unit, ho->hisaddr))
- proxy_arp_set[f->unit] = 1;
-
- ipcp_wantoptions[0].ouraddr = go->ouraddr;
-
- notice("local IP address %I", go->ouraddr);
- notice("remote IP address %I", ho->hisaddr);
- if (go->dnsaddr[0])
- notice("primary DNS address %I", go->dnsaddr[0]);
- if (go->dnsaddr[1])
- notice("secondary DNS address %I", go->dnsaddr[1]);
- }
-
- np_up(f->unit, PPP_IP);
- ipcp_is_up = 1;
-
- if (ip_up_hook)
- ip_up_hook();
-
- /*
- * Execute the ip-up script, like this:
- * /etc/ppp/ip-up interface tty speed local-IP remote-IP
- */
- if (ipcp_script_state == s_down && ipcp_script_pid == 0) {
- ipcp_script_state = s_up;
- ipcp_script(_PATH_IPUP);
- }
-}
-
-
-/*
- * ipcp_down - IPCP has gone DOWN.
- *
- * Take the IP network interface down, clear its addresses
- * and delete routes through it.
- */
-static void
-ipcp_down(f)
- fsm *f;
-{
- IPCPDEBUG(("ipcp: down"));
- /* XXX a bit IPv4-centric here, we only need to get the stats
- * before the interface is marked down. */
- update_link_stats(f->unit);
- if (ip_down_hook)
- ip_down_hook();
- if (ipcp_is_up) {
- ipcp_is_up = 0;
- np_down(f->unit, PPP_IP);
- }
- sifvjcomp(f->unit, 0, 0, 0);
-
- /*
- * If we are doing dial-on-demand, set the interface
- * to queue up outgoing packets (for now).
- */
- if (demand) {
- sifnpmode(f->unit, PPP_IP, NPMODE_QUEUE);
- } else {
- sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
- sifdown(f->unit);
- ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
- ipcp_hisoptions[f->unit].hisaddr);
- }
-
- /* Execute the ip-down script */
- if (ipcp_script_state == s_up && ipcp_script_pid == 0) {
- ipcp_script_state = s_down;
- ipcp_script(_PATH_IPDOWN);
- }
-}
-
-
-/*
- * ipcp_clear_addrs() - clear the interface addresses, routes,
- * proxy arp entries, etc.
- */
-static void
-ipcp_clear_addrs(unit, ouraddr, hisaddr)
- int unit;
- u_int32_t ouraddr; /* local address */
- u_int32_t hisaddr; /* remote address */
-{
- if (proxy_arp_set[unit]) {
- cifproxyarp(unit, hisaddr);
- proxy_arp_set[unit] = 0;
- }
- if (default_route_set[unit]) {
- cifdefaultroute(unit, ouraddr, hisaddr);
- default_route_set[unit] = 0;
- }
- cifaddr(unit, ouraddr, hisaddr);
-}
-
-
-/*
- * ipcp_finished - possibly shut down the lower layers.
- */
-static void
-ipcp_finished(f)
- fsm *f;
-{
- np_finished(f->unit, PPP_IP);
-}
-
-
-/*
- * ipcp_script_done - called when the ip-up or ip-down script
- * has finished.
- */
-static void
-ipcp_script_done(arg)
- void *arg;
-{
- ipcp_script_pid = 0;
- switch (ipcp_script_state) {
- case s_up:
- if (ipcp_fsm[0].state != OPENED) {
- ipcp_script_state = s_down;
- ipcp_script(_PATH_IPDOWN);
- }
- break;
- case s_down:
- if (ipcp_fsm[0].state == OPENED) {
- ipcp_script_state = s_up;
- ipcp_script(_PATH_IPUP);
- }
- break;
- }
-}
-
-
-/*
- * ipcp_script - Execute a script with arguments
- * interface-name tty-name speed local-IP remote-IP.
- */
-static void
-ipcp_script(script)
- char *script;
-{
- char strspeed[32], strlocal[32], strremote[32];
- char *argv[8];
-
- slprintf(strspeed, sizeof(strspeed), "%d", baud_rate);
- slprintf(strlocal, sizeof(strlocal), "%I", ipcp_gotoptions[0].ouraddr);
- slprintf(strremote, sizeof(strremote), "%I", ipcp_hisoptions[0].hisaddr);
-
- argv[0] = script;
- argv[1] = ifname;
- argv[2] = devnam;
- argv[3] = strspeed;
- argv[4] = strlocal;
- argv[5] = strremote;
- argv[6] = ipparam;
- argv[7] = NULL;
- ipcp_script_pid = run_program(script, argv, 0, ipcp_script_done, NULL);
-}
-
-/*
- * create_resolv - create the replacement resolv.conf file
- */
-static void
-create_resolv(peerdns1, peerdns2)
- u_int32_t peerdns1, peerdns2;
-{
- FILE *f;
-
- f = fopen(_PATH_RESOLV, "w");
- if (f == NULL) {
- error("Failed to create %s: %m", _PATH_RESOLV);
- return;
- }
-
- if (peerdns1)
- fprintf(f, "nameserver %s\n", ip_ntoa(peerdns1));
-
- if (peerdns2)
- fprintf(f, "nameserver %s\n", ip_ntoa(peerdns2));
-
- if (ferror(f))
- error("Write failed to %s: %m", _PATH_RESOLV);
-
- fclose(f);
-}
-
-/*
- * ipcp_printpkt - print the contents of an IPCP packet.
- */
-static char *ipcp_codenames[] = {
- "ConfReq", "ConfAck", "ConfNak", "ConfRej",
- "TermReq", "TermAck", "CodeRej"
-};
-
-static int
-ipcp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len, olen;
- u_char *pstart, *optend;
- u_short cishort;
- u_int32_t cilong;
-
- if (plen < HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(ipcp_codenames) / sizeof(char *))
- printer(arg, " %s", ipcp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- /* print option list */
- while (len >= 2) {
- GETCHAR(code, p);
- GETCHAR(olen, p);
- p -= 2;
- if (olen < 2 || olen > len) {
- break;
- }
- printer(arg, " <");
- len -= olen;
- optend = p + olen;
- switch (code) {
- case CI_ADDRS:
- if (olen == CILEN_ADDRS) {
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "addrs %I", htonl(cilong));
- GETLONG(cilong, p);
- printer(arg, " %I", htonl(cilong));
- }
- break;
- case CI_COMPRESSTYPE:
- if (olen >= CILEN_COMPRESS) {
- p += 2;
- GETSHORT(cishort, p);
- printer(arg, "compress ");
- switch (cishort) {
- case IPCP_VJ_COMP:
- printer(arg, "VJ");
- break;
- case IPCP_VJ_COMP_OLD:
- printer(arg, "old-VJ");
- break;
- default:
- printer(arg, "0x%x", cishort);
- }
- }
- break;
- case CI_ADDR:
- if (olen == CILEN_ADDR) {
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "addr %I", htonl(cilong));
- }
- break;
- case CI_MS_DNS1:
- case CI_MS_DNS2:
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "ms-dns%d %I", code - CI_MS_DNS1 + 1,
- htonl(cilong));
- break;
- case CI_MS_WINS1:
- case CI_MS_WINS2:
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "ms-wins %I", htonl(cilong));
- break;
- }
- while (p < optend) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
- printer(arg, ">");
- }
- break;
-
- case TERMACK:
- case TERMREQ:
- if (len > 0 && *p >= ' ' && *p < 0x7f) {
- printer(arg, " ");
- print_string((char *)p, len, printer, arg);
- p += len;
- len = 0;
- }
- break;
- }
-
- /* print the rest of the bytes in the packet */
- for (; len > 0; --len) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
-
- return p - pstart;
-}
-
-/*
- * ip_active_pkt - see if this IP packet is worth bringing the link up for.
- * We don't bring the link up for IP fragments or for TCP FIN packets
- * with no data.
- */
-#define IP_HDRLEN 20 /* bytes */
-#define IP_OFFMASK 0x1fff
-// #define IPPROTO_TCP 6
-#define TCP_HDRLEN 20
-#define TH_FIN 0x01
-
-/*
- * We use these macros because the IP header may be at an odd address,
- * and some compilers might use word loads to get th_off or ip_hl.
- */
-
-#define net_short(x) (((x)[0] << 8) + (x)[1])
-#define get_iphl(x) (((unsigned char *)(x))[0] & 0xF)
-#define get_ipoff(x) net_short((unsigned char *)(x) + 6)
-#define get_ipproto(x) (((unsigned char *)(x))[9])
-#define get_tcpoff(x) (((unsigned char *)(x))[12] >> 4)
-#define get_tcpflags(x) (((unsigned char *)(x))[13])
-
-static int
-ip_active_pkt(pkt, len)
- u_char *pkt;
- int len;
-{
- u_char *tcp;
- int hlen;
-
- len -= PPP_HDRLEN;
- pkt += PPP_HDRLEN;
- if (len < IP_HDRLEN)
- return 0;
- if ((get_ipoff(pkt) & IP_OFFMASK) != 0)
- return 0;
- if (get_ipproto(pkt) != IPPROTO_TCP)
- return 1;
- hlen = get_iphl(pkt) * 4;
- if (len < hlen + TCP_HDRLEN)
- return 0;
- tcp = pkt + hlen;
- if ((get_tcpflags(tcp) & TH_FIN) != 0 && len == hlen + get_tcpoff(tcp) * 4)
- return 0;
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/ipcp.h b/mdk-stage1/ppp/pppd/ipcp.h
deleted file mode 100644
index 8c5aca861..000000000
--- a/mdk-stage1/ppp/pppd/ipcp.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * ipcp.h - IP Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Options.
- */
-#define CI_ADDRS 1 /* IP Addresses */
-#define CI_COMPRESSTYPE 2 /* Compression Type */
-#define CI_ADDR 3
-
-#define CI_MS_DNS1 129 /* Primary DNS value */
-#define CI_MS_WINS1 130 /* Primary WINS value */
-#define CI_MS_DNS2 131 /* Secondary DNS value */
-#define CI_MS_WINS2 132 /* Secondary WINS value */
-
-#define MAX_STATES 16 /* from slcompress.h */
-
-#define IPCP_VJMODE_OLD 1 /* "old" mode (option # = 0x0037) */
-#define IPCP_VJMODE_RFC1172 2 /* "old-rfc"mode (option # = 0x002d) */
-#define IPCP_VJMODE_RFC1332 3 /* "new-rfc"mode (option # = 0x002d, */
- /* maxslot and slot number compression) */
-
-#define IPCP_VJ_COMP 0x002d /* current value for VJ compression option*/
-#define IPCP_VJ_COMP_OLD 0x0037 /* "old" (i.e, broken) value for VJ */
- /* compression option*/
-
-typedef struct ipcp_options {
- bool neg_addr; /* Negotiate IP Address? */
- bool old_addrs; /* Use old (IP-Addresses) option? */
- bool req_addr; /* Ask peer to send IP address? */
- bool default_route; /* Assign default route through interface? */
- bool proxy_arp; /* Make proxy ARP entry for peer? */
- bool neg_vj; /* Van Jacobson Compression? */
- bool old_vj; /* use old (short) form of VJ option? */
- bool accept_local; /* accept peer's value for ouraddr */
- bool accept_remote; /* accept peer's value for hisaddr */
- bool req_dns1; /* Ask peer to send primary DNS address? */
- bool req_dns2; /* Ask peer to send secondary DNS address? */
- int vj_protocol; /* protocol value to use in VJ option */
- int maxslotindex; /* values for RFC1332 VJ compression neg. */
- bool cflag;
- u_int32_t ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */
- u_int32_t dnsaddr[2]; /* Primary and secondary MS DNS entries */
- u_int32_t winsaddr[2]; /* Primary and secondary MS WINS entries */
-} ipcp_options;
-
-extern fsm ipcp_fsm[];
-extern ipcp_options ipcp_wantoptions[];
-extern ipcp_options ipcp_gotoptions[];
-extern ipcp_options ipcp_allowoptions[];
-extern ipcp_options ipcp_hisoptions[];
-
-char *ip_ntoa __P((u_int32_t));
-
-extern struct protent ipcp_protent;
diff --git a/mdk-stage1/ppp/pppd/ipv6cp.c b/mdk-stage1/ppp/pppd/ipv6cp.c
deleted file mode 100644
index 54ff7d7d8..000000000
--- a/mdk-stage1/ppp/pppd/ipv6cp.c
+++ /dev/null
@@ -1,1512 +0,0 @@
-/*
- ipv6cp.c - PPP IPV6 Control Protocol.
- Copyright (C) 1999 Tommi Komulainen <Tommi.Komulainen@iki.fi>
-
- Redistribution and use in source and binary forms are permitted
- provided that the above copyright notice and this paragraph are
- duplicated in all such forms. The name of the author may not be
- used to endorse or promote products derived from this software
- without specific prior written permission.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-*/
-
-/* Original version, based on RFC2023 :
-
- Copyright (c) 1995, 1996, 1997 Francis.Dupont@inria.fr, INRIA Rocquencourt,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Copyright (c) 1998, 1999 Francis.Dupont@inria.fr, GIE DYADE,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Ce travail a été fait au sein du GIE DYADE (Groupement d'Intérêt
- Économique ayant pour membres BULL S.A. et l'INRIA).
-
- Ce logiciel informatique est disponible aux conditions
- usuelles dans la recherche, c'est-à-dire qu'il peut
- être utilisé, copié, modifié, distribué à l'unique
- condition que ce texte soit conservé afin que
- l'origine de ce logiciel soit reconnue.
-
- Le nom de l'Institut National de Recherche en Informatique
- et en Automatique (INRIA), de l'IMAG, ou d'une personne morale
- ou physique ayant participé à l'élaboration de ce logiciel ne peut
- être utilisé sans son accord préalable explicite.
-
- Ce logiciel est fourni tel quel sans aucune garantie,
- support ou responsabilité d'aucune sorte.
- Ce logiciel est dérivé de sources d'origine
- "University of California at Berkeley" et
- "Digital Equipment Corporation" couvertes par des copyrights.
-
- L'Institut d'Informatique et de Mathématiques Appliquées de Grenoble (IMAG)
- est une fédération d'unités mixtes de recherche du CNRS, de l'Institut National
- Polytechnique de Grenoble et de l'Université Joseph Fourier regroupant
- sept laboratoires dont le laboratoire Logiciels, Systèmes, Réseaux (LSR).
-
- This work has been done in the context of GIE DYADE (joint R & D venture
- between BULL S.A. and INRIA).
-
- This software is available with usual "research" terms
- with the aim of retain credits of the software.
- Permission to use, copy, modify and distribute this software for any
- purpose and without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies,
- and the name of INRIA, IMAG, or any contributor not be used in advertising
- or publicity pertaining to this material without the prior explicit
- permission. The software is provided "as is" without any
- warranties, support or liabilities of any kind.
- This software is derived from source code from
- "University of California at Berkeley" and
- "Digital Equipment Corporation" protected by copyrights.
-
- Grenoble's Institute of Computer Science and Applied Mathematics (IMAG)
- is a federation of seven research units funded by the CNRS, National
- Polytechnic Institute of Grenoble and University Joseph Fourier.
- The research unit in Software, Systems, Networks (LSR) is member of IMAG.
-*/
-
-/*
- * Derived from :
- *
- *
- * ipcp.c - PPP IP Control Protocol.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- *
- * Proxy Neighbour Discovery.
- *
- * Better defines for selecting the ordering of
- * interface up / set address. (currently checks for __linux__,
- * since SVR4 && (SNI || __USLC__) didn't work properly)
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <netdb.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipcp.h"
-#include "ipv6cp.h"
-#include "magic.h"
-#include "pathnames.h"
-
-static const char rcsid[] = RCSID;
-
-/* global vars */
-ipv6cp_options ipv6cp_wantoptions[NUM_PPP]; /* Options that we want to request */
-ipv6cp_options ipv6cp_gotoptions[NUM_PPP]; /* Options that peer ack'd */
-ipv6cp_options ipv6cp_allowoptions[NUM_PPP]; /* Options we allow peer to request */
-ipv6cp_options ipv6cp_hisoptions[NUM_PPP]; /* Options that we ack'd */
-int no_ifaceid_neg = 0;
-
-/* local vars */
-static int ipv6cp_is_up;
-
-/*
- * Callbacks for fsm code. (CI = Configuration Information)
- */
-static void ipv6cp_resetci __P((fsm *)); /* Reset our CI */
-static int ipv6cp_cilen __P((fsm *)); /* Return length of our CI */
-static void ipv6cp_addci __P((fsm *, u_char *, int *)); /* Add our CI */
-static int ipv6cp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
-static int ipv6cp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
-static int ipv6cp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
-static int ipv6cp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */
-static void ipv6cp_up __P((fsm *)); /* We're UP */
-static void ipv6cp_down __P((fsm *)); /* We're DOWN */
-static void ipv6cp_finished __P((fsm *)); /* Don't need lower layer */
-
-fsm ipv6cp_fsm[NUM_PPP]; /* IPV6CP fsm structure */
-
-static fsm_callbacks ipv6cp_callbacks = { /* IPV6CP callback routines */
- ipv6cp_resetci, /* Reset our Configuration Information */
- ipv6cp_cilen, /* Length of our Configuration Information */
- ipv6cp_addci, /* Add our Configuration Information */
- ipv6cp_ackci, /* ACK our Configuration Information */
- ipv6cp_nakci, /* NAK our Configuration Information */
- ipv6cp_rejci, /* Reject our Configuration Information */
- ipv6cp_reqci, /* Request peer's Configuration Information */
- ipv6cp_up, /* Called when fsm reaches OPENED state */
- ipv6cp_down, /* Called when fsm leaves OPENED state */
- NULL, /* Called when we want the lower layer up */
- ipv6cp_finished, /* Called when we want the lower layer down */
- NULL, /* Called when Protocol-Reject received */
- NULL, /* Retransmission is necessary */
- NULL, /* Called to handle protocol-specific codes */
- "IPV6CP" /* String name of protocol */
-};
-
-/*
- * Command-line options.
- */
-static int setifaceid __P((char **arg));
-static void printifaceid __P((option_t *,
- void (*)(void *, char *, ...), void *));
-
-static option_t ipv6cp_option_list[] = {
- { "ipv6", o_special, (void *)setifaceid,
- "Set interface identifiers for IPV6",
- OPT_A2PRINTER, (void *)printifaceid },
-
- { "+ipv6", o_bool, &ipv6cp_protent.enabled_flag,
- "Enable IPv6 and IPv6CP", OPT_PRIO | 1 },
- { "noipv6", o_bool, &ipv6cp_protent.enabled_flag,
- "Disable IPv6 and IPv6CP", OPT_PRIOSUB },
- { "-ipv6", o_bool, &ipv6cp_protent.enabled_flag,
- "Disable IPv6 and IPv6CP", OPT_PRIOSUB | OPT_ALIAS },
-
- { "ipv6cp-accept-local", o_bool, &ipv6cp_allowoptions[0].accept_local,
- "Accept peer's interface identifier for us", 1 },
-
- { "ipv6cp-use-ipaddr", o_bool, &ipv6cp_allowoptions[0].use_ip,
- "Use (default) IPv4 address as interface identifier", 1 },
-
-#if defined(SOL2)
- { "ipv6cp-use-persistent", o_bool, &ipv6cp_wantoptions[0].use_persistent,
- "Use uniquely-available persistent value for link local address", 1 },
-#endif /* defined(SOL2) */
-
- { "ipv6cp-restart", o_int, &ipv6cp_fsm[0].timeouttime,
- "Set timeout for IPv6CP", OPT_PRIO },
- { "ipv6cp-max-terminate", o_int, &ipv6cp_fsm[0].maxtermtransmits,
- "Set max #xmits for term-reqs", OPT_PRIO },
- { "ipv6cp-max-configure", o_int, &ipv6cp_fsm[0].maxconfreqtransmits,
- "Set max #xmits for conf-reqs", OPT_PRIO },
- { "ipv6cp-max-failure", o_int, &ipv6cp_fsm[0].maxnakloops,
- "Set max #conf-naks for IPv6CP", OPT_PRIO },
-
- { NULL }
-};
-
-
-/*
- * Protocol entry points from main code.
- */
-static void ipv6cp_init __P((int));
-static void ipv6cp_open __P((int));
-static void ipv6cp_close __P((int, char *));
-static void ipv6cp_lowerup __P((int));
-static void ipv6cp_lowerdown __P((int));
-static void ipv6cp_input __P((int, u_char *, int));
-static void ipv6cp_protrej __P((int));
-static int ipv6cp_printpkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-static void ipv6_check_options __P((void));
-static int ipv6_demand_conf __P((int));
-static int ipv6_active_pkt __P((u_char *, int));
-
-struct protent ipv6cp_protent = {
- PPP_IPV6CP,
- ipv6cp_init,
- ipv6cp_input,
- ipv6cp_protrej,
- ipv6cp_lowerup,
- ipv6cp_lowerdown,
- ipv6cp_open,
- ipv6cp_close,
- ipv6cp_printpkt,
- NULL,
- 0,
- "IPV6CP",
- "IPV6",
- ipv6cp_option_list,
- ipv6_check_options,
- ipv6_demand_conf,
- ipv6_active_pkt
-};
-
-static void ipv6cp_clear_addrs __P((int, eui64_t, eui64_t));
-static void ipv6cp_script __P((char *));
-static void ipv6cp_script_done __P((void *));
-
-/*
- * Lengths of configuration options.
- */
-#define CILEN_VOID 2
-#define CILEN_COMPRESS 4 /* length for RFC2023 compress opt. */
-#define CILEN_IFACEID 10 /* RFC2472, interface identifier */
-
-#define CODENAME(x) ((x) == CONFACK ? "ACK" : \
- (x) == CONFNAK ? "NAK" : "REJ")
-
-/*
- * This state variable is used to ensure that we don't
- * run an ipcp-up/down script while one is already running.
- */
-static enum script_state {
- s_down,
- s_up,
-} ipv6cp_script_state;
-static pid_t ipv6cp_script_pid;
-
-/*
- * setifaceid - set the interface identifiers manually
- */
-static int
-setifaceid(argv)
- char **argv;
-{
- char *comma, *arg, c;
- ipv6cp_options *wo = &ipv6cp_wantoptions[0];
- struct in6_addr addr;
- static int prio_local, prio_remote;
-
-#define VALIDID(a) ( (((a).s6_addr32[0] == 0) && ((a).s6_addr32[1] == 0)) && \
- (((a).s6_addr32[2] != 0) || ((a).s6_addr32[3] != 0)) )
-
- arg = *argv;
- if ((comma = strchr(arg, ',')) == NULL)
- comma = arg + strlen(arg);
-
- /*
- * If comma first character, then no local identifier
- */
- if (comma != arg) {
- c = *comma;
- *comma = '\0';
-
- if (inet_pton(AF_INET6, arg, &addr) == 0 || !VALIDID(addr)) {
- option_error("Illegal interface identifier (local): %s", arg);
- return 0;
- }
-
- if (option_priority >= prio_local) {
- eui64_copy(addr.s6_addr32[2], wo->ourid);
- wo->opt_local = 1;
- prio_local = option_priority;
- }
- *comma = c;
- }
-
- /*
- * If comma last character, the no remote identifier
- */
- if (*comma != 0 && *++comma != '\0') {
- if (inet_pton(AF_INET6, comma, &addr) == 0 || !VALIDID(addr)) {
- option_error("Illegal interface identifier (remote): %s", comma);
- return 0;
- }
- if (option_priority >= prio_remote) {
- eui64_copy(addr.s6_addr32[2], wo->hisid);
- wo->opt_remote = 1;
- prio_remote = option_priority;
- }
- }
-
- if (override_value("+ipv6", option_priority, option_source))
- ipv6cp_protent.enabled_flag = 1;
- return 1;
-}
-
-static void
-printifaceid(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- ipv6cp_options *wo = &ipv6cp_wantoptions[0];
-
- if (wo->opt_local)
- printer(arg, "%s", llv6_ntoa(wo->ourid));
- printer(arg, ",");
- if (wo->opt_remote)
- printer(arg, "%s", llv6_ntoa(wo->hisid));
-}
-
-/*
- * Make a string representation of a network address.
- */
-char *
-llv6_ntoa(ifaceid)
- eui64_t ifaceid;
-{
- static char b[64];
-
- sprintf(b, "fe80::%s", eui64_ntoa(ifaceid));
- return b;
-}
-
-
-/*
- * ipv6cp_init - Initialize IPV6CP.
- */
-static void
-ipv6cp_init(unit)
- int unit;
-{
- fsm *f = &ipv6cp_fsm[unit];
- ipv6cp_options *wo = &ipv6cp_wantoptions[unit];
- ipv6cp_options *ao = &ipv6cp_allowoptions[unit];
-
- f->unit = unit;
- f->protocol = PPP_IPV6CP;
- f->callbacks = &ipv6cp_callbacks;
- fsm_init(&ipv6cp_fsm[unit]);
-
- memset(wo, 0, sizeof(*wo));
- memset(ao, 0, sizeof(*ao));
-
- wo->accept_local = 1;
- wo->neg_ifaceid = 1;
- ao->neg_ifaceid = 1;
-
-#ifdef IPV6CP_COMP
- wo->neg_vj = 1;
- ao->neg_vj = 1;
- wo->vj_protocol = IPV6CP_COMP;
-#endif
-
-}
-
-
-/*
- * ipv6cp_open - IPV6CP is allowed to come up.
- */
-static void
-ipv6cp_open(unit)
- int unit;
-{
- fsm_open(&ipv6cp_fsm[unit]);
-}
-
-
-/*
- * ipv6cp_close - Take IPV6CP down.
- */
-static void
-ipv6cp_close(unit, reason)
- int unit;
- char *reason;
-{
- fsm_close(&ipv6cp_fsm[unit], reason);
-}
-
-
-/*
- * ipv6cp_lowerup - The lower layer is up.
- */
-static void
-ipv6cp_lowerup(unit)
- int unit;
-{
- fsm_lowerup(&ipv6cp_fsm[unit]);
-}
-
-
-/*
- * ipv6cp_lowerdown - The lower layer is down.
- */
-static void
-ipv6cp_lowerdown(unit)
- int unit;
-{
- fsm_lowerdown(&ipv6cp_fsm[unit]);
-}
-
-
-/*
- * ipv6cp_input - Input IPV6CP packet.
- */
-static void
-ipv6cp_input(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- fsm_input(&ipv6cp_fsm[unit], p, len);
-}
-
-
-/*
- * ipv6cp_protrej - A Protocol-Reject was received for IPV6CP.
- *
- * Pretend the lower layer went down, so we shut up.
- */
-static void
-ipv6cp_protrej(unit)
- int unit;
-{
- fsm_lowerdown(&ipv6cp_fsm[unit]);
-}
-
-
-/*
- * ipv6cp_resetci - Reset our CI.
- */
-static void
-ipv6cp_resetci(f)
- fsm *f;
-{
- ipv6cp_options *wo = &ipv6cp_wantoptions[f->unit];
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
-
- wo->req_ifaceid = wo->neg_ifaceid && ipv6cp_allowoptions[f->unit].neg_ifaceid;
-
- if (!wo->opt_local) {
- eui64_magic_nz(wo->ourid);
- }
-
- *go = *wo;
- eui64_zero(go->hisid); /* last proposed interface identifier */
-}
-
-
-/*
- * ipv6cp_cilen - Return length of our CI.
- */
-static int
-ipv6cp_cilen(f)
- fsm *f;
-{
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
-
-#define LENCIVJ(neg) (neg ? CILEN_COMPRESS : 0)
-#define LENCIIFACEID(neg) (neg ? CILEN_IFACEID : 0)
-
- return (LENCIIFACEID(go->neg_ifaceid) +
- LENCIVJ(go->neg_vj));
-}
-
-
-/*
- * ipv6cp_addci - Add our desired CIs to a packet.
- */
-static void
-ipv6cp_addci(f, ucp, lenp)
- fsm *f;
- u_char *ucp;
- int *lenp;
-{
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- int len = *lenp;
-
-#define ADDCIVJ(opt, neg, val) \
- if (neg) { \
- int vjlen = CILEN_COMPRESS; \
- if (len >= vjlen) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(vjlen, ucp); \
- PUTSHORT(val, ucp); \
- len -= vjlen; \
- } else \
- neg = 0; \
- }
-
-#define ADDCIIFACEID(opt, neg, val1) \
- if (neg) { \
- int idlen = CILEN_IFACEID; \
- if (len >= idlen) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(idlen, ucp); \
- eui64_put(val1, ucp); \
- len -= idlen; \
- } else \
- neg = 0; \
- }
-
- ADDCIIFACEID(CI_IFACEID, go->neg_ifaceid, go->ourid);
-
- ADDCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol);
-
- *lenp -= len;
-}
-
-
-/*
- * ipv6cp_ackci - Ack our CIs.
- *
- * Returns:
- * 0 - Ack was bad.
- * 1 - Ack was good.
- */
-static int
-ipv6cp_ackci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- u_short cilen, citype, cishort;
- eui64_t ifaceid;
-
- /*
- * CIs must be in exactly the same order that we sent...
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-
-#define ACKCIVJ(opt, neg, val) \
- if (neg) { \
- int vjlen = CILEN_COMPRESS; \
- if ((len -= vjlen) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != vjlen || \
- citype != opt) \
- goto bad; \
- GETSHORT(cishort, p); \
- if (cishort != val) \
- goto bad; \
- }
-
-#define ACKCIIFACEID(opt, neg, val1) \
- if (neg) { \
- int idlen = CILEN_IFACEID; \
- if ((len -= idlen) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != idlen || \
- citype != opt) \
- goto bad; \
- eui64_get(ifaceid, p); \
- if (! eui64_equals(val1, ifaceid)) \
- goto bad; \
- }
-
- ACKCIIFACEID(CI_IFACEID, go->neg_ifaceid, go->ourid);
-
- ACKCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- return (1);
-
-bad:
- IPV6CPDEBUG(("ipv6cp_ackci: received bad Ack!"));
- return (0);
-}
-
-/*
- * ipv6cp_nakci - Peer has sent a NAK for some of our CIs.
- * This should not modify any state if the Nak is bad
- * or if IPV6CP is in the OPENED state.
- *
- * Returns:
- * 0 - Nak was bad.
- * 1 - Nak was good.
- */
-static int
-ipv6cp_nakci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- u_char citype, cilen, *next;
- u_short cishort;
- eui64_t ifaceid;
- ipv6cp_options no; /* options we've seen Naks for */
- ipv6cp_options try; /* options to request next time */
-
- BZERO(&no, sizeof(no));
- try = *go;
-
- /*
- * Any Nak'd CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define NAKCIIFACEID(opt, neg, code) \
- if (go->neg && \
- len >= (cilen = CILEN_IFACEID) && \
- p[1] == cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- eui64_get(ifaceid, p); \
- no.neg = 1; \
- code \
- }
-
-#define NAKCIVJ(opt, neg, code) \
- if (go->neg && \
- ((cilen = p[1]) == CILEN_COMPRESS) && \
- len >= cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- no.neg = 1; \
- code \
- }
-
- /*
- * Accept the peer's idea of {our,his} interface identifier, if different
- * from our idea, only if the accept_{local,remote} flag is set.
- */
- NAKCIIFACEID(CI_IFACEID, neg_ifaceid,
- if (go->accept_local) {
- while (eui64_iszero(ifaceid) ||
- eui64_equals(ifaceid, go->hisid)) /* bad luck */
- eui64_magic(ifaceid);
- try.ourid = ifaceid;
- IPV6CPDEBUG(("local LL address %s", llv6_ntoa(ifaceid)));
- }
- );
-
-#ifdef IPV6CP_COMP
- NAKCIVJ(CI_COMPRESSTYPE, neg_vj,
- {
- if (cishort == IPV6CP_COMP) {
- try.vj_protocol = cishort;
- } else {
- try.neg_vj = 0;
- }
- }
- );
-#else
- NAKCIVJ(CI_COMPRESSTYPE, neg_vj,
- {
- try.neg_vj = 0;
- }
- );
-#endif
-
- /*
- * There may be remaining CIs, if the peer is requesting negotiation
- * on an option that we didn't include in our request packet.
- * If they want to negotiate about interface identifier, we comply.
- * If they want us to ask for compression, we refuse.
- */
- while (len > CILEN_VOID) {
- GETCHAR(citype, p);
- GETCHAR(cilen, p);
- if( (len -= cilen) < 0 )
- goto bad;
- next = p + cilen - 2;
-
- switch (citype) {
- case CI_COMPRESSTYPE:
- if (go->neg_vj || no.neg_vj ||
- (cilen != CILEN_COMPRESS))
- goto bad;
- no.neg_vj = 1;
- break;
- case CI_IFACEID:
- if (go->neg_ifaceid || no.neg_ifaceid || cilen != CILEN_IFACEID)
- goto bad;
- try.neg_ifaceid = 1;
- eui64_get(ifaceid, p);
- if (go->accept_local) {
- while (eui64_iszero(ifaceid) ||
- eui64_equals(ifaceid, go->hisid)) /* bad luck */
- eui64_magic(ifaceid);
- try.ourid = ifaceid;
- }
- no.neg_ifaceid = 1;
- break;
- }
- p = next;
- }
-
- /* If there is still anything left, this packet is bad. */
- if (len != 0)
- goto bad;
-
- /*
- * OK, the Nak is good. Now we can update state.
- */
- if (f->state != OPENED)
- *go = try;
-
- return 1;
-
-bad:
- IPV6CPDEBUG(("ipv6cp_nakci: received bad Nak!"));
- return 0;
-}
-
-
-/*
- * ipv6cp_rejci - Reject some of our CIs.
- */
-static int
-ipv6cp_rejci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- u_char cilen;
- u_short cishort;
- eui64_t ifaceid;
- ipv6cp_options try; /* options to request next time */
-
- try = *go;
- /*
- * Any Rejected CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define REJCIIFACEID(opt, neg, val1) \
- if (go->neg && \
- len >= (cilen = CILEN_IFACEID) && \
- p[1] == cilen && \
- p[0] == opt) { \
- len -= cilen; \
- INCPTR(2, p); \
- eui64_get(ifaceid, p); \
- /* Check rejected value. */ \
- if (! eui64_equals(ifaceid, val1)) \
- goto bad; \
- try.neg = 0; \
- }
-
-#define REJCIVJ(opt, neg, val) \
- if (go->neg && \
- p[1] == CILEN_COMPRESS && \
- len >= p[1] && \
- p[0] == opt) { \
- len -= p[1]; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- /* Check rejected value. */ \
- if (cishort != val) \
- goto bad; \
- try.neg = 0; \
- }
-
- REJCIIFACEID(CI_IFACEID, neg_ifaceid, go->ourid);
-
- REJCIVJ(CI_COMPRESSTYPE, neg_vj, go->vj_protocol);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- /*
- * Now we can update state.
- */
- if (f->state != OPENED)
- *go = try;
- return 1;
-
-bad:
- IPV6CPDEBUG(("ipv6cp_rejci: received bad Reject!"));
- return 0;
-}
-
-
-/*
- * ipv6cp_reqci - Check the peer's requested CIs and send appropriate response.
- *
- * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
- * appropriately. If reject_if_disagree is non-zero, doesn't return
- * CONFNAK; returns CONFREJ if it can't return CONFACK.
- */
-static int
-ipv6cp_reqci(f, inp, len, reject_if_disagree)
- fsm *f;
- u_char *inp; /* Requested CIs */
- int *len; /* Length of requested CIs */
- int reject_if_disagree;
-{
- ipv6cp_options *wo = &ipv6cp_wantoptions[f->unit];
- ipv6cp_options *ho = &ipv6cp_hisoptions[f->unit];
- ipv6cp_options *ao = &ipv6cp_allowoptions[f->unit];
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- u_char *cip, *next; /* Pointer to current and next CIs */
- u_short cilen, citype; /* Parsed len, type */
- u_short cishort; /* Parsed short value */
- eui64_t ifaceid; /* Parsed interface identifier */
- int rc = CONFACK; /* Final packet return code */
- int orc; /* Individual option return code */
- u_char *p; /* Pointer to next char to parse */
- u_char *ucp = inp; /* Pointer to current output char */
- int l = *len; /* Length left */
-
- /*
- * Reset all his options.
- */
- BZERO(ho, sizeof(*ho));
-
- /*
- * Process all his options.
- */
- next = inp;
- while (l) {
- orc = CONFACK; /* Assume success */
- cip = p = next; /* Remember begining of CI */
- if (l < 2 || /* Not enough data for CI header or */
- p[1] < 2 || /* CI length too small or */
- p[1] > l) { /* CI length too big? */
- IPV6CPDEBUG(("ipv6cp_reqci: bad CI length!"));
- orc = CONFREJ; /* Reject bad CI */
- cilen = l; /* Reject till end of packet */
- l = 0; /* Don't loop again */
- goto endswitch;
- }
- GETCHAR(citype, p); /* Parse CI type */
- GETCHAR(cilen, p); /* Parse CI length */
- l -= cilen; /* Adjust remaining length */
- next += cilen; /* Step to next CI */
-
- switch (citype) { /* Check CI type */
- case CI_IFACEID:
- IPV6CPDEBUG(("ipv6cp: received interface identifier "));
-
- if (!ao->neg_ifaceid ||
- cilen != CILEN_IFACEID) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
-
- /*
- * If he has no interface identifier, or if we both have same
- * identifier then NAK it with new idea.
- * In particular, if we don't know his identifier, but he does,
- * then accept it.
- */
- eui64_get(ifaceid, p);
- IPV6CPDEBUG(("(%s)", llv6_ntoa(ifaceid)));
- if (eui64_iszero(ifaceid) && eui64_iszero(go->ourid)) {
- orc = CONFREJ; /* Reject CI */
- break;
- }
- if (!eui64_iszero(wo->hisid) &&
- !eui64_equals(ifaceid, wo->hisid) &&
- eui64_iszero(go->hisid)) {
-
- orc = CONFNAK;
- ifaceid = wo->hisid;
- go->hisid = ifaceid;
- DECPTR(sizeof(ifaceid), p);
- eui64_put(ifaceid, p);
- } else
- if (eui64_iszero(ifaceid) || eui64_equals(ifaceid, go->ourid)) {
- orc = CONFNAK;
- if (eui64_iszero(go->hisid)) /* first time, try option */
- ifaceid = wo->hisid;
- while (eui64_iszero(ifaceid) ||
- eui64_equals(ifaceid, go->ourid)) /* bad luck */
- eui64_magic(ifaceid);
- go->hisid = ifaceid;
- DECPTR(sizeof(ifaceid), p);
- eui64_put(ifaceid, p);
- }
-
- ho->neg_ifaceid = 1;
- ho->hisid = ifaceid;
- break;
-
- case CI_COMPRESSTYPE:
- IPV6CPDEBUG(("ipv6cp: received COMPRESSTYPE "));
- if (!ao->neg_vj ||
- (cilen != CILEN_COMPRESS)) {
- orc = CONFREJ;
- break;
- }
- GETSHORT(cishort, p);
- IPV6CPDEBUG(("(%d)", cishort));
-
-#ifdef IPV6CP_COMP
- if (!(cishort == IPV6CP_COMP)) {
- orc = CONFREJ;
- break;
- }
-
- ho->neg_vj = 1;
- ho->vj_protocol = cishort;
- break;
-#else
- orc = CONFREJ;
- break;
-#endif
-
- default:
- orc = CONFREJ;
- break;
- }
-
-endswitch:
- IPV6CPDEBUG((" (%s)\n", CODENAME(orc)));
-
- if (orc == CONFACK && /* Good CI */
- rc != CONFACK) /* but prior CI wasnt? */
- continue; /* Don't send this one */
-
- if (orc == CONFNAK) { /* Nak this CI? */
- if (reject_if_disagree) /* Getting fed up with sending NAKs? */
- orc = CONFREJ; /* Get tough if so */
- else {
- if (rc == CONFREJ) /* Rejecting prior CI? */
- continue; /* Don't send this one */
- if (rc == CONFACK) { /* Ack'd all prior CIs? */
- rc = CONFNAK; /* Not anymore... */
- ucp = inp; /* Backup */
- }
- }
- }
-
- if (orc == CONFREJ && /* Reject this CI */
- rc != CONFREJ) { /* but no prior ones? */
- rc = CONFREJ;
- ucp = inp; /* Backup */
- }
-
- /* Need to move CI? */
- if (ucp != cip)
- BCOPY(cip, ucp, cilen); /* Move it */
-
- /* Update output pointer */
- INCPTR(cilen, ucp);
- }
-
- /*
- * If we aren't rejecting this packet, and we want to negotiate
- * their identifier and they didn't send their identifier, then we
- * send a NAK with a CI_IFACEID option appended. We assume the
- * input buffer is long enough that we can append the extra
- * option safely.
- */
- if (rc != CONFREJ && !ho->neg_ifaceid &&
- wo->req_ifaceid && !reject_if_disagree) {
- if (rc == CONFACK) {
- rc = CONFNAK;
- ucp = inp; /* reset pointer */
- wo->req_ifaceid = 0; /* don't ask again */
- }
- PUTCHAR(CI_IFACEID, ucp);
- PUTCHAR(CILEN_IFACEID, ucp);
- eui64_put(wo->hisid, ucp);
- }
-
- *len = ucp - inp; /* Compute output length */
- IPV6CPDEBUG(("ipv6cp: returning Configure-%s", CODENAME(rc)));
- return (rc); /* Return final code */
-}
-
-
-/*
- * ipv6_check_options - check that any IP-related options are OK,
- * and assign appropriate defaults.
- */
-static void
-ipv6_check_options()
-{
- ipv6cp_options *wo = &ipv6cp_wantoptions[0];
-
- if (!ipv6cp_protent.enabled_flag)
- return;
-
-#if defined(SOL2)
- /*
- * Persistent link-local id is only used when user has not explicitly
- * configure/hard-code the id
- */
- if ((wo->use_persistent) && (!wo->opt_local) && (!wo->opt_remote)) {
-
- /*
- * On systems where there are no Ethernet interfaces used, there
- * may be other ways to obtain a persistent id. Right now, it
- * will fall back to using magic [see eui64_magic] below when
- * an EUI-48 from MAC address can't be obtained. Other possibilities
- * include obtaining EEPROM serial numbers, or some other unique
- * yet persistent number. On Sparc platforms, this is possible,
- * but too bad there's no standards yet for x86 machines.
- */
- if (ether_to_eui64(&wo->ourid)) {
- wo->opt_local = 1;
- }
- }
-#endif
-
- if (!wo->opt_local) { /* init interface identifier */
- if (wo->use_ip && eui64_iszero(wo->ourid)) {
- eui64_setlo32(wo->ourid, ntohl(ipcp_wantoptions[0].ouraddr));
- if (!eui64_iszero(wo->ourid))
- wo->opt_local = 1;
- }
-
- while (eui64_iszero(wo->ourid))
- eui64_magic(wo->ourid);
- }
-
- if (!wo->opt_remote) {
- if (wo->use_ip && eui64_iszero(wo->hisid)) {
- eui64_setlo32(wo->hisid, ntohl(ipcp_wantoptions[0].hisaddr));
- if (!eui64_iszero(wo->hisid))
- wo->opt_remote = 1;
- }
- }
-
- if (demand && (eui64_iszero(wo->ourid) || eui64_iszero(wo->hisid))) {
- option_error("local/remote LL address required for demand-dialling\n");
- exit(1);
- }
-}
-
-
-/*
- * ipv6_demand_conf - configure the interface as though
- * IPV6CP were up, for use with dial-on-demand.
- */
-static int
-ipv6_demand_conf(u)
- int u;
-{
- ipv6cp_options *wo = &ipv6cp_wantoptions[u];
-
-#if defined(__linux__) || defined(SOL2) || (defined(SVR4) && (defined(SNI) || defined(__USLC__)))
-#if defined(SOL2)
- if (!sif6up(u))
- return 0;
-#else
- if (!sifup(u))
- return 0;
-#endif /* defined(SOL2) */
-#endif
- if (!sif6addr(u, wo->ourid, wo->hisid))
- return 0;
-#if !defined(__linux__) && !(defined(SVR4) && (defined(SNI) || defined(__USLC__)))
- if (!sifup(u))
- return 0;
-#endif
- if (!sifnpmode(u, PPP_IPV6, NPMODE_QUEUE))
- return 0;
-
- notice("ipv6_demand_conf");
- notice("local LL address %s", llv6_ntoa(wo->ourid));
- notice("remote LL address %s", llv6_ntoa(wo->hisid));
-
- return 1;
-}
-
-
-/*
- * ipv6cp_up - IPV6CP has come UP.
- *
- * Configure the IPv6 network interface appropriately and bring it up.
- */
-static void
-ipv6cp_up(f)
- fsm *f;
-{
- ipv6cp_options *ho = &ipv6cp_hisoptions[f->unit];
- ipv6cp_options *go = &ipv6cp_gotoptions[f->unit];
- ipv6cp_options *wo = &ipv6cp_wantoptions[f->unit];
-
- IPV6CPDEBUG(("ipv6cp: up"));
-
- /*
- * We must have a non-zero LL address for both ends of the link.
- */
- if (!ho->neg_ifaceid)
- ho->hisid = wo->hisid;
-
- if(!no_ifaceid_neg) {
- if (eui64_iszero(ho->hisid)) {
- error("Could not determine remote LL address");
- ipv6cp_close(f->unit, "Could not determine remote LL address");
- return;
- }
- if (eui64_iszero(go->ourid)) {
- error("Could not determine local LL address");
- ipv6cp_close(f->unit, "Could not determine local LL address");
- return;
- }
- if (eui64_equals(go->ourid, ho->hisid)) {
- error("local and remote LL addresses are equal");
- ipv6cp_close(f->unit, "local and remote LL addresses are equal");
- return;
- }
- }
- script_setenv("LLLOCAL", llv6_ntoa(go->ourid), 0);
- script_setenv("LLREMOTE", llv6_ntoa(ho->hisid), 0);
-
-#ifdef IPV6CP_COMP
- /* set tcp compression */
- sif6comp(f->unit, ho->neg_vj);
-#endif
-
- /*
- * If we are doing dial-on-demand, the interface is already
- * configured, so we put out any saved-up packets, then set the
- * interface to pass IPv6 packets.
- */
- if (demand) {
- if (! eui64_equals(go->ourid, wo->ourid) ||
- ! eui64_equals(ho->hisid, wo->hisid)) {
- if (! eui64_equals(go->ourid, wo->ourid))
- warn("Local LL address changed to %s",
- llv6_ntoa(go->ourid));
- if (! eui64_equals(ho->hisid, wo->hisid))
- warn("Remote LL address changed to %s",
- llv6_ntoa(ho->hisid));
- ipv6cp_clear_addrs(f->unit, go->ourid, ho->hisid);
-
- /* Set the interface to the new addresses */
- if (!sif6addr(f->unit, go->ourid, ho->hisid)) {
- if (debug)
- warn("sif6addr failed");
- ipv6cp_close(f->unit, "Interface configuration failed");
- return;
- }
-
- }
- demand_rexmit(PPP_IPV6);
- sifnpmode(f->unit, PPP_IPV6, NPMODE_PASS);
-
- } else {
- /*
- * Set LL addresses
- */
-#if !defined(__linux__) && !defined(SOL2) && !(defined(SVR4) && (defined(SNI) || defined(__USLC__)))
- if (!sif6addr(f->unit, go->ourid, ho->hisid)) {
- if (debug)
- warn("sif6addr failed");
- ipv6cp_close(f->unit, "Interface configuration failed");
- return;
- }
-#endif
-
- /* bring the interface up for IPv6 */
-#if defined(SOL2)
- if (!sif6up(f->unit)) {
- if (debug)
- warn("sifup failed (IPV6)");
- ipv6cp_close(f->unit, "Interface configuration failed");
- return;
- }
-#else
- if (!sifup(f->unit)) {
- if (debug)
- warn("sifup failed (IPV6)");
- ipv6cp_close(f->unit, "Interface configuration failed");
- return;
- }
-#endif /* defined(SOL2) */
-
-#if defined(__linux__) || defined(SOL2) || (defined(SVR4) && (defined(SNI) || defined(__USLC__)))
- if (!sif6addr(f->unit, go->ourid, ho->hisid)) {
- if (debug)
- warn("sif6addr failed");
- ipv6cp_close(f->unit, "Interface configuration failed");
- return;
- }
-#endif
- sifnpmode(f->unit, PPP_IPV6, NPMODE_PASS);
-
- notice("local LL address %s", llv6_ntoa(go->ourid));
- notice("remote LL address %s", llv6_ntoa(ho->hisid));
- }
-
- np_up(f->unit, PPP_IPV6);
- ipv6cp_is_up = 1;
-
- /*
- * Execute the ipv6-up script, like this:
- * /etc/ppp/ipv6-up interface tty speed local-LL remote-LL
- */
- if (ipv6cp_script_state == s_down && ipv6cp_script_pid == 0) {
- ipv6cp_script_state = s_up;
- ipv6cp_script(_PATH_IPV6UP);
- }
-}
-
-
-/*
- * ipv6cp_down - IPV6CP has gone DOWN.
- *
- * Take the IPv6 network interface down, clear its addresses
- * and delete routes through it.
- */
-static void
-ipv6cp_down(f)
- fsm *f;
-{
- IPV6CPDEBUG(("ipv6cp: down"));
- update_link_stats(f->unit);
- if (ipv6cp_is_up) {
- ipv6cp_is_up = 0;
- np_down(f->unit, PPP_IPV6);
- }
-#ifdef IPV6CP_COMP
- sif6comp(f->unit, 0);
-#endif
-
- /*
- * If we are doing dial-on-demand, set the interface
- * to queue up outgoing packets (for now).
- */
- if (demand) {
- sifnpmode(f->unit, PPP_IPV6, NPMODE_QUEUE);
- } else {
- sifnpmode(f->unit, PPP_IPV6, NPMODE_DROP);
-#if !defined(__linux__) && !(defined(SVR4) && (defined(SNI) || defined(__USLC)))
-#if defined(SOL2)
- sif6down(f->unit);
-#else
- sifdown(f->unit);
-#endif /* defined(SOL2) */
-#endif
- ipv6cp_clear_addrs(f->unit,
- ipv6cp_gotoptions[f->unit].ourid,
- ipv6cp_hisoptions[f->unit].hisid);
-#if defined(__linux__) || (defined(SVR4) && (defined(SNI) || defined(__USLC)))
- sifdown(f->unit);
-#endif
- }
-
- /* Execute the ipv6-down script */
- if (ipv6cp_script_state == s_up && ipv6cp_script_pid == 0) {
- ipv6cp_script_state = s_down;
- ipv6cp_script(_PATH_IPV6DOWN);
- }
-}
-
-
-/*
- * ipv6cp_clear_addrs() - clear the interface addresses, routes,
- * proxy neighbour discovery entries, etc.
- */
-static void
-ipv6cp_clear_addrs(unit, ourid, hisid)
- int unit;
- eui64_t ourid;
- eui64_t hisid;
-{
- cif6addr(unit, ourid, hisid);
-}
-
-
-/*
- * ipv6cp_finished - possibly shut down the lower layers.
- */
-static void
-ipv6cp_finished(f)
- fsm *f;
-{
- np_finished(f->unit, PPP_IPV6);
-}
-
-
-/*
- * ipv6cp_script_done - called when the ipv6-up or ipv6-down script
- * has finished.
- */
-static void
-ipv6cp_script_done(arg)
- void *arg;
-{
- ipv6cp_script_pid = 0;
- switch (ipv6cp_script_state) {
- case s_up:
- if (ipv6cp_fsm[0].state != OPENED) {
- ipv6cp_script_state = s_down;
- ipv6cp_script(_PATH_IPV6DOWN);
- }
- break;
- case s_down:
- if (ipv6cp_fsm[0].state == OPENED) {
- ipv6cp_script_state = s_up;
- ipv6cp_script(_PATH_IPV6UP);
- }
- break;
- }
-}
-
-
-/*
- * ipv6cp_script - Execute a script with arguments
- * interface-name tty-name speed local-LL remote-LL.
- */
-static void
-ipv6cp_script(script)
- char *script;
-{
- char strspeed[32], strlocal[32], strremote[32];
- char *argv[8];
-
- sprintf(strspeed, "%d", baud_rate);
- strcpy(strlocal, llv6_ntoa(ipv6cp_gotoptions[0].ourid));
- strcpy(strremote, llv6_ntoa(ipv6cp_hisoptions[0].hisid));
-
- argv[0] = script;
- argv[1] = ifname;
- argv[2] = devnam;
- argv[3] = strspeed;
- argv[4] = strlocal;
- argv[5] = strremote;
- argv[6] = ipparam;
- argv[7] = NULL;
-
- ipv6cp_script_pid = run_program(script, argv, 0, ipv6cp_script_done, NULL);
-}
-
-/*
- * ipv6cp_printpkt - print the contents of an IPV6CP packet.
- */
-static char *ipv6cp_codenames[] = {
- "ConfReq", "ConfAck", "ConfNak", "ConfRej",
- "TermReq", "TermAck", "CodeRej"
-};
-
-static int
-ipv6cp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len, olen;
- u_char *pstart, *optend;
- u_short cishort;
- eui64_t ifaceid;
-
- if (plen < HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(ipv6cp_codenames) / sizeof(char *))
- printer(arg, " %s", ipv6cp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- /* print option list */
- while (len >= 2) {
- GETCHAR(code, p);
- GETCHAR(olen, p);
- p -= 2;
- if (olen < 2 || olen > len) {
- break;
- }
- printer(arg, " <");
- len -= olen;
- optend = p + olen;
- switch (code) {
- case CI_COMPRESSTYPE:
- if (olen >= CILEN_COMPRESS) {
- p += 2;
- GETSHORT(cishort, p);
- printer(arg, "compress ");
- printer(arg, "0x%x", cishort);
- }
- break;
- case CI_IFACEID:
- if (olen == CILEN_IFACEID) {
- p += 2;
- eui64_get(ifaceid, p);
- printer(arg, "addr %s", llv6_ntoa(ifaceid));
- }
- break;
- }
- while (p < optend) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
- printer(arg, ">");
- }
- break;
-
- case TERMACK:
- case TERMREQ:
- if (len > 0 && *p >= ' ' && *p < 0x7f) {
- printer(arg, " ");
- print_string((char *)p, len, printer, arg);
- p += len;
- len = 0;
- }
- break;
- }
-
- /* print the rest of the bytes in the packet */
- for (; len > 0; --len) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
-
- return p - pstart;
-}
-
-/*
- * ipv6_active_pkt - see if this IP packet is worth bringing the link up for.
- * We don't bring the link up for IP fragments or for TCP FIN packets
- * with no data.
- */
-#define IP6_HDRLEN 40 /* bytes */
-#define IP6_NHDR_FRAG 44 /* fragment IPv6 header */
-#define IPPROTO_TCP 6
-#define TCP_HDRLEN 20
-#define TH_FIN 0x01
-
-/*
- * We use these macros because the IP header may be at an odd address,
- * and some compilers might use word loads to get th_off or ip_hl.
- */
-
-#define get_ip6nh(x) (((unsigned char *)(x))[6])
-#define get_tcpoff(x) (((unsigned char *)(x))[12] >> 4)
-#define get_tcpflags(x) (((unsigned char *)(x))[13])
-
-static int
-ipv6_active_pkt(pkt, len)
- u_char *pkt;
- int len;
-{
- u_char *tcp;
-
- len -= PPP_HDRLEN;
- pkt += PPP_HDRLEN;
- if (len < IP6_HDRLEN)
- return 0;
- if (get_ip6nh(pkt) == IP6_NHDR_FRAG)
- return 0;
- if (get_ip6nh(pkt) != IPPROTO_TCP)
- return 1;
- if (len < IP6_HDRLEN + TCP_HDRLEN)
- return 0;
- tcp = pkt + IP6_HDRLEN;
- if ((get_tcpflags(tcp) & TH_FIN) != 0 && len == IP6_HDRLEN + get_tcpoff(tcp) * 4)
- return 0;
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/ipv6cp.h b/mdk-stage1/ppp/pppd/ipv6cp.h
deleted file mode 100644
index 60d366eb3..000000000
--- a/mdk-stage1/ppp/pppd/ipv6cp.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- ipv6cp.h - PPP IPV6 Control Protocol.
- Copyright (C) 1999 Tommi Komulainen <Tommi.Komulainen@iki.fi>
-
- Redistribution and use in source and binary forms are permitted
- provided that the above copyright notice and this paragraph are
- duplicated in all such forms. The name of the author may not be
- used to endorse or promote products derived from this software
- without specific prior written permission.
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-*/
-
-/* Original version, based on RFC2023 :
-
- Copyright (c) 1995, 1996, 1997 Francis.Dupont@inria.fr, INRIA Rocquencourt,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Copyright (c) 1998, 1999 Francis.Dupont@inria.fr, GIE DYADE,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Ce travail a été fait au sein du GIE DYADE (Groupement d'Intérêt
- Économique ayant pour membres BULL S.A. et l'INRIA).
-
- Ce logiciel informatique est disponible aux conditions
- usuelles dans la recherche, c'est-à-dire qu'il peut
- être utilisé, copié, modifié, distribué à l'unique
- condition que ce texte soit conservé afin que
- l'origine de ce logiciel soit reconnue.
-
- Le nom de l'Institut National de Recherche en Informatique
- et en Automatique (INRIA), de l'IMAG, ou d'une personne morale
- ou physique ayant participé à l'élaboration de ce logiciel ne peut
- être utilisé sans son accord préalable explicite.
-
- Ce logiciel est fourni tel quel sans aucune garantie,
- support ou responsabilité d'aucune sorte.
- Ce logiciel est dérivé de sources d'origine
- "University of California at Berkeley" et
- "Digital Equipment Corporation" couvertes par des copyrights.
-
- L'Institut d'Informatique et de Mathématiques Appliquées de Grenoble (IMAG)
- est une fédération d'unités mixtes de recherche du CNRS, de l'Institut National
- Polytechnique de Grenoble et de l'Université Joseph Fourier regroupant
- sept laboratoires dont le laboratoire Logiciels, Systèmes, Réseaux (LSR).
-
- This work has been done in the context of GIE DYADE (joint R & D venture
- between BULL S.A. and INRIA).
-
- This software is available with usual "research" terms
- with the aim of retain credits of the software.
- Permission to use, copy, modify and distribute this software for any
- purpose and without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies,
- and the name of INRIA, IMAG, or any contributor not be used in advertising
- or publicity pertaining to this material without the prior explicit
- permission. The software is provided "as is" without any
- warranties, support or liabilities of any kind.
- This software is derived from source code from
- "University of California at Berkeley" and
- "Digital Equipment Corporation" protected by copyrights.
-
- Grenoble's Institute of Computer Science and Applied Mathematics (IMAG)
- is a federation of seven research units funded by the CNRS, National
- Polytechnic Institute of Grenoble and University Joseph Fourier.
- The research unit in Software, Systems, Networks (LSR) is member of IMAG.
-*/
-
-/*
- * Derived from :
- *
- *
- * ipcp.h - IP Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Options.
- */
-#define CI_IFACEID 1 /* Interface Identifier */
-#define CI_COMPRESSTYPE 2 /* Compression Type */
-
-/* No compression types yet defined.
- *#define IPV6CP_COMP 0x004f
- */
-typedef struct ipv6cp_options {
- int neg_ifaceid; /* Negotiate interface identifier? */
- int req_ifaceid; /* Ask peer to send interface identifier? */
- int accept_local; /* accept peer's value for iface id? */
- int opt_local; /* ourtoken set by option */
- int opt_remote; /* histoken set by option */
- int use_ip; /* use IP as interface identifier */
-#if defined(SOL2)
- int use_persistent; /* use uniquely persistent value for address */
-#endif /* defined(SOL2) */
- int neg_vj; /* Van Jacobson Compression? */
- u_short vj_protocol; /* protocol value to use in VJ option */
- eui64_t ourid, hisid; /* Interface identifiers */
-} ipv6cp_options;
-
-extern fsm ipv6cp_fsm[];
-extern ipv6cp_options ipv6cp_wantoptions[];
-extern ipv6cp_options ipv6cp_gotoptions[];
-extern ipv6cp_options ipv6cp_allowoptions[];
-extern ipv6cp_options ipv6cp_hisoptions[];
-
-extern struct protent ipv6cp_protent;
diff --git a/mdk-stage1/ppp/pppd/ipxcp.c b/mdk-stage1/ppp/pppd/ipxcp.c
deleted file mode 100644
index f9a12b934..000000000
--- a/mdk-stage1/ppp/pppd/ipxcp.c
+++ /dev/null
@@ -1,1570 +0,0 @@
-/*
- * ipxcp.c - PPP IPX Control Protocol.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifdef IPX_CHANGE
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipxcp.h"
-#include "pathnames.h"
-#include "magic.h"
-
-static const char rcsid[] = RCSID;
-
-/* global vars */
-ipxcp_options ipxcp_wantoptions[NUM_PPP]; /* Options that we want to request */
-ipxcp_options ipxcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */
-ipxcp_options ipxcp_allowoptions[NUM_PPP]; /* Options we allow peer to request */
-ipxcp_options ipxcp_hisoptions[NUM_PPP]; /* Options that we ack'd */
-
-#define wo (&ipxcp_wantoptions[0])
-#define ao (&ipxcp_allowoptions[0])
-#define go (&ipxcp_gotoptions[0])
-#define ho (&ipxcp_hisoptions[0])
-
-/*
- * Callbacks for fsm code. (CI = Configuration Information)
- */
-static void ipxcp_resetci __P((fsm *)); /* Reset our CI */
-static int ipxcp_cilen __P((fsm *)); /* Return length of our CI */
-static void ipxcp_addci __P((fsm *, u_char *, int *)); /* Add our CI */
-static int ipxcp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
-static int ipxcp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
-static int ipxcp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
-static int ipxcp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */
-static void ipxcp_up __P((fsm *)); /* We're UP */
-static void ipxcp_down __P((fsm *)); /* We're DOWN */
-static void ipxcp_finished __P((fsm *)); /* Don't need lower layer */
-static void ipxcp_script __P((fsm *, char *)); /* Run an up/down script */
-
-fsm ipxcp_fsm[NUM_PPP]; /* IPXCP fsm structure */
-
-static fsm_callbacks ipxcp_callbacks = { /* IPXCP callback routines */
- ipxcp_resetci, /* Reset our Configuration Information */
- ipxcp_cilen, /* Length of our Configuration Information */
- ipxcp_addci, /* Add our Configuration Information */
- ipxcp_ackci, /* ACK our Configuration Information */
- ipxcp_nakci, /* NAK our Configuration Information */
- ipxcp_rejci, /* Reject our Configuration Information */
- ipxcp_reqci, /* Request peer's Configuration Information */
- ipxcp_up, /* Called when fsm reaches OPENED state */
- ipxcp_down, /* Called when fsm leaves OPENED state */
- NULL, /* Called when we want the lower layer up */
- ipxcp_finished, /* Called when we want the lower layer down */
- NULL, /* Called when Protocol-Reject received */
- NULL, /* Retransmission is necessary */
- NULL, /* Called to handle protocol-specific codes */
- "IPXCP" /* String name of protocol */
-};
-
-/*
- * Command-line options.
- */
-static int setipxnode __P((char **));
-static void printipxnode __P((option_t *,
- void (*)(void *, char *, ...), void *));
-static int setipxname __P((char **));
-
-static option_t ipxcp_option_list[] = {
- { "ipx", o_bool, &ipxcp_protent.enabled_flag,
- "Enable IPXCP (and IPX)", OPT_PRIO | 1 },
- { "+ipx", o_bool, &ipxcp_protent.enabled_flag,
- "Enable IPXCP (and IPX)", OPT_PRIOSUB | OPT_ALIAS | 1 },
- { "noipx", o_bool, &ipxcp_protent.enabled_flag,
- "Disable IPXCP (and IPX)", OPT_PRIOSUB },
- { "-ipx", o_bool, &ipxcp_protent.enabled_flag,
- "Disable IPXCP (and IPX)", OPT_PRIOSUB | OPT_ALIAS },
-
- { "ipx-network", o_uint32, &ipxcp_wantoptions[0].our_network,
- "Set our IPX network number", OPT_PRIO, &ipxcp_wantoptions[0].neg_nn },
-
- { "ipxcp-accept-network", o_bool, &ipxcp_wantoptions[0].accept_network,
- "Accept peer IPX network number", 1,
- &ipxcp_allowoptions[0].accept_network },
-
- { "ipx-node", o_special, (void *)setipxnode,
- "Set IPX node number", OPT_A2PRINTER, (void *)printipxnode },
-
- { "ipxcp-accept-local", o_bool, &ipxcp_wantoptions[0].accept_local,
- "Accept our IPX address", 1,
- &ipxcp_allowoptions[0].accept_local },
-
- { "ipxcp-accept-remote", o_bool, &ipxcp_wantoptions[0].accept_remote,
- "Accept peer's IPX address", 1,
- &ipxcp_allowoptions[0].accept_remote },
-
- { "ipx-routing", o_int, &ipxcp_wantoptions[0].router,
- "Set IPX routing proto number", OPT_PRIO,
- &ipxcp_wantoptions[0].neg_router },
-
- { "ipx-router-name", o_special, setipxname,
- "Set IPX router name", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC,
- &ipxcp_wantoptions[0].name },
-
- { "ipxcp-restart", o_int, &ipxcp_fsm[0].timeouttime,
- "Set timeout for IPXCP", OPT_PRIO },
- { "ipxcp-max-terminate", o_int, &ipxcp_fsm[0].maxtermtransmits,
- "Set max #xmits for IPXCP term-reqs", OPT_PRIO },
- { "ipxcp-max-configure", o_int, &ipxcp_fsm[0].maxconfreqtransmits,
- "Set max #xmits for IPXCP conf-reqs", OPT_PRIO },
- { "ipxcp-max-failure", o_int, &ipxcp_fsm[0].maxnakloops,
- "Set max #conf-naks for IPXCP", OPT_PRIO },
-
- { NULL }
-};
-
-/*
- * Protocol entry points.
- */
-
-static void ipxcp_init __P((int));
-static void ipxcp_open __P((int));
-static void ipxcp_close __P((int, char *));
-static void ipxcp_lowerup __P((int));
-static void ipxcp_lowerdown __P((int));
-static void ipxcp_input __P((int, u_char *, int));
-static void ipxcp_protrej __P((int));
-static int ipxcp_printpkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-
-struct protent ipxcp_protent = {
- PPP_IPXCP,
- ipxcp_init,
- ipxcp_input,
- ipxcp_protrej,
- ipxcp_lowerup,
- ipxcp_lowerdown,
- ipxcp_open,
- ipxcp_close,
- ipxcp_printpkt,
- NULL,
- 0,
- "IPXCP",
- "IPX",
- ipxcp_option_list,
- NULL,
- NULL,
- NULL
-};
-
-/*
- * Lengths of configuration options.
- */
-
-#define CILEN_VOID 2
-#define CILEN_COMPLETE 2 /* length of complete option */
-#define CILEN_NETN 6 /* network number length option */
-#define CILEN_NODEN 8 /* node number length option */
-#define CILEN_PROTOCOL 4 /* Minimum length of routing protocol */
-#define CILEN_NAME 3 /* Minimum length of router name */
-#define CILEN_COMPRESS 4 /* Minimum length of compression protocol */
-
-#define CODENAME(x) ((x) == CONFACK ? "ACK" : \
- (x) == CONFNAK ? "NAK" : "REJ")
-
-static int ipxcp_is_up;
-
-static char *ipx_ntoa __P((u_int32_t));
-
-/* Used in printing the node number */
-#define NODE(base) base[0], base[1], base[2], base[3], base[4], base[5]
-
-/* Used to generate the proper bit mask */
-#define BIT(num) (1 << (num))
-
-/*
- * Convert from internal to external notation
- */
-
-static short int
-to_external(internal)
-short int internal;
-{
- short int external;
-
- if (internal & BIT(IPX_NONE) )
- external = IPX_NONE;
- else
- external = RIP_SAP;
-
- return external;
-}
-
-/*
- * Make a string representation of a network IP address.
- */
-
-static char *
-ipx_ntoa(ipxaddr)
-u_int32_t ipxaddr;
-{
- static char b[64];
- slprintf(b, sizeof(b), "%x", ipxaddr);
- return b;
-}
-
-
-static u_char *
-setipxnodevalue(src,dst)
-u_char *src, *dst;
-{
- int indx;
- int item;
-
- for (;;) {
- if (!isxdigit (*src))
- break;
-
- for (indx = 0; indx < 5; ++indx) {
- dst[indx] <<= 4;
- dst[indx] |= (dst[indx + 1] >> 4) & 0x0F;
- }
-
- item = toupper (*src) - '0';
- if (item > 9)
- item -= 7;
-
- dst[5] = (dst[5] << 4) | item;
- ++src;
- }
- return src;
-}
-
-static int ipx_prio_our, ipx_prio_his;
-
-static int
-setipxnode(argv)
- char **argv;
-{
- char *end;
- int have_his = 0;
- u_char our_node[6];
- u_char his_node[6];
-
- memset (our_node, 0, 6);
- memset (his_node, 0, 6);
-
- end = setipxnodevalue (*argv, our_node);
- if (*end == ':') {
- have_his = 1;
- end = setipxnodevalue (++end, his_node);
- }
-
- if (*end == '\0') {
- ipxcp_wantoptions[0].neg_node = 1;
- if (option_priority >= ipx_prio_our) {
- memcpy(&ipxcp_wantoptions[0].our_node[0], our_node, 6);
- ipx_prio_our = option_priority;
- }
- if (have_his && option_priority >= ipx_prio_his) {
- memcpy(&ipxcp_wantoptions[0].his_node[0], his_node, 6);
- ipx_prio_his = option_priority;
- }
- return 1;
- }
-
- option_error("invalid parameter '%s' for ipx-node option", *argv);
- return 0;
-}
-
-static void
-printipxnode(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- unsigned char *p;
-
- p = ipxcp_wantoptions[0].our_node;
- if (ipx_prio_our)
- printer(arg, "%.2x%.2x%.2x%.2x%.2x%.2x",
- p[0], p[1], p[2], p[3], p[4], p[5]);
- printer(arg, ":");
- p = ipxcp_wantoptions[0].his_node;
- if (ipx_prio_his)
- printer(arg, "%.2x%.2x%.2x%.2x%.2x%.2x",
- p[0], p[1], p[2], p[3], p[4], p[5]);
-}
-
-static int
-setipxname (argv)
- char **argv;
-{
- char *dest = ipxcp_wantoptions[0].name;
- char *src = *argv;
- int count;
- char ch;
-
- ipxcp_wantoptions[0].neg_name = 1;
- ipxcp_allowoptions[0].neg_name = 1;
- memset (dest, '\0', sizeof (ipxcp_wantoptions[0].name));
-
- count = 0;
- while (*src) {
- ch = *src++;
- if (! isalnum (ch) && ch != '_') {
- option_error("IPX router name must be alphanumeric or _");
- return 0;
- }
-
- if (count >= sizeof (ipxcp_wantoptions[0].name) - 1) {
- option_error("IPX router name is limited to %d characters",
- sizeof (ipxcp_wantoptions[0].name) - 1);
- return 0;
- }
-
- dest[count++] = toupper (ch);
- }
- dest[count] = 0;
-
- return 1;
-}
-
-/*
- * ipxcp_init - Initialize IPXCP.
- */
-static void
-ipxcp_init(unit)
- int unit;
-{
- fsm *f = &ipxcp_fsm[unit];
-
- f->unit = unit;
- f->protocol = PPP_IPXCP;
- f->callbacks = &ipxcp_callbacks;
- fsm_init(&ipxcp_fsm[unit]);
-
- memset (wo->name, 0, sizeof (wo->name));
- memset (wo->our_node, 0, sizeof (wo->our_node));
- memset (wo->his_node, 0, sizeof (wo->his_node));
-
- wo->neg_nn = 1;
- wo->neg_complete = 1;
- wo->network = 0;
-
- ao->neg_node = 1;
- ao->neg_nn = 1;
- ao->neg_name = 1;
- ao->neg_complete = 1;
- ao->neg_router = 1;
-
- ao->accept_local = 0;
- ao->accept_remote = 0;
- ao->accept_network = 0;
-
- wo->tried_rip = 0;
- wo->tried_nlsp = 0;
-}
-
-/*
- * Copy the node number
- */
-
-static void
-copy_node (src, dst)
-u_char *src, *dst;
-{
- memcpy (dst, src, sizeof (ipxcp_wantoptions[0].our_node));
-}
-
-/*
- * Compare node numbers
- */
-
-static int
-compare_node (src, dst)
-u_char *src, *dst;
-{
- return memcmp (dst, src, sizeof (ipxcp_wantoptions[0].our_node)) == 0;
-}
-
-/*
- * Is the node number zero?
- */
-
-static int
-zero_node (node)
-u_char *node;
-{
- int indx;
- for (indx = 0; indx < sizeof (ipxcp_wantoptions[0].our_node); ++indx)
- if (node [indx] != 0)
- return 0;
- return 1;
-}
-
-/*
- * Increment the node number
- */
-
-static void
-inc_node (node)
-u_char *node;
-{
- u_char *outp;
- u_int32_t magic_num;
-
- outp = node;
- magic_num = magic();
- *outp++ = '\0';
- *outp++ = '\0';
- PUTLONG (magic_num, outp);
-}
-
-/*
- * ipxcp_open - IPXCP is allowed to come up.
- */
-static void
-ipxcp_open(unit)
- int unit;
-{
- fsm_open(&ipxcp_fsm[unit]);
-}
-
-/*
- * ipxcp_close - Take IPXCP down.
- */
-static void
-ipxcp_close(unit, reason)
- int unit;
- char *reason;
-{
- fsm_close(&ipxcp_fsm[unit], reason);
-}
-
-
-/*
- * ipxcp_lowerup - The lower layer is up.
- */
-static void
-ipxcp_lowerup(unit)
- int unit;
-{
- fsm_lowerup(&ipxcp_fsm[unit]);
-}
-
-
-/*
- * ipxcp_lowerdown - The lower layer is down.
- */
-static void
-ipxcp_lowerdown(unit)
- int unit;
-{
- fsm_lowerdown(&ipxcp_fsm[unit]);
-}
-
-
-/*
- * ipxcp_input - Input IPXCP packet.
- */
-static void
-ipxcp_input(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- fsm_input(&ipxcp_fsm[unit], p, len);
-}
-
-
-/*
- * ipxcp_protrej - A Protocol-Reject was received for IPXCP.
- *
- * Pretend the lower layer went down, so we shut up.
- */
-static void
-ipxcp_protrej(unit)
- int unit;
-{
- fsm_lowerdown(&ipxcp_fsm[unit]);
-}
-
-
-/*
- * ipxcp_resetci - Reset our CI.
- */
-static void
-ipxcp_resetci(f)
- fsm *f;
-{
- wo->req_node = wo->neg_node && ao->neg_node;
- wo->req_nn = wo->neg_nn && ao->neg_nn;
-
- if (wo->our_network == 0) {
- wo->neg_node = 1;
- ao->accept_network = 1;
- }
-/*
- * If our node number is zero then change it.
- */
- if (zero_node (wo->our_node)) {
- inc_node (wo->our_node);
- ao->accept_local = 1;
- wo->neg_node = 1;
- }
-/*
- * If his node number is zero then change it.
- */
- if (zero_node (wo->his_node)) {
- inc_node (wo->his_node);
- ao->accept_remote = 1;
- }
-/*
- * If no routing agent was specified then we do RIP/SAP according to the
- * RFC documents. If you have specified something then OK. Otherwise, we
- * do RIP/SAP.
- */
- if (ao->router == 0) {
- ao->router |= BIT(RIP_SAP);
- wo->router |= BIT(RIP_SAP);
- }
-
- /* Always specify a routing protocol unless it was REJected. */
- wo->neg_router = 1;
-/*
- * Start with these default values
- */
- *go = *wo;
-}
-
-/*
- * ipxcp_cilen - Return length of our CI.
- */
-
-static int
-ipxcp_cilen(f)
- fsm *f;
-{
- int len;
-
- len = go->neg_nn ? CILEN_NETN : 0;
- len += go->neg_node ? CILEN_NODEN : 0;
- len += go->neg_name ? CILEN_NAME + strlen (go->name) - 1 : 0;
-
- /* RFC says that defaults should not be included. */
- if (go->neg_router && to_external(go->router) != RIP_SAP)
- len += CILEN_PROTOCOL;
-
- return (len);
-}
-
-
-/*
- * ipxcp_addci - Add our desired CIs to a packet.
- */
-static void
-ipxcp_addci(f, ucp, lenp)
- fsm *f;
- u_char *ucp;
- int *lenp;
-{
-/*
- * Add the options to the record.
- */
- if (go->neg_nn) {
- PUTCHAR (IPX_NETWORK_NUMBER, ucp);
- PUTCHAR (CILEN_NETN, ucp);
- PUTLONG (go->our_network, ucp);
- }
-
- if (go->neg_node) {
- int indx;
- PUTCHAR (IPX_NODE_NUMBER, ucp);
- PUTCHAR (CILEN_NODEN, ucp);
- for (indx = 0; indx < sizeof (go->our_node); ++indx)
- PUTCHAR (go->our_node[indx], ucp);
- }
-
- if (go->neg_name) {
- int cilen = strlen (go->name);
- int indx;
- PUTCHAR (IPX_ROUTER_NAME, ucp);
- PUTCHAR (CILEN_NAME + cilen - 1, ucp);
- for (indx = 0; indx < cilen; ++indx)
- PUTCHAR (go->name [indx], ucp);
- }
-
- if (go->neg_router) {
- short external = to_external (go->router);
- if (external != RIP_SAP) {
- PUTCHAR (IPX_ROUTER_PROTOCOL, ucp);
- PUTCHAR (CILEN_PROTOCOL, ucp);
- PUTSHORT (external, ucp);
- }
- }
-}
-
-/*
- * ipxcp_ackci - Ack our CIs.
- *
- * Returns:
- * 0 - Ack was bad.
- * 1 - Ack was good.
- */
-static int
-ipxcp_ackci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- u_short cilen, citype, cishort;
- u_char cichar;
- u_int32_t cilong;
-
-#define ACKCIVOID(opt, neg) \
- if (neg) { \
- if ((len -= CILEN_VOID) < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_VOID || \
- citype != opt) \
- break; \
- }
-
-#define ACKCICOMPLETE(opt,neg) ACKCIVOID(opt, neg)
-
-#define ACKCICHARS(opt, neg, val, cnt) \
- if (neg) { \
- int indx, count = cnt; \
- len -= (count + 2); \
- if (len < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != (count + 2) || \
- citype != opt) \
- break; \
- for (indx = 0; indx < count; ++indx) {\
- GETCHAR(cichar, p); \
- if (cichar != ((u_char *) &val)[indx]) \
- break; \
- }\
- if (indx != count) \
- break; \
- }
-
-#define ACKCINODE(opt,neg,val) ACKCICHARS(opt,neg,val,sizeof(val))
-#define ACKCINAME(opt,neg,val) ACKCICHARS(opt,neg,val,strlen(val))
-
-#define ACKCINETWORK(opt, neg, val) \
- if (neg) { \
- if ((len -= CILEN_NETN) < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_NETN || \
- citype != opt) \
- break; \
- GETLONG(cilong, p); \
- if (cilong != val) \
- break; \
- }
-
-#define ACKCIPROTO(opt, neg, val) \
- if (neg) { \
- if (len < 2) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_PROTOCOL || citype != opt) \
- break; \
- len -= cilen; \
- if (len < 0) \
- break; \
- GETSHORT(cishort, p); \
- if (cishort != to_external (val) || cishort == RIP_SAP) \
- break; \
- }
-/*
- * Process the ACK frame in the order in which the frame was assembled
- */
- do {
- ACKCINETWORK (IPX_NETWORK_NUMBER, go->neg_nn, go->our_network);
- ACKCINODE (IPX_NODE_NUMBER, go->neg_node, go->our_node);
- ACKCINAME (IPX_ROUTER_NAME, go->neg_name, go->name);
- if (len > 0)
- ACKCIPROTO (IPX_ROUTER_PROTOCOL, go->neg_router, go->router);
-/*
- * This is the end of the record.
- */
- if (len == 0)
- return (1);
- } while (0);
-/*
- * The frame is invalid
- */
- IPXCPDEBUG(("ipxcp_ackci: received bad Ack!"));
- return (0);
-}
-
-/*
- * ipxcp_nakci - Peer has sent a NAK for some of our CIs.
- * This should not modify any state if the Nak is bad
- * or if IPXCP is in the OPENED state.
- *
- * Returns:
- * 0 - Nak was bad.
- * 1 - Nak was good.
- */
-
-static int
-ipxcp_nakci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- u_char citype, cilen, *next;
- u_short s;
- u_int32_t l;
- ipxcp_options no; /* options we've seen Naks for */
- ipxcp_options try; /* options to request next time */
-
- BZERO(&no, sizeof(no));
- try = *go;
-
- while (len > CILEN_VOID) {
- GETCHAR (citype, p);
- GETCHAR (cilen, p);
- len -= cilen;
- if (len < 0)
- goto bad;
- next = &p [cilen - CILEN_VOID];
-
- switch (citype) {
- case IPX_NETWORK_NUMBER:
- if (!go->neg_nn || no.neg_nn || (cilen != CILEN_NETN))
- goto bad;
- no.neg_nn = 1;
-
- GETLONG(l, p);
- if (l && ao->accept_network)
- try.our_network = l;
- break;
-
- case IPX_NODE_NUMBER:
- if (!go->neg_node || no.neg_node || (cilen != CILEN_NODEN))
- goto bad;
- no.neg_node = 1;
-
- if (!zero_node (p) && ao->accept_local &&
- ! compare_node (p, ho->his_node))
- copy_node (p, try.our_node);
- break;
-
- /* This has never been sent. Ignore the NAK frame */
- case IPX_COMPRESSION_PROTOCOL:
- goto bad;
-
- case IPX_ROUTER_PROTOCOL:
- if (!go->neg_router || (cilen < CILEN_PROTOCOL))
- goto bad;
-
- GETSHORT (s, p);
- if (s > 15) /* This is just bad, but ignore for now. */
- break;
-
- s = BIT(s);
- if (no.router & s) /* duplicate NAKs are always bad */
- goto bad;
-
- if (no.router == 0) /* Reset on first NAK only */
- try.router = 0;
-
- no.router |= s;
- try.router |= s;
- try.neg_router = 1;
- break;
-
- /* These, according to the RFC, must never be NAKed. */
- case IPX_ROUTER_NAME:
- case IPX_COMPLETE:
- goto bad;
-
- /* These are for options which we have not seen. */
- default:
- break;
- }
- p = next;
- }
-
- /*
- * Do not permit the peer to force a router protocol which we do not
- * support. However, default to the condition that will accept "NONE".
- */
- try.router &= (ao->router | BIT(IPX_NONE));
- if (try.router == 0 && ao->router != 0)
- try.router = BIT(IPX_NONE);
-
- if (try.router != 0)
- try.neg_router = 1;
-
- /*
- * OK, the Nak is good. Now we can update state.
- * If there are any options left, we ignore them.
- */
- if (f->state != OPENED)
- *go = try;
-
- return 1;
-
-bad:
- IPXCPDEBUG(("ipxcp_nakci: received bad Nak!"));
- return 0;
-}
-
-/*
- * ipxcp_rejci - Reject some of our CIs.
- */
-static int
-ipxcp_rejci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- u_short cilen, citype, cishort;
- u_char cichar;
- u_int32_t cilong;
- ipxcp_options try; /* options to request next time */
-
-#define REJCINETWORK(opt, neg, val) \
- if (neg && p[0] == opt) { \
- if ((len -= CILEN_NETN) < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_NETN || \
- citype != opt) \
- break; \
- GETLONG(cilong, p); \
- if (cilong != val) \
- break; \
- neg = 0; \
- }
-
-#define REJCICHARS(opt, neg, val, cnt) \
- if (neg && p[0] == opt) { \
- int indx, count = cnt; \
- len -= (count + 2); \
- if (len < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != (count + 2) || \
- citype != opt) \
- break; \
- for (indx = 0; indx < count; ++indx) {\
- GETCHAR(cichar, p); \
- if (cichar != ((u_char *) &val)[indx]) \
- break; \
- }\
- if (indx != count) \
- break; \
- neg = 0; \
- }
-
-#define REJCINODE(opt,neg,val) REJCICHARS(opt,neg,val,sizeof(val))
-#define REJCINAME(opt,neg,val) REJCICHARS(opt,neg,val,strlen(val))
-
-#define REJCIVOID(opt, neg) \
- if (neg && p[0] == opt) { \
- if ((len -= CILEN_VOID) < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_VOID || citype != opt) \
- break; \
- neg = 0; \
- }
-
-/* a reject for RIP/SAP is invalid since we don't send it and you can't
- reject something which is not sent. (You can NAK, but you can't REJ.) */
-#define REJCIPROTO(opt, neg, val, bit) \
- if (neg && p[0] == opt) { \
- if ((len -= CILEN_PROTOCOL) < 0) \
- break; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_PROTOCOL) \
- break; \
- GETSHORT(cishort, p); \
- if (cishort != to_external (val) || cishort == RIP_SAP) \
- break; \
- neg = 0; \
- }
-/*
- * Any Rejected CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
- try = *go;
-
- do {
- REJCINETWORK (IPX_NETWORK_NUMBER, try.neg_nn, try.our_network);
- REJCINODE (IPX_NODE_NUMBER, try.neg_node, try.our_node);
- REJCINAME (IPX_ROUTER_NAME, try.neg_name, try.name);
- REJCIPROTO (IPX_ROUTER_PROTOCOL, try.neg_router, try.router, 0);
-/*
- * This is the end of the record.
- */
- if (len == 0) {
- if (f->state != OPENED)
- *go = try;
- return (1);
- }
- } while (0);
-/*
- * The frame is invalid at this point.
- */
- IPXCPDEBUG(("ipxcp_rejci: received bad Reject!"));
- return 0;
-}
-
-/*
- * ipxcp_reqci - Check the peer's requested CIs and send appropriate response.
- *
- * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
- * appropriately. If reject_if_disagree is non-zero, doesn't return
- * CONFNAK; returns CONFREJ if it can't return CONFACK.
- */
-static int
-ipxcp_reqci(f, inp, len, reject_if_disagree)
- fsm *f;
- u_char *inp; /* Requested CIs */
- int *len; /* Length of requested CIs */
- int reject_if_disagree;
-{
- u_char *cip, *next; /* Pointer to current and next CIs */
- u_short cilen, citype; /* Parsed len, type */
- u_short cishort; /* Parsed short value */
- u_int32_t cinetwork; /* Parsed address values */
- int rc = CONFACK; /* Final packet return code */
- int orc; /* Individual option return code */
- u_char *p; /* Pointer to next char to parse */
- u_char *ucp = inp; /* Pointer to current output char */
- int l = *len; /* Length left */
-
- /*
- * Reset all his options.
- */
- BZERO(ho, sizeof(*ho));
-
- /*
- * Process all his options.
- */
- next = inp;
- while (l) {
- orc = CONFACK; /* Assume success */
- cip = p = next; /* Remember begining of CI */
- if (l < 2 || /* Not enough data for CI header or */
- p[1] < 2 || /* CI length too small or */
- p[1] > l) { /* CI length too big? */
- IPXCPDEBUG(("ipxcp_reqci: bad CI length!"));
- orc = CONFREJ; /* Reject bad CI */
- cilen = l; /* Reject till end of packet */
- l = 0; /* Don't loop again */
- goto endswitch;
- }
- GETCHAR(citype, p); /* Parse CI type */
- GETCHAR(cilen, p); /* Parse CI length */
- l -= cilen; /* Adjust remaining length */
- next += cilen; /* Step to next CI */
-
- switch (citype) { /* Check CI type */
-/*
- * The network number must match. Choose the larger of the two.
- */
- case IPX_NETWORK_NUMBER:
- /* if we wont negotiate the network number or the length is wrong
- then reject the option */
- if ( !ao->neg_nn || cilen != CILEN_NETN ) {
- orc = CONFREJ;
- break;
- }
- GETLONG(cinetwork, p);
-
- /* If the network numbers match then acknowledge them. */
- if (cinetwork != 0) {
- ho->his_network = cinetwork;
- ho->neg_nn = 1;
- if (wo->our_network == cinetwork)
- break;
-/*
- * If the network number is not given or we don't accept their change or
- * the network number is too small then NAK it.
- */
- if (! ao->accept_network || cinetwork < wo->our_network) {
- DECPTR (sizeof (u_int32_t), p);
- PUTLONG (wo->our_network, p);
- orc = CONFNAK;
- }
- break;
- }
-/*
- * The peer sent '0' for the network. Give it ours if we have one.
- */
- if (go->our_network != 0) {
- DECPTR (sizeof (u_int32_t), p);
- PUTLONG (wo->our_network, p);
- orc = CONFNAK;
-/*
- * We don't have one. Reject the value.
- */
- } else
- orc = CONFREJ;
-
- break;
-/*
- * The node number is required
- */
- case IPX_NODE_NUMBER:
- /* if we wont negotiate the node number or the length is wrong
- then reject the option */
- if ( cilen != CILEN_NODEN ) {
- orc = CONFREJ;
- break;
- }
-
- copy_node (p, ho->his_node);
- ho->neg_node = 1;
-/*
- * If the remote does not have a number and we do then NAK it with the value
- * which we have for it. (We never have a default value of zero.)
- */
- if (zero_node (ho->his_node)) {
- orc = CONFNAK;
- copy_node (wo->his_node, p);
- INCPTR (sizeof (wo->his_node), p);
- break;
- }
-/*
- * If you have given me the expected network node number then I'll accept
- * it now.
- */
- if (compare_node (wo->his_node, ho->his_node)) {
- orc = CONFACK;
- ho->neg_node = 1;
- INCPTR (sizeof (wo->his_node), p);
- break;
- }
-/*
- * If his node number is the same as ours then ask him to try the next
- * value.
- */
- if (compare_node (ho->his_node, go->our_node)) {
- inc_node (ho->his_node);
- orc = CONFNAK;
- copy_node (ho->his_node, p);
- INCPTR (sizeof (wo->his_node), p);
- break;
- }
-/*
- * If we don't accept a new value then NAK it.
- */
- if (! ao->accept_remote) {
- copy_node (wo->his_node, p);
- INCPTR (sizeof (wo->his_node), p);
- orc = CONFNAK;
- break;
- }
- orc = CONFACK;
- ho->neg_node = 1;
- INCPTR (sizeof (wo->his_node), p);
- break;
-/*
- * Compression is not desired at this time. It is always rejected.
- */
- case IPX_COMPRESSION_PROTOCOL:
- orc = CONFREJ;
- break;
-/*
- * The routing protocol is a bitmask of various types. Any combination
- * of the values RIP_SAP and NLSP are permissible. 'IPX_NONE' for no
- * routing protocol must be specified only once.
- */
- case IPX_ROUTER_PROTOCOL:
- if ( !ao->neg_router || cilen < CILEN_PROTOCOL ) {
- orc = CONFREJ;
- break;
- }
-
- GETSHORT (cishort, p);
-
- if (wo->neg_router == 0) {
- wo->neg_router = 1;
- wo->router = BIT(IPX_NONE);
- }
-
- if ((cishort == IPX_NONE && ho->router != 0) ||
- (ho->router & BIT(IPX_NONE))) {
- orc = CONFREJ;
- break;
- }
-
- cishort = BIT(cishort);
- if (ho->router & cishort) {
- orc = CONFREJ;
- break;
- }
-
- ho->router |= cishort;
- ho->neg_router = 1;
-
- /* Finally do not allow a router protocol which we do not
- support. */
-
- if ((cishort & (ao->router | BIT(IPX_NONE))) == 0) {
- int protocol;
-
- if (cishort == BIT(NLSP) &&
- (ao->router & BIT(RIP_SAP)) &&
- !wo->tried_rip) {
- protocol = RIP_SAP;
- wo->tried_rip = 1;
- } else
- protocol = IPX_NONE;
-
- DECPTR (sizeof (u_int16_t), p);
- PUTSHORT (protocol, p);
- orc = CONFNAK;
- }
- break;
-/*
- * The router name is advisorary. Just accept it if it is not too large.
- */
- case IPX_ROUTER_NAME:
- if (cilen >= CILEN_NAME) {
- int name_size = cilen - CILEN_NAME;
- if (name_size > sizeof (ho->name))
- name_size = sizeof (ho->name) - 1;
- memset (ho->name, 0, sizeof (ho->name));
- memcpy (ho->name, p, name_size);
- ho->name [name_size] = '\0';
- ho->neg_name = 1;
- orc = CONFACK;
- break;
- }
- orc = CONFREJ;
- break;
-/*
- * This is advisorary.
- */
- case IPX_COMPLETE:
- if (cilen != CILEN_COMPLETE)
- orc = CONFREJ;
- else {
- ho->neg_complete = 1;
- orc = CONFACK;
- }
- break;
-/*
- * All other entries are not known at this time.
- */
- default:
- orc = CONFREJ;
- break;
- }
-endswitch:
- if (orc == CONFACK && /* Good CI */
- rc != CONFACK) /* but prior CI wasnt? */
- continue; /* Don't send this one */
-
- if (orc == CONFNAK) { /* Nak this CI? */
- if (reject_if_disagree) /* Getting fed up with sending NAKs? */
- orc = CONFREJ; /* Get tough if so */
- if (rc == CONFREJ) /* Rejecting prior CI? */
- continue; /* Don't send this one */
- if (rc == CONFACK) { /* Ack'd all prior CIs? */
- rc = CONFNAK; /* Not anymore... */
- ucp = inp; /* Backup */
- }
- }
-
- if (orc == CONFREJ && /* Reject this CI */
- rc != CONFREJ) { /* but no prior ones? */
- rc = CONFREJ;
- ucp = inp; /* Backup */
- }
-
- /* Need to move CI? */
- if (ucp != cip)
- BCOPY(cip, ucp, cilen); /* Move it */
-
- /* Update output pointer */
- INCPTR(cilen, ucp);
- }
-
- /*
- * If we aren't rejecting this packet, and we want to negotiate
- * their address, and they didn't send their address, then we
- * send a NAK with a IPX_NODE_NUMBER option appended. We assume the
- * input buffer is long enough that we can append the extra
- * option safely.
- */
-
- if (rc != CONFREJ && !ho->neg_node &&
- wo->req_nn && !reject_if_disagree) {
- if (rc == CONFACK) {
- rc = CONFNAK;
- wo->req_nn = 0; /* don't ask again */
- ucp = inp; /* reset pointer */
- }
-
- if (zero_node (wo->his_node))
- inc_node (wo->his_node);
-
- PUTCHAR (IPX_NODE_NUMBER, ucp);
- PUTCHAR (CILEN_NODEN, ucp);
- copy_node (wo->his_node, ucp);
- INCPTR (sizeof (wo->his_node), ucp);
- }
-
- *len = ucp - inp; /* Compute output length */
- IPXCPDEBUG(("ipxcp: returning Configure-%s", CODENAME(rc)));
- return (rc); /* Return final code */
-}
-
-/*
- * ipxcp_up - IPXCP has come UP.
- *
- * Configure the IP network interface appropriately and bring it up.
- */
-
-static void
-ipxcp_up(f)
- fsm *f;
-{
- int unit = f->unit;
-
- IPXCPDEBUG(("ipxcp: up"));
-
- /* The default router protocol is RIP/SAP. */
- if (ho->router == 0)
- ho->router = BIT(RIP_SAP);
-
- if (go->router == 0)
- go->router = BIT(RIP_SAP);
-
- /* Fetch the network number */
- if (!ho->neg_nn)
- ho->his_network = wo->his_network;
-
- if (!ho->neg_node)
- copy_node (wo->his_node, ho->his_node);
-
- if (!wo->neg_node && !go->neg_node)
- copy_node (wo->our_node, go->our_node);
-
- if (zero_node (go->our_node)) {
- static char errmsg[] = "Could not determine local IPX node address";
- if (debug)
- error(errmsg);
- ipxcp_close(f->unit, errmsg);
- return;
- }
-
- go->network = go->our_network;
- if (ho->his_network != 0 && ho->his_network > go->network)
- go->network = ho->his_network;
-
- if (go->network == 0) {
- static char errmsg[] = "Can not determine network number";
- if (debug)
- error(errmsg);
- ipxcp_close (unit, errmsg);
- return;
- }
-
- /* bring the interface up */
- if (!sifup(unit)) {
- if (debug)
- warn("sifup failed (IPX)");
- ipxcp_close(unit, "Interface configuration failed");
- return;
- }
- ipxcp_is_up = 1;
-
- /* set the network number for IPX */
- if (!sipxfaddr(unit, go->network, go->our_node)) {
- if (debug)
- warn("sipxfaddr failed");
- ipxcp_close(unit, "Interface configuration failed");
- return;
- }
-
- np_up(f->unit, PPP_IPX);
-
- /*
- * Execute the ipx-up script, like this:
- * /etc/ppp/ipx-up interface tty speed local-IPX remote-IPX
- */
-
- ipxcp_script (f, _PATH_IPXUP);
-}
-
-/*
- * ipxcp_down - IPXCP has gone DOWN.
- *
- * Take the IP network interface down, clear its addresses
- * and delete routes through it.
- */
-
-static void
-ipxcp_down(f)
- fsm *f;
-{
- IPXCPDEBUG(("ipxcp: down"));
-
- if (!ipxcp_is_up)
- return;
- ipxcp_is_up = 0;
- np_down(f->unit, PPP_IPX);
- cipxfaddr(f->unit);
- sifnpmode(f->unit, PPP_IPX, NPMODE_DROP);
- sifdown(f->unit);
- ipxcp_script (f, _PATH_IPXDOWN);
-}
-
-
-/*
- * ipxcp_finished - possibly shut down the lower layers.
- */
-static void
-ipxcp_finished(f)
- fsm *f;
-{
- np_finished(f->unit, PPP_IPX);
-}
-
-
-/*
- * ipxcp_script - Execute a script with arguments
- * interface-name tty-name speed local-IPX remote-IPX networks.
- */
-static void
-ipxcp_script(f, script)
- fsm *f;
- char *script;
-{
- char strspeed[32], strlocal[32], strremote[32];
- char strnetwork[32], strpid[32];
- char *argv[14], strproto_lcl[32], strproto_rmt[32];
-
- slprintf(strpid, sizeof(strpid), "%d", getpid());
- slprintf(strspeed, sizeof(strspeed),"%d", baud_rate);
-
- strproto_lcl[0] = '\0';
- if (go->neg_router && ((go->router & BIT(IPX_NONE)) == 0)) {
- if (go->router & BIT(RIP_SAP))
- strlcpy (strproto_lcl, "RIP ", sizeof(strproto_lcl));
- if (go->router & BIT(NLSP))
- strlcat (strproto_lcl, "NLSP ", sizeof(strproto_lcl));
- }
-
- if (strproto_lcl[0] == '\0')
- strlcpy (strproto_lcl, "NONE ", sizeof(strproto_lcl));
-
- strproto_lcl[strlen (strproto_lcl)-1] = '\0';
-
- strproto_rmt[0] = '\0';
- if (ho->neg_router && ((ho->router & BIT(IPX_NONE)) == 0)) {
- if (ho->router & BIT(RIP_SAP))
- strlcpy (strproto_rmt, "RIP ", sizeof(strproto_rmt));
- if (ho->router & BIT(NLSP))
- strlcat (strproto_rmt, "NLSP ", sizeof(strproto_rmt));
- }
-
- if (strproto_rmt[0] == '\0')
- strlcpy (strproto_rmt, "NONE ", sizeof(strproto_rmt));
-
- strproto_rmt[strlen (strproto_rmt)-1] = '\0';
-
- strlcpy (strnetwork, ipx_ntoa (go->network), sizeof(strnetwork));
-
- slprintf (strlocal, sizeof(strlocal), "%0.6B", go->our_node);
-
- slprintf (strremote, sizeof(strremote), "%0.6B", ho->his_node);
-
- argv[0] = script;
- argv[1] = ifname;
- argv[2] = devnam;
- argv[3] = strspeed;
- argv[4] = strnetwork;
- argv[5] = strlocal;
- argv[6] = strremote;
- argv[7] = strproto_lcl;
- argv[8] = strproto_rmt;
- argv[9] = go->name;
- argv[10] = ho->name;
- argv[11] = ipparam;
- argv[12] = strpid;
- argv[13] = NULL;
- run_program(script, argv, 0, NULL, NULL);
-}
-
-/*
- * ipxcp_printpkt - print the contents of an IPXCP packet.
- */
-static char *ipxcp_codenames[] = {
- "ConfReq", "ConfAck", "ConfNak", "ConfRej",
- "TermReq", "TermAck", "CodeRej"
-};
-
-static int
-ipxcp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len, olen;
- u_char *pstart, *optend;
- u_short cishort;
- u_int32_t cilong;
-
- if (plen < HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(ipxcp_codenames) / sizeof(char *))
- printer(arg, " %s", ipxcp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- /* print option list */
- while (len >= 2) {
- GETCHAR(code, p);
- GETCHAR(olen, p);
- p -= 2;
- if (olen < CILEN_VOID || olen > len) {
- break;
- }
- printer(arg, " <");
- len -= olen;
- optend = p + olen;
- switch (code) {
- case IPX_NETWORK_NUMBER:
- if (olen == CILEN_NETN) {
- p += 2;
- GETLONG(cilong, p);
- printer (arg, "network %s", ipx_ntoa (cilong));
- }
- break;
- case IPX_NODE_NUMBER:
- if (olen == CILEN_NODEN) {
- p += 2;
- printer (arg, "node ");
- while (p < optend) {
- GETCHAR(code, p);
- printer(arg, "%.2x", (int) (unsigned int) (unsigned char) code);
- }
- }
- break;
- case IPX_COMPRESSION_PROTOCOL:
- if (olen == CILEN_COMPRESS) {
- p += 2;
- GETSHORT (cishort, p);
- printer (arg, "compression %d", (int) cishort);
- }
- break;
- case IPX_ROUTER_PROTOCOL:
- if (olen == CILEN_PROTOCOL) {
- p += 2;
- GETSHORT (cishort, p);
- printer (arg, "router proto %d", (int) cishort);
- }
- break;
- case IPX_ROUTER_NAME:
- if (olen >= CILEN_NAME) {
- p += 2;
- printer (arg, "router name \"");
- while (p < optend) {
- GETCHAR(code, p);
- if (code >= 0x20 && code <= 0x7E)
- printer (arg, "%c", (int) (unsigned int) (unsigned char) code);
- else
- printer (arg, " \\%.2x", (int) (unsigned int) (unsigned char) code);
- }
- printer (arg, "\"");
- }
- break;
- case IPX_COMPLETE:
- if (olen == CILEN_COMPLETE) {
- p += 2;
- printer (arg, "complete");
- }
- break;
- default:
- break;
- }
-
- while (p < optend) {
- GETCHAR(code, p);
- printer(arg, " %.2x", (int) (unsigned int) (unsigned char) code);
- }
- printer(arg, ">");
- }
- break;
-
- case TERMACK:
- case TERMREQ:
- if (len > 0 && *p >= ' ' && *p < 0x7f) {
- printer(arg, " ");
- print_string(p, len, printer, arg);
- p += len;
- len = 0;
- }
- break;
- }
-
- /* print the rest of the bytes in the packet */
- for (; len > 0; --len) {
- GETCHAR(code, p);
- printer(arg, " %.2x", (int) (unsigned int) (unsigned char) code);
- }
-
- return p - pstart;
-}
-#endif /* ifdef IPX_CHANGE */
diff --git a/mdk-stage1/ppp/pppd/ipxcp.h b/mdk-stage1/ppp/pppd/ipxcp.h
deleted file mode 100644
index 47f680d70..000000000
--- a/mdk-stage1/ppp/pppd/ipxcp.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * ipxcp.h - IPX Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Options.
- */
-#define IPX_NETWORK_NUMBER 1 /* IPX Network Number */
-#define IPX_NODE_NUMBER 2
-#define IPX_COMPRESSION_PROTOCOL 3
-#define IPX_ROUTER_PROTOCOL 4
-#define IPX_ROUTER_NAME 5
-#define IPX_COMPLETE 6
-
-/* Values for the router protocol */
-#define IPX_NONE 0
-#define RIP_SAP 2
-#define NLSP 4
-
-typedef struct ipxcp_options {
- bool neg_node; /* Negotiate IPX node number? */
- bool req_node; /* Ask peer to send IPX node number? */
-
- bool neg_nn; /* Negotiate IPX network number? */
- bool req_nn; /* Ask peer to send IPX network number */
-
- bool neg_name; /* Negotiate IPX router name */
- bool neg_complete; /* Negotiate completion */
- bool neg_router; /* Negotiate IPX router number */
-
- bool accept_local; /* accept peer's value for ournode */
- bool accept_remote; /* accept peer's value for hisnode */
- bool accept_network; /* accept network number */
-
- bool tried_nlsp; /* I have suggested NLSP already */
- bool tried_rip; /* I have suggested RIP/SAP already */
-
- u_int32_t his_network; /* base network number */
- u_int32_t our_network; /* our value for network number */
- u_int32_t network; /* the final network number */
-
- u_char his_node[6]; /* peer's node number */
- u_char our_node[6]; /* our node number */
- u_char name [48]; /* name of the router */
- int router; /* routing protocol */
-} ipxcp_options;
-
-extern fsm ipxcp_fsm[];
-extern ipxcp_options ipxcp_wantoptions[];
-extern ipxcp_options ipxcp_gotoptions[];
-extern ipxcp_options ipxcp_allowoptions[];
-extern ipxcp_options ipxcp_hisoptions[];
-
-extern struct protent ipxcp_protent;
diff --git a/mdk-stage1/ppp/pppd/lcp.c b/mdk-stage1/ppp/pppd/lcp.c
deleted file mode 100644
index 41c58cad5..000000000
--- a/mdk-stage1/ppp/pppd/lcp.c
+++ /dev/null
@@ -1,2224 +0,0 @@
-/*
- * lcp.c - PPP Link Control Protocol.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "lcp.h"
-#include "chap.h"
-#include "magic.h"
-
-static const char rcsid[] = RCSID;
-
-/*
- * When the link comes up we want to be able to wait for a short while,
- * or until seeing some input from the peer, before starting to send
- * configure-requests. We do this by delaying the fsm_lowerup call.
- */
-/* steal a bit in fsm flags word */
-#define DELAYED_UP 0x100
-
-static void lcp_delayed_up __P((void *));
-
-/*
- * LCP-related command-line options.
- */
-int lcp_echo_interval = 0; /* Interval between LCP echo-requests */
-int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */
-bool lax_recv = 0; /* accept control chars in asyncmap */
-bool noendpoint = 0; /* don't send/accept endpoint discriminator */
-
-static int noopt __P((char **));
-
-#ifdef HAVE_MULTILINK
-static int setendpoint __P((char **));
-static void printendpoint __P((option_t *, void (*)(void *, char *, ...),
- void *));
-#endif /* HAVE_MULTILINK */
-
-static option_t lcp_option_list[] = {
- /* LCP options */
- { "-all", o_special_noarg, (void *)noopt,
- "Don't request/allow any LCP options" },
-
- { "noaccomp", o_bool, &lcp_wantoptions[0].neg_accompression,
- "Disable address/control compression",
- OPT_A2CLR, &lcp_allowoptions[0].neg_accompression },
- { "-ac", o_bool, &lcp_wantoptions[0].neg_accompression,
- "Disable address/control compression",
- OPT_ALIAS | OPT_A2CLR, &lcp_allowoptions[0].neg_accompression },
-
- { "asyncmap", o_uint32, &lcp_wantoptions[0].asyncmap,
- "Set asyncmap (for received packets)",
- OPT_OR, &lcp_wantoptions[0].neg_asyncmap },
- { "-as", o_uint32, &lcp_wantoptions[0].asyncmap,
- "Set asyncmap (for received packets)",
- OPT_ALIAS | OPT_OR, &lcp_wantoptions[0].neg_asyncmap },
- { "default-asyncmap", o_uint32, &lcp_wantoptions[0].asyncmap,
- "Disable asyncmap negotiation",
- OPT_OR | OPT_NOARG | OPT_VAL(~0U) | OPT_A2CLR,
- &lcp_allowoptions[0].neg_asyncmap },
- { "-am", o_uint32, &lcp_wantoptions[0].asyncmap,
- "Disable asyncmap negotiation",
- OPT_ALIAS | OPT_OR | OPT_NOARG | OPT_VAL(~0U) | OPT_A2CLR,
- &lcp_allowoptions[0].neg_asyncmap },
-
- { "nomagic", o_bool, &lcp_wantoptions[0].neg_magicnumber,
- "Disable magic number negotiation (looped-back line detection)",
- OPT_A2CLR, &lcp_allowoptions[0].neg_magicnumber },
- { "-mn", o_bool, &lcp_wantoptions[0].neg_magicnumber,
- "Disable magic number negotiation (looped-back line detection)",
- OPT_ALIAS | OPT_A2CLR, &lcp_allowoptions[0].neg_magicnumber },
-
- { "mru", o_int, &lcp_wantoptions[0].mru,
- "Set MRU (maximum received packet size) for negotiation",
- OPT_PRIO, &lcp_wantoptions[0].neg_mru },
- { "default-mru", o_bool, &lcp_wantoptions[0].neg_mru,
- "Disable MRU negotiation (use default 1500)",
- OPT_PRIOSUB | OPT_A2CLR, &lcp_allowoptions[0].neg_mru },
- { "-mru", o_bool, &lcp_wantoptions[0].neg_mru,
- "Disable MRU negotiation (use default 1500)",
- OPT_ALIAS | OPT_PRIOSUB | OPT_A2CLR, &lcp_allowoptions[0].neg_mru },
-
- { "mtu", o_int, &lcp_allowoptions[0].mru,
- "Set our MTU", OPT_LIMITS, NULL, MAXMRU, MINMRU },
-
- { "nopcomp", o_bool, &lcp_wantoptions[0].neg_pcompression,
- "Disable protocol field compression",
- OPT_A2CLR, &lcp_allowoptions[0].neg_pcompression },
- { "-pc", o_bool, &lcp_wantoptions[0].neg_pcompression,
- "Disable protocol field compression",
- OPT_ALIAS | OPT_A2CLR, &lcp_allowoptions[0].neg_pcompression },
-
- { "passive", o_bool, &lcp_wantoptions[0].passive,
- "Set passive mode", 1 },
- { "-p", o_bool, &lcp_wantoptions[0].passive,
- "Set passive mode", OPT_ALIAS | 1 },
-
- { "silent", o_bool, &lcp_wantoptions[0].silent,
- "Set silent mode", 1 },
-
- { "lcp-echo-failure", o_int, &lcp_echo_fails,
- "Set number of consecutive echo failures to indicate link failure",
- OPT_PRIO },
- { "lcp-echo-interval", o_int, &lcp_echo_interval,
- "Set time in seconds between LCP echo requests", OPT_PRIO },
- { "lcp-restart", o_int, &lcp_fsm[0].timeouttime,
- "Set time in seconds between LCP retransmissions", OPT_PRIO },
- { "lcp-max-terminate", o_int, &lcp_fsm[0].maxtermtransmits,
- "Set maximum number of LCP terminate-request transmissions", OPT_PRIO },
- { "lcp-max-configure", o_int, &lcp_fsm[0].maxconfreqtransmits,
- "Set maximum number of LCP configure-request transmissions", OPT_PRIO },
- { "lcp-max-failure", o_int, &lcp_fsm[0].maxnakloops,
- "Set limit on number of LCP configure-naks", OPT_PRIO },
-
- { "receive-all", o_bool, &lax_recv,
- "Accept all received control characters", 1 },
-
-#ifdef HAVE_MULTILINK
- { "mrru", o_int, &lcp_wantoptions[0].mrru,
- "Maximum received packet size for multilink bundle",
- OPT_PRIO, &lcp_wantoptions[0].neg_mrru },
-
- { "mpshortseq", o_bool, &lcp_wantoptions[0].neg_ssnhf,
- "Use short sequence numbers in multilink headers",
- OPT_PRIO | 1, &lcp_allowoptions[0].neg_ssnhf },
- { "nompshortseq", o_bool, &lcp_wantoptions[0].neg_ssnhf,
- "Don't use short sequence numbers in multilink headers",
- OPT_PRIOSUB | OPT_A2CLR, &lcp_allowoptions[0].neg_ssnhf },
-
- { "endpoint", o_special, (void *) setendpoint,
- "Endpoint discriminator for multilink",
- OPT_PRIO | OPT_A2PRINTER, (void *) printendpoint },
-#endif /* HAVE_MULTILINK */
-
- { "noendpoint", o_bool, &noendpoint,
- "Don't send or accept multilink endpoint discriminator", 1 },
-
- {NULL}
-};
-
-/* global vars */
-fsm lcp_fsm[NUM_PPP]; /* LCP fsm structure (global)*/
-lcp_options lcp_wantoptions[NUM_PPP]; /* Options that we want to request */
-lcp_options lcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */
-lcp_options lcp_allowoptions[NUM_PPP]; /* Options we allow peer to request */
-lcp_options lcp_hisoptions[NUM_PPP]; /* Options that we ack'd */
-
-static int lcp_echos_pending = 0; /* Number of outstanding echo msgs */
-static int lcp_echo_number = 0; /* ID number of next echo frame */
-static int lcp_echo_timer_running = 0; /* set if a timer is running */
-
-static u_char nak_buffer[PPP_MRU]; /* where we construct a nak packet */
-
-/*
- * Callbacks for fsm code. (CI = Configuration Information)
- */
-static void lcp_resetci __P((fsm *)); /* Reset our CI */
-static int lcp_cilen __P((fsm *)); /* Return length of our CI */
-static void lcp_addci __P((fsm *, u_char *, int *)); /* Add our CI to pkt */
-static int lcp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
-static int lcp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
-static int lcp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
-static int lcp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv peer CI */
-static void lcp_up __P((fsm *)); /* We're UP */
-static void lcp_down __P((fsm *)); /* We're DOWN */
-static void lcp_starting __P((fsm *)); /* We need lower layer up */
-static void lcp_finished __P((fsm *)); /* We need lower layer down */
-static int lcp_extcode __P((fsm *, int, int, u_char *, int));
-static void lcp_rprotrej __P((fsm *, u_char *, int));
-
-/*
- * routines to send LCP echos to peer
- */
-
-static void lcp_echo_lowerup __P((int));
-static void lcp_echo_lowerdown __P((int));
-static void LcpEchoTimeout __P((void *));
-static void lcp_received_echo_reply __P((fsm *, int, u_char *, int));
-static void LcpSendEchoRequest __P((fsm *));
-static void LcpLinkFailure __P((fsm *));
-static void LcpEchoCheck __P((fsm *));
-
-static fsm_callbacks lcp_callbacks = { /* LCP callback routines */
- lcp_resetci, /* Reset our Configuration Information */
- lcp_cilen, /* Length of our Configuration Information */
- lcp_addci, /* Add our Configuration Information */
- lcp_ackci, /* ACK our Configuration Information */
- lcp_nakci, /* NAK our Configuration Information */
- lcp_rejci, /* Reject our Configuration Information */
- lcp_reqci, /* Request peer's Configuration Information */
- lcp_up, /* Called when fsm reaches OPENED state */
- lcp_down, /* Called when fsm leaves OPENED state */
- lcp_starting, /* Called when we want the lower layer up */
- lcp_finished, /* Called when we want the lower layer down */
- NULL, /* Called when Protocol-Reject received */
- NULL, /* Retransmission is necessary */
- lcp_extcode, /* Called to handle LCP-specific codes */
- "LCP" /* String name of protocol */
-};
-
-/*
- * Protocol entry points.
- * Some of these are called directly.
- */
-
-static void lcp_init __P((int));
-static void lcp_input __P((int, u_char *, int));
-static void lcp_protrej __P((int));
-static int lcp_printpkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-
-struct protent lcp_protent = {
- PPP_LCP,
- lcp_init,
- lcp_input,
- lcp_protrej,
- lcp_lowerup,
- lcp_lowerdown,
- lcp_open,
- lcp_close,
- lcp_printpkt,
- NULL,
- 1,
- "LCP",
- NULL,
- lcp_option_list,
- NULL,
- NULL,
- NULL
-};
-
-int lcp_loopbackfail = DEFLOOPBACKFAIL;
-
-/*
- * Length of each type of configuration option (in octets)
- */
-#define CILEN_VOID 2
-#define CILEN_CHAR 3
-#define CILEN_SHORT 4 /* CILEN_VOID + 2 */
-#define CILEN_CHAP 5 /* CILEN_VOID + 2 + 1 */
-#define CILEN_LONG 6 /* CILEN_VOID + 4 */
-#define CILEN_LQR 8 /* CILEN_VOID + 2 + 4 */
-#define CILEN_CBCP 3
-
-#define CODENAME(x) ((x) == CONFACK ? "ACK" : \
- (x) == CONFNAK ? "NAK" : "REJ")
-
-/*
- * noopt - Disable all options (why?).
- */
-static int
-noopt(argv)
- char **argv;
-{
- BZERO((char *) &lcp_wantoptions[0], sizeof (struct lcp_options));
- BZERO((char *) &lcp_allowoptions[0], sizeof (struct lcp_options));
-
- return (1);
-}
-
-#ifdef HAVE_MULTILINK
-static int
-setendpoint(argv)
- char **argv;
-{
- if (str_to_epdisc(&lcp_wantoptions[0].endpoint, *argv)) {
- lcp_wantoptions[0].neg_endpoint = 1;
- return 1;
- }
- option_error("Can't parse '%s' as an endpoint discriminator", *argv);
- return 0;
-}
-
-static void
-printendpoint(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- printer(arg, "%s", epdisc_to_str(&lcp_wantoptions[0].endpoint));
-}
-#endif /* HAVE_MULTILINK */
-
-/*
- * lcp_init - Initialize LCP.
- */
-static void
-lcp_init(unit)
- int unit;
-{
- fsm *f = &lcp_fsm[unit];
- lcp_options *wo = &lcp_wantoptions[unit];
- lcp_options *ao = &lcp_allowoptions[unit];
-
- f->unit = unit;
- f->protocol = PPP_LCP;
- f->callbacks = &lcp_callbacks;
-
- fsm_init(f);
-
- BZERO(wo, sizeof(*wo));
- wo->neg_mru = 1;
- wo->mru = DEFMRU;
- wo->neg_asyncmap = 1;
- wo->chap_mdtype = CHAP_DIGEST_MD5;
- wo->neg_magicnumber = 1;
- wo->neg_pcompression = 1;
- wo->neg_accompression = 1;
-
- BZERO(ao, sizeof(*ao));
- ao->neg_mru = 1;
- ao->mru = MAXMRU;
- ao->neg_asyncmap = 1;
- ao->neg_chap = 1;
- ao->chap_mdtype = CHAP_DIGEST_MD5;
- ao->neg_upap = 1;
- ao->neg_magicnumber = 1;
- ao->neg_pcompression = 1;
- ao->neg_accompression = 1;
-#ifdef CBCP_SUPPORT
- ao->neg_cbcp = 1;
-#endif
- ao->neg_endpoint = 1;
-}
-
-
-/*
- * lcp_open - LCP is allowed to come up.
- */
-void
-lcp_open(unit)
- int unit;
-{
- fsm *f = &lcp_fsm[unit];
- lcp_options *wo = &lcp_wantoptions[unit];
-
- f->flags &= ~(OPT_PASSIVE | OPT_SILENT);
- if (wo->passive)
- f->flags |= OPT_PASSIVE;
- if (wo->silent)
- f->flags |= OPT_SILENT;
- fsm_open(f);
-}
-
-
-/*
- * lcp_close - Take LCP down.
- */
-void
-lcp_close(unit, reason)
- int unit;
- char *reason;
-{
- fsm *f = &lcp_fsm[unit];
-
- if (phase != PHASE_DEAD)
- new_phase(PHASE_TERMINATE);
- if (f->state == STOPPED && f->flags & (OPT_PASSIVE|OPT_SILENT)) {
- /*
- * This action is not strictly according to the FSM in RFC1548,
- * but it does mean that the program terminates if you do a
- * lcp_close() in passive/silent mode when a connection hasn't
- * been established.
- */
- f->state = CLOSED;
- lcp_finished(f);
-
- } else
- fsm_close(&lcp_fsm[unit], reason);
-}
-
-
-/*
- * lcp_lowerup - The lower layer is up.
- */
-void
-lcp_lowerup(unit)
- int unit;
-{
- lcp_options *wo = &lcp_wantoptions[unit];
- fsm *f = &lcp_fsm[unit];
-
- /*
- * Don't use A/C or protocol compression on transmission,
- * but accept A/C and protocol compressed packets
- * if we are going to ask for A/C and protocol compression.
- */
- ppp_send_config(unit, PPP_MRU, 0xffffffff, 0, 0);
- ppp_recv_config(unit, PPP_MRU, (lax_recv? 0: 0xffffffff),
- wo->neg_pcompression, wo->neg_accompression);
- peer_mru[unit] = PPP_MRU;
-
- if (listen_time != 0) {
- f->flags |= DELAYED_UP;
- timeout(lcp_delayed_up, f, 0, listen_time * 1000);
- } else
- fsm_lowerup(f);
-}
-
-
-/*
- * lcp_lowerdown - The lower layer is down.
- */
-void
-lcp_lowerdown(unit)
- int unit;
-{
- fsm *f = &lcp_fsm[unit];
-
- if (f->flags & DELAYED_UP)
- f->flags &= ~DELAYED_UP;
- else
- fsm_lowerdown(&lcp_fsm[unit]);
-}
-
-
-/*
- * lcp_delayed_up - Bring the lower layer up now.
- */
-static void
-lcp_delayed_up(arg)
- void *arg;
-{
- fsm *f = arg;
-
- if (f->flags & DELAYED_UP) {
- f->flags &= ~DELAYED_UP;
- fsm_lowerup(f);
- }
-}
-
-
-/*
- * lcp_input - Input LCP packet.
- */
-static void
-lcp_input(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- fsm *f = &lcp_fsm[unit];
-
- if (f->flags & DELAYED_UP) {
- f->flags &= ~DELAYED_UP;
- fsm_lowerup(f);
- }
- fsm_input(f, p, len);
-}
-
-
-/*
- * lcp_extcode - Handle a LCP-specific code.
- */
-static int
-lcp_extcode(f, code, id, inp, len)
- fsm *f;
- int code, id;
- u_char *inp;
- int len;
-{
- u_char *magp;
-
- switch( code ){
- case PROTREJ:
- lcp_rprotrej(f, inp, len);
- break;
-
- case ECHOREQ:
- if (f->state != OPENED)
- break;
- magp = inp;
- PUTLONG(lcp_gotoptions[f->unit].magicnumber, magp);
- fsm_sdata(f, ECHOREP, id, inp, len);
- break;
-
- case ECHOREP:
- lcp_received_echo_reply(f, id, inp, len);
- break;
-
- case DISCREQ:
- break;
-
- default:
- return 0;
- }
- return 1;
-}
-
-
-/*
- * lcp_rprotrej - Receive an Protocol-Reject.
- *
- * Figure out which protocol is rejected and inform it.
- */
-static void
-lcp_rprotrej(f, inp, len)
- fsm *f;
- u_char *inp;
- int len;
-{
- int i;
- struct protent *protp;
- u_short prot;
-
- if (len < 2) {
- LCPDEBUG(("lcp_rprotrej: Rcvd short Protocol-Reject packet!"));
- return;
- }
-
- GETSHORT(prot, inp);
-
- /*
- * Protocol-Reject packets received in any state other than the LCP
- * OPENED state SHOULD be silently discarded.
- */
- if( f->state != OPENED ){
- LCPDEBUG(("Protocol-Reject discarded: LCP in state %d", f->state));
- return;
- }
-
- /*
- * Upcall the proper Protocol-Reject routine.
- */
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->protocol == prot && protp->enabled_flag) {
- (*protp->protrej)(f->unit);
- return;
- }
-
- warn("Protocol-Reject for unsupported protocol 0x%x", prot);
-}
-
-
-/*
- * lcp_protrej - A Protocol-Reject was received.
- */
-/*ARGSUSED*/
-static void
-lcp_protrej(unit)
- int unit;
-{
- /*
- * Can't reject LCP!
- */
- error("Received Protocol-Reject for LCP!");
- fsm_protreject(&lcp_fsm[unit]);
-}
-
-
-/*
- * lcp_sprotrej - Send a Protocol-Reject for some protocol.
- */
-void
-lcp_sprotrej(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- /*
- * Send back the protocol and the information field of the
- * rejected packet. We only get here if LCP is in the OPENED state.
- */
- p += 2;
- len -= 2;
-
- fsm_sdata(&lcp_fsm[unit], PROTREJ, ++lcp_fsm[unit].id,
- p, len);
-}
-
-
-/*
- * lcp_resetci - Reset our CI.
- */
-static void
-lcp_resetci(f)
- fsm *f;
-{
- lcp_options *wo = &lcp_wantoptions[f->unit];
- lcp_options *go = &lcp_gotoptions[f->unit];
- lcp_options *ao = &lcp_allowoptions[f->unit];
-
- wo->magicnumber = magic();
- wo->numloops = 0;
- *go = *wo;
- if (!multilink) {
- go->neg_mrru = 0;
- go->neg_ssnhf = 0;
- go->neg_endpoint = 0;
- }
- if (noendpoint)
- ao->neg_endpoint = 0;
- peer_mru[f->unit] = PPP_MRU;
- auth_reset(f->unit);
-}
-
-
-/*
- * lcp_cilen - Return length of our CI.
- */
-static int
-lcp_cilen(f)
- fsm *f;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
-
-#define LENCIVOID(neg) ((neg) ? CILEN_VOID : 0)
-#define LENCICHAP(neg) ((neg) ? CILEN_CHAP : 0)
-#define LENCISHORT(neg) ((neg) ? CILEN_SHORT : 0)
-#define LENCILONG(neg) ((neg) ? CILEN_LONG : 0)
-#define LENCILQR(neg) ((neg) ? CILEN_LQR: 0)
-#define LENCICBCP(neg) ((neg) ? CILEN_CBCP: 0)
- /*
- * NB: we only ask for one of CHAP and UPAP, even if we will
- * accept either.
- */
- return (LENCISHORT(go->neg_mru && go->mru != DEFMRU) +
- LENCILONG(go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF) +
- LENCICHAP(go->neg_chap) +
- LENCISHORT(!go->neg_chap && go->neg_upap) +
- LENCILQR(go->neg_lqr) +
- LENCICBCP(go->neg_cbcp) +
- LENCILONG(go->neg_magicnumber) +
- LENCIVOID(go->neg_pcompression) +
- LENCIVOID(go->neg_accompression) +
- LENCISHORT(go->neg_mrru) +
- LENCIVOID(go->neg_ssnhf) +
- (go->neg_endpoint? CILEN_CHAR + go->endpoint.length: 0));
-}
-
-
-/*
- * lcp_addci - Add our desired CIs to a packet.
- */
-static void
-lcp_addci(f, ucp, lenp)
- fsm *f;
- u_char *ucp;
- int *lenp;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
- u_char *start_ucp = ucp;
-
-#define ADDCIVOID(opt, neg) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_VOID, ucp); \
- }
-#define ADDCISHORT(opt, neg, val) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_SHORT, ucp); \
- PUTSHORT(val, ucp); \
- }
-#define ADDCICHAP(opt, neg, val, digest) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_CHAP, ucp); \
- PUTSHORT(val, ucp); \
- PUTCHAR(digest, ucp); \
- }
-#define ADDCILONG(opt, neg, val) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_LONG, ucp); \
- PUTLONG(val, ucp); \
- }
-#define ADDCILQR(opt, neg, val) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_LQR, ucp); \
- PUTSHORT(PPP_LQR, ucp); \
- PUTLONG(val, ucp); \
- }
-#define ADDCICHAR(opt, neg, val) \
- if (neg) { \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_CHAR, ucp); \
- PUTCHAR(val, ucp); \
- }
-#define ADDCIENDP(opt, neg, class, val, len) \
- if (neg) { \
- int i; \
- PUTCHAR(opt, ucp); \
- PUTCHAR(CILEN_CHAR + len, ucp); \
- PUTCHAR(class, ucp); \
- for (i = 0; i < len; ++i) \
- PUTCHAR(val[i], ucp); \
- }
-
- ADDCISHORT(CI_MRU, go->neg_mru && go->mru != DEFMRU, go->mru);
- ADDCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF,
- go->asyncmap);
- ADDCICHAP(CI_AUTHTYPE, go->neg_chap, PPP_CHAP, go->chap_mdtype);
- ADDCISHORT(CI_AUTHTYPE, !go->neg_chap && go->neg_upap, PPP_PAP);
- ADDCILQR(CI_QUALITY, go->neg_lqr, go->lqr_period);
- ADDCICHAR(CI_CALLBACK, go->neg_cbcp, CBCP_OPT);
- ADDCILONG(CI_MAGICNUMBER, go->neg_magicnumber, go->magicnumber);
- ADDCIVOID(CI_PCOMPRESSION, go->neg_pcompression);
- ADDCIVOID(CI_ACCOMPRESSION, go->neg_accompression);
- ADDCISHORT(CI_MRRU, go->neg_mrru, go->mrru);
- ADDCIVOID(CI_SSNHF, go->neg_ssnhf);
- ADDCIENDP(CI_EPDISC, go->neg_endpoint, go->endpoint.class,
- go->endpoint.value, go->endpoint.length);
-
- if (ucp - start_ucp != *lenp) {
- /* this should never happen, because peer_mtu should be 1500 */
- error("Bug in lcp_addci: wrong length");
- }
-}
-
-
-/*
- * lcp_ackci - Ack our CIs.
- * This should not modify any state if the Ack is bad.
- *
- * Returns:
- * 0 - Ack was bad.
- * 1 - Ack was good.
- */
-static int
-lcp_ackci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
- u_char cilen, citype, cichar;
- u_short cishort;
- u_int32_t cilong;
-
- /*
- * CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define ACKCIVOID(opt, neg) \
- if (neg) { \
- if ((len -= CILEN_VOID) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_VOID || \
- citype != opt) \
- goto bad; \
- }
-#define ACKCISHORT(opt, neg, val) \
- if (neg) { \
- if ((len -= CILEN_SHORT) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_SHORT || \
- citype != opt) \
- goto bad; \
- GETSHORT(cishort, p); \
- if (cishort != val) \
- goto bad; \
- }
-#define ACKCICHAR(opt, neg, val) \
- if (neg) { \
- if ((len -= CILEN_CHAR) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_CHAR || \
- citype != opt) \
- goto bad; \
- GETCHAR(cichar, p); \
- if (cichar != val) \
- goto bad; \
- }
-#define ACKCICHAP(opt, neg, val, digest) \
- if (neg) { \
- if ((len -= CILEN_CHAP) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_CHAP || \
- citype != opt) \
- goto bad; \
- GETSHORT(cishort, p); \
- if (cishort != val) \
- goto bad; \
- GETCHAR(cichar, p); \
- if (cichar != digest) \
- goto bad; \
- }
-#define ACKCILONG(opt, neg, val) \
- if (neg) { \
- if ((len -= CILEN_LONG) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_LONG || \
- citype != opt) \
- goto bad; \
- GETLONG(cilong, p); \
- if (cilong != val) \
- goto bad; \
- }
-#define ACKCILQR(opt, neg, val) \
- if (neg) { \
- if ((len -= CILEN_LQR) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_LQR || \
- citype != opt) \
- goto bad; \
- GETSHORT(cishort, p); \
- if (cishort != PPP_LQR) \
- goto bad; \
- GETLONG(cilong, p); \
- if (cilong != val) \
- goto bad; \
- }
-#define ACKCIENDP(opt, neg, class, val, vlen) \
- if (neg) { \
- int i; \
- if ((len -= CILEN_CHAR + vlen) < 0) \
- goto bad; \
- GETCHAR(citype, p); \
- GETCHAR(cilen, p); \
- if (cilen != CILEN_CHAR + vlen || \
- citype != opt) \
- goto bad; \
- GETCHAR(cichar, p); \
- if (cichar != class) \
- goto bad; \
- for (i = 0; i < vlen; ++i) { \
- GETCHAR(cichar, p); \
- if (cichar != val[i]) \
- goto bad; \
- } \
- }
-
- ACKCISHORT(CI_MRU, go->neg_mru && go->mru != DEFMRU, go->mru);
- ACKCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF,
- go->asyncmap);
- ACKCICHAP(CI_AUTHTYPE, go->neg_chap, PPP_CHAP, go->chap_mdtype);
- ACKCISHORT(CI_AUTHTYPE, !go->neg_chap && go->neg_upap, PPP_PAP);
- ACKCILQR(CI_QUALITY, go->neg_lqr, go->lqr_period);
- ACKCICHAR(CI_CALLBACK, go->neg_cbcp, CBCP_OPT);
- ACKCILONG(CI_MAGICNUMBER, go->neg_magicnumber, go->magicnumber);
- ACKCIVOID(CI_PCOMPRESSION, go->neg_pcompression);
- ACKCIVOID(CI_ACCOMPRESSION, go->neg_accompression);
- ACKCISHORT(CI_MRRU, go->neg_mrru, go->mrru);
- ACKCIVOID(CI_SSNHF, go->neg_ssnhf);
- ACKCIENDP(CI_EPDISC, go->neg_endpoint, go->endpoint.class,
- go->endpoint.value, go->endpoint.length);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- return (1);
-bad:
- LCPDEBUG(("lcp_acki: received bad Ack!"));
- return (0);
-}
-
-
-/*
- * lcp_nakci - Peer has sent a NAK for some of our CIs.
- * This should not modify any state if the Nak is bad
- * or if LCP is in the OPENED state.
- *
- * Returns:
- * 0 - Nak was bad.
- * 1 - Nak was good.
- */
-static int
-lcp_nakci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
- lcp_options *wo = &lcp_wantoptions[f->unit];
- u_char citype, cichar, *next;
- u_short cishort;
- u_int32_t cilong;
- lcp_options no; /* options we've seen Naks for */
- lcp_options try; /* options to request next time */
- int looped_back = 0;
- int cilen;
-
- BZERO(&no, sizeof(no));
- try = *go;
-
- /*
- * Any Nak'd CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define NAKCIVOID(opt, neg) \
- if (go->neg && \
- len >= CILEN_VOID && \
- p[1] == CILEN_VOID && \
- p[0] == opt) { \
- len -= CILEN_VOID; \
- INCPTR(CILEN_VOID, p); \
- no.neg = 1; \
- try.neg = 0; \
- }
-#define NAKCICHAP(opt, neg, code) \
- if (go->neg && \
- len >= CILEN_CHAP && \
- p[1] == CILEN_CHAP && \
- p[0] == opt) { \
- len -= CILEN_CHAP; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- GETCHAR(cichar, p); \
- no.neg = 1; \
- code \
- }
-#define NAKCICHAR(opt, neg, code) \
- if (go->neg && \
- len >= CILEN_CHAR && \
- p[1] == CILEN_CHAR && \
- p[0] == opt) { \
- len -= CILEN_CHAR; \
- INCPTR(2, p); \
- GETCHAR(cichar, p); \
- no.neg = 1; \
- code \
- }
-#define NAKCISHORT(opt, neg, code) \
- if (go->neg && \
- len >= CILEN_SHORT && \
- p[1] == CILEN_SHORT && \
- p[0] == opt) { \
- len -= CILEN_SHORT; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- no.neg = 1; \
- code \
- }
-#define NAKCILONG(opt, neg, code) \
- if (go->neg && \
- len >= CILEN_LONG && \
- p[1] == CILEN_LONG && \
- p[0] == opt) { \
- len -= CILEN_LONG; \
- INCPTR(2, p); \
- GETLONG(cilong, p); \
- no.neg = 1; \
- code \
- }
-#define NAKCILQR(opt, neg, code) \
- if (go->neg && \
- len >= CILEN_LQR && \
- p[1] == CILEN_LQR && \
- p[0] == opt) { \
- len -= CILEN_LQR; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- GETLONG(cilong, p); \
- no.neg = 1; \
- code \
- }
-#define NAKCIENDP(opt, neg) \
- if (go->neg && \
- len >= CILEN_CHAR && \
- p[0] == opt && \
- p[1] >= CILEN_CHAR && \
- p[1] <= len) { \
- len -= p[1]; \
- INCPTR(p[1], p); \
- no.neg = 1; \
- try.neg = 0; \
- }
-
- /*
- * We don't care if they want to send us smaller packets than
- * we want. Therefore, accept any MRU less than what we asked for,
- * but then ignore the new value when setting the MRU in the kernel.
- * If they send us a bigger MRU than what we asked, accept it, up to
- * the limit of the default MRU we'd get if we didn't negotiate.
- */
- if (go->neg_mru && go->mru != DEFMRU) {
- NAKCISHORT(CI_MRU, neg_mru,
- if (cishort <= wo->mru || cishort <= DEFMRU)
- try.mru = cishort;
- );
- }
-
- /*
- * Add any characters they want to our (receive-side) asyncmap.
- */
- if (go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF) {
- NAKCILONG(CI_ASYNCMAP, neg_asyncmap,
- try.asyncmap = go->asyncmap | cilong;
- );
- }
-
- /*
- * If they've nak'd our authentication-protocol, check whether
- * they are proposing a different protocol, or a different
- * hash algorithm for CHAP.
- */
- if ((go->neg_chap || go->neg_upap)
- && len >= CILEN_SHORT
- && p[0] == CI_AUTHTYPE && p[1] >= CILEN_SHORT && p[1] <= len) {
- cilen = p[1];
- len -= cilen;
- no.neg_chap = go->neg_chap;
- no.neg_upap = go->neg_upap;
- INCPTR(2, p);
- GETSHORT(cishort, p);
- if (cishort == PPP_PAP && cilen == CILEN_SHORT) {
- /*
- * If we were asking for CHAP, they obviously don't want to do it.
- * If we weren't asking for CHAP, then we were asking for PAP,
- * in which case this Nak is bad.
- */
- if (!go->neg_chap)
- goto bad;
- try.neg_chap = 0;
-
- } else if (cishort == PPP_CHAP && cilen == CILEN_CHAP) {
- GETCHAR(cichar, p);
- if (go->neg_chap) {
- /*
- * We were asking for CHAP/MD5; they must want a different
- * algorithm. If they can't do MD5, we can ask for M$-CHAP
- * if we support it, otherwise we'll have to stop
- * asking for CHAP.
- */
- if (cichar != go->chap_mdtype) {
-#ifdef CHAPMS
- if (cichar == CHAP_MICROSOFT)
- go->chap_mdtype = CHAP_MICROSOFT;
- else
-#endif /* CHAPMS */
- try.neg_chap = 0;
- }
- } else {
- /*
- * Stop asking for PAP if we were asking for it.
- */
- try.neg_upap = 0;
- }
-
- } else {
- /*
- * We don't recognize what they're suggesting.
- * Stop asking for what we were asking for.
- */
- if (go->neg_chap)
- try.neg_chap = 0;
- else
- try.neg_upap = 0;
- p += cilen - CILEN_SHORT;
- }
- }
-
- /*
- * If they can't cope with our link quality protocol, we'll have
- * to stop asking for LQR. We haven't got any other protocol.
- * If they Nak the reporting period, take their value XXX ?
- */
- NAKCILQR(CI_QUALITY, neg_lqr,
- if (cishort != PPP_LQR)
- try.neg_lqr = 0;
- else
- try.lqr_period = cilong;
- );
-
- /*
- * Only implementing CBCP...not the rest of the callback options
- */
- NAKCICHAR(CI_CALLBACK, neg_cbcp,
- try.neg_cbcp = 0;
- );
-
- /*
- * Check for a looped-back line.
- */
- NAKCILONG(CI_MAGICNUMBER, neg_magicnumber,
- try.magicnumber = magic();
- looped_back = 1;
- );
-
- /*
- * Peer shouldn't send Nak for protocol compression or
- * address/control compression requests; they should send
- * a Reject instead. If they send a Nak, treat it as a Reject.
- */
- NAKCIVOID(CI_PCOMPRESSION, neg_pcompression);
- NAKCIVOID(CI_ACCOMPRESSION, neg_accompression);
-
- /*
- * Nak for MRRU option - accept their value if it is smaller
- * than the one we want.
- */
- if (go->neg_mrru) {
- NAKCISHORT(CI_MRRU, neg_mrru,
- if (cishort <= wo->mrru)
- try.mrru = cishort;
- );
- }
-
- /*
- * Nak for short sequence numbers shouldn't be sent, treat it
- * like a reject.
- */
- NAKCIVOID(CI_SSNHF, neg_ssnhf);
-
- /*
- * Nak of the endpoint discriminator option is not permitted,
- * treat it like a reject.
- */
- NAKCIENDP(CI_EPDISC, neg_endpoint);
-
- /*
- * There may be remaining CIs, if the peer is requesting negotiation
- * on an option that we didn't include in our request packet.
- * If we see an option that we requested, or one we've already seen
- * in this packet, then this packet is bad.
- * If we wanted to respond by starting to negotiate on the requested
- * option(s), we could, but we don't, because except for the
- * authentication type and quality protocol, if we are not negotiating
- * an option, it is because we were told not to.
- * For the authentication type, the Nak from the peer means
- * `let me authenticate myself with you' which is a bit pointless.
- * For the quality protocol, the Nak means `ask me to send you quality
- * reports', but if we didn't ask for them, we don't want them.
- * An option we don't recognize represents the peer asking to
- * negotiate some option we don't support, so ignore it.
- */
- while (len > CILEN_VOID) {
- GETCHAR(citype, p);
- GETCHAR(cilen, p);
- if (cilen < CILEN_VOID || (len -= cilen) < 0)
- goto bad;
- next = p + cilen - 2;
-
- switch (citype) {
- case CI_MRU:
- if ((go->neg_mru && go->mru != DEFMRU)
- || no.neg_mru || cilen != CILEN_SHORT)
- goto bad;
- GETSHORT(cishort, p);
- if (cishort < DEFMRU) {
- try.neg_mru = 1;
- try.mru = cishort;
- }
- break;
- case CI_ASYNCMAP:
- if ((go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF)
- || no.neg_asyncmap || cilen != CILEN_LONG)
- goto bad;
- break;
- case CI_AUTHTYPE:
- if (go->neg_chap || no.neg_chap || go->neg_upap || no.neg_upap)
- goto bad;
- break;
- case CI_MAGICNUMBER:
- if (go->neg_magicnumber || no.neg_magicnumber ||
- cilen != CILEN_LONG)
- goto bad;
- break;
- case CI_PCOMPRESSION:
- if (go->neg_pcompression || no.neg_pcompression
- || cilen != CILEN_VOID)
- goto bad;
- break;
- case CI_ACCOMPRESSION:
- if (go->neg_accompression || no.neg_accompression
- || cilen != CILEN_VOID)
- goto bad;
- break;
- case CI_QUALITY:
- if (go->neg_lqr || no.neg_lqr || cilen != CILEN_LQR)
- goto bad;
- break;
- case CI_MRRU:
- if (go->neg_mrru || no.neg_mrru || cilen != CILEN_SHORT)
- goto bad;
- break;
- case CI_SSNHF:
- if (go->neg_ssnhf || no.neg_ssnhf || cilen != CILEN_VOID)
- goto bad;
- try.neg_ssnhf = 1;
- break;
- case CI_EPDISC:
- if (go->neg_endpoint || no.neg_endpoint || cilen < CILEN_CHAR)
- goto bad;
- break;
- }
- p = next;
- }
-
- /*
- * OK, the Nak is good. Now we can update state.
- * If there are any options left we ignore them.
- */
- if (f->state != OPENED) {
- if (looped_back) {
- if (++try.numloops >= lcp_loopbackfail) {
- notice("Serial line is looped back.");
- lcp_close(f->unit, "Loopback detected");
- status = EXIT_LOOPBACK;
- }
- } else
- try.numloops = 0;
- *go = try;
- }
-
- return 1;
-
-bad:
- LCPDEBUG(("lcp_nakci: received bad Nak!"));
- return 0;
-}
-
-
-/*
- * lcp_rejci - Peer has Rejected some of our CIs.
- * This should not modify any state if the Reject is bad
- * or if LCP is in the OPENED state.
- *
- * Returns:
- * 0 - Reject was bad.
- * 1 - Reject was good.
- */
-static int
-lcp_rejci(f, p, len)
- fsm *f;
- u_char *p;
- int len;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
- u_char cichar;
- u_short cishort;
- u_int32_t cilong;
- lcp_options try; /* options to request next time */
-
- try = *go;
-
- /*
- * Any Rejected CIs must be in exactly the same order that we sent.
- * Check packet length and CI length at each step.
- * If we find any deviations, then this packet is bad.
- */
-#define REJCIVOID(opt, neg) \
- if (go->neg && \
- len >= CILEN_VOID && \
- p[1] == CILEN_VOID && \
- p[0] == opt) { \
- len -= CILEN_VOID; \
- INCPTR(CILEN_VOID, p); \
- try.neg = 0; \
- }
-#define REJCISHORT(opt, neg, val) \
- if (go->neg && \
- len >= CILEN_SHORT && \
- p[1] == CILEN_SHORT && \
- p[0] == opt) { \
- len -= CILEN_SHORT; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- /* Check rejected value. */ \
- if (cishort != val) \
- goto bad; \
- try.neg = 0; \
- }
-#define REJCICHAP(opt, neg, val, digest) \
- if (go->neg && \
- len >= CILEN_CHAP && \
- p[1] == CILEN_CHAP && \
- p[0] == opt) { \
- len -= CILEN_CHAP; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- GETCHAR(cichar, p); \
- /* Check rejected value. */ \
- if (cishort != val || cichar != digest) \
- goto bad; \
- try.neg = 0; \
- try.neg_upap = 0; \
- }
-#define REJCILONG(opt, neg, val) \
- if (go->neg && \
- len >= CILEN_LONG && \
- p[1] == CILEN_LONG && \
- p[0] == opt) { \
- len -= CILEN_LONG; \
- INCPTR(2, p); \
- GETLONG(cilong, p); \
- /* Check rejected value. */ \
- if (cilong != val) \
- goto bad; \
- try.neg = 0; \
- }
-#define REJCILQR(opt, neg, val) \
- if (go->neg && \
- len >= CILEN_LQR && \
- p[1] == CILEN_LQR && \
- p[0] == opt) { \
- len -= CILEN_LQR; \
- INCPTR(2, p); \
- GETSHORT(cishort, p); \
- GETLONG(cilong, p); \
- /* Check rejected value. */ \
- if (cishort != PPP_LQR || cilong != val) \
- goto bad; \
- try.neg = 0; \
- }
-#define REJCICBCP(opt, neg, val) \
- if (go->neg && \
- len >= CILEN_CBCP && \
- p[1] == CILEN_CBCP && \
- p[0] == opt) { \
- len -= CILEN_CBCP; \
- INCPTR(2, p); \
- GETCHAR(cichar, p); \
- /* Check rejected value. */ \
- if (cichar != val) \
- goto bad; \
- try.neg = 0; \
- }
-#define REJCIENDP(opt, neg, class, val, vlen) \
- if (go->neg && \
- len >= CILEN_CHAR + vlen && \
- p[0] == opt && \
- p[1] == CILEN_CHAR + vlen) { \
- int i; \
- len -= CILEN_CHAR + vlen; \
- INCPTR(2, p); \
- GETCHAR(cichar, p); \
- if (cichar != class) \
- goto bad; \
- for (i = 0; i < vlen; ++i) { \
- GETCHAR(cichar, p); \
- if (cichar != val[i]) \
- goto bad; \
- } \
- try.neg = 0; \
- }
-
- REJCISHORT(CI_MRU, neg_mru, go->mru);
- REJCILONG(CI_ASYNCMAP, neg_asyncmap, go->asyncmap);
- REJCICHAP(CI_AUTHTYPE, neg_chap, PPP_CHAP, go->chap_mdtype);
- if (!go->neg_chap) {
- REJCISHORT(CI_AUTHTYPE, neg_upap, PPP_PAP);
- }
- REJCILQR(CI_QUALITY, neg_lqr, go->lqr_period);
- REJCICBCP(CI_CALLBACK, neg_cbcp, CBCP_OPT);
- REJCILONG(CI_MAGICNUMBER, neg_magicnumber, go->magicnumber);
- REJCIVOID(CI_PCOMPRESSION, neg_pcompression);
- REJCIVOID(CI_ACCOMPRESSION, neg_accompression);
- REJCISHORT(CI_MRRU, neg_mrru, go->mrru);
- REJCIVOID(CI_SSNHF, neg_ssnhf);
- REJCIENDP(CI_EPDISC, neg_endpoint, go->endpoint.class,
- go->endpoint.value, go->endpoint.length);
-
- /*
- * If there are any remaining CIs, then this packet is bad.
- */
- if (len != 0)
- goto bad;
- /*
- * Now we can update state.
- */
- if (f->state != OPENED)
- *go = try;
- return 1;
-
-bad:
- LCPDEBUG(("lcp_rejci: received bad Reject!"));
- return 0;
-}
-
-
-/*
- * lcp_reqci - Check the peer's requested CIs and send appropriate response.
- *
- * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
- * appropriately. If reject_if_disagree is non-zero, doesn't return
- * CONFNAK; returns CONFREJ if it can't return CONFACK.
- */
-static int
-lcp_reqci(f, inp, lenp, reject_if_disagree)
- fsm *f;
- u_char *inp; /* Requested CIs */
- int *lenp; /* Length of requested CIs */
- int reject_if_disagree;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
- lcp_options *ho = &lcp_hisoptions[f->unit];
- lcp_options *ao = &lcp_allowoptions[f->unit];
- u_char *cip, *next; /* Pointer to current and next CIs */
- int cilen, citype, cichar; /* Parsed len, type, char value */
- u_short cishort; /* Parsed short value */
- u_int32_t cilong; /* Parse long value */
- int rc = CONFACK; /* Final packet return code */
- int orc; /* Individual option return code */
- u_char *p; /* Pointer to next char to parse */
- u_char *rejp; /* Pointer to next char in reject frame */
- u_char *nakp; /* Pointer to next char in Nak frame */
- int l = *lenp; /* Length left */
-
- /*
- * Reset all his options.
- */
- BZERO(ho, sizeof(*ho));
-
- /*
- * Process all his options.
- */
- next = inp;
- nakp = nak_buffer;
- rejp = inp;
- while (l) {
- orc = CONFACK; /* Assume success */
- cip = p = next; /* Remember begining of CI */
- if (l < 2 || /* Not enough data for CI header or */
- p[1] < 2 || /* CI length too small or */
- p[1] > l) { /* CI length too big? */
- LCPDEBUG(("lcp_reqci: bad CI length!"));
- orc = CONFREJ; /* Reject bad CI */
- cilen = l; /* Reject till end of packet */
- l = 0; /* Don't loop again */
- citype = 0;
- goto endswitch;
- }
- GETCHAR(citype, p); /* Parse CI type */
- GETCHAR(cilen, p); /* Parse CI length */
- l -= cilen; /* Adjust remaining length */
- next += cilen; /* Step to next CI */
-
- switch (citype) { /* Check CI type */
- case CI_MRU:
- if (!ao->neg_mru || /* Allow option? */
- cilen != CILEN_SHORT) { /* Check CI length */
- orc = CONFREJ; /* Reject CI */
- break;
- }
- GETSHORT(cishort, p); /* Parse MRU */
-
- /*
- * He must be able to receive at least our minimum.
- * No need to check a maximum. If he sends a large number,
- * we'll just ignore it.
- */
- if (cishort < MINMRU) {
- orc = CONFNAK; /* Nak CI */
- PUTCHAR(CI_MRU, nakp);
- PUTCHAR(CILEN_SHORT, nakp);
- PUTSHORT(MINMRU, nakp); /* Give him a hint */
- break;
- }
- ho->neg_mru = 1; /* Remember he sent MRU */
- ho->mru = cishort; /* And remember value */
- break;
-
- case CI_ASYNCMAP:
- if (!ao->neg_asyncmap ||
- cilen != CILEN_LONG) {
- orc = CONFREJ;
- break;
- }
- GETLONG(cilong, p);
-
- /*
- * Asyncmap must have set at least the bits
- * which are set in lcp_allowoptions[unit].asyncmap.
- */
- if ((ao->asyncmap & ~cilong) != 0) {
- orc = CONFNAK;
- PUTCHAR(CI_ASYNCMAP, nakp);
- PUTCHAR(CILEN_LONG, nakp);
- PUTLONG(ao->asyncmap | cilong, nakp);
- break;
- }
- ho->neg_asyncmap = 1;
- ho->asyncmap = cilong;
- break;
-
- case CI_AUTHTYPE:
- if (cilen < CILEN_SHORT ||
- !(ao->neg_upap || ao->neg_chap)) {
- /*
- * Reject the option if we're not willing to authenticate.
- */
- orc = CONFREJ;
- break;
- }
- GETSHORT(cishort, p);
-
- /*
- * Authtype must be PAP or CHAP.
- *
- * Note: if both ao->neg_upap and ao->neg_chap are set,
- * and the peer sends a Configure-Request with two
- * authenticate-protocol requests, one for CHAP and one
- * for UPAP, then we will reject the second request.
- * Whether we end up doing CHAP or UPAP depends then on
- * the ordering of the CIs in the peer's Configure-Request.
- */
-
- if (cishort == PPP_PAP) {
- if (ho->neg_chap || /* we've already accepted CHAP */
- cilen != CILEN_SHORT) {
- LCPDEBUG(("lcp_reqci: rcvd AUTHTYPE PAP, rejecting..."));
- orc = CONFREJ;
- break;
- }
- if (!ao->neg_upap) { /* we don't want to do PAP */
- orc = CONFNAK; /* NAK it and suggest CHAP */
- PUTCHAR(CI_AUTHTYPE, nakp);
- PUTCHAR(CILEN_CHAP, nakp);
- PUTSHORT(PPP_CHAP, nakp);
- PUTCHAR(ao->chap_mdtype, nakp);
- /* XXX if we can do CHAP_MICROSOFT as well, we should
- probably put in another option saying so */
- break;
- }
- ho->neg_upap = 1;
- break;
- }
- if (cishort == PPP_CHAP) {
- if (ho->neg_upap || /* we've already accepted PAP */
- cilen != CILEN_CHAP) {
- LCPDEBUG(("lcp_reqci: rcvd AUTHTYPE CHAP, rejecting..."));
- orc = CONFREJ;
- break;
- }
- if (!ao->neg_chap) { /* we don't want to do CHAP */
- orc = CONFNAK; /* NAK it and suggest PAP */
- PUTCHAR(CI_AUTHTYPE, nakp);
- PUTCHAR(CILEN_SHORT, nakp);
- PUTSHORT(PPP_PAP, nakp);
- break;
- }
- GETCHAR(cichar, p); /* get digest type*/
- if (cichar != CHAP_DIGEST_MD5
-#ifdef CHAPMS
- && cichar != CHAP_MICROSOFT
-#endif
- ) {
- orc = CONFNAK;
- PUTCHAR(CI_AUTHTYPE, nakp);
- PUTCHAR(CILEN_CHAP, nakp);
- PUTSHORT(PPP_CHAP, nakp);
- PUTCHAR(ao->chap_mdtype, nakp);
- break;
- }
- ho->chap_mdtype = cichar; /* save md type */
- ho->neg_chap = 1;
- break;
- }
-
- /*
- * We don't recognize the protocol they're asking for.
- * Nak it with something we're willing to do.
- * (At this point we know ao->neg_upap || ao->neg_chap.)
- */
- orc = CONFNAK;
- PUTCHAR(CI_AUTHTYPE, nakp);
- if (ao->neg_chap) {
- PUTCHAR(CILEN_CHAP, nakp);
- PUTSHORT(PPP_CHAP, nakp);
- PUTCHAR(ao->chap_mdtype, nakp);
- } else {
- PUTCHAR(CILEN_SHORT, nakp);
- PUTSHORT(PPP_PAP, nakp);
- }
- break;
-
- case CI_QUALITY:
- if (!ao->neg_lqr ||
- cilen != CILEN_LQR) {
- orc = CONFREJ;
- break;
- }
-
- GETSHORT(cishort, p);
- GETLONG(cilong, p);
-
- /*
- * Check the protocol and the reporting period.
- * XXX When should we Nak this, and what with?
- */
- if (cishort != PPP_LQR) {
- orc = CONFNAK;
- PUTCHAR(CI_QUALITY, nakp);
- PUTCHAR(CILEN_LQR, nakp);
- PUTSHORT(PPP_LQR, nakp);
- PUTLONG(ao->lqr_period, nakp);
- break;
- }
- break;
-
- case CI_MAGICNUMBER:
- if (!(ao->neg_magicnumber || go->neg_magicnumber) ||
- cilen != CILEN_LONG) {
- orc = CONFREJ;
- break;
- }
- GETLONG(cilong, p);
-
- /*
- * He must have a different magic number.
- */
- if (go->neg_magicnumber &&
- cilong == go->magicnumber) {
- cilong = magic(); /* Don't put magic() inside macro! */
- orc = CONFNAK;
- PUTCHAR(CI_MAGICNUMBER, nakp);
- PUTCHAR(CILEN_LONG, nakp);
- PUTLONG(cilong, nakp);
- break;
- }
- ho->neg_magicnumber = 1;
- ho->magicnumber = cilong;
- break;
-
-
- case CI_PCOMPRESSION:
- if (!ao->neg_pcompression ||
- cilen != CILEN_VOID) {
- orc = CONFREJ;
- break;
- }
- ho->neg_pcompression = 1;
- break;
-
- case CI_ACCOMPRESSION:
- if (!ao->neg_accompression ||
- cilen != CILEN_VOID) {
- orc = CONFREJ;
- break;
- }
- ho->neg_accompression = 1;
- break;
-
- case CI_MRRU:
- if (!ao->neg_mrru || !multilink ||
- cilen != CILEN_SHORT) {
- orc = CONFREJ;
- break;
- }
-
- GETSHORT(cishort, p);
- /* possibly should insist on a minimum/maximum MRRU here */
- ho->neg_mrru = 1;
- ho->mrru = cishort;
- break;
-
- case CI_SSNHF:
- if (!ao->neg_ssnhf || !multilink ||
- cilen != CILEN_VOID) {
- orc = CONFREJ;
- break;
- }
- ho->neg_ssnhf = 1;
- break;
-
- case CI_EPDISC:
- if (!ao->neg_endpoint ||
- cilen < CILEN_CHAR ||
- cilen > CILEN_CHAR + MAX_ENDP_LEN) {
- orc = CONFREJ;
- break;
- }
- GETCHAR(cichar, p);
- cilen -= CILEN_CHAR;
- ho->neg_endpoint = 1;
- ho->endpoint.class = cichar;
- ho->endpoint.length = cilen;
- BCOPY(p, ho->endpoint.value, cilen);
- INCPTR(cilen, p);
- break;
-
- default:
- LCPDEBUG(("lcp_reqci: rcvd unknown option %d", citype));
- orc = CONFREJ;
- break;
- }
-
-endswitch:
- if (orc == CONFACK && /* Good CI */
- rc != CONFACK) /* but prior CI wasnt? */
- continue; /* Don't send this one */
-
- if (orc == CONFNAK) { /* Nak this CI? */
- if (reject_if_disagree /* Getting fed up with sending NAKs? */
- && citype != CI_MAGICNUMBER) {
- orc = CONFREJ; /* Get tough if so */
- } else {
- if (rc == CONFREJ) /* Rejecting prior CI? */
- continue; /* Don't send this one */
- rc = CONFNAK;
- }
- }
- if (orc == CONFREJ) { /* Reject this CI */
- rc = CONFREJ;
- if (cip != rejp) /* Need to move rejected CI? */
- BCOPY(cip, rejp, cilen); /* Move it */
- INCPTR(cilen, rejp); /* Update output pointer */
- }
- }
-
- /*
- * If we wanted to send additional NAKs (for unsent CIs), the
- * code would go here. The extra NAKs would go at *nakp.
- * At present there are no cases where we want to ask the
- * peer to negotiate an option.
- */
-
- switch (rc) {
- case CONFACK:
- *lenp = next - inp;
- break;
- case CONFNAK:
- /*
- * Copy the Nak'd options from the nak_buffer to the caller's buffer.
- */
- *lenp = nakp - nak_buffer;
- BCOPY(nak_buffer, inp, *lenp);
- break;
- case CONFREJ:
- *lenp = rejp - inp;
- break;
- }
-
- LCPDEBUG(("lcp_reqci: returning CONF%s.", CODENAME(rc)));
- return (rc); /* Return final code */
-}
-
-
-/*
- * lcp_up - LCP has come UP.
- */
-static void
-lcp_up(f)
- fsm *f;
-{
- lcp_options *wo = &lcp_wantoptions[f->unit];
- lcp_options *ho = &lcp_hisoptions[f->unit];
- lcp_options *go = &lcp_gotoptions[f->unit];
- lcp_options *ao = &lcp_allowoptions[f->unit];
- int mtu;
-
- if (!go->neg_magicnumber)
- go->magicnumber = 0;
- if (!ho->neg_magicnumber)
- ho->magicnumber = 0;
-
- /*
- * Set our MTU to the smaller of the MTU we wanted and
- * the MRU our peer wanted. If we negotiated an MRU,
- * set our MRU to the larger of value we wanted and
- * the value we got in the negotiation.
- * Note on the MTU: the link MTU can be the MRU the peer wanted,
- * the interface MTU is set to the lower of that and the
- * MTU we want to use.
- */
- mtu = ho->neg_mru? ho->mru: PPP_MRU;
-#ifdef HAVE_MULTILINK
- if (!(multilink && go->neg_mrru && ho->neg_mrru))
-#endif /* HAVE_MULTILINK */
- netif_set_mtu(f->unit, MIN(mtu, ao->mru));
- ppp_send_config(f->unit, mtu,
- (ho->neg_asyncmap? ho->asyncmap: 0xffffffff),
- ho->neg_pcompression, ho->neg_accompression);
- ppp_recv_config(f->unit, (go->neg_mru? MAX(wo->mru, go->mru): PPP_MRU),
- (lax_recv? 0: go->neg_asyncmap? go->asyncmap: 0xffffffff),
- go->neg_pcompression, go->neg_accompression);
-
- if (ho->neg_mru)
- peer_mru[f->unit] = ho->mru;
-
- lcp_echo_lowerup(f->unit); /* Enable echo messages */
-
- link_established(f->unit);
-}
-
-
-/*
- * lcp_down - LCP has gone DOWN.
- *
- * Alert other protocols.
- */
-static void
-lcp_down(f)
- fsm *f;
-{
- lcp_options *go = &lcp_gotoptions[f->unit];
-
- lcp_echo_lowerdown(f->unit);
-
- link_down(f->unit);
-
- ppp_send_config(f->unit, PPP_MRU, 0xffffffff, 0, 0);
- ppp_recv_config(f->unit, PPP_MRU,
- (go->neg_asyncmap? go->asyncmap: 0xffffffff),
- go->neg_pcompression, go->neg_accompression);
- peer_mru[f->unit] = PPP_MRU;
-}
-
-
-/*
- * lcp_starting - LCP needs the lower layer up.
- */
-static void
-lcp_starting(f)
- fsm *f;
-{
- link_required(f->unit);
-}
-
-
-/*
- * lcp_finished - LCP has finished with the lower layer.
- */
-static void
-lcp_finished(f)
- fsm *f;
-{
- link_terminated(f->unit);
-}
-
-
-/*
- * lcp_printpkt - print the contents of an LCP packet.
- */
-static char *lcp_codenames[] = {
- "ConfReq", "ConfAck", "ConfNak", "ConfRej",
- "TermReq", "TermAck", "CodeRej", "ProtRej",
- "EchoReq", "EchoRep", "DiscReq"
-};
-
-static int
-lcp_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len, olen, i;
- u_char *pstart, *optend;
- u_short cishort;
- u_int32_t cilong;
-
- if (plen < HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(lcp_codenames) / sizeof(char *))
- printer(arg, " %s", lcp_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= HEADERLEN;
- switch (code) {
- case CONFREQ:
- case CONFACK:
- case CONFNAK:
- case CONFREJ:
- /* print option list */
- while (len >= 2) {
- GETCHAR(code, p);
- GETCHAR(olen, p);
- p -= 2;
- if (olen < 2 || olen > len) {
- break;
- }
- printer(arg, " <");
- len -= olen;
- optend = p + olen;
- switch (code) {
- case CI_MRU:
- if (olen == CILEN_SHORT) {
- p += 2;
- GETSHORT(cishort, p);
- printer(arg, "mru %d", cishort);
- }
- break;
- case CI_ASYNCMAP:
- if (olen == CILEN_LONG) {
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "asyncmap 0x%x", cilong);
- }
- break;
- case CI_AUTHTYPE:
- if (olen >= CILEN_SHORT) {
- p += 2;
- printer(arg, "auth ");
- GETSHORT(cishort, p);
- switch (cishort) {
- case PPP_PAP:
- printer(arg, "pap");
- break;
- case PPP_CHAP:
- printer(arg, "chap");
- if (p < optend) {
- switch (*p) {
- case CHAP_DIGEST_MD5:
- printer(arg, " MD5");
- ++p;
- break;
-#ifdef CHAPMS
- case CHAP_MICROSOFT:
- printer(arg, " m$oft");
- ++p;
- break;
-#endif
- }
- }
- break;
- default:
- printer(arg, "0x%x", cishort);
- }
- }
- break;
- case CI_QUALITY:
- if (olen >= CILEN_SHORT) {
- p += 2;
- printer(arg, "quality ");
- GETSHORT(cishort, p);
- switch (cishort) {
- case PPP_LQR:
- printer(arg, "lqr");
- break;
- default:
- printer(arg, "0x%x", cishort);
- }
- }
- break;
- case CI_CALLBACK:
- if (olen >= CILEN_CHAR) {
- p += 2;
- printer(arg, "callback ");
- GETCHAR(cishort, p);
- switch (cishort) {
- case CBCP_OPT:
- printer(arg, "CBCP");
- break;
- default:
- printer(arg, "0x%x", cishort);
- }
- }
- break;
- case CI_MAGICNUMBER:
- if (olen == CILEN_LONG) {
- p += 2;
- GETLONG(cilong, p);
- printer(arg, "magic 0x%x", cilong);
- }
- break;
- case CI_PCOMPRESSION:
- if (olen == CILEN_VOID) {
- p += 2;
- printer(arg, "pcomp");
- }
- break;
- case CI_ACCOMPRESSION:
- if (olen == CILEN_VOID) {
- p += 2;
- printer(arg, "accomp");
- }
- break;
- case CI_MRRU:
- if (olen == CILEN_SHORT) {
- p += 2;
- GETSHORT(cishort, p);
- printer(arg, "mrru %d", cishort);
- }
- break;
- case CI_SSNHF:
- if (olen == CILEN_VOID) {
- p += 2;
- printer(arg, "ssnhf");
- }
- break;
- case CI_EPDISC:
-#ifdef HAVE_MULTILINK
- if (olen >= CILEN_CHAR) {
- struct epdisc epd;
- p += 2;
- GETCHAR(epd.class, p);
- epd.length = olen - CILEN_CHAR;
- if (epd.length > MAX_ENDP_LEN)
- epd.length = MAX_ENDP_LEN;
- if (epd.length > 0) {
- BCOPY(p, epd.value, epd.length);
- p += epd.length;
- }
- printer(arg, "endpoint [%s]", epdisc_to_str(&epd));
- }
-#else
- printer(arg, "endpoint");
-#endif
- break;
- }
- while (p < optend) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
- printer(arg, ">");
- }
- break;
-
- case TERMACK:
- case TERMREQ:
- if (len > 0 && *p >= ' ' && *p < 0x7f) {
- printer(arg, " ");
- print_string((char *)p, len, printer, arg);
- p += len;
- len = 0;
- }
- break;
-
- case ECHOREQ:
- case ECHOREP:
- case DISCREQ:
- if (len >= 4) {
- GETLONG(cilong, p);
- printer(arg, " magic=0x%x", cilong);
- p += 4;
- len -= 4;
- }
- break;
- }
-
- /* print the rest of the bytes in the packet */
- for (i = 0; i < len && i < 32; ++i) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
- if (i < len) {
- printer(arg, " ...");
- p += len - i;
- }
-
- return p - pstart;
-}
-
-/*
- * Time to shut down the link because there is nothing out there.
- */
-
-static
-void LcpLinkFailure (f)
- fsm *f;
-{
- if (f->state == OPENED) {
- info("No response to %d echo-requests", lcp_echos_pending);
- notice("Serial link appears to be disconnected.");
- lcp_close(f->unit, "Peer not responding");
- status = EXIT_PEER_DEAD;
- }
-}
-
-/*
- * Timer expired for the LCP echo requests from this process.
- */
-
-static void
-LcpEchoCheck (f)
- fsm *f;
-{
- LcpSendEchoRequest (f);
- if (f->state != OPENED)
- return;
-
- /*
- * Start the timer for the next interval.
- */
- if (lcp_echo_timer_running)
- warn("assertion lcp_echo_timer_running==0 failed");
- TIMEOUT (LcpEchoTimeout, f, lcp_echo_interval);
- lcp_echo_timer_running = 1;
-}
-
-/*
- * LcpEchoTimeout - Timer expired on the LCP echo
- */
-
-static void
-LcpEchoTimeout (arg)
- void *arg;
-{
- if (lcp_echo_timer_running != 0) {
- lcp_echo_timer_running = 0;
- LcpEchoCheck ((fsm *) arg);
- }
-}
-
-/*
- * LcpEchoReply - LCP has received a reply to the echo
- */
-
-static void
-lcp_received_echo_reply (f, id, inp, len)
- fsm *f;
- int id;
- u_char *inp;
- int len;
-{
- u_int32_t magic;
-
- /* Check the magic number - don't count replies from ourselves. */
- if (len < 4) {
- dbglog("lcp: received short Echo-Reply, length %d", len);
- return;
- }
- GETLONG(magic, inp);
- if (lcp_gotoptions[f->unit].neg_magicnumber
- && magic == lcp_gotoptions[f->unit].magicnumber) {
- warn("appear to have received our own echo-reply!");
- return;
- }
-
- /* Reset the number of outstanding echo frames */
- lcp_echos_pending = 0;
-}
-
-/*
- * LcpSendEchoRequest - Send an echo request frame to the peer
- */
-
-static void
-LcpSendEchoRequest (f)
- fsm *f;
-{
- u_int32_t lcp_magic;
- u_char pkt[4], *pktp;
-
- /*
- * Detect the failure of the peer at this point.
- */
- if (lcp_echo_fails != 0) {
- if (lcp_echos_pending >= lcp_echo_fails) {
- LcpLinkFailure(f);
- lcp_echos_pending = 0;
- }
- }
-
- /*
- * Make and send the echo request frame.
- */
- if (f->state == OPENED) {
- lcp_magic = lcp_gotoptions[f->unit].magicnumber;
- pktp = pkt;
- PUTLONG(lcp_magic, pktp);
- fsm_sdata(f, ECHOREQ, lcp_echo_number++ & 0xFF, pkt, pktp - pkt);
- ++lcp_echos_pending;
- }
-}
-
-/*
- * lcp_echo_lowerup - Start the timer for the LCP frame
- */
-
-static void
-lcp_echo_lowerup (unit)
- int unit;
-{
- fsm *f = &lcp_fsm[unit];
-
- /* Clear the parameters for generating echo frames */
- lcp_echos_pending = 0;
- lcp_echo_number = 0;
- lcp_echo_timer_running = 0;
-
- /* If a timeout interval is specified then start the timer */
- if (lcp_echo_interval != 0)
- LcpEchoCheck (f);
-}
-
-/*
- * lcp_echo_lowerdown - Stop the timer for the LCP frame
- */
-
-static void
-lcp_echo_lowerdown (unit)
- int unit;
-{
- fsm *f = &lcp_fsm[unit];
-
- if (lcp_echo_timer_running != 0) {
- UNTIMEOUT (LcpEchoTimeout, f);
- lcp_echo_timer_running = 0;
- }
-}
diff --git a/mdk-stage1/ppp/pppd/lcp.h b/mdk-stage1/ppp/pppd/lcp.h
deleted file mode 100644
index b87a9295e..000000000
--- a/mdk-stage1/ppp/pppd/lcp.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * lcp.h - Link Control Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Options.
- */
-#define CI_MRU 1 /* Maximum Receive Unit */
-#define CI_ASYNCMAP 2 /* Async Control Character Map */
-#define CI_AUTHTYPE 3 /* Authentication Type */
-#define CI_QUALITY 4 /* Quality Protocol */
-#define CI_MAGICNUMBER 5 /* Magic Number */
-#define CI_PCOMPRESSION 7 /* Protocol Field Compression */
-#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
-#define CI_CALLBACK 13 /* callback */
-#define CI_MRRU 17 /* max reconstructed receive unit; multilink */
-#define CI_SSNHF 18 /* short sequence numbers for multilink */
-#define CI_EPDISC 19 /* endpoint discriminator */
-
-/*
- * LCP-specific packet types.
- */
-#define PROTREJ 8 /* Protocol Reject */
-#define ECHOREQ 9 /* Echo Request */
-#define ECHOREP 10 /* Echo Reply */
-#define DISCREQ 11 /* Discard Request */
-#define CBCP_OPT 6 /* Use callback control protocol */
-
-/*
- * The state of options is described by an lcp_options structure.
- */
-typedef struct lcp_options {
- bool passive; /* Don't die if we don't get a response */
- bool silent; /* Wait for the other end to start first */
- bool restart; /* Restart vs. exit after close */
- bool neg_mru; /* Negotiate the MRU? */
- bool neg_asyncmap; /* Negotiate the async map? */
- bool neg_upap; /* Ask for UPAP authentication? */
- bool neg_chap; /* Ask for CHAP authentication? */
- bool neg_magicnumber; /* Ask for magic number? */
- bool neg_pcompression; /* HDLC Protocol Field Compression? */
- bool neg_accompression; /* HDLC Address/Control Field Compression? */
- bool neg_lqr; /* Negotiate use of Link Quality Reports */
- bool neg_cbcp; /* Negotiate use of CBCP */
- bool neg_mrru; /* negotiate multilink MRRU */
- bool neg_ssnhf; /* negotiate short sequence numbers */
- bool neg_endpoint; /* negotiate endpoint discriminator */
- int mru; /* Value of MRU */
- int mrru; /* Value of MRRU, and multilink enable */
- u_char chap_mdtype; /* which MD type (hashing algorithm) */
- u_int32_t asyncmap; /* Value of async map */
- u_int32_t magicnumber;
- int numloops; /* Number of loops during magic number neg. */
- u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */
- struct epdisc endpoint; /* endpoint discriminator */
-} lcp_options;
-
-extern fsm lcp_fsm[];
-extern lcp_options lcp_wantoptions[];
-extern lcp_options lcp_gotoptions[];
-extern lcp_options lcp_allowoptions[];
-extern lcp_options lcp_hisoptions[];
-
-#define DEFMRU 1500 /* Try for this */
-#define MINMRU 128 /* No MRUs below this */
-#define MAXMRU 16384 /* Normally limit MRU to this */
-
-void lcp_open __P((int));
-void lcp_close __P((int, char *));
-void lcp_lowerup __P((int));
-void lcp_lowerdown __P((int));
-void lcp_sprotrej __P((int, u_char *, int)); /* send protocol reject */
-
-extern struct protent lcp_protent;
-
-/* Default number of times we receive our magic number from the peer
- before deciding the link is looped-back. */
-#define DEFLOOPBACKFAIL 10
diff --git a/mdk-stage1/ppp/pppd/magic.c b/mdk-stage1/ppp/pppd/magic.c
deleted file mode 100644
index 1682dee03..000000000
--- a/mdk-stage1/ppp/pppd/magic.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * magic.c - PPP Magic Number routines.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include "pppd.h"
-#include "magic.h"
-
-static const char rcsid[] = RCSID;
-
-extern long mrand48 __P((void));
-extern void srand48 __P((long));
-
-/*
- * magic_init - Initialize the magic number generator.
- *
- * Attempts to compute a random number seed which will not repeat.
- * The current method uses the current hostid, current process ID
- * and current time, currently.
- */
-void
-magic_init()
-{
- long seed;
- struct timeval t;
-
- gettimeofday(&t, NULL);
- seed = get_host_seed() ^ t.tv_sec ^ t.tv_usec ^ getpid();
- srand48(seed);
-}
-
-/*
- * magic - Returns the next magic number.
- */
-u_int32_t
-magic()
-{
- return (u_int32_t) mrand48();
-}
-
-#ifdef NO_DRAND48
-/*
- * Substitute procedures for those systems which don't have
- * drand48 et al.
- */
-
-double
-drand48()
-{
- return (double)random() / (double)0x7fffffffL; /* 2**31-1 */
-}
-
-long
-mrand48()
-{
- return random();
-}
-
-void
-srand48(seedval)
-long seedval;
-{
- srandom((int)seedval);
-}
-
-#endif
diff --git a/mdk-stage1/ppp/pppd/magic.h b/mdk-stage1/ppp/pppd/magic.h
deleted file mode 100644
index 1344626a3..000000000
--- a/mdk-stage1/ppp/pppd/magic.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * magic.h - PPP Magic Number definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-void magic_init __P((void)); /* Initialize the magic number generator */
-u_int32_t magic __P((void)); /* Returns the next magic number */
diff --git a/mdk-stage1/ppp/pppd/main.c b/mdk-stage1/ppp/pppd/main.c
deleted file mode 100644
index c074938cd..000000000
--- a/mdk-stage1/ppp/pppd/main.c
+++ /dev/null
@@ -1,1846 +0,0 @@
-/*
- * main.c - Point-to-Point Protocol main module
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <syslog.h>
-#include <netdb.h>
-#include <utmp.h>
-#include <pwd.h>
-#include <setjmp.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "pppd.h"
-#include "magic.h"
-#include "fsm.h"
-#include "lcp.h"
-#include "ipcp.h"
-#ifdef INET6
-#include "ipv6cp.h"
-#endif
-#include "upap.h"
-#include "chap.h"
-#include "ccp.h"
-#include "pathnames.h"
-#include "tdb.h"
-
-#ifdef CBCP_SUPPORT
-#include "cbcp.h"
-#endif
-
-#ifdef IPX_CHANGE
-#include "ipxcp.h"
-#endif /* IPX_CHANGE */
-#ifdef AT_CHANGE
-#include "atcp.h"
-#endif
-
-static const char rcsid[] = RCSID;
-
-/* interface vars */
-char ifname[32]; /* Interface name */
-int ifunit; /* Interface unit number */
-
-struct channel *the_channel;
-
-char *progname; /* Name of this program */
-char hostname[MAXNAMELEN]; /* Our hostname */
-static char pidfilename[MAXPATHLEN]; /* name of pid file */
-static char linkpidfile[MAXPATHLEN]; /* name of linkname pid file */
-char ppp_devnam[MAXPATHLEN]; /* name of PPP tty (maybe ttypx) */
-uid_t uid; /* Our real user-id */
-struct notifier *pidchange = NULL;
-struct notifier *phasechange = NULL;
-struct notifier *exitnotify = NULL;
-struct notifier *sigreceived = NULL;
-
-int hungup; /* terminal has been hung up */
-int privileged; /* we're running as real uid root */
-int need_holdoff; /* need holdoff period before restarting */
-int detached; /* have detached from terminal */
-volatile int status; /* exit status for pppd */
-int unsuccess; /* # unsuccessful connection attempts */
-int do_callback; /* != 0 if we should do callback next */
-int doing_callback; /* != 0 if we are doing callback */
-TDB_CONTEXT *pppdb; /* database for storing status etc. */
-char db_key[32];
-
-int (*holdoff_hook) __P((void)) = NULL;
-int (*new_phase_hook) __P((int)) = NULL;
-
-static int conn_running; /* we have a [dis]connector running */
-static int devfd; /* fd of underlying device */
-static int fd_ppp = -1; /* fd for talking PPP */
-static int fd_loop; /* fd for getting demand-dial packets */
-
-int phase; /* where the link is at */
-int kill_link;
-int open_ccp_flag;
-int listen_time;
-int got_sigusr2;
-int got_sigterm;
-int got_sighup;
-
-static int waiting;
-static sigjmp_buf sigjmp;
-
-char **script_env; /* Env. variable values for scripts */
-int s_env_nalloc; /* # words avail at script_env */
-
-u_char outpacket_buf[PPP_MRU+PPP_HDRLEN]; /* buffer for outgoing packet */
-u_char inpacket_buf[PPP_MRU+PPP_HDRLEN]; /* buffer for incoming packet */
-
-static int n_children; /* # child processes still running */
-static int got_sigchld; /* set if we have received a SIGCHLD */
-
-int privopen; /* don't lock, open device as root */
-
-char *no_ppp_msg = "Sorry - this system lacks PPP kernel support\n";
-
-GIDSET_TYPE groups[NGROUPS_MAX];/* groups the user is in */
-int ngroups; /* How many groups valid in groups */
-
-static struct timeval start_time; /* Time when link was started. */
-
-struct pppd_stats link_stats;
-int link_connect_time;
-int link_stats_valid;
-
-/*
- * We maintain a list of child process pids and
- * functions to call when they exit.
- */
-struct subprocess {
- pid_t pid;
- char *prog;
- void (*done) __P((void *));
- void *arg;
- struct subprocess *next;
-};
-
-static struct subprocess *children;
-
-/* Prototypes for procedures local to this file. */
-
-static void setup_signals __P((void));
-static void create_pidfile __P((void));
-static void create_linkpidfile __P((void));
-static void cleanup __P((void));
-static void get_input __P((void));
-static void calltimeout __P((void));
-static struct timeval *timeleft __P((struct timeval *));
-static void kill_my_pg __P((int));
-static void hup __P((int));
-static void term __P((int));
-static void chld __P((int));
-static void toggle_debug __P((int));
-static void open_ccp __P((int));
-static void bad_signal __P((int));
-static void holdoff_end __P((void *));
-static int reap_kids __P((int waitfor));
-static void update_db_entry __P((void));
-static void add_db_key __P((const char *));
-static void delete_db_key __P((const char *));
-static void cleanup_db __P((void));
-static void handle_events __P((void));
-
-extern char *ttyname __P((int));
-extern char *getlogin __P((void));
-int main __P((int, char *[]));
-
-#ifdef ultrix
-#undef O_NONBLOCK
-#define O_NONBLOCK O_NDELAY
-#endif
-
-#ifdef ULTRIX
-#define setlogmask(x)
-#endif
-
-/*
- * PPP Data Link Layer "protocol" table.
- * One entry per supported protocol.
- * The last entry must be NULL.
- */
-struct protent *protocols[] = {
- &lcp_protent,
- &pap_protent,
- &chap_protent,
-#ifdef CBCP_SUPPORT
- &cbcp_protent,
-#endif
- &ipcp_protent,
-#ifdef INET6
- &ipv6cp_protent,
-#endif
- &ccp_protent,
-#ifdef IPX_CHANGE
- &ipxcp_protent,
-#endif
-#ifdef AT_CHANGE
- &atcp_protent,
-#endif
- NULL
-};
-
-/*
- * If PPP_DRV_NAME is not defined, use the default "ppp" as the device name.
- */
-#if !defined(PPP_DRV_NAME)
-#define PPP_DRV_NAME "ppp"
-#endif /* !defined(PPP_DRV_NAME) */
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int i, t;
- char *p;
- struct passwd *pw;
- struct protent *protp;
- char numbuf[16];
-
- new_phase(PHASE_INITIALIZE);
-
- /*
- * Ensure that fds 0, 1, 2 are open, to /dev/null if nowhere else.
- * This way we can close 0, 1, 2 in detach() without clobbering
- * a fd that we are using.
- */
- if ((i = open("/dev/null", O_RDWR)) >= 0) {
- while (0 <= i && i <= 2)
- i = dup(i);
- if (i >= 0)
- close(i);
- }
-
- script_env = NULL;
-
- /* Initialize syslog facilities */
- reopen_log();
-
- if (gethostname(hostname, MAXNAMELEN) < 0 ) {
- option_error("Couldn't get hostname: %m");
- exit(1);
- }
- hostname[MAXNAMELEN-1] = 0;
-
- /* make sure we don't create world or group writable files. */
- umask(umask(0777) | 022);
-
- uid = getuid();
- privileged = uid == 0;
- slprintf(numbuf, sizeof(numbuf), "%d", uid);
- script_setenv("ORIG_UID", numbuf, 0);
-
- ngroups = getgroups(NGROUPS_MAX, groups);
-
- /*
- * Initialize magic number generator now so that protocols may
- * use magic numbers in initialization.
- */
- magic_init();
-
- /*
- * Initialize each protocol.
- */
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- (*protp->init)(0);
-
- /*
- * Initialize the default channel.
- */
- tty_init();
-
- progname = *argv;
-
- /*
- * Parse, in order, the system options file, the user's options file,
- * and the command line arguments.
- */
- if (!options_from_file(_PATH_SYSOPTIONS, !privileged, 0, 1)
- || !options_from_user()
- || !parse_args(argc-1, argv+1))
- exit(EXIT_OPTION_ERROR);
- devnam_fixed = 1; /* can no longer change device name */
-
- /*
- * Work out the device name, if it hasn't already been specified,
- * and parse the tty's options file.
- */
- if (the_channel->process_extra_options)
- (*the_channel->process_extra_options)();
-
- if (debug)
- setlogmask(LOG_UPTO(LOG_DEBUG));
-
- /*
- * Check that we are running as root.
- */
- if (geteuid() != 0) {
- option_error("must be root to run %s, since it is not setuid-root",
- argv[0]);
- exit(EXIT_NOT_ROOT);
- }
-
- if (!ppp_available()) {
- option_error("%s", no_ppp_msg);
- exit(EXIT_NO_KERNEL_SUPPORT);
- }
-
- /*
- * Check that the options given are valid and consistent.
- */
- check_options();
- if (!sys_check_options())
- exit(EXIT_OPTION_ERROR);
- auth_check_options();
-#ifdef HAVE_MULTILINK
- mp_check_options();
-#endif
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (protp->check_options != NULL)
- (*protp->check_options)();
- if (the_channel->check_options)
- (*the_channel->check_options)();
-
-
- if (dump_options || dryrun) {
- init_pr_log(NULL, LOG_INFO);
- print_options(pr_log, NULL);
- end_pr_log();
- if (dryrun)
- die(0);
- }
-
- /*
- * Initialize system-dependent stuff.
- */
- sys_init();
-
- pppdb = tdb_open(_PATH_PPPDB, 0, 0, O_RDWR|O_CREAT, 0644);
- if (pppdb != NULL) {
- slprintf(db_key, sizeof(db_key), "pppd%d", getpid());
- update_db_entry();
- } else {
- warn("Warning: couldn't open ppp database %s", _PATH_PPPDB);
- if (multilink) {
- warn("Warning: disabling multilink");
- multilink = 0;
- }
- }
-
- /*
- * Detach ourselves from the terminal, if required,
- * and identify who is running us.
- */
- if (!nodetach && !updetach)
- detach();
- p = getlogin();
- if (p == NULL) {
- pw = getpwuid(uid);
- if (pw != NULL && pw->pw_name != NULL)
- p = pw->pw_name;
- else
- p = "(unknown)";
- }
- syslog(LOG_NOTICE, "pppd %s started by %s, uid %d", VERSION, p, uid);
- script_setenv("PPPLOGNAME", p, 0);
-
- if (devnam[0])
- script_setenv("DEVICE", devnam, 1);
- slprintf(numbuf, sizeof(numbuf), "%d", getpid());
- script_setenv("PPPD_PID", numbuf, 1);
-
- setup_signals();
-
- waiting = 0;
-
- create_linkpidfile();
-
- /*
- * If we're doing dial-on-demand, set up the interface now.
- */
- if (demand) {
- /*
- * Open the loopback channel and set it up to be the ppp interface.
- */
- tdb_writelock(pppdb);
- fd_loop = open_ppp_loopback();
- set_ifunit(1);
- tdb_writeunlock(pppdb);
-
- /*
- * Configure the interface and mark it up, etc.
- */
- demand_conf();
- }
-
- do_callback = 0;
- for (;;) {
-
- listen_time = 0;
- need_holdoff = 1;
- devfd = -1;
- status = EXIT_OK;
- ++unsuccess;
- doing_callback = do_callback;
- do_callback = 0;
-
- if (demand && !doing_callback) {
- /*
- * Don't do anything until we see some activity.
- */
- new_phase(PHASE_DORMANT);
- demand_unblock();
- add_fd(fd_loop);
- for (;;) {
- handle_events();
- if (kill_link && !persist)
- break;
- if (get_loop_output())
- break;
- }
- remove_fd(fd_loop);
- if (kill_link && !persist)
- break;
-
- /*
- * Now we want to bring up the link.
- */
- demand_block();
- info("Starting link");
- }
-
- new_phase(PHASE_SERIALCONN);
-
- devfd = the_channel->connect();
- if (devfd < 0)
- goto fail;
-
- /* set up the serial device as a ppp interface */
- tdb_writelock(pppdb);
- fd_ppp = the_channel->establish_ppp(devfd);
- if (fd_ppp < 0) {
- tdb_writeunlock(pppdb);
- status = EXIT_FATAL_ERROR;
- goto disconnect;
- }
-
- if (!demand && ifunit >= 0)
- set_ifunit(1);
- tdb_writeunlock(pppdb);
-
- /*
- * Start opening the connection and wait for
- * incoming events (reply, timeout, etc.).
- */
- notice("Connect: %s <--> %s", ifname, ppp_devnam);
- gettimeofday(&start_time, NULL);
- link_stats_valid = 0;
- script_unsetenv("CONNECT_TIME");
- script_unsetenv("BYTES_SENT");
- script_unsetenv("BYTES_RCVD");
- lcp_lowerup(0);
-
- add_fd(fd_ppp);
- lcp_open(0); /* Start protocol */
- status = EXIT_NEGOTIATION_FAILED;
- new_phase(PHASE_ESTABLISH);
- while (phase != PHASE_DEAD) {
- handle_events();
- get_input();
- if (kill_link)
- lcp_close(0, "User request");
- if (open_ccp_flag) {
- if (phase == PHASE_NETWORK || phase == PHASE_RUNNING) {
- ccp_fsm[0].flags = OPT_RESTART; /* clears OPT_SILENT */
- (*ccp_protent.open)(0);
- }
- }
- }
-
- /*
- * Print connect time and statistics.
- */
- if (link_stats_valid) {
- int t = (link_connect_time + 5) / 6; /* 1/10ths of minutes */
- info("Connect time %d.%d minutes.", t/10, t%10);
- info("Sent %u bytes, received %u bytes.",
- link_stats.bytes_out, link_stats.bytes_in);
- }
-
- /*
- * Delete pid file before disestablishing ppp. Otherwise it
- * can happen that another pppd gets the same unit and then
- * we delete its pid file.
- */
- if (!demand) {
- if (pidfilename[0] != 0
- && unlink(pidfilename) < 0 && errno != ENOENT)
- warn("unable to delete pid file %s: %m", pidfilename);
- pidfilename[0] = 0;
- }
-
- /*
- * If we may want to bring the link up again, transfer
- * the ppp unit back to the loopback. Set the
- * real serial device back to its normal mode of operation.
- */
- remove_fd(fd_ppp);
- clean_check();
- the_channel->disestablish_ppp(devfd);
- fd_ppp = -1;
- if (!hungup)
- lcp_lowerdown(0);
- if (!demand)
- script_unsetenv("IFNAME");
-
- /*
- * Run disconnector script, if requested.
- * XXX we may not be able to do this if the line has hung up!
- */
- disconnect:
- new_phase(PHASE_DISCONNECT);
- the_channel->disconnect();
-
- fail:
- if (the_channel->cleanup)
- (*the_channel->cleanup)();
-
- if (!demand) {
- if (pidfilename[0] != 0
- && unlink(pidfilename) < 0 && errno != ENOENT)
- warn("unable to delete pid file %s: %m", pidfilename);
- pidfilename[0] = 0;
- }
-
- if (!persist || (maxfail > 0 && unsuccess >= maxfail))
- break;
-
- if (demand)
- demand_discard();
- t = need_holdoff? holdoff: 0;
- if (holdoff_hook)
- t = (*holdoff_hook)();
- if (t > 0) {
- new_phase(PHASE_HOLDOFF);
- TIMEOUT(holdoff_end, NULL, t);
- do {
- handle_events();
- if (kill_link)
- new_phase(PHASE_DORMANT); /* allow signal to end holdoff */
- } while (phase == PHASE_HOLDOFF);
- if (!persist)
- break;
- }
- }
-
- /* Wait for scripts to finish */
- /* XXX should have a timeout here */
- while (n_children > 0) {
- if (debug) {
- struct subprocess *chp;
- dbglog("Waiting for %d child processes...", n_children);
- for (chp = children; chp != NULL; chp = chp->next)
- dbglog(" script %s, pid %d", chp->prog, chp->pid);
- }
- if (reap_kids(1) < 0)
- break;
- }
-
- die(status);
- return 0;
-}
-
-/*
- * handle_events - wait for something to happen and respond to it.
- */
-static void
-handle_events()
-{
- struct timeval timo;
- sigset_t mask;
-
- kill_link = open_ccp_flag = 0;
- if (sigsetjmp(sigjmp, 1) == 0) {
- sigprocmask(SIG_BLOCK, &mask, NULL);
- if (got_sighup || got_sigterm || got_sigusr2 || got_sigchld) {
- sigprocmask(SIG_UNBLOCK, &mask, NULL);
- } else {
- waiting = 1;
- sigprocmask(SIG_UNBLOCK, &mask, NULL);
- wait_input(timeleft(&timo));
- }
- }
- waiting = 0;
- calltimeout();
- if (got_sighup) {
- kill_link = 1;
- got_sighup = 0;
- if (status != EXIT_HANGUP)
- status = EXIT_USER_REQUEST;
- }
- if (got_sigterm) {
- kill_link = 1;
- persist = 0;
- status = EXIT_USER_REQUEST;
- got_sigterm = 0;
- }
- if (got_sigchld) {
- reap_kids(0); /* Don't leave dead kids lying around */
- got_sigchld = 0;
- }
- if (got_sigusr2) {
- open_ccp_flag = 1;
- got_sigusr2 = 0;
- }
-}
-
-/*
- * setup_signals - initialize signal handling.
- */
-static void
-setup_signals()
-{
- struct sigaction sa;
- sigset_t mask;
-
- /*
- * Compute mask of all interesting signals and install signal handlers
- * for each. Only one signal handler may be active at a time. Therefore,
- * all other signals should be masked when any handler is executing.
- */
- sigemptyset(&mask);
- sigaddset(&mask, SIGHUP);
- sigaddset(&mask, SIGINT);
- sigaddset(&mask, SIGTERM);
- sigaddset(&mask, SIGCHLD);
- sigaddset(&mask, SIGUSR2);
-
-#define SIGNAL(s, handler) do { \
- sa.sa_handler = handler; \
- if (sigaction(s, &sa, NULL) < 0) \
- fatal("Couldn't establish signal handler (%d): %m", s); \
- } while (0)
-
- sa.sa_mask = mask;
- sa.sa_flags = 0;
- SIGNAL(SIGHUP, hup); /* Hangup */
- SIGNAL(SIGINT, term); /* Interrupt */
- SIGNAL(SIGTERM, term); /* Terminate */
- SIGNAL(SIGCHLD, chld);
-
- SIGNAL(SIGUSR1, toggle_debug); /* Toggle debug flag */
- SIGNAL(SIGUSR2, open_ccp); /* Reopen CCP */
-
- /*
- * Install a handler for other signals which would otherwise
- * cause pppd to exit without cleaning up.
- */
- SIGNAL(SIGABRT, bad_signal);
- SIGNAL(SIGALRM, bad_signal);
- SIGNAL(SIGFPE, bad_signal);
- SIGNAL(SIGILL, bad_signal);
- SIGNAL(SIGPIPE, bad_signal);
- SIGNAL(SIGQUIT, bad_signal);
- SIGNAL(SIGSEGV, bad_signal);
-#ifdef SIGBUS
- SIGNAL(SIGBUS, bad_signal);
-#endif
-#ifdef SIGEMT
- SIGNAL(SIGEMT, bad_signal);
-#endif
-#ifdef SIGPOLL
- SIGNAL(SIGPOLL, bad_signal);
-#endif
-#ifdef SIGPROF
- SIGNAL(SIGPROF, bad_signal);
-#endif
-#ifdef SIGSYS
- SIGNAL(SIGSYS, bad_signal);
-#endif
-#ifdef SIGTRAP
- SIGNAL(SIGTRAP, bad_signal);
-#endif
-#ifdef SIGVTALRM
- SIGNAL(SIGVTALRM, bad_signal);
-#endif
-#ifdef SIGXCPU
- SIGNAL(SIGXCPU, bad_signal);
-#endif
-#ifdef SIGXFSZ
- SIGNAL(SIGXFSZ, bad_signal);
-#endif
-
- /*
- * Apparently we can get a SIGPIPE when we call syslog, if
- * syslogd has died and been restarted. Ignoring it seems
- * be sufficient.
- */
- signal(SIGPIPE, SIG_IGN);
-}
-
-/*
- * set_ifunit - do things we need to do once we know which ppp
- * unit we are using.
- */
-void
-set_ifunit(iskey)
- int iskey;
-{
- info("Using interface %s%d", PPP_DRV_NAME, ifunit);
- slprintf(ifname, sizeof(ifname), "%s%d", PPP_DRV_NAME, ifunit);
- script_setenv("IFNAME", ifname, iskey);
- if (iskey) {
- create_pidfile(); /* write pid to file */
- create_linkpidfile();
- }
-}
-
-/*
- * detach - detach us from the controlling terminal.
- */
-void
-detach()
-{
- int pid;
- char numbuf[16];
-
- if (detached)
- return;
- if ((pid = fork()) < 0) {
- error("Couldn't detach (fork failed: %m)");
- die(1); /* or just return? */
- }
- if (pid != 0) {
- /* parent */
- notify(pidchange, pid);
- exit(0); /* parent dies */
- }
- setsid();
- chdir("/");
- close(0);
- close(1);
- close(2);
- detached = 1;
- if (log_default)
- log_to_fd = -1;
- /* update pid files if they have been written already */
- if (pidfilename[0])
- create_pidfile();
- if (linkpidfile[0])
- create_linkpidfile();
- slprintf(numbuf, sizeof(numbuf), "%d", getpid());
- script_setenv("PPPD_PID", numbuf, 1);
-}
-
-/*
- * reopen_log - (re)open our connection to syslog.
- */
-void
-reopen_log()
-{
-#ifdef ULTRIX
- openlog("pppd", LOG_PID);
-#else
- openlog("pppd", LOG_PID | LOG_NDELAY, LOG_PPP);
- setlogmask(LOG_UPTO(LOG_INFO));
-#endif
-}
-
-/*
- * Create a file containing our process ID.
- */
-static void
-create_pidfile()
-{
- FILE *pidfile;
-
- slprintf(pidfilename, sizeof(pidfilename), "%s%s.pid",
- _PATH_VARRUN, ifname);
- if ((pidfile = fopen(pidfilename, "w")) != NULL) {
- fprintf(pidfile, "%d\n", getpid());
- (void) fclose(pidfile);
- } else {
- error("Failed to create pid file %s: %m", pidfilename);
- pidfilename[0] = 0;
- }
-}
-
-static void
-create_linkpidfile()
-{
- FILE *pidfile;
-
- if (linkname[0] == 0)
- return;
- script_setenv("LINKNAME", linkname, 1);
- slprintf(linkpidfile, sizeof(linkpidfile), "%sppp-%s.pid",
- _PATH_VARRUN, linkname);
- if ((pidfile = fopen(linkpidfile, "w")) != NULL) {
- fprintf(pidfile, "%d\n", getpid());
- if (ifname[0])
- fprintf(pidfile, "%s\n", ifname);
- (void) fclose(pidfile);
- } else {
- error("Failed to create pid file %s: %m", linkpidfile);
- linkpidfile[0] = 0;
- }
-}
-
-/*
- * holdoff_end - called via a timeout when the holdoff period ends.
- */
-static void
-holdoff_end(arg)
- void *arg;
-{
- new_phase(PHASE_DORMANT);
-}
-
-/* List of protocol names, to make our messages a little more informative. */
-struct protocol_list {
- u_short proto;
- const char *name;
-} protocol_list[] = {
- { 0x21, "IP" },
- { 0x23, "OSI Network Layer" },
- { 0x25, "Xerox NS IDP" },
- { 0x27, "DECnet Phase IV" },
- { 0x29, "Appletalk" },
- { 0x2b, "Novell IPX" },
- { 0x2d, "VJ compressed TCP/IP" },
- { 0x2f, "VJ uncompressed TCP/IP" },
- { 0x31, "Bridging PDU" },
- { 0x33, "Stream Protocol ST-II" },
- { 0x35, "Banyan Vines" },
- { 0x39, "AppleTalk EDDP" },
- { 0x3b, "AppleTalk SmartBuffered" },
- { 0x3d, "Multi-Link" },
- { 0x3f, "NETBIOS Framing" },
- { 0x41, "Cisco Systems" },
- { 0x43, "Ascom Timeplex" },
- { 0x45, "Fujitsu Link Backup and Load Balancing (LBLB)" },
- { 0x47, "DCA Remote Lan" },
- { 0x49, "Serial Data Transport Protocol (PPP-SDTP)" },
- { 0x4b, "SNA over 802.2" },
- { 0x4d, "SNA" },
- { 0x4f, "IP6 Header Compression" },
- { 0x6f, "Stampede Bridging" },
- { 0xfb, "single-link compression" },
- { 0xfd, "1st choice compression" },
- { 0x0201, "802.1d Hello Packets" },
- { 0x0203, "IBM Source Routing BPDU" },
- { 0x0205, "DEC LANBridge100 Spanning Tree" },
- { 0x0231, "Luxcom" },
- { 0x0233, "Sigma Network Systems" },
- { 0x8021, "Internet Protocol Control Protocol" },
- { 0x8023, "OSI Network Layer Control Protocol" },
- { 0x8025, "Xerox NS IDP Control Protocol" },
- { 0x8027, "DECnet Phase IV Control Protocol" },
- { 0x8029, "Appletalk Control Protocol" },
- { 0x802b, "Novell IPX Control Protocol" },
- { 0x8031, "Bridging NCP" },
- { 0x8033, "Stream Protocol Control Protocol" },
- { 0x8035, "Banyan Vines Control Protocol" },
- { 0x803d, "Multi-Link Control Protocol" },
- { 0x803f, "NETBIOS Framing Control Protocol" },
- { 0x8041, "Cisco Systems Control Protocol" },
- { 0x8043, "Ascom Timeplex" },
- { 0x8045, "Fujitsu LBLB Control Protocol" },
- { 0x8047, "DCA Remote Lan Network Control Protocol (RLNCP)" },
- { 0x8049, "Serial Data Control Protocol (PPP-SDCP)" },
- { 0x804b, "SNA over 802.2 Control Protocol" },
- { 0x804d, "SNA Control Protocol" },
- { 0x804f, "IP6 Header Compression Control Protocol" },
- { 0x006f, "Stampede Bridging Control Protocol" },
- { 0x80fb, "Single Link Compression Control Protocol" },
- { 0x80fd, "Compression Control Protocol" },
- { 0xc021, "Link Control Protocol" },
- { 0xc023, "Password Authentication Protocol" },
- { 0xc025, "Link Quality Report" },
- { 0xc027, "Shiva Password Authentication Protocol" },
- { 0xc029, "CallBack Control Protocol (CBCP)" },
- { 0xc081, "Container Control Protocol" },
- { 0xc223, "Challenge Handshake Authentication Protocol" },
- { 0xc281, "Proprietary Authentication Protocol" },
- { 0, NULL },
-};
-
-/*
- * protocol_name - find a name for a PPP protocol.
- */
-const char *
-protocol_name(proto)
- int proto;
-{
- struct protocol_list *lp;
-
- for (lp = protocol_list; lp->proto != 0; ++lp)
- if (proto == lp->proto)
- return lp->name;
- return NULL;
-}
-
-/*
- * get_input - called when incoming data is available.
- */
-static void
-get_input()
-{
- int len, i;
- u_char *p;
- u_short protocol;
- struct protent *protp;
-
- p = inpacket_buf; /* point to beginning of packet buffer */
-
- len = read_packet(inpacket_buf);
- if (len < 0)
- return;
-
- if (len == 0) {
- notice("Modem hangup");
- hungup = 1;
- status = EXIT_HANGUP;
- lcp_lowerdown(0); /* serial link is no longer available */
- link_terminated(0);
- return;
- }
-
- if (debug /*&& (debugflags & DBG_INPACKET)*/)
- dbglog("rcvd %P", p, len);
-
- if (len < PPP_HDRLEN) {
- MAINDEBUG(("io(): Received short packet."));
- return;
- }
-
- p += 2; /* Skip address and control */
- GETSHORT(protocol, p);
- len -= PPP_HDRLEN;
-
- /*
- * Toss all non-LCP packets unless LCP is OPEN.
- */
- if (protocol != PPP_LCP && lcp_fsm[0].state != OPENED) {
- MAINDEBUG(("get_input: Received non-LCP packet when LCP not open."));
- return;
- }
-
- /*
- * Until we get past the authentication phase, toss all packets
- * except LCP, LQR and authentication packets.
- */
- if (phase <= PHASE_AUTHENTICATE
- && !(protocol == PPP_LCP || protocol == PPP_LQR
- || protocol == PPP_PAP || protocol == PPP_CHAP)) {
- MAINDEBUG(("get_input: discarding proto 0x%x in phase %d",
- protocol, phase));
- return;
- }
-
- /*
- * Upcall the proper protocol input routine.
- */
- for (i = 0; (protp = protocols[i]) != NULL; ++i) {
- if (protp->protocol == protocol && protp->enabled_flag) {
- (*protp->input)(0, p, len);
- return;
- }
- if (protocol == (protp->protocol & ~0x8000) && protp->enabled_flag
- && protp->datainput != NULL) {
- (*protp->datainput)(0, p, len);
- return;
- }
- }
-
- if (debug) {
- const char *pname = protocol_name(protocol);
- if (pname != NULL)
- warn("Unsupported protocol '%s' (0x%x) received", pname, protocol);
- else
- warn("Unsupported protocol 0x%x received", protocol);
- }
- lcp_sprotrej(0, p - PPP_HDRLEN, len + PPP_HDRLEN);
-}
-
-/*
- * new_phase - signal the start of a new phase of pppd's operation.
- */
-void
-new_phase(p)
- int p;
-{
- phase = p;
- if (new_phase_hook)
- (*new_phase_hook)(p);
- notify(phasechange, p);
-}
-
-/*
- * die - clean up state and exit with the specified status.
- */
-void
-die(status)
- int status;
-{
- cleanup();
- notify(exitnotify, status);
- syslog(LOG_INFO, "Exit.");
- exit(status);
-}
-
-/*
- * cleanup - restore anything which needs to be restored before we exit
- */
-/* ARGSUSED */
-static void
-cleanup()
-{
- sys_cleanup();
-
- if (fd_ppp >= 0)
- the_channel->disestablish_ppp(devfd);
- if (the_channel->cleanup)
- (*the_channel->cleanup)();
-
- if (pidfilename[0] != 0 && unlink(pidfilename) < 0 && errno != ENOENT)
- warn("unable to delete pid file %s: %m", pidfilename);
- pidfilename[0] = 0;
- if (linkpidfile[0] != 0 && unlink(linkpidfile) < 0 && errno != ENOENT)
- warn("unable to delete pid file %s: %m", linkpidfile);
- linkpidfile[0] = 0;
-
- if (pppdb != NULL)
- cleanup_db();
-}
-
-/*
- * update_link_stats - get stats at link termination.
- */
-void
-update_link_stats(u)
- int u;
-{
- struct timeval now;
- char numbuf[32];
-
- if (!get_ppp_stats(u, &link_stats)
- || gettimeofday(&now, NULL) < 0)
- return;
- link_connect_time = now.tv_sec - start_time.tv_sec;
- link_stats_valid = 1;
-
- slprintf(numbuf, sizeof(numbuf), "%d", link_connect_time);
- script_setenv("CONNECT_TIME", numbuf, 0);
- slprintf(numbuf, sizeof(numbuf), "%d", link_stats.bytes_out);
- script_setenv("BYTES_SENT", numbuf, 0);
- slprintf(numbuf, sizeof(numbuf), "%d", link_stats.bytes_in);
- script_setenv("BYTES_RCVD", numbuf, 0);
-}
-
-
-struct callout {
- struct timeval c_time; /* time at which to call routine */
- void *c_arg; /* argument to routine */
- void (*c_func) __P((void *)); /* routine */
- struct callout *c_next;
-};
-
-static struct callout *callout = NULL; /* Callout list */
-static struct timeval timenow; /* Current time */
-
-/*
- * timeout - Schedule a timeout.
- *
- * Note that this timeout takes the number of milliseconds, NOT hz (as in
- * the kernel).
- */
-void
-timeout(func, arg, secs, usecs)
- void (*func) __P((void *));
- void *arg;
- int secs, usecs;
-{
- struct callout *newp, *p, **pp;
-
- MAINDEBUG(("Timeout %p:%p in %d.%03d seconds.", func, arg,
- time / 1000, time % 1000));
-
- /*
- * Allocate timeout.
- */
- if ((newp = (struct callout *) malloc(sizeof(struct callout))) == NULL)
- fatal("Out of memory in timeout()!");
- newp->c_arg = arg;
- newp->c_func = func;
- gettimeofday(&timenow, NULL);
- newp->c_time.tv_sec = timenow.tv_sec + secs;
- newp->c_time.tv_usec = timenow.tv_usec + usecs;
- if (newp->c_time.tv_usec >= 1000000) {
- newp->c_time.tv_sec += newp->c_time.tv_usec / 1000000;
- newp->c_time.tv_usec %= 1000000;
- }
-
- /*
- * Find correct place and link it in.
- */
- for (pp = &callout; (p = *pp); pp = &p->c_next)
- if (newp->c_time.tv_sec < p->c_time.tv_sec
- || (newp->c_time.tv_sec == p->c_time.tv_sec
- && newp->c_time.tv_usec < p->c_time.tv_usec))
- break;
- newp->c_next = p;
- *pp = newp;
-}
-
-
-/*
- * untimeout - Unschedule a timeout.
- */
-void
-untimeout(func, arg)
- void (*func) __P((void *));
- void *arg;
-{
- struct callout **copp, *freep;
-
- MAINDEBUG(("Untimeout %p:%p.", func, arg));
-
- /*
- * Find first matching timeout and remove it from the list.
- */
- for (copp = &callout; (freep = *copp); copp = &freep->c_next)
- if (freep->c_func == func && freep->c_arg == arg) {
- *copp = freep->c_next;
- free((char *) freep);
- break;
- }
-}
-
-
-/*
- * calltimeout - Call any timeout routines which are now due.
- */
-static void
-calltimeout()
-{
- struct callout *p;
-
- while (callout != NULL) {
- p = callout;
-
- if (gettimeofday(&timenow, NULL) < 0)
- fatal("Failed to get time of day: %m");
- if (!(p->c_time.tv_sec < timenow.tv_sec
- || (p->c_time.tv_sec == timenow.tv_sec
- && p->c_time.tv_usec <= timenow.tv_usec)))
- break; /* no, it's not time yet */
-
- callout = p->c_next;
- (*p->c_func)(p->c_arg);
-
- free((char *) p);
- }
-}
-
-
-/*
- * timeleft - return the length of time until the next timeout is due.
- */
-static struct timeval *
-timeleft(tvp)
- struct timeval *tvp;
-{
- if (callout == NULL)
- return NULL;
-
- gettimeofday(&timenow, NULL);
- tvp->tv_sec = callout->c_time.tv_sec - timenow.tv_sec;
- tvp->tv_usec = callout->c_time.tv_usec - timenow.tv_usec;
- if (tvp->tv_usec < 0) {
- tvp->tv_usec += 1000000;
- tvp->tv_sec -= 1;
- }
- if (tvp->tv_sec < 0)
- tvp->tv_sec = tvp->tv_usec = 0;
-
- return tvp;
-}
-
-
-/*
- * kill_my_pg - send a signal to our process group, and ignore it ourselves.
- */
-static void
-kill_my_pg(sig)
- int sig;
-{
- struct sigaction act, oldact;
-
- act.sa_handler = SIG_IGN;
- act.sa_flags = 0;
- kill(0, sig);
- sigaction(sig, &act, &oldact);
- sigaction(sig, &oldact, NULL);
-}
-
-
-/*
- * hup - Catch SIGHUP signal.
- *
- * Indicates that the physical layer has been disconnected.
- * We don't rely on this indication; if the user has sent this
- * signal, we just take the link down.
- */
-static void
-hup(sig)
- int sig;
-{
- info("Hangup (SIGHUP)");
- got_sighup = 1;
- if (conn_running)
- /* Send the signal to the [dis]connector process(es) also */
- kill_my_pg(sig);
- notify(sigreceived, sig);
- if (waiting)
- siglongjmp(sigjmp, 1);
-}
-
-
-/*
- * term - Catch SIGTERM signal and SIGINT signal (^C/del).
- *
- * Indicates that we should initiate a graceful disconnect and exit.
- */
-/*ARGSUSED*/
-static void
-term(sig)
- int sig;
-{
- info("Terminating on signal %d.", sig);
- got_sigterm = 1;
- if (conn_running)
- /* Send the signal to the [dis]connector process(es) also */
- kill_my_pg(sig);
- notify(sigreceived, sig);
- if (waiting)
- siglongjmp(sigjmp, 1);
-}
-
-
-/*
- * chld - Catch SIGCHLD signal.
- * Sets a flag so we will call reap_kids in the mainline.
- */
-static void
-chld(sig)
- int sig;
-{
- got_sigchld = 1;
- if (waiting)
- siglongjmp(sigjmp, 1);
-}
-
-
-/*
- * toggle_debug - Catch SIGUSR1 signal.
- *
- * Toggle debug flag.
- */
-/*ARGSUSED*/
-static void
-toggle_debug(sig)
- int sig;
-{
- debug = !debug;
- if (debug) {
- setlogmask(LOG_UPTO(LOG_DEBUG));
- } else {
- setlogmask(LOG_UPTO(LOG_WARNING));
- }
-}
-
-
-/*
- * open_ccp - Catch SIGUSR2 signal.
- *
- * Try to (re)negotiate compression.
- */
-/*ARGSUSED*/
-static void
-open_ccp(sig)
- int sig;
-{
- got_sigusr2 = 1;
- if (waiting)
- siglongjmp(sigjmp, 1);
-}
-
-
-/*
- * bad_signal - We've caught a fatal signal. Clean up state and exit.
- */
-static void
-bad_signal(sig)
- int sig;
-{
- static int crashed = 0;
-
- if (crashed)
- _exit(127);
- crashed = 1;
- error("Fatal signal %d", sig);
- if (conn_running)
- kill_my_pg(SIGTERM);
- notify(sigreceived, sig);
- die(127);
-}
-
-
-/*
- * device_script - run a program to talk to the specified fds
- * (e.g. to run the connector or disconnector script).
- * stderr gets connected to the log fd or to the _PATH_CONNERRS file.
- */
-int
-device_script(program, in, out, dont_wait)
- char *program;
- int in, out;
- int dont_wait;
-{
- int pid, fd;
- int status = -1;
- int errfd;
-
- ++conn_running;
- pid = fork();
-
- if (pid < 0) {
- --conn_running;
- error("Failed to create child process: %m");
- return -1;
- }
-
- if (pid != 0) {
- if (dont_wait) {
- record_child(pid, program, NULL, NULL);
- status = 0;
- } else {
- while (waitpid(pid, &status, 0) < 0) {
- if (errno == EINTR)
- continue;
- fatal("error waiting for (dis)connection process: %m");
- }
- --conn_running;
- }
- return (status == 0 ? 0 : -1);
- }
-
- /* here we are executing in the child */
- /* make sure fds 0, 1, 2 are occupied */
- while ((fd = dup(in)) >= 0) {
- if (fd > 2) {
- close(fd);
- break;
- }
- }
-
- /* dup in and out to fds > 2 */
- in = dup(in);
- out = dup(out);
- if (log_to_fd >= 0) {
- errfd = dup(log_to_fd);
- } else {
- errfd = open(_PATH_CONNERRS, O_WRONLY | O_APPEND | O_CREAT, 0600);
- }
-
- /* close fds 0 - 2 and any others we can think of */
- close(0);
- close(1);
- close(2);
- sys_close();
- if (the_channel->close)
- (*the_channel->close)();
- closelog();
-
- /* dup the in, out, err fds to 0, 1, 2 */
- dup2(in, 0);
- close(in);
- dup2(out, 1);
- close(out);
- if (errfd >= 0) {
- dup2(errfd, 2);
- close(errfd);
- }
-
- setuid(uid);
- if (getuid() != uid) {
- error("setuid failed");
- exit(1);
- }
- setgid(getgid());
- {
- int argc = 0;
- char * argv[500];
- char * ptr = program;
- while (ptr != NULL) {
- argv[argc] = ptr;
- argc++;
- ptr = strchr(ptr, ' ');
- if (ptr) {
- ptr[0] = '\0';
- ptr++;
- }
- }
- argv[argc] = NULL;
- execv(argv[0], argv);
- error("could not exec %s: %m", program);
- exit(99);
- }
- /* NOTREACHED */
-}
-
-
-/*
- * run-program - execute a program with given arguments,
- * but don't wait for it.
- * If the program can't be executed, logs an error unless
- * must_exist is 0 and the program file doesn't exist.
- * Returns -1 if it couldn't fork, 0 if the file doesn't exist
- * or isn't an executable plain file, or the process ID of the child.
- * If done != NULL, (*done)(arg) will be called later (within
- * reap_kids) iff the return value is > 0.
- */
-pid_t
-run_program(prog, args, must_exist, done, arg)
- char *prog;
- char **args;
- int must_exist;
- void (*done) __P((void *));
- void *arg;
-{
- int pid;
- struct stat sbuf;
-
- /*
- * First check if the file exists and is executable.
- * We don't use access() because that would use the
- * real user-id, which might not be root, and the script
- * might be accessible only to root.
- */
- errno = EINVAL;
- if (stat(prog, &sbuf) < 0 || !S_ISREG(sbuf.st_mode)
- || (sbuf.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0) {
- if (must_exist || errno != ENOENT)
- warn("Can't execute %s: %m", prog);
- return 0;
- }
-
- pid = fork();
- if (pid == -1) {
- error("Failed to create child process for %s: %m", prog);
- return -1;
- }
- if (pid == 0) {
- int new_fd;
-
- /* Leave the current location */
- (void) setsid(); /* No controlling tty. */
- (void) umask (S_IRWXG|S_IRWXO);
- (void) chdir ("/"); /* no current directory. */
- setuid(0); /* set real UID = root */
- setgid(getegid());
-
- /* Ensure that nothing of our device environment is inherited. */
- sys_close();
- closelog();
- close (0);
- close (1);
- close (2);
- if (the_channel->close)
- (*the_channel->close)();
-
- /* Don't pass handles to the PPP device, even by accident. */
- new_fd = open (_PATH_DEVNULL, O_RDWR);
- if (new_fd >= 0) {
- if (new_fd != 0) {
- dup2 (new_fd, 0); /* stdin <- /dev/null */
- close (new_fd);
- }
- dup2 (0, 1); /* stdout -> /dev/null */
- dup2 (0, 2); /* stderr -> /dev/null */
- }
-
-#ifdef BSD
- /* Force the priority back to zero if pppd is running higher. */
- if (setpriority (PRIO_PROCESS, 0, 0) < 0)
- warn("can't reset priority to 0: %m");
-#endif
-
- /* SysV recommends a second fork at this point. */
-
- /* run the program */
- execve(prog, args, script_env);
- if (must_exist || errno != ENOENT) {
- /* have to reopen the log, there's nowhere else
- for the message to go. */
- reopen_log();
- syslog(LOG_ERR, "Can't execute %s: %m", prog);
- closelog();
- }
- _exit(-1);
- }
-
- if (debug)
- dbglog("Script %s started (pid %d)", prog, pid);
- record_child(pid, prog, done, arg);
-
- return pid;
-}
-
-
-/*
- * record_child - add a child process to the list for reap_kids
- * to use.
- */
-void
-record_child(pid, prog, done, arg)
- int pid;
- char *prog;
- void (*done) __P((void *));
- void *arg;
-{
- struct subprocess *chp;
-
- ++n_children;
-
- chp = (struct subprocess *) malloc(sizeof(struct subprocess));
- if (chp == NULL) {
- warn("losing track of %s process", prog);
- } else {
- chp->pid = pid;
- chp->prog = prog;
- chp->done = done;
- chp->arg = arg;
- chp->next = children;
- children = chp;
- }
-}
-
-
-/*
- * reap_kids - get status from any dead child processes,
- * and log a message for abnormal terminations.
- */
-static int
-reap_kids(waitfor)
- int waitfor;
-{
- int pid, status;
- struct subprocess *chp, **prevp;
-
- if (n_children == 0)
- return 0;
- while ((pid = waitpid(-1, &status, (waitfor? 0: WNOHANG))) != -1
- && pid != 0) {
- for (prevp = &children; (chp = *prevp) != NULL; prevp = &chp->next) {
- if (chp->pid == pid) {
- --n_children;
- *prevp = chp->next;
- break;
- }
- }
- if (WIFSIGNALED(status)) {
- warn("Child process %s (pid %d) terminated with signal %d",
- (chp? chp->prog: "??"), pid, WTERMSIG(status));
- } else if (debug)
- dbglog("Script %s finished (pid %d), status = 0x%x",
- (chp? chp->prog: "??"), pid, status);
- if (chp && chp->done)
- (*chp->done)(chp->arg);
- if (chp)
- free(chp);
- }
- if (pid == -1) {
- if (errno == ECHILD)
- return -1;
- if (errno != EINTR)
- error("Error waiting for child process: %m");
- }
- return 0;
-}
-
-/*
- * add_notifier - add a new function to be called when something happens.
- */
-void
-add_notifier(notif, func, arg)
- struct notifier **notif;
- notify_func func;
- void *arg;
-{
- struct notifier *np;
-
- np = malloc(sizeof(struct notifier));
- if (np == 0)
- novm("notifier struct");
- np->next = *notif;
- np->func = func;
- np->arg = arg;
- *notif = np;
-}
-
-/*
- * remove_notifier - remove a function from the list of things to
- * be called when something happens.
- */
-void
-remove_notifier(notif, func, arg)
- struct notifier **notif;
- notify_func func;
- void *arg;
-{
- struct notifier *np;
-
- for (; (np = *notif) != 0; notif = &np->next) {
- if (np->func == func && np->arg == arg) {
- *notif = np->next;
- free(np);
- break;
- }
- }
-}
-
-/*
- * notify - call a set of functions registered with add_notify.
- */
-void
-notify(notif, val)
- struct notifier *notif;
- int val;
-{
- struct notifier *np;
-
- while ((np = notif) != 0) {
- notif = np->next;
- (*np->func)(np->arg, val);
- }
-}
-
-/*
- * novm - log an error message saying we ran out of memory, and die.
- */
-void
-novm(msg)
- char *msg;
-{
- fatal("Virtual memory exhausted allocating %s\n", msg);
-}
-
-/*
- * script_setenv - set an environment variable value to be used
- * for scripts that we run (e.g. ip-up, auth-up, etc.)
- */
-void
-script_setenv(var, value, iskey)
- char *var, *value;
- int iskey;
-{
- size_t varl = strlen(var);
- size_t vl = varl + strlen(value) + 2;
- int i;
- char *p, *newstring;
-
- newstring = (char *) malloc(vl+1);
- if (newstring == 0)
- return;
- *newstring++ = iskey;
- slprintf(newstring, vl, "%s=%s", var, value);
-
- /* check if this variable is already set */
- if (script_env != 0) {
- for (i = 0; (p = script_env[i]) != 0; ++i) {
- if (strncmp(p, var, varl) == 0 && p[varl] == '=') {
- if (p[-1] && pppdb != NULL)
- delete_db_key(p);
- free(p-1);
- script_env[i] = newstring;
- if (iskey && pppdb != NULL)
- add_db_key(newstring);
- update_db_entry();
- return;
- }
- }
- } else {
- /* no space allocated for script env. ptrs. yet */
- i = 0;
- script_env = (char **) malloc(16 * sizeof(char *));
- if (script_env == 0)
- return;
- s_env_nalloc = 16;
- }
-
- /* reallocate script_env with more space if needed */
- if (i + 1 >= s_env_nalloc) {
- int new_n = i + 17;
- char **newenv = (char **) realloc((void *)script_env,
- new_n * sizeof(char *));
- if (newenv == 0)
- return;
- script_env = newenv;
- s_env_nalloc = new_n;
- }
-
- script_env[i] = newstring;
- script_env[i+1] = 0;
-
- if (pppdb != NULL) {
- if (iskey)
- add_db_key(newstring);
- update_db_entry();
- }
-}
-
-/*
- * script_unsetenv - remove a variable from the environment
- * for scripts.
- */
-void
-script_unsetenv(var)
- char *var;
-{
- int vl = strlen(var);
- int i;
- char *p;
-
- if (script_env == 0)
- return;
- for (i = 0; (p = script_env[i]) != 0; ++i) {
- if (strncmp(p, var, vl) == 0 && p[vl] == '=') {
- if (p[-1] && pppdb != NULL)
- delete_db_key(p);
- free(p-1);
- while ((script_env[i] = script_env[i+1]) != 0)
- ++i;
- break;
- }
- }
- if (pppdb != NULL)
- update_db_entry();
-}
-
-/*
- * update_db_entry - update our entry in the database.
- */
-static void
-update_db_entry()
-{
- TDB_DATA key, dbuf;
- int vlen, i;
- char *p, *q, *vbuf;
-
- if (script_env == NULL)
- return;
- vlen = 0;
- for (i = 0; (p = script_env[i]) != 0; ++i)
- vlen += strlen(p) + 1;
- vbuf = malloc(vlen);
- if (vbuf == 0)
- novm("database entry");
- q = vbuf;
- for (i = 0; (p = script_env[i]) != 0; ++i)
- q += slprintf(q, vbuf + vlen - q, "%s;", p);
-
- key.dptr = db_key;
- key.dsize = strlen(db_key);
- dbuf.dptr = vbuf;
- dbuf.dsize = vlen;
- if (tdb_store(pppdb, key, dbuf, TDB_REPLACE))
- error("tdb_store failed: %s", tdb_error(pppdb));
-
-}
-
-/*
- * add_db_key - add a key that we can use to look up our database entry.
- */
-static void
-add_db_key(str)
- const char *str;
-{
- TDB_DATA key, dbuf;
-
- key.dptr = (char *) str;
- key.dsize = strlen(str);
- dbuf.dptr = db_key;
- dbuf.dsize = strlen(db_key);
- if (tdb_store(pppdb, key, dbuf, TDB_REPLACE))
- error("tdb_store key failed: %s", tdb_error(pppdb));
-}
-
-/*
- * delete_db_key - delete a key for looking up our database entry.
- */
-static void
-delete_db_key(str)
- const char *str;
-{
- TDB_DATA key;
-
- key.dptr = (char *) str;
- key.dsize = strlen(str);
- tdb_delete(pppdb, key);
-}
-
-/*
- * cleanup_db - delete all the entries we put in the database.
- */
-static void
-cleanup_db()
-{
- TDB_DATA key;
- int i;
- char *p;
-
- key.dptr = db_key;
- key.dsize = strlen(db_key);
- tdb_delete(pppdb, key);
- for (i = 0; (p = script_env[i]) != 0; ++i)
- if (p[-1])
- delete_db_key(p);
-}
diff --git a/mdk-stage1/ppp/pppd/md4.c b/mdk-stage1/ppp/pppd/md4.c
deleted file mode 100644
index cda9f943d..000000000
--- a/mdk-stage1/ppp/pppd/md4.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
-** ********************************************************************
-** md4.c -- Implementation of MD4 Message Digest Algorithm **
-** Updated: 2/16/90 by Ronald L. Rivest **
-** (C) 1990 RSA Data Security, Inc. **
-** ********************************************************************
-*/
-
-/*
-** To use MD4:
-** -- Include md4.h in your program
-** -- Declare an MDstruct MD to hold the state of the digest
-** computation.
-** -- Initialize MD using MDbegin(&MD)
-** -- For each full block (64 bytes) X you wish to process, call
-** MD4Update(&MD,X,512)
-** (512 is the number of bits in a full block.)
-** -- For the last block (less than 64 bytes) you wish to process,
-** MD4Update(&MD,X,n)
-** where n is the number of bits in the partial block. A partial
-** block terminates the computation, so every MD computation
-** should terminate by processing a partial block, even if it
-** has n = 0.
-** -- The message digest is available in MD.buffer[0] ...
-** MD.buffer[3]. (Least-significant byte of each word
-** should be output first.)
-** -- You can print out the digest using MDprint(&MD)
-*/
-
-/* Implementation notes:
-** This implementation assumes that ints are 32-bit quantities.
-*/
-
-#define TRUE 1
-#define FALSE 0
-
-/* Compile-time includes
-*/
-#include <stdio.h>
-#include "md4.h"
-#include "pppd.h"
-
-/* Compile-time declarations of MD4 "magic constants".
-*/
-#define I0 0x67452301 /* Initial values for MD buffer */
-#define I1 0xefcdab89
-#define I2 0x98badcfe
-#define I3 0x10325476
-#define C2 013240474631 /* round 2 constant = sqrt(2) in octal */
-#define C3 015666365641 /* round 3 constant = sqrt(3) in octal */
-/* C2 and C3 are from Knuth, The Art of Programming, Volume 2
-** (Seminumerical Algorithms), Second Edition (1981), Addison-Wesley.
-** Table 2, page 660.
-*/
-
-#define fs1 3 /* round 1 shift amounts */
-#define fs2 7
-#define fs3 11
-#define fs4 19
-#define gs1 3 /* round 2 shift amounts */
-#define gs2 5
-#define gs3 9
-#define gs4 13
-#define hs1 3 /* round 3 shift amounts */
-#define hs2 9
-#define hs3 11
-#define hs4 15
-
-/* Compile-time macro declarations for MD4.
-** Note: The "rot" operator uses the variable "tmp".
-** It assumes tmp is declared as unsigned int, so that the >>
-** operator will shift in zeros rather than extending the sign bit.
-*/
-#define f(X,Y,Z) ((X&Y) | ((~X)&Z))
-#define g(X,Y,Z) ((X&Y) | (X&Z) | (Y&Z))
-#define h(X,Y,Z) (X^Y^Z)
-#define rot(X,S) (tmp=X,(tmp<<S) | (tmp>>(32-S)))
-#define ff(A,B,C,D,i,s) A = rot((A + f(B,C,D) + X[i]),s)
-#define gg(A,B,C,D,i,s) A = rot((A + g(B,C,D) + X[i] + C2),s)
-#define hh(A,B,C,D,i,s) A = rot((A + h(B,C,D) + X[i] + C3),s)
-
-/* MD4print(MDp)
-** Print message digest buffer MDp as 32 hexadecimal digits.
-** Order is from low-order byte of buffer[0] to high-order byte of
-** buffer[3].
-** Each byte is printed with high-order hexadecimal digit first.
-** This is a user-callable routine.
-*/
-void
-MD4Print(MDp)
-MD4_CTX *MDp;
-{
- int i,j;
- for (i=0;i<4;i++)
- for (j=0;j<32;j=j+8)
- printf("%02x",(MDp->buffer[i]>>j) & 0xFF);
-}
-
-/* MD4Init(MDp)
-** Initialize message digest buffer MDp.
-** This is a user-callable routine.
-*/
-void
-MD4Init(MDp)
-MD4_CTX *MDp;
-{
- int i;
- MDp->buffer[0] = I0;
- MDp->buffer[1] = I1;
- MDp->buffer[2] = I2;
- MDp->buffer[3] = I3;
- for (i=0;i<8;i++) MDp->count[i] = 0;
- MDp->done = 0;
-}
-
-/* MDblock(MDp,X)
-** Update message digest buffer MDp->buffer using 16-word data block X.
-** Assumes all 16 words of X are full of data.
-** Does not update MDp->count.
-** This routine is not user-callable.
-*/
-static void
-MDblock(MDp,Xb)
-MD4_CTX *MDp;
-unsigned char *Xb;
-{
- register unsigned int tmp, A, B, C, D;
- unsigned int X[16];
- int i;
-
- for (i = 0; i < 16; ++i) {
- X[i] = Xb[0] + (Xb[1] << 8) + (Xb[2] << 16) + (Xb[3] << 24);
- Xb += 4;
- }
-
- A = MDp->buffer[0];
- B = MDp->buffer[1];
- C = MDp->buffer[2];
- D = MDp->buffer[3];
- /* Update the message digest buffer */
- ff(A , B , C , D , 0 , fs1); /* Round 1 */
- ff(D , A , B , C , 1 , fs2);
- ff(C , D , A , B , 2 , fs3);
- ff(B , C , D , A , 3 , fs4);
- ff(A , B , C , D , 4 , fs1);
- ff(D , A , B , C , 5 , fs2);
- ff(C , D , A , B , 6 , fs3);
- ff(B , C , D , A , 7 , fs4);
- ff(A , B , C , D , 8 , fs1);
- ff(D , A , B , C , 9 , fs2);
- ff(C , D , A , B , 10 , fs3);
- ff(B , C , D , A , 11 , fs4);
- ff(A , B , C , D , 12 , fs1);
- ff(D , A , B , C , 13 , fs2);
- ff(C , D , A , B , 14 , fs3);
- ff(B , C , D , A , 15 , fs4);
- gg(A , B , C , D , 0 , gs1); /* Round 2 */
- gg(D , A , B , C , 4 , gs2);
- gg(C , D , A , B , 8 , gs3);
- gg(B , C , D , A , 12 , gs4);
- gg(A , B , C , D , 1 , gs1);
- gg(D , A , B , C , 5 , gs2);
- gg(C , D , A , B , 9 , gs3);
- gg(B , C , D , A , 13 , gs4);
- gg(A , B , C , D , 2 , gs1);
- gg(D , A , B , C , 6 , gs2);
- gg(C , D , A , B , 10 , gs3);
- gg(B , C , D , A , 14 , gs4);
- gg(A , B , C , D , 3 , gs1);
- gg(D , A , B , C , 7 , gs2);
- gg(C , D , A , B , 11 , gs3);
- gg(B , C , D , A , 15 , gs4);
- hh(A , B , C , D , 0 , hs1); /* Round 3 */
- hh(D , A , B , C , 8 , hs2);
- hh(C , D , A , B , 4 , hs3);
- hh(B , C , D , A , 12 , hs4);
- hh(A , B , C , D , 2 , hs1);
- hh(D , A , B , C , 10 , hs2);
- hh(C , D , A , B , 6 , hs3);
- hh(B , C , D , A , 14 , hs4);
- hh(A , B , C , D , 1 , hs1);
- hh(D , A , B , C , 9 , hs2);
- hh(C , D , A , B , 5 , hs3);
- hh(B , C , D , A , 13 , hs4);
- hh(A , B , C , D , 3 , hs1);
- hh(D , A , B , C , 11 , hs2);
- hh(C , D , A , B , 7 , hs3);
- hh(B , C , D , A , 15 , hs4);
- MDp->buffer[0] += A;
- MDp->buffer[1] += B;
- MDp->buffer[2] += C;
- MDp->buffer[3] += D;
-}
-
-/* MD4Update(MDp,X,count)
-** Input: X -- a pointer to an array of unsigned characters.
-** count -- the number of bits of X to use.
-** (if not a multiple of 8, uses high bits of last byte.)
-** Update MDp using the number of bits of X given by count.
-** This is the basic input routine for an MD4 user.
-** The routine completes the MD computation when count < 512, so
-** every MD computation should end with one call to MD4Update with a
-** count less than 512. A call with count 0 will be ignored if the
-** MD has already been terminated (done != 0), so an extra call with
-** count 0 can be given as a "courtesy close" to force termination
-** if desired.
-*/
-void
-MD4Update(MDp,X,count)
-MD4_CTX *MDp;
-unsigned char *X;
-unsigned int count;
-{
- unsigned int i, tmp, bit, byte, mask;
- unsigned char XX[64];
- unsigned char *p;
-
- /* return with no error if this is a courtesy close with count
- ** zero and MDp->done is true.
- */
- if (count == 0 && MDp->done) return;
- /* check to see if MD is already done and report error */
- if (MDp->done)
- { printf("\nError: MD4Update MD already done."); return; }
-
- /* Add count to MDp->count */
- tmp = count;
- p = MDp->count;
- while (tmp)
- { tmp += *p;
- *p++ = tmp;
- tmp = tmp >> 8;
- }
-
- /* Process data */
- if (count == 512)
- { /* Full block of data to handle */
- MDblock(MDp,X);
- }
- else if (count > 512) /* Check for count too large */
- {
- printf("\nError: MD4Update called with illegal count value %d.",
- count);
- return;
- }
- else /* partial block -- must be last block so finish up */
- {
- /* Find out how many bytes and residual bits there are */
- byte = count >> 3;
- bit = count & 7;
- /* Copy X into XX since we need to modify it */
- for (i=0;i<=byte;i++) XX[i] = X[i];
- for (i=byte+1;i<64;i++) XX[i] = 0;
- /* Add padding '1' bit and low-order zeros in last byte */
- mask = 1 << (7 - bit);
- XX[byte] = (XX[byte] | mask) & ~( mask - 1);
- /* If room for bit count, finish up with this block */
- if (byte <= 55)
- {
- for (i=0;i<8;i++) XX[56+i] = MDp->count[i];
- MDblock(MDp,XX);
- }
- else /* need to do two blocks to finish up */
- {
- MDblock(MDp,XX);
- for (i=0;i<56;i++) XX[i] = 0;
- for (i=0;i<8;i++) XX[56+i] = MDp->count[i];
- MDblock(MDp,XX);
- }
- /* Set flag saying we're done with MD computation */
- MDp->done = 1;
- }
-}
-
-/*
-** Finish up MD4 computation and return message digest.
-*/
-void
-MD4Final(buf, MD)
-unsigned char *buf;
-MD4_CTX *MD;
-{
- int i, j;
- unsigned int w;
-
- MD4Update(MD, NULL, 0);
- for (i = 0; i < 4; ++i) {
- w = MD->buffer[i];
- for (j = 0; j < 4; ++j) {
- *buf++ = w;
- w >>= 8;
- }
- }
-}
-
-/*
-** End of md4.c
-****************************(cut)***********************************/
diff --git a/mdk-stage1/ppp/pppd/md4.h b/mdk-stage1/ppp/pppd/md4.h
deleted file mode 100644
index 80e8f9a2a..000000000
--- a/mdk-stage1/ppp/pppd/md4.h
+++ /dev/null
@@ -1,64 +0,0 @@
-
-/*
-** ********************************************************************
-** md4.h -- Header file for implementation of **
-** MD4 Message Digest Algorithm **
-** Updated: 2/13/90 by Ronald L. Rivest **
-** (C) 1990 RSA Data Security, Inc. **
-** ********************************************************************
-*/
-
-#ifndef __P
-# if defined(__STDC__) || defined(__GNUC__)
-# define __P(x) x
-# else
-# define __P(x) ()
-# endif
-#endif
-
-
-/* MDstruct is the data structure for a message digest computation.
-*/
-typedef struct {
- unsigned int buffer[4]; /* Holds 4-word result of MD computation */
- unsigned char count[8]; /* Number of bits processed so far */
- unsigned int done; /* Nonzero means MD computation finished */
-} MD4_CTX;
-
-/* MD4Init(MD4_CTX *)
-** Initialize the MD4_CTX prepatory to doing a message digest
-** computation.
-*/
-extern void MD4Init __P((MD4_CTX *MD));
-
-/* MD4Update(MD,X,count)
-** Input: X -- a pointer to an array of unsigned characters.
-** count -- the number of bits of X to use (an unsigned int).
-** Updates MD using the first "count" bits of X.
-** The array pointed to by X is not modified.
-** If count is not a multiple of 8, MD4Update uses high bits of
-** last byte.
-** This is the basic input routine for a user.
-** The routine terminates the MD computation when count < 512, so
-** every MD computation should end with one call to MD4Update with a
-** count less than 512. Zero is OK for a count.
-*/
-extern void MD4Update __P((MD4_CTX *MD, unsigned char *X, unsigned int count));
-
-/* MD4Print(MD)
-** Prints message digest buffer MD as 32 hexadecimal digits.
-** Order is from low-order byte of buffer[0] to high-order byte
-** of buffer[3].
-** Each byte is printed with high-order hexadecimal digit first.
-*/
-extern void MD4Print __P((MD4_CTX *));
-
-/* MD4Final(buf, MD)
-** Returns message digest from MD and terminates the message
-** digest computation.
-*/
-extern void MD4Final __P((unsigned char *, MD4_CTX *));
-
-/*
-** End of md4.h
-****************************(cut)***********************************/
diff --git a/mdk-stage1/ppp/pppd/md5.c b/mdk-stage1/ppp/pppd/md5.c
deleted file mode 100644
index 0b8de3aae..000000000
--- a/mdk-stage1/ppp/pppd/md5.c
+++ /dev/null
@@ -1,309 +0,0 @@
-
-
-/*
- ***********************************************************************
- ** md5.c -- the source code for MD5 routines **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
- ** Created: 2/17/90 RLR **
- ** Revised: 1/91 SRD,AJ,BSK,JT Reference C ver., 7/10 constant corr. **
- ***********************************************************************
- */
-
-/*
- ***********************************************************************
- ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
- ** **
- ** License to copy and use this software is granted provided that **
- ** it is identified as the "RSA Data Security, Inc. MD5 Message- **
- ** Digest Algorithm" in all material mentioning or referencing this **
- ** software or this function. **
- ** **
- ** License is also granted to make and use derivative works **
- ** provided that such works are identified as "derived from the RSA **
- ** Data Security, Inc. MD5 Message-Digest Algorithm" in all **
- ** material mentioning or referencing the derived work. **
- ** **
- ** RSA Data Security, Inc. makes no representations concerning **
- ** either the merchantability of this software or the suitability **
- ** of this software for any particular purpose. It is provided "as **
- ** is" without express or implied warranty of any kind. **
- ** **
- ** These notices must be retained in any copies of any part of this **
- ** documentation and/or software. **
- ***********************************************************************
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "md5.h"
-
-/*
- ***********************************************************************
- ** Message-digest routines: **
- ** To form the message digest for a message M **
- ** (1) Initialize a context buffer mdContext using MD5Init **
- ** (2) Call MD5Update on mdContext and M **
- ** (3) Call MD5Final on mdContext **
- ** The message digest is now in mdContext->digest[0...15] **
- ***********************************************************************
- */
-
-/* forward declaration */
-static void Transform ();
-
-static unsigned char PADDING[64] = {
- 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-/* F, G, H and I are basic MD5 functions */
-#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
-#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define I(x, y, z) ((y) ^ ((x) | (~z)))
-
-/* ROTATE_LEFT rotates x left n bits */
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
-
-/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */
-/* Rotation is separate from addition to prevent recomputation */
-#define FF(a, b, c, d, x, s, ac) \
- {(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define GG(a, b, c, d, x, s, ac) \
- {(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define HH(a, b, c, d, x, s, ac) \
- {(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-#define II(a, b, c, d, x, s, ac) \
- {(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); \
- (a) = ROTATE_LEFT ((a), (s)); \
- (a) += (b); \
- }
-
-#ifdef __STDC__
-#define UL(x) x##U
-#else
-#define UL(x) x
-#endif
-
-/* The routine MD5Init initializes the message-digest context
- mdContext. All fields are set to zero.
- */
-void MD5Init (mdContext)
-MD5_CTX *mdContext;
-{
- mdContext->i[0] = mdContext->i[1] = (UINT4)0;
-
- /* Load magic initialization constants.
- */
- mdContext->buf[0] = (UINT4)0x67452301;
- mdContext->buf[1] = (UINT4)0xefcdab89;
- mdContext->buf[2] = (UINT4)0x98badcfe;
- mdContext->buf[3] = (UINT4)0x10325476;
-}
-
-/* The routine MD5Update updates the message-digest context to
- account for the presence of each of the characters inBuf[0..inLen-1]
- in the message whose digest is being computed.
- */
-void MD5Update (mdContext, inBuf, inLen)
-MD5_CTX *mdContext;
-unsigned char *inBuf;
-unsigned int inLen;
-{
- UINT4 in[16];
- int mdi;
- unsigned int i, ii;
-
- /* compute number of bytes mod 64 */
- mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
-
- /* update number of bits */
- if ((mdContext->i[0] + ((UINT4)inLen << 3)) < mdContext->i[0])
- mdContext->i[1]++;
- mdContext->i[0] += ((UINT4)inLen << 3);
- mdContext->i[1] += ((UINT4)inLen >> 29);
-
- while (inLen--) {
- /* add new character to buffer, increment mdi */
- mdContext->in[mdi++] = *inBuf++;
-
- /* transform if necessary */
- if (mdi == 0x40) {
- for (i = 0, ii = 0; i < 16; i++, ii += 4)
- in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
- (((UINT4)mdContext->in[ii+2]) << 16) |
- (((UINT4)mdContext->in[ii+1]) << 8) |
- ((UINT4)mdContext->in[ii]);
- Transform (mdContext->buf, in);
- mdi = 0;
- }
- }
-}
-
-/* The routine MD5Final terminates the message-digest computation and
- ends with the desired message digest in mdContext->digest[0...15].
- */
-void MD5Final (hash, mdContext)
-unsigned char hash[];
-MD5_CTX *mdContext;
-{
- UINT4 in[16];
- int mdi;
- unsigned int i, ii;
- unsigned int padLen;
-
- /* save number of bits */
- in[14] = mdContext->i[0];
- in[15] = mdContext->i[1];
-
- /* compute number of bytes mod 64 */
- mdi = (int)((mdContext->i[0] >> 3) & 0x3F);
-
- /* pad out to 56 mod 64 */
- padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
- MD5Update (mdContext, PADDING, padLen);
-
- /* append length in bits and transform */
- for (i = 0, ii = 0; i < 14; i++, ii += 4)
- in[i] = (((UINT4)mdContext->in[ii+3]) << 24) |
- (((UINT4)mdContext->in[ii+2]) << 16) |
- (((UINT4)mdContext->in[ii+1]) << 8) |
- ((UINT4)mdContext->in[ii]);
- Transform (mdContext->buf, in);
-
- /* store buffer in digest */
- for (i = 0, ii = 0; i < 4; i++, ii += 4) {
- mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF);
- mdContext->digest[ii+1] =
- (unsigned char)((mdContext->buf[i] >> 8) & 0xFF);
- mdContext->digest[ii+2] =
- (unsigned char)((mdContext->buf[i] >> 16) & 0xFF);
- mdContext->digest[ii+3] =
- (unsigned char)((mdContext->buf[i] >> 24) & 0xFF);
- }
- memcpy(hash, mdContext->digest, 16);
-}
-
-/* Basic MD5 step. Transforms buf based on in.
- */
-static void Transform (buf, in)
-UINT4 *buf;
-UINT4 *in;
-{
- UINT4 a = buf[0], b = buf[1], c = buf[2], d = buf[3];
-
- /* Round 1 */
-#define S11 7
-#define S12 12
-#define S13 17
-#define S14 22
- FF ( a, b, c, d, in[ 0], S11, UL(3614090360)); /* 1 */
- FF ( d, a, b, c, in[ 1], S12, UL(3905402710)); /* 2 */
- FF ( c, d, a, b, in[ 2], S13, UL( 606105819)); /* 3 */
- FF ( b, c, d, a, in[ 3], S14, UL(3250441966)); /* 4 */
- FF ( a, b, c, d, in[ 4], S11, UL(4118548399)); /* 5 */
- FF ( d, a, b, c, in[ 5], S12, UL(1200080426)); /* 6 */
- FF ( c, d, a, b, in[ 6], S13, UL(2821735955)); /* 7 */
- FF ( b, c, d, a, in[ 7], S14, UL(4249261313)); /* 8 */
- FF ( a, b, c, d, in[ 8], S11, UL(1770035416)); /* 9 */
- FF ( d, a, b, c, in[ 9], S12, UL(2336552879)); /* 10 */
- FF ( c, d, a, b, in[10], S13, UL(4294925233)); /* 11 */
- FF ( b, c, d, a, in[11], S14, UL(2304563134)); /* 12 */
- FF ( a, b, c, d, in[12], S11, UL(1804603682)); /* 13 */
- FF ( d, a, b, c, in[13], S12, UL(4254626195)); /* 14 */
- FF ( c, d, a, b, in[14], S13, UL(2792965006)); /* 15 */
- FF ( b, c, d, a, in[15], S14, UL(1236535329)); /* 16 */
-
- /* Round 2 */
-#define S21 5
-#define S22 9
-#define S23 14
-#define S24 20
- GG ( a, b, c, d, in[ 1], S21, UL(4129170786)); /* 17 */
- GG ( d, a, b, c, in[ 6], S22, UL(3225465664)); /* 18 */
- GG ( c, d, a, b, in[11], S23, UL( 643717713)); /* 19 */
- GG ( b, c, d, a, in[ 0], S24, UL(3921069994)); /* 20 */
- GG ( a, b, c, d, in[ 5], S21, UL(3593408605)); /* 21 */
- GG ( d, a, b, c, in[10], S22, UL( 38016083)); /* 22 */
- GG ( c, d, a, b, in[15], S23, UL(3634488961)); /* 23 */
- GG ( b, c, d, a, in[ 4], S24, UL(3889429448)); /* 24 */
- GG ( a, b, c, d, in[ 9], S21, UL( 568446438)); /* 25 */
- GG ( d, a, b, c, in[14], S22, UL(3275163606)); /* 26 */
- GG ( c, d, a, b, in[ 3], S23, UL(4107603335)); /* 27 */
- GG ( b, c, d, a, in[ 8], S24, UL(1163531501)); /* 28 */
- GG ( a, b, c, d, in[13], S21, UL(2850285829)); /* 29 */
- GG ( d, a, b, c, in[ 2], S22, UL(4243563512)); /* 30 */
- GG ( c, d, a, b, in[ 7], S23, UL(1735328473)); /* 31 */
- GG ( b, c, d, a, in[12], S24, UL(2368359562)); /* 32 */
-
- /* Round 3 */
-#define S31 4
-#define S32 11
-#define S33 16
-#define S34 23
- HH ( a, b, c, d, in[ 5], S31, UL(4294588738)); /* 33 */
- HH ( d, a, b, c, in[ 8], S32, UL(2272392833)); /* 34 */
- HH ( c, d, a, b, in[11], S33, UL(1839030562)); /* 35 */
- HH ( b, c, d, a, in[14], S34, UL(4259657740)); /* 36 */
- HH ( a, b, c, d, in[ 1], S31, UL(2763975236)); /* 37 */
- HH ( d, a, b, c, in[ 4], S32, UL(1272893353)); /* 38 */
- HH ( c, d, a, b, in[ 7], S33, UL(4139469664)); /* 39 */
- HH ( b, c, d, a, in[10], S34, UL(3200236656)); /* 40 */
- HH ( a, b, c, d, in[13], S31, UL( 681279174)); /* 41 */
- HH ( d, a, b, c, in[ 0], S32, UL(3936430074)); /* 42 */
- HH ( c, d, a, b, in[ 3], S33, UL(3572445317)); /* 43 */
- HH ( b, c, d, a, in[ 6], S34, UL( 76029189)); /* 44 */
- HH ( a, b, c, d, in[ 9], S31, UL(3654602809)); /* 45 */
- HH ( d, a, b, c, in[12], S32, UL(3873151461)); /* 46 */
- HH ( c, d, a, b, in[15], S33, UL( 530742520)); /* 47 */
- HH ( b, c, d, a, in[ 2], S34, UL(3299628645)); /* 48 */
-
- /* Round 4 */
-#define S41 6
-#define S42 10
-#define S43 15
-#define S44 21
- II ( a, b, c, d, in[ 0], S41, UL(4096336452)); /* 49 */
- II ( d, a, b, c, in[ 7], S42, UL(1126891415)); /* 50 */
- II ( c, d, a, b, in[14], S43, UL(2878612391)); /* 51 */
- II ( b, c, d, a, in[ 5], S44, UL(4237533241)); /* 52 */
- II ( a, b, c, d, in[12], S41, UL(1700485571)); /* 53 */
- II ( d, a, b, c, in[ 3], S42, UL(2399980690)); /* 54 */
- II ( c, d, a, b, in[10], S43, UL(4293915773)); /* 55 */
- II ( b, c, d, a, in[ 1], S44, UL(2240044497)); /* 56 */
- II ( a, b, c, d, in[ 8], S41, UL(1873313359)); /* 57 */
- II ( d, a, b, c, in[15], S42, UL(4264355552)); /* 58 */
- II ( c, d, a, b, in[ 6], S43, UL(2734768916)); /* 59 */
- II ( b, c, d, a, in[13], S44, UL(1309151649)); /* 60 */
- II ( a, b, c, d, in[ 4], S41, UL(4149444226)); /* 61 */
- II ( d, a, b, c, in[11], S42, UL(3174756917)); /* 62 */
- II ( c, d, a, b, in[ 2], S43, UL( 718787259)); /* 63 */
- II ( b, c, d, a, in[ 9], S44, UL(3951481745)); /* 64 */
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-/*
- ***********************************************************************
- ** End of md5.c **
- ******************************** (cut) ********************************
- */
diff --git a/mdk-stage1/ppp/pppd/md5.h b/mdk-stage1/ppp/pppd/md5.h
deleted file mode 100644
index 7492b2228..000000000
--- a/mdk-stage1/ppp/pppd/md5.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- ***********************************************************************
- ** md5.h -- header file for implementation of MD5 **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
- ** Created: 2/17/90 RLR **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
- ** Revised (for MD5): RLR 4/27/91 **
- ** -- G modified to have y&~z instead of y&z **
- ** -- FF, GG, HH modified to add in last register done **
- ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
- ** -- distinct additive constant for each step **
- ** -- round 4 added, working mod 7 **
- ***********************************************************************
- */
-
-/*
- ***********************************************************************
- ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
- ** **
- ** License to copy and use this software is granted provided that **
- ** it is identified as the "RSA Data Security, Inc. MD5 Message- **
- ** Digest Algorithm" in all material mentioning or referencing this **
- ** software or this function. **
- ** **
- ** License is also granted to make and use derivative works **
- ** provided that such works are identified as "derived from the RSA **
- ** Data Security, Inc. MD5 Message-Digest Algorithm" in all **
- ** material mentioning or referencing the derived work. **
- ** **
- ** RSA Data Security, Inc. makes no representations concerning **
- ** either the merchantability of this software or the suitability **
- ** of this software for any particular purpose. It is provided "as **
- ** is" without express or implied warranty of any kind. **
- ** **
- ** These notices must be retained in any copies of any part of this **
- ** documentation and/or software. **
- ***********************************************************************
- */
-
-#ifndef __MD5_INCLUDE__
-
-/* typedef a 32-bit type */
-typedef unsigned int UINT4;
-
-/* Data structure for MD5 (Message-Digest) computation */
-typedef struct {
- UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
- UINT4 buf[4]; /* scratch buffer */
- unsigned char in[64]; /* input buffer */
- unsigned char digest[16]; /* actual digest after MD5Final call */
-} MD5_CTX;
-
-void MD5Init ();
-void MD5Update ();
-void MD5Final ();
-
-#define __MD5_INCLUDE__
-#endif /* __MD5_INCLUDE__ */
diff --git a/mdk-stage1/ppp/pppd/multilink.c b/mdk-stage1/ppp/pppd/multilink.c
deleted file mode 100644
index c30b07e0a..000000000
--- a/mdk-stage1/ppp/pppd/multilink.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- * multilink.c - support routines for multilink.
- *
- * Copyright (c) 2000 Paul Mackerras.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms. The name of the author may not be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <ctype.h>
-#include <netdb.h>
-#include <errno.h>
-#include <signal.h>
-#include <netinet/in.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "lcp.h"
-#include "tdb.h"
-
-bool endpoint_specified; /* user gave explicit endpoint discriminator */
-char *bundle_id; /* identifier for our bundle */
-
-extern TDB_CONTEXT *pppdb;
-extern char db_key[];
-
-static int get_default_epdisc __P((struct epdisc *));
-static int parse_num __P((char *str, const char *key, int *valp));
-static int owns_unit __P((TDB_DATA pid, int unit));
-
-#define set_ip_epdisc(ep, addr) do { \
- ep->length = 4; \
- ep->value[0] = addr >> 24; \
- ep->value[1] = addr >> 16; \
- ep->value[2] = addr >> 8; \
- ep->value[3] = addr; \
-} while (0)
-
-#define LOCAL_IP_ADDR(addr) \
- (((addr) & 0xff000000) == 0x0a000000 /* 10.x.x.x */ \
- || ((addr) & 0xfff00000) == 0xac100000 /* 172.16.x.x */ \
- || ((addr) & 0xffff0000) == 0xc0a80000) /* 192.168.x.x */
-
-#define process_exists(n) (kill((n), 0) == 0 || errno != ESRCH)
-
-void
-mp_check_options()
-{
- lcp_options *wo = &lcp_wantoptions[0];
- lcp_options *ao = &lcp_allowoptions[0];
-
- if (!multilink)
- return;
- /* if we're doing multilink, we have to negotiate MRRU */
- if (!wo->neg_mrru) {
- /* mrru not specified, default to mru */
- wo->mrru = wo->mru;
- wo->neg_mrru = 1;
- }
- ao->mrru = ao->mru;
- ao->neg_mrru = 1;
-
- if (!wo->neg_endpoint && !noendpoint) {
- /* get a default endpoint value */
- wo->neg_endpoint = get_default_epdisc(&wo->endpoint);
- }
-}
-
-/*
- * Make a new bundle or join us to an existing bundle
- * if we are doing multilink.
- */
-int
-mp_join_bundle()
-{
- lcp_options *go = &lcp_gotoptions[0];
- lcp_options *ho = &lcp_hisoptions[0];
- lcp_options *ao = &lcp_allowoptions[0];
- int unit, pppd_pid;
- int l, mtu;
- char *p;
- TDB_DATA key, pid, rec;
-
- if (!go->neg_mrru || !ho->neg_mrru) {
- /* not doing multilink */
- if (go->neg_mrru)
- notice("oops, multilink negotiated only for receive");
- mtu = ho->neg_mru? ho->mru: PPP_MRU;
- if (mtu > ao->mru)
- mtu = ao->mru;
- if (demand) {
- /* already have a bundle */
- cfg_bundle(0, 0, 0, 0);
- netif_set_mtu(0, mtu);
- return 0;
- }
- make_new_bundle(0, 0, 0, 0);
- set_ifunit(1);
- netif_set_mtu(0, mtu);
- return 0;
- }
-
- /*
- * Find the appropriate bundle or join a new one.
- * First we make up a name for the bundle.
- * The length estimate is worst-case assuming every
- * character has to be quoted.
- */
- l = 4 * strlen(peer_authname) + 10;
- if (ho->neg_endpoint)
- l += 3 * ho->endpoint.length + 8;
- if (bundle_name)
- l += 3 * strlen(bundle_name) + 2;
- bundle_id = malloc(l);
- if (bundle_id == 0)
- novm("bundle identifier");
-
- p = bundle_id;
- p += slprintf(p, l-1, "BUNDLE=\"%q\"", peer_authname);
- if (ho->neg_endpoint || bundle_name)
- *p++ = '/';
- if (ho->neg_endpoint)
- p += slprintf(p, bundle_id+l-p, "%s",
- epdisc_to_str(&ho->endpoint));
- if (bundle_name)
- p += slprintf(p, bundle_id+l-p, "/%v", bundle_name);
-
- /*
- * For demand mode, we only need to configure the bundle
- * and attach the link.
- */
- mtu = MIN(ho->mrru, ao->mru);
- if (demand) {
- cfg_bundle(go->mrru, ho->mrru, go->neg_ssnhf, ho->neg_ssnhf);
- netif_set_mtu(0, mtu);
- script_setenv("BUNDLE", bundle_id + 7, 1);
- return 0;
- }
-
- /*
- * Check if the bundle ID is already in the database.
- */
- unit = -1;
- tdb_writelock(pppdb);
- key.dptr = bundle_id;
- key.dsize = p - bundle_id;
- pid = tdb_fetch(pppdb, key);
- if (pid.dptr != NULL) {
- /* bundle ID exists, see if the pppd record exists */
- rec = tdb_fetch(pppdb, pid);
- if (rec.dptr != NULL) {
- /* it is, parse the interface number */
- parse_num(rec.dptr, "IFNAME=ppp", &unit);
- /* check the pid value */
- if (!parse_num(rec.dptr, "PPPD_PID=", &pppd_pid)
- || !process_exists(pppd_pid)
- || !owns_unit(pid, unit))
- unit = -1;
- free(rec.dptr);
- }
- free(pid.dptr);
- }
-
- if (unit >= 0) {
- /* attach to existing unit */
- if (bundle_attach(unit)) {
- set_ifunit(0);
- script_setenv("BUNDLE", bundle_id + 7, 0);
- tdb_writeunlock(pppdb);
- info("Link attached to %s", ifname);
- return 1;
- }
- /* attach failed because bundle doesn't exist */
- }
-
- /* we have to make a new bundle */
- make_new_bundle(go->mrru, ho->mrru, go->neg_ssnhf, ho->neg_ssnhf);
- set_ifunit(1);
- netif_set_mtu(0, mtu);
- script_setenv("BUNDLE", bundle_id + 7, 1);
- tdb_writeunlock(pppdb);
- info("New bundle %s created", ifname);
- return 0;
-}
-
-static int
-parse_num(str, key, valp)
- char *str;
- const char *key;
- int *valp;
-{
- char *p, *endp;
- int i;
-
- p = strstr(str, key);
- if (p != 0) {
- p += strlen(key);
- i = strtol(p, &endp, 10);
- if (endp != p && (*endp == 0 || *endp == ';')) {
- *valp = i;
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * Check whether the pppd identified by `key' still owns ppp unit `unit'.
- */
-static int
-owns_unit(key, unit)
- TDB_DATA key;
- int unit;
-{
- char ifkey[32];
- TDB_DATA kd, vd;
- int ret = 0;
-
- slprintf(ifkey, sizeof(ifkey), "IFNAME=ppp%d", unit);
- kd.dptr = ifkey;
- kd.dsize = strlen(ifkey);
- vd = tdb_fetch(pppdb, kd);
- if (vd.dptr != NULL) {
- ret = vd.dsize == key.dsize
- && memcmp(vd.dptr, key.dptr, vd.dsize) == 0;
- free(vd.dptr);
- }
- return ret;
-}
-
-static int
-get_default_epdisc(ep)
- struct epdisc *ep;
-{
- char *p;
- struct hostent *hp;
- u_int32_t addr;
-
- /* First try for an ethernet MAC address */
- p = get_first_ethernet();
- if (p != 0 && get_if_hwaddr(ep->value, p) >= 0) {
- ep->class = EPD_MAC;
- ep->length = 6;
- return 1;
- }
-
- /* see if our hostname corresponds to a reasonable IP address */
- hp = gethostbyname(hostname);
- if (hp != NULL) {
- addr = *(u_int32_t *)hp->h_addr;
- if (!bad_ip_adrs(addr)) {
- addr = ntohl(addr);
- if (!LOCAL_IP_ADDR(addr)) {
- ep->class = EPD_IP;
- set_ip_epdisc(ep, addr);
- return 1;
- }
- }
- }
-
- return 0;
-}
-
-/*
- * epdisc_to_str - make a printable string from an endpoint discriminator.
- */
-
-static char *endp_class_names[] = {
- "null", "local", "IP", "MAC", "magic", "phone"
-};
-
-char *
-epdisc_to_str(ep)
- struct epdisc *ep;
-{
- static char str[MAX_ENDP_LEN*3+8];
- u_char *p = ep->value;
- int i, mask = 0;
- char *q, c, c2;
-
- if (ep->class == EPD_NULL && ep->length == 0)
- return "null";
- if (ep->class == EPD_IP && ep->length == 4) {
- u_int32_t addr;
-
- GETLONG(addr, p);
- slprintf(str, sizeof(str), "IP:%I", htonl(addr));
- return str;
- }
-
- c = ':';
- c2 = '.';
- if (ep->class == EPD_MAC && ep->length == 6)
- c2 = ':';
- else if (ep->class == EPD_MAGIC && (ep->length % 4) == 0)
- mask = 3;
- q = str;
- if (ep->class <= EPD_PHONENUM)
- q += slprintf(q, sizeof(str)-1, "%s",
- endp_class_names[ep->class]);
- else
- q += slprintf(q, sizeof(str)-1, "%d", ep->class);
- c = ':';
- for (i = 0; i < ep->length && i < MAX_ENDP_LEN; ++i) {
- if ((i & mask) == 0) {
- *q++ = c;
- c = c2;
- }
- q += slprintf(q, str + sizeof(str) - q, "%.2x", ep->value[i]);
- }
- return str;
-}
-
-static int hexc_val(int c)
-{
- if (c >= 'a')
- return c - 'a' + 10;
- if (c >= 'A')
- return c - 'A' + 10;
- return c - '0';
-}
-
-int
-str_to_epdisc(ep, str)
- struct epdisc *ep;
- char *str;
-{
- int i, l;
- char *p, *endp;
-
- for (i = EPD_NULL; i <= EPD_PHONENUM; ++i) {
- int sl = strlen(endp_class_names[i]);
- if (strncasecmp(str, endp_class_names[i], sl) == 0) {
- str += sl;
- break;
- }
- }
- if (i > EPD_PHONENUM) {
- /* not a class name, try a decimal class number */
- i = strtol(str, &endp, 10);
- if (endp == str)
- return 0; /* can't parse class number */
- str = endp;
- }
- ep->class = i;
- if (*str == 0) {
- ep->length = 0;
- return 1;
- }
- if (*str != ':' && *str != '.')
- return 0;
- ++str;
-
- if (i == EPD_IP) {
- u_int32_t addr;
- i = parse_dotted_ip(str, &addr);
- if (i == 0 || str[i] != 0)
- return 0;
- set_ip_epdisc(ep, addr);
- return 1;
- }
- if (i == EPD_MAC && get_if_hwaddr(ep->value, str) >= 0) {
- ep->length = 6;
- return 1;
- }
-
- p = str;
- for (l = 0; l < MAX_ENDP_LEN; ++l) {
- if (*str == 0)
- break;
- if (p <= str)
- for (p = str; isxdigit(*p); ++p)
- ;
- i = p - str;
- if (i == 0)
- return 0;
- ep->value[l] = hexc_val(*str++);
- if ((i & 1) == 0)
- ep->value[l] = (ep->value[l] << 4) + hexc_val(*str++);
- if (*str == ':' || *str == '.')
- ++str;
- }
- if (*str != 0 || (ep->class == EPD_MAC && l != 6))
- return 0;
- ep->length = l;
- return 1;
-}
-
diff --git a/mdk-stage1/ppp/pppd/options.c b/mdk-stage1/ppp/pppd/options.c
deleted file mode 100644
index 1921d9ec5..000000000
--- a/mdk-stage1/ppp/pppd/options.c
+++ /dev/null
@@ -1,1513 +0,0 @@
-/*
- * options.c - handles option processing for PPP.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <ctype.h>
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <string.h>
-#include <pwd.h>
-#ifdef PLUGIN
-#include <dlfcn.h>
-#endif
-#ifdef PPP_FILTER
-#include <pcap.h>
-#include <pcap-int.h> /* XXX: To get struct pcap */
-#endif
-
-#include "pppd.h"
-#include "pathnames.h"
-
-#if defined(ultrix) || defined(NeXT)
-char *strdup __P((char *));
-#endif
-
-static const char rcsid[] = RCSID;
-
-struct option_value {
- struct option_value *next;
- const char *source;
- char value[1];
-};
-
-/*
- * Option variables and default values.
- */
-#ifdef PPP_FILTER
-int dflag = 0; /* Tell libpcap we want debugging */
-#endif
-int debug = 0; /* Debug flag */
-int kdebugflag = 0; /* Tell kernel to print debug messages */
-int default_device = 1; /* Using /dev/tty or equivalent */
-char devnam[MAXPATHLEN]; /* Device name */
-bool nodetach = 0; /* Don't detach from controlling tty */
-bool updetach = 0; /* Detach once link is up */
-int maxconnect = 0; /* Maximum connect time */
-char user[MAXNAMELEN]; /* Username for PAP */
-char passwd[MAXSECRETLEN]; /* Password for PAP */
-bool persist = 0; /* Reopen link after it goes down */
-char our_name[MAXNAMELEN]; /* Our name for authentication purposes */
-bool demand = 0; /* do dial-on-demand */
-char *ipparam = NULL; /* Extra parameter for ip up/down scripts */
-int idle_time_limit = 0; /* Disconnect if idle for this many seconds */
-int holdoff = 30; /* # seconds to pause before reconnecting */
-bool holdoff_specified; /* true if a holdoff value has been given */
-int log_to_fd = 1; /* send log messages to this fd too */
-bool log_default = 1; /* log_to_fd is default (stdout) */
-int maxfail = 10; /* max # of unsuccessful connection attempts */
-char linkname[MAXPATHLEN]; /* logical name for link */
-bool tune_kernel; /* may alter kernel settings */
-int connect_delay = 1000; /* wait this many ms after connect script */
-int req_unit = -1; /* requested interface unit */
-bool multilink = 0; /* Enable multilink operation */
-char *bundle_name = NULL; /* bundle name for multilink */
-bool dump_options; /* print out option values */
-bool dryrun; /* print out option values and exit */
-char *domain; /* domain name set by domain option */
-
-extern option_t auth_options[];
-extern struct stat devstat;
-
-#ifdef PPP_FILTER
-struct bpf_program pass_filter;/* Filter program for packets to pass */
-struct bpf_program active_filter; /* Filter program for link-active pkts */
-pcap_t pc; /* Fake struct pcap so we can compile expr */
-#endif
-
-char *current_option; /* the name of the option being parsed */
-int privileged_option; /* set iff the current option came from root */
-char *option_source; /* string saying where the option came from */
-int option_priority = OPRIO_CFGFILE; /* priority of the current options */
-bool devnam_fixed; /* can no longer change device name */
-
-static int logfile_fd = -1; /* fd opened for log file */
-static char logfile_name[MAXPATHLEN]; /* name of log file */
-
-/*
- * Prototypes
- */
-static int setdomain __P((char **));
-static int readfile __P((char **));
-static int callfile __P((char **));
-static int showversion __P((char **));
-static int showhelp __P((char **));
-static void usage __P((void));
-static int setlogfile __P((char **));
-#ifdef PLUGIN
-static int loadplugin __P((char **));
-#endif
-
-#ifdef PPP_FILTER
-static int setpassfilter __P((char **));
-static int setactivefilter __P((char **));
-#endif
-
-static option_t *find_option __P((const char *name));
-static int process_option __P((option_t *, char *, char **));
-static int n_arguments __P((option_t *));
-static int number_option __P((char *, u_int32_t *, int));
-
-/*
- * Structure to store extra lists of options.
- */
-struct option_list {
- option_t *options;
- struct option_list *next;
-};
-
-static struct option_list *extra_options = NULL;
-
-/*
- * Valid arguments.
- */
-option_t general_options[] = {
- { "debug", o_int, &debug,
- "Increase debugging level", OPT_INC | OPT_NOARG | 1 },
- { "-d", o_int, &debug,
- "Increase debugging level",
- OPT_ALIAS | OPT_INC | OPT_NOARG | 1 },
-
- { "kdebug", o_int, &kdebugflag,
- "Set kernel driver debug level", OPT_PRIO },
-
- { "nodetach", o_bool, &nodetach,
- "Don't detach from controlling tty", OPT_PRIO | 1 },
- { "-detach", o_bool, &nodetach,
- "Don't detach from controlling tty", OPT_ALIAS | OPT_PRIOSUB | 1 },
- { "updetach", o_bool, &updetach,
- "Detach from controlling tty once link is up",
- OPT_PRIOSUB | OPT_A2CLR | 1, &nodetach },
-
- { "holdoff", o_int, &holdoff,
- "Set time in seconds before retrying connection", OPT_PRIO },
-
- { "idle", o_int, &idle_time_limit,
- "Set time in seconds before disconnecting idle link", OPT_PRIO },
-
- { "maxconnect", o_int, &maxconnect,
- "Set connection time limit",
- OPT_PRIO | OPT_LLIMIT | OPT_NOINCR | OPT_ZEROINF },
-
- { "domain", o_special, (void *)setdomain,
- "Add given domain name to hostname",
- OPT_PRIO | OPT_PRIV | OPT_A2STRVAL, &domain },
-
- { "file", o_special, (void *)readfile,
- "Take options from a file", OPT_NOPRINT },
- { "call", o_special, (void *)callfile,
- "Take options from a privileged file", OPT_NOPRINT },
-
- { "persist", o_bool, &persist,
- "Keep on reopening connection after close", OPT_PRIO | 1 },
- { "nopersist", o_bool, &persist,
- "Turn off persist option", OPT_PRIOSUB },
-
- { "demand", o_bool, &demand,
- "Dial on demand", OPT_INITONLY | 1, &persist },
-
- { "--version", o_special_noarg, (void *)showversion,
- "Show version number" },
- { "--help", o_special_noarg, (void *)showhelp,
- "Show brief listing of options" },
- { "-h", o_special_noarg, (void *)showhelp,
- "Show brief listing of options", OPT_ALIAS },
-
- { "logfile", o_special, (void *)setlogfile,
- "Append log messages to this file",
- OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, &logfile_name },
- { "logfd", o_int, &log_to_fd,
- "Send log messages to this file descriptor",
- OPT_PRIOSUB | OPT_A2CLR, &log_default },
- { "nolog", o_int, &log_to_fd,
- "Don't send log messages to any file",
- OPT_PRIOSUB | OPT_NOARG | OPT_VAL(-1) },
- { "nologfd", o_int, &log_to_fd,
- "Don't send log messages to any file descriptor",
- OPT_PRIOSUB | OPT_ALIAS | OPT_NOARG | OPT_VAL(-1) },
-
- { "linkname", o_string, linkname,
- "Set logical name for link",
- OPT_PRIO | OPT_PRIV | OPT_STATIC, NULL, MAXPATHLEN },
-
- { "maxfail", o_int, &maxfail,
- "Maximum number of unsuccessful connection attempts to allow",
- OPT_PRIO },
-
- { "ktune", o_bool, &tune_kernel,
- "Alter kernel settings as necessary", OPT_PRIO | 1 },
- { "noktune", o_bool, &tune_kernel,
- "Don't alter kernel settings", OPT_PRIOSUB },
-
- { "connect-delay", o_int, &connect_delay,
- "Maximum time (in ms) to wait after connect script finishes",
- OPT_PRIO },
-
- { "unit", o_int, &req_unit,
- "PPP interface unit number to use if possible",
- OPT_PRIO | OPT_LLIMIT, 0, 0 },
-
- { "dump", o_bool, &dump_options,
- "Print out option values after parsing all options", 1 },
- { "dryrun", o_bool, &dryrun,
- "Stop after parsing, printing, and checking options", 1 },
-
-#ifdef HAVE_MULTILINK
- { "multilink", o_bool, &multilink,
- "Enable multilink operation", OPT_PRIO | 1 },
- { "mp", o_bool, &multilink,
- "Enable multilink operation", OPT_PRIOSUB | OPT_ALIAS | 1 },
- { "nomultilink", o_bool, &multilink,
- "Disable multilink operation", OPT_PRIOSUB | 0 },
- { "nomp", o_bool, &multilink,
- "Disable multilink operation", OPT_PRIOSUB | OPT_ALIAS | 0 },
-
- { "bundle", o_string, &bundle_name,
- "Bundle name for multilink", OPT_PRIO },
-#endif /* HAVE_MULTILINK */
-
-#ifdef PLUGIN
- { "plugin", o_special, (void *)loadplugin,
- "Load a plug-in module into pppd", OPT_PRIV | OPT_A2LIST },
-#endif
-
-#ifdef PPP_FILTER
- { "pdebug", o_int, &dflag,
- "libpcap debugging", OPT_PRIO },
-
- { "pass-filter", 1, setpassfilter,
- "set filter for packets to pass", OPT_PRIO },
-
- { "active-filter", 1, setactivefilter,
- "set filter for active pkts", OPT_PRIO },
-#endif
-
- { NULL }
-};
-
-#ifndef IMPLEMENTATION
-#define IMPLEMENTATION ""
-#endif
-
-static char *usage_string = "\
-pppd version %s\n\
-Usage: %s [ options ], where options are:\n\
- <device> Communicate over the named device\n\
- <speed> Set the baud rate to <speed>\n\
- <loc>:<rem> Set the local and/or remote interface IP\n\
- addresses. Either one may be omitted.\n\
- asyncmap <n> Set the desired async map to hex <n>\n\
- auth Require authentication from peer\n\
- connect <p> Invoke shell command <p> to set up the serial line\n\
- crtscts Use hardware RTS/CTS flow control\n\
- defaultroute Add default route through interface\n\
- file <f> Take options from file <f>\n\
- modem Use modem control lines\n\
- mru <n> Set MRU value to <n> for negotiation\n\
-See pppd(8) for more options.\n\
-";
-
-/*
- * parse_args - parse a string of arguments from the command line.
- */
-int
-parse_args(argc, argv)
- int argc;
- char **argv;
-{
- char *arg;
- option_t *opt;
- int n;
-
- privileged_option = privileged;
- option_source = "command line";
- option_priority = OPRIO_CMDLINE;
- while (argc > 0) {
- arg = *argv++;
- --argc;
- opt = find_option(arg);
- if (opt == NULL) {
- option_error("unrecognized option '%s'", arg);
- usage();
- return 0;
- }
- n = n_arguments(opt);
- if (argc < n) {
- option_error("too few parameters for option %s", arg);
- return 0;
- }
- if (!process_option(opt, arg, argv))
- return 0;
- argc -= n;
- argv += n;
- }
- return 1;
-}
-
-/*
- * options_from_file - Read a string of options from a file,
- * and interpret them.
- */
-int
-options_from_file(filename, must_exist, check_prot, priv)
- char *filename;
- int must_exist;
- int check_prot;
- int priv;
-{
- FILE *f;
- int i, newline, ret, err;
- option_t *opt;
- int oldpriv, n;
- char *oldsource;
- char *argv[MAXARGS];
- char args[MAXARGS][MAXWORDLEN];
- char cmd[MAXWORDLEN];
-
- if (check_prot)
- seteuid(getuid());
- f = fopen(filename, "r");
- err = errno;
- if (check_prot)
- seteuid(0);
- if (f == NULL) {
- errno = err;
- if (!must_exist) {
- if (err != ENOENT && err != ENOTDIR)
- warn("Warning: can't open options file %s: %m", filename);
- return 1;
- }
- option_error("Can't open options file %s: %m", filename);
- return 0;
- }
-
- oldpriv = privileged_option;
- privileged_option = priv;
- oldsource = option_source;
- option_source = strdup(filename);
- if (option_source == NULL)
- option_source = "file";
- ret = 0;
- while (getword(f, cmd, &newline, filename)) {
- opt = find_option(cmd);
- if (opt == NULL) {
- option_error("In file %s: unrecognized option '%s'",
- filename, cmd);
- goto err;
- }
- n = n_arguments(opt);
- for (i = 0; i < n; ++i) {
- if (!getword(f, args[i], &newline, filename)) {
- option_error(
- "In file %s: too few parameters for option '%s'",
- filename, cmd);
- goto err;
- }
- argv[i] = args[i];
- }
- if (!process_option(opt, cmd, argv))
- goto err;
- }
- ret = 1;
-
-err:
- fclose(f);
- privileged_option = oldpriv;
- option_source = oldsource;
- return ret;
-}
-
-/*
- * options_from_user - See if the use has a ~/.ppprc file,
- * and if so, interpret options from it.
- */
-int
-options_from_user()
-{
- char *user, *path, *file;
- int ret;
- struct passwd *pw;
- size_t pl;
-
- pw = getpwuid(getuid());
- if (pw == NULL || (user = pw->pw_dir) == NULL || user[0] == 0)
- return 1;
- file = _PATH_USEROPT;
- pl = strlen(user) + strlen(file) + 2;
- path = malloc(pl);
- if (path == NULL)
- novm("init file name");
- slprintf(path, pl, "%s/%s", user, file);
- option_priority = OPRIO_CFGFILE;
- ret = options_from_file(path, 0, 1, privileged);
- free(path);
- return ret;
-}
-
-/*
- * options_for_tty - See if an options file exists for the serial
- * device, and if so, interpret options from it.
- * We only allow the per-tty options file to override anything from
- * the command line if it is something that the user can't override
- * once it has been set by root; this is done by giving configuration
- * files a lower priority than the command line.
- */
-int
-options_for_tty()
-{
- char *dev, *path, *p;
- int ret;
- size_t pl;
-
- dev = devnam;
- if (strncmp(dev, "/dev/", 5) == 0)
- dev += 5;
- if (dev[0] == 0 || strcmp(dev, "tty") == 0)
- return 1; /* don't look for /etc/ppp/options.tty */
- pl = strlen(_PATH_TTYOPT) + strlen(dev) + 1;
- path = malloc(pl);
- if (path == NULL)
- novm("tty init file name");
- slprintf(path, pl, "%s%s", _PATH_TTYOPT, dev);
- /* Turn slashes into dots, for Solaris case (e.g. /dev/term/a) */
- for (p = path + strlen(_PATH_TTYOPT); *p != 0; ++p)
- if (*p == '/')
- *p = '.';
- option_priority = OPRIO_CFGFILE;
- ret = options_from_file(path, 0, 0, 1);
- free(path);
- return ret;
-}
-
-/*
- * options_from_list - process a string of options in a wordlist.
- */
-int
-options_from_list(w, priv)
- struct wordlist *w;
- int priv;
-{
- char *argv[MAXARGS];
- option_t *opt;
- int i, n, ret = 0;
- struct wordlist *w0;
-
- privileged_option = priv;
- option_source = "secrets file";
- option_priority = OPRIO_SECFILE;
-
- while (w != NULL) {
- opt = find_option(w->word);
- if (opt == NULL) {
- option_error("In secrets file: unrecognized option '%s'",
- w->word);
- goto err;
- }
- n = n_arguments(opt);
- w0 = w;
- for (i = 0; i < n; ++i) {
- w = w->next;
- if (w == NULL) {
- option_error(
- "In secrets file: too few parameters for option '%s'",
- w0->word);
- goto err;
- }
- argv[i] = w->word;
- }
- if (!process_option(opt, w0->word, argv))
- goto err;
- w = w->next;
- }
- ret = 1;
-
-err:
- return ret;
-}
-
-/*
- * match_option - see if this option matches an option_t structure.
- */
-static int
-match_option(name, opt, dowild)
- char *name;
- option_t *opt;
- int dowild;
-{
- int (*match) __P((char *, char **, int));
-
- if (dowild != (opt->type == o_wild))
- return 0;
- if (!dowild)
- return strcmp(name, opt->name) == 0;
- match = (int (*) __P((char *, char **, int))) opt->addr;
- return (*match)(name, NULL, 0);
-}
-
-/*
- * find_option - scan the option lists for the various protocols
- * looking for an entry with the given name.
- * This could be optimized by using a hash table.
- */
-static option_t *
-find_option(name)
- const char *name;
-{
- option_t *opt;
- struct option_list *list;
- int i, dowild;
-
- for (dowild = 0; dowild <= 1; ++dowild) {
- for (opt = general_options; opt->name != NULL; ++opt)
- if (match_option(name, opt, dowild))
- return opt;
- for (opt = auth_options; opt->name != NULL; ++opt)
- if (match_option(name, opt, dowild))
- return opt;
- for (list = extra_options; list != NULL; list = list->next)
- for (opt = list->options; opt->name != NULL; ++opt)
- if (match_option(name, opt, dowild))
- return opt;
- for (opt = the_channel->options; opt->name != NULL; ++opt)
- if (match_option(name, opt, dowild))
- return opt;
- for (i = 0; protocols[i] != NULL; ++i)
- if ((opt = protocols[i]->options) != NULL)
- for (; opt->name != NULL; ++opt)
- if (match_option(name, opt, dowild))
- return opt;
- }
- return NULL;
-}
-
-/*
- * process_option - process one new-style option.
- */
-static int
-process_option(opt, cmd, argv)
- option_t *opt;
- char *cmd;
- char **argv;
-{
- u_int32_t v;
- int iv, a;
- char *sv;
- int (*parser) __P((char **));
- int (*wildp) __P((char *, char **, int));
- char *optopt = (opt->type == o_wild)? "": " option";
- int prio = option_priority;
- option_t *mainopt = opt;
-
- if ((opt->flags & OPT_PRIVFIX) && privileged_option)
- prio += OPRIO_ROOT;
- while (mainopt->flags & OPT_PRIOSUB)
- --mainopt;
- if (mainopt->flags & OPT_PRIO) {
- if (prio < mainopt->priority) {
- /* new value doesn't override old */
- if (prio == OPRIO_CMDLINE && mainopt->priority > OPRIO_ROOT) {
- option_error("%s%s set in %s cannot be overridden\n",
- opt->name, optopt, mainopt->source);
- return 0;
- }
- return 1;
- }
- if (prio > OPRIO_ROOT && mainopt->priority == OPRIO_CMDLINE)
- warn("%s%s from %s overrides command line",
- opt->name, optopt, option_source);
- }
-
- if ((opt->flags & OPT_INITONLY) && phase != PHASE_INITIALIZE) {
- option_error("%s%s cannot be changed after initialization",
- opt->name, optopt);
- return 0;
- }
- if ((opt->flags & OPT_PRIV) && !privileged_option) {
- option_error("using the %s%s requires root privilege",
- opt->name, optopt);
- return 0;
- }
- if ((opt->flags & OPT_ENABLE) && *(bool *)(opt->addr2) == 0) {
- option_error("%s%s is disabled", opt->name, optopt);
- return 0;
- }
- if ((opt->flags & OPT_DEVEQUIV) && devnam_fixed) {
- option_error("the %s%s may not be changed in %s",
- opt->name, optopt, option_source);
- return 0;
- }
-
- switch (opt->type) {
- case o_bool:
- v = opt->flags & OPT_VALUE;
- *(bool *)(opt->addr) = v;
- if (opt->addr2 && (opt->flags & OPT_A2COPY))
- *(bool *)(opt->addr2) = v;
- break;
-
- case o_int:
- iv = 0;
- if ((opt->flags & OPT_NOARG) == 0) {
- if (!int_option(*argv, &iv))
- return 0;
- if ((((opt->flags & OPT_LLIMIT) && iv < opt->lower_limit)
- || ((opt->flags & OPT_ULIMIT) && iv > opt->upper_limit))
- && !((opt->flags & OPT_ZEROOK && iv == 0))) {
- char *zok = (opt->flags & OPT_ZEROOK)? " zero or": "";
- switch (opt->flags & OPT_LIMITS) {
- case OPT_LLIMIT:
- option_error("%s value must be%s >= %d",
- opt->name, zok, opt->lower_limit);
- break;
- case OPT_ULIMIT:
- option_error("%s value must be%s <= %d",
- opt->name, zok, opt->upper_limit);
- break;
- case OPT_LIMITS:
- option_error("%s value must be%s between %d and %d",
- opt->name, opt->lower_limit, opt->upper_limit);
- break;
- }
- return 0;
- }
- }
- a = opt->flags & OPT_VALUE;
- if (a >= 128)
- a -= 256; /* sign extend */
- iv += a;
- if (opt->flags & OPT_INC)
- iv += *(int *)(opt->addr);
- if ((opt->flags & OPT_NOINCR) && !privileged_option) {
- int oldv = *(int *)(opt->addr);
- if ((opt->flags & OPT_ZEROINF) ?
- (oldv != 0 && (iv == 0 || iv > oldv)) : (iv > oldv)) {
- option_error("%s value cannot be increased", opt->name);
- return 0;
- }
- }
- *(int *)(opt->addr) = iv;
- if (opt->addr2 && (opt->flags & OPT_A2COPY))
- *(int *)(opt->addr2) = iv;
- break;
-
- case o_uint32:
- if (opt->flags & OPT_NOARG) {
- v = opt->flags & OPT_VALUE;
- if (v & 0x80)
- v |= 0xffffff00U;
- } else if (!number_option(*argv, &v, 16))
- return 0;
- if (opt->flags & OPT_OR)
- v |= *(u_int32_t *)(opt->addr);
- *(u_int32_t *)(opt->addr) = v;
- if (opt->addr2 && (opt->flags & OPT_A2COPY))
- *(u_int32_t *)(opt->addr2) = v;
- break;
-
- case o_string:
- if (opt->flags & OPT_STATIC) {
- strlcpy((char *)(opt->addr), *argv, opt->upper_limit);
- } else {
- sv = strdup(*argv);
- if (sv == NULL)
- novm("option argument");
- *(char **)(opt->addr) = sv;
- }
- break;
-
- case o_special_noarg:
- case o_special:
- parser = (int (*) __P((char **))) opt->addr;
- if (!(*parser)(argv))
- return 0;
- if (opt->flags & OPT_A2LIST) {
- struct option_value *ovp, **pp;
-
- ovp = malloc(sizeof(*ovp) + strlen(*argv));
- if (ovp != 0) {
- strcpy(ovp->value, *argv);
- ovp->source = option_source;
- ovp->next = NULL;
- pp = (struct option_value **) &opt->addr2;
- while (*pp != 0)
- pp = &(*pp)->next;
- *pp = ovp;
- }
- }
- break;
-
- case o_wild:
- wildp = (int (*) __P((char *, char **, int))) opt->addr;
- if (!(*wildp)(cmd, argv, 1))
- return 0;
- break;
- }
-
- if (opt->addr2 && (opt->flags & (OPT_A2COPY|OPT_ENABLE
- |OPT_A2PRINTER|OPT_A2STRVAL|OPT_A2LIST)) == 0)
- *(bool *)(opt->addr2) = !(opt->flags & OPT_A2CLR);
-
- mainopt->source = option_source;
- mainopt->priority = prio;
- mainopt->winner = opt - mainopt;
-
- return 1;
-}
-
-/*
- * override_value - if the option priorities would permit us to
- * override the value of option, return 1 and update the priority
- * and source of the option value. Otherwise returns 0.
- */
-int
-override_value(option, priority, source)
- const char *option;
- int priority;
- const char *source;
-{
- option_t *opt;
-
- opt = find_option(option);
- if (opt == NULL)
- return 0;
- while (opt->flags & OPT_PRIOSUB)
- --opt;
- if ((opt->flags & OPT_PRIO) && priority < opt->priority)
- return 0;
- opt->priority = priority;
- opt->source = source;
- opt->winner = -1;
- return 1;
-}
-
-/*
- * n_arguments - tell how many arguments an option takes
- */
-static int
-n_arguments(opt)
- option_t *opt;
-{
- return (opt->type == o_bool || opt->type == o_special_noarg
- || (opt->flags & OPT_NOARG))? 0: 1;
-}
-
-/*
- * add_options - add a list of options to the set we grok.
- */
-void
-add_options(opt)
- option_t *opt;
-{
- struct option_list *list;
-
- list = malloc(sizeof(*list));
- if (list == 0)
- novm("option list entry");
- list->options = opt;
- list->next = extra_options;
- extra_options = list;
-}
-
-/*
- * check_options - check that options are valid and consistent.
- */
-void
-check_options()
-{
- if (logfile_fd >= 0 && logfile_fd != log_to_fd)
- close(logfile_fd);
-}
-
-/*
- * print_option - print out an option and its value
- */
-static void
-print_option(opt, mainopt, printer, arg)
- option_t *opt, *mainopt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int i, v;
- char *p;
-
- if (opt->flags & OPT_NOPRINT)
- return;
- switch (opt->type) {
- case o_bool:
- v = opt->flags & OPT_VALUE;
- if (*(bool *)opt->addr != v)
- /* this can happen legitimately, e.g. lock
- option turned off for default device */
- break;
- printer(arg, "%s", opt->name);
- break;
- case o_int:
- v = opt->flags & OPT_VALUE;
- if (v >= 128)
- v -= 256;
- i = *(int *)opt->addr;
- if (opt->flags & OPT_NOARG) {
- printer(arg, "%s", opt->name);
- if (i != v) {
- if (opt->flags & OPT_INC) {
- for (; i > v; i -= v)
- printer(arg, " %s", opt->name);
- } else
- printer(arg, " # oops: %d not %d\n",
- i, v);
- }
- } else {
- printer(arg, "%s %d", opt->name, i);
- }
- break;
- case o_uint32:
- printer(arg, "%s", opt->name);
- if ((opt->flags & OPT_NOARG) == 0)
- printer(arg, " %x", *(u_int32_t *)opt->addr);
- break;
-
- case o_string:
- if (opt->flags & OPT_HIDE) {
- p = "??????";
- } else {
- p = (char *) opt->addr;
- if ((opt->flags & OPT_STATIC) == 0)
- p = *(char **)p;
- }
- printer(arg, "%s %q", opt->name, p);
- break;
-
- case o_special:
- case o_special_noarg:
- case o_wild:
- if (opt->type != o_wild) {
- printer(arg, "%s", opt->name);
- if (n_arguments(opt) == 0)
- break;
- printer(arg, " ");
- }
- if (opt->flags & OPT_A2PRINTER) {
- void (*oprt) __P((option_t *,
- void ((*)__P((void *, char *, ...))),
- void *));
- oprt = opt->addr2;
- (*oprt)(opt, printer, arg);
- } else if (opt->flags & OPT_A2STRVAL) {
- p = (char *) opt->addr2;
- if ((opt->flags & OPT_STATIC) == 0)
- p = *(char **)p;
- printer("%q", p);
- } else if (opt->flags & OPT_A2LIST) {
- struct option_value *ovp;
-
- ovp = (struct option_value *) opt->addr2;
- for (;;) {
- printer(arg, "%q", ovp->value);
- if ((ovp = ovp->next) == NULL)
- break;
- printer(arg, "\t\t# (from %s)\n%s ",
- ovp->source, opt->name);
- }
- } else {
- printer(arg, "xxx # [don't know how to print value]");
- }
- break;
-
- default:
- printer(arg, "# %s value (type %d)", opt->name, opt->type);
- break;
- }
- printer(arg, "\t\t# (from %s)\n", mainopt->source);
-}
-
-/*
- * print_option_list - print out options in effect from an
- * array of options.
- */
-static void
-print_option_list(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- while (opt->name != NULL) {
- if (opt->priority != OPRIO_DEFAULT
- && opt->winner != (short int) -1)
- print_option(opt + opt->winner, opt, printer, arg);
- do {
- ++opt;
- } while (opt->flags & OPT_PRIOSUB);
- }
-}
-
-/*
- * print_options - print out what options are in effect.
- */
-void
-print_options(printer, arg)
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- struct option_list *list;
- int i;
-
- printer(arg, "pppd options in effect:\n");
- print_option_list(general_options, printer, arg);
- print_option_list(auth_options, printer, arg);
- for (list = extra_options; list != NULL; list = list->next)
- print_option_list(list->options, printer, arg);
- print_option_list(the_channel->options, printer, arg);
- for (i = 0; protocols[i] != NULL; ++i)
- print_option_list(protocols[i]->options, printer, arg);
-}
-
-/*
- * usage - print out a message telling how to use the program.
- */
-static void
-usage()
-{
- if (phase == PHASE_INITIALIZE)
- fprintf(stderr, usage_string, VERSION, progname);
-}
-
-/*
- * showhelp - print out usage message and exit.
- */
-static int
-showhelp(argv)
- char **argv;
-{
- if (phase == PHASE_INITIALIZE) {
- usage();
- exit(0);
- }
- return 0;
-}
-
-/*
- * showversion - print out the version number and exit.
- */
-static int
-showversion(argv)
- char **argv;
-{
- if (phase == PHASE_INITIALIZE) {
- fprintf(stderr, "pppd version %s\n", VERSION);
- exit(0);
- }
- return 0;
-}
-
-/*
- * option_error - print a message about an error in an option.
- * The message is logged, and also sent to
- * stderr if phase == PHASE_INITIALIZE.
- */
-void
-option_error __V((char *fmt, ...))
-{
- va_list args;
- char buf[1024];
-
-#if defined(__STDC__)
- va_start(args, fmt);
-#else
- char *fmt;
- va_start(args);
- fmt = va_arg(args, char *);
-#endif
- vslprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
- if (phase == PHASE_INITIALIZE)
- fprintf(stderr, "%s: %s\n", progname, buf);
- syslog(LOG_ERR, "%s", buf);
-}
-
-#if 0
-/*
- * readable - check if a file is readable by the real user.
- */
-int
-readable(fd)
- int fd;
-{
- uid_t uid;
- int i;
- struct stat sbuf;
-
- uid = getuid();
- if (uid == 0)
- return 1;
- if (fstat(fd, &sbuf) != 0)
- return 0;
- if (sbuf.st_uid == uid)
- return sbuf.st_mode & S_IRUSR;
- if (sbuf.st_gid == getgid())
- return sbuf.st_mode & S_IRGRP;
- for (i = 0; i < ngroups; ++i)
- if (sbuf.st_gid == groups[i])
- return sbuf.st_mode & S_IRGRP;
- return sbuf.st_mode & S_IROTH;
-}
-#endif
-
-/*
- * Read a word from a file.
- * Words are delimited by white-space or by quotes (" or ').
- * Quotes, white-space and \ may be escaped with \.
- * \<newline> is ignored.
- */
-int
-getword(f, word, newlinep, filename)
- FILE *f;
- char *word;
- int *newlinep;
- char *filename;
-{
- int c, len, escape;
- int quoted, comment;
- int value, digit, got, n;
-
-#define isoctal(c) ((c) >= '0' && (c) < '8')
-
- *newlinep = 0;
- len = 0;
- escape = 0;
- comment = 0;
-
- /*
- * First skip white-space and comments.
- */
- for (;;) {
- c = getc(f);
- if (c == EOF)
- break;
-
- /*
- * A newline means the end of a comment; backslash-newline
- * is ignored. Note that we cannot have escape && comment.
- */
- if (c == '\n') {
- if (!escape) {
- *newlinep = 1;
- comment = 0;
- } else
- escape = 0;
- continue;
- }
-
- /*
- * Ignore characters other than newline in a comment.
- */
- if (comment)
- continue;
-
- /*
- * If this character is escaped, we have a word start.
- */
- if (escape)
- break;
-
- /*
- * If this is the escape character, look at the next character.
- */
- if (c == '\\') {
- escape = 1;
- continue;
- }
-
- /*
- * If this is the start of a comment, ignore the rest of the line.
- */
- if (c == '#') {
- comment = 1;
- continue;
- }
-
- /*
- * A non-whitespace character is the start of a word.
- */
- if (!isspace(c))
- break;
- }
-
- /*
- * Save the delimiter for quoted strings.
- */
- if (!escape && (c == '"' || c == '\'')) {
- quoted = c;
- c = getc(f);
- } else
- quoted = 0;
-
- /*
- * Process characters until the end of the word.
- */
- while (c != EOF) {
- if (escape) {
- /*
- * This character is escaped: backslash-newline is ignored,
- * various other characters indicate particular values
- * as for C backslash-escapes.
- */
- escape = 0;
- if (c == '\n') {
- c = getc(f);
- continue;
- }
-
- got = 0;
- switch (c) {
- case 'a':
- value = '\a';
- break;
- case 'b':
- value = '\b';
- break;
- case 'f':
- value = '\f';
- break;
- case 'n':
- value = '\n';
- break;
- case 'r':
- value = '\r';
- break;
- case 's':
- value = ' ';
- break;
- case 't':
- value = '\t';
- break;
-
- default:
- if (isoctal(c)) {
- /*
- * \ddd octal sequence
- */
- value = 0;
- for (n = 0; n < 3 && isoctal(c); ++n) {
- value = (value << 3) + (c & 07);
- c = getc(f);
- }
- got = 1;
- break;
- }
-
- if (c == 'x') {
- /*
- * \x<hex_string> sequence
- */
- value = 0;
- c = getc(f);
- for (n = 0; n < 2 && isxdigit(c); ++n) {
- digit = toupper(c) - '0';
- if (digit > 10)
- digit += '0' + 10 - 'A';
- value = (value << 4) + digit;
- c = getc (f);
- }
- got = 1;
- break;
- }
-
- /*
- * Otherwise the character stands for itself.
- */
- value = c;
- break;
- }
-
- /*
- * Store the resulting character for the escape sequence.
- */
- if (len < MAXWORDLEN-1)
- word[len] = value;
- ++len;
-
- if (!got)
- c = getc(f);
- continue;
-
- }
-
- /*
- * Not escaped: see if we've reached the end of the word.
- */
- if (quoted) {
- if (c == quoted)
- break;
- } else {
- if (isspace(c) || c == '#') {
- ungetc (c, f);
- break;
- }
- }
-
- /*
- * Backslash starts an escape sequence.
- */
- if (c == '\\') {
- escape = 1;
- c = getc(f);
- continue;
- }
-
- /*
- * An ordinary character: store it in the word and get another.
- */
- if (len < MAXWORDLEN-1)
- word[len] = c;
- ++len;
-
- c = getc(f);
- }
-
- /*
- * End of the word: check for errors.
- */
- if (c == EOF) {
- if (ferror(f)) {
- if (errno == 0)
- errno = EIO;
- option_error("Error reading %s: %m", filename);
- die(1);
- }
- /*
- * If len is zero, then we didn't find a word before the
- * end of the file.
- */
- if (len == 0)
- return 0;
- }
-
- /*
- * Warn if the word was too long, and append a terminating null.
- */
- if (len >= MAXWORDLEN) {
- option_error("warning: word in file %s too long (%.20s...)",
- filename, word);
- len = MAXWORDLEN - 1;
- }
- word[len] = 0;
-
- return 1;
-
-#undef isoctal
-
-}
-
-/*
- * number_option - parse an unsigned numeric parameter for an option.
- */
-static int
-number_option(str, valp, base)
- char *str;
- u_int32_t *valp;
- int base;
-{
- char *ptr;
-
- *valp = strtoul(str, &ptr, base);
- if (ptr == str) {
- option_error("invalid numeric parameter '%s' for %s option",
- str, current_option);
- return 0;
- }
- return 1;
-}
-
-
-/*
- * int_option - like number_option, but valp is int *,
- * the base is assumed to be 0, and *valp is not changed
- * if there is an error.
- */
-int
-int_option(str, valp)
- char *str;
- int *valp;
-{
- u_int32_t v;
-
- if (!number_option(str, &v, 0))
- return 0;
- *valp = (int) v;
- return 1;
-}
-
-
-/*
- * The following procedures parse options.
- */
-
-/*
- * readfile - take commands from a file.
- */
-static int
-readfile(argv)
- char **argv;
-{
- return options_from_file(*argv, 1, 1, privileged_option);
-}
-
-/*
- * callfile - take commands from /etc/ppp/peers/<name>.
- * Name may not contain /../, start with / or ../, or end in /..
- */
-static int
-callfile(argv)
- char **argv;
-{
- char *fname, *arg, *p;
- int l, ok;
-
- arg = *argv;
- ok = 1;
- if (arg[0] == '/' || arg[0] == 0)
- ok = 0;
- else {
- for (p = arg; *p != 0; ) {
- if (p[0] == '.' && p[1] == '.' && (p[2] == '/' || p[2] == 0)) {
- ok = 0;
- break;
- }
- while (*p != '/' && *p != 0)
- ++p;
- if (*p == '/')
- ++p;
- }
- }
- if (!ok) {
- option_error("call option value may not contain .. or start with /");
- return 0;
- }
-
- l = strlen(arg) + strlen(_PATH_PEERFILES) + 1;
- if ((fname = (char *) malloc(l)) == NULL)
- novm("call file name");
- slprintf(fname, l, "%s%s", _PATH_PEERFILES, arg);
-
- ok = options_from_file(fname, 1, 1, 1);
-
- free(fname);
- return ok;
-}
-
-#ifdef PPP_FILTER
-/*
- * setpassfilter - Set the pass filter for packets
- */
-static int
-setpassfilter(argv)
- char **argv;
-{
- pc.linktype = DLT_PPP;
- pc.snapshot = PPP_HDRLEN;
-
- if (pcap_compile(&pc, &pass_filter, *argv, 1, netmask) == 0)
- return 1;
- option_error("error in pass-filter expression: %s\n", pcap_geterr(&pc));
- return 0;
-}
-
-/*
- * setactivefilter - Set the active filter for packets
- */
-static int
-setactivefilter(argv)
- char **argv;
-{
- pc.linktype = DLT_PPP;
- pc.snapshot = PPP_HDRLEN;
-
- if (pcap_compile(&pc, &active_filter, *argv, 1, netmask) == 0)
- return 1;
- option_error("error in active-filter expression: %s\n", pcap_geterr(&pc));
- return 0;
-}
-#endif
-
-/*
- * setdomain - Set domain name to append to hostname
- */
-static int
-setdomain(argv)
- char **argv;
-{
- gethostname(hostname, MAXNAMELEN);
- if (**argv != 0) {
- if (**argv != '.')
- strncat(hostname, ".", MAXNAMELEN - strlen(hostname));
- domain = hostname + strlen(hostname);
- strncat(hostname, *argv, MAXNAMELEN - strlen(hostname));
- }
- hostname[MAXNAMELEN-1] = 0;
- return (1);
-}
-
-
-static int
-setlogfile(argv)
- char **argv;
-{
- int fd, err;
-
- if (!privileged_option)
- seteuid(getuid());
- fd = open(*argv, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0644);
- if (fd < 0 && errno == EEXIST)
- fd = open(*argv, O_WRONLY | O_APPEND);
- err = errno;
- if (!privileged_option)
- seteuid(0);
- if (fd < 0) {
- errno = err;
- option_error("Can't open log file %s: %m", *argv);
- return 0;
- }
- strlcpy(logfile_name, *argv, sizeof(logfile_name));
- if (logfile_fd >= 0)
- close(logfile_fd);
- logfile_fd = fd;
- log_to_fd = fd;
- log_default = 0;
- return 1;
-}
-
-#ifdef PLUGIN
-static int
-loadplugin(argv)
- char **argv;
-{
- char *arg = *argv;
- void *handle;
- const char *err;
- void (*init) __P((void));
- char *path = arg;
- const char *vers;
-
- if (strchr(arg, '/') == 0) {
- const char *base = _PATH_PLUGIN;
- int l = strlen(base) + strlen(arg) + 2;
- path = malloc(l);
- if (path == 0)
- novm("plugin file path");
- strlcpy(path, base, l);
- strlcat(path, "/", l);
- strlcat(path, arg, l);
- }
- handle = dlopen(path, RTLD_GLOBAL | RTLD_NOW);
- if (handle == 0) {
- err = dlerror();
- if (err != 0)
- option_error("%s", err);
- option_error("Couldn't load plugin %s", arg);
- goto err;
- }
- init = (void (*)(void))dlsym(handle, "plugin_init");
- if (init == 0) {
- option_error("%s has no initialization entry point", arg);
- goto errclose;
- }
- vers = (const char *) dlsym(handle, "pppd_version");
- if (vers == 0) {
- warn("Warning: plugin %s has no version information", arg);
- } else if (strcmp(vers, VERSION) != 0) {
- option_error("Plugin %s is for pppd version %s, this is %s",
- vers, VERSION);
- goto errclose;
- }
- info("Plugin %s loaded.", arg);
- (*init)();
- return 1;
-
- errclose:
- dlclose(handle);
- err:
- if (path != arg)
- free(path);
- return 0;
-}
-#endif /* PLUGIN */
diff --git a/mdk-stage1/ppp/pppd/patchlevel.h b/mdk-stage1/ppp/pppd/patchlevel.h
deleted file mode 100644
index 2a2d816f1..000000000
--- a/mdk-stage1/ppp/pppd/patchlevel.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* $Id$ */
-
-#define VERSION "2.4.1"
-#define DATE "25 March 2001"
diff --git a/mdk-stage1/ppp/pppd/pathnames.h b/mdk-stage1/ppp/pppd/pathnames.h
deleted file mode 100644
index e80784567..000000000
--- a/mdk-stage1/ppp/pppd/pathnames.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * define path names
- *
- * $Id$
- */
-
-#define _PATH_VARRUN "/var/run/"
-#define _PATH_DEVNULL "/dev/null"
-#define _ROOT_PATH
-
-#define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets"
-#define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets"
-#define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options"
-#define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up"
-#define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down"
-#define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
-#define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
-#define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
-#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
-#define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
-#define _PATH_RESOLV _ROOT_PATH "/etc/resolv.conf"
-
-#define _PATH_USEROPT ".ppprc"
-
-#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN "pppd.tdb"
diff --git a/mdk-stage1/ppp/pppd/plugins/Makefile.linux b/mdk-stage1/ppp/pppd/plugins/Makefile.linux
deleted file mode 100644
index a64256461..000000000
--- a/mdk-stage1/ppp/pppd/plugins/Makefile.linux
+++ /dev/null
@@ -1,19 +0,0 @@
-CC = gcc
-CFLAGS = -g -O2 -I.. -I../../include -fPIC
-LDFLAGS = -shared
-INSTALL = install
-
-all: minconn.so passprompt.so
-
-minconn.so: minconn.c
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) minconn.c
-
-passprompt.so: passprompt.c
- $(CC) -o $@ $(LDFLAGS) $(CFLAGS) passprompt.c
-
-LIBDIR = /usr/lib/pppd
-
-install: minconn.so passprompt.so
- version=`awk -F '"' '/VERSION/ { print $$2; }' ../patchlevel.h`; \
- $(INSTALL) -d $(LIBDIR)/$$version; \
- $(INSTALL) $? $(LIBDIR)/$$version \ No newline at end of file
diff --git a/mdk-stage1/ppp/pppd/plugins/Makefile.sol2 b/mdk-stage1/ppp/pppd/plugins/Makefile.sol2
deleted file mode 100644
index 8f4398258..000000000
--- a/mdk-stage1/ppp/pppd/plugins/Makefile.sol2
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Makefile for plugins on Solaris 2
-#
-# $Id$
-#
-
-include ../../svr4/Makedefs
-
-CFLAGS = -c -O -I.. -I../../include $(COPTS)
-LDFLAGS = -G
-
-all: minconn.so
-
-minconn.so: minconn.o
- ld -o $@ $(LDFLAGS) -h $@ minconn.o
-
-minconn.o: minconn.c
- $(CC) $(CFLAGS) -c $?
-
-passprompt.so: passprompt.o
- ld -o $@ $(LDFLAGS) -h $@ passprompt.o
-
-passprompt.o: passprompt.c
- $(CC) $(CFLAGS) -c $?
-
-clean:
- rm -f *.o *.so
diff --git a/mdk-stage1/ppp/pppd/plugins/minconn.c b/mdk-stage1/ppp/pppd/plugins/minconn.c
deleted file mode 100644
index 02ea34bf6..000000000
--- a/mdk-stage1/ppp/pppd/plugins/minconn.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * minconn.c - pppd plugin to implement a `minconnect' option.
- *
- * Copyright 1999 Paul Mackerras.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms. The name of the author
- * may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-#include <stddef.h>
-#include <time.h>
-#include "pppd.h"
-
-char pppd_version[] = VERSION;
-
-static int minconnect = 0;
-
-static option_t my_options[] = {
- { "minconnect", o_int, &minconnect,
- "Set minimum connect time before idle timeout applies" },
- { NULL }
-};
-
-static int my_get_idle(struct ppp_idle *idle)
-{
- time_t t;
-
- if (idle == NULL)
- return minconnect? minconnect: idle_time_limit;
- t = idle->xmit_idle;
- if (idle->recv_idle < t)
- t = idle->recv_idle;
- return idle_time_limit - t;
-}
-
-void plugin_init(void)
-{
- info("plugin_init");
- add_options(my_options);
- idle_time_hook = my_get_idle;
-}
diff --git a/mdk-stage1/ppp/pppd/plugins/passprompt.c b/mdk-stage1/ppp/pppd/plugins/passprompt.c
deleted file mode 100644
index 5e6a7f90b..000000000
--- a/mdk-stage1/ppp/pppd/plugins/passprompt.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * passprompt.c - pppd plugin to invoke an external PAP password prompter
- *
- * Copyright 1999 Paul Mackerras, Alan Curry.
- *
- * 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.
- */
-#include <errno.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <syslog.h>
-#include "pppd.h"
-
-char pppd_version[] = VERSION;
-
-static char promptprog[PATH_MAX+1];
-
-static option_t options[] = {
- { "promptprog", o_string, promptprog,
- "External PAP password prompting program",
- OPT_STATIC, NULL, PATH_MAX },
- { NULL }
-};
-
-static int promptpass(char *user, char *passwd)
-{
- int p[2];
- pid_t kid;
- int readgood, wstat;
- size_t red;
-
- if (promptprog[0] == 0 || access(promptprog, X_OK) < 0)
- return -1; /* sorry, can't help */
-
- if (!passwd)
- return 1;
-
- if (pipe(p)) {
- warn("Can't make a pipe for %s", promptprog);
- return 0;
- }
- if ((kid = fork()) == (pid_t) -1) {
- warn("Can't fork to run %s", promptprog);
- close(p[0]);
- close(p[1]);
- return 0;
- }
- if (!kid) {
- /* we are the child, exec the program */
- char *argv[4], fdstr[32];
- sys_close();
- closelog();
- close(p[0]);
- seteuid(getuid());
- setegid(getgid());
- argv[0] = promptprog;
- argv[1] = user;
- argv[2] = remote_name;
- sprintf(fdstr, "%d", p[1]);
- argv[3] = fdstr;
- argv[4] = 0;
- execv(*argv, argv);
- _exit(127);
- }
-
- /* we are the parent, read the password from the pipe */
- close(p[1]);
- readgood = 0;
- do {
- red = read(p[0], passwd + readgood, MAXSECRETLEN-1 - readgood);
- if (red == 0)
- break;
- if (red < 0) {
- error("Can't read secret from %s: %m", promptprog);
- readgood = -1;
- break;
- }
- readgood += red;
- } while (readgood < MAXSECRETLEN - 1);
- passwd[readgood] = 0;
- close(p[0]);
-
- /* now wait for child to exit */
- while (waitpid(kid, &wstat, 0) < 0) {
- if (errno != EINTR) {
- warn("error waiting for %s: %m", promptprog);
- break;
- }
- }
-
- if (readgood < 0)
- return 0;
- if (!WIFEXITED(wstat))
- warn("%s terminated abnormally", promptprog);
- if (WEXITSTATUS(wstat))
- warn("%s exited with code %d", promptprog, WEXITSTATUS(status));
-
- return 1;
-}
-
-void plugin_init(void)
-{
- add_options(options);
- pap_passwd_hook = promptpass;
-}
diff --git a/mdk-stage1/ppp/pppd/ppp.pam b/mdk-stage1/ppp/pppd/ppp.pam
deleted file mode 100644
index 475a4bc88..000000000
--- a/mdk-stage1/ppp/pppd/ppp.pam
+++ /dev/null
@@ -1,6 +0,0 @@
-#%PAM-1.0
-# Information for the PPPD process with the 'login' option.
-auth required pam_nologin.so
-auth required pam_unix.so
-account required pam_unix.so
-session required pam_unix.so \ No newline at end of file
diff --git a/mdk-stage1/ppp/pppd/pppd.8 b/mdk-stage1/ppp/pppd/pppd.8
deleted file mode 100644
index ab091cd83..000000000
--- a/mdk-stage1/ppp/pppd/pppd.8
+++ /dev/null
@@ -1,1591 +0,0 @@
-.\" manual page [] for pppd 2.4
-.\" $Id$
-.\" SH section heading
-.\" SS subsection heading
-.\" LP paragraph
-.\" IP indented paragraph
-.\" TP hanging label
-.TH PPPD 8
-.SH NAME
-pppd \- Point to Point Protocol daemon
-.SH SYNOPSIS
-.B pppd
-[
-.I tty_name
-] [
-.I speed
-] [
-.I options
-]
-.SH DESCRIPTION
-.LP
-The Point-to-Point Protocol (PPP) provides a method for transmitting
-datagrams over serial point-to-point links. PPP
-is composed of three parts: a method for encapsulating datagrams over
-serial links, an extensible Link Control Protocol (LCP), and
-a family of Network Control Protocols (NCP) for establishing
-and configuring different network-layer protocols.
-.LP
-The encapsulation scheme is provided by driver code in the kernel.
-Pppd provides the basic LCP, authentication support, and an NCP for
-establishing and configuring the Internet Protocol (IP) (called the IP
-Control Protocol, IPCP).
-.SH FREQUENTLY USED OPTIONS
-.TP
-.I <tty_name>
-Communicate over the named device. The string "/dev/" is prepended if
-necessary. If no device name is given, or if the name of the terminal
-connected to the standard input is given, pppd will use that terminal,
-and will not fork to put itself in the background. A value for this
-option from a privileged source cannot be overridden by a
-non-privileged user.
-.TP
-.I <speed>
-Set the baud rate to <speed> (a decimal number). On systems such as
-4.4BSD and NetBSD, any speed can be specified. Other systems
-(e.g. SunOS) allow only a limited set of speeds.
-.TP
-.B asyncmap \fI<map>
-Set the async character map to <map>. This map describes which
-control characters cannot be successfully received over the serial
-line. Pppd will ask the peer to send these characters as a 2-byte
-escape sequence. The argument is a 32 bit hex number with each bit
-representing a character to escape. Bit 0 (00000001) represents the
-character 0x00; bit 31 (80000000) represents the character 0x1f or ^_.
-If multiple \fIasyncmap\fR options are given, the values are ORed
-together. If no \fIasyncmap\fR option is given, no async character
-map will be negotiated for the receive direction; the peer should then
-escape \fIall\fR control characters. To escape transmitted
-characters, use the \fIescape\fR option.
-.TP
-.B auth
-Require the peer to authenticate itself before allowing network
-packets to be sent or received. This option is the default if the
-system has a default route. If neither this option nor the
-\fInoauth\fR option is specified, pppd will only allow the peer to use
-IP addresses to which the system does not already have a route.
-.TP
-.B call \fIname
-Read options from the file /etc/ppp/peers/\fIname\fR. This file may
-contain privileged options, such as \fInoauth\fR, even if pppd
-is not being run by root. The \fIname\fR string may not begin with /
-or include .. as a pathname component. The format of the options file
-is described below.
-.TP
-.B connect \fIscript
-Use the executable or shell command specified by \fIscript\fR to set
-up the serial line. This script would typically use the chat(8)
-program to dial the modem and start the remote ppp session. A value
-for this option from a privileged source cannot be overridden by a
-non-privileged user.
-.TP
-.B crtscts
-Use hardware flow control (i.e. RTS/CTS) to control the flow of
-data on the serial port. If neither the \fIcrtscts\fR, the
-\fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR option
-is given, the hardware flow control setting for the serial port is
-left unchanged.
-Some serial ports (such as Macintosh serial ports) lack a true
-RTS output. Such serial ports use this mode to implement
-unidirectional flow control. The serial port will
-suspend transmission when requested by the modem (via CTS)
-but will be unable to request the modem stop sending to the
-computer. This mode retains the ability to use DTR as
-a modem control line.
-.TP
-.B defaultroute
-Add a default route to the system routing tables, using the peer as
-the gateway, when IPCP negotiation is successfully completed.
-This entry is removed when the PPP connection is broken. This option
-is privileged if the \fInodefaultroute\fR option has been specified.
-.TP
-.B disconnect \fIscript
-Run the executable or shell command specified by \fIscript\fR after
-pppd has terminated the link. This script could, for example, issue
-commands to the modem to cause it to hang up if hardware modem control
-signals were not available. The disconnect script is not run if the
-modem has already hung up. A value for this option from a privileged
-source cannot be overridden by a non-privileged user.
-.TP
-.B escape \fIxx,yy,...
-Specifies that certain characters should be escaped on transmission
-(regardless of whether the peer requests them to be escaped with its
-async control character map). The characters to be escaped are
-specified as a list of hex numbers separated by commas. Note that
-almost any character can be specified for the \fIescape\fR option,
-unlike the \fIasyncmap\fR option which only allows control characters
-to be specified. The characters which may not be escaped are those
-with hex values 0x20 - 0x3f or 0x5e.
-.TP
-.B file \fIname
-Read options from file \fIname\fR (the format is described below).
-The file must be readable by the user who has invoked pppd.
-.TP
-.B init \fIscript
-Run the executable or shell command specified by \fIscript\fR to
-initialize the serial line. This script would typically use the
-chat(8) program to configure the modem to enable auto answer. A value
-for this option from a privileged source cannot be overridden by a
-non-privileged user.
-.TP
-.B lock
-Specifies that pppd should create a UUCP-style lock file for the
-serial device to ensure exclusive access to the device.
-.TP
-.B mru \fIn
-Set the MRU [Maximum Receive Unit] value to \fIn\fR. Pppd
-will ask the peer to send packets of no more than \fIn\fR bytes. The
-minimum MRU value is 128. The default MRU value is 1500. A value of
-296 is recommended for slow links (40 bytes for TCP/IP header + 256
-bytes of data). (Note that for IPv6 MRU must be at least 1280)
-.TP
-.B mtu \fIn
-Set the MTU [Maximum Transmit Unit] value to \fIn\fR. Unless the
-peer requests a smaller value via MRU negotiation, pppd will
-request that the kernel networking code send data packets of no more
-than \fIn\fR bytes through the PPP network interface. (Note that for
-IPv6 MTU must be at least 1280)
-.TP
-.B passive
-Enables the "passive" option in the LCP. With this option, pppd will
-attempt to initiate a connection; if no reply is received from the
-peer, pppd will then just wait passively for a valid LCP packet from
-the peer, instead of exiting, as it would without this option.
-.SH OPTIONS
-.TP
-.I <local_IP_address>\fB:\fI<remote_IP_address>
-Set the local and/or remote interface IP addresses. Either one may be
-omitted. The IP addresses can be specified with a host name or in
-decimal dot notation (e.g. 150.234.56.78). The default local
-address is the (first) IP address of the system (unless the
-\fInoipdefault\fR
-option is given). The remote address will be obtained from the peer
-if not specified in any option. Thus, in simple cases, this option is
-not required. If a local and/or remote IP address is specified with
-this option, pppd
-will not accept a different value from the peer in the IPCP
-negotiation, unless the \fIipcp-accept-local\fR and/or
-\fIipcp-accept-remote\fR options are given, respectively.
-.TP
-.B ipv6 \fI<local_interface_identifier>\fR,\fI<remote_interface_identifier>
-Set the local and/or remote 64-bit interface identifier. Either one may be
-omitted. The identifier must be specified in standard ascii notation of
-IPv6 addresses (e.g. ::dead:beef). If the
-\fIipv6cp-use-ipaddr\fR
-option is given, the local identifier is the local IPv4 address (see above).
-On systems which supports a unique persistent id, such as EUI-48 derived
-from the Ethernet MAC address, \fIipv6cp-use-persistent\fR option can be
-used to replace the \fIipv6 <local>,<remote>\fR option. Otherwise the
-identifier is randomized.
-.TP
-.B active-filter \fIfilter-expression
-Specifies a packet filter to be applied to data packets to determine
-which packets are to be regarded as link activity, and therefore reset
-the idle timer, or cause the link to be brought up in demand-dialling
-mode. This option is useful in conjunction with the
-\fBidle\fR option if there are packets being sent or received
-regularly over the link (for example, routing information packets)
-which would otherwise prevent the link from ever appearing to be idle.
-The \fIfilter-expression\fR syntax is as described for tcpdump(1),
-except that qualifiers which are inappropriate for a PPP link, such as
-\fBether\fR and \fBarp\fR, are not permitted. Generally the filter
-expression should be enclosed in single-quotes to prevent whitespace
-in the expression from being interpreted by the shell. This option
-is currently only available under NetBSD, and then only
-if both the kernel and pppd were compiled with PPP_FILTER defined.
-.TP
-.B allow-ip \fIaddress(es)
-Allow peers to use the given IP address or subnet without
-authenticating themselves. The parameter is parsed as for each
-element of the list of allowed IP addresses in the secrets files (see
-the AUTHENTICATION section below).
-.TP
-.B bsdcomp \fInr,nt
-Request that the peer compress packets that it sends, using the
-BSD-Compress scheme, with a maximum code size of \fInr\fR bits, and
-agree to compress packets sent to the peer with a maximum code size of
-\fInt\fR bits. If \fInt\fR is not specified, it defaults to the value
-given for \fInr\fR. Values in the range 9 to 15 may be used for
-\fInr\fR and \fInt\fR; larger values give better compression but
-consume more kernel memory for compression dictionaries.
-Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
-compression in the corresponding direction. Use \fInobsdcomp\fR or
-\fIbsdcomp 0\fR to disable BSD-Compress compression entirely.
-.TP
-.B cdtrcts
-Use a non-standard hardware flow control (i.e. DTR/CTS) to control
-the flow of data on the serial port. If neither the \fIcrtscts\fR,
-the \fInocrtscts\fR, the \fIcdtrcts\fR nor the \fInocdtrcts\fR
-option is given, the hardware flow control setting for the serial
-port is left unchanged.
-Some serial ports (such as Macintosh serial ports) lack a true
-RTS output. Such serial ports use this mode to implement true
-bi-directional flow control. The sacrifice is that this flow
-control mode does not permit using DTR as a modem control line.
-.TP
-.B chap-interval \fIn
-If this option is given, pppd will rechallenge the peer every \fIn\fR
-seconds.
-.TP
-.B chap-max-challenge \fIn
-Set the maximum number of CHAP challenge transmissions to \fIn\fR
-(default 10).
-.TP
-.B chap-restart \fIn
-Set the CHAP restart interval (retransmission timeout for challenges)
-to \fIn\fR seconds (default 3).
-.TP
-.B connect-delay \fIn
-Wait for up \fIn\fR milliseconds after the connect script finishes for
-a valid PPP packet from the peer. At the end of this time, or when a
-valid PPP packet is received from the peer, pppd will commence
-negotiation by sending its first LCP packet. The default value is
-1000 (1 second). This wait period only applies if the \fBconnect\fR
-or \fBpty\fR option is used.
-.TP
-.B debug
-Enables connection debugging facilities.
-If this option is given, pppd will log the contents of all
-control packets sent or received in a readable form. The packets are
-logged through syslog with facility \fIdaemon\fR and level
-\fIdebug\fR. This information can be directed to a file by setting up
-/etc/syslog.conf appropriately (see syslog.conf(5)).
-.TP
-.B default-asyncmap
-Disable asyncmap negotiation, forcing all control characters to be
-escaped for both the transmit and the receive direction.
-.TP
-.B default-mru
-Disable MRU [Maximum Receive Unit] negotiation. With this option,
-pppd will use the default MRU value of 1500 bytes for both the
-transmit and receive direction.
-.TP
-.B deflate \fInr,nt
-Request that the peer compress packets that it sends, using the
-Deflate scheme, with a maximum window size of \fI2**nr\fR bytes, and
-agree to compress packets sent to the peer with a maximum window size
-of \fI2**nt\fR bytes. If \fInt\fR is not specified, it defaults to
-the value given for \fInr\fR. Values in the range 9 to 15 may be used
-for \fInr\fR and \fInt\fR; larger values give better compression but
-consume more kernel memory for compression dictionaries.
-Alternatively, a value of 0 for \fInr\fR or \fInt\fR disables
-compression in the corresponding direction. Use \fInodeflate\fR or
-\fIdeflate 0\fR to disable Deflate compression entirely. (Note: pppd
-requests Deflate compression in preference to BSD-Compress if the peer
-can do either.)
-.TP
-.B demand
-Initiate the link only on demand, i.e. when data traffic is present.
-With this option, the remote IP address must be specified by the user
-on the command line or in an options file. Pppd will initially
-configure the interface and enable it for IP traffic without
-connecting to the peer. When traffic is available, pppd will
-connect to the peer and perform negotiation, authentication, etc.
-When this is completed, pppd will commence passing data packets
-(i.e., IP packets) across the link.
-
-The \fIdemand\fR option implies the \fIpersist\fR option. If this
-behaviour is not desired, use the \fInopersist\fR option after the
-\fIdemand\fR option. The \fIidle\fR and \fIholdoff\fR
-options are also useful in conjuction with the \fIdemand\fR option.
-.TP
-.B domain \fId
-Append the domain name \fId\fR to the local host name for authentication
-purposes. For example, if gethostname() returns the name porsche, but
-the fully qualified domain name is porsche.Quotron.COM, you could
-specify \fIdomain Quotron.COM\fR. Pppd would then use the name
-\fIporsche.Quotron.COM\fR for looking up secrets in the secrets file,
-and as the default name to send to the peer when authenticating itself
-to the peer. This option is privileged.
-.TP
-.B dryrun
-With the \fBdryrun\fR option, pppd will print out all the option
-values which have been set and then exit, after parsing the command
-line and options files and checking the option values, but before
-initiating the link. The option values are logged at level info, and
-also printed to standard output unless the device on standard output
-is the device that pppd would be using to communicate with the peer.
-.TP
-.B dump
-With the \fBdump\fR option, pppd will print out all the option values
-which have been set. This option is like the \fBdryrun\fR option
-except that pppd proceeds as normal rather than exiting.
-.TP
-.B endpoint \fI<epdisc>
-Sets the endpoint discriminator sent by the local machine to the peer
-during multilink negotiation to \fI<epdisc>\fR. The default is to use
-the MAC address of the first ethernet interface on the system, if any,
-otherwise the IPv4 address corresponding to the hostname, if any,
-provided it is not in the multicast or locally-assigned IP address
-ranges, or the localhost address. The endpoint discriminator can be
-the string \fBnull\fR or of the form \fItype\fR:\fIvalue\fR, where
-type is a decimal number or one of the strings \fBlocal\fR, \fBIP\fR,
-\fBMAC\fR, \fBmagic\fR, or \fBphone\fR. The value is an IP address in
-dotted-decimal notation for the \fBIP\fR type, or a string of bytes in
-hexadecimal, separated by periods or colons for the other types. For
-the MAC type, the value may also be the name of an ethernet or similar
-network interface. This option is currently only available under
-Linux.
-.TP
-.B hide-password
-When logging the contents of PAP packets, this option causes pppd to
-exclude the password string from the log. This is the default.
-.TP
-.B holdoff \fIn
-Specifies how many seconds to wait before re-initiating the link after
-it terminates. This option only has any effect if the \fIpersist\fR
-or \fIdemand\fR option is used. The holdoff period is not applied if
-the link was terminated because it was idle.
-.TP
-.B idle \fIn
-Specifies that pppd should disconnect if the link is idle for \fIn\fR
-seconds. The link is idle when no data packets (i.e. IP packets) are
-being sent or received. Note: it is not advisable to use this option
-with the \fIpersist\fR option without the \fIdemand\fR option.
-If the \fBactive-filter\fR
-option is given, data packets which are rejected by the specified
-activity filter also count as the link being idle.
-.TP
-.B ipcp-accept-local
-With this option, pppd will accept the peer's idea of our local IP
-address, even if the local IP address was specified in an option.
-.TP
-.B ipcp-accept-remote
-With this option, pppd will accept the peer's idea of its (remote) IP
-address, even if the remote IP address was specified in an option.
-.TP
-.B ipcp-max-configure \fIn
-Set the maximum number of IPCP configure-request transmissions to
-\fIn\fR (default 10).
-.TP
-.B ipcp-max-failure \fIn
-Set the maximum number of IPCP configure-NAKs returned before starting
-to send configure-Rejects instead to \fIn\fR (default 10).
-.TP
-.B ipcp-max-terminate \fIn
-Set the maximum number of IPCP terminate-request transmissions to
-\fIn\fR (default 3).
-.TP
-.B ipcp-restart \fIn
-Set the IPCP restart interval (retransmission timeout) to \fIn\fR
-seconds (default 3).
-.TP
-.B ipparam \fIstring
-Provides an extra parameter to the ip-up and ip-down scripts. If this
-option is given, the \fIstring\fR supplied is given as the 6th
-parameter to those scripts.
-.TP
-.B ipv6cp-max-configure \fIn
-Set the maximum number of IPv6CP configure-request transmissions to
-\fIn\fR (default 10).
-.TP
-.B ipv6cp-max-failure \fIn
-Set the maximum number of IPv6CP configure-NAKs returned before starting
-to send configure-Rejects instead to \fIn\fR (default 10).
-.TP
-.B ipv6cp-max-terminate \fIn
-Set the maximum number of IPv6CP terminate-request transmissions to
-\fIn\fR (default 3).
-.TP
-.B ipv6cp-restart \fIn
-Set the IPv6CP restart interval (retransmission timeout) to \fIn\fR
-seconds (default 3).
-.TP
-.B ipx
-Enable the IPXCP and IPX protocols. This option is presently only
-supported under Linux, and only if your kernel has been configured to
-include IPX support.
-.TP
-.B ipx-network \fIn
-Set the IPX network number in the IPXCP configure request frame to
-\fIn\fR, a hexadecimal number (without a leading 0x). There is no
-valid default. If this option is not specified, the network number is
-obtained from the peer. If the peer does not have the network number,
-the IPX protocol will not be started.
-.TP
-.B ipx-node \fIn\fB:\fIm
-Set the IPX node numbers. The two node numbers are separated from each
-other with a colon character. The first number \fIn\fR is the local
-node number. The second number \fIm\fR is the peer's node number. Each
-node number is a hexadecimal number, at most 10 digits long. The node
-numbers on the ipx-network must be unique. There is no valid
-default. If this option is not specified then the node numbers are
-obtained from the peer.
-.TP
-.B ipx-router-name \fI<string>
-Set the name of the router. This is a string and is sent to the peer
-as information data.
-.TP
-.B ipx-routing \fIn
-Set the routing protocol to be received by this option. More than one
-instance of \fIipx-routing\fR may be specified. The '\fInone\fR'
-option (0) may be specified as the only instance of ipx-routing. The
-values may be \fI0\fR for \fINONE\fR, \fI2\fR for \fIRIP/SAP\fR, and
-\fI4\fR for \fINLSP\fR.
-.TP
-.B ipxcp-accept-local
-Accept the peer's NAK for the node number specified in the ipx-node
-option. If a node number was specified, and non-zero, the default is
-to insist that the value be used. If you include this option then you
-will permit the peer to override the entry of the node number.
-.TP
-.B ipxcp-accept-network
-Accept the peer's NAK for the network number specified in the
-ipx-network option. If a network number was specified, and non-zero, the
-default is to insist that the value be used. If you include this
-option then you will permit the peer to override the entry of the node
-number.
-.TP
-.B ipxcp-accept-remote
-Use the peer's network number specified in the configure request
-frame. If a node number was specified for the peer and this option was
-not specified, the peer will be forced to use the value which you have
-specified.
-.TP
-.B ipxcp-max-configure \fIn
-Set the maximum number of IPXCP configure request frames which the
-system will send to \fIn\fR. The default is 10.
-.TP
-.B ipxcp-max-failure \fIn
-Set the maximum number of IPXCP NAK frames which the local system will
-send before it rejects the options. The default value is 3.
-.TP
-.B ipxcp-max-terminate \fIn
-Set the maximum nuber of IPXCP terminate request frames before the
-local system considers that the peer is not listening to them. The
-default value is 3.
-.TP
-.B kdebug \fIn
-Enable debugging code in the kernel-level PPP driver. The argument
-values depend on the specific kernel driver, but in general a value of
-1 will enable general kernel debug messages. (Note that these
-messages are usually only useful for debugging the kernel driver
-itself.) For the Linux 2.2.x kernel driver, the value is a sum of
-bits: 1 to
-enable general debug messages, 2 to request that the contents of
-received packets be printed, and 4 to request that the contents of
-transmitted packets be printed. On most systems, messages printed by
-the kernel are logged by syslog(1) to a file as directed in the
-/etc/syslog.conf configuration file.
-.TP
-.B ktune
-Enables pppd to alter kernel settings as appropriate. Under Linux,
-pppd will enable IP forwarding (i.e. set /proc/sys/net/ipv4/ip_forward
-to 1) if the \fIproxyarp\fR option is used, and will enable the
-dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
-1) in demand mode if the local address changes.
-.TP
-.B lcp-echo-failure \fIn
-If this option is given, pppd will presume the peer to be dead
-if \fIn\fR LCP echo-requests are sent without receiving a valid LCP
-echo-reply. If this happens, pppd will terminate the
-connection. Use of this option requires a non-zero value for the
-\fIlcp-echo-interval\fR parameter. This option can be used to enable
-pppd to terminate after the physical connection has been broken
-(e.g., the modem has hung up) in situations where no hardware modem
-control lines are available.
-.TP
-.B lcp-echo-interval \fIn
-If this option is given, pppd will send an LCP echo-request frame to
-the peer every \fIn\fR seconds. Normally the peer should respond to
-the echo-request by sending an echo-reply. This option can be used
-with the \fIlcp-echo-failure\fR option to detect that the peer is no
-longer connected.
-.TP
-.B lcp-max-configure \fIn
-Set the maximum number of LCP configure-request transmissions to
-\fIn\fR (default 10).
-.TP
-.B lcp-max-failure \fIn
-Set the maximum number of LCP configure-NAKs returned before starting
-to send configure-Rejects instead to \fIn\fR (default 10).
-.TP
-.B lcp-max-terminate \fIn
-Set the maximum number of LCP terminate-request transmissions to
-\fIn\fR (default 3).
-.TP
-.B lcp-restart \fIn
-Set the LCP restart interval (retransmission timeout) to \fIn\fR
-seconds (default 3).
-.TP
-.B linkname \fIname\fR
-Sets the logical name of the link to \fIname\fR. Pppd will create a
-file named \fBppp-\fIname\fB.pid\fR in /var/run (or /etc/ppp on some
-systems) containing its process ID. This can be useful in determining
-which instance of pppd is responsible for the link to a given peer
-system. This is a privileged option.
-.TP
-.B local
-Don't use the modem control lines. With this option, pppd will ignore
-the state of the CD (Carrier Detect) signal from the modem and will
-not change the state of the DTR (Data Terminal Ready) signal.
-.TP
-.B logfd \fIn
-Send log messages to file descriptor \fIn\fR. Pppd will send log
-messages to at most one file or file descriptor (as well as sending
-the log messages to syslog), so this option and the \fBlogfile\fR
-option are mutually exclusive. The default is for pppd to send log
-messages to stdout (file descriptor 1), unless the serial port is
-already open on stdout.
-.TP
-.B logfile \fIfilename
-Append log messages to the file \fIfilename\fR (as well as sending the
-log messages to syslog). The file is opened with the privileges of
-the user who invoked pppd, in append mode.
-.TP
-.B login
-Use the system password database for authenticating the peer using
-PAP, and record the user in the system wtmp file. Note that the peer
-must have an entry in the /etc/ppp/pap-secrets file as well as the
-system password database to be allowed access.
-.TP
-.B maxconnect \fIn
-Terminate the connection when it has been available for network
-traffic for \fIn\fR seconds (i.e. \fIn\fR seconds after the first
-network control protocol comes up).
-.TP
-.B maxfail \fIn
-Terminate after \fIn\fR consecutive failed connection attempts. A
-value of 0 means no limit. The default value is 10.
-.TP
-.B modem
-Use the modem control lines. This option is the default. With this
-option, pppd will wait for the CD (Carrier Detect) signal from the
-modem to be asserted when opening the serial device (unless a connect
-script is specified), and it will drop the DTR (Data Terminal Ready)
-signal briefly when the connection is terminated and before executing
-the connect script. On Ultrix, this option implies hardware flow
-control, as for the \fIcrtscts\fR option.
-.TP
-.B mp
-Enables the use of PPP multilink; this is an alias for the `multilink'
-option. This option is currently only available under Linux.
-.TP
-.B mpshortseq
-Enables the use of short (12-bit) sequence numbers in multilink
-headers, as opposed to 24-bit sequence numbers. This option is only
-available under Linux, and only has any effect if multilink is
-enabled (see the multilink option).
-.TP
-.B mrru \fIn
-Sets the Maximum Reconstructed Receive Unit to \fIn\fR. The MRRU is
-the maximum size for a received packet on a multilink bundle, and is
-analogous to the MRU for the individual links. This option is
-currently only available under Linux, and only has any effect if
-multilink is enabled (see the multilink option).
-.TP
-.B ms-dns \fI<addr>
-If pppd is acting as a server for Microsoft Windows clients, this
-option allows pppd to supply one or two DNS (Domain Name Server)
-addresses to the clients. The first instance of this option specifies
-the primary DNS address; the second instance (if given) specifies the
-secondary DNS address. (This option was present in some older
-versions of pppd under the name \fBdns-addr\fR.)
-.TP
-.B ms-wins \fI<addr>
-If pppd is acting as a server for Microsoft Windows or "Samba"
-clients, this option allows pppd to supply one or two WINS (Windows
-Internet Name Services) server addresses to the clients. The first
-instance of this option specifies the primary WINS address; the second
-instance (if given) specifies the secondary WINS address.
-.TP
-.B multilink
-Enables the use of the PPP multilink protocol. If the peer also
-supports multilink, then this link can become part of a bundle between
-the local system and the peer. If there is an existing bundle to the
-peer, pppd will join this link to that bundle, otherwise pppd will
-create a new bundle. See the MULTILINK section below. This option is
-currently only available under Linux.
-.TP
-.B name \fIname
-Set the name of the local system for authentication purposes to
-\fIname\fR. This is a privileged option. With this option, pppd will
-use lines in the secrets files which have \fIname\fR as the second
-field when looking for a secret to use in authenticating the peer. In
-addition, unless overridden with the \fIuser\fR option, \fIname\fR
-will be used as the name to send to the peer when authenticating the
-local system to the peer. (Note that pppd does not append the domain
-name to \fIname\fR.)
-.TP
-.B netmask \fIn
-Set the interface netmask to \fIn\fR, a 32 bit netmask in "decimal dot"
-notation (e.g. 255.255.255.0). If this option is given, the value
-specified is ORed with the default netmask. The default netmask is
-chosen based on the negotiated remote IP address; it is the
-appropriate network mask for the class of the remote IP address, ORed
-with the netmasks for any non point-to-point network interfaces in the
-system which are on the same network. (Note: on some platforms, pppd
-will always use 255.255.255.255 for the netmask, if that is the only
-appropriate value for a point-to-point interface.)
-.TP
-.B noaccomp
-Disable Address/Control compression in both directions (send and
-receive).
-.TP
-.B noauth
-Do not require the peer to authenticate itself. This option is
-privileged.
-.TP
-.B nobsdcomp
-Disables BSD-Compress compression; \fBpppd\fR will not request or
-agree to compress packets using the BSD-Compress scheme.
-.TP
-.B noccp
-Disable CCP (Compression Control Protocol) negotiation. This option
-should only be required if the peer is buggy and gets confused by
-requests from pppd for CCP negotiation.
-.TP
-.B nocrtscts
-Disable hardware flow control (i.e. RTS/CTS) on the serial port.
-If neither the \fIcrtscts\fR nor the \fInocrtscts\fR nor the
-\fIcdtrcts\fR nor the \fInocdtrcts\fR option is given, the hardware
-flow control setting for the serial port is left unchanged.
-.TP
-.B nocdtrcts
-This option is a synonym for \fInocrtscts\fR. Either of these options will
-disable both forms of hardware flow control.
-.TP
-.B nodefaultroute
-Disable the \fIdefaultroute\fR option. The system administrator who
-wishes to prevent users from creating default routes with pppd
-can do so by placing this option in the /etc/ppp/options file.
-.TP
-.B nodeflate
-Disables Deflate compression; pppd will not request or agree to
-compress packets using the Deflate scheme.
-.TP
-.B nodetach
-Don't detach from the controlling terminal. Without this option, if a
-serial device other than the terminal on the standard input is
-specified, pppd will fork to become a background process.
-.TP
-.B noendpoint
-Disables pppd from sending an endpoint discriminator to the peer or
-accepting one from the peer (see the MULTILINK section below). This
-option should only be required if the peer is buggy.
-.TP
-.B noip
-Disable IPCP negotiation and IP communication. This option should
-only be required if the peer is buggy and gets confused by requests
-from pppd for IPCP negotiation.
-.TP
-.B noipv6
-Disable IPv6CP negotiation and IPv6 communication. This option should
-only be required if the peer is buggy and gets confused by requests
-from pppd for IPv6CP negotiation.
-.TP
-.B noipdefault
-Disables the default behaviour when no local IP address is specified,
-which is to determine (if possible) the local IP address from the
-hostname. With this option, the peer will have to supply the local IP
-address during IPCP negotiation (unless it specified explicitly on the
-command line or in an options file).
-.TP
-.B noipx
-Disable the IPXCP and IPX protocols. This option should only be
-required if the peer is buggy and gets confused by requests from pppd
-for IPXCP negotiation.
-.TP
-.B noktune
-Opposite of the \fIktune\fR option; disables pppd from changing system
-settings.
-.TP
-.B nolog
-Do not send log messages to a file or file descriptor. This option
-cancels the \fBlogfd\fR and \fBlogfile\fR options.
-.TP
-.B nomagic
-Disable magic number negotiation. With this option, pppd cannot
-detect a looped-back line. This option should only be needed if the
-peer is buggy.
-.TP
-.B nomp
-Disables the use of PPP multilink. This option is currently only
-available under Linux.
-.TP
-.B nompshortseq
-Disables the use of short (12-bit) sequence numbers in the PPP
-multilink protocol, forcing the use of 24-bit sequence numbers. This
-option is currently only available under Linux, and only has any
-effect if multilink is enabled.
-.TP
-.B nomultilink
-Disables the use of PPP multilink. This option is currently only
-available under Linux.
-.TP
-.B nopcomp
-Disable protocol field compression negotiation in both the receive and
-the transmit direction.
-.TP
-.B nopersist
-Exit once a connection has been made and terminated. This is the
-default unless the \fIpersist\fR or \fIdemand\fR option has been
-specified.
-.TP
-.B nopredictor1
-Do not accept or agree to Predictor-1 compression.
-.TP
-.B noproxyarp
-Disable the \fIproxyarp\fR option. The system administrator who
-wishes to prevent users from creating proxy ARP entries with pppd can
-do so by placing this option in the /etc/ppp/options file.
-.TP
-.B notty
-Normally, pppd requires a terminal device. With this option, pppd
-will allocate itself a pseudo-tty master/slave pair and use the slave
-as its terminal device. Pppd will create a child process to act as a
-`character shunt' to transfer characters between the pseudo-tty master
-and its standard input and output. Thus pppd will transmit characters
-on its standard output and receive characters on its standard input
-even if they are not terminal devices. This option increases the
-latency and CPU overhead of transferring data over the ppp interface
-as all of the characters sent and received must flow through the
-character shunt process. An explicit device name may not be given if
-this option is used.
-.TP
-.B novj
-Disable Van Jacobson style TCP/IP header compression in both the
-transmit and the receive direction.
-.TP
-.B novjccomp
-Disable the connection-ID compression option in Van Jacobson style
-TCP/IP header compression. With this option, pppd will not omit the
-connection-ID byte from Van Jacobson compressed TCP/IP headers, nor
-ask the peer to do so.
-.TP
-.B papcrypt
-Indicates that all secrets in the /etc/ppp/pap-secrets file which are
-used for checking the identity of the peer are encrypted, and thus
-pppd should not accept a password which, before encryption, is
-identical to the secret from the /etc/ppp/pap-secrets file.
-.TP
-.B pap-max-authreq \fIn
-Set the maximum number of PAP authenticate-request transmissions to
-\fIn\fR (default 10).
-.TP
-.B pap-restart \fIn
-Set the PAP restart interval (retransmission timeout) to \fIn\fR
-seconds (default 3).
-.TP
-.B pap-timeout \fIn
-Set the maximum time that pppd will wait for the peer to authenticate
-itself with PAP to \fIn\fR seconds (0 means no limit).
-.TP
-.B pass-filter \fIfilter-expression
-Specifies a packet filter to applied to data packets being sent or
-received to determine which packets should be allowed to pass.
-Packets which are rejected by the filter are silently discarded. This
-option can be used to prevent specific network daemons (such as
-routed) using up link bandwidth, or to provide a basic firewall
-capability.
-The \fIfilter-expression\fR syntax is as described for tcpdump(1),
-except that qualifiers which are inappropriate for a PPP link, such as
-\fBether\fR and \fBarp\fR, are not permitted. Generally the filter
-expression should be enclosed in single-quotes to prevent whitespace
-in the expression from being interpreted by the shell. Note that it
-is possible to apply different constraints to incoming and outgoing
-packets using the \fBinbound\fR and \fBoutbound\fR qualifiers. This
-option is currently only available under NetBSD, and then only if both
-the kernel and pppd were compiled with PPP_FILTER defined.
-.TP
-.B persist
-Do not exit after a connection is terminated; instead try to reopen
-the connection.
-.TP
-.B plugin \fIfilename
-Load the shared library object file \fIfilename\fR as a plugin. This
-is a privileged option.
-.TP
-.B predictor1
-Request that the peer compress frames that it sends using Predictor-1
-compression, and agree to compress transmitted frames with Predictor-1
-if requested. This option has no effect unless the kernel driver
-supports Predictor-1 compression.
-.TP
-.B privgroup \fIgroup-name
-Allows members of group \fIgroup-name\fR to use privileged options.
-This is a privileged option. Use of this option requires care as
-there is no guarantee that members of \fIgroup-name\fR cannot use pppd
-to become root themselves. Consider it equivalent to putting the
-members of \fIgroup-name\fR in the kmem or disk group.
-.TP
-.B proxyarp
-Add an entry to this system's ARP [Address Resolution Protocol] table
-with the IP address of the peer and the Ethernet address of this
-system. This will have the effect of making the peer appear to other
-systems to be on the local ethernet.
-.TP
-.B pty \fIscript
-Specifies that the command \fIscript\fR is to be used to communicate
-rather than a specific terminal device. Pppd will allocate itself a
-pseudo-tty master/slave pair and use the slave as its terminal
-device. The \fIscript\fR will be run in a child process with the
-pseudo-tty master as its standard input and output. An explicit
-device name may not be given if this option is used. (Note: if the
-\fIrecord\fR option is used in conjuction with the \fIpty\fR option,
-the child process will have pipes on its standard input and output.)
-.TP
-.B receive-all
-With this option, pppd will accept all control characters from the
-peer, including those marked in the receive asyncmap. Without this
-option, pppd will discard those characters as specified in RFC1662.
-This option should only be needed if the peer is buggy.
-.TP
-.B record \fIfilename
-Specifies that pppd should record all characters sent and received to
-a file named \fIfilename\fR. This file is opened in append mode,
-using the user's user-ID and permissions. This option is implemented
-using a pseudo-tty and a process to transfer characters between the
-pseudo-tty and the real serial device, so it will increase the latency
-and CPU overhead of transferring data over the ppp interface. The
-characters are stored in a tagged format with timestamps, which can be
-displayed in readable form using the pppdump(8) program.
-.TP
-.B remotename \fIname
-Set the assumed name of the remote system for authentication purposes
-to \fIname\fR.
-.TP
-.B refuse-chap
-With this option, pppd will not agree to authenticate itself to the
-peer using CHAP.
-.TP
-.B refuse-pap
-With this option, pppd will not agree to authenticate itself to the
-peer using PAP.
-.TP
-.B require-chap
-Require the peer to authenticate itself using CHAP [Challenge
-Handshake Authentication Protocol] authentication.
-.TP
-.B require-pap
-Require the peer to authenticate itself using PAP [Password
-Authentication Protocol] authentication.
-.TP
-.B show-password
-When logging the contents of PAP packets, this option causes pppd to
-show the password string in the log message.
-.TP
-.B silent
-With this option, pppd will not transmit LCP packets to initiate a
-connection until a valid LCP packet is received from the peer (as for
-the `passive' option with ancient versions of pppd).
-.TP
-.B sync
-Use synchronous HDLC serial encoding instead of asynchronous.
-The device used by pppd with this option must have sync support.
-Currently supports Microgate SyncLink adapters
-under Linux and FreeBSD 2.2.8 and later.
-.TP
-.B updetach
-With this option, pppd will detach from its controlling terminal once
-it has successfully established the ppp connection (to the point where
-the first network control protocol, usually the IP control protocol,
-has come up).
-.TP
-.B usehostname
-Enforce the use of the hostname (with domain name appended, if given)
-as the name of the local system for authentication purposes (overrides
-the \fIname\fR option). This option is not normally needed since the
-\fIname\fR option is privileged.
-.TP
-.B usepeerdns
-Ask the peer for up to 2 DNS server addresses. The addresses supplied
-by the peer (if any) are passed to the /etc/ppp/ip-up script in the
-environment variables DNS1 and DNS2. In addition, pppd will create an
-/etc/ppp/resolv.conf file containing one or two nameserver lines with
-the address(es) supplied by the peer.
-.TP
-.B user \fIname
-Sets the name used for authenticating the local system to the peer to
-\fIname\fR.
-.TP
-.B vj-max-slots \fIn
-Sets the number of connection slots to be used by the Van Jacobson
-TCP/IP header compression and decompression code to \fIn\fR, which
-must be between 2 and 16 (inclusive).
-.TP
-.B welcome \fIscript
-Run the executable or shell command specified by \fIscript\fR before
-initiating PPP negotiation, after the connect script (if any) has
-completed. A value for this option from a privileged source cannot be
-overridden by a non-privileged user.
-.TP
-.B xonxoff
-Use software flow control (i.e. XON/XOFF) to control the flow of data on
-the serial port.
-.SH OPTIONS FILES
-Options can be taken from files as well as the command line. Pppd
-reads options from the files /etc/ppp/options, ~/.ppprc and
-/etc/ppp/options.\fIttyname\fR (in that order) before processing the
-options on the command line. (In fact, the command-line options are
-scanned to find the terminal name before the options.\fIttyname\fR
-file is read.) In forming the name of the options.\fIttyname\fR file,
-the initial /dev/ is removed from the terminal name, and any remaining
-/ characters are replaced with dots.
-.PP
-An options file is parsed into a series of words, delimited by
-whitespace. Whitespace can be included in a word by enclosing the
-word in double-quotes ("). A backslash (\\) quotes the following character.
-A hash (#) starts a comment, which continues until the end of the
-line. There is no restriction on using the \fIfile\fR or \fIcall\fR
-options within an options file.
-.SH SECURITY
-.I pppd
-provides system administrators with sufficient access control that PPP
-access to a server machine can be provided to legitimate users without
-fear of compromising the security of the server or the network it's
-on. This control is provided through restrictions on which IP
-addresses the peer may use, based on its authenticated identity (if
-any), and through restrictions on which options a non-privileged user
-may use. Several of pppd's options are privileged, in particular
-those which permit potentially insecure configurations; these options
-are only accepted in files which are under the control of the system
-administrator, or if pppd is being run by root.
-.PP
-The default behaviour of pppd is to allow an unauthenticated peer to
-use a given IP address only if the system does not already have a
-route to that IP address. For example, a system with a
-permanent connection to the wider internet will normally have a
-default route, and thus all peers will have to authenticate themselves
-in order to set up a connection. On such a system, the \fIauth\fR
-option is the default. On the other hand, a system where the
-PPP link is the only connection to the internet will not normally have
-a default route, so the peer will be able to use almost any IP address
-without authenticating itself.
-.PP
-As indicated above, some security-sensitive options are privileged,
-which means that they may not be used by an ordinary non-privileged
-user running a setuid-root pppd, either on the command line, in the
-user's ~/.ppprc file, or in an options file read using the \fIfile\fR
-option. Privileged options may be used in /etc/ppp/options file or in
-an options file read using the \fIcall\fR option. If pppd is being
-run by the root user, privileged options can be used without
-restriction.
-.PP
-When opening the device, pppd uses either the invoking user's user ID
-or the root UID (that is, 0), depending on whether the device name was
-specified by the user or the system administrator. If the device name
-comes from a privileged source, that is, /etc/ppp/options or an
-options file read using the \fIcall\fR option, pppd uses full root
-privileges when opening the device. Thus, by creating an appropriate
-file under /etc/ppp/peers, the system administrator can allow users to
-establish a ppp connection via a device which they would not normally
-have permission to access. Otherwise pppd uses the invoking user's
-real UID when opening the device.
-.SH AUTHENTICATION
-Authentication is the process whereby one peer convinces the other of
-its identity. This involves the first peer sending its name to the
-other, together with some kind of secret information which could only
-come from the genuine authorized user of that name. In such an
-exchange, we will call the first peer the "client" and the other the
-"server". The client has a name by which it identifies itself to the
-server, and the server also has a name by which it identifies itself
-to the client. Generally the genuine client shares some secret (or
-password) with the server, and authenticates itself by proving that it
-knows that secret. Very often, the names used for authentication
-correspond to the internet hostnames of the peers, but this is not
-essential.
-.LP
-At present, pppd supports two authentication protocols: the Password
-Authentication Protocol (PAP) and the Challenge Handshake
-Authentication Protocol (CHAP). PAP involves the client sending its
-name and a cleartext password to the server to authenticate itself.
-In contrast, the server initiates the CHAP authentication exchange by
-sending a challenge to the client (the challenge packet includes the
-server's name). The client must respond with a response which
-includes its name plus a hash value derived from the shared secret and
-the challenge, in order to prove that it knows the secret.
-.LP
-The PPP protocol, being symmetrical, allows both peers to require the
-other to authenticate itself. In that case, two separate and
-independent authentication exchanges will occur. The two exchanges
-could use different authentication protocols, and in principle,
-different names could be used in the two exchanges.
-.LP
-The default behaviour of pppd is to agree to authenticate if
-requested, and to not require authentication from the peer. However,
-pppd will not agree to authenticate itself with a particular protocol
-if it has no secrets which could be used to do so.
-.LP
-Pppd stores secrets for use in authentication in secrets
-files (/etc/ppp/pap-secrets for PAP, /etc/ppp/chap-secrets for CHAP).
-Both secrets files have the same format. The secrets files can
-contain secrets for pppd to use in authenticating itself to other
-systems, as well as secrets for pppd to use when authenticating other
-systems to itself.
-.LP
-Each line in a secrets file contains one secret. A given secret is
-specific to a particular combination of client and server - it can
-only be used by that client to authenticate itself to that server.
-Thus each line in a secrets file has at least 3 fields: the name of
-the client, the name of the server, and the secret. These fields may
-be followed by a list of the IP addresses that the specified client
-may use when connecting to the specified server.
-.LP
-A secrets file is parsed into words as for a options file, so the
-client name, server name and secrets fields must each be one word,
-with any embedded spaces or other special characters quoted or
-escaped. Note that case is significant in the client and server names
-and in the secret.
-.LP
-If the secret starts with an `@', what follows is assumed to be the
-name of a file from which to read the secret. A "*" as the client or
-server name matches any name. When selecting a secret, pppd takes the
-best match, i.e. the match with the fewest wildcards.
-.LP
-Any following words on the same line are taken to be a list of
-acceptable IP addresses for that client. If there are only 3 words on
-the line, or if the first word is "-", then all IP addresses are
-disallowed. To allow any address, use "*". A word starting with "!"
-indicates that the specified address is \fInot\fR acceptable. An
-address may be followed by "/" and a number \fIn\fR, to indicate a
-whole subnet, i.e. all addresses which have the same value in the most
-significant \fIn\fR bits. In this form, the address may be followed
-by a plus sign ("+") to indicate that one address from the subnet is
-authorized, based on the ppp network interface unit number in use.
-In this case, the host part of the address will be set to the unit
-number plus one.
-.LP
-Thus a secrets file contains both secrets for use in authenticating
-other hosts, plus secrets which we use for authenticating ourselves to
-others. When pppd is authenticating the peer (checking the peer's
-identity), it chooses a secret with the peer's name in the first
-field and the name of the local system in the second field. The
-name of the local system defaults to the hostname, with the domain
-name appended if the \fIdomain\fR option is used. This default can be
-overridden with the \fIname\fR option, except when the
-\fIusehostname\fR option is used.
-.LP
-When pppd is choosing a secret to use in authenticating itself to the
-peer, it first determines what name it is going to use to identify
-itself to the peer. This name can be specified by the user with the
-\fIuser\fR option. If this option is not used, the name defaults to
-the name of the local system, determined as described in the previous
-paragraph. Then pppd looks for a secret with this name in the first
-field and the peer's name in the second field. Pppd will know the
-name of the peer if CHAP authentication is being used, because the
-peer will have sent it in the challenge packet. However, if PAP is being
-used, pppd will have to determine the peer's name from the options
-specified by the user. The user can specify the peer's name directly
-with the \fIremotename\fR option. Otherwise, if the remote IP address
-was specified by a name (rather than in numeric form), that name will
-be used as the peer's name. Failing that, pppd will use the null
-string as the peer's name.
-.LP
-When authenticating the peer with PAP, the supplied password is first
-compared with the secret from the secrets file. If the password
-doesn't match the secret, the password is encrypted using crypt() and
-checked against the secret again. Thus secrets for authenticating the
-peer can be stored in encrypted form if desired. If the
-\fIpapcrypt\fR option is given, the first (unencrypted) comparison is
-omitted, for better security.
-.LP
-Furthermore, if the \fIlogin\fR option was specified, the username and
-password are also checked against the system password database. Thus,
-the system administrator can set up the pap-secrets file to allow PPP
-access only to certain users, and to restrict the set of IP addresses
-that each user can use. Typically, when using the \fIlogin\fR option,
-the secret in /etc/ppp/pap-secrets would be "", which will match any
-password supplied by the peer. This avoids the need to have the same
-secret in two places.
-.LP
-Authentication must be satisfactorily completed before IPCP (or any
-other Network Control Protocol) can be started. If the peer is
-required to authenticate itself, and fails to do so, pppd will
-terminated the link (by closing LCP). If IPCP negotiates an
-unacceptable IP address for the remote host, IPCP will be closed. IP
-packets can only be sent or received when IPCP is open.
-.LP
-In some cases it is desirable to allow some hosts which can't
-authenticate themselves to connect and use one of a restricted set of
-IP addresses, even when the local host generally requires
-authentication. If the peer refuses to authenticate itself when
-requested, pppd takes that as equivalent to authenticating with PAP
-using the empty string for the username and password. Thus, by adding
-a line to the pap-secrets file which specifies the empty string for
-the client and password, it is possible to allow restricted access to
-hosts which refuse to authenticate themselves.
-.SH ROUTING
-.LP
-When IPCP negotiation is completed successfully, pppd will inform the
-kernel of the local and remote IP addresses for the ppp interface.
-This is sufficient to create a host route to the remote end of the
-link, which will enable the peers to exchange IP packets.
-Communication with other machines generally requires further
-modification to routing tables and/or ARP (Address Resolution
-Protocol) tables. In most cases the \fIdefaultroute\fR and/or
-\fIproxyarp\fR options are sufficient for this, but in some cases
-further intervention is required. The /etc/ppp/ip-up script can be
-used for this.
-.LP
-Sometimes it is desirable to add a default route through the remote
-host, as in the case of a machine whose only connection to the
-Internet is through the ppp interface. The \fIdefaultroute\fR option
-causes pppd to create such a default route when IPCP comes up, and
-delete it when the link is terminated.
-.LP
-In some cases it is desirable to use proxy ARP, for example on a
-server machine connected to a LAN, in order to allow other hosts to
-communicate with the remote host. The \fIproxyarp\fR option causes
-pppd to look for a network interface on the same subnet as the remote
-host (an interface supporting broadcast and ARP, which is up and not a
-point-to-point or loopback interface). If found, pppd creates a
-permanent, published ARP entry with the IP address of the remote host
-and the hardware address of the network interface found.
-.LP
-When the \fIdemand\fR option is used, the interface IP addresses have
-already been set at the point when IPCP comes up. If pppd has not
-been able to negotiate the same addresses that it used to configure
-the interface (for example when the peer is an ISP that uses dynamic
-IP address assignment), pppd has to change the interface IP addresses
-to the negotiated addresses. This may disrupt existing connections,
-and the use of demand dialling with peers that do dynamic IP address
-assignment is not recommended.
-.SH MULTILINK
-Multilink PPP provides the capability to combine two or more PPP links
-between a pair of machines into a single `bundle', which appears as a
-single virtual PPP link which has the combined bandwidth of the
-individual links. Currently, multilink PPP is only supported under
-Linux.
-.LP
-Pppd detects that the link it is controlling is connected to the same
-peer as another link using the peer's endpoint discriminator and the
-authenticated identity of the peer (if it authenticates itself). The
-endpoint discriminator is a block of data which is hopefully unique
-for each peer. Several types of data can be used, including
-locally-assigned strings of bytes, IP addresses, MAC addresses,
-randomly strings of bytes, or E-164 phone numbers. The endpoint
-discriminator sent to the peer by pppd can be set using the endpoint
-option.
-.LP
-In circumstances the peer may send no endpoint discriminator or a
-non-unique value. The optional bundle option adds an extra string
-which is added to the peer's endpoint discriminator and authenticated
-identity when matching up links to be joined together in a bundle.
-The bundle option can also be used to allow the establishment of
-multiple bundles between the local system and the peer. Pppd uses a
-TDB database in /var/run/pppd.tdb to match up links.
-.LP
-Assuming that multilink is enabled and the peer is willing to
-negotiate multilink, then when pppd is invoked to bring up the first
-link to the peer, it will detect that no other link is connected to
-the peer and create a new bundle, that is, another ppp network
-interface unit. When another pppd is invoked to bring up another link
-to the peer, it will detect the existing bundle and join its link to
-it. Currently, if the first pppd terminates (for example, because of
-a hangup or a received signal) the bundle is destroyed.
-.SH EXAMPLES
-.LP
-The following examples assume that the /etc/ppp/options file contains
-the \fIauth\fR option (as in the default /etc/ppp/options file in the
-ppp distribution).
-.LP
-Probably the most common use of pppd is to dial out to an ISP. This
-can be done with a command such as
-.IP
-pppd call isp
-.LP
-where the /etc/ppp/peers/isp file is set up by the system
-administrator to contain something like this:
-.IP
-ttyS0 19200 crtscts
-.br
-connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'
-.br
-noauth
-.LP
-In this example, we are using chat to dial the ISP's modem and go
-through any logon sequence required. The /etc/ppp/chat-isp file
-contains the script used by chat; it could for example contain
-something like this:
-.IP
-ABORT "NO CARRIER"
-.br
-ABORT "NO DIALTONE"
-.br
-ABORT "ERROR"
-.br
-ABORT "NO ANSWER"
-.br
-ABORT "BUSY"
-.br
-ABORT "Username/Password Incorrect"
-.br
-"" "at"
-.br
-OK "at&d0&c1"
-.br
-OK "atdt2468135"
-.br
-"name:" "^Umyuserid"
-.br
-"word:" "\\qmypassword"
-.br
-"ispts" "\\q^Uppp"
-.br
-"~-^Uppp-~"
-.LP
-See the chat(8) man page for details of chat scripts.
-.LP
-Pppd can also be used to provide a dial-in ppp service for users. If
-the users already have login accounts, the simplest way to set up the
-ppp service is to let the users log in to their accounts and run pppd
-(installed setuid-root) with a command such as
-.IP
-pppd proxyarp
-.LP
-To allow a user to use the PPP facilities, you need to allocate an IP
-address for that user's machine and create an entry in
-/etc/ppp/pap-secrets or /etc/ppp/chap-secrets (depending on which
-authentication method the PPP implementation on the user's machine
-supports), so that the user's
-machine can authenticate itself. For example, if Joe has a machine
-called "joespc" which is to be allowed to dial in to the machine
-called "server" and use the IP address joespc.my.net, you would add an
-entry like this to /etc/ppp/pap-secrets or /etc/ppp/chap-secrets:
-.IP
-joespc server "joe's secret" joespc.my.net
-.LP
-Alternatively, you can create a username called (for example) "ppp",
-whose login shell is pppd and whose home directory is /etc/ppp.
-Options to be used when pppd is run this way can be put in
-/etc/ppp/.ppprc.
-.LP
-If your serial connection is any more complicated than a piece of
-wire, you may need to arrange for some control characters to be
-escaped. In particular, it is often useful to escape XON (^Q) and
-XOFF (^S), using \fIasyncmap a0000\fR. If the path includes a telnet,
-you probably should escape ^] as well (\fIasyncmap 200a0000\fR). If
-the path includes an rlogin, you will need to use the \fIescape ff\fR
-option on the end which is running the rlogin client, since many
-rlogin implementations are not transparent; they will remove the
-sequence [0xff, 0xff, 0x73, 0x73, followed by any 8 bytes] from the
-stream.
-.SH DIAGNOSTICS
-.LP
-Messages are sent to the syslog daemon using facility LOG_DAEMON.
-(This can be overriden by recompiling pppd with the macro
-LOG_PPP defined as the desired facility.) In order to see the error
-and debug messages, you will need to edit your /etc/syslog.conf file
-to direct the messages to the desired output device or file.
-.LP
-The \fIdebug\fR option causes the contents of all control packets sent
-or received to be logged, that is, all LCP, PAP, CHAP or IPCP packets.
-This can be useful if the PPP negotiation does not succeed or if
-authentication fails.
-If debugging is enabled at compile time, the \fIdebug\fR option also
-causes other debugging messages to be logged.
-.LP
-Debugging can also be enabled or disabled by sending a SIGUSR1 signal
-to the pppd process. This signal acts as a toggle.
-.SH EXIT STATUS
-The exit status of pppd is set to indicate whether any error was
-detected, or the reason for the link being terminated. The values
-used are:
-.TP
-.B 0
-Pppd has detached, or otherwise the connection was successfully
-established and terminated at the peer's request.
-.TP
-.B 1
-An immediately fatal error of some kind occurred, such as an essential
-system call failing, or running out of virtual memory.
-.TP
-.B 2
-An error was detected in processing the options given, such as two
-mutually exclusive options being used.
-.TP
-.B 3
-Pppd is not setuid-root and the invoking user is not root.
-.TP
-.B 4
-The kernel does not support PPP, for example, the PPP kernel driver is
-not included or cannot be loaded.
-.TP
-.B 5
-Pppd terminated because it was sent a SIGINT, SIGTERM or SIGHUP
-signal.
-.TP
-.B 6
-The serial port could not be locked.
-.TP
-.B 7
-The serial port could not be opened.
-.TP
-.B 8
-The connect script failed (returned a non-zero exit status).
-.TP
-.B 9
-The command specified as the argument to the \fIpty\fR option could
-not be run.
-.TP
-.B 10
-The PPP negotiation failed, that is, it didn't reach the point where
-at least one network protocol (e.g. IP) was running.
-.TP
-.B 11
-The peer system failed (or refused) to authenticate itself.
-.TP
-.B 12
-The link was established successfully and terminated because it was
-idle.
-.TP
-.B 13
-The link was established successfully and terminated because the
-connect time limit was reached.
-.TP
-.B 14
-Callback was negotiated and an incoming call should arrive shortly.
-.TP
-.B 15
-The link was terminated because the peer is not responding to echo
-requests.
-.TP
-.B 16
-The link was terminated by the modem hanging up.
-.TP
-.B 17
-The PPP negotiation failed because serial loopback was detected.
-.TP
-.B 18
-The init script failed (returned a non-zero exit status).
-.TP
-.B 19
-We failed to authenticate ourselves to the peer.
-.SH SCRIPTS
-Pppd invokes scripts at various stages in its processing which can be
-used to perform site-specific ancillary processing. These scripts are
-usually shell scripts, but could be executable code files instead.
-Pppd does not wait for the scripts to finish. The scripts are
-executed as root (with the real and effective user-id set to 0), so
-that they can do things such as update routing tables or run
-privileged daemons. Be careful that the contents of these scripts do
-not compromise your system's security. Pppd runs the scripts with
-standard input, output and error redirected to /dev/null, and with an
-environment that is empty except for some environment variables that
-give information about the link. The environment variables that pppd
-sets are:
-.TP
-.B DEVICE
-The name of the serial tty device being used.
-.TP
-.B IFNAME
-The name of the network interface being used.
-.TP
-.B IPLOCAL
-The IP address for the local end of the link. This is only set when
-IPCP has come up.
-.TP
-.B IPREMOTE
-The IP address for the remote end of the link. This is only set when
-IPCP has come up.
-.TP
-.B PEERNAME
-The authenticated name of the peer. This is only set if the peer
-authenticates itself.
-.TP
-.B SPEED
-The baud rate of the tty device.
-.TP
-.B ORIG_UID
-The real user-id of the user who invoked pppd.
-.TP
-.B PPPLOGNAME
-The username of the real user-id that invoked pppd. This is always set.
-.P
-For the ip-down and auth-down scripts, pppd also sets the following
-variables giving statistics for the connection:
-.TP
-.B CONNECT_TIME
-The number of seconds from when the PPP negotiation started until the
-connection was terminated.
-.TP
-.B BYTES_SENT
-The number of bytes sent (at the level of the serial port) during the
-connection.
-.TP
-.B BYTES_RCVD
-The number of bytes received (at the level of the serial port) during
-the connection.
-.TP
-.B LINKNAME
-The logical name of the link, set with the \fIlinkname\fR option.
-.P
-Pppd invokes the following scripts, if they exist. It is not an error
-if they don't exist.
-.TP
-.B /etc/ppp/auth-up
-A program or script which is executed after the remote system
-successfully authenticates itself. It is executed with the parameters
-.IP
-\fIinterface-name peer-name user-name tty-device speed\fR
-.IP
-Note that this script is not executed if the peer doesn't authenticate
-itself, for example when the \fInoauth\fR option is used.
-.TP
-.B /etc/ppp/auth-down
-A program or script which is executed when the link goes down, if
-/etc/ppp/auth-up was previously executed. It is executed in the same
-manner with the same parameters as /etc/ppp/auth-up.
-.TP
-.B /etc/ppp/ip-up
-A program or script which is executed when the link is available for
-sending and receiving IP packets (that is, IPCP has come up). It is
-executed with the parameters
-.IP
-\fIinterface-name tty-device speed local-IP-address
-remote-IP-address ipparam\fR
-.TP
-.B /etc/ppp/ip-down
-A program or script which is executed when the link is no longer
-available for sending and receiving IP packets. This script can be
-used for undoing the effects of the /etc/ppp/ip-up script. It is
-invoked in the same manner and with the same parameters as the ip-up
-script.
-.TP
-.B /etc/ppp/ipv6-up
-Like /etc/ppp/ip-up, except that it is executed when the link is available
-for sending and receiving IPv6 packets. It is executed with the parameters
-.IP
-\fIinterface-name tty-device speed local-link-local-address
-remote-link-local-address ipparam\fR
-.TP
-.B /etc/ppp/ipv6-down
-Similar to /etc/ppp/ip-down, but it is executed when IPv6 packets can no
-longer be transmitted on the link. It is executed with the same parameters
-as the ipv6-up script.
-.TP
-.B /etc/ppp/ipx-up
-A program or script which is executed when the link is available for
-sending and receiving IPX packets (that is, IPXCP has come up). It is
-executed with the parameters
-.IP
-\fIinterface-name tty-device speed network-number local-IPX-node-address
-remote-IPX-node-address local-IPX-routing-protocol remote-IPX-routing-protocol
-local-IPX-router-name remote-IPX-router-name ipparam pppd-pid\fR
-.IP
-The local-IPX-routing-protocol and remote-IPX-routing-protocol field
-may be one of the following:
-.IP
-NONE to indicate that there is no routing protocol
-.br
-RIP to indicate that RIP/SAP should be used
-.br
-NLSP to indicate that Novell NLSP should be used
-.br
-RIP NLSP to indicate that both RIP/SAP and NLSP should be used
-.TP
-.B /etc/ppp/ipx-down
-A program or script which is executed when the link is no longer
-available for sending and receiving IPX packets. This script can be
-used for undoing the effects of the /etc/ppp/ipx-up script. It is
-invoked in the same manner and with the same parameters as the ipx-up
-script.
-.SH FILES
-.TP
-.B /var/run/ppp\fIn\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp\fIn\fB.pid \fR(others)
-Process-ID for pppd process on ppp interface unit \fIn\fR.
-.TP
-.B /var/run/ppp-\fIname\fB.pid \fR(BSD or Linux), \fB/etc/ppp/ppp-\fIname\fB.pid \fR(others)
-Process-ID for pppd process for logical link \fIname\fR (see the
-\fIlinkname\fR option).
-.TP
-.B /etc/ppp/pap-secrets
-Usernames, passwords and IP addresses for PAP authentication. This
-file should be owned by root and not readable or writable by any other
-user. Pppd will log a warning if this is not the case.
-.TP
-.B /etc/ppp/chap-secrets
-Names, secrets and IP addresses for CHAP authentication. As for
-/etc/ppp/pap-secrets, this file should be owned by root and not
-readable or writable by any other user. Pppd will log a warning if
-this is not the case.
-.TP
-.B /etc/ppp/options
-System default options for pppd, read before user default options or
-command-line options.
-.TP
-.B ~/.ppprc
-User default options, read before /etc/ppp/options.\fIttyname\fR.
-.TP
-.B /etc/ppp/options.\fIttyname
-System default options for the serial port being used, read after
-~/.ppprc. In forming the \fIttyname\fR part of this
-filename, an initial /dev/ is stripped from the port name (if
-present), and any slashes in the remaining part are converted to
-dots.
-.TP
-.B /etc/ppp/peers
-A directory containing options files which may contain privileged
-options, even if pppd was invoked by a user other than root. The
-system administrator can create options files in this directory to
-permit non-privileged users to dial out without requiring the peer to
-authenticate, but only to certain trusted peers.
-.SH SEE ALSO
-.TP
-.B RFC1144
-Jacobson, V.
-\fICompressing TCP/IP headers for low-speed serial links.\fR
-February 1990.
-.TP
-.B RFC1321
-Rivest, R.
-.I The MD5 Message-Digest Algorithm.
-April 1992.
-.TP
-.B RFC1332
-McGregor, G.
-.I PPP Internet Protocol Control Protocol (IPCP).
-May 1992.
-.TP
-.B RFC1334
-Lloyd, B.; Simpson, W.A.
-.I PPP authentication protocols.
-October 1992.
-.TP
-.B RFC1661
-Simpson, W.A.
-.I The Point\-to\-Point Protocol (PPP).
-July 1994.
-.TP
-.B RFC1662
-Simpson, W.A.
-.I PPP in HDLC-like Framing.
-July 1994.
-.TP
-.B RFC2472
-Haskin, D.
-.I IP Version 6 over PPP
-December 1998.
-.SH NOTES
-The following signals have the specified effect when sent to pppd.
-.TP
-.B SIGINT, SIGTERM
-These signals cause pppd to terminate the link (by closing LCP),
-restore the serial device settings, and exit.
-.TP
-.B SIGHUP
-This signal causes pppd to terminate the link, restore the serial
-device settings, and close the serial device. If the \fIpersist\fR or
-\fIdemand\fR option has been specified, pppd will try to reopen the
-serial device and start another connection (after the holdoff period).
-Otherwise pppd will exit. If this signal is received during the
-holdoff period, it causes pppd to end the holdoff period immediately.
-.TP
-.B SIGUSR1
-This signal toggles the state of the \fIdebug\fR option.
-.TP
-.B SIGUSR2
-This signal causes pppd to renegotiate compression. This can be
-useful to re-enable compression after it has been disabled as a result
-of a fatal decompression error. (Fatal decompression errors generally
-indicate a bug in one or other implementation.)
-
-.SH AUTHORS
-Paul Mackerras (Paul.Mackerras@cs.anu.edu.au), based on earlier work by
-Drew Perkins,
-Brad Clements,
-Karl Fox,
-Greg Christy,
-and
-Brad Parker.
diff --git a/mdk-stage1/ppp/pppd/pppd.h b/mdk-stage1/ppp/pppd/pppd.h
deleted file mode 100644
index 02f6dfcef..000000000
--- a/mdk-stage1/ppp/pppd/pppd.h
+++ /dev/null
@@ -1,787 +0,0 @@
-/*
- * pppd.h - PPP daemon global declarations.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * TODO:
- */
-
-#ifndef __PPPD_H__
-#define __PPPD_H__
-
-#include <stdio.h> /* for FILE */
-#include <limits.h> /* for NGROUPS_MAX */
-#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */
-#include <sys/types.h> /* for u_int32_t, if defined */
-#include <sys/time.h> /* for struct timeval */
-#include <net/ppp_defs.h>
-#include "patchlevel.h"
-
-#if defined(__STDC__)
-#include <stdarg.h>
-#define __V(x) x
-#else
-#include <varargs.h>
-#define __V(x) (va_alist) va_dcl
-#define const
-#define volatile
-#endif
-
-#ifdef INET6
-#include "eui64.h"
-#endif
-
-/*
- * Limits.
- */
-
-#define NUM_PPP 1 /* One PPP interface supported (per process) */
-#define MAXWORDLEN 1024 /* max length of word in file (incl null) */
-#define MAXARGS 1 /* max # args to a command */
-#define MAXNAMELEN 256 /* max length of hostname or name for auth */
-#define MAXSECRETLEN 256 /* max length of password or secret */
-
-/*
- * Option descriptor structure.
- */
-
-typedef unsigned char bool;
-
-enum opt_type {
- o_special_noarg = 0,
- o_special = 1,
- o_bool,
- o_int,
- o_uint32,
- o_string,
- o_wild,
-};
-
-typedef struct {
- char *name; /* name of the option */
- enum opt_type type;
- void *addr;
- char *description;
- int flags;
- void *addr2;
- int upper_limit;
- int lower_limit;
- const char *source;
- short int priority;
- short int winner;
-} option_t;
-
-/* Values for flags */
-#define OPT_VALUE 0xff /* mask for presupplied value */
-#define OPT_HEX 0x100 /* int option is in hex */
-#define OPT_NOARG 0x200 /* option doesn't take argument */
-#define OPT_OR 0x400 /* OR in argument to value */
-#define OPT_INC 0x800 /* increment value */
-#define OPT_PRIV 0x1000 /* privileged option */
-#define OPT_STATIC 0x2000 /* string option goes into static array */
-#define OPT_LLIMIT 0x4000 /* check value against lower limit */
-#define OPT_ULIMIT 0x8000 /* check value against upper limit */
-#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT)
-#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */
-#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */
-#define OPT_A2LIST 0x10000 /* for o_special, keep list of values */
-#define OPT_NOINCR 0x20000 /* value mustn't be increased */
-#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */
-#define OPT_PRIO 0x80000 /* process option priorities for this option */
-#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */
-#define OPT_ALIAS 0x200000 /* option is alias for previous option */
-#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */
-#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */
-#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */
-#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */
-#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */
-#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */
-#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV)
-#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */
-#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */
-#define OPT_NOPRINT 0x40000000 /* don't print this option at all */
-
-#define OPT_VAL(x) ((x) & OPT_VALUE)
-
-/* Values for priority */
-#define OPRIO_DEFAULT 0 /* a default value */
-#define OPRIO_CFGFILE 1 /* value from a configuration file */
-#define OPRIO_CMDLINE 2 /* value from the command line */
-#define OPRIO_SECFILE 3 /* value from options in a secrets file */
-#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */
-
-#ifndef GIDSET_TYPE
-#define GIDSET_TYPE gid_t
-#endif
-
-/* Structure representing a list of permitted IP addresses. */
-struct permitted_ip {
- int permit; /* 1 = permit, 0 = forbid */
- u_int32_t base; /* match if (addr & mask) == base */
- u_int32_t mask; /* base and mask are in network byte order */
-};
-
-/*
- * Unfortunately, the linux kernel driver uses a different structure
- * for statistics from the rest of the ports.
- * This structure serves as a common representation for the bits
- * pppd needs.
- */
-struct pppd_stats {
- unsigned int bytes_in;
- unsigned int bytes_out;
-};
-
-/* Used for storing a sequence of words. Usually malloced. */
-struct wordlist {
- struct wordlist *next;
- char *word;
-};
-
-/* An endpoint discriminator, used with multilink. */
-#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */
-struct epdisc {
- unsigned char class;
- unsigned char length;
- unsigned char value[MAX_ENDP_LEN];
-};
-
-/* values for epdisc.class */
-#define EPD_NULL 0 /* null discriminator, no data */
-#define EPD_LOCAL 1
-#define EPD_IP 2
-#define EPD_MAC 3
-#define EPD_MAGIC 4
-#define EPD_PHONENUM 5
-
-typedef void (*notify_func) __P((void *, int));
-
-struct notifier {
- struct notifier *next;
- notify_func func;
- void *arg;
-};
-
-/*
- * Global variables.
- */
-
-extern int hungup; /* Physical layer has disconnected */
-extern int ifunit; /* Interface unit number */
-extern char ifname[]; /* Interface name */
-extern char hostname[]; /* Our hostname */
-extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
-extern int phase; /* Current state of link - see values below */
-extern int baud_rate; /* Current link speed in bits/sec */
-extern char *progname; /* Name of this program */
-extern int redirect_stderr;/* Connector's stderr should go to file */
-extern char peer_authname[];/* Authenticated name of peer */
-extern int privileged; /* We were run by real-uid root */
-extern int need_holdoff; /* Need holdoff period after link terminates */
-extern char **script_env; /* Environment variables for scripts */
-extern int detached; /* Have detached from controlling tty */
-extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */
-extern int ngroups; /* How many groups valid in groups */
-extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
-extern int link_stats_valid; /* set if link_stats is valid */
-extern int link_connect_time; /* time the link was up for */
-extern int using_pty; /* using pty as device (notty or pty opt.) */
-extern int log_to_fd; /* logging to this fd as well as syslog */
-extern bool log_default; /* log_to_fd is default (stdout) */
-extern char *no_ppp_msg; /* message to print if ppp not in kernel */
-extern volatile int status; /* exit status for pppd */
-extern bool devnam_fixed; /* can no longer change devnam */
-extern int unsuccess; /* # unsuccessful connection attempts */
-extern int do_callback; /* set if we want to do callback next */
-extern int doing_callback; /* set if this is a callback */
-extern char ppp_devnam[MAXPATHLEN];
-extern struct notifier *pidchange; /* for notifications of pid changing */
-extern struct notifier *phasechange; /* for notifications of phase changes */
-extern struct notifier *exitnotify; /* for notification that we're exiting */
-extern struct notifier *sigreceived; /* notification of received signal */
-extern int listen_time; /* time to listen first (ms) */
-
-/* Values for do_callback and doing_callback */
-#define CALLBACK_DIALIN 1 /* we are expecting the call back */
-#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */
-
-/*
- * Variables set by command-line options.
- */
-
-extern int debug; /* Debug flag */
-extern int kdebugflag; /* Tell kernel to print debug messages */
-extern int default_device; /* Using /dev/tty or equivalent */
-extern char devnam[MAXPATHLEN]; /* Device name */
-extern int crtscts; /* Use hardware flow control */
-extern bool modem; /* Use modem control lines */
-extern int inspeed; /* Input/Output speed requested */
-extern u_int32_t netmask; /* IP netmask to set on interface */
-extern bool lockflag; /* Create lock file to lock the serial dev */
-extern bool nodetach; /* Don't detach from controlling tty */
-extern bool updetach; /* Detach from controlling tty when link up */
-extern char *initializer; /* Script to initialize physical link */
-extern char *connect_script; /* Script to establish physical link */
-extern char *disconnect_script; /* Script to disestablish physical link */
-extern char *welcomer; /* Script to welcome client after connection */
-extern char *ptycommand; /* Command to run on other side of pty */
-extern int maxconnect; /* Maximum connect time (seconds) */
-extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */
-extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */
-extern bool auth_required; /* Peer is required to authenticate */
-extern bool persist; /* Reopen link after it goes down */
-extern bool uselogin; /* Use /etc/passwd for checking PAP */
-extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */
-extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
-extern bool explicit_remote;/* remote_name specified with remotename opt */
-extern bool demand; /* Do dial-on-demand */
-extern char *ipparam; /* Extra parameter for ip up/down scripts */
-extern bool cryptpap; /* Others' PAP passwords are encrypted */
-extern int idle_time_limit;/* Shut down link if idle for this long */
-extern int holdoff; /* Dead time before restarting */
-extern bool holdoff_specified; /* true if user gave a holdoff value */
-extern bool notty; /* Stdin/out is not a tty */
-extern char *pty_socket; /* Socket to connect to pty */
-extern char *record_file; /* File to record chars sent/received */
-extern bool sync_serial; /* Device is synchronous serial device */
-extern int maxfail; /* Max # of unsuccessful connection attempts */
-extern char linkname[MAXPATHLEN]; /* logical name for link */
-extern bool tune_kernel; /* May alter kernel settings as necessary */
-extern int connect_delay; /* Time to delay after connect script */
-extern int max_data_rate; /* max bytes/sec through charshunt */
-extern int req_unit; /* interface unit number to use */
-extern bool multilink; /* enable multilink operation */
-extern bool noendpoint; /* don't send or accept endpt. discrim. */
-extern char *bundle_name; /* bundle name for multilink */
-extern bool dump_options; /* print out option values */
-extern bool dryrun; /* check everything, print options, exit */
-
-#ifdef PPP_FILTER
-extern struct bpf_program pass_filter; /* Filter for pkts to pass */
-extern struct bpf_program active_filter; /* Filter for link-active pkts */
-#endif
-
-#ifdef MSLANMAN
-extern bool ms_lanman; /* Use LanMan password instead of NT */
- /* Has meaning only with MS-CHAP challenges */
-#endif
-
-extern char *current_option; /* the name of the option being parsed */
-extern int privileged_option; /* set iff the current option came from root */
-extern char *option_source; /* string saying where the option came from */
-extern int option_priority; /* priority of current options */
-
-/*
- * Values for phase.
- */
-#define PHASE_DEAD 0
-#define PHASE_INITIALIZE 1
-#define PHASE_SERIALCONN 2
-#define PHASE_DORMANT 3
-#define PHASE_ESTABLISH 4
-#define PHASE_AUTHENTICATE 5
-#define PHASE_CALLBACK 6
-#define PHASE_NETWORK 7
-#define PHASE_RUNNING 8
-#define PHASE_TERMINATE 9
-#define PHASE_DISCONNECT 10
-#define PHASE_HOLDOFF 11
-
-/*
- * The following struct gives the addresses of procedures to call
- * for a particular protocol.
- */
-struct protent {
- u_short protocol; /* PPP protocol number */
- /* Initialization procedure */
- void (*init) __P((int unit));
- /* Process a received packet */
- void (*input) __P((int unit, u_char *pkt, int len));
- /* Process a received protocol-reject */
- void (*protrej) __P((int unit));
- /* Lower layer has come up */
- void (*lowerup) __P((int unit));
- /* Lower layer has gone down */
- void (*lowerdown) __P((int unit));
- /* Open the protocol */
- void (*open) __P((int unit));
- /* Close the protocol */
- void (*close) __P((int unit, char *reason));
- /* Print a packet in readable form */
- int (*printpkt) __P((u_char *pkt, int len,
- void (*printer) __P((void *, char *, ...)),
- void *arg));
- /* Process a received data packet */
- void (*datainput) __P((int unit, u_char *pkt, int len));
- bool enabled_flag; /* 0 iff protocol is disabled */
- char *name; /* Text name of protocol */
- char *data_name; /* Text name of corresponding data protocol */
- option_t *options; /* List of command-line options */
- /* Check requested options, assign defaults */
- void (*check_options) __P((void));
- /* Configure interface for demand-dial */
- int (*demand_conf) __P((int unit));
- /* Say whether to bring up link for this pkt */
- int (*active_pkt) __P((u_char *pkt, int len));
-};
-
-/* Table of pointers to supported protocols */
-extern struct protent *protocols[];
-
-/*
- * This struct contains pointers to a set of procedures for
- * doing operations on a "channel". A channel provides a way
- * to send and receive PPP packets - the canonical example is
- * a serial port device in PPP line discipline (or equivalently
- * with PPP STREAMS modules pushed onto it).
- */
-struct channel {
- /* set of options for this channel */
- option_t *options;
- /* find and process a per-channel options file */
- void (*process_extra_options) __P((void));
- /* check all the options that have been given */
- void (*check_options) __P((void));
- /* get the channel ready to do PPP, return a file descriptor */
- int (*connect) __P((void));
- /* we're finished with the channel */
- void (*disconnect) __P((void));
- /* put the channel into PPP `mode' */
- int (*establish_ppp) __P((int));
- /* take the channel out of PPP `mode', restore loopback if demand */
- void (*disestablish_ppp) __P((int));
- /* set the transmit-side PPP parameters of the channel */
- void (*send_config) __P((int, u_int32_t, int, int));
- /* set the receive-side PPP parameters of the channel */
- void (*recv_config) __P((int, u_int32_t, int, int));
- /* cleanup on error or normal exit */
- void (*cleanup) __P((void));
- /* close the device, called in children after fork */
- void (*close) __P((void));
-};
-
-extern struct channel *the_channel;
-
-#define ppp_send_config(unit, mtu, accm, pc, acc) \
-do { \
- if (the_channel->send_config) \
- (*the_channel->send_config)((mtu), (accm), (pc), (acc)); \
-} while (0)
-
-#define ppp_recv_config(unit, mtu, accm, pc, acc) \
-do { \
- if (the_channel->send_config) \
- (*the_channel->recv_config)((mtu), (accm), (pc), (acc)); \
-} while (0)
-
-/*
- * Prototypes.
- */
-
-/* Procedures exported from main.c. */
-void set_ifunit __P((int)); /* set stuff that depends on ifunit */
-void detach __P((void)); /* Detach from controlling tty */
-void die __P((int)); /* Cleanup and exit */
-void quit __P((void)); /* like die(1) */
-void novm __P((char *)); /* Say we ran out of memory, and die */
-void timeout __P((void (*func)(void *), void *arg, int s, int us));
- /* Call func(arg) after s.us seconds */
-void untimeout __P((void (*func)(void *), void *arg));
- /* Cancel call to func(arg) */
-void record_child __P((int, char *, void (*) (void *), void *));
-int device_script __P((char *cmd, int in, int out, int dont_wait));
- /* Run `cmd' with given stdin and stdout */
-pid_t run_program __P((char *prog, char **args, int must_exist,
- void (*done)(void *), void *arg));
- /* Run program prog with args in child */
-void reopen_log __P((void)); /* (re)open the connection to syslog */
-void update_link_stats __P((int)); /* Get stats at link termination */
-void script_setenv __P((char *, char *, int)); /* set script env var */
-void script_unsetenv __P((char *)); /* unset script env var */
-void new_phase __P((int)); /* signal start of new phase */
-void add_notifier __P((struct notifier **, notify_func, void *));
-void remove_notifier __P((struct notifier **, notify_func, void *));
-void notify __P((struct notifier *, int));
-
-/* Procedures exported from tty.c. */
-void tty_init __P((void));
-
-/* Procedures exported from utils.c. */
-void log_packet __P((u_char *, int, char *, int));
- /* Format a packet and log it with syslog */
-void print_string __P((char *, int, void (*) (void *, char *, ...),
- void *)); /* Format a string for output */
-int slprintf __P((char *, int, char *, ...)); /* sprintf++ */
-int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */
-size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */
-size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */
-void dbglog __P((char *, ...)); /* log a debug message */
-void info __P((char *, ...)); /* log an informational message */
-void notice __P((char *, ...)); /* log a notice-level message */
-void warn __P((char *, ...)); /* log a warning message */
-void error __P((char *, ...)); /* log an error message */
-void fatal __P((char *, ...)); /* log an error message and die(1) */
-void init_pr_log __P((char *, int)); /* initialize for using pr_log */
-void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */
-void end_pr_log __P((void)); /* finish up after using pr_log */
-
-/* Procedures exported from auth.c */
-void link_required __P((int)); /* we are starting to use the link */
-void link_terminated __P((int)); /* we are finished with the link */
-void link_down __P((int)); /* the LCP layer has left the Opened state */
-void link_established __P((int)); /* the link is up; authenticate now */
-void start_networks __P((void)); /* start all the network control protos */
-void np_up __P((int, int)); /* a network protocol has come up */
-void np_down __P((int, int)); /* a network protocol has gone down */
-void np_finished __P((int, int)); /* a network protocol no longer needs link */
-void auth_peer_fail __P((int, int));
- /* peer failed to authenticate itself */
-void auth_peer_success __P((int, int, char *, int));
- /* peer successfully authenticated itself */
-void auth_withpeer_fail __P((int, int));
- /* we failed to authenticate ourselves */
-void auth_withpeer_success __P((int, int));
- /* we successfully authenticated ourselves */
-void auth_check_options __P((void));
- /* check authentication options supplied */
-void auth_reset __P((int)); /* check what secrets we have */
-int check_passwd __P((int, char *, int, char *, int, char **));
- /* Check peer-supplied username/password */
-int get_secret __P((int, char *, char *, char *, int *, int));
- /* get "secret" for chap */
-int auth_ip_addr __P((int, u_int32_t));
- /* check if IP address is authorized */
-int bad_ip_adrs __P((u_int32_t));
- /* check if IP address is unreasonable */
-
-/* Procedures exported from demand.c */
-void demand_conf __P((void)); /* config interface(s) for demand-dial */
-void demand_block __P((void)); /* set all NPs to queue up packets */
-void demand_unblock __P((void)); /* set all NPs to pass packets */
-void demand_discard __P((void)); /* set all NPs to discard packets */
-void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
-int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
-int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
-
-/* Procedures exported from multilink.c */
-void mp_check_options __P((void)); /* Check multilink-related options */
-int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */
-char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */
-int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
-
-/* Procedures exported from sys-*.c */
-void sys_init __P((void)); /* Do system-dependent initialization */
-void sys_cleanup __P((void)); /* Restore system state before exiting */
-int sys_check_options __P((void)); /* Check options specified */
-void sys_close __P((void)); /* Clean up in a child before execing */
-int ppp_available __P((void)); /* Test whether ppp kernel support exists */
-int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
-int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
-int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */
-void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */
-void make_new_bundle __P((int, int, int, int)); /* Create new bundle */
-int bundle_attach __P((int)); /* Attach link to existing bundle */
-void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */
-void clean_check __P((void)); /* Check if line was 8-bit clean */
-void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */
-void restore_tty __P((int)); /* Restore port's original parameters */
-void setdtr __P((int, int)); /* Raise or lower port's DTR line */
-void output __P((int, u_char *, int)); /* Output a PPP packet */
-void wait_input __P((struct timeval *));
- /* Wait for input, with timeout */
-void add_fd __P((int)); /* Add fd to set to wait for */
-void remove_fd __P((int)); /* Remove fd from set to wait for */
-int read_packet __P((u_char *)); /* Read PPP packet */
-int get_loop_output __P((void)); /* Read pkts from loopback */
-void tty_send_config __P((int, u_int32_t, int, int));
- /* Configure i/f transmit parameters */
-void tty_set_xaccm __P((ext_accm));
- /* Set extended transmit ACCM */
-void tty_recv_config __P((int, u_int32_t, int, int));
- /* Configure i/f receive parameters */
-int ccp_test __P((int, u_char *, int, int));
- /* Test support for compression scheme */
-void ccp_flags_set __P((int, int, int));
- /* Set kernel CCP state */
-int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */
-int get_idle_time __P((int, struct ppp_idle *));
- /* Find out how long link has been idle */
-int get_ppp_stats __P((int, struct pppd_stats *));
- /* Return link statistics */
-void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */
-int sifvjcomp __P((int, int, int, int));
- /* Configure VJ TCP header compression */
-int sifup __P((int)); /* Configure i/f up for one protocol */
-int sifnpmode __P((int u, int proto, enum NPmode mode));
- /* Set mode for handling packets for proto */
-int sifdown __P((int)); /* Configure i/f down for one protocol */
-int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t));
- /* Configure IPv4 addresses for i/f */
-int cifaddr __P((int, u_int32_t, u_int32_t));
- /* Reset i/f IP addresses */
-#ifdef INET6
-int sif6addr __P((int, eui64_t, eui64_t));
- /* Configure IPv6 addresses for i/f */
-int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
-#endif
-int sifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Create default route through i/f */
-int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
-int sifproxyarp __P((int, u_int32_t));
- /* Add proxy ARP entry for peer */
-int cifproxyarp __P((int, u_int32_t));
- /* Delete proxy ARP entry for peer */
-u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */
-int lock __P((char *)); /* Create lock file for device */
-int relock __P((int)); /* Rewrite lock file with new pid */
-void unlock __P((void)); /* Delete previously-created lock file */
-int get_host_seed __P((void)); /* Get host-dependent random number seed */
-int have_route_to __P((u_int32_t)); /* Check if route to addr exists */
-#ifdef PPP_FILTER
-int set_filters __P((struct bpf_program *pass, struct bpf_program *active));
- /* Set filter programs in kernel */
-#endif
-#ifdef IPX_CHANGE
-int sipxfaddr __P((int, unsigned long, unsigned char *));
-int cipxfaddr __P((int));
-#endif
-int get_if_hwaddr __P((u_char *addr, char *name));
-char *get_first_ethernet __P((void));
-
-/* Procedures exported from options.c */
-int parse_args __P((int argc, char **argv));
- /* Parse options from arguments given */
-int options_from_file __P((char *filename, int must_exist, int check_prot,
- int privileged));
- /* Parse options from an options file */
-int options_from_user __P((void)); /* Parse options from user's .ppprc */
-int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */
-int options_from_list __P((struct wordlist *, int privileged));
- /* Parse options from a wordlist */
-int getword __P((FILE *f, char *word, int *newlinep, char *filename));
- /* Read a word from a file */
-void option_error __P((char *fmt, ...));
- /* Print an error message about an option */
-int int_option __P((char *, int *));
- /* Simplified number_option for decimal ints */
-void add_options __P((option_t *)); /* Add extra options */
-void check_options __P((void)); /* check values after all options parsed */
-int override_value __P((const char *, int, const char *));
- /* override value if permitted by priority */
-void print_options __P((void (*) __P((void *, char *, ...)), void *));
- /* print out values of all options */
-
-int parse_dotted_ip __P((char *, u_int32_t *));
-
-/*
- * Hooks to enable plugins to change various things.
- */
-extern int (*new_phase_hook) __P((int));
-extern int (*idle_time_hook) __P((struct ppp_idle *));
-extern int (*holdoff_hook) __P((void));
-extern int (*pap_check_hook) __P((void));
-extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
- struct wordlist **paddrs,
- struct wordlist **popts));
-extern void (*pap_logout_hook) __P((void));
-extern int (*pap_passwd_hook) __P((char *user, char *passwd));
-extern void (*ip_up_hook) __P((void));
-extern void (*ip_down_hook) __P((void));
-extern void (*ip_choose_hook) __P((u_int32_t *));
-
-/*
- * Inline versions of get/put char/short/long.
- * Pointer is advanced; we assume that both arguments
- * are lvalues and will already be in registers.
- * cp MUST be u_char *.
- */
-#define GETCHAR(c, cp) { \
- (c) = *(cp)++; \
-}
-#define PUTCHAR(c, cp) { \
- *(cp)++ = (u_char) (c); \
-}
-
-
-#define GETSHORT(s, cp) { \
- (s) = *(cp)++ << 8; \
- (s) |= *(cp)++; \
-}
-#define PUTSHORT(s, cp) { \
- *(cp)++ = (u_char) ((s) >> 8); \
- *(cp)++ = (u_char) (s); \
-}
-
-#define GETLONG(l, cp) { \
- (l) = *(cp)++ << 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; \
-}
-#define PUTLONG(l, cp) { \
- *(cp)++ = (u_char) ((l) >> 24); \
- *(cp)++ = (u_char) ((l) >> 16); \
- *(cp)++ = (u_char) ((l) >> 8); \
- *(cp)++ = (u_char) (l); \
-}
-
-#define INCPTR(n, cp) ((cp) += (n))
-#define DECPTR(n, cp) ((cp) -= (n))
-
-/*
- * System dependent definitions for user-level 4.3BSD UNIX implementation.
- */
-
-#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0)
-#define UNTIMEOUT(r, f) untimeout((r), (f))
-
-#define BCOPY(s, d, l) memcpy(d, s, l)
-#define BZERO(s, n) memset(s, 0, n)
-
-#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); }
-
-/*
- * MAKEHEADER - Add Header fields to a packet.
- */
-#define MAKEHEADER(p, t) { \
- PUTCHAR(PPP_ALLSTATIONS, p); \
- PUTCHAR(PPP_UI, p); \
- PUTSHORT(t, p); }
-
-/*
- * Exit status values.
- */
-#define EXIT_OK 0
-#define EXIT_FATAL_ERROR 1
-#define EXIT_OPTION_ERROR 2
-#define EXIT_NOT_ROOT 3
-#define EXIT_NO_KERNEL_SUPPORT 4
-#define EXIT_USER_REQUEST 5
-#define EXIT_LOCK_FAILED 6
-#define EXIT_OPEN_FAILED 7
-#define EXIT_CONNECT_FAILED 8
-#define EXIT_PTYCMD_FAILED 9
-#define EXIT_NEGOTIATION_FAILED 10
-#define EXIT_PEER_AUTH_FAILED 11
-#define EXIT_IDLE_TIMEOUT 12
-#define EXIT_CONNECT_TIME 13
-#define EXIT_CALLBACK 14
-#define EXIT_PEER_DEAD 15
-#define EXIT_HANGUP 16
-#define EXIT_LOOPBACK 17
-#define EXIT_INIT_FAILED 18
-#define EXIT_AUTH_TOPEER_FAILED 19
-
-/*
- * Debug macros. Slightly useful for finding bugs in pppd, not particularly
- * useful for finding out why your connection isn't being established.
- */
-#ifdef DEBUGALL
-#define DEBUGMAIN 1
-#define DEBUGFSM 1
-#define DEBUGLCP 1
-#define DEBUGIPCP 1
-#define DEBUGIPV6CP 1
-#define DEBUGUPAP 1
-#define DEBUGCHAP 1
-#endif
-
-#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
-#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
- || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
- || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
-#define LOG_PPP LOG_LOCAL2
-#else
-#define LOG_PPP LOG_DAEMON
-#endif
-#endif /* LOG_PPP */
-
-#ifdef DEBUGMAIN
-#define MAINDEBUG(x) if (debug) dbglog x
-#else
-#define MAINDEBUG(x)
-#endif
-
-#ifdef DEBUGSYS
-#define SYSDEBUG(x) if (debug) dbglog x
-#else
-#define SYSDEBUG(x)
-#endif
-
-#ifdef DEBUGFSM
-#define FSMDEBUG(x) if (debug) dbglog x
-#else
-#define FSMDEBUG(x)
-#endif
-
-#ifdef DEBUGLCP
-#define LCPDEBUG(x) if (debug) dbglog x
-#else
-#define LCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPCP
-#define IPCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPV6CP
-#define IPV6CPDEBUG(x) if (debug) dbglog x
-#else
-#define IPV6CPDEBUG(x)
-#endif
-
-#ifdef DEBUGUPAP
-#define UPAPDEBUG(x) if (debug) dbglog x
-#else
-#define UPAPDEBUG(x)
-#endif
-
-#ifdef DEBUGCHAP
-#define CHAPDEBUG(x) if (debug) dbglog x
-#else
-#define CHAPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPXCP
-#define IPXCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPXCPDEBUG(x)
-#endif
-
-#ifndef SIGTYPE
-#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE)
-#define SIGTYPE void
-#else
-#define SIGTYPE int
-#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */
-#endif /* SIGTYPE */
-
-#ifndef MIN
-#define MIN(a, b) ((a) < (b)? (a): (b))
-#endif
-#ifndef MAX
-#define MAX(a, b) ((a) > (b)? (a): (b))
-#endif
-
-#endif /* __PPP_H__ */
diff --git a/mdk-stage1/ppp/pppd/pppd.h.wtmp b/mdk-stage1/ppp/pppd/pppd.h.wtmp
deleted file mode 100644
index 4d440be06..000000000
--- a/mdk-stage1/ppp/pppd/pppd.h.wtmp
+++ /dev/null
@@ -1,789 +0,0 @@
-/*
- * pppd.h - PPP daemon global declarations.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * TODO:
- */
-
-#ifndef __PPPD_H__
-#define __PPPD_H__
-
-#include <stdio.h> /* for FILE */
-#include <limits.h> /* for NGROUPS_MAX */
-#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */
-#include <sys/types.h> /* for u_int32_t, if defined */
-#include <sys/time.h> /* for struct timeval */
-#include <net/ppp_defs.h>
-#include "patchlevel.h"
-
-#if defined(__STDC__)
-#include <stdarg.h>
-#define __V(x) x
-#else
-#include <varargs.h>
-#define __V(x) (va_alist) va_dcl
-#define const
-#define volatile
-#endif
-
-#ifdef INET6
-#include "eui64.h"
-#endif
-
-/*
- * Limits.
- */
-
-#define NUM_PPP 1 /* One PPP interface supported (per process) */
-#define MAXWORDLEN 1024 /* max length of word in file (incl null) */
-#define MAXARGS 1 /* max # args to a command */
-#define MAXNAMELEN 256 /* max length of hostname or name for auth */
-#define MAXSECRETLEN 256 /* max length of password or secret */
-
-/*
- * Option descriptor structure.
- */
-
-typedef unsigned char bool;
-
-enum opt_type {
- o_special_noarg = 0,
- o_special = 1,
- o_bool,
- o_int,
- o_uint32,
- o_string,
- o_wild,
-};
-
-typedef struct {
- char *name; /* name of the option */
- enum opt_type type;
- void *addr;
- char *description;
- int flags;
- void *addr2;
- int upper_limit;
- int lower_limit;
- const char *source;
- short int priority;
- short int winner;
-} option_t;
-
-/* Values for flags */
-#define OPT_VALUE 0xff /* mask for presupplied value */
-#define OPT_HEX 0x100 /* int option is in hex */
-#define OPT_NOARG 0x200 /* option doesn't take argument */
-#define OPT_OR 0x400 /* OR in argument to value */
-#define OPT_INC 0x800 /* increment value */
-#define OPT_PRIV 0x1000 /* privileged option */
-#define OPT_STATIC 0x2000 /* string option goes into static array */
-#define OPT_LLIMIT 0x4000 /* check value against lower limit */
-#define OPT_ULIMIT 0x8000 /* check value against upper limit */
-#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT)
-#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */
-#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */
-#define OPT_A2LIST 0x10000 /* for o_special, keep list of values */
-#define OPT_NOINCR 0x20000 /* value mustn't be increased */
-#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */
-#define OPT_PRIO 0x80000 /* process option priorities for this option */
-#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */
-#define OPT_ALIAS 0x200000 /* option is alias for previous option */
-#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */
-#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */
-#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */
-#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */
-#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */
-#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */
-#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV)
-#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */
-#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */
-#define OPT_NOPRINT 0x40000000 /* don't print this option at all */
-
-#define OPT_VAL(x) ((x) & OPT_VALUE)
-
-/* Values for priority */
-#define OPRIO_DEFAULT 0 /* a default value */
-#define OPRIO_CFGFILE 1 /* value from a configuration file */
-#define OPRIO_CMDLINE 2 /* value from the command line */
-#define OPRIO_SECFILE 3 /* value from options in a secrets file */
-#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */
-
-#ifndef GIDSET_TYPE
-#define GIDSET_TYPE gid_t
-#endif
-
-/* Structure representing a list of permitted IP addresses. */
-struct permitted_ip {
- int permit; /* 1 = permit, 0 = forbid */
- u_int32_t base; /* match if (addr & mask) == base */
- u_int32_t mask; /* base and mask are in network byte order */
-};
-
-/*
- * Unfortunately, the linux kernel driver uses a different structure
- * for statistics from the rest of the ports.
- * This structure serves as a common representation for the bits
- * pppd needs.
- */
-struct pppd_stats {
- unsigned int bytes_in;
- unsigned int bytes_out;
-};
-
-/* Used for storing a sequence of words. Usually malloced. */
-struct wordlist {
- struct wordlist *next;
- char *word;
-};
-
-/* An endpoint discriminator, used with multilink. */
-#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */
-struct epdisc {
- unsigned char class;
- unsigned char length;
- unsigned char value[MAX_ENDP_LEN];
-};
-
-/* values for epdisc.class */
-#define EPD_NULL 0 /* null discriminator, no data */
-#define EPD_LOCAL 1
-#define EPD_IP 2
-#define EPD_MAC 3
-#define EPD_MAGIC 4
-#define EPD_PHONENUM 5
-
-typedef void (*notify_func) __P((void *, int));
-
-struct notifier {
- struct notifier *next;
- notify_func func;
- void *arg;
-};
-
-/*
- * Global variables.
- */
-
-extern int hungup; /* Physical layer has disconnected */
-extern int ifunit; /* Interface unit number */
-extern char ifname[]; /* Interface name */
-extern char hostname[]; /* Our hostname */
-extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
-extern int phase; /* Current state of link - see values below */
-extern int baud_rate; /* Current link speed in bits/sec */
-extern char *progname; /* Name of this program */
-extern int redirect_stderr;/* Connector's stderr should go to file */
-extern char peer_authname[];/* Authenticated name of peer */
-extern int privileged; /* We were run by real-uid root */
-extern int need_holdoff; /* Need holdoff period after link terminates */
-extern char **script_env; /* Environment variables for scripts */
-extern int detached; /* Have detached from controlling tty */
-extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */
-extern int ngroups; /* How many groups valid in groups */
-extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
-extern int link_stats_valid; /* set if link_stats is valid */
-extern int link_connect_time; /* time the link was up for */
-extern int using_pty; /* using pty as device (notty or pty opt.) */
-extern int log_to_fd; /* logging to this fd as well as syslog */
-extern bool log_default; /* log_to_fd is default (stdout) */
-extern char *no_ppp_msg; /* message to print if ppp not in kernel */
-extern volatile int status; /* exit status for pppd */
-extern bool devnam_fixed; /* can no longer change devnam */
-extern int unsuccess; /* # unsuccessful connection attempts */
-extern int do_callback; /* set if we want to do callback next */
-extern int doing_callback; /* set if this is a callback */
-extern char ppp_devnam[MAXPATHLEN];
-extern struct notifier *pidchange; /* for notifications of pid changing */
-extern struct notifier *phasechange; /* for notifications of phase changes */
-extern struct notifier *exitnotify; /* for notification that we're exiting */
-extern struct notifier *sigreceived; /* notification of received signal */
-extern int listen_time; /* time to listen first (ms) */
-
-/* Values for do_callback and doing_callback */
-#define CALLBACK_DIALIN 1 /* we are expecting the call back */
-#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */
-
-/*
- * Variables set by command-line options.
- */
-
-extern int debug; /* Debug flag */
-extern int kdebugflag; /* Tell kernel to print debug messages */
-extern int default_device; /* Using /dev/tty or equivalent */
-extern char devnam[MAXPATHLEN]; /* Device name */
-extern int crtscts; /* Use hardware flow control */
-extern bool modem; /* Use modem control lines */
-extern int inspeed; /* Input/Output speed requested */
-extern u_int32_t netmask; /* IP netmask to set on interface */
-extern bool lockflag; /* Create lock file to lock the serial dev */
-extern bool nodetach; /* Don't detach from controlling tty */
-extern bool updetach; /* Detach from controlling tty when link up */
-extern char *initializer; /* Script to initialize physical link */
-extern char *connect_script; /* Script to establish physical link */
-extern char *disconnect_script; /* Script to disestablish physical link */
-extern char *welcomer; /* Script to welcome client after connection */
-extern char *ptycommand; /* Command to run on other side of pty */
-extern int maxconnect; /* Maximum connect time (seconds) */
-extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */
-extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */
-extern bool auth_required; /* Peer is required to authenticate */
-extern bool persist; /* Reopen link after it goes down */
-extern bool uselogin; /* Use /etc/passwd for checking PAP */
-extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */
-extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
-extern bool explicit_remote;/* remote_name specified with remotename opt */
-extern bool demand; /* Do dial-on-demand */
-extern char *ipparam; /* Extra parameter for ip up/down scripts */
-extern bool cryptpap; /* Others' PAP passwords are encrypted */
-extern int idle_time_limit;/* Shut down link if idle for this long */
-extern int holdoff; /* Dead time before restarting */
-extern bool holdoff_specified; /* true if user gave a holdoff value */
-extern bool notty; /* Stdin/out is not a tty */
-extern char *pty_socket; /* Socket to connect to pty */
-extern char *record_file; /* File to record chars sent/received */
-extern bool sync_serial; /* Device is synchronous serial device */
-extern int maxfail; /* Max # of unsuccessful connection attempts */
-extern char linkname[MAXPATHLEN]; /* logical name for link */
-extern bool tune_kernel; /* May alter kernel settings as necessary */
-extern int connect_delay; /* Time to delay after connect script */
-extern int max_data_rate; /* max bytes/sec through charshunt */
-extern int req_unit; /* interface unit number to use */
-extern bool multilink; /* enable multilink operation */
-extern bool noendpoint; /* don't send or accept endpt. discrim. */
-extern char *bundle_name; /* bundle name for multilink */
-extern bool dump_options; /* print out option values */
-extern bool dryrun; /* check everything, print options, exit */
-
-#ifdef PPP_FILTER
-extern struct bpf_program pass_filter; /* Filter for pkts to pass */
-extern struct bpf_program active_filter; /* Filter for link-active pkts */
-#endif
-
-#ifdef MSLANMAN
-extern bool ms_lanman; /* Use LanMan password instead of NT */
- /* Has meaning only with MS-CHAP challenges */
-#endif
-
-extern char *current_option; /* the name of the option being parsed */
-extern int privileged_option; /* set iff the current option came from root */
-extern char *option_source; /* string saying where the option came from */
-extern int option_priority; /* priority of current options */
-
-/*
- * Values for phase.
- */
-#define PHASE_DEAD 0
-#define PHASE_INITIALIZE 1
-#define PHASE_SERIALCONN 2
-#define PHASE_DORMANT 3
-#define PHASE_ESTABLISH 4
-#define PHASE_AUTHENTICATE 5
-#define PHASE_CALLBACK 6
-#define PHASE_NETWORK 7
-#define PHASE_RUNNING 8
-#define PHASE_TERMINATE 9
-#define PHASE_DISCONNECT 10
-#define PHASE_HOLDOFF 11
-
-/*
- * The following struct gives the addresses of procedures to call
- * for a particular protocol.
- */
-struct protent {
- u_short protocol; /* PPP protocol number */
- /* Initialization procedure */
- void (*init) __P((int unit));
- /* Process a received packet */
- void (*input) __P((int unit, u_char *pkt, int len));
- /* Process a received protocol-reject */
- void (*protrej) __P((int unit));
- /* Lower layer has come up */
- void (*lowerup) __P((int unit));
- /* Lower layer has gone down */
- void (*lowerdown) __P((int unit));
- /* Open the protocol */
- void (*open) __P((int unit));
- /* Close the protocol */
- void (*close) __P((int unit, char *reason));
- /* Print a packet in readable form */
- int (*printpkt) __P((u_char *pkt, int len,
- void (*printer) __P((void *, char *, ...)),
- void *arg));
- /* Process a received data packet */
- void (*datainput) __P((int unit, u_char *pkt, int len));
- bool enabled_flag; /* 0 iff protocol is disabled */
- char *name; /* Text name of protocol */
- char *data_name; /* Text name of corresponding data protocol */
- option_t *options; /* List of command-line options */
- /* Check requested options, assign defaults */
- void (*check_options) __P((void));
- /* Configure interface for demand-dial */
- int (*demand_conf) __P((int unit));
- /* Say whether to bring up link for this pkt */
- int (*active_pkt) __P((u_char *pkt, int len));
-};
-
-/* Table of pointers to supported protocols */
-extern struct protent *protocols[];
-
-/*
- * This struct contains pointers to a set of procedures for
- * doing operations on a "channel". A channel provides a way
- * to send and receive PPP packets - the canonical example is
- * a serial port device in PPP line discipline (or equivalently
- * with PPP STREAMS modules pushed onto it).
- */
-struct channel {
- /* set of options for this channel */
- option_t *options;
- /* find and process a per-channel options file */
- void (*process_extra_options) __P((void));
- /* check all the options that have been given */
- void (*check_options) __P((void));
- /* get the channel ready to do PPP, return a file descriptor */
- int (*connect) __P((void));
- /* we're finished with the channel */
- void (*disconnect) __P((void));
- /* put the channel into PPP `mode' */
- int (*establish_ppp) __P((int));
- /* take the channel out of PPP `mode', restore loopback if demand */
- void (*disestablish_ppp) __P((int));
- /* set the transmit-side PPP parameters of the channel */
- void (*send_config) __P((int, u_int32_t, int, int));
- /* set the receive-side PPP parameters of the channel */
- void (*recv_config) __P((int, u_int32_t, int, int));
- /* cleanup on error or normal exit */
- void (*cleanup) __P((void));
- /* close the device, called in children after fork */
- void (*close) __P((void));
-};
-
-extern struct channel *the_channel;
-
-#define ppp_send_config(unit, mtu, accm, pc, acc) \
-do { \
- if (the_channel->send_config) \
- (*the_channel->send_config)((mtu), (accm), (pc), (acc)); \
-} while (0)
-
-#define ppp_recv_config(unit, mtu, accm, pc, acc) \
-do { \
- if (the_channel->send_config) \
- (*the_channel->recv_config)((mtu), (accm), (pc), (acc)); \
-} while (0)
-
-/*
- * Prototypes.
- */
-
-/* Procedures exported from main.c. */
-void set_ifunit __P((int)); /* set stuff that depends on ifunit */
-void detach __P((void)); /* Detach from controlling tty */
-void die __P((int)); /* Cleanup and exit */
-void quit __P((void)); /* like die(1) */
-void novm __P((char *)); /* Say we ran out of memory, and die */
-void timeout __P((void (*func)(void *), void *arg, int s, int us));
- /* Call func(arg) after s.us seconds */
-void untimeout __P((void (*func)(void *), void *arg));
- /* Cancel call to func(arg) */
-void record_child __P((int, char *, void (*) (void *), void *));
-int device_script __P((char *cmd, int in, int out, int dont_wait));
- /* Run `cmd' with given stdin and stdout */
-pid_t run_program __P((char *prog, char **args, int must_exist,
- void (*done)(void *), void *arg));
- /* Run program prog with args in child */
-void reopen_log __P((void)); /* (re)open the connection to syslog */
-void update_link_stats __P((int)); /* Get stats at link termination */
-void script_setenv __P((char *, char *, int)); /* set script env var */
-void script_unsetenv __P((char *)); /* unset script env var */
-void new_phase __P((int)); /* signal start of new phase */
-void add_notifier __P((struct notifier **, notify_func, void *));
-void remove_notifier __P((struct notifier **, notify_func, void *));
-void notify __P((struct notifier *, int));
-
-/* Procedures exported from tty.c. */
-void tty_init __P((void));
-
-/* Procedures exported from utils.c. */
-void log_packet __P((u_char *, int, char *, int));
- /* Format a packet and log it with syslog */
-void print_string __P((char *, int, void (*) (void *, char *, ...),
- void *)); /* Format a string for output */
-int slprintf __P((char *, int, char *, ...)); /* sprintf++ */
-int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */
-size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */
-size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */
-void dbglog __P((char *, ...)); /* log a debug message */
-void info __P((char *, ...)); /* log an informational message */
-void notice __P((char *, ...)); /* log a notice-level message */
-void warn __P((char *, ...)); /* log a warning message */
-void error __P((char *, ...)); /* log an error message */
-void fatal __P((char *, ...)); /* log an error message and die(1) */
-void init_pr_log __P((char *, int)); /* initialize for using pr_log */
-void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */
-void end_pr_log __P((void)); /* finish up after using pr_log */
-
-/* Procedures exported from auth.c */
-void link_required __P((int)); /* we are starting to use the link */
-void link_terminated __P((int)); /* we are finished with the link */
-void link_down __P((int)); /* the LCP layer has left the Opened state */
-void link_established __P((int)); /* the link is up; authenticate now */
-void start_networks __P((void)); /* start all the network control protos */
-void np_up __P((int, int)); /* a network protocol has come up */
-void np_down __P((int, int)); /* a network protocol has gone down */
-void np_finished __P((int, int)); /* a network protocol no longer needs link */
-void auth_peer_fail __P((int, int));
- /* peer failed to authenticate itself */
-void auth_peer_success __P((int, int, char *, int));
- /* peer successfully authenticated itself */
-void auth_withpeer_fail __P((int, int));
- /* we failed to authenticate ourselves */
-void auth_withpeer_success __P((int, int));
- /* we successfully authenticated ourselves */
-void auth_check_options __P((void));
- /* check authentication options supplied */
-void auth_reset __P((int)); /* check what secrets we have */
-int check_passwd __P((int, char *, int, char *, int, char **));
- /* Check peer-supplied username/password */
-int get_secret __P((int, char *, char *, char *, int *, int));
- /* get "secret" for chap */
-int auth_ip_addr __P((int, u_int32_t));
- /* check if IP address is authorized */
-int bad_ip_adrs __P((u_int32_t));
- /* check if IP address is unreasonable */
-
-/* Procedures exported from demand.c */
-void demand_conf __P((void)); /* config interface(s) for demand-dial */
-void demand_block __P((void)); /* set all NPs to queue up packets */
-void demand_unblock __P((void)); /* set all NPs to pass packets */
-void demand_discard __P((void)); /* set all NPs to discard packets */
-void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
-int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
-int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
-
-/* Procedures exported from multilink.c */
-void mp_check_options __P((void)); /* Check multilink-related options */
-int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */
-char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */
-int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
-
-/* Procedures exported from sys-*.c */
-void sys_init __P((void)); /* Do system-dependent initialization */
-void sys_cleanup __P((void)); /* Restore system state before exiting */
-int sys_check_options __P((void)); /* Check options specified */
-void sys_close __P((void)); /* Clean up in a child before execing */
-int ppp_available __P((void)); /* Test whether ppp kernel support exists */
-int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
-int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
-int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */
-void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */
-void make_new_bundle __P((int, int, int, int)); /* Create new bundle */
-int bundle_attach __P((int)); /* Attach link to existing bundle */
-void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */
-void clean_check __P((void)); /* Check if line was 8-bit clean */
-void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */
-void restore_tty __P((int)); /* Restore port's original parameters */
-void setdtr __P((int, int)); /* Raise or lower port's DTR line */
-void output __P((int, u_char *, int)); /* Output a PPP packet */
-void wait_input __P((struct timeval *));
- /* Wait for input, with timeout */
-void add_fd __P((int)); /* Add fd to set to wait for */
-void remove_fd __P((int)); /* Remove fd from set to wait for */
-int read_packet __P((u_char *)); /* Read PPP packet */
-int get_loop_output __P((void)); /* Read pkts from loopback */
-void tty_send_config __P((int, u_int32_t, int, int));
- /* Configure i/f transmit parameters */
-void tty_set_xaccm __P((ext_accm));
- /* Set extended transmit ACCM */
-void tty_recv_config __P((int, u_int32_t, int, int));
- /* Configure i/f receive parameters */
-int ccp_test __P((int, u_char *, int, int));
- /* Test support for compression scheme */
-void ccp_flags_set __P((int, int, int));
- /* Set kernel CCP state */
-int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */
-int get_idle_time __P((int, struct ppp_idle *));
- /* Find out how long link has been idle */
-int get_ppp_stats __P((int, struct pppd_stats *));
- /* Return link statistics */
-void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */
-int sifvjcomp __P((int, int, int, int));
- /* Configure VJ TCP header compression */
-int sifup __P((int)); /* Configure i/f up for one protocol */
-int sifnpmode __P((int u, int proto, enum NPmode mode));
- /* Set mode for handling packets for proto */
-int sifdown __P((int)); /* Configure i/f down for one protocol */
-int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t));
- /* Configure IPv4 addresses for i/f */
-int cifaddr __P((int, u_int32_t, u_int32_t));
- /* Reset i/f IP addresses */
-#ifdef INET6
-int sif6addr __P((int, eui64_t, eui64_t));
- /* Configure IPv6 addresses for i/f */
-int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
-#endif
-int sifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Create default route through i/f */
-int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
-int sifproxyarp __P((int, u_int32_t));
- /* Add proxy ARP entry for peer */
-int cifproxyarp __P((int, u_int32_t));
- /* Delete proxy ARP entry for peer */
-u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */
-int lock __P((char *)); /* Create lock file for device */
-int relock __P((int)); /* Rewrite lock file with new pid */
-void unlock __P((void)); /* Delete previously-created lock file */
-void logwtmp __P((const char *, const char *, const char *));
- /* Write entry to wtmp file */
-int get_host_seed __P((void)); /* Get host-dependent random number seed */
-int have_route_to __P((u_int32_t)); /* Check if route to addr exists */
-#ifdef PPP_FILTER
-int set_filters __P((struct bpf_program *pass, struct bpf_program *active));
- /* Set filter programs in kernel */
-#endif
-#ifdef IPX_CHANGE
-int sipxfaddr __P((int, unsigned long, unsigned char *));
-int cipxfaddr __P((int));
-#endif
-int get_if_hwaddr __P((u_char *addr, char *name));
-char *get_first_ethernet __P((void));
-
-/* Procedures exported from options.c */
-int parse_args __P((int argc, char **argv));
- /* Parse options from arguments given */
-int options_from_file __P((char *filename, int must_exist, int check_prot,
- int privileged));
- /* Parse options from an options file */
-int options_from_user __P((void)); /* Parse options from user's .ppprc */
-int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */
-int options_from_list __P((struct wordlist *, int privileged));
- /* Parse options from a wordlist */
-int getword __P((FILE *f, char *word, int *newlinep, char *filename));
- /* Read a word from a file */
-void option_error __P((char *fmt, ...));
- /* Print an error message about an option */
-int int_option __P((char *, int *));
- /* Simplified number_option for decimal ints */
-void add_options __P((option_t *)); /* Add extra options */
-void check_options __P((void)); /* check values after all options parsed */
-int override_value __P((const char *, int, const char *));
- /* override value if permitted by priority */
-void print_options __P((void (*) __P((void *, char *, ...)), void *));
- /* print out values of all options */
-
-int parse_dotted_ip __P((char *, u_int32_t *));
-
-/*
- * Hooks to enable plugins to change various things.
- */
-extern int (*new_phase_hook) __P((int));
-extern int (*idle_time_hook) __P((struct ppp_idle *));
-extern int (*holdoff_hook) __P((void));
-extern int (*pap_check_hook) __P((void));
-extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
- struct wordlist **paddrs,
- struct wordlist **popts));
-extern void (*pap_logout_hook) __P((void));
-extern int (*pap_passwd_hook) __P((char *user, char *passwd));
-extern void (*ip_up_hook) __P((void));
-extern void (*ip_down_hook) __P((void));
-extern void (*ip_choose_hook) __P((u_int32_t *));
-
-/*
- * Inline versions of get/put char/short/long.
- * Pointer is advanced; we assume that both arguments
- * are lvalues and will already be in registers.
- * cp MUST be u_char *.
- */
-#define GETCHAR(c, cp) { \
- (c) = *(cp)++; \
-}
-#define PUTCHAR(c, cp) { \
- *(cp)++ = (u_char) (c); \
-}
-
-
-#define GETSHORT(s, cp) { \
- (s) = *(cp)++ << 8; \
- (s) |= *(cp)++; \
-}
-#define PUTSHORT(s, cp) { \
- *(cp)++ = (u_char) ((s) >> 8); \
- *(cp)++ = (u_char) (s); \
-}
-
-#define GETLONG(l, cp) { \
- (l) = *(cp)++ << 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; \
-}
-#define PUTLONG(l, cp) { \
- *(cp)++ = (u_char) ((l) >> 24); \
- *(cp)++ = (u_char) ((l) >> 16); \
- *(cp)++ = (u_char) ((l) >> 8); \
- *(cp)++ = (u_char) (l); \
-}
-
-#define INCPTR(n, cp) ((cp) += (n))
-#define DECPTR(n, cp) ((cp) -= (n))
-
-/*
- * System dependent definitions for user-level 4.3BSD UNIX implementation.
- */
-
-#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0)
-#define UNTIMEOUT(r, f) untimeout((r), (f))
-
-#define BCOPY(s, d, l) memcpy(d, s, l)
-#define BZERO(s, n) memset(s, 0, n)
-
-#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); }
-
-/*
- * MAKEHEADER - Add Header fields to a packet.
- */
-#define MAKEHEADER(p, t) { \
- PUTCHAR(PPP_ALLSTATIONS, p); \
- PUTCHAR(PPP_UI, p); \
- PUTSHORT(t, p); }
-
-/*
- * Exit status values.
- */
-#define EXIT_OK 0
-#define EXIT_FATAL_ERROR 1
-#define EXIT_OPTION_ERROR 2
-#define EXIT_NOT_ROOT 3
-#define EXIT_NO_KERNEL_SUPPORT 4
-#define EXIT_USER_REQUEST 5
-#define EXIT_LOCK_FAILED 6
-#define EXIT_OPEN_FAILED 7
-#define EXIT_CONNECT_FAILED 8
-#define EXIT_PTYCMD_FAILED 9
-#define EXIT_NEGOTIATION_FAILED 10
-#define EXIT_PEER_AUTH_FAILED 11
-#define EXIT_IDLE_TIMEOUT 12
-#define EXIT_CONNECT_TIME 13
-#define EXIT_CALLBACK 14
-#define EXIT_PEER_DEAD 15
-#define EXIT_HANGUP 16
-#define EXIT_LOOPBACK 17
-#define EXIT_INIT_FAILED 18
-#define EXIT_AUTH_TOPEER_FAILED 19
-
-/*
- * Debug macros. Slightly useful for finding bugs in pppd, not particularly
- * useful for finding out why your connection isn't being established.
- */
-#ifdef DEBUGALL
-#define DEBUGMAIN 1
-#define DEBUGFSM 1
-#define DEBUGLCP 1
-#define DEBUGIPCP 1
-#define DEBUGIPV6CP 1
-#define DEBUGUPAP 1
-#define DEBUGCHAP 1
-#endif
-
-#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
-#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
- || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
- || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
-#define LOG_PPP LOG_LOCAL2
-#else
-#define LOG_PPP LOG_DAEMON
-#endif
-#endif /* LOG_PPP */
-
-#ifdef DEBUGMAIN
-#define MAINDEBUG(x) if (debug) dbglog x
-#else
-#define MAINDEBUG(x)
-#endif
-
-#ifdef DEBUGSYS
-#define SYSDEBUG(x) if (debug) dbglog x
-#else
-#define SYSDEBUG(x)
-#endif
-
-#ifdef DEBUGFSM
-#define FSMDEBUG(x) if (debug) dbglog x
-#else
-#define FSMDEBUG(x)
-#endif
-
-#ifdef DEBUGLCP
-#define LCPDEBUG(x) if (debug) dbglog x
-#else
-#define LCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPCP
-#define IPCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPV6CP
-#define IPV6CPDEBUG(x) if (debug) dbglog x
-#else
-#define IPV6CPDEBUG(x)
-#endif
-
-#ifdef DEBUGUPAP
-#define UPAPDEBUG(x) if (debug) dbglog x
-#else
-#define UPAPDEBUG(x)
-#endif
-
-#ifdef DEBUGCHAP
-#define CHAPDEBUG(x) if (debug) dbglog x
-#else
-#define CHAPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPXCP
-#define IPXCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPXCPDEBUG(x)
-#endif
-
-#ifndef SIGTYPE
-#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE)
-#define SIGTYPE void
-#else
-#define SIGTYPE int
-#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */
-#endif /* SIGTYPE */
-
-#ifndef MIN
-#define MIN(a, b) ((a) < (b)? (a): (b))
-#endif
-#ifndef MAX
-#define MAX(a, b) ((a) > (b)? (a): (b))
-#endif
-
-#endif /* __PPP_H__ */
diff --git a/mdk-stage1/ppp/pppd/sys-linux.c b/mdk-stage1/ppp/pppd/sys-linux.c
deleted file mode 100644
index 3ab92dfba..000000000
--- a/mdk-stage1/ppp/pppd/sys-linux.c
+++ /dev/null
@@ -1,2672 +0,0 @@
-/*
- * sys-linux.c - System-dependent procedures for setting up
- * PPP interfaces on Linux systems
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <sys/sysmacros.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <string.h>
-#include <time.h>
-#include <memory.h>
-#include <utmp.h>
-#include <mntent.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <termios.h>
-#include <unistd.h>
-
-/* This is in netdevice.h. However, this compile will fail miserably if
- you attempt to include netdevice.h because it has so many references
- to __memcpy functions which it should not attempt to do. So, since I
- really don't use it, but it must be defined, define it now. */
-
-#ifndef MAX_ADDR_LEN
-#define MAX_ADDR_LEN 7
-#endif
-
-#if (defined(__GLIBC__) && __GLIBC__ >= 2) || defined(__dietlibc__)
-#include <asm/types.h> /* glibc 2 conflicts with linux/types.h */
-#include <net/if.h>
-#include <net/if_arp.h>
-#include <net/route.h>
-#include <netinet/if_ether.h>
-#else
-#include <linux/types.h>
-#include <linux/if.h>
-#include <linux/if_arp.h>
-#include <linux/route.h>
-#include <linux/if_ether.h>
-#endif
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include <linux/ppp_defs.h>
-#include <linux/if_ppp.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipcp.h"
-
-#ifdef IPX_CHANGE
-#include "ipxcp.h"
-#if __GLIBC__ >= 2 && \
- !(defined(__powerpc__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0)
-#include <netipx/ipx.h>
-#else
-#include <linux/ipx.h>
-#endif
-#endif /* IPX_CHANGE */
-
-#ifdef PPP_FILTER
-#include <net/bpf.h>
-#include <linux/filter.h>
-#endif /* PPP_FILTER */
-
-#ifdef LOCKLIB
-#include <sys/locks.h>
-#endif
-
-#ifdef INET6
-#ifndef _LINUX_IN6_H
-/*
- * This is in linux/include/net/ipv6.h.
- */
-
-struct in6_ifreq {
- struct in6_addr ifr6_addr;
- __u32 ifr6_prefixlen;
- unsigned int ifr6_ifindex;
-};
-#endif
-
-#define IN6_LLADDR_FROM_EUI64(sin6, eui64) do { \
- memset(&sin6.s6_addr, 0, sizeof(struct in6_addr)); \
- sin6.s6_addr16[0] = htons(0xfe80); \
- eui64_copy(eui64, sin6.s6_addr32[2]); \
- } while (0)
-
-#endif /* INET6 */
-
-/* We can get an EIO error on an ioctl if the modem has hung up */
-#define ok_error(num) ((num)==EIO)
-
-static int tty_disc = N_TTY; /* The TTY discipline */
-static int ppp_disc = N_PPP; /* The PPP discpline */
-static int initfdflags = -1; /* Initial file descriptor flags for fd */
-static int ppp_fd = -1; /* fd which is set to PPP discipline */
-static int sock_fd = -1; /* socket for doing interface ioctls */
-static int slave_fd = -1;
-static int master_fd = -1;
-#ifdef INET6
-static int sock6_fd = -1;
-#endif /* INET6 */
-static int ppp_dev_fd = -1; /* fd for /dev/ppp (new style driver) */
-static int chindex; /* channel index (new style driver) */
-
-static fd_set in_fds; /* set of fds that wait_input waits for */
-static int max_in_fd; /* highest fd set in in_fds */
-
-static int has_proxy_arp = 0;
-static int driver_version = 0;
-static int driver_modification = 0;
-static int driver_patch = 0;
-static int driver_is_old = 0;
-static int restore_term = 0; /* 1 => we've munged the terminal */
-static struct termios inittermios; /* Initial TTY termios */
-
-static int new_style_driver = 0;
-
-static char loop_name[20];
-static unsigned char inbuf[512]; /* buffer for chars read from loopback */
-
-static int if_is_up; /* Interface has been marked up */
-static u_int32_t default_route_gateway; /* Gateway for default route added */
-static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
-static char proxy_arp_dev[16]; /* Device for proxy arp entry */
-static u_int32_t our_old_addr; /* for detecting address changes */
-static int dynaddr_set; /* 1 if ip_dynaddr set */
-static int looped; /* 1 if using loop */
-static int link_mtu; /* mtu for the link (not bundle) */
-
-static struct utsname utsname; /* for the kernel version */
-static int kernel_version;
-#define KVERSION(j,n,p) ((j)*1000000 + (n)*1000 + (p))
-
-#define MAX_IFS 100
-
-#define FLAGS_GOOD (IFF_UP | IFF_BROADCAST)
-#define FLAGS_MASK (IFF_UP | IFF_BROADCAST | \
- IFF_POINTOPOINT | IFF_LOOPBACK | IFF_NOARP)
-
-#define SIN_ADDR(x) (((struct sockaddr_in *) (&(x)))->sin_addr.s_addr)
-
-/* Prototypes for procedures local to this file. */
-static int get_flags (int fd);
-static void set_flags (int fd, int flags);
-static int translate_speed (int bps);
-static int baud_rate_of (int speed);
-static void close_route_table (void);
-static int open_route_table (void);
-static int read_route_table (struct rtentry *rt);
-static int defaultroute_exists (struct rtentry *rt);
-static int get_ether_addr (u_int32_t ipaddr, struct sockaddr *hwaddr,
- char *name, int namelen);
-static void decode_version (char *buf, int *version, int *mod, int *patch);
-static int set_kdebugflag(int level);
-static int ppp_registered(void);
-static int make_ppp_unit(void);
-static void restore_loop(void); /* Transfer ppp unit back to loopback */
-
-extern u_char inpacket_buf[]; /* borrowed from main.c */
-
-/*
- * SET_SA_FAMILY - set the sa_family field of a struct sockaddr,
- * if it exists.
- */
-
-#define SET_SA_FAMILY(addr, family) \
- memset ((char *) &(addr), '\0', sizeof(addr)); \
- addr.sa_family = (family);
-
-/*
- * Determine if the PPP connection should still be present.
- */
-
-extern int hungup;
-
-/* new_fd is the fd of a tty */
-static void set_ppp_fd (int new_fd)
-{
- SYSDEBUG ((LOG_DEBUG, "setting ppp_fd to %d\n", new_fd));
- ppp_fd = new_fd;
- if (!new_style_driver)
- ppp_dev_fd = new_fd;
-}
-
-static int still_ppp(void)
-{
- if (new_style_driver)
- return !hungup && ppp_fd >= 0;
- if (!hungup || ppp_fd == slave_fd)
- return 1;
- if (slave_fd >= 0) {
- set_ppp_fd(slave_fd);
- return 1;
- }
- return 0;
-}
-
-/********************************************************************
- *
- * Functions to read and set the flags value in the device driver
- */
-
-static int get_flags (int fd)
-{
- int flags;
-
- if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &flags) < 0) {
- if ( ok_error (errno) )
- flags = 0;
- else
- fatal("ioctl(PPPIOCGFLAGS): %m");
- }
-
- SYSDEBUG ((LOG_DEBUG, "get flags = %x\n", flags));
- return flags;
-}
-
-/********************************************************************/
-
-static void set_flags (int fd, int flags)
-{
- SYSDEBUG ((LOG_DEBUG, "set flags = %x\n", flags));
-
- if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &flags) < 0) {
- if (! ok_error (errno) )
- fatal("ioctl(PPPIOCSFLAGS, %x): %m", flags, errno);
- }
-}
-
-/********************************************************************
- *
- * sys_init - System-dependent initialization.
- */
-
-void sys_init(void)
-{
- int flags;
-
- if (new_style_driver) {
- ppp_dev_fd = open("/dev/ppp", O_RDWR);
- if (ppp_dev_fd < 0)
- fatal("Couldn't open /dev/ppp: %m");
- flags = fcntl(ppp_dev_fd, F_GETFL);
- if (flags == -1
- || fcntl(ppp_dev_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("Couldn't set /dev/ppp to nonblock: %m");
- }
-
- /* Get an internet socket for doing socket ioctls. */
- sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock_fd < 0)
- fatal("Couldn't create IP socket: %m(%d)", errno);
-
-#ifdef INET6
- sock6_fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (sock6_fd < 0)
- sock6_fd = -errno; /* save errno for later */
-#endif
-
- FD_ZERO(&in_fds);
- max_in_fd = 0;
-}
-
-/********************************************************************
- *
- * sys_cleanup - restore any system state we modified before exiting:
- * mark the interface down, delete default route and/or proxy arp entry.
- * This shouldn't call die() because it's called from die().
- */
-
-void sys_cleanup(void)
-{
-/*
- * Take down the device
- */
- if (if_is_up) {
- if_is_up = 0;
- sifdown(0);
- }
-/*
- * Delete any routes through the device.
- */
- if (default_route_gateway != 0)
- cifdefaultroute(0, 0, default_route_gateway);
-
- if (has_proxy_arp)
- cifproxyarp(0, proxy_arp_addr);
-}
-
-/********************************************************************
- *
- * sys_close - Clean up in a child process before execing.
- */
-void
-sys_close(void)
-{
- if (new_style_driver)
- close(ppp_dev_fd);
- if (sock_fd >= 0)
- close(sock_fd);
- if (slave_fd >= 0)
- close(slave_fd);
- if (master_fd >= 0)
- close(master_fd);
- closelog();
-}
-
-/********************************************************************
- *
- * set_kdebugflag - Define the debugging level for the kernel
- */
-
-static int set_kdebugflag (int requested_level)
-{
- if (new_style_driver && ifunit < 0)
- return 1;
- if (ioctl(ppp_dev_fd, PPPIOCSDEBUG, &requested_level) < 0) {
- if ( ! ok_error (errno) )
- error("ioctl(PPPIOCSDEBUG): %m");
- return (0);
- }
- SYSDEBUG ((LOG_INFO, "set kernel debugging level to %d",
- requested_level));
- return (1);
-}
-
-/********************************************************************
- *
- * tty_establish_ppp - Turn the serial port into a ppp interface.
- */
-
-int tty_establish_ppp (int tty_fd)
-{
- int x;
- int fd = -1;
-
-/*
- * Ensure that the tty device is in exclusive mode.
- */
- if (ioctl(tty_fd, TIOCEXCL, 0) < 0) {
- if ( ! ok_error ( errno ))
- warn("Couldn't make tty exclusive: %m");
- }
-/*
- * Demand mode - prime the old ppp device to relinquish the unit.
- */
- if (!new_style_driver && looped
- && ioctl(slave_fd, PPPIOCXFERUNIT, 0) < 0) {
- error("ioctl(transfer ppp unit): %m");
- return -1;
- }
-/*
- * Set the current tty to the PPP discpline
- */
-
-#ifndef N_SYNC_PPP
-#define N_SYNC_PPP 14
-#endif
- ppp_disc = (new_style_driver && sync_serial)? N_SYNC_PPP: N_PPP;
- if (ioctl(tty_fd, TIOCSETD, &ppp_disc) < 0) {
- if ( ! ok_error (errno) ) {
- error("Couldn't set tty to PPP discipline: %m");
- return -1;
- }
- }
-
- if (new_style_driver) {
- /* Open another instance of /dev/ppp and connect the channel to it */
- int flags;
-
- if (ioctl(tty_fd, PPPIOCGCHAN, &chindex) == -1) {
- error("Couldn't get channel number: %m");
- goto err;
- }
- dbglog("using channel %d", chindex);
- fd = open("/dev/ppp", O_RDWR);
- if (fd < 0) {
- error("Couldn't reopen /dev/ppp: %m");
- goto err;
- }
- if (ioctl(fd, PPPIOCATTCHAN, &chindex) < 0) {
- error("Couldn't attach to channel %d: %m", chindex);
- goto err_close;
- }
- flags = fcntl(fd, F_GETFL);
- if (flags == -1 || fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("Couldn't set /dev/ppp (channel) to nonblock: %m");
- set_ppp_fd(fd);
-
- if (!looped)
- ifunit = -1;
- if (!looped && !multilink) {
- /*
- * Create a new PPP unit.
- */
- if (make_ppp_unit() < 0)
- goto err_close;
- }
-
- if (looped)
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) & ~SC_LOOP_TRAFFIC);
-
- if (!multilink) {
- add_fd(ppp_dev_fd);
- if (ioctl(fd, PPPIOCCONNECT, &ifunit) < 0) {
- error("Couldn't attach to PPP unit %d: %m", ifunit);
- goto err_close;
- }
- }
-
- } else {
- /*
- * Old-style driver: find out which interface we were given.
- */
- set_ppp_fd (tty_fd);
- if (ioctl(tty_fd, PPPIOCGUNIT, &x) < 0) {
- if (ok_error (errno))
- goto err;
- fatal("ioctl(PPPIOCGUNIT): %m(%d)", errno);
- }
- /* Check that we got the same unit again. */
- if (looped && x != ifunit)
- fatal("transfer_ppp failed: wanted unit %d, got %d", ifunit, x);
- ifunit = x;
-
- /*
- * Fetch the initial file flags and reset blocking mode on the file.
- */
- initfdflags = fcntl(tty_fd, F_GETFL);
- if (initfdflags == -1 ||
- fcntl(tty_fd, F_SETFL, initfdflags | O_NONBLOCK) == -1) {
- if ( ! ok_error (errno))
- warn("Couldn't set device to non-blocking mode: %m");
- }
- }
-
- looped = 0;
-
- /*
- * Enable debug in the driver if requested.
- */
- if (!looped)
- set_kdebugflag (kdebugflag);
-
-#define SC_RCVB (SC_RCV_B7_0 | SC_RCV_B7_1 | SC_RCV_EVNP | SC_RCV_ODDP)
-#define SC_LOGB (SC_DEBUG | SC_LOG_INPKT | SC_LOG_OUTPKT | SC_LOG_RAWIN \
- | SC_LOG_FLUSH)
-
- set_flags(ppp_fd, ((get_flags(ppp_fd) & ~(SC_RCVB | SC_LOGB))
- | ((kdebugflag * SC_DEBUG) & SC_LOGB)));
-
- SYSDEBUG ((LOG_NOTICE, "Using version %d.%d.%d of PPP driver",
- driver_version, driver_modification, driver_patch));
-
- return ppp_fd;
-
- err_close:
- close(fd);
- err:
- if (ioctl(tty_fd, TIOCSETD, &tty_disc) < 0 && !ok_error(errno))
- warn("Couldn't reset tty to normal line discipline: %m");
- return -1;
-}
-
-/********************************************************************
- *
- * tty_disestablish_ppp - Restore the serial port to normal operation,
- * and reconnect the ppp unit to the loopback if in demand mode.
- * This shouldn't call die() because it's called from die().
- */
-
-void tty_disestablish_ppp(int tty_fd)
-{
- if (demand)
- restore_loop();
- if (!hungup) {
-/*
- * Flush the tty output buffer so that the TIOCSETD doesn't hang.
- */
- if (tcflush(tty_fd, TCIOFLUSH) < 0)
- warn("tcflush failed: %m");
-/*
- * Restore the previous line discipline
- */
- if (ioctl(tty_fd, TIOCSETD, &tty_disc) < 0) {
- if ( ! ok_error (errno))
- error("ioctl(TIOCSETD, N_TTY): %m");
- }
-
- if (ioctl(tty_fd, TIOCNXCL, 0) < 0) {
- if ( ! ok_error (errno))
- warn("ioctl(TIOCNXCL): %m(%d)", errno);
- }
-
- /* Reset non-blocking mode on fd. */
- if (initfdflags != -1 && fcntl(tty_fd, F_SETFL, initfdflags) < 0) {
- if ( ! ok_error (errno))
- warn("Couldn't restore device fd flags: %m");
- }
- }
- initfdflags = -1;
-
- if (new_style_driver) {
- close(ppp_fd);
- ppp_fd = -1;
- if (!looped && ifunit >= 0 && ioctl(ppp_dev_fd, PPPIOCDETACH) < 0)
- error("Couldn't release PPP unit: %m");
- if (!multilink)
- remove_fd(ppp_dev_fd);
- }
-}
-
-/*
- * make_ppp_unit - make a new ppp unit for ppp_dev_fd.
- * Assumes new_style_driver.
- */
-static int make_ppp_unit()
-{
- int x;
-
- ifunit = req_unit;
- x = ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
- if (x < 0 && req_unit >= 0 && errno == EEXIST) {
- warn("Couldn't allocate PPP unit %d as it is already in use");
- ifunit = -1;
- x = ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
- }
- if (x < 0)
- error("Couldn't create new ppp unit: %m");
- return x;
-}
-
-/*
- * cfg_bundle - configure the existing bundle.
- * Used in demand mode.
- */
-void cfg_bundle(int mrru, int mtru, int rssn, int tssn)
-{
- int flags;
-
- if (!new_style_driver)
- return;
-
- /* set the mrru, mtu and flags */
- if (ioctl(ppp_dev_fd, PPPIOCSMRRU, &mrru) < 0)
- error("Couldn't set MRRU: %m");
- flags = get_flags(ppp_dev_fd);
- flags &= ~(SC_MP_SHORTSEQ | SC_MP_XSHORTSEQ);
- flags |= (rssn? SC_MP_SHORTSEQ: 0) | (tssn? SC_MP_XSHORTSEQ: 0)
- | (mrru? SC_MULTILINK: 0);
-
- set_flags(ppp_dev_fd, flags);
-
- /* connect up the channel */
- if (ioctl(ppp_fd, PPPIOCCONNECT, &ifunit) < 0)
- fatal("Couldn't attach to PPP unit %d: %m", ifunit);
- add_fd(ppp_dev_fd);
-}
-
-/*
- * make_new_bundle - create a new PPP unit (i.e. a bundle)
- * and connect our channel to it. This should only get called
- * if `multilink' was set at the time establish_ppp was called.
- * In demand mode this uses our existing bundle instead of making
- * a new one.
- */
-void make_new_bundle(int mrru, int mtru, int rssn, int tssn)
-{
- if (!new_style_driver)
- return;
-
- /* make us a ppp unit */
- if (make_ppp_unit() < 0)
- die(1);
-
- /* set the mrru and flags */
- cfg_bundle(mrru, mtru, rssn, tssn);
-}
-
-/*
- * bundle_attach - attach our link to a given PPP unit.
- * We assume the unit is controlled by another pppd.
- */
-int bundle_attach(int ifnum)
-{
- if (!new_style_driver)
- return -1;
-
- if (ioctl(ppp_dev_fd, PPPIOCATTACH, &ifnum) < 0) {
- if (errno == ENXIO)
- return 0; /* doesn't still exist */
- fatal("Couldn't attach to interface unit %d: %m\n", ifnum);
- }
- if (ioctl(ppp_fd, PPPIOCCONNECT, &ifnum) < 0)
- fatal("Couldn't connect to interface unit %d: %m", ifnum);
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) | SC_MULTILINK);
-
- ifunit = ifnum;
- return 1;
-}
-
-/********************************************************************
- *
- * clean_check - Fetch the flags for the device and generate
- * appropriate error messages.
- */
-void clean_check(void)
-{
- int x;
- char *s;
-
- if (still_ppp()) {
- if (ioctl(ppp_fd, PPPIOCGFLAGS, (caddr_t) &x) == 0) {
- s = NULL;
- switch (~x & (SC_RCV_B7_0|SC_RCV_B7_1|SC_RCV_EVNP|SC_RCV_ODDP)) {
- case SC_RCV_B7_0:
- s = "all had bit 7 set to 1";
- break;
-
- case SC_RCV_B7_1:
- s = "all had bit 7 set to 0";
- break;
-
- case SC_RCV_EVNP:
- s = "all had odd parity";
- break;
-
- case SC_RCV_ODDP:
- s = "all had even parity";
- break;
- }
-
- if (s != NULL) {
- warn("Receive serial link is not 8-bit clean:");
- warn("Problem: %s", s);
- }
- }
- }
-}
-
-
-/*
- * List of valid speeds.
- */
-
-struct speed {
- int speed_int, speed_val;
-} speeds[] = {
-#ifdef B50
- { 50, B50 },
-#endif
-#ifdef B75
- { 75, B75 },
-#endif
-#ifdef B110
- { 110, B110 },
-#endif
-#ifdef B134
- { 134, B134 },
-#endif
-#ifdef B150
- { 150, B150 },
-#endif
-#ifdef B200
- { 200, B200 },
-#endif
-#ifdef B300
- { 300, B300 },
-#endif
-#ifdef B600
- { 600, B600 },
-#endif
-#ifdef B1200
- { 1200, B1200 },
-#endif
-#ifdef B1800
- { 1800, B1800 },
-#endif
-#ifdef B2000
- { 2000, B2000 },
-#endif
-#ifdef B2400
- { 2400, B2400 },
-#endif
-#ifdef B3600
- { 3600, B3600 },
-#endif
-#ifdef B4800
- { 4800, B4800 },
-#endif
-#ifdef B7200
- { 7200, B7200 },
-#endif
-#ifdef B9600
- { 9600, B9600 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B76800
- { 76800, B76800 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
-#ifdef EXTA
- { 19200, EXTA },
-#endif
-#ifdef EXTB
- { 38400, EXTB },
-#endif
-#ifdef B230400
- { 230400, B230400 },
-#endif
-#ifdef B460800
- { 460800, B460800 },
-#endif
-#ifdef B921600
- { 921600, B921600 },
-#endif
- { 0, 0 }
-};
-
-/********************************************************************
- *
- * Translate from bits/second to a speed_t.
- */
-
-static int translate_speed (int bps)
-{
- struct speed *speedp;
-
- if (bps != 0) {
- for (speedp = speeds; speedp->speed_int; speedp++) {
- if (bps == speedp->speed_int)
- return speedp->speed_val;
- }
- warn("speed %d not supported", bps);
- }
- return 0;
-}
-
-/********************************************************************
- *
- * Translate from a speed_t to bits/second.
- */
-
-static int baud_rate_of (int speed)
-{
- struct speed *speedp;
-
- if (speed != 0) {
- for (speedp = speeds; speedp->speed_int; speedp++) {
- if (speed == speedp->speed_val)
- return speedp->speed_int;
- }
- }
- return 0;
-}
-
-/********************************************************************
- *
- * set_up_tty: Set up the serial port on `fd' for 8 bits, no parity,
- * at the requested speed, etc. If `local' is true, set CLOCAL
- * regardless of whether the modem option was specified.
- */
-
-void set_up_tty(int tty_fd, int local)
-{
- int speed;
- struct termios tios;
-
- setdtr(tty_fd, 1);
- if (tcgetattr(tty_fd, &tios) < 0) {
- if (!ok_error(errno))
- fatal("tcgetattr: %m(%d)", errno);
- return;
- }
-
- if (!restore_term)
- inittermios = tios;
-
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
- tios.c_cflag |= CS8 | CREAD | HUPCL;
-
- tios.c_iflag = IGNBRK | IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- tios.c_cc[VMIN] = 1;
- tios.c_cc[VTIME] = 0;
-
- if (local || !modem)
- tios.c_cflag ^= (CLOCAL | HUPCL);
-
- switch (crtscts) {
- case 1:
- tios.c_cflag |= CRTSCTS;
- break;
-
- case -2:
- tios.c_iflag |= IXON | IXOFF;
- tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */
- tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */
- break;
-
- case -1:
- tios.c_cflag &= ~CRTSCTS;
- break;
-
- default:
- break;
- }
-
- speed = translate_speed(inspeed);
- if (speed) {
- cfsetospeed (&tios, speed);
- cfsetispeed (&tios, speed);
- }
-/*
- * We can't proceed if the serial port speed is B0,
- * since that implies that the serial port is disabled.
- */
- else {
- speed = cfgetospeed(&tios);
- if (speed == B0)
- fatal("Baud rate for %s is 0; need explicit baud rate", devnam);
- }
-
- if (tcsetattr(tty_fd, TCSAFLUSH, &tios) < 0)
- if (!ok_error(errno))
- fatal("tcsetattr: %m");
-
- baud_rate = baud_rate_of(speed);
- restore_term = 1;
-}
-
-/********************************************************************
- *
- * setdtr - control the DTR line on the serial port.
- * This is called from die(), so it shouldn't call die().
- */
-
-void setdtr (int tty_fd, int on)
-{
- int modembits = TIOCM_DTR;
-
- ioctl(tty_fd, (on ? TIOCMBIS : TIOCMBIC), &modembits);
-}
-
-/********************************************************************
- *
- * restore_tty - restore the terminal to the saved settings.
- */
-
-void restore_tty (int tty_fd)
-{
- if (restore_term) {
- restore_term = 0;
-/*
- * Turn off echoing, because otherwise we can get into
- * a loop with the tty and the modem echoing to each other.
- * We presume we are the sole user of this tty device, so
- * when we close it, it will revert to its defaults anyway.
- */
- if (!default_device)
- inittermios.c_lflag &= ~(ECHO | ECHONL);
-
- if (tcsetattr(tty_fd, TCSAFLUSH, &inittermios) < 0) {
- if (! ok_error (errno))
- warn("tcsetattr: %m");
- }
- }
-}
-
-/********************************************************************
- *
- * output - Output PPP packet.
- */
-
-void output (int unit, unsigned char *p, int len)
-{
- int fd = ppp_fd;
- int proto;
-
- if (debug)
- dbglog("sent %P", p, len);
-
- if (len < PPP_HDRLEN)
- return;
- if (new_style_driver) {
- p += 2;
- len -= 2;
- proto = (p[0] << 8) + p[1];
- if (ifunit >= 0 && !(proto >= 0xc000 || proto == PPP_CCPFRAG))
- fd = ppp_dev_fd;
- }
- if (write(fd, p, len) < 0) {
- if (errno == EWOULDBLOCK || errno == ENOBUFS
- || errno == ENXIO || errno == EIO || errno == EINTR)
- warn("write: warning: %m (%d)", errno);
- else
- error("write: %m (%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * wait_input - wait until there is data available,
- * for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-
-void wait_input(struct timeval *timo)
-{
- fd_set ready, exc;
- int n;
-
- ready = in_fds;
- exc = in_fds;
- n = select(max_in_fd + 1, &ready, NULL, &exc, timo);
- if (n < 0 && errno != EINTR)
- fatal("select: %m(%d)", errno);
-}
-
-/*
- * add_fd - add an fd to the set that wait_input waits for.
- */
-void add_fd(int fd)
-{
- FD_SET(fd, &in_fds);
- if (fd > max_in_fd)
- max_in_fd = fd;
-}
-
-/*
- * remove_fd - remove an fd from the set that wait_input waits for.
- */
-void remove_fd(int fd)
-{
- FD_CLR(fd, &in_fds);
-}
-
-
-/********************************************************************
- *
- * read_packet - get a PPP packet from the serial device.
- */
-
-int read_packet (unsigned char *buf)
-{
- int len, nr;
-
- len = PPP_MRU + PPP_HDRLEN;
- if (new_style_driver) {
- *buf++ = PPP_ALLSTATIONS;
- *buf++ = PPP_UI;
- len -= 2;
- }
- nr = -1;
- if (ppp_fd >= 0) {
- nr = read(ppp_fd, buf, len);
- if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR)
- error("read: %m");
- if (nr < 0 && errno == ENXIO)
- return 0;
- }
- if (nr < 0 && new_style_driver && ifunit >= 0) {
- /* N.B. we read ppp_fd first since LCP packets come in there. */
- nr = read(ppp_dev_fd, buf, len);
- if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR)
- error("read /dev/ppp: %m");
- if (nr < 0 && errno == ENXIO)
- return 0;
- }
- return (new_style_driver && nr > 0)? nr+2: nr;
-}
-
-/********************************************************************
- *
- * get_loop_output - get outgoing packets from the ppp device,
- * and detect when we want to bring the real link up.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- */
-int
-get_loop_output(void)
-{
- int rv = 0;
- int n;
-
- if (new_style_driver) {
- while ((n = read_packet(inpacket_buf)) > 0)
- if (loop_frame(inpacket_buf, n))
- rv = 1;
- return rv;
- }
-
- while ((n = read(master_fd, inbuf, sizeof(inbuf))) > 0)
- if (loop_chars(inbuf, n))
- rv = 1;
-
- if (n == 0)
- fatal("eof on loopback");
-
- if (errno != EWOULDBLOCK)
- fatal("read from loopback: %m(%d)", errno);
-
- return rv;
-}
-
-/*
- * netif_set_mtu - set the MTU on the PPP network interface.
- */
-void
-netif_set_mtu(int unit, int mtu)
-{
- struct ifreq ifr;
-
- SYSDEBUG ((LOG_DEBUG, "netif_set_mtu: mtu = %d\n", mtu));
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- ifr.ifr_mtu = mtu;
-
- if (ifunit >= 0 && ioctl(sock_fd, SIOCSIFMTU, (caddr_t) &ifr) < 0)
- fatal("ioctl(SIOCSIFMTU): %m");
-}
-
-/********************************************************************
- *
- * tty_send_config - configure the transmit characteristics of
- * the ppp interface.
- */
-
-void tty_send_config (int mtu,u_int32_t asyncmap,int pcomp,int accomp)
-{
- u_int x;
-
-/*
- * Set the asyncmap and other parameters for the ppp device
- */
- if (!still_ppp())
- return;
- link_mtu = mtu;
- SYSDEBUG ((LOG_DEBUG, "send_config: asyncmap = %lx\n", asyncmap));
- if (ioctl(ppp_fd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) {
- if (!ok_error(errno))
- fatal("ioctl(PPPIOCSASYNCMAP): %m(%d)", errno);
- return;
- }
-
- x = get_flags(ppp_fd);
- x = pcomp ? x | SC_COMP_PROT : x & ~SC_COMP_PROT;
- x = accomp ? x | SC_COMP_AC : x & ~SC_COMP_AC;
- x = sync_serial ? x | SC_SYNC : x & ~SC_SYNC;
- set_flags(ppp_fd, x);
-}
-
-/********************************************************************
- *
- * tty_set_xaccm - set the extended transmit ACCM for the interface.
- */
-
-void tty_set_xaccm (ext_accm accm)
-{
- SYSDEBUG ((LOG_DEBUG, "set_xaccm: %08lx %08lx %08lx %08lx\n",
- accm[0], accm[1], accm[2], accm[3]));
-
- if (!still_ppp())
- return;
- if (ioctl(ppp_fd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) {
- if ( ! ok_error (errno))
- warn("ioctl(set extended ACCM): %m(%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * tty_recv_config - configure the receive-side characteristics of
- * the ppp interface.
- */
-
-void tty_recv_config (int mru,u_int32_t asyncmap,int pcomp,int accomp)
-{
- SYSDEBUG ((LOG_DEBUG, "recv_config: mru = %d\n", mru));
-/*
- * If we were called because the link has gone down then there is nothing
- * which may be done. Just return without incident.
- */
- if (!still_ppp())
- return;
-/*
- * Set the receiver parameters
- */
- if (ioctl(ppp_fd, PPPIOCSMRU, (caddr_t) &mru) < 0) {
- if ( ! ok_error (errno))
- error("ioctl(PPPIOCSMRU): %m(%d)", errno);
- }
- if (new_style_driver && ifunit >= 0
- && ioctl(ppp_dev_fd, PPPIOCSMRU, (caddr_t) &mru) < 0)
- error("Couldn't set MRU in generic PPP layer: %m");
-
- SYSDEBUG ((LOG_DEBUG, "recv_config: asyncmap = %lx\n", asyncmap));
- if (ioctl(ppp_fd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) {
- if (!ok_error(errno))
- error("ioctl(PPPIOCSRASYNCMAP): %m(%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * ccp_test - ask kernel whether a given compression method
- * is acceptable for use.
- */
-
-int ccp_test (int unit, u_char *opt_ptr, int opt_len, int for_transmit)
-{
- struct ppp_option_data data;
-
- memset (&data, '\0', sizeof (data));
- data.ptr = opt_ptr;
- data.length = opt_len;
- data.transmit = for_transmit;
-
- if (ioctl(ppp_dev_fd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0)
- return 1;
-
- return (errno == ENOBUFS)? 0: -1;
-}
-
-/********************************************************************
- *
- * ccp_flags_set - inform kernel about the current state of CCP.
- */
-
-void ccp_flags_set (int unit, int isopen, int isup)
-{
- if (still_ppp()) {
- int x = get_flags(ppp_dev_fd);
- x = isopen? x | SC_CCP_OPEN : x &~ SC_CCP_OPEN;
- x = isup? x | SC_CCP_UP : x &~ SC_CCP_UP;
- set_flags (ppp_dev_fd, x);
- }
-}
-
-#ifdef PPP_FILTER
-/*
- * set_filters - set the active and pass filters in the kernel driver.
- */
-int set_filters(struct bpf_program *pass, struct bpf_program *active)
-{
- struct sock_fprog fp;
-
- fp.len = pass->bf_len;
- fp.filter = (struct sock_filter *) pass->bf_insns;
- if (ioctl(ppp_dev_fd, PPPIOCSPASS, &fp) < 0) {
- if (errno == ENOTTY)
- warn("kernel does not support PPP filtering");
- else
- error("Couldn't set pass-filter in kernel: %m");
- return 0;
- }
- fp.len = active->bf_len;
- fp.filter = (struct sock_filter *) active->bf_insns;
- if (ioctl(ppp_dev_fd, PPPIOCSACTIVE, &fp) < 0) {
- error("Couldn't set active-filter in kernel: %m");
- return 0;
- }
- return 1;
-}
-#endif /* PPP_FILTER */
-
-/********************************************************************
- *
- * get_idle_time - return how long the link has been idle.
- */
-int
-get_idle_time(u, ip)
- int u;
- struct ppp_idle *ip;
-{
- return ioctl(ppp_dev_fd, PPPIOCGIDLE, ip) >= 0;
-}
-
-/********************************************************************
- *
- * get_ppp_stats - return statistics for the link.
- */
-int
-get_ppp_stats(u, stats)
- int u;
- struct pppd_stats *stats;
-{
- struct ifpppstatsreq req;
-
- memset (&req, 0, sizeof (req));
-
- req.stats_ptr = (caddr_t) &req.stats;
- strlcpy(req.ifr__name, ifname, sizeof(req.ifr__name));
- if (ioctl(sock_fd, SIOCGPPPSTATS, &req) < 0) {
- error("Couldn't get PPP statistics: %m");
- return 0;
- }
- stats->bytes_in = req.stats.p.ppp_ibytes;
- stats->bytes_out = req.stats.p.ppp_obytes;
- return 1;
-}
-
-/********************************************************************
- *
- * ccp_fatal_error - returns 1 if decompression was disabled as a
- * result of an error detected after decompression of a packet,
- * 0 otherwise. This is necessary because of patent nonsense.
- */
-
-int ccp_fatal_error (int unit)
-{
- int x = get_flags(ppp_dev_fd);
-
- return x & SC_DC_FERROR;
-}
-
-/********************************************************************
- *
- * path_to_procfs - find the path to the proc file system mount point
- */
-static char proc_path[MAXPATHLEN];
-static int proc_path_len;
-
-static char *path_to_procfs(const char *tail)
-{
- struct mntent *mntent;
- FILE *fp;
-
- if (proc_path_len == 0) {
- /* Default the mount location of /proc */
- strlcpy (proc_path, "/proc", sizeof(proc_path));
- proc_path_len = 5;
- fp = fopen(MOUNTED, "r");
- if (fp != NULL) {
- while ((mntent = getmntent(fp)) != NULL) {
- if (strcmp(mntent->mnt_type, MNTTYPE_IGNORE) == 0)
- continue;
- if (strcmp(mntent->mnt_type, "proc") == 0) {
- strlcpy(proc_path, mntent->mnt_dir, sizeof(proc_path));
- proc_path_len = strlen(proc_path);
- break;
- }
- }
- fclose (fp);
- }
- }
-
- strlcpy(proc_path + proc_path_len, tail,
- sizeof(proc_path) - proc_path_len);
- return proc_path;
-}
-
-/*
- * /proc/net/route parsing stuff.
- */
-#define ROUTE_MAX_COLS 12
-FILE *route_fd = (FILE *) 0;
-static char route_buffer[512];
-static int route_dev_col, route_dest_col, route_gw_col;
-static int route_flags_col, route_mask_col;
-static int route_num_cols;
-
-static int open_route_table (void);
-static void close_route_table (void);
-static int read_route_table (struct rtentry *rt);
-
-/********************************************************************
- *
- * close_route_table - close the interface to the route table
- */
-
-static void close_route_table (void)
-{
- if (route_fd != (FILE *) 0) {
- fclose (route_fd);
- route_fd = (FILE *) 0;
- }
-}
-
-/********************************************************************
- *
- * open_route_table - open the interface to the route table
- */
-static char route_delims[] = " \t\n";
-
-static int open_route_table (void)
-{
- char *path;
-
- close_route_table();
-
- path = path_to_procfs("/net/route");
- route_fd = fopen (path, "r");
- if (route_fd == NULL) {
- error("can't open routing table %s: %m", path);
- return 0;
- }
-
- route_dev_col = 0; /* default to usual columns */
- route_dest_col = 1;
- route_gw_col = 2;
- route_flags_col = 3;
- route_mask_col = 7;
- route_num_cols = 8;
-
- /* parse header line */
- if (fgets(route_buffer, sizeof(route_buffer), route_fd) != 0) {
- char *p = route_buffer, *q;
- int col;
- for (col = 0; col < ROUTE_MAX_COLS; ++col) {
- int used = 1;
- if ((q = strtok(p, route_delims)) == 0)
- break;
- if (strcasecmp(q, "iface") == 0)
- route_dev_col = col;
- else if (strcasecmp(q, "destination") == 0)
- route_dest_col = col;
- else if (strcasecmp(q, "gateway") == 0)
- route_gw_col = col;
- else if (strcasecmp(q, "flags") == 0)
- route_flags_col = col;
- else if (strcasecmp(q, "mask") == 0)
- route_mask_col = col;
- else
- used = 0;
- if (used && col >= route_num_cols)
- route_num_cols = col + 1;
- p = NULL;
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * read_route_table - read the next entry from the route table
- */
-
-static int read_route_table(struct rtentry *rt)
-{
- char *cols[ROUTE_MAX_COLS], *p;
- int col;
-
- memset (rt, '\0', sizeof (struct rtentry));
-
- if (fgets (route_buffer, sizeof (route_buffer), route_fd) == (char *) 0)
- return 0;
-
- p = route_buffer;
- for (col = 0; col < route_num_cols; ++col) {
- cols[col] = strtok(p, route_delims);
- if (cols[col] == NULL)
- return 0; /* didn't get enough columns */
- p = NULL;
- }
-
- SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
- SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
- SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-
- rt->rt_flags = (short) strtoul(cols[route_flags_col], NULL, 16);
- rt->rt_dev = cols[route_dev_col];
-
- return 1;
-}
-
-/********************************************************************
- *
- * defaultroute_exists - determine if there is a default route
- */
-
-static int defaultroute_exists (struct rtentry *rt)
-{
- int result = 0;
-
- if (!open_route_table())
- return 0;
-
- while (read_route_table(rt) != 0) {
- if ((rt->rt_flags & RTF_UP) == 0)
- continue;
-
- if (kernel_version > KVERSION(2,1,0) && SIN_ADDR(rt->rt_genmask) != 0)
- continue;
- if (SIN_ADDR(rt->rt_dst) == 0L) {
- result = 1;
- break;
- }
- }
-
- close_route_table();
- return result;
-}
-
-/*
- * have_route_to - determine if the system has any route to
- * a given IP address. `addr' is in network byte order.
- * Return value is 1 if yes, 0 if no, -1 if don't know.
- * For demand mode to work properly, we have to ignore routes
- * through our own interface.
- */
-int have_route_to(u_int32_t addr)
-{
- struct rtentry rt;
- int result = 0;
-
- if (!open_route_table())
- return -1; /* don't know */
-
- while (read_route_table(&rt)) {
- if ((rt.rt_flags & RTF_UP) == 0 || strcmp(rt.rt_dev, ifname) == 0)
- continue;
- if ((addr & SIN_ADDR(rt.rt_genmask)) == SIN_ADDR(rt.rt_dst)) {
- result = 1;
- break;
- }
- }
-
- close_route_table();
- return result;
-}
-
-/********************************************************************
- *
- * sifdefaultroute - assign a default route through the address given.
- */
-
-int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-{
- struct rtentry rt;
-
- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
- u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
-
- if (old_gateway != gateway)
- error("not replacing existing default route to %s [%I]",
- rt.rt_dev, old_gateway);
- return 0;
- }
-
- memset (&rt, '\0', sizeof (rt));
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = 0L;
- }
-
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
- if ( ! ok_error ( errno ))
- error("default route ioctl(SIOCADDRT): %m(%d)", errno);
- return 0;
- }
-
- default_route_gateway = gateway;
- return 1;
-}
-
-/********************************************************************
- *
- * cifdefaultroute - delete a default route through the address given.
- */
-
-int cifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-{
- struct rtentry rt;
-
- default_route_gateway = 0;
-
- memset (&rt, '\0', sizeof (rt));
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = 0L;
- }
-
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
- if (still_ppp()) {
- if ( ! ok_error ( errno ))
- error("default route ioctl(SIOCDELRT): %m (%d)", errno);
- return 0;
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifproxyarp - Make a proxy ARP entry for the peer.
- */
-
-int sifproxyarp (int unit, u_int32_t his_adr)
-{
- struct arpreq arpreq;
- char *forw_path;
-
- if (has_proxy_arp == 0) {
- memset (&arpreq, '\0', sizeof(arpreq));
-
- SET_SA_FAMILY(arpreq.arp_pa, AF_INET);
- SIN_ADDR(arpreq.arp_pa) = his_adr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
-/*
- * Get the hardware address of an interface on the same subnet
- * as our local address.
- */
- if (!get_ether_addr(his_adr, &arpreq.arp_ha, proxy_arp_dev,
- sizeof(proxy_arp_dev))) {
- error("Cannot determine ethernet address for proxy ARP");
- return 0;
- }
- strlcpy(arpreq.arp_dev, proxy_arp_dev, sizeof(arpreq.arp_dev));
-
- if (ioctl(sock_fd, SIOCSARP, (caddr_t)&arpreq) < 0) {
- if ( ! ok_error ( errno ))
- error("ioctl(SIOCSARP): %m(%d)", errno);
- return 0;
- }
- proxy_arp_addr = his_adr;
- has_proxy_arp = 1;
-
- if (tune_kernel) {
- forw_path = path_to_procfs("/sys/net/ipv4/ip_forward");
- if (forw_path != 0) {
- int fd = open(forw_path, O_WRONLY);
- if (fd >= 0) {
- if (write(fd, "1", 1) != 1)
- error("Couldn't enable IP forwarding: %m");
- close(fd);
- }
- }
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * cifproxyarp - Delete the proxy ARP entry for the peer.
- */
-
-int cifproxyarp (int unit, u_int32_t his_adr)
-{
- struct arpreq arpreq;
-
- if (has_proxy_arp) {
- has_proxy_arp = 0;
- memset (&arpreq, '\0', sizeof(arpreq));
- SET_SA_FAMILY(arpreq.arp_pa, AF_INET);
- SIN_ADDR(arpreq.arp_pa) = his_adr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
- strlcpy(arpreq.arp_dev, proxy_arp_dev, sizeof(arpreq.arp_dev));
-
- if (ioctl(sock_fd, SIOCDARP, (caddr_t)&arpreq) < 0) {
- if ( ! ok_error ( errno ))
- warn("ioctl(SIOCDARP): %m(%d)", errno);
- return 0;
- }
- }
- return 1;
-}
-
-/********************************************************************
- *
- * get_ether_addr - get the hardware address of an interface on the
- * the same subnet as ipaddr.
- */
-
-static int get_ether_addr (u_int32_t ipaddr,
- struct sockaddr *hwaddr,
- char *name, int namelen)
-{
- struct ifreq *ifr, *ifend;
- u_int32_t ina, mask;
- char *aliasp;
- struct ifreq ifreq;
- struct ifconf ifc;
- struct ifreq ifs[MAX_IFS];
-
- ifc.ifc_len = sizeof(ifs);
- ifc.ifc_req = ifs;
- if (ioctl(sock_fd, SIOCGIFCONF, &ifc) < 0) {
- if ( ! ok_error ( errno ))
- error("ioctl(SIOCGIFCONF): %m(%d)", errno);
- return 0;
- }
-
- SYSDEBUG ((LOG_DEBUG, "proxy arp: scanning %d interfaces for IP %s",
- ifc.ifc_len / sizeof(struct ifreq), ip_ntoa(ipaddr)));
-/*
- * Scan through looking for an interface with an Internet
- * address on the same subnet as `ipaddr'.
- */
- ifend = ifs + (ifc.ifc_len / sizeof(struct ifreq));
- for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
- if (ifr->ifr_addr.sa_family == AF_INET) {
- ina = SIN_ADDR(ifr->ifr_addr);
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- SYSDEBUG ((LOG_DEBUG, "proxy arp: examining interface %s",
- ifreq.ifr_name));
-/*
- * Check that the interface is up, and not point-to-point
- * nor loopback.
- */
- if (ioctl(sock_fd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
-
- if (((ifreq.ifr_flags ^ FLAGS_GOOD) & FLAGS_MASK) != 0)
- continue;
-/*
- * Get its netmask and check that it's on the right subnet.
- */
- if (ioctl(sock_fd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
-
- mask = SIN_ADDR(ifreq.ifr_addr);
- SYSDEBUG ((LOG_DEBUG, "proxy arp: interface addr %s mask %lx",
- ip_ntoa(ina), ntohl(mask)));
-
- if (((ipaddr ^ ina) & mask) != 0)
- continue;
- break;
- }
- }
-
- if (ifr >= ifend)
- return 0;
-
- strlcpy(name, ifreq.ifr_name, namelen);
-
- /* trim off the :1 in eth0:1 */
- aliasp = strchr(name, ':');
- if (aliasp != 0)
- *aliasp = 0;
-
- info("found interface %s for proxy arp", name);
-/*
- * Now get the hardware address.
- */
- memset (&ifreq.ifr_hwaddr, 0, sizeof (struct sockaddr));
- if (ioctl (sock_fd, SIOCGIFHWADDR, &ifreq) < 0) {
- error("SIOCGIFHWADDR(%s): %m(%d)", ifreq.ifr_name, errno);
- return 0;
- }
-
- memcpy (hwaddr,
- &ifreq.ifr_hwaddr,
- sizeof (struct sockaddr));
-
- SYSDEBUG ((LOG_DEBUG,
- "proxy arp: found hwaddr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
- (int) ((unsigned char *) &hwaddr->sa_data)[0],
- (int) ((unsigned char *) &hwaddr->sa_data)[1],
- (int) ((unsigned char *) &hwaddr->sa_data)[2],
- (int) ((unsigned char *) &hwaddr->sa_data)[3],
- (int) ((unsigned char *) &hwaddr->sa_data)[4],
- (int) ((unsigned char *) &hwaddr->sa_data)[5],
- (int) ((unsigned char *) &hwaddr->sa_data)[6],
- (int) ((unsigned char *) &hwaddr->sa_data)[7]));
- return 1;
-}
-
-/*
- * get_if_hwaddr - get the hardware address for the specified
- * network interface device.
- */
-int
-get_if_hwaddr(u_char *addr, char *name)
-{
- struct ifreq ifreq;
- int ret, sock_fd;
-
- sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock_fd < 0)
- return 0;
- memset(&ifreq.ifr_hwaddr, 0, sizeof(struct sockaddr));
- strlcpy(ifreq.ifr_name, name, sizeof(ifreq.ifr_name));
- ret = ioctl(sock_fd, SIOCGIFHWADDR, &ifreq);
- close(sock_fd);
- if (ret >= 0)
- memcpy(addr, ifreq.ifr_hwaddr.sa_data, 6);
- return ret;
-}
-
-/*
- * get_first_ethernet - return the name of the first ethernet-style
- * interface on this system.
- */
-char *
-get_first_ethernet()
-{
- return "eth0";
-}
-
-/********************************************************************
- *
- * Return user specified netmask, modified by any mask we might determine
- * for address `addr' (in network byte order).
- * Here we scan through the system's list of interfaces, looking for
- * any non-point-to-point interfaces which might appear to be on the same
- * network as `addr'. If we find any, we OR in their netmask to the
- * user-specified netmask.
- */
-
-u_int32_t GetMask (u_int32_t addr)
-{
- u_int32_t mask, nmask, ina;
- struct ifreq *ifr, *ifend, ifreq;
- struct ifconf ifc;
- struct ifreq ifs[MAX_IFS];
-
- addr = ntohl(addr);
-
- if (IN_CLASSA(addr)) /* determine network mask for address class */
- nmask = IN_CLASSA_NET;
- else if (IN_CLASSB(addr))
- nmask = IN_CLASSB_NET;
- else
- nmask = IN_CLASSC_NET;
-
- /* class D nets are disallowed by bad_ip_adrs */
- mask = netmask | htonl(nmask);
-/*
- * Scan through the system's network interfaces.
- */
- ifc.ifc_len = sizeof(ifs);
- ifc.ifc_req = ifs;
- if (ioctl(sock_fd, SIOCGIFCONF, &ifc) < 0) {
- if ( ! ok_error ( errno ))
- warn("ioctl(SIOCGIFCONF): %m(%d)", errno);
- return mask;
- }
-
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
-/*
- * Check the interface's internet address.
- */
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
- ina = SIN_ADDR(ifr->ifr_addr);
- if (((ntohl(ina) ^ addr) & nmask) != 0)
- continue;
-/*
- * Check that the interface is up, and not point-to-point nor loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
-
- if (((ifreq.ifr_flags ^ FLAGS_GOOD) & FLAGS_MASK) != 0)
- continue;
-/*
- * Get its netmask and OR it into our mask.
- */
- if (ioctl(sock_fd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- mask |= SIN_ADDR(ifreq.ifr_addr);
- break;
- }
- return mask;
-}
-
-/********************************************************************
- *
- * Internal routine to decode the version.modification.patch level
- */
-
-static void decode_version (char *buf, int *version,
- int *modification, int *patch)
-{
- char *endp;
-
- *version = (int) strtoul (buf, &endp, 10);
- *modification = 0;
- *patch = 0;
-
- if (endp != buf && *endp == '.') {
- buf = endp + 1;
- *modification = (int) strtoul (buf, &endp, 10);
- if (endp != buf && *endp == '.') {
- buf = endp + 1;
- *patch = (int) strtoul (buf, &buf, 10);
- }
- }
-}
-
-/********************************************************************
- *
- * Procedure to determine if the PPP line discipline is registered.
- */
-
-static int
-ppp_registered(void)
-{
- int local_fd;
- int mfd = -1;
- int ret = 0;
- char slave[16];
-
- /*
- * We used to open the serial device and set it to the ppp line
- * discipline here, in order to create a ppp unit. But that is
- * not a good idea - the user might have specified a device that
- * they can't open (permission, or maybe it doesn't really exist).
- * So we grab a pty master/slave pair and use that.
- */
- if (!get_pty(&mfd, &local_fd, slave, 0)) {
- no_ppp_msg = "Couldn't determine if PPP is supported (no free ptys)";
- return 0;
- }
-
- /*
- * Try to put the device into the PPP discipline.
- */
- if (ioctl(local_fd, TIOCSETD, &ppp_disc) < 0) {
- error("ioctl(TIOCSETD(PPP)): %m(%d)", errno);
- } else
- ret = 1;
-
- close(local_fd);
- close(mfd);
- return ret;
-}
-
-/********************************************************************
- *
- * ppp_available - check whether the system has any ppp interfaces
- * (in fact we check whether we can do an ioctl on ppp0).
- */
-
-int ppp_available(void)
-{
- int s, ok, fd;
- struct ifreq ifr;
- int size;
- int my_version, my_modification, my_patch;
- int osmaj, osmin, ospatch;
-
- no_ppp_msg =
- "This system lacks kernel support for PPP. This could be because\n"
- "the PPP kernel module could not be loaded, or because PPP was not\n"
- "included in the kernel configuration. If PPP was included as a\n"
- "module, try `/sbin/modprobe -v ppp'. If that fails, check that\n"
- "ppp.o exists in /lib/modules/`uname -r`/net.\n"
- "See README.linux file in the ppp distribution for more details.\n";
-
- /* get the kernel version now, since we are called before sys_init */
- uname(&utsname);
- osmaj = osmin = ospatch = 0;
- sscanf(utsname.release, "%d.%d.%d", &osmaj, &osmin, &ospatch);
- kernel_version = KVERSION(osmaj, osmin, ospatch);
-
- fd = open("/dev/ppp", O_RDWR);
-#if 0
- if (fd < 0 && errno == ENOENT) {
- /* try making it and see if that helps. */
- if (mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR,
- makedev(108, 0)) >= 0) {
- fd = open("/dev/ppp", O_RDWR);
- if (fd >= 0)
- info("Created /dev/ppp device node");
- else
- unlink("/dev/ppp"); /* didn't work, undo the mknod */
- } else if (errno == EEXIST) {
- fd = open("/dev/ppp", O_RDWR);
- }
- }
-#endif /* 0 */
- if (fd >= 0) {
- new_style_driver = 1;
-
- /* XXX should get from driver */
- driver_version = 2;
- driver_modification = 4;
- driver_patch = 0;
- close(fd);
- return 1;
- }
- if (kernel_version >= KVERSION(2,3,13)) {
- if (errno == ENOENT)
- no_ppp_msg =
- "pppd is unable to open the /dev/ppp device.\n"
- "You need to create the /dev/ppp device node by\n"
- "executing the following command as root:\n"
- " mknod /dev/ppp c 108 0\n";
- return 0;
- }
-
-/*
- * Open a socket for doing the ioctl operations.
- */
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0)
- return 0;
-
- strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
- ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
-/*
- * If the device did not exist then attempt to create one by putting the
- * current tty into the PPP discipline. If this works then obtain the
- * flags for the device again.
- */
- if (!ok) {
- if (ppp_registered()) {
- strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
- ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
- }
- }
-/*
- * Ensure that the hardware address is for PPP and not something else
- */
- if (ok)
- ok = ioctl (s, SIOCGIFHWADDR, (caddr_t) &ifr) >= 0;
-
- if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
- ok = 0;
-
-/*
- * This is the PPP device. Validate the version of the driver at this
- * point to ensure that this program will work with the driver.
- */
- if (ok) {
- char abBuffer [1024];
-
- ifr.ifr_data = abBuffer;
- size = ioctl (s, SIOCGPPPVER, (caddr_t) &ifr);
- if (size < 0) {
- error("Couldn't read driver version: %m");
- ok = 0;
- no_ppp_msg = "Sorry, couldn't verify kernel driver version\n";
-
- } else {
- decode_version(abBuffer,
- &driver_version,
- &driver_modification,
- &driver_patch);
-/*
- * Validate the version of the driver against the version that we used.
- */
- decode_version(VERSION,
- &my_version,
- &my_modification,
- &my_patch);
-
- /* The version numbers must match */
- if (driver_version != my_version)
- ok = 0;
-
- /* The modification levels must be legal */
- if (driver_modification < 3) {
- if (driver_modification >= 2) {
- /* we can cope with 2.2.0 and above */
- driver_is_old = 1;
- } else {
- ok = 0;
- }
- }
-
- close (s);
- if (!ok) {
- slprintf(route_buffer, sizeof(route_buffer),
- "Sorry - PPP driver version %d.%d.%d is out of date\n",
- driver_version, driver_modification, driver_patch);
-
- no_ppp_msg = route_buffer;
- }
- }
- }
- return ok;
-}
-
-/********************************************************************
- *
- * sifvjcomp - config tcp header compression
- */
-
-int sifvjcomp (int u, int vjcomp, int cidcomp, int maxcid)
-{
- u_int x = get_flags(ppp_dev_fd);
-
- if (vjcomp) {
- if (ioctl (ppp_dev_fd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) {
- if (! ok_error (errno))
- error("ioctl(PPPIOCSMAXCID): %m(%d)", errno);
- vjcomp = 0;
- }
- }
-
- x = vjcomp ? x | SC_COMP_TCP : x &~ SC_COMP_TCP;
- x = cidcomp ? x & ~SC_NO_TCP_CCID : x | SC_NO_TCP_CCID;
- set_flags (ppp_dev_fd, x);
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifup - Config the interface up and enable IP packets to pass.
- */
-
-int sifup(int u)
-{
- struct ifreq ifr;
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl (SIOCGIFFLAGS): %m(%d)", errno);
- return 0;
- }
-
- ifr.ifr_flags |= (IFF_UP | IFF_POINTOPOINT);
- if (ioctl(sock_fd, SIOCSIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFFLAGS): %m(%d)", errno);
- return 0;
- }
- if_is_up++;
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifdown - Disable the indicated protocol and config the interface
- * down if there are no remaining protocols.
- */
-
-int sifdown (int u)
-{
- struct ifreq ifr;
-
- if (if_is_up && --if_is_up > 0)
- return 1;
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl (SIOCGIFFLAGS): %m(%d)", errno);
- return 0;
- }
-
- ifr.ifr_flags &= ~IFF_UP;
- ifr.ifr_flags |= IFF_POINTOPOINT;
- if (ioctl(sock_fd, SIOCSIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFFLAGS): %m(%d)", errno);
- return 0;
- }
- return 1;
-}
-
-/********************************************************************
- *
- * sifaddr - Config the interface IP addresses and netmask.
- */
-
-int sifaddr (int unit, u_int32_t our_adr, u_int32_t his_adr,
- u_int32_t net_mask)
-{
- struct ifreq ifr;
- struct rtentry rt;
-
- memset (&ifr, '\0', sizeof (ifr));
- memset (&rt, '\0', sizeof (rt));
-
- SET_SA_FAMILY (ifr.ifr_addr, AF_INET);
- SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET);
- SET_SA_FAMILY (ifr.ifr_netmask, AF_INET);
-
- strlcpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
-/*
- * Set our IP address
- */
- SIN_ADDR(ifr.ifr_addr) = our_adr;
- if (ioctl(sock_fd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (errno != EEXIST) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFADDR): %m(%d)", errno);
- }
- else {
- warn("ioctl(SIOCSIFADDR): Address already exists");
- }
- return (0);
- }
-/*
- * Set the gateway address
- */
- SIN_ADDR(ifr.ifr_dstaddr) = his_adr;
- if (ioctl(sock_fd, SIOCSIFDSTADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFDSTADDR): %m(%d)", errno);
- return (0);
- }
-/*
- * Set the netmask.
- * For recent kernels, force the netmask to 255.255.255.255.
- */
- if (kernel_version >= KVERSION(2,1,16))
- net_mask = ~0L;
- if (net_mask != 0) {
- SIN_ADDR(ifr.ifr_netmask) = net_mask;
- if (ioctl(sock_fd, SIOCSIFNETMASK, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFNETMASK): %m(%d)", errno);
- return (0);
- }
- }
-/*
- * Add the device route
- */
- if (kernel_version < KVERSION(2,1,16)) {
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
- rt.rt_dev = ifname;
-
- SIN_ADDR(rt.rt_gateway) = 0L;
- SIN_ADDR(rt.rt_dst) = his_adr;
- rt.rt_flags = RTF_UP | RTF_HOST;
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = -1L;
- }
-
- if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCADDRT) device route: %m(%d)", errno);
- return (0);
- }
- }
-
- /* set ip_dynaddr in demand mode if address changes */
- if (demand && tune_kernel && !dynaddr_set
- && our_old_addr && our_old_addr != our_adr) {
- /* set ip_dynaddr if possible */
- char *path;
- int fd;
-
- path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
- if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) {
- if (write(fd, "1", 1) != 1)
- error("Couldn't enable dynamic IP addressing: %m");
- close(fd);
- }
- dynaddr_set = 1; /* only 1 attempt */
- }
- our_old_addr = 0;
-
- return 1;
-}
-
-/********************************************************************
- *
- * cifaddr - Clear the interface IP addresses, and delete routes
- * through the interface if possible.
- */
-
-int cifaddr (int unit, u_int32_t our_adr, u_int32_t his_adr)
-{
- struct ifreq ifr;
-
- if (kernel_version < KVERSION(2,1,16)) {
-/*
- * Delete the route through the device
- */
- struct rtentry rt;
- memset (&rt, '\0', sizeof (rt));
-
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
- rt.rt_dev = ifname;
-
- SIN_ADDR(rt.rt_gateway) = 0;
- SIN_ADDR(rt.rt_dst) = his_adr;
- rt.rt_flags = RTF_UP | RTF_HOST;
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = -1L;
- }
-
- if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
- if (still_ppp() && ! ok_error (errno))
- error("ioctl(SIOCDELRT) device route: %m(%d)", errno);
- return (0);
- }
- }
-
- /* This way it is possible to have an IPX-only or IPv6-only interface */
- memset(&ifr, 0, sizeof(ifr));
- SET_SA_FAMILY(ifr.ifr_addr, AF_INET);
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- if (ioctl(sock_fd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno)) {
- error("ioctl(SIOCSIFADDR): %m(%d)", errno);
- return 0;
- }
- }
-
- our_old_addr = our_adr;
-
- return 1;
-}
-
-#ifdef INET6
-/********************************************************************
- *
- * sif6addr - Config the interface with an IPv6 link-local address
- */
-int sif6addr (int unit, eui64_t our_eui64, eui64_t his_eui64)
-{
- struct in6_ifreq ifr6;
- struct ifreq ifr;
- struct in6_rtmsg rt6;
-
- if (sock6_fd < 0) {
- errno = -sock6_fd;
- error("IPv6 socket creation failed: %m");
- return 0;
- }
- memset(&ifr, 0, sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock6_fd, SIOCGIFINDEX, (caddr_t) &ifr) < 0) {
- error("sif6addr: ioctl(SIOCGIFINDEX): %m (%d)", errno);
- return 0;
- }
-
- /* Local interface */
- memset(&ifr6, 0, sizeof(ifr6));
- IN6_LLADDR_FROM_EUI64(ifr6.ifr6_addr, our_eui64);
- ifr6.ifr6_ifindex = ifr.ifr_ifindex;
- ifr6.ifr6_prefixlen = 10;
-
- if (ioctl(sock6_fd, SIOCSIFADDR, &ifr6) < 0) {
- error("sif6addr: ioctl(SIOCSIFADDR): %m (%d)", errno);
- return 0;
- }
-
- /* Route to remote host */
- memset(&rt6, 0, sizeof(rt6));
- IN6_LLADDR_FROM_EUI64(rt6.rtmsg_dst, his_eui64);
- rt6.rtmsg_flags = RTF_UP;
- rt6.rtmsg_dst_len = 10;
- rt6.rtmsg_ifindex = ifr.ifr_ifindex;
- rt6.rtmsg_metric = 1;
-
- if (ioctl(sock6_fd, SIOCADDRT, &rt6) < 0) {
- error("sif6addr: ioctl(SIOCADDRT): %m (%d)", errno);
- return 0;
- }
-
- return 1;
-}
-
-
-/********************************************************************
- *
- * cif6addr - Remove IPv6 address from interface
- */
-int cif6addr (int unit, eui64_t our_eui64, eui64_t his_eui64)
-{
- struct ifreq ifr;
- struct in6_ifreq ifr6;
-
- if (sock6_fd < 0) {
- errno = -sock6_fd;
- error("IPv6 socket creation failed: %m");
- return 0;
- }
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock6_fd, SIOCGIFINDEX, (caddr_t) &ifr) < 0) {
- error("cif6addr: ioctl(SIOCGIFINDEX): %m (%d)", errno);
- return 0;
- }
-
- memset(&ifr6, 0, sizeof(ifr6));
- IN6_LLADDR_FROM_EUI64(ifr6.ifr6_addr, our_eui64);
- ifr6.ifr6_ifindex = ifr.ifr_ifindex;
- ifr6.ifr6_prefixlen = 10;
-
- if (ioctl(sock6_fd, SIOCDIFADDR, &ifr6) < 0) {
- if (errno != EADDRNOTAVAIL) {
- if (! ok_error (errno))
- error("cif6addr: ioctl(SIOCDIFADDR): %m (%d)", errno);
- }
- else {
- warn("cif6addr: ioctl(SIOCDIFADDR): No such address");
- }
- return (0);
- }
- return 1;
-}
-#endif /* INET6 */
-
-/*
- * get_pty - get a pty master/slave pair and chown the slave side
- * to the uid given. Assumes slave_name points to >= 16 bytes of space.
- */
-int
-get_pty(master_fdp, slave_fdp, slave_name, uid)
- int *master_fdp;
- int *slave_fdp;
- char *slave_name;
- int uid;
-{
- int i, mfd, sfd = -1;
- char pty_name[16];
- struct termios tios;
-
-#ifdef TIOCGPTN
- /*
- * Try the unix98 way first.
- */
- mfd = open("/dev/ptmx", O_RDWR);
- if (mfd >= 0) {
- int ptn;
- if (ioctl(mfd, TIOCGPTN, &ptn) >= 0) {
- slprintf(pty_name, sizeof(pty_name), "/dev/pts/%d", ptn);
- chmod(pty_name, S_IRUSR | S_IWUSR);
-#ifdef TIOCSPTLCK
- ptn = 0;
- if (ioctl(mfd, TIOCSPTLCK, &ptn) < 0)
- warn("Couldn't unlock pty slave %s: %m", pty_name);
-#endif
- if ((sfd = open(pty_name, O_RDWR | O_NOCTTY)) < 0)
- warn("Couldn't open pty slave %s: %m", pty_name);
- }
- }
-#endif /* TIOCGPTN */
-
- if (sfd < 0) {
- /* the old way - scan through the pty name space */
- for (i = 0; i < 64; ++i) {
- slprintf(pty_name, sizeof(pty_name), "/dev/pty%c%x",
- 'p' + i / 16, i % 16);
- mfd = open(pty_name, O_RDWR, 0);
- if (mfd >= 0) {
- pty_name[5] = 't';
- sfd = open(pty_name, O_RDWR | O_NOCTTY, 0);
- if (sfd >= 0) {
- fchown(sfd, uid, -1);
- fchmod(sfd, S_IRUSR | S_IWUSR);
- break;
- }
- close(mfd);
- }
- }
- }
-
- if (sfd < 0)
- return 0;
-
- strlcpy(slave_name, pty_name, 16);
- *master_fdp = mfd;
- *slave_fdp = sfd;
- if (tcgetattr(sfd, &tios) == 0) {
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB);
- tios.c_cflag |= CS8 | CREAD | CLOCAL;
- tios.c_iflag = IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- if (tcsetattr(sfd, TCSAFLUSH, &tios) < 0)
- warn("couldn't set attributes on pty: %m");
- } else
- warn("couldn't get attributes on pty: %m");
-
- return 1;
-}
-
-/********************************************************************
- *
- * open_loopback - open the device we use for getting packets
- * in demand mode. Under Linux, we use a pty master/slave pair.
- */
-int
-open_ppp_loopback(void)
-{
- int flags;
-
- looped = 1;
- if (new_style_driver) {
- /* allocate ourselves a ppp unit */
- if (make_ppp_unit() < 0)
- die(1);
- set_flags(ppp_dev_fd, SC_LOOP_TRAFFIC);
- set_kdebugflag(kdebugflag);
- ppp_fd = -1;
- return ppp_dev_fd;
- }
-
- if (!get_pty(&master_fd, &slave_fd, loop_name, 0))
- fatal("No free pty for loopback");
- SYSDEBUG(("using %s for loopback", loop_name));
-
- set_ppp_fd(slave_fd);
-
- flags = fcntl(master_fd, F_GETFL);
- if (flags == -1 ||
- fcntl(master_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set master loopback to nonblock: %m(%d)", errno);
-
- flags = fcntl(ppp_fd, F_GETFL);
- if (flags == -1 ||
- fcntl(ppp_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set slave loopback to nonblock: %m(%d)", errno);
-
- if (ioctl(ppp_fd, TIOCSETD, &ppp_disc) < 0)
- fatal("ioctl(TIOCSETD): %m(%d)", errno);
-/*
- * Find out which interface we were given.
- */
- if (ioctl(ppp_fd, PPPIOCGUNIT, &ifunit) < 0)
- fatal("ioctl(PPPIOCGUNIT): %m(%d)", errno);
-/*
- * Enable debug in the driver if requested.
- */
- set_kdebugflag (kdebugflag);
-
- return master_fd;
-}
-
-/********************************************************************
- *
- * restore_loop - reattach the ppp unit to the loopback.
- *
- * The kernel ppp driver automatically reattaches the ppp unit to
- * the loopback if the serial port is set to a line discipline other
- * than ppp, or if it detects a modem hangup. The former will happen
- * in disestablish_ppp if the latter hasn't already happened, so we
- * shouldn't need to do anything.
- *
- * Just to be sure, set the real serial port to the normal discipline.
- */
-
-static void
-restore_loop(void)
-{
- looped = 1;
- if (new_style_driver) {
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) | SC_LOOP_TRAFFIC);
- return;
- }
- if (ppp_fd != slave_fd) {
- (void) ioctl(ppp_fd, TIOCSETD, &tty_disc);
- set_ppp_fd(slave_fd);
- }
-}
-
-/********************************************************************
- *
- * sifnpmode - Set the mode for handling packets for a given NP.
- */
-
-int
-sifnpmode(u, proto, mode)
- int u;
- int proto;
- enum NPmode mode;
-{
- struct npioctl npi;
-
- npi.protocol = proto;
- npi.mode = mode;
- if (ioctl(ppp_dev_fd, PPPIOCSNPMODE, (caddr_t) &npi) < 0) {
- if (! ok_error (errno))
- error("ioctl(PPPIOCSNPMODE, %d, %d): %m (%d)",
- proto, mode, errno);
- return 0;
- }
- return 1;
-}
-
-
-/********************************************************************
- *
- * sipxfaddr - Config the interface IPX networknumber
- */
-
-int sipxfaddr (int unit, unsigned long int network, unsigned char * node )
-{
- int result = 1;
-
-#ifdef IPX_CHANGE
- int skfd;
- struct ifreq ifr;
- struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) &ifr.ifr_addr;
-
- skfd = socket (AF_IPX, SOCK_DGRAM, 0);
- if (skfd < 0) {
- if (! ok_error (errno))
- dbglog("socket(AF_IPX): %m (%d)", errno);
- result = 0;
- }
- else {
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy (ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- memcpy (sipx->sipx_node, node, IPX_NODE_LEN);
- sipx->sipx_family = AF_IPX;
- sipx->sipx_port = 0;
- sipx->sipx_network = htonl (network);
- sipx->sipx_type = IPX_FRAME_ETHERII;
- sipx->sipx_action = IPX_CRTITF;
-/*
- * Set the IPX device
- */
- if (ioctl(skfd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- result = 0;
- if (errno != EEXIST) {
- if (! ok_error (errno))
- dbglog("ioctl(SIOCSIFADDR, CRTITF): %m (%d)", errno);
- }
- else {
- warn("ioctl(SIOCSIFADDR, CRTITF): Address already exists");
- }
- }
- close (skfd);
- }
-#endif
- return result;
-}
-
-/********************************************************************
- *
- * cipxfaddr - Clear the information for the IPX network. The IPX routes
- * are removed and the device is no longer able to pass IPX
- * frames.
- */
-
-int cipxfaddr (int unit)
-{
- int result = 1;
-
-#ifdef IPX_CHANGE
- int skfd;
- struct ifreq ifr;
- struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) &ifr.ifr_addr;
-
- skfd = socket (AF_IPX, SOCK_DGRAM, 0);
- if (skfd < 0) {
- if (! ok_error (errno))
- dbglog("socket(AF_IPX): %m (%d)", errno);
- result = 0;
- }
- else {
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy (ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- sipx->sipx_type = IPX_FRAME_ETHERII;
- sipx->sipx_action = IPX_DLTITF;
- sipx->sipx_family = AF_IPX;
-/*
- * Set the IPX device
- */
- if (ioctl(skfd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- info("ioctl(SIOCSIFADDR, IPX_DLTITF): %m (%d)", errno);
- result = 0;
- }
- close (skfd);
- }
-#endif
- return result;
-}
-
-/*
- * Use the hostname as part of the random number seed.
- */
-int
-get_host_seed()
-{
- int h;
- char *p = hostname;
-
- h = 407;
- for (p = hostname; *p != 0; ++p)
- h = h * 37 + *p;
- return h;
-}
-
-/********************************************************************
- *
- * sys_check_options - check the options that the user specified
- */
-
-int
-sys_check_options(void)
-{
-#ifdef IPX_CHANGE
-/*
- * Disable the IPX protocol if the support is not present in the kernel.
- */
- char *path;
-
- if (ipxcp_protent.enabled_flag) {
- struct stat stat_buf;
- if ((path = path_to_procfs("/net/ipx_interface")) == 0
- || lstat(path, &stat_buf) < 0) {
- error("IPX support is not present in the kernel\n");
- ipxcp_protent.enabled_flag = 0;
- }
- }
-#endif
- if (demand && driver_is_old) {
- option_error("demand dialling is not supported by kernel driver "
- "version %d.%d.%d", driver_version, driver_modification,
- driver_patch);
- return 0;
- }
- if (multilink && !new_style_driver) {
- warn("Warning: multilink is not supported by the kernel driver");
- multilink = 0;
- }
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/sys-linux.c.wtmp b/mdk-stage1/ppp/pppd/sys-linux.c.wtmp
deleted file mode 100644
index f1b48423e..000000000
--- a/mdk-stage1/ppp/pppd/sys-linux.c.wtmp
+++ /dev/null
@@ -1,2750 +0,0 @@
-/*
- * sys-linux.c - System-dependent procedures for setting up
- * PPP interfaces on Linux systems
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <sys/errno.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <sys/sysmacros.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <string.h>
-#include <time.h>
-#include <memory.h>
-#include <utmp.h>
-#include <mntent.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <termios.h>
-#include <unistd.h>
-
-/* This is in netdevice.h. However, this compile will fail miserably if
- you attempt to include netdevice.h because it has so many references
- to __memcpy functions which it should not attempt to do. So, since I
- really don't use it, but it must be defined, define it now. */
-
-#ifndef MAX_ADDR_LEN
-#define MAX_ADDR_LEN 7
-#endif
-
-#if __GLIBC__ >= 2
-#include <asm/types.h> /* glibc 2 conflicts with linux/types.h */
-#include <net/if.h>
-#include <net/if_arp.h>
-#include <net/route.h>
-#include <netinet/if_ether.h>
-#else
-#include <linux/types.h>
-#include <linux/if.h>
-#include <linux/if_arp.h>
-#include <linux/route.h>
-#include <linux/if_ether.h>
-#endif
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include <linux/ppp_defs.h>
-#include <linux/if_ppp.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "ipcp.h"
-
-#ifdef IPX_CHANGE
-#include "ipxcp.h"
-#if __GLIBC__ >= 2 && \
- !(defined(__powerpc__) && __GLIBC__ == 2 && __GLIBC_MINOR__ == 0)
-#include <netipx/ipx.h>
-#else
-#include <linux/ipx.h>
-#endif
-#endif /* IPX_CHANGE */
-
-#ifdef PPP_FILTER
-#include <net/bpf.h>
-#include <linux/filter.h>
-#endif /* PPP_FILTER */
-
-#ifdef LOCKLIB
-#include <sys/locks.h>
-#endif
-
-#ifdef INET6
-#ifndef _LINUX_IN6_H
-/*
- * This is in linux/include/net/ipv6.h.
- */
-
-struct in6_ifreq {
- struct in6_addr ifr6_addr;
- __u32 ifr6_prefixlen;
- unsigned int ifr6_ifindex;
-};
-#endif
-
-#define IN6_LLADDR_FROM_EUI64(sin6, eui64) do { \
- memset(&sin6.s6_addr, 0, sizeof(struct in6_addr)); \
- sin6.s6_addr16[0] = htons(0xfe80); \
- eui64_copy(eui64, sin6.s6_addr32[2]); \
- } while (0)
-
-#endif /* INET6 */
-
-/* We can get an EIO error on an ioctl if the modem has hung up */
-#define ok_error(num) ((num)==EIO)
-
-static int tty_disc = N_TTY; /* The TTY discipline */
-static int ppp_disc = N_PPP; /* The PPP discpline */
-static int initfdflags = -1; /* Initial file descriptor flags for fd */
-static int ppp_fd = -1; /* fd which is set to PPP discipline */
-static int sock_fd = -1; /* socket for doing interface ioctls */
-static int slave_fd = -1;
-static int master_fd = -1;
-#ifdef INET6
-static int sock6_fd = -1;
-#endif /* INET6 */
-static int ppp_dev_fd = -1; /* fd for /dev/ppp (new style driver) */
-static int chindex; /* channel index (new style driver) */
-
-static fd_set in_fds; /* set of fds that wait_input waits for */
-static int max_in_fd; /* highest fd set in in_fds */
-
-static int has_proxy_arp = 0;
-static int driver_version = 0;
-static int driver_modification = 0;
-static int driver_patch = 0;
-static int driver_is_old = 0;
-static int restore_term = 0; /* 1 => we've munged the terminal */
-static struct termios inittermios; /* Initial TTY termios */
-
-static int new_style_driver = 0;
-
-static char loop_name[20];
-static unsigned char inbuf[512]; /* buffer for chars read from loopback */
-
-static int if_is_up; /* Interface has been marked up */
-static u_int32_t default_route_gateway; /* Gateway for default route added */
-static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
-static char proxy_arp_dev[16]; /* Device for proxy arp entry */
-static u_int32_t our_old_addr; /* for detecting address changes */
-static int dynaddr_set; /* 1 if ip_dynaddr set */
-static int looped; /* 1 if using loop */
-static int link_mtu; /* mtu for the link (not bundle) */
-
-static struct utsname utsname; /* for the kernel version */
-static int kernel_version;
-#define KVERSION(j,n,p) ((j)*1000000 + (n)*1000 + (p))
-
-#define MAX_IFS 100
-
-#define FLAGS_GOOD (IFF_UP | IFF_BROADCAST)
-#define FLAGS_MASK (IFF_UP | IFF_BROADCAST | \
- IFF_POINTOPOINT | IFF_LOOPBACK | IFF_NOARP)
-
-#define SIN_ADDR(x) (((struct sockaddr_in *) (&(x)))->sin_addr.s_addr)
-
-/* Prototypes for procedures local to this file. */
-static int get_flags (int fd);
-static void set_flags (int fd, int flags);
-static int translate_speed (int bps);
-static int baud_rate_of (int speed);
-static void close_route_table (void);
-static int open_route_table (void);
-static int read_route_table (struct rtentry *rt);
-static int defaultroute_exists (struct rtentry *rt);
-static int get_ether_addr (u_int32_t ipaddr, struct sockaddr *hwaddr,
- char *name, int namelen);
-static void decode_version (char *buf, int *version, int *mod, int *patch);
-static int set_kdebugflag(int level);
-static int ppp_registered(void);
-static int make_ppp_unit(void);
-static void restore_loop(void); /* Transfer ppp unit back to loopback */
-
-extern u_char inpacket_buf[]; /* borrowed from main.c */
-
-/*
- * SET_SA_FAMILY - set the sa_family field of a struct sockaddr,
- * if it exists.
- */
-
-#define SET_SA_FAMILY(addr, family) \
- memset ((char *) &(addr), '\0', sizeof(addr)); \
- addr.sa_family = (family);
-
-/*
- * Determine if the PPP connection should still be present.
- */
-
-extern int hungup;
-
-/* new_fd is the fd of a tty */
-static void set_ppp_fd (int new_fd)
-{
- SYSDEBUG ((LOG_DEBUG, "setting ppp_fd to %d\n", new_fd));
- ppp_fd = new_fd;
- if (!new_style_driver)
- ppp_dev_fd = new_fd;
-}
-
-static int still_ppp(void)
-{
- if (new_style_driver)
- return !hungup && ppp_fd >= 0;
- if (!hungup || ppp_fd == slave_fd)
- return 1;
- if (slave_fd >= 0) {
- set_ppp_fd(slave_fd);
- return 1;
- }
- return 0;
-}
-
-/********************************************************************
- *
- * Functions to read and set the flags value in the device driver
- */
-
-static int get_flags (int fd)
-{
- int flags;
-
- if (ioctl(fd, PPPIOCGFLAGS, (caddr_t) &flags) < 0) {
- if ( ok_error (errno) )
- flags = 0;
- else
- fatal("ioctl(PPPIOCGFLAGS): %m");
- }
-
- SYSDEBUG ((LOG_DEBUG, "get flags = %x\n", flags));
- return flags;
-}
-
-/********************************************************************/
-
-static void set_flags (int fd, int flags)
-{
- SYSDEBUG ((LOG_DEBUG, "set flags = %x\n", flags));
-
- if (ioctl(fd, PPPIOCSFLAGS, (caddr_t) &flags) < 0) {
- if (! ok_error (errno) )
- fatal("ioctl(PPPIOCSFLAGS, %x): %m", flags, errno);
- }
-}
-
-/********************************************************************
- *
- * sys_init - System-dependent initialization.
- */
-
-void sys_init(void)
-{
- int flags;
-
- if (new_style_driver) {
- ppp_dev_fd = open("/dev/ppp", O_RDWR);
- if (ppp_dev_fd < 0)
- fatal("Couldn't open /dev/ppp: %m");
- flags = fcntl(ppp_dev_fd, F_GETFL);
- if (flags == -1
- || fcntl(ppp_dev_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("Couldn't set /dev/ppp to nonblock: %m");
- }
-
- /* Get an internet socket for doing socket ioctls. */
- sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock_fd < 0)
- fatal("Couldn't create IP socket: %m(%d)", errno);
-
-#ifdef INET6
- sock6_fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (sock6_fd < 0)
- sock6_fd = -errno; /* save errno for later */
-#endif
-
- FD_ZERO(&in_fds);
- max_in_fd = 0;
-}
-
-/********************************************************************
- *
- * sys_cleanup - restore any system state we modified before exiting:
- * mark the interface down, delete default route and/or proxy arp entry.
- * This shouldn't call die() because it's called from die().
- */
-
-void sys_cleanup(void)
-{
-/*
- * Take down the device
- */
- if (if_is_up) {
- if_is_up = 0;
- sifdown(0);
- }
-/*
- * Delete any routes through the device.
- */
- if (default_route_gateway != 0)
- cifdefaultroute(0, 0, default_route_gateway);
-
- if (has_proxy_arp)
- cifproxyarp(0, proxy_arp_addr);
-}
-
-/********************************************************************
- *
- * sys_close - Clean up in a child process before execing.
- */
-void
-sys_close(void)
-{
- if (new_style_driver)
- close(ppp_dev_fd);
- if (sock_fd >= 0)
- close(sock_fd);
- if (slave_fd >= 0)
- close(slave_fd);
- if (master_fd >= 0)
- close(master_fd);
- closelog();
-}
-
-/********************************************************************
- *
- * set_kdebugflag - Define the debugging level for the kernel
- */
-
-static int set_kdebugflag (int requested_level)
-{
- if (new_style_driver && ifunit < 0)
- return 1;
- if (ioctl(ppp_dev_fd, PPPIOCSDEBUG, &requested_level) < 0) {
- if ( ! ok_error (errno) )
- error("ioctl(PPPIOCSDEBUG): %m");
- return (0);
- }
- SYSDEBUG ((LOG_INFO, "set kernel debugging level to %d",
- requested_level));
- return (1);
-}
-
-/********************************************************************
- *
- * tty_establish_ppp - Turn the serial port into a ppp interface.
- */
-
-int tty_establish_ppp (int tty_fd)
-{
- int x;
- int fd = -1;
-
-/*
- * Ensure that the tty device is in exclusive mode.
- */
- if (ioctl(tty_fd, TIOCEXCL, 0) < 0) {
- if ( ! ok_error ( errno ))
- warn("Couldn't make tty exclusive: %m");
- }
-/*
- * Demand mode - prime the old ppp device to relinquish the unit.
- */
- if (!new_style_driver && looped
- && ioctl(slave_fd, PPPIOCXFERUNIT, 0) < 0) {
- error("ioctl(transfer ppp unit): %m");
- return -1;
- }
-/*
- * Set the current tty to the PPP discpline
- */
-
-#ifndef N_SYNC_PPP
-#define N_SYNC_PPP 14
-#endif
- ppp_disc = (new_style_driver && sync_serial)? N_SYNC_PPP: N_PPP;
- if (ioctl(tty_fd, TIOCSETD, &ppp_disc) < 0) {
- if ( ! ok_error (errno) ) {
- error("Couldn't set tty to PPP discipline: %m");
- return -1;
- }
- }
-
- if (new_style_driver) {
- /* Open another instance of /dev/ppp and connect the channel to it */
- int flags;
-
- if (ioctl(tty_fd, PPPIOCGCHAN, &chindex) == -1) {
- error("Couldn't get channel number: %m");
- goto err;
- }
- dbglog("using channel %d", chindex);
- fd = open("/dev/ppp", O_RDWR);
- if (fd < 0) {
- error("Couldn't reopen /dev/ppp: %m");
- goto err;
- }
- if (ioctl(fd, PPPIOCATTCHAN, &chindex) < 0) {
- error("Couldn't attach to channel %d: %m", chindex);
- goto err_close;
- }
- flags = fcntl(fd, F_GETFL);
- if (flags == -1 || fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("Couldn't set /dev/ppp (channel) to nonblock: %m");
- set_ppp_fd(fd);
-
- if (!looped)
- ifunit = -1;
- if (!looped && !multilink) {
- /*
- * Create a new PPP unit.
- */
- if (make_ppp_unit() < 0)
- goto err_close;
- }
-
- if (looped)
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) & ~SC_LOOP_TRAFFIC);
-
- if (!multilink) {
- add_fd(ppp_dev_fd);
- if (ioctl(fd, PPPIOCCONNECT, &ifunit) < 0) {
- error("Couldn't attach to PPP unit %d: %m", ifunit);
- goto err_close;
- }
- }
-
- } else {
- /*
- * Old-style driver: find out which interface we were given.
- */
- set_ppp_fd (tty_fd);
- if (ioctl(tty_fd, PPPIOCGUNIT, &x) < 0) {
- if (ok_error (errno))
- goto err;
- fatal("ioctl(PPPIOCGUNIT): %m(%d)", errno);
- }
- /* Check that we got the same unit again. */
- if (looped && x != ifunit)
- fatal("transfer_ppp failed: wanted unit %d, got %d", ifunit, x);
- ifunit = x;
-
- /*
- * Fetch the initial file flags and reset blocking mode on the file.
- */
- initfdflags = fcntl(tty_fd, F_GETFL);
- if (initfdflags == -1 ||
- fcntl(tty_fd, F_SETFL, initfdflags | O_NONBLOCK) == -1) {
- if ( ! ok_error (errno))
- warn("Couldn't set device to non-blocking mode: %m");
- }
- }
-
- looped = 0;
-
- /*
- * Enable debug in the driver if requested.
- */
- if (!looped)
- set_kdebugflag (kdebugflag);
-
-#define SC_RCVB (SC_RCV_B7_0 | SC_RCV_B7_1 | SC_RCV_EVNP | SC_RCV_ODDP)
-#define SC_LOGB (SC_DEBUG | SC_LOG_INPKT | SC_LOG_OUTPKT | SC_LOG_RAWIN \
- | SC_LOG_FLUSH)
-
- set_flags(ppp_fd, ((get_flags(ppp_fd) & ~(SC_RCVB | SC_LOGB))
- | ((kdebugflag * SC_DEBUG) & SC_LOGB)));
-
- SYSDEBUG ((LOG_NOTICE, "Using version %d.%d.%d of PPP driver",
- driver_version, driver_modification, driver_patch));
-
- return ppp_fd;
-
- err_close:
- close(fd);
- err:
- if (ioctl(tty_fd, TIOCSETD, &tty_disc) < 0 && !ok_error(errno))
- warn("Couldn't reset tty to normal line discipline: %m");
- return -1;
-}
-
-/********************************************************************
- *
- * tty_disestablish_ppp - Restore the serial port to normal operation,
- * and reconnect the ppp unit to the loopback if in demand mode.
- * This shouldn't call die() because it's called from die().
- */
-
-void tty_disestablish_ppp(int tty_fd)
-{
- if (demand)
- restore_loop();
- if (!hungup) {
-/*
- * Flush the tty output buffer so that the TIOCSETD doesn't hang.
- */
- if (tcflush(tty_fd, TCIOFLUSH) < 0)
- warn("tcflush failed: %m");
-/*
- * Restore the previous line discipline
- */
- if (ioctl(tty_fd, TIOCSETD, &tty_disc) < 0) {
- if ( ! ok_error (errno))
- error("ioctl(TIOCSETD, N_TTY): %m");
- }
-
- if (ioctl(tty_fd, TIOCNXCL, 0) < 0) {
- if ( ! ok_error (errno))
- warn("ioctl(TIOCNXCL): %m(%d)", errno);
- }
-
- /* Reset non-blocking mode on fd. */
- if (initfdflags != -1 && fcntl(tty_fd, F_SETFL, initfdflags) < 0) {
- if ( ! ok_error (errno))
- warn("Couldn't restore device fd flags: %m");
- }
- }
- initfdflags = -1;
-
- if (new_style_driver) {
- close(ppp_fd);
- ppp_fd = -1;
- if (!looped && ifunit >= 0 && ioctl(ppp_dev_fd, PPPIOCDETACH) < 0)
- error("Couldn't release PPP unit: %m");
- if (!multilink)
- remove_fd(ppp_dev_fd);
- }
-}
-
-/*
- * make_ppp_unit - make a new ppp unit for ppp_dev_fd.
- * Assumes new_style_driver.
- */
-static int make_ppp_unit()
-{
- int x;
-
- ifunit = req_unit;
- x = ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
- if (x < 0 && req_unit >= 0 && errno == EEXIST) {
- warn("Couldn't allocate PPP unit %d as it is already in use");
- ifunit = -1;
- x = ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
- }
- if (x < 0)
- error("Couldn't create new ppp unit: %m");
- return x;
-}
-
-/*
- * cfg_bundle - configure the existing bundle.
- * Used in demand mode.
- */
-void cfg_bundle(int mrru, int mtru, int rssn, int tssn)
-{
- int flags;
-
- if (!new_style_driver)
- return;
-
- /* set the mrru, mtu and flags */
- if (ioctl(ppp_dev_fd, PPPIOCSMRRU, &mrru) < 0)
- error("Couldn't set MRRU: %m");
- flags = get_flags(ppp_dev_fd);
- flags &= ~(SC_MP_SHORTSEQ | SC_MP_XSHORTSEQ);
- flags |= (rssn? SC_MP_SHORTSEQ: 0) | (tssn? SC_MP_XSHORTSEQ: 0)
- | (mrru? SC_MULTILINK: 0);
-
- set_flags(ppp_dev_fd, flags);
-
- /* connect up the channel */
- if (ioctl(ppp_fd, PPPIOCCONNECT, &ifunit) < 0)
- fatal("Couldn't attach to PPP unit %d: %m", ifunit);
- add_fd(ppp_dev_fd);
-}
-
-/*
- * make_new_bundle - create a new PPP unit (i.e. a bundle)
- * and connect our channel to it. This should only get called
- * if `multilink' was set at the time establish_ppp was called.
- * In demand mode this uses our existing bundle instead of making
- * a new one.
- */
-void make_new_bundle(int mrru, int mtru, int rssn, int tssn)
-{
- if (!new_style_driver)
- return;
-
- /* make us a ppp unit */
- if (make_ppp_unit() < 0)
- die(1);
-
- /* set the mrru and flags */
- cfg_bundle(mrru, mtru, rssn, tssn);
-}
-
-/*
- * bundle_attach - attach our link to a given PPP unit.
- * We assume the unit is controlled by another pppd.
- */
-int bundle_attach(int ifnum)
-{
- if (!new_style_driver)
- return -1;
-
- if (ioctl(ppp_dev_fd, PPPIOCATTACH, &ifnum) < 0) {
- if (errno == ENXIO)
- return 0; /* doesn't still exist */
- fatal("Couldn't attach to interface unit %d: %m\n", ifnum);
- }
- if (ioctl(ppp_fd, PPPIOCCONNECT, &ifnum) < 0)
- fatal("Couldn't connect to interface unit %d: %m", ifnum);
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) | SC_MULTILINK);
-
- ifunit = ifnum;
- return 1;
-}
-
-/********************************************************************
- *
- * clean_check - Fetch the flags for the device and generate
- * appropriate error messages.
- */
-void clean_check(void)
-{
- int x;
- char *s;
-
- if (still_ppp()) {
- if (ioctl(ppp_fd, PPPIOCGFLAGS, (caddr_t) &x) == 0) {
- s = NULL;
- switch (~x & (SC_RCV_B7_0|SC_RCV_B7_1|SC_RCV_EVNP|SC_RCV_ODDP)) {
- case SC_RCV_B7_0:
- s = "all had bit 7 set to 1";
- break;
-
- case SC_RCV_B7_1:
- s = "all had bit 7 set to 0";
- break;
-
- case SC_RCV_EVNP:
- s = "all had odd parity";
- break;
-
- case SC_RCV_ODDP:
- s = "all had even parity";
- break;
- }
-
- if (s != NULL) {
- warn("Receive serial link is not 8-bit clean:");
- warn("Problem: %s", s);
- }
- }
- }
-}
-
-
-/*
- * List of valid speeds.
- */
-
-struct speed {
- int speed_int, speed_val;
-} speeds[] = {
-#ifdef B50
- { 50, B50 },
-#endif
-#ifdef B75
- { 75, B75 },
-#endif
-#ifdef B110
- { 110, B110 },
-#endif
-#ifdef B134
- { 134, B134 },
-#endif
-#ifdef B150
- { 150, B150 },
-#endif
-#ifdef B200
- { 200, B200 },
-#endif
-#ifdef B300
- { 300, B300 },
-#endif
-#ifdef B600
- { 600, B600 },
-#endif
-#ifdef B1200
- { 1200, B1200 },
-#endif
-#ifdef B1800
- { 1800, B1800 },
-#endif
-#ifdef B2000
- { 2000, B2000 },
-#endif
-#ifdef B2400
- { 2400, B2400 },
-#endif
-#ifdef B3600
- { 3600, B3600 },
-#endif
-#ifdef B4800
- { 4800, B4800 },
-#endif
-#ifdef B7200
- { 7200, B7200 },
-#endif
-#ifdef B9600
- { 9600, B9600 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B76800
- { 76800, B76800 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
-#ifdef EXTA
- { 19200, EXTA },
-#endif
-#ifdef EXTB
- { 38400, EXTB },
-#endif
-#ifdef B230400
- { 230400, B230400 },
-#endif
-#ifdef B460800
- { 460800, B460800 },
-#endif
-#ifdef B921600
- { 921600, B921600 },
-#endif
- { 0, 0 }
-};
-
-/********************************************************************
- *
- * Translate from bits/second to a speed_t.
- */
-
-static int translate_speed (int bps)
-{
- struct speed *speedp;
-
- if (bps != 0) {
- for (speedp = speeds; speedp->speed_int; speedp++) {
- if (bps == speedp->speed_int)
- return speedp->speed_val;
- }
- warn("speed %d not supported", bps);
- }
- return 0;
-}
-
-/********************************************************************
- *
- * Translate from a speed_t to bits/second.
- */
-
-static int baud_rate_of (int speed)
-{
- struct speed *speedp;
-
- if (speed != 0) {
- for (speedp = speeds; speedp->speed_int; speedp++) {
- if (speed == speedp->speed_val)
- return speedp->speed_int;
- }
- }
- return 0;
-}
-
-/********************************************************************
- *
- * set_up_tty: Set up the serial port on `fd' for 8 bits, no parity,
- * at the requested speed, etc. If `local' is true, set CLOCAL
- * regardless of whether the modem option was specified.
- */
-
-void set_up_tty(int tty_fd, int local)
-{
- int speed;
- struct termios tios;
-
- setdtr(tty_fd, 1);
- if (tcgetattr(tty_fd, &tios) < 0) {
- if (!ok_error(errno))
- fatal("tcgetattr: %m(%d)", errno);
- return;
- }
-
- if (!restore_term)
- inittermios = tios;
-
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
- tios.c_cflag |= CS8 | CREAD | HUPCL;
-
- tios.c_iflag = IGNBRK | IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- tios.c_cc[VMIN] = 1;
- tios.c_cc[VTIME] = 0;
-
- if (local || !modem)
- tios.c_cflag ^= (CLOCAL | HUPCL);
-
- switch (crtscts) {
- case 1:
- tios.c_cflag |= CRTSCTS;
- break;
-
- case -2:
- tios.c_iflag |= IXON | IXOFF;
- tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */
- tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */
- break;
-
- case -1:
- tios.c_cflag &= ~CRTSCTS;
- break;
-
- default:
- break;
- }
-
- speed = translate_speed(inspeed);
- if (speed) {
- cfsetospeed (&tios, speed);
- cfsetispeed (&tios, speed);
- }
-/*
- * We can't proceed if the serial port speed is B0,
- * since that implies that the serial port is disabled.
- */
- else {
- speed = cfgetospeed(&tios);
- if (speed == B0)
- fatal("Baud rate for %s is 0; need explicit baud rate", devnam);
- }
-
- if (tcsetattr(tty_fd, TCSAFLUSH, &tios) < 0)
- if (!ok_error(errno))
- fatal("tcsetattr: %m");
-
- baud_rate = baud_rate_of(speed);
- restore_term = 1;
-}
-
-/********************************************************************
- *
- * setdtr - control the DTR line on the serial port.
- * This is called from die(), so it shouldn't call die().
- */
-
-void setdtr (int tty_fd, int on)
-{
- int modembits = TIOCM_DTR;
-
- ioctl(tty_fd, (on ? TIOCMBIS : TIOCMBIC), &modembits);
-}
-
-/********************************************************************
- *
- * restore_tty - restore the terminal to the saved settings.
- */
-
-void restore_tty (int tty_fd)
-{
- if (restore_term) {
- restore_term = 0;
-/*
- * Turn off echoing, because otherwise we can get into
- * a loop with the tty and the modem echoing to each other.
- * We presume we are the sole user of this tty device, so
- * when we close it, it will revert to its defaults anyway.
- */
- if (!default_device)
- inittermios.c_lflag &= ~(ECHO | ECHONL);
-
- if (tcsetattr(tty_fd, TCSAFLUSH, &inittermios) < 0) {
- if (! ok_error (errno))
- warn("tcsetattr: %m");
- }
- }
-}
-
-/********************************************************************
- *
- * output - Output PPP packet.
- */
-
-void output (int unit, unsigned char *p, int len)
-{
- int fd = ppp_fd;
- int proto;
-
- if (debug)
- dbglog("sent %P", p, len);
-
- if (len < PPP_HDRLEN)
- return;
- if (new_style_driver) {
- p += 2;
- len -= 2;
- proto = (p[0] << 8) + p[1];
- if (ifunit >= 0 && !(proto >= 0xc000 || proto == PPP_CCPFRAG))
- fd = ppp_dev_fd;
- }
- if (write(fd, p, len) < 0) {
- if (errno == EWOULDBLOCK || errno == ENOBUFS
- || errno == ENXIO || errno == EIO || errno == EINTR)
- warn("write: warning: %m (%d)", errno);
- else
- error("write: %m (%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * wait_input - wait until there is data available,
- * for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-
-void wait_input(struct timeval *timo)
-{
- fd_set ready, exc;
- int n;
-
- ready = in_fds;
- exc = in_fds;
- n = select(max_in_fd + 1, &ready, NULL, &exc, timo);
- if (n < 0 && errno != EINTR)
- fatal("select: %m(%d)", errno);
-}
-
-/*
- * add_fd - add an fd to the set that wait_input waits for.
- */
-void add_fd(int fd)
-{
- FD_SET(fd, &in_fds);
- if (fd > max_in_fd)
- max_in_fd = fd;
-}
-
-/*
- * remove_fd - remove an fd from the set that wait_input waits for.
- */
-void remove_fd(int fd)
-{
- FD_CLR(fd, &in_fds);
-}
-
-
-/********************************************************************
- *
- * read_packet - get a PPP packet from the serial device.
- */
-
-int read_packet (unsigned char *buf)
-{
- int len, nr;
-
- len = PPP_MRU + PPP_HDRLEN;
- if (new_style_driver) {
- *buf++ = PPP_ALLSTATIONS;
- *buf++ = PPP_UI;
- len -= 2;
- }
- nr = -1;
- if (ppp_fd >= 0) {
- nr = read(ppp_fd, buf, len);
- if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR)
- error("read: %m");
- if (nr < 0 && errno == ENXIO)
- return 0;
- }
- if (nr < 0 && new_style_driver && ifunit >= 0) {
- /* N.B. we read ppp_fd first since LCP packets come in there. */
- nr = read(ppp_dev_fd, buf, len);
- if (nr < 0 && errno != EWOULDBLOCK && errno != EIO && errno != EINTR)
- error("read /dev/ppp: %m");
- if (nr < 0 && errno == ENXIO)
- return 0;
- }
- return (new_style_driver && nr > 0)? nr+2: nr;
-}
-
-/********************************************************************
- *
- * get_loop_output - get outgoing packets from the ppp device,
- * and detect when we want to bring the real link up.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- */
-int
-get_loop_output(void)
-{
- int rv = 0;
- int n;
-
- if (new_style_driver) {
- while ((n = read_packet(inpacket_buf)) > 0)
- if (loop_frame(inpacket_buf, n))
- rv = 1;
- return rv;
- }
-
- while ((n = read(master_fd, inbuf, sizeof(inbuf))) > 0)
- if (loop_chars(inbuf, n))
- rv = 1;
-
- if (n == 0)
- fatal("eof on loopback");
-
- if (errno != EWOULDBLOCK)
- fatal("read from loopback: %m(%d)", errno);
-
- return rv;
-}
-
-/*
- * netif_set_mtu - set the MTU on the PPP network interface.
- */
-void
-netif_set_mtu(int unit, int mtu)
-{
- struct ifreq ifr;
-
- SYSDEBUG ((LOG_DEBUG, "netif_set_mtu: mtu = %d\n", mtu));
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- ifr.ifr_mtu = mtu;
-
- if (ifunit >= 0 && ioctl(sock_fd, SIOCSIFMTU, (caddr_t) &ifr) < 0)
- fatal("ioctl(SIOCSIFMTU): %m");
-}
-
-/********************************************************************
- *
- * tty_send_config - configure the transmit characteristics of
- * the ppp interface.
- */
-
-void tty_send_config (int mtu,u_int32_t asyncmap,int pcomp,int accomp)
-{
- u_int x;
-
-/*
- * Set the asyncmap and other parameters for the ppp device
- */
- if (!still_ppp())
- return;
- link_mtu = mtu;
- SYSDEBUG ((LOG_DEBUG, "send_config: asyncmap = %lx\n", asyncmap));
- if (ioctl(ppp_fd, PPPIOCSASYNCMAP, (caddr_t) &asyncmap) < 0) {
- if (!ok_error(errno))
- fatal("ioctl(PPPIOCSASYNCMAP): %m(%d)", errno);
- return;
- }
-
- x = get_flags(ppp_fd);
- x = pcomp ? x | SC_COMP_PROT : x & ~SC_COMP_PROT;
- x = accomp ? x | SC_COMP_AC : x & ~SC_COMP_AC;
- x = sync_serial ? x | SC_SYNC : x & ~SC_SYNC;
- set_flags(ppp_fd, x);
-}
-
-/********************************************************************
- *
- * tty_set_xaccm - set the extended transmit ACCM for the interface.
- */
-
-void tty_set_xaccm (ext_accm accm)
-{
- SYSDEBUG ((LOG_DEBUG, "set_xaccm: %08lx %08lx %08lx %08lx\n",
- accm[0], accm[1], accm[2], accm[3]));
-
- if (!still_ppp())
- return;
- if (ioctl(ppp_fd, PPPIOCSXASYNCMAP, accm) < 0 && errno != ENOTTY) {
- if ( ! ok_error (errno))
- warn("ioctl(set extended ACCM): %m(%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * tty_recv_config - configure the receive-side characteristics of
- * the ppp interface.
- */
-
-void tty_recv_config (int mru,u_int32_t asyncmap,int pcomp,int accomp)
-{
- SYSDEBUG ((LOG_DEBUG, "recv_config: mru = %d\n", mru));
-/*
- * If we were called because the link has gone down then there is nothing
- * which may be done. Just return without incident.
- */
- if (!still_ppp())
- return;
-/*
- * Set the receiver parameters
- */
- if (ioctl(ppp_fd, PPPIOCSMRU, (caddr_t) &mru) < 0) {
- if ( ! ok_error (errno))
- error("ioctl(PPPIOCSMRU): %m(%d)", errno);
- }
- if (new_style_driver && ifunit >= 0
- && ioctl(ppp_dev_fd, PPPIOCSMRU, (caddr_t) &mru) < 0)
- error("Couldn't set MRU in generic PPP layer: %m");
-
- SYSDEBUG ((LOG_DEBUG, "recv_config: asyncmap = %lx\n", asyncmap));
- if (ioctl(ppp_fd, PPPIOCSRASYNCMAP, (caddr_t) &asyncmap) < 0) {
- if (!ok_error(errno))
- error("ioctl(PPPIOCSRASYNCMAP): %m(%d)", errno);
- }
-}
-
-/********************************************************************
- *
- * ccp_test - ask kernel whether a given compression method
- * is acceptable for use.
- */
-
-int ccp_test (int unit, u_char *opt_ptr, int opt_len, int for_transmit)
-{
- struct ppp_option_data data;
-
- memset (&data, '\0', sizeof (data));
- data.ptr = opt_ptr;
- data.length = opt_len;
- data.transmit = for_transmit;
-
- if (ioctl(ppp_dev_fd, PPPIOCSCOMPRESS, (caddr_t) &data) >= 0)
- return 1;
-
- return (errno == ENOBUFS)? 0: -1;
-}
-
-/********************************************************************
- *
- * ccp_flags_set - inform kernel about the current state of CCP.
- */
-
-void ccp_flags_set (int unit, int isopen, int isup)
-{
- if (still_ppp()) {
- int x = get_flags(ppp_dev_fd);
- x = isopen? x | SC_CCP_OPEN : x &~ SC_CCP_OPEN;
- x = isup? x | SC_CCP_UP : x &~ SC_CCP_UP;
- set_flags (ppp_dev_fd, x);
- }
-}
-
-#ifdef PPP_FILTER
-/*
- * set_filters - set the active and pass filters in the kernel driver.
- */
-int set_filters(struct bpf_program *pass, struct bpf_program *active)
-{
- struct sock_fprog fp;
-
- fp.len = pass->bf_len;
- fp.filter = (struct sock_filter *) pass->bf_insns;
- if (ioctl(ppp_dev_fd, PPPIOCSPASS, &fp) < 0) {
- if (errno == ENOTTY)
- warn("kernel does not support PPP filtering");
- else
- error("Couldn't set pass-filter in kernel: %m");
- return 0;
- }
- fp.len = active->bf_len;
- fp.filter = (struct sock_filter *) active->bf_insns;
- if (ioctl(ppp_dev_fd, PPPIOCSACTIVE, &fp) < 0) {
- error("Couldn't set active-filter in kernel: %m");
- return 0;
- }
- return 1;
-}
-#endif /* PPP_FILTER */
-
-/********************************************************************
- *
- * get_idle_time - return how long the link has been idle.
- */
-int
-get_idle_time(u, ip)
- int u;
- struct ppp_idle *ip;
-{
- return ioctl(ppp_dev_fd, PPPIOCGIDLE, ip) >= 0;
-}
-
-/********************************************************************
- *
- * get_ppp_stats - return statistics for the link.
- */
-int
-get_ppp_stats(u, stats)
- int u;
- struct pppd_stats *stats;
-{
- struct ifpppstatsreq req;
-
- memset (&req, 0, sizeof (req));
-
- req.stats_ptr = (caddr_t) &req.stats;
- strlcpy(req.ifr__name, ifname, sizeof(req.ifr__name));
- if (ioctl(sock_fd, SIOCGPPPSTATS, &req) < 0) {
- error("Couldn't get PPP statistics: %m");
- return 0;
- }
- stats->bytes_in = req.stats.p.ppp_ibytes;
- stats->bytes_out = req.stats.p.ppp_obytes;
- return 1;
-}
-
-/********************************************************************
- *
- * ccp_fatal_error - returns 1 if decompression was disabled as a
- * result of an error detected after decompression of a packet,
- * 0 otherwise. This is necessary because of patent nonsense.
- */
-
-int ccp_fatal_error (int unit)
-{
- int x = get_flags(ppp_dev_fd);
-
- return x & SC_DC_FERROR;
-}
-
-/********************************************************************
- *
- * path_to_procfs - find the path to the proc file system mount point
- */
-static char proc_path[MAXPATHLEN];
-static int proc_path_len;
-
-static char *path_to_procfs(const char *tail)
-{
- struct mntent *mntent;
- FILE *fp;
-
- if (proc_path_len == 0) {
- /* Default the mount location of /proc */
- strlcpy (proc_path, "/proc", sizeof(proc_path));
- proc_path_len = 5;
- fp = fopen(MOUNTED, "r");
- if (fp != NULL) {
- while ((mntent = getmntent(fp)) != NULL) {
- if (strcmp(mntent->mnt_type, MNTTYPE_IGNORE) == 0)
- continue;
- if (strcmp(mntent->mnt_type, "proc") == 0) {
- strlcpy(proc_path, mntent->mnt_dir, sizeof(proc_path));
- proc_path_len = strlen(proc_path);
- break;
- }
- }
- fclose (fp);
- }
- }
-
- strlcpy(proc_path + proc_path_len, tail,
- sizeof(proc_path) - proc_path_len);
- return proc_path;
-}
-
-/*
- * /proc/net/route parsing stuff.
- */
-#define ROUTE_MAX_COLS 12
-FILE *route_fd = (FILE *) 0;
-static char route_buffer[512];
-static int route_dev_col, route_dest_col, route_gw_col;
-static int route_flags_col, route_mask_col;
-static int route_num_cols;
-
-static int open_route_table (void);
-static void close_route_table (void);
-static int read_route_table (struct rtentry *rt);
-
-/********************************************************************
- *
- * close_route_table - close the interface to the route table
- */
-
-static void close_route_table (void)
-{
- if (route_fd != (FILE *) 0) {
- fclose (route_fd);
- route_fd = (FILE *) 0;
- }
-}
-
-/********************************************************************
- *
- * open_route_table - open the interface to the route table
- */
-static char route_delims[] = " \t\n";
-
-static int open_route_table (void)
-{
- char *path;
-
- close_route_table();
-
- path = path_to_procfs("/net/route");
- route_fd = fopen (path, "r");
- if (route_fd == NULL) {
- error("can't open routing table %s: %m", path);
- return 0;
- }
-
- route_dev_col = 0; /* default to usual columns */
- route_dest_col = 1;
- route_gw_col = 2;
- route_flags_col = 3;
- route_mask_col = 7;
- route_num_cols = 8;
-
- /* parse header line */
- if (fgets(route_buffer, sizeof(route_buffer), route_fd) != 0) {
- char *p = route_buffer, *q;
- int col;
- for (col = 0; col < ROUTE_MAX_COLS; ++col) {
- int used = 1;
- if ((q = strtok(p, route_delims)) == 0)
- break;
- if (strcasecmp(q, "iface") == 0)
- route_dev_col = col;
- else if (strcasecmp(q, "destination") == 0)
- route_dest_col = col;
- else if (strcasecmp(q, "gateway") == 0)
- route_gw_col = col;
- else if (strcasecmp(q, "flags") == 0)
- route_flags_col = col;
- else if (strcasecmp(q, "mask") == 0)
- route_mask_col = col;
- else
- used = 0;
- if (used && col >= route_num_cols)
- route_num_cols = col + 1;
- p = NULL;
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * read_route_table - read the next entry from the route table
- */
-
-static int read_route_table(struct rtentry *rt)
-{
- char *cols[ROUTE_MAX_COLS], *p;
- int col;
-
- memset (rt, '\0', sizeof (struct rtentry));
-
- if (fgets (route_buffer, sizeof (route_buffer), route_fd) == (char *) 0)
- return 0;
-
- p = route_buffer;
- for (col = 0; col < route_num_cols; ++col) {
- cols[col] = strtok(p, route_delims);
- if (cols[col] == NULL)
- return 0; /* didn't get enough columns */
- p = NULL;
- }
-
- SIN_ADDR(rt->rt_dst) = strtoul(cols[route_dest_col], NULL, 16);
- SIN_ADDR(rt->rt_gateway) = strtoul(cols[route_gw_col], NULL, 16);
- SIN_ADDR(rt->rt_genmask) = strtoul(cols[route_mask_col], NULL, 16);
-
- rt->rt_flags = (short) strtoul(cols[route_flags_col], NULL, 16);
- rt->rt_dev = cols[route_dev_col];
-
- return 1;
-}
-
-/********************************************************************
- *
- * defaultroute_exists - determine if there is a default route
- */
-
-static int defaultroute_exists (struct rtentry *rt)
-{
- int result = 0;
-
- if (!open_route_table())
- return 0;
-
- while (read_route_table(rt) != 0) {
- if ((rt->rt_flags & RTF_UP) == 0)
- continue;
-
- if (kernel_version > KVERSION(2,1,0) && SIN_ADDR(rt->rt_genmask) != 0)
- continue;
- if (SIN_ADDR(rt->rt_dst) == 0L) {
- result = 1;
- break;
- }
- }
-
- close_route_table();
- return result;
-}
-
-/*
- * have_route_to - determine if the system has any route to
- * a given IP address. `addr' is in network byte order.
- * Return value is 1 if yes, 0 if no, -1 if don't know.
- * For demand mode to work properly, we have to ignore routes
- * through our own interface.
- */
-int have_route_to(u_int32_t addr)
-{
- struct rtentry rt;
- int result = 0;
-
- if (!open_route_table())
- return -1; /* don't know */
-
- while (read_route_table(&rt)) {
- if ((rt.rt_flags & RTF_UP) == 0 || strcmp(rt.rt_dev, ifname) == 0)
- continue;
- if ((addr & SIN_ADDR(rt.rt_genmask)) == SIN_ADDR(rt.rt_dst)) {
- result = 1;
- break;
- }
- }
-
- close_route_table();
- return result;
-}
-
-/********************************************************************
- *
- * sifdefaultroute - assign a default route through the address given.
- */
-
-int sifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-{
- struct rtentry rt;
-
- if (defaultroute_exists(&rt) && strcmp(rt.rt_dev, ifname) != 0) {
- u_int32_t old_gateway = SIN_ADDR(rt.rt_gateway);
-
- if (old_gateway != gateway)
- error("not replacing existing default route to %s [%I]",
- rt.rt_dev, old_gateway);
- return 0;
- }
-
- memset (&rt, '\0', sizeof (rt));
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = 0L;
- }
-
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
- if ( ! ok_error ( errno ))
- error("default route ioctl(SIOCADDRT): %m(%d)", errno);
- return 0;
- }
-
- default_route_gateway = gateway;
- return 1;
-}
-
-/********************************************************************
- *
- * cifdefaultroute - delete a default route through the address given.
- */
-
-int cifdefaultroute (int unit, u_int32_t ouraddr, u_int32_t gateway)
-{
- struct rtentry rt;
-
- default_route_gateway = 0;
-
- memset (&rt, '\0', sizeof (rt));
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = 0L;
- }
-
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
- if (still_ppp()) {
- if ( ! ok_error ( errno ))
- error("default route ioctl(SIOCDELRT): %m (%d)", errno);
- return 0;
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifproxyarp - Make a proxy ARP entry for the peer.
- */
-
-int sifproxyarp (int unit, u_int32_t his_adr)
-{
- struct arpreq arpreq;
- char *forw_path;
-
- if (has_proxy_arp == 0) {
- memset (&arpreq, '\0', sizeof(arpreq));
-
- SET_SA_FAMILY(arpreq.arp_pa, AF_INET);
- SIN_ADDR(arpreq.arp_pa) = his_adr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
-/*
- * Get the hardware address of an interface on the same subnet
- * as our local address.
- */
- if (!get_ether_addr(his_adr, &arpreq.arp_ha, proxy_arp_dev,
- sizeof(proxy_arp_dev))) {
- error("Cannot determine ethernet address for proxy ARP");
- return 0;
- }
- strlcpy(arpreq.arp_dev, proxy_arp_dev, sizeof(arpreq.arp_dev));
-
- if (ioctl(sock_fd, SIOCSARP, (caddr_t)&arpreq) < 0) {
- if ( ! ok_error ( errno ))
- error("ioctl(SIOCSARP): %m(%d)", errno);
- return 0;
- }
- proxy_arp_addr = his_adr;
- has_proxy_arp = 1;
-
- if (tune_kernel) {
- forw_path = path_to_procfs("/sys/net/ipv4/ip_forward");
- if (forw_path != 0) {
- int fd = open(forw_path, O_WRONLY);
- if (fd >= 0) {
- if (write(fd, "1", 1) != 1)
- error("Couldn't enable IP forwarding: %m");
- close(fd);
- }
- }
- }
- }
-
- return 1;
-}
-
-/********************************************************************
- *
- * cifproxyarp - Delete the proxy ARP entry for the peer.
- */
-
-int cifproxyarp (int unit, u_int32_t his_adr)
-{
- struct arpreq arpreq;
-
- if (has_proxy_arp) {
- has_proxy_arp = 0;
- memset (&arpreq, '\0', sizeof(arpreq));
- SET_SA_FAMILY(arpreq.arp_pa, AF_INET);
- SIN_ADDR(arpreq.arp_pa) = his_adr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
- strlcpy(arpreq.arp_dev, proxy_arp_dev, sizeof(arpreq.arp_dev));
-
- if (ioctl(sock_fd, SIOCDARP, (caddr_t)&arpreq) < 0) {
- if ( ! ok_error ( errno ))
- warn("ioctl(SIOCDARP): %m(%d)", errno);
- return 0;
- }
- }
- return 1;
-}
-
-/********************************************************************
- *
- * get_ether_addr - get the hardware address of an interface on the
- * the same subnet as ipaddr.
- */
-
-static int get_ether_addr (u_int32_t ipaddr,
- struct sockaddr *hwaddr,
- char *name, int namelen)
-{
- struct ifreq *ifr, *ifend;
- u_int32_t ina, mask;
- char *aliasp;
- struct ifreq ifreq;
- struct ifconf ifc;
- struct ifreq ifs[MAX_IFS];
-
- ifc.ifc_len = sizeof(ifs);
- ifc.ifc_req = ifs;
- if (ioctl(sock_fd, SIOCGIFCONF, &ifc) < 0) {
- if ( ! ok_error ( errno ))
- error("ioctl(SIOCGIFCONF): %m(%d)", errno);
- return 0;
- }
-
- SYSDEBUG ((LOG_DEBUG, "proxy arp: scanning %d interfaces for IP %s",
- ifc.ifc_len / sizeof(struct ifreq), ip_ntoa(ipaddr)));
-/*
- * Scan through looking for an interface with an Internet
- * address on the same subnet as `ipaddr'.
- */
- ifend = ifs + (ifc.ifc_len / sizeof(struct ifreq));
- for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
- if (ifr->ifr_addr.sa_family == AF_INET) {
- ina = SIN_ADDR(ifr->ifr_addr);
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- SYSDEBUG ((LOG_DEBUG, "proxy arp: examining interface %s",
- ifreq.ifr_name));
-/*
- * Check that the interface is up, and not point-to-point
- * nor loopback.
- */
- if (ioctl(sock_fd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
-
- if (((ifreq.ifr_flags ^ FLAGS_GOOD) & FLAGS_MASK) != 0)
- continue;
-/*
- * Get its netmask and check that it's on the right subnet.
- */
- if (ioctl(sock_fd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
-
- mask = SIN_ADDR(ifreq.ifr_addr);
- SYSDEBUG ((LOG_DEBUG, "proxy arp: interface addr %s mask %lx",
- ip_ntoa(ina), ntohl(mask)));
-
- if (((ipaddr ^ ina) & mask) != 0)
- continue;
- break;
- }
- }
-
- if (ifr >= ifend)
- return 0;
-
- strlcpy(name, ifreq.ifr_name, namelen);
-
- /* trim off the :1 in eth0:1 */
- aliasp = strchr(name, ':');
- if (aliasp != 0)
- *aliasp = 0;
-
- info("found interface %s for proxy arp", name);
-/*
- * Now get the hardware address.
- */
- memset (&ifreq.ifr_hwaddr, 0, sizeof (struct sockaddr));
- if (ioctl (sock_fd, SIOCGIFHWADDR, &ifreq) < 0) {
- error("SIOCGIFHWADDR(%s): %m(%d)", ifreq.ifr_name, errno);
- return 0;
- }
-
- memcpy (hwaddr,
- &ifreq.ifr_hwaddr,
- sizeof (struct sockaddr));
-
- SYSDEBUG ((LOG_DEBUG,
- "proxy arp: found hwaddr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x",
- (int) ((unsigned char *) &hwaddr->sa_data)[0],
- (int) ((unsigned char *) &hwaddr->sa_data)[1],
- (int) ((unsigned char *) &hwaddr->sa_data)[2],
- (int) ((unsigned char *) &hwaddr->sa_data)[3],
- (int) ((unsigned char *) &hwaddr->sa_data)[4],
- (int) ((unsigned char *) &hwaddr->sa_data)[5],
- (int) ((unsigned char *) &hwaddr->sa_data)[6],
- (int) ((unsigned char *) &hwaddr->sa_data)[7]));
- return 1;
-}
-
-/*
- * get_if_hwaddr - get the hardware address for the specified
- * network interface device.
- */
-int
-get_if_hwaddr(u_char *addr, char *name)
-{
- struct ifreq ifreq;
- int ret, sock_fd;
-
- sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock_fd < 0)
- return 0;
- memset(&ifreq.ifr_hwaddr, 0, sizeof(struct sockaddr));
- strlcpy(ifreq.ifr_name, name, sizeof(ifreq.ifr_name));
- ret = ioctl(sock_fd, SIOCGIFHWADDR, &ifreq);
- close(sock_fd);
- if (ret >= 0)
- memcpy(addr, ifreq.ifr_hwaddr.sa_data, 6);
- return ret;
-}
-
-/*
- * get_first_ethernet - return the name of the first ethernet-style
- * interface on this system.
- */
-char *
-get_first_ethernet()
-{
- return "eth0";
-}
-
-/********************************************************************
- *
- * Return user specified netmask, modified by any mask we might determine
- * for address `addr' (in network byte order).
- * Here we scan through the system's list of interfaces, looking for
- * any non-point-to-point interfaces which might appear to be on the same
- * network as `addr'. If we find any, we OR in their netmask to the
- * user-specified netmask.
- */
-
-u_int32_t GetMask (u_int32_t addr)
-{
- u_int32_t mask, nmask, ina;
- struct ifreq *ifr, *ifend, ifreq;
- struct ifconf ifc;
- struct ifreq ifs[MAX_IFS];
-
- addr = ntohl(addr);
-
- if (IN_CLASSA(addr)) /* determine network mask for address class */
- nmask = IN_CLASSA_NET;
- else if (IN_CLASSB(addr))
- nmask = IN_CLASSB_NET;
- else
- nmask = IN_CLASSC_NET;
-
- /* class D nets are disallowed by bad_ip_adrs */
- mask = netmask | htonl(nmask);
-/*
- * Scan through the system's network interfaces.
- */
- ifc.ifc_len = sizeof(ifs);
- ifc.ifc_req = ifs;
- if (ioctl(sock_fd, SIOCGIFCONF, &ifc) < 0) {
- if ( ! ok_error ( errno ))
- warn("ioctl(SIOCGIFCONF): %m(%d)", errno);
- return mask;
- }
-
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ifr++) {
-/*
- * Check the interface's internet address.
- */
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
- ina = SIN_ADDR(ifr->ifr_addr);
- if (((ntohl(ina) ^ addr) & nmask) != 0)
- continue;
-/*
- * Check that the interface is up, and not point-to-point nor loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
-
- if (((ifreq.ifr_flags ^ FLAGS_GOOD) & FLAGS_MASK) != 0)
- continue;
-/*
- * Get its netmask and OR it into our mask.
- */
- if (ioctl(sock_fd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- mask |= SIN_ADDR(ifreq.ifr_addr);
- break;
- }
- return mask;
-}
-
-/********************************************************************
- *
- * Internal routine to decode the version.modification.patch level
- */
-
-static void decode_version (char *buf, int *version,
- int *modification, int *patch)
-{
- char *endp;
-
- *version = (int) strtoul (buf, &endp, 10);
- *modification = 0;
- *patch = 0;
-
- if (endp != buf && *endp == '.') {
- buf = endp + 1;
- *modification = (int) strtoul (buf, &endp, 10);
- if (endp != buf && *endp == '.') {
- buf = endp + 1;
- *patch = (int) strtoul (buf, &buf, 10);
- }
- }
-}
-
-/********************************************************************
- *
- * Procedure to determine if the PPP line discipline is registered.
- */
-
-static int
-ppp_registered(void)
-{
- int local_fd;
- int mfd = -1;
- int ret = 0;
- char slave[16];
-
- /*
- * We used to open the serial device and set it to the ppp line
- * discipline here, in order to create a ppp unit. But that is
- * not a good idea - the user might have specified a device that
- * they can't open (permission, or maybe it doesn't really exist).
- * So we grab a pty master/slave pair and use that.
- */
- if (!get_pty(&mfd, &local_fd, slave, 0)) {
- no_ppp_msg = "Couldn't determine if PPP is supported (no free ptys)";
- return 0;
- }
-
- /*
- * Try to put the device into the PPP discipline.
- */
- if (ioctl(local_fd, TIOCSETD, &ppp_disc) < 0) {
- error("ioctl(TIOCSETD(PPP)): %m(%d)", errno);
- } else
- ret = 1;
-
- close(local_fd);
- close(mfd);
- return ret;
-}
-
-/********************************************************************
- *
- * ppp_available - check whether the system has any ppp interfaces
- * (in fact we check whether we can do an ioctl on ppp0).
- */
-
-int ppp_available(void)
-{
- int s, ok, fd;
- struct ifreq ifr;
- int size;
- int my_version, my_modification, my_patch;
- int osmaj, osmin, ospatch;
-
- no_ppp_msg =
- "This system lacks kernel support for PPP. This could be because\n"
- "the PPP kernel module could not be loaded, or because PPP was not\n"
- "included in the kernel configuration. If PPP was included as a\n"
- "module, try `/sbin/modprobe -v ppp'. If that fails, check that\n"
- "ppp.o exists in /lib/modules/`uname -r`/net.\n"
- "See README.linux file in the ppp distribution for more details.\n";
-
- /* get the kernel version now, since we are called before sys_init */
- uname(&utsname);
- osmaj = osmin = ospatch = 0;
- sscanf(utsname.release, "%d.%d.%d", &osmaj, &osmin, &ospatch);
- kernel_version = KVERSION(osmaj, osmin, ospatch);
-
- fd = open("/dev/ppp", O_RDWR);
-#if 0
- if (fd < 0 && errno == ENOENT) {
- /* try making it and see if that helps. */
- if (mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR,
- makedev(108, 0)) >= 0) {
- fd = open("/dev/ppp", O_RDWR);
- if (fd >= 0)
- info("Created /dev/ppp device node");
- else
- unlink("/dev/ppp"); /* didn't work, undo the mknod */
- } else if (errno == EEXIST) {
- fd = open("/dev/ppp", O_RDWR);
- }
- }
-#endif /* 0 */
- if (fd >= 0) {
- new_style_driver = 1;
-
- /* XXX should get from driver */
- driver_version = 2;
- driver_modification = 4;
- driver_patch = 0;
- close(fd);
- return 1;
- }
- if (kernel_version >= KVERSION(2,3,13)) {
- if (errno == ENOENT)
- no_ppp_msg =
- "pppd is unable to open the /dev/ppp device.\n"
- "You need to create the /dev/ppp device node by\n"
- "executing the following command as root:\n"
- " mknod /dev/ppp c 108 0\n";
- return 0;
- }
-
-/*
- * Open a socket for doing the ioctl operations.
- */
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0)
- return 0;
-
- strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
- ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
-/*
- * If the device did not exist then attempt to create one by putting the
- * current tty into the PPP discipline. If this works then obtain the
- * flags for the device again.
- */
- if (!ok) {
- if (ppp_registered()) {
- strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
- ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;
- }
- }
-/*
- * Ensure that the hardware address is for PPP and not something else
- */
- if (ok)
- ok = ioctl (s, SIOCGIFHWADDR, (caddr_t) &ifr) >= 0;
-
- if (ok && ((ifr.ifr_hwaddr.sa_family & ~0xFF) != ARPHRD_PPP))
- ok = 0;
-
-/*
- * This is the PPP device. Validate the version of the driver at this
- * point to ensure that this program will work with the driver.
- */
- if (ok) {
- char abBuffer [1024];
-
- ifr.ifr_data = abBuffer;
- size = ioctl (s, SIOCGPPPVER, (caddr_t) &ifr);
- if (size < 0) {
- error("Couldn't read driver version: %m");
- ok = 0;
- no_ppp_msg = "Sorry, couldn't verify kernel driver version\n";
-
- } else {
- decode_version(abBuffer,
- &driver_version,
- &driver_modification,
- &driver_patch);
-/*
- * Validate the version of the driver against the version that we used.
- */
- decode_version(VERSION,
- &my_version,
- &my_modification,
- &my_patch);
-
- /* The version numbers must match */
- if (driver_version != my_version)
- ok = 0;
-
- /* The modification levels must be legal */
- if (driver_modification < 3) {
- if (driver_modification >= 2) {
- /* we can cope with 2.2.0 and above */
- driver_is_old = 1;
- } else {
- ok = 0;
- }
- }
-
- close (s);
- if (!ok) {
- slprintf(route_buffer, sizeof(route_buffer),
- "Sorry - PPP driver version %d.%d.%d is out of date\n",
- driver_version, driver_modification, driver_patch);
-
- no_ppp_msg = route_buffer;
- }
- }
- }
- return ok;
-}
-
-/********************************************************************
- *
- * Update the wtmp file with the appropriate user name and tty device.
- */
-
-void logwtmp (const char *line, const char *name, const char *host)
-{
- struct utmp ut, *utp;
- pid_t mypid = getpid();
-#if __GLIBC__ < 2
- int wtmp;
-#endif
-
-/*
- * Update the signon database for users.
- * Christoph Lameter: Copied from poeigl-1.36 Jan 3, 1996
- */
- utmpname(_PATH_UTMP);
- setutent();
- while ((utp = getutent()) && (utp->ut_pid != mypid))
- /* nothing */;
-
- /* Is this call really necessary? There is another one after the 'put' */
- endutent();
-
- if (utp)
- memcpy(&ut, utp, sizeof(ut));
- else
- /* some gettys/telnetds don't initialize utmp... */
- memset(&ut, 0, sizeof(ut));
-
- if (ut.ut_id[0] == 0)
- strncpy(ut.ut_id, line + 3, sizeof(ut.ut_id));
-
- strncpy(ut.ut_user, name, sizeof(ut.ut_user));
- strncpy(ut.ut_line, line, sizeof(ut.ut_line));
-
- time(&ut.ut_time);
-
- ut.ut_type = USER_PROCESS;
- ut.ut_pid = mypid;
-
- /* Insert the host name if one is supplied */
- if (*host)
- strncpy (ut.ut_host, host, sizeof(ut.ut_host));
-
- /* Insert the IP address of the remote system if IP is enabled */
- if (ipcp_protent.enabled_flag && ipcp_hisoptions[0].neg_addr)
- memcpy(&ut.ut_addr, (char *) &ipcp_hisoptions[0].hisaddr,
- sizeof(ut.ut_addr));
-
- /* CL: Makes sure that the logout works */
- if (*host == 0 && *name==0)
- ut.ut_host[0]=0;
-
- pututline(&ut);
- endutent();
-/*
- * Update the wtmp file.
- */
-#if __GLIBC__ >= 2
- updwtmp(_PATH_WTMP, &ut);
-#else
- wtmp = open(_PATH_WTMP, O_APPEND|O_WRONLY);
- if (wtmp >= 0) {
- flock(wtmp, LOCK_EX);
-
- if (write (wtmp, (char *)&ut, sizeof(ut)) != sizeof(ut))
- warn("error writing %s: %m", _PATH_WTMP);
-
- flock(wtmp, LOCK_UN);
-
- close (wtmp);
- }
-#endif
-}
-
-
-/********************************************************************
- *
- * sifvjcomp - config tcp header compression
- */
-
-int sifvjcomp (int u, int vjcomp, int cidcomp, int maxcid)
-{
- u_int x = get_flags(ppp_dev_fd);
-
- if (vjcomp) {
- if (ioctl (ppp_dev_fd, PPPIOCSMAXCID, (caddr_t) &maxcid) < 0) {
- if (! ok_error (errno))
- error("ioctl(PPPIOCSMAXCID): %m(%d)", errno);
- vjcomp = 0;
- }
- }
-
- x = vjcomp ? x | SC_COMP_TCP : x &~ SC_COMP_TCP;
- x = cidcomp ? x & ~SC_NO_TCP_CCID : x | SC_NO_TCP_CCID;
- set_flags (ppp_dev_fd, x);
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifup - Config the interface up and enable IP packets to pass.
- */
-
-int sifup(int u)
-{
- struct ifreq ifr;
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl (SIOCGIFFLAGS): %m(%d)", errno);
- return 0;
- }
-
- ifr.ifr_flags |= (IFF_UP | IFF_POINTOPOINT);
- if (ioctl(sock_fd, SIOCSIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFFLAGS): %m(%d)", errno);
- return 0;
- }
- if_is_up++;
-
- return 1;
-}
-
-/********************************************************************
- *
- * sifdown - Disable the indicated protocol and config the interface
- * down if there are no remaining protocols.
- */
-
-int sifdown (int u)
-{
- struct ifreq ifr;
-
- if (if_is_up && --if_is_up > 0)
- return 1;
-
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
- if (ioctl(sock_fd, SIOCGIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl (SIOCGIFFLAGS): %m(%d)", errno);
- return 0;
- }
-
- ifr.ifr_flags &= ~IFF_UP;
- ifr.ifr_flags |= IFF_POINTOPOINT;
- if (ioctl(sock_fd, SIOCSIFFLAGS, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFFLAGS): %m(%d)", errno);
- return 0;
- }
- return 1;
-}
-
-/********************************************************************
- *
- * sifaddr - Config the interface IP addresses and netmask.
- */
-
-int sifaddr (int unit, u_int32_t our_adr, u_int32_t his_adr,
- u_int32_t net_mask)
-{
- struct ifreq ifr;
- struct rtentry rt;
-
- memset (&ifr, '\0', sizeof (ifr));
- memset (&rt, '\0', sizeof (rt));
-
- SET_SA_FAMILY (ifr.ifr_addr, AF_INET);
- SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET);
- SET_SA_FAMILY (ifr.ifr_netmask, AF_INET);
-
- strlcpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
-/*
- * Set our IP address
- */
- SIN_ADDR(ifr.ifr_addr) = our_adr;
- if (ioctl(sock_fd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (errno != EEXIST) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFADDR): %m(%d)", errno);
- }
- else {
- warn("ioctl(SIOCSIFADDR): Address already exists");
- }
- return (0);
- }
-/*
- * Set the gateway address
- */
- SIN_ADDR(ifr.ifr_dstaddr) = his_adr;
- if (ioctl(sock_fd, SIOCSIFDSTADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFDSTADDR): %m(%d)", errno);
- return (0);
- }
-/*
- * Set the netmask.
- * For recent kernels, force the netmask to 255.255.255.255.
- */
- if (kernel_version >= KVERSION(2,1,16))
- net_mask = ~0L;
- if (net_mask != 0) {
- SIN_ADDR(ifr.ifr_netmask) = net_mask;
- if (ioctl(sock_fd, SIOCSIFNETMASK, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCSIFNETMASK): %m(%d)", errno);
- return (0);
- }
- }
-/*
- * Add the device route
- */
- if (kernel_version < KVERSION(2,1,16)) {
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
- rt.rt_dev = ifname;
-
- SIN_ADDR(rt.rt_gateway) = 0L;
- SIN_ADDR(rt.rt_dst) = his_adr;
- rt.rt_flags = RTF_UP | RTF_HOST;
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = -1L;
- }
-
- if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
- if (! ok_error (errno))
- error("ioctl(SIOCADDRT) device route: %m(%d)", errno);
- return (0);
- }
- }
-
- /* set ip_dynaddr in demand mode if address changes */
- if (demand && tune_kernel && !dynaddr_set
- && our_old_addr && our_old_addr != our_adr) {
- /* set ip_dynaddr if possible */
- char *path;
- int fd;
-
- path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
- if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) {
- if (write(fd, "1", 1) != 1)
- error("Couldn't enable dynamic IP addressing: %m");
- close(fd);
- }
- dynaddr_set = 1; /* only 1 attempt */
- }
- our_old_addr = 0;
-
- return 1;
-}
-
-/********************************************************************
- *
- * cifaddr - Clear the interface IP addresses, and delete routes
- * through the interface if possible.
- */
-
-int cifaddr (int unit, u_int32_t our_adr, u_int32_t his_adr)
-{
- struct ifreq ifr;
-
- if (kernel_version < KVERSION(2,1,16)) {
-/*
- * Delete the route through the device
- */
- struct rtentry rt;
- memset (&rt, '\0', sizeof (rt));
-
- SET_SA_FAMILY (rt.rt_dst, AF_INET);
- SET_SA_FAMILY (rt.rt_gateway, AF_INET);
- rt.rt_dev = ifname;
-
- SIN_ADDR(rt.rt_gateway) = 0;
- SIN_ADDR(rt.rt_dst) = his_adr;
- rt.rt_flags = RTF_UP | RTF_HOST;
-
- if (kernel_version > KVERSION(2,1,0)) {
- SET_SA_FAMILY (rt.rt_genmask, AF_INET);
- SIN_ADDR(rt.rt_genmask) = -1L;
- }
-
- if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
- if (still_ppp() && ! ok_error (errno))
- error("ioctl(SIOCDELRT) device route: %m(%d)", errno);
- return (0);
- }
- }
-
- /* This way it is possible to have an IPX-only or IPv6-only interface */
- memset(&ifr, 0, sizeof(ifr));
- SET_SA_FAMILY(ifr.ifr_addr, AF_INET);
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- if (ioctl(sock_fd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno)) {
- error("ioctl(SIOCSIFADDR): %m(%d)", errno);
- return 0;
- }
- }
-
- our_old_addr = our_adr;
-
- return 1;
-}
-
-#ifdef INET6
-/********************************************************************
- *
- * sif6addr - Config the interface with an IPv6 link-local address
- */
-int sif6addr (int unit, eui64_t our_eui64, eui64_t his_eui64)
-{
- struct in6_ifreq ifr6;
- struct ifreq ifr;
- struct in6_rtmsg rt6;
-
- if (sock6_fd < 0) {
- errno = -sock6_fd;
- error("IPv6 socket creation failed: %m");
- return 0;
- }
- memset(&ifr, 0, sizeof (ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock6_fd, SIOCGIFINDEX, (caddr_t) &ifr) < 0) {
- error("sif6addr: ioctl(SIOCGIFINDEX): %m (%d)", errno);
- return 0;
- }
-
- /* Local interface */
- memset(&ifr6, 0, sizeof(ifr6));
- IN6_LLADDR_FROM_EUI64(ifr6.ifr6_addr, our_eui64);
- ifr6.ifr6_ifindex = ifr.ifr_ifindex;
- ifr6.ifr6_prefixlen = 10;
-
- if (ioctl(sock6_fd, SIOCSIFADDR, &ifr6) < 0) {
- error("sif6addr: ioctl(SIOCSIFADDR): %m (%d)", errno);
- return 0;
- }
-
- /* Route to remote host */
- memset(&rt6, 0, sizeof(rt6));
- IN6_LLADDR_FROM_EUI64(rt6.rtmsg_dst, his_eui64);
- rt6.rtmsg_flags = RTF_UP;
- rt6.rtmsg_dst_len = 10;
- rt6.rtmsg_ifindex = ifr.ifr_ifindex;
- rt6.rtmsg_metric = 1;
-
- if (ioctl(sock6_fd, SIOCADDRT, &rt6) < 0) {
- error("sif6addr: ioctl(SIOCADDRT): %m (%d)", errno);
- return 0;
- }
-
- return 1;
-}
-
-
-/********************************************************************
- *
- * cif6addr - Remove IPv6 address from interface
- */
-int cif6addr (int unit, eui64_t our_eui64, eui64_t his_eui64)
-{
- struct ifreq ifr;
- struct in6_ifreq ifr6;
-
- if (sock6_fd < 0) {
- errno = -sock6_fd;
- error("IPv6 socket creation failed: %m");
- return 0;
- }
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock6_fd, SIOCGIFINDEX, (caddr_t) &ifr) < 0) {
- error("cif6addr: ioctl(SIOCGIFINDEX): %m (%d)", errno);
- return 0;
- }
-
- memset(&ifr6, 0, sizeof(ifr6));
- IN6_LLADDR_FROM_EUI64(ifr6.ifr6_addr, our_eui64);
- ifr6.ifr6_ifindex = ifr.ifr_ifindex;
- ifr6.ifr6_prefixlen = 10;
-
- if (ioctl(sock6_fd, SIOCDIFADDR, &ifr6) < 0) {
- if (errno != EADDRNOTAVAIL) {
- if (! ok_error (errno))
- error("cif6addr: ioctl(SIOCDIFADDR): %m (%d)", errno);
- }
- else {
- warn("cif6addr: ioctl(SIOCDIFADDR): No such address");
- }
- return (0);
- }
- return 1;
-}
-#endif /* INET6 */
-
-/*
- * get_pty - get a pty master/slave pair and chown the slave side
- * to the uid given. Assumes slave_name points to >= 16 bytes of space.
- */
-int
-get_pty(master_fdp, slave_fdp, slave_name, uid)
- int *master_fdp;
- int *slave_fdp;
- char *slave_name;
- int uid;
-{
- int i, mfd, sfd = -1;
- char pty_name[16];
- struct termios tios;
-
-#ifdef TIOCGPTN
- /*
- * Try the unix98 way first.
- */
- mfd = open("/dev/ptmx", O_RDWR);
- if (mfd >= 0) {
- int ptn;
- if (ioctl(mfd, TIOCGPTN, &ptn) >= 0) {
- slprintf(pty_name, sizeof(pty_name), "/dev/pts/%d", ptn);
- chmod(pty_name, S_IRUSR | S_IWUSR);
-#ifdef TIOCSPTLCK
- ptn = 0;
- if (ioctl(mfd, TIOCSPTLCK, &ptn) < 0)
- warn("Couldn't unlock pty slave %s: %m", pty_name);
-#endif
- if ((sfd = open(pty_name, O_RDWR | O_NOCTTY)) < 0)
- warn("Couldn't open pty slave %s: %m", pty_name);
- }
- }
-#endif /* TIOCGPTN */
-
- if (sfd < 0) {
- /* the old way - scan through the pty name space */
- for (i = 0; i < 64; ++i) {
- slprintf(pty_name, sizeof(pty_name), "/dev/pty%c%x",
- 'p' + i / 16, i % 16);
- mfd = open(pty_name, O_RDWR, 0);
- if (mfd >= 0) {
- pty_name[5] = 't';
- sfd = open(pty_name, O_RDWR | O_NOCTTY, 0);
- if (sfd >= 0) {
- fchown(sfd, uid, -1);
- fchmod(sfd, S_IRUSR | S_IWUSR);
- break;
- }
- close(mfd);
- }
- }
- }
-
- if (sfd < 0)
- return 0;
-
- strlcpy(slave_name, pty_name, 16);
- *master_fdp = mfd;
- *slave_fdp = sfd;
- if (tcgetattr(sfd, &tios) == 0) {
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB);
- tios.c_cflag |= CS8 | CREAD | CLOCAL;
- tios.c_iflag = IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- if (tcsetattr(sfd, TCSAFLUSH, &tios) < 0)
- warn("couldn't set attributes on pty: %m");
- } else
- warn("couldn't get attributes on pty: %m");
-
- return 1;
-}
-
-/********************************************************************
- *
- * open_loopback - open the device we use for getting packets
- * in demand mode. Under Linux, we use a pty master/slave pair.
- */
-int
-open_ppp_loopback(void)
-{
- int flags;
-
- looped = 1;
- if (new_style_driver) {
- /* allocate ourselves a ppp unit */
- if (make_ppp_unit() < 0)
- die(1);
- set_flags(ppp_dev_fd, SC_LOOP_TRAFFIC);
- set_kdebugflag(kdebugflag);
- ppp_fd = -1;
- return ppp_dev_fd;
- }
-
- if (!get_pty(&master_fd, &slave_fd, loop_name, 0))
- fatal("No free pty for loopback");
- SYSDEBUG(("using %s for loopback", loop_name));
-
- set_ppp_fd(slave_fd);
-
- flags = fcntl(master_fd, F_GETFL);
- if (flags == -1 ||
- fcntl(master_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set master loopback to nonblock: %m(%d)", errno);
-
- flags = fcntl(ppp_fd, F_GETFL);
- if (flags == -1 ||
- fcntl(ppp_fd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set slave loopback to nonblock: %m(%d)", errno);
-
- if (ioctl(ppp_fd, TIOCSETD, &ppp_disc) < 0)
- fatal("ioctl(TIOCSETD): %m(%d)", errno);
-/*
- * Find out which interface we were given.
- */
- if (ioctl(ppp_fd, PPPIOCGUNIT, &ifunit) < 0)
- fatal("ioctl(PPPIOCGUNIT): %m(%d)", errno);
-/*
- * Enable debug in the driver if requested.
- */
- set_kdebugflag (kdebugflag);
-
- return master_fd;
-}
-
-/********************************************************************
- *
- * restore_loop - reattach the ppp unit to the loopback.
- *
- * The kernel ppp driver automatically reattaches the ppp unit to
- * the loopback if the serial port is set to a line discipline other
- * than ppp, or if it detects a modem hangup. The former will happen
- * in disestablish_ppp if the latter hasn't already happened, so we
- * shouldn't need to do anything.
- *
- * Just to be sure, set the real serial port to the normal discipline.
- */
-
-static void
-restore_loop(void)
-{
- looped = 1;
- if (new_style_driver) {
- set_flags(ppp_dev_fd, get_flags(ppp_dev_fd) | SC_LOOP_TRAFFIC);
- return;
- }
- if (ppp_fd != slave_fd) {
- (void) ioctl(ppp_fd, TIOCSETD, &tty_disc);
- set_ppp_fd(slave_fd);
- }
-}
-
-/********************************************************************
- *
- * sifnpmode - Set the mode for handling packets for a given NP.
- */
-
-int
-sifnpmode(u, proto, mode)
- int u;
- int proto;
- enum NPmode mode;
-{
- struct npioctl npi;
-
- npi.protocol = proto;
- npi.mode = mode;
- if (ioctl(ppp_dev_fd, PPPIOCSNPMODE, (caddr_t) &npi) < 0) {
- if (! ok_error (errno))
- error("ioctl(PPPIOCSNPMODE, %d, %d): %m (%d)",
- proto, mode, errno);
- return 0;
- }
- return 1;
-}
-
-
-/********************************************************************
- *
- * sipxfaddr - Config the interface IPX networknumber
- */
-
-int sipxfaddr (int unit, unsigned long int network, unsigned char * node )
-{
- int result = 1;
-
-#ifdef IPX_CHANGE
- int skfd;
- struct ifreq ifr;
- struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) &ifr.ifr_addr;
-
- skfd = socket (AF_IPX, SOCK_DGRAM, 0);
- if (skfd < 0) {
- if (! ok_error (errno))
- dbglog("socket(AF_IPX): %m (%d)", errno);
- result = 0;
- }
- else {
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy (ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- memcpy (sipx->sipx_node, node, IPX_NODE_LEN);
- sipx->sipx_family = AF_IPX;
- sipx->sipx_port = 0;
- sipx->sipx_network = htonl (network);
- sipx->sipx_type = IPX_FRAME_ETHERII;
- sipx->sipx_action = IPX_CRTITF;
-/*
- * Set the IPX device
- */
- if (ioctl(skfd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- result = 0;
- if (errno != EEXIST) {
- if (! ok_error (errno))
- dbglog("ioctl(SIOCSIFADDR, CRTITF): %m (%d)", errno);
- }
- else {
- warn("ioctl(SIOCSIFADDR, CRTITF): Address already exists");
- }
- }
- close (skfd);
- }
-#endif
- return result;
-}
-
-/********************************************************************
- *
- * cipxfaddr - Clear the information for the IPX network. The IPX routes
- * are removed and the device is no longer able to pass IPX
- * frames.
- */
-
-int cipxfaddr (int unit)
-{
- int result = 1;
-
-#ifdef IPX_CHANGE
- int skfd;
- struct ifreq ifr;
- struct sockaddr_ipx *sipx = (struct sockaddr_ipx *) &ifr.ifr_addr;
-
- skfd = socket (AF_IPX, SOCK_DGRAM, 0);
- if (skfd < 0) {
- if (! ok_error (errno))
- dbglog("socket(AF_IPX): %m (%d)", errno);
- result = 0;
- }
- else {
- memset (&ifr, '\0', sizeof (ifr));
- strlcpy (ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-
- sipx->sipx_type = IPX_FRAME_ETHERII;
- sipx->sipx_action = IPX_DLTITF;
- sipx->sipx_family = AF_IPX;
-/*
- * Set the IPX device
- */
- if (ioctl(skfd, SIOCSIFADDR, (caddr_t) &ifr) < 0) {
- if (! ok_error (errno))
- info("ioctl(SIOCSIFADDR, IPX_DLTITF): %m (%d)", errno);
- result = 0;
- }
- close (skfd);
- }
-#endif
- return result;
-}
-
-/*
- * Use the hostname as part of the random number seed.
- */
-int
-get_host_seed()
-{
- int h;
- char *p = hostname;
-
- h = 407;
- for (p = hostname; *p != 0; ++p)
- h = h * 37 + *p;
- return h;
-}
-
-/********************************************************************
- *
- * sys_check_options - check the options that the user specified
- */
-
-int
-sys_check_options(void)
-{
-#ifdef IPX_CHANGE
-/*
- * Disable the IPX protocol if the support is not present in the kernel.
- */
- char *path;
-
- if (ipxcp_protent.enabled_flag) {
- struct stat stat_buf;
- if ((path = path_to_procfs("/net/ipx_interface")) == 0
- || lstat(path, &stat_buf) < 0) {
- error("IPX support is not present in the kernel\n");
- ipxcp_protent.enabled_flag = 0;
- }
- }
-#endif
- if (demand && driver_is_old) {
- option_error("demand dialling is not supported by kernel driver "
- "version %d.%d.%d", driver_version, driver_modification,
- driver_patch);
- return 0;
- }
- if (multilink && !new_style_driver) {
- warn("Warning: multilink is not supported by the kernel driver");
- multilink = 0;
- }
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/sys-solaris.c b/mdk-stage1/ppp/pppd/sys-solaris.c
deleted file mode 100644
index da5f9c45a..000000000
--- a/mdk-stage1/ppp/pppd/sys-solaris.c
+++ /dev/null
@@ -1,2737 +0,0 @@
-/*
- * System-dependent procedures for pppd under Solaris 2.
- *
- * Parts re-written by Adi Masputra <adi.masputra@sun.com>, based on
- * the original sys-svr4.c
- *
- * Copyright (c) 2000 by Sun Microsystems, Inc.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies.
- *
- * SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-#define RCSID "$Id$"
-
-#include <limits.h>
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <termios.h>
-#ifndef CRTSCTS
-#include <sys/termiox.h>
-#endif
-#include <signal.h>
-#include <utmpx.h>
-#include <sys/types.h>
-#include <sys/ioccom.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/sysmacros.h>
-#include <sys/systeminfo.h>
-#include <sys/dlpi.h>
-#include <sys/stat.h>
-#include <sys/mkdev.h>
-#include <net/if.h>
-#include <net/if_arp.h>
-#include <net/route.h>
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include <netinet/in.h>
-#ifdef SOL2
-#include <sys/tihdr.h>
-#include <sys/tiuser.h>
-#include <inet/common.h>
-#include <inet/mib2.h>
-#include <sys/ethernet.h>
-#endif
-
-#include "pppd.h"
-#include "fsm.h"
-#include "lcp.h"
-#include "ipcp.h"
-#include "ccp.h"
-
-#if !defined(PPP_DRV_NAME)
-#define PPP_DRV_NAME "ppp"
-#endif /* !defined(PPP_DRV_NAME) */
-
-#if !defined(PPP_DEV_NAME)
-#define PPP_DEV_NAME "/dev/" PPP_DRV_NAME
-#endif /* !defined(PPP_DEV_NAME) */
-
-#if !defined(AHDLC_MOD_NAME)
-#define AHDLC_MOD_NAME "ppp_ahdl"
-#endif /* !defined(AHDLC_MOD_NAME) */
-
-#if !defined(COMP_MOD_NAME)
-#define COMP_MOD_NAME "ppp_comp"
-#endif /* !defined(COMP_MOD_NAME) */
-
-#if !defined(IP_DEV_NAME)
-#define IP_DEV_NAME "/dev/ip"
-#endif /* !defined(IP_DEV_NAME) */
-
-#if !defined(IP_MOD_NAME)
-#define IP_MOD_NAME "ip"
-#endif /* !defined(IP_MOD_NAME) */
-
-#if !defined(UDP_DEV_NAME) && defined(SOL2)
-#define UDP_DEV_NAME "/dev/udp"
-#endif /* !defined(UDP_DEV_NAME) && defined(SOL2) */
-
-#if !defined(UDP6_DEV_NAME) && defined(SOL2)
-#define UDP6_DEV_NAME "/dev/udp6"
-#endif /* !defined(UDP6_DEV_NAME) && defined(SOL2) */
-
-static const char rcsid[] = RCSID;
-
-#if defined(SOL2)
-/*
- * "/dev/udp" is used as a multiplexor to PLINK the interface stream
- * under. It is used in place of "/dev/ip" since STREAMS will not let
- * a driver be PLINK'ed under itself, and "/dev/ip" is typically the
- * driver at the bottom of the tunneling interfaces stream.
- */
-static char *mux_dev_name = UDP_DEV_NAME;
-#else
-static char *mux_dev_name = IP_DEV_NAME;
-#endif
-static int pppfd;
-static int fdmuxid = -1;
-static int ipfd;
-static int ipmuxid = -1;
-
-#if defined(INET6) && defined(SOL2)
-static int ip6fd; /* IP file descriptor */
-static int ip6muxid = -1; /* Multiplexer file descriptor */
-static int if6_is_up = 0; /* IPv6 interface has been marked up */
-
-#define _IN6_LLX_FROM_EUI64(l, s, eui64, as) do { \
- s->sin6_addr.s6_addr32[0] = htonl(as); \
- eui64_copy(eui64, s->sin6_addr.s6_addr32[2]); \
- s->sin6_family = AF_INET6; \
- l.lifr_addr.ss_family = AF_INET6; \
- l.lifr_addrlen = 10; \
- l.lifr_addr = laddr; \
- } while (0)
-
-#define IN6_LLADDR_FROM_EUI64(l, s, eui64) \
- _IN6_LLX_FROM_EUI64(l, s, eui64, 0xfe800000)
-
-#define IN6_LLTOKEN_FROM_EUI64(l, s, eui64) \
- _IN6_LLX_FROM_EUI64(l, s, eui64, 0)
-
-#endif /* defined(INET6) && defined(SOL2) */
-
-#if defined(INET6) && defined(SOL2)
-static char first_ether_name[LIFNAMSIZ]; /* Solaris 8 and above */
-#else
-static char first_ether_name[IFNAMSIZ]; /* Before Solaris 8 */
-#define MAXIFS 256 /* Max # of interfaces */
-#endif /* defined(INET6) && defined(SOL2) */
-
-static int restore_term;
-static struct termios inittermios;
-#ifndef CRTSCTS
-static struct termiox inittermiox;
-static int termiox_ok;
-#endif
-static struct winsize wsinfo; /* Initial window size info */
-static pid_t tty_sid; /* original session ID for terminal */
-
-extern u_char inpacket_buf[]; /* borrowed from main.c */
-
-#define MAX_POLLFDS 32
-static struct pollfd pollfds[MAX_POLLFDS];
-static int n_pollfds;
-
-static int link_mtu, link_mru;
-
-#define NMODULES 32
-static int tty_nmodules;
-static char tty_modules[NMODULES][FMNAMESZ+1];
-static int tty_npushed;
-
-static int if_is_up; /* Interface has been marked up */
-static u_int32_t remote_addr; /* IP address of peer */
-static u_int32_t default_route_gateway; /* Gateway for default route added */
-static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
-
-/* Prototypes for procedures local to this file. */
-static int translate_speed __P((int));
-static int baud_rate_of __P((int));
-static int get_ether_addr __P((u_int32_t, struct sockaddr *));
-static int get_hw_addr __P((char *, u_int32_t, struct sockaddr *));
-static int get_hw_addr_dlpi __P((char *, struct sockaddr *));
-static int dlpi_attach __P((int, int));
-static int dlpi_info_req __P((int));
-static int dlpi_get_reply __P((int, union DL_primitives *, int, int));
-static int strioctl __P((int, int, void *, int, int));
-
-#ifdef SOL2
-/*
- * sifppa - Sets interface ppa
- *
- * without setting the ppa, ip module will return EINVAL upon setting the
- * interface UP (SIOCSxIFFLAGS). This is because ip module in 2.8 expects
- * two DLPI_INFO_REQ to be sent down to the driver (below ip) before
- * IFF_UP can be set. Plumbing the device causes one DLPI_INFO_REQ to
- * be sent down, and the second DLPI_INFO_REQ is sent upon receiving
- * IF_UNITSEL (old) or SIOCSLIFNAME (new) ioctls. Such setting of the ppa
- * is required because the ppp DLPI provider advertises itself as
- * a DLPI style 2 type, which requires a point of attachment to be
- * specified. The only way the user can specify a point of attachment
- * is via SIOCSLIFNAME or IF_UNITSEL.
- *
- * Such changes in the behavior of ip module was made to meet new or
- * evolving standards requirements.
- *
- */
-static int
-sifppa(fd, ppa)
- int fd;
- int ppa;
-{
- return (int)ioctl(fd, IF_UNITSEL, (char *)&ppa);
-}
-#endif /* SOL2 */
-
-#if defined(SOL2) && defined(INET6)
-/*
- * get_first_ethernet - returns the first Ethernet interface name found in
- * the system, or NULL if none is found
- *
- * NOTE: This is the lifreq version (Solaris 8 and above)
- */
-char *
-get_first_ethernet()
-{
- struct lifnum lifn;
- struct lifconf lifc;
- struct lifreq *plifreq;
- struct lifreq lifr;
- int fd, num_ifs, i, found;
- uint_t fl, req_size;
- char *req;
-
- fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (fd < 0) {
- return 0;
- }
-
- /*
- * Find out how many interfaces are running
- */
- lifn.lifn_family = AF_UNSPEC;
- lifn.lifn_flags = LIFC_NOXMIT;
- if (ioctl(fd, SIOCGLIFNUM, &lifn) < 0) {
- close(fd);
- error("could not determine number of interfaces: %m");
- return 0;
- }
-
- num_ifs = lifn.lifn_count;
- req_size = num_ifs * sizeof(struct lifreq);
- req = malloc(req_size);
- if (req == NULL) {
- close(fd);
- error("out of memory");
- return 0;
- }
-
- /*
- * Get interface configuration info for all interfaces
- */
- lifc.lifc_family = AF_UNSPEC;
- lifc.lifc_flags = LIFC_NOXMIT;
- lifc.lifc_len = req_size;
- lifc.lifc_buf = req;
- if (ioctl(fd, SIOCGLIFCONF, &lifc) < 0) {
- close(fd);
- free(req);
- error("SIOCGLIFCONF: %m");
- return 0;
- }
-
- /*
- * And traverse each interface to look specifically for the first
- * occurence of an Ethernet interface which has been marked up
- */
- plifreq = lifc.lifc_req;
- found = 0;
- for (i = lifc.lifc_len / sizeof(struct lifreq); i > 0; i--, plifreq++) {
-
- if (strchr(plifreq->lifr_name, ':') != NULL)
- continue;
-
- memset(&lifr, 0, sizeof(lifr));
- strncpy(lifr.lifr_name, plifreq->lifr_name, sizeof(lifr.lifr_name));
- if (ioctl(fd, SIOCGLIFFLAGS, &lifr) < 0) {
- close(fd);
- free(req);
- error("SIOCGLIFFLAGS: %m");
- return 0;
- }
- fl = lifr.lifr_flags;
-
- if ((fl & (IFF_UP|IFF_BROADCAST|IFF_POINTOPOINT|IFF_LOOPBACK|IFF_NOARP))
- != (IFF_UP | IFF_BROADCAST))
- continue;
-
- found = 1;
- break;
- }
- free(req);
- close(fd);
-
- if (found) {
- strncpy(first_ether_name, lifr.lifr_name, sizeof(first_ether_name));
- return (char *)first_ether_name;
- } else
- return NULL;
-}
-#else
-/*
- * get_first_ethernet - returns the first Ethernet interface name found in
- * the system, or NULL if none is found
- *
- * NOTE: This is the ifreq version (before Solaris 8).
- */
-char *
-get_first_ethernet()
-{
- struct ifconf ifc;
- struct ifreq *pifreq;
- struct ifreq ifr;
- int fd, num_ifs, i, found;
- uint_t fl, req_size;
- char *req;
-
- fd = socket(AF_INET, SOCK_DGRAM, 0);
- if (fd < 0) {
- return 0;
- }
-
- /*
- * Find out how many interfaces are running
- */
- if (ioctl(fd, SIOCGIFNUM, (char *)&num_ifs) < 0) {
- num_ifs = MAXIFS;
- }
-
- req_size = num_ifs * sizeof(struct ifreq);
- req = malloc(req_size);
- if (req == NULL) {
- close(fd);
- error("out of memory");
- return 0;
- }
-
- /*
- * Get interface configuration info for all interfaces
- */
- ifc.ifc_len = req_size;
- ifc.ifc_buf = req;
- if (ioctl(fd, SIOCGIFCONF, &ifc) < 0) {
- close(fd);
- free(req);
- error("SIOCGIFCONF: %m");
- return 0;
- }
-
- /*
- * And traverse each interface to look specifically for the first
- * occurence of an Ethernet interface which has been marked up
- */
- pifreq = ifc.ifc_req;
- found = 0;
- for (i = ifc.ifc_len / sizeof(struct ifreq); i > 0; i--, pifreq++) {
-
- if (strchr(pifreq->ifr_name, ':') != NULL)
- continue;
-
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, pifreq->ifr_name, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
- close(fd);
- free(req);
- error("SIOCGIFFLAGS: %m");
- return 0;
- }
- fl = ifr.ifr_flags;
-
- if ((fl & (IFF_UP|IFF_BROADCAST|IFF_POINTOPOINT|IFF_LOOPBACK|IFF_NOARP))
- != (IFF_UP | IFF_BROADCAST))
- continue;
-
- found = 1;
- break;
- }
- free(req);
- close(fd);
-
- if (found) {
- strncpy(first_ether_name, ifr.ifr_name, sizeof(first_ether_name));
- return (char *)first_ether_name;
- } else
- return NULL;
-}
-#endif /* defined(SOL2) && defined(INET6) */
-
-#if defined(SOL2)
-/*
- * get_if_hwaddr - get the hardware address for the specified
- * network interface device.
- */
-int
-get_if_hwaddr(u_char *addr, char *if_name)
-{
- struct sockaddr s_eth_addr;
- struct ether_addr *eth_addr = (struct ether_addr *)&s_eth_addr.sa_data;
-
- if (if_name == NULL)
- return -1;
-
- /*
- * Send DL_INFO_REQ to the driver to solicit its MAC address
- */
- if (!get_hw_addr_dlpi(if_name, &s_eth_addr)) {
- error("could not obtain hardware address for %s", if_name);
- return -1;
- }
-
- memcpy(addr, eth_addr->ether_addr_octet, 6);
- return 1;
-}
-#endif /* SOL2 */
-
-#if defined(SOL2) && defined(INET6)
-/*
- * slifname - Sets interface ppa and flags
- *
- * in addition to the comments stated in sifppa(), IFF_IPV6 bit must
- * be set in order to declare this as an IPv6 interface
- */
-static int
-slifname(fd, ppa)
- int fd;
- int ppa;
-{
- struct lifreq lifr;
- int ret;
-
- memset(&lifr, 0, sizeof(lifr));
- ret = ioctl(fd, SIOCGLIFFLAGS, &lifr);
- if (ret < 0)
- goto slifname_done;
-
- lifr.lifr_flags |= IFF_IPV6;
- lifr.lifr_flags &= ~(IFF_BROADCAST | IFF_IPV4);
- lifr.lifr_ppa = ppa;
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
-
- ret = ioctl(fd, SIOCSLIFNAME, &lifr);
-
-slifname_done:
- return ret;
-
-
-}
-
-
-/*
- * ether_to_eui64 - Convert 48-bit Ethernet address into 64-bit EUI
- *
- * walks the list of valid ethernet interfaces, and convert the first
- * found 48-bit MAC address into EUI 64. caller also assumes that
- * the system has a properly configured Ethernet interface for this
- * function to return non-zero.
- */
-int
-ether_to_eui64(eui64_t *p_eui64)
-{
- struct sockaddr s_eth_addr;
- struct ether_addr *eth_addr = (struct ether_addr *)&s_eth_addr.sa_data;
- char *if_name;
-
- if ((if_name = get_first_ethernet()) == NULL) {
- error("no persistent id can be found");
- return 0;
- }
-
- /*
- * Send DL_INFO_REQ to the driver to solicit its MAC address
- */
- if (!get_hw_addr_dlpi(if_name, &s_eth_addr)) {
- error("could not obtain hardware address for %s", if_name);
- return 0;
- }
-
- /*
- * And convert the EUI-48 into EUI-64, per RFC 2472 [sec 4.1]
- */
- p_eui64->e8[0] = (eth_addr->ether_addr_octet[0] & 0xFF) | 0x02;
- p_eui64->e8[1] = (eth_addr->ether_addr_octet[1] & 0xFF);
- p_eui64->e8[2] = (eth_addr->ether_addr_octet[2] & 0xFF);
- p_eui64->e8[3] = 0xFF;
- p_eui64->e8[4] = 0xFE;
- p_eui64->e8[5] = (eth_addr->ether_addr_octet[3] & 0xFF);
- p_eui64->e8[6] = (eth_addr->ether_addr_octet[4] & 0xFF);
- p_eui64->e8[7] = (eth_addr->ether_addr_octet[5] & 0xFF);
-
- return 1;
-}
-#endif /* defined(SOL2) && defined(INET6) */
-
-/*
- * sys_init - System-dependent initialization.
- */
-void
-sys_init()
-{
- int ifd, x;
- struct ifreq ifr;
-#if defined(INET6) && defined(SOL2)
- int i6fd;
- struct lifreq lifr;
-#endif /* defined(INET6) && defined(SOL2) */
-#if !defined(SOL2)
- struct {
- union DL_primitives prim;
- char space[64];
- } reply;
-#endif /* !defined(SOL2) */
-
- ipfd = open(mux_dev_name, O_RDWR, 0);
- if (ipfd < 0)
- fatal("Couldn't open IP device: %m");
-
-#if defined(INET6) && defined(SOL2)
- ip6fd = open(UDP6_DEV_NAME, O_RDWR, 0);
- if (ip6fd < 0)
- fatal("Couldn't open IP device (2): %m");
-#endif /* defined(INET6) && defined(SOL2) */
-
- if (default_device && !notty)
- tty_sid = getsid((pid_t)0);
-
- pppfd = open(PPP_DEV_NAME, O_RDWR | O_NONBLOCK, 0);
- if (pppfd < 0)
- fatal("Can't open %s: %m", PPP_DEV_NAME);
- if (kdebugflag & 1) {
- x = PPPDBG_LOG + PPPDBG_DRIVER;
- strioctl(pppfd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
-
- /* Assign a new PPA and get its unit number. */
- if (strioctl(pppfd, PPPIO_NEWPPA, &ifunit, 0, sizeof(int)) < 0)
- fatal("Can't create new PPP interface: %m");
-
-#if defined(SOL2)
- /*
- * Since sys_init() is called prior to ifname being set in main(),
- * we need to get the ifname now, otherwise slifname(), and others,
- * will fail, or maybe, I should move them to a later point ?
- * <adi.masputra@sun.com>
- */
- sprintf(ifname, PPP_DRV_NAME "%d", ifunit);
-#endif /* defined(SOL2) */
- /*
- * Open the ppp device again and link it under the ip multiplexor.
- * IP will assign a unit number which hopefully is the same as ifunit.
- * I don't know any way to be certain they will be the same. :-(
- */
- ifd = open(PPP_DEV_NAME, O_RDWR, 0);
- if (ifd < 0)
- fatal("Can't open %s (2): %m", PPP_DEV_NAME);
- if (kdebugflag & 1) {
- x = PPPDBG_LOG + PPPDBG_DRIVER;
- strioctl(ifd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
-
-#if defined(INET6) && defined(SOL2)
- i6fd = open(PPP_DEV_NAME, O_RDWR, 0);
- if (i6fd < 0) {
- close(ifd);
- fatal("Can't open %s (3): %m", PPP_DEV_NAME);
- }
- if (kdebugflag & 1) {
- x = PPPDBG_LOG + PPPDBG_DRIVER;
- strioctl(i6fd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
-#endif /* defined(INET6) && defined(SOL2) */
-
-#if defined(SOL2)
- if (ioctl(ifd, I_PUSH, IP_MOD_NAME) < 0) {
- close(ifd);
-#if defined(INET6)
- close(i6fd);
-#endif /* defined(INET6) */
- fatal("Can't push IP module: %m");
- }
-
- /*
- * Assign ppa according to the unit number returned by ppp device
- * after plumbing is completed above.
- */
- if (sifppa(ifd, ifunit) < 0) {
- close (ifd);
-#if defined(INET6)
- close(i6fd);
-#endif /* defined(INET6) */
- fatal("Can't set ppa for unit %d: %m", ifunit);
- }
-
-#if defined(INET6)
- /*
- * An IPv6 interface is created anyway, even when the user does not
- * explicitly enable it. Note that the interface will be marked
- * IPv6 during slifname().
- */
- if (ioctl(i6fd, I_PUSH, IP_MOD_NAME) < 0) {
- close(ifd);
- close(i6fd);
- fatal("Can't push IP module (2): %m");
- }
-
- /*
- * Assign ppa according to the unit number returned by ppp device
- * after plumbing is completed above. In addition, mark the interface
- * as an IPv6 interface.
- */
- if (slifname(i6fd, ifunit) < 0) {
- close(ifd);
- close(i6fd);
- fatal("Can't set ifname for unit %d: %m", ifunit);
- }
-#endif /* defined(INET6) */
-
- ipmuxid = ioctl(ipfd, I_PLINK, ifd);
- close(ifd);
- if (ipmuxid < 0) {
-#if defined(INET6)
- close(i6fd);
-#endif /* defined(INET6) */
- fatal("Can't I_PLINK PPP device to IP: %m");
- }
-
- memset(&ifr, 0, sizeof(ifr));
- sprintf(ifr.ifr_name, "%s", ifname);
- ifr.ifr_ip_muxid = ipmuxid;
-
- /*
- * In Sol 8 and later, STREAMS dynamic module plumbing feature exists.
- * This is so that an arbitrary module can be inserted, or deleted,
- * between ip module and the device driver without tearing down the
- * existing stream. Such feature requires the mux ids, which is set
- * by SIOCSIFMUXID (or SIOCLSIFMUXID).
- */
- if (ioctl(ipfd, SIOCSIFMUXID, &ifr) < 0) {
- ioctl(ipfd, I_PUNLINK, ipmuxid);
-#if defined(INET6)
- close(i6fd);
-#endif /* defined(INET6) */
- fatal("SIOCSIFMUXID: %m");
- }
-
-#else /* else if !defined(SOL2) */
-
- if (dlpi_attach(ifd, ifunit) < 0 ||
- dlpi_get_reply(ifd, &reply.prim, DL_OK_ACK, sizeof(reply)) < 0) {
- close(ifd);
- fatal("Can't attach to ppp%d: %m", ifunit);
- }
-
- ipmuxid = ioctl(ipfd, I_LINK, ifd);
- close(ifd);
- if (ipmuxid < 0)
- fatal("Can't link PPP device to IP: %m");
-#endif /* defined(SOL2) */
-
-#if defined(INET6) && defined(SOL2)
- ip6muxid = ioctl(ip6fd, I_PLINK, i6fd);
- close(i6fd);
- if (ip6muxid < 0) {
- ioctl(ipfd, I_PUNLINK, ipmuxid);
- fatal("Can't I_PLINK PPP device to IP (2): %m");
- }
-
- memset(&lifr, 0, sizeof(lifr));
- sprintf(lifr.lifr_name, "%s", ifname);
- lifr.lifr_ip_muxid = ip6muxid;
-
- /*
- * Let IP know of the mux id [see comment for SIOCSIFMUXID above]
- */
- if (ioctl(ip6fd, SIOCSLIFMUXID, &lifr) < 0) {
- ioctl(ipfd, I_PUNLINK, ipmuxid);
- ioctl(ip6fd, I_PUNLINK, ip6muxid);
- fatal("Can't link PPP device to IP (2): %m");
- }
-#endif /* defined(INET6) && defined(SOL2) */
-
-#if !defined(SOL2)
- /* Set the interface name for the link. */
- slprintf(ifr.ifr_name, sizeof(ifr.ifr_name), PPP_DRV_NAME "%d", ifunit);
- ifr.ifr_metric = ipmuxid;
- if (strioctl(ipfd, SIOCSIFNAME, (char *)&ifr, sizeof ifr, 0) < 0)
- fatal("Can't set interface name %s: %m", ifr.ifr_name);
-#endif /* !defined(SOL2) */
-
- n_pollfds = 0;
-}
-
-/*
- * sys_cleanup - restore any system state we modified before exiting:
- * mark the interface down, delete default route and/or proxy arp entry.
- * This should call die() because it's called from die().
- */
-void
-sys_cleanup()
-{
-#if defined(SOL2)
- struct ifreq ifr;
-#if defined(INET6)
- struct lifreq lifr;
-#endif /* defined(INET6) */
-#endif /* defined(SOL2) */
-
-#if defined(SOL2) && defined(INET6)
- if (if6_is_up)
- sif6down(0);
-#endif /* defined(SOL2) && defined(INET6) */
- if (if_is_up)
- sifdown(0);
- if (default_route_gateway)
- cifdefaultroute(0, default_route_gateway, default_route_gateway);
- if (proxy_arp_addr)
- cifproxyarp(0, proxy_arp_addr);
-#if defined(SOL2)
- /*
- * Make sure we ask ip what the muxid, because 'ifconfig modlist' will
- * unlink and re-link the modules, causing the muxid to change.
- */
- memset(&ifr, 0, sizeof(ifr));
- sprintf(ifr.ifr_name, "%s", ifname);
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifr) < 0) {
- error("SIOCGIFFLAGS: %m");
- return;
- }
-
- if (ioctl(ipfd, SIOCGIFMUXID, &ifr) < 0) {
- error("SIOCGIFMUXID: %m");
- return;
- }
-
- ipmuxid = ifr.ifr_ip_muxid;
-
- if (ioctl(ipfd, I_PUNLINK, ipmuxid) < 0) {
- error("Can't I_PUNLINK PPP from IP: %m");
- return;
- }
-#if defined(INET6)
- /*
- * Make sure we ask ip what the muxid, because 'ifconfig modlist' will
- * unlink and re-link the modules, causing the muxid to change.
- */
- memset(&lifr, 0, sizeof(lifr));
- sprintf(lifr.lifr_name, "%s", ifname);
- if (ioctl(ip6fd, SIOCGLIFFLAGS, &lifr) < 0) {
- error("SIOCGLIFFLAGS: %m");
- return;
- }
-
- if (ioctl(ip6fd, SIOCGLIFMUXID, &lifr) < 0) {
- error("SIOCGLIFMUXID: %m");
- return;
- }
-
- ip6muxid = lifr.lifr_ip_muxid;
-
- if (ioctl(ip6fd, I_PUNLINK, ip6muxid) < 0) {
- error("Can't I_PUNLINK PPP from IP (2): %m");
- }
-#endif /* defined(INET6) */
-#endif /* defined(SOL2) */
-}
-
-/*
- * sys_close - Clean up in a child process before execing.
- */
-void
-sys_close()
-{
- close(ipfd);
-#if defined(INET6) && defined(SOL2)
- close(ip6fd);
-#endif /* defined(INET6) && defined(SOL2) */
- if (pppfd >= 0)
- close(pppfd);
-}
-
-/*
- * sys_check_options - check the options that the user specified
- */
-int
-sys_check_options()
-{
- return 1;
-}
-
-#if 0
-/*
- * daemon - Detach us from controlling terminal session.
- */
-int
-daemon(nochdir, noclose)
- int nochdir, noclose;
-{
- int pid;
-
- if ((pid = fork()) < 0)
- return -1;
- if (pid != 0)
- exit(0); /* parent dies */
- setsid();
- if (!nochdir)
- chdir("/");
- if (!noclose) {
- fclose(stdin); /* don't need stdin, stdout, stderr */
- fclose(stdout);
- fclose(stderr);
- }
- return 0;
-}
-#endif
-
-/*
- * ppp_available - check whether the system has any ppp interfaces
- */
-int
-ppp_available()
-{
- struct stat buf;
-
- return stat(PPP_DEV_NAME, &buf) >= 0;
-}
-
-/*
- * any_compressions - see if compression is enabled or not
- *
- * In the STREAMS implementation of kernel-portion pppd,
- * the comp STREAMS module performs the ACFC, PFC, as well
- * CCP and VJ compressions. However, if the user has explicitly
- * declare to not enable them from the command line, there is
- * no point of having the comp module be pushed on the stream.
- */
-static int
-any_compressions()
-{
- if ((!lcp_wantoptions[0].neg_accompression) &&
- (!lcp_wantoptions[0].neg_pcompression) &&
- (!ccp_protent.enabled_flag) &&
- (!ipcp_wantoptions[0].neg_vj)) {
- return 0;
- }
- return 1;
-}
-
-/*
- * tty_establish_ppp - Turn the serial port into a ppp interface.
- */
-int
-tty_establish_ppp(fd)
- int fd;
-{
- int i;
-
- /* Pop any existing modules off the tty stream. */
- for (i = 0;; ++i)
- if (ioctl(fd, I_LOOK, tty_modules[i]) < 0
- || strcmp(tty_modules[i], "ptem") == 0
- || ioctl(fd, I_POP, 0) < 0)
- break;
- tty_nmodules = i;
-
- /* Push the async hdlc module and the compressor module. */
- tty_npushed = 0;
-
- if(!sync_serial) {
- if (ioctl(fd, I_PUSH, AHDLC_MOD_NAME) < 0) {
- error("Couldn't push PPP Async HDLC module: %m");
- return -1;
- }
- ++tty_npushed;
- }
- if (kdebugflag & 4) {
- i = PPPDBG_LOG + PPPDBG_AHDLC;
- strioctl(pppfd, PPPIO_DEBUG, &i, sizeof(int), 0);
- }
- /*
- * There's no need to push comp module if we don't intend
- * to compress anything
- */
- if (any_compressions()) {
- if (ioctl(fd, I_PUSH, COMP_MOD_NAME) < 0)
- error("Couldn't push PPP compression module: %m");
- else
- ++tty_npushed;
- }
-
- if (kdebugflag & 2) {
- i = PPPDBG_LOG;
- if (any_compressions())
- i += PPPDBG_COMP;
- strioctl(pppfd, PPPIO_DEBUG, &i, sizeof(int), 0);
- }
-
- /* Link the serial port under the PPP multiplexor. */
- if ((fdmuxid = ioctl(pppfd, I_LINK, fd)) < 0) {
- error("Can't link tty to PPP mux: %m");
- return -1;
- }
-
- return pppfd;
-}
-
-/*
- * tty_disestablish_ppp - Restore the serial port to normal operation.
- * It attempts to reconstruct the stream with the previously popped
- * modules. This shouldn't call die() because it's called from die().
- */
-void
-tty_disestablish_ppp(fd)
- int fd;
-{
- int i;
-
- if (fdmuxid >= 0) {
- if (ioctl(pppfd, I_UNLINK, fdmuxid) < 0) {
- if (!hungup)
- error("Can't unlink tty from PPP mux: %m");
- }
- fdmuxid = -1;
-
- if (!hungup) {
- while (tty_npushed > 0 && ioctl(fd, I_POP, 0) >= 0)
- --tty_npushed;
- for (i = tty_nmodules - 1; i >= 0; --i)
- if (ioctl(fd, I_PUSH, tty_modules[i]) < 0)
- error("Couldn't restore tty module %s: %m",
- tty_modules[i]);
- }
- if (hungup && default_device && tty_sid > 0) {
- /*
- * If we have received a hangup, we need to send a SIGHUP
- * to the terminal's controlling process. The reason is
- * that the original stream head for the terminal hasn't
- * seen the M_HANGUP message (it went up through the ppp
- * driver to the stream head for our fd to /dev/ppp).
- */
- kill(tty_sid, SIGHUP);
- }
- }
-}
-
-/*
- * Check whether the link seems not to be 8-bit clean.
- */
-void
-clean_check()
-{
- int x;
- char *s;
-
- if (strioctl(pppfd, PPPIO_GCLEAN, &x, 0, sizeof(x)) < 0)
- return;
- s = NULL;
- switch (~x) {
- case RCV_B7_0:
- s = "bit 7 set to 1";
- break;
- case RCV_B7_1:
- s = "bit 7 set to 0";
- break;
- case RCV_EVNP:
- s = "odd parity";
- break;
- case RCV_ODDP:
- s = "even parity";
- break;
- }
- if (s != NULL) {
- warn("Serial link is not 8-bit clean:");
- warn("All received characters had %s", s);
- }
-}
-
-/*
- * List of valid speeds.
- */
-struct speed {
- int speed_int, speed_val;
-} speeds[] = {
-#ifdef B50
- { 50, B50 },
-#endif
-#ifdef B75
- { 75, B75 },
-#endif
-#ifdef B110
- { 110, B110 },
-#endif
-#ifdef B134
- { 134, B134 },
-#endif
-#ifdef B150
- { 150, B150 },
-#endif
-#ifdef B200
- { 200, B200 },
-#endif
-#ifdef B300
- { 300, B300 },
-#endif
-#ifdef B600
- { 600, B600 },
-#endif
-#ifdef B1200
- { 1200, B1200 },
-#endif
-#ifdef B1800
- { 1800, B1800 },
-#endif
-#ifdef B2000
- { 2000, B2000 },
-#endif
-#ifdef B2400
- { 2400, B2400 },
-#endif
-#ifdef B3600
- { 3600, B3600 },
-#endif
-#ifdef B4800
- { 4800, B4800 },
-#endif
-#ifdef B7200
- { 7200, B7200 },
-#endif
-#ifdef B9600
- { 9600, B9600 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef EXTA
- { 19200, EXTA },
-#endif
-#ifdef EXTB
- { 38400, EXTB },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B76800
- { 76800, B76800 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
-#ifdef B153600
- { 153600, B153600 },
-#endif
-#ifdef B230400
- { 230400, B230400 },
-#endif
-#ifdef B307200
- { 307200, B307200 },
-#endif
-#ifdef B460800
- { 460800, B460800 },
-#endif
- { 0, 0 }
-};
-
-/*
- * Translate from bits/second to a speed_t.
- */
-static int
-translate_speed(bps)
- int bps;
-{
- struct speed *speedp;
-
- if (bps == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (bps == speedp->speed_int)
- return speedp->speed_val;
- warn("speed %d not supported", bps);
- return 0;
-}
-
-/*
- * Translate from a speed_t to bits/second.
- */
-static int
-baud_rate_of(speed)
- int speed;
-{
- struct speed *speedp;
-
- if (speed == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (speed == speedp->speed_val)
- return speedp->speed_int;
- return 0;
-}
-
-/*
- * set_up_tty: Set up the serial port on `fd' for 8 bits, no parity,
- * at the requested speed, etc. If `local' is true, set CLOCAL
- * regardless of whether the modem option was specified.
- */
-void
-set_up_tty(fd, local)
- int fd, local;
-{
- int speed;
- struct termios tios;
-#if !defined (CRTSCTS)
- struct termiox tiox;
-#endif
-
- if (!sync_serial && tcgetattr(fd, &tios) < 0)
- fatal("tcgetattr: %m");
-
-#ifndef CRTSCTS
- termiox_ok = 1;
- if (!sync_serial && ioctl (fd, TCGETX, &tiox) < 0) {
- termiox_ok = 0;
- if (errno != ENOTTY)
- error("TCGETX: %m");
- }
-#endif
-
- if (!restore_term) {
- inittermios = tios;
-#ifndef CRTSCTS
- inittermiox = tiox;
-#endif
- if (!sync_serial)
- ioctl(fd, TIOCGWINSZ, &wsinfo);
- }
-
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
-#ifdef CRTSCTS
- if (crtscts > 0)
- tios.c_cflag |= CRTSCTS;
- else if (crtscts < 0)
- tios.c_cflag &= ~CRTSCTS;
-#else
- if (crtscts != 0 && !termiox_ok) {
- error("Can't set RTS/CTS flow control");
- } else if (crtscts > 0) {
- tiox.x_hflag |= RTSXOFF|CTSXON;
- } else if (crtscts < 0) {
- tiox.x_hflag &= ~(RTSXOFF|CTSXON);
- }
-#endif
-
- tios.c_cflag |= CS8 | CREAD | HUPCL;
- if (local || !modem)
- tios.c_cflag |= CLOCAL;
- tios.c_iflag = IGNBRK | IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- tios.c_cc[VMIN] = 1;
- tios.c_cc[VTIME] = 0;
-
- if (crtscts == -2) {
- tios.c_iflag |= IXON | IXOFF;
- tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */
- tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */
- }
-
- speed = translate_speed(inspeed);
- if (speed) {
- cfsetospeed(&tios, speed);
- cfsetispeed(&tios, speed);
- } else {
- speed = cfgetospeed(&tios);
- /*
- * We can't proceed if the serial port speed is 0,
- * since that implies that the serial port is disabled.
- */
- if ((speed == B0) && !sync_serial)
- fatal("Baud rate for %s is 0; need explicit baud rate", devnam);
- }
-
- if (!sync_serial && tcsetattr(fd, TCSAFLUSH, &tios) < 0)
- fatal("tcsetattr: %m");
-
-#ifndef CRTSCTS
- if (!sync_serial && termiox_ok && ioctl (fd, TCSETXF, &tiox) < 0){
- error("TCSETXF: %m");
- }
-#endif
-
- baud_rate = inspeed = baud_rate_of(speed);
- if (!sync_serial)
- restore_term = 1;
-}
-
-/*
- * restore_tty - restore the terminal to the saved settings.
- */
-void
-restore_tty(fd)
- int fd;
-{
- if (restore_term) {
- if (!default_device) {
- /*
- * Turn off echoing, because otherwise we can get into
- * a loop with the tty and the modem echoing to each other.
- * We presume we are the sole user of this tty device, so
- * when we close it, it will revert to its defaults anyway.
- */
- inittermios.c_lflag &= ~(ECHO | ECHONL);
- }
- if (!sync_serial && tcsetattr(fd, TCSAFLUSH, &inittermios) < 0)
- if (!hungup && errno != ENXIO)
- warn("tcsetattr: %m");
-#ifndef CRTSCTS
- if (!sync_serial && ioctl (fd, TCSETXF, &inittermiox) < 0){
- if (!hungup && errno != ENXIO)
- error("TCSETXF: %m");
- }
-#endif
- if (!sync_serial)
- ioctl(fd, TIOCSWINSZ, &wsinfo);
- restore_term = 0;
- }
-}
-
-/*
- * setdtr - control the DTR line on the serial port.
- * This is called from die(), so it shouldn't call die().
- */
-void
-setdtr(fd, on)
-int fd, on;
-{
- int modembits = TIOCM_DTR;
-
- ioctl(fd, (on? TIOCMBIS: TIOCMBIC), &modembits);
-}
-
-/*
- * open_loopback - open the device we use for getting packets
- * in demand mode. Under Solaris 2, we use our existing fd
- * to the ppp driver.
- */
-int
-open_ppp_loopback()
-{
- return pppfd;
-}
-
-/*
- * output - Output PPP packet.
- */
-void
-output(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- struct strbuf data;
- int retries;
- struct pollfd pfd;
-
- if (debug)
- dbglog("sent %P", p, len);
-
- data.len = len;
- data.buf = (caddr_t) p;
- retries = 4;
- while (putmsg(pppfd, NULL, &data, 0) < 0) {
- if (--retries < 0 || (errno != EWOULDBLOCK && errno != EAGAIN)) {
- if (errno != ENXIO)
- error("Couldn't send packet: %m");
- break;
- }
- pfd.fd = pppfd;
- pfd.events = POLLOUT;
- poll(&pfd, 1, 250); /* wait for up to 0.25 seconds */
- }
-}
-
-
-/*
- * wait_input - wait until there is data available,
- * for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-void
-wait_input(timo)
- struct timeval *timo;
-{
- int t;
-
- t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000;
- if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR)
- fatal("poll: %m");
-}
-
-/*
- * add_fd - add an fd to the set that wait_input waits for.
- */
-void add_fd(fd)
- int fd;
-{
- int n;
-
- for (n = 0; n < n_pollfds; ++n)
- if (pollfds[n].fd == fd)
- return;
- if (n_pollfds < MAX_POLLFDS) {
- pollfds[n_pollfds].fd = fd;
- pollfds[n_pollfds].events = POLLIN | POLLPRI | POLLHUP;
- ++n_pollfds;
- } else
- error("Too many inputs!");
-}
-
-/*
- * remove_fd - remove an fd from the set that wait_input waits for.
- */
-void remove_fd(fd)
- int fd;
-{
- int n;
-
- for (n = 0; n < n_pollfds; ++n) {
- if (pollfds[n].fd == fd) {
- while (++n < n_pollfds)
- pollfds[n-1] = pollfds[n];
- --n_pollfds;
- break;
- }
- }
-}
-
-#if 0
-/*
- * wait_loop_output - wait until there is data available on the
- * loopback, for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-void
-wait_loop_output(timo)
- struct timeval *timo;
-{
- wait_input(timo);
-}
-
-/*
- * wait_time - wait for a given length of time or until a
- * signal is received.
- */
-void
-wait_time(timo)
- struct timeval *timo;
-{
- int n;
-
- n = select(0, NULL, NULL, NULL, timo);
- if (n < 0 && errno != EINTR)
- fatal("select: %m");
-}
-#endif
-
-
-/*
- * read_packet - get a PPP packet from the serial device.
- */
-int
-read_packet(buf)
- u_char *buf;
-{
- struct strbuf ctrl, data;
- int flags, len;
- unsigned char ctrlbuf[sizeof(union DL_primitives) + 64];
-
- for (;;) {
- data.maxlen = PPP_MRU + PPP_HDRLEN;
- data.buf = (caddr_t) buf;
- ctrl.maxlen = sizeof(ctrlbuf);
- ctrl.buf = (caddr_t) ctrlbuf;
- flags = 0;
- len = getmsg(pppfd, &ctrl, &data, &flags);
- if (len < 0) {
- if (errno == EAGAIN || errno == EINTR)
- return -1;
- fatal("Error reading packet: %m");
- }
-
- if (ctrl.len <= 0)
- return data.len;
-
- /*
- * Got a M_PROTO or M_PCPROTO message. Interpret it
- * as a DLPI primitive??
- */
- if (debug)
- dbglog("got dlpi prim 0x%x, len=%d",
- ((union DL_primitives *)ctrlbuf)->dl_primitive, ctrl.len);
-
- }
-}
-
-/*
- * get_loop_output - get outgoing packets from the ppp device,
- * and detect when we want to bring the real link up.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- */
-int
-get_loop_output()
-{
- int len;
- int rv = 0;
-
- while ((len = read_packet(inpacket_buf)) > 0) {
- if (loop_frame(inpacket_buf, len))
- rv = 1;
- }
- return rv;
-}
-
-/*
- * netif_set_mtu - set the MTU on the PPP network interface.
- */
-void
-netif_set_mtu(unit, mtu)
- int unit, mtu;
-{
- struct ifreq ifr;
-#if defined(INET6) && defined(SOL2)
- struct lifreq lifr;
- int fd;
-#endif /* defined(INET6) && defined(SOL2) */
-
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_metric = link_mtu;
- if (ioctl(ipfd, SIOCSIFMTU, &ifr) < 0) {
- error("Couldn't set IP MTU (%s): %m", ifr.ifr_name);
- }
-
-#if defined(INET6) && defined(SOL2)
- fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (fd < 0)
- error("Couldn't open IPv6 socket: %m");
-
- memset(&lifr, 0, sizeof(lifr));
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- lifr.lifr_mtu = link_mtu;
- if (ioctl(fd, SIOCSLIFMTU, &lifr) < 0) {
- close(fd);
- error("Couldn't set IPv6 MTU (%s): %m", ifr.ifr_name);
- }
- close(fd);
-#endif /* defined(INET6) && defined(SOL2) */
-}
-
-/*
- * tty_send_config - configure the transmit characteristics of
- * the ppp interface.
- */
-void
-tty_send_config(mtu, asyncmap, pcomp, accomp)
- int mtu;
- u_int32_t asyncmap;
- int pcomp, accomp;
-{
- int cf[2];
-
- link_mtu = mtu;
- if (strioctl(pppfd, PPPIO_MTU, &mtu, sizeof(mtu), 0) < 0) {
- if (hungup && errno == ENXIO)
- return;
- error("Couldn't set MTU: %m");
- }
- if (fdmuxid >= 0) {
- if (!sync_serial) {
- if (strioctl(pppfd, PPPIO_XACCM, &asyncmap, sizeof(asyncmap), 0) < 0) {
- error("Couldn't set transmit ACCM: %m");
- }
- }
- cf[0] = (pcomp? COMP_PROT: 0) + (accomp? COMP_AC: 0);
- cf[1] = COMP_PROT | COMP_AC;
- if (any_compressions() &&
- strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- error("Couldn't set prot/AC compression: %m");
- }
- }
-}
-
-/*
- * ppp_set_xaccm - set the extended transmit ACCM for the interface.
- */
-void
-tty_set_xaccm(accm)
- ext_accm accm;
-{
- if (sync_serial)
- return;
-
- if (fdmuxid >= 0
- && strioctl(pppfd, PPPIO_XACCM, accm, sizeof(ext_accm), 0) < 0) {
- if (!hungup || errno != ENXIO)
- warn("Couldn't set extended ACCM: %m");
- }
-}
-
-/*
- * ppp_recv_config - configure the receive-side characteristics of
- * the ppp interface.
- */
-void
-tty_recv_config(mru, asyncmap, pcomp, accomp)
- int mru;
- u_int32_t asyncmap;
- int pcomp, accomp;
-{
- int cf[2];
-
- link_mru = mru;
- if (strioctl(pppfd, PPPIO_MRU, &mru, sizeof(mru), 0) < 0) {
- if (hungup && errno == ENXIO)
- return;
- error("Couldn't set MRU: %m");
- }
- if (fdmuxid >= 0) {
- if (!sync_serial) {
- if (strioctl(pppfd, PPPIO_RACCM, &asyncmap, sizeof(asyncmap), 0) < 0) {
- error("Couldn't set receive ACCM: %m");
- }
- }
- cf[0] = (pcomp? DECOMP_PROT: 0) + (accomp? DECOMP_AC: 0);
- cf[1] = DECOMP_PROT | DECOMP_AC;
- if (any_compressions() &&
- strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- error("Couldn't set prot/AC decompression: %m");
- }
- }
-}
-
-/*
- * ccp_test - ask kernel whether a given compression method
- * is acceptable for use.
- */
-int
-ccp_test(unit, opt_ptr, opt_len, for_transmit)
- int unit, opt_len, for_transmit;
- u_char *opt_ptr;
-{
- if (strioctl(pppfd, (for_transmit? PPPIO_XCOMP: PPPIO_RCOMP),
- opt_ptr, opt_len, 0) >= 0)
- return 1;
- return (errno == ENOSR)? 0: -1;
-}
-
-/*
- * ccp_flags_set - inform kernel about the current state of CCP.
- */
-void
-ccp_flags_set(unit, isopen, isup)
- int unit, isopen, isup;
-{
- int cf[2];
-
- cf[0] = (isopen? CCP_ISOPEN: 0) + (isup? CCP_ISUP: 0);
- cf[1] = CCP_ISOPEN | CCP_ISUP | CCP_ERROR | CCP_FATALERROR;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (!hungup || errno != ENXIO)
- error("Couldn't set kernel CCP state: %m");
- }
-}
-
-/*
- * get_idle_time - return how long the link has been idle.
- */
-int
-get_idle_time(u, ip)
- int u;
- struct ppp_idle *ip;
-{
- return strioctl(pppfd, PPPIO_GIDLE, ip, 0, sizeof(struct ppp_idle)) >= 0;
-}
-
-/*
- * get_ppp_stats - return statistics for the link.
- */
-int
-get_ppp_stats(u, stats)
- int u;
- struct pppd_stats *stats;
-{
- struct ppp_stats s;
-
- if (!sync_serial &&
- strioctl(pppfd, PPPIO_GETSTAT, &s, 0, sizeof(s)) < 0) {
- error("Couldn't get link statistics: %m");
- return 0;
- }
- stats->bytes_in = s.p.ppp_ibytes;
- stats->bytes_out = s.p.ppp_obytes;
- return 1;
-}
-
-#if 0
-/*
- * set_filters - transfer the pass and active filters to the kernel.
- */
-int
-set_filters(pass, active)
- struct bpf_program *pass, *active;
-{
- int ret = 1;
-
- if (pass->bf_len > 0) {
- if (strioctl(pppfd, PPPIO_PASSFILT, pass,
- sizeof(struct bpf_program), 0) < 0) {
- error("Couldn't set pass-filter in kernel: %m");
- ret = 0;
- }
- }
- if (active->bf_len > 0) {
- if (strioctl(pppfd, PPPIO_ACTIVEFILT, active,
- sizeof(struct bpf_program), 0) < 0) {
- error("Couldn't set active-filter in kernel: %m");
- ret = 0;
- }
- }
- return ret;
-}
-#endif
-
-/*
- * ccp_fatal_error - returns 1 if decompression was disabled as a
- * result of an error detected after decompression of a packet,
- * 0 otherwise. This is necessary because of patent nonsense.
- */
-int
-ccp_fatal_error(unit)
- int unit;
-{
- int cf[2];
-
- cf[0] = cf[1] = 0;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (errno != ENXIO && errno != EINVAL)
- error("Couldn't get compression flags: %m");
- return 0;
- }
- return cf[0] & CCP_FATALERROR;
-}
-
-/*
- * sifvjcomp - config tcp header compression
- */
-int
-sifvjcomp(u, vjcomp, xcidcomp, xmaxcid)
- int u, vjcomp, xcidcomp, xmaxcid;
-{
- int cf[2];
- char maxcid[2];
-
- if (vjcomp) {
- maxcid[0] = xcidcomp;
- maxcid[1] = 15; /* XXX should be rmaxcid */
- if (strioctl(pppfd, PPPIO_VJINIT, maxcid, sizeof(maxcid), 0) < 0) {
- error("Couldn't initialize VJ compression: %m");
- }
- }
-
- cf[0] = (vjcomp? COMP_VJC + DECOMP_VJC: 0) /* XXX this is wrong */
- + (xcidcomp? COMP_VJCCID + DECOMP_VJCCID: 0);
- cf[1] = COMP_VJC + DECOMP_VJC + COMP_VJCCID + DECOMP_VJCCID;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (vjcomp)
- error("Couldn't enable VJ compression: %m");
- }
-
- return 1;
-}
-
-/*
- * sifup - Config the interface up and enable IP packets to pass.
- */
-int
-sifup(u)
- int u;
-{
- struct ifreq ifr;
-
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface up (get): %m");
- return 0;
- }
- ifr.ifr_flags |= IFF_UP;
- if (ioctl(ipfd, SIOCSIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface up (set): %m");
- return 0;
- }
- if_is_up = 1;
- return 1;
-}
-
-/*
- * sifdown - Config the interface down and disable IP.
- */
-int
-sifdown(u)
- int u;
-{
- struct ifreq ifr;
-
- if (ipmuxid < 0)
- return 1;
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface down (get): %m");
- return 0;
- }
- ifr.ifr_flags &= ~IFF_UP;
- if (ioctl(ipfd, SIOCSIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface down (set): %m");
- return 0;
- }
- if_is_up = 0;
- return 1;
-}
-
-/*
- * sifnpmode - Set the mode for handling packets for a given NP.
- */
-int
-sifnpmode(u, proto, mode)
- int u;
- int proto;
- enum NPmode mode;
-{
- int npi[2];
-
- npi[0] = proto;
- npi[1] = (int) mode;
- if (strioctl(pppfd, PPPIO_NPMODE, &npi, 2 * sizeof(int), 0) < 0) {
- error("ioctl(set NP %d mode to %d): %m", proto, mode);
- return 0;
- }
- return 1;
-}
-
-#if defined(SOL2) && defined(INET6)
-/*
- * sif6up - Config the IPv6 interface up and enable IPv6 packets to pass.
- */
-int
-sif6up(u)
- int u;
-{
- struct lifreq lifr;
- int fd;
-
- fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (fd < 0) {
- return 0;
- }
-
- memset(&lifr, 0, sizeof(lifr));
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- if (ioctl(fd, SIOCGLIFFLAGS, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- lifr.lifr_flags |= IFF_UP;
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- if (ioctl(fd, SIOCSLIFFLAGS, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- if6_is_up = 1;
- close(fd);
- return 1;
-}
-
-/*
- * sifdown - Config the IPv6 interface down and disable IPv6.
- */
-int
-sif6down(u)
- int u;
-{
- struct lifreq lifr;
- int fd;
-
- fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (fd < 0)
- return 0;
-
- memset(&lifr, 0, sizeof(lifr));
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- if (ioctl(fd, SIOCGLIFFLAGS, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- lifr.lifr_flags &= ~IFF_UP;
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- if (ioctl(fd, SIOCGLIFFLAGS, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- if6_is_up = 0;
- close(fd);
- return 1;
-}
-
-/*
- * sif6addr - Config the interface with an IPv6 link-local address
- */
-int
-sif6addr(u, o, h)
- int u;
- eui64_t o, h;
-{
- struct lifreq lifr;
- struct sockaddr_storage laddr;
- struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&laddr;
- int fd;
-
- fd = socket(AF_INET6, SOCK_DGRAM, 0);
- if (fd < 0)
- return 0;
-
- memset(&lifr, 0, sizeof(lifr));
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
-
- /*
- * Do this because /dev/ppp responds to DL_PHYS_ADDR_REQ with
- * zero values, hence the interface token came to be zero too,
- * and without this, in.ndpd will complain
- */
- IN6_LLTOKEN_FROM_EUI64(lifr, sin6, o);
- if (ioctl(fd, SIOCSLIFTOKEN, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- /*
- * Set the interface address and destination address
- */
- IN6_LLADDR_FROM_EUI64(lifr, sin6, o);
- if (ioctl(fd, SIOCSLIFADDR, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- memset(&lifr, 0, sizeof(lifr));
- strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name));
- IN6_LLADDR_FROM_EUI64(lifr, sin6, h);
- if (ioctl(fd, SIOCSLIFDSTADDR, &lifr) < 0) {
- close(fd);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * cif6addr - Remove the IPv6 address from interface
- */
-int
-cif6addr(u, o, h)
- int u;
- eui64_t o, h;
-{
- return 1;
-}
-
-#endif /* defined(SOL2) && defined(INET6) */
-
-
-#define INET_ADDR(x) (((struct sockaddr_in *) &(x))->sin_addr.s_addr)
-
-/*
- * sifaddr - Config the interface IP addresses and netmask.
- */
-int
-sifaddr(u, o, h, m)
- int u;
- u_int32_t o, h, m;
-{
- struct ifreq ifr;
- int ret = 1;
-
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_addr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_addr) = m;
- if (ioctl(ipfd, SIOCSIFNETMASK, &ifr) < 0) {
- error("Couldn't set IP netmask: %m");
- ret = 0;
- }
- ifr.ifr_addr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_addr) = o;
- if (ioctl(ipfd, SIOCSIFADDR, &ifr) < 0) {
- error("Couldn't set local IP address: %m");
- ret = 0;
- }
-
- /*
- * On some systems, we have to explicitly set the point-to-point
- * flag bit before we can set a destination address.
- */
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifr) >= 0
- && (ifr.ifr_flags & IFF_POINTOPOINT) == 0) {
- ifr.ifr_flags |= IFF_POINTOPOINT;
- if (ioctl(ipfd, SIOCSIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface pt-to-pt: %m");
- ret = 0;
- }
- }
- ifr.ifr_dstaddr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_dstaddr) = h;
- if (ioctl(ipfd, SIOCSIFDSTADDR, &ifr) < 0) {
- error("Couldn't set remote IP address: %m");
- ret = 0;
- }
-#if 0 /* now done in ppp_send_config */
- ifr.ifr_metric = link_mtu;
- if (ioctl(ipfd, SIOCSIFMTU, &ifr) < 0) {
- error("Couldn't set IP MTU: %m");
- }
-#endif
-
- remote_addr = h;
- return ret;
-}
-
-/*
- * cifaddr - Clear the interface IP addresses, and delete routes
- * through the interface if possible.
- */
-int
-cifaddr(u, o, h)
- int u;
- u_int32_t o, h;
-{
-#if defined(__USLC__) /* was: #if 0 */
- cifroute(unit, ouraddr, hisaddr);
- if (ipmuxid >= 0) {
- notice("Removing ppp interface unit");
- if (ioctl(ipfd, I_UNLINK, ipmuxid) < 0) {
- error("Can't remove ppp interface unit: %m");
- return 0;
- }
- ipmuxid = -1;
- }
-#endif
- remote_addr = 0;
- return 1;
-}
-
-/*
- * sifdefaultroute - assign a default route through the address given.
- */
-int
-sifdefaultroute(u, l, g)
- int u;
- u_int32_t l, g;
-{
- struct rtentry rt;
-
-#if defined(__USLC__)
- g = l; /* use the local address as gateway */
-#endif
- memset(&rt, 0, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = 0;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = g;
- rt.rt_flags = RTF_GATEWAY;
-
- if (ioctl(ipfd, SIOCADDRT, &rt) < 0) {
- error("Can't add default route: %m");
- return 0;
- }
-
- default_route_gateway = g;
- return 1;
-}
-
-/*
- * cifdefaultroute - delete a default route through the address given.
- */
-int
-cifdefaultroute(u, l, g)
- int u;
- u_int32_t l, g;
-{
- struct rtentry rt;
-
-#if defined(__USLC__)
- g = l; /* use the local address as gateway */
-#endif
- memset(&rt, 0, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = 0;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = g;
- rt.rt_flags = RTF_GATEWAY;
-
- if (ioctl(ipfd, SIOCDELRT, &rt) < 0) {
- error("Can't delete default route: %m");
- return 0;
- }
-
- default_route_gateway = 0;
- return 1;
-}
-
-/*
- * sifproxyarp - Make a proxy ARP entry for the peer.
- */
-int
-sifproxyarp(unit, hisaddr)
- int unit;
- u_int32_t hisaddr;
-{
- struct arpreq arpreq;
-
- memset(&arpreq, 0, sizeof(arpreq));
- if (!get_ether_addr(hisaddr, &arpreq.arp_ha))
- return 0;
-
- arpreq.arp_pa.sa_family = AF_INET;
- INET_ADDR(arpreq.arp_pa) = hisaddr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
- if (ioctl(ipfd, SIOCSARP, (caddr_t) &arpreq) < 0) {
- error("Couldn't set proxy ARP entry: %m");
- return 0;
- }
-
- proxy_arp_addr = hisaddr;
- return 1;
-}
-
-/*
- * cifproxyarp - Delete the proxy ARP entry for the peer.
- */
-int
-cifproxyarp(unit, hisaddr)
- int unit;
- u_int32_t hisaddr;
-{
- struct arpreq arpreq;
-
- memset(&arpreq, 0, sizeof(arpreq));
- arpreq.arp_pa.sa_family = AF_INET;
- INET_ADDR(arpreq.arp_pa) = hisaddr;
- if (ioctl(ipfd, SIOCDARP, (caddr_t)&arpreq) < 0) {
- error("Couldn't delete proxy ARP entry: %m");
- return 0;
- }
-
- proxy_arp_addr = 0;
- return 1;
-}
-
-/*
- * get_ether_addr - get the hardware address of an interface on the
- * the same subnet as ipaddr.
- */
-#define MAX_IFS 32
-
-static int
-get_ether_addr(ipaddr, hwaddr)
- u_int32_t ipaddr;
- struct sockaddr *hwaddr;
-{
- struct ifreq *ifr, *ifend, ifreq;
- int nif;
- struct ifconf ifc;
- u_int32_t ina, mask;
-
- /*
- * Scan through the system's network interfaces.
- */
-#ifdef SIOCGIFNUM
- if (ioctl(ipfd, SIOCGIFNUM, &nif) < 0)
-#endif
- nif = MAX_IFS;
- ifc.ifc_len = nif * sizeof(struct ifreq);
- ifc.ifc_buf = (caddr_t) malloc(ifc.ifc_len);
- if (ifc.ifc_buf == 0)
- return 0;
- if (ioctl(ipfd, SIOCGIFCONF, &ifc) < 0) {
- warn("Couldn't get system interface list: %m");
- free(ifc.ifc_buf);
- return 0;
- }
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ++ifr) {
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
- /*
- * Check that the interface is up, and not point-to-point or loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
- if ((ifreq.ifr_flags &
- (IFF_UP|IFF_BROADCAST|IFF_POINTOPOINT|IFF_LOOPBACK|IFF_NOARP))
- != (IFF_UP|IFF_BROADCAST))
- continue;
- /*
- * Get its netmask and check that it's on the right subnet.
- */
- if (ioctl(ipfd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- ina = INET_ADDR(ifr->ifr_addr);
- mask = INET_ADDR(ifreq.ifr_addr);
- if ((ipaddr & mask) == (ina & mask))
- break;
- }
-
- if (ifr >= ifend) {
- warn("No suitable interface found for proxy ARP");
- free(ifc.ifc_buf);
- return 0;
- }
-
- info("found interface %s for proxy ARP", ifr->ifr_name);
- if (!get_hw_addr(ifr->ifr_name, ina, hwaddr)) {
- error("Couldn't get hardware address for %s", ifr->ifr_name);
- free(ifc.ifc_buf);
- return 0;
- }
-
- free(ifc.ifc_buf);
- return 1;
-}
-
-/*
- * get_hw_addr_dlpi - obtain the hardware address using DLPI
- */
-static int
-get_hw_addr_dlpi(name, hwaddr)
- char *name;
- struct sockaddr *hwaddr;
-{
- char *p, *q;
- int unit, iffd, adrlen;
- unsigned char *adrp;
- char ifdev[24];
- struct {
- union DL_primitives prim;
- char space[64];
- } reply;
-
- /*
- * We have to open the device and ask it for its hardware address.
- * First split apart the device name and unit.
- */
- slprintf(ifdev, sizeof(ifdev), "/dev/%s", name);
- for (q = ifdev + strlen(ifdev); --q >= ifdev; )
- if (!isdigit(*q))
- break;
- unit = atoi(q+1);
- q[1] = 0;
-
- /*
- * Open the device and do a DLPI attach and phys_addr_req.
- */
- iffd = open(ifdev, O_RDWR);
- if (iffd < 0) {
- error("Can't open %s: %m", ifdev);
- return 0;
- }
- if (dlpi_attach(iffd, unit) < 0
- || dlpi_get_reply(iffd, &reply.prim, DL_OK_ACK, sizeof(reply)) < 0
- || dlpi_info_req(iffd) < 0
- || dlpi_get_reply(iffd, &reply.prim, DL_INFO_ACK, sizeof(reply)) < 0) {
- close(iffd);
- return 0;
- }
-
- adrlen = reply.prim.info_ack.dl_addr_length;
- adrp = (unsigned char *)&reply + reply.prim.info_ack.dl_addr_offset;
-
-#if DL_CURRENT_VERSION >= 2
- if (reply.prim.info_ack.dl_sap_length < 0)
- adrlen += reply.prim.info_ack.dl_sap_length;
- else
- adrp += reply.prim.info_ack.dl_sap_length;
-#endif
-
- hwaddr->sa_family = AF_UNSPEC;
- memcpy(hwaddr->sa_data, adrp, adrlen);
-
- return 1;
-}
-/*
- * get_hw_addr - obtain the hardware address for a named interface.
- */
-static int
-get_hw_addr(name, ina, hwaddr)
- char *name;
- u_int32_t ina;
- struct sockaddr *hwaddr;
-{
- /* New way - get the address by doing an arp request. */
- int s;
- struct arpreq req;
-
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0)
- return 0;
- memset(&req, 0, sizeof(req));
- req.arp_pa.sa_family = AF_INET;
- INET_ADDR(req.arp_pa) = ina;
- if (ioctl(s, SIOCGARP, &req) < 0) {
- error("Couldn't get ARP entry for %s: %m", ip_ntoa(ina));
- return 0;
- }
- *hwaddr = req.arp_ha;
- hwaddr->sa_family = AF_UNSPEC;
-
- return 1;
-}
-
-static int
-dlpi_attach(fd, ppa)
- int fd, ppa;
-{
- dl_attach_req_t req;
- struct strbuf buf;
-
- req.dl_primitive = DL_ATTACH_REQ;
- req.dl_ppa = ppa;
- buf.len = sizeof(req);
- buf.buf = (void *) &req;
- return putmsg(fd, &buf, NULL, RS_HIPRI);
-}
-
-static int
-dlpi_info_req(fd)
- int fd;
-{
- dl_info_req_t req;
- struct strbuf buf;
-
- req.dl_primitive = DL_INFO_REQ;
- buf.len = sizeof(req);
- buf.buf = (void *) &req;
- return putmsg(fd, &buf, NULL, RS_HIPRI);
-}
-
-static int
-dlpi_get_reply(fd, reply, expected_prim, maxlen)
- union DL_primitives *reply;
- int fd, expected_prim, maxlen;
-{
- struct strbuf buf;
- int flags, n;
- struct pollfd pfd;
-
- /*
- * Use poll to wait for a message with a timeout.
- */
- pfd.fd = fd;
- pfd.events = POLLIN | POLLPRI;
- do {
- n = poll(&pfd, 1, 1000);
- } while (n == -1 && errno == EINTR);
- if (n <= 0)
- return -1;
-
- /*
- * Get the reply.
- */
- buf.maxlen = maxlen;
- buf.buf = (void *) reply;
- flags = 0;
- if (getmsg(fd, &buf, NULL, &flags) < 0)
- return -1;
-
- if (buf.len < sizeof(ulong)) {
- if (debug)
- dbglog("dlpi response short (len=%d)\n", buf.len);
- return -1;
- }
-
- if (reply->dl_primitive == expected_prim)
- return 0;
-
- if (debug) {
- if (reply->dl_primitive == DL_ERROR_ACK) {
- dbglog("dlpi error %d (unix errno %d) for prim %x\n",
- reply->error_ack.dl_errno, reply->error_ack.dl_unix_errno,
- reply->error_ack.dl_error_primitive);
- } else {
- dbglog("dlpi unexpected response prim %x\n",
- reply->dl_primitive);
- }
- }
-
- return -1;
-}
-
-/*
- * Return user specified netmask, modified by any mask we might determine
- * for address `addr' (in network byte order).
- * Here we scan through the system's list of interfaces, looking for
- * any non-point-to-point interfaces which might appear to be on the same
- * network as `addr'. If we find any, we OR in their netmask to the
- * user-specified netmask.
- */
-u_int32_t
-GetMask(addr)
- u_int32_t addr;
-{
- u_int32_t mask, nmask, ina;
- struct ifreq *ifr, *ifend, ifreq;
- int nif;
- struct ifconf ifc;
-
- addr = ntohl(addr);
- if (IN_CLASSA(addr)) /* determine network mask for address class */
- nmask = IN_CLASSA_NET;
- else if (IN_CLASSB(addr))
- nmask = IN_CLASSB_NET;
- else
- nmask = IN_CLASSC_NET;
- /* class D nets are disallowed by bad_ip_adrs */
- mask = netmask | htonl(nmask);
-
- /*
- * Scan through the system's network interfaces.
- */
-#ifdef SIOCGIFNUM
- if (ioctl(ipfd, SIOCGIFNUM, &nif) < 0)
-#endif
- nif = MAX_IFS;
- ifc.ifc_len = nif * sizeof(struct ifreq);
- ifc.ifc_buf = (caddr_t) malloc(ifc.ifc_len);
- if (ifc.ifc_buf == 0)
- return mask;
- if (ioctl(ipfd, SIOCGIFCONF, &ifc) < 0) {
- warn("Couldn't get system interface list: %m");
- free(ifc.ifc_buf);
- return mask;
- }
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ++ifr) {
- /*
- * Check the interface's internet address.
- */
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
- ina = INET_ADDR(ifr->ifr_addr);
- if ((ntohl(ina) & nmask) != (addr & nmask))
- continue;
- /*
- * Check that the interface is up, and not point-to-point or loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(ipfd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
- if ((ifreq.ifr_flags & (IFF_UP|IFF_POINTOPOINT|IFF_LOOPBACK))
- != IFF_UP)
- continue;
- /*
- * Get its netmask and OR it into our mask.
- */
- if (ioctl(ipfd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- mask |= INET_ADDR(ifreq.ifr_addr);
- }
-
- free(ifc.ifc_buf);
- return mask;
-}
-
-/*
- * logwtmp - write an accounting record to the /var/adm/wtmp file.
- */
-void
-logwtmp(line, name, host)
- const char *line, *name, *host;
-{
- static struct utmpx utmpx;
-
- if (name[0] != 0) {
- /* logging in */
- strncpy(utmpx.ut_user, name, sizeof(utmpx.ut_user));
- strncpy(utmpx.ut_id, ifname, sizeof(utmpx.ut_id));
- strncpy(utmpx.ut_line, line, sizeof(utmpx.ut_line));
- utmpx.ut_pid = getpid();
- utmpx.ut_type = USER_PROCESS;
- } else {
- utmpx.ut_type = DEAD_PROCESS;
- }
- gettimeofday(&utmpx.ut_tv, NULL);
- updwtmpx("/var/adm/wtmpx", &utmpx);
-}
-
-/*
- * get_host_seed - return the serial number of this machine.
- */
-int
-get_host_seed()
-{
- char buf[32];
-
- if (sysinfo(SI_HW_SERIAL, buf, sizeof(buf)) < 0) {
- error("sysinfo: %m");
- return 0;
- }
- return (int) strtoul(buf, NULL, 16);
-}
-
-static int
-strioctl(fd, cmd, ptr, ilen, olen)
- int fd, cmd, ilen, olen;
- void *ptr;
-{
- struct strioctl str;
-
- str.ic_cmd = cmd;
- str.ic_timout = 0;
- str.ic_len = ilen;
- str.ic_dp = ptr;
- if (ioctl(fd, I_STR, &str) == -1)
- return -1;
- if (str.ic_len != olen)
- dbglog("strioctl: expected %d bytes, got %d for cmd %x\n",
- olen, str.ic_len, cmd);
- return 0;
-}
-
-#if 0
-/*
- * lock - create a lock file for the named lock device
- */
-
-#define LOCK_PREFIX "/var/spool/locks/LK."
-static char lock_file[40]; /* name of lock file created */
-
-int
-lock(dev)
- char *dev;
-{
- int n, fd, pid;
- struct stat sbuf;
- char ascii_pid[12];
-
- if (stat(dev, &sbuf) < 0) {
- error("Can't get device number for %s: %m", dev);
- return -1;
- }
- if ((sbuf.st_mode & S_IFMT) != S_IFCHR) {
- error("Can't lock %s: not a character device", dev);
- return -1;
- }
- slprintf(lock_file, sizeof(lock_file), "%s%03d.%03d.%03d",
- LOCK_PREFIX, major(sbuf.st_dev),
- major(sbuf.st_rdev), minor(sbuf.st_rdev));
-
- while ((fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR, 0644)) < 0) {
- if (errno == EEXIST
- && (fd = open(lock_file, O_RDONLY, 0)) >= 0) {
- /* Read the lock file to find out who has the device locked */
- n = read(fd, ascii_pid, 11);
- if (n <= 0) {
- error("Can't read pid from lock file %s", lock_file);
- close(fd);
- } else {
- ascii_pid[n] = 0;
- pid = atoi(ascii_pid);
- if (pid > 0 && kill(pid, 0) == -1 && errno == ESRCH) {
- /* pid no longer exists - remove the lock file */
- if (unlink(lock_file) == 0) {
- close(fd);
- notice("Removed stale lock on %s (pid %d)",
- dev, pid);
- continue;
- } else
- warn("Couldn't remove stale lock on %s",
- dev);
- } else
- notice("Device %s is locked by pid %d",
- dev, pid);
- }
- close(fd);
- } else
- error("Can't create lock file %s: %m", lock_file);
- lock_file[0] = 0;
- return -1;
- }
-
- slprintf(ascii_pid, sizeof(ascii_pid), "%10d\n", getpid());
- write(fd, ascii_pid, 11);
-
- close(fd);
- return 1;
-}
-
-/*
- * unlock - remove our lockfile
- */
-void
-unlock()
-{
- if (lock_file[0]) {
- unlink(lock_file);
- lock_file[0] = 0;
- }
-}
-#endif
-
-/*
- * cifroute - delete a route through the addresses given.
- */
-int
-cifroute(u, our, his)
- int u;
- u_int32_t our, his;
-{
- struct rtentry rt;
-
- memset(&rt, 0, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = his;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = our;
- rt.rt_flags = RTF_HOST;
-
- if (ioctl(ipfd, SIOCDELRT, &rt) < 0) {
- error("Can't delete route: %m");
- return 0;
- }
-
- return 1;
-}
-
-/*
- * have_route_to - determine if the system has a route to the specified
- * IP address. Returns 0 if not, 1 if so, -1 if we can't tell.
- * `addr' is in network byte order.
- * For demand mode to work properly, we have to ignore routes
- * through our own interface.
- */
-#ifndef T_CURRENT /* needed for Solaris 2.5 */
-#define T_CURRENT MI_T_CURRENT
-#endif
-
-int
-have_route_to(addr)
- u_int32_t addr;
-{
-#ifdef SOL2
- int fd, r, flags, i;
- struct {
- struct T_optmgmt_req req;
- struct opthdr hdr;
- } req;
- union {
- struct T_optmgmt_ack ack;
- unsigned char space[64];
- } ack;
- struct opthdr *rh;
- struct strbuf cbuf, dbuf;
- int nroutes;
- mib2_ipRouteEntry_t routes[8];
- mib2_ipRouteEntry_t *rp;
-
- fd = open(mux_dev_name, O_RDWR);
- if (fd < 0) {
- warn("have_route_to: couldn't open %s: %m", mux_dev_name);
- return -1;
- }
-
- req.req.PRIM_type = T_OPTMGMT_REQ;
- req.req.OPT_offset = (char *) &req.hdr - (char *) &req;
- req.req.OPT_length = sizeof(req.hdr);
- req.req.MGMT_flags = T_CURRENT;
-
- req.hdr.level = MIB2_IP;
- req.hdr.name = 0;
- req.hdr.len = 0;
-
- cbuf.buf = (char *) &req;
- cbuf.len = sizeof(req);
-
- if (putmsg(fd, &cbuf, NULL, 0) == -1) {
- warn("have_route_to: putmsg: %m");
- close(fd);
- return -1;
- }
-
- for (;;) {
- cbuf.buf = (char *) &ack;
- cbuf.maxlen = sizeof(ack);
- dbuf.buf = (char *) routes;
- dbuf.maxlen = sizeof(routes);
- flags = 0;
- r = getmsg(fd, &cbuf, &dbuf, &flags);
- if (r == -1) {
- warn("have_route_to: getmsg: %m");
- close(fd);
- return -1;
- }
-
- if (cbuf.len < sizeof(struct T_optmgmt_ack)
- || ack.ack.PRIM_type != T_OPTMGMT_ACK
- || ack.ack.MGMT_flags != T_SUCCESS
- || ack.ack.OPT_length < sizeof(struct opthdr)) {
- dbglog("have_route_to: bad message len=%d prim=%d",
- cbuf.len, ack.ack.PRIM_type);
- close(fd);
- return -1;
- }
-
- rh = (struct opthdr *) ((char *)&ack + ack.ack.OPT_offset);
- if (rh->level == 0 && rh->name == 0)
- break;
- if (rh->level != MIB2_IP || rh->name != MIB2_IP_21) {
- while (r == MOREDATA)
- r = getmsg(fd, NULL, &dbuf, &flags);
- continue;
- }
-
- for (;;) {
- nroutes = dbuf.len / sizeof(mib2_ipRouteEntry_t);
- for (rp = routes, i = 0; i < nroutes; ++i, ++rp) {
- if (rp->ipRouteMask != ~0) {
- dbglog("have_route_to: dest=%x gw=%x mask=%x\n",
- rp->ipRouteDest, rp->ipRouteNextHop,
- rp->ipRouteMask);
- if (((addr ^ rp->ipRouteDest) & rp->ipRouteMask) == 0
- && rp->ipRouteNextHop != remote_addr)
- return 1;
- }
- }
- if (r == 0)
- break;
- r = getmsg(fd, NULL, &dbuf, &flags);
- }
- }
- close(fd);
- return 0;
-#else
- return -1;
-#endif /* SOL2 */
-}
-
-/*
- * get_pty - get a pty master/slave pair and chown the slave side to
- * the uid given. Assumes slave_name points to MAXPATHLEN bytes of space.
- */
-int
-get_pty(master_fdp, slave_fdp, slave_name, uid)
- int *master_fdp;
- int *slave_fdp;
- char *slave_name;
- int uid;
-{
- int mfd, sfd;
- char *pty_name;
- struct termios tios;
-
- mfd = open("/dev/ptmx", O_RDWR);
- if (mfd < 0) {
- error("Couldn't open pty master: %m");
- return 0;
- }
-
- pty_name = ptsname(mfd);
- if (pty_name == NULL) {
- error("Couldn't get name of pty slave");
- close(mfd);
- return 0;
- }
- if (chown(pty_name, uid, -1) < 0)
- warn("Couldn't change owner of pty slave: %m");
- if (chmod(pty_name, S_IRUSR | S_IWUSR) < 0)
- warn("Couldn't change permissions on pty slave: %m");
- if (unlockpt(mfd) < 0)
- warn("Couldn't unlock pty slave: %m");
-
- sfd = open(pty_name, O_RDWR);
- if (sfd < 0) {
- error("Couldn't open pty slave %s: %m", pty_name);
- close(mfd);
- return 0;
- }
- if (ioctl(sfd, I_PUSH, "ptem") < 0)
- warn("Couldn't push ptem module on pty slave: %m");
-
- dbglog("Using %s", pty_name);
- strlcpy(slave_name, pty_name, MAXPATHLEN);
- *master_fdp = mfd;
- *slave_fdp = sfd;
-
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/sys-sunos4.c b/mdk-stage1/ppp/pppd/sys-sunos4.c
deleted file mode 100644
index 3344948e9..000000000
--- a/mdk-stage1/ppp/pppd/sys-sunos4.c
+++ /dev/null
@@ -1,1559 +0,0 @@
-/*
- * System-dependent procedures for pppd under SunOS 4.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <termios.h>
-#include <signal.h>
-#include <malloc.h>
-#include <utmp.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/poll.h>
-#include <net/if.h>
-#include <net/if_arp.h>
-#include <net/nit_if.h>
-#include <net/route.h>
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include <netinet/in.h>
-
-#include "pppd.h"
-
-#if defined(sun) && defined(sparc)
-#include <alloca.h>
-#ifndef __GNUC__
-extern void *alloca();
-#endif
-#endif /*sparc*/
-
-static const char rcsid[] = RCSID;
-
-static int pppfd;
-static int fdmuxid = -1;
-static int iffd;
-static int sockfd;
-
-static int restore_term;
-static struct termios inittermios;
-static struct winsize wsinfo; /* Initial window size info */
-static pid_t parent_pid; /* PID of our parent */
-
-extern u_char inpacket_buf[]; /* borrowed from main.c */
-
-#define MAX_POLLFDS 32
-static struct pollfd pollfds[MAX_POLLFDS];
-static int n_pollfds;
-
-static int link_mtu, link_mru;
-
-#define NMODULES 32
-static int tty_nmodules;
-static char tty_modules[NMODULES][FMNAMESZ+1];
-
-static int if_is_up; /* Interface has been marked up */
-static u_int32_t ifaddrs[2]; /* local and remote addresses */
-static u_int32_t default_route_gateway; /* Gateway for default route added */
-static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
-
-/* Prototypes for procedures local to this file. */
-static int translate_speed __P((int));
-static int baud_rate_of __P((int));
-static int get_ether_addr __P((u_int32_t, struct sockaddr *));
-static int strioctl __P((int, int, void *, int, int));
-
-
-/*
- * sys_init - System-dependent initialization.
- */
-void
-sys_init()
-{
- int x;
-
- /* Get an internet socket for doing socket ioctl's on. */
- if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
- fatal("Couldn't create IP socket: %m");
-
- /*
- * We may want to send a SIGHUP to the session leader associated
- * with our controlling terminal later. Because SunOS doesn't
- * have getsid(), we make do with sending the signal to our
- * parent process.
- */
- parent_pid = getppid();
-
- /*
- * Open the ppp device.
- */
- pppfd = open("/dev/ppp", O_RDWR | O_NONBLOCK, 0);
- if (pppfd < 0)
- fatal("Can't open /dev/ppp: %m");
- if (kdebugflag) {
- x = PPPDBG_LOG + PPPDBG_DRIVER;
- strioctl(pppfd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
-
- /* Assign a new PPA and get its unit number. */
- if (strioctl(pppfd, PPPIO_NEWPPA, &ifunit, 0, sizeof(int)) < 0)
- fatal("Can't create new PPP interface: %m");
-
- /*
- * Open the ppp device again and push the if_ppp module on it.
- */
- iffd = open("/dev/ppp", O_RDWR, 0);
- if (iffd < 0)
- fatal("Can't open /dev/ppp (2): %m");
- if (kdebugflag) {
- x = PPPDBG_LOG + PPPDBG_DRIVER;
- strioctl(iffd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
- if (strioctl(iffd, PPPIO_ATTACH, &ifunit, sizeof(int), 0) < 0)
- fatal("Couldn't attach ppp interface to device: %m");
- if (ioctl(iffd, I_PUSH, "if_ppp") < 0)
- fatal("Can't push ppp interface module: %m");
- if (kdebugflag) {
- x = PPPDBG_LOG + PPPDBG_IF;
- strioctl(iffd, PPPIO_DEBUG, &x, sizeof(int), 0);
- }
- if (strioctl(iffd, PPPIO_NEWPPA, &ifunit, sizeof(int), 0) < 0)
- fatal("Couldn't create ppp interface unit: %m");
- x = PPP_IP;
- if (strioctl(iffd, PPPIO_BIND, &x, sizeof(int), 0) < 0)
- fatal("Couldn't bind ppp interface to IP SAP: %m");
-
- n_pollfds = 0;
-}
-
-/*
- * sys_cleanup - restore any system state we modified before exiting:
- * mark the interface down, delete default route and/or proxy arp entry.
- * This shouldn't call die() because it's called from die().
- */
-void
-sys_cleanup()
-{
- if (if_is_up)
- sifdown(0);
- if (ifaddrs[0])
- cifaddr(0, ifaddrs[0], ifaddrs[1]);
- if (default_route_gateway)
- cifdefaultroute(0, 0, default_route_gateway);
- if (proxy_arp_addr)
- cifproxyarp(0, proxy_arp_addr);
-}
-
-/*
- * sys_close - Clean up in a child process before execing.
- */
-void
-sys_close()
-{
- close(iffd);
- close(pppfd);
- close(sockfd);
-}
-
-/*
- * sys_check_options - check the options that the user specified
- */
-int
-sys_check_options()
-{
- return 1;
-}
-
-#if 0
-/*
- * daemon - Detach us from controlling terminal session.
- */
-int
-daemon(nochdir, noclose)
- int nochdir, noclose;
-{
- int pid;
-
- if ((pid = fork()) < 0)
- return -1;
- if (pid != 0)
- exit(0); /* parent dies */
- setsid();
- if (!nochdir)
- chdir("/");
- if (!noclose) {
- fclose(stdin); /* don't need stdin, stdout, stderr */
- fclose(stdout);
- fclose(stderr);
- }
- return 0;
-}
-#endif
-
-/*
- * ppp_available - check whether the system has any ppp interfaces
- */
-int
-ppp_available()
-{
- struct stat buf;
-
- return stat("/dev/ppp", &buf) >= 0;
-}
-
-/*
- * tty_establish_ppp - Turn the serial port into a ppp interface.
- */
-int
-tty_establish_ppp(fd)
- int fd;
-{
- int i;
-
- /* Pop any existing modules off the tty stream. */
- for (i = 0;; ++i)
- if (ioctl(fd, I_LOOK, tty_modules[i]) < 0
- || ioctl(fd, I_POP, 0) < 0)
- break;
- tty_nmodules = i;
-
- /* Push the async hdlc module and the compressor module. */
- if (ioctl(fd, I_PUSH, "ppp_ahdl") < 0)
- fatal("Couldn't push PPP Async HDLC module: %m");
- if (ioctl(fd, I_PUSH, "ppp_comp") < 0)
- error("Couldn't push PPP compression module: %m");
-
- /* Link the serial port under the PPP multiplexor. */
- if ((fdmuxid = ioctl(pppfd, I_LINK, fd)) < 0)
- fatal("Can't link tty to PPP mux: %m");
-
- return pppfd;
-}
-
-/*
- * disestablish_ppp - Restore the serial port to normal operation.
- * It attempts to reconstruct the stream with the previously popped
- * modules. This shouldn't call die() because it's called from die().
- */
-void
-tty_disestablish_ppp(fd)
- int fd;
-{
- int i;
-
- if (fdmuxid >= 0) {
- if (ioctl(pppfd, I_UNLINK, fdmuxid) < 0) {
- if (!hungup)
- error("Can't unlink tty from PPP mux: %m");
- }
- fdmuxid = -1;
-
- if (!hungup) {
- while (ioctl(fd, I_POP, 0) >= 0)
- ;
- for (i = tty_nmodules - 1; i >= 0; --i)
- if (ioctl(fd, I_PUSH, tty_modules[i]) < 0)
- error("Couldn't restore tty module %s: %m",
- tty_modules[i]);
- }
- if (hungup && default_device && parent_pid > 0) {
- /*
- * If we have received a hangup, we need to send a SIGHUP
- * to the terminal's controlling process. The reason is
- * that the original stream head for the terminal hasn't
- * seen the M_HANGUP message (it went up through the ppp
- * driver to the stream head for our fd to /dev/ppp).
- * Actually we send the signal to the process that invoked
- * pppd, since SunOS doesn't have getsid().
- */
- kill(parent_pid, SIGHUP);
- }
- }
-}
-
-/*
- * Check whether the link seems not to be 8-bit clean.
- */
-void
-clean_check()
-{
- int x;
- char *s;
-
- if (strioctl(pppfd, PPPIO_GCLEAN, &x, 0, sizeof(x)) < 0)
- return;
- s = NULL;
- switch (~x) {
- case RCV_B7_0:
- s = "bit 7 set to 1";
- break;
- case RCV_B7_1:
- s = "bit 7 set to 0";
- break;
- case RCV_EVNP:
- s = "odd parity";
- break;
- case RCV_ODDP:
- s = "even parity";
- break;
- }
- if (s != NULL) {
- warn("Serial link is not 8-bit clean:");
- warn("All received characters had %s", s);
- }
-}
-
-/*
- * List of valid speeds.
- */
-struct speed {
- int speed_int, speed_val;
-} speeds[] = {
-#ifdef B50
- { 50, B50 },
-#endif
-#ifdef B75
- { 75, B75 },
-#endif
-#ifdef B110
- { 110, B110 },
-#endif
-#ifdef B134
- { 134, B134 },
-#endif
-#ifdef B150
- { 150, B150 },
-#endif
-#ifdef B200
- { 200, B200 },
-#endif
-#ifdef B300
- { 300, B300 },
-#endif
-#ifdef B600
- { 600, B600 },
-#endif
-#ifdef B1200
- { 1200, B1200 },
-#endif
-#ifdef B1800
- { 1800, B1800 },
-#endif
-#ifdef B2000
- { 2000, B2000 },
-#endif
-#ifdef B2400
- { 2400, B2400 },
-#endif
-#ifdef B3600
- { 3600, B3600 },
-#endif
-#ifdef B4800
- { 4800, B4800 },
-#endif
-#ifdef B7200
- { 7200, B7200 },
-#endif
-#ifdef B9600
- { 9600, B9600 },
-#endif
-#ifdef B19200
- { 19200, B19200 },
-#endif
-#ifdef B38400
- { 38400, B38400 },
-#endif
-#ifdef EXTA
- { 19200, EXTA },
-#endif
-#ifdef EXTB
- { 38400, EXTB },
-#endif
-#ifdef B57600
- { 57600, B57600 },
-#endif
-#ifdef B115200
- { 115200, B115200 },
-#endif
- { 0, 0 }
-};
-
-/*
- * Translate from bits/second to a speed_t.
- */
-static int
-translate_speed(bps)
- int bps;
-{
- struct speed *speedp;
-
- if (bps == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (bps == speedp->speed_int)
- return speedp->speed_val;
- warn("speed %d not supported", bps);
- return 0;
-}
-
-/*
- * Translate from a speed_t to bits/second.
- */
-static int
-baud_rate_of(speed)
- int speed;
-{
- struct speed *speedp;
-
- if (speed == 0)
- return 0;
- for (speedp = speeds; speedp->speed_int; speedp++)
- if (speed == speedp->speed_val)
- return speedp->speed_int;
- return 0;
-}
-
-/*
- * set_up_tty: Set up the serial port on `fd' for 8 bits, no parity,
- * at the requested speed, etc. If `local' is true, set CLOCAL
- * regardless of whether the modem option was specified.
- */
-void
-set_up_tty(fd, local)
- int fd, local;
-{
- int speed;
- struct termios tios;
-
- if (tcgetattr(fd, &tios) < 0)
- fatal("tcgetattr: %m");
-
- if (!restore_term) {
- inittermios = tios;
- ioctl(fd, TIOCGWINSZ, &wsinfo);
- }
-
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL);
- if (crtscts > 0)
- tios.c_cflag |= CRTSCTS;
- else if (crtscts < 0)
- tios.c_cflag &= ~CRTSCTS;
-
- tios.c_cflag |= CS8 | CREAD | HUPCL;
- if (local || !modem)
- tios.c_cflag |= CLOCAL;
- tios.c_iflag = IGNBRK | IGNPAR;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- tios.c_cc[VMIN] = 1;
- tios.c_cc[VTIME] = 0;
-
- if (crtscts == -2) {
- tios.c_iflag |= IXON | IXOFF;
- tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */
- tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */
- }
-
- speed = translate_speed(inspeed);
- if (speed) {
- cfsetospeed(&tios, speed);
- cfsetispeed(&tios, speed);
- } else {
- speed = cfgetospeed(&tios);
- /*
- * We can't proceed if the serial port speed is 0,
- * since that implies that the serial port is disabled.
- */
- if (speed == B0)
- fatal("Baud rate for %s is 0; need explicit baud rate", devnam);
- }
-
- if (tcsetattr(fd, TCSAFLUSH, &tios) < 0)
- fatal("tcsetattr: %m");
-
- baud_rate = inspeed = baud_rate_of(speed);
- restore_term = 1;
-}
-
-/*
- * restore_tty - restore the terminal to the saved settings.
- */
-void
-restore_tty(fd)
- int fd;
-{
- if (restore_term) {
- if (!default_device) {
- /*
- * Turn off echoing, because otherwise we can get into
- * a loop with the tty and the modem echoing to each other.
- * We presume we are the sole user of this tty device, so
- * when we close it, it will revert to its defaults anyway.
- */
- inittermios.c_lflag &= ~(ECHO | ECHONL);
- }
- if (tcsetattr(fd, TCSAFLUSH, &inittermios) < 0)
- if (!hungup && errno != ENXIO)
- warn("tcsetattr: %m");
- ioctl(fd, TIOCSWINSZ, &wsinfo);
- restore_term = 0;
- }
-}
-
-/*
- * setdtr - control the DTR line on the serial port.
- * This is called from die(), so it shouldn't call die().
- */
-void
-setdtr(fd, on)
-int fd, on;
-{
- int modembits = TIOCM_DTR;
-
- ioctl(fd, (on? TIOCMBIS: TIOCMBIC), &modembits);
-}
-
-/*
- * open_loopback - open the device we use for getting packets
- * in demand mode. Under SunOS, we use our existing fd
- * to the ppp driver.
- */
-int
-open_ppp_loopback()
-{
- return pppfd;
-}
-
-/*
- * output - Output PPP packet.
- */
-void
-output(unit, p, len)
- int unit;
- u_char *p;
- int len;
-{
- struct strbuf data;
- int retries;
- struct pollfd pfd;
-
- if (debug)
- dbglog("sent %P", p, len);
-
- data.len = len;
- data.buf = (caddr_t) p;
- retries = 4;
- while (putmsg(pppfd, NULL, &data, 0) < 0) {
- if (--retries < 0 || (errno != EWOULDBLOCK && errno != EAGAIN)) {
- if (errno != ENXIO)
- error("Couldn't send packet: %m");
- break;
- }
- pfd.fd = pppfd;
- pfd.events = POLLOUT;
- poll(&pfd, 1, 250); /* wait for up to 0.25 seconds */
- }
-}
-
-
-/*
- * wait_input - wait until there is data available,
- * for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-void
-wait_input(timo)
- struct timeval *timo;
-{
- int t;
-
- t = timo == NULL? -1: timo->tv_sec * 1000 + timo->tv_usec / 1000;
- if (poll(pollfds, n_pollfds, t) < 0 && errno != EINTR) {
- if (errno != EAGAIN)
- fatal("poll: %m");
- /* we can get EAGAIN on a heavily loaded system,
- * just wait a short time and try again. */
- usleep(50000);
- }
-}
-
-/*
- * add_fd - add an fd to the set that wait_input waits for.
- */
-void add_fd(fd)
- int fd;
-{
- int n;
-
- for (n = 0; n < n_pollfds; ++n)
- if (pollfds[n].fd == fd)
- return;
- if (n_pollfds < MAX_POLLFDS) {
- pollfds[n_pollfds].fd = fd;
- pollfds[n_pollfds].events = POLLIN | POLLPRI | POLLHUP;
- ++n_pollfds;
- } else
- error("Too many inputs!");
-}
-
-/*
- * remove_fd - remove an fd from the set that wait_input waits for.
- */
-void remove_fd(fd)
- int fd;
-{
- int n;
-
- for (n = 0; n < n_pollfds; ++n) {
- if (pollfds[n].fd == fd) {
- while (++n < n_pollfds)
- pollfds[n-1] = pollfds[n];
- --n_pollfds;
- break;
- }
- }
-}
-
-#if 0
-/*
- * wait_loop_output - wait until there is data available on the
- * loopback, for the length of time specified by *timo (indefinite
- * if timo is NULL).
- */
-void
-wait_loop_output(timo)
- struct timeval *timo;
-{
- wait_input(timo);
-}
-
-/*
- * wait_time - wait for a given length of time or until a
- * signal is received.
- */
-void
-wait_time(timo)
- struct timeval *timo;
-{
- int n;
-
- n = select(0, NULL, NULL, NULL, timo);
- if (n < 0 && errno != EINTR)
- fatal("select: %m");
-}
-#endif
-
-/*
- * read_packet - get a PPP packet from the serial device.
- */
-int
-read_packet(buf)
- u_char *buf;
-{
- struct strbuf ctrl, data;
- int flags, len;
- unsigned char ctrlbuf[64];
-
- for (;;) {
- data.maxlen = PPP_MRU + PPP_HDRLEN;
- data.buf = (caddr_t) buf;
- ctrl.maxlen = sizeof(ctrlbuf);
- ctrl.buf = (caddr_t) ctrlbuf;
- flags = 0;
- len = getmsg(pppfd, &ctrl, &data, &flags);
- if (len < 0) {
- if (errno == EAGAIN || errno == EINTR)
- return -1;
- fatal("Error reading packet: %m");
- }
-
- if (ctrl.len <= 0)
- return data.len;
-
- /*
- * Got a M_PROTO or M_PCPROTO message. Huh?
- */
- if (debug)
- dbglog("got ctrl msg len=%d", ctrl.len);
-
- }
-}
-
-/*
- * get_loop_output - get outgoing packets from the ppp device,
- * and detect when we want to bring the real link up.
- * Return value is 1 if we need to bring up the link, 0 otherwise.
- */
-int
-get_loop_output()
-{
- int len;
- int rv = 0;
-
- while ((len = read_packet(inpacket_buf)) > 0) {
- if (loop_frame(inpacket_buf, len))
- rv = 1;
- }
- return rv;
-}
-
-/*
- * ppp_send_config - configure the transmit characteristics of
- * the ppp interface.
- */
-void
-ppp_send_config(unit, mtu, asyncmap, pcomp, accomp)
- int unit, mtu;
- u_int32_t asyncmap;
- int pcomp, accomp;
-{
- int cf[2];
- struct ifreq ifr;
-
- link_mtu = mtu;
- if (strioctl(pppfd, PPPIO_MTU, &mtu, sizeof(mtu), 0) < 0) {
- if (hungup && errno == ENXIO)
- return;
- error("Couldn't set MTU: %m");
- }
- if (strioctl(pppfd, PPPIO_XACCM, &asyncmap, sizeof(asyncmap), 0) < 0) {
- error("Couldn't set transmit ACCM: %m");
- }
- cf[0] = (pcomp? COMP_PROT: 0) + (accomp? COMP_AC: 0);
- cf[1] = COMP_PROT | COMP_AC;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- error("Couldn't set prot/AC compression: %m");
- }
-
- /* set mtu for ip as well */
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_metric = link_mtu;
- if (ioctl(sockfd, SIOCSIFMTU, &ifr) < 0) {
- error("Couldn't set IP MTU: %m");
- }
-}
-
-/*
- * ppp_set_xaccm - set the extended transmit ACCM for the interface.
- */
-void
-ppp_set_xaccm(unit, accm)
- int unit;
- ext_accm accm;
-{
- if (strioctl(pppfd, PPPIO_XACCM, accm, sizeof(ext_accm), 0) < 0) {
- if (!hungup || errno != ENXIO)
- warn("Couldn't set extended ACCM: %m");
- }
-}
-
-/*
- * ppp_recv_config - configure the receive-side characteristics of
- * the ppp interface.
- */
-void
-ppp_recv_config(unit, mru, asyncmap, pcomp, accomp)
- int unit, mru;
- u_int32_t asyncmap;
- int pcomp, accomp;
-{
- int cf[2];
-
- link_mru = mru;
- if (strioctl(pppfd, PPPIO_MRU, &mru, sizeof(mru), 0) < 0) {
- if (hungup && errno == ENXIO)
- return;
- error("Couldn't set MRU: %m");
- }
- if (strioctl(pppfd, PPPIO_RACCM, &asyncmap, sizeof(asyncmap), 0) < 0) {
- error("Couldn't set receive ACCM: %m");
- }
- cf[0] = (pcomp? DECOMP_PROT: 0) + (accomp? DECOMP_AC: 0);
- cf[1] = DECOMP_PROT | DECOMP_AC;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- error("Couldn't set prot/AC decompression: %m");
- }
-}
-
-/*
- * ccp_test - ask kernel whether a given compression method
- * is acceptable for use.
- */
-int
-ccp_test(unit, opt_ptr, opt_len, for_transmit)
- int unit, opt_len, for_transmit;
- u_char *opt_ptr;
-{
- if (strioctl(pppfd, (for_transmit? PPPIO_XCOMP: PPPIO_RCOMP),
- opt_ptr, opt_len, 0) >= 0)
- return 1;
- return (errno == ENOSR)? 0: -1;
-}
-
-/*
- * ccp_flags_set - inform kernel about the current state of CCP.
- */
-void
-ccp_flags_set(unit, isopen, isup)
- int unit, isopen, isup;
-{
- int cf[2];
-
- cf[0] = (isopen? CCP_ISOPEN: 0) + (isup? CCP_ISUP: 0);
- cf[1] = CCP_ISOPEN | CCP_ISUP | CCP_ERROR | CCP_FATALERROR;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (!hungup || errno != ENXIO)
- error("Couldn't set kernel CCP state: %m");
- }
-}
-
-/*
- * get_idle_time - return how long the link has been idle.
- */
-int
-get_idle_time(u, ip)
- int u;
- struct ppp_idle *ip;
-{
- return strioctl(pppfd, PPPIO_GIDLE, ip, 0, sizeof(struct ppp_idle)) >= 0;
-}
-
-/*
- * get_ppp_stats - return statistics for the link.
- */
-int
-get_ppp_stats(u, stats)
- int u;
- struct pppd_stats *stats;
-{
- struct ppp_stats s;
-
- if (strioctl(pppfd, PPPIO_GETSTAT, &s, 0, sizeof(s)) < 0) {
- error("Couldn't get link statistics: %m");
- return 0;
- }
- stats->bytes_in = s.p.ppp_ibytes;
- stats->bytes_out = s.p.ppp_obytes;
- return 1;
-}
-
-
-/*
- * ccp_fatal_error - returns 1 if decompression was disabled as a
- * result of an error detected after decompression of a packet,
- * 0 otherwise. This is necessary because of patent nonsense.
- */
-int
-ccp_fatal_error(unit)
- int unit;
-{
- int cf[2];
-
- cf[0] = cf[1] = 0;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (errno != ENXIO && errno != EINVAL)
- error("Couldn't get compression flags: %m");
- return 0;
- }
- return cf[0] & CCP_FATALERROR;
-}
-
-/*
- * sifvjcomp - config tcp header compression
- */
-int
-sifvjcomp(u, vjcomp, xcidcomp, xmaxcid)
- int u, vjcomp, xcidcomp, xmaxcid;
-{
- int cf[2];
- char maxcid[2];
-
- if (vjcomp) {
- maxcid[0] = xcidcomp;
- maxcid[1] = 15; /* XXX should be rmaxcid */
- if (strioctl(pppfd, PPPIO_VJINIT, maxcid, sizeof(maxcid), 0) < 0) {
- error("Couldn't initialize VJ compression: %m");
- }
- }
-
- cf[0] = (vjcomp? COMP_VJC + DECOMP_VJC: 0) /* XXX this is wrong */
- + (xcidcomp? COMP_VJCCID + DECOMP_VJCCID: 0);
- cf[1] = COMP_VJC + DECOMP_VJC + COMP_VJCCID + DECOMP_VJCCID;
- if (strioctl(pppfd, PPPIO_CFLAGS, cf, sizeof(cf), sizeof(int)) < 0) {
- if (vjcomp)
- error("Couldn't enable VJ compression: %m");
- }
-
- return 1;
-}
-
-/*
- * sifup - Config the interface up and enable IP packets to pass.
- */
-int
-sifup(u)
- int u;
-{
- struct ifreq ifr;
-
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface up (get): %m");
- return 0;
- }
- ifr.ifr_flags |= IFF_UP;
- if (ioctl(sockfd, SIOCSIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface up (set): %m");
- return 0;
- }
- if_is_up = 1;
- return 1;
-}
-
-/*
- * sifdown - Config the interface down and disable IP.
- */
-int
-sifdown(u)
- int u;
-{
- struct ifreq ifr;
-
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface down (get): %m");
- return 0;
- }
- if ((ifr.ifr_flags & IFF_UP) != 0) {
- ifr.ifr_flags &= ~IFF_UP;
- if (ioctl(sockfd, SIOCSIFFLAGS, &ifr) < 0) {
- error("Couldn't mark interface down (set): %m");
- return 0;
- }
- }
- if_is_up = 0;
- return 1;
-}
-
-/*
- * sifnpmode - Set the mode for handling packets for a given NP.
- */
-int
-sifnpmode(u, proto, mode)
- int u;
- int proto;
- enum NPmode mode;
-{
- int npi[2];
-
- npi[0] = proto;
- npi[1] = (int) mode;
- if (strioctl(pppfd, PPPIO_NPMODE, npi, 2 * sizeof(int), 0) < 0) {
- error("ioctl(set NP %d mode to %d): %m", proto, mode);
- return 0;
- }
- return 1;
-}
-
-#define INET_ADDR(x) (((struct sockaddr_in *) &(x))->sin_addr.s_addr)
-
-/*
- * sifaddr - Config the interface IP addresses and netmask.
- */
-int
-sifaddr(u, o, h, m)
- int u;
- u_int32_t o, h, m;
-{
- struct ifreq ifr;
-
- memset(&ifr, 0, sizeof(ifr));
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_addr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_addr) = m;
- if (ioctl(sockfd, SIOCSIFNETMASK, &ifr) < 0) {
- error("Couldn't set IP netmask: %m");
- }
- ifr.ifr_addr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_addr) = o;
- if (ioctl(sockfd, SIOCSIFADDR, &ifr) < 0) {
- error("Couldn't set local IP address: %m");
- }
- ifr.ifr_dstaddr.sa_family = AF_INET;
- INET_ADDR(ifr.ifr_dstaddr) = h;
- if (ioctl(sockfd, SIOCSIFDSTADDR, &ifr) < 0) {
- error("Couldn't set remote IP address: %m");
- }
-#if 0 /* now done in ppp_send_config */
- ifr.ifr_metric = link_mtu;
- if (ioctl(sockfd, SIOCSIFMTU, &ifr) < 0) {
- error("Couldn't set IP MTU: %m");
- }
-#endif
- ifaddrs[0] = o;
- ifaddrs[1] = h;
-
- return 1;
-}
-
-/*
- * cifaddr - Clear the interface IP addresses, and delete routes
- * through the interface if possible.
- */
-int
-cifaddr(u, o, h)
- int u;
- u_int32_t o, h;
-{
- struct rtentry rt;
-
- bzero(&rt, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = h;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = o;
- rt.rt_flags = RTF_HOST;
- if (ioctl(sockfd, SIOCDELRT, &rt) < 0)
- error("Couldn't delete route through interface: %m");
- ifaddrs[0] = 0;
- return 1;
-}
-
-/*
- * sifdefaultroute - assign a default route through the address given.
- */
-int
-sifdefaultroute(u, l, g)
- int u;
- u_int32_t l, g;
-{
- struct rtentry rt;
-
- bzero(&rt, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = 0;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = g;
- rt.rt_flags = RTF_GATEWAY;
-
- if (ioctl(sockfd, SIOCADDRT, &rt) < 0) {
- error("Can't add default route: %m");
- return 0;
- }
-
- default_route_gateway = g;
- return 1;
-}
-
-/*
- * cifdefaultroute - delete a default route through the address given.
- */
-int
-cifdefaultroute(u, l, g)
- int u;
- u_int32_t l, g;
-{
- struct rtentry rt;
-
- bzero(&rt, sizeof(rt));
- rt.rt_dst.sa_family = AF_INET;
- INET_ADDR(rt.rt_dst) = 0;
- rt.rt_gateway.sa_family = AF_INET;
- INET_ADDR(rt.rt_gateway) = g;
- rt.rt_flags = RTF_GATEWAY;
-
- if (ioctl(sockfd, SIOCDELRT, &rt) < 0) {
- error("Can't delete default route: %m");
- return 0;
- }
-
- default_route_gateway = 0;
- return 1;
-}
-
-/*
- * sifproxyarp - Make a proxy ARP entry for the peer.
- */
-int
-sifproxyarp(unit, hisaddr)
- int unit;
- u_int32_t hisaddr;
-{
- struct arpreq arpreq;
-
- bzero(&arpreq, sizeof(arpreq));
- if (!get_ether_addr(hisaddr, &arpreq.arp_ha))
- return 0;
-
- arpreq.arp_pa.sa_family = AF_INET;
- INET_ADDR(arpreq.arp_pa) = hisaddr;
- arpreq.arp_flags = ATF_PERM | ATF_PUBL;
- if (ioctl(sockfd, SIOCSARP, (caddr_t) &arpreq) < 0) {
- error("Couldn't set proxy ARP entry: %m");
- return 0;
- }
-
- proxy_arp_addr = hisaddr;
- return 1;
-}
-
-/*
- * cifproxyarp - Delete the proxy ARP entry for the peer.
- */
-int
-cifproxyarp(unit, hisaddr)
- int unit;
- u_int32_t hisaddr;
-{
- struct arpreq arpreq;
-
- bzero(&arpreq, sizeof(arpreq));
- arpreq.arp_pa.sa_family = AF_INET;
- INET_ADDR(arpreq.arp_pa) = hisaddr;
- if (ioctl(sockfd, SIOCDARP, (caddr_t)&arpreq) < 0) {
- error("Couldn't delete proxy ARP entry: %m");
- return 0;
- }
-
- proxy_arp_addr = 0;
- return 1;
-}
-
-/*
- * get_ether_addr - get the hardware address of an interface on the
- * the same subnet as ipaddr.
- */
-#define MAX_IFS 32
-
-static int
-get_ether_addr(ipaddr, hwaddr)
- u_int32_t ipaddr;
- struct sockaddr *hwaddr;
-{
- struct ifreq *ifr, *ifend;
- u_int32_t ina, mask;
- struct ifreq ifreq;
- struct ifconf ifc;
- struct ifreq ifs[MAX_IFS];
- int nit_fd;
-
- ifc.ifc_len = sizeof(ifs);
- ifc.ifc_req = ifs;
- if (ioctl(sockfd, SIOCGIFCONF, &ifc) < 0) {
- error("ioctl(SIOCGIFCONF): %m");
- return 0;
- }
-
- /*
- * Scan through looking for an interface with an Internet
- * address on the same subnet as `ipaddr'.
- */
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ifr = (struct ifreq *)
- ((char *)&ifr->ifr_addr + sizeof(struct sockaddr))) {
- if (ifr->ifr_addr.sa_family == AF_INET) {
-
- /*
- * Check that the interface is up, and not point-to-point
- * or loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
- if ((ifreq.ifr_flags &
- (IFF_UP|IFF_BROADCAST|IFF_POINTOPOINT|IFF_LOOPBACK|IFF_NOARP))
- != (IFF_UP|IFF_BROADCAST))
- continue;
-
- /*
- * Get its netmask and check that it's on the right subnet.
- */
- if (ioctl(sockfd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- ina = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr;
- mask = ((struct sockaddr_in *) &ifreq.ifr_addr)->sin_addr.s_addr;
- if ((ipaddr & mask) != (ina & mask))
- continue;
-
- break;
- }
- }
-
- if (ifr >= ifend)
- return 0;
- info("found interface %s for proxy arp", ifr->ifr_name);
-
- /*
- * Grab the physical address for this interface.
- */
- if ((nit_fd = open("/dev/nit", O_RDONLY)) < 0) {
- error("Couldn't open /dev/nit: %m");
- return 0;
- }
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(nit_fd, NIOCBIND, &ifreq) < 0
- || ioctl(nit_fd, SIOCGIFADDR, &ifreq) < 0) {
- error("Couldn't get hardware address for %s: %m",
- ifreq.ifr_name);
- close(nit_fd);
- return 0;
- }
-
- hwaddr->sa_family = AF_UNSPEC;
- memcpy(hwaddr->sa_data, ifreq.ifr_addr.sa_data, 6);
- close(nit_fd);
- return 1;
-}
-
-/*
- * have_route_to - determine if the system has any route to
- * a given IP address.
- * For demand mode to work properly, we have to ignore routes
- * through our own interface.
- */
-int have_route_to(addr)
- u_int32_t addr;
-{
- return -1;
-}
-
-#define WTMPFILE "/usr/adm/wtmp"
-
-void
-logwtmp(line, name, host)
- const char *line, *name, *host;
-{
- int fd;
- struct stat buf;
- struct utmp ut;
-
- if ((fd = open(WTMPFILE, O_WRONLY|O_APPEND, 0)) < 0)
- return;
- if (!fstat(fd, &buf)) {
- strncpy(ut.ut_line, line, sizeof(ut.ut_line));
- strncpy(ut.ut_name, name, sizeof(ut.ut_name));
- strncpy(ut.ut_host, host, sizeof(ut.ut_host));
- (void)time(&ut.ut_time);
- if (write(fd, (char *)&ut, sizeof(struct utmp)) != sizeof(struct utmp))
- (void)ftruncate(fd, buf.st_size);
- }
- close(fd);
-}
-
-/*
- * Return user specified netmask, modified by any mask we might determine
- * for address `addr' (in network byte order).
- * Here we scan through the system's list of interfaces, looking for
- * any non-point-to-point interfaces which might appear to be on the same
- * network as `addr'. If we find any, we OR in their netmask to the
- * user-specified netmask.
- */
-u_int32_t
-GetMask(addr)
- u_int32_t addr;
-{
- u_int32_t mask, nmask, ina;
- struct ifreq *ifr, *ifend, ifreq;
- struct ifconf ifc;
-
- addr = ntohl(addr);
- if (IN_CLASSA(addr)) /* determine network mask for address class */
- nmask = IN_CLASSA_NET;
- else if (IN_CLASSB(addr))
- nmask = IN_CLASSB_NET;
- else
- nmask = IN_CLASSC_NET;
- /* class D nets are disallowed by bad_ip_adrs */
- mask = netmask | htonl(nmask);
-
- /*
- * Scan through the system's network interfaces.
- */
- ifc.ifc_len = MAX_IFS * sizeof(struct ifreq);
- ifc.ifc_req = alloca(ifc.ifc_len);
- if (ifc.ifc_req == 0)
- return mask;
- if (ioctl(sockfd, SIOCGIFCONF, &ifc) < 0) {
- warn("Couldn't get system interface list: %m");
- return mask;
- }
- ifend = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
- for (ifr = ifc.ifc_req; ifr < ifend; ++ifr) {
- /*
- * Check the interface's internet address.
- */
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
- ina = INET_ADDR(ifr->ifr_addr);
- if ((ntohl(ina) & nmask) != (addr & nmask))
- continue;
- /*
- * Check that the interface is up, and not point-to-point or loopback.
- */
- strlcpy(ifreq.ifr_name, ifr->ifr_name, sizeof(ifreq.ifr_name));
- if (ioctl(sockfd, SIOCGIFFLAGS, &ifreq) < 0)
- continue;
- if ((ifreq.ifr_flags & (IFF_UP|IFF_POINTOPOINT|IFF_LOOPBACK))
- != IFF_UP)
- continue;
- /*
- * Get its netmask and OR it into our mask.
- */
- if (ioctl(sockfd, SIOCGIFNETMASK, &ifreq) < 0)
- continue;
- mask |= INET_ADDR(ifreq.ifr_addr);
- }
-
- return mask;
-}
-
-static int
-strioctl(fd, cmd, ptr, ilen, olen)
- int fd, cmd, ilen, olen;
- void *ptr;
-{
- struct strioctl str;
-
- str.ic_cmd = cmd;
- str.ic_timout = 0;
- str.ic_len = ilen;
- str.ic_dp = ptr;
- if (ioctl(fd, I_STR, &str) == -1)
- return -1;
- if (str.ic_len != olen)
- dbglog("strioctl: expected %d bytes, got %d for cmd %x\n",
- olen, str.ic_len, cmd);
- return 0;
-}
-
-/*
- * Use the hostid as part of the random number seed.
- */
-int
-get_host_seed()
-{
- return gethostid();
-}
-
-#if 0
-/*
- * Code for locking/unlocking the serial device.
- * This code is derived from chat.c.
- */
-
-#if !defined(HDB) && !defined(SUNOS3)
-#define HDB 1 /* ascii lock files are the default */
-#endif
-
-#ifndef LOCK_DIR
-# if HDB
-# define PIDSTRING
-# define LOCK_PREFIX "/usr/spool/locks/LCK.."
-# else /* HDB */
-# define LOCK_PREFIX "/usr/spool/uucp/LCK.."
-# endif /* HDB */
-#endif /* LOCK_DIR */
-
-static char *lock_file; /* name of lock file created */
-
-/*
- * lock - create a lock file for the named device.
- */
-int
-lock(dev)
- char *dev;
-{
- char hdb_lock_buffer[12];
- int fd, pid, n;
- char *p;
- size_t l;
-
- if ((p = strrchr(dev, '/')) != NULL)
- dev = p + 1;
- l = strlen(LOCK_PREFIX) + strlen(dev) + 1;
- lock_file = malloc(l);
- if (lock_file == NULL)
- novm("lock file name");
- slprintf(lock_file, l, "%s%s", LOCK_PREFIX, dev);
-
- while ((fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR, 0644)) < 0) {
- if (errno == EEXIST
- && (fd = open(lock_file, O_RDONLY, 0)) >= 0) {
- /* Read the lock file to find out who has the device locked */
-#ifdef PIDSTRING
- n = read(fd, hdb_lock_buffer, 11);
- if (n > 0) {
- hdb_lock_buffer[n] = 0;
- pid = atoi(hdb_lock_buffer);
- }
-#else
- n = read(fd, &pid, sizeof(pid));
-#endif
- if (n <= 0) {
- error("Can't read pid from lock file %s", lock_file);
- close(fd);
- } else {
- if (kill(pid, 0) == -1 && errno == ESRCH) {
- /* pid no longer exists - remove the lock file */
- if (unlink(lock_file) == 0) {
- close(fd);
- notice("Removed stale lock on %s (pid %d)",
- dev, pid);
- continue;
- } else
- warn("Couldn't remove stale lock on %s",
- dev);
- } else
- notice("Device %s is locked by pid %d",
- dev, pid);
- }
- close(fd);
- } else
- error("Can't create lock file %s: %m", lock_file);
- free(lock_file);
- lock_file = NULL;
- return -1;
- }
-
-#ifdef PIDSTRING
- slprintf(hdb_lock_buffer, sizeof(hdb_lock_buffer), "%10d\n", getpid());
- write(fd, hdb_lock_buffer, 11);
-#else
- pid = getpid();
- write(fd, &pid, sizeof pid);
-#endif
-
- close(fd);
- return 0;
-}
-
-/*
- * unlock - remove our lockfile
- */
-void
-unlock()
-{
- if (lock_file) {
- unlink(lock_file);
- free(lock_file);
- lock_file = NULL;
- }
-}
-#endif /* lock stuff removed */
-
-/*
- * get_pty - get a pty master/slave pair and chown the slave side
- * to the uid given. Assumes slave_name points to >= 12 bytes of space.
- */
-int
-get_pty(master_fdp, slave_fdp, slave_name, uid)
- int *master_fdp;
- int *slave_fdp;
- char *slave_name;
- int uid;
-{
- int i, mfd, sfd;
- char pty_name[12];
- struct termios tios;
-
- sfd = -1;
- for (i = 0; i < 64; ++i) {
- slprintf(pty_name, sizeof(pty_name), "/dev/pty%c%x",
- 'p' + i / 16, i % 16);
- mfd = open(pty_name, O_RDWR, 0);
- if (mfd >= 0) {
- pty_name[5] = 't';
- sfd = open(pty_name, O_RDWR | O_NOCTTY, 0);
- if (sfd >= 0)
- break;
- close(mfd);
- }
- }
- if (sfd < 0)
- return 0;
-
- strlcpy(slave_name, pty_name, 12);
- *master_fdp = mfd;
- *slave_fdp = sfd;
- fchown(sfd, uid, -1);
- fchmod(sfd, S_IRUSR | S_IWUSR);
- if (tcgetattr(sfd, &tios) == 0) {
- tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB);
- tios.c_cflag |= CS8 | CREAD;
- tios.c_iflag = IGNPAR | CLOCAL;
- tios.c_oflag = 0;
- tios.c_lflag = 0;
- if (tcsetattr(sfd, TCSAFLUSH, &tios) < 0)
- warn("couldn't set attributes on pty: %m");
- } else
- warn("couldn't get attributes on pty: %m");
-
- return 1;
-}
-
-/*
- * SunOS doesn't have strtoul :-(
- */
-unsigned long
-strtoul(str, ptr, base)
- char *str, **ptr;
- int base;
-{
- return (unsigned long) strtol(str, ptr, base);
-}
-
-/*
- * Or strerror :-(
- */
-extern char *sys_errlist[];
-extern int sys_nerr;
-
-char *
-strerror(n)
- int n;
-{
- static char unknown[32];
-
- if (n > 0 && n < sys_nerr)
- return sys_errlist[n];
- slprintf(unknown, sizeof(unknown), "Error %d", n);
- return unknown;
-}
diff --git a/mdk-stage1/ppp/pppd/tdb.c b/mdk-stage1/ppp/pppd/tdb.c
deleted file mode 100644
index 7fd58291e..000000000
--- a/mdk-stage1/ppp/pppd/tdb.c
+++ /dev/null
@@ -1,1282 +0,0 @@
-/*
- * Database functions
- * Copyright (C) Andrew Tridgell 1999
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms AND provided that this software or
- * any derived work is only used as part of the PPP daemon (pppd)
- * and related utilities.
- * The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Note: this software is also available under the Gnu Public License
- * version 2 or later.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include "tdb.h"
-
-#define TDB_VERSION (0x26011967 + 1)
-#define TDB_MAGIC (0x26011999U)
-#define TDB_FREE_MAGIC (~TDB_MAGIC)
-#define TDB_ALIGN 4
-#define MIN_REC_SIZE (2*sizeof(struct list_struct) + TDB_ALIGN)
-#define DEFAULT_HASH_SIZE 128
-#define TDB_PAGE_SIZE 0x2000
-#define TDB_LEN_MULTIPLIER 10
-#define FREELIST_TOP (sizeof(struct tdb_header))
-
-#define LOCK_SET 1
-#define LOCK_CLEAR 0
-
-/* lock offsets */
-#define GLOBAL_LOCK 0
-#define ACTIVE_LOCK 4
-#define LIST_LOCK_BASE 1024
-
-#define BUCKET(hash) ((hash) % tdb->header.hash_size)
-
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-
-/* the body of the database is made of one list_struct for the free space
- plus a separate data list for each hash value */
-struct list_struct {
- tdb_len rec_len; /* total byte length of record */
- tdb_off next; /* offset of the next record in the list */
- tdb_len key_len; /* byte length of key */
- tdb_len data_len; /* byte length of data */
- unsigned full_hash; /* the full 32 bit hash of the key */
- unsigned magic; /* try to catch errors */
- /*
- the following union is implied
- union {
- char record[rec_len];
- struct {
- char key[key_len];
- char data[data_len];
- }
- }
- */
-};
-
-/* a null data record - useful for error returns */
-static TDB_DATA null_data;
-
-/* a byte range locking function - return 0 on success
- this functions locks/unlocks 1 byte at the specified offset */
-static int tdb_brlock(TDB_CONTEXT *tdb, tdb_off offset,
- int set, int rw_type, int lck_type)
-{
-#if NOLOCK
- return 0;
-#else
- struct flock fl;
-
- if (tdb->fd == -1) return 0; /* for in memory tdb */
-
- if (tdb->read_only) return -1;
-
- fl.l_type = set==LOCK_SET?rw_type:F_UNLCK;
- fl.l_whence = SEEK_SET;
- fl.l_start = offset;
- fl.l_len = 1;
- fl.l_pid = 0;
-
- if (fcntl(tdb->fd, lck_type, &fl) != 0) {
-#if TDB_DEBUG
- if (lck_type == F_SETLKW) {
- printf("lock %d failed at %d (%s)\n",
- set, offset, strerror(errno));
- }
-#endif
- tdb->ecode = TDB_ERR_LOCK;
- return -1;
- }
- return 0;
-#endif
-}
-
-/* lock a list in the database. list -1 is the alloc list */
-static int tdb_lock(TDB_CONTEXT *tdb, int list)
-{
- if (list < -1 || list >= (int)tdb->header.hash_size) {
-#if TDB_DEBUG
- printf("bad list %d\n", list);
-#endif
- return -1;
- }
- if (tdb->locked[list+1] == 0) {
- if (tdb_brlock(tdb, LIST_LOCK_BASE + 4*list, LOCK_SET,
- F_WRLCK, F_SETLKW) != 0) {
- return -1;
- }
- }
- tdb->locked[list+1]++;
- return 0;
-}
-
-/* unlock the database. */
-static int tdb_unlock(TDB_CONTEXT *tdb, int list)
-{
- if (list < -1 || list >= (int)tdb->header.hash_size) {
-#if TDB_DEBUG
- printf("bad unlock list %d\n", list);
-#endif
- return -1;
- }
-
- if (tdb->locked[list+1] == 0) {
-#if TDB_DEBUG
- printf("not locked %d\n", list);
-#endif
- tdb->ecode = TDB_ERR_LOCK;
- return -1;
- }
- if (tdb->locked[list+1] == 1) {
- if (tdb_brlock(tdb, LIST_LOCK_BASE + 4*list, LOCK_CLEAR,
- F_WRLCK, F_SETLKW) != 0) {
- return -1;
- }
- }
- tdb->locked[list+1]--;
- return 0;
-}
-
-/* the hash algorithm - turn a key into an integer
- This is based on the hash agorithm from gdbm */
-static unsigned tdb_hash(TDB_DATA *key)
-{
- unsigned value; /* Used to compute the hash value. */
- unsigned i; /* Used to cycle through random values. */
-
- /* Set the initial value from the key size. */
- value = 0x238F13AF * key->dsize;
- for (i=0; i < key->dsize; i++) {
- value = (value + (key->dptr[i] << (i*5 % 24)));
- }
-
- value = (1103515243 * value + 12345);
-
- return value;
-}
-
-/* find the top of the hash chain for an open database */
-static tdb_off tdb_hash_top(TDB_CONTEXT *tdb, unsigned hash)
-{
- tdb_off ret;
- hash = BUCKET(hash);
- ret = FREELIST_TOP + (hash+1)*sizeof(tdb_off);
- return ret;
-}
-
-
-/* check for an out of bounds access - if it is out of bounds then
- see if the database has been expanded by someone else and expand
- if necessary */
-static int tdb_oob(TDB_CONTEXT *tdb, tdb_off offset)
-{
- struct stat st;
- if ((offset <= tdb->map_size) || (tdb->fd == -1)) return 0;
-
- fstat(tdb->fd, &st);
- if (st.st_size <= (ssize_t)offset) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- }
-
-#if HAVE_MMAP
- if (tdb->map_ptr) {
- munmap(tdb->map_ptr, tdb->map_size);
- tdb->map_ptr = NULL;
- }
-#endif
-
- tdb->map_size = st.st_size;
-#if HAVE_MMAP
- tdb->map_ptr = (void *)mmap(NULL, tdb->map_size,
- tdb->read_only?PROT_READ:PROT_READ|PROT_WRITE,
- MAP_SHARED | MAP_FILE, tdb->fd, 0);
-#endif
- return 0;
-}
-
-
-/* write a lump of data at a specified offset */
-static int tdb_write(TDB_CONTEXT *tdb, tdb_off offset, const char *buf, tdb_len len)
-{
- if (tdb_oob(tdb, offset + len) != 0) {
- /* oops - trying to write beyond the end of the database! */
- return -1;
- }
-
- if (tdb->map_ptr) {
- memcpy(offset + (char *)tdb->map_ptr, buf, len);
- } else {
- if (lseek(tdb->fd, offset, SEEK_SET) != offset ||
- write(tdb->fd, buf, len) != (ssize_t)len) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- }
- }
- return 0;
-}
-
-/* read a lump of data at a specified offset */
-static int tdb_read(TDB_CONTEXT *tdb, tdb_off offset, char *buf, tdb_len len)
-{
- if (tdb_oob(tdb, offset + len) != 0) {
- /* oops - trying to read beyond the end of the database! */
- return -1;
- }
-
- if (tdb->map_ptr) {
- memcpy(buf, offset + (char *)tdb->map_ptr, len);
- } else {
- if (lseek(tdb->fd, offset, SEEK_SET) != offset ||
- read(tdb->fd, buf, len) != (ssize_t)len) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- }
- }
- return 0;
-}
-
-
-/* read a lump of data, allocating the space for it */
-static char *tdb_alloc_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_len len)
-{
- char *buf;
-
- buf = (char *)malloc(len);
-
- if (!buf) {
- tdb->ecode = TDB_ERR_OOM;
- return NULL;
- }
-
- if (tdb_read(tdb, offset, buf, len) == -1) {
- free(buf);
- return NULL;
- }
-
- return buf;
-}
-
-/* convenience routine for writing a record */
-static int rec_write(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
-{
- return tdb_write(tdb, offset, (char *)rec, sizeof(*rec));
-}
-
-/* convenience routine for writing a tdb_off */
-static int ofs_write(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
-{
- return tdb_write(tdb, offset, (char *)d, sizeof(*d));
-}
-
-/* read a tdb_off from the store */
-static int ofs_read(TDB_CONTEXT *tdb, tdb_off offset, tdb_off *d)
-{
- return tdb_read(tdb, offset, (char *)d, sizeof(*d));
-}
-
-/* read a record and check for simple errors */
-static int rec_read(TDB_CONTEXT *tdb, tdb_off offset, struct list_struct *rec)
-{
- if (tdb_read(tdb, offset, (char *)rec, sizeof(*rec)) == -1) return -1;
- if (rec->magic != TDB_MAGIC) {
-#if TDB_DEBUG
- printf("bad magic 0x%08x at offset %d\n",
- rec->magic, offset);
-#endif
- tdb->ecode = TDB_ERR_CORRUPT;
- return -1;
- }
- if (tdb_oob(tdb, rec->next) != 0) {
- return -1;
- }
- return 0;
-}
-
-/* expand the database at least length bytes by expanding the
- underlying file and doing the mmap again if necessary */
-static int tdb_expand(TDB_CONTEXT *tdb, tdb_off length)
-{
- struct list_struct rec;
- tdb_off offset, ptr;
- char b = 0;
-
- tdb_lock(tdb,-1);
-
- /* make sure we know about any previous expansions by another
- process */
- tdb_oob(tdb,tdb->map_size + 1);
-
- /* always make room for at least 10 more records */
- length *= TDB_LEN_MULTIPLIER;
-
- /* and round the database up to a multiple of TDB_PAGE_SIZE */
- length = ((tdb->map_size + length + TDB_PAGE_SIZE) & ~(TDB_PAGE_SIZE - 1)) - tdb->map_size;
-
- /* expand the file itself */
- if (tdb->fd != -1) {
- lseek(tdb->fd, tdb->map_size + length - 1, SEEK_SET);
- if (write(tdb->fd, &b, 1) != 1) goto fail;
- }
-
- /* form a new freelist record */
- offset = FREELIST_TOP;
- rec.rec_len = length - sizeof(rec);
- rec.magic = TDB_FREE_MAGIC;
- if (ofs_read(tdb, offset, &rec.next) == -1) {
- goto fail;
- }
-
-#if HAVE_MMAP
- if (tdb->fd != -1 && tdb->map_ptr) {
- munmap(tdb->map_ptr, tdb->map_size);
- tdb->map_ptr = NULL;
- }
-#endif
-
- tdb->map_size += length;
-
- if (tdb->fd == -1) {
- tdb->map_ptr = realloc(tdb->map_ptr, tdb->map_size);
- }
-
- /* write it out */
- if (rec_write(tdb, tdb->map_size - length, &rec) == -1) {
- goto fail;
- }
-
- /* link it into the free list */
- ptr = tdb->map_size - length;
- if (ofs_write(tdb, offset, &ptr) == -1) goto fail;
-
-#if HAVE_MMAP
- if (tdb->fd != -1) {
- tdb->map_ptr = (void *)mmap(NULL, tdb->map_size,
- PROT_READ|PROT_WRITE,
- MAP_SHARED | MAP_FILE, tdb->fd, 0);
- }
-#endif
-
- tdb_unlock(tdb, -1);
- return 0;
-
- fail:
- tdb_unlock(tdb,-1);
- return -1;
-}
-
-/* allocate some space from the free list. The offset returned points
- to a unconnected list_struct within the database with room for at
- least length bytes of total data
-
- 0 is returned if the space could not be allocated
- */
-static tdb_off tdb_allocate(TDB_CONTEXT *tdb, tdb_len length)
-{
- tdb_off offset, rec_ptr, last_ptr;
- struct list_struct rec, lastrec, newrec;
-
- tdb_lock(tdb, -1);
-
- again:
- last_ptr = 0;
- offset = FREELIST_TOP;
-
- /* read in the freelist top */
- if (ofs_read(tdb, offset, &rec_ptr) == -1) {
- goto fail;
- }
-
- /* keep looking until we find a freelist record that is big
- enough */
- while (rec_ptr) {
- if (tdb_read(tdb, rec_ptr, (char *)&rec, sizeof(rec)) == -1) {
- goto fail;
- }
-
- if (rec.magic != TDB_FREE_MAGIC) {
-#if TDB_DEBUG
- printf("bad magic 0x%08x in free list\n", rec.magic);
-#endif
- goto fail;
- }
-
- if (rec.rec_len >= length) {
- /* found it - now possibly split it up */
- if (rec.rec_len > length + MIN_REC_SIZE) {
- length = (length + TDB_ALIGN) & ~(TDB_ALIGN-1);
-
- newrec.rec_len = rec.rec_len - (sizeof(rec) + length);
- newrec.next = rec.next;
- newrec.magic = TDB_FREE_MAGIC;
-
- rec.rec_len = length;
- rec.next = rec_ptr + sizeof(rec) + rec.rec_len;
-
- if (rec_write(tdb, rec.next, &newrec) == -1) {
- goto fail;
- }
-
- if (rec_write(tdb, rec_ptr, &rec) == -1) {
- goto fail;
- }
- }
-
- /* remove it from the list */
- if (last_ptr == 0) {
- offset = FREELIST_TOP;
-
- if (ofs_write(tdb, offset, &rec.next) == -1) {
- goto fail;
- }
- } else {
- lastrec.next = rec.next;
- if (rec_write(tdb, last_ptr, &lastrec) == -1) {
- goto fail;
- }
- }
-
- /* all done - return the new record offset */
- tdb_unlock(tdb, -1);
- return rec_ptr;
- }
-
- /* move to the next record */
- lastrec = rec;
- last_ptr = rec_ptr;
- rec_ptr = rec.next;
- }
-
- /* we didn't find enough space. See if we can expand the
- database and if we can then try again */
- if (tdb_expand(tdb, length + sizeof(rec)) == 0) goto again;
-
- fail:
-#if TDB_DEBUG
- printf("tdb_allocate failed for size %u\n", length);
-#endif
- tdb_unlock(tdb, -1);
- return 0;
-}
-
-/* initialise a new database with a specified hash size */
-static int tdb_new_database(TDB_CONTEXT *tdb, int hash_size)
-{
- struct tdb_header header;
- tdb_off offset;
- int i, size = 0;
- tdb_off buf[16];
-
- /* create the header */
- memset(&header, 0, sizeof(header));
- memcpy(header.magic_food, TDB_MAGIC_FOOD, strlen(TDB_MAGIC_FOOD)+1);
- header.version = TDB_VERSION;
- header.hash_size = hash_size;
- lseek(tdb->fd, 0, SEEK_SET);
- ftruncate(tdb->fd, 0);
-
- if (tdb->fd != -1 && write(tdb->fd, &header, sizeof(header)) !=
- sizeof(header)) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- } else size += sizeof(header);
-
- /* the freelist and hash pointers */
- offset = 0;
- memset(buf, 0, sizeof(buf));
-
- for (i=0;(hash_size+1)-i >= 16; i += 16) {
- if (tdb->fd != -1 && write(tdb->fd, buf, sizeof(buf)) !=
- sizeof(buf)) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- } else size += sizeof(buf);
- }
-
- for (;i<hash_size+1; i++) {
- if (tdb->fd != -1 && write(tdb->fd, buf, sizeof(tdb_off)) !=
- sizeof(tdb_off)) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- } else size += sizeof(tdb_off);
- }
-
- if (tdb->fd == -1) {
- tdb->map_ptr = calloc(size, 1);
- tdb->map_size = size;
- if (tdb->map_ptr == NULL) {
- tdb->ecode = TDB_ERR_IO;
- return -1;
- }
- memcpy(&tdb->header, &header, sizeof(header));
- }
-
-#if TDB_DEBUG
- printf("initialised database of hash_size %u\n",
- hash_size);
-#endif
- return 0;
-}
-
-/* Returns 0 on fail. On success, return offset of record, and fills
- in rec */
-static tdb_off tdb_find(TDB_CONTEXT *tdb, TDB_DATA key, unsigned int hash,
- struct list_struct *rec)
-{
- tdb_off offset, rec_ptr;
-
- /* find the top of the hash chain */
- offset = tdb_hash_top(tdb, hash);
-
- /* read in the hash top */
- if (ofs_read(tdb, offset, &rec_ptr) == -1)
- return 0;
-
- /* keep looking until we find the right record */
- while (rec_ptr) {
- if (rec_read(tdb, rec_ptr, rec) == -1)
- return 0;
-
- if (hash == rec->full_hash && key.dsize == rec->key_len) {
- char *k;
- /* a very likely hit - read the key */
- k = tdb_alloc_read(tdb, rec_ptr + sizeof(*rec),
- rec->key_len);
-
- if (!k)
- return 0;
-
- if (memcmp(key.dptr, k, key.dsize) == 0) {
- free(k);
- return rec_ptr;
- }
- free(k);
- }
-
- /* move to the next record */
- rec_ptr = rec->next;
- }
- return 0;
-}
-
-/*
- return an error string for the last tdb error
-*/
-char *tdb_error(TDB_CONTEXT *tdb)
-{
- int i;
- static struct {
- enum TDB_ERROR ecode;
- char *estring;
- } emap[] = {
- {TDB_SUCCESS, "Success"},
- {TDB_ERR_CORRUPT, "Corrupt database"},
- {TDB_ERR_IO, "IO Error"},
- {TDB_ERR_LOCK, "Locking error"},
- {TDB_ERR_OOM, "Out of memory"},
- {TDB_ERR_EXISTS, "Record exists"},
- {-1, NULL}};
- if (tdb != NULL) {
- for (i=0;emap[i].estring;i++) {
- if (tdb->ecode == emap[i].ecode) return emap[i].estring;
- }
- } else {
- return "Invalid tdb context";
- }
- return "Invalid error code";
-}
-
-
-/* update an entry in place - this only works if the new data size
- is <= the old data size and the key exists.
- on failure return -1
-*/
-int tdb_update(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf)
-{
- unsigned hash;
- struct list_struct rec;
- tdb_off rec_ptr;
- int ret = -1;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_update() called with null context\n");
-#endif
- return -1;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
-
- tdb_lock(tdb, BUCKET(hash));
- rec_ptr = tdb_find(tdb, key, hash, &rec);
-
- if (!rec_ptr)
- goto out;
-
- /* must be long enough */
- if (rec.rec_len < key.dsize + dbuf.dsize)
- goto out;
-
- if (tdb_write(tdb, rec_ptr + sizeof(rec) + rec.key_len,
- dbuf.dptr, dbuf.dsize) == -1)
- goto out;
-
- if (dbuf.dsize != rec.data_len) {
- /* update size */
- rec.data_len = dbuf.dsize;
- ret = rec_write(tdb, rec_ptr, &rec);
- } else
- ret = 0;
-
- out:
- tdb_unlock(tdb, BUCKET(hash));
- return ret;
-}
-
-/* find an entry in the database given a key */
-TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- unsigned hash;
- tdb_off rec_ptr;
- struct list_struct rec;
- TDB_DATA ret = null_data;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_fetch() called with null context\n");
-#endif
- return null_data;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
-
- tdb_lock(tdb, BUCKET(hash));
- rec_ptr = tdb_find(tdb, key, hash, &rec);
-
- if (rec_ptr) {
- ret.dptr = tdb_alloc_read(tdb,
- rec_ptr + sizeof(rec) + rec.key_len,
- rec.data_len);
- ret.dsize = rec.data_len;
- }
-
- tdb_unlock(tdb, BUCKET(hash));
- return ret;
-}
-
-/* check if an entry in the database exists
-
- note that 1 is returned if the key is found and 0 is returned if not found
- this doesn't match the conventions in the rest of this module, but is
- compatible with gdbm
-*/
-int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- unsigned hash;
- tdb_off rec_ptr;
- struct list_struct rec;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_exists() called with null context\n");
-#endif
- return 0;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
-
- tdb_lock(tdb, BUCKET(hash));
- rec_ptr = tdb_find(tdb, key, hash, &rec);
- tdb_unlock(tdb, BUCKET(hash));
-
- return rec_ptr != 0;
-}
-
-/* traverse the entire database - calling fn(tdb, key, data) on each element.
- return -1 on error or the record count traversed
- if fn is NULL then it is not called
- a non-zero return value from fn() indicates that the traversal should stop
- */
-int tdb_traverse(TDB_CONTEXT *tdb, int (*fn)(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void* state), void* state)
-{
- int count = 0;
- unsigned h;
- tdb_off offset, rec_ptr;
- struct list_struct rec;
- char *data;
- TDB_DATA key, dbuf;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_traverse() called with null context\n");
-#endif
- return -1;
- }
-
- /* loop over all hash chains */
- for (h = 0; h < tdb->header.hash_size; h++) {
- tdb_lock(tdb, BUCKET(h));
-
- /* read in the hash top */
- offset = tdb_hash_top(tdb, h);
- if (ofs_read(tdb, offset, &rec_ptr) == -1) {
- goto fail;
- }
-
- /* traverse all records for this hash */
- while (rec_ptr) {
- if (rec_read(tdb, rec_ptr, &rec) == -1) {
- goto fail;
- }
-
- /* now read the full record */
- data = tdb_alloc_read(tdb, rec_ptr + sizeof(rec),
- rec.key_len + rec.data_len);
- if (!data) {
- goto fail;
- }
-
- key.dptr = data;
- key.dsize = rec.key_len;
- dbuf.dptr = data + rec.key_len;
- dbuf.dsize = rec.data_len;
- count++;
-
- if (fn && fn(tdb, key, dbuf, state) != 0) {
- /* they want us to stop traversing */
- free(data);
- tdb_unlock(tdb, BUCKET(h));
- return count;
- }
-
- /* a miss - drat */
- free(data);
-
- /* move to the next record */
- rec_ptr = rec.next;
- }
- tdb_unlock(tdb, BUCKET(h));
- }
-
- /* return the number traversed */
- return count;
-
- fail:
- tdb_unlock(tdb, BUCKET(h));
- return -1;
-}
-
-
-/* find the first entry in the database and return its key */
-TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb)
-{
- tdb_off offset, rec_ptr;
- struct list_struct rec;
- unsigned hash;
- TDB_DATA ret;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_firstkey() called with null context\n");
-#endif
- return null_data;
- }
-
- /* look for a non-empty hash chain */
- for (hash = 0, rec_ptr = 0;
- hash < tdb->header.hash_size;
- hash++) {
- /* find the top of the hash chain */
- offset = tdb_hash_top(tdb, hash);
-
- tdb_lock(tdb, BUCKET(hash));
-
- /* read in the hash top */
- if (ofs_read(tdb, offset, &rec_ptr) == -1) {
- goto fail;
- }
-
- if (rec_ptr) break;
-
- tdb_unlock(tdb, BUCKET(hash));
- }
-
- if (rec_ptr == 0) return null_data;
-
- /* we've found a non-empty chain, now read the record */
- if (rec_read(tdb, rec_ptr, &rec) == -1) {
- goto fail;
- }
-
- /* allocate and read the key space */
- ret.dptr = tdb_alloc_read(tdb, rec_ptr + sizeof(rec), rec.key_len);
- ret.dsize = rec.key_len;
- tdb_unlock(tdb, BUCKET(hash));
- return ret;
-
- fail:
- tdb_unlock(tdb, BUCKET(hash));
- return null_data;
-}
-
-/* find the next entry in the database, returning its key */
-TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- unsigned hash, hbucket;
- tdb_off rec_ptr, offset;
- struct list_struct rec;
- TDB_DATA ret;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_nextkey() called with null context\n");
-#endif
- return null_data;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
- hbucket = BUCKET(hash);
-
- tdb_lock(tdb, hbucket);
- rec_ptr = tdb_find(tdb, key, hash, &rec);
- if (rec_ptr) {
- /* we want the next record after this one */
- rec_ptr = rec.next;
- }
-
- /* not found or last in hash: look for next non-empty hash chain */
- while (rec_ptr == 0) {
- tdb_unlock(tdb, hbucket);
-
- if (++hbucket >= tdb->header.hash_size - 1)
- return null_data;
-
- offset = tdb_hash_top(tdb, hbucket);
- tdb_lock(tdb, hbucket);
- /* read in the hash top */
- if (ofs_read(tdb, offset, &rec_ptr) == -1) {
- tdb_unlock(tdb, hbucket);
- return null_data;
- }
- }
-
- /* Read the record. */
- if (rec_read(tdb, rec_ptr, &rec) == -1) {
- tdb_unlock(tdb, hbucket);
- return null_data;
- }
- /* allocate and read the key */
- ret.dptr = tdb_alloc_read(tdb, rec_ptr + sizeof(rec), rec.key_len);
- ret.dsize = rec.key_len;
- tdb_unlock(tdb, hbucket);
-
- return ret;
-}
-
-/* delete an entry in the database given a key */
-int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- unsigned hash;
- tdb_off offset, rec_ptr, last_ptr;
- struct list_struct rec, lastrec;
- char *data = NULL;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_delete() called with null context\n");
-#endif
- return -1;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
-
- tdb_lock(tdb, BUCKET(hash));
-
- /* find the top of the hash chain */
- offset = tdb_hash_top(tdb, hash);
-
- /* read in the hash top */
- if (ofs_read(tdb, offset, &rec_ptr) == -1) {
- goto fail;
- }
-
- last_ptr = 0;
-
- /* keep looking until we find the right record */
- while (rec_ptr) {
- if (rec_read(tdb, rec_ptr, &rec) == -1) {
- goto fail;
- }
-
- if (hash == rec.full_hash && key.dsize == rec.key_len) {
- /* a very likely hit - read the record and full key */
- data = tdb_alloc_read(tdb, rec_ptr + sizeof(rec),
- rec.key_len);
- if (!data) {
- goto fail;
- }
-
- if (memcmp(key.dptr, data, key.dsize) == 0) {
- /* a definite match - delete it */
- if (last_ptr == 0) {
- offset = tdb_hash_top(tdb, hash);
- if (ofs_write(tdb, offset, &rec.next) == -1) {
- goto fail;
- }
- } else {
- lastrec.next = rec.next;
- if (rec_write(tdb, last_ptr, &lastrec) == -1) {
- goto fail;
- }
- }
- tdb_unlock(tdb, BUCKET(hash));
- tdb_lock(tdb, -1);
- /* and recover the space */
- offset = FREELIST_TOP;
- if (ofs_read(tdb, offset, &rec.next) == -1) {
- goto fail2;
- }
- rec.magic = TDB_FREE_MAGIC;
- if (rec_write(tdb, rec_ptr, &rec) == -1) {
- goto fail2;
- }
- if (ofs_write(tdb, offset, &rec_ptr) == -1) {
- goto fail2;
- }
-
- /* yipee - all done */
- free(data);
- tdb_unlock(tdb, -1);
- return 0;
- }
-
- /* a miss - drat */
- free(data);
- data = NULL;
- }
-
- /* move to the next record */
- last_ptr = rec_ptr;
- lastrec = rec;
- rec_ptr = rec.next;
- }
-
- fail:
- if (data) free(data);
- tdb_unlock(tdb, BUCKET(hash));
- return -1;
-
- fail2:
- if (data) free(data);
- tdb_unlock(tdb, -1);
- return -1;
-}
-
-
-/* store an element in the database, replacing any existing element
- with the same key
-
- return 0 on success, -1 on failure
-*/
-int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
-{
- struct list_struct rec;
- unsigned hash;
- tdb_off rec_ptr, offset;
- char *p = NULL;
-
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_store() called with null context\n");
-#endif
- return -1;
- }
-
- /* find which hash bucket it is in */
- hash = tdb_hash(&key);
-
- /* check for it existing */
- if (flag == TDB_INSERT && tdb_exists(tdb, key)) {
- tdb->ecode = TDB_ERR_EXISTS;
- return -1;
- }
-
- /* first try in-place update */
- if (flag != TDB_INSERT && tdb_update(tdb, key, dbuf) == 0) {
- return 0;
- }
-
- rec_ptr = tdb_allocate(tdb, key.dsize + dbuf.dsize);
- if (rec_ptr == 0) {
- return -1;
- }
-
- tdb_lock(tdb, BUCKET(hash));
-
- /* delete any existing record - if it doesn't exist we don't care */
- if (flag != TDB_INSERT) {
- tdb_delete(tdb, key);
- }
-
- /* read the newly created record */
- if (tdb_read(tdb, rec_ptr, (char *)&rec, sizeof(rec)) == -1) {
- goto fail;
- }
-
- if (rec.magic != TDB_FREE_MAGIC) goto fail;
-
- /* find the top of the hash chain */
- offset = tdb_hash_top(tdb, hash);
-
- /* read in the hash top diretcly into our next pointer */
- if (ofs_read(tdb, offset, &rec.next) == -1) {
- goto fail;
- }
-
- rec.key_len = key.dsize;
- rec.data_len = dbuf.dsize;
- rec.full_hash = hash;
- rec.magic = TDB_MAGIC;
-
- p = (char *)malloc(sizeof(rec) + key.dsize + dbuf.dsize);
- if (!p) {
- tdb->ecode = TDB_ERR_OOM;
- goto fail;
- }
-
- memcpy(p, &rec, sizeof(rec));
- memcpy(p+sizeof(rec), key.dptr, key.dsize);
- memcpy(p+sizeof(rec)+key.dsize, dbuf.dptr, dbuf.dsize);
-
- if (tdb_write(tdb, rec_ptr, p, sizeof(rec)+key.dsize+dbuf.dsize) == -1)
- goto fail;
-
- free(p);
- p = NULL;
-
- /* and point the top of the hash chain at it */
- if (ofs_write(tdb, offset, &rec_ptr) == -1) goto fail;
-
- tdb_unlock(tdb, BUCKET(hash));
- return 0;
-
- fail:
-#if TDB_DEBUG
- printf("store failed for hash 0x%08x in bucket %u\n", hash, BUCKET(hash));
-#endif
- if (p) free(p);
- tdb_unlock(tdb, BUCKET(hash));
- return -1;
-}
-
-
-/* open the database, creating it if necessary
-
- The open_flags and mode are passed straight to the open call on the database
- file. A flags value of O_WRONLY is invalid
-
- The hash size is advisory, use zero for a default value.
-
- return is NULL on error
-*/
-TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags,
- int open_flags, mode_t mode)
-{
- TDB_CONTEXT tdb, *ret;
- struct stat st;
-
- memset(&tdb, 0, sizeof(tdb));
-
- tdb.fd = -1;
- tdb.name = NULL;
- tdb.map_ptr = NULL;
-
- if ((open_flags & O_ACCMODE) == O_WRONLY) {
- goto fail;
- }
-
- if (hash_size == 0) hash_size = DEFAULT_HASH_SIZE;
-
- tdb.read_only = ((open_flags & O_ACCMODE) == O_RDONLY);
-
- if (name != NULL) {
- tdb.fd = open(name, open_flags, mode);
- if (tdb.fd == -1) {
- goto fail;
- }
- }
-
- /* ensure there is only one process initialising at once */
- tdb_brlock(&tdb, GLOBAL_LOCK, LOCK_SET, F_WRLCK, F_SETLKW);
-
- if (tdb_flags & TDB_CLEAR_IF_FIRST) {
- /* we need to zero the database if we are the only
- one with it open */
- if (tdb_brlock(&tdb, ACTIVE_LOCK, LOCK_SET, F_WRLCK, F_SETLK) == 0) {
- ftruncate(tdb.fd, 0);
- tdb_brlock(&tdb, ACTIVE_LOCK, LOCK_CLEAR, F_WRLCK, F_SETLK);
- }
- }
-
- /* leave this lock in place */
- tdb_brlock(&tdb, ACTIVE_LOCK, LOCK_SET, F_RDLCK, F_SETLKW);
-
- if (read(tdb.fd, &tdb.header, sizeof(tdb.header)) != sizeof(tdb.header) ||
- strcmp(tdb.header.magic_food, TDB_MAGIC_FOOD) != 0 ||
- tdb.header.version != TDB_VERSION) {
- /* its not a valid database - possibly initialise it */
- if (!(open_flags & O_CREAT)) {
- goto fail;
- }
- if (tdb_new_database(&tdb, hash_size) == -1) goto fail;
-
- lseek(tdb.fd, 0, SEEK_SET);
- if (tdb.fd != -1 && read(tdb.fd, &tdb.header,
- sizeof(tdb.header)) !=
- sizeof(tdb.header))
- goto fail;
- }
-
- if (tdb.fd != -1) {
- fstat(tdb.fd, &st);
-
- /* map the database and fill in the return structure */
- tdb.name = (char *)strdup(name);
- tdb.map_size = st.st_size;
- }
-
- tdb.locked = (int *)calloc(tdb.header.hash_size+1,
- sizeof(tdb.locked[0]));
- if (!tdb.locked) {
- goto fail;
- }
-
-#if HAVE_MMAP
- if (tdb.fd != -1) {
- tdb.map_ptr = (void *)mmap(NULL, st.st_size,
- tdb.read_only? PROT_READ : PROT_READ|PROT_WRITE,
- MAP_SHARED | MAP_FILE, tdb.fd, 0);
- }
-#endif
-
- ret = (TDB_CONTEXT *)malloc(sizeof(tdb));
- if (!ret) goto fail;
-
- *ret = tdb;
-
-#if TDB_DEBUG
- printf("mapped database of hash_size %u map_size=%u\n",
- hash_size, tdb.map_size);
-#endif
-
- tdb_brlock(&tdb, GLOBAL_LOCK, LOCK_CLEAR, F_WRLCK, F_SETLKW);
- return ret;
-
- fail:
- if (tdb.name) free(tdb.name);
- if (tdb.fd != -1) close(tdb.fd);
- if (tdb.map_ptr) munmap(tdb.map_ptr, tdb.map_size);
-
- return NULL;
-}
-
-/* close a database */
-int tdb_close(TDB_CONTEXT *tdb)
-{
- if (!tdb) return -1;
-
- if (tdb->name) free(tdb->name);
- if (tdb->fd != -1) close(tdb->fd);
- if (tdb->locked) free(tdb->locked);
-
- if (tdb->map_ptr) {
- if (tdb->fd != -1) {
- munmap(tdb->map_ptr, tdb->map_size);
- } else {
- free(tdb->map_ptr);
- }
- }
-
- memset(tdb, 0, sizeof(*tdb));
- free(tdb);
-
- return 0;
-}
-
-/* lock the database. If we already have it locked then don't do anything */
-int tdb_writelock(TDB_CONTEXT *tdb)
-{
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_writelock() called with null context\n");
-#endif
- return -1;
- }
-
- return tdb_lock(tdb, -1);
-}
-
-/* unlock the database. */
-int tdb_writeunlock(TDB_CONTEXT *tdb)
-{
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_writeunlock() called with null context\n");
-#endif
- return -1;
- }
-
- return tdb_unlock(tdb, -1);
-}
-
-/* lock one hash chain. This is meant to be used to reduce locking
- contention - it cannot guarantee how many records will be locked */
-int tdb_lockchain(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_lockchain() called with null context\n");
-#endif
- return -1;
- }
-
- return tdb_lock(tdb, BUCKET(tdb_hash(&key)));
-}
-
-
-/* unlock one hash chain */
-int tdb_unlockchain(TDB_CONTEXT *tdb, TDB_DATA key)
-{
- if (tdb == NULL) {
-#ifdef TDB_DEBUG
- printf("tdb_unlockchain() called with null context\n");
-#endif
- return -1;
- }
-
- return tdb_unlock(tdb, BUCKET(tdb_hash(&key)));
-}
diff --git a/mdk-stage1/ppp/pppd/tdb.h b/mdk-stage1/ppp/pppd/tdb.h
deleted file mode 100644
index 56ae0ac2a..000000000
--- a/mdk-stage1/ppp/pppd/tdb.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#define STANDALONE 1
-/*
- * Database functions
- * Copyright (C) Andrew Tridgell 1999
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms AND provided that this software or
- * any derived work is only used as part of the PPP daemon (pppd)
- * and related utilities.
- * The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Note: this software is also available under the Gnu Public License
- * version 2 or later.
- */
-
-typedef unsigned tdb_len;
-typedef unsigned tdb_off;
-
-#define TDB_MAGIC_FOOD "TDB file\n"
-
-/* this is stored at the front of every database */
-struct tdb_header {
- char magic_food[32]; /* for /etc/magic */
- unsigned version; /* version of the code */
- unsigned hash_size; /* number of hash entries */
-};
-
-typedef struct {
- char *dptr;
- size_t dsize;
-} TDB_DATA;
-
-/* this is the context structure that is returned from a db open */
-typedef struct {
- char *name; /* the name of the database */
- void *map_ptr; /* where it is currently mapped */
- int fd; /* open file descriptor for the database */
- tdb_len map_size; /* how much space has been mapped */
- int read_only; /* opened read-only */
- int *locked; /* set if we have a chain locked */
- int ecode; /* error code for last tdb error */
- struct tdb_header header; /* a cached copy of the header */
-} TDB_CONTEXT;
-
-/* flags to tdb_store() */
-#define TDB_REPLACE 1
-#define TDB_INSERT 2
-
-/* flags for tdb_open() */
-#define TDB_CLEAR_IF_FIRST 1
-
-/* error codes */
-enum TDB_ERROR {TDB_SUCCESS=0, TDB_ERR_CORRUPT, TDB_ERR_IO, TDB_ERR_LOCK,
- TDB_ERR_OOM, TDB_ERR_EXISTS};
-
-#if STANDALONE
-TDB_CONTEXT *tdb_open(char *name, int hash_size, int tdb_flags,
- int open_flags, mode_t mode);
-char *tdb_error(TDB_CONTEXT *tdb);
-int tdb_writelock(TDB_CONTEXT *tdb);
-int tdb_writeunlock(TDB_CONTEXT *tdb);
-TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
-int tdb_close(TDB_CONTEXT *tdb);
-TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
-TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_traverse(TDB_CONTEXT *tdb,
- int (*fn)(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, void *state),
- void *state);
-int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
-#endif
diff --git a/mdk-stage1/ppp/pppd/tty.c b/mdk-stage1/ppp/pppd/tty.c
deleted file mode 100644
index 4db707968..000000000
--- a/mdk-stage1/ppp/pppd/tty.c
+++ /dev/null
@@ -1,1164 +0,0 @@
-/*
- * tty.c - code for handling serial ports in pppd.
- *
- * Copyright (C) 2000 Paul Mackerras.
- * All rights reserved.
- *
- * Portions Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <syslog.h>
-#include <netdb.h>
-#include <utmp.h>
-#include <pwd.h>
-#include <setjmp.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-
-#include "pppd.h"
-#include "fsm.h"
-#include "lcp.h"
-
-void tty_process_extra_options __P((void));
-void tty_check_options __P((void));
-int connect_tty __P((void));
-void disconnect_tty __P((void));
-void tty_close_fds __P((void));
-void cleanup_tty __P((void));
-void tty_do_send_config __P((int, u_int32_t, int, int));
-
-static int setdevname __P((char *, char **, int));
-static int setspeed __P((char *, char **, int));
-static int setxonxoff __P((char **));
-static int setescape __P((char **));
-static void printescape __P((option_t *, void (*)(void *, char *,...),void *));
-static void finish_tty __P((void));
-static int start_charshunt __P((int, int));
-static void stop_charshunt __P((void *, int));
-static void charshunt_done __P((void *));
-static void charshunt __P((int, int, char *));
-static int record_write __P((FILE *, int code, u_char *buf, int nb,
- struct timeval *));
-static int open_socket __P((char *));
-static void maybe_relock __P((void *, int));
-
-static int pty_master; /* fd for master side of pty */
-static int pty_slave; /* fd for slave side of pty */
-static int real_ttyfd; /* fd for actual serial port (not pty) */
-static int ttyfd; /* Serial port file descriptor */
-static char speed_str[16]; /* Serial port speed as string */
-
-mode_t tty_mode = (mode_t)-1; /* Original access permissions to tty */
-int baud_rate; /* Actual bits/second for serial device */
-char *callback_script; /* script for doing callback */
-int charshunt_pid; /* Process ID for charshunt */
-int locked; /* lock() has succeeded */
-struct stat devstat; /* result of stat() on devnam */
-
-/* option variables */
-int crtscts = 0; /* Use hardware flow control */
-bool modem = 1; /* Use modem control lines */
-int inspeed = 0; /* Input/Output speed requested */
-bool lockflag = 0; /* Create lock file to lock the serial dev */
-char *initializer = NULL; /* Script to initialize physical link */
-char *connect_script = NULL; /* Script to establish physical link */
-char *disconnect_script = NULL; /* Script to disestablish physical link */
-char *welcomer = NULL; /* Script to run after phys link estab. */
-char *ptycommand = NULL; /* Command to run on other side of pty */
-bool notty = 0; /* Stdin/out is not a tty */
-char *record_file = NULL; /* File to record chars sent/received */
-int max_data_rate; /* max bytes/sec through charshunt */
-bool sync_serial = 0; /* Device is synchronous serial device */
-char *pty_socket = NULL; /* Socket to connect to pty */
-int using_pty = 0; /* we're allocating a pty as the device */
-
-extern uid_t uid;
-extern int kill_link;
-
-/* XXX */
-extern int privopen; /* don't lock, open device as root */
-
-u_int32_t xmit_accm[8]; /* extended transmit ACCM */
-
-/* option descriptors */
-option_t tty_options[] = {
- /* device name must be first, or change connect_tty() below! */
- { "device name", o_wild, (void *) &setdevname,
- "Serial port device name",
- OPT_DEVNAM | OPT_PRIVFIX | OPT_NOARG | OPT_A2STRVAL | OPT_STATIC,
- devnam},
-
- { "tty speed", o_wild, (void *) &setspeed,
- "Baud rate for serial port",
- OPT_PRIO | OPT_NOARG | OPT_A2STRVAL | OPT_STATIC, speed_str },
-
- { "lock", o_bool, &lockflag,
- "Lock serial device with UUCP-style lock file", OPT_PRIO | 1 },
- { "nolock", o_bool, &lockflag,
- "Don't lock serial device", OPT_PRIOSUB | OPT_PRIV },
-
- { "init", o_string, &initializer,
- "A program to initialize the device", OPT_PRIO | OPT_PRIVFIX },
-
- { "connect", o_string, &connect_script,
- "A program to set up a connection", OPT_PRIO | OPT_PRIVFIX },
-
- { "disconnect", o_string, &disconnect_script,
- "Program to disconnect serial device", OPT_PRIO | OPT_PRIVFIX },
-
- { "welcome", o_string, &welcomer,
- "Script to welcome client", OPT_PRIO | OPT_PRIVFIX },
-
- { "pty", o_string, &ptycommand,
- "Script to run on pseudo-tty master side",
- OPT_PRIO | OPT_PRIVFIX | OPT_DEVNAM },
-
- { "notty", o_bool, &notty,
- "Input/output is not a tty", OPT_DEVNAM | 1 },
-
- { "socket", o_string, &pty_socket,
- "Send and receive over socket, arg is host:port",
- OPT_PRIO | OPT_DEVNAM },
-
- { "record", o_string, &record_file,
- "Record characters sent/received to file", OPT_PRIO },
-
- { "crtscts", o_int, &crtscts,
- "Set hardware (RTS/CTS) flow control",
- OPT_PRIO | OPT_NOARG | OPT_VAL(1) },
- { "cdtrcts", o_int, &crtscts,
- "Set alternate hardware (DTR/CTS) flow control",
- OPT_PRIOSUB | OPT_NOARG | OPT_VAL(2) },
- { "nocrtscts", o_int, &crtscts,
- "Disable hardware flow control",
- OPT_PRIOSUB | OPT_NOARG | OPT_VAL(-1) },
- { "-crtscts", o_int, &crtscts,
- "Disable hardware flow control",
- OPT_PRIOSUB | OPT_ALIAS | OPT_NOARG | OPT_VAL(-1) },
- { "nocdtrcts", o_int, &crtscts,
- "Disable hardware flow control",
- OPT_PRIOSUB | OPT_ALIAS | OPT_NOARG | OPT_VAL(-1) },
- { "xonxoff", o_special_noarg, (void *)setxonxoff,
- "Set software (XON/XOFF) flow control", OPT_PRIOSUB },
-
- { "modem", o_bool, &modem,
- "Use modem control lines", OPT_PRIO | 1 },
- { "local", o_bool, &modem,
- "Don't use modem control lines", OPT_PRIOSUB | 0 },
-
- { "sync", o_bool, &sync_serial,
- "Use synchronous HDLC serial encoding", 1 },
-
- { "datarate", o_int, &max_data_rate,
- "Maximum data rate in bytes/sec (with pty, notty or record option)",
- OPT_PRIO },
-
- { "escape", o_special, (void *)setescape,
- "List of character codes to escape on transmission",
- OPT_A2PRINTER, (void *)printescape },
-
- { NULL }
-};
-
-
-struct channel tty_channel = {
- tty_options,
- &tty_process_extra_options,
- &tty_check_options,
- &connect_tty,
- &disconnect_tty,
- &tty_establish_ppp,
- &tty_disestablish_ppp,
- &tty_do_send_config,
- &tty_recv_config,
- &cleanup_tty,
- &tty_close_fds
-};
-
-/*
- * setspeed - Set the serial port baud rate.
- * If doit is 0, the call is to check whether this option is
- * potentially a speed value.
- */
-static int
-setspeed(arg, argv, doit)
- char *arg;
- char **argv;
- int doit;
-{
- char *ptr;
- int spd;
-
- spd = strtol(arg, &ptr, 0);
- if (ptr == arg || *ptr != 0 || spd == 0)
- return 0;
- if (doit) {
- inspeed = spd;
- slprintf(speed_str, sizeof(speed_str), "%d", spd);
- }
- return 1;
-}
-
-
-/*
- * setdevname - Set the device name.
- * If doit is 0, the call is to check whether this option is
- * potentially a device name.
- */
-static int
-setdevname(cp, argv, doit)
- char *cp;
- char **argv;
- int doit;
-{
- struct stat statbuf;
- char dev[MAXPATHLEN];
-
- if (*cp == 0)
- return 0;
-
- if (strncmp("/dev/", cp, 5) != 0) {
- strlcpy(dev, "/dev/", sizeof(dev));
- strlcat(dev, cp, sizeof(dev));
- cp = dev;
- }
-
- /*
- * Check if there is a character device by this name.
- */
- if (stat(cp, &statbuf) < 0) {
- if (!doit)
- return errno != ENOENT;
- option_error("Couldn't stat %s: %m", cp);
- return 0;
- }
- if (!S_ISCHR(statbuf.st_mode)) {
- if (doit)
- option_error("%s is not a character device", cp);
- return 0;
- }
-
- if (doit) {
- strlcpy(devnam, cp, sizeof(devnam));
- devstat = statbuf;
- default_device = 0;
- }
-
- return 1;
-}
-
-static int
-setxonxoff(argv)
- char **argv;
-{
- lcp_wantoptions[0].asyncmap |= 0x000A0000; /* escape ^S and ^Q */
- lcp_wantoptions[0].neg_asyncmap = 1;
-
- crtscts = -2;
- return 1;
-}
-
-/*
- * setescape - add chars to the set we escape on transmission.
- */
-static int
-setescape(argv)
- char **argv;
-{
- int n, ret;
- char *p, *endp;
-
- p = *argv;
- ret = 1;
- while (*p) {
- n = strtol(p, &endp, 16);
- if (p == endp) {
- option_error("escape parameter contains invalid hex number '%s'",
- p);
- return 0;
- }
- p = endp;
- if (n < 0 || n == 0x5E || n > 0xFF) {
- option_error("can't escape character 0x%x", n);
- ret = 0;
- } else
- xmit_accm[n >> 5] |= 1 << (n & 0x1F);
- while (*p == ',' || *p == ' ')
- ++p;
- }
- lcp_allowoptions[0].asyncmap = xmit_accm[0];
- return ret;
-}
-
-static void
-printescape(opt, printer, arg)
- option_t *opt;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int n;
- int first = 1;
-
- for (n = 0; n < 256; ++n) {
- if (n == 0x7d)
- n += 2; /* skip 7d, 7e */
- if (xmit_accm[n >> 5] & (1 << (n & 0x1f))) {
- if (!first)
- printer(arg, ",");
- else
- first = 0;
- printer(arg, "%x", n);
- }
- }
- if (first)
- printer(arg, "oops # nothing escaped");
-}
-
-/*
- * tty_init - do various tty-related initializations.
- */
-void tty_init()
-{
- add_notifier(&pidchange, maybe_relock, 0);
- the_channel = &tty_channel;
- xmit_accm[3] = 0x60000000;
-}
-
-/*
- * tty_process_extra_options - work out which tty device we are using
- * and read its options file.
- */
-void tty_process_extra_options()
-{
- using_pty = notty || ptycommand != NULL || pty_socket != NULL;
- if (using_pty)
- return;
- if (default_device) {
- char *p;
- if (!isatty(0) || (p = ttyname(0)) == NULL) {
- option_error("no device specified and stdin is not a tty");
- exit(EXIT_OPTION_ERROR);
- }
- strlcpy(devnam, p, sizeof(devnam));
- if (stat(devnam, &devstat) < 0)
- fatal("Couldn't stat default device %s: %m", devnam);
- }
-
-
- /*
- * Parse the tty options file.
- * The per-tty options file should not change
- * ptycommand, pty_socket, notty or devnam.
- * options_for_tty doesn't override options set on the command line,
- * except for some privileged options.
- */
- if (!options_for_tty())
- exit(EXIT_OPTION_ERROR);
-}
-
-/*
- * tty_check_options - do consistency checks on the options we were given.
- */
-void
-tty_check_options()
-{
- struct stat statbuf;
- int fdflags;
-
- if (demand && connect_script == 0) {
- option_error("connect script is required for demand-dialling\n");
- exit(EXIT_OPTION_ERROR);
- }
- /* default holdoff to 0 if no connect script has been given */
- if (connect_script == 0 && !holdoff_specified)
- holdoff = 0;
-
- if (using_pty) {
- if (!default_device) {
- option_error("%s option precludes specifying device name",
- notty? "notty": "pty");
- exit(EXIT_OPTION_ERROR);
- }
- if (ptycommand != NULL && notty) {
- option_error("pty option is incompatible with notty option");
- exit(EXIT_OPTION_ERROR);
- }
- if (pty_socket != NULL && (ptycommand != NULL || notty)) {
- option_error("socket option is incompatible with pty and notty");
- exit(EXIT_OPTION_ERROR);
- }
- default_device = notty;
- lockflag = 0;
- modem = 0;
- if (notty && log_to_fd <= 1)
- log_to_fd = -1;
- } else {
- /*
- * If the user has specified a device which is the same as
- * the one on stdin, pretend they didn't specify any.
- * If the device is already open read/write on stdin,
- * we assume we don't need to lock it, and we can open it
- * as root.
- */
- if (fstat(0, &statbuf) >= 0 && S_ISCHR(statbuf.st_mode)
- && statbuf.st_rdev == devstat.st_rdev) {
- default_device = 1;
- fdflags = fcntl(0, F_GETFL);
- if (fdflags != -1 && (fdflags & O_ACCMODE) == O_RDWR)
- privopen = 1;
- }
- }
- if (default_device)
- nodetach = 1;
-
- /*
- * Don't send log messages to the serial port, it tends to
- * confuse the peer. :-)
- */
- if (log_to_fd >= 0 && fstat(log_to_fd, &statbuf) >= 0
- && S_ISCHR(statbuf.st_mode) && statbuf.st_rdev == devstat.st_rdev)
- log_to_fd = -1;
-}
-
-/*
- * connect_tty - get the serial port ready to start doing PPP.
- * That is, open the serial port, set its speed and mode, and run
- * the connector and/or welcomer.
- */
-int connect_tty()
-{
- char *connector;
- int fdflags;
- struct stat statbuf;
- char numbuf[16];
-
- /*
- * Get a pty master/slave pair if the pty, notty, socket,
- * or record options were specified.
- */
- strlcpy(ppp_devnam, devnam, sizeof(ppp_devnam));
- pty_master = -1;
- pty_slave = -1;
- real_ttyfd = -1;
- if (using_pty || record_file != NULL) {
- if (!get_pty(&pty_master, &pty_slave, ppp_devnam, uid)) {
- error("Couldn't allocate pseudo-tty");
- status = EXIT_FATAL_ERROR;
- return -1;
- }
- set_up_tty(pty_slave, 1);
- }
-
- /*
- * Lock the device if we've been asked to.
- */
- status = EXIT_LOCK_FAILED;
- if (lockflag && !privopen) {
- if (lock(devnam) < 0)
- return -1;
- locked = 1;
- }
-
- /*
- * Open the serial device and set it up to be the ppp interface.
- * First we open it in non-blocking mode so we can set the
- * various termios flags appropriately. If we aren't dialling
- * out and we want to use the modem lines, we reopen it later
- * in order to wait for the carrier detect signal from the modem.
- */
- hungup = 0;
- kill_link = 0;
- connector = doing_callback? callback_script: connect_script;
- if (devnam[0] != 0) {
- for (;;) {
- /* If the user specified the device name, become the
- user before opening it. */
- int err, prio;
-
- prio = privopen? OPRIO_ROOT: tty_options[0].priority;
- if (prio < OPRIO_ROOT)
- seteuid(uid);
- ttyfd = open(devnam, O_NONBLOCK | O_RDWR, 0);
- err = errno;
- if (prio < OPRIO_ROOT)
- seteuid(0);
- if (ttyfd >= 0)
- break;
- errno = err;
- if (err != EINTR) {
- error("Failed to open %s: %m", devnam);
- status = EXIT_OPEN_FAILED;
- }
- if (!persist || err != EINTR)
- return -1;
- }
- real_ttyfd = ttyfd;
- if ((fdflags = fcntl(ttyfd, F_GETFL)) == -1
- || fcntl(ttyfd, F_SETFL, fdflags & ~O_NONBLOCK) < 0)
- warn("Couldn't reset non-blocking mode on device: %m");
-
- /*
- * Do the equivalent of `mesg n' to stop broadcast messages.
- */
- if (fstat(ttyfd, &statbuf) < 0
- || fchmod(ttyfd, statbuf.st_mode & ~(S_IWGRP | S_IWOTH)) < 0) {
- warn("Couldn't restrict write permissions to %s: %m", devnam);
- } else
- tty_mode = statbuf.st_mode;
-
- /*
- * Set line speed, flow control, etc.
- * If we have a non-null connection or initializer script,
- * on most systems we set CLOCAL for now so that we can talk
- * to the modem before carrier comes up. But this has the
- * side effect that we might miss it if CD drops before we
- * get to clear CLOCAL below. On systems where we can talk
- * successfully to the modem with CLOCAL clear and CD down,
- * we could clear CLOCAL at this point.
- */
- set_up_tty(ttyfd, ((connector != NULL && connector[0] != 0)
- || initializer != NULL));
- }
-
- /*
- * If the pty, socket, notty and/or record option was specified,
- * start up the character shunt now.
- */
- status = EXIT_PTYCMD_FAILED;
- if (ptycommand != NULL) {
- if (record_file != NULL) {
- int ipipe[2], opipe[2], ok;
-
- if (pipe(ipipe) < 0 || pipe(opipe) < 0)
- fatal("Couldn't create pipes for record option: %m");
- ok = device_script(ptycommand, opipe[0], ipipe[1], 1) == 0
- && start_charshunt(ipipe[0], opipe[1]);
- close(ipipe[0]);
- close(ipipe[1]);
- close(opipe[0]);
- close(opipe[1]);
- if (!ok)
- return -1;
- } else {
- if (device_script(ptycommand, pty_master, pty_master, 1) < 0)
- return -1;
- ttyfd = pty_slave;
- close(pty_master);
- pty_master = -1;
- }
- } else if (pty_socket != NULL) {
- int fd = open_socket(pty_socket);
- if (fd < 0)
- return -1;
- if (!start_charshunt(fd, fd))
- return -1;
- } else if (notty) {
- if (!start_charshunt(0, 1))
- return -1;
- } else if (record_file != NULL) {
- if (!start_charshunt(ttyfd, ttyfd))
- return -1;
- }
-
- /* run connection script */
- if ((connector && connector[0]) || initializer) {
- if (real_ttyfd != -1) {
- /* XXX do this if doing_callback == CALLBACK_DIALIN? */
- if (!default_device && modem) {
- setdtr(real_ttyfd, 0); /* in case modem is off hook */
- sleep(1);
- setdtr(real_ttyfd, 1);
- }
- }
-
- if (initializer && initializer[0]) {
- if (device_script(initializer, ttyfd, ttyfd, 0) < 0) {
- error("Initializer script failed");
- status = EXIT_INIT_FAILED;
- return -1;
- }
- if (kill_link) {
- disconnect_tty();
- return -1;
- }
- info("Serial port initialized.");
- }
-
- if (connector && connector[0]) {
- if (device_script(connector, ttyfd, ttyfd, 0) < 0) {
- error("Connect script failed");
- status = EXIT_CONNECT_FAILED;
- return -1;
- }
- if (kill_link) {
- disconnect_tty();
- return -1;
- }
- info("Serial connection established.");
- }
-
- /* set line speed, flow control, etc.;
- clear CLOCAL if modem option */
- if (real_ttyfd != -1)
- set_up_tty(real_ttyfd, 0);
-
- if (doing_callback == CALLBACK_DIALIN)
- connector = NULL;
- }
-
- /* reopen tty if necessary to wait for carrier */
- if (connector == NULL && modem && devnam[0] != 0) {
- int i;
- for (;;) {
- if ((i = open(devnam, O_RDWR)) >= 0)
- break;
- if (errno != EINTR) {
- error("Failed to reopen %s: %m", devnam);
- status = EXIT_OPEN_FAILED;
- }
- if (!persist || errno != EINTR || hungup || kill_link)
- return -1;
- }
- close(i);
- }
-
- slprintf(numbuf, sizeof(numbuf), "%d", baud_rate);
- script_setenv("SPEED", numbuf, 0);
-
- /* run welcome script, if any */
- if (welcomer && welcomer[0]) {
- if (device_script(welcomer, ttyfd, ttyfd, 0) < 0)
- warn("Welcome script failed");
- }
-
- /*
- * If we are initiating this connection, wait for a short
- * time for something from the peer. This can avoid bouncing
- * our packets off his tty before he has it set up.
- */
- if (connector != NULL || ptycommand != NULL)
- listen_time = connect_delay;
-
- return ttyfd;
-}
-
-
-void disconnect_tty()
-{
- if (disconnect_script == NULL || hungup)
- return;
- if (real_ttyfd >= 0)
- set_up_tty(real_ttyfd, 1);
- if (device_script(disconnect_script, ttyfd, ttyfd, 0) < 0) {
- warn("disconnect script failed");
- } else {
- info("Serial link disconnected.");
- }
-}
-
-void tty_close_fds()
-{
- if (pty_master >= 0)
- close(pty_master);
- if (pty_slave >= 0)
- close(pty_slave);
- if (real_ttyfd >= 0) {
- close(real_ttyfd);
- real_ttyfd = -1;
- }
- /* N.B. ttyfd will == either pty_slave or real_ttyfd */
-}
-
-void cleanup_tty()
-{
- if (real_ttyfd >= 0)
- finish_tty();
- tty_close_fds();
- if (locked) {
- unlock();
- locked = 0;
- }
-}
-
-/*
- * tty_do_send_config - set transmit-side PPP configuration.
- * We set the extended transmit ACCM here as well.
- */
-void
-tty_do_send_config(mtu, accm, pcomp, accomp)
- int mtu;
- u_int32_t accm;
- int pcomp, accomp;
-{
- tty_set_xaccm(xmit_accm);
- tty_send_config(mtu, accm, pcomp, accomp);
-}
-
-/*
- * finish_tty - restore the terminal device to its original settings
- */
-static void
-finish_tty()
-{
- /* drop dtr to hang up */
- if (!default_device && modem) {
- setdtr(real_ttyfd, 0);
- /*
- * This sleep is in case the serial port has CLOCAL set by default,
- * and consequently will reassert DTR when we close the device.
- */
- sleep(1);
- }
-
- restore_tty(real_ttyfd);
-
- if (tty_mode != (mode_t) -1) {
- if (fchmod(real_ttyfd, tty_mode) != 0) {
- /* XXX if devnam is a symlink, this will change the link */
- chmod(devnam, tty_mode);
- }
- }
-
- close(real_ttyfd);
- real_ttyfd = -1;
-}
-
-/*
- * maybe_relock - our PID has changed, maybe update the lock file.
- */
-static void
-maybe_relock(arg, pid)
- void *arg;
- int pid;
-{
- if (locked)
- relock(pid);
-}
-
-/*
- * open_socket - establish a stream socket connection to the nominated
- * host and port.
- */
-static int
-open_socket(dest)
- char *dest;
-{
- char *sep, *endp = NULL;
- int sock, port = -1;
- u_int32_t host;
- struct hostent *hent;
- struct sockaddr_in sad;
-
- /* parse host:port and resolve host to an IP address */
- sep = strchr(dest, ':');
- if (sep != NULL)
- port = strtol(sep+1, &endp, 10);
- if (port < 0 || endp == sep+1 || sep == dest) {
- error("Can't parse host:port for socket destination");
- return -1;
- }
- *sep = 0;
- host = inet_addr(dest);
- if (host == (u_int32_t) -1) {
- hent = gethostbyname(dest);
- if (hent == NULL) {
- error("%s: unknown host in socket option", dest);
- *sep = ':';
- return -1;
- }
- host = *(u_int32_t *)(hent->h_addr_list[0]);
- }
- *sep = ':';
-
- /* get a socket and connect it to the other end */
- sock = socket(PF_INET, SOCK_STREAM, 0);
- if (sock < 0) {
- error("Can't create socket: %m");
- return -1;
- }
- memset(&sad, 0, sizeof(sad));
- sad.sin_family = AF_INET;
- sad.sin_port = htons(port);
- sad.sin_addr.s_addr = host;
- if (connect(sock, (struct sockaddr *)&sad, sizeof(sad)) < 0) {
- error("Can't connect to %s: %m", dest);
- close(sock);
- return -1;
- }
-
- return sock;
-}
-
-
-/*
- * start_charshunt - create a child process to run the character shunt.
- */
-static int
-start_charshunt(ifd, ofd)
- int ifd, ofd;
-{
- int cpid;
-
- cpid = fork();
- if (cpid == -1) {
- error("Can't fork process for character shunt: %m");
- return 0;
- }
- if (cpid == 0) {
- /* child */
- close(pty_slave);
- setuid(uid);
- if (getuid() != uid)
- fatal("setuid failed");
- setgid(getgid());
- if (!nodetach)
- log_to_fd = -1;
- charshunt(ifd, ofd, record_file);
- exit(0);
- }
- charshunt_pid = cpid;
- add_notifier(&sigreceived, stop_charshunt, 0);
- close(pty_master);
- pty_master = -1;
- ttyfd = pty_slave;
- record_child(cpid, "pppd (charshunt)", charshunt_done, NULL);
- return 1;
-}
-
-static void
-charshunt_done(arg)
- void *arg;
-{
- charshunt_pid = 0;
-}
-
-static void
-stop_charshunt(arg, sig)
- void *arg;
- int sig;
-{
- if (charshunt_pid)
- kill(charshunt_pid, (sig == SIGINT? sig: SIGTERM));
-}
-
-/*
- * charshunt - the character shunt, which passes characters between
- * the pty master side and the serial port (or stdin/stdout).
- * This runs as the user (not as root).
- * (We assume ofd >= ifd which is true the way this gets called. :-).
- */
-static void
-charshunt(ifd, ofd, record_file)
- int ifd, ofd;
- char *record_file;
-{
- int n, nfds;
- fd_set ready, writey;
- u_char *ibufp, *obufp;
- int nibuf, nobuf;
- int flags;
- int pty_readable, stdin_readable;
- struct timeval lasttime;
- FILE *recordf = NULL;
- int ilevel, olevel, max_level;
- struct timeval levelt, tout, *top;
- extern u_char inpacket_buf[];
-
- /*
- * Reset signal handlers.
- */
- signal(SIGHUP, SIG_IGN); /* Hangup */
- signal(SIGINT, SIG_DFL); /* Interrupt */
- signal(SIGTERM, SIG_DFL); /* Terminate */
- signal(SIGCHLD, SIG_DFL);
- signal(SIGUSR1, SIG_DFL);
- signal(SIGUSR2, SIG_DFL);
- signal(SIGABRT, SIG_DFL);
- signal(SIGALRM, SIG_DFL);
- signal(SIGFPE, SIG_DFL);
- signal(SIGILL, SIG_DFL);
- signal(SIGPIPE, SIG_DFL);
- signal(SIGQUIT, SIG_DFL);
- signal(SIGSEGV, SIG_DFL);
-#ifdef SIGBUS
- signal(SIGBUS, SIG_DFL);
-#endif
-#ifdef SIGEMT
- signal(SIGEMT, SIG_DFL);
-#endif
-#ifdef SIGPOLL
- signal(SIGPOLL, SIG_DFL);
-#endif
-#ifdef SIGPROF
- signal(SIGPROF, SIG_DFL);
-#endif
-#ifdef SIGSYS
- signal(SIGSYS, SIG_DFL);
-#endif
-#ifdef SIGTRAP
- signal(SIGTRAP, SIG_DFL);
-#endif
-#ifdef SIGVTALRM
- signal(SIGVTALRM, SIG_DFL);
-#endif
-#ifdef SIGXCPU
- signal(SIGXCPU, SIG_DFL);
-#endif
-#ifdef SIGXFSZ
- signal(SIGXFSZ, SIG_DFL);
-#endif
-
- /*
- * Open the record file if required.
- */
- if (record_file != NULL) {
- recordf = fopen(record_file, "a");
- if (recordf == NULL)
- error("Couldn't create record file %s: %m", record_file);
- }
-
- /* set all the fds to non-blocking mode */
- flags = fcntl(pty_master, F_GETFL);
- if (flags == -1
- || fcntl(pty_master, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set pty master to nonblock: %m");
- flags = fcntl(ifd, F_GETFL);
- if (flags == -1
- || fcntl(ifd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set %s to nonblock: %m", (ifd==0? "stdin": "tty"));
- if (ofd != ifd) {
- flags = fcntl(ofd, F_GETFL);
- if (flags == -1
- || fcntl(ofd, F_SETFL, flags | O_NONBLOCK) == -1)
- warn("couldn't set stdout to nonblock: %m");
- }
-
- nibuf = nobuf = 0;
- ibufp = obufp = NULL;
- pty_readable = stdin_readable = 1;
-
- ilevel = olevel = 0;
- gettimeofday(&levelt, NULL);
- if (max_data_rate) {
- max_level = max_data_rate / 10;
- if (max_level < 100)
- max_level = 100;
- } else
- max_level = PPP_MRU + PPP_HDRLEN + 1;
-
- nfds = (ofd > pty_master? ofd: pty_master) + 1;
- if (recordf != NULL) {
- gettimeofday(&lasttime, NULL);
- putc(7, recordf); /* put start marker */
- putc(lasttime.tv_sec >> 24, recordf);
- putc(lasttime.tv_sec >> 16, recordf);
- putc(lasttime.tv_sec >> 8, recordf);
- putc(lasttime.tv_sec, recordf);
- lasttime.tv_usec = 0;
- }
-
- while (nibuf != 0 || nobuf != 0 || pty_readable || stdin_readable) {
- top = 0;
- tout.tv_sec = 0;
- tout.tv_usec = 10000;
- FD_ZERO(&ready);
- FD_ZERO(&writey);
- if (nibuf != 0) {
- if (ilevel >= max_level)
- top = &tout;
- else
- FD_SET(pty_master, &writey);
- } else if (stdin_readable)
- FD_SET(ifd, &ready);
- if (nobuf != 0) {
- if (olevel >= max_level)
- top = &tout;
- else
- FD_SET(ofd, &writey);
- } else if (pty_readable)
- FD_SET(pty_master, &ready);
- if (select(nfds, &ready, &writey, NULL, top) < 0) {
- if (errno != EINTR)
- fatal("select");
- continue;
- }
- if (max_data_rate) {
- double dt;
- int nbt;
- struct timeval now;
-
- gettimeofday(&now, NULL);
- dt = (now.tv_sec - levelt.tv_sec
- + (now.tv_usec - levelt.tv_usec) / 1e6);
- nbt = (int)(dt * max_data_rate);
- ilevel = (nbt < 0 || nbt > ilevel)? 0: ilevel - nbt;
- olevel = (nbt < 0 || nbt > olevel)? 0: olevel - nbt;
- levelt = now;
- } else
- ilevel = olevel = 0;
- if (FD_ISSET(ifd, &ready)) {
- ibufp = inpacket_buf;
- nibuf = read(ifd, ibufp, PPP_MRU + PPP_HDRLEN);
- if (nibuf < 0 && errno == EIO)
- nibuf = 0;
- if (nibuf < 0) {
- if (!(errno == EINTR || errno == EAGAIN)) {
- error("Error reading standard input: %m");
- break;
- }
- nibuf = 0;
- } else if (nibuf == 0) {
- /* end of file from stdin */
- stdin_readable = 0;
- /* do a 0-length write, hopefully this will generate
- an EOF (hangup) on the slave side. */
- write(pty_master, inpacket_buf, 0);
- if (recordf)
- if (!record_write(recordf, 4, NULL, 0, &lasttime))
- recordf = NULL;
- } else {
- FD_SET(pty_master, &writey);
- if (recordf)
- if (!record_write(recordf, 2, ibufp, nibuf, &lasttime))
- recordf = NULL;
- }
- }
- if (FD_ISSET(pty_master, &ready)) {
- obufp = outpacket_buf;
- nobuf = read(pty_master, obufp, PPP_MRU + PPP_HDRLEN);
- if (nobuf < 0 && errno == EIO)
- nobuf = 0;
- if (nobuf < 0) {
- if (!(errno == EINTR || errno == EAGAIN)) {
- error("Error reading pseudo-tty master: %m");
- break;
- }
- nobuf = 0;
- } else if (nobuf == 0) {
- /* end of file from the pty - slave side has closed */
- pty_readable = 0;
- stdin_readable = 0; /* pty is not writable now */
- nibuf = 0;
- close(ofd);
- if (recordf)
- if (!record_write(recordf, 3, NULL, 0, &lasttime))
- recordf = NULL;
- } else {
- FD_SET(ofd, &writey);
- if (recordf)
- if (!record_write(recordf, 1, obufp, nobuf, &lasttime))
- recordf = NULL;
- }
- }
- if (FD_ISSET(ofd, &writey)) {
- n = nobuf;
- if (olevel + n > max_level)
- n = max_level - olevel;
- n = write(ofd, obufp, n);
- if (n < 0) {
- if (errno == EIO) {
- pty_readable = 0;
- nobuf = 0;
- } else if (errno != EAGAIN && errno != EINTR) {
- error("Error writing standard output: %m");
- break;
- }
- } else {
- obufp += n;
- nobuf -= n;
- olevel += n;
- }
- }
- if (FD_ISSET(pty_master, &writey)) {
- n = nibuf;
- if (ilevel + n > max_level)
- n = max_level - ilevel;
- n = write(pty_master, ibufp, n);
- if (n < 0) {
- if (errno == EIO) {
- stdin_readable = 0;
- nibuf = 0;
- } else if (errno != EAGAIN && errno != EINTR) {
- error("Error writing pseudo-tty master: %m");
- break;
- }
- } else {
- ibufp += n;
- nibuf -= n;
- ilevel += n;
- }
- }
- }
- exit(0);
-}
-
-static int
-record_write(f, code, buf, nb, tp)
- FILE *f;
- int code;
- u_char *buf;
- int nb;
- struct timeval *tp;
-{
- struct timeval now;
- int diff;
-
- gettimeofday(&now, NULL);
- now.tv_usec /= 100000; /* actually 1/10 s, not usec now */
- diff = (now.tv_sec - tp->tv_sec) * 10 + (now.tv_usec - tp->tv_usec);
- if (diff > 0) {
- if (diff > 255) {
- putc(5, f);
- putc(diff >> 24, f);
- putc(diff >> 16, f);
- putc(diff >> 8, f);
- putc(diff, f);
- } else {
- putc(6, f);
- putc(diff, f);
- }
- *tp = now;
- }
- putc(code, f);
- if (buf != NULL) {
- putc(nb >> 8, f);
- putc(nb, f);
- fwrite(buf, nb, 1, f);
- }
- fflush(f);
- if (ferror(f)) {
- error("Error writing record file: %m");
- return 0;
- }
- return 1;
-}
diff --git a/mdk-stage1/ppp/pppd/upap.c b/mdk-stage1/ppp/pppd/upap.c
deleted file mode 100644
index bd569fb74..000000000
--- a/mdk-stage1/ppp/pppd/upap.c
+++ /dev/null
@@ -1,640 +0,0 @@
-/*
- * upap.c - User/Password Authentication Protocol.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-/*
- * TODO:
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include "pppd.h"
-#include "upap.h"
-
-static const char rcsid[] = RCSID;
-
-static bool hide_password = 1;
-
-/*
- * Command-line options.
- */
-static option_t pap_option_list[] = {
- { "hide-password", o_bool, &hide_password,
- "Don't output passwords to log", OPT_PRIO | 1 },
- { "show-password", o_bool, &hide_password,
- "Show password string in debug log messages", OPT_PRIOSUB | 0 },
-
- { "pap-restart", o_int, &upap[0].us_timeouttime,
- "Set retransmit timeout for PAP", OPT_PRIO },
- { "pap-max-authreq", o_int, &upap[0].us_maxtransmits,
- "Set max number of transmissions for auth-reqs", OPT_PRIO },
- { "pap-timeout", o_int, &upap[0].us_reqtimeout,
- "Set time limit for peer PAP authentication", OPT_PRIO },
-
- { NULL }
-};
-
-/*
- * Protocol entry points.
- */
-static void upap_init __P((int));
-static void upap_lowerup __P((int));
-static void upap_lowerdown __P((int));
-static void upap_input __P((int, u_char *, int));
-static void upap_protrej __P((int));
-static int upap_printpkt __P((u_char *, int,
- void (*) __P((void *, char *, ...)), void *));
-
-struct protent pap_protent = {
- PPP_PAP,
- upap_init,
- upap_input,
- upap_protrej,
- upap_lowerup,
- upap_lowerdown,
- NULL,
- NULL,
- upap_printpkt,
- NULL,
- 1,
- "PAP",
- NULL,
- pap_option_list,
- NULL,
- NULL,
- NULL
-};
-
-upap_state upap[NUM_PPP]; /* UPAP state; one for each unit */
-
-static void upap_timeout __P((void *));
-static void upap_reqtimeout __P((void *));
-static void upap_rauthreq __P((upap_state *, u_char *, int, int));
-static void upap_rauthack __P((upap_state *, u_char *, int, int));
-static void upap_rauthnak __P((upap_state *, u_char *, int, int));
-static void upap_sauthreq __P((upap_state *));
-static void upap_sresp __P((upap_state *, int, int, char *, int));
-
-
-/*
- * upap_init - Initialize a UPAP unit.
- */
-static void
-upap_init(unit)
- int unit;
-{
- upap_state *u = &upap[unit];
-
- u->us_unit = unit;
- u->us_user = NULL;
- u->us_userlen = 0;
- u->us_passwd = NULL;
- u->us_passwdlen = 0;
- u->us_clientstate = UPAPCS_INITIAL;
- u->us_serverstate = UPAPSS_INITIAL;
- u->us_id = 0;
- u->us_timeouttime = UPAP_DEFTIMEOUT;
- u->us_maxtransmits = 10;
- u->us_reqtimeout = UPAP_DEFREQTIME;
-}
-
-
-/*
- * upap_authwithpeer - Authenticate us with our peer (start client).
- *
- * Set new state and send authenticate's.
- */
-void
-upap_authwithpeer(unit, user, password)
- int unit;
- char *user, *password;
-{
- upap_state *u = &upap[unit];
-
- /* Save the username and password we're given */
- u->us_user = user;
- u->us_userlen = strlen(user);
- u->us_passwd = password;
- u->us_passwdlen = strlen(password);
- u->us_transmits = 0;
-
- /* Lower layer up yet? */
- if (u->us_clientstate == UPAPCS_INITIAL ||
- u->us_clientstate == UPAPCS_PENDING) {
- u->us_clientstate = UPAPCS_PENDING;
- return;
- }
-
- upap_sauthreq(u); /* Start protocol */
-}
-
-
-/*
- * upap_authpeer - Authenticate our peer (start server).
- *
- * Set new state.
- */
-void
-upap_authpeer(unit)
- int unit;
-{
- upap_state *u = &upap[unit];
-
- /* Lower layer up yet? */
- if (u->us_serverstate == UPAPSS_INITIAL ||
- u->us_serverstate == UPAPSS_PENDING) {
- u->us_serverstate = UPAPSS_PENDING;
- return;
- }
-
- u->us_serverstate = UPAPSS_LISTEN;
- if (u->us_reqtimeout > 0)
- TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);
-}
-
-
-/*
- * upap_timeout - Retransmission timer for sending auth-reqs expired.
- */
-static void
-upap_timeout(arg)
- void *arg;
-{
- upap_state *u = (upap_state *) arg;
-
- if (u->us_clientstate != UPAPCS_AUTHREQ)
- return;
-
- if (u->us_transmits >= u->us_maxtransmits) {
- /* give up in disgust */
- error("No response to PAP authenticate-requests");
- u->us_clientstate = UPAPCS_BADAUTH;
- auth_withpeer_fail(u->us_unit, PPP_PAP);
- return;
- }
-
- upap_sauthreq(u); /* Send Authenticate-Request */
-}
-
-
-/*
- * upap_reqtimeout - Give up waiting for the peer to send an auth-req.
- */
-static void
-upap_reqtimeout(arg)
- void *arg;
-{
- upap_state *u = (upap_state *) arg;
-
- if (u->us_serverstate != UPAPSS_LISTEN)
- return; /* huh?? */
-
- auth_peer_fail(u->us_unit, PPP_PAP);
- u->us_serverstate = UPAPSS_BADAUTH;
-}
-
-
-/*
- * upap_lowerup - The lower layer is up.
- *
- * Start authenticating if pending.
- */
-static void
-upap_lowerup(unit)
- int unit;
-{
- upap_state *u = &upap[unit];
-
- if (u->us_clientstate == UPAPCS_INITIAL)
- u->us_clientstate = UPAPCS_CLOSED;
- else if (u->us_clientstate == UPAPCS_PENDING) {
- upap_sauthreq(u); /* send an auth-request */
- }
-
- if (u->us_serverstate == UPAPSS_INITIAL)
- u->us_serverstate = UPAPSS_CLOSED;
- else if (u->us_serverstate == UPAPSS_PENDING) {
- u->us_serverstate = UPAPSS_LISTEN;
- if (u->us_reqtimeout > 0)
- TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout);
- }
-}
-
-
-/*
- * upap_lowerdown - The lower layer is down.
- *
- * Cancel all timeouts.
- */
-static void
-upap_lowerdown(unit)
- int unit;
-{
- upap_state *u = &upap[unit];
-
- if (u->us_clientstate == UPAPCS_AUTHREQ) /* Timeout pending? */
- UNTIMEOUT(upap_timeout, u); /* Cancel timeout */
- if (u->us_serverstate == UPAPSS_LISTEN && u->us_reqtimeout > 0)
- UNTIMEOUT(upap_reqtimeout, u);
-
- u->us_clientstate = UPAPCS_INITIAL;
- u->us_serverstate = UPAPSS_INITIAL;
-}
-
-
-/*
- * upap_protrej - Peer doesn't speak this protocol.
- *
- * This shouldn't happen. In any case, pretend lower layer went down.
- */
-static void
-upap_protrej(unit)
- int unit;
-{
- upap_state *u = &upap[unit];
-
- if (u->us_clientstate == UPAPCS_AUTHREQ) {
- error("PAP authentication failed due to protocol-reject");
- auth_withpeer_fail(unit, PPP_PAP);
- }
- if (u->us_serverstate == UPAPSS_LISTEN) {
- error("PAP authentication of peer failed (protocol-reject)");
- auth_peer_fail(unit, PPP_PAP);
- }
- upap_lowerdown(unit);
-}
-
-
-/*
- * upap_input - Input UPAP packet.
- */
-static void
-upap_input(unit, inpacket, l)
- int unit;
- u_char *inpacket;
- int l;
-{
- upap_state *u = &upap[unit];
- u_char *inp;
- u_char code, id;
- int len;
-
- /*
- * Parse header (code, id and length).
- * If packet too short, drop it.
- */
- inp = inpacket;
- if (l < UPAP_HEADERLEN) {
- UPAPDEBUG(("pap_input: rcvd short header."));
- return;
- }
- GETCHAR(code, inp);
- GETCHAR(id, inp);
- GETSHORT(len, inp);
- if (len < UPAP_HEADERLEN) {
- UPAPDEBUG(("pap_input: rcvd illegal length."));
- return;
- }
- if (len > l) {
- UPAPDEBUG(("pap_input: rcvd short packet."));
- return;
- }
- len -= UPAP_HEADERLEN;
-
- /*
- * Action depends on code.
- */
- switch (code) {
- case UPAP_AUTHREQ:
- upap_rauthreq(u, inp, id, len);
- break;
-
- case UPAP_AUTHACK:
- upap_rauthack(u, inp, id, len);
- break;
-
- case UPAP_AUTHNAK:
- upap_rauthnak(u, inp, id, len);
- break;
-
- default: /* XXX Need code reject */
- break;
- }
-}
-
-
-/*
- * upap_rauth - Receive Authenticate.
- */
-static void
-upap_rauthreq(u, inp, id, len)
- upap_state *u;
- u_char *inp;
- int id;
- int len;
-{
- u_char ruserlen, rpasswdlen;
- char *ruser, *rpasswd;
- int retcode;
- char *msg;
- int msglen;
-
- if (u->us_serverstate < UPAPSS_LISTEN)
- return;
-
- /*
- * If we receive a duplicate authenticate-request, we are
- * supposed to return the same status as for the first request.
- */
- if (u->us_serverstate == UPAPSS_OPEN) {
- upap_sresp(u, UPAP_AUTHACK, id, "", 0); /* return auth-ack */
- return;
- }
- if (u->us_serverstate == UPAPSS_BADAUTH) {
- upap_sresp(u, UPAP_AUTHNAK, id, "", 0); /* return auth-nak */
- return;
- }
-
- /*
- * Parse user/passwd.
- */
- if (len < 1) {
- UPAPDEBUG(("pap_rauth: rcvd short packet."));
- return;
- }
- GETCHAR(ruserlen, inp);
- len -= sizeof (u_char) + ruserlen + sizeof (u_char);
- if (len < 0) {
- UPAPDEBUG(("pap_rauth: rcvd short packet."));
- return;
- }
- ruser = (char *) inp;
- INCPTR(ruserlen, inp);
- GETCHAR(rpasswdlen, inp);
- if (len < rpasswdlen) {
- UPAPDEBUG(("pap_rauth: rcvd short packet."));
- return;
- }
- rpasswd = (char *) inp;
-
- /*
- * Check the username and password given.
- */
- retcode = check_passwd(u->us_unit, ruser, ruserlen, rpasswd,
- rpasswdlen, &msg);
- BZERO(rpasswd, rpasswdlen);
- msglen = strlen(msg);
- if (msglen > 255)
- msglen = 255;
-
- upap_sresp(u, retcode, id, msg, msglen);
-
- if (retcode == UPAP_AUTHACK) {
- u->us_serverstate = UPAPSS_OPEN;
- auth_peer_success(u->us_unit, PPP_PAP, ruser, ruserlen);
- } else {
- u->us_serverstate = UPAPSS_BADAUTH;
- auth_peer_fail(u->us_unit, PPP_PAP);
- }
-
- if (u->us_reqtimeout > 0)
- UNTIMEOUT(upap_reqtimeout, u);
-}
-
-
-/*
- * upap_rauthack - Receive Authenticate-Ack.
- */
-static void
-upap_rauthack(u, inp, id, len)
- upap_state *u;
- u_char *inp;
- int id;
- int len;
-{
- u_char msglen;
- char *msg;
-
- if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */
- return;
-
- /*
- * Parse message.
- */
- if (len < 1) {
- UPAPDEBUG(("pap_rauthack: ignoring missing msg-length."));
- } else {
- GETCHAR(msglen, inp);
- if (msglen > 0) {
- len -= sizeof (u_char);
- if (len < msglen) {
- UPAPDEBUG(("pap_rauthack: rcvd short packet."));
- return;
- }
- msg = (char *) inp;
- PRINTMSG(msg, msglen);
- }
- }
-
- u->us_clientstate = UPAPCS_OPEN;
-
- auth_withpeer_success(u->us_unit, PPP_PAP);
-}
-
-
-/*
- * upap_rauthnak - Receive Authenticate-Nakk.
- */
-static void
-upap_rauthnak(u, inp, id, len)
- upap_state *u;
- u_char *inp;
- int id;
- int len;
-{
- u_char msglen;
- char *msg;
-
- if (u->us_clientstate != UPAPCS_AUTHREQ) /* XXX */
- return;
-
- /*
- * Parse message.
- */
- if (len < 1) {
- UPAPDEBUG(("pap_rauthnak: ignoring missing msg-length."));
- } else {
- GETCHAR(msglen, inp);
- if (msglen > 0) {
- len -= sizeof (u_char);
- if (len < msglen) {
- UPAPDEBUG(("pap_rauthnak: rcvd short packet."));
- return;
- }
- msg = (char *) inp;
- PRINTMSG(msg, msglen);
- }
- }
-
- u->us_clientstate = UPAPCS_BADAUTH;
-
- error("PAP authentication failed");
- auth_withpeer_fail(u->us_unit, PPP_PAP);
-}
-
-
-/*
- * upap_sauthreq - Send an Authenticate-Request.
- */
-static void
-upap_sauthreq(u)
- upap_state *u;
-{
- u_char *outp;
- int outlen;
-
- outlen = UPAP_HEADERLEN + 2 * sizeof (u_char) +
- u->us_userlen + u->us_passwdlen;
- outp = outpacket_buf;
-
- MAKEHEADER(outp, PPP_PAP);
-
- PUTCHAR(UPAP_AUTHREQ, outp);
- PUTCHAR(++u->us_id, outp);
- PUTSHORT(outlen, outp);
- PUTCHAR(u->us_userlen, outp);
- BCOPY(u->us_user, outp, u->us_userlen);
- INCPTR(u->us_userlen, outp);
- PUTCHAR(u->us_passwdlen, outp);
- BCOPY(u->us_passwd, outp, u->us_passwdlen);
-
- output(u->us_unit, outpacket_buf, outlen + PPP_HDRLEN);
-
- TIMEOUT(upap_timeout, u, u->us_timeouttime);
- ++u->us_transmits;
- u->us_clientstate = UPAPCS_AUTHREQ;
-}
-
-
-/*
- * upap_sresp - Send a response (ack or nak).
- */
-static void
-upap_sresp(u, code, id, msg, msglen)
- upap_state *u;
- u_char code, id;
- char *msg;
- int msglen;
-{
- u_char *outp;
- int outlen;
-
- outlen = UPAP_HEADERLEN + sizeof (u_char) + msglen;
- outp = outpacket_buf;
- MAKEHEADER(outp, PPP_PAP);
-
- PUTCHAR(code, outp);
- PUTCHAR(id, outp);
- PUTSHORT(outlen, outp);
- PUTCHAR(msglen, outp);
- BCOPY(msg, outp, msglen);
- output(u->us_unit, outpacket_buf, outlen + PPP_HDRLEN);
-}
-
-/*
- * upap_printpkt - print the contents of a PAP packet.
- */
-static char *upap_codenames[] = {
- "AuthReq", "AuthAck", "AuthNak"
-};
-
-static int
-upap_printpkt(p, plen, printer, arg)
- u_char *p;
- int plen;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int code, id, len;
- int mlen, ulen, wlen;
- char *user, *pwd, *msg;
- u_char *pstart;
-
- if (plen < UPAP_HEADERLEN)
- return 0;
- pstart = p;
- GETCHAR(code, p);
- GETCHAR(id, p);
- GETSHORT(len, p);
- if (len < UPAP_HEADERLEN || len > plen)
- return 0;
-
- if (code >= 1 && code <= sizeof(upap_codenames) / sizeof(char *))
- printer(arg, " %s", upap_codenames[code-1]);
- else
- printer(arg, " code=0x%x", code);
- printer(arg, " id=0x%x", id);
- len -= UPAP_HEADERLEN;
- switch (code) {
- case UPAP_AUTHREQ:
- if (len < 1)
- break;
- ulen = p[0];
- if (len < ulen + 2)
- break;
- wlen = p[ulen + 1];
- if (len < ulen + wlen + 2)
- break;
- user = (char *) (p + 1);
- pwd = (char *) (p + ulen + 2);
- p += ulen + wlen + 2;
- len -= ulen + wlen + 2;
- printer(arg, " user=");
- print_string(user, ulen, printer, arg);
- printer(arg, " password=");
- if (!hide_password)
- print_string(pwd, wlen, printer, arg);
- else
- printer(arg, "<hidden>");
- break;
- case UPAP_AUTHACK:
- case UPAP_AUTHNAK:
- if (len < 1)
- break;
- mlen = p[0];
- if (len < mlen + 1)
- break;
- msg = (char *) (p + 1);
- p += mlen + 1;
- len -= mlen + 1;
- printer(arg, " ");
- print_string(msg, mlen, printer, arg);
- break;
- }
-
- /* print the rest of the bytes in the packet */
- for (; len > 0; --len) {
- GETCHAR(code, p);
- printer(arg, " %.2x", code);
- }
-
- return p - pstart;
-}
diff --git a/mdk-stage1/ppp/pppd/upap.h b/mdk-stage1/ppp/pppd/upap.h
deleted file mode 100644
index 42d6f4f0f..000000000
--- a/mdk-stage1/ppp/pppd/upap.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * upap.h - User/Password Authentication Protocol definitions.
- *
- * Copyright (c) 1989 Carnegie Mellon University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by Carnegie Mellon University. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Id$
- */
-
-/*
- * Packet header = Code, id, length.
- */
-#define UPAP_HEADERLEN 4
-
-
-/*
- * UPAP codes.
- */
-#define UPAP_AUTHREQ 1 /* Authenticate-Request */
-#define UPAP_AUTHACK 2 /* Authenticate-Ack */
-#define UPAP_AUTHNAK 3 /* Authenticate-Nak */
-
-
-/*
- * Each interface is described by upap structure.
- */
-typedef struct upap_state {
- int us_unit; /* Interface unit number */
- char *us_user; /* User */
- int us_userlen; /* User length */
- char *us_passwd; /* Password */
- int us_passwdlen; /* Password length */
- int us_clientstate; /* Client state */
- int us_serverstate; /* Server state */
- u_char us_id; /* Current id */
- int us_timeouttime; /* Timeout (seconds) for auth-req retrans. */
- int us_transmits; /* Number of auth-reqs sent */
- int us_maxtransmits; /* Maximum number of auth-reqs to send */
- int us_reqtimeout; /* Time to wait for auth-req from peer */
-} upap_state;
-
-
-/*
- * Client states.
- */
-#define UPAPCS_INITIAL 0 /* Connection down */
-#define UPAPCS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPCS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPCS_AUTHREQ 3 /* We've sent an Authenticate-Request */
-#define UPAPCS_OPEN 4 /* We've received an Ack */
-#define UPAPCS_BADAUTH 5 /* We've received a Nak */
-
-/*
- * Server states.
- */
-#define UPAPSS_INITIAL 0 /* Connection down */
-#define UPAPSS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPSS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPSS_LISTEN 3 /* Listening for an Authenticate */
-#define UPAPSS_OPEN 4 /* We've sent an Ack */
-#define UPAPSS_BADAUTH 5 /* We've sent a Nak */
-
-
-/*
- * Timeouts.
- */
-#define UPAP_DEFTIMEOUT 3 /* Timeout (seconds) for retransmitting req */
-#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
-
-extern upap_state upap[];
-
-void upap_authwithpeer __P((int, char *, char *));
-void upap_authpeer __P((int));
-
-extern struct protent pap_protent;
diff --git a/mdk-stage1/ppp/pppd/utils.c b/mdk-stage1/ppp/pppd/utils.c
deleted file mode 100644
index 5861d8980..000000000
--- a/mdk-stage1/ppp/pppd/utils.c
+++ /dev/null
@@ -1,949 +0,0 @@
-/*
- * utils.c - various utility functions used in pppd.
- *
- * Copyright (c) 1999 The Australian National University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#define RCSID "$Id$"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <syslog.h>
-#include <netdb.h>
-#include <utmp.h>
-#include <pwd.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#ifdef SVR4
-#include <sys/mkdev.h>
-#endif
-
-#include "pppd.h"
-#include <time.h>
-
-static const char rcsid[] = RCSID;
-
-#if defined(SUNOS4)
-extern char *strerror();
-#endif
-
-static void logit __P((int, char *, va_list));
-static void log_write __P((int, char *));
-static void vslp_printer __P((void *, char *, ...));
-static void format_packet __P((u_char *, int, void (*) (void *, char *, ...),
- void *));
-
-struct buffer_info {
- char *ptr;
- int len;
-};
-
-/*
- * strlcpy - like strcpy/strncpy, doesn't overflow destination buffer,
- * always leaves destination null-terminated (for len > 0).
- */
-size_t
-strlcpy(dest, src, len)
- char *dest;
- const char *src;
- size_t len;
-{
- size_t ret = strlen(src);
-
- if (len != 0) {
- if (ret < len)
- strcpy(dest, src);
- else {
- strncpy(dest, src, len - 1);
- dest[len-1] = 0;
- }
- }
- return ret;
-}
-
-/*
- * strlcat - like strcat/strncat, doesn't overflow destination buffer,
- * always leaves destination null-terminated (for len > 0).
- */
-size_t
-strlcat(dest, src, len)
- char *dest;
- const char *src;
- size_t len;
-{
- size_t dlen = strlen(dest);
-
- return dlen + strlcpy(dest + dlen, src, (len > dlen? len - dlen: 0));
-}
-
-
-/*
- * slprintf - format a message into a buffer. Like sprintf except we
- * also specify the length of the output buffer, and we handle
- * %r (recursive format), %m (error message), %v (visible string),
- * %q (quoted string), %t (current time) and %I (IP address) formats.
- * Doesn't do floating-point formats.
- * Returns the number of chars put into buf.
- */
-int
-slprintf __V((char *buf, int buflen, char *fmt, ...))
-{
- va_list args;
- int n;
-
-#if defined(__STDC__)
- va_start(args, fmt);
-#else
- char *buf;
- int buflen;
- char *fmt;
- va_start(args);
- buf = va_arg(args, char *);
- buflen = va_arg(args, int);
- fmt = va_arg(args, char *);
-#endif
- n = vslprintf(buf, buflen, fmt, args);
- va_end(args);
- return n;
-}
-
-/*
- * vslprintf - like slprintf, takes a va_list instead of a list of args.
- */
-#define OUTCHAR(c) (buflen > 0? (--buflen, *buf++ = (c)): 0)
-
-int
-vslprintf(buf, buflen, fmt, args)
- char *buf;
- int buflen;
- char *fmt;
- va_list args;
-{
- int c, i, n;
- int width, prec, fillch;
- int base, len, neg, quoted;
- unsigned long val = 0;
- char *str, *f, *buf0;
- unsigned char *p;
- char num[32];
- time_t t;
- u_int32_t ip;
- static char hexchars[] = "0123456789abcdef";
- struct buffer_info bufinfo;
-
- buf0 = buf;
- --buflen;
- while (buflen > 0) {
- for (f = fmt; *f != '%' && *f != 0; ++f)
- ;
- if (f > fmt) {
- len = f - fmt;
- if (len > buflen)
- len = buflen;
- memcpy(buf, fmt, len);
- buf += len;
- buflen -= len;
- fmt = f;
- }
- if (*fmt == 0)
- break;
- c = *++fmt;
- width = 0;
- prec = -1;
- fillch = ' ';
- if (c == '0') {
- fillch = '0';
- c = *++fmt;
- }
- if (c == '*') {
- width = va_arg(args, int);
- c = *++fmt;
- } else {
- while (isdigit(c)) {
- width = width * 10 + c - '0';
- c = *++fmt;
- }
- }
- if (c == '.') {
- c = *++fmt;
- if (c == '*') {
- prec = va_arg(args, int);
- c = *++fmt;
- } else {
- prec = 0;
- while (isdigit(c)) {
- prec = prec * 10 + c - '0';
- c = *++fmt;
- }
- }
- }
- str = 0;
- base = 0;
- neg = 0;
- ++fmt;
- switch (c) {
- case 'd':
- i = va_arg(args, int);
- if (i < 0) {
- neg = 1;
- val = -i;
- } else
- val = i;
- base = 10;
- break;
- case 'u':
- val = va_arg(args, unsigned int);
- base = 10;
- break;
- case 'o':
- val = va_arg(args, unsigned int);
- base = 8;
- break;
- case 'x':
- case 'X':
- val = va_arg(args, unsigned int);
- base = 16;
- break;
- case 'p':
- val = (unsigned long) va_arg(args, void *);
- base = 16;
- neg = 2;
- break;
- case 's':
- str = va_arg(args, char *);
- break;
- case 'c':
- num[0] = va_arg(args, int);
- num[1] = 0;
- str = num;
- break;
- case 'm':
- str = strerror(errno);
- break;
- case 'I':
- ip = va_arg(args, u_int32_t);
- ip = ntohl(ip);
- slprintf(num, sizeof(num), "%d.%d.%d.%d", (ip >> 24) & 0xff,
- (ip >> 16) & 0xff, (ip >> 8) & 0xff, ip & 0xff);
- str = num;
- break;
- case 'r':
- f = va_arg(args, char *);
-#if !defined(__powerpc__) && !defined(__x86_64__)
- n = vslprintf(buf, buflen + 1, f, va_arg(args, va_list));
-#else
- /* On the powerpc, a va_list is an array of 1 structure */
- n = vslprintf(buf, buflen + 1, f, va_arg(args, void *));
-#endif
- buf += n;
- buflen -= n;
- continue;
- case 't':
- time(&t);
- str = ctime(&t);
- str += 4; /* chop off the day name */
- str[15] = 0; /* chop off year and newline */
- break;
- case 'v': /* "visible" string */
- case 'q': /* quoted string */
- quoted = c == 'q';
- p = va_arg(args, unsigned char *);
- if (fillch == '0' && prec >= 0) {
- n = prec;
- } else {
- n = strlen((char *)p);
- if (prec >= 0 && n > prec)
- n = prec;
- }
- while (n > 0 && buflen > 0) {
- c = *p++;
- --n;
- if (!quoted && c >= 0x80) {
- OUTCHAR('M');
- OUTCHAR('-');
- c -= 0x80;
- }
- if (quoted && (c == '"' || c == '\\'))
- OUTCHAR('\\');
- if (c < 0x20 || (0x7f <= c && c < 0xa0)) {
- if (quoted) {
- OUTCHAR('\\');
- switch (c) {
- case '\t': OUTCHAR('t'); break;
- case '\n': OUTCHAR('n'); break;
- case '\b': OUTCHAR('b'); break;
- case '\f': OUTCHAR('f'); break;
- default:
- OUTCHAR('x');
- OUTCHAR(hexchars[c >> 4]);
- OUTCHAR(hexchars[c & 0xf]);
- }
- } else {
- if (c == '\t')
- OUTCHAR(c);
- else {
- OUTCHAR('^');
- OUTCHAR(c ^ 0x40);
- }
- }
- } else
- OUTCHAR(c);
- }
- continue;
- case 'P': /* print PPP packet */
- bufinfo.ptr = buf;
- bufinfo.len = buflen + 1;
- p = va_arg(args, unsigned char *);
- n = va_arg(args, int);
- format_packet(p, n, vslp_printer, &bufinfo);
- buf = bufinfo.ptr;
- buflen = bufinfo.len - 1;
- continue;
- case 'B':
- p = va_arg(args, unsigned char *);
- for (n = prec; n > 0; --n) {
- c = *p++;
- if (fillch == ' ')
- OUTCHAR(' ');
- OUTCHAR(hexchars[(c >> 4) & 0xf]);
- OUTCHAR(hexchars[c & 0xf]);
- }
- continue;
- default:
- *buf++ = '%';
- if (c != '%')
- --fmt; /* so %z outputs %z etc. */
- --buflen;
- continue;
- }
- if (base != 0) {
- str = num + sizeof(num);
- *--str = 0;
- while (str > num + neg) {
- *--str = hexchars[val % base];
- val = val / base;
- if (--prec <= 0 && val == 0)
- break;
- }
- switch (neg) {
- case 1:
- *--str = '-';
- break;
- case 2:
- *--str = 'x';
- *--str = '0';
- break;
- }
- len = num + sizeof(num) - 1 - str;
- } else {
- len = strlen(str);
- if (prec >= 0 && len > prec)
- len = prec;
- }
- if (width > 0) {
- if (width > buflen)
- width = buflen;
- if ((n = width - len) > 0) {
- buflen -= n;
- for (; n > 0; --n)
- *buf++ = fillch;
- }
- }
- if (len > buflen)
- len = buflen;
- memcpy(buf, str, len);
- buf += len;
- buflen -= len;
- }
- *buf = 0;
- return buf - buf0;
-}
-
-/*
- * vslp_printer - used in processing a %P format
- */
-static void
-vslp_printer __V((void *arg, char *fmt, ...))
-{
- int n;
- va_list pvar;
- struct buffer_info *bi;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- void *arg;
- char *fmt;
- va_start(pvar);
- arg = va_arg(pvar, void *);
- fmt = va_arg(pvar, char *);
-#endif
-
- bi = (struct buffer_info *) arg;
- n = vslprintf(bi->ptr, bi->len, fmt, pvar);
- va_end(pvar);
-
- bi->ptr += n;
- bi->len -= n;
-}
-
-#ifdef unused
-/*
- * log_packet - format a packet and log it.
- */
-
-void
-log_packet(p, len, prefix, level)
- u_char *p;
- int len;
- char *prefix;
- int level;
-{
- init_pr_log(prefix, level);
- format_packet(p, len, pr_log, &level);
- end_pr_log();
-}
-#endif /* unused */
-
-/*
- * format_packet - make a readable representation of a packet,
- * calling `printer(arg, format, ...)' to output it.
- */
-static void
-format_packet(p, len, printer, arg)
- u_char *p;
- int len;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int i, n;
- u_short proto;
- struct protent *protp;
-
- if (len >= PPP_HDRLEN && p[0] == PPP_ALLSTATIONS && p[1] == PPP_UI) {
- p += 2;
- GETSHORT(proto, p);
- len -= PPP_HDRLEN;
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (proto == protp->protocol)
- break;
- if (protp != NULL) {
- printer(arg, "[%s", protp->name);
- n = (*protp->printpkt)(p, len, printer, arg);
- printer(arg, "]");
- p += n;
- len -= n;
- } else {
- for (i = 0; (protp = protocols[i]) != NULL; ++i)
- if (proto == (protp->protocol & ~0x8000))
- break;
- if (protp != 0 && protp->data_name != 0) {
- printer(arg, "[%s data]", protp->data_name);
- if (len > 8)
- printer(arg, "%.8B ...", p);
- else
- printer(arg, "%.*B", len, p);
- len = 0;
- } else
- printer(arg, "[proto=0x%x]", proto);
- }
- }
-
- if (len > 32)
- printer(arg, "%.32B ...", p);
- else
- printer(arg, "%.*B", len, p);
-}
-
-/*
- * init_pr_log, end_pr_log - initialize and finish use of pr_log.
- */
-
-static char line[256]; /* line to be logged accumulated here */
-static char *linep; /* current pointer within line */
-static int llevel; /* level for logging */
-
-void
-init_pr_log(prefix, level)
- char *prefix;
- int level;
-{
- linep = line;
- if (prefix != NULL) {
- strlcpy(line, prefix, sizeof(line));
- linep = line + strlen(line);
- }
- llevel = level;
-}
-
-void
-end_pr_log()
-{
- if (linep != line) {
- *linep = 0;
- log_write(llevel, line);
- }
-}
-
-/*
- * pr_log - printer routine for outputting to syslog
- */
-void
-pr_log __V((void *arg, char *fmt, ...))
-{
- int l, n;
- va_list pvar;
- char *p, *eol;
- char buf[256];
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- void *arg;
- char *fmt;
- va_start(pvar);
- arg = va_arg(pvar, void *);
- fmt = va_arg(pvar, char *);
-#endif
-
- n = vslprintf(buf, sizeof(buf), fmt, pvar);
- va_end(pvar);
-
- p = buf;
- eol = strchr(buf, '\n');
- if (linep != line) {
- l = (eol == NULL)? n: eol - buf;
- if (linep + l < line + sizeof(line)) {
- if (l > 0) {
- memcpy(linep, buf, l);
- linep += l;
- }
- if (eol == NULL)
- return;
- p = eol + 1;
- eol = strchr(p, '\n');
- }
- *linep = 0;
- log_write(llevel, line);
- linep = line;
- }
-
- while (eol != NULL) {
- *eol = 0;
- log_write(llevel, p);
- p = eol + 1;
- eol = strchr(p, '\n');
- }
-
- /* assumes sizeof(buf) <= sizeof(line) */
- l = buf + n - p;
- if (l > 0) {
- memcpy(line, p, n);
- linep = line + l;
- }
-}
-
-/*
- * print_string - print a readable representation of a string using
- * printer.
- */
-void
-print_string(p, len, printer, arg)
- char *p;
- int len;
- void (*printer) __P((void *, char *, ...));
- void *arg;
-{
- int c;
-
- printer(arg, "\"");
- for (; len > 0; --len) {
- c = *p++;
- if (' ' <= c && c <= '~') {
- if (c == '\\' || c == '"')
- printer(arg, "\\");
- printer(arg, "%c", c);
- } else {
- switch (c) {
- case '\n':
- printer(arg, "\\n");
- break;
- case '\r':
- printer(arg, "\\r");
- break;
- case '\t':
- printer(arg, "\\t");
- break;
- default:
- printer(arg, "\\%.3o", c);
- }
- }
- }
- printer(arg, "\"");
-}
-
-/*
- * logit - does the hard work for fatal et al.
- */
-static void
-logit(level, fmt, args)
- int level;
- char *fmt;
- va_list args;
-{
- int n;
- char buf[1024];
-
- n = vslprintf(buf, sizeof(buf), fmt, args);
- log_write(level, buf);
-}
-
-static void
-log_write(level, buf)
- int level;
- char *buf;
-{
- syslog(level, "%s", buf);
- if (log_to_fd >= 0 && (level != LOG_DEBUG || debug)) {
- int n = strlen(buf);
-
- if (n > 0 && buf[n-1] == '\n')
- --n;
- if (write(log_to_fd, buf, n) != n
- || write(log_to_fd, "\n", 1) != 1)
- log_to_fd = -1;
- }
-}
-
-/*
- * fatal - log an error message and die horribly.
- */
-void
-fatal __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_ERR, fmt, pvar);
- va_end(pvar);
-
- die(1); /* as promised */
-}
-
-/*
- * error - log an error message.
- */
-void
-error __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_ERR, fmt, pvar);
- va_end(pvar);
-}
-
-/*
- * warn - log a warning message.
- */
-void
-warn __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_WARNING, fmt, pvar);
- va_end(pvar);
-}
-
-/*
- * notice - log a notice-level message.
- */
-void
-notice __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_NOTICE, fmt, pvar);
- va_end(pvar);
-}
-
-/*
- * info - log an informational message.
- */
-void
-info __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_INFO, fmt, pvar);
- va_end(pvar);
-}
-
-/*
- * dbglog - log a debug message.
- */
-void
-dbglog __V((char *fmt, ...))
-{
- va_list pvar;
-
-#if defined(__STDC__)
- va_start(pvar, fmt);
-#else
- char *fmt;
- va_start(pvar);
- fmt = va_arg(pvar, char *);
-#endif
-
- logit(LOG_DEBUG, fmt, pvar);
- va_end(pvar);
-}
-
-/* Procedures for locking the serial device using a lock file. */
-#ifndef LOCK_DIR
-#ifdef _linux_
-#define LOCK_DIR "/var/lock"
-#else
-#ifdef SVR4
-#define LOCK_DIR "/var/spool/locks"
-#else
-#define LOCK_DIR "/var/spool/lock"
-#endif
-#endif
-#endif /* LOCK_DIR */
-
-static char lock_file[MAXPATHLEN];
-
-/*
- * lock - create a lock file for the named device
- */
-int
-lock(dev)
- char *dev;
-{
-#ifdef LOCKLIB
- int result;
-
- result = mklock (dev, (void *) 0);
- if (result == 0) {
- strlcpy(lock_file, sizeof(lock_file), dev);
- return 0;
- }
-
- if (result > 0)
- notice("Device %s is locked by pid %d", dev, result);
- else
- error("Can't create lock file %s", lock_file);
- return -1;
-
-#else /* LOCKLIB */
-
- char lock_buffer[12];
- int fd, pid, n;
-
-#ifdef SVR4
- struct stat sbuf;
-
- if (stat(dev, &sbuf) < 0) {
- error("Can't get device number for %s: %m", dev);
- return -1;
- }
- if ((sbuf.st_mode & S_IFMT) != S_IFCHR) {
- error("Can't lock %s: not a character device", dev);
- return -1;
- }
- slprintf(lock_file, sizeof(lock_file), "%s/LK.%03d.%03d.%03d",
- LOCK_DIR, major(sbuf.st_dev),
- major(sbuf.st_rdev), minor(sbuf.st_rdev));
-#else
- char *p;
-
- if ((p = strrchr(dev, '/')) != NULL)
- dev = p + 1;
- slprintf(lock_file, sizeof(lock_file), "%s/LCK..%s", LOCK_DIR, dev);
-#endif
-
- while ((fd = open(lock_file, O_EXCL | O_CREAT | O_RDWR, 0644)) < 0) {
- if (errno != EEXIST) {
- error("Can't create lock file %s: %m", lock_file);
- break;
- }
-
- /* Read the lock file to find out who has the device locked. */
- fd = open(lock_file, O_RDONLY, 0);
- if (fd < 0) {
- if (errno == ENOENT) /* This is just a timing problem. */
- continue;
- error("Can't open existing lock file %s: %m", lock_file);
- break;
- }
-#ifndef LOCK_BINARY
- n = read(fd, lock_buffer, 11);
-#else
- n = read(fd, &pid, sizeof(pid));
-#endif /* LOCK_BINARY */
- close(fd);
- fd = -1;
- if (n <= 0) {
- error("Can't read pid from lock file %s", lock_file);
- break;
- }
-
- /* See if the process still exists. */
-#ifndef LOCK_BINARY
- lock_buffer[n] = 0;
- pid = atoi(lock_buffer);
-#endif /* LOCK_BINARY */
- if (pid == getpid())
- return 1; /* somebody else locked it for us */
- if (pid == 0
- || (kill(pid, 0) == -1 && errno == ESRCH)) {
- if (unlink (lock_file) == 0) {
- notice("Removed stale lock on %s (pid %d)", dev, pid);
- continue;
- }
- warn("Couldn't remove stale lock on %s", dev);
- } else
- notice("Device %s is locked by pid %d", dev, pid);
- break;
- }
-
- if (fd < 0) {
- lock_file[0] = 0;
- return -1;
- }
-
- pid = getpid();
-#ifndef LOCK_BINARY
- slprintf(lock_buffer, sizeof(lock_buffer), "%10d\n", pid);
- write (fd, lock_buffer, 11);
-#else
- write(fd, &pid, sizeof (pid));
-#endif
- close(fd);
- return 0;
-
-#endif
-}
-
-/*
- * relock - called to update our lockfile when we are about to detach,
- * thus changing our pid (we fork, the child carries on, and the parent dies).
- * Note that this is called by the parent, with pid equal to the pid
- * of the child. This avoids a potential race which would exist if
- * we had the child rewrite the lockfile (the parent might die first,
- * and another process could think the lock was stale if it checked
- * between when the parent died and the child rewrote the lockfile).
- */
-int
-relock(pid)
- int pid;
-{
-#ifdef LOCKLIB
- /* XXX is there a way to do this? */
- return -1;
-#else /* LOCKLIB */
-
- int fd;
- char lock_buffer[12];
-
- if (lock_file[0] == 0)
- return -1;
- fd = open(lock_file, O_WRONLY, 0);
- if (fd < 0) {
- error("Couldn't reopen lock file %s: %m", lock_file);
- lock_file[0] = 0;
- return -1;
- }
-
-#ifndef LOCK_BINARY
- slprintf(lock_buffer, sizeof(lock_buffer), "%10d\n", pid);
- write (fd, lock_buffer, 11);
-#else
- write(fd, &pid, sizeof(pid));
-#endif /* LOCK_BINARY */
- close(fd);
- return 0;
-
-#endif /* LOCKLIB */
-}
-
-/*
- * unlock - remove our lockfile
- */
-void
-unlock()
-{
- if (lock_file[0]) {
-#ifdef LOCKLIB
- (void) rmlock(lock_file, (void *) 0);
-#else
- unlink(lock_file);
-#endif
- lock_file[0] = 0;
- }
-}
-
diff --git a/mdk-stage1/ppp/pppdump/Makefile.linux b/mdk-stage1/ppp/pppdump/Makefile.linux
deleted file mode 100644
index 1d8d78ff7..000000000
--- a/mdk-stage1/ppp/pppdump/Makefile.linux
+++ /dev/null
@@ -1,17 +0,0 @@
-CFLAGS= -I../include/net $(RPM_OPT_FLAGS)
-OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
-INSTALL= install
-
-all: pppdump
-
-pppdump: $(OBJS)
- $(CC) $(RPM_OPT_FLAGS) -o pppdump $(OBJS)
-
-clean:
- rm -f pppdump $(OBJS) *~
-
-install:
- mkdir -p $(BINDIR) $(MANDIR)/man8
- $(INSTALL) -s -c pppdump $(BINDIR)
- $(INSTALL) -c pppdump.8 $(MANDIR)/man8
diff --git a/mdk-stage1/ppp/pppdump/Makefile.linux.makeopt b/mdk-stage1/ppp/pppdump/Makefile.linux.makeopt
deleted file mode 100644
index d02fecde8..000000000
--- a/mdk-stage1/ppp/pppdump/Makefile.linux.makeopt
+++ /dev/null
@@ -1,17 +0,0 @@
-CFLAGS= -O -I../include/net
-OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
-INSTALL= install
-
-all: pppdump
-
-pppdump: $(OBJS)
- $(CC) -o pppdump $(OBJS)
-
-clean:
- rm -f pppdump $(OBJS) *~
-
-install:
- mkdir -p $(BINDIR) $(MANDIR)/man8
- $(INSTALL) -s -c pppdump $(BINDIR)
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)/man8
diff --git a/mdk-stage1/ppp/pppdump/Makefile.linux.pppdump-Makefile b/mdk-stage1/ppp/pppdump/Makefile.linux.pppdump-Makefile
deleted file mode 100644
index 4c98b6c6d..000000000
--- a/mdk-stage1/ppp/pppdump/Makefile.linux.pppdump-Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-CFLAGS= -O -I../include/net
-OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
-INSTALL= install
-
-all: pppdump
-
-pppdump: $(OBJS)
- $(CC) $(RPM_OPT_FLAGS) -o pppdump $(OBJS)
-
-clean:
- rm -f pppdump $(OBJS) *~
-
-install:
- mkdir -p $(BINDIR) $(MANDIR)/man8
- $(INSTALL) -s -c pppdump $(BINDIR)
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)/man8
diff --git a/mdk-stage1/ppp/pppdump/Makefile.sol2 b/mdk-stage1/ppp/pppdump/Makefile.sol2
deleted file mode 100644
index d7e6b413e..000000000
--- a/mdk-stage1/ppp/pppdump/Makefile.sol2
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# pppdump Makefile for SVR4 systems
-# $Id$
-#
-
-include ../solaris/Makedefs
-
-CFLAGS= $(COPTS) -I../include/net
-OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-
-all: pppdump
-
-pppdump: $(OBJS)
- $(CC) -o pppdump $(OBJS)
-
-clean:
- rm -f $(OBJS) pppdump *~
-
-install:
- $(INSTALL) -f $(BINDIR) pppdump
- $(INSTALL) -m 444 -f $(MANDIR)/man8 pppdump.8
diff --git a/mdk-stage1/ppp/pppdump/Makefile.sunos4 b/mdk-stage1/ppp/pppdump/Makefile.sunos4
deleted file mode 100644
index 915c8267d..000000000
--- a/mdk-stage1/ppp/pppdump/Makefile.sunos4
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# pppstats makefile
-# $Id$
-#
-
-include ../sunos4/Makedefs
-
-OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
-CFLAGS = $(COPTS) -I../include/net
-
-all: pppdump
-
-pppdump: $(OBJS)
- $(CC) -o pppdump $(OBJS)
-
-clean:
- rm -f pppdump $(OBJS) *~
-
-install: pppdump
- $(INSTALL) -c pppdump $(BINDIR)/pppdump
- $(INSTALL) -c -m 444 pppdump.8 $(MANDIR)/man8/pppdump.8
diff --git a/mdk-stage1/ppp/pppdump/bsd-comp.c b/mdk-stage1/ppp/pppdump/bsd-comp.c
deleted file mode 100644
index 1e14e98bb..000000000
--- a/mdk-stage1/ppp/pppdump/bsd-comp.c
+++ /dev/null
@@ -1,750 +0,0 @@
-/* Because this code is derived from the 4.3BSD compress source:
- *
- *
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * 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.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- */
-
-/*
- * $Id$
- */
-
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include "ppp_defs.h"
-#include "ppp-comp.h"
-
-#if DO_BSD_COMPRESS
-
-/*
- * PPP "BSD compress" compression
- * The differences between this compression and the classic BSD LZW
- * source are obvious from the requirement that the classic code worked
- * with files while this handles arbitrarily long streams that
- * are broken into packets. They are:
- *
- * When the code size expands, a block of junk is not emitted by
- * the compressor and not expected by the decompressor.
- *
- * New codes are not necessarily assigned every time an old
- * code is output by the compressor. This is because a packet
- * end forces a code to be emitted, but does not imply that a
- * new sequence has been seen.
- *
- * The compression ratio is checked at the first end of a packet
- * after the appropriate gap. Besides simplifying and speeding
- * things up, this makes it more likely that the transmitter
- * and receiver will agree when the dictionary is cleared when
- * compression is not going well.
- */
-
-/*
- * A dictionary for doing BSD compress.
- */
-struct bsd_db {
- int totlen; /* length of this structure */
- u_int hsize; /* size of the hash table */
- u_char hshift; /* used in hash function */
- u_char n_bits; /* current bits/code */
- u_char maxbits;
- u_char debug;
- u_char unit;
- u_short seqno; /* sequence number of next packet */
- u_int hdrlen; /* header length to preallocate */
- u_int mru;
- u_int maxmaxcode; /* largest valid code */
- u_int max_ent; /* largest code in use */
- u_int in_count; /* uncompressed bytes, aged */
- u_int bytes_out; /* compressed bytes, aged */
- u_int ratio; /* recent compression ratio */
- u_int checkpoint; /* when to next check the ratio */
- u_int clear_count; /* times dictionary cleared */
- u_int incomp_count; /* incompressible packets */
- u_int incomp_bytes; /* incompressible bytes */
- u_int uncomp_count; /* uncompressed packets */
- u_int uncomp_bytes; /* uncompressed bytes */
- u_int comp_count; /* compressed packets */
- u_int comp_bytes; /* compressed bytes */
- u_short *lens; /* array of lengths of codes */
- struct bsd_dict {
- union { /* hash value */
- u_int32_t fcode;
- struct {
-#ifdef BSD_LITTLE_ENDIAN
- u_short prefix; /* preceding code */
- u_char suffix; /* last character of new code */
- u_char pad;
-#else
- u_char pad;
- u_char suffix; /* last character of new code */
- u_short prefix; /* preceding code */
-#endif
- } hs;
- } f;
- u_short codem1; /* output of hash table -1 */
- u_short cptr; /* map code to hash table entry */
- } dict[1];
-};
-
-#define BSD_OVHD 2 /* BSD compress overhead/packet */
-#define BSD_INIT_BITS BSD_MIN_BITS
-
-static void *bsd_decomp_alloc __P((u_char *options, int opt_len));
-static void bsd_free __P((void *state));
-static int bsd_decomp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
-static void bsd_incomp __P((void *state, u_char *dmsg, int len));
-static int bsd_decompress __P((void *state, u_char *cmp, int inlen,
- u_char *dmp, int *outlen));
-static void bsd_reset __P((void *state));
-static void bsd_comp_stats __P((void *state, struct compstat *stats));
-
-/*
- * Exported procedures.
- */
-struct compressor ppp_bsd_compress = {
- CI_BSD_COMPRESS, /* compress_proto */
- bsd_decomp_alloc, /* decomp_alloc */
- bsd_free, /* decomp_free */
- bsd_decomp_init, /* decomp_init */
- bsd_reset, /* decomp_reset */
- bsd_decompress, /* decompress */
- bsd_incomp, /* incomp */
- bsd_comp_stats, /* decomp_stat */
-};
-
-/*
- * the next two codes should not be changed lightly, as they must not
- * lie within the contiguous general code space.
- */
-#define CLEAR 256 /* table clear output code */
-#define FIRST 257 /* first free entry */
-#define LAST 255
-
-#define MAXCODE(b) ((1 << (b)) - 1)
-#define BADCODEM1 MAXCODE(BSD_MAX_BITS)
-
-#define BSD_HASH(prefix,suffix,hshift) ((((u_int32_t)(suffix)) << (hshift)) \
- ^ (u_int32_t)(prefix))
-#define BSD_KEY(prefix,suffix) ((((u_int32_t)(suffix)) << 16) \
- + (u_int32_t)(prefix))
-
-#define CHECK_GAP 10000 /* Ratio check interval */
-
-#define RATIO_SCALE_LOG 8
-#define RATIO_SCALE (1<<RATIO_SCALE_LOG)
-#define RATIO_MAX (0x7fffffff>>RATIO_SCALE_LOG)
-
-/*
- * clear the dictionary
- */
-static void
-bsd_clear(db)
- struct bsd_db *db;
-{
- db->clear_count++;
- db->max_ent = FIRST-1;
- db->n_bits = BSD_INIT_BITS;
- db->ratio = 0;
- db->bytes_out = 0;
- db->in_count = 0;
- db->checkpoint = CHECK_GAP;
-}
-
-/*
- * If the dictionary is full, then see if it is time to reset it.
- *
- * Compute the compression ratio using fixed-point arithmetic
- * with 8 fractional bits.
- *
- * Since we have an infinite stream instead of a single file,
- * watch only the local compression ratio.
- *
- * Since both peers must reset the dictionary at the same time even in
- * the absence of CLEAR codes (while packets are incompressible), they
- * must compute the same ratio.
- */
-static int /* 1=output CLEAR */
-bsd_check(db)
- struct bsd_db *db;
-{
- u_int new_ratio;
-
- if (db->in_count >= db->checkpoint) {
- /* age the ratio by limiting the size of the counts */
- if (db->in_count >= RATIO_MAX
- || db->bytes_out >= RATIO_MAX) {
- db->in_count -= db->in_count/4;
- db->bytes_out -= db->bytes_out/4;
- }
-
- db->checkpoint = db->in_count + CHECK_GAP;
-
- if (db->max_ent >= db->maxmaxcode) {
- /* Reset the dictionary only if the ratio is worse,
- * or if it looks as if it has been poisoned
- * by incompressible data.
- *
- * This does not overflow, because
- * db->in_count <= RATIO_MAX.
- */
- new_ratio = db->in_count << RATIO_SCALE_LOG;
- if (db->bytes_out != 0)
- new_ratio /= db->bytes_out;
-
- if (new_ratio < db->ratio || new_ratio < 1 * RATIO_SCALE) {
- bsd_clear(db);
- return 1;
- }
- db->ratio = new_ratio;
- }
- }
- return 0;
-}
-
-/*
- * Return statistics.
- */
-static void
-bsd_comp_stats(state, stats)
- void *state;
- struct compstat *stats;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int out;
-
- stats->unc_bytes = db->uncomp_bytes;
- stats->unc_packets = db->uncomp_count;
- stats->comp_bytes = db->comp_bytes;
- stats->comp_packets = db->comp_count;
- stats->inc_bytes = db->incomp_bytes;
- stats->inc_packets = db->incomp_count;
- stats->ratio = db->in_count;
- out = db->bytes_out;
- if (stats->ratio <= 0x7fffff)
- stats->ratio <<= 8;
- else
- out >>= 8;
- if (out != 0)
- stats->ratio /= out;
-}
-
-/*
- * Reset state, as on a CCP ResetReq.
- */
-static void
-bsd_reset(state)
- void *state;
-{
- struct bsd_db *db = (struct bsd_db *) state;
-
- db->seqno = 0;
- bsd_clear(db);
- db->clear_count = 0;
-}
-
-/*
- * Allocate space for a (de) compressor.
- */
-static void *
-bsd_alloc(options, opt_len, decomp)
- u_char *options;
- int opt_len, decomp;
-{
- int bits;
- u_int newlen, hsize, hshift, maxmaxcode;
- struct bsd_db *db;
-
- if (opt_len != 3 || options[0] != CI_BSD_COMPRESS || options[1] != 3
- || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION)
- return NULL;
-
- bits = BSD_NBITS(options[2]);
- switch (bits) {
- case 9: /* needs 82152 for both directions */
- case 10: /* needs 84144 */
- case 11: /* needs 88240 */
- case 12: /* needs 96432 */
- hsize = 5003;
- hshift = 4;
- break;
- case 13: /* needs 176784 */
- hsize = 9001;
- hshift = 5;
- break;
- case 14: /* needs 353744 */
- hsize = 18013;
- hshift = 6;
- break;
- case 15: /* needs 691440 */
- hsize = 35023;
- hshift = 7;
- break;
- case 16: /* needs 1366160--far too much, */
- /* hsize = 69001; */ /* and 69001 is too big for cptr */
- /* hshift = 8; */ /* in struct bsd_db */
- /* break; */
- default:
- return NULL;
- }
-
- maxmaxcode = MAXCODE(bits);
- newlen = sizeof(*db) + (hsize-1) * (sizeof(db->dict[0]));
- db = (struct bsd_db *) malloc(newlen);
- if (!db)
- return NULL;
- memset(db, 0, sizeof(*db) - sizeof(db->dict));
-
- if (!decomp) {
- db->lens = NULL;
- } else {
- db->lens = (u_short *) malloc((maxmaxcode+1) * sizeof(db->lens[0]));
- if (!db->lens) {
- free(db);
- return NULL;
- }
- }
-
- db->totlen = newlen;
- db->hsize = hsize;
- db->hshift = hshift;
- db->maxmaxcode = maxmaxcode;
- db->maxbits = bits;
-
- return (void *) db;
-}
-
-static void
-bsd_free(state)
- void *state;
-{
- struct bsd_db *db = (struct bsd_db *) state;
-
- if (db->lens)
- free(db->lens);
- free(db);
-}
-
-static void *
-bsd_decomp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- return bsd_alloc(options, opt_len, 1);
-}
-
-/*
- * Initialize the database.
- */
-static int
-bsd_init(db, options, opt_len, unit, hdrlen, mru, debug, decomp)
- struct bsd_db *db;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug, decomp;
-{
- int i;
-
- if (opt_len < CILEN_BSD_COMPRESS
- || options[0] != CI_BSD_COMPRESS || options[1] != CILEN_BSD_COMPRESS
- || BSD_VERSION(options[2]) != BSD_CURRENT_VERSION
- || BSD_NBITS(options[2]) != db->maxbits
- || decomp && db->lens == NULL)
- return 0;
-
- if (decomp) {
- i = LAST+1;
- while (i != 0)
- db->lens[--i] = 1;
- }
- i = db->hsize;
- while (i != 0) {
- db->dict[--i].codem1 = BADCODEM1;
- db->dict[i].cptr = 0;
- }
-
- db->unit = unit;
- db->hdrlen = hdrlen;
- db->mru = mru;
- if (debug)
- db->debug = 1;
-
- bsd_reset(db);
-
- return 1;
-}
-
-static int
-bsd_decomp_init(state, options, opt_len, unit, hdrlen, mru, debug)
- void *state;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug;
-{
- return bsd_init((struct bsd_db *) state, options, opt_len,
- unit, hdrlen, mru, debug, 1);
-}
-
-
-/*
- * Update the "BSD Compress" dictionary on the receiver for
- * incompressible data by pretending to compress the incoming data.
- */
-static void
-bsd_incomp(state, dmsg, mlen)
- void *state;
- u_char *dmsg;
- int mlen;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int hshift = db->hshift;
- u_int max_ent = db->max_ent;
- u_int n_bits = db->n_bits;
- struct bsd_dict *dictp;
- u_int32_t fcode;
- u_char c;
- long hval, disp;
- int slen, ilen;
- u_int bitno = 7;
- u_char *rptr;
- u_int ent;
-
- rptr = dmsg;
- ent = rptr[0]; /* get the protocol */
- if (ent == 0) {
- ++rptr;
- --mlen;
- ent = rptr[0];
- }
- if ((ent & 1) == 0 || ent < 0x21 || ent > 0xf9)
- return;
-
- db->seqno++;
- ilen = 1; /* count the protocol as 1 byte */
- ++rptr;
- slen = dmsg + mlen - rptr;
- ilen += slen;
- for (; slen > 0; --slen) {
- c = *rptr++;
- fcode = BSD_KEY(ent, c);
- hval = BSD_HASH(ent, c, hshift);
- dictp = &db->dict[hval];
-
- /* validate and then check the entry */
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- if (dictp->f.fcode == fcode) {
- ent = dictp->codem1+1;
- continue; /* found (prefix,suffix) */
- }
-
- /* continue probing until a match or invalid entry */
- disp = (hval == 0) ? 1 : hval;
- do {
- hval += disp;
- if (hval >= db->hsize)
- hval -= db->hsize;
- dictp = &db->dict[hval];
- if (dictp->codem1 >= max_ent)
- goto nomatch;
- } while (dictp->f.fcode != fcode);
- ent = dictp->codem1+1;
- continue; /* finally found (prefix,suffix) */
-
- nomatch: /* output (count) the prefix */
- bitno += n_bits;
-
- /* code -> hashtable */
- if (max_ent < db->maxmaxcode) {
- struct bsd_dict *dictp2;
- /* expand code size if needed */
- if (max_ent >= MAXCODE(n_bits))
- db->n_bits = ++n_bits;
-
- /* Invalidate previous hash table entry
- * assigned this code, and then take it over.
- */
- dictp2 = &db->dict[max_ent+1];
- if (db->dict[dictp2->cptr].codem1 == max_ent)
- db->dict[dictp2->cptr].codem1 = BADCODEM1;
- dictp2->cptr = hval;
- dictp->codem1 = max_ent;
- dictp->f.fcode = fcode;
-
- db->max_ent = ++max_ent;
- db->lens[max_ent] = db->lens[ent]+1;
- }
- ent = c;
- }
- bitno += n_bits; /* output (count) the last code */
- db->bytes_out += bitno/8;
- db->in_count += ilen;
- (void)bsd_check(db);
-
- ++db->incomp_count;
- db->incomp_bytes += ilen;
- ++db->uncomp_count;
- db->uncomp_bytes += ilen;
-
- /* Increase code size if we would have without the packet
- * boundary and as the decompressor will.
- */
- if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode)
- db->n_bits++;
-}
-
-
-/*
- * Decompress "BSD Compress"
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression. For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-static int
-bsd_decompress(state, cmsg, inlen, dmp, outlenp)
- void *state;
- u_char *cmsg, *dmp;
- int inlen, *outlenp;
-{
- struct bsd_db *db = (struct bsd_db *) state;
- u_int max_ent = db->max_ent;
- u_int32_t accm = 0;
- u_int bitno = 32; /* 1st valid bit in accm */
- u_int n_bits = db->n_bits;
- u_int tgtbitno = 32-n_bits; /* bitno when we have a code */
- struct bsd_dict *dictp;
- int explen, i, seq, len;
- u_int incode, oldcode, finchar;
- u_char *p, *rptr, *wptr;
- int ilen;
- int dlen, space, codelen, extra;
-
- rptr = cmsg;
- if (*rptr == 0)
- ++rptr;
- ++rptr; /* skip protocol (assumed 0xfd) */
- seq = (rptr[0] << 8) + rptr[1];
- rptr += BSD_OVHD;
- ilen = len = cmsg + inlen - rptr;
-
- /*
- * Check the sequence number and give up if it is not what we expect.
- */
- if (seq != db->seqno++) {
- if (db->debug)
- printf("bsd_decomp%d: bad sequence # %d, expected %d\n",
- db->unit, seq, db->seqno - 1);
- return DECOMP_ERROR;
- }
-
- wptr = dmp + db->hdrlen;
-
- oldcode = CLEAR;
- explen = 0;
- while (len > 0) {
- /*
- * Accumulate bytes until we have a complete code.
- * Then get the next code, relying on the 32-bit,
- * unsigned accm to mask the result.
- */
- bitno -= 8;
- accm |= *rptr++ << bitno;
- --len;
- if (tgtbitno < bitno)
- continue;
- incode = accm >> tgtbitno;
- accm <<= n_bits;
- bitno += n_bits;
-
- if (incode == CLEAR) {
- /*
- * The dictionary must only be cleared at
- * the end of a packet. But there could be an
- * empty message block at the end.
- */
- if (len > 0) {
- if (db->debug)
- printf("bsd_decomp%d: bad CLEAR\n", db->unit);
- return DECOMP_FATALERROR;
- }
- bsd_clear(db);
- explen = ilen = 0;
- break;
- }
-
- if (incode > max_ent + 2 || incode > db->maxmaxcode
- || incode > max_ent && oldcode == CLEAR) {
- if (db->debug) {
- printf("bsd_decomp%d: bad code 0x%x oldcode=0x%x ",
- db->unit, incode, oldcode);
- printf("max_ent=0x%x dlen=%d seqno=%d\n",
- max_ent, dlen, db->seqno);
- }
- return DECOMP_FATALERROR; /* probably a bug */
- }
-
- /* Special case for KwKwK string. */
- if (incode > max_ent) {
- finchar = oldcode;
- extra = 1;
- } else {
- finchar = incode;
- extra = 0;
- }
-
- codelen = db->lens[finchar];
- explen += codelen + extra;
- if (explen > db->mru + 1) {
- if (db->debug)
- printf("bsd_decomp%d: ran out of mru\n", db->unit);
- return DECOMP_FATALERROR;
- }
-
- /*
- * Decode this code and install it in the decompressed buffer.
- */
- p = (wptr += codelen);
- while (finchar > LAST) {
- dictp = &db->dict[db->dict[finchar].cptr];
-#ifdef DEBUG
- --codelen;
- if (codelen <= 0) {
- printf("bsd_decomp%d: fell off end of chain ", db->unit);
- printf("0x%x at 0x%x by 0x%x, max_ent=0x%x\n",
- incode, finchar, db->dict[finchar].cptr, max_ent);
- return DECOMP_FATALERROR;
- }
- if (dictp->codem1 != finchar-1) {
- printf("bsd_decomp%d: bad code chain 0x%x finchar=0x%x ",
- db->unit, incode, finchar);
- printf("oldcode=0x%x cptr=0x%x codem1=0x%x\n", oldcode,
- db->dict[finchar].cptr, dictp->codem1);
- return DECOMP_FATALERROR;
- }
-#endif
- *--p = dictp->f.hs.suffix;
- finchar = dictp->f.hs.prefix;
- }
- *--p = finchar;
-
-#ifdef DEBUG
- if (--codelen != 0)
- printf("bsd_decomp%d: short by %d after code 0x%x, max_ent=0x%x\n",
- db->unit, codelen, incode, max_ent);
-#endif
-
- if (extra) /* the KwKwK case again */
- *wptr++ = finchar;
-
- /*
- * If not first code in a packet, and
- * if not out of code space, then allocate a new code.
- *
- * Keep the hash table correct so it can be used
- * with uncompressed packets.
- */
- if (oldcode != CLEAR && max_ent < db->maxmaxcode) {
- struct bsd_dict *dictp2;
- u_int32_t fcode;
- int hval, disp;
-
- fcode = BSD_KEY(oldcode,finchar);
- hval = BSD_HASH(oldcode,finchar,db->hshift);
- dictp = &db->dict[hval];
-
- /* look for a free hash table entry */
- if (dictp->codem1 < max_ent) {
- disp = (hval == 0) ? 1 : hval;
- do {
- hval += disp;
- if (hval >= db->hsize)
- hval -= db->hsize;
- dictp = &db->dict[hval];
- } while (dictp->codem1 < max_ent);
- }
-
- /*
- * Invalidate previous hash table entry
- * assigned this code, and then take it over
- */
- dictp2 = &db->dict[max_ent+1];
- if (db->dict[dictp2->cptr].codem1 == max_ent) {
- db->dict[dictp2->cptr].codem1 = BADCODEM1;
- }
- dictp2->cptr = hval;
- dictp->codem1 = max_ent;
- dictp->f.fcode = fcode;
-
- db->max_ent = ++max_ent;
- db->lens[max_ent] = db->lens[oldcode]+1;
-
- /* Expand code size if needed. */
- if (max_ent >= MAXCODE(n_bits) && max_ent < db->maxmaxcode) {
- db->n_bits = ++n_bits;
- tgtbitno = 32-n_bits;
- }
- }
- oldcode = incode;
- }
- *outlenp = wptr - (dmp + db->hdrlen);
-
- /*
- * Keep the checkpoint right so that incompressible packets
- * clear the dictionary at the right times.
- */
- db->bytes_out += ilen;
- db->in_count += explen;
- if (bsd_check(db) && db->debug) {
- printf("bsd_decomp%d: peer should have cleared dictionary\n",
- db->unit);
- }
-
- ++db->comp_count;
- db->comp_bytes += ilen + BSD_OVHD;
- ++db->uncomp_count;
- db->uncomp_bytes += explen;
-
- return DECOMP_OK;
-}
-#endif /* DO_BSD_COMPRESS */
diff --git a/mdk-stage1/ppp/pppdump/deflate.c b/mdk-stage1/ppp/pppdump/deflate.c
deleted file mode 100644
index 08e8abc0d..000000000
--- a/mdk-stage1/ppp/pppdump/deflate.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * ppp_deflate.c - interface the zlib procedures for Deflate compression
- * and decompression (as used by gzip) to the PPP code.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-#include <sys/types.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include "ppp_defs.h"
-#include "ppp-comp.h"
-#include "zlib.h"
-
-#if DO_DEFLATE
-
-#define DEFLATE_DEBUG 1
-
-/*
- * State for a Deflate (de)compressor.
- */
-struct deflate_state {
- int seqno;
- int w_size;
- int unit;
- int hdrlen;
- int mru;
- int debug;
- z_stream strm;
- struct compstat stats;
-};
-
-#define DEFLATE_OVHD 2 /* Deflate overhead/packet */
-
-static void *z_alloc __P((void *, u_int items, u_int size));
-static void z_free __P((void *, void *ptr, u_int nb));
-static void *z_decomp_alloc __P((u_char *options, int opt_len));
-static void z_decomp_free __P((void *state));
-static int z_decomp_init __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
-static void z_incomp __P((void *state, u_char *dmsg, int len));
-static int z_decompress __P((void *state, u_char *cmp, int inlen,
- u_char *dmp, int *outlenp));
-static void z_decomp_reset __P((void *state));
-static void z_comp_stats __P((void *state, struct compstat *stats));
-
-/*
- * Procedures exported to if_ppp.c.
- */
-struct compressor ppp_deflate = {
- CI_DEFLATE, /* compress_proto */
- z_decomp_alloc, /* decomp_alloc */
- z_decomp_free, /* decomp_free */
- z_decomp_init, /* decomp_init */
- z_decomp_reset, /* decomp_reset */
- z_decompress, /* decompress */
- z_incomp, /* incomp */
- z_comp_stats, /* decomp_stat */
-};
-
-/*
- * Space allocation and freeing routines for use by zlib routines.
- */
-static void *
-z_alloc(notused, items, size)
- void *notused;
- u_int items, size;
-{
- return malloc(items * size);
-}
-
-static void
-z_free(notused, ptr, nbytes)
- void *notused;
- void *ptr;
- u_int nbytes;
-{
- free(ptr);
-}
-
-static void
-z_comp_stats(arg, stats)
- void *arg;
- struct compstat *stats;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_int out;
-
- *stats = state->stats;
- stats->ratio = stats->unc_bytes;
- out = stats->comp_bytes + stats->unc_bytes;
- if (stats->ratio <= 0x7ffffff)
- stats->ratio <<= 8;
- else
- out >>= 8;
- if (out != 0)
- stats->ratio /= out;
-}
-
-/*
- * Allocate space for a decompressor.
- */
-static void *
-z_decomp_alloc(options, opt_len)
- u_char *options;
- int opt_len;
-{
- struct deflate_state *state;
- int w_size;
-
- if (opt_len != CILEN_DEFLATE || options[0] != CI_DEFLATE
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return NULL;
- w_size = DEFLATE_SIZE(options[2]);
- if (w_size < DEFLATE_MIN_SIZE || w_size > DEFLATE_MAX_SIZE)
- return NULL;
-
- state = (struct deflate_state *) malloc(sizeof(*state));
- if (state == NULL)
- return NULL;
-
- state->strm.next_out = NULL;
- state->strm.zalloc = (alloc_func) z_alloc;
- state->strm.zfree = (free_func) z_free;
- if (inflateInit2(&state->strm, -w_size) != Z_OK) {
- free(state);
- return NULL;
- }
-
- state->w_size = w_size;
- memset(&state->stats, 0, sizeof(state->stats));
- return (void *) state;
-}
-
-static void
-z_decomp_free(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- inflateEnd(&state->strm);
- free(state);
-}
-
-static int
-z_decomp_init(arg, options, opt_len, unit, hdrlen, mru, debug)
- void *arg;
- u_char *options;
- int opt_len, unit, hdrlen, mru, debug;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- if (opt_len < CILEN_DEFLATE || options[0] != CI_DEFLATE
- || options[1] != CILEN_DEFLATE
- || DEFLATE_METHOD(options[2]) != DEFLATE_METHOD_VAL
- || DEFLATE_SIZE(options[2]) != state->w_size
- || options[3] != DEFLATE_CHK_SEQUENCE)
- return 0;
-
- state->seqno = 0;
- state->unit = unit;
- state->hdrlen = hdrlen;
- state->debug = debug;
- state->mru = mru;
-
- inflateReset(&state->strm);
-
- return 1;
-}
-
-static void
-z_decomp_reset(arg)
- void *arg;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
-
- state->seqno = 0;
- inflateReset(&state->strm);
-}
-
-/*
- * Decompress a Deflate-compressed packet.
- *
- * Because of patent problems, we return DECOMP_ERROR for errors
- * found by inspecting the input data and for system problems, but
- * DECOMP_FATALERROR for any errors which could possibly be said to
- * be being detected "after" decompression. For DECOMP_ERROR,
- * we can issue a CCP reset-request; for DECOMP_FATALERROR, we may be
- * infringing a patent of Motorola's if we do, so we take CCP down
- * instead.
- *
- * Given that the frame has the correct sequence number and a good FCS,
- * errors such as invalid codes in the input most likely indicate a
- * bug, so we return DECOMP_FATALERROR for them in order to turn off
- * compression, even though they are detected by inspecting the input.
- */
-static int
-z_decompress(arg, mi, inlen, mo, outlenp)
- void *arg;
- u_char *mi, *mo;
- int inlen, *outlenp;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_char *rptr, *wptr;
- int rlen, olen, ospace;
- int seq, i, flush, r, decode_proto;
-
- rptr = mi;
- if (*rptr == 0)
- ++rptr;
- ++rptr;
-
- /* Check the sequence number. */
- seq = (rptr[0] << 8) + rptr[1];
- rptr += 2;
- if (seq != state->seqno) {
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_decompress%d: bad seq # %d, expected %d\n",
- state->unit, seq, state->seqno);
- return DECOMP_ERROR;
- }
- ++state->seqno;
-
- /*
- * Set up to call inflate.
- */
- wptr = mo;
- state->strm.next_in = rptr;
- state->strm.avail_in = mi + inlen - rptr;
- rlen = state->strm.avail_in + PPP_HDRLEN + DEFLATE_OVHD;
- state->strm.next_out = wptr;
- state->strm.avail_out = state->mru + 2;
-
- r = inflate(&state->strm, Z_PACKET_FLUSH);
- if (r != Z_OK) {
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_decompress%d: inflate returned %d (%s)\n",
- state->unit, r, (state->strm.msg? state->strm.msg: ""));
- return DECOMP_FATALERROR;
- }
- olen = state->mru + 2 - state->strm.avail_out;
- *outlenp = olen;
-
- if ((wptr[0] & 1) != 0)
- ++olen; /* for suppressed protocol high byte */
- olen += 2; /* for address, control */
-
-#if DEFLATE_DEBUG
- if (olen > state->mru + PPP_HDRLEN)
- printf("ppp_deflate%d: exceeded mru (%d > %d)\n",
- state->unit, olen, state->mru + PPP_HDRLEN);
-#endif
-
- state->stats.unc_bytes += olen;
- state->stats.unc_packets++;
- state->stats.comp_bytes += rlen;
- state->stats.comp_packets++;
-
- return DECOMP_OK;
-}
-
-/*
- * Incompressible data has arrived - add it to the history.
- */
-static void
-z_incomp(arg, mi, mlen)
- void *arg;
- u_char *mi;
- int mlen;
-{
- struct deflate_state *state = (struct deflate_state *) arg;
- u_char *rptr;
- int rlen, proto, r;
-
- /*
- * Check that the protocol is one we handle.
- */
- rptr = mi;
- proto = rptr[0];
- if ((proto & 1) == 0)
- proto = (proto << 8) + rptr[1];
- if (proto > 0x3fff || proto == 0xfd || proto == 0xfb)
- return;
-
- ++state->seqno;
-
- if (rptr[0] == 0)
- ++rptr;
- rlen = mi + mlen - rptr;
- state->strm.next_in = rptr;
- state->strm.avail_in = rlen;
- r = inflateIncomp(&state->strm);
- if (r != Z_OK) {
- /* gak! */
-#if !DEFLATE_DEBUG
- if (state->debug)
-#endif
- printf("z_incomp%d: inflateIncomp returned %d (%s)\n",
- state->unit, r, (state->strm.msg? state->strm.msg: ""));
- return;
- }
-
- /*
- * Update stats.
- */
- if (proto <= 0xff)
- ++rlen;
- rlen += 2;
- state->stats.inc_bytes += rlen;
- state->stats.inc_packets++;
- state->stats.unc_bytes += rlen;
- state->stats.unc_packets++;
-}
-
-#endif /* DO_DEFLATE */
diff --git a/mdk-stage1/ppp/pppdump/ppp-comp.h b/mdk-stage1/ppp/pppdump/ppp-comp.h
deleted file mode 100644
index 9221c0db4..000000000
--- a/mdk-stage1/ppp/pppdump/ppp-comp.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * ppp-comp.h - Definitions for doing PPP packet compression.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-#ifndef _NET_PPP_COMP_H
-#define _NET_PPP_COMP_H
-
-/*
- * The following symbols control whether we include code for
- * various compression methods.
- */
-#ifndef DO_BSD_COMPRESS
-#define DO_BSD_COMPRESS 1 /* by default, include BSD-Compress */
-#endif
-#ifndef DO_DEFLATE
-#define DO_DEFLATE 1 /* by default, include Deflate */
-#endif
-#define DO_PREDICTOR_1 0
-#define DO_PREDICTOR_2 0
-
-/*
- * Structure giving methods for compression/decompression.
- */
-struct compressor {
- int compress_proto; /* CCP compression protocol number */
-
- /* Allocate space for a decompressor (receive side) */
- void *(*decomp_alloc) __P((u_char *options, int opt_len));
- /* Free space used by a decompressor */
- void (*decomp_free) __P((void *state));
- /* Initialize a decompressor */
- int (*decomp_init) __P((void *state, u_char *options, int opt_len,
- int unit, int hdrlen, int mru, int debug));
- /* Reset a decompressor */
- void (*decomp_reset) __P((void *state));
- /* Decompress a packet. */
- int (*decompress) __P((void *state, u_char *mp, int inlen,
- u_char *dmp, int *outlen));
- /* Update state for an incompressible packet received */
- void (*incomp) __P((void *state, u_char *mp, int len));
- /* Return decompression statistics */
- void (*decomp_stat) __P((void *state, struct compstat *stats));
-};
-
-/*
- * Return values for decompress routine.
- * We need to make these distinctions so that we can disable certain
- * useful functionality, namely sending a CCP reset-request as a result
- * of an error detected after decompression. This is to avoid infringing
- * a patent held by Motorola.
- * Don't you just lurve software patents.
- */
-#define DECOMP_OK 0 /* everything went OK */
-#define DECOMP_ERROR 1 /* error detected before decomp. */
-#define DECOMP_FATALERROR 2 /* error detected after decomp. */
-
-/*
- * CCP codes.
- */
-#define CCP_CONFREQ 1
-#define CCP_CONFACK 2
-#define CCP_CONFNAK 3
-#define CCP_CONFREJ 4
-#define CCP_TERMREQ 5
-#define CCP_TERMACK 6
-#define CCP_RESETREQ 14
-#define CCP_RESETACK 15
-
-/*
- * Max # bytes for a CCP option
- */
-#define CCP_MAX_OPTION_LENGTH 32
-
-/*
- * Parts of a CCP packet.
- */
-#define CCP_CODE(dp) ((dp)[0])
-#define CCP_ID(dp) ((dp)[1])
-#define CCP_LENGTH(dp) (((dp)[2] << 8) + (dp)[3])
-#define CCP_HDRLEN 4
-
-#define CCP_OPT_CODE(dp) ((dp)[0])
-#define CCP_OPT_LENGTH(dp) ((dp)[1])
-#define CCP_OPT_MINLEN 2
-
-/*
- * Definitions for BSD-Compress.
- */
-#define CI_BSD_COMPRESS 21 /* config. option for BSD-Compress */
-#define CILEN_BSD_COMPRESS 3 /* length of config. option */
-
-/* Macros for handling the 3rd byte of the BSD-Compress config option. */
-#define BSD_NBITS(x) ((x) & 0x1F) /* number of bits requested */
-#define BSD_VERSION(x) ((x) >> 5) /* version of option format */
-#define BSD_CURRENT_VERSION 1 /* current version number */
-#define BSD_MAKE_OPT(v, n) (((v) << 5) | (n))
-
-#define BSD_MIN_BITS 9 /* smallest code size supported */
-#define BSD_MAX_BITS 15 /* largest code size supported */
-
-/*
- * Definitions for Deflate.
- */
-#define CI_DEFLATE 26 /* config option for Deflate */
-#define CI_DEFLATE_DRAFT 24 /* value used in original draft RFC */
-#define CILEN_DEFLATE 4 /* length of its config option */
-
-#define DEFLATE_MIN_SIZE 8
-#define DEFLATE_MAX_SIZE 15
-#define DEFLATE_METHOD_VAL 8
-#define DEFLATE_SIZE(x) (((x) >> 4) + DEFLATE_MIN_SIZE)
-#define DEFLATE_METHOD(x) ((x) & 0x0F)
-#define DEFLATE_MAKE_OPT(w) ((((w) - DEFLATE_MIN_SIZE) << 4) \
- + DEFLATE_METHOD_VAL)
-#define DEFLATE_CHK_SEQUENCE 0
-
-/*
- * Definitions for other, as yet unsupported, compression methods.
- */
-#define CI_PREDICTOR_1 1 /* config option for Predictor-1 */
-#define CILEN_PREDICTOR_1 2 /* length of its config option */
-#define CI_PREDICTOR_2 2 /* config option for Predictor-2 */
-#define CILEN_PREDICTOR_2 2 /* length of its config option */
-
-#endif /* _NET_PPP_COMP_H */
diff --git a/mdk-stage1/ppp/pppdump/pppdump.8 b/mdk-stage1/ppp/pppdump/pppdump.8
deleted file mode 100644
index c0172f519..000000000
--- a/mdk-stage1/ppp/pppdump/pppdump.8
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" @(#) $Id$
-.TH PPPDUMP 8 "1 April 1999"
-.SH NAME
-pppdump \- convert PPP record file to readable format
-.SH SYNOPSIS
-.B pppdump
-[
-.B -h
-|
-.B -p
-[
-.B -d
-]] [
-.B -r
-] [
-.B -m \fImru
-] [
-.I file \fR...
-]
-.ti 12
-.SH DESCRIPTION
-The
-.B pppdump
-utility converts the files written using the \fIrecord\fR option of
-.B pppd
-into a human-readable format. If one or more filenames are specified,
-.B pppdump
-will read each in turn; otherwise it will read its standard input. In
-each case the result is written to standard output.
-.PP
-The options are as follows:
-.TP
-.B -h
-Prints the bytes sent and received in hexadecimal. If neither this
-option nor the \fB-p\fR option is specified, the bytes are printed as
-the characters themselves, with non-printing and non-ASCII characters
-printed as escape sequences.
-.TP
-.B -p
-Collects the bytes sent and received into PPP packets, interpreting
-the async HDLC framing and escape characters and checking the FCS
-(frame check sequence) of each packet. The packets are printed as hex
-values and as characters (non-printable characters are printed as
-`.').
-.TP
-.B -d
-With the \fB-p\fR option, this option causes
-.B pppdump
-to decompress packets which have been compressed with the BSD-Compress
-or Deflate methods.
-.TP
-.B -r
-Reverses the direction indicators, so that `sent' is printed for
-bytes or packets received, and `rcvd' is printed for bytes or packets
-sent.
-.TP
-.B -m \fImru
-Use \fImru\fR as the MRU (maximum receive unit) for both directions of
-the link when checking for over-length PPP packets (with the \fB-p\fR
-option).
-.SH SEE ALSO
-pppd(8)
diff --git a/mdk-stage1/ppp/pppdump/pppdump.c b/mdk-stage1/ppp/pppdump/pppdump.c
deleted file mode 100644
index a8e69d4bf..000000000
--- a/mdk-stage1/ppp/pppdump/pppdump.c
+++ /dev/null
@@ -1,502 +0,0 @@
-/*
- * pppdump - print out the contents of a record file generated by
- * pppd in readable form.
- *
- * Copyright (C) 1999 Paul Mackerras. All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms. The name of the author
- * may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-#include <stdio.h>
-#include <unistd.h>
-#include <time.h>
-#include <sys/types.h>
-#include "ppp_defs.h"
-#include "ppp-comp.h"
-
-int hexmode;
-int pppmode;
-int reverse;
-int decompress;
-int mru = 1500;
-int abs_times;
-time_t start_time;
-int start_time_tenths;
-int tot_sent, tot_rcvd;
-
-extern int optind;
-extern char *optarg;
-
-main(ac, av)
- int ac;
- char **av;
-{
- int i;
- char *p;
- FILE *f;
-
- while ((i = getopt(ac, av, "hprdm:a")) != -1) {
- switch (i) {
- case 'h':
- hexmode = 1;
- break;
- case 'p':
- pppmode = 1;
- break;
- case 'r':
- reverse = 1;
- break;
- case 'd':
- decompress = 1;
- break;
- case 'm':
- mru = atoi(optarg);
- break;
- case 'a':
- abs_times = 1;
- break;
- default:
- fprintf(stderr, "Usage: %s [-h | -p[d]] [-r] [-m mru] [-a] [file ...]\n", av[0]);
- exit(1);
- }
- }
- if (optind >= ac)
- dumplog(stdin);
- else {
- for (i = optind; i < ac; ++i) {
- p = av[i];
- if ((f = fopen(p, "r")) == NULL) {
- perror(p);
- exit(1);
- }
- if (pppmode)
- dumpppp(f);
- else
- dumplog(f);
- fclose(f);
- }
- }
- exit(0);
-}
-
-dumplog(f)
- FILE *f;
-{
- int c, n, k, col;
- int nb, c2;
- unsigned char buf[16];
-
- while ((c = getc(f)) != EOF) {
- switch (c) {
- case 1:
- case 2:
- if (reverse)
- c = 3 - c;
- printf("%s %c", c==1? "sent": "rcvd", hexmode? ' ': '"');
- col = 6;
- n = getc(f);
- n = (n << 8) + getc(f);
- *(c==1? &tot_sent: &tot_rcvd) += n;
- nb = 0;
- for (; n > 0; --n) {
- c = getc(f);
- if (c == EOF) {
- printf("\nEOF\n");
- exit(0);
- }
- if (hexmode) {
- if (nb >= 16) {
- printf(" ");
- for (k = 0; k < nb; ++k) {
- c2 = buf[k];
- putchar((' ' <= c2 && c2 <= '~')? c2: '.');
- }
- printf("\n ");
- nb = 0;
- }
- buf[nb++] = c;
- printf(" %.2x", c);
- } else {
- k = (' ' <= c && c <= '~')? (c != '\\' && c != '"')? 1: 2: 3;
- if ((col += k) >= 78) {
- printf("\n ");
- col = 6 + k;
- }
- switch (k) {
- case 1:
- putchar(c);
- break;
- case 2:
- printf("\\%c", c);
- break;
- case 3:
- printf("\\%.2x", c);
- break;
- }
- }
- }
- if (hexmode) {
- for (k = nb; k < 16; ++k)
- printf(" ");
- printf(" ");
- for (k = 0; k < nb; ++k) {
- c2 = buf[k];
- putchar((' ' <= c2 && c2 <= '~')? c2: '.');
- }
- } else
- putchar('"');
- printf("\n");
- break;
- case 3:
- case 4:
- printf("end %s\n", c==3? "send": "recv");
- break;
- case 5:
- case 6:
- case 7:
- show_time(f, c);
- break;
- default:
- printf("?%.2x\n");
- }
- }
-}
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static u_short fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-struct pkt {
- int cnt;
- int esc;
- int flags;
- struct compressor *comp;
- void *state;
- unsigned char buf[8192];
-} spkt, rpkt;
-
-/* Values for flags */
-#define CCP_ISUP 1
-#define CCP_ERROR 2
-#define CCP_FATALERROR 4
-#define CCP_ERR (CCP_ERROR | CCP_FATALERROR)
-#define CCP_DECOMP_RUN 8
-
-unsigned char dbuf[8192];
-
-dumpppp(f)
- FILE *f;
-{
- int c, n, k;
- int nb, nl, dn, proto, rv;
- char *dir, *q;
- unsigned char *p, *r, *endp;
- unsigned char *d;
- unsigned short fcs;
- struct pkt *pkt;
-
- spkt.cnt = rpkt.cnt = 0;
- spkt.esc = rpkt.esc = 0;
- while ((c = getc(f)) != EOF) {
- switch (c) {
- case 1:
- case 2:
- if (reverse)
- c = 3 - c;
- dir = c==1? "sent": "rcvd";
- pkt = c==1? &spkt: &rpkt;
- n = getc(f);
- n = (n << 8) + getc(f);
- *(c==1? &tot_sent: &tot_rcvd) += n;
- for (; n > 0; --n) {
- c = getc(f);
- switch (c) {
- case EOF:
- printf("\nEOF\n");
- if (spkt.cnt > 0)
- printf("[%d bytes in incomplete send packet]\n",
- spkt.cnt);
- if (rpkt.cnt > 0)
- printf("[%d bytes in incomplete recv packet]\n",
- rpkt.cnt);
- exit(0);
- case '~':
- if (pkt->cnt > 0) {
- q = dir;
- if (pkt->esc) {
- printf("%s aborted packet:\n ", dir);
- q = " ";
- }
- nb = pkt->cnt;
- p = pkt->buf;
- pkt->cnt = 0;
- pkt->esc = 0;
- if (nb <= 2) {
- printf("%s short packet [%d bytes]:", q, nb);
- for (k = 0; k < nb; ++k)
- printf(" %.2x", p[k]);
- printf("\n");
- break;
- }
- fcs = PPP_INITFCS;
- for (k = 0; k < nb; ++k)
- fcs = PPP_FCS(fcs, p[k]);
- fcs &= 0xFFFF;
- nb -= 2;
- endp = p + nb;
- r = p;
- if (r[0] == 0xff && r[1] == 3)
- r += 2;
- if ((r[0] & 1) == 0)
- ++r;
- ++r;
- if (endp - r > mru)
- printf(" ERROR: length (%d) > MRU (%d)\n",
- endp - r, mru);
- if (decompress && fcs == PPP_GOODFCS) {
- /* See if this is a CCP or compressed packet */
- d = dbuf;
- r = p;
- if (r[0] == 0xff && r[1] == 3) {
- *d++ = *r++;
- *d++ = *r++;
- }
- proto = r[0];
- if ((proto & 1) == 0)
- proto = (proto << 8) + r[1];
- if (proto == PPP_CCP) {
- handle_ccp(pkt, r + 2, endp - r - 2);
- } else if (proto == PPP_COMP) {
- if ((pkt->flags & CCP_ISUP)
- && (pkt->flags & CCP_DECOMP_RUN)
- && pkt->state
- && (pkt->flags & CCP_ERR) == 0) {
- rv = pkt->comp->decompress(pkt->state, r,
- endp - r, d, &dn);
- switch (rv) {
- case DECOMP_OK:
- p = dbuf;
- nb = d + dn - p;
- if ((d[0] & 1) == 0)
- --dn;
- --dn;
- if (dn > mru)
- printf(" ERROR: decompressed length (%d) > MRU (%d)\n", dn, mru);
- break;
- case DECOMP_ERROR:
- printf(" DECOMPRESSION ERROR\n");
- pkt->flags |= CCP_ERROR;
- break;
- case DECOMP_FATALERROR:
- printf(" FATAL DECOMPRESSION ERROR\n");
- pkt->flags |= CCP_FATALERROR;
- break;
- }
- }
- } else if (pkt->state
- && (pkt->flags & CCP_DECOMP_RUN)) {
- pkt->comp->incomp(pkt->state, r, endp - r);
- }
- }
- do {
- nl = nb < 16? nb: 16;
- printf("%s ", q);
- for (k = 0; k < nl; ++k)
- printf(" %.2x", p[k]);
- for (; k < 16; ++k)
- printf(" ");
- printf(" ");
- for (k = 0; k < nl; ++k) {
- c = p[k];
- putchar((' ' <= c && c <= '~')? c: '.');
- }
- printf("\n");
- q = " ";
- p += nl;
- nb -= nl;
- } while (nb > 0);
- if (fcs != PPP_GOODFCS)
- printf(" BAD FCS: (residue = %x)\n", fcs);
- }
- break;
- case '}':
- if (!pkt->esc) {
- pkt->esc = 1;
- break;
- }
- /* else fall through */
- default:
- if (pkt->esc) {
- c ^= 0x20;
- pkt->esc = 0;
- }
- pkt->buf[pkt->cnt++] = c;
- break;
- }
- }
- break;
- case 3:
- case 4:
- if (reverse)
- c = 7 - c;
- dir = c==3? "send": "recv";
- pkt = c==3? &spkt: &rpkt;
- printf("end %s", dir);
- if (pkt->cnt > 0)
- printf(" [%d bytes in incomplete packet]", pkt->cnt);
- printf("\n");
- break;
- case 5:
- case 6:
- case 7:
- show_time(f, c);
- break;
- default:
- printf("?%.2x\n");
- }
- }
-}
-
-extern struct compressor ppp_bsd_compress, ppp_deflate;
-
-struct compressor *compressors[] = {
-#if DO_BSD_COMPRESS
- &ppp_bsd_compress,
-#endif
-#if DO_DEFLATE
- &ppp_deflate,
-#endif
- NULL
-};
-
-handle_ccp(cp, dp, len)
- struct pkt *cp;
- u_char *dp;
- int len;
-{
- int clen;
- struct compressor **comp;
-
- if (len < CCP_HDRLEN)
- return;
- clen = CCP_LENGTH(dp);
- if (clen > len)
- return;
-
- switch (CCP_CODE(dp)) {
- case CCP_CONFACK:
- cp->flags &= ~(CCP_DECOMP_RUN | CCP_ISUP);
- if (clen < CCP_HDRLEN + CCP_OPT_MINLEN
- || clen < CCP_HDRLEN + CCP_OPT_LENGTH(dp + CCP_HDRLEN))
- break;
- dp += CCP_HDRLEN;
- clen -= CCP_HDRLEN;
- for (comp = compressors; *comp != NULL; ++comp) {
- if ((*comp)->compress_proto == dp[0]) {
- if (cp->state != NULL) {
- (*cp->comp->decomp_free)(cp->state);
- cp->state = NULL;
- }
- cp->comp = *comp;
- cp->state = (*comp)->decomp_alloc(dp, CCP_OPT_LENGTH(dp));
- cp->flags |= CCP_ISUP;
- if (cp->state != NULL
- && (*cp->comp->decomp_init)
- (cp->state, dp, clen, 0, 0, 8192, 1))
- cp->flags = (cp->flags & ~CCP_ERR) | CCP_DECOMP_RUN;
- break;
- }
- }
- break;
-
- case CCP_CONFNAK:
- case CCP_CONFREJ:
- cp->flags &= ~(CCP_DECOMP_RUN | CCP_ISUP);
- break;
-
- case CCP_RESETACK:
- if (cp->flags & CCP_ISUP) {
- if (cp->state && (cp->flags & CCP_DECOMP_RUN)) {
- (*cp->comp->decomp_reset)(cp->state);
- cp->flags &= ~CCP_ERROR;
- }
- }
- break;
- }
-}
-
-show_time(f, c)
- FILE *f;
- int c;
-{
- time_t t;
- int n;
- struct tm *tm;
-
- if (c == 7) {
- t = getc(f);
- t = (t << 8) + getc(f);
- t = (t << 8) + getc(f);
- t = (t << 8) + getc(f);
- printf("start %s", ctime(&t));
- start_time = t;
- start_time_tenths = 0;
- tot_sent = tot_rcvd = 0;
- } else {
- n = getc(f);
- if (c == 5) {
- for (c = 3; c > 0; --c)
- n = (n << 8) + getc(f);
- }
- if (abs_times) {
- n += start_time_tenths;
- start_time += n / 10;
- start_time_tenths = n % 10;
- tm = localtime(&start_time);
- printf("time %.2d:%.2d:%.2d.%d", tm->tm_hour, tm->tm_min,
- tm->tm_sec, start_time_tenths);
- printf(" (sent %d, rcvd %d)\n", tot_sent, tot_rcvd);
- } else
- printf("time %.1fs\n", (double) n / 10);
- }
-}
diff --git a/mdk-stage1/ppp/pppdump/zlib.c b/mdk-stage1/ppp/pppdump/zlib.c
deleted file mode 100644
index 5b8372719..000000000
--- a/mdk-stage1/ppp/pppdump/zlib.c
+++ /dev/null
@@ -1,4614 +0,0 @@
-/*
- * This file is derived from various .h and .c files from the zlib-0.95
- * distribution by Jean-loup Gailly and Mark Adler, with some additions
- * by Paul Mackerras to aid in implementing Deflate compression and
- * decompression for PPP packets. See zlib.h for conditions of
- * distribution and use.
- *
- * Changes that have been made include:
- * - changed functions not used outside this file to "local"
- * - added minCompression parameter to deflateInit2
- * - added Z_PACKET_FLUSH (see zlib.h for details)
- * - added inflateIncomp
- *
- * $Id$
- */
-
-
-/*+++++*/
-/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* From: zutil.h,v 1.9 1995/05/03 17:27:12 jloup Exp */
-
-#define _Z_UTIL_H
-
-#include "zlib.h"
-
-#ifdef STDC
-# include <string.h>
-#endif
-
-#ifndef local
-# define local static
-#endif
-/* compile with -Dlocal if your debugger can't find static symbols */
-
-#define FAR
-
-typedef unsigned char uch;
-typedef uch FAR uchf;
-typedef unsigned short ush;
-typedef ush FAR ushf;
-typedef unsigned long ulg;
-
-extern char *z_errmsg[]; /* indexed by 1-zlib_error */
-
-#define ERR_RETURN(strm,err) return (strm->msg=z_errmsg[1-err], err)
-/* To be used only when the state is known to be valid */
-
-#ifndef NULL
-#define NULL ((void *) 0)
-#endif
-
- /* common constants */
-
-#define DEFLATED 8
-
-#ifndef DEF_WBITS
-# define DEF_WBITS MAX_WBITS
-#endif
-/* default windowBits for decompression. MAX_WBITS is for compression only */
-
-#if MAX_MEM_LEVEL >= 8
-# define DEF_MEM_LEVEL 8
-#else
-# define DEF_MEM_LEVEL MAX_MEM_LEVEL
-#endif
-/* default memLevel */
-
-#define STORED_BLOCK 0
-#define STATIC_TREES 1
-#define DYN_TREES 2
-/* The three kinds of block type */
-
-#define MIN_MATCH 3
-#define MAX_MATCH 258
-/* The minimum and maximum match lengths */
-
- /* functions */
-
-#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
-# define HAVE_MEMCPY
-#endif
-#ifdef HAVE_MEMCPY
-# define zmemcpy memcpy
-# define zmemzero(dest, len) memset(dest, 0, len)
-#else
-# define zmemcpy(d, s, n) bcopy((s), (d), (n))
-# define zmemzero bzero
-#endif
-
-/* Diagnostic functions */
-#ifdef DEBUG_ZLIB
-# include <stdio.h>
-# ifndef verbose
-# define verbose 0
-# endif
-# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
-# define Trace(x) fprintf x
-# define Tracev(x) {if (verbose) fprintf x ;}
-# define Tracevv(x) {if (verbose>1) fprintf x ;}
-# define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
-# define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
-#else
-# define Assert(cond,msg)
-# define Trace(x)
-# define Tracev(x)
-# define Tracevv(x)
-# define Tracec(c,x)
-# define Tracecv(c,x)
-#endif
-
-
-typedef uLong (*check_func) OF((uLong check, Bytef *buf, uInt len));
-
-/* voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); */
-/* void zcfree OF((voidpf opaque, voidpf ptr)); */
-
-#define ZALLOC(strm, items, size) \
- (*((strm)->zalloc))((strm)->opaque, (items), (size))
-#define ZFREE(strm, addr, size) \
- (*((strm)->zfree))((strm)->opaque, (voidpf)(addr), (size))
-#define TRY_FREE(s, p, n) {if (p) ZFREE(s, p, n);}
-
-/* deflate.h -- internal compression state
- * Copyright (C) 1995 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-
-/*+++++*/
-/* From: deflate.h,v 1.5 1995/05/03 17:27:09 jloup Exp */
-
-/* ===========================================================================
- * Internal compression state.
- */
-
-/* Data type */
-#define BINARY 0
-#define ASCII 1
-#define UNKNOWN 2
-
-#define LENGTH_CODES 29
-/* number of length codes, not counting the special END_BLOCK code */
-
-#define LITERALS 256
-/* number of literal bytes 0..255 */
-
-#define L_CODES (LITERALS+1+LENGTH_CODES)
-/* number of Literal or Length codes, including the END_BLOCK code */
-
-#define D_CODES 30
-/* number of distance codes */
-
-#define BL_CODES 19
-/* number of codes used to transfer the bit lengths */
-
-#define HEAP_SIZE (2*L_CODES+1)
-/* maximum heap size */
-
-#define MAX_BITS 15
-/* All codes must not exceed MAX_BITS bits */
-
-#define INIT_STATE 42
-#define BUSY_STATE 113
-#define FLUSH_STATE 124
-#define FINISH_STATE 666
-/* Stream status */
-
-
-/* Data structure describing a single value and its code string. */
-typedef struct ct_data_s {
- union {
- ush freq; /* frequency count */
- ush code; /* bit string */
- } fc;
- union {
- ush dad; /* father node in Huffman tree */
- ush len; /* length of bit string */
- } dl;
-} FAR ct_data;
-
-#define Freq fc.freq
-#define Code fc.code
-#define Dad dl.dad
-#define Len dl.len
-
-typedef struct static_tree_desc_s static_tree_desc;
-
-typedef struct tree_desc_s {
- ct_data *dyn_tree; /* the dynamic tree */
- int max_code; /* largest code with non zero frequency */
- static_tree_desc *stat_desc; /* the corresponding static tree */
-} FAR tree_desc;
-
-typedef ush Pos;
-typedef Pos FAR Posf;
-typedef unsigned IPos;
-
-/* A Pos is an index in the character window. We use short instead of int to
- * save space in the various tables. IPos is used only for parameter passing.
- */
-
-typedef struct deflate_state {
- z_stream *strm; /* pointer back to this zlib stream */
- int status; /* as the name implies */
- Bytef *pending_buf; /* output still pending */
- Bytef *pending_out; /* next pending byte to output to the stream */
- int pending; /* nb of bytes in the pending buffer */
- uLong adler; /* adler32 of uncompressed data */
- int noheader; /* suppress zlib header and adler32 */
- Byte data_type; /* UNKNOWN, BINARY or ASCII */
- Byte method; /* STORED (for zip only) or DEFLATED */
- int minCompr; /* min size decrease for Z_FLUSH_NOSTORE */
-
- /* used by deflate.c: */
-
- uInt w_size; /* LZ77 window size (32K by default) */
- uInt w_bits; /* log2(w_size) (8..16) */
- uInt w_mask; /* w_size - 1 */
-
- Bytef *window;
- /* Sliding window. Input bytes are read into the second half of the window,
- * and move to the first half later to keep a dictionary of at least wSize
- * bytes. With this organization, matches are limited to a distance of
- * wSize-MAX_MATCH bytes, but this ensures that IO is always
- * performed with a length multiple of the block size. Also, it limits
- * the window size to 64K, which is quite useful on MSDOS.
- * To do: use the user input buffer as sliding window.
- */
-
- ulg window_size;
- /* Actual size of window: 2*wSize, except when the user input buffer
- * is directly used as sliding window.
- */
-
- Posf *prev;
- /* Link to older string with same hash index. To limit the size of this
- * array to 64K, this link is maintained only for the last 32K strings.
- * An index in this array is thus a window index modulo 32K.
- */
-
- Posf *head; /* Heads of the hash chains or NIL. */
-
- uInt ins_h; /* hash index of string to be inserted */
- uInt hash_size; /* number of elements in hash table */
- uInt hash_bits; /* log2(hash_size) */
- uInt hash_mask; /* hash_size-1 */
-
- uInt hash_shift;
- /* Number of bits by which ins_h must be shifted at each input
- * step. It must be such that after MIN_MATCH steps, the oldest
- * byte no longer takes part in the hash key, that is:
- * hash_shift * MIN_MATCH >= hash_bits
- */
-
- long block_start;
- /* Window position at the beginning of the current output block. Gets
- * negative when the window is moved backwards.
- */
-
- uInt match_length; /* length of best match */
- IPos prev_match; /* previous match */
- int match_available; /* set if previous match exists */
- uInt strstart; /* start of string to insert */
- uInt match_start; /* start of matching string */
- uInt lookahead; /* number of valid bytes ahead in window */
-
- uInt prev_length;
- /* Length of the best match at previous step. Matches not greater than this
- * are discarded. This is used in the lazy match evaluation.
- */
-
- uInt max_chain_length;
- /* To speed up deflation, hash chains are never searched beyond this
- * length. A higher limit improves compression ratio but degrades the
- * speed.
- */
-
- uInt max_lazy_match;
- /* Attempt to find a better match only when the current match is strictly
- * smaller than this value. This mechanism is used only for compression
- * levels >= 4.
- */
-# define max_insert_length max_lazy_match
- /* Insert new strings in the hash table only if the match length is not
- * greater than this length. This saves time but degrades compression.
- * max_insert_length is used only for compression levels <= 3.
- */
-
- int level; /* compression level (1..9) */
- int strategy; /* favor or force Huffman coding*/
-
- uInt good_match;
- /* Use a faster search when the previous match is longer than this */
-
- int nice_match; /* Stop searching when current match exceeds this */
-
- /* used by trees.c: */
- /* Didn't use ct_data typedef below to supress compiler warning */
- struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
- struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
- struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
-
- struct tree_desc_s l_desc; /* desc. for literal tree */
- struct tree_desc_s d_desc; /* desc. for distance tree */
- struct tree_desc_s bl_desc; /* desc. for bit length tree */
-
- ush bl_count[MAX_BITS+1];
- /* number of codes at each bit length for an optimal tree */
-
- int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
- int heap_len; /* number of elements in the heap */
- int heap_max; /* element of largest frequency */
- /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
- * The same heap array is used to build all trees.
- */
-
- uch depth[2*L_CODES+1];
- /* Depth of each subtree used as tie breaker for trees of equal frequency
- */
-
- uchf *l_buf; /* buffer for literals or lengths */
-
- uInt lit_bufsize;
- /* Size of match buffer for literals/lengths. There are 4 reasons for
- * limiting lit_bufsize to 64K:
- * - frequencies can be kept in 16 bit counters
- * - if compression is not successful for the first block, all input
- * data is still in the window so we can still emit a stored block even
- * when input comes from standard input. (This can also be done for
- * all blocks if lit_bufsize is not greater than 32K.)
- * - if compression is not successful for a file smaller than 64K, we can
- * even emit a stored file instead of a stored block (saving 5 bytes).
- * This is applicable only for zip (not gzip or zlib).
- * - creating new Huffman trees less frequently may not provide fast
- * adaptation to changes in the input data statistics. (Take for
- * example a binary file with poorly compressible code followed by
- * a highly compressible string table.) Smaller buffer sizes give
- * fast adaptation but have of course the overhead of transmitting
- * trees more frequently.
- * - I can't count above 4
- */
-
- uInt last_lit; /* running index in l_buf */
-
- ushf *d_buf;
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
- * the same number of elements. To use different lengths, an extra flag
- * array would be necessary.
- */
-
- ulg opt_len; /* bit length of current block with optimal trees */
- ulg static_len; /* bit length of current block with static trees */
- ulg compressed_len; /* total bit length of compressed file */
- uInt matches; /* number of string matches in current block */
- int last_eob_len; /* bit length of EOB code for last block */
-
-#ifdef DEBUG_ZLIB
- ulg bits_sent; /* bit length of the compressed data */
-#endif
-
- ush bi_buf;
- /* Output buffer. bits are inserted starting at the bottom (least
- * significant bits).
- */
- int bi_valid;
- /* Number of valid bits in bi_buf. All bits above the last valid bit
- * are always zero.
- */
-
- uInt blocks_in_packet;
- /* Number of blocks produced since the last time Z_PACKET_FLUSH
- * was used.
- */
-
-} FAR deflate_state;
-
-/* Output a byte on the stream.
- * IN assertion: there is enough room in pending_buf.
- */
-#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
-
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
-/* In order to simplify the code, particularly on 16 bit machines, match
- * distances are limited to MAX_DIST instead of WSIZE.
- */
-
- /* in trees.c */
-local void ct_init OF((deflate_state *s));
-local int ct_tally OF((deflate_state *s, int dist, int lc));
-local ulg ct_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
- int flush));
-local void ct_align OF((deflate_state *s));
-local void ct_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
- int eof));
-local void ct_stored_type_only OF((deflate_state *s));
-
-
-/*+++++*/
-/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * ALGORITHM
- *
- * The "deflation" process depends on being able to identify portions
- * of the input text which are identical to earlier input (within a
- * sliding window trailing behind the input currently being processed).
- *
- * The most straightforward technique turns out to be the fastest for
- * most input files: try all possible matches and select the longest.
- * The key feature of this algorithm is that insertions into the string
- * dictionary are very simple and thus fast, and deletions are avoided
- * completely. Insertions are performed at each input character, whereas
- * string matches are performed only when the previous match ends. So it
- * is preferable to spend more time in matches to allow very fast string
- * insertions and avoid deletions. The matching algorithm for small
- * strings is inspired from that of Rabin & Karp. A brute force approach
- * is used to find longer strings when a small match has been found.
- * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze
- * (by Leonid Broukhis).
- * A previous version of this file used a more sophisticated algorithm
- * (by Fiala and Greene) which is guaranteed to run in linear amortized
- * time, but has a larger average cost, uses more memory and is patented.
- * However the F&G algorithm may be faster for some highly redundant
- * files if the parameter max_chain_length (described below) is too large.
- *
- * ACKNOWLEDGEMENTS
- *
- * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and
- * I found it in 'freeze' written by Leonid Broukhis.
- * Thanks to many people for bug reports and testing.
- *
- * REFERENCES
- *
- * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
- * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
- *
- * A description of the Rabin and Karp algorithm is given in the book
- * "Algorithms" by R. Sedgewick, Addison-Wesley, p252.
- *
- * Fiala,E.R., and Greene,D.H.
- * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595
- *
- */
-
-/* From: deflate.c,v 1.8 1995/05/03 17:27:08 jloup Exp */
-
-local char zlib_copyright[] = " deflate Copyright 1995 Jean-loup Gailly ";
-/*
- If you use the zlib library in a product, an acknowledgment is welcome
- in the documentation of your product. If for some reason you cannot
- include such an acknowledgment, I would appreciate that you keep this
- copyright string in the executable of your product.
- */
-
-#define NIL 0
-/* Tail of hash chains */
-
-#ifndef TOO_FAR
-# define TOO_FAR 4096
-#endif
-/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
-
-#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
-/* Minimum amount of lookahead, except at the end of the input file.
- * See deflate.c for comments about the MIN_MATCH+1.
- */
-
-/* Values for max_lazy_match, good_match and max_chain_length, depending on
- * the desired pack level (0..9). The values given below have been tuned to
- * exclude worst case performance for pathological files. Better values may be
- * found for specific files.
- */
-
-typedef struct config_s {
- ush good_length; /* reduce lazy search above this match length */
- ush max_lazy; /* do not perform lazy search above this match length */
- ush nice_length; /* quit search above this match length */
- ush max_chain;
-} config;
-
-local config configuration_table[10] = {
-/* good lazy nice chain */
-/* 0 */ {0, 0, 0, 0}, /* store only */
-/* 1 */ {4, 4, 8, 4}, /* maximum speed, no lazy matches */
-/* 2 */ {4, 5, 16, 8},
-/* 3 */ {4, 6, 32, 32},
-
-/* 4 */ {4, 4, 16, 16}, /* lazy matches */
-/* 5 */ {8, 16, 32, 32},
-/* 6 */ {8, 16, 128, 128},
-/* 7 */ {8, 32, 128, 256},
-/* 8 */ {32, 128, 258, 1024},
-/* 9 */ {32, 258, 258, 4096}}; /* maximum compression */
-
-/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
- * For deflate_fast() (levels <= 3) good is ignored and lazy has a different
- * meaning.
- */
-
-#define EQUAL 0
-/* result of memcmp for equal strings */
-
-/* ===========================================================================
- * Prototypes for local functions.
- */
-
-local void fill_window OF((deflate_state *s));
-local int deflate_fast OF((deflate_state *s, int flush));
-local int deflate_slow OF((deflate_state *s, int flush));
-local void lm_init OF((deflate_state *s));
-local int longest_match OF((deflate_state *s, IPos cur_match));
-local void putShortMSB OF((deflate_state *s, uInt b));
-local void flush_pending OF((z_stream *strm));
-local int read_buf OF((z_stream *strm, charf *buf, unsigned size));
-#ifdef ASMV
- void match_init OF((void)); /* asm code initialization */
-#endif
-
-#ifdef DEBUG_ZLIB
-local void check_match OF((deflate_state *s, IPos start, IPos match,
- int length));
-#endif
-
-
-/* ===========================================================================
- * Update a hash value with the given input byte
- * IN assertion: all calls to to UPDATE_HASH are made with consecutive
- * input characters, so that a running hash key can be computed from the
- * previous key instead of complete recalculation each time.
- */
-#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
-
-
-/* ===========================================================================
- * Insert string str in the dictionary and set match_head to the previous head
- * of the hash chain (the most recent string with same hash key). Return
- * the previous length of the hash chain.
- * IN assertion: all calls to to INSERT_STRING are made with consecutive
- * input characters and the first MIN_MATCH bytes of str are valid
- * (except for the last MIN_MATCH-1 bytes of the input file).
- */
-#define INSERT_STRING(s, str, match_head) \
- (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \
- s->prev[(str) & s->w_mask] = match_head = s->head[s->ins_h], \
- s->head[s->ins_h] = (str))
-
-/* ===========================================================================
- * Initialize the hash table (avoiding 64K overflow for 16 bit systems).
- * prev[] will be initialized on the fly.
- */
-#define CLEAR_HASH(s) \
- s->head[s->hash_size-1] = NIL; \
- zmemzero((charf *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
-
-/* ========================================================================= */
-int deflateInit (strm, level)
- z_stream *strm;
- int level;
-{
- return deflateInit2 (strm, level, DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
- 0, 0);
- /* To do: ignore strm->next_in if we use it as window */
-}
-
-/* ========================================================================= */
-int deflateInit2 (strm, level, method, windowBits, memLevel,
- strategy, minCompression)
- z_stream *strm;
- int level;
- int method;
- int windowBits;
- int memLevel;
- int strategy;
- int minCompression;
-{
- deflate_state *s;
- int noheader = 0;
-
- if (strm == Z_NULL) return Z_STREAM_ERROR;
-
- strm->msg = Z_NULL;
-/* if (strm->zalloc == Z_NULL) strm->zalloc = zcalloc; */
-/* if (strm->zfree == Z_NULL) strm->zfree = zcfree; */
-
- if (level == Z_DEFAULT_COMPRESSION) level = 6;
-
- if (windowBits < 0) { /* undocumented feature: suppress zlib header */
- noheader = 1;
- windowBits = -windowBits;
- }
- if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != DEFLATED ||
- windowBits < 8 || windowBits > 15 || level < 1 || level > 9) {
- return Z_STREAM_ERROR;
- }
- s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state));
- if (s == Z_NULL) return Z_MEM_ERROR;
- strm->state = (struct internal_state FAR *)s;
- s->strm = strm;
-
- s->noheader = noheader;
- s->w_bits = windowBits;
- s->w_size = 1 << s->w_bits;
- s->w_mask = s->w_size - 1;
-
- s->hash_bits = memLevel + 7;
- s->hash_size = 1 << s->hash_bits;
- s->hash_mask = s->hash_size - 1;
- s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
-
- s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
- s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos));
- s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos));
-
- s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
-
- s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 2*sizeof(ush));
-
- if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
- s->pending_buf == Z_NULL) {
- strm->msg = z_errmsg[1-Z_MEM_ERROR];
- deflateEnd (strm);
- return Z_MEM_ERROR;
- }
- s->d_buf = (ushf *) &(s->pending_buf[s->lit_bufsize]);
- s->l_buf = (uchf *) &(s->pending_buf[3*s->lit_bufsize]);
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
- * output size for (length,distance) codes is <= 32 bits (worst case
- * is 15+15+13=33).
- */
-
- s->level = level;
- s->strategy = strategy;
- s->method = (Byte)method;
- s->minCompr = minCompression;
- s->blocks_in_packet = 0;
-
- return deflateReset(strm);
-}
-
-/* ========================================================================= */
-int deflateReset (strm)
- z_stream *strm;
-{
- deflate_state *s;
-
- if (strm == Z_NULL || strm->state == Z_NULL ||
- strm->zalloc == Z_NULL || strm->zfree == Z_NULL) return Z_STREAM_ERROR;
-
- strm->total_in = strm->total_out = 0;
- strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */
- strm->data_type = Z_UNKNOWN;
-
- s = (deflate_state *)strm->state;
- s->pending = 0;
- s->pending_out = s->pending_buf;
-
- if (s->noheader < 0) {
- s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */
- }
- s->status = s->noheader ? BUSY_STATE : INIT_STATE;
- s->adler = 1;
-
- ct_init(s);
- lm_init(s);
-
- return Z_OK;
-}
-
-/* =========================================================================
- * Put a short in the pending buffer. The 16-bit value is put in MSB order.
- * IN assertion: the stream state is correct and there is enough room in
- * pending_buf.
- */
-local void putShortMSB (s, b)
- deflate_state *s;
- uInt b;
-{
- put_byte(s, (Byte)(b >> 8));
- put_byte(s, (Byte)(b & 0xff));
-}
-
-/* =========================================================================
- * Flush as much pending output as possible.
- */
-local void flush_pending(strm)
- z_stream *strm;
-{
- deflate_state *state = (deflate_state *) strm->state;
- unsigned len = state->pending;
-
- if (len > strm->avail_out) len = strm->avail_out;
- if (len == 0) return;
-
- if (strm->next_out != NULL) {
- zmemcpy(strm->next_out, state->pending_out, len);
- strm->next_out += len;
- }
- state->pending_out += len;
- strm->total_out += len;
- strm->avail_out -= len;
- state->pending -= len;
- if (state->pending == 0) {
- state->pending_out = state->pending_buf;
- }
-}
-
-/* ========================================================================= */
-int deflate (strm, flush)
- z_stream *strm;
- int flush;
-{
- deflate_state *state = (deflate_state *) strm->state;
-
- if (strm == Z_NULL || state == Z_NULL) return Z_STREAM_ERROR;
-
- if (strm->next_in == Z_NULL && strm->avail_in != 0) {
- ERR_RETURN(strm, Z_STREAM_ERROR);
- }
- if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR);
-
- state->strm = strm; /* just in case */
-
- /* Write the zlib header */
- if (state->status == INIT_STATE) {
-
- uInt header = (DEFLATED + ((state->w_bits-8)<<4)) << 8;
- uInt level_flags = (state->level-1) >> 1;
-
- if (level_flags > 3) level_flags = 3;
- header |= (level_flags << 6);
- header += 31 - (header % 31);
-
- state->status = BUSY_STATE;
- putShortMSB(state, header);
- }
-
- /* Flush as much pending output as possible */
- if (state->pending != 0) {
- flush_pending(strm);
- if (strm->avail_out == 0) return Z_OK;
- }
-
- /* If we came back in here to get the last output from
- * a previous flush, we're done for now.
- */
- if (state->status == FLUSH_STATE) {
- state->status = BUSY_STATE;
- if (flush != Z_NO_FLUSH && flush != Z_FINISH)
- return Z_OK;
- }
-
- /* User must not provide more input after the first FINISH: */
- if (state->status == FINISH_STATE && strm->avail_in != 0) {
- ERR_RETURN(strm, Z_BUF_ERROR);
- }
-
- /* Start a new block or continue the current one.
- */
- if (strm->avail_in != 0 || state->lookahead != 0 ||
- (flush == Z_FINISH && state->status != FINISH_STATE)) {
- int quit;
-
- if (flush == Z_FINISH) {
- state->status = FINISH_STATE;
- }
- if (state->level <= 3) {
- quit = deflate_fast(state, flush);
- } else {
- quit = deflate_slow(state, flush);
- }
- if (quit || strm->avail_out == 0)
- return Z_OK;
- /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
- * of deflate should use the same flush parameter to make sure
- * that the flush is complete. So we don't have to output an
- * empty block here, this will be done at next call. This also
- * ensures that for a very small output buffer, we emit at most
- * one empty block.
- */
- }
-
- /* If a flush was requested, we have a little more to output now. */
- if (flush != Z_NO_FLUSH && flush != Z_FINISH
- && state->status != FINISH_STATE) {
- switch (flush) {
- case Z_PARTIAL_FLUSH:
- ct_align(state);
- break;
- case Z_PACKET_FLUSH:
- /* Output just the 3-bit `stored' block type value,
- but not a zero length. */
- ct_stored_type_only(state);
- break;
- default:
- ct_stored_block(state, (char*)0, 0L, 0);
- /* For a full flush, this empty block will be recognized
- * as a special marker by inflate_sync().
- */
- if (flush == Z_FULL_FLUSH) {
- CLEAR_HASH(state); /* forget history */
- }
- }
- flush_pending(strm);
- if (strm->avail_out == 0) {
- /* We'll have to come back to get the rest of the output;
- * this ensures we don't output a second zero-length stored
- * block (or whatever).
- */
- state->status = FLUSH_STATE;
- return Z_OK;
- }
- }
-
- Assert(strm->avail_out > 0, "bug2");
-
- if (flush != Z_FINISH) return Z_OK;
- if (state->noheader) return Z_STREAM_END;
-
- /* Write the zlib trailer (adler32) */
- putShortMSB(state, (uInt)(state->adler >> 16));
- putShortMSB(state, (uInt)(state->adler & 0xffff));
- flush_pending(strm);
- /* If avail_out is zero, the application will call deflate again
- * to flush the rest.
- */
- state->noheader = -1; /* write the trailer only once! */
- return state->pending != 0 ? Z_OK : Z_STREAM_END;
-}
-
-/* ========================================================================= */
-int deflateEnd (strm)
- z_stream *strm;
-{
- deflate_state *state = (deflate_state *) strm->state;
-
- if (strm == Z_NULL || state == Z_NULL) return Z_STREAM_ERROR;
-
- TRY_FREE(strm, state->window, state->w_size * 2 * sizeof(Byte));
- TRY_FREE(strm, state->prev, state->w_size * sizeof(Pos));
- TRY_FREE(strm, state->head, state->hash_size * sizeof(Pos));
- TRY_FREE(strm, state->pending_buf, state->lit_bufsize * 2 * sizeof(ush));
-
- ZFREE(strm, state, sizeof(deflate_state));
- strm->state = Z_NULL;
-
- return Z_OK;
-}
-
-/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read.
- */
-local int read_buf(strm, buf, size)
- z_stream *strm;
- charf *buf;
- unsigned size;
-{
- unsigned len = strm->avail_in;
- deflate_state *state = (deflate_state *) strm->state;
-
- if (len > size) len = size;
- if (len == 0) return 0;
-
- strm->avail_in -= len;
-
- if (!state->noheader) {
- state->adler = adler32(state->adler, strm->next_in, len);
- }
- zmemcpy(buf, strm->next_in, len);
- strm->next_in += len;
- strm->total_in += len;
-
- return (int)len;
-}
-
-/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */
-local void lm_init (s)
- deflate_state *s;
-{
- s->window_size = (ulg)2L*s->w_size;
-
- CLEAR_HASH(s);
-
- /* Set the default configuration parameters:
- */
- s->max_lazy_match = configuration_table[s->level].max_lazy;
- s->good_match = configuration_table[s->level].good_length;
- s->nice_match = configuration_table[s->level].nice_length;
- s->max_chain_length = configuration_table[s->level].max_chain;
-
- s->strstart = 0;
- s->block_start = 0L;
- s->lookahead = 0;
- s->match_length = MIN_MATCH-1;
- s->match_available = 0;
- s->ins_h = 0;
-#ifdef ASMV
- match_init(); /* initialize the asm code */
-#endif
-}
-
-/* ===========================================================================
- * Set match_start to the longest match starting at the given string and
- * return its length. Matches shorter or equal to prev_length are discarded,
- * in which case the result is equal to prev_length and match_start is
- * garbage.
- * IN assertions: cur_match is the head of the hash chain for the current
- * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
- */
-#ifndef ASMV
-/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
- * match.S. The code will be functionally equivalent.
- */
-local int longest_match(s, cur_match)
- deflate_state *s;
- IPos cur_match; /* current match */
-{
- unsigned chain_length = s->max_chain_length;/* max hash chain length */
- register Bytef *scan = s->window + s->strstart; /* current string */
- register Bytef *match; /* matched string */
- register int len; /* length of current match */
- int best_len = s->prev_length; /* best match length so far */
- IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
- s->strstart - (IPos)MAX_DIST(s) : NIL;
- /* Stop when cur_match becomes <= limit. To simplify the code,
- * we prevent matches with the string of window index 0.
- */
- Posf *prev = s->prev;
- uInt wmask = s->w_mask;
-
-#ifdef UNALIGNED_OK
- /* Compare two bytes at a time. Note: this is not always beneficial.
- * Try with and without -DUNALIGNED_OK to check.
- */
- register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
- register ush scan_start = *(ushf*)scan;
- register ush scan_end = *(ushf*)(scan+best_len-1);
-#else
- register Bytef *strend = s->window + s->strstart + MAX_MATCH;
- register Byte scan_end1 = scan[best_len-1];
- register Byte scan_end = scan[best_len];
-#endif
-
- /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
- * It is easy to get rid of this optimization if necessary.
- */
- Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
-
- /* Do not waste too much time if we already have a good match: */
- if (s->prev_length >= s->good_match) {
- chain_length >>= 2;
- }
- Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
-
- do {
- Assert(cur_match < s->strstart, "no future");
- match = s->window + cur_match;
-
- /* Skip to next match if the match length cannot increase
- * or if the match length is less than 2:
- */
-#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
- /* This code assumes sizeof(unsigned short) == 2. Do not use
- * UNALIGNED_OK if your compiler uses a different size.
- */
- if (*(ushf*)(match+best_len-1) != scan_end ||
- *(ushf*)match != scan_start) continue;
-
- /* It is not necessary to compare scan[2] and match[2] since they are
- * always equal when the other bytes match, given that the hash keys
- * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
- * strstart+3, +5, ... up to strstart+257. We check for insufficient
- * lookahead only every 4th comparison; the 128th check will be made
- * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
- * necessary to put more guard bytes at the end of the window, or
- * to check more often for insufficient lookahead.
- */
- Assert(scan[2] == match[2], "scan[2]?");
- scan++, match++;
- do {
- } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
- scan < strend);
- /* The funny "do {}" generates better code on most compilers */
-
- /* Here, scan <= window+strstart+257 */
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
- if (*scan == *match) scan++;
-
- len = (MAX_MATCH - 1) - (int)(strend-scan);
- scan = strend - (MAX_MATCH-1);
-
-#else /* UNALIGNED_OK */
-
- if (match[best_len] != scan_end ||
- match[best_len-1] != scan_end1 ||
- *match != *scan ||
- *++match != scan[1]) continue;
-
- /* The check at best_len-1 can be removed because it will be made
- * again later. (This heuristic is not always a win.)
- * It is not necessary to compare scan[2] and match[2] since they
- * are always equal when the other bytes match, given that
- * the hash keys are equal and that HASH_BITS >= 8.
- */
- scan += 2, match++;
- Assert(*scan == *match, "match[2]?");
-
- /* We check for insufficient lookahead only every 8th comparison;
- * the 256th check will be made at strstart+258.
- */
- do {
- } while (*++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- *++scan == *++match && *++scan == *++match &&
- scan < strend);
-
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
-
- len = MAX_MATCH - (int)(strend - scan);
- scan = strend - MAX_MATCH;
-
-#endif /* UNALIGNED_OK */
-
- if (len > best_len) {
- s->match_start = cur_match;
- best_len = len;
- if (len >= s->nice_match) break;
-#ifdef UNALIGNED_OK
- scan_end = *(ushf*)(scan+best_len-1);
-#else
- scan_end1 = scan[best_len-1];
- scan_end = scan[best_len];
-#endif
- }
- } while ((cur_match = prev[cur_match & wmask]) > limit
- && --chain_length != 0);
-
- return best_len;
-}
-#endif /* ASMV */
-
-#ifdef DEBUG_ZLIB
-/* ===========================================================================
- * Check that the match at match_start is indeed a match.
- */
-local void check_match(s, start, match, length)
- deflate_state *s;
- IPos start, match;
- int length;
-{
- /* check that the match is indeed a match */
- if (memcmp((charf *)s->window + match,
- (charf *)s->window + start, length) != EQUAL) {
- fprintf(stderr,
- " start %u, match %u, length %d\n",
- start, match, length);
- do { fprintf(stderr, "%c%c", s->window[match++],
- s->window[start++]); } while (--length != 0);
- z_error("invalid match");
- }
- if (verbose > 1) {
- fprintf(stderr,"\\[%d,%d]", start-match, length);
- do { putc(s->window[start++], stderr); } while (--length != 0);
- }
-}
-#else
-# define check_match(s, start, match, length)
-#endif
-
-/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- * At least one byte has been read, or avail_in == 0; reads are
- * performed for at least two bytes (required for the zip translate_eol
- * option -- not supported here).
- */
-local void fill_window(s)
- deflate_state *s;
-{
- register unsigned n, m;
- register Posf *p;
- unsigned more; /* Amount of free space at the end of the window. */
- uInt wsize = s->w_size;
-
- do {
- more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-
- /* Deal with !@#$% 64K limit: */
- if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
- more = wsize;
- } else if (more == (unsigned)(-1)) {
- /* Very unlikely, but possible on 16 bit machine if strstart == 0
- * and lookahead == 1 (input done one byte at time)
- */
- more--;
-
- /* If the window is almost full and there is insufficient lookahead,
- * move the upper half to the lower one to make room in the upper half.
- */
- } else if (s->strstart >= wsize+MAX_DIST(s)) {
-
- /* By the IN assertion, the window is not empty so we can't confuse
- * more == 0 with more == 64K on a 16 bit machine.
- */
- zmemcpy((charf *)s->window, (charf *)s->window+wsize,
- (unsigned)wsize);
- s->match_start -= wsize;
- s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
-
- s->block_start -= (long) wsize;
-
- /* Slide the hash table (could be avoided with 32 bit values
- at the expense of memory usage):
- */
- n = s->hash_size;
- p = &s->head[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- } while (--n);
-
- n = wsize;
- p = &s->prev[n];
- do {
- m = *--p;
- *p = (Pos)(m >= wsize ? m-wsize : NIL);
- /* If n is not on any hash chain, prev[n] is garbage but
- * its value will never be used.
- */
- } while (--n);
-
- more += wsize;
- }
- if (s->strm->avail_in == 0) return;
-
- /* If there was no sliding:
- * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
- * more == window_size - lookahead - strstart
- * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
- * => more >= window_size - 2*WSIZE + 2
- * In the BIG_MEM or MMAP case (not yet supported),
- * window_size == input_size + MIN_LOOKAHEAD &&
- * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
- * Otherwise, window_size == 2*WSIZE so more >= 2.
- * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
- */
- Assert(more >= 2, "more < 2");
-
- n = read_buf(s->strm, (charf *)s->window + s->strstart + s->lookahead,
- more);
- s->lookahead += n;
-
- /* Initialize the hash value now that we have some input: */
- if (s->lookahead >= MIN_MATCH) {
- s->ins_h = s->window[s->strstart];
- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
- Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
- }
- /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
- * but this is not important since only literal bytes will be emitted.
- */
-
- } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-}
-
-/* ===========================================================================
- * Flush the current block, with given end-of-file flag.
- * IN assertion: strstart is set to the end of the current match.
- */
-#define FLUSH_BLOCK_ONLY(s, flush) { \
- ct_flush_block(s, (s->block_start >= 0L ? \
- (charf *)&s->window[(unsigned)s->block_start] : \
- (charf *)Z_NULL), (long)s->strstart - s->block_start, (flush)); \
- s->block_start = s->strstart; \
- flush_pending(s->strm); \
- Tracev((stderr,"[FLUSH]")); \
-}
-
-/* Same but force premature exit if necessary. */
-#define FLUSH_BLOCK(s, flush) { \
- FLUSH_BLOCK_ONLY(s, flush); \
- if (s->strm->avail_out == 0) return 1; \
-}
-
-/* ===========================================================================
- * Compress as much as possible from the input stream, return true if
- * processing was terminated prematurely (no more input or output space).
- * This function does not perform lazy evaluationof matches and inserts
- * new strings in the dictionary only for unmatched strings or for short
- * matches. It is used only for the fast compression options.
- */
-local int deflate_fast(s, flush)
- deflate_state *s;
- int flush;
-{
- IPos hash_head = NIL; /* head of the hash chain */
- int bflush; /* set if current block must be flushed */
-
- s->prev_length = MIN_MATCH-1;
-
- for (;;) {
- /* Make sure that we always have enough lookahead, except
- * at the end of the input file. We need MAX_MATCH bytes
- * for the next match, plus MIN_MATCH bytes to insert the
- * string following the next match.
- */
- if (s->lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) return 1;
-
- if (s->lookahead == 0) break; /* flush the current block */
- }
-
- /* Insert the string window[strstart .. strstart+2] in the
- * dictionary, and set hash_head to the head of the hash chain:
- */
- if (s->lookahead >= MIN_MATCH) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
-
- /* Find the longest match, discarding those <= prev_length.
- * At this point we have always match_length < MIN_MATCH
- */
- if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) {
- /* To simplify the code, we prevent matches with the string
- * of window index 0 (in particular we have to avoid a match
- * of the string with itself at the start of the input file).
- */
- if (s->strategy != Z_HUFFMAN_ONLY) {
- s->match_length = longest_match (s, hash_head);
- }
- /* longest_match() sets match_start */
-
- if (s->match_length > s->lookahead) s->match_length = s->lookahead;
- }
- if (s->match_length >= MIN_MATCH) {
- check_match(s, s->strstart, s->match_start, s->match_length);
-
- bflush = ct_tally(s, s->strstart - s->match_start,
- s->match_length - MIN_MATCH);
-
- s->lookahead -= s->match_length;
-
- /* Insert new strings in the hash table only if the match length
- * is not too large. This saves time but degrades compression.
- */
- if (s->match_length <= s->max_insert_length &&
- s->lookahead >= MIN_MATCH) {
- s->match_length--; /* string at strstart already in hash table */
- do {
- s->strstart++;
- INSERT_STRING(s, s->strstart, hash_head);
- /* strstart never exceeds WSIZE-MAX_MATCH, so there are
- * always MIN_MATCH bytes ahead.
- */
- } while (--s->match_length != 0);
- s->strstart++;
- } else {
- s->strstart += s->match_length;
- s->match_length = 0;
- s->ins_h = s->window[s->strstart];
- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
-#if MIN_MATCH != 3
- Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
- /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
- * matter since it will be recomputed at next deflate call.
- */
- }
- } else {
- /* No match, output a literal byte */
- Tracevv((stderr,"%c", s->window[s->strstart]));
- bflush = ct_tally (s, 0, s->window[s->strstart]);
- s->lookahead--;
- s->strstart++;
- }
- if (bflush) FLUSH_BLOCK(s, Z_NO_FLUSH);
- }
- FLUSH_BLOCK(s, flush);
- return 0; /* normal exit */
-}
-
-/* ===========================================================================
- * Same as above, but achieves better compression. We use a lazy
- * evaluation for matches: a match is finally adopted only if there is
- * no better match at the next window position.
- */
-local int deflate_slow(s, flush)
- deflate_state *s;
- int flush;
-{
- IPos hash_head = NIL; /* head of hash chain */
- int bflush; /* set if current block must be flushed */
-
- /* Process the input block. */
- for (;;) {
- /* Make sure that we always have enough lookahead, except
- * at the end of the input file. We need MAX_MATCH bytes
- * for the next match, plus MIN_MATCH bytes to insert the
- * string following the next match.
- */
- if (s->lookahead < MIN_LOOKAHEAD) {
- fill_window(s);
- if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) return 1;
-
- if (s->lookahead == 0) break; /* flush the current block */
- }
-
- /* Insert the string window[strstart .. strstart+2] in the
- * dictionary, and set hash_head to the head of the hash chain:
- */
- if (s->lookahead >= MIN_MATCH) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
-
- /* Find the longest match, discarding those <= prev_length.
- */
- s->prev_length = s->match_length, s->prev_match = s->match_start;
- s->match_length = MIN_MATCH-1;
-
- if (hash_head != NIL && s->prev_length < s->max_lazy_match &&
- s->strstart - hash_head <= MAX_DIST(s)) {
- /* To simplify the code, we prevent matches with the string
- * of window index 0 (in particular we have to avoid a match
- * of the string with itself at the start of the input file).
- */
- if (s->strategy != Z_HUFFMAN_ONLY) {
- s->match_length = longest_match (s, hash_head);
- }
- /* longest_match() sets match_start */
- if (s->match_length > s->lookahead) s->match_length = s->lookahead;
-
- if (s->match_length <= 5 && (s->strategy == Z_FILTERED ||
- (s->match_length == MIN_MATCH &&
- s->strstart - s->match_start > TOO_FAR))) {
-
- /* If prev_match is also MIN_MATCH, match_start is garbage
- * but we will ignore the current match anyway.
- */
- s->match_length = MIN_MATCH-1;
- }
- }
- /* If there was a match at the previous step and the current
- * match is not better, output the previous match:
- */
- if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) {
- uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
- /* Do not insert strings in hash table beyond this. */
-
- check_match(s, s->strstart-1, s->prev_match, s->prev_length);
-
- bflush = ct_tally(s, s->strstart -1 - s->prev_match,
- s->prev_length - MIN_MATCH);
-
- /* Insert in hash table all strings up to the end of the match.
- * strstart-1 and strstart are already inserted. If there is not
- * enough lookahead, the last two strings are not inserted in
- * the hash table.
- */
- s->lookahead -= s->prev_length-1;
- s->prev_length -= 2;
- do {
- if (++s->strstart <= max_insert) {
- INSERT_STRING(s, s->strstart, hash_head);
- }
- } while (--s->prev_length != 0);
- s->match_available = 0;
- s->match_length = MIN_MATCH-1;
- s->strstart++;
-
- if (bflush) FLUSH_BLOCK(s, Z_NO_FLUSH);
-
- } else if (s->match_available) {
- /* If there was no match at the previous position, output a
- * single literal. If there was a match but the current match
- * is longer, truncate the previous match to a single literal.
- */
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
- if (ct_tally (s, 0, s->window[s->strstart-1])) {
- FLUSH_BLOCK_ONLY(s, Z_NO_FLUSH);
- }
- s->strstart++;
- s->lookahead--;
- if (s->strm->avail_out == 0) return 1;
- } else {
- /* There is no previous match to compare with, wait for
- * the next step to decide.
- */
- s->match_available = 1;
- s->strstart++;
- s->lookahead--;
- }
- }
- Assert (flush != Z_NO_FLUSH, "no flush?");
- if (s->match_available) {
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
- ct_tally (s, 0, s->window[s->strstart-1]);
- s->match_available = 0;
- }
- FLUSH_BLOCK(s, flush);
- return 0;
-}
-
-
-/*+++++*/
-/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995 Jean-loup Gailly
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/*
- * ALGORITHM
- *
- * The "deflation" process uses several Huffman trees. The more
- * common source values are represented by shorter bit sequences.
- *
- * Each code tree is stored in a compressed form which is itself
- * a Huffman encoding of the lengths of all the code strings (in
- * ascending order by source values). The actual code strings are
- * reconstructed from the lengths in the inflate process, as described
- * in the deflate specification.
- *
- * REFERENCES
- *
- * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification".
- * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc
- *
- * Storer, James A.
- * Data Compression: Methods and Theory, pp. 49-50.
- * Computer Science Press, 1988. ISBN 0-7167-8156-5.
- *
- * Sedgewick, R.
- * Algorithms, p290.
- * Addison-Wesley, 1983. ISBN 0-201-06672-6.
- */
-
-/* From: trees.c,v 1.5 1995/05/03 17:27:12 jloup Exp */
-
-#ifdef DEBUG_ZLIB
-# include <ctype.h>
-#endif
-
-/* ===========================================================================
- * Constants
- */
-
-#define MAX_BL_BITS 7
-/* Bit length codes must not exceed MAX_BL_BITS bits */
-
-#define END_BLOCK 256
-/* end of block literal code */
-
-#define REP_3_6 16
-/* repeat previous bit length 3-6 times (2 bits of repeat count) */
-
-#define REPZ_3_10 17
-/* repeat a zero length 3-10 times (3 bits of repeat count) */
-
-#define REPZ_11_138 18
-/* repeat a zero length 11-138 times (7 bits of repeat count) */
-
-local int extra_lbits[LENGTH_CODES] /* extra bits for each length code */
- = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0};
-
-local int extra_dbits[D_CODES] /* extra bits for each distance code */
- = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};
-
-local int extra_blbits[BL_CODES]/* extra bits for each bit length code */
- = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
-
-local uch bl_order[BL_CODES]
- = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};
-/* The lengths of the bit length codes are sent in order of decreasing
- * probability, to avoid transmitting the lengths for unused bit length codes.
- */
-
-#define Buf_size (8 * 2*sizeof(char))
-/* Number of bits used within bi_buf. (bi_buf might be implemented on
- * more than 16 bits on some systems.)
- */
-
-/* ===========================================================================
- * Local data. These are initialized only once.
- * To do: initialize at compile time to be completely reentrant. ???
- */
-
-local ct_data static_ltree[L_CODES+2];
-/* The static literal tree. Since the bit lengths are imposed, there is no
- * need for the L_CODES extra codes used during heap construction. However
- * The codes 286 and 287 are needed to build a canonical tree (see ct_init
- * below).
- */
-
-local ct_data static_dtree[D_CODES];
-/* The static distance tree. (Actually a trivial tree since all codes use
- * 5 bits.)
- */
-
-local uch dist_code[512];
-/* distance codes. The first 256 values correspond to the distances
- * 3 .. 258, the last 256 values correspond to the top 8 bits of
- * the 15 bit distances.
- */
-
-local uch length_code[MAX_MATCH-MIN_MATCH+1];
-/* length code for each normalized match length (0 == MIN_MATCH) */
-
-local int base_length[LENGTH_CODES];
-/* First normalized length for each code (0 = MIN_MATCH) */
-
-local int base_dist[D_CODES];
-/* First normalized distance for each code (0 = distance of 1) */
-
-struct static_tree_desc_s {
- ct_data *static_tree; /* static tree or NULL */
- intf *extra_bits; /* extra bits for each code or NULL */
- int extra_base; /* base index for extra_bits */
- int elems; /* max number of elements in the tree */
- int max_length; /* max bit length for the codes */
-};
-
-local static_tree_desc static_l_desc =
-{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
-
-local static_tree_desc static_d_desc =
-{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS};
-
-local static_tree_desc static_bl_desc =
-{(ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS};
-
-/* ===========================================================================
- * Local (static) routines in this file.
- */
-
-local void ct_static_init OF((void));
-local void init_block OF((deflate_state *s));
-local void pqdownheap OF((deflate_state *s, ct_data *tree, int k));
-local void gen_bitlen OF((deflate_state *s, tree_desc *desc));
-local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count));
-local void build_tree OF((deflate_state *s, tree_desc *desc));
-local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code));
-local void send_tree OF((deflate_state *s, ct_data *tree, int max_code));
-local int build_bl_tree OF((deflate_state *s));
-local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
- int blcodes));
-local void compress_block OF((deflate_state *s, ct_data *ltree,
- ct_data *dtree));
-local void set_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
-local void bi_windup OF((deflate_state *s));
-local void bi_flush OF((deflate_state *s));
-local void copy_block OF((deflate_state *s, charf *buf, unsigned len,
- int header));
-
-#ifndef DEBUG_ZLIB
-# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len)
- /* Send a code of the given tree. c and tree must not have side effects */
-
-#else /* DEBUG_ZLIB */
-# define send_code(s, c, tree) \
- { if (verbose>1) fprintf(stderr,"\ncd %3d ",(c)); \
- send_bits(s, tree[c].Code, tree[c].Len); }
-#endif
-
-#define d_code(dist) \
- ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
-/* Mapping from a distance to a distance code. dist is the distance - 1 and
- * must not have side effects. dist_code[256] and dist_code[257] are never
- * used.
- */
-
-/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */
-#define put_short(s, w) { \
- put_byte(s, (uch)((w) & 0xff)); \
- put_byte(s, (uch)((ush)(w) >> 8)); \
-}
-
-/* ===========================================================================
- * Send a value on a given number of bits.
- * IN assertion: length <= 16 and value fits in length bits.
- */
-#ifdef DEBUG_ZLIB
-local void send_bits OF((deflate_state *s, int value, int length));
-
-local void send_bits(s, value, length)
- deflate_state *s;
- int value; /* value to send */
- int length; /* number of bits */
-{
- Tracev((stderr," l %2d v %4x ", length, value));
- Assert(length > 0 && length <= 15, "invalid length");
- s->bits_sent += (ulg)length;
-
- /* If not enough room in bi_buf, use (valid) bits from bi_buf and
- * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
- * unused bits in value.
- */
- if (s->bi_valid > (int)Buf_size - length) {
- s->bi_buf |= (value << s->bi_valid);
- put_short(s, s->bi_buf);
- s->bi_buf = (ush)value >> (Buf_size - s->bi_valid);
- s->bi_valid += length - Buf_size;
- } else {
- s->bi_buf |= value << s->bi_valid;
- s->bi_valid += length;
- }
-}
-#else /* !DEBUG_ZLIB */
-
-#define send_bits(s, value, length) \
-{ int len = length;\
- if (s->bi_valid > (int)Buf_size - len) {\
- int val = value;\
- s->bi_buf |= (val << s->bi_valid);\
- put_short(s, s->bi_buf);\
- s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\
- s->bi_valid += len - Buf_size;\
- } else {\
- s->bi_buf |= (value) << s->bi_valid;\
- s->bi_valid += len;\
- }\
-}
-#endif /* DEBUG_ZLIB */
-
-
-#define MAX(a,b) (a >= b ? a : b)
-/* the arguments must not have side effects */
-
-/* ===========================================================================
- * Initialize the various 'constant' tables.
- * To do: do this at compile time.
- */
-local void ct_static_init()
-{
- int n; /* iterates over tree elements */
- int bits; /* bit counter */
- int length; /* length value */
- int code; /* code value */
- int dist; /* distance index */
- ush bl_count[MAX_BITS+1];
- /* number of codes at each bit length for an optimal tree */
-
- /* Initialize the mapping length (0..255) -> length code (0..28) */
- length = 0;
- for (code = 0; code < LENGTH_CODES-1; code++) {
- base_length[code] = length;
- for (n = 0; n < (1<<extra_lbits[code]); n++) {
- length_code[length++] = (uch)code;
- }
- }
- Assert (length == 256, "ct_static_init: length != 256");
- /* Note that the length 255 (match length 258) can be represented
- * in two different ways: code 284 + 5 bits or code 285, so we
- * overwrite length_code[255] to use the best encoding:
- */
- length_code[length-1] = (uch)code;
-
- /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
- dist = 0;
- for (code = 0 ; code < 16; code++) {
- base_dist[code] = dist;
- for (n = 0; n < (1<<extra_dbits[code]); n++) {
- dist_code[dist++] = (uch)code;
- }
- }
- Assert (dist == 256, "ct_static_init: dist != 256");
- dist >>= 7; /* from now on, all distances are divided by 128 */
- for ( ; code < D_CODES; code++) {
- base_dist[code] = dist << 7;
- for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
- dist_code[256 + dist++] = (uch)code;
- }
- }
- Assert (dist == 256, "ct_static_init: 256+dist != 512");
-
- /* Construct the codes of the static literal tree */
- for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
- n = 0;
- while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++;
- while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++;
- while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++;
- while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++;
- /* Codes 286 and 287 do not exist, but we must include them in the
- * tree construction to get a canonical Huffman tree (longest code
- * all ones)
- */
- gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count);
-
- /* The static distance tree is trivial: */
- for (n = 0; n < D_CODES; n++) {
- static_dtree[n].Len = 5;
- static_dtree[n].Code = bi_reverse(n, 5);
- }
-}
-
-/* ===========================================================================
- * Initialize the tree data structures for a new zlib stream.
- */
-local void ct_init(s)
- deflate_state *s;
-{
- if (static_dtree[0].Len == 0) {
- ct_static_init(); /* To do: at compile time */
- }
-
- s->compressed_len = 0L;
-
- s->l_desc.dyn_tree = s->dyn_ltree;
- s->l_desc.stat_desc = &static_l_desc;
-
- s->d_desc.dyn_tree = s->dyn_dtree;
- s->d_desc.stat_desc = &static_d_desc;
-
- s->bl_desc.dyn_tree = s->bl_tree;
- s->bl_desc.stat_desc = &static_bl_desc;
-
- s->bi_buf = 0;
- s->bi_valid = 0;
- s->last_eob_len = 8; /* enough lookahead for inflate */
-#ifdef DEBUG_ZLIB
- s->bits_sent = 0L;
-#endif
- s->blocks_in_packet = 0;
-
- /* Initialize the first block of the first file: */
- init_block(s);
-}
-
-/* ===========================================================================
- * Initialize a new block.
- */
-local void init_block(s)
- deflate_state *s;
-{
- int n; /* iterates over tree elements */
-
- /* Initialize the trees. */
- for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0;
- for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0;
- for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-
- s->dyn_ltree[END_BLOCK].Freq = 1;
- s->opt_len = s->static_len = 0L;
- s->last_lit = s->matches = 0;
-}
-
-#define SMALLEST 1
-/* Index within the heap array of least frequent node in the Huffman tree */
-
-
-/* ===========================================================================
- * Remove the smallest element from the heap and recreate the heap with
- * one less element. Updates heap and heap_len.
- */
-#define pqremove(s, tree, top) \
-{\
- top = s->heap[SMALLEST]; \
- s->heap[SMALLEST] = s->heap[s->heap_len--]; \
- pqdownheap(s, tree, SMALLEST); \
-}
-
-/* ===========================================================================
- * Compares to subtrees, using the tree depth as tie breaker when
- * the subtrees have equal frequency. This minimizes the worst case length.
- */
-#define smaller(tree, n, m, depth) \
- (tree[n].Freq < tree[m].Freq || \
- (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
-
-/* ===========================================================================
- * Restore the heap property by moving down the tree starting at node k,
- * exchanging a node with the smallest of its two sons if necessary, stopping
- * when the heap property is re-established (each father smaller than its
- * two sons).
- */
-local void pqdownheap(s, tree, k)
- deflate_state *s;
- ct_data *tree; /* the tree to restore */
- int k; /* node to move down */
-{
- int v = s->heap[k];
- int j = k << 1; /* left son of k */
- while (j <= s->heap_len) {
- /* Set j to the smallest of the two sons: */
- if (j < s->heap_len &&
- smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
- j++;
- }
- /* Exit if v is smaller than both sons */
- if (smaller(tree, v, s->heap[j], s->depth)) break;
-
- /* Exchange v with the smallest son */
- s->heap[k] = s->heap[j]; k = j;
-
- /* And continue down the tree, setting j to the left son of k */
- j <<= 1;
- }
- s->heap[k] = v;
-}
-
-/* ===========================================================================
- * Compute the optimal bit lengths for a tree and update the total bit length
- * for the current block.
- * IN assertion: the fields freq and dad are set, heap[heap_max] and
- * above are the tree nodes sorted by increasing frequency.
- * OUT assertions: the field len is set to the optimal bit length, the
- * array bl_count contains the frequencies for each bit length.
- * The length opt_len is updated; static_len is also updated if stree is
- * not null.
- */
-local void gen_bitlen(s, desc)
- deflate_state *s;
- tree_desc *desc; /* the tree descriptor */
-{
- ct_data *tree = desc->dyn_tree;
- int max_code = desc->max_code;
- ct_data *stree = desc->stat_desc->static_tree;
- intf *extra = desc->stat_desc->extra_bits;
- int base = desc->stat_desc->extra_base;
- int max_length = desc->stat_desc->max_length;
- int h; /* heap index */
- int n, m; /* iterate over the tree elements */
- int bits; /* bit length */
- int xbits; /* extra bits */
- ush f; /* frequency */
- int overflow = 0; /* number of elements with bit length too large */
-
- for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0;
-
- /* In a first pass, compute the optimal bit lengths (which may
- * overflow in the case of the bit length tree).
- */
- tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
-
- for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
- n = s->heap[h];
- bits = tree[tree[n].Dad].Len + 1;
- if (bits > max_length) bits = max_length, overflow++;
- tree[n].Len = (ush)bits;
- /* We overwrite tree[n].Dad which is no longer needed */
-
- if (n > max_code) continue; /* not a leaf node */
-
- s->bl_count[bits]++;
- xbits = 0;
- if (n >= base) xbits = extra[n-base];
- f = tree[n].Freq;
- s->opt_len += (ulg)f * (bits + xbits);
- if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits);
- }
- if (overflow == 0) return;
-
- Trace((stderr,"\nbit length overflow\n"));
- /* This happens for example on obj2 and pic of the Calgary corpus */
-
- /* Find the first bit length which could increase: */
- do {
- bits = max_length-1;
- while (s->bl_count[bits] == 0) bits--;
- s->bl_count[bits]--; /* move one leaf down the tree */
- s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
- s->bl_count[max_length]--;
- /* The brother of the overflow item also moves one step up,
- * but this does not affect bl_count[max_length]
- */
- overflow -= 2;
- } while (overflow > 0);
-
- /* Now recompute all bit lengths, scanning in increasing frequency.
- * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
- * lengths instead of fixing only the wrong ones. This idea is taken
- * from 'ar' written by Haruhiko Okumura.)
- */
- for (bits = max_length; bits != 0; bits--) {
- n = s->bl_count[bits];
- while (n != 0) {
- m = s->heap[--h];
- if (m > max_code) continue;
- if (tree[m].Len != (unsigned) bits) {
- Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
- s->opt_len += ((long)bits - (long)tree[m].Len)
- *(long)tree[m].Freq;
- tree[m].Len = (ush)bits;
- }
- n--;
- }
- }
-}
-
-/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- * zero code length.
- */
-local void gen_codes (tree, max_code, bl_count)
- ct_data *tree; /* the tree to decorate */
- int max_code; /* largest code with non zero frequency */
- ushf *bl_count; /* number of codes at each bit length */
-{
- ush next_code[MAX_BITS+1]; /* next code value for each bit length */
- ush code = 0; /* running code value */
- int bits; /* bit index */
- int n; /* code index */
-
- /* The distribution counts are first used to generate the code values
- * without bit reversal.
- */
- for (bits = 1; bits <= MAX_BITS; bits++) {
- next_code[bits] = code = (code + bl_count[bits-1]) << 1;
- }
- /* Check that the bit counts in bl_count are consistent. The last code
- * must be all ones.
- */
- Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
- "inconsistent bit counts");
- Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
- for (n = 0; n <= max_code; n++) {
- int len = tree[n].Len;
- if (len == 0) continue;
- /* Now reverse the bits */
- tree[n].Code = bi_reverse(next_code[len]++, len);
-
- Tracec(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
- n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
- }
-}
-
-/* ===========================================================================
- * Construct one Huffman tree and assigns the code bit strings and lengths.
- * Update the total bit length for the current block.
- * IN assertion: the field freq is set for all tree elements.
- * OUT assertions: the fields len and code are set to the optimal bit length
- * and corresponding code. The length opt_len is updated; static_len is
- * also updated if stree is not null. The field max_code is set.
- */
-local void build_tree(s, desc)
- deflate_state *s;
- tree_desc *desc; /* the tree descriptor */
-{
- ct_data *tree = desc->dyn_tree;
- ct_data *stree = desc->stat_desc->static_tree;
- int elems = desc->stat_desc->elems;
- int n, m; /* iterate over heap elements */
- int max_code = -1; /* largest code with non zero frequency */
- int node; /* new node being created */
-
- /* Construct the initial heap, with least frequent element in
- * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
- * heap[0] is not used.
- */
- s->heap_len = 0, s->heap_max = HEAP_SIZE;
-
- for (n = 0; n < elems; n++) {
- if (tree[n].Freq != 0) {
- s->heap[++(s->heap_len)] = max_code = n;
- s->depth[n] = 0;
- } else {
- tree[n].Len = 0;
- }
- }
-
- /* The pkzip format requires that at least one distance code exists,
- * and that at least one bit should be sent even if there is only one
- * possible code. So to avoid special checks later on we force at least
- * two codes of non zero frequency.
- */
- while (s->heap_len < 2) {
- node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0);
- tree[node].Freq = 1;
- s->depth[node] = 0;
- s->opt_len--; if (stree) s->static_len -= stree[node].Len;
- /* node is 0 or 1 so it does not have extra bits */
- }
- desc->max_code = max_code;
-
- /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
- * establish sub-heaps of increasing lengths:
- */
- for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
-
- /* Construct the Huffman tree by repeatedly combining the least two
- * frequent nodes.
- */
- node = elems; /* next internal node of the tree */
- do {
- pqremove(s, tree, n); /* n = node of least frequency */
- m = s->heap[SMALLEST]; /* m = node of next least frequency */
-
- s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */
- s->heap[--(s->heap_max)] = m;
-
- /* Create a new node father of n and m */
- tree[node].Freq = tree[n].Freq + tree[m].Freq;
- s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1);
- tree[n].Dad = tree[m].Dad = (ush)node;
-#ifdef DUMP_BL_TREE
- if (tree == s->bl_tree) {
- fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)",
- node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq);
- }
-#endif
- /* and insert the new node in the heap */
- s->heap[SMALLEST] = node++;
- pqdownheap(s, tree, SMALLEST);
-
- } while (s->heap_len >= 2);
-
- s->heap[--(s->heap_max)] = s->heap[SMALLEST];
-
- /* At this point, the fields freq and dad are set. We can now
- * generate the bit lengths.
- */
- gen_bitlen(s, (tree_desc *)desc);
-
- /* The field len is now set, we can generate the bit codes */
- gen_codes ((ct_data *)tree, max_code, s->bl_count);
-}
-
-/* ===========================================================================
- * Scan a literal or distance tree to determine the frequencies of the codes
- * in the bit length tree.
- */
-local void scan_tree (s, tree, max_code)
- deflate_state *s;
- ct_data *tree; /* the tree to be scanned */
- int max_code; /* and its largest code of non zero frequency */
-{
- int n; /* iterates over all tree elements */
- int prevlen = -1; /* last emitted length */
- int curlen; /* length of current code */
- int nextlen = tree[0].Len; /* length of next code */
- int count = 0; /* repeat count of the current code */
- int max_count = 7; /* max repeat count */
- int min_count = 4; /* min repeat count */
-
- if (nextlen == 0) max_count = 138, min_count = 3;
- tree[max_code+1].Len = (ush)0xffff; /* guard */
-
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen; nextlen = tree[n+1].Len;
- if (++count < max_count && curlen == nextlen) {
- continue;
- } else if (count < min_count) {
- s->bl_tree[curlen].Freq += count;
- } else if (curlen != 0) {
- if (curlen != prevlen) s->bl_tree[curlen].Freq++;
- s->bl_tree[REP_3_6].Freq++;
- } else if (count <= 10) {
- s->bl_tree[REPZ_3_10].Freq++;
- } else {
- s->bl_tree[REPZ_11_138].Freq++;
- }
- count = 0; prevlen = curlen;
- if (nextlen == 0) {
- max_count = 138, min_count = 3;
- } else if (curlen == nextlen) {
- max_count = 6, min_count = 3;
- } else {
- max_count = 7, min_count = 4;
- }
- }
-}
-
-/* ===========================================================================
- * Send a literal or distance tree in compressed form, using the codes in
- * bl_tree.
- */
-local void send_tree (s, tree, max_code)
- deflate_state *s;
- ct_data *tree; /* the tree to be scanned */
- int max_code; /* and its largest code of non zero frequency */
-{
- int n; /* iterates over all tree elements */
- int prevlen = -1; /* last emitted length */
- int curlen; /* length of current code */
- int nextlen = tree[0].Len; /* length of next code */
- int count = 0; /* repeat count of the current code */
- int max_count = 7; /* max repeat count */
- int min_count = 4; /* min repeat count */
-
- /* tree[max_code+1].Len = -1; */ /* guard already set */
- if (nextlen == 0) max_count = 138, min_count = 3;
-
- for (n = 0; n <= max_code; n++) {
- curlen = nextlen; nextlen = tree[n+1].Len;
- if (++count < max_count && curlen == nextlen) {
- continue;
- } else if (count < min_count) {
- do { send_code(s, curlen, s->bl_tree); } while (--count != 0);
-
- } else if (curlen != 0) {
- if (curlen != prevlen) {
- send_code(s, curlen, s->bl_tree); count--;
- }
- Assert(count >= 3 && count <= 6, " 3_6?");
- send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
-
- } else if (count <= 10) {
- send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
-
- } else {
- send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
- }
- count = 0; prevlen = curlen;
- if (nextlen == 0) {
- max_count = 138, min_count = 3;
- } else if (curlen == nextlen) {
- max_count = 6, min_count = 3;
- } else {
- max_count = 7, min_count = 4;
- }
- }
-}
-
-/* ===========================================================================
- * Construct the Huffman tree for the bit lengths and return the index in
- * bl_order of the last bit length code to send.
- */
-local int build_bl_tree(s)
- deflate_state *s;
-{
- int max_blindex; /* index of last bit length code of non zero freq */
-
- /* Determine the bit length frequencies for literal and distance trees */
- scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code);
- scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code);
-
- /* Build the bit length tree: */
- build_tree(s, (tree_desc *)(&(s->bl_desc)));
- /* opt_len now includes the length of the tree representations, except
- * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
- */
-
- /* Determine the number of bit length codes to send. The pkzip format
- * requires that at least 4 bit length codes be sent. (appnote.txt says
- * 3 but the actual value used is 4.)
- */
- for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) {
- if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
- }
- /* Update opt_len to include the bit length tree and counts */
- s->opt_len += 3*(max_blindex+1) + 5+5+4;
- Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
- s->opt_len, s->static_len));
-
- return max_blindex;
-}
-
-/* ===========================================================================
- * Send the header for a block using dynamic Huffman trees: the counts, the
- * lengths of the bit length codes, the literal tree and the distance tree.
- * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
- */
-local void send_all_trees(s, lcodes, dcodes, blcodes)
- deflate_state *s;
- int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{
- int rank; /* index in bl_order */
-
- Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
- Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
- "too many codes");
- Tracev((stderr, "\nbl counts: "));
- send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
- send_bits(s, dcodes-1, 5);
- send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
- for (rank = 0; rank < blcodes; rank++) {
- Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
- send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
- }
- Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
-
- send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
- Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
-
- send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
- Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
-}
-
-/* ===========================================================================
- * Send a stored block
- */
-local void ct_stored_block(s, buf, stored_len, eof)
- deflate_state *s;
- charf *buf; /* input block */
- ulg stored_len; /* length of input block */
- int eof; /* true if this is the last block for a file */
-{
- send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */
- s->compressed_len = (s->compressed_len + 3 + 7) & ~7L;
- s->compressed_len += (stored_len + 4) << 3;
-
- copy_block(s, buf, (unsigned)stored_len, 1); /* with header */
-}
-
-/* Send just the `stored block' type code without any length bytes or data.
- */
-local void ct_stored_type_only(s)
- deflate_state *s;
-{
- send_bits(s, (STORED_BLOCK << 1), 3);
- bi_windup(s);
- s->compressed_len = (s->compressed_len + 3) & ~7L;
-}
-
-
-/* ===========================================================================
- * Send one empty static block to give enough lookahead for inflate.
- * This takes 10 bits, of which 7 may remain in the bit buffer.
- * The current inflate code requires 9 bits of lookahead. If the EOB
- * code for the previous block was coded on 5 bits or less, inflate
- * may have only 5+3 bits of lookahead to decode this EOB.
- * (There are no problems if the previous block is stored or fixed.)
- */
-local void ct_align(s)
- deflate_state *s;
-{
- send_bits(s, STATIC_TREES<<1, 3);
- send_code(s, END_BLOCK, static_ltree);
- s->compressed_len += 10L; /* 3 for block type, 7 for EOB */
- bi_flush(s);
- /* Of the 10 bits for the empty block, we have already sent
- * (10 - bi_valid) bits. The lookahead for the EOB of the previous
- * block was thus its length plus what we have just sent.
- */
- if (s->last_eob_len + 10 - s->bi_valid < 9) {
- send_bits(s, STATIC_TREES<<1, 3);
- send_code(s, END_BLOCK, static_ltree);
- s->compressed_len += 10L;
- bi_flush(s);
- }
- s->last_eob_len = 7;
-}
-
-/* ===========================================================================
- * Determine the best encoding for the current block: dynamic trees, static
- * trees or store, and output the encoded block to the zip file. This function
- * returns the total compressed length for the file so far.
- */
-local ulg ct_flush_block(s, buf, stored_len, flush)
- deflate_state *s;
- charf *buf; /* input block, or NULL if too old */
- ulg stored_len; /* length of input block */
- int flush; /* Z_FINISH if this is the last block for a file */
-{
- ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
- int max_blindex; /* index of last bit length code of non zero freq */
- int eof = flush == Z_FINISH;
-
- ++s->blocks_in_packet;
-
- /* Check if the file is ascii or binary */
- if (s->data_type == UNKNOWN) set_data_type(s);
-
- /* Construct the literal and distance trees */
- build_tree(s, (tree_desc *)(&(s->l_desc)));
- Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
- s->static_len));
-
- build_tree(s, (tree_desc *)(&(s->d_desc)));
- Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
- s->static_len));
- /* At this point, opt_len and static_len are the total bit lengths of
- * the compressed block data, excluding the tree representations.
- */
-
- /* Build the bit length tree for the above two trees, and get the index
- * in bl_order of the last bit length code to send.
- */
- max_blindex = build_bl_tree(s);
-
- /* Determine the best encoding. Compute first the block length in bytes */
- opt_lenb = (s->opt_len+3+7)>>3;
- static_lenb = (s->static_len+3+7)>>3;
-
- Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
- opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
- s->last_lit));
-
- if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
-
- /* If compression failed and this is the first and last block,
- * and if the .zip file can be seeked (to rewrite the local header),
- * the whole file is transformed into a stored file:
- */
-#ifdef STORED_FILE_OK
-# ifdef FORCE_STORED_FILE
- if (eof && compressed_len == 0L) /* force stored file */
-# else
- if (stored_len <= opt_lenb && eof && s->compressed_len==0L && seekable())
-# endif
- {
- /* Since LIT_BUFSIZE <= 2*WSIZE, the input data must be there: */
- if (buf == (charf*)0) error ("block vanished");
-
- copy_block(buf, (unsigned)stored_len, 0); /* without header */
- s->compressed_len = stored_len << 3;
- s->method = STORED;
- } else
-#endif /* STORED_FILE_OK */
-
- /* For Z_PACKET_FLUSH, if we don't achieve the required minimum
- * compression, and this block contains all the data since the last
- * time we used Z_PACKET_FLUSH, then just omit this block completely
- * from the output.
- */
- if (flush == Z_PACKET_FLUSH && s->blocks_in_packet == 1
- && opt_lenb > stored_len - s->minCompr) {
- s->blocks_in_packet = 0;
- /* output nothing */
- } else
-
-#ifdef FORCE_STORED
- if (buf != (char*)0) /* force stored block */
-#else
- if (stored_len+4 <= opt_lenb && buf != (char*)0)
- /* 4: two words for the lengths */
-#endif
- {
- /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
- * Otherwise we can't have processed more than WSIZE input bytes since
- * the last block flush, because compression would have been
- * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
- * transform a block into a stored block.
- */
- ct_stored_block(s, buf, stored_len, eof);
- } else
-
-#ifdef FORCE_STATIC
- if (static_lenb >= 0) /* force static trees */
-#else
- if (static_lenb == opt_lenb)
-#endif
- {
- send_bits(s, (STATIC_TREES<<1)+eof, 3);
- compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree);
- s->compressed_len += 3 + s->static_len;
- } else {
- send_bits(s, (DYN_TREES<<1)+eof, 3);
- send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
- max_blindex+1);
- compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree);
- s->compressed_len += 3 + s->opt_len;
- }
- Assert (s->compressed_len == s->bits_sent, "bad compressed size");
- init_block(s);
-
- if (eof) {
- bi_windup(s);
- s->compressed_len += 7; /* align on byte boundary */
- }
- Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
- s->compressed_len-7*eof));
-
- return s->compressed_len >> 3;
-}
-
-/* ===========================================================================
- * Save the match info and tally the frequency counts. Return true if
- * the current block must be flushed.
- */
-local int ct_tally (s, dist, lc)
- deflate_state *s;
- int dist; /* distance of matched string */
- int lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{
- s->d_buf[s->last_lit] = (ush)dist;
- s->l_buf[s->last_lit++] = (uch)lc;
- if (dist == 0) {
- /* lc is the unmatched char */
- s->dyn_ltree[lc].Freq++;
- } else {
- s->matches++;
- /* Here, lc is the match length - MIN_MATCH */
- dist--; /* dist = match distance - 1 */
- Assert((ush)dist < (ush)MAX_DIST(s) &&
- (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
- (ush)d_code(dist) < (ush)D_CODES, "ct_tally: bad match");
-
- s->dyn_ltree[length_code[lc]+LITERALS+1].Freq++;
- s->dyn_dtree[d_code(dist)].Freq++;
- }
-
- /* Try to guess if it is profitable to stop the current block here */
- if (s->level > 2 && (s->last_lit & 0xfff) == 0) {
- /* Compute an upper bound for the compressed length */
- ulg out_length = (ulg)s->last_lit*8L;
- ulg in_length = (ulg)s->strstart - s->block_start;
- int dcode;
- for (dcode = 0; dcode < D_CODES; dcode++) {
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
- (5L+extra_dbits[dcode]);
- }
- out_length >>= 3;
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
- s->last_lit, in_length, out_length,
- 100L - out_length*100L/in_length));
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
- }
- return (s->last_lit == s->lit_bufsize-1);
- /* We avoid equality with lit_bufsize because of wraparound at 64K
- * on 16 bit machines and because stored blocks are restricted to
- * 64K-1 bytes.
- */
-}
-
-/* ===========================================================================
- * Send the block data compressed using the given Huffman trees
- */
-local void compress_block(s, ltree, dtree)
- deflate_state *s;
- ct_data *ltree; /* literal tree */
- ct_data *dtree; /* distance tree */
-{
- unsigned dist; /* distance of matched string */
- int lc; /* match length or unmatched char (if dist == 0) */
- unsigned lx = 0; /* running index in l_buf */
- unsigned code; /* the code to send */
- int extra; /* number of extra bits to send */
-
- if (s->last_lit != 0) do {
- dist = s->d_buf[lx];
- lc = s->l_buf[lx++];
- if (dist == 0) {
- send_code(s, lc, ltree); /* send a literal byte */
- Tracecv(isgraph(lc), (stderr," '%c' ", lc));
- } else {
- /* Here, lc is the match length - MIN_MATCH */
- code = length_code[lc];
- send_code(s, code+LITERALS+1, ltree); /* send the length code */
- extra = extra_lbits[code];
- if (extra != 0) {
- lc -= base_length[code];
- send_bits(s, lc, extra); /* send the extra length bits */
- }
- dist--; /* dist is now the match distance - 1 */
- code = d_code(dist);
- Assert (code < D_CODES, "bad d_code");
-
- send_code(s, code, dtree); /* send the distance code */
- extra = extra_dbits[code];
- if (extra != 0) {
- dist -= base_dist[code];
- send_bits(s, dist, extra); /* send the extra distance bits */
- }
- } /* literal or match pair ? */
-
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
- Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow");
-
- } while (lx < s->last_lit);
-
- send_code(s, END_BLOCK, ltree);
- s->last_eob_len = ltree[END_BLOCK].Len;
-}
-
-/* ===========================================================================
- * Set the data type to ASCII or BINARY, using a crude approximation:
- * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise.
- * IN assertion: the fields freq of dyn_ltree are set and the total of all
- * frequencies does not exceed 64K (to fit in an int on 16 bit machines).
- */
-local void set_data_type(s)
- deflate_state *s;
-{
- int n = 0;
- unsigned ascii_freq = 0;
- unsigned bin_freq = 0;
- while (n < 7) bin_freq += s->dyn_ltree[n++].Freq;
- while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq;
- while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq;
- s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? BINARY : ASCII);
-}
-
-/* ===========================================================================
- * Reverse the first len bits of a code, using straightforward code (a faster
- * method would use a table)
- * IN assertion: 1 <= len <= 15
- */
-local unsigned bi_reverse(code, len)
- unsigned code; /* the value to invert */
- int len; /* its bit length */
-{
- register unsigned res = 0;
- do {
- res |= code & 1;
- code >>= 1, res <<= 1;
- } while (--len > 0);
- return res >> 1;
-}
-
-/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */
-local void bi_flush(s)
- deflate_state *s;
-{
- if (s->bi_valid == 16) {
- put_short(s, s->bi_buf);
- s->bi_buf = 0;
- s->bi_valid = 0;
- } else if (s->bi_valid >= 8) {
- put_byte(s, (Byte)s->bi_buf);
- s->bi_buf >>= 8;
- s->bi_valid -= 8;
- }
-}
-
-/* ===========================================================================
- * Flush the bit buffer and align the output on a byte boundary
- */
-local void bi_windup(s)
- deflate_state *s;
-{
- if (s->bi_valid > 8) {
- put_short(s, s->bi_buf);
- } else if (s->bi_valid > 0) {
- put_byte(s, (Byte)s->bi_buf);
- }
- s->bi_buf = 0;
- s->bi_valid = 0;
-#ifdef DEBUG_ZLIB
- s->bits_sent = (s->bits_sent+7) & ~7;
-#endif
-}
-
-/* ===========================================================================
- * Copy a stored block, storing first the length and its
- * one's complement if requested.
- */
-local void copy_block(s, buf, len, header)
- deflate_state *s;
- charf *buf; /* the input data */
- unsigned len; /* its length */
- int header; /* true if block header must be written */
-{
- bi_windup(s); /* align on byte boundary */
- s->last_eob_len = 8; /* enough lookahead for inflate */
-
- if (header) {
- put_short(s, (ush)len);
- put_short(s, (ush)~len);
-#ifdef DEBUG_ZLIB
- s->bits_sent += 2*16;
-#endif
- }
-#ifdef DEBUG_ZLIB
- s->bits_sent += (ulg)len<<3;
-#endif
- while (len--) {
- put_byte(s, *buf++);
- }
-}
-
-
-/*+++++*/
-/* infblock.h -- header to use infblock.c
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_blocks_state;
-typedef struct inflate_blocks_state FAR inflate_blocks_statef;
-
-local inflate_blocks_statef * inflate_blocks_new OF((
- z_stream *z,
- check_func c, /* check function */
- uInt w)); /* window size */
-
-local int inflate_blocks OF((
- inflate_blocks_statef *,
- z_stream *,
- int)); /* initial return code */
-
-local void inflate_blocks_reset OF((
- inflate_blocks_statef *,
- z_stream *,
- uLongf *)); /* check value on output */
-
-local int inflate_blocks_free OF((
- inflate_blocks_statef *,
- z_stream *,
- uLongf *)); /* check value on output */
-
-local int inflate_addhistory OF((
- inflate_blocks_statef *,
- z_stream *));
-
-local int inflate_packet_flush OF((
- inflate_blocks_statef *));
-
-/*+++++*/
-/* inftrees.h -- header to use inftrees.c
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* Huffman code lookup table entry--this entry is four bytes for machines
- that have 16-bit pointers (e.g. PC's in the small or medium model). */
-
-typedef struct inflate_huft_s FAR inflate_huft;
-
-struct inflate_huft_s {
- union {
- struct {
- Byte Exop; /* number of extra bits or operation */
- Byte Bits; /* number of bits in this code or subcode */
- } what;
- uInt Nalloc; /* number of these allocated here */
- Bytef *pad; /* pad structure to a power of 2 (4 bytes for */
- } word; /* 16-bit, 8 bytes for 32-bit machines) */
- union {
- uInt Base; /* literal, length base, or distance base */
- inflate_huft *Next; /* pointer to next level of table */
- } more;
-};
-
-#ifdef DEBUG_ZLIB
- local uInt inflate_hufts;
-#endif
-
-local int inflate_trees_bits OF((
- uIntf *, /* 19 code lengths */
- uIntf *, /* bits tree desired/actual depth */
- inflate_huft * FAR *, /* bits tree result */
- z_stream *)); /* for zalloc, zfree functions */
-
-local int inflate_trees_dynamic OF((
- uInt, /* number of literal/length codes */
- uInt, /* number of distance codes */
- uIntf *, /* that many (total) code lengths */
- uIntf *, /* literal desired/actual bit depth */
- uIntf *, /* distance desired/actual bit depth */
- inflate_huft * FAR *, /* literal/length tree result */
- inflate_huft * FAR *, /* distance tree result */
- z_stream *)); /* for zalloc, zfree functions */
-
-local int inflate_trees_fixed OF((
- uIntf *, /* literal desired/actual bit depth */
- uIntf *, /* distance desired/actual bit depth */
- inflate_huft * FAR *, /* literal/length tree result */
- inflate_huft * FAR *)); /* distance tree result */
-
-local int inflate_trees_free OF((
- inflate_huft *, /* tables to free */
- z_stream *)); /* for zfree function */
-
-
-/*+++++*/
-/* infcodes.h -- header to use infcodes.c
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-struct inflate_codes_state;
-typedef struct inflate_codes_state FAR inflate_codes_statef;
-
-local inflate_codes_statef *inflate_codes_new OF((
- uInt, uInt,
- inflate_huft *, inflate_huft *,
- z_stream *));
-
-local int inflate_codes OF((
- inflate_blocks_statef *,
- z_stream *,
- int));
-
-local void inflate_codes_free OF((
- inflate_codes_statef *,
- z_stream *));
-
-
-/*+++++*/
-/* inflate.c -- zlib interface to inflate modules
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* inflate private state */
-struct internal_state {
-
- /* mode */
- enum {
- METHOD, /* waiting for method byte */
- FLAG, /* waiting for flag byte */
- BLOCKS, /* decompressing blocks */
- CHECK4, /* four check bytes to go */
- CHECK3, /* three check bytes to go */
- CHECK2, /* two check bytes to go */
- CHECK1, /* one check byte to go */
- DONE, /* finished check, done */
- BAD} /* got an error--stay here */
- mode; /* current inflate mode */
-
- /* mode dependent information */
- union {
- uInt method; /* if FLAGS, method byte */
- struct {
- uLong was; /* computed check value */
- uLong need; /* stream check value */
- } check; /* if CHECK, check values to compare */
- uInt marker; /* if BAD, inflateSync's marker bytes count */
- } sub; /* submode */
-
- /* mode independent information */
- int nowrap; /* flag for no wrapper */
- uInt wbits; /* log2(window size) (8..15, defaults to 15) */
- inflate_blocks_statef
- *blocks; /* current inflate_blocks state */
-
-};
-
-
-int inflateReset(z)
-z_stream *z;
-{
- uLong c;
-
- if (z == Z_NULL || z->state == Z_NULL)
- return Z_STREAM_ERROR;
- z->total_in = z->total_out = 0;
- z->msg = Z_NULL;
- z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
- inflate_blocks_reset(z->state->blocks, z, &c);
- Trace((stderr, "inflate: reset\n"));
- return Z_OK;
-}
-
-
-int inflateEnd(z)
-z_stream *z;
-{
- uLong c;
-
- if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL)
- return Z_STREAM_ERROR;
- if (z->state->blocks != Z_NULL)
- inflate_blocks_free(z->state->blocks, z, &c);
- ZFREE(z, z->state, sizeof(struct internal_state));
- z->state = Z_NULL;
- Trace((stderr, "inflate: end\n"));
- return Z_OK;
-}
-
-
-int inflateInit2(z, w)
-z_stream *z;
-int w;
-{
- /* initialize state */
- if (z == Z_NULL)
- return Z_STREAM_ERROR;
-/* if (z->zalloc == Z_NULL) z->zalloc = zcalloc; */
-/* if (z->zfree == Z_NULL) z->zfree = zcfree; */
- if ((z->state = (struct internal_state FAR *)
- ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL)
- return Z_MEM_ERROR;
- z->state->blocks = Z_NULL;
-
- /* handle undocumented nowrap option (no zlib header or check) */
- z->state->nowrap = 0;
- if (w < 0)
- {
- w = - w;
- z->state->nowrap = 1;
- }
-
- /* set window size */
- if (w < 8 || w > 15)
- {
- inflateEnd(z);
- return Z_STREAM_ERROR;
- }
- z->state->wbits = (uInt)w;
-
- /* create inflate_blocks state */
- if ((z->state->blocks =
- inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, 1 << w))
- == Z_NULL)
- {
- inflateEnd(z);
- return Z_MEM_ERROR;
- }
- Trace((stderr, "inflate: allocated\n"));
-
- /* reset state */
- inflateReset(z);
- return Z_OK;
-}
-
-
-int inflateInit(z)
-z_stream *z;
-{
- return inflateInit2(z, DEF_WBITS);
-}
-
-
-#define NEEDBYTE {if(z->avail_in==0)goto empty;r=Z_OK;}
-#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
-
-int inflate(z, f)
-z_stream *z;
-int f;
-{
- int r;
- uInt b;
-
- if (z == Z_NULL || z->next_in == Z_NULL)
- return Z_STREAM_ERROR;
- r = Z_BUF_ERROR;
- while (1) switch (z->state->mode)
- {
- case METHOD:
- NEEDBYTE
- if (((z->state->sub.method = NEXTBYTE) & 0xf) != DEFLATED)
- {
- z->state->mode = BAD;
- z->msg = "unknown compression method";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
- {
- z->state->mode = BAD;
- z->msg = "invalid window size";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- z->state->mode = FLAG;
- case FLAG:
- NEEDBYTE
- if ((b = NEXTBYTE) & 0x20)
- {
- z->state->mode = BAD;
- z->msg = "invalid reserved bit";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- if (((z->state->sub.method << 8) + b) % 31)
- {
- z->state->mode = BAD;
- z->msg = "incorrect header check";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- Trace((stderr, "inflate: zlib header ok\n"));
- z->state->mode = BLOCKS;
- case BLOCKS:
- r = inflate_blocks(z->state->blocks, z, r);
- if (f == Z_PACKET_FLUSH && z->avail_in == 0 && z->avail_out != 0)
- r = inflate_packet_flush(z->state->blocks);
- if (r == Z_DATA_ERROR)
- {
- z->state->mode = BAD;
- z->state->sub.marker = 0; /* can try inflateSync */
- break;
- }
- if (r != Z_STREAM_END)
- return r;
- r = Z_OK;
- inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
- if (z->state->nowrap)
- {
- z->state->mode = DONE;
- break;
- }
- z->state->mode = CHECK4;
- case CHECK4:
- NEEDBYTE
- z->state->sub.check.need = (uLong)NEXTBYTE << 24;
- z->state->mode = CHECK3;
- case CHECK3:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 16;
- z->state->mode = CHECK2;
- case CHECK2:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE << 8;
- z->state->mode = CHECK1;
- case CHECK1:
- NEEDBYTE
- z->state->sub.check.need += (uLong)NEXTBYTE;
-
- if (z->state->sub.check.was != z->state->sub.check.need)
- {
- z->state->mode = BAD;
- z->msg = "incorrect data check";
- z->state->sub.marker = 5; /* can't try inflateSync */
- break;
- }
- Trace((stderr, "inflate: zlib check ok\n"));
- z->state->mode = DONE;
- case DONE:
- return Z_STREAM_END;
- case BAD:
- return Z_DATA_ERROR;
- default:
- return Z_STREAM_ERROR;
- }
-
- empty:
- if (f != Z_PACKET_FLUSH)
- return r;
- z->state->mode = BAD;
- z->state->sub.marker = 0; /* can try inflateSync */
- return Z_DATA_ERROR;
-}
-
-/*
- * This subroutine adds the data at next_in/avail_in to the output history
- * without performing any output. The output buffer must be "caught up";
- * i.e. no pending output (hence s->read equals s->write), and the state must
- * be BLOCKS (i.e. we should be willing to see the start of a series of
- * BLOCKS). On exit, the output will also be caught up, and the checksum
- * will have been updated if need be.
- */
-
-int inflateIncomp(z)
-z_stream *z;
-{
- if (z->state->mode != BLOCKS)
- return Z_DATA_ERROR;
- return inflate_addhistory(z->state->blocks, z);
-}
-
-
-int inflateSync(z)
-z_stream *z;
-{
- uInt n; /* number of bytes to look at */
- Bytef *p; /* pointer to bytes */
- uInt m; /* number of marker bytes found in a row */
- uLong r, w; /* temporaries to save total_in and total_out */
-
- /* set up */
- if (z == Z_NULL || z->state == Z_NULL)
- return Z_STREAM_ERROR;
- if (z->state->mode != BAD)
- {
- z->state->mode = BAD;
- z->state->sub.marker = 0;
- }
- if ((n = z->avail_in) == 0)
- return Z_BUF_ERROR;
- p = z->next_in;
- m = z->state->sub.marker;
-
- /* search */
- while (n && m < 4)
- {
- if (*p == (Byte)(m < 2 ? 0 : 0xff))
- m++;
- else if (*p)
- m = 0;
- else
- m = 4 - m;
- p++, n--;
- }
-
- /* restore */
- z->total_in += p - z->next_in;
- z->next_in = p;
- z->avail_in = n;
- z->state->sub.marker = m;
-
- /* return no joy or set up to restart on a new block */
- if (m != 4)
- return Z_DATA_ERROR;
- r = z->total_in; w = z->total_out;
- inflateReset(z);
- z->total_in = r; z->total_out = w;
- z->state->mode = BLOCKS;
- return Z_OK;
-}
-
-#undef NEEDBYTE
-#undef NEXTBYTE
-
-/*+++++*/
-/* infutil.h -- types and macros common to blocks and codes
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-/* inflate blocks semi-private state */
-struct inflate_blocks_state {
-
- /* mode */
- enum {
- TYPE, /* get type bits (3, including end bit) */
- LENS, /* get lengths for stored */
- STORED, /* processing stored block */
- TABLE, /* get table lengths */
- BTREE, /* get bit lengths tree for a dynamic block */
- DTREE, /* get length, distance trees for a dynamic block */
- CODES, /* processing fixed or dynamic block */
- DRY, /* output remaining window bytes */
- DONEB, /* finished last block, done */
- BADB} /* got a data error--stuck here */
- mode; /* current inflate_block mode */
-
- /* mode dependent information */
- union {
- uInt left; /* if STORED, bytes left to copy */
- struct {
- uInt table; /* table lengths (14 bits) */
- uInt index; /* index into blens (or border) */
- uIntf *blens; /* bit lengths of codes */
- uInt bb; /* bit length tree depth */
- inflate_huft *tb; /* bit length decoding tree */
- int nblens; /* # elements allocated at blens */
- } trees; /* if DTREE, decoding info for trees */
- struct {
- inflate_huft *tl, *td; /* trees to free */
- inflate_codes_statef
- *codes;
- } decode; /* if CODES, current state */
- } sub; /* submode */
- uInt last; /* true if this block is the last block */
-
- /* mode independent information */
- uInt bitk; /* bits in bit buffer */
- uLong bitb; /* bit buffer */
- Bytef *window; /* sliding window */
- Bytef *end; /* one byte after sliding window */
- Bytef *read; /* window read pointer */
- Bytef *write; /* window write pointer */
- check_func checkfn; /* check function */
- uLong check; /* check on output */
-
-};
-
-
-/* defines for inflate input/output */
-/* update pointers and return */
-#define UPDBITS {s->bitb=b;s->bitk=k;}
-#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
-#define UPDOUT {s->write=q;}
-#define UPDATE {UPDBITS UPDIN UPDOUT}
-#define LEAVE {UPDATE return inflate_flush(s,z,r);}
-/* get bytes and bits */
-#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
-#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
-#define NEXTBYTE (n--,*p++)
-#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-#define DUMPBITS(j) {b>>=(j);k-=(j);}
-/* output bytes */
-#define WAVAIL (q<s->read?s->read-q-1:s->end-q)
-#define LOADOUT {q=s->write;m=WAVAIL;}
-#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=WAVAIL;}}
-#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
-#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
-#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
-/* load local pointers */
-#define LOAD {LOADIN LOADOUT}
-
-/* And'ing with mask[n] masks the lower n bits */
-local uInt inflate_mask[] = {
- 0x0000,
- 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
- 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
-};
-
-/* copy as much as possible from the sliding window to the output area */
-local int inflate_flush OF((
- inflate_blocks_statef *,
- z_stream *,
- int));
-
-/*+++++*/
-/* inffast.h -- header to use inffast.c
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* WARNING: this file should *not* be used by applications. It is
- part of the implementation of the compression library and is
- subject to change. Applications should only use zlib.h.
- */
-
-local int inflate_fast OF((
- uInt,
- uInt,
- inflate_huft *,
- inflate_huft *,
- inflate_blocks_statef *,
- z_stream *));
-
-
-/*+++++*/
-/* infblock.c -- interpret and process block types to last block
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* Table for deflate from PKZIP's appnote.txt. */
-local uInt border[] = { /* Order of the bit length code lengths */
- 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-/*
- Notes beyond the 1.93a appnote.txt:
-
- 1. Distance pointers never point before the beginning of the output
- stream.
- 2. Distance pointers can point back across blocks, up to 32k away.
- 3. There is an implied maximum of 7 bits for the bit length table and
- 15 bits for the actual data.
- 4. If only one code exists, then it is encoded using one bit. (Zero
- would be more efficient, but perhaps a little confusing.) If two
- codes exist, they are coded using one bit each (0 and 1).
- 5. There is no way of sending zero distance codes--a dummy must be
- sent if there are none. (History: a pre 2.0 version of PKZIP would
- store blocks with no distance codes, but this was discovered to be
- too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
- zero distance codes, which is sent as one code of zero bits in
- length.
- 6. There are up to 286 literal/length codes. Code 256 represents the
- end-of-block. Note however that the static length tree defines
- 288 codes just to fill out the Huffman codes. Codes 286 and 287
- cannot be used though, since there is no length base or extra bits
- defined for them. Similarily, there are up to 30 distance codes.
- However, static trees define 32 codes (all 5 bits) to fill out the
- Huffman codes, but the last two had better not show up in the data.
- 7. Unzip can check dynamic Huffman blocks for complete code sets.
- The exception is that a single code would not be complete (see #4).
- 8. The five bits following the block type is really the number of
- literal codes sent minus 257.
- 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
- (1+6+6). Therefore, to output three times the length, you output
- three codes (1+1+1), whereas to output four times the same length,
- you only need two codes (1+3). Hmm.
- 10. In the tree reconstruction algorithm, Code = Code + Increment
- only if BitLength(i) is not zero. (Pretty obvious.)
- 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
- 12. Note: length code 284 can represent 227-258, but length code 285
- really is 258. The last length deserves its own, short code
- since it gets used a lot in very redundant files. The length
- 258 is special since 258 - 3 (the min match length) is 255.
- 13. The literal/length and distance code bit lengths are read as a
- single stream of lengths. It is possible (and advantageous) for
- a repeat code (16, 17, or 18) to go across the boundary between
- the two sets of lengths.
- */
-
-
-local void inflate_blocks_reset(s, z, c)
-inflate_blocks_statef *s;
-z_stream *z;
-uLongf *c;
-{
- if (s->checkfn != Z_NULL)
- *c = s->check;
- if (s->mode == BTREE || s->mode == DTREE)
- ZFREE(z, s->sub.trees.blens, s->sub.trees.nblens * sizeof(uInt));
- if (s->mode == CODES)
- {
- inflate_codes_free(s->sub.decode.codes, z);
- inflate_trees_free(s->sub.decode.td, z);
- inflate_trees_free(s->sub.decode.tl, z);
- }
- s->mode = TYPE;
- s->bitk = 0;
- s->bitb = 0;
- s->read = s->write = s->window;
- if (s->checkfn != Z_NULL)
- s->check = (*s->checkfn)(0L, Z_NULL, 0);
- Trace((stderr, "inflate: blocks reset\n"));
-}
-
-
-local inflate_blocks_statef *inflate_blocks_new(z, c, w)
-z_stream *z;
-check_func c;
-uInt w;
-{
- inflate_blocks_statef *s;
-
- if ((s = (inflate_blocks_statef *)ZALLOC
- (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
- return s;
- if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
- {
- ZFREE(z, s, sizeof(struct inflate_blocks_state));
- return Z_NULL;
- }
- s->end = s->window + w;
- s->checkfn = c;
- s->mode = TYPE;
- Trace((stderr, "inflate: blocks allocated\n"));
- inflate_blocks_reset(s, z, &s->check);
- return s;
-}
-
-
-local int inflate_blocks(s, z, r)
-inflate_blocks_statef *s;
-z_stream *z;
-int r;
-{
- uInt t; /* temporary storage */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
-
- /* copy input/output information to locals (UPDATE macro restores) */
- LOAD
-
- /* process input based on current state */
- while (1) switch (s->mode)
- {
- case TYPE:
- NEEDBITS(3)
- t = (uInt)b & 7;
- s->last = t & 1;
- switch (t >> 1)
- {
- case 0: /* stored */
- Trace((stderr, "inflate: stored block%s\n",
- s->last ? " (last)" : ""));
- DUMPBITS(3)
- t = k & 7; /* go to byte boundary */
- DUMPBITS(t)
- s->mode = LENS; /* get length of stored block */
- break;
- case 1: /* fixed */
- Trace((stderr, "inflate: fixed codes block%s\n",
- s->last ? " (last)" : ""));
- {
- uInt bl, bd;
- inflate_huft *tl, *td;
-
- inflate_trees_fixed(&bl, &bd, &tl, &td);
- s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
- if (s->sub.decode.codes == Z_NULL)
- {
- r = Z_MEM_ERROR;
- LEAVE
- }
- s->sub.decode.tl = Z_NULL; /* don't try to free these */
- s->sub.decode.td = Z_NULL;
- }
- DUMPBITS(3)
- s->mode = CODES;
- break;
- case 2: /* dynamic */
- Trace((stderr, "inflate: dynamic codes block%s\n",
- s->last ? " (last)" : ""));
- DUMPBITS(3)
- s->mode = TABLE;
- break;
- case 3: /* illegal */
- DUMPBITS(3)
- s->mode = BADB;
- z->msg = "invalid block type";
- r = Z_DATA_ERROR;
- LEAVE
- }
- break;
- case LENS:
- NEEDBITS(32)
- if (((~b) >> 16) != (b & 0xffff))
- {
- s->mode = BADB;
- z->msg = "invalid stored block lengths";
- r = Z_DATA_ERROR;
- LEAVE
- }
- s->sub.left = (uInt)b & 0xffff;
- b = k = 0; /* dump bits */
- Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
- s->mode = s->sub.left ? STORED : TYPE;
- break;
- case STORED:
- if (n == 0)
- LEAVE
- NEEDOUT
- t = s->sub.left;
- if (t > n) t = n;
- if (t > m) t = m;
- zmemcpy(q, p, t);
- p += t; n -= t;
- q += t; m -= t;
- if ((s->sub.left -= t) != 0)
- break;
- Tracev((stderr, "inflate: stored end, %lu total out\n",
- z->total_out + (q >= s->read ? q - s->read :
- (s->end - s->read) + (q - s->window))));
- s->mode = s->last ? DRY : TYPE;
- break;
- case TABLE:
- NEEDBITS(14)
- s->sub.trees.table = t = (uInt)b & 0x3fff;
-#ifndef PKZIP_BUG_WORKAROUND
- if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
- {
- s->mode = BADB;
- z->msg = "too many length or distance symbols";
- r = Z_DATA_ERROR;
- LEAVE
- }
-#endif
- t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
- if (t < 19)
- t = 19;
- if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
- {
- r = Z_MEM_ERROR;
- LEAVE
- }
- s->sub.trees.nblens = t;
- DUMPBITS(14)
- s->sub.trees.index = 0;
- Tracev((stderr, "inflate: table sizes ok\n"));
- s->mode = BTREE;
- case BTREE:
- while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
- {
- NEEDBITS(3)
- s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
- DUMPBITS(3)
- }
- while (s->sub.trees.index < 19)
- s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
- s->sub.trees.bb = 7;
- t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
- &s->sub.trees.tb, z);
- if (t != Z_OK)
- {
- r = t;
- if (r == Z_DATA_ERROR)
- s->mode = BADB;
- LEAVE
- }
- s->sub.trees.index = 0;
- Tracev((stderr, "inflate: bits tree ok\n"));
- s->mode = DTREE;
- case DTREE:
- while (t = s->sub.trees.table,
- s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
- {
- inflate_huft *h;
- uInt i, j, c;
-
- t = s->sub.trees.bb;
- NEEDBITS(t)
- h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
- t = h->word.what.Bits;
- c = h->more.Base;
- if (c < 16)
- {
- DUMPBITS(t)
- s->sub.trees.blens[s->sub.trees.index++] = c;
- }
- else /* c == 16..18 */
- {
- i = c == 18 ? 7 : c - 14;
- j = c == 18 ? 11 : 3;
- NEEDBITS(t + i)
- DUMPBITS(t)
- j += (uInt)b & inflate_mask[i];
- DUMPBITS(i)
- i = s->sub.trees.index;
- t = s->sub.trees.table;
- if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
- (c == 16 && i < 1))
- {
- s->mode = BADB;
- z->msg = "invalid bit length repeat";
- r = Z_DATA_ERROR;
- LEAVE
- }
- c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
- do {
- s->sub.trees.blens[i++] = c;
- } while (--j);
- s->sub.trees.index = i;
- }
- }
- inflate_trees_free(s->sub.trees.tb, z);
- s->sub.trees.tb = Z_NULL;
- {
- uInt bl, bd;
- inflate_huft *tl, *td;
- inflate_codes_statef *c;
-
- bl = 9; /* must be <= 9 for lookahead assumptions */
- bd = 6; /* must be <= 9 for lookahead assumptions */
- t = s->sub.trees.table;
- t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
- s->sub.trees.blens, &bl, &bd, &tl, &td, z);
- if (t != Z_OK)
- {
- if (t == (uInt)Z_DATA_ERROR)
- s->mode = BADB;
- r = t;
- LEAVE
- }
- Tracev((stderr, "inflate: trees ok\n"));
- if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
- {
- inflate_trees_free(td, z);
- inflate_trees_free(tl, z);
- r = Z_MEM_ERROR;
- LEAVE
- }
- ZFREE(z, s->sub.trees.blens, s->sub.trees.nblens * sizeof(uInt));
- s->sub.decode.codes = c;
- s->sub.decode.tl = tl;
- s->sub.decode.td = td;
- }
- s->mode = CODES;
- case CODES:
- UPDATE
- if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
- return inflate_flush(s, z, r);
- r = Z_OK;
- inflate_codes_free(s->sub.decode.codes, z);
- inflate_trees_free(s->sub.decode.td, z);
- inflate_trees_free(s->sub.decode.tl, z);
- LOAD
- Tracev((stderr, "inflate: codes end, %lu total out\n",
- z->total_out + (q >= s->read ? q - s->read :
- (s->end - s->read) + (q - s->window))));
- if (!s->last)
- {
- s->mode = TYPE;
- break;
- }
- if (k > 7) /* return unused byte, if any */
- {
- Assert(k < 16, "inflate_codes grabbed too many bytes")
- k -= 8;
- n++;
- p--; /* can always return one */
- }
- s->mode = DRY;
- case DRY:
- FLUSH
- if (s->read != s->write)
- LEAVE
- s->mode = DONEB;
- case DONEB:
- r = Z_STREAM_END;
- LEAVE
- case BADB:
- r = Z_DATA_ERROR;
- LEAVE
- default:
- r = Z_STREAM_ERROR;
- LEAVE
- }
-}
-
-
-local int inflate_blocks_free(s, z, c)
-inflate_blocks_statef *s;
-z_stream *z;
-uLongf *c;
-{
- inflate_blocks_reset(s, z, c);
- ZFREE(z, s->window, s->end - s->window);
- ZFREE(z, s, sizeof(struct inflate_blocks_state));
- Trace((stderr, "inflate: blocks freed\n"));
- return Z_OK;
-}
-
-/*
- * This subroutine adds the data at next_in/avail_in to the output history
- * without performing any output. The output buffer must be "caught up";
- * i.e. no pending output (hence s->read equals s->write), and the state must
- * be BLOCKS (i.e. we should be willing to see the start of a series of
- * BLOCKS). On exit, the output will also be caught up, and the checksum
- * will have been updated if need be.
- */
-local int inflate_addhistory(s, z)
-inflate_blocks_statef *s;
-z_stream *z;
-{
- uLong b; /* bit buffer */ /* NOT USED HERE */
- uInt k; /* bits in bit buffer */ /* NOT USED HERE */
- uInt t; /* temporary storage */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
-
- if (s->read != s->write)
- return Z_STREAM_ERROR;
- if (s->mode != TYPE)
- return Z_DATA_ERROR;
-
- /* we're ready to rock */
- LOAD
- /* while there is input ready, copy to output buffer, moving
- * pointers as needed.
- */
- while (n) {
- t = n; /* how many to do */
- /* is there room until end of buffer? */
- if (t > m) t = m;
- /* update check information */
- if (s->checkfn != Z_NULL)
- s->check = (*s->checkfn)(s->check, q, t);
- zmemcpy(q, p, t);
- q += t;
- p += t;
- n -= t;
- z->total_out += t;
- s->read = q; /* drag read pointer forward */
-/* WRAP */ /* expand WRAP macro by hand to handle s->read */
- if (q == s->end) {
- s->read = q = s->window;
- m = WAVAIL;
- }
- }
- UPDATE
- return Z_OK;
-}
-
-
-/*
- * At the end of a Deflate-compressed PPP packet, we expect to have seen
- * a `stored' block type value but not the (zero) length bytes.
- */
-local int inflate_packet_flush(s)
- inflate_blocks_statef *s;
-{
- if (s->mode != LENS)
- return Z_DATA_ERROR;
- s->mode = TYPE;
- return Z_OK;
-}
-
-
-/*+++++*/
-/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-
-local int huft_build OF((
- uIntf *, /* code lengths in bits */
- uInt, /* number of codes */
- uInt, /* number of "simple" codes */
- uIntf *, /* list of base values for non-simple codes */
- uIntf *, /* list of extra bits for non-simple codes */
- inflate_huft * FAR*,/* result: starting table */
- uIntf *, /* maximum lookup bits (returns actual) */
- z_stream *)); /* for zalloc function */
-
-local voidpf falloc OF((
- voidpf, /* opaque pointer (not used) */
- uInt, /* number of items */
- uInt)); /* size of item */
-
-local void ffree OF((
- voidpf q, /* opaque pointer (not used) */
- voidpf p, /* what to free (not used) */
- uInt n)); /* number of bytes (not used) */
-
-/* Tables for deflate from PKZIP's appnote.txt. */
-local uInt cplens[] = { /* Copy lengths for literal codes 257..285 */
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
- 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
- /* actually lengths - 2; also see note #13 above about 258 */
-local uInt cplext[] = { /* Extra bits for literal codes 257..285 */
- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
- 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 192, 192}; /* 192==invalid */
-local uInt cpdist[] = { /* Copy offsets for distance codes 0..29 */
- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
- 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
- 8193, 12289, 16385, 24577};
-local uInt cpdext[] = { /* Extra bits for distance codes */
- 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
- 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
- 12, 12, 13, 13};
-
-/*
- Huffman code decoding is performed using a multi-level table lookup.
- The fastest way to decode is to simply build a lookup table whose
- size is determined by the longest code. However, the time it takes
- to build this table can also be a factor if the data being decoded
- is not very long. The most common codes are necessarily the
- shortest codes, so those codes dominate the decoding time, and hence
- the speed. The idea is you can have a shorter table that decodes the
- shorter, more probable codes, and then point to subsidiary tables for
- the longer codes. The time it costs to decode the longer codes is
- then traded against the time it takes to make longer tables.
-
- This results of this trade are in the variables lbits and dbits
- below. lbits is the number of bits the first level table for literal/
- length codes can decode in one step, and dbits is the same thing for
- the distance codes. Subsequent tables are also less than or equal to
- those sizes. These values may be adjusted either when all of the
- codes are shorter than that, in which case the longest code length in
- bits is used, or when the shortest code is *longer* than the requested
- table size, in which case the length of the shortest code in bits is
- used.
-
- There are two different values for the two tables, since they code a
- different number of possibilities each. The literal/length table
- codes 286 possible values, or in a flat code, a little over eight
- bits. The distance table codes 30 possible values, or a little less
- than five bits, flat. The optimum values for speed end up being
- about one bit more than those, so lbits is 8+1 and dbits is 5+1.
- The optimum values may differ though from machine to machine, and
- possibly even between compilers. Your mileage may vary.
- */
-
-
-/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
-#define BMAX 15 /* maximum bit length of any code */
-#define N_MAX 288 /* maximum number of codes in any set */
-
-#ifdef DEBUG_ZLIB
- uInt inflate_hufts;
-#endif
-
-local int huft_build(b, n, s, d, e, t, m, zs)
-uIntf *b; /* code lengths in bits (all assumed <= BMAX) */
-uInt n; /* number of codes (assumed <= N_MAX) */
-uInt s; /* number of simple-valued codes (0..s-1) */
-uIntf *d; /* list of base values for non-simple codes */
-uIntf *e; /* list of extra bits for non-simple codes */
-inflate_huft * FAR *t; /* result: starting table */
-uIntf *m; /* maximum lookup bits, returns actual */
-z_stream *zs; /* for zalloc function */
-/* Given a list of code lengths and a maximum table size, make a set of
- tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
- if the given code set is incomplete (the tables are still built in this
- case), Z_DATA_ERROR if the input is invalid (all zero length codes or an
- over-subscribed set of lengths), or Z_MEM_ERROR if not enough memory. */
-{
-
- uInt a; /* counter for codes of length k */
- uInt c[BMAX+1]; /* bit length count table */
- uInt f; /* i repeats in table every f entries */
- int g; /* maximum code length */
- int h; /* table level */
- register uInt i; /* counter, current code */
- register uInt j; /* counter */
- register int k; /* number of bits in current code */
- int l; /* bits per table (returned in m) */
- register uIntf *p; /* pointer into c[], b[], or v[] */
- inflate_huft *q; /* points to current table */
- struct inflate_huft_s r; /* table entry for structure assignment */
- inflate_huft *u[BMAX]; /* table stack */
- uInt v[N_MAX]; /* values in order of bit length */
- register int w; /* bits before this table == (l * h) */
- uInt x[BMAX+1]; /* bit offsets, then code stack */
- uIntf *xp; /* pointer into x */
- int y; /* number of dummy codes added */
- uInt z; /* number of entries in current table */
-
-
- /* Generate counts for each bit length */
- p = c;
-#define C0 *p++ = 0;
-#define C2 C0 C0 C0 C0
-#define C4 C2 C2 C2 C2
- C4 /* clear c[]--assume BMAX+1 is 16 */
- p = b; i = n;
- do {
- c[*p++]++; /* assume all entries <= BMAX */
- } while (--i);
- if (c[0] == n) /* null input--all zero length codes */
- {
- *t = (inflate_huft *)Z_NULL;
- *m = 0;
- return Z_OK;
- }
-
-
- /* Find minimum and maximum length, bound *m by those */
- l = *m;
- for (j = 1; j <= BMAX; j++)
- if (c[j])
- break;
- k = j; /* minimum code length */
- if ((uInt)l < j)
- l = j;
- for (i = BMAX; i; i--)
- if (c[i])
- break;
- g = i; /* maximum code length */
- if ((uInt)l > i)
- l = i;
- *m = l;
-
-
- /* Adjust last length count to fill out codes, if needed */
- for (y = 1 << j; j < i; j++, y <<= 1)
- if ((y -= c[j]) < 0)
- return Z_DATA_ERROR;
- if ((y -= c[i]) < 0)
- return Z_DATA_ERROR;
- c[i] += y;
-
-
- /* Generate starting offsets into the value table for each length */
- x[1] = j = 0;
- p = c + 1; xp = x + 2;
- while (--i) { /* note that i == g from above */
- *xp++ = (j += *p++);
- }
-
-
- /* Make a table of values in order of bit lengths */
- p = b; i = 0;
- do {
- if ((j = *p++) != 0)
- v[x[j]++] = i;
- } while (++i < n);
-
-
- /* Generate the Huffman codes and for each, make the table entries */
- x[0] = i = 0; /* first Huffman code is zero */
- p = v; /* grab values in bit order */
- h = -1; /* no tables yet--level -1 */
- w = -l; /* bits decoded == (l * h) */
- u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */
- q = (inflate_huft *)Z_NULL; /* ditto */
- z = 0; /* ditto */
-
- /* go through the bit lengths (k already is bits in shortest code) */
- for (; k <= g; k++)
- {
- a = c[k];
- while (a--)
- {
- /* here i is the Huffman code of length k bits for value *p */
- /* make tables up to required level */
- while (k > w + l)
- {
- h++;
- w += l; /* previous table always l bits */
-
- /* compute minimum size table less than or equal to l bits */
- z = (z = g - w) > (uInt)l ? l : z; /* table size upper limit */
- if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
- { /* too few codes for k-w bit table */
- f -= a + 1; /* deduct codes from patterns left */
- xp = c + k;
- if (j < z)
- while (++j < z) /* try smaller tables up to z bits */
- {
- if ((f <<= 1) <= *++xp)
- break; /* enough codes to use up j bits */
- f -= *xp; /* else deduct codes from patterns */
- }
- }
- z = 1 << j; /* table entries for j-bit table */
-
- /* allocate and link in new table */
- if ((q = (inflate_huft *)ZALLOC
- (zs,z + 1,sizeof(inflate_huft))) == Z_NULL)
- {
- if (h)
- inflate_trees_free(u[0], zs);
- return Z_MEM_ERROR; /* not enough memory */
- }
- q->word.Nalloc = z + 1;
-#ifdef DEBUG_ZLIB
- inflate_hufts += z + 1;
-#endif
- *t = q + 1; /* link to list for huft_free() */
- *(t = &(q->next)) = Z_NULL;
- u[h] = ++q; /* table starts after link */
-
- /* connect to last table, if there is one */
- if (h)
- {
- x[h] = i; /* save pattern for backing up */
- r.bits = (Byte)l; /* bits to dump before this table */
- r.exop = (Byte)j; /* bits in this table */
- r.next = q; /* pointer to this table */
- j = i >> (w - l); /* (get around Turbo C bug) */
- u[h-1][j] = r; /* connect to last table */
- }
- }
-
- /* set up table entry in r */
- r.bits = (Byte)(k - w);
- if (p >= v + n)
- r.exop = 128 + 64; /* out of values--invalid code */
- else if (*p < s)
- {
- r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
- r.base = *p++; /* simple code is just the value */
- }
- else
- {
- r.exop = (Byte)e[*p - s] + 16 + 64; /* non-simple--look up in lists */
- r.base = d[*p++ - s];
- }
-
- /* fill code-like entries with r */
- f = 1 << (k - w);
- for (j = i >> w; j < z; j += f)
- q[j] = r;
-
- /* backwards increment the k-bit code i */
- for (j = 1 << (k - 1); i & j; j >>= 1)
- i ^= j;
- i ^= j;
-
- /* backup over finished tables */
- while ((i & ((1 << w) - 1)) != x[h])
- {
- h--; /* don't need to update q */
- w -= l;
- }
- }
- }
-
-
- /* Return Z_BUF_ERROR if we were given an incomplete table */
- return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
-}
-
-
-local int inflate_trees_bits(c, bb, tb, z)
-uIntf *c; /* 19 code lengths */
-uIntf *bb; /* bits tree desired/actual depth */
-inflate_huft * FAR *tb; /* bits tree result */
-z_stream *z; /* for zfree function */
-{
- int r;
-
- r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL, tb, bb, z);
- if (r == Z_DATA_ERROR)
- z->msg = "oversubscribed dynamic bit lengths tree";
- else if (r == Z_BUF_ERROR)
- {
- inflate_trees_free(*tb, z);
- z->msg = "incomplete dynamic bit lengths tree";
- r = Z_DATA_ERROR;
- }
- return r;
-}
-
-
-local int inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, z)
-uInt nl; /* number of literal/length codes */
-uInt nd; /* number of distance codes */
-uIntf *c; /* that many (total) code lengths */
-uIntf *bl; /* literal desired/actual bit depth */
-uIntf *bd; /* distance desired/actual bit depth */
-inflate_huft * FAR *tl; /* literal/length tree result */
-inflate_huft * FAR *td; /* distance tree result */
-z_stream *z; /* for zfree function */
-{
- int r;
-
- /* build literal/length tree */
- if ((r = huft_build(c, nl, 257, cplens, cplext, tl, bl, z)) != Z_OK)
- {
- if (r == Z_DATA_ERROR)
- z->msg = "oversubscribed literal/length tree";
- else if (r == Z_BUF_ERROR)
- {
- inflate_trees_free(*tl, z);
- z->msg = "incomplete literal/length tree";
- r = Z_DATA_ERROR;
- }
- return r;
- }
-
- /* build distance tree */
- if ((r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, z)) != Z_OK)
- {
- if (r == Z_DATA_ERROR)
- z->msg = "oversubscribed literal/length tree";
- else if (r == Z_BUF_ERROR) {
-#ifdef PKZIP_BUG_WORKAROUND
- r = Z_OK;
- }
-#else
- inflate_trees_free(*td, z);
- z->msg = "incomplete literal/length tree";
- r = Z_DATA_ERROR;
- }
- inflate_trees_free(*tl, z);
- return r;
-#endif
- }
-
- /* done */
- return Z_OK;
-}
-
-
-/* build fixed tables only once--keep them here */
-local int fixed_lock = 0;
-local int fixed_built = 0;
-#define FIXEDH 530 /* number of hufts used by fixed tables */
-local uInt fixed_left = FIXEDH;
-local inflate_huft fixed_mem[FIXEDH];
-local uInt fixed_bl;
-local uInt fixed_bd;
-local inflate_huft *fixed_tl;
-local inflate_huft *fixed_td;
-
-
-local voidpf falloc(q, n, s)
-voidpf q; /* opaque pointer (not used) */
-uInt n; /* number of items */
-uInt s; /* size of item */
-{
- Assert(s == sizeof(inflate_huft) && n <= fixed_left,
- "inflate_trees falloc overflow");
- if (q) s++; /* to make some compilers happy */
- fixed_left -= n;
- return (voidpf)(fixed_mem + fixed_left);
-}
-
-
-local void ffree(q, p, n)
-voidpf q;
-voidpf p;
-uInt n;
-{
- Assert(0, "inflate_trees ffree called!");
- if (q) q = p; /* to make some compilers happy */
-}
-
-
-local int inflate_trees_fixed(bl, bd, tl, td)
-uIntf *bl; /* literal desired/actual bit depth */
-uIntf *bd; /* distance desired/actual bit depth */
-inflate_huft * FAR *tl; /* literal/length tree result */
-inflate_huft * FAR *td; /* distance tree result */
-{
- /* build fixed tables if not built already--lock out other instances */
- while (++fixed_lock > 1)
- fixed_lock--;
- if (!fixed_built)
- {
- int k; /* temporary variable */
- unsigned c[288]; /* length list for huft_build */
- z_stream z; /* for falloc function */
-
- /* set up fake z_stream for memory routines */
- z.zalloc = falloc;
- z.zfree = ffree;
- z.opaque = Z_NULL;
-
- /* literal table */
- for (k = 0; k < 144; k++)
- c[k] = 8;
- for (; k < 256; k++)
- c[k] = 9;
- for (; k < 280; k++)
- c[k] = 7;
- for (; k < 288; k++)
- c[k] = 8;
- fixed_bl = 7;
- huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl, &z);
-
- /* distance table */
- for (k = 0; k < 30; k++)
- c[k] = 5;
- fixed_bd = 5;
- huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd, &z);
-
- /* done */
- fixed_built = 1;
- }
- fixed_lock--;
- *bl = fixed_bl;
- *bd = fixed_bd;
- *tl = fixed_tl;
- *td = fixed_td;
- return Z_OK;
-}
-
-
-local int inflate_trees_free(t, z)
-inflate_huft *t; /* table to free */
-z_stream *z; /* for zfree function */
-/* Free the malloc'ed tables built by huft_build(), which makes a linked
- list of the tables it made, with the links in a dummy first entry of
- each table. */
-{
- register inflate_huft *p, *q;
-
- /* Go through linked list, freeing from the malloced (t[-1]) address. */
- p = t;
- while (p != Z_NULL)
- {
- q = (--p)->next;
- ZFREE(z, p, p->word.Nalloc * sizeof(inflate_huft));
- p = q;
- }
- return Z_OK;
-}
-
-/*+++++*/
-/* infcodes.c -- process literals and length/distance pairs
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-/* inflate codes private state */
-struct inflate_codes_state {
-
- /* mode */
- enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
- START, /* x: set up for LEN */
- LEN, /* i: get length/literal/eob next */
- LENEXT, /* i: getting length extra (have base) */
- DIST, /* i: get distance next */
- DISTEXT, /* i: getting distance extra */
- COPY, /* o: copying bytes in window, waiting for space */
- LIT, /* o: got literal, waiting for output space */
- WASH, /* o: got eob, possibly still output waiting */
- END, /* x: got eob and all data flushed */
- BADCODE} /* x: got error */
- mode; /* current inflate_codes mode */
-
- /* mode dependent information */
- uInt len;
- union {
- struct {
- inflate_huft *tree; /* pointer into tree */
- uInt need; /* bits needed */
- } code; /* if LEN or DIST, where in tree */
- uInt lit; /* if LIT, literal */
- struct {
- uInt get; /* bits to get for extra */
- uInt dist; /* distance back to copy from */
- } copy; /* if EXT or COPY, where and how much */
- } sub; /* submode */
-
- /* mode independent information */
- Byte lbits; /* ltree bits decoded per branch */
- Byte dbits; /* dtree bits decoder per branch */
- inflate_huft *ltree; /* literal/length/eob tree */
- inflate_huft *dtree; /* distance tree */
-
-};
-
-
-local inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
-uInt bl, bd;
-inflate_huft *tl, *td;
-z_stream *z;
-{
- inflate_codes_statef *c;
-
- if ((c = (inflate_codes_statef *)
- ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
- {
- c->mode = START;
- c->lbits = (Byte)bl;
- c->dbits = (Byte)bd;
- c->ltree = tl;
- c->dtree = td;
- Tracev((stderr, "inflate: codes new\n"));
- }
- return c;
-}
-
-
-local int inflate_codes(s, z, r)
-inflate_blocks_statef *s;
-z_stream *z;
-int r;
-{
- uInt j; /* temporary storage */
- inflate_huft *t; /* temporary pointer */
- uInt e; /* extra bits or operation */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
- Bytef *f; /* pointer to copy strings from */
- inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
-
- /* copy input/output information to locals (UPDATE macro restores) */
- LOAD
-
- /* process input and output based on current state */
- while (1) switch (c->mode)
- { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
- case START: /* x: set up for LEN */
-#ifndef SLOW
- if (m >= 258 && n >= 10)
- {
- UPDATE
- r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
- LOAD
- if (r != Z_OK)
- {
- c->mode = r == Z_STREAM_END ? WASH : BADCODE;
- break;
- }
- }
-#endif /* !SLOW */
- c->sub.code.need = c->lbits;
- c->sub.code.tree = c->ltree;
- c->mode = LEN;
- case LEN: /* i: get length/literal/eob next */
- j = c->sub.code.need;
- NEEDBITS(j)
- t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
- DUMPBITS(t->bits)
- e = (uInt)(t->exop);
- if (e == 0) /* literal */
- {
- c->sub.lit = t->base;
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", t->base));
- c->mode = LIT;
- break;
- }
- if (e & 16) /* length */
- {
- c->sub.copy.get = e & 15;
- c->len = t->base;
- c->mode = LENEXT;
- break;
- }
- if ((e & 64) == 0) /* next table */
- {
- c->sub.code.need = e;
- c->sub.code.tree = t->next;
- break;
- }
- if (e & 32) /* end of block */
- {
- Tracevv((stderr, "inflate: end of block\n"));
- c->mode = WASH;
- break;
- }
- c->mode = BADCODE; /* invalid code */
- z->msg = "invalid literal/length code";
- r = Z_DATA_ERROR;
- LEAVE
- case LENEXT: /* i: getting length extra (have base) */
- j = c->sub.copy.get;
- NEEDBITS(j)
- c->len += (uInt)b & inflate_mask[j];
- DUMPBITS(j)
- c->sub.code.need = c->dbits;
- c->sub.code.tree = c->dtree;
- Tracevv((stderr, "inflate: length %u\n", c->len));
- c->mode = DIST;
- case DIST: /* i: get distance next */
- j = c->sub.code.need;
- NEEDBITS(j)
- t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
- DUMPBITS(t->bits)
- e = (uInt)(t->exop);
- if (e & 16) /* distance */
- {
- c->sub.copy.get = e & 15;
- c->sub.copy.dist = t->base;
- c->mode = DISTEXT;
- break;
- }
- if ((e & 64) == 0) /* next table */
- {
- c->sub.code.need = e;
- c->sub.code.tree = t->next;
- break;
- }
- c->mode = BADCODE; /* invalid code */
- z->msg = "invalid distance code";
- r = Z_DATA_ERROR;
- LEAVE
- case DISTEXT: /* i: getting distance extra */
- j = c->sub.copy.get;
- NEEDBITS(j)
- c->sub.copy.dist += (uInt)b & inflate_mask[j];
- DUMPBITS(j)
- Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
- c->mode = COPY;
- case COPY: /* o: copying bytes in window, waiting for space */
-#ifndef __TURBOC__ /* Turbo C bug for following expression */
- f = (uInt)(q - s->window) < c->sub.copy.dist ?
- s->end - (c->sub.copy.dist - (q - s->window)) :
- q - c->sub.copy.dist;
-#else
- f = q - c->sub.copy.dist;
- if ((uInt)(q - s->window) < c->sub.copy.dist)
- f = s->end - (c->sub.copy.dist - (q - s->window));
-#endif
- while (c->len)
- {
- NEEDOUT
- OUTBYTE(*f++)
- if (f == s->end)
- f = s->window;
- c->len--;
- }
- c->mode = START;
- break;
- case LIT: /* o: got literal, waiting for output space */
- NEEDOUT
- OUTBYTE(c->sub.lit)
- c->mode = START;
- break;
- case WASH: /* o: got eob, possibly more output */
- FLUSH
- if (s->read != s->write)
- LEAVE
- c->mode = END;
- case END:
- r = Z_STREAM_END;
- LEAVE
- case BADCODE: /* x: got error */
- r = Z_DATA_ERROR;
- LEAVE
- default:
- r = Z_STREAM_ERROR;
- LEAVE
- }
-}
-
-
-local void inflate_codes_free(c, z)
-inflate_codes_statef *c;
-z_stream *z;
-{
- ZFREE(z, c, sizeof(struct inflate_codes_state));
- Tracev((stderr, "inflate: codes free\n"));
-}
-
-/*+++++*/
-/* inflate_util.c -- data and routines common to blocks and codes
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* copy as much as possible from the sliding window to the output area */
-local int inflate_flush(s, z, r)
-inflate_blocks_statef *s;
-z_stream *z;
-int r;
-{
- uInt n;
- Bytef *p, *q;
-
- /* local copies of source and destination pointers */
- p = z->next_out;
- q = s->read;
-
- /* compute number of bytes to copy as far as end of window */
- n = (uInt)((q <= s->write ? s->write : s->end) - q);
- if (n > z->avail_out) n = z->avail_out;
- if (n && r == Z_BUF_ERROR) r = Z_OK;
-
- /* update counters */
- z->avail_out -= n;
- z->total_out += n;
-
- /* update check information */
- if (s->checkfn != Z_NULL)
- s->check = (*s->checkfn)(s->check, q, n);
-
- /* copy as far as end of window */
- if (p != NULL) {
- zmemcpy(p, q, n);
- p += n;
- }
- q += n;
-
- /* see if more to copy at beginning of window */
- if (q == s->end)
- {
- /* wrap pointers */
- q = s->window;
- if (s->write == s->end)
- s->write = s->window;
-
- /* compute bytes to copy */
- n = (uInt)(s->write - q);
- if (n > z->avail_out) n = z->avail_out;
- if (n && r == Z_BUF_ERROR) r = Z_OK;
-
- /* update counters */
- z->avail_out -= n;
- z->total_out += n;
-
- /* update check information */
- if (s->checkfn != Z_NULL)
- s->check = (*s->checkfn)(s->check, q, n);
-
- /* copy */
- if (p != NULL) {
- zmemcpy(p, q, n);
- p += n;
- }
- q += n;
- }
-
- /* update pointers */
- z->next_out = p;
- s->read = q;
-
- /* done */
- return r;
-}
-
-
-/*+++++*/
-/* inffast.c -- process literals and length/distance pairs fast
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* simplify the use of the inflate_huft type with some defines */
-#define base more.Base
-#define next more.Next
-#define exop word.what.Exop
-#define bits word.what.Bits
-
-/* macros for bit input with no checking and for returning unused bytes */
-#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
-#define UNGRAB {n+=(c=k>>3);p-=c;k&=7;}
-
-/* Called with number of bytes left to write in window at least 258
- (the maximum string length) and number of input bytes available
- at least ten. The ten bytes are six bytes for the longest length/
- distance pair plus four bytes for overloading the bit buffer. */
-
-local int inflate_fast(bl, bd, tl, td, s, z)
-uInt bl, bd;
-inflate_huft *tl, *td;
-inflate_blocks_statef *s;
-z_stream *z;
-{
- inflate_huft *t; /* temporary pointer */
- uInt e; /* extra bits or operation */
- uLong b; /* bit buffer */
- uInt k; /* bits in bit buffer */
- Bytef *p; /* input data pointer */
- uInt n; /* bytes available there */
- Bytef *q; /* output window write pointer */
- uInt m; /* bytes to end of window or read pointer */
- uInt ml; /* mask for literal/length tree */
- uInt md; /* mask for distance tree */
- uInt c; /* bytes to copy */
- uInt d; /* distance back to copy from */
- Bytef *r; /* copy source pointer */
-
- /* load input, output, bit values */
- LOAD
-
- /* initialize masks */
- ml = inflate_mask[bl];
- md = inflate_mask[bd];
-
- /* do until not enough input or output space for fast loop */
- do { /* assume called with m >= 258 && n >= 10 */
- /* get literal/length code */
- GRABBITS(20) /* max bits for literal/length code */
- if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
- {
- DUMPBITS(t->bits)
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: * literal '%c'\n" :
- "inflate: * literal 0x%02x\n", t->base));
- *q++ = (Byte)t->base;
- m--;
- continue;
- }
- do {
- DUMPBITS(t->bits)
- if (e & 16)
- {
- /* get extra bits for length */
- e &= 15;
- c = t->base + ((uInt)b & inflate_mask[e]);
- DUMPBITS(e)
- Tracevv((stderr, "inflate: * length %u\n", c));
-
- /* decode distance base of block to copy */
- GRABBITS(15); /* max bits for distance code */
- e = (t = td + ((uInt)b & md))->exop;
- do {
- DUMPBITS(t->bits)
- if (e & 16)
- {
- /* get extra bits to add to distance base */
- e &= 15;
- GRABBITS(e) /* get extra bits (up to 13) */
- d = t->base + ((uInt)b & inflate_mask[e]);
- DUMPBITS(e)
- Tracevv((stderr, "inflate: * distance %u\n", d));
-
- /* do the copy */
- m -= c;
- if ((uInt)(q - s->window) >= d) /* offset before dest */
- { /* just copy */
- r = q - d;
- *q++ = *r++; c--; /* minimum count is three, */
- *q++ = *r++; c--; /* so unroll loop a little */
- }
- else /* else offset after destination */
- {
- e = d - (q - s->window); /* bytes from offset to end */
- r = s->end - e; /* pointer to offset */
- if (c > e) /* if source crosses, */
- {
- c -= e; /* copy to end of window */
- do {
- *q++ = *r++;
- } while (--e);
- r = s->window; /* copy rest from start of window */
- }
- }
- do { /* copy all or what's left */
- *q++ = *r++;
- } while (--c);
- break;
- }
- else if ((e & 64) == 0)
- e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop;
- else
- {
- z->msg = "invalid distance code";
- UNGRAB
- UPDATE
- return Z_DATA_ERROR;
- }
- } while (1);
- break;
- }
- if ((e & 64) == 0)
- {
- if ((e = (t = t->next + ((uInt)b & inflate_mask[e]))->exop) == 0)
- {
- DUMPBITS(t->bits)
- Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
- "inflate: * literal '%c'\n" :
- "inflate: * literal 0x%02x\n", t->base));
- *q++ = (Byte)t->base;
- m--;
- break;
- }
- }
- else if (e & 32)
- {
- Tracevv((stderr, "inflate: * end of block\n"));
- UNGRAB
- UPDATE
- return Z_STREAM_END;
- }
- else
- {
- z->msg = "invalid literal/length code";
- UNGRAB
- UPDATE
- return Z_DATA_ERROR;
- }
- } while (1);
- } while (m >= 258 && n >= 10);
-
- /* not enough input or output--restore pointers and return */
- UNGRAB
- UPDATE
- return Z_OK;
-}
-
-
-/*+++++*/
-/* zutil.c -- target dependent utility functions for the compression library
- * Copyright (C) 1995 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: zutil.c,v 1.8 1995/05/03 17:27:12 jloup Exp */
-
-char *zlib_version = ZLIB_VERSION;
-
-char *z_errmsg[] = {
-"stream end", /* Z_STREAM_END 1 */
-"", /* Z_OK 0 */
-"file error", /* Z_ERRNO (-1) */
-"stream error", /* Z_STREAM_ERROR (-2) */
-"data error", /* Z_DATA_ERROR (-3) */
-"insufficient memory", /* Z_MEM_ERROR (-4) */
-"buffer error", /* Z_BUF_ERROR (-5) */
-""};
-
-
-/*+++++*/
-/* adler32.c -- compute the Adler-32 checksum of a data stream
- * Copyright (C) 1995 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: adler32.c,v 1.6 1995/05/03 17:27:08 jloup Exp */
-
-#define BASE 65521L /* largest prime smaller than 65536 */
-#define NMAX 5552
-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
-
-#define DO1(buf) {s1 += *buf++; s2 += s1;}
-#define DO2(buf) DO1(buf); DO1(buf);
-#define DO4(buf) DO2(buf); DO2(buf);
-#define DO8(buf) DO4(buf); DO4(buf);
-#define DO16(buf) DO8(buf); DO8(buf);
-
-/* ========================================================================= */
-uLong adler32(adler, buf, len)
- uLong adler;
- Bytef *buf;
- uInt len;
-{
- unsigned long s1 = adler & 0xffff;
- unsigned long s2 = (adler >> 16) & 0xffff;
- int k;
-
- if (buf == Z_NULL) return 1L;
-
- while (len > 0) {
- k = len < NMAX ? len : NMAX;
- len -= k;
- while (k >= 16) {
- DO16(buf);
- k -= 16;
- }
- if (k != 0) do {
- DO1(buf);
- } while (--k);
- s1 %= BASE;
- s2 %= BASE;
- }
- return (s2 << 16) | s1;
-}
diff --git a/mdk-stage1/ppp/pppdump/zlib.h b/mdk-stage1/ppp/pppdump/zlib.h
deleted file mode 100644
index 9c7ac734d..000000000
--- a/mdk-stage1/ppp/pppdump/zlib.h
+++ /dev/null
@@ -1,631 +0,0 @@
-/* $Id$ */
-
-/*
- * This file is derived from zlib.h and zconf.h from the zlib-0.95
- * distribution by Jean-loup Gailly and Mark Adler, with some additions
- * by Paul Mackerras to aid in implementing Deflate compression and
- * decompression for PPP packets.
- */
-
-/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 0.95, Aug 16th, 1995.
-
- Copyright (C) 1995 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- gzip@prep.ai.mit.edu madler@alumni.caltech.edu
- */
-
-#ifndef _ZLIB_H
-#define _ZLIB_H
-
-/* #include "zconf.h" */ /* included directly here */
-
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h
- */
-
-/* From: zconf.h,v 1.12 1995/05/03 17:27:12 jloup Exp */
-
-/*
- The library does not install any signal handler. It is recommended to
- add at least a handler for SIGSEGV when decompressing; the library checks
- the consistency of the input data whenever possible but may go nuts
- for some forms of corrupted input.
- */
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- * Compile with -DUNALIGNED_OK if it is OK to access shorts or ints
- * at addresses which are not a multiple of their size.
- * Under DOS, -DFAR=far or -DFAR=__far may be needed.
- */
-
-#ifndef STDC
-# if defined(MSDOS) || defined(__STDC__) || defined(__cplusplus)
-# define STDC
-# endif
-#endif
-
-#ifdef __MWERKS__ /* Metrowerks CodeWarrior declares fileno() in unix.h */
-# include <unix.h>
-#endif
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-# ifdef MAXSEG_64K
-# define MAX_MEM_LEVEL 8
-# else
-# define MAX_MEM_LEVEL 9
-# endif
-#endif
-
-#ifndef FAR
-# define FAR
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2 */
-#ifndef MAX_WBITS
-# define MAX_WBITS 15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
- 1 << (windowBits+2) + 1 << (memLevel+9)
- that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
- make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
- The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
- /* Type declarations */
-
-#ifndef OF /* function prototypes */
-# ifdef STDC
-# define OF(args) args
-# else
-# define OF(args) ()
-# endif
-#endif
-
-typedef unsigned char Byte; /* 8 bits */
-typedef unsigned int uInt; /* 16 bits or more */
-typedef unsigned long uLong; /* 32 bits or more */
-
-typedef Byte FAR Bytef;
-typedef char FAR charf;
-typedef int FAR intf;
-typedef uInt FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
- typedef void FAR *voidpf;
- typedef void *voidp;
-#else
- typedef Byte FAR *voidpf;
- typedef Byte *voidp;
-#endif
-
-/* end of original zconf.h */
-
-#define ZLIB_VERSION "0.95P"
-
-/*
- The 'zlib' compression library provides in-memory compression and
- decompression functions, including integrity checks of the uncompressed
- data. This version of the library supports only one compression method
- (deflation) but other algorithms may be added later and will have the same
- stream interface.
-
- For compression the application must provide the output buffer and
- may optionally provide the input buffer for optimization. For decompression,
- the application must provide the input buffer and may optionally provide
- the output buffer for optimization.
-
- Compression can be done in a single step if the buffers are large
- enough (for example if an input file is mmap'ed), or can be done by
- repeated calls of the compression function. In the latter case, the
- application must provide more input and/or consume the output
- (providing more output space) before each call.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void (*free_func) OF((voidpf opaque, voidpf address, uInt nbytes));
-
-struct internal_state;
-
-typedef struct z_stream_s {
- Bytef *next_in; /* next input byte */
- uInt avail_in; /* number of bytes available at next_in */
- uLong total_in; /* total nb of input bytes read so far */
-
- Bytef *next_out; /* next output byte should be put there */
- uInt avail_out; /* remaining free space at next_out */
- uLong total_out; /* total nb of bytes output so far */
-
- char *msg; /* last error message, NULL if no error */
- struct internal_state FAR *state; /* not visible by applications */
-
- alloc_func zalloc; /* used to allocate the internal state */
- free_func zfree; /* used to free the internal state */
- voidp opaque; /* private data object passed to zalloc and zfree */
-
- Byte data_type; /* best guess about the data type: ascii or binary */
-
-} z_stream;
-
-/*
- The application must update next_in and avail_in when avail_in has
- dropped to zero. It must update next_out and avail_out when avail_out
- has dropped to zero. The application must initialize zalloc, zfree and
- opaque before calling the init function. All other fields are set by the
- compression library and must not be updated by the application.
-
- The opaque value provided by the application will be passed as the first
- parameter for calls of zalloc and zfree. This can be useful for custom
- memory management. The compression library attaches no meaning to the
- opaque value.
-
- zalloc must return Z_NULL if there is not enough memory for the object.
- On 16-bit systems, the functions zalloc and zfree must be able to allocate
- exactly 65536 bytes, but will not be required to allocate more than this
- if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
- pointers returned by zalloc for objects of exactly 65536 bytes *must*
- have their offset normalized to zero. The default allocation function
- provided by this library ensures this (see zutil.c). To reduce memory
- requirements and avoid any allocation of 64K objects, at the expense of
- compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
- The fields total_in and total_out can be used for statistics or
- progress reports. After compression, total_in holds the total size of
- the uncompressed data and may be saved for use in the decompressor
- (particularly if the decompressor wants to decompress everything in
- a single step).
-*/
-
- /* constants */
-
-#define Z_NO_FLUSH 0
-#define Z_PARTIAL_FLUSH 1
-#define Z_FULL_FLUSH 2
-#define Z_SYNC_FLUSH 3 /* experimental: partial_flush + byte align */
-#define Z_FINISH 4
-#define Z_PACKET_FLUSH 5
-/* See deflate() below for the usage of these constants */
-
-#define Z_OK 0
-#define Z_STREAM_END 1
-#define Z_ERRNO (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR (-3)
-#define Z_MEM_ERROR (-4)
-#define Z_BUF_ERROR (-5)
-/* error codes for the compression/decompression functions */
-
-#define Z_BEST_SPEED 1
-#define Z_BEST_COMPRESSION 9
-#define Z_DEFAULT_COMPRESSION (-1)
-/* compression levels */
-
-#define Z_FILTERED 1
-#define Z_HUFFMAN_ONLY 2
-#define Z_DEFAULT_STRATEGY 0
-
-#define Z_BINARY 0
-#define Z_ASCII 1
-#define Z_UNKNOWN 2
-/* Used to set the data_type field */
-
-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
-
-extern char *zlib_version;
-/* The application can compare zlib_version and ZLIB_VERSION for consistency.
- If the first character differs, the library code actually used is
- not compatible with the zlib.h header file used by the application.
- */
-
- /* basic functions */
-
-extern int deflateInit OF((z_stream *strm, int level));
-/*
- Initializes the internal stream state for compression. The fields
- zalloc, zfree and opaque must be initialized before by the caller.
- If zalloc and zfree are set to Z_NULL, deflateInit updates them to
- use default allocation functions.
-
- The compression level must be Z_DEFAULT_COMPRESSION, or between 1 and 9:
- 1 gives best speed, 9 gives best compression. Z_DEFAULT_COMPRESSION requests
- a default compromise between speed and compression (currently equivalent
- to level 6).
-
- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if level is not a valid compression level.
- msg is set to null if there is no error message. deflateInit does not
- perform any compression: this will be done by deflate().
-*/
-
-
-extern int deflate OF((z_stream *strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Compress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in and avail_in are updated and
- processing will resume at this point for the next call of deflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. This action is forced if the parameter flush is non zero.
- Forcing flush frequently degrades the compression ratio, so this parameter
- should be set only when necessary (in interactive applications).
- Some output may be provided even if flush is not set.
-
- Before the call of deflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating avail_in or avail_out accordingly; avail_out
- should never be zero before the call. The application can consume the
- compressed output when it wants, for example when the output buffer is full
- (avail_out == 0), or after each call of deflate().
-
- If the parameter flush is set to Z_PARTIAL_FLUSH, the current compression
- block is terminated and flushed to the output buffer so that the
- decompressor can get all input data available so far. For method 9, a future
- variant on method 8, the current block will be flushed but not terminated.
- If flush is set to Z_FULL_FLUSH, the compression block is terminated, a
- special marker is output and the compression dictionary is discarded; this
- is useful to allow the decompressor to synchronize if one compressed block
- has been damaged (see inflateSync below). Flushing degrades compression and
- so should be used only when necessary. Using Z_FULL_FLUSH too often can
- seriously degrade the compression. If deflate returns with avail_out == 0,
- this function must be called again with the same value of the flush
- parameter and more output space (updated avail_out), until the flush is
- complete (deflate returns with non-zero avail_out).
-
- If the parameter flush is set to Z_PACKET_FLUSH, the compression
- block is terminated, and a zero-length stored block is output,
- omitting the length bytes (the effect of this is that the 3-bit type
- code 000 for a stored block is output, and the output is then
- byte-aligned). This is designed for use at the end of a PPP packet.
- In addition, if the current compression block contains all the data
- since the last Z_PACKET_FLUSH, it is never output as a stored block.
- If the current compression block output as a static or dynamic block
- would not be at least `minCompression' bytes smaller than the
- original data, then nothing is output for that block. (The type
- code for the zero-length stored block is still output, resulting in
- a single zero byte being output for the whole packet.)
- `MinCompression' is a parameter to deflateInit2, or 0 if deflateInit
- is used.
-
- If the parameter flush is set to Z_FINISH, all pending input is processed,
- all pending output is flushed and deflate returns with Z_STREAM_END if there
- was enough output space; if deflate returns with Z_OK, this function must be
- called again with Z_FINISH and more output space (updated avail_out) but no
- more input data, until it returns with Z_STREAM_END or an error. After
- deflate has returned Z_STREAM_END, the only possible operations on the
- stream are deflateReset or deflateEnd.
-
- Z_FINISH can be used immediately after deflateInit if all the compression
- is to be done in a single step. In this case, avail_out must be at least
- 0.1% larger than avail_in plus 12 bytes. If deflate does not return
- Z_STREAM_END, then it must be called again as described above.
-
- deflate() may update data_type if it can make a good guess about
- the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
- binary. This field is only for information purposes and does not affect
- the compression algorithm in any manner.
-
- deflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if all input has been
- consumed and all output has been produced (only when flush is set to
- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
- if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible.
-*/
-
-
-extern int deflateEnd OF((z_stream *strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
- stream state was inconsistent. In the error case, msg may be set
- but then points to a static string (which must not be deallocated).
-*/
-
-
-extern int inflateInit OF((z_stream *strm));
-/*
- Initializes the internal stream state for decompression. The fields
- zalloc and zfree must be initialized before by the caller. If zalloc and
- zfree are set to Z_NULL, inflateInit updates them to use default allocation
- functions.
-
- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory. msg is set to null if there is no error message.
- inflateInit does not perform any decompression: this will be done by
- inflate().
-*/
-
-
-extern int inflate OF((z_stream *strm, int flush));
-/*
- Performs one or both of the following actions:
-
- - Decompress more input starting at next_in and update next_in and avail_in
- accordingly. If not all input can be processed (because there is not
- enough room in the output buffer), next_in is updated and processing
- will resume at this point for the next call of inflate().
-
- - Provide more output starting at next_out and update next_out and avail_out
- accordingly. inflate() always provides as much output as possible
- (until there is no more input data or no more space in the output buffer).
-
- Before the call of inflate(), the application should ensure that at least
- one of the actions is possible, by providing more input and/or consuming
- more output, and updating the next_* and avail_* values accordingly.
- The application can consume the uncompressed output when it wants, for
- example when the output buffer is full (avail_out == 0), or after each
- call of inflate().
-
- If the parameter flush is set to Z_PARTIAL_FLUSH or Z_PACKET_FLUSH,
- inflate flushes as much output as possible to the output buffer. The
- flushing behavior of inflate is not specified for values of the flush
- parameter other than Z_PARTIAL_FLUSH, Z_PACKET_FLUSH or Z_FINISH, but the
- current implementation actually flushes as much output as possible
- anyway. For Z_PACKET_FLUSH, inflate checks that once all the input data
- has been consumed, it is expecting to see the length field of a stored
- block; if not, it returns Z_DATA_ERROR.
-
- inflate() should normally be called until it returns Z_STREAM_END or an
- error. However if all decompression is to be performed in a single step
- (a single call of inflate), the parameter flush should be set to
- Z_FINISH. In this case all pending input is processed and all pending
- output is flushed; avail_out must be large enough to hold all the
- uncompressed data. (The size of the uncompressed data may have been saved
- by the compressor for this purpose.) The next operation on this stream must
- be inflateEnd to deallocate the decompression state. The use of Z_FINISH
- is never required, but can be used to inform inflate that a faster routine
- may be used for the single inflate() call.
-
- inflate() returns Z_OK if some progress has been made (more input
- processed or more output produced), Z_STREAM_END if the end of the
- compressed data has been reached and all uncompressed output has been
- produced, Z_DATA_ERROR if the input data was corrupted, Z_STREAM_ERROR if
- the stream structure was inconsistent (for example if next_in or next_out
- was NULL), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if no
- progress is possible or if there was not enough room in the output buffer
- when Z_FINISH is used. In the Z_DATA_ERROR case, the application may then
- call inflateSync to look for a good compression block. */
-
-
-extern int inflateEnd OF((z_stream *strm));
-/*
- All dynamically allocated data structures for this stream are freed.
- This function discards any unprocessed input and does not flush any
- pending output.
-
- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
- was inconsistent. In the error case, msg may be set but then points to a
- static string (which must not be deallocated).
-*/
-
- /* advanced functions */
-
-/*
- The following functions are needed only in some special applications.
-*/
-
-extern int deflateInit2 OF((z_stream *strm,
- int level,
- int method,
- int windowBits,
- int memLevel,
- int strategy,
- int minCompression));
-/*
- This is another version of deflateInit with more compression options. The
- fields next_in, zalloc and zfree must be initialized before by the caller.
-
- The method parameter is the compression method. It must be 8 in this
- version of the library. (Method 9 will allow a 64K history buffer and
- partial block flushes.)
-
- The windowBits parameter is the base two logarithm of the window size
- (the size of the history buffer). It should be in the range 8..15 for this
- version of the library (the value 16 will be allowed for method 9). Larger
- values of this parameter result in better compression at the expense of
- memory usage. The default value is 15 if deflateInit is used instead.
-
- The memLevel parameter specifies how much memory should be allocated
- for the internal compression state. memLevel=1 uses minimum memory but
- is slow and reduces compression ratio; memLevel=9 uses maximum memory
- for optimal speed. The default value is 8. See zconf.h for total memory
- usage as a function of windowBits and memLevel.
-
- The strategy parameter is used to tune the compression algorithm. Use
- the value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data
- produced by a filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman
- encoding only (no string match). Filtered data consists mostly of small
- values with a somewhat random distribution. In this case, the
- compression algorithm is tuned to compress them better. The strategy
- parameter only affects the compression ratio but not the correctness of
- the compressed output even if it is not set appropriately.
-
- The minCompression parameter specifies the minimum reduction in size
- required for a compressed block to be output when Z_PACKET_FLUSH is
- used (see the description of deflate above).
-
- If next_in is not null, the library will use this buffer to hold also
- some history information; the buffer must either hold the entire input
- data, or have at least 1<<(windowBits+1) bytes and be writable. If next_in
- is null, the library will allocate its own history buffer (and leave next_in
- null). next_out need not be provided here but must be provided by the
- application for the next call of deflate().
-
- If the history buffer is provided by the application, next_in must
- must never be changed by the application since the compressor maintains
- information inside this buffer from call to call; the application
- must provide more input only by increasing avail_in. next_in is always
- reset by the library in this case.
-
- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- an invalid method). msg is set to null if there is no error message.
- deflateInit2 does not perform any compression: this will be done by
- deflate().
-*/
-
-extern int deflateCopy OF((z_stream *dest,
- z_stream *source));
-/*
- Sets the destination stream as a complete copy of the source stream. If
- the source stream is using an application-supplied history buffer, a new
- buffer is allocated for the destination stream. The compressed output
- buffer is always application-supplied. It's the responsibility of the
- application to provide the correct values of next_out and avail_out for the
- next call of deflate.
-
- This function is useful when several compression strategies will be
- tried, for example when there are several ways of pre-processing the input
- data with a filter. The streams that will be discarded should then be freed
- by calling deflateEnd. Note that deflateCopy duplicates the internal
- compression state which can be quite large, so this strategy is slow and
- can consume lots of memory.
-
- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
- (such as zalloc being NULL). msg is left unchanged in both source and
- destination.
-*/
-
-extern int deflateReset OF((z_stream *strm));
-/*
- This function is equivalent to deflateEnd followed by deflateInit,
- but does not free and reallocate all the internal compression state.
- The stream will keep the same compression level and any other attributes
- that may have been set by deflateInit2.
-
- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-extern int inflateInit2 OF((z_stream *strm,
- int windowBits));
-/*
- This is another version of inflateInit with more compression options. The
- fields next_out, zalloc and zfree must be initialized before by the caller.
-
- The windowBits parameter is the base two logarithm of the maximum window
- size (the size of the history buffer). It should be in the range 8..15 for
- this version of the library (the value 16 will be allowed soon). The
- default value is 15 if inflateInit is used instead. If a compressed stream
- with a larger window size is given as input, inflate() will return with
- the error code Z_DATA_ERROR instead of trying to allocate a larger window.
-
- If next_out is not null, the library will use this buffer for the history
- buffer; the buffer must either be large enough to hold the entire output
- data, or have at least 1<<windowBits bytes. If next_out is null, the
- library will allocate its own buffer (and leave next_out null). next_in
- need not be provided here but must be provided by the application for the
- next call of inflate().
-
- If the history buffer is provided by the application, next_out must
- never be changed by the application since the decompressor maintains
- history information inside this buffer from call to call; the application
- can only reset next_out to the beginning of the history buffer when
- avail_out is zero and all output has been consumed.
-
- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was
- not enough memory, Z_STREAM_ERROR if a parameter is invalid (such as
- windowBits < 8). msg is set to null if there is no error message.
- inflateInit2 does not perform any decompression: this will be done by
- inflate().
-*/
-
-extern int inflateSync OF((z_stream *strm));
-/*
- Skips invalid compressed data until the special marker (see deflate()
- above) can be found, or until all available input is skipped. No output
- is provided.
-
- inflateSync returns Z_OK if the special marker has been found, Z_BUF_ERROR
- if no more input was provided, Z_DATA_ERROR if no marker has been found,
- or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
- case, the application may save the current current value of total_in which
- indicates where valid compressed data was found. In the error case, the
- application may repeatedly call inflateSync, providing more input each time,
- until success or end of the input data.
-*/
-
-extern int inflateReset OF((z_stream *strm));
-/*
- This function is equivalent to inflateEnd followed by inflateInit,
- but does not free and reallocate all the internal decompression state.
- The stream will keep attributes that may have been set by inflateInit2.
-
- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
- stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-extern int inflateIncomp OF((z_stream *strm));
-/*
- This function adds the data at next_in (avail_in bytes) to the output
- history without performing any output. There must be no pending output,
- and the decompressor must be expecting to see the start of a block.
- Calling this function is equivalent to decompressing a stored block
- containing the data at next_in (except that the data is not output).
-*/
-
- /* checksum functions */
-
-/*
- This function is not related to compression but is exported
- anyway because it might be useful in applications using the
- compression library.
-*/
-
-extern uLong adler32 OF((uLong adler, Bytef *buf, uInt len));
-
-/*
- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is NULL, this function returns
- the required initial value for the checksum.
- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
- much faster. Usage example:
-
- uLong adler = adler32(0L, Z_NULL, 0);
-
- while (read_buffer(buffer, length) != EOF) {
- adler = adler32(adler, buffer, length);
- }
- if (adler != original_adler) error();
-*/
-
-#ifndef _Z_UTIL_H
- struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-#endif /* _ZLIB_H */
diff --git a/mdk-stage1/ppp/pppstats/Makefile.linux b/mdk-stage1/ppp/pppstats/Makefile.linux
deleted file mode 100644
index ef0764c5d..000000000
--- a/mdk-stage1/ppp/pppstats/Makefile.linux
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# pppstats makefile
-# $Id$
-#
-
-PPPSTATSRCS = pppstats.c
-PPPSTATOBJS = pppstats.o
-
-#CC = gcc
-COPTS = -O
-COMPILE_FLAGS = -D_linux_ -I../include
-LIBS =
-
-INSTALL= install -o root -g daemon
-
-CFLAGS = $(COPTS) $(COMPILE_FLAGS)
-
-all: pppstats
-
-install: pppstats
- $(INSTALL) -s -c pppstats $(BINDIR)/pppstats
- $(INSTALL) -c -m 444 pppstats.8 $(MANDIR)/man8/pppstats.8
-
-pppstats: $(PPPSTATSRCS)
- $(CC) $(CFLAGS) -o pppstats pppstats.c $(LIBS)
-
-clean:
- rm -f pppstats *~ #* core
-
-depend:
- cpp -M $(CFLAGS) $(PPPSTATSRCS) >.depend
-# makedepend $(CFLAGS) $(PPPSTATSRCS)
diff --git a/mdk-stage1/ppp/pppstats/Makefile.sol2 b/mdk-stage1/ppp/pppstats/Makefile.sol2
deleted file mode 100644
index a6544e61b..000000000
--- a/mdk-stage1/ppp/pppstats/Makefile.sol2
+++ /dev/null
@@ -1,20 +0,0 @@
-#
-# pppstats Makefile for SVR4 systems
-# $Id$
-#
-
-include ../solaris/Makedefs
-
-CFLAGS = -DSTREAMS -I../include $(COPTS)
-
-all: pppstats
-
-pppstats: pppstats.c
- $(CC) $(CFLAGS) -o pppstats pppstats.c
-
-install: pppstats
- $(INSTALL) -f $(BINDIR) pppstats
- $(INSTALL) -m 444 -f $(MANDIR)/man8 pppstats.8
-
-clean:
- rm -f pppstats *~ core
diff --git a/mdk-stage1/ppp/pppstats/Makefile.sunos4 b/mdk-stage1/ppp/pppstats/Makefile.sunos4
deleted file mode 100644
index 2a036f28f..000000000
--- a/mdk-stage1/ppp/pppstats/Makefile.sunos4
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# pppstats makefile
-# $Id$
-#
-
-include ../sunos4/Makedefs
-
-PPPSTATSRCS = pppstats.c
-PPPSTATOBJS = pppstats.o
-
-COMPILE_FLAGS = -DSTREAMS -DSUNOS4
-LIBS =
-
-CFLAGS = -I../include $(COPTS) $(COMPILE_FLAGS)
-
-all: pppstats
-
-install: pppstats
- $(INSTALL) -c pppstats $(BINDIR)/pppstats
- $(INSTALL) -c -m 444 pppstats.8 $(MANDIR)/man8/pppstats.8
-
-pppstats: $(PPPSTATSRCS)
- $(CC) $(CFLAGS) -o pppstats pppstats.c $(LIBS)
-
-clean:
- rm -f pppstats *~ #* core
-
-depend:
- cpp -M $(CFLAGS) $(PPPSTATSRCS) >.depend
-# makedepend $(CFLAGS) $(PPPSTATSRCS)
diff --git a/mdk-stage1/ppp/pppstats/pppstats.8 b/mdk-stage1/ppp/pppstats/pppstats.8
deleted file mode 100644
index 1ba8d5779..000000000
--- a/mdk-stage1/ppp/pppstats/pppstats.8
+++ /dev/null
@@ -1,217 +0,0 @@
-.\" @(#) $Id$
-.TH PPPSTATS 8 "26 June 1995"
-.SH NAME
-pppstats \- print PPP statistics
-.SH SYNOPSIS
-.B pppstats
-[
-.B -a
-] [
-.B -v
-] [
-.B -r
-] [
-.B -z
-] [
-.B -c
-.I <count>
-] [
-.B -w
-.I <secs>
-] [
-.I interface
-]
-.ti 12
-.SH DESCRIPTION
-The
-.B pppstats
-utility reports PPP-related statistics at regular intervals for the
-specified PPP interface. If the interface is unspecified, it will
-default to ppp0.
-The display is split horizontally
-into input and output sections containing columns of statistics
-describing the properties and volume of packets received and
-transmitted by the interface.
-.PP
-The options are as follows:
-.TP
-.B -a
-Display absolute values rather than deltas. With this option, all
-reports show statistics for the time since the link was initiated.
-Without this option, the second and subsequent reports show statistics
-for the time since the last report.
-.TP
-.B -c \fIcount
-Repeat the display
-.I count
-times. If this option is not specified, the default repeat count is 1
-if the
-.B -w
-option is not specified, otherwise infinity.
-.TP
-.B -r
-Display additional statistics summarizing the compression ratio
-achieved by the packet compression algorithm in use.
-.TP
-.B -v
-Display additional statistics relating to the performance of the Van
-Jacobson TCP header compression algorithm.
-.TP
-.B -w \fIwait
-Pause
-.I wait
-seconds between each display. If this option is not specified, the
-default interval is 5 seconds.
-.TP
-.B -z
-Instead of the standard display, show statistics indicating the
-performance of the packet compression algorithm in use.
-.PP
-The following fields are printed on the input side when the
-.B -z
-option is not used:
-.TP
-.B IN
-The total number of bytes received by this interface.
-.TP
-.B PACK
-The total number of packets received by this interface.
-.TP
-.B VJCOMP
-The number of header-compressed TCP packets received by this interface.
-.TP
-.B VJUNC
-The number of header-uncompressed TCP packets received by this
-interface. Not reported when the
-.B -r
-option is specified.
-.TP
-.B VJERR
-The number of corrupted or bogus header-compressed TCP packets
-received by this interface. Not reported when the
-.B -r
-option is specified.
-.TP
-.B VJTOSS
-The number of VJ header-compressed TCP packets dropped on reception by
-this interface because of preceding errors. Only reported when the
-.B -v
-option is specified.
-.TP
-.B NON-VJ
-The total number of non-TCP packets received by this interface. Only
-reported when the
-.B -v
-option is specified.
-.TP
-.B RATIO
-The compression ratio achieved for received packets by the
-packet compression scheme in use, defined as the uncompressed size
-divided by the compressed size.
-Only reported when the
-.B -r
-option is specified.
-.TP
-.B UBYTE
-The total number of bytes received, after decompression of compressed
-packets. Only reported when the
-.B -r
-option is specified.
-.PP
-The following fields are printed on the output side:
-.TP
-.B OUT
-The total number of bytes transmitted from this interface.
-.TP
-.B PACK
-The total number of packets transmitted from this interface.
-.TP
-.B VJCOMP
-The number of TCP packets transmitted from this interface with
-VJ-compressed TCP headers.
-.TP
-.B VJUNC
-The number of TCP packets transmitted from this interface with
-VJ-uncompressed TCP headers.
-Not reported when the
-.B -r
-option is specified.
-.TP
-.B NON-VJ
-The total number of non-TCP packets transmitted from this interface.
-Not reported when the
-.B -r
-option is specified.
-.TP
-.B VJSRCH
-The number of searches for the cached header entry for a VJ header
-compressed TCP packet. Only reported when the
-.B -v
-option is specified.
-.TP
-.B VJMISS
-The number of failed searches for the cached header entry for a
-VJ header compressed TCP packet. Only reported when the
-.B -v
-option is specified.
-.TP
-.B RATIO
-The compression ratio achieved for transmitted packets by the
-packet compression scheme in use, defined as the size
-before compression divided by the compressed size.
-Only reported when the
-.B -r
-option is specified.
-.TP
-.B UBYTE
-The total number of bytes to be transmitted, before packet compression
-is applied. Only reported when the
-.B -r
-option is specified.
-.PP
-When the
-.B -z
-option is specified,
-.Nm pppstats
-instead displays the following fields, relating to the packet
-compression algorithm currently in use. If packet compression is not
-in use, these fields will all display zeroes. The fields displayed on
-the input side are:
-.TP
-.B COMPRESSED BYTE
-The number of bytes of compressed packets received.
-.TP
-.B COMPRESSED PACK
-The number of compressed packets received.
-.TP
-.B INCOMPRESSIBLE BYTE
-The number of bytes of incompressible packets (that is, those which
-were transmitted in uncompressed form) received.
-.TP
-.B INCOMPRESSIBLE PACK
-The number of incompressible packets received.
-.TP
-.B COMP RATIO
-The recent compression ratio for incoming packets, defined as the
-uncompressed size divided by the compressed size (including both
-compressible and incompressible packets).
-.PP
-The fields displayed on the output side are:
-.TP
-.B COMPRESSED BYTE
-The number of bytes of compressed packets transmitted.
-.TP
-.B COMPRESSED PACK
-The number of compressed packets transmitted.
-.TP
-.B INCOMPRESSIBLE BYTE
-The number of bytes of incompressible packets transmitted (that is,
-those which were transmitted in uncompressed form).
-.TP
-.B INCOMPRESSIBLE PACK
-The number of incompressible packets transmitted.
-.TP
-.B COMP RATIO
-The recent compression ratio for outgoing packets.
-.SH SEE ALSO
-pppd(8)
diff --git a/mdk-stage1/ppp/pppstats/pppstats.c b/mdk-stage1/ppp/pppstats/pppstats.c
deleted file mode 100644
index 77b803723..000000000
--- a/mdk-stage1/ppp/pppstats/pppstats.c
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
- * print PPP statistics:
- * pppstats [-a|-d] [-v|-r|-z] [-c count] [-w wait] [interface]
- *
- * -a Show absolute values rather than deltas
- * -d Show data rate (kB/s) rather than bytes
- * -v Show more stats for VJ TCP header compression
- * -r Show compression ratio
- * -z Show compression statistics instead of default display
- *
- * History:
- * perkins@cps.msu.edu: Added compression statistics and alternate
- * display. 11/94
- * Brad Parker (brad@cayman.com) 6/92
- *
- * from the original "slstats" by Van Jacobson
- *
- * Copyright (c) 1989 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef __STDC__
-#define const
-#endif
-
-#ifndef lint
-static const char rcsid[] = "$Id$";
-#endif
-
-#include <stdio.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-
-#ifndef STREAMS
-#if defined(_linux_) && defined(__powerpc__) \
- && (__GLIBC__ == 2 && __GLIBC_MINOR__ == 0)
-/* kludge alert! */
-#undef __GLIBC__
-#endif
-#include <sys/socket.h> /* *BSD, Linux, NeXT, Ultrix etc. */
-#ifndef _linux_
-#include <net/if.h>
-#include <net/ppp_defs.h>
-#include <net/if_ppp.h>
-#else
-/* Linux */
-#if __GLIBC__ >= 2
-#include <asm/types.h> /* glibc 2 conflicts with linux/types.h */
-#include <net/if.h>
-#else
-#include <linux/types.h>
-#include <linux/if.h>
-#endif
-#include <linux/ppp_defs.h>
-#include <linux/if_ppp.h>
-#endif /* _linux_ */
-
-#else /* STREAMS */
-#include <sys/stropts.h> /* SVR4, Solaris 2, SunOS 4, OSF/1, etc. */
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-
-#endif /* STREAMS */
-
-int vflag, rflag, zflag; /* select type of display */
-int aflag; /* print absolute values, not deltas */
-int dflag; /* print data rates, not bytes */
-int interval, count;
-int infinite;
-int unit;
-int s; /* socket or /dev/ppp file descriptor */
-int signalled; /* set if alarm goes off "early" */
-char *progname;
-char *interface;
-
-#if defined(SUNOS4) || defined(ULTRIX) || defined(NeXT)
-extern int optind;
-extern char *optarg;
-#endif
-
-/*
- * If PPP_DRV_NAME is not defined, use the legacy "ppp" as the
- * device name.
- */
-#if !defined(PPP_DRV_NAME)
-#define PPP_DRV_NAME "ppp"
-#endif /* !defined(PPP_DRV_NAME) */
-
-static void usage __P((void));
-static void catchalarm __P((int));
-static void get_ppp_stats __P((struct ppp_stats *));
-static void get_ppp_cstats __P((struct ppp_comp_stats *));
-static void intpr __P((void));
-
-int main __P((int, char *argv[]));
-
-static void
-usage()
-{
- fprintf(stderr, "Usage: %s [-a|-d] [-v|-r|-z] [-c count] [-w wait] [interface]\n",
- progname);
- exit(1);
-}
-
-/*
- * Called if an interval expires before intpr has completed a loop.
- * Sets a flag to not wait for the alarm.
- */
-static void
-catchalarm(arg)
- int arg;
-{
- signalled = 1;
-}
-
-
-#ifndef STREAMS
-static void
-get_ppp_stats(curp)
- struct ppp_stats *curp;
-{
- struct ifpppstatsreq req;
-
- memset (&req, 0, sizeof (req));
-
-#ifdef _linux_
- req.stats_ptr = (caddr_t) &req.stats;
-#undef ifr_name
-#define ifr_name ifr__name
-#endif
-
- strncpy(req.ifr_name, interface, sizeof(req.ifr_name));
- if (ioctl(s, SIOCGPPPSTATS, &req) < 0) {
- fprintf(stderr, "%s: ", progname);
- if (errno == ENOTTY)
- fprintf(stderr, "kernel support missing\n");
- else
- perror("couldn't get PPP statistics");
- exit(1);
- }
- *curp = req.stats;
-}
-
-static void
-get_ppp_cstats(csp)
- struct ppp_comp_stats *csp;
-{
- struct ifpppcstatsreq creq;
-
- memset (&creq, 0, sizeof (creq));
-
-#ifdef _linux_
- creq.stats_ptr = (caddr_t) &creq.stats;
-#undef ifr_name
-#define ifr_name ifr__name
-#endif
-
- strncpy(creq.ifr_name, interface, sizeof(creq.ifr_name));
- if (ioctl(s, SIOCGPPPCSTATS, &creq) < 0) {
- fprintf(stderr, "%s: ", progname);
- if (errno == ENOTTY) {
- fprintf(stderr, "no kernel compression support\n");
- if (zflag)
- exit(1);
- rflag = 0;
- } else {
- perror("couldn't get PPP compression stats");
- exit(1);
- }
- }
-
-#ifdef _linux_
- if (creq.stats.c.bytes_out == 0) {
- creq.stats.c.bytes_out = creq.stats.c.comp_bytes + creq.stats.c.inc_bytes;
- creq.stats.c.in_count = creq.stats.c.unc_bytes;
- }
- if (creq.stats.c.bytes_out == 0)
- creq.stats.c.ratio = 0.0;
- else
- creq.stats.c.ratio = 256.0 * creq.stats.c.in_count /
- creq.stats.c.bytes_out;
-
- if (creq.stats.d.bytes_out == 0) {
- creq.stats.d.bytes_out = creq.stats.d.comp_bytes + creq.stats.d.inc_bytes;
- creq.stats.d.in_count = creq.stats.d.unc_bytes;
- }
- if (creq.stats.d.bytes_out == 0)
- creq.stats.d.ratio = 0.0;
- else
- creq.stats.d.ratio = 256.0 * creq.stats.d.in_count /
- creq.stats.d.bytes_out;
-#endif
-
- *csp = creq.stats;
-}
-
-#else /* STREAMS */
-
-int
-strioctl(fd, cmd, ptr, ilen, olen)
- int fd, cmd, ilen, olen;
- char *ptr;
-{
- struct strioctl str;
-
- str.ic_cmd = cmd;
- str.ic_timout = 0;
- str.ic_len = ilen;
- str.ic_dp = ptr;
- if (ioctl(fd, I_STR, &str) == -1)
- return -1;
- if (str.ic_len != olen)
- fprintf(stderr, "strioctl: expected %d bytes, got %d for cmd %x\n",
- olen, str.ic_len, cmd);
- return 0;
-}
-
-static void
-get_ppp_stats(curp)
- struct ppp_stats *curp;
-{
- if (strioctl(s, PPPIO_GETSTAT, curp, 0, sizeof(*curp)) < 0) {
- fprintf(stderr, "%s: ", progname);
- if (errno == EINVAL)
- fprintf(stderr, "kernel support missing\n");
- else
- perror("couldn't get PPP statistics");
- exit(1);
- }
-}
-
-static void
-get_ppp_cstats(csp)
- struct ppp_comp_stats *csp;
-{
- if (strioctl(s, PPPIO_GETCSTAT, csp, 0, sizeof(*csp)) < 0) {
- fprintf(stderr, "%s: ", progname);
- if (errno == ENOTTY) {
- fprintf(stderr, "no kernel compression support\n");
- if (zflag)
- exit(1);
- rflag = 0;
- } else {
- perror("couldn't get PPP compression statistics");
- exit(1);
- }
- }
-}
-
-#endif /* STREAMS */
-
-#define MAX0(a) ((int)(a) > 0? (a): 0)
-#define V(offset) MAX0(cur.offset - old.offset)
-#define W(offset) MAX0(ccs.offset - ocs.offset)
-
-#define RATIO(c, i, u) ((c) == 0? 1.0: (u) / ((double)(c) + (i)))
-#define CRATE(x) RATIO(W(x.comp_bytes), W(x.inc_bytes), W(x.unc_bytes))
-
-#define KBPS(n) ((n) / (interval * 1000.0))
-
-/*
- * Print a running summary of interface statistics.
- * Repeat display every interval seconds, showing statistics
- * collected over that interval. Assumes that interval is non-zero.
- * First line printed is cumulative.
- */
-static void
-intpr()
-{
- register int line = 0;
- sigset_t oldmask, mask;
- char *bunit;
- int ratef = 0;
- struct ppp_stats cur, old;
- struct ppp_comp_stats ccs, ocs;
-
- memset(&old, 0, sizeof(old));
- memset(&ocs, 0, sizeof(ocs));
-
- while (1) {
- get_ppp_stats(&cur);
- if (zflag || rflag)
- get_ppp_cstats(&ccs);
-
- (void)signal(SIGALRM, catchalarm);
- signalled = 0;
- (void)alarm(interval);
-
- if ((line % 20) == 0) {
- if (zflag) {
- printf("IN: COMPRESSED INCOMPRESSIBLE COMP | ");
- printf("OUT: COMPRESSED INCOMPRESSIBLE COMP\n");
- bunit = dflag? "KB/S": "BYTE";
- printf(" %s PACK %s PACK RATIO | ", bunit, bunit);
- printf(" %s PACK %s PACK RATIO", bunit, bunit);
- } else {
- printf("%8.8s %6.6s %6.6s",
- "IN", "PACK", "VJCOMP");
-
- if (!rflag)
- printf(" %6.6s %6.6s", "VJUNC", "VJERR");
- if (vflag)
- printf(" %6.6s %6.6s", "VJTOSS", "NON-VJ");
- if (rflag)
- printf(" %6.6s %6.6s", "RATIO", "UBYTE");
- printf(" | %8.8s %6.6s %6.6s",
- "OUT", "PACK", "VJCOMP");
-
- if (!rflag)
- printf(" %6.6s %6.6s", "VJUNC", "NON-VJ");
- if (vflag)
- printf(" %6.6s %6.6s", "VJSRCH", "VJMISS");
- if (rflag)
- printf(" %6.6s %6.6s", "RATIO", "UBYTE");
- }
- putchar('\n');
- }
-
- if (zflag) {
- if (ratef) {
- printf("%8.3f %6u %8.3f %6u %6.2f",
- KBPS(W(d.comp_bytes)),
- W(d.comp_packets),
- KBPS(W(d.inc_bytes)),
- W(d.inc_packets),
- ccs.d.ratio / 256.0);
- printf(" | %8.3f %6u %8.3f %6u %6.2f",
- KBPS(W(c.comp_bytes)),
- W(c.comp_packets),
- KBPS(W(c.inc_bytes)),
- W(c.inc_packets),
- ccs.c.ratio / 256.0);
- } else {
- printf("%8u %6u %8u %6u %6.2f",
- W(d.comp_bytes),
- W(d.comp_packets),
- W(d.inc_bytes),
- W(d.inc_packets),
- ccs.d.ratio / 256.0);
- printf(" | %8u %6u %8u %6u %6.2f",
- W(c.comp_bytes),
- W(c.comp_packets),
- W(c.inc_bytes),
- W(c.inc_packets),
- ccs.c.ratio / 256.0);
- }
-
- } else {
- if (ratef)
- printf("%8.3f", KBPS(V(p.ppp_ibytes)));
- else
- printf("%8u", V(p.ppp_ibytes));
- printf(" %6u %6u",
- V(p.ppp_ipackets),
- V(vj.vjs_compressedin));
- if (!rflag)
- printf(" %6u %6u",
- V(vj.vjs_uncompressedin),
- V(vj.vjs_errorin));
- if (vflag)
- printf(" %6u %6u",
- V(vj.vjs_tossed),
- V(p.ppp_ipackets) - V(vj.vjs_compressedin)
- - V(vj.vjs_uncompressedin) - V(vj.vjs_errorin));
- if (rflag) {
- printf(" %6.2f ", CRATE(d));
- if (ratef)
- printf("%6.2f", KBPS(W(d.unc_bytes)));
- else
- printf("%6u", W(d.unc_bytes));
- }
- if (ratef)
- printf(" | %8.3f", KBPS(V(p.ppp_obytes)));
- else
- printf(" | %8u", V(p.ppp_obytes));
- printf(" %6u %6u",
- V(p.ppp_opackets),
- V(vj.vjs_compressed));
- if (!rflag)
- printf(" %6u %6u",
- V(vj.vjs_packets) - V(vj.vjs_compressed),
- V(p.ppp_opackets) - V(vj.vjs_packets));
- if (vflag)
- printf(" %6u %6u",
- V(vj.vjs_searches),
- V(vj.vjs_misses));
- if (rflag) {
- printf(" %6.2f ", CRATE(c));
- if (ratef)
- printf("%6.2f", KBPS(W(c.unc_bytes)));
- else
- printf("%6u", W(c.unc_bytes));
- }
-
- }
-
- putchar('\n');
- fflush(stdout);
- line++;
-
- count--;
- if (!infinite && !count)
- break;
-
- sigemptyset(&mask);
- sigaddset(&mask, SIGALRM);
- sigprocmask(SIG_BLOCK, &mask, &oldmask);
- if (!signalled) {
- sigemptyset(&mask);
- sigsuspend(&mask);
- }
- sigprocmask(SIG_SETMASK, &oldmask, NULL);
- signalled = 0;
- (void)alarm(interval);
-
- if (!aflag) {
- old = cur;
- ocs = ccs;
- ratef = dflag;
- }
- }
-}
-
-int
-main(argc, argv)
- int argc;
- char *argv[];
-{
- int c;
-#ifdef STREAMS
- char *dev;
-#endif
-
- interface = PPP_DRV_NAME "0";
- if ((progname = strrchr(argv[0], '/')) == NULL)
- progname = argv[0];
- else
- ++progname;
-
- while ((c = getopt(argc, argv, "advrzc:w:")) != -1) {
- switch (c) {
- case 'a':
- ++aflag;
- break;
- case 'd':
- ++dflag;
- break;
- case 'v':
- ++vflag;
- break;
- case 'r':
- ++rflag;
- break;
- case 'z':
- ++zflag;
- break;
- case 'c':
- count = atoi(optarg);
- if (count <= 0)
- usage();
- break;
- case 'w':
- interval = atoi(optarg);
- if (interval <= 0)
- usage();
- break;
- default:
- usage();
- }
- }
- argc -= optind;
- argv += optind;
-
- if (!interval && count)
- interval = 5;
- if (interval && !count)
- infinite = 1;
- if (!interval && !count)
- count = 1;
- if (aflag)
- dflag = 0;
-
- if (argc > 1)
- usage();
- if (argc > 0)
- interface = argv[0];
-
- if (sscanf(interface, PPP_DRV_NAME "%d", &unit) != 1) {
- fprintf(stderr, "%s: invalid interface '%s' specified\n",
- progname, interface);
- }
-
-#ifndef STREAMS
- {
- struct ifreq ifr;
-
- s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s < 0) {
- fprintf(stderr, "%s: ", progname);
- perror("couldn't create IP socket");
- exit(1);
- }
-
-#ifdef _linux_
-#undef ifr_name
-#define ifr_name ifr_ifrn.ifrn_name
-#endif
- strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name));
- if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) {
- fprintf(stderr, "%s: nonexistent interface '%s' specified\n",
- progname, interface);
- exit(1);
- }
- }
-
-#else /* STREAMS */
-#ifdef __osf__
- dev = "/dev/streams/ppp";
-#else
- dev = "/dev/" PPP_DRV_NAME;
-#endif
- if ((s = open(dev, O_RDONLY)) < 0) {
- fprintf(stderr, "%s: couldn't open ", progname);
- perror(dev);
- exit(1);
- }
- if (strioctl(s, PPPIO_ATTACH, &unit, sizeof(int), 0) < 0) {
- fprintf(stderr, "%s: ppp%d is not available\n", progname, unit);
- exit(1);
- }
-
-#endif /* STREAMS */
-
- intpr();
- exit(0);
-}
diff --git a/mdk-stage1/ppp/sample/auth-down b/mdk-stage1/ppp/sample/auth-down
deleted file mode 100644
index edde65db1..000000000
--- a/mdk-stage1/ppp/sample/auth-down
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# A program or script which is executed after the remote system
-# successfully authenticates itself. It is executed with the parameters
-# <interface-name> <peer-name> <user-name> <tty-device> <speed>
-#
-
-#
-# The environment is cleared before executing this script
-# so the path must be reset
-#
-PATH=/usr/sbin:/sbin:/usr/bin:/bin
-export PATH
-
-echo auth-down `date +'%y/%m/%d %T'` $* >> /var/log/pppstats
-
-# last line
diff --git a/mdk-stage1/ppp/sample/auth-up b/mdk-stage1/ppp/sample/auth-up
deleted file mode 100644
index 54722a3c0..000000000
--- a/mdk-stage1/ppp/sample/auth-up
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# A program or script which is executed after the remote system
-# successfully authenticates itself. It is executed with the parameters
-# <interface-name> <peer-name> <user-name> <tty-device> <speed>
-#
-
-#
-# The environment is cleared before executing this script
-# so the path must be reset
-#
-PATH=/usr/sbin:/sbin:/usr/bin:/bin
-export PATH
-
-echo auth-up `date +'%y/%m/%d %T'` $* >> /var/log/pppstats
-
-# last line
diff --git a/mdk-stage1/ppp/sample/ip-down b/mdk-stage1/ppp/sample/ip-down
deleted file mode 100644
index b771fb644..000000000
--- a/mdk-stage1/ppp/sample/ip-down
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-#
-# This script is run by the pppd _after_ the link is brought down.
-# It should be used to delete routes, unset IP addresses etc.
-#
-# This script is called with the following arguments:
-# Arg Name Example
-# $1 Interface name ppp0
-# $2 The tty ttyS1
-# $3 The link speed 38400
-# $4 Local IP number 12.34.56.78
-# $5 Peer IP number 12.34.56.99
-#
-
-#
-# The environment is cleared before executing this script
-# so the path must be reset
-#
-PATH=/usr/sbin:/sbin:/usr/bin:/bin
-export PATH
-
-# last line
diff --git a/mdk-stage1/ppp/sample/ip-up b/mdk-stage1/ppp/sample/ip-up
deleted file mode 100644
index 02bb71c44..000000000
--- a/mdk-stage1/ppp/sample/ip-up
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# This script is run by the pppd after the link is established.
-# It should be used to add routes, set IP address, run the mailq
-# etc.
-#
-# This script is called with the following arguments:
-# Arg Name Example
-# $1 Interface name ppp0
-# $2 The tty ttyS1
-# $3 The link speed 38400
-# $4 Local IP number 12.34.56.78
-# $5 Peer IP number 12.34.56.99
-#
-
-#
-# The environment is cleared before executing this script
-# so the path must be reset
-#
-PATH=/usr/sbin:/sbin:/usr/bin:/bin
-export PATH
-
-# last line
diff --git a/mdk-stage1/ppp/sample/options b/mdk-stage1/ppp/sample/options
deleted file mode 100644
index 8d0a3f963..000000000
--- a/mdk-stage1/ppp/sample/options
+++ /dev/null
@@ -1,153 +0,0 @@
-# /etc/ppp/options
-
-# The name of this server. Often, the FQDN is used here.
-#name <host>
-
-# Enforce the use of the hostname as the name of the local system for
-# authentication purposes (overrides the name option).
-usehostname
-
-# If no local IP address is given, pppd will use the first IP address
-# that belongs to the local hostname. If "noipdefault" is given, this
-# is disabled and the peer will have to supply an IP address.
-noipdefault
-
-# With this option, pppd will accept the peer's idea of our local IP
-# address, even if the local IP address was specified in an option.
-#ipcp-accept-local
-
-# With this option, pppd will accept the peer's idea of its (remote) IP
-# address, even if the remote IP address was specified in an option.
-#ipcp-accept-remote
-
-# Specify which DNS Servers the incoming Win95 or WinNT Connection should use
-# Two Servers can be remotely configured
-#ms-dns 192.168.1.1
-#ms-dns 192.168.1.2
-
-# Specify which WINS Servers the incoming connection Win95 or WinNT should use
-#wins-addr 192.168.1.50
-#wins-addr 192.168.1.51
-
-# enable this on a server that already has a permanent default route
-#nodefaultroute
-
-# Run the executable or shell command specified after pppd has terminated
-# the link. This script could, for example, issue commands to the modem
-# to cause it to hang up if hardware modem control signals were not
-# available.
-# If mgetty is running, it will reset the modem anyway. So there is no need
-# to do it here.
-#disconnect "chat -- \d+++\d\c OK ath0 OK"
-
-# Increase debugging level (same as -d). The debug output is written
-# to syslog LOG_LOCAL2.
-debug
-
-# Enable debugging code in the kernel-level PPP driver. The argument n
-# is a number which is the sum of the following values: 1 to enable
-# general debug messages, 2 to request that the contents of received
-# packets be printed, and 4 to request that the contents of transmitted
-# packets be printed.
-#kdebug n
-
-# Require the peer to authenticate itself before allowing network
-# packets to be sent or received.
-# Please do not disable this setting. It is expected to be standard in
-# future releases of pppd. Use the call option (see manpage) to disable
-# authentication for specific peers.
-#auth
-
-# authentication can either be pap or chap. As most people only want to
-# use pap, you can also disable chap:
-#require-pap
-#refuse-chap
-
-# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
-# on the serial port.
-crtscts
-
-# Specifies that pppd should use a UUCP-style lock on the serial device
-# to ensure exclusive access to the device.
-lock
-
-# Use the modem control lines.
-modem
-
-# async character map -- 32-bit hex; each bit is a character
-# that needs to be escaped for pppd to receive it. 0x00000001
-# represents '\x01', and 0x80000000 represents '\x1f'.
-# To allow pppd to work over a rlogin/telnet connection, ou should escape
-# XON (^Q), XOFF (^S) and ^]: (The peer should use "escape ff".)
-#asyncmap 200a0000
-asyncmap 0
-
-# Specifies that certain characters should be escaped on transmission
-# (regardless of whether the peer requests them to be escaped with its
-# async control character map). The characters to be escaped are
-# specified as a list of hex numbers separated by commas. Note that
-# almost any character can be specified for the escape option, unlike
-# the asyncmap option which only allows control characters to be
-# specified. The characters which may not be escaped are those with hex
-# values 0x20 - 0x3f or 0x5e.
-#escape 11,13,ff
-
-# Set the MRU [Maximum Receive Unit] value to <n> for negotiation. pppd
-# will ask the peer to send packets of no more than <n> bytes. The
-# minimum MRU value is 128. The default MRU value is 1500. A value of
-# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
-# bytes of data).
-#mru 542
-
-# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
-# requests a smaller value via MRU negotiation, pppd will request that
-# the kernel networking code send data packets of no more than n bytes
-# through the PPP network interface.
-#mtu <n>
-
-# Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
-# notation (e.g. 255.255.255.0).
-#netmask 255.255.255.0
-
-# Don't fork to become a background process (otherwise pppd will do so
-# if a serial device is specified).
-nodetach
-
-# Set the assumed name of the remote system for authentication purposes
-# to <n>.
-#remotename <n>
-
-# Add an entry to this system's ARP [Address Resolution Protocol]
-# table with the IP address of the peer and the Ethernet address of this
-# system. {proxyarp,noproxyarp}
-proxyarp
-
-# Use the system password database for authenticating the peer using
-# PAP. Note: mgetty already provides this option. If this is specified
-# then dialin from users using a script under Linux to fire up ppp wont work.
-#login
-
-# If this option is given, pppd will send an LCP echo-request frame to
-# the peer every n seconds. Under Linux, the echo-request is sent when
-# no packets have been received from the peer for n seconds. Normally
-# the peer should respond to the echo-request by sending an echo-reply.
-# This option can be used with the lcp-echo-failure option to detect
-# that the peer is no longer connected.
-lcp-echo-interval 30
-
-# If this option is given, pppd will presume the peer to be dead if n
-# LCP echo-requests are sent without receiving a valid LCP echo-reply.
-# If this happens, pppd will terminate the connection. Use of this
-# option requires a non-zero value for the lcp-echo-interval parameter.
-# This option can be used to enable pppd to terminate after the physical
-# connection has been broken (e.g., the modem has hung up) in
-# situations where no hardware modem control lines are available.
-lcp-echo-failure 4
-
-# Specifies that pppd should disconnect if the link is idle for n seconds.
-idle 600
-
-# Disable the IPXCP and IPX protocols.
-noipx
-
-# ---<End of File>---
diff --git a/mdk-stage1/ppp/sample/options.ttyXX b/mdk-stage1/ppp/sample/options.ttyXX
deleted file mode 100644
index d4202f534..000000000
--- a/mdk-stage1/ppp/sample/options.ttyXX
+++ /dev/null
@@ -1,14 +0,0 @@
-# If you need to set up multiple serial lines then copy this file to
-# options.<ttyname> for each tty with a modem on it.
-#
-# The options.tty file will assign an IP address to each PPP connection
-# as it comes up. They must all be distinct!
-#
-# Example:
-# options.ttyS1 for com2 under DOS.
-#
-# Edit the following line so that the first IP address
-# mentioned is the ip address of the serial port while the second
-# is the IP address of your host
-#
-hostname-s1:hostname
diff --git a/mdk-stage1/ppp/sample/pap-secrets b/mdk-stage1/ppp/sample/pap-secrets
deleted file mode 100644
index 098971b9f..000000000
--- a/mdk-stage1/ppp/sample/pap-secrets
+++ /dev/null
@@ -1,28 +0,0 @@
-# Secrets for authentication using PAP
-# client server secret IP addresses
-
-# OUTBOUND CONNECTIONS
-# Here you should add your userid password to connect to your providers via
-# pap. The * means that the password is to be used for ANY host you connect
-# to. Thus you do not have to worry about the foreign machine name. Just
-# replace password with your password.
-# If you have different providers with different passwords then you better
-# remove the following line.
-#hostname * password
-
-# INBOUND CONNECTIONS
-#client hostname <password> 192.168.1.1
-
-# If you add "auth login -chap +pap" to /etc/mgetty+sendfax/login.config,
-# all users in /etc/passwd can use their password for pap-authentication.
-#
-# Every regular user can use PPP and has to use passwords from /etc/passwd
-#* hostname ""
-# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
-# other accounts that should not be able to use pppd! Replace hostname
-# with your local hostname.
-#guest hostname "*" -
-#master hostname "*" -
-#root hostname "*" -
-#support hostname "*" -
-#stats hostname "*" -
diff --git a/mdk-stage1/ppp/scripts/README b/mdk-stage1/ppp/scripts/README
deleted file mode 100644
index 00e032ca6..000000000
--- a/mdk-stage1/ppp/scripts/README
+++ /dev/null
@@ -1,143 +0,0 @@
-This directory contains a set of scripts which have been used on Linux
-as well as Solaris 2.x systems to initiate or maintain a connection
-with PPP. The files in this directory were contributed by Al Longyear
-(longyear@netcom.com) and Adi Masputra (adi.masputra@sun.com)
-
-------------------------------------------------------------------------
-
-1. README
-
-This file. You are reading it. It is just documentation.
-
-------------------------------------------------------------------------
-
-2. ppp-on
-
-This script will initiate a connection to the PPP system. It will run
-the chat program with the connection script as a parameter. This is a
-possible security hole. However, it is simple. It is meant to replace
-the previous version of ppp-on which was not very functional.
-
-The ppp-on script has entries for the account name, password, IP
-addresses, and telephone numbers. The parameters are passed to the
-pppd process and, then in turn, to the second part of the connect
-script, as a set of environment variables.
-
-Please make sure that you put the full path name to the ppp-on-dialer
-script in the reference to it in ppp-on.
-
-------------------------------------------------------------------------
-
-3. ppp-on-dialer
-
-This is the second part to the simple calling script, ppp-on. It
-executes the chat program to connect the user with a standard UNIX
-style getty/login connection sequence.
-
-------------------------------------------------------------------------
-
-4. callback
-
-This script may be used in lieu of the ppp-on-dialer to permit the
-common modem callback sequence. You may need to make changes to the
-expected prompt string for the modem.
-
-The script works by disabling the system's detection of the DCD
-condition and working on the modem status message "NO CARRIER" which
-is generated when the modem disconnects.
-
-It is crude. It does work for my modem connection. Use as you see fit.
-
-------------------------------------------------------------------------
-
-5. redialer
-
-The redialer script is a replacement for the ppp-on-dialer script. It
-will do 'attack dialing' or 'demon dialing' of one or more telephone
-numbers. The first number which responds will be used for a
-connection.
-
-There is a limit of ten attempts and a 15 second delay between dialing
-attempts. Both values are set in the script.
-
-------------------------------------------------------------------------
-
-6. ppp-off
-
-This is a script which will terminate the active ppp connection. Use
-as either "ppp-off" to terminate ppp0, or "ppp-off <device>" to
-terminate the connection on <device>. For example, "ppp-off ppp2" will
-terminate the ppp2 connection.
-
-------------------------------------------------------------------------
-
-7. secure-card
-
-This script was written by Jim Isaacson <jcisaac@crl.com>. It is a script
-for the 'expect' programming language used with Tcl. You need to have
-expect and Tcl installed before this script may be used.
-
-This script will operate with a device marketed under the name "SecureCARD".
-This little device is mated with its controller. On the credit card size
-device, there is a sequence number which changes on a random basis. In order
-for you to connect you need to enter a fixed portion of your account name
-and the number which is displayed on this card device. The number must match
-the value at the controller in order for the account name to be used.
-
-The problem is that chat uses fixed response strings. In addition, the
-timing for running the script may prevent the use of a script that reads the
-value before it starts the dial sequence. What was needed was a script which
-asked the user at the user's console at the time that it is needed.
-
-This led to the use of expect.
-
-------------------------------------------------------------------------
-
-8. ppp-on-rsh
-
-This script will initiate a PPP connection to a remote machine using rsh.
-This is implemented by creating a master/slave pseudo-tty with the slave
-pointing to rsh, specifically with the 'pty' and 'notty' options of pppd.
-It is assumed that the remote machine contains some sort of trust
-mechanisms (such as ~/.rhosts, et al) to allow the local machine to
-connect via rsh as root.
-
-------------------------------------------------------------------------
-
-9. ppp-on-ssh
-
-This script will initiate a PPP connection to a remote machine using the
-secure shell, or ssh. I've only tested this on ssh 1.x, so those of you
-who are running ssh 2.x mahy need to modify the ssh options slightly.
-This is implemented by creating a master/slave pseudo-ttyt with the slave
-pointing to ssh, specifically with the 'pty' and 'notty' options of pppd.
-It is assumed that the remote machine can accept the ssh connection from
-the local host, in the sense that all ssh authentication mechanisms have
-been properly configured, so that a remote root user can open a ssh
-connection.
-
-------------------------------------------------------------------------
-
-10. options-rsh-loc & options-rsh-rem
-
-These options files accompany the ppp-on-rsh script mentioned above. In
-theory, you'd want to copy the options-rsh-rem to the remote machine where
-in.rshd is running. The only extra option required on the remote machine
-options file is the 'notty' option. In addition, all ASCII control characters
-[0x00 to 0x1f], plus 0xff, are escaped. This may need to be modified
-depending on the rsh (or pseudo-tty) implementation which may differ across
-platforms, for further optimizations.
-
-------------------------------------------------------------------------
-
-11. options-ssh-loc & options-ssh-rem
-
-These options files accompany the ppp-on-ssh script mentioned above. I've
-only tested this on ssh 1.x, so those of you who are running ssh 2.x need
-to modify the ssh options slightly. In theory, you'd want to copy the
-options-ssh-rem to the remote machine where sshd daemon is running. The only
-extra options required on the remote machine options file is the 'notty'
-option. In addition, all ASCII control characters [0x00 to 0x1f], plus 0xff,
-are escaped. This may need to be modified depending on the ssh (or
-pseudo-tty) implementation which may differ across platforms, for further
-optimizations.
diff --git a/mdk-stage1/ppp/scripts/callback b/mdk-stage1/ppp/scripts/callback
deleted file mode 100755
index 3e74e10b2..000000000
--- a/mdk-stage1/ppp/scripts/callback
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh
-###################################################################
-#
-# Script to dial the remote system, negotiate the connection, and send
-# it the id. Then wait for the modem to disconnect. Reset the modem
-# to answer mode and wait for the system to call back.
-#
-# The telephone number and modempass are used when establishing the
-# connection to the modem.
-#
-PHONE=555-1212
-MODEMPASS=modem_identifier
-#
-# Once the modem calls back, the account name and password are used for
-# a UNIX style login operation.
-#
-ACCOUNT=my_account_name
-PASSWORD=my_password
-
-###################################################################
-#
-# Step 1. Dial the modem and negotiate the initial dialog.
-# note: the modem is configured to ignore loss of DCD at this point.
-# it is important that this be performed because the loss of DCD
-# will normally prevent system from working since 'modem' is used
-# for pppd.
-#
-# The script is terminated normally when the carrier is lost.
-#
-chat -v \
- TIMEOUT 3 \
- ABORT '\nBUSY\r' \
- ABORT '\nNO ANSWER\r' \
- ABORT '\nRINGING\r\n\r\nRINGING\r' \
- '' AT \
- 'OK-+++\c-OK' 'AT&C0&D2S0=0H0 \
- TIMEOUT 30 \
- OK ATDT$TELEPHONE \
- CONNECT '' \
- assword: $MODEMPASS \
- "\nNO CARRIER\r"
-
-if [ "$?" = "0" ]; then
-
-###################################################################
-#
-# Step 2. Wait for the call back from the remote. This will wait for at most
-# 30 seconds for the call back should the first attempt fail or
-# something happen with the callback logic at the remote.
-#
-# note: when the callback occurs, the DCD setting is re-enabled.
-#
-# If some voice call should happen during this period, the system will
-# answer the telephone and then hang up on them. I realize that this is
-# rude, but there is little that this script can do.
-#
- chat -v \
- TIMEOUT 30 \
- ABORT '\nVOICE\r' \
- '\nRING\r' 'AT&C1A' \
- CONNECT '' \
- TIMEOUT 10 \
- ogin:--ogin: $ACCOUNT \
- TIMEOUT 45 \
- assword: $PASSWORD
-
- if [ "$?" = "0" ]; then
- exit 0
- fi
-fi
-
-###################################################################
-#
-# The script has failed. Terminate the connection mode.
-#
-chat -v TIMEOUT 3 "" AT 'OK-+++\c-OK' 'AT&C1&D2S0=0H0' OK
-exit 1
diff --git a/mdk-stage1/ppp/scripts/chat-callback b/mdk-stage1/ppp/scripts/chat-callback
deleted file mode 100644
index d014d6af3..000000000
--- a/mdk-stage1/ppp/scripts/chat-callback
+++ /dev/null
@@ -1,98 +0,0 @@
-# =====================================================================================
-# Chat script to dial our Company PPP account.
-# They uses a call-back system to identify us and to reverse
-# charge the call cost.
-# =====================================================================================
-#
-ECHO OFF
-# All the usual abort strings
-ABORT "NO CARRIER"
-ABORT "VOICE"
-ABORT "BUSY"
-ABORT "NO DIALTONE"
-ABORT "NO ANSWER"
-#
-# If calling outside allowed time we get this:
-#
-ABORT "Access denied"
-#
-# Modem initialisation stuff
-#
-TIMEOUT 5
-SAY "Initialising modem ...\n"
-'' ATE1
-'OK\r\n' ATS0=1S11=60X4&K4S42.1=1
-#
-# Now dial our ISP and wait for connection
-#
-SAY "Dialling our ISP ...\n"
-'OK\r\n' ATDT09834657
-TIMEOUT 60
-CONNECT \c
-SAY "Connected ...\n"
-#
-# This is the first stage login, we identify ourself so that the remote
-# system will agree to call us back.
-#
-TIMEOUT 30
-SAY "Sending Callback login ID ...\n"
-name:-BREAK-name: callme
-#
-# From now on, we must assume no carrier is normal as well
-# as receiving a HANGUP signal because it will be the
-# case if our ISP clears the call to call us back.
-#
-CLR_ABORT "NO CARRIER"
-HANGUP OFF
-#
-ABORT "Invalid"
-#
-# Now send password and wait to see what happens
-#
-SAY "Sending Callback password ...\n"
-word:--word: xvsgsgs
-"You will be" \c
-#
-# What can happen now is:
-# either: we get "You will be called back..." which is the successful case
-# or: we get "Invalid login" and we abort (bad login ID or password)
-# or: we get "NO CARRIER" because of an error, this will not abort
-# and we will time out after 30 seconds
-# or: we get nothing and we will time out after 30 seconds
-#
-#
-# We reach here if we got "You will be called back..."
-#
-CLR_ABORT "Invalid"
-SAY "Now waiting for Call back ...\n"
-#
-# The remote system will now hangup and we will get both "NO CARRIER"
-# and a hangup signal which are ignored. We now wait for a connection
-# for up to 120 seconds. What happens here if somebody else calls before
-# the remote system is a bit dangerous:
-#
-# If a malicious user connects and says 'name:', he will see 'PPPuser'
-# If he then says 'word:' he will see the passowrd 'blipblop'. I may not
-# know to which systems these belong to, though. It is up to you to consider
-# that case and decide wether the risk is too big or not ....
-#
-TIMEOUT 120
-"CONNECT" \c
-#
-# We have been called, re-arm ABORT on NO CARRIER and normal hangup signal
-# behaviour
-#
-HANGUP ON
-ABORT "NO CARRIER"
-#
-# Second stage login in order to start PPP
-#
-SAY "Remote system called back, logging in ...\n"
-SAY "Sending login ID ...\n"
-name:-BREAK-name: PPPuser
-SAY "Sending password ...\n"
-word:--word: blipblop
-SAY "Asking to start PPP ...\n"
-'CnetSrv' "ppp default"
-"Entering PPP mode" \c
-SAY "ISP PPP started ...\n"
diff --git a/mdk-stage1/ppp/scripts/chatchat/README b/mdk-stage1/ppp/scripts/chatchat/README
deleted file mode 100644
index 88a4c6939..000000000
--- a/mdk-stage1/ppp/scripts/chatchat/README
+++ /dev/null
@@ -1,134 +0,0 @@
-v 0.1 gpk@onramp.net 3/27/99
-
-I Intro
-
- This document covers the use of the modified "chat" program and its
-adjunct "chatchat" to login using the Security Dynamics SecurID card
-on a linux system.
-
- This set of files comprises a modified version of the chat program
-(the one distributed with ppp-2.3.5) and a new program called chatchat
-that allows you to supply data from the keyboard to the chat program.
-
- The SecurID card generates passwords that have a lifetime of one
-minute and are used as a first layer in dial up security. The only
-software I know of for this card is for windows, so I wrote my own.
-This software allows you to type in the time-sensitive password right
-when your chat script is asked to supply the passcode by the remote
-system.
-
-
-II How It Works
-
- This version of chat his an additional command that can be put into
-its options that says "Don't reply with this string. Open this pipe,
-read the contents, and reply with that instead." Chatchat creates a
-pipe and lets you type your passcode into it, then chat picks that up
-and sends it out just as though the passcode was hardcoded into the
-options.
-
-
-III Installation
-
- I've provided intel binaries and source code the the modified chat
-program and the chatchat program. I'll recommend that you copy the
-chat.c program into your ppp-2.3.5/chat directory (save your original
-chat.c program first!) and re-make it using the Makefile that comes
-with chat. Copy the new chat somewhere into your path. (On my system
-chat lives in /usr/sbin/chat, so I've copied the modified one into
-/usr/sbin/chat.new and changed my dial in script to call chat.new
-instead of chat.
-
- Second, compile chatchat.c and install it somewhere in your path:
-
- gcc -g -o chatchat chatchat.c
- cp chatchat /usr/sbin
-
- Third, modify your chat script to use the chatchat program. Mine
-looks something like this:
-
-
- --------------------
-
-#!/bin/sh
-#
-# This is part 2 of the ppp-on script. It will perform the connection
-# protocol for the desired connection.
-# use atm0 to turn down the speaker volume on my sportster x2 voice modem
-# gpk 11/2/97
-
-exec /usr/sbin/chat.new -V -v \
- ABORT "BUSY" \
- ABORT "NO DIAL TONE" \
- ABORT "NO ANSWER" \
- TIMEOUT 50 \
- "" "atm0" \
- OK ATDT$TELEPHONE \
- CONNECT '' \
- name: \\da0xxxxxx \
- word: @/var/tmp/p \
- compress. ''
-
-
- -----------------------
-
- This is a standard chat script:
-
-* abort if the modem is busy, you don't get a dial tone, no one
- answers, or 50 seconds elapses.
-
-* use atm0 to mute the modem
-
-* dial the modem, when it connects, wait to be asked for account name
-
-* when we see "name:" prompt, delay briefly then respond with your
- account name (fill in your account name)
-
-Now we get to the new stuff:
-
-* when we see "word:" in the password prompt, instead of responding
- with "@/var/tmp/p", the modified chat program will open the pipe
- /var/tmp/p, read the passcode out of there, and send it
-
-* when we see "compress." (the last word before ppp starts), reply
- with nothing. The script ends and we start ppp.
-
-Note:
-
-* Make sure there is some whitespace between the filename and the \.
-
-
-IV Usage
-
- To use this install the modified chat and chatchat programs, and
-modify your chat script similar to the above. Before you dial in,
-start that chatchat program giving it the same pipe as in your config
-file. In the above case:
-
-chatchat /var/tmp/p
-
- Wait until you have one or two tick marks left on your card's
-current number, then start your dial up process that eventually calls
-chat. When chat goes to open and read the pipe, chatchat will prompt:
-
-
-type PIN into SecurID card and
- enter resulting passcode:
-
- At that point, type your PIN number into your Securid card, press
-the diamond, and type the resulting numbers in as your passcode. If
-you've left the -V -v options on your chat command you'll see
-everything so out, otherwise it works silently.
-
- If you type the number wrong or run out of time, the server will
-respond with an authentication failure. In that case you will have to
-hang up and start again. I don't know how to build a conditional script
-that says either expect "compress" next, but if you see "name:" again,
-do this instead.
-
-
-V Additional Information
-
- You can obtain additional information about chat and ppp from the
-man pages for chat and pppd, as well as the PPP-HOWTO.
-
diff --git a/mdk-stage1/ppp/scripts/chatchat/chatchat.c b/mdk-stage1/ppp/scripts/chatchat/chatchat.c
deleted file mode 100644
index 4534fb9e3..000000000
--- a/mdk-stage1/ppp/scripts/chatchat/chatchat.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/* *************************************************************************
-* NAME: chatchat.c
-*
-* DESCRIPTION:
-*
-* This program creates a pipe for the chat process to read. The user
-* can supply information (like a password) that will be picked up
-* by chat and sent just like the regular contents of a chat script.
-*
-* Usage is:
-*
-* chatchat <filename>
-*
-* where <filename> matches the option given in the chat script.
-*
-* for instance the chat script fragment:
-*
-* ...
-* name: \\dmyname \
-* word: @/var/tmp/p \
-* ...
-* ^
-* (note: leave some whitespace after the filename)
-*
-* expect "name:", reply with a delay followed by "myname"
-* expect "word:", reply with the data read from the pipe /var/tmp/p
-*
-* the matching usage of chatchat would be:
-*
-* chatchat /var/tmp/p
-*
-* eg:
-*
-* $chatchat /var/tmp/p
-* ...
-* some other process eventually starts:
-* chat ...
-* chat parses the "@/var/tmp/p" option and opens
-* /var/tmp/p
-* (chatchat prompts:)
-*
-* type PIN into SecurID card
-* enter resulting passcode: [user inputs something]
-*
-* chat reads /var/tmp/p & gets what the
-* user typed at chatchat's "enter string" prompt
-* chat removes the pipe file
-* chat sends the user's input as a response in
-* place of "@/var/tmp/p"
-*
-* PROCESS:
-*
-* gcc -g -o chatchat chatchat.c
-*
-*
-* GLOBALS: none
-*
-* REFERENCES:
-*
-* see the man pages and documentation that come with the 'chat' program
-* (part of the ppp package). you will need to use the modified chat
-* program that accepts the '@' operator.
-*
-* LIMITATIONS:
-*
-* REVISION HISTORY:
-*
-* STR Description Author
-*
-* 23-Mar-99 initial coding gpk
-* 12-May-99 unlink the pipe after closing paulus
-*
-* TARGET: ANSI C
-* This program is in the public domain.
-*
-*
-* ************************************************************************* */
-
-
-
-
-#include <sys/time.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-
-/* MAXINPUT - the data typed into chatchat must be fewer */
-/* characters than this. */
-
-#define MAXINPUT 80
-
-
-
-
-
-
-/* *************************************************************************
-
-
- NAME: main
-
-
- USAGE:
-
- int argc;
- char * argv[];
-
- main(argc, argv[]);
-
- returns: int
-
- DESCRIPTION:
- if the pipe file name is given on the command line,
- create the pipe, prompt the user and put whatever
- is typed into the pipe.
-
- returns -1 on error
- else # characters entered
- REFERENCES:
-
- LIMITATIONS:
-
- GLOBAL VARIABLES:
-
- accessed: none
-
- modified: none
-
- FUNCTIONS CALLED:
-
- REVISION HISTORY:
-
- STR Description of Revision Author
-
- 25-Mar-99 initial coding gpk
-
- ************************************************************************* */
-
-int main(int argc, char * argv[])
-{
- int retval;
-
- int create_and_write_pipe(char * pipename);
-
- if (argc != 2)
- {
- fprintf(stderr, "usage: %s pipename\n", argv[0]);
- retval = -1;
- }
- else
- {
- retval = create_and_write_pipe(argv[1]);
- }
- return (retval);
-}
-
-
-
-
-/* *************************************************************************
-
-
- NAME: create_and_write_pipe
-
-
- USAGE:
-
- int some_int;
- char * pipename;
-
- some_int = create_and_write_pipe(pipename);
-
- returns: int
-
- DESCRIPTION:
- given the pipename, create the pipe, open it,
- prompt the user for a string to put into the
- pipe, write the string, and close the pipe
-
- on error, print out an error message and return -1
-
- returns -1 on error
- else #bytes written into the pipe
- REFERENCES:
-
- LIMITATIONS:
-
- GLOBAL VARIABLES:
-
- accessed: none
-
- modified: none
-
- FUNCTIONS CALLED:
-
- REVISION HISTORY:
-
- STR Description of Revision Author
-
- 25-Mar-99 initial coding gpk
- 12-May-99 remove pipe after closing paulus
-
- ************************************************************************* */
-
-int create_and_write_pipe(char * pipename)
-{
- int retval, created, pipefd, nread, nwritten;
- char input[MAXINPUT];
- char errstring[180];
-
- int create_pipe(char * pipename);
- int write_to_pipe(int pipefd, char * input, int nchar);
-
- created = create_pipe(pipename);
-
- if (-1 == created)
- {
- sprintf(errstring, "unable to create pipe '%s'", pipename);
- perror(errstring);
- retval = -1;
- }
- else
- {
-
- /* note: this open won't succeed until chat has the pipe */
- /* open and ready to read. this makes for nice timing. */
-
- pipefd = open(pipename, O_WRONLY);
-
- if (-1 == pipefd)
- {
- sprintf(errstring, "unable to open pipe '%s'", pipename);
- perror(errstring);
- retval = -1;
- }
- else
- {
- fprintf(stderr, "%s \n %s",
- "type PIN into SecurID card and",
- "enter resulting passcode:");
- nread = read(STDIN_FILENO, (void *)input, MAXINPUT);
-
-
- if (0 >= nread)
- {
- perror("unable to read from stdin");
- retval = -1;
- }
- else
- {
- /* munch off the newline character, chat supplies */
- /* a return when it sends the string out. */
- input[nread -1] = 0;
- nread--;
- nwritten = write_to_pipe(pipefd, input, nread);
- /* printf("wrote [%d]: '%s'\n", nwritten, input); */
- retval = nwritten;
- }
- close(pipefd);
-
- /* Now make the pipe go away. It won't actually go away
- completely until chat closes it. */
- if (unlink(pipename) < 0)
- perror("Warning: couldn't remove pipe");
- }
- }
- return(retval);
-}
-
-
-
-
-
-
-
-/* *************************************************************************
-
-
- NAME: create_pipe
-
-
- USAGE:
-
- int some_int;
- char * pipename;
-
- some_int = create_pipe(pipename);
-
- returns: int
-
- DESCRIPTION:
- create a pipe of the given name
-
- if there is an error (like the pipe already exists)
- print an error message and return
-
- return -1 on failure else success
-
- REFERENCES:
-
- LIMITATIONS:
-
- GLOBAL VARIABLES:
-
- accessed: none
-
- modified: none
-
- FUNCTIONS CALLED:
-
- REVISION HISTORY:
-
- STR Description of Revision Author
-
- 25-Mar-99 initial coding gpk
-
- ************************************************************************* */
-
-int create_pipe(char * pipename)
-{
- mode_t old_umask;
- int created;
-
- /* hijack the umask temporarily to get the mode I want */
- /* on the pipe. */
-
- old_umask = umask(000);
-
- created = mknod(pipename, S_IFIFO | S_IRWXU | S_IWGRP | S_IWOTH,
- (dev_t)NULL);
-
- /* now restore umask. */
-
- (void)umask(old_umask);
-
- if (-1 == created)
- {
- perror("unable to create pipe");
- }
-
- return(created);
-}
-
-
-
-
-
-
-/* *************************************************************************
-
-
- NAME: write_to_pipe
-
-
- USAGE:
-
- int some_int;
- int pipefd;
- char * input;
- int nchar;
-
- some_int = write_to_pipe(pipefd, input, nchar);
-
- returns: int
-
- DESCRIPTION:
- write nchars of data from input to pipefd
-
- on error print a message to stderr
-
- return -1 on error, else # bytes written
- REFERENCES:
-
- LIMITATIONS:
-
- GLOBAL VARIABLES:
-
- accessed: none
-
- modified: none
-
- FUNCTIONS CALLED:
-
- REVISION HISTORY:
-
- STR Description of Revision Author
-
- 25-Mar-99 initial coding gpk
- 12-May-99 don't write count word first paulus
-
- ************************************************************************* */
-
-int write_to_pipe(int pipefd, char * input, int nchar)
-{
- int nwritten;
-
- /* nwritten = write(pipefd, (void *)&nchar, sizeof(nchar)); */
- nwritten = write(pipefd, (void *)input, nchar);
-
- if (-1 == nwritten)
- {
- perror("unable to write to pipe");
- }
-
- return(nwritten);
-}
diff --git a/mdk-stage1/ppp/scripts/ip-down.local.add b/mdk-stage1/ppp/scripts/ip-down.local.add
deleted file mode 100644
index b93590e49..000000000
--- a/mdk-stage1/ppp/scripts/ip-down.local.add
+++ /dev/null
@@ -1,20 +0,0 @@
-
-#
-# This sample code shows you one way to modify your setup to allow automatic
-# configuration of your resolv.conf for peer supplied DNS addresses when using
-# the `usepeerdns' option.
-#
-# In my case I just added this to my /etc/ppp/ip-down.local script. You may need to
-# create an executable script if one does not exist.
-#
-# Nick Walker (nickwalker@email.com)
-#
-
-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
- if [ -f /etc/ppp/resolv.prev ]; then
- cp -f /etc/ppp/resolv.prev /etc/resolv.conf
- else
- rm -f /etc/resolv.conf
- fi
-fi
-
diff --git a/mdk-stage1/ppp/scripts/ip-up.local.add b/mdk-stage1/ppp/scripts/ip-up.local.add
deleted file mode 100644
index 80172093a..000000000
--- a/mdk-stage1/ppp/scripts/ip-up.local.add
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#
-# This sample code shows you one way to modify your setup to allow automatic
-# configuration of your resolv.conf for peer supplied DNS addresses when using
-# the `usepeerdns' option.
-#
-# In my case I just added this to my /etc/ppp/ip-up.local script. You may need to
-# create an executable script if one does not exist.
-#
-# Nick Walker (nickwalker@email.com)
-#
-
-if [ -n "$USEPEERDNS" -a -f /etc/ppp/resolv.conf ]; then
- rm -f /etc/ppp/resolv.prev
- if [ -f /etc/resolv.conf ]; then
- cp /etc/resolv.conf /etc/ppp/resolv.prev
- grep domain /etc/ppp/resolv.prev > /etc/resolv.conf
- grep search /etc/ppp/resolv.prev >> /etc/resolv.conf
- cat /etc/ppp/resolv.conf >> /etc/resolv.conf
- else
- cp /etc/ppp/resolv.conf /etc
- fi
-fi
-
diff --git a/mdk-stage1/ppp/scripts/options-rsh-loc b/mdk-stage1/ppp/scripts/options-rsh-loc
deleted file mode 100644
index b015b87fe..000000000
--- a/mdk-stage1/ppp/scripts/options-rsh-loc
+++ /dev/null
@@ -1 +0,0 @@
-debug asyncmap FFFFFFFF escape FF kdebug 0 noipdefault nodefaultroute noauth mtu 1460
diff --git a/mdk-stage1/ppp/scripts/options-rsh-rem b/mdk-stage1/ppp/scripts/options-rsh-rem
deleted file mode 100644
index 4b10bb9e9..000000000
--- a/mdk-stage1/ppp/scripts/options-rsh-rem
+++ /dev/null
@@ -1 +0,0 @@
-notty debug asyncmap FFFFFFFF escape FF kdebug 0 noipdefault nodefaultroute noauth mtu 1460
diff --git a/mdk-stage1/ppp/scripts/options-ssh-loc b/mdk-stage1/ppp/scripts/options-ssh-loc
deleted file mode 100644
index add03d659..000000000
--- a/mdk-stage1/ppp/scripts/options-ssh-loc
+++ /dev/null
@@ -1 +0,0 @@
-debug asyncmap FFFFFFFF escape FF kdebug 0 noipdefault nodefaultroute noauth mtu 1400
diff --git a/mdk-stage1/ppp/scripts/options-ssh-rem b/mdk-stage1/ppp/scripts/options-ssh-rem
deleted file mode 100644
index d690722c6..000000000
--- a/mdk-stage1/ppp/scripts/options-ssh-rem
+++ /dev/null
@@ -1 +0,0 @@
-notty debug asyncmap FFFFFFFF escape FF kdebug 0 noipdefault nodefaultroute noauth mtu 1400
diff --git a/mdk-stage1/ppp/scripts/ppp-off b/mdk-stage1/ppp/scripts/ppp-off
deleted file mode 100755
index a22b5ea3d..000000000
--- a/mdk-stage1/ppp/scripts/ppp-off
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-######################################################################
-#
-# Determine the device to be terminated.
-#
-if [ "$1" = "" ]; then
- DEVICE=ppp0
-else
- DEVICE=$1
-fi
-
-######################################################################
-#
-# If the ppp0 pid file is present then the program is running. Stop it.
-if [ -r /var/run/$DEVICE.pid ]; then
- kill -INT `cat /var/run/$DEVICE.pid`
-#
-# If the kill did not work then there is no process running for this
-# pid. It may also mean that the lock file will be left. You may wish
-# to delete the lock file at the same time.
- if [ ! "$?" = "0" ]; then
- rm -f /var/run/$DEVICE.pid
- echo "ERROR: Removed stale pid file"
- exit 1
- fi
-#
-# Success. Let pppd clean up its own junk.
- echo "PPP link to $DEVICE terminated."
- exit 0
-fi
-#
-# The ppp process is not running for ppp0
-echo "ERROR: PPP link is not active on $DEVICE"
-exit 1
diff --git a/mdk-stage1/ppp/scripts/ppp-on b/mdk-stage1/ppp/scripts/ppp-on
deleted file mode 100755
index ab79db471..000000000
--- a/mdk-stage1/ppp/scripts/ppp-on
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# Script to initiate a ppp connection. This is the first part of the
-# pair of scripts. This is not a secure pair of scripts as the codes
-# are visible with the 'ps' command. However, it is simple.
-#
-# These are the parameters. Change as needed.
-TELEPHONE=555-1212 # The telephone number for the connection
-ACCOUNT=george # The account name for logon (as in 'George Burns')
-PASSWORD=gracie # The password for this account (and 'Gracie Allen')
-LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
-REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
-NETMASK=255.255.255.0 # The proper netmask if needed
-#
-# Export them so that they will be available at 'ppp-on-dialer' time.
-export TELEPHONE ACCOUNT PASSWORD
-#
-# This is the location of the script which dials the phone and logs
-# in. Please use the absolute file name as the $PATH variable is not
-# used on the connect option. (To do so on a 'root' account would be
-# a security hole so don't ask.)
-#
-DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
-#
-# Initiate the connection
-#
-# I put most of the common options on this command. Please, don't
-# forget the 'lock' option or some programs such as mgetty will not
-# work. The asyncmap and escape will permit the PPP link to work with
-# a telnet or rlogin connection. You are welcome to make any changes
-# as desired. Don't use the 'defaultroute' option if you currently
-# have a default route to an ethernet gateway.
-#
-exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 \
- asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \
- noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT
diff --git a/mdk-stage1/ppp/scripts/ppp-on-dialer b/mdk-stage1/ppp/scripts/ppp-on-dialer
deleted file mode 100755
index 7d66765f1..000000000
--- a/mdk-stage1/ppp/scripts/ppp-on-dialer
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# This is part 2 of the ppp-on script. It will perform the connection
-# protocol for the desired connection.
-#
-exec chat -v \
- TIMEOUT 3 \
- ABORT '\nBUSY\r' \
- ABORT '\nNO ANSWER\r' \
- ABORT '\nRINGING\r\n\r\nRINGING\r' \
- '' \rAT \
- 'OK-+++\c-OK' ATH0 \
- TIMEOUT 30 \
- OK ATDT$TELEPHONE \
- CONNECT '' \
- ogin:--ogin: $ACCOUNT \
- assword: $PASSWORD
diff --git a/mdk-stage1/ppp/scripts/ppp-on-rsh b/mdk-stage1/ppp/scripts/ppp-on-rsh
deleted file mode 100755
index 30a50dba6..000000000
--- a/mdk-stage1/ppp/scripts/ppp-on-rsh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/sh
-#
-# A sample script to establish PPP session(s) via rsh
-#
-# Adi Masputra <adi.masputra@sun.com>
-# Jan 24, 2000
-#
-
-#
-# You'd definitely want to change the following addresses to suit
-# your network configuration
-#
-LOC_IP=10.0.0.1
-REM_IP=10.0.0.2
-NETMASK=255.255.0.0
-
-export LOC_IP REM_IP
-
-#
-# This is the remote peer where in.rshd is running, either
-# its hostname or IP address
-#
-PPPD_RHOST=myremotehost
-
-#
-# For this example, we assume that pppd on both local and remote
-# machines reside in the same place, /usr/local/bin/pppd
-#
-PPPD_LOC=/usr/local/bin/pppd
-
-#
-# The location of local options file (where rsh client is running).
-# Note that the sample options file included in the distribution
-# may need further customizations, depending on your needs. The 'noauth'
-# option specified in the file is there to simplify the example. In
-# reality, you'd probably want to remove such option.
-#
-PPPD_LOC_OPT=/etc/ppp/options-rsh-loc
-
-#
-# The location of remote options file (where in.rshd daemon is running).
-# Note that the sample options file included in the distribution
-# may need further customizations, depending on your needs. The 'noauth'
-# option specified in the file is there to simplify the example. In
-# reality, you'd probably want to remove such option. Also note that
-# the remote options file need to include the 'notty' option for this
-# to work
-#
-PPPD_REM_OPT=/etc/ppp/options-rsh-rem
-
-#
-# The location of rsh client on the local machine
-#
-RSH_LOC=/bin/rsh
-
-export PPPD_LOC PPPD_LOC_OPT PPPD_REM_OPT PPPD_RHOST RSH_LOC
-
-#
-# Uncomment the following to enable IPv6, note that the IPv6 support
-# needs to be enabled during compilation
-#
-# PPPD_IPV6='+ipv6 ipv6cp-use-ipaddr'
-export PPPD_IPV6
-
-#
-# And execute pppd with the pty option, specifying rsh client as the
-# slave side of the pseduo-tty master/slave pair.
-#
-exec $PPPD_LOC \
- pty '$RSH_LOC $PPPD_RHOST $PPPD_LOC $REM_IP:$LOC_IP $PPPD_IPV6 file $PPPD_REM_OPT' \
- $LOC_IP:$REM_IP netmask $NETMASK $PPPD_IPV6 file $PPPD_LOC_OPT
-
diff --git a/mdk-stage1/ppp/scripts/ppp-on-ssh b/mdk-stage1/ppp/scripts/ppp-on-ssh
deleted file mode 100755
index 0e41acac6..000000000
--- a/mdk-stage1/ppp/scripts/ppp-on-ssh
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/bin/sh
-#
-# A sample script to establish PPP session(s) via SSH 1.x
-#
-# Adi Masputra <adi.masputra@sun.com>
-# Jan 24, 2000
-#
-
-#
-# You'd definitely want to change the following addresses to suit
-# your network configuration
-#
-LOC_IP=10.0.0.1
-REM_IP=10.0.0.2
-NETMASK=255.255.0.0
-
-export LOC_IP REM_IP
-
-#
-# This is the remote peer where sshd is running, either
-# its hostname or IP address
-#
-PPPD_RHOST=myremotehost
-
-#
-# For this example, we assume that pppd on both local and remote
-# machines reside in the same place, /usr/local/bin/pppd
-#
-PPPD_LOC=/usr/local/bin/pppd
-
-#
-# The location of local options file (where ssh client is running).
-# Note that the sample options file included in the distribution
-# may need further customizations, depending on your needs. The 'noauth'
-# option specified in the file is there to simplify the example, although
-# some may choose to have it there and rely on ssh authentication
-# instead.
-#
-PPPD_LOC_OPT=/etc/ppp/options-ssh-loc
-
-#
-# The location of remote options file (where sshd daemon is running)
-# Note that the sample options file included in the distribution
-# may need further customizations, depending on your needs. The 'noauth'
-# option specified in the file is there to simplify the example, although
-# some may choose to have it there and rely on ssh authentication
-# instead. Also note that the remote options file need to include the 'notty'
-# options for this to work.
-#
-PPPD_REM_OPT=/etc/ppp/options-ssh-rem
-
-#
-# The location of ssh client on the local machine
-#
-SSH_LOC=/usr/local/bin/ssh
-
-export PPPD_LOC PPPD_LOC_OPT PPPD_REM_OPT PPPD_RHOST SSH_LOC
-
-#
-# Uncomment the following to enable IPv6, note that the IPv6 support
-# needs to be enabled during compilation
-#
-# PPPD_IPV6='+ipv6 ipv6cp-use-ipaddr'
-export PPPD_IPV6
-
-#
-# And execute pppd with the pty option, specifying ssh client as the
-# slave side of the pseudo-tty master/slave pair. Note that on this example,
-# ssh has been compiled to allow NULL encryption (thus the '-c none' option),
-# but in reality, you'd probably want to specify the encryption algorithm.
-# See the man page of ssh(1) for details.
-#
-exec $PPPD_LOC \
- pty '$SSH_LOC -c none $PPPD_RHOST $PPPD_LOC $REM_IP:$LOC_IP $PPPD_IPV6 file $PPPD_REM_OPT' \
- $LOC_IP:$REM_IP netmask $NETMASK $PPPD_IPV6 file $PPPD_LOC_OPT
-
diff --git a/mdk-stage1/ppp/scripts/redialer b/mdk-stage1/ppp/scripts/redialer
deleted file mode 100755
index 5bbde4e9d..000000000
--- a/mdk-stage1/ppp/scripts/redialer
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/sh
-###################################################################
-#
-# These parameters control the attack dialing sequence.
-#
-# Maximum number of attempts to reach the telephone number(s)
-MAX_ATTEMPTS=10
-
-# Delay between each of the attempts. This is a parameter to sleep
-# so use "15s" for 15 seconds, "1m" for 1 minute, etc.
-SLEEP_DELAY=15s
-
-###################################################################
-#
-# This is a list of telephone numbers. Add new numbers if you wish
-# and see the function 'callall' below for the dial process.
-PHONE1=555-1212
-PHONE2=411
-
-###################################################################
-#
-# If you use the ppp-on script, then these are passed to this routine
-# automatically. There is no need to define them here. If not, then
-# you will need to set the values.
-#
-ACCOUNT=my_account_name
-PASSWORD=my_password
-
-###################################################################
-#
-# Function to initialize the modem and ensure that it is in command
-# state. This may not be needed, but it doesn't hurt.
-#
-function initialize
-{
- chat -v TIMEOUT 3 '' AT 'OK-+++\c-OK'
- return
-}
-
-###################################################################
-#
-# Script to dial a telephone
-#
-function callnumber
-{
-chat -v \
- ABORT '\nBUSY\r' \
- ABORT '\nNO ANSWER\r' \
- ABORT '\nRINGING\r\n\r\nRINGING\r' \
- '' ATDT$1 \
- CONNECT '' \
- ogin:--ogin: $ACCOUNT \
- assword: $PASSWORD
-#
-# If the connection was successful then end the whole script with a
-# success.
-#
- if [ "$?" = "0" ]; then
- exit 0
- fi
-
- return
-}
-
-###################################################################
-#
-# Script to dial any telephone number
-#
-function callall
-{
-# echo "dialing attempt number: $1" >/dev/console
- callnumber $PHONE1
-# callnumber $PHONE2
-}
-
-###################################################################
-#
-# Initialize the modem to ensure that it is in the command state
-#
-initialize
-if [ ! "$?" = "0" ]; then
- exit 1
-fi
-
-#
-# Dial telephone numbers until one answers
-#
-attempt=0
-while : ; do
- attempt=`expr $attempt + 1`
- callall $attempt
- if [ "$attempt" = "$MAX_ATTEMPTS" ]; then
- exit 1
- fi
- sleep "$SLEEP_DELAY"
-done
diff --git a/mdk-stage1/ppp/scripts/secure-card b/mdk-stage1/ppp/scripts/secure-card
deleted file mode 100644
index a32138b7d..000000000
--- a/mdk-stage1/ppp/scripts/secure-card
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/local/bin/expect -f
-#
-# This script was written by Jim Isaacson <jcisaac@crl.com>. It is
-# designed to work as a script to use the SecureCARD(tm) device. This
-# little device is mated with a central controller. The number displayed
-# on this card changes every so often and you need to enter the number
-# along with your user account name in order to gain access. Since chat
-# is based upon fixed strings this procedure will not work with chat.
-#
-# It is included by permission. An excellent reference for the expect
-# program used by this script is in the book:
-#
-# "Exploring Expect"
-# by Don Libes
-# Published by O'Rielly and Associates
-#
-
-send_user "hello, starting ppp\n"
-
-system "stty 19200 -echoe -echo raw < /dev/cua3 > /dev/cua3"
-
-#
-# These are the parameters for the program.
-#
-set user Pxxxxxx
-set password xxxxxxx
-set modem /dev/cua3
-set dialup <put phone number here>
-set timeout 60
-
-spawn -noecho -open [open $modem "r+"]
-
-send "AT&F\r"
-expect "OK"
-
-send "ATe0v1x4&c1q0&d2&c1s2=128s0=0DT $dialup\r"
-set timeout 15
-set counter 0
-
-set still_connecting 1
-
-expect {
- -re ".*CONNECT.*\n" {
- set timeout 5
- set still_connecting 0
- continue -expect
- }
- -re ".*CONNECT.*\r" {
- set timeout 5
- set still_connecting 0
- continue -expect
- }
- -re ".*NO.*CARRIER" {
- send_user "Failed to Connect, exiting...\n"
- exit
- }
- -re ".*NO.*DIAL.*TONE" {
- send_user "Failed to Connect, exiting...\n"
- exit
- }
- -re ".*VOICE" {
- send_user "Failed to Connect, exiting...\n"
- exit
- }
- -re ".*sscode:.*\n" {
- continue -expect
- }
- -re ".*sscode:" {
- set timeout -1
- expect_user -re "(.*)\n"
- send "$expect_out(1,string)\r"
- set timeout 30
- continue -expect
- }
- -re ".*Next.*:" {
- set timeout -1
- expect_user -re "(.*)\n"
- send "$expect_out(1,string)\r"
- set timeout 30
- continue -expect
- }
- -re "Your.*" {
- send "\r"
- continue -expect
- }
- -re ".*in:" {
- send "$user\r"
- continue -expect
- }
- -re ".*word:" {
- send "$password\r"
- }
-
- timeout {
- if { $still_connecting > 0 } {
- continue -expect
- }
- set timeout 15
- send "\r"
- incr counter
- if { $counter > 8 } {
- send_user "Cannot Connect\n"
- exit
- } else {
- continue -expect
- }
- }
-}
-
-overlay -0 $spawn_id -1 $spawn_id pppd /dev/cua3 19200 192.111.187.215: \
- crtscts modem defaultroute debug
diff --git a/mdk-stage1/ppp/solaris/Makedefs b/mdk-stage1/ppp/solaris/Makedefs
deleted file mode 100644
index 81db8ab2e..000000000
--- a/mdk-stage1/ppp/solaris/Makedefs
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# defines common to several Makefiles
-#
-
-INSTALL= /usr/sbin/install
-
-BINDIR = /usr/local/bin
-MANDIR = /usr/local/man
-ETCDIR = /etc/ppp
-
-COPTS = -O -Xa
-
-# For compiling with gcc, comment out the COPTS definition above and
-# uncomment the next 2 definitions.
-#CC = gcc
-#COPTS = -O2
diff --git a/mdk-stage1/ppp/solaris/Makedefs.sol2 b/mdk-stage1/ppp/solaris/Makedefs.sol2
deleted file mode 100644
index 1282c6e74..000000000
--- a/mdk-stage1/ppp/solaris/Makedefs.sol2
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Generic make definitions for Solaris 2
-#
-# $Id$
-#
-
-include ../solaris/Makedefs
-
-CPPFLAGS = -D_KERNEL -DSVR4 -DSOL2 -DPRIOQ -DDEBUG -I../include
-CFLAGS = $(CPPFLAGS) $(COPTS)
-
-# lint-specific variables
-LINT = lint
-LINT_OPT_32 =
-LINT_OPT_64 = -Xarch=v9 -errchk=longptr64
-
-LINT_32 =
-LINT_32 += -erroff=E_BAD_PTR_CAST_ALIGN
-LINT_32 += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
-LINT_32 += -erroff=E_SUSPICIOUS_COMPARISON
-LINT_32 += -erroff=E_CAST_UINT_TO_SIGNED_INT
-LINT_32 += -erroff=E_PASS_UINT_TO_SIGNED_INT
-LINT_32 += -erroff=E_INVALID_ANNOTATION_NAME
-LINT_32 += -erroff=E_FUNC_ARG_UNUSED
-# This might be needed, but zlib.c and vjcompress.c will squawk
-# when not ignored
-LINT_32 += -erroff=E_CASE_FALLTHRU
-LINT_32 += -erroff=E_RET_INT_IMPLICITLY
-LINT_32 += -erroff=E_FUNC_NO_RET_VAL
-# Some STREAMS macros will be noisy too when this isn't ignored
-LINT_32 += -erroff=E_CONSTANT_CONDITION
-LINT_32 += -erroff=E_CONST_EXPR
-
-# Extra noise suppressant for 64-bit
-EXTRA_OFF =
-EXTRA_OFF += -erroff=E_CAST_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_CAST_INT_CONST_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_CAST_TO_PTR_FROM_INT
-EXTRA_OFF += -erroff=E_ASSIGN_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_ASSIGN_INT_FROM_BIG_CONST
-EXTRA_OFF += -erroff=E_CONST_PROMOTED_UNSIGNED_LL
-EXTRA_OFF += -erroff=E_CONST_PROMOTED_LONG_LONG
-EXTRA_OFF += -erroff=E_CONST_TRUNCATED_BY_ASSIGN
-EXTRA_OFF += -erroff=E_PASS_INT_FROM_BIG_CONST
-EXTRA_OFF += -erroff=E_COMP_INT_WITH_LARGE_INT
-EXTRA_OFF += -erroff=E_ASSIGN_UINT_TO_SIGNED_INT
-EXTRA_OFF += -erroff=E_ASSIGN_NARROW_CONV
-EXTRA_OFF += -erroff=E_PASS_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_PTR_CONV_LOSES_BITS
-
-LINT_64 = $(LINT_32)
-LINT_64 += $(EXTRA_OFF)
-
-LINTFLAGS64 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_64) $(LINT_64)
-LINT64 = $(LINT) -c $(LINTFLAGS64) $(CPPFLAGS)
-
-LINTFLAGS32 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_32) $(LINT_32)
-LINT32 = $(LINT) -c $(LINTFLAGS32) $(CPPFLAGS)
-
diff --git a/mdk-stage1/ppp/solaris/Makefile.sol2 b/mdk-stage1/ppp/solaris/Makefile.sol2
deleted file mode 100644
index 78628847b..000000000
--- a/mdk-stage1/ppp/solaris/Makefile.sol2
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Makefile for STREAMS modules for Solaris 2.
-#
-# $Id$
-#
-
-include Makedefs.sol2
-
-COPTS += -xO2 -xspace -W0,-Lt
-
-COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \
- ppp_comp_mod.o
-
-all: ppp ppp_ahdl ppp_comp
-
-ppp: ppp.o ppp_mod.o
- ld -r -o $@ ppp.o ppp_mod.o
- chmod +x $@
-
-ppp_ahdl: ppp_ahdlc.o ppp_ahdlc_mod.o
- ld -r -o $@ ppp_ahdlc.o ppp_ahdlc_mod.o
- chmod +x $@
-
-ppp_comp: $(COMP_OBJS)
- ld -r -o $@ $(COMP_OBJS)
- chmod +x $@
-
-bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $?
-deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $?
-ppp.o: ppp.c
- $(CC) $(CFLAGS) -c $?
-ppp_mod.o: ppp_mod.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc.o: ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp.o: ppp_comp.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp_mod.o: ppp_comp_mod.c
- $(CC) $(CFLAGS) -c $?
-vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $?
-zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $?
-
-install:
- cp ppp ppp.conf /kernel/drv
- cp ppp_comp ppp_ahdl /kernel/strmod
- if grep clone:ppp /etc/minor_perm; then :; else \
- echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
- /usr/sbin/rem_drv ppp 2>/dev/null || true
- /usr/sbin/add_drv ppp
-
-SRCS = ppp.c ppp_mod.c ppp_ahdlc.c ppp_ahdlc_mod.c \
- ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
- ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-
-lint:
- $(LINT32) $(SRCS)
-
-clean:
- rm -f ppp ppp_comp ppp_ahdl *.o *~ core
- rm -f *.ln
diff --git a/mdk-stage1/ppp/solaris/Makefile.sol2-64 b/mdk-stage1/ppp/solaris/Makefile.sol2-64
deleted file mode 100644
index 63e75fc54..000000000
--- a/mdk-stage1/ppp/solaris/Makefile.sol2-64
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-# Makefile for 64-bit STREAMS modules for Solaris 2.
-#
-# $Id$
-#
-
-include Makedefs.sol2
-
-# Sun's cc flag for LP64 compilation / linkage
-COPTS += -xchip=ultra -xarch=v9 -Wc,-xcode=abs32 -Wc,-Qiselect-regsym=0 -xO3 -xspace -W0,-Lt
-
-# subdirectory where 64-bit objects / binaries will be placed
-LP64DIR = sparcv9
-
-# Name of legacy Makefile (for 32-bit binaries)
-STD_MAKE = Makefile.sol2
-
-COMP_OBJS = $(LP64DIR)/ppp_comp.o $(LP64DIR)/bsd-comp.o \
- $(LP64DIR)/deflate.o $(LP64DIR)/zlib.o $(LP64DIR)/vjcompress.o \
- $(LP64DIR)/ppp_comp_mod.o
-
-all: std_objs $(LP64DIR) ppp ppp_ahdl ppp_comp
-
-std_objs:
- $(MAKE) -f $(STD_MAKE) all
-
-ppp: $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
- ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
- chmod +x $(LP64DIR)/$@
-
-ppp_ahdl: $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
- ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
- chmod +x $(LP64DIR)/$@
-
-ppp_comp: $(COMP_OBJS)
- ld -r -o $(LP64DIR)/$@ $(COMP_OBJS)
- chmod +x $(LP64DIR)/$@
-
-$(LP64DIR)/bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp.o: ppp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_mod.o: ppp_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_ahdlc.o: ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_comp.o: ppp_comp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_comp_mod.o: ppp_comp_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $? -o $@
-
-$(LP64DIR):
- mkdir -m 755 -p $@
-
-install:
- cp ppp ppp.conf /kernel/drv
- cp ppp_comp ppp_ahdl /kernel/strmod
- cp $(LP64DIR)/ppp /kernel/drv/$(LP64DIR)
- cp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl /kernel/strmod/$(LP64DIR)
- if grep clone:ppp /etc/minor_perm; then :; else \
- echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
- /usr/sbin/rem_drv ppp 2>/dev/null || true
- /usr/sbin/add_drv ppp
-
-SRCS = ppp.c ppp_mod.c ppp_ahdlc.c ppp_ahdlc_mod.c \
- ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
- ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-
-lint:
- $(LINT64) $(SRCS)
-
-lint-32:
- $(LINT32) $(SRCS)
-
-clean:
- $(MAKE) -f $(STD_MAKE) clean
- rm -f $(LP64DIR)/ppp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl $(LP64DIR)/*.o $(LP64DIR)/*~ $(LP64DIR)/core
diff --git a/mdk-stage1/ppp/solaris/Makefile.top b/mdk-stage1/ppp/solaris/Makefile.top
deleted file mode 100644
index f1200b852..000000000
--- a/mdk-stage1/ppp/solaris/Makefile.top
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# ppp top level makefile for SVR4 and Solaris 2
-#
-# $Id$
-#
-
-include solaris/Makedefs
-
-all:
- cd chat; $(MAKE) all
- cd pppd; $(MAKE) all
- cd pppstats; $(MAKE) all
- cd pppdump; $(MAKE) all
- cd solaris; $(MAKE) all
-
-install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp
-
-install-progs:
- cd chat; $(MAKE) install
- cd pppd; $(MAKE) install
- cd pppstats; $(MAKE) install
- cd pppdump; $(MAKE) install
- cd solaris; $(MAKE) install
-
-install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
- $(ETCDIR)/chap-secrets
-
-$(ETCDIR)/options:
- cp etc.ppp/options $@
- chmod go-w $@
-$(ETCDIR)/pap-secrets:
- $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/pap-secrets
-$(ETCDIR)/chap-secrets:
- $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/chap-secrets
-
-$(BINDIR):
- mkdir -m 755 -p $@
-$(MANDIR)/man8:
- mkdir -m 755 -p $@
-$(ETCDIR):
- mkdir -m 755 -p $@
-
-clean:
- rm -f *~
- cd chat; $(MAKE) clean
- cd pppd; $(MAKE) clean
- cd pppstats; $(MAKE) clean
- cd pppdump; $(MAKE) clean
- cd solaris; $(MAKE) clean
-
diff --git a/mdk-stage1/ppp/solaris/ppp.c b/mdk-stage1/ppp/solaris/ppp.c
deleted file mode 100644
index 44bf08dff..000000000
--- a/mdk-stage1/ppp/solaris/ppp.c
+++ /dev/null
@@ -1,2486 +0,0 @@
-/*
- * ppp.c - STREAMS multiplexing pseudo-device driver for PPP.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2, SVR4, SunOS 4, and Digital UNIX.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/errno.h>
-#ifdef __osf__
-#include <sys/ioctl.h>
-#include <sys/cmn_err.h>
-#define queclass(mp) ((mp)->b_band & QPCTL)
-#else
-#include <sys/ioccom.h>
-#endif
-#include <sys/time.h>
-#ifdef SVR4
-#include <sys/cmn_err.h>
-#include <sys/conf.h>
-#include <sys/dlpi.h>
-#include <sys/ddi.h>
-#ifdef SOL2
-#include <sys/ksynch.h>
-#include <sys/kstat.h>
-#include <sys/sunddi.h>
-#include <sys/ethernet.h>
-#else
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <net/if.h>
-#include <netinet/in.h>
-#endif /* SOL2 */
-#else /* not SVR4 */
-#include <sys/user.h>
-#endif /* SVR4 */
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-/*
- * Modifications marked with #ifdef PRIOQ are for priority queueing of
- * interactive traffic, and are due to Marko Zec <zec@japa.tel.fer.hr>.
- */
-#ifdef PRIOQ
-#endif /* PRIOQ */
-
-#include <netinet/in.h> /* leave this outside of PRIOQ for htons */
-
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-
-/*
- * The IP module may use this SAP value for IP packets.
- */
-#ifndef ETHERTYPE_IP
-#define ETHERTYPE_IP 0x800
-#endif
-
-#if !defined(ETHERTYPE_IPV6)
-#define ETHERTYPE_IPV6 0x86dd
-#endif /* !defined(ETHERTYPE_IPV6) */
-
-#if !defined(ETHERTYPE_ALLSAP) && defined(SOL2)
-#define ETHERTYPE_ALLSAP 0
-#endif /* !defined(ETHERTYPE_ALLSAP) && defined(SOL2) */
-
-#if !defined(PPP_ALLSAP) && defined(SOL2)
-#define PPP_ALLSAP PPP_ALLSTATIONS
-#endif /* !defined(PPP_ALLSAP) && defined(SOL2) */
-
-extern time_t time;
-
-#ifdef SOL2
-/*
- * We use this reader-writer lock to ensure that the lower streams
- * stay connected to the upper streams while the lower-side put and
- * service procedures are running. Essentially it is an existence
- * lock for the upper stream associated with each lower stream.
- */
-krwlock_t ppp_lower_lock;
-#define LOCK_LOWER_W rw_enter(&ppp_lower_lock, RW_WRITER)
-#define LOCK_LOWER_R rw_enter(&ppp_lower_lock, RW_READER)
-#define TRYLOCK_LOWER_R rw_tryenter(&ppp_lower_lock, RW_READER)
-#define UNLOCK_LOWER rw_exit(&ppp_lower_lock)
-
-#define MT_ENTER(x) mutex_enter(x)
-#define MT_EXIT(x) mutex_exit(x)
-
-/*
- * Notes on multithreaded implementation for Solaris 2:
- *
- * We use an inner perimeter around each queue pair and an outer
- * perimeter around the whole driver. The inner perimeter is
- * entered exclusively for all entry points (open, close, put,
- * service). The outer perimeter is entered exclusively for open
- * and close and shared for put and service. This is all done for
- * us by the streams framework.
- *
- * I used to think that the perimeters were entered for the lower
- * streams' put and service routines as well as for the upper streams'.
- * Because of problems experienced by people, and after reading the
- * documentation more closely, I now don't think that is true. So we
- * now use ppp_lower_lock to give us an existence guarantee on the
- * upper stream controlling each lower stream.
- *
- * Shared entry to the outer perimeter protects the existence of all
- * the upper streams and their upperstr_t structures, and guarantees
- * that the following fields of any upperstr_t won't change:
- * nextmn, next, nextppa. It guarantees that the lowerq field of an
- * upperstr_t won't go from non-zero to zero, that the global `ppas'
- * won't change and that the no lower stream will get unlinked.
- *
- * Shared (reader) access to ppa_lower_lock guarantees that no lower
- * stream will be unlinked and that the lowerq field of all upperstr_t
- * structures won't change.
- */
-
-#else /* SOL2 */
-#define LOCK_LOWER_W 0
-#define LOCK_LOWER_R 0
-#define TRYLOCK_LOWER_R 1
-#define UNLOCK_LOWER 0
-#define MT_ENTER(x) 0
-#define MT_EXIT(x) 0
-
-#endif /* SOL2 */
-
-/*
- * Private information; one per upper stream.
- */
-typedef struct upperstr {
- minor_t mn; /* minor device number */
- struct upperstr *nextmn; /* next minor device */
- queue_t *q; /* read q associated with this upper stream */
- int flags; /* flag bits, see below */
- int state; /* current DLPI state */
- int sap; /* service access point */
- int req_sap; /* which SAP the DLPI client requested */
- struct upperstr *ppa; /* control stream for our ppa */
- struct upperstr *next; /* next stream for this ppa */
- uint ioc_id; /* last ioctl ID for this stream */
- enum NPmode npmode; /* what to do with packets on this SAP */
- unsigned char rblocked; /* flow control has blocked upper read strm */
- /* N.B. rblocked is only changed by control stream's put/srv procs */
- /*
- * There is exactly one control stream for each PPA.
- * The following fields are only used for control streams.
- */
- int ppa_id;
- queue_t *lowerq; /* write queue attached below this PPA */
- struct upperstr *nextppa; /* next control stream */
- int mru;
- int mtu;
- struct pppstat stats; /* statistics */
- time_t last_sent; /* time last NP packet sent */
- time_t last_recv; /* time last NP packet rcvd */
-#ifdef SOL2
- kmutex_t stats_lock; /* lock for stats updates */
- kstat_t *kstats; /* stats for netstat */
-#endif /* SOL2 */
-#ifdef LACHTCP
- int ifflags;
- char ifname[IFNAMSIZ];
- struct ifstats ifstats;
-#endif /* LACHTCP */
-} upperstr_t;
-
-/* Values for flags */
-#define US_PRIV 1 /* stream was opened by superuser */
-#define US_CONTROL 2 /* stream is a control stream */
-#define US_BLOCKED 4 /* flow ctrl has blocked lower write stream */
-#define US_LASTMOD 8 /* no PPP modules below us */
-#define US_DBGLOG 0x10 /* log various occurrences */
-#define US_RBLOCKED 0x20 /* flow ctrl has blocked upper read stream */
-
-#if defined(SOL2)
-#if DL_CURRENT_VERSION >= 2
-#define US_PROMISC 0x40 /* stream is promiscuous */
-#endif /* DL_CURRENT_VERSION >= 2 */
-#define US_RAWDATA 0x80 /* raw M_DATA, no DLPI header */
-#endif /* defined(SOL2) */
-
-#ifdef PRIOQ
-static u_char max_band=0;
-static u_char def_band=0;
-
-#define IPPORT_DEFAULT 65535
-
-/*
- * Port priority table
- * Highest priority ports are listed first, lowest are listed last.
- * ICMP & packets using unlisted ports will be treated as "default".
- * If IPPORT_DEFAULT is not listed here, "default" packets will be
- * assigned lowest priority.
- * Each line should be terminated with "0".
- * Line containing only "0" marks the end of the list.
- */
-
-static u_short prioq_table[]= {
- 113, 53, 0,
- 22, 23, 513, 517, 518, 0,
- 514, 21, 79, 111, 0,
- 25, 109, 110, 0,
- IPPORT_DEFAULT, 0,
- 20, 70, 80, 8001, 8008, 8080, 0, /* 8001,8008,8080 - common proxy ports */
-0 };
-
-#endif /* PRIOQ */
-
-
-static upperstr_t *minor_devs = NULL;
-static upperstr_t *ppas = NULL;
-
-#ifdef SVR4
-static int pppopen __P((queue_t *, dev_t *, int, int, cred_t *));
-static int pppclose __P((queue_t *, int, cred_t *));
-#else
-static int pppopen __P((queue_t *, int, int, int));
-static int pppclose __P((queue_t *, int));
-#endif /* SVR4 */
-static int pppurput __P((queue_t *, mblk_t *));
-static int pppuwput __P((queue_t *, mblk_t *));
-static int pppursrv __P((queue_t *));
-static int pppuwsrv __P((queue_t *));
-static int ppplrput __P((queue_t *, mblk_t *));
-static int ppplwput __P((queue_t *, mblk_t *));
-static int ppplrsrv __P((queue_t *));
-static int ppplwsrv __P((queue_t *));
-#ifndef NO_DLPI
-static void dlpi_request __P((queue_t *, mblk_t *, upperstr_t *));
-static void dlpi_error __P((queue_t *, upperstr_t *, int, int, int));
-static void dlpi_ok __P((queue_t *, int));
-#endif
-static int send_data __P((mblk_t *, upperstr_t *));
-static void new_ppa __P((queue_t *, mblk_t *));
-static void attach_ppa __P((queue_t *, mblk_t *));
-static void detach_ppa __P((queue_t *, mblk_t *));
-static void detach_lower __P((queue_t *, mblk_t *));
-static void debug_dump __P((queue_t *, mblk_t *));
-static upperstr_t *find_dest __P((upperstr_t *, int));
-#if defined(SOL2)
-static upperstr_t *find_promisc __P((upperstr_t *, int));
-static mblk_t *prepend_ether __P((upperstr_t *, mblk_t *, int));
-static mblk_t *prepend_udind __P((upperstr_t *, mblk_t *, int));
-static void promisc_sendup __P((upperstr_t *, mblk_t *, int, int));
-#endif /* defined(SOL2) */
-static int putctl2 __P((queue_t *, int, int, int));
-static int putctl4 __P((queue_t *, int, int, int));
-static int pass_packet __P((upperstr_t *ppa, mblk_t *mp, int outbound));
-#ifdef FILTER_PACKETS
-static int ip_hard_filter __P((upperstr_t *ppa, mblk_t *mp, int outbound));
-#endif /* FILTER_PACKETS */
-
-#define PPP_ID 0xb1a6
-static struct module_info ppp_info = {
-#ifdef PRIOQ
- PPP_ID, "ppp", 0, 512, 512, 384
-#else
- PPP_ID, "ppp", 0, 512, 512, 128
-#endif /* PRIOQ */
-};
-
-static struct qinit pppurint = {
- pppurput, pppursrv, pppopen, pppclose, NULL, &ppp_info, NULL
-};
-
-static struct qinit pppuwint = {
- pppuwput, pppuwsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-static struct qinit ppplrint = {
- ppplrput, ppplrsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-static struct qinit ppplwint = {
- ppplwput, ppplwsrv, NULL, NULL, NULL, &ppp_info, NULL
-};
-
-#ifdef LACHTCP
-extern struct ifstats *ifstats;
-int pppdevflag = 0;
-#endif
-
-struct streamtab pppinfo = {
- &pppurint, &pppuwint,
- &ppplrint, &ppplwint
-};
-
-int ppp_count;
-
-/*
- * How we maintain statistics.
- */
-#ifdef SOL2
-#define INCR_IPACKETS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[0].value.ul++; \
- }
-#define INCR_IERRORS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[1].value.ul++; \
- }
-#define INCR_OPACKETS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[2].value.ul++; \
- }
-#define INCR_OERRORS(ppa) \
- if (ppa->kstats != 0) { \
- KSTAT_NAMED_PTR(ppa->kstats)[3].value.ul++; \
- }
-#endif
-
-#ifdef LACHTCP
-#define INCR_IPACKETS(ppa) ppa->ifstats.ifs_ipackets++;
-#define INCR_IERRORS(ppa) ppa->ifstats.ifs_ierrors++;
-#define INCR_OPACKETS(ppa) ppa->ifstats.ifs_opackets++;
-#define INCR_OERRORS(ppa) ppa->ifstats.ifs_oerrors++;
-#endif
-
-/*
- * STREAMS driver entry points.
- */
-static int
-#ifdef SVR4
-pppopen(q, devp, oflag, sflag, credp)
- queue_t *q;
- dev_t *devp;
- int oflag, sflag;
- cred_t *credp;
-#else
-pppopen(q, dev, oflag, sflag)
- queue_t *q;
- int dev; /* really dev_t */
- int oflag, sflag;
-#endif
-{
- upperstr_t *up;
- upperstr_t **prevp;
- minor_t mn;
-#ifdef PRIOQ
- u_short *ptr;
- u_char new_band;
-#endif /* PRIOQ */
-
- if (q->q_ptr)
- DRV_OPEN_OK(dev); /* device is already open */
-
-#ifdef PRIOQ
- /* Calculate max_bband & def_band from definitions in prioq.h
- This colud be done at some more approtiate time (less often)
- but this way it works well so I'll just leave it here */
-
- max_band = 1;
- def_band = 0;
- ptr = prioq_table;
- while (*ptr) {
- new_band = 1;
- while (*ptr)
- if (*ptr++ == IPPORT_DEFAULT) {
- new_band = 0;
- def_band = max_band;
- }
- max_band += new_band;
- ptr++;
- }
- if (def_band)
- def_band = max_band - def_band;
- --max_band;
-#endif /* PRIOQ */
-
- if (sflag == CLONEOPEN) {
- mn = 0;
- for (prevp = &minor_devs; (up = *prevp) != 0; prevp = &up->nextmn) {
- if (up->mn != mn)
- break;
- ++mn;
- }
- } else {
-#ifdef SVR4
- mn = getminor(*devp);
-#else
- mn = minor(dev);
-#endif
- for (prevp = &minor_devs; (up = *prevp) != 0; prevp = &up->nextmn) {
- if (up->mn >= mn)
- break;
- }
- if (up->mn == mn) {
- /* this can't happen */
- q->q_ptr = WR(q)->q_ptr = (caddr_t) up;
- DRV_OPEN_OK(dev);
- }
- }
-
- /*
- * Construct a new minor node.
- */
- up = (upperstr_t *) ALLOC_SLEEP(sizeof(upperstr_t));
- bzero((caddr_t) up, sizeof(upperstr_t));
- if (up == 0) {
- DPRINT("pppopen: out of kernel memory\n");
- OPEN_ERROR(ENXIO);
- }
- up->nextmn = *prevp;
- *prevp = up;
- up->mn = mn;
-#ifdef SVR4
- *devp = makedevice(getmajor(*devp), mn);
-#endif
- up->q = q;
- if (NOTSUSER() == 0)
- up->flags |= US_PRIV;
-#ifndef NO_DLPI
- up->state = DL_UNATTACHED;
-#endif
-#ifdef LACHTCP
- up->ifflags = IFF_UP | IFF_POINTOPOINT;
-#endif
- up->sap = -1;
- up->last_sent = up->last_recv = time;
- up->npmode = NPMODE_DROP;
- q->q_ptr = (caddr_t) up;
- WR(q)->q_ptr = (caddr_t) up;
- noenable(WR(q));
-#ifdef SOL2
- mutex_init(&up->stats_lock, NULL, MUTEX_DRIVER, NULL);
-#endif
- ++ppp_count;
-
- qprocson(q);
- DRV_OPEN_OK(makedev(major(dev), mn));
-}
-
-static int
-#ifdef SVR4
-pppclose(q, flag, credp)
- queue_t *q;
- int flag;
- cred_t *credp;
-#else
-pppclose(q, flag)
- queue_t *q;
- int flag;
-#endif
-{
- upperstr_t *up, **upp;
- upperstr_t *as, *asnext;
- upperstr_t **prevp;
-
- qprocsoff(q);
-
- up = (upperstr_t *) q->q_ptr;
- if (up == 0) {
- DPRINT("pppclose: q_ptr = 0\n");
- return 0;
- }
- if (up->flags & US_DBGLOG)
- DPRINT2("ppp/%d: close, flags=%x\n", up->mn, up->flags);
- if (up->flags & US_CONTROL) {
-#ifdef LACHTCP
- struct ifstats *ifp, *pifp;
-#endif
- if (up->lowerq != 0) {
- /* Gack! the lower stream should have be unlinked earlier! */
- DPRINT1("ppp%d: lower stream still connected on close?\n",
- up->mn);
- LOCK_LOWER_W;
- up->lowerq->q_ptr = 0;
- RD(up->lowerq)->q_ptr = 0;
- up->lowerq = 0;
- UNLOCK_LOWER;
- }
-
- /*
- * This stream represents a PPA:
- * For all streams attached to the PPA, clear their
- * references to this PPA.
- * Then remove this PPA from the list of PPAs.
- */
- for (as = up->next; as != 0; as = asnext) {
- asnext = as->next;
- as->next = 0;
- as->ppa = 0;
- if (as->flags & US_BLOCKED) {
- as->flags &= ~US_BLOCKED;
- flushq(WR(as->q), FLUSHDATA);
- }
- }
- for (upp = &ppas; *upp != 0; upp = &(*upp)->nextppa)
- if (*upp == up) {
- *upp = up->nextppa;
- break;
- }
-#ifdef LACHTCP
- /* Remove the statistics from the active list. */
- for (ifp = ifstats, pifp = 0; ifp; ifp = ifp->ifs_next) {
- if (ifp == &up->ifstats) {
- if (pifp)
- pifp->ifs_next = ifp->ifs_next;
- else
- ifstats = ifp->ifs_next;
- break;
- }
- pifp = ifp;
- }
-#endif
- } else {
- /*
- * If this stream is attached to a PPA,
- * remove it from the PPA's list.
- */
- if ((as = up->ppa) != 0) {
- for (; as->next != 0; as = as->next)
- if (as->next == up) {
- as->next = up->next;
- break;
- }
- }
- }
-
-#ifdef SOL2
- if (up->kstats)
- kstat_delete(up->kstats);
- mutex_destroy(&up->stats_lock);
-#endif
-
- q->q_ptr = NULL;
- WR(q)->q_ptr = NULL;
-
- for (prevp = &minor_devs; *prevp != 0; prevp = &(*prevp)->nextmn) {
- if (*prevp == up) {
- *prevp = up->nextmn;
- break;
- }
- }
- FREE(up, sizeof(upperstr_t));
- --ppp_count;
-
- return 0;
-}
-
-/*
- * A message from on high. We do one of three things:
- * - qreply()
- * - put the message on the lower write stream
- * - queue it for our service routine
- */
-static int
-pppuwput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *ppa, *nps;
- struct iocblk *iop;
- struct linkblk *lb;
-#ifdef LACHTCP
- struct ifreq *ifr;
- int i;
-#endif
- queue_t *lq;
- int error, n, sap;
- mblk_t *mq;
- struct ppp_idle *pip;
-#ifdef PRIOQ
- queue_t *tlq;
-#endif /* PRIOQ */
-#ifdef NO_DLPI
- upperstr_t *os;
-#endif
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppuwput: q_ptr = 0!\n");
- return 0;
- }
- if (mp == 0) {
- DPRINT1("pppuwput/%d: mp = 0!\n", us->mn);
- return 0;
- }
- if (mp->b_datap == 0) {
- DPRINT1("pppuwput/%d: mp->b_datap = 0!\n", us->mn);
- return 0;
- }
- switch (mp->b_datap->db_type) {
-#ifndef NO_DLPI
- case M_PCPROTO:
- case M_PROTO:
- dlpi_request(q, mp, us);
- break;
-#endif /* NO_DLPI */
-
- case M_DATA:
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: uwput M_DATA len=%d flags=%x\n",
- us->mn, msgdsize(mp), us->flags);
- if (us->ppa == 0 || msgdsize(mp) > us->ppa->mtu + PPP_HDRLEN
-#ifndef NO_DLPI
- || (us->flags & US_CONTROL) == 0
-#endif /* NO_DLPI */
- ) {
- DPRINT1("pppuwput: junk data len=%d\n", msgdsize(mp));
- freemsg(mp);
- break;
- }
-#ifdef NO_DLPI
- if ((us->flags & US_CONTROL) == 0 && !pass_packet(us, mp, 1))
- break;
-#endif
- if (!send_data(mp, us))
- putq(q, mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: ioctl %x count=%d\n",
- us->mn, iop->ioc_cmd, iop->ioc_count);
- switch (iop->ioc_cmd) {
-#if defined(SOL2)
- case DLIOCRAW: /* raw M_DATA mode */
- us->flags |= US_RAWDATA;
- error = 0;
- break;
-#endif /* defined(SOL2) */
- case I_LINK:
- if ((us->flags & US_CONTROL) == 0 || us->lowerq != 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl I_LINK b_cont = 0!\n", us->mn);
- break;
- }
- lb = (struct linkblk *) mp->b_cont->b_rptr;
- lq = lb->l_qbot;
- if (lq == 0) {
- DPRINT1("pppuwput/%d: ioctl I_LINK l_qbot = 0!\n", us->mn);
- break;
- }
- LOCK_LOWER_W;
- us->lowerq = lq;
- lq->q_ptr = (caddr_t) q;
- RD(lq)->q_ptr = (caddr_t) us->q;
- UNLOCK_LOWER;
- iop->ioc_count = 0;
- error = 0;
- us->flags &= ~US_LASTMOD;
- /* Unblock upper streams which now feed this lower stream. */
- qenable(q);
- /* Send useful information down to the modules which
- are now linked below us. */
- putctl2(lq, M_CTL, PPPCTL_UNIT, us->ppa_id);
- putctl4(lq, M_CTL, PPPCTL_MRU, us->mru);
- putctl4(lq, M_CTL, PPPCTL_MTU, us->mtu);
-#ifdef PRIOQ
- /* Lower tty driver's queue hiwat/lowat from default 4096/128
- to 256/128 since we don't want queueing of data on
- output to physical device */
-
- freezestr(lq);
- for (tlq = lq; tlq->q_next != NULL; tlq = tlq->q_next)
- ;
- strqset(tlq, QHIWAT, 0, 256);
- strqset(tlq, QLOWAT, 0, 128);
- unfreezestr(lq);
-#endif /* PRIOQ */
- break;
-
- case I_UNLINK:
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl I_UNLINK b_cont = 0!\n", us->mn);
- break;
- }
- lb = (struct linkblk *) mp->b_cont->b_rptr;
-#if DEBUG
- if (us->lowerq != lb->l_qbot) {
- DPRINT2("ppp unlink: lowerq=%x qbot=%x\n",
- us->lowerq, lb->l_qbot);
- break;
- }
-#endif
- iop->ioc_count = 0;
- qwriter(q, mp, detach_lower, PERIM_OUTER);
- error = -1;
- break;
-
- case PPPIO_NEWPPA:
- if (us->flags & US_CONTROL)
- break;
- if ((us->flags & US_PRIV) == 0) {
- error = EPERM;
- break;
- }
- /* Arrange to return an int */
- if ((mq = mp->b_cont) == 0
- || mq->b_datap->db_lim - mq->b_rptr < sizeof(int)) {
- mq = allocb(sizeof(int), BPRI_HI);
- if (mq == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = mq;
- mq->b_cont = 0;
- }
- iop->ioc_count = sizeof(int);
- mq->b_wptr = mq->b_rptr + sizeof(int);
- qwriter(q, mp, new_ppa, PERIM_OUTER);
- error = -1;
- break;
-
- case PPPIO_ATTACH:
- /* like dlpi_attach, for programs which can't write to
- the stream (like pppstats) */
- if (iop->ioc_count != sizeof(int) || us->ppa != 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_ATTACH b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- for (ppa = ppas; ppa != 0; ppa = ppa->nextppa)
- if (ppa->ppa_id == n)
- break;
- if (ppa == 0)
- break;
- us->ppa = ppa;
- iop->ioc_count = 0;
- qwriter(q, mp, attach_ppa, PERIM_OUTER);
- error = -1;
- break;
-
-#ifdef NO_DLPI
- case PPPIO_BIND:
- /* Attach to a given SAP. */
- if (iop->ioc_count != sizeof(int) || us->ppa == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_BIND b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- /* n must be a valid PPP network protocol number. */
- if (n < 0x21 || n > 0x3fff || (n & 0x101) != 1)
- break;
- /* check that no other stream is bound to this sap already. */
- for (os = us->ppa; os != 0; os = os->next)
- if (os->sap == n)
- break;
- if (os != 0)
- break;
- us->sap = n;
- iop->ioc_count = 0;
- error = 0;
- break;
-#endif /* NO_DLPI */
-
- case PPPIO_MRU:
- if (iop->ioc_count != sizeof(int) || (us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_MRU b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n <= 0 || n > PPP_MAXMRU)
- break;
- if (n < PPP_MRU)
- n = PPP_MRU;
- us->mru = n;
- if (us->lowerq)
- putctl4(us->lowerq, M_CTL, PPPCTL_MRU, n);
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_MTU:
- if (iop->ioc_count != sizeof(int) || (us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_MTU b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n <= 0 || n > PPP_MAXMTU)
- break;
- us->mtu = n;
-#ifdef LACHTCP
- /* The MTU reported in netstat, not used as IP max packet size! */
- us->ifstats.ifs_mtu = n;
-#endif
- if (us->lowerq)
- putctl4(us->lowerq, M_CTL, PPPCTL_MTU, n);
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_LASTMOD:
- us->flags |= US_LASTMOD;
- error = 0;
- break;
-
- case PPPIO_DEBUG:
- if (iop->ioc_count != sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_DEBUG b_cont = 0!\n", us->mn);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n == PPPDBG_DUMP + PPPDBG_DRIVER) {
- qwriter(q, NULL, debug_dump, PERIM_OUTER);
- iop->ioc_count = 0;
- error = -1;
- } else if (n == PPPDBG_LOG + PPPDBG_DRIVER) {
- DPRINT1("ppp/%d: debug log enabled\n", us->mn);
- us->flags |= US_DBGLOG;
- iop->ioc_count = 0;
- error = 0;
- } else {
- if (us->ppa == 0 || us->ppa->lowerq == 0)
- break;
- putnext(us->ppa->lowerq, mp);
- error = -1;
- }
- break;
-
- case PPPIO_NPMODE:
- if (iop->ioc_count != 2 * sizeof(int))
- break;
- if ((us->flags & US_CONTROL) == 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("pppuwput/%d: ioctl PPPIO_NPMODE b_cont = 0!\n", us->mn);
- break;
- }
- sap = ((int *)mp->b_cont->b_rptr)[0];
- for (nps = us->next; nps != 0; nps = nps->next) {
- if (us->flags & US_DBGLOG)
- DPRINT2("us = 0x%x, us->next->sap = 0x%x\n", nps, nps->sap);
- if (nps->sap == sap)
- break;
- }
- if (nps == 0) {
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: no stream for sap %x\n", us->mn, sap);
- break;
- }
- /* XXX possibly should use qwriter here */
- nps->npmode = (enum NPmode) ((int *)mp->b_cont->b_rptr)[1];
- if (nps->npmode != NPMODE_QUEUE && (nps->flags & US_BLOCKED) != 0)
- qenable(WR(nps->q));
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_GIDLE:
- if ((ppa = us->ppa) == 0)
- break;
- mq = allocb(sizeof(struct ppp_idle), BPRI_HI);
- if (mq == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = mq;
- mq->b_cont = 0;
- pip = (struct ppp_idle *) mq->b_wptr;
- pip->xmit_idle = time - ppa->last_sent;
- pip->recv_idle = time - ppa->last_recv;
- mq->b_wptr += sizeof(struct ppp_idle);
- iop->ioc_count = sizeof(struct ppp_idle);
- error = 0;
- break;
-
-#ifdef LACHTCP
- case SIOCSIFNAME:
- /* Sent from IP down to us. Attach the ifstats structure. */
- if (iop->ioc_count != sizeof(struct ifreq) || us->ppa == 0)
- break;
- ifr = (struct ifreq *)mp->b_cont->b_rptr;
- /* Find the unit number in the interface name. */
- for (i = 0; i < IFNAMSIZ; i++) {
- if (ifr->ifr_name[i] == 0 ||
- (ifr->ifr_name[i] >= '0' &&
- ifr->ifr_name[i] <= '9'))
- break;
- else
- us->ifname[i] = ifr->ifr_name[i];
- }
- us->ifname[i] = 0;
-
- /* Convert the unit number to binary. */
- for (n = 0; i < IFNAMSIZ; i++) {
- if (ifr->ifr_name[i] == 0) {
- break;
- }
- else {
- n = n * 10 + ifr->ifr_name[i] - '0';
- }
- }
-
- /* Verify the ppa. */
- if (us->ppa->ppa_id != n)
- break;
- ppa = us->ppa;
-
- /* Set up the netstat block. */
- strncpy (ppa->ifname, us->ifname, IFNAMSIZ);
-
- ppa->ifstats.ifs_name = ppa->ifname;
- ppa->ifstats.ifs_unit = n;
- ppa->ifstats.ifs_active = us->state != DL_UNBOUND;
- ppa->ifstats.ifs_mtu = ppa->mtu;
-
- /* Link in statistics used by netstat. */
- ppa->ifstats.ifs_next = ifstats;
- ifstats = &ppa->ifstats;
-
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case SIOCGIFFLAGS:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- ((struct iocblk_in *)iop)->ioc_ifflags = us->ifflags;
- error = 0;
- break;
-
- case SIOCSIFFLAGS:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- us->ifflags = ((struct iocblk_in *)iop)->ioc_ifflags;
- error = 0;
- break;
-
- case SIOCSIFADDR:
- if (!(us->flags & US_CONTROL)) {
- if (us->ppa)
- us = us->ppa;
- else
- break;
- }
- us->ifflags |= IFF_RUNNING;
- ((struct iocblk_in *)iop)->ioc_ifflags |= IFF_RUNNING;
- error = 0;
- break;
-
- case SIOCSIFMTU:
- /*
- * Vanilla SVR4 systems don't handle SIOCSIFMTU, rather
- * they take the MTU from the DL_INFO_ACK we sent in response
- * to their DL_INFO_REQ. Fortunately, they will update the
- * MTU if we send an unsolicited DL_INFO_ACK up.
- */
- if ((mq = allocb(sizeof(dl_info_req_t), BPRI_HI)) == 0)
- break; /* should do bufcall */
- ((union DL_primitives *)mq->b_rptr)->dl_primitive = DL_INFO_REQ;
- mq->b_wptr = mq->b_rptr + sizeof(dl_info_req_t);
- dlpi_request(q, mq, us);
- error = 0;
- break;
-
- case SIOCGIFNETMASK:
- case SIOCSIFNETMASK:
- case SIOCGIFADDR:
- case SIOCGIFDSTADDR:
- case SIOCSIFDSTADDR:
- case SIOCGIFMETRIC:
- error = 0;
- break;
-#endif /* LACHTCP */
-
- default:
- if (us->ppa == 0 || us->ppa->lowerq == 0)
- break;
- us->ioc_id = iop->ioc_id;
- error = -1;
- switch (iop->ioc_cmd) {
- case PPPIO_GETSTAT:
- case PPPIO_GETCSTAT:
- if (us->flags & US_LASTMOD) {
- error = EINVAL;
- break;
- }
- putnext(us->ppa->lowerq, mp);
- break;
- default:
- if (us->flags & US_PRIV)
- putnext(us->ppa->lowerq, mp);
- else {
- DPRINT1("ppp ioctl %x rejected\n", iop->ioc_cmd);
- error = EPERM;
- }
- break;
- }
- break;
- }
-
- if (error > 0) {
- iop->ioc_error = error;
- mp->b_datap->db_type = M_IOCNAK;
- qreply(q, mp);
- } else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- }
- break;
-
- case M_FLUSH:
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: flush %x\n", us->mn, *mp->b_rptr);
- if (*mp->b_rptr & FLUSHW)
- flushq(q, FLUSHDATA);
- if (*mp->b_rptr & FLUSHR) {
- *mp->b_rptr &= ~FLUSHW;
- qreply(q, mp);
- } else
- freemsg(mp);
- break;
-
- default:
- freemsg(mp);
- break;
- }
- return 0;
-}
-
-#ifndef NO_DLPI
-static void
-dlpi_request(q, mp, us)
- queue_t *q;
- mblk_t *mp;
- upperstr_t *us;
-{
- union DL_primitives *d = (union DL_primitives *) mp->b_rptr;
- int size = mp->b_wptr - mp->b_rptr;
- mblk_t *reply, *np;
- upperstr_t *ppa, *os;
- int sap, len;
- dl_info_ack_t *info;
- dl_bind_ack_t *ackp;
-#if DL_CURRENT_VERSION >= 2
- dl_phys_addr_ack_t *paddrack;
- static struct ether_addr eaddr = {0};
-#endif
-
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: dlpi prim %x len=%d\n", us->mn,
- d->dl_primitive, size);
- switch (d->dl_primitive) {
- case DL_INFO_REQ:
- if (size < sizeof(dl_info_req_t))
- goto badprim;
- if ((reply = allocb(sizeof(dl_info_ack_t), BPRI_HI)) == 0)
- break; /* should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- info = (dl_info_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_info_ack_t);
- bzero((caddr_t) info, sizeof(dl_info_ack_t));
- info->dl_primitive = DL_INFO_ACK;
- info->dl_max_sdu = us->ppa? us->ppa->mtu: PPP_MAXMTU;
- info->dl_min_sdu = 1;
- info->dl_addr_length = sizeof(uint);
- info->dl_mac_type = DL_ETHER; /* a bigger lie */
- info->dl_current_state = us->state;
- info->dl_service_mode = DL_CLDLS;
- info->dl_provider_style = DL_STYLE2;
-#if DL_CURRENT_VERSION >= 2
- info->dl_sap_length = sizeof(uint);
- info->dl_version = DL_CURRENT_VERSION;
-#endif
- qreply(q, reply);
- break;
-
- case DL_ATTACH_REQ:
- if (size < sizeof(dl_attach_req_t))
- goto badprim;
- if (us->state != DL_UNATTACHED || us->ppa != 0) {
- dlpi_error(q, us, DL_ATTACH_REQ, DL_OUTSTATE, 0);
- break;
- }
- for (ppa = ppas; ppa != 0; ppa = ppa->nextppa)
- if (ppa->ppa_id == d->attach_req.dl_ppa)
- break;
- if (ppa == 0) {
- dlpi_error(q, us, DL_ATTACH_REQ, DL_BADPPA, 0);
- break;
- }
- us->ppa = ppa;
- qwriter(q, mp, attach_ppa, PERIM_OUTER);
- return;
-
- case DL_DETACH_REQ:
- if (size < sizeof(dl_detach_req_t))
- goto badprim;
- if (us->state != DL_UNBOUND || us->ppa == 0) {
- dlpi_error(q, us, DL_DETACH_REQ, DL_OUTSTATE, 0);
- break;
- }
- qwriter(q, mp, detach_ppa, PERIM_OUTER);
- return;
-
- case DL_BIND_REQ:
- if (size < sizeof(dl_bind_req_t))
- goto badprim;
- if (us->state != DL_UNBOUND || us->ppa == 0) {
- dlpi_error(q, us, DL_BIND_REQ, DL_OUTSTATE, 0);
- break;
- }
-#if 0
- /* apparently this test fails (unnecessarily?) on some systems */
- if (d->bind_req.dl_service_mode != DL_CLDLS) {
- dlpi_error(q, us, DL_BIND_REQ, DL_UNSUPPORTED, 0);
- break;
- }
-#endif
-
- /* saps must be valid PPP network protocol numbers,
- except that we accept ETHERTYPE_IP in place of PPP_IP. */
- sap = d->bind_req.dl_sap;
- us->req_sap = sap;
-
-#if defined(SOL2)
- if (us->flags & US_DBGLOG)
- DPRINT2("DL_BIND_REQ: ip gives sap = 0x%x, us = 0x%x", sap, us);
-
- if (sap == ETHERTYPE_IP) /* normal IFF_IPV4 */
- sap = PPP_IP;
- else if (sap == ETHERTYPE_IPV6) /* when IFF_IPV6 is set */
- sap = PPP_IPV6;
- else if (sap == ETHERTYPE_ALLSAP) /* snoop gives sap of 0 */
- sap = PPP_ALLSAP;
- else {
- DPRINT2("DL_BIND_REQ: unrecognized sap = 0x%x, us = 0x%x", sap, us);
- dlpi_error(q, us, DL_BIND_REQ, DL_BADADDR, 0);
- break;
- }
-#else
- if (sap == ETHERTYPE_IP)
- sap = PPP_IP;
- if (sap < 0x21 || sap > 0x3fff || (sap & 0x101) != 1) {
- dlpi_error(q, us, DL_BIND_REQ, DL_BADADDR, 0);
- break;
- }
-#endif /* defined(SOL2) */
-
- /* check that no other stream is bound to this sap already. */
- for (os = us->ppa; os != 0; os = os->next)
- if (os->sap == sap)
- break;
- if (os != 0) {
- dlpi_error(q, us, DL_BIND_REQ, DL_NOADDR, 0);
- break;
- }
-
- us->sap = sap;
- us->state = DL_IDLE;
-
- if ((reply = allocb(sizeof(dl_bind_ack_t) + sizeof(uint),
- BPRI_HI)) == 0)
- break; /* should do bufcall */
- ackp = (dl_bind_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_bind_ack_t) + sizeof(uint);
- reply->b_datap->db_type = M_PCPROTO;
- bzero((caddr_t) ackp, sizeof(dl_bind_ack_t));
- ackp->dl_primitive = DL_BIND_ACK;
- ackp->dl_sap = sap;
- ackp->dl_addr_length = sizeof(uint);
- ackp->dl_addr_offset = sizeof(dl_bind_ack_t);
- *(uint *)(ackp+1) = sap;
- qreply(q, reply);
- break;
-
- case DL_UNBIND_REQ:
- if (size < sizeof(dl_unbind_req_t))
- goto badprim;
- if (us->state != DL_IDLE) {
- dlpi_error(q, us, DL_UNBIND_REQ, DL_OUTSTATE, 0);
- break;
- }
- us->sap = -1;
- us->state = DL_UNBOUND;
-#ifdef LACHTCP
- us->ppa->ifstats.ifs_active = 0;
-#endif
- dlpi_ok(q, DL_UNBIND_REQ);
- break;
-
- case DL_UNITDATA_REQ:
- if (size < sizeof(dl_unitdata_req_t))
- goto badprim;
- if (us->state != DL_IDLE) {
- dlpi_error(q, us, DL_UNITDATA_REQ, DL_OUTSTATE, 0);
- break;
- }
- if ((ppa = us->ppa) == 0) {
- cmn_err(CE_CONT, "ppp: in state dl_idle but ppa == 0?\n");
- break;
- }
- len = mp->b_cont == 0? 0: msgdsize(mp->b_cont);
- if (len > ppa->mtu) {
- DPRINT2("dlpi data too large (%d > %d)\n", len, ppa->mtu);
- break;
- }
-
-#if defined(SOL2)
- /*
- * Should there be any promiscuous stream(s), send the data
- * up for each promiscuous stream that we recognize.
- */
- if (mp->b_cont)
- promisc_sendup(ppa, mp->b_cont, us->sap, 0);
-#endif /* defined(SOL2) */
-
- mp->b_band = 0;
-#ifdef PRIOQ
- /* Extract s_port & d_port from IP-packet, the code is a bit
- dirty here, but so am I, too... */
- if (mp->b_datap->db_type == M_PROTO && us->sap == PPP_IP
- && mp->b_cont != 0) {
- u_char *bb, *tlh;
- int iphlen, len;
- u_short *ptr;
- u_char band_unset, cur_band, syn;
- u_short s_port, d_port;
-
- bb = mp->b_cont->b_rptr; /* bb points to IP-header*/
- len = mp->b_cont->b_wptr - mp->b_cont->b_rptr;
- syn = 0;
- s_port = IPPORT_DEFAULT;
- d_port = IPPORT_DEFAULT;
- if (len >= 20) { /* 20 = minimum length of IP header */
- iphlen = (bb[0] & 0x0f) * 4;
- tlh = bb + iphlen;
- len -= iphlen;
- switch (bb[9]) {
- case IPPROTO_TCP:
- if (len >= 20) { /* min length of TCP header */
- s_port = (tlh[0] << 8) + tlh[1];
- d_port = (tlh[2] << 8) + tlh[3];
- syn = tlh[13] & 0x02;
- }
- break;
- case IPPROTO_UDP:
- if (len >= 8) { /* min length of UDP header */
- s_port = (tlh[0] << 8) + tlh[1];
- d_port = (tlh[2] << 8) + tlh[3];
- }
- break;
- }
- }
-
- /*
- * Now calculate b_band for this packet from the
- * port-priority table.
- */
- ptr = prioq_table;
- cur_band = max_band;
- band_unset = 1;
- while (*ptr) {
- while (*ptr && band_unset)
- if (s_port == *ptr || d_port == *ptr++) {
- mp->b_band = cur_band;
- band_unset = 0;
- break;
- }
- ptr++;
- cur_band--;
- }
- if (band_unset)
- mp->b_band = def_band;
- /* It may be usable to urge SYN packets a bit */
- if (syn)
- mp->b_band++;
- }
-#endif /* PRIOQ */
- /* this assumes PPP_HDRLEN <= sizeof(dl_unitdata_req_t) */
- if (mp->b_datap->db_ref > 1) {
- np = allocb(PPP_HDRLEN, BPRI_HI);
- if (np == 0)
- break; /* gak! */
- np->b_cont = mp->b_cont;
- mp->b_cont = 0;
- freeb(mp);
- mp = np;
- } else
- mp->b_datap->db_type = M_DATA;
- /* XXX should use dl_dest_addr_offset/length here,
- but we would have to translate ETHERTYPE_IP -> PPP_IP */
- mp->b_wptr = mp->b_rptr + PPP_HDRLEN;
- mp->b_rptr[0] = PPP_ALLSTATIONS;
- mp->b_rptr[1] = PPP_UI;
- mp->b_rptr[2] = us->sap >> 8;
- mp->b_rptr[3] = us->sap;
- if (pass_packet(us, mp, 1)) {
- if (!send_data(mp, us))
- putq(q, mp);
- }
- return;
-
-#if DL_CURRENT_VERSION >= 2
- case DL_PHYS_ADDR_REQ:
- if (size < sizeof(dl_phys_addr_req_t))
- goto badprim;
-
- /*
- * Don't check state because ifconfig sends this one down too
- */
-
- if ((reply = allocb(sizeof(dl_phys_addr_ack_t)+ETHERADDRL,
- BPRI_HI)) == 0)
- break; /* should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- paddrack = (dl_phys_addr_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_phys_addr_ack_t);
- bzero((caddr_t) paddrack, sizeof(dl_phys_addr_ack_t)+ETHERADDRL);
- paddrack->dl_primitive = DL_PHYS_ADDR_ACK;
- paddrack->dl_addr_length = ETHERADDRL;
- paddrack->dl_addr_offset = sizeof(dl_phys_addr_ack_t);
- bcopy(&eaddr, reply->b_wptr, ETHERADDRL);
- reply->b_wptr += ETHERADDRL;
- qreply(q, reply);
- break;
-
-#if defined(SOL2)
- case DL_PROMISCON_REQ:
- if (size < sizeof(dl_promiscon_req_t))
- goto badprim;
- us->flags |= US_PROMISC;
- dlpi_ok(q, DL_PROMISCON_REQ);
- break;
-
- case DL_PROMISCOFF_REQ:
- if (size < sizeof(dl_promiscoff_req_t))
- goto badprim;
- us->flags &= ~US_PROMISC;
- dlpi_ok(q, DL_PROMISCOFF_REQ);
- break;
-#else
- case DL_PROMISCON_REQ: /* fall thru */
- case DL_PROMISCOFF_REQ: /* fall thru */
-#endif /* defined(SOL2) */
-#endif /* DL_CURRENT_VERSION >= 2 */
-
-#if DL_CURRENT_VERSION >= 2
- case DL_SET_PHYS_ADDR_REQ:
- case DL_SUBS_BIND_REQ:
- case DL_SUBS_UNBIND_REQ:
- case DL_ENABMULTI_REQ:
- case DL_DISABMULTI_REQ:
- case DL_XID_REQ:
- case DL_TEST_REQ:
- case DL_REPLY_UPDATE_REQ:
- case DL_REPLY_REQ:
- case DL_DATA_ACK_REQ:
-#endif
- case DL_CONNECT_REQ:
- case DL_TOKEN_REQ:
- dlpi_error(q, us, d->dl_primitive, DL_NOTSUPPORTED, 0);
- break;
-
- case DL_CONNECT_RES:
- case DL_DISCONNECT_REQ:
- case DL_RESET_REQ:
- case DL_RESET_RES:
- dlpi_error(q, us, d->dl_primitive, DL_OUTSTATE, 0);
- break;
-
- case DL_UDQOS_REQ:
- dlpi_error(q, us, d->dl_primitive, DL_BADQOSTYPE, 0);
- break;
-
-#if DL_CURRENT_VERSION >= 2
- case DL_TEST_RES:
- case DL_XID_RES:
- break;
-#endif
-
- default:
- cmn_err(CE_CONT, "ppp: unknown dlpi prim 0x%x\n", d->dl_primitive);
- /* fall through */
- badprim:
- dlpi_error(q, us, d->dl_primitive, DL_BADPRIM, 0);
- break;
- }
- freemsg(mp);
-}
-
-static void
-dlpi_error(q, us, prim, err, uerr)
- queue_t *q;
- upperstr_t *us;
- int prim, err, uerr;
-{
- mblk_t *reply;
- dl_error_ack_t *errp;
-
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: dlpi error, prim=%x, err=%x\n", us->mn, prim, err);
- reply = allocb(sizeof(dl_error_ack_t), BPRI_HI);
- if (reply == 0)
- return; /* XXX should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- errp = (dl_error_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_error_ack_t);
- errp->dl_primitive = DL_ERROR_ACK;
- errp->dl_error_primitive = prim;
- errp->dl_errno = err;
- errp->dl_unix_errno = uerr;
- qreply(q, reply);
-}
-
-static void
-dlpi_ok(q, prim)
- queue_t *q;
- int prim;
-{
- mblk_t *reply;
- dl_ok_ack_t *okp;
-
- reply = allocb(sizeof(dl_ok_ack_t), BPRI_HI);
- if (reply == 0)
- return; /* XXX should do bufcall */
- reply->b_datap->db_type = M_PCPROTO;
- okp = (dl_ok_ack_t *) reply->b_wptr;
- reply->b_wptr += sizeof(dl_ok_ack_t);
- okp->dl_primitive = DL_OK_ACK;
- okp->dl_correct_primitive = prim;
- qreply(q, reply);
-}
-#endif /* NO_DLPI */
-
-static int
-pass_packet(us, mp, outbound)
- upperstr_t *us;
- mblk_t *mp;
- int outbound;
-{
- int pass;
- upperstr_t *ppa;
-
- if ((ppa = us->ppa) == 0) {
- freemsg(mp);
- return 0;
- }
-
-#ifdef FILTER_PACKETS
- pass = ip_hard_filter(us, mp, outbound);
-#else
- /*
- * Here is where we might, in future, decide whether to pass
- * or drop the packet, and whether it counts as link activity.
- */
- pass = 1;
-#endif /* FILTER_PACKETS */
-
- if (pass < 0) {
- /* pass only if link already up, and don't update time */
- if (ppa->lowerq == 0) {
- freemsg(mp);
- return 0;
- }
- pass = 1;
- } else if (pass) {
- if (outbound)
- ppa->last_sent = time;
- else
- ppa->last_recv = time;
- }
-
- return pass;
-}
-
-/*
- * We have some data to send down to the lower stream (or up the
- * control stream, if we don't have a lower stream attached).
- * Returns 1 if the message was dealt with, 0 if it wasn't able
- * to be sent on and should therefore be queued up.
- */
-static int
-send_data(mp, us)
- mblk_t *mp;
- upperstr_t *us;
-{
- upperstr_t *ppa;
-
- if ((us->flags & US_BLOCKED) || us->npmode == NPMODE_QUEUE)
- return 0;
- ppa = us->ppa;
- if (ppa == 0 || us->npmode == NPMODE_DROP || us->npmode == NPMODE_ERROR) {
- if (us->flags & US_DBGLOG)
- DPRINT2("ppp/%d: dropping pkt (npmode=%d)\n", us->mn, us->npmode);
- freemsg(mp);
- return 1;
- }
- if (ppa->lowerq == 0) {
- /* try to send it up the control stream */
- if (bcanputnext(ppa->q, mp->b_band)) {
- /*
- * The message seems to get corrupted for some reason if
- * we just send the message up as it is, so we send a copy.
- */
- mblk_t *np = copymsg(mp);
- freemsg(mp);
- if (np != 0)
- putnext(ppa->q, np);
- return 1;
- }
- } else {
- if (bcanputnext(ppa->lowerq, mp->b_band)) {
- MT_ENTER(&ppa->stats_lock);
- ppa->stats.ppp_opackets++;
- ppa->stats.ppp_obytes += msgdsize(mp);
-#ifdef INCR_OPACKETS
- INCR_OPACKETS(ppa);
-#endif
- MT_EXIT(&ppa->stats_lock);
- /*
- * The lower queue is only ever detached while holding an
- * exclusive lock on the whole driver. So we can be confident
- * that the lower queue is still there.
- */
- putnext(ppa->lowerq, mp);
- return 1;
- }
- }
- us->flags |= US_BLOCKED;
- return 0;
-}
-
-/*
- * Allocate a new PPA id and link this stream into the list of PPAs.
- * This procedure is called with an exclusive lock on all queues in
- * this driver.
- */
-static void
-new_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *up, **usp;
- int ppa_id;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("new_ppa: q_ptr = 0!\n");
- return;
- }
-
- usp = &ppas;
- ppa_id = 0;
- while ((up = *usp) != 0 && ppa_id == up->ppa_id) {
- ++ppa_id;
- usp = &up->nextppa;
- }
- us->ppa_id = ppa_id;
- us->ppa = us;
- us->next = 0;
- us->nextppa = *usp;
- *usp = us;
- us->flags |= US_CONTROL;
- us->npmode = NPMODE_PASS;
-
- us->mtu = PPP_MTU;
- us->mru = PPP_MRU;
-
-#ifdef SOL2
- /*
- * Create a kstats record for our statistics, so netstat -i works.
- */
- if (us->kstats == 0) {
- char unit[32];
-
- sprintf(unit, "ppp%d", us->ppa->ppa_id);
- us->kstats = kstat_create("ppp", us->ppa->ppa_id, unit,
- "net", KSTAT_TYPE_NAMED, 4, 0);
- if (us->kstats != 0) {
- kstat_named_t *kn = KSTAT_NAMED_PTR(us->kstats);
-
- strcpy(kn[0].name, "ipackets");
- kn[0].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[1].name, "ierrors");
- kn[1].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[2].name, "opackets");
- kn[2].data_type = KSTAT_DATA_ULONG;
- strcpy(kn[3].name, "oerrors");
- kn[3].data_type = KSTAT_DATA_ULONG;
- kstat_install(us->kstats);
- }
- }
-#endif /* SOL2 */
-
- *(int *)mp->b_cont->b_rptr = ppa_id;
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-static void
-attach_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *t;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("attach_ppa: q_ptr = 0!\n");
- return;
- }
-
-#ifndef NO_DLPI
- us->state = DL_UNBOUND;
-#endif
- for (t = us->ppa; t->next != 0; t = t->next)
- ;
- t->next = us;
- us->next = 0;
- if (mp->b_datap->db_type == M_IOCTL) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
-#ifndef NO_DLPI
- dlpi_ok(q, DL_ATTACH_REQ);
-#endif
- }
-}
-
-static void
-detach_ppa(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us, *t;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("detach_ppa: q_ptr = 0!\n");
- return;
- }
-
- for (t = us->ppa; t->next != 0; t = t->next)
- if (t->next == us) {
- t->next = us->next;
- break;
- }
- us->next = 0;
- us->ppa = 0;
-#ifndef NO_DLPI
- us->state = DL_UNATTACHED;
- dlpi_ok(q, DL_DETACH_REQ);
-#endif
-}
-
-/*
- * We call this with qwriter in order to give the upper queue procedures
- * the guarantee that the lower queue is not going to go away while
- * they are executing.
- */
-static void
-detach_lower(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("detach_lower: q_ptr = 0!\n");
- return;
- }
-
- LOCK_LOWER_W;
- us->lowerq->q_ptr = 0;
- RD(us->lowerq)->q_ptr = 0;
- us->lowerq = 0;
- UNLOCK_LOWER;
-
- /* Unblock streams which now feed back up the control stream. */
- qenable(us->q);
-
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-static int
-pppuwsrv(q)
- queue_t *q;
-{
- upperstr_t *us, *as;
- mblk_t *mp;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppuwsrv: q_ptr = 0!\n");
- return 0;
- }
-
- /*
- * If this is a control stream, then this service procedure
- * probably got enabled because of flow control in the lower
- * stream being enabled (or because of the lower stream going
- * away). Therefore we enable the service procedure of all
- * attached upper streams.
- */
- if (us->flags & US_CONTROL) {
- for (as = us->next; as != 0; as = as->next)
- qenable(WR(as->q));
- }
-
- /* Try to send on any data queued here. */
- us->flags &= ~US_BLOCKED;
- while ((mp = getq(q)) != 0) {
- if (!send_data(mp, us)) {
- putbq(q, mp);
- break;
- }
- }
-
- return 0;
-}
-
-/* should never get called... */
-static int
-ppplwput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- putnext(q, mp);
- return 0;
-}
-
-static int
-ppplwsrv(q)
- queue_t *q;
-{
- queue_t *uq;
-
- /*
- * Flow control has back-enabled this stream:
- * enable the upper write service procedure for
- * the upper control stream for this lower stream.
- */
- LOCK_LOWER_R;
- uq = (queue_t *) q->q_ptr;
- if (uq != 0)
- qenable(uq);
- UNLOCK_LOWER;
- return 0;
-}
-
-/*
- * This should only get called for control streams.
- */
-static int
-pppurput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *ppa, *us;
- int proto, len;
- struct iocblk *iop;
-
- ppa = (upperstr_t *) q->q_ptr;
- if (ppa == 0) {
- DPRINT("pppurput: q_ptr = 0!\n");
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_CTL:
- MT_ENTER(&ppa->stats_lock);
- switch (*mp->b_rptr) {
- case PPPCTL_IERROR:
-#ifdef INCR_IERRORS
- INCR_IERRORS(ppa);
-#endif
- ppa->stats.ppp_ierrors++;
- break;
- case PPPCTL_OERROR:
-#ifdef INCR_OERRORS
- INCR_OERRORS(ppa);
-#endif
- ppa->stats.ppp_oerrors++;
- break;
- }
- MT_EXIT(&ppa->stats_lock);
- freemsg(mp);
- break;
-
- case M_IOCACK:
- case M_IOCNAK:
- /*
- * Attempt to match up the response with the stream
- * that the request came from.
- */
- iop = (struct iocblk *) mp->b_rptr;
- for (us = ppa; us != 0; us = us->next)
- if (us->ioc_id == iop->ioc_id)
- break;
- if (us == 0)
- freemsg(mp);
- else
- putnext(us->q, mp);
- break;
-
- case M_HANGUP:
- /*
- * The serial device has hung up. We don't want to send
- * the M_HANGUP message up to pppd because that will stop
- * us from using the control stream any more. Instead we
- * send a zero-length message as an end-of-file indication.
- */
- freemsg(mp);
- mp = allocb(1, BPRI_HI);
- if (mp == 0) {
- DPRINT1("ppp/%d: couldn't allocate eof message!\n", ppa->mn);
- break;
- }
- putnext(ppa->q, mp);
- break;
-
- default:
- if (mp->b_datap->db_type == M_DATA) {
- len = msgdsize(mp);
- if (mp->b_wptr - mp->b_rptr < PPP_HDRLEN) {
- PULLUP(mp, PPP_HDRLEN);
- if (mp == 0) {
- DPRINT1("ppp_urput: msgpullup failed (len=%d)\n", len);
- break;
- }
- }
- MT_ENTER(&ppa->stats_lock);
- ppa->stats.ppp_ipackets++;
- ppa->stats.ppp_ibytes += len;
-#ifdef INCR_IPACKETS
- INCR_IPACKETS(ppa);
-#endif
- MT_EXIT(&ppa->stats_lock);
-
- proto = PPP_PROTOCOL(mp->b_rptr);
-
-#if defined(SOL2)
- /*
- * Should there be any promiscuous stream(s), send the data
- * up for each promiscuous stream that we recognize.
- */
- promisc_sendup(ppa, mp, proto, 1);
-#endif /* defined(SOL2) */
-
- if (proto < 0x8000 && (us = find_dest(ppa, proto)) != 0) {
- /*
- * A data packet for some network protocol.
- * Queue it on the upper stream for that protocol.
- * XXX could we just putnext it? (would require thought)
- * The rblocked flag is there to ensure that we keep
- * messages in order for each network protocol.
- */
- if (!pass_packet(us, mp, 0))
- break;
- if (!us->rblocked && !canput(us->q))
- us->rblocked = 1;
- if (!us->rblocked)
- putq(us->q, mp);
- else
- putq(q, mp);
- break;
- }
- }
- /*
- * A control frame, a frame for an unknown protocol,
- * or some other message type.
- * Send it up to pppd via the control stream.
- */
- if (queclass(mp) == QPCTL || canputnext(ppa->q))
- putnext(ppa->q, mp);
- else
- putq(q, mp);
- break;
- }
-
- return 0;
-}
-
-static int
-pppursrv(q)
- queue_t *q;
-{
- upperstr_t *us, *as;
- mblk_t *mp, *hdr;
-#ifndef NO_DLPI
- dl_unitdata_ind_t *ud;
-#endif
- int proto;
-
- us = (upperstr_t *) q->q_ptr;
- if (us == 0) {
- DPRINT("pppursrv: q_ptr = 0!\n");
- return 0;
- }
-
- if (us->flags & US_CONTROL) {
- /*
- * A control stream.
- * If there is no lower queue attached, run the write service
- * routines of other upper streams attached to this PPA.
- */
- if (us->lowerq == 0) {
- as = us;
- do {
- if (as->flags & US_BLOCKED)
- qenable(WR(as->q));
- as = as->next;
- } while (as != 0);
- }
-
- /*
- * Messages get queued on this stream's read queue if they
- * can't be queued on the read queue of the attached stream
- * that they are destined for. This is for flow control -
- * when this queue fills up, the lower read put procedure will
- * queue messages there and the flow control will propagate
- * down from there.
- */
- while ((mp = getq(q)) != 0) {
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto < 0x8000 && (as = find_dest(us, proto)) != 0) {
- if (!canput(as->q))
- break;
- putq(as->q, mp);
- } else {
- if (!canputnext(q))
- break;
- putnext(q, mp);
- }
- }
- if (mp) {
- putbq(q, mp);
- } else {
- /* can now put stuff directly on network protocol streams again */
- for (as = us->next; as != 0; as = as->next)
- as->rblocked = 0;
- }
-
- /*
- * If this stream has a lower stream attached,
- * enable the read queue's service routine.
- * XXX we should really only do this if the queue length
- * has dropped below the low-water mark.
- */
- if (us->lowerq != 0)
- qenable(RD(us->lowerq));
-
- } else {
- /*
- * A network protocol stream. Put a DLPI header on each
- * packet and send it on.
- * (Actually, it seems that the IP module will happily
- * accept M_DATA messages without the DL_UNITDATA_IND header.)
- */
- while ((mp = getq(q)) != 0) {
- if (!canputnext(q)) {
- putbq(q, mp);
- break;
- }
-#ifndef NO_DLPI
- proto = PPP_PROTOCOL(mp->b_rptr);
- mp->b_rptr += PPP_HDRLEN;
- hdr = allocb(sizeof(dl_unitdata_ind_t) + 2 * sizeof(uint),
- BPRI_MED);
- if (hdr == 0) {
- /* XXX should put it back and use bufcall */
- freemsg(mp);
- continue;
- }
- hdr->b_datap->db_type = M_PROTO;
- ud = (dl_unitdata_ind_t *) hdr->b_wptr;
- hdr->b_wptr += sizeof(dl_unitdata_ind_t) + 2 * sizeof(uint);
- hdr->b_cont = mp;
- ud->dl_primitive = DL_UNITDATA_IND;
- ud->dl_dest_addr_length = sizeof(uint);
- ud->dl_dest_addr_offset = sizeof(dl_unitdata_ind_t);
- ud->dl_src_addr_length = sizeof(uint);
- ud->dl_src_addr_offset = ud->dl_dest_addr_offset + sizeof(uint);
-#if DL_CURRENT_VERSION >= 2
- ud->dl_group_address = 0;
-#endif
- /* Send the DLPI client the data with the SAP they requested,
- (e.g. ETHERTYPE_IP) rather than the PPP protocol number
- (e.g. PPP_IP) */
- ((uint *)(ud + 1))[0] = us->req_sap; /* dest SAP */
- ((uint *)(ud + 1))[1] = us->req_sap; /* src SAP */
- putnext(q, hdr);
-#else /* NO_DLPI */
- putnext(q, mp);
-#endif /* NO_DLPI */
- }
- /*
- * Now that we have consumed some packets from this queue,
- * enable the control stream's read service routine so that we
- * can process any packets for us that might have got queued
- * there for flow control reasons.
- */
- if (us->ppa)
- qenable(us->ppa->q);
- }
-
- return 0;
-}
-
-static upperstr_t *
-find_dest(ppa, proto)
- upperstr_t *ppa;
- int proto;
-{
- upperstr_t *us;
-
- for (us = ppa->next; us != 0; us = us->next)
- if (proto == us->sap)
- break;
- return us;
-}
-
-#if defined (SOL2)
-/*
- * Test upstream promiscuous conditions. As of now, only pass IPv4 and
- * Ipv6 packets upstream (let PPP packets be decoded elsewhere).
- */
-static upperstr_t *
-find_promisc(us, proto)
- upperstr_t *us;
- int proto;
-{
-
- if ((proto != PPP_IP) && (proto != PPP_IPV6))
- return (upperstr_t *)0;
-
- for ( ; us; us = us->next) {
- if ((us->flags & US_PROMISC) && (us->state == DL_IDLE))
- return us;
- }
-
- return (upperstr_t *)0;
-}
-
-/*
- * Prepend an empty Ethernet header to msg for snoop, et al.
- */
-static mblk_t *
-prepend_ether(us, mp, proto)
- upperstr_t *us;
- mblk_t *mp;
- int proto;
-{
- mblk_t *eh;
- int type;
-
- if ((eh = allocb(sizeof(struct ether_header), BPRI_HI)) == 0) {
- freemsg(mp);
- return (mblk_t *)0;
- }
-
- if (proto == PPP_IP)
- type = ETHERTYPE_IP;
- else if (proto == PPP_IPV6)
- type = ETHERTYPE_IPV6;
- else
- type = proto; /* What else? Let decoder decide */
-
- eh->b_wptr += sizeof(struct ether_header);
- bzero((caddr_t)eh->b_rptr, sizeof(struct ether_header));
- ((struct ether_header *)eh->b_rptr)->ether_type = htons((short)type);
- eh->b_cont = mp;
- return (eh);
-}
-
-/*
- * Prepend DL_UNITDATA_IND mblk to msg
- */
-static mblk_t *
-prepend_udind(us, mp, proto)
- upperstr_t *us;
- mblk_t *mp;
- int proto;
-{
- dl_unitdata_ind_t *dlu;
- mblk_t *dh;
- size_t size;
-
- size = sizeof(dl_unitdata_ind_t);
- if ((dh = allocb(size, BPRI_MED)) == 0) {
- freemsg(mp);
- return (mblk_t *)0;
- }
-
- dh->b_datap->db_type = M_PROTO;
- dh->b_wptr = dh->b_datap->db_lim;
- dh->b_rptr = dh->b_wptr - size;
-
- dlu = (dl_unitdata_ind_t *)dh->b_rptr;
- dlu->dl_primitive = DL_UNITDATA_IND;
- dlu->dl_dest_addr_length = 0;
- dlu->dl_dest_addr_offset = sizeof(dl_unitdata_ind_t);
- dlu->dl_src_addr_length = 0;
- dlu->dl_src_addr_offset = sizeof(dl_unitdata_ind_t);
- dlu->dl_group_address = 0;
-
- dh->b_cont = mp;
- return (dh);
-}
-
-/*
- * For any recognized promiscuous streams, send data upstream
- */
-static void
-promisc_sendup(ppa, mp, proto, skip)
- upperstr_t *ppa;
- mblk_t *mp;
- int proto, skip;
-{
- mblk_t *dup_mp, *dup_dup_mp;
- upperstr_t *prus, *nprus;
-
- if ((prus = find_promisc(ppa, proto)) != 0) {
- if (dup_mp = dupmsg(mp)) {
-
- if (skip)
- dup_mp->b_rptr += PPP_HDRLEN;
-
- for ( ; nprus = find_promisc(prus->next, proto);
- prus = nprus) {
-
- if (dup_dup_mp = dupmsg(dup_mp)) {
- if (canputnext(prus->q)) {
- if (prus->flags & US_RAWDATA) {
- dup_dup_mp = prepend_ether(prus, dup_dup_mp, proto);
- putnext(prus->q, dup_dup_mp);
- } else {
- dup_dup_mp = prepend_udind(prus, dup_dup_mp, proto);
- putnext(prus->q, dup_dup_mp);
- }
- } else {
- DPRINT("ppp_urput: data to promisc q dropped\n");
- freemsg(dup_dup_mp);
- }
- }
- }
-
- if (canputnext(prus->q)) {
- if (prus->flags & US_RAWDATA) {
- dup_mp = prepend_ether(prus, dup_mp, proto);
- putnext(prus->q, dup_mp);
- } else {
- dup_mp = prepend_udind(prus, dup_mp, proto);
- putnext(prus->q, dup_mp);
- }
- } else {
- DPRINT("ppp_urput: data to promisc q dropped\n");
- freemsg(dup_mp);
- }
- }
- }
-}
-#endif /* defined(SOL2) */
-
-/*
- * We simply put the message on to the associated upper control stream
- * (either here or in ppplrsrv). That way we enter the perimeters
- * before looking through the list of attached streams to decide which
- * stream it should go up.
- */
-static int
-ppplrput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- queue_t *uq;
- struct iocblk *iop;
-
- switch (mp->b_datap->db_type) {
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- iop->ioc_error = EINVAL;
- mp->b_datap->db_type = M_IOCNAK;
- qreply(q, mp);
- return 0;
- case M_FLUSH:
- if (*mp->b_rptr & FLUSHR)
- flushq(q, FLUSHDATA);
- if (*mp->b_rptr & FLUSHW) {
- *mp->b_rptr &= ~FLUSHR;
- qreply(q, mp);
- } else
- freemsg(mp);
- return 0;
- }
-
- /*
- * If we can't get the lower lock straight away, queue this one
- * rather than blocking, to avoid the possibility of deadlock.
- */
- if (!TRYLOCK_LOWER_R) {
- putq(q, mp);
- return 0;
- }
-
- /*
- * Check that we're still connected to the driver.
- */
- uq = (queue_t *) q->q_ptr;
- if (uq == 0) {
- UNLOCK_LOWER;
- DPRINT1("ppplrput: q = %x, uq = 0??\n", q);
- freemsg(mp);
- return 0;
- }
-
- /*
- * Try to forward the message to the put routine for the upper
- * control stream for this lower stream.
- * If there are already messages queued here, queue this one so
- * they don't get out of order.
- */
- if (queclass(mp) == QPCTL || (qsize(q) == 0 && canput(uq)))
- put(uq, mp);
- else
- putq(q, mp);
-
- UNLOCK_LOWER;
- return 0;
-}
-
-static int
-ppplrsrv(q)
- queue_t *q;
-{
- mblk_t *mp;
- queue_t *uq;
-
- /*
- * Packets get queued here for flow control reasons
- * or if the lrput routine couldn't get the lower lock
- * without blocking.
- */
- LOCK_LOWER_R;
- uq = (queue_t *) q->q_ptr;
- if (uq == 0) {
- UNLOCK_LOWER;
- flushq(q, FLUSHALL);
- DPRINT1("ppplrsrv: q = %x, uq = 0??\n", q);
- return 0;
- }
- while ((mp = getq(q)) != 0) {
- if (queclass(mp) == QPCTL || canput(uq))
- put(uq, mp);
- else {
- putbq(q, mp);
- break;
- }
- }
- UNLOCK_LOWER;
- return 0;
-}
-
-static int
-putctl2(q, type, code, val)
- queue_t *q;
- int type, code, val;
-{
- mblk_t *mp;
-
- mp = allocb(2, BPRI_HI);
- if (mp == 0)
- return 0;
- mp->b_datap->db_type = type;
- mp->b_wptr[0] = code;
- mp->b_wptr[1] = val;
- mp->b_wptr += 2;
- putnext(q, mp);
- return 1;
-}
-
-static int
-putctl4(q, type, code, val)
- queue_t *q;
- int type, code, val;
-{
- mblk_t *mp;
-
- mp = allocb(4, BPRI_HI);
- if (mp == 0)
- return 0;
- mp->b_datap->db_type = type;
- mp->b_wptr[0] = code;
- ((short *)mp->b_wptr)[1] = val;
- mp->b_wptr += 4;
- putnext(q, mp);
- return 1;
-}
-
-static void
-debug_dump(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- upperstr_t *us;
- queue_t *uq, *lq;
-
- DPRINT("ppp upper streams:\n");
- for (us = minor_devs; us != 0; us = us->nextmn) {
- uq = us->q;
- DPRINT3(" %d: q=%x rlev=%d",
- us->mn, uq, (uq? qsize(uq): 0));
- DPRINT3(" wlev=%d flags=0x%b", (uq? qsize(WR(uq)): 0),
- us->flags, "\020\1priv\2control\3blocked\4last");
- DPRINT3(" state=%x sap=%x req_sap=%x", us->state, us->sap,
- us->req_sap);
- if (us->ppa == 0)
- DPRINT(" ppa=?\n");
- else
- DPRINT1(" ppa=%d\n", us->ppa->ppa_id);
- if (us->flags & US_CONTROL) {
- lq = us->lowerq;
- DPRINT3(" control for %d lq=%x rlev=%d",
- us->ppa_id, lq, (lq? qsize(RD(lq)): 0));
- DPRINT3(" wlev=%d mru=%d mtu=%d\n",
- (lq? qsize(lq): 0), us->mru, us->mtu);
- }
- }
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
-}
-
-#ifdef FILTER_PACKETS
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/udp.h>
-#include <netinet/tcp.h>
-
-#define MAX_IPHDR 128 /* max TCP/IP header size */
-
-
-/* The following table contains a hard-coded list of protocol/port pairs.
- * Any matching packets are either discarded unconditionally, or,
- * if ok_if_link_up is non-zero when a connection does not currently exist
- * (i.e., they go through if the connection is present, but never initiate
- * a dial-out).
- * This idea came from a post by dm@garage.uun.org (David Mazieres)
- */
-static struct pktfilt_tab {
- int proto;
- u_short port;
- u_short ok_if_link_up;
-} pktfilt_tab[] = {
- { IPPROTO_UDP, 520, 1 }, /* RIP, ok to pass if link is up */
- { IPPROTO_UDP, 123, 1 }, /* NTP, don't keep up the link for it */
- { -1, 0, 0 } /* terminator entry has port == -1 */
-};
-
-
-static int
-ip_hard_filter(us, mp, outbound)
- upperstr_t *us;
- mblk_t *mp;
- int outbound;
-{
- struct ip *ip;
- struct pktfilt_tab *pft;
- mblk_t *temp_mp;
- int proto;
- int len, hlen;
-
-
- /* Note, the PPP header has already been pulled up in all cases */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: filter, proto=0x%x, out=%d\n", us->mn, proto, outbound);
-
- switch (proto)
- {
- case PPP_IP:
- if ((mp->b_wptr - mp->b_rptr) == PPP_HDRLEN && mp->b_cont != 0) {
- temp_mp = mp->b_cont;
- len = msgdsize(temp_mp);
- hlen = (len < MAX_IPHDR) ? len : MAX_IPHDR;
- PULLUP(temp_mp, hlen);
- if (temp_mp == 0) {
- DPRINT2("ppp/%d: filter, pullup next failed, len=%d\n",
- us->mn, hlen);
- mp->b_cont = 0; /* PULLUP() freed the rest */
- freemsg(mp);
- return 0;
- }
- ip = (struct ip *)mp->b_cont->b_rptr;
- }
- else {
- len = msgdsize(mp);
- hlen = (len < (PPP_HDRLEN+MAX_IPHDR)) ? len : (PPP_HDRLEN+MAX_IPHDR);
- PULLUP(mp, hlen);
- if (mp == 0) {
- DPRINT2("ppp/%d: filter, pullup failed, len=%d\n",
- us->mn, hlen);
- return 0;
- }
- ip = (struct ip *)(mp->b_rptr + PPP_HDRLEN);
- }
-
- /* For IP traffic, certain packets (e.g., RIP) may be either
- * 1. ignored - dropped completely
- * 2. will not initiate a connection, but
- * will be passed if a connection is currently up.
- */
- for (pft=pktfilt_tab; pft->proto != -1; pft++) {
- if (ip->ip_p == pft->proto) {
- switch(pft->proto) {
- case IPPROTO_UDP:
- if (((struct udphdr *) &((int *)ip)[ip->ip_hl])->uh_dport
- == htons(pft->port)) goto endfor;
- break;
- case IPPROTO_TCP:
- if (((struct tcphdr *) &((int *)ip)[ip->ip_hl])->th_dport
- == htons(pft->port)) goto endfor;
- break;
- }
- }
- }
- endfor:
- if (pft->proto != -1) {
- if (us->flags & US_DBGLOG)
- DPRINT3("ppp/%d: found IP pkt, proto=0x%x (%d)\n",
- us->mn, pft->proto, pft->port);
- /* Discard if not connected, or if not pass_with_link_up */
- /* else, if link is up let go by, but don't update time */
- return pft->ok_if_link_up? -1: 0;
- }
- break;
- } /* end switch (proto) */
-
- return 1;
-}
-#endif /* FILTER_PACKETS */
-
diff --git a/mdk-stage1/ppp/solaris/ppp.conf b/mdk-stage1/ppp/solaris/ppp.conf
deleted file mode 100644
index e443a7aac..000000000
--- a/mdk-stage1/ppp/solaris/ppp.conf
+++ /dev/null
@@ -1 +0,0 @@
-name="ppp" parent="pseudo" instance=0;
diff --git a/mdk-stage1/ppp/solaris/ppp_ahdlc.c b/mdk-stage1/ppp/solaris/ppp_ahdlc.c
deleted file mode 100644
index d0b961258..000000000
--- a/mdk-stage1/ppp/solaris/ppp_ahdlc.c
+++ /dev/null
@@ -1,878 +0,0 @@
-/*
- * ppp_ahdlc.c - STREAMS module for doing PPP asynchronous HDLC.
- *
- * Re-written by Adi Masputra <adi.masputra@sun.com>, based on
- * the original ppp_ahdlc.c
- *
- * Copyright (c) 2000 by Sun Microsystems, Inc.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies.
- *
- * SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2, SVR4, SunOS 4, and Digital UNIX.
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stream.h>
-#include <sys/errno.h>
-
-#ifdef SVR4
-#include <sys/conf.h>
-#include <sys/kmem.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#else
-#include <sys/user.h>
-#ifdef __osf__
-#include <sys/cmn_err.h>
-#endif
-#endif /* SVR4 */
-
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-/*
- * Right now, mutex is only enabled for Solaris 2.x
- */
-#if defined(SOL2)
-#define USE_MUTEX
-#endif /* SOL2 */
-
-/*
- * intpointer_t and uintpointer_t are signed and unsigned integer types
- * large enough to hold any data pointer; that is, data pointers can be
- * assigned into or from these integer types without losing precision.
- * On recent Solaris releases, these types are defined in sys/int_types.h,
- * but not on SunOS 4.x or the earlier Solaris versions.
- */
-#if defined(_LP64) || defined(_I32LPx)
-typedef long intpointer_t;
-typedef unsigned long uintpointer_t;
-#else
-typedef int intpointer_t;
-typedef unsigned int uintpointer_t;
-#endif
-
-MOD_OPEN_DECL(ahdlc_open);
-MOD_CLOSE_DECL(ahdlc_close);
-static int ahdlc_wput __P((queue_t *, mblk_t *));
-static int ahdlc_rput __P((queue_t *, mblk_t *));
-static void ahdlc_encode __P((queue_t *, mblk_t *));
-static void ahdlc_decode __P((queue_t *, mblk_t *));
-static int msg_byte __P((mblk_t *, unsigned int));
-
-#if defined(SOL2)
-/*
- * Don't send HDLC start flag is last transmit is within 1.5 seconds -
- * FLAG_TIME is defined is microseconds
- */
-#define FLAG_TIME 1500
-#define ABS(x) (x >= 0 ? x : (-x))
-#endif /* SOL2 */
-
-/*
- * Extract byte i of message mp
- */
-#define MSG_BYTE(mp, i) ((i) < (mp)->b_wptr - (mp)->b_rptr? (mp)->b_rptr[i]: \
- msg_byte((mp), (i)))
-
-/*
- * Is this LCP packet one we have to transmit using LCP defaults?
- */
-#define LCP_USE_DFLT(mp) (1 <= (code = MSG_BYTE((mp), 4)) && code <= 7)
-
-/*
- * Standard STREAMS declarations
- */
-static struct module_info minfo = {
- 0x7d23, "ppp_ahdl", 0, INFPSZ, 32768, 512
-};
-
-static struct qinit rinit = {
- ahdlc_rput, NULL, ahdlc_open, ahdlc_close, NULL, &minfo, NULL
-};
-
-static struct qinit winit = {
- ahdlc_wput, NULL, NULL, NULL, NULL, &minfo, NULL
-};
-
-#if defined(SVR4) && !defined(SOL2)
-int phdldevflag = 0;
-#define ppp_ahdlcinfo phdlinfo
-#endif /* defined(SVR4) && !defined(SOL2) */
-
-struct streamtab ppp_ahdlcinfo = {
- &rinit, /* ptr to st_rdinit */
- &winit, /* ptr to st_wrinit */
- NULL, /* ptr to st_muxrinit */
- NULL, /* ptr to st_muxwinit */
-#if defined(SUNOS4)
- NULL /* ptr to ptr to st_modlist */
-#endif /* SUNOS4 */
-};
-
-#if defined(SUNOS4)
-int ppp_ahdlc_count = 0; /* open counter */
-#endif /* SUNOS4 */
-
-/*
- * Per-stream state structure
- */
-typedef struct ahdlc_state {
-#if defined(USE_MUTEX)
- kmutex_t lock; /* lock for this structure */
-#endif /* USE_MUTEX */
- int flags; /* link flags */
- mblk_t *rx_buf; /* ptr to receive buffer */
- int rx_buf_size; /* receive buffer size */
- ushort_t infcs; /* calculated rx HDLC FCS */
- u_int32_t xaccm[8]; /* 256-bit xmit ACCM */
- u_int32_t raccm; /* 32-bit rcv ACCM */
- int mtu; /* interface MTU */
- int mru; /* link MRU */
- int unit; /* current PPP unit number */
- struct pppstat stats; /* statistic structure */
-#if defined(SOL2)
- clock_t flag_time; /* time in usec between flags */
- clock_t lbolt; /* last updated lbolt */
-#endif /* SOL2 */
-} ahdlc_state_t;
-
-/*
- * Values for flags
- */
-#define ESCAPED 0x100 /* last saw escape char on input */
-#define IFLUSH 0x200 /* flushing input due to error */
-
-/*
- * RCV_B7_1, etc., defined in net/pppio.h, are stored in flags also.
- */
-#define RCV_FLAGS (RCV_B7_1|RCV_B7_0|RCV_ODDP|RCV_EVNP)
-
-/*
- * FCS lookup table as calculated by genfcstab.
- */
-static u_short fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-static u_int32_t paritytab[8] =
-{
- 0x96696996, 0x69969669, 0x69969669, 0x96696996,
- 0x69969669, 0x96696996, 0x96696996, 0x69969669
-};
-
-/*
- * STREAMS module open (entry) point
- */
-MOD_OPEN(ahdlc_open)
-{
- ahdlc_state_t *state;
-
- /*
- * Return if it's already opened
- */
- if (q->q_ptr) {
- return 0;
- }
-
- /*
- * This can only be opened as a module
- */
- if (sflag != MODOPEN) {
- return 0;
- }
-
- state = (ahdlc_state_t *) ALLOC_NOSLEEP(sizeof(ahdlc_state_t));
- if (state == 0)
- OPEN_ERROR(ENOSR);
- bzero((caddr_t) state, sizeof(ahdlc_state_t));
-
- q->q_ptr = (caddr_t) state;
- WR(q)->q_ptr = (caddr_t) state;
-
-#if defined(USE_MUTEX)
- mutex_init(&state->lock, NULL, MUTEX_DEFAULT, NULL);
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- state->xaccm[0] = ~0; /* escape 0x00 through 0x1f */
- state->xaccm[3] = 0x60000000; /* escape 0x7d and 0x7e */
- state->mru = PPP_MRU; /* default of 1500 bytes */
-#if defined(SOL2)
- state->flag_time = drv_usectohz(FLAG_TIME);
-#endif /* SOL2 */
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-
-#if defined(SUNOS4)
- ppp_ahdlc_count++;
-#endif /* SUNOS4 */
-
- qprocson(q);
-
- return 0;
-}
-
-/*
- * STREAMS module close (exit) point
- */
-MOD_CLOSE(ahdlc_close)
-{
- ahdlc_state_t *state;
-
- qprocsoff(q);
-
- state = (ahdlc_state_t *) q->q_ptr;
-
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_close\n");
- return 0;
- }
-
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- if (state->rx_buf != 0) {
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- }
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
- mutex_destroy(&state->lock);
-#endif /* USE_MUTEX */
-
- FREE(q->q_ptr, sizeof(ahdlc_state_t));
- q->q_ptr = NULL;
- OTHERQ(q)->q_ptr = NULL;
-
-#if defined(SUNOS4)
- if (ppp_ahdlc_count)
- ppp_ahdlc_count--;
-#endif /* SUNOS4 */
-
- return 0;
-}
-
-/*
- * Write side put routine
- */
-static int
-ahdlc_wput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- struct iocblk *iop;
- int error;
- mblk_t *np;
- struct ppp_stats *psp;
-
- state = (ahdlc_state_t *) q->q_ptr;
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_wput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_DATA:
- /*
- * A data packet - do character-stuffing and FCS, and
- * send it onwards.
- */
- ahdlc_encode(q, mp);
- freemsg(mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- switch (iop->ioc_cmd) {
- case PPPIO_XACCM:
- if ((iop->ioc_count < sizeof(u_int32_t)) ||
- (iop->ioc_count > sizeof(ext_accm))) {
- break;
- }
- if (mp->b_cont == 0) {
- DPRINT1("ahdlc_wput/%d: PPPIO_XACCM b_cont = 0!\n", state->unit);
- break;
- }
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)state->xaccm,
- iop->ioc_count);
- state->xaccm[2] &= ~0x40000000; /* don't escape 0x5e */
- state->xaccm[3] |= 0x60000000; /* do escape 0x7d, 0x7e */
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_RACCM:
- if (iop->ioc_count != sizeof(u_int32_t))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ahdlc_wput/%d: PPPIO_RACCM b_cont = 0!\n", state->unit);
- break;
- }
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)&state->raccm,
- sizeof(u_int32_t));
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- iop->ioc_count = 0;
- error = 0;
- break;
-
- case PPPIO_GCLEAN:
- np = allocb(sizeof(int), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- *(int *)np->b_wptr = state->flags & RCV_FLAGS;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- np->b_wptr += sizeof(int);
- iop->ioc_count = sizeof(int);
- error = 0;
- break;
-
- case PPPIO_GETSTAT:
- np = allocb(sizeof(struct ppp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- psp = (struct ppp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_stats);
- bzero((caddr_t)psp, sizeof(struct ppp_stats));
- psp->p = state->stats;
- iop->ioc_count = sizeof(struct ppp_stats);
- error = 0;
- break;
-
- case PPPIO_LASTMOD:
- /* we knew this anyway */
- error = 0;
- break;
-
- default:
- error = -1;
- break;
- }
-
- if (error < 0)
- putnext(q, mp);
- else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
- mp->b_datap->db_type = M_IOCNAK;
- iop->ioc_count = 0;
- iop->ioc_error = error;
- qreply(q, mp);
- }
- break;
-
- case M_CTL:
- switch (*mp->b_rptr) {
- case PPPCTL_MTU:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->mtu = ((unsigned short *)mp->b_rptr)[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- freemsg(mp);
- break;
- case PPPCTL_MRU:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->mru = ((unsigned short *)mp->b_rptr)[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- freemsg(mp);
- break;
- case PPPCTL_UNIT:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- state->unit = mp->b_rptr[1];
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- break;
- default:
- putnext(q, mp);
- }
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-/*
- * Read side put routine
- */
-static int
-ahdlc_rput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
-
- state = (ahdlc_state_t *) q->q_ptr;
- if (state == 0) {
- DPRINT("state == 0 in ahdlc_rput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
- case M_DATA:
- ahdlc_decode(q, mp);
- freemsg(mp);
- break;
-
- case M_HANGUP:
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
- if (state->rx_buf != 0) {
- /* XXX would like to send this up for debugging */
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- }
- state->flags = IFLUSH;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
- return 0;
-}
-
-/*
- * Extract bit c from map m, to determine if c needs to be escaped
- */
-#define IN_TX_MAP(c, m) ((m)[(c) >> 5] & (1 << ((c) & 0x1f)))
-
-static void
-ahdlc_encode(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- u_int32_t *xaccm, loc_xaccm[8];
- ushort_t fcs;
- size_t outmp_len;
- mblk_t *outmp, *tmp;
- uchar_t *dp, fcs_val;
- int is_lcp, code;
-#if defined(SOL2)
- clock_t lbolt;
-#endif /* SOL2 */
-
- if (msgdsize(mp) < 4) {
- return;
- }
-
- state = (ahdlc_state_t *)q->q_ptr;
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- /*
- * Allocate an output buffer large enough to handle a case where all
- * characters need to be escaped
- */
- outmp_len = (msgdsize(mp) << 1) + /* input block x 2 */
- (sizeof(fcs) << 2) + /* HDLC FCS x 4 */
- (sizeof(uchar_t) << 1); /* HDLC flags x 2 */
-
- outmp = allocb(outmp_len, BPRI_MED);
- if (outmp == NULL) {
- state->stats.ppp_oerrors++;
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- return;
- }
-
-#if defined(SOL2)
- /*
- * Check if our last transmit happenned within flag_time, using
- * the system's LBOLT value in clock ticks
- */
- if (drv_getparm(LBOLT, &lbolt) != -1) {
- if (ABS((clock_t)lbolt - state->lbolt) > state->flag_time) {
- *outmp->b_wptr++ = PPP_FLAG;
- }
- state->lbolt = lbolt;
- } else {
- *outmp->b_wptr++ = PPP_FLAG;
- }
-#else
- /*
- * If the driver below still has a message to process, skip the
- * HDLC flag, otherwise, put one in the beginning
- */
- if (qsize(q->q_next) == 0) {
- *outmp->b_wptr++ = PPP_FLAG;
- }
-#endif
-
- /*
- * All control characters must be escaped for LCP packets with code
- * values between 1 (Conf-Req) and 7 (Code-Rej).
- */
- is_lcp = ((MSG_BYTE(mp, 0) == PPP_ALLSTATIONS) &&
- (MSG_BYTE(mp, 1) == PPP_UI) &&
- (MSG_BYTE(mp, 2) == (PPP_LCP >> 8)) &&
- (MSG_BYTE(mp, 3) == (PPP_LCP & 0xff)) &&
- LCP_USE_DFLT(mp));
-
- xaccm = state->xaccm;
- if (is_lcp) {
- bcopy((caddr_t)state->xaccm, (caddr_t)loc_xaccm, sizeof(loc_xaccm));
- loc_xaccm[0] = ~0; /* force escape on 0x00 through 0x1f */
- xaccm = loc_xaccm;
- }
-
- fcs = PPP_INITFCS; /* Initial FCS is 0xffff */
-
- /*
- * Process this block and the rest (if any) attached to the this one
- */
- for (tmp = mp; tmp; tmp = tmp->b_cont) {
- if (tmp->b_datap->db_type == M_DATA) {
- for (dp = tmp->b_rptr; dp < tmp->b_wptr; dp++) {
- fcs = PPP_FCS(fcs, *dp);
- if (IN_TX_MAP(*dp, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = *dp ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = *dp;
- }
- }
- } else {
- continue; /* skip if db_type is something other than M_DATA */
- }
- }
-
- /*
- * Append the HDLC FCS, making sure that escaping is done on any
- * necessary bytes
- */
- fcs_val = (fcs ^ 0xffff) & 0xff;
- if (IN_TX_MAP(fcs_val, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = fcs_val ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = fcs_val;
- }
-
- fcs_val = ((fcs ^ 0xffff) >> 8) & 0xff;
- if (IN_TX_MAP(fcs_val, xaccm)) {
- *outmp->b_wptr++ = PPP_ESCAPE;
- *outmp->b_wptr++ = fcs_val ^ PPP_TRANS;
- } else {
- *outmp->b_wptr++ = fcs_val;
- }
-
- /*
- * And finally, append the HDLC flag, and send it away
- */
- *outmp->b_wptr++ = PPP_FLAG;
-
- state->stats.ppp_obytes += msgdsize(outmp);
- state->stats.ppp_opackets++;
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-
- putnext(q, outmp);
- return;
-}
-
-/*
- * Checks the 32-bit receive ACCM to see if the byte needs un-escaping
- */
-#define IN_RX_MAP(c, m) ((((unsigned int) (uchar_t) (c)) < 0x20) && \
- (m) & (1 << (c)))
-
-
-/*
- * Process received characters.
- */
-static void
-ahdlc_decode(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- ahdlc_state_t *state;
- mblk_t *om;
- uchar_t *dp;
- ushort_t fcs;
-#if defined(SOL2)
- mblk_t *zmp;
-#endif /* SOL2 */
-
-#if defined(SOL2)
- /*
- * In case the driver (or something below) doesn't send
- * data upstream in one message block, concatenate everything
- */
- if (!((mp->b_wptr - mp->b_rptr == msgdsize(mp)) &&
- ((intpointer_t)mp->b_rptr % sizeof(intpointer_t) == 0))) {
-
- zmp = msgpullup(mp, -1);
- freemsg(mp);
- mp = zmp;
- if (mp == 0)
- return;
- }
-#endif /* SOL2 */
-
- state = (ahdlc_state_t *) q->q_ptr;
-
-#if defined(USE_MUTEX)
- mutex_enter(&state->lock);
-#endif /* USE_MUTEX */
-
- state->stats.ppp_ibytes += msgdsize(mp);
-
- for (dp = mp->b_rptr; dp < mp->b_wptr; dp++) {
-
- /*
- * This should detect the lack of 8-bit communication channel
- * which is necessary for PPP to work. In addition, it also
- * checks on the parity.
- */
- if (*dp & 0x80)
- state->flags |= RCV_B7_1;
- else
- state->flags |= RCV_B7_0;
-
- if (paritytab[*dp >> 5] & (1 << (*dp & 0x1f)))
- state->flags |= RCV_ODDP;
- else
- state->flags |= RCV_EVNP;
-
- /*
- * So we have a HDLC flag ...
- */
- if (*dp == PPP_FLAG) {
-
- /*
- * If we think that it marks the beginning of the frame,
- * then continue to process the next octects
- */
- if ((state->flags & IFLUSH) ||
- (state->rx_buf == 0) ||
- (msgdsize(state->rx_buf) == 0)) {
-
- state->flags &= ~IFLUSH;
- continue;
- }
-
- /*
- * We get here because the above condition isn't true,
- * in which case the HDLC flag was there to mark the end
- * of the frame (or so we think)
- */
- om = state->rx_buf;
-
- if (state->infcs == PPP_GOODFCS) {
- state->stats.ppp_ipackets++;
- adjmsg(om, -PPP_FCSLEN);
- putnext(q, om);
- } else {
- DPRINT2("ppp%d: bad fcs (len=%d)\n",
- state->unit, msgdsize(state->rx_buf));
- freemsg(state->rx_buf);
- state->flags &= ~(IFLUSH | ESCAPED);
- state->stats.ppp_ierrors++;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- }
-
- state->rx_buf = 0;
- continue;
- }
-
- if (state->flags & IFLUSH) {
- continue;
- }
-
- /*
- * Allocate a receive buffer, large enough to store a frame (after
- * un-escaping) of at least 1500 octets. If MRU is negotiated to
- * be more than the default, then allocate that much. In addition,
- * we add an extra 32-bytes for a fudge factor
- */
- if (state->rx_buf == 0) {
- state->rx_buf_size = (state->mru < PPP_MRU ? PPP_MRU : state->mru);
- state->rx_buf_size += (sizeof(u_int32_t) << 3);
- state->rx_buf = allocb(state->rx_buf_size, BPRI_MED);
-
- /*
- * If allocation fails, try again on the next frame
- */
- if (state->rx_buf == 0) {
- state->flags |= IFLUSH;
- continue;
- }
- state->flags &= ~(IFLUSH | ESCAPED);
- state->infcs = PPP_INITFCS;
- }
-
- if (*dp == PPP_ESCAPE) {
- state->flags |= ESCAPED;
- continue;
- }
-
- /*
- * Make sure we un-escape the necessary characters, as well as the
- * ones in our receive async control character map
- */
- if (state->flags & ESCAPED) {
- *dp ^= PPP_TRANS;
- state->flags &= ~ESCAPED;
- } else if (IN_RX_MAP(*dp, state->raccm))
- continue;
-
- /*
- * Unless the peer lied to us about the negotiated MRU, we should
- * never get a frame which is too long. If it happens, toss it away
- * and grab the next incoming one
- */
- if (msgdsize(state->rx_buf) < state->rx_buf_size) {
- state->infcs = PPP_FCS(state->infcs, *dp);
- *state->rx_buf->b_wptr++ = *dp;
- } else {
- DPRINT2("ppp%d: frame too long (%d)\n",
- state->unit, msgdsize(state->rx_buf));
- freemsg(state->rx_buf);
- state->rx_buf = 0;
- state->flags |= IFLUSH;
- }
- }
-
-#if defined(USE_MUTEX)
- mutex_exit(&state->lock);
-#endif /* USE_MUTEX */
-}
-
-static int
-msg_byte(mp, i)
- mblk_t *mp;
- unsigned int i;
-{
- while (mp != 0 && i >= mp->b_wptr - mp->b_rptr)
- mp = mp->b_cont;
- if (mp == 0)
- return -1;
- return mp->b_rptr[i];
-}
diff --git a/mdk-stage1/ppp/solaris/ppp_ahdlc_mod.c b/mdk-stage1/ppp/solaris/ppp_ahdlc_mod.c
deleted file mode 100644
index f81be8abb..000000000
--- a/mdk-stage1/ppp/solaris/ppp_ahdlc_mod.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-
-extern struct streamtab ppp_ahdlcinfo;
-
-static struct fmodsw fsw = {
- "ppp_ahdl",
- &ppp_ahdlcinfo,
- D_NEW | D_MP | D_MTQPAIR
-};
-
-extern struct mod_ops mod_strmodops;
-
-static struct modlstrmod modlstrmod = {
- &mod_strmodops,
- "PPP async HDLC module",
- &fsw
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modlstrmod,
- NULL
-};
-
-/*
- * Entry points for modloading.
- */
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
diff --git a/mdk-stage1/ppp/solaris/ppp_comp.c b/mdk-stage1/ppp/solaris/ppp_comp.c
deleted file mode 100644
index f6eef5ab1..000000000
--- a/mdk-stage1/ppp/solaris/ppp_comp.c
+++ /dev/null
@@ -1,1126 +0,0 @@
-/*
- * ppp_comp.c - STREAMS module for kernel-level compression and CCP support.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under SVR4, Solaris 2, SunOS 4, and Digital UNIX.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/stream.h>
-
-#ifdef SVR4
-#include <sys/conf.h>
-#include <sys/cmn_err.h>
-#include <sys/ddi.h>
-#else
-#include <sys/user.h>
-#ifdef __osf__
-#include <sys/cmn_err.h>
-#endif
-#endif /* SVR4 */
-
-#include <net/ppp_defs.h>
-#include <net/pppio.h>
-#include "ppp_mod.h"
-
-#ifdef __osf__
-#include <sys/mbuf.h>
-#include <sys/protosw.h>
-#endif
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <net/vjcompress.h>
-
-#define PACKETPTR mblk_t *
-#include <net/ppp-comp.h>
-
-MOD_OPEN_DECL(ppp_comp_open);
-MOD_CLOSE_DECL(ppp_comp_close);
-static int ppp_comp_rput __P((queue_t *, mblk_t *));
-static int ppp_comp_rsrv __P((queue_t *));
-static int ppp_comp_wput __P((queue_t *, mblk_t *));
-static int ppp_comp_wsrv __P((queue_t *));
-static void ppp_comp_ccp __P((queue_t *, mblk_t *, int));
-static int msg_byte __P((mblk_t *, unsigned int));
-
-/* Extract byte i of message mp. */
-#define MSG_BYTE(mp, i) ((i) < (mp)->b_wptr - (mp)->b_rptr? (mp)->b_rptr[i]: \
- msg_byte((mp), (i)))
-
-/* Is this LCP packet one we have to transmit using LCP defaults? */
-#define LCP_USE_DFLT(mp) (1 <= (code = MSG_BYTE((mp), 4)) && code <= 7)
-
-#define PPP_COMP_ID 0xbadf
-static struct module_info minfo = {
-#ifdef PRIOQ
- PPP_COMP_ID, "ppp_comp", 0, INFPSZ, 16512, 16384,
-#else
- PPP_COMP_ID, "ppp_comp", 0, INFPSZ, 16384, 4096,
-#endif
-};
-
-static struct qinit r_init = {
- ppp_comp_rput, ppp_comp_rsrv, ppp_comp_open, ppp_comp_close,
- NULL, &minfo, NULL
-};
-
-static struct qinit w_init = {
- ppp_comp_wput, ppp_comp_wsrv, NULL, NULL, NULL, &minfo, NULL
-};
-
-#if defined(SVR4) && !defined(SOL2)
-int pcmpdevflag = 0;
-#define ppp_compinfo pcmpinfo
-#endif
-struct streamtab ppp_compinfo = {
- &r_init, &w_init, NULL, NULL
-};
-
-int ppp_comp_count; /* number of module instances in use */
-
-#ifdef __osf__
-
-static void ppp_comp_alloc __P((comp_state_t *));
-typedef struct memreq {
- unsigned char comp_opts[20];
- int cmd;
- int thread_status;
- char *returned_mem;
-} memreq_t;
-
-#endif
-
-typedef struct comp_state {
- int flags;
- int mru;
- int mtu;
- int unit;
- struct compressor *xcomp;
- void *xstate;
- struct compressor *rcomp;
- void *rstate;
- struct vjcompress vj_comp;
- int vj_last_ierrors;
- struct pppstat stats;
-#ifdef __osf__
- memreq_t memreq;
- thread_t thread;
-#endif
-} comp_state_t;
-
-
-#ifdef __osf__
-extern task_t first_task;
-#endif
-
-/* Bits in flags are as defined in pppio.h. */
-#define CCP_ERR (CCP_ERROR | CCP_FATALERROR)
-#define LAST_MOD 0x1000000 /* no ppp modules below us */
-#define DBGLOG 0x2000000 /* log debugging stuff */
-
-#define MAX_IPHDR 128 /* max TCP/IP header size */
-#define MAX_VJHDR 20 /* max VJ compressed header size (?) */
-
-#undef MIN /* just in case */
-#define MIN(a, b) ((a) < (b)? (a): (b))
-
-/*
- * List of compressors we know about.
- */
-
-#if DO_BSD_COMPRESS
-extern struct compressor ppp_bsd_compress;
-#endif
-#if DO_DEFLATE
-extern struct compressor ppp_deflate, ppp_deflate_draft;
-#endif
-
-struct compressor *ppp_compressors[] = {
-#if DO_BSD_COMPRESS
- &ppp_bsd_compress,
-#endif
-#if DO_DEFLATE
- &ppp_deflate,
- &ppp_deflate_draft,
-#endif
- NULL
-};
-
-/*
- * STREAMS module entry points.
- */
-MOD_OPEN(ppp_comp_open)
-{
- comp_state_t *cp;
-#ifdef __osf__
- thread_t thread;
-#endif
-
- if (q->q_ptr == NULL) {
- cp = (comp_state_t *) ALLOC_SLEEP(sizeof(comp_state_t));
- if (cp == NULL)
- OPEN_ERROR(ENOSR);
- bzero((caddr_t)cp, sizeof(comp_state_t));
- WR(q)->q_ptr = q->q_ptr = (caddr_t) cp;
- cp->mru = PPP_MRU;
- cp->mtu = PPP_MTU;
- cp->xstate = NULL;
- cp->rstate = NULL;
- vj_compress_init(&cp->vj_comp, -1);
-#ifdef __osf__
- if (!(thread = kernel_thread_w_arg(first_task, ppp_comp_alloc, (void *)cp)))
- OPEN_ERROR(ENOSR);
- cp->thread = thread;
-#endif
- ++ppp_comp_count;
- qprocson(q);
- }
- return 0;
-}
-
-MOD_CLOSE(ppp_comp_close)
-{
- comp_state_t *cp;
-
- qprocsoff(q);
- cp = (comp_state_t *) q->q_ptr;
- if (cp != NULL) {
- if (cp->xstate != NULL)
- (*cp->xcomp->comp_free)(cp->xstate);
- if (cp->rstate != NULL)
- (*cp->rcomp->decomp_free)(cp->rstate);
-#ifdef __osf__
- if (!cp->thread)
- printf("ppp_comp_close: NULL thread!\n");
- else
- thread_terminate(cp->thread);
-#endif
- FREE(cp, sizeof(comp_state_t));
- q->q_ptr = NULL;
- OTHERQ(q)->q_ptr = NULL;
- --ppp_comp_count;
- }
- return 0;
-}
-
-#ifdef __osf__
-
-/* thread for calling back to a compressor's memory allocator
- * Needed for Digital UNIX since it's VM can't handle requests
- * for large amounts of memory without blocking. The thread
- * provides a context in which we can call a memory allocator
- * that may block.
- */
-static void
-ppp_comp_alloc(comp_state_t *cp)
-{
- int len, cmd;
- unsigned char *compressor_options;
- thread_t thread;
- void *(*comp_allocator)();
-
-
-#if defined(MAJOR_VERSION) && (MAJOR_VERSION <= 2)
-
- /* In 2.x and earlier the argument gets passed
- * in the thread structure itself. Yuck.
- */
- thread = current_thread();
- cp = thread->reply_port;
- thread->reply_port = PORT_NULL;
-
-#endif
-
- for (;;) {
- assert_wait((vm_offset_t)&cp->memreq.thread_status, TRUE);
- thread_block();
-
- if (thread_should_halt(current_thread()))
- thread_halt_self();
- cmd = cp->memreq.cmd;
- compressor_options = &cp->memreq.comp_opts[0];
- len = compressor_options[1];
- if (cmd == PPPIO_XCOMP) {
- cp->memreq.returned_mem = cp->xcomp->comp_alloc(compressor_options, len);
- if (!cp->memreq.returned_mem) {
- cp->memreq.thread_status = ENOSR;
- } else {
- cp->memreq.thread_status = 0;
- }
- } else {
- cp->memreq.returned_mem = cp->rcomp->decomp_alloc(compressor_options, len);
- if (!cp->memreq.returned_mem) {
- cp->memreq.thread_status = ENOSR;
- } else {
- cp->memreq.thread_status = 0;
- }
- }
- }
-}
-
-#endif /* __osf__ */
-
-/* here's the deal with memory allocation under Digital UNIX.
- * Some other may also benefit from this...
- * We can't ask for huge chunks of memory in a context where
- * the caller can't be put to sleep (like, here.) The alloc
- * is likely to fail. Instead we do this: the first time we
- * get called, kick off a thread to do the allocation. Return
- * immediately to the caller with EAGAIN, as an indication that
- * they should send down the ioctl again. By the time the
- * second call comes in it's likely that the memory allocation
- * thread will have returned with the requested memory. We will
- * continue to return EAGAIN however until the thread has completed.
- * When it has, we return zero (and the memory) if the allocator
- * was successful and ENOSR otherwise.
- *
- * Callers of the RCOMP and XCOMP ioctls are encouraged (but not
- * required) to loop for some number of iterations with a small
- * delay in the loop body (for instance a 1/10-th second "sleep"
- * via select.)
- */
-static int
-ppp_comp_wput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- struct iocblk *iop;
- comp_state_t *cp;
- int error, len, n;
- int flags, mask;
- mblk_t *np;
- struct compressor **comp;
- struct ppp_stats *psp;
- struct ppp_comp_stats *csp;
- unsigned char *opt_data;
- int nxslots, nrslots;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_wput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
-
- case M_DATA:
- putq(q, mp);
- break;
-
- case M_IOCTL:
- iop = (struct iocblk *) mp->b_rptr;
- error = EINVAL;
- switch (iop->ioc_cmd) {
-
- case PPPIO_CFLAGS:
- /* set/get CCP state */
- if (iop->ioc_count != 2 * sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_CFLAGS b_cont = 0!\n", cp->unit);
- break;
- }
- flags = ((int *) mp->b_cont->b_rptr)[0];
- mask = ((int *) mp->b_cont->b_rptr)[1];
- cp->flags = (cp->flags & ~mask) | (flags & mask);
- if ((mask & CCP_ISOPEN) && (flags & CCP_ISOPEN) == 0) {
- if (cp->xstate != NULL) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = NULL;
- }
- if (cp->rstate != NULL) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- cp->flags &= ~CCP_ISUP;
- }
- error = 0;
- iop->ioc_count = sizeof(int);
- ((int *) mp->b_cont->b_rptr)[0] = cp->flags;
- mp->b_cont->b_wptr = mp->b_cont->b_rptr + sizeof(int);
- break;
-
- case PPPIO_VJINIT:
- /*
- * Initialize VJ compressor/decompressor
- */
- if (iop->ioc_count != 2)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_VJINIT b_cont = 0!\n", cp->unit);
- break;
- }
- nxslots = mp->b_cont->b_rptr[0] + 1;
- nrslots = mp->b_cont->b_rptr[1] + 1;
- if (nxslots > MAX_STATES || nrslots > MAX_STATES)
- break;
- vj_compress_init(&cp->vj_comp, nxslots);
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- error = 0;
- iop->ioc_count = 0;
- break;
-
- case PPPIO_XCOMP:
- case PPPIO_RCOMP:
- if (iop->ioc_count <= 0)
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_[XR]COMP b_cont = 0!\n", cp->unit);
- break;
- }
- opt_data = mp->b_cont->b_rptr;
- len = mp->b_cont->b_wptr - opt_data;
- if (len > iop->ioc_count)
- len = iop->ioc_count;
- if (opt_data[1] < 2 || opt_data[1] > len)
- break;
- for (comp = ppp_compressors; *comp != NULL; ++comp)
- if ((*comp)->compress_proto == opt_data[0]) {
- /* here's the handler! */
- error = 0;
-#ifndef __osf__
- if (iop->ioc_cmd == PPPIO_XCOMP) {
- /* A previous call may have fetched memory for a compressor
- * that's now being retired or reset. Free it using it's
- * mechanism for freeing stuff.
- */
- if (cp->xstate != NULL) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = NULL;
- }
- cp->xcomp = *comp;
- cp->xstate = (*comp)->comp_alloc(opt_data, len);
- if (cp->xstate == NULL)
- error = ENOSR;
- } else {
- if (cp->rstate != NULL) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- cp->rcomp = *comp;
- cp->rstate = (*comp)->decomp_alloc(opt_data, len);
- if (cp->rstate == NULL)
- error = ENOSR;
- }
-#else
- if ((error = cp->memreq.thread_status) != EAGAIN)
- if (iop->ioc_cmd == PPPIO_XCOMP) {
- if (cp->xstate) {
- (*cp->xcomp->comp_free)(cp->xstate);
- cp->xstate = 0;
- }
- /* sanity check for compressor options
- */
- if (sizeof (cp->memreq.comp_opts) < len) {
- printf("can't handle options for compressor %d (%d)\n", opt_data[0],
- opt_data[1]);
- cp->memreq.thread_status = ENOSR;
- cp->memreq.returned_mem = 0;
- }
- /* fill in request for the thread and kick it off
- */
- if (cp->memreq.thread_status == 0 && !cp->memreq.returned_mem) {
- bcopy(opt_data, cp->memreq.comp_opts, len);
- cp->memreq.cmd = PPPIO_XCOMP;
- cp->xcomp = *comp;
- error = cp->memreq.thread_status = EAGAIN;
- thread_wakeup((vm_offset_t)&cp->memreq.thread_status);
- } else {
- cp->xstate = cp->memreq.returned_mem;
- cp->memreq.returned_mem = 0;
- cp->memreq.thread_status = 0;
- }
- } else {
- if (cp->rstate) {
- (*cp->rcomp->decomp_free)(cp->rstate);
- cp->rstate = NULL;
- }
- if (sizeof (cp->memreq.comp_opts) < len) {
- printf("can't handle options for compressor %d (%d)\n", opt_data[0],
- opt_data[1]);
- cp->memreq.thread_status = ENOSR;
- cp->memreq.returned_mem = 0;
- }
- if (cp->memreq.thread_status == 0 && !cp->memreq.returned_mem) {
- bcopy(opt_data, cp->memreq.comp_opts, len);
- cp->memreq.cmd = PPPIO_RCOMP;
- cp->rcomp = *comp;
- error = cp->memreq.thread_status = EAGAIN;
- thread_wakeup((vm_offset_t)&cp->memreq.thread_status);
- } else {
- cp->rstate = cp->memreq.returned_mem;
- cp->memreq.returned_mem = 0;
- cp->memreq.thread_status = 0;
- }
- }
-#endif
- break;
- }
- iop->ioc_count = 0;
- break;
-
- case PPPIO_GETSTAT:
- if ((cp->flags & LAST_MOD) == 0) {
- error = -1; /* let the ppp_ahdl module handle it */
- break;
- }
- np = allocb(sizeof(struct ppp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- psp = (struct ppp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_stats);
- iop->ioc_count = sizeof(struct ppp_stats);
- psp->p = cp->stats;
- psp->vj = cp->vj_comp.stats;
- error = 0;
- break;
-
- case PPPIO_GETCSTAT:
- np = allocb(sizeof(struct ppp_comp_stats), BPRI_HI);
- if (np == 0) {
- error = ENOSR;
- break;
- }
- if (mp->b_cont != 0)
- freemsg(mp->b_cont);
- mp->b_cont = np;
- csp = (struct ppp_comp_stats *) np->b_wptr;
- np->b_wptr += sizeof(struct ppp_comp_stats);
- iop->ioc_count = sizeof(struct ppp_comp_stats);
- bzero((caddr_t)csp, sizeof(struct ppp_comp_stats));
- if (cp->xstate != 0)
- (*cp->xcomp->comp_stat)(cp->xstate, &csp->c);
- if (cp->rstate != 0)
- (*cp->rcomp->decomp_stat)(cp->rstate, &csp->d);
- error = 0;
- break;
-
- case PPPIO_DEBUG:
- if (iop->ioc_count != sizeof(int))
- break;
- if (mp->b_cont == 0) {
- DPRINT1("ppp_comp_wput/%d: PPPIO_DEBUG b_cont = 0!\n", cp->unit);
- break;
- }
- n = *(int *)mp->b_cont->b_rptr;
- if (n == PPPDBG_LOG + PPPDBG_COMP) {
- DPRINT1("ppp_comp%d: debug log enabled\n", cp->unit);
- cp->flags |= DBGLOG;
- error = 0;
- iop->ioc_count = 0;
- } else {
- error = -1;
- }
- break;
-
- case PPPIO_LASTMOD:
- cp->flags |= LAST_MOD;
- error = 0;
- break;
-
- default:
- error = -1;
- break;
- }
-
- if (error < 0)
- putnext(q, mp);
- else if (error == 0) {
- mp->b_datap->db_type = M_IOCACK;
- qreply(q, mp);
- } else {
- mp->b_datap->db_type = M_IOCNAK;
- iop->ioc_error = error;
- iop->ioc_count = 0;
- qreply(q, mp);
- }
- break;
-
- case M_CTL:
- switch (*mp->b_rptr) {
- case PPPCTL_MTU:
- cp->mtu = ((unsigned short *)mp->b_rptr)[1];
- break;
- case PPPCTL_MRU:
- cp->mru = ((unsigned short *)mp->b_rptr)[1];
- break;
- case PPPCTL_UNIT:
- cp->unit = mp->b_rptr[1];
- break;
- }
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_wsrv(q)
- queue_t *q;
-{
- mblk_t *mp, *cmp = NULL;
- comp_state_t *cp;
- int len, proto, type, hlen, code;
- struct ip *ip;
- unsigned char *vjhdr, *dp;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_wsrv\n");
- return 0;
- }
-
- while ((mp = getq(q)) != 0) {
- /* assert(mp->b_datap->db_type == M_DATA) */
-#ifdef PRIOQ
- if (!bcanputnext(q,mp->b_band))
-#else
- if (!canputnext(q))
-#endif PRIOQ
- {
- putbq(q, mp);
- break;
- }
-
- /*
- * First check the packet length and work out what the protocol is.
- */
- len = msgdsize(mp);
- if (len < PPP_HDRLEN) {
- DPRINT1("ppp_comp_wsrv: bogus short packet (%d)\n", len);
- freemsg(mp);
- cp->stats.ppp_oerrors++;
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- continue;
- }
- proto = (MSG_BYTE(mp, 2) << 8) + MSG_BYTE(mp, 3);
-
- /*
- * Make sure we've got enough data in the first mblk
- * and that we are its only user.
- */
- if (proto == PPP_CCP)
- hlen = len;
- else if (proto == PPP_IP)
- hlen = PPP_HDRLEN + MAX_IPHDR;
- else
- hlen = PPP_HDRLEN;
- if (hlen > len)
- hlen = len;
- if (mp->b_wptr < mp->b_rptr + hlen || mp->b_datap->db_ref > 1) {
- PULLUP(mp, hlen);
- if (mp == 0) {
- DPRINT1("ppp_comp_wsrv: pullup failed (%d)\n", hlen);
- cp->stats.ppp_oerrors++;
- putctl1(RD(q)->q_next, M_CTL, PPPCTL_OERROR);
- continue;
- }
- }
-
- /*
- * Do VJ compression if requested.
- */
- if (proto == PPP_IP && (cp->flags & COMP_VJC)) {
- ip = (struct ip *) (mp->b_rptr + PPP_HDRLEN);
- if (ip->ip_p == IPPROTO_TCP) {
- type = vj_compress_tcp(ip, len - PPP_HDRLEN, &cp->vj_comp,
- (cp->flags & COMP_VJCCID), &vjhdr);
- switch (type) {
- case TYPE_UNCOMPRESSED_TCP:
- mp->b_rptr[3] = proto = PPP_VJC_UNCOMP;
- break;
- case TYPE_COMPRESSED_TCP:
- dp = vjhdr - PPP_HDRLEN;
- dp[1] = mp->b_rptr[1]; /* copy control field */
- dp[0] = mp->b_rptr[0]; /* copy address field */
- dp[2] = 0; /* set protocol field */
- dp[3] = proto = PPP_VJC_COMP;
- mp->b_rptr = dp;
- break;
- }
- }
- }
-
- /*
- * Do packet compression if enabled.
- */
- if (proto == PPP_CCP)
- ppp_comp_ccp(q, mp, 0);
- else if (proto != PPP_LCP && (cp->flags & CCP_COMP_RUN)
- && cp->xstate != NULL) {
- len = msgdsize(mp);
- (*cp->xcomp->compress)(cp->xstate, &cmp, mp, len,
- (cp->flags & CCP_ISUP? cp->mtu + PPP_HDRLEN: 0));
- if (cmp != NULL) {
-#ifdef PRIOQ
- cmp->b_band=mp->b_band;
-#endif PRIOQ
- freemsg(mp);
- mp = cmp;
- }
- }
-
- /*
- * Do address/control and protocol compression if enabled.
- */
- if ((cp->flags & COMP_AC)
- && !(proto == PPP_LCP && LCP_USE_DFLT(mp))) {
- mp->b_rptr += 2; /* drop the address & ctrl fields */
- if (proto < 0x100 && (cp->flags & COMP_PROT))
- ++mp->b_rptr; /* drop the high protocol byte */
- } else if (proto < 0x100 && (cp->flags & COMP_PROT)) {
- /* shuffle up the address & ctrl fields */
- mp->b_rptr[2] = mp->b_rptr[1];
- mp->b_rptr[1] = mp->b_rptr[0];
- ++mp->b_rptr;
- }
-
- cp->stats.ppp_opackets++;
- cp->stats.ppp_obytes += msgdsize(mp);
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_rput(q, mp)
- queue_t *q;
- mblk_t *mp;
-{
- comp_state_t *cp;
- struct iocblk *iop;
- struct ppp_stats *psp;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_rput\n");
- freemsg(mp);
- return 0;
- }
-
- switch (mp->b_datap->db_type) {
-
- case M_DATA:
- putq(q, mp);
- break;
-
- case M_IOCACK:
- iop = (struct iocblk *) mp->b_rptr;
- switch (iop->ioc_cmd) {
- case PPPIO_GETSTAT:
- /*
- * Catch this on the way back from the ppp_ahdl module
- * so we can fill in the VJ stats.
- */
- if (mp->b_cont == 0 || iop->ioc_count != sizeof(struct ppp_stats))
- break;
- psp = (struct ppp_stats *) mp->b_cont->b_rptr;
- psp->vj = cp->vj_comp.stats;
- break;
- }
- putnext(q, mp);
- break;
-
- case M_CTL:
- switch (mp->b_rptr[0]) {
- case PPPCTL_IERROR:
- ++cp->stats.ppp_ierrors;
- break;
- case PPPCTL_OERROR:
- ++cp->stats.ppp_oerrors;
- break;
- }
- putnext(q, mp);
- break;
-
- default:
- putnext(q, mp);
- }
-
- return 0;
-}
-
-static int
-ppp_comp_rsrv(q)
- queue_t *q;
-{
- int proto, rv, i;
- mblk_t *mp, *dmp = NULL, *np;
- uchar_t *dp, *iphdr;
- comp_state_t *cp;
- int len, hlen, vjlen;
- u_int iphlen;
-
- cp = (comp_state_t *) q->q_ptr;
- if (cp == 0) {
- DPRINT("cp == 0 in ppp_comp_rsrv\n");
- return 0;
- }
-
- while ((mp = getq(q)) != 0) {
- /* assert(mp->b_datap->db_type == M_DATA) */
- if (!canputnext(q)) {
- putbq(q, mp);
- break;
- }
-
- len = msgdsize(mp);
- cp->stats.ppp_ibytes += len;
- cp->stats.ppp_ipackets++;
-
- /*
- * First work out the protocol and where the PPP header ends.
- */
- i = 0;
- proto = MSG_BYTE(mp, 0);
- if (proto == PPP_ALLSTATIONS) {
- i = 2;
- proto = MSG_BYTE(mp, 2);
- }
- if ((proto & 1) == 0) {
- ++i;
- proto = (proto << 8) + MSG_BYTE(mp, i);
- }
- hlen = i + 1;
-
- /*
- * Now reconstruct a complete, contiguous PPP header at the
- * start of the packet.
- */
- if (hlen < ((cp->flags & DECOMP_AC)? 0: 2)
- + ((cp->flags & DECOMP_PROT)? 1: 2)) {
- /* count these? */
- goto bad;
- }
- if (mp->b_rptr + hlen > mp->b_wptr) {
- adjmsg(mp, hlen); /* XXX check this call */
- hlen = 0;
- }
- if (hlen != PPP_HDRLEN) {
- /*
- * We need to put some bytes on the front of the packet
- * to make a full-length PPP header.
- * If we can put them in *mp, we do, otherwise we
- * tack another mblk on the front.
- * XXX we really shouldn't need to carry around
- * the address and control at this stage.
- */
- dp = mp->b_rptr + hlen - PPP_HDRLEN;
- if (dp < mp->b_datap->db_base || mp->b_datap->db_ref > 1) {
- np = allocb(PPP_HDRLEN, BPRI_MED);
- if (np == 0)
- goto bad;
- np->b_cont = mp;
- mp->b_rptr += hlen;
- mp = np;
- dp = mp->b_wptr;
- mp->b_wptr += PPP_HDRLEN;
- } else
- mp->b_rptr = dp;
-
- dp[0] = PPP_ALLSTATIONS;
- dp[1] = PPP_UI;
- dp[2] = proto >> 8;
- dp[3] = proto;
- }
-
- /*
- * Now see if we have a compressed packet to decompress,
- * or a CCP packet to take notice of.
- */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto == PPP_CCP) {
- len = msgdsize(mp);
- if (mp->b_wptr < mp->b_rptr + len) {
- PULLUP(mp, len);
- if (mp == 0)
- goto bad;
- }
- ppp_comp_ccp(q, mp, 1);
- } else if (proto == PPP_COMP) {
- if ((cp->flags & CCP_ISUP)
- && (cp->flags & CCP_DECOMP_RUN) && cp->rstate
- && (cp->flags & CCP_ERR) == 0) {
- rv = (*cp->rcomp->decompress)(cp->rstate, mp, &dmp);
- switch (rv) {
- case DECOMP_OK:
- freemsg(mp);
- mp = dmp;
- if (mp == NULL) {
- /* no error, but no packet returned either. */
- continue;
- }
- break;
- case DECOMP_ERROR:
- cp->flags |= CCP_ERROR;
- ++cp->stats.ppp_ierrors;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- break;
- case DECOMP_FATALERROR:
- cp->flags |= CCP_FATALERROR;
- ++cp->stats.ppp_ierrors;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- break;
- }
- }
- } else if (cp->rstate && (cp->flags & CCP_DECOMP_RUN)) {
- (*cp->rcomp->incomp)(cp->rstate, mp);
- }
-
- /*
- * Now do VJ decompression.
- */
- proto = PPP_PROTOCOL(mp->b_rptr);
- if (proto == PPP_VJC_COMP || proto == PPP_VJC_UNCOMP) {
- len = msgdsize(mp) - PPP_HDRLEN;
- if ((cp->flags & DECOMP_VJC) == 0 || len <= 0)
- goto bad;
-
- /*
- * Advance past the ppp header.
- * Here we assume that the whole PPP header is in the first mblk.
- */
- np = mp;
- dp = np->b_rptr + PPP_HDRLEN;
- if (dp >= mp->b_wptr) {
- np = np->b_cont;
- dp = np->b_rptr;
- }
-
- /*
- * Make sure we have sufficient contiguous data at this point.
- */
- hlen = (proto == PPP_VJC_COMP)? MAX_VJHDR: MAX_IPHDR;
- if (hlen > len)
- hlen = len;
- if (np->b_wptr < dp + hlen || np->b_datap->db_ref > 1) {
- PULLUP(mp, hlen + PPP_HDRLEN);
- if (mp == 0)
- goto bad;
- np = mp;
- dp = np->b_rptr + PPP_HDRLEN;
- }
-
- if (proto == PPP_VJC_COMP) {
- /*
- * Decompress VJ-compressed packet.
- * First reset compressor if an input error has occurred.
- */
- if (cp->stats.ppp_ierrors != cp->vj_last_ierrors) {
- if (cp->flags & DBGLOG)
- DPRINT1("ppp%d: resetting VJ\n", cp->unit);
- vj_uncompress_err(&cp->vj_comp);
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- }
-
- vjlen = vj_uncompress_tcp(dp, np->b_wptr - dp, len,
- &cp->vj_comp, &iphdr, &iphlen);
- if (vjlen < 0) {
- if (cp->flags & DBGLOG)
- DPRINT2("ppp%d: vj_uncomp_tcp failed, pkt len %d\n",
- cp->unit, len);
- ++cp->vj_last_ierrors; /* so we don't reset next time */
- goto bad;
- }
-
- /* drop ppp and vj headers off */
- if (mp != np) {
- freeb(mp);
- mp = np;
- }
- mp->b_rptr = dp + vjlen;
-
- /* allocate a new mblk for the ppp and ip headers */
- if ((np = allocb(iphlen + PPP_HDRLEN + 4, BPRI_MED)) == 0)
- goto bad;
- dp = np->b_rptr; /* prepend mblk with TCP/IP hdr */
- dp[0] = PPP_ALLSTATIONS; /* reconstruct PPP header */
- dp[1] = PPP_UI;
- dp[2] = PPP_IP >> 8;
- dp[3] = PPP_IP;
- bcopy((caddr_t)iphdr, (caddr_t)dp + PPP_HDRLEN, iphlen);
- np->b_wptr = dp + iphlen + PPP_HDRLEN;
- np->b_cont = mp;
-
- /* XXX there seems to be a bug which causes panics in strread
- if we make an mbuf with only the IP header in it :-( */
- if (mp->b_wptr - mp->b_rptr > 4) {
- bcopy((caddr_t)mp->b_rptr, (caddr_t)np->b_wptr, 4);
- mp->b_rptr += 4;
- np->b_wptr += 4;
- } else {
- bcopy((caddr_t)mp->b_rptr, (caddr_t)np->b_wptr,
- mp->b_wptr - mp->b_rptr);
- np->b_wptr += mp->b_wptr - mp->b_rptr;
- np->b_cont = mp->b_cont;
- freeb(mp);
- }
-
- mp = np;
-
- } else {
- /*
- * "Decompress" a VJ-uncompressed packet.
- */
- cp->vj_last_ierrors = cp->stats.ppp_ierrors;
- if (!vj_uncompress_uncomp(dp, hlen, &cp->vj_comp)) {
- if (cp->flags & DBGLOG)
- DPRINT2("ppp%d: vj_uncomp_uncomp failed, pkt len %d\n",
- cp->unit, len);
- ++cp->vj_last_ierrors; /* don't need to reset next time */
- goto bad;
- }
- mp->b_rptr[3] = PPP_IP; /* fix up the PPP protocol field */
- }
- }
-
- putnext(q, mp);
- continue;
-
- bad:
- if (mp != 0)
- freemsg(mp);
- cp->stats.ppp_ierrors++;
- putctl1(q->q_next, M_CTL, PPPCTL_IERROR);
- }
-
- return 0;
-}
-
-/*
- * Handle a CCP packet being sent or received.
- * Here all the data in the packet is in a single mbuf.
- */
-static void
-ppp_comp_ccp(q, mp, rcvd)
- queue_t *q;
- mblk_t *mp;
- int rcvd;
-{
- int len, clen;
- comp_state_t *cp;
- unsigned char *dp;
-
- len = msgdsize(mp);
- if (len < PPP_HDRLEN + CCP_HDRLEN)
- return;
-
- cp = (comp_state_t *) q->q_ptr;
- dp = mp->b_rptr + PPP_HDRLEN;
- len -= PPP_HDRLEN;
- clen = CCP_LENGTH(dp);
- if (clen > len)
- return;
-
- switch (CCP_CODE(dp)) {
- case CCP_CONFREQ:
- case CCP_TERMREQ:
- case CCP_TERMACK:
- cp->flags &= ~CCP_ISUP;
- break;
-
- case CCP_CONFACK:
- if ((cp->flags & (CCP_ISOPEN | CCP_ISUP)) == CCP_ISOPEN
- && clen >= CCP_HDRLEN + CCP_OPT_MINLEN
- && clen >= CCP_HDRLEN + CCP_OPT_LENGTH(dp + CCP_HDRLEN)) {
- if (!rcvd) {
- if (cp->xstate != NULL
- && (*cp->xcomp->comp_init)
- (cp->xstate, dp + CCP_HDRLEN, clen - CCP_HDRLEN,
- cp->unit, 0, ((cp->flags & DBGLOG) != 0)))
- cp->flags |= CCP_COMP_RUN;
- } else {
- if (cp->rstate != NULL
- && (*cp->rcomp->decomp_init)
- (cp->rstate, dp + CCP_HDRLEN, clen - CCP_HDRLEN,
- cp->unit, 0, cp->mru, ((cp->flags & DBGLOG) != 0)))
- cp->flags = (cp->flags & ~CCP_ERR) | CCP_DECOMP_RUN;
- }
- }
- break;
-
- case CCP_RESETACK:
- if (cp->flags & CCP_ISUP) {
- if (!rcvd) {
- if (cp->xstate && (cp->flags & CCP_COMP_RUN))
- (*cp->xcomp->comp_reset)(cp->xstate);
- } else {
- if (cp->rstate && (cp->flags & CCP_DECOMP_RUN)) {
- (*cp->rcomp->decomp_reset)(cp->rstate);
- cp->flags &= ~CCP_ERROR;
- }
- }
- }
- break;
- }
-}
-
-#if 0
-dump_msg(mp)
- mblk_t *mp;
-{
- dblk_t *db;
-
- while (mp != 0) {
- db = mp->b_datap;
- DPRINT2("mp=%x cont=%x ", mp, mp->b_cont);
- DPRINT3("rptr=%x wptr=%x datap=%x\n", mp->b_rptr, mp->b_wptr, db);
- DPRINT2(" base=%x lim=%x", db->db_base, db->db_lim);
- DPRINT2(" ref=%d type=%d\n", db->db_ref, db->db_type);
- mp = mp->b_cont;
- }
-}
-#endif
-
-static int
-msg_byte(mp, i)
- mblk_t *mp;
- unsigned int i;
-{
- while (mp != 0 && i >= mp->b_wptr - mp->b_rptr)
- mp = mp->b_cont;
- if (mp == 0)
- return -1;
- return mp->b_rptr[i];
-}
diff --git a/mdk-stage1/ppp/solaris/ppp_comp_mod.c b/mdk-stage1/ppp/solaris/ppp_comp_mod.c
deleted file mode 100644
index 83ff8e252..000000000
--- a/mdk-stage1/ppp/solaris/ppp_comp_mod.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * ppp_comp_mod.c - modload support for PPP compression STREAMS module.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2.
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-
-extern struct streamtab ppp_compinfo;
-
-static struct fmodsw fsw = {
- "ppp_comp",
- &ppp_compinfo,
- D_NEW | D_MP | D_MTQPAIR
-};
-
-extern struct mod_ops mod_strmodops;
-
-static struct modlstrmod modlstrmod = {
- &mod_strmodops,
- "PPP compression module",
- &fsw
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modlstrmod,
- NULL
-};
-
-/*
- * Entry points for modloading.
- */
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
diff --git a/mdk-stage1/ppp/solaris/ppp_mod.c b/mdk-stage1/ppp/solaris/ppp_mod.c
deleted file mode 100644
index a4b1538a5..000000000
--- a/mdk-stage1/ppp/solaris/ppp_mod.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * ppp_mod.c - modload support for PPP pseudo-device driver.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-#include <sys/ksynch.h>
-
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-
-static int ppp_identify __P((dev_info_t *));
-static int ppp_attach __P((dev_info_t *, ddi_attach_cmd_t));
-static int ppp_detach __P((dev_info_t *, ddi_detach_cmd_t));
-static int ppp_devinfo __P((dev_info_t *, ddi_info_cmd_t, void *, void **));
-
-extern struct streamtab pppinfo;
-extern krwlock_t ppp_lower_lock;
-
-static dev_info_t *ppp_dip;
-
-static struct cb_ops cb_ppp_ops = {
- nulldev, nulldev, nodev, nodev, /* cb_open, ... */
- nodev, nodev, nodev, nodev, /* cb_dump, ... */
- nodev, nodev, nodev, nochpoll, /* cb_devmap, ... */
- ddi_prop_op, /* cb_prop_op */
- &pppinfo, /* cb_stream */
- D_NEW|D_MP|D_MTQPAIR|D_MTOUTPERIM|D_MTOCEXCL /* cb_flag */
-};
-
-static struct dev_ops ppp_ops = {
- DEVO_REV, /* devo_rev */
- 0, /* devo_refcnt */
- ppp_devinfo, /* devo_getinfo */
- ppp_identify, /* devo_identify */
- nulldev, /* devo_probe */
- ppp_attach, /* devo_attach */
- ppp_detach, /* devo_detach */
- nodev, /* devo_reset */
- &cb_ppp_ops, /* devo_cb_ops */
- NULL /* devo_bus_ops */
-};
-
-/*
- * Module linkage information
- */
-
-static struct modldrv modldrv = {
- &mod_driverops, /* says this is a pseudo driver */
- "PPP-2.3 multiplexing driver",
- &ppp_ops /* driver ops */
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modldrv,
- NULL
-};
-
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
-
-static int
-ppp_identify(dip)
- dev_info_t *dip;
-{
- return strcmp(ddi_get_name(dip), "ppp") == 0? DDI_IDENTIFIED:
- DDI_NOT_IDENTIFIED;
-}
-
-static int
-ppp_attach(dip, cmd)
- dev_info_t *dip;
- ddi_attach_cmd_t cmd;
-{
-
- if (cmd != DDI_ATTACH)
- return DDI_FAILURE;
- if (ddi_create_minor_node(dip, "ppp", S_IFCHR, 0, DDI_PSEUDO, CLONE_DEV)
- == DDI_FAILURE) {
- ddi_remove_minor_node(dip, NULL);
- return DDI_FAILURE;
- }
- rw_init(&ppp_lower_lock, NULL, RW_DRIVER, NULL);
- return DDI_SUCCESS;
-}
-
-static int
-ppp_detach(dip, cmd)
- dev_info_t *dip;
- ddi_detach_cmd_t cmd;
-{
- rw_destroy(&ppp_lower_lock);
- ddi_remove_minor_node(dip, NULL);
- return DDI_SUCCESS;
-}
-
-static int
-ppp_devinfo(dip, cmd, arg, result)
- dev_info_t *dip;
- ddi_info_cmd_t cmd;
- void *arg;
- void **result;
-{
- int error;
-
- error = DDI_SUCCESS;
- switch (cmd) {
- case DDI_INFO_DEVT2DEVINFO:
- if (ppp_dip == NULL)
- error = DDI_FAILURE;
- else
- *result = (void *) ppp_dip;
- break;
- case DDI_INFO_DEVT2INSTANCE:
- *result = NULL;
- break;
- default:
- error = DDI_FAILURE;
- }
- return error;
-}
diff --git a/mdk-stage1/ppp/solaris/ppp_mod.h b/mdk-stage1/ppp/solaris/ppp_mod.h
deleted file mode 100644
index f0af00886..000000000
--- a/mdk-stage1/ppp/solaris/ppp_mod.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Miscellaneous definitions for PPP STREAMS modules.
- */
-
-/*
- * Macros for allocating and freeing kernel memory.
- */
-#ifdef SVR4 /* SVR4, including Solaris 2 */
-#include <sys/kmem.h>
-#define ALLOC_SLEEP(n) kmem_alloc((n), KM_SLEEP)
-#define ALLOC_NOSLEEP(n) kmem_alloc((n), KM_NOSLEEP)
-#define FREE(p, n) kmem_free((p), (n))
-#endif
-
-#ifdef SUNOS4
-#include <sys/kmem_alloc.h> /* SunOS 4.x */
-#define ALLOC_SLEEP(n) kmem_alloc((n), KMEM_SLEEP)
-#define ALLOC_NOSLEEP(n) kmem_alloc((n), KMEM_NOSLEEP)
-#define FREE(p, n) kmem_free((p), (n))
-#define NOTSUSER() (suser()? 0: EPERM)
-#define bcanputnext(q, band) canputnext((q))
-#endif /* SunOS 4 */
-
-#ifdef __osf__
-#include <sys/malloc.h>
-
-/* caution: this mirrors macros in sys/malloc.h, and uses interfaces
- * which are subject to change.
- * The problems are that:
- * - the official MALLOC macro wants the lhs of the assignment as an argument,
- * and it takes care of the assignment itself (yuck.)
- * - PPP insists on using "FREE" which conflicts with a macro of the same name.
- *
- */
-#ifdef BUCKETINDX /* V2.0 */
-#define ALLOC_SLEEP(n) (void *)malloc((u_long)(n), BUCKETP(n), M_DEVBUF, M_WAITOK)
-#define ALLOC_NOSLEEP(n) (void *)malloc((u_long)(n), BUCKETP(n), M_DEVBUF, M_NOWAIT)
-#else
-#define ALLOC_SLEEP(n) (void *)malloc((u_long)(n), BUCKETINDEX(n), M_DEVBUF, M_WAITOK)
-#define ALLOC_NOSLEEP(n) (void *)malloc((u_long)(n), BUCKETINDEX(n), M_DEVBUF, M_NOWAIT)
-#endif
-
-#define bcanputnext(q, band) canputnext((q))
-
-#ifdef FREE
-#undef FREE
-#endif
-#define FREE(p, n) free((void *)(p), M_DEVBUF)
-
-#define NO_DLPI 1
-
-#ifndef IFT_PPP
-#define IFT_PPP 0x17
-#endif
-
-#include <sys/proc.h>
-#define NOTSUSER() (suser(u.u_procp->p_rcred, &u.u_acflag) ? EPERM : 0)
-
-/* #include "ppp_osf.h" */
-
-#endif /* __osf__ */
-
-#ifdef AIX4
-#define ALLOC_SLEEP(n) xmalloc((n), 0, pinned_heap) /* AIX V4.x */
-#define ALLOC_NOSLEEP(n) xmalloc((n), 0, pinned_heap) /* AIX V4.x */
-#define FREE(p, n) xmfree((p), pinned_heap)
-#define NOTSUSER() (suser()? 0: EPERM)
-#endif /* AIX */
-
-/*
- * Macros for printing debugging stuff.
- */
-#ifdef DEBUG
-#if defined(SVR4) || defined(__osf__)
-#if defined(SNI)
-#include <sys/strlog.h>
-#define STRLOG_ID 4712
-#define DPRINT(f) strlog(STRLOG_ID, 0, 0, SL_TRACE, f)
-#define DPRINT1(f, a1) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1)
-#define DPRINT2(f, a1, a2) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) strlog(STRLOG_ID, 0, 0, SL_TRACE, f, a1, a2, a3)
-#else
-#define DPRINT(f) cmn_err(CE_CONT, f)
-#define DPRINT1(f, a1) cmn_err(CE_CONT, f, a1)
-#define DPRINT2(f, a1, a2) cmn_err(CE_CONT, f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) cmn_err(CE_CONT, f, a1, a2, a3)
-#endif /* SNI */
-#else
-#define DPRINT(f) printf(f)
-#define DPRINT1(f, a1) printf(f, a1)
-#define DPRINT2(f, a1, a2) printf(f, a1, a2)
-#define DPRINT3(f, a1, a2, a3) printf(f, a1, a2, a3)
-#endif /* SVR4 or OSF */
-
-#else
-#define DPRINT(f) 0
-#define DPRINT1(f, a1) 0
-#define DPRINT2(f, a1, a2) 0
-#define DPRINT3(f, a1, a2, a3) 0
-#endif /* DEBUG */
-
-#ifndef SVR4
-typedef unsigned char uchar_t;
-typedef unsigned short ushort_t;
-#ifndef __osf__
-typedef int minor_t;
-#endif
-#endif
-
-/*
- * If we don't have multithreading support, define substitutes.
- */
-#ifndef D_MP
-# define qprocson(q)
-# define qprocsoff(q)
-# define put(q, mp) ((*(q)->q_qinfo->qi_putp)((q), (mp)))
-# define canputnext(q) canput((q)->q_next)
-# define qwriter(q, mp, func, scope) (func)((q), (mp))
-#endif
-
-#ifdef D_MP
-/* Use msgpullup if we have other multithreading support. */
-#define PULLUP(mp, len) \
- do { \
- mblk_t *np = msgpullup((mp), (len)); \
- freemsg((mp)); \
- mp = np; \
- } while (0)
-
-#else
-/* Use pullupmsg if we don't have any multithreading support. */
-#define PULLUP(mp, len) \
- do { \
- if (!pullupmsg((mp), (len))) { \
- freemsg((mp)); \
- mp = 0; \
- } \
- } while (0)
-#endif
-
-/*
- * How to declare the open and close procedures for a module.
- */
-#ifdef SVR4
-#define MOD_OPEN_DECL(name) \
-static int name __P((queue_t *, dev_t *, int, int, cred_t *))
-
-#define MOD_CLOSE_DECL(name) \
-static int name __P((queue_t *, int, cred_t *))
-
-#define MOD_OPEN(name) \
-static int name(q, devp, flag, sflag, credp) \
- queue_t *q; \
- dev_t *devp; \
- int flag, sflag; \
- cred_t *credp;
-
-#define MOD_CLOSE(name) \
-static int name(q, flag, credp) \
- queue_t *q; \
- int flag; \
- cred_t *credp;
-
-#define OPEN_ERROR(x) return (x)
-#define DRV_OPEN_OK(dev) return 0
-
-#define NOTSUSER() (drv_priv(credp))
-
-#else /* not SVR4 */
-#define MOD_OPEN_DECL(name) \
-static int name __P((queue_t *, int, int, int))
-
-#define MOD_CLOSE_DECL(name) \
-static int name __P((queue_t *, int))
-
-#define MOD_OPEN(name) \
-static int name(q, dev, flag, sflag) \
- queue_t *q; \
- int dev; \
- int flag, sflag;
-
-#define MOD_CLOSE(name) \
-static int name(q, flag) \
- queue_t *q; \
- int flag;
-
-#define OPEN_ERROR(x) { u.u_error = (x); return OPENFAIL; }
-#define DRV_OPEN_OK(dev) return (dev)
-
-#endif /* SVR4 */
diff --git a/mdk-stage1/ppp/sunos4/Makedefs b/mdk-stage1/ppp/sunos4/Makedefs
deleted file mode 100644
index 8b56a2b67..000000000
--- a/mdk-stage1/ppp/sunos4/Makedefs
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# defines common to several Makefiles
-#
-
-INSTALL= install -o root -g daemon
-
-BINDIR = /usr/local/etc
-MANDIR = /usr/local/man
-ETCDIR = /etc/ppp
-
-# To use gcc, uncomment the next line.
-#CC = gcc
-COPTS = -O
diff --git a/mdk-stage1/ppp/sunos4/Makefile b/mdk-stage1/ppp/sunos4/Makefile
deleted file mode 100644
index 701e24e14..000000000
--- a/mdk-stage1/ppp/sunos4/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Makefile for STREAMS modules for SunOS 4.
-#
-# $Id$
-#
-
-include Makedefs
-
-LD = /usr/bin/ld # make sure we don't get gnu ld
-
-# Defining __$(ARCH)__ is for gcc's broken version of sun/vddrv.h.
-ARCH = `/bin/arch -k`
-DEFINES= -DKERNEL -D_KERNEL -DSUNOS4 -D$(ARCH) -D__$(ARCH)__ \
- -DDEBUG -DNO_DLPI -DSNIT_SUPPORT
-CFLAGS= $(DEFINES) -I../include $(COPTS)
-
-MODULES= ppp_mod.o ppp_ahdl_mod.o ppp_comp_mod.o if_ppp_mod.o
-
-all: $(MODULES)
-
-ppp_mod.o: ppp.o ppp_vdcmd.o
- $(LD) -r -o ppp_mod.o ppp.o ppp_vdcmd.o
-
-ppp_ahdl_mod.o: ppp_ahdlc.o ppp_ahdlc_vdcmd.o
- $(LD) -r -o ppp_ahdl_mod.o ppp_ahdlc.o ppp_ahdlc_vdcmd.o
-
-COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \
- ppp_comp_vdcmd.o
-ppp_comp_mod.o: $(COMP_OBJS)
- $(LD) -r -o $@ $(COMP_OBJS)
-
-if_ppp.o: ../modules/if_ppp.c
- $(CC) $(CFLAGS) -c $?
-bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $?
-deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $?
-ppp.o: ../modules/ppp.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc.o: ../modules/ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp.o: ../modules/ppp_comp.c
- $(CC) $(CFLAGS) -c $?
-vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $?
-zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $?
-
-if_ppp_mod.o: if_ppp.o if_ppp_vdcmd.o
- $(LD) -r -o if_ppp_mod.o if_ppp.o if_ppp_vdcmd.o
-
-install: all
- $(INSTALL) $(MODULES) $(BINDIR)
- ./ppp.INSTALL
-
-clean:
- rm -f ppp ppp_comp ppp_ahdl *.o *~ core
diff --git a/mdk-stage1/ppp/sunos4/Makefile.top b/mdk-stage1/ppp/sunos4/Makefile.top
deleted file mode 100644
index c86e0884d..000000000
--- a/mdk-stage1/ppp/sunos4/Makefile.top
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# ppp top level makefile
-#
-
-include sunos4/Makedefs
-
-all:
- cd chat; $(MAKE) all
- cd pppd; $(MAKE) all
- cd pppstats; $(MAKE) all
- cd sunos4; $(MAKE) all
- cd pppdump; $(MAKE) all
-
-install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp
-
-install-progs:
- cd chat; $(MAKE) install
- cd pppd; $(MAKE) install
- cd pppstats; $(MAKE) install
- cd pppdump; $(MAKE) install
- cd sunos4; $(MAKE) install
-
-install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
- $(ETCDIR)/chap-secrets
-
-$(ETCDIR)/options:
- $(INSTALL) -c -m 644 etc.ppp/options $@
-$(ETCDIR)/pap-secrets:
- $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@
-$(ETCDIR)/chap-secrets:
- $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@
-
-$(BINDIR):
- $(INSTALL) -d -m 755 $@
-$(MANDIR)/man8:
- $(INSTALL) -d -m 755 $@
-$(ETCDIR):
- $(INSTALL) -d -m 755 $@
-
-clean:
- rm -f *~
- cd chat; $(MAKE) clean
- cd pppd; $(MAKE) clean
- cd pppstats; $(MAKE) clean
- cd sunos4; $(MAKE) clean
-
diff --git a/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c b/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c
deleted file mode 100644
index 2bf9710f4..000000000
--- a/mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/conf.h>
-#include <sun/vddrv.h>
-
-extern struct streamtab if_pppinfo;
-
-static struct vdldrv vd = {
- VDMAGIC_USER,
- "if_ppp"
-};
-
-static int fmodsw_index = -1;
-
-int
-if_ppp_vdcmd(fun, vdp, vdi, vds)
- unsigned int fun;
- struct vddrv *vdp;
- addr_t vdi;
- struct vdstat *vds;
-{
- int n, error;
-
- switch (fun) {
- case VDLOAD:
- vdp->vdd_vdtab = (struct vdlinkage *) &vd;
- if (fmodsw_index >= 0)
- return EBUSY;
- for (n = 0; n < fmodcnt; ++n)
- if (fmodsw[n].f_str == 0)
- break;
- if (n >= fmodcnt)
- return ENODEV;
- strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1);
- fmodsw[n].f_str = &if_pppinfo;
- fmodsw_index = n;
- break;
-
- case VDUNLOAD:
- if (fmodsw_index <= 0)
- return EINVAL;
- error = if_ppp_unload();
- if (error != 0)
- return error;
- fmodsw[fmodsw_index].f_name[0] = 0;
- fmodsw[fmodsw_index].f_str = 0;
- fmodsw_index = -1;
- break;
-
- case VDSTAT:
- break;
-
- default:
- return EIO;
- }
- return 0;
-}
diff --git a/mdk-stage1/ppp/sunos4/ppp.INSTALL b/mdk-stage1/ppp/sunos4/ppp.INSTALL
deleted file mode 100755
index 0018bf8d0..000000000
--- a/mdk-stage1/ppp/sunos4/ppp.INSTALL
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/bin/sh
-
-# Script for loading, unloading, etc. ppp modules.
-
-moddir=/usr/local/etc
-etcppp=/etc/ppp
-
-PATH=/usr/etc:/usr/bin
-
-# Check that we're superuser
-touch /tmp/su$$
-if chown root /tmp/su$$ >/dev/null; then :
-else
- echo "$0: must be root."
- rm -f /tmp/su$$
- exit 1
-fi
-rm -f /tmp/su$$
-
-case "$0" in
-*ppp.INSTALL)
- if [ ! -f ppp.INSTALL ]; then
- echo "ppp.INSTALL: not found"
- exit 1
- fi
- for n in INSTALL LOAD UNLOAD MKDEV RMDEV; do
- if [ -h /dev/ppp.$n -o -f /dev/ppp.$n ]; then
- rm /dev/ppp.$n
- fi
- done
- cp ppp.INSTALL /dev
- for n in LOAD UNLOAD MKDEV RMDEV; do
- ln -s ppp.INSTALL /dev/ppp.$n
- done
- ;;
-
-*ppp.LOAD)
- if modstat | grep -w ppp >/dev/null; then
- echo "ppp driver is already loaded."
- exit 1
- fi
- if modstat | grep -w if_ppp >/dev/null; then
- echo "if_ppp module already loaded: not reloading."
- else
- echo -n "if_ppp: "
- modload $moddir/if_ppp_mod.o -sym -entry _if_ppp_vdcmd \
- -o $etcppp/if_ppp_mod
- fi
- echo -n "ppp: "
- modload $moddir/ppp_mod.o -sym -entry _ppp_vdcmd -exec /dev/ppp.MKDEV \
- -o $etcppp/ppp_mod
- echo -n "ppp_comp: "
- modload $moddir/ppp_comp_mod.o -sym -entry _ppp_comp_vdcmd \
- -o $etcppp/ppp_comp
- echo -n "ppp_ahdl: "
- modload $moddir/ppp_ahdl_mod.o -sym -entry _ppp_ahdlc_vdcmd \
- -o $etcppp/ppp_ahdl
- exit 0
- ;;
-
-*ppp.MKDEV)
- # args: module number, type, b-major, c-major
- if [ $# -ne 4 ]; then
- echo "Usage: $0 module-id module-type b-major c-major"
- exit 1
- fi
- if [ "$2" -ne "12345607" -a "$2" -ne "12345600" ]; then
- echo "$0: $2: bad module type"
- exit 1
- fi
- rm -f /dev/ppp
- # we "just know" that 37 is the major number of the clone driver
- mknod /dev/ppp c 37 $4
- chmod 644 /dev/ppp
- exit 0
- ;;
-
-*ppp.UNLOAD)
- stat=0
- if modstat | grep -w if_ppp >/dev/null; then
- echo "$0: not unloading if_ppp module."
- fi
- for mod in ppp ppp_comp ppp_ahdl; do
- id=`modstat | grep -w $mod | awk '{print $1}'`
- if [ x$id = x ]; then
- echo "$mod is not loaded."
- stat=1
- else
- modunload -id $id
- fi
- done
- exit $stat
- ;;
-
-*ppp.RMDEV)
- rm -f /dev/ppp
- exit 0
- ;;
-
-*)
- echo "Invocation names: ppp.INSTALL ppp.LOAD ppp.UNLOAD ppp.MKDEV ppp.RMDEV"
- exit 1
- ;;
-esac
diff --git a/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c
deleted file mode 100644
index 2dbe8262b..000000000
--- a/mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/conf.h>
-#include <sun/vddrv.h>
-
-extern struct streamtab ppp_ahdlcinfo;
-extern int ppp_ahdlc_count;
-
-static struct vdldrv vd = {
- VDMAGIC_USER,
- "ppp_ahdl"
-};
-
-static int fmodsw_index = -1;
-
-int
-ppp_ahdlc_vdcmd(fun, vdp, vdi, vds)
- unsigned int fun;
- struct vddrv *vdp;
- addr_t vdi;
- struct vdstat *vds;
-{
- int n;
-
- switch (fun) {
- case VDLOAD:
- vdp->vdd_vdtab = (struct vdlinkage *) &vd;
- if (fmodsw_index >= 0)
- return EBUSY;
- for (n = 0; n < fmodcnt; ++n)
- if (fmodsw[n].f_str == 0)
- break;
- if (n >= fmodcnt)
- return ENODEV;
- strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1);
- fmodsw[n].f_str = &ppp_ahdlcinfo;
- fmodsw_index = n;
- break;
-
- case VDUNLOAD:
- if (ppp_ahdlc_count > 0)
- return EBUSY;
- if (fmodsw_index <= 0)
- return EINVAL;
- fmodsw[fmodsw_index].f_name[0] = 0;
- fmodsw[fmodsw_index].f_str = 0;
- fmodsw_index = -1;
- break;
-
- case VDSTAT:
- break;
-
- default:
- return EIO;
- }
- return 0;
-}
diff --git a/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c
deleted file mode 100644
index b81bc47e8..000000000
--- a/mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/conf.h>
-#include <sun/vddrv.h>
-
-extern struct streamtab ppp_compinfo;
-extern int ppp_comp_count;
-
-static struct vdldrv vd = {
- VDMAGIC_USER,
- "ppp_comp"
-};
-
-static int fmodsw_index = -1;
-
-int
-ppp_comp_vdcmd(fun, vdp, vdi, vds)
- unsigned int fun;
- struct vddrv *vdp;
- addr_t vdi;
- struct vdstat *vds;
-{
- int n;
-
- switch (fun) {
- case VDLOAD:
- vdp->vdd_vdtab = (struct vdlinkage *) &vd;
- if (fmodsw_index >= 0)
- return EBUSY;
- for (n = 0; n < fmodcnt; ++n)
- if (fmodsw[n].f_str == 0)
- break;
- if (n >= fmodcnt)
- return ENODEV;
- strncpy(fmodsw[n].f_name, vd.Drv_name, FMNAMESZ+1);
- fmodsw[n].f_str = &ppp_compinfo;
- fmodsw_index = n;
- break;
-
- case VDUNLOAD:
- if (ppp_comp_count > 0)
- return EBUSY;
- if (fmodsw_index <= 0)
- return EINVAL;
- fmodsw[fmodsw_index].f_name[0] = 0;
- fmodsw[fmodsw_index].f_str = 0;
- fmodsw_index = -1;
- break;
-
- case VDSTAT:
- break;
-
- default:
- return EIO;
- }
- return 0;
-}
diff --git a/mdk-stage1/ppp/sunos4/ppp_vdcmd.c b/mdk-stage1/ppp/sunos4/ppp_vdcmd.c
deleted file mode 100644
index 68095c92e..000000000
--- a/mdk-stage1/ppp/sunos4/ppp_vdcmd.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <sys/types.h>
-#include <sys/errno.h>
-#include <sys/conf.h>
-#include <sun/vddrv.h>
-
-extern struct streamtab pppinfo;
-extern int ppp_count;
-extern int nchrdev;
-
-static struct vdldrv vd = {
- VDMAGIC_PSEUDO,
- "ppp"
-};
-
-extern int nodev();
-
-static struct cdevsw ppp_cdevsw = {
- nodev, nodev, nodev, nodev, nodev, nodev, nodev, 0,
- &pppinfo
-};
-
-static struct cdevsw old_entry;
-
-int
-ppp_vdcmd(fun, vdp, vdi, vds)
- unsigned int fun;
- struct vddrv *vdp;
- addr_t vdi;
- struct vdstat *vds;
-{
- static int majnum = -1;
- int n, maj;
-
- switch (fun) {
- case VDLOAD:
- /*
- * It seems like modload doesn't install the cdevsw entry
- * for us. Oh well...
- */
- for (maj = 1; maj < nchrdev; ++maj)
- if (cdevsw[maj].d_open == vd_unuseddev)
- break;
- if (maj >= nchrdev)
- return ENODEV;
- vd.Drv_charmajor = maj;
- old_entry = cdevsw[maj];
- cdevsw[maj] = ppp_cdevsw;
- vd.Drv_cdevsw = &ppp_cdevsw;
- vdp->vdd_vdtab = (struct vdlinkage *) &vd;
- majnum = maj;
- break;
-
- case VDUNLOAD:
- if (ppp_count > 0)
- return EBUSY;
- if (vd.Drv_charmajor > 0)
- cdevsw[vd.Drv_charmajor] = old_entry;
- break;
-
- case VDSTAT:
- /*
- * We have to fool the modstat command into thinking
- * that this module is actually a driver! This is
- * so that installation commands that use the -exec
- * option of modload to run a shell script find out
- * the block and/or char major numbers of the driver
- * loaded (so that the shell script can go off to
- * /dev and *MAKE* the bloody device nodes- remember
- * they might change from one load to another if
- * you don't hardwire the number!).
- */
- vds->vds_magic = VDMAGIC_DRV;
- vds->vds_modinfo[0] = (char) 0;
- vds->vds_modinfo[1] = (char) majnum;
- break;
-
- default:
- return EIO;
- }
- return 0;
-}
diff --git a/mdk-stage1/ppp/svr4/Makedefs b/mdk-stage1/ppp/svr4/Makedefs
deleted file mode 100644
index 81db8ab2e..000000000
--- a/mdk-stage1/ppp/svr4/Makedefs
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# defines common to several Makefiles
-#
-
-INSTALL= /usr/sbin/install
-
-BINDIR = /usr/local/bin
-MANDIR = /usr/local/man
-ETCDIR = /etc/ppp
-
-COPTS = -O -Xa
-
-# For compiling with gcc, comment out the COPTS definition above and
-# uncomment the next 2 definitions.
-#CC = gcc
-#COPTS = -O2
diff --git a/mdk-stage1/ppp/svr4/Makedefs.sol2 b/mdk-stage1/ppp/svr4/Makedefs.sol2
deleted file mode 100644
index e8b8d282e..000000000
--- a/mdk-stage1/ppp/svr4/Makedefs.sol2
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Generic make definitions for Solaris 2
-#
-# $Id$
-#
-
-include ../svr4/Makedefs
-
-CPPFLAGS = -D_KERNEL -DSVR4 -DSOL2 -DPRIOQ -DDEBUG -I../include
-CFLAGS = $(CPPFLAGS) $(COPTS)
-
-# lint-specific variables
-LINT = lint
-LINT_OPT_32 =
-LINT_OPT_64 = -Xarch=v9 -errchk=longptr64
-
-LINT_32 =
-LINT_32 += -erroff=E_BAD_PTR_CAST_ALIGN
-LINT_32 += -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
-LINT_32 += -erroff=E_SUSPICIOUS_COMPARISON
-LINT_32 += -erroff=E_CAST_UINT_TO_SIGNED_INT
-LINT_32 += -erroff=E_PASS_UINT_TO_SIGNED_INT
-LINT_32 += -erroff=E_INVALID_ANNOTATION_NAME
-LINT_32 += -erroff=E_FUNC_ARG_UNUSED
-# This might be needed, but zlib.c and vjcompress.c will squawk
-# when not ignored
-LINT_32 += -erroff=E_CASE_FALLTHRU
-LINT_32 += -erroff=E_RET_INT_IMPLICITLY
-LINT_32 += -erroff=E_FUNC_NO_RET_VAL
-# Some STREAMS macros will be noisy too when this isn't ignored
-LINT_32 += -erroff=E_CONSTANT_CONDITION
-LINT_32 += -erroff=E_CONST_EXPR
-
-# Extra noise suppressant for 64-bit
-EXTRA_OFF =
-EXTRA_OFF += -erroff=E_CAST_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_CAST_INT_CONST_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_CAST_TO_PTR_FROM_INT
-EXTRA_OFF += -erroff=E_ASSIGN_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_ASSIGN_INT_FROM_BIG_CONST
-EXTRA_OFF += -erroff=E_CONST_PROMOTED_UNSIGNED_LL
-EXTRA_OFF += -erroff=E_CONST_PROMOTED_LONG_LONG
-EXTRA_OFF += -erroff=E_CONST_TRUNCATED_BY_ASSIGN
-EXTRA_OFF += -erroff=E_PASS_INT_FROM_BIG_CONST
-EXTRA_OFF += -erroff=E_COMP_INT_WITH_LARGE_INT
-EXTRA_OFF += -erroff=E_ASSIGN_UINT_TO_SIGNED_INT
-EXTRA_OFF += -erroff=E_ASSIGN_NARROW_CONV
-EXTRA_OFF += -erroff=E_PASS_INT_TO_SMALL_INT
-EXTRA_OFF += -erroff=E_PTR_CONV_LOSES_BITS
-
-LINT_64 = $(LINT_32)
-LINT_64 += $(EXTRA_OFF)
-
-LINTFLAGS64 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_64) $(LINT_64)
-LINT64 = $(LINT) -c $(LINTFLAGS64) $(CPPFLAGS)
-
-LINTFLAGS32 = -Xa -nsxmuF -errtags=yes $(LINT_OPT_32) $(LINT_32)
-LINT32 = $(LINT) -c $(LINTFLAGS32) $(CPPFLAGS)
-
diff --git a/mdk-stage1/ppp/svr4/Makefile.sol2 b/mdk-stage1/ppp/svr4/Makefile.sol2
deleted file mode 100644
index 5b2ca8635..000000000
--- a/mdk-stage1/ppp/svr4/Makefile.sol2
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Makefile for STREAMS modules for Solaris 2.
-#
-# $Id$
-#
-
-include Makedefs.sol2
-
-COPTS += -xO2 -xspace -W0,-Lt
-
-COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \
- ppp_comp_mod.o
-
-all: ppp ppp_ahdl ppp_comp
-
-ppp: ppp.o ppp_mod.o
- ld -r -o $@ ppp.o ppp_mod.o
- chmod +x $@
-
-ppp_ahdl: ppp_ahdlc.o ppp_ahdlc_mod.o
- ld -r -o $@ ppp_ahdlc.o ppp_ahdlc_mod.o
- chmod +x $@
-
-ppp_comp: $(COMP_OBJS)
- ld -r -o $@ $(COMP_OBJS)
- chmod +x $@
-
-bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $?
-deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $?
-ppp.o: ../modules/ppp.c
- $(CC) $(CFLAGS) -c $?
-ppp_mod.o: ppp_mod.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc.o: ../modules/ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp.o: ../modules/ppp_comp.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp_mod.o: ppp_comp_mod.c
- $(CC) $(CFLAGS) -c $?
-vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $?
-zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $?
-
-install:
- cp ppp ppp.conf /kernel/drv
- cp ppp_comp ppp_ahdl /kernel/strmod
- if grep clone:ppp /etc/minor_perm; then :; else \
- echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
- /usr/sbin/rem_drv ppp 2>/dev/null || true
- /usr/sbin/add_drv ppp
-
-SRCS = ../modules/ppp.c ppp_mod.c ../modules/ppp_ahdlc.c ppp_ahdlc_mod.c \
- ../modules/ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
- ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-
-lint:
- $(LINT32) $(SRCS)
-
-clean:
- rm -f ppp ppp_comp ppp_ahdl *.o *~ core
- rm -f *.ln
diff --git a/mdk-stage1/ppp/svr4/Makefile.sol2-64 b/mdk-stage1/ppp/svr4/Makefile.sol2-64
deleted file mode 100644
index 80c6b185e..000000000
--- a/mdk-stage1/ppp/svr4/Makefile.sol2-64
+++ /dev/null
@@ -1,85 +0,0 @@
-#
-# Makefile for 64-bit STREAMS modules for Solaris 2.
-#
-# $Id$
-#
-
-include Makedefs.sol2
-
-# Sun's cc flag for LP64 compilation / linkage
-COPTS += -xchip=ultra -xarch=v9 -Wc,-xcode=abs32 -Wc,-Qiselect-regsym=0 -xO3 -xspace -W0,-Lt
-
-# subdirectory where 64-bit objects / binaries will be placed
-LP64DIR = sparcv9
-
-# Name of legacy Makefile (for 32-bit binaries)
-STD_MAKE = Makefile.sol2
-
-COMP_OBJS = $(LP64DIR)/ppp_comp.o $(LP64DIR)/bsd-comp.o \
- $(LP64DIR)/deflate.o $(LP64DIR)/zlib.o $(LP64DIR)/vjcompress.o \
- $(LP64DIR)/ppp_comp_mod.o
-
-all: std_objs $(LP64DIR) ppp ppp_ahdl ppp_comp
-
-std_objs:
- $(MAKE) -f $(STD_MAKE) all
-
-ppp: $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
- ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
- chmod +x $(LP64DIR)/$@
-
-ppp_ahdl: $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
- ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
- chmod +x $(LP64DIR)/$@
-
-ppp_comp: $(COMP_OBJS)
- ld -r -o $(LP64DIR)/$@ $(COMP_OBJS)
- chmod +x $(LP64DIR)/$@
-
-$(LP64DIR)/bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp.o: ../modules/ppp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_mod.o: ppp_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_ahdlc.o: ../modules/ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_comp.o: ../modules/ppp_comp.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/ppp_comp_mod.o: ppp_comp_mod.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $? -o $@
-$(LP64DIR)/zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $? -o $@
-
-$(LP64DIR):
- mkdir -m 755 -p $@
-
-install:
- cp ppp ppp.conf /kernel/drv
- cp ppp_comp ppp_ahdl /kernel/strmod
- cp $(LP64DIR)/ppp /kernel/drv/$(LP64DIR)
- cp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl /kernel/strmod/$(LP64DIR)
- if grep clone:ppp /etc/minor_perm; then :; else \
- echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
- /usr/sbin/rem_drv ppp 2>/dev/null || true
- /usr/sbin/add_drv ppp
-
-SRCS = ../modules/ppp.c ppp_mod.c ../modules/ppp_ahdlc.c ppp_ahdlc_mod.c \
- ../modules/ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
- ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
-
-lint:
- $(LINT64) $(SRCS)
-
-lint-32:
- $(LINT32) $(SRCS)
-
-clean:
- $(MAKE) -f $(STD_MAKE) clean
- rm -f $(LP64DIR)/ppp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl $(LP64DIR)/*.o $(LP64DIR)/*~ $(LP64DIR)/core
diff --git a/mdk-stage1/ppp/svr4/Makefile.svr4 b/mdk-stage1/ppp/svr4/Makefile.svr4
deleted file mode 100644
index 252c52428..000000000
--- a/mdk-stage1/ppp/svr4/Makefile.svr4
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# Makefile for STREAMS modules for SVR4.
-#
-# $Id$
-#
-
-COPTS = -O
-
-CFLAGS= -D_KERNEL -DSVR4 -DLACHTCP -I../include $(COPTS)
-
-all: ppp ppp_ahdl ppp_comp
-
-ppp: ppp.o
- ld -r -o $@ ppp.o
-
-ppp_ahdl: ppp_ahdlc.o
- ld -r -o $@ ppp_ahdlc.o
-
-ppp_comp: ppp_comp.o bsd-comp.o vjcompress.o deflate.o zlib.o
- ld -r -o $@ ppp_comp.o bsd-comp.o vjcompress.o deflate.o zlib.o
-
-bsd-comp.o: ../modules/bsd-comp.c
- $(CC) $(CFLAGS) -c $?
-deflate.o: ../modules/deflate.c
- $(CC) $(CFLAGS) -c $?
-ppp.o: ../modules/ppp.c
- $(CC) $(CFLAGS) -c $?
-ppp_ahdlc.o: ../modules/ppp_ahdlc.c
- $(CC) $(CFLAGS) -c $?
-ppp_comp.o: ../modules/ppp_comp.c
- $(CC) $(CFLAGS) -c $?
-vjcompress.o: ../modules/vjcompress.c
- $(CC) $(CFLAGS) -c $?
-zlib.o: ../common/zlib.c
- $(CC) $(CFLAGS) -c $?
-
-install: all
- cp ppp Driver.o
- cp ppp.Master Master
- cp ppp.System System
- cp ppp.Node Node
- /etc/conf/bin/idinstall -d ppp
- /etc/conf/bin/idinstall -a ppp
- cp ppp_comp Driver.o
- cp ppp_comp.Master Master
- cp ppp_comp.System System
- /etc/conf/bin/idinstall -d ppp_comp
- /etc/conf/bin/idinstall -a ppp_comp
- cp ppp_ahdl Driver.o
- cp ppp_ahdl.Master Master
- cp ppp_ahdl.System System
- /etc/conf/bin/idinstall -d ppp_ahdl
- /etc/conf/bin/idinstall -a ppp_ahdl
- @echo
- @echo 'NOTE: You must rebuild your kernel to incorporate the driver.'
- @echo '(use /etc/conf/bin/idbuild)'
- @echo
-
-clean:
- rm -f ppp ppp_comp ppp_ahdl *.o *~ core
diff --git a/mdk-stage1/ppp/svr4/Makefile.top b/mdk-stage1/ppp/svr4/Makefile.top
deleted file mode 100644
index 253e48acb..000000000
--- a/mdk-stage1/ppp/svr4/Makefile.top
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# ppp top level makefile for SVR4 and Solaris 2
-#
-# $Id$
-#
-
-include svr4/Makedefs
-
-all:
- cd chat; $(MAKE) all
- cd pppd; $(MAKE) all
- cd pppstats; $(MAKE) all
- cd pppdump; $(MAKE) all
- cd svr4; $(MAKE) all
-
-install: $(BINDIR) $(MANDIR)/man8 install-progs install-etcppp
-
-install-progs:
- cd chat; $(MAKE) install
- cd pppd; $(MAKE) install
- cd pppstats; $(MAKE) install
- cd pppdump; $(MAKE) install
- cd svr4; $(MAKE) install
-
-install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
- $(ETCDIR)/chap-secrets
-
-$(ETCDIR)/options:
- cp etc.ppp/options $@
- chmod go-w $@
-$(ETCDIR)/pap-secrets:
- $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/pap-secrets
-$(ETCDIR)/chap-secrets:
- $(INSTALL) -f $(ETCDIR) -m 600 etc.ppp/chap-secrets
-
-$(BINDIR):
- mkdir -m 755 -p $@
-$(MANDIR)/man8:
- mkdir -m 755 -p $@
-$(ETCDIR):
- mkdir -m 755 -p $@
-
-clean:
- rm -f *~
- cd chat; $(MAKE) clean
- cd pppd; $(MAKE) clean
- cd pppstats; $(MAKE) clean
- cd pppdump; $(MAKE) clean
- cd svr4; $(MAKE) clean
-
diff --git a/mdk-stage1/ppp/svr4/ppp.Master b/mdk-stage1/ppp/svr4/ppp.Master
deleted file mode 100644
index 346db035b..000000000
--- a/mdk-stage1/ppp/svr4/ppp.Master
+++ /dev/null
@@ -1 +0,0 @@
-ppp - Sciof ppp 0 0 1 128 -1
diff --git a/mdk-stage1/ppp/svr4/ppp.Node b/mdk-stage1/ppp/svr4/ppp.Node
deleted file mode 100644
index 7767ade71..000000000
--- a/mdk-stage1/ppp/svr4/ppp.Node
+++ /dev/null
@@ -1 +0,0 @@
-clone ppp c ppp
diff --git a/mdk-stage1/ppp/svr4/ppp.System b/mdk-stage1/ppp/svr4/ppp.System
deleted file mode 100644
index e60c0eec3..000000000
--- a/mdk-stage1/ppp/svr4/ppp.System
+++ /dev/null
@@ -1 +0,0 @@
-ppp Y 1 0 0 0 0 0 0 0
diff --git a/mdk-stage1/ppp/svr4/ppp.conf b/mdk-stage1/ppp/svr4/ppp.conf
deleted file mode 100644
index e443a7aac..000000000
--- a/mdk-stage1/ppp/svr4/ppp.conf
+++ /dev/null
@@ -1 +0,0 @@
-name="ppp" parent="pseudo" instance=0;
diff --git a/mdk-stage1/ppp/svr4/ppp_ahdl.Master b/mdk-stage1/ppp/svr4/ppp_ahdl.Master
deleted file mode 100644
index 4fde52596..000000000
--- a/mdk-stage1/ppp/svr4/ppp_ahdl.Master
+++ /dev/null
@@ -1 +0,0 @@
-ppp_ahdl - iSf phdl 0 0 1 1 -1
diff --git a/mdk-stage1/ppp/svr4/ppp_ahdl.System b/mdk-stage1/ppp/svr4/ppp_ahdl.System
deleted file mode 100644
index f41a500f4..000000000
--- a/mdk-stage1/ppp/svr4/ppp_ahdl.System
+++ /dev/null
@@ -1 +0,0 @@
-ppp_ahdl Y 1 0 0 0 0 0 0 0
diff --git a/mdk-stage1/ppp/svr4/ppp_ahdlc_mod.c b/mdk-stage1/ppp/svr4/ppp_ahdlc_mod.c
deleted file mode 100644
index f81be8abb..000000000
--- a/mdk-stage1/ppp/svr4/ppp_ahdlc_mod.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-
-extern struct streamtab ppp_ahdlcinfo;
-
-static struct fmodsw fsw = {
- "ppp_ahdl",
- &ppp_ahdlcinfo,
- D_NEW | D_MP | D_MTQPAIR
-};
-
-extern struct mod_ops mod_strmodops;
-
-static struct modlstrmod modlstrmod = {
- &mod_strmodops,
- "PPP async HDLC module",
- &fsw
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modlstrmod,
- NULL
-};
-
-/*
- * Entry points for modloading.
- */
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
diff --git a/mdk-stage1/ppp/svr4/ppp_comp.Master b/mdk-stage1/ppp/svr4/ppp_comp.Master
deleted file mode 100644
index 78019064e..000000000
--- a/mdk-stage1/ppp/svr4/ppp_comp.Master
+++ /dev/null
@@ -1 +0,0 @@
-ppp_comp - iSf pcmp 0 0 1 1 -1
diff --git a/mdk-stage1/ppp/svr4/ppp_comp.System b/mdk-stage1/ppp/svr4/ppp_comp.System
deleted file mode 100644
index e69d4a1a3..000000000
--- a/mdk-stage1/ppp/svr4/ppp_comp.System
+++ /dev/null
@@ -1 +0,0 @@
-ppp_comp Y 1 0 0 0 0 0 0 0
diff --git a/mdk-stage1/ppp/svr4/ppp_comp_mod.c b/mdk-stage1/ppp/svr4/ppp_comp_mod.c
deleted file mode 100644
index 83ff8e252..000000000
--- a/mdk-stage1/ppp/svr4/ppp_comp_mod.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * ppp_comp_mod.c - modload support for PPP compression STREAMS module.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2.
- */
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-
-extern struct streamtab ppp_compinfo;
-
-static struct fmodsw fsw = {
- "ppp_comp",
- &ppp_compinfo,
- D_NEW | D_MP | D_MTQPAIR
-};
-
-extern struct mod_ops mod_strmodops;
-
-static struct modlstrmod modlstrmod = {
- &mod_strmodops,
- "PPP compression module",
- &fsw
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modlstrmod,
- NULL
-};
-
-/*
- * Entry points for modloading.
- */
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
diff --git a/mdk-stage1/ppp/svr4/ppp_mod.c b/mdk-stage1/ppp/svr4/ppp_mod.c
deleted file mode 100644
index a4b1538a5..000000000
--- a/mdk-stage1/ppp/svr4/ppp_mod.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * ppp_mod.c - modload support for PPP pseudo-device driver.
- *
- * Copyright (c) 1994 The Australian National University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, provided that the above copyright
- * notice appears in all copies. This software is provided without any
- * warranty, express or implied. The Australian National University
- * makes no representations about the suitability of this software for
- * any purpose.
- *
- * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY
- * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
- * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY
- * OF SUCH DAMAGE.
- *
- * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO
- * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
- * OR MODIFICATIONS.
- *
- * $Id$
- */
-
-/*
- * This file is used under Solaris 2.
- */
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/stat.h>
-#include <sys/conf.h>
-#include <sys/modctl.h>
-#include <sys/sunddi.h>
-#include <sys/ksynch.h>
-
-#ifdef __STDC__
-#define __P(x) x
-#else
-#define __P(x) ()
-#endif
-
-static int ppp_identify __P((dev_info_t *));
-static int ppp_attach __P((dev_info_t *, ddi_attach_cmd_t));
-static int ppp_detach __P((dev_info_t *, ddi_detach_cmd_t));
-static int ppp_devinfo __P((dev_info_t *, ddi_info_cmd_t, void *, void **));
-
-extern struct streamtab pppinfo;
-extern krwlock_t ppp_lower_lock;
-
-static dev_info_t *ppp_dip;
-
-static struct cb_ops cb_ppp_ops = {
- nulldev, nulldev, nodev, nodev, /* cb_open, ... */
- nodev, nodev, nodev, nodev, /* cb_dump, ... */
- nodev, nodev, nodev, nochpoll, /* cb_devmap, ... */
- ddi_prop_op, /* cb_prop_op */
- &pppinfo, /* cb_stream */
- D_NEW|D_MP|D_MTQPAIR|D_MTOUTPERIM|D_MTOCEXCL /* cb_flag */
-};
-
-static struct dev_ops ppp_ops = {
- DEVO_REV, /* devo_rev */
- 0, /* devo_refcnt */
- ppp_devinfo, /* devo_getinfo */
- ppp_identify, /* devo_identify */
- nulldev, /* devo_probe */
- ppp_attach, /* devo_attach */
- ppp_detach, /* devo_detach */
- nodev, /* devo_reset */
- &cb_ppp_ops, /* devo_cb_ops */
- NULL /* devo_bus_ops */
-};
-
-/*
- * Module linkage information
- */
-
-static struct modldrv modldrv = {
- &mod_driverops, /* says this is a pseudo driver */
- "PPP-2.3 multiplexing driver",
- &ppp_ops /* driver ops */
-};
-
-static struct modlinkage modlinkage = {
- MODREV_1,
- (void *) &modldrv,
- NULL
-};
-
-int
-_init(void)
-{
- return mod_install(&modlinkage);
-}
-
-int
-_fini(void)
-{
- return mod_remove(&modlinkage);
-}
-
-int
-_info(mip)
- struct modinfo *mip;
-{
- return mod_info(&modlinkage, mip);
-}
-
-static int
-ppp_identify(dip)
- dev_info_t *dip;
-{
- return strcmp(ddi_get_name(dip), "ppp") == 0? DDI_IDENTIFIED:
- DDI_NOT_IDENTIFIED;
-}
-
-static int
-ppp_attach(dip, cmd)
- dev_info_t *dip;
- ddi_attach_cmd_t cmd;
-{
-
- if (cmd != DDI_ATTACH)
- return DDI_FAILURE;
- if (ddi_create_minor_node(dip, "ppp", S_IFCHR, 0, DDI_PSEUDO, CLONE_DEV)
- == DDI_FAILURE) {
- ddi_remove_minor_node(dip, NULL);
- return DDI_FAILURE;
- }
- rw_init(&ppp_lower_lock, NULL, RW_DRIVER, NULL);
- return DDI_SUCCESS;
-}
-
-static int
-ppp_detach(dip, cmd)
- dev_info_t *dip;
- ddi_detach_cmd_t cmd;
-{
- rw_destroy(&ppp_lower_lock);
- ddi_remove_minor_node(dip, NULL);
- return DDI_SUCCESS;
-}
-
-static int
-ppp_devinfo(dip, cmd, arg, result)
- dev_info_t *dip;
- ddi_info_cmd_t cmd;
- void *arg;
- void **result;
-{
- int error;
-
- error = DDI_SUCCESS;
- switch (cmd) {
- case DDI_INFO_DEVT2DEVINFO:
- if (ppp_dip == NULL)
- error = DDI_FAILURE;
- else
- *result = (void *) ppp_dip;
- break;
- case DDI_INFO_DEVT2INSTANCE:
- *result = NULL;
- break;
- default:
- error = DDI_FAILURE;
- }
- return error;
-}
diff --git a/mdk-stage1/probing.c b/mdk-stage1/probing.c
deleted file mode 100644
index 88c634cbc..000000000
--- a/mdk-stage1/probing.c
+++ /dev/null
@@ -1,899 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-
-/*
- * This contains stuff related to probing:
- * (1) any (actually only SCSI, NET, CPQ, USB Controllers) devices (autoprobe for PCI and USB)
- * (2) IDE media
- * (3) SCSI media
- * (4) ETH devices
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/ioctl.h>
-#include <sys/mount.h>
-#include <pci/pci.h>
-#include "stage1.h"
-
-#include "log.h"
-#include "frontend.h"
-#include "modules.h"
-#include "pci-resource/pci-ids.h"
-#ifdef ENABLE_USB
-#include "usb-resource/usb-ids.h"
-#endif
-
-#include "probing.h"
-
-
-struct media_info {
- char * name;
- char * model;
- enum media_type type;
-};
-
-
-static void warning_insmod_failed(enum insmod_return r)
-{
- if (IS_AUTOMATIC && r == INSMOD_FAILED_FILE_NOT_FOUND)
- return;
- if (r != INSMOD_OK) {
- if (r == INSMOD_FAILED_FILE_NOT_FOUND)
- stg1_error_message("This floppy doesn't contain the driver.");
- else
- stg1_error_message("Warning, installation of driver failed. (please include msg from <Alt-F3> for bugreports)");
- }
-}
-
-#ifndef DISABLE_NETWORK
-struct net_description_elem
-{
- char * intf_name;
- char * intf_description;
-};
-static struct net_description_elem net_descriptions[50];
-static int net_descr_number = 0;
-static char * intf_descr_for_discover = NULL;
-static char * net_intf_too_early_name[50]; /* for modules providing more than one net intf */
-static int net_intf_too_early_number = 0;
-static int net_intf_too_early_ptr = 0;
-
-void prepare_intf_descr(const char * intf_descr)
-{
- intf_descr_for_discover = strdup(intf_descr);
-}
-
-void net_discovered_interface(char * intf_name)
-{
- if (!intf_descr_for_discover) {
- net_intf_too_early_name[net_intf_too_early_number++] = strdup(intf_name);
- return;
- }
- if (!intf_name) {
- if (net_intf_too_early_ptr >= net_intf_too_early_number) {
- log_message("NET: was expecting another network interface (broken net module?)");
- return;
- }
- net_descriptions[net_descr_number].intf_name = net_intf_too_early_name[net_intf_too_early_ptr++];
- }
- else
- net_descriptions[net_descr_number].intf_name = strdup(intf_name);
- net_descriptions[net_descr_number].intf_description = strdup(intf_descr_for_discover);
- intf_descr_for_discover = NULL;
- net_descr_number++;
-}
-
-char * get_net_intf_description(char * intf_name)
-{
- int i;
- for (i = 0; i < net_descr_number ; i++)
- if (!strcmp(net_descriptions[i].intf_name, intf_name))
- return net_descriptions[i].intf_description;
- return strdup("unknown");
-}
-#endif
-
-struct pcitable_entry detected_devices[50];
-int detected_devices_len = 0;
-
-/* FIXME: factorize with probe_that_type() */
-
-static void add_detected_device(unsigned short vendor, unsigned short device, const char *name, const char *module)
-{
- struct pcitable_entry *dev = &detected_devices[detected_devices_len++];
- dev->vendor = vendor;
- dev->device = device;
- strncpy(dev->module, module, 19);
- dev->module[19] = '\0';
- strncpy(dev->description, name, 99);
- dev->description[99] = '\0';
- log_message("detected device (%x, %x, %s, %s)", vendor, device, name, module);
-}
-
-static int check_device_full(struct pci_module_map_full * pcidb_full, unsigned int len_full,
- unsigned short vendor, unsigned short device,
- unsigned short subvendor, unsigned short subdevice)
-{
- int i;
- for (i = 0; i < len_full; i++)
- if (pcidb_full[i].vendor == vendor && pcidb_full[i].device == device) {
- if (pcidb_full[i].subvendor == subvendor && pcidb_full[i].subdevice == subdevice) {
- add_detected_device(pcidb_full[i].vendor, pcidb_full[i].device,
- pcidb_full[i].name, pcidb_full[i].module);
- return 1;
- }
- }
- return 0;
-}
-
-static int check_device(struct pci_module_map * pcidb, unsigned int len,
- unsigned short vendor, unsigned short device) {
- int i;
- for (i = 0; i < len; i++)
- if (pcidb[i].vendor == vendor && pcidb[i].device == device) {
- add_detected_device(pcidb[i].vendor, pcidb[i].device,
- pcidb[i].name, pcidb[i].module);
- return 1;
- }
- return 0;
-}
-
-void probing_detect_devices()
-{
- FILE * f = NULL;
- char buf[200];
- static int already_detected_devices = 0;
-
- if (already_detected_devices)
- return;
-
- if (!(f = fopen("/proc/bus/pci/devices", "rb"))) {
- log_message("PCI: could not open proc file");
- return;
- }
-
- while (1) {
- unsigned int i;
- unsigned short vendor, device, subvendor, subdevice, devbusfn;
- if (!fgets(buf, sizeof(buf), f)) break;
- sscanf(buf, "%hx %x", &devbusfn, &i);
- device = i;
- vendor = i >> 16;
- {
- int bus = devbusfn >> 8;
- int device_p = (devbusfn & 0xff) >> 3;
- int function = (devbusfn & 0xff) & 0x07;
- char file[100];
- int sf;
- sprintf(file, "/proc/bus/pci/%02x/%02x.%d", bus, device_p, function);
- if ((sf = open(file, O_RDONLY)) == -1) {
- log_message("PCI: could not open file for full probe (%s)", file);
- continue;
- }
- if (read(sf, buf, 48) == -1) {
- log_message("PCI: could not read 48 bytes from %s", file);
- close(sf);
- continue;
- }
- close(sf);
- memcpy(&subvendor, buf+44, 2);
- memcpy(&subdevice, buf+46, 2);
- }
-
-
-#ifndef DISABLE_PCIADAPTERS
-#ifndef DISABLE_MEDIAS
- if (check_device_full(medias_pci_ids_full, medias_num_ids_full, vendor, device, subvendor, subdevice))
- continue;
- if (check_device(medias_pci_ids, medias_num_ids, vendor, device))
- continue;
-#endif
-
-#ifndef DISABLE_NETWORK
- if (check_device_full(network_pci_ids_full, network_num_ids_full, vendor, device, subvendor, subdevice))
- continue;
- if (check_device(network_pci_ids, network_num_ids, vendor, device))
- continue;
-#endif
-#endif
-
-#ifdef ENABLE_USB
- if (check_device(usb_pci_ids, usb_num_ids, vendor, device))
- continue;
-#endif
-
- /* device can't be found in built-in pcitables, but keep it */
- add_detected_device(vendor, device, "", "");
- }
-
- fclose(f);
- already_detected_devices = 1;
-}
-
-void discovered_device(enum driver_type type,
- unsigned short vendor, unsigned short device, unsigned short subvendor, unsigned short subdevice,
- const char * description, const char * driver)
-{
- enum insmod_return failed = INSMOD_FAILED;
- log_message("PCI: device %04x %04x %04x %04x is \"%s\", driver is %s", vendor, device, subvendor, subdevice, description, driver);
-#ifndef DISABLE_MEDIAS
- if (type == SCSI_ADAPTERS) {
- wait_message("Loading driver for SCSI adapter:\n \n%s", description);
- failed = my_insmod(driver, SCSI_ADAPTERS, NULL, 1);
- remove_wait_message();
- warning_insmod_failed(failed);
- }
-#endif
-#ifndef DISABLE_NETWORK
- if (type == NETWORK_DEVICES) {
- wait_message("Loading driver for network device:\n \n%s", description);
- prepare_intf_descr(description);
- failed = my_insmod(driver, NETWORK_DEVICES, NULL, 1);
- warning_insmod_failed(failed);
- remove_wait_message();
- if (intf_descr_for_discover) /* for modules providing more than one net intf */
- net_discovered_interface(NULL);
- }
-#endif
-#ifdef ENABLE_USB
- if (type == USB_CONTROLLERS)
- /* we can't allow additional modules floppy since we need usbkbd for keystrokes of usb keyboards */
- failed = my_insmod(driver, USB_CONTROLLERS, NULL, 0);
-#endif
-}
-
-#ifdef ENABLE_USB
-void probe_that_type(enum driver_type type, enum media_bus bus)
-#else
-void probe_that_type(enum driver_type type, enum media_bus bus __attribute__ ((unused)))
-#endif
-{
- static int already_probed_usb_controllers = 0;
- static int already_loaded_usb_scsi = 0;
-
- /* ---- PCI probe ---------------------------------------------- */
- {
- FILE * f = NULL;
- unsigned int len = 0;
- unsigned int len_full = 0;
- char buf[200];
- struct pci_module_map * pcidb = NULL;
- struct pci_module_map_full * pcidb_full = NULL;
-
- switch (type) {
-#ifndef DISABLE_PCIADAPTERS
-#ifndef DISABLE_MEDIAS
- static int already_probed_scsi_adapters = 0;
- case SCSI_ADAPTERS:
- if (already_probed_scsi_adapters)
- goto end_pci_probe;
- already_probed_scsi_adapters = 1;
- pcidb = medias_pci_ids;
- len = medias_num_ids;
- pcidb_full = medias_pci_ids_full;
- len_full = medias_num_ids_full;
- break;
-#endif
-#ifndef DISABLE_NETWORK
- case NETWORK_DEVICES:
- pcidb = network_pci_ids;
- len = network_num_ids;
- pcidb_full = network_pci_ids_full;
- len_full = network_num_ids_full;
- break;
-#endif
-#endif
-#ifdef ENABLE_USB
- case USB_CONTROLLERS:
- if (already_probed_usb_controllers || IS_NOAUTO)
- goto end_pci_probe;
- already_probed_usb_controllers = 1;
- pcidb = usb_pci_ids;
- len = usb_num_ids;
- break;
-#endif
- default:
- goto end_pci_probe;
- }
-
- if (!(f = fopen("/proc/bus/pci/devices", "rb"))) {
- log_message("PCI: could not open proc file");
- goto end_pci_probe;
- }
-
- while (1) {
- unsigned int i;
- unsigned short vendor, device, subvendor, subdevice, class_, class_prog, devbusfn;
- const char *name, *module;
- enum driver_type type_ = type;
-
- if (!fgets(buf, sizeof(buf), f)) break;
-
- sscanf(buf, "%hx %x", &devbusfn, &i);
- device = i;
- vendor = i >> 16;
-
- {
- int bus = devbusfn >> 8;
- int device_p = (devbusfn & 0xff) >> 3;
- int function = (devbusfn & 0xff) & 0x07;
- char file[100];
- int sf;
- sprintf(file, "/proc/bus/pci/%02x/%02x.%d", bus, device_p, function);
- if ((sf = open(file, O_RDONLY)) == -1) {
- log_message("PCI: could not open file for full probe (%s)", file);
- continue;
- }
- if (read(sf, buf, 48) == -1) {
- log_message("PCI: could not read 48 bytes from %s", file);
- close(sf);
- continue;
- }
- close(sf);
- memcpy(&class_prog, buf+9, 1);
- memcpy(&class_, buf+10, 2);
- memcpy(&subvendor, buf+44, 2);
- memcpy(&subdevice, buf+46, 2);
- }
-
- /* special rules below must be in sync with ldetect/pci.c */
-
- if (class_ == PCI_CLASS_SERIAL_USB) {
- /* taken from kudzu's pci.c */
- module =
- class_prog == 0 ? "usb-uhci" :
- class_prog == 0x10 ? "usb-ohci" :
- class_prog == 0x20 ? "ehci-hcd" : NULL;
- if (module) {
- name = "USB Controller";
- type_ = USB_CONTROLLERS;
- goto found_pci_device;
- }
- }
- if (class_ == PCI_CLASS_SERIAL_FIREWIRE) {
- /* taken from kudzu's pci.c */
- if (class_prog == 0x10) {
- module = strdup("ohci1394");
- name = "Firewire Controller";
- goto found_pci_device;
- }
- }
-
- for (i = 0; i < len_full; i++)
- if (pcidb_full[i].vendor == vendor && pcidb_full[i].device == device) {
- if (pcidb_full[i].subvendor == subvendor && pcidb_full[i].subdevice == subdevice) {
- name = pcidb_full[i].name;
- module = pcidb_full[i].module;
- goto found_pci_device;
- }
- }
-
- for (i = 0; i < len; i++)
- if (pcidb[i].vendor == vendor && pcidb[i].device == device) {
- name = pcidb[i].name;
- module = pcidb[i].module;
- goto found_pci_device;
- }
-
- continue;
-
- found_pci_device:
- discovered_device(type_, vendor, device, subvendor, subdevice, name, module);
- }
- end_pci_probe:;
- if (f)
- fclose(f);
- }
-
-
-#ifdef ENABLE_USB
- /* ---- USB probe ---------------------------------------------- */
- if ((bus == BUS_USB || bus == BUS_ANY) && !(IS_NOAUTO)) {
- static int already_mounted_usbdev = 0;
-
- FILE * f = NULL;
- int len = 0;
- char buf[200];
- struct usb_module_map * usbdb = NULL;
-
- if (!already_probed_usb_controllers) {
- already_probed_usb_controllers = 1;
- probe_that_type(USB_CONTROLLERS, BUS_ANY);
- }
-
- if (!already_mounted_usbdev) {
- already_mounted_usbdev = 1;
- if (mount("none", "/proc/bus/usb", "usbfs", 0, NULL) &&
- mount("none", "/proc/bus/usb", "usbdevfs", 0, NULL)) {
- log_message("USB: couldn't mount /proc/bus/usb");
- goto end_usb_probe;
- }
- wait_message("Detecting USB devices.");
- sleep(4); /* sucking background work */
- my_insmod("usbkbd", ANY_DRIVER_TYPE, NULL, 0);
- my_insmod("keybdev", ANY_DRIVER_TYPE, NULL, 0);
- remove_wait_message();
- }
-
- if (!(f = fopen("/proc/bus/usb/devices", "rb"))) {
- log_message("USB: could not open proc file");
- goto end_usb_probe;
- }
-
- switch (type) {
- case NETWORK_DEVICES:
- usbdb = usb_usb_ids;
- len = usb_usb_num_ids;
- break;
- default:
- goto end_usb_probe;
- }
-
- while (1) {
- int i, vendor, id;
-
- if (!fgets(buf, sizeof(buf), f)) break;
-
- if (sscanf(buf, "P: Vendor=%x ProdID=%x", &vendor, &id) != 2)
- continue;
-
- for (i = 0; i < len; i++) {
- if (usbdb[i].vendor == vendor && usbdb[i].id == id) {
- log_message("USB: device %04x %04x is \"%s\" (%s)", vendor, id, usbdb[i].name, usbdb[i].module);
-#ifndef DISABLE_NETWORK
- if (type == NETWORK_DEVICES) {
- stg1_info_message("About to load driver for usb network device:\n \n%s", usbdb[i].name);
- prepare_intf_descr(usbdb[i].name);
- warning_insmod_failed(my_insmod(usbdb[i].module, NETWORK_DEVICES, NULL, 1));
- if (intf_descr_for_discover) /* for modules providing more than one net intf */
- net_discovered_interface(NULL);
- }
-#endif
-
- }
- }
- }
- end_usb_probe:;
- if (f)
- fclose(f);
- }
-#endif
-
- /* be sure to load usb-storage after SCSI adapters, so that they are in
- same order than reboot, so that naming is the same */
- if (type == SCSI_ADAPTERS && already_probed_usb_controllers && !already_loaded_usb_scsi) {
- already_loaded_usb_scsi = 1;
- /* we can't allow additional modules floppy since we need usbkbd for keystrokes of usb keyboards */
- my_insmod("usb-storage", SCSI_ADAPTERS, NULL, 0);
- if (module_already_present("ieee1394"))
- my_insmod("sbp2", SCSI_ADAPTERS, NULL, 0);
- wait_message("Detecting USB mass-storage devices.");
- sleep(10); /* sucking background work */
- remove_wait_message();
- }
-}
-
-
-static struct media_info * medias = NULL;
-
-static void find_media(enum media_bus bus)
-{
- char b[50];
- char buf[5000];
- struct media_info tmp[50];
- int count = 0;
- int fd;
-
- if (medias)
- free(medias); /* that does not free the strings, by the way */
-
- if (bus == BUS_SCSI || bus == BUS_USB || bus == BUS_ANY) {
- log_message("looking for SCSI adapters");
- probe_that_type(SCSI_ADAPTERS, bus);
- }
- /* ----------------------------------------------- */
- if (bus != BUS_IDE && bus != BUS_ANY)
- goto find_media_after_ide;
- log_message("looking for ide media");
-
- strcpy(b, "/proc/ide/hd");
- for (b[12] = 'a'; b[12] <= 't'; b[12]++) {
- int i;
- char ide_disk[] = "disk";
- char ide_cdrom[] = "cdrom";
- char ide_tape[] = "tape";
- char ide_floppy[] = "floppy";
-
- /* first, test if file exists (will tell if attached medium exists) */
- b[13] = '\0';
- if (access(b, R_OK))
- continue;
-
- tmp[count].name = strdup("hda");
- tmp[count].name[2] = b[12];
-
- /* media type */
- strcpy(b + 13, "/media");
- fd = open(b, O_RDONLY);
- if (fd == -1) {
- log_message("failed to open %s for reading", b);
- continue;
- }
-
- i = read(fd, buf, sizeof(buf));
- if (i == -1) {
- log_message("failed to read %s", b);
- continue;
- }
- buf[i] = '\0';
- close(fd);
-
- if (ptr_begins_static_str(buf, ide_disk))
- tmp[count].type = DISK;
- else if (ptr_begins_static_str(buf, ide_cdrom))
- tmp[count].type = CDROM;
- else if (ptr_begins_static_str(buf, ide_tape))
- tmp[count].type = TAPE;
- else if (ptr_begins_static_str(buf, ide_floppy))
- tmp[count].type = FLOPPY;
- else
- tmp[count].type = UNKNOWN_MEDIA;
-
- /* media model */
- strcpy(b + 13, "/model");
- fd = open(b, O_RDONLY);
- if (fd == -1) {
- log_message("failed to open %s for reading", b);
- continue;
- }
-
- i = read(fd, buf, sizeof(buf));
- if (i <= 0) {
- log_message("failed to read %s", b);
- tmp[count].model = strdup("(none)");
- }
- else {
- buf[i-1] = '\0'; /* eat the \n */
- tmp[count].model = strdup(buf);
- }
- close(fd);
-
- log_message("IDE/%d: %s is a %s", tmp[count].type, tmp[count].name, tmp[count].model);
- count++;
- }
-
- find_media_after_ide:
- /* ----------------------------------------------- */
- if (bus != BUS_SCSI && bus != BUS_USB && bus != BUS_ANY)
- goto find_media_after_scsi;
- log_message("looking for scsi media");
-
- fd = open("/proc/scsi/scsi", O_RDONLY);
- if (fd != -1) {
- FILE * f;
-
- enum { SCSI_TOP, SCSI_HOST, SCSI_VENDOR, SCSI_TYPE } state = SCSI_TOP;
- char * start, * chptr, * next, * end;
- char scsi_disk_count = 'a';
- char scsi_cdrom_count = '0';
- char scsi_tape_count = '0';
-
- char scsi_no_devices[] = "Attached devices: none";
- char scsi_some_devices[] = "Attached devices:";
- char scsi_host[] = "Host: ";
- char scsi_vendor[] = " Vendor: ";
-
- int i = read(fd, &buf, sizeof(buf)-1);
- if (i < 1) {
- close(fd);
- goto end_scsi;
- }
- close(fd);
- buf[i] = '\0';
-
- if (ptr_begins_static_str(buf, scsi_no_devices))
- goto end_scsi;
-
- start = buf;
- while (*start) {
- char tmp_model[50];
- char tmp_name[10];
-
- chptr = start;
- while (*chptr != '\n') chptr++;
- *chptr = '\0';
- next = chptr + 1;
-
- switch (state) {
- case SCSI_TOP:
- if (!ptr_begins_static_str(start, scsi_some_devices))
- goto end_scsi;
- state = SCSI_HOST;
- break;
-
- case SCSI_HOST:
- if (!ptr_begins_static_str(start, scsi_host))
- goto end_scsi;
- state = SCSI_VENDOR;
- break;
-
- case SCSI_VENDOR:
- if (!ptr_begins_static_str(start, scsi_vendor))
- goto end_scsi;
-
- /* (1) Grab Vendor info */
- start += 10;
- end = chptr = strstr(start, "Model:");
- if (!chptr)
- goto end_scsi;
-
- chptr--;
- while (*chptr == ' ')
- chptr--;
- if (*chptr == ':') {
- chptr++;
- *(chptr + 1) = '\0';
- strcpy(tmp_model,"(unknown)");
- } else {
- *(chptr + 1) = '\0';
- strcpy(tmp_model, start);
- }
-
- /* (2) Grab Model info */
- start = end;
- start += 7;
-
- chptr = strstr(start, "Rev:");
- if (!chptr)
- goto end_scsi;
-
- chptr--;
- while (*chptr == ' ') chptr--;
- *(chptr + 1) = '\0';
-
- strcat(tmp_model, " ");
- strcat(tmp_model, start);
-
- tmp[count].model = strdup(tmp_model);
-
- state = SCSI_TYPE;
-
- break;
-
- case SCSI_TYPE:
- if (strncmp(" Type:", start, 7))
- goto end_scsi;
- *tmp_name = '\0';
-
- if (strstr(start, "Direct-Access")) {
- sprintf(tmp_name, "sd%c", scsi_disk_count++);
- tmp[count].type = DISK;
- } else if (strstr(start, "Sequential-Access")) {
- sprintf(tmp_name, "st%c", scsi_tape_count++);
- tmp[count].type = TAPE;
- } else if (strstr(start, "CD-ROM")) {
- sprintf(tmp_name, "sr%c", scsi_cdrom_count++);
- tmp[count].type = CDROM;
- }
-
- if (!(f = fopen("/proc/partitions", "rb")) || !fgets(buf, sizeof(buf), f) || !fgets(buf, sizeof(buf), f)) {
- log_message("Couldn't open /proc/partitions");
- } else {
- while (fgets(buf, sizeof(buf), f)) {
- char name[100];
- int major, minor, blocks;
- memset(name, 0, sizeof(name));
- sscanf(buf, " %d %d %d %s", &major, &minor, &blocks, name);
- if (streq(name, tmp_name) && tmp[count].type == DISK && ((blocks == 1048575) || (blocks == 1440)))
- tmp[count].type = FLOPPY;
- }
- fclose(f);
- }
-
- if (*tmp_name) {
- tmp[count].name = strdup(tmp_name);
- log_message("SCSI/%d: %s is a %s", tmp[count].type, tmp[count].name, tmp[count].model);
- count++;
- }
-
- state = SCSI_HOST;
- }
-
- start = next;
- }
-
- end_scsi:;
- }
-
- /* ----------------------------------------------- */
- log_message("looking for Compaq Smart Array media");
- {
- char * procfiles[] = { "/proc/driver/cpqarray/ida0", "/proc/driver/cciss/cciss0", // 2.4 style
- "/proc/array/ida", "/proc/cciss/cciss", // 2.2 style
- NULL };
- static char cpq_descr[] = "Compaq RAID logical disk";
- char ** procfile = procfiles;
- FILE * f;
- while (procfile && *procfile && (f = fopen(*procfile, "rb"))) {
- while (fgets(buf, sizeof(buf), f)) {
- if (ptr_begins_static_str(buf, "ida/") || ptr_begins_static_str(buf, "cciss/")) {
- char * end = strchr(buf, ':');
- if (!end)
- log_message("Inconsistency in %s, line:\n%s", *procfile, buf);
- else {
- *end = '\0';
- tmp[count].name = strdup(buf);
- tmp[count].type = DISK;
- tmp[count].model = cpq_descr;
- log_message("CPQ: found %s", tmp[count].name);
- count++;
- }
- }
- }
- fclose(f);
- procfile++;
- }
- }
-
- /* ----------------------------------------------- */
- log_message("looking for DAC960");
- {
- FILE * f;
- if ((f = fopen("/tmp/syslog", "rb"))) {
- while (fgets(buf, sizeof(buf), f)) {
- char * start;
- if ((start = strstr(buf, "/dev/rd/"))) {
- char * end = strchr(start, ':');
- if (!end)
- log_message("Inconsistency in syslog, line:\n%s", buf);
- else {
- *end = '\0';
- tmp[count].name = strdup(start+5);
- tmp[count].type = DISK;
- start = end + 2;
- end = strchr(start, ',');
- if (end) {
- *end = '\0';
- tmp[count].model = strdup(start);
- } else
- tmp[count].model = "(unknown)";
- log_message("DAC960: found %s (%s)", tmp[count].name, tmp[count].model);
- count++;
- }
- }
- }
- fclose(f);
- }
- }
- find_media_after_scsi:
-
- /* ----------------------------------------------- */
- tmp[count].name = NULL;
- count++;
-
- medias = memdup(tmp, sizeof(struct media_info) * count);
-}
-
-
-/* Finds by media */
-void get_medias(enum media_type media, char *** names, char *** models, enum media_bus bus)
-{
- struct media_info * m;
- char * tmp_names[50];
- char * tmp_models[50];
- int count;
-
- find_media(bus);
-
- m = medias;
-
- count = 0;
- while (m && m->name) {
- if (m->type == media) {
- tmp_names[count] = strdup(m->name);
- tmp_models[count++] = strdup(m->model);
- }
- m++;
- }
- tmp_names[count] = NULL;
- tmp_models[count++] = NULL;
-
- *names = memdup(tmp_names, sizeof(char *) * count);
- *models = memdup(tmp_models, sizeof(char *) * count);
-}
-
-
-#ifndef DISABLE_NETWORK
-static int is_net_interface_blacklisted(char *intf)
-{
- /* see detect_devicess::is_lan_interface() */
- char * blacklist[] = { "lo", "ippp", "isdn", "plip", "ppp", "wifi", "sit", NULL };
- char ** ptr = blacklist;
-
- while (ptr && *ptr) {
- if (!strncmp(intf, *ptr, strlen(*ptr)))
- return 1;
- ptr++;
- }
-
- return 0;
-}
-
-char ** get_net_devices(void)
-{
- char * tmp[50];
- static int already_probed = 0;
- FILE * f;
- int i = 0;
-
- if (!already_probed) {
- already_probed = 1; /* cut off loop brought by: probe_that_type => my_insmod => get_net_devices */
- probe_that_type(NETWORK_DEVICES, BUS_ANY);
- }
-
- /* use /proc/net/dev since SIOCGIFCONF doesn't work with some drivers (rt2500) */
- f = fopen("/proc/net/dev", "rb");
- if (f) {
- char line[128];
-
- /* skip the two first lines */
- fgets(line, sizeof(line), f);
- fgets(line, sizeof(line), f);
-
- while (1) {
- char *start, *end;
- if (!fgets(line, sizeof(line), f))
- break;
- start = line;
- while (*start == ' ')
- start++;
- end = strchr(start, ':');
- if (end)
- end[0] = '\0';
- if (!is_net_interface_blacklisted(start)) {
- log_message("found net interface %s", start);
- tmp[i++] = strdup(start);
- } else {
- log_message("found net interface %s, but blacklisted", start);
- }
- }
-
- fclose(f);
- } else {
- log_message("net: could not open devices file");
- }
-
- tmp[i++] = NULL;
-
- return memdup(tmp, sizeof(char *) * i);
-
-}
-#endif /* DISABLE_NETWORK */
diff --git a/mdk-stage1/probing.h b/mdk-stage1/probing.h
deleted file mode 100644
index 6efa7b464..000000000
--- a/mdk-stage1/probing.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _PROBING_H_
-#define _PROBING_H_
-
-enum media_type { CDROM, DISK, FLOPPY, TAPE, UNKNOWN_MEDIA };
-
-enum driver_type { SCSI_ADAPTERS, NETWORK_DEVICES, USB_CONTROLLERS, ANY_DRIVER_TYPE };
-
-enum media_bus { BUS_IDE, BUS_SCSI, BUS_USB, BUS_ANY };
-
-void get_medias(enum media_type media, char *** names, char *** models, enum media_bus bus);
-char ** get_net_devices(void);
-void net_discovered_interface(char * intf_name);
-char * get_net_intf_description(char * intf_name);
-void prepare_intf_descr(const char * intf_descr);
-void probe_that_type(enum driver_type type, enum media_bus bus);
-
-struct pcitable_entry {
- /* some bits stolen from pci-resource/pci-ids.h
- * FIXME: split pci-ids.h into pci-ids.c and pci-ids.h so that the header can be re-used
- */
- unsigned short vendor; /* PCI vendor id */
- unsigned short device; /* PCI device id */
- char module[20]; /* module to load */
- char description[100]; /* PCI human readable description */
-};
-extern struct pcitable_entry detected_devices[50];
-extern int detected_devices_len;
-void probing_detect_devices();
-
-#endif
diff --git a/mdk-stage1/rescue-gui.c b/mdk-stage1/rescue-gui.c
deleted file mode 100644
index be63229e8..000000000
--- a/mdk-stage1/rescue-gui.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2001 Mandrakesoft
- *
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdlib.h>
-#define _USE_BSD
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <sys/mount.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/unistd.h>
-#include <sys/select.h>
-
-#include "config-stage1.h"
-#include "frontend.h"
-#include "tools.h"
-
-#if defined(__i386__) || defined(__x86_64__)
-#define ENABLE_RESCUE_MS_BOOT 1
-#endif
-
-char * env[] = {
- "PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sbin:/mnt/usr/sbin:/mnt/bin:/mnt/usr/bin",
- "LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/lib:/mnt/usr/lib:/usr/X11R6/lib:/mnt/usr/X11R6/lib"
-#if defined(__x86_64__) || defined(__ppc64__)
- ":/lib64:/usr/lib64:/usr/X11R6/lib64:/mnt/lib64:/mnt/usr/lib64:/mnt/usr/X11R6/lib64"
-#endif
- ,
- "HOME=/",
- "TERM=linux",
- "TERMINFO=/etc/terminfo",
- NULL
-};
-
-/* pause() already exists and causes the invoking process to sleep
- until a signal is received */
-static void PAUSE(void) {
- unsigned char t;
- fflush(stdout);
- read(0, &t, 1);
-}
-
-
-/* ------ UUURGH this is duplicated from `init.c', don't edit here........ */
-static inline _syscall3(int, reboot, int, magic, int, magic2, int, flag);
-#define LOOP_CLR_FD 0x4C01
-void del_loop(char *device)
-{
- int fd;
- if ((fd = open(device, O_RDONLY, 0)) < 0) {
- printf("del_loop open failed\n");
- return;
- }
-
- if (ioctl(fd, LOOP_CLR_FD, 0) < 0) {
- printf("del_loop ioctl failed");
- return;
- }
-
- close(fd);
-}
-struct filesystem { char * dev; char * name; char * fs; int mounted; };
-void unmount_filesystems(void)
-{
- int fd, size;
- char buf[65535]; /* this should be big enough */
- char *p;
- struct filesystem fs[500];
- int numfs = 0;
- int i, nb;
-
- printf("unmounting filesystems...\n");
-
- fd = open("/proc/mounts", O_RDONLY, 0);
- if (fd < 1) {
- printf("ERROR: failed to open /proc/mounts");
- sleep(2);
- return;
- }
-
- size = read(fd, buf, sizeof(buf) - 1);
- buf[size] = '\0';
-
- close(fd);
-
- p = buf;
- while (*p) {
- fs[numfs].mounted = 1;
- fs[numfs].dev = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- fs[numfs].name = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- fs[numfs].fs = p;
- while (*p != ' ') p++;
- *p++ = '\0';
- while (*p != '\n') p++;
- p++;
- if (strcmp(fs[numfs].name, "/") != 0) numfs++; /* skip if root, no need to take initrd root in account */
- }
-
- /* Pixel's ultra-optimized sorting algorithm:
- multiple passes trying to umount everything until nothing moves
- anymore (a.k.a holy shotgun method) */
- do {
- nb = 0;
- for (i = 0; i < numfs; i++) {
- /*printf("trying with %s\n", fs[i].name);*/
- if (fs[i].mounted && umount(fs[i].name) == 0) {
- if (strncmp(fs[i].dev + sizeof("/dev/") - 1, "loop",
- sizeof("loop") - 1) == 0)
- del_loop(fs[i].dev);
-
- printf("\t%s\n", fs[i].name);
- fs[i].mounted = 0;
- nb++;
- }
- }
- } while (nb);
-
- for (i = nb = 0; i < numfs; i++)
- if (fs[i].mounted) {
- printf("\t%s umount failed\n", fs[i].name);
- if (strcmp(fs[i].fs, "ext2") == 0) nb++; /* don't count not-ext2 umount failed */
- }
-
- if (nb) {
- printf("failed to umount some filesystems\n");
- while (1);
- }
-}
-/* ------ UUURGH -- end */
-
-
-/* ------ UUURGH -- this is dirrrrrttttyyyyyy */
-void probe_that_type(void) {}
-
-
-int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
-{
- enum return_type results;
-
- char install_bootloader[] = "Re-install Boot Loader";
-#if ENABLE_RESCUE_MS_BOOT
- char restore_ms_boot[] = "Restore Windows Boot Loader";
-#endif
- char mount_parts[] = "Mount your partitions under /mnt";
- char go_to_console[] = "Go to console";
- char reboot_[] = "Reboot";
- char doc[] = "Doc: what's addressed by this Rescue?";
-
- char * actions[] = { install_bootloader,
-#if ENABLE_RESCUE_MS_BOOT
- restore_ms_boot,
-#endif
- mount_parts, go_to_console, reboot_, doc, NULL };
- char * choice;
-
- init_frontend("Welcome to " DISTRIB_NAME " Rescue (" DISTRIB_VERSION ") " __DATE__ " " __TIME__);
-
- do {
- int pid;
- char * binary = NULL;
-
- choice = "";
- results = ask_from_list("Please choose the desired action.", actions, &choice);
-
- if (ptr_begins_static_str(choice, install_bootloader)) {
- binary = "/usr/bin/install_bootloader";
- }
-#if ENABLE_RESCUE_MS_BOOT
- if (ptr_begins_static_str(choice, restore_ms_boot)) {
- binary = "/usr/bin/restore_ms_boot";
- }
-#endif
- if (ptr_begins_static_str(choice, mount_parts)) {
- binary = "/usr/bin/guessmounts";
- }
- if (ptr_begins_static_str(choice, reboot_)) {
- finish_frontend();
- sync(); sync();
- sleep(2);
- unmount_filesystems();
- sync(); sync();
- printf("rebooting system\n");
- sleep(2);
- reboot(0xfee1dead, 672274793, 0x01234567);
- }
- if (ptr_begins_static_str(choice, doc)) {
- binary = "/usr/bin/rescue-doc";
- }
-
- if (binary) {
- int wait_status;
- suspend_to_console();
- if (!(pid = fork())) {
-
- char * child_argv[2];
- child_argv[0] = binary;
- child_argv[1] = NULL;
-
- execve(child_argv[0], child_argv, env);
- printf("Can't execute binary (%s)\n<press Enter>\n", binary);
- PAUSE();
-
- return 33;
- }
- while (wait4(-1, &wait_status, 0, NULL) != pid) {};
- printf("<press Enter to return to Rescue GUI>");
- PAUSE();
- resume_from_suspend();
- if (!WIFEXITED(wait_status) || WEXITSTATUS(wait_status) != 0) {
- error_message("Program exited abnormally (return code %d).", WEXITSTATUS(wait_status));
- if (WIFSIGNALED(wait_status))
- error_message("(received signal %d)", WTERMSIG(wait_status));
- }
- }
-
- } while (results == RETURN_OK && !ptr_begins_static_str(choice, go_to_console));
-
- finish_frontend();
- printf("Bye.\n");
-
- return 0;
-}
diff --git a/mdk-stage1/rp-pppoe/.cvsignore b/mdk-stage1/rp-pppoe/.cvsignore
deleted file mode 100644
index 1f345b56b..000000000
--- a/mdk-stage1/rp-pppoe/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-pppoe-bin
diff --git a/mdk-stage1/rp-pppoe/README b/mdk-stage1/rp-pppoe/README
deleted file mode 100644
index 269fc16be..000000000
--- a/mdk-stage1/rp-pppoe/README
+++ /dev/null
@@ -1,87 +0,0 @@
-pppoe: a PPP-over-Ethernet redirector for pppd
-Copyright (C) 2001 Roaring Penguin Software Inc.
-
-Much inspiration from an earlier client by Luke Stras.
-
-The MSS clamping was inspired by mssclampfw by Marc Boucher <marc@mbsi.ca>
-with acknowledgements to Rebel.com (http://www.rebel.com). However, the
-actual MSS clamping code is original and is licensed under the GPL, unlike
-the original mssclampfw.
-
-Introduction
-============
-
-pppoe is a user-space redirector which permits the use of PPPoE
-(Point-to-Point Over Ethernet) with Linux. PPPoE is used by many
-ADSL service providers.
-
-Installation
-============
-
-Requirements
-------------
-
-1) Linux 2.2.9 or later on Intel, Sparc or PowerPC. It may work on
- Alpha, too -- anyone care to let me know?
-
- OR
-
- Linux 2.0.36 or later.
-
- OR
-
- FreeBSD, NetBSD or OpenBSD with BPF support. I have access only
- to FreeBSD. In general, I can't answer questions about the *BSD's
- as well as I can about Linux.
-
-
-2) pppd 2.3.10 or later. Versions 2.3.7 and later work unless you use
- demand-dialling. For demand dialling, you *must* use 2.3.10 or later.
-
-QUICKSTART
-----------
-
-If you're lucky, the "quickstart" method will work. After unpacking
-the archive, become root and type:
-
- ./go
-
-This should configure, compile and install the software and set up your
-ADSL connection. You'll have to answer a few questions along the way.
-
-If you want the GUI wrapper, type:
-
- ./go-gui
-
-If ./go and ./go-gui didn't work, read the rest of this README.
-
-Compiling
----------
-
-Compile and install pppd if you don't already have it. Then:
-
-1) Unpack:
-
- $ tar xzvf rp-pppoe-xxx.tar.gz
-
-2) Change to source directory:
-
- $ cd src
-
-3) Configure:
-
- $ ./configure
-
-4) Compile:
-
- $ make
-
-4) Install (this step must be done as root)
-
- # make install
-
-5) Now read doc/HOW-TO-CONNECT
-
---
-David F. Skoll <dfs@roaringpenguin.com> | Roaring Penguin Software Inc.
-http://www.roaringpenguin.com | Linux and UNIX Specialists \ No newline at end of file
diff --git a/mdk-stage1/rp-pppoe/configs/firewall-masq b/mdk-stage1/rp-pppoe/configs/firewall-masq
deleted file mode 100644
index cb16fbecf..000000000
--- a/mdk-stage1/rp-pppoe/configs/firewall-masq
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-#
-# firewall-masq This script sets up firewall rules for a machine
-# acting as a masquerading gateway
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc. This software may
-# be distributed under the terms of the GNU General Public License, version
-# 2 or any later version.
-
-# Interface to Internet
-EXTIF=ppp+
-
-ANY=0.0.0.0/0
-
-ipchains -P input ACCEPT
-ipchains -P output ACCEPT
-ipchains -P forward DENY
-
-ipchains -F forward
-ipchains -F input
-ipchains -F output
-
-# Deny TCP and UDP packets to privileged ports
-ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY
-ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY
-
-# Deny TCP connection attempts
-ipchains -A input -l -i $EXTIF -p tcp -y -j DENY
-
-# Deny ICMP echo-requests
-ipchains -A input -l -i $EXTIF -s $ANY echo-request -p icmp -j DENY
-
-# Do masquerading
-ipchains -A forward -j MASQ
-echo 1 > /proc/sys/net/ipv4/ip_forward
diff --git a/mdk-stage1/rp-pppoe/configs/firewall-standalone b/mdk-stage1/rp-pppoe/configs/firewall-standalone
deleted file mode 100644
index bcb1e92b1..000000000
--- a/mdk-stage1/rp-pppoe/configs/firewall-standalone
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# firewall-standalone This script sets up firewall rules for a standalone
-# machine
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc. This software may
-# be distributed under the terms of the GNU General Public License, version
-# 2 or any later version.
-
-# Interface to Internet
-EXTIF=ppp+
-
-ANY=0.0.0.0/0
-
-ipchains -P input ACCEPT
-ipchains -P output ACCEPT
-ipchains -P forward DENY
-
-ipchains -F forward
-ipchains -F input
-ipchains -F output
-
-# Deny TCP and UDP packets to privileged ports
-ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p udp -j DENY
-ipchains -A input -l -i $EXTIF -d $ANY 0:1023 -p tcp -j DENY
-
-# Deny TCP connection attempts
-ipchains -A input -l -i $EXTIF -p tcp -y -j DENY
-
-# Deny ICMP echo-requests
-ipchains -A input -l -i $EXTIF -s $ANY echo-request -p icmp -j DENY
-
diff --git a/mdk-stage1/rp-pppoe/configs/pap-secrets b/mdk-stage1/rp-pppoe/configs/pap-secrets
deleted file mode 100644
index f4483a723..000000000
--- a/mdk-stage1/rp-pppoe/configs/pap-secrets
+++ /dev/null
@@ -1,9 +0,0 @@
-# Edit this file and place it in /etc/ppp/pap-secrets
-
-#User #Server #Password #IP
-bxxxxx@sympatico.ca * my_password *
-
-# Replace bxxxxx@sympatico.ca with your Sympatico user-ID
-# Replace my_password with your Sympatico password
-
-# For Magma, use xxyyzz@magma.ca
diff --git a/mdk-stage1/rp-pppoe/configs/pppoe-server-options b/mdk-stage1/rp-pppoe/configs/pppoe-server-options
deleted file mode 100644
index 8319870ac..000000000
--- a/mdk-stage1/rp-pppoe/configs/pppoe-server-options
+++ /dev/null
@@ -1,5 +0,0 @@
-# PPP options for the PPPoE server
-require-pap
-login
-lcp-echo-interval 10
-lcp-echo-failure 2
diff --git a/mdk-stage1/rp-pppoe/configs/pppoe.conf b/mdk-stage1/rp-pppoe/configs/pppoe.conf
deleted file mode 100644
index 9f77b913c..000000000
--- a/mdk-stage1/rp-pppoe/configs/pppoe.conf
+++ /dev/null
@@ -1,126 +0,0 @@
-#***********************************************************************
-#
-# pppoe.conf
-#
-# Configuration file for rp-pppoe. Edit as appropriate and install in
-# /etc/ppp/pppoe.conf
-#
-# NOTE: This file is used by the adsl-start, adsl-stop, adsl-connect and
-# adsl-status shell scripts. It is *not* used in any way by the
-# "pppoe" executable.
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# This file may be distributed under the terms of the GNU General
-# Public License.
-#
-# $Id$
-#***********************************************************************
-
-# When you configure a variable, DO NOT leave spaces around the "=" sign.
-
-# Ethernet card connected to ADSL modem
-ETH=eth1
-
-# ADSL user name. You may have to supply "@provider.com" Sympatico
-# users in Canada do need to include "@sympatico.ca"
-# Sympatico uses PAP authentication. Make sure /etc/ppp/pap-secrets
-# contains the right username/password combination.
-# For Magma, use xxyyzz@magma.ca
-USER=bxxxnxnx@sympatico.ca
-
-# Bring link up on demand? Default is to leave link up all the time.
-# If you want the link to come up on demand, set DEMAND to a number indicating
-# the idle time after which the link is brought down.
-DEMAND=no
-#DEMAND=300
-
-# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
-# NOCHANGE=do not adjust.
-DNSTYPE=SERVER
-
-# Obtain DNS server addresses from the peer (recent versions of pppd only)
-USEPEERDNS=yes
-
-DNS1=
-DNS2=
-
-### ONLY TOUCH THE FOLLOWING SETTINGS IF YOU'RE AN EXPERT
-
-# How long adsl-start waits for a new PPP interface to appear before
-# concluding something went wrong. If you use 0, then adsl-start
-# exits immediately with a successful status and does not wait for the
-# link to come up. Time is in seconds.
-#
-# WARNING WARNING WARNING:
-#
-# If you are using rp-pppoe on a physically-inaccessible host, set
-# CONNECT_TIMEOUT to 0. This makes SURE that the machine keeps trying
-# to connect forever after adsl-start is called. Otherwise, it will
-# give out after CONNECT_TIMEOUT seconds and will not attempt to
-# connect again, making it impossible to reach.
-CONNECT_TIMEOUT=30
-
-# How often in seconds adsl-start polls to check if link is up
-CONNECT_POLL=2
-
-# Specific desired AC Name
-ACNAME=
-
-# Specific desired service name
-SERVICENAME=
-
-# Character to echo at each poll. Use PING="" if you don't want
-# anything echoed
-PING="."
-
-# File where the adsl-connect script writes its process-ID.
-# Three files are actually used:
-# $PIDFILE contains PID of adsl-connect script
-# $PIDFILE.pppoe contains PID of pppoe process
-# $PIDFILE.pppd contains PID of pppd process
-CF_BASE=`basename $CONFIG`
-PIDFILE="/var/run/$CF_BASE-adsl.pid"
-
-# Do you want to use synchronous PPP? "yes" or "no". "yes" is much
-# easier on CPU usage, but may not work for you. It is safer to use
-# "no", but you may want to experiment with "yes". "yes" is generally
-# safe on Linux machines with the n_hdlc line discipline; unsafe on others.
-SYNCHRONOUS=no
-
-# Do you want to clamp the MSS? Here's how to decide:
-# - If you have only a SINGLE computer connected to the ADSL modem, choose
-# "no".
-# - If you have a computer acting as a gateway for a LAN, choose "1412".
-# The setting of 1412 is safe for either setup, but uses slightly more
-# CPU power.
-CLAMPMSS=1412
-#CLAMPMSS=no
-
-# LCP echo interval and failure count.
-LCP_INTERVAL=20
-LCP_FAILURE=3
-
-# PPPOE_TIMEOUT should be about 4*LCP_INTERVAL
-PPPOE_TIMEOUT=80
-
-# Firewalling: One of NONE, STANDALONE or MASQUERADE
-FIREWALL=NONE
-
-# Linux kernel-mode plugin for pppd. If you want to try the kernel-mode
-# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
-LINUX_PLUGIN=
-
-# Any extra arguments to pass to pppoe. Normally, use a blank string
-# like this:
-PPPOE_EXTRA=""
-
-# Rumour has it that "Citizen's Communications" with a 3Com
-# HomeConnect ADSL Modem DualLink requires these extra options:
-# PPPOE_EXTRA="-f 3c12:3c13 -S ISP"
-
-# Any extra arguments to pass to pppd. Normally, use a blank string
-# like this:
-PPPD_EXTRA=""
-
-
diff --git a/mdk-stage1/rp-pppoe/doc/CHANGES b/mdk-stage1/rp-pppoe/doc/CHANGES
deleted file mode 100644
index 9afce027d..000000000
--- a/mdk-stage1/rp-pppoe/doc/CHANGES
+++ /dev/null
@@ -1,177 +0,0 @@
-Changes from Version 2.8 to 3.0:
-
-- Many small improvements to server. Server now only makes one
- discovery socket, systemwide, with addition of "-n" option to pppoe.
-
-- Fixes for compilation problems on BSD, Solaris and some Linux platforms.
-
-- Added "-p" option to pppoe-server to allow you to specify a pool of
- IP addresses to assign to clients.
-
-- Added GUI system (tkpppoe). This work was funded by Iospan
- Wireless, Inc. The GUI includes a Set-UID wrapper (pppoe-wrapper)
- which allows ordinary users to control a link (if so authorized.)
- I believe the wrapper script is secure, but please audit the
- source code (gui/wrapper.c) if you have any concerns.
-
-- Changes to scripts and pppoe.conf. DNS setup is now dynamic (happens
- each time adsl-connect runs.)
-
-- Made relay.c check packet lengths rigorously; made it throw out Ethernet
- frame padding on session packets as well as discovery packets.
-
-Changes from Version 2.7 to 2.8:
-
-- Added init scripts for TurboLinux, courtesy of Yasuhiro Sumi.
-
-- Made relay.c check packet lengths rigorously; made it throw out Ethernet
- frame padding on discovery packets.
-
-*** NOTE: 2.7 was not released publicly
-
-Changes from Version 2.6 to 2.7:
-
-- Completely restructured source file tree.
-
-- Much internal restructuring to eliminate a bunch of global variables.
-
-- adsl-connect now executes /etc/ppp/adsl-lost whenever connection is dropped
- or cannot be established.
-
-- Split pppoe.c into pppoe.c and discovery.c.
-
-- Added relay agent (pppoe-relay).
-
-- Made adsl-connect script use the "-U" (host-unique) option to better support
- multiple PPPoE links.
-
-- Added support for kernel-mode PPPoE (EXPERIMENTAL, UNSUPPORTED!)
-
-- Added "-o" option to PPPoE server; encoded server PID in pppoe-server
- cookie.
-
-Changes from Version 2.5 to 2.6:
-
-- Code should now compile cleanly on Caldera and Slackware Linux
-
-- Fixed rp-pppoe.spec file to work on Mandrake and Red Hat.
-
-- Deleted some obsolete files
-
-- Fixed bug in Solaris/x86 port (thanks to Philippe Levan)
-
-- Made shell scripts nicer under Solaris (again, Philippe Levan)
-
-- Made adsl-status look under /var/run and /etc/ppp for PID files. Should
- fix problems with NetBSD.
-
-- Added PPPD_EXTRA to pppoe.conf; made the PID file depend on the config
- file name. This makes it easier to run multiple PPPoE sessions.
-
-Changes from Version 2.4 to 2.5:
-
-- Tested for zero-length TCP option-length field, and for reverse-packing
- of type/code bitfields. Thanks to Robert Schlabbach for pointing out
- these problems.
-
-- Set umask to 077 in adsl-setup.in to protect created files like
- /etc/ppp/pap-secrets.
-
-Changes from Version 2.3 to 2.4:
-
-- Fixed spec file to automatically add .gz extension to man files as required
-
-- Tightened firewall rules.
-
-- Better check for /var/run in adsl-status; minor shell script fixes and
- cleanups for NetBSD and Solaris.
-
-- Added FAQ to HOW-TO-CONNECT regarding running a script each time a
- connection is made.
-
-Changes from Version 2.2 to 2.3:
-
-- Fixed the init script to create/remove /var/lock/subsys/adsl (patch
- courtesy of Charley Carter.)
-
-- Added support (under Linux) for N_HDLC line discipline which should
- greatly reduce CPU usage. My tests show it cuts CPU usage in half.
- My 486 DX2/66 gets 800 kb/s at 22% CPU usage.
-
-- adsl-connect uses "setsid" (if available) so that adsl-stop doesn't kill
- its caller. There is (IMO) a bug in pppd which kills all processes in
- its process group if the "pty" option is used. The setsid program gets
- around this bug, on Linux at least.
-
-- Port to Solaris, courtesy of David Holland.
-
-- Renamed spec file from "spec" to "rp-pppoe.spec" and made some cleanups.
- NOTE: Red Hat, in their infinite wisdom, decided to make the new RPM
- compress man pages automatically. You may have problems building RPM's
- from source unless you get the latest rpm package and make sure it
- compresses man pages.
-
-Changes from Version 2.1 to 2.2:
-
-- Added "-f" option to pppoe to allow use of any Ethernet frame type
- for PPPoE. USE WITH CAUTION -- this is a workaround for broken DSL
- providers, not something you should monkey with freely!
-
-- Added pppoe-sniff program to help expose non-standard PPPoE implementations.
-
-Changes from Version 2.0 to 2.1:
-
-- Fixed minor bugs in bounds-checking
-
-- Modified adsl-status to use output of "netstat -r -n" to determine whether
- or not link is up. This should make it independent of locale, I hope!
-
-- Added "-k" and "-d" options to pppoe.
-
-Changes from Version 1.9 to 2.0:
-
-- Addition of pppoe-server
-
-- Massive internal code restructuring
-
-- Zealous bounds-checking everywhere.
-
-- adsl-setup now quotes user name and password in /etc/ppp/pap-secrets.
-
-- Ported to OpenBSD, FreeBSD and NetBSD, courtesy of Geoff Mottram
- and Yannis Sismanis.
-
-- Rearranged adsl-* shell scripts, courtesy of Heiko Schlittermann.
-
-- Fixed bug in which Host-Uniq did not work if access concentrator sent
- a cookie.
-
-- Addition of SuSE-specific "init" script, courtesy of Gary Cameron.
-
-Changes from Version 1.8 to 1.9:
-
-- Added some more documentation to HOW-TO-CONNECT
-
-- Demand-dialling option now works correctly
-
-- SIGHUP terminates pppoe after sending a PADT to the access concentrator
-
-- Minor cleanups to connection shell scripts
-
-Changes from Version 1.7 to 1.8:
-
-- Added demand-dialling option
-
-- Clarified HOW-TO-CONNECT
-
-- Added adsl-status script
-
-- Added "restart" and "status" options to Red Hat /etc/rc.d/init.d/adsl script
-
-- Made adsl-setup check for existence of pppd
-
-- Wildcarded external interface in firewall rules
-
-- Made pppoe send a PADT frame if connection is terminated
-
-$Id$
diff --git a/mdk-stage1/rp-pppoe/doc/HOW-TO-CONNECT b/mdk-stage1/rp-pppoe/doc/HOW-TO-CONNECT
deleted file mode 100644
index 3e888af69..000000000
--- a/mdk-stage1/rp-pppoe/doc/HOW-TO-CONNECT
+++ /dev/null
@@ -1,295 +0,0 @@
-$Id$
-
-This package lets you connect a Linux machine to Sympatico HSE or Magma's
-high-speed service using a Nortel 1-meg modem.
-
-Follow these steps and you should have your high-speed service up and running.
-
-0. Install the rp-pppoe-software
---------------------------------
-
-You should have already done this by the time you're reading this. If not,
-go back and read README.
-
-1. Set up your Ethernet hardware
---------------------------------
-
-First, make sure the Ethernet card you intend to use with the modem is
-visible to the Linux kernel. Just how to do this is beyond the scope
-of this document. However, if the card is the only Ethernet card in
-the system, executing:
-
- ifconfig eth0
-
-should display something like this:
-
- eth0 Link encap:Ethernet HWaddr 00:60:67:62:31:D4
-
-plust some more lines. Your HWaddr will be different. As long as you see
-the HWaddr line, your card should be working.
-
-DO NOT assign an IP address to the Ethernet card. DO NOT configure the
-card to come up at boot time.
-
-2. Configure various files
---------------------------
-
-Several files need editing. The easiest way to do this is to run
-the following command as root:
-
- adsl-setup
-
-Answer the questions and you should be all set. If you want to know what
-goes on behind the scenes, continue reading this document. If you don't
-care and your connection works, stop reading. :-)
-
-3. Edit pap-secrets
--------------------
-
-Edit the "pap-secrets" file, inserting your proper user-ID and password.
-Install the file (or copy the relevant lines) to /etc/ppp/pap-secrets.
-Your ISP may use CHAP authentication. In this case, add the line to
-/etc/ppp/chap-secrets.
-
-4. Edit /etc/ppp/pppoe.conf
------------------------------
-
-The file /etc/ppp/pppoe.conf contains configuration information for the
-ADSL connection. You need to edit the following items:
-
-- Change ETH=eth1 to the correct Ethernet device for your modem.
-- Change USER=bxxxnxnx@sympatico.ca to your proper ADSL user-ID.
-
-Don't edit any of the other settings unless you're an expert.
-
-5. Set up DNS
--------------
-
-If you are using DNS servers supplied by your ISP, edit the file
-/etc/resolv.conf to contain these lines:
-
- nameserver ip_addr_of_first_dns_server
- nameserver ip_addr_of_second_dns_server
-
-For example:
-
- nameserver 204.101.251.1
- nameserver 204.101.251.2
-
-
-6. Firewall your machine
-------------------------
-
-MAKE SURE YOU FIREWALL YOUR MACHINE. A sample firewall script is given
-in the shell script "firewall" To install the script:
-
-a) Copy it to /etc/rc.d/init.d/firewall
-b) Type: chkconfig firewall on
-c) Start the firewall: sh /etc/rc.d/init.d/firewall start
-
-(The above procedure works ONLY on Red Hat-like systems.)
-
-You may want to tweak the script somewhat.
-
-7. Bring up the connection at boot time
----------------------------------------
-
-On a Red Hat system, the installation procedure should have installed
-a script called /etc/rc.d/init.d/adsl. To bring up the connection
-at boot time, just type this command as root:
-
- chkconfig --add adsl
-
-On non-Red-Hat systems, add this line to the end
-of /etc/rc.d/rc.local:
-
- /usr/sbin/adsl-start
-
-8. Configure LAN Hosts
-----------------------
-
-If you have a LAN behind the firewall, you have to lower the TCP
-maximum segment size from the normal 1460 to 1452 (or better, 1412.)
-You have two options: Either set the MTU of all the interfaces on
-other hosts on the LAN to 1452, or use the "-m 1412" option to pppoe.
-The "-m" option for pppoe is far simpler and makes it easier to add
-hosts to the LAN, but consumes some extra CPU time.
-
-If you want to manually configure the LAN hosts, here's how:
-
-In Linux, use: "ifconfig eth0 mtu 1452". For best results, put this
-in an /etc/rc.d/rc.local script.
-
-For Windows, machines, see http://lan.cns.ksu.edu/OS/WIN95/slip95.htm.
-Set the MaxMTU to 1452.
-
-9. Commands to control the ADSL link
-------------------------------------
-
-As root, bring up the link by typing: adsl-start
-As root, bring down the link by typing: adsl-stop
-
-That's it!
-
---
-David F. Skoll <dfs@roaringpenguin.com> | Roaring Penguin Software Inc.
-http://www.roaringpenguin.com | Linux and UNIX Specialists
-
-PROBLEMS! DAVE, IT DOESN'T WORK!
----------------------------------
-
-Here are some problems PPPoE users have encountered.
-
------------------------------------------------------------------------------
-A) Can't see the Ethernet interface
-
-Well, I can't really help you here. To use these instructions, you must
-have Linux working to the point where it recognizes your Ethernet card.
-If you type "ifconfig ethx" and you get back a HWAddr value, your Ethernet
-card is probably OK. But I really can't help with hardware configuration
-issues.
-
------------------------------------------------------------------------------
-B) Connection seems to come up, but I can't browse the web or ping anything
-
-You probably don't have DNS set up. See step 6.
-
------------------------------------------------------------------------------
-C) Can't compile PPPoE
-
-I have only tested compilation on 2.2-kernel machines. Make sure you have
-"make", the C compiler and all development header files installed.
-
------------------------------------------------------------------------------
-D) pppd complains about (i) "unknown option pty" or (ii) "pty option precludes
- specifying device name"
-
-(i) Your pppd is too old. You need at least 2.3.7.
-(ii) Your /etc/ppp/options file is not empty. Empty it!
-
------------------------------------------------------------------------------
-E) pppoe dies with the log message "Message too long"
-
-You set the MTU of the Ethernet interface connected to the ADSL modem
-to less than 1500. Don't do that.
-
------------------------------------------------------------------------------
-F) Internal hosts can't see the Internet
-
-Do you have masquerading set up? I can't help you in great detail, but
-see the IPCHAINS-HOWTO and the IP-Masquerade mini-HOWTO.
-
------------------------------------------------------------------------------
-G) Authentication fails
-
-Make sure you have the right secret in /etc/ppp/pap-secrets. Your ISP
-may be using CHAP; it won't hurt to copy the line to /etc/ppp/chap-secrets.
-
-Also, MAKE SURE that /etc/ppp/options is EMPTY. The "adsl-connect" script
-supplies all required options on the command line; additional options
-in /etc/ppp/options may mess things up.
-
------------------------------------------------------------------------------
-H) VPN software does not work
-
-If you are using VPN software on a Windows or Linux machine with another
-Linux machine running PPPoE as the gateway, you MUST NOT use the "-m" option
-to pppoe. This alters IP packets, which will break any VPN which uses IPSec.
-In /etc/ppp/pppoe.conf, set CLAMPMSS to "no". You'll also have to reduce
-the MTU on the hosts behind the gateway to 1452.
-
------------------------------------------------------------------------------
-I) I can browse some web sites just fine, but others stall forever.
-
-There is probably a buggy router or firewall between you and the Web server.
-One possible workaround: In /etc/ppp/pppoe.conf, find the line which reads:
-
- CLAMPMSS=1412
-
-Try lowering the 1412 until it works (go down in steps of 100 or so.) Each
-time you lower the value, you have to restart your connection like this:
-
- adsl-stop; adsl-start
-
-This should work around buggy routers which do not support Path MTU discovery.
-
------------------------------------------------------------------------------
-J) Whenever I connect using ADSL, my internal LAN no longer sees the gateway
-
-You are more than likely running a 2.0.X Linux kernel. To solve this
-problem, give the Ethernet card connected to the DSL modem a fake IP
-address. For example, if eth0 is your internal LAN card and eth1 goes to
-the DSL modem, do something like this:
-
- ifconfig eth1 10.0.0.1 netmask 255.255.255.0
-
-(You may have to choose a different IP address; experiment.)
------------------------------------------------------------------------------
-K) How can I run a script every time I connect and get a new IP address?
-
-Put the script in /etc/ppp/ip-up. See the pppd(8) man page.
------------------------------------------------------------------------------
-L) Nothing works!
-
-You may need to put your Ethernet card in half-duplex, 10Mb/s mode to
-work with the DSL modem. You may have to run a DOS program to do this,
-or pass special parameters to the Linux driver.
-
-Some providers object to attempts to set the MRU or MTU. Try removing
-"mtu 1492 mru 1492" from PPP_STD_OPTIONS in the adsl-connect script.
-This problem has been seen with an ISP in Hong Kong.
-
-Your DSL provider may be using non-standard PPPoE frames or require
-something special in the Service-Name field. If you have two computers,
-you can try sniffing out these values with the "pppoe-sniff" program.
-Type "man pppoe-sniff" for details. If you don't have two computers,
-you'll have to ask your DSL provider if it uses non-standard PPPoE frames
-or special Service-Name fields. Good luck getting an answer...
-
-If pppoe-sniff indicates that nothing is amiss, make sure the Ethernet
-card associated with the ADSL modem does NOT have a valid IP address.
-(NOTE: For 2.0 kernels, you may have to give it a fake IP address
-which is not on your internal subnet. Something like 192.168.42.42
-might work if you are not using 192.168.42.*)
-
-If you are using synchronous PPP on a slow machine, try switching to
-asynchronous PPP.
-
-Make sure no entries in the routing table go through the Ethernet card
-connected to the ADSL modem. You might want to add these lines in
-adsl-connect:
-
- ifconfig ethx down
- ifconfig ethx up mtu 1500
-
-which should reset things to sane values.
-
-#######################################################################
-# WHEN ALL ELSE FAILS: #
-#######################################################################
-
-If you are completely unable to connect, run the adsl-start script in
-debugging mode. If you are using bash as your shell (if you don't
-know what your shell is, it's probably bash), type this:
-
- DEBUG=1 adsl-start
-
-In tcsh or csh, use:
-
- setenv DEBUG 1; adsl-start
-
-Then follow the instructions to mail the debugging file to me. PLEASE
-DON'T DO THIS until you have exhausted all other avenues; rp-pppoe is
-free software and it costs me time and money to help people with
-problems. While I don't mind doing this, I do mind it if you don't
-make an effort to fix the problem yourself first.
-
-WARNING: If you run adsl-start in debugging mode and you manage to
-connect, your connection will be extremely slow and huge amounts of
-data will quickly fill your /tmp directory. Do not use debugging mode
-unless you really cannot get your connection to work.
-
-Be aware that debugging mode produces hex dumps which potentially reveal
-your user name and password. If the debugging output includes packets
-labeled "PPPOE Session", you may wish to remove these packets from the
-dump before mailing it to me.
diff --git a/mdk-stage1/rp-pppoe/doc/KERNEL-MODE-PPPOE b/mdk-stage1/rp-pppoe/doc/KERNEL-MODE-PPPOE
deleted file mode 100644
index 454c4b870..000000000
--- a/mdk-stage1/rp-pppoe/doc/KERNEL-MODE-PPPOE
+++ /dev/null
@@ -1,39 +0,0 @@
-RP-PPPoE now supports kernel-mode PPPoE on Linux kernels 2.4.x. However,
-the default "./go" build procedure does not make kernel-mode support.
-
-Here's what you need to do:
-
-1) Download Michal Ostrowski's patched version of pppd which supports
-a PPPoE plugin. The latest version as of this writing is
-at http://www.math.uwaterloo.ca/~mostrows/ in
-http://www.math.uwaterloo.ca/~mostrows/ppp-2.4.0-pppoe4.tgz. It is
-also mirrored at http://www.roaringpenguin.com/pppoe/
-
-2) Unpack that version of pppd and build and install it.
-
-3) In the rp-pppoe directory, change to src/ and type:
-
- ./configure --enable-plugin=/path/to/ppp-tree
-
-Here, /path/to/ppp-tree is where you unpacked the pppd software. It
-should be the directory named ppp-2.4.0.pppoe
-
-4) Type make; make install
-
-5) Edit /etc/ppp/pppoe.conf to include this line:
-
- LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
-
-6) Make sure your kernel was built with support for PPP, PPPOX and that
-all modules are locatable by modprobe. Make sure you have a /dev/ppp
-device:
-
- mknod /dev/ppp c 108 0
-
-After that, adsl-start should use kernel-mode PPPoE.
-
-This code is experimental and unsupported. Use at your own risk.
-
---
-David F. Skoll <dfs@roaringpenguin.com>
-
diff --git a/mdk-stage1/rp-pppoe/doc/LICENSE b/mdk-stage1/rp-pppoe/doc/LICENSE
deleted file mode 100644
index 9ed341535..000000000
--- a/mdk-stage1/rp-pppoe/doc/LICENSE
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- 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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/mdk-stage1/rp-pppoe/doc/PROBLEMS b/mdk-stage1/rp-pppoe/doc/PROBLEMS
deleted file mode 100644
index f0b7d7d59..000000000
--- a/mdk-stage1/rp-pppoe/doc/PROBLEMS
+++ /dev/null
@@ -1,3 +0,0 @@
-Problems?
-
-See the last section of HOW-TO-CONNECT.
diff --git a/mdk-stage1/rp-pppoe/go b/mdk-stage1/rp-pppoe/go
deleted file mode 100755
index 305ac9ee4..000000000
--- a/mdk-stage1/rp-pppoe/go
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/sh
-#***********************************************************************
-#
-# go
-#
-# Quick-start shell script to set up ADSL
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#***********************************************************************
-
-# Figure out directory of script
-MYDIR=`dirname $0`
-cd $MYDIR/src
-
-echo "Running ./configure..."
-./configure
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like ./configure failed."
- exit 1
-fi
-
-echo "Running make..."
-make
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make failed."
- exit 1
-fi
-
-echo "Running make install..."
-make install
-
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make install failed."
- exit 1
-fi
-
-for i in a a a a a a a a a a a a a a a a a a a a a a a a a a a a ; do
- echo ""
-done
-
-sh ../scripts/adsl-setup
diff --git a/mdk-stage1/rp-pppoe/go-gui b/mdk-stage1/rp-pppoe/go-gui
deleted file mode 100755
index ddce984fd..000000000
--- a/mdk-stage1/rp-pppoe/go-gui
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/sh
-#***********************************************************************
-#
-# go-gui
-#
-# Quick-start shell script to set up ADSL and GUI wrapper
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#***********************************************************************
-
-# GUI only works on Linux
-if test "`uname`" != "Linux" ; then
- echo "Sorry, the GUI only works on Linux."
- exit 1
-fi
-
-# Figure out directory of script
-MYDIR=`dirname $0`
-cd $MYDIR/src
-
-echo "Running ./configure..."
-./configure
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like ./configure failed."
- exit 1
-fi
-
-echo "Running make..."
-make
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make failed."
- exit 1
-fi
-
-echo "Running make install..."
-make install
-
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make install failed."
- exit 1
-fi
-
-echo "Building GUI wrapper..."
-cd ../gui
-make
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make failed."
- exit 1
-fi
-
-echo "Installing GUI..."
-make install
-
-if [ "$?" != 0 ] ; then
- echo "Oops! It looks like make install failed."
- exit 1
-fi
-
-# Install entry in KDE menu
-if test -n "$KDEDIR" ; then
- echo "Installing KDE menu entry Internet : TkPPPoE..."
- mkdir -p "$KDEDIR/share/applnk/Internet"
- cat <<EOF > "$KDEDIR/share/applnk/Internet/tkpppoe.kdelnk"
-# KDE Config File
-[KDE Desktop Entry]
-Name=TkPPPoE
-Comment=Start/Stop ADSL connections
-Exec=tkpppoe
-Terminal=0
-Type=Application
-EOF
-fi
-
-# Install entry in GNOME menus
-GNOMEDIR=`gnome-config --datadir 2>/dev/null`
-if test -n "$GNOMEDIR" ; then
- echo "Installing GNOME menu entry Internet : TkPPPoE..."
- mkdir -p "$GNOMEDIR/gnome/apps/Internet"
-cat <<EOF > "$GNOMEDIR/gnome/apps/Internet/tkpppoe.desktop"
-[Desktop Entry]
-Name=TkPPPoE
-Comment=Start/Stop ADSL connections
-Exec=tkpppoe
-Terminal=0
-Type=Application
-EOF
-fi
-echo "Running GUI configuration tool..."
-tkpppoe &
-exit 0
diff --git a/mdk-stage1/rp-pppoe/gui/Makefile.in b/mdk-stage1/rp-pppoe/gui/Makefile.in
deleted file mode 100644
index a9b0844c0..000000000
--- a/mdk-stage1/rp-pppoe/gui/Makefile.in
+++ /dev/null
@@ -1,64 +0,0 @@
-# @configure_input@
-#***********************************************************************
-#
-# Makefile
-#
-# Makefile for GUI for Roaring Penguin's Linux user-space PPPoE client.
-#
-# Copyright (C) 2001 Roaring Penguin Software Inc.
-#
-# This program may be distributed according to the terms of the GNU
-# General Public License, version 2 or (at your option) any later version.
-#
-# $Id$
-#***********************************************************************
-DEFINES=
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-mandir=@mandir@
-install=@INSTALL@
-install_dir=@INSTALL@ -d
-sbindir=@sbindir@
-bindir=@bindir@
-
-ADSL_START_PATH=@sbindir@/adsl-start
-ADSL_STOP_PATH=@sbindir@/adsl-stop
-ADSL_STATUS_PATH=@sbindir@/adsl-status
-
-PATHS='-DADSL_START_PATH="$(ADSL_START_PATH)"' '-DADSL_STOP_PATH="$(ADSL_STOP_PATH)"' '-DADSL_STATUS_PATH="$(ADSL_STATUS_PATH)"'
-
-CFLAGS= @CFLAGS@ $(DEFINES) $(PATHS)
-
-all: pppoe-wrapper
- @echo ""
- @echo "Type 'make install' as root to install the software."
-
-pppoe-wrapper: wrapper.o
- @CC@ -o pppoe-wrapper wrapper.o
-
-wrapper.o: wrapper.c
- @CC@ $(CFLAGS) -c -o wrapper.o wrapper.c
-
-install: all
- -mkdir -p $(RPM_INSTALL_ROOT)$(sbindir)
- -mkdir -p $(RPM_INSTALL_ROOT)$(bindir)
- -mkdir -p $(RPM_INSTALL_ROOT)/etc/ppp/rp-pppoe-gui
- $(install) -m 4755 -s pppoe-wrapper $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 tkpppoe $(RPM_INSTALL_ROOT)$(bindir)
- -mkdir -p $(RPM_INSTALL_ROOT)$(mandir)/man1
- $(install) -m 644 pppoe-wrapper.1 $(RPM_INSTALL_ROOT)$(mandir)/man1
- $(install) -m 644 tkpppoe.1 $(RPM_INSTALL_ROOT)$(mandir)/man1
- -mkdir -p $(RPM_INSTALL_ROOT)/usr/share/rp-pppoe-gui
- for i in tkpppoe.html mainwin-busy.png mainwin-nonroot.png mainwin.png props-advanced.png props-basic.png props-nic.png props-options.png ; do \
- $(install) -m 644 html/$$i $(RPM_INSTALL_ROOT)/usr/share/rp-pppoe-gui; \
- done
-
-clean:
- rm -f *.o *~ pppoe-wrapper
-
-distclean: clean
- rm -f Makefile tkpppoe
-
-.PHONY: clean
-
-.PHONY: distclean
diff --git a/mdk-stage1/rp-pppoe/gui/html/tkpppoe.html b/mdk-stage1/rp-pppoe/gui/html/tkpppoe.html
deleted file mode 100644
index 51aadb895..000000000
--- a/mdk-stage1/rp-pppoe/gui/html/tkpppoe.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.14-5.0 i686) [Netscape]">
- <title>TkPPPoE Manual</title>
-</head>
-<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#59188E" alink="#FF0000">
-
-<center>
-<h1>tkpppoe - A GUI for managing PPPoE Connections</h1>
-</center>
-
-<h1>Introduction</h1>
-
-TkPPPoE is a graphical user interface for managing PPPoE connections. It
-performs two different functions:
-<ul>
-<li>TkPPPoE lets you <em>define</em> connection properties. This step must
-be done as root.
-<li>TkPPPoE lets you <em>start and stop</em> PPPoE connections. This step
-may be done as a normal user, depending on how you configured the connection.
-</ul>
-
-<h1>Defining Connections</h1>
-
-To define connections, start TkPPPoE as root. You can do this from
-a terminal by typing <code>tkpppoe</code>, or from the KDE or GNOME menus
-by selecting <b>Internet : TkPPPoE</b>. The following window pops up:
-
-<p>
-<center><img src="mainwin.png" width="361" height="73" alt="Main Window">
-</center>
-
-<p>
-Because you have not yet defined any connections, the connection property
-window also pops up:
-
-<p>
-<center><img src="props-basic.png" width="440" height="259" alt="Connection Properties - Basic">
-</center>
-
-You can pop up the connection property window at any time by clicking
-<b>New Connection...</b> You can edit the properties of an existing
-connection by selecting the connection's name and clicking
-<b>Properties...</b>
-<h4>Basic Information</h4>
-
-Let's fill in the basic information:
-<ul>
-<li>For <b>Connection Name</b>, enter a unique name for this connection. It
-can be anything you like, but must contain only letters, numbers, underscores
-or dashes. In particular, it can't contain spaces. If you have only one
-PPPoE connection, a good name is <b>Default</b>.
-<li>For <b>User Name</b>, enter the user name supplied by your ISP. Enter
-only the user name; do not enter an "@isp.com" part.
-<li>For <b>Network</b>, you may have to enter your ISP's domain name.
-(For example, <b>isp.com</b>.) Some DSL providers add this to your user
-name; others do not. You may have to experiment a bit. The two most likely
-choices are your ISP's domain name, or blank. Try both.
-<li>For <b>Password</b>, enter the password your ISP provided you with.
-</ul>
-
-<h4>NIC and DNS</h4>
-Click on the <b>NIC and DNS</b> tab:
-
-<p>
-<center><img src="props-nic.png" width="440" height="259" alt="Connection Properties - NIC and DNS"></center>
-<p>
-<ul>
-<li>For <b>Ethernet Interface</b>, enter the Ethernet interface connected
-to the DSL modem. It is something like <b>eth0</b> or <b>eth1</b>. Click
-on <b>...</b> to browse a list of detected Ethernet interfaces.
-<li>For <b>DNS Setup</b>, you have three options:
-<ol>
-<li><b>From Server</b> means that the system will obtain DNS information from
-the PPPoE server. This is the correct choice for most ISPs.
-<li><b>Specify</b> means that you will enter the IP addresses of your DNS
-servers manually. In this case, enter the addresses in the <b>Primary DNS</b>
-and <b>Secondary DNS</b> entries.
-<li><b>Do not Adjust</b> means that you want RP-PPPoE to leave your
-DNS setup alone. Use this if you are running your own caching DNS server
-or know that you don't want the DNS setup touched.
-</ol>
-</ul>
-
-<h4>Options</h4>
-Click on the <b>Options</b> tab:
-
-<p>
-<center><img src="props-options.png" width="440" height="259" alt="Connection Properties - Options"></center>
-<p>
-<ul>
-<li>If you want ordinary users to be able to start and stop this connection,
-enable <b>Allow use by non-root users</b>. If you do not enable this,
-non-root users will be able to monitor the connection, but not control it.
-<li>If you want to use synchronous PPP, enable <b>Use synchronous PPP</b>.
-This is recommended as it conserves CPU usage, but may not work on some
-(misconfigured) Linux kernels.
-<li>For <b>Firewalling</b>, you have three options:
-<ol>
-<li><b>Stand-Alone</b> installs a simple firewall ruleset for stand-alone
-machines. Use this if you have only a single computer connected to the DSL
-modem.
-<li><b>Masquerading</b> installs a simple firewall ruleset for using
-your Linux computer as an Internet sharing device. If you have two Ethernet
-cards, you can connect one card to the DSL modem and the other to an
-internal LAN. The masquerading firewall ruleset lets internal machines
-share the DSL connection.
-<li><b>None</b>. If you already have your own firewall rules, or you wish
-to run servers on your machine, select None. This is <em>not recommended</em>
-unless you take steps to secure your machine, and know what you are doing.
-</ol>
-</ul>
-
-<h4>Advanced</h4>
-Click on the <b>Advanced</b> tab:
-
-<p>
-<center><img src="props-advanced.png" width="440" height="259" alt="Connection Properties - Advanced"></center>
-<p>
-
-In most cases, you can leave <b>AC-Name</b> and <b>Service-Name</b> blank.
-In some cases, your ISP may require you to enter information in these fields;
-contact your ISP for more information.
-
-<h1>Controlling Connections</h1>
-For these examples, run <code>tkpppoe</code> as a normal user (not root).
-The main window appears like this:
-
-<p>
-<center><img src="mainwin-nonroot.png" width="206" height="73" alt="Main Window - Non-root">
-</center>
-<p>
-<ul>
-<li>To start a connection, press <b>Start</b>. The two LEDs flash red
-and grey. If the connection is established, they turn green.
-<li>To stop a connection, press <b>Stop</b>.
-</ul>
-
-<p>The two rectangles to the right of the connection name are the
-<em>status LEDs</em>. The top LED corresponds to transmitted data and
-the bottom to received. The LEDs are colored as follows:
-<ul>
-<li>Grey -- connection is not established.
-<li>Flashing red/grey -- connection is being started.
-<li>Green -- connection is up, but idle.
-<li>Yellow -- connection is up and data is being sent or received.
-<li>Red -- connection has been lost, but the system is trying to reestablish it.
-</ul>
-
-<p>
-When a connection is established, two graphs appear:
-
-<p>
-<center><img src="mainwin-busy.png" width="206" height="73" alt="Main Window - Established Connection">
-</center>
-<p>
-
-The left (red) graph shows transmitted packets and the average
-transmission speed (in bits per second) over the sample time. The
-right (green) graph shows received packets.
-
-<h1>Miscellaneous Information</h1>
-<ul>
-<li>The connection menu has an entry called <b>User's Manual</b> which
-will pop up this user manual (if you have Netscape installed.)
-<li>You can define multiple PPPoE connections, but you should not use
-more than one simultaneuously unless you feel comfortable editing scripts
-and setting up routing tables. By default, TkPPPoE tries to add a default
-route for connections. This does not work well with multiple simultaneous
-connections.
-<li>If you exit from TkPPPoE, connections which are up remain up. You
-have to explicitly stop connections if you want them terminated.
-</ul>
-<hr>
-<a href="http://www.roaringpenguin.com/pppoe/">TkPPPoE</a> is Copyright 2001 by <a href="http://www.roaringpenguin.com">Roaring Penguin Software Inc</a> and
-is licensed under the GNU General Public License.
-<p>Screenshots show TkPPPoE running under the <a href="http://www.xfce.org">XFCE</a> desktop, a lightweight UNIX and Linux desktop.
-</body>
-</html>
diff --git a/mdk-stage1/rp-pppoe/gui/pppoe-wrapper.1 b/mdk-stage1/rp-pppoe/gui/pppoe-wrapper.1
deleted file mode 100644
index 4fbf2bce2..000000000
--- a/mdk-stage1/rp-pppoe/gui/pppoe-wrapper.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.\" $Id$
-.TH PPPOE-WRAPPER 1 "26 February 2001"
-.UC 4
-.SH NAME
-pppoe-wrapper \- SUID wrapper for starting and stopping PPPoE connections.
-.SH SYNOPSIS
-.B pppoe-wrapper start linkname
-.P
-.B pppoe-wrapper stop linkname
-.P
-.B pppoe-wrapper status linkname
-
-.SH DESCRIPTION
-\fBpppoe-wrapper\fR is a small SUID program which allows non-root users
-to start and stop PPPoE links. It operates as follows:
-
-.TP
-.B o
-First, \fIlinkname\fR is sanity-checked. Too-long names and names containing
-illegal characters are rejected.
-
-.TP
-.B o
-Second, \fBpppoe-wrapper\fR opens the file \fB/etc/ppp/rp-pppoe-gui/\fR\fIlinkname\fR for reading. If that file does not contain the line:
-.nf
-
- NONROOT=OK
-
-.fi
-then \fBpppoe-wrapper\fR fails.
-
-.TP
-.B o
-Otherwise, \fBpppoe-wrapper\fR runs \fBadsl-start\fR, \fBadsl-stop\fR or
-\fBadsl-status\fR with the above filename as its single argument.
-
-.SH AUTHOR
-\fBpppoe-wrapper\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), adsl-status(8), tkpppoe(1)
-
-
diff --git a/mdk-stage1/rp-pppoe/gui/tkpppoe.1 b/mdk-stage1/rp-pppoe/gui/tkpppoe.1
deleted file mode 100644
index 183476568..000000000
--- a/mdk-stage1/rp-pppoe/gui/tkpppoe.1
+++ /dev/null
@@ -1,36 +0,0 @@
-.\" $Id$
-.TH TKPPPOE 1 "26 February 2001"
-.UC 4
-.SH NAME
-tkpppoe \- Graphical interface for controlling rp-pppoe
-.SH SYNOPSIS
-.B tkpppoe
-
-.SH DESCRIPTION
-\fBtkpppoe\fR is a graphical program for controlling PPPoE links.
-It works with the RP-PPPoE package and has its own HTML manual.
-
-.SH FILES
-
-.TP
-.B /etc/ppp/rp-pppoe-gui/connection-info
-Contains connection information. This file is not human-editable.
-
-.TP
-.B /etc/ppp/rp-pppoe-gui/passwd
-Contains passwords for each connection. This file is not human-editable.
-
-.TP
-.B /etc/ppp/rp-pppoe-gui/conf.*
-These configuration files are used by \fBadsl-start\fR. They are
-generated anew by \fBtkpppoe\fR each time a change is made to a
-connection's properties.
-
-.SH AUTHOR
-\fBtkpppoe\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), pppoe-wrapper(8).
-
diff --git a/mdk-stage1/rp-pppoe/gui/tkpppoe.in b/mdk-stage1/rp-pppoe/gui/tkpppoe.in
deleted file mode 100755
index 37dbf8cc1..000000000
--- a/mdk-stage1/rp-pppoe/gui/tkpppoe.in
+++ /dev/null
@@ -1,2891 +0,0 @@
-#!/bin/sh
-# -*-Mode: TCL;-*-
-
-#--------------------------------------------------------------
-# tkpppoe
-#
-# A graphical front-end for configuring and using rp-pppoe.
-#
-# Copyright (C) 2001 by Roaring Penguin Software Inc.
-# This file may be distributed under the terms of the GNU General Public
-# License, Version 2, or (at your option) any later version.
-#
-# The "Roaring Penguin" logo is a trademark of Roaring Penguin Software Inc.
-#
-# http://www.roaringpenguin.com
-#
-#--------------------------------------------------------------
-
-# $Id$
-
-# the next line restarts using wish \
-umask 022; \
-exec wish "$0" "$@" || clear; echo "*****"; echo "Cannot find 'wish' -- you need Tcl/Tk installed to run this program"; exit 1
-
-# Set app name
-tk appname TkPPPoE
-
-# Set this to one if you want to allow multiple instances of TkPPPoE
-set AllowMultipleInstances 0
-
-# Check for other instances
-if {"[tk appname]" != "TkPPPoE"} {
- # Must be another instance running...
- if {!$AllowMultipleInstances} {
- send TkPPPoE AnotherInstance
- exit 0
- }
-}
-
-# Location of config directory
-set ConfigDir /etc/ppp/rp-pppoe-gui
-
-# Are we running as root?
-set Admin 0
-
-# Location of connection info file
-set ConnectionInfoFile [file join $ConfigDir connection-info]
-
-# Location of password file
-set PasswordFile [file join $ConfigDir passwd]
-
-# Location of "already run" file
-set AlreadyRunFile [file join $ConfigDir gui-already-run]
-
-# Connection information
-set ConnectionInfo {}
-
-# Connection options
-set OPTS(nonroot) 0
-set OPTS(sync) 1
-
-# Location of wrapper
-set Wrapper "@WRAPPER@"
-
-# Timer token for UpdateConnectionState
-set UpdateToken {}
-
-# Update interval in milliseconds
-set UpdateInterval 500
-
-# Packet counters for signalling activity
-set Packets(in) 0
-set Packets(out) 0
-set Bytes(in) 0
-set Bytes(out) 0
-set MeasureTime 0
-
-# Set up some options to make it look better
-option add *Button.borderWidth 1
-option add *Button.Pad 1
-option add *Menubutton.borderWidth 1
-option add *Menubutton.Pad 1
-option add *Entry.Background white
-
-# Array holding help strings for windows
-array set HelpData {}
-
-bind HelpWin <Enter> "HelpWindowEntered %W"
-bind HelpWin <Leave> "HelpWindowLeft %W"
-
-proc AnotherInstance {} {
- wm deiconify .
- raise .
-}
-
-#***********************************************************************
-# %PROCEDURE: HelpWindowEntered
-# %ARGUMENTS:
-# w -- window
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Looks for procedure in HelpData; evals it if found.
-#***********************************************************************
-proc HelpWindowEntered { w } {
- global HelpData
- if {[info exists HelpData($w)]} {
- set cmd "$HelpData($w) Enter"
- uplevel #0 $cmd
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: HelpWindowLeft
-# %ARGUMENTS:
-# w -- window
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Looks for procedure in HelpData; evals it if found.
-#***********************************************************************
-proc HelpWindowLeft { w } {
- global HelpData
- if {[info exists HelpData($w)]} {
- set cmd "$HelpData($w) Leave"
- uplevel #0 $cmd
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: RegisterHelpWindow
-# %ARGUMENTS:
-# w -- window we need help about
-# helptext -- the help text
-# win -- window in which to put help messages
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Sets things up so help text appears in "$win" when mouse enters "$w"
-#***********************************************************************
-proc RegisterHelpWindow {w helptext win} {
- global HelpData
- set tags [bindtags $w]
- if {[lsearch -exact $tags HelpWin] < 0} {
- lappend tags HelpWin
- bindtags $w $tags
- }
- set HelpData($w) [list HelpInTextWin $helptext $win]
-}
-
-#***********************************************************************
-# %PROCEDURE: HelpInTextWin
-# %ARGUMENTS:
-# text -- help text
-# tw -- window in which to write text
-# what -- one of "Enter" or "Leave"
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Clears out $tw; if $what is "Enter", puts $text in $tw.
-#***********************************************************************
-proc HelpInTextWin {text tw what} {
- $tw configure -state normal
- $tw delete 1.0 end
- if {"$what" == "Enter"} {
- $tw insert end $text
- }
- $tw configure -state disabled
-}
-
-
-#***********************************************************************
-# %PROCEDURE: drawLogo
-# %ARGUMENTS:
-# c -- canvas to draw logo in
-# bg -- background color of canvas
-# pencolor -- color of the word "Penguin"
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Draws Roaring Penguin logo in a Tcl canvas
-#***********************************************************************
-proc drawLogo { c bg {pengcolor #6699cc} } {
- $c create polygon 372.249 5.182 361.23 5.519 \
- 346.164 8.892 316.482 20.023 305.463 17.774 296.468 \
- 19.573 288.935 24.97 282.864 33.177 267.348 55.102 \
- 254.531 77.814 236.204 125.26 225.635 174.844 \
- 221.026 226.113 213.605 228.025 208.658 232.634 \
- 225.523 240.28 250.708 243.316 282.752 242.416 \
- 320.079 238.818 330.985 193.17 338.181 146.735 \
- 338.743 99.963 335.483 76.577 329.524 53.191 345.602 \
- 48.131 353.135 45.995 359.768 41.048 342.679 43.184 \
- 324.689 40.036 334.583 28.905 348.3 18.674 372.249 \
- 5.182 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create line 372.249 5.182 361.23 5.519 \
- 346.164 8.892 316.482 20.023 305.463 17.774 296.468 \
- 19.573 288.935 24.97 282.864 33.177 267.348 55.102 \
- 254.531 77.814 236.204 125.26 225.635 174.844 \
- 221.026 226.113 213.605 228.025 208.658 232.634 \
- 225.523 240.28 250.708 243.316 282.752 242.416 \
- 320.079 238.818 330.985 193.17 338.181 146.735 \
- 338.743 99.963 335.483 76.577 329.524 53.191 345.602 \
- 48.131 353.135 45.995 359.768 41.048 342.679 43.184 \
- 324.689 40.036 334.583 28.905 348.3 18.674 372.249 \
- 5.182 -tags logo
-
- $c create polygon 298.605 109.632 290.734 \
- 159.328 282.752 182.939 271.958 205.65 262.851 \
- 171.133 263.75 138.752 264.537 164.5 271.958 192.833 \
- 286.687 157.192 298.605 109.632 -fill #ffffff \
- -outline {} -width 1 -tags logo
-
- $c create line 298.605 109.632 290.734 159.328 \
- 282.752 182.939 271.958 205.65 262.851 171.133 \
- 263.75 138.752 264.537 164.5 271.958 192.833 286.687 \
- 157.192 298.605 109.632 -tags logo
-
- $c create polygon 312.546 30.592 315.132 35.876 \
- 310.747 39.586 308.161 34.414 312.546 30.592 -fill \
- #ffffff -outline {} -width 1 -tags logo
-
- $c create line 312.546 30.592 315.132 35.876 \
- 310.747 39.586 308.161 34.414 312.546 30.592 -tags logo
-
- $c create polygon 328.624 54.427 322.665 58.7 \
- 314.458 61.286 289.16 59.15 284.55 74.665 285.338 \
- 90.181 303.214 98.951 308.499 106.259 310.523 \
- 116.378 305.913 130.208 312.771 141.563 308.049 \
- 167.76 299.729 192.158 279.041 238.593 313.558 \
- 233.871 327.388 185.75 335.033 139.989 335.82 96.253 \
- 328.624 54.427 -fill #ffffff -outline {} -width 1 -tags logo
-
- $c create line 328.624 54.427 322.665 58.7 \
- 314.458 61.286 289.16 59.15 284.55 74.665 285.338 \
- 90.181 303.214 98.951 308.499 106.259 310.523 \
- 116.378 305.913 130.208 312.771 141.563 308.049 \
- 167.76 299.729 192.158 279.041 238.593 313.558 \
- 233.871 327.388 185.75 335.033 139.989 335.82 96.253 \
- 328.624 54.427 -tags logo
-
- $c create polygon 53.837 185.412 54.399 185.862 \
- 53.837 188.223 54.399 188.673 53.837 188.673 53.837 \
- 189.572 53.837 190.472 53.387 191.034 52.938 192.833 \
- 50.577 195.644 49.677 196.656 49.677 197.105 48.215 \
- 198.455 47.316 198.904 46.866 198.904 44.505 200.816 \
- 43.606 200.366 42.594 201.265 42.144 201.715 41.245 \
- 202.277 40.795 202.727 40.345 202.277 39.783 202.277 \
- 36.972 203.177 36.522 203.177 36.073 203.177 35.623 \
- 203.627 34.723 203.627 34.161 203.627 34.161 204.076 \
- 30.901 204.526 28.54 205.538 26.291 205.088 25.729 \
- 205.088 24.829 205.088 24.38 204.526 23.93 204.526 \
- 23.48 204.526 22.918 205.088 22.918 206.437 22.918 \
- 206.887 22.918 207.337 22.468 207.337 22.468 208.798 \
- 22.018 209.248 22.018 211.16 22.018 211.609 21.569 \
- 213.521 21.119 215.769 21.569 216.781 20.669 218.13 \
- 20.669 219.592 20.669 220.042 20.107 220.941 20.107 \
- 221.953 20.107 223.752 19.657 225.664 19.208 226.113 \
- 19.657 227.013 18.308 230.835 17.858 240.167 17.296 \
- 248.15 17.296 249.05 16.846 250.062 15.947 250.062 \
- 15.048 250.062 15.048 250.511 12.686 251.86 12.237 \
- 251.86 11.675 251.411 11.675 250.511 11.675 246.689 \
- 11.225 245.339 11.225 243.878 10.775 240.617 11.225 \
- 239.268 11.225 238.818 10.775 238.256 10.325 237.357 \
- 10.325 236.007 9.876 232.634 9.876 231.735 9.876 \
- 231.285 9.876 230.835 9.876 230.386 9.876 229.824 \
- 9.426 229.374 9.426 226.113 9.876 226.113 9.876 \
- 225.664 9.426 224.202 9.426 223.752 9.426 223.302 \
- 10.325 221.953 9.426 220.941 9.426 219.592 9.426 \
- 219.142 9.426 218.58 9.426 217.681 9.426 217.231 \
- 9.426 216.781 8.864 216.332 8.864 214.42 8.864 \
- 213.97 8.414 213.521 8.414 210.148 8.414 209.248 \
- 7.964 207.899 8.414 205.988 8.414 204.526 7.065 \
- 201.265 7.515 200.816 9.426 201.715 10.325 201.265 \
- 10.775 200.816 10.775 198.904 11.225 198.005 11.225 \
- 197.555 10.775 197.555 9.876 196.094 9.426 194.744 \
- 7.515 194.295 6.615 193.845 6.053 193.845 5.153 \
- 193.283 3.804 191.484 3.804 190.022 3.804 189.572 \
- 3.804 189.123 3.242 188.673 3.242 186.762 3.804 \
- 185.412 4.254 184.85 4.704 184.4 7.964 180.24 10.325 \
- 178.779 11.225 178.779 12.237 177.879 14.036 176.98 \
- 15.497 175.968 21.569 173.607 22.918 173.157 23.48 \
- 173.157 24.38 172.707 24.829 172.707 29.102 171.808 \
- 29.551 171.808 30.001 171.358 31.35 170.796 31.913 \
- 171.358 32.362 170.796 39.783 171.358 40.345 170.796 \
- 42.144 171.358 47.766 174.619 48.778 176.418 49.227 \
- 176.418 49.677 176.98 50.127 176.98 51.588 178.329 \
- 52.038 179.228 52.488 180.69 52.038 181.14 52.038 \
- 181.59 52.488 182.039 52.938 182.039 53.387 182.601 \
- 53.837 183.051 53.837 183.501 53.837 185.412 -fill \
- $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 42.594 222.853 43.156 221.953 \
- 41.694 222.403 39.783 224.202 39.783 224.764 39.783 \
- 225.214 40.345 225.214 41.245 224.202 41.694 223.752 \
- 42.594 222.853 -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 58.559 234.096 59.009 234.096 \
- 59.009 234.546 58.559 234.995 58.559 235.445 57.21 \
- 236.907 56.648 237.806 52.938 241.067 52.038 241.629 \
- 52.038 242.079 51.026 242.529 50.577 242.978 50.127 \
- 242.978 49.227 244.44 45.405 246.239 44.055 246.689 \
- 43.606 246.689 43.606 247.251 42.144 247.251 41.694 \
- 247.7 40.795 247.7 38.434 248.15 36.522 248.15 \
- 35.173 247.7 34.161 246.689 33.711 246.239 32.812 \
- 244.44 32.362 241.629 32.812 239.718 32.812 239.268 \
- 33.711 234.995 36.522 229.824 35.623 228.474 35.623 \
- 227.013 36.522 225.664 37.534 224.202 38.883 222.853 \
- 41.694 220.492 42.594 219.592 43.156 219.592 43.606 \
- 219.142 45.405 217.681 45.967 217.681 46.416 217.231 \
- 48.778 215.769 52.038 214.87 53.387 214.42 54.849 \
- 214.87 55.299 214.87 56.198 215.769 56.198 217.681 \
- 56.198 218.58 54.399 221.953 53.837 222.853 53.837 \
- 223.302 53.387 223.752 50.577 226.113 49.677 226.563 \
- 47.316 228.474 43.156 230.386 41.245 230.835 40.795 \
- 230.835 40.345 230.835 39.333 230.835 38.883 230.835 \
- 38.883 229.824 39.783 229.374 40.795 228.474 41.694 \
- 228.025 42.594 227.575 45.967 227.013 46.866 226.563 \
- 50.127 224.764 51.588 223.302 52.488 221.953 52.488 \
- 220.492 52.488 219.142 51.026 218.13 49.677 218.13 \
- 48.778 218.13 47.766 219.142 47.316 219.142 47.316 \
- 219.592 46.866 219.592 45.967 220.941 44.505 221.953 \
- 44.055 222.403 43.606 222.853 42.594 223.752 41.694 \
- 225.664 41.245 225.664 41.245 226.113 40.345 226.563 \
- 39.333 227.575 39.333 228.474 38.434 229.374 36.522 \
- 233.197 35.623 236.457 35.623 237.357 35.623 238.256 \
- 35.173 241.067 35.623 242.079 36.522 243.428 37.534 \
- 243.878 37.984 244.44 38.434 244.89 38.883 244.89 \
- 39.783 245.339 43.156 245.339 45.967 244.44 49.227 \
- 242.529 50.127 241.629 50.577 241.067 54.399 238.818 \
- 54.399 238.256 54.399 237.806 56.198 236.907 58.559 \
- 234.096 -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 92.289 248.6 92.739 249.05 \
- 92.289 249.05 91.84 249.05 90.94 248.6 90.378 248.6 \
- 89.478 247.7 89.029 247.251 88.129 246.689 87.117 \
- 245.789 85.768 244.89 85.318 244.44 85.768 244.44 \
- 85.318 242.529 84.756 242.079 84.756 240.617 84.756 \
- 240.167 84.756 239.718 84.756 239.268 83.857 236.457 \
- 83.407 234.096 83.407 233.197 83.407 231.735 83.407 \
- 223.302 83.407 221.391 82.957 220.941 82.508 221.953 \
- 80.596 226.113 80.146 226.563 80.146 227.013 79.697 \
- 228.025 79.135 228.474 79.697 228.474 76.324 234.096 \
- 75.874 234.995 75.424 236.457 74.975 236.457 74.975 \
- 236.907 74.975 237.357 74.075 239.268 73.513 239.718 \
- 73.063 240.167 72.613 241.067 72.164 242.529 71.714 \
- 242.529 71.714 243.878 70.252 245.789 69.803 246.689 \
- 68.903 246.689 68.903 247.251 67.891 247.7 66.542 \
- 247.7 66.092 247.7 65.643 247.7 65.08 247.251 65.08 \
- 246.689 65.08 245.789 64.631 242.079 65.08 242.079 \
- 64.631 241.629 65.08 241.067 65.08 238.818 64.631 \
- 237.806 64.631 236.457 64.631 234.546 64.631 233.197 \
- 64.631 232.634 64.631 232.185 64.631 231.735 64.631 \
- 228.924 64.631 227.575 64.631 225.664 64.631 225.214 \
- 64.631 224.764 64.631 223.302 64.631 217.231 65.08 \
- 216.332 65.643 215.769 69.803 214.87 70.252 215.32 \
- 70.252 216.332 70.252 217.681 70.252 218.58 69.803 \
- 219.142 69.803 220.492 69.353 220.941 69.353 221.391 \
- 68.903 221.953 68.903 225.664 68.453 226.563 68.453 \
- 228.025 68.453 228.474 67.891 228.924 67.891 230.835 \
- 68.453 236.457 68.453 237.806 68.453 238.818 68.453 \
- 240.617 68.453 241.067 68.903 241.067 68.903 241.629 \
- 69.353 241.629 70.702 241.067 70.702 240.617 71.264 \
- 240.167 71.264 239.268 72.164 238.256 73.063 236.457 \
- 74.525 234.546 74.975 233.197 76.324 230.835 77.336 \
- 229.824 78.235 227.575 78.235 227.013 78.685 226.563 \
- 78.685 225.664 79.135 225.214 79.697 224.764 79.697 \
- 224.202 80.146 222.403 81.046 220.941 81.945 217.681 \
- 82.957 215.769 85.318 214.87 85.768 214.87 87.567 \
- 214.42 87.567 215.769 87.117 216.332 87.567 216.781 \
- 88.129 219.592 87.567 219.592 87.567 220.492 87.567 \
- 221.391 87.567 224.764 87.567 225.664 87.567 226.113 \
- 87.117 226.113 87.117 227.575 87.567 229.374 88.579 \
- 235.445 89.029 239.268 89.029 239.718 89.029 241.067 \
- 89.478 242.529 89.478 242.978 89.928 243.878 89.928 \
- 244.44 90.378 244.89 90.94 246.239 92.289 248.6 \
- -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 117.587 220.492 118.037 \
- 222.403 117.587 222.853 117.587 224.764 116.687 \
- 226.113 116.687 227.013 116.238 228.025 114.776 \
- 229.374 113.877 231.285 112.865 231.735 109.154 \
- 234.995 106.343 236.457 105.444 237.357 103.982 \
- 237.806 103.083 238.256 102.633 238.818 102.183 \
- 238.818 101.172 239.268 99.822 239.718 98.361 \
- 239.268 97.461 239.718 96.562 239.268 96.0 238.818 \
- 95.55 238.818 94.201 236.907 94.201 235.445 94.201 \
- 233.646 94.65 233.197 94.65 232.634 95.1 232.185 \
- 95.1 231.735 95.55 231.735 96.0 230.386 97.461 \
- 228.025 97.461 227.575 98.361 226.563 99.822 224.764 \
- 101.172 223.302 101.172 222.853 102.633 221.391 \
- 103.083 220.941 104.432 219.592 103.982 218.58 \
- 103.982 217.231 103.982 216.781 103.982 215.32 \
- 104.432 214.42 103.982 210.148 103.982 209.698 \
- 103.982 209.248 104.432 208.798 104.432 207.899 \
- 104.432 205.988 104.432 205.538 104.994 203.177 \
- 104.994 202.277 104.994 201.265 104.994 200.816 \
- 104.994 200.366 104.994 199.916 105.894 199.467 \
- 106.343 198.904 106.793 198.455 107.243 198.904 \
- 108.255 198.904 108.255 199.467 108.705 199.467 \
- 108.705 202.727 108.255 204.076 108.255 205.538 \
- 108.255 205.988 107.805 205.988 107.805 206.887 \
- 107.805 209.698 107.243 210.71 106.793 212.059 \
- 106.343 214.87 106.343 215.32 106.343 215.769 \
- 105.894 217.681 106.343 217.681 106.793 217.681 \
- 107.243 217.231 108.705 215.32 109.604 215.32 \
- 110.054 214.42 110.054 213.97 110.616 213.97 110.616 \
- 214.42 111.965 214.87 112.415 214.87 112.865 215.32 \
- 114.326 216.332 116.238 217.681 116.687 218.58 \
- 117.137 219.592 117.587 220.042 117.587 220.492 \
- -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 123.658 258.944 123.658 \
- 259.394 123.658 260.293 123.658 261.755 123.658 \
- 262.654 123.658 263.104 123.209 266.364 123.209 \
- 267.376 122.759 269.175 122.309 269.737 121.859 \
- 271.087 121.859 271.536 121.859 271.986 121.297 \
- 271.986 121.297 272.548 120.847 273.448 120.398 \
- 273.448 120.398 273.897 118.486 276.259 118.037 \
- 276.708 117.587 277.608 117.137 278.17 116.687 \
- 278.17 115.675 278.62 115.675 279.069 113.427 \
- 280.419 112.865 280.981 112.415 280.981 111.965 \
- 281.43 110.054 282.33 109.154 282.33 108.705 282.78 \
- 108.255 282.78 107.805 283.229 104.994 283.792 \
- 104.432 283.792 103.982 283.792 103.533 283.792 \
- 103.083 283.792 102.633 283.792 102.183 283.792 \
- 101.172 283.792 100.722 283.792 99.822 283.792 98.81 \
- 283.792 96.562 282.33 96.0 282.78 95.1 281.88 94.201 \
- 281.43 91.84 279.969 92.289 279.519 92.289 278.62 \
- 93.751 279.069 93.751 279.519 94.201 279.519 94.65 \
- 279.969 95.1 279.969 96.0 280.981 98.81 281.88 \
- 101.172 281.88 101.621 281.88 102.633 281.88 103.083 \
- 281.88 103.533 281.88 104.432 281.43 104.994 281.88 \
- 105.444 281.43 106.793 281.43 107.805 280.981 \
- 108.705 280.419 109.154 280.419 109.604 279.969 \
- 110.054 279.969 110.616 279.969 111.066 279.519 \
- 112.865 278.17 113.427 277.608 113.877 277.608 \
- 113.877 277.158 114.326 277.158 114.326 276.708 \
- 114.776 276.259 115.226 276.259 116.238 274.347 \
- 116.687 274.347 116.687 273.897 117.587 272.998 \
- 117.587 272.548 118.037 271.986 119.498 267.826 \
- 120.398 265.015 120.398 262.204 119.948 259.843 \
- 119.948 259.394 119.948 258.944 119.498 257.482 \
- 118.486 254.222 118.037 253.772 117.587 251.86 \
- 115.675 249.05 115.226 248.6 114.776 248.15 113.877 \
- 247.251 111.965 246.239 111.515 246.239 110.616 \
- 246.239 110.054 246.239 109.154 246.239 107.243 \
- 247.251 106.343 247.251 105.444 247.7 104.994 247.7 \
- 103.083 248.15 102.183 248.6 101.621 248.6 101.172 \
- 249.05 100.722 249.499 99.822 250.062 98.361 250.062 \
- 97.461 249.499 97.012 249.499 96.562 249.05 96.562 \
- 248.6 97.012 248.15 99.822 245.789 100.272 245.339 \
- 101.621 244.44 101.621 243.878 102.183 243.428 \
- 102.633 243.428 102.633 242.978 103.982 241.629 \
- 103.982 241.067 103.982 240.617 103.982 240.167 \
- 105.444 239.268 108.705 236.907 108.705 236.457 \
- 109.154 236.457 110.054 235.445 111.066 234.546 \
- 112.415 234.096 112.865 233.646 113.427 233.646 \
- 113.877 233.646 113.877 234.096 114.326 234.995 \
- 114.776 235.445 114.776 236.457 114.326 237.357 \
- 113.427 238.818 112.415 239.268 112.415 240.167 \
- 111.965 240.167 111.515 240.617 110.054 241.629 \
- 110.054 242.079 109.604 242.529 108.705 242.978 \
- 110.054 242.978 113.427 242.079 114.326 242.529 \
- 115.226 242.978 116.687 244.44 119.048 246.689 \
- 119.498 247.7 119.498 248.15 119.948 248.6 119.948 \
- 249.05 120.398 249.05 120.398 249.499 120.847 \
- 249.499 120.847 250.062 121.297 250.511 121.297 \
- 251.411 121.859 252.31 122.759 252.872 122.759 \
- 254.222 122.759 254.671 123.658 258.494 123.658 \
- 258.944 -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 147.607 215.769 148.506 215.32 \
- 148.506 217.231 148.506 217.681 148.506 218.13 \
- 148.956 218.58 148.506 220.492 148.506 220.941 \
- 148.506 222.853 148.956 224.764 148.956 226.113 \
- 148.506 226.563 148.956 226.563 148.506 228.924 \
- 148.956 229.824 148.956 231.285 148.506 232.185 \
- 148.956 232.634 148.956 233.646 149.405 234.995 \
- 148.956 234.995 149.405 235.445 149.405 236.907 \
- 149.405 237.357 149.968 238.818 150.867 240.167 \
- 150.867 240.617 151.317 242.079 152.216 243.428 \
- 153.228 245.339 154.128 245.789 155.027 246.239 \
- 156.939 245.789 157.388 246.239 156.489 246.689 \
- 155.027 247.7 154.128 247.7 153.228 247.7 152.216 \
- 247.7 151.767 247.7 150.867 247.251 150.417 246.239 \
- 149.405 246.239 148.056 245.339 147.607 244.44 \
- 147.157 243.428 145.695 241.629 145.695 240.617 \
- 145.245 240.167 145.245 239.718 144.796 238.256 \
- 144.346 236.907 144.346 235.445 143.784 234.546 \
- 143.784 233.197 143.784 232.185 143.784 230.835 \
- 143.334 229.824 143.784 229.374 143.334 229.374 \
- 143.334 228.474 142.884 230.386 141.985 231.735 \
- 140.973 233.197 140.523 234.096 140.523 234.546 \
- 140.523 234.995 139.624 236.457 139.174 237.806 \
- 138.162 239.718 137.263 241.067 136.813 242.079 \
- 135.913 242.978 134.452 244.89 134.002 245.789 \
- 133.552 245.789 132.091 246.689 131.191 247.251 \
- 129.73 248.15 129.28 248.15 128.38 247.7 128.38 \
- 248.15 126.919 247.7 126.019 247.251 125.12 246.239 \
- 125.12 245.339 124.67 244.89 124.67 244.44 124.67 \
- 243.428 124.67 242.529 124.67 241.067 124.67 239.718 \
- 125.12 239.268 124.67 239.268 124.67 238.256 125.12 \
- 237.806 125.12 237.357 125.12 236.907 125.12 236.007 \
- 125.12 234.096 125.57 233.197 125.57 232.185 126.019 \
- 232.185 126.019 231.285 126.019 230.386 126.019 \
- 229.374 126.469 228.474 126.469 227.013 126.469 \
- 225.214 126.019 225.214 126.469 225.214 126.019 \
- 223.302 126.019 221.953 126.019 220.492 125.57 \
- 220.042 125.12 219.592 124.108 219.142 123.209 \
- 219.142 121.859 220.042 121.297 220.042 120.398 \
- 220.941 119.498 221.391 119.048 221.391 118.486 \
- 221.953 118.037 221.953 118.037 221.391 118.486 \
- 220.941 119.498 220.042 120.847 219.142 122.759 \
- 217.681 124.108 216.781 125.12 215.769 126.469 \
- 214.87 126.919 214.87 127.481 214.87 128.38 214.87 \
- 128.83 214.87 129.73 214.87 129.73 215.769 130.292 \
- 215.769 130.742 216.781 130.742 217.681 130.292 \
- 219.142 130.292 221.953 130.292 223.302 130.292 \
- 224.202 129.73 225.214 129.28 227.013 128.83 227.575 \
- 129.28 227.575 129.28 228.474 128.83 229.374 129.28 \
- 229.824 129.28 230.386 128.83 231.735 128.38 234.096 \
- 128.38 234.995 127.931 236.457 127.931 239.268 \
- 127.931 240.167 127.931 241.629 128.83 242.978 \
- 129.28 243.878 129.73 244.44 130.742 244.44 131.191 \
- 244.44 132.091 244.44 133.103 243.878 134.002 \
- 242.978 134.902 242.079 135.351 241.067 135.913 \
- 240.167 136.363 239.268 136.813 238.818 137.263 \
- 237.806 137.712 236.907 138.162 235.445 138.724 \
- 234.546 139.174 233.646 139.624 232.634 140.523 \
- 230.835 140.973 228.924 141.535 227.013 142.435 \
- 225.664 142.884 223.302 143.334 221.391 143.334 \
- 220.941 143.334 219.142 144.346 217.681 144.796 \
- 216.781 145.695 216.332 146.595 216.332 147.607 \
- 215.769 -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 165.371 241.067 165.371 \
- 241.067 164.921 243.878 164.921 246.239 163.46 \
- 246.689 161.211 247.251 160.649 247.251 160.199 \
- 244.44 160.199 243.878 160.199 243.428 160.199 \
- 242.079 160.199 240.167 160.199 239.718 159.749 \
- 239.268 160.199 237.806 159.749 237.357 159.749 \
- 236.007 159.749 230.835 159.749 229.824 159.749 \
- 228.924 159.749 226.113 159.749 225.664 159.749 \
- 223.752 159.749 222.853 159.749 218.58 159.749 \
- 218.13 159.749 217.681 160.199 217.231 161.661 \
- 216.781 162.11 216.781 162.56 216.781 163.46 216.781 \
- 164.022 219.142 163.46 222.403 163.46 222.853 163.46 \
- 224.202 163.46 225.664 163.46 226.563 163.46 227.013 \
- 163.46 228.924 163.01 230.835 163.01 232.634 163.46 \
- 233.197 164.022 232.634 164.472 232.634 164.921 \
- 232.185 164.921 231.735 165.371 231.735 165.821 \
- 232.185 165.371 233.646 165.821 236.007 165.371 \
- 238.256 165.371 238.818 165.371 240.617 165.371 \
- 241.067 -fill $pengcolor -outline {} -width 1 -tags logo
-
- $c create polygon 165.821 214.42 166.833 215.32 \
- 166.271 215.32 165.821 216.332 165.371 216.332 \
- 165.371 216.781 165.821 217.681 165.821 218.13 \
- 165.371 219.142 165.371 220.042 164.921 222.853 \
- 165.371 224.764 164.921 225.664 165.371 227.575 \
- 165.371 228.474 164.921 228.474 164.472 227.575 \
- 164.472 226.113 164.022 224.764 164.472 224.202 \
- 164.472 223.752 164.472 222.403 164.921 214.87 \
- 164.472 213.521 164.472 212.959 164.472 212.509 \
- 164.022 212.509 163.46 212.509 163.01 212.959 162.56 \
- 212.959 161.661 212.959 161.211 212.059 161.211 \
- 211.609 160.649 211.609 160.199 209.698 160.649 \
- 208.349 163.46 206.437 164.472 206.437 165.821 \
- 207.899 165.821 208.349 166.833 210.148 166.833 \
- 210.71 165.821 211.609 165.371 212.059 165.371 \
- 212.959 165.821 213.97 165.821 214.42 -fill $pengcolor \
- -outline {} -width 1 -tags logo
-
- $c create polygon 201.462 248.6 201.462 249.05 \
- 201.012 249.05 200.563 249.05 200.001 248.6 199.551 \
- 248.6 198.651 247.7 197.752 247.251 196.74 246.689 \
- 196.29 245.789 194.379 244.89 194.379 244.44 194.379 \
- 242.529 193.929 242.079 193.479 240.617 193.479 \
- 240.167 193.929 239.718 193.479 239.268 193.03 \
- 236.457 192.58 234.096 192.58 233.197 192.58 231.735 \
- 192.58 223.302 192.58 221.391 192.13 220.941 191.568 \
- 221.953 189.769 226.113 189.319 226.563 189.319 \
- 227.013 188.757 228.025 188.307 228.474 188.757 \
- 228.474 185.497 234.096 185.047 234.995 184.597 \
- 236.457 184.147 236.457 184.147 236.907 184.147 \
- 237.357 183.136 239.268 182.686 239.268 182.686 \
- 239.718 182.236 240.167 181.786 241.067 181.337 \
- 242.529 180.887 242.529 180.887 243.878 179.425 \
- 245.789 178.975 246.689 178.076 246.689 178.076 \
- 247.251 177.064 247.7 175.715 247.7 175.265 247.7 \
- 174.703 247.7 174.253 247.251 174.253 246.689 \
- 174.253 245.789 173.804 242.079 174.253 242.079 \
- 173.804 241.629 173.804 241.067 173.804 238.818 \
- 173.804 237.806 173.804 236.457 173.354 234.546 \
- 173.354 233.197 173.804 232.634 173.804 232.185 \
- 173.804 231.735 173.804 228.924 173.354 227.575 \
- 173.804 227.575 173.804 225.664 173.804 225.214 \
- 173.804 224.764 173.804 223.302 173.804 217.231 \
- 174.253 216.332 174.703 215.769 178.526 214.87 \
- 179.425 215.32 179.425 216.332 179.425 217.681 \
- 179.425 218.58 178.975 219.142 178.526 220.492 \
- 178.526 220.941 178.076 221.391 178.076 221.953 \
- 178.076 225.664 177.514 226.563 177.514 228.025 \
- 177.064 228.474 177.064 228.924 177.064 230.835 \
- 177.514 236.457 177.064 237.806 177.514 237.806 \
- 177.514 238.818 177.514 240.617 177.514 241.067 \
- 178.076 241.629 178.526 241.629 179.425 241.067 \
- 179.875 240.617 179.875 240.167 180.325 239.268 \
- 181.337 238.256 182.236 236.457 183.698 234.546 \
- 184.147 233.197 185.497 230.835 186.509 229.824 \
- 187.408 227.575 187.408 227.013 187.408 226.563 \
- 187.858 225.664 188.307 225.214 188.757 224.764 \
- 188.757 224.202 189.319 222.403 190.219 220.941 \
- 191.118 217.681 192.13 215.769 194.379 214.87 \
- 194.941 214.87 196.74 214.42 196.74 215.769 196.29 \
- 215.769 196.29 216.332 196.29 216.781 196.74 219.592 \
- 196.74 220.492 196.29 221.391 196.74 224.764 196.29 \
- 225.664 196.29 226.113 196.29 227.575 196.74 229.374 \
- 197.19 235.445 198.202 239.268 198.202 239.718 \
- 198.202 241.067 198.202 242.529 198.651 242.978 \
- 199.101 243.878 199.101 244.44 199.551 244.89 \
- 200.001 246.239 201.462 248.6 -fill $pengcolor -outline \
- {} -width 1 -tags logo
-
- $c create polygon 71.714 185.412 71.714 110.869 \
- 81.496 110.869 82.845 110.981 83.969 111.431 85.094 \
- 112.106 86.105 113.118 86.893 114.467 87.567 116.041 \
- 88.017 117.39 88.242 118.065 88.467 118.852 88.579 \
- 119.639 88.804 120.538 88.916 121.438 89.029 122.337 \
- 89.141 123.349 89.254 124.361 89.366 125.485 89.366 \
- 126.61 89.478 127.734 89.478 128.971 89.478 130.208 \
- 89.478 131.444 89.478 132.456 89.478 133.468 89.478 \
- 134.48 89.366 135.492 89.254 136.391 89.254 137.291 \
- 89.141 138.19 89.029 139.09 88.916 139.877 88.804 \
- 140.664 88.691 141.451 88.579 142.238 88.354 143.362 \
- 88.129 144.374 87.904 145.386 87.567 146.398 87.342 \
- 147.297 87.005 148.197 86.668 148.984 86.218 149.771 \
- 87.005 151.233 87.342 152.02 87.68 152.919 87.904 \
- 153.931 88.129 154.943 88.129 155.505 88.354 156.854 \
- 88.354 157.641 88.354 158.428 88.467 159.328 88.467 \
- 160.34 88.467 161.352 88.467 162.476 88.579 163.6 \
- 88.579 164.837 88.579 166.186 88.579 166.973 88.691 \
- 167.873 88.804 168.885 88.916 169.897 89.029 171.021 \
- 89.029 172.258 89.029 173.719 89.029 175.068 89.029 \
- 176.305 89.029 177.542 89.141 178.554 89.141 179.566 \
- 89.141 180.353 89.141 181.14 89.254 181.814 89.366 \
- 182.714 89.478 183.051 89.478 185.412 83.857 185.412 \
- 83.857 184.738 83.744 183.951 83.744 183.276 83.744 \
- 182.489 83.744 180.803 83.857 179.791 83.857 178.891 \
- 83.857 177.879 83.857 176.867 83.857 175.743 83.857 \
- 174.619 83.857 173.27 83.857 172.033 83.744 170.908 \
- 83.744 170.009 83.632 169.109 83.632 168.322 83.52 \
- 166.973 83.407 166.524 83.407 166.186 83.407 165.062 \
- 83.407 164.05 83.295 163.151 83.295 162.251 83.295 \
- 161.464 83.182 160.789 82.957 159.553 81.945 158.203 \
- 80.596 157.754 76.886 157.754 76.886 185.412 71.714 \
- 185.412 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 92.289 148.309 92.289 147.185 \
- 92.289 146.061 92.289 145.049 92.402 143.924 92.402 \
- 142.8 92.402 141.788 92.402 140.664 92.514 139.652 \
- 92.514 138.64 92.627 137.628 92.627 136.616 92.739 \
- 135.717 92.739 134.705 92.851 133.805 92.964 132.793 \
- 92.964 131.894 93.076 130.995 93.301 129.196 93.414 \
- 128.409 93.526 127.509 93.639 126.722 93.751 125.935 \
- 93.863 125.148 93.976 124.361 94.313 122.787 94.426 \
- 122.112 94.65 121.325 94.763 120.651 95.1 119.301 \
- 95.55 117.615 96.112 116.041 96.674 114.692 97.236 \
- 113.455 97.799 112.443 98.361 111.544 99.035 110.757 \
- 99.71 110.082 100.385 109.632 101.059 109.295 \
- 101.846 109.07 102.633 108.958 104.207 109.295 \
- 104.882 109.632 105.556 110.082 106.231 110.757 \
- 106.906 111.544 107.468 112.443 108.03 113.455 \
- 108.592 114.692 109.154 116.041 109.604 117.615 \
- 110.054 119.301 110.279 119.976 110.616 121.325 \
- 110.841 122.112 110.953 122.787 111.178 123.574 \
- 111.403 125.148 111.628 125.935 111.74 126.722 \
- 111.853 127.622 111.965 128.409 112.078 129.308 \
- 112.19 130.208 112.302 130.995 112.415 132.006 \
- 112.64 133.805 112.752 134.817 112.865 135.717 \
- 112.977 136.729 112.977 137.741 113.089 138.752 \
- 113.089 139.764 113.202 140.776 113.202 141.788 \
- 113.314 142.912 113.314 143.924 113.314 145.049 \
- 113.427 146.061 113.427 147.185 113.427 148.309 \
- 113.427 149.546 113.314 150.783 113.314 151.907 \
- 113.314 153.032 113.314 154.156 113.202 155.28 \
- 113.202 156.405 113.089 157.529 113.089 158.541 \
- 112.977 159.553 112.865 160.565 112.752 161.576 \
- 112.64 162.588 112.527 163.6 112.415 164.5 112.302 \
- 165.512 112.19 166.411 112.078 167.311 111.965 \
- 168.21 111.853 169.109 111.628 169.897 111.515 \
- 170.796 111.403 171.583 111.178 172.37 111.066 \
- 173.157 110.616 174.731 110.504 175.518 110.279 \
- 176.193 110.054 176.98 109.604 178.666 109.154 \
- 180.128 108.592 181.59 108.03 182.826 107.468 \
- 183.951 106.906 184.963 106.231 185.75 105.556 \
- 186.424 104.882 186.986 104.207 187.436 103.42 \
- 187.661 102.633 187.661 101.846 187.661 101.059 \
- 187.436 100.385 186.986 99.71 186.424 99.035 185.75 \
- 98.361 184.963 97.799 183.951 97.236 182.826 96.674 \
- 181.59 96.112 180.128 95.55 178.666 95.1 176.98 \
- 94.988 176.193 94.763 175.518 94.538 174.731 94.426 \
- 173.944 94.088 172.37 93.976 171.583 93.863 170.796 \
- 93.639 169.897 93.526 169.109 93.414 168.21 93.301 \
- 167.311 93.189 166.411 93.076 165.512 92.964 164.5 \
- 92.964 163.6 92.851 162.588 92.739 161.576 92.627 \
- 160.565 92.627 159.553 92.514 158.541 92.514 157.529 \
- 92.514 156.405 92.402 155.28 92.402 154.156 92.402 \
- 153.032 92.289 151.907 92.289 150.783 92.289 149.546 \
- 92.289 148.309 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 121.859 110.869 127.481 \
- 110.869 134.902 185.412 129.28 185.412 127.931 \
- 171.808 120.847 171.808 119.948 185.412 114.326 \
- 185.412 121.859 110.869 -fill #000000 -outline {} \
- -width 1 -tags logo
-
- $c create polygon 137.263 185.412 137.263 \
- 110.869 147.157 110.869 148.394 110.981 149.518 \
- 111.431 150.417 112.106 151.317 113.118 152.104 \
- 114.467 152.778 116.041 153.228 117.39 153.341 \
- 118.065 153.566 118.852 153.903 120.538 154.015 \
- 121.438 154.128 122.337 154.24 123.349 154.353 \
- 124.361 154.465 125.485 154.465 126.61 154.577 \
- 127.734 154.577 128.971 154.577 130.208 154.577 \
- 131.444 154.577 132.456 154.577 133.468 154.577 \
- 134.48 154.577 135.492 154.577 136.391 154.577 \
- 137.291 154.577 138.19 154.465 139.09 154.465 \
- 139.877 154.353 140.664 154.24 141.451 154.128 \
- 142.238 153.903 143.362 153.678 144.374 153.341 \
- 145.386 153.003 146.398 152.554 147.297 152.216 \
- 148.197 151.767 148.984 151.317 149.771 152.104 \
- 151.233 152.441 152.02 152.778 152.919 153.003 \
- 153.931 153.228 154.943 153.341 155.505 153.453 \
- 156.854 153.566 157.641 153.678 158.428 153.79 \
- 159.328 153.903 160.34 154.015 161.352 154.015 \
- 162.476 154.128 163.6 154.128 164.837 154.128 \
- 166.186 154.128 166.973 154.128 167.873 154.128 \
- 168.885 154.128 169.897 154.128 171.021 154.128 \
- 172.258 154.128 173.719 154.24 175.068 154.24 \
- 176.305 154.353 177.542 154.353 178.554 154.465 \
- 179.566 154.577 180.353 154.69 181.14 154.69 181.814 \
- 154.915 182.714 155.027 183.051 155.027 185.412 \
- 149.405 185.412 149.405 184.738 149.293 183.951 \
- 149.293 183.276 149.181 182.489 149.181 180.803 \
- 149.068 179.791 149.068 178.891 149.068 177.879 \
- 149.068 176.867 148.956 175.743 148.956 174.619 \
- 148.956 173.27 148.956 172.033 148.956 170.908 \
- 148.956 170.009 148.956 169.109 148.956 168.322 \
- 148.956 166.973 148.956 166.524 148.956 166.186 \
- 148.956 165.062 148.843 164.05 148.731 163.151 \
- 148.618 162.251 148.506 161.464 148.394 160.789 \
- 148.056 159.553 147.269 158.203 146.145 157.754 \
- 142.435 157.754 142.435 185.412 137.263 185.412 \
- -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 158.4 185.412 158.4 110.869 \
- 164.022 110.869 164.022 185.412 158.4 185.412 -fill \
- #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 168.182 185.412 168.182 \
- 110.869 173.804 110.869 177.514 135.267 177.739 \
- 136.054 177.851 136.954 177.964 137.853 178.076 \
- 138.752 178.301 139.539 178.413 140.439 178.526 \
- 141.338 178.751 143.137 178.975 144.037 179.088 \
- 144.824 179.2 145.723 179.313 146.623 179.425 147.41 \
- 179.538 148.422 179.763 149.321 179.875 150.333 \
- 180.1 151.233 180.212 152.132 180.437 153.032 180.55 \
- 154.043 180.774 154.943 180.887 155.842 180.999 \
- 156.742 181.224 157.754 181.337 158.653 181.337 \
- 157.641 181.224 156.629 181.224 155.617 181.224 \
- 154.606 181.224 153.594 181.112 152.582 181.112 \
- 151.682 181.112 150.67 180.999 149.771 180.999 \
- 148.759 180.999 147.86 180.887 146.96 180.887 \
- 145.948 180.887 145.049 180.887 144.149 180.887 \
- 143.25 180.887 142.125 180.887 141.114 180.887 \
- 140.102 180.887 139.09 180.887 138.078 180.887 \
- 137.178 180.887 136.166 180.887 135.267 180.887 \
- 134.368 180.887 133.468 180.887 132.569 180.887 \
- 131.669 180.887 130.882 180.887 130.095 180.887 \
- 110.869 185.946 110.869 185.946 185.412 180.325 \
- 185.412 176.165 160.565 176.052 159.778 175.94 \
- 158.99 175.827 158.203 175.602 156.517 175.49 \
- 155.617 175.378 154.718 175.265 153.931 175.153 \
- 153.032 175.04 152.02 174.928 151.12 174.703 150.221 \
- 174.591 149.321 174.478 148.422 174.366 147.41 \
- 174.141 146.51 174.028 145.611 173.804 144.599 \
- 173.691 143.587 173.579 142.575 173.354 141.676 \
- 173.241 140.551 173.017 139.539 172.904 138.528 \
- 172.904 139.539 172.904 140.551 173.017 141.563 \
- 173.017 142.575 173.017 143.587 173.129 144.599 \
- 173.129 145.498 173.129 146.51 173.241 147.41 \
- 173.241 148.422 173.241 149.321 173.354 150.221 \
- 173.354 151.233 173.354 152.132 173.354 153.144 \
- 173.354 154.156 173.354 155.055 173.354 156.067 \
- 173.354 156.967 173.354 157.866 173.354 158.766 \
- 173.354 159.553 173.354 160.452 173.354 161.239 \
- 173.354 162.026 173.354 162.926 173.354 185.412 \
- 168.182 185.412 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 206.184 185.412 205.622 \
- 175.968 205.397 177.092 205.172 178.217 204.948 \
- 179.228 204.61 180.128 204.385 181.027 204.048 \
- 181.814 203.823 182.489 203.486 183.164 203.149 \
- 183.838 202.811 184.4 202.024 185.75 201.125 186.762 \
- 200.113 187.436 199.101 187.661 198.089 187.549 \
- 197.19 186.986 196.29 186.087 195.391 184.85 194.941 \
- 184.176 194.491 183.389 194.042 182.489 193.592 \
- 181.477 193.255 180.465 192.805 179.341 192.467 \
- 178.217 192.13 176.98 191.905 176.193 191.68 175.406 \
- 191.568 174.619 191.456 173.832 191.231 172.932 \
- 191.118 172.145 191.006 171.246 190.781 169.559 \
- 190.669 168.66 190.556 167.648 190.444 166.748 \
- 190.331 165.736 190.219 164.725 190.106 163.825 \
- 189.994 162.926 189.994 162.026 189.882 161.127 \
- 189.769 160.227 189.769 159.215 189.657 158.316 \
- 189.544 157.304 189.544 156.405 189.432 155.393 \
- 189.432 154.381 189.319 153.369 189.319 152.357 \
- 189.319 151.345 189.319 150.333 189.319 149.321 \
- 189.319 148.197 189.319 146.96 189.319 145.948 \
- 189.319 144.824 189.319 143.7 189.319 142.688 \
- 189.432 141.563 189.432 140.551 189.544 139.539 \
- 189.544 138.528 189.544 137.516 189.657 136.504 \
- 189.769 135.492 189.769 134.592 189.882 133.581 \
- 189.994 132.681 189.994 131.782 190.106 130.882 \
- 190.219 129.983 190.331 129.083 190.556 127.397 \
- 190.669 126.61 190.781 125.823 191.006 124.923 \
- 191.118 124.136 191.231 123.462 191.568 121.887 \
- 191.793 121.213 191.905 120.426 192.13 119.751 \
- 192.58 117.952 193.142 116.378 193.704 114.917 \
- 194.266 113.567 194.941 112.443 195.616 111.431 \
- 196.29 110.532 196.965 109.857 197.752 109.295 \
- 198.426 108.845 199.214 108.62 200.001 108.508 \
- 201.799 108.958 202.699 109.407 203.374 110.194 \
- 204.161 111.094 204.835 112.218 205.51 113.567 \
- 206.184 115.141 206.634 116.491 206.859 117.165 \
- 206.971 117.952 207.421 119.526 207.534 120.426 \
- 207.758 121.325 207.871 122.225 207.983 123.124 \
- 208.096 124.136 208.208 125.036 208.321 126.047 \
- 208.433 127.172 208.545 128.184 208.658 129.308 \
- 208.77 130.32 208.77 131.557 208.883 132.681 208.995 \
- 133.805 204.273 133.805 204.161 132.681 203.936 \
- 131.557 203.711 130.432 203.486 129.533 203.261 \
- 128.633 202.924 127.734 202.699 126.947 202.362 \
- 126.385 201.35 124.586 200.001 124.024 199.438 \
- 124.136 198.989 124.361 198.426 124.923 197.977 \
- 125.598 197.527 126.497 197.077 127.622 196.628 \
- 128.971 196.29 130.545 196.178 131.219 195.953 \
- 132.681 195.84 133.356 195.728 134.143 195.616 \
- 134.93 195.503 135.829 195.278 137.516 195.278 \
- 138.303 195.166 139.315 195.166 140.214 195.053 \
- 141.114 195.053 142.125 194.941 143.137 194.941 \
- 144.149 194.941 145.161 194.941 146.173 194.941 \
- 147.297 194.941 148.309 194.941 149.546 194.941 \
- 150.67 194.941 151.907 194.941 152.919 195.053 \
- 154.043 195.053 155.168 195.166 156.18 195.166 \
- 157.192 195.278 158.091 195.391 159.103 195.391 \
- 160.002 195.503 160.902 195.616 161.801 195.728 \
- 162.588 195.84 163.375 196.065 164.162 196.178 \
- 164.949 196.29 165.736 196.628 167.198 197.077 \
- 168.547 197.527 169.672 197.977 170.571 198.426 \
- 171.246 198.989 171.808 199.438 172.145 200.001 \
- 172.258 200.9 171.92 201.575 171.246 202.249 170.009 \
- 202.811 168.547 203.149 167.76 203.374 166.973 \
- 203.598 166.186 203.823 165.399 204.048 164.5 \
- 204.273 163.488 204.385 162.476 204.498 161.464 \
- 204.61 160.34 204.723 159.103 200.001 159.103 \
- 200.001 145.049 209.445 145.049 209.445 185.412 \
- 206.184 185.412 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 148.506 261.305 148.506 \
- 263.554 143.784 263.554 143.784 261.305 143.671 \
- 260.068 143.334 259.394 142.772 259.056 141.985 \
- 258.944 141.085 259.056 140.523 259.394 140.074 \
- 261.755 140.074 263.104 140.523 264.678 141.085 \
- 265.465 141.985 266.364 146.145 270.637 147.607 \
- 271.874 148.506 272.998 148.843 274.01 148.956 \
- 275.359 148.956 277.158 148.843 278.507 148.506 \
- 279.632 147.944 280.643 147.157 281.43 146.482 \
- 281.88 145.695 282.218 144.796 282.442 143.784 \
- 282.667 142.659 282.78 141.535 282.78 140.298 282.78 \
- 139.286 282.78 138.387 282.667 137.6 282.442 136.925 \
- 282.218 136.363 281.88 135.576 281.093 135.014 \
- 280.194 134.564 278.957 134.452 277.608 134.452 \
- 275.359 139.624 275.359 139.624 277.608 139.736 \
- 279.069 140.074 279.969 141.535 280.419 142.659 \
- 280.081 143.334 279.519 143.671 278.62 143.784 \
- 277.158 143.784 275.809 143.671 275.022 143.334 \
- 274.235 142.772 273.448 141.985 272.548 137.263 \
- 267.376 136.251 266.364 135.351 265.465 135.014 \
- 264.565 134.902 263.554 134.902 261.755 135.014 \
- 260.518 135.464 259.506 136.026 258.719 136.813 \
- 257.932 137.488 257.595 138.275 257.145 139.174 \
- 256.92 140.186 256.695 141.31 256.583 142.435 \
- 256.583 143.447 256.583 144.458 256.583 145.245 \
- 256.695 145.92 256.92 147.157 257.482 147.719 \
- 258.157 148.169 258.944 148.394 260.068 148.506 \
- 261.305 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 165.821 270.187 165.821 \
- 276.708 165.821 277.833 165.708 278.957 165.483 \
- 279.856 165.259 280.643 164.921 281.318 164.472 \
- 281.88 163.909 282.218 163.235 282.555 162.448 \
- 282.667 161.548 282.78 160.536 282.78 159.3 282.78 \
- 158.175 282.78 157.051 282.78 156.151 282.667 \
- 155.364 282.555 154.69 282.218 154.128 281.88 \
- 153.678 281.318 153.341 280.643 153.116 279.856 \
- 152.891 278.845 152.778 277.833 152.778 276.708 \
- 152.778 270.187 152.778 269.063 152.891 268.051 \
- 153.116 267.264 153.341 266.589 154.128 265.465 \
- 155.364 264.678 156.151 264.453 157.051 264.228 \
- 158.063 264.116 159.3 264.116 160.424 264.116 \
- 161.548 264.228 162.448 264.453 163.235 264.678 \
- 163.909 265.015 164.472 265.465 164.921 265.915 \
- 165.483 267.264 165.708 268.051 165.821 269.063 \
- 165.821 270.187 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 177.514 256.583 177.514 \
- 258.494 177.064 258.494 176.165 258.606 175.715 \
- 258.944 175.378 259.281 175.265 259.843 175.265 \
- 264.565 177.514 264.565 177.514 266.927 175.265 \
- 266.927 175.265 282.78 170.543 282.78 170.543 \
- 266.927 168.632 266.927 168.632 264.565 170.543 \
- 264.565 170.543 261.305 170.655 259.843 170.993 \
- 258.606 171.442 257.707 171.892 257.032 173.579 \
- 256.358 174.703 256.133 176.165 256.133 176.727 \
- 256.133 177.064 256.133 177.514 256.583 -fill \
- #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 185.946 259.843 185.946 \
- 264.565 188.757 264.565 188.757 266.927 185.946 \
- 266.927 185.946 278.62 186.171 279.407 186.509 \
- 279.969 187.071 280.306 187.858 280.419 188.307 \
- 280.419 188.757 280.419 188.757 282.78 188.645 \
- 282.78 188.307 282.78 187.183 282.78 186.509 282.78 \
- 185.159 282.78 183.923 282.555 182.911 282.33 \
- 182.236 281.88 181.786 281.206 181.561 280.419 \
- 181.337 279.407 181.337 278.17 181.337 266.927 \
- 179.425 266.927 179.425 264.565 181.337 264.565 \
- 181.337 261.305 185.946 259.843 -fill #000000 \
- -outline {} -width 1 -tags logo
-
- $c create polygon 190.219 264.565 194.379 \
- 264.565 196.29 279.519 196.74 279.519 199.101 \
- 264.565 204.723 264.565 207.084 279.519 207.534 \
- 279.519 209.895 264.565 213.605 264.565 209.895 \
- 282.78 204.723 282.78 201.912 267.376 201.462 \
- 267.376 199.101 282.78 193.479 282.78 190.219 \
- 264.565 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 229.121 269.175 229.121 282.78 \
- 224.848 282.78 224.848 280.981 224.061 281.768 \
- 223.049 282.33 221.925 282.667 220.688 282.78 \
- 219.564 282.78 218.44 282.555 217.54 282.33 216.866 \
- 281.88 216.528 281.318 216.191 280.531 216.079 \
- 279.632 215.966 278.62 215.966 275.359 216.079 \
- 274.347 216.978 272.998 217.877 272.548 218.44 \
- 272.211 219.114 271.986 219.789 271.761 220.688 \
- 271.536 221.588 271.424 222.6 271.311 223.724 \
- 271.199 224.848 271.087 224.848 269.175 224.736 \
- 267.826 224.399 266.927 223.612 266.477 222.487 \
- 266.364 221.7 266.477 221.138 266.927 220.688 \
- 268.726 220.688 269.175 216.416 269.175 216.528 \
- 267.938 216.753 266.702 217.203 265.69 217.877 \
- 265.015 218.44 264.678 219.114 264.453 219.901 \
- 264.228 220.801 264.116 221.925 264.116 223.049 \
- 264.116 224.061 264.116 225.073 264.116 225.86 \
- 264.228 226.535 264.453 227.659 265.015 228.334 \
- 265.69 228.783 266.702 229.008 267.938 229.121 \
- 269.175 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 243.175 264.565 243.175 \
- 266.927 242.725 266.927 241.601 266.927 240.701 \
- 267.151 239.914 267.489 239.352 267.826 239.015 \
- 268.276 238.678 268.95 238.565 269.737 238.453 \
- 270.637 238.453 282.78 233.731 282.78 233.731 \
- 264.565 238.453 264.565 238.453 265.915 239.352 \
- 265.128 240.364 264.565 242.163 264.116 242.725 \
- 264.565 243.175 264.565 -fill #000000 -outline {} \
- -width 1 -tags logo
-
- $c create polygon 258.129 270.187 258.129 \
- 274.347 249.696 274.347 249.696 278.17 249.809 \
- 279.294 250.146 279.969 250.708 280.643 251.607 \
- 280.981 252.732 280.643 253.406 279.969 253.744 \
- 279.294 253.969 278.17 253.969 276.708 258.129 \
- 276.708 258.129 277.608 258.129 278.957 257.904 \
- 280.081 257.454 281.093 256.779 281.88 256.217 \
- 282.218 254.643 282.667 253.744 282.78 252.732 \
- 282.78 251.607 282.78 250.371 282.78 249.359 282.78 \
- 248.459 282.667 247.672 282.442 246.436 281.88 \
- 245.986 281.318 245.649 280.643 245.424 279.856 \
- 245.199 278.957 245.086 277.833 244.974 276.708 \
- 244.974 270.187 245.086 269.063 245.199 268.051 \
- 245.311 267.264 245.649 266.589 245.986 265.915 \
- 246.436 265.465 246.998 265.015 247.672 264.678 \
- 248.459 264.453 249.359 264.228 250.371 264.116 \
- 251.607 264.116 252.732 264.116 253.744 264.228 \
- 254.756 264.453 255.543 264.678 256.217 265.015 \
- 256.779 265.465 257.229 265.915 257.566 266.589 \
- 257.791 267.264 258.016 268.051 258.129 269.063 \
- 258.129 270.187 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 272.183 256.583 277.355 \
- 256.583 277.355 282.78 272.183 282.78 272.183 \
- 256.583 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 295.569 268.726 295.569 282.78 \
- 290.959 282.78 290.959 269.175 290.847 268.051 \
- 290.509 267.376 289.947 266.702 289.048 266.364 \
- 287.923 266.702 287.136 267.376 287.024 268.051 \
- 287.136 269.175 287.136 282.78 282.527 282.78 \
- 282.527 264.565 286.687 264.565 287.136 265.915 \
- 288.036 265.128 289.048 264.565 290.172 264.228 \
- 291.409 264.116 292.533 264.116 293.433 264.341 \
- 294.107 264.565 294.669 265.015 295.344 266.477 \
- 295.569 267.489 295.569 268.726 -fill #000000 \
- -outline {} -width 1 -tags logo
-
- $c create polygon 312.434 269.737 312.434 \
- 270.637 308.274 270.637 308.274 269.175 308.161 \
- 267.826 307.824 266.927 307.262 266.477 306.363 \
- 266.364 305.576 266.477 305.013 266.927 304.676 \
- 267.826 304.564 269.175 304.564 278.17 304.676 \
- 279.294 305.013 279.969 306.363 280.981 307.262 \
- 280.643 307.824 279.969 307.937 279.294 307.824 \
- 278.17 307.824 276.259 312.434 276.259 312.434 \
- 277.608 312.434 278.957 312.209 280.081 311.759 \
- 281.093 311.085 281.88 310.523 282.218 309.173 \
- 282.667 308.386 282.78 307.374 282.78 306.363 282.78 \
- 305.238 282.78 304.226 282.78 303.327 282.667 \
- 302.427 282.442 301.753 282.218 301.191 281.88 \
- 300.853 281.318 300.516 280.643 300.179 279.856 \
- 299.954 278.957 299.841 277.833 299.841 276.708 \
- 299.841 270.187 299.841 269.063 299.954 268.051 \
- 300.179 267.264 300.404 266.589 301.191 265.465 \
- 302.427 264.678 303.327 264.453 304.226 264.228 \
- 305.238 264.116 306.363 264.116 307.374 264.116 \
- 308.386 264.228 309.173 264.453 309.96 264.678 \
- 310.523 265.015 311.085 265.465 311.759 266.252 \
- 312.209 267.264 312.434 268.388 312.434 269.737 \
- -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 316.706 279.069 320.866 \
- 279.069 320.866 282.78 316.706 282.78 316.706 \
- 279.069 -fill #000000 -outline {} -width 1 -tags logo
-
- $c create polygon 48.215 186.312 48.215 185.412 \
- 47.766 184.4 47.766 183.501 47.316 183.501 47.316 \
- 182.601 46.416 181.59 46.416 181.14 45.967 180.24 \
- 45.405 179.791 44.955 179.228 44.055 178.329 43.606 \
- 177.879 43.156 177.43 42.144 176.98 41.694 176.418 \
- 41.245 175.968 38.883 175.068 36.972 174.169 36.522 \
- 174.169 35.173 173.607 34.723 174.169 31.913 173.607 \
- 31.913 174.169 29.551 173.607 29.551 174.169 28.54 \
- 174.169 28.09 174.619 27.19 174.169 27.19 174.619 \
- 26.741 174.619 25.729 175.068 23.93 175.518 22.918 \
- 175.068 22.468 175.518 20.669 176.418 19.657 176.418 \
- 15.048 178.779 14.036 179.228 12.686 180.24 12.237 \
- 180.69 11.225 181.59 10.775 182.039 10.325 182.601 \
- 10.775 182.601 10.325 184.4 10.775 184.85 11.225 \
- 186.312 14.036 188.223 14.485 188.673 16.846 190.022 \
- 17.296 190.472 17.296 191.034 15.947 191.933 15.048 \
- 192.383 14.485 192.833 14.036 193.283 13.136 193.845 \
- 12.237 194.295 12.686 195.644 12.686 196.094 12.237 \
- 197.555 12.237 198.005 11.675 198.904 12.237 200.816 \
- 12.237 202.277 12.237 204.526 11.675 205.988 12.237 \
- 205.988 12.237 206.437 12.237 207.337 12.686 208.349 \
- 12.686 209.248 13.136 209.698 12.686 211.16 13.136 \
- 212.509 13.136 213.521 13.586 215.32 13.586 216.781 \
- 13.586 217.681 14.036 220.492 14.485 222.403 15.048 \
- 222.853 15.947 222.853 15.947 222.403 16.397 221.953 \
- 16.846 216.781 17.296 215.32 17.858 211.609 18.308 \
- 210.71 18.308 210.148 18.308 209.248 17.858 208.798 \
- 17.858 207.899 18.308 206.437 18.308 205.538 18.308 \
- 205.088 18.308 203.627 16.846 203.627 15.947 203.177 \
- 15.947 202.727 15.947 202.277 16.397 201.715 16.846 \
- 201.715 17.858 201.715 18.308 201.715 18.758 201.265 \
- 18.308 200.816 17.858 199.916 18.308 198.455 17.858 \
- 198.455 17.858 193.283 19.208 192.383 20.107 191.933 \
- 21.569 191.484 22.018 191.484 22.918 192.383 22.918 \
- 192.833 23.48 192.833 23.93 198.005 23.48 199.467 \
- 23.93 202.277 25.279 202.277 29.551 202.727 30.001 \
- 202.277 30.901 202.277 31.913 202.277 35.623 201.265 \
- 36.522 201.265 36.972 200.816 37.984 200.816 38.883 \
- 200.816 39.333 200.366 40.345 199.916 40.795 199.916 \
- 42.594 198.455 44.055 198.005 44.055 197.555 44.505 \
- 197.105 46.416 195.644 46.416 194.744 46.866 194.295 \
- 47.316 193.845 47.766 193.283 47.316 192.833 48.215 \
- 190.472 48.215 190.022 48.215 189.572 48.215 188.673 \
- 48.215 187.211 48.215 186.762 48.215 186.312 -fill \
- $bg -outline {} -width 1 -tags logo
-
- $c create polygon 76.886 142.688 81.046 142.688 \
- 82.508 142.35 83.407 140.889 83.632 140.327 83.969 \
- 138.865 84.082 137.965 84.194 137.066 84.307 136.054 \
- 84.307 134.93 84.307 133.805 84.307 132.456 84.194 \
- 131.332 84.082 130.208 83.857 129.308 83.632 128.409 \
- 83.407 127.734 82.395 126.272 81.046 125.823 76.886 \
- 125.823 76.886 142.688 -fill $bg -outline {} -width \
- 1 -tags logo
-
- $c create polygon 97.461 148.309 97.461 149.546 \
- 97.461 150.783 97.461 152.02 97.574 153.144 97.574 \
- 154.268 97.686 155.28 97.686 156.405 97.799 157.416 \
- 97.799 158.316 97.911 159.328 98.023 160.227 98.136 \
- 161.127 98.361 162.701 98.473 163.488 98.586 164.275 \
- 98.698 164.949 98.81 165.736 99.373 167.535 99.822 \
- 169.109 100.497 170.234 101.059 171.133 101.846 \
- 171.583 102.633 171.808 104.095 171.133 104.769 \
- 170.234 105.332 169.109 105.894 167.535 106.343 \
- 165.736 106.456 164.949 106.681 164.275 106.793 \
- 163.488 106.906 162.701 107.018 161.914 107.243 \
- 160.227 107.355 159.328 107.355 158.316 107.468 \
- 157.416 107.58 156.405 107.58 155.28 107.693 154.268 \
- 107.693 153.144 107.693 152.02 107.693 150.783 \
- 107.805 149.546 107.805 148.309 107.805 147.073 \
- 107.693 145.836 107.693 144.711 107.693 143.587 \
- 107.693 142.463 107.58 141.338 107.58 140.327 \
- 107.468 139.315 107.355 138.303 107.355 137.403 \
- 107.243 136.504 107.131 135.604 106.906 133.918 \
- 106.793 133.131 106.681 132.456 106.456 131.669 \
- 106.343 130.995 105.894 129.196 105.332 127.622 \
- 104.769 126.497 104.095 125.598 103.42 125.148 \
- 102.633 124.923 101.846 125.148 101.059 125.598 \
- 100.497 126.497 99.822 127.622 99.373 129.196 98.81 \
- 130.995 98.698 131.669 98.586 132.456 98.473 133.131 \
- 98.361 133.918 98.248 134.817 98.023 136.504 97.911 \
- 137.403 97.799 138.303 97.799 139.315 97.686 140.327 \
- 97.686 141.338 97.574 142.463 97.574 143.587 97.461 \
- 144.711 97.461 145.836 97.461 147.073 97.461 148.309 \
- -fill $bg -outline {} -width 1 -tags logo
-
- $c create polygon 122.309 156.292 126.919 \
- 156.292 124.67 130.545 122.309 156.292 -fill $bg \
- -outline {} -width 1 -tags logo
-
- $c create polygon 142.435 142.688 146.145 \
- 142.688 147.607 142.35 148.506 140.889 148.731 \
- 140.327 149.068 138.865 149.181 137.965 149.293 \
- 137.066 149.405 136.054 149.405 134.93 149.405 \
- 133.805 149.405 132.456 149.405 131.332 149.405 \
- 130.208 149.293 129.308 149.181 128.409 148.956 \
- 127.734 148.056 126.272 146.595 125.823 142.435 \
- 125.823 142.435 142.688 -fill $bg -outline {} -width \
- 1 -tags logo
-
- $c create polygon 111.515 228.924 111.515 \
- 227.575 111.066 225.664 108.705 221.391 108.255 \
- 220.042 108.255 219.142 108.255 218.58 108.255 \
- 218.13 107.805 217.681 106.793 218.58 104.994 \
- 220.941 104.432 221.953 102.633 224.202 102.183 \
- 224.764 101.621 225.214 99.822 228.474 97.461 \
- 233.197 97.461 234.096 97.461 234.995 97.911 235.445 \
- 98.361 236.007 99.822 236.457 102.633 236.457 \
- 104.432 235.445 105.894 234.995 106.343 234.546 \
- 106.793 234.546 107.805 233.646 110.616 230.835 \
- 111.515 229.824 111.515 229.374 111.515 228.924 \
- -fill $bg -outline {} -width 1 -tags logo
-
- $c create polygon 161.211 269.175 160.986 \
- 267.826 160.649 266.927 160.199 266.477 159.3 \
- 266.364 158.4 266.477 157.838 266.927 157.613 \
- 267.826 157.388 269.175 157.388 278.17 157.613 \
- 279.294 157.838 279.969 159.3 280.981 160.199 \
- 280.643 160.649 279.969 160.986 279.294 161.211 \
- 278.17 161.211 269.175 -fill $bg -outline {} -width \
- 1 -tags logo
-
- $c create polygon 224.848 273.448 223.836 \
- 273.448 222.825 273.56 222.15 273.673 221.588 \
- 273.897 220.913 274.684 220.688 275.809 220.688 \
- 278.17 220.801 279.294 221.138 279.969 221.7 280.643 \
- 222.487 280.981 223.612 280.643 224.399 279.969 \
- 224.736 279.294 224.848 278.17 224.848 273.448 -fill \
- $bg -outline {} -width 1 -tags logo
-
- $c create polygon 253.969 269.175 253.744 \
- 267.826 253.406 266.927 252.732 266.477 251.607 \
- 266.364 250.708 266.477 250.146 266.927 249.696 \
- 269.175 249.696 272.548 253.969 272.548 253.969 \
- 269.175 -fill $bg -outline {} -width 1 -tags logo
-
-}
-
-#***********************************************************************
-# %PROCEDURE: LoadConnectionInfo
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Loads the connection information into the global ConnectionInfo variable
-#***********************************************************************
-proc LoadConnectionInfo {} {
- global ConnectionInfoFile ConnectionInfo PasswordFile
- set ConnectionInfo {}
- if {![file exists $ConnectionInfoFile]} {
- return
- }
- set problem [catch {
- set fp [open $ConnectionInfoFile "r"]
- while {1} {
- if {[gets $fp line] < 0} {
- break
- }
- set line [string trim $line]
- if {[string match "#*" $line]} {
- continue
- }
- if {"$line" == ""} {
- continue
- }
- set ConnectionInfo $line
- break
- }
- close $fp
- } err]
- if {$problem} {
- tk_dialog .err Error "Error loading configuration file: $err" error 0 OK
- }
- # Try loading and merging passwords if the password file is readable
- if {![file readable $PasswordFile]} {
- return
- }
-
- set fp [open $PasswordFile "r"]
- while {1} {
- if {[gets $fp line] < 0} {
- break
- }
- set line [string trim $line]
- if {[string match "#*" $line]} {
- continue
- }
- if {"$line" == ""} {
- continue
- }
- set passwords $line
- break
- }
- close $fp
-
- # Merge passwords
- foreach thing $passwords {
- set name [value $thing ConnectionName]
- set password [value $thing Password]
- set conn [GetConnection $name]
- if {"$conn" != ""} {
- lappend conn Password $password
- ReplaceConnection $conn
- }
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: GetConnection
-# %ARGUMENTS:
-# name -- name of connection
-# %RETURNS:
-# key/value pair listing connection configuration, or "" if not found.
-#***********************************************************************
-proc GetConnection { name } {
- global ConnectionInfo
- foreach thing $ConnectionInfo {
- if {[value $thing ConnectionName] == "$name"} {
- return $thing
- }
- }
- return ""
-}
-
-
-#***********************************************************************
-# %PROCEDURE: DeleteConnection
-# %ARGUMENTS:
-# name -- name of connection
-# %RETURNS:
-# Nothing, but deletes connection named "$name"
-#***********************************************************************
-proc DeleteConnection { name } {
- global ConnectionInfo ConfigDir
- set newInfo {}
- set found 0
- foreach thing $ConnectionInfo {
- if {[value $thing ConnectionName] == "$name"} {
- set found 1
- } else {
- lappend newInfo $thing
- }
- }
- if {!$found} {
- return
- }
- set ConnectionInfo $newInfo
- SaveConnectionInfo
-
- # Delete the config file
- set fname [file join $ConfigDir conf.$name]
- catch { file delete $fname }
-
- BuildConnectionMenu
- if {[GetCurrentConnection] == $name} {
- if {[llength $ConnectionInfo] == 0} {
- SwitchConnection ""
- } else {
- set name [value [lindex $ConnectionInfo 0] ConnectionName]
- SwitchConnection $name
- }
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: ReplaceConnection
-# %ARGUMENTS:
-# conn -- new name/value pairs
-# %RETURNS:
-# Nothing, but replaces connection in ConnectionInfo. If no such
-# connection exists, appends new connection.
-#***********************************************************************
-proc ReplaceConnection { conn } {
- global ConnectionInfo
- set name [value $conn ConnectionName]
- set newInfo {}
- set found 0
- foreach thing $ConnectionInfo {
- if {[value $thing ConnectionName] == "$name"} {
- lappend newInfo $conn
- set found 1
- } else {
- lappend newInfo $thing
- }
- }
- if {!$found} {
- lappend newInfo $conn
- }
- set ConnectionInfo $newInfo
-}
-
-proc DeletePPPoEConnection {} {
- set conn [GetCurrentConnection]
- if {"$conn" == ""} {
- return
- }
- set ans [tk_dialog .confirm "Confirm Deletion - RP-PPPoE" "Are you sure you wish to delete the connection `$conn'?" warning 0 No Yes]
- if {$ans} {
- DeleteConnection $conn
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: CreateMainDialog
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Creates the main window
-#***********************************************************************
-proc CreateMainDialog {} {
- global ConnectionInfoFile
- global ConnectionInfo
- global Admin
- wm title . "RP-PPPoE"
- wm iconname . "PPPoE"
- frame .f1
- label .l1 -text "Connection: "
- menubutton .m1 -text "" -indicatoron 1 -menu .m1.menu -relief raised
- menu .m1.menu -tearoff 0
- pack .l1 .m1 -in .f1 -side left -expand 0 -fill x
- canvas .c -width 40 -height 20
- pack .c -in .f1 -side left -expand 0 -fill none
-
- # Draw the LED's
- .c create rectangle 10 1 30 8 -outline "#808080" -fill "#A0A0A0" -tags xmitrect
- .c create rectangle 10 10 30 18 -outline "#808080" -fill "#A0A0A0" -tags recvrect
-
- frame .buttons
- button .start -text "Start" -command "StartPPPoEConnection"
- button .stop -text "Stop" -command "StopPPPoEConnection"
- button .exit -text "Exit" -command "exit"
- canvas .graph -width 1 -height 1
- if {[file writable $ConnectionInfoFile]} {
- set Admin 1
- pack .f1 -side top -expand 1 -fill both
- pack .buttons -side top -expand 0 -fill x
- button .delete -text "Delete" -command "DeletePPPoEConnection"
- button .new -text "New Connection..." -command "NewPPPoEConnection"
- button .props -text "Properties..." -command "EditConnectionProps"
- pack .graph -in .f1 -side left -expand 1 -fill both
- pack .start .stop .delete .props .new .exit -in .buttons -side left -expand 0 -fill none
- } else {
- set Admin 0
- pack .f1 -side top -expand 0 -fill x
- pack .buttons -side top -expand 1 -fill both
- pack .start .stop .exit -in .buttons -side left -expand 0 -fill none
- pack .graph -in .buttons -side left -expand 1 -fill both
- }
-
- LoadConnectionInfo
- BuildConnectionMenu
- # If no connections exist, pop up new connection dialog
- if {[llength $ConnectionInfo] == 0} {
- SwitchConnection ""
- if {$Admin} {
- update idletasks
- NewPPPoEConnection
- } else {
- tk_dialog .note Note "Note: There are no connections defined. You must run this program as root to define connections" warning 0 OK
- }
- } else {
- set con [lindex $ConnectionInfo 0]
- set name [value $con ConnectionName]
- SwitchConnection $name
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: GetCurrentConnection
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# The name of the current connection in the GUI.
-#***********************************************************************
-proc GetCurrentConnection {} {
- .m1 cget -text
-}
-
-#***********************************************************************
-# %PROCEDURE: value
-# %ARGUMENTS:
-# lst -- a list of key/value pairs
-# key -- key we're looking for
-# %RETURNS:
-# value corresponding to $key, or "" if not found.
-#***********************************************************************
-proc value { lst key } {
- set idx [lsearch -exact $lst $key]
- if {$idx >= 0} {
- return [lindex $lst [expr $idx+1]]
- }
- return ""
-}
-
-#***********************************************************************
-# %PROCEDURE: SwitchConnection
-# %ARGUMENTS:
-# name -- new connection name
-# %DESCRIPTION:
-# Makes $name the active connection
-#***********************************************************************
-proc SwitchConnection { name } {
- .m1 configure -text $name
- SetButtonStates
- UpdateConnectionState 0
-}
-
-#***********************************************************************
-# %PROCEDURE: EditConnectionProps
-# %ARGUMENTS:
-# None
-# %DESCRIPTION:
-# Pops up edit window for current connection
-#***********************************************************************
-proc EditConnectionProps {} {
- global ConnectionInfo
- set conn [GetCurrentConnection]
- NewPPPoEConnection $conn
-}
-
-#***********************************************************************
-# %PROCEDURE: FillConnectionGui
-# %ARGUMENTS:
-# w -- connection property GUI
-# name -- name of connection
-# %DESCRIPTION:
-# Fills GUI with values corresponding to $name.
-#***********************************************************************
-proc FillConnectionGui { w name } {
- global ConnectionInfo
- set found [GetConnection $name]
- if {"$found" != ""} {
- ListToSetupGui $w $found
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: BuildConnectionMenu
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Builds the connection menu
-#***********************************************************************
-proc BuildConnectionMenu {} {
- global ConnectionInfo
- .m1.menu delete 0 end
- foreach connection $ConnectionInfo {
- set name [value $connection ConnectionName]
- .m1.menu add command -label $name -command [list SwitchConnection $name]
- }
- .m1.menu add separator
- .m1.menu add command -label "User's Manual" -command Help
-}
-
-#***********************************************************************
-# %PROCEDURE: SetButtonStates
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Enables or disables buttons, as appropriate
-#***********************************************************************
-proc SetButtonStates {} {
- global Admin
- set conn [GetCurrentConnection]
- if {"$conn" == ""} {
- .start configure -state disabled
- .stop configure -state disabled
- catch {
- .delete configure -state disabled
- .props configure -state disabled
- .new configure -state normal
- }
- } else {
- foreach {startstop updown interface} [GetConnectionStatus $conn] {break}
- if {"$startstop" == "started"} {
- .start configure -state disabled
- .stop configure -state normal
- } else {
- .start configure -state normal
- .stop configure -state disabled
- }
- catch {
- .delete configure -state normal
- .props configure -state normal
- .new configure -state normal
- }
- if {!$Admin} {
- set ok [value [GetConnection $conn] NonrootOK]
- if {!$ok} {
- .start configure -state disabled
- .stop configure -state disabled
- }
- }
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: GetEthernetInterfaces
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# A list of Ethernet interfaces
-#***********************************************************************
-proc GetEthernetInterfaces {} {
- set ifs {}
- set fp [open "|/sbin/ifconfig" "r"]
- while {[gets $fp line] >= 0} {
- if {[regexp {^eth[0-9]+} $line eth]} {
- lappend ifs $eth
- }
- }
- return $ifs
-}
-
-#***********************************************************************
-# %PROCEDURE: StartPPPoEConnection
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Starts currently-selected PPPoE connection.
-#***********************************************************************
-proc StartPPPoEConnection {} {
- global Wrapper
- global StartState
- global UpdateToken
-
- set conn [GetCurrentConnection]
- if {"$conn" == ""} {
- return
- }
-
- if {"$UpdateToken" != ""} {
- after cancel $UpdateToken
- set UpdateToken ""
- }
-
- catch { unset StartState }
- set StartState(chars) ""
- set StartState(status) ""
- set StartState(msg) ""
- set StartState(flip) 0
-
- set fp [open "|$Wrapper start $conn" "r"]
-
- # Set fileevent
- fileevent $fp readable [list StartFPReadable $fp]
-
- LockGui $fp
- vwait StartState(status)
- UnlockGui
-
- if {$StartState(status) == "failed"} {
- tk_dialog .err Error "Error starting connection: $StartState(msg)" error 0 OK
- }
- SetButtonStates
- UpdateConnectionState 0
-}
-
-proc LockGui { fp } {
- .start configure -state disabled
- .stop configure -state normal -command [list AbortConnection $fp]
- .exit configure -state disabled
- .m1 configure -state disabled
- grab set .stop
-}
-
-proc UnlockGui {} {
- .start configure -state normal
- .stop configure -state disabled -command StopPPPoEConnection
- .exit configure -state normal
- .m1 configure -state normal
- grab release .stop
-}
-
-proc AbortConnection { fp } {
- global StartState
- catch { StopPPPoEConnection }
- catch { close $fp }
- set StartState(msg) "Connection aborted by user"
- set StartState(status) "failed"
-}
-
-#***********************************************************************
-# %PROCEDURE: StartFPReadable
-# %ARGUMENTS:
-# fp -- file handle
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Called when the "adsl-start" file handle is readable.
-#***********************************************************************
-proc StartFPReadable { fp } {
- global StartState
- set char [read $fp 1]
- if {$char == ""} {
- set uhoh [catch {close $fp} err]
- if {$uhoh} {
- set StartState(status) "failed"
- set StartState(msg) $err
- } else {
- set StartState(status) "succeeded"
- }
- return
- }
- append StartState(chars) $char
- if {$StartState(flip)} {
- ConnectionStateDown
- } else {
- ConnectionStateOff
- }
- set StartState(flip) [expr 1 - $StartState(flip)]
-}
-
-#***********************************************************************
-# %PROCEDURE: StopPPPoEConnection
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Stops currently-selected PPPoE connection.
-#***********************************************************************
-proc StopPPPoEConnection {} {
- global Wrapper
- set conn [GetCurrentConnection]
- if {"$conn" == ""} {
- return
- }
- set fp [open "|$Wrapper stop $conn" "r"]
- while {1} {
- set char [read $fp 1]
- if {"$char" == ""} {
- break;
- }
- }
- set uhoh [catch {close $fp} err]
- if {$uhoh} {
- # Ignore a common error
- if {![string match "*appears to have died*" $err]} {
- tk_dialog .err Error "Error stopping connection: $err" error 0 OK
- }
- }
- SetButtonStates
- UpdateConnectionState 0
-}
-
-#***********************************************************************
-# %PROCEDURE: NewPPPoEConnection
-# %ARGUMENTS:
-# name -- if supplied, we're editing the existing connection "name"
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Creates a new PPPoE connection
-#***********************************************************************
-proc NewPPPoEConnection {{name ""}} {
- set w .newcon
- if {[winfo exists $w]} {
- wm deiconify $w
- raise $w
- return
- }
-
- toplevel $w
- if {"$name" == ""} {
- wm title $w "New Connection - RP-PPPoE"
- wm iconname $w "New Connection"
- } else {
- wm title $w "Edit Connection - RP-PPPoE"
- wm iconname $w "Edit Connection"
- }
- wm withdraw $w
-
- tabnotebook_create $w.tn
- set basic [tabnotebook_page $w.tn "Basic"]
- set interface [tabnotebook_page $w.tn "NIC and DNS"]
- set opts [tabnotebook_page $w.tn "Options"]
- set advanced [tabnotebook_page $w.tn "Advanced"]
-
- # ----------- BASIC PAGE -------------
- label $w.lconName -text "Connection Name: " -anchor e
- if {"$name" != ""} {
- label $w.conName -text $name -anchor w
- } else {
- entry $w.conName -width 15
- RegisterHelpWindow $w.lconName "Enter a name for this connection. It can contain letters, numbers, undescores and the minus-sign." $w.help
- RegisterHelpWindow $w.conName "Enter a name for this connection. It can contain letters, numbers, undescores and the minus-sign." $w.help
- }
-
- label $w.luser -text "User Name: " -anchor e
- entry $w.user -width 15
- RegisterHelpWindow $w.luser "Enter your user name. Do not add a domain-name after the user name." $w.help
- RegisterHelpWindow $w.user "Enter your user name. Do not add a domain-name after the user name." $w.help
-
- label $w.lnet -text "Network: " -anchor e
- entry $w.network -width 15
- RegisterHelpWindow $w.lnet "Some ISP's require you to enter their domain-name here (e.g. \"sympatico.ca\")." $w.help
- RegisterHelpWindow $w.network "Some ISP's require you to enter their domain-name here (e.g. \"sympatico.ca\")." $w.help
-
- label $w.lpass -text "Password: " -anchor e
- entry $w.pass -width 15 -show "*"
- RegisterHelpWindow $w.lpass "Enter your password." $w.help
- RegisterHelpWindow $w.pass "Enter your password." $w.help
-
- grid $w.lconName $w.conName -in $basic -sticky nsew
- grid $w.luser $w.user -in $basic -sticky nsew
- grid $w.lnet $w.network -in $basic -sticky nsew
- grid $w.lpass $w.pass -in $basic -sticky nsew
- grid columnconfigure $basic 1 -weight 1
-
- # ----------- INTERFACES PAGE -------------
- set ifs {}
- catch {set ifs [GetEthernetInterfaces]}
-
- label $w.lifname -text "Ethernet Interface: " -anchor e
- entry $w.ifname -width 8
- RegisterHelpWindow $w.lifname "Enter Ethernet interface to which DSL modem is attached." $w.help
- RegisterHelpWindow $w.ifname "Enter Ethernet interface to which DSL modem is attached." $w.help
-
- if {[llength $ifs] > 0} {
- menubutton $w.ifmb -relief raised -text "..." -menu $w.ifmb.menu
- RegisterHelpWindow $w.ifmb "Browse detected Ethernet interface names." $w.help
- menu $w.ifmb.menu -tearoff 0
- foreach if $ifs {
- $w.ifmb.menu add command -label $if -command "$w.ifname delete 0 end; $w.ifname insert end [list $if]"
- }
- grid $w.lifname $w.ifname $w.ifmb -in $interface -sticky nsew
- } else {
- grid $w.lifname $w.ifname - -in $interface -sticky nsew
- }
-
- label $w.ldns -text "DNS Setup: " -anchor e
- menubutton $w.dns -text "From Server" -menu $w.dns.menu -relief raised -indicatoron 1
- menu $w.dns.menu -tearoff 0
- foreach thing {"From Server" "Specify" "Do not Adjust"} {
- $w.dns.menu add command -label $thing -command [list SetDNSOption $w $thing]
- }
- RegisterHelpWindow $w.ldns "DNS server options:\n'From Server' - Let PPPoE server specify DNS servers\n'Specify' - Enter IP addresses of DNS servers yourself\n'Do not Adjust' - Leave your DNS setup alone." $w.help
- RegisterHelpWindow $w.dns "DNS server options:\n'From Server' - Let PPPoE server specify DNS servers\n'Specify' - Enter IP addresses of DNS servers yourself\n'Do not Adjust' - Leave your DNS setup alone." $w.help
-
- label $w.ldns1 -text "Primary DNS: " -anchor e
- entry $w.dns1 -width 16
- RegisterHelpWindow $w.ldns1 "Enter the IP address of the primary DNS server." $w.help
- RegisterHelpWindow $w.dns1 "Enter the IP address of the primary DNS server." $w.help
- label $w.ldns2 -text "Secondary DNS: " -anchor e
- entry $w.dns2 -width 16
- RegisterHelpWindow $w.ldns2 "Enter the IP address of the secondary DNS server." $w.help
- RegisterHelpWindow $w.dns2 "Enter the IP address of the secondary DNS server." $w.help
-
- SetDNSOption $w "From Server"
- grid $w.ldns $w.dns - -in $interface -sticky nsew
- grid $w.ldns1 $w.dns1 - -in $interface -sticky nsew
- grid $w.ldns2 $w.dns2 - -in $interface -sticky nsew
-
- # If only one Ethernet interface, select it by default
- if {[llength $ifs] == 1} {
- $w.ifname insert end [lindex $ifs 0]
- }
-
- grid columnconfigure $interface 1 -weight 1
- # ----------- OPTS PAGE -------------
- checkbutton $w.nonroot -text "Allow use by non-root users" -variable OPTS(nonroot) -anchor w
- RegisterHelpWindow $w.nonroot "If enabled, ordinary users can start and stop this connection." $w.help
- checkbutton $w.sync -text "Use synchronous PPP" -variable OPTS(sync) -anchor w
- RegisterHelpWindow $w.sync "Use synchronous PPP (recommended -- easier on the CPU.)" $w.help
- label $w.lfw -text "Firewalling: " -anchor e
- if {[llength $ifs] == 1} {
- set defaultFW "Stand-Alone"
- } else {
- set defaultFW "Masquerading"
- }
- menubutton $w.fw -text $defaultFW -menu $w.fw.menu -indicatoron 1 -relief raised
- menu $w.fw.menu -tearoff 0
- foreach type {Stand-Alone Masquerading None} {
- $w.fw.menu add command -label $type -command [list $w.fw configure -text $type]
- }
-
- RegisterHelpWindow $w.lfw "Firewalling options:\nStand-Alone - A stand-alone machine.\nMasquerading - A gateway machine used for Internet sharing.\nNone - Use if you already have your own firewall rules or want to run servers." $w.help
- RegisterHelpWindow $w.fw "Firewalling options:\nStand-Alone - A stand-alone machine.\nMasquerading - A gateway machine used for Internet sharing.\nNone - Use if you already have your own firewall rules or want to run servers." $w.help
- grid $w.nonroot - -in $opts -sticky nsew
- grid $w.sync - -in $opts -sticky nsew
- grid $w.lfw $w.fw -in $opts -sticky nsw
- grid columnconfigure $opts 1 -weight 1
-
- # ----------- ADVANCED PAGE -------------
- label $w.lsn -text "Service-Name: " -anchor e
- entry $w.servicename -width 24
-
- label $w.lac -text "AC-Name: " -anchor e
- entry $w.acname -width 24
-
- RegisterHelpWindow $w.lac "Enter access concentrator name if required. Most ISPs do not require this; try leaving it blank." $w.help
- RegisterHelpWindow $w.acname "Enter access concentrator name if required. Most ISPs do not require this; try leaving it blank." $w.help
- grid $w.lsn $w.servicename -in $advanced -sticky nsew
- grid $w.lac $w.acname -in $advanced -sticky nsew
- RegisterHelpWindow $w.lsn "Enter service name if required. Most ISPs do not require this; try leaving it blank." $w.help
- RegisterHelpWindow $w.servicename "Enter service name if required. Most ISPs do not require this; try leaving it blank." $w.help
-
- grid columnconfigure $advanced 1 -weight 1
-
- # ----------- BUTTONS -------------
- frame $w.buttons
- button $w.ok -text "OK" -command [list NewPPPoEConnectionOK $name $w]
- button $w.cancel -text "Cancel" -command [list destroy $w]
- pack $w.ok $w.cancel -in $w.buttons -expand 0 -fill none -side left
-
- pack $w.tn -side top -expand 1 -fill both
-
- text $w.help -width 60 -wrap word -state disabled -height 6
- pack $w.help -side top -expand 0 -fill both
- pack $w.buttons -side top -expand 0 -fill x
-
- # If we're editing existing connection, fill GUI with current values
- if {"$name" != ""} {
- FillConnectionGui $w $name
- }
- wm deiconify $w
- update idletasks
- raise $w
-}
-
-#***********************************************************************
-# %PROCEDURE: SetDNSOption
-# %ARGUMENTS:
-# w -- connection-editing window
-# opt -- value of DNS option
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Adjusts GUI for specified option
-#***********************************************************************
-proc SetDNSOption { w opt } {
- $w.dns configure -text $opt
- if {"$opt" == "Specify"} {
- $w.dns1 configure -state normal -background white
- $w.dns2 configure -state normal -background white
- } else {
- $w.dns1 configure -state disabled -background "#d9d9d9"
- $w.dns2 configure -state disabled -background "#d9d9d9"
- }
-}
-
-# ----------------------------------------------------------------------
-# Tabbed notebook code from "Effective Tcl/Tk Programming"
-# ----------------------------------------------------------------------
-# EXAMPLE: tabnotebook that can dial up pages
-# ----------------------------------------------------------------------
-# Effective Tcl/Tk Programming
-# Mark Harrison, DSC Communications Corp.
-# Michael McLennan, Bell Labs Innovations for Lucent Technologies
-# Addison-Wesley Professional Computing Series
-# ======================================================================
-# Copyright (c) 1996-1997 Lucent Technologies Inc. and Mark Harrison
-# ======================================================================
-
-option add *Tabnotebook.tabs.background #666666 widgetDefault
-option add *Tabnotebook.margin 6 widgetDefault
-option add *Tabnotebook.tabColor #a6a6a6 widgetDefault
-option add *Tabnotebook.activeTabColor #d9d9d9 widgetDefault
-option add *Tabnotebook.tabFont \
- -*-helvetica-bold-r-normal--*-120-* widgetDefault
-
-proc tabnotebook_create {win} {
- global tnInfo
-
- frame $win -class Tabnotebook
- canvas $win.tabs -highlightthickness 0
- pack $win.tabs -fill x
-
- notebook_create $win.notebook
- pack $win.notebook -expand yes -fill both
-
- set tnInfo($win-tabs) ""
- set tnInfo($win-current) ""
- set tnInfo($win-pending) ""
- return $win
-}
-
-proc tabnotebook_page {win name} {
- global tnInfo
-
- set page [notebook_page $win.notebook $name]
- lappend tnInfo($win-tabs) $name
-
- if {$tnInfo($win-pending) == ""} {
- set id [after idle [list tabnotebook_refresh $win]]
- set tnInfo($win-pending) $id
- }
- return $page
-}
-
-proc tabnotebook_refresh {win} {
- global tnInfo
-
- $win.tabs delete all
-
- set margin [option get $win margin Margin]
- set color [option get $win tabColor Color]
- set font [option get $win tabFont Font]
- set x 2
- set maxh 0
-
- foreach name $tnInfo($win-tabs) {
- set id [$win.tabs create text \
- [expr $x+$margin+2] [expr -0.5*$margin] \
- -anchor sw -text $name -font $font \
- -tags [list $name]]
-
- set bbox [$win.tabs bbox $id]
- set wd [expr [lindex $bbox 2]-[lindex $bbox 0]]
- set ht [expr [lindex $bbox 3]-[lindex $bbox 1]]
- if {$ht > $maxh} {
- set maxh $ht
- }
-
- $win.tabs create polygon 0 0 $x 0 \
- [expr $x+$margin] [expr -$ht-$margin] \
- [expr $x+$margin+$wd] [expr -$ht-$margin] \
- [expr $x+$wd+2*$margin] 0 \
- 2000 0 2000 10 0 10 \
- -outline black -fill $color \
- -tags [list $name tab tab-$name]
-
- $win.tabs raise $id
-
- $win.tabs bind $name <ButtonPress-1> \
- [list tabnotebook_display $win $name]
-
- set x [expr $x+$wd+2*$margin]
- }
- set height [expr $maxh+2*$margin]
- $win.tabs move all 0 $height
-
- $win.tabs configure -width $x -height [expr $height+4]
-
- if {$tnInfo($win-current) != ""} {
- tabnotebook_display $win $tnInfo($win-current)
- } else {
- tabnotebook_display $win [lindex $tnInfo($win-tabs) 0]
- }
- set tnInfo($win-pending) ""
-}
-
-proc tabnotebook_display {win name} {
- global tnInfo
-
- notebook_display $win.notebook $name
-
- set normal [option get $win tabColor Color]
- $win.tabs itemconfigure tab -fill $normal
-
- set active [option get $win activeTabColor Color]
- $win.tabs itemconfigure tab-$name -fill $active
- $win.tabs raise $name
-
- set tnInfo($win-current) $name
-}
-
-# ----------------------------------------------------------------------
-# EXAMPLE: simple notebook that can dial up pages
-# ----------------------------------------------------------------------
-# Effective Tcl/Tk Programming
-# Mark Harrison, DSC Communications Corp.
-# Michael McLennan, Bell Labs Innovations for Lucent Technologies
-# Addison-Wesley Professional Computing Series
-# ======================================================================
-# Copyright (c) 1996-1997 Lucent Technologies Inc. and Mark Harrison
-# ======================================================================
-
-option add *Notebook.borderWidth 2 widgetDefault
-option add *Notebook.relief sunken widgetDefault
-
-proc notebook_create {win} {
- global nbInfo
-
- frame $win -class Notebook
- pack propagate $win 0
-
- set nbInfo($win-count) 0
- set nbInfo($win-pages) ""
- set nbInfo($win-current) ""
- return $win
-}
-
-proc notebook_page {win name} {
- global nbInfo
-
- set page "$win.page[incr nbInfo($win-count)]"
- lappend nbInfo($win-pages) $page
- set nbInfo($win-page-$name) $page
-
- frame $page
-
- if {$nbInfo($win-count) == 1} {
- after idle [list notebook_display $win $name]
- }
- return $page
-}
-
-proc notebook_display {win name} {
- global nbInfo
-
- set page ""
- if {[info exists nbInfo($win-page-$name)]} {
- set page $nbInfo($win-page-$name)
- } elseif {[winfo exists $win.page$name]} {
- set page $win.page$name
- }
- if {$page == ""} {
- error "bad notebook page \"$name\""
- }
-
- notebook_fix_size $win
-
- if {$nbInfo($win-current) != ""} {
- pack forget $nbInfo($win-current)
- }
- pack $page -expand yes -fill both
- set nbInfo($win-current) $page
-}
-
-proc notebook_fix_size {win} {
- global nbInfo
-
- update idletasks
-
- set maxw 0
- set maxh 0
- foreach page $nbInfo($win-pages) {
- set w [winfo reqwidth $page]
- if {$w > $maxw} {
- set maxw $w
- }
- set h [winfo reqheight $page]
- if {$h > $maxh} {
- set maxh $h
- }
- }
- set bd [$win cget -borderwidth]
- set maxw [expr $maxw+2*$bd]
- set maxh [expr $maxh+2*$bd]
- $win configure -width $maxw -height $maxh
-}
-
-#***********************************************************************
-# %PROCEDURE: SetupGuiToList
-# %ARGUMENTS:
-# w -- the PPPoE connection setup window
-# %RETURNS:
-# A list of (name value) pairs for the connection.
-# %DESCRIPTION:
-# Reads values from the GUI; makes a list.
-#***********************************************************************
-proc SetupGuiToList { w } {
- global OPTS
- set ans {}
- if {[catch {lappend ans ConnectionName [$w.conName get]}]} {
- lappend ans ConnectionName [$w.conName cget -text]
- }
- lappend ans UserName [$w.user get]
- lappend ans NetworkName [$w.network get]
- lappend ans Password [$w.pass get]
- lappend ans Interface [$w.ifname get]
- lappend ans DNSType [$w.dns cget -text]
- lappend ans DNS1 [$w.dns1 get]
- lappend ans DNS2 [$w.dns2 get]
- lappend ans NonrootOK $OPTS(nonroot)
- lappend ans Sync $OPTS(sync)
- lappend ans FirewallType [$w.fw cget -text]
- lappend ans ServiceName [$w.servicename get]
- lappend ans ACName [$w.acname get]
-
- # Validate
- set name [value $ans ConnectionName]
- if {![regexp -nocase {^[-a-z0-9_]+$} $name]} {
- error "Connection name must be non-blank and contain only letters, digits, `_' and `-'"
- }
-
- # Check DNS
- set type [value $ans DNSType]
- if {"$type" == "Specify"} {
- set dns [value $ans DNS1]
- if {![regexp {[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+} "$dns"]} {
- error "Primary DNS entry must consist of four dot-separated decimal numbers"
- }
- set dns [value $ans DNS2]
- if {"$dns" != "" && ![regexp {[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+} "$dns"]} {
- error "Secondary DNS entry must consist of four dot-separated decimal numbers"
- }
- }
- return $ans
-}
-
-#***********************************************************************
-# %PROCEDURE: ListToSetupGui
-# %ARGUMENTS:
-# w -- the PPPoE connection setup window
-# lst -- a list of name/value pairs
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Updates GUI to reflect lst
-#***********************************************************************
-proc ListToSetupGui { w lst } {
- global OPTS
- foreach {key value} $lst {
- switch -exact -- $key {
- ConnectionName {
- catch {
- $w.conName delete 0 end
- $w.conName insert end $value
- }
- catch {
- $w.conName configure -text $value
- }
- }
- UserName {
- $w.user delete 0 end
- $w.user insert end $value
- }
- NetworkName {
- $w.network delete 0 end
- $w.network insert end $value
- }
- Password {
- $w.pass delete 0 end
- $w.pass insert end $value
- }
- Interface {
- $w.ifname delete 0 end
- $w.ifname insert end $value
- }
- DNSType {
- SetDNSOption $w $value
- }
- DNS1 {
- set oldstate [$w.dns1 cget -state]
- $w.dns1 configure -state normal
- $w.dns1 delete 0 end
- $w.dns1 insert end $value
- $w.dns1 configure -state $oldstate
- }
- DNS2 {
- set oldstate [$w.dns2 cget -state]
- $w.dns2 configure -state normal
- $w.dns2 delete 0 end
- $w.dns2 insert end $value
- $w.dns2 configure -state $oldstate
- }
- NonrootOK {
- set OPTS(nonroot) $value
- }
- Sync {
- set OPTS(sync) $value
- }
- FirewallType {
- $w.fw configure -text $value
- }
- ServiceName {
- $w.servicename delete 0 end
- $w.servicename insert end $value
- }
- ACName {
- $w.acname delete 0 end
- $w.acname insert end $value
- }
- }
- }
-}
-
-proc NewPPPoEConnectionOK { name w } {
- if {[catch {set conn [SetupGuiToList $w]} err]} {
- tk_dialog .err "Invalid Parameters" "$err" error 0 OK
- return
- }
- if {"$name" == ""} {
- set name [value $conn ConnectionName]
- set tmp [GetConnection $name]
- if {"$tmp" != ""} {
- tk_dialog .err "Connection Exists" "The connection `$name' already exists. Pick another name." error 0 OK
- return
- }
- }
- ReplaceConnection $conn
- SaveConnectionInfo
- BuildConnectionMenu
- SwitchConnection $name
- destroy $w
-}
-
-proc SaveConnectionInfo {} {
- global ConnectionInfo ConnectionInfoFile PasswordFile
- set fp [open "$ConnectionInfoFile.new" "w"]
- puts $fp "# RP-PPPoE GUI Configuration Information."
- puts $fp "# This file may *look* human-editable, but it is NOT."
- puts $fp "# So, you with the text editor: Keep away from this file."
- puts $fp "#"
- set expunged {}
- set passwords {}
- foreach thing $ConnectionInfo {
- set name [value $thing ConnectionName]
- set password [value $thing Password]
- set pwindex [lsearch -exact $thing Password]
- set safe [lreplace $thing $pwindex [expr $pwindex+1]]
- set pwd [list ConnectionName $name Password $password]
- lappend expunged $safe
- lappend passwords $pwd
- }
- puts $fp $expunged
- close $fp
- set fp [open "$PasswordFile.new" "w"]
- exec chmod 600 "$PasswordFile.new"
- puts $fp "# RP-PPPoE GUI Configuration Information."
- puts $fp "# This file may *look* human-editable, but it is NOT."
- puts $fp "# So, you with the text editor: Keep away from this file."
- puts $fp "#"
- puts $fp $passwords
- close $fp
- file rename -force "$ConnectionInfoFile.new" "$ConnectionInfoFile"
- file rename -force "$PasswordFile.new" "$PasswordFile"
-
- # Generate config files for adsl-start for each connection
- foreach thing $ConnectionInfo {
- GenerateConfigFile $thing
- }
-
- # Now update /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
- foreach thing $ConnectionInfo {
- GenerateSecretsEntry $thing
- }
-}
-
-#***********************************************************************
-# %PROCEDURE: ReadShellEscapedWord
-# %ARGUMENTS:
-# str -- a string
-# %RETURNS:
-# A two-element list -- the first element is a shell-escaped word
-# extracted from $str, just the way pppd parses /etc/ppp/pap-secrets.
-# The second element is the remaining portion of $str
-#***********************************************************************
-proc ReadShellEscapedWord { str } {
- set ans {}
- set rest $str
-
- # Chew up leading spaces
- set rest [string trimleft $rest]
-
- # If first char is a quote, read until a quote
- if {"[string index $rest 0]" == "\""} {
- set rest [string range $rest 1 end]
- set nextquote [string first "\"" $rest]
- # If no following quote, pretend we haven't seen a quote, I guess.
- if {$nextquote >= 0} {
- set ans [string range $rest 0 [expr $nextquote-1]]
- set rest [string range $rest [expr $nextquote+1] end]
- return [list $ans $rest]
- }
- }
-
- # Not a quote; chew through the string until an unescaped space
- while {[string length $rest] > 0} {
- set char [string index $rest 0]
- set rest [string range $rest 1 end]
- # Sneaky test for whitespace in Tcl 8.0
- if {"[string trim $char]" == ""} {
- return [list $ans $rest]
- }
- if {"$char" == "\\"} {
- set char [string index $rest 0]
- set rest [string range $rest 1 end]
- }
- append ans $char
- }
- return [list $ans $rest]
-}
-
-
-#***********************************************************************
-# %PROCEDURE: GenerateSecretsEntry
-# %ARGUMENTS:
-# conn -- a connection key/value list
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Adds entries to /etc/ppp/pap-secrets and /etc/ppp/chap-secrets.
-#***********************************************************************
-proc GenerateSecretsEntry { conn } {
- set user [value $conn UserName]
- set net [value $conn NetworkName]
- set password [value $conn Password]
- if {"$net" != ""} {
- set user "$user@$net"
- }
- GenerateSecretsEntryForFile $user $password "/etc/ppp/pap-secrets"
- GenerateSecretsEntryForFile $user $password "/etc/ppp/chap-secrets"
-}
-
-#***********************************************************************
-# %PROCEDURE: GenerateSecretsEntryForFile
-# %ARGUMENTS:
-# user -- user name
-# password -- password
-# fname -- file to add entry to.
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Adds entries to /etc/ppp/pap-secrets or /etc/ppp/chap-secrets.
-#***********************************************************************
-proc GenerateSecretsEntryForFile { user password fname } {
- # Copy $fname to $fname.new
- set out [open "$fname.new" "w"]
- exec chmod go-rwx "$fname.new"
- if {[file exists $fname]} {
- set in [open $fname "r"]
- while {[gets $in line] >= 0} {
- set trimmed [string trim $line]
- if {"$trimmed" == ""} {
- puts $out $line
- continue
- }
- if {[string match "#*" $trimmed]} {
- puts $out $line
- continue
- }
-
- # Read the user name off the line; copy it unless it's our
- # user name.
- foreach {word dummy} [ReadShellEscapedWord $line] {break}
- if {$word != $user} {
- puts $out $line
- }
- }
- close $in
- }
-
- # Now add our line
- set user [ShellEscape $user]
- set password [ShellEscape $password]
- puts $out "$user\t*\t$password\t*"
- close $out
- file rename -force $fname.new $fname
-}
-
-#***********************************************************************
-# %PROCEDURE: ShellEscape
-# %ARGUMENTS:
-# str
-# %RETURNS:
-# A version of $str with shell meta-characters escaped
-#***********************************************************************
-proc ShellEscape { str } {
- set ans ""
- foreach char [split $str ""] {
- if {[string first $char "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_+=-@./"] >= 0} {
- append ans $char
- } else {
- append ans "\\$char"
- }
- }
- return $ans
-}
-
-
-#***********************************************************************
-# %PROCEDURE: GenerateConfigFile
-# %ARGUMENTS:
-# conn -- a connection key/value list
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Generates a configuration file for adsl-start and friends under
-# /etc/ppp/rp-pppoe-gui
-#***********************************************************************
-proc GenerateConfigFile { conn } {
- global ConfigDir
- set name [value $conn ConnectionName]
- set fname [file join $ConfigDir conf.$name]
- set fp [open "$fname.new" w]
- puts $fp "# Configuration file for connection `$name'."
- puts $fp "# Automatically generated. Do not edit by hand."
- puts $fp ""
- foreach {var val} $conn {
- switch -exact $var {
- UserName {
- set net [value $conn NetworkName]
- if {"$net" != ""} {
- set user "$val@$net"
- } else {
- set user "$val"
- }
- puts $fp [ShellEscape "USER=$user"]
- }
- Interface {
- puts $fp [ShellEscape "ETH=$val"]
- }
- DNSType {
- if {"$val" == "From Server"} {
- puts $fp "DNSTYPE=SERVER"
- puts $fp "USEPEERDNS=yes"
- } elseif {"$val" == "Specify"} {
- puts $fp "DNSTYPE=SPECIFY"
- puts $fp "USEPEERDNS=no"
- } else {
- puts $fp "DNSTYPE=NOCHANGE"
- puts $fp "USEPEERDNS=no"
- }
- }
- DNS1 {
- puts $fp [ShellEscape "DNS1=$val"]
- }
- DNS2 {
- puts $fp [ShellEscape "DNS2=$val"]
- }
- NonrootOK {
- if {$val} {
- puts $fp "NONROOT=OK"
- }
- }
- ACName {
- puts $fp [ShellEscape "ACNAME=$val"]
- }
- ServiceName {
- puts $fp [ShellEscape "SERVICENAME=$val"]
- }
- FirewallType {
- if {"$val" == "None"} {
- puts $fp "FIREWALL=NONE"
- } elseif {"$val" == "Masquerading"} {
- puts $fp "FIREWALL=MASQUERADE"
- } else {
- puts $fp "FIREWALL=STANDALONE"
- }
- }
- Sync {
- if {$val} {
- puts $fp "SYNCHRONOUS=yes"
- } else {
- puts $fp "SYNCHRONOUS=no"
- }
- }
- }
- }
- puts $fp "CONNECT_TIMEOUT=30"
- puts $fp "CONNECT_POLL=1"
- puts $fp "FORCEPING=\".\""
- puts $fp "PIDFILE=/var/run/adsl-$name.pid"
- puts $fp "CLAMPMSS=1412"
- puts $fp "LCP_INTERVAL=20"
- puts $fp "LCP_FAILURE=3"
- puts $fp "PPPOE_TIMEOUT=80"
- puts $fp "LINUX_PLUGIN="
- puts $fp "DEMAND=no"
- close $fp
- file rename -force "$fname.new" "$fname"
-}
-
-#***********************************************************************
-# %PROCEDURE: GetConnectionStatus
-# %ARGUMENTS:
-# conn -- connection name
-# %RETURNS:
-# A three-element list:
-# {started/stopped up/down if}
-# If first element is "started", then connection has been started.
-# If second element is "up", then connection is up.
-# If connection is up, third element is PPP interface.
-#***********************************************************************
-proc GetConnectionStatus { conn } {
- set pidfile "/var/run/adsl-$conn.pid"
-
- # Check for PID file
- if {![file readable $pidfile]} {
- return {stopped down ""}
- }
- set fp [open $pidfile "r"]
- gets $fp pid
- close $fp
-
- # Check if process is dead
- if {![file exists "/proc/$pid"]} {
- # The pppd might still be running... doh...
- if {![file readable "$pidfile.pppd"]} {
- return {stopped down ""}
- }
- set fp [open "$pidfile.pppd" "r"]
- gets $fp pid
- close $fp
- if {![file exists "/proc/$pid"]} {
- return {stopped down ""}
- }
- }
-
- # Now get PID of pppd
- if {![file readable "$pidfile.pppd"]} {
- return {started down ""}
- }
- set fp [open "$pidfile.pppd" "r"]
- gets $fp pid
- close $fp
-
- # Find interface to which it corresponds
- set pppdfiles [glob -nocomplain "/var/run/ppp*.pid"]
- set found {}
- foreach file $pppdfiles {
- set fp [open $file "r"]
- gets $fp ifpid
- close $fp
- if {$ifpid == $pid} {
- set found [file rootname [file tail $file]]
- break
- }
- }
- if {"$found" == ""} {
- return {started down ""}
- }
- return [list started up $found]
-}
-
-#***********************************************************************
-# %PROCEDURE: UpdateConnectionState
-# %ARGUMENTS:
-# fromAfter -- if 1, was called from an "after" callback.
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Updates the "LED" displays; periodically reschedules itself to keep
-# updating display.
-#***********************************************************************
-proc UpdateConnectionState {{fromAfter 1}} {
- global UpdateToken
- global Packets
- global Bytes
- global UpdateInterval
- global MeasureTime
- if {$fromAfter} {
- set UpdateToken ""
- }
-
- set conn [GetCurrentConnection]
- if {"$conn" == ""} {
- ConnectionStateOff
- ResetGraph
- if {"$UpdateToken" != ""} {
- after cancel $UpdateToken
- set UpdateToken {}
- }
- return
- }
-
- foreach {startstop updown interface} [GetConnectionStatus $conn] {break}
- if {"$startstop" == "stopped"} {
- ConnectionStateOff
- ResetGraph
- } elseif {"$updown" == "down"} {
- ConnectionStateDown
- ResetGraph
- } else {
- # Get the packet counts
- set found 0
- set fp [open "/proc/net/dev" "r"]
- while {[gets $fp line] >= 0} {
- if {![string match "*$interface:*" $line]} {
- continue
- }
- set colon [string first ":" $line]
- if {$colon < 0} {
- continue
- }
- set line [string range $line [expr $colon+1] end]
- set found 1
- set MeasureTime [clock seconds]
- break
- }
- close $fp
- if {$found} {
- foreach {rbytes rpacks rerrs rdrop rfifo rframe rcomp rmulti tbytes tpacks} $line {break}
- if {!$fromAfter} {
- set Packets(in) $rpacks
- set Packets(out) $tpacks
- set Bytes(in) $rbytes
- set Bytes(out) $tbytes
- ConnectionStateUp
- ResetGraph
- } else {
- if {$rpacks != $Packets(in)} {
- ConnectionReceiveActive
- } else {
- ConnectionReceiveUp
- }
- if {$tpacks != $Packets(out)} {
- ConnectionTransmitActive
- } else {
- ConnectionTransmitUp
- }
- set Packets(in) $rpacks
- set Packets(out) $tpacks
- set Bytes(in) $rbytes
- set Bytes(out) $tbytes
- UpdateGraph
- }
- } else {
- ConnectionStateUp
- ResetGraph
- }
- }
- if {"$UpdateToken" == ""} {
- set UpdateToken [after $UpdateInterval UpdateConnectionState]
- }
- if {$fromAfter} {
- SetButtonStates
- }
-}
-
-proc ConnectionStateOff {} {
- .c itemconfigure xmitrect -fill "#A0A0A0"
- .c itemconfigure recvrect -fill "#A0A0A0"
-}
-
-proc ConnectionStateDown {} {
- .c itemconfigure xmitrect -fill "#A00000"
- .c itemconfigure recvrect -fill "#A00000"
-}
-
-proc ConnectionStateUp {} {
- .c itemconfigure xmitrect -fill "#00D000"
- .c itemconfigure recvrect -fill "#00D000"
-}
-
-proc ConnectionTransmitActive {} {
- .c itemconfigure xmitrect -fill "#FFFF00"
-}
-
-proc ConnectionTransmitUp {} {
- .c itemconfigure xmitrect -fill "#00D000"
-}
-
-proc ConnectionReceiveActive {} {
- .c itemconfigure recvrect -fill "#FFFF00"
-}
-
-proc ConnectionReceiveUp {} {
- .c itemconfigure recvrect -fill "#00D000"
-}
-
-proc ResetGraph {} {
- global GraphPoints
- set GraphPoints(in) {}
- set GraphPoints(out) {}
- set GraphPoints(times) {}
- .graph delete all
- UpdateGraph
-}
-
-proc UpdateGraph {} {
- global GraphPoints Bytes UpdateInterval MeasureTime
- lappend GraphPoints(times) $MeasureTime
- lappend GraphPoints(in) $Bytes(in)
- lappend GraphPoints(out) $Bytes(out)
-
- set w [winfo width .graph]
- set w2 [expr $w/2]
-
- set h [winfo height .graph]
- set toChop [expr [llength $GraphPoints(in)] - $w2 - 1]
- if {$toChop > 0} {
- set GraphPoints(in) [lrange $GraphPoints(in) $toChop end]
- }
- set toChop [expr [llength $GraphPoints(out)] - $w2 - 1]
- if {$toChop > 0} {
- set GraphPoints(out) [lrange $GraphPoints(out) $toChop end]
- }
- set toChop [expr [llength $GraphPoints(times)] - $w2 - 1]
- if {$toChop > 0} {
- set GraphPoints(times) [lrange $GraphPoints(times) $toChop end]
- }
-
- set prev [lindex $GraphPoints(in) 0]
- set incoords {}
- set outcoords {}
- set inmax 0
- set outmax 0
- foreach thing [lrange $GraphPoints(in) 1 end] {
- set diff [expr $thing - $prev]
- set prev $thing
- lappend incoords $diff
- if {$diff > $inmax} {
- set inmax $diff
- }
- }
-
- set prev [lindex $GraphPoints(out) 0]
- foreach thing [lrange $GraphPoints(out) 1 end] {
- set diff [expr $thing - $prev]
- set prev $thing
- lappend outcoords $diff
- if {$diff > $outmax} {
- set outmax $diff
- }
- }
-
- if {$inmax == 0} { set inmax 1 }
- if {$outmax == 0} { set outmax 1 }
- # Draw the transmit line
- set x 0
- set hh [expr $h-4]
- set scaled {}
- foreach thing $outcoords {
- lappend scaled $x [expr double($h) - 2 - (double($hh) * double($thing) / double($outmax))]
- incr x
- }
-
- .graph delete all
- if {[llength $scaled] >= 4} {
- eval ".graph create line $scaled -fill #A00000"
- set bits [expr 8.0 * ([lindex $GraphPoints(out) end] - [lindex $GraphPoints(out) 0])]
- set timediff [expr [lindex $GraphPoints(times) end] - [lindex $GraphPoints(times) 0]]
- if {$timediff != 0} {
- set bps [Pretty [expr double($bits) / $timediff]]
- .graph create text 2 2 -anchor nw -font fixed -text "$bps"
- }
- }
-
- # Draw the receive line
- set x $w2
- set scaled {}
- foreach thing $incoords {
- lappend scaled $x [expr double($h) - 2 - (double($hh) * double($thing) / double($inmax))]
- incr x
- }
-
- if {[llength $scaled] >= 4} {
- eval ".graph create line $scaled -fill #00A000"
- set bits [expr 8.0 * ([lindex $GraphPoints(in) end] - [lindex $GraphPoints(in) 0])]
- set timediff [expr [lindex $GraphPoints(times) end] - [lindex $GraphPoints(times) 0]]
- if {$timediff != 0} {
- set bps [Pretty [expr double($bits) / $timediff]]
- .graph create text [expr $w2+2] 2 -anchor nw -font fixed -text "$bps"
- }
- }
-}
-
-proc Pretty { n } {
- if {$n < 0} {
- return "***"
- }
- if {$n < 1000} {
- return [format "%.1f" $n]
- }
- set n [expr $n/1000.0]
- if {$n < 1000} {
- return [format "%.1fk" $n]
- }
- set n [expr $n/1000.0]
- if {$n < 1000} {
- return [format "%.1fM" $n]
- }
- set n [expr $n/1000.0]
- return [format "%.1fG" $n]
-}
-
-#***********************************************************************
-# %PROCEDURE: Help
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Opens help page
-#***********************************************************************
-proc Help {} {
- if {![file readable /usr/share/rp-pppoe-gui/tkpppoe.html]} {
- tk_dialog .err Error "Help file '/usr/share/rp-pppoe-gui/tkpppoe.html' is not installed" error 0 OK
- return
- }
- catch { exec /bin/sh -c "netscape -remote 'openURL(/usr/share/rp-pppoe-gui/tkpppoe.html)' || netscape /usr/share/rp-pppoe-gui/tkpppoe.html" > /dev/null 2>/dev/null & }
-}
-
-
-
-#***********************************************************************
-# %PROCEDURE: doLogo
-# %ARGUMENTS:
-# None
-# %RETURNS:
-# Nothing
-# %DESCRIPTION:
-# Does the logo thing
-#***********************************************************************
-proc doLogo {} {
- global AlreadyRunFile ConfigDir
- if {[file exists $AlreadyRunFile]} {
- return
- }
- catch { file mkdir $ConfigDir }
- catch { close [open $AlreadyRunFile "w"] }
- canvas .c -width 374 -height 286 -bg #FFFFCC
- pack .c
- drawLogo .c #FFFFCC
-
- # Funky effect
- .c create text 4 4 -anchor nw -text "Welcome to RP-PPPoE" \
- -fill red -font {-family times -size -24 -weight bold} -tags pppoe
- .c lower pppoe
-
- .c move logo -300 0
-
- update idletasks
-
- for {set i 0} {$i < 15} {incr i} {
- .c move logo 20 0
- update idletasks
- after 25
- }
-
- .c create text 4 28 -anchor nw -text "http://www.roaringpenguin.com" \
- -fill red -font {-family courier -size -14 -weight bold}
- update idletasks
- after 2500
-}
-
-doLogo
-catch { destroy .c }
-
-# Try creating an empty config file if none exists
-if {![file readable $ConnectionInfoFile]} {
- catch { file mkdir $ConfigDir }
- catch {
- set fp [open $ConnectionInfoFile "w"]
- close $fp
- }
-}
-
-CreateMainDialog
diff --git a/mdk-stage1/rp-pppoe/gui/wrapper.c b/mdk-stage1/rp-pppoe/gui/wrapper.c
deleted file mode 100644
index e2b99662a..000000000
--- a/mdk-stage1/rp-pppoe/gui/wrapper.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* -*-Mode: C;-*- */
-
-/***********************************************************************
-*
-* wrapper.c
-*
-* C wrapper designed to run SUID root for controlling PPPoE connections.
-*
-* Copyright (C) 2001 by Roaring Penguin Software Inc.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#define _SVID_SOURCE 1 /* For putenv */
-#define _POSIX_SOURCE 1 /* For fileno */
-#define _BSD_SOURCE 1 /* For setreuid */
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <unistd.h>
-
-#define CONN_NAME_LEN 64
-#define LINELEN 512
-
-static char const *adsl_start = ADSL_START_PATH;
-static char const *adsl_stop = ADSL_STOP_PATH;
-static char const *adsl_status = ADSL_STATUS_PATH;
-
-/**********************************************************************
- *%FUNCTION: PathOK
- *%ARGUMENTS:
- * fname -- a file name.
- *%RETURNS:
- * 1 if path to fname is secure; 0 otherwise.
- *%DESCRIPTION:
- * Makes sure ownership/permissions of file and parent directories
- * are safe.
- **********************************************************************/
-static int
-PathOK(char const *fname)
-{
- char path[LINELEN];
- struct stat buf;
- char const *slash;
-
- if (strlen(fname) > LINELEN) {
- fprintf(stderr, "Pathname '%s' too long\n", fname);
- return 0;
- }
-
- /* Must be absolute path */
- if (*fname != '/') {
- fprintf(stderr, "Unsafe path '%s' not absolute\n", fname);
- return 0;
- }
-
- /* Check root directory */
- if (stat("/", &buf) < 0) {
- perror("stat");
- return 0;
- }
- if (buf.st_uid) {
- fprintf(stderr, "SECURITY ALERT: Root directory (/) not owned by root\n");
- return 0;
- }
- if (buf.st_mode & (S_IWGRP | S_IWOTH)) {
- fprintf(stderr, "SECURITY ALERT: Root directory (/) writable by group or other\n");
- return 0;
- }
-
- /* Check each component */
- slash = fname;
-
- while(*slash) {
- slash = strchr(slash+1, '/');
- if (!slash) {
- slash = fname + strlen(fname);
- }
- memcpy(path, fname, slash-fname);
- path[slash-fname] = 0;
- if (stat(path, &buf) < 0) {
- perror("stat");
- return 0;
- }
- if (buf.st_uid) {
- fprintf(stderr, "SECURITY ALERT: '%s' not owned by root\n", path);
- return 0;
- }
-
- if (buf.st_mode & (S_IWGRP | S_IWOTH)) {
- fprintf(stderr, "SECURITY ALERT: '%s' writable by group or other\n",
- path);
- return 0;
- }
- }
- return 1;
-}
-
-/**********************************************************************
- *%FUNCTION: CleanEnvironment
- *%ARGUMENTS:
- * envp -- environment passed to main
- *%RETURNS:
- * Nothing
- *%DESCRIPTION:
- * Deletes all environment variables; makes safe environment
- **********************************************************************/
-static void
-CleanEnvironment(char *envp[])
-{
- envp[0] = NULL;
- putenv("PATH=/bin:/usr/bin:/sbin:/usr/sbin");
-}
-
-/**********************************************************************
- *%FUNCTION: main
- *%ARGUMENTS:
- * argc, argv -- usual suspects
- * Usage: pppoe-wrapper {start|stop|status} {connection_name}
- *%RETURNS:
- * Whatever adsl-start, adsl-stop or adsl-status returns.
- *%DESCRIPTION:
- * Runs adsl-start, adsl-stop or adsl-status on given connection if
- * non-root users are allowed to do it.
- **********************************************************************/
-int
-main(int argc, char *argv[])
-{
- int amRoot;
- char *cp;
- char fname[64+CONN_NAME_LEN];
- char line[LINELEN+1];
- int allowed = 0;
-
- FILE *fp;
-
- extern char **environ;
-
- /* Clean out environment */
- CleanEnvironment(environ);
-
- /* Are we root? */
- amRoot = (getuid() == 0);
-
- /* Validate arguments */
- if (argc != 3) {
- fprintf(stderr, "Usage: %s {start|stop|status} connection_name\n",
- argv[0]);
- exit(1);
- }
-
- if (strcmp(argv[1], "start") &&
- strcmp(argv[1], "stop") &&
- strcmp(argv[1], "status")) {
- fprintf(stderr, "Usage: %s {start|stop|status} connection_name\n",
- argv[0]);
- exit(1);
- }
-
- /* Connection name can be at most CONN_NAME_LEN chars; alpha, num, underscore */
- if (strlen(argv[2]) > CONN_NAME_LEN) {
- fprintf(stderr, "%s: Connection name '%s' too long.\n",
- argv[0], argv[2]);
- exit(1);
- }
-
- for (cp = argv[2]; *cp; cp++) {
- if (!strchr("abcdefghijklmnopqrstuvwxyz"
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "0123456789_-", *cp)) {
- fprintf(stderr, "%s: Connection name '%s' contains illegal character '%c'\n", argv[0], argv[2], *cp);
- exit(1);
- }
- }
-
- /* Open the connection file */
- sprintf(fname, "/etc/ppp/rp-pppoe-gui/conf.%s", argv[2]);
- /* Check path sanity */
- if (!PathOK(fname)) {
- exit(1);
- }
-
- fp = fopen(fname, "r");
- if (!fp) {
- fprintf(stderr, "%s: Could not open '%s': %s\n",
- argv[0], fname, strerror(errno));
- exit(1);
- }
-
- /* Check if non-root users can control it */
- if (amRoot) {
- allowed = 1;
- } else {
- while (!feof(fp)) {
- if (!fgets(line, LINELEN, fp)) {
- break;
- }
- if (!strcmp(line, "NONROOT=OK\n")) {
- allowed = 1;
- break;
- }
- }
- }
- fclose(fp);
-
- if (!allowed) {
- fprintf(stderr, "%s: Non-root users are not permitted to control connection '%s'\n", argv[0], argv[2]);
- exit(1);
- }
-
- /* Become root with setuid() to defeat is-root checks in shell scripts */
- if (setreuid(0, 0) < 0) {
- perror("setreuid");
- exit(1);
- }
-
- /* It's OK -- do it. */
- if (!strcmp(argv[1], "start")) {
- if (!PathOK(adsl_start)) exit(1);
- execl(adsl_start, "adsl-start", fname, NULL);
- } else if (!strcmp(argv[1], "stop")) {
- if (!PathOK(adsl_stop)) exit(1);
- execl(adsl_stop, "adsl-stop", fname, NULL);
- } else {
- if (!PathOK(adsl_status)) exit(1);
- execl(adsl_status, "adsl-status", fname, NULL);
- }
- fprintf(stderr, "%s: execl: %s\n", argv[0], strerror(errno));
- exit(1);
-}
diff --git a/mdk-stage1/rp-pppoe/man/adsl-connect.8 b/mdk-stage1/rp-pppoe/man/adsl-connect.8
deleted file mode 100644
index 1b34a74e5..000000000
--- a/mdk-stage1/rp-pppoe/man/adsl-connect.8
+++ /dev/null
@@ -1,66 +0,0 @@
-.\" $Id$
-.TH ADSL-CONNECT 8 "21 February 2000"
-.UC 4
-.SH NAME
-adsl-connect \- Shell script to manage a PPPoE link
-
-.SH SYNOPSIS
-.B adsl-connect \fR[\fIconfig_file\fR]
-.P
-.B adsl-connect \fR\fIinterface user\fR [\fIconfig_file\fR]
-
-
-.SH DESCRIPTION
-\fBadsl-connect\fR is a shell script which manages an ADSL connection
-using the Roaring Penguin user-space PPPoE client. If you omit
-\fIconfig_file\fR, the default file \fB/etc/ppp/pppoe.conf\fR is used.
-If you supply \fIinterface\fR and \fIuser\fR, then they override the
-Ethernet interface and user-name settings in the configuration file.
-.P
-Note that normally, you should \fInot\fR invoke \fBadsl-connect\fR
-directly. Instead, use \fBadsl-start\fR to bring up the ADSL connection.
-.P
-\fBadsl-connect\fR first reads a configuration file. It then brings
-up a PPPoE connection. If the connection ever drops, a message is logged
-to syslog, and \fBadsl-connect\fR re-establishes the connection. In addition,
-each time the connection is dropped or cannot be established,
-\fBadsl-connect\fR executes the script \fB/etc/ppp/adsl-lost\fR if it
-exists and is executable.
-
-.P
-The shell script \fBadsl-stop\fR causes \fBadsl-connect\fR to break out
-of its loop, bring the connection down, and exit.
-
-.SH TECHNICAL DETAILS
-\fBadsl-connect\fR uses the following shell variables from the
-configuration file:
-
-.TP
-.B ETH
-The Ethernet interface connected to the ADSL modem (for example, eth0).
-
-.TP
-.B USER
-The ADSL user-id (for example, b1xxnxnx@sympatico.ca).
-
-.TP
-.B PIDFILE
-A file in which to write the process-ID of the adsl-connect process
-(for example, \fB/var/run/pppoe.pid\fR). Two additional files
-($PIDFILE.pppd and $PIDFILE.pppoe) hold the process-ID's of the
-\fBpppd\fR and \fBpppoe\fR processes, respectively.
-
-.P
-By using different configuration files with different PIDFILE
-settings, you can manage multiple PPPoE connections. Just specify the
-configuration file as an argument to \fBadsl-start\fR and
-\fBadsl-stop\fR.
-
-.SH AUTHOR
-\fBadsl-connect\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-start(8), adsl-stop(8), pppd(8), pppoe.conf(5), adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-server(8), pppoe-relay(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/adsl-setup.8 b/mdk-stage1/rp-pppoe/man/adsl-setup.8
deleted file mode 100644
index 9e78fa547..000000000
--- a/mdk-stage1/rp-pppoe/man/adsl-setup.8
+++ /dev/null
@@ -1,23 +0,0 @@
-.\" $Id$
-.TH ADSL-SETUP 8 "21 February 2000"
-.UC 4
-.SH NAME
-adsl-setup \- Shell script to configure Roaring Penguin PPPoE client
-.SH SYNOPSIS
-.B adsl-setup
-
-.SH DESCRIPTION
-\fBadsl-setup\fR is a shell script which prompts you for various pieces
-of information and sets up an /etc/ppp/pppoe.conf configuration script
-for the \fBadsl-start\fR, \fBadsl-stop\fR and \fBadsl-connect\fR scripts.
-
-.SH AUTHOR
-\fBadsl-setup\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-start(8), adsl-stop(8), adsl-connect(8), pppd(8),
-pppoe.conf(5), adsl-status(8), pppoe-sniff(8), pppoe-relay(8),
-pppoe-server(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/adsl-start.8 b/mdk-stage1/rp-pppoe/man/adsl-start.8
deleted file mode 100644
index 87250b381..000000000
--- a/mdk-stage1/rp-pppoe/man/adsl-start.8
+++ /dev/null
@@ -1,27 +0,0 @@
-.\" $Id$
-.TH ADSL-START 8 "21 February 2000"
-.UC 4
-.SH NAME
-adsl-start \- Shell script to bring up a PPPoE link
-.SH SYNOPSIS
-.B adsl-start \fR[\fIconfig_file\fR]
-.P
-.B adsl-start \fR\fIinterface user\fR [\fIconfig_file\fR]
-
-.SH DESCRIPTION
-\fBadsl-start\fR is a shell script which starts the Roaring Penguin
-user-space PPPoE client. If you omit \fIconfig_file\fR, the default
-file \fB/etc/ppp/pppoe.conf\fR is used. If you supply
-\fIinterface\fR and \fIuser\fR, then they override the Ethernet interface
-and user-name settings in the configuration file.
-
-.SH AUTHOR
-\fBadsl-start\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-stop(8), adsl-connect(8), pppd(8), pppoe.conf(5),
-adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-relay(8),
-pppoe-server(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/adsl-status.8 b/mdk-stage1/rp-pppoe/man/adsl-status.8
deleted file mode 100644
index 2114d461e..000000000
--- a/mdk-stage1/rp-pppoe/man/adsl-status.8
+++ /dev/null
@@ -1,25 +0,0 @@
-.\" $Id$
-.TH ADSL-STATUS 8 "16 March 2000"
-.UC 4
-.SH NAME
-adsl-status \- Shell script to report on status of PPPoE link
-.SH SYNOPSIS
-.B adsl-status \fR[\fIconfig_file\fR]
-
-.SH DESCRIPTION
-\fBadsl-status\fR is a shell script which checks the status of the
-PPPoE link established by the Roaring Penguin user-space PPPoE client.
-If you omit \fIconfig_file\fR, the default file
-\fB/etc/ppp/pppoe.conf\fR is used.
-
-.SH AUTHOR
-\fBadsl-status\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-start(8), adsl-connect(8), pppd(8), pppoe.conf(5),
-adsl-setup(8), adsl-stop(8), pppoe-sniff(8), pppoe-relay(8),
-pppoe-server(8)
-
-
diff --git a/mdk-stage1/rp-pppoe/man/adsl-stop.8 b/mdk-stage1/rp-pppoe/man/adsl-stop.8
deleted file mode 100644
index 2ac7fef8e..000000000
--- a/mdk-stage1/rp-pppoe/man/adsl-stop.8
+++ /dev/null
@@ -1,21 +0,0 @@
-.\" $Id$
-.TH ADSL-STOP 8 "21 February 2000"
-.UC 4
-.SH NAME
-adsl-stop \- Shell script to shut down a PPPoE link
-.SH SYNOPSIS
-.B adsl-stop \fR[\fIconfig_file\fR]
-
-.SH DESCRIPTION
-\fBadsl-stop\fR is a shell script which stops the Roaring Penguin
-user-space PPPoE client. If you omit \fIconfig_file\fR, the default
-file \fB/etc/ppp/pppoe.conf\fR is used.
-
-.SH AUTHOR
-\fBadsl-stop\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-start(8), adsl-connect(8), pppd(8), pppoe.conf(5), adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-relay(8), pppoe-server(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/pppoe-relay.8 b/mdk-stage1/rp-pppoe/man/pppoe-relay.8
deleted file mode 100644
index 5f79b09a1..000000000
--- a/mdk-stage1/rp-pppoe/man/pppoe-relay.8
+++ /dev/null
@@ -1,124 +0,0 @@
-.\" $Id$
-.TH PPPOE-RELAY 8 "26 January 2001"
-.\""
-.UC 4
-.SH NAME
-pppoe-relay \- user-space PPPoE relay agent.
-.SH SYNOPSIS
-.B pppoe-relay \fR[\fIoptions\fR]
-
-.SH DESCRIPTION
-\fBpppoe-relay\fR is a user-space relay agent for PPPoE
-(Point-to-Point Protocol over Ethernet) for Linux. \fBpppoe-relay\fR
-works in concert with the \fBpppoe\fR client and \fBpppoe-server\fR
-server. See the OPERATION section later in this manual for
-details on how \fBpppoe-relay\fR works.
-
-.SH OPTIONS
-.TP
-.B \-S \fIinterface\fR
-Adds the Ethernet interface \fIinterface\fR to the list of interfaces
-managed by \fBpppoe-relay\fR. Only PPPoE servers may be connected to
-this interface.
-
-.TP
-.B \-C \fIinterface\fR
-Adds the Ethernet interface \fIinterface\fR to the list of interfaces
-managed by \fBpppoe-relay\fR. Only PPPoE clients may be connected to
-this interface.
-
-.TP
-.B \-B \fIinterface\fR
-Adds the Ethernet interface \fIinterface\fR to the list of interfaces
-managed by \fBpppoe-relay\fR. Both PPPoE clients and servers may be
-connected to this interface.
-
-.TP
-.B \-n \fInum\fR
-Allows at most \fInum\fR concurrent PPPoE sessions. If not specified,
-the default is 5000. \fInum\fR can range from 1 to 65534.
-
-.TP
-.B \-i \fItimeout\fR
-Specifies the session idle timeout. If both peers in a session are idle
-for more than \fItimeout\fR seconds, the session is terminated.
-If \fItimeout\fR is specified as zero, sessions will never be terminated
-because of idleness.
-
-Note that the idle-session expiry routine is never run more frequently than
-every 30 seconds, so the timeout is approximate. The default value for
-\fItimeout\fR is 600 seconds (10 minutes.)
-
-.TP
-.B \-F
-The \fB\-F\fR option causes \fBpppoe-relay\fR \fInot\fR to fork into the
-background; instead, it remains in the foreground.
-
-.TP
-.B \-h
-The \fB\-h\fR option prints a brief usage message and exits.
-
-.SH OPERATION
-
-\fBpppoe-relay\fR listens for incoming PPPoE PADI frames on all interfaces
-specified with \fB-B\fR or \fB-C\fR options. When a PADI frame appears,
-\fBpppoe-relay\fR adds a Relay-Session-ID tag and broadcasts the PADI
-on all interfaces specified with \fB-B\fR or \fB-S\fR options (except the
-interface on which the frame arrived.)
-
-Any PADO frames received are relayed back to the client which sent the
-PADI (assuming they contain valid Relay-Session-ID tags.) Likewise,
-PADR frames from clients are relayed back to the matching access
-concentrator.
-
-When a PADS frame is received, \fBpppoe-relay\fR enters the two peers'
-MAC addresses and session-ID's into a hash table. (The session-ID seen
-by the access concentrator may be different from that seen by the client;
-\fBpppoe-relay\fR must renumber sessions to avoid the possibility of duplicate
-session-ID's.) Whenever either peer sends a session frame, \fBpppoe-relay\fR
-looks up the session entry in the hash table and relays the frame to
-the correct peer.
-
-When a PADT frame is received, \fBpppoe-relay\fR relays it to the peer
-and deletes the session entry from its hash table.
-
-If a client and server crash (or frames are lost), PADT frames may never
-be sent, and \fBpppoe-relay\fR's hash table can fill up with stale sessions.
-Therefore, a session-cleaning routine runs periodically, and removes old
-sessions from the hash table. A session is considered "old" if no traffic
-has been seen within \fItimeout\fR seconds. When a session is deleted because
-of a timeout, a PADT frame is sent to each peer to make certain that they
-are aware the session has been killed.
-
-.SH EXAMPLE INVOCATIONS
-
-.nf
-pppoe-relay -C eth0 -S eth1
-.fi
-
-The example above relays frames between PPPoE clients on the eth0 network
-and PPPoE servers on the eth1 network.
-
-.nf
-pppoe-relay -B eth0 -B eth1
-.fi
-
-This example is a transparent relay -- frames are relayed between any mix
-of clients and servers on the eth0 and eth1 networks.
-
-.nf
-pppoe-relay -S eth0 -C eth1 -C eth2 -C eth3
-.fi
-
-This example relays frames between servers on the eth0 network and
-clients on the eth1, eth2 and eth3 networks.
-
-.SH AUTHORS
-\fBpppoe-relay\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), adsl-connect(8), pppd(8), pppoe.conf(5),
-pppoe(8), adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-server(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/pppoe-server.8 b/mdk-stage1/rp-pppoe/man/pppoe-server.8
deleted file mode 100644
index aacf11f1f..000000000
--- a/mdk-stage1/rp-pppoe/man/pppoe-server.8
+++ /dev/null
@@ -1,123 +0,0 @@
-.\" $Id$
-.TH PPPOE-SERVER 8 "3 July 2000"
-.\""
-.UC 4
-.SH NAME
-pppoe-server \- user-space PPPoE server
-.SH SYNOPSIS
-.B pppoe-server \fR[\fIoptions\fR]
-
-.SH DESCRIPTION
-\fBpppoe-server\fR is a user-space server for PPPoE (Point-to-Point Protocol
-over Ethernet) for Linux and other UNIX systems. \fBpppoe-server\fR works in
-concert with the \fBpppoe\fR client to respond to PPPoE discovery packets
-and set up PPPoE sessions.
-
-.SH OPTIONS
-.TP
-.B \-F
-The \fB\-F\fR option causes \fBpppoe-server\fR not to fork and become a
-daemon. The default is to fork and become a daemon.
-
-.TP
-.B \-I \fIinterface\fR
-The \fB\-I\fR option specifies the Ethernet interface to use. Under Linux,
-it is typically \fIeth0\fR or \fIeth1\fR. The interface should be "up"
-before you start \fBpppoe-server\fR, but should \fInot\fR be configured to have
-an IP address.
-
-.TP
-.B \-T \fItimeout\fR
-This option is passed directly to \fBpppoe\fR; see \fBpppoe\fR(8) for
-details.
-
-.TP
-.B \-C \fIac_name\fR
-Specifies which name to report as the access concentrator name. If not
-supplied, the host name is used.
-
-.TP
-.B \-m \fIMSS\fR
-This option is passed directly to \fBpppoe\fR; see \fBpppoe\fR(8) for
-details.
-
-.TP
-.B \-s
-This option is passed directly to \fBpppoe\fR; see \fBpppoe\fR(8) for
-details. In addition, it causes \fBpppd\fR to be invoked with the
-\fIsync\fR option.
-
-.TP
-.B \-L \fIip\fR
-Sets the local IP address. This is passed to spawned \fBpppd\fR processes.
-If not specified, the default is 10.0.0.1.
-
-.TP
-.B \-R \fIip\fR
-Sets the starting remote IP address. As sessions are established,
-IP addresses are assigned starting from \fIip\fR. \fBpppoe-server\fR
-automatically keeps track of the pool of addresses and passes a
-valid remote IP address to \fBpppd\fR. If not specified, a starting address
-of 10.67.15.1 is used.
-
-.TP
-.B \-N \fInum\fR
-Allows at most \fInum\fR concurrent PPPoE sessions. If not specified,
-the default is 64.
-
-.TP
-.B \-p \fIfname\fR
-Reads the specified file \fIfname\fR which is a text file consisting of
-one IP address per line. These IP addresses will be assigned to clients.
-The number of sessions allowed will equal the number of addresses found
-in the file. The \fB\-p\fR option overrides both \fB\-R\fR and \fB\-N\fR.
-
-.TP
-.B \-o \fIoffset\fR
-Instead of numbering PPPoE sessions starting at 1, they will be numbered
-starting at \fIoffset\fR+1. This allows you to run multiple servers on
-a given machine; just make sure that their session numbers do not
-overlap.
-
-.TP
-.B \-f disc:sess
-The \fB\-f\fR option sets the Ethernet frame types for PPPoE discovery
-and session frames. The types are specified as hexadecimal numbers
-separated by a colon. Standard PPPoE uses frame types 8863:8864.
-\fIYou should not use this option\fR unless you are absolutely sure
-the peer you are dealing with uses non-standard frame types.
-
-.TP
-.B \-h
-The \fB\-h\fR option prints a brief usage message and exits.
-
-.SH OPERATION
-
-\fBpppoe-server\fR listens for incoming PPPoE discovery packets. When
-a session is established, it spawns a \fBpppd\fR process. The following
-options are passed to \fBpppd\fR:
-
-.nf
-nodetach noaccomp nobsdcom nodeflate nopcomp novj novjccomp
-default-asyncmap
-.fi
-
-In addition, the local and remote IP address are set based on the
-\fB\-L\fR and \fB\-R\fR options. The \fBpty\fR option is supplied along
-with a \fBpppoe\fR command to initiate the PPPoE session. Finally,
-additional \fBpppd\fR options can be placed in the file
-\fB/etc/ppp/pppoe-server-options\fR (which must exist, even if it is just
-empty!)
-
-Note that \fBpppoe-server\fR is meant mainly for testing PPPoE clients.
-It is \fInot\fR a high-performance server meant for production use.
-
-.SH AUTHORS
-\fBpppoe-server\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), adsl-connect(8), pppd(8), pppoe.conf(5),
-pppoe(8), adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-relay(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/pppoe-sniff.8 b/mdk-stage1/rp-pppoe/man/pppoe-sniff.8
deleted file mode 100644
index 431830a22..000000000
--- a/mdk-stage1/rp-pppoe/man/pppoe-sniff.8
+++ /dev/null
@@ -1,77 +0,0 @@
-.\" $Id$
-.TH PPPOE-SNIFF 8 "3 July 2000"
-.\""
-.UC 4
-.SH NAME
-pppoe-sniff \- examine network for non-standard PPPoE frames
-.SH SYNOPSIS
-.B pppoe-sniff \fR[\fIoptions\fR]
-
-.SH DESCRIPTION
-\fBpppoe-sniff\fR listens for likely-looking PPPoE PADR and session frames
-and deduces extra options required for \fBpppoe(8)\fR to work.
-
-Some DSL providers seem to use non-standard frame types for PPPoE frames,
-and/or require a certain value in the Service-Name field. It is often
-easier to sniff those values from a machine which can successfully connect
-rather than try to pry them out of the DSL provider.
-
-To use \fBpppoe-sniff\fR, you need two computers, a DSL modem and
-an Ethernet hub (\fInot\fR an Ethernet switch.)
-
-If the DSL modem normally connects directly to your computer's
-Ethernet card, connect it to the "uplink" port on the Ethernet hub.
-Plug two computers into normal ports on the hub. On one computer, run
-whatever software the DSL provider gave you on whatever operating
-system the DSL provider supports. On the other computer, run Linux and
-log in as root.
-
-On the Linux machine, put the Ethernet interface into promiscuous mode
-and start \fBpppoe-sniff\fR. If the ethernet interface is \fIeth0\fR,
-for example, type these commands:
-
-.nf
- ifconfig eth0 promisc
- pppoe-sniff -I eth0
-.fi
-
-On the other machine, start your DSL connection as usual. After a short
-time, \fBpppoe-sniff\fR should print recommendations for the value
-of \fBPPPOE_EXTRA\fR. Set this value in \fB/etc/ppp/pppoe.conf\fR.
-If \fBpppoe-sniff\fR indicates that something special is required in
-\fBPPPOE_EXTRA\fR, please e-mail this to \fBpppoe@roaringpenguin.com\fR
-along with the name of your ISP and the manufacturer and model number of
-your DSL modem. This information will be collated and provided on the
-PPPoE web page for users who do not have two computers.
-
-After \fBpppoe-sniff\fR finishes (or you stop it if it seems hung),
-remember to turn off promiscuous mode:
-
-.nf
- ifconfig eth0 -promisc
-.fi
-
-.SH OPTIONS
-.TP
-.B \-I \fIinterface\fR
-The \fB\-I\fR option specifies the Ethernet interface to use. Under Linux,
-it is typically \fIeth0\fR or \fIeth1\fR. The interface should be "up"
-and in promiscuous mode before you start \fBpppoe-sniff\fR.
-
-.TP
-.B \-V
-The \fB\-V\fR option causes \fBpppoe-sniff\fR to print its version number and
-exit.
-
-.SH BUGS
-\fBpppoe-sniff\fR only works on Linux.
-
-.SH AUTHORS
-\fBpppoe-sniff\fR was written by David F. Skoll <dfs@roaringpenguin.com>.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), adsl-connect(8), pppd(8), pppoe.conf(5),
-pppoe(8), adsl-setup(8), adsl-status(8), pppoe-server(8), pppoe-relay(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/pppoe.8 b/mdk-stage1/rp-pppoe/man/pppoe.8
deleted file mode 100644
index 999c3d2ed..000000000
--- a/mdk-stage1/rp-pppoe/man/pppoe.8
+++ /dev/null
@@ -1,236 +0,0 @@
-.\" $Id$
-.TH PPPOE 8 "3 July 2000"
-.UC 4
-.SH NAME
-pppoe \- user-space PPPoE client.
-.SH SYNOPSIS
-.B pppd pty 'pppoe \fR[\fIpppoe_options\fR]\fB' \fR[\fIpppd_options\fR]
-.P
-.B pppoe -A \fR[\fIpppoe_options\fR]
-.SH DESCRIPTION
-\fBpppoe\fR is a user-space client for PPPoE (Point-to-Point Protocol
-over Ethernet) for Linux and other UNIX systems. \fBpppoe\fR works in
-concert with the \fBpppd\fR PPP daemon to provide a PPP connection
-over Ethernet, as is used by many ADSL service providers.
-
-.SH OPTIONS
-.TP
-.B \-I \fIinterface\fR
-The \fB\-I\fR option specifies the Ethernet interface to use. Under Linux,
-it is typically \fIeth0\fR or \fIeth1\fR. The interface should be "up"
-before you start \fBpppoe\fR, but should \fInot\fR be configured to have
-an IP address.
-
-.TP
-.B \-T \fItimeout\fR
-The \fB\-T\fR option causes \fBpppoe\fR to exit if no session traffic
-is detected for \fItimeout\fR seconds. I recommend that you use this
-option as an extra safety measure, but if you do, you should make sure
-that PPP generates enough traffic so the timeout will normally not be
-triggered. The best way to do this is to use the
-\fIlcp-echo-interval\fR option to \fBpppd\fR. You should set the
-PPPoE timeout to be about four times the LCP echo interval.
-
-.TP
-.B \-D \fIfile_name\fR
-The \fB\-D\fR option causes every packet to be dumped to the specified
-\fIfile_name\fR. This is intended for debugging only; it produces huge
-amounts of output and greatly reduces performance.
-
-.TP
-.B \-V
-The \fB\-V\fR option causes \fBpppoe\fR to print its version number and
-exit.
-
-.TP
-.B \-A
-The \fB\-A\fR option causes \fBpppoe\fR to send a PADI packet and then print
-the names of access concentrators in each PADO packet it receives. Do not
-use this option in conjunction with \fBpppd\fR; the \fB\-A\fR option is
-meant to be used interactively to give interesting information about the
-access concentrator.
-
-.TP
-.B \-S \fIservice_name\fR
-Specifies the desired service name. \fBpppoe\fR will only initiate sessions
-with access concentrators which can provide the specified service. In
-most cases, you should \fInot\fR specify this option. Use it only if you
-know that there are multiple access concentrators or know that you need a
-specific service name.
-
-.TP
-.B \-C \fIac_name\fR
-Specifies the desired access concentrator name. \fBpppoe\fR will only
-initiate sessions with the specified access concentrator. In
-most cases, you should \fInot\fR specify this option. Use it only if you
-know that there are multiple access concentrators. If both the
-\fB\-S\fR and \fB\-C\fR options are specified, they must \fIboth\fR match
-for \fBpppoe\fR to initiate a session.
-
-.TP
-.B \-U
-Causes \fBpppoe\fR to use the Host-Uniq tag in its discovery packets. This
-lets you run multiple \fBpppoe\fR daemons without having their discovery
-packets interfere with one another. You must supply this option to
-\fIall\fR \fBpppoe\fR daemons if you intend to run multiple daemons
-simultaneously.
-
-.TP
-.B \-s
-Causes \fBpppoe\fR to use \fIsynchronous\fR PPP encapsulation. If you
-use this option, then you \fImust\fR use the \fBsync\fR option with
-\fBpppd\fR. You are encouraged to use this option if it works, because
-it greatly reduces the CPU overhead of \fBpppoe\fR. However, it
-MAY be unreliable on slow machines -- there is a race condition between
-pppd writing data and pppoe reading it. For this reason, the default
-setting is asynchronous. If you encounter bugs or crashes with Synchronous
-PPP, turn it off -- don't e-mail me for support!
-
-.TP
-.B \-m \fIMSS\fR
-Causes \fBpppoe\fR to \fIclamp\fR the TCP maximum segment size at the specified
-value. Because of PPPoE overhead, the maximum segment size for PPPoE is
-smaller than for normal Ethernet encapsulation. This could cause problems
-for machines on a LAN behind a gateway using PPPoE. If you have a LAN
-behind a gateway, and the gateway connects to the Internet using PPPoE,
-you are strongly recommended to use a \fB\-m 1412\fR option. This avoids
-having to set the MTU on all the hosts on the LAN.
-
-.TP
-.B \-p \fIfile\fR
-Causes \fBpppoe\fR to write its process-ID to the specified file. This
-can be used to locate and kill \fBpppoe\fR processes.
-
-.TP
-.B \-e \fIsess:mac\fR
-Causes \fBpppoe\fR to skip the discovery phase and move directly to the
-session phase. The session is given by \fIsess\fR and the MAC address of
-the peer by \fImac\fR. This mode is \fInot\fR meant for normal use; it
-is designed only for \fBpppoe-server\fR(8).
-
-.TP
-.B \-n
-Causes \fBpppoe\fR not to open a discovery socket. This mode is
-\fInot\fR meant for normal use; it is designed only for
-\fBpppoe-server\fR(8).
-
-.TP
-.B \-k
-Causes \fBpppoe\fR to terminate an existing session by sending a PADT frame,
-and then exit. You must use the \fB\-e\fR option in conjunction with this
-option to specify the session to kill. This may be useful for killing
-sessions when a buggy peer does not realize the session has ended.
-
-.TP
-.B \-d
-Causes \fBpppoe\fR to perform discovery and then exit, after printing
-session information to standard output. The session information is printed
-in exactly the format expected by the \fB\-e\fR option. This option lets
-you initiate a PPPoE discovery, perform some other work, and then start
-the actual PPP session. \fIBe careful\fR; if you use this option in a loop,
-you can create many sessions, which may annoy your peer.
-
-.TP
-.B \-f disc:sess
-The \fB\-f\fR option sets the Ethernet frame types for PPPoE discovery
-and session frames. The types are specified as hexadecimal numbers
-separated by a colon. Standard PPPoE uses frame types 8863:8864.
-\fIYou should not use this option\fR unless you are absolutely sure
-the peer you are dealing with uses non-standard frame types. If your
-ISP uses non-standard frame types, complain!
-
-.TP
-.B \-h
-The \fB\-h\fR option causes \fBpppoe\fR to print usage information and
-exit.
-
-.SH PPPOE BACKGROUND
-
-PPPoE (Point-to-Point Protocol over Ethernet) is described in RFC 2516
-and is a protocol which allows the session abstraction to be maintained
-over bridged Ethernet networks.
-
-PPPoE works by encapsulating PPP frames in Ethernet frames. The protocol
-has two distinct stages: The \fIdiscovery\fR and the \fIsession\fR stage.
-
-In the discovery stage, the host broadcasts a special PADI (PPPoE
-Active Discovery Initiation) frame to discover any \fIaccess
-concentrators\fR. The access concentrators (typically, only one
-access concentrator) reply with PADO (PPPoE Active Discovery Offer)
-packets, announcing their presence and the services they offer. The
-host picks one of the access concentrators and transmits a PADR (PPPoE
-Active Discovery Request) packet, asking for a session. The access
-concentrator replies with a PADS (PPPoE Active Discovery
-Session-Confirmation) packet. The protocol then moves to the session stage.
-
-In the session stage, the host and access concentrator exchange PPP frames
-embedded in Ethernet frames. The normal Ethernet MTU is 1500 bytes, but
-the PPPoE overhead plus two bytes of overhead for the encapsulated PPP
-frame mean that the MTU of the PPP interface is at most 1492 bytes.
-This causes \fIall kinds of problems\fR if you are using a Linux machine
-as a firewall and interfaces behind the firewall have an MTU greater than
-1492. In fact, to be safe, I recommend setting the MTU of machines
-behind the firewall to 1412, to allow for worst-case TCP and IP options
-in their respective headers.
-
-Normally, PPP uses the Link Control Protocol (LCP) to shut down a PPP
-link. However, the PPPoE specification allows the link to be shut down
-with a special PADT (PPPoE Active Discovery Terminate) packet. This client
-recognizes this packet and will correctly terminate if a terminate request
-is received for the PPP session.
-
-.SH DESIGN GOALS
-
-My design goals for this PPPoE client were as follows, in descending order
-of importance:
-
-.TP
-.B o
-It must work.
-
-.TP
-.B o
-It must be a user-space program and not a kernel patch.
-
-.TP
-.B o
-The code must be easy to read and maintain.
-
-.TP
-.B o
-It must be fully compliant with RFC 2516, the proposed PPPoE standard.
-
-.TP
-.B o
-It must never hang up forever -- if the connection is broken, it must
-detect this and exit, allowing a wrapper script to restart the connection.
-
-.TP
-.B o
-It must be fairly efficient.
-
-.P
-I believe I have achieved all of these goals, but (of course) am open
-to suggestions, patches and ideas. See my home page,
-http://www.roaringpenguin.com, for contact information.
-
-.SH NOTES
-
-For best results, you must give \fBpppd\fR an mtu option of
-1492. I have observed problems with excessively-large frames
-unless I set this option. Also, if \fBpppoe\fR is running on a firewall
-machine, all machines behind the firewall should have MTU's of 1412.
-
-If you have problems, check your system logs. \fBpppoe\fR logs interesting
-things to syslog. You may have to turn on logging of \fIdebug\fR-level
-messages for complete diagnosis.
-
-.SH AUTHORS
-\fBpppoe\fR was written by David F. Skoll <dfs@roaringpenguin.com>,
-with much inspiration from an earlier version by Luke Stras.
-
-The \fBpppoe\fR home page is \fIhttp://www.roaringpenguin.com/pppoe/\fR.
-
-.SH SEE ALSO
-adsl-start(8), adsl-stop(8), adsl-connect(8), pppd(8), pppoe.conf(5), adsl-setup(8), adsl-status(8), pppoe-sniff(8), pppoe-server(8), pppoe-relay(8)
-
diff --git a/mdk-stage1/rp-pppoe/man/pppoe.conf.5 b/mdk-stage1/rp-pppoe/man/pppoe.conf.5
deleted file mode 100644
index 731fd98d4..000000000
--- a/mdk-stage1/rp-pppoe/man/pppoe.conf.5
+++ /dev/null
@@ -1,168 +0,0 @@
-.\" $Id$
-.\""
-.TH PPPOE.CONF 5 "21 February 2000"
-.UC 4
-.SH NAME
-pppoe.conf \- Configuration file used by \fBadsl-start\fR(8),
-\fBadsl-stop\fR(8), \fBadsl-status(8)\fR and \fBadsl-connect\fR(8).
-
-.SH DESCRIPTION
-\fB/etc/ppp/pppoe.conf\fR is a shell script which contains configuration
-information for Roaring Penguin's ADSL scripts. Note that \fBpppoe.conf\fR
-is used only by the various adsl-* shell scripts, not by \fBpppoe\fR
-itself.
-
-\fBpppoe.conf\fR consists of a sequence of shell variable assignments.
-The variables and their meanings are:
-
-.TP
-.B ETH
-The Ethernet interface connected to the ADSL modem (for example, eth0).
-
-.TP
-.B USER
-The ADSL user-id (for example, b1xxnxnx@sympatico.ca).
-
-.TP
-.B SERVICENAME
-If this is not blank, then it is passed with the \fB\-S\fR option to
-\fBpppoe\fR. It specifies a service name to ask for. Usually, you
-should leave it blank.
-
-.TP
-.B ACNAME
-If this is not blank, then it is passed with the \fB\-C\fR option to
-\fBpppoe\fR. It specifies the name of the access concentrator to connect
-to. Usually, you should leave it blank.
-
-.TP
-.B DEMAND
-If set to a number, the link is activated on demand and brought down
-after after \fBDEMAND\fR seconds. If set to \fBno\fR, the link is kept
-up all the time rather than being activated on demand.
-
-.TP
-.B DNSTYPE
-One of \fBNOCHANGE\fR, \fBSPECIFY\fR or \fBSERVER\fR. If
-set to NOCHANGE, \fBadsl-connect\fR will not adjust the DNS setup in
-any way. If set to SPECIFY, it will re-write /etc/resolv.conf with
-the values of DNS1 and DNS2. If set to \fBSERVER\fR, it will
-supply the \fIusepeerdns\fR option to \fBpppd\fR, and make a symlink
-from /etc/resolv.conf to /etc/ppp/resolv.conf.
-
-.TP
-.B DNS1, DNS2
-IP addresses of DNS servers if you use DNSTYPE=SPECIFY.
-
-.TP
-.B NONROOT
-If the line \fBNONROOT=OK\fR (exactly like that; no whitespace or comments)
-appears in the configuration file, then \fBpppoe-wrapper\fR will allow
-non-root users to bring the conneciton up or down. The wrapper is installed
-only if you installed the rp-pppoe-gui package.
-
-.TP
-.B USEPEERDNS
-If set to "yes", then \fBadsl-connect\fR will supply the \fIusepeerdns\fR
-option to \fBpppd\fR, which causes it to obtain DNS server addresses
-from the peer and create a new \fB/etc/resolv.conf\fR file. Otherwise,
-\fBadsl-connect\fR will not supply this option, and \fBpppd\fR will not
-modify \fB/etc/resolv.conf\fR.
-
-.TP
-.B CONNECT_POLL
-How often (in seconds) \fBadsl-start\fR should check to see if a new PPP
-interface has come up. If this is set to 0, the \fBadsl-start\fR simply
-initiates the PPP session, but does not wait to see if it comes up
-successfully.
-
-.TP
-.B CONNECT_TIMEOUT
-How long (in seconds) \fBadsl-start\fR should wait for a new PPP interface
-to come up before concluding that \fBadsl-connect\fR has failed and killing
-the session.
-
-.TP
-.B PING
-A character which is echoed every \fBCONNECT_POLL\fR seconds while
-\fBadsl-start\fR is waiting for the PPP interface to come up.
-
-.TP
-.B FORCEPING
-A character which is echoed every \fBCONNECT_POLL\fR seconds while
-\fBadsl-start\fR is waiting for the PPP interface to come up. Similar
-to \fBPING\fR, but the character is echoed even if \fBadsl-start\fR's
-standard output is not a tty.
-
-.TP
-.B PIDFILE
-A file in which to write the process-ID of the adsl-connect process
-(for example, \fB/var/run/pppoe.pid\fR). Two additional files
-($PIDFILE.pppd and $PIDFILE.pppoe) hold the process-ID's of the
-\fBpppd\fR and \fBpppoe\fR processes, respectively.
-
-.TP
-.B SYNCHRONOUS
-An indication of whether or not to use synchronous PPP (\fByes\fR or
-\fBno\fR). Synchronous PPP is safe on Linux machines with the n_hdlc
-line discipline. (If you have a file called "n_hdlc.o" in your
-modules directory, you have the line discipline.) It is \fInot
-recommended\fR on other machines or on Linux machines without the
-n_hdlc line discipline due to some known and unsolveable race
-conditions in a user-mode client.
-
-.TP
-.B CLAMPMSS
-The value at which to "clamp" the advertised MSS for TCP sessions. The
-default of 1412 should be fine.
-
-.TP
-.B LCP_INTERVAL
-How often (in seconds) \fBpppd\fR sends out LCP echo-request packets.
-
-.TP
-.B LCP_FAILURE
-How many unanswered LCP echo-requests must occur before \fBpppd\fR
-concludes the link is dead.
-
-.TP
-.B PPPOE_TIMEOUT
-If this many seconds elapse without any activity seen by \fBpppoe\fR,
-then \fBpppoe\fR exits.
-
-.TP
-.B FIREWALL
-One of NONE, STANDALONE or MASQUERADE. If NONE, then \fBadsl-connect\fR does
-not add any firewall rules. If STANDALONE, then it clears existing firewall
-rules and sets up basic rules for a standalone machine. If MASQUERADE, then
-it clears existing firewall rules and sets up basic rules for an Internet
-gateway. If you run services on your machine, these simple firewall scripts
-are inadequate; you'll have to make your own firewall rules and set FIREWALL
-to NONE.
-
-.TP
-.B PPPOE_EXTRA
-Any extra arguments to pass to \fBpppoe\fR
-
-.TP
-.B PPPD_EXTRA
-Any extra arguments to pass to \fBpppd\fR
-
-.TP
-.B LINUX_PLUGIN
-If non-blank, the full path of the Linux kernel-mode PPPoE plugin
-(typically \fB/etc/ppp/plugins/rp-pppoe.so\fR.) This forces
-\fBadsl-connect\fR to use kernel-mode PPPoE on Linux 2.4.x systems.
-This code is experimental and unsupported. Use of the plugin causes
-\fBadsl-connect\fR to ignore CLAMPMSS, PPPOE_EXTRA, SYNCHRONOUS and
-PPPOE_TIMEOUT.
-
-.P
-By using different configuration files with different PIDFILE
-settings, you can manage multiple PPPoE connections. Just specify the
-configuration file as an argument to \fBadsl-start\fR and \fBadsl-stop\fR.
-
-.SH SEE ALSO
-pppoe(8), adsl-connect(8), adsl-start(8), adsl-stop(8), pppd(8), adsl-setup(8),
-pppoe-wrapper(8)
-
diff --git a/mdk-stage1/rp-pppoe/rp-pppoe-gui.spec b/mdk-stage1/rp-pppoe/rp-pppoe-gui.spec
deleted file mode 100644
index 3222a602e..000000000
--- a/mdk-stage1/rp-pppoe/rp-pppoe-gui.spec
+++ /dev/null
@@ -1,98 +0,0 @@
-Summary: PPP Over Ethernet (xDSL support)
-Name: rp-pppoe-gui
-Version: 3.0
-%if %(%{expand:test %{_vendor} != mandrake ; echo $?})
-Release: 1mdk
-%else
-Release: 1
-%endif
-Copyright: GPL
-Group: System Environment/Daemons
-Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-3.0.tar.gz
-Url: http://www.roaringpenguin.com/pppoe/
-Packager: David F. Skoll <dfs@roaringpenguin.com>
-BuildRoot: /tmp/pppoe-build
-Vendor: Roaring Penguin Software Inc.
-Requires: ppp >= 2.3.7
-Requires: rp-pppoe >= 3.0
-
-%description
-This is a graphical wrapper around the rp-pppoe PPPoE client. PPPoE is
-a protocol used by many DSL Internet Service Providers.
-
-%prep
-umask 022
-mkdir -p $RPM_BUILD_ROOT
-cd $RPM_BUILD_ROOT
-rm -rf $RPM_BUILD_ROOT/rp-pppoe-%{version}
-zcat $RPM_SOURCE_DIR/rp-pppoe-%{version}.tar.gz | tar xvf -
-cd $RPM_BUILD_ROOT/rp-pppoe-%{version}/src
-./configure --mandir=%{_mandir}
-
-%build
-cd $RPM_BUILD_ROOT/rp-pppoe-%{version}/gui
-make
-
-%install
-cd $RPM_BUILD_ROOT/rp-pppoe-%{version}/gui
-make install RPM_INSTALL_ROOT=$RPM_BUILD_ROOT
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-# Install entry in KDE menu
-if test -n "$KDEDIR" ; then
- mkdir -p "$KDEDIR/share/applnk/Internet"
- cat <<EOF > "$KDEDIR/share/applnk/Internet/tkpppoe.kdelnk"
-# KDE Config File
-[KDE Desktop Entry]
-Name=TkPPPoE
-Comment=Start/Stop ADSL connections
-Exec=tkpppoe
-Terminal=0
-Type=Application
-EOF
-fi
-
-# Install entry in GNOME menus
-GNOMEDIR=`gnome-config --datadir 2>/dev/null`
-if test -n "$GNOMEDIR" ; then
- mkdir -p "$GNOMEDIR/gnome/apps/Internet"
-cat <<EOF > "$GNOMEDIR/gnome/apps/Internet/tkpppoe.desktop"
-[Desktop Entry]
-Name=TkPPPoE
-Comment=Start/Stop ADSL connections
-Exec=tkpppoe
-Terminal=0
-Type=Application
-EOF
-fi
-
-%postun
-# Remove KDE menu entry
-if test -n "$KDEDIR" ; then
- rm -f "$KDEDIR/share/applnk/Internet/tkpppoe.kdelnk"
-fi
-
-# Remove GNOME menu entry
-GNOMEDIR=`gnome-config --datadir 2>/dev/null`
-if test -n "$GNOMEDIR" ; then
- rm -f "$GNOMEDIR/gnome/apps/Internet/tkpppoe.desktop"
-fi
-
-%files
-%defattr(-,root,root)
-%dir /etc/ppp/rp-pppoe-gui
-/usr/sbin/pppoe-wrapper
-/usr/bin/tkpppoe
-%{_mandir}/man1/tkpppoe.1*
-%{_mandir}/man1/pppoe-wrapper.1*
-/usr/share/rp-pppoe-gui/tkpppoe.html
-/usr/share/rp-pppoe-gui/mainwin-busy.png
-/usr/share/rp-pppoe-gui/mainwin-nonroot.png
-/usr/share/rp-pppoe-gui/mainwin.png
-/usr/share/rp-pppoe-gui/props-advanced.png
-/usr/share/rp-pppoe-gui/props-basic.png
-/usr/share/rp-pppoe-gui/props-nic.png
-/usr/share/rp-pppoe-gui/props-options.png
diff --git a/mdk-stage1/rp-pppoe/rp-pppoe.spec b/mdk-stage1/rp-pppoe/rp-pppoe.spec
deleted file mode 100644
index 622e3bb80..000000000
--- a/mdk-stage1/rp-pppoe/rp-pppoe.spec
+++ /dev/null
@@ -1,71 +0,0 @@
-Summary: PPP Over Ethernet (xDSL support)
-Name: rp-pppoe
-Version: 3.0
-%if %(%{expand:test %{_vendor} != mandrake ; echo $?})
-Release: 1mdk
-%else
-Release: 1
-%endif
-Copyright: GPL
-Group: System Environment/Daemons
-Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-3.0.tar.gz
-Url: http://www.roaringpenguin.com/pppoe/
-Packager: David F. Skoll <dfs@roaringpenguin.com>
-BuildRoot: /tmp/pppoe-build
-Vendor: Roaring Penguin Software Inc.
-Requires: ppp >= 2.3.7
-
-%description
-PPPoE (Point-to-Point Protocol over Ethernet) is a protocol used by
-many ADSL Internet Service Providers. Roaring Penguin has a free
-client for Linux systems to connect to PPPoE service providers.
-
-The client is a user-mode program and does not require any kernel
-modifications. It is fully compliant with RFC 2516, the official PPPoE
-specification.
-
-%prep
-%setup
-cd src
-./configure --mandir=%{_mandir}
-
-%build
-cd src
-make
-
-%install
-cd src
-make install RPM_INSTALL_ROOT=$RPM_BUILD_ROOT
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%doc doc/CHANGES doc/HOW-TO-CONNECT doc/LICENSE doc/KERNEL-MODE-PPPOE README
-%config /etc/ppp/pppoe.conf
-%config /etc/ppp/pppoe-server-options
-%config /etc/ppp/firewall-masq
-%config /etc/ppp/firewall-standalone
-/etc/ppp/plugins/*
-/usr/sbin/pppoe
-/usr/sbin/pppoe-server
-/usr/sbin/pppoe-sniff
-/usr/sbin/pppoe-relay
-/usr/sbin/adsl-connect
-/usr/sbin/adsl-start
-/usr/sbin/adsl-stop
-/usr/sbin/adsl-setup
-/usr/sbin/adsl-status
-%{_mandir}/man5/pppoe.conf.5*
-%{_mandir}/man8/pppoe.8*
-%{_mandir}/man8/pppoe-server.8*
-%{_mandir}/man8/pppoe-relay.8*
-%{_mandir}/man8/pppoe-sniff.8*
-%{_mandir}/man8/adsl-connect.8*
-%{_mandir}/man8/adsl-start.8*
-%{_mandir}/man8/adsl-stop.8*
-%{_mandir}/man8/adsl-status.8*
-%{_mandir}/man8/adsl-setup.8*
-/etc/rc.d/init.d/adsl
-
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-connect.in b/mdk-stage1/rp-pppoe/scripts/adsl-connect.in
deleted file mode 100755
index 85dfb3d8d..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-connect.in
+++ /dev/null
@@ -1,278 +0,0 @@
-#!/bin/sh
-# @configure_input@
-#***********************************************************************
-#
-# adsl-connect
-#
-# Shell script to connect to an ADSL provider using PPPoE
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#
-# This file may be distributed under the terms of the GNU General
-# Public License.
-#
-# Usage: adsl-connect [config_file]
-# adsl-connect interface user [config_file]
-# Second form overrides USER and ETH from config file.
-# If config_file is omitted, defaults to /etc//ppp/pppoe.conf
-#
-#***********************************************************************
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-localstatedir=/var
-
-# Paths to programs
-IFCONFIG=/sbin/ifconfig
-PPPD=@PPPD@
-SETSID=@SETSID@
-PPPOE=@sbindir@/pppoe
-LOGGER="/usr/bin/logger -t `basename $0`"
-
-# Must be root
-if test "`@ID@ -u`" != 0 ; then
- echo "$0: You must be root to run this script" >& 2
- exit 1
-fi
-
-if test "$SETSID" != "" -a ! -x "$SETSID"; then
- SETSID=""
-fi
-
-CONFIG=/etc//ppp/pppoe.conf
-USER=""
-ETH=""
-
-# Sort out command-line arguments
-case "$#" in
- 1)
- CONFIG="$1"
- ;;
- 3)
- CONFIG="$3"
- ;;
-esac
-
-if test ! -f "$CONFIG" -o ! -r "$CONFIG" ; then
- echo "$0: Cannot read configuration file '$CONFIG'" >& 2
- exit 1
-fi
-
-. $CONFIG
-
-PPPOE_PIDFILE="$PIDFILE.pppoe"
-PPPD_PIDFILE="$PIDFILE.pppd"
-
-# Check for command-line overriding of ETH and USER
-case "$#" in
- 2|3)
- ETH="$1"
- USER="$2"
- ;;
-esac
-
-# Check that config file is sane
-if test "$USER" = "" ; then
- echo "$0: Check '$CONFIG' -- no setting for USER" >& 2
- exit 1
-fi
-if test "$ETH" = "" ; then
- echo "$0: Check '$CONFIG' -- no setting for ETH" >& 2
- exit 1
-fi
-
-PPPD_PID=0
-
-# Catch common error
-if test "$DEBUG" = "1" ; then
- echo "*** If you want to use DEBUG, invoke adsl-start, not adsl-connect."
- exit 1
-fi
-
-if test "$DEBUG" != "" ; then
- if test "$LINUX_PLUGIN" != "" ; then
- echo "Cannot use DEBUG mode and LINUX_PLUGIN at the same time."
- echo "Kernel-mode PPPoE is experimental and unsupported."
- exit 1
- fi
- echo "* The following section identifies your Ethernet interface" >> $DEBUG
- echo "* and user name. Some ISP's need 'username'; others" >> $DEBUG
- echo "* need 'username@isp.com'. Try both" >> $DEBUG
- echo "ETH=$ETH; USER=$USER" >> $DEBUG
- echo "---------------------------------------------" >> $DEBUG
-fi
-
-# MTU of Ethernet card attached to modem MUST be 1500. This apparently
-# fails on some *BSD's, so we'll only do it under Linux
-
-if test `uname -s` = Linux ; then
- $IFCONFIG $ETH up mtu 1500
- # For 2.4 kernels. Will fail on 2.2.x, but who cares?
- modprobe ppp_generic > /dev/null 2>&1
- modprobe ppp_async > /dev/null 2>&1
- modprobe ppp_synctty > /dev/null 2>&1
- if test -n "$LINUX_PLUGIN" ; then
- modprobe pppox > /dev/null 2>&1
- modprobe pppoe > /dev/null 2>&1
- fi
-fi
-
-if test "$SYNCHRONOUS" = "yes" ; then
- PPPOE_SYNC=-s
- PPPD_SYNC=sync
- # Increase the chances of it working on Linux...
- if test `uname -s` = Linux ; then
- modprobe n_hdlc > /dev/null 2>&1
- fi
-else
- PPPOE_SYNC=""
- PPPD_SYNC=""
-fi
-
-if test -n "$ACNAME" ; then
- ACNAME="-C $ACNAME"
-fi
-
-if test -n "$SERVICENAME" ; then
- SERVICENAME="-S $SERVICENAME"
-fi
-
-if test "$CLAMPMSS" = "no" ; then
- CLAMPMSS=""
-else
- CLAMPMSS="-m $CLAMPMSS"
-fi
-
-# If DNSTYPE is SERVER, we must use "usepeerdns" option to pppd.
-if test "$DNSTYPE" = "SERVER" ; then
- USEPEERDNS=yes
-fi
-
-if test "$USEPEERDNS" = "yes" ; then
- USEPEERDNS="usepeerdns"
-else
- USEPEERDNS=""
-fi
-
-# Backward config file compatibility
-if test "$DEMAND" = "" ; then
- DEMAND=no
-fi
-
-if test "$DEMAND" = "no" ; then
- DEMAND=""
-else
- DEMAND="demand persist idle $DEMAND 10.112.112.112:10.112.112.113 ipcp-accept-remote ipcp-accept-local connect true noipdefault ktune"
-fi
-
-case "$FIREWALL" in
- STANDALONE)
- . /etc/ppp/firewall-standalone
- ;;
- MASQUERADE)
- . /etc/ppp/firewall-masq
- ;;
-esac
-
-# If we're using kernel-mode PPPoE on Linux...
-if test "$LINUX_PLUGIN" != "" ; then
- PLUGIN_OPTS="plugin $LINUX_PLUGIN $ETH"
- modprobe pppoe > /dev/null 2>&1
-fi
-
-# Standard PPP options we always use
-PPP_STD_OPTIONS="$PLUGIN_OPTS noipdefault noauth default-asyncmap defaultroute hide-password nodetach $USEPEERDNS local mtu 1492 mru 1492 noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user $USER lcp-echo-interval $LCP_INTERVAL lcp-echo-failure $LCP_FAILURE $PPPD_EXTRA"
-
-# Jigger DNS if required...
-if test "$DNSTYPE" = "SERVER" ; then
- # Sorry, dude...
- rm -f /etc/resolv.conf
- ln -s /etc/ppp/resolv.conf /etc/resolv.conf
-elif test "$DNSTYPE" = "SPECIFY" ; then
- # Sorry, dude...
- rm -f /etc/resolv.conf
- echo "nameserver $DNS1" > /etc/resolv.conf
- if test -n "$DNS2" ; then
- echo "nameserver $DNS2" >> /etc/resolv.conf
- fi
-fi
-
-# PPPoE invocation
-PPPOE_CMD="$PPPOE -p $PPPOE_PIDFILE -I $ETH -T $PPPOE_TIMEOUT -U $PPPOE_SYNC $CLAMPMSS $ACNAME $SERVICENAME $PPPOE_EXTRA"
-if test "$DEBUG" != "" ; then
- if test "$DEMAND" != "" ; then
- echo "(Turning off DEMAND for debugging purposes)"
- DEMAND=""
- fi
- echo "* The following section shows the pppd command we will invoke" >> $DEBUG
- echo "pppd invocation" >> $DEBUG
- echo "$SETSID $PPPD pty '$PPPOE_CMD' $PPP_STD_OPTIONS $PPPD_SYNC debug" >> $DEBUG
- echo "---------------------------------------------" >> $DEBUG
- $SETSID $PPPD pty "$PPPOE_CMD -D $DEBUG-0" \
- $PPP_STD_OPTIONS \
- $PPPD_SYNC \
- debug >> $DEBUG 2>&1
- echo "---------------------------------------------" >> $DEBUG
- echo "* The following section is an extract from your log." >> $DEBUG
- echo "* Look for error messages from pppd, such as" >> $DEBUG
- echo "* a lack of kernel support for PPP, authentication failure" >> $DEBUG
- echo "* etc." >> $DEBUG
- echo "Extract from /var/log/messages" >> $DEBUG
- grep 'ppp' /var/log/messages | tail -150 >> $DEBUG
- date >> $DEBUG
- echo "---------------------------------------------" >> $DEBUG
- echo "* The following section is a dump of the packets" >> $DEBUG
- echo "* sent and received by rp-pppoe. If you don't see" >> $DEBUG
- echo "* any output, it's an Ethernet driver problem. If you only" >> $DEBUG
- echo "* see three PADI packets and nothing else, check your cables" >> $DEBUG
- echo "* and modem. Make sure the modem lights flash when you try" >> $DEBUG
- echo "* to connect. Check that your Ethernet card is in" >> $DEBUG
- echo "* half-duplex, 10Mb/s mode. If all else fails," >> $DEBUG
- echo "* try using pppoe-sniff." >> $DEBUG
- echo "rp-pppoe debugging dump" >> $DEBUG
- cat $DEBUG-0 >> $DEBUG
- rm -f $DEBUG-0
- for i in 1 2 3 4 5 6 7 8 9 10 ; do
- echo ""
- echo ""
- echo ""
- done
- echo "*** Finished debugging run. Please review the file"
- echo "*** '$DEBUG' and try to"
- echo "*** figure out what is going on."
- echo "***"
- echo "*** Unfortunately, we can NO LONGER accept debugging"
- echo "*** output for analysis. Please do not send this to"
- echo "*** Roaring Penguin; it is too time-consuming for"
- echo "*** us to deal with all the analyses we have been sent."
- exit 0
-fi
-
-echo $$ > $PIDFILE
-
-while [ true ] ; do
- if test "$LINUX_PLUGIN" != "" ; then
- $SETSID $PPPD $PPP_STD_OPTIONS $DEMAND &
- echo "$!" > $PPPD_PIDFILE
- else
- $SETSID $PPPD pty "$PPPOE_CMD" \
- $PPP_STD_OPTIONS \
- $DEMAND \
- $PPPD_SYNC &
- echo "$!" > $PPPD_PIDFILE
- fi
- wait
-
- # Run /etc/ppp/adsl-lost if it exists
- test -x /etc/ppp/adsl-lost && /etc/ppp/adsl-lost
-
- # Re-establish the connection
- $LOGGER -p daemon.notice \
- "ADSL connection lost; attempting re-connection."
-
- # Wait a bit in case a problem causes tons of log messages :-)
- sleep 5
-done
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-init-suse.in b/mdk-stage1/rp-pppoe/scripts/adsl-init-suse.in
deleted file mode 100755
index 936f5fba7..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-init-suse.in
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-#
-# adsl This script starts or stops an ADSL connection
-#
-# chkconfig: 2345 99 01
-# description: Connects to ADSL provider
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc. This software may
-# be distributed under the terms of the GNU General Public License, version
-# 2 or any later version.
-# Modifed to work with SuSE 6.4 linux by Gary Cameron.
-#
-# Source function library.
-#. /etc/rc.d/init.d/functions # For red hat?
-. /etc/rc.config # For SuSE, enables setting from /etc/rc.config
-
-#Tweak this
-restart_time=120
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# Paths to programs
-START=@sbindir@/adsl-start
-STOP=@sbindir@/adsl-stop
-STATUS=@sbindir@/adsl-status
-
-test "$ADSL_START" = "yes" || exit 0
-
-# The echo return value for success (defined in /etc/rc.config).
-return=$rc_done
-case "$1" in
- start)
- echo -n "Bringing up ADSL link"
- $START > /dev/null 2>&1 || return=$rc_failed
- echo -e "$return"
- ;;
-
- stop)
- echo -n "Shutting down ADSL link"
- $STOP > /dev/null 2>&1 || return=$rc_failed
- echo -e "$return"
- ;;
-
- restart)
- $0 stop
- echo "Waiting" $restart_time "seconds for the host to reset itself"
- sleep $restart_time #Note: Need time for host to reset itself
- $0 start
- ;;
-
- status)
- $STATUS
- ;;
-
- *)
- echo "Usage: adsl {start|stop|restart|status}"
- exit 1
-esac
-
-exit 0
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-init-turbolinux.in b/mdk-stage1/rp-pppoe/scripts/adsl-init-turbolinux.in
deleted file mode 100755
index 3b22f1345..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-init-turbolinux.in
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-#
-# adsl This script starts or stops an ADSL connection
-#
-# chkconfig: 2345 99 01
-# description: Connects to ADSL provider
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc. This software may
-# be distributed under the terms of the GNU General Public License, version
-# 2 or any later version.
-
-# Source function library if it exists
-test -r /etc/rc.d/init.d/functions && . /etc/rc.d/init.d/functions
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# Paths to programs
-START=@sbindir@/adsl-start
-STOP=@sbindir@/adsl-stop
-STATUS=@sbindir@/adsl-status
-case "$1" in
- start)
- echo -n "Bringing up ADSL link: "
-
- $START
- if [ $? = 0 ] ; then
- echo success
- touch /var/lock/subsys/adsl
- else
- echo failure
- fi
- ;;
-
- stop)
- echo -n "Shutting down ADSL link: "
-
- $STOP > /dev/null 2>&1
- if [ $? = 0 ] ; then
- echo success
- rm -f /var/lock/subsys/adsl
- else
- echo failure
- fi
- ;;
-
- restart)
- $0 stop
- $0 start
- ;;
-
- status)
- $STATUS
- ;;
-
- *)
- echo "Usage: adsl {start|stop|restart|status}"
- exit 1
-esac
-
-exit 0
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-init.in b/mdk-stage1/rp-pppoe/scripts/adsl-init.in
deleted file mode 100755
index ab9146fd3..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-init.in
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-#
-# adsl This script starts or stops an ADSL connection
-#
-# chkconfig: 2345 99 01
-# description: Connects to ADSL provider
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc. This software may
-# be distributed under the terms of the GNU General Public License, version
-# 2 or any later version.
-
-# Source function library if it exists
-test -r /etc/rc.d/init.d/functions && . /etc/rc.d/init.d/functions
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# Paths to programs
-START=@sbindir@/adsl-start
-STOP=@sbindir@/adsl-stop
-STATUS=@sbindir@/adsl-status
-case "$1" in
- start)
- echo -n "Bringing up ADSL link"
-
- $START
- if [ $? = 0 ] ; then
- touch /var/lock/subsys/adsl
- echo_success
- else
- echo_failure
- fi
- echo ""
- ;;
-
- stop)
- echo -n "Shutting down ADSL link"
-
- $STOP > /dev/null 2>&1
- if [ $? = 0 ] ; then
- rm -f /var/lock/subsys/adsl
- echo_success
- else
- echo_failure
- fi
- echo ""
- ;;
-
- restart)
- $0 stop
- $0 start
- ;;
-
- status)
- $STATUS
- ;;
-
- *)
- echo "Usage: adsl {start|stop|restart|status}"
- exit 1
-esac
-
-exit 0
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-setup.in b/mdk-stage1/rp-pppoe/scripts/adsl-setup.in
deleted file mode 100755
index a8c7fa039..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-setup.in
+++ /dev/null
@@ -1,346 +0,0 @@
-#!/bin/sh
-#***********************************************************************
-#
-# adsl-setup
-#
-# All-purpose slicing/dicing shell script to configure rp-pppoe.
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#***********************************************************************
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# Paths to programs
-IFCONFIG=/sbin/ifconfig
-PPPD=@PPPD@
-PPPOE=@sbindir@/pppoe
-ECHO=@ECHO@
-LOGGER="/usr/bin/logger -t `basename $0`"
-
-CONFIG=/etc/ppp/pppoe.conf
-
-# Protect created files
-umask 077
-
-copy() {
- cp $1 $2
- if [ "$?" != 0 ] ; then
- $ECHO "*** Error copying $1 to $2"
- $ECHO "*** Quitting."
- exit 1
- fi
-}
-
-$ECHO "Welcome to the Roaring Penguin ADSL client setup. First, I will run"
-$ECHO "some checks on your system to make sure the PPPoE client is installed"
-$ECHO "properly..."
-$ECHO ""
-
-# Must be root
-if [ "`@ID@ -u`" != 0 ] ; then
- $ECHO "$0: Sorry, you must be root to run this script"
- exit 1
-fi
-
-# Prototype config file must exist
-if [ ! -r "$CONFIG" ] ; then
- $ECHO "Oh, dear, I don't see the file '$CONFIG' anywhere. Please"
- $ECHO "re-install the PPPoE client."
- exit 1
-fi
-
-# Must have pppd
-if [ ! -x $PPPD ] ; then
- $ECHO "Oops, I can't execute the program '$PPPD'. You"
- $ECHO "must install the PPP software suite, version 2.3.10 or later."
- exit 1
-fi
-
-. $CONFIG
-
-if [ "$DEMAND" = "" ] ; then
- DEMAND=no
-fi
-
-# pppoe must exist
-if [ ! -x "$PPPOE" ] ; then
- $ECHO "Oh, dear, I can't execute the program '$PPPOE'. Please"
- $ECHO "re-install the rp-pppoe client."
- exit 1
-fi
-
-$ECHO "Looks good! Now, please enter some information:"
-
-while [ true ] ; do
- $ECHO ""
- $ECHO "USER NAME"
- $ECHO ""
- $ECHO -n ">>> Enter your PPPoE user name (default $USER): "
- read U
-
- if [ "$U" = "" ] ; then
- U="$USER"
- fi
-
- # Under Linux, "fix" the default interface if eth1 is not available
- if test `uname -s` = "Linux" ; then
- $IFCONFIG $ETH > /dev/null 2>&1 || ETH=eth0
- fi
- $ECHO ""
- $ECHO "INTERFACE"
- $ECHO ""
- $ECHO ">>> Enter the Ethernet interface connected to the ADSL modem"
- $ECHO "For Solaris, this is likely to be something like /dev/hme0."
- $ECHO "For Linux, it will be ethn, where 'n' is a number."
- $ECHO -n "(default $ETH): "
- read E
-
- if [ "$E" = "" ] ; then
- E="$ETH"
- fi
-
- $ECHO ""
- $ECHO "Do you want the link to come up on demand, or stay up continuously?"
- $ECHO "If you want it to come up on demand, enter the idle time in seconds"
- $ECHO "after which the link should be dropped. If you want the link to"
- $ECHO "stay up permanently, enter 'no' (two letters, lower-case.)"
- $ECHO "NOTE: Demand-activated links do not interact well with dynamic IP"
- $ECHO "addresses. You may have some problems with demand-activated links."
- $ECHO -n ">>> Enter the demand value (default $DEMAND): "
- read D
- if [ "$D" = "" ] ; then
- D=$DEMAND
- fi
-
- $ECHO ""
- $ECHO "DNS"
- $ECHO ""
- $ECHO "Please enter the IP address of your ISP's primary DNS server."
- $ECHO "If your ISP claims that 'the server will provide DNS addresses',"
- $ECHO "enter 'server' (all lower-case) here."
- $ECHO "If you just press enter, I will assume you know what you are"
- $ECHO "doing and not modify your DNS setup."
- $ECHO -n ">>> Enter the DNS information here: "
-
- read DNS1
-
-
- if [ "$DNS1" != "" ] ; then
- if [ "$DNS1" != "server" ] ; then
- $ECHO "Please enter the IP address of your ISP's secondary DNS server."
- $ECHO "If you just press enter, I will assume there is only one DNS server."
- $ECHO -n ">>> Enter the secondary DNS server address here: "
- read DNS2
- fi
- fi
-
- while [ true ] ; do
- $ECHO ""
- $ECHO "PASSWORD"
- $ECHO ""
- stty -echo
- $ECHO -n ">>> Please enter your PPPoE password: "
- read PWD1
- $ECHO ""
- $ECHO -n ">>> Please re-enter your PPPoE password: "
- read PWD2
- $ECHO ""
- stty echo
- if [ "$PWD1" = "$PWD2" ] ; then
- break
- fi
-
- $ECHO -n ">>> Sorry, the passwords do not match. Try again? (y/n)"
- read ANS
- case "$ANS" in
- N|No|NO|Non|n|no|non)
- $ECHO "OK, quitting. Bye."
- exit 1
- esac
- done
-
- # Firewalling
- $ECHO ""
- $ECHO "FIREWALLING"
- $ECHO ""
- if test `uname -s` != "Linux" ; then
- $ECHO "Sorry, firewalling is only supported under Linux. Consult"
- $ECHO "your operating system manuals for details on setting up"
- $ECHO "packet filters for your system."
- FIREWALL=NONE
- else
- $ECHO "Please choose the firewall rules to use. Note that these rules are"
- $ECHO "very basic. You are strongly encouraged to use a more sophisticated"
- $ECHO "firewall setup; however, these will provide basic security. If you"
- $ECHO "are running any servers on your machine, you must choose 'NONE' and"
- $ECHO "set up firewalling yourself. Otherwise, the firewall rules will deny"
- $ECHO "access to all standard servers like Web, e-mail, ftp, etc. If you"
- $ECHO "are using SSH, the rules will block outgoing SSH connections which"
- $ECHO "allocate a privileged source port."
- $ECHO ""
- while [ true ] ; do
- $ECHO "The firewall choices are:"
- $ECHO "0 - NONE: This script will not set any firewall rules. You are responsible"
- $ECHO " for ensuring the security of your machine. You are STRONGLY"
- $ECHO " recommended to use some kind of firewall rules."
- $ECHO "1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation"
- $ECHO "2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway"
- $ECHO " for a LAN"
- $ECHO -n ">>> Choose a type of firewall (0-2): "
- read a
- if [ "$a" = 0 -o "$a" = 1 -o "$a" = 2 ] ; then
- break
- fi
- $ECHO "Please enter a number from 0 to 2"
- done
-
- case "$a" in
- 0)
- FIREWALL=NONE
- ;;
- 1)
- FIREWALL=STANDALONE
- ;;
- 2)
- FIREWALL=MASQUERADE
- ;;
- esac
- fi
-
- $ECHO ""
- $ECHO "** Summary of what you entered **"
- $ECHO ""
- $ECHO "Ethernet Interface: $E"
- $ECHO "User name: $U"
- if [ "$D" = "no" ] ; then
- $ECHO "Activate-on-demand: No"
- else
- $ECHO "Activate-on-demand: Yes; idle timeout = $D seconds"
- fi
-
- if [ "$DNS1" != "" ] ; then
- if [ "$DNS1" = "server" ] ; then
- $ECHO "DNS addresses: Supplied by ISP's server"
- else
- $ECHO "Primary DNS: $DNS1"
- if [ "$DNS2" != "" ] ; then
- $ECHO "Secondary DNS: $DNS2"
- fi
- fi
- else
- $ECHO "DNS: Do not adjust"
- fi
- $ECHO "Firewalling: $FIREWALL"
- $ECHO ""
- while [ true ] ; do
- $ECHO -n '>>> Accept these settings and adjust configuration files (y/n)? '
- read ANS
- case "ANS" in
- Y|y|yes|Yes|oui|Oui)
- ANS=y
- ;;
- N|n|no|No|non|Non)
- ANS=n
- ;;
- esac
- if [ "$ANS" = "y" -o "$ANS" = "n" ] ; then
- break
- fi
- done
- if [ "$ANS" = "y" ] ; then
- break
- fi
-done
-
-# Adjust configuration files. First to $CONFIG
-
-$ECHO "Adjusting $CONFIG"
-
-copy $CONFIG $CONFIG-bak
-if [ "$DNS1" = "server" ] ; then
- DNSTYPE=SERVER
- DNS1=""
- USEPEERDNS=yes
-else
- USEPEERDNS=no
- if [ "$DNS1" = "" ] ; then
- DNSTYPE=NOCHANGE
- else
- DNSTYPE=SPECIFY
- fi
-fi
-
-# Where is pppd likely to put its pid?
-if [ -d /var/run ] ; then
- VARRUN=/var/run
-else
- VARRUN=/etc/ppp
-fi
-
-# Some #$(*& ISP's use a slash in the user name...
-sed -e "s&^USER=.*&USER='$U'&" \
- -e "s&^ETH=.*&ETH='$E'&" \
- -e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-adsl.pid\"&" \
- -e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \
- -e "s/^DEMAND=.*/DEMAND=$D/" \
- -e "s/^DNSTYPE=.*/DNSTYPE=$DNSTYPE/" \
- -e "s/^DNS1=.*/DNS1=$DNS1/" \
- -e "s/^DNS2=.*/DNS2=$DNS2/" \
- -e "s/^USEPEERDNS=.*/USEPEERDNS=$USEPEERDNS/" \
- < $CONFIG-bak > $CONFIG
-
-if [ $? != 0 ] ; then
- $ECHO "** Error modifying $CONFIG"
- $ECHO "** Quitting"
- exit 1
-fi
-
-if [ "$DNS1" != "" ] ; then
- if [ "$DNS1" != "server" ] ; then
- $ECHO "Adjusting /etc/resolv.conf"
- if [ -r /etc/resolv.conf ] ; then
- grep -s "MADE-BY-RP-PPPOE" /etc/resolv.conf > /dev/null 2>&1
- if [ "$?" != 0 ] ; then
- $ECHO " (But first backing it up to /etc/resolv.conf-bak)"
- copy /etc/resolv.conf /etc/resolv.conf-bak
- fi
- fi
- $ECHO "# MADE-BY-RP-PPPOE" > /etc/resolv.conf
- $ECHO "nameserver $DNS1" >> /etc/resolv.conf
- if [ "$DNS2" != "" ] ; then
- $ECHO "nameserver $DNS2" >> /etc/resolv.conf
- fi
- fi
-fi
-
-$ECHO "Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets"
-if [ -r /etc/ppp/pap-secrets ] ; then
- $ECHO " (But first backing it up to /etc/ppp/pap-secrets-bak)"
- copy /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bak
-else
- cp /dev/null /etc/ppp/pap-secrets-bak
-fi
-if [ -r /etc/ppp/chap-secrets ] ; then
- $ECHO " (But first backing it up to /etc/ppp/chap-secrets-bak)"
- copy /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bak
-else
- cp /dev/null /etc/ppp/chap-secrets-bak
-fi
-
-egrep -v "^$U|^\"$U\"" /etc/ppp/pap-secrets-bak > /etc/ppp/pap-secrets
-$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/pap-secrets
-egrep -v "^$U|^\"$U\"" /etc/ppp/chap-secrets-bak > /etc/ppp/chap-secrets
-$ECHO "\"$U\" * \"$PWD1\"" >> /etc/ppp/chap-secrets
-
-$ECHO ""
-$ECHO ""
-$ECHO ""
-$ECHO "Congratulations, it should be all set up!"
-$ECHO ""
-$ECHO "Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring"
-$ECHO "it down. Type 'adsl-status' to see the link status."
-exit 0
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-start.in b/mdk-stage1/rp-pppoe/scripts/adsl-start.in
deleted file mode 100755
index 33251a851..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-start.in
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/bin/sh
-# @configure_input@
-#***********************************************************************
-#
-# adsl-start
-#
-# Shell script to bring up an ADSL connection
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#
-# This file may be distributed under the terms of the GNU General
-# Public License.
-#
-# Usage: adsl-start [config_file]
-# adsl-start interface user [config_file]
-# Second form overrides USER and ETH from config file.
-# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-#
-#***********************************************************************
-
-# From AUTOCONF
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-
-# Paths to programs
-CONNECT=@sbindir@/adsl-connect
-ECHO=@ECHO@
-IFCONFIG=/sbin/ifconfig
-
-# Defaults
-CONFIG=/etc/ppp/pppoe.conf
-USER=""
-ETH=""
-ME=`basename $0`
-# Must be root
-if [ "`@ID@ -u`" != 0 ] ; then
- $ECHO "$ME: You must be root to run this script" >& 2
- exit 1
-fi
-
-# Debugging
-if [ "$DEBUG" = "1" ] ; then
- $ECHO "*** Running in debug mode... please be patient..."
- DEBUG=/tmp/pppoe-debug-$$
- export DEBUG
- mkdir $DEBUG
- if [ "$?" != 0 ] ; then
- $ECHO "Could not create directory $DEBUG... exiting"
- exit 1
- fi
- DEBUG=$DEBUG/pppoe-debug.txt
-
- # Initial debug output
- $ECHO "---------------------------------------------" > $DEBUG
- $ECHO "* The following section contains information about your system" >> $DEBUG
- date >> $DEBUG
- $ECHO "Output of uname -a" >> $DEBUG
- uname -a >> $DEBUG
- $ECHO "---------------------------------------------" >> $DEBUG
- $ECHO "* The following section contains information about your network" >> $DEBUG
- $ECHO "* interfaces. The one you chose for PPPoE should contain the words:" >> $DEBUG
- $ECHO "* 'UP' and 'RUNNING'. If it does not, you probably have an Ethernet" >> $DEBUG
- $ECHO "* driver problem." >> $DEBUG
- $ECHO "Output of ifconfig -a" >> $DEBUG
- $IFCONFIG -a >> $DEBUG
- $ECHO "---------------------------------------------" >> $DEBUG
- if [ "`uname -s`" = "Linux" ] ; then
- $ECHO "* The following section contains information about kernel modules" >> $DEBUG
- $ECHO "* If the module for your Ethernet card is 'tulip', you might" >> $DEBUG
- $ECHO "* want to look for an updated version at http://www.scyld.com" >> $DEBUG
- $ECHO "Output of lsmod" >> $DEBUG
- lsmod >> $DEBUG
- $ECHO "---------------------------------------------" >> $DEBUG
- fi
- $ECHO "* The following section lists your routing table." >> $DEBUG
- $ECHO "* If you have an entry which starts with '0.0.0.0', you probably" >> $DEBUG
- $ECHO "* have defined a default route and gateway, and pppd will" >> $DEBUG
- $ECHO "* not create a default route using your ISP. Try getting" >> $DEBUG
- $ECHO "* rid of this route." >> $DEBUG
- $ECHO "Output of netstat -n -r" >> $DEBUG
- netstat -n -r >> $DEBUG
- $ECHO "---------------------------------------------" >> $DEBUG
- $ECHO "Contents of /etc/resolv.conf" >> $DEBUG
- $ECHO "* The following section lists DNS setup." >> $DEBUG
- $ECHO "* If you can browse by IP address, but not name, suspect" >> $DEBUG
- $ECHO "* a DNS problem." >> $DEBUG
- cat /etc/resolv.conf >> $DEBUG
- $ECHO "---------------------------------------------" >> $DEBUG
- $ECHO "* The following section lists /etc/ppp/options." >> $DEBUG
- $ECHO "* You should have NOTHING in that file." >> $DEBUG
- $ECHO "Contents of /etc/ppp/options" >> $DEBUG
- cat /etc/ppp/options >> $DEBUG 2>/dev/null
- $ECHO "---------------------------------------------" >> $DEBUG
-else
- DEBUG=""
-fi
-
-# Sort out command-line arguments
-case "$#" in
- 1)
- CONFIG="$1"
- ;;
- 3)
- CONFIG="$3"
- ;;
-esac
-
-if [ ! -f "$CONFIG" -o ! -r "$CONFIG" ] ; then
- $ECHO "$ME: Cannot read configuration file '$CONFIG'" >& 2
- exit 1
-fi
-
-. $CONFIG
-
-# Check for command-line overriding of ETH and USER
-case "$#" in
- 2|3)
- ETH="$1"
- USER="$2"
- ;;
-esac
-
-# Check for pidfile
-if [ -r "$PIDFILE" ] ; then
- PID=`cat "$PIDFILE"`
- # Check if still running
- kill -0 $PID > /dev/null 2>&1
- if [ $? = 0 ] ; then
- $ECHO "$ME: There already seems to be an ADSL connection up (PID $PID)" >& 2
- exit 1
- fi
- # Delete bogus PIDFILE
- rm -f "$PIDFILE" "$PIDFILE.pppd" "$PIDFILE.pppoe" "$PIDFILE.start"
-fi
-
-echo $$ > $PIDFILE.start
-
-# Start the connection in the background unless we're debugging
-if [ "$DEBUG" != "" ] ; then
- $CONNECT "$@"
- exit 0
-fi
-
-$CONNECT "$@" > /dev/null 2>&1 &
-CONNECT_PID=$!
-
-if [ "$CONNECT_TIMEOUT" = "" -o "$CONNECT_TIMEOUT" = 0 ] ; then
- exit 0
-fi
-
-# Don't monitor connection if dial-on-demand
-if [ "$DEMAND" != "" -a "$DEMAND" != "no" ] ; then
- exit 0
-fi
-
-# Monitor connection
-TIME=0
-while [ true ] ; do
- @sbindir@/adsl-status $CONFIG > /dev/null 2>&1
-
- # Looks like the interface came up
- if [ $? = 0 ] ; then
- # Print newline if standard input is a TTY
- tty -s && $ECHO " Connected!"
- exit 0
- fi
-
- if test -n "$FORCEPING" ; then
- $ECHO -n "$FORCEPING"
- else
- tty -s && $ECHO -n "$PING"
- fi
- sleep $CONNECT_POLL
- TIME=`expr $TIME + $CONNECT_POLL`
- if [ $TIME -gt $CONNECT_TIMEOUT ] ; then
- break
- fi
-done
-
-$ECHO "TIMED OUT" >& 2
-# Timed out! Kill the adsl-connect process and quit
-kill $CONNECT_PID > /dev/null 2>&1
-exit 1
-
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-status b/mdk-stage1/rp-pppoe/scripts/adsl-status
deleted file mode 100755
index 18b100ab2..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-status
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-#***********************************************************************
-#
-# adsl-status
-#
-# Shell script to report on status of ADSL connection
-#
-# Copyright (C) 2000-2001 Roaring Penguin Software Inc.
-#
-# $Id$
-#
-# This file may be distributed under the terms of the GNU General
-# Public License.
-#
-# Usage: adsl-status [config_file]
-# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-#
-#***********************************************************************
-
-# Defaults
-CONFIG=/etc/ppp/pppoe.conf
-
-case "$#" in
- 1)
- CONFIG="$1"
- ;;
-esac
-
-if [ ! -f "$CONFIG" -o ! -r "$CONFIG" ] ; then
- echo "$0: Cannot read configuration file '$CONFIG'" >& 2
- exit 1
-fi
-
-. $CONFIG
-
-PPPOE_PIDFILE="$PIDFILE.pppoe"
-PPPD_PIDFILE="$PIDFILE.pppd"
-
-if [ "$DEMAND" != "no" ] ; then
- echo "Note: You have enabled demand-connection; adsl-status may be inaccurate."
-fi
-
-# If no PPPOE_PIDFILE, connection is down, unless we're using the Linux plugin
-if [ "$LINUX_PLUGIN" = "" ] ; then
- if [ ! -r "$PPPOE_PIDFILE" ] ; then
- echo "adsl-status: Link is down (can't read pppoe PID file $PPPOE_PIDFILE)"
- exit 1
- fi
-fi
-
-# If no PPPD_PIDFILE, something fishy!
-if [ ! -r "$PPPD_PIDFILE" ] ; then
- echo "adsl-status: Link is down (can't read pppd PID file $PPPD_PIDFILE)"
- exit 1
-fi
-
-PPPD_PID=`cat "$PPPD_PIDFILE"`
-
-# Sigh. Some versions of pppd put PID files in /var/run; others put them
-# in /etc/ppp. Since it's too messy to figure out what pppd does, we
-# try both locations.
-for i in /etc/ppp/ppp*.pid /var/run/ppp*.pid ; do
- if [ -r $i ] ; then
- PID=`cat $i`
- if [ "$PID" = "$PPPD_PID" ] ; then
- IF=`basename $i .pid`
- netstat -rn | grep " ${IF}\$" > /dev/null
- # /sbin/ifconfig $IF | grep "UP.*POINTOPOINT" > /dev/null
- if [ "$?" != "0" ] ; then
- echo "adsl-status: Link is attached to $IF, but $IF is down"
- exit 1
- fi
- echo "adsl-status: Link is up and running on interface $IF"
- /sbin/ifconfig $IF
- exit 0
- fi
- fi
-done
-
-echo "adsl-status: Link is down -- could not find interface corresponding to"
-echo "pppd pid $PPPD_PID"
-exit 1 \ No newline at end of file
diff --git a/mdk-stage1/rp-pppoe/scripts/adsl-stop.in b/mdk-stage1/rp-pppoe/scripts/adsl-stop.in
deleted file mode 100755
index af0867573..000000000
--- a/mdk-stage1/rp-pppoe/scripts/adsl-stop.in
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-# @configure_input@
-#***********************************************************************
-#
-# adsl-stop
-#
-# Shell script to bring down an ADSL connection
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# $Id$
-#
-# This file may be distributed under the terms of the GNU General
-# Public License.
-#
-# Usage: adsl-stop [config_file]
-# If config_file is omitted, defaults to /etc/ppp/pppoe.conf
-#
-#***********************************************************************
-
-ME="`basename $0`"
-LOGGER="/usr/bin/logger -t $ME"
-CONFIG="$1"
-if [ "$CONFIG" = "" ] ; then
- CONFIG=/etc/ppp/pppoe.conf
-fi
-
-if [ ! -f "$CONFIG" -o ! -r "$CONFIG" ] ; then
- echo "$ME: Cannot read configuration file '$CONFIG'" >& 2
- exit 1
-fi
-
-. $CONFIG
-
-PPPOE_PIDFILE="$PIDFILE.pppoe"
-PPPD_PIDFILE="$PIDFILE.pppd"
-STARTPID="$PIDFILE.start"
-
-# Backward config file compatibility
-if test "$DEMAND" = "" ; then
- DEMAND=no
-fi
-
-# Ignore SIGTERM
-trap "" 15
-
-# Check for pidfile
-if [ -r "$PIDFILE" ] ; then
- PID=`cat $PIDFILE`
-
- # Check if still running
- kill -0 $PID > /dev/null 2>&1
- if [ $? != 0 ] ; then
- echo "$ME: The adsl-connect script (PID $PID) appears to have died" >& 2
- fi
-
- # Kill pppd, which should in turn kill pppoe
- if [ -r "$PPPD_PIDFILE" ] ; then
- PPPD_PID=`cat "$PPPD_PIDFILE"`
- $LOGGER -p daemon.notice "Killing pppd"
- echo "Killing pppd ($PPPD_PID)"
- kill $PPPD_PID > /dev/null 2>&1 || exit 1
- fi
-
- # Kill adsl-start
- PIDS=`cat $STARTPID`
- kill -0 $PIDS > /dev/null 2>&1
- if [ $? = 0 ] ; then
- $LOGGER -p daemon.notice "Killing adsl-connect"
- kill $PIDS > /dev/null 2>&1
- fi
-
- # Kill adsl-connect
- $LOGGER -p daemon.notice "Killing adsl-connect"
- echo "Killing adsl-connect ($PID)"
- kill $PID > /dev/null 2>&1
-
- rm -f "$PIDFILE" "$PPPD_PIDFILE" "$PPPOE_PIDFILE" "$STARTPID"
-else
- echo "$ME: No ADSL connection appears to be running" >&2
- exit 1
-fi
-
-exit 0
diff --git a/mdk-stage1/rp-pppoe/src/.cvsignore b/mdk-stage1/rp-pppoe/src/.cvsignore
deleted file mode 100644
index a59197332..000000000
--- a/mdk-stage1/rp-pppoe/src/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-pppoe
-pppoe-DIET
diff --git a/mdk-stage1/rp-pppoe/src/Makefile b/mdk-stage1/rp-pppoe/src/Makefile
deleted file mode 100644
index d36ad6c60..000000000
--- a/mdk-stage1/rp-pppoe/src/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ../..
-
-include $(top_dir)/Makefile.common
-
-
-TARGETS = pppoe
-
-BINTARGET = ../pppoe-bin
-
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o *.a $(BINTARGET) pppoe
-
-FLAGS = -Wall -Werror -Os -fomit-frame-pointer '-DPPPOE_PATH="/sbin/pppoe"' '-DPPPD_PATH="/sbin/pppd"' '-DVERSION="3.0-stg1"'
-
-ifeq (GLIBC, $(L))
-EXTRA_LDFLAGS = -static
-endif
-
-OBJS = pppoe.o if.o debug.o common.o ppp.o discovery.o
-
-pppoe: $(OBJS)
- $(DIET) gcc -o $@ $^ $(EXTRA_LDFLAGS)
- $(STRIPCMD) $@
- cp -f $@ $(BINTARGET)
-
-$(OBJS): %.o: %.c
- $(DIET) gcc $(FLAGS) $(INCLUDES) $(INCS) -c $< -o $@
diff --git a/mdk-stage1/rp-pppoe/src/Makefile.in b/mdk-stage1/rp-pppoe/src/Makefile.in
deleted file mode 100644
index 8eee012cb..000000000
--- a/mdk-stage1/rp-pppoe/src/Makefile.in
+++ /dev/null
@@ -1,257 +0,0 @@
-# @configure_input@
-#***********************************************************************
-#
-# Makefile
-#
-# Makefile for Roaring Penguin's Linux user-space PPPoE client.
-#
-# Copyright (C) 2000 Roaring Penguin Software Inc.
-#
-# This program may be distributed according to the terms of the GNU
-# General Public License, version 2 or (at your option) any later version.
-#
-# $Id$
-#***********************************************************************
-
-# Version is set ONLY IN THE MAKEFILE! Don't delete this!
-VERSION=3.0
-
-DEFINES=
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-mandir=@mandir@
-docdir=@prefix@/doc/rp-pppoe-$(VERSION)
-install=@INSTALL@
-install_dir=@INSTALL@ -d
-sbindir=@sbindir@
-
-# Plugin for pppd on Linux
-LINUX_KERNELMODE_PLUGIN=@LINUX_KERNELMODE_PLUGIN@
-PPPD_INCDIR=@PPPD_INCDIR@
-
-# PPPoE relay -- currently only supported on Linux
-PPPOE_RELAY=@PPPOE_RELAY@
-
-# Program paths
-PPPOE_PATH=$(sbindir)/pppoe
-PPPD_PATH=@PPPD@
-
-# Kernel-mode plugin gets installed here.
-PLUGIN_DIR=/etc/ppp/plugins
-PLUGIN_PATH=$(PLUGIN_DIR)/rp-pppoe.so
-
-# Configuration file paths
-PPPOESERVER_PPPD_OPTIONS=/etc/ppp/pppoe-server-options
-
-PATHS='-DPPPOE_PATH="$(PPPOE_PATH)"' '-DPPPD_PATH="$(PPPD_PATH)"' \
- '-DPLUGIN_PATH="$(PLUGIN_PATH)"' \
- '-DPPPOE_SERVER_OPTIONS="$(PPPOESERVER_PPPD_OPTIONS)"'
-
-CFLAGS= @CFLAGS@ $(DEFINES) $(PATHS)
-TARGETS=@TARGETS@
-
-all: $(TARGETS)
- @echo ""
- @echo "Type 'make install' as root to install the software."
-
-pppoe-sniff: pppoe-sniff.o if.o common.o debug.o
- @CC@ -o pppoe-sniff pppoe-sniff.o if.o common.o debug.o $(LIBS)
-
-pppoe-server: pppoe-server.o if.o debug.o common.o md5.o
- @CC@ -o pppoe-server pppoe-server.o if.o debug.o common.o md5.o $(LIBS)
-
-pppoe: pppoe.o if.o debug.o common.o ppp.o discovery.o
- @CC@ -o pppoe pppoe.o if.o debug.o common.o ppp.o discovery.o $(LIBS)
-
-pppoe-relay: relay.o if.o debug.o common.o
- @CC@ -o pppoe-relay relay.o if.o debug.o common.o $(LIBS)
-
-pppoe.o: pppoe.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe.o pppoe.c
-
-discovery.o: discovery.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o discovery.o discovery.c
-
-ppp.o: ppp.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o ppp.o ppp.c
-
-md5.o: md5.c md5.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o md5.o md5.c
-
-pppoe-server.o: pppoe-server.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe-server.o pppoe-server.c
-
-pppoe-sniff.o: pppoe-sniff.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe-sniff.o pppoe-sniff.c
-
-if.o: if.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o if.o if.c
-
-common.o: common.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o common.o common.c
-
-debug.o: debug.c pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o debug.o debug.c
-
-relay.o: relay.c relay.h pppoe.h
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o relay.o relay.c
-
-# Linux-specific plugin
-rp-pppoe.so: plugin/libplugin.a plugin/plugin.o
- @CC@ -o rp-pppoe.so -shared plugin/plugin.o plugin/libplugin.a
-
-plugin/plugin.o: plugin.c
- @CC@ '-DVERSION="$(VERSION)"' -I$(PPPD_INCDIR) -c -o plugin/plugin.o -fPIC plugin.c
-
-plugin/libplugin.a: plugin/discovery.o plugin/if.o plugin/common.o plugin/debug.o
- ar -rc $@ $^
-
-plugin/discovery.o: discovery.c
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/discovery.o -fPIC discovery.c
-
-plugin/if.o: if.c
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/if.o -fPIC if.c
-
-plugin/debug.o: debug.c
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/debug.o -fPIC debug.c
-
-plugin/common.o: common.c
- @CC@ $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o plugin/common.o -fPIC common.c
-
-install: all
- -mkdir -p $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 -s pppoe $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 -s pppoe-server $(RPM_INSTALL_ROOT)$(sbindir)
- if test -x pppoe-relay ; then $(install) -m 755 -s pppoe-relay $(RPM_INSTALL_ROOT)$(sbindir); fi
- $(install) -m 755 -s pppoe-sniff $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 ../scripts/adsl-connect $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 ../scripts/adsl-start $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 ../scripts/adsl-status $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 ../scripts/adsl-stop $(RPM_INSTALL_ROOT)$(sbindir)
- $(install) -m 755 ../scripts/adsl-setup $(RPM_INSTALL_ROOT)$(sbindir)
- -mkdir -p $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../doc/CHANGES $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../doc/KERNEL-MODE-PPPOE $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../doc/HOW-TO-CONNECT $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../doc/LICENSE $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../README $(RPM_INSTALL_ROOT)$(docdir)
- $(install) -m 644 ../configs/pap-secrets $(RPM_INSTALL_ROOT)$(docdir)
- -mkdir -p $(RPM_INSTALL_ROOT)$(mandir)/man8
- for i in $(TARGETS) ; do \
- if test -f ../man/$$i.8 ; then \
- $(install) -m 644 ../man/$$i.8 $(RPM_INSTALL_ROOT)$(mandir)/man8 || exit 1; \
- fi; \
- done
- $(install) -m 644 ../man/adsl-start.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
- $(install) -m 644 ../man/adsl-stop.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
- $(install) -m 644 ../man/adsl-status.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
- $(install) -m 644 ../man/adsl-connect.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
- $(install) -m 644 ../man/adsl-setup.8 $(RPM_INSTALL_ROOT)$(mandir)/man8
- -mkdir -p $(RPM_INSTALL_ROOT)$(mandir)/man5
- $(install) -m 644 ../man/pppoe.conf.5 $(RPM_INSTALL_ROOT)$(mandir)/man5
- -mkdir -p $(RPM_INSTALL_ROOT)/etc/ppp
- -mkdir -p $(RPM_INSTALL_ROOT)$(PLUGIN_DIR)
- -echo "# Directory created by rp-pppoe for kernel-mode plugin" > $(RPM_INSTALL_ROOT)$(PLUGIN_DIR)/README
- @if test -r rp-pppoe.so; then $(install) -m 755 rp-pppoe.so $(RPM_INSTALL_ROOT)$(PLUGIN_DIR); fi
- @for i in pppoe.conf firewall-standalone firewall-masq ; do \
- if [ ! -f $(RPM_INSTALL_ROOT)/etc/ppp/$$i ] ; then \
- $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)/etc/ppp ; \
- else \
- echo "NOT overwriting existing $(RPM_INSTALL_ROOT)/etc/ppp/$$i" ;\
- $(install) -m 644 ../configs/$$i $(RPM_INSTALL_ROOT)/etc/ppp/$$i-$(VERSION) ;\
- fi ;\
- done
- @if [ ! -f $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS) ] ; then \
- $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS) ; \
- else \
- echo "NOT overwriting existing $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS)"; \
- $(install) -m 644 ../configs/pppoe-server-options $(RPM_INSTALL_ROOT)$(PPPOESERVER_PPPD_OPTIONS)-example ; \
- fi
- @if [ -f /etc/redhat-release ] ; then \
- echo "Looks like a Red Hat system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
- $(install) -m 755 ../scripts/adsl-init $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
- fi
- @if [ -f /etc/turbolinux-release ] ; then \
- echo "Looks like a TurboLinux system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
- $(install) -m 755 adsl-init-turbolinux $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
- fi
- @if [ -f /etc/SuSE-release ] ; then \
- echo "Looks like a SuSE Linux system; installing $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl" ; \
- mkdir -p $(RPM_INSTALL_ROOT)/etc/rc.d/init.d ;\
- $(install) -m 755 ../scripts/adsl-init-suse $(RPM_INSTALL_ROOT)/etc/rc.d/init.d/adsl ; \
- fi
- @echo ""
- @echo "Type 'adsl-setup' to configure the software."
-
-distro:
- cd ..; \
- rm -rf rp-pppoe-$(VERSION) ; \
- mkdir rp-pppoe-$(VERSION) || exit 1; \
- for i in README go go-gui rp-pppoe.spec rp-pppoe-gui.spec; do \
- cp $$i rp-pppoe-$(VERSION) || exit 1; \
- done ; \
- mkdir rp-pppoe-$(VERSION)/gui || exit 1; \
- for i in Makefile.in tkpppoe.in wrapper.c tkpppoe.1 pppoe-wrapper.1 ; do \
- cp gui/$$i rp-pppoe-$(VERSION)/gui || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/gui/html || exit 1; \
- for i in mainwin-busy.png mainwin-nonroot.png mainwin.png props-advanced.png props-basic.png props-nic.png props-options.png tkpppoe.html ; do \
- cp gui/html/$$i rp-pppoe-$(VERSION)/gui/html || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/configs || exit 1; \
- for i in firewall-masq firewall-standalone pap-secrets pppoe-server-options pppoe.conf ; do \
- cp configs/$$i rp-pppoe-$(VERSION)/configs || exit 1; \
- done ; \
- mkdir rp-pppoe-$(VERSION)/doc || exit 1; \
- for i in CHANGES KERNEL-MODE-PPPOE HOW-TO-CONNECT LICENSE PROBLEMS ; do \
- cp doc/$$i rp-pppoe-$(VERSION)/doc || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/man || exit 1; \
- for i in adsl-connect.8 adsl-setup.8 adsl-start.8 adsl-status.8 adsl-stop.8 pppoe-server.8 pppoe-sniff.8 pppoe.8 pppoe-relay.8 pppoe.conf.5 ; do \
- cp man/$$i rp-pppoe-$(VERSION)/man || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/scripts || exit 1; \
- for i in adsl-connect.in adsl-init-suse.in adsl-init-turbolinux.in adsl-init.in adsl-setup.in adsl-start.in adsl-stop.in adsl-status ; do \
- cp scripts/$$i rp-pppoe-$(VERSION)/scripts || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/src || exit 1; \
- for i in Makefile.in install-sh common.c config.h.in configure configure.in debug.c discovery.c if.c md5.c md5.h ppp.c pppoe-server.c pppoe-sniff.c pppoe.c pppoe.h plugin.c relay.c relay.h ; do \
- cp src/$$i rp-pppoe-$(VERSION)/src || exit 1; \
- done; \
- mkdir rp-pppoe-$(VERSION)/src/plugin || exit 1; \
- tar cvf rp-pppoe-$(VERSION).tar rp-pppoe-$(VERSION)/* ; \
- gzip -f -v -9 rp-pppoe-$(VERSION).tar ; \
-
-rpms: distro
- cp ../rp-pppoe-$(VERSION).tar.gz /usr/src/redhat/SOURCES
- cd ..; \
- rpm -ba rp-pppoe.spec; \
- rpm -ba rp-pppoe-gui.spec
-
-clean:
- rm -f *.o pppoe pppoe-sniff pppoe-server core rp-pppoe.so plugin/*.o plugin/libplugin.a *~
-
-distclean: clean
- rm -f Makefile config.h config.cache config.log config.status
- rm -f ../scripts/adsl-connect ../scripts/adsl-start ../scripts/adsl-stop ../scripts/adsl-init ../scripts/adsl-setup ../scripts/adsl-init-suse ../scripts/adsl-init-turbolinux
-
-update-version:
- sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
- sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-$(VERSION).tar.gz+' ../rp-pppoe.spec > ../rp-pppoe.spec.new && mv ../rp-pppoe.spec.new ../rp-pppoe.spec
- sed -e 's/^Version: .*$$/Version: $(VERSION)/' ../rp-pppoe-gui.spec > ../rp-pppoe-gui.spec.new && mv ../rp-pppoe-gui.spec.new ../rp-pppoe-gui.spec
- sed -e 's+^Source: .*$$+Source: http://www.roaringpenguin.com/pppoe/rp-pppoe-$(VERSION).tar.gz+' ../rp-pppoe-gui.spec > ../rp-pppoe-gui.spec.new && mv ../rp-pppoe-gui.spec.new ../rp-pppoe-gui.spec
- sed -e 's+^Requires: rp-pppoe >=.*$$+Requires: rp-pppoe >= $(VERSION)+' ../rp-pppoe-gui.spec > ../rp-pppoe-gui.spec.new && mv ../rp-pppoe-gui.spec.new ../rp-pppoe-gui.spec
-
-# Convenience target for David! Don't try to use this one.
-km:
- ./configure --enable-plugin=/home/dfs/Archive/PPP/ppp-2.4.0.pppoe4-patched-dfs
-
-.PHONY: update-version
-
-.PHONY: clean
-
-.PHONY: distclean
-
-.PHONY: rpms
diff --git a/mdk-stage1/rp-pppoe/src/common.c b/mdk-stage1/rp-pppoe/src/common.c
deleted file mode 100644
index b6e43996b..000000000
--- a/mdk-stage1/rp-pppoe/src/common.c
+++ /dev/null
@@ -1,485 +0,0 @@
-/***********************************************************************
-*
-* common.c
-*
-* Implementation of user-space PPPoE redirector for Linux.
-*
-* Common functions used by PPPoE client and server
-*
-* Copyright (C) 2000 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-/**********************************************************************
-*%FUNCTION: parsePacket
-*%ARGUMENTS:
-* packet -- the PPPoE discovery packet to parse
-* func -- function called for each tag in the packet
-* extra -- an opaque data pointer supplied to parsing function
-*%RETURNS:
-* 0 if everything went well; -1 if there was an error
-*%DESCRIPTION:
-* Parses a PPPoE discovery packet, calling "func" for each tag in the packet.
-* "func" is passed the additional argument "extra".
-***********************************************************************/
-int
-parsePacket(PPPoEPacket *packet, ParseFunc *func, void *extra)
-{
- UINT16_t len = ntohs(packet->length);
- unsigned char *curTag;
- UINT16_t tagType, tagLen;
-
- if (packet->ver != 1) {
- syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
- return -1;
- }
- if (packet->type != 1) {
- syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
- return -1;
- }
-
- /* Do some sanity checks on packet */
- if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
- syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
- return -1;
- }
-
- /* Step through the tags */
- curTag = packet->payload;
- while(curTag - packet->payload < len) {
- /* Alignment is not guaranteed, so do this by hand... */
- tagType = (((UINT16_t) curTag[0]) << 8) +
- (UINT16_t) curTag[1];
- tagLen = (((UINT16_t) curTag[2]) << 8) +
- (UINT16_t) curTag[3];
- if (tagType == TAG_END_OF_LIST) {
- return 0;
- }
- if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
- syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
- return -1;
- }
- func(tagType, tagLen, curTag+TAG_HDR_SIZE, extra);
- curTag = curTag + TAG_HDR_SIZE + tagLen;
- }
- return 0;
-}
-
-/**********************************************************************
-*%FUNCTION: findTag
-*%ARGUMENTS:
-* packet -- the PPPoE discovery packet to parse
-* type -- the type of the tag to look for
-* tag -- will be filled in with tag contents
-*%RETURNS:
-* A pointer to the tag if one of the specified type is found; NULL
-* otherwise.
-*%DESCRIPTION:
-* Looks for a specific tag type.
-***********************************************************************/
-unsigned char *
-findTag(PPPoEPacket *packet, UINT16_t type, PPPoETag *tag)
-{
- UINT16_t len = ntohs(packet->length);
- unsigned char *curTag;
- UINT16_t tagType, tagLen;
-
- if (packet->ver != 1) {
- syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
- return NULL;
- }
- if (packet->type != 1) {
- syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
- return NULL;
- }
-
- /* Do some sanity checks on packet */
- if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
- syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
- return NULL;
- }
-
- /* Step through the tags */
- curTag = packet->payload;
- while(curTag - packet->payload < len) {
- /* Alignment is not guaranteed, so do this by hand... */
- tagType = (((UINT16_t) curTag[0]) << 8) +
- (UINT16_t) curTag[1];
- tagLen = (((UINT16_t) curTag[2]) << 8) +
- (UINT16_t) curTag[3];
- if (tagType == TAG_END_OF_LIST) {
- return NULL;
- }
- if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
- syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
- return NULL;
- }
- if (tagType == type) {
- memcpy(tag, curTag, tagLen + TAG_HDR_SIZE);
- return curTag;
- }
- curTag = curTag + TAG_HDR_SIZE + tagLen;
- }
- return NULL;
-}
-
-/**********************************************************************
-*%FUNCTION: printErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog.
-***********************************************************************/
-void
-printErr(char const *str)
-{
- fprintf(stderr, "pppoe: %s\n", str);
- syslog(LOG_ERR, "%s", str);
-}
-
-
-/**********************************************************************
-*%FUNCTION: strDup
-*%ARGUMENTS:
-* str -- string to copy
-*%RETURNS:
-* A malloc'd copy of str. Exits if malloc fails.
-***********************************************************************/
-char *
-strDup(char const *str)
-{
- char *copy = malloc(strlen(str)+1);
- if (!copy) {
- rp_fatal("strdup failed");
- }
- strcpy(copy, str);
- return copy;
-}
-
-/**********************************************************************
-*%FUNCTION: computeTCPChecksum
-*%ARGUMENTS:
-* ipHdr -- pointer to IP header
-* tcpHdr -- pointer to TCP header
-*%RETURNS:
-* The computed TCP checksum
-***********************************************************************/
-UINT16_t
-computeTCPChecksum(unsigned char *ipHdr, unsigned char *tcpHdr)
-{
- UINT32_t sum = 0;
- UINT16_t count = ipHdr[2] * 256 + ipHdr[3];
- unsigned char *addr = tcpHdr;
- unsigned char pseudoHeader[12];
-
- /* Count number of bytes in TCP header and data */
- count -= (ipHdr[0] & 0x0F) * 4;
-
- memcpy(pseudoHeader, ipHdr+12, 8);
- pseudoHeader[8] = 0;
- pseudoHeader[9] = ipHdr[9];
- pseudoHeader[10] = (count >> 8) & 0xFF;
- pseudoHeader[11] = (count & 0xFF);
-
- /* Checksum the pseudo-header */
- sum += * (UINT16_t *) pseudoHeader;
- sum += * ((UINT16_t *) (pseudoHeader+2));
- sum += * ((UINT16_t *) (pseudoHeader+4));
- sum += * ((UINT16_t *) (pseudoHeader+6));
- sum += * ((UINT16_t *) (pseudoHeader+8));
- sum += * ((UINT16_t *) (pseudoHeader+10));
-
- /* Checksum the TCP header and data */
- while (count > 1) {
- sum += * (UINT16_t *) addr;
- addr += 2;
- count -= 2;
- }
- if (count > 0) {
- sum += *addr;
- }
-
- while(sum >> 16) {
- sum = (sum & 0xffff) + (sum >> 16);
- }
- return (UINT16_t) (~sum & 0xFFFF);
-}
-
-/**********************************************************************
-*%FUNCTION: clampMSS
-*%ARGUMENTS:
-* packet -- PPPoE session packet
-* dir -- either "incoming" or "outgoing"
-* clampMss -- clamp value
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Clamps MSS option if TCP SYN flag is set.
-***********************************************************************/
-void
-clampMSS(PPPoEPacket *packet, char const *dir, int clampMss)
-{
- unsigned char *tcpHdr;
- unsigned char *ipHdr;
- unsigned char *opt;
- unsigned char *endHdr;
- unsigned char *mssopt = NULL;
- UINT16_t csum;
-
- int len;
-
- /* Is it IPv4? */
- if (packet->payload[0] != 0x00 ||
- packet->payload[1] != 0x21) {
- /* Nope, ignore it */
- return;
- }
-
- ipHdr = packet->payload + 2;
-
- /* Is it too short? */
- len = (int) ntohs(packet->length);
- if (len < 42) {
- /* 20 byte IP header; 20 byte TCP header; 2 byte PPP protocol */
- return;
- }
-
- /* Verify once more that it's IPv4 */
- if ((ipHdr[0] & 0xF0) != 0x40) {
- return;
- }
-
- /* Is it a fragment that's not at the beginning of the packet? */
- if ((ipHdr[6] & 0x1F) || ipHdr[7]) {
- /* Yup, don't touch! */
- return;
- }
- /* Is it TCP? */
- if (ipHdr[9] != 0x06) {
- return;
- }
-
- /* Get start of TCP header */
- tcpHdr = ipHdr + (ipHdr[0] & 0x0F) * 4;
-
- /* Is SYN set? */
- if (!(tcpHdr[13] & 0x02)) {
- return;
- }
-
- /* Compute and verify TCP checksum -- do not touch a packet with a bad
- checksum */
- csum = computeTCPChecksum(ipHdr, tcpHdr);
- if (csum) {
- syslog(LOG_ERR, "Bad TCP checksum %x", (unsigned int) csum);
-
- /* Upper layers will drop it */
- return;
- }
-
- /* Look for existing MSS option */
- endHdr = tcpHdr + ((tcpHdr[12] & 0xF0) >> 2);
- opt = tcpHdr + 20;
- while (opt < endHdr) {
- if (!*opt) break; /* End of options */
- switch(*opt) {
- case 1:
- opt++;
- break;
-
- case 2:
- if (opt[1] != 4) {
- /* Something fishy about MSS option length. */
- syslog(LOG_ERR,
- "Bogus length for MSS option (%u) from %u.%u.%u.%u",
- (unsigned int) opt[1],
- (unsigned int) ipHdr[12],
- (unsigned int) ipHdr[13],
- (unsigned int) ipHdr[14],
- (unsigned int) ipHdr[15]);
- return;
- }
- mssopt = opt;
- break;
- default:
- if (opt[1] < 2) {
- /* Someone's trying to attack us? */
- syslog(LOG_ERR,
- "Bogus TCP option length (%u) from %u.%u.%u.%u",
- (unsigned int) opt[1],
- (unsigned int) ipHdr[12],
- (unsigned int) ipHdr[13],
- (unsigned int) ipHdr[14],
- (unsigned int) ipHdr[15]);
- return;
- }
- opt += (opt[1]);
- break;
- }
- /* Found existing MSS option? */
- if (mssopt) break;
- }
-
- /* If MSS exists and it's low enough, do nothing */
- if (mssopt) {
- unsigned mss = mssopt[2] * 256 + mssopt[3];
- if (mss <= clampMss) {
- return;
- }
-
- mssopt[2] = (((unsigned) clampMss) >> 8) & 0xFF;
- mssopt[3] = ((unsigned) clampMss) & 0xFF;
- } else {
- /* No MSS option. Don't add one; we'll have to use 536. */
- return;
- }
-
- /* Recompute TCP checksum */
- tcpHdr[16] = 0;
- tcpHdr[17] = 0;
- csum = computeTCPChecksum(ipHdr, tcpHdr);
- (* (UINT16_t *) (tcpHdr+16)) = csum;
-}
-
-/***********************************************************************
-*%FUNCTION: sendPADT
-*%ARGUMENTS:
-* conn -- PPPoE connection
-* msg -- if non-NULL, extra error message to include in PADT packet.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADT packet
-***********************************************************************/
-void
-sendPADT(PPPoEConnection *conn, char const *msg)
-{
- PPPoEPacket packet;
- unsigned char *cursor = packet.payload;
-
- UINT16_t plen = 0;
-
- /* Do nothing if no session established yet */
- if (!conn->session) return;
-
- /* Do nothing if no discovery socket */
- if (conn->discoverySocket < 0) return;
-
- memcpy(packet.ethHdr.h_dest, conn->peerEth, ETH_ALEN);
- memcpy(packet.ethHdr.h_source, conn->myEth, ETH_ALEN);
-
- packet.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- packet.ver = 1;
- packet.type = 1;
- packet.code = CODE_PADT;
- packet.session = conn->session;
-
- /* Reset Session to zero so there is no possibility of
- recursive calls to this function by any signal handler */
- conn->session = 0;
-
- /* If we're using Host-Uniq, copy it over */
- if (conn->useHostUniq) {
- PPPoETag hostUniq;
- pid_t pid = getpid();
- hostUniq.type = htons(TAG_HOST_UNIQ);
- hostUniq.length = htons(sizeof(pid));
- memcpy(hostUniq.payload, &pid, sizeof(pid));
- memcpy(cursor, &hostUniq, sizeof(pid) + TAG_HDR_SIZE);
- cursor += sizeof(pid) + TAG_HDR_SIZE;
- plen += sizeof(pid) + TAG_HDR_SIZE;
- }
-
- /* Copy error message */
- if (msg) {
- PPPoETag err;
- size_t elen = strlen(msg);
- err.type = htons(TAG_GENERIC_ERROR);
- err.length = htons(elen);
- strcpy((char *)err.payload, msg);
- memcpy(cursor, &err, elen + TAG_HDR_SIZE);
- cursor += elen + TAG_HDR_SIZE;
- plen += elen + TAG_HDR_SIZE;
- }
-
- /* Copy cookie and relay-ID if needed */
- if (conn->cookie.type) {
- CHECK_ROOM(cursor, packet.payload,
- ntohs(conn->cookie.length) + TAG_HDR_SIZE);
- memcpy(cursor, &conn->cookie, ntohs(conn->cookie.length) + TAG_HDR_SIZE);
- cursor += ntohs(conn->cookie.length) + TAG_HDR_SIZE;
- plen += ntohs(conn->cookie.length) + TAG_HDR_SIZE;
- }
-
- if (conn->relayId.type) {
- CHECK_ROOM(cursor, packet.payload,
- ntohs(conn->relayId.length) + TAG_HDR_SIZE);
- memcpy(cursor, &conn->relayId, ntohs(conn->relayId.length) + TAG_HDR_SIZE);
- cursor += ntohs(conn->relayId.length) + TAG_HDR_SIZE;
- plen += ntohs(conn->relayId.length) + TAG_HDR_SIZE;
- }
-
- packet.length = htons(plen);
- sendPacket(conn, conn->discoverySocket, &packet, (int) (plen + HDR_SIZE));
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "SENT");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
- syslog(LOG_INFO,"Sent PADT");
-}
-
-/**********************************************************************
-*%FUNCTION: parseLogErrs
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks error tags out of a packet and logs them.
-***********************************************************************/
-void
-parseLogErrs(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- switch(type) {
- case TAG_SERVICE_NAME_ERROR:
- syslog(LOG_ERR, "PADT: Service-Name-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADT: Service-Name-Error: %.*s\n", (int) len, data);
- break;
- case TAG_AC_SYSTEM_ERROR:
- syslog(LOG_ERR, "PADT: System-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADT: System-Error: %.*s\n", (int) len, data);
- break;
- case TAG_GENERIC_ERROR:
- syslog(LOG_ERR, "PADT: Generic-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADT: Generic-Error: %.*s\n", (int) len, data);
- break;
- }
-}
-
diff --git a/mdk-stage1/rp-pppoe/src/config.h b/mdk-stage1/rp-pppoe/src/config.h
deleted file mode 100644
index e3adf4353..000000000
--- a/mdk-stage1/rp-pppoe/src/config.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* config.h. Generated automatically by configure. */
-/* config.h.in. Generated automatically from configure.in by autoheader. */
-
-/* Define to empty if the keyword does not work. */
-/* #undef const */
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef pid_t */
-
-/* Define as the return type of signal handlers (int or void). */
-#define RETSIGTYPE void
-
-/* Define if the setvbuf function takes the buffering type as its second
- argument and the buffer pointer as the third, as on System V
- before release 3. */
-/* #undef SETVBUF_REVERSED */
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define if your <sys/time.h> declares struct tm. */
-/* #undef TM_IN_SYS_TIME */
-
-#define HAVE_STRUCT_SOCKADDR_LL 1
-
-/* The number of bytes in a unsigned int. */
-#define SIZEOF_UNSIGNED_INT 4
-
-/* The number of bytes in a unsigned long. */
-#define SIZEOF_UNSIGNED_LONG 4
-
-/* The number of bytes in a unsigned short. */
-#define SIZEOF_UNSIGNED_SHORT 2
-
-/* Define if you have the select function. */
-#define HAVE_SELECT 1
-
-/* Define if you have the socket function. */
-#define HAVE_SOCKET 1
-
-/* Define if you have the strerror function. */
-#define HAVE_STRERROR 1
-
-/* Define if you have the strtol function. */
-#define HAVE_STRTOL 1
-
-/* Define if you have the <asm/types.h> header file. */
-#define HAVE_ASM_TYPES_H 1
-
-/* Define if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <getopt.h> header file. */
-#define HAVE_GETOPT_H 1
-
-/* Define if you have the <linux/if_ether.h> header file. */
-#define HAVE_LINUX_IF_ETHER_H 1
-
-/* Define if you have kernel-mode PPPoE in Linux file. */
-/* #undef HAVE_LINUX_KERNEL_PPPOE */
-
-/* Define if you have the <linux/if_packet.h> header file. */
-#define HAVE_LINUX_IF_PACKET_H 1
-
-/* Define if you have the <linux/if_pppox.h> header file. */
-#define HAVE_LINUX_IF_PPPOX_H 1
-
-/* Define if you have the <net/bpf.h> header file. */
-#define HAVE_NET_BPF_H 1
-
-/* Define if you have the <net/if_arp.h> header file. */
-//#define HAVE_NET_IF_ARP_H 1
-
-/* Define if you have the <net/ethernet.h> header file. */
-#define HAVE_NET_ETHERNET_H 1
-
-/* Define if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define if you have the <linux/if.h> header file. */
-#define HAVE_LINUX_IF_H 1
-
-/* Define if you have the <net/if_dl.h> header file. */
-/* #undef HAVE_NET_IF_DL_H */
-
-/* Define if you have the <net/if_ether.h> header file. */
-/* #undef HAVE_NET_IF_ETHER_H */
-
-/* Define if you have the <net/if_types.h> header file. */
-/* #undef HAVE_NET_IF_TYPES_H */
-
-/* Define if you have the <netinet/if_ether.h> header file. */
-//#define HAVE_NETINET_IF_ETHER_H 1
-
-/* Define if you have the <netpacket/packet.h> header file. */
-#define HAVE_NETPACKET_PACKET_H 1
-
-/* Define if you have the <sys/cdefs.h> header file. */
-#define HAVE_SYS_CDEFS_H 1
-
-/* Define if you have the <sys/dlpi.h> header file. */
-/* #undef HAVE_SYS_DLPI_H */
-
-/* Define if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define if you have the <syslog.h> header file. */
-#define HAVE_SYSLOG_H 1
-
-/* Define if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the N_HDLC line discipline in linux/termios.h */
-#define HAVE_N_HDLC 1
-
-/* Define if bitfields are packed in reverse order */
-#define PACK_BITFIELDS_REVERSED 1
diff --git a/mdk-stage1/rp-pppoe/src/config.h.in b/mdk-stage1/rp-pppoe/src/config.h.in
deleted file mode 100644
index e3340389d..000000000
--- a/mdk-stage1/rp-pppoe/src/config.h.in
+++ /dev/null
@@ -1,134 +0,0 @@
-/* config.h.in. Generated automatically from configure.in by autoheader. */
-
-/* Define to empty if the keyword does not work. */
-#undef const
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef pid_t
-
-/* Define as the return type of signal handlers (int or void). */
-#undef RETSIGTYPE
-
-/* Define if the setvbuf function takes the buffering type as its second
- argument and the buffer pointer as the third, as on System V
- before release 3. */
-#undef SETVBUF_REVERSED
-
-/* Define if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if your <sys/time.h> declares struct tm. */
-#undef TM_IN_SYS_TIME
-
-#undef HAVE_STRUCT_SOCKADDR_LL
-
-/* The number of bytes in a unsigned int. */
-#undef SIZEOF_UNSIGNED_INT
-
-/* The number of bytes in a unsigned long. */
-#undef SIZEOF_UNSIGNED_LONG
-
-/* The number of bytes in a unsigned short. */
-#undef SIZEOF_UNSIGNED_SHORT
-
-/* Define if you have the select function. */
-#undef HAVE_SELECT
-
-/* Define if you have the socket function. */
-#undef HAVE_SOCKET
-
-/* Define if you have the strerror function. */
-#undef HAVE_STRERROR
-
-/* Define if you have the strtol function. */
-#undef HAVE_STRTOL
-
-/* Define if you have the <asm/types.h> header file. */
-#undef HAVE_ASM_TYPES_H
-
-/* Define if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
-/* Define if you have the <linux/if_ether.h> header file. */
-#undef HAVE_LINUX_IF_ETHER_H
-
-/* Define if you have kernel-mode PPPoE in Linux file. */
-#undef HAVE_LINUX_KERNEL_PPPOE
-
-/* Define if you have the <linux/if_packet.h> header file. */
-#undef HAVE_LINUX_IF_PACKET_H
-
-/* Define if you have the <linux/if_pppox.h> header file. */
-#undef HAVE_LINUX_IF_PPPOX_H
-
-/* Define if you have the <net/bpf.h> header file. */
-#undef HAVE_NET_BPF_H
-
-/* Define if you have the <net/if_arp.h> header file. */
-#undef HAVE_NET_IF_ARP_H
-
-/* Define if you have the <net/ethernet.h> header file. */
-#undef HAVE_NET_ETHERNET_H
-
-/* Define if you have the <net/if.h> header file. */
-#undef HAVE_NET_IF_H
-
-/* Define if you have the <linux/if.h> header file. */
-#undef HAVE_LINUX_IF_H
-
-/* Define if you have the <net/if_dl.h> header file. */
-#undef HAVE_NET_IF_DL_H
-
-/* Define if you have the <net/if_ether.h> header file. */
-#undef HAVE_NET_IF_ETHER_H
-
-/* Define if you have the <net/if_types.h> header file. */
-#undef HAVE_NET_IF_TYPES_H
-
-/* Define if you have the <netinet/if_ether.h> header file. */
-#undef HAVE_NETINET_IF_ETHER_H
-
-/* Define if you have the <netpacket/packet.h> header file. */
-#undef HAVE_NETPACKET_PACKET_H
-
-/* Define if you have the <sys/cdefs.h> header file. */
-#undef HAVE_SYS_CDEFS_H
-
-/* Define if you have the <sys/dlpi.h> header file. */
-#undef HAVE_SYS_DLPI_H
-
-/* Define if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define if you have the <sys/uio.h> header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define if you have the <syslog.h> header file. */
-#undef HAVE_SYSLOG_H
-
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define if you have the N_HDLC line discipline in linux/termios.h */
-#undef HAVE_N_HDLC
-
-/* Define if bitfields are packed in reverse order */
-#undef PACK_BITFIELDS_REVERSED
diff --git a/mdk-stage1/rp-pppoe/src/configure b/mdk-stage1/rp-pppoe/src/configure
deleted file mode 100755
index eede451a1..000000000
--- a/mdk-stage1/rp-pppoe/src/configure
+++ /dev/null
@@ -1,2356 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_default_prefix=/usr
-ac_help="$ac_help
- --enable-plugin=pppd_src_path build pppd plugin"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=pppoe.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-
-
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:536: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:566: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:617: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:649: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 660 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:691: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:696: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:705: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-else
- GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:724: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_g=yes
-else
- ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:758: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 773 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:779: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 790 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 807 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:838: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 843 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- ac_cv_header_stdc=yes
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 868 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 886 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
- :
-else
- cat > conftest.$ac_ext <<EOF
-#line 907 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
- cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:942: checking for sys/wait.h that is POSIX.1 compatible" >&5
-if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 947 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-int main() {
-int s;
-wait (&s);
-s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-; return 0; }
-EOF
-if { (eval echo configure:963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_sys_wait_h=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_sys_wait_h=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6
-if test $ac_cv_header_sys_wait_h = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_WAIT_H 1
-EOF
-
-fi
-
-for ac_hdr in fcntl.h sys/ioctl.h sys/time.h syslog.h unistd.h net/if_arp.h netinet/if_ether.h getopt.h sys/uio.h sys/param.h fcntl.h net/bpf.h netpacket/packet.h net/ethernet.h asm/types.h linux/if_packet.h linux/if_ether.h linux/if_pppox.h sys/socket.h sys/cdefs.h linux/if.h net/if.h net/if_dl.h net/if_ether.h net/if_types.h netinet/if_ether.h net/if_types.h net/if_dl.h sys/dlpi.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:987: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 992 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:997: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1025: checking for working const" >&5
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1030 "configure"
-#include "confdefs.h"
-
-int main() {
-
-/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this. */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this. */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in an arm
- of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:1079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_c_const=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_c_const=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
- cat >> confdefs.h <<\EOF
-#define const
-EOF
-
-fi
-
-echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:1100: checking for pid_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1105 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
- rm -rf conftest*
- ac_cv_type_pid_t=yes
-else
- rm -rf conftest*
- ac_cv_type_pid_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_pid_t" 1>&6
-if test $ac_cv_type_pid_t = no; then
- cat >> confdefs.h <<\EOF
-#define pid_t int
-EOF
-
-fi
-
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1133: checking whether time.h and sys/time.h may both be included" >&5
-if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1138 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-int main() {
-struct tm *tp;
-; return 0; }
-EOF
-if { (eval echo configure:1147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_header_time=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_time=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_time" 1>&6
-if test $ac_cv_header_time = yes; then
- cat >> confdefs.h <<\EOF
-#define TIME_WITH_SYS_TIME 1
-EOF
-
-fi
-
-echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:1168: checking whether struct tm is in sys/time.h or time.h" >&5
-if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1173 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <time.h>
-int main() {
-struct tm *tp; tp->tm_sec;
-; return 0; }
-EOF
-if { (eval echo configure:1181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_tm=time.h
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_struct_tm=sys/time.h
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_struct_tm" 1>&6
-if test $ac_cv_struct_tm = sys/time.h; then
- cat >> confdefs.h <<\EOF
-#define TM_IN_SYS_TIME 1
-EOF
-
-fi
-
-
-# Extract the first word of "echo", so it can be a program name with args.
-set dummy echo; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1205: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_ECHO'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$ECHO" in
- /*)
- ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_ECHO="$ECHO" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="/usr/ucb/bin:$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_ECHO="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_ECHO" && ac_cv_path_ECHO=""""
- ;;
-esac
-fi
-ECHO="$ac_cv_path_ECHO"
-if test -n "$ECHO"; then
- echo "$ac_t""$ECHO" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-$ECHO -n "checking for struct sockaddr_ll... "
-cat > conftest.$ac_ext <<EOF
-#line 1241 "configure"
-#include "confdefs.h"
-#include <asm/types.h>
-#include <linux/if_packet.h>
-#include <linux/if_ether.h>
-
-int main() {
-struct sockaddr_ll sa;
-; return 0; }
-EOF
-if { (eval echo configure:1251: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_struct_sockaddr_ll=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_struct_sockaddr_ll=no
-fi
-rm -f conftest*
-$ECHO $ac_cv_struct_sockaddr_ll
-if test "$ac_cv_struct_sockaddr_ll" = yes ; then
-cat >> confdefs.h <<\EOF
-#define HAVE_STRUCT_SOCKADDR_LL 1
-EOF
-
-fi
-
-$ECHO -n "checking for N_HDLC line discipline... "
-cat > conftest.$ac_ext <<EOF
-#line 1271 "configure"
-#include "confdefs.h"
-#include <linux/termios.h>
-int main() {
-int x = N_HDLC;
-; return 0; }
-EOF
-if { (eval echo configure:1278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_n_hdlc=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_n_hdlc=no
-fi
-rm -f conftest*
-$ECHO $ac_cv_n_hdlc
-if test "$ac_cv_n_hdlc" = yes ; then
-cat >> confdefs.h <<\EOF
-#define HAVE_N_HDLC 1
-EOF
-
-fi
-
-# Check whether --enable-plugin or --disable-plugin was given.
-if test "${enable_plugin+set}" = set; then
- enableval="$enable_plugin"
- ac_cv_pluginpath=$enableval
-else
- ac_cv_pluginpath=no
-fi
-
-
-LINUX_KERNELMODE_PLUGIN=""
-PPPD_INCDIR=""
-if test "$ac_cv_header_linux_if_pppox_h" = yes ; then
- if test "$ac_cv_pluginpath" != no ; then
- LINUX_KERNELMODE_PLUGIN=rp-pppoe.so
- PPPD_INCDIR=$ac_cv_pluginpath
- fi
-fi
-
-
-
-
-PPPOE_RELAY=""
-if test "`uname -s`" = "Linux" ; then
- PPPOE_RELAY=pppoe-relay
-fi
-
-
-echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:1324: checking for 8-bit clean memcmp" >&5
-if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- ac_cv_func_memcmp_clean=no
-else
- cat > conftest.$ac_ext <<EOF
-#line 1332 "configure"
-#include "confdefs.h"
-
-main()
-{
- char c0 = 0x40, c1 = 0x80, c2 = 0x81;
- exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
-}
-
-EOF
-if { (eval echo configure:1342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_func_memcmp_clean=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_func_memcmp_clean=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
-test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
-
-echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:1360: checking whether setvbuf arguments are reversed" >&5
-if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1368 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-/* If setvbuf has the reversed format, exit 0. */
-main () {
- /* This call has the arguments reversed.
- A reversed system may check and see that the address of main
- is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */
- if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0)
- exit(1);
- putc('\r', stdout);
- exit(0); /* Non-reversed systems segv here. */
-}
-EOF
-if { (eval echo configure:1382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_func_setvbuf_reversed=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_func_setvbuf_reversed=no
-fi
-rm -fr conftest*
-fi
-
-rm -f core core.* *.core
-fi
-
-echo "$ac_t""$ac_cv_func_setvbuf_reversed" 1>&6
-if test $ac_cv_func_setvbuf_reversed = yes; then
- cat >> confdefs.h <<\EOF
-#define SETVBUF_REVERSED 1
-EOF
-
-fi
-
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:1406: checking return type of signal handlers" >&5
-if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1411 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
-int main() {
-int i;
-; return 0; }
-EOF
-if { (eval echo configure:1428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- ac_cv_type_signal=void
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_type_signal=int
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_type_signal" 1>&6
-cat >> confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
-EOF
-
-
-for ac_func in select socket strerror strtol
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1449: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1454 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1532: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-echo $ac_n "checking size of unsigned short""... $ac_c" 1>&6
-echo "configure:1586: checking size of unsigned short" >&5
-if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_short'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1594 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%d\n", sizeof(unsigned short));
- exit(0);
-}
-EOF
-if { (eval echo configure:1605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_sizeof_unsigned_short=`cat conftestval`
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_sizeof_unsigned_short=0
-fi
-rm -fr conftest*
-fi
-
-fi
-echo "$ac_t""$ac_cv_sizeof_unsigned_short" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short
-EOF
-
-
-echo $ac_n "checking size of unsigned int""... $ac_c" 1>&6
-echo "configure:1625: checking size of unsigned int" >&5
-if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1633 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%d\n", sizeof(unsigned int));
- exit(0);
-}
-EOF
-if { (eval echo configure:1644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_sizeof_unsigned_int=`cat conftestval`
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_sizeof_unsigned_int=0
-fi
-rm -fr conftest*
-fi
-
-fi
-echo "$ac_t""$ac_cv_sizeof_unsigned_int" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
-EOF
-
-
-echo $ac_n "checking size of unsigned long""... $ac_c" 1>&6
-echo "configure:1664: checking size of unsigned long" >&5
-if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1672 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%d\n", sizeof(unsigned long));
- exit(0);
-}
-EOF
-if { (eval echo configure:1683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_sizeof_unsigned_long=`cat conftestval`
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_sizeof_unsigned_long=0
-fi
-rm -fr conftest*
-fi
-
-fi
-echo "$ac_t""$ac_cv_sizeof_unsigned_long" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
-EOF
-
-
-
-# Extract the first word of "pppd", so it can be a program name with args.
-set dummy pppd; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1706: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PPPD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$PPPD" in
- /*)
- ac_cv_path_PPPD="$PPPD" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_PPPD="$PPPD" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_PPPD="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_PPPD" && ac_cv_path_PPPD="NOTFOUND"
- ;;
-esac
-fi
-PPPD="$ac_cv_path_PPPD"
-if test -n "$PPPD"; then
- echo "$ac_t""$PPPD" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-# Extract the first word of "setsid", so it can be a program name with args.
-set dummy setsid; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1743: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_SETSID'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$SETSID" in
- /*)
- ac_cv_path_SETSID="$SETSID" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_SETSID="$SETSID" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_SETSID="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_SETSID" && ac_cv_path_SETSID=""""
- ;;
-esac
-fi
-SETSID="$ac_cv_path_SETSID"
-if test -n "$SETSID"; then
- echo "$ac_t""$SETSID" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-# Extract the first word of "id", so it can be a program name with args.
-set dummy id; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1780: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_ID'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- case "$ID" in
- /*)
- ac_cv_path_ID="$ID" # Let the user override the test with a path.
- ;;
- ?:/*)
- ac_cv_path_ID="$ID" # Let the user override the test with a dos path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="/usr/xpg4/bin:$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_ID="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_path_ID" && ac_cv_path_ID=""""
- ;;
-esac
-fi
-ID="$ac_cv_path_ID"
-if test -n "$ID"; then
- echo "$ac_t""$ID" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-$ECHO -n "checking for Linux 2.4.X kernel-mode PPPoE support..."
-if test "`uname -s`" = "Linux" ; then
-if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1820 "configure"
-#include "confdefs.h"
-#include <sys/socket.h>
-#include <net/ethernet.h>
-#include <linux/if.h>
-#include <linux/if_pppox.h>
-int main()
-{
- if (socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OE) >= 0) return 0; else return 1;
-}
-
-EOF
-if { (eval echo configure:1832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- ac_cv_linux_kernel_pppoe=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_linux_kernel_pppoe=no
-fi
-rm -fr conftest*
-fi
-
-else
- ac_cv_linux_kernel_pppoe=no
-fi
-
-$ECHO $ac_cv_linux_kernel_pppoe
-if test "$ac_cv_linux_kernel_pppoe" = yes ; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LINUX_KERNEL_PPPOE 1
-EOF
-
-fi
-
-if test "$GCC" = yes; then
- CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -ansi -pedantic"
-fi
-
-if test "$PPPD" = "NOTFOUND"; then
- $ECHO ""
- $ECHO "*** Oops! I couldn't find pppd, the PPP daemon anywhere."
- $ECHO "*** You must install pppd, version 2.3.10 or later."
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
-fi
-
-
-PPPD_VERSION=`$PPPD --version 2>&1 | awk '{print $NF}'`
-
-case "$PPPD_VERSION" in
-1.*|2.0.*|2.1.*|2.2.*|2.3.0|2.3.1|2.3.2|2.3.3|2.3.4|2.3.5|2.3.6)
- $ECHO ""
- $ECHO "*** Oops! Your version of pppd is $PPPD_VERSION, which is too old."
- $ECHO "*** You need at least 2.3.7 (2.3.10 or newer recommended.)"
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
- ;;
-
-2.3.7|2.3.8|2.3.9)
- $ECHO ""
- $ECHO "*** Warning. Your version of pppd is $PPPD_VERSION. You will"
- $ECHO "*** not be able to use connect-on-demand. Upgrade to pppd"
- $ECHO "*** 2.3.10 or newer if you need connect-on-demand."
- $ECHO ""
- ;;
-
-2*|3*|4*|5*|6*|7*|8*|9*)
- ;;
-
-*)
- $ECHO ""
- $ECHO "*** Oops. I cannot figure out what version of pppd you have."
- $ECHO "*** All I got back was '$PPPD_VERSION'"
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
- ;;
-esac
-
-$ECHO -n "checking packing order of bit fields... "
-if test "$cross_compiling" = yes; then
- { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
-else
- cat > conftest.$ac_ext <<EOF
-#line 1905 "configure"
-#include "confdefs.h"
-
-union foo {
- struct bar {
- unsigned int ver:4;
- unsigned int type:4;
- } bb;
- unsigned char baz;
-};
-
-int
-main(void)
-{
- union foo x;
- x.bb.ver = 1;
- x.bb.type = 2;
- if (x.baz == 0x21) {
- return 1;
- } else if (x.baz == 0x12) {
- return 0;
- } else {
- return 2;
- }
-}
-EOF
-if { (eval echo configure:1931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- PACK=normal
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- PACK=rev
-fi
-rm -fr conftest*
-fi
-
-
-if test "$PACK" = "rev" ; then
- $ECHO "reversed"
- cat >> confdefs.h <<\EOF
-#define PACK_BITFIELDS_REVERSED 1
-EOF
-
-else
- $ECHO "normal"
-fi
-
-# Sigh... got to fix this up for tcl
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Fully resolve WRAPPER for Tcl script.
-WRAPPER=${sbindir}/pppoe-wrapper
-eval "WRAPPER=${WRAPPER}"
-eval "WRAPPER=${WRAPPER}"
-
-
-# Determine what targets to build
-TARGETS="pppoe pppoe-server"
-
-# pppoe-sniff is built only on Linux and Solaris
-if test "$ac_cv_header_linux_if_packet_h" = "yes" -o "$ac_cv_header_sys_dlpi_h" = "yes" ; then
- TARGETS="$TARGETS pppoe-sniff"
-fi
-
-# pppoe-relay is built only on Linux
-if test "$ac_cv_header_linux_if_packet_h" = "yes" ; then
- TARGETS="$TARGETS pppoe-relay"
-fi
-
-# plugin is built only if we have kernel support
-if test -n "$LINUX_KERNELMODE_PLUGIN" ; then
- TARGETS="$TARGETS $LINUX_KERNELMODE_PLUGIN"
-fi
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile ../scripts/adsl-connect ../scripts/adsl-start ../scripts/adsl-stop ../scripts/adsl-init ../scripts/adsl-init-suse ../scripts/adsl-init-turbolinux ../scripts/adsl-setup ../gui/Makefile ../gui/tkpppoe config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@ECHO@%$ECHO%g
-s%@LINUX_KERNELMODE_PLUGIN@%$LINUX_KERNELMODE_PLUGIN%g
-s%@PPPD_INCDIR@%$PPPD_INCDIR%g
-s%@PPPOE_RELAY@%$PPPOE_RELAY%g
-s%@LIBOBJS@%$LIBOBJS%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@PPPD@%$PPPD%g
-s%@SETSID@%$SETSID%g
-s%@ID@%$ID%g
-s%@WRAPPER@%$WRAPPER%g
-s%@TARGETS@%$TARGETS%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile ../scripts/adsl-connect ../scripts/adsl-start ../scripts/adsl-stop ../scripts/adsl-init ../scripts/adsl-init-suse ../scripts/adsl-init-turbolinux ../scripts/adsl-setup ../gui/Makefile ../gui/tkpppoe"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='\([ ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
- CONFIG_HEADERS="config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- echo creating $ac_file
-
- rm -f conftest.frag conftest.in conftest.out
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h. And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments. This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
- ac_lines=`grep -c . conftest.vals`
- # grep -c gives empty output for an empty file on some AIX systems.
- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
- # Write a limited-size here document to conftest.frag.
- echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
- echo 'CEOF
- sed -f conftest.frag conftest.in > conftest.out
- rm -f conftest.in
- mv conftest.out conftest.in
-' >> $CONFIG_STATUS
- sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
- rm -f conftest.vals
- mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
- rm -f conftest.frag conftest.h
- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
- cat conftest.in >> conftest.h
- rm -f conftest.in
- if cmp -s $ac_file conftest.h 2>/dev/null; then
- echo "$ac_file is unchanged"
- rm -f conftest.h
- else
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- fi
- rm -f $ac_file
- mv conftest.h $ac_file
- fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-
-$ECHO ""
-$ECHO "On this platform, the following targets will be built:"
-$ECHO " $TARGETS"
-$ECHO ""
-$ECHO "Type 'make' to compile the software."
diff --git a/mdk-stage1/rp-pppoe/src/configure.in b/mdk-stage1/rp-pppoe/src/configure.in
deleted file mode 100644
index c11690179..000000000
--- a/mdk-stage1/rp-pppoe/src/configure.in
+++ /dev/null
@@ -1,231 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(pppoe.c)
-
-AC_CONFIG_HEADER(config.h)
-
-AC_PREFIX_DEFAULT(/usr)
-
-dnl Checks for programs.
-AC_PROG_CC
-
-dnl Checks for libraries.
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h syslog.h unistd.h net/if_arp.h netinet/if_ether.h getopt.h sys/uio.h sys/param.h fcntl.h net/bpf.h netpacket/packet.h net/ethernet.h asm/types.h linux/if_packet.h linux/if_ether.h linux/if_pppox.h sys/socket.h sys/cdefs.h linux/if.h net/if.h net/if_dl.h net/if_ether.h net/if_types.h netinet/if_ether.h net/if_types.h net/if_dl.h sys/dlpi.h )
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_PID_T
-AC_HEADER_TIME
-AC_STRUCT_TM
-
-dnl Check for an echo which supports -n -- another hack for Solaris
-AC_PATH_PROG(ECHO, echo, "", /usr/ucb/bin:$PATH)
-
-dnl Check for sockaddr_ll
-$ECHO -n "checking for struct sockaddr_ll... "
-AC_TRY_COMPILE([#include <asm/types.h>
-#include <linux/if_packet.h>
-#include <linux/if_ether.h>
-], [struct sockaddr_ll sa;],
-ac_cv_struct_sockaddr_ll=yes, ac_cv_struct_sockaddr_ll=no)
-$ECHO $ac_cv_struct_sockaddr_ll
-if test "$ac_cv_struct_sockaddr_ll" = yes ; then
-AC_DEFINE(HAVE_STRUCT_SOCKADDR_LL)
-fi
-
-dnl Check for N_HDLC line discipline
-$ECHO -n "checking for N_HDLC line discipline... "
-AC_TRY_COMPILE([#include <linux/termios.h>],
- [int x = N_HDLC;],
- ac_cv_n_hdlc=yes, ac_cv_n_hdlc=no)
-$ECHO $ac_cv_n_hdlc
-if test "$ac_cv_n_hdlc" = yes ; then
-AC_DEFINE(HAVE_N_HDLC)
-fi
-
-AC_ARG_ENABLE(plugin, [ --enable-plugin=pppd_src_path build pppd plugin], ac_cv_pluginpath=$enableval, ac_cv_pluginpath=no)
-
-dnl Determine whether or not to build Linux pppd plugin
-LINUX_KERNELMODE_PLUGIN=""
-PPPD_INCDIR=""
-if test "$ac_cv_header_linux_if_pppox_h" = yes ; then
- if test "$ac_cv_pluginpath" != no ; then
- LINUX_KERNELMODE_PLUGIN=rp-pppoe.so
- PPPD_INCDIR=$ac_cv_pluginpath
- fi
-fi
-
-AC_SUBST(LINUX_KERNELMODE_PLUGIN)
-AC_SUBST(PPPD_INCDIR)
-
-dnl Determine whether or not to build PPPoE relay
-PPPOE_RELAY=""
-if test "`uname -s`" = "Linux" ; then
- PPPOE_RELAY=pppoe-relay
-fi
-AC_SUBST(PPPOE_RELAY)
-
-dnl Checks for library functions.
-AC_FUNC_MEMCMP
-AC_FUNC_SETVBUF_REVERSED
-AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(select socket strerror strtol)
-AC_PROG_INSTALL
-
-dnl Integer sizes
-AC_CHECK_SIZEOF(unsigned short)
-AC_CHECK_SIZEOF(unsigned int)
-AC_CHECK_SIZEOF(unsigned long)
-
-dnl Check for location of pppd
-AC_PATH_PROG(PPPD, pppd, NOTFOUND, $PATH:/sbin:/usr/sbin:/usr/local/sbin)
-
-dnl Check for setsid (probably Linux-specific)
-AC_PATH_PROG(SETSID, setsid, "", $PATH:/sbin:/usr/sbin:/usr/local/sbin)
-
-dnl Check for an "id" which accepts "-u" option -- hack for Solaris.
-AC_PATH_PROG(ID, id, "", /usr/xpg4/bin:$PATH)
-
-dnl Check for Linux-specific kernel support for PPPoE
-$ECHO -n "checking for Linux 2.4.X kernel-mode PPPoE support..."
-if test "`uname -s`" = "Linux" ; then
-AC_TRY_RUN([#include <sys/socket.h>
-#include <net/ethernet.h>
-#include <linux/if.h>
-#include <linux/if_pppox.h>
-int main()
-{
- if (socket(AF_PPPOX, SOCK_DGRAM, PX_PROTO_OE) >= 0) return 0; else return 1;
-}
-], ac_cv_linux_kernel_pppoe=yes, ac_cv_linux_kernel_pppoe=no)
-else
- ac_cv_linux_kernel_pppoe=no
-fi
-
-$ECHO $ac_cv_linux_kernel_pppoe
-if test "$ac_cv_linux_kernel_pppoe" = yes ; then
- AC_DEFINE(HAVE_LINUX_KERNEL_PPPOE)
-fi
-
-dnl GCC warning level
-if test "$GCC" = yes; then
- CFLAGS="$CFLAGS -Wall -Wstrict-prototypes"
-fi
-
-dnl If we couldn't find pppd, die
-if test "$PPPD" = "NOTFOUND"; then
- $ECHO ""
- $ECHO "*** Oops! I couldn't find pppd, the PPP daemon anywhere."
- $ECHO "*** You must install pppd, version 2.3.10 or later."
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
-fi
-
-dnl Figure out pppd version. 2.3.7 to 2.3.9 -- issue warning. Less than
-dnl 2.3.7 -- stop
-
-PPPD_VERSION=`$PPPD --version 2>&1 | awk '{print $NF}'`
-
-case "$PPPD_VERSION" in
-1.*|2.0.*|2.1.*|2.2.*|2.3.0|2.3.1|2.3.2|2.3.3|2.3.4|2.3.5|2.3.6)
- $ECHO ""
- $ECHO "*** Oops! Your version of pppd is $PPPD_VERSION, which is too old."
- $ECHO "*** You need at least 2.3.7 (2.3.10 or newer recommended.)"
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
- ;;
-
-2.3.7|2.3.8|2.3.9)
- $ECHO ""
- $ECHO "*** Warning. Your version of pppd is $PPPD_VERSION. You will"
- $ECHO "*** not be able to use connect-on-demand. Upgrade to pppd"
- $ECHO "*** 2.3.10 or newer if you need connect-on-demand."
- $ECHO ""
- ;;
-
-2*|3*|4*|5*|6*|7*|8*|9*)
- ;;
-
-*)
- $ECHO ""
- $ECHO "*** Oops. I cannot figure out what version of pppd you have."
- $ECHO "*** All I got back was '$PPPD_VERSION'"
- $ECHO "*** I will keep going, but it may not work."
- $ECHO ""
- ;;
-esac
-
-dnl Figure out packing order of structures
-$ECHO -n "checking packing order of bit fields... "
-AC_TRY_RUN([
-union foo {
- struct bar {
- unsigned int ver:4;
- unsigned int type:4;
- } bb;
- unsigned char baz;
-};
-
-int
-main(void)
-{
- union foo x;
- x.bb.ver = 1;
- x.bb.type = 2;
- if (x.baz == 0x21) {
- return 1;
- } else if (x.baz == 0x12) {
- return 0;
- } else {
- return 2;
- }
-}], PACK=normal, PACK=rev)
-
-if test "$PACK" = "rev" ; then
- $ECHO "reversed"
- AC_DEFINE(PACK_BITFIELDS_REVERSED)
-else
- $ECHO "normal"
-fi
-
-# Sigh... got to fix this up for tcl
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Fully resolve WRAPPER for Tcl script.
-WRAPPER=${sbindir}/pppoe-wrapper
-eval "WRAPPER=${WRAPPER}"
-eval "WRAPPER=${WRAPPER}"
-AC_SUBST(WRAPPER)
-
-# Determine what targets to build
-TARGETS="pppoe pppoe-server"
-
-# pppoe-sniff is built only on Linux and Solaris
-if test "$ac_cv_header_linux_if_packet_h" = "yes" -o "$ac_cv_header_sys_dlpi_h" = "yes" ; then
- TARGETS="$TARGETS pppoe-sniff"
-fi
-
-# pppoe-relay is built only on Linux
-if test "$ac_cv_header_linux_if_packet_h" = "yes" ; then
- TARGETS="$TARGETS pppoe-relay"
-fi
-
-# plugin is built only if we have kernel support
-if test -n "$LINUX_KERNELMODE_PLUGIN" ; then
- TARGETS="$TARGETS $LINUX_KERNELMODE_PLUGIN"
-fi
-
-AC_SUBST(TARGETS)
-
-AC_OUTPUT(Makefile ../scripts/adsl-connect ../scripts/adsl-start ../scripts/adsl-stop ../scripts/adsl-init ../scripts/adsl-init-suse ../scripts/adsl-init-turbolinux ../scripts/adsl-setup ../gui/Makefile ../gui/tkpppoe)
-
-$ECHO ""
-$ECHO "On this platform, the following targets will be built:"
-$ECHO " $TARGETS"
-$ECHO ""
-$ECHO "Type 'make' to compile the software."
diff --git a/mdk-stage1/rp-pppoe/src/debug.c b/mdk-stage1/rp-pppoe/src/debug.c
deleted file mode 100644
index 052dca6c7..000000000
--- a/mdk-stage1/rp-pppoe/src/debug.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/***********************************************************************
-*
-* debug.c
-*
-* Implementation of user-space PPPoE redirector for Linux.
-*
-* Functions for printing debugging information
-*
-* Copyright (C) 2000 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-#include <sys/time.h>
-#include <time.h>
-#include <unistd.h>
-#include <ctype.h>
-
-/**********************************************************************
-*%FUNCTION: dumpHex
-*%ARGUMENTS:
-* fp -- file to dump to
-* buf -- buffer to dump
-* len -- length of data
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Dumps buffer to fp in an easy-to-read format
-***********************************************************************/
-void
-dumpHex(FILE *fp, unsigned char const *buf, int len)
-{
- int i;
- int base;
-
- if (!fp) return;
-
- /* do NOT dump PAP packets */
- if (len >= 2 && buf[0] == 0xC0 && buf[1] == 0x23) {
- fprintf(fp, "(PAP Authentication Frame -- Contents not dumped)\n");
- return;
- }
-
- for (base=0; base<len; base += 16) {
- for (i=base; i<base+16; i++) {
- if (i < len) {
- fprintf(fp, "%02x ", (unsigned) buf[i]);
- } else {
- fprintf(fp, " ");
- }
- }
- fprintf(fp, " ");
- for (i=base; i<base+16; i++) {
- if (i < len) {
- if (isprint(buf[i])) {
- fprintf(fp, "%c", buf[i]);
- } else {
- fprintf(fp, ".");
- }
- } else {
- break;
- }
- }
- fprintf(fp, "\n");
- }
-}
-
-/**********************************************************************
-*%FUNCTION: dumpPacket
-*%ARGUMENTS:
-* fp -- file to dump to
-* packet -- a PPPoE packet
-* dir -- either SENT or RCVD
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Dumps the PPPoE packet to fp in an easy-to-read format
-***********************************************************************/
-void
-dumpPacket(FILE *fp, PPPoEPacket *packet, char const *dir)
-{
- int len = ntohs(packet->length);
-
- /* Sheesh... printing times is a pain... */
- struct timeval tv;
- time_t now;
- int millisec;
- struct tm *lt;
- char timebuf[256];
-
- UINT16_t type = etherType(packet);
- if (!fp) return;
- gettimeofday(&tv, NULL);
- now = (time_t) tv.tv_sec;
- millisec = tv.tv_usec / 1000;
- lt = localtime(&now);
- strftime(timebuf, 256, "%H:%M:%S", lt);
- fprintf(fp, "%s.%03d %s PPPoE ", timebuf, millisec, dir);
- if (type == Eth_PPPOE_Discovery) {
- fprintf(fp, "Discovery (%x) ", (unsigned) type);
- } else if (type == Eth_PPPOE_Session) {
- fprintf(fp, "Session (%x) ", (unsigned) type);
- } else {
- fprintf(fp, "Unknown (%x) ", (unsigned) type);
- }
-
- switch(packet->code) {
- case CODE_PADI: fprintf(fp, "PADI "); break;
- case CODE_PADO: fprintf(fp, "PADO "); break;
- case CODE_PADR: fprintf(fp, "PADR "); break;
- case CODE_PADS: fprintf(fp, "PADS "); break;
- case CODE_PADT: fprintf(fp, "PADT "); break;
- case CODE_SESS: fprintf(fp, "SESS "); break;
- }
-
- fprintf(fp, "sess-id %d length %d\n",
- (int) ntohs(packet->session),
- len);
-
- /* Ugly... I apologize... */
- fprintf(fp,
- "SourceAddr %02x:%02x:%02x:%02x:%02x:%02x "
- "DestAddr %02x:%02x:%02x:%02x:%02x:%02x\n",
- (unsigned) packet->ethHdr.h_source[0],
- (unsigned) packet->ethHdr.h_source[1],
- (unsigned) packet->ethHdr.h_source[2],
- (unsigned) packet->ethHdr.h_source[3],
- (unsigned) packet->ethHdr.h_source[4],
- (unsigned) packet->ethHdr.h_source[5],
- (unsigned) packet->ethHdr.h_dest[0],
- (unsigned) packet->ethHdr.h_dest[1],
- (unsigned) packet->ethHdr.h_dest[2],
- (unsigned) packet->ethHdr.h_dest[3],
- (unsigned) packet->ethHdr.h_dest[4],
- (unsigned) packet->ethHdr.h_dest[5]);
- dumpHex(fp, packet->payload, ntohs(packet->length));
-}
diff --git a/mdk-stage1/rp-pppoe/src/discovery.c b/mdk-stage1/rp-pppoe/src/discovery.c
deleted file mode 100644
index fc3568db5..000000000
--- a/mdk-stage1/rp-pppoe/src/discovery.c
+++ /dev/null
@@ -1,629 +0,0 @@
-/***********************************************************************
-*
-* discovery.c
-*
-* Perform PPPoE discovery
-*
-* Copyright (C) 1999 by Roaring Penguin Software Inc.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#ifdef HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef USE_LINUX_PACKET
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#endif
-
-#include <signal.h>
-
-/**********************************************************************
-*%FUNCTION: parseForHostUniq
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data.
-* extra -- user-supplied pointer. This is assumed to be a pointer to int.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* If a HostUnique tag is found which matches our PID, sets *extra to 1.
-***********************************************************************/
-void
-parseForHostUniq(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- int *val = (int *) extra;
- if (type == TAG_HOST_UNIQ && len == sizeof(pid_t)) {
- pid_t tmp;
- memcpy(&tmp, data, len);
- if (tmp == getpid()) {
- *val = 1;
- }
- }
-}
-
-/**********************************************************************
-*%FUNCTION: packetIsForMe
-*%ARGUMENTS:
-* conn -- PPPoE connection info
-* packet -- a received PPPoE packet
-*%RETURNS:
-* 1 if packet is for this PPPoE daemon; 0 otherwise.
-*%DESCRIPTION:
-* If we are using the Host-Unique tag, verifies that packet contains
-* our unique identifier.
-***********************************************************************/
-int
-packetIsForMe(PPPoEConnection *conn, PPPoEPacket *packet)
-{
- int forMe = 0;
-
- /* If we're not using the Host-Unique tag, then accept the packet */
- if (!conn->useHostUniq) return 1;
-
- parsePacket(packet, parseForHostUniq, &forMe);
- return forMe;
-}
-
-/**********************************************************************
-*%FUNCTION: parsePADOTags
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data. Should point to a PacketCriteria structure
-* which gets filled in according to selected AC name and service
-* name.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks interesting tags out of a PADO packet
-***********************************************************************/
-void
-parsePADOTags(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- struct PacketCriteria *pc = (struct PacketCriteria *) extra;
- PPPoEConnection *conn = pc->conn;
- int i;
-
- switch(type) {
- case TAG_AC_NAME:
- if (conn->printACNames) {
- printf("Access-Concentrator: %.*s\n", (int) len, data);
- }
- if (conn->acName && len == strlen(conn->acName) &&
- !strncmp((char *) data, conn->acName, len)) {
- pc->acNameOK = 1;
- }
- break;
- case TAG_SERVICE_NAME:
- if (conn->printACNames && len > 0) {
- printf(" Service-Name: %.*s\n", (int) len, data);
- }
- if (conn->serviceName && len == strlen(conn->serviceName) &&
- !strncmp((char *) data, conn->serviceName, len)) {
- pc->serviceNameOK = 1;
- }
- break;
- case TAG_AC_COOKIE:
- if (conn->printACNames) {
- printf("Got a cookie:");
- /* Print first 20 bytes of cookie */
- for (i=0; i<len && i < 20; i++) {
- printf(" %02x", (unsigned) data[i]);
- }
- if (i < len) printf("...");
- printf("\n");
- }
- conn->cookie.type = htons(type);
- conn->cookie.length = htons(len);
- memcpy(conn->cookie.payload, data, len);
- break;
- case TAG_RELAY_SESSION_ID:
- if (conn->printACNames) {
- printf("Got a Relay-ID:");
- /* Print first 20 bytes of relay ID */
- for (i=0; i<len && i < 20; i++) {
- printf(" %02x", (unsigned) data[i]);
- }
- if (i < len) printf("...");
- printf("\n");
- }
- conn->relayId.type = htons(type);
- conn->relayId.length = htons(len);
- memcpy(conn->relayId.payload, data, len);
- break;
- case TAG_SERVICE_NAME_ERROR:
- if (conn->printACNames) {
- printf("Got a Service-Name-Error tag: %.*s\n", (int) len, data);
- } else {
- syslog(LOG_ERR, "PADO: Service-Name-Error: %.*s", (int) len, data);
- exit(1);
- }
- break;
- case TAG_AC_SYSTEM_ERROR:
- if (conn->printACNames) {
- printf("Got a System-Error tag: %.*s\n", (int) len, data);
- } else {
- syslog(LOG_ERR, "PADO: System-Error: %.*s", (int) len, data);
- exit(1);
- }
- break;
- case TAG_GENERIC_ERROR:
- if (conn->printACNames) {
- printf("Got a Generic-Error tag: %.*s\n", (int) len, data);
- } else {
- syslog(LOG_ERR, "PADO: Generic-Error: %.*s", (int) len, data);
- exit(1);
- }
- break;
- }
-}
-
-/**********************************************************************
-*%FUNCTION: parsePADSTags
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data (pointer to PPPoEConnection structure)
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks interesting tags out of a PADS packet
-***********************************************************************/
-void
-parsePADSTags(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- PPPoEConnection *conn = (PPPoEConnection *) extra;
- switch(type) {
- case TAG_SERVICE_NAME:
- syslog(LOG_DEBUG, "PADS: Service-Name: '%.*s'", (int) len, data);
- break;
- case TAG_SERVICE_NAME_ERROR:
- syslog(LOG_ERR, "PADS: Service-Name-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADS: Service-Name-Error: %.*s\n", (int) len, data);
- exit(1);
- case TAG_AC_SYSTEM_ERROR:
- syslog(LOG_ERR, "PADS: System-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADS: System-Error: %.*s\n", (int) len, data);
- exit(1);
- case TAG_GENERIC_ERROR:
- syslog(LOG_ERR, "PADS: Generic-Error: %.*s", (int) len, data);
- fprintf(stderr, "PADS: Generic-Error: %.*s\n", (int) len, data);
- exit(1);
- case TAG_RELAY_SESSION_ID:
- conn->relayId.type = htons(type);
- conn->relayId.length = htons(len);
- memcpy(conn->relayId.payload, data, len);
- break;
- }
-}
-
-/***********************************************************************
-*%FUNCTION: sendPADI
-*%ARGUMENTS:
-* conn -- PPPoEConnection structure
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADI packet
-***********************************************************************/
-void
-sendPADI(PPPoEConnection *conn)
-{
- PPPoEPacket packet;
- unsigned char *cursor = packet.payload;
- PPPoETag *svc = (PPPoETag *) (&packet.payload);
- UINT16_t namelen = 0;
- UINT16_t plen;
-
- if (conn->serviceName) {
- namelen = (UINT16_t) strlen(conn->serviceName);
- }
- plen = TAG_HDR_SIZE + namelen;
- CHECK_ROOM(cursor, packet.payload, plen);
-
- /* Set destination to Ethernet broadcast address */
- memset(packet.ethHdr.h_dest, 0xFF, ETH_ALEN);
- memcpy(packet.ethHdr.h_source, conn->myEth, ETH_ALEN);
-
- packet.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- packet.ver = 1;
- packet.type = 1;
- packet.code = CODE_PADI;
- packet.session = 0;
-
- svc->type = TAG_SERVICE_NAME;
- svc->length = htons(namelen);
- CHECK_ROOM(cursor, packet.payload, namelen+TAG_HDR_SIZE);
-
- if (conn->serviceName) {
- memcpy(svc->payload, conn->serviceName, strlen(conn->serviceName));
- }
- cursor += namelen + TAG_HDR_SIZE;
-
- /* If we're using Host-Uniq, copy it over */
- if (conn->useHostUniq) {
- PPPoETag hostUniq;
- pid_t pid = getpid();
- hostUniq.type = htons(TAG_HOST_UNIQ);
- hostUniq.length = htons(sizeof(pid));
- memcpy(hostUniq.payload, &pid, sizeof(pid));
- CHECK_ROOM(cursor, packet.payload, sizeof(pid) + TAG_HDR_SIZE);
- memcpy(cursor, &hostUniq, sizeof(pid) + TAG_HDR_SIZE);
- cursor += sizeof(pid) + TAG_HDR_SIZE;
- plen += sizeof(pid) + TAG_HDR_SIZE;
- }
-
- packet.length = htons(plen);
-
- sendPacket(conn, conn->discoverySocket, &packet, (int) (plen + HDR_SIZE));
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "SENT");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: waitForPADO
-*%ARGUMENTS:
-* conn -- PPPoEConnection structure
-* timeout -- how long to wait (in seconds)
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Waits for a PADO packet and copies useful information
-***********************************************************************/
-void
-waitForPADO(PPPoEConnection *conn, int timeout)
-{
- fd_set readable;
- int r;
- struct timeval tv;
- PPPoEPacket packet;
- int len;
-
- struct PacketCriteria pc;
- pc.conn = conn;
- pc.acNameOK = (conn->acName) ? 0 : 1;
- pc.serviceNameOK = (conn->serviceName) ? 0 : 1;
-
- do {
- if (BPF_BUFFER_IS_EMPTY) {
- tv.tv_sec = timeout;
- tv.tv_usec = 0;
-
- FD_ZERO(&readable);
- FD_SET(conn->discoverySocket, &readable);
-
- while(1) {
- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
- fatalSys("select (waitForPADO)");
- }
- if (r == 0) return; /* Timed out */
- }
-
- /* Get the packet */
- receivePacket(conn->discoverySocket, &packet, &len);
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- continue;
- }
-
-#ifdef USE_BPF
- /* If it's not a Discovery packet, loop again */
- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
-#endif
-
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "RCVD");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
- /* If it's not for us, loop again */
- if (!packetIsForMe(conn, &packet)) continue;
-
- if (packet.code == CODE_PADO) {
- if (NOT_UNICAST(packet.ethHdr.h_source)) {
- printErr("Ignoring PADO packet from non-unicast MAC address");
- continue;
- }
- conn->numPADOs++;
- if (conn->printACNames) {
- printf("--------------------------------------------------\n");
- }
- parsePacket(&packet, parsePADOTags, &pc);
- if (pc.acNameOK && pc.serviceNameOK) {
- memcpy(conn->peerEth, packet.ethHdr.h_source, ETH_ALEN);
- if (conn->printACNames) {
- printf("AC-Ethernet-Address: %02x:%02x:%02x:%02x:%02x:%02x\n",
- (unsigned) conn->peerEth[0],
- (unsigned) conn->peerEth[1],
- (unsigned) conn->peerEth[2],
- (unsigned) conn->peerEth[3],
- (unsigned) conn->peerEth[4],
- (unsigned) conn->peerEth[5]);
- continue;
- }
- conn->discoveryState = STATE_RECEIVED_PADO;
- break;
- }
- }
- } while (conn->discoveryState != STATE_RECEIVED_PADO);
-}
-
-/***********************************************************************
-*%FUNCTION: sendPADR
-*%ARGUMENTS:
-* conn -- PPPoE connection structur
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADR packet
-***********************************************************************/
-void
-sendPADR(PPPoEConnection *conn)
-{
- PPPoEPacket packet;
- PPPoETag *svc = (PPPoETag *) packet.payload;
- unsigned char *cursor = packet.payload;
-
- UINT16_t namelen = 0;
- UINT16_t plen;
-
- if (conn->serviceName) {
- namelen = (UINT16_t) strlen(conn->serviceName);
- }
- plen = TAG_HDR_SIZE + namelen;
- CHECK_ROOM(cursor, packet.payload, plen);
-
- memcpy(packet.ethHdr.h_dest, conn->peerEth, ETH_ALEN);
- memcpy(packet.ethHdr.h_source, conn->myEth, ETH_ALEN);
-
- packet.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- packet.ver = 1;
- packet.type = 1;
- packet.code = CODE_PADR;
- packet.session = 0;
-
- svc->type = TAG_SERVICE_NAME;
- svc->length = htons(namelen);
- if (conn->serviceName) {
- memcpy(svc->payload, conn->serviceName, namelen);
- }
- cursor += namelen + TAG_HDR_SIZE;
-
- /* If we're using Host-Uniq, copy it over */
- if (conn->useHostUniq) {
- PPPoETag hostUniq;
- pid_t pid = getpid();
- hostUniq.type = htons(TAG_HOST_UNIQ);
- hostUniq.length = htons(sizeof(pid));
- memcpy(hostUniq.payload, &pid, sizeof(pid));
- CHECK_ROOM(cursor, packet.payload, sizeof(pid)+TAG_HDR_SIZE);
- memcpy(cursor, &hostUniq, sizeof(pid) + TAG_HDR_SIZE);
- cursor += sizeof(pid) + TAG_HDR_SIZE;
- plen += sizeof(pid) + TAG_HDR_SIZE;
- }
-
- /* Copy cookie and relay-ID if needed */
- if (conn->cookie.type) {
- CHECK_ROOM(cursor, packet.payload,
- ntohs(conn->cookie.length) + TAG_HDR_SIZE);
- memcpy(cursor, &conn->cookie, ntohs(conn->cookie.length) + TAG_HDR_SIZE);
- cursor += ntohs(conn->cookie.length) + TAG_HDR_SIZE;
- plen += ntohs(conn->cookie.length) + TAG_HDR_SIZE;
- }
-
- if (conn->relayId.type) {
- CHECK_ROOM(cursor, packet.payload,
- ntohs(conn->relayId.length) + TAG_HDR_SIZE);
- memcpy(cursor, &conn->relayId, ntohs(conn->relayId.length) + TAG_HDR_SIZE);
- cursor += ntohs(conn->relayId.length) + TAG_HDR_SIZE;
- plen += ntohs(conn->relayId.length) + TAG_HDR_SIZE;
- }
-
- packet.length = htons(plen);
- sendPacket(conn, conn->discoverySocket, &packet, (int) (plen + HDR_SIZE));
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "SENT");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: waitForPADS
-*%ARGUMENTS:
-* conn -- PPPoE connection info
-* timeout -- how long to wait (in seconds)
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Waits for a PADS packet and copies useful information
-***********************************************************************/
-void
-waitForPADS(PPPoEConnection *conn, int timeout)
-{
- fd_set readable;
- int r;
- struct timeval tv;
- PPPoEPacket packet;
- int len;
-
- do {
- if (BPF_BUFFER_IS_EMPTY) {
- tv.tv_sec = timeout;
- tv.tv_usec = 0;
-
- FD_ZERO(&readable);
- FD_SET(conn->discoverySocket, &readable);
-
- while(1) {
- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
- fatalSys("select (waitForPADS)");
- }
- if (r == 0) return;
- }
-
- /* Get the packet */
- receivePacket(conn->discoverySocket, &packet, &len);
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- continue;
- }
-
-#ifdef USE_BPF
- /* If it's not a Discovery packet, loop again */
- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
-#endif
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "RCVD");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-
- /* If it's not from the AC, it's not for me */
- if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) continue;
-
- /* If it's not for us, loop again */
- if (!packetIsForMe(conn, &packet)) continue;
-
- /* Is it PADS? */
- if (packet.code == CODE_PADS) {
- /* Parse for goodies */
- parsePacket(&packet, parsePADSTags, conn);
- conn->discoveryState = STATE_SESSION;
- break;
- }
- } while (conn->discoveryState != STATE_SESSION);
-
- /* Don't bother with ntohs; we'll just end up converting it back... */
- conn->session = packet.session;
-
- syslog(LOG_INFO, "PPP session is %d", (int) ntohs(conn->session));
-
- /* RFC 2516 says session id MUST NOT be zero or 0xFFFF */
- if (ntohs(conn->session) == 0 || ntohs(conn->session) == 0xFFFF) {
- syslog(LOG_ERR, "Access concentrator used a session value of %x -- the AC is violating RFC 2516", (unsigned int) ntohs(conn->session));
- }
-}
-
-/**********************************************************************
-*%FUNCTION: discovery
-*%ARGUMENTS:
-* conn -- PPPoE connection info structure
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Performs the PPPoE discovery phase
-***********************************************************************/
-void
-discovery(PPPoEConnection *conn)
-{
- int padiAttempts = 0;
- int padrAttempts = 0;
- int timeout = PADI_TIMEOUT;
-
- /* Skip discovery and don't open discovery socket? */
- if (conn->skipDiscovery && conn->noDiscoverySocket) {
- conn->discoveryState = STATE_SESSION;
- return;
- }
-
- conn->discoverySocket =
- openInterface(conn->ifName, Eth_PPPOE_Discovery, conn->myEth);
-
- /* Skip discovery? */
- if (conn->skipDiscovery) {
- conn->discoveryState = STATE_SESSION;
- if (conn->killSession) {
- sendPADT(conn, "RP-PPPoE: Session killed manually");
- exit(0);
- }
- return;
- }
-
- do {
- padiAttempts++;
- if (padiAttempts > MAX_PADI_ATTEMPTS) {
- rp_fatal("Timeout waiting for PADO packets");
- }
- sendPADI(conn);
- conn->discoveryState = STATE_SENT_PADI;
- waitForPADO(conn, timeout);
-
- /* If we're just probing for access concentrators, don't do
- exponential backoff. This reduces the time for an unsuccessful
- probe to 15 seconds. */
- if (!conn->printACNames) {
- timeout *= 2;
- }
- if (conn->printACNames && conn->numPADOs) {
- break;
- }
- } while (conn->discoveryState == STATE_SENT_PADI);
-
- /* If we're only printing access concentrator names, we're done */
- if (conn->printACNames) {
- printf("--------------------------------------------------\n");
- exit(0);
- }
-
- timeout = PADI_TIMEOUT;
- do {
- padrAttempts++;
- if (padrAttempts > MAX_PADI_ATTEMPTS) {
- rp_fatal("Timeout waiting for PADS packets");
- }
- sendPADR(conn);
- conn->discoveryState = STATE_SENT_PADR;
- waitForPADS(conn, timeout);
- timeout *= 2;
- } while (conn->discoveryState == STATE_SENT_PADR);
-
- /* We're done. */
- conn->discoveryState = STATE_SESSION;
- return;
-}
-
diff --git a/mdk-stage1/rp-pppoe/src/if.c b/mdk-stage1/rp-pppoe/src/if.c
deleted file mode 100644
index fec09b273..000000000
--- a/mdk-stage1/rp-pppoe/src/if.c
+++ /dev/null
@@ -1,1092 +0,0 @@
-/***********************************************************************
-*
-* if.c
-*
-* Implementation of user-space PPPoE redirector for Linux.
-*
-* Functions for opening a raw socket and reading/writing raw Ethernet frames.
-*
-* Copyright (C) 2000 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_NETPACKET_PACKET_H
-#include <netpacket/packet.h>
-#elif defined(HAVE_LINUX_IF_PACKET_H)
-#include <linux/if_packet.h>
-#endif
-
-#ifdef HAVE_NET_ETHERNET_H
-#include <net/ethernet.h>
-#endif
-
-#ifdef HAVE_ASM_TYPES_H
-#include <asm/types.h>
-#endif
-
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_NET_IF_ARP_H
-#include <net/if_arp.h>
-#endif
-
-#ifdef USE_DLPI
-
-#include <limits.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/stream.h>
-#include <sys/stropts.h>
-#include <sys/dlpi.h>
-#include <sys/bufmod.h>
-#include <stdio.h>
-#include <signal.h>
-#include <stropts.h>
-
-/* function declarations */
-
-void dlpromisconreq( int fd, u_long level);
-void dlinforeq(int fd);
-void dlunitdatareq(int fd, u_char *addrp, int addrlen, u_long minpri, u_long maxpri, u_char *datap, int datalen);
-void dlinfoack(int fd, char *bufp);
-void dlbindreq(int fd, u_long sap, u_long max_conind, u_long service_mode, u_long conn_mgmt, u_long xidtest);
-void dlattachreq(int fd, u_long ppa);
-void dlokack(int fd, char *bufp);
-void dlbindack(int fd, char *bufp);
-int strioctl(int fd, int cmd, int timout, int len, char *dp);
-void strgetmsg(int fd, struct strbuf *ctlp, struct strbuf *datap, int *flagsp, char *caller);
-void sigalrm(int sig);
-void expecting(int prim, union DL_primitives *dlp);
-char *dlprim(u_long prim);
-
-/* #define DL_DEBUG */
-
-static int dl_abssaplen;
-static int dl_saplen;
-static int dl_addrlen;
-
-#endif
-
-#ifdef USE_BPF
-#include <net/bpf.h>
-#include <fcntl.h>
-
-unsigned char *bpfBuffer; /* Packet filter buffer */
-int bpfLength = 0; /* Packet filter buffer length */
-int bpfSize = 0; /* Number of unread bytes in buffer */
-int bpfOffset = 0; /* Current offset in bpfBuffer */
-#endif
-
-/* Initialize frame types to RFC 2516 values. Some broken peers apparently
- use different frame types... sigh... */
-
-UINT16_t Eth_PPPOE_Discovery = ETH_PPPOE_DISCOVERY;
-UINT16_t Eth_PPPOE_Session = ETH_PPPOE_SESSION;
-
-/**********************************************************************
-*%FUNCTION: etherType
-*%ARGUMENTS:
-* packet -- a received PPPoE packet
-*%RETURNS:
-* ethernet packet type (see /usr/include/net/ethertypes.h)
-*%DESCRIPTION:
-* Checks the ethernet packet header to determine its type.
-* We should only be receveing DISCOVERY and SESSION types if the BPF
-* is set up correctly. Logs an error if an unexpected type is received.
-* Note that the ethernet type names come from "pppoe.h" and the packet
-* packet structure names use the LINUX dialect to maintain consistency
-* with the rest of this file. See the BSD section of "pppoe.h" for
-* translations of the data structure names.
-***********************************************************************/
-UINT16_t
-etherType(PPPoEPacket *packet)
-{
- UINT16_t type = (UINT16_t) ntohs(packet->ethHdr.h_proto);
- if (type != Eth_PPPOE_Discovery && type != Eth_PPPOE_Session) {
- syslog(LOG_ERR, "Invalid ether type 0x%x", type);
- }
- return type;
-}
-
-#ifdef USE_BPF
-/**********************************************************************
-*%FUNCTION: getHWaddr
-*%ARGUMENTS:
-* ifname -- name of interface
-* hwaddr -- buffer for ehthernet address
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Locates the Ethernet hardware address for an interface.
-***********************************************************************/
-void
-getHWaddr(int sock, char const *ifname, unsigned char *hwaddr)
-{
- char inbuf[8192];
- const struct sockaddr_dl *sdl;
- struct ifconf ifc;
- struct ifreq ifreq, *ifr;
- int i;
- int found = 0;
-
- ifc.ifc_len = sizeof(inbuf);
- ifc.ifc_buf = inbuf;
- if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
- fatalSys("SIOCGIFCONF");
- }
- ifr = ifc.ifc_req;
- ifreq.ifr_name[0] = '\0';
- for (i = 0; i < ifc.ifc_len; ) {
- ifr = (struct ifreq *)((caddr_t)ifc.ifc_req + i);
- i += sizeof(ifr->ifr_name) +
- (ifr->ifr_addr.sa_len > sizeof(struct sockaddr)
- ? ifr->ifr_addr.sa_len
- : sizeof(struct sockaddr));
- if (ifr->ifr_addr.sa_family == AF_LINK) {
- sdl = (const struct sockaddr_dl *) &ifr->ifr_addr;
- if ((sdl->sdl_type == IFT_ETHER) &&
- (sdl->sdl_alen == ETH_ALEN) &&
- !strncmp(ifname, ifr->ifr_name, sizeof(ifr->ifr_name))) {
- if (found) {
- char buffer[256];
- sprintf(buffer, "interface %.16s has more than one ethernet address", ifname);
- rp_fatal(buffer);
- } else {
- found = 1;
- memcpy(hwaddr, LLADDR(sdl), ETH_ALEN);
- }
- }
- }
- }
- if (!found) {
- char buffer[256];
- sprintf(buffer, "interface %.16s has no ethernet address", ifname);
- rp_fatal(buffer);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: initFilter
-*%ARGUMENTS:
-* fd -- file descriptor of BSD device
-* type -- Ethernet frame type (0 for watch mode)
-* hwaddr -- buffer with ehthernet address
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Initializes the packet filter rules.
-***********************************************************************/
-void
-initFilter(int fd, UINT16_t type, unsigned char *hwaddr)
-{
- /* Packet Filter Instructions:
- * Note that the ethernet type names come from "pppoe.h" and are
- * used here to maintain consistency with the rest of this file. */
- static struct bpf_insn bpfRun[] = { /* run PPPoE */
- BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12), /* ethernet type */
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETH_PPPOE_SESSION, 5, 0),
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETH_PPPOE_DISCOVERY, 0, 9),
- BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 0), /* first word of dest. addr */
-#define PPPOE_BCAST_CMPW 4 /* offset of word compare */
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0, 0, 2),
- BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 4), /* next 1/2 word of dest. */
-#define PPPOE_BCAST_CMPH 6 /* offset of 1/2 word compare */
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0, 4, 0),
- BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 0), /* first word of dest. addr */
-#define PPPOE_FILTER_CMPW 8 /* offset of word compare */
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0, 0, 3),
- BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 4), /* next 1/2 word of dest. */
-#define PPPOE_FILTER_CMPH 10 /* offset of 1/rd compare */
- BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0, 0, 1),
- BPF_STMT(BPF_RET+BPF_K, (u_int) -1), /* keep packet */
- BPF_STMT(BPF_RET+BPF_K, 0), /* drop packet */
- };
-
- /* Fix the potentially varying parts */
- bpfRun[1].code = (u_short) BPF_JMP+BPF_JEQ+BPF_K;
- bpfRun[1].jt = 5;
- bpfRun[1].jf = 0;
- bpfRun[1].k = Eth_PPPOE_Session;
-
- bpfRun[2].code = (u_short) BPF_JMP+BPF_JEQ+BPF_K;
- bpfRun[2].jt = 0;
- bpfRun[2].jf = 9;
- bpfRun[2].k = Eth_PPPOE_Discovery;
-
- {
- struct bpf_insn bpfInsn[sizeof(bpfRun) / sizeof(bpfRun[0])];
- struct bpf_program bpfProgram;
- memcpy(bpfInsn, bpfRun, sizeof(bpfRun));
- bpfInsn[PPPOE_BCAST_CMPW].k = ((0xff << 24) | (0xff << 16) |
- (0xff << 8) | 0xff);
- bpfInsn[PPPOE_BCAST_CMPH].k = ((0xff << 8) | 0xff);
- bpfInsn[PPPOE_FILTER_CMPW].k = ((hwaddr[0] << 24) | (hwaddr[1] << 16) |
- (hwaddr[2] << 8) | hwaddr[3]);
- bpfInsn[PPPOE_FILTER_CMPH].k = ((hwaddr[4] << 8) | hwaddr[5]);
- bpfProgram.bf_len = (sizeof(bpfInsn) / sizeof(bpfInsn[0]));
- bpfProgram.bf_insns = &bpfInsn[0];
-
- /* Apply the filter */
- if (ioctl(fd, BIOCSETF, &bpfProgram) < 0) {
- fatalSys("ioctl(BIOCSETF)");
- }
- }
-}
-
-/**********************************************************************
-*%FUNCTION: openInterface
-*%ARGUMENTS:
-* ifname -- name of interface
-* type -- Ethernet frame type (0 for any frame type)
-* hwaddr -- if non-NULL, set to the hardware address
-*%RETURNS:
-* A file descriptor for talking with the Ethernet card. Exits on error.
-* Note that the Linux version of this routine returns a socket instead.
-*%DESCRIPTION:
-* Opens a BPF on an interface for all PPPoE traffic (discovery and
-* session). If 'type' is 0, uses promiscuous mode to watch any PPPoE
-* traffic on this network.
-***********************************************************************/
-int
-openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
-{
- static int fd = -1;
- char bpfName[32];
- u_int optval;
- struct bpf_version bpf_ver;
- struct ifreq ifr;
- int sock;
- int i;
-
- /* BSD only opens one socket for both Discovery and Session packets */
- if (fd >= 0) {
- return fd;
- }
-
- /* Find a free BPF device */
- for (i = 0; i < 256; i++) {
- sprintf(bpfName, "/dev/bpf%d", i);
- if (((fd = open(bpfName, O_RDWR, 0)) >= 0) ||
- (errno != EBUSY)) {
- break;
- }
- }
- if (fd < 0) {
- switch (errno) {
- case EACCES: /* permission denied */
- {
- char buffer[256];
- sprintf(buffer, "Cannot open %.32s -- pppoe must be run as root.", bpfName);
- rp_fatal(buffer);
- }
- break;
- case EBUSY:
- case ENOENT: /* no such file */
- if (i == 0) {
- rp_fatal("No /dev/bpf* devices (check your kernel configuration for BPF support)");
- } else {
- rp_fatal("All /dev/bpf* devices are in use");
- }
- break;
- }
- fatalSys(bpfName);
- }
-
- if ((sock = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0) {
- fatalSys("socket");
- }
-
- /* Check that the interface is up */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
- fatalSys("ioctl(SIOCGIFFLAGS)");
- }
- if ((ifr.ifr_flags & IFF_UP) == 0) {
- char buffer[256];
- sprintf(buffer, "Interface %.16s is not up\n", ifname);
- rp_fatal(buffer);
- }
-
- /* Fill in hardware address and initialize the packet filter rules */
- if (hwaddr == NULL) {
- rp_fatal("openInterface: no hwaddr arg.");
- }
- getHWaddr(sock, ifname, hwaddr);
- initFilter(fd, type, hwaddr);
-
- /* Sanity check on MTU -- apparently does not work on OpenBSD */
-#if !defined(__OpenBSD__)
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(sock, SIOCGIFMTU, &ifr) < 0) {
- fatalSys("ioctl(SIOCGIFMTU)");
- }
- if (ifr.ifr_mtu < ETH_DATA_LEN) {
- char buffer[256];
- sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d. You may have serious connection problems.",
- ifname, ifr.ifr_mtu, ETH_DATA_LEN);
- printErr(buffer);
- }
-#endif
-
- /* done with the socket */
- if (close(sock) < 0) {
- fatalSys("close");
- }
-
- /* Check the BPF version number */
- if (ioctl(fd, BIOCVERSION, &bpf_ver) < 0) {
- fatalSys("ioctl(BIOCVERSION)");
- }
- if ((bpf_ver.bv_major != BPF_MAJOR_VERSION) ||
- (bpf_ver.bv_minor < BPF_MINOR_VERSION)) {
- char buffer[256];
- sprintf(buffer, "Unsupported BPF version: %d.%d (kernel: %d.%d)",
- BPF_MAJOR_VERSION, BPF_MINOR_VERSION,
- bpf_ver.bv_major, bpf_ver.bv_minor);
- rp_fatal(buffer);
- }
-
- /* allocate a receive packet buffer */
- if (ioctl(fd, BIOCGBLEN, &bpfLength) < 0) {
- fatalSys("ioctl(BIOCGBLEN)");
- }
- if (!(bpfBuffer = (unsigned char *) malloc(bpfLength))) {
- rp_fatal("malloc");
- }
-
- /* reads should return as soon as there is a packet available */
- optval = 1;
- if (ioctl(fd, BIOCIMMEDIATE, &optval) < 0) {
- fatalSys("ioctl(BIOCIMMEDIATE)");
- }
-
- /* Bind the interface to the filter */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, BIOCSETIF, &ifr) < 0) {
- char buffer[256];
- sprintf(buffer, "ioctl(BIOCSETIF) can't select interface %.16s",
- ifname);
- rp_fatal(buffer);
- }
-
- syslog(LOG_INFO, "Interface=%.16s HWaddr=%02X:%02X:%02X:%02X:%02X:%02X Device=%.32s Buffer size=%d",
- ifname,
- hwaddr[0], hwaddr[1], hwaddr[2],
- hwaddr[3], hwaddr[4], hwaddr[5],
- bpfName, bpfLength);
- return fd;
-}
-
-#endif /* USE_BPF */
-
-#ifdef USE_LINUX_PACKET
-/**********************************************************************
-*%FUNCTION: openInterface
-*%ARGUMENTS:
-* ifname -- name of interface
-* type -- Ethernet frame type
-* hwaddr -- if non-NULL, set to the hardware address
-*%RETURNS:
-* A raw socket for talking to the Ethernet card. Exits on error.
-*%DESCRIPTION:
-* Opens a raw Ethernet socket
-***********************************************************************/
-int
-openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
-{
- int optval=1;
- int fd;
- struct ifreq ifr;
- int domain, stype;
-
-#ifdef HAVE_STRUCT_SOCKADDR_LL
- struct sockaddr_ll sa;
-#else
- struct sockaddr sa;
-#endif
-
- memset(&sa, 0, sizeof(sa));
-
-#ifdef HAVE_STRUCT_SOCKADDR_LL
- domain = PF_PACKET;
- stype = SOCK_RAW;
-#else
- domain = PF_INET;
- stype = SOCK_PACKET;
-#endif
-
- if ((fd = socket(domain, stype, htons(type))) < 0) {
- /* Give a more helpful message for the common error case */
- if (errno == EPERM) {
- rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
- }
- fatalSys("socket");
- }
-
- if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) {
- fatalSys("setsockopt");
- }
-
- /* Fill in hardware address */
- if (hwaddr) {
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
- fatalSys("ioctl(SIOCGIFHWADDR)");
- }
- memcpy(hwaddr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
-#ifdef ARPHRD_ETHER
- if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
- char buffer[256];
- sprintf(buffer, "Interface %.16s is not Ethernet", ifname);
- rp_fatal(buffer);
- }
-#endif
- if (NOT_UNICAST(hwaddr)) {
- char buffer[256];
- sprintf(buffer,
- "Interface %.16s has broadcast/multicast MAC address??",
- ifname);
- rp_fatal(buffer);
- }
- }
-
- /* Sanity check on MTU */
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
- fatalSys("ioctl(SIOCGIFMTU)");
- }
- if (ifr.ifr_mtu < ETH_DATA_LEN) {
- char buffer[256];
- sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d. You may have serious connection problems.",
- ifname, ifr.ifr_mtu, ETH_DATA_LEN);
- printErr(buffer);
- }
-
-#ifdef HAVE_STRUCT_SOCKADDR_LL
- /* Get interface index */
- sa.sll_family = AF_PACKET;
- sa.sll_protocol = htons(type);
-
- strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
- fatalSys("ioctl(SIOCFIGINDEX): Could not get interface index");
- }
- sa.sll_ifindex = ifr.ifr_ifindex;
-
-#else
- strcpy(sa.sa_data, ifname);
-#endif
-
- /* We're only interested in packets on specified interface */
- if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
- fatalSys("bind");
- }
-
- return fd;
-}
-
-#endif /* USE_LINUX */
-
-/***********************************************************************
-*%FUNCTION: sendPacket
-*%ARGUMENTS:
-* sock -- socket to send to
-* pkt -- the packet to transmit
-* size -- size of packet (in bytes)
-*%RETURNS:
-* 0 on success; -1 on failure
-*%DESCRIPTION:
-* Transmits a packet
-***********************************************************************/
-int
-sendPacket(PPPoEConnection *conn, int sock, PPPoEPacket *pkt, int size)
-{
-#if defined(USE_BPF)
- if (write(sock, pkt, size) < 0) {
- sysErr("write (sendPacket)");
- return -1;
- }
-#elif defined(HAVE_STRUCT_SOCKADDR_LL)
- if (send(sock, pkt, size, 0) < 0) {
- sysErr("send (sendPacket)");
- return -1;
- }
-#else
-#ifdef USE_DLPI
-
-#define ABS(x) ((x) < 0 ? -(x) : (x))
-
- u_char addr[MAXDLADDR];
- u_char phys[MAXDLADDR];
- u_char sap[MAXDLADDR];
- u_char xmitbuf[MAXDLBUF];
- int data_size;
-
- short tmp_sap;
-
- tmp_sap = htons(pkt->ethHdr.h_proto);
- data_size = size - sizeof(struct ethhdr);
-
- memcpy((char *)phys, (char *)pkt->ethHdr.h_dest, ETHERADDRL);
- memcpy((char *)sap, (char *)&tmp_sap, sizeof(ushort_t));
- memcpy((char *)xmitbuf, (char *)pkt + sizeof(struct ethhdr), data_size);
-
- if (dl_saplen > 0) { /* order is sap+phys */
- (void) memcpy((char*)addr, (char*)&sap, dl_abssaplen);
- (void) memcpy((char*)addr+dl_abssaplen, (char*)phys, ETHERADDRL);
- } else { /* order is phys+sap */
- (void) memcpy((char*)addr, (char*)phys, ETHERADDRL);
- (void) memcpy((char*)addr+ETHERADDRL, (char*)&sap, dl_abssaplen);
- }
-
-#ifdef DL_DEBUG
- printf("%02x:%02x:%02x:%02x:%02x:%02x %02x:%02x\n",
- addr[0],addr[1],addr[2],addr[3],addr[4],addr[5],
- addr[6],addr[7]);
-#endif
-
- dlunitdatareq(sock, addr, dl_addrlen, 0, 0, xmitbuf, data_size);
-
-
-
-#else
- struct sockaddr sa;
-
- if (!conn) {
- rp_fatal("relay and server not supported on Linux 2.0 kernels");
- }
- strcpy(sa.sa_data, conn->ifName);
- if (sendto(sock, pkt, size, 0, &sa, sizeof(sa)) < 0) {
- sysErr("sendto (sendPacket)");
- return -1;
- }
-#endif
-#endif
- return 0;
-}
-
-#ifdef USE_BPF
-/***********************************************************************
-*%FUNCTION: clearPacketHeader
-*%ARGUMENTS:
-* pkt -- packet that needs its head clearing
-*%RETURNS:
-* nothing
-*%DESCRIPTION:
-* Clears a PPPoE packet header after a truncated packet has been
-* received. Insures that the packet will fail any integrity tests
-* and will be discarded by upper level routines. Also resets the
-* bpfSize and bpfOffset variables to force a new read on the next
-* call to receivePacket().
-***********************************************************************/
-void
-clearPacketHeader(PPPoEPacket *pkt)
-{
- bpfSize = bpfOffset = 0;
- memset(pkt, 0, HDR_SIZE);
-}
-#endif
-
-/***********************************************************************
-*%FUNCTION: receivePacket
-*%ARGUMENTS:
-* sock -- socket to read from
-* pkt -- place to store the received packet
-* size -- set to size of packet in bytes
-*%RETURNS:
-* >= 0 if all OK; < 0 if error
-*%DESCRIPTION:
-* Receives a packet
-***********************************************************************/
-int
-receivePacket(int sock, PPPoEPacket *pkt, int *size)
-{
-#ifdef USE_BPF
- struct bpf_hdr hdr;
- int seglen, copylen;
-
- if (bpfSize <= 0) {
- bpfOffset = 0;
- if ((bpfSize = read(sock, bpfBuffer, bpfLength)) < 0) {
- sysErr("read (receivePacket)");
- return -1;
- }
- }
- if (bpfSize < sizeof(hdr)) {
- syslog(LOG_ERR, "Truncated bpf packet header: len=%d", bpfSize);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
- memcpy(&hdr, bpfBuffer + bpfOffset, sizeof(hdr));
- if (hdr.bh_caplen != hdr.bh_datalen) {
- syslog(LOG_ERR, "Truncated bpf packet: caplen=%d, datalen=%d",
- hdr.bh_caplen, hdr.bh_datalen);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
- seglen = hdr.bh_hdrlen + hdr.bh_caplen;
- if (seglen > bpfSize) {
- syslog(LOG_ERR, "Truncated bpf packet: seglen=%d, bpfSize=%d",
- seglen, bpfSize);
- clearPacketHeader(pkt); /* resets bpfSize and bpfOffset */
- return 0;
- }
- seglen = BPF_WORDALIGN(seglen);
- *size = copylen = ((hdr.bh_caplen < sizeof(PPPoEPacket)) ?
- hdr.bh_caplen : sizeof(PPPoEPacket));
- memcpy(pkt, bpfBuffer + bpfOffset + hdr.bh_hdrlen, copylen);
- if (seglen >= bpfSize) {
- bpfSize = bpfOffset = 0;
- } else {
- bpfSize -= seglen;
- bpfOffset += seglen;
- }
-#else
-#ifdef USE_DLPI
- struct strbuf data;
- int flags = 0;
- int retval;
-
- data.buf = (char *) pkt;
- data.maxlen = MAXDLBUF;
- data.len = 0;
-
- if ((retval = getmsg(sock, NULL, &data, &flags)) < 0) {
- sysErr("read (receivePacket)");
- return -1;
- }
-
- *size = data.len;
-
-#else
- if ((*size = recv(sock, pkt, sizeof(PPPoEPacket), 0)) < 0) {
- sysErr("recv (receivePacket)");
- return -1;
- }
-#endif
-#endif
- return 0;
-}
-
-#ifdef USE_DLPI
-/**********************************************************************
-*%FUNCTION: openInterface
-*%ARGUMENTS:
-* ifname -- name of interface
-* type -- Ethernet frame type
-* hwaddr -- if non-NULL, set to the hardware address
-*%RETURNS:
-* A raw socket for talking to the Ethernet card. Exits on error.
-*%DESCRIPTION:
-* Opens a raw Ethernet socket
-***********************************************************************/
-int
-openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr)
-{
- int fd;
- long buf[MAXDLBUF];
-
- union DL_primitives *dlp;
-
- char base_dev[PATH_MAX];
- int ppa;
-
- if(strlen(ifname) > PATH_MAX) {
- rp_fatal("socket: string to long");
- }
-
- ppa = atoi(&ifname[strlen(ifname)-1]);
- strncpy(base_dev, ifname, PATH_MAX);
- base_dev[strlen(base_dev)-1] = '\0';
-
- if (( fd = open(base_dev, O_RDWR)) < 0) {
- /* Give a more helpful message for the common error case */
- if (errno == EPERM) {
- rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
- }
- fatalSys("socket");
- }
-
- dlinforeq(fd);
- dlinfoack(fd, (char *)buf);
-
- dlp = (union DL_primitives*) buf;
-
- dl_abssaplen = ABS(dlp->info_ack.dl_sap_length);
- dl_saplen = dlp->info_ack.dl_sap_length;
- if (ETHERADDRL != (dlp->info_ack.dl_addr_length - dl_abssaplen))
- fatalSys("invalid destination physical address length");
- dl_addrlen = dl_abssaplen + ETHERADDRL;
-
- dlattachreq(fd, ppa);
- dlokack(fd, (char *)buf);
-
- dlbindreq(fd, type, 0, DL_CLDLS, 0, 0);
- dlbindack(fd, (char *)buf);
-
- if ( strioctl(fd, DLIOCRAW, -1, 0, NULL) < 0 ) {
- fatalSys("DLIOCRAW");
- }
-
- if (ioctl(fd, I_FLUSH, FLUSHR) < 0) fatalSys("I_FLUSH");
-
- return fd;
-}
-
-/* cloned from dlcommon.c */
-
-void dlpromisconreq(int fd, u_long level)
-{
- dl_promiscon_req_t promiscon_req;
- struct strbuf ctl;
- int flags;
-
- promiscon_req.dl_primitive = DL_PROMISCON_REQ;
- promiscon_req.dl_level = level;
-
- ctl.maxlen = 0;
- ctl.len = sizeof (promiscon_req);
- ctl.buf = (char *) &promiscon_req;
-
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
- fatalSys("dlpromiscon: putmsg");
-
-}
-
-void dlinforeq(int fd)
-{
- dl_info_req_t info_req;
- struct strbuf ctl;
- int flags;
-
- info_req.dl_primitive = DL_INFO_REQ;
-
- ctl.maxlen = 0;
- ctl.len = sizeof (info_req);
- ctl.buf = (char *) &info_req;
-
- flags = RS_HIPRI;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
- fatalSys("dlinforeq: putmsg");
-}
-
-void dlunitdatareq(int fd, u_char *addrp, int addrlen, u_long minpri, u_long maxpri, u_char *datap, int datalen)
-{
- long buf[MAXDLBUF];
- union DL_primitives *dlp;
- struct strbuf data, ctl;
-
- dlp = (union DL_primitives*) buf;
-
- dlp->unitdata_req.dl_primitive = DL_UNITDATA_REQ;
- dlp->unitdata_req.dl_dest_addr_length = addrlen;
- dlp->unitdata_req.dl_dest_addr_offset = sizeof (dl_unitdata_req_t);
- dlp->unitdata_req.dl_priority.dl_min = minpri;
- dlp->unitdata_req.dl_priority.dl_max = maxpri;
-
- (void) memcpy(OFFADDR(dlp, sizeof (dl_unitdata_req_t)), addrp, addrlen);
-
- ctl.maxlen = 0;
- ctl.len = sizeof (dl_unitdata_req_t) + addrlen;
- ctl.buf = (char *) buf;
-
- data.maxlen = 0;
- data.len = datalen;
- data.buf = (char *) datap;
-
- if (putmsg(fd, &ctl, &data, 0) < 0)
- fatalSys("dlunitdatareq: putmsg");
-}
-
-void dlinfoack(int fd, char *bufp)
-{
- union DL_primitives *dlp;
- struct strbuf ctl;
- int flags;
-
- ctl.maxlen = MAXDLBUF;
- ctl.len = 0;
- ctl.buf = bufp;
-
- strgetmsg(fd, &ctl, (struct strbuf*)NULL, &flags, "dlinfoack");
-
- dlp = (union DL_primitives *) ctl.buf;
-
- expecting(DL_INFO_ACK, dlp);
-
- if (ctl.len < sizeof (dl_info_ack_t)) {
- char buffer[256];
- sprintf(buffer, "dlinfoack: response ctl.len too short: %d", ctl.len);
- rp_fatal(buffer);
- }
-
- if (flags != RS_HIPRI)
- rp_fatal("dlinfoack: DL_INFO_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_info_ack_t)) {
- char buffer[256];
- sprintf(buffer, "dlinfoack: short response ctl.len: %d", ctl.len);
- rp_fatal(buffer);
- }
-}
-
-void dlbindreq(int fd, u_long sap, u_long max_conind, u_long service_mode, u_long conn_mgmt, u_long xidtest)
-{
- dl_bind_req_t bind_req;
- struct strbuf ctl;
- int flags;
-
- bind_req.dl_primitive = DL_BIND_REQ;
- bind_req.dl_sap = sap;
- bind_req.dl_max_conind = max_conind;
- bind_req.dl_service_mode = service_mode;
- bind_req.dl_conn_mgmt = conn_mgmt;
- bind_req.dl_xidtest_flg = xidtest;
-
- ctl.maxlen = 0;
- ctl.len = sizeof (bind_req);
- ctl.buf = (char *) &bind_req;
-
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
- fatalSys("dlbindreq: putmsg");
-}
-
-void dlattachreq(int fd, u_long ppa)
-{
- dl_attach_req_t attach_req;
- struct strbuf ctl;
- int flags;
-
- attach_req.dl_primitive = DL_ATTACH_REQ;
- attach_req.dl_ppa = ppa;
-
- ctl.maxlen = 0;
- ctl.len = sizeof (attach_req);
- ctl.buf = (char *) &attach_req;
-
- flags = 0;
-
- if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
- fatalSys("dlattachreq: putmsg");
-}
-
-void dlokack(int fd, char *bufp)
-{
- union DL_primitives *dlp;
- struct strbuf ctl;
- int flags;
-
- ctl.maxlen = MAXDLBUF;
- ctl.len = 0;
- ctl.buf = bufp;
-
- strgetmsg(fd, &ctl, (struct strbuf*)NULL, &flags, "dlokack");
-
- dlp = (union DL_primitives *) ctl.buf;
-
- expecting(DL_OK_ACK, dlp);
-
- if (ctl.len < sizeof (dl_ok_ack_t)) {
- char buffer[256];
- sprintf(buffer, "dlokack: response ctl.len too short: %d", ctl.len);
- rp_fatal(buffer);
- }
-
- if (flags != RS_HIPRI)
- rp_fatal("dlokack: DL_OK_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_ok_ack_t)) {
- char buffer[256];
- sprintf(buffer, "dlokack: short response ctl.len: %d", ctl.len);
- rp_fatal(buffer);
- }
-}
-
-void dlbindack(int fd, char *bufp)
-{
- union DL_primitives *dlp;
- struct strbuf ctl;
- int flags;
-
- ctl.maxlen = MAXDLBUF;
- ctl.len = 0;
- ctl.buf = bufp;
-
- strgetmsg(fd, &ctl, (struct strbuf*)NULL, &flags, "dlbindack");
-
- dlp = (union DL_primitives *) ctl.buf;
-
- expecting(DL_BIND_ACK, dlp);
-
- if (flags != RS_HIPRI)
- rp_fatal("dlbindack: DL_OK_ACK was not M_PCPROTO");
-
- if (ctl.len < sizeof (dl_bind_ack_t)) {
- char buffer[256];
- sprintf(buffer, "dlbindack: short response ctl.len: %d", ctl.len);
- rp_fatal(buffer);
- }
-}
-
-int strioctl(int fd, int cmd, int timout, int len, char *dp)
-{
- struct strioctl sioc;
- int rc;
-
- sioc.ic_cmd = cmd;
- sioc.ic_timout = timout;
- sioc.ic_len = len;
- sioc.ic_dp = dp;
- rc = ioctl(fd, I_STR, &sioc);
-
- if (rc < 0)
- return (rc);
- else
- return (sioc.ic_len);
-}
-
-void strgetmsg(int fd, struct strbuf *ctlp, struct strbuf *datap, int *flagsp, char *caller)
-{
- int rc;
- static char errmsg[80];
-
- /*
- * Start timer.
- */
- (void) signal(SIGALRM, sigalrm);
- if (alarm(MAXWAIT) < 0) {
- (void) sprintf(errmsg, "%s: alarm", caller);
- fatalSys(errmsg);
- }
-
- /*
- * Set flags argument and issue getmsg().
- */
- *flagsp = 0;
- if ((rc = getmsg(fd, ctlp, datap, flagsp)) < 0) {
- (void) sprintf(errmsg, "%s: getmsg", caller);
- fatalSys(errmsg);
- }
-
- /*
- * Stop timer.
- */
- if (alarm(0) < 0) {
- (void) sprintf(errmsg, "%s: alarm", caller);
- fatalSys(errmsg);
- }
-
- /*
- * Check for MOREDATA and/or MORECTL.
- */
- if ((rc & (MORECTL | MOREDATA)) == (MORECTL | MOREDATA)) {
- char buffer[256];
- sprintf(buffer, "%s: MORECTL|MOREDATA", caller);
- rp_fatal(buffer);
- }
-
- if (rc & MORECTL) {
- char buffer[256];
- sprintf(buffer, "%s: MORECTL", caller);
- rp_fatal(buffer);
- }
-
- if (rc & MOREDATA) {
- char buffer[256];
- sprintf(buffer, "%s: MOREDATA", caller);
- rp_fatal(buffer);
- }
-
- /*
- * Check for at least sizeof (long) control data portion.
- */
- if (ctlp->len < sizeof (long)) {
- char buffer[256];
- sprintf(buffer, "getmsg: control portion length < sizeof (long): %d", ctlp->len);
- rp_fatal(buffer);
- }
-}
-
-void sigalrm(int sig)
-{
- (void) rp_fatal("sigalrm: TIMEOUT");
-}
-
-void expecting(int prim, union DL_primitives *dlp)
-{
- if (dlp->dl_primitive != (u_long)prim) {
- char buffer[256];
- sprintf(buffer, "expected %s got %s", dlprim(prim), dlprim(dlp->dl_primitive));
- rp_fatal(buffer);
- exit(1);
- }
-}
-
-char *dlprim(u_long prim)
-{
- static char primbuf[80];
-
- switch ((int)prim) {
- CASERET(DL_INFO_REQ);
- CASERET(DL_INFO_ACK);
- CASERET(DL_ATTACH_REQ);
- CASERET(DL_DETACH_REQ);
- CASERET(DL_BIND_REQ);
- CASERET(DL_BIND_ACK);
- CASERET(DL_UNBIND_REQ);
- CASERET(DL_OK_ACK);
- CASERET(DL_ERROR_ACK);
- CASERET(DL_SUBS_BIND_REQ);
- CASERET(DL_SUBS_BIND_ACK);
- CASERET(DL_UNITDATA_REQ);
- CASERET(DL_UNITDATA_IND);
- CASERET(DL_UDERROR_IND);
- CASERET(DL_UDQOS_REQ);
- CASERET(DL_CONNECT_REQ);
- CASERET(DL_CONNECT_IND);
- CASERET(DL_CONNECT_RES);
- CASERET(DL_CONNECT_CON);
- CASERET(DL_TOKEN_REQ);
- CASERET(DL_TOKEN_ACK);
- CASERET(DL_DISCONNECT_REQ);
- CASERET(DL_DISCONNECT_IND);
- CASERET(DL_RESET_REQ);
- CASERET(DL_RESET_IND);
- CASERET(DL_RESET_RES);
- CASERET(DL_RESET_CON);
- default:
- (void) sprintf(primbuf, "unknown primitive 0x%lx", prim);
- return (primbuf);
- }
-}
-
-#endif /* USE_DLPI */
diff --git a/mdk-stage1/rp-pppoe/src/install-sh b/mdk-stage1/rp-pppoe/src/install-sh
deleted file mode 100755
index 58719246f..000000000
--- a/mdk-stage1/rp-pppoe/src/install-sh
+++ /dev/null
@@ -1,238 +0,0 @@
-#! /bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/mdk-stage1/rp-pppoe/src/md5.c b/mdk-stage1/rp-pppoe/src/md5.c
deleted file mode 100644
index 5b7a0d7b2..000000000
--- a/mdk-stage1/rp-pppoe/src/md5.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-#include <string.h> /* for memcpy() */
-#include "md5.h"
-
-void byteReverse(unsigned char *buf, unsigned longs);
-
-/*
- * Note: this code is harmless on little-endian machines.
- */
-void byteReverse(unsigned char *buf, unsigned longs)
-{
- uint32 t;
- do {
- t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
- ((unsigned) buf[1] << 8 | buf[0]);
- *(uint32 *) buf = t;
- buf += 4;
- } while (--longs);
-}
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init(struct MD5Context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t) {
- unsigned char *p = (unsigned char *) ctx->in + t;
-
- t = 64 - t;
- if (len < t) {
- memcpy(p, buf, len);
- return;
- }
- memcpy(p, buf, t);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- buf += t;
- len -= t;
- }
- /* Process data in 64-byte chunks */
-
- while (len >= 64) {
- memcpy(ctx->in, buf, 64);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy(ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final(unsigned char digest[16], struct MD5Context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8) {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset(p, 0, count);
- byteReverse(ctx->in, 16);
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset(ctx->in, 0, 56);
- } else {
- /* Pad block to 56 bytes */
- memset(p, 0, count - 8);
- }
- byteReverse(ctx->in, 14);
-
- /* Append length in bits and transform */
- ((uint32 *) ctx->in)[14] = ctx->bits[0];
- ((uint32 *) ctx->in)[15] = ctx->bits[1];
-
- MD5Transform(ctx->buf, (uint32 *) ctx->in);
- byteReverse((unsigned char *) ctx->buf, 4);
- memcpy(digest, ctx->buf, 16);
- memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform(uint32 buf[4], uint32 const in[16])
-{
- register uint32 a, b, c, d;
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-#endif
diff --git a/mdk-stage1/rp-pppoe/src/md5.h b/mdk-stage1/rp-pppoe/src/md5.h
deleted file mode 100644
index e264f686d..000000000
--- a/mdk-stage1/rp-pppoe/src/md5.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __alpha
-typedef unsigned int uint32;
-#else
-typedef unsigned long uint32;
-#endif
-
-struct MD5Context {
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init(struct MD5Context *context);
-void MD5Update(struct MD5Context *context, unsigned char const *buf,
- unsigned len);
-void MD5Final(unsigned char digest[16], struct MD5Context *context);
-void MD5Transform(uint32 buf[4], uint32 const in[16]);
-
-/*
- * This is needed to make RSAREF happy on some MS-DOS compilers.
- */
-typedef struct MD5Context MD5_CTX;
-
-#endif /* !MD5_H */
diff --git a/mdk-stage1/rp-pppoe/src/plugin.c b/mdk-stage1/rp-pppoe/src/plugin.c
deleted file mode 100644
index d1097e291..000000000
--- a/mdk-stage1/rp-pppoe/src/plugin.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/***********************************************************************
-*
-* plugin.c
-*
-* pppd plugin for kernel-mode PPPoE on Linux
-*
-* Copyright (C) 2001 by Roaring Penguin Software Inc., Michal Ostrowski
-* and Jamal Hadi Salim.
-*
-* Much code and many ideas derived from pppoe plugin by Michal
-* Ostrowski and Jamal Hadi Salim, which carries this copyright:
-*
-* Copyright 2000 Michal Ostrowski <mostrows@styx.uwaterloo.ca>,
-* Jamal Hadi Salim <hadi@cyberus.ca>
-* Borrows heavily from the PPPoATM plugin by Mitchell Blank Jr.,
-* which is based in part on work from Jens Axboe and Paul Mackerras.
-*
-* 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.
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#define _GNU_SOURCE 1
-#include "pppoe.h"
-
-#include "pppd/pppd.h"
-#include "pppd/fsm.h"
-#include "pppd/lcp.h"
-#include "pppd/ipcp.h"
-#include "pppd/ccp.h"
-#include "pppd/pathnames.h"
-
-#include <linux/types.h>
-#include <syslog.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <net/ethernet.h>
-#include <net/if_arp.h>
-#include <linux/if_pppox.h>
-
-/* From sys-linux.c in pppd -- MUST FIX THIS! */
-extern int new_style_driver;
-
-static char *service = NULL;
-static char *acName = NULL;
-static char *existingSession = NULL;
-
-static option_t Options[] = {
- { "rp_pppoe_service", o_string, &service,
- "Desired PPPoE service name" },
- { "rp_pppoe_ac", o_string, &acName,
- "Desired PPPoE access concentrator name" },
- { "rp_pppoe_sess", o_string, &existingSession,
- "Attach to existing session (sessid:macaddr)" },
- { NULL }
-};
-int (*OldDevnameHook)(const char *name) = NULL;
-static PPPoEConnection *conn = NULL;
-
-/**********************************************************************
- * %FUNCTION: PPPOEInitDevice
- * %ARGUMENTS:
- * None
- * %RETURNS:
- *
- * %DESCRIPTION:
- * Initializes PPPoE device.
- ***********************************************************************/
-static int
-PPPOEInitDevice(void)
-{
- conn = malloc(sizeof(PPPoEConnection));
- if (!conn) {
- fatal("Could not allocate memory for PPPoE session");
- }
- memset(conn, 0, sizeof(PPPoEConnection));
- if (acName) {
- SET_STRING(conn->acName, acName);
- }
- if (service) {
- SET_STRING(conn->serviceName, acName);
- }
- SET_STRING(conn->ifName, devnam);
- conn->discoverySocket = -1;
- conn->sessionSocket = -1;
- conn->useHostUniq = 1;
- return 1;
-}
-
-/**********************************************************************
- * %FUNCTION: PPPOEConnectDevice
- * %ARGUMENTS:
- * None
- * %RETURNS:
- * Non-negative if all goes well; -1 otherwise
- * %DESCRIPTION:
- * Connects PPPoE device.
- ***********************************************************************/
-static int
-PPPOEConnectDevice(void)
-{
- struct sockaddr_pppox sp;
-
- strlcpy(ppp_devnam, devnam, sizeof(ppp_devnam));
- if (existingSession) {
- unsigned int mac[ETH_ALEN];
- int i, ses;
- if (sscanf(existingSession, "%d:%x:%x:%x:%x:%x:%x",
- &ses, &mac[0], &mac[1], &mac[2],
- &mac[3], &mac[4], &mac[5]) != 7) {
- fatal("Illegal value for rp_pppoe_sess option");
- }
- conn->session = htons(ses);
- for (i=0; i<ETH_ALEN; i++) {
- conn->peerEth[i] = (unsigned char) mac[i];
- }
- } else {
- discovery(conn);
- if (conn->discoveryState != STATE_SESSION) {
- fatal("Unable to complete PPPoE Discovery");
- }
- }
-
- /* Make the session socket */
- conn->sessionSocket = socket(AF_PPPOX, SOCK_STREAM, PX_PROTO_OE);
- if (conn->sessionSocket < 0) {
- fatal("Failed to create PPPoE socket: %m");
- }
- sp.sa_family = AF_PPPOX;
- sp.sa_protocol = PX_PROTO_OE;
- sp.sa_addr.pppoe.sid = conn->session;
- memcpy(sp.sa_addr.pppoe.dev, conn->ifName, IFNAMSIZ);
- memcpy(sp.sa_addr.pppoe.remote, conn->peerEth, ETH_ALEN);
- if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
- sizeof(struct sockaddr_pppox)) < 0) {
- fatal("Failed to connect PPPoE socket: %d %m", errno);
- return -1;
- }
- return conn->sessionSocket;
-}
-
-static void
-PPPOESendConfig(int unit,
- int mtu,
- u_int32_t asyncmap,
- int pcomp,
- int accomp)
-{
- int sock;
- struct ifreq ifr;
-
- if (mtu > MAX_PPPOE_MTU) {
- warn("Couldn't increase MTU to %d", mtu);
- }
- sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock < 0) {
- fatal("Couldn't create IP socket: %m");
- }
- strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
- ifr.ifr_mtu = mtu;
- if (ioctl(sock, SIOCSIFMTU, &ifr) < 0) {
- fatal("ioctl(SIOCSIFMTU): %m");
- }
- (void) close (sock);
-}
-
-
-static void
-PPPOERecvConfig(int unit,
- int mru,
- u_int32_t asyncmap,
- int pcomp,
- int accomp)
-{
- if (mru > MAX_PPPOE_MTU) {
- error("Couldn't increase MRU to %d", mru);
- }
-}
-
-static void
-PPPOESetXaccm(int unit,
- ext_accm accm)
-{
- /* Do nothing */
-}
-
-/**********************************************************************
- * %FUNCTION: PPPOEDisconnectDevice
- * %ARGUMENTS:
- * None
- * %RETURNS:
- * Nothing
- * %DESCRIPTION:
- * Disconnects PPPoE device
- ***********************************************************************/
-static void
-PPPOEDisconnectDevice(void)
-{
- struct sockaddr_pppox sp;
-
- sp.sa_family = AF_PPPOX;
- sp.sa_protocol = PX_PROTO_OE;
- sp.sa_addr.pppoe.sid = 0;
- memcpy(sp.sa_addr.pppoe.dev, conn->ifName, IFNAMSIZ);
- memcpy(sp.sa_addr.pppoe.remote, conn->peerEth, ETH_ALEN);
- if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
- sizeof(struct sockaddr_pppox)) < 0) {
- fatal("Failed to disconnect PPPoE socket: %d %m", errno);
- return;
- }
- close(conn->sessionSocket);
-}
-
-static int
-PPPOESetSpeed(const char *speed)
-{
- return 0;
-}
-
-static void
-PPPOEDeviceCheckHook(void)
-{
- if (!options_for_dev(_PATH_ETHOPT, devnam)) {
- exit(EXIT_OPTION_ERROR);
- }
-}
-
-/**********************************************************************
- * %FUNCTION: PPPoEDevnameHook
- * %ARGUMENTS:
- * name -- name of device
- * %RETURNS:
- * 1 if we will handle this device; 0 otherwise.
- * %DESCRIPTION:
- * Checks if name is a valid interface name; if so, returns 1. Also
- * sets up devnam (string representation of device) and sets devstat.st_mode
- * so S_ISCHR(devstat.st_mode) != 1 for internal pppd consumption.
- ***********************************************************************/
-static int
-PPPoEDevnameHook(const char *name)
-{
- int r = 1;
- int fd;
- struct ifreq ifr;
-
- /* Open a socket */
- if ((fd = socket(PF_PACKET, SOCK_RAW, 0)) < 0) {
- r = 0;
- }
-
- /* Try getting interface index */
- if (r) {
- strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
- if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
- r = 0;
- } else {
- if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
- r = 0;
- } else {
- if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
- error("Interface %s not Ethernet", name);
- r=0;
- }
- }
- }
- }
-
- /* Close socket */
- close(fd);
- if (r) {
- strncpy(devnam, name, sizeof(devnam));
- if (device_check_hook != PPPOEDeviceCheckHook) {
- devstat.st_mode = S_IFSOCK;
- device_init_hook = PPPOEInitDevice;
- setspeed_hook = PPPOESetSpeed;
- device_check_hook = PPPOEDeviceCheckHook;
- connect_device_hook = PPPOEConnectDevice;
- disconnect_device_hook = PPPOEDisconnectDevice;
- send_config_hook = PPPOESendConfig;
- recv_config_hook = PPPOERecvConfig;
- set_xaccm_hook = PPPOESetXaccm;
- modem = 0;
-
- lcp_allowoptions[0].neg_accompression = 0;
- lcp_wantoptions[0].neg_accompression = 0;
-
- lcp_allowoptions[0].neg_asyncmap = 0;
- lcp_wantoptions[0].neg_asyncmap = 0;
-
- lcp_allowoptions[0].neg_pcompression = 0;
- lcp_wantoptions[0].neg_pcompression = 0;
-
- ccp_allowoptions[0].deflate = 0 ;
- ccp_wantoptions[0].deflate = 0 ;
-
- ipcp_allowoptions[0].neg_vj=0;
- ipcp_wantoptions[0].neg_vj=0;
-
- ccp_allowoptions[0].bsd_compress = 0;
- ccp_wantoptions[0].bsd_compress = 0;
-
- PPPOEInitDevice();
- }
- return 1;
- }
-
- if (OldDevnameHook) r = OldDevnameHook(name);
- return r;
-}
-
-/**********************************************************************
- * %FUNCTION: plugin_init
- * %ARGUMENTS:
- * None
- * %RETURNS:
- * Nothing
- * %DESCRIPTION:
- * Initializes hooks for pppd plugin
- ***********************************************************************/
-void
-plugin_init(void)
-{
- if (!new_style_driver) {
- fatal("Linux kernel does not support PPPoE -- are you running 2.4.x?");
- }
- OldDevnameHook = setdevname_hook;
- setdevname_hook = PPPoEDevnameHook;
- add_options(Options);
-
- info("Roaring Penguin PPPoE Plugin Initialized");
-}
-
-/**********************************************************************
-*%FUNCTION: fatalSys
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to stderr and syslog and exits.
-***********************************************************************/
-void
-fatalSys(char const *str)
-{
- char buf[1024];
- int i = errno;
- sprintf(buf, "%.256s: %.256s", str, strerror(i));
- printErr(buf);
- sprintf(buf, "RP-PPPoE: %.256s: %.256s", str, strerror(i));
- sendPADT(conn, buf);
- exit(1);
-}
-
-/**********************************************************************
-*%FUNCTION: rp_fatal
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog and exits.
-***********************************************************************/
-void
-rp_fatal(char const *str)
-{
- char buf[1024];
- printErr(str);
- sprintf(buf, "RP-PPPoE: %.256s", str);
- sendPADT(conn, buf);
- exit(1);
-}
-/**********************************************************************
-*%FUNCTION: sysErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to syslog.
-***********************************************************************/
-void
-sysErr(char const *str)
-{
- rp_fatal(str);
-}
diff --git a/mdk-stage1/rp-pppoe/src/ppp.c b/mdk-stage1/rp-pppoe/src/ppp.c
deleted file mode 100644
index 72020a76c..000000000
--- a/mdk-stage1/rp-pppoe/src/ppp.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/***********************************************************************
-*
-* ppp.c
-*
-* Implementation of user-space PPPoE redirector for Linux.
-*
-* Functions for talking to PPP daemon
-*
-* Copyright (C) 2000 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#ifdef HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_N_HDLC
-#ifndef N_HDLC
-#include <linux/termios.h>
-#endif
-#endif
-
-int PPPState;
-int PPPPacketSize;
-unsigned char PPPXorValue;
-
-UINT16_t fcstab[256] = {
- 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
- 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
- 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
- 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
- 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
- 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
- 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
- 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
- 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
- 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
- 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
- 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
- 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
- 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
- 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
- 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
- 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
- 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
- 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
- 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
- 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
- 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
- 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
- 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
- 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
- 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
- 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
- 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
- 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
- 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
- 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
- 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
-};
-
-/**********************************************************************
-*%FUNCTION: syncReadFromPPP
-*%ARGUMENTS:
-* conn -- PPPoEConnection structure
-* packet -- buffer in which to place PPPoE packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Reads from a synchronous PPP device and builds and transmits a PPPoE
-* packet
-***********************************************************************/
-void
-syncReadFromPPP(PPPoEConnection *conn, PPPoEPacket *packet)
-{
- int r;
-#ifndef HAVE_N_HDLC
- struct iovec vec[2];
- unsigned char dummy[2];
- vec[0].iov_base = (void *) dummy;
- vec[0].iov_len = 2;
- vec[1].iov_base = (void *) packet->payload;
- vec[1].iov_len = ETH_DATA_LEN - PPPOE_OVERHEAD;
-
- /* Use scatter-read to throw away the PPP frame address bytes */
- r = readv(0, vec, 2);
-#else
- /* Bloody hell... readv doesn't work with N_HDLC line discipline... GRR! */
- unsigned char buf[ETH_DATA_LEN - PPPOE_OVERHEAD + 2];
- r = read(0, buf, ETH_DATA_LEN - PPPOE_OVERHEAD + 2);
- if (r >= 2) {
- memcpy(packet->payload, buf+2, r-2);
- }
-#endif
- if (r < 0) {
- /* Catch the Linux "select" bug */
- if (errno == EAGAIN) {
- rp_fatal("Linux select bug hit! This message is harmless, but please ask the Linux kernel developers to fix it.");
- }
- fatalSys("read (syncReadFromPPP)");
- }
- if (r == 0) {
- syslog(LOG_INFO, "end-of-file in syncReadFromPPP");
- sendPADT(conn, "RP-PPPoE: EOF in syncReadFromPPP");
- exit(0);
- }
-
- if (r < 2) {
- rp_fatal("too few characters read from PPP (syncReadFromPPP)");
- }
-
- sendSessionPacket(conn, packet, r-2);
-}
-
-/**********************************************************************
-*%FUNCTION: initPPP
-*%ARGUMENTS:
-* None
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Initializes the PPP state machine
-***********************************************************************/
-void
-initPPP(void)
-{
- PPPState = STATE_WAITFOR_FRAME_ADDR;
- PPPPacketSize = 0;
- PPPXorValue = 0;
-
-}
-/**********************************************************************
-*%FUNCTION: asyncReadFromPPP
-*%ARGUMENTS:
-* conn -- PPPoEConnection structure
-* packet -- buffer in which to place PPPoE packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Reads from an async PPP device and builds a PPPoE packet to transmit
-***********************************************************************/
-void
-asyncReadFromPPP(PPPoEConnection *conn, PPPoEPacket *packet)
-{
- unsigned char buf[READ_CHUNK];
- unsigned char *ptr = buf;
- unsigned char c;
-
- int r;
-
- r = read(0, buf, READ_CHUNK);
- if (r < 0) {
- fatalSys("read (asyncReadFromPPP)");
- }
-
- if (r == 0) {
- syslog(LOG_INFO, "end-of-file in asyncReadFromPPP");
- sendPADT(conn, "RP-PPPoE: EOF in asyncReadFromPPP");
- exit(0);
- }
-
- while(r) {
- if (PPPState == STATE_WAITFOR_FRAME_ADDR) {
- while(r) {
- --r;
- if (*ptr++ == FRAME_ADDR) {
- PPPState = STATE_DROP_PROTO;
- break;
- }
- }
- }
-
- /* Still waiting... */
- if (PPPState == STATE_WAITFOR_FRAME_ADDR) return;
-
- while(r && PPPState == STATE_DROP_PROTO) {
- --r;
- if (*ptr++ == (FRAME_CTRL ^ FRAME_ENC)) {
- PPPState = STATE_BUILDING_PACKET;
- }
- }
-
- if (PPPState == STATE_DROP_PROTO) return;
-
- /* Start building frame */
- while(r && PPPState == STATE_BUILDING_PACKET) {
- --r;
- c = *ptr++;
- switch(c) {
- case FRAME_ESC:
- PPPXorValue = FRAME_ENC;
- break;
- case FRAME_FLAG:
- if (PPPPacketSize < 2) {
- rp_fatal("Packet too short from PPP (asyncReadFromPPP)");
- }
- sendSessionPacket(conn, packet, PPPPacketSize-2);
- PPPPacketSize = 0;
- PPPXorValue = 0;
- PPPState = STATE_WAITFOR_FRAME_ADDR;
- break;
- default:
- if (PPPPacketSize >= ETH_DATA_LEN - 4) {
- syslog(LOG_ERR, "Packet too big! Check MTU on PPP interface");
- PPPPacketSize = 0;
- PPPXorValue = 0;
- PPPState = STATE_WAITFOR_FRAME_ADDR;
- } else {
- packet->payload[PPPPacketSize++] = c ^ PPPXorValue;
- PPPXorValue = 0;
- }
- }
- }
- }
-}
-
-/**********************************************************************
-*%FUNCTION: pppFCS16
-*%ARGUMENTS:
-* fcs -- current fcs
-* cp -- a buffer's worth of data
-* len -- length of buffer "cp"
-*%RETURNS:
-* A new FCS
-*%DESCRIPTION:
-* Updates the PPP FCS.
-***********************************************************************/
-UINT16_t
-pppFCS16(UINT16_t fcs,
- unsigned char * cp,
- int len)
-{
- while (len--)
- fcs = (fcs >> 8) ^ fcstab[(fcs ^ *cp++) & 0xff];
-
- return (fcs);
-}
-
diff --git a/mdk-stage1/rp-pppoe/src/pppoe-server.c b/mdk-stage1/rp-pppoe/src/pppoe-server.c
deleted file mode 100644
index e43e63553..000000000
--- a/mdk-stage1/rp-pppoe/src/pppoe-server.c
+++ /dev/null
@@ -1,1247 +0,0 @@
-/***********************************************************************
-*
-* pppoe.h
-*
-* Implementation of a user-space PPPoE server
-*
-* Copyright (C) 2000 Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-* $Id$
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "config.h"
-
-#if defined(HAVE_NETPACKET_PACKET_H) || defined(HAVE_LINUX_IF_PACKET_H)
-#define _POSIX_SOURCE 1 /* For sigaction defines */
-#endif
-
-#define _BSD_SOURCE 1 /* for gethostname */
-
-#include "pppoe.h"
-#include "md5.h"
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-#ifdef HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#include <signal.h>
-
-/* Hack for daemonizing */
-#define CLOSEFD 64
-
-/* Max. 64 sessions by default */
-#define DEFAULT_MAX_SESSIONS 64
-
-/* A list of client sessions */
-struct ClientSession *Sessions = NULL;
-
-/* The number of session slots */
-size_t NumSessionSlots;
-
-/* Offset of first session */
-size_t SessOffset = 0;
-
-/* Socket for client's discovery phases */
-int Socket = -1;
-
-/* Pipe written on reception of SIGCHLD */
-int Pipe[2] = {-1, -1};
-int ReapPending = 0;
-
-/* Synchronous mode */
-int Synchronous = 0;
-
-/* Random seed for cookie generation */
-#define SEED_LEN 16
-#define MD5_LEN 16
-#define COOKIE_LEN (MD5_LEN + sizeof(pid_t)) /* Cookie is 16-byte MD5 + PID of server */
-
-unsigned char CookieSeed[SEED_LEN];
-
-/* Default interface if no -I option given */
-#define DEFAULT_IF "eth0"
-char *IfName = NULL;
-
-/* Access concentrator name */
-char *ACName = NULL;
-
-/* Options to pass to pppoe process */
-char PppoeOptions[SMALLBUF] = "";
-
-/* Our local IP address */
-unsigned char LocalIP[IPV4ALEN] = {10, 0, 0, 1};
-unsigned char RemoteIP[IPV4ALEN] = {10, 67, 15, 1}; /* Counter STARTS here */
-
-PPPoETag hostUniq;
-PPPoETag relayId;
-PPPoETag receivedCookie;
-PPPoETag requestedService;
-
-#define HOSTNAMELEN 256
-
-static void startPPPD(struct ClientSession *sess);
-static void sendErrorPADS(int sock, unsigned char *source, unsigned char *dest,
- int errorTag, char *errorMsg);
-
-#define CHECK_ROOM(cursor, start, len) \
-do {\
- if (((cursor)-(start))+(len) > MAX_PPPOE_PAYLOAD) { \
- syslog(LOG_ERR, "Would create too-long packet"); \
- return; \
- } \
-} while(0)
-
-/* Use Linux kernel-mode PPPoE? */
-int UseLinuxKernelModePPPoE = 0;
-
-/**********************************************************************
-*%FUNCTION: parseAddressPool
-*%ARGUMENTS:
-* fname -- name of file containing IP address pool.
-* install -- if true, install IP addresses in sessions.
-*%RETURNS:
-* Number of valid IP addresses found.
-*%DESCRIPTION:
-* Reads a list of IP addresses from a file.
-***********************************************************************/
-static int
-parseAddressPool(char const *fname, int install)
-{
- FILE *fp = fopen(fname, "r");
- int numAddrs = 0;
- unsigned int a, b, c, d;
-
- if (!fp) {
- sysErr("Cannot open address pool file");
- }
-
- while (!feof(fp)) {
- if ((fscanf(fp, "%u.%u.%u.%u", &a, &b, &c, &d) == 4) &&
- a < 256 && b < 256 && c < 256 && d < 256) {
- if (install) {
- Sessions[numAddrs].ip[0] = (unsigned char) a;
- Sessions[numAddrs].ip[1] = (unsigned char) b;
- Sessions[numAddrs].ip[2] = (unsigned char) c;
- Sessions[numAddrs].ip[3] = (unsigned char) d;
- }
- numAddrs++;
- }
- }
- if (!numAddrs) {
- rp_fatal("No valid ip addresses found in pool file");
- }
- return numAddrs;
-}
-
-/**********************************************************************
-*%FUNCTION: parsePADITags
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks interesting tags out of a PADI packet
-***********************************************************************/
-void
-parsePADITags(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- switch(type) {
- case TAG_SERVICE_NAME:
- /* Should do something -- currently ignored */
- break;
- case TAG_RELAY_SESSION_ID:
- relayId.type = htons(type);
- relayId.length = htons(len);
- memcpy(relayId.payload, data, len);
- break;
- case TAG_HOST_UNIQ:
- hostUniq.type = htons(type);
- hostUniq.length = htons(len);
- memcpy(hostUniq.payload, data, len);
- break;
- }
-}
-
-/**********************************************************************
-*%FUNCTION: parsePADRTags
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks interesting tags out of a PADR packet
-***********************************************************************/
-void
-parsePADRTags(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- switch(type) {
- case TAG_RELAY_SESSION_ID:
- relayId.type = htons(type);
- relayId.length = htons(len);
- memcpy(relayId.payload, data, len);
- break;
- case TAG_HOST_UNIQ:
- hostUniq.type = htons(type);
- hostUniq.length = htons(len);
- memcpy(hostUniq.payload, data, len);
- break;
- case TAG_AC_COOKIE:
- receivedCookie.type = htons(type);
- receivedCookie.length = htons(len);
- memcpy(receivedCookie.payload, data, len);
- break;
- case TAG_SERVICE_NAME:
- requestedService.type = htons(type);
- requestedService.length = htons(len);
- memcpy(requestedService.payload, data, len);
- break;
- }
-}
-
-/**********************************************************************
-*%FUNCTION: findSession
-*%ARGUMENTS:
-* pid -- PID of child which owns session. If PID is 0, searches for
-* empty session slots.
-*%RETURNS:
-* A pointer to the session, or NULL if no such session found.
-*%DESCRIPTION:
-* Searches for specified session.
-**********************************************************************/
-struct ClientSession *
-findSession(pid_t pid)
-{
- size_t i;
- for (i=0; i<NumSessionSlots; i++) {
- if (Sessions[i].pid == pid) {
- return &Sessions[i];
- }
- }
- return NULL;
-}
-
-/**********************************************************************
-*%FUNCTION: reapSessions
-*%ARGUMENTS:
-* myAddr -- my Ethernet address
-* sock -- my discovery socket
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Reaps children which have exited and removes their sessions
-**********************************************************************/
-void
-reapSessions(unsigned char *myAddr, int sock)
-{
- int status;
- pid_t pid;
- struct ClientSession *session;
-
- /* Temporary structure for sending PADT's. */
- PPPoEConnection conn;
- memset(&conn, 0, sizeof(conn));
-
- /* Initialize fields of conn which do not depend on peer */
- memcpy(conn.myEth, myAddr, ETH_ALEN);
- conn.useHostUniq = 0;
- conn.discoverySocket = sock;
-
- while((pid = waitpid(-1, &status, WNOHANG)) > 0) {
- session = findSession(pid);
- if (!session) {
- syslog(LOG_ERR, "Child %d died but couldn't find session!",
- (int) pid);
- } else {
- syslog(LOG_INFO,
- "Session %d closed for client %02x:%02x:%02x:%02x:%02x:%02x (%d.%d.%d.%d)",
- ntohs(session->sess),
- session->eth[0], session->eth[1], session->eth[2],
- session->eth[3], session->eth[4], session->eth[5],
- (int) session->ip[0], (int) session->ip[1],
- (int) session->ip[2], (int) session->ip[3]);
- conn.session = session->sess;
- memcpy(conn.peerEth, session->eth, ETH_ALEN);
- if (session->recvdPADT) {
- sendPADT(&conn, "RP-PPPoE: Received PADT from peer");
- } else {
- sendPADT(&conn, "RP-PPPoE: Child pppd process terminated");
- }
- session->pid = 0;
- }
- }
-}
-
-/**********************************************************************
-*%FUNCTION: fatalSys
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to stderr and syslog and exits.
-***********************************************************************/
-void
-fatalSys(char const *str)
-{
- char buf[SMALLBUF];
- snprintf(buf, SMALLBUF, "%s: %s", str, strerror(errno));
- printErr(buf);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: sysErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to syslog.
-***********************************************************************/
-void
-sysErr(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
-}
-
-/**********************************************************************
-*%FUNCTION: rp_fatal
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog and exits.
-***********************************************************************/
-void
-rp_fatal(char const *str)
-{
- printErr(str);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: genCookie
-*%ARGUMENTS:
-* peerEthAddr -- peer Ethernet address (6 bytes)
-* myEthAddr -- my Ethernet address (6 bytes)
-* seed -- random cookie seed to make things tasty (16 bytes)
-* cookie -- buffer which is filled with server PID and
-* md5 sum of previous items
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Forms the md5 sum of peer MAC address, our MAC address and seed, useful
-* in a PPPoE Cookie tag.
-***********************************************************************/
-void
-genCookie(unsigned char const *peerEthAddr,
- unsigned char const *myEthAddr,
- unsigned char const *seed,
- unsigned char *cookie)
-{
- struct MD5Context ctx;
- pid_t pid = getpid();
-
- MD5Init(&ctx);
- MD5Update(&ctx, peerEthAddr, ETH_ALEN);
- MD5Update(&ctx, myEthAddr, ETH_ALEN);
- MD5Update(&ctx, seed, SEED_LEN);
- MD5Final(cookie, &ctx);
- memcpy(cookie+MD5_LEN, &pid, sizeof(pid));
-}
-
-/**********************************************************************
-*%FUNCTION: processPADI
-*%ARGUMENTS:
-* sock -- Ethernet socket
-* myAddr -- my Ethernet address
-* packet -- PPPoE PADI packet
-* len -- length of received packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADO packet back to client
-***********************************************************************/
-void
-processPADI(int sock, unsigned char *myAddr,
- PPPoEPacket *packet, int len)
-{
- PPPoEPacket pado;
- PPPoETag acname;
- PPPoETag servname;
- PPPoETag cookie;
- size_t acname_len;
- unsigned char *cursor = pado.payload;
- UINT16_t plen;
-
- /* Ignore PADI's which don't come from a unicast address */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR, "PADI packet from non-unicast source address");
- return;
- }
-
- acname.type = htons(TAG_AC_NAME);
- acname_len = strlen(ACName);
- acname.length = htons(acname_len);
- memcpy(acname.payload, ACName, acname_len);
-
- servname.type = htons(TAG_SERVICE_NAME);
- servname.length = 0;
-
- relayId.type = 0;
- hostUniq.type = 0;
- parsePacket(packet, parsePADITags, NULL);
-
- /* Generate a cookie */
- cookie.type = htons(TAG_AC_COOKIE);
- cookie.length = htons(COOKIE_LEN);
- genCookie(packet->ethHdr.h_source, myAddr, CookieSeed, cookie.payload);
-
- /* Construct a PADO packet */
- memcpy(pado.ethHdr.h_dest, packet->ethHdr.h_source, ETH_ALEN);
- memcpy(pado.ethHdr.h_source, myAddr, ETH_ALEN);
- pado.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- pado.ver = 1;
- pado.type = 1;
- pado.code = CODE_PADO;
- pado.session = 0;
- plen = TAG_HDR_SIZE + acname_len;
-
- CHECK_ROOM(cursor, pado.payload, acname_len+TAG_HDR_SIZE);
- memcpy(cursor, &acname, acname_len + TAG_HDR_SIZE);
- cursor += acname_len + TAG_HDR_SIZE;
-
- CHECK_ROOM(cursor, pado.payload, TAG_HDR_SIZE);
- memcpy(cursor, &servname, TAG_HDR_SIZE);
- cursor += TAG_HDR_SIZE;
- plen += TAG_HDR_SIZE;
-
- CHECK_ROOM(cursor, pado.payload, TAG_HDR_SIZE + COOKIE_LEN);
- memcpy(cursor, &cookie, TAG_HDR_SIZE + COOKIE_LEN);
- cursor += TAG_HDR_SIZE + COOKIE_LEN;
- plen += TAG_HDR_SIZE + COOKIE_LEN;
-
- if (relayId.type) {
- CHECK_ROOM(cursor, pado.payload, ntohs(relayId.length) + TAG_HDR_SIZE);
- memcpy(cursor, &relayId, ntohs(relayId.length) + TAG_HDR_SIZE);
- cursor += ntohs(relayId.length) + TAG_HDR_SIZE;
- plen += ntohs(relayId.length) + TAG_HDR_SIZE;
- }
- if (hostUniq.type) {
- CHECK_ROOM(cursor, pado.payload, ntohs(hostUniq.length)+TAG_HDR_SIZE);
- memcpy(cursor, &hostUniq, ntohs(hostUniq.length) + TAG_HDR_SIZE);
- cursor += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- plen += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- }
- pado.length = htons(plen);
- sendPacket(NULL, sock, &pado, (int) (plen + HDR_SIZE));
-}
-
-/**********************************************************************
-*%FUNCTION: processPADT
-*%ARGUMENTS:
-* sock -- Ethernet socket
-* myAddr -- my Ethernet address
-* packet -- PPPoE PADT packet
-* len -- length of received packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Kills session whose session-ID is in PADT packet.
-***********************************************************************/
-void
-processPADT(int sock, unsigned char *myAddr,
- PPPoEPacket *packet, int len)
-{
- size_t i;
-
- /* Ignore PADT's not directed at us */
- if (memcmp(packet->ethHdr.h_dest, myAddr, ETH_ALEN)) return;
-
- /* Get session's index */
- i = ntohs(packet->session) - 1 - SessOffset;
- if (i >= NumSessionSlots) return;
- if (Sessions[i].sess != packet->session) {
- syslog(LOG_ERR, "Session index %u doesn't match session number %u",
- (unsigned int) i, (unsigned int) ntohs(packet->session));
- return;
- }
- if (Sessions[i].pid) {
- Sessions[i].recvdPADT = 1;
- parsePacket(packet, parseLogErrs, NULL);
- kill(Sessions[i].pid, SIGTERM);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: processPADR
-*%ARGUMENTS:
-* sock -- Ethernet socket
-* myAddr -- my Ethernet address
-* packet -- PPPoE PADR packet
-* len -- length of received packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADS packet back to client and starts a PPP session if PADR
-* packet is OK.
-***********************************************************************/
-void
-processPADR(int sock, unsigned char *myAddr,
- PPPoEPacket *packet, int len)
-{
- unsigned char cookieBuffer[COOKIE_LEN];
- struct ClientSession *cliSession;
- pid_t child;
- PPPoEPacket pads;
- unsigned char *cursor = pads.payload;
- UINT16_t plen;
- PPPoETag servname;
-
- /* Initialize some globals */
- relayId.type = 0;
- hostUniq.type = 0;
- receivedCookie.type = 0;
- requestedService.type = 0;
-
- /* Ignore PADR's not directed at us */
- if (memcmp(packet->ethHdr.h_dest, myAddr, ETH_ALEN)) return;
-
- /* Ignore PADR's from non-unicast addresses */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR, "PADR packet from non-unicast source address");
- return;
- }
-
- parsePacket(packet, parsePADRTags, NULL);
-
- /* Check that everything's cool */
- if (!receivedCookie.type) {
- /* Drop it -- do not send error PADS */
- return;
- }
-
- /* Is cookie kosher? */
- if (receivedCookie.length != htons(COOKIE_LEN)) {
- /* Drop it -- do not send error PADS */
- return;
- }
-
- genCookie(packet->ethHdr.h_source, myAddr, CookieSeed, cookieBuffer);
- if (memcmp(receivedCookie.payload, cookieBuffer, COOKIE_LEN)) {
- /* Drop it -- do not send error PADS */
- return;
- }
-
- /* Check service name -- we only offer service "" */
- if (!requestedService.type) {
- syslog(LOG_ERR, "Received PADR packet with no SERVICE_NAME tag");
- sendErrorPADS(sock, myAddr, packet->ethHdr.h_source,
- TAG_SERVICE_NAME_ERROR, "RP-PPPoE: Server: No service name tag");
- return;
- }
-
- if (requestedService.length) {
- syslog(LOG_ERR, "Received PADR packet asking for unsupported service %.*s", (int) ntohs(requestedService.length), requestedService.payload);
- sendErrorPADS(sock, myAddr, packet->ethHdr.h_source,
- TAG_SERVICE_NAME_ERROR, "RP-PPPoE: Server: Invalid service name tag");
- return;
- }
-
- /* Looks cool... find a slot for the session */
- cliSession = findSession(0);
- if (!cliSession) {
- syslog(LOG_ERR, "No client slots available (%02x:%02x:%02x:%02x:%02x:%02x)",
- (unsigned int) packet->ethHdr.h_source[0],
- (unsigned int) packet->ethHdr.h_source[1],
- (unsigned int) packet->ethHdr.h_source[2],
- (unsigned int) packet->ethHdr.h_source[3],
- (unsigned int) packet->ethHdr.h_source[4],
- (unsigned int) packet->ethHdr.h_source[5]);
- sendErrorPADS(sock, myAddr, packet->ethHdr.h_source,
- TAG_AC_SYSTEM_ERROR, "RP-PPPoE: Server: No client slots available");
- return;
- }
-
- /* Set up client session peer Ethernet address */
- memcpy(cliSession->eth, packet->ethHdr.h_source, ETH_ALEN);
- cliSession->recvdPADT = 0;
-
- /* Create child process, send PADS packet back */
- child = fork();
- if (child < 0) {
- sendErrorPADS(sock, myAddr, packet->ethHdr.h_source,
- TAG_AC_SYSTEM_ERROR, "RP-PPPoE: Server: Unable to start session process");
- return;
- }
- if (child != 0) {
- /* In the parent process. Mark pid in session slot */
- cliSession->pid = child;
- return;
- }
-
- /* In the child process. */
-
- /* pppd has a nasty habit of killing all processes in its process group.
- Start a new session to stop pppd from killing us! */
- setsid();
-
- /* Send PADS and Start pppd */
- memcpy(pads.ethHdr.h_dest, packet->ethHdr.h_source, ETH_ALEN);
- memcpy(pads.ethHdr.h_source, myAddr, ETH_ALEN);
- pads.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- pads.ver = 1;
- pads.type = 1;
- pads.code = CODE_PADS;
-
- pads.session = cliSession->sess;
- plen = 0;
-
- servname.type = htons(TAG_SERVICE_NAME);
- servname.length = 0;
-
- memcpy(cursor, &servname, TAG_HDR_SIZE);
- cursor += TAG_HDR_SIZE;
- plen += TAG_HDR_SIZE;
-
- if (relayId.type) {
- memcpy(cursor, &relayId, ntohs(relayId.length) + TAG_HDR_SIZE);
- cursor += ntohs(relayId.length) + TAG_HDR_SIZE;
- plen += ntohs(relayId.length) + TAG_HDR_SIZE;
- }
- if (hostUniq.type) {
- memcpy(cursor, &hostUniq, ntohs(hostUniq.length) + TAG_HDR_SIZE);
- cursor += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- plen += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- }
- pads.length = htons(plen);
- sendPacket(NULL, sock, &pads, (int) (plen + HDR_SIZE));
- startPPPD(cliSession);
-}
-
-/**********************************************************************
-*%FUNCTION: childHandler
-*%ARGUMENTS:
-* sig -- signal number
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Called by SIGCHLD. Writes one byte to Pipe to wake up the select
-* loop and cause reaping of dead sessions
-***********************************************************************/
-void
-childHandler(int sig)
-{
- if (!ReapPending) {
- ReapPending = 1;
- write(Pipe[1], &ReapPending, 1);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: usage
-*%ARGUMENTS:
-* argv0 -- argv[0] from main
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints usage instructions
-***********************************************************************/
-void
-usage(char const *argv0)
-{
- fprintf(stderr, "Usage: %s [options]\n", argv0);
- fprintf(stderr, "Options:\n");
-#ifdef USE_BPF
- fprintf(stderr, " -I if_name -- Specify interface (REQUIRED)\n");
-#else
- fprintf(stderr, " -I if_name -- Specify interface (default %s.)\n",
- DEFAULT_IF);
-#endif
- fprintf(stderr, " -T timeout -- Specify inactivity timeout in seconds.\n");
- fprintf(stderr, " -C name -- Set access concentrator name.\n");
- fprintf(stderr, " -m MSS -- Clamp incoming and outgoing MSS options.\n");
- fprintf(stderr, " -L ip -- Set local IP address.\n");
- fprintf(stderr, " -R ip -- Set start address of remote IP pool.\n");
- fprintf(stderr, " -p fname -- Optain IP address pool from specified file.\n");
- fprintf(stderr, " -N num -- Allow 'num' concurrent sessions.\n");
- fprintf(stderr, " -o offset -- Assign session numbers starting at offset+1.\n");
- fprintf(stderr, " -f disc:sess -- Set Ethernet frame types (hex).\n");
- fprintf(stderr, " -s -- Use synchronous PPP mode.\n");
-#ifdef HAVE_LINUX_KERNEL_PPPOE
- fprintf(stderr, " -k -- Use kernel-mode PPPoE.\n");
-#endif
- fprintf(stderr, " -h -- Print usage information.\n\n");
- fprintf(stderr, "PPPoE-Server Version %s, Copyright (C) 2001 Roaring Penguin Software Inc.\n", VERSION);
- fprintf(stderr, "PPPoE-Server comes with ABSOLUTELY NO WARRANTY.\n");
- fprintf(stderr, "This is free software, and you are welcome to redistribute it\n");
- fprintf(stderr, "under the terms of the GNU General Public License, version 2\n");
- fprintf(stderr, "or (at your option) any later version.\n");
- fprintf(stderr, "http://www.roaringpenguin.com\n");
-}
-
-/**********************************************************************
-*%FUNCTION: main
-*%ARGUMENTS:
-* argc, argv -- usual suspects
-*%RETURNS:
-* Exit status
-*%DESCRIPTION:
-* Main program of PPPoE server
-***********************************************************************/
-int
-main(int argc, char **argv)
-{
-
- FILE *fp;
- int i;
- int opt;
- unsigned char myAddr[ETH_ALEN];
- PPPoEPacket packet;
- int len;
- int sock;
- int d[IPV4ALEN];
- int beDaemon = 1;
- struct sigaction act;
- int maxFD;
- unsigned int discoveryType, sessionType;
- char *addressPoolFname = NULL;
-
-#ifndef HAVE_LINUX_KERNEL_PPPOE
- char *options = "hI:C:L:R:T:m:FN:f:o:sp:";
-#else
- char *options = "hI:C:L:R:T:m:FN:f:o:skp:";
-#endif
-
- /* Initialize syslog */
- openlog("pppoe-server", LOG_PID, LOG_DAEMON);
-
- /* Default number of session slots */
- NumSessionSlots = DEFAULT_MAX_SESSIONS;
-
- /* Parse command-line options */
- while((opt = getopt(argc, argv, options)) != -1) {
- switch(opt) {
-#ifdef HAVE_LINUX_KERNEL_PPPOE
- case 'k':
- UseLinuxKernelModePPPoE = 1;
- break;
-#endif
- case 'p':
- addressPoolFname = optarg;
- break;
- case 's':
- Synchronous = 1;
- /* Pass the Synchronous option on to pppoe */
- snprintf(PppoeOptions + strlen(PppoeOptions),
- SMALLBUF-strlen(PppoeOptions),
- " -s");
- break;
- case 'f':
- if (sscanf(optarg, "%x:%x", &discoveryType, &sessionType) != 2) {
- fprintf(stderr, "Illegal argument to -f: Should be disc:sess in hex\n");
- exit(EXIT_FAILURE);
- }
- Eth_PPPOE_Discovery = (UINT16_t) discoveryType;
- Eth_PPPOE_Session = (UINT16_t) sessionType;
- /* This option gets passed to pppoe */
- snprintf(PppoeOptions + strlen(PppoeOptions),
- SMALLBUF-strlen(PppoeOptions),
- " -%c %s", opt, optarg);
- break;
- case 'F':
- beDaemon = 0;
- break;
- case 'N':
- if (sscanf(optarg, "%d", &opt) != 1) {
- usage(argv[0]);
- exit(EXIT_FAILURE);
- }
- if (opt <= 0) {
- fprintf(stderr, "-N: Value must be positive\n");
- exit(EXIT_FAILURE);
- }
- NumSessionSlots = opt;
- break;
- case 'o':
- if (sscanf(optarg, "%d", &opt) != 1) {
- usage(argv[0]);
- exit(EXIT_FAILURE);
- }
- if (opt < 0) {
- fprintf(stderr, "-o: Value must be non-negative\n");
- exit(EXIT_FAILURE);
- }
- SessOffset = (size_t) opt;
- break;
-
- case 'I':
- SET_STRING(IfName, optarg);
- break;
- case 'C':
- SET_STRING(ACName, optarg);
- break;
- case 'L':
- case 'R':
- /* Get local/remote IP address */
- if (sscanf(optarg, "%d.%d.%d.%d", &d[0], &d[1], &d[2], &d[3]) != 4) {
- usage(argv[0]);
- exit(EXIT_FAILURE);
- }
- for (i=0; i<IPV4ALEN; i++) {
- if (d[i] < 0 || d[i] > 255) {
- usage(argv[0]);
- exit(EXIT_FAILURE);
- }
- if (opt == 'L') {
- LocalIP[i] = (unsigned char) d[i];
- } else {
- RemoteIP[i] = (unsigned char) d[i];
- }
- }
- break;
- case 'T':
- case 'm':
- /* These just get passed to pppoe */
- snprintf(PppoeOptions + strlen(PppoeOptions),
- SMALLBUF-strlen(PppoeOptions),
- " -%c %s", opt, optarg);
- break;
- case 'h':
- usage(argv[0]);
- exit(EXIT_SUCCESS);
- }
- }
-
-#ifdef USE_LINUX_PACKET
-#ifndef HAVE_STRUCT_SOCKADDR_LL
- fprintf(stderr, "The PPPoE relay does not work on Linux 2.0 kernels.\n");
- exit(EXIT_FAILURE);
-#endif
-#endif
-
- if (!IfName) {
- IfName = DEFAULT_IF;
- }
-
- if (!ACName) {
- ACName = malloc(HOSTNAMELEN);
- if (gethostname(ACName, HOSTNAMELEN) < 0) {
- fatalSys("gethostname");
- }
- }
-
- /* If address pool filename given, count number of addresses */
- if (addressPoolFname) {
- NumSessionSlots = parseAddressPool(addressPoolFname, 0);
- }
-
- /* Max 65534 - SessOffset sessions */
- if (NumSessionSlots + SessOffset > 65534) {
- fprintf(stderr, "-N and -o options must add up to at most 65534\n");
- exit(EXIT_FAILURE);
- }
-
- /* Allocate memory for sessions */
- Sessions = calloc(NumSessionSlots, sizeof(struct ClientSession));
- if (!Sessions) {
- rp_fatal("Cannot allocate memory for session slots");
- }
-
- /* Fill in remote IP addresses from pool */
- if (addressPoolFname) {
- (void) parseAddressPool(addressPoolFname, 1);
- }
-
- /* For testing -- generate sequential remote IP addresses */
- for(i=0; i<NumSessionSlots; i++) {
- Sessions[i].pid = 0;
- Sessions[i].sess = htons(i+1+SessOffset);
-
- if (!addressPoolFname) {
- memcpy(Sessions[i].ip, RemoteIP, sizeof(RemoteIP));
-
- /* Increment IP */
- RemoteIP[3]++;
- if (!RemoteIP[3]) {
- RemoteIP[3] = 0;
- RemoteIP[2]++;
- if (!RemoteIP[2]) {
- RemoteIP[1]++;
- if (!RemoteIP[1]) {
- RemoteIP[0]++;
- }
- }
- }
- }
- }
-
- /* Daemonize -- UNIX Network Programming, Vol. 1, Stevens */
- if (beDaemon) {
- i = fork();
- if (i < 0) {
- fatalSys("fork");
- } else if (i != 0) {
- /* parent */
- exit(EXIT_SUCCESS);
- }
- setsid();
- signal(SIGHUP, SIG_IGN);
- i = fork();
- if (i < 0) {
- fatalSys("fork");
- } else if (i != 0) {
- exit(EXIT_SUCCESS);
- }
-
- chdir("/");
- closelog();
- for (i=0; i<CLOSEFD; i++) close(i);
- /* We nuked our syslog descriptor... */
- openlog("pppoe-server", LOG_PID, LOG_DAEMON);
- }
-
- /* Initialize our random cookie. Try /dev/urandom; if that fails,
- use PID and rand() */
- fp = fopen("/dev/urandom", "r");
- if (fp) {
- fread(&CookieSeed, 1, SEED_LEN, fp);
- fclose(fp);
- } else {
- CookieSeed[0] = getpid() & 0xFF;
- CookieSeed[1] = (getpid() >> 8) & 0xFF;
- for (i=2; i<SEED_LEN; i++) {
- CookieSeed[i] = (rand() >> (i % 9)) & 0xFF;
- }
- }
-
- sock = openInterface(IfName, Eth_PPPOE_Discovery, myAddr);
-
- /* Set signal handler for SIGCHLD */
- act.sa_handler = childHandler;
- sigemptyset(&act.sa_mask);
- act.sa_flags = SA_NOCLDSTOP | SA_RESTART;
- if (sigaction(SIGCHLD, &act, NULL) < 0) {
- fatalSys("sigaction");
- }
-
- /* Set up pipe for signal handler */
- if (pipe(Pipe) < 0) {
- fatalSys("pipe");
- }
-
- /* Main server loop */
- maxFD = sock;
- if (Pipe[0] > maxFD) maxFD = Pipe[0];
- maxFD++;
-
- for(;;) {
- fd_set readable;
- FD_ZERO(&readable);
- FD_SET(sock, &readable);
- FD_SET(Pipe[0], &readable);
-
- while(1) {
- i = select(maxFD, &readable, NULL, NULL, NULL);
- if (i >= 0 || errno != EINTR) break;
- }
- if (i < 0) {
- fatalSys("select");
- }
-
- if (FD_ISSET(Pipe[0], &readable)) {
- /* Clear pipe */
- char buf[SMALLBUF];
- read(Pipe[0], buf, SMALLBUF);
- }
-
- if (ReapPending) {
- ReapPending = 0;
- reapSessions(myAddr, sock);
- }
- if (!FD_ISSET(sock, &readable)) {
- continue;
- }
-
- if (receivePacket(sock, &packet, &len) < 0) {
- continue;
- }
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- continue;
- }
-
- /* Sanity check on packet */
- if (packet.ver != 1 || packet.type != 1) {
- /* Syslog an error */
- continue;
- }
- switch(packet.code) {
- case CODE_PADI:
- processPADI(sock, myAddr, &packet, len);
- break;
- case CODE_PADR:
- processPADR(sock, myAddr, &packet, len);
- break;
- case CODE_PADT:
- /* Kill the child */
- processPADT(sock, myAddr, &packet, len);
- break;
- case CODE_SESS:
- /* Ignore SESS -- children will handle them */
- break;
- case CODE_PADO:
- case CODE_PADS:
- /* Ignore PADO and PADS totally */
- break;
- default:
- /* Syslog an error */
- break;
- }
- }
- return 0;
-}
-
-/**********************************************************************
-*%FUNCTION: sendErrorPADS
-*%ARGUMENTS:
-* sock -- socket to write to
-* source -- source Ethernet address
-* dest -- destination Ethernet address
-* errorTag -- error tag
-* errorMsg -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends a PADS packet with an error message
-***********************************************************************/
-void
-sendErrorPADS(int sock,
- unsigned char *source,
- unsigned char *dest,
- int errorTag,
- char *errorMsg)
-{
- PPPoEPacket pads;
- unsigned char *cursor = pads.payload;
- UINT16_t plen;
- PPPoETag err;
- int elen = strlen(errorMsg);
-
- memcpy(pads.ethHdr.h_dest, dest, ETH_ALEN);
- memcpy(pads.ethHdr.h_source, source, ETH_ALEN);
- pads.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- pads.ver = 1;
- pads.type = 1;
- pads.code = CODE_PADS;
-
- pads.session = htons(0);
- plen = 0;
-
- err.type = htons(errorTag);
- err.length = htons(elen);
-
- memcpy(err.payload, errorMsg, elen);
- memcpy(cursor, &err, TAG_HDR_SIZE+elen);
- cursor += TAG_HDR_SIZE + elen;
- plen += TAG_HDR_SIZE + elen;
-
- if (relayId.type) {
- memcpy(cursor, &relayId, ntohs(relayId.length) + TAG_HDR_SIZE);
- cursor += ntohs(relayId.length) + TAG_HDR_SIZE;
- plen += ntohs(relayId.length) + TAG_HDR_SIZE;
- }
- if (hostUniq.type) {
- memcpy(cursor, &hostUniq, ntohs(hostUniq.length) + TAG_HDR_SIZE);
- cursor += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- plen += ntohs(hostUniq.length) + TAG_HDR_SIZE;
- }
- pads.length = htons(plen);
- sendPacket(NULL, sock, &pads, (int) (plen + HDR_SIZE));
-}
-
-
-/**********************************************************************
-*%FUNCTION: startPPPDUserMode
-*%ARGUMENTS:
-* session -- client session record
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Starts PPPD for user-mode PPPoE
-***********************************************************************/
-void
-startPPPDUserMode(struct ClientSession *session)
-{
- /* Leave some room */
- char *argv[20];
-
- char buffer[SMALLBUF];
-
- argv[0] = "pppd";
- argv[1] = "pty";
-
- snprintf(buffer, SMALLBUF, "%s -n -I %s -e %d:%02x:%02x:%02x:%02x:%02x:%02x%s",
- PPPOE_PATH, IfName,
- ntohs(session->sess),
- session->eth[0], session->eth[1], session->eth[2],
- session->eth[3], session->eth[4], session->eth[5],
- PppoeOptions);
- argv[2] = strdup(buffer);
- if (!argv[2]) {
- /* TODO: Send a PADT */
- exit(EXIT_FAILURE);
- }
-
- argv[3] = "file";
- argv[4] = PPPOE_SERVER_OPTIONS;
-
- snprintf(buffer, SMALLBUF, "%d.%d.%d.%d:%d.%d.%d.%d",
- (int) LocalIP[0], (int) LocalIP[1],
- (int) LocalIP[2], (int) LocalIP[3],
- (int) session->ip[0], (int) session->ip[1],
- (int) session->ip[2], (int) session->ip[3]);
- syslog(LOG_INFO,
- "Session %d created for client %02x:%02x:%02x:%02x:%02x:%02x (%d.%d.%d.%d)",
- ntohs(session->sess),
- session->eth[0], session->eth[1], session->eth[2],
- session->eth[3], session->eth[4], session->eth[5],
- (int) session->ip[0], (int) session->ip[1],
- (int) session->ip[2], (int) session->ip[3]);
- argv[5] = buffer; /* No need for strdup -- about to execv! */
- argv[6] = "nodetach";
- argv[7] = "noaccomp";
- argv[8] = "nobsdcomp";
- argv[9] = "nodeflate";
- argv[10] = "nopcomp";
- argv[11] = "novj";
- argv[12] = "novjccomp";
- argv[13] = "default-asyncmap";
- if (Synchronous) {
- argv[14] = "sync";
- argv[15] = NULL;
- } else {
- argv[14] = NULL;
- }
-
- execv(PPPD_PATH, argv);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: startPPPDLinuxKernelMode
-*%ARGUMENTS:
-* session -- client session record
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Starts PPPD for kernel-mode PPPoE on Linux
-***********************************************************************/
-void
-startPPPDLinuxKernelMode(struct ClientSession *session)
-{
- /* Leave some room */
- char *argv[20];
-
- char buffer[SMALLBUF];
-
- argv[0] = "pppd";
- argv[1] = "plugin";
- argv[2] = PLUGIN_PATH;
- argv[3] = IfName;
- snprintf(buffer, SMALLBUF, "%d:%02x:%02x:%02x:%02x:%02x:%02x",
- ntohs(session->sess),
- session->eth[0], session->eth[1], session->eth[2],
- session->eth[3], session->eth[4], session->eth[5]);
- argv[4] = "rp_pppoe_sess";
- argv[5] = strdup(buffer);
- if (!argv[5]) {
- /* TODO: Send a PADT */
- exit(EXIT_FAILURE);
- }
- argv[6] = "file";
- argv[7] = PPPOE_SERVER_OPTIONS;
-
- snprintf(buffer, SMALLBUF, "%d.%d.%d.%d:%d.%d.%d.%d",
- (int) LocalIP[0], (int) LocalIP[1],
- (int) LocalIP[2], (int) LocalIP[3],
- (int) session->ip[0], (int) session->ip[1],
- (int) session->ip[2], (int) session->ip[3]);
- syslog(LOG_INFO,
- "Session %d created for client %02x:%02x:%02x:%02x:%02x:%02x (%d.%d.%d.%d)",
- ntohs(session->sess),
- session->eth[0], session->eth[1], session->eth[2],
- session->eth[3], session->eth[4], session->eth[5],
- (int) session->ip[0], (int) session->ip[1],
- (int) session->ip[2], (int) session->ip[3]);
- argv[8] = buffer;
- argv[9] = "nodetach";
- argv[10] = "noaccomp";
- argv[11] = "nobsdcomp";
- argv[12] = "nodeflate";
- argv[13] = "nopcomp";
- argv[14] = "novj";
- argv[15] = "novjccomp";
- argv[16] = "default-asyncmap";
- argv[17] = NULL;
- execv(PPPD_PATH, argv);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: startPPPD
-*%ARGUMENTS:
-* session -- client session record
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Starts PPPD
-***********************************************************************/
-void
-startPPPD(struct ClientSession *session)
-{
- if (UseLinuxKernelModePPPoE) startPPPDLinuxKernelMode(session);
- else startPPPDUserMode(session);
-}
-
diff --git a/mdk-stage1/rp-pppoe/src/pppoe-sniff.c b/mdk-stage1/rp-pppoe/src/pppoe-sniff.c
deleted file mode 100644
index aa796547b..000000000
--- a/mdk-stage1/rp-pppoe/src/pppoe-sniff.c
+++ /dev/null
@@ -1,258 +0,0 @@
-/***********************************************************************
-*
-* pppoe-sniff.c
-*
-* Sniff a network for likely-looking PPPoE frames and deduce the value
-* to supply to PPPOE_EXTRA in /etc/ppp/pppoe.conf. USE AT YOUR OWN RISK.
-*
-* Copyright (C) 2000 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-
-#ifdef USE_DLPI
-#include <sys/dlpi.h>
-/* function declarations */
-void dlpromisconreq( int fd, u_long level);
-void dlokack(int fd, char *bufp);
-#endif
-
-/* Default interface if no -I option given */
-#define DEFAULT_IF "eth0"
-
-/* Global vars */
-int SeenPADR = 0;
-int SeenSess = 0;
-UINT16_t SessType, DiscType;
-
-char *IfName = NULL; /* Interface name */
-char *ServiceName = NULL; /* Service name */
-
-/**********************************************************************
-*%FUNCTION: parsePADRTags
-*%ARGUMENTS:
-* type -- tag type
-* len -- tag length
-* data -- tag data
-* extra -- extra user data.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Picks interesting tags out of a PADR packet
-***********************************************************************/
-void
-parsePADRTags(UINT16_t type, UINT16_t len, unsigned char *data,
- void *extra)
-{
- switch(type) {
- case TAG_SERVICE_NAME:
- ServiceName = malloc(len+1);
- if (ServiceName) {
- memcpy(ServiceName, data, len);
- ServiceName[len] = 0;
- }
- break;
- }
-}
-
-/**********************************************************************
-*%FUNCTION: fatalSys
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to stderr and exits.
-***********************************************************************/
-void
-fatalSys(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
- exit(1);
-}
-
-/**********************************************************************
-*%FUNCTION: rp_fatal
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog and exits.
-***********************************************************************/
-void
-rp_fatal(char const *str)
-{
- printErr(str);
- exit(1);
-}
-
-/**********************************************************************
-*%FUNCTION: usage
-*%ARGUMENTS:
-* argv0 -- program name
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints usage information and exits.
-***********************************************************************/
-void
-usage(char const *argv0)
-{
- fprintf(stderr, "Usage: %s [options]\n", argv0);
- fprintf(stderr, "Options:\n");
- fprintf(stderr, " -I if_name -- Specify interface (default %s.)\n",
- DEFAULT_IF);
- fprintf(stderr, " -V -- Print version and exit.\n");
- fprintf(stderr, "\nPPPoE Version %s, Copyright (C) 2000 Roaring Penguin Software Inc.\n", VERSION);
- fprintf(stderr, "PPPoE comes with ABSOLUTELY NO WARRANTY.\n");
- fprintf(stderr, "This is free software, and you are welcome to redistribute it under the terms\n");
- fprintf(stderr, "of the GNU General Public License, version 2 or any later version.\n");
- fprintf(stderr, "http://www.roaringpenguin.com\n");
- exit(0);
-}
-
-#if !defined(USE_LINUX_PACKET) && !defined(USE_DLPI)
-
-int
-main()
-{
- fprintf(stderr, "Sorry, pppoe-sniff works only on Linux.\n");
- return 1;
-}
-
-#else
-
-/**********************************************************************
-*%FUNCTION: main
-*%ARGUMENTS:
-* argc, argv -- count and values of command-line arguments
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Main program
-***********************************************************************/
-int
-main(int argc, char *argv[])
-{
- int opt;
- int sock;
- PPPoEPacket pkt;
- int size;
-#ifdef USE_DLPI
- long buf[MAXDLBUF];
-#endif
-
- while((opt = getopt(argc, argv, "I:V")) != -1) {
- switch(opt) {
- case 'I':
- SET_STRING(IfName, optarg);
- break;
- case 'V':
- printf("pppoe-sniff: Roaring Penguin PPPoE Version %s\n", VERSION);
- exit(0);
- default:
- usage(argv[0]);
- }
- }
-
- /* Pick a default interface name */
- if (!IfName) {
- IfName = DEFAULT_IF;
- }
-
- /* Open the interface */
-#ifdef USE_DLPI
- sock = openInterface(IfName, Eth_PPPOE_Discovery, NULL);
- dlpromisconreq(sock, DL_PROMISC_PHYS);
- dlokack(sock, (char *)buf);
- dlpromisconreq(sock, DL_PROMISC_SAP);
- dlokack(sock, (char *)buf);
-#else
-
- sock = openInterface(IfName, ETH_P_ALL, NULL);
-
-#endif
-
- /* We assume interface is in promiscuous mode -- use ifconfig to
- ensure this */
- fprintf(stderr, "Sniffing for PADR. Start your connection on another machine...\n");
- while (!SeenPADR) {
- if (receivePacket(sock, &pkt, &size) < 0) continue;
- if (ntohs(pkt.length) + HDR_SIZE > size) continue;
- if (pkt.ver != 1 || pkt.type != 1) continue;
- if (pkt.code != CODE_PADR) continue;
-
- /* Looks promising... parse it */
- if (parsePacket(&pkt, parsePADRTags, NULL) < 0) {
- continue;
- }
- DiscType = ntohs(pkt.ethHdr.h_proto);
- fprintf(stderr, "\nExcellent! Sniffed a likely-looking PADR.\n");
- break;
- }
-
- while (!SeenSess) {
- if (receivePacket(sock, &pkt, &size) < 0) continue;
- if (ntohs(pkt.length) + HDR_SIZE > size) continue;
- if (pkt.ver != 1 || pkt.type != 1) continue;
- if (pkt.code != CODE_SESS) continue;
-
- /* Cool! */
- SessType = ntohs(pkt.ethHdr.h_proto);
- break;
- }
-
- fprintf(stderr, "Wonderful! Sniffed a likely-looking session packet.\n");
- if ((ServiceName == NULL || *ServiceName == 0) &&
- DiscType == ETH_PPPOE_DISCOVERY &&
- SessType == ETH_PPPOE_SESSION) {
- fprintf(stderr, "\nGreat! It looks like a standard PPPoE service.\nYou should not need anything special in the configuration file.\n");
- return 0;
- }
-
- fprintf(stderr, "\nOK, looks like you need something special in the configuration file.\nTry this:\n\n");
- if (ServiceName != NULL && *ServiceName != 0) {
- fprintf(stderr, "SERVICENAME='%s'\n", ServiceName);
- }
- if (DiscType != ETH_PPPOE_DISCOVERY || SessType != ETH_PPPOE_SESSION) {
- fprintf(stderr, " PPPOE_EXTRA='-f %x:%x'\n", DiscType, SessType);
- }
- return 0;
-}
-
-#endif
-/**********************************************************************
-*%FUNCTION: sysErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to syslog.
-***********************************************************************/
-void
-sysErr(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
-}
diff --git a/mdk-stage1/rp-pppoe/src/pppoe.c b/mdk-stage1/rp-pppoe/src/pppoe.c
deleted file mode 100644
index 8ffe37248..000000000
--- a/mdk-stage1/rp-pppoe/src/pppoe.c
+++ /dev/null
@@ -1,834 +0,0 @@
-/***********************************************************************
-*
-* pppoe.c
-*
-* Implementation of user-space PPPoE redirector for Linux.
-*
-* Copyright (C) 2000-2001 by Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-***********************************************************************/
-
-static char const RCSID[] =
-"$Id$";
-
-#include "pppoe.h"
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#ifdef HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef USE_LINUX_PACKET
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#endif
-
-#include <signal.h>
-
-#ifdef HAVE_N_HDLC
-#ifndef N_HDLC
-#include <linux/termios.h>
-#endif
-#endif
-
-/* Default interface if no -I option given */
-#define DEFAULT_IF "eth0"
-
-/* Global variables -- options */
-int optInactivityTimeout = 0; /* Inactivity timeout */
-int optClampMSS = 0; /* Clamp MSS to this value */
-int optSkipSession = 0; /* Perform discovery, print session info
- and exit */
-
-PPPoEConnection *Connection = NULL; /* Must be global -- used
- in signal handler */
-/***********************************************************************
-*%FUNCTION: sendSessionPacket
-*%ARGUMENTS:
-* conn -- PPPoE connection
-* packet -- the packet to send
-* len -- length of data to send
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Transmits a session packet to the peer.
-***********************************************************************/
-void
-sendSessionPacket(PPPoEConnection *conn, PPPoEPacket *packet, int len)
-{
- packet->length = htons(len);
- if (optClampMSS) {
- clampMSS(packet, "outgoing", optClampMSS);
- }
- if (sendPacket(conn, conn->sessionSocket, packet, len + HDR_SIZE) < 0) {
- exit(EXIT_FAILURE);
- }
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, packet, "SENT");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-}
-
-#ifdef USE_BPF
-/**********************************************************************
-*%FUNCTION: sessionDiscoveryPacket
-*%ARGUMENTS:
-* packet -- the discovery packet that was received
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* We got a discovery packet during the session stage. This most likely
-* means a PADT.
-*
-* The BSD version uses a single socket for both discovery and session
-* packets. When a packet comes in over the wire once we are in
-* session mode, either syncReadFromEth() or asyncReadFromEth() will
-* have already read the packet and determined it to be a discovery
-* packet before passing it here.
-***********************************************************************/
-void
-sessionDiscoveryPacket(PPPoEPacket *packet)
-{
- /* Sanity check */
- if (packet->code != CODE_PADT) {
- return;
- }
-
- /* It's a PADT, all right. Is it for us? */
- if (packet->session != Connection->session) {
- /* Nope, ignore it */
- return;
- }
-
- syslog(LOG_INFO,
- "Session terminated -- received PADT from access concentrator");
- parsePacket(packet, parseLogErrs, NULL);
- exit(EXIT_SUCCESS);
-}
-#else
-/**********************************************************************
-*%FUNCTION: sessionDiscoveryPacket
-*%ARGUMENTS:
-* conn -- PPPoE connection
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* We got a discovery packet during the session stage. This most likely
-* means a PADT.
-***********************************************************************/
-void
-sessionDiscoveryPacket(PPPoEConnection *conn)
-{
- PPPoEPacket packet;
- int len;
-
- if (receivePacket(conn->discoverySocket, &packet, &len) < 0) {
- return;
- }
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- return;
- }
-
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "RCVD");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-
- if (packet.code != CODE_PADT) {
- /* Not PADT; ignore it */
- return;
- }
-
- /* It's a PADT, all right. Is it for us? */
- if (packet.session != conn->session) {
- /* Nope, ignore it */
- return;
- }
-
- syslog(LOG_INFO,
- "Session terminated -- received PADT from peer");
- parsePacket(&packet, parseLogErrs, NULL);
- exit(EXIT_SUCCESS);
-}
-#endif /* USE_BPF */
-
-/**********************************************************************
-*%FUNCTION: session
-*%ARGUMENTS:
-* conn -- PPPoE connection info
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Handles the "session" phase of PPPoE
-***********************************************************************/
-void
-session(PPPoEConnection *conn)
-{
- fd_set readable;
- PPPoEPacket packet;
- struct timeval tv;
- struct timeval *tvp = NULL;
- int maxFD = 0;
- int r;
-
- /* Open a session socket */
- conn->sessionSocket = openInterface(conn->ifName, Eth_PPPOE_Session, conn->myEth);
-
- /* Prepare for select() */
- if (conn->sessionSocket > maxFD) maxFD = conn->sessionSocket;
- if (conn->discoverySocket > maxFD) maxFD = conn->discoverySocket;
- maxFD++;
-
- /* Fill in the constant fields of the packet to save time */
- memcpy(packet.ethHdr.h_dest, conn->peerEth, ETH_ALEN);
- memcpy(packet.ethHdr.h_source, conn->myEth, ETH_ALEN);
- packet.ethHdr.h_proto = htons(Eth_PPPOE_Session);
- packet.ver = 1;
- packet.type = 1;
- packet.code = CODE_SESS;
- packet.session = conn->session;
-
- initPPP();
-
-#ifdef USE_BPF
- /* check for buffered session data */
- while (BPF_BUFFER_HAS_DATA) {
- if (conn->synchronous) {
- syncReadFromEth(conn, conn->sessionSocket, optClampMSS);
- } else {
- asyncReadFromEth(conn, conn->sessionSocket, optClampMSS);
- }
- }
-#endif
-
- for (;;) {
- if (optInactivityTimeout > 0) {
- tv.tv_sec = optInactivityTimeout;
- tv.tv_usec = 0;
- tvp = &tv;
- }
- FD_ZERO(&readable);
- FD_SET(0, &readable); /* ppp packets come from stdin */
- if (conn->discoverySocket >= 0) {
- FD_SET(conn->discoverySocket, &readable);
- }
- FD_SET(conn->sessionSocket, &readable);
- while(1) {
- r = select(maxFD, &readable, NULL, NULL, tvp);
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
- fatalSys("select (session)");
- }
- if (r == 0) { /* Inactivity timeout */
- syslog(LOG_ERR, "Inactivity timeout... something wicked happened");
- sendPADT(conn, "RP-PPPoE: Inactivity timeout");
- exit(EXIT_FAILURE);
- }
-
- /* Handle ready sockets */
- if (FD_ISSET(0, &readable)) {
- if (conn->synchronous) {
- syncReadFromPPP(conn, &packet);
- } else {
- asyncReadFromPPP(conn, &packet);
- }
- }
-
- if (FD_ISSET(conn->sessionSocket, &readable)) {
- do {
- if (conn->synchronous) {
- syncReadFromEth(conn, conn->sessionSocket, optClampMSS);
- } else {
- asyncReadFromEth(conn, conn->sessionSocket, optClampMSS);
- }
- } while (BPF_BUFFER_HAS_DATA);
- }
-
-#ifndef USE_BPF
- /* BSD uses a single socket, see *syncReadFromEth() */
- /* for calls to sessionDiscoveryPacket() */
- if (conn->discoverySocket >= 0) {
- if (FD_ISSET(conn->discoverySocket, &readable)) {
- sessionDiscoveryPacket(conn);
- }
- }
-#endif
-
- }
-}
-
-
-/***********************************************************************
-*%FUNCTION: sigPADT
-*%ARGUMENTS:
-* src -- signal received
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* If an established session exists send PADT to terminate from session
-* from our end
-***********************************************************************/
-void
-sigPADT(int src)
-{
- syslog(LOG_DEBUG,"Received signal %d.",(int)src);
- sendPADT(Connection, "RP-PPPoE: Received signal");
- exit(EXIT_SUCCESS);
-}
-
-/**********************************************************************
-*%FUNCTION: usage
-*%ARGUMENTS:
-* argv0 -- program name
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints usage information and exits.
-***********************************************************************/
-void
-usage(char const *argv0)
-{
- fprintf(stderr, "Usage: %s [options]\n", argv0);
- fprintf(stderr, "Options:\n");
-#ifdef USE_BPF
- fprintf(stderr, " -I if_name -- Specify interface (REQUIRED)\n");
-#else
- fprintf(stderr, " -I if_name -- Specify interface (default %s.)\n",
- DEFAULT_IF);
-#endif
- fprintf(stderr, " -T timeout -- Specify inactivity timeout in seconds.\n");
- fprintf(stderr, " -D filename -- Log debugging information in filename.\n");
- fprintf(stderr, " -V -- Print version and exit.\n");
- fprintf(stderr, " -A -- Print access concentrator names and exit.\n");
- fprintf(stderr, " -S name -- Set desired service name.\n");
- fprintf(stderr, " -C name -- Set desired access concentrator name.\n");
- fprintf(stderr, " -U -- Use Host-Unique to allow multiple PPPoE sessions.\n");
- fprintf(stderr, " -s -- Use synchronous PPP encapsulation.\n");
- fprintf(stderr, " -m MSS -- Clamp incoming and outgoing MSS options.\n");
- fprintf(stderr, " -p pidfile -- Write process-ID to pidfile.\n");
- fprintf(stderr, " -e sess:mac -- Skip discovery phase; use existing session.\n");
- fprintf(stderr, " -n -- Do not open discovery socket.\n");
- fprintf(stderr, " -k -- Kill a session with PADT (requires -e)\n");
- fprintf(stderr, " -d -- Perform discovery, print session info and exit.\n");
- fprintf(stderr, " -f disc:sess -- Set Ethernet frame types (hex).\n");
- fprintf(stderr, " -h -- Print usage information.\n\n");
- fprintf(stderr, "PPPoE Version %s, Copyright (C) 2001 Roaring Penguin Software Inc.\n", VERSION);
- fprintf(stderr, "PPPoE comes with ABSOLUTELY NO WARRANTY.\n");
- fprintf(stderr, "This is free software, and you are welcome to redistribute it under the terms\n");
- fprintf(stderr, "of the GNU General Public License, version 2 or any later version.\n");
- fprintf(stderr, "http://www.roaringpenguin.com\n");
- exit(EXIT_SUCCESS);
-}
-
-/**********************************************************************
-*%FUNCTION: main
-*%ARGUMENTS:
-* argc, argv -- count and values of command-line arguments
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Main program
-***********************************************************************/
-int
-main(int argc, char *argv[])
-{
- int opt;
- int n;
- unsigned int m[6]; /* MAC address in -e option */
- unsigned int s; /* Temporary to hold session */
- FILE *pidfile;
- unsigned int discoveryType, sessionType;
-
- PPPoEConnection conn;
-
-#ifdef HAVE_N_HDLC
- int disc = N_HDLC;
- long flags;
-#endif
-
- /* Initialize connection info */
- memset(&conn, 0, sizeof(conn));
- conn.discoverySocket = -1;
- conn.sessionSocket = -1;
-
- /* For signal handler */
- Connection = &conn;
-
- /* Initialize syslog */
- openlog("pppoe", LOG_PID, LOG_DAEMON);
-
- while((opt = getopt(argc, argv, "I:VAT:D:hS:C:Usm:np:e:kdf:")) != -1) {
- switch(opt) {
- case 'f':
- if (sscanf(optarg, "%x:%x", &discoveryType, &sessionType) != 2) {
- fprintf(stderr, "Illegal argument to -f: Should be disc:sess in hex\n");
- exit(EXIT_FAILURE);
- }
- Eth_PPPOE_Discovery = (UINT16_t) discoveryType;
- Eth_PPPOE_Session = (UINT16_t) sessionType;
- break;
- case 'd':
- optSkipSession = 1;
- break;
-
- case 'k':
- conn.killSession = 1;
- break;
-
- case 'n':
- /* Do not even open a discovery socket -- used when invoked
- by pppoe-server */
- conn.noDiscoverySocket = 1;
- break;
-
- case 'e':
- /* Existing session: "sess:xx:yy:zz:aa:bb:cc" where "sess" is
- session-ID, and xx:yy:zz:aa:bb:cc is MAC-address of peer */
- n = sscanf(optarg, "%u:%2x:%2x:%2x:%2x:%2x:%2x",
- &s, &m[0], &m[1], &m[2], &m[3], &m[4], &m[5]);
- if (n != 7) {
- fprintf(stderr, "Illegal argument to -e: Should be sess:xx:yy:zz:aa:bb:cc\n");
- exit(EXIT_FAILURE);
- }
-
- /* Copy MAC address of peer */
- for (n=0; n<6; n++) {
- conn.peerEth[n] = (unsigned char) m[n];
- }
-
- /* Convert session */
- conn.session = htons(s);
-
- /* Skip discovery phase! */
- conn.skipDiscovery = 1;
- break;
-
- case 'p':
- pidfile = fopen(optarg, "w");
- if (pidfile) {
- fprintf(pidfile, "%lu\n", (unsigned long) getpid());
- fclose(pidfile);
- }
- break;
- case 'S':
- SET_STRING(conn.serviceName, optarg);
- break;
- case 'C':
- SET_STRING(conn.acName, optarg);
- break;
- case 's':
- conn.synchronous = 1;
- break;
- case 'U':
- conn.useHostUniq = 1;
- break;
- case 'D':
- conn.debugFile = fopen(optarg, "w");
- if (!conn.debugFile) {
- fprintf(stderr, "Could not open %s: %s\n",
- optarg, strerror(errno));
- exit(EXIT_FAILURE);
- }
- fprintf(conn.debugFile, "rp-pppoe-%s\n", VERSION);
- fflush(conn.debugFile);
- break;
- case 'T':
- optInactivityTimeout = (int) strtol(optarg, NULL, 10);
- if (optInactivityTimeout < 0) {
- optInactivityTimeout = 0;
- }
- break;
- case 'm':
- optClampMSS = (int) strtol(optarg, NULL, 10);
- if (optClampMSS < 536) {
- fprintf(stderr, "-m: %d is too low (min 536)\n", optClampMSS);
- exit(EXIT_FAILURE);
- }
- if (optClampMSS > 1452) {
- fprintf(stderr, "-m: %d is too high (max 1452)\n", optClampMSS);
- exit(EXIT_FAILURE);
- }
- break;
- case 'I':
- SET_STRING(conn.ifName, optarg);
- break;
- case 'V':
- printf("Roaring Penguin PPPoE Version %s\n", VERSION);
- exit(EXIT_SUCCESS);
- case 'A':
- conn.printACNames = 1;
- break;
- case 'h':
- usage(argv[0]);
- break;
- default:
- usage(argv[0]);
- }
- }
-
- /* Pick a default interface name */
- if (!conn.ifName) {
-#ifdef USE_BPF
- fprintf(stderr, "No interface specified (-I option)\n");
- exit(EXIT_FAILURE);
-#else
- SET_STRING(conn.ifName, DEFAULT_IF);
-#endif
- }
-
- /* Set signal handlers: send PADT on TERM, HUP and INT */
- if (!conn.printACNames) {
- signal(SIGTERM, sigPADT);
- signal(SIGHUP, sigPADT);
- signal(SIGINT, sigPADT);
-
-#ifdef HAVE_N_HDLC
- if (conn.synchronous) {
- if (ioctl(0, TIOCSETD, &disc) < 0) {
- printErr("Unable to set line discipline to N_HDLC -- synchronous mode probably will fail");
- } else {
- syslog(LOG_INFO,
- "Changed pty line discipline to N_HDLC for synchronous mode");
- }
- /* There is a bug in Linux's select which returns a descriptor
- * as readable if N_HDLC line discipline is on, even if
- * it isn't really readable. This return happens only when
- * select() times out. To avoid blocking forever in read(),
- * make descriptor 0 non-blocking */
- flags = fcntl(0, F_GETFL);
- if (flags < 0) fatalSys("fcntl(F_GETFL)");
- if (fcntl(0, F_SETFL, (long) flags | O_NONBLOCK) < 0) {
- fatalSys("fcntl(F_SETFL)");
- }
- }
-#endif
-
- }
-
- discovery(&conn);
- if (optSkipSession) {
- printf("%u:%02x:%02x:%02x:%02x:%02x:%02x\n",
- ntohs(conn.session),
- conn.peerEth[0],
- conn.peerEth[1],
- conn.peerEth[2],
- conn.peerEth[3],
- conn.peerEth[4],
- conn.peerEth[5]);
- exit(EXIT_SUCCESS);
- }
- session(&conn);
- return 0;
-}
-
-/**********************************************************************
-*%FUNCTION: fatalSys
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to stderr and syslog and exits.
-***********************************************************************/
-void
-fatalSys(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
- sendPADT(Connection, "RP-PPPoE: System call error");
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: sysErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to syslog.
-***********************************************************************/
-void
-sysErr(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
-}
-
-/**********************************************************************
-*%FUNCTION: rp_fatal
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog and exits.
-***********************************************************************/
-void
-rp_fatal(char const *str)
-{
- char buf[1024];
- printErr(str);
- sprintf(buf, "RP-PPPoE: %.256s", str);
- sendPADT(Connection, buf);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: asyncReadFromEth
-*%ARGUMENTS:
-* conn -- PPPoE connection info
-* sock -- Ethernet socket
-* clampMss -- if non-zero, do MSS-clamping
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Reads a packet from the Ethernet interface and sends it to async PPP
-* device.
-***********************************************************************/
-void
-asyncReadFromEth(PPPoEConnection *conn, int sock, int clampMss)
-{
- PPPoEPacket packet;
- int len;
- int plen;
- int i;
- unsigned char pppBuf[4096];
- unsigned char *ptr = pppBuf;
- unsigned char c;
- UINT16_t fcs;
- unsigned char header[2] = {FRAME_ADDR, FRAME_CTRL};
- unsigned char tail[2];
-#ifdef USE_BPF
- int type;
-#endif
-
- if (receivePacket(sock, &packet, &len) < 0) {
- return;
- }
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- return;
- }
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "RCVD");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-
-#ifdef USE_BPF
- /* Make sure this is a session packet before processing further */
- type = etherType(&packet);
- if (type == Eth_PPPOE_Discovery) {
- sessionDiscoveryPacket(&packet);
- } else if (type != Eth_PPPOE_Session) {
- return;
- }
-#endif
-
- /* Sanity check */
- if (packet.code != CODE_SESS) {
- syslog(LOG_ERR, "Unexpected packet code %d", (int) packet.code);
- return;
- }
- if (packet.ver != 1) {
- syslog(LOG_ERR, "Unexpected packet version %d", (int) packet.ver);
- return;
- }
- if (packet.type != 1) {
- syslog(LOG_ERR, "Unexpected packet type %d", (int) packet.type);
- return;
- }
- if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) {
- /* Not for us -- must be another session. This is not an error,
- so don't log anything. */
- return;
- }
-
- if (packet.session != conn->session) {
- /* Not for us -- must be another session. This is not an error,
- so don't log anything. */
- return;
- }
- plen = ntohs(packet.length);
- if (plen + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
- (int) plen, (int) len);
- return;
- }
-
- /* Clamp MSS */
- if (clampMss) {
- clampMSS(&packet, "incoming", clampMss);
- }
-
- /* Compute FCS */
- fcs = pppFCS16(PPPINITFCS16, header, 2);
- fcs = pppFCS16(fcs, packet.payload, plen) ^ 0xffff;
- tail[0] = fcs & 0x00ff;
- tail[1] = (fcs >> 8) & 0x00ff;
-
- /* Build a buffer to send to PPP */
- *ptr++ = FRAME_FLAG;
- *ptr++ = FRAME_ADDR;
- *ptr++ = FRAME_ESC;
- *ptr++ = FRAME_CTRL ^ FRAME_ENC;
-
- for (i=0; i<plen; i++) {
- c = packet.payload[i];
- if (c == FRAME_FLAG || c == FRAME_ADDR || c == FRAME_ESC || c < 0x20) {
- *ptr++ = FRAME_ESC;
- *ptr++ = c ^ FRAME_ENC;
- } else {
- *ptr++ = c;
- }
- }
- for (i=0; i<2; i++) {
- c = tail[i];
- if (c == FRAME_FLAG || c == FRAME_ADDR || c == FRAME_ESC || c < 0x20) {
- *ptr++ = FRAME_ESC;
- *ptr++ = c ^ FRAME_ENC;
- } else {
- *ptr++ = c;
- }
- }
- *ptr++ = FRAME_FLAG;
-
- /* Ship it out */
- if (write(1, pppBuf, (ptr-pppBuf)) < 0) {
- fatalSys("asyncReadFromEth: write");
- }
-}
-
-/**********************************************************************
-*%FUNCTION: syncReadFromEth
-*%ARGUMENTS:
-* conn -- PPPoE connection info
-* sock -- Ethernet socket
-* clampMss -- if true, clamp MSS.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Reads a packet from the Ethernet interface and sends it to sync PPP
-* device.
-***********************************************************************/
-void
-syncReadFromEth(PPPoEConnection *conn, int sock, int clampMss)
-{
- PPPoEPacket packet;
- int len;
- int plen;
- struct iovec vec[2];
- unsigned char dummy[2];
-#ifdef USE_BPF
- int type;
-#endif
-
- if (receivePacket(sock, &packet, &len) < 0) {
- return;
- }
-
- /* Check length */
- if (ntohs(packet.length) + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- return;
- }
- if (conn->debugFile) {
- dumpPacket(conn->debugFile, &packet, "RCVD");
- fprintf(conn->debugFile, "\n");
- fflush(conn->debugFile);
- }
-
-#ifdef USE_BPF
- /* Make sure this is a session packet before processing further */
- type = etherType(&packet);
- if (type == Eth_PPPOE_Discovery) {
- sessionDiscoveryPacket(&packet);
- } else if (type != Eth_PPPOE_Session) {
- return;
- }
-#endif
-
- /* Sanity check */
- if (packet.code != CODE_SESS) {
- syslog(LOG_ERR, "Unexpected packet code %d", (int) packet.code);
- return;
- }
- if (packet.ver != 1) {
- syslog(LOG_ERR, "Unexpected packet version %d", (int) packet.ver);
- return;
- }
- if (packet.type != 1) {
- syslog(LOG_ERR, "Unexpected packet type %d", (int) packet.type);
- return;
- }
- if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) {
- /* Not for us -- must be another session. This is not an error,
- so don't log anything. */
- return;
- }
- if (packet.session != conn->session) {
- /* Not for us -- must be another session. This is not an error,
- so don't log anything. */
- return;
- }
- plen = ntohs(packet.length);
- if (plen + HDR_SIZE > len) {
- syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
- (int) plen, (int) len);
- return;
- }
-
- /* Clamp MSS */
- if (clampMss) {
- clampMSS(&packet, "incoming", clampMss);
- }
-
- /* Ship it out */
- vec[0].iov_base = (void *) dummy;
- dummy[0] = FRAME_ADDR;
- dummy[1] = FRAME_CTRL;
- vec[0].iov_len = 2;
- vec[1].iov_base = (void *) packet.payload;
- vec[1].iov_len = plen;
-
- if (writev(1, vec, 2) < 0) {
- fatalSys("syncReadFromEth: write");
- }
-}
-
diff --git a/mdk-stage1/rp-pppoe/src/pppoe.h b/mdk-stage1/rp-pppoe/src/pppoe.h
deleted file mode 100644
index da300c17d..000000000
--- a/mdk-stage1/rp-pppoe/src/pppoe.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/***********************************************************************
-*
-* pppoe.h
-*
-* Declaration of various PPPoE constants
-*
-* Copyright (C) 2000 Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-* $Id$
-*
-***********************************************************************/
-
-#ifdef __sun__
-#define __EXTENSIONS__
-#endif
-
-#include "config.h"
-
-#if defined(HAVE_NETPACKET_PACKET_H) || defined(HAVE_LINUX_IF_PACKET_H)
-#define _POSIX_SOURCE 1 /* For sigaction defines */
-#endif
-
-#include <stdio.h> /* For FILE */
-#include <sys/types.h> /* For pid_t */
-
-/* How do we access raw Ethernet devices? */
-#undef USE_LINUX_PACKET
-#undef USE_BPF
-
-#if defined(HAVE_NETPACKET_PACKET_H) || defined(HAVE_LINUX_IF_PACKET_H)
-#define USE_LINUX_PACKET 1
-#elif defined(HAVE_NET_BPF_H)
-#define USE_BPF 1
-#elif defined(HAVE_SYS_DLPI_H)
-#define USE_DLPI
-#endif
-
-/* Sanity check */
-#if !defined(USE_BPF) && !defined(USE_LINUX_PACKET) && !defined(USE_DLPI)
-#error Unknown method for accessing raw Ethernet frames
-#endif
-
-#ifdef HAVE_SYS_CDEFS_H
-#include <sys/cdefs.h>
-#endif
-
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-/* Ugly header files on some Linux boxes... */
-#if defined(HAVE_LINUX_IF_H)
-#include <linux/if.h>
-#elif defined(HAVE_NET_IF_H)
-#include <net/if.h>
-#endif
-
-#ifdef HAVE_NET_IF_TYPES_H
-#include <net/if_types.h>
-#endif
-
-#ifdef HAVE_NET_IF_DL_H
-#include <net/if_dl.h>
-#endif
-
-/* I'm not sure why this is needed... I do not have OpenBSD */
-#if defined(__OpenBSD__)
-#include <net/ppp_defs.h>
-#include <net/if_ppp.h>
-#endif
-
-#ifdef USE_BPF
-extern int bpfSize;
-struct PPPoEPacketStruct;
-void sessionDiscoveryPacket(struct PPPoEPacketStruct *packet);
-#define BPF_BUFFER_IS_EMPTY (bpfSize <= 0)
-#define BPF_BUFFER_HAS_DATA (bpfSize > 0)
-#define ethhdr ether_header
-#define h_dest ether_dhost
-#define h_source ether_shost
-#define h_proto ether_type
-#define ETH_DATA_LEN ETHERMTU
-#define ETH_ALEN ETHER_ADDR_LEN
-#else
-#undef USE_BPF
-#define BPF_BUFFER_IS_EMPTY 1
-#define BPF_BUFFER_HAS_DATA 0
-#endif
-
-#ifdef USE_DLPI
-#include <sys/ethernet.h>
-#define ethhdr ether_header
-#define ETH_DATA_LEN ETHERMTU
-#define ETH_ALEN ETHERADDRL
-#define h_dest ether_dhost.ether_addr_octet
-#define h_source ether_shost.ether_addr_octet
-#define h_proto ether_type
-
-/* cloned from dltest.h */
-#define MAXDLBUF 8192
-#define MAXDLADDR 1024
-#define MAXWAIT 15
-#define OFFADDR(s, n) (u_char*)((char*)(s) + (int)(n))
-#define CASERET(s) case s: return ("s")
-
-#endif
-
-/* Define various integer types -- assumes a char is 8 bits */
-#if SIZEOF_UNSIGNED_SHORT == 2
-typedef unsigned short UINT16_t;
-#elif SIZEOF_UNSIGNED_INT == 2
-typedef unsigned int UINT16_t;
-#else
-#error Could not find a 16-bit integer type
-#endif
-
-#if SIZEOF_UNSIGNED_SHORT == 4
-typedef unsigned short UINT32_t;
-#elif SIZEOF_UNSIGNED_INT == 4
-typedef unsigned int UINT32_t;
-#elif SIZEOF_UNSIGNED_LONG == 4
-typedef unsigned long UINT32_t;
-#else
-#error Could not find a 16-bit integer type
-#endif
-
-#ifdef HAVE_LINUX_IF_ETHER_H
-#include <linux/if_ether.h>
-#endif
-
-#include <netinet/in.h>
-
-#ifdef HAVE_NETINET_IF_ETHER_H
-#include <sys/types.h>
-
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifndef HAVE_SYS_DLPI_H
-#include <netinet/if_ether.h>
-#endif
-#endif
-
-
-
-/* Ethernet frame types according to RFC 2516 */
-#define ETH_PPPOE_DISCOVERY 0x8863
-#define ETH_PPPOE_SESSION 0x8864
-
-/* But some brain-dead peers disobey the RFC, so frame types are variables */
-extern UINT16_t Eth_PPPOE_Discovery;
-extern UINT16_t Eth_PPPOE_Session;
-
-/* PPPoE codes */
-#define CODE_PADI 0x09
-#define CODE_PADO 0x07
-#define CODE_PADR 0x19
-#define CODE_PADS 0x65
-#define CODE_PADT 0xA7
-#define CODE_SESS 0x00
-
-/* PPPoE Tags */
-#define TAG_END_OF_LIST 0x0000
-#define TAG_SERVICE_NAME 0x0101
-#define TAG_AC_NAME 0x0102
-#define TAG_HOST_UNIQ 0x0103
-#define TAG_AC_COOKIE 0x0104
-#define TAG_VENDOR_SPECIFIC 0x0105
-#define TAG_RELAY_SESSION_ID 0x0110
-#define TAG_SERVICE_NAME_ERROR 0x0201
-#define TAG_AC_SYSTEM_ERROR 0x0202
-#define TAG_GENERIC_ERROR 0x0203
-
-/* Discovery phase states */
-#define STATE_SENT_PADI 0
-#define STATE_RECEIVED_PADO 1
-#define STATE_SENT_PADR 2
-#define STATE_SESSION 3
-#define STATE_TERMINATED 4
-
-/* How many PADI/PADS attempts? */
-#define MAX_PADI_ATTEMPTS 3
-
-/* Initial timeout for PADO/PADS */
-#define PADI_TIMEOUT 5
-
-/* States for scanning PPP frames */
-#define STATE_WAITFOR_FRAME_ADDR 0
-#define STATE_DROP_PROTO 1
-#define STATE_BUILDING_PACKET 2
-
-/* Special PPP frame characters */
-#define FRAME_ESC 0x7D
-#define FRAME_FLAG 0x7E
-#define FRAME_ADDR 0xFF
-#define FRAME_CTRL 0x03
-#define FRAME_ENC 0x20
-
-#define IPV4ALEN 4
-#define SMALLBUF 256
-
-/* A PPPoE Packet, including Ethernet headers */
-typedef struct PPPoEPacketStruct {
- struct ethhdr ethHdr; /* Ethernet header */
-#ifdef PACK_BITFIELDS_REVERSED
- unsigned int type:4; /* PPPoE Type (must be 1) */
- unsigned int ver:4; /* PPPoE Version (must be 1) */
-#else
- unsigned int ver:4; /* PPPoE Version (must be 1) */
- unsigned int type:4; /* PPPoE Type (must be 1) */
-#endif
- unsigned int code:8; /* PPPoE code */
- unsigned int session:16; /* PPPoE session */
- unsigned int length:16; /* Payload length */
- unsigned char payload[ETH_DATA_LEN]; /* A bit of room to spare */
-} PPPoEPacket;
-
-/* Header size of a PPPoE packet */
-#define PPPOE_OVERHEAD 6 /* type, code, session, length */
-#define HDR_SIZE (sizeof(struct ethhdr) + PPPOE_OVERHEAD)
-#define MAX_PPPOE_PAYLOAD (ETH_DATA_LEN - PPPOE_OVERHEAD)
-#define MAX_PPPOE_MTU (MAX_PPPOE_PAYLOAD - 2)
-
-/* PPPoE Tag */
-
-typedef struct PPPoETagStruct {
- unsigned int type:16; /* tag type */
- unsigned int length:16; /* Length of payload */
- unsigned char payload[ETH_DATA_LEN]; /* A LOT of room to spare */
-} PPPoETag;
-/* Header size of a PPPoE tag */
-#define TAG_HDR_SIZE 4
-
-/* Chunk to read from stdin */
-#define READ_CHUNK 4096
-
-/* Function passed to parsePacket */
-typedef void ParseFunc(UINT16_t type,
- UINT16_t len,
- unsigned char *data,
- void *extra);
-
-/* Structures used by PPPoE server */
-struct ClientSession {
- pid_t pid; /* PID of child handling session */
- unsigned char ip[IPV4ALEN]; /* IP address of peer */
- UINT16_t sess; /* Session number */
- unsigned char eth[ETH_ALEN]; /* Peer's Ethernet address */
- int recvdPADT; /* Peer sent a PADT */
-};
-
-#define PPPINITFCS16 0xffff /* Initial FCS value */
-
-/* Keep track of the state of a connection -- collect everything in
- one spot */
-
-typedef struct PPPoEConnectionStruct {
- int discoveryState; /* Where we are in discovery */
- int discoverySocket; /* Raw socket for discovery frames */
- int sessionSocket; /* Raw socket for session frames */
- unsigned char myEth[ETH_ALEN]; /* My MAC address */
- unsigned char peerEth[ETH_ALEN]; /* Peer's MAC address */
- UINT16_t session; /* Session ID */
- char *ifName; /* Interface name */
- char *serviceName; /* Desired service name, if any */
- char *acName; /* Desired AC name, if any */
- int synchronous; /* Use synchronous PPP */
- int useHostUniq; /* Use Host-Uniq tag */
- int printACNames; /* Just print AC names */
- int skipDiscovery; /* Skip discovery */
- int noDiscoverySocket; /* Don't even open discovery socket */
- int killSession; /* Kill session and exit */
- FILE *debugFile; /* Debug file for dumping packets */
- int numPADOs; /* Number of PADO packets received */
- PPPoETag cookie; /* We have to send this if we get it */
- PPPoETag relayId; /* Ditto */
-} PPPoEConnection;
-
-/* Structure used to determine acceptable PADO or PADS packet */
-struct PacketCriteria {
- PPPoEConnection *conn;
- int acNameOK;
- int serviceNameOK;
-};
-
-/* Function Prototypes */
-UINT16_t etherType(PPPoEPacket *packet);
-int openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr);
-int sendPacket(PPPoEConnection *conn, int sock, PPPoEPacket *pkt, int size);
-int receivePacket(int sock, PPPoEPacket *pkt, int *size);
-void fatalSys(char const *str);
-void rp_fatal(char const *str);
-void printErr(char const *str);
-void sysErr(char const *str);
-void dumpPacket(FILE *fp, PPPoEPacket *packet, char const *dir);
-void dumpHex(FILE *fp, unsigned char const *buf, int len);
-int parsePacket(PPPoEPacket *packet, ParseFunc *func, void *extra);
-void parseLogErrs(UINT16_t typ, UINT16_t len, unsigned char *data, void *xtra);
-void syncReadFromPPP(PPPoEConnection *conn, PPPoEPacket *packet);
-void asyncReadFromPPP(PPPoEConnection *conn, PPPoEPacket *packet);
-void asyncReadFromEth(PPPoEConnection *conn, int sock, int clampMss);
-void syncReadFromEth(PPPoEConnection *conn, int sock, int clampMss);
-char *strDup(char const *str);
-void sendPADT(PPPoEConnection *conn, char const *msg);
-void sendSessionPacket(PPPoEConnection *conn,
- PPPoEPacket *packet, int len);
-void initPPP(void);
-void clampMSS(PPPoEPacket *packet, char const *dir, int clampMss);
-UINT16_t computeTCPChecksum(unsigned char *ipHdr, unsigned char *tcpHdr);
-UINT16_t pppFCS16(UINT16_t fcs, unsigned char *cp, int len);
-void discovery(PPPoEConnection *conn);
-unsigned char *findTag(PPPoEPacket *packet, UINT16_t tagType,
- PPPoETag *tag);
-
-#define SET_STRING(var, val) do { if (var) free(var); var = strDup(val); } while(0);
-
-#define CHECK_ROOM(cursor, start, len) \
-do {\
- if (((cursor)-(start))+(len) > MAX_PPPOE_PAYLOAD) { \
- syslog(LOG_ERR, "Would create too-long packet"); \
- return; \
- } \
-} while(0)
-
-/* True if Ethernet address is broadcast or multicast */
-#define NOT_UNICAST(e) ((e[0] & 0x01) != 0)
-#define BROADCAST(e) ((e[0] & e[1] & e[2] & e[3] & e[4] & e[5]) == 0xFF)
-#define NOT_BROADCAST(e) ((e[0] & e[1] & e[2] & e[3] & e[4] & e[5]) != 0xFF)
diff --git a/mdk-stage1/rp-pppoe/src/relay.c b/mdk-stage1/rp-pppoe/src/relay.c
deleted file mode 100644
index 9738cb8a8..000000000
--- a/mdk-stage1/rp-pppoe/src/relay.c
+++ /dev/null
@@ -1,1541 +0,0 @@
-/***********************************************************************
-*
-* relay.c
-*
-* Implementation of PPPoE relay
-*
-* Copyright (C) 2001 Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-* $Id$
-*
-***********************************************************************/
-static char const RCSID[] =
-"$Id$";
-
-#define _GNU_SOURCE 1 /* For SA_RESTART */
-
-#include "relay.h"
-
-#include <signal.h>
-
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#ifdef HAVE_SYS_UIO_H
-#include <sys/uio.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-
-/* Interfaces (max MAX_INTERFACES) */
-PPPoEInterface Interfaces[MAX_INTERFACES];
-int NumInterfaces;
-
-/* Relay info */
-int NumSessions;
-int MaxSessions;
-PPPoESession *AllSessions;
-PPPoESession *FreeSessions;
-PPPoESession *ActiveSessions;
-
-SessionHash *AllHashes;
-SessionHash *FreeHashes;
-SessionHash *Buckets[HASHTAB_SIZE];
-
-volatile unsigned int Epoch = 0;
-volatile unsigned int CleanCounter = 0;
-
-/* How often to clean up stale sessions? */
-#define MIN_CLEAN_PERIOD 30 /* Minimum period to run cleaner */
-#define TIMEOUT_DIVISOR 20 /* How often to run cleaner per timeout period */
-unsigned int CleanPeriod = MIN_CLEAN_PERIOD;
-
-/* How long a session can be idle before it is cleaned up? */
-unsigned int IdleTimeout = MIN_CLEAN_PERIOD * TIMEOUT_DIVISOR;
-
-/* Pipe for breaking select() to initiate periodic cleaning */
-int CleanPipe[2];
-
-/* Our relay: if_index followed by peer_mac */
-#define MY_RELAY_TAG_LEN (sizeof(int) + ETH_ALEN)
-
-/* Hack for daemonizing */
-#define CLOSEFD 64
-
-/**********************************************************************
-*%FUNCTION: keepDescriptor
-*%ARGUMENTS:
-* fd -- a file descriptor
-*%RETURNS:
-* 1 if descriptor should NOT be closed during daemonizing; 0 otherwise.
-***********************************************************************/
-static int
-keepDescriptor(int fd)
-{
- int i;
- if (fd == CleanPipe[0] || fd == CleanPipe[1]) return 1;
- for (i=0; i<NumInterfaces; i++) {
- if (fd == Interfaces[i].discoverySock ||
- fd == Interfaces[i].sessionSock) return 1;
- }
- return 0;
-}
-
-/**********************************************************************
-*%FUNCTION: addTag
-*%ARGUMENTS:
-* packet -- a PPPoE packet
-* tag -- tag to add
-*%RETURNS:
-* -1 if no room in packet; number of bytes added otherwise.
-*%DESCRIPTION:
-* Inserts a tag as the first tag in a PPPoE packet.
-***********************************************************************/
-int
-addTag(PPPoEPacket *packet, PPPoETag const *tag)
-{
- return insertBytes(packet, packet->payload, tag,
- ntohs(tag->length) + TAG_HDR_SIZE);
-}
-
-/**********************************************************************
-*%FUNCTION: insertBytes
-*%ARGUMENTS:
-* packet -- a PPPoE packet
-* loc -- location at which to insert bytes of data
-* bytes -- the data to insert
-* len -- length of data to insert
-*%RETURNS:
-* -1 if no room in packet; len otherwise.
-*%DESCRIPTION:
-* Inserts "len" bytes of data at location "loc" in "packet", moving all
-* other data up to make room.
-***********************************************************************/
-int
-insertBytes(PPPoEPacket *packet,
- unsigned char *loc,
- void const *bytes,
- int len)
-{
- int toMove;
- int plen = ntohs(packet->length);
- /* Sanity checks */
- if (loc < packet->payload ||
- loc > packet->payload + plen ||
- len + plen > MAX_PPPOE_PAYLOAD) {
- return -1;
- }
-
- toMove = (packet->payload + plen) - loc;
- memmove(loc+len, loc, toMove);
- memcpy(loc, bytes, len);
- packet->length = htons(plen + len);
- return len;
-}
-
-/**********************************************************************
-*%FUNCTION: removeBytes
-*%ARGUMENTS:
-* packet -- a PPPoE packet
-* loc -- location at which to remove bytes of data
-* len -- length of data to remove
-*%RETURNS:
-* -1 if there was a problem, len otherwise
-*%DESCRIPTION:
-* Removes "len" bytes of data from location "loc" in "packet", moving all
-* other data down to close the gap
-***********************************************************************/
-int
-removeBytes(PPPoEPacket *packet,
- unsigned char *loc,
- int len)
-{
- int toMove;
- int plen = ntohs(packet->length);
- /* Sanity checks */
- if (len < 0 || len > plen ||
- loc < packet->payload ||
- loc + len > packet->payload + plen) {
- return -1;
- }
-
- toMove = ((packet->payload + plen) - loc) - len;
- memmove(loc, loc+len, toMove);
- packet->length = htons(plen - len);
- return len;
-}
-
-/**********************************************************************
-*%FUNCTION: usage
-*%ARGUMENTS:
-* argv0 -- program name
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints usage information and exits.
-***********************************************************************/
-void
-usage(char const *argv0)
-{
- fprintf(stderr, "Usage: %s [options]\n", argv0);
- fprintf(stderr, "Options:\n");
- fprintf(stderr, " -S if_name -- Specify interface for PPPoE Server\n");
- fprintf(stderr, " -C if_name -- Specify interface for PPPoE Client\n");
- fprintf(stderr, " -B if_name -- Specify interface for both clients and server\n");
- fprintf(stderr, " -n nsess -- Maxmimum number of sessions to relay\n");
- fprintf(stderr, " -i timeout -- Idle timeout in seconds (0 = no timeout)\n");
- fprintf(stderr, " -F -- Do not fork into background\n");
- fprintf(stderr, " -h -- Print this help message\n");
-
- fprintf(stderr, "\nPPPoE Version %s, Copyright (C) 2001 Roaring Penguin Software Inc.\n", VERSION);
- fprintf(stderr, "PPPoE comes with ABSOLUTELY NO WARRANTY.\n");
- fprintf(stderr, "This is free software, and you are welcome to redistribute it under the terms\n");
- fprintf(stderr, "of the GNU General Public License, version 2 or any later version.\n");
- fprintf(stderr, "http://www.roaringpenguin.com\n");
- exit(EXIT_SUCCESS);
-}
-
-/**********************************************************************
-*%FUNCTION: main
-*%ARGUMENTS:
-* argc, argv -- usual suspects
-*%RETURNS:
-* EXIT_SUCCESS or EXIT_FAILURE
-*%DESCRIPTION:
-* Main program. Options:
-* -C ifname -- Use interface for PPPoE clients
-* -S ifname -- Use interface for PPPoE servers
-* -B ifname -- Use interface for both clients and servers
-* -n sessions -- Maximum of "n" sessions
-***********************************************************************/
-int
-main(int argc, char *argv[])
-{
- int opt;
- int nsess = DEFAULT_SESSIONS;
- struct sigaction sa;
- int beDaemon = 1;
- openlog("pppoe-relay", LOG_PID, LOG_DAEMON);
-
- while((opt = getopt(argc, argv, "hC:S:B:n:i:F")) != -1) {
- switch(opt) {
- case 'h':
- usage(argv[0]);
- break;
- case 'F':
- beDaemon = 0;
- break;
- case 'C':
- addInterface(optarg, 1, 0);
- break;
- case 'S':
- addInterface(optarg, 0, 1);
- break;
- case 'B':
- addInterface(optarg, 1, 1);
- break;
- case 'i':
- if (sscanf(optarg, "%u", &IdleTimeout) != 1) {
- fprintf(stderr, "Illegal argument to -i: should be -i timeout\n");
- exit(EXIT_FAILURE);
- }
- CleanPeriod = IdleTimeout / TIMEOUT_DIVISOR;
- if (CleanPeriod < MIN_CLEAN_PERIOD) CleanPeriod = MIN_CLEAN_PERIOD;
- break;
- case 'n':
- if (sscanf(optarg, "%d", &nsess) != 1) {
- fprintf(stderr, "Illegal argument to -n: should be -n #sessions\n");
- exit(EXIT_FAILURE);
- }
- if (nsess < 1 || nsess > 65534) {
- fprintf(stderr, "Illegal argument to -n: must range from 1 to 65534\n");
- exit(EXIT_FAILURE);
- }
- break;
- default:
- usage(argv[0]);
- }
- }
-
-#ifdef USE_LINUX_PACKET
-#ifndef HAVE_STRUCT_SOCKADDR_LL
- fprintf(stderr, "The PPPoE relay does not work on Linux 2.0 kernels.\n");
- exit(EXIT_FAILURE);
-#endif
-#endif
-
- /* Check that at least two interfaces were defined */
- if (NumInterfaces < 2) {
- fprintf(stderr, "%s: Must define at least two interfaces\n",
- argv[0]);
- exit(EXIT_FAILURE);
- }
-
- /* Make a pipe for the cleaner */
- if (pipe(CleanPipe) < 0) {
- fatalSys("pipe");
- }
-
- /* Set up alarm handler */
- sa.sa_handler = alarmHandler;
- sigemptyset(&sa.sa_mask);
- sa.sa_flags = SA_RESTART;
- if (sigaction(SIGALRM, &sa, NULL) < 0) {
- fatalSys("sigaction");
- }
-
- /* Allocate memory for sessions, etc. */
- initRelay(nsess);
-
- /* Daemonize -- UNIX Network Programming, Vol. 1, Stevens */
- if (beDaemon) {
- int i;
- i = fork();
- if (i < 0) {
- fatalSys("fork");
- } else if (i != 0) {
- /* parent */
- exit(0);
- }
- setsid();
- signal(SIGHUP, SIG_IGN);
- i = fork();
- if (i < 0) {
- fatalSys("fork");
- } else if (i != 0) {
- exit(0);
- }
-
- chdir("/");
- closelog();
- for (i=0; i<CLOSEFD; i++) {
- if (!keepDescriptor(i)) {
- close(i);
- }
- }
- /* We nuked our syslog descriptor... */
- openlog("pppoe-relay", LOG_PID, LOG_DAEMON);
- }
-
- /* Kick off SIGALRM if there is an idle timeout */
- if (IdleTimeout) alarm(1);
-
- /* Enter the relay loop */
- relayLoop();
-
- /* Shouldn't ever get here... */
- return EXIT_FAILURE;
-}
-
-/**********************************************************************
-*%FUNCTION: addInterface
-*%ARGUMENTS:
-* ifname -- interface name
-* clientOK -- true if this interface should relay PADI, PADR packets.
-* acOK -- true if this interface should relay PADO, PADS packets.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Opens an interface; sets up discovery and session sockets.
-***********************************************************************/
-void
-addInterface(char const *ifname,
- int clientOK,
- int acOK)
-{
- PPPoEInterface *i;
- if (NumInterfaces >= MAX_INTERFACES) {
- fprintf(stderr, "Too many interfaces (%d max)\n",
- MAX_INTERFACES);
- exit(EXIT_FAILURE);
- }
- i = &Interfaces[NumInterfaces++];
- strncpy(i->name, ifname, IFNAMSIZ);
- i->name[IFNAMSIZ] = 0;
-
- i->discoverySock = openInterface(ifname, Eth_PPPOE_Discovery, i->mac);
- i->sessionSock = openInterface(ifname, Eth_PPPOE_Session, NULL);
- i->clientOK = clientOK;
- i->acOK = acOK;
-}
-
-/**********************************************************************
-*%FUNCTION: initRelay
-*%ARGUMENTS:
-* nsess -- maximum allowable number of sessions
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Initializes relay hash table and session tables.
-***********************************************************************/
-void
-initRelay(int nsess)
-{
- int i;
- NumSessions = 0;
- MaxSessions = nsess;
-
- AllSessions = calloc(MaxSessions, sizeof(PPPoESession));
- if (!AllSessions) {
- rp_fatal("Unable to allocate memory for PPPoE session table");
- }
- AllHashes = calloc(MaxSessions*2, sizeof(SessionHash));
- if (!AllHashes) {
- rp_fatal("Unable to allocate memory for PPPoE hash table");
- }
-
- /* Initialize sessions in a linked list */
- AllSessions[0].prev = NULL;
- if (MaxSessions > 1) {
- AllSessions[0].next = &AllSessions[1];
- } else {
- AllSessions[0].next = NULL;
- }
- for (i=1; i<MaxSessions-1; i++) {
- AllSessions[i].prev = &AllSessions[i-1];
- AllSessions[i].next = &AllSessions[i+1];
- }
- if (MaxSessions > 1) {
- AllSessions[MaxSessions-1].prev = &AllSessions[MaxSessions-2];
- AllSessions[MaxSessions-1].next = NULL;
- }
-
- FreeSessions = AllSessions;
- ActiveSessions = NULL;
-
- /* Initialize session numbers which we hand out */
- for (i=0; i<MaxSessions; i++) {
- AllSessions[i].sesNum = htons((UINT16_t) i+1);
- }
-
- /* Initialize hashes in a linked list */
- AllHashes[0].prev = NULL;
- AllHashes[0].next = &AllHashes[1];
- for (i=1; i<2*MaxSessions-1; i++) {
- AllHashes[i].prev = &AllHashes[i-1];
- AllHashes[i].next = &AllHashes[i+1];
- }
- AllHashes[2*MaxSessions-1].prev = &AllHashes[2*MaxSessions-2];
- AllHashes[2*MaxSessions-1].next = NULL;
-
- FreeHashes = AllHashes;
-}
-
-/**********************************************************************
-*%FUNCTION: createSession
-*%ARGUMENTS:
-* ac -- Ethernet interface on access-concentrator side
-* cli -- Ethernet interface on client side
-* acMac -- Access concentrator's MAC address
-* cliMac -- Client's MAC address
-* acSess -- Access concentrator's session ID.
-*%RETURNS:
-* PPPoESession structure; NULL if one could not be allocated
-*%DESCRIPTION:
-* Initializes relay hash table and session tables.
-***********************************************************************/
-PPPoESession *
-createSession(PPPoEInterface const *ac,
- PPPoEInterface const *cli,
- unsigned char const *acMac,
- unsigned char const *cliMac,
- UINT16_t acSes)
-{
- PPPoESession *sess;
- SessionHash *acHash, *cliHash;
-
- if (NumSessions >= MaxSessions) {
- printErr("Maximum number of sessions reached -- cannot create new session");
- return NULL;
- }
-
- /* Grab a free session */
- sess = FreeSessions;
- FreeSessions = sess->next;
- NumSessions++;
-
- /* Link it to the active list */
- sess->next = ActiveSessions;
- if (sess->next) {
- sess->next->prev = sess;
- }
- ActiveSessions = sess;
- sess->prev = NULL;
-
- sess->epoch = Epoch;
-
- /* Get two hash entries */
- acHash = FreeHashes;
- cliHash = acHash->next;
- FreeHashes = cliHash->next;
-
- acHash->peer = cliHash;
- cliHash->peer = acHash;
-
- sess->acHash = acHash;
- sess->clientHash = cliHash;
-
- acHash->interface = ac;
- cliHash->interface = cli;
-
- memcpy(acHash->peerMac, acMac, ETH_ALEN);
- acHash->sesNum = acSes;
- acHash->ses = sess;
-
- memcpy(cliHash->peerMac, cliMac, ETH_ALEN);
- cliHash->sesNum = sess->sesNum;
- cliHash->ses = sess;
-
- addHash(acHash);
- addHash(cliHash);
-
- /* Log */
- syslog(LOG_INFO,
- "Opened session: server=%02x:%02x:%02x:%02x:%02x:%02x(%s:%d), client=%02x:%02x:%02x:%02x:%02x:%02x(%s:%d)",
- acHash->peerMac[0], acHash->peerMac[1],
- acHash->peerMac[2], acHash->peerMac[3],
- acHash->peerMac[4], acHash->peerMac[5],
- acHash->interface->name,
- ntohs(acHash->sesNum),
- cliHash->peerMac[0], cliHash->peerMac[1],
- cliHash->peerMac[2], cliHash->peerMac[3],
- cliHash->peerMac[4], cliHash->peerMac[5],
- cliHash->interface->name,
- ntohs(cliHash->sesNum));
-
- return sess;
-}
-
-/**********************************************************************
-*%FUNCTION: freeSession
-*%ARGUMENTS:
-* ses -- session to free
-* msg -- extra message to log on syslog.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Frees data used by a PPPoE session -- adds hashes and session back
-* to the free list
-***********************************************************************/
-void
-freeSession(PPPoESession *ses, char const *msg)
-{
- syslog(LOG_INFO,
- "Closed session: server=%02x:%02x:%02x:%02x:%02x:%02x(%s:%d), client=%02x:%02x:%02x:%02x:%02x:%02x(%s:%d): %s",
- ses->acHash->peerMac[0], ses->acHash->peerMac[1],
- ses->acHash->peerMac[2], ses->acHash->peerMac[3],
- ses->acHash->peerMac[4], ses->acHash->peerMac[5],
- ses->acHash->interface->name,
- ntohs(ses->acHash->sesNum),
- ses->clientHash->peerMac[0], ses->clientHash->peerMac[1],
- ses->clientHash->peerMac[2], ses->clientHash->peerMac[3],
- ses->clientHash->peerMac[4], ses->clientHash->peerMac[5],
- ses->clientHash->interface->name,
- ntohs(ses->clientHash->sesNum), msg);
-
- /* Unlink from active sessions */
- if (ses->prev) {
- ses->prev->next = ses->next;
- } else {
- ActiveSessions = ses->next;
- }
- if (ses->next) {
- ses->next->prev = ses->prev;
- }
-
- /* Link onto free list -- this is a singly-linked list, so
- we do not care about prev */
- ses->next = FreeSessions;
- FreeSessions = ses;
-
- unhash(ses->acHash);
- unhash(ses->clientHash);
- NumSessions--;
-}
-
-/**********************************************************************
-*%FUNCTION: unhash
-*%ARGUMENTS:
-* sh -- session hash to free
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Frees a session hash -- takes it out of hash table and puts it on
-* free list.
-***********************************************************************/
-void
-unhash(SessionHash *sh)
-{
- unsigned int b = hash(sh->peerMac, sh->sesNum) % HASHTAB_SIZE;
- if (sh->prev) {
- sh->prev->next = sh->next;
- } else {
- Buckets[b] = sh->next;
- }
-
- if (sh->next) {
- sh->next->prev = sh->prev;
- }
-
- /* Add to free list (singly-linked) */
- sh->next = FreeHashes;
- FreeHashes = sh;
-}
-
-/**********************************************************************
-*%FUNCTION: addHash
-*%ARGUMENTS:
-* sh -- a session hash
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Adds a SessionHash to the hash table
-***********************************************************************/
-void
-addHash(SessionHash *sh)
-{
- unsigned int b = hash(sh->peerMac, sh->sesNum) % HASHTAB_SIZE;
- sh->next = Buckets[b];
- sh->prev = NULL;
- if (sh->next) {
- sh->next->prev = sh;
- }
- Buckets[b] = sh;
-}
-
-/**********************************************************************
-*%FUNCTION: hash
-*%ARGUMENTS:
-* mac -- an Ethernet address
-* sesNum -- a session number
-*%RETURNS:
-* A hash value combining Ethernet address with session number.
-* Currently very simplistic; we may need to experiment with different
-* hash values.
-***********************************************************************/
-unsigned int
-hash(unsigned char const *mac, UINT16_t sesNum)
-{
- unsigned int ans1 =
- ((unsigned int) mac[0]) |
- (((unsigned int) mac[1]) << 8) |
- (((unsigned int) mac[2]) << 16) |
- (((unsigned int) mac[3]) << 24);
- unsigned int ans2 =
- ((unsigned int) sesNum) |
- (((unsigned int) mac[4]) << 16) |
- (((unsigned int) mac[5]) << 24);
- return ans1 ^ ans2;
-}
-
-/**********************************************************************
-*%FUNCTION: findSession
-*%ARGUMENTS:
-* mac -- an Ethernet address
-* sesNum -- a session number
-*%RETURNS:
-* The session hash for peer address "mac", session number sesNum
-***********************************************************************/
-SessionHash *
-findSession(unsigned char const *mac, UINT16_t sesNum)
-{
- unsigned int b = hash(mac, sesNum) % HASHTAB_SIZE;
- SessionHash *sh = Buckets[b];
- while(sh) {
- if (!memcmp(mac, sh->peerMac, ETH_ALEN) && sesNum == sh->sesNum) {
- return sh;
- }
- sh = sh->next;
- }
- return NULL;
-}
-
-/**********************************************************************
-*%FUNCTION: fatalSys
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to stderr and syslog and exits.
-***********************************************************************/
-void
-fatalSys(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: sysErr
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message plus the errno value to syslog.
-***********************************************************************/
-void
-sysErr(char const *str)
-{
- char buf[1024];
- sprintf(buf, "%.256s: %.256s", str, strerror(errno));
- printErr(buf);
-}
-
-/**********************************************************************
-*%FUNCTION: rp_fatal
-*%ARGUMENTS:
-* str -- error message
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Prints a message to stderr and syslog and exits.
-***********************************************************************/
-void
-rp_fatal(char const *str)
-{
- printErr(str);
- exit(EXIT_FAILURE);
-}
-
-/**********************************************************************
-*%FUNCTION: relayLoop
-*%ARGUMENTS:
-* None
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Runs the relay loop. This function never returns
-***********************************************************************/
-void
-relayLoop()
-{
- fd_set readable, readableCopy;
- int maxFD;
- int i, r;
- int sock;
-
- /* Build the select set */
- FD_ZERO(&readable);
- maxFD = 0;
- for (i=0; i<NumInterfaces; i++) {
- sock = Interfaces[i].discoverySock;
- if (sock > maxFD) maxFD = sock;
- FD_SET(sock, &readable);
- sock = Interfaces[i].sessionSock;
- if (sock > maxFD) maxFD = sock;
- FD_SET(sock, &readable);
- if (CleanPipe[0] > maxFD) maxFD = CleanPipe[0];
- FD_SET(CleanPipe[0], &readable);
- }
- maxFD++;
- for(;;) {
- readableCopy = readable;
- for(;;) {
- r = select(maxFD, &readableCopy, NULL, NULL, NULL);
- if (r >= 0 || errno != EINTR) break;
- }
- if (r < 0) {
- sysErr("select (relayLoop)");
- continue;
- }
-
- /* Handle session packets first */
- for (i=0; i<NumInterfaces; i++) {
- if (FD_ISSET(Interfaces[i].sessionSock, &readableCopy)) {
- relayGotSessionPacket(&Interfaces[i]);
- }
- }
-
- /* Now handle discovery packets */
- for (i=0; i<NumInterfaces; i++) {
- if (FD_ISSET(Interfaces[i].discoverySock, &readableCopy)) {
- relayGotDiscoveryPacket(&Interfaces[i]);
- }
- }
-
- /* Handle the session-cleaning process */
- if (FD_ISSET(CleanPipe[0], &readableCopy)) {
- char dummy;
- CleanCounter = 0;
- read(CleanPipe[0], &dummy, 1);
- if (IdleTimeout) cleanSessions();
- }
- }
-}
-
-/**********************************************************************
-*%FUNCTION: relayGotDiscoveryPacket
-*%ARGUMENTS:
-* iface -- interface on which packet is waiting
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a discovery packet.
-***********************************************************************/
-void
-relayGotDiscoveryPacket(PPPoEInterface const *iface)
-{
- PPPoEPacket packet;
- int size;
-
- if (receivePacket(iface->discoverySock, &packet, &size) < 0) {
- return;
- }
- /* Ignore unknown code/version */
- if (packet.ver != 1 || packet.type != 1) {
- return;
- }
-
- /* Validate length */
- if (ntohs(packet.length) + HDR_SIZE > size) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- return;
- }
-
- /* Drop Ethernet frame padding */
- if (size > ntohs(packet.length) + HDR_SIZE) {
- size = ntohs(packet.length) + HDR_SIZE;
- }
-
- switch(packet.code) {
- case CODE_PADT:
- relayHandlePADT(iface, &packet, size);
- break;
- case CODE_PADI:
- relayHandlePADI(iface, &packet, size);
- break;
- case CODE_PADO:
- relayHandlePADO(iface, &packet, size);
- break;
- case CODE_PADR:
- relayHandlePADR(iface, &packet, size);
- break;
- case CODE_PADS:
- relayHandlePADS(iface, &packet, size);
- break;
- default:
- syslog(LOG_ERR, "Discovery packet on %s with unknown code %d",
- iface->name, (int) packet.code);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: relayGotSessionPacket
-*%ARGUMENTS:
-* iface -- interface on which packet is waiting
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a session packet.
-***********************************************************************/
-void
-relayGotSessionPacket(PPPoEInterface const *iface)
-{
- PPPoEPacket packet;
- int size;
- SessionHash *sh;
- PPPoESession *ses;
-
- if (receivePacket(iface->sessionSock, &packet, &size) < 0) {
- return;
- }
-
- /* Ignore unknown code/version */
- if (packet.ver != 1 || packet.type != 1) {
- return;
- }
-
- /* Must be a session packet */
- if (packet.code != CODE_SESS) {
- syslog(LOG_ERR, "Session packet with code %d", (int) packet.code);
- return;
- }
-
- /* Ignore session packets whose destination address isn't ours */
- if (memcmp(packet.ethHdr.h_dest, iface->mac, ETH_ALEN)) {
- return;
- }
-
- /* Validate length */
- if (ntohs(packet.length) + HDR_SIZE > size) {
- syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
- (unsigned int) ntohs(packet.length));
- return;
- }
-
- /* Drop Ethernet frame padding */
- if (size > ntohs(packet.length) + HDR_SIZE) {
- size = ntohs(packet.length) + HDR_SIZE;
- }
-
- /* We're in business! Find the hash */
- sh = findSession(packet.ethHdr.h_source, packet.session);
- if (!sh) {
- /* Don't log this. Someone could be running the client and the
- relay on the same box. */
- return;
- }
-
- /* Relay it */
- ses = sh->ses;
- ses->epoch = Epoch;
- sh = sh->peer;
- packet.session = sh->sesNum;
- memcpy(packet.ethHdr.h_source, sh->interface->mac, ETH_ALEN);
- memcpy(packet.ethHdr.h_dest, sh->peerMac, ETH_ALEN);
-#if 0
- fprintf(stderr, "Relaying %02x:%02x:%02x:%02x:%02x:%02x(%s:%d) to %02x:%02x:%02x:%02x:%02x:%02x(%s:%d)\n",
- sh->peer->peerMac[0], sh->peer->peerMac[1], sh->peer->peerMac[2],
- sh->peer->peerMac[3], sh->peer->peerMac[4], sh->peer->peerMac[5],
- sh->peer->interface->name, ntohs(sh->peer->sesNum),
- sh->peerMac[0], sh->peerMac[1], sh->peerMac[2],
- sh->peerMac[3], sh->peerMac[4], sh->peerMac[5],
- sh->interface->name, ntohs(sh->sesNum));
-#endif
- sendPacket(NULL, sh->interface->sessionSock, &packet, size);
-}
-
-/**********************************************************************
-*%FUNCTION: relayHandlePADT
-*%ARGUMENTS:
-* iface -- interface on which packet was received
-* packet -- the PADT packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a PADT packet.
-***********************************************************************/
-void
-relayHandlePADT(PPPoEInterface const *iface,
- PPPoEPacket *packet,
- int size)
-{
- SessionHash *sh;
- PPPoESession *ses;
-
- sh = findSession(packet->ethHdr.h_source, packet->session);
- if (!sh) {
- return;
- }
- /* Relay the PADT to the peer */
- sh = sh->peer;
- ses = sh->ses;
- packet->session = sh->sesNum;
- memcpy(packet->ethHdr.h_source, sh->interface->mac, ETH_ALEN);
- memcpy(packet->ethHdr.h_dest, sh->peerMac, ETH_ALEN);
- sendPacket(NULL, sh->interface->sessionSock, packet, size);
-
- /* Destroy the session */
- freeSession(ses, "Received PADT");
-}
-
-/**********************************************************************
-*%FUNCTION: relayHandlePADI
-*%ARGUMENTS:
-* iface -- interface on which packet was received
-* packet -- the PADI packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a PADI packet.
-***********************************************************************/
-void
-relayHandlePADI(PPPoEInterface const *iface,
- PPPoEPacket *packet,
- int size)
-{
- PPPoETag tag;
- unsigned char *loc;
- int i, r;
-
- int ifIndex;
-
- /* Can a client legally be behind this interface? */
- if (!iface->clientOK) {
- syslog(LOG_ERR,
- "PADI packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not permitted",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Source address must be unicast */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR,
- "PADI packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not from a unicast address",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Destination address must be broadcast */
- if (NOT_BROADCAST(packet->ethHdr.h_dest)) {
- syslog(LOG_ERR,
- "PADI packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not to a broadcast address",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Get array index of interface */
- ifIndex = iface - Interfaces;
-
- loc = findTag(packet, TAG_RELAY_SESSION_ID, &tag);
- if (!loc) {
- tag.type = htons(TAG_RELAY_SESSION_ID);
- tag.length = htons(MY_RELAY_TAG_LEN);
- memcpy(tag.payload, &ifIndex, sizeof(ifIndex));
- memcpy(tag.payload+sizeof(ifIndex), packet->ethHdr.h_source, ETH_ALEN);
- /* Add a relay tag if there's room */
- r = addTag(packet, &tag);
- if (r < 0) return;
- size += r;
- } else {
- /* We do not re-use relay-id tags. Drop the frame. The RFC says the
- relay agent SHOULD return a Generic-Error tag, but this does not
- make sense for PADI packets. */
- return;
- }
-
- /* Broadcast the PADI on all AC-capable interfaces except the interface
- on which it came */
- for (i=0; i < NumInterfaces; i++) {
- if (iface == &Interfaces[i]) continue;
- if (!Interfaces[i].acOK) continue;
- memcpy(packet->ethHdr.h_source, Interfaces[i].mac, ETH_ALEN);
- sendPacket(NULL, Interfaces[i].discoverySock, packet, size);
- }
-
-}
-
-/**********************************************************************
-*%FUNCTION: relayHandlePADO
-*%ARGUMENTS:
-* iface -- interface on which packet was received
-* packet -- the PADO packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a PADO packet.
-***********************************************************************/
-void
-relayHandlePADO(PPPoEInterface const *iface,
- PPPoEPacket *packet,
- int size)
-{
- PPPoETag tag;
- unsigned char *loc;
- int ifIndex;
- int acIndex;
-
- /* Can a server legally be behind this interface? */
- if (!iface->acOK) {
- syslog(LOG_ERR,
- "PADO packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not permitted",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- acIndex = iface - Interfaces;
-
- /* Source address must be unicast */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR,
- "PADO packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not from a unicast address",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Destination address must be interface's MAC address */
- if (memcmp(packet->ethHdr.h_dest, iface->mac, ETH_ALEN)) {
- return;
- }
-
- /* Find relay tag */
- loc = findTag(packet, TAG_RELAY_SESSION_ID, &tag);
- if (!loc) {
- syslog(LOG_ERR,
- "PADO packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* If it's the wrong length, ignore it */
- if (ntohs(tag.length) != MY_RELAY_TAG_LEN) {
- syslog(LOG_ERR,
- "PADO packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have correct length Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Extract interface index */
- memcpy(&ifIndex, tag.payload, sizeof(ifIndex));
-
- if (ifIndex < 0 || ifIndex >= NumInterfaces ||
- !Interfaces[ifIndex].clientOK ||
- iface == &Interfaces[ifIndex]) {
- syslog(LOG_ERR,
- "PADO packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s has invalid interface in Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Replace Relay-ID tag with opposite-direction tag */
- memcpy(loc+TAG_HDR_SIZE, &acIndex, sizeof(acIndex));
- memcpy(loc+TAG_HDR_SIZE+sizeof(ifIndex), packet->ethHdr.h_source, ETH_ALEN);
-
- /* Set destination address to MAC address in relay ID */
- memcpy(packet->ethHdr.h_dest, tag.payload + sizeof(ifIndex), ETH_ALEN);
-
- /* Set source address to MAC address of interface */
- memcpy(packet->ethHdr.h_source, Interfaces[ifIndex].mac, ETH_ALEN);
-
- /* Send the PADO to the proper client */
- sendPacket(NULL, Interfaces[ifIndex].discoverySock, packet, size);
-}
-
-/**********************************************************************
-*%FUNCTION: relayHandlePADR
-*%ARGUMENTS:
-* iface -- interface on which packet was received
-* packet -- the PADR packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a PADR packet.
-***********************************************************************/
-void
-relayHandlePADR(PPPoEInterface const *iface,
- PPPoEPacket *packet,
- int size)
-{
- PPPoETag tag;
- unsigned char *loc;
- int ifIndex;
- int cliIndex;
-
- /* Can a client legally be behind this interface? */
- if (!iface->clientOK) {
- syslog(LOG_ERR,
- "PADR packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not permitted",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- cliIndex = iface - Interfaces;
-
- /* Source address must be unicast */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR,
- "PADR packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not from a unicast address",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Destination address must be interface's MAC address */
- if (memcmp(packet->ethHdr.h_dest, iface->mac, ETH_ALEN)) {
- return;
- }
-
- /* Find relay tag */
- loc = findTag(packet, TAG_RELAY_SESSION_ID, &tag);
- if (!loc) {
- syslog(LOG_ERR,
- "PADR packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* If it's the wrong length, ignore it */
- if (ntohs(tag.length) != MY_RELAY_TAG_LEN) {
- syslog(LOG_ERR,
- "PADR packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have correct length Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Extract interface index */
- memcpy(&ifIndex, tag.payload, sizeof(ifIndex));
-
- if (ifIndex < 0 || ifIndex >= NumInterfaces ||
- !Interfaces[ifIndex].acOK ||
- iface == &Interfaces[ifIndex]) {
- syslog(LOG_ERR,
- "PADR packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s has invalid interface in Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Replace Relay-ID tag with opposite-direction tag */
- memcpy(loc+TAG_HDR_SIZE, &cliIndex, sizeof(cliIndex));
- memcpy(loc+TAG_HDR_SIZE+sizeof(ifIndex), packet->ethHdr.h_source, ETH_ALEN);
-
- /* Set destination address to MAC address in relay ID */
- memcpy(packet->ethHdr.h_dest, tag.payload + sizeof(ifIndex), ETH_ALEN);
-
- /* Set source address to MAC address of interface */
- memcpy(packet->ethHdr.h_source, Interfaces[ifIndex].mac, ETH_ALEN);
-
- /* Send the PADR to the proper access concentrator */
- sendPacket(NULL, Interfaces[ifIndex].discoverySock, packet, size);
-}
-
-/**********************************************************************
-*%FUNCTION: relayHandlePADS
-*%ARGUMENTS:
-* iface -- interface on which packet was received
-* packet -- the PADS packet
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Receives and processes a PADS packet.
-***********************************************************************/
-void
-relayHandlePADS(PPPoEInterface const *iface,
- PPPoEPacket *packet,
- int size)
-{
- PPPoETag tag;
- unsigned char *loc;
- int ifIndex;
- int acIndex;
- PPPoESession *ses = NULL;
- SessionHash *sh;
-
- /* Can a server legally be behind this interface? */
- if (!iface->acOK) {
- syslog(LOG_ERR,
- "PADS packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not permitted",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- acIndex = iface - Interfaces;
-
- /* Source address must be unicast */
- if (NOT_UNICAST(packet->ethHdr.h_source)) {
- syslog(LOG_ERR,
- "PADS packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s not from a unicast address",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Destination address must be interface's MAC address */
- if (memcmp(packet->ethHdr.h_dest, iface->mac, ETH_ALEN)) {
- return;
- }
-
- /* Find relay tag */
- loc = findTag(packet, TAG_RELAY_SESSION_ID, &tag);
- if (!loc) {
- syslog(LOG_ERR,
- "PADS packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* If it's the wrong length, ignore it */
- if (ntohs(tag.length) != MY_RELAY_TAG_LEN) {
- syslog(LOG_ERR,
- "PADS packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s does not have correct length Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* Extract interface index */
- memcpy(&ifIndex, tag.payload, sizeof(ifIndex));
-
- if (ifIndex < 0 || ifIndex >= NumInterfaces ||
- !Interfaces[ifIndex].clientOK ||
- iface == &Interfaces[ifIndex]) {
- syslog(LOG_ERR,
- "PADS packet from %02x:%02x:%02x:%02x:%02x:%02x on interface %s has invalid interface in Relay-Session-Id tag",
- packet->ethHdr.h_source[0],
- packet->ethHdr.h_source[1],
- packet->ethHdr.h_source[2],
- packet->ethHdr.h_source[3],
- packet->ethHdr.h_source[4],
- packet->ethHdr.h_source[5],
- iface->name);
- return;
- }
-
- /* If session ID is zero, it's the AC respoding with an error.
- Just relay it; do not create a session */
- if (packet->session != htons(0)) {
- /* Check for existing session */
- sh = findSession(packet->ethHdr.h_source, packet->session);
- if (sh) ses = sh->ses;
-
- /* If already an existing session, assume it's a duplicate PADS. Send
- the frame, but do not create a new session. Is this the right
- thing to do? Arguably, should send an error to the client and
- a PADT to the server, because this could happen due to a
- server crash and reboot. */
-
- if (!ses) {
- /* Create a new session */
- ses = createSession(iface, &Interfaces[ifIndex],
- packet->ethHdr.h_source,
- loc + TAG_HDR_SIZE + sizeof(ifIndex), packet->session);
- if (!ses) {
- /* Can't allocate session -- send error PADS to client and
- PADT to server */
- PPPoETag hostUniq, *hu;
- if (findTag(packet, TAG_HOST_UNIQ, &hostUniq)) {
- hu = &hostUniq;
- } else {
- hu = NULL;
- }
- relaySendError(CODE_PADS, htons(0), &Interfaces[ifIndex],
- loc + TAG_HDR_SIZE + sizeof(ifIndex),
- hu, "RP-PPPoE: Relay: Unable to allocate session");
- relaySendError(CODE_PADT, packet->session, iface,
- packet->ethHdr.h_source, NULL,
- "RP-PPPoE: Relay: Unable to allocate session");
- return;
- }
- }
- /* Replace session number */
- packet->session = ses->sesNum;
- }
-
- /* Remove relay-ID tag */
- removeBytes(packet, loc, MY_RELAY_TAG_LEN + TAG_HDR_SIZE);
- size -= (MY_RELAY_TAG_LEN + TAG_HDR_SIZE);
-
- /* Set destination address to MAC address in relay ID */
- memcpy(packet->ethHdr.h_dest, tag.payload + sizeof(ifIndex), ETH_ALEN);
-
- /* Set source address to MAC address of interface */
- memcpy(packet->ethHdr.h_source, Interfaces[ifIndex].mac, ETH_ALEN);
-
- /* Send the PADS to the proper client */
- sendPacket(NULL, Interfaces[ifIndex].discoverySock, packet, size);
-}
-
-/**********************************************************************
-*%FUNCTION: relaySendError
-*%ARGUMENTS:
-* code -- PPPoE packet code (PADS or PADT, typically)
-* session -- PPPoE session number
-* iface -- interface on which to send frame
-* mac -- Ethernet address to which frame should be sent
-* hostUniq -- if non-NULL, a hostUniq tag to add to error frame
-* errMsg -- error message to insert into Generic-Error tag.
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Sends either a PADS or PADT packet with a Generic-Error tag and an
-* error message.
-***********************************************************************/
-void
-relaySendError(unsigned char code,
- UINT16_t session,
- PPPoEInterface const *iface,
- unsigned char const *mac,
- PPPoETag const *hostUniq,
- char const *errMsg)
-{
- PPPoEPacket packet;
- PPPoETag errTag;
- int size;
-
- memcpy(packet.ethHdr.h_source, iface->mac, ETH_ALEN);
- memcpy(packet.ethHdr.h_dest, mac, ETH_ALEN);
- packet.ethHdr.h_proto = htons(Eth_PPPOE_Discovery);
- packet.type = 1;
- packet.ver = 1;
- packet.code = code;
- packet.session = session;
- packet.length = htons(0);
- if (hostUniq) {
- if (addTag(&packet, hostUniq) < 0) return;
- }
- errTag.type = htons(TAG_GENERIC_ERROR);
- errTag.length = htons(strlen(errMsg));
- strcpy(errTag.payload, errMsg);
- if (addTag(&packet, &errTag) < 0) return;
- size = ntohs(packet.length) + HDR_SIZE;
- if (code == CODE_PADT) {
- sendPacket(NULL, iface->discoverySock, &packet, size);
- } else {
- sendPacket(NULL, iface->sessionSock, &packet, size);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: alarmHandler
-*%ARGUMENTS:
-* sig -- signal number
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* SIGALRM handler. Increments Epoch; if necessary, writes a byte of
-* data to the alarm pipe to trigger the stale-session cleaner.
-***********************************************************************/
-void
-alarmHandler(int sig)
-{
- alarm(1);
- Epoch++;
- CleanCounter++;
- if (CleanCounter == CleanPeriod) {
- write(CleanPipe[1], "", 1);
- }
-}
-
-/**********************************************************************
-*%FUNCTION: cleanSessions
-*%ARGUMENTS:
-* None
-*%RETURNS:
-* Nothing
-*%DESCRIPTION:
-* Goes through active sessions and cleans sessions idle for longer
-* than IdleTimeout seconds.
-***********************************************************************/
-void cleanSessions(void)
-{
- PPPoESession *cur, *next;
- cur = ActiveSessions;
- while(cur) {
- next = cur->next;
- if (Epoch - cur->epoch > IdleTimeout) {
- /* Send PADT to each peer */
- relaySendError(CODE_PADT, cur->acHash->sesNum,
- cur->acHash->interface,
- cur->acHash->peerMac, NULL,
- "RP-PPPoE: Relay: Session exceeded idle timeout");
- relaySendError(CODE_PADT, cur->clientHash->sesNum,
- cur->clientHash->interface,
- cur->clientHash->peerMac, NULL,
- "RP-PPPoE: Relay: Session exceeded idle timeout");
- freeSession(cur, "Idle Timeout");
- }
- cur = next;
- }
-}
diff --git a/mdk-stage1/rp-pppoe/src/relay.h b/mdk-stage1/rp-pppoe/src/relay.h
deleted file mode 100644
index d438a657f..000000000
--- a/mdk-stage1/rp-pppoe/src/relay.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/**********************************************************************
-*
-* relay.h
-*
-* Definitions for PPPoE relay
-*
-* Copyright (C) 2001 Roaring Penguin Software Inc.
-*
-* This program may be distributed according to the terms of the GNU
-* General Public License, version 2 or (at your option) any later version.
-*
-* $Id$
-*
-***********************************************************************/
-
-#include "pppoe.h"
-
-/* Description for each active Ethernet interface */
-typedef struct InterfaceStruct {
- char name[IFNAMSIZ+1]; /* Interface name */
- int discoverySock; /* Socket for discovery frames */
- int sessionSock; /* Socket for session frames */
- int clientOK; /* Client requests allowed (PADI, PADR) */
- int acOK; /* AC replies allowed (PADO, PADS) */
- unsigned char mac[ETH_ALEN]; /* MAC address */
-} PPPoEInterface;
-
-/* Session state for relay */
-struct SessionHashStruct;
-typedef struct SessionStruct {
- struct SessionStruct *next; /* Free list link */
- struct SessionStruct *prev; /* Free list link */
- struct SessionHashStruct *acHash; /* Hash bucket for AC MAC/Session */
- struct SessionHashStruct *clientHash; /* Hash bucket for client MAC/Session */
- unsigned int epoch; /* Epoch when last activity was seen */
- UINT16_t sesNum; /* Session number assigned by relay */
-} PPPoESession;
-
-/* Hash table entry to find sessions */
-typedef struct SessionHashStruct {
- struct SessionHashStruct *next; /* Link in hash chain */
- struct SessionHashStruct *prev; /* Link in hash chain */
- struct SessionHashStruct *peer; /* Peer for this session */
- PPPoEInterface const *interface; /* Interface */
- unsigned char peerMac[ETH_ALEN]; /* Peer's MAC address */
- UINT16_t sesNum; /* Session number */
- PPPoESession *ses; /* Session data */
-} SessionHash;
-
-/* Function prototypes */
-
-void relayGotSessionPacket(PPPoEInterface const *i);
-void relayGotDiscoveryPacket(PPPoEInterface const *i);
-PPPoEInterface *findInterface(int sock);
-unsigned int hash(unsigned char const *mac, UINT16_t sesNum);
-SessionHash *findSession(unsigned char const *mac, UINT16_t sesNum);
-void deleteHash(SessionHash *hash);
-PPPoESession *createSession(PPPoEInterface const *ac,
- PPPoEInterface const *cli,
- unsigned char const *acMac,
- unsigned char const *cliMac,
- UINT16_t acSes);
-void freeSession(PPPoESession *ses, char const *msg);
-void addInterface(char const *ifname, int clientOK, int acOK);
-void usage(char const *progname);
-void initRelay(int nsess);
-void relayLoop(void);
-void addHash(SessionHash *sh);
-void unhash(SessionHash *sh);
-
-void relayHandlePADT(PPPoEInterface const *iface, PPPoEPacket *packet, int size);
-void relayHandlePADI(PPPoEInterface const *iface, PPPoEPacket *packet, int size);
-void relayHandlePADO(PPPoEInterface const *iface, PPPoEPacket *packet, int size);
-void relayHandlePADR(PPPoEInterface const *iface, PPPoEPacket *packet, int size);
-void relayHandlePADS(PPPoEInterface const *iface, PPPoEPacket *packet, int size);
-
-int addTag(PPPoEPacket *packet, PPPoETag const *tag);
-int insertBytes(PPPoEPacket *packet, unsigned char *loc,
- void const *bytes, int length);
-int removeBytes(PPPoEPacket *packet, unsigned char *loc,
- int length);
-void relaySendError(unsigned char code,
- UINT16_t session,
- PPPoEInterface const *iface,
- unsigned char const *mac,
- PPPoETag const *hostUniq,
- char const *errMsg);
-
-void alarmHandler(int sig);
-void cleanSessions(void);
-
-#define MAX_INTERFACES 8
-#define DEFAULT_SESSIONS 5000
-
-/* Hash table size -- a prime number; gives load factor of around 6
- for 65534 sessions */
-#define HASHTAB_SIZE 18917
diff --git a/mdk-stage1/slang/Makefile b/mdk-stage1/slang/Makefile
deleted file mode 100644
index 111062578..000000000
--- a/mdk-stage1/slang/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
- #******************************************************************************
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-top_dir = ..
-
-include $(top_dir)/Makefile.common
-
-
-LIBNAME = libslang
-
-OBJS = sltermin.o sldisply.o slutty.o slang.o slarray.o slclass.o slcmd.o slerr.o slgetkey.o slkeymap.o slmalloc.o slmath.o slmemchr.o slmemcmp.o slmemcpy.o slmemset.o slmisc.o slparse.o slprepr.o slregexp.o slrline.o slsearch.o slsmg.o slstd.o sltoken.o sltypes.o slxstrng.o slcurses.o slscroll.o slsignal.o slkeypad.o slerrno.o slstring.o slstruct.o slcmplex.o slarrfun.o slimport.o slpath.o slarith.o slassoc.o slcompat.o slposdir.o slstdio.o slproc.o sltime.o slstrops.o slbstr.o slpack.o slintall.o slistruc.o slposio.o slnspace.o slarrmis.o slospath.o slscanf.o
-
-DEFS = -Dunix -DSLANG
-
-INCS =
-
-
-TARGETS = $(LIBNAME).a
-
-all: $(TARGETS)
-
-clean:
- rm -f *.o *.a
-
-$(LIBNAME).a: $(OBJS)
- ar -cru $@ $^
- ranlib $@
-
-$(OBJS): %.o: %.c
- $(DIET) gcc $(CFLAGS) $(DEFS) $(INCS) $(INCLUDES) -c $< -o $@
diff --git a/mdk-stage1/slang/_slang.h b/mdk-stage1/slang/_slang.h
deleted file mode 100644
index 02ee13505..000000000
--- a/mdk-stage1/slang/_slang.h
+++ /dev/null
@@ -1,743 +0,0 @@
-#ifndef _PRIVATE_SLANG_H_
-#define _PRIVATE_SLANG_H_
-/* header file for S-Lang internal structures that users do not (should not)
- need. Use slang.h for that purpose. */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* #include "config.h" */
-#include "jdmacros.h"
-#include "sllimits.h"
-
-#ifdef VMS
-# define SLANG_SYSTEM_NAME "_VMS"
-#else
-# if defined (IBMPC_SYSTEM)
-# define SLANG_SYSTEM_NAME "_IBMPC"
-# else
-# define SLANG_SYSTEM_NAME "_UNIX"
-# endif
-#endif /* VMS */
-
-/* These quantities are main_types for byte-compiled code. They are used
- * by the inner_interp routine. The _BC_ means byte-code.
- */
-
-#define _SLANG_BC_LVARIABLE SLANG_LVARIABLE /* 0x01 */
-#define _SLANG_BC_GVARIABLE SLANG_GVARIABLE /* 0x02 */
-#define _SLANG_BC_IVARIABLE SLANG_IVARIABLE /* 0x03 */
-#define _SLANG_BC_RVARIABLE SLANG_RVARIABLE /* 0x04 */
-#define _SLANG_BC_INTRINSIC SLANG_INTRINSIC /* 0x05 */
-#define _SLANG_BC_FUNCTION SLANG_FUNCTION /* 0x06 */
-#define _SLANG_BC_MATH_UNARY SLANG_MATH_UNARY /* 0x07 */
-#define _SLANG_BC_APP_UNARY SLANG_APP_UNARY /* 0x08 */
-#define _SLANG_BC_ICONST SLANG_ICONSTANT /* 0x09 */
-#define _SLANG_BC_DCONST SLANG_DCONSTANT /* 0x0A */
-#define _SLANG_BC_PVARIABLE SLANG_PVARIABLE /* 0x0B */
-#define _SLANG_BC_PFUNCTION SLANG_PFUNCTION /* 0x0C */
-
-#define _SLANG_BC_BINARY 0x10
-#define _SLANG_BC_LITERAL 0x11 /* constant objects */
-#define _SLANG_BC_LITERAL_INT 0x12
-#define _SLANG_BC_LITERAL_STR 0x13
-#define _SLANG_BC_BLOCK 0x14
-
-/* These 3 MUST be in this order too ! */
-#define _SLANG_BC_RETURN 0x15
-#define _SLANG_BC_BREAK 0x16
-#define _SLANG_BC_CONTINUE 0x17
-
-#define _SLANG_BC_EXCH 0x18
-#define _SLANG_BC_LABEL 0x19
-#define _SLANG_BC_LOBJPTR 0x1A
-#define _SLANG_BC_GOBJPTR 0x1B
-#define _SLANG_BC_X_ERROR 0x1C
-/* These must be in this order */
-#define _SLANG_BC_X_USER0 0x1D
-#define _SLANG_BC_X_USER1 0x1E
-#define _SLANG_BC_X_USER2 0x1F
-#define _SLANG_BC_X_USER3 0x20
-#define _SLANG_BC_X_USER4 0x21
-
-#define _SLANG_BC_CALL_DIRECT 0x24
-#define _SLANG_BC_CALL_DIRECT_FRAME 0x25
-#define _SLANG_BC_UNARY 0x26
-#define _SLANG_BC_UNARY_FUNC 0x27
-
-#define _SLANG_BC_DEREF_ASSIGN 0x30
-#define _SLANG_BC_SET_LOCAL_LVALUE 0x31
-#define _SLANG_BC_SET_GLOBAL_LVALUE 0x32
-#define _SLANG_BC_SET_INTRIN_LVALUE 0x33
-#define _SLANG_BC_SET_STRUCT_LVALUE 0x34
-#define _SLANG_BC_FIELD 0x35
-#define _SLANG_BC_SET_ARRAY_LVALUE 0x36
-
-#define _SLANG_BC_LINE_NUM 0x40
-
-#define _SLANG_BC_TMP 0x50
-#define _SLANG_BC_LVARIABLE_AGET 0x60
-#define _SLANG_BC_LVARIABLE_APUT 0x61
-#define _SLANG_BC_INTEGER_PLUS 0x62
-#define _SLANG_BC_INTEGER_MINUS 0x63
-#define _SLANG_BC_ARG_LVARIABLE 0x64
-#define _SLANG_BC_EARG_LVARIABLE 0x65
-
-#define _SLANG_BC_CALL_DIRECT_INTRINSIC 0x80
-#define _SLANG_BC_INTRINSIC_CALL_DIRECT 0x81
-#define _SLANG_BC_CALL_DIRECT_LSTR 0x82
-#define _SLANG_BC_CALL_DIRECT_SLFUN 0x83
-#define _SLANG_BC_CALL_DIRECT_INTRSTOP 0x84
-#define _SLANG_BC_INTRINSIC_STOP 0x85
-#define _SLANG_BC_CALL_DIRECT_EARG_LVAR 0x86
-#define _SLANG_BC_CALL_DIRECT_LINT 0x87
-#define _SLANG_BC_CALL_DIRECT_LVAR 0x88
-
-
-/* Byte-Code Sub Types (_BCST_) */
-
-/* These are sub_types of _SLANG_BC_BLOCK */
-#define _SLANG_BCST_ERROR_BLOCK 0x01
-#define _SLANG_BCST_EXIT_BLOCK 0x02
-#define _SLANG_BCST_USER_BLOCK0 0x03
-#define _SLANG_BCST_USER_BLOCK1 0x04
-#define _SLANG_BCST_USER_BLOCK2 0x05
-#define _SLANG_BCST_USER_BLOCK3 0x06
-#define _SLANG_BCST_USER_BLOCK4 0x07
-/* The user blocks MUST be in the above order */
-#define _SLANG_BCST_LOOP 0x10
-#define _SLANG_BCST_WHILE 0x11
-#define _SLANG_BCST_FOR 0x12
-#define _SLANG_BCST_FOREVER 0x13
-#define _SLANG_BCST_CFOR 0x14
-#define _SLANG_BCST_DOWHILE 0x15
-#define _SLANG_BCST_FOREACH 0x16
-
-#define _SLANG_BCST_IF 0x20
-#define _SLANG_BCST_IFNOT 0x21
-#define _SLANG_BCST_ELSE 0x22
-#define _SLANG_BCST_ANDELSE 0x23
-#define _SLANG_BCST_ORELSE 0x24
-#define _SLANG_BCST_SWITCH 0x25
-#define _SLANG_BCST_NOTELSE 0x26
-
-/* assignment (_SLANG_BC_SET_*_LVALUE) subtypes. The order MUST correspond
- * to the assignment token order with the ASSIGN_TOKEN as the first!
- */
-#define _SLANG_BCST_ASSIGN 0x01
-#define _SLANG_BCST_PLUSEQS 0x02
-#define _SLANG_BCST_MINUSEQS 0x03
-#define _SLANG_BCST_TIMESEQS 0x04
-#define _SLANG_BCST_DIVEQS 0x05
-#define _SLANG_BCST_BOREQS 0x06
-#define _SLANG_BCST_BANDEQS 0x07
-#define _SLANG_BCST_PLUSPLUS 0x08
-#define _SLANG_BCST_POST_PLUSPLUS 0x09
-#define _SLANG_BCST_MINUSMINUS 0x0A
-#define _SLANG_BCST_POST_MINUSMINUS 0x0B
-
-/* These use SLANG_PLUS, SLANG_MINUS, SLANG_PLUSPLUS, etc... */
-
-typedef union
-{
-#if SLANG_HAS_FLOAT
- double double_val;
- float float_val;
-#endif
- long long_val;
- unsigned long ulong_val;
- VOID_STAR ptr_val;
- char *s_val;
- int int_val;
- unsigned int uint_val;
- SLang_MMT_Type *ref;
- SLang_Name_Type *n_val;
- struct _SLang_Struct_Type *struct_val;
- struct _SLang_Array_Type *array_val;
- short short_val;
- unsigned short ushort_val;
- char char_val;
- unsigned char uchar_val;
-}
-_SL_Object_Union_Type;
-
-typedef struct _SLang_Object_Type
-{
- unsigned char data_type; /* SLANG_INT_TYPE, ... */
- _SL_Object_Union_Type v;
-}
-SLang_Object_Type;
-
-struct _SLang_MMT_Type
-{
- unsigned char data_type; /* int, string, etc... */
- VOID_STAR user_data; /* address of user structure */
- unsigned int count; /* number of references */
-};
-
-extern int _SLang_pop_object_of_type (unsigned char, SLang_Object_Type *, int);
-
-typedef struct
-{
- char *name; /* slstring */
- SLang_Object_Type obj;
-}
-_SLstruct_Field_Type;
-
-typedef struct _SLang_Struct_Type
-{
- _SLstruct_Field_Type *fields;
- unsigned int nfields; /* number used */
- unsigned int num_refs;
-}
-_SLang_Struct_Type;
-
-extern void _SLstruct_delete_struct (_SLang_Struct_Type *);
-extern int _SLang_push_struct (_SLang_Struct_Type *);
-extern int _SLang_pop_struct (_SLang_Struct_Type **);
-extern int _SLstruct_init (void);
-/* extern int _SLstruct_get_field (char *); */
-extern int _SLstruct_define_struct (void);
-extern int _SLstruct_define_typedef (void);
-
-extern int _SLang_pop_datatype (unsigned char *);
-extern int _SLang_push_datatype (unsigned char);
-
-struct _SLang_Ref_Type
-{
- int is_global;
- union
- {
- SLang_Name_Type *nt;
- SLang_Object_Type *local_obj;
- }
- v;
-};
-
-extern int _SLang_dereference_ref (SLang_Ref_Type *);
-extern int _SLang_deref_assign (SLang_Ref_Type *);
-extern int _SLang_push_ref (int, VOID_STAR);
-
-extern int _SL_increment_frame_pointer (void);
-extern int _SL_decrement_frame_pointer (void);
-
-extern int SLang_pop(SLang_Object_Type *);
-extern void SLang_free_object (SLang_Object_Type *);
-extern int _SLanytype_typecast (unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR);
-extern void _SLstring_intrinsic (void);
-
-
-/* These functions are used to create slstrings of a fixed length. Be
- * very careful how they are used. In particular, if len bytes are allocated,
- * then the string must be len characters long, no more and no less.
- */
-extern char *_SLallocate_slstring (unsigned int);
-extern char *_SLcreate_via_alloced_slstring (char *, unsigned int);
-extern void _SLunallocate_slstring (char *, unsigned int);
-extern int _SLpush_alloced_slstring (char *, unsigned int);
-
-typedef struct
-{
- char **buf;
- unsigned int max_num;
- unsigned int num;
- unsigned int delta_num;
-}
-_SLString_List_Type;
-extern int _SLstring_list_append (_SLString_List_Type *, char *);
-extern int _SLstring_list_init (_SLString_List_Type *, unsigned int, unsigned int);
-extern void _SLstring_list_delete (_SLString_List_Type *);
-extern int _SLstring_list_push (_SLString_List_Type *);
-
-/* This function assumes that s is an slstring. */
-extern char *_SLstring_dup_slstring (char *);
-extern int _SLang_dup_and_push_slstring (char *);
-
-
-extern int _SLang_init_import (void);
-
-/* This function checks to see if the referenced object is initialized */
-extern int _SLang_is_ref_initialized (SLang_Ref_Type *);
-extern int _SLcheck_identifier_syntax (char *);
-extern int _SLang_uninitialize_ref (SLang_Ref_Type *);
-
-extern int _SLpush_slang_obj (SLang_Object_Type *);
-
-extern char *_SLexpand_escaped_char(char *, char *);
-extern void _SLexpand_escaped_string (char *, char *, char *);
-
-/* returns a pointer to an SLstring string-- use SLang_free_slstring */
-extern char *_SLstringize_object (SLang_Object_Type *);
-extern int _SLdump_objects (char *, SLang_Object_Type *, unsigned int, int);
-
-extern SLang_Object_Type *_SLRun_Stack;
-extern SLang_Object_Type *_SLStack_Pointer;
-
-struct _SLang_NameSpace_Type
-{
- struct _SLang_NameSpace_Type *next;
- char *name; /* this is the load_type name */
- char *namespace_name; /* this name is assigned by implements */
- unsigned int table_size;
- SLang_Name_Type **table;
-};
-extern SLang_NameSpace_Type *_SLns_allocate_namespace (char *, unsigned int);
-extern SLang_NameSpace_Type *_SLns_find_namespace (char *);
-extern int _SLns_set_namespace_name (SLang_NameSpace_Type *, char *);
-extern SLang_Array_Type *_SLnspace_apropos (SLang_NameSpace_Type *, char *, unsigned int);
-extern void _SLang_use_namespace_intrinsic (char *name);
-extern char *_SLang_cur_namespace_intrinsic (void);
-extern SLang_Array_Type *_SLang_apropos (char *, char *, unsigned int);
-extern void _SLang_implements_intrinsic (char *);
-
-extern int _SLang_Trace;
-extern int _SLstack_depth(void);
-extern char *_SLang_Current_Function_Name;
-
-extern int _SLang_trace_fun(char *);
-extern int _SLang_Compile_Line_Num_Info;
-
-extern char *_SLstring_dup_hashed_string (char *, unsigned long);
-extern unsigned long _SLcompute_string_hash (char *);
-extern char *_SLstring_make_hashed_string (char *, unsigned int, unsigned long *);
-extern void _SLfree_hashed_string (char *, unsigned int, unsigned long);
-unsigned long _SLstring_hash (unsigned char *, unsigned char *);
-extern int _SLinit_slcomplex (void);
-
-extern int _SLang_init_slstrops (void);
-extern int _SLstrops_do_sprintf_n (int);
-extern int _SLang_sscanf (void);
-extern double _SLang_atof (char *);
-extern int _SLang_init_bstring (void);
-extern int _SLang_init_sltime (void);
-extern void _SLpack (void);
-extern void _SLunpack (char *, SLang_BString_Type *);
-extern void _SLpack_pad_format (char *);
-extern unsigned int _SLpack_compute_size (char *);
-extern int _SLusleep (unsigned long);
-
-/* frees upon error. NULL __NOT__ ok. */
-extern int _SLang_push_slstring (char *);
-
-extern unsigned char _SLarith_promote_type (unsigned char);
-extern int _SLarith_get_precedence (unsigned char);
-extern int _SLarith_typecast (unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR);
-
-extern int SLang_push(SLang_Object_Type *);
-extern int SLadd_global_variable (char *);
-extern void _SLang_clear_error (void);
-
-extern int _SLdo_pop (void);
-extern unsigned int _SLsys_getkey (void);
-extern int _SLsys_input_pending (int);
-#ifdef IBMPC_SYSTEM
-extern unsigned int _SLpc_convert_scancode (unsigned int, unsigned int, int);
-#define _SLTT_KEY_SHIFT 1
-#define _SLTT_KEY_CTRL 2
-#define _SLTT_KEY_ALT 4
-#endif
-
-typedef struct _SLterminfo_Type SLterminfo_Type;
-extern SLterminfo_Type *_SLtt_tigetent (char *);
-extern char *_SLtt_tigetstr (SLterminfo_Type *, char *);
-extern int _SLtt_tigetnum (SLterminfo_Type *, char *);
-extern int _SLtt_tigetflag (SLterminfo_Type *, char *);
-
-#if SLTT_HAS_NON_BCE_SUPPORT
-extern int _SLtt_get_bce_color_offset (void);
-#endif
-extern void (*_SLtt_color_changed_hook)(void);
-
-extern unsigned char SLang_Input_Buffer [SL_MAX_INPUT_BUFFER_LEN];
-
-extern int _SLregister_types (void);
-extern SLang_Class_Type *_SLclass_get_class (unsigned char);
-extern VOID_STAR _SLclass_get_ptr_to_value (SLang_Class_Type *, SLang_Object_Type *);
-extern void _SLclass_type_mismatch_error (unsigned char, unsigned char);
-extern int _SLclass_init (void);
-extern int _SLclass_copy_class (unsigned char, unsigned char);
-
-extern unsigned char _SLclass_Class_Type [256];
-
-extern int (*_SLclass_get_typecast (unsigned char, unsigned char, int))
-(unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR);
-
-extern int (*_SLclass_get_binary_fun (int, SLang_Class_Type *, SLang_Class_Type *, SLang_Class_Type **, int))
-(int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR);
-
-extern int (*_SLclass_get_unary_fun (int, SLang_Class_Type *, SLang_Class_Type **, int))
-(int, unsigned char, VOID_STAR, unsigned int, VOID_STAR);
-
-extern int _SLarith_register_types (void);
-extern unsigned char _SLarith_Arith_Types [];
-extern unsigned char _SLarith_Is_Arith_Type [256];
-extern int _SLarith_bin_op (SLang_Object_Type *, SLang_Object_Type *, int);
-
-extern int _SLarray_add_bin_op (unsigned char);
-
-extern int _SLang_call_funptr (SLang_Name_Type *);
-extern void _SLset_double_format (char *);
-extern SLang_Name_Type *_SLlocate_global_name (char *);
-extern SLang_Name_Type *_SLlocate_name (char *);
-
-extern char *_SLdefines[];
-
-#define SL_ERRNO_NOT_IMPLEMENTED 0x7FFF
-extern int _SLerrno_errno;
-extern int _SLerrno_init (void);
-
-extern int _SLstdio_fdopen (char *, int, char *);
-
-extern void _SLstruct_pop_args (int *);
-extern void _SLstruct_push_args (SLang_Array_Type *);
-
-extern int _SLarray_aput (void);
-extern int _SLarray_aget (void);
-extern int _SLarray_inline_implicit_array (void);
-extern int _SLarray_inline_array (void);
-extern int _SLarray_wildcard_array (void);
-
-extern int
-_SLarray_typecast (unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, int);
-
-extern int _SLarray_aput_transfer_elem (SLang_Array_Type *, int *,
- VOID_STAR, unsigned int, int);
-extern int _SLarray_aget_transfer_elem (SLang_Array_Type *, int *,
- VOID_STAR, unsigned int, int);
-extern void _SLarray_free_array_elements (SLang_Class_Type *, VOID_STAR, unsigned int);
-
-extern SLang_Foreach_Context_Type *
-_SLarray_cl_foreach_open (unsigned char, unsigned int);
-extern void _SLarray_cl_foreach_close (unsigned char, SLang_Foreach_Context_Type *);
-extern int _SLarray_cl_foreach (unsigned char, SLang_Foreach_Context_Type *);
-
-extern int _SLarray_matrix_multiply (void);
-extern void (*_SLang_Matrix_Multiply)(void);
-
-extern int _SLarray_init_slarray (void);
-extern SLang_Array_Type *
-SLang_create_array1 (unsigned char, int, VOID_STAR, int *, unsigned int, int);
-
-extern int _SLcompile_push_context (SLang_Load_Type *);
-extern int _SLcompile_pop_context (void);
-extern int _SLang_Auto_Declare_Globals;
-
-typedef struct
-{
- union
- {
- long long_val;
- char *s_val; /* Used for IDENT_TOKEN, FLOAT, etc... */
- SLang_BString_Type *b_val;
- } v;
- int free_sval_flag;
- unsigned int num_refs;
- unsigned long hash;
-#if _SLANG_HAS_DEBUG_CODE
- int line_number;
-#endif
- unsigned char type;
-}
-_SLang_Token_Type;
-
-extern void _SLcompile (_SLang_Token_Type *);
-extern void (*_SLcompile_ptr)(_SLang_Token_Type *);
-
-/* *** TOKENS *** */
-
-/* Note that that tokens corresponding to ^J, ^M, and ^Z should not be used.
- * This is because a file that contains any of these characters will
- * have an OS dependent interpretation, e.g., ^Z is EOF on MSDOS.
- */
-
-/* Special tokens */
-#define EOF_TOKEN 0x01
-#define RPN_TOKEN 0x02
-#define NL_TOKEN 0x03
-#define NOP_TOKEN 0x05
-#define FARG_TOKEN 0x06
-#define TMP_TOKEN 0x07
-
-#define RESERVED1_TOKEN 0x0A /* \n */
-#define RESERVED2_TOKEN 0x0D /* \r */
-
-/* Literal tokens */
-#define CHAR_TOKEN 0x10
-#define UCHAR_TOKEN 0x11
-#define SHORT_TOKEN 0x12
-#define USHORT_TOKEN 0x13
-#define INT_TOKEN 0x14
-#define UINT_TOKEN 0x15
-#define LONG_TOKEN 0x16
-#define ULONG_TOKEN 0x17
-#define IS_INTEGER_TOKEN(x) ((x >= CHAR_TOKEN) && (x <= ULONG_TOKEN))
-#define FLOAT_TOKEN 0x18
-#define DOUBLE_TOKEN 0x19
-#define RESERVED3_TOKEN 0x1A /* ^Z */
-#define COMPLEX_TOKEN 0x1B
-#define STRING_TOKEN 0x1C
-#define BSTRING_TOKEN 0x1D
-#define _BSTRING_TOKEN 0x1E /* byte-compiled BSTRING */
-#define ESC_STRING_TOKEN 0x1F
-
-/* Tokens that can be LVALUES */
-#define IDENT_TOKEN 0x20
-#define ARRAY_TOKEN 0x21
-#define DOT_TOKEN 0x22
-#define IS_LVALUE_TOKEN (((t) <= DOT_TOKEN) && ((t) >= IDENT_TOKEN))
-
-/* do not use these values */
-#define RESERVED4_TOKEN 0x23 /* # */
-#define RESERVED5_TOKEN 0x25 /* % */
-
-/* Flags for struct fields */
-#define STATIC_TOKEN 0x26
-#define READONLY_TOKEN 0x27
-#define PRIVATE_TOKEN 0x28
-#define PUBLIC_TOKEN 0x29
-
-/* Punctuation tokens */
-#define OBRACKET_TOKEN 0x2a
-#define CBRACKET_TOKEN 0x2b
-#define OPAREN_TOKEN 0x2c
-#define CPAREN_TOKEN 0x2d
-#define OBRACE_TOKEN 0x2e
-#define CBRACE_TOKEN 0x2f
-
-#define COMMA_TOKEN 0x31
-#define SEMICOLON_TOKEN 0x32
-#define COLON_TOKEN 0x33
-#define NAMESPACE_TOKEN 0x34
-
-/* Operators */
-#define POW_TOKEN 0x38
-
-/* The order here must match the order in the Binop_Level table in slparse.c */
-#define FIRST_BINARY_OP 0x39
-#define ADD_TOKEN 0x39
-#define SUB_TOKEN 0x3a
-#define TIMES_TOKEN 0x3b
-#define DIV_TOKEN 0x3c
-#define LT_TOKEN 0x3d
-#define LE_TOKEN 0x3e
-#define GT_TOKEN 0x3f
-#define GE_TOKEN 0x40
-#define EQ_TOKEN 0x41
-#define NE_TOKEN 0x42
-#define AND_TOKEN 0x43
-#define OR_TOKEN 0x44
-#define MOD_TOKEN 0x45
-#define BAND_TOKEN 0x46
-#define SHL_TOKEN 0x47
-#define SHR_TOKEN 0x48
-#define BXOR_TOKEN 0x49
-#define BOR_TOKEN 0x4a
-#define POUND_TOKEN 0x4b /* matrix multiplication */
-
-#define LAST_BINARY_OP 0x4b
-#define IS_BINARY_OP(t) ((t >= FIRST_BINARY_OP) && (t <= LAST_BINARY_OP))
-
-/* unary tokens -- but not all of them (see grammar) */
-#define DEREF_TOKEN 0x4d
-#define NOT_TOKEN 0x4e
-#define BNOT_TOKEN 0x4f
-
-#define IS_INTERNAL_FUNC(t) ((t >= 0x50) && (t <= 0x56))
-#define POP_TOKEN 0x50
-#define CHS_TOKEN 0x51
-#define SIGN_TOKEN 0x52
-#define ABS_TOKEN 0x53
-#define SQR_TOKEN 0x54
-#define MUL2_TOKEN 0x55
-#define EXCH_TOKEN 0x56
-
-/* Assignment tokens. Note: these must appear with sequential values.
- * The order here must match the specific lvalue assignments below.
- * These tokens are used by rpn routines in slang.c. slparse.c maps them
- * onto the specific lvalue tokens while parsing infix.
- * Also the assignment _SLANG_BCST_ assumes this order
- */
-#define ASSIGN_TOKEN 0x57
-#define PLUSEQS_TOKEN 0x58
-#define MINUSEQS_TOKEN 0x59
-#define TIMESEQS_TOKEN 0x5A
-#define DIVEQS_TOKEN 0x5B
-#define BOREQS_TOKEN 0x5C
-#define BANDEQS_TOKEN 0x5D
-#define PLUSPLUS_TOKEN 0x5E
-#define POST_PLUSPLUS_TOKEN 0x5F
-#define MINUSMINUS_TOKEN 0x60
-#define POST_MINUSMINUS_TOKEN 0x61
-
-/* Directives */
-#define FIRST_DIRECTIVE_TOKEN 0x62
-#define IFNOT_TOKEN 0x62
-#define IF_TOKEN 0x63
-#define ELSE_TOKEN 0x64
-#define FOREVER_TOKEN 0x65
-#define WHILE_TOKEN 0x66
-#define FOR_TOKEN 0x67
-#define _FOR_TOKEN 0x68
-#define LOOP_TOKEN 0x69
-#define SWITCH_TOKEN 0x6A
-#define DOWHILE_TOKEN 0x6B
-#define ANDELSE_TOKEN 0x6C
-#define ORELSE_TOKEN 0x6D
-#define ERRBLK_TOKEN 0x6E
-#define EXITBLK_TOKEN 0x6F
-/* These must be sequential */
-#define USRBLK0_TOKEN 0x70
-#define USRBLK1_TOKEN 0x71
-#define USRBLK2_TOKEN 0x72
-#define USRBLK3_TOKEN 0x73
-#define USRBLK4_TOKEN 0x74
-
-#define CONT_TOKEN 0x75
-#define BREAK_TOKEN 0x76
-#define RETURN_TOKEN 0x77
-
-#define CASE_TOKEN 0x78
-#define DEFINE_TOKEN 0x79
-#define DO_TOKEN 0x7a
-#define VARIABLE_TOKEN 0x7b
-#define GVARIABLE_TOKEN 0x7c
-#define _REF_TOKEN 0x7d
-#define PUSH_TOKEN 0x7e
-#define STRUCT_TOKEN 0x7f
-#define TYPEDEF_TOKEN 0x80
-#define NOTELSE_TOKEN 0x81
-#define DEFINE_STATIC_TOKEN 0x82
-#define FOREACH_TOKEN 0x83
-#define USING_TOKEN 0x84
-#define DEFINE_PRIVATE_TOKEN 0x85
-#define DEFINE_PUBLIC_TOKEN 0x86
-
-/* Note: the order here must match the order of the generic assignment tokens.
- * Also, the first token of each group must be the ?_ASSIGN_TOKEN.
- * slparse.c exploits this order, as well as slang.h.
- */
-#define FIRST_ASSIGN_TOKEN 0x90
-#define _STRUCT_ASSIGN_TOKEN 0x90
-#define _STRUCT_PLUSEQS_TOKEN 0x91
-#define _STRUCT_MINUSEQS_TOKEN 0x92
-#define _STRUCT_TIMESEQS_TOKEN 0x93
-#define _STRUCT_DIVEQS_TOKEN 0x94
-#define _STRUCT_BOREQS_TOKEN 0x95
-#define _STRUCT_BANDEQS_TOKEN 0x96
-#define _STRUCT_PLUSPLUS_TOKEN 0x97
-#define _STRUCT_POST_PLUSPLUS_TOKEN 0x98
-#define _STRUCT_MINUSMINUS_TOKEN 0x99
-#define _STRUCT_POST_MINUSMINUS_TOKEN 0x9A
-
-#define _ARRAY_ASSIGN_TOKEN 0xA0
-#define _ARRAY_PLUSEQS_TOKEN 0xA1
-#define _ARRAY_MINUSEQS_TOKEN 0xA2
-#define _ARRAY_TIMESEQS_TOKEN 0xA3
-#define _ARRAY_DIVEQS_TOKEN 0xA4
-#define _ARRAY_BOREQS_TOKEN 0xA5
-#define _ARRAY_BANDEQS_TOKEN 0xA6
-#define _ARRAY_PLUSPLUS_TOKEN 0xA7
-#define _ARRAY_POST_PLUSPLUS_TOKEN 0xA8
-#define _ARRAY_MINUSMINUS_TOKEN 0xA9
-#define _ARRAY_POST_MINUSMINUS_TOKEN 0xAA
-
-#define _SCALAR_ASSIGN_TOKEN 0xB0
-#define _SCALAR_PLUSEQS_TOKEN 0xB1
-#define _SCALAR_MINUSEQS_TOKEN 0xB2
-#define _SCALAR_TIMESEQS_TOKEN 0xB3
-#define _SCALAR_DIVEQS_TOKEN 0xB4
-#define _SCALAR_BOREQS_TOKEN 0xB5
-#define _SCALAR_BANDEQS_TOKEN 0xB6
-#define _SCALAR_PLUSPLUS_TOKEN 0xB7
-#define _SCALAR_POST_PLUSPLUS_TOKEN 0xB8
-#define _SCALAR_MINUSMINUS_TOKEN 0xB9
-#define _SCALAR_POST_MINUSMINUS_TOKEN 0xBA
-
-#define _DEREF_ASSIGN_TOKEN 0xC0
-#define _DEREF_PLUSEQS_TOKEN 0xC1
-#define _DEREF_MINUSEQS_TOKEN 0xC2
-#define _DEREF_TIMESEQS_TOKEN 0xC3
-#define _DEREF_DIVEQS_TOKEN 0xC4
-#define _DEREF_BOREQS_TOKEN 0xC5
-#define _DEREF_BANDEQS_TOKEN 0xC6
-#define _DEREF_PLUSPLUS_TOKEN 0xC7
-#define _DEREF_POST_PLUSPLUS_TOKEN 0xC8
-#define _DEREF_MINUSMINUS_TOKEN 0xC9
-#define _DEREF_POST_MINUSMINUS_TOKEN 0xCA
-
-#define LAST_ASSIGN_TOKEN 0xCA
-#define IS_ASSIGN_TOKEN(t) (((t)>=FIRST_ASSIGN_TOKEN)&&((t)<=LAST_ASSIGN_TOKEN))
-
-#define _INLINE_ARRAY_TOKEN 0xE0
-#define _INLINE_IMPLICIT_ARRAY_TOKEN 0xE1
-#define _NULL_TOKEN 0xE2
-#define _INLINE_WILDCARD_ARRAY_TOKEN 0xE3
-
-#define LINE_NUM_TOKEN 0xFC
-#define ARG_TOKEN 0xFD
-#define EARG_TOKEN 0xFE
-#define NO_OP_LITERAL 0xFF
-
-typedef struct
-{
- /* sltoken.c */
- /* SLang_eval_object */
- SLang_Load_Type *llt;
- SLPreprocess_Type *this_slpp;
- /* prep_get_char() */
- char *input_line;
- char cchar;
- /* get_token() */
- int want_nl_token;
-
- /* slparse.c */
- _SLang_Token_Type ctok;
- int block_depth;
- int assignment_expression;
-
- /* slang.c : SLcompile() */
- _SLang_Token_Type save_token;
- _SLang_Token_Type next_token;
- void (*slcompile_ptr)(_SLang_Token_Type *);
-}
-_SLEval_Context;
-
-extern int _SLget_token (_SLang_Token_Type *);
-extern void _SLparse_error (char *, _SLang_Token_Type *, int);
-extern void _SLparse_start (SLang_Load_Type *);
-extern int _SLget_rpn_token (_SLang_Token_Type *);
-extern void _SLcompile_byte_compiled (void);
-
-extern int (*_SLprep_eval_hook) (char *);
-
-#ifdef HAVE_VSNPRINTF
-#define _SLvsnprintf vsnprintf
-#else
-extern int _SLvsnprintf (char *, unsigned int, char *, va_list);
-#endif
-
-#ifdef HAVE_SNPRINTF
-# define _SLsnprintf snprintf
-#else
-extern int _SLsnprintf (char *, unsigned int, char *, ...);
-#endif
-
-#undef _INLINE_
-#if defined(__GNUC__) && _SLANG_USE_INLINE_CODE
-# define _INLINE_ __inline__
-#else
-# define _INLINE_
-#endif
-
-
-#endif /* _PRIVATE_SLANG_H_ */
diff --git a/mdk-stage1/slang/config.h b/mdk-stage1/slang/config.h
deleted file mode 100644
index a5ab3273c..000000000
--- a/mdk-stage1/slang/config.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/* src/sysconf.h. Generated automatically by configure. */
-/* -*- c -*- */
-/* Note: this is for unix only. */
-
-#ifndef SL_CONFIG_H
-#define SL_CONFIG_H
-
-/* define if you have stdlib.h */
-#define HAVE_STDLIB_H 1
-
-/* define if you have unistd.h */
-#define HAVE_UNISTD_H 1
-
-/* define if you have termios.h */
-#define HAVE_TERMIOS_H 1
-
-/* define if you have memory.h */
-#define HAVE_MEMORY_H 1
-
-/* define if you have malloc.h */
-#define HAVE_MALLOC_H 1
-
-/* define if you have memset */
-#define HAVE_MEMSET 1
-
-/* define if you have memcpy */
-#define HAVE_MEMCPY 1
-
-//#define HAVE_SETLOCALE 1
-//#define HAVE_LOCALE_H 1
-
-#define HAVE_VFSCANF 1
-
-/* define if you have fcntl.h */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the vsnprintf, snprintf functions and they return
- * EOF upon failure.
- */
-#define HAVE_VSNPRINTF 1
-#define HAVE_SNPRINTF 1
-
-/* define if you have sys/fcntl.h */
-#define HAVE_SYS_FCNTL_H 1
-
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_WAIT_H 1
-#define HAVE_SYS_TIMES_H 1
-
-/* Set these to the appropriate values */
-#define SIZEOF_SHORT 2
-#define SIZEOF_INT 4
-#define SIZEOF_LONG 4
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-
-/* define if you have these. */
-#define HAVE_ATEXIT 1
-#define HAVE_ON_EXIT 1
-#define HAVE_PUTENV 1
-#define HAVE_GETCWD 1
-#define HAVE_TCGETATTR 1
-#define HAVE_TCSETATTR 1
-#define HAVE_CFGETOSPEED 1
-#define HAVE_LSTAT 1
-#define HAVE_KILL 1
-#define HAVE_CHOWN 1
-#define HAVE_VSNPRINTF 1
-#define HAVE_POPEN 1
-#define HAVE_UMASK 1
-#define HAVE_READLINK 1
-#define HAVE_TIMES 1
-#define HAVE_GMTIME 1
-#define HAVE_MKFIFO 1
-
-#define HAVE_GETPPID 1
-#define HAVE_GETGID 1
-#define HAVE_GETEGID 1
-#define HAVE_GETEUID 1
-/* #undef HAVE_GETUID */
-
-#define HAVE_SETGID 1
-#define HAVE_SETPGID 1
-#define HAVE_SETUID 1
-
-#define HAVE_ACOSH 1
-#define HAVE_ASINH 1
-#define HAVE_ATANH 1
-
-#define HAVE_DIRENT_H 1
-/* #undef HAVE_SYS_NDIR_H */
-/* #undef HAVE_SYS_DIR_H */
-/* #undef HAVE_NDIR_H */
-
-#define HAVE_DLFCN_H 1
-
-#define HAVE_SYS_UTSNAME_H 1
-#define HAVE_UNAME 1
-
-/* These two are needed on DOS-like systems. Unix does not require them.
- * They are included here for consistency.
- *
-#define HAVE_IO_H
-#define HAVE_PROCESS_H
- */
-
-/* #undef USE_TERMCAP */
-
-/* #undef mode_t */
-/* #undef uid_t */
-/* #undef pid_t */
-/* #undef gid_t */
-
-/* Do we have posix signals? */
-#define HAVE_SIGACTION 1
-#define HAVE_SIGPROCMASK 1
-#define HAVE_SIGEMPTYSET 1
-#define HAVE_SIGADDSET 1
-
-#if defined(HAVE_SIGADDSET) && defined(HAVE_SIGEMPTYSET)
-# if defined(HAVE_SIGACTION) && defined(HAVE_SIGPROCMASK)
-# define SLANG_POSIX_SIGNALS
-# endif
-#endif
-
-/* Define if you need to in order for stat and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-#ifdef _AIX
-# ifndef _POSIX_SOURCE
-# define _POSIX_SOURCE 1
-# endif
-# ifndef _ALL_SOURCE
-# define _ALL_SOURCE
-# endif
-/* This may generate warnings but the fact is that without it, xlc will
- * INCORRECTLY inline many str* functions. */
-/* # undef __STR__ */
-#endif
-
-/* define USE_TERMCAP if you want to use it instead of terminfo. */
-#if defined(sequent) || defined(NeXT)
-# ifndef USE_TERMCAP
-# define USE_TERMCAP
-# endif
-#endif
-
-#if defined(ultrix) && !defined(__GNUC__)
-# ifndef NO_PROTOTYPES
-# define NO_PROTOTYPES
-# endif
-#endif
-
-#ifndef unix
-# define unix 1
-#endif
-
-#ifndef __unix__
-# define __unix__ 1
-#endif
-
-#define _SLANG_SOURCE_ 1
-#endif /* SL_CONFIG_H */
diff --git a/mdk-stage1/slang/jdmacros.h b/mdk-stage1/slang/jdmacros.h
deleted file mode 100644
index 70d491b78..000000000
--- a/mdk-stage1/slang/jdmacros.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef _JD_MACROS_H_
-#define _JD_MACROS_H_
-
-#ifndef SLMEMSET
-# ifdef HAVE_MEMSET
-# define SLMEMSET memset
-# else
-# define SLMEMSET SLmemset
-# endif
-#endif
-
-#ifndef SLMEMCHR
-# ifdef HAVE_MEMCHR
-# define SLMEMCHR memchr
-# else
-# define SLMEMCHR SLmemchr
-# endif
-#endif
-
-#ifndef SLMEMCPY
-# ifdef HAVE_MEMCPY
-# define SLMEMCPY memcpy
-# else
-# define SLMEMCPY SLmemcpy
-# endif
-#endif
-
-/* Note: HAVE_MEMCMP requires an unsigned memory comparison!!! */
-#ifndef SLMEMCMP
-# ifdef HAVE_MEMCMP
-# define SLMEMCMP memcmp
-# else
-# define SLMEMCMP SLmemcmp
-# endif
-#endif
-
-#ifndef SLFREE
-# define SLFREE free
-#endif
-
-#ifndef SLMALLOC
-# define SLMALLOC malloc
-#endif
-
-#ifndef SLCALLOC
-# define SLCALLOC calloc
-#endif
-
-#ifndef SLREALLOC
-# define SLREALLOC realloc
-#endif
-
-#endif /* _JD_MACROS_H_ */
diff --git a/mdk-stage1/slang/keywhash.c b/mdk-stage1/slang/keywhash.c
deleted file mode 100644
index 17d94d5a3..000000000
--- a/mdk-stage1/slang/keywhash.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* Perfect hash generated by command line:
- * ./a.out 1
- */
-#define MIN_HASH_VALUE 2
-#define MAX_HASH_VALUE 118
-#define MIN_KEYWORD_LEN 2
-#define MAX_KEYWORD_LEN 11
-
-static unsigned char Keyword_Hash_Table [256] =
-{
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 1, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 9, 7, 1, 8, 2, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 0, 0, 119, 0, 119, 119, 119, 7, 119, 0, 0, 119, 119, 0,
- 119, 119, 0, 0, 0, 0, 119, 119, 0, 119, 119, 119, 119, 119, 119, 2,
- 119, 41, 1, 1, 9, 0, 55, 8, 0, 0, 119, 0, 27, 0, 0, 0,
- 7, 2, 0, 21, 0, 0, 0, 3, 2, 0, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119
-};
-
-static unsigned char keyword_hash (char *s, unsigned int len)
-{
- unsigned int sum;
-
- sum = len;
- while (len)
- {
- len--;
- sum += (unsigned int) Keyword_Hash_Table [(unsigned char)s[len]];
- }
- return sum;
-}
-
-typedef struct
-{
- char *name;
- unsigned int type;
-}
-Keyword_Table_Type;
-
-static Keyword_Table_Type Keyword_Table [/* 117 */] =
-{
- {"or", OR_TOKEN},
- {"not", NOT_TOKEN},
- {NULL,0},
- {"xor", BXOR_TOKEN},
- {"return", RETURN_TOKEN},
- {"exch", EXCH_TOKEN},
- {NULL,0},
- {"continue", CONT_TOKEN},
- {NULL,0},
- {"do", DO_TOKEN},
- {"mod", MOD_TOKEN},
- {"ERROR_BLOCK", ERRBLK_TOKEN},
- {"USER_BLOCK2", USRBLK2_TOKEN},
- {"USER_BLOCK4", USRBLK4_TOKEN},
- {"__tmp", TMP_TOKEN},
- {"pop", POP_TOKEN},
- {NULL,0},
- {"EXIT_BLOCK", EXITBLK_TOKEN},
- {"USER_BLOCK1", USRBLK1_TOKEN},
- {"USER_BLOCK3", USRBLK3_TOKEN},
- {"USER_BLOCK0", USRBLK0_TOKEN},
- {NULL,0},
- {"shr", SHR_TOKEN},
- {"chs", CHS_TOKEN},
- {"sqr", SQR_TOKEN},
- {NULL,0},
- {"struct", STRUCT_TOKEN},
- {NULL,0},
- {NULL,0},
- {"switch", SWITCH_TOKEN},
- {"mul2", MUL2_TOKEN},
- {"sign", SIGN_TOKEN},
- {"using", USING_TOKEN},
- {"while", WHILE_TOKEN},
- {NULL,0},
- {NULL,0},
- {"loop", LOOP_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"public", PUBLIC_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"break", BREAK_TOKEN},
- {NULL,0},
- {"do_while", DOWHILE_TOKEN},
- {NULL,0},
- {"shl", SHL_TOKEN},
- {"else", ELSE_TOKEN},
- {"and", AND_TOKEN},
- {"orelse", ORELSE_TOKEN},
- {"private", PRIVATE_TOKEN},
- {NULL,0},
- {"if", IF_TOKEN},
- {"for", FOR_TOKEN},
- {"!if", IFNOT_TOKEN},
- {NULL,0},
- {"_for", _FOR_TOKEN},
- {"forever", FOREVER_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"abs", ABS_TOKEN},
- {"case", CASE_TOKEN},
- {NULL,0},
- {"static", STATIC_TOKEN},
- {"define", DEFINE_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"typedef", TYPEDEF_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"foreach", FOREACH_TOKEN},
- {"andelse", ANDELSE_TOKEN},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {NULL,0},
- {"variable", VARIABLE_TOKEN},
-};
-
-static Keyword_Table_Type *is_keyword (char *str, unsigned int len)
-{
- unsigned int hash;
- char *name;
- Keyword_Table_Type *kw;
-
- if ((len < MIN_KEYWORD_LEN)
- || (len > MAX_KEYWORD_LEN))
- return NULL;
-
- hash = keyword_hash (str, len);
- if ((hash > MAX_HASH_VALUE) || (hash < MIN_HASH_VALUE))
- return NULL;
-
- kw = &Keyword_Table[hash - MIN_HASH_VALUE];
- if ((NULL != (name = kw->name))
- && (*str == *name)
- && (0 == strcmp (str, name)))
- return kw;
- return NULL;
-}
diff --git a/mdk-stage1/slang/sl-feat.h b/mdk-stage1/slang/sl-feat.h
deleted file mode 100644
index 511d72451..000000000
--- a/mdk-stage1/slang/sl-feat.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Setting this to 1 enables automatic support for associative arrays.
- * If this is set to 0, an application must explicitly enable associative
- * array support via SLang_init_slassoc.
- */
-#define SLANG_HAS_ASSOC_ARRAYS 1
-
-#define SLANG_HAS_COMPLEX 1
-#define SLANG_HAS_FLOAT 1
-
-/* This is the old space-speed trade off. To reduce memory usage and code
- * size, set this to zero.
- */
-#define _SLANG_OPTIMIZE_FOR_SPEED 2
-
-#define _SLANG_USE_INLINE_CODE 1
-
-/* This is experimental. It adds extra information for tracking down
- * errors.
- */
-#define _SLANG_HAS_DEBUG_CODE 1
-
-/* Allow optimizations based upon the __tmp operator. */
-#define _SLANG_USE_TMP_OPTIMIZATION 1
-
-/* Setting this to one will map 8 bit vtxxx terminals to 7 bit. Terminals
- * such as the vt320 can be set up to output the two-character escape sequence
- * encoded as 'ESC [' as single character. Setting this variable to 1 will
- * insert code to map such characters to the 7 bit equivalent.
- * This affects just input characters in the range 128-160 on non PC
- * systems.
- */
-#if defined(VMS) || defined(AMIGA)
-# define _SLANG_MAP_VTXXX_8BIT 1
-#else
-# define _SLANG_MAP_VTXXX_8BIT 0
-#endif
-
-/* Add support for color terminals that cannot do background color erases
- * Such terminals are poorly designed and are slowly disappearing but they
- * are still quite common. For example, screen is one of them!
- *
- * This is experimental. In particular, it is not known to work if
- * KANJI suupport is enabled.
- */
-#if !defined(IBMPC_SYSTEM)
-# define SLTT_HAS_NON_BCE_SUPPORT 1
-#else
-# define SLTT_HAS_NON_BCE_SUPPORT 0
-#endif
-
-/* If you want slang to assume that an xterm always has the background color
- * erase feature, then set this to 1. Otherwise, it will check the terminfo
- * database. This may or may not be a good idea since most good color xterms
- * support bce but many terminfo systems do not support it.
- */
-#define SLTT_XTERM_ALWAYS_BCE 0
-
-/* Set this to 1 to enable Kanji support. See above comment. */
-#define SLANG_HAS_KANJI_SUPPORT 0
-
diff --git a/mdk-stage1/slang/slang.c b/mdk-stage1/slang/slang.c
deleted file mode 100644
index 6edc7df37..000000000
--- a/mdk-stage1/slang/slang.c
+++ /dev/null
@@ -1,5547 +0,0 @@
-/* -*- mode: C; mode: fold; -*- */
-/* slang.c --- guts of S-Lang interpreter */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#if SLANG_HAS_FLOAT
-# include <math.h>
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-#define USE_COMBINED_BYTECODES 0
-
-struct _SLBlock_Type;
-
-typedef struct
-{
- struct _SLBlock_Type *body;
- unsigned int num_refs;
-}
-_SLBlock_Header_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- union
- {
- _SLBlock_Header_Type *header; /* body of function */
- char *autoload_filename;
- }
- v;
-#if _SLANG_HAS_DEBUG_CODE
- char *file;
-#endif
-#define SLANG_MAX_LOCAL_VARIABLES 254
-#define AUTOLOAD_NUM_LOCALS (SLANG_MAX_LOCAL_VARIABLES + 1)
- unsigned char nlocals; /* number of local variables */
- unsigned char nargs; /* number of arguments */
-}
-_SLang_Function_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- SLang_Object_Type obj;
-}
-SLang_Global_Var_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- int local_var_number;
-}
-SLang_Local_Var_Type;
-
-typedef struct _SLBlock_Type
-{
- unsigned char bc_main_type;
- unsigned char bc_sub_type;
- union
- {
- struct _SLBlock_Type *blk;
- int i_blk;
-
- SLang_Name_Type *nt_blk;
- SLang_App_Unary_Type *nt_unary_blk;
- SLang_Intrin_Var_Type *nt_ivar_blk;
- SLang_Intrin_Fun_Type *nt_ifun_blk;
- SLang_Global_Var_Type *nt_gvar_blk;
- SLang_IConstant_Type *iconst_blk;
- SLang_DConstant_Type *dconst_blk;
- _SLang_Function_Type *nt_fun_blk;
-
- VOID_STAR ptr_blk;
- char *s_blk;
- SLang_BString_Type *bs_blk;
-
-#if SLANG_HAS_FLOAT
- double *double_blk; /*literal double is a pointer */
-#endif
- float float_blk;
- long l_blk;
- struct _SLang_Struct_Type *struct_blk;
- int (*call_function)(void);
- }
- b;
-}
-SLBlock_Type;
-
-/* Debugging and tracing variables */
-
-void (*SLang_Enter_Function)(char *) = NULL;
-void (*SLang_Exit_Function)(char *) = NULL;
-/* If non null, these call C functions before and after a slang function. */
-
-int _SLang_Trace = 0;
-/* If _SLang_Trace = -1, do not trace intrinsics */
-static int Trace_Mode = 0;
-
-static char *Trace_Function; /* function to be traced */
-int SLang_Traceback = 0;
-/* non zero means do traceback. If less than 0, do not show local variables */
-
-/* These variables handle _NARGS processing by the parser */
-int SLang_Num_Function_Args;
-static int *Num_Args_Stack;
-static unsigned int Recursion_Depth;
-static SLang_Object_Type *Frame_Pointer;
-static int Next_Function_Num_Args;
-static unsigned int Frame_Pointer_Depth;
-static unsigned int *Frame_Pointer_Stack;
-
-static int Lang_Break_Condition = 0;
-/* true if any one below is true. This keeps us from testing 3 variables.
- * I know this can be perfomed with a bitmapped variable, but...
- */
-static int Lang_Break = 0;
-static int Lang_Return = 0;
-/* static int Lang_Continue = 0; */
-
-SLang_Object_Type *_SLRun_Stack;
-SLang_Object_Type *_SLStack_Pointer;
-static SLang_Object_Type *_SLStack_Pointer_Max;
-
-/* Might want to increase this. */
-static SLang_Object_Type Local_Variable_Stack[SLANG_MAX_LOCAL_STACK];
-static SLang_Object_Type *Local_Variable_Frame = Local_Variable_Stack;
-
-static void free_function_header (_SLBlock_Header_Type *);
-
-void (*SLang_Dump_Routine)(char *);
-
-static void call_dump_routine (char *fmt, ...)
-{
- char buf[1024];
- va_list ap;
-
- va_start (ap, fmt);
- if (SLang_Dump_Routine != NULL)
- {
- (void) _SLvsnprintf (buf, sizeof (buf), fmt, ap);
- (*SLang_Dump_Routine) (buf);
- }
- else
- {
- vfprintf (stderr, fmt, ap);
- fflush (stderr);
- }
- va_end (ap);
-}
-
-static void do_traceback (char *, unsigned int, char *);
-static int init_interpreter (void);
-
-/*{{{ push/pop/etc stack manipulation functions */
-
-/* This routine is assumed to work even in the presence of a SLang_Error. */
-_INLINE_
-int SLang_pop (SLang_Object_Type *x)
-{
- register SLang_Object_Type *y;
-
- y = _SLStack_Pointer;
- if (y == _SLRun_Stack)
- {
- if (SLang_Error == 0) SLang_Error = SL_STACK_UNDERFLOW;
- x->data_type = 0;
- return -1;
- }
- y--;
- *x = *y;
-
- _SLStack_Pointer = y;
- return 0;
-}
-
-static int pop_ctrl_integer (int *i)
-{
- int type;
- SLang_Class_Type *cl;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- register SLang_Object_Type *y;
-
- /* Most of the time, either an integer or a char will be on the stack.
- * Optimize these cases.
- */
- y = _SLStack_Pointer;
- if (y == _SLRun_Stack)
- {
- if (SLang_Error == 0) SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
- y--;
-
- type = y->data_type;
- if (type == SLANG_INT_TYPE)
- {
- _SLStack_Pointer = y;
- *i = y->v.int_val;
- return 0;
- }
- if (type == SLANG_CHAR_TYPE)
- {
- _SLStack_Pointer = y;
- *i = y->v.char_val;
- return 0;
- }
-#else
- if (-1 == (type = SLang_peek_at_stack ()))
- return -1;
-#endif
-
- cl = _SLclass_get_class ((unsigned char) type);
- if (cl->cl_to_bool == NULL)
- {
- SLang_verror (SL_TYPE_MISMATCH,
- "%s cannot be used in a boolean context",
- cl->cl_name);
- return -1;
- }
- return cl->cl_to_bool ((unsigned char) type, i);
-}
-
-_INLINE_
-int SLang_peek_at_stack (void)
-{
- if (_SLStack_Pointer == _SLRun_Stack)
- {
- if (SLang_Error == 0)
- SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
-
- return (_SLStack_Pointer - 1)->data_type;
-}
-
-int SLang_peek_at_stack1 (void)
-{
- int type;
-
- type = SLang_peek_at_stack ();
- if (type == SLANG_ARRAY_TYPE)
- type = (_SLStack_Pointer - 1)->v.array_val->data_type;
-
- return type;
-}
-
-_INLINE_
-void SLang_free_object (SLang_Object_Type *obj)
-{
- unsigned char data_type;
- SLang_Class_Type *cl;
-
- if (obj == NULL) return;
- data_type = obj->data_type;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type [data_type])
- return;
- if (data_type == SLANG_STRING_TYPE)
- {
- SLang_free_slstring (obj->v.s_val);
- return;
- }
-#endif
- cl = _SLclass_get_class (data_type);
-#if !_SLANG_OPTIMIZE_FOR_SPEED
- if (cl->cl_class_type != SLANG_CLASS_TYPE_SCALAR)
-#endif
- (*cl->cl_destroy) (data_type, (VOID_STAR) &obj->v);
-}
-
-_INLINE_
-int SLang_push (SLang_Object_Type *x)
-{
- register SLang_Object_Type *y;
- y = _SLStack_Pointer;
-
- /* if there is a SLang_Error, probably not much harm will be done
- if it is ignored here */
- /* if (SLang_Error) return; */
-
- /* flag it now */
- if (y >= _SLStack_Pointer_Max)
- {
- if (!SLang_Error) SLang_Error = SL_STACK_OVERFLOW;
- return -1;
- }
-
- *y = *x;
- _SLStack_Pointer = y + 1;
- return 0;
-}
-
-/* _INLINE_ */
-int SLclass_push_ptr_obj (unsigned char type, VOID_STAR pval)
-{
- register SLang_Object_Type *y;
- y = _SLStack_Pointer;
-
- if (y >= _SLStack_Pointer_Max)
- {
- if (!SLang_Error) SLang_Error = SL_STACK_OVERFLOW;
- return -1;
- }
-
- y->data_type = type;
- y->v.ptr_val = pval;
-
- _SLStack_Pointer = y + 1;
- return 0;
-}
-
-_INLINE_
-int SLclass_push_int_obj (unsigned char type, int x)
-{
- register SLang_Object_Type *y;
- y = _SLStack_Pointer;
-
- if (y >= _SLStack_Pointer_Max)
- {
- if (!SLang_Error) SLang_Error = SL_STACK_OVERFLOW;
- return -1;
- }
-
- y->data_type = type;
- y->v.int_val = x;
-
- _SLStack_Pointer = y + 1;
- return 0;
-}
-
-_INLINE_
-int _SLang_pop_object_of_type (unsigned char type, SLang_Object_Type *obj,
- int allow_arrays)
-{
- register SLang_Object_Type *y;
-
- y = _SLStack_Pointer;
- if (y == _SLRun_Stack)
- return SLang_pop (obj);
- y--;
- if (y->data_type != type)
- {
-#if _SLANG_OPTIMIZE_FOR_SPEED
- /* This is an implicit typecast. We do not want to typecast
- * floats to ints implicitly.
- */
- if (_SLarith_Is_Arith_Type [type]
- && _SLarith_Is_Arith_Type [y->data_type]
- && (_SLarith_Is_Arith_Type [type] >= _SLarith_Is_Arith_Type[y->data_type]))
- {
- /* This should not fail */
- (void) _SLarith_typecast (y->data_type, (VOID_STAR)&y->v, 1,
- type, (VOID_STAR)&obj->v);
- obj->data_type = type;
- _SLStack_Pointer = y;
- return 0;
- }
-#endif
-
- if ((allow_arrays == 0)
- || (y->data_type != SLANG_ARRAY_TYPE)
- || (y->v.array_val->data_type != type))
- if (-1 == SLclass_typecast (type, 1, 0))
- return -1;
- }
- *obj = *y;
- _SLStack_Pointer = y;
- return 0;
-}
-
-/* This function reverses the top n items on the stack and returns a
- * an offset from the start of the stack to the last item.
- */
-int SLreverse_stack (int n)
-{
- SLang_Object_Type *otop, *obot, tmp;
-
- otop = _SLStack_Pointer;
- if ((n > otop - _SLRun_Stack) || (n < 0))
- {
- SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
- obot = otop - n;
- otop--;
- while (otop > obot)
- {
- tmp = *obot;
- *obot = *otop;
- *otop = tmp;
- otop--;
- obot++;
- }
- return (int) ((_SLStack_Pointer - n) - _SLRun_Stack);
-}
-
-_INLINE_
-int SLroll_stack (int np)
-{
- int n, i;
- SLang_Object_Type *otop, *obot, tmp;
-
- if ((n = abs(np)) <= 1) return 0; /* identity */
-
- obot = otop = _SLStack_Pointer;
- i = n;
- while (i != 0)
- {
- if (obot <= _SLRun_Stack)
- {
- SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
- obot--;
- i--;
- }
- otop--;
-
- if (np > 0)
- {
- /* Put top on bottom and roll rest up. */
- tmp = *otop;
- while (otop > obot)
- {
- *otop = *(otop - 1);
- otop--;
- }
- *otop = tmp;
- }
- else
- {
- /* Put bottom on top and roll rest down. */
- tmp = *obot;
- while (obot < otop)
- {
- *obot = *(obot + 1);
- obot++;
- }
- *obot = tmp;
- }
- return 0;
-}
-
-int _SLstack_depth (void)
-{
- return (int) (_SLStack_Pointer - _SLRun_Stack);
-}
-
-int SLdup_n (int n)
-{
- SLang_Object_Type *bot, *top;
-
- if (n <= 0)
- return 0;
-
- top = _SLStack_Pointer;
- if (top < _SLRun_Stack + n)
- {
- if (SLang_Error == 0)
- SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
- if (top + n > _SLStack_Pointer_Max)
- {
- if (SLang_Error == 0)
- SLang_Error = SL_STACK_OVERFLOW;
- return -1;
- }
- bot = top - n;
-
- while (bot < top)
- {
- SLang_Class_Type *cl;
- unsigned char data_type = bot->data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type [data_type])
- {
- *_SLStack_Pointer++ = *bot++;
- continue;
- }
-#endif
- cl = _SLclass_get_class (data_type);
- if (-1 == (*cl->cl_push) (data_type, (VOID_STAR) &bot->v))
- return -1;
- bot++;
- }
- return 0;
-}
-
-/*}}}*/
-
-/*{{{ inner interpreter and support functions */
-
-_INLINE_
-int _SL_increment_frame_pointer (void)
-{
- if (Recursion_Depth >= SLANG_MAX_RECURSIVE_DEPTH)
- {
- SLang_verror (SL_STACK_OVERFLOW, "Num Args Stack Overflow");
- return -1;
- }
- Num_Args_Stack [Recursion_Depth] = SLang_Num_Function_Args;
-
- SLang_Num_Function_Args = Next_Function_Num_Args;
- Next_Function_Num_Args = 0;
- Recursion_Depth++;
- return 0;
-}
-
-_INLINE_
-int _SL_decrement_frame_pointer (void)
-{
- if (Recursion_Depth == 0)
- {
- SLang_verror (SL_STACK_UNDERFLOW, "Num Args Stack Underflow");
- return -1;
- }
-
- Recursion_Depth--;
- if (Recursion_Depth < SLANG_MAX_RECURSIVE_DEPTH)
- SLang_Num_Function_Args = Num_Args_Stack [Recursion_Depth];
-
- return 0;
-}
-
-_INLINE_
-int SLang_start_arg_list (void)
-{
- if (Frame_Pointer_Depth < SLANG_MAX_RECURSIVE_DEPTH)
- {
- Frame_Pointer_Stack [Frame_Pointer_Depth] = (unsigned int) (Frame_Pointer - _SLRun_Stack);
- Frame_Pointer = _SLStack_Pointer;
- Frame_Pointer_Depth++;
- Next_Function_Num_Args = 0;
- return 0;
- }
-
- SLang_verror (SL_STACK_OVERFLOW, "Frame Stack Overflow");
- return -1;
-}
-
-_INLINE_
-int SLang_end_arg_list (void)
-{
- if (Frame_Pointer_Depth == 0)
- {
- SLang_verror (SL_STACK_UNDERFLOW, "Frame Stack Underflow");
- return -1;
- }
- Frame_Pointer_Depth--;
- if (Frame_Pointer_Depth < SLANG_MAX_RECURSIVE_DEPTH)
- {
- Next_Function_Num_Args = (int) (_SLStack_Pointer - Frame_Pointer);
- Frame_Pointer = _SLRun_Stack + Frame_Pointer_Stack [Frame_Pointer_Depth];
- }
- return 0;
-}
-
-_INLINE_
-static int do_bc_call_direct_frame (int (*f)(void))
-{
- if ((0 == SLang_end_arg_list ())
- && (0 == _SL_increment_frame_pointer ()))
- {
- (void) (*f) ();
- _SL_decrement_frame_pointer ();
- }
- if (SLang_Error)
- return -1;
- return 0;
-}
-
-static int do_name_type_error (SLang_Name_Type *nt)
-{
- char buf[256];
- if (nt != NULL)
- {
- (void) _SLsnprintf (buf, sizeof (buf), "(Error occurred processing %s)", nt->name);
- do_traceback (buf, 0, NULL);
- }
- return -1;
-}
-
-/* local and global variable assignments */
-
-static int do_binary_ab (int op, SLang_Object_Type *obja, SLang_Object_Type *objb)
-{
- SLang_Class_Type *a_cl, *b_cl, *c_cl;
- unsigned char b_data_type, a_data_type, c_data_type;
- int (*binary_fun) (int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR);
- VOID_STAR pa;
- VOID_STAR pb;
- VOID_STAR pc;
- int ret;
-
- b_data_type = objb->data_type;
- a_data_type = obja->data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (_SLarith_Is_Arith_Type[a_data_type]
- && _SLarith_Is_Arith_Type[b_data_type])
- {
- int status;
- status = _SLarith_bin_op (obja, objb, op);
- if (status != 1)
- return status;
- /* drop and try it the hard way */
- }
-#endif
-
- a_cl = _SLclass_get_class (a_data_type);
- if (a_data_type == b_data_type)
- b_cl = a_cl;
- else
- b_cl = _SLclass_get_class (b_data_type);
-
- if (NULL == (binary_fun = _SLclass_get_binary_fun (op, a_cl, b_cl, &c_cl, 1)))
- return -1;
-
- c_data_type = c_cl->cl_data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type [a_data_type])
- pa = (VOID_STAR) &obja->v;
- else
-#endif
- pa = _SLclass_get_ptr_to_value (a_cl, obja);
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type [b_data_type])
- pb = (VOID_STAR) &objb->v;
- else
-#endif
- pb = _SLclass_get_ptr_to_value (b_cl, objb);
-
- pc = c_cl->cl_transfer_buf;
-
- if (1 != (*binary_fun) (op,
- a_data_type, pa, 1,
- b_data_type, pb, 1,
- pc))
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Binary operation between %s and %s failed",
- a_cl->cl_name, b_cl->cl_name);
-
- return -1;
- }
-
- /* apush will create a copy, so make sure we free after the push */
- ret = (*c_cl->cl_apush)(c_data_type, pc);
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [c_data_type])
-#endif
- (*c_cl->cl_adestroy)(c_data_type, pc);
-
- return ret;
-}
-
-_INLINE_
-static void do_binary (int op)
-{
- SLang_Object_Type obja, objb;
-
- if (SLang_pop (&objb)) return;
- if (0 == SLang_pop (&obja))
- {
- (void) do_binary_ab (op, &obja, &objb);
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [obja.data_type])
-#endif
- SLang_free_object (&obja);
- }
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [objb.data_type])
-#endif
- SLang_free_object (&objb);
-}
-
-static int do_unary_op (int op, SLang_Object_Type *obj, int unary_type)
-{
- int (*f) (int, unsigned char, VOID_STAR, unsigned int, VOID_STAR);
- VOID_STAR pa;
- VOID_STAR pb;
- SLang_Class_Type *a_cl, *b_cl;
- unsigned char a_type, b_type;
- int ret;
-
- a_type = obj->data_type;
- a_cl = _SLclass_get_class (a_type);
-
- if (NULL == (f = _SLclass_get_unary_fun (op, a_cl, &b_cl, unary_type)))
- return -1;
-
- b_type = b_cl->cl_data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type [a_type])
- pa = (VOID_STAR) &obj->v;
- else
-#endif
- pa = _SLclass_get_ptr_to_value (a_cl, obj);
-
- pb = b_cl->cl_transfer_buf;
-
- if (1 != (*f) (op, a_type, pa, 1, pb))
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Unary operation for %s failed", a_cl->cl_name);
- return -1;
- }
-
- ret = (*b_cl->cl_apush)(b_type, pb);
- /* cl_apush creates a copy, so make sure we call cl_adestroy */
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [b_type])
-#endif
- (*b_cl->cl_adestroy)(b_type, pb);
-
- return ret;
-}
-
-_INLINE_
-static int do_unary (int op, int unary_type)
-{
- SLang_Object_Type obj;
- int ret;
-
- if (-1 == SLang_pop (&obj)) return -1;
- ret = do_unary_op (op, &obj, unary_type);
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [obj.data_type])
-#endif
- SLang_free_object (&obj);
- return ret;
-}
-
-static int do_assignment_binary (int op, SLang_Object_Type *obja_ptr)
-{
- SLang_Object_Type objb;
- int ret;
-
- if (SLang_pop (&objb))
- return -1;
-
- ret = do_binary_ab (op, obja_ptr, &objb);
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [objb.data_type])
-#endif
- SLang_free_object (&objb);
- return ret;
-}
-
-/* The order of these is assumed to match the binary operators
- * defined in slang.h
- */
-static int
-map_assignment_op_to_binary (unsigned char op_type, int *op, int *is_unary)
-{
- *is_unary = 0;
- switch (op_type)
- {
- case _SLANG_BCST_PLUSEQS:
- case _SLANG_BCST_MINUSEQS:
- case _SLANG_BCST_TIMESEQS:
- case _SLANG_BCST_DIVEQS:
- *op = SLANG_PLUS + (op_type - _SLANG_BCST_PLUSEQS);
- break;
-
- case _SLANG_BCST_BOREQS:
- *op = SLANG_BOR;
- break;
-
- case _SLANG_BCST_BANDEQS:
- *op = SLANG_BAND;
- break;
-
- case _SLANG_BCST_POST_MINUSMINUS:
- case _SLANG_BCST_MINUSMINUS:
- *op = SLANG_MINUS;
- *is_unary = 1;
- break;
-
- case _SLANG_BCST_PLUSPLUS:
- case _SLANG_BCST_POST_PLUSPLUS:
- *op = SLANG_PLUS;
- *is_unary = 1;
- break;
-
- default:
- SLang_verror (SL_NOT_IMPLEMENTED, "Assignment operator not implemented");
- return -1;
- }
- return 0;
-}
-
-static int
-perform_lvalue_operation (unsigned char op_type, SLang_Object_Type *obja_ptr)
-{
- switch (op_type)
- {
- case _SLANG_BCST_ASSIGN:
- break;
-
- /* The order of these is assumed to match the binary operators
- * defined in slang.h
- */
- case _SLANG_BCST_PLUSEQS:
- case _SLANG_BCST_MINUSEQS:
- case _SLANG_BCST_TIMESEQS:
- case _SLANG_BCST_DIVEQS:
- if (-1 == do_assignment_binary (SLANG_PLUS + (op_type - _SLANG_BCST_PLUSEQS), obja_ptr))
- return -1;
- break;
-
- case _SLANG_BCST_BOREQS:
- if (-1 == do_assignment_binary (SLANG_BOR, obja_ptr))
- return -1;
- break;
-
- case _SLANG_BCST_BANDEQS:
- if (-1 == do_assignment_binary (SLANG_BAND, obja_ptr))
- return -1;
- break;
-
- case _SLANG_BCST_PLUSPLUS:
- case _SLANG_BCST_POST_PLUSPLUS:
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (obja_ptr->data_type == SLANG_INT_TYPE)
- return SLclass_push_int_obj (SLANG_INT_TYPE, obja_ptr->v.int_val + 1);
-#endif
- if (-1 == do_unary_op (SLANG_PLUSPLUS, obja_ptr, _SLANG_BC_UNARY))
- return -1;
- break;
-
- case _SLANG_BCST_MINUSMINUS:
- case _SLANG_BCST_POST_MINUSMINUS:
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (obja_ptr->data_type == SLANG_INT_TYPE)
- return SLclass_push_int_obj (SLANG_INT_TYPE, obja_ptr->v.int_val - 1);
-#endif
- if (-1 == do_unary_op (SLANG_MINUSMINUS, obja_ptr, _SLANG_BC_UNARY))
- return -1;
- break;
-
- default:
- SLang_Error = SL_INTERNAL_ERROR;
- return -1;
- }
- return 0;
-}
-
-_INLINE_
-static int
-set_lvalue_obj (unsigned char op_type, SLang_Object_Type *obja_ptr)
-{
- if (op_type != _SLANG_BCST_ASSIGN)
- {
- if (-1 == perform_lvalue_operation (op_type, obja_ptr))
- return -1;
- }
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [obja_ptr->data_type])
-#endif
- SLang_free_object (obja_ptr);
-
- return SLang_pop(obja_ptr);
-}
-
-static int
-set_struct_lvalue (SLBlock_Type *bc_blk)
-{
- int type;
- SLang_Class_Type *cl;
- char *name;
- int op;
-
- if (-1 == (type = SLang_peek_at_stack ()))
- return -1;
-
- cl = _SLclass_get_class (type);
- if ((cl->cl_sput == NULL)
- || (cl->cl_sget == NULL))
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "%s does not support structure access",
- cl->cl_name);
- SLdo_pop_n (2); /* object plus what was to be assigned */
- return -1;
- }
- name = bc_blk->b.s_blk;
- op = bc_blk->bc_sub_type;
-
- if (op != _SLANG_BCST_ASSIGN)
- {
- /* We have something like (A.x += b) or (A.x++). In either case,
- * we need A.x.
- */
- SLang_Object_Type obj_A;
- SLang_Object_Type obj;
-
- if (-1 == SLang_pop (&obj_A))
- return -1;
-
- if ((-1 == _SLpush_slang_obj (&obj_A))
- || (-1 == cl->cl_sget ((unsigned char) type, name))
- || (-1 == SLang_pop (&obj)))
- {
- SLang_free_object (&obj_A);
- return -1;
- }
- /* Now the value of A.x is in obj. */
- if (-1 == perform_lvalue_operation (op, &obj))
- {
- SLang_free_object (&obj);
- SLang_free_object (&obj_A);
- return -1;
- }
- SLang_free_object (&obj);
- /* The result of the operation is now on the stack.
- * Perform assignment */
- if (-1 == SLang_push (&obj_A))
- {
- SLang_free_object (&obj_A);
- return -1;
- }
- }
-
- return (*cl->cl_sput) ((unsigned char) type, name);
-}
-
-static int make_unit_object (SLang_Object_Type *a, SLang_Object_Type *u)
-{
- unsigned char type;
-
- type = a->data_type;
- if (type == SLANG_ARRAY_TYPE)
- type = a->v.array_val->data_type;
-
- u->data_type = type;
- switch (type)
- {
- case SLANG_UCHAR_TYPE:
- case SLANG_CHAR_TYPE:
- u->v.char_val = 1;
- break;
-
- case SLANG_SHORT_TYPE:
- case SLANG_USHORT_TYPE:
- u->v.short_val = 1;
- break;
-
- case SLANG_LONG_TYPE:
- case SLANG_ULONG_TYPE:
- u->v.long_val = 1;
- break;
-
-#if SLANG_HAS_FLOAT
- case SLANG_FLOAT_TYPE:
- u->v.float_val = 1;
- break;
-
- case SLANG_COMPLEX_TYPE:
- u->data_type = SLANG_DOUBLE_TYPE;
- case SLANG_DOUBLE_TYPE:
- u->v.double_val = 1;
- break;
-#endif
- default:
- u->data_type = SLANG_INT_TYPE;
- u->v.int_val = 1;
- }
- return 0;
-}
-
-
-/* We want to convert 'A[i] op X' to 'A[i] = A[i] op X'. The code that
- * has been generated is: X __args i A __aput-op
- * where __aput-op represents this function. We need to generate:
- * __args i A __eargs __aget X op __args i A __eargs __aput
- * Here, __eargs implies a call to do_bc_call_direct_frame with either
- * the aput or aget function. In addition, __args represents a call to
- * SLang_start_arg_list. Of course, i represents a set of indices.
- *
- * Note: If op is an unary operation (e.g., ++ or --), then X will not
- * b present an will have to be taken to be 1.
- *
- * Implementation note: For efficiency, calls to setup the frame, start
- * arg list will be omitted and SLang_Num_Function_Args will be set.
- * This is ugly but the alternative is much less efficient rendering these
- * assignment operators useless. So, the plan is to roll the stack to get X,
- * then duplicate the next N values, call __aget followed by op X, finally
- * calling __aput. Hence, the sequence is:
- *
- * start: X i .. j A
- * dupN: X i .. j A i .. j A
- * __aget: X i .. j A Y
- * roll: i .. j A Y X
- * op: i .. j A Z
- * roll: Z i .. j A
- * __aput:
- */
-static int
-set_array_lvalue (int op)
-{
- SLang_Object_Type x, y;
- int num_args, is_unary;
-
- if (-1 == map_assignment_op_to_binary (op, &op, &is_unary))
- return -1;
-
- /* Grab the indices and the array. Do not start a new frame. */
- if (-1 == SLang_end_arg_list ())
- return -1;
- num_args = Next_Function_Num_Args;
- Next_Function_Num_Args = 0;
-
- if (-1 == SLdup_n (num_args))
- return -1;
-
- SLang_Num_Function_Args = num_args;
- if (-1 == _SLarray_aget ())
- return -1;
-
- if (-1 == SLang_pop (&y))
- return -1;
-
- if (is_unary == 0)
- {
- if ((-1 == SLroll_stack (-(num_args + 1)))
- || (-1 == SLang_pop (&x)))
- {
- SLang_free_object (&y);
- return -1;
- }
- }
- else if (-1 == make_unit_object (&y, &x))
- {
- SLang_free_object (&y);
- return -1;
- }
-
- if (-1 == do_binary_ab (op, &y, &x))
- {
- SLang_free_object (&y);
- SLang_free_object (&x);
- return -1;
- }
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [y.data_type])
-#endif
- SLang_free_object (&y);
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [x.data_type])
-#endif
- SLang_free_object (&x);
-
- if (-1 == SLroll_stack (num_args + 1))
- return -1;
-
- SLang_Num_Function_Args = num_args;
- return _SLarray_aput ();
-}
-
-
-static int
-set_intrin_lvalue (SLBlock_Type *bc_blk)
-{
- unsigned char op_type;
- SLang_Object_Type obja;
- SLang_Class_Type *cl;
- SLang_Intrin_Var_Type *ivar;
- VOID_STAR intrinsic_addr;
- unsigned char intrinsic_type;
-
- ivar = bc_blk->b.nt_ivar_blk;
-
- intrinsic_type = ivar->type;
- intrinsic_addr = ivar->addr;
-
- op_type = bc_blk->bc_sub_type;
-
- cl = _SLclass_get_class (intrinsic_type);
-
- if (op_type != _SLANG_BCST_ASSIGN)
- {
- /* We want to get the current value into obja. This is the
- * easiest way.
- */
- if ((-1 == (*cl->cl_push) (intrinsic_type, intrinsic_addr))
- || (-1 == SLang_pop (&obja)))
- return -1;
-
- (void) perform_lvalue_operation (op_type, &obja);
- SLang_free_object (&obja);
-
- if (SLang_Error)
- return -1;
- }
-
- return (*cl->cl_pop) (intrinsic_type, intrinsic_addr);
-}
-
-int _SLang_deref_assign (SLang_Ref_Type *ref)
-{
- SLang_Object_Type *objp;
- SLang_Name_Type *nt;
- SLBlock_Type blk;
-
- if (ref->is_global == 0)
- {
- objp = ref->v.local_obj;
- if (objp > Local_Variable_Frame)
- {
- SLang_verror (SL_UNDEFINED_NAME, "Local variable reference is out of scope");
- return -1;
- }
- return set_lvalue_obj (_SLANG_BCST_ASSIGN, objp);
- }
-
- nt = ref->v.nt;
- switch (nt->name_type)
- {
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- if (-1 == set_lvalue_obj (_SLANG_BCST_ASSIGN,
- &((SLang_Global_Var_Type *)nt)->obj))
- {
- do_name_type_error (nt);
- return -1;
- }
- break;
-
- case SLANG_IVARIABLE:
- blk.b.nt_blk = nt;
- blk.bc_sub_type = _SLANG_BCST_ASSIGN;
- if (-1 == set_intrin_lvalue (&blk))
- {
- do_name_type_error (nt);
- return -1;
- }
- break;
-
- case SLANG_LVARIABLE:
- SLang_Error = SL_INTERNAL_ERROR;
- /* set_intrin_lvalue (&blk); */
- return -1;
-
- case SLANG_RVARIABLE:
- default:
- SLang_verror (SL_READONLY_ERROR, "deref assignment to %s not allowed", nt->name);
- return -1;
- }
-
- return 0;
-}
-
-static void set_deref_lvalue (SLBlock_Type *bc_blk)
-{
- SLang_Object_Type *objp;
- SLang_Ref_Type *ref;
-
- switch (bc_blk->bc_sub_type)
- {
- case SLANG_LVARIABLE:
- objp = (Local_Variable_Frame - bc_blk->b.i_blk);
- break;
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- objp = &bc_blk->b.nt_gvar_blk->obj;
- break;
- default:
- SLang_Error = SL_INTERNAL_ERROR;
- return;
- }
-
- if (-1 == _SLpush_slang_obj (objp))
- return;
-
- if (-1 == SLang_pop_ref (&ref))
- return;
- (void) _SLang_deref_assign (ref);
- SLang_free_ref (ref);
-}
-
-static int push_struct_field (char *name)
-{
- int type;
- SLang_Class_Type *cl;
-
- if (-1 == (type = SLang_peek_at_stack ()))
- return -1;
-
- cl = _SLclass_get_class ((unsigned char) type);
- if (cl->cl_sget == NULL)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "%s does not permit structure access",
- cl->cl_name);
- SLdo_pop_n (2);
- return -1;
- }
-
- return (*cl->cl_sget) ((unsigned char) type, name);
-}
-
-static void trace_dump (char *format, char *name, SLang_Object_Type *objs, int n, int dir)
-{
- unsigned int len;
- char prefix [52];
-
- len = Trace_Mode - 1;
- if (len + 2 >= sizeof (prefix))
- len = sizeof (prefix) - 2;
-
- SLMEMSET (prefix, ' ', len);
- prefix[len] = 0;
-
- call_dump_routine (prefix);
- call_dump_routine (format, name, n);
-
- if (n > 0)
- {
- prefix[len] = ' ';
- len++;
- prefix[len] = 0;
-
- _SLdump_objects (prefix, objs, n, dir);
- }
-}
-
-/* Pop a data item from the stack and return a pointer to it.
- * Strings are not freed from stack so use another routine to do it.
- */
-static VOID_STAR pop_pointer (SLang_Object_Type *obj, unsigned char type)
-{
-#ifndef _SLANG_OPTIMIZE_FOR_SPEED
- SLang_Class_Type *cl;
-#endif
-
- SLang_Array_Type *at;
-
- /* Arrays are special. Allow scalars to automatically convert to arrays.
- */
- if (type == SLANG_ARRAY_TYPE)
- {
- if (-1 == SLang_pop_array (&at, 1))
- return NULL;
- obj->data_type = SLANG_ARRAY_TYPE;
- return obj->v.ptr_val = (VOID_STAR) at;
- }
-
- if (type == 0)
- {
- /* This happens when an intrinsic is declared without any information
- * regarding parameter types.
- */
- if (-1 == SLang_pop (obj))
- return NULL;
- type = obj->data_type;
- }
- else if (-1 == _SLang_pop_object_of_type (type, obj, 0))
- return NULL;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- type = _SLclass_Class_Type [type];
-#else
- type = _SLclass_get_class (type)->cl_class_type;
-#endif
-
- if (type == SLANG_CLASS_TYPE_SCALAR)
- return (VOID_STAR) &obj->v;
- else if (type == SLANG_CLASS_TYPE_MMT)
- return SLang_object_from_mmt (obj->v.ref);
- else
- return obj->v.ptr_val;
-}
-
-/* This is ugly. Does anyone have a advice for a cleaner way of doing
- * this??
- */
-typedef void (*VF0_Type)(void);
-typedef void (*VF1_Type)(VOID_STAR);
-typedef void (*VF2_Type)(VOID_STAR, VOID_STAR);
-typedef void (*VF3_Type)(VOID_STAR, VOID_STAR, VOID_STAR);
-typedef void (*VF4_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef void (*VF5_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef void (*VF6_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef void (*VF7_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef long (*LF0_Type)(void);
-typedef long (*LF1_Type)(VOID_STAR);
-typedef long (*LF2_Type)(VOID_STAR, VOID_STAR);
-typedef long (*LF3_Type)(VOID_STAR, VOID_STAR, VOID_STAR);
-typedef long (*LF4_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef long (*LF5_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef long (*LF6_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef long (*LF7_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-#if SLANG_HAS_FLOAT
-typedef double (*FF0_Type)(void);
-typedef double (*FF1_Type)(VOID_STAR);
-typedef double (*FF2_Type)(VOID_STAR, VOID_STAR);
-typedef double (*FF3_Type)(VOID_STAR, VOID_STAR, VOID_STAR);
-typedef double (*FF4_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef double (*FF5_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef double (*FF6_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-typedef double (*FF7_Type)(VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR, VOID_STAR);
-#endif
-
-static int execute_intrinsic_fun (SLang_Intrin_Fun_Type *objf)
-{
-#if SLANG_HAS_FLOAT
- double xf;
-#endif
- VOID_STAR p[SLANG_MAX_INTRIN_ARGS];
- SLang_Object_Type objs[SLANG_MAX_INTRIN_ARGS];
- long ret;
- unsigned char type;
- unsigned int argc;
- unsigned int i;
- FVOID_STAR fptr;
- unsigned char *arg_types;
- int stk_depth;
-
- fptr = objf->i_fun;
- argc = objf->num_args;
- type = objf->return_type;
- arg_types = objf->arg_types;
-
- if (argc > SLANG_MAX_INTRIN_ARGS)
- {
- SLang_verror(SL_APPLICATION_ERROR,
- "Intrinsic function %s requires too many parameters", objf->name);
- return -1;
- }
-
- if (-1 == _SL_increment_frame_pointer ())
- return -1;
-
- stk_depth = -1;
- if (Trace_Mode && (_SLang_Trace > 0))
- {
- int nargs;
-
- stk_depth = _SLstack_depth ();
-
- nargs = SLang_Num_Function_Args;
- if (nargs == 0)
- nargs = (int)argc;
-
- stk_depth -= nargs;
-
- if (stk_depth >= 0)
- trace_dump (">>%s (%d args)\n",
- objf->name,
- _SLStack_Pointer - nargs,
- nargs,
- 1);
- }
-
- i = argc;
- while (i != 0)
- {
- i--;
- if (NULL == (p[i] = pop_pointer (objs + i, arg_types[i])))
- {
- i++;
- goto free_and_return;
- }
- }
-
- ret = 0;
-#if SLANG_HAS_FLOAT
- xf = 0.0;
-#endif
-
- switch (argc)
- {
- case 0:
- if (type == SLANG_VOID_TYPE) ((VF0_Type) fptr) ();
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF0_Type) fptr)();
-#endif
- else ret = ((LF0_Type) fptr)();
- break;
-
- case 1:
- if (type == SLANG_VOID_TYPE) ((VF1_Type) fptr)(p[0]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF1_Type) fptr)(p[0]);
-#endif
- else ret = ((LF1_Type) fptr)(p[0]);
- break;
-
- case 2:
- if (type == SLANG_VOID_TYPE) ((VF2_Type) fptr)(p[0], p[1]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF2_Type) fptr)(p[0], p[1]);
-#endif
- else ret = ((LF2_Type) fptr)(p[0], p[1]);
- break;
-
- case 3:
- if (type == SLANG_VOID_TYPE) ((VF3_Type) fptr)(p[0], p[1], p[2]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF3_Type) fptr)(p[0], p[1], p[2]);
-#endif
- else ret = ((LF3_Type) fptr)(p[0], p[1], p[2]);
- break;
-
- case 4:
- if (type == SLANG_VOID_TYPE) ((VF4_Type) fptr)(p[0], p[1], p[2], p[3]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF4_Type) fptr)(p[0], p[1], p[2], p[3]);
-#endif
- else ret = ((LF4_Type) fptr)(p[0], p[1], p[2], p[3]);
- break;
-
- case 5:
- if (type == SLANG_VOID_TYPE) ((VF5_Type) fptr)(p[0], p[1], p[2], p[3], p[4]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF5_Type) fptr)(p[0], p[1], p[2], p[3], p[4]);
-#endif
- else ret = ((LF5_Type) fptr)(p[0], p[1], p[2], p[3], p[4]);
- break;
-
- case 6:
- if (type == SLANG_VOID_TYPE) ((VF6_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF6_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5]);
-#endif
- else ret = ((LF6_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5]);
- break;
-
- case 7:
- if (type == SLANG_VOID_TYPE) ((VF7_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
-#if SLANG_HAS_FLOAT
- else if (type == SLANG_DOUBLE_TYPE) xf = ((FF7_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
-#endif
- else ret = ((LF7_Type) fptr)(p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
- break;
- }
-
- switch (type)
- {
- case SLANG_VOID_TYPE:
- break;
-
-#if SLANG_HAS_FLOAT
- case SLANG_DOUBLE_TYPE:
- (void) SLang_push_double (xf);
- break;
-#endif
- case SLANG_UINT_TYPE:
- case SLANG_INT_TYPE: (void) SLclass_push_int_obj (type, (int) ret);
- break;
-
- case SLANG_CHAR_TYPE:
- case SLANG_UCHAR_TYPE: (void) SLclass_push_char_obj (type, (char) ret);
- break;
-
- case SLANG_SHORT_TYPE:
- case SLANG_USHORT_TYPE: (void) SLclass_push_short_obj (type, (short) ret);
- break;
-
- case SLANG_LONG_TYPE:
- case SLANG_ULONG_TYPE: (void) SLclass_push_long_obj (type, ret);
- break;
-
- case SLANG_STRING_TYPE:
- if (NULL == (char *)ret)
- {
- if (SLang_Error == 0) SLang_Error = SL_INTRINSIC_ERROR;
- }
- else (void) SLang_push_string ((char *)ret);
- break;
-
- default:
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Support for intrinsic functions returning %s is not provided",
- SLclass_get_datatype_name (type));
- }
-
- if (stk_depth >= 0)
- {
- stk_depth = _SLstack_depth () - stk_depth;
-
- trace_dump ("<<%s (returning %d values)\n",
- objf->name,
- _SLStack_Pointer - stk_depth,
- stk_depth,
- 1);
- }
-
- free_and_return:
- while (i < argc)
- {
- SLang_free_object (objs + i);
- i++;
- }
-
- return _SL_decrement_frame_pointer ();
-}
-
-static int inner_interp(register SLBlock_Type *);
-
-/* Switch_Obj_Ptr points to the NEXT available free switch object */
-static SLang_Object_Type Switch_Objects[SLANG_MAX_NESTED_SWITCH];
-static SLang_Object_Type *Switch_Obj_Ptr = Switch_Objects;
-static SLang_Object_Type *Switch_Obj_Max = Switch_Objects + SLANG_MAX_NESTED_SWITCH;
-
-static void
-lang_do_loops (unsigned char stype, SLBlock_Type *block, unsigned int num_blocks)
-{
- int i, ctrl;
- int first, last;
- SLBlock_Type *blks[4];
- char *loop_name;
- SLang_Foreach_Context_Type *foreach_context;
- SLang_Class_Type *cl;
- int type;
- unsigned int j;
-
- j = 0;
- for (i = 0; i < (int) num_blocks; i++)
- {
- if (block[i].bc_main_type != _SLANG_BC_BLOCK)
- {
- if (block[i].bc_main_type == _SLANG_BC_LINE_NUM)
- continue;
-
- SLang_verror (SL_SYNTAX_ERROR, "Bytecode is not a looping block");
- return;
- }
- blks[j] = block[i].b.blk;
- j++;
- }
-
- num_blocks = j;
- block = blks[0];
-
- switch (stype)
- {
- case _SLANG_BCST_FOREACH:
- loop_name = "foreach";
- if (num_blocks != 1)
- goto wrong_num_blocks_error;
-
- /* We should find Next_Function_Num_Args + 1 items on the stack.
- * The first Next_Function_Num_Args items represent the arguments to
- * to USING. The last item (deepest in stack) is the object to loop
- * over. So, roll the stack up and grab it.
- */
- if ((-1 == SLroll_stack (-(Next_Function_Num_Args + 1)))
- || (-1 == (type = SLang_peek_at_stack ())))
- goto return_error;
-
- cl = _SLclass_get_class ((unsigned char) type);
- if ((cl->cl_foreach == NULL)
- || (cl->cl_foreach_open == NULL)
- || (cl->cl_foreach_close == NULL))
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "%s does not permit foreach", cl->cl_name);
- SLdo_pop_n (Next_Function_Num_Args + 1);
- goto return_error;
- }
-
- if (NULL == (foreach_context = (*cl->cl_foreach_open) ((unsigned char)type, Next_Function_Num_Args)))
- goto return_error;
-
- while (1)
- {
- int status;
-
- if (SLang_Error)
- {
- (*cl->cl_foreach_close) ((unsigned char) type, foreach_context);
- goto return_error;
- }
-
- status = (*cl->cl_foreach) ((unsigned char) type, foreach_context);
- if (status <= 0)
- {
- if (status == 0)
- break;
-
- (*cl->cl_foreach_close) ((unsigned char) type, foreach_context);
- goto return_error;
- }
-
- inner_interp (block);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- }
- (*cl->cl_foreach_close) ((unsigned char) type, foreach_context);
- break;
-
- case _SLANG_BCST_WHILE:
- loop_name = "while";
-
- if (num_blocks != 2)
- goto wrong_num_blocks_error;
-
- type = blks[1]->bc_main_type;
- while (1)
- {
- if (SLang_Error)
- goto return_error;
-
- inner_interp (block);
- if (Lang_Break) break;
-
- if (-1 == pop_ctrl_integer (&ctrl))
- goto return_error;
-
- if (ctrl == 0) break;
-
- if (type)
- {
- inner_interp (blks[1]);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- }
- }
- break;
-
- case _SLANG_BCST_DOWHILE:
- loop_name = "do...while";
-
- if (num_blocks != 2)
- goto wrong_num_blocks_error;
-
- while (1)
- {
- if (SLang_Error)
- goto return_error;
-
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- inner_interp (block);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- inner_interp (blks[1]);
- if (-1 == pop_ctrl_integer (&ctrl))
- goto return_error;
-
- if (ctrl == 0) break;
- }
- break;
-
- case _SLANG_BCST_CFOR:
- loop_name = "for";
-
- /* we need 4 blocks: first 3 control, the last is code */
- if (num_blocks != 4) goto wrong_num_blocks_error;
-
- inner_interp (block);
- while (1)
- {
- if (SLang_Error)
- goto return_error;
-
- inner_interp(blks[1]); /* test */
- if (-1 == pop_ctrl_integer (&ctrl))
- goto return_error;
-
- if (ctrl == 0) break;
- inner_interp(blks[3]); /* code */
- if (Lang_Break) break;
- inner_interp(blks[2]); /* bump */
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- }
- break;
-
- case _SLANG_BCST_FOR:
- loop_name = "_for";
-
- if (num_blocks != 1)
- goto wrong_num_blocks_error;
-
- /* 3 elements: first, last, step */
- if ((-1 == SLang_pop_integer (&ctrl))
- || (-1 == SLang_pop_integer (&last))
- || (-1 == SLang_pop_integer (&first)))
- goto return_error;
-
- i = first;
- while (1)
- {
- /* It is ugly to have this test here but I do not know of a
- * simple way to do this without using two while loops.
- */
- if (ctrl >= 0)
- {
- if (i > last) break;
- }
- else if (i < last) break;
-
- if (SLang_Error) goto return_error;
-
- SLclass_push_int_obj (SLANG_INT_TYPE, i);
- inner_interp (block);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
-
- i += ctrl;
- }
- break;
-
- case _SLANG_BCST_LOOP:
- loop_name = "loop";
- if (num_blocks != 1)
- goto wrong_num_blocks_error;
-
- if (-1 == SLang_pop_integer (&ctrl))
- goto return_error;
- while (ctrl > 0)
- {
- ctrl--;
-
- if (SLang_Error)
- goto return_error;
-
- inner_interp (block);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- }
- break;
-
- case _SLANG_BCST_FOREVER:
- loop_name = "forever";
-
- if (num_blocks != 1)
- goto wrong_num_blocks_error;
-
- while (1)
- {
- if (SLang_Error)
- goto return_error;
-
- inner_interp (block);
- if (Lang_Break) break;
- Lang_Break_Condition = /* Lang_Continue = */ 0;
- }
- break;
-
- default: SLang_verror(SL_INTERNAL_ERROR, "Unknown loop type");
- return;
- }
- Lang_Break = /* Lang_Continue = */ 0;
- Lang_Break_Condition = Lang_Return;
- return;
-
- wrong_num_blocks_error:
- SLang_verror (SL_SYNTAX_ERROR, "Wrong number of blocks for '%s' construct", loop_name);
-
- /* drop */
- return_error:
- do_traceback (loop_name, 0, NULL);
-}
-
-static void lang_do_and_orelse (unsigned char stype, SLBlock_Type *addr, SLBlock_Type *addr_max)
-{
- int test = 0;
- int is_or;
-
- is_or = (stype == _SLANG_BCST_ORELSE);
-
- while (addr <= addr_max)
- {
- if (addr->bc_main_type == _SLANG_BC_LINE_NUM)
- {
- addr++;
- continue;
- }
-
- inner_interp (addr->b.blk);
- if (SLang_Error
- || Lang_Break_Condition
- || (-1 == pop_ctrl_integer (&test)))
- return;
-
- if (is_or == (test != 0))
- break;
-
- /* if (((stype == _SLANG_BCST_ANDELSE) && (test == 0))
- * || ((stype == _SLANG_BCST_ORELSE) && test))
- * break;
- */
-
- addr++;
- }
- SLclass_push_int_obj (SLANG_INT_TYPE, test);
-}
-
-static void do_else_if (SLBlock_Type *zero_block, SLBlock_Type *non_zero_block)
-{
- int test;
-
- if (-1 == pop_ctrl_integer (&test))
- return;
-
- if (test == 0)
- non_zero_block = zero_block;
-
- if (non_zero_block != NULL)
- inner_interp (non_zero_block->b.blk);
-}
-
-int _SLang_trace_fun (char *f)
-{
- if (NULL == (f = SLang_create_slstring (f)))
- return -1;
-
- SLang_free_slstring (Trace_Function);
- Trace_Function = f;
- _SLang_Trace = 1;
- return 0;
-}
-
-int _SLdump_objects (char *prefix, SLang_Object_Type *x, unsigned int n, int dir)
-{
- char *s;
- SLang_Class_Type *cl;
-
- while (n)
- {
- cl = _SLclass_get_class (x->data_type);
-
- if (NULL == (s = _SLstringize_object (x)))
- s = "??";
-
- call_dump_routine ("%s[%s]:%s\n", prefix, cl->cl_name, s);
-
- SLang_free_slstring (s);
-
- x += dir;
- n--;
- }
- return 0;
-}
-
-static SLBlock_Type *Exit_Block_Ptr;
-static SLBlock_Type *Global_User_Block[5];
-static SLBlock_Type **User_Block_Ptr = Global_User_Block;
-char *_SLang_Current_Function_Name = NULL;
-
-static int execute_slang_fun (_SLang_Function_Type *fun)
-{
- register unsigned int i;
- register SLang_Object_Type *frame, *lvf;
- register unsigned int n_locals;
- _SLBlock_Header_Type *header;
- /* SLBlock_Type *val; */
- SLBlock_Type *exit_block_save;
- SLBlock_Type **user_block_save;
- SLBlock_Type *user_blocks[5];
- char *save_fname;
-
- exit_block_save = Exit_Block_Ptr;
- user_block_save = User_Block_Ptr;
- User_Block_Ptr = user_blocks;
- *(user_blocks) = NULL;
- *(user_blocks + 1) = NULL;
- *(user_blocks + 2) = NULL;
- *(user_blocks + 3) = NULL;
- *(user_blocks + 4) = NULL;
-
- Exit_Block_Ptr = NULL;
-
- save_fname = _SLang_Current_Function_Name;
- _SLang_Current_Function_Name = fun->name;
-
- _SL_increment_frame_pointer ();
-
- /* need loaded? */
- if (fun->nlocals == AUTOLOAD_NUM_LOCALS)
- {
- header = NULL;
- if (-1 == SLang_load_file(fun->v.autoload_filename))
- goto the_return;
-
- if (fun->nlocals == AUTOLOAD_NUM_LOCALS)
- {
- SLang_verror (SL_UNDEFINED_NAME, "%s: Function did not autoload",
- _SLang_Current_Function_Name);
- goto the_return;
- }
- }
-
- n_locals = fun->nlocals;
-
- /* let the error propagate through since it will do no harm
- and allow us to restore stack. */
-
- /* set new stack frame */
- lvf = frame = Local_Variable_Frame;
- i = n_locals;
- if ((lvf + i) > Local_Variable_Stack + SLANG_MAX_LOCAL_STACK)
- {
- SLang_verror(SL_STACK_OVERFLOW, "%s: Local Variable Stack Overflow",
- _SLang_Current_Function_Name);
- goto the_return;
- }
-
- /* Make sure we do not allow this header to get destroyed by something
- * like: define crash () { eval ("define crash ();") }
- */
- header = fun->v.header;
- header->num_refs++;
-
- while (i--)
- {
- lvf++;
- lvf->data_type = SLANG_UNDEFINED_TYPE;
- }
- Local_Variable_Frame = lvf;
-
- /* read values of function arguments */
- i = fun->nargs;
- while (i > 0)
- {
- i--;
- (void) SLang_pop (Local_Variable_Frame - i);
- }
-
- if (SLang_Enter_Function != NULL) (*SLang_Enter_Function)(_SLang_Current_Function_Name);
-
- if (_SLang_Trace)
- {
- int stack_depth;
-
- stack_depth = _SLstack_depth ();
-
- if ((Trace_Function != NULL)
- && (0 == strcmp (Trace_Function, _SLang_Current_Function_Name))
- && (Trace_Mode == 0))
- Trace_Mode = 1;
-
- if (Trace_Mode)
- {
- /* The local variable frame grows backwards */
- trace_dump (">>%s (%d args)\n",
- _SLang_Current_Function_Name,
- Local_Variable_Frame,
- (int) fun->nargs,
- -1);
- Trace_Mode++;
- }
-
- inner_interp (header->body);
- Lang_Break_Condition = Lang_Return = Lang_Break = 0;
- if (Exit_Block_Ptr != NULL) inner_interp(Exit_Block_Ptr);
-
- if (Trace_Mode)
- {
- Trace_Mode--;
- stack_depth = _SLstack_depth () - stack_depth;
-
- trace_dump ("<<%s (returning %d values)\n",
- _SLang_Current_Function_Name,
- _SLStack_Pointer - stack_depth,
- stack_depth,
- 1);
-
- if (Trace_Mode == 1)
- Trace_Mode = 0;
- }
- }
- else
- {
- inner_interp (header->body);
- Lang_Break_Condition = Lang_Return = Lang_Break = 0;
- if (Exit_Block_Ptr != NULL) inner_interp(Exit_Block_Ptr);
- }
-
- if (SLang_Exit_Function != NULL) (*SLang_Exit_Function)(_SLang_Current_Function_Name);
-
- if (SLang_Error)
- do_traceback(fun->name, n_locals,
-#if _SLANG_HAS_DEBUG_CODE
- fun->file
-#else
- NULL
-#endif
- );
-
- /* free local variables.... */
- lvf = Local_Variable_Frame;
- while (lvf > frame)
- {
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR != _SLclass_Class_Type [lvf->data_type])
-#endif
- SLang_free_object (lvf);
- lvf--;
- }
- Local_Variable_Frame = lvf;
-
- if (header->num_refs == 1)
- free_function_header (header);
- else
- header->num_refs--;
-
- the_return:
-
- Lang_Break_Condition = Lang_Return = Lang_Break = 0;
- Exit_Block_Ptr = exit_block_save;
- User_Block_Ptr = user_block_save;
- _SLang_Current_Function_Name = save_fname;
- _SL_decrement_frame_pointer ();
-
- if (SLang_Error)
- return -1;
-
- return 0;
-}
-
-static void do_traceback (char *name, unsigned int locals, char *file)
-{
- char *s;
- unsigned int i;
- SLang_Object_Type *objp;
- unsigned short stype;
-
- /* FIXME: Priority=low
- * I need to make this configurable!!! That is, let the
- * application decide whether or not a usage error should result in a
- * traceback.
- */
- if (SLang_Error == SL_USAGE_ERROR)
- return;
-
- if (SLang_Traceback == 0)
- return;
-
- call_dump_routine ("S-Lang Traceback: %s\n", name);
- if (SLang_Traceback < 0)
- return;
-
- if (file != NULL)
- call_dump_routine ("File: %s\n", file);
-
- if (locals == 0)
- return;
-
- call_dump_routine (" Local Variables:\n");
-
- for (i = 0; i < locals; i++)
- {
- SLang_Class_Type *cl;
- char *class_name;
-
- objp = Local_Variable_Frame - i;
- stype = objp->data_type;
-
- s = _SLstringize_object (objp);
- cl = _SLclass_get_class (stype);
- class_name = cl->cl_name;
-
- call_dump_routine ("\t$%d: Type: %s,\tValue:\t", i, class_name);
-
- if (s == NULL) call_dump_routine("??\n");
- else
- {
- char *q = "";
-#ifndef HAVE_VSNPRINTF
- char buf[256];
- if (strlen (s) >= sizeof (buf))
- {
- strncpy (buf, s, sizeof(buf));
- s = buf;
- s[sizeof(buf) - 1] = 0;
- }
-#endif
- if (SLANG_STRING_TYPE == stype) q = "\"";
- call_dump_routine ("%s%s%s\n", q, s, q);
- }
- }
-}
-
-static void do_app_unary (SLang_App_Unary_Type *nt)
-{
- if (-1 == do_unary (nt->unary_op, nt->name_type))
- do_traceback (nt->name, 0, NULL);
-}
-
-static int inner_interp_nametype (SLang_Name_Type *nt)
-{
- SLBlock_Type bc_blks[2];
-
- bc_blks[0].b.nt_blk = nt;
- bc_blks[0].bc_main_type = nt->name_type;
- bc_blks[1].bc_main_type = 0;
- return inner_interp(bc_blks);
-}
-
-int _SLang_dereference_ref (SLang_Ref_Type *ref)
-{
- if (ref == NULL)
- {
- SLang_Error = SL_INTERNAL_ERROR;
- return -1;
- }
-
- if (ref->is_global == 0)
- {
- SLang_Object_Type *obj = ref->v.local_obj;
- if (obj > Local_Variable_Frame)
- {
- SLang_verror (SL_UNDEFINED_NAME, "Local variable deref is out of scope");
- return -1;
- }
- return _SLpush_slang_obj (ref->v.local_obj);
- }
-
- (void) inner_interp_nametype (ref->v.nt);
- return 0;
-}
-
-int _SLang_is_ref_initialized (SLang_Ref_Type *ref)
-{
- unsigned char type;
-
- if (ref == NULL)
- {
- SLang_Error = SL_INTERNAL_ERROR;
- return -1;
- }
-
- if (ref->is_global == 0)
- {
- SLang_Object_Type *obj = ref->v.local_obj;
- if (obj > Local_Variable_Frame)
- {
- SLang_verror (SL_UNDEFINED_NAME, "Local variable deref is out of scope");
- return -1;
- }
- type = ref->v.local_obj->data_type;
- }
- else
- {
- SLang_Name_Type *nt = ref->v.nt;
- if ((nt->name_type != SLANG_GVARIABLE)
- && (nt->name_type != SLANG_PVARIABLE))
- return 1;
- type = ((SLang_Global_Var_Type *)nt)->obj.data_type;
- }
- return type != SLANG_UNDEFINED_TYPE;
-}
-
-int _SLang_uninitialize_ref (SLang_Ref_Type *ref)
-{
- SLang_Object_Type *obj;
-
- if (ref == NULL)
- {
- SLang_Error = SL_INTERNAL_ERROR;
- return -1;
- }
-
- if (ref->is_global == 0)
- {
- obj = ref->v.local_obj;
- if (obj > Local_Variable_Frame)
- {
- SLang_verror (SL_UNDEFINED_NAME, "Local variable deref is out of scope");
- return -1;
- }
- obj = ref->v.local_obj;
- }
- else
- {
- SLang_Name_Type *nt = ref->v.nt;
- if ((nt->name_type != SLANG_GVARIABLE)
- && (nt->name_type != SLANG_PVARIABLE))
- return -1;
- obj = &((SLang_Global_Var_Type *)nt)->obj;
- }
- SLang_free_object (obj);
- obj->data_type = SLANG_UNDEFINED_TYPE;
- obj->v.ptr_val = NULL;
- return 0;
-}
-
-void (*SLang_Interrupt)(void);
-static int Last_Error;
-void (*SLang_User_Clear_Error)(void);
-void _SLang_clear_error (void)
-{
- if (Last_Error <= 0)
- {
- Last_Error = 0;
- return;
- }
- Last_Error--;
- if (SLang_User_Clear_Error != NULL) (*SLang_User_Clear_Error)();
-}
-
-int _SLpush_slang_obj (SLang_Object_Type *obj)
-{
- unsigned char subtype;
- SLang_Class_Type *cl;
-
- if (obj == NULL) return SLang_push_null ();
-
- subtype = obj->data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type[subtype])
- return SLang_push (obj);
-#endif
-
- cl = _SLclass_get_class (subtype);
- return (*cl->cl_push) (subtype, (VOID_STAR) &obj->v);
-}
-
-_INLINE_
-static int push_local_variable (int i)
-{
- SLang_Class_Type *cl;
- SLang_Object_Type *obj;
- unsigned char subtype;
-
- obj = Local_Variable_Frame - i;
- subtype = obj->data_type;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type[subtype])
- return SLang_push (obj);
- if (subtype == SLANG_STRING_TYPE)
- return _SLang_dup_and_push_slstring (obj->v.s_val);
-#endif
-
- cl = _SLclass_get_class (subtype);
- return (*cl->cl_push) (subtype, (VOID_STAR) &obj->v);
-}
-
-static int push_intrinsic_variable (SLang_Intrin_Var_Type *ivar)
-{
- SLang_Class_Type *cl;
- unsigned char stype;
-
- stype = ivar->type;
- cl = _SLclass_get_class (stype);
-
- if (-1 == (*cl->cl_push_intrinsic) (stype, ivar->addr))
- {
- do_name_type_error ((SLang_Name_Type *) ivar);
- return -1;
- }
- return 0;
-}
-
-static int dereference_object (void)
-{
- SLang_Object_Type obj;
- SLang_Class_Type *cl;
- unsigned char type;
- int ret;
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- type = obj.data_type;
-
- cl = _SLclass_get_class (type);
- ret = (*cl->cl_dereference)(type, (VOID_STAR) &obj.v);
-
- SLang_free_object (&obj);
- return ret;
-}
-
-static int case_function (void)
-{
- unsigned char type;
- SLang_Object_Type obj;
- SLang_Object_Type *swobjptr;
-
- swobjptr = Switch_Obj_Ptr - 1;
-
- if ((swobjptr < Switch_Objects)
- || (0 == (type = swobjptr->data_type)))
- {
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced 'case' keyword");
- return -1;
- }
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- if (obj.data_type != type)
- {
- SLang_Class_Type *a_cl, *b_cl;
-
- a_cl = _SLclass_get_class (obj.data_type);
- b_cl = _SLclass_get_class (type);
-
- if (NULL == _SLclass_get_binary_fun (SLANG_EQ, a_cl, b_cl, &a_cl, 0))
- {
- (void) SLclass_push_int_obj (SLANG_INT_TYPE, 0);
- SLang_free_object (&obj);
- return 0;
- }
- }
-
- (void) do_binary_ab (SLANG_EQ, swobjptr, &obj);
- SLang_free_object (&obj);
- return 0;
-}
-
-static void tmp_variable_function (SLBlock_Type *addr)
-{
- SLang_Object_Type *obj;
-
- switch (addr->bc_sub_type)
- {
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- obj = &addr->b.nt_gvar_blk->obj;
- break;
-
- case SLANG_LVARIABLE:
- obj = Local_Variable_Frame - addr->b.i_blk;
- break;
-
- default:
- SLang_Error = SL_INTERNAL_ERROR;
- return;
- }
-
- /* There is no need to go through higher level routines since we are
- * not creating or destroying extra copies.
- */
- if (-1 == SLang_push (obj))
- return;
-
- obj->data_type = SLANG_UNDEFINED_TYPE;
- obj->v.ptr_val = NULL;
-}
-
-
-static int
-do_inner_interp_error (SLBlock_Type *err_block,
- SLBlock_Type *addr_start,
- SLBlock_Type *addr)
-{
- int save_err, slerr;
-
- /* Someday I can use the these variable to provide extra information
- * about what went wrong.
- */
- (void) addr_start;
- (void) addr;
-
- if (err_block == NULL)
- goto return_error;
-
- if (SLang_Error < 0) /* errors less than 0 are severe */
- goto return_error;
-
- save_err = Last_Error++;
- slerr = SLang_Error;
- SLang_Error = 0;
- inner_interp (err_block->b.blk);
-
- if (Last_Error <= save_err)
- {
- /* Caught error and cleared it */
- Last_Error = save_err;
- if ((Lang_Break_Condition == 0)
- /* An error may have cleared the error and then caused the
- * function to return. We will allow that but let's not allow
- * 'break' nor 'continue' statements until later.
- */
- || Lang_Return)
- return 0;
-
- /* drop--- either a break or continue was called */
- }
-
- Last_Error = save_err;
- SLang_Error = slerr;
-
- return_error:
-#if _SLANG_HAS_DEBUG_CODE
- while (addr >= addr_start)
- {
- if (addr->bc_main_type == _SLANG_BC_LINE_NUM)
- {
- char buf[256];
- sprintf (buf, "(Error occurred on line %lu)", addr->b.l_blk);
- do_traceback (buf, 0, NULL);
- break;
- }
- /* Special hack for 16 bit systems to prevent pointer wrapping. */
-#if defined(__16_BIT_SYSTEM__)
- if (addr == addr_start)
- break;
-#endif
- addr--;
- }
-#endif
- return -1;
-}
-
-
-#define GATHER_STATISTICS 0
-#if GATHER_STATISTICS
-static unsigned int Bytecodes[0xFFFF];
-
-static void print_stats (void)
-{
- unsigned int i;
- unsigned long total;
- FILE *fp = fopen ("stats.txt", "w");
- if (fp == NULL)
- return;
-
- total = 0;
- for (i = 0; i < 0xFFFF; i++)
- total += Bytecodes[i];
-
- if (total == 0)
- total = 1;
-
- for (i = 0; i < 0xFFFF; i++)
- {
- if (Bytecodes[i])
- fprintf (fp, "0x%04X %9u %e\n", i, Bytecodes[i], Bytecodes[i]/(double) total);
- }
- fclose (fp);
-}
-
-static void add_to_statistics (SLBlock_Type *b)
-{
- unsigned short x, y;
-
- x = b->bc_main_type;
- if (x == 0)
- {
- Bytecodes[0] += 1;
- return;
- }
- b++;
- y = b->bc_main_type;
-
- Bytecodes[(x << 8) | y] += 1;
-}
-
-#endif
-
-/* inner interpreter */
-/* The return value from this function is only meaningful when it is used
- * to process blocks for the switch statement. If it returns 0, the calling
- * routine should pass the next block to it. Otherwise it will
- * return non-zero, with or without error.
- */
-static int inner_interp (SLBlock_Type *addr_start)
-{
- SLBlock_Type *block, *err_block, *addr;
-#if GATHER_STATISTICS
- static int inited = 0;
-
- if (inited == 0)
- {
- (void) SLang_add_cleanup_function (print_stats);
- inited = 1;
- }
-#endif
-
- /* for systems that have no real interrupt facility (e.g. go32 on dos) */
- if (SLang_Interrupt != NULL) (*SLang_Interrupt)();
-
- block = err_block = NULL;
- addr = addr_start;
-
-#if GATHER_STATISTICS
- add_to_statistics (addr);
-#endif
- while (1)
- {
- switch (addr->bc_main_type)
- {
- case 0:
- return 1;
- case _SLANG_BC_LVARIABLE:
- push_local_variable (addr->b.i_blk);
- break;
- case _SLANG_BC_GVARIABLE:
- if (-1 == _SLpush_slang_obj (&addr->b.nt_gvar_blk->obj))
- do_name_type_error (addr->b.nt_blk);
- break;
-
- case _SLANG_BC_IVARIABLE:
- case _SLANG_BC_RVARIABLE:
- push_intrinsic_variable (addr->b.nt_ivar_blk);
- break;
-
- case _SLANG_BC_INTRINSIC:
- execute_intrinsic_fun (addr->b.nt_ifun_blk);
- if (SLang_Error)
- do_traceback(addr->b.nt_ifun_blk->name, 0, NULL);
- break;
-
- case _SLANG_BC_FUNCTION:
- execute_slang_fun (addr->b.nt_fun_blk);
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_MATH_UNARY:
- case _SLANG_BC_APP_UNARY:
- /* Make sure we treat these like function calls since the
- * parser took sin(x) to be a function call.
- */
- if (0 == _SL_increment_frame_pointer ())
- {
- do_app_unary (addr->b.nt_unary_blk);
- (void) _SL_decrement_frame_pointer ();
- }
- break;
-
- case _SLANG_BC_ICONST:
- SLclass_push_int_obj (SLANG_INT_TYPE, addr->b.iconst_blk->i);
- break;
-
-#if SLANG_HAS_FLOAT
- case _SLANG_BC_DCONST:
- SLang_push_double (addr->b.dconst_blk->d);
- break;
-#endif
-
- case _SLANG_BC_PVARIABLE:
- if (-1 == _SLpush_slang_obj (&addr->b.nt_gvar_blk->obj))
- do_name_type_error (addr->b.nt_blk);
- break;
-
- case _SLANG_BC_PFUNCTION:
- execute_slang_fun (addr->b.nt_fun_blk);
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_BINARY:
- do_binary (addr->b.i_blk);
- break;
-
- case _SLANG_BC_LITERAL:
-#if !_SLANG_OPTIMIZE_FOR_SPEED
- case _SLANG_BC_LITERAL_INT:
- case _SLANG_BC_LITERAL_STR:
-#endif
- {
- SLang_Class_Type *cl = _SLclass_get_class (addr->bc_sub_type);
- (*cl->cl_push_literal) (addr->bc_sub_type, (VOID_STAR) &addr->b.ptr_blk);
- }
- break;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- case _SLANG_BC_LITERAL_INT:
- SLclass_push_int_obj (addr->bc_sub_type, (int) addr->b.l_blk);
- break;
-
- case _SLANG_BC_LITERAL_STR:
- _SLang_dup_and_push_slstring (addr->b.s_blk);
- break;
-#endif
- case _SLANG_BC_BLOCK:
- switch (addr->bc_sub_type)
- {
- case _SLANG_BCST_ERROR_BLOCK:
- err_block = addr;
- break;
-
- case _SLANG_BCST_EXIT_BLOCK:
- Exit_Block_Ptr = addr->b.blk;
- break;
-
- case _SLANG_BCST_USER_BLOCK0:
- case _SLANG_BCST_USER_BLOCK1:
- case _SLANG_BCST_USER_BLOCK2:
- case _SLANG_BCST_USER_BLOCK3:
- case _SLANG_BCST_USER_BLOCK4:
- User_Block_Ptr[addr->bc_sub_type - _SLANG_BCST_USER_BLOCK0] = addr->b.blk;
- break;
-
- case _SLANG_BCST_LOOP:
- case _SLANG_BCST_WHILE:
- case _SLANG_BCST_FOR:
- case _SLANG_BCST_FOREVER:
- case _SLANG_BCST_CFOR:
- case _SLANG_BCST_DOWHILE:
- case _SLANG_BCST_FOREACH:
- if (block == NULL) block = addr;
- lang_do_loops(addr->bc_sub_type, block, 1 + (unsigned int) (addr - block));
- block = NULL;
- break;
-
- case _SLANG_BCST_IFNOT:
-#if _SLANG_OPTIMIZE_FOR_SPEED
- {
- int i;
-
- if ((0 == pop_ctrl_integer (&i)) && (i == 0))
- inner_interp (addr->b.blk);
- }
-#else
- do_else_if (addr, NULL);
-#endif
- break;
-
- case _SLANG_BCST_IF:
-#if _SLANG_OPTIMIZE_FOR_SPEED
- {
- int i;
-
- if ((0 == pop_ctrl_integer (&i)) && i)
- inner_interp (addr->b.blk);
- }
-#else
- do_else_if (NULL, addr);
-#endif
- break;
-
- case _SLANG_BCST_NOTELSE:
- do_else_if (block, addr);
- block = NULL;
- break;
-
- case _SLANG_BCST_ELSE:
- do_else_if (addr, block);
- block = NULL;
- break;
-
- case _SLANG_BCST_SWITCH:
- if (Switch_Obj_Ptr == Switch_Obj_Max)
- {
- SLang_doerror("switch nesting too deep");
- break;
- }
- (void) SLang_pop (Switch_Obj_Ptr);
- Switch_Obj_Ptr++;
-
- if (block == NULL) block = addr;
- while ((SLang_Error == 0)
- && (block <= addr)
- && (Lang_Break_Condition == 0)
- && (0 == inner_interp (block->b.blk)))
- block++;
- Switch_Obj_Ptr--;
- SLang_free_object (Switch_Obj_Ptr);
- Switch_Obj_Ptr->data_type = 0;
- block = NULL;
- break;
-
- case _SLANG_BCST_ANDELSE:
- case _SLANG_BCST_ORELSE:
- if (block == NULL) block = addr;
- lang_do_and_orelse (addr->bc_sub_type, block, addr);
- block = NULL;
- break;
-
- default:
- if (block == NULL) block = addr;
- break;
- }
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_RETURN:
- Lang_Break_Condition = Lang_Return = Lang_Break = 1; return 1;
- case _SLANG_BC_BREAK:
- Lang_Break_Condition = Lang_Break = 1; return 1;
- case _SLANG_BC_CONTINUE:
- Lang_Break_Condition = /* Lang_Continue = */ 1; return 1;
-
- case _SLANG_BC_EXCH:
- (void) SLreverse_stack (2);
- break;
-
- case _SLANG_BC_LABEL:
- {
- int test;
- if ((0 == SLang_pop_integer (&test))
- && (test == 0))
- return 0;
- }
- break;
-
- case _SLANG_BC_LOBJPTR:
- (void)_SLang_push_ref (0, (VOID_STAR)(Local_Variable_Frame - addr->b.i_blk));
- break;
-
- case _SLANG_BC_GOBJPTR:
- (void)_SLang_push_ref (1, (VOID_STAR)addr->b.nt_blk);
- break;
-
- case _SLANG_BC_X_ERROR:
- if (err_block != NULL)
- {
- inner_interp(err_block->b.blk);
- if (SLang_Error) err_block = NULL;
- }
- else SLang_verror(SL_SYNTAX_ERROR, "No ERROR_BLOCK");
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_X_USER0:
- case _SLANG_BC_X_USER1:
- case _SLANG_BC_X_USER2:
- case _SLANG_BC_X_USER3:
- case _SLANG_BC_X_USER4:
- if (User_Block_Ptr[addr->bc_main_type - _SLANG_BC_X_USER0] != NULL)
- {
- inner_interp(User_Block_Ptr[addr->bc_main_type - _SLANG_BC_X_USER0]);
- }
- else SLang_verror(SL_SYNTAX_ERROR, "No block for X_USERBLOCK");
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_CALL_DIRECT:
- (*addr->b.call_function) ();
- break;
-
- case _SLANG_BC_CALL_DIRECT_FRAME:
- do_bc_call_direct_frame (addr->b.call_function);
- break;
-
- case _SLANG_BC_UNARY:
- do_unary (addr->b.i_blk, _SLANG_BC_UNARY);
- break;
-
- case _SLANG_BC_UNARY_FUNC:
- /* Make sure we treat these like function calls since the
- * parser took abs(x) to be a function call.
- */
- if (0 == _SL_increment_frame_pointer ())
- {
- do_unary (addr->b.i_blk, _SLANG_BC_UNARY);
- (void) _SL_decrement_frame_pointer ();
- }
- break;
-
- case _SLANG_BC_DEREF_ASSIGN:
- set_deref_lvalue (addr);
- break;
- case _SLANG_BC_SET_LOCAL_LVALUE:
- set_lvalue_obj (addr->bc_sub_type, Local_Variable_Frame - addr->b.i_blk);
- break;
- case _SLANG_BC_SET_GLOBAL_LVALUE:
- if (-1 == set_lvalue_obj (addr->bc_sub_type, &addr->b.nt_gvar_blk->obj))
- do_name_type_error (addr->b.nt_blk);
- break;
- case _SLANG_BC_SET_INTRIN_LVALUE:
- set_intrin_lvalue (addr);
- break;
- case _SLANG_BC_SET_STRUCT_LVALUE:
- set_struct_lvalue (addr);
- break;
-
- case _SLANG_BC_FIELD:
- (void) push_struct_field (addr->b.s_blk);
- break;
-
- case _SLANG_BC_SET_ARRAY_LVALUE:
- set_array_lvalue (addr->bc_sub_type);
- break;
-
-#if _SLANG_HAS_DEBUG_CODE
- case _SLANG_BC_LINE_NUM:
- break;
-#endif
-
- case _SLANG_BC_TMP:
- tmp_variable_function (addr);
- break;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- case _SLANG_BC_LVARIABLE_AGET:
- if (0 == push_local_variable (addr->b.i_blk))
- do_bc_call_direct_frame (_SLarray_aget);
- break;
-
- case _SLANG_BC_LVARIABLE_APUT:
- if (0 == push_local_variable (addr->b.i_blk))
- do_bc_call_direct_frame (_SLarray_aput);
- break;
- case _SLANG_BC_INTEGER_PLUS:
- if (0 == SLclass_push_int_obj (addr->bc_sub_type, (int) addr->b.l_blk))
- do_binary (SLANG_PLUS);
- break;
-
- case _SLANG_BC_INTEGER_MINUS:
- if (0 == SLclass_push_int_obj (addr->bc_sub_type, (int) addr->b.l_blk))
- do_binary (SLANG_MINUS);
- break;
-#endif
-#if 0
- case _SLANG_BC_ARG_LVARIABLE:
- (void) SLang_start_arg_list ();
- push_local_variable (addr->b.i_blk);
- break;
-#endif
- case _SLANG_BC_EARG_LVARIABLE:
- push_local_variable (addr->b.i_blk);
- (void) SLang_end_arg_list ();
- break;
-
-#if USE_COMBINED_BYTECODES
- case _SLANG_BC_CALL_DIRECT_INTRINSIC:
- (*addr->b.call_function) ();
- addr++;
- execute_intrinsic_fun (addr->b.nt_ifun_blk);
- if (SLang_Error)
- do_traceback(addr->b.nt_ifun_blk->name, 0, NULL);
- break;
-
- case _SLANG_BC_INTRINSIC_CALL_DIRECT:
- execute_intrinsic_fun (addr->b.nt_ifun_blk);
- if (SLang_Error)
- {
- do_traceback(addr->b.nt_ifun_blk->name, 0, NULL);
- break;
- }
- addr++;
- (*addr->b.call_function) ();
- break;
-
- case _SLANG_BC_CALL_DIRECT_LSTR:
- (*addr->b.call_function) ();
- addr++;
- _SLang_dup_and_push_slstring (addr->b.s_blk);
- break;
-
- case _SLANG_BC_CALL_DIRECT_SLFUN:
- (*addr->b.call_function) ();
- addr++;
- execute_slang_fun (addr->b.nt_fun_blk);
- if (Lang_Break_Condition) goto handle_break_condition;
- break;
-
- case _SLANG_BC_CALL_DIRECT_INTRSTOP:
- (*addr->b.call_function) ();
- addr++;
- /* drop */
- case _SLANG_BC_INTRINSIC_STOP:
- execute_intrinsic_fun (addr->b.nt_ifun_blk);
- if (SLang_Error == 0)
- return 1;
- do_traceback(addr->b.nt_ifun_blk->name, 0, NULL);
- break;
-
- case _SLANG_BC_CALL_DIRECT_EARG_LVAR:
- (*addr->b.call_function) ();
- addr++;
- push_local_variable (addr->b.i_blk);
- (void) SLang_end_arg_list ();
- break;
-
- case _SLANG_BC_CALL_DIRECT_LINT:
- (*addr->b.call_function) ();
- addr++;
- SLclass_push_int_obj (addr->bc_sub_type, (int) addr->b.l_blk);
- break;
-
- case _SLANG_BC_CALL_DIRECT_LVAR:
- (*addr->b.call_function) ();
- addr++;
- push_local_variable (addr->b.i_blk);
- break;
-#endif /* USE_COMBINED_BYTECODES */
-
- default:
- SLang_verror (SL_INTERNAL_ERROR, "Byte-Code 0x%X is not valid", addr->bc_main_type);
- }
-
- /* Someday I plan to add a 'signal' intrinsic function. Then when a
- * signal is caught, a variable will be set to one and that value of
- * that variable will need to be monitored here, e.g.,
- * if (Handle_Signal) handle_signal ();
- * It would be nice to check only one variable instead of Handle_Signal
- * and SLang_Error. Perhaps I should phase out SLang_Error = xxx
- * and used something like: SLang_set_error (code); Then, I could
- * use:
- * if (Handle_Condition)
- * {
- * Handle_Condition = 0;
- * if (SLang_Error) ....
- * else if (Handle_Signal) handle_signal ();
- * else....
- * }
- */
- if (SLang_Error)
- {
- if (-1 == do_inner_interp_error (err_block, addr_start, addr))
- return 1;
- if (SLang_Error)
- return 1;
-
- /* Otherwise, error cleared. Continue onto next bytecode.
- * Someday I need to add something to indicate where the
- * next statement begins since continuing on the next
- * bytecode is not really what is desired.
- */
- if (Lang_Break_Condition) goto handle_break_condition;
- }
- addr++;
- }
-
- handle_break_condition:
- /* Get here if Lang_Break_Condition != 0, which implies that either
- * Lang_Return, Lang_Break, or Lang_Continue is non zero
- */
- if (Lang_Return)
- Lang_Break = 1;
-
- return 1;
-}
-
-/*}}}*/
-
-/* The functions below this point are used to implement the parsed token
- * to byte-compiled code.
- */
-/* static SLang_Name_Type **Static_Hash_Table; */
-
-static SLang_Name_Type **Locals_Hash_Table;
-static int Local_Variable_Number;
-static unsigned int Function_Args_Number;
-int _SLang_Auto_Declare_Globals = 0;
-int (*SLang_Auto_Declare_Var_Hook) (char *);
-
-static SLang_NameSpace_Type *This_Static_NameSpace;
-static SLang_NameSpace_Type *Global_NameSpace;
-
-#if _SLANG_HAS_DEBUG_CODE
-static char *This_Compile_Filename;
-#endif
-static SLBlock_Type SLShort_Blocks[6];
-/* These are initialized in add_table below. I cannot init a Union!! */
-
-static int Lang_Defining_Function;
-static void (*Default_Variable_Mode) (_SLang_Token_Type *);
-static void (*Default_Define_Function) (char *, unsigned long);
-
-static int push_compile_context (char *);
-static int pop_compile_context (void);
-
-typedef struct
-{
- int block_type;
- SLBlock_Type *block; /* beginning of block definition */
- SLBlock_Type *block_ptr; /* current location */
- SLBlock_Type *block_max; /* end of definition */
- SLang_NameSpace_Type *static_namespace;
-}
-Block_Context_Type;
-
-static Block_Context_Type Block_Context_Stack [SLANG_MAX_BLOCK_STACK_LEN];
-static unsigned int Block_Context_Stack_Len;
-
-static SLBlock_Type *Compile_ByteCode_Ptr;
-static SLBlock_Type *This_Compile_Block;
-static SLBlock_Type *This_Compile_Block_Max;
-static int This_Compile_Block_Type;
-#define COMPILE_BLOCK_TYPE_FUNCTION 1
-#define COMPILE_BLOCK_TYPE_BLOCK 2
-#define COMPILE_BLOCK_TYPE_TOP_LEVEL 3
-
-/* If it returns 0, DO NOT FREE p */
-static int lang_free_branch (SLBlock_Type *p)
-{
- /* Note: we look at 0,2,4, since these blocks are 0 terminated */
- if ((p == SLShort_Blocks)
- || (p == SLShort_Blocks + 2)
- || (p == SLShort_Blocks + 4)
- )
- return 0;
-
- while (1)
- {
- SLang_Class_Type *cl;
-
- switch (p->bc_main_type)
- {
- case _SLANG_BC_BLOCK:
- if (lang_free_branch(p->b.blk))
- SLfree((char *)p->b.blk);
- break;
-
- case _SLANG_BC_LITERAL:
- case _SLANG_BC_LITERAL_STR:
- /* No user types should be here. */
- cl = _SLclass_get_class (p->bc_sub_type);
- (*cl->cl_byte_code_destroy) (p->bc_sub_type, (VOID_STAR) &p->b.ptr_blk);
- break;
-
- case _SLANG_BC_FIELD:
- case _SLANG_BC_SET_STRUCT_LVALUE:
- SLang_free_slstring (p->b.s_blk);
- break;
-
- default:
- break;
-
- case 0:
- return 1;
- }
- p++;
- }
-}
-
-static void free_function_header (_SLBlock_Header_Type *h)
-{
- if (h->num_refs > 1)
- {
- h->num_refs--;
- return;
- }
-
- if (h->body != NULL)
- {
- if (lang_free_branch (h->body))
- SLfree ((char *) h->body);
- }
-
- SLfree ((char *) h);
-}
-
-static int push_block_context (int type)
-{
- Block_Context_Type *c;
- unsigned int num;
- SLBlock_Type *b;
-
- if (Block_Context_Stack_Len == SLANG_MAX_BLOCK_STACK_LEN)
- {
- SLang_verror (SL_STACK_OVERFLOW, "Block stack overflow");
- return -1;
- }
-
- num = 5; /* 40 bytes */
- if (NULL == (b = (SLBlock_Type *) SLcalloc (num, sizeof (SLBlock_Type))))
- return -1;
-
- c = Block_Context_Stack + Block_Context_Stack_Len;
- c->block = This_Compile_Block;
- c->block_ptr = Compile_ByteCode_Ptr;
- c->block_max = This_Compile_Block_Max;
- c->block_type = This_Compile_Block_Type;
- c->static_namespace = This_Static_NameSpace;
-
- Compile_ByteCode_Ptr = This_Compile_Block = b;
- This_Compile_Block_Max = b + num;
- This_Compile_Block_Type = type;
-
- Block_Context_Stack_Len += 1;
- return 0;
-}
-
-static int pop_block_context (void)
-{
- Block_Context_Type *c;
-
- if (Block_Context_Stack_Len == 0)
- return -1;
-
- Block_Context_Stack_Len -= 1;
- c = Block_Context_Stack + Block_Context_Stack_Len;
-
- This_Compile_Block = c->block;
- This_Compile_Block_Max = c->block_max;
- This_Compile_Block_Type = c->block_type;
- Compile_ByteCode_Ptr = c->block_ptr;
- This_Static_NameSpace = c->static_namespace;
-
- return 0;
-}
-
-int _SLcompile_push_context (SLang_Load_Type *load_object)
-{
- if (-1 == push_compile_context (load_object->name))
- return -1;
-
- if (NULL == (This_Static_NameSpace = _SLns_allocate_namespace (load_object->name, SLSTATIC_HASH_TABLE_SIZE)))
- {
- pop_compile_context ();
- return -1;
- }
-
- if (-1 == push_block_context (COMPILE_BLOCK_TYPE_TOP_LEVEL))
- {
- pop_compile_context ();
- return -1;
- }
-
- return 0;
-}
-
-int _SLcompile_pop_context (void)
-{
- if (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- Compile_ByteCode_Ptr->bc_main_type = 0;
- if (lang_free_branch (This_Compile_Block))
- SLfree ((char *) This_Compile_Block);
- }
-
- (void) pop_block_context ();
- (void) pop_compile_context ();
-
- if (This_Compile_Block == NULL)
- return 0;
-
-#if 0
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- SLang_verror (SL_INTERNAL_ERROR, "Not at top-level");
- return -1;
- }
-#endif
-
- return 0;
-}
-
-/*{{{ Hash and Name Table Functions */
-
-static SLang_Name_Type *locate_name_in_table (char *name, unsigned long hash,
- SLang_Name_Type **table, unsigned int table_size)
-{
- SLang_Name_Type *t;
- char ch;
-
- t = table [(unsigned int) (hash % table_size)];
- ch = *name++;
-
- while (t != NULL)
- {
- if ((ch == t->name[0])
- && (0 == strcmp (t->name + 1, name)))
- break;
-
- t = t->next;
- }
-
- return t;
-}
-
-static SLang_Name_Type *locate_namespace_encoded_name (char *name, int err_on_bad_ns)
-{
- char *ns, *ns1;
- SLang_NameSpace_Type *table;
- SLang_Name_Type *nt;
-
- ns = name;
- name = strchr (name, '-');
- if ((name == NULL) || (name [1] != '>'))
- name = ns;
-
- ns1 = SLang_create_nslstring (ns, (unsigned int) (name - ns));
- if (ns1 == NULL)
- return NULL;
- if (ns != name)
- name += 2;
- ns = ns1;
-
- if (*ns == 0)
- {
- /* Use Global Namespace */
- SLang_free_slstring (ns);
- return locate_name_in_table (name, _SLcompute_string_hash (name),
- Global_NameSpace->table, Global_NameSpace->table_size);
- }
-
- if (NULL == (table = _SLns_find_namespace (ns)))
- {
- if (err_on_bad_ns)
- SLang_verror (SL_SYNTAX_ERROR, "Unable to find namespace called %s", ns);
- SLang_free_slstring (ns);
- return NULL;
- }
- SLang_free_slstring (ns);
-
- /* FIXME: the hash table size should be stored in the hash table itself */
- nt = locate_name_in_table (name, _SLcompute_string_hash (name),
- table->table, table->table_size);
- if (nt == NULL)
- return NULL;
-
- switch (nt->name_type)
- {
- /* These are private and cannot be accessed through the namespace. */
- case SLANG_PVARIABLE:
- case SLANG_PFUNCTION:
- return NULL;
- }
- return nt;
-}
-
-static SLang_Name_Type *locate_hashed_name (char *name, unsigned long hash)
-{
- SLang_Name_Type *t;
-
- if (Lang_Defining_Function)
- {
- t = locate_name_in_table (name, hash, Locals_Hash_Table, SLLOCALS_HASH_TABLE_SIZE);
- if (t != NULL)
- return t;
- }
-
- if ((This_Static_NameSpace != NULL)
- && (NULL != (t = locate_name_in_table (name, hash, This_Static_NameSpace->table, This_Static_NameSpace->table_size))))
- return t;
-
- t = locate_name_in_table (name, hash, Global_NameSpace->table, Global_NameSpace->table_size);
- if (NULL != t)
- return t;
-
- return locate_namespace_encoded_name (name, 1);
-}
-
-SLang_Name_Type *_SLlocate_name (char *name)
-{
- return locate_hashed_name (name, _SLcompute_string_hash (name));
-}
-
-static SLang_Name_Type *
-add_name_to_hash_table (char *name, unsigned long hash,
- unsigned int sizeof_obj, unsigned char name_type,
- SLang_Name_Type **table, unsigned int table_size,
- int check_existing)
-{
- SLang_Name_Type *t;
-
- if (check_existing)
- {
- t = locate_name_in_table (name, hash, table, table_size);
- if (t != NULL)
- return t;
- }
-
- if (-1 == _SLcheck_identifier_syntax (name))
- return NULL;
-
- t = (SLang_Name_Type *) SLmalloc (sizeof_obj);
- if (t == NULL)
- return t;
-
- memset ((char *) t, 0, sizeof_obj);
- if (NULL == (t->name = _SLstring_dup_hashed_string (name, hash)))
- {
- SLfree ((char *) t);
- return NULL;
- }
- t->name_type = name_type;
-
- hash = hash % table_size;
- t->next = table [(unsigned int)hash];
- table [(unsigned int) hash] = t;
-
- return t;
-}
-
-static SLang_Name_Type *
-add_global_name (char *name, unsigned long hash,
- unsigned char name_type, unsigned int sizeof_obj,
- SLang_NameSpace_Type *ns)
-{
- SLang_Name_Type *nt;
- SLang_Name_Type **table;
- unsigned int table_size;
-
- table = ns->table;
- table_size = ns->table_size;
-
- nt = locate_name_in_table (name, hash, table, table_size);
- if (nt != NULL)
- {
- if (nt->name_type == name_type)
- return nt;
-
- SLang_verror (SL_DUPLICATE_DEFINITION, "%s cannot be re-defined", name);
- return NULL;
- }
-
- return add_name_to_hash_table (name, hash, sizeof_obj, name_type,
- table, table_size, 0);
-}
-
-static int add_intrinsic_function (SLang_NameSpace_Type *ns,
- char *name, FVOID_STAR addr, unsigned char ret_type,
- unsigned int nargs, va_list ap)
-{
- SLang_Intrin_Fun_Type *f;
- unsigned int i;
-
- if (-1 == init_interpreter ())
- return -1;
-
- if (ns == NULL) ns = Global_NameSpace;
-
- if (nargs > SLANG_MAX_INTRIN_ARGS)
- {
- SLang_verror (SL_APPLICATION_ERROR, "Function %s requires too many arguments", name);
- return -1;
- }
-
- if (ret_type == SLANG_FLOAT_TYPE)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "Function %s is not permitted to return float", name);
- return -1;
- }
-
- f = (SLang_Intrin_Fun_Type *) add_global_name (name, _SLcompute_string_hash (name),
- SLANG_INTRINSIC, sizeof (SLang_Intrin_Fun_Type),
- ns);
-
- if (f == NULL)
- return -1;
-
- f->i_fun = addr;
- f->num_args = nargs;
- f->return_type = ret_type;
-
- for (i = 0; i < nargs; i++)
- f->arg_types [i] = va_arg (ap, unsigned int);
-
- return 0;
-}
-
-int SLadd_intrinsic_function (char *name, FVOID_STAR addr, unsigned char ret_type,
- unsigned int nargs, ...)
-{
- va_list ap;
- int status;
-
- va_start (ap, nargs);
- status = add_intrinsic_function (NULL, name, addr, ret_type, nargs, ap);
- va_end (ap);
-
- return status;
-}
-
-int SLns_add_intrinsic_function (SLang_NameSpace_Type *ns,
- char *name, FVOID_STAR addr, unsigned char ret_type,
- unsigned int nargs, ...)
-{
- va_list ap;
- int status;
-
- va_start (ap, nargs);
- status = add_intrinsic_function (ns, name, addr, ret_type, nargs, ap);
- va_end (ap);
-
- return status;
-}
-
-int SLns_add_intrinsic_variable (SLang_NameSpace_Type *ns,
- char *name, VOID_STAR addr, unsigned char data_type, int ro)
-{
- SLang_Intrin_Var_Type *v;
-
- if (-1 == init_interpreter ())
- return -1;
-
- if (ns == NULL) ns = Global_NameSpace;
-
- v = (SLang_Intrin_Var_Type *)add_global_name (name,
- _SLcompute_string_hash (name),
- (ro ? SLANG_RVARIABLE : SLANG_IVARIABLE),
- sizeof (SLang_Intrin_Var_Type),
- ns);
- if (v == NULL)
- return -1;
-
- v->addr = addr;
- v->type = data_type;
- return 0;
-}
-
-int SLadd_intrinsic_variable (char *name, VOID_STAR addr, unsigned char data_type, int ro)
-{
- return SLns_add_intrinsic_variable (NULL, name, addr, data_type, ro);
-}
-
-static int
-add_slang_function (char *name, unsigned char type, unsigned long hash,
- unsigned int num_args, unsigned int num_locals,
-#if _SLANG_HAS_DEBUG_CODE
- char *file,
-#endif
- _SLBlock_Header_Type *h,
- SLang_NameSpace_Type *ns)
-{
- _SLang_Function_Type *f;
-
-#if _SLANG_HAS_DEBUG_CODE
- if ((file != NULL)
- && (NULL == (file = SLang_create_slstring (file))))
- return -1;
-#endif
-
- f = (_SLang_Function_Type *)add_global_name (name, hash,
- type,
- sizeof (_SLang_Function_Type),
- ns);
- if (f == NULL)
- {
-#if _SLANG_HAS_DEBUG_CODE
- SLang_free_slstring (file); /* NULL ok */
-#endif
- return -1;
- }
-
- if (f->v.header != NULL)
- {
- if (f->nlocals == AUTOLOAD_NUM_LOCALS)
- SLang_free_slstring ((char *)f->v.autoload_filename); /* autoloaded filename */
- else
- free_function_header (f->v.header);
- }
-
-#if _SLANG_HAS_DEBUG_CODE
- if (f->file != NULL) SLang_free_slstring (f->file);
- f->file = file;
-#endif
- f->v.header = h;
- f->nlocals = num_locals;
- f->nargs = num_args;
-
- return 0;
-}
-
-int SLang_autoload (char *name, char *file)
-{
- _SLang_Function_Type *f;
- unsigned long hash;
-
- hash = _SLcompute_string_hash (name);
- f = (_SLang_Function_Type *)locate_name_in_table (name, hash, Global_NameSpace->table, Global_NameSpace->table_size);
-
- if ((f != NULL)
- && (f->name_type == SLANG_FUNCTION)
- && (f->v.header != NULL)
- && (f->nlocals != AUTOLOAD_NUM_LOCALS))
- {
- /* already loaded */
- return 0;
- }
-
- file = SLang_create_slstring (file);
- if (-1 == add_slang_function (name, SLANG_FUNCTION, hash, 0, AUTOLOAD_NUM_LOCALS,
-#if _SLANG_HAS_DEBUG_CODE
- file,
-#endif
- (_SLBlock_Header_Type *) file,
- Global_NameSpace))
- {
- SLang_free_slstring (file);
- return -1;
- }
-
- return 0;
-}
-
-SLang_Name_Type *_SLlocate_global_name (char *name)
-{
- unsigned long hash;
-
- hash = _SLcompute_string_hash (name);
- return locate_name_in_table (name, hash, Global_NameSpace->table,
- Global_NameSpace->table_size);
-}
-
-/*}}}*/
-
-static void free_local_variable_table (void)
-{
- unsigned int i;
- SLang_Name_Type *t, *t1;
-
- for (i = 0; i < SLLOCALS_HASH_TABLE_SIZE; i++)
- {
- t = Locals_Hash_Table [i];
- while (t != NULL)
- {
- SLang_free_slstring (t->name);
- t1 = t->next;
- SLfree ((char *) t);
- t = t1;
- }
- Locals_Hash_Table [i] = NULL;
- }
- Local_Variable_Number = 0;
-}
-
-/* call inner interpreter or return for more */
-static void lang_try_now(void)
-{
- Compile_ByteCode_Ptr++;
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_TOP_LEVEL)
- return;
-
- Compile_ByteCode_Ptr->bc_main_type = 0; /* so next command stops after this */
-
- /* now do it */
- inner_interp (This_Compile_Block);
- (void) lang_free_branch (This_Compile_Block);
- Compile_ByteCode_Ptr = This_Compile_Block;
-}
-
-SLang_Name_Type *SLang_get_fun_from_ref (SLang_Ref_Type *ref)
-{
- if (ref->is_global)
- {
- SLang_Name_Type *nt = ref->v.nt;
-
- switch (nt->name_type)
- {
- case SLANG_PFUNCTION:
- case SLANG_FUNCTION:
- case SLANG_INTRINSIC:
- case SLANG_MATH_UNARY:
- case SLANG_APP_UNARY:
- return nt;
- }
- SLang_verror (SL_TYPE_MISMATCH,
- "Reference to a function expected. Found &%s",
- nt->name);
- }
-
- SLang_verror (SL_TYPE_MISMATCH,
- "Reference to a function expected");
- return NULL;
-}
-
-int SLexecute_function (SLang_Name_Type *nt)
-{
- unsigned char type;
- char *name;
-
- if (SLang_Error)
- return -1;
-
- type = nt->name_type;
- name = nt->name;
-
- switch (type)
- {
- case SLANG_PFUNCTION:
- case SLANG_FUNCTION:
- execute_slang_fun ((_SLang_Function_Type *) nt);
- break;
-
- case SLANG_INTRINSIC:
- execute_intrinsic_fun ((SLang_Intrin_Fun_Type *) nt);
- break;
-
- case SLANG_MATH_UNARY:
- case SLANG_APP_UNARY:
- inner_interp_nametype (nt);
- break;
-
- default:
- SLang_verror (SL_TYPE_MISMATCH, "%s is not a function", name);
- return -1;
- }
-
- if (SLang_Error)
- {
- SLang_verror (SLang_Error, "Error while executing %s", name);
- return -1;
- }
-
- return 1;
-}
-
-int SLang_execute_function (char *name)
-{
- SLang_Name_Type *entry;
-
- if (NULL == (entry = SLang_get_function (name)))
- return 0;
-
- return SLexecute_function (entry);
-}
-
-/* return S-Lang function or NULL */
-SLang_Name_Type *SLang_get_function (char *name)
-{
- SLang_Name_Type *entry;
-
- if (NULL == (entry = locate_namespace_encoded_name (name, 0)))
- return NULL;
-
- if ((entry->name_type == SLANG_FUNCTION)
- || (entry->name_type == SLANG_INTRINSIC))
- return entry;
-
- return NULL;
-}
-
-static void lang_begin_function (void)
-{
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Function nesting is illegal");
- return;
- }
- Lang_Defining_Function = 1;
- (void) push_block_context (COMPILE_BLOCK_TYPE_FUNCTION);
-}
-
-#if USE_COMBINED_BYTECODES
-static void optimize_block (SLBlock_Type *b)
-{
- while (1)
- {
- switch (b->bc_main_type)
- {
- case 0:
- return;
-
- default:
- b++;
- break;
-
- case _SLANG_BC_CALL_DIRECT:
- b++;
- switch (b->bc_main_type)
- {
- case 0:
- return;
- case _SLANG_BC_INTRINSIC:
- if ((b+1)->bc_main_type == 0)
- {
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_INTRSTOP;
- return;
- }
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_INTRINSIC;
- b++;
- break;
- case _SLANG_BC_LITERAL_STR:
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_LSTR;
- b++;
- break;
- case _SLANG_BC_FUNCTION:
- case _SLANG_BC_PFUNCTION:
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_SLFUN;
- b++;
- break;
- case _SLANG_BC_EARG_LVARIABLE:
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_EARG_LVAR;
- b++;
- break;
- case _SLANG_BC_LITERAL_INT:
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_LINT;
- b++;
- break;
- case _SLANG_BC_LVARIABLE:
- (b-1)->bc_main_type = _SLANG_BC_CALL_DIRECT_LVAR;
- b++;
- break;
- }
- break;
-
- case _SLANG_BC_INTRINSIC:
- b++;
- switch (b->bc_main_type)
- {
- case _SLANG_BC_CALL_DIRECT:
- (b-1)->bc_main_type = _SLANG_BC_INTRINSIC_CALL_DIRECT;
- b++;
- break;
-#if 0
- case _SLANG_BC_BLOCK:
- (b-1)->bc_main_type = _SLANG_BC_INTRINSIC_BLOCK;
- b++;
- break;
-#endif
-
- case 0:
- (b-1)->bc_main_type = _SLANG_BC_INTRINSIC_STOP;
- return;
- }
- break;
- }
- }
-}
-
-#endif
-
-
-/* name will be NULL if the object is to simply terminate the function
- * definition. See SLang_restart.
- */
-static int lang_define_function (char *name, unsigned char type, unsigned long hash,
- SLang_NameSpace_Type *ns)
-{
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_FUNCTION)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Premature end of function");
- return -1;
- }
-
- /* terminate function */
- Compile_ByteCode_Ptr->bc_main_type = 0;
-
- if (name != NULL)
- {
- _SLBlock_Header_Type *h;
-
- h = (_SLBlock_Header_Type *)SLmalloc (sizeof (_SLBlock_Header_Type));
- if (h != NULL)
- {
- h->num_refs = 1;
- h->body = This_Compile_Block;
-
-#if USE_COMBINED_BYTECODES
- optimize_block (h->body);
-#endif
-
- if (-1 == add_slang_function (name, type, hash,
- Function_Args_Number,
- Local_Variable_Number,
-#if _SLANG_HAS_DEBUG_CODE
- This_Compile_Filename,
-#endif
- h, ns))
- SLfree ((char *) h);
- }
- /* Drop through for clean-up */
- }
-
- free_local_variable_table ();
-
- Function_Args_Number = 0;
- Lang_Defining_Function = 0;
-
- if (SLang_Error) return -1;
- /* SLang_restart will finish this if there is a slang error. */
-
- pop_block_context ();
-
- /* A function is only defined at top-level */
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- SLang_verror (SL_INTERNAL_ERROR, "Not at top-level");
- return -1;
- }
- Compile_ByteCode_Ptr = This_Compile_Block;
- return 0;
-}
-
-static void define_static_function (char *name, unsigned long hash)
-{
- (void) lang_define_function (name, SLANG_FUNCTION, hash, This_Static_NameSpace);
-}
-
-static void define_private_function (char *name, unsigned long hash)
-{
- (void) lang_define_function (name, SLANG_PFUNCTION, hash, This_Static_NameSpace);
-}
-
-static void define_public_function (char *name, unsigned long hash)
-{
- (void) lang_define_function (name, SLANG_FUNCTION, hash, Global_NameSpace);
-}
-
-static void lang_end_block (void)
-{
- SLBlock_Type *node, *branch;
- unsigned char mtype;
-
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_BLOCK)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Not defining a block");
- return;
- }
-
- /* terminate the block */
- Compile_ByteCode_Ptr->bc_main_type = 0;
- branch = This_Compile_Block;
-
- /* Try to save some space by using the cached blocks. */
- if (Compile_ByteCode_Ptr == branch + 1)
- {
- mtype = branch->bc_main_type;
- if (((mtype == _SLANG_BC_BREAK)
- || (mtype == _SLANG_BC_CONTINUE)
- || (mtype == _SLANG_BC_RETURN))
- && (SLang_Error == 0))
- {
- SLfree ((char *)branch);
- branch = SLShort_Blocks + 2 * (int) (mtype - _SLANG_BC_RETURN);
- }
- }
-
-#if USE_COMBINED_BYTECODES
- optimize_block (branch);
-#endif
-
- pop_block_context ();
- node = Compile_ByteCode_Ptr++;
-
- node->bc_main_type = _SLANG_BC_BLOCK;
- node->bc_sub_type = 0;
- node->b.blk = branch;
-}
-
-static int lang_begin_block (void)
-{
- return push_block_context (COMPILE_BLOCK_TYPE_BLOCK);
-}
-
-static int lang_check_space (void)
-{
- unsigned int n;
- SLBlock_Type *p;
-
- if (NULL == (p = This_Compile_Block))
- {
- SLang_verror (SL_INTERNAL_ERROR, "Top-level block not present");
- return -1;
- }
-
- /* Allow 1 extra for terminator */
- if (Compile_ByteCode_Ptr + 1 < This_Compile_Block_Max)
- return 0;
-
- n = (unsigned int) (This_Compile_Block_Max - p);
-
- /* enlarge the space by 2 objects */
- n += 2;
-
- if (NULL == (p = (SLBlock_Type *) SLrealloc((char *)p, n * sizeof(SLBlock_Type))))
- return -1;
-
- This_Compile_Block_Max = p + n;
- n = (unsigned int) (Compile_ByteCode_Ptr - This_Compile_Block);
- This_Compile_Block = p;
- Compile_ByteCode_Ptr = p + n;
-
- return 0;
-}
-
-/* returns positive number if name is a function or negative number if it
- is a variable. If it is intrinsic, it returns magnitude of 1, else 2 */
-int SLang_is_defined(char *name)
-{
- SLang_Name_Type *t;
-
- if (-1 == init_interpreter ())
- return -1;
-
- t = locate_namespace_encoded_name (name, 0);
- if (t == NULL)
- return 0;
-
- switch (t->name_type)
- {
- case SLANG_FUNCTION:
- /* case SLANG_PFUNCTION: */
- return 2;
- case SLANG_GVARIABLE:
- /* case SLANG_PVARIABLE: */
- return -2;
-
- case SLANG_ICONSTANT:
- case SLANG_DCONSTANT:
- case SLANG_RVARIABLE:
- case SLANG_IVARIABLE:
- return -1;
-
- case SLANG_INTRINSIC:
- default:
- return 1;
- }
-}
-
-static int add_global_variable (char *name, char name_type, unsigned long hash,
- SLang_NameSpace_Type *ns)
-{
- SLang_Name_Type *g;
-
- /* Note the importance of checking if it is already defined or not. For example,
- * suppose X is defined as an intrinsic variable. Then S-Lang code like:
- * !if (is_defined("X")) { variable X; }
- * will not result in a global variable X. On the other hand, this would
- * not be an issue if 'variable' statements always were not processed
- * immediately. That is, as it is now, 'if (0) {variable ZZZZ;}' will result
- * in the variable ZZZZ being defined because of the immediate processing.
- * The current solution is to do: if (0) { eval("variable ZZZZ;"); }
- */
- /* hash = _SLcompute_string_hash (name); */
- g = locate_name_in_table (name, hash, ns->table, ns->table_size);
-
- if (g != NULL)
- {
- if (g->name_type == name_type)
- return 0;
- }
-
- if (NULL == add_global_name (name, hash, name_type,
- sizeof (SLang_Global_Var_Type), ns))
- return -1;
-
- return 0;
-}
-
-int SLadd_global_variable (char *name)
-{
- if (-1 == init_interpreter ())
- return -1;
-
- return add_global_variable (name, SLANG_GVARIABLE,
- _SLcompute_string_hash (name),
- Global_NameSpace);
-}
-
-static int add_local_variable (char *name, unsigned long hash)
-{
- SLang_Local_Var_Type *t;
-
- /* local variable */
- if (Local_Variable_Number >= SLANG_MAX_LOCAL_VARIABLES)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Too many local variables");
- return -1;
- }
-
- if (NULL != locate_name_in_table (name, hash, Locals_Hash_Table, SLLOCALS_HASH_TABLE_SIZE))
- {
- SLang_verror (SL_SYNTAX_ERROR, "Local variable %s has already been defined", name);
- return -1;
- }
-
- t = (SLang_Local_Var_Type *)
- add_name_to_hash_table (name, hash,
- sizeof (SLang_Local_Var_Type), SLANG_LVARIABLE,
- Locals_Hash_Table, SLLOCALS_HASH_TABLE_SIZE, 0);
- if (t == NULL)
- return -1;
-
- t->local_var_number = Local_Variable_Number;
- Local_Variable_Number++;
- return 0;
-}
-
-static void (*Compile_Mode_Function) (_SLang_Token_Type *);
-static void compile_basic_token_mode (_SLang_Token_Type *);
-
-/* if an error occurs, discard current object, block, function, etc... */
-void SLang_restart (int localv)
-{
- int save = SLang_Error;
-
- SLang_Error = SL_UNKNOWN_ERROR;
-
- _SLcompile_ptr = _SLcompile;
- Compile_Mode_Function = compile_basic_token_mode;
-
- Lang_Break = /* Lang_Continue = */ Lang_Return = 0;
- Trace_Mode = 0;
-
- while (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_BLOCK)
- lang_end_block();
-
- if (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_FUNCTION)
- {
- /* Terminate function definition and free variables */
- lang_define_function (NULL, SLANG_FUNCTION, 0, Global_NameSpace);
- if (lang_free_branch (This_Compile_Block))
- SLfree((char *)This_Compile_Block);
- }
- Lang_Defining_Function = 0;
-
- SLang_Error = save;
-
- if (SLang_Error == SL_STACK_OVERFLOW)
- {
- /* This loop guarantees that the stack is properly cleaned. */
- while (_SLStack_Pointer != _SLRun_Stack)
- {
- SLdo_pop ();
- }
- }
-
- while ((This_Compile_Block_Type != COMPILE_BLOCK_TYPE_TOP_LEVEL)
- && (0 == pop_block_context ()))
- ;
-
- if (localv)
- {
- Next_Function_Num_Args = SLang_Num_Function_Args = 0;
- Local_Variable_Frame = Local_Variable_Stack;
- Recursion_Depth = 0;
- Frame_Pointer = _SLStack_Pointer;
- Frame_Pointer_Depth = 0;
- Switch_Obj_Ptr = Switch_Objects;
- while (Switch_Obj_Ptr < Switch_Obj_Max)
- {
- SLang_free_object (Switch_Obj_Ptr);
- Switch_Obj_Ptr++;
- }
- Switch_Obj_Ptr = Switch_Objects;
- }
-}
-
-static void compile_directive (unsigned char sub_type)
-{
- /* This function is called only from compile_directive_mode which is
- * only possible when a block is available.
- */
-
- /* use BLOCK */
- Compile_ByteCode_Ptr--;
- Compile_ByteCode_Ptr->bc_sub_type = sub_type;
-
- lang_try_now ();
-}
-
-static void compile_unary (int op, unsigned char mt)
-{
- Compile_ByteCode_Ptr->bc_main_type = mt;
- Compile_ByteCode_Ptr->b.i_blk = op;
- Compile_ByteCode_Ptr->bc_sub_type = 0;
-
- lang_try_now ();
-}
-
-
-static void compile_binary (int op)
-{
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_BINARY;
- Compile_ByteCode_Ptr->b.i_blk = op;
- Compile_ByteCode_Ptr->bc_sub_type = 0;
-
- lang_try_now ();
-}
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
-static int try_compressed_bytecode (unsigned char last_bc, unsigned char bc)
-{
- if (Compile_ByteCode_Ptr != This_Compile_Block)
- {
- SLBlock_Type *b;
- b = Compile_ByteCode_Ptr - 1;
- if (b->bc_main_type == last_bc)
- {
- Compile_ByteCode_Ptr = b;
- b->bc_main_type = bc;
- lang_try_now ();
- return 0;
- }
- }
- return -1;
-}
-#endif
-
-static void compile_fast_binary (int op, unsigned char bc)
-{
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (0 == try_compressed_bytecode (_SLANG_BC_LITERAL_INT, bc))
- return;
-#else
- (void) bc;
-#endif
- compile_binary (op);
-}
-
-/* This is a hack */
-typedef struct _Special_NameTable_Type
-{
- char *name;
- int (*fun) (struct _Special_NameTable_Type *, _SLang_Token_Type *);
- VOID_STAR blk_data;
- unsigned char main_type;
-}
-Special_NameTable_Type;
-
-static int handle_special (Special_NameTable_Type *nt, _SLang_Token_Type *tok)
-{
- (void) tok;
- Compile_ByteCode_Ptr->bc_main_type = nt->main_type;
- Compile_ByteCode_Ptr->b.ptr_blk = nt->blk_data;
- return 0;
-}
-
-static int handle_special_file (Special_NameTable_Type *nt, _SLang_Token_Type *tok)
-{
- char *name;
-
- (void) nt; (void) tok;
-
- if (This_Static_NameSpace == NULL) name = "***Unknown***";
- else
- name = This_Static_NameSpace->name;
-
- name = SLang_create_slstring (name);
- if (name == NULL)
- return -1;
-
- Compile_ByteCode_Ptr->b.s_blk = name;
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL_STR;
- Compile_ByteCode_Ptr->bc_sub_type = SLANG_STRING_TYPE;
- return 0;
-}
-
-static int handle_special_line (Special_NameTable_Type *nt, _SLang_Token_Type *tok)
-{
- (void) nt;
-
-#if _SLANG_HAS_DEBUG_CODE
- Compile_ByteCode_Ptr->b.l_blk = (long) tok->line_number;
-#endif
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL;
- Compile_ByteCode_Ptr->bc_sub_type = SLANG_UINT_TYPE;
-
- return 0;
-}
-
-static Special_NameTable_Type Special_Name_Table [] =
-{
- {"EXECUTE_ERROR_BLOCK", handle_special, NULL, _SLANG_BC_X_ERROR},
- {"X_USER_BLOCK0", handle_special, NULL, _SLANG_BC_X_USER0},
- {"X_USER_BLOCK1", handle_special, NULL, _SLANG_BC_X_USER1},
- {"X_USER_BLOCK2", handle_special, NULL, _SLANG_BC_X_USER2},
- {"X_USER_BLOCK3", handle_special, NULL, _SLANG_BC_X_USER3},
- {"X_USER_BLOCK4", handle_special, NULL, _SLANG_BC_X_USER4},
- {"__FILE__", handle_special_file, NULL, 0},
- {"__LINE__", handle_special_line, NULL, 0},
-#if 0
- {"__NAMESPACE__", handle_special_namespace, NULL, 0},
-#endif
- {NULL, NULL, NULL, 0}
-};
-
-static void compile_hashed_identifier (char *name, unsigned long hash, _SLang_Token_Type *tok)
-{
- SLang_Name_Type *entry;
- unsigned char name_type;
-
- entry = locate_hashed_name (name, hash);
-
- if (entry == NULL)
- {
- Special_NameTable_Type *nt = Special_Name_Table;
-
- while (nt->name != NULL)
- {
- if (strcmp (name, nt->name))
- {
- nt++;
- continue;
- }
-
- if (0 == (*nt->fun)(nt, tok))
- lang_try_now ();
- return;
- }
-
- SLang_verror (SL_UNDEFINED_NAME, "%s is undefined", name);
- return;
- }
-
- name_type = entry->name_type;
- Compile_ByteCode_Ptr->bc_main_type = name_type;
-
- if (name_type == SLANG_LVARIABLE)
- Compile_ByteCode_Ptr->b.i_blk = ((SLang_Local_Var_Type *) entry)->local_var_number;
- else
- Compile_ByteCode_Ptr->b.nt_blk = entry;
-
- lang_try_now ();
-}
-
-static void compile_tmp_variable (char *name, unsigned long hash)
-{
- SLang_Name_Type *entry;
- unsigned char name_type;
-
- if (NULL == (entry = locate_hashed_name (name, hash)))
- {
- SLang_verror (SL_UNDEFINED_NAME, "%s is undefined", name);
- return;
- }
-
- name_type = entry->name_type;
- switch (name_type)
- {
- case SLANG_LVARIABLE:
- Compile_ByteCode_Ptr->b.i_blk = ((SLang_Local_Var_Type *) entry)->local_var_number;
- break;
-
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- Compile_ByteCode_Ptr->b.nt_blk = entry;
- break;
-
- default:
- SLang_verror (SL_SYNTAX_ERROR, "__tmp(%s) does not specifiy a variable", name);
- return;
- }
-
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_TMP;
- Compile_ByteCode_Ptr->bc_sub_type = name_type;
-
- lang_try_now ();
-}
-
-static void compile_simple (unsigned char main_type)
-{
- Compile_ByteCode_Ptr->bc_main_type = main_type;
- Compile_ByteCode_Ptr->bc_sub_type = 0;
- Compile_ByteCode_Ptr->b.blk = NULL;
- lang_try_now ();
-}
-
-static void compile_identifier (char *name, _SLang_Token_Type *tok)
-{
- compile_hashed_identifier (name, _SLcompute_string_hash (name), tok);
-}
-
-static void compile_call_direct (int (*f) (void), unsigned char byte_code)
-{
- Compile_ByteCode_Ptr->b.call_function = f;
- Compile_ByteCode_Ptr->bc_main_type = byte_code;
- Compile_ByteCode_Ptr->bc_sub_type = 0;
- lang_try_now ();
-}
-
-static void compile_lvar_call_direct (int (*f)(void), unsigned char bc,
- unsigned char frame_op)
-{
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (0 == try_compressed_bytecode (_SLANG_BC_LVARIABLE, bc))
- return;
-#else
- (void) bc;
-#endif
-
- compile_call_direct (f, frame_op);
-}
-
-static void compile_integer (long i, unsigned char bc_main_type, unsigned char bc_sub_type)
-{
- Compile_ByteCode_Ptr->b.l_blk = i;
- Compile_ByteCode_Ptr->bc_main_type = bc_main_type;
- Compile_ByteCode_Ptr->bc_sub_type = bc_sub_type;
-
- lang_try_now ();
-}
-
-#if SLANG_HAS_FLOAT
-static void compile_double (char *str, unsigned char type)
-{
- double d;
- unsigned int factor = 1;
- double *ptr;
-
-#if 1
- d = _SLang_atof (str);
-#else
- if (1 != sscanf (str, "%lf", &d))
- {
- SLang_verror (SL_SYNTAX_ERROR, "Unable to convert %s to double", str);
- return;
- }
-#endif
-
-#if SLANG_HAS_COMPLEX
- if (type == SLANG_COMPLEX_TYPE) factor = 2;
-#endif
- if (NULL == (ptr = (double *) SLmalloc(factor * sizeof(double))))
- return;
-
- Compile_ByteCode_Ptr->b.double_blk = ptr;
-#if SLANG_HAS_COMPLEX
- if (type == SLANG_COMPLEX_TYPE)
- *ptr++ = 0;
-#endif
- *ptr = d;
-
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL;
- Compile_ByteCode_Ptr->bc_sub_type = type;
- lang_try_now ();
-}
-
-static void compile_float (char *s)
-{
- float x;
-
-#if 1
- x = (float) _SLang_atof (s);
-#else
- if (1 != sscanf (s, "%f", &x))
- {
- SLang_verror (SL_SYNTAX_ERROR, "Unable to convert %s to float", s);
- return;
- }
-#endif
- Compile_ByteCode_Ptr->b.float_blk = x;
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL;
- Compile_ByteCode_Ptr->bc_sub_type = SLANG_FLOAT_TYPE;
- lang_try_now ();
-}
-
-#endif
-
-static void compile_string (char *s, unsigned long hash)
-{
- if (NULL == (Compile_ByteCode_Ptr->b.s_blk = _SLstring_dup_hashed_string (s, hash)))
- return;
-
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL_STR;
- Compile_ByteCode_Ptr->bc_sub_type = SLANG_STRING_TYPE;
-
- lang_try_now ();
-}
-
-static void compile_bstring (SLang_BString_Type *s)
-{
- if (NULL == (Compile_ByteCode_Ptr->b.bs_blk = SLbstring_dup (s)))
- return;
-
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LITERAL;
- Compile_ByteCode_Ptr->bc_sub_type = SLANG_BSTRING_TYPE;
-
- lang_try_now ();
-}
-
-/* assign_type is one of _SLANG_BCST_ASSIGN, ... values */
-static void compile_assign (unsigned char assign_type,
- char *name, unsigned long hash)
-{
- SLang_Name_Type *v;
- unsigned char main_type;
- SLang_Class_Type *cl;
-
- v = locate_hashed_name (name, hash);
- if (v == NULL)
- {
- if ((_SLang_Auto_Declare_Globals == 0)
- || (NULL != strchr (name, '-')) /* namespace->name form */
- || Lang_Defining_Function
- || (assign_type != _SLANG_BCST_ASSIGN)
- || (This_Static_NameSpace == NULL))
- {
- SLang_verror (SL_UNDEFINED_NAME, "%s is undefined", name);
- return;
- }
- /* Note that function local variables are not at top level */
-
- /* Variables that are automatically declared are given static
- * scope.
- */
- if ((NULL != SLang_Auto_Declare_Var_Hook)
- && (-1 == (*SLang_Auto_Declare_Var_Hook) (name)))
- return;
-
- if ((-1 == add_global_variable (name, SLANG_GVARIABLE, hash, This_Static_NameSpace))
- || (NULL == (v = locate_hashed_name (name, hash))))
- return;
- }
-
- switch (v->name_type)
- {
- case SLANG_LVARIABLE:
- main_type = _SLANG_BC_SET_LOCAL_LVALUE;
- Compile_ByteCode_Ptr->b.i_blk = ((SLang_Local_Var_Type *) v)->local_var_number;
- break;
-
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- main_type = _SLANG_BC_SET_GLOBAL_LVALUE;
- Compile_ByteCode_Ptr->b.nt_blk = v;
- break;
-
- case SLANG_IVARIABLE:
- cl = _SLclass_get_class (((SLang_Intrin_Var_Type *)v)->type);
- if (cl->cl_class_type != SLANG_CLASS_TYPE_SCALAR)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Assignment to %s is not allowed", name);
- return;
- }
- main_type = _SLANG_BC_SET_INTRIN_LVALUE;
- Compile_ByteCode_Ptr->b.nt_blk = v;
- break;
-
- case SLANG_RVARIABLE:
- SLang_verror (SL_READONLY_ERROR, "%s is read-only", name);
- return;
-
- default:
- SLang_verror (SL_DUPLICATE_DEFINITION, "%s may not be used as an lvalue", name);
- return;
- }
-
- Compile_ByteCode_Ptr->bc_sub_type = assign_type;
- Compile_ByteCode_Ptr->bc_main_type = main_type;
-
- lang_try_now ();
-}
-
-static void compile_deref_assign (char *name, unsigned long hash)
-{
- SLang_Name_Type *v;
-
- v = locate_hashed_name (name, hash);
-
- if (v == NULL)
- {
- SLang_verror (SL_UNDEFINED_NAME, "%s is undefined", name);
- return;
- }
-
- switch (v->name_type)
- {
- case SLANG_LVARIABLE:
- Compile_ByteCode_Ptr->b.i_blk = ((SLang_Local_Var_Type *) v)->local_var_number;
- break;
-
- case SLANG_GVARIABLE:
- case SLANG_PVARIABLE:
- Compile_ByteCode_Ptr->b.nt_blk = v;
- break;
-
- default:
- /* FIXME: Priority=low
- * This could be made to work. It is not a priority because
- * I cannot imagine application intrinsics which are references.
- */
- SLang_verror (SL_NOT_IMPLEMENTED, "Deref assignment to %s is not allowed", name);
- return;
- }
-
- Compile_ByteCode_Ptr->bc_sub_type = v->name_type;
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_DEREF_ASSIGN;
-
- lang_try_now ();
-}
-
-static void
-compile_struct_assign (_SLang_Token_Type *t)
-{
- Compile_ByteCode_Ptr->bc_sub_type = _SLANG_BCST_ASSIGN + (t->type - _STRUCT_ASSIGN_TOKEN);
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_SET_STRUCT_LVALUE;
- Compile_ByteCode_Ptr->b.s_blk = _SLstring_dup_hashed_string (t->v.s_val, t->hash);
- lang_try_now ();
-}
-
-static void
-compile_array_assign (_SLang_Token_Type *t)
-{
- Compile_ByteCode_Ptr->bc_sub_type = _SLANG_BCST_ASSIGN + (t->type - _ARRAY_ASSIGN_TOKEN);
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_SET_ARRAY_LVALUE;
- Compile_ByteCode_Ptr->b.s_blk = NULL;
- lang_try_now ();
-}
-
-static void compile_dot(_SLang_Token_Type *t)
-{
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_FIELD;
- Compile_ByteCode_Ptr->b.s_blk = _SLstring_dup_hashed_string(t->v.s_val, t->hash);
- lang_try_now ();
-}
-
-static void compile_ref (char *name, unsigned long hash)
-{
- SLang_Name_Type *entry;
- unsigned char main_type;
-
- if (NULL == (entry = locate_hashed_name (name, hash)))
- {
- SLang_verror (SL_UNDEFINED_NAME, "%s is undefined", name);
- return;
- }
-
- main_type = entry->name_type;
-
- if (main_type == SLANG_LVARIABLE)
- {
- main_type = _SLANG_BC_LOBJPTR;
- Compile_ByteCode_Ptr->b.i_blk = ((SLang_Local_Var_Type *)entry)->local_var_number;
- }
- else
- {
- main_type = _SLANG_BC_GOBJPTR;
- Compile_ByteCode_Ptr->b.nt_blk = entry;
- }
-
- Compile_ByteCode_Ptr->bc_main_type = main_type;
- lang_try_now ();
-}
-
-static void compile_break (unsigned char break_type,
- int requires_block, int requires_fun,
- char *str)
-{
- if ((requires_fun
- && (Lang_Defining_Function == 0))
- || (requires_block
- && (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_BLOCK)))
- {
- SLang_verror (SL_SYNTAX_ERROR, "misplaced %s", str);
- return;
- }
-
- Compile_ByteCode_Ptr->bc_main_type = break_type;
- Compile_ByteCode_Ptr->bc_sub_type = 0;
-
- lang_try_now ();
-}
-
-static void compile_public_variable_mode (_SLang_Token_Type *t)
-{
- if (t->type == IDENT_TOKEN)
- {
- /* If the variable is already defined in the static hash table,
- * generate an error.
- */
- if ((This_Static_NameSpace != NULL)
- && (NULL != locate_name_in_table (t->v.s_val, t->hash, This_Static_NameSpace->table, This_Static_NameSpace->table_size)))
- {
- SLang_verror (SL_DUPLICATE_DEFINITION,
- "%s already has static or private linkage in this unit",
- t->v.s_val);
- return;
- }
- add_global_variable (t->v.s_val, SLANG_GVARIABLE, t->hash, Global_NameSpace);
- }
- else if (t->type == CBRACKET_TOKEN)
- Compile_Mode_Function = compile_basic_token_mode;
- else
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced token in variable list");
-}
-
-static void compile_local_variable_mode (_SLang_Token_Type *t)
-{
- if (t->type == IDENT_TOKEN)
- add_local_variable (t->v.s_val, t->hash);
- else if (t->type == CBRACKET_TOKEN)
- Compile_Mode_Function = compile_basic_token_mode;
- else
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced token in variable list");
-}
-
-static void compile_static_variable_mode (_SLang_Token_Type *t)
-{
- if (t->type == IDENT_TOKEN)
- add_global_variable (t->v.s_val, SLANG_GVARIABLE, t->hash, This_Static_NameSpace);
- else if (t->type == CBRACKET_TOKEN)
- Compile_Mode_Function = compile_basic_token_mode;
- else
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced token in variable list");
-}
-
-static void compile_private_variable_mode (_SLang_Token_Type *t)
-{
- if (t->type == IDENT_TOKEN)
- add_global_variable (t->v.s_val, SLANG_PVARIABLE, t->hash, This_Static_NameSpace);
- else if (t->type == CBRACKET_TOKEN)
- Compile_Mode_Function = compile_basic_token_mode;
- else
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced token in variable list");
-}
-
-static void compile_function_mode (_SLang_Token_Type *t)
-{
- if (-1 == lang_check_space ())
- return;
-
- if (t->type != IDENT_TOKEN)
- SLang_verror (SL_SYNTAX_ERROR, "Expecting function name");
- else
- lang_define_function (t->v.s_val, SLANG_FUNCTION, t->hash, Global_NameSpace);
-
- Compile_Mode_Function = compile_basic_token_mode;
-}
-
-/* An error block is not permitted to contain continue or break statements.
- * This restriction may be removed later but for now reject them.
- */
-static int check_error_block (void)
-{
- SLBlock_Type *p;
- unsigned char t;
-
- /* Back up to the block and then scan it. */
- p = (Compile_ByteCode_Ptr - 1)->b.blk;
-
- while (0 != (t = p->bc_main_type))
- {
- if ((t == _SLANG_BC_BREAK)
- || (t == _SLANG_BC_CONTINUE))
- {
- SLang_verror (SL_SYNTAX_ERROR,
- "An ERROR_BLOCK is not permitted to contain continue or break statements");
- return -1;
- }
- p++;
- }
- return 0;
-}
-
-/* The only allowed tokens are the directives and another block start.
- * The mode is only active if a block is available. The inner_interp routine
- * expects such safety checks.
- */
-static void compile_directive_mode (_SLang_Token_Type *t)
-{
- int bc_sub_type;
-
- if (-1 == lang_check_space ())
- return;
-
- bc_sub_type = -1;
-
- switch (t->type)
- {
- case FOREVER_TOKEN:
- bc_sub_type = _SLANG_BCST_FOREVER;
- break;
-
- case IFNOT_TOKEN:
- bc_sub_type = _SLANG_BCST_IFNOT;
- break;
-
- case IF_TOKEN:
- bc_sub_type = _SLANG_BCST_IF;
- break;
-
- case ANDELSE_TOKEN:
- bc_sub_type = _SLANG_BCST_ANDELSE;
- break;
-
- case SWITCH_TOKEN:
- bc_sub_type = _SLANG_BCST_SWITCH;
- break;
-
- case EXITBLK_TOKEN:
- if (Lang_Defining_Function == 0)
- {
- SLang_verror (SL_SYNTAX_ERROR, "misplaced EXIT_BLOCK");
- break;
- }
- bc_sub_type = _SLANG_BCST_EXIT_BLOCK;
- break;
-
- case ERRBLK_TOKEN:
- if (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- SLang_verror (SL_SYNTAX_ERROR, "misplaced ERROR_BLOCK");
- break;
- }
- if (0 == check_error_block ())
- bc_sub_type = _SLANG_BCST_ERROR_BLOCK;
- break;
-
- case USRBLK0_TOKEN:
- case USRBLK1_TOKEN:
- case USRBLK2_TOKEN:
- case USRBLK3_TOKEN:
- case USRBLK4_TOKEN:
- if (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_TOP_LEVEL)
- {
- SLang_verror (SL_SYNTAX_ERROR, "misplaced USER_BLOCK");
- break;
- }
- bc_sub_type = _SLANG_BCST_USER_BLOCK0 + (t->type - USRBLK0_TOKEN);
- break;
-
- case NOTELSE_TOKEN:
- bc_sub_type = _SLANG_BCST_NOTELSE;
- break;
-
- case ELSE_TOKEN:
- bc_sub_type = _SLANG_BCST_ELSE;
- break;
-
- case LOOP_TOKEN:
- bc_sub_type = _SLANG_BCST_LOOP;
- break;
-
- case DOWHILE_TOKEN:
- bc_sub_type = _SLANG_BCST_DOWHILE;
- break;
-
- case WHILE_TOKEN:
- bc_sub_type = _SLANG_BCST_WHILE;
- break;
-
- case ORELSE_TOKEN:
- bc_sub_type = _SLANG_BCST_ORELSE;
- break;
-
- case _FOR_TOKEN:
- bc_sub_type = _SLANG_BCST_FOR;
- break;
-
- case FOR_TOKEN:
- bc_sub_type = _SLANG_BCST_CFOR;
- break;
-
- case FOREACH_TOKEN:
- bc_sub_type = _SLANG_BCST_FOREACH;
- break;
-
- case OBRACE_TOKEN:
- lang_begin_block ();
- break;
-
- default:
- SLang_verror (SL_SYNTAX_ERROR, "Expecting directive token. Found 0x%X", t->type);
- break;
- }
-
- /* Reset this pointer first because compile_directive may cause a
- * file to be loaded.
- */
- Compile_Mode_Function = compile_basic_token_mode;
-
- if (bc_sub_type != -1)
- compile_directive (bc_sub_type);
-}
-
-static unsigned int Assign_Mode_Type;
-static void compile_assign_mode (_SLang_Token_Type *t)
-{
- if (t->type != IDENT_TOKEN)
- {
- SLang_verror (SL_SYNTAX_ERROR, "Expecting identifier for assignment");
- return;
- }
-
- compile_assign (Assign_Mode_Type, t->v.s_val, t->hash);
- Compile_Mode_Function = compile_basic_token_mode;
-}
-
-static void compile_basic_token_mode (_SLang_Token_Type *t)
-{
- if (-1 == lang_check_space ())
- return;
-
- switch (t->type)
- {
- case PUSH_TOKEN:
- case NOP_TOKEN:
- case EOF_TOKEN:
- case READONLY_TOKEN:
- case DO_TOKEN:
- case VARIABLE_TOKEN:
- case SEMICOLON_TOKEN:
- default:
- SLang_verror (SL_SYNTAX_ERROR, "Unknown or unsupported token type 0x%X", t->type);
- break;
-
- case DEREF_TOKEN:
- compile_call_direct (dereference_object, _SLANG_BC_CALL_DIRECT);
- break;
-
- case STRUCT_TOKEN:
- compile_call_direct (_SLstruct_define_struct, _SLANG_BC_CALL_DIRECT);
- break;
-
- case TYPEDEF_TOKEN:
- compile_call_direct (_SLstruct_define_typedef, _SLANG_BC_CALL_DIRECT);
- break;
-
- case TMP_TOKEN:
- compile_tmp_variable (t->v.s_val, t->hash);
- break;
-
- case DOT_TOKEN: /* X . field */
- compile_dot (t);
- break;
-
- case COMMA_TOKEN:
- break; /* do nothing */
-
- case IDENT_TOKEN:
- compile_hashed_identifier (t->v.s_val, t->hash, t);
- break;
-
- case _REF_TOKEN:
- compile_ref (t->v.s_val, t->hash);
- break;
-
- case ARG_TOKEN:
- compile_call_direct (SLang_start_arg_list, _SLANG_BC_CALL_DIRECT);
- break;
-
- case EARG_TOKEN:
- compile_lvar_call_direct (SLang_end_arg_list, _SLANG_BC_EARG_LVARIABLE, _SLANG_BC_CALL_DIRECT);
- break;
-
- case COLON_TOKEN:
- if (This_Compile_Block_Type == COMPILE_BLOCK_TYPE_BLOCK)
- compile_simple (_SLANG_BC_LABEL);
- else SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case POP_TOKEN:
- compile_call_direct (SLdo_pop, _SLANG_BC_CALL_DIRECT);
- break;
-
- case CASE_TOKEN:
- if (This_Compile_Block_Type != COMPILE_BLOCK_TYPE_BLOCK)
- SLang_verror (SL_SYNTAX_ERROR, "Misplaced 'case'");
- else
- compile_call_direct (case_function, _SLANG_BC_CALL_DIRECT);
- break;
-
- case CHAR_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_CHAR_TYPE);
- break;
- case SHORT_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_SHORT_TYPE);
- break;
- case INT_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL_INT, SLANG_INT_TYPE);
- break;
- case UCHAR_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_UCHAR_TYPE);
- break;
- case USHORT_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_USHORT_TYPE);
- break;
- case UINT_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL_INT, SLANG_UINT_TYPE);
- break;
- case LONG_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_LONG_TYPE);
- break;
- case ULONG_TOKEN:
- compile_integer (t->v.long_val, _SLANG_BC_LITERAL, SLANG_ULONG_TYPE);
- break;
-
-#if SLANG_HAS_FLOAT
- case FLOAT_TOKEN:
- compile_float (t->v.s_val);
- break;
-
- case DOUBLE_TOKEN:
- compile_double (t->v.s_val, SLANG_DOUBLE_TYPE);
- break;
-#endif
-#if SLANG_HAS_COMPLEX
- case COMPLEX_TOKEN:
- compile_double (t->v.s_val, SLANG_COMPLEX_TYPE);
- break;
-#endif
-
- case STRING_TOKEN:
- compile_string (t->v.s_val, t->hash);
- break;
-
- case _BSTRING_TOKEN:
- compile_bstring (SLbstring_create ((unsigned char *)t->v.s_val, (unsigned int) t->hash));
- break;
-
- case BSTRING_TOKEN:
- compile_bstring (t->v.b_val);
- break;
-
- case _NULL_TOKEN:
- compile_identifier ("NULL", t);
- break;
-
- case _INLINE_WILDCARD_ARRAY_TOKEN:
- compile_call_direct (_SLarray_wildcard_array, _SLANG_BC_CALL_DIRECT);
- break;
-
- case _INLINE_ARRAY_TOKEN:
- compile_call_direct (_SLarray_inline_array, _SLANG_BC_CALL_DIRECT_FRAME);
- break;
-
- case _INLINE_IMPLICIT_ARRAY_TOKEN:
- compile_call_direct (_SLarray_inline_implicit_array, _SLANG_BC_CALL_DIRECT_FRAME);
- break;
-
- case ARRAY_TOKEN:
- compile_lvar_call_direct (_SLarray_aget, _SLANG_BC_LVARIABLE_AGET, _SLANG_BC_CALL_DIRECT_FRAME);
- break;
-
- /* Note: I need to add the other _ARRAY assign tokens. */
- case _ARRAY_PLUSEQS_TOKEN:
- case _ARRAY_MINUSEQS_TOKEN:
- case _ARRAY_TIMESEQS_TOKEN:
- case _ARRAY_DIVEQS_TOKEN:
- case _ARRAY_BOREQS_TOKEN:
- case _ARRAY_BANDEQS_TOKEN:
- case _ARRAY_POST_MINUSMINUS_TOKEN:
- case _ARRAY_MINUSMINUS_TOKEN:
- case _ARRAY_POST_PLUSPLUS_TOKEN:
- case _ARRAY_PLUSPLUS_TOKEN:
- compile_array_assign (t);
- break;
-
- case _ARRAY_ASSIGN_TOKEN:
- compile_lvar_call_direct (_SLarray_aput, _SLANG_BC_LVARIABLE_APUT, _SLANG_BC_CALL_DIRECT_FRAME);
- break;
-
- case _STRUCT_ASSIGN_TOKEN:
- case _STRUCT_PLUSEQS_TOKEN:
- case _STRUCT_MINUSEQS_TOKEN:
- case _STRUCT_TIMESEQS_TOKEN:
- case _STRUCT_DIVEQS_TOKEN:
- case _STRUCT_BOREQS_TOKEN:
- case _STRUCT_BANDEQS_TOKEN:
- case _STRUCT_POST_MINUSMINUS_TOKEN:
- case _STRUCT_MINUSMINUS_TOKEN:
- case _STRUCT_POST_PLUSPLUS_TOKEN:
- case _STRUCT_PLUSPLUS_TOKEN:
- compile_struct_assign (t);
- break;
-
- case _SCALAR_ASSIGN_TOKEN:
- case _SCALAR_PLUSEQS_TOKEN:
- case _SCALAR_MINUSEQS_TOKEN:
- case _SCALAR_TIMESEQS_TOKEN:
- case _SCALAR_DIVEQS_TOKEN:
- case _SCALAR_BOREQS_TOKEN:
- case _SCALAR_BANDEQS_TOKEN:
- case _SCALAR_POST_MINUSMINUS_TOKEN:
- case _SCALAR_MINUSMINUS_TOKEN:
- case _SCALAR_POST_PLUSPLUS_TOKEN:
- case _SCALAR_PLUSPLUS_TOKEN:
- compile_assign (_SLANG_BCST_ASSIGN + (t->type - _SCALAR_ASSIGN_TOKEN),
- t->v.s_val, t->hash);
- break;
-
- case _DEREF_ASSIGN_TOKEN:
- compile_deref_assign (t->v.s_val, t->hash);
- break;
-
- /* For processing RPN tokens */
- case ASSIGN_TOKEN:
- case PLUSEQS_TOKEN:
- case MINUSEQS_TOKEN:
- case TIMESEQS_TOKEN:
- case DIVEQS_TOKEN:
- case BOREQS_TOKEN:
- case BANDEQS_TOKEN:
- case POST_MINUSMINUS_TOKEN:
- case MINUSMINUS_TOKEN:
- case POST_PLUSPLUS_TOKEN:
- case PLUSPLUS_TOKEN:
- Compile_Mode_Function = compile_assign_mode;
- Assign_Mode_Type = _SLANG_BCST_ASSIGN + (t->type - ASSIGN_TOKEN);
- break;
-
- case LT_TOKEN:
- compile_binary (SLANG_LT);
- break;
-
- case LE_TOKEN:
- compile_binary (SLANG_LE);
- break;
-
- case GT_TOKEN:
- compile_binary (SLANG_GT);
- break;
-
- case GE_TOKEN:
- compile_binary (SLANG_GE);
- break;
-
- case EQ_TOKEN:
- compile_binary (SLANG_EQ);
- break;
-
- case NE_TOKEN:
- compile_binary (SLANG_NE);
- break;
-
- case AND_TOKEN:
- compile_binary (SLANG_AND);
- break;
-
- case ADD_TOKEN:
- compile_fast_binary (SLANG_PLUS, _SLANG_BC_INTEGER_PLUS);
- break;
-
- case SUB_TOKEN:
- compile_fast_binary (SLANG_MINUS, _SLANG_BC_INTEGER_MINUS);
- break;
-
- case TIMES_TOKEN:
- compile_binary (SLANG_TIMES);
- break;
-
- case DIV_TOKEN:
- compile_binary (SLANG_DIVIDE);
- break;
-
- case POW_TOKEN:
- compile_binary (SLANG_POW);
- break;
-
- case BXOR_TOKEN:
- compile_binary (SLANG_BXOR);
- break;
-
- case BAND_TOKEN:
- compile_binary (SLANG_BAND);
- break;
-
- case BOR_TOKEN:
- compile_binary (SLANG_BOR);
- break;
-
- case SHR_TOKEN:
- compile_binary (SLANG_SHR);
- break;
-
- case SHL_TOKEN:
- compile_binary (SLANG_SHL);
- break;
-
- case MOD_TOKEN:
- compile_binary (SLANG_MOD);
- break;
-
- case OR_TOKEN:
- compile_binary (SLANG_OR);
- break;
-
- case NOT_TOKEN:
- compile_unary (SLANG_NOT, _SLANG_BC_UNARY);
- break;
-
- case BNOT_TOKEN:
- compile_unary (SLANG_BNOT, _SLANG_BC_UNARY);
- break;
-
- case MUL2_TOKEN:
- compile_unary (SLANG_MUL2, _SLANG_BC_UNARY_FUNC);
- break;
-
- case CHS_TOKEN:
- compile_unary (SLANG_CHS, _SLANG_BC_UNARY_FUNC);
- break;
-
- case ABS_TOKEN:
- compile_unary (SLANG_ABS, _SLANG_BC_UNARY_FUNC);
- break;
-
- case SQR_TOKEN:
- compile_unary (SLANG_SQR, _SLANG_BC_UNARY_FUNC);
- break;
-
- case SIGN_TOKEN:
- compile_unary (SLANG_SIGN, _SLANG_BC_UNARY_FUNC);
- break;
-
- case BREAK_TOKEN:
- compile_break (_SLANG_BC_BREAK, 1, 0, "break");
- break;
-
- case RETURN_TOKEN:
- compile_break (_SLANG_BC_RETURN, 0, 1, "return");
- break;
-
- case CONT_TOKEN:
- compile_break (_SLANG_BC_CONTINUE, 1, 0, "continue");
- break;
-
- case EXCH_TOKEN:
- compile_break (_SLANG_BC_EXCH, 0, 0, ""); /* FIXME: Priority=low */
- break;
-
- case STATIC_TOKEN:
- if (Lang_Defining_Function == 0)
- Compile_Mode_Function = compile_static_variable_mode;
- else
- SLang_verror (SL_NOT_IMPLEMENTED, "static variables not permitted in functions");
- break;
-
- case PRIVATE_TOKEN:
- if (Lang_Defining_Function == 0)
- Compile_Mode_Function = compile_private_variable_mode;
- else
- SLang_verror (SL_NOT_IMPLEMENTED, "private variables not permitted in functions");
- break;
-
- case PUBLIC_TOKEN:
- if (Lang_Defining_Function == 0)
- Compile_Mode_Function = compile_public_variable_mode;
- else
- SLang_verror (SL_NOT_IMPLEMENTED, "public variables not permitted in functions");
- break;
-
- case OBRACKET_TOKEN:
- if (Lang_Defining_Function == 0)
- Compile_Mode_Function = Default_Variable_Mode;
- else
- Compile_Mode_Function = compile_local_variable_mode;
- break;
-
- case OPAREN_TOKEN:
- lang_begin_function ();
- break;
-
- case DEFINE_STATIC_TOKEN:
- if (Lang_Defining_Function)
- define_static_function (t->v.s_val, t->hash);
- else SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case DEFINE_PRIVATE_TOKEN:
- if (Lang_Defining_Function)
- define_private_function (t->v.s_val, t->hash);
- else SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case DEFINE_PUBLIC_TOKEN:
- if (Lang_Defining_Function)
- define_public_function (t->v.s_val, t->hash);
- else SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case DEFINE_TOKEN:
- if (Lang_Defining_Function)
- (*Default_Define_Function) (t->v.s_val, t->hash);
- else
- SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case CPAREN_TOKEN:
- if (Lang_Defining_Function)
- Compile_Mode_Function = compile_function_mode;
- else SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case CBRACE_TOKEN:
- lang_end_block ();
- Compile_Mode_Function = compile_directive_mode;
- break;
-
- case OBRACE_TOKEN:
- lang_begin_block ();
- break;
-
- case FARG_TOKEN:
- Function_Args_Number = Local_Variable_Number;
- break;
-
-#if _SLANG_HAS_DEBUG_CODE
- case LINE_NUM_TOKEN:
- Compile_ByteCode_Ptr->bc_main_type = _SLANG_BC_LINE_NUM;
- Compile_ByteCode_Ptr->b.l_blk = t->v.long_val;
- lang_try_now ();
- break;
-#endif
- case POUND_TOKEN:
- compile_call_direct (_SLarray_matrix_multiply, _SLANG_BC_CALL_DIRECT);
- break;
- }
-}
-
-void _SLcompile (_SLang_Token_Type *t)
-{
- if (SLang_Error == 0)
- {
- if (Compile_Mode_Function != compile_basic_token_mode)
- {
- if (Compile_Mode_Function == NULL)
- Compile_Mode_Function = compile_basic_token_mode;
-#if _SLANG_HAS_DEBUG_CODE
- if (t->type == LINE_NUM_TOKEN)
- {
- compile_basic_token_mode (t);
- return;
- }
-#endif
- }
-
- (*Compile_Mode_Function) (t);
- }
-
- if (SLang_Error)
- {
- Compile_Mode_Function = compile_basic_token_mode;
- SLang_restart (0);
- }
-}
-
-void (*_SLcompile_ptr)(_SLang_Token_Type *) = _SLcompile;
-
-typedef struct _Compile_Context_Type
-{
- struct _Compile_Context_Type *next;
- SLang_NameSpace_Type *static_namespace;
- void (*compile_variable_mode) (_SLang_Token_Type *);
- void (*define_function) (char *, unsigned long);
- int lang_defining_function;
- int local_variable_number;
- unsigned int function_args_number;
- SLang_Name_Type **locals_hash_table;
- void (*compile_mode_function)(_SLang_Token_Type *);
-#if _SLANG_HAS_DEBUG_CODE
- char *compile_filename;
-#endif
-}
-Compile_Context_Type;
-
-static Compile_Context_Type *Compile_Context_Stack;
-
-/* The only way the push/pop_context functions can get called is via
- * an eval type function. That can only happen when executed from a
- * top level block. This means that Compile_ByteCode_Ptr can always be
- * rest back to the beginning of a block.
- */
-
-static int pop_compile_context (void)
-{
- Compile_Context_Type *cc;
-
- if (NULL == (cc = Compile_Context_Stack))
- return -1;
-
- This_Static_NameSpace = cc->static_namespace;
- Compile_Context_Stack = cc->next;
- Default_Variable_Mode = cc->compile_variable_mode;
- Default_Define_Function = cc->define_function;
- Compile_Mode_Function = cc->compile_mode_function;
-
- Lang_Defining_Function = cc->lang_defining_function;
- Local_Variable_Number = cc->local_variable_number;
- Function_Args_Number = cc->function_args_number;
-
-#if _SLANG_HAS_DEBUG_CODE
- SLang_free_slstring (This_Compile_Filename);
- This_Compile_Filename = cc->compile_filename;
-#endif
-
- SLfree ((char *) Locals_Hash_Table);
- Locals_Hash_Table = cc->locals_hash_table;
-
- SLfree ((char *) cc);
-
- return 0;
-}
-
-static int push_compile_context (char *name)
-{
- Compile_Context_Type *cc;
- SLang_Name_Type **lns;
-
- cc = (Compile_Context_Type *)SLmalloc (sizeof (Compile_Context_Type));
- if (cc == NULL)
- return -1;
- memset ((char *) cc, 0, sizeof (Compile_Context_Type));
-
- lns = (SLang_Name_Type **) SLcalloc (sizeof (SLang_Name_Type *), SLLOCALS_HASH_TABLE_SIZE);
- if (lns == NULL)
- {
- SLfree ((char *) cc);
- return -1;
- }
-
-#if _SLANG_HAS_DEBUG_CODE
- if ((name != NULL)
- && (NULL == (name = SLang_create_slstring (name))))
- {
- SLfree ((char *) cc);
- SLfree ((char *) lns);
- return -1;
- }
-
- cc->compile_filename = This_Compile_Filename;
- This_Compile_Filename = name;
-#endif
-
- cc->static_namespace = This_Static_NameSpace;
- cc->compile_variable_mode = Default_Variable_Mode;
- cc->define_function = Default_Define_Function;
- cc->locals_hash_table = Locals_Hash_Table;
-
- cc->lang_defining_function = Lang_Defining_Function;
- cc->local_variable_number = Local_Variable_Number;
- cc->function_args_number = Function_Args_Number;
- cc->locals_hash_table = Locals_Hash_Table;
- cc->compile_mode_function = Compile_Mode_Function;
-
- cc->next = Compile_Context_Stack;
- Compile_Context_Stack = cc;
-
- Compile_Mode_Function = compile_basic_token_mode;
- Default_Variable_Mode = compile_public_variable_mode;
- Default_Define_Function = define_public_function;
- Lang_Defining_Function = 0;
- Local_Variable_Number = 0;
- Function_Args_Number = 0;
- Locals_Hash_Table = lns;
- return 0;
-}
-
-static int init_interpreter (void)
-{
- SLang_NameSpace_Type *ns;
-
- if (Global_NameSpace != NULL)
- return 0;
-
- if (NULL == (ns = _SLns_allocate_namespace ("***GLOBAL***", SLGLOBALS_HASH_TABLE_SIZE)))
- return -1;
- if (-1 == _SLns_set_namespace_name (ns, "Global"))
- return -1;
- Global_NameSpace = ns;
-
- _SLRun_Stack = (SLang_Object_Type *) SLcalloc (SLANG_MAX_STACK_LEN,
- sizeof (SLang_Object_Type));
- if (_SLRun_Stack == NULL)
- return -1;
-
- _SLStack_Pointer = _SLRun_Stack;
- _SLStack_Pointer_Max = _SLRun_Stack + SLANG_MAX_STACK_LEN;
-
- SLShort_Blocks[0].bc_main_type = _SLANG_BC_RETURN;
- SLShort_Blocks[2].bc_main_type = _SLANG_BC_BREAK;
- SLShort_Blocks[4].bc_main_type = _SLANG_BC_CONTINUE;
-
- Num_Args_Stack = (int *) SLmalloc (sizeof (int) * SLANG_MAX_RECURSIVE_DEPTH);
- if (Num_Args_Stack == NULL)
- {
- SLfree ((char *) _SLRun_Stack);
- return -1;
- }
- Recursion_Depth = 0;
- Frame_Pointer_Stack = (unsigned int *) SLmalloc (sizeof (unsigned int) * SLANG_MAX_RECURSIVE_DEPTH);
- if (Frame_Pointer_Stack == NULL)
- {
- SLfree ((char *) _SLRun_Stack);
- SLfree ((char *)Num_Args_Stack);
- return -1;
- }
- Frame_Pointer_Depth = 0;
- Frame_Pointer = _SLRun_Stack;
-
- Default_Variable_Mode = compile_public_variable_mode;
- Default_Define_Function = define_public_function;
- return 0;
-}
-
-static int add_generic_table (SLang_NameSpace_Type *ns,
- SLang_Name_Type *table, char *pp_name,
- unsigned int entry_len)
-{
- SLang_Name_Type *t, **ns_table;
- char *name;
- unsigned int table_size;
-
- if (-1 == init_interpreter ())
- return -1;
-
- if (ns == NULL)
- ns = Global_NameSpace;
-
- ns_table = ns->table;
- table_size = ns->table_size;
-
- if ((pp_name != NULL)
- && (-1 == SLdefine_for_ifdef (pp_name)))
- return -1;
-
- t = table;
- while (NULL != (name = t->name))
- {
- unsigned long hash;
-
- /* Backward compatibility: '.' WAS used as hash marker */
- if (*name == '.')
- {
- name++;
- t->name = name;
- }
-
- if (NULL == (name = SLang_create_slstring (name)))
- return -1;
-
- t->name = name;
-
- hash = _SLcompute_string_hash (name);
- hash = hash % table_size;
-
- t->next = ns_table [(unsigned int) hash];
- ns_table [(unsigned int) hash] = t;
-
- t = (SLang_Name_Type *) ((char *)t + entry_len);
- }
-
- return 0;
-}
-
-int SLadd_intrin_fun_table (SLang_Intrin_Fun_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Intrin_Fun_Type));
-}
-
-int SLadd_intrin_var_table (SLang_Intrin_Var_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Intrin_Var_Type));
-}
-
-int SLadd_app_unary_table (SLang_App_Unary_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_App_Unary_Type));
-}
-
-int SLadd_math_unary_table (SLang_Math_Unary_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Math_Unary_Type));
-}
-
-int SLadd_iconstant_table (SLang_IConstant_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_IConstant_Type));
-}
-
-#if SLANG_HAS_FLOAT
-int SLadd_dconstant_table (SLang_DConstant_Type *tbl, char *pp)
-{
- return add_generic_table (NULL, (SLang_Name_Type *) tbl, pp, sizeof (SLang_DConstant_Type));
-}
-#endif
-
-/* ----------- */
-int SLns_add_intrin_fun_table (SLang_NameSpace_Type *ns, SLang_Intrin_Fun_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Intrin_Fun_Type));
-}
-
-int SLns_add_intrin_var_table (SLang_NameSpace_Type *ns, SLang_Intrin_Var_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Intrin_Var_Type));
-}
-
-int SLns_add_app_unary_table (SLang_NameSpace_Type *ns, SLang_App_Unary_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_App_Unary_Type));
-}
-
-int SLns_add_math_unary_table (SLang_NameSpace_Type *ns, SLang_Math_Unary_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_Math_Unary_Type));
-}
-
-int SLns_add_iconstant_table (SLang_NameSpace_Type *ns, SLang_IConstant_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_IConstant_Type));
-}
-
-#if SLANG_HAS_FLOAT
-int SLns_add_dconstant_table (SLang_NameSpace_Type *ns, SLang_DConstant_Type *tbl, char *pp)
-{
- return add_generic_table (ns, (SLang_Name_Type *) tbl, pp, sizeof (SLang_DConstant_Type));
-}
-#endif
-
-/* what is a bitmapped value:
- * 1 intrin fun
- * 2 user fun
- * 4 intrin var
- * 8 user defined var
- */
-SLang_Array_Type *_SLang_apropos (char *namespace_name, char *pat, unsigned int what)
-{
- SLang_NameSpace_Type *ns;
-
- if (namespace_name == NULL)
- namespace_name = "Global";
-
- if (*namespace_name == 0)
- ns = This_Static_NameSpace;
- else ns = _SLns_find_namespace (namespace_name);
-
- return _SLnspace_apropos (ns, pat, what);
-}
-
-void _SLang_implements_intrinsic (char *name)
-{
- if (This_Static_NameSpace == NULL)
- {
- SLang_verror (SL_INTRINSIC_ERROR, "No namespace available");
- return;
- }
-
- (void) _SLns_set_namespace_name (This_Static_NameSpace, name);
-
- Default_Define_Function = define_static_function;
- Default_Variable_Mode = compile_static_variable_mode;
-}
-
-void _SLang_use_namespace_intrinsic (char *name)
-{
- SLang_NameSpace_Type *ns;
-
- if (NULL == (ns = _SLns_find_namespace (name)))
- {
- SLang_verror (SL_INTRINSIC_ERROR, "Namespace %s does not exist", name);
- return;
- }
- This_Static_NameSpace = ns;
- if (Global_NameSpace == ns)
- {
- Default_Define_Function = define_public_function;
- Default_Variable_Mode = compile_public_variable_mode;
- }
- else
- {
- Default_Define_Function = define_static_function;
- Default_Variable_Mode = compile_static_variable_mode;
- }
-}
-
-
-char *_SLang_cur_namespace_intrinsic (void)
-{
- if (This_Static_NameSpace == NULL)
- return "Global";
-
- if (This_Static_NameSpace->namespace_name == NULL)
- return "";
-
- return This_Static_NameSpace->namespace_name;
-}
diff --git a/mdk-stage1/slang/slang.h b/mdk-stage1/slang/slang.h
deleted file mode 100644
index 900b14043..000000000
--- a/mdk-stage1/slang/slang.h
+++ /dev/null
@@ -1,1930 +0,0 @@
-#ifndef DAVIS_SLANG_H_
-#define DAVIS_SLANG_H_
-/* -*- mode: C; mode: fold; -*- */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#define SLANG_VERSION 10404
-#define SLANG_VERSION_STRING "1.4.4"
-
-/*{{{ System Dependent Macros and Typedefs */
-
-#if defined(__WATCOMC__) && defined(DOS)
-# ifndef __MSDOS__
-# define __MSDOS__
-# endif
-# ifndef DOS386
-# define DOS386
-# endif
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-#endif /* __watcomc__ */
-
-#if defined(unix) || defined(__unix)
-# ifndef __unix__
-# define __unix__ 1
-# endif
-#endif
-
-#if !defined(__GO32__)
-# ifdef __unix__
-# define REAL_UNIX_SYSTEM
-# endif
-#endif
-
-/* Set of the various defines for pc systems. This includes OS/2 */
-#ifdef __GO32__
-# ifndef __DJGPP__
-# define __DJGPP__ 1
-# endif
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-#endif
-
-#ifdef __BORLANDC__
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-#endif
-
-#ifdef __MSDOS__
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-#endif
-
-#if defined(OS2) || defined(__os2__)
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-# ifndef __os2__
-# define __os2__
-# endif
-#endif
-
-#if defined(__NT__) || defined(__MINGW32__) || defined(__CYGWIN32__)
-# ifndef IBMPC_SYSTEM
-# define IBMPC_SYSTEM
-# endif
-#endif
-
-#if defined(IBMPC_SYSTEM) || defined(VMS)
-# ifdef REAL_UNIX_SYSTEM
-# undef REAL_UNIX_SYSTEM
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#if 0
-}
-#endif
-
-#include <stdio.h>
-#include <stdarg.h>
-#if defined(__STDC__) || defined(__BORLANDC__) || defined(__cplusplus)
-# include <stddef.h> /* for offsetof */
-#endif
-
-/* ---------------------------- Generic Macros ----------------------------- */
-
-/* __SC__ is defined for Symantec C++
- DOS386 is defined for -mx memory model, 32 bit DOS extender. */
-
-#if defined(__SC__) && !defined(DOS386)
-# include <dos.h>
-#endif
-
-#if defined(__BORLANDC__)
-# include <alloc.h>
-#endif
-
-#if defined (__cplusplus) || defined(__STDC__) || defined(IBMPC_SYSTEM)
- typedef void *VOID_STAR;
-#else
- typedef unsigned char *VOID_STAR;
-#endif
-
-typedef int (*FVOID_STAR)(void);
-
-#if defined(__MSDOS_) && defined(__BORLANDC__)
-# define SLFREE(buf) farfree((void far *)(buf))
-# define SLMALLOC(x) farmalloc((unsigned long) (x))
-# define SLREALLOC(buf, n) farrealloc((void far *) (buf), (unsigned long) (n))
-# define SLCALLOC(n, m) farcalloc((unsigned long) (n), (unsigned long) (m))
-#else
-# if defined(VMS) && !defined(__DECC)
-# define SLFREE VAXC$FREE_OPT
-# define SLMALLOC VAXC$MALLOC_OPT
-# define SLREALLOC VAXC$REALLOC_OPT
-# define SLCALLOC VAXC$CALLOC_OPT
-# else
-# define SLFREE(x) free((char *)(x))
-# define SLMALLOC malloc
-# define SLREALLOC realloc
-# define SLCALLOC calloc
-# endif
-#endif
-
- extern char *SLdebug_malloc (unsigned long);
- extern char *SLdebug_calloc (unsigned long, unsigned long);
- extern char *SLdebug_realloc (char *, unsigned long);
- extern void SLdebug_free (char *);
- extern void SLmalloc_dump_statistics (void);
- extern char *SLstrcpy(register char *, register char *);
- extern int SLstrcmp(register char *, register char *);
- extern char *SLstrncpy(char *, register char *, register int);
-
- extern void SLmemset (char *, char, int);
- extern char *SLmemchr (register char *, register char, register int);
- extern char *SLmemcpy (char *, char *, int);
- extern int SLmemcmp (char *, char *, int);
-
-/*}}}*/
-
-/*{{{ Interpreter Typedefs */
-
-typedef struct _SLang_Name_Type
-{
- char *name;
- struct _SLang_Name_Type *next;
- char name_type;
- /* These values must be less than 0x10 because they map directly
- * to byte codes. See _slang.h.
- */
-#define SLANG_LVARIABLE 0x01
-#define SLANG_GVARIABLE 0x02
-#define SLANG_IVARIABLE 0x03 /* intrinsic variables */
- /* Note!!! For Macro MAKE_VARIABLE below to work, SLANG_IVARIABLE Must
- be 1 less than SLANG_RVARIABLE!!! */
-#define SLANG_RVARIABLE 0x04 /* read only variable */
-#define SLANG_INTRINSIC 0x05
-#define SLANG_FUNCTION 0x06
-#define SLANG_MATH_UNARY 0x07
-#define SLANG_APP_UNARY 0x08
-#define SLANG_ICONSTANT 0x09
-#define SLANG_DCONSTANT 0x0A
-#define SLANG_PVARIABLE 0x0B /* private */
-#define SLANG_PFUNCTION 0x0C /* private */
-
- /* Rest of fields depend on name type */
-}
-SLang_Name_Type;
-
-typedef struct
-{
- char *name;
- struct _SLang_Name_Type *next; /* this is for the hash table */
- char name_type;
-
- FVOID_STAR i_fun; /* address of object */
-
- /* Do not change this without modifying slang.c:execute_intrinsic_fun */
-#define SLANG_MAX_INTRIN_ARGS 7
- unsigned char arg_types [SLANG_MAX_INTRIN_ARGS];
- unsigned char num_args;
- unsigned char return_type;
-}
-SLang_Intrin_Fun_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- VOID_STAR addr;
- unsigned char type;
-}
-SLang_Intrin_Var_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- int unary_op;
-}
-SLang_App_Unary_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
-
- int unary_op;
-}
-SLang_Math_Unary_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
- int i;
-}
-SLang_IConstant_Type;
-
-typedef struct
-{
- char *name;
- SLang_Name_Type *next;
- char name_type;
- double d;
-}
-SLang_DConstant_Type;
-
-typedef struct
-{
- char *field_name;
- unsigned int offset;
- unsigned char type;
- unsigned char read_only;
-}
-SLang_IStruct_Field_Type;
-
-extern int SLadd_intrin_fun_table (SLang_Intrin_Fun_Type *, char *);
-extern int SLadd_intrin_var_table (SLang_Intrin_Var_Type *, char *);
-extern int SLadd_app_unary_table (SLang_App_Unary_Type *, char *);
-extern int SLadd_math_unary_table (SLang_Math_Unary_Type *, char *);
-extern int SLadd_iconstant_table (SLang_IConstant_Type *, char *);
-extern int SLadd_dconstant_table (SLang_DConstant_Type *, char *);
-extern int SLadd_istruct_table (SLang_IStruct_Field_Type *, VOID_STAR, char *);
-
-typedef struct _SLang_NameSpace_Type SLang_NameSpace_Type;
-
-extern int SLns_add_intrin_fun_table (SLang_NameSpace_Type *, SLang_Intrin_Fun_Type *, char *);
-extern int SLns_add_intrin_var_table (SLang_NameSpace_Type *, SLang_Intrin_Var_Type *, char *);
-extern int SLns_add_app_unary_table (SLang_NameSpace_Type *, SLang_App_Unary_Type *, char *);
-extern int SLns_add_math_unary_table (SLang_NameSpace_Type *, SLang_Math_Unary_Type *, char *);
-extern int SLns_add_iconstant_table (SLang_NameSpace_Type *, SLang_IConstant_Type *, char *);
-extern int SLns_add_dconstant_table (SLang_NameSpace_Type *, SLang_DConstant_Type *, char *);
-extern int SLns_add_istruct_table (SLang_NameSpace_Type *, SLang_IStruct_Field_Type *, VOID_STAR, char *);
-
-extern SLang_NameSpace_Type *SLns_create_namespace (char *);
-extern void SLns_delete_namespace (SLang_NameSpace_Type *);
-
-typedef struct SLang_Load_Type
-{
- int type;
-
- VOID_STAR client_data;
- /* Pointer to data that client needs for loading */
-
- int auto_declare_globals;
- /* if non-zero, undefined global variables are declared as static */
-
- char *(*read)(struct SLang_Load_Type *);
- /* function to call to read next line from obj. */
-
- unsigned int line_num;
- /* Number of lines read, used for error reporting */
-
- int parse_level;
- /* 0 if at top level of parsing */
-
- char *name;
- /* Name of this object, e.g., filename. This name should be unique because
- * it alone determines the name space for static objects associated with
- * the compilable unit.
- */
-
- unsigned long reserved[4];
- /* For future expansion */
-} SLang_Load_Type;
-
-extern SLang_Load_Type *SLallocate_load_type (char *);
-extern void SLdeallocate_load_type (SLang_Load_Type *);
-
-/* Returns SLang_Error upon failure */
-extern int SLang_load_object (SLang_Load_Type *);
-extern int (*SLang_Load_File_Hook)(char *);
-extern int (*SLang_Auto_Declare_Var_Hook) (char *);
-
-extern int SLang_generate_debug_info (int);
-
-
-#if defined(ultrix) && !defined(__GNUC__)
-# ifndef NO_PROTOTYPES
-# define NO_PROTOTYPES
-# endif
-#endif
-
-#ifndef NO_PROTOTYPES
-# define _PROTO(x) x
-#else
-# define _PROTO(x) ()
-#endif
-
-typedef struct SL_OOBinary_Type
-{
- unsigned char data_type; /* partner type for binary op */
-
- int (*binary_function)_PROTO((int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR));
-
- int (*binary_result) _PROTO((int, unsigned char, unsigned char, unsigned char *));
- struct SL_OOBinary_Type *next;
-}
-SL_OOBinary_Type;
-
-typedef struct _SL_Typecast_Type
-{
- unsigned char data_type; /* to_type */
- int allow_implicit;
-
- int (*typecast)_PROTO((unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR));
- struct _SL_Typecast_Type *next;
-}
-SL_Typecast_Type;
-
-typedef struct _SLang_Struct_Type SLang_Struct_Type;
-
-#if defined(SL_APP_WANTS_FOREACH)
-/* It is up to the application to define struct _SLang_Foreach_Context_Type */
-typedef struct _SLang_Foreach_Context_Type SLang_Foreach_Context_Type;
-#else
-typedef int SLang_Foreach_Context_Type;
-#endif
-
-typedef struct
-{
- unsigned char cl_class_type;
-#define SLANG_CLASS_TYPE_MMT 0
-#define SLANG_CLASS_TYPE_SCALAR 1
-#define SLANG_CLASS_TYPE_VECTOR 2
-#define SLANG_CLASS_TYPE_PTR 3
-
- unsigned int cl_data_type; /* SLANG_INTEGER_TYPE, etc... */
- char *cl_name; /* slstring type */
-
- unsigned int cl_sizeof_type;
- VOID_STAR cl_transfer_buf; /* cl_sizeof_type bytes*/
-
- /* Methods */
-
- /* Most of the method functions are prototyped:
- * int method (unsigned char type, VOID_STAR addr);
- * Here, @type@ represents the type of object that the method is asked
- * to deal with. The second parameter @addr@ will contain the ADDRESS of
- * the object. For example, if type is SLANG_INT_TYPE, then @addr@ will
- * actually be int *. Similary, if type is SLANG_STRING_TYPE,
- * then @addr@ will contain the address of the string, i.e., char **.
- */
-
- void (*cl_destroy)_PROTO((unsigned char, VOID_STAR));
- /* Prototype: void destroy(unsigned type, VOID_STAR val)
- * Called to delete/free the object */
-
- char *(*cl_string)_PROTO((unsigned char, VOID_STAR));
- /* Prototype: char *to_string (unsigned char t, VOID_STAR p);
- * Here p is a pointer to the object for which a string representation
- * is to be returned. The returned pointer is to be a MALLOCED string.
- */
-
- /* Prototype: void push(unsigned char type, VOID_STAR v);
- * Push a copy of the object of type @type@ at address @v@ onto the
- * stack.
- */
- int (*cl_push)_PROTO((unsigned char, VOID_STAR));
-
- /* Prototype: int pop(unsigned char type, VOID_STAR v);
- * Pops value from stack and assign it to object, whose address is @v@.
- */
- int (*cl_pop)_PROTO((unsigned char, VOID_STAR));
-
- int (*cl_unary_op_result_type)_PROTO((int, unsigned char, unsigned char *));
- int (*cl_unary_op)_PROTO((int, unsigned char, VOID_STAR, unsigned int, VOID_STAR));
-
- int (*cl_app_unary_op_result_type)_PROTO((int, unsigned char, unsigned char *));
- int (*cl_app_unary_op)_PROTO((int, unsigned char, VOID_STAR, unsigned int, VOID_STAR));
-
- /* If this function is non-NULL, it will be called for sin, cos, etc... */
-#define SLMATH_SIN 1
-#define SLMATH_COS 2
-#define SLMATH_TAN 3
-#define SLMATH_ATAN 4
-#define SLMATH_ASIN 5
-#define SLMATH_ACOS 6
-#define SLMATH_EXP 7
-#define SLMATH_LOG 8
-#define SLMATH_SQRT 9
-#define SLMATH_LOG10 10
-#define SLMATH_REAL 11
-#define SLMATH_IMAG 12
-#define SLMATH_SINH 13
-#define SLMATH_COSH 14
-#define SLMATH_TANH 15
-#define SLMATH_ATANH 16
-#define SLMATH_ASINH 17
-#define SLMATH_ACOSH 18
-#define SLMATH_TODOUBLE 19
-#define SLMATH_CONJ 20
-
- int (*cl_math_op)_PROTO((int, unsigned char, VOID_STAR, unsigned int, VOID_STAR));
- int (*cl_math_op_result_type)_PROTO((int, unsigned char, unsigned char *));
-
- SL_OOBinary_Type *cl_binary_ops;
- SL_Typecast_Type *cl_typecast_funs;
-
- void (*cl_byte_code_destroy)_PROTO((unsigned char, VOID_STAR));
- void (*cl_user_destroy_fun)_PROTO((unsigned char, VOID_STAR));
- int (*cl_init_array_object)_PROTO((unsigned char, VOID_STAR));
- int (*cl_datatype_deref)_PROTO((unsigned char));
- SLang_Struct_Type *cl_struct_def;
- int (*cl_dereference) _PROTO((unsigned char, VOID_STAR));
- int (*cl_acopy) (unsigned char, VOID_STAR, VOID_STAR);
- int (*cl_apop) _PROTO((unsigned char, VOID_STAR));
- int (*cl_apush) _PROTO((unsigned char, VOID_STAR));
- int (*cl_push_literal) _PROTO((unsigned char, VOID_STAR));
- void (*cl_adestroy)_PROTO((unsigned char, VOID_STAR));
- int (*cl_push_intrinsic)_PROTO((unsigned char, VOID_STAR));
- int (*cl_void_typecast)_PROTO((unsigned char, VOID_STAR, unsigned int, unsigned char, VOID_STAR));
-
- int (*cl_anytype_typecast)_PROTO((unsigned char, VOID_STAR, unsigned int, unsigned char, VOID_STAR));
-
- /* Array access functions */
- int (*cl_aput) (unsigned char, unsigned int);
- int (*cl_aget) (unsigned char, unsigned int);
- int (*cl_anew) (unsigned char, unsigned int);
-
- /* length method */
- int (*cl_length) (unsigned char, VOID_STAR, unsigned int *);
-
- /* foreach */
- SLang_Foreach_Context_Type *(*cl_foreach_open) (unsigned char, unsigned int);
- void (*cl_foreach_close) (unsigned char, SLang_Foreach_Context_Type *);
- int (*cl_foreach) (unsigned char, SLang_Foreach_Context_Type *);
-
- /* Structure access: get and put (assign to) fields */
- int (*cl_sput) (unsigned char, char *);
- int (*cl_sget) (unsigned char, char *);
-
- /* File I/O */
- int (*cl_fread) (unsigned char, FILE *, VOID_STAR, unsigned int, unsigned int *);
- int (*cl_fwrite) (unsigned char, FILE *, VOID_STAR, unsigned int, unsigned int *);
- int (*cl_fdread) (unsigned char, int, VOID_STAR, unsigned int, unsigned int *);
- int (*cl_fdwrite) (unsigned char, int, VOID_STAR, unsigned int, unsigned int *);
-
- int (*cl_to_bool) (unsigned char, int *);
-
- int (*cl_cmp)(unsigned char, VOID_STAR, VOID_STAR, int *);
-
-} SLang_Class_Type;
-
-/* These are the low-level functions for building push/pop methods. They
- * know nothing about memory management. For SLANG_CLASS_TYPE_MMT, use the
- * MMT push/pop functions instead.
- */
-extern int SLclass_push_double_obj (unsigned char, double);
-extern int SLclass_push_float_obj (unsigned char, float);
-extern int SLclass_push_long_obj (unsigned char, long);
-extern int SLclass_push_int_obj (unsigned char, int);
-extern int SLclass_push_short_obj (unsigned char, short);
-extern int SLclass_push_char_obj (unsigned char, char);
-extern int SLclass_push_ptr_obj (unsigned char, VOID_STAR);
-extern int SLclass_pop_double_obj (unsigned char, double *);
-extern int SLclass_pop_float_obj (unsigned char, float *);
-extern int SLclass_pop_long_obj (unsigned char, long *);
-extern int SLclass_pop_int_obj (unsigned char, int *);
-extern int SLclass_pop_short_obj (unsigned char, short *);
-extern int SLclass_pop_char_obj (unsigned char, char *);
-extern int SLclass_pop_ptr_obj (unsigned char, VOID_STAR *);
-
-extern SLang_Class_Type *SLclass_allocate_class (char *);
-extern int SLclass_get_class_id (SLang_Class_Type *cl);
-extern int SLclass_create_synonym (char *, unsigned char);
-extern int SLclass_is_class_defined (unsigned char);
-
-extern int SLclass_register_class (SLang_Class_Type *, unsigned char, unsigned int, unsigned char);
-extern int SLclass_set_string_function (SLang_Class_Type *, char *(*)(unsigned char, VOID_STAR));
-extern int SLclass_set_destroy_function (SLang_Class_Type *, void (*)(unsigned char, VOID_STAR));
-extern int SLclass_set_push_function (SLang_Class_Type *, int (*)(unsigned char, VOID_STAR));
-extern int SLclass_set_pop_function (SLang_Class_Type *, int (*)(unsigned char, VOID_STAR));
-
-extern int SLclass_set_aget_function (SLang_Class_Type *, int (*)(unsigned char, unsigned int));
-extern int SLclass_set_aput_function (SLang_Class_Type *, int (*)(unsigned char, unsigned int));
-extern int SLclass_set_anew_function (SLang_Class_Type *, int (*)(unsigned char, unsigned int));
-
-extern int SLclass_set_sget_function (SLang_Class_Type *, int (*)(unsigned char, char *));
-extern int SLclass_set_sput_function (SLang_Class_Type *, int (*)(unsigned char, char *));
-
-/* Typecast object on the stack to type p1. p2 and p3 should be set to 1 */
-extern int SLclass_typecast (unsigned char, int, int);
-
-extern int SLclass_add_unary_op (unsigned char,
- int (*) (int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*) (int, unsigned char, unsigned char *));
-
-extern int
-SLclass_add_app_unary_op (unsigned char,
- int (*) (int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*) (int, unsigned char, unsigned char *));
-
-extern int
-SLclass_add_binary_op (unsigned char, unsigned char,
- int (*) (int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*) (int, unsigned char, unsigned char, unsigned char *));
-
-extern int
-SLclass_add_math_op (unsigned char,
- int (*)(int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*)(int, unsigned char, unsigned char *));
-
-extern int
-SLclass_add_typecast (unsigned char /* from */, unsigned char /* to */,
- int (*)_PROTO((unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR)),
- int /* allow implicit typecasts */
- );
-
-extern char *SLclass_get_datatype_name (unsigned char);
-
-extern double SLcomplex_abs (double *);
-extern double *SLcomplex_times (double *, double *, double *);
-extern double *SLcomplex_divide (double *, double *, double *);
-extern double *SLcomplex_sin (double *, double *);
-extern double *SLcomplex_cos (double *, double *);
-extern double *SLcomplex_tan (double *, double *);
-extern double *SLcomplex_asin (double *, double *);
-extern double *SLcomplex_acos (double *, double *);
-extern double *SLcomplex_atan (double *, double *);
-extern double *SLcomplex_exp (double *, double *);
-extern double *SLcomplex_log (double *, double *);
-extern double *SLcomplex_log10 (double *, double *);
-extern double *SLcomplex_sqrt (double *, double *);
-extern double *SLcomplex_sinh (double *, double *);
-extern double *SLcomplex_cosh (double *, double *);
-extern double *SLcomplex_tanh (double *, double *);
-extern double *SLcomplex_pow (double *, double *, double *);
-extern double SLmath_hypot (double x, double y);
-
-/* Not implemented yet */
-extern double *SLcomplex_asinh (double *, double *);
-extern double *SLcomplex_acosh (double *, double *);
-extern double *SLcomplex_atanh (double *, double *);
-
-#ifdef _SLANG_SOURCE_
-typedef struct _SLang_MMT_Type SLang_MMT_Type;
-#else
-typedef int SLang_MMT_Type;
-#endif
-
-extern void SLang_free_mmt (SLang_MMT_Type *);
-extern VOID_STAR SLang_object_from_mmt (SLang_MMT_Type *);
-extern SLang_MMT_Type *SLang_create_mmt (unsigned char, VOID_STAR);
-extern int SLang_push_mmt (SLang_MMT_Type *);
-extern SLang_MMT_Type *SLang_pop_mmt (unsigned char);
-extern void SLang_inc_mmt (SLang_MMT_Type *);
-
-/* Maximum number of dimensions of an array. */
-#define SLARRAY_MAX_DIMS 7
-typedef struct _SLang_Array_Type
-{
- unsigned char data_type;
- unsigned int sizeof_type;
- VOID_STAR data;
- unsigned int num_elements;
- unsigned int num_dims;
- int dims [SLARRAY_MAX_DIMS];
- VOID_STAR (*index_fun)_PROTO((struct _SLang_Array_Type *, int *));
- /* This function is designed to allow a type to store an array in
- * any manner it chooses. This function returns the address of the data
- * value at the specified index location.
- */
- unsigned int flags;
-#define SLARR_DATA_VALUE_IS_READ_ONLY 1
-#define SLARR_DATA_VALUE_IS_POINTER 2
-#define SLARR_DATA_VALUE_IS_RANGE 4
-#define SLARR_DATA_VALUE_IS_INTRINSIC 8
- SLang_Class_Type *cl;
- unsigned int num_refs;
-}
-SLang_Array_Type;
-
-extern int SLang_pop_array_of_type (SLang_Array_Type **, unsigned char);
-extern int SLang_pop_array (SLang_Array_Type **, int);
-extern int SLang_push_array (SLang_Array_Type *, int);
-extern void SLang_free_array (SLang_Array_Type *);
-extern SLang_Array_Type *SLang_create_array (unsigned char, int, VOID_STAR, int *, unsigned int);
-extern SLang_Array_Type *SLang_duplicate_array (SLang_Array_Type *);
-extern int SLang_get_array_element (SLang_Array_Type *, int *, VOID_STAR);
-extern int SLang_set_array_element (SLang_Array_Type *, int *, VOID_STAR);
-
-
-/*}}}*/
-
-/*{{{ Interpreter Function Prototypes */
-
- extern volatile int SLang_Error;
-/* Non zero if error occurs. Must be reset to zero to continue. */
-/* error codes, severe errors are less than 0 */
-#define SL_APPLICATION_ERROR -2
-#define SL_VARIABLE_UNINITIALIZED -3
-#define SL_INTERNAL_ERROR -5
-#define SL_STACK_OVERFLOW -6
-#define SL_STACK_UNDERFLOW -7
-#define SL_UNDEFINED_NAME -8
-#define SL_SYNTAX_ERROR -9
-#define SL_DUPLICATE_DEFINITION -10
-#define SL_TYPE_MISMATCH -11
-#define SL_OBJ_UNKNOWN -13
-#define SL_UNKNOWN_ERROR -14
-#define SL_TYPE_UNDEFINED_OP_ERROR -16
-
-#define SL_INTRINSIC_ERROR 1
-/* Intrinsic error is an error generated by intrinsic functions */
-#define SL_USER_BREAK 2
-#define SL_DIVIDE_ERROR 3
-#define SL_OBJ_NOPEN 4
-#define SL_USER_ERROR 5
-#define SL_USAGE_ERROR 6
-#define SL_READONLY_ERROR 7
-#define SL_INVALID_PARM 8
-#define SL_NOT_IMPLEMENTED 9
-#define SL_MALLOC_ERROR 10
-#define SL_OVERFLOW 11
-#define SL_FLOATING_EXCEPTION 12
-
-/* Compatibility */
-#define USER_BREAK SL_USER_BREAK
-#define INTRINSIC_ERROR SL_INTRINSIC_ERROR
-
- extern int SLang_Traceback;
- /* If non-zero, dump an S-Lang traceback upon error. Available as
- _traceback in S-Lang. */
-
- extern char *SLang_User_Prompt;
- /* Prompt to use when reading from stdin */
- extern int SLang_Version;
- extern char *SLang_Version_String;
-extern char *SLang_Doc_Dir;
-
-extern void (*SLang_VMessage_Hook) (char *, va_list);
-extern void SLang_vmessage (char *, ...);
-
- extern void (*SLang_Error_Hook)(char *);
- /* Pointer to application dependent error messaging routine. By default,
- messages are displayed on stderr. */
-
- extern void (*SLang_Exit_Error_Hook)(char *, va_list);
- extern void SLang_exit_error (char *, ...);
- extern void (*SLang_Dump_Routine)(char *);
- /* Called if S-Lang traceback is enabled as well as other debugging
- routines (e.g., trace). By default, these messages go to stderr. */
-
- extern void (*SLang_Interrupt)(void);
- /* function to call whenever inner interpreter is entered. This is
- a good place to set SLang_Error to USER_BREAK. */
-
- extern void (*SLang_User_Clear_Error)(void);
- /* function that gets called when '_clear_error' is called. */
-
- /* If non null, these call C functions before and after a slang function. */
- extern void (*SLang_Enter_Function)(char *);
-extern void (*SLang_Exit_Function)(char *);
-
-extern int SLang_Num_Function_Args;
-
-/* Functions: */
-
-extern int SLang_init_all (void);
-/* Initializes interpreter and all modules */
-
-extern int SLang_init_slang (void);
-/* This function is mandatory and must be called by all applications that
- * use the interpreter
- */
-extern int SLang_init_posix_process (void); /* process specific intrinsics */
-extern int SLang_init_stdio (void); /* fgets, etc. stdio functions */
-extern int SLang_init_posix_dir (void);
-extern int SLang_init_ospath (void);
-
-extern int SLang_init_slmath (void);
-/* called if math functions sin, cos, etc... are needed. */
-
- extern int SLang_init_slfile (void);
- extern int SLang_init_slunix (void);
- /* These functions are obsolte. Use init_stdio, posix_process, etc. */
-
-extern int SLang_init_slassoc (void);
-/* Assoc Arrays (Hashes) */
-
-extern int SLang_init_array (void);
-/* Additional arrays functions: transpose, etc... */
-
-/* Dynamic linking facility */
-extern int SLang_init_import (void);
-
- extern int SLang_load_file (char *);
- /* Load a file of S-Lang code for interpreting. If the parameter is
- * NULL, input comes from stdin. */
-
- extern void SLang_restart(int);
- /* should be called if an error occurs. If the passed integer is
- * non-zero, items are popped off the stack; otherwise, the stack is
- * left intact. Any time the stack is believed to be trashed, this routine
- * should be called with a non-zero argument (e.g., if setjmp/longjmp is
- * called). */
-
- extern int SLang_byte_compile_file(char *, int);
- /* takes a file of S-Lang code and ``byte-compiles'' it for faster
- * loading. The new filename is equivalent to the old except that a `c' is
- * appended to the name. (e.g., init.sl --> init.slc). The second
- * specified the method; currently, it is not used.
- */
-
- extern int SLang_autoload(char *, char *);
- /* Automatically load S-Lang function p1 from file p2. This function
- is also available via S-Lang */
-
- extern int SLang_load_string(char *);
- /* Like SLang_load_file except input is from a null terminated string. */
-
- extern int SLdo_pop(void);
- /* pops item off stack and frees any memory associated with it */
- extern int SLdo_pop_n(unsigned int);
- /* pops n items off stack and frees any memory associated with them */
-
-extern int SLang_pop_integer(int *);
-extern int SLang_pop_uinteger(unsigned int *);
- /* pops integer *p0 from the stack. Returns 0 upon success and non-zero
- * if the stack is empty or a type mismatch occurs, setting SLang_Error.
- */
-extern int SLang_pop_char (char *);
-extern int SLang_pop_uchar (unsigned char *);
-extern int SLang_pop_short(short *);
-extern int SLang_pop_ushort(unsigned short *);
-extern int SLang_pop_long(long *);
-extern int SLang_pop_ulong(unsigned long *);
-
-extern int SLang_pop_float(float *);
-extern int SLang_pop_double(double *, int *, int *);
- /* Pops double *p1 from stack. If *p3 is non-zero, *p1 was derived
- from the integer *p2. Returns zero upon success. */
-
- extern int SLang_pop_complex (double *, double *);
-
- extern int SLpop_string (char **);
- extern int SLang_pop_string(char **, int *);
- /* pops string *p0 from stack. If *p1 is non-zero, the string must be
- * freed after its use. DO NOT FREE p0 if *p1 IS ZERO! Returns 0 upon
- * success */
-
- extern int SLang_push_complex (double, double);
-
- extern int SLang_push_char (char);
- extern int SLang_push_uchar (unsigned char);
-
- extern int SLang_push_integer(int);
- extern int SLang_push_uinteger(unsigned int);
- /* push integer p1 on stack */
-
- extern int SLang_push_short(short);
- extern int SLang_push_ushort(unsigned short);
- extern int SLang_push_long(long);
- extern int SLang_push_ulong(unsigned long);
- extern int SLang_push_float(float);
- extern int SLang_push_double(double);
- /* Push double onto stack */
-
- extern int SLang_push_string(char *);
- /* Push string p1 onto stack */
-
- extern int SLang_push_malloced_string(char *);
- /* The normal SLang_push_string pushes an slstring. This one converts
- * a normally malloced string to an slstring, and then frees the
- * malloced string. So, do NOT use the malloced string after calling
- * this routine because it will be freed! The routine returns -1 upon
- * error, but the string will be freed.
- */
-
-extern int SLang_push_null (void);
-extern int SLang_pop_null (void);
-
-extern int SLang_push_value (unsigned char type, VOID_STAR);
-extern int SLang_pop_value (unsigned char type, VOID_STAR);
-extern void SLang_free_value (unsigned char type, VOID_STAR);
-
-typedef struct _SLang_Object_Type SLang_Any_Type;
-
-extern int SLang_pop_anytype (SLang_Any_Type **);
-extern int SLang_push_anytype (SLang_Any_Type *);
-extern void SLang_free_anytype (SLang_Any_Type *);
-
-#ifdef _SLANG_SOURCE_
-typedef struct _SLang_Ref_Type SLang_Ref_Type;
-#else
-typedef int SLang_Ref_Type;
-#endif
-
-extern int SLang_pop_ref (SLang_Ref_Type **);
-extern void SLang_free_ref (SLang_Ref_Type *);
-extern int SLang_assign_to_ref (SLang_Ref_Type *, unsigned char, VOID_STAR);
-extern SLang_Name_Type *SLang_pop_function (void);
-extern SLang_Name_Type *SLang_get_fun_from_ref (SLang_Ref_Type *);
-extern void SLang_free_function (SLang_Name_Type *f);
-
- extern int SLang_is_defined(char *);
- /* Return non-zero is p1 is defined otherwise returns 0. */
-
- extern int SLang_run_hooks(char *, unsigned int, ...);
- /* calls S-Lang function p1 pushing p2 strings in the variable argument
- * list onto the stack first.
- * Returns -1 upon error, 1 if hooks exists and it ran,
- * or 0 if hook does not exist. Thus it returns non-zero is hook was called.
- */
-
-/* These functions return 1 if the indicated function exists and the function
- * runs without error. If the function does not exist, the function returns
- * 0. Otherwise -1 is returned with SLang_Error set appropriately.
- */
-extern int SLexecute_function (SLang_Name_Type *);
-extern int SLang_execute_function(char *);
-
-
-extern int SLang_end_arg_list (void);
-extern int SLang_start_arg_list (void);
-
-extern void SLang_verror (int, char *, ...);
-
-extern void SLang_doerror(char *);
- /* set SLang_Error and display p1 as error message */
-
-extern int SLang_add_intrinsic_array (char *, /* name */
- unsigned char, /* type */
- int, /* readonly */
- VOID_STAR, /* data */
- unsigned int, ...); /* num dims */
-
-extern int SLextract_list_element (char *, unsigned int, char,
- char *, unsigned int);
-
-extern void SLexpand_escaped_string (register char *, register char *,
- register char *);
-
-extern SLang_Name_Type *SLang_get_function (char *);
-extern void SLang_release_function (SLang_Name_Type *);
-
-extern int SLreverse_stack (int);
-extern int SLroll_stack (int);
-/* If argument p is positive, the top p objects on the stack are rolled
- * up. If negative, the stack is rolled down.
- */
-extern int SLdup_n (int n);
-/* Duplicate top n elements of stack */
-
-extern int SLang_peek_at_stack1 (void);
-extern int SLang_peek_at_stack (void);
-/* Returns type of next object on stack-- -1 upon stack underflow. */
-extern void SLmake_lut (unsigned char *, unsigned char *, unsigned char);
-
- extern int SLang_guess_type (char *);
-
-extern int SLstruct_create_struct (unsigned int,
- char **,
- unsigned char *,
- VOID_STAR *);
-
-/*}}}*/
-
-/*{{{ Misc Functions */
-
-/* This is an interface to atexit */
-extern int SLang_add_cleanup_function (void (*)(void));
-
-extern char *SLmake_string (char *);
-extern char *SLmake_nstring (char *, unsigned int);
-/* Returns a null terminated string made from the first n characters of the
- * string.
- */
-
-/* The string created by this routine must be freed by SLang_free_slstring
- * and nothing else!! Also these strings must not be modified. Use
- * SLmake_string if you intend to modify them!!
- */
-extern char *SLang_create_nslstring (char *, unsigned int);
-extern char *SLang_create_slstring (char *);
-extern void SLang_free_slstring (char *); /* handles NULL */
-extern int SLang_pop_slstring (char **); /* free with SLang_free_slstring */
-extern char *SLang_concat_slstrings (char *a, char *b);
-extern char *SLang_create_static_slstring (char *); /* adds a string that will not get deleted */
-extern void SLstring_dump_stats (void);
-
-/* Binary strings */
-/* The binary string is an opaque type. Use the SLbstring_get_pointer function
- * to get a pointer and length.
- */
-typedef struct _SLang_BString_Type SLang_BString_Type;
-extern unsigned char *SLbstring_get_pointer (SLang_BString_Type *, unsigned int *);
-
-extern SLang_BString_Type *SLbstring_dup (SLang_BString_Type *);
-extern SLang_BString_Type *SLbstring_create (unsigned char *, unsigned int);
-
-/* The create_malloced function used the first argument which is assumed
- * to be a pointer to a len + 1 malloced string. The extra byte is for
- * \0 termination.
- */
-extern SLang_BString_Type *SLbstring_create_malloced (unsigned char *, unsigned int, int);
-
-/* Create a bstring from an slstring */
-extern SLang_BString_Type *SLbstring_create_slstring (char *);
-
-extern void SLbstring_free (SLang_BString_Type *);
-extern int SLang_pop_bstring (SLang_BString_Type **);
-extern int SLang_push_bstring (SLang_BString_Type *);
-
-extern char *SLmalloc (unsigned int);
-extern char *SLcalloc (unsigned int, unsigned int);
-extern void SLfree(char *); /* This function handles NULL */
-extern char *SLrealloc (char *, unsigned int);
-
-extern char *SLcurrent_time_string (void);
-
-extern int SLatoi(unsigned char *);
-extern long SLatol (unsigned char *);
-extern unsigned long SLatoul (unsigned char *);
-
-extern int SLang_pop_fileptr (SLang_MMT_Type **, FILE **);
-extern char *SLang_get_name_from_fileptr (SLang_MMT_Type *);
-
-typedef struct _SLFile_FD_Type SLFile_FD_Type;
-extern SLFile_FD_Type *SLfile_create_fd (char *, int);
-extern void SLfile_free_fd (SLFile_FD_Type *);
-extern int SLfile_push_fd (SLFile_FD_Type *);
-extern int SLfile_pop_fd (SLFile_FD_Type **);
-extern int SLfile_get_fd (SLFile_FD_Type *, int *);
-extern SLFile_FD_Type *SLfile_dup_fd (SLFile_FD_Type *f0);
-extern int SLang_init_posix_io (void);
-
-typedef double (*SLang_To_Double_Fun_Type)(VOID_STAR);
-extern SLang_To_Double_Fun_Type SLarith_get_to_double_fun (unsigned char, unsigned int *);
-
-extern int SLang_set_argc_argv (int, char **);
-
-/*}}}*/
-
-/*{{{ SLang getkey interface Functions */
-
-#ifdef REAL_UNIX_SYSTEM
-extern int SLang_TT_Baud_Rate;
-extern int SLang_TT_Read_FD;
-#endif
-
-extern int SLang_init_tty (int, int, int);
-/* Initializes the tty for single character input. If the first parameter *p1
- * is in the range 0-255, it will be used for the abort character;
- * otherwise, (unix only) if it is -1, the abort character will be the one
- * used by the terminal. If the second parameter p2 is non-zero, flow
- * control is enabled. If the last parmeter p3 is zero, output processing
- * is NOT turned on. A value of zero is required for the screen management
- * routines. Returns 0 upon success. In addition, if SLang_TT_Baud_Rate ==
- * 0 when this function is called, SLang will attempt to determine the
- * terminals baud rate. As far as the SLang library is concerned, if
- * SLang_TT_Baud_Rate is less than or equal to zero, the baud rate is
- * effectively infinite.
- */
-
-extern void SLang_reset_tty (void);
-/* Resets tty to what it was prior to a call to SLang_init_tty */
-#ifdef REAL_UNIX_SYSTEM
-extern void SLtty_set_suspend_state (int);
- /* If non-zero argument, terminal driver will be told to react to the
- * suspend character. If 0, it will not.
- */
-extern int (*SLang_getkey_intr_hook) (void);
-#endif
-
-#define SLANG_GETKEY_ERROR 0xFFFF
-extern unsigned int SLang_getkey (void);
-/* reads a single key from the tty. If the read fails, 0xFFFF is returned. */
-
-#ifdef IBMPC_SYSTEM
-extern int SLgetkey_map_to_ansi (int);
-#endif
-
-extern int SLang_ungetkey_string (unsigned char *, unsigned int);
-extern int SLang_buffer_keystring (unsigned char *, unsigned int);
-extern int SLang_ungetkey (unsigned char);
-extern void SLang_flush_input (void);
-extern int SLang_input_pending (int);
-extern int SLang_Abort_Char;
-/* The value of the character (0-255) used to trigger SIGINT */
-extern int SLang_Ignore_User_Abort;
-/* If non-zero, pressing the abort character will not result in USER_BREAK
- * SLang_Error. */
-
-extern int SLang_set_abort_signal (void (*)(int));
-/* If SIGINT is generated, the function p1 will be called. If p1 is NULL
- * the SLang_default signal handler is called. This sets SLang_Error to
- * USER_BREAK. I suspect most users will simply want to pass NULL.
- */
-extern unsigned int SLang_Input_Buffer_Len;
-
-extern volatile int SLKeyBoard_Quit;
-
-#ifdef VMS
-/* If this function returns -1, ^Y will be added to input buffer. */
-extern int (*SLtty_VMS_Ctrl_Y_Hook) (void);
-#endif
-/*}}}*/
-
-/*{{{ SLang Keymap routines */
-
-typedef struct SLKeymap_Function_Type
-{
- char *name;
- int (*f)(void);
-}
-SLKeymap_Function_Type;
-
-#define SLANG_MAX_KEYMAP_KEY_SEQ 14
-typedef struct SLang_Key_Type
-{
- struct SLang_Key_Type *next;
- union
- {
- char *s;
- FVOID_STAR f;
- unsigned int keysym;
- }
- f;
- unsigned char type; /* type of function */
-#define SLKEY_F_INTERPRET 0x01
-#define SLKEY_F_INTRINSIC 0x02
-#define SLKEY_F_KEYSYM 0x03
- unsigned char str[SLANG_MAX_KEYMAP_KEY_SEQ + 1];/* key sequence */
-}
-SLang_Key_Type;
-
-typedef struct SLKeyMap_List_Type
-{
- char *name; /* hashed string */
- SLang_Key_Type *keymap;
- SLKeymap_Function_Type *functions; /* intrinsic functions */
-}
-SLKeyMap_List_Type;
-
-/* This is arbitrary but I have got to start somewhere */
-#define SLANG_MAX_KEYMAPS 30
-extern SLKeyMap_List_Type SLKeyMap_List[SLANG_MAX_KEYMAPS];
-
-extern char *SLang_process_keystring(char *);
-
-extern int SLkm_define_key (char *, FVOID_STAR, SLKeyMap_List_Type *);
-
-extern int SLang_define_key(char *, char *, SLKeyMap_List_Type *);
-/* Like define_key1 except that p2 is a string that is to be associated with
- * a function in the functions field of p3. This routine calls define_key1.
- */
-
-extern int SLkm_define_keysym (char *, unsigned int, SLKeyMap_List_Type *);
-
-extern void SLang_undefine_key(char *, SLKeyMap_List_Type *);
-
-extern SLKeyMap_List_Type *SLang_create_keymap(char *, SLKeyMap_List_Type *);
-/* create and returns a pointer to a new keymap named p1 created by copying
- * keymap p2. If p2 is NULL, it is up to the calling routine to initialize
- * the keymap.
- */
-
-extern char *SLang_make_keystring(unsigned char *);
-
-extern SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *, int (*)(void));
-/* read a key using keymap p1 with getkey function p2 */
-
-extern
- FVOID_STAR
- SLang_find_key_function(char *, SLKeyMap_List_Type *);
-
-extern SLKeyMap_List_Type *SLang_find_keymap(char *);
-
-extern int SLang_Last_Key_Char;
-extern int SLang_Key_TimeOut_Flag;
-
-/*}}}*/
-
-/*{{{ SLang Readline Interface */
-
-typedef struct SLang_Read_Line_Type
-{
- struct SLang_Read_Line_Type *prev, *next;
- unsigned char *buf;
- int buf_len; /* number of chars in the buffer */
- int num; /* num and misc are application specific*/
- int misc;
-} SLang_Read_Line_Type;
-
-/* Maximum size of display */
-#define SLRL_DISPLAY_BUFFER_SIZE 256
-
-typedef struct
-{
- SLang_Read_Line_Type *root, *tail, *last;
- unsigned char *buf; /* edit buffer */
- int buf_len; /* sizeof buffer */
- int point; /* current editing point */
- int tab; /* tab width */
- int len; /* current line size */
-
- /* display variables */
- int edit_width; /* length of display field */
- int curs_pos; /* current column */
- int start_column; /* column offset of display */
- int dhscroll; /* amount to use for horiz scroll */
- char *prompt;
-
- FVOID_STAR last_fun; /* last function executed by rl */
-
- /* These two contain an image of what is on the display */
- unsigned char upd_buf1[SLRL_DISPLAY_BUFFER_SIZE];
- unsigned char upd_buf2[SLRL_DISPLAY_BUFFER_SIZE];
- unsigned char *old_upd, *new_upd; /* pointers to previous two buffers */
- int new_upd_len, old_upd_len; /* length of output buffers */
-
- SLKeyMap_List_Type *keymap;
-
- /* tty variables */
- unsigned int flags; /* */
-#define SL_RLINE_NO_ECHO 1
-#define SL_RLINE_USE_ANSI 2
-#define SL_RLINE_BLINK_MATCH 4
- unsigned int (*getkey)(void); /* getkey function -- required */
- void (*tt_goto_column)(int);
- void (*tt_insert)(char);
- void (*update_hook)(unsigned char *, int, int);
- /* The update hook is called with a pointer to a buffer p1 that contains
- * an image of what the update hook is suppoed to produce. The length
- * of the buffer is p2 and after the update, the cursor is to be placed
- * in column p3.
- */
- /* This function is only called when blinking matches */
- int (*input_pending)(int);
- unsigned long reserved[4];
-} SLang_RLine_Info_Type;
-
-extern int SLang_RL_EOF_Char;
-
-extern SLang_Read_Line_Type * SLang_rline_save_line (SLang_RLine_Info_Type *);
-extern int SLang_init_readline (SLang_RLine_Info_Type *);
-extern int SLang_read_line (SLang_RLine_Info_Type *);
-extern int SLang_rline_insert (char *);
-extern void SLrline_redraw (SLang_RLine_Info_Type *);
-extern int SLang_Rline_Quit;
-
-/*}}}*/
-
-/*{{{ Low Level Screen Output Interface */
-
-extern unsigned long SLtt_Num_Chars_Output;
-extern int SLtt_Baud_Rate;
-
-typedef unsigned long SLtt_Char_Type;
-
-#define SLTT_BOLD_MASK 0x01000000UL
-#define SLTT_BLINK_MASK 0x02000000UL
-#define SLTT_ULINE_MASK 0x04000000UL
-#define SLTT_REV_MASK 0x08000000UL
-#define SLTT_ALTC_MASK 0x10000000UL
-
-extern int SLtt_Screen_Rows;
-extern int SLtt_Screen_Cols;
-extern int SLtt_Term_Cannot_Insert;
-extern int SLtt_Term_Cannot_Scroll;
-extern int SLtt_Use_Ansi_Colors;
-extern int SLtt_Ignore_Beep;
-#if defined(REAL_UNIX_SYSTEM)
-extern int SLtt_Force_Keypad_Init;
-extern int SLang_TT_Write_FD;
-#endif
-
-#ifndef IBMPC_SYSTEM
-extern char *SLtt_Graphics_Char_Pairs;
-#endif
-
-#ifndef __GO32__
-#if defined(VMS) || defined(REAL_UNIX_SYSTEM)
-extern int SLtt_Blink_Mode;
-extern int SLtt_Use_Blink_For_ACS;
-extern int SLtt_Newline_Ok;
-extern int SLtt_Has_Alt_Charset;
-extern int SLtt_Has_Status_Line; /* if 0, NO. If > 0, YES, IF -1, ?? */
-# ifndef VMS
-extern int SLtt_Try_Termcap;
-# endif
-#endif
-#endif
-
-#if defined(IBMPC_SYSTEM)
-extern int SLtt_Msdos_Cheap_Video;
-#endif
-
-typedef unsigned short SLsmg_Char_Type;
-#define SLSMG_EXTRACT_CHAR(x) ((x) & 0xFF)
-#define SLSMG_EXTRACT_COLOR(x) (((x)>>8)&0xFF)
-#define SLSMG_BUILD_CHAR(ch,color) (((SLsmg_Char_Type)(unsigned char)(ch))|((color)<<8))
-
-extern int SLtt_flush_output (void);
-extern void SLtt_set_scroll_region(int, int);
-extern void SLtt_reset_scroll_region(void);
-extern void SLtt_reverse_video (int);
-extern void SLtt_bold_video (void);
-extern void SLtt_begin_insert(void);
-extern void SLtt_end_insert(void);
-extern void SLtt_del_eol(void);
-extern void SLtt_goto_rc (int, int);
-extern void SLtt_delete_nlines(int);
-extern void SLtt_delete_char(void);
-extern void SLtt_erase_line(void);
-extern void SLtt_normal_video(void);
-extern void SLtt_cls(void);
-extern void SLtt_beep(void);
-extern void SLtt_reverse_index(int);
-extern void SLtt_smart_puts(SLsmg_Char_Type *, SLsmg_Char_Type *, int, int);
-extern void SLtt_write_string (char *);
-extern void SLtt_putchar(char);
-extern int SLtt_init_video (void);
-extern int SLtt_reset_video (void);
-extern void SLtt_get_terminfo(void);
-extern void SLtt_get_screen_size (void);
-extern int SLtt_set_cursor_visibility (int);
-
-extern int SLtt_set_mouse_mode (int, int);
-
-#if defined(VMS) || defined(REAL_UNIX_SYSTEM)
-extern int SLtt_initialize (char *);
-extern void SLtt_enable_cursor_keys(void);
-extern void SLtt_set_term_vtxxx(int *);
-extern void SLtt_set_color_esc (int, char *);
-extern void SLtt_wide_width(void);
-extern void SLtt_narrow_width(void);
-extern void SLtt_set_alt_char_set (int);
-extern int SLtt_write_to_status_line (char *, int);
-extern void SLtt_disable_status_line (void);
-# ifdef REAL_UNIX_SYSTEM
-/* These are termcap/terminfo routines that assume SLtt_initialize has
- * been called.
- */
-extern char *SLtt_tgetstr (char *);
-extern int SLtt_tgetnum (char *);
-extern int SLtt_tgetflag (char *);
-
-/* The following are terminfo-only routines -- these prototypes will change
- * in V2.x.
- */
-extern char *SLtt_tigetent (char *);
-extern char *SLtt_tigetstr (char *, char **);
-extern int SLtt_tigetnum (char *, char **);
-# endif
-#endif
-
-extern SLtt_Char_Type SLtt_get_color_object (int);
-extern void SLtt_set_color_object (int, SLtt_Char_Type);
-extern void SLtt_set_color (int, char *, char *, char *);
-extern void SLtt_set_mono (int, char *, SLtt_Char_Type);
-extern void SLtt_add_color_attribute (int, SLtt_Char_Type);
-extern void SLtt_set_color_fgbg (int, SLtt_Char_Type, SLtt_Char_Type);
-
-/*}}}*/
-
-/*{{{ SLang Preprocessor Interface */
-
-typedef struct
-{
- int this_level;
- int exec_level;
- int prev_exec_level;
- char preprocess_char;
- char comment_char;
- unsigned char flags;
-#define SLPREP_BLANK_LINES_OK 1
-#define SLPREP_COMMENT_LINES_OK 2
-}
-SLPreprocess_Type;
-
-extern int SLprep_open_prep (SLPreprocess_Type *);
-extern void SLprep_close_prep (SLPreprocess_Type *);
-extern int SLprep_line_ok (char *, SLPreprocess_Type *);
- extern int SLdefine_for_ifdef (char *);
- /* Adds a string to the SLang #ifdef preparsing defines. SLang already
- defines MSDOS, UNIX, and VMS on the appropriate system. */
-extern int (*SLprep_exists_hook) (char *, char);
-
-/*}}}*/
-
-/*{{{ SLsmg Screen Management Functions */
-
-extern void SLsmg_fill_region (int, int, unsigned int, unsigned int, unsigned char);
-extern void SLsmg_set_char_set (int);
-#ifndef IBMPC_SYSTEM
-extern int SLsmg_Scroll_Hash_Border;
-#endif
-extern int SLsmg_suspend_smg (void);
-extern int SLsmg_resume_smg (void);
-extern void SLsmg_erase_eol (void);
-extern void SLsmg_gotorc (int, int);
-extern void SLsmg_erase_eos (void);
-extern void SLsmg_reverse_video (void);
-extern void SLsmg_set_color (int);
-extern void SLsmg_normal_video (void);
-extern void SLsmg_printf (char *, ...);
-extern void SLsmg_vprintf (char *, va_list);
-extern void SLsmg_write_string (char *);
-extern void SLsmg_write_nstring (char *, unsigned int);
-extern void SLsmg_write_char (char);
-extern void SLsmg_write_nchars (char *, unsigned int);
-extern void SLsmg_write_wrapped_string (char *, int, int, unsigned int, unsigned int, int);
-extern void SLsmg_cls (void);
-extern void SLsmg_refresh (void);
-extern void SLsmg_touch_lines (int, unsigned int);
-extern void SLsmg_touch_screen (void);
-extern int SLsmg_init_smg (void);
-extern int SLsmg_reinit_smg (void);
-extern void SLsmg_reset_smg (void);
-extern SLsmg_Char_Type SLsmg_char_at(void);
-extern void SLsmg_set_screen_start (int *, int *);
-extern void SLsmg_draw_hline (unsigned int);
-extern void SLsmg_draw_vline (int);
-extern void SLsmg_draw_object (int, int, unsigned char);
-extern void SLsmg_draw_box (int, int, unsigned int, unsigned int);
-extern int SLsmg_get_column(void);
-extern int SLsmg_get_row(void);
-extern void SLsmg_forward (int);
-extern void SLsmg_write_color_chars (SLsmg_Char_Type *, unsigned int);
-extern unsigned int SLsmg_read_raw (SLsmg_Char_Type *, unsigned int);
-extern unsigned int SLsmg_write_raw (SLsmg_Char_Type *, unsigned int);
-extern void SLsmg_set_color_in_region (int, int, int, unsigned int, unsigned int);
-extern int SLsmg_Display_Eight_Bit;
-extern int SLsmg_Tab_Width;
-
-#define SLSMG_NEWLINE_IGNORED 0 /* default */
-#define SLSMG_NEWLINE_MOVES 1 /* moves to next line, column 0 */
-#define SLSMG_NEWLINE_SCROLLS 2 /* moves but scrolls at bottom of screen */
-#define SLSMG_NEWLINE_PRINTABLE 3 /* prints as ^J */
-extern int SLsmg_Newline_Behavior;
-
-extern int SLsmg_Backspace_Moves;
-
-#ifdef IBMPC_SYSTEM
-# define SLSMG_HLINE_CHAR 0xC4
-# define SLSMG_VLINE_CHAR 0xB3
-# define SLSMG_ULCORN_CHAR 0xDA
-# define SLSMG_URCORN_CHAR 0xBF
-# define SLSMG_LLCORN_CHAR 0xC0
-# define SLSMG_LRCORN_CHAR 0xD9
-# define SLSMG_RTEE_CHAR 0xB4
-# define SLSMG_LTEE_CHAR 0xC3
-# define SLSMG_UTEE_CHAR 0xC2
-# define SLSMG_DTEE_CHAR 0xC1
-# define SLSMG_PLUS_CHAR 0xC5
-/* There are several to choose from: 0xB0, 0xB1, and 0xB2 */
-# define SLSMG_CKBRD_CHAR 0xB0
-# define SLSMG_DIAMOND_CHAR 0x04
-# define SLSMG_DEGREE_CHAR 0xF8
-# define SLSMG_PLMINUS_CHAR 0xF1
-# define SLSMG_BULLET_CHAR 0xF9
-# define SLSMG_LARROW_CHAR 0x1B
-# define SLSMG_RARROW_CHAR 0x1A
-# define SLSMG_DARROW_CHAR 0x19
-# define SLSMG_UARROW_CHAR 0x18
-# define SLSMG_BOARD_CHAR 0xB2
-# define SLSMG_BLOCK_CHAR 0xDB
-#else
-# if defined(AMIGA)
-# define SLSMG_HLINE_CHAR '-'
-# define SLSMG_VLINE_CHAR '|'
-# define SLSMG_ULCORN_CHAR '+'
-# define SLSMG_URCORN_CHAR '+'
-# define SLSMG_LLCORN_CHAR '+'
-# define SLSMG_LRCORN_CHAR '+'
-# define SLSMG_CKBRD_CHAR '#'
-# define SLSMG_RTEE_CHAR '+'
-# define SLSMG_LTEE_CHAR '+'
-# define SLSMG_UTEE_CHAR '+'
-# define SLSMG_DTEE_CHAR '+'
-# define SLSMG_PLUS_CHAR '+'
-# define SLSMG_DIAMOND_CHAR '+'
-# define SLSMG_DEGREE_CHAR '\\'
-# define SLSMG_PLMINUS_CHAR '#'
-# define SLSMG_BULLET_CHAR 'o'
-# define SLSMG_LARROW_CHAR '<'
-# define SLSMG_RARROW_CHAR '>'
-# define SLSMG_DARROW_CHAR 'v'
-# define SLSMG_UARROW_CHAR '^'
-# define SLSMG_BOARD_CHAR '#'
-# define SLSMG_BLOCK_CHAR '#'
-# else
-# define SLSMG_HLINE_CHAR 'q'
-# define SLSMG_VLINE_CHAR 'x'
-# define SLSMG_ULCORN_CHAR 'l'
-# define SLSMG_URCORN_CHAR 'k'
-# define SLSMG_LLCORN_CHAR 'm'
-# define SLSMG_LRCORN_CHAR 'j'
-# define SLSMG_CKBRD_CHAR 'a'
-# define SLSMG_RTEE_CHAR 'u'
-# define SLSMG_LTEE_CHAR 't'
-# define SLSMG_UTEE_CHAR 'w'
-# define SLSMG_DTEE_CHAR 'v'
-# define SLSMG_PLUS_CHAR 'n'
-# define SLSMG_DIAMOND_CHAR '`'
-# define SLSMG_DEGREE_CHAR 'f'
-# define SLSMG_PLMINUS_CHAR 'g'
-# define SLSMG_BULLET_CHAR '~'
-# define SLSMG_LARROW_CHAR ','
-# define SLSMG_RARROW_CHAR '+'
-# define SLSMG_DARROW_CHAR '.'
-# define SLSMG_UARROW_CHAR '-'
-# define SLSMG_BOARD_CHAR 'h'
-# define SLSMG_BLOCK_CHAR '0'
-# endif /* AMIGA */
-#endif /* IBMPC_SYSTEM */
-
-#ifndef IBMPC_SYSTEM
-# define SLSMG_COLOR_BLACK 0x000000
-# define SLSMG_COLOR_RED 0x000001
-# define SLSMG_COLOR_GREEN 0x000002
-# define SLSMG_COLOR_BROWN 0x000003
-# define SLSMG_COLOR_BLUE 0x000004
-# define SLSMG_COLOR_MAGENTA 0x000005
-# define SLSMG_COLOR_CYAN 0x000006
-# define SLSMG_COLOR_LGRAY 0x000007
-# define SLSMG_COLOR_GRAY 0x000008
-# define SLSMG_COLOR_BRIGHT_RED 0x000009
-# define SLSMG_COLOR_BRIGHT_GREEN 0x00000A
-# define SLSMG_COLOR_BRIGHT_BROWN 0x00000B
-# define SLSMG_COLOR_BRIGHT_BLUE 0x00000C
-# define SLSMG_COLOR_BRIGHT_CYAN 0x00000D
-# define SLSMG_COLOR_BRIGHT_MAGENTA 0x00000E
-# define SLSMG_COLOR_BRIGHT_WHITE 0x00000F
-#endif
-
-typedef struct
-{
- void (*tt_normal_video)(void);
- void (*tt_set_scroll_region)(int, int);
- void (*tt_goto_rc)(int, int);
- void (*tt_reverse_index)(int);
- void (*tt_reset_scroll_region)(void);
- void (*tt_delete_nlines)(int);
- void (*tt_cls) (void);
- void (*tt_del_eol) (void);
- void (*tt_smart_puts) (SLsmg_Char_Type *, SLsmg_Char_Type *, int, int);
- int (*tt_flush_output) (void);
- int (*tt_reset_video) (void);
- int (*tt_init_video) (void);
-
- int *tt_screen_rows;
- int *tt_screen_cols;
-
- int *tt_term_cannot_scroll;
- int *tt_has_alt_charset;
- int *tt_use_blink_for_acs;
- char **tt_graphic_char_pairs;
-
- long reserved[4];
-}
-SLsmg_Term_Type;
-extern void SLsmg_set_terminal_info (SLsmg_Term_Type *);
-
-/*}}}*/
-
-/*{{{ SLang Keypad Interface */
-
-#define SL_KEY_ERR 0xFFFF
-
-#define SL_KEY_UP 0x101
-#define SL_KEY_DOWN 0x102
-#define SL_KEY_LEFT 0x103
-#define SL_KEY_RIGHT 0x104
-#define SL_KEY_PPAGE 0x105
-#define SL_KEY_NPAGE 0x106
-#define SL_KEY_HOME 0x107
-#define SL_KEY_END 0x108
-#define SL_KEY_A1 0x109
-#define SL_KEY_A3 0x10A
-#define SL_KEY_B2 0x10B
-#define SL_KEY_C1 0x10C
-#define SL_KEY_C3 0x10D
-#define SL_KEY_REDO 0x10E
-#define SL_KEY_UNDO 0x10F
-#define SL_KEY_BACKSPACE 0x110
-#define SL_KEY_ENTER 0x111
-#define SL_KEY_IC 0x112
-#define SL_KEY_DELETE 0x113
-
-#define SL_KEY_F0 0x200
-#define SL_KEY_F(X) (SL_KEY_F0 + X)
-
-/* I do not intend to use keysymps > 0x1000. Applications can use those. */
-/* Returns 0 upon success or -1 upon error. */
-extern int SLkp_define_keysym (char *, unsigned int);
-
-/* This function must be called AFTER SLtt_get_terminfo and not before. */
-extern int SLkp_init (void);
-
-/* This function uses SLang_getkey and assumes that what ever initialization
- * is required for SLang_getkey has been performed.
- */
-extern int SLkp_getkey (void);
-
-/*}}}*/
-
-/*{{{ SLang Scroll Interface */
-
-typedef struct _SLscroll_Type
-{
- struct _SLscroll_Type *next;
- struct _SLscroll_Type *prev;
- unsigned int flags;
-}
-SLscroll_Type;
-
-typedef struct
-{
- unsigned int flags;
- SLscroll_Type *top_window_line; /* list element at top of window */
- SLscroll_Type *bot_window_line; /* list element at bottom of window */
- SLscroll_Type *current_line; /* current list element */
- SLscroll_Type *lines; /* first list element */
- unsigned int nrows; /* number of rows in window */
- unsigned int hidden_mask; /* applied to flags in SLscroll_Type */
- unsigned int line_num; /* current line number (visible) */
- unsigned int num_lines; /* total number of lines (visible) */
- unsigned int window_row; /* row of current_line in window */
- unsigned int border; /* number of rows that form scroll border */
- int cannot_scroll; /* should window scroll or recenter */
-}
-SLscroll_Window_Type;
-
-extern int SLscroll_find_top (SLscroll_Window_Type *);
-extern int SLscroll_find_line_num (SLscroll_Window_Type *);
-extern unsigned int SLscroll_next_n (SLscroll_Window_Type *, unsigned int);
-extern unsigned int SLscroll_prev_n (SLscroll_Window_Type *, unsigned int);
-extern int SLscroll_pageup (SLscroll_Window_Type *);
-extern int SLscroll_pagedown (SLscroll_Window_Type *);
-
-/*}}}*/
-
-/*{{{ Signal Routines */
-
-typedef void SLSig_Fun_Type (int);
-extern SLSig_Fun_Type *SLsignal (int, SLSig_Fun_Type *);
-extern SLSig_Fun_Type *SLsignal_intr (int, SLSig_Fun_Type *);
-extern int SLsig_block_signals (void);
-extern int SLsig_unblock_signals (void);
-extern int SLsystem (char *);
-
-extern char *SLerrno_strerror (int);
-extern int SLerrno_set_errno (int);
-
-/*}}}*/
-
-/*{{{ Interpreter Macro Definitions */
-
-/* The definitions here are for objects that may be on the run-time stack.
- * They are actually sub_types of literal and data main_types. The actual
- * numbers are historical.
- */
-#define SLANG_UNDEFINED_TYPE 0x00 /* MUST be 0 */
-#define SLANG_VOID_TYPE 0x01 /* also matches ANY type */
-#define SLANG_INT_TYPE 0x02
-#define SLANG_DOUBLE_TYPE 0x03
-#define SLANG_CHAR_TYPE 0x04
-#define SLANG_INTP_TYPE 0x05
-/* An object of SLANG_INTP_TYPE should never really occur on the stack. Rather,
- * the integer to which it refers will be there instead. It is defined here
- * because it is a valid type for MAKE_VARIABLE.
- */
-#define SLANG_REF_TYPE 0x06
-/* SLANG_REF_TYPE refers to an object on the stack that is a pointer (reference)
- * to some other object.
- */
-#define SLANG_COMPLEX_TYPE 0x07
-#define SLANG_NULL_TYPE 0x08
-#define SLANG_UCHAR_TYPE 0x09
-#define SLANG_SHORT_TYPE 0x0A
-#define SLANG_USHORT_TYPE 0x0B
-#define SLANG_UINT_TYPE 0x0C
-#define SLANG_LONG_TYPE 0x0D
-#define SLANG_ULONG_TYPE 0x0E
-#define SLANG_STRING_TYPE 0x0F
-#define SLANG_FLOAT_TYPE 0x10
-#define SLANG_STRUCT_TYPE 0x11
-#define SLANG_ISTRUCT_TYPE 0x12
-#define SLANG_ARRAY_TYPE 0x20
-#define SLANG_DATATYPE_TYPE 0x21
-#define SLANG_FILE_PTR_TYPE 0x22
-#define SLANG_ASSOC_TYPE 0x23
-#define SLANG_ANY_TYPE 0x24
-#define SLANG_BSTRING_TYPE 0x25
-#define SLANG_FILE_FD_TYPE 0x26
-
-/* Compatibility */
-#ifdef FLOAT_TYPE
-# undef FLOAT_TYPE
-#endif
-#define VOID_TYPE SLANG_VOID_TYPE
-#define INT_TYPE SLANG_INT_TYPE
-#define INTP_TYPE SLANG_INTP_TYPE
-#define FLOAT_TYPE SLANG_DOUBLE_TYPE
-#define ARRAY_TYPE SLANG_ARRAY_TYPE
-#define CHAR_TYPE SLANG_CHAR_TYPE
-#define STRING_TYPE SLANG_STRING_TYPE
-
-/* I am reserving values greater than or equal to 128 for user applications.
- * The first 127 are reserved for S-Lang.
- */
-
-/* Binary and Unary Subtypes */
-/* Since the application can define new types and can overload the binary
- * and unary operators, these definitions must be present in this file.
- * The current implementation assumes both unary and binary are distinct.
- */
-#define SLANG_PLUS 0x01
-#define SLANG_MINUS 0x02
-#define SLANG_TIMES 0x03
-#define SLANG_DIVIDE 0x04
-#define SLANG_EQ 0x05
-#define SLANG_NE 0x06
-#define SLANG_GT 0x07
-#define SLANG_GE 0x08
-#define SLANG_LT 0x09
-#define SLANG_LE 0x0A
-#define SLANG_POW 0x0B
-#define SLANG_OR 0x0C
-#define SLANG_AND 0x0D
-#define SLANG_BAND 0x0E
-#define SLANG_BOR 0x0F
-#define SLANG_BXOR 0x10
-#define SLANG_SHL 0x11
-#define SLANG_SHR 0x12
-#define SLANG_MOD 0x13
-
-/* UNARY subtypes (may be overloaded) */
-#define SLANG_PLUSPLUS 0x20
-#define SLANG_MINUSMINUS 0x21
-#define SLANG_ABS 0x22
-#define SLANG_SIGN 0x23
-#define SLANG_SQR 0x24
-#define SLANG_MUL2 0x25
-#define SLANG_CHS 0x26
-#define SLANG_NOT 0x27
-#define SLANG_BNOT 0x28
-
-extern char *SLang_Error_Message;
-
-int SLadd_intrinsic_variable (char *, VOID_STAR, unsigned char, int);
-int SLadd_intrinsic_function (char *, FVOID_STAR, unsigned char, unsigned int,...);
-
-int SLns_add_intrinsic_variable (SLang_NameSpace_Type *, char *, VOID_STAR, unsigned char, int);
-int SLns_add_intrinsic_function (SLang_NameSpace_Type *, char *, FVOID_STAR, unsigned char, unsigned int,...);
-
-extern void SLadd_at_handler (long *, char *);
-
-#define MAKE_INTRINSIC_N(n,f,out,in,a1,a2,a3,a4,a5,a6,a7) \
- {(n), NULL, SLANG_INTRINSIC, (FVOID_STAR) (f), \
- {a1,a2,a3,a4,a5,a6,a7}, (in), (out)}
-
-#define MAKE_INTRINSIC_7(n,f,out,a1,a2,a3,a4,a5,a6,a7) \
- MAKE_INTRINSIC_N(n,f,out,7,a1,a2,a3,a4,a5,a6,a7)
-#define MAKE_INTRINSIC_6(n,f,out,a1,a2,a3,a4,a5,a6) \
- MAKE_INTRINSIC_N(n,f,out,6,a1,a2,a3,a4,a5,a6,0)
-#define MAKE_INTRINSIC_5(n,f,out,a1,a2,a3,a4,a5) \
- MAKE_INTRINSIC_N(n,f,out,5,a1,a2,a3,a4,a5,0,0)
-#define MAKE_INTRINSIC_4(n,f,out,a1,a2,a3,a4) \
- MAKE_INTRINSIC_N(n,f,out,4,a1,a2,a3,a4,0,0,0)
-#define MAKE_INTRINSIC_3(n,f,out,a1,a2,a3) \
- MAKE_INTRINSIC_N(n,f,out,3,a1,a2,a3,0,0,0,0)
-#define MAKE_INTRINSIC_2(n,f,out,a1,a2) \
- MAKE_INTRINSIC_N(n,f,out,2,a1,a2,0,0,0,0,0)
-#define MAKE_INTRINSIC_1(n,f,out,a1) \
- MAKE_INTRINSIC_N(n,f,out,1,a1,0,0,0,0,0,0)
-#define MAKE_INTRINSIC_0(n,f,out) \
- MAKE_INTRINSIC_N(n,f,out,0,0,0,0,0,0,0,0)
-
-#define MAKE_INTRINSIC_S(n,f,r) \
- MAKE_INTRINSIC_1(n,f,r,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_I(n,f,r) \
- MAKE_INTRINSIC_1(n,f,r,SLANG_INT_TYPE)
-
-#define MAKE_INTRINSIC_SS(n,f,r) \
- MAKE_INTRINSIC_2(n,f,r,SLANG_STRING_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_SI(n,f,r) \
- MAKE_INTRINSIC_2(n,f,r,SLANG_STRING_TYPE,SLANG_INT_TYPE)
-#define MAKE_INTRINSIC_IS(n,f,r) \
- MAKE_INTRINSIC_2(n,f,r,SLANG_INT_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_II(n,f,r) \
- MAKE_INTRINSIC_2(n,f,r,SLANG_INT_TYPE,SLANG_INT_TYPE)
-
-#define MAKE_INTRINSIC_SSS(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_STRING_TYPE,SLANG_STRING_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_SSI(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_STRING_TYPE,SLANG_STRING_TYPE,SLANG_INT_TYPE)
-#define MAKE_INTRINSIC_SIS(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_STRING_TYPE,SLANG_INT_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_SII(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_STRING_TYPE,SLANG_INT_TYPE,SLANG_INT_TYPE)
-#define MAKE_INTRINSIC_ISS(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_INT_TYPE,SLANG_STRING_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_ISI(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_INT_TYPE,SLANG_STRING_TYPE,SLANG_INT_TYPE)
-#define MAKE_INTRINSIC_IIS(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_INT_TYPE,SLANG_INT_TYPE,SLANG_STRING_TYPE)
-#define MAKE_INTRINSIC_III(n,f,r) \
- MAKE_INTRINSIC_3(n,f,r,SLANG_INT_TYPE,SLANG_INT_TYPE,SLANG_INT_TYPE)
-
-#define MAKE_INTRINSIC(n, f, out, in) \
- MAKE_INTRINSIC_N(n,f,out,in,0,0,0,0,0,0,0)
-
-#define MAKE_VARIABLE(n, v, t, r) \
- {n, NULL, SLANG_IVARIABLE + (r), (VOID_STAR)(v), (t)}
-
-#define MAKE_APP_UNARY(n,op) \
- {(n), NULL, SLANG_APP_UNARY, (op)}
-
-#define MAKE_MATH_UNARY(n,op) \
- {(n), NULL, SLANG_MATH_UNARY, (op)}
-
-#define MAKE_ICONSTANT(n,val) \
- {(n),NULL, SLANG_ICONSTANT, (val)}
-
-#define MAKE_DCONSTANT(n,val) \
- {(n),NULL, SLANG_DCONSTANT, (val)}
-
-#ifndef offsetof
-# define offsetof(T,F) ((unsigned int)((char *)&((T *)0L)->F - (char *)0L))
-#endif
-#define MAKE_ISTRUCT_FIELD(s,f,n,t,r) {(n), offsetof(s,f), (t), (r)}
-
-#define SLANG_END_TABLE {NULL}
-#define SLANG_END_INTRIN_FUN_TABLE MAKE_INTRINSIC_0(NULL,NULL,0)
-#define SLANG_END_DCONST_TABLE MAKE_DCONSTANT(NULL,0)
-#define SLANG_END_MATH_UNARY_TABLE MAKE_MATH_UNARY(NULL,0)
-#define SLANG_END_INTRIN_VAR_TABLE MAKE_VARIABLE(NULL,NULL,0,0)
-#define SLANG_END_ICONST_TABLE MAKE_ICONSTANT(NULL,0)
-#define SLANG_END_ISTRUCT_TABLE {NULL, 0, 0, 0}
-
-
-
-/*}}}*/
-
-/*{{{ Upper/Lowercase Functions */
-
-extern void SLang_define_case(int *, int *);
-extern void SLang_init_case_tables (void);
-
-extern unsigned char _SLChg_UCase_Lut[256];
-extern unsigned char _SLChg_LCase_Lut[256];
-#define UPPER_CASE(x) (_SLChg_UCase_Lut[(unsigned char) (x)])
-#define LOWER_CASE(x) (_SLChg_LCase_Lut[(unsigned char) (x)])
-#define CHANGE_CASE(x) (((x) == _SLChg_LCase_Lut[(unsigned char) (x)]) ?\
- _SLChg_UCase_Lut[(unsigned char) (x)] : _SLChg_LCase_Lut[(unsigned char) (x)])
-
-/*}}}*/
-
-/*{{{ Regular Expression Interface */
-
-typedef struct
-{
- /* These must be set by calling routine. */
- unsigned char *pat; /* regular expression pattern */
- unsigned char *buf; /* buffer for compiled regexp */
- unsigned int buf_len; /* length of buffer */
- int case_sensitive; /* 1 if match is case sensitive */
-
- /* The rest are set by SLang_regexp_compile */
-
- int must_match; /* 1 if line must contain substring */
- int must_match_bol; /* true if it must match beginning of line */
- unsigned char must_match_str[16]; /* 15 char null term substring */
- int osearch; /* 1 if ordinary search suffices */
- unsigned int min_length; /* minimum length the match must be */
- int beg_matches[10]; /* offset of start of \( */
- unsigned int end_matches[10]; /* length of nth submatch
- * Note that the entire match corresponds
- * to \0
- */
- int offset; /* offset to be added to beg_matches */
- int reserved[10];
-} SLRegexp_Type;
-
-extern unsigned char *SLang_regexp_match(unsigned char *,
- unsigned int,
- SLRegexp_Type *);
-
-/* Returns 0 upon success. If failure, the offset into the
- * pattern is returned (start = 1).
- */
-extern int SLang_regexp_compile (SLRegexp_Type *);
-extern char *SLregexp_quote_string (char *, char *, unsigned int);
-
-/*}}}*/
-
-/*{{{ SLang Command Interface */
-
-struct _SLcmd_Cmd_Type; /* Pre-declaration is needed below */
-typedef struct
-{
- struct _SLcmd_Cmd_Type *table;
- int argc;
- /* Version 2.0 needs to use a union!! */
- char **string_args;
- int *int_args;
- double *double_args;
- unsigned char *arg_type;
- unsigned long reserved[4];
-} SLcmd_Cmd_Table_Type;
-
-typedef struct _SLcmd_Cmd_Type
-{
- int (*cmdfun)(int, SLcmd_Cmd_Table_Type *);
- char *cmd;
- char *arg_type;
-} SLcmd_Cmd_Type;
-
-extern int SLcmd_execute_string (char *, SLcmd_Cmd_Table_Type *);
-
-/*}}}*/
-
-/*{{{ SLang Search Interface */
-
-typedef struct
-{
- int cs; /* case sensitive */
- unsigned char key[256];
- int ind[256];
- int key_len;
- int dir;
-} SLsearch_Type;
-
-extern int SLsearch_init (char *, int, int, SLsearch_Type *);
-/* This routine must first be called before any search can take place.
- * The second parameter specifies the direction of the search: greater than
- * zero for a forwrd search and less than zero for a backward search. The
- * third parameter specifies whether the search is case sensitive or not.
- * The last parameter is a pointer to a structure that is filled by this
- * function and it is this structure that must be passed to SLsearch.
- */
-
-extern unsigned char *SLsearch (unsigned char *, unsigned char *, SLsearch_Type *);
-/* To use this routine, you must first call 'SLsearch_init'. Then the first
- * two parameters p1 and p2 serve to define the region over which the search
- * is to take place. The third parameter is the structure that was previously
- * initialized by SLsearch_init.
- *
- * The routine returns a pointer to the match if found otherwise it returns
- * NULL.
- */
-
-/*}}}*/
-
-/*{{{ SLang Pathname Interface */
-
-/* These function return pointers to the original space */
-extern char *SLpath_basename (char *);
-extern char *SLpath_extname (char *);
-extern int SLpath_is_absolute_path (char *);
-
-/* These return malloced strings--- NOT slstrings */
-extern char *SLpath_dircat (char *, char *);
-extern char *SLpath_find_file_in_path (char *, char *);
-extern char *SLpath_dirname (char *);
-extern int SLpath_file_exists (char *);
-extern char *SLpath_pathname_sans_extname (char *);
-
-/*}}}*/
-
-extern int SLang_set_module_load_path (char *);
-
-#define SLANG_MODULE(name) \
- extern int init_##name##_module_ns (char *); \
- extern void deinit_##name##_module (void)
-
-#if 0
-{
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _DAVIS_SLANG_H_ */
diff --git a/mdk-stage1/slang/slarith.c b/mdk-stage1/slang/slarith.c
deleted file mode 100644
index 07ad68687..000000000
--- a/mdk-stage1/slang/slarith.c
+++ /dev/null
@@ -1,1656 +0,0 @@
-
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include <math.h>
-
-#ifdef HAVE_LOCALE_H
-# include <locale.h>
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-/*
- * This file defines binary and unary operations on all integer types.
- * Supported types include:
- *
- * SLANG_CHAR_TYPE (char)
- * SLANG_SHORT_TYPE (short)
- * SLANG_INT_TYPE (int)
- * SLANG_LONG_TYPE (long)
- * SLANG_FLOAT_TYPE (float)
- * SLANG_DOUBLE_TYPE (double)
- *
- * as well as unsigned types. The result-type of an arithmentic operation
- * will depend upon the data types involved. I am going to distinguish
- * between the boolean operations such as `and' and `or' from the arithmetic
- * operations such as `plus'. Since the result of a boolean operation is
- * either 1 or 0, a boolean result will be represented by SLANG_CHAR_TYPE.
- * Ordinarily I would use an integer but for arrays it makes more sense to
- * use a character data type.
- *
- * So, the following will be assumed (`+' is any arithmetic operator)
- *
- * char + char = int
- * char|short + short = int
- * char|short|int + int = int
- * char|short|int|long + long = long
- * char|short|int|long|float + float = float
- * char|short|int|long|float|double + double = double
- *
- * In the actual implementation, a brute force approach is avoided. Such
- * an approach would mean defining different functions for all possible
- * combinations of types. Including the unsigned types, and not including
- * the complex number type, there are 10 arithmetic types and 10*10=100
- * different combinations of types. Clearly this would be too much.
- *
- * One approach would be to define binary functions only between operands of
- * the same type and then convert types as appropriate. This would require
- * just 6 such functions (int, uint, long, ulong, float, double).
- * However, many conversion functions are going to be required, particularly
- * since we are going to allow typecasting from one arithmetic to another.
- * Since the bit pattern of signed and unsigned types are the same, and only
- * the interpretation differs, there will be no functions to convert between
- * signed and unsigned forms of a given type.
- */
-
-#define MAX_ARITHMETIC_TYPES 10
-
-unsigned char _SLarith_Is_Arith_Type [256];
-
-unsigned char _SLarith_Arith_Types[] =
-{
- SLANG_CHAR_TYPE,
- SLANG_UCHAR_TYPE,
- SLANG_SHORT_TYPE,
- SLANG_USHORT_TYPE,
- SLANG_INT_TYPE,
- SLANG_UINT_TYPE,
- SLANG_LONG_TYPE,
- SLANG_ULONG_TYPE,
- SLANG_FLOAT_TYPE,
- SLANG_DOUBLE_TYPE,
- 0
-};
-
-/* Here are a bunch of functions to convert from one type to another. To
- * facilitate the process, a macros will be used.
- */
-
-#define DEFUN_1(f,from_type,to_type) \
-static void f (to_type *y, from_type *x, unsigned int n) \
-{ \
- unsigned int i; \
- for (i = 0; i < n; i++) y[i] = (to_type) x[i]; \
-}
-
-#define DEFUN_2(f,from_type,to_type,copy_fun) \
-static VOID_STAR f (VOID_STAR xp, unsigned int n) \
-{ \
- from_type *x; \
- to_type *y; \
- x = (from_type *) xp; \
- if (NULL == (y = (to_type *) SLmalloc (sizeof (to_type) * n))) return NULL; \
- copy_fun (y, x, n); \
- return (VOID_STAR) y; \
-}
-typedef VOID_STAR (*Convert_Fun_Type)(VOID_STAR, unsigned int);
-
-DEFUN_1(copy_char_to_char,char,char)
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_char_to_short,char,short)
-DEFUN_1(copy_char_to_ushort,char,unsigned short)
-#else
-# define copy_char_to_short copy_char_to_int
-# define copy_char_to_ushort copy_char_to_uint
-#endif
-DEFUN_1(copy_char_to_int,char,int)
-DEFUN_1(copy_char_to_uint,char,unsigned int)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_char_to_long,char,long)
-DEFUN_1(copy_char_to_ulong,char,unsigned long)
-#else
-# define copy_char_to_long copy_char_to_int
-# define copy_char_to_ulong copy_char_to_uint
-#endif
-DEFUN_1(copy_char_to_float,char,float)
-DEFUN_1(copy_char_to_double,char,double)
-
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_uchar_to_short,unsigned char,short)
-DEFUN_1(copy_uchar_to_ushort,unsigned char,unsigned short)
-#else
-# define copy_uchar_to_short copy_uchar_to_int
-# define copy_uchar_to_ushort copy_uchar_to_uint
-#endif
-DEFUN_1(copy_uchar_to_int,unsigned char,int)
-DEFUN_1(copy_uchar_to_uint,unsigned char,unsigned int)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_uchar_to_long,unsigned char,long)
-DEFUN_1(copy_uchar_to_ulong,unsigned char,unsigned long)
-#else
-# define copy_uchar_to_long copy_uchar_to_int
-# define copy_uchar_to_ulong copy_uchar_to_uint
-#endif
-DEFUN_1(copy_uchar_to_float,unsigned char,float)
-DEFUN_1(copy_uchar_to_double,unsigned char,double)
-
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_short_to_char,short,char)
-DEFUN_1(copy_short_to_uchar,short,unsigned char)
-DEFUN_1(copy_short_to_short,short,short)
-DEFUN_1(copy_short_to_int,short,int)
-DEFUN_1(copy_short_to_uint,short,unsigned int)
-DEFUN_1(copy_short_to_long,short,long)
-DEFUN_1(copy_short_to_ulong,short,unsigned long)
-DEFUN_1(copy_short_to_float,short,float)
-DEFUN_1(copy_short_to_double,short,double)
-DEFUN_1(copy_ushort_to_char,unsigned short,char)
-DEFUN_1(copy_ushort_to_uchar,unsigned short,unsigned char)
-DEFUN_1(copy_ushort_to_int,unsigned short,int)
-DEFUN_1(copy_ushort_to_uint,unsigned short,unsigned int)
-DEFUN_1(copy_ushort_to_long,unsigned short,long)
-DEFUN_1(copy_ushort_to_ulong,unsigned short,unsigned long)
-DEFUN_1(copy_ushort_to_float,unsigned short,float)
-DEFUN_1(copy_ushort_to_double,unsigned short,double)
-#else
-# define copy_short_to_char copy_int_to_char
-# define copy_short_to_uchar copy_int_to_uchar
-# define copy_short_to_short copy_int_to_int
-# define copy_short_to_int copy_int_to_int
-# define copy_short_to_uint copy_int_to_int
-# define copy_short_to_long copy_int_to_long
-# define copy_short_to_ulong copy_int_to_ulong
-# define copy_short_to_float copy_int_to_float
-# define copy_short_to_double copy_int_to_double
-# define copy_ushort_to_char copy_uint_to_char
-# define copy_ushort_to_uchar copy_uint_to_uchar
-# define copy_ushort_to_int copy_int_to_int
-# define copy_ushort_to_uint copy_int_to_int
-# define copy_ushort_to_long copy_uint_to_long
-# define copy_ushort_to_ulong copy_uint_to_ulong
-# define copy_ushort_to_float copy_uint_to_float
-# define copy_ushort_to_double copy_uint_to_double
-#endif
-
-DEFUN_1(copy_int_to_char,int,char)
-DEFUN_1(copy_int_to_uchar,int,unsigned char)
-DEFUN_1(copy_uint_to_char,unsigned int,char)
-DEFUN_1(copy_uint_to_uchar,unsigned int,unsigned char)
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_int_to_short,int,short)
-DEFUN_1(copy_int_to_ushort,int,unsigned short)
-DEFUN_1(copy_uint_to_short,unsigned int,short)
-DEFUN_1(copy_uint_to_ushort,unsigned int,unsigned short)
-#else
-# define copy_int_to_short copy_int_to_int
-# define copy_int_to_ushort copy_int_to_int
-# define copy_uint_to_short copy_int_to_int
-# define copy_uint_to_ushort copy_int_to_int
-#endif
-DEFUN_1(copy_int_to_int,int,int)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_int_to_long,int,long)
-DEFUN_1(copy_int_to_ulong,int,unsigned long)
-DEFUN_1(copy_uint_to_long,unsigned int,long)
-DEFUN_1(copy_uint_to_ulong,unsigned int,unsigned long)
-#else
-# define copy_int_to_long copy_int_to_int
-# define copy_int_to_ulong copy_int_to_int
-# define copy_uint_to_long copy_int_to_int
-# define copy_uint_to_ulong copy_int_to_int
-#endif
-DEFUN_1(copy_int_to_float,int,float)
-DEFUN_1(copy_int_to_double,int,double)
-DEFUN_1(copy_uint_to_float,unsigned int,float)
-DEFUN_1(copy_uint_to_double,unsigned int,double)
-
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_long_to_char,long,char)
-DEFUN_1(copy_long_to_uchar,long,unsigned char)
-DEFUN_1(copy_long_to_short,long,short)
-DEFUN_1(copy_long_to_ushort,long,unsigned short)
-DEFUN_1(copy_long_to_int,long,int)
-DEFUN_1(copy_long_to_uint,long,unsigned int)
-DEFUN_1(copy_long_to_long,long,long)
-DEFUN_1(copy_long_to_float,long,float)
-DEFUN_1(copy_long_to_double,long,double)
-DEFUN_1(copy_ulong_to_char,unsigned long,char)
-DEFUN_1(copy_ulong_to_uchar,unsigned long,unsigned char)
-DEFUN_1(copy_ulong_to_short,unsigned long,short)
-DEFUN_1(copy_ulong_to_ushort,unsigned long,unsigned short)
-DEFUN_1(copy_ulong_to_int,unsigned long,int)
-DEFUN_1(copy_ulong_to_uint,unsigned long,unsigned int)
-DEFUN_1(copy_ulong_to_float,unsigned long,float)
-DEFUN_1(copy_ulong_to_double,unsigned long,double)
-#else
-#define copy_long_to_char copy_int_to_char
-#define copy_long_to_uchar copy_int_to_uchar
-#define copy_long_to_short copy_int_to_short
-#define copy_long_to_ushort copy_int_to_ushort
-#define copy_long_to_int copy_int_to_int
-#define copy_long_to_uint copy_int_to_int
-#define copy_long_to_long copy_int_to_int
-#define copy_long_to_float copy_int_to_float
-#define copy_long_to_double copy_int_to_double
-#define copy_ulong_to_char copy_uint_to_char
-#define copy_ulong_to_uchar copy_uint_to_uchar
-#define copy_ulong_to_short copy_uint_to_short
-#define copy_ulong_to_ushort copy_uint_to_ushort
-#define copy_ulong_to_int copy_int_to_int
-#define copy_ulong_to_uint copy_int_to_int
-#define copy_ulong_to_float copy_uint_to_float
-#define copy_ulong_to_double copy_uint_to_double
-#endif
-
-DEFUN_1(copy_float_to_char,float,char)
-DEFUN_1(copy_float_to_uchar,float,unsigned char)
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_float_to_short,float,short)
-DEFUN_1(copy_float_to_ushort,float,unsigned short)
-#else
-# define copy_float_to_short copy_float_to_int
-# define copy_float_to_ushort copy_float_to_uint
-#endif
-DEFUN_1(copy_float_to_int,float,int)
-DEFUN_1(copy_float_to_uint,float,unsigned int)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_float_to_long,float,long)
-DEFUN_1(copy_float_to_ulong,float,unsigned long)
-#else
-# define copy_float_to_long copy_float_to_int
-# define copy_float_to_ulong copy_float_to_uint
-#endif
-DEFUN_1(copy_float_to_float,float,float)
-DEFUN_1(copy_float_to_double,float,double)
-
-DEFUN_1(copy_double_to_char,double,char)
-DEFUN_1(copy_double_to_uchar,double,unsigned char)
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_1(copy_double_to_short,double,short)
-DEFUN_1(copy_double_to_ushort,double,unsigned short)
-#else
-# define copy_double_to_short copy_double_to_int
-# define copy_double_to_ushort copy_double_to_uint
-#endif
-DEFUN_1(copy_double_to_int,double,int)
-DEFUN_1(copy_double_to_uint,double,unsigned int)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_1(copy_double_to_long,double,long)
-DEFUN_1(copy_double_to_ulong,double,unsigned long)
-#else
-# define copy_double_to_long copy_double_to_int
-# define copy_double_to_ulong copy_double_to_uint
-#endif
-DEFUN_1(copy_double_to_float,double,float)
-DEFUN_1(copy_double_to_double,double,double)
-
-DEFUN_2(char_to_int,char,int,copy_char_to_int)
-DEFUN_2(char_to_uint,char,unsigned int,copy_char_to_uint)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_2(char_to_long,char,long,copy_char_to_long)
-DEFUN_2(char_to_ulong,char,unsigned long,copy_char_to_ulong)
-#else
-# define char_to_long char_to_int
-# define char_to_ulong char_to_uint
-#endif
-DEFUN_2(char_to_float,char,float,copy_char_to_float)
-DEFUN_2(char_to_double,char,double,copy_char_to_double)
-
-DEFUN_2(uchar_to_int,unsigned char,int,copy_uchar_to_int)
-DEFUN_2(uchar_to_uint,unsigned char,unsigned int,copy_uchar_to_uint)
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_2(uchar_to_long,unsigned char,long,copy_uchar_to_long)
-DEFUN_2(uchar_to_ulong,unsigned char,unsigned long,copy_uchar_to_ulong)
-#else
-# define uchar_to_long uchar_to_int
-# define uchar_to_ulong uchar_to_uint
-#endif
-DEFUN_2(uchar_to_float,unsigned char,float,copy_uchar_to_float)
-DEFUN_2(uchar_to_double,unsigned char,double,copy_uchar_to_double)
-
-#if SIZEOF_INT != SIZEOF_SHORT
-DEFUN_2(short_to_int,short,int,copy_short_to_int)
-DEFUN_2(short_to_uint,short,unsigned int,copy_short_to_uint)
-DEFUN_2(short_to_long,short,long,copy_short_to_long)
-DEFUN_2(short_to_ulong,short,unsigned long,copy_short_to_ulong)
-DEFUN_2(short_to_float,short,float,copy_short_to_float)
-DEFUN_2(short_to_double,short,double,copy_short_to_double)
-DEFUN_2(ushort_to_int,unsigned short,int,copy_ushort_to_int)
-DEFUN_2(ushort_to_uint,unsigned short,unsigned int,copy_ushort_to_uint)
-DEFUN_2(ushort_to_long,unsigned short,long,copy_ushort_to_long)
-DEFUN_2(ushort_to_ulong,unsigned short,unsigned long,copy_ushort_to_ulong)
-DEFUN_2(ushort_to_float,unsigned short,float,copy_ushort_to_float)
-DEFUN_2(ushort_to_double,unsigned short,double,copy_ushort_to_double)
-#else
-# define short_to_int NULL
-# define short_to_uint NULL
-# define short_to_long int_to_long
-# define short_to_ulong int_to_ulong
-# define short_to_float int_to_float
-# define short_to_double int_to_double
-# define ushort_to_int NULL
-# define ushort_to_uint NULL
-# define ushort_to_long uint_to_long
-# define ushort_to_ulong uint_to_ulong
-# define ushort_to_float uint_to_float
-# define ushort_to_double uint_to_double
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_2(int_to_long,int,long,copy_int_to_long)
-DEFUN_2(int_to_ulong,int,unsigned long,copy_int_to_ulong)
-#else
-# define int_to_long NULL
-# define int_to_ulong NULL
-#endif
-DEFUN_2(int_to_float,int,float,copy_int_to_float)
-DEFUN_2(int_to_double,int,double,copy_int_to_double)
-
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_2(uint_to_long,unsigned int,long,copy_uint_to_long)
-DEFUN_2(uint_to_ulong,unsigned int,unsigned long,copy_uint_to_ulong)
-#else
-# define uint_to_long NULL
-# define uint_to_ulong NULL
-#endif
-DEFUN_2(uint_to_float,unsigned int,float,copy_uint_to_float)
-DEFUN_2(uint_to_double,unsigned int,double,copy_uint_to_double)
-
-#if SIZEOF_INT != SIZEOF_LONG
-DEFUN_2(long_to_float,long,float,copy_long_to_float)
-DEFUN_2(long_to_double,long,double,copy_long_to_double)
-DEFUN_2(ulong_to_float,unsigned long,float,copy_ulong_to_float)
-DEFUN_2(ulong_to_double,unsigned long,double,copy_ulong_to_double)
-#else
-# define long_to_float int_to_float
-# define long_to_double int_to_double
-# define ulong_to_float uint_to_float
-# define ulong_to_double uint_to_double
-#endif
-
-DEFUN_2(float_to_double,float,double,copy_float_to_double)
-
-#define TO_DOUBLE_FUN(name,type) \
-static double name (VOID_STAR x) { return (double) *(type *) x; }
-TO_DOUBLE_FUN(char_to_one_double,char)
-TO_DOUBLE_FUN(uchar_to_one_double,unsigned char)
-#if SIZEOF_INT != SIZEOF_SHORT
-TO_DOUBLE_FUN(short_to_one_double,short)
-TO_DOUBLE_FUN(ushort_to_one_double,unsigned short)
-#else
-# define short_to_one_double int_to_one_double
-# define ushort_to_one_double uint_to_one_double
-#endif
-TO_DOUBLE_FUN(int_to_one_double,int)
-TO_DOUBLE_FUN(uint_to_one_double,unsigned int)
-#if SIZEOF_INT != SIZEOF_LONG
-TO_DOUBLE_FUN(long_to_one_double,long)
-TO_DOUBLE_FUN(ulong_to_one_double,unsigned long)
-#else
-# define long_to_one_double int_to_one_double
-# define ulong_to_one_double uint_to_one_double
-#endif
-TO_DOUBLE_FUN(float_to_one_double,float)
-TO_DOUBLE_FUN(double_to_one_double,double)
-
-SLang_To_Double_Fun_Type
-SLarith_get_to_double_fun (unsigned char type, unsigned int *sizeof_type)
-{
- unsigned int da;
- SLang_To_Double_Fun_Type to_double;
-
- switch (type)
- {
- default:
- return NULL;
-
- case SLANG_CHAR_TYPE:
- da = sizeof (char); to_double = char_to_one_double;
- break;
- case SLANG_UCHAR_TYPE:
- da = sizeof (unsigned char); to_double = uchar_to_one_double;
- break;
- case SLANG_SHORT_TYPE:
- da = sizeof (short); to_double = short_to_one_double;
- break;
- case SLANG_USHORT_TYPE:
- da = sizeof (unsigned short); to_double = ushort_to_one_double;
- break;
- case SLANG_INT_TYPE:
- da = sizeof (int); to_double = int_to_one_double;
- break;
- case SLANG_UINT_TYPE:
- da = sizeof (unsigned int); to_double = uint_to_one_double;
- break;
- case SLANG_LONG_TYPE:
- da = sizeof (long); to_double = long_to_one_double;
- break;
- case SLANG_ULONG_TYPE:
- da = sizeof (unsigned long); to_double = ulong_to_one_double;
- break;
- case SLANG_FLOAT_TYPE:
- da = sizeof (float); to_double = float_to_one_double;
- break;
- case SLANG_DOUBLE_TYPE:
- da = sizeof (double); to_double = double_to_one_double;
- break;
- }
-
- if (sizeof_type != NULL) *sizeof_type = da;
- return to_double;
-}
-
-/* Each element of the matrix determines how the row maps onto the column.
- * That is, let the matrix be B_ij. Where the i,j indices refer to
- * precedence of the type. Then,
- * B_ij->copy_function copies type i to type j. Similarly,
- * B_ij->convert_function mallocs a new array of type j and copies i to it.
- *
- * Since types are always converted to higher levels of precedence for binary
- * operations, many of the elements are NULL.
- *
- * Is the idea clear?
- */
-typedef struct
-{
- FVOID_STAR copy_function;
- Convert_Fun_Type convert_function;
-}
-Binary_Matrix_Type;
-
-static Binary_Matrix_Type Binary_Matrix [MAX_ARITHMETIC_TYPES][MAX_ARITHMETIC_TYPES] =
-{
- {
- {(FVOID_STAR)copy_char_to_char, NULL},
- {(FVOID_STAR)copy_char_to_char, NULL},
- {(FVOID_STAR) copy_char_to_short, NULL},
- {(FVOID_STAR) copy_char_to_ushort, NULL},
- {(FVOID_STAR) copy_char_to_int, char_to_int},
- {(FVOID_STAR) copy_char_to_uint, char_to_uint},
- {(FVOID_STAR) copy_char_to_long, char_to_long},
- {(FVOID_STAR) copy_char_to_ulong, char_to_ulong},
- {(FVOID_STAR) copy_char_to_float, char_to_float},
- {(FVOID_STAR) copy_char_to_double, char_to_double},
- },
-
- {
- {(FVOID_STAR)copy_char_to_char, NULL},
- {(FVOID_STAR)copy_char_to_char, NULL},
- {(FVOID_STAR) copy_uchar_to_short, NULL},
- {(FVOID_STAR) copy_uchar_to_ushort, NULL},
- {(FVOID_STAR) copy_uchar_to_int, uchar_to_int},
- {(FVOID_STAR) copy_uchar_to_uint, uchar_to_uint},
- {(FVOID_STAR) copy_uchar_to_long, uchar_to_long},
- {(FVOID_STAR) copy_uchar_to_ulong, uchar_to_ulong},
- {(FVOID_STAR) copy_uchar_to_float, uchar_to_float},
- {(FVOID_STAR) copy_uchar_to_double, uchar_to_double},
- },
-
- {
- {(FVOID_STAR) copy_short_to_char, NULL},
- {(FVOID_STAR) copy_short_to_uchar, NULL},
- {(FVOID_STAR) copy_short_to_short, NULL},
- {(FVOID_STAR) copy_short_to_short, NULL},
- {(FVOID_STAR) copy_short_to_int, short_to_int},
- {(FVOID_STAR) copy_short_to_uint, short_to_uint},
- {(FVOID_STAR) copy_short_to_long, short_to_long},
- {(FVOID_STAR) copy_short_to_ulong, short_to_ulong},
- {(FVOID_STAR) copy_short_to_float, short_to_float},
- {(FVOID_STAR) copy_short_to_double, short_to_double},
- },
-
- {
- {(FVOID_STAR) copy_ushort_to_char, NULL},
- {(FVOID_STAR) copy_ushort_to_uchar, NULL},
- {(FVOID_STAR) copy_short_to_short, NULL},
- {(FVOID_STAR) copy_short_to_short, NULL},
- {(FVOID_STAR) copy_ushort_to_int, ushort_to_int},
- {(FVOID_STAR) copy_ushort_to_uint, ushort_to_uint},
- {(FVOID_STAR) copy_ushort_to_long, ushort_to_long},
- {(FVOID_STAR) copy_ushort_to_ulong, ushort_to_ulong},
- {(FVOID_STAR) copy_ushort_to_float, ushort_to_float},
- {(FVOID_STAR) copy_ushort_to_double, ushort_to_double},
- },
-
- {
- {(FVOID_STAR) copy_int_to_char, NULL},
- {(FVOID_STAR) copy_int_to_uchar, NULL},
- {(FVOID_STAR) copy_int_to_short, NULL},
- {(FVOID_STAR) copy_int_to_ushort, NULL},
- {(FVOID_STAR) copy_int_to_int, NULL},
- {(FVOID_STAR) copy_int_to_int, NULL},
- {(FVOID_STAR) copy_int_to_long, int_to_long},
- {(FVOID_STAR) copy_int_to_ulong, int_to_ulong},
- {(FVOID_STAR) copy_int_to_float, int_to_float},
- {(FVOID_STAR) copy_int_to_double, int_to_double},
- },
-
- {
- {(FVOID_STAR) copy_uint_to_char, NULL},
- {(FVOID_STAR) copy_uint_to_uchar, NULL},
- {(FVOID_STAR) copy_uint_to_short, NULL},
- {(FVOID_STAR) copy_uint_to_ushort, NULL},
- {(FVOID_STAR) copy_int_to_int, NULL},
- {(FVOID_STAR) copy_int_to_int, NULL},
- {(FVOID_STAR) copy_uint_to_long, uint_to_long},
- {(FVOID_STAR) copy_uint_to_ulong, uint_to_ulong},
- {(FVOID_STAR) copy_uint_to_float, uint_to_float},
- {(FVOID_STAR) copy_uint_to_double, uint_to_double},
- },
-
- {
- {(FVOID_STAR) copy_long_to_char, NULL},
- {(FVOID_STAR) copy_long_to_uchar, NULL},
- {(FVOID_STAR) copy_long_to_short, NULL},
- {(FVOID_STAR) copy_long_to_ushort, NULL},
- {(FVOID_STAR) copy_long_to_int, NULL},
- {(FVOID_STAR) copy_long_to_uint, NULL},
- {(FVOID_STAR) copy_long_to_long, NULL},
- {(FVOID_STAR) copy_long_to_long, NULL},
- {(FVOID_STAR) copy_long_to_float, long_to_float},
- {(FVOID_STAR) copy_long_to_double, long_to_double},
- },
-
- {
- {(FVOID_STAR) copy_ulong_to_char, NULL},
- {(FVOID_STAR) copy_ulong_to_uchar, NULL},
- {(FVOID_STAR) copy_ulong_to_short, NULL},
- {(FVOID_STAR) copy_ulong_to_ushort, NULL},
- {(FVOID_STAR) copy_ulong_to_int, NULL},
- {(FVOID_STAR) copy_ulong_to_uint, NULL},
- {(FVOID_STAR) copy_long_to_long, NULL},
- {(FVOID_STAR) copy_long_to_long, NULL},
- {(FVOID_STAR) copy_ulong_to_float, ulong_to_float},
- {(FVOID_STAR) copy_ulong_to_double, ulong_to_double},
- },
-
- {
- {(FVOID_STAR) copy_float_to_char, NULL},
- {(FVOID_STAR) copy_float_to_uchar, NULL},
- {(FVOID_STAR) copy_float_to_short, NULL},
- {(FVOID_STAR) copy_float_to_ushort, NULL},
- {(FVOID_STAR) copy_float_to_int, NULL},
- {(FVOID_STAR) copy_float_to_uint, NULL},
- {(FVOID_STAR) copy_float_to_long, NULL},
- {(FVOID_STAR) copy_float_to_ulong, NULL},
- {(FVOID_STAR) copy_float_to_float, NULL},
- {(FVOID_STAR) copy_float_to_double, float_to_double},
- },
-
- {
- {(FVOID_STAR) copy_double_to_char, NULL},
- {(FVOID_STAR) copy_double_to_uchar, NULL},
- {(FVOID_STAR) copy_double_to_short, NULL},
- {(FVOID_STAR) copy_double_to_ushort, NULL},
- {(FVOID_STAR) copy_double_to_int, NULL},
- {(FVOID_STAR) copy_double_to_uint, NULL},
- {(FVOID_STAR) copy_double_to_long, NULL},
- {(FVOID_STAR) copy_double_to_ulong, NULL},
- {(FVOID_STAR) copy_double_to_float, NULL},
- {(FVOID_STAR) copy_double_to_double, NULL},
- }
-};
-
-#define GENERIC_BINARY_FUNCTION int_int_bin_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE int
-#define POW_FUNCTION(a,b) pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE double
-#define ABS_FUNCTION abs
-#define MOD_FUNCTION(a,b) ((a) % (b))
-#define GENERIC_UNARY_FUNCTION int_unary_op
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define SCALAR_BINARY_FUNCTION int_int_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_int_obj(SLANG_INT_TYPE,(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE, (x))
-#define CMP_FUNCTION int_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_BINARY_FUNCTION uint_uint_bin_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE unsigned int
-#define POW_FUNCTION(a,b) pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE double
-#define MOD_FUNCTION(a,b) ((a) % (b))
-#define GENERIC_UNARY_FUNCTION uint_unary_op
-#define ABS_FUNCTION(a) (a)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : 0)
-#define SCALAR_BINARY_FUNCTION uint_uint_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_int_obj(SLANG_UINT_TYPE,(int)(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE, (x))
-#define CMP_FUNCTION uint_cmp_function
-#include "slarith.inc"
-
-#if SIZEOF_LONG != SIZEOF_INT
-#define GENERIC_BINARY_FUNCTION long_long_bin_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE long
-#define POW_FUNCTION(a,b) pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE double
-#define MOD_FUNCTION(a,b) ((a) % (b))
-#define GENERIC_UNARY_FUNCTION long_unary_op
-#define ABS_FUNCTION(a) (((a) >= 0) ? (a) : -(a))
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define SCALAR_BINARY_FUNCTION long_long_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_long_obj(SLANG_LONG_TYPE,(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE, (x))
-#define CMP_FUNCTION long_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_BINARY_FUNCTION ulong_ulong_bin_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE unsigned long
-#define POW_FUNCTION(a,b) pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE double
-#define MOD_FUNCTION(a,b) ((a) % (b))
-#define GENERIC_UNARY_FUNCTION ulong_unary_op
-#define ABS_FUNCTION(a) (a)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : 0)
-#define SCALAR_BINARY_FUNCTION ulong_ulong_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_long_obj(SLANG_ULONG_TYPE,(long)(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE, (x))
-#define CMP_FUNCTION ulong_cmp_function
-#include "slarith.inc"
-#else
-#define long_long_bin_op int_int_bin_op
-#define ulong_ulong_bin_op uint_uint_bin_op
-#define long_unary_op int_unary_op
-#define ulong_unary_op uint_unary_op
-#define long_cmp_function int_cmp_function
-#define ulong_cmp_function uint_cmp_function
-#endif /* SIZEOF_INT != SIZEOF_LONG */
-
-#define GENERIC_BINARY_FUNCTION float_float_bin_op
-#define GENERIC_TYPE float
-#define POW_FUNCTION(a,b) (float)pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE float
-#define MOD_FUNCTION(a,b) (float)fmod((a),(b))
-#define GENERIC_UNARY_FUNCTION float_unary_op
-#define ABS_FUNCTION(a) (float)fabs((double) a)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define SCALAR_BINARY_FUNCTION float_float_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_float_obj(SLANG_FLOAT_TYPE,(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_float_obj(SLANG_FLOAT_TYPE, (x))
-#define CMP_FUNCTION float_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_BINARY_FUNCTION double_double_bin_op
-#define GENERIC_TYPE double
-#define POW_FUNCTION(a,b) pow((double)(a),(double)(b))
-#define POW_RESULT_TYPE double
-#define MOD_FUNCTION(a,b) (float)fmod((a),(b))
-#define GENERIC_UNARY_FUNCTION double_unary_op
-#define ABS_FUNCTION(a) fabs(a)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define SCALAR_BINARY_FUNCTION double_double_scalar_bin_op
-#define PUSH_SCALAR_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE,(x))
-#define PUSH_POW_OBJ_FUN(x) SLclass_push_double_obj(SLANG_DOUBLE_TYPE, (x))
-#define CMP_FUNCTION double_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_UNARY_FUNCTION char_unary_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE signed char
-#define ABS_FUNCTION abs
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define CMP_FUNCTION char_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_UNARY_FUNCTION uchar_unary_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE unsigned char
-#define ABS_FUNCTION(x) (x)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : 0)
-#define CMP_FUNCTION uchar_cmp_function
-#include "slarith.inc"
-
-#if SIZEOF_SHORT != SIZEOF_INT
-#define GENERIC_UNARY_FUNCTION short_unary_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE short
-#define ABS_FUNCTION abs
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : (((x) < 0) ? -1 : 0))
-#define CMP_FUNCTION short_cmp_function
-#include "slarith.inc"
-
-#define GENERIC_UNARY_FUNCTION ushort_unary_op
-#define GENERIC_BIT_OPERATIONS
-#define GENERIC_TYPE unsigned short
-#define ABS_FUNCTION(x) (x)
-#define SIGN_FUNCTION(x) (((x) > 0) ? 1 : 0)
-#define CMP_FUNCTION ushort_cmp_function
-#include "slarith.inc"
-#endif /* SIZEOF_INT != SIZEOF_SHORT */
-
-/* Unfortunately, the numbers that were assigned to the data-types were
- * not well thought out. So, I need to use the following table.
- */
-#define MAXIMUM_ARITH_TYPE_VALUE SLANG_FLOAT_TYPE
-#define IS_INTEGER_TYPE(x) \
- (((x) <= MAXIMUM_ARITH_TYPE_VALUE) \
- && (Type_Precedence_Table[x] < 8) && (Type_Precedence_Table[x] != -1))
-#define IS_ARITHMETIC_TYPE(x) \
- (((x) <= MAXIMUM_ARITH_TYPE_VALUE) && (Type_Precedence_Table[x] != -1))
-
-#define LONG_PRECEDENCE_VALUE 6
-#define FLOAT_PRECEDENCE_VALUE 8
-
-static signed char Type_Precedence_Table [MAXIMUM_ARITH_TYPE_VALUE + 1] =
-{
- -1, /* SLANG_UNDEFINED_TYPE */
- -1, /* SLANG_VOID_TYPE */
- 4, /* SLANG_INT_TYPE */
- 9, /* SLANG_DOUBLE_TYPE */
- 0, /* SLANG_CHAR_TYPE */
- -1, /* SLANG_INTP_TYPE */
- -1, /* SLANG_REF_TYPE */
- -1, /* SLANG_COMPLEX_TYPE */
- -1, /* SLANG_NULL_TYPE */
- 1, /* SLANG_UCHAR_TYPE */
- 2, /* SLANG_SHORT_TYPE */
- 3, /* SLANG_USHORT_TYPE */
- 5, /* SLANG_UINT_TYPE */
- 6, /* SLANG_LONG_TYPE */
- 7, /* SLANG_ULONG_TYPE */
- -1, /* SLANG_STRING_TYPE */
- 8 /* SLANG_FLOAT_TYPE */
-};
-
-int _SLarith_get_precedence (unsigned char type)
-{
- if (type > MAXIMUM_ARITH_TYPE_VALUE)
- return -1;
-
- return Type_Precedence_Table[type];
-}
-
-unsigned char _SLarith_promote_type (unsigned char t)
-{
- switch (t)
- {
- case SLANG_FLOAT_TYPE:
- case SLANG_DOUBLE_TYPE:
- case SLANG_LONG_TYPE:
- case SLANG_ULONG_TYPE:
- case SLANG_INT_TYPE:
- case SLANG_UINT_TYPE:
- break;
-
- case SLANG_USHORT_TYPE:
-#if SIZEOF_INT == SIZEOF_SHORT
- t = SLANG_UINT_TYPE;
- break;
-#endif
- /* drop */
- case SLANG_CHAR_TYPE:
- case SLANG_UCHAR_TYPE:
- case SLANG_SHORT_TYPE:
- default:
- t = SLANG_INT_TYPE;
- }
-
- return t;
-}
-
-static unsigned char promote_to_common_type (unsigned char a, unsigned char b)
-{
- a = _SLarith_promote_type (a);
- b = _SLarith_promote_type (b);
-
- return (Type_Precedence_Table[a] > Type_Precedence_Table[b]) ? a : b;
-}
-
-static int arith_bin_op_result (int op, unsigned char a_type, unsigned char b_type,
- unsigned char *c_type)
-{
- switch (op)
- {
- case SLANG_EQ:
- case SLANG_NE:
- case SLANG_GT:
- case SLANG_GE:
- case SLANG_LT:
- case SLANG_LE:
- case SLANG_OR:
- case SLANG_AND:
- *c_type = SLANG_CHAR_TYPE;
- return 1;
-
- case SLANG_POW:
- if (SLANG_FLOAT_TYPE == promote_to_common_type (a_type, b_type))
- *c_type = SLANG_FLOAT_TYPE;
- else
- *c_type = SLANG_DOUBLE_TYPE;
- return 1;
-
- case SLANG_BAND:
- case SLANG_BXOR:
- case SLANG_BOR:
- case SLANG_SHL:
- case SLANG_SHR:
- /* The bit-level operations are defined just for integer types */
- if ((0 == IS_INTEGER_TYPE (a_type))
- || (0 == IS_INTEGER_TYPE(b_type)))
- return 0;
- break;
-
- default:
- break;
- }
-
- *c_type = promote_to_common_type (a_type, b_type);
- return 1;
-}
-
-typedef int (*Bin_Fun_Type) (int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR);
-
-/* This array of functions must be indexed by precedence after arithmetic
- * promotions.
- */
-static Bin_Fun_Type Bin_Fun_Map [MAX_ARITHMETIC_TYPES] =
-{
- NULL,
- NULL,
- NULL,
- NULL,
- int_int_bin_op,
- uint_uint_bin_op,
- long_long_bin_op,
- ulong_ulong_bin_op,
- float_float_bin_op,
- double_double_bin_op
-};
-
-static int arith_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- Convert_Fun_Type af, bf;
- Bin_Fun_Type binfun;
- int a_indx, b_indx, c_indx;
- unsigned char c_type;
- int ret;
-
- c_type = promote_to_common_type (a_type, b_type);
-
- a_indx = Type_Precedence_Table [a_type];
- b_indx = Type_Precedence_Table [b_type];
- c_indx = Type_Precedence_Table [c_type];
-
- af = Binary_Matrix[a_indx][c_indx].convert_function;
- bf = Binary_Matrix[b_indx][c_indx].convert_function;
- binfun = Bin_Fun_Map[c_indx];
-
- if ((af != NULL)
- && (NULL == (ap = (VOID_STAR) (*af) (ap, na))))
- return -1;
-
- if ((bf != NULL)
- && (NULL == (bp = (VOID_STAR) (*bf) (bp, nb))))
- {
- if (af != NULL) SLfree ((char *) ap);
- return -1;
- }
-
- ret = (*binfun) (op, a_type, ap, na, b_type, bp, nb, cp);
- if (af != NULL) SLfree ((char *) ap);
- if (bf != NULL) SLfree ((char *) bp);
-
- return ret;
-}
-
-static int arith_unary_op_result (int op, unsigned char a, unsigned char *b)
-{
- (void) a;
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_SQR:
- case SLANG_MUL2:
- case SLANG_PLUSPLUS:
- case SLANG_MINUSMINUS:
- case SLANG_CHS:
- case SLANG_ABS:
- *b = a;
- break;
-
- case SLANG_NOT:
- case SLANG_BNOT:
- if (0 == IS_INTEGER_TYPE(a))
- return 0;
- *b = a;
- break;
-
- case SLANG_SIGN:
- *b = SLANG_INT_TYPE;
- break;
- }
- return 1;
-}
-
-static int integer_pop (unsigned char type, VOID_STAR ptr)
-{
- SLang_Object_Type obj;
- int i, j;
- void (*f)(VOID_STAR, VOID_STAR, unsigned int);
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- if ((obj.data_type > MAXIMUM_ARITH_TYPE_VALUE)
- || ((j = Type_Precedence_Table[obj.data_type]) == -1)
- || (j >= FLOAT_PRECEDENCE_VALUE))
- {
- _SLclass_type_mismatch_error (type, obj.data_type);
- SLang_free_object (&obj);
- return -1;
- }
-
- i = Type_Precedence_Table[type];
- f = (void (*)(VOID_STAR, VOID_STAR, unsigned int))
- Binary_Matrix[j][i].copy_function;
-
- (*f) (ptr, (VOID_STAR)&obj.v, 1);
-
- return 0;
-}
-
-static int integer_push (unsigned char type, VOID_STAR ptr)
-{
- SLang_Object_Type obj;
- int i;
- void (*f)(VOID_STAR, VOID_STAR, unsigned int);
-
- i = Type_Precedence_Table[type];
- f = (void (*)(VOID_STAR, VOID_STAR, unsigned int))
- Binary_Matrix[i][i].copy_function;
-
- obj.data_type = type;
-
- (*f) ((VOID_STAR)&obj.v, ptr, 1);
-
- return SLang_push (&obj);
-}
-
-int SLang_pop_char (char *i)
-{
- return integer_pop (SLANG_CHAR_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_uchar (unsigned char *i)
-{
- return integer_pop (SLANG_UCHAR_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_short (short *i)
-{
- return integer_pop (SLANG_SHORT_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_ushort (unsigned short *i)
-{
- return integer_pop (SLANG_USHORT_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_long (long *i)
-{
- return integer_pop (SLANG_LONG_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_ulong (unsigned long *i)
-{
- return integer_pop (SLANG_ULONG_TYPE, (VOID_STAR) i);
-}
-
-int SLang_pop_integer (int *i)
-{
-#if _SLANG_OPTIMIZE_FOR_SPEED
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (SLANG_INT_TYPE, &obj, 0))
- return -1;
- *i = obj.v.int_val;
- return 0;
-#else
- return integer_pop (SLANG_INT_TYPE, (VOID_STAR) i);
-#endif
-}
-
-int SLang_pop_uinteger (unsigned int *i)
-{
- return integer_pop (SLANG_UINT_TYPE, (VOID_STAR) i);
-}
-
-int SLang_push_integer (int i)
-{
- return SLclass_push_int_obj (SLANG_INT_TYPE, i);
-}
-int SLang_push_uinteger (unsigned int i)
-{
- return SLclass_push_int_obj (SLANG_UINT_TYPE, (int) i);
-}
-int SLang_push_char (char i)
-{
- return SLclass_push_char_obj (SLANG_CHAR_TYPE, i);
-}
-int SLang_push_uchar (unsigned char i)
-{
- return SLclass_push_char_obj (SLANG_UCHAR_TYPE, (char) i);
-}
-int SLang_push_short (short i)
-{
- return SLclass_push_short_obj (SLANG_SHORT_TYPE, i);
-}
-int SLang_push_ushort (unsigned short i)
-{
- return SLclass_push_short_obj (SLANG_USHORT_TYPE, (unsigned short) i);
-}
-int SLang_push_long (long i)
-{
- return SLclass_push_long_obj (SLANG_LONG_TYPE, i);
-}
-int SLang_push_ulong (unsigned long i)
-{
- return SLclass_push_long_obj (SLANG_ULONG_TYPE, (long) i);
-}
-
-_INLINE_
-int _SLarith_typecast (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- int i, j;
-
- void (*copy)(VOID_STAR, VOID_STAR, unsigned int);
-
- i = Type_Precedence_Table[a_type];
- j = Type_Precedence_Table[b_type];
-
- copy = (void (*)(VOID_STAR, VOID_STAR, unsigned int))
- Binary_Matrix[i][j].copy_function;
-
- (*copy) (bp, ap, na);
- return 1;
-}
-
-#if SLANG_HAS_FLOAT
-
-int SLang_pop_double(double *x, int *convertp, int *ip)
-{
- SLang_Object_Type obj;
- int i, convert;
-
- if (0 != SLang_pop (&obj))
- return -1;
-
- i = 0;
- convert = 0;
-
- switch (obj.data_type)
- {
- case SLANG_FLOAT_TYPE:
- *x = (double) obj.v.float_val;
- break;
-
- case SLANG_DOUBLE_TYPE:
- *x = obj.v.double_val;
- break;
-
- case SLANG_INT_TYPE:
- i = (int) obj.v.long_val;
- *x = (double) i;
- convert = 1;
- break;
-
- case SLANG_CHAR_TYPE: *x = (double) obj.v.char_val; break;
- case SLANG_UCHAR_TYPE: *x = (double) obj.v.uchar_val; break;
- case SLANG_SHORT_TYPE: *x = (double) obj.v.short_val; break;
- case SLANG_USHORT_TYPE: *x = (double) obj.v.ushort_val; break;
- case SLANG_UINT_TYPE: *x = (double) obj.v.uint_val; break;
- case SLANG_LONG_TYPE: *x = (double) obj.v.long_val; break;
- case SLANG_ULONG_TYPE: *x = (double) obj.v.ulong_val; break;
-
- default:
- _SLclass_type_mismatch_error (SLANG_DOUBLE_TYPE, obj.data_type);
- SLang_free_object (&obj);
- return -1;
- }
-
- if (convertp != NULL) *convertp = convert;
- if (ip != NULL) *ip = i;
-
- return 0;
-}
-
-int SLang_push_double (double x)
-{
- return SLclass_push_double_obj (SLANG_DOUBLE_TYPE, x);
-}
-
-int SLang_pop_float (float *x)
-{
- double d;
-
- /* Pop it as a double and let the double function do all the typcasting */
- if (-1 == SLang_pop_double (&d, NULL, NULL))
- return -1;
-
- *x = (float) d;
- return 0;
-}
-
-int SLang_push_float (float f)
-{
- return SLclass_push_float_obj (SLANG_FLOAT_TYPE, (double) f);
-}
-
-/* Double */
-static int double_push (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- SLang_push_double (*(double *) ptr);
- return 0;
-}
-
-static int double_push_literal (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- return SLang_push_double (**(double **)ptr);
-}
-
-static int double_pop (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return SLang_pop_double ((double *) ptr, NULL, NULL);
-}
-
-static void double_byte_code_destroy (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- SLfree (*(char **) ptr);
-}
-
-static int float_push (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- SLang_push_float (*(float *) ptr);
- return 0;
-}
-
-static int float_pop (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return SLang_pop_float ((float *) ptr);
-}
-
-#endif /* SLANG_HAS_FLOAT */
-
-#if SLANG_HAS_FLOAT
-static char Double_Format[16] = "%g";
-
-void _SLset_double_format (char *s)
-{
- strncpy (Double_Format, s, 15);
- Double_Format[15] = 0;
-}
-#endif
-
-static char *arith_string (unsigned char type, VOID_STAR v)
-{
- char buf [256];
- char *s;
-
- s = buf;
-
- switch (type)
- {
- default:
- s = SLclass_get_datatype_name (type);
- break;
-
- case SLANG_CHAR_TYPE:
- sprintf (s, "%d", *(char *) v);
- break;
- case SLANG_UCHAR_TYPE:
- sprintf (s, "%u", *(unsigned char *) v);
- break;
- case SLANG_SHORT_TYPE:
- sprintf (s, "%d", *(short *) v);
- break;
- case SLANG_USHORT_TYPE:
- sprintf (s, "%u", *(unsigned short *) v);
- break;
- case SLANG_INT_TYPE:
- sprintf (s, "%d", *(int *) v);
- break;
- case SLANG_UINT_TYPE:
- sprintf (s, "%u", *(unsigned int *) v);
- break;
- case SLANG_LONG_TYPE:
- sprintf (s, "%ld", *(long *) v);
- break;
- case SLANG_ULONG_TYPE:
- sprintf (s, "%lu", *(unsigned long *) v);
- break;
-#if SLANG_HAS_FLOAT
- case SLANG_FLOAT_TYPE:
- if (EOF == _SLsnprintf (buf, sizeof (buf), Double_Format, *(float *) v))
- sprintf (s, "%e", *(float *) v);
- break;
- case SLANG_DOUBLE_TYPE:
- if (EOF == _SLsnprintf (buf, sizeof (buf), Double_Format, *(double *) v))
- sprintf (s, "%e", *(double *) v);
- break;
-#endif
- }
-
- return SLmake_string (s);
-}
-
-static int integer_to_bool (unsigned char type, int *t)
-{
- (void) type;
- return SLang_pop_integer (t);
-}
-
-static int push_int_literal (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_push_int_obj (type, (int) *(long *) ptr);
-}
-
-static int push_char_literal (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_push_char_obj (type, (char) *(long *) ptr);
-}
-
-#if SIZEOF_SHORT != SIZEOF_INT
-static int push_short_literal (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_push_short_obj (type, (short) *(long *) ptr);
-}
-#endif
-
-#if SIZEOF_INT != SIZEOF_LONG
-static int push_long_literal (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_push_long_obj (type, *(long *) ptr);
-}
-#endif
-
-typedef struct
-{
- char *name;
- unsigned char data_type;
- unsigned int sizeof_type;
- int (*unary_fun)(int, unsigned char, VOID_STAR, unsigned int, VOID_STAR);
- int (*push_literal) (unsigned char, VOID_STAR);
- int (*cmp_fun) (unsigned char, VOID_STAR, VOID_STAR, int *);
-}
-Integer_Info_Type;
-
-static Integer_Info_Type Integer_Types [8] =
-{
- {"Char_Type", SLANG_CHAR_TYPE, sizeof (char), char_unary_op, push_char_literal, char_cmp_function},
- {"UChar_Type", SLANG_UCHAR_TYPE, sizeof (unsigned char), uchar_unary_op, push_char_literal, uchar_cmp_function},
-#if SIZEOF_INT != SIZEOF_SHORT
- {"Short_Type", SLANG_SHORT_TYPE, sizeof (short), short_unary_op, push_short_literal, short_cmp_function},
- {"UShort_Type", SLANG_USHORT_TYPE, sizeof (unsigned short), ushort_unary_op, push_short_literal, ushort_cmp_function},
-#else
- {NULL, SLANG_SHORT_TYPE},
- {NULL, SLANG_USHORT_TYPE},
-#endif
-
- {"Integer_Type", SLANG_INT_TYPE, sizeof (int), int_unary_op, push_int_literal, int_cmp_function},
- {"UInteger_Type", SLANG_UINT_TYPE, sizeof (unsigned int), uint_unary_op, push_int_literal, uint_cmp_function},
-
-#if SIZEOF_INT != SIZEOF_LONG
- {"Long_Type", SLANG_LONG_TYPE, sizeof (long), long_unary_op, push_long_literal, long_cmp_function},
- {"ULong_Type", SLANG_ULONG_TYPE, sizeof (unsigned long), ulong_unary_op, push_long_literal, ulong_cmp_function}
-#else
- {NULL, SLANG_LONG_TYPE, 0, NULL, NULL, NULL},
- {NULL, SLANG_ULONG_TYPE, 0, NULL, NULL, NULL}
-#endif
-};
-
-static int create_synonyms (void)
-{
- static char *names[8] =
- {
- "Int16_Type", "UInt16_Type", "Int32_Type", "UInt32_Type",
- "Int64_Type", "UInt64_Type",
- "Float32_Type", "Float64_Type"
- };
- int types[8];
- unsigned int i;
-
- memset ((char *) types, 0, sizeof (types));
-
- /* The assumption is that sizeof(unsigned X) == sizeof (X) */
-#if SIZEOF_INT == 2
- types[0] = SLANG_INT_TYPE;
- types[1] = SLANG_UINT_TYPE;
-#else
-# if SIZEOF_SHORT == 2
- types[0] = SLANG_SHORT_TYPE;
- types[1] = SLANG_USHORT_TYPE;
-# else
-# if SIZEOF_LONG == 2
- types[0] = SLANG_LONG_TYPE;
- types[1] = SLANG_ULONG_TYPE;
-# endif
-# endif
-#endif
-
-#if SIZEOF_INT == 4
- types[2] = SLANG_INT_TYPE;
- types[3] = SLANG_UINT_TYPE;
-#else
-# if SIZEOF_SHORT == 4
- types[2] = SLANG_SHORT_TYPE;
- types[3] = SLANG_USHORT_TYPE;
-# else
-# if SIZEOF_LONG == 4
- types[2] = SLANG_LONG_TYPE;
- types[3] = SLANG_ULONG_TYPE;
-# endif
-# endif
-#endif
-
-#if SIZEOF_INT == 8
- types[4] = SLANG_INT_TYPE;
- types[5] = SLANG_UINT_TYPE;
-#else
-# if SIZEOF_SHORT == 8
- types[4] = SLANG_SHORT_TYPE;
- types[5] = SLANG_USHORT_TYPE;
-# else
-# if SIZEOF_LONG == 8
- types[4] = SLANG_LONG_TYPE;
- types[5] = SLANG_ULONG_TYPE;
-# endif
-# endif
-#endif
-
-#if SLANG_HAS_FLOAT
-
-#if SIZEOF_FLOAT == 4
- types[6] = SLANG_FLOAT_TYPE;
-#else
-# if SIZEOF_DOUBLE == 4
- types[6] = SLANG_DOUBLE_TYPE;
-# endif
-#endif
-#if SIZEOF_FLOAT == 8
- types[7] = SLANG_FLOAT_TYPE;
-#else
-# if SIZEOF_DOUBLE == 8
- types[7] = SLANG_DOUBLE_TYPE;
-# endif
-#endif
-
-#endif
-
- if ((-1 == SLclass_create_synonym ("Int_Type", SLANG_INT_TYPE))
- || (-1 == SLclass_create_synonym ("UInt_Type", SLANG_UINT_TYPE)))
- return -1;
-
- for (i = 0; i < 8; i++)
- {
- if (types[i] == 0) continue;
-
- if (-1 == SLclass_create_synonym (names[i], types[i]))
- return -1;
- }
-
-#if SIZEOF_INT == SIZEOF_SHORT
- if ((-1 == SLclass_create_synonym ("Short_Type", SLANG_INT_TYPE))
- || (-1 == SLclass_create_synonym ("UShort_Type", SLANG_UINT_TYPE))
- || (-1 == _SLclass_copy_class (SLANG_SHORT_TYPE, SLANG_INT_TYPE))
- || (-1 == _SLclass_copy_class (SLANG_USHORT_TYPE, SLANG_UINT_TYPE)))
- return -1;
-#endif
-#if SIZEOF_INT == SIZEOF_LONG
- if ((-1 == SLclass_create_synonym ("Long_Type", SLANG_INT_TYPE))
- || (-1 == SLclass_create_synonym ("ULong_Type", SLANG_UINT_TYPE))
- || (-1 == _SLclass_copy_class (SLANG_LONG_TYPE, SLANG_INT_TYPE))
- || (-1 == _SLclass_copy_class (SLANG_ULONG_TYPE, SLANG_UINT_TYPE)))
- return -1;
-#endif
- return 0;
-}
-
-int _SLarith_register_types (void)
-{
- SLang_Class_Type *cl;
- int a_type, b_type;
- int i, j;
-
-#if defined(HAVE_SETLOCALE) && defined(LC_NUMERIC)
- /* make sure decimal point it used --- the parser requires it */
- (void) setlocale (LC_NUMERIC, "C");
-#endif
-
- for (i = 0; i < 8; i++)
- {
- Integer_Info_Type *info;
-
- info = Integer_Types + i;
-
- if (info->name == NULL)
- {
- /* This happens when the object is the same size as an integer
- * For this case, we really want to copy the integer class.
- * We will handle that when the synonym is created.
- */
- continue;
- }
-
- if (NULL == (cl = SLclass_allocate_class (info->name)))
- return -1;
-
- (void) SLclass_set_string_function (cl, arith_string);
- (void) SLclass_set_push_function (cl, integer_push);
- (void) SLclass_set_pop_function (cl, integer_pop);
- cl->cl_push_literal = info->push_literal;
- cl->cl_to_bool = integer_to_bool;
-
- cl->cl_cmp = info->cmp_fun;
-
- if (-1 == SLclass_register_class (cl, info->data_type, info->sizeof_type,
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
- if (-1 == SLclass_add_unary_op (info->data_type, info->unary_fun, arith_unary_op_result))
- return -1;
-
- _SLarith_Is_Arith_Type [info->data_type] = 1;
- }
-
-#if SLANG_HAS_FLOAT
- if (NULL == (cl = SLclass_allocate_class ("Double_Type")))
- return -1;
- (void) SLclass_set_push_function (cl, double_push);
- (void) SLclass_set_pop_function (cl, double_pop);
- (void) SLclass_set_string_function (cl, arith_string);
- cl->cl_byte_code_destroy = double_byte_code_destroy;
- cl->cl_push_literal = double_push_literal;
- cl->cl_cmp = double_cmp_function;
-
- if (-1 == SLclass_register_class (cl, SLANG_DOUBLE_TYPE, sizeof (double),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
- if (-1 == SLclass_add_unary_op (SLANG_DOUBLE_TYPE, double_unary_op, arith_unary_op_result))
- return -1;
- _SLarith_Is_Arith_Type [SLANG_DOUBLE_TYPE] = 2;
-
- if (NULL == (cl = SLclass_allocate_class ("Float_Type")))
- return -1;
- (void) SLclass_set_string_function (cl, arith_string);
- (void) SLclass_set_push_function (cl, float_push);
- (void) SLclass_set_pop_function (cl, float_pop);
- cl->cl_cmp = float_cmp_function;
-
- if (-1 == SLclass_register_class (cl, SLANG_FLOAT_TYPE, sizeof (float),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
- if (-1 == SLclass_add_unary_op (SLANG_FLOAT_TYPE, float_unary_op, arith_unary_op_result))
- return -1;
- _SLarith_Is_Arith_Type [SLANG_FLOAT_TYPE] = 2;
-#endif
-
- if (-1 == create_synonyms ())
- return -1;
-
- for (a_type = 0; a_type <= MAXIMUM_ARITH_TYPE_VALUE; a_type++)
- {
- if (-1 == (i = Type_Precedence_Table [a_type]))
- continue;
-
- for (b_type = 0; b_type <= MAXIMUM_ARITH_TYPE_VALUE; b_type++)
- {
- int implicit_ok;
-
- if (-1 == (j = Type_Precedence_Table [b_type]))
- continue;
-
- /* Allow implicit typecast, except from into to float */
- implicit_ok = ((j >= FLOAT_PRECEDENCE_VALUE)
- || (i < FLOAT_PRECEDENCE_VALUE));
-
- if (-1 == SLclass_add_binary_op (a_type, b_type, arith_bin_op, arith_bin_op_result))
- return -1;
-
- if (i != j)
- if (-1 == SLclass_add_typecast (a_type, b_type, _SLarith_typecast, implicit_ok))
- return -1;
- }
- }
-
- return 0;
-}
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
-
-static void promote_objs (SLang_Object_Type *a, SLang_Object_Type *b,
- SLang_Object_Type *c, SLang_Object_Type *d)
-{
- unsigned char ia, ib, ic, id;
- int i, j;
- void (*copy)(VOID_STAR, VOID_STAR, unsigned int);
-
- ia = a->data_type;
- ib = b->data_type;
-
- ic = _SLarith_promote_type (ia);
-
- if (ic == ib) id = ic; /* already promoted */
- else id = _SLarith_promote_type (ib);
-
- i = Type_Precedence_Table[ic];
- j = Type_Precedence_Table[id];
- if (i > j)
- {
- id = ic;
- j = i;
- }
-
- c->data_type = d->data_type = id;
-
- i = Type_Precedence_Table[ia];
- copy = (void (*)(VOID_STAR, VOID_STAR, unsigned int))
- Binary_Matrix[i][j].copy_function;
- (*copy) ((VOID_STAR) &c->v, (VOID_STAR)&a->v, 1);
-
- i = Type_Precedence_Table[ib];
- copy = (void (*)(VOID_STAR, VOID_STAR, unsigned int))
- Binary_Matrix[i][j].copy_function;
- (*copy) ((VOID_STAR) &d->v, (VOID_STAR)&b->v, 1);
-}
-
-int _SLarith_bin_op (SLang_Object_Type *oa, SLang_Object_Type *ob, int op)
-{
- unsigned char a_type, b_type;
-
- a_type = oa->data_type;
- b_type = ob->data_type;
-
- if (a_type != b_type)
- {
- SLang_Object_Type obj_a, obj_b;
-
- /* Handle common cases */
- if ((a_type == SLANG_INT_TYPE)
- && (b_type == SLANG_DOUBLE_TYPE))
- return double_double_scalar_bin_op (oa->v.int_val, ob->v.double_val, op);
-
- if ((a_type == SLANG_DOUBLE_TYPE)
- && (b_type == SLANG_INT_TYPE))
- return double_double_scalar_bin_op (oa->v.double_val, ob->v.int_val, op);
-
- /* Otherwise do it the hard way */
- promote_objs (oa, ob, &obj_a, &obj_b);
- oa = &obj_a;
- ob = &obj_b;
-
- a_type = oa->data_type;
- b_type = ob->data_type;
- }
-
-
- switch (a_type)
- {
- case SLANG_CHAR_TYPE:
- return int_int_scalar_bin_op (oa->v.char_val, ob->v.char_val, op);
-
- case SLANG_UCHAR_TYPE:
- return int_int_scalar_bin_op (oa->v.uchar_val, ob->v.uchar_val, op);
-
- case SLANG_SHORT_TYPE:
- return int_int_scalar_bin_op (oa->v.short_val, ob->v.short_val, op);
-
- case SLANG_USHORT_TYPE:
-# if SIZEOF_INT == SIZEOF_SHORT
- return uint_uint_scalar_bin_op (oa->v.ushort_val, ob->v.ushort_val, op);
-# else
- return int_int_scalar_bin_op ((int)oa->v.ushort_val, (int)ob->v.ushort_val, op);
-# endif
-
-#if SIZEOF_LONG == SIZEOF_INT
- case SLANG_LONG_TYPE:
-#endif
- case SLANG_INT_TYPE:
- return int_int_scalar_bin_op (oa->v.int_val, ob->v.int_val, op);
-
-#if SIZEOF_LONG == SIZEOF_INT
- case SLANG_ULONG_TYPE:
-#endif
- case SLANG_UINT_TYPE:
- return uint_uint_scalar_bin_op (oa->v.uint_val, ob->v.uint_val, op);
-
-#if SIZEOF_LONG != SIZEOF_INT
- case SLANG_LONG_TYPE:
- return long_long_scalar_bin_op (oa->v.long_val, ob->v.long_val, op);
- case SLANG_ULONG_TYPE:
- return ulong_ulong_scalar_bin_op (oa->v.ulong_val, ob->v.ulong_val, op);
-#endif
- case SLANG_FLOAT_TYPE:
- return float_float_scalar_bin_op (oa->v.float_val, ob->v.float_val, op);
- case SLANG_DOUBLE_TYPE:
- return double_double_scalar_bin_op (oa->v.double_val, ob->v.double_val, op);
- }
-
- return 1;
-}
-#endif
diff --git a/mdk-stage1/slang/slarith.inc b/mdk-stage1/slang/slarith.inc
deleted file mode 100644
index efa8a5e04..000000000
--- a/mdk-stage1/slang/slarith.inc
+++ /dev/null
@@ -1,783 +0,0 @@
-/* -*- c -*- */
-
-/* This include file is a template for defining arithmetic binary operations
- * on arithmetic types. I realize that doing it this way is not very
- * elegant but it minimizes the number of lines of code and I believe it
- * promotes clarity.
- */
-
-/* The following macros should be properly defined before including this file:
- *
- * GENERIC_BINARY_FUNCTION: The name of the binary function
- * GENERIC_TYPE: The class data type
- * MOD_FUNCTION: The function to use for mod
- * ABS_FUNCTION: Name of the abs function
- * SIGN_FUNCTION: Name of the sign function
- * GENERIC_UNARY_FUNCTION Name of the unary function
- *
- * If GENERIC_BIT_OPERATIONS is defined, the bit-level binary operators
- * will get included. If the data type has a power operation (SLANG_POW),
- * then POW_FUNCTION should be defined to return POW_RESULT_TYPE.
- */
-#ifdef GENERIC_BINARY_FUNCTION
-
-static int GENERIC_BINARY_FUNCTION
-(int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- GENERIC_TYPE *c, *a, *b;
-#ifdef POW_FUNCTION
- POW_RESULT_TYPE *d;
-#endif
- unsigned int n;
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- unsigned int n_max, da, db;
-#endif
- char *cc;
-
- (void) a_type; /* Both SLANG_INT_TYPE */
- (void) b_type;
-
- a = (GENERIC_TYPE *) ap;
- b = (GENERIC_TYPE *) bp;
- c = (GENERIC_TYPE *) cp;
- cc = (char *) cp;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- if (na == 1) da = 0; else da = 1;
- if (nb == 1) db = 0; else db = 1;
-
- if (na > nb) n_max = na; else n_max = nb;
-#endif
-
- switch (op)
- {
- default:
- return 0;
-#ifdef POW_FUNCTION
- case SLANG_POW:
- d = (POW_RESULT_TYPE *) cp;
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- d[n] = POW_FUNCTION(*a, *b);
- a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- d[n] = POW_FUNCTION(a[n],b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- if (xb == 2)
- for (n = 0; n < na; n++)
- d[n] = a[n] * a[n];
- else
- for (n = 0; n < na; n++)
- d[n] = POW_FUNCTION(a[n], xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- d[n] = POW_FUNCTION(xa, b[n]);
- }
-#endif
- break;
-#endif
- case SLANG_PLUS:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a + *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] + b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] + xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa + b[n];
- }
-#endif
- break;
-
- case SLANG_MINUS:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a - *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] - b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] - xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa - b[n];
- }
-#endif
- break;
-
- case SLANG_TIMES:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a * *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] * b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] * xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa * b[n];
- }
-#endif
- break;
-
- case SLANG_DIVIDE:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- if (*b == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = (*a / *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- {
- if (b[n] == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = a[n] / b[n];
- }
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
-
- if (xb == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- for (n = 0; n < na; n++)
- c[n] = a[n] / xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- {
- if (b[n] == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = xa / b[n];
- }
- }
-#endif
- break;
-
- case SLANG_MOD:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- if (*b == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = MOD_FUNCTION(*a, *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- {
- if (b[n] == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = MOD_FUNCTION(a[n],b[n]);
- }
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- if (xb == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- for (n = 0; n < na; n++)
- c[n] = MOD_FUNCTION(a[n],xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- {
- if (b[n] == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = MOD_FUNCTION(xa,b[n]);
- }
- }
-#endif
- break;
-
-#ifdef GENERIC_BIT_OPERATIONS
- case SLANG_BAND:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a & *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] & b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] & xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa & b[n];
- }
-#endif
- break;
-
- case SLANG_BXOR:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a ^ *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] ^ b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] ^ xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa ^ b[n];
- }
-#endif
- break;
-
- case SLANG_BOR:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a | *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] | b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] | xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa | b[n];
- }
-#endif
- break;
-
- case SLANG_SHL:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a << *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] << b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] << xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa << b[n];
- }
-#endif
- break;
-
- case SLANG_SHR:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- c[n] = (*a >> *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- c[n] = a[n] >> b[n];
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- c[n] = a[n] >> xb;
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- c[n] = xa >> b[n];
- }
-#endif
- break;
-#endif /* GENERIC_BIT_OPERATIONS */
- case SLANG_EQ:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a == *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] == b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] == xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa == b[n]);
- }
-#endif
- break;
-
- case SLANG_NE:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a != *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] != b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] != xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa != b[n]);
- }
-#endif
- break;
-
- case SLANG_GT:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a > *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] > b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] > xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa > b[n]);
- }
-#endif
- break;
-
- case SLANG_GE:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a >= *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] >= b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] >= xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa >= b[n]);
- }
-#endif
- break;
-
- case SLANG_LT:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a < *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] < b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] < xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa < b[n]);
- }
-#endif
- break;
-
- case SLANG_LE:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a <= *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] <= b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] <= xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa <= b[n]);
- }
-#endif
- break;
-
- case SLANG_OR:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a || *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] || b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] || xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa || b[n]);
- }
-#endif
- break;
-
- case SLANG_AND:
-#if _SLANG_OPTIMIZE_FOR_SPEED < 2
- for (n = 0; n < n_max; n++)
- {
- cc[n] = (*a && *b); a += da; b += db;
- }
-#else
- if (na == nb)
- {
- for (n = 0; n < na; n++)
- cc[n] = (a[n] && b[n]);
- }
- else if (nb == 1)
- {
- GENERIC_TYPE xb = *b;
- for (n = 0; n < na; n++)
- cc[n] = (a[n] && xb);
- }
- else /* if (na == 1) */
- {
- GENERIC_TYPE xa = *a;
- for (n = 0; n < nb; n++)
- cc[n] = (xa && b[n]);
- }
-#endif
- break;
- }
- return 1;
-}
-
-#endif /* GENERIC_BINARY_FUNCTION */
-
-
-#ifdef GENERIC_UNARY_FUNCTION
-
-static int GENERIC_UNARY_FUNCTION
-(int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp
- )
-{
- GENERIC_TYPE *a, *b;
- unsigned int n;
- int *ib;
-
- (void) a_type;
-
- a = (GENERIC_TYPE *) ap;
- b = (GENERIC_TYPE *) bp;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUSPLUS:
- for (n = 0; n < na; n++) b[n] = (a[n] + 1);
- break;
- case SLANG_MINUSMINUS:
- for (n = 0; n < na; n++) b[n] = (a[n] - 1);
- break;
- case SLANG_CHS:
- for (n = 0; n < na; n++) b[n] = (GENERIC_TYPE) -(a[n]);
- break;
- case SLANG_SQR:
- for (n = 0; n < na; n++) b[n] = (a[n] * a[n]);
- break;
- case SLANG_MUL2:
- for (n = 0; n < na; n++) b[n] = (2 * a[n]);
- break;
- case SLANG_ABS:
- for (n = 0; n < na; n++) b[n] = ABS_FUNCTION (a[n]);
- break;
- case SLANG_SIGN:
- ib = (int *) bp;
- for (n = 0; n < na; n++)
- ib[n] = SIGN_FUNCTION(a[n]);
- break;
-
-#ifdef GENERIC_BIT_OPERATIONS
- case SLANG_NOT:
- for (n = 0; n < na; n++) b[n] = !(a[n]);
- break;
- case SLANG_BNOT:
- for (n = 0; n < na; n++) b[n] = ~(a[n]);
- break;
-#endif
- }
-
- return 1;
-}
-#endif /* GENERIC_UNARY_FUNCTION */
-
-
-#ifdef SCALAR_BINARY_FUNCTION
-
-static int SCALAR_BINARY_FUNCTION (GENERIC_TYPE a, GENERIC_TYPE b, int op)
-{
- switch (op)
- {
- default:
- return 1;
-
-#ifdef POW_FUNCTION
- case SLANG_POW:
- return PUSH_POW_OBJ_FUN(POW_FUNCTION(a, b));
-#endif
- case SLANG_PLUS:
- return PUSH_SCALAR_OBJ_FUN (a + b);
- case SLANG_MINUS:
- return PUSH_SCALAR_OBJ_FUN (a - b);
- case SLANG_TIMES:
- return PUSH_SCALAR_OBJ_FUN (a * b);
- case SLANG_DIVIDE:
- if (b == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- return PUSH_SCALAR_OBJ_FUN (a / b);
- case SLANG_MOD:
- if (b == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- return PUSH_SCALAR_OBJ_FUN (MOD_FUNCTION(a,b));
-#ifdef GENERIC_BIT_OPERATIONS
- case SLANG_BAND:
- return PUSH_SCALAR_OBJ_FUN (a & b);
- case SLANG_BXOR:
- return PUSH_SCALAR_OBJ_FUN (a ^ b);
- case SLANG_BOR:
- return PUSH_SCALAR_OBJ_FUN (a | b);
- case SLANG_SHL:
- return PUSH_SCALAR_OBJ_FUN (a << b);
- case SLANG_SHR:
- return PUSH_SCALAR_OBJ_FUN (a >> b);
-#endif
- case SLANG_GT: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a > b));
- case SLANG_LT: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a < b));
- case SLANG_GE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a >= b));
- case SLANG_LE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a <= b));
- case SLANG_EQ: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a == b));
- case SLANG_NE: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a != b));
- case SLANG_OR: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a || b));
- case SLANG_AND: return SLclass_push_char_obj (SLANG_CHAR_TYPE, (char)(a && b));
- }
-}
-
-#endif /* SCALAR_BINARY_FUNCTION */
-
-#ifdef CMP_FUNCTION
-static int CMP_FUNCTION (unsigned char unused, VOID_STAR a, VOID_STAR b, int *c)
-{
- GENERIC_TYPE x, y;
-
- (void) unused;
- x = *(GENERIC_TYPE *) a;
- y = *(GENERIC_TYPE *) b;
-
- if (x > y) *c = 1;
- else if (x == y) *c = 0;
- else *c = -1;
-
- return 0;
-}
-#endif
-
-#undef CMP_FUNCTION
-#undef SCALAR_BINARY_FUNCTION
-#undef PUSH_POW_OBJ_FUN
-#undef PUSH_SCALAR_OBJ_FUN
-#undef GENERIC_BINARY_FUNCTION
-#undef GENERIC_UNARY_FUNCTION
-#undef GENERIC_BIT_OPERATIONS
-#undef GENERIC_TYPE
-#undef POW_FUNCTION
-#undef POW_RESULT_TYPE
-#undef MOD_FUNCTION
-#undef ABS_FUNCTION
-#undef SIGN_FUNCTION
diff --git a/mdk-stage1/slang/slarray.c b/mdk-stage1/slang/slarray.c
deleted file mode 100644
index 0b9a1406c..000000000
--- a/mdk-stage1/slang/slarray.c
+++ /dev/null
@@ -1,3139 +0,0 @@
-/* Array manipulation routines for S-Lang */
-/* Copyright (c) 1997, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#define SL_APP_WANTS_FOREACH
-#include "slang.h"
-#include "_slang.h"
-
-typedef struct
-{
- int first_index;
- int last_index;
- int delta;
-}
-SLarray_Range_Array_Type;
-
-/* Use SLang_pop_array when a linear array is required. */
-static int pop_array (SLang_Array_Type **at_ptr, int convert_scalar)
-{
- SLang_Array_Type *at;
- int one = 1;
- int type;
-
- *at_ptr = NULL;
- type = SLang_peek_at_stack ();
-
- switch (type)
- {
- case -1:
- return -1;
-
- case SLANG_ARRAY_TYPE:
- return SLclass_pop_ptr_obj (SLANG_ARRAY_TYPE, (VOID_STAR *) at_ptr);
-
- case SLANG_NULL_TYPE:
- convert_scalar = 0;
- /* drop */
- default:
- if (convert_scalar == 0)
- {
- SLdo_pop ();
- SLang_verror (SL_TYPE_MISMATCH, "Context requires an array. Scalar not converted");
- return -1;
- }
- break;
- }
-
- if (NULL == (at = SLang_create_array ((unsigned char) type, 0, NULL, &one, 1)))
- return -1;
-
- if (-1 == at->cl->cl_apop ((unsigned char) type, at->data))
- {
- SLang_free_array (at);
- return -1;
- }
-
- *at_ptr = at;
-
- return 0;
-}
-
-static VOID_STAR linear_get_data_addr (SLang_Array_Type *at, int *dims)
-{
- unsigned int num_dims;
- unsigned int ofs;
- unsigned int i;
- int *max_dims;
-
- ofs = 0;
- max_dims = at->dims;
- num_dims = at->num_dims;
-
- for (i = 0; i < num_dims; i++)
- {
- int d = dims[i];
-
- if (d < 0)
- d = d + max_dims[i];
-
- ofs = ofs * (unsigned int)max_dims [i] + (unsigned int) d;
- }
-
- return (VOID_STAR) ((char *)at->data + (ofs * at->sizeof_type));
-}
-
-static VOID_STAR get_data_addr (SLang_Array_Type *at, int *dims)
-{
- VOID_STAR data;
-
- data = at->data;
- if (data == NULL)
- {
- SLang_verror (SL_UNKNOWN_ERROR, "Array has no data");
- return NULL;
- }
-
- data = (*at->index_fun) (at, dims);
-
- if (data == NULL)
- {
- SLang_verror (SL_UNKNOWN_ERROR, "Unable to access array element");
- return NULL;
- }
-
- return data;
-}
-
-void _SLarray_free_array_elements (SLang_Class_Type *cl, VOID_STAR s, unsigned int num)
-{
- unsigned int sizeof_type;
- void (*f) (unsigned char, VOID_STAR);
- char *p;
- unsigned char type;
-
- if ((cl->cl_class_type == SLANG_CLASS_TYPE_SCALAR)
- || (cl->cl_class_type == SLANG_CLASS_TYPE_VECTOR))
- return;
-
- f = cl->cl_destroy;
- sizeof_type = cl->cl_sizeof_type;
- type = cl->cl_data_type;
-
- p = (char *) s;
- while (num != 0)
- {
- if (NULL != *(VOID_STAR *)p)
- {
- (*f) (type, (VOID_STAR)p);
- *(VOID_STAR *) p = NULL;
- }
- p += sizeof_type;
- num--;
- }
-}
-
-static int destroy_element (SLang_Array_Type *at,
- int *dims,
- VOID_STAR data)
-{
- data = get_data_addr (at, dims);
- if (data == NULL)
- return -1;
-
- /* This function should only get called for arrays that have
- * pointer elements. Do not call the destroy method if the element
- * is NULL.
- */
- if (NULL != *(VOID_STAR *)data)
- {
- (*at->cl->cl_destroy) (at->data_type, data);
- *(VOID_STAR *) data = NULL;
- }
- return 0;
-}
-
-/* This function only gets called when a new array is created. Thus there
- * is no need to destroy the object first.
- */
-static int new_object_element (SLang_Array_Type *at,
- int *dims,
- VOID_STAR data)
-{
- data = get_data_addr (at, dims);
- if (data == NULL)
- return -1;
-
- return (*at->cl->cl_init_array_object) (at->data_type, data);
-}
-
-static int next_index (int *dims, int *max_dims, unsigned int num_dims)
-{
- while (num_dims)
- {
- int dims_i;
-
- num_dims--;
-
- dims_i = dims [num_dims] + 1;
- if (dims_i != (int) max_dims [num_dims])
- {
- dims [num_dims] = dims_i;
- return 0;
- }
- dims [num_dims] = 0;
- }
-
- return -1;
-}
-
-static int do_method_for_all_elements (SLang_Array_Type *at,
- int (*method)(SLang_Array_Type *,
- int *,
- VOID_STAR),
- VOID_STAR client_data)
-{
- int dims [SLARRAY_MAX_DIMS];
- int *max_dims;
- unsigned int num_dims;
-
- if (at->num_elements == 0)
- return 0;
-
- max_dims = at->dims;
- num_dims = at->num_dims;
-
- SLMEMSET((char *)dims, 0, sizeof(dims));
-
- do
- {
- if (-1 == (*method) (at, dims, client_data))
- return -1;
- }
- while (0 == next_index (dims, max_dims, num_dims));
-
- return 0;
-}
-
-void SLang_free_array (SLang_Array_Type *at)
-{
- VOID_STAR data;
- unsigned int flags;
-
- if (at == NULL) return;
-
- if (at->num_refs > 1)
- {
- at->num_refs -= 1;
- return;
- }
-
- data = at->data;
- flags = at->flags;
-
- if (flags & SLARR_DATA_VALUE_IS_INTRINSIC)
- return; /* not to be freed */
-
- if (flags & SLARR_DATA_VALUE_IS_POINTER)
- (void) do_method_for_all_elements (at, destroy_element, NULL);
-
- SLfree ((char *) data);
- SLfree ((char *) at);
-}
-
-SLang_Array_Type *
-SLang_create_array1 (unsigned char type, int read_only, VOID_STAR data,
- int *dims, unsigned int num_dims, int no_init)
-{
- SLang_Class_Type *cl;
- unsigned int i;
- SLang_Array_Type *at;
- unsigned int num_elements;
- unsigned int sizeof_type;
- unsigned int size;
-
- if (num_dims > SLARRAY_MAX_DIMS)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "%u dimensional arrays are not supported", num_dims);
- return NULL;
- }
-
- for (i = 0; i < num_dims; i++)
- {
- if (dims[i] < 0)
- {
- SLang_verror (SL_INVALID_PARM, "Size of array dim %u is less than 0", i);
- return NULL;
- }
- }
-
- cl = _SLclass_get_class (type);
-
- at = (SLang_Array_Type *) SLmalloc (sizeof(SLang_Array_Type));
- if (at == NULL)
- return NULL;
-
- SLMEMSET ((char*) at, 0, sizeof(SLang_Array_Type));
-
- at->data_type = type;
- at->cl = cl;
- at->num_dims = num_dims;
- at->num_refs = 1;
-
- if (read_only) at->flags = SLARR_DATA_VALUE_IS_READ_ONLY;
- switch (cl->cl_class_type)
- {
- case SLANG_CLASS_TYPE_VECTOR:
- case SLANG_CLASS_TYPE_SCALAR:
- break;
-
- default:
- at->flags |= SLARR_DATA_VALUE_IS_POINTER;
- }
-
- num_elements = 1;
- for (i = 0; i < num_dims; i++)
- {
- at->dims [i] = dims[i];
- num_elements = dims [i] * num_elements;
- }
-
- /* Now set the rest of the unused dimensions to 1. This makes it easier
- * when transposing arrays.
- */
- while (i < SLARRAY_MAX_DIMS)
- at->dims[i++] = 1;
-
- at->num_elements = num_elements;
- at->index_fun = linear_get_data_addr;
- at->sizeof_type = sizeof_type = cl->cl_sizeof_type;
-
- if (data != NULL)
- {
- at->data = data;
- return at;
- }
-
- size = num_elements * sizeof_type;
-
- if (size == 0) size = 1;
-
- if (NULL == (data = (VOID_STAR) SLmalloc (size)))
- {
- SLang_free_array (at);
- return NULL;
- }
-
- if (no_init == 0)
- SLMEMSET ((char *) data, 0, size);
-
- at->data = data;
-
- if ((cl->cl_init_array_object != NULL)
- && (-1 == do_method_for_all_elements (at, new_object_element, NULL)))
- {
- SLang_free_array (at);
- return NULL;
- }
- return at;
-}
-
-SLang_Array_Type *
-SLang_create_array (unsigned char type, int read_only, VOID_STAR data,
- int *dims, unsigned int num_dims)
-{
- return SLang_create_array1 (type, read_only, data, dims, num_dims, 0);
-}
-
-int SLang_add_intrinsic_array (char *name,
- unsigned char type,
- int read_only,
- VOID_STAR data,
- unsigned int num_dims, ...)
-{
- va_list ap;
- unsigned int i;
- int dims[SLARRAY_MAX_DIMS];
- SLang_Array_Type *at;
-
- if ((num_dims > SLARRAY_MAX_DIMS)
- || (name == NULL)
- || (data == NULL))
- {
- SLang_verror (SL_INVALID_PARM, "Unable to create intrinsic array");
- return -1;
- }
-
- va_start (ap, num_dims);
- for (i = 0; i < num_dims; i++)
- dims [i] = va_arg (ap, int);
- va_end (ap);
-
- at = SLang_create_array (type, read_only, data, dims, num_dims);
- if (at == NULL)
- return -1;
- at->flags |= SLARR_DATA_VALUE_IS_INTRINSIC;
-
- /* Note: The variable that refers to the intrinsic array is regarded as
- * read-only. That way, Array_Name = another_array; will fail.
- */
- if (-1 == SLadd_intrinsic_variable (name, (VOID_STAR) at, SLANG_ARRAY_TYPE, 1))
- {
- SLang_free_array (at);
- return -1;
- }
- return 0;
-}
-
-static int pop_array_indices (int *dims, unsigned int num_dims)
-{
- unsigned int n;
- int i;
-
- if (num_dims > SLARRAY_MAX_DIMS)
- {
- SLang_verror (SL_INVALID_PARM, "Array size not supported");
- return -1;
- }
-
- n = num_dims;
- while (n != 0)
- {
- n--;
- if (-1 == SLang_pop_integer (&i))
- return -1;
-
- dims[n] = i;
- }
-
- return 0;
-}
-
-int SLang_push_array (SLang_Array_Type *at, int free_flag)
-{
- if (at == NULL)
- return SLang_push_null ();
-
- at->num_refs += 1;
-
- if (0 == SLclass_push_ptr_obj (SLANG_ARRAY_TYPE, (VOID_STAR) at))
- {
- if (free_flag)
- SLang_free_array (at);
- return 0;
- }
-
- at->num_refs -= 1;
-
- if (free_flag) SLang_free_array (at);
- return -1;
-}
-
-/* This function gets called via expressions such as Double_Type[10, 20];
- */
-static int push_create_new_array (void)
-{
- unsigned int num_dims;
- SLang_Array_Type *at;
- unsigned char type;
- int dims [SLARRAY_MAX_DIMS];
- int (*anew) (unsigned char, unsigned int);
-
- num_dims = (SLang_Num_Function_Args - 1);
-
- if (-1 == _SLang_pop_datatype (&type))
- return -1;
-
- anew = (_SLclass_get_class (type))->cl_anew;
- if (anew != NULL)
- return (*anew) (type, num_dims);
-
- if (-1 == pop_array_indices (dims, num_dims))
- return -1;
-
- if (NULL == (at = SLang_create_array (type, 0, NULL, dims, num_dims)))
- return -1;
-
- return SLang_push_array (at, 1);
-}
-
-static int push_element_at_addr (SLang_Array_Type *at,
- VOID_STAR data, int allow_null)
-{
- SLang_Class_Type *cl;
-
- cl = at->cl;
- if ((at->flags & SLARR_DATA_VALUE_IS_POINTER)
- && (*(VOID_STAR *) data == NULL))
- {
- if (allow_null)
- return SLang_push_null ();
-
- SLang_verror (SL_VARIABLE_UNINITIALIZED,
- "%s array has unitialized element", cl->cl_name);
- return -1;
- }
-
- return (*cl->cl_apush)(at->data_type, data);
-}
-
-static int coerse_array_to_linear (SLang_Array_Type *at)
-{
- SLarray_Range_Array_Type *range;
- int *data;
- int xmin, dx;
- unsigned int i, imax;
-
- /* FIXME: Priority = low. This assumes that if an array is not linear, then
- * it is a range.
- */
- if (0 == (at->flags & SLARR_DATA_VALUE_IS_RANGE))
- return 0;
-
- range = (SLarray_Range_Array_Type *) at->data;
- xmin = range->first_index;
- dx = range->delta;
-
- imax = at->num_elements;
- data = (int *) SLmalloc ((imax + 1) * sizeof (int));
- if (data == NULL)
- return -1;
-
- for (i = 0; i < imax; i++)
- {
- data [i] = xmin;
- xmin += dx;
- }
-
- SLfree ((char *) range);
- at->data = (VOID_STAR) data;
- at->flags &= ~SLARR_DATA_VALUE_IS_RANGE;
- at->index_fun = linear_get_data_addr;
- return 0;
-}
-
-static void
-free_index_objects (SLang_Object_Type *index_objs, unsigned int num_indices)
-{
- unsigned int i;
- SLang_Object_Type *obj;
-
- for (i = 0; i < num_indices; i++)
- {
- obj = index_objs + i;
- if (obj->data_type != 0)
- SLang_free_object (obj);
- }
-}
-
-static int
-pop_indices (SLang_Object_Type *index_objs, unsigned int num_indices,
- int *is_index_array)
-{
- unsigned int i;
-
- SLMEMSET((char *) index_objs, 0, num_indices * sizeof (SLang_Object_Type));
-
- *is_index_array = 0;
-
- if (num_indices >= SLARRAY_MAX_DIMS)
- {
- SLang_verror (SL_INVALID_PARM, "too many indices for array");
- return -1;
- }
-
- i = num_indices;
- while (i != 0)
- {
- SLang_Object_Type *obj;
-
- i--;
- obj = index_objs + i;
- if (-1 == _SLang_pop_object_of_type (SLANG_INT_TYPE, obj, 1))
- goto return_error;
-
- if (obj->data_type == SLANG_ARRAY_TYPE)
- {
- SLang_Array_Type *at = obj->v.array_val;
-
- if (at->num_dims == 1)
- {
- if ((num_indices == 1)
- && (0 == (at->flags & SLARR_DATA_VALUE_IS_RANGE)))
- *is_index_array = 1;
- }
- else
- {
- SLang_verror (SL_INVALID_PARM, "expecting a 1-d index array");
- goto return_error;
- }
- }
- }
-
- return 0;
-
- return_error:
- free_index_objects (index_objs, num_indices);
- return -1;
-}
-
-/* Here ind_at is a linear 1-d array of indices */
-static int
-check_index_array_ranges (SLang_Array_Type *at, SLang_Array_Type *ind_at)
-{
- int *indices, *indices_max;
- unsigned int num_elements;
-
- num_elements = at->num_elements;
- indices = (int *) ind_at->data;
- indices_max = indices + ind_at->num_elements;
-
- while (indices < indices_max)
- {
- unsigned int d;
-
- d = (unsigned int) *indices++;
- if (d >= num_elements)
- {
- SLang_verror (SL_INVALID_PARM,
- "index-array is out of range");
- return -1;
- }
- }
- return 0;
-}
-
-static int
-transfer_n_elements (SLang_Array_Type *at, VOID_STAR dest_data, VOID_STAR src_data,
- unsigned int sizeof_type, unsigned int n, int is_ptr)
-{
- unsigned char data_type;
- SLang_Class_Type *cl;
-
- if (is_ptr == 0)
- {
- SLMEMCPY ((char *) dest_data, (char *)src_data, n * sizeof_type);
- return 0;
- }
-
- data_type = at->data_type;
- cl = at->cl;
-
- while (n != 0)
- {
- if (*(VOID_STAR *)dest_data != NULL)
- {
- (*cl->cl_destroy) (data_type, dest_data);
- *(VOID_STAR *) dest_data = NULL;
- }
-
- if (*(VOID_STAR *) src_data == NULL)
- *(VOID_STAR *) dest_data = NULL;
- else
- {
- if (-1 == (*cl->cl_acopy) (data_type, src_data, dest_data))
- /* No need to destroy anything */
- return -1;
- }
-
- src_data = (VOID_STAR) ((char *)src_data + sizeof_type);
- dest_data = (VOID_STAR) ((char *)dest_data + sizeof_type);
-
- n--;
- }
-
- return 0;
-}
-
-int
-_SLarray_aget_transfer_elem (SLang_Array_Type *at, int *indices,
- VOID_STAR new_data, unsigned int sizeof_type, int is_ptr)
-{
- VOID_STAR at_data;
-
- /* Since 1 element is being transferred, there is not need to coerse
- * the array to linear.
- */
- if (NULL == (at_data = get_data_addr (at, indices)))
- return -1;
-
- return transfer_n_elements (at, new_data, at_data, sizeof_type, 1, is_ptr);
-}
-
-/* Here the ind_at index-array is a 1-d array of indices. This function
- * creates a 1-d array of made up of values of 'at' at the locations
- * specified by the indices. The result is pushed.
- */
-static int
-aget_from_index_array (SLang_Array_Type *at,
- SLang_Array_Type *ind_at)
-{
- SLang_Array_Type *new_at;
- int *indices, *indices_max;
- unsigned char *new_data, *src_data;
- unsigned int sizeof_type;
- int is_ptr;
-
- if (-1 == coerse_array_to_linear (at))
- return -1;
-
- if (-1 == coerse_array_to_linear (ind_at))
- return -1;
-
- if (-1 == check_index_array_ranges (at, ind_at))
- return -1;
-
- if (NULL == (new_at = SLang_create_array (at->data_type, 0, NULL, ind_at->dims, 1)))
- return -1;
-
- /* Since the index array is linear, I can address it directly */
- indices = (int *) ind_at->data;
- indices_max = indices + ind_at->num_elements;
-
- src_data = (unsigned char *) at->data;
- new_data = (unsigned char *) new_at->data;
- sizeof_type = new_at->sizeof_type;
- is_ptr = (new_at->flags & SLARR_DATA_VALUE_IS_POINTER);
-
- while (indices < indices_max)
- {
- unsigned int offset;
-
- offset = sizeof_type * (unsigned int)*indices;
- if (-1 == transfer_n_elements (at, (VOID_STAR) new_data,
- (VOID_STAR) (src_data + offset),
- sizeof_type, 1, is_ptr))
- {
- SLang_free_array (new_at);
- return -1;
- }
-
- new_data += sizeof_type;
- indices++;
- }
-
- return SLang_push_array (new_at, 1);
-}
-
-/* This is extremely ugly. It is due to the fact that the index_objects
- * may contain ranges. This is a utility function for the aget/aput
- * routines
- */
-static int
-convert_nasty_index_objs (SLang_Array_Type *at,
- SLang_Object_Type *index_objs,
- unsigned int num_indices,
- int **index_data,
- int *range_buf, int *range_delta_buf,
- int *max_dims,
- unsigned int *num_elements,
- int *is_array, int is_dim_array[SLARRAY_MAX_DIMS])
-{
- unsigned int i, total_num_elements;
- SLang_Array_Type *ind_at;
-
- if (num_indices != at->num_dims)
- {
- SLang_verror (SL_INVALID_PARM, "Array requires %u indices", at->num_dims);
- return -1;
- }
-
- *is_array = 0;
- total_num_elements = 1;
- for (i = 0; i < num_indices; i++)
- {
- int max_index, min_index;
- SLang_Object_Type *obj;
- int at_dims_i;
-
- at_dims_i = at->dims[i];
- obj = index_objs + i;
- range_delta_buf [i] = 0;
-
- if (obj->data_type == SLANG_INT_TYPE)
- {
- range_buf [i] = min_index = max_index = obj->v.int_val;
- max_dims [i] = 1;
- index_data[i] = range_buf + i;
- is_dim_array[i] = 0;
- }
- else
- {
- *is_array = 1;
- is_dim_array[i] = 1;
- ind_at = obj->v.array_val;
-
- if (ind_at->flags & SLARR_DATA_VALUE_IS_RANGE)
- {
- SLarray_Range_Array_Type *r;
- int delta;
- int first_index, last_index;
-
- r = (SLarray_Range_Array_Type *) ind_at->data;
-
- /* In an array indexing context, range arrays have different
- * semantics. Consider a[[0:10]]. Clearly this means elements
- * 0-10 of a. But what does a[[0:-1]] mean? By itself,
- * [0:-1] is a null matrix []. But, it is useful in an
- * indexing context to allow -1 to refer to the last element
- * of the array. Similarly, [-3:-1] refers to the last 3
- * elements.
- *
- * However, [-1:-3] does not refer to any of the elements.
- */
- if ((first_index = r->first_index) < 0)
- {
- if (at_dims_i != 0)
- first_index = (at_dims_i + first_index) % at_dims_i;
- }
-
- if ((last_index = r->last_index) < 0)
- {
- if (at_dims_i != 0)
- last_index = (at_dims_i + last_index) % at_dims_i;
- }
-
- delta = r->delta;
-
- range_delta_buf [i] = delta;
- range_buf[i] = first_index;
-
- if (delta > 0)
- {
- if (first_index > last_index)
- max_dims[i] = min_index = max_index = 0;
- else
- {
- max_index = min_index = first_index;
- while (max_index + delta <= last_index)
- max_index += delta;
- max_dims [i] = 1 + (max_index - min_index) / delta;
- }
- }
- else
- {
- if (first_index < last_index)
- max_dims[i] = min_index = max_index = 0;
- else
- {
- min_index = max_index = first_index;
- while (min_index + delta >= last_index)
- min_index += delta;
- max_dims [i] = 1 + (max_index - min_index) / (-delta);
- }
- }
- }
- else
- {
- int *tmp, *tmp_max;
-
- if (0 == (max_dims[i] = ind_at->num_elements))
- {
- total_num_elements = 0;
- break;
- }
-
- tmp = (int *) ind_at->data;
- tmp_max = tmp + ind_at->num_elements;
- index_data [i] = tmp;
-
- min_index = max_index = *tmp;
- while (tmp < tmp_max)
- {
- if (max_index > *tmp)
- max_index = *tmp;
- if (min_index < *tmp)
- min_index = *tmp;
-
- tmp++;
- }
- }
- }
-
- if ((at_dims_i == 0) && (max_dims[i] == 0))
- {
- total_num_elements = 0;
- continue;
- }
-
- if (max_index < 0)
- max_index += at_dims_i;
- if (min_index < 0)
- min_index += at_dims_i;
-
- if ((min_index < 0) || (min_index >= at_dims_i)
- || (max_index < 0) || (max_index >= at_dims_i))
- {
- SLang_verror (SL_INVALID_PARM, "Array index %u ([%d:%d]) out of allowed range [0->%d]",
- i, min_index, max_index, at_dims_i);
- return -1;
- }
-
- total_num_elements = total_num_elements * max_dims[i];
- }
-
- *num_elements = total_num_elements;
- return 0;
-}
-
-/* This routine pushes a 1-d vector of values from 'at' indexed by
- * the objects 'index_objs'. These objects can either be integers or
- * 1-d integer arrays. The fact that the 1-d arrays can be ranges
- * makes this look ugly.
- */
-static int
-aget_from_indices (SLang_Array_Type *at,
- SLang_Object_Type *index_objs, unsigned int num_indices)
-{
- int *index_data [SLARRAY_MAX_DIMS];
- int range_buf [SLARRAY_MAX_DIMS];
- int range_delta_buf [SLARRAY_MAX_DIMS];
- int max_dims [SLARRAY_MAX_DIMS];
- unsigned int i, num_elements;
- SLang_Array_Type *new_at;
- int map_indices[SLARRAY_MAX_DIMS];
- int indices [SLARRAY_MAX_DIMS];
- unsigned int sizeof_type;
- int is_ptr, ret, is_array;
- char *new_data;
- SLang_Class_Type *cl;
- int is_dim_array[SLARRAY_MAX_DIMS];
-
- if (-1 == convert_nasty_index_objs (at, index_objs, num_indices,
- index_data, range_buf, range_delta_buf,
- max_dims, &num_elements, &is_array,
- is_dim_array))
- return -1;
-
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
- sizeof_type = at->sizeof_type;
-
- cl = _SLclass_get_class (at->data_type);
-
- if ((is_array == 0) && (num_elements == 1))
- {
- new_data = (char *)cl->cl_transfer_buf;
- memset (new_data, 0, sizeof_type);
- new_at = NULL;
- }
- else
- {
- int i_num_elements = (int)num_elements;
-
- new_at = SLang_create_array (at->data_type, 0, NULL, &i_num_elements, 1);
- if (NULL == new_at)
- return -1;
- if (num_elements == 0)
- return SLang_push_array (new_at, 1);
-
- new_data = (char *)new_at->data;
- }
-
- SLMEMSET((char *) map_indices, 0, sizeof(map_indices));
- do
- {
- for (i = 0; i < num_indices; i++)
- {
- int j;
-
- j = map_indices[i];
-
- if (0 != range_delta_buf[i])
- indices[i] = range_buf[i] + j * range_delta_buf[i];
- else
- indices[i] = index_data [i][j];
- }
-
- if (-1 == _SLarray_aget_transfer_elem (at, indices, (VOID_STAR)new_data, sizeof_type, is_ptr))
- {
- SLang_free_array (new_at);
- return -1;
- }
- new_data += sizeof_type;
- }
- while (0 == next_index (map_indices, max_dims, num_indices));
-
- if (new_at != NULL)
- {
- int num_dims = 0;
- /* Fixup dimensions on array */
- for (i = 0; i < num_indices; i++)
- {
- if (is_dim_array[i]) /* was: (max_dims[i] > 1) */
- {
- new_at->dims[num_dims] = max_dims[i];
- num_dims++;
- }
- }
-
- if (num_dims != 0) new_at->num_dims = num_dims;
- return SLang_push_array (new_at, 1);
- }
-
- /* Here new_data is a whole new copy, so free it after the push */
- new_data -= sizeof_type;
- if (is_ptr && (*(VOID_STAR *)new_data == NULL))
- ret = SLang_push_null ();
- else
- {
- ret = (*cl->cl_apush) (at->data_type, (VOID_STAR)new_data);
- (*cl->cl_adestroy) (at->data_type, (VOID_STAR)new_data);
- }
-
- return ret;
-}
-
-static int push_string_as_array (unsigned char *s, unsigned int len)
-{
- int ilen;
- SLang_Array_Type *at;
-
- ilen = (int) len;
-
- at = SLang_create_array (SLANG_UCHAR_TYPE, 0, NULL, &ilen, 1);
- if (at == NULL)
- return -1;
-
- memcpy ((char *)at->data, (char *)s, len);
- return SLang_push_array (at, 1);
-}
-
-static int pop_array_as_string (char **sp)
-{
- SLang_Array_Type *at;
- int ret;
-
- *sp = NULL;
-
- if (-1 == SLang_pop_array_of_type (&at, SLANG_UCHAR_TYPE))
- return -1;
-
- ret = 0;
-
- if (NULL == (*sp = SLang_create_nslstring ((char *) at->data, at->num_elements)))
- ret = -1;
-
- SLang_free_array (at);
- return ret;
-}
-
-static int pop_array_as_bstring (SLang_BString_Type **bs)
-{
- SLang_Array_Type *at;
- int ret;
-
- *bs = NULL;
-
- if (-1 == SLang_pop_array_of_type (&at, SLANG_UCHAR_TYPE))
- return -1;
-
- ret = 0;
-
- if (NULL == (*bs = SLbstring_create ((unsigned char *) at->data, at->num_elements)))
- ret = -1;
-
- SLang_free_array (at);
- return ret;
-}
-
-static int aget_from_array (unsigned int num_indices)
-{
- SLang_Array_Type *at;
- SLang_Object_Type index_objs [SLARRAY_MAX_DIMS];
- int ret;
- int is_index_array;
- unsigned int i;
-
- if (num_indices > SLARRAY_MAX_DIMS)
- {
- SLang_verror (SL_INVALID_PARM, "Number of dims must be less than %d", SLARRAY_MAX_DIMS);
- return -1;
- }
-
- if (-1 == pop_array (&at, 1))
- return -1;
-
- if (-1 == pop_indices (index_objs, num_indices, &is_index_array))
- {
- SLang_free_array (at);
- return -1;
- }
-
- if (is_index_array == 0)
- ret = aget_from_indices (at, index_objs, num_indices);
- else
- ret = aget_from_index_array (at, index_objs[0].v.array_val);
-
- SLang_free_array (at);
- for (i = 0; i < num_indices; i++)
- SLang_free_object (index_objs + i);
-
- return ret;
-}
-
-static int push_string_element (unsigned char type, unsigned char *s, unsigned int len)
-{
- int i;
-
- if (SLang_peek_at_stack () == SLANG_ARRAY_TYPE)
- {
- char *str;
-
- /* The indices are array values. So, do this: */
- if (-1 == push_string_as_array (s, len))
- return -1;
-
- if (-1 == aget_from_array (1))
- return -1;
-
- if (type == SLANG_BSTRING_TYPE)
- {
- SLang_BString_Type *bs;
- int ret;
-
- if (-1 == pop_array_as_bstring (&bs))
- return -1;
-
- ret = SLang_push_bstring (bs);
- SLbstring_free (bs);
- return ret;
- }
-
- if (-1 == pop_array_as_string (&str))
- return -1;
- return _SLang_push_slstring (str); /* frees s upon error */
- }
-
- if (-1 == SLang_pop_integer (&i))
- return -1;
-
- if (i < 0) i = i + (int)len;
- if ((unsigned int) i > len)
- i = len; /* get \0 character --- bstrings include it as well */
-
- i = s[(unsigned int) i];
-
- return SLang_push_integer (i);
-}
-
-/* ARRAY[i, j, k] generates code: __args i j ...k ARRAY __aput/__aget
- * Here i, j, ... k may be a mixture of integers and 1-d arrays, or
- * a single 2-d array of indices. The 2-d index array is generated by the
- * 'where' function.
- *
- * If ARRAY is of type DataType, then this function will create an array of
- * the appropriate type. In that case, the indices i, j, ..., k must be
- * integers.
- */
-int _SLarray_aget (void)
-{
- unsigned int num_indices;
- int type;
- int (*aget_fun) (unsigned char, unsigned int);
-
- num_indices = (SLang_Num_Function_Args - 1);
-
- type = SLang_peek_at_stack ();
- switch (type)
- {
- case -1:
- return -1; /* stack underflow */
-
- case SLANG_DATATYPE_TYPE:
- return push_create_new_array ();
-
- case SLANG_BSTRING_TYPE:
- if (1 == num_indices)
- {
- SLang_BString_Type *bs;
- int ret;
- unsigned int len;
- unsigned char *s;
-
- if (-1 == SLang_pop_bstring (&bs))
- return -1;
-
- if (NULL == (s = SLbstring_get_pointer (bs, &len)))
- ret = -1;
- else
- ret = push_string_element (type, s, len);
-
- SLbstring_free (bs);
- return ret;
- }
- break;
-
- case SLANG_STRING_TYPE:
- if (1 == num_indices)
- {
- char *s;
- int ret;
-
- if (-1 == SLang_pop_slstring (&s))
- return -1;
-
- ret = push_string_element (type, (unsigned char *)s, strlen (s));
- SLang_free_slstring (s);
- return ret;
- }
- break;
-
- case SLANG_ARRAY_TYPE:
- break;
-
- default:
- aget_fun = _SLclass_get_class (type)->cl_aget;
- if (NULL != aget_fun)
- return (*aget_fun) (type, num_indices);
- }
-
- return aget_from_array (num_indices);
-}
-
-int
-_SLarray_aput_transfer_elem (SLang_Array_Type *at, int *indices,
- VOID_STAR data_to_put, unsigned int sizeof_type, int is_ptr)
-{
- VOID_STAR at_data;
-
- /* Since 1 element is being transferred, there is no need to coerse
- * the array to linear.
- */
- if (NULL == (at_data = get_data_addr (at, indices)))
- return -1;
-
- return transfer_n_elements (at, at_data, data_to_put, sizeof_type, 1, is_ptr);
-}
-
-static int
-aput_get_array_to_put (SLang_Class_Type *cl, unsigned int num_elements, int allow_array,
- SLang_Array_Type **at_ptr, char **data_to_put, unsigned int *data_increment)
-{
- unsigned char data_type;
- SLang_Array_Type *at;
-
- *at_ptr = NULL;
-
- data_type = cl->cl_data_type;
- if (-1 == SLclass_typecast (data_type, 1, allow_array))
- return -1;
-
- if ((data_type != SLANG_ARRAY_TYPE)
- && (data_type != SLANG_ANY_TYPE)
- && (SLANG_ARRAY_TYPE == SLang_peek_at_stack ()))
- {
- if (-1 == SLang_pop_array (&at, 0))
- return -1;
-
- if ((at->num_elements != num_elements)
-#if 0
- || (at->num_dims != 1)
-#endif
- )
- {
- SLang_verror (SL_TYPE_MISMATCH, "Array size is inappropriate for use with index-array");
- SLang_free_array (at);
- return -1;
- }
-
- *data_to_put = (char *) at->data;
- *data_increment = at->sizeof_type;
- *at_ptr = at;
- return 0;
- }
-
- *data_increment = 0;
- *data_to_put = (char *) cl->cl_transfer_buf;
-
- if (-1 == (*cl->cl_apop)(data_type, (VOID_STAR) *data_to_put))
- return -1;
-
- return 0;
-}
-
-static int
-aput_from_indices (SLang_Array_Type *at,
- SLang_Object_Type *index_objs, unsigned int num_indices)
-{
- int *index_data [SLARRAY_MAX_DIMS];
- int range_buf [SLARRAY_MAX_DIMS];
- int range_delta_buf [SLARRAY_MAX_DIMS];
- int max_dims [SLARRAY_MAX_DIMS];
- unsigned int i, num_elements;
- SLang_Array_Type *bt;
- int map_indices[SLARRAY_MAX_DIMS];
- int indices [SLARRAY_MAX_DIMS];
- unsigned int sizeof_type;
- int is_ptr, is_array, ret;
- char *data_to_put;
- unsigned int data_increment;
- SLang_Class_Type *cl;
- int is_dim_array [SLARRAY_MAX_DIMS];
-
- if (-1 == convert_nasty_index_objs (at, index_objs, num_indices,
- index_data, range_buf, range_delta_buf,
- max_dims, &num_elements, &is_array,
- is_dim_array))
- return -1;
-
- cl = at->cl;
-
- if (-1 == aput_get_array_to_put (cl, num_elements, is_array,
- &bt, &data_to_put, &data_increment))
- return -1;
-
- sizeof_type = at->sizeof_type;
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
-
- ret = -1;
-
- SLMEMSET((char *) map_indices, 0, sizeof(map_indices));
- if (num_elements) do
- {
- for (i = 0; i < num_indices; i++)
- {
- int j;
-
- j = map_indices[i];
-
- if (0 != range_delta_buf[i])
- indices[i] = range_buf[i] + j * range_delta_buf[i];
- else
- indices[i] = index_data [i][j];
- }
-
- if (-1 == _SLarray_aput_transfer_elem (at, indices, (VOID_STAR)data_to_put, sizeof_type, is_ptr))
- goto return_error;
-
- data_to_put += data_increment;
- }
- while (0 == next_index (map_indices, max_dims, num_indices));
-
- ret = 0;
-
- /* drop */
-
- return_error:
- if (bt == NULL)
- {
- if (is_ptr)
- (*cl->cl_destroy) (cl->cl_data_type, (VOID_STAR) data_to_put);
- }
- else SLang_free_array (bt);
-
- return ret;
-}
-
-static int
-aput_from_index_array (SLang_Array_Type *at, SLang_Array_Type *ind_at)
-{
- int *indices, *indices_max;
- unsigned int sizeof_type;
- char *data_to_put, *dest_data;
- unsigned int data_increment;
- int is_ptr;
- SLang_Array_Type *bt;
- SLang_Class_Type *cl;
- int ret;
-
- if (-1 == coerse_array_to_linear (at))
- return -1;
-
- if (-1 == coerse_array_to_linear (ind_at))
- return -1;
-
- if (-1 == check_index_array_ranges (at, ind_at))
- return -1;
-
- sizeof_type = at->sizeof_type;
-
- cl = at->cl;
-
- /* Note that if bt is returned as non NULL, then the array is a linear
- * one.
- */
- if (-1 == aput_get_array_to_put (cl, ind_at->num_elements, 1,
- &bt, &data_to_put, &data_increment))
- return -1;
-
- /* Since the index array is linear, I can address it directly */
- indices = (int *) ind_at->data;
- indices_max = indices + ind_at->num_elements;
-
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
- dest_data = (char *) at->data;
-
- ret = -1;
- while (indices < indices_max)
- {
- unsigned int offset;
-
- offset = sizeof_type * (unsigned int)*indices;
-
- if (-1 == transfer_n_elements (at, (VOID_STAR) (dest_data + offset),
- (VOID_STAR) data_to_put, sizeof_type, 1,
- is_ptr))
- goto return_error;
-
- indices++;
- data_to_put += data_increment;
- }
-
- ret = 0;
- /* Drop */
-
- return_error:
-
- if (bt == NULL)
- {
- if (is_ptr)
- (*cl->cl_destroy) (cl->cl_data_type, (VOID_STAR)data_to_put);
- }
- else SLang_free_array (bt);
-
- return ret;
-}
-
-/* ARRAY[i, j, k] = generates code: __args i j k ARRAY __aput
- */
-int _SLarray_aput (void)
-{
- unsigned int num_indices;
- SLang_Array_Type *at;
- SLang_Object_Type index_objs [SLARRAY_MAX_DIMS];
- int ret;
- int is_index_array;
- int (*aput_fun) (unsigned char, unsigned int);
- int type;
-
- ret = -1;
- num_indices = (SLang_Num_Function_Args - 1);
-
- type = SLang_peek_at_stack ();
- switch (type)
- {
- case -1:
- return -1;
-
- case SLANG_ARRAY_TYPE:
- break;
-
- default:
- if (NULL != (aput_fun = _SLclass_get_class (type)->cl_aput))
- return (*aput_fun) (type, num_indices);
- break;
- }
-
- if (-1 == SLang_pop_array (&at, 0))
- return -1;
-
- if (at->flags & SLARR_DATA_VALUE_IS_READ_ONLY)
- {
- SLang_verror (SL_READONLY_ERROR, "%s Array is read-only",
- SLclass_get_datatype_name (at->data_type));
- SLang_free_array (at);
- return -1;
- }
-
- if (-1 == pop_indices (index_objs, num_indices, &is_index_array))
- {
- SLang_free_array (at);
- return -1;
- }
-
- if (is_index_array == 0)
- ret = aput_from_indices (at, index_objs, num_indices);
- else
- ret = aput_from_index_array (at, index_objs[0].v.array_val);
-
- SLang_free_array (at);
- free_index_objects (index_objs, num_indices);
- return ret;
-}
-
-/* This is for 1-d matrices only. It is used by the sort function */
-static int push_element_at_index (SLang_Array_Type *at, int indx)
-{
- VOID_STAR data;
-
- if (NULL == (data = get_data_addr (at, &indx)))
- return -1;
-
- return push_element_at_addr (at, (VOID_STAR) data, 1);
-}
-
-static SLang_Name_Type *Sort_Function;
-static SLang_Array_Type *Sort_Array;
-
-static int sort_cmp_fun (int *a, int *b)
-{
- int cmp;
-
- if (SLang_Error
- || (-1 == push_element_at_index (Sort_Array, *a))
- || (-1 == push_element_at_index (Sort_Array, *b))
- || (-1 == SLexecute_function (Sort_Function))
- || (-1 == SLang_pop_integer (&cmp)))
- {
- /* DO not allow qsort to loop forever. Return something meaningful */
- if (*a > *b) return 1;
- if (*a < *b) return -1;
- return 0;
- }
-
- return cmp;
-}
-
-static int builtin_sort_cmp_fun (int *a, int *b)
-{
- VOID_STAR a_data;
- VOID_STAR b_data;
- SLang_Class_Type *cl;
-
- cl = Sort_Array->cl;
-
- if ((SLang_Error == 0)
- && (NULL != (a_data = get_data_addr (Sort_Array, a)))
- && (NULL != (b_data = get_data_addr (Sort_Array, b))))
- {
- int cmp;
-
- if ((Sort_Array->flags & SLARR_DATA_VALUE_IS_POINTER)
- && ((*(VOID_STAR *) a_data == NULL) || (*(VOID_STAR *) a_data == NULL)))
- {
- SLang_verror (SL_VARIABLE_UNINITIALIZED,
- "%s array has unitialized element", cl->cl_name);
- }
- else if (0 == (*cl->cl_cmp)(Sort_Array->data_type, a_data, b_data, &cmp))
- return cmp;
- }
-
-
- if (*a > *b) return 1;
- if (*a == *b) return 0;
- return -1;
-}
-
-static void sort_array_internal (SLang_Array_Type *at_str,
- SLang_Name_Type *entry,
- int (*sort_fun)(int *, int *))
-{
- SLang_Array_Type *ind_at;
- /* This is a silly hack to make up for braindead compilers and the lack of
- * uniformity in prototypes for qsort.
- */
- void (*qsort_fun) (char *, unsigned int, int, int (*)(int *, int *));
- int *indx;
- int i, n;
- int dims[1];
-
- if (Sort_Array != NULL)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "array_sort is not recursive");
- return;
- }
-
- n = at_str->num_elements;
-
- if (at_str->num_dims != 1)
- {
- SLang_verror (SL_INVALID_PARM, "sort is restricted to 1 dim arrays");
- return;
- }
-
- dims [0] = n;
-
- if (NULL == (ind_at = SLang_create_array (SLANG_INT_TYPE, 0, NULL, dims, 1)))
- return;
-
- indx = (int *) ind_at->data;
- for (i = 0; i < n; i++) indx[i] = i;
-
- if (n > 1)
- {
- qsort_fun = (void (*)(char *, unsigned int, int, int (*)(int *,
- int *)))
- qsort;
-
- Sort_Array = at_str;
- Sort_Function = entry;
- (*qsort_fun) ((char *) indx, n, sizeof (int), sort_fun);
- }
-
- Sort_Array = NULL;
- (void) SLang_push_array (ind_at, 1);
-}
-
-static void sort_array (void)
-{
- SLang_Name_Type *entry;
- SLang_Array_Type *at;
- int (*sort_fun) (int *, int *);
-
- if (SLang_Num_Function_Args != 1)
- {
- sort_fun = sort_cmp_fun;
-
- if (NULL == (entry = SLang_pop_function ()))
- return;
-
- if (-1 == SLang_pop_array (&at, 1))
- return;
- }
- else
- {
- sort_fun = builtin_sort_cmp_fun;
- if (-1 == SLang_pop_array (&at, 1))
- return;
- if (at->cl->cl_cmp == NULL)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "%s does not have a predefined sorting method",
- at->cl->cl_name);
- SLang_free_array (at);
- return;
- }
- entry = NULL;
- }
-
- sort_array_internal (at, entry, sort_fun);
- SLang_free_array (at);
- SLang_free_function (entry);
-}
-
-static void bstring_to_array (SLang_BString_Type *bs)
-{
- unsigned char *s;
- unsigned int len;
-
- if (NULL == (s = SLbstring_get_pointer (bs, &len)))
- (void) SLang_push_null ();
- else
- (void) push_string_as_array (s, len);
-}
-
-static void array_to_bstring (SLang_Array_Type *at)
-{
- unsigned int nbytes;
- SLang_BString_Type *bs;
-
- nbytes = at->num_elements * at->sizeof_type;
- bs = SLbstring_create ((unsigned char *)at->data, nbytes);
- (void) SLang_push_bstring (bs);
- SLbstring_free (bs);
-}
-
-static void init_char_array (void)
-{
- SLang_Array_Type *at;
- char *s;
- unsigned int n, ndim;
-
- if (SLang_pop_slstring (&s)) return;
-
- if (-1 == SLang_pop_array (&at, 0))
- goto free_and_return;
-
- if (at->data_type != SLANG_CHAR_TYPE)
- {
- SLang_doerror("Operation requires character array");
- goto free_and_return;
- }
-
- n = strlen (s);
- ndim = at->num_elements;
- if (n > ndim)
- {
- SLang_doerror("String too big to init array");
- goto free_and_return;
- }
-
- strncpy((char *) at->data, s, ndim);
- /* drop */
-
- free_and_return:
- SLang_free_array (at);
- SLang_free_slstring (s);
-}
-
-static void array_info (void)
-{
- SLang_Array_Type *at, *bt;
- int num_dims;
-
- if (-1 == pop_array (&at, 1))
- return;
-
- num_dims = (int)at->num_dims;
-
- if (NULL != (bt = SLang_create_array (SLANG_INT_TYPE, 0, NULL, &num_dims, 1)))
- {
- int *bdata;
- int i;
- int *a_dims;
-
- a_dims = at->dims;
- bdata = (int *) bt->data;
- for (i = 0; i < num_dims; i++) bdata [i] = a_dims [i];
-
- if (0 == SLang_push_array (bt, 1))
- {
- (void) SLang_push_integer ((int) at->num_dims);
- (void) _SLang_push_datatype (at->data_type);
- }
- }
-
- SLang_free_array (at);
-}
-
-static VOID_STAR range_get_data_addr (SLang_Array_Type *at, int *dims)
-{
- static int value;
- SLarray_Range_Array_Type *r;
- int d;
-
- d = *dims;
- r = (SLarray_Range_Array_Type *)at->data;
-
- if (d < 0)
- d += at->dims[0];
-
- value = r->first_index + d * r->delta;
- return (VOID_STAR) &value;
-}
-
-static SLang_Array_Type *inline_implicit_int_array (int *xminptr, int *xmaxptr, int *dxptr)
-{
- int delta;
- SLang_Array_Type *at;
- int dims, idims;
- SLarray_Range_Array_Type *data;
-
- if (dxptr == NULL) delta = 1;
- else delta = *dxptr;
-
- if (delta == 0)
- {
- SLang_verror (SL_INVALID_PARM, "range-array increment must be non-zero");
- return NULL;
- }
-
- data = (SLarray_Range_Array_Type *) SLmalloc (sizeof (SLarray_Range_Array_Type));
- if (data == NULL)
- return NULL;
-
- SLMEMSET((char *) data, 0, sizeof (SLarray_Range_Array_Type));
- data->delta = delta;
- dims = 0;
-
- if (xminptr != NULL)
- data->first_index = *xminptr;
- else
- data->first_index = 0;
-
- if (xmaxptr != NULL)
- data->last_index = *xmaxptr;
- else
- data->last_index = -1;
-
-/* if ((xminptr != NULL) && (xmaxptr != NULL))
- { */
- idims = 1 + (data->last_index - data->first_index) / delta;
- if (idims > 0)
- dims = idims;
- /* } */
-
- if (NULL == (at = SLang_create_array (SLANG_INT_TYPE, 0, (VOID_STAR) data, &dims, 1)))
- return NULL;
-
- at->index_fun = range_get_data_addr;
- at->flags |= SLARR_DATA_VALUE_IS_RANGE;
-
- return at;
-}
-
-#if SLANG_HAS_FLOAT
-static SLang_Array_Type *inline_implicit_floating_array (unsigned char type,
- double *xminptr, double *xmaxptr, double *dxptr)
-{
- int n, i;
- SLang_Array_Type *at;
- int dims;
- double xmin, xmax, dx;
-
- if ((xminptr == NULL) || (xmaxptr == NULL))
- {
- SLang_verror (SL_INVALID_PARM, "range-array has unknown size");
- return NULL;
- }
- xmin = *xminptr;
- xmax = *xmaxptr;
- if (dxptr == NULL) dx = 1.0;
- else dx = *dxptr;
-
- if (dx == 0.0)
- {
- SLang_doerror ("range-array increment must be non-zero");
- return NULL;
- }
-
- /* I have convinced myself that it is better to use semi-open intervals
- * because of less ambiguities. So, [a:b:c] will represent the set of
- * values a, a + c, a + 2c ... a + nc
- * such that a + nc < b. That is, b lies outside the interval.
- */
-
- /* Allow for roundoff by adding 0.5 before truncation */
- n = (int)(1.5 + ((xmax - xmin) / dx));
- if (n <= 0)
- n = 0;
- else
- {
- double last = xmin + (n-1) * dx;
-
- if (dx > 0.0)
- {
- if (last >= xmax)
- n -= 1;
- }
- else if (last <= xmax)
- n -= 1;
- }
-
- dims = n;
- if (NULL == (at = SLang_create_array1 (type, 0, NULL, &dims, 1, 1)))
- return NULL;
-
- if (type == SLANG_DOUBLE_TYPE)
- {
- double *ptr;
-
- ptr = (double *) at->data;
-
- for (i = 0; i < n; i++)
- ptr[i] = xmin + i * dx;
- }
- else
- {
- float *ptr;
-
- ptr = (float *) at->data;
-
- for (i = 0; i < n; i++)
- ptr[i] = (float) (xmin + i * dx);
- }
- return at;
-}
-#endif
-
-/* FIXME: Priority=medium
- * This needs to be updated to work with all integer types.
- */
-int _SLarray_inline_implicit_array (void)
-{
- int int_vals[3];
-#if SLANG_HAS_FLOAT
- double double_vals[3];
-#endif
- int has_vals[3];
- unsigned int i, count;
- SLang_Array_Type *at;
- int precedence;
- unsigned char type;
- int is_int;
-
- count = SLang_Num_Function_Args;
-
- if (count == 2)
- has_vals [2] = 0;
- else if (count != 3)
- {
- SLang_doerror ("wrong number of arguments to __implicit_inline_array");
- return -1;
- }
-
-#if SLANG_HAS_FLOAT
- is_int = 1;
-#endif
-
- type = 0;
- precedence = 0;
-
- i = count;
- while (i--)
- {
- int this_type, this_precedence;
-
- if (-1 == (this_type = SLang_peek_at_stack ()))
- return -1;
-
- this_precedence = _SLarith_get_precedence ((unsigned char) this_type);
- if (precedence < this_precedence)
- {
- type = (unsigned char) this_type;
- precedence = this_precedence;
- }
-
- has_vals [i] = 1;
-
- switch (this_type)
- {
- case SLANG_NULL_TYPE:
- has_vals[i] = 0;
- (void) SLdo_pop ();
- break;
-
-#if SLANG_HAS_FLOAT
- case SLANG_DOUBLE_TYPE:
- case SLANG_FLOAT_TYPE:
- if (-1 == SLang_pop_double (double_vals + i, NULL, NULL))
- return -1;
- is_int = 0;
- break;
-#endif
- default:
- if (-1 == SLang_pop_integer (int_vals + i))
- return -1;
- double_vals[i] = (double) int_vals[i];
- }
- }
-
-#if SLANG_HAS_FLOAT
- if (is_int == 0)
- at = inline_implicit_floating_array (type,
- (has_vals[0] ? &double_vals[0] : NULL),
- (has_vals[1] ? &double_vals[1] : NULL),
- (has_vals[2] ? &double_vals[2] : NULL));
- else
-#endif
- at = inline_implicit_int_array ((has_vals[0] ? &int_vals[0] : NULL),
- (has_vals[1] ? &int_vals[1] : NULL),
- (has_vals[2] ? &int_vals[2] : NULL));
-
- if (at == NULL)
- return -1;
-
- return SLang_push_array (at, 1);
-}
-
-int _SLarray_wildcard_array (void)
-{
- SLang_Array_Type *at;
-
- if (NULL == (at = inline_implicit_int_array (NULL, NULL, NULL)))
- return -1;
-
- return SLang_push_array (at, 1);
-}
-
-static SLang_Array_Type *concat_arrays (unsigned int count)
-{
- SLang_Array_Type **arrays;
- SLang_Array_Type *at, *bt;
- unsigned int i;
- int num_elements;
- unsigned char type;
- char *src_data, *dest_data;
- int is_ptr;
- unsigned int sizeof_type;
- int max_dims, min_dims, max_rows, min_rows;
-
- arrays = (SLang_Array_Type **)SLmalloc (count * sizeof (SLang_Array_Type *));
- if (arrays == NULL)
- {
- SLdo_pop_n (count);
- return NULL;
- }
- SLMEMSET((char *) arrays, 0, count * sizeof(SLang_Array_Type *));
-
- at = NULL;
-
- num_elements = 0;
- i = count;
-
- while (i != 0)
- {
- i--;
-
- if (-1 == SLang_pop_array (&bt, 1))
- goto free_and_return;
-
- arrays[i] = bt;
- num_elements += (int)bt->num_elements;
- }
-
- type = arrays[0]->data_type;
- max_dims = min_dims = arrays[0]->num_dims;
- min_rows = max_rows = arrays[0]->dims[0];
-
- for (i = 1; i < count; i++)
- {
- SLang_Array_Type *ct;
- int num;
-
- bt = arrays[i];
-
- num = bt->num_dims;
- if (num > max_dims) max_dims = num;
- if (num < min_dims) min_dims = num;
-
- num = bt->dims[0];
- if (num > max_rows) max_rows = num;
- if (num < min_rows) min_rows = num;
-
- if (type == bt->data_type)
- continue;
-
- if (1 != _SLarray_typecast (bt->data_type, (VOID_STAR) &bt, 1,
- type, (VOID_STAR) &ct, 1))
- goto free_and_return;
-
- SLang_free_array (bt);
- arrays [i] = ct;
- }
-
- if (NULL == (at = SLang_create_array (type, 0, NULL, &num_elements, 1)))
- goto free_and_return;
-
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
- sizeof_type = at->sizeof_type;
- dest_data = (char *) at->data;
-
- for (i = 0; i < count; i++)
- {
- bt = arrays[i];
-
- src_data = (char *) bt->data;
- num_elements = bt->num_elements;
-
- if (-1 == transfer_n_elements (bt, (VOID_STAR)dest_data, (VOID_STAR)src_data, sizeof_type,
- num_elements, is_ptr))
- {
- SLang_free_array (at);
- at = NULL;
- goto free_and_return;
- }
-
- dest_data += num_elements * sizeof_type;
- }
-
- /* If the arrays are all 1-d, and all the same size, then reshape to a
- * 2-d array. This will allow us to do, e.g.
- * a = [[1,2], [3,4]]
- * to specifiy a 2-d.
- * Someday I will generalize this.
- */
- if ((max_dims == min_dims) && (max_dims == 1) && (min_rows == max_rows))
- {
- at->num_dims = 2;
- at->dims[0] = count;
- at->dims[1] = min_rows;
- }
-
- free_and_return:
-
- for (i = 0; i < count; i++)
- SLang_free_array (arrays[i]);
- SLfree ((char *) arrays);
-
- return at;
-}
-
-int _SLarray_inline_array (void)
-{
- SLang_Object_Type *obj;
- unsigned char type, this_type;
- unsigned int count;
- SLang_Array_Type *at;
-
- obj = _SLStack_Pointer;
-
- count = SLang_Num_Function_Args;
- type = 0;
-
- while ((count > 0) && (--obj >= _SLRun_Stack))
- {
- this_type = obj->data_type;
-
- if (type == 0)
- type = this_type;
-
- if ((type == this_type) || (type == SLANG_ARRAY_TYPE))
- {
- count--;
- continue;
- }
-
- switch (this_type)
- {
- case SLANG_ARRAY_TYPE:
- type = SLANG_ARRAY_TYPE;
- break;
-
- case SLANG_INT_TYPE:
- switch (type)
- {
-#if SLANG_HAS_FLOAT
- case SLANG_DOUBLE_TYPE:
- break;
-#endif
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- break;
-#endif
- default:
- goto type_mismatch;
- }
- break;
-#if SLANG_HAS_FLOAT
- case SLANG_DOUBLE_TYPE:
- switch (type)
- {
- case SLANG_INT_TYPE:
- type = SLANG_DOUBLE_TYPE;
- break;
-# if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- break;
-# endif
- default:
- goto type_mismatch;
- }
- break;
-#endif
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- switch (type)
- {
- case SLANG_INT_TYPE:
- case SLANG_DOUBLE_TYPE:
- type = SLANG_COMPLEX_TYPE;
- break;
-
- default:
- goto type_mismatch;
- }
- break;
-#endif
- default:
- type_mismatch:
- _SLclass_type_mismatch_error (type, this_type);
- return -1;
- }
- count--;
- }
-
- if (count != 0)
- {
- SLang_Error = SL_STACK_UNDERFLOW;
- return -1;
- }
-
- count = SLang_Num_Function_Args;
-
- if (count == 0)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "Empty inline-arrays not supported");
- return -1;
- }
-
- if (type == SLANG_ARRAY_TYPE)
- {
- if (NULL == (at = concat_arrays (count)))
- return -1;
- }
- else
- {
- SLang_Object_Type index_obj;
- int icount = (int) count;
-
- if (NULL == (at = SLang_create_array (type, 0, NULL, &icount, 1)))
- return -1;
-
- index_obj.data_type = SLANG_INT_TYPE;
- while (count != 0)
- {
- count--;
- index_obj.v.int_val = (int) count;
- if (-1 == aput_from_indices (at, &index_obj, 1))
- {
- SLang_free_array (at);
- SLdo_pop_n (count);
- return -1;
- }
- }
- }
-
- return SLang_push_array (at, 1);
-}
-
-static int array_binary_op_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- (void) op;
- (void) a;
- (void) b;
- *c = SLANG_ARRAY_TYPE;
- return 1;
-}
-
-static int array_binary_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- SLang_Array_Type *at, *bt, *ct;
- unsigned int i, num_dims;
- int (*binary_fun) (int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR);
- SLang_Class_Type *a_cl, *b_cl, *c_cl;
- int no_init;
-
- if (a_type == SLANG_ARRAY_TYPE)
- {
- if (na != 1)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "Binary operation on multiple arrays not implemented");
- return -1;
- }
-
- at = *(SLang_Array_Type **) ap;
- if (-1 == coerse_array_to_linear (at))
- return -1;
- ap = at->data;
- a_type = at->data_type;
- na = at->num_elements;
- }
- else
- {
- at = NULL;
- }
-
- if (b_type == SLANG_ARRAY_TYPE)
- {
- if (nb != 1)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "Binary operation on multiple arrays not implemented");
- return -1;
- }
-
- bt = *(SLang_Array_Type **) bp;
- if (-1 == coerse_array_to_linear (bt))
- return -1;
- bp = bt->data;
- b_type = bt->data_type;
- nb = bt->num_elements;
- }
- else
- {
- bt = NULL;
- }
-
- if ((at != NULL) && (bt != NULL))
- {
- num_dims = at->num_dims;
-
- if (num_dims != bt->num_dims)
- {
- SLang_verror (SL_TYPE_MISMATCH, "Arrays must have same dim for binary operation");
- return -1;
- }
-
- for (i = 0; i < num_dims; i++)
- {
- if (at->dims[i] != bt->dims[i])
- {
- SLang_verror (SL_TYPE_MISMATCH, "Arrays must be the same for binary operation");
- return -1;
- }
- }
- }
-
- a_cl = _SLclass_get_class (a_type);
- b_cl = _SLclass_get_class (b_type);
-
- if (NULL == (binary_fun = _SLclass_get_binary_fun (op, a_cl, b_cl, &c_cl, 1)))
- return -1;
-
- no_init = ((c_cl->cl_class_type == SLANG_CLASS_TYPE_SCALAR)
- || (c_cl->cl_class_type == SLANG_CLASS_TYPE_VECTOR));
-
- ct = NULL;
-#if _SLANG_USE_TMP_OPTIMIZATION
- /* If we are dealing with scalar (or vector) objects, and if the object
- * appears to be owned by the stack, then use it instead of creating a
- * new version. This can happen with code such as:
- * @ x = [1,2,3,4];
- * @ x = __tmp(x) + 1;
- */
- if (no_init)
- {
- if ((at != NULL)
- && (at->num_refs == 1)
- && (at->data_type == c_cl->cl_data_type))
- {
- ct = at;
- ct->num_refs = 2;
- }
- else if ((bt != NULL)
- && (bt->num_refs == 1)
- && (bt->data_type == c_cl->cl_data_type))
- {
- ct = bt;
- ct->num_refs = 2;
- }
- }
-#endif /* _SLANG_USE_TMP_OPTIMIZATION */
-
- if (ct == NULL)
- {
- if (at != NULL) ct = at; else ct = bt;
- ct = SLang_create_array1 (c_cl->cl_data_type, 0, NULL, ct->dims, ct->num_dims, no_init);
- if (ct == NULL)
- return -1;
- }
-
-
- if ((na == 0) || (nb == 0) /* allow empty arrays */
- || (1 == (*binary_fun) (op, a_type, ap, na, b_type, bp, nb, ct->data)))
- {
- *(SLang_Array_Type **) cp = ct;
- return 1;
- }
-
- SLang_free_array (ct);
- return -1;
-}
-
-static void array_where (void)
-{
- SLang_Array_Type *at, *bt;
- char *a_data;
- int *b_data;
- unsigned int i, num_elements;
- int b_num;
-
- if (-1 == SLang_pop_array (&at, 1))
- return;
-
- bt = NULL;
-
- if (at->data_type != SLANG_CHAR_TYPE)
- {
- int zero;
- SLang_Array_Type *tmp_at;
-
- tmp_at = at;
- zero = 0;
- if (1 != array_binary_op (SLANG_NE,
- SLANG_ARRAY_TYPE, (VOID_STAR) &at, 1,
- SLANG_CHAR_TYPE, (VOID_STAR) &zero, 1,
- (VOID_STAR) &tmp_at))
- goto return_error;
-
- SLang_free_array (at);
- at = tmp_at;
- if (at->data_type != SLANG_CHAR_TYPE)
- {
- SLang_Error = SL_TYPE_MISMATCH;
- goto return_error;
- }
- }
-
- a_data = (char *) at->data;
- num_elements = at->num_elements;
-
- b_num = 0;
- for (i = 0; i < num_elements; i++)
- if (a_data[i] != 0) b_num++;
-
- if (NULL == (bt = SLang_create_array1 (SLANG_INT_TYPE, 0, NULL, &b_num, 1, 1)))
- goto return_error;
-
- b_data = (int *) bt->data;
-
- i = 0;
- while (b_num)
- {
- if (a_data[i] != 0)
- {
- *b_data++ = i;
- b_num--;
- }
-
- i++;
- }
-
- (void) SLang_push_array (bt, 0);
- /* drop */
-
- return_error:
- SLang_free_array (at);
- SLang_free_array (bt);
-}
-
-static int do_array_reshape (SLang_Array_Type *at, SLang_Array_Type *ind_at)
-{
- int *dims;
- unsigned int i, num_dims;
- unsigned int num_elements;
-
- if ((ind_at->data_type != SLANG_INT_TYPE)
- || (ind_at->num_dims != 1))
- {
- SLang_verror (SL_TYPE_MISMATCH, "Expecting 1-d integer array");
- return -1;
- }
-
- num_dims = ind_at->num_elements;
- dims = (int *) ind_at->data;
-
- num_elements = 1;
- for (i = 0; i < num_dims; i++)
- {
- int d = dims[i];
- if (d < 0)
- {
- SLang_verror (SL_INVALID_PARM, "reshape: dimension is less then 0");
- return -1;
- }
-
- num_elements = (unsigned int) d * num_elements;
- }
-
- if ((num_elements != at->num_elements)
- || (num_dims > SLARRAY_MAX_DIMS))
- {
- SLang_verror (SL_INVALID_PARM, "Unable to reshape array to specified size");
- return -1;
- }
-
- for (i = 0; i < num_dims; i++)
- at->dims [i] = dims[i];
-
- while (i < SLARRAY_MAX_DIMS)
- {
- at->dims [i] = 1;
- i++;
- }
-
- at->num_dims = num_dims;
- return 0;
-}
-
-static void array_reshape (SLang_Array_Type *at, SLang_Array_Type *ind_at)
-{
- (void) do_array_reshape (at, ind_at);
-}
-
-static void _array_reshape (SLang_Array_Type *ind_at)
-{
- SLang_Array_Type *at;
- SLang_Array_Type *new_at;
-
- if (-1 == SLang_pop_array (&at, 1))
- return;
-
- /* FIXME: Priority=low: duplicate_array could me modified to look at num_refs */
-
- /* Now try to avoid the overhead of creating a new array if possible */
- if (at->num_refs == 1)
- {
- /* Great, we are the sole owner of this array. */
- if ((-1 == do_array_reshape (at, ind_at))
- || (-1 == SLclass_push_ptr_obj (SLANG_ARRAY_TYPE, (VOID_STAR)at)))
- SLang_free_array (at);
- return;
- }
-
- new_at = SLang_duplicate_array (at);
- if (new_at != NULL)
- {
- if (0 == do_array_reshape (new_at, ind_at))
- (void) SLang_push_array (new_at, 0);
-
- SLang_free_array (new_at);
- }
- SLang_free_array (at);
-}
-
-typedef struct
-{
- SLang_Array_Type *at;
- unsigned int increment;
- char *addr;
-}
-Map_Arg_Type;
-/* Usage: array_map (Return-Type, func, args,....); */
-static void array_map (void)
-{
- Map_Arg_Type *args;
- unsigned int num_args;
- unsigned int i, i_control;
- SLang_Name_Type *nt;
- unsigned int num_elements;
- SLang_Array_Type *at;
- char *addr;
- unsigned char type;
-
- at = NULL;
- args = NULL;
- nt = NULL;
-
- if (SLang_Num_Function_Args < 3)
- {
- SLang_verror (SL_INVALID_PARM,
- "Usage: array_map (Return-Type, &func, args...)");
- SLdo_pop_n (SLang_Num_Function_Args);
- return;
- }
-
- num_args = (unsigned int)SLang_Num_Function_Args - 2;
- args = (Map_Arg_Type *) SLmalloc (num_args * sizeof (Map_Arg_Type));
- if (args == NULL)
- {
- SLdo_pop_n (SLang_Num_Function_Args);
- return;
- }
- memset ((char *) args, 0, num_args * sizeof (Map_Arg_Type));
- i = num_args;
- i_control = 0;
- while (i > 0)
- {
- i--;
- if (-1 == SLang_pop_array (&args[i].at, 1))
- {
- SLdo_pop_n (i + 2);
- goto return_error;
- }
- if (args[i].at->num_elements > 1)
- i_control = i;
- }
-
- if (NULL == (nt = SLang_pop_function ()))
- {
- SLdo_pop_n (1);
- goto return_error;
- }
-
- num_elements = args[i_control].at->num_elements;
-
- if (-1 == _SLang_pop_datatype (&type))
- goto return_error;
-
- if (type == SLANG_UNDEFINED_TYPE) /* Void_Type */
- at = NULL;
- else
- {
- at = args[i_control].at;
-
- if (NULL == (at = SLang_create_array (type, 0, NULL, at->dims, at->num_dims)))
- goto return_error;
- }
-
-
- for (i = 0; i < num_args; i++)
- {
- SLang_Array_Type *ati = args[i].at;
- /* FIXME: Priority = low: The actual dimensions should be compared. */
- if (ati->num_elements == num_elements)
- args[i].increment = ati->sizeof_type;
- /* memset already guarantees increment to be zero */
-
- if (ati->num_elements == 0)
- {
- SLang_verror (0, "array_map: function argument %d of %d is an empty array",
- i+1, num_args);
- goto return_error;
- }
-
- args[i].addr = (char *) ati->data;
- }
-
- if (at == NULL)
- addr = NULL;
- else
- addr = (char *)at->data;
-
- for (i = 0; i < num_elements; i++)
- {
- unsigned int j;
-
- if (-1 == SLang_start_arg_list ())
- goto return_error;
-
- for (j = 0; j < num_args; j++)
- {
- if (-1 == push_element_at_addr (args[j].at,
- (VOID_STAR) args[j].addr,
- 1))
- {
- SLdo_pop_n (j);
- goto return_error;
- }
-
- args[j].addr += args[j].increment;
- }
-
- if (-1 == SLang_end_arg_list ())
- {
- SLdo_pop_n (num_args);
- goto return_error;
- }
-
- if (-1 == SLexecute_function (nt))
- goto return_error;
-
- if (at == NULL)
- continue;
-
- if (-1 == at->cl->cl_apop (type, (VOID_STAR) addr))
- goto return_error;
-
- addr += at->sizeof_type;
- }
-
- if (at != NULL)
- (void) SLang_push_array (at, 0);
-
- /* drop */
-
- return_error:
- SLang_free_array (at);
- SLang_free_function (nt);
- if (args != NULL)
- {
- for (i = 0; i < num_args; i++)
- SLang_free_array (args[i].at);
-
- SLfree ((char *) args);
- }
-}
-
-static SLang_Intrin_Fun_Type Array_Table [] =
-{
- MAKE_INTRINSIC_0("array_map", array_map, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("array_sort", sort_array, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_1("array_to_bstring", array_to_bstring, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE),
- MAKE_INTRINSIC_1("bstring_to_array", bstring_to_array, SLANG_VOID_TYPE, SLANG_BSTRING_TYPE),
- MAKE_INTRINSIC("init_char_array", init_char_array, SLANG_VOID_TYPE, 0),
- MAKE_INTRINSIC("array_info", array_info, SLANG_VOID_TYPE, 0),
- MAKE_INTRINSIC("where", array_where, SLANG_VOID_TYPE, 0),
- MAKE_INTRINSIC_2("reshape", array_reshape, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE, SLANG_ARRAY_TYPE),
- MAKE_INTRINSIC_1("_reshape", _array_reshape, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-static char *array_string (unsigned char type, VOID_STAR v)
-{
- SLang_Array_Type *at;
- char buf[512];
- unsigned int i, num_dims;
- int *dims;
-
- at = *(SLang_Array_Type **) v;
- type = at->data_type;
- num_dims = at->num_dims;
- dims = at->dims;
-
- sprintf (buf, "%s[%d", SLclass_get_datatype_name (type), at->dims[0]);
-
- for (i = 1; i < num_dims; i++)
- sprintf (buf + strlen(buf), ",%d", dims[i]);
- strcat (buf, "]");
-
- return SLmake_string (buf);
-}
-
-static void array_destroy (unsigned char type, VOID_STAR v)
-{
- (void) type;
- SLang_free_array (*(SLang_Array_Type **) v);
-}
-
-static int array_push (unsigned char type, VOID_STAR v)
-{
- SLang_Array_Type *at;
-
- (void) type;
- at = *(SLang_Array_Type **) v;
- return SLang_push_array (at, 0);
-}
-
-/* Intrinsic arrays are not stored in a variable. So, the address that
- * would contain the variable holds the array address.
- */
-static int array_push_intrinsic (unsigned char type, VOID_STAR v)
-{
- (void) type;
- return SLang_push_array ((SLang_Array_Type *) v, 0);
-}
-
-int _SLarray_add_bin_op (unsigned char type)
-{
- SL_OOBinary_Type *ab;
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- ab = cl->cl_binary_ops;
-
- while (ab != NULL)
- {
- if (ab->data_type == SLANG_ARRAY_TYPE)
- return 0;
- ab = ab->next;
- }
-
- if ((-1 == SLclass_add_binary_op (SLANG_ARRAY_TYPE, type, array_binary_op, array_binary_op_result))
- || (-1 == SLclass_add_binary_op (type, SLANG_ARRAY_TYPE, array_binary_op, array_binary_op_result)))
- return -1;
-
- return 0;
-}
-
-static SLang_Array_Type *
-do_array_math_op (int op, int unary_type,
- SLang_Array_Type *at, unsigned int na)
-{
- unsigned char a_type, b_type;
- int (*f) (int, unsigned char, VOID_STAR, unsigned int, VOID_STAR);
- SLang_Array_Type *bt;
- SLang_Class_Type *b_cl;
- int no_init;
-
- if (na != 1)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "Operation restricted to 1 array");
- return NULL;
- }
-
- a_type = at->data_type;
- if (NULL == (f = _SLclass_get_unary_fun (op, at->cl, &b_cl, unary_type)))
- return NULL;
- b_type = b_cl->cl_data_type;
-
- if (-1 == coerse_array_to_linear (at))
- return NULL;
-
- no_init = ((b_cl->cl_class_type == SLANG_CLASS_TYPE_SCALAR)
- || (b_cl->cl_class_type == SLANG_CLASS_TYPE_VECTOR));
-
-#if _SLANG_USE_TMP_OPTIMIZATION
- /* If we are dealing with scalar (or vector) objects, and if the object
- * appears to be owned by the stack, then use it instead of creating a
- * new version. This can happen with code such as:
- * @ x = [1,2,3,4];
- * @ x = UNARY_OP(__tmp(x));
- */
- if (no_init
- && (at->num_refs == 1)
- && (at->data_type == b_cl->cl_data_type))
- {
- bt = at;
- bt->num_refs = 2;
- }
- else
-#endif /* _SLANG_USE_TMP_OPTIMIZATION */
- if (NULL == (bt = SLang_create_array1 (b_type, 0, NULL, at->dims, at->num_dims, no_init)))
- return NULL;
-
- if (1 != (*f)(op, a_type, at->data, at->num_elements, bt->data))
- {
- SLang_free_array (bt);
- return NULL;
- }
- return bt;
-}
-
-static int
-array_unary_op_result (int op, unsigned char a, unsigned char *b)
-{
- (void) op;
- (void) a;
- *b = SLANG_ARRAY_TYPE;
- return 1;
-}
-
-static int
-array_unary_op (int op,
- unsigned char a, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- SLang_Array_Type *at;
-
- (void) a;
- at = *(SLang_Array_Type **) ap;
- if (NULL == (at = do_array_math_op (op, _SLANG_BC_UNARY, at, na)))
- {
- if (SLang_Error) return -1;
- return 0;
- }
- *(SLang_Array_Type **) bp = at;
- return 1;
-}
-
-static int
-array_math_op (int op,
- unsigned char a, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- SLang_Array_Type *at;
-
- (void) a;
- at = *(SLang_Array_Type **) ap;
- if (NULL == (at = do_array_math_op (op, _SLANG_BC_MATH_UNARY, at, na)))
- {
- if (SLang_Error) return -1;
- return 0;
- }
- *(SLang_Array_Type **) bp = at;
- return 1;
-}
-
-static int
-array_app_op (int op,
- unsigned char a, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- SLang_Array_Type *at;
-
- (void) a;
- at = *(SLang_Array_Type **) ap;
- if (NULL == (at = do_array_math_op (op, _SLANG_BC_APP_UNARY, at, na)))
- {
- if (SLang_Error) return -1;
- return 0;
- }
- *(SLang_Array_Type **) bp = at;
- return 1;
-}
-
-int
-_SLarray_typecast (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp,
- int is_implicit)
-{
- SLang_Array_Type *at, *bt;
- SLang_Class_Type *b_cl;
- int no_init;
- int (*t) (unsigned char, VOID_STAR, unsigned int, unsigned char, VOID_STAR);
-
- if (na != 1)
- {
- SLang_verror (SL_NOT_IMPLEMENTED, "typecast of multiple arrays not implemented");
- return -1;
- }
-
- at = *(SLang_Array_Type **) ap;
- a_type = at->data_type;
-
- if (a_type == b_type)
- {
- at->num_refs += 1;
- *(SLang_Array_Type **) bp = at;
- return 1;
- }
-
- if (NULL == (t = _SLclass_get_typecast (a_type, b_type, is_implicit)))
- return -1;
-
- if (-1 == coerse_array_to_linear (at))
- return -1;
-
- b_cl = _SLclass_get_class (b_type);
-
- no_init = ((b_cl->cl_class_type == SLANG_CLASS_TYPE_SCALAR)
- || (b_cl->cl_class_type == SLANG_CLASS_TYPE_VECTOR));
-
- if (NULL == (bt = SLang_create_array1 (b_type, 0, NULL, at->dims, at->num_dims, no_init)))
- return -1;
-
- if (1 == (*t) (a_type, at->data, at->num_elements, b_type, bt->data))
- {
- *(SLang_Array_Type **) bp = bt;
- return 1;
- }
-
- SLang_free_array (bt);
- return 0;
-}
-
-SLang_Array_Type *SLang_duplicate_array (SLang_Array_Type *at)
-{
- SLang_Array_Type *bt;
- char *data, *a_data;
- unsigned int i, num_elements, sizeof_type;
- unsigned int size;
- int (*cl_acopy) (unsigned char, VOID_STAR, VOID_STAR);
- unsigned char type;
-
- if (-1 == coerse_array_to_linear (at))
- return NULL;
-
- type = at->data_type;
- num_elements = at->num_elements;
- sizeof_type = at->sizeof_type;
- size = num_elements * sizeof_type;
-
- if (NULL == (data = SLmalloc (size)))
- return NULL;
-
- if (NULL == (bt = SLang_create_array (type, 0, (VOID_STAR)data, at->dims, at->num_dims)))
- {
- SLfree (data);
- return NULL;
- }
-
- a_data = (char *) at->data;
- if (0 == (at->flags & SLARR_DATA_VALUE_IS_POINTER))
- {
- SLMEMCPY (data, a_data, size);
- return bt;
- }
-
- SLMEMSET (data, 0, size);
-
- cl_acopy = at->cl->cl_acopy;
- for (i = 0; i < num_elements; i++)
- {
- if (NULL != *(VOID_STAR *) a_data)
- {
- if (-1 == (*cl_acopy) (type, (VOID_STAR) a_data, (VOID_STAR) data))
- {
- SLang_free_array (bt);
- return NULL;
- }
- }
-
- data += sizeof_type;
- a_data += sizeof_type;
- }
-
- return bt;
-}
-
-static int array_dereference (unsigned char type, VOID_STAR addr)
-{
- SLang_Array_Type *at;
-
- (void) type;
- at = SLang_duplicate_array (*(SLang_Array_Type **) addr);
- if (at == NULL) return -1;
- return SLang_push_array (at, 1);
-}
-
-/* This function gets called via, e.g., @Array_Type (Double_Type, [10,20]);
- */
-static int
-array_datatype_deref (unsigned char type)
-{
- SLang_Array_Type *ind_at;
- SLang_Array_Type *at;
-
-#if 0
- /* The parser generated code for this as if a function call were to be
- * made. However, the interpreter simply called the deref object routine
- * instead of the function call. So, I must simulate the function call.
- * This needs to be formalized to hide this detail from applications
- * who wish to do the same. So...
- * FIXME: Priority=medium
- */
- if (0 == _SL_increment_frame_pointer ())
- (void) _SL_decrement_frame_pointer ();
-#endif
-
- if (-1 == SLang_pop_array (&ind_at, 1))
- return -1;
-
- if ((ind_at->data_type != SLANG_INT_TYPE)
- || (ind_at->num_dims != 1))
- {
- SLang_verror (SL_TYPE_MISMATCH, "Expecting 1-d integer array");
- goto return_error;
- }
-
- if (-1 == _SLang_pop_datatype (&type))
- goto return_error;
-
- if (NULL == (at = SLang_create_array (type, 0, NULL,
- (int *) ind_at->data,
- ind_at->num_elements)))
- goto return_error;
-
- SLang_free_array (ind_at);
- return SLang_push_array (at, 1);
-
- return_error:
- SLang_free_array (ind_at);
- return -1;
-}
-
-static int array_length (unsigned char type, VOID_STAR v, unsigned int *len)
-{
- SLang_Array_Type *at;
-
- (void) type;
- at = *(SLang_Array_Type **) v;
- *len = at->num_elements;
- return 0;
-}
-
-int
-_SLarray_init_slarray (void)
-{
- SLang_Class_Type *cl;
-
- if (-1 == SLadd_intrin_fun_table (Array_Table, NULL))
- return -1;
-
- if (NULL == (cl = SLclass_allocate_class ("Array_Type")))
- return -1;
-
- (void) SLclass_set_string_function (cl, array_string);
- (void) SLclass_set_destroy_function (cl, array_destroy);
- (void) SLclass_set_push_function (cl, array_push);
- cl->cl_push_intrinsic = array_push_intrinsic;
- cl->cl_dereference = array_dereference;
- cl->cl_datatype_deref = array_datatype_deref;
- cl->cl_length = array_length;
-
- if (-1 == SLclass_register_class (cl, SLANG_ARRAY_TYPE, sizeof (VOID_STAR),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- if ((-1 == SLclass_add_binary_op (SLANG_ARRAY_TYPE, SLANG_ARRAY_TYPE, array_binary_op, array_binary_op_result))
- || (-1 == SLclass_add_unary_op (SLANG_ARRAY_TYPE, array_unary_op, array_unary_op_result))
- || (-1 == SLclass_add_app_unary_op (SLANG_ARRAY_TYPE, array_app_op, array_unary_op_result))
- || (-1 == SLclass_add_math_op (SLANG_ARRAY_TYPE, array_math_op, array_unary_op_result))
- || (-1 == SLclass_add_math_op (SLANG_ARRAY_TYPE, array_math_op, array_unary_op_result)))
- return -1;
-
- return 0;
-}
-
-int SLang_pop_array (SLang_Array_Type **at_ptr, int convert_scalar)
-{
- if (-1 == pop_array (at_ptr, convert_scalar))
- return -1;
-
- if (-1 == coerse_array_to_linear (*at_ptr))
- {
- SLang_free_array (*at_ptr);
- return -1;
- }
- return 0;
-}
-
-int SLang_pop_array_of_type (SLang_Array_Type **at, unsigned char type)
-{
- if (-1 == SLclass_typecast (type, 1, 1))
- return -1;
-
- return SLang_pop_array (at, 1);
-}
-
-void (*_SLang_Matrix_Multiply)(void);
-
-int _SLarray_matrix_multiply (void)
-{
- if (_SLang_Matrix_Multiply != NULL)
- {
- (*_SLang_Matrix_Multiply)();
- return 0;
- }
- SLang_verror (SL_NOT_IMPLEMENTED, "Matrix multiplication not available");
- return -1;
-}
-
-struct _SLang_Foreach_Context_Type
-{
- SLang_Array_Type *at;
- unsigned int next_element_index;
-};
-
-SLang_Foreach_Context_Type *
-_SLarray_cl_foreach_open (unsigned char type, unsigned int num)
-{
- SLang_Foreach_Context_Type *c;
-
- if (num != 0)
- {
- SLdo_pop_n (num + 1);
- SLang_verror (SL_NOT_IMPLEMENTED,
- "%s does not support 'foreach using' form",
- SLclass_get_datatype_name (type));
- return NULL;
- }
-
- if (NULL == (c = (SLang_Foreach_Context_Type *) SLmalloc (sizeof (SLang_Foreach_Context_Type))))
- return NULL;
-
- memset ((char *) c, 0, sizeof (SLang_Foreach_Context_Type));
-
- if (-1 == pop_array (&c->at, 1))
- {
- SLfree ((char *) c);
- return NULL;
- }
-
- return c;
-}
-
-void _SLarray_cl_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- if (c == NULL) return;
- SLang_free_array (c->at);
- SLfree ((char *) c);
-}
-
-int _SLarray_cl_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- SLang_Array_Type *at;
- VOID_STAR data;
-
- (void) type;
-
- if (c == NULL)
- return -1;
-
- at = c->at;
- if (at->num_elements == c->next_element_index)
- return 0;
-
- /* FIXME: Priority = low. The following assumes linear arrays
- * or Integer range arrays. Fixing it right requires a method to get the
- * nth element of a multidimensional array.
- */
-
- if (at->flags & SLARR_DATA_VALUE_IS_RANGE)
- {
- int d = (int) c->next_element_index;
- data = range_get_data_addr (at, &d);
- }
- else
- data = (VOID_STAR) ((char *)at->data + (c->next_element_index * at->sizeof_type));
-
- c->next_element_index += 1;
-
- if ((at->flags & SLARR_DATA_VALUE_IS_POINTER)
- && (*(VOID_STAR *) data == NULL))
- {
- if (-1 == SLang_push_null ())
- return -1;
- }
- else if (-1 == (*at->cl->cl_apush)(at->data_type, data))
- return -1;
-
- /* keep going */
- return 1;
-}
-
diff --git a/mdk-stage1/slang/slarrfun.c b/mdk-stage1/slang/slarrfun.c
deleted file mode 100644
index bfa6ec5e5..000000000
--- a/mdk-stage1/slang/slarrfun.c
+++ /dev/null
@@ -1,464 +0,0 @@
-/* Advanced array manipulation routines for S-Lang */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static int next_transposed_index (int *dims, int *max_dims, unsigned int num_dims)
-{
- int i;
-
- for (i = 0; i < (int) num_dims; i++)
- {
- int dims_i;
-
- dims_i = dims [i] + 1;
- if (dims_i != (int) max_dims [i])
- {
- dims [i] = dims_i;
- return 0;
- }
- dims [i] = 0;
- }
-
- return -1;
-}
-
-static SLang_Array_Type *allocate_transposed_array (SLang_Array_Type *at)
-{
- unsigned int num_elements;
- SLang_Array_Type *bt;
- VOID_STAR b_data;
-
- num_elements = at->num_elements;
- b_data = (VOID_STAR) SLmalloc (at->sizeof_type * num_elements);
- if (b_data == NULL)
- return NULL;
-
- bt = SLang_create_array (at->data_type, 0, b_data, at->dims, 2);
- if (bt == NULL)
- {
- SLfree ((char *)b_data);
- return NULL;
- }
-
- bt->dims[1] = at->dims[0];
- bt->dims[0] = at->dims[1];
-
- return bt;
-}
-
-#define GENERIC_TYPE float
-#define TRANSPOSE_2D_ARRAY transpose_floats
-#define GENERIC_TYPE_A float
-#define GENERIC_TYPE_B float
-#define GENERIC_TYPE_C float
-#define INNERPROD_FUNCTION innerprod_float_float
-#if SLANG_HAS_COMPLEX
-# define INNERPROD_COMPLEX_A innerprod_complex_float
-# define INNERPROD_A_COMPLEX innerprod_float_complex
-#endif
-#include "slarrfun.inc"
-
-#define GENERIC_TYPE double
-#define TRANSPOSE_2D_ARRAY transpose_doubles
-#define GENERIC_TYPE_A double
-#define GENERIC_TYPE_B double
-#define GENERIC_TYPE_C double
-#define INNERPROD_FUNCTION innerprod_double_double
-#if SLANG_HAS_COMPLEX
-# define INNERPROD_COMPLEX_A innerprod_complex_double
-# define INNERPROD_A_COMPLEX innerprod_double_complex
-#endif
-#include "slarrfun.inc"
-
-#define GENERIC_TYPE_A double
-#define GENERIC_TYPE_B float
-#define GENERIC_TYPE_C double
-#define INNERPROD_FUNCTION innerprod_double_float
-#include "slarrfun.inc"
-
-#define GENERIC_TYPE_A float
-#define GENERIC_TYPE_B double
-#define GENERIC_TYPE_C double
-#define INNERPROD_FUNCTION innerprod_float_double
-#include "slarrfun.inc"
-
-/* Finally pick up the complex_complex multiplication
- * and do the integers
- */
-#if SLANG_HAS_COMPLEX
-# define INNERPROD_COMPLEX_COMPLEX innerprod_complex_complex
-#endif
-#define GENERIC_TYPE int
-#define TRANSPOSE_2D_ARRAY transpose_ints
-#include "slarrfun.inc"
-
-#if SIZEOF_LONG != SIZEOF_INT
-# define GENERIC_TYPE long
-# define TRANSPOSE_2D_ARRAY transpose_longs
-# include "slarrfun.inc"
-#else
-# define transpose_longs transpose_ints
-#endif
-
-#if SIZEOF_SHORT != SIZEOF_INT
-# define GENERIC_TYPE short
-# define TRANSPOSE_2D_ARRAY transpose_shorts
-# include "slarrfun.inc"
-#else
-# define transpose_shorts transpose_ints
-#endif
-
-#define GENERIC_TYPE char
-#define TRANSPOSE_2D_ARRAY transpose_chars
-#include "slarrfun.inc"
-
-/* This routine works only with linear arrays */
-static SLang_Array_Type *transpose (SLang_Array_Type *at)
-{
- int dims [SLARRAY_MAX_DIMS];
- int *max_dims;
- unsigned int num_dims;
- SLang_Array_Type *bt;
- int i;
- unsigned int sizeof_type;
- int is_ptr;
- char *b_data;
-
- max_dims = at->dims;
- num_dims = at->num_dims;
-
- if ((at->num_elements == 0)
- || (num_dims == 1))
- {
- bt = SLang_duplicate_array (at);
- if (num_dims == 1) bt->num_dims = 2;
- goto transpose_dims;
- }
-
- /* For numeric arrays skip the overhead below */
- if (num_dims == 2)
- {
- bt = allocate_transposed_array (at);
- if (bt == NULL) return NULL;
-
- switch (at->data_type)
- {
- case SLANG_INT_TYPE:
- case SLANG_UINT_TYPE:
- return transpose_ints (at, bt);
- case SLANG_DOUBLE_TYPE:
- return transpose_doubles (at, bt);
- case SLANG_FLOAT_TYPE:
- return transpose_floats (at, bt);
- case SLANG_CHAR_TYPE:
- case SLANG_UCHAR_TYPE:
- return transpose_chars (at, bt);
- case SLANG_LONG_TYPE:
- case SLANG_ULONG_TYPE:
- return transpose_longs (at, bt);
- case SLANG_SHORT_TYPE:
- case SLANG_USHORT_TYPE:
- return transpose_shorts (at, bt);
- }
- }
- else
- {
- bt = SLang_create_array (at->data_type, 0, NULL, max_dims, num_dims);
- if (bt == NULL) return NULL;
- }
-
- sizeof_type = at->sizeof_type;
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
-
- memset ((char *)dims, 0, sizeof(dims));
-
- b_data = (char *) bt->data;
-
- do
- {
- if (-1 == _SLarray_aget_transfer_elem (at, dims, (VOID_STAR) b_data,
- sizeof_type, is_ptr))
- {
- SLang_free_array (bt);
- return NULL;
- }
- b_data += sizeof_type;
- }
- while (0 == next_transposed_index (dims, max_dims, num_dims));
-
- transpose_dims:
-
- num_dims = bt->num_dims;
- for (i = 0; i < (int) num_dims; i++)
- bt->dims[i] = max_dims [num_dims - i - 1];
-
- return bt;
-}
-
-static void array_transpose (SLang_Array_Type *at)
-{
- if (NULL != (at = transpose (at)))
- (void) SLang_push_array (at, 1);
-}
-
-static int get_inner_product_parms (SLang_Array_Type *a, int *dp,
- unsigned int *loops, unsigned int *other)
-{
- int num_dims;
- int d;
-
- d = *dp;
-
- num_dims = (int)a->num_dims;
- if (num_dims == 0)
- {
- SLang_verror (SL_INVALID_PARM, "Inner-product operation requires an array of at least 1 dimension.");
- return -1;
- }
-
- /* An index of -1 refers to last dimension */
- if (d == -1)
- d += num_dims;
- *dp = d;
-
- if (a->num_elements == 0)
- { /* [] # [] ==> [] */
- *loops = *other = 0;
- return 0;
- }
-
- *loops = a->num_elements / a->dims[d];
-
- if (d == 0)
- {
- *other = *loops; /* a->num_elements / a->dims[0]; */
- return 0;
- }
-
- *other = a->dims[d];
- return 0;
-}
-
-/* This routines takes two arrays A_i..j and B_j..k and produces a third
- * via C_i..k = A_i..j B_j..k.
- *
- * If A is a vector, and B is a 2-d matrix, then regard A as a 2-d matrix
- * with 1-column.
- */
-static void do_inner_product (void)
-{
- SLang_Array_Type *a, *b, *c;
- void (*fun)(SLang_Array_Type *, SLang_Array_Type *, SLang_Array_Type *,
- unsigned int, unsigned int, unsigned int, unsigned int,
- unsigned int);
- unsigned char c_type;
- int dims[SLARRAY_MAX_DIMS];
- int status;
- unsigned int a_loops, b_loops, b_inc, a_stride;
- int ai_dims, i, j;
- unsigned int num_dims, a_num_dims, b_num_dims;
- int ai, bi;
-
- /* The result of a inner_product will be either a float, double, or
- * a complex number.
- *
- * If an integer array is used, it will be promoted to a float.
- */
-
- switch (SLang_peek_at_stack1 ())
- {
- case SLANG_DOUBLE_TYPE:
- if (-1 == SLang_pop_array_of_type (&b, SLANG_DOUBLE_TYPE))
- return;
- break;
-
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- if (-1 == SLang_pop_array_of_type (&b, SLANG_COMPLEX_TYPE))
- return;
- break;
-#endif
- case SLANG_FLOAT_TYPE:
- default:
- if (-1 == SLang_pop_array_of_type (&b, SLANG_FLOAT_TYPE))
- return;
- break;
- }
-
- switch (SLang_peek_at_stack1 ())
- {
- case SLANG_DOUBLE_TYPE:
- status = SLang_pop_array_of_type (&a, SLANG_DOUBLE_TYPE);
- break;
-
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- status = SLang_pop_array_of_type (&a, SLANG_COMPLEX_TYPE);
- break;
-#endif
- case SLANG_FLOAT_TYPE:
- default:
- status = SLang_pop_array_of_type (&a, SLANG_FLOAT_TYPE);
- break;
- }
-
- if (status == -1)
- {
- SLang_free_array (b);
- return;
- }
-
- ai = -1; /* last index of a */
- bi = 0; /* first index of b */
- if ((-1 == get_inner_product_parms (a, &ai, &a_loops, &a_stride))
- || (-1 == get_inner_product_parms (b, &bi, &b_loops, &b_inc)))
- {
- SLang_verror (SL_TYPE_MISMATCH, "Array dimensions are not compatible for inner-product");
- goto free_and_return;
- }
-
- a_num_dims = a->num_dims;
- b_num_dims = b->num_dims;
-
- /* Coerse a 1-d vector to 2-d */
- if ((a_num_dims == 1)
- && (b_num_dims == 2)
- && (a->num_elements))
- {
- a_num_dims = 2;
- ai = 1;
- a_loops = a->num_elements;
- a_stride = 1;
- }
-
- if ((ai_dims = a->dims[ai]) != b->dims[bi])
- {
- SLang_verror (SL_TYPE_MISMATCH, "Array dimensions are not compatible for inner-product");
- goto free_and_return;
- }
-
- num_dims = a_num_dims + b_num_dims - 2;
- if (num_dims > SLARRAY_MAX_DIMS)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Inner-product result exceed max allowed dimensions");
- goto free_and_return;
- }
-
- if (num_dims)
- {
- j = 0;
- for (i = 0; i < (int)a_num_dims; i++)
- if (i != ai) dims [j++] = a->dims[i];
- for (i = 0; i < (int)b_num_dims; i++)
- if (i != bi) dims [j++] = b->dims[i];
- }
- else
- {
- /* a scalar */
- num_dims = 1;
- dims[0] = 1;
- }
-
- c_type = 0; fun = NULL;
- switch (a->data_type)
- {
- case SLANG_FLOAT_TYPE:
- switch (b->data_type)
- {
- case SLANG_FLOAT_TYPE:
- c_type = SLANG_FLOAT_TYPE;
- fun = innerprod_float_float;
- break;
- case SLANG_DOUBLE_TYPE:
- c_type = SLANG_DOUBLE_TYPE;
- fun = innerprod_float_double;
- break;
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- c_type = SLANG_COMPLEX_TYPE;
- fun = innerprod_float_complex;
- break;
-#endif
- }
- break;
- case SLANG_DOUBLE_TYPE:
- switch (b->data_type)
- {
- case SLANG_FLOAT_TYPE:
- c_type = SLANG_DOUBLE_TYPE;
- fun = innerprod_double_float;
- break;
- case SLANG_DOUBLE_TYPE:
- c_type = SLANG_DOUBLE_TYPE;
- fun = innerprod_double_double;
- break;
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- c_type = SLANG_COMPLEX_TYPE;
- fun = innerprod_double_complex;
- break;
-#endif
- }
- break;
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- c_type = SLANG_COMPLEX_TYPE;
- switch (b->data_type)
- {
- case SLANG_FLOAT_TYPE:
- fun = innerprod_complex_float;
- break;
- case SLANG_DOUBLE_TYPE:
- fun = innerprod_complex_double;
- break;
- case SLANG_COMPLEX_TYPE:
- fun = innerprod_complex_complex;
- break;
- }
- break;
-#endif
- default:
- break;
- }
-
- if (NULL == (c = SLang_create_array (c_type, 0, NULL, dims, num_dims)))
- goto free_and_return;
-
- (*fun)(a, b, c, a_loops, a_stride, b_loops, b_inc, ai_dims);
-
- (void) SLang_push_array (c, 1);
- /* drop */
-
- free_and_return:
- SLang_free_array (a);
- SLang_free_array (b);
-}
-
-
-
-static SLang_Intrin_Fun_Type Array_Fun_Table [] =
-{
- MAKE_INTRINSIC_1("transpose", array_transpose, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int SLang_init_array (void)
-{
- if (-1 == SLadd_intrin_fun_table (Array_Fun_Table, "__SLARRAY__"))
- return -1;
-#if SLANG_HAS_FLOAT
- _SLang_Matrix_Multiply = do_inner_product;
-#endif
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slarrfun.inc b/mdk-stage1/slang/slarrfun.inc
deleted file mode 100644
index 348473a6f..000000000
--- a/mdk-stage1/slang/slarrfun.inc
+++ /dev/null
@@ -1,257 +0,0 @@
-/* -*- mode: C -*- */
-
-/* Some "inline" functions for generic scalar types */
-
-#ifdef TRANSPOSE_2D_ARRAY
-static SLang_Array_Type *TRANSPOSE_2D_ARRAY (SLang_Array_Type *at, SLang_Array_Type *bt)
-{
- GENERIC_TYPE *a_data, *b_data;
- int nr, nc, i;
-
- nr = at->dims[0];
- nc = at->dims[1];
-
- a_data = (GENERIC_TYPE *) at->data;
- b_data = (GENERIC_TYPE *) bt->data;
-
- for (i = 0; i < nr; i++)
- {
- GENERIC_TYPE *offset = b_data + i;
- int j;
- for (j = 0; j < nc; j++)
- {
- *offset = *a_data++;
- offset += nr;
- }
- }
- return bt;
-}
-#undef TRANSPOSE_2D_ARRAY
-#endif
-
-
-#ifdef INNERPROD_FUNCTION
-
-static void INNERPROD_FUNCTION
- (SLang_Array_Type *at, SLang_Array_Type *bt, SLang_Array_Type *ct,
- unsigned int a_loops, unsigned int a_stride,
- unsigned int b_loops, unsigned int b_inc,
- unsigned int inner_loops)
-{
- GENERIC_TYPE_A *a;
- GENERIC_TYPE_B *b;
- GENERIC_TYPE_C *c;
-
- c = (GENERIC_TYPE_C *) ct->data;
- b = (GENERIC_TYPE_B *) bt->data;
- a = (GENERIC_TYPE_A *) at->data;
-
- while (a_loops--)
- {
- GENERIC_TYPE_B *bb;
- unsigned int j;
-
- bb = b;
-
- for (j = 0; j < inner_loops; j++)
- {
- double x = (double) a[j];
-
- if (x != 0.0)
- {
- unsigned int k;
-
- for (k = 0; k < b_loops; k++)
- c[k] += x * bb[k];
- }
- bb += b_inc;
- }
- c += b_loops;
- a += a_stride;
- }
-}
-#undef INNERPROD_FUNCTION
-
-#undef GENERIC_TYPE_A
-#undef GENERIC_TYPE_B
-#undef GENERIC_TYPE_C
-#endif
-
-#ifdef INNERPROD_COMPLEX_A
-static void INNERPROD_COMPLEX_A
- (SLang_Array_Type *at, SLang_Array_Type *bt, SLang_Array_Type *ct,
- unsigned int a_loops, unsigned int a_stride,
- unsigned int b_loops, unsigned int b_inc,
- unsigned int inner_loops)
-{
- double *a;
- GENERIC_TYPE *b;
- double *c;
-
- c = (double *) ct->data;
- b = (GENERIC_TYPE *) bt->data;
- a = (double *) at->data;
-
- a_stride *= 2;
-
- while (a_loops--)
- {
- GENERIC_TYPE *bb;
- unsigned int bb_loops;
-
- bb = b;
- bb_loops = b_loops;
-
- while (bb_loops--)
- {
- double real_sum;
- double imag_sum;
- unsigned int iloops;
- double *aa;
- GENERIC_TYPE *bbb;
-
- aa = a;
- bbb = bb;
- iloops = inner_loops;
-
- real_sum = 0.0;
- imag_sum = 0.0;
- while (iloops--)
- {
- real_sum += aa[0] * (double)bbb[0];
- imag_sum += aa[1] * (double)bbb[0];
- aa += 2;
- bbb += b_inc;
- }
-
- *c++ = real_sum;
- *c++ = imag_sum;
- bb++;
- }
-
- a += a_stride;
- }
-}
-
-static void INNERPROD_A_COMPLEX
- (SLang_Array_Type *at, SLang_Array_Type *bt, SLang_Array_Type *ct,
- unsigned int a_loops, unsigned int a_stride,
- unsigned int b_loops, unsigned int b_inc,
- unsigned int inner_loops)
-{
- GENERIC_TYPE *a;
- double *b;
- double *c;
-
- c = (double *) ct->data;
- b = (double *) bt->data;
- a = (GENERIC_TYPE *) at->data;
-
- b_inc *= 2;
-
- while (a_loops--)
- {
- double *bb;
- unsigned int bb_loops;
-
- bb = b;
- bb_loops = b_loops;
-
- while (bb_loops--)
- {
- double real_sum;
- double imag_sum;
- unsigned int iloops;
- GENERIC_TYPE *aa;
- double *bbb;
-
- aa = a;
- bbb = bb;
- iloops = inner_loops;
-
- real_sum = 0.0;
- imag_sum = 0.0;
- while (iloops--)
- {
- real_sum += (double)aa[0] * bbb[0];
- imag_sum += (double)aa[0] * bbb[1];
- aa += 1;
- bbb += b_inc;
- }
-
- *c++ = real_sum;
- *c++ = imag_sum;
- bb += 2;
- }
-
- a += a_stride;
- }
-}
-
-#undef INNERPROD_A_COMPLEX
-#undef INNERPROD_COMPLEX_A
-#endif /* INNERPROD_COMPLEX_A */
-
-
-#ifdef INNERPROD_COMPLEX_COMPLEX
-static void INNERPROD_COMPLEX_COMPLEX
- (SLang_Array_Type *at, SLang_Array_Type *bt, SLang_Array_Type *ct,
- unsigned int a_loops, unsigned int a_stride,
- unsigned int b_loops, unsigned int b_inc,
- unsigned int inner_loops)
-{
- double *a;
- double *b;
- double *c;
-
- c = (double *) ct->data;
- b = (double *) bt->data;
- a = (double *) at->data;
-
- a_stride *= 2;
- b_inc *= 2;
-
- while (a_loops--)
- {
- double *bb;
- unsigned int bb_loops;
-
- bb = b;
- bb_loops = b_loops;
-
- while (bb_loops--)
- {
- double real_sum;
- double imag_sum;
- unsigned int iloops;
- double *aa;
- double *bbb;
-
- aa = a;
- bbb = bb;
- iloops = inner_loops;
-
- real_sum = 0.0;
- imag_sum = 0.0;
- while (iloops--)
- {
- real_sum += aa[0]*bbb[0] - aa[1]*bbb[1];
- imag_sum += aa[0]*bbb[1] + aa[1]*bbb[0];
- aa += 2;
- bbb += b_inc;
- }
-
- *c++ = real_sum;
- *c++ = imag_sum;
- bb += 2;
- }
-
- a += a_stride;
- }
-}
-#undef INNERPROD_COMPLEX_COMPLEX
-#endif
-
-#ifdef GENERIC_TYPE
-# undef GENERIC_TYPE
-#endif
diff --git a/mdk-stage1/slang/slarrmis.c b/mdk-stage1/slang/slarrmis.c
deleted file mode 100644
index 330dcb53f..000000000
--- a/mdk-stage1/slang/slarrmis.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Misc Array Functions */
-/* Copyright (c) 1997, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-int SLang_get_array_element (SLang_Array_Type *at, int *indices, VOID_STAR data)
-{
- int is_ptr;
-
- if ((at == NULL)
- || (indices == NULL)
- || (data == NULL))
- return -1;
-
- is_ptr = (at->flags & SLARR_DATA_VALUE_IS_POINTER);
- if (is_ptr) *(VOID_STAR *) data = NULL;
- return _SLarray_aget_transfer_elem (at, indices, data, at->sizeof_type, is_ptr);
-}
-
-int SLang_set_array_element (SLang_Array_Type *at, int *indices, VOID_STAR data)
-{
- if ((at == NULL)
- || (indices == NULL)
- || (data == NULL))
- return -1;
-
- return _SLarray_aput_transfer_elem (at, indices, data, at->sizeof_type,
- at->flags & SLARR_DATA_VALUE_IS_POINTER);
-}
-
diff --git a/mdk-stage1/slang/slassoc.c b/mdk-stage1/slang/slassoc.c
deleted file mode 100644
index 5997458d2..000000000
--- a/mdk-stage1/slang/slassoc.c
+++ /dev/null
@@ -1,713 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#define SL_APP_WANTS_FOREACH
-#include "slang.h"
-#include "_slang.h"
-
-#define USE_NEW_ANYTYPE_CODE 1
-
-typedef struct _SLAssoc_Array_Element_Type
-{
- char *key; /* slstring */
- struct _SLAssoc_Array_Element_Type *next;
- SLang_Object_Type value;
-}
-_SLAssoc_Array_Element_Type;
-
-typedef struct
-{
- _SLAssoc_Array_Element_Type *elements[SLASSOC_HASH_TABLE_SIZE];
- SLang_Object_Type default_value;
- unsigned int num_elements;
-#define HAS_DEFAULT_VALUE 1
- unsigned int flags;
- unsigned char type;
-}
-SLang_Assoc_Array_Type;
-
-#define USE_CACHED_STRING 1
-
-#if USE_CACHED_STRING
-static char *Cached_String;
-static SLang_Object_Type *Cached_Obj;
-static SLang_Assoc_Array_Type *Cached_Array;
-#endif
-
-static SLang_Assoc_Array_Type *alloc_assoc_array (unsigned char type, int has_default_value)
-{
- SLang_Assoc_Array_Type *a;
-
- a = (SLang_Assoc_Array_Type *)SLmalloc (sizeof (SLang_Assoc_Array_Type));
- if (a == NULL)
- {
- if (has_default_value)
- SLdo_pop_n (1);
- return NULL;
- }
-
- memset ((char *) a, 0, sizeof (SLang_Assoc_Array_Type));
- a->type = type;
-
- if (has_default_value)
- {
- if (
-#if USE_NEW_ANYTYPE_CODE
- ((type != SLANG_ANY_TYPE) && (-1 == SLclass_typecast (type, 1, 1)))
-#else
- (-1 == SLclass_typecast (type, 1, 1))
-#endif
- || (-1 == SLang_pop (&a->default_value)))
- {
- SLfree ((char *) a);
- return NULL;
- }
-
- a->flags |= HAS_DEFAULT_VALUE;
- }
- return a;
-}
-
-static void free_element (_SLAssoc_Array_Element_Type *e)
-{
- if (e == NULL)
- return;
-
- SLang_free_object (&e->value);
- SLang_free_slstring (e->key);
-#if USE_CACHED_STRING
- if (e->key == Cached_String)
- Cached_String = NULL;
-#endif
- SLfree ((char *)e);
-}
-
-static void delete_assoc_array (SLang_Assoc_Array_Type *a)
-{
- unsigned int i;
-
- if (a == NULL) return;
-
- for (i = 0; i < SLASSOC_HASH_TABLE_SIZE; i++)
- {
- _SLAssoc_Array_Element_Type *e;
-
- e = a->elements[i];
- while (e != NULL)
- {
- _SLAssoc_Array_Element_Type *next_e;
-
- next_e = e->next;
- free_element (e);
- e = next_e;
- }
- }
- if (a->flags & HAS_DEFAULT_VALUE)
- SLang_free_object (&a->default_value);
-
- SLfree ((char *) a);
-}
-
-_INLINE_
-static SLang_Object_Type *
-find_element (SLang_Assoc_Array_Type *a, char *str, unsigned long hash)
-{
- unsigned int h;
- _SLAssoc_Array_Element_Type *e;
-
- h = (unsigned int) (hash % SLASSOC_HASH_TABLE_SIZE);
- e = a->elements[h];
-
- while (e != NULL)
- {
- if (str == e->key) /* slstrings can be compared this way */
- {
-#if USE_CACHED_STRING
- Cached_String = str;
- Cached_Obj = &e->value;
- Cached_Array = a;
-#endif
- return &e->value;
- }
-
- e = e->next;
- }
-
- return NULL;
-}
-
-static _SLAssoc_Array_Element_Type *
-create_element (SLang_Assoc_Array_Type *a, char *str, unsigned long hash)
-{
- unsigned int h;
- _SLAssoc_Array_Element_Type *e;
-
- e = (_SLAssoc_Array_Element_Type *) SLmalloc (sizeof (_SLAssoc_Array_Element_Type));
- if (e == NULL)
- return NULL;
-
- memset ((char *) e, 0, sizeof (_SLAssoc_Array_Element_Type));
- h = (unsigned int) (hash % SLASSOC_HASH_TABLE_SIZE);
-
- if (NULL == (str = _SLstring_dup_hashed_string (str, hash)))
- {
- SLfree ((char *) e);
- return NULL;
- }
-
- e->key = str;
- e->next = a->elements[h];
- a->elements[h] = e;
-
- a->num_elements += 1;
-#if USE_CACHED_STRING
- Cached_String = str;
- Cached_Obj = &e->value;
- Cached_Array = a;
-#endif
- return e;
-}
-
-static int store_object (SLang_Assoc_Array_Type *a, char *s, SLang_Object_Type *obj)
-{
- unsigned long hash;
- SLang_Object_Type *v;
-
-#if USE_CACHED_STRING
- if ((s == Cached_String) && (a == Cached_Array))
- {
- v = Cached_Obj;
- SLang_free_object (v);
- }
- else
- {
-#endif
- hash = _SLcompute_string_hash (s);
- if (NULL != (v = find_element (a, s, hash)))
- SLang_free_object (v);
- else
- {
- _SLAssoc_Array_Element_Type *e;
-
- e = create_element (a, s, hash);
- if (e == NULL)
- return -1;
-
- v = &e->value;
- }
-#if USE_CACHED_STRING
- }
-#endif
-
- *v = *obj;
-
- return 0;
-}
-
-static void assoc_destroy (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- delete_assoc_array ((SLang_Assoc_Array_Type *) ptr);
-}
-
-static int pop_index (unsigned int num_indices,
- SLang_MMT_Type **mmt,
- SLang_Assoc_Array_Type **a,
- char **str)
-{
- if (NULL == (*mmt = SLang_pop_mmt (SLANG_ASSOC_TYPE)))
- {
- *a = NULL;
- *str = NULL;
- return -1;
- }
-
- if ((num_indices != 1)
- || (-1 == SLang_pop_slstring (str)))
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Assoc_Type arrays require a single string index");
- SLang_free_mmt (*mmt);
- *mmt = NULL;
- *a = NULL;
- *str = NULL;
- return -1;
- }
-
- *a = (SLang_Assoc_Array_Type *) SLang_object_from_mmt (*mmt);
- return 0;
-}
-
-static int assoc_aget (unsigned char type, unsigned int num_indices)
-{
- SLang_MMT_Type *mmt;
- char *str;
- SLang_Assoc_Array_Type *a;
- SLang_Object_Type *obj;
- int ret;
-
- (void) type;
-
- if (-1 == pop_index (num_indices, &mmt, &a, &str))
- return -1;
-
-#if USE_CACHED_STRING
- if ((str == Cached_String) && (a == Cached_Array))
- obj = Cached_Obj;
- else
-#endif
- obj = find_element (a, str, _SLcompute_string_hash (str));
-
- if ((obj == NULL)
- && (a->flags & HAS_DEFAULT_VALUE))
- obj = &a->default_value;
-
- if (obj == NULL)
- {
- SLang_verror (SL_INTRINSIC_ERROR,
- "No such element in Assoc Array: %s", str);
- ret = -1;
- }
- else
- {
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (SLANG_CLASS_TYPE_SCALAR == _SLclass_Class_Type[obj->data_type])
- ret = SLang_push (obj);
-#endif
- else
- ret = _SLpush_slang_obj (obj);
- }
-
- SLang_free_slstring (str);
- SLang_free_mmt (mmt);
- return ret;
-}
-
-static int assoc_aput (unsigned char type, unsigned int num_indices)
-{
- SLang_MMT_Type *mmt;
- char *str;
- SLang_Assoc_Array_Type *a;
- SLang_Object_Type obj;
- int ret;
-
- (void) type;
-
- if (-1 == pop_index (num_indices, &mmt, &a, &str))
- return -1;
-
- ret = -1;
-
- if (0 == SLang_pop (&obj))
- {
- if ((obj.data_type != a->type)
-#if USE_NEW_ANYTYPE_CODE
- && (a->type != SLANG_ANY_TYPE)
-#endif
- )
- {
- (void) SLang_push (&obj);
- if ((-1 == SLclass_typecast (a->type, 1, 1))
- || (-1 == SLang_pop (&obj)))
- goto the_return;
- }
-
- if (-1 == store_object (a, str, &obj))
- SLang_free_object (&obj);
- else
- ret = 0;
- }
-
- the_return:
- SLang_free_slstring (str);
- SLang_free_mmt (mmt);
- return ret;
-}
-
-static int assoc_anew (unsigned char type, unsigned int num_dims)
-{
- SLang_MMT_Type *mmt;
- SLang_Assoc_Array_Type *a;
- int has_default_value;
-
- has_default_value = 0;
- switch (num_dims)
- {
- case 0:
- type = SLANG_ANY_TYPE;
- break;
- case 2:
- (void) SLreverse_stack (2);
- has_default_value = 1;
- /* drop */
- case 1:
- if (0 == _SLang_pop_datatype (&type))
- break;
- num_dims--;
- /* drop */
- default:
- SLdo_pop_n (num_dims);
- SLang_verror (SL_SYNTAX_ERROR, "Usage: Assoc_Type [DataType_Type]");
- return -1;
- }
-
- a = alloc_assoc_array (type, has_default_value);
- if (a == NULL)
- return -1;
-
- if (NULL == (mmt = SLang_create_mmt (SLANG_ASSOC_TYPE, (VOID_STAR) a)))
- {
- delete_assoc_array (a);
- return -1;
- }
-
- if (-1 == SLang_push_mmt (mmt))
- {
- SLang_free_mmt (mmt);
- return -1;
- }
-
- return 0;
-}
-
-static void assoc_get_keys (SLang_Assoc_Array_Type *a)
-{
- SLang_Array_Type *at;
- int num;
- unsigned int i, j;
- char **data;
-
- /* Note: If support for threads is added, then we need to modify this
- * algorithm to prevent another thread from modifying the array.
- * However, that should be handled in inner_interp.
- */
- num = a->num_elements;
-
- if (NULL == (at = SLang_create_array (SLANG_STRING_TYPE, 0, NULL, &num, 1)))
- return;
-
- data = (char **)at->data;
-
- i = 0;
- for (j = 0; j < SLASSOC_HASH_TABLE_SIZE; j++)
- {
- _SLAssoc_Array_Element_Type *e;
-
- e = a->elements[j];
- while (e != NULL)
- {
- /* Next cannot fail because it is an slstring */
- data [i] = SLang_create_slstring (e->key);
- e = e->next;
- i++;
- }
- }
- (void) SLang_push_array (at, 1);
-}
-
-static int
-transfer_element (SLang_Class_Type *cl, VOID_STAR dest_data,
- SLang_Object_Type *obj)
-{
- unsigned int sizeof_type;
- VOID_STAR src_data;
-
-#if USE_NEW_ANYTYPE_CODE
- if (cl->cl_data_type == SLANG_ANY_TYPE)
- {
- SLang_Any_Type *any;
-
- if ((-1 == _SLpush_slang_obj (obj))
- || (-1 == SLang_pop_anytype (&any)))
- return -1;
-
- *(SLang_Any_Type **)dest_data = any;
- return 0;
- }
-#endif
- /* Optimize for scalar */
- if (cl->cl_class_type == SLANG_CLASS_TYPE_SCALAR)
- {
- sizeof_type = cl->cl_sizeof_type;
- memcpy ((char *) dest_data, (char *)&obj->v, sizeof_type);
- return 0;
- }
-
- src_data = _SLclass_get_ptr_to_value (cl, obj);
-
- if (-1 == (*cl->cl_acopy) (cl->cl_data_type, src_data, dest_data))
- return -1;
-
- return 0;
-}
-
-static void assoc_get_values (SLang_Assoc_Array_Type *a)
-{
- SLang_Array_Type *at;
- int num;
- unsigned int i, j;
- char *dest_data;
- unsigned char type;
- SLang_Class_Type *cl;
- unsigned int sizeof_type;
-
- /* Note: If support for threads is added, then we need to modify this
- * algorithm to prevent another thread from modifying the array.
- * However, that should be handled in inner_interp.
- */
- num = a->num_elements;
- type = a->type;
-
- cl = _SLclass_get_class (type);
- sizeof_type = cl->cl_sizeof_type;
-
- if (NULL == (at = SLang_create_array (type, 0, NULL, &num, 1)))
- return;
-
- dest_data = (char *)at->data;
-
- i = 0;
- for (j = 0; j < SLASSOC_HASH_TABLE_SIZE; j++)
- {
- _SLAssoc_Array_Element_Type *e;
-
- e = a->elements[j];
- while (e != NULL)
- {
- if (-1 == transfer_element (cl, (VOID_STAR) dest_data, &e->value))
- {
- SLang_free_array (at);
- return;
- }
-
- dest_data += sizeof_type;
- e = e->next;
- i++;
- }
- }
- (void) SLang_push_array (at, 1);
-}
-
-static int assoc_key_exists (SLang_Assoc_Array_Type *a, char *key)
-{
- return (NULL != find_element (a, key, _SLcompute_string_hash (key)));
-}
-
-static void assoc_delete_key (SLang_Assoc_Array_Type *a, char *key)
-{
- unsigned int h;
- _SLAssoc_Array_Element_Type *v, *v0;
-
- h = (unsigned int) (_SLcompute_string_hash (key) % SLASSOC_HASH_TABLE_SIZE);
-
- v0 = NULL;
- v = a->elements[h];
- while (v != NULL)
- {
- if (v->key == key)
- {
- if (v0 != NULL)
- v0->next = v->next;
- else
- a->elements[h] = v->next;
-
- free_element (v);
- a->num_elements -= 1;
- return;
- }
- v0 = v;
- v = v->next;
- }
-
- /* No such element. Let it pass with no error. */
-}
-
-#define A SLANG_ASSOC_TYPE
-#define S SLANG_STRING_TYPE
-static SLang_Intrin_Fun_Type Assoc_Table [] =
-{
- MAKE_INTRINSIC_1("assoc_get_keys", assoc_get_keys, SLANG_VOID_TYPE, A),
- MAKE_INTRINSIC_1("assoc_get_values", assoc_get_values, SLANG_VOID_TYPE, A),
- MAKE_INTRINSIC_2("assoc_key_exists", assoc_key_exists, SLANG_INT_TYPE, A, S),
- MAKE_INTRINSIC_2("assoc_delete_key", assoc_delete_key, SLANG_VOID_TYPE, A, S),
-
- SLANG_END_INTRIN_FUN_TABLE
-};
-#undef A
-#undef S
-
-static int assoc_length (unsigned char type, VOID_STAR v, unsigned int *len)
-{
- SLang_Assoc_Array_Type *a;
-
- (void) type;
- a = (SLang_Assoc_Array_Type *) SLang_object_from_mmt (*(SLang_MMT_Type **)v);
- *len = a->num_elements;
- return 0;
-}
-
-struct _SLang_Foreach_Context_Type
-{
- SLang_MMT_Type *mmt;
- SLang_Assoc_Array_Type *a;
- unsigned int this_hash_index;
- unsigned int next_same_hash_index;
-#define CTX_WRITE_KEYS 1
-#define CTX_WRITE_VALUES 2
- unsigned char flags;
-};
-
-static SLang_Foreach_Context_Type *
-cl_foreach_open (unsigned char type, unsigned int num)
-{
- SLang_Foreach_Context_Type *c;
- unsigned char flags;
- SLang_MMT_Type *mmt;
-
- (void) type;
-
- if (NULL == (mmt = SLang_pop_mmt (SLANG_ASSOC_TYPE)))
- return NULL;
-
- flags = 0;
-
- while (num--)
- {
- char *s;
-
- if (-1 == SLang_pop_slstring (&s))
- {
- SLang_free_mmt (mmt);
- return NULL;
- }
-
- if (0 == strcmp (s, "keys"))
- flags |= CTX_WRITE_KEYS;
- else if (0 == strcmp (s, "values"))
- flags |= CTX_WRITE_VALUES;
- else
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "using '%s' not supported by SLassoc_Type",
- s);
- SLang_free_slstring (s);
- SLang_free_mmt (mmt);
- return NULL;
- }
-
- SLang_free_slstring (s);
- }
-
- if (NULL == (c = (SLang_Foreach_Context_Type *) SLmalloc (sizeof (SLang_Foreach_Context_Type))))
- {
- SLang_free_mmt (mmt);
- return NULL;
- }
-
- memset ((char *) c, 0, sizeof (SLang_Foreach_Context_Type));
-
- if (flags == 0) flags = CTX_WRITE_VALUES|CTX_WRITE_KEYS;
-
- c->flags = flags;
- c->mmt = mmt;
- c->a = (SLang_Assoc_Array_Type *) SLang_object_from_mmt (mmt);
-
- return c;
-}
-
-static void cl_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- if (c == NULL) return;
- SLang_free_mmt (c->mmt);
- SLfree ((char *) c);
-}
-
-static int cl_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- SLang_Assoc_Array_Type *a;
- _SLAssoc_Array_Element_Type *e;
- unsigned int i, j;
-
- (void) type;
-
- if (c == NULL)
- return -1;
-
- a = c->a;
-
- i = c->this_hash_index;
- if (i >= SLASSOC_HASH_TABLE_SIZE)
- return 0;
-
- e = a->elements[i];
-
- j = c->next_same_hash_index;
- c->next_same_hash_index = j + 1;
-
- while ((j > 0) && (e != NULL))
- {
- j--;
- e = e->next;
- }
-
- if (e == NULL)
- {
- do
- {
- i++;
- if (i >= SLASSOC_HASH_TABLE_SIZE)
- return 0; /* no more */
- }
- while (a->elements [i] == NULL);
-
- e = a->elements[i];
- c->this_hash_index = i;
- c->next_same_hash_index = 1;
- }
-
- if ((c->flags & CTX_WRITE_KEYS)
- && (-1 == SLang_push_string (e->key)))
- return -1;
-
- if ((c->flags & CTX_WRITE_VALUES)
- && (-1 == _SLpush_slang_obj (&e->value)))
- return -1;
-
- /* keep going */
- return 1;
-}
-
-int SLang_init_slassoc (void)
-{
- SLang_Class_Type *cl;
-
- if (SLclass_is_class_defined (SLANG_ASSOC_TYPE))
- return 0;
-
- if (NULL == (cl = SLclass_allocate_class ("Assoc_Type")))
- return -1;
-
- (void) SLclass_set_destroy_function (cl, assoc_destroy);
- (void) SLclass_set_aput_function (cl, assoc_aput);
- (void) SLclass_set_aget_function (cl, assoc_aget);
- (void) SLclass_set_anew_function (cl, assoc_anew);
- cl->cl_length = assoc_length;
- cl->cl_foreach_open = cl_foreach_open;
- cl->cl_foreach_close = cl_foreach_close;
- cl->cl_foreach = cl_foreach;
-
- if (-1 == SLclass_register_class (cl, SLANG_ASSOC_TYPE, sizeof (SLang_Assoc_Array_Type), SLANG_CLASS_TYPE_MMT))
- return -1;
-
- if (-1 == SLadd_intrin_fun_table (Assoc_Table, "__SLASSOC__"))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slbstr.c b/mdk-stage1/slang/slbstr.c
deleted file mode 100644
index b4b8c4c51..000000000
--- a/mdk-stage1/slang/slbstr.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-struct _SLang_BString_Type
-{
- unsigned int num_refs;
- unsigned int len;
- int ptr_type;
-#define IS_SLSTRING 1
-#define IS_MALLOCED 2
-#define IS_NOT_TO_BE_FREED 3
- union
- {
- unsigned char bytes[1];
- unsigned char *ptr;
- }
- v;
-};
-
-#define BS_GET_POINTER(b) ((b)->ptr_type ? (b)->v.ptr : (b)->v.bytes)
-
-static SLang_BString_Type *create_bstring_of_type (char *bytes, unsigned int len, int type)
-{
- SLang_BString_Type *b;
- unsigned int size;
-
- size = sizeof(SLang_BString_Type);
- if (type == 0)
- size += len;
-
- if (NULL == (b = (SLang_BString_Type *)SLmalloc (size)))
- return NULL;
-
- b->len = len;
- b->num_refs = 1;
- b->ptr_type = type;
-
- switch (type)
- {
- case 0:
- if (bytes != NULL) memcpy ((char *) b->v.bytes, bytes, len);
- /* Now \0 terminate it because we want to also use it as a C string
- * whenever possible. Note that sizeof(SLang_BString_Type) includes
- * space for 1 character and we allocated len extra bytes. Thus, it is
- * ok to add a \0 to the end.
- */
- b->v.bytes[len] = 0;
- break;
-
- case IS_SLSTRING:
- if (NULL == (b->v.ptr = (unsigned char *)SLang_create_nslstring (bytes, len)))
- {
- SLfree ((char *) b);
- return NULL;
- }
- break;
-
- case IS_MALLOCED:
- case IS_NOT_TO_BE_FREED:
- b->v.ptr = (unsigned char *)bytes;
- bytes [len] = 0; /* NULL terminate */
- break;
- }
-
- return b;
-}
-
-SLang_BString_Type *
-SLbstring_create (unsigned char *bytes, unsigned int len)
-{
- return create_bstring_of_type ((char *)bytes, len, 0);
-}
-
-/* Note that ptr must be len + 1 bytes long for \0 termination */
-SLang_BString_Type *
-SLbstring_create_malloced (unsigned char *ptr, unsigned int len, int free_on_error)
-{
- SLang_BString_Type *b;
-
- if (ptr == NULL)
- return NULL;
-
- if (NULL == (b = create_bstring_of_type ((char *)ptr, len, IS_MALLOCED)))
- {
- if (free_on_error)
- SLfree ((char *) ptr);
- }
- return b;
-}
-
-SLang_BString_Type *SLbstring_create_slstring (char *s)
-{
- if (s == NULL)
- return NULL;
-
- return create_bstring_of_type (s, strlen (s), IS_SLSTRING);
-}
-
-SLang_BString_Type *SLbstring_dup (SLang_BString_Type *b)
-{
- if (b != NULL)
- b->num_refs += 1;
-
- return b;
-}
-
-unsigned char *SLbstring_get_pointer (SLang_BString_Type *b, unsigned int *len)
-{
- if (b == NULL)
- {
- *len = 0;
- return NULL;
- }
- *len = b->len;
- return BS_GET_POINTER(b);
-}
-
-void SLbstring_free (SLang_BString_Type *b)
-{
- if (b == NULL)
- return;
-
- if (b->num_refs > 1)
- {
- b->num_refs -= 1;
- return;
- }
-
- switch (b->ptr_type)
- {
- case 0:
- case IS_NOT_TO_BE_FREED:
- default:
- break;
-
- case IS_SLSTRING:
- SLang_free_slstring ((char *)b->v.ptr);
- break;
-
- case IS_MALLOCED:
- SLfree ((char *)b->v.ptr);
- break;
- }
-
- SLfree ((char *) b);
-}
-
-int SLang_pop_bstring (SLang_BString_Type **b)
-{
- return SLclass_pop_ptr_obj (SLANG_BSTRING_TYPE, (VOID_STAR *)b);
-}
-
-int SLang_push_bstring (SLang_BString_Type *b)
-{
- if (b == NULL)
- return SLang_push_null ();
-
- b->num_refs += 1;
-
- if (0 == SLclass_push_ptr_obj (SLANG_BSTRING_TYPE, (VOID_STAR)b))
- return 0;
-
- b->num_refs -= 1;
- return -1;
-}
-
-static int
-bstring_bstring_bin_op_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- (void) a;
- (void) b;
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUS:
- *c = SLANG_BSTRING_TYPE;
- break;
-
- case SLANG_GT:
- case SLANG_GE:
- case SLANG_LT:
- case SLANG_LE:
- case SLANG_EQ:
- case SLANG_NE:
- *c = SLANG_CHAR_TYPE;
- break;
- }
- return 1;
-}
-
-static int compare_bstrings (SLang_BString_Type *a, SLang_BString_Type *b)
-{
- unsigned int len;
- int ret;
-
- len = a->len;
- if (b->len < len) len = b->len;
-
- ret = memcmp ((char *)BS_GET_POINTER(b), (char *)BS_GET_POINTER(a), len);
- if (ret != 0)
- return ret;
-
- if (a->len > b->len)
- return 1;
- if (a->len == b->len)
- return 0;
-
- return -1;
-}
-
-static SLang_BString_Type *
-concat_bstrings (SLang_BString_Type *a, SLang_BString_Type *b)
-{
- unsigned int len;
- SLang_BString_Type *c;
- char *bytes;
-
- len = a->len + b->len;
-
- if (NULL == (c = SLbstring_create (NULL, len)))
- return NULL;
-
- bytes = (char *)BS_GET_POINTER(c);
-
- memcpy (bytes, (char *)BS_GET_POINTER(a), a->len);
- memcpy (bytes + a->len, (char *)BS_GET_POINTER(b), b->len);
-
- return c;
-}
-
-static void free_n_bstrings (SLang_BString_Type **a, unsigned int n)
-{
- unsigned int i;
-
- if (a == NULL) return;
-
- for (i = 0; i < n; i++)
- {
- SLbstring_free (a[i]);
- a[i] = NULL;
- }
-}
-
-static int
-bstring_bstring_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- SLang_BString_Type **a, **b, **c;
- unsigned int n, n_max;
- unsigned int da, db;
-
- (void) a_type;
- (void) b_type;
-
- if (na == 1) da = 0; else da = 1;
- if (nb == 1) db = 0; else db = 1;
-
- if (na > nb) n_max = na; else n_max = nb;
-
- a = (SLang_BString_Type **) ap;
- b = (SLang_BString_Type **) bp;
- for (n = 0; n < n_max; n++)
- {
- if ((*a == NULL) || (*b == NULL))
- {
- SLang_verror (SL_VARIABLE_UNINITIALIZED,
- "Binary string element[%u] not initialized for binary operation", n);
- return -1;
- }
- a += da; b += db;
- }
-
- a = (SLang_BString_Type **) ap;
- b = (SLang_BString_Type **) bp;
- ic = (char *) cp;
- c = NULL;
-
- switch (op)
- {
- case SLANG_PLUS:
- /* Concat */
- c = (SLang_BString_Type **) cp;
- for (n = 0; n < n_max; n++)
- {
- if (NULL == (c[n] = concat_bstrings (*a, *b)))
- goto return_error;
-
- a += da; b += db;
- }
- break;
-
- case SLANG_NE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (0 != compare_bstrings (*a, *b));
- a += da;
- b += db;
- }
- break;
- case SLANG_GT:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (compare_bstrings (*a, *b) > 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_GE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (compare_bstrings (*a, *b) >= 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_LT:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (compare_bstrings (*a, *b) < 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_LE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (compare_bstrings (*a, *b) <= 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_EQ:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (compare_bstrings (*a, *b) == 0);
- a += da;
- b += db;
- }
- break;
- }
- return 1;
-
- return_error:
- if (c != NULL)
- {
- free_n_bstrings (c, n);
- while (n < n_max)
- {
- c[n] = NULL;
- n++;
- }
- }
- return -1;
-}
-
-/* If preserve_ptr, then use a[i] as the bstring data. See how this function
- * is called by the binary op routines for why.
- */
-static SLang_BString_Type **
-make_n_bstrings (SLang_BString_Type **b, char **a, unsigned int n, int ptr_type)
-{
- unsigned int i;
- int malloc_flag;
-
- malloc_flag = 0;
- if (b == NULL)
- {
- b = (SLang_BString_Type **) SLmalloc ((n + 1) * sizeof (SLang_BString_Type *));
- if (b == NULL)
- return NULL;
- malloc_flag = 1;
- }
-
- for (i = 0; i < n; i++)
- {
- char *s = a[i];
-
- if (s == NULL)
- {
- b[i] = NULL;
- continue;
- }
-
- if (NULL == (b[i] = create_bstring_of_type (s, strlen(s), ptr_type)))
- {
- free_n_bstrings (b, i);
- if (malloc_flag) SLfree ((char *) b);
- return NULL;
- }
- }
-
- return b;
-}
-
-static int
-bstring_string_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- SLang_BString_Type **b;
- int ret;
-
- if (NULL == (b = make_n_bstrings (NULL, (char **)bp, nb, IS_NOT_TO_BE_FREED)))
- return -1;
-
- b_type = SLANG_BSTRING_TYPE;
- ret = bstring_bstring_bin_op (op,
- a_type, ap, na,
- b_type, (VOID_STAR) b, nb,
- cp);
- free_n_bstrings (b, nb);
- SLfree ((char *) b);
- return ret;
-}
-
-static int
-string_bstring_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- SLang_BString_Type **a;
- int ret;
-
- if (NULL == (a = make_n_bstrings (NULL, (char **)ap, na, IS_NOT_TO_BE_FREED)))
- return -1;
-
- a_type = SLANG_BSTRING_TYPE;
- ret = bstring_bstring_bin_op (op,
- a_type, (VOID_STAR) a, na,
- b_type, bp, nb,
- cp);
- free_n_bstrings (a, na);
- SLfree ((char *) a);
-
- return ret;
-}
-
-static void bstring_destroy (unsigned char unused, VOID_STAR s)
-{
- (void) unused;
- SLbstring_free (*(SLang_BString_Type **) s);
-}
-
-static int bstring_push (unsigned char unused, VOID_STAR sptr)
-{
- (void) unused;
-
- return SLang_push_bstring (*(SLang_BString_Type **) sptr);
-}
-
-static int string_to_bstring (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- char **s;
- SLang_BString_Type **b;
-
- (void) a_type;
- (void) b_type;
-
- s = (char **) ap;
- b = (SLang_BString_Type **) bp;
-
- if (NULL == make_n_bstrings (b, s, na, IS_SLSTRING))
- return -1;
-
- return 1;
-}
-
-static int bstring_to_string (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- char **s;
- unsigned int i;
- SLang_BString_Type **a;
-
- (void) a_type;
- (void) b_type;
-
- s = (char **) bp;
- a = (SLang_BString_Type **) ap;
-
- for (i = 0; i < na; i++)
- {
- SLang_BString_Type *ai = a[i];
-
- if (ai == NULL)
- {
- s[i] = NULL;
- continue;
- }
-
- if (NULL == (s[i] = SLang_create_slstring ((char *)BS_GET_POINTER(ai))))
- {
- while (i != 0)
- {
- i--;
- SLang_free_slstring (s[i]);
- s[i] = NULL;
- }
- return -1;
- }
- }
-
- return 1;
-}
-
-static char *bstring_string (unsigned char type, VOID_STAR v)
-{
- SLang_BString_Type *s;
- unsigned char buf[128];
- unsigned char *bytes, *bytes_max;
- unsigned char *b, *bmax;
-
- (void) type;
-
- s = *(SLang_BString_Type **) v;
- bytes = BS_GET_POINTER(s);
- bytes_max = bytes + s->len;
-
- b = buf;
- bmax = buf + (sizeof (buf) - 4);
-
- while (bytes < bytes_max)
- {
- unsigned char ch = *bytes;
-
- if ((ch < 32) || (ch >= 127) || (ch == '\\'))
- {
- if (b + 4 > bmax)
- break;
-
- sprintf ((char *) b, "\\%03o", ch);
- b += 4;
- }
- else
- {
- if (b == bmax)
- break;
-
- *b++ = ch;
- }
-
- bytes++;
- }
-
- if (bytes < bytes_max)
- {
- *b++ = '.';
- *b++ = '.';
- *b++ = '.';
- }
- *b = 0;
-
- return SLmake_string ((char *)buf);
-}
-
-static unsigned int bstrlen_cmd (SLang_BString_Type *b)
-{
- return b->len;
-}
-
-static SLang_Intrin_Fun_Type BString_Table [] = /*{{{*/
-{
- MAKE_INTRINSIC_1("bstrlen", bstrlen_cmd, SLANG_UINT_TYPE, SLANG_BSTRING_TYPE),
- MAKE_INTRINSIC_0("pack", _SLpack, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_2("unpack", _SLunpack, SLANG_VOID_TYPE, SLANG_STRING_TYPE, SLANG_BSTRING_TYPE),
- MAKE_INTRINSIC_1("pad_pack_format", _SLpack_pad_format, SLANG_VOID_TYPE, SLANG_STRING_TYPE),
- MAKE_INTRINSIC_1("sizeof_pack", _SLpack_compute_size, SLANG_UINT_TYPE, SLANG_STRING_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int _SLang_init_bstring (void)
-{
- SLang_Class_Type *cl;
-
- if (NULL == (cl = SLclass_allocate_class ("BString_Type")))
- return -1;
- (void) SLclass_set_destroy_function (cl, bstring_destroy);
- (void) SLclass_set_push_function (cl, bstring_push);
- (void) SLclass_set_string_function (cl, bstring_string);
-
- if (-1 == SLclass_register_class (cl, SLANG_BSTRING_TYPE, sizeof (char *),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- if ((-1 == SLclass_add_typecast (SLANG_BSTRING_TYPE, SLANG_STRING_TYPE, bstring_to_string, 1))
- || (-1 == SLclass_add_typecast (SLANG_STRING_TYPE, SLANG_BSTRING_TYPE, string_to_bstring, 1))
- || (-1 == SLclass_add_binary_op (SLANG_BSTRING_TYPE, SLANG_BSTRING_TYPE, bstring_bstring_bin_op, bstring_bstring_bin_op_result))
- || (-1 == SLclass_add_binary_op (SLANG_STRING_TYPE, SLANG_BSTRING_TYPE, string_bstring_bin_op, bstring_bstring_bin_op_result))
- || (-1 == SLclass_add_binary_op (SLANG_BSTRING_TYPE, SLANG_STRING_TYPE, bstring_string_bin_op, bstring_bstring_bin_op_result)))
-
- return -1;
-
- if (-1 == SLadd_intrin_fun_table (BString_Table, NULL))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slclass.c b/mdk-stage1/slang/slclass.c
deleted file mode 100644
index 733888cb8..000000000
--- a/mdk-stage1/slang/slclass.c
+++ /dev/null
@@ -1,1391 +0,0 @@
-/* User defined objects */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
-unsigned char _SLclass_Class_Type [256];
-#endif
-
-static SLang_Class_Type *Registered_Types[256];
-SLang_Class_Type *_SLclass_get_class (unsigned char type)
-{
- SLang_Class_Type *cl;
-
- cl = Registered_Types [type];
- if (cl == NULL)
- SLang_exit_error ("Application error: Type %d not registered", (int) type);
-
- return cl;
-}
-
-int SLclass_is_class_defined (unsigned char type)
-{
- return (NULL != Registered_Types[type]);
-}
-
-VOID_STAR _SLclass_get_ptr_to_value (SLang_Class_Type *cl,
- SLang_Object_Type *obj)
-{
- VOID_STAR p;
-
- switch (cl->cl_class_type)
- {
- case SLANG_CLASS_TYPE_MMT:
- case SLANG_CLASS_TYPE_PTR:
- case SLANG_CLASS_TYPE_SCALAR:
- p = (VOID_STAR) &obj->v;
- break;
-
- case SLANG_CLASS_TYPE_VECTOR:
- p = obj->v.ptr_val;
- break;
-
- default:
- p = NULL;
- }
- return p;
-}
-
-char *SLclass_get_datatype_name (unsigned char stype)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (stype);
- return cl->cl_name;
-}
-
-static int method_undefined_error (unsigned char type, char *method, char *name)
-{
- if (name == NULL) name = SLclass_get_datatype_name (type);
-
- SLang_verror (SL_TYPE_MISMATCH, "%s method not defined for %s",
- method, name);
- return -1;
-}
-
-static int
-scalar_vector_bin_op_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- (void) a; (void) b;
- switch (op)
- {
- case SLANG_NE:
- case SLANG_EQ:
- *c = SLANG_INT_TYPE;
- return 1;
- }
- return 0;
-}
-
-static int
-scalar_vector_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- int *c;
- char *a, *b;
- unsigned int da, db;
- unsigned int n, n_max;
- unsigned int data_type_len;
- SLang_Class_Type *cl;
-
- (void) b_type;
- cl = _SLclass_get_class (a_type);
-
- data_type_len = cl->cl_sizeof_type;
-
- a = (char *) ap;
- b = (char *) bp;
- c = (int *) cp;
-
- if (na == 1) da = 0; else da = data_type_len;
- if (nb == 1) db = 0; else db = data_type_len;
- if (na > nb) n_max = na; else n_max = nb;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_NE:
- for (n = 0; n < n_max; n++)
- {
- c[n] = (0 != SLMEMCMP(a, b, data_type_len));
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ:
- for (n = 0; n < n_max; n++)
- {
- c[n] = (0 == SLMEMCMP(a, b, data_type_len));
- a += da; b += db;
- }
- break;
- }
- return 1;
-}
-
-static int scalar_fread (unsigned char type, FILE *fp, VOID_STAR ptr,
- unsigned int desired, unsigned int *actual)
-{
- unsigned int n;
-
- n = fread ((char *) ptr, _SLclass_get_class (type)->cl_sizeof_type,
- desired, fp);
- *actual = n;
- return 0;
-}
-
-static int scalar_fwrite (unsigned char type, FILE *fp, VOID_STAR ptr,
- unsigned int desired, unsigned int *actual)
-{
- unsigned int n;
-
- n = fwrite ((char *) ptr, _SLclass_get_class (type)->cl_sizeof_type,
- desired, fp);
- *actual = n;
- return 0;
-}
-
-static int vector_apush (unsigned char type, VOID_STAR ptr)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- return (*cl->cl_push)(type, (VOID_STAR) &ptr);
-}
-
-static int vector_apop (unsigned char type, VOID_STAR ptr)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- return (*cl->cl_pop)(type, (VOID_STAR) &ptr);
-}
-
-static int default_push_mmt (unsigned char type_unused, VOID_STAR ptr)
-{
- SLang_MMT_Type *ref;
-
- (void) type_unused;
- ref = *(SLang_MMT_Type **) ptr;
- return SLang_push_mmt (ref);
-}
-
-static void default_destroy_simple (unsigned char type_unused, VOID_STAR ptr_unused)
-{
- (void) type_unused;
- (void) ptr_unused;
-}
-
-static void default_destroy_user (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- SLang_free_mmt (*(SLang_MMT_Type **) ptr);
-}
-
-static int default_pop (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_pop_ptr_obj (type, (VOID_STAR *) ptr);
-}
-
-static int default_datatype_deref (unsigned char type)
-{
- return method_undefined_error (type, "datatype_deref", NULL);
-}
-
-static int default_acopy (unsigned char type, VOID_STAR from, VOID_STAR to)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- if (-1 == (*cl->cl_apush) (type, from))
- return -1;
- return (*cl->cl_apop) (type, to);
-}
-
-static int default_dereference_object (unsigned char type, VOID_STAR ptr)
-{
- (void) ptr;
- return method_undefined_error (type, "dereference", NULL);
-}
-
-static char *default_string (unsigned char stype, VOID_STAR v)
-{
- char buf [256];
- char *s;
-#if SLANG_HAS_COMPLEX
- double *cplx;
-#endif
- s = buf;
-
- switch (stype)
- {
- case SLANG_STRING_TYPE:
- s = *(char **) v;
- break;
-
- case SLANG_NULL_TYPE:
- s = "NULL";
- break;
-
- case SLANG_DATATYPE_TYPE:
- s = SLclass_get_datatype_name ((unsigned char) *(int *)v);
- break;
-
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- cplx = *(double **) v;
- if (cplx[1] < 0)
- sprintf (s, "(%g - %gi)", cplx [0], -cplx [1]);
- else
- sprintf (s, "(%g + %gi)", cplx [0], cplx [1]);
- break;
-#endif
- default:
- s = SLclass_get_datatype_name (stype);
- }
-
- return SLmake_string (s);
-}
-
-static int
-use_cmp_bin_op_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- if (a != b)
- return 0;
- switch (op)
- {
- case SLANG_NE:
- case SLANG_EQ:
- case SLANG_LT:
- case SLANG_LE:
- case SLANG_GT:
- case SLANG_GE:
- *c = SLANG_INT_TYPE;
- return 1;
- }
- return 0;
-}
-
-static int
-use_cmp_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- int *c;
- char *a, *b;
- unsigned int da, db;
- unsigned int n, n_max;
- unsigned int data_type_len;
- SLang_Class_Type *cl;
- int (*cmp)(unsigned char, VOID_STAR, VOID_STAR, int *);
-
- (void) b_type;
- cl = _SLclass_get_class (a_type);
- cmp = cl->cl_cmp;
- data_type_len = cl->cl_sizeof_type;
-
- a = (char *) ap;
- b = (char *) bp;
- c = (int *) cp;
-
- if (na == 1) da = 0; else da = data_type_len;
- if (nb == 1) db = 0; else db = data_type_len;
- if (na > nb) n_max = na; else n_max = nb;
-
- switch (op)
- {
- int result;
-
- default:
- return 0;
-
- case SLANG_NE:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result != 0);
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result == 0);
- a += da; b += db;
- }
- break;
-
- case SLANG_GT:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result > 0);
- a += da; b += db;
- }
- break;
- case SLANG_GE:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result >= 0);
- a += da; b += db;
- }
- break;
- case SLANG_LT:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result < 0);
- a += da; b += db;
- }
- break;
- case SLANG_LE:
- for (n = 0; n < n_max; n++)
- {
- if (-1 == (*cmp) (a_type, (VOID_STAR)a, (VOID_STAR)b, &result))
- return -1;
- c[n] = (result <= 0);
- a += da; b += db;
- }
- break;
- }
- return 1;
-}
-
-
-int SLclass_get_class_id (SLang_Class_Type *cl)
-{
- if (cl == NULL)
- return -1;
- return (int) cl->cl_data_type;
-}
-
-SLang_Class_Type *SLclass_allocate_class (char *name)
-{
- SLang_Class_Type *cl;
- unsigned int i;
-
- for (i = 0; i < 256; i++)
- {
- cl = Registered_Types [i];
- if ((cl != NULL)
- && (0 == strcmp (cl->cl_name, name)))
- {
- SLang_verror (SL_DUPLICATE_DEFINITION, "Type name %s already exists", name);
- return NULL;
- }
- }
-
- cl = (SLang_Class_Type *) SLmalloc (sizeof (SLang_Class_Type));
- if (cl == NULL) return NULL;
-
- SLMEMSET ((char *) cl, 0, sizeof (SLang_Class_Type));
-
- if (NULL == (cl->cl_name = SLang_create_slstring (name)))
- {
- SLfree ((char *) cl);
- return NULL;
- }
-
- return cl;
-}
-
-static int DataType_Ids [256];
-
-int _SLang_push_datatype (unsigned char data_type)
-{
- /* This data type could be a copy of another type, e.g., short and
- * int if they are the same size (Int16 == Short). So, make sure
- * we push the original and not the copy.
- */
- data_type = _SLclass_get_class (data_type)->cl_data_type;
- return SLclass_push_int_obj (SLANG_DATATYPE_TYPE, (int) data_type);
-}
-
-static int datatype_deref (unsigned char type, VOID_STAR ptr)
-{
- SLang_Class_Type *cl;
- int status;
-
- /* The parser generated code for this as if a function call were to be
- * made. However, we are calling the deref object routine
- * instead of the function call. So, I must simulate the function call.
- */
- if (-1 == _SL_increment_frame_pointer ())
- return -1;
-
- type = (unsigned char) *(int *) ptr;
- cl = _SLclass_get_class (type);
- status = (*cl->cl_datatype_deref) (type);
-
- (void) _SL_decrement_frame_pointer ();
- return status;
-}
-
-static int datatype_push (unsigned char type_unused, VOID_STAR ptr)
-{
- (void) type_unused;
- return _SLang_push_datatype (*(int *) ptr);
-}
-
-int _SLang_pop_datatype (unsigned char *type)
-{
- int i;
-
- if (-1 == SLclass_pop_int_obj (SLANG_DATATYPE_TYPE, &i))
- return -1;
-
- *type = (unsigned char) i;
- return 0;
-}
-
-static int datatype_pop (unsigned char type, VOID_STAR ptr)
-{
- if (-1 == _SLang_pop_datatype (&type))
- return -1;
-
- *(int *) ptr = type;
- return 0;
-}
-
-int _SLclass_init (void)
-{
- SLang_Class_Type *cl;
-
- /* First initialize the container classes. This is so binary operations
- * added later will work with them.
- */
- if (-1 == _SLarray_init_slarray ())
- return -1;
-
- /* DataType_Type */
- if (NULL == (cl = SLclass_allocate_class ("DataType_Type")))
- return -1;
- cl->cl_pop = datatype_pop;
- cl->cl_push = datatype_push;
- cl->cl_dereference = datatype_deref;
- if (-1 == SLclass_register_class (cl, SLANG_DATATYPE_TYPE, sizeof(int),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
-
- return 0;
-}
-
-static int register_new_datatype (char *name, unsigned char type)
-{
- DataType_Ids [type] = type;
- return SLadd_intrinsic_variable (name, (VOID_STAR) (DataType_Ids + type),
- SLANG_DATATYPE_TYPE, 1);
-}
-
-int SLclass_create_synonym (char *name, unsigned char type)
-{
- if (NULL == _SLclass_get_class (type))
- return -1;
-
- return register_new_datatype (name, type);
-}
-
-int _SLclass_copy_class (unsigned char to, unsigned char from)
-{
- SLang_Class_Type *cl = _SLclass_get_class (from);
-
- if (Registered_Types[to] != NULL)
- SLang_exit_error ("Application error: Class already exists");
-
- Registered_Types[to] = cl;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (to != SLANG_UNDEFINED_TYPE)
- _SLclass_Class_Type [to] = cl->cl_class_type;
-#endif
- return 0;
-}
-
-int SLclass_register_class (SLang_Class_Type *cl, unsigned char type, unsigned int type_size, unsigned char class_type)
-{
- char *name;
- unsigned int i;
- int can_binop = 1; /* scalar_vector_bin_op should work
- * for all data types.
- */
-
- if (type == SLANG_VOID_TYPE) for (i = 0; i < 256; i++)
- {
- if ((Registered_Types[i] == NULL)
- && (i != SLANG_VOID_TYPE))
- {
- type = (unsigned char) i;
- break;
- }
- }
-
- if ((NULL != Registered_Types [type])
- || (type == SLANG_VOID_TYPE))
- {
- SLang_verror (SL_APPLICATION_ERROR, "Class type %d already in use", (int) type);
- return -1;
- }
-
- cl->cl_data_type = type;
- cl->cl_class_type = class_type;
- name = cl->cl_name;
-
- switch (class_type)
- {
- case SLANG_CLASS_TYPE_MMT:
- if (cl->cl_push == NULL) cl->cl_push = default_push_mmt;
- if (cl->cl_destroy == NULL)
- return method_undefined_error (type, "destroy", name);
- cl->cl_user_destroy_fun = cl->cl_destroy;
- cl->cl_destroy = default_destroy_user;
- type_size = sizeof (VOID_STAR);
- break;
-
- case SLANG_CLASS_TYPE_SCALAR:
- if (cl->cl_destroy == NULL) cl->cl_destroy = default_destroy_simple;
- if ((type_size == 0)
- || (type_size > sizeof (_SL_Object_Union_Type)))
- {
- SLang_verror (SL_INVALID_PARM,
- "Type size for %s not appropriate for SCALAR type",
- name);
- return -1;
- }
- if (cl->cl_pop == NULL)
- return method_undefined_error (type, "pop", name);
- if (cl->cl_fread == NULL) cl->cl_fread = scalar_fread;
- if (cl->cl_fwrite == NULL) cl->cl_fwrite = scalar_fwrite;
-
- can_binop = 1;
- break;
-
- case SLANG_CLASS_TYPE_PTR:
- if (cl->cl_destroy == NULL)
- return method_undefined_error (type, "destroy", name);
- type_size = sizeof (VOID_STAR);
- break;
-
- case SLANG_CLASS_TYPE_VECTOR:
- if (cl->cl_destroy == NULL)
- return method_undefined_error (type, "destroy", name);
- if (cl->cl_pop == NULL)
- return method_undefined_error (type, "pop", name);
- cl->cl_apop = vector_apop;
- cl->cl_apush = vector_apush;
- cl->cl_adestroy = default_destroy_simple;
- if (cl->cl_fread == NULL) cl->cl_fread = scalar_fread;
- if (cl->cl_fwrite == NULL) cl->cl_fwrite = scalar_fwrite;
- can_binop = 1;
- break;
-
- default:
- SLang_verror (SL_INVALID_PARM, "%s: unknown class type (%d)", name, class_type);
- return -1;
- }
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if (type != SLANG_UNDEFINED_TYPE)
- _SLclass_Class_Type [type] = class_type;
-#endif
-
- if (type_size == 0)
- {
- SLang_verror (SL_INVALID_PARM, "type size must be non-zero for %s", name);
- return -1;
- }
-
- if (cl->cl_string == NULL) cl->cl_string = default_string;
- if (cl->cl_acopy == NULL) cl->cl_acopy = default_acopy;
- if (cl->cl_datatype_deref == NULL) cl->cl_datatype_deref = default_datatype_deref;
-
- if (cl->cl_pop == NULL) cl->cl_pop = default_pop;
-
- if (cl->cl_push == NULL)
- return method_undefined_error (type, "push", name);
-
- if (cl->cl_byte_code_destroy == NULL)
- cl->cl_byte_code_destroy = cl->cl_destroy;
- if (cl->cl_push_literal == NULL)
- cl->cl_push_literal = cl->cl_push;
-
- if (cl->cl_dereference == NULL)
- cl->cl_dereference = default_dereference_object;
-
- if (cl->cl_apop == NULL) cl->cl_apop = cl->cl_pop;
- if (cl->cl_apush == NULL) cl->cl_apush = cl->cl_push;
- if (cl->cl_adestroy == NULL) cl->cl_adestroy = cl->cl_destroy;
- if (cl->cl_push_intrinsic == NULL) cl->cl_push_intrinsic = cl->cl_push;
-
- if ((cl->cl_foreach == NULL)
- || (cl->cl_foreach_open == NULL)
- || (cl->cl_foreach_close == NULL))
- {
- cl->cl_foreach = _SLarray_cl_foreach;
- cl->cl_foreach_open = _SLarray_cl_foreach_open;
- cl->cl_foreach_close = _SLarray_cl_foreach_close;
- }
-
- cl->cl_sizeof_type = type_size;
-
- if (NULL == (cl->cl_transfer_buf = (VOID_STAR) SLmalloc (type_size)))
- return -1;
-
- Registered_Types[type] = cl;
-
- if (-1 == register_new_datatype (name, type))
- return -1;
-
- if (cl->cl_cmp != NULL)
- {
- if (-1 == SLclass_add_binary_op (type, type, use_cmp_bin_op, use_cmp_bin_op_result))
- return -1;
- }
- else if (can_binop
- && (-1 == SLclass_add_binary_op (type, type, scalar_vector_bin_op, scalar_vector_bin_op_result)))
- return -1;
-
- cl->cl_anytype_typecast = _SLanytype_typecast;
-
- return 0;
-}
-
-int SLclass_add_math_op (unsigned char type,
- int (*handler)(int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*result) (int, unsigned char, unsigned char *))
-{
- SLang_Class_Type *cl = _SLclass_get_class (type);
-
- cl->cl_math_op = handler;
- cl->cl_math_op_result_type = result;
- return 0;
-}
-
-int SLclass_add_binary_op (unsigned char a, unsigned char b,
- int (*f) (int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*r) (int, unsigned char, unsigned char, unsigned char *))
-{
- SLang_Class_Type *cl;
- SL_OOBinary_Type *ab;
-
- if ((f == NULL) || (r == NULL))
- {
- SLang_verror (SL_INVALID_PARM, "SLclass_add_binary_op");
- return -1;
- }
-
- cl = _SLclass_get_class (a);
- (void) _SLclass_get_class (b);
-
- if (NULL == (ab = (SL_OOBinary_Type *) SLmalloc (sizeof(SL_OOBinary_Type))))
- return -1;
-
- ab->data_type = b;
- ab->binary_function = f;
- ab->binary_result = r;
- ab->next = cl->cl_binary_ops;
- cl->cl_binary_ops = ab;
-
- if ((a != SLANG_ARRAY_TYPE)
- && (b != SLANG_ARRAY_TYPE))
- {
- if ((-1 == _SLarray_add_bin_op (a))
- || (-1 == _SLarray_add_bin_op (b)))
- return -1;
- }
-
- return 0;
-}
-
-int SLclass_add_unary_op (unsigned char type,
- int (*f)(int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*r)(int, unsigned char, unsigned char *))
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- if ((f == NULL) || (r == NULL))
- {
- SLang_verror (SL_INVALID_PARM, "SLclass_add_unary_op");
- return -1;
- }
-
- cl->cl_unary_op = f;
- cl->cl_unary_op_result_type = r;
-
- return 0;
-}
-
-int SLclass_add_app_unary_op (unsigned char type,
- int (*f)(int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR),
- int (*r)(int, unsigned char, unsigned char *))
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- if ((f == NULL) || (r == NULL))
- {
- SLang_verror (SL_INVALID_PARM, "SLclass_add_app_unary_op");
- return -1;
- }
-
- cl->cl_app_unary_op = f;
- cl->cl_app_unary_op_result_type = r;
-
- return 0;
-}
-
-int SLclass_set_pop_function (SLang_Class_Type *cl, int (*f)(unsigned char, VOID_STAR))
-{
- if (cl == NULL) return -1;
- cl->cl_pop = f;
-
- return 0;
-}
-
-int SLclass_set_push_function (SLang_Class_Type *cl, int (*f)(unsigned char, VOID_STAR))
-{
- if (cl == NULL) return -1;
- cl->cl_push = f;
-
- return 0;
-}
-
-int SLclass_set_string_function (SLang_Class_Type *cl, char *(*f)(unsigned char, VOID_STAR))
-{
- if (cl == NULL) return -1;
-
- cl->cl_string = f;
- return 0;
-}
-
-int SLclass_set_destroy_function (SLang_Class_Type *cl, void (*f)(unsigned char, VOID_STAR))
-{
- if (cl == NULL) return -1;
-
- cl->cl_destroy = f;
- return 0;
-}
-
-int SLclass_set_sget_function (SLang_Class_Type *cl, int (*f)(unsigned char, char *))
-{
- if (cl == NULL) return -1;
- cl->cl_sget = f;
- return 0;
-}
-
-int SLclass_set_sput_function (SLang_Class_Type *cl, int (*f)(unsigned char, char *))
-{
- if (cl == NULL) return -1;
- cl->cl_sput = f;
- return 0;
-}
-
-int SLclass_set_aget_function (SLang_Class_Type *cl, int (*f)(unsigned char, unsigned int))
-{
- if (cl == NULL) return -1;
- cl->cl_aget = f;
- return 0;
-}
-
-int SLclass_set_aput_function (SLang_Class_Type *cl, int (*f)(unsigned char, unsigned int))
-{
- if (cl == NULL) return -1;
- cl->cl_aput = f;
- return 0;
-}
-
-int SLclass_set_anew_function (SLang_Class_Type *cl, int (*f)(unsigned char, unsigned int))
-{
- if (cl == NULL) return -1;
- cl->cl_anew = f;
- return 0;
-}
-
-/* Misc */
-void _SLclass_type_mismatch_error (unsigned char a, unsigned char b)
-{
- SLang_verror (SL_TYPE_MISMATCH, "Expecting %s, found %s",
- SLclass_get_datatype_name (a),
- SLclass_get_datatype_name (b));
-}
-
-/* */
-
-static int null_binary_fun (int op,
- unsigned char a, VOID_STAR ap, unsigned int na,
- unsigned char b, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- int *ic;
- unsigned int i;
- int c;
-
- (void) ap; (void) bp;
-
- switch (op)
- {
- case SLANG_EQ:
- c = (a == b);
- break;
-
- case SLANG_NE:
- c = (a != b);
- break;
-
- default:
- return 0;
- }
-
- if (na > nb) nb = na;
- ic = (int *) cp;
- for (i = 0; i < nb; i++)
- ic[i] = c;
-
- return 1;
-}
-
-static char *get_binary_op_string (int op)
-{
- static char *ops[SLANG_MOD] =
- {
- "+", "=", "*", "/", "==", "!=", ">", ">=", "<", "<=", "^",
- "or", "and", "&", "|", "xor", "shl", "shr", "mod"
- };
-
- if ((op > SLANG_MOD) || (op <= 0))
- return "??";
- return ops[op - 1];
-}
-
-int (*_SLclass_get_binary_fun (int op,
- SLang_Class_Type *a_cl, SLang_Class_Type *b_cl,
- SLang_Class_Type **c_cl, int do_error))
-(int,
- unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR, unsigned int,
- VOID_STAR)
-{
- SL_OOBinary_Type *bt;
- unsigned char a, b, c;
-
- a = a_cl->cl_data_type;
- b = b_cl->cl_data_type;
-
- if ((a == SLANG_NULL_TYPE) || (b == SLANG_NULL_TYPE))
- {
- *c_cl = _SLclass_get_class (SLANG_INT_TYPE);
- return null_binary_fun;
- }
-
- bt = a_cl->cl_binary_ops;
-
- while (bt != NULL)
- {
- if (bt->data_type == b)
- {
- if (1 != (*bt->binary_result)(op, a, b, &c))
- break;
-
- if (c == a) *c_cl = a_cl;
- else if (c == b) *c_cl = b_cl;
- else *c_cl = _SLclass_get_class (c);
-
- return bt->binary_function;
- }
-
- bt = bt->next;
- }
-
- if (do_error)
- SLang_verror (SL_TYPE_MISMATCH, "%s %s %s is not possible",
- a_cl->cl_name, get_binary_op_string (op), b_cl->cl_name);
-
- *c_cl = NULL;
- return NULL;
-}
-
-int (*_SLclass_get_unary_fun (int op,
- SLang_Class_Type *a_cl,
- SLang_Class_Type **b_cl,
- int utype))
-(int, unsigned char, VOID_STAR, unsigned int, VOID_STAR)
-{
- int (*f)(int, unsigned char, VOID_STAR, unsigned int, VOID_STAR);
- int (*r)(int, unsigned char, unsigned char *);
- unsigned char a;
- unsigned char b;
-
- switch (utype)
- {
- case _SLANG_BC_UNARY:
- f = a_cl->cl_unary_op;
- r = a_cl->cl_unary_op_result_type;
- break;
-
- case _SLANG_BC_MATH_UNARY:
- f = a_cl->cl_math_op;
- r = a_cl->cl_math_op_result_type;
- break;
-
- case _SLANG_BC_APP_UNARY:
- f = a_cl->cl_app_unary_op;
- r = a_cl->cl_app_unary_op_result_type;
- break;
-
- default:
- f = NULL;
- r = NULL;
- }
-
- a = a_cl->cl_data_type;
- if ((f != NULL) && (r != NULL) && (1 == (*r) (op, a, &b)))
- {
- if (a == b)
- *b_cl = a_cl;
- else
- *b_cl = _SLclass_get_class (b);
- return f;
- }
-
- SLang_verror (SL_TYPE_MISMATCH, "undefined unary operation/function on %s",
- a_cl->cl_name);
-
- *b_cl = NULL;
-
- return NULL;
-}
-
-int
-SLclass_typecast (unsigned char to_type, int is_implicit, int allow_array)
-{
- unsigned char from_type;
- SLang_Class_Type *cl_to, *cl_from;
- SLang_Object_Type obj;
- VOID_STAR ap;
- VOID_STAR bp;
- int status;
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- from_type = obj.data_type;
- if (from_type == to_type)
- {
- SLang_push (&obj);
- return 0;
- }
-
- cl_from = _SLclass_get_class (from_type);
-
- /* Since the typecast functions are designed to work on arrays,
- * get the pointer to the value instead of just &obj.v.
- */
- ap = _SLclass_get_ptr_to_value (cl_from, &obj);
-
- if ((from_type == SLANG_ARRAY_TYPE)
- && (allow_array || (to_type != SLANG_ANY_TYPE)))
- {
- if (allow_array == 0)
- goto return_error;
-
- cl_to = _SLclass_get_class (SLANG_ARRAY_TYPE);
- bp = cl_to->cl_transfer_buf;
- status = _SLarray_typecast (from_type, ap, 1, to_type, bp, is_implicit);
- }
- else
- {
- int (*t) (unsigned char, VOID_STAR, unsigned int, unsigned char, VOID_STAR);
-
- if (NULL == (t = _SLclass_get_typecast (from_type, to_type, is_implicit)))
- {
- SLang_free_object (&obj);
- return -1;
- }
-
- cl_to = _SLclass_get_class (to_type);
- bp = cl_to->cl_transfer_buf;
- status = (*t) (from_type, ap, 1, to_type, bp);
- }
-
- if (1 == status)
- {
- if (-1 == (*cl_to->cl_apush)(to_type, bp))
- {
- (*cl_to->cl_adestroy) (to_type, bp);
- SLang_free_object (&obj);
- return -1;
- }
-
- /* cl_apush will push a copy, so destry this one */
- (*cl_to->cl_adestroy) (to_type, bp);
- SLang_free_object (&obj);
- return 0;
- }
-
- return_error:
-
- SLang_verror (SL_TYPE_MISMATCH, "Unable to typecast %s to %s",
- cl_from->cl_name,
- SLclass_get_datatype_name (to_type));
- SLang_free_object (&obj);
- return -1;
-}
-
-int (*_SLclass_get_typecast (unsigned char from, unsigned char to, int is_implicit))
-(unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR)
-{
- SL_Typecast_Type *t;
- SLang_Class_Type *cl_from;
-
- cl_from = _SLclass_get_class (from);
-
- t = cl_from->cl_typecast_funs;
- while (t != NULL)
- {
- if (t->data_type != to)
- {
- t = t->next;
- continue;
- }
-
- if (is_implicit && (t->allow_implicit == 0))
- break;
-
- return t->typecast;
- }
-
- if (to == SLANG_ANY_TYPE)
- return _SLanytype_typecast;
-
- if ((is_implicit == 0)
- && (cl_from->cl_void_typecast != NULL))
- return cl_from->cl_void_typecast;
-
- SLang_verror (SL_TYPE_MISMATCH, "Unable to typecast %s to %s",
- cl_from->cl_name,
- SLclass_get_datatype_name (to));
-
- return NULL;
-}
-
-int
-SLclass_add_typecast (unsigned char from, unsigned char to,
- int (*f)_PROTO((unsigned char, VOID_STAR, unsigned int,
- unsigned char, VOID_STAR)),
- int allow_implicit)
-{
- SL_Typecast_Type *t;
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (from);
- if (to == SLANG_VOID_TYPE)
- {
- cl->cl_void_typecast = f;
- return 0;
- }
-
- (void) _SLclass_get_class (to);
-
- if (NULL == (t = (SL_Typecast_Type *) SLmalloc (sizeof (SL_Typecast_Type))))
- return -1;
-
- SLMEMSET((char *) t, 0, sizeof(SL_Typecast_Type));
- t->data_type = to;
- t->next = cl->cl_typecast_funs;
- t->typecast = f;
- t->allow_implicit = allow_implicit;
-
- cl->cl_typecast_funs = t;
-
- return 0;
-}
-
-SLang_MMT_Type *SLang_pop_mmt (unsigned char type) /*{{{*/
-{
- SLang_MMT_Type *mmt;
-
- if (-1 == SLclass_pop_ptr_obj (type, (VOID_STAR *) &mmt))
- mmt = NULL;
- return mmt;
-
-#if 0
- SLang_Object_Type obj;
- SLang_Class_Type *cl;
-
- if (_SLang_pop_object_of_type (type, &obj))
- return NULL;
-
- cl = _SLclass_get_class (type);
- if ((cl->cl_class_type == SLANG_CLASS_TYPE_MMT)
- && (obj.data_type == type))
- {
- return obj.v.ref;
- }
-
- _SLclass_type_mismatch_error (type, obj.data_type);
- SLang_free_object (&obj);
- return NULL;
-#endif
-}
-
-/*}}}*/
-
-int SLang_push_mmt (SLang_MMT_Type *ref) /*{{{*/
-{
- if (ref == NULL)
- return SLang_push_null ();
-
- ref->count += 1;
-
- if (0 == SLclass_push_ptr_obj (ref->data_type, (VOID_STAR) ref))
- return 0;
-
- ref->count -= 1;
- return -1;
-}
-
-/*}}}*/
-
-void SLang_inc_mmt (SLang_MMT_Type *ref)
-{
- if (ref != NULL)
- ref->count += 1;
-}
-
-VOID_STAR SLang_object_from_mmt (SLang_MMT_Type *ref)
-{
- if (ref == NULL)
- return NULL;
-
- return ref->user_data;
-}
-
-SLang_MMT_Type *SLang_create_mmt (unsigned char t, VOID_STAR p)
-{
- SLang_MMT_Type *ref;
-
- (void) _SLclass_get_class (t); /* check to see if it is registered */
-
- if (NULL == (ref = (SLang_MMT_Type *) SLmalloc (sizeof (SLang_MMT_Type))))
- return NULL;
-
- SLMEMSET ((char *) ref, 0, sizeof (SLang_MMT_Type));
-
- ref->data_type = t;
- ref->user_data = p;
- /* FIXME!! To be consistent with other types, the reference count should
- * be set to 1 here. However, doing so will require other code changes
- * involving the use of MMTs. For instance, SLang_free_mmt would have
- * to be called after every push of the MMT.
- */
- return ref;
-}
-
-void SLang_free_mmt (SLang_MMT_Type *ref)
-{
- unsigned char type;
- SLang_Class_Type *cl;
-
- if (ref == NULL)
- return;
-
- /* This can be zero if SLang_create_mmt is called followed
- * by this routine before anything gets a chance to attach itself
- * to it.
- */
- if (ref->count > 1)
- {
- ref->count -= 1;
- return;
- }
-
- type = ref->data_type;
- cl = _SLclass_get_class (type);
- (*cl->cl_user_destroy_fun) (type, ref->user_data);
- SLfree ((char *)ref);
-}
-
-int SLang_push_value (unsigned char type, VOID_STAR v)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- return (*cl->cl_apush)(type, v);
-}
-
-int SLang_pop_value (unsigned char type, VOID_STAR v)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- return (*cl->cl_apop)(type, v);
-}
-
-void SLang_free_value (unsigned char type, VOID_STAR v)
-{
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
- (*cl->cl_adestroy) (type, v);
-}
-
-/* These routines are very low-level and are designed for application data
- * types to access the stack from their push/pop methods. The int and
- * pointer versions are in slang.c
- */
-#if SLANG_HAS_FLOAT
-int SLclass_push_double_obj (unsigned char type, double x)
-{
- SLang_Object_Type obj;
- obj.data_type = type;
- obj.v.double_val = x;
- return SLang_push (&obj);
-}
-int SLclass_push_float_obj (unsigned char type, float x)
-{
- SLang_Object_Type obj;
- obj.data_type = type;
- obj.v.float_val = x;
- return SLang_push (&obj);
-}
-
-#endif
-
-int SLclass_push_long_obj (unsigned char type, long x)
-{
- SLang_Object_Type obj;
- obj.data_type = type;
- obj.v.long_val = x;
- return SLang_push (&obj);
-}
-
-int SLclass_push_short_obj (unsigned char type, short x)
-{
- SLang_Object_Type obj;
- obj.data_type = type;
- obj.v.short_val = x;
- return SLang_push (&obj);
-}
-
-int SLclass_push_char_obj (unsigned char type, char x)
-{
- SLang_Object_Type obj;
- obj.data_type = type;
- obj.v.char_val = x;
- return SLang_push (&obj);
-}
-
-#if SLANG_HAS_FLOAT
-int SLclass_pop_double_obj (unsigned char type, double *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.double_val;
- return 0;
-}
-
-int SLclass_pop_float_obj (unsigned char type, float *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.float_val;
- return 0;
-}
-#endif
-
-int SLclass_pop_long_obj (unsigned char type, long *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.long_val;
- return 0;
-}
-
-int SLclass_pop_int_obj (unsigned char type, int *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.int_val;
- return 0;
-}
-
-int SLclass_pop_short_obj (unsigned char type, short *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.short_val;
- return 0;
-}
-
-int SLclass_pop_char_obj (unsigned char type, char *x)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- return -1;
-
- *x = obj.v.char_val;
- return 0;
-}
-
-int SLclass_pop_ptr_obj (unsigned char type, VOID_STAR *s)
-{
- SLang_Object_Type obj;
-
- if (-1 == _SLang_pop_object_of_type (type, &obj, 0))
- {
- *s = (VOID_STAR) NULL;
- return -1;
- }
- *s = obj.v.ptr_val;
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slcmd.c b/mdk-stage1/slang/slcmd.c
deleted file mode 100644
index 4a00a90fc..000000000
--- a/mdk-stage1/slang/slcmd.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/* cmd line facility for slang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#if SLANG_HAS_FLOAT
-# include <math.h>
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifndef HAVE_STDLIB_H
-/* Oh dear. Where is the prototype for atof? If not in stdlib, then
- * I do not know where. Not in math.h onsome systems either.
- */
-extern double atof ();
-#endif
-
-static SLcmd_Cmd_Type *SLcmd_find_command (char *s, SLcmd_Cmd_Type *cmd)
-{
- char *cmdstr;
- char chs = *s++, ch;
-
- while ((cmd->cmdfun != NULL)
- && (NULL != (cmdstr = cmd->cmd))
- && (0 != (ch = *cmdstr++)))
- {
- if ((ch == chs) && !strcmp (s, cmdstr)) return cmd;
- cmd++;
- }
- return NULL;
-}
-
-static int extract_token (char **strptr, char *buf)
-{
- char *s, *b;
- char ch, quote;
-
- *buf = 0;
-
- s = *strptr;
- while (((ch = *s) != 0)
- && ((ch == ' ') || (ch == '\t') || (ch == '\n')))
- s++;
-
- *strptr = s;
-
- if (ch == 0) return 0;
- if (ch == '%') return 0;
-
- b = buf;
-
- *b++ = ch;
- s++;
-
- if ((ch == '\'') || (ch == '"'))
- {
- quote = ch;
- while ((ch = *s) != 0)
- {
- s++;
- *b++ = ch;
- if (ch == quote)
- break;
-
- if (ch == '\\')
- {
- if (0 == (ch = *s))
- break;
- *b++ = ch;
- s++;
- }
- }
- *strptr = s;
- *b = 0;
- return 1;
- }
-
- while (((ch = *s) != 0)
- && (ch != ' ')
- && (ch != '\t')
- && (ch != '\n')
- && (ch != '%'))
- *b++ = *s++;
-
- *strptr = s;
- *b = 0;
- return 1;
-}
-
-static int allocate_arg_space (SLcmd_Cmd_Table_Type *table, int argc, unsigned int *space_ptr)
-{
- unsigned int space = *space_ptr;
- char *p;
-
- if (argc + 1 < (int) space)
- return 0;
-
- if (space > 128)
- {
- if (space > 1024) space += 1024;
- else space += 128;
- }
- else space += 32;
-
- if (NULL == (p = SLrealloc ((char *)table->string_args, space * sizeof (char *))))
- return -1;
- table->string_args = (char **)p;
- table->string_args [argc] = NULL;
-
- if (NULL == (p = SLrealloc ((char *)table->int_args, space * sizeof (int))))
- return -1;
- table->int_args = (int *)p;
-
- if (NULL == (p = SLrealloc ((char *)table->double_args, space * sizeof (double))))
- return -1;
- table->double_args = (double *)p;
-
- if (NULL == (p = SLrealloc ((char *)table->arg_type, space * sizeof (unsigned char))))
- return -1;
- table->arg_type = (unsigned char *)p;
-
- *space_ptr = space;
- return 0;
-}
-
-int SLcmd_execute_string (char *str, SLcmd_Cmd_Table_Type *table)
-{
- char *s, *b = NULL, *arg_type, *last_str, *cmd_name;
- SLcmd_Cmd_Type *cmd;
- char *buf;
- int token_present;
- int i;
- int status;
- unsigned int len;
- int argc;
- unsigned int space;
-
- table->argc = 0;
- table->string_args = NULL;
- table->int_args = NULL;
- table->double_args = NULL;
- table->arg_type = NULL;
-
- buf = SLmake_string (str);
- if (buf == NULL)
- return -1;
-
- status = extract_token (&str, buf);
- if (status <= 0)
- {
- SLfree (buf);
- return status;
- }
-
- if (((len = strlen (buf)) >= 32)
- || (NULL == (cmd = SLcmd_find_command (buf, table->table))))
- {
- SLang_verror (SL_UNDEFINED_NAME,"%s: invalid command", buf);
- SLfree (buf);
- return -1;
- }
-
- if (NULL == (cmd_name = SLmake_string (buf)))
- {
- SLfree (buf);
- return -1;
- }
-
- space = 0;
- argc = 0;
- if (-1 == allocate_arg_space (table, argc, &space))
- {
- SLfree (buf);
- return -1;
- }
- table->arg_type[argc] = SLANG_STRING_TYPE;
- table->string_args[argc++] = cmd_name;
-
- arg_type = cmd->arg_type;
- status = -1;
- while (*arg_type)
- {
- int guess_type = 0;
-
- last_str = str;
-
- if (-1 == allocate_arg_space (table, argc, &space))
- goto error;
-
- if (-1 == (token_present = extract_token (&str, buf)))
- goto error;
-
- table->string_args[argc] = NULL;
-
- if (token_present)
- {
- b = buf;
- len = strlen (b);
-
- if ((*b == '"') && (len > 1))
- {
- b++;
- len -= 2;
- b[len] = 0;
- guess_type = SLANG_STRING_TYPE;
- SLexpand_escaped_string (buf, b, b + len);
- len = strlen (buf);
- }
- else if ((*b == '\'') && (len > 1))
- {
- char ch;
- b++;
- len -= 2;
- b[len] = 0;
- guess_type = SLANG_INT_TYPE;
- ch = *b;
- if (ch == '\\')
- (void) _SLexpand_escaped_char (b, &ch);
- sprintf (buf, "%d", (unsigned char) ch);
- len = strlen (buf);
- }
- else guess_type = SLang_guess_type (buf);
- }
-
- switch (*arg_type++)
- {
- /* variable argument number */
- case 'v':
- if (token_present == 0) break;
- case 'V':
- if (token_present == 0)
- {
- SLang_verror (SL_INVALID_PARM, "%s: Expecting argument", cmd_name);
- goto error;
- }
-
- while (*last_str == ' ') last_str++;
- len = strlen (last_str);
- str = last_str + len;
-
- s = SLmake_nstring (last_str, len);
- if (s == NULL) goto error;
-
- table->arg_type[argc] = SLANG_STRING_TYPE;
- table->string_args[argc++] = s;
- break;
-
- case 's':
- if (token_present == 0) break;
- case 'S':
- if (token_present == 0)
- {
- SLang_verror (SL_TYPE_MISMATCH, "%s: Expecting string argument", cmd_name);
- goto error;
- }
-
- s = SLmake_nstring (buf, len);
- if (s == NULL) goto error;
- table->arg_type[argc] = SLANG_STRING_TYPE;
- table->string_args[argc++] = s;
- break;
-
- /* integer argument */
- case 'i':
- if (token_present == 0) break;
- case 'I':
- if ((token_present == 0) || (SLANG_INT_TYPE != guess_type))
- {
- SLang_verror (SL_TYPE_MISMATCH, "%s: Expecting integer argument", cmd_name);
- goto error;
- }
-
- table->arg_type[argc] = SLANG_INT_TYPE;
- table->int_args[argc++] = SLatoi((unsigned char *) buf);
- break;
-
- /* floating point arg */
-#if SLANG_HAS_FLOAT
- case 'f':
- if (token_present == 0) break;
- case 'F':
- if ((token_present == 0) || (SLANG_STRING_TYPE == guess_type))
- {
- SLang_verror (SL_TYPE_MISMATCH, "%s: Expecting double argument", cmd_name);
- goto error;
- }
- table->arg_type[argc] = SLANG_DOUBLE_TYPE;
- table->double_args[argc++] = atof(buf);
- break;
-#endif
- /* Generic type */
- case 'g':
- if (token_present == 0) break;
- case 'G':
- if (token_present == 0)
- {
- SLang_verror (SL_TYPE_MISMATCH, "%s: Expecting argument", cmd_name);
- goto error;
- }
-
- switch (guess_type)
- {
- case SLANG_INT_TYPE:
- table->arg_type[argc] = SLANG_INT_TYPE;
- table->int_args[argc++] = SLatoi((unsigned char *) buf);
- break;
-
- case SLANG_STRING_TYPE:
- s = SLmake_nstring (buf, len);
- if (s == NULL) goto error;
-
- table->arg_type[argc] = SLANG_STRING_TYPE;
- table->string_args[argc++] = s;
- break;
-#if SLANG_HAS_FLOAT
- case SLANG_DOUBLE_TYPE:
- table->arg_type[argc] = SLANG_DOUBLE_TYPE;
- table->double_args[argc++] = atof(buf);
-#endif
- }
- break;
- }
- }
-
- /* call function */
- status = (*cmd->cmdfun)(argc, table);
-
- error:
- if (table->string_args != NULL) for (i = 0; i < argc; i++)
- {
- if (NULL != table->string_args[i])
- {
- SLfree (table->string_args[i]);
- table->string_args[i] = NULL;
- }
- }
- SLfree ((char *)table->string_args); table->string_args = NULL;
- SLfree ((char *)table->double_args); table->double_args = NULL;
- SLfree ((char *)table->int_args); table->int_args = NULL;
- SLfree ((char *)table->arg_type); table->arg_type = NULL;
-
- SLfree (buf);
- return status;
-}
-
diff --git a/mdk-stage1/slang/slcmplex.c b/mdk-stage1/slang/slcmplex.c
deleted file mode 100644
index b210dfc04..000000000
--- a/mdk-stage1/slang/slcmplex.c
+++ /dev/null
@@ -1,1142 +0,0 @@
-/* Complex Data Type definition for S-Lang */
-/* Copyright (c) 1997, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/* The rest of the file is enclosed in this #if */
-#if SLANG_HAS_COMPLEX
-
-#if SLANG_HAS_FLOAT
-# include <math.h>
-#endif
-
-#ifdef PI
-# undef PI
-#endif
-#define PI 3.14159265358979323846
-
-int SLang_pop_complex (double *r, double *i)
-{
- double *c;
-
- switch (SLang_peek_at_stack ())
- {
- case SLANG_COMPLEX_TYPE:
- if (-1 == SLclass_pop_ptr_obj (SLANG_COMPLEX_TYPE, (VOID_STAR *)&c))
- return -1;
- *r = c[0];
- *i = c[1];
- SLfree ((char *) c);
- break;
-
- default:
- *i = 0.0;
- if (-1 == SLang_pop_double (r, NULL, NULL))
- return -1;
- break;
-
- case -1:
- return -1;
- }
- return 0;
-}
-
-int SLang_push_complex (double r, double i)
-{
- double *c;
-
- c = (double *) SLmalloc (2 * sizeof (double));
- if (c == NULL)
- return -1;
-
- c[0] = r;
- c[1] = i;
-
- if (-1 == SLclass_push_ptr_obj (SLANG_COMPLEX_TYPE, (VOID_STAR) c))
- {
- SLfree ((char *) c);
- return -1;
- }
- return 0;
-}
-
-double *SLcomplex_times (double *c, double *a, double *b)
-{
- double a_real, b_real, a_imag, b_imag;
-
- a_real = a[0];
- b_real = b[0];
- a_imag = a[1];
- b_imag = b[1];
-
- c[0] = a_real * b_real - a_imag * b_imag;
- c[1] = a_imag * b_real + a_real * b_imag;
-
- return c;
-}
-
-double *SLcomplex_divide (double *c, double *a, double *b)
-{
- double a_real, b_real, a_imag, b_imag;
- double ratio, invden;
-
- a_real = a[0];
- b_real = b[0];
- a_imag = a[1];
- b_imag = b[1];
-
- /* Do it this way to avoid overflow in the denom */
- if (fabs(b_real) > fabs(b_imag))
- {
- ratio = b_imag / b_real;
- invden = 1.0 / (b_real + b_imag * ratio);
- c[0] = (a_real + ratio * a_imag) * invden;
- c[1] = (a_imag - a_real * ratio) * invden;
- }
- else
- {
- ratio = b_real / b_imag;
- invden = 1.0 / (b_real * ratio + b_imag);
- c[0] = (a_real * ratio + a_imag) * invden;
- c[1] = (a_imag * ratio - a_real) * invden;
- }
- return c;
-}
-
-/* a^b = exp (b log a); */
-double *SLcomplex_pow (double *c, double *a, double *b)
-{
- return SLcomplex_exp (c, SLcomplex_times (c, b, SLcomplex_log (c, a)));
-}
-
-static double *complex_dpow (double *c, double *a, double b)
-{
- SLcomplex_log (c, a);
- c[0] *= b;
- c[1] *= b;
- return SLcomplex_exp (c, c);
-}
-
-static double *dcomplex_pow (double *c, double a, double *b)
-{
- a = log (a);
- c[0] = a * b[0];
- c[1] = a * b[1];
- return SLcomplex_exp (c, c);
-}
-
-double SLcomplex_abs (double *z)
-{
- return SLmath_hypot (z[0], z[1]);
-}
-
-/* It appears that FORTRAN assumes that the branch cut for the log function
- * is along the -x axis. So, use this for atan2:
- */
-static double my_atan2 (double y, double x)
-{
- double val;
-
- val = atan (y/x);
-
- if (x >= 0)
- return val; /* I, IV */
-
- if (y <= 0) /* III */
- return val - PI;
-
- return PI + val; /* II */
-}
-
-static void polar_form (double *r, double *theta, double *z)
-{
- double x, y;
-
- *r = SLcomplex_abs (z);
-
- x = z[0];
- y = z[1];
-
- if (x == 0.0)
- {
- if (y >= 0)
- *theta = 0.5 * PI;
- else
- *theta = 1.5 * PI;
- }
- else *theta = my_atan2 (y, x);
-}
-
-double *SLcomplex_sin (double *sinz, double *z)
-{
- double x, y;
-
- x = z[0]; y = z[1];
- sinz[0] = sin (x) * cosh (y);
- sinz[1] = cos (x) * sinh (y);
- return sinz;
-}
-
-double *SLcomplex_cos (double *cosz, double *z)
-{
- double x, y;
-
- x = z[0]; y = z[1];
- cosz[0] = cos (x) * cosh (y);
- cosz[1] = -sin (x) * sinh (y);
- return cosz;
-}
-
-double *SLcomplex_exp (double *expz, double *z)
-{
- double r, i;
-
- r = exp (z[0]);
- i = z[1];
- expz[0] = r * cos (i);
- expz[1] = r * sin (i);
- return expz;
-}
-
-double *SLcomplex_log (double *logz, double *z)
-{
- double r, theta;
-
- polar_form (&r, &theta, z); /* log R.e^(ix) = log R + ix */
- logz[0] = log(r);
- logz[1] = theta;
- return logz;
-}
-
-double *SLcomplex_log10 (double *log10z, double *z)
-{
- double l10 = log (10.0);
- (void) SLcomplex_log (log10z, z);
- log10z[0] = log10z[0] / l10;
- log10z[1] = log10z[1] / l10;
- return log10z;
-}
-
-double *SLcomplex_sqrt (double *sqrtz, double *z)
-{
- double r, x, y;
-
- x = z[0];
- y = z[1];
-
- r = SLmath_hypot (x, y);
-
- if (r == 0.0)
- {
- sqrtz [0] = sqrtz [1] = 0.0;
- return sqrtz;
- }
-
- if (x >= 0.0)
- {
- x = sqrt (0.5 * (r + x));
- y = 0.5 * y / x;
- }
- else
- {
- r = sqrt (0.5 * (r - x));
- x = 0.5 * y / r;
- y = r;
-
- if (x < 0.0)
- {
- x = -x;
- y = -y;
- }
- }
-
- sqrtz[0] = x;
- sqrtz[1] = y;
-
- return sqrtz;
-}
-
-double *SLcomplex_tan (double *tanz, double *z)
-{
- double x, y, invden;
-
- x = 2 * z[0];
- y = 2 * z[1];
- invden = 1.0 / (cos (x) + cosh (y));
- tanz[0] = invden * sin (x);
- tanz[1] = invden * sinh (y);
- return tanz;
-}
-
-/* Utility Function */
-static void compute_alpha_beta (double *z, double *alpha, double *beta)
-{
- double x, y, a, b;
-
- x = z[0];
- y = z[1];
- a = 0.5 * SLmath_hypot (x + 1, y);
- b = 0.5 * SLmath_hypot (x - 1, y);
-
- *alpha = a + b;
- *beta = a - b;
-}
-
-double *SLcomplex_asin (double *asinz, double *z)
-{
- double alpha, beta;
-
- compute_alpha_beta (z, &alpha, &beta);
- asinz[0] = asin (beta);
- asinz[1] = log (alpha + sqrt (alpha * alpha - 1));
- return asinz;
-}
-
-double *SLcomplex_acos (double *acosz, double *z)
-{
- double alpha, beta;
-
- compute_alpha_beta (z, &alpha, &beta);
- acosz[0] = acos (beta);
- acosz[1] = -log (alpha + sqrt (alpha * alpha - 1));
- return acosz;
-}
-
-double *SLcomplex_atan (double *atanz, double *z)
-{
- double x, y;
- double z1[2], z2[2];
-
- x = z[0]; y = z[1];
- z1[0] = x;
- z1[1] = 1 + y;
- z2[0] = -x;
- z2[1] = 1 - y;
-
- SLcomplex_log (z1, SLcomplex_divide (z2, z1, z2));
- atanz[0] = -0.5 * z1[1];
- atanz[1] = 0.5 * z1[0];
-
- return atanz;
-}
-
-double *SLcomplex_sinh (double *sinhz, double *z)
-{
- double x, y;
- x = z[0]; y = z[1];
- sinhz[0] = sinh (x) * cos (y);
- sinhz[1] = cosh (x) * sin (y);
- return sinhz;
-}
-
-double *SLcomplex_cosh (double *coshz, double *z)
-{
- double x, y;
- x = z[0]; y = z[1];
- coshz[0] = cosh (x) * cos (y);
- coshz[1] = sinh (x) * sin (y);
- return coshz;
-}
-
-double *SLcomplex_tanh (double *tanhz, double *z)
-{
- double x, y, invden;
- x = 2 * z[0];
- y = 2 * z[1];
- invden = 1.0 / (cosh (x) + cos (y));
- tanhz[0] = invden * sinh (x);
- tanhz[1] = invden * sin (y);
- return tanhz;
-}
-#if 0
-static double *not_implemented (char *fun, double *p)
-{
- SLang_verror (SL_NOT_IMPLEMENTED, "%s for complex numbers has not been implemented",
- fun);
- *p = -1.0;
- return p;
-}
-#endif
-/* Use: asinh(z) = -i asin(iz) */
-double *SLcomplex_asinh (double *asinhz, double *z)
-{
- double iz[2];
-
- iz[0] = -z[1];
- iz[1] = z[0];
-
- (void) SLcomplex_asin (iz, iz);
- asinhz[0] = iz[1];
- asinhz[1] = -iz[0];
-
- return asinhz;
-}
-
-/* Use: acosh (z) = i acos(z) */
-double *SLcomplex_acosh (double *acoshz, double *z)
-{
- double iz[2];
-
- (void) SLcomplex_acos (iz, z);
- acoshz[0] = -iz[1];
- acoshz[1] = iz[0];
-
- return acoshz;
-}
-
-/* Use: atanh(z) = -i atan(iz) */
-double *SLcomplex_atanh (double *atanhz, double *z)
-{
- double iz[2];
-
- iz[0] = -z[1];
- iz[1] = z[0];
-
- (void) SLcomplex_atan (iz, iz);
- atanhz[0] = iz[1];
- atanhz[1] = -iz[0];
-
- return atanhz;
-}
-
-static int complex_binary_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- (void) a; (void) b;
-
- switch (op)
- {
- default:
- case SLANG_POW:
- case SLANG_PLUS:
- case SLANG_MINUS:
- case SLANG_TIMES:
- case SLANG_DIVIDE:
- *c = SLANG_COMPLEX_TYPE;
- break;
-
- case SLANG_EQ:
- case SLANG_NE:
- *c = SLANG_CHAR_TYPE;
- break;
- }
- return 1;
-}
-
-static int complex_complex_binary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- double *a, *b, *c;
- unsigned int n, n_max;
- unsigned int da, db;
-
- (void) a_type;
- (void) b_type;
-
- a = (double *) ap;
- b = (double *) bp;
- c = (double *) cp;
- ic = (char *) cp;
-
- if (na == 1) da = 0; else da = 2;
- if (nb == 1) db = 0; else db = 2;
-
- if (na > nb) n_max = na; else n_max = nb;
- n_max = 2 * n_max;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] + b[0];
- c[n + 1] = a[1] + b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_MINUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] - b[0];
- c[n + 1] = a[1] - b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_TIMES:
- for (n = 0; n < n_max; n += 2)
- {
- SLcomplex_times (c + n, a, b);
- a += da; b += db;
- }
- break;
-
- case SLANG_DIVIDE: /* / */
- for (n = 0; n < n_max; n += 2)
- {
- if ((b[0] == 0.0) && (b[1] == 0.0))
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- SLcomplex_divide (c + n, a, b);
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ: /* == */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] == b[0]) && (a[1] == b[1]));
- a += da; b += db;
- }
- break;
-
- case SLANG_NE: /* != */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] != b[0]) || (a[1] != b[1]));
- a += da; b += db;
- }
- break;
-
- case SLANG_POW:
- for (n = 0; n < n_max; n += 2)
- {
- SLcomplex_pow (c + n, a, b);
- a += da; b += db;
- }
- break;
-
- }
-
- return 1;
-}
-
-static int complex_double_binary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- double *a, *b, *c;
- unsigned int n, n_max;
- unsigned int da, db;
-
- (void) a_type;
- (void) b_type;
-
- a = (double *) ap;
- b = (double *) bp;
- c = (double *) cp;
- ic = (char *) cp;
-
- if (na == 1) da = 0; else da = 2;
- if (nb == 1) db = 0; else db = 1;
-
- if (na > nb) n_max = na; else n_max = nb;
- n_max = 2 * n_max;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] + b[0];
- c[n + 1] = a[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_MINUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] - b[0];
- c[n + 1] = a[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_TIMES:
- for (n = 0; n < n_max; n += 2)
- {
- double b0 = b[0];
- c[n] = a[0] * b0;
- c[n + 1] = a[1] * b0;
- a += da; b += db;
- }
- break;
-
- case SLANG_DIVIDE: /* / */
- for (n = 0; n < n_max; n += 2)
- {
- double b0 = b[0];
- if (b0 == 0.0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = a[0] / b0;
- c[n + 1] = a[1] / b0;
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ: /* == */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] == b[0]) && (a[1] == 0.0));
- a += da; b += db;
- }
- break;
-
- case SLANG_NE: /* != */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] != b[0]) || (a[1] != 0.0));
- a += da; b += db;
- }
- break;
-
- case SLANG_POW:
- for (n = 0; n < n_max; n += 2)
- {
- complex_dpow (c + n, a, b[0]);
- a += da; b += db;
- }
- break;
- }
-
- return 1;
-}
-
-static int double_complex_binary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- double *a, *b, *c;
- unsigned int n, n_max;
- unsigned int da, db;
-
- (void) a_type;
- (void) b_type;
-
- a = (double *) ap;
- b = (double *) bp;
- c = (double *) cp;
- ic = (char *) cp;
-
- if (na == 1) da = 0; else da = 1;
- if (nb == 1) db = 0; else db = 2;
-
- if (na > nb) n_max = na; else n_max = nb;
- n_max = 2 * n_max;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] + b[0];
- c[n + 1] = b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_MINUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] - b[0];
- c[n + 1] = -b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_TIMES:
- for (n = 0; n < n_max; n += 2)
- {
- double a0 = a[0];
- c[n] = a0 * b[0];
- c[n + 1] = a0 * b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_DIVIDE: /* / */
- for (n = 0; n < n_max; n += 2)
- {
- double z[2];
- if ((b[0] == 0.0) && (b[1] == 0.0))
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- z[0] = a[0];
- z[1] = 0.0;
- SLcomplex_divide (c + n, z, b);
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ: /* == */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] == b[0]) && (0.0 == b[1]));
- a += da; b += db;
- }
- break;
-
- case SLANG_NE: /* != */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] != b[0]) || (0.0 != b[1]));
- a += da; b += db;
- }
- break;
-
- case SLANG_POW:
- for (n = 0; n < n_max; n += 2)
- {
- dcomplex_pow (c + n, a[0], b);
- a += da; b += db;
- }
- break;
- }
-
- return 1;
-}
-
-static int complex_generic_binary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- char *b;
- double *a, *c;
- unsigned int n, n_max;
- unsigned int da, db;
- unsigned int sizeof_b;
- SLang_To_Double_Fun_Type to_double;
-
- if (NULL == (to_double = SLarith_get_to_double_fun (b_type, &sizeof_b)))
- return 0;
-
- (void) a_type;
-
- a = (double *) ap;
- b = (char *) bp;
- c = (double *) cp;
- ic = (char *) cp;
-
- if (na == 1) da = 0; else da = 2;
- if (nb == 1) db = 0; else db = sizeof_b;
-
- if (na > nb) n_max = na; else n_max = nb;
- n_max = 2 * n_max;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_POW:
- for (n = 0; n < n_max; n += 2)
- {
- complex_dpow (c + n, a, to_double((VOID_STAR)b));
- a += da; b += db;
- }
- break;
-
- case SLANG_PLUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] + to_double((VOID_STAR)b);
- c[n + 1] = a[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_MINUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = a[0] - to_double((VOID_STAR)b);
- c[n + 1] = a[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_TIMES:
- for (n = 0; n < n_max; n += 2)
- {
- double b0 = to_double((VOID_STAR)b);
- c[n] = a[0] * b0;
- c[n + 1] = a[1] * b0;
- a += da; b += db;
- }
- break;
-
- case SLANG_DIVIDE: /* / */
- for (n = 0; n < n_max; n += 2)
- {
- double b0 = to_double((VOID_STAR)b);
- if (b0 == 0)
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- c[n] = a[0] / b0;
- c[n + 1] = a[1] / b0;
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ: /* == */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] == to_double((VOID_STAR)b)) && (a[1] == 0.0));
- a += da; b += db;
- }
- break;
-
- case SLANG_NE: /* != */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((a[0] != to_double((VOID_STAR)b)) || (a[1] != 0.0));
- a += da; b += db;
- }
- break;
- }
-
- return 1;
-}
-
-static int generic_complex_binary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- double *b, *c;
- char *a, *ic;
- unsigned int n, n_max;
- unsigned int da, db;
- unsigned int sizeof_a;
- SLang_To_Double_Fun_Type to_double;
-
- if (NULL == (to_double = SLarith_get_to_double_fun (a_type, &sizeof_a)))
- return 0;
-
- (void) b_type;
-
- a = (char *) ap;
- b = (double *) bp;
- c = (double *) cp;
- ic = (char *) cp;
-
- if (na == 1) da = 0; else da = sizeof_a;
- if (nb == 1) db = 0; else db = 2;
-
- if (na > nb) n_max = na; else n_max = nb;
- n_max = 2 * n_max;
-
- switch (op)
- {
- default:
- return 0;
- case SLANG_POW:
- for (n = 0; n < n_max; n += 2)
- {
- dcomplex_pow (c + n, to_double((VOID_STAR)a), b);
- a += da; b += db;
- }
- break;
-
- case SLANG_PLUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = to_double((VOID_STAR)a) + b[0];
- c[n + 1] = b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_MINUS:
- for (n = 0; n < n_max; n += 2)
- {
- c[n] = to_double((VOID_STAR)a) - b[0];
- c[n + 1] = -b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_TIMES:
- for (n = 0; n < n_max; n += 2)
- {
- double a0 = to_double((VOID_STAR)a);
- c[n] = a0 * b[0];
- c[n + 1] = a0 * b[1];
- a += da; b += db;
- }
- break;
-
- case SLANG_DIVIDE: /* / */
- for (n = 0; n < n_max; n += 2)
- {
- double z[2];
- if ((b[0] == 0.0) && (b[1] == 0.0))
- {
- SLang_Error = SL_DIVIDE_ERROR;
- return -1;
- }
- z[0] = to_double((VOID_STAR)a);
- z[1] = 0.0;
- SLcomplex_divide (c + n, z, b);
- a += da; b += db;
- }
- break;
-
- case SLANG_EQ: /* == */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((to_double((VOID_STAR)a) == b[0]) && (0.0 == b[1]));
- a += da; b += db;
- }
- break;
-
- case SLANG_NE: /* != */
- for (n = 0; n < n_max; n += 2)
- {
- ic[n/2] = ((to_double((VOID_STAR)a) != b[0]) || (0.0 != b[1]));
- a += da; b += db;
- }
- break;
- }
-
- return 1;
-}
-
-static int complex_unary_result (int op, unsigned char a, unsigned char *b)
-{
- (void) a;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUSPLUS:
- case SLANG_MINUSMINUS:
- case SLANG_CHS:
- case SLANG_MUL2:
- *b = SLANG_COMPLEX_TYPE;
- break;
-
- case SLANG_SQR: /* |Real|^2 + |Imag|^2 ==> double */
- case SLANG_ABS: /* |z| ==> double */
- *b = SLANG_DOUBLE_TYPE;
- break;
-
- case SLANG_SIGN:
- *b = SLANG_INT_TYPE;
- break;
- }
- return 1;
-}
-
-static int complex_unary (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- unsigned int n;
- double *a, *b;
- int *ic;
-
- (void) a_type;
-
- a = (double *) ap;
- b = (double *) bp;
- ic = (int *) bp;
-
- na = 2 * na;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUSPLUS:
- for (n = 0; n < na; n += 2) b[n] = (a[n] + 1);
- break;
- case SLANG_MINUSMINUS:
- for (n = 0; n < na; n += 2) b[n] = (a[n] - 1);
- break;
- case SLANG_CHS:
- for (n = 0; n < na; n += 2)
- {
- b[n] = -(a[n]);
- b[n + 1] = -(a[n + 1]);
- }
- break;
- case SLANG_SQR: /* |Real|^2 + |Imag|^2 ==> double */
- for (n = 0; n < na; n += 2)
- b[n/2] = (a[n] * a[n] + a[n + 1] * a[n + 1]);
- break;
-
- case SLANG_MUL2:
- for (n = 0; n < na; n += 2)
- {
- b[n] = (2 * a[n]);
- b[n + 1] = (2 * a[n + 1]);
- }
- break;
-
- case SLANG_ABS: /* |z| ==> double */
- for (n = 0; n < na; n += 2)
- b[n/2] = SLcomplex_abs (a + n);
- break;
-
- case SLANG_SIGN:
- /* Another creative extension. Lets return an integer which indicates
- * whether the complex number is in the upperhalf plane or not.
- */
- for (n = 0; n < na; n += 2)
- {
- if (a[n + 1] < 0.0) ic[n/2] = -1;
- else if (a[n + 1] > 0.0) ic[n/2] = 1;
- else ic[n/2] = 0;
- }
- break;
- }
-
- return 1;
-}
-
-static int
-complex_typecast (unsigned char from_type, VOID_STAR from, unsigned int num,
- unsigned char to_type, VOID_STAR to)
-{
- double *z;
- double *d;
- char *i;
- unsigned int n;
- unsigned int sizeof_i;
- SLang_To_Double_Fun_Type to_double;
-
- (void) to_type;
-
- z = (double *) to;
-
- switch (from_type)
- {
- default:
- if (NULL == (to_double = SLarith_get_to_double_fun (from_type, &sizeof_i)))
- return 0;
- i = (char *) from;
- for (n = 0; n < num; n++)
- {
- *z++ = to_double ((VOID_STAR) i);
- *z++ = 0.0;
-
- i += sizeof_i;
- }
- break;
-
- case SLANG_DOUBLE_TYPE:
- d = (double *) from;
- for (n = 0; n < num; n++)
- {
- *z++ = d[n];
- *z++ = 0.0;
- }
- break;
- }
-
- return 1;
-}
-
-static void complex_destroy (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- SLfree ((char *)*(double **) ptr);
-}
-
-static int complex_push (unsigned char type, VOID_STAR ptr)
-{
- double *z;
-
- (void) type;
- z = *(double **) ptr;
- return SLang_push_complex (z[0], z[1]);
-}
-
-static int complex_pop (unsigned char type, VOID_STAR ptr)
-{
- double *z;
-
- (void) type;
- z = *(double **) ptr;
- return SLang_pop_complex (&z[0], &z[1]);
-}
-
-int _SLinit_slcomplex (void)
-{
- SLang_Class_Type *cl;
- unsigned char *types;
-
- if (NULL == (cl = SLclass_allocate_class ("Complex_Type")))
- return -1;
-
- (void) SLclass_set_destroy_function (cl, complex_destroy);
- (void) SLclass_set_push_function (cl, complex_push);
- (void) SLclass_set_pop_function (cl, complex_pop);
-
- if (-1 == SLclass_register_class (cl, SLANG_COMPLEX_TYPE, 2 * sizeof (double),
- SLANG_CLASS_TYPE_VECTOR))
- return -1;
-
- types = _SLarith_Arith_Types;
- while (*types != SLANG_DOUBLE_TYPE)
- {
- unsigned char t = *types++;
-
- if ((-1 == SLclass_add_binary_op (t, SLANG_COMPLEX_TYPE, generic_complex_binary, complex_binary_result))
- || (-1 == SLclass_add_binary_op (SLANG_COMPLEX_TYPE, t, complex_generic_binary, complex_binary_result))
- || (-1 == (SLclass_add_typecast (t, SLANG_COMPLEX_TYPE, complex_typecast, 1))))
- return -1;
- }
-
- if ((-1 == (SLclass_add_binary_op (SLANG_COMPLEX_TYPE, SLANG_COMPLEX_TYPE, complex_complex_binary, complex_binary_result)))
- || (-1 == (SLclass_add_binary_op (SLANG_COMPLEX_TYPE, SLANG_DOUBLE_TYPE, complex_double_binary, complex_binary_result)))
- || (-1 == (SLclass_add_binary_op (SLANG_DOUBLE_TYPE, SLANG_COMPLEX_TYPE, double_complex_binary, complex_binary_result)))
- || (-1 == (SLclass_add_unary_op (SLANG_COMPLEX_TYPE, complex_unary, complex_unary_result)))
- || (-1 == (SLclass_add_typecast (SLANG_DOUBLE_TYPE, SLANG_COMPLEX_TYPE, complex_typecast, 1))))
- return -1;
-
- return 0;
-}
-
-#endif /* if SLANG_HAS_COMPLEX */
-
diff --git a/mdk-stage1/slang/slcompat.c b/mdk-stage1/slang/slcompat.c
deleted file mode 100644
index 5aa122483..000000000
--- a/mdk-stage1/slang/slcompat.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* These functions are provided for backward compatibility and are obsolete.
- * Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/* Compatibility */
-int SLang_init_slunix (void)
-{
- if ((-1 == SLang_init_posix_dir ())
- || (-1 == SLang_init_posix_process ())
- || (-1 == SLdefine_for_ifdef ("__SLUNIX__")))
- return -1;
-
- return 0;
-}
-
-int SLang_init_slfile (void)
-{
- if ((-1 == SLang_init_stdio ())
- || (-1 == SLang_init_posix_dir ())
- || (-1 == SLdefine_for_ifdef("__SLFILE__")))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slcurses.c b/mdk-stage1/slang/slcurses.c
deleted file mode 100644
index f1212afc8..000000000
--- a/mdk-stage1/slang/slcurses.c
+++ /dev/null
@@ -1,972 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include <signal.h>
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-#include "slcurses.h"
-
-/* This file is meant to implement a primitive curses implementation in
- * terms of SLsmg calls. The fact is that the interfaces are sufficiently
- * different that a 100% emulation is not possible.
- */
-
-SLcurses_Window_Type *SLcurses_Stdscr;
-int SLcurses_Esc_Delay = 150; /* 0.15 seconds */
-SLtt_Char_Type SLcurses_Acs_Map [128];
-int SLcurses_Is_Endwin = 1;
-int SLcurses_Num_Colors = 8;
-
-static void blank_line (SLsmg_Char_Type *b, unsigned int len, SLsmg_Char_Type color)
-{
- SLsmg_Char_Type *bmax;
-
- bmax = b + len;
- color = SLSMG_BUILD_CHAR(' ', color);
-
- while (b < bmax) *b++ = color;
-}
-
-static int va_mvprintw (SLcurses_Window_Type *w, int r, int c, int do_move,
- char *fmt, va_list ap)
-{
- char buf[1024];
-
- if (do_move) SLcurses_wmove (w, r, c);
-
- (void) _SLvsnprintf (buf, sizeof(buf), fmt, ap);
-
- SLcurses_waddnstr (w, buf, -1);
- return 0;
-}
-
-int SLcurses_mvprintw (int r, int c, char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- va_mvprintw (SLcurses_Stdscr, r, c, 1, fmt, ap);
- va_end(ap);
-
- return 0;
-}
-
-int SLcurses_mvwprintw (SLcurses_Window_Type *w, int r, int c, char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- va_mvprintw (w, r, c, 1, fmt, ap);
- va_end(ap);
-
- return 0;
-}
-
-int SLcurses_wprintw (SLcurses_Window_Type *w, char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- va_mvprintw (w, 0, 0, 0, fmt, ap);
- va_end(ap);
-
- return 0;
-}
-
-int SLcurses_printw (char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- va_mvprintw (SLcurses_Stdscr, 0, 0, 0, fmt, ap);
- va_end(ap);
-
- return 0;
-}
-
-int SLcurses_nil (void)
-{
- return 0;
-}
-
-int SLcurses_has_colors(void)
-{
- return SLtt_Use_Ansi_Colors;
-}
-
-int SLcurses_nodelay (SLcurses_Window_Type *w, int onoff)
-{
- w->delay_off = (onoff ? 0 : -1);
- return 0;
-}
-
-int SLcurses_wgetch (SLcurses_Window_Type *w)
-{
- if (w == NULL)
- return ERR;
-
- SLcurses_wrefresh (w);
-
- if ((w->delay_off == -1) ||
- SLang_input_pending (w->delay_off))
- {
- if (w->use_keypad)
- {
- int ch = SLang_getkey ();
- if (ch == '\033')
- {
- if (0 == SLang_input_pending (ESCDELAY / 100))
- return ch;
- }
- else if (ch == 0xFFFF) return ERR;
- SLang_ungetkey (ch);
- return SLkp_getkey ();
- }
- return SLang_getkey ();
- }
-
- return ERR;
-}
-
-int SLcurses_getch (void)
-{
- return SLcurses_wgetch (SLcurses_Stdscr);
-}
-
-/* This is a super hack. That fact is that SLsmg and curses
- * are incompatible.
- */
-static unsigned char Color_Objects[256];
-
-static unsigned int map_attr_to_object (SLtt_Char_Type attr)
-{
- unsigned int obj;
- SLtt_Char_Type at;
-
- obj = (attr >> 8) & 0xFF;
-
- if (SLtt_Use_Ansi_Colors)
- {
- if (Color_Objects[obj] != 0) return obj;
-
- at = SLtt_get_color_object (obj & 0xF);
-
- if (attr & A_BOLD) at |= SLTT_BOLD_MASK;
- if (attr & A_UNDERLINE) at |= SLTT_ULINE_MASK;
- if (attr & A_REVERSE) at |= SLTT_REV_MASK;
-
- SLtt_set_color_object (obj, at);
-
- Color_Objects[obj] = 1;
- }
- else obj = obj & 0xF0;
-
- return obj;
-
-}
-
-int SLcurses_start_color (void)
-{
- int f, b;
- int obj;
-
- if (SLtt_Use_Ansi_Colors == 0) return -1;
-
- obj = 0;
- for (f = 0; f < 16; f++)
- {
- for (b = 0; b < 16; b++)
- {
- obj++;
- SLtt_set_color_fgbg (obj, f, b);
- }
- }
- return 0;
-}
-
-#ifdef SIGINT
-static void sigint_handler (int sig)
-{
- SLang_reset_tty ();
- SLsmg_reset_smg ();
- exit (sig);
-}
-#endif
-
-/* Values are assumed to be 0, 1, 2. This fact is exploited */
-static int TTY_State;
-
-static int init_tty (int suspend_ok)
-{
- if (-1 == SLang_init_tty (-1, 1, 0))
- return -1;
-
-#ifdef REAL_UNIX_SYSTEM
- if (suspend_ok) SLtty_set_suspend_state (1);
-#endif
- return 0;
-}
-
-int SLcurses_raw (void)
-{
- TTY_State = 1;
- return init_tty (0);
-}
-
-int SLcurses_cbreak (void)
-{
- TTY_State = 2;
- return init_tty (1);
-}
-
-#if defined(SIGTSTP) && defined(SIGSTOP)
-static void sigtstp_handler (int sig)
-{
- sig = errno;
-
- SLsmg_suspend_smg ();
-
- if (TTY_State)
- SLang_reset_tty ();
-
- kill(getpid(),SIGSTOP);
-
- SLsmg_resume_smg ();
-
- if (TTY_State) init_tty (TTY_State - 1);
-
- signal (SIGTSTP, sigtstp_handler);
- errno = sig;
-}
-#endif
-
-SLcurses_Window_Type *SLcurses_initscr (void)
-{
- SLcurses_Is_Endwin = 0;
- SLsmg_Newline_Behavior = SLSMG_NEWLINE_MOVES;
- SLtt_get_terminfo ();
-
-#if !defined(IBMPC_SYSTEM) && !defined(VMS)
- if (-1 == (SLcurses_Num_Colors = SLtt_tgetnum ("Co")))
-#endif
- SLcurses_Num_Colors = 8;
-
- if ((-1 == SLkp_init ())
- || (-1 == SLcurses_cbreak ())
- || (NULL == (SLcurses_Stdscr = SLcurses_newwin (0, 0, 0, 0)))
- || (-1 == SLsmg_init_smg ()))
- {
- SLang_doerror (NULL);
- SLang_exit_error ("SLcurses_initscr: init failed\n");
- return NULL;
- }
-
-#ifdef SIGINT
- signal (SIGINT, sigint_handler);
-#endif
-
-#if defined(SIGTSTP) && defined(SIGSTOP)
- signal (SIGTSTP, sigtstp_handler);
-#endif
-
- SLtt_set_mono (A_BOLD >> 8, NULL, SLTT_BOLD_MASK);
- SLtt_set_mono (A_UNDERLINE >> 8, NULL, SLTT_ULINE_MASK);
- SLtt_set_mono (A_REVERSE >> 8, NULL, SLTT_REV_MASK);
- /* SLtt_set_mono (A_BLINK >> 8, NULL, SLTT_BLINK_MASK); */
- SLtt_set_mono ((A_BOLD|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_BOLD_MASK);
- SLtt_set_mono ((A_REVERSE|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_REV_MASK);
-
- if (SLtt_Has_Alt_Charset)
- {
- SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = SLSMG_ULCORN_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = SLSMG_URCORN_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = SLSMG_LLCORN_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = SLSMG_LRCORN_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = SLSMG_UTEE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = SLSMG_DTEE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = SLSMG_LTEE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = SLSMG_RTEE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = SLSMG_VLINE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = SLSMG_HLINE_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = SLSMG_PLUS_CHAR | A_ALTCHARSET;
- SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = SLSMG_CKBRD_CHAR | A_ALTCHARSET;
- }
- else
- {
- /* ugly defaults to use on terminals which don't support graphics */
- SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = '|';
- SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = '-';
- SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = '+';
- SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = '#';
- }
-
- return SLcurses_Stdscr;
-}
-
-int SLcurses_wattrset (SLcurses_Window_Type *w, SLtt_Char_Type ch)
-{
- unsigned int obj;
-
- obj = map_attr_to_object (ch);
- w->color = obj;
- w->attr = ch;
- return 0;
-}
-
-int SLcurses_wattroff (SLcurses_Window_Type *w, SLtt_Char_Type ch)
-{
- if (SLtt_Use_Ansi_Colors)
- return SLcurses_wattrset (w, 0);
-
- w->attr &= ~ch;
- return SLcurses_wattrset (w, w->attr);
-}
-
-int SLcurses_wattron (SLcurses_Window_Type *w, SLtt_Char_Type ch)
-{
- if (SLtt_Use_Ansi_Colors)
- return SLcurses_wattrset (w, ch);
-
- w->attr |= ch;
- return SLcurses_wattrset (w, w->attr);
-}
-
-int SLcurses_delwin (SLcurses_Window_Type *w)
-{
- if (w == NULL) return 0;
- if (w->lines != NULL)
- {
- SLsmg_Char_Type **lines = w->lines;
- if (w->is_subwin == 0)
- {
- unsigned int r, rmax;
-
- rmax = w->nrows;
- for (r = 0; r < rmax; r++)
- {
- SLfree ((char *)lines[r]);
- }
- }
-
- SLfree ((char *)lines);
- }
-
- SLfree ((char *)w);
- if (w == SLcurses_Stdscr)
- SLcurses_Stdscr = NULL;
- return 0;
-}
-
-SLcurses_Window_Type *SLcurses_newwin (unsigned int nrows, unsigned int ncols,
- unsigned int r, unsigned int c)
-{
- SLcurses_Window_Type *win;
- SLsmg_Char_Type **lines;
-
- if (r >= (unsigned int) SLtt_Screen_Rows)
- return NULL;
- if (c >= (unsigned int) SLtt_Screen_Cols)
- return NULL;
-
- if (NULL == (win = (SLcurses_Window_Type *) SLmalloc (sizeof (SLcurses_Window_Type))))
- return NULL;
-
- SLMEMSET ((char *) win, 0, sizeof (SLcurses_Window_Type));
-
- if (nrows == 0)
- nrows = (unsigned int) SLtt_Screen_Rows - r;
- if (ncols == 0)
- ncols = (unsigned int) SLtt_Screen_Cols - c;
-
- lines = (SLsmg_Char_Type **) SLmalloc (nrows * sizeof (SLsmg_Char_Type *));
- if (lines == NULL)
- {
- SLcurses_delwin (win);
- return NULL;
- }
-
- SLMEMSET ((char *) lines, 0, nrows * sizeof (SLsmg_Char_Type *));
-
- win->lines = lines;
- win->scroll_max = win->nrows = nrows;
- win->ncols = ncols;
- win->_begy = r;
- win->_begx = c;
- win->_maxx = (c + ncols) - 1;
- win->_maxy = (r + nrows) - 1;
- win->modified = 1;
- win->delay_off = -1;
-
- for (r = 0; r < nrows; r++)
- {
- SLsmg_Char_Type *b;
-
- b = (SLsmg_Char_Type *) SLmalloc (ncols * sizeof (SLsmg_Char_Type));
- if (b == NULL)
- {
- SLcurses_delwin (win);
- return NULL;
- }
- lines [r] = b;
- blank_line (b, ncols, 0);
- }
-
- return win;
-}
-
-int SLcurses_wmove (SLcurses_Window_Type *win, unsigned int r, unsigned int c)
-{
- if (win == NULL) return -1;
- win->_cury = r;
- win->_curx = c;
- win->modified = 1;
- return 0;
-}
-
-static int do_newline (SLcurses_Window_Type *w)
-{
- w->_curx = 0;
- w->_cury += 1;
- if (w->_cury >= w->scroll_max)
- {
- w->_cury = w->scroll_max - 1;
- if (w->scroll_ok)
- SLcurses_wscrl (w, 1);
- }
-
- return 0;
-}
-
-int SLcurses_waddch (SLcurses_Window_Type *win, SLtt_Char_Type attr)
-{
- SLsmg_Char_Type *b, ch;
- SLsmg_Char_Type color;
-
- if (win == NULL) return -1;
-
- if (win->_cury >= win->nrows)
- {
- /* Curses seems to move current postion to top of window. */
- win->_cury = win->_curx = 0;
- return -1;
- }
-
- win->modified = 1;
-
- ch = SLSMG_EXTRACT_CHAR(attr);
-
- if (attr == ch)
- color = win->color;
- else
- {
- /* hack to pick up the default color for graphics chars */
- if (((attr & A_COLOR) == 0) && ((attr & A_ALTCHARSET) != 0))
- {
- /* FIXME: priority=medium: Use SLSMG_?? instead of << */
- attr |= win->color << 8;
- }
- color = map_attr_to_object (attr);
- }
-
- if (ch < ' ')
- {
- if (ch == '\n')
- {
- SLcurses_wclrtoeol (win);
- return do_newline (win);
- }
-
- if (ch == '\r')
- {
- win->_curx = 0;
- return 0;
- }
-
- if (ch == '\b')
- {
- if (win->_curx > 0)
- win->_curx--;
-
- return 0;
- }
-
- /* HACK HACK!!!! */
- if (ch == '\t') ch = ' ';
- }
-
- if (win->_curx >= win->ncols)
- do_newline (win);
-
- b = win->lines[win->_cury] + win->_curx;
- *b = SLSMG_BUILD_CHAR(ch,color);
- win->_curx++;
-
- return 0;
-}
-
-int SLcurses_wnoutrefresh (SLcurses_Window_Type *w)
-{
- unsigned int len;
- unsigned int r, c;
- unsigned int i, imax;
-
- if (SLcurses_Is_Endwin)
- {
- if (TTY_State) init_tty (TTY_State - 1);
- SLsmg_resume_smg ();
- SLcurses_Is_Endwin = 0;
- }
-
- if (w == NULL)
- {
- SLsmg_refresh ();
- return -1;
- }
-
- if (w->modified == 0)
- return 0;
-
- r = w->_begy;
- c = w->_begx;
-
- len = w->ncols;
- imax = w->nrows;
-
- for (i = 0; i < imax; i++)
- {
- SLsmg_gotorc (r, c);
- SLsmg_write_color_chars (w->lines[i], len);
- r++;
- }
-
- if (w->has_box)
- SLsmg_draw_box(w->_begy, w->_begx, w->nrows, w->ncols);
-
- SLsmg_gotorc (w->_begy + w->_cury, w->_begx + w->_curx);
- w->modified = 0;
- return 0;
-}
-
-int SLcurses_wrefresh (SLcurses_Window_Type *w)
-{
- if (w == NULL)
- return -1;
-
- if (w->modified == 0)
- return 0;
-
- SLcurses_wnoutrefresh (w);
- SLsmg_refresh ();
- return 0;
-}
-
-int SLcurses_wclrtoeol (SLcurses_Window_Type *w)
-{
- SLsmg_Char_Type *b, *bmax;
- SLsmg_Char_Type blank;
-
- if (w == NULL) return -1;
- if (w->_cury >= w->nrows)
- return 0;
-
- w->modified = 1;
-
- blank = SLSMG_BUILD_CHAR(' ',w->color);
-
- b = w->lines[w->_cury];
- bmax = b + w->ncols;
- b += w->_curx;
-
- while (b < bmax) *b++ = blank;
- return 0;
-}
-
-int SLcurses_wclrtobot (SLcurses_Window_Type *w)
-{
- SLsmg_Char_Type *b, *bmax;
- SLsmg_Char_Type blank;
- unsigned int r;
-
- if (w == NULL) return -1;
-
- w->modified = 1;
- blank = SLSMG_BUILD_CHAR(' ',w->color);
- SLcurses_wclrtoeol (w);
- for (r = w->_cury + 1; r < w->nrows; r++)
- {
- b = w->lines [r];
- bmax = b + w->ncols;
-
- while (b < bmax) *b++ = blank;
- }
-
- return 0;
-}
-
-int SLcurses_wscrl (SLcurses_Window_Type *w, int n)
-{
- SLsmg_Char_Type **lines;
- unsigned int r, rmax, rmin, ncols;
- SLsmg_Char_Type color;
-
- if ((w == NULL) || (w->scroll_ok == 0))
- return -1;
-
- w->modified = 1;
-#if 0
- if (w->is_subwin)
- {
- SLang_reset_tty ();
- SLsmg_reset_smg ();
- fprintf (stderr, "\rAttempt to scroll a subwindow\n");
- exit (1);
- }
-#endif
-
- color = w->color;
- ncols = w->ncols;
- lines = w->lines;
- rmax = w->scroll_max;
- rmin = w->scroll_min;
- if (rmax > w->nrows)
- rmax = w->nrows;
- if (rmin >= rmax)
- return 0;
-
- while (n > 0)
- {
- for (r = rmin + 1; r < rmax; r++)
- {
- /* lines[r - 1] = lines[r]; */
- memcpy ((char *)lines[r - 1], (char *)lines[r],
- sizeof (SLsmg_Char_Type) * ncols);
- }
- blank_line (lines[rmax - 1], ncols, color);
- n--;
- }
-
- rmax--;
- while (n < 0)
- {
- for (r = rmax; r > rmin; r--)
- {
- memcpy ((char *)lines[r], (char *)lines[r - 1],
- sizeof (SLsmg_Char_Type) * ncols);
- }
- blank_line (lines[rmin], ncols, color);
- n++;
- }
-
- /* wmove (w, w->nrows - 1, 0); */
- /* wclrtobot (w); */
- return 0;
-}
-
-/* Note: if len is < 0, entire string will be used.
- */
-int SLcurses_waddnstr (SLcurses_Window_Type *w, char *str, int len)
-{
- SLsmg_Char_Type *b;
- SLsmg_Char_Type color;
- unsigned char ch;
- unsigned int nrows, ncols, crow, ccol;
-
- if ((w == NULL)
- || (str == NULL))
- return -1;
-
- w->modified = 1;
- nrows = w->nrows;
- ncols = w->ncols;
- crow = w->_cury;
- ccol = w->_curx;
- color = w->color;
-
- if (w->scroll_max <= nrows)
- nrows = w->scroll_max;
-
- if (crow >= nrows)
- crow = 0; /* wrap back to top */
-
- b = w->lines [crow] + ccol;
-
- while (len && ((ch = (unsigned char) *str++) != 0))
- {
- len--;
-
- if (ch == '\n')
- {
- w->_cury = crow;
- w->_curx = ccol;
- SLcurses_wclrtoeol (w);
- do_newline (w);
- crow = w->_cury;
- ccol = w->_curx;
- b = w->lines[crow];
- continue;
- }
-
- if (ccol >= ncols)
- {
- ccol = 0;
- crow++;
- if (crow >= nrows)
- {
- w->_curx = 0;
- w->_cury = crow;
- do_newline (w);
- crow = w->_cury;
- ccol = w->_curx;
- }
-
- b = w->lines [crow];
- }
-
- if (ch == '\t')
- {
- unsigned int n = ccol;
- n += SLsmg_Tab_Width;
- n = SLsmg_Tab_Width - (n % SLsmg_Tab_Width);
- if (ccol + n > ncols) n = ncols - len;
- ccol += n;
- while (n--)
- *b++ = SLSMG_BUILD_CHAR(' ',color);
- continue;
- }
-
- *b++ = SLSMG_BUILD_CHAR(ch, color);
- ccol++;
- }
-
- w->_curx = ccol;
- w->_cury = crow;
-
- return 0;
-}
-
-/* This routine IS NOT CORRECT. It needs to compute the proper overlap
- * and copy accordingly. Here, I just assume windows are same size.
- */
-#if 0
-int SLcurses_overlay (SLcurses_Window_Type *swin, SLcurses_Window_Type *dwin)
-{
- SLsmg_Char_Type *s, *smax, *d, *dmax;
-
- if ((swin == NULL) || (dwin == NULL))
- return -1;
-
- s = swin->buf;
- smax = swin->bufmax;
- d = dwin->buf;
- dmax = dwin->bufmax;
-
- while ((s < smax) && (d < dmax))
- {
- SLsmg_Char_Type ch = *s++;
- if (SLSMG_EXTRACT_CHAR(ch) != ' ')
- *d = ch;
- d++;
- }
-
- return -1; /* not implemented */
-}
-
-#endif
-
-SLcurses_Window_Type *SLcurses_subwin (SLcurses_Window_Type *orig,
- unsigned int nlines, unsigned int ncols,
- unsigned int begin_y, unsigned int begin_x)
-{
- SLcurses_Window_Type *sw;
- int r, c;
- unsigned int i;
-
- if (orig == NULL)
- return NULL;
-
- sw = (SLcurses_Window_Type *) SLmalloc (sizeof (SLcurses_Window_Type));
- if (sw == NULL)
- return NULL;
-
- SLMEMSET ((char *)sw, 0, sizeof (SLcurses_Window_Type));
-#if 1
- r = begin_y - orig->_begy;
-#else
- r = 1 + ((int)orig->nrows - (int)nlines) / 2;
-#endif
- if (r < 0) r = 0;
- if (r + nlines > orig->nrows) nlines = orig->nrows - r;
-
- c = ((int)orig->ncols - (int)ncols) / 2;
- if (c < 0) c = 0;
- if (c + ncols > orig->ncols) ncols = orig->ncols - c;
-
- sw->scroll_min = 0;
- sw->scroll_max = sw->nrows = nlines;
- sw->ncols = ncols;
- sw->_begy = begin_y;
- sw->_begx = begin_x;
- sw->_maxx = (begin_x + ncols) - 1;
- sw->_maxy = (begin_y + nlines) - 1;
-
- sw->lines = (SLsmg_Char_Type **) SLmalloc (nlines * sizeof (SLsmg_Char_Type *));
- if (sw->lines == NULL)
- {
- SLcurses_delwin (sw);
- return NULL;
- }
-
- for (i = 0; i < nlines; i++)
- {
- sw->lines [i] = orig->lines [r + i] + c;
- }
-
- sw->is_subwin = 1;
- return sw;
-}
-
-int SLcurses_wclear (SLcurses_Window_Type *w)
-{
- unsigned int i;
-
- if (w != NULL) w->modified = 1;
- for (i=0; i < w->nrows; i++)
- blank_line (w->lines[i], w->ncols, w->color);
- return 0;
-}
-
-int SLcurses_wdelch (SLcurses_Window_Type *w)
-{
- SLsmg_Char_Type *p, *p1, *pmax;
-
- p = w->lines[w->_cury];
- pmax = p + w->ncols;
- p += w->_curx;
- p1 = p + 1;
-
- while (p1 < pmax)
- {
- *p = *p1;
- p = p1;
- p1++;
- }
-
- if (p < pmax)
- *p = SLSMG_BUILD_CHAR(' ',w->color);
-
- w->modified = 1;
- return 0;
-}
-
-int SLcurses_winsch (SLcurses_Window_Type *w, int ch)
-{
- SLsmg_Char_Type *p, *p1, *pmax;
-
- p = w->lines[w->_cury];
- pmax = p + w->ncols;
- p += w->_curx;
- p1 = pmax - 1;
-
- while (pmax > p)
- {
- *pmax = *p1;
- pmax = p1;
- p1--;
- }
-
- if (p < pmax)
- *p = SLSMG_BUILD_CHAR(ch, w->color);
-
- w->modified = 1;
- return 0;
-}
-
-int SLcurses_endwin (void)
-{
- SLcurses_Is_Endwin = 1;
- SLsmg_suspend_smg ();
- SLang_reset_tty ();
- return 0;
-}
-
-#if 0
-int SLcurses_mvwscanw (SLcurses_Window_Type *w, unsigned int r, unsigned int c,
- char *fmt, ...)
-{
-#if HAVE_VFSCANF
- int ret;
- va_list ap;
-
- SLcurses_wmove (w, r, c);
- SLcurses_wrefresh (w);
-
- va_start(ap, fmt);
- ret = vfscanf (stdin, fmt, ap);
- va_end(ap);
- return ret;
-#else
- return 0;
-#endif
-}
-
-int SLcurses_wscanw (SLcurses_Window_Type *w, char *fmt, ...)
-{
-#if HAVE_VFSCANF
- va_list ap;
- int ret;
-
- SLcurses_wrefresh (w);
-
- va_start(ap, fmt);
- ret = vfscanf (stdin, fmt, ap);
- va_end(ap);
-
- return ret;
-#else
- return 0;
-#endif
-}
-
-int SLcurses_scanw (char *fmt, ...)
-{
-#ifdef HAVE_VFSCANF
- va_list ap;
- int ret;
-
- SLcurses_wrefresh (SLcurses_Stdscr);
-
- va_start(ap, fmt);
- ret = vfscanf (stdin, fmt, ap);
- va_end(ap);
-
- return ret;
-#else
- return 0;
-#endif
-}
-#endif
-
-int SLcurses_clearok (SLcurses_Window_Type *w, int bf)
-{
- if (bf)
- {
- SLsmg_cls ();
- w->modified = 1;
- }
- return 0;
-}
diff --git a/mdk-stage1/slang/slcurses.h b/mdk-stage1/slang/slcurses.h
deleted file mode 100644
index fa082304f..000000000
--- a/mdk-stage1/slang/slcurses.h
+++ /dev/null
@@ -1,353 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include <stdio.h>
-
-#ifndef SLANG_VERSION
-# include <slang.h>
-#endif
-
-/* This is a temporary hack until lynx is fixed to not include this file. */
-#ifndef LYCURSES_H
-
-typedef struct
-{
- unsigned int _begy, _begx, _maxy, _maxx;
- unsigned int _curx, _cury;
- unsigned int nrows, ncols;
- unsigned int scroll_min, scroll_max;
- SLsmg_Char_Type **lines;
- SLsmg_Char_Type color;
- int is_subwin;
- SLtt_Char_Type attr;
- int delay_off;
- int scroll_ok;
- int modified;
- int has_box;
- int use_keypad;
-}
-SLcurses_Window_Type;
-
-extern int SLcurses_wclrtobot (SLcurses_Window_Type *);
-extern int SLcurses_wscrl (SLcurses_Window_Type *, int);
-extern int SLcurses_wrefresh (SLcurses_Window_Type *);
-extern int SLcurses_delwin (SLcurses_Window_Type *);
-extern int SLcurses_wprintw (SLcurses_Window_Type *, char *, ...);
-extern SLcurses_Window_Type *SLcurses_newwin (unsigned int, unsigned int,
- unsigned int, unsigned int);
-
-extern SLcurses_Window_Type *SLcurses_subwin (SLcurses_Window_Type *,
- unsigned int, unsigned int,
- unsigned int, unsigned int);
-
-extern int SLcurses_wnoutrefresh (SLcurses_Window_Type *);
-extern int SLcurses_wclrtoeol (SLcurses_Window_Type *);
-
-extern int SLcurses_wmove (SLcurses_Window_Type *, unsigned int, unsigned int);
-extern int SLcurses_waddch (SLcurses_Window_Type *, SLtt_Char_Type);
-extern int SLcurses_waddnstr (SLcurses_Window_Type *, char *, int);
-
-#define waddnstr SLcurses_waddnstr
-#define waddch SLcurses_waddch
-#define waddstr(w,s) waddnstr((w),(s),-1)
-#define addstr(x) waddstr(stdscr, (x))
-#define addnstr(s,n) waddnstr(stdscr,(s),(n))
-#define addch(ch) waddch(stdscr,(ch))
-
-#define mvwaddnstr(w,y,x,s,n) \
- (-1 == wmove((w),(y),(x)) ? -1 : waddnstr((w),(s),(n)))
-#define mvwaddstr(w,y,x,s) \
- (-1 == wmove((w),(y),(x)) ? -1 : waddnstr((w),(s), -1))
-#define mvaddnstr(y,x,s,n) mvwaddnstr(stdscr,(y),(x),(s),(n))
-#define mvaddstr(y,x,s) mvwaddstr(stdscr,(y),(x),(s))
-#define mvwaddch(w,y,x,c) \
- ((-1 == wmove((w),(y),(x))) ? -1 : waddch((w),(c)))
-#define mvaddch(y,x,c) mvwaddch(stdscr,(y),(x),(c))
-
-extern int SLcurses_wclear (SLcurses_Window_Type *w);
-extern int SLcurses_printw (char *, ...);
-
-#if 0
-/* Why are these functions part of curses??? */
-extern int SLcurses_mvwscanw (SLcurses_Window_Type *, unsigned int, unsigned int,
- char *, ...);
-extern int SLcurses_wscanw (SLcurses_Window_Type *, char *, ...);
-extern int SLcurses_scanw (char *, ...);
-#define mvwscanw SLcurses_mvwscanw
-#define wscanw SLcurses_wscanw
-#define scanw SLcurses_scanw
-#endif
-
-extern SLcurses_Window_Type *SLcurses_Stdscr;
-#define WINDOW SLcurses_Window_Type
-#define stdscr SLcurses_Stdscr
-
-#define subwin SLcurses_subwin
-#define wclrtobot SLcurses_wclrtobot
-#define wscrl SLcurses_wscrl
-#define scrl(n) wscrl(stdscr,(n))
-#define scroll(w) wscrl((w),1)
-#define wrefresh SLcurses_wrefresh
-#define delwin SLcurses_delwin
-#define wmove SLcurses_wmove
-#define newwin SLcurses_newwin
-#define wnoutrefresh SLcurses_wnoutrefresh
-#define werase(w) SLcurses_wmove((w),0,0); SLcurses_wclrtobot(w)
-#define wclear(w) SLcurses_wmove((w),0,0); SLcurses_wclrtobot(w)
-#define wprintw SLcurses_wprintw
-#define mvwprintw SLcurses_mvwprintw
-
-#define winch(w) \
- ((((w)->_cury < (w)->nrows) && ((w)->_curx < (w)->ncols)) \
- ? ((w)->lines[(w)->_cury][(w)->_curx]) : 0)
-
-#define inch() winch(stdscr)
-#define mvwinch(w,x,y) \
- ((-1 != wmove((w),(x),(y))) ? winch(w) : (-1))
-#define doupdate SLsmg_refresh
-
-#define mvwin(w,a,b) ((w)->_begy = (a), (w)->_begx = (b))
-
-extern int SLcurses_mvprintw (int, int, char *, ...);
-extern int SLcurses_mvwprintw (SLcurses_Window_Type *, int, int, char *, ...);
-extern int SLcurses_has_colors(void);
-extern int SLcurses_nil (void);
-extern int SLcurses_wgetch (SLcurses_Window_Type *);
-extern int SLcurses_getch (void);
-
-extern int SLcurses_wattrset (SLcurses_Window_Type *, SLtt_Char_Type);
-extern int SLcurses_wattron (SLcurses_Window_Type *, SLtt_Char_Type);
-extern int SLcurses_wattroff (SLcurses_Window_Type *, SLtt_Char_Type);
-#define attrset(x) SLcurses_wattrset(stdscr, (x))
-#define attron(x) SLcurses_wattron(stdscr, (x))
-#define attroff(x) SLcurses_wattroff(stdscr, (x))
-#define wattrset(w, x) SLcurses_wattrset((w), (x))
-#define wattron(w, x) SLcurses_wattron((w), (x))
-#define wattroff(w, x) SLcurses_wattroff((w), (x))
-#define wattr_get(w) ((w)->color << 8)
-#define attr_get() wattr_get(stdscr)
-
-#define COLOR_PAIR(x) ((x) << 8)
-
-extern int SLcurses_start_color (void);
-#define start_color SLcurses_start_color
-
-#define ERR 0xFFFF
-#define wgetch SLcurses_wgetch
-#define getch SLcurses_getch
-
-extern int SLcurses_nodelay (SLcurses_Window_Type *, int);
-extern SLcurses_Window_Type *SLcurses_initscr (void);
-#define initscr SLcurses_initscr
-
-extern int SLcurses_cbreak (void);
-extern int SLcurses_raw (void);
-#define cbreak SLcurses_cbreak
-#define crmode SLcurses_cbreak
-#define raw SLcurses_raw
-#define noraw SLang_reset_tty
-#define nocbreak SLang_reset_tty
-
-#define mvprintw SLcurses_mvprintw
-#define has_colors SLcurses_has_colors
-#define nodelay SLcurses_nodelay
-
-#define ungetch SLang_ungetkey
-
-#define COLS SLtt_Screen_Cols
-#define LINES SLtt_Screen_Rows
-
-#define move(x,y) SLcurses_wmove(stdscr, (x), (y))
-#define wclrtoeol SLcurses_wclrtoeol
-#define clrtoeol() SLcurses_wclrtoeol(stdscr)
-#define clrtobot() SLcurses_wclrtobot(stdscr)
-
-#define printw SLcurses_printw
-#define mvprintw SLcurses_mvprintw
-#define wstandout(w) SLcurses_wattrset((w),A_STANDOUT)
-#define wstandend(w) SLcurses_wattrset((w),A_NORMAL)
-#define standout() SLcurses_wattrset(stdscr,A_STANDOUT)
-#define standend() SLcurses_wattrset(stdscr,A_NORMAL)
-
-#define refresh() SLcurses_wrefresh(stdscr)
-#define clear() SLcurses_wclear(stdscr)
-#define erase() werase(stdscr)
-#define touchline SLsmg_touch_lines
-#define resetterm SLang_reset_tty
-
-extern int SLcurses_endwin (void);
-#define endwin SLcurses_endwin
-extern int SLcurses_Is_Endwin;
-#define isendwin() SLcurses_Is_Endwin
-
-#define keypad(w,x) ((w)->use_keypad = (x))
-
-#define KEY_MIN SL_KEY_UP
-#define KEY_DOWN SL_KEY_DOWN
-#define KEY_UP SL_KEY_UP
-#define KEY_LEFT SL_KEY_LEFT
-#define KEY_RIGHT SL_KEY_RIGHT
-#define KEY_A1 SL_KEY_A1
-#define KEY_B1 SL_KEY_B1
-#define KEY_C1 SL_KEY_C1
-#define KEY_A2 SL_KEY_A2
-#define KEY_B2 SL_KEY_B2
-#define KEY_C2 SL_KEY_C2
-#define KEY_A3 SL_KEY_A3
-#define KEY_B3 SL_KEY_B3
-#define KEY_C3 SL_KEY_C3
-#define KEY_REDO SL_KEY_REDO
-#define KEY_UNDO SL_KEY_UNDO
-#define KEY_BACKSPACE SL_KEY_BACKSPACE
-#define KEY_PPAGE SL_KEY_PPAGE
-#define KEY_NPAGE SL_KEY_NPAGE
-#define KEY_HOME SL_KEY_HOME
-#define KEY_END SL_KEY_END
-#define KEY_F0 SL_KEY_F0
-#define KEY_F SL_KEY_F
-#define KEY_ENTER SL_KEY_ENTER
-#define KEY_MAX 0xFFFF
-
-/* Ugly Hacks that may not work */
-#define flushinp SLcurses_nil
-#define winsertln(w) \
- ((w)->scroll_min=(w)->_cury, \
- (w)->scroll_max=(w)->nrows, \
- wscrl((w), -1))
-
-extern SLtt_Char_Type SLcurses_Acs_Map [128];
-#define acs_map SLcurses_Acs_Map
-
-#define ACS_ULCORNER (acs_map[SLSMG_ULCORN_CHAR])
-#define ACS_URCORNER (acs_map[SLSMG_URCORN_CHAR])
-#define ACS_LRCORNER (acs_map[SLSMG_LRCORN_CHAR])
-#define ACS_LLCORNER (acs_map[SLSMG_LLCORN_CHAR])
-#define ACS_TTEE (acs_map[SLSMG_UTEE_CHAR])
-#define ACS_LTEE (acs_map[SLSMG_LTEE_CHAR])
-#define ACS_RTEE (acs_map[SLSMG_RTEE_CHAR])
-#define ACS_BTEE (acs_map[SLSMG_DTEE_CHAR])
-#define ACS_PLUS (acs_map[SLSMG_PLUS_CHAR])
-#define ACS_VLINE (acs_map[SLSMG_VLINE_CHAR])
-#define ACS_HLINE (acs_map[SLSMG_HLINE_CHAR])
-#define ACS_S1 '-'
-#define ACS_S9 '-'
-#define ACS_DIAMOND '&'
-#define ACS_CKBOARD (acs_map[SLSMG_CKBRD_CHAR])
-#define ACS_DEGREE 'o'
-#define ACS_PLMINUS '+'
-#define ACS_BULLET '*'
-#define ACS_LARROW '<'
-#define ACS_RARROW '>'
-#define ACS_DARROW 'v'
-#define ACS_UARROW '^'
-#define ACS_BOARD '#'
-#define ACS_LANTERN '#'
-#define ACS_BLOCK '#'
-
-#if 1
-#define hline(x,y) SLcurses_nil ()
-#define vline(x,y) SLcurses_nil ()
-#endif
-
-#define A_CHARTEXT 0x00FF
-#define A_NORMAL 0
-#define A_BOLD 0x1000
-#define A_REVERSE 0x2000
-#define A_STANDOUT A_REVERSE
-#define A_UNDERLINE 0x4000
-#define A_BLINK 0
-#define A_COLOR 0x0700
-#define A_ALTCHARSET 0x8000
-#define A_DIM 0
-#define A_PROTECT 0
-#define A_INVIS 0
-
-#define COLOR_BLACK SLSMG_COLOR_BLACK
-#define COLOR_RED SLSMG_COLOR_RED
-#define COLOR_GREEN SLSMG_COLOR_GREEN
-#define COLOR_YELLOW SLSMG_COLOR_BROWN
-#define COLOR_BLUE SLSMG_COLOR_BLUE
-#define COLOR_MAGENTA SLSMG_COLOR_MAGENTA
-#define COLOR_CYAN SLSMG_COLOR_CYAN
-#define COLOR_WHITE SLSMG_COLOR_LGRAY
-
-extern int SLcurses_Num_Colors;
-#define COLORS SLcurses_Num_Colors
-#define COLOR_PAIRS (SLcurses_Num_Colors*SLcurses_Num_Colors)
-
-#define init_pair(_x,_f,_b) \
- SLtt_set_color_object((_x), ((_f) == (_b) ? 0x0700 : ((_f) | ((_b) << 8)) << 8))
-
-#define scrollok(a,b) ((a)->scroll_ok = (b))
-#define getyx(a,y,x) (y=(a)->_cury, x=(a)->_curx)
-#define getmaxyx(a,y,x) (y=(a)->nrows, x=(a)->ncols)
-#define napms(x) usleep(1000 * (x))
-typedef SLtt_Char_Type chtype;
-#define beep SLtt_beep
-#define curs_set(x) SLtt_set_cursor_visibility(x)
-#define touchwin(x) SLsmg_touch_lines((x)->_begy, (x)->nrows)
-#define flash SLtt_beep
-
-#define wsetscrreg(w,a,b) ((w)->scroll_min = (a), (w)->scroll_max = (b))
-
-#define wtimeout(a,b) (a)->delay_off = ((b >= 0) ? (b) / 100 : -1)
-#define timeout(a) wtimeout(stdscr, a)
-extern int SLcurses_wdelch (SLcurses_Window_Type *);
-#define wdelch SLcurses_wdelch
-#define delch() wdelch(stdscr)
-
-extern int SLcurses_winsch (SLcurses_Window_Type *, int);
-#define winsch SLcurses_winsch
-
-extern int SLcurses_Esc_Delay;/* ESC expire time in milliseconds (ncurses compatible) */
-#define ESCDELAY SLcurses_Esc_Delay
-
-extern int SLcurses_clearok (SLcurses_Window_Type *, int);
-#define clearok SLcurses_clearok
-
-/* Functions that have not been implemented. */
-#define copywin(w,v,a,b,c,d,e,f,g) SLcurses_nil()
-#define wdeleteln(win) SLcurses_nil()
-#define resetty SLcurses_nil
-#define savetty SLcurses_nil
-#define overlay(u,v) SLcurses_nil()
-
-/* These functions do nothing */
-#define savetty SLcurses_nil
-#define nonl SLcurses_nil
-#define echo SLcurses_nil
-#define noecho SLcurses_nil
-#define saveterm SLcurses_nil
-#define box(w,y,z) ((w)->has_box = 1, (w)->modified = 1)
-#define leaveok(a,b) SLcurses_nil()
-#define nl() SLcurses_nil()
-#define trace(x) SLcurses_nil()
-#define tigetstr(x) NULL
-
-/* These have no place in C */
-#define TRUE 1
-#define FALSE 0
-#define bool int
-
-/* Lynx compatability */
-#else
-
-#define stdscr NULL
-#define COLS SLtt_Screen_Cols
-#define LINES SLtt_Screen_Rows
-#define move SLsmg_gotorc
-#define addstr SLsmg_write_string
-#define clear SLsmg_cls
-#define standout SLsmg_reverse_video
-#define standend SLsmg_normal_video
-#define clrtoeol SLsmg_erase_eol
-#define scrollok(a,b) SLsmg_Newline_Moves = ((b) ? 1 : -1)
-#define addch SLsmg_write_char
-#define echo()
-#define printw SLsmg_printf
-#define endwin SLsmg_reset_smg(),SLang_reset_tty
-
-#endif
diff --git a/mdk-stage1/slang/sldisply.c b/mdk-stage1/slang/sldisply.c
deleted file mode 100644
index 1e1161774..000000000
--- a/mdk-stage1/slang/sldisply.c
+++ /dev/null
@@ -1,2596 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include <time.h>
-#include <ctype.h>
-
-#if !defined(VMS) || (__VMS_VER >= 70000000)
-# include <sys/time.h>
-# ifdef __QNX__
-# include <sys/select.h>
-# endif
-# include <sys/types.h>
-#endif
-
-#ifdef __BEOS__
-/* Prototype for select */
-# include <net/socket.h>
-#endif
-
-#ifdef HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-
-#ifdef VMS
-# include <unixlib.h>
-# include <unixio.h>
-# include <dvidef.h>
-# include <descrip.h>
-# include <lib$routines.h>
-# include <starlet.h>
-#else
-# if !defined(sun)
-# include <sys/ioctl.h>
-# endif
-#endif
-
-#ifdef SYSV
-# include <sys/termio.h>
-# include <sys/stream.h>
-# include <sys/ptem.h>
-# include <sys/tty.h>
-#endif
-
-#if defined (_AIX) && !defined (FD_SET)
-# include <sys/select.h> /* for FD_ISSET, FD_SET, FD_ZERO */
-#endif
-
-#include <errno.h>
-
-#if defined(__DECC) && defined(VMS)
-/* These get prototypes for write an sleep */
-# include <unixio.h>
-#endif
-#include <signal.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-/* Colors: These definitions are used for the display. However, the
- * application only uses object handles which get mapped to this
- * internal representation. The mapping is performed by the Color_Map
- * structure below. */
-
-#define CHAR_MASK 0x000000FF
-#define FG_MASK 0x0000FF00
-#define BG_MASK 0x00FF0000
-#define ATTR_MASK 0x1F000000
-#define BGALL_MASK 0x0FFF0000
-
-/* The 0x10000000 bit represents the alternate character set. BGALL_MASK does
- * not include this attribute.
- */
-
-#define GET_FG(color) ((color & FG_MASK) >> 8)
-#define GET_BG(color) ((color & BG_MASK) >> 16)
-#define MAKE_COLOR(fg, bg) (((fg) | ((bg) << 8)) << 8)
-
-int SLtt_Screen_Cols;
-int SLtt_Screen_Rows;
-int SLtt_Term_Cannot_Insert;
-int SLtt_Term_Cannot_Scroll;
-int SLtt_Use_Ansi_Colors;
-int SLtt_Blink_Mode = 1;
-int SLtt_Use_Blink_For_ACS = 0;
-int SLtt_Newline_Ok = 0;
-int SLtt_Has_Alt_Charset = 0;
-int SLtt_Force_Keypad_Init = 0;
-
-void (*_SLtt_color_changed_hook)(void);
-
-#if SLTT_HAS_NON_BCE_SUPPORT
-static int Bce_Color_Offset = 0;
-#endif
-static int Can_Background_Color_Erase = 1;
-
-/* -1 means unknown */
-int SLtt_Has_Status_Line = -1; /* hs */
-int SLang_TT_Write_FD = -1;
-
-static int Automatic_Margins;
-/* static int No_Move_In_Standout; */
-static int Worthless_Highlight;
-#define HP_GLITCH_CODE
-#ifdef HP_GLITCH_CODE
-/* This glitch is exclusive to HP term. Basically it means that to clear
- * attributes, one has to erase to the end of the line.
- */
-static int Has_HP_Glitch;
-#endif
-
-static char *Reset_Color_String;
-static int Is_Color_Terminal = 0;
-
-static int Linux_Console;
-
-/* It is crucial that JMAX_COLORS must be less than 128 since the high bit
- * is used to indicate a character from the ACS (alt char set). The exception
- * to this rule is if SLtt_Use_Blink_For_ACS is true. This means that of
- * the highbit is set, we interpret that as a blink character. This is
- * exploited by DOSemu.
- */
-#define JMAX_COLORS 256
-#define JNORMAL_COLOR 0
-
-typedef struct
-{
- SLtt_Char_Type fgbg;
- SLtt_Char_Type mono;
- char *custom_esc;
-}
-Ansi_Color_Type;
-
-#define RGB1(r, g, b) ((r) | ((g) << 1) | ((b) << 2))
-#define RGB(r, g, b, br, bg, bb) ((RGB1(r, g, b) << 8) | (RGB1(br, bg, bb) << 16))
-
-static Ansi_Color_Type Ansi_Color_Map[JMAX_COLORS] =
-{
- {RGB(1, 1, 1, 0, 0, 0), 0x00000000, NULL}, /* white/black */
- {RGB(0, 1, 0, 0, 0, 0), SLTT_REV_MASK, NULL}, /* green/black */
- {RGB(1, 0, 1, 0, 0, 0), SLTT_REV_MASK, NULL}, /* magenta/black */
- {RGB(0, 1, 1, 0, 0, 0), SLTT_REV_MASK, NULL}, /* cyan/black */
- {RGB(1, 0, 0, 0, 0, 0), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 0, 0, 1), SLTT_REV_MASK, NULL},
- {RGB(1, 0, 0, 0, 0, 1), SLTT_REV_MASK, NULL},
- {RGB(1, 0, 0, 0, 1, 0), SLTT_REV_MASK, NULL},
- {RGB(0, 0, 1, 1, 0, 0), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 1, 0, 0), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 1, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(1, 1, 0, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(1, 0, 1, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(0, 0, 0, 0, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 1, 1, 1), SLTT_REV_MASK, NULL},
- {RGB(0, 1, 0, 1, 1, 1), SLTT_REV_MASK, NULL}
-};
-
-static char *Color_Fg_Str = "\033[3%dm";
-static char *Color_Bg_Str = "\033[4%dm";
-static char *Default_Color_Fg_Str = "\033[39m";
-static char *Default_Color_Bg_Str = "\033[49m";
-
-static int Max_Terminfo_Colors = 8; /* termcap Co */
-
-char *SLtt_Graphics_Char_Pairs; /* ac termcap string -- def is vt100 */
-
-/* 1 if terminal lacks the ability to go into insert mode or into delete
- mode. Currently controlled by S-Lang but later perhaps termcap. */
-
-static char *UnderLine_Vid_Str;
-static char *Blink_Vid_Str;
-static char *Bold_Vid_Str;
-static char *Ins_Mode_Str; /* = "\033[4h"; */ /* ins mode (im) */
-static char *Eins_Mode_Str; /* = "\033[4l"; */ /* end ins mode (ei) */
-static char *Scroll_R_Str; /* = "\033[%d;%dr"; */ /* scroll region */
-static char *Cls_Str; /* = "\033[2J\033[H"; */ /* cl termcap STR for ansi terminals */
-static char *Rev_Vid_Str; /* = "\033[7m"; */ /* mr,so termcap string */
-static char *Norm_Vid_Str; /* = "\033[m"; */ /* me,se termcap string */
-static char *Del_Eol_Str; /* = "\033[K"; */ /* ce */
-static char *Del_Bol_Str; /* = "\033[1K"; */ /* cb */
-static char *Del_Char_Str; /* = "\033[P"; */ /* dc */
-static char *Del_N_Lines_Str; /* = "\033[%dM"; */ /* DL */
-static char *Add_N_Lines_Str; /* = "\033[%dL"; */ /* AL */
-static char *Rev_Scroll_Str;
-static char *Curs_Up_Str;
-static char *Curs_F_Str; /* RI termcap string */
-static char *Cursor_Visible_Str; /* ve termcap string */
-static char *Cursor_Invisible_Str; /* vi termcap string */
-#if 0
-static char *Start_Mouse_Rpt_Str; /* Start mouse reporting mode */
-static char *End_Mouse_Rpt_Str; /* End mouse reporting mode */
-#endif
-static char *Start_Alt_Chars_Str; /* as */
-static char *End_Alt_Chars_Str; /* ae */
-static char *Enable_Alt_Char_Set; /* eA */
-
-static char *Term_Init_Str;
-static char *Keypad_Init_Str;
-static char *Term_Reset_Str;
-static char *Keypad_Reset_Str;
-
-/* status line functions */
-static char *Disable_Status_line_Str; /* ds */
-static char *Return_From_Status_Line_Str; /* fs */
-static char *Goto_Status_Line_Str; /* ts */
-static int Num_Status_Line_Columns; /* ws */
-/* static int Status_Line_Esc_Ok; */ /* es */
-
-/* static int Len_Curs_F_Str = 5; */
-
-/* cm string has %i%d since termcap numbers columns from 0 */
-/* char *CURS_POS_STR = "\033[%d;%df"; ansi-- hor and vert pos */
-static char *Curs_Pos_Str; /* = "\033[%i%d;%dH";*/ /* cm termcap string */
-
-/* scrolling region */
-static int Scroll_r1 = 0, Scroll_r2 = 23;
-static int Cursor_r, Cursor_c; /* 0 based */
-
-/* current attributes --- initialized to impossible value */
-static SLtt_Char_Type Current_Fgbg = 0xFFFFFFFFU;
-
-static int Cursor_Set; /* 1 if cursor position known, 0
- * if not. -1 if only row is known
- */
-
-#define MAX_OUTPUT_BUFFER_SIZE 4096
-
-static unsigned char Output_Buffer[MAX_OUTPUT_BUFFER_SIZE];
-static unsigned char *Output_Bufferp = Output_Buffer;
-
-unsigned long SLtt_Num_Chars_Output;
-
-int _SLusleep (unsigned long usecs)
-{
-#if !defined(VMS) || (__VMS_VER >= 70000000)
- struct timeval tv;
- tv.tv_sec = usecs / 1000000;
- tv.tv_usec = usecs % 1000000;
- return select(0, NULL, NULL, NULL, &tv);
-#else
- return 0;
-#endif
-}
-
-int SLtt_flush_output (void)
-{
- int nwrite = 0;
- unsigned int total;
- int n = (int) (Output_Bufferp - Output_Buffer);
-
- SLtt_Num_Chars_Output += n;
-
- total = 0;
- while (n > 0)
- {
- nwrite = write (SLang_TT_Write_FD, (char *) Output_Buffer + total, n);
- if (nwrite == -1)
- {
- nwrite = 0;
-#ifdef EAGAIN
- if (errno == EAGAIN)
- {
- _SLusleep (100000); /* 1/10 sec */
- continue;
- }
-#endif
-#ifdef EWOULDBLOCK
- if (errno == EWOULDBLOCK)
- {
- _SLusleep (100000);
- continue;
- }
-#endif
-#ifdef EINTR
- if (errno == EINTR) continue;
-#endif
- break;
- }
- n -= nwrite;
- total += nwrite;
- }
- Output_Bufferp = Output_Buffer;
- return n;
-}
-
-int SLtt_Baud_Rate;
-static void tt_write(char *str, unsigned int n)
-{
- static unsigned long last_time;
- static int total;
- unsigned long now;
- unsigned int ndiff;
-
- if ((str == NULL) || (n == 0)) return;
- total += n;
-
- while (1)
- {
- ndiff = MAX_OUTPUT_BUFFER_SIZE - (int) (Output_Bufferp - Output_Buffer);
- if (ndiff < n)
- {
- SLMEMCPY ((char *) Output_Bufferp, (char *) str, ndiff);
- Output_Bufferp += ndiff;
- SLtt_flush_output ();
- n -= ndiff;
- str += ndiff;
- }
- else
- {
- SLMEMCPY ((char *) Output_Bufferp, str, n);
- Output_Bufferp += n;
- break;
- }
- }
-
- if (((SLtt_Baud_Rate > 150) && (SLtt_Baud_Rate <= 9600))
- && (10 * total > SLtt_Baud_Rate))
- {
- total = 0;
- if ((now = (unsigned long) time(NULL)) - last_time <= 1)
- {
- SLtt_flush_output ();
- sleep((unsigned) 1);
- }
- last_time = now;
- }
-}
-
-static void tt_write_string (char *str)
-{
- if (str != NULL) tt_write(str, strlen(str));
-}
-
-void SLtt_write_string (char *str)
-{
- tt_write_string (str);
- Cursor_Set = 0;
-}
-
-void SLtt_putchar (char ch)
-{
- SLtt_normal_video ();
- if (Cursor_Set == 1)
- {
- if (ch >= ' ') Cursor_c++;
- else if (ch == '\b') Cursor_c--;
- else if (ch == '\r') Cursor_c = 0;
- else Cursor_Set = 0;
-
- if ((Cursor_c + 1 == SLtt_Screen_Cols)
- && Automatic_Margins) Cursor_Set = 0;
- }
-
- if (Output_Bufferp < Output_Buffer + MAX_OUTPUT_BUFFER_SIZE)
- {
- *Output_Bufferp++ = (unsigned char) ch;
- }
- else tt_write (&ch, 1);
-}
-
-static unsigned int tt_sprintf(char *buf, char *fmt, int x, int y)
-{
- char *fmt_max;
- register unsigned char *b, ch;
- int offset;
- int z, z1, parse_level;
- int zero_pad;
- int field_width;
- int variables [26];
- int stack [64];
- unsigned int stack_len;
- int parms [10];
-#define STACK_POP (stack_len ? stack[--stack_len] : 0)
-
- if (fmt == NULL)
- {
- *buf = 0;
- return 0;
- }
-
- stack [0] = y; /* pushed for termcap */
- stack [1] = x;
- stack_len = 2;
-
- parms [1] = x; /* p1 */
- parms [2] = y; /* p2 */
-
- offset = 0;
- zero_pad = 0;
- field_width = 0;
-
- b = (unsigned char *) buf;
- fmt_max = fmt + strlen (fmt);
-
- while (fmt < fmt_max)
- {
- ch = *fmt++;
-
- if (ch != '%')
- {
- *b++ = ch;
- continue;
- }
-
- if (fmt == fmt_max) break;
- ch = *fmt++;
-
- switch (ch)
- {
- default:
- *b++ = ch;
- break;
-
- case 'p':
-
- if (fmt == fmt_max) break;
- ch = *fmt++;
- if ((ch >= '0') && (ch <= '9'))
- stack [stack_len++] = parms [ch - '0'];
- break;
-
- case '\'': /* 'x' */
- if (fmt == fmt_max) break;
- stack [stack_len++] = *fmt++;
- if (fmt < fmt_max) fmt++; /* skip ' */
- break;
-
- case '{': /* literal constant, e.g. {30} */
- z = 0;
- while ((fmt < fmt_max) && ((ch = *fmt) <= '9') && (ch >= '0'))
- {
- z = z * 10 + (ch - '0');
- fmt++;
- }
- stack [stack_len++] = z;
- if ((ch == '}') && (fmt < fmt_max)) fmt++;
- break;
-
- case '0':
- if (fmt == fmt_max) break;
- ch = *fmt;
- if ((ch != '2') && (ch != '3'))
- break;
- zero_pad = 1;
- fmt++;
- /* drop */
-
- case '2':
- case '3':
- if (fmt == fmt_max)
- if (*fmt == 'x')
- {
- char x_fmt_buf [4];
- char *x_fmt_buf_ptr;
-
- x_fmt_buf_ptr = x_fmt_buf;
- if (zero_pad) *x_fmt_buf_ptr++ = '0';
- *x_fmt_buf_ptr++ = ch;
- *x_fmt_buf_ptr++ = 'X';
- *x_fmt_buf_ptr = 0;
-
- z = STACK_POP;
- z += offset;
-
- sprintf ((char *)b, x_fmt_buf, z);
- b += strlen ((char *)b);
- zero_pad = 0;
- break;
- }
-
- field_width = (ch - '0');
- /* drop */
-
- case 'd':
- z = STACK_POP;
- z += offset;
- if (z >= 100)
- {
- *b++ = z / 100 + '0';
- z = z % 100;
- zero_pad = 1;
- field_width = 2;
- }
- else if (zero_pad && (field_width == 3))
- *b++ = '0';
-
- if (z >= 10)
- {
- *b++ = z / 10 + '0';
- z = z % 10;
- }
- else if (zero_pad && (field_width >= 2))
- *b++ = '0';
-
- *b++ = z + '0';
- field_width = zero_pad = 0;
- break;
-
- case 'x':
- z = STACK_POP;
- z += offset;
- sprintf ((char *) b, "%X", z);
- b += strlen ((char *)b);
- break;
-
- case 'i':
- offset = 1;
- break;
-
- case '+':
- /* Handling this depends upon whether or not we are parsing
- * terminfo. Terminfo requires the stack so use it as an
- * indicator.
- */
- if (stack_len > 2)
- {
- z = STACK_POP;
- stack [stack_len - 1] += z;
- }
- else if (fmt < fmt_max)
- {
- ch = *fmt++;
- if ((unsigned char) ch == 128) ch = 0;
- ch = ch + (unsigned char) STACK_POP;
- if (ch == '\n') ch++;
- *b++ = ch;
- }
- break;
-
- /* Binary operators */
- case '-':
- case '*':
- case '/':
- case 'm':
- case '&':
- case '|':
- case '^':
- case '=':
- case '>':
- case '<':
- case 'A':
- case 'O':
- z1 = STACK_POP;
- z = STACK_POP;
- switch (ch)
- {
- case '-': z = (z - z1); break;
- case '*': z = (z * z1); break;
- case '/': z = (z / z1); break;
- case 'm': z = (z % z1); break;
- case '&': z = (z & z1); break;
- case '|': z = (z | z1); break;
- case '^': z = (z ^ z1); break;
- case '=': z = (z == z1); break;
- case '>': z = (z > z1); break;
- case '<': z = (z < z1); break;
- case 'A': z = (z && z1); break;
- case 'O': z = (z || z1); break;
- }
- stack [stack_len++] = z;
- break;
-
- /* unary */
- case '!':
- z = STACK_POP;
- stack [stack_len++] = !z;
- break;
-
- case '~':
- z = STACK_POP;
- stack [stack_len++] = ~z;
- break;
-
- case 'r': /* termcap -- swap parameters */
- z = stack [0];
- stack [0] = stack [1];
- stack [1] = z;
- break;
-
- case '.': /* termcap */
- case 'c':
- ch = (unsigned char) STACK_POP;
- if (ch == '\n') ch++;
- *b++ = ch;
- break;
-
- case 'g':
- if (fmt == fmt_max) break;
- ch = *fmt++;
- if ((ch >= 'a') && (ch <= 'z'))
- stack [stack_len++] = variables [ch - 'a'];
- break;
-
- case 'P':
- if (fmt == fmt_max) break;
- ch = *fmt++;
- if ((ch >= 'a') && (ch <= 'z'))
- variables [ch - 'a'] = STACK_POP;
- break;
-
- /* If then else parsing. Actually, this is rather easy. The
- * key is to notice that 'then' does all the work. 'if' simply
- * there to indicate the start of a test and endif indicates
- * the end of tests. If 'else' is seen, then skip to
- * endif.
- */
- case '?': /* if */
- case ';': /* endif */
- break;
-
- case 't': /* then */
- z = STACK_POP;
- if (z != 0)
- break; /* good. Continue parsing. */
-
- /* z == 0 and test has failed. So, skip past this entire if
- * expression to the matching else or matching endif.
- */
- /* drop */
- case 'e': /* else */
-
- parse_level = 0;
- while (fmt < fmt_max)
- {
- unsigned char ch1;
-
- ch1 = *fmt++;
- if ((ch1 != '%') || (fmt == fmt_max))
- continue;
-
- ch1 = *fmt++;
-
- if (ch1 == '?') parse_level++; /* new if */
- else if (ch1 == 'e')
- {
- if ((ch != 'e') && (parse_level == 0))
- break;
- }
- else if (ch1 == ';')
- {
- if (parse_level == 0)
- break;
- parse_level--;
- }
- }
- break;
- }
- }
- *b = 0;
- return (unsigned int) (b - (unsigned char *) buf);
-}
-
-static void tt_printf(char *fmt, int x, int y)
-{
- char buf[1024];
- unsigned int n;
- if (fmt == NULL) return;
- n = tt_sprintf(buf, fmt, x, y);
- tt_write(buf, n);
-}
-
-void SLtt_set_scroll_region (int r1, int r2)
-{
- Scroll_r1 = r1;
- Scroll_r2 = r2;
- tt_printf (Scroll_R_Str, Scroll_r1, Scroll_r2);
- Cursor_Set = 0;
-}
-
-void SLtt_reset_scroll_region (void)
-{
- SLtt_set_scroll_region(0, SLtt_Screen_Rows - 1);
-}
-
-int SLtt_set_cursor_visibility (int show)
-{
- if ((Cursor_Visible_Str == NULL) || (Cursor_Invisible_Str == NULL))
- return -1;
-
- tt_write_string (show ? Cursor_Visible_Str : Cursor_Invisible_Str);
- return 0;
-}
-
-/* the goto_rc function moves to row relative to scrolling region */
-void SLtt_goto_rc(int r, int c)
-{
- char *s = NULL;
- int n;
- char buf[6];
-
- if ((c < 0) || (r < 0))
- {
- Cursor_Set = 0;
- return;
- }
-
- /* if (No_Move_In_Standout && Current_Fgbg) SLtt_normal_video (); */
- r += Scroll_r1;
-
- if ((Cursor_Set > 0) || ((Cursor_Set < 0) && !Automatic_Margins))
- {
- n = r - Cursor_r;
- if ((n == -1) && (Cursor_Set > 0) && (Cursor_c == c)
- && (Curs_Up_Str != NULL))
- {
- s = Curs_Up_Str;
- }
- else if ((n >= 0) && (n <= 4))
- {
- if ((n == 0) && (Cursor_Set == 1)
- && ((c > 1) || (c == Cursor_c)))
- {
- if (Cursor_c == c) return;
- if (Cursor_c == c + 1)
- {
- s = buf;
- *s++ = '\b'; *s = 0;
- s = buf;
- }
- }
- else if (c == 0)
- {
- s = buf;
- if ((Cursor_Set != 1) || (Cursor_c != 0)) *s++ = '\r';
- while (n--) *s++ = '\n';
-#ifdef VMS
- /* Need to add this after \n to start a new record. Sheesh. */
- *s++ = '\r';
-#endif
- *s = 0;
- s = buf;
- }
- /* Will fail on VMS */
-#ifndef VMS
- else if (SLtt_Newline_Ok && (Cursor_Set == 1) &&
- (Cursor_c >= c) && (c + 3 > Cursor_c))
- {
- s = buf;
- while (n--) *s++ = '\n';
- n = Cursor_c - c;
- while (n--) *s++ = '\b';
- *s = 0;
- s = buf;
- }
-#endif
- }
- }
- if (s != NULL) tt_write_string(s);
- else tt_printf(Curs_Pos_Str, r, c);
- Cursor_c = c; Cursor_r = r;
- Cursor_Set = 1;
-}
-
-void SLtt_begin_insert (void)
-{
- tt_write_string(Ins_Mode_Str);
-}
-
-void SLtt_end_insert (void)
-{
- tt_write_string(Eins_Mode_Str);
-}
-
-void SLtt_delete_char (void)
-{
- SLtt_normal_video ();
- tt_write_string(Del_Char_Str);
-}
-
-void SLtt_erase_line (void)
-{
- tt_write_string("\r");
- Cursor_Set = 1; Cursor_c = 0;
- SLtt_del_eol();
-}
-
-/* It appears that the Linux console, and most likely others do not
- * like scrolling regions that consist of one line. So I have to
- * resort to this stupidity to make up for that stupidity.
- */
-static void delete_line_in_scroll_region (void)
-{
- SLtt_goto_rc (Cursor_r - Scroll_r1, 0);
- SLtt_del_eol ();
-}
-
-void SLtt_delete_nlines (int n)
-{
- int r1, curs;
- char buf[132];
-
- if (n <= 0) return;
- SLtt_normal_video ();
-
- if (Scroll_r1 == Scroll_r2)
- {
- delete_line_in_scroll_region ();
- return;
- }
-
- if (Del_N_Lines_Str != NULL) tt_printf(Del_N_Lines_Str,n, 0);
- else
- /* get a new terminal */
- {
- r1 = Scroll_r1;
- curs = Cursor_r;
- SLtt_set_scroll_region(curs, Scroll_r2);
- SLtt_goto_rc(Scroll_r2 - Scroll_r1, 0);
- SLMEMSET(buf, '\n', (unsigned int) n);
- tt_write(buf, (unsigned int) n);
- /* while (n--) tt_putchar('\n'); */
- SLtt_set_scroll_region(r1, Scroll_r2);
- SLtt_goto_rc(curs, 0);
- }
-}
-
-void SLtt_cls (void)
-{
- /* If the terminal is a color terminal but the user wants black and
- * white, then make sure that the colors are reset. This appears to be
- * necessary.
- */
- if ((SLtt_Use_Ansi_Colors == 0) && Is_Color_Terminal)
- {
- if (Reset_Color_String != NULL)
- tt_write_string (Reset_Color_String);
- else
- tt_write_string ("\033[0m\033[m");
- }
-
- SLtt_normal_video();
- SLtt_reset_scroll_region ();
- tt_write_string(Cls_Str);
-}
-
-void SLtt_reverse_index (int n)
-{
- if (!n) return;
-
- SLtt_normal_video();
-
- if (Scroll_r1 == Scroll_r2)
- {
- delete_line_in_scroll_region ();
- return;
- }
-
- if (Add_N_Lines_Str != NULL) tt_printf(Add_N_Lines_Str,n, 0);
- else
- {
- while(n--) tt_write_string(Rev_Scroll_Str);
- }
-}
-
-int SLtt_Ignore_Beep = 1;
-static char *Visible_Bell_Str;
-
-void SLtt_beep (void)
-{
- if (SLtt_Ignore_Beep & 0x1) SLtt_putchar('\007');
-
- if (SLtt_Ignore_Beep & 0x2)
- {
- if (Visible_Bell_Str != NULL) tt_write_string (Visible_Bell_Str);
-#ifdef __linux__
- else if (Linux_Console)
- {
- tt_write_string ("\033[?5h");
- SLtt_flush_output ();
- _SLusleep (50000);
- tt_write_string ("\033[?5l");
- }
-#endif
- }
- SLtt_flush_output ();
-}
-
-static void del_eol (void)
-{
- int c;
-
- if (Del_Eol_Str != NULL)
- {
- tt_write_string(Del_Eol_Str);
- return;
- }
-
- c = Cursor_c;
- /* Avoid writing to the lower right corner. If the terminal does not
- * have Del_Eol_Str, then it probably does not have what it takes to play
- * games with insert for for a space into that corner.
- */
- if (Cursor_r + 1 < SLtt_Screen_Rows)
- c++;
-
- while (c < SLtt_Screen_Cols)
- {
- tt_write (" ", 1);
- c++;
- }
-}
-
-void SLtt_del_eol (void)
-{
- if (Current_Fgbg != 0xFFFFFFFFU) SLtt_normal_video ();
- del_eol ();
-}
-
-typedef struct
-{
- char *name;
- SLtt_Char_Type color;
-}
-Color_Def_Type;
-
-#define MAX_COLOR_NAMES 17
-static Color_Def_Type Color_Defs [MAX_COLOR_NAMES] =
-{
- {"black", SLSMG_COLOR_BLACK},
- {"red", SLSMG_COLOR_RED},
- {"green", SLSMG_COLOR_GREEN},
- {"brown", SLSMG_COLOR_BROWN},
- {"blue", SLSMG_COLOR_BLUE},
- {"magenta", SLSMG_COLOR_MAGENTA},
- {"cyan", SLSMG_COLOR_CYAN},
- {"lightgray", SLSMG_COLOR_LGRAY},
- {"gray", SLSMG_COLOR_GRAY},
- {"brightred", SLSMG_COLOR_BRIGHT_RED},
- {"brightgreen", SLSMG_COLOR_BRIGHT_GREEN},
- {"yellow", SLSMG_COLOR_BRIGHT_BROWN},
- {"brightblue", SLSMG_COLOR_BRIGHT_BLUE},
- {"brightmagenta", SLSMG_COLOR_BRIGHT_CYAN},
- {"brightcyan", SLSMG_COLOR_BRIGHT_MAGENTA},
- {"white", SLSMG_COLOR_BRIGHT_WHITE},
-#define SLSMG_COLOR_DEFAULT 0xFF
- {"default", SLSMG_COLOR_DEFAULT}
-};
-
-void SLtt_set_mono (int obj, char *what, SLtt_Char_Type mask)
-{
- (void) what;
- if ((obj < 0) || (obj >= JMAX_COLORS))
- {
- return;
- }
- Ansi_Color_Map[obj].mono = mask & ATTR_MASK;
-}
-
-static char *check_color_for_digit_form (char *color)
-{
- unsigned int i, ich;
- char *s = color;
-
- i = 0;
- while ((ich = (int) *s) != 0)
- {
- if ((ich < '0') || (ich > '9'))
- return color;
-
- i = i * 10 + (ich - '0');
- s++;
- }
-
- if (i < MAX_COLOR_NAMES)
- color = Color_Defs[i].name;
-
- return color;
-}
-
-static int get_default_colors (char **fgp, char **bgp)
-{
- static char fg_buf[16], bg_buf[16], *bg, *fg;
- static int already_parsed;
- char *p, *pmax;
-
- if (already_parsed == -1)
- return -1;
-
- if (already_parsed)
- {
- *fgp = fg;
- *bgp = bg;
- return 0;
- }
-
- already_parsed = -1;
-
- bg = getenv ("COLORFGBG");
-
- if (bg == NULL)
- {
- bg = getenv ("DEFAULT_COLORS");
- if (bg == NULL)
- return -1;
- }
-
- p = fg_buf;
- pmax = p + (sizeof (fg_buf) - 1);
-
- while ((*bg != 0) && (*bg != ';'))
- {
- if (p < pmax) *p++ = *bg;
- bg++;
- }
- *p = 0;
-
- if (*bg) bg++;
-
- p = bg_buf;
- pmax = p + (sizeof (bg_buf) - 1);
-
- /* Mark suggested allowing for extra spplication specific stuff following
- * the background color. That is what the check for the semi-colon is for.
- */
- while ((*bg != 0) && (*bg != ';'))
- {
- if (p < pmax) *p++ = *bg;
- bg++;
- }
- *p = 0;
-
- if (!strcmp (fg_buf, "default") || !strcmp(bg_buf, "default"))
- {
- *fgp = *bgp = fg = bg = "default";
- }
- else
- {
- *fgp = fg = check_color_for_digit_form (fg_buf);
- *bgp = bg = check_color_for_digit_form (bg_buf);
- }
- already_parsed = 1;
- return 0;
-}
-
-static unsigned char FgBg_Stats[JMAX_COLORS];
-
-static int Color_0_Modified = 0;
-
-void SLtt_set_color_object (int obj, SLtt_Char_Type attr)
-{
- char *cust_esc;
-
- if ((obj < 0) || (obj >= JMAX_COLORS)) return;
-
- cust_esc = Ansi_Color_Map[obj].custom_esc;
- if (cust_esc != NULL)
- {
- SLfree (cust_esc);
- FgBg_Stats[(Ansi_Color_Map[obj].fgbg >> 8) & 0x7F] -= 1;
- Ansi_Color_Map[obj].custom_esc = NULL;
- }
-
- Ansi_Color_Map[obj].fgbg = attr;
- if (obj == 0) Color_0_Modified = 1;
-
- if (_SLtt_color_changed_hook != NULL)
- (*_SLtt_color_changed_hook)();
-}
-
-SLtt_Char_Type SLtt_get_color_object (int obj)
-{
- if ((obj < 0) || (obj >= JMAX_COLORS)) return 0;
- return Ansi_Color_Map[obj].fgbg;
-}
-
-void SLtt_add_color_attribute (int obj, SLtt_Char_Type attr)
-{
- if ((obj < 0) || (obj >= JMAX_COLORS)) return;
-
- Ansi_Color_Map[obj].fgbg |= (attr & ATTR_MASK);
- if (obj == 0) Color_0_Modified = 1;
- if (_SLtt_color_changed_hook != NULL)
- (*_SLtt_color_changed_hook)();
-}
-
-static SLtt_Char_Type fb_to_fgbg (SLtt_Char_Type f, SLtt_Char_Type b)
-{
- SLtt_Char_Type attr;
-
- if (Max_Terminfo_Colors != 8)
- {
- if (f != SLSMG_COLOR_DEFAULT) f %= Max_Terminfo_Colors;
- if (b != SLSMG_COLOR_DEFAULT) b %= Max_Terminfo_Colors;
- return ((f << 8) | (b << 16));
- }
-
- /* Otherwise we have 8 ansi colors. Try to get bright versions
- * by using the BOLD and BLINK attributes.
- */
-
- attr = 0;
-
- /* Note: If f represents default, it will have the value 0xFF */
- if (f != SLSMG_COLOR_DEFAULT)
- {
- if (f & 0x8) attr = SLTT_BOLD_MASK;
- f &= 0x7;
- }
-
- if (b != SLSMG_COLOR_DEFAULT)
- {
- if (b & 0x8) attr |= SLTT_BLINK_MASK;
- b &= 0x7;
- }
-
- return ((f << 8) | (b << 16) | attr);
-}
-
-/* This looks for colors with name form 'colorN'. If color is of this
- * form, N is passed back via paramter list.
- */
-static int parse_color_digit_name (char *color, SLtt_Char_Type *f)
-{
- unsigned int i;
- unsigned char ch;
-
- if (strncmp (color, "color", 5))
- return -1;
-
- color += 5;
- if (*color == 0)
- return -1;
-
- i = 0;
- while (1)
- {
- ch = (unsigned char) *color++;
- if (ch == 0)
- break;
- if ((ch > '9') || (ch < '0'))
- return -1;
- i = 10 * i + (ch - '0');
- }
-
- *f = (SLtt_Char_Type) i;
- return 0;
-}
-
-static int make_color_fgbg (char *fg, char *bg, SLtt_Char_Type *fgbg)
-{
- SLtt_Char_Type f = 0xFFFFFFFFU, b = 0xFFFFFFFFU;
- char *dfg, *dbg;
- unsigned int i;
-
- if ((fg != NULL) && (*fg == 0)) fg = NULL;
- if ((bg != NULL) && (*bg == 0)) bg = NULL;
-
- if ((fg == NULL) || (bg == NULL))
- {
- if (-1 == get_default_colors (&dfg, &dbg))
- return -1;
-
- if (fg == NULL) fg = dfg;
- if (bg == NULL) bg = dbg;
- }
-
- if (-1 == parse_color_digit_name (fg, &f))
- {
- for (i = 0; i < MAX_COLOR_NAMES; i++)
- {
- if (strcmp(fg, Color_Defs[i].name)) continue;
- f = Color_Defs[i].color;
- break;
- }
- }
-
- if (-1 == parse_color_digit_name (bg, &b))
- {
- for (i = 0; i < MAX_COLOR_NAMES; i++)
- {
- if (strcmp(bg, Color_Defs[i].name)) continue;
- b = Color_Defs[i].color;
- break;
- }
- }
-
- if ((f == 0xFFFFFFFFU) || (b == 0xFFFFFFFFU))
- return -1;
-
- *fgbg = fb_to_fgbg (f, b);
- return 0;
-}
-
-void SLtt_set_color (int obj, char *what, char *fg, char *bg)
-{
- SLtt_Char_Type fgbg;
-
- (void) what;
- if ((obj < 0) || (obj >= JMAX_COLORS))
- return;
-
- if (-1 != make_color_fgbg (fg, bg, &fgbg))
- SLtt_set_color_object (obj, fgbg);
-}
-
-void SLtt_set_color_fgbg (int obj, SLtt_Char_Type f, SLtt_Char_Type b)
-{
- SLtt_set_color_object (obj, fb_to_fgbg (f, b));
-}
-
-void SLtt_set_color_esc (int obj, char *esc)
-{
- char *cust_esc;
- SLtt_Char_Type fgbg = 0;
- int i;
-
- if ((obj < 0) || (obj >= JMAX_COLORS))
- {
- return;
- }
-
- cust_esc = Ansi_Color_Map[obj].custom_esc;
- if (cust_esc != NULL)
- {
- SLfree (cust_esc);
- FgBg_Stats[(Ansi_Color_Map[obj].fgbg >> 8) & 0x7F] -= 1;
- }
-
- cust_esc = (char *) SLmalloc (strlen(esc) + 1);
- if (cust_esc != NULL) strcpy (cust_esc, esc);
-
- Ansi_Color_Map[obj].custom_esc = cust_esc;
- if (cust_esc == NULL) fgbg = 0;
- else
- {
- /* The whole point of this is to generate a unique fgbg */
- for (i = 0; i < JMAX_COLORS; i++)
- {
- if (FgBg_Stats[i] == 0) fgbg = i;
-
- if (obj == i) continue;
- if ((Ansi_Color_Map[i].custom_esc) == NULL) continue;
- if (!strcmp (Ansi_Color_Map[i].custom_esc, cust_esc))
- {
- fgbg = (Ansi_Color_Map[i].fgbg >> 8) & 0x7F;
- break;
- }
- }
- FgBg_Stats[fgbg] += 1;
- }
-
- fgbg |= 0x80;
- Ansi_Color_Map[obj].fgbg = (fgbg | (fgbg << 8)) << 8;
- if (obj == 0) Color_0_Modified = 1;
- if (_SLtt_color_changed_hook != NULL)
- (*_SLtt_color_changed_hook)();
-}
-
-void SLtt_set_alt_char_set (int i)
-{
- static int last_i;
- if (SLtt_Has_Alt_Charset == 0) return;
- if (i == last_i) return;
- tt_write_string (i ? Start_Alt_Chars_Str : End_Alt_Chars_Str );
- last_i = i;
-}
-
-static void write_attributes (SLtt_Char_Type fgbg)
-{
- int bg0, fg0;
- int unknown_attributes;
-
- if (Worthless_Highlight) return;
- if (fgbg == Current_Fgbg) return;
-
- unknown_attributes = 0;
-
- /* Before spitting out colors, fix attributes */
- if ((fgbg & ATTR_MASK) != (Current_Fgbg & ATTR_MASK))
- {
- if (Current_Fgbg & ATTR_MASK)
- {
- tt_write_string(Norm_Vid_Str);
- /* In case normal video turns off ALL attributes: */
- if (fgbg & SLTT_ALTC_MASK)
- Current_Fgbg &= ~SLTT_ALTC_MASK;
- SLtt_set_alt_char_set (0);
- }
-
- if ((fgbg & SLTT_ALTC_MASK)
- != (Current_Fgbg & SLTT_ALTC_MASK))
- {
- SLtt_set_alt_char_set ((int) (fgbg & SLTT_ALTC_MASK));
- }
-
- if (fgbg & SLTT_ULINE_MASK) tt_write_string (UnderLine_Vid_Str);
- if (fgbg & SLTT_BOLD_MASK) SLtt_bold_video ();
- if (fgbg & SLTT_REV_MASK) tt_write_string (Rev_Vid_Str);
- if (fgbg & SLTT_BLINK_MASK)
- {
- /* Someday Linux will have a blink mode that set high intensity
- * background. Lets be prepared.
- */
- if (SLtt_Blink_Mode) tt_write_string (Blink_Vid_Str);
- }
- unknown_attributes = 1;
- }
-
- if (SLtt_Use_Ansi_Colors)
- {
- fg0 = (int) GET_FG(fgbg);
- bg0 = (int) GET_BG(fgbg);
-
- if (unknown_attributes
- || (fg0 != (int)GET_FG(Current_Fgbg)))
- {
- if (fg0 == SLSMG_COLOR_DEFAULT)
- tt_write_string (Default_Color_Fg_Str);
- else
- tt_printf (Color_Fg_Str, fg0, 0);
- }
-
- if (unknown_attributes
- || (bg0 != (int)GET_BG(Current_Fgbg)))
- {
- if (bg0 == SLSMG_COLOR_DEFAULT)
- tt_write_string (Default_Color_Bg_Str);
- else
- tt_printf (Color_Bg_Str, bg0, 0);
- }
- }
-
- Current_Fgbg = fgbg;
-}
-
-static int Video_Initialized;
-
-void SLtt_reverse_video (int color)
-{
- SLtt_Char_Type fgbg;
- char *esc;
-
- if (Worthless_Highlight) return;
- if ((color < 0) || (color >= JMAX_COLORS)) return;
-
- if (Video_Initialized == 0)
- {
- if (color == JNORMAL_COLOR)
- {
- tt_write_string (Norm_Vid_Str);
- }
- else tt_write_string (Rev_Vid_Str);
- Current_Fgbg = 0xFFFFFFFFU;
- return;
- }
-
- if (SLtt_Use_Ansi_Colors)
- {
- fgbg = Ansi_Color_Map[color].fgbg;
- if ((esc = Ansi_Color_Map[color].custom_esc) != NULL)
- {
- if (fgbg != Current_Fgbg)
- {
- Current_Fgbg = fgbg;
- tt_write_string (esc);
- return;
- }
- }
- }
- else fgbg = Ansi_Color_Map[color].mono;
-
- if (fgbg == Current_Fgbg) return;
- write_attributes (fgbg);
-}
-
-void SLtt_normal_video (void)
-{
- SLtt_reverse_video(JNORMAL_COLOR);
-}
-
-void SLtt_narrow_width (void)
-{
- tt_write_string("\033[?3l");
-}
-
-void SLtt_wide_width (void)
-{
- tt_write_string("\033[?3h");
-}
-
-/* Highest bit represents the character set. */
-#define COLOR_MASK 0x7F00
-
-#if SLTT_HAS_NON_BCE_SUPPORT
-static int bce_color_eqs (unsigned int a, unsigned int b)
-{
- a = (a & COLOR_MASK) >> 8;
- b = (b & COLOR_MASK) >> 8;
-
- if (a == b)
- return 1;
-
- if (SLtt_Use_Ansi_Colors == 0)
- return Ansi_Color_Map[a].mono == Ansi_Color_Map[b].mono;
-
- if (Bce_Color_Offset == 0)
- return Ansi_Color_Map[a].fgbg == Ansi_Color_Map[b].fgbg;
-
- /* If either are color 0, then we do not know what that means since the
- * terminal does not support BCE */
- if ((a == 0) || (b == 0))
- return 0;
-
- return Ansi_Color_Map[a-1].fgbg == Ansi_Color_Map[b-1].fgbg;
-}
-#define COLOR_EQS(a,b) bce_color_eqs (a,b)
-#else
-# define COLOR_OF(x) (((unsigned int)(x) & COLOR_MASK) >> 8)
-# define COLOR_EQS(a, b) \
- (SLtt_Use_Ansi_Colors \
- ? (Ansi_Color_Map[COLOR_OF(a)].fgbg == Ansi_Color_Map[COLOR_OF(b)].fgbg)\
- : (Ansi_Color_Map[COLOR_OF(a)].mono == Ansi_Color_Map[COLOR_OF(b)].mono))
-#endif
-
-#define CHAR_EQS(a, b) (((a) == (b))\
- || ((((a) & ~COLOR_MASK) == ((b) & ~COLOR_MASK))\
- && COLOR_EQS((a), (b))))
-
-/* The whole point of this routine is to prevent writing to the last column
- * and last row on terminals with automatic margins.
- */
-static void write_string_with_care (char *str)
-{
- unsigned int len;
-
- if (str == NULL) return;
-
- len = strlen (str);
- if (Automatic_Margins && (Cursor_r + 1 == SLtt_Screen_Rows))
- {
- if (len + (unsigned int) Cursor_c >= (unsigned int) SLtt_Screen_Cols)
- {
- /* For now, just do not write there. Later, something more
- * sophisticated will be implemented.
- */
- if (SLtt_Screen_Cols > Cursor_c)
- len = SLtt_Screen_Cols - Cursor_c - 1;
- else
- len = 0;
- }
- }
- tt_write (str, len);
-}
-
-static void send_attr_str (SLsmg_Char_Type *s)
-{
- unsigned char out[256], ch, *p;
- register SLtt_Char_Type attr;
- register SLsmg_Char_Type sh;
- int color, last_color = -1;
-
- p = out;
- while (0 != (sh = *s++))
- {
- ch = sh & 0xFF;
- color = ((int) sh & 0xFF00) >> 8;
-
-#if SLTT_HAS_NON_BCE_SUPPORT
- if (Bce_Color_Offset
- && (color >= Bce_Color_Offset))
- color -= Bce_Color_Offset;
-#endif
-
- if (color != last_color)
- {
- if (SLtt_Use_Ansi_Colors) attr = Ansi_Color_Map[color & 0x7F].fgbg;
- else attr = Ansi_Color_Map[color & 0x7F].mono;
-
- if (sh & 0x8000) /* alternate char set */
- {
- if (SLtt_Use_Blink_For_ACS)
- {
- if (SLtt_Blink_Mode) attr |= SLTT_BLINK_MASK;
- }
- else attr |= SLTT_ALTC_MASK;
- }
-
- if (attr != Current_Fgbg)
- {
- if ((ch != ' ') ||
- /* it is a space so only consider it different if it
- * has different attributes.
- */
- (attr & BGALL_MASK) != (Current_Fgbg & BGALL_MASK))
- {
- if (p != out)
- {
- *p = 0;
- write_string_with_care ((char *) out);
- Cursor_c += (int) (p - out);
- p = out;
- }
-
- if (SLtt_Use_Ansi_Colors && (NULL != Ansi_Color_Map[color & 0x7F].custom_esc))
- {
- tt_write_string (Ansi_Color_Map[color & 0x7F].custom_esc);
- /* Just in case the custom escape sequence screwed up
- * the alt character set state...
- */
- if ((attr & SLTT_ALTC_MASK) != (Current_Fgbg & SLTT_ALTC_MASK))
- SLtt_set_alt_char_set ((int) (attr & SLTT_ALTC_MASK));
- Current_Fgbg = attr;
- }
- else write_attributes (attr);
-
- last_color = color;
- }
- }
- }
- *p++ = ch;
- }
- *p = 0;
- if (p != out) write_string_with_care ((char *) out);
- Cursor_c += (int) (p - out);
-}
-
-static void forward_cursor (unsigned int n, int row)
-{
- char buf [1024];
-
- if (n <= 4)
- {
- SLtt_normal_video ();
- SLMEMSET (buf, ' ', n);
- buf[n] = 0;
- write_string_with_care (buf);
- Cursor_c += n;
- }
- else if (Curs_F_Str != NULL)
- {
- Cursor_c += n;
- n = tt_sprintf(buf, Curs_F_Str, (int) n, 0);
- tt_write(buf, n);
- }
- else SLtt_goto_rc (row, (int) (Cursor_c + n));
-}
-
-
-void SLtt_smart_puts(SLsmg_Char_Type *neww, SLsmg_Char_Type *oldd, int len, int row)
-{
- register SLsmg_Char_Type *p, *q, *qmax, *pmax, *buf;
- SLsmg_Char_Type buffer[256];
- unsigned int n_spaces;
- SLsmg_Char_Type *space_match, *last_buffered_match;
-#ifdef HP_GLITCH_CODE
- int handle_hp_glitch = 0;
-#endif
- SLsmg_Char_Type space_char;
-#define SLTT_USE_INSERT_HACK 1
-#if SLTT_USE_INSERT_HACK
- SLsmg_Char_Type insert_hack_prev = 0;
- SLsmg_Char_Type insert_hack_char = 0;
-
- if ((row + 1 == SLtt_Screen_Rows)
- && (len == SLtt_Screen_Cols)
- && (len > 1)
- && (SLtt_Term_Cannot_Insert == 0)
- && Automatic_Margins)
- {
- insert_hack_char = neww[len-1];
- if (oldd[len-1] == insert_hack_char)
- insert_hack_char = 0;
- else
- insert_hack_prev = neww[len-2];
- }
-#endif
-
- q = oldd; p = neww;
- qmax = oldd + len;
- pmax = p + len;
-
- /* Find out where to begin --- while they match, we are ok */
- while (1)
- {
- if (q == qmax) return;
-#if SLANG_HAS_KANJI_SUPPORT
- if (*p & 0x80)
- { /* new is kanji */
- if ((*q & 0x80) && ((q + 1) < qmax))
- { /* old is also kanji */
- if (((0xFF & *q) != (0xFF & *p))
- || ((0xFF & q[1]) != (0xFF & p[1])))
- break; /* both kanji, but not match */
-
- else
- { /* kanji match ! */
- if (!COLOR_EQS(*q, *p)) break;
- q++; p++;
- if (!COLOR_EQS(*q, *p)) break;
- /* really match! */
- q++; p++;
- continue;
- }
- }
- else break; /* old is not kanji */
- }
- else
- { /* new is not kanji */
- if (*q & 0x80) break; /* old is kanji */
- }
-#endif
- if (!CHAR_EQS(*q, *p)) break;
- q++; p++;
- }
-
-#ifdef HP_GLITCH_CODE
- if (Has_HP_Glitch)
- {
- SLsmg_Char_Type *qq = q;
-
- SLtt_goto_rc (row, (int) (p - neww));
-
- while (qq < qmax)
- {
- if (*qq & 0xFF00)
- {
- SLtt_normal_video ();
- SLtt_del_eol ();
- qmax = q;
- handle_hp_glitch = 1;
- break;
- }
- qq++;
- }
- }
-#endif
- /* Find where the last non-blank character on old/new screen is */
-
- space_char = ' ';
- if ((*(pmax-1) & 0xFF) == ' ')
- {
- /* If we get here, then we can erase to the end of the line to create
- * the final space. However, this will only work _if_ erasing will
- * get us the correct color. If the terminal supports BCE, then this
- * is easy. If it does not, then we can only perform this operation
- * if the color is known via something like COLORFGBG. For now,
- * I just will not perform the optimization for such terminals.
- */
- if ((Can_Background_Color_Erase)
- && SLtt_Use_Ansi_Colors)
- space_char = *(pmax - 1);
-
- while (pmax > p)
- {
- pmax--;
- if (!CHAR_EQS(*pmax, space_char))
- {
- pmax++;
- break;
- }
- }
- }
-
- while (qmax > q)
- {
- qmax--;
- if (!CHAR_EQS(*qmax, space_char))
- {
- qmax++;
- break;
- }
- }
-
- last_buffered_match = buf = buffer; /* buffer is empty */
-
-#ifdef HP_GLITCH_CODE
- if (handle_hp_glitch)
- {
- while (p < pmax)
- {
- *buf++ = *p++;
- }
- }
-#endif
-
-#ifdef HP_GLITCH_CODE
- if (Has_HP_Glitch == 0)
- {
-#endif
- /* Try use use erase to bol if possible */
- if ((Del_Bol_Str != NULL) && ((*neww & 0xFF) == 32))
- {
- SLsmg_Char_Type *p1;
- SLsmg_Char_Type blank;
-
- p1 = neww;
- if ((Can_Background_Color_Erase)
- && SLtt_Use_Ansi_Colors)
- blank = *p1;
- /* black+white attributes do not support bce */
- else
- blank = 32;
-
- while ((p1 < pmax) && (CHAR_EQS (*p1, blank)))
- p1++;
-
- /* Is this optimization worth it? Assume Del_Bol_Str is ESC [ 1 K
- * It costs 4 chars + the space needed to properly position the
- * cursor, e.g., ESC [ 10;10H. So, it costs at least 13 characters.
- */
- if ((p1 > neww + 13)
- && (p1 >= p)
- /* Avoid erasing from the end of the line */
- && ((p1 != pmax) || (pmax < neww + len)))
- {
- int ofs = (int) (p1 - neww);
- q = oldd + ofs;
- p = p1;
- SLtt_goto_rc (row, ofs - 1);
- SLtt_reverse_video (blank >> 8);
- tt_write_string (Del_Bol_Str);
- tt_write (" ", 1);
- Cursor_c += 1;
- }
- else
- SLtt_goto_rc (row, (int) (p - neww));
- }
- else
- SLtt_goto_rc (row, (int) (p - neww));
-#ifdef HP_GLITCH_CODE
- }
-#endif
-
-
- /* loop using overwrite then skip algorithm until done */
- while (1)
- {
- /* while they do not match and we do not hit a space, buffer them up */
- n_spaces = 0;
- while (p < pmax)
- {
- if (CHAR_EQS(*q, 32) && CHAR_EQS(*p, 32))
- {
- /* If *q is not a space, we would have to overwrite it.
- * However, if *q is a space, then while *p is also one,
- * we only need to skip over the blank field.
- */
- space_match = p;
- p++; q++;
- while ((p < pmax)
- && CHAR_EQS(*q, 32)
- && CHAR_EQS(*p, 32))
- {
- p++;
- q++;
- }
- n_spaces = (unsigned int) (p - space_match);
- break;
- }
-#if SLANG_HAS_KANJI_SUPPORT
- if ((*p & 0x80) && ((p + 1) < pmax))
- { /* new is kanji */
- if (*q & 0x80)
- { /* old is also kanji */
- if (((0xFF & *q) != (0xFF & *p))
- || ((0xFF & q[1]) != (0xFF & p[1])))
- {
- /* both kanji, but not match */
- *buf++ = *p++;
- *buf++ = *p++;
- q += 2;
- continue;
- }
- else
- { /* kanji match ? */
- if (!COLOR_EQS(*q, *p) || !COLOR_EQS(*(q+1), *(p+1)))
- {
- /* code is match, but color is diff */
- *buf++ = *p++;
- *buf++ = *p++;
- q += 2;
- continue;
- }
- /* really match ! */
- break;
- }
- }
- else
- { /* old is not kanji */
- *buf++ = *p++;
- *buf++ = *p++;
- q += 2;
- continue;
- }
- }
- else
- { /* new is not kanji */
- if (*q & 0x80)
- { /* old is kanji */
- *buf++ = *p++;
- q++;
- continue;
- }
- }
-#endif
-
- if (CHAR_EQS(*q, *p)) break;
- *buf++ = *p++;
- q++;
- }
- *buf = 0;
-
- if (buf != buffer) send_attr_str (buffer);
- buf = buffer;
-
- if (n_spaces
- && ((p < pmax) /* erase to eol will achieve this effect*/
- || (space_char != 32)))/* unless space_char is not a simple space */
- {
- forward_cursor (n_spaces, row);
- }
-
- /* Now we overwrote what we could and cursor is placed at position
- * of a possible match of new and old. If this is the case, skip
- * some more.
- */
-#if !SLANG_HAS_KANJI_SUPPORT
- while ((p < pmax) && CHAR_EQS(*p, *q))
- {
- *buf++ = *p++;
- q++;
- }
-#else
- /* Kanji */
- while (p < pmax)
- {
- if ((*p & 0x80) && ((p + 1) < pmax))
- { /* new is kanji */
- if (*q & 0x80)
- { /* old is also kanji */
- if (((0xFF & *q) == (0xFF & *p))
- && ((0xFF & q[1]) == (0xFF & p[1])))
- {
- /* kanji match ? */
- if (!COLOR_EQS(*q, *p)
- || !COLOR_EQS(q[1], p[1]))
- break;
-
- *buf++ = *p++;
- q++;
- if (p >= pmax)
- {
- *buf++ = 32;
- p++;
- break;
- }
- else
- {
- *buf++ = *p++;
- q++;
- continue;
- }
- }
- else break; /* both kanji, but not match */
- }
- else break; /* old is not kanji */
- }
- else
- { /* new is not kanji */
- if (*q & 0x80) break; /* old is kanji */
- if (!CHAR_EQS(*q, *p)) break;
- *buf++ = *p++;
- q++;
- }
- }
-#endif
- last_buffered_match = buf;
- if (p >= pmax) break;
-
- /* jump to new position is it is greater than 5 otherwise
- * let it sit in the buffer and output it later.
- */
- if ((int) (buf - buffer) >= 5)
- {
- forward_cursor ((unsigned int) (buf - buffer), row);
- last_buffered_match = buf = buffer;
- }
- }
-
- if (buf != buffer)
- {
- if (q < qmax)
- {
- if ((buf == last_buffered_match)
- && ((int) (buf - buffer) >= 5))
- {
- forward_cursor ((unsigned int) (buf - buffer), row);
- }
- else
- {
- *buf = 0;
- send_attr_str (buffer);
- }
- }
- }
-
- if (q < qmax)
- {
- SLtt_reverse_video (space_char >> 8);
- del_eol ();
- }
-
-#if SLTT_USE_INSERT_HACK
- else if (insert_hack_char)
- {
- SLtt_goto_rc (SLtt_Screen_Rows-1, SLtt_Screen_Cols-2);
- buffer[0] = insert_hack_char;
- buffer[1] = 0;
- send_attr_str (buffer);
- SLtt_goto_rc (SLtt_Screen_Rows-1, SLtt_Screen_Cols-2);
- buffer[0] = insert_hack_prev;
- SLtt_begin_insert ();
- send_attr_str (buffer);
- SLtt_end_insert ();
- }
-#endif
-
- if (Automatic_Margins && (Cursor_c + 1 >= SLtt_Screen_Cols)) Cursor_Set = 0;
-}
-
-static void get_color_info (void)
-{
- char *fg, *bg;
-
- /* Allow easy mechanism to override inadequate termcap/terminfo files. */
- if (SLtt_Use_Ansi_Colors == 0)
- SLtt_Use_Ansi_Colors = (NULL != getenv ("COLORTERM"));
-
- if (SLtt_Use_Ansi_Colors)
- Is_Color_Terminal = 1;
-
-#if SLTT_HAS_NON_BCE_SUPPORT
- if (Can_Background_Color_Erase == 0)
- Can_Background_Color_Erase = (NULL != getenv ("COLORTERM_BCE"));
-#endif
-
- if (-1 == get_default_colors (&fg, &bg))
- return;
-
- /* Check to see if application has already set them. */
- if (Color_0_Modified)
- return;
-
- SLtt_set_color (0, NULL, fg, bg);
- SLtt_set_color (1, NULL, bg, fg);
-}
-
-/* termcap stuff */
-
-#ifdef __unix__
-
-static int Termcap_Initalized = 0;
-
-#ifdef USE_TERMCAP
-/* Termcap based system */
-static char Termcap_Buf[4096];
-static char Termcap_String_Buf[4096];
-static char *Termcap_String_Ptr;
-extern char *tgetstr(char *, char **);
-extern int tgetent(char *, char *);
-extern int tgetnum(char *);
-extern int tgetflag(char *);
-#else
-/* Terminfo */
-static SLterminfo_Type *Terminfo;
-#endif
-
-#define TGETFLAG(x) (SLtt_tgetflag(x) > 0)
-
-static char *fixup_tgetstr (char *what)
-{
- register char *w, *w1;
- char *wsave;
-
- if (what == NULL)
- return NULL;
-
- /* Check for AIX brain-damage */
- if (*what == '@')
- return NULL;
-
- /* lose pad info --- with today's technology, term is a loser if
- it is really needed */
- while ((*what == '.') ||
- ((*what >= '0') && (*what <= '9'))) what++;
- if (*what == '*') what++;
-
- /* lose terminfo padding--- looks like $<...> */
- w = what;
- while (*w) if ((*w++ == '$') && (*w == '<'))
- {
- w1 = w - 1;
- while (*w && (*w != '>')) w++;
- if (*w == 0) break;
- w++;
- wsave = w1;
- while ((*w1++ = *w++) != 0);
- w = wsave;
- }
-
- if (*what == 0) what = NULL;
- return what;
-}
-
-char *SLtt_tgetstr (char *s)
-{
- if (Termcap_Initalized == 0)
- return NULL;
-
-#ifdef USE_TERMCAP
- s = tgetstr (s, &Termcap_String_Ptr);
-#else
- s = _SLtt_tigetstr (Terminfo, s);
-#endif
- return fixup_tgetstr (s);
-}
-
-int SLtt_tgetnum (char *s)
-{
- if (Termcap_Initalized == 0)
- return -1;
-#ifdef USE_TERMCAP
- return tgetnum (s);
-#else
- return _SLtt_tigetnum (Terminfo, s);
-#endif
-}
-
-int SLtt_tgetflag (char *s)
-{
- if (Termcap_Initalized == 0)
- return -1;
-#ifdef USE_TERMCAP
- return tgetflag (s);
-#else
- return _SLtt_tigetflag (Terminfo, s);
-#endif
-}
-
-static int Vt100_Like = 0;
-
-void SLtt_get_terminfo (void)
-{
- char *term;
- int status;
-
- term = getenv ("TERM");
- if (term == NULL)
- SLang_exit_error("TERM environment variable needs set.");
-
- if (0 == (status = SLtt_initialize (term)))
- return;
-
- if (status == -1)
- {
- SLang_exit_error ("Unknown terminal: %s\n\
-Check the TERM environment variable.\n\
-Also make sure that the terminal is defined in the terminfo database.\n\
-Alternatively, set the TERMCAP environment variable to the desired\n\
-termcap entry.",
- term);
- }
-
- if (status == -2)
- {
- SLang_exit_error ("\
-Your terminal lacks the ability to clear the screen or position the cursor.\n");
- }
-}
-
-/* Returns 0 if all goes well, -1 if terminal capabilities cannot be deduced,
- * or -2 if terminal cannot position the cursor.
- */
-int SLtt_initialize (char *term)
-{
- char *t, ch;
- int is_xterm;
- int almost_vtxxx;
-
- if (SLang_TT_Write_FD == -1)
- {
- /* Apparantly, this cannot fail according to the man pages. */
- SLang_TT_Write_FD = fileno (stdout);
- }
-
- if (term == NULL)
- {
- term = getenv ("TERM");
- if (term == NULL)
- return -1;
- }
-
- Linux_Console = (!strncmp (term, "linux", 5)
-# ifdef linux
- || !strncmp(term, "con", 3)
-# endif
- );
-
- t = term;
-
- if (strcmp(t, "vt52") && (*t++ == 'v') && (*t++ == 't')
- && (ch = *t, (ch >= '1') && (ch <= '9'))) Vt100_Like = 1;
-
- is_xterm = ((0 == strncmp (term, "xterm", 5))
- || (0 == strncmp (term, "rxvt", 4))
- || (0 == strncmp (term, "Eterm", 5)));
-
- almost_vtxxx = (Vt100_Like
- || Linux_Console
- || is_xterm
- || !strcmp (term, "screen"));
-
-# ifndef USE_TERMCAP
- if (NULL == (Terminfo = _SLtt_tigetent (term)))
- {
- if (almost_vtxxx) /* Special cases. */
- {
- int vt102 = 1;
- if (!strcmp (term, "vt100")) vt102 = 0;
- get_color_info ();
- SLtt_set_term_vtxxx (&vt102);
- return 0;
- }
- return -1;
- }
-# else /* USE_TERMCAP */
- if (1 != tgetent(Termcap_Buf, term))
- return -1;
- Termcap_String_Ptr = Termcap_String_Buf;
-# endif /* NOT USE_TERMCAP */
-
- Termcap_Initalized = 1;
-
- Cls_Str = SLtt_tgetstr ("cl");
- Curs_Pos_Str = SLtt_tgetstr ("cm");
-
- if ((NULL == (Ins_Mode_Str = SLtt_tgetstr("im")))
- || ( NULL == (Eins_Mode_Str = SLtt_tgetstr("ei")))
- || ( NULL == (Del_Char_Str = SLtt_tgetstr("dc"))))
- SLtt_Term_Cannot_Insert = 1;
-
- Visible_Bell_Str = SLtt_tgetstr ("vb");
- Curs_Up_Str = SLtt_tgetstr ("up");
- Rev_Scroll_Str = SLtt_tgetstr("sr");
- Del_N_Lines_Str = SLtt_tgetstr("DL");
- Add_N_Lines_Str = SLtt_tgetstr("AL");
-
- /* Actually these are used to initialize terminals that use cursor
- * addressing. Hard to believe.
- */
- Term_Init_Str = SLtt_tgetstr ("ti");
- Term_Reset_Str = SLtt_tgetstr ("te");
-
- /* If I do this for vtxxx terminals, arrow keys start sending ESC O A,
- * which I do not want. This is mainly for HP terminals.
- */
- if ((almost_vtxxx == 0) || SLtt_Force_Keypad_Init)
- {
- Keypad_Init_Str = SLtt_tgetstr ("ks");
- Keypad_Reset_Str = SLtt_tgetstr ("ke");
- }
-
- /* Make up for defective termcap/terminfo databases */
- if ((Vt100_Like && (term[2] != '1'))
- || Linux_Console
- || is_xterm
- )
- {
- if (Del_N_Lines_Str == NULL) Del_N_Lines_Str = "\033[%dM";
- if (Add_N_Lines_Str == NULL) Add_N_Lines_Str = "\033[%dL";
- }
-
- Scroll_R_Str = SLtt_tgetstr("cs");
-
- SLtt_get_screen_size ();
-
- if ((Scroll_R_Str == NULL)
- || (((NULL == Del_N_Lines_Str) || (NULL == Add_N_Lines_Str))
- && (NULL == Rev_Scroll_Str)))
- {
- if (is_xterm
- || Linux_Console
- )
- {
- /* Defective termcap mode!!!! */
- SLtt_set_term_vtxxx (NULL);
- }
- else SLtt_Term_Cannot_Scroll = 1;
- }
-
- Del_Eol_Str = SLtt_tgetstr("ce");
- Del_Bol_Str = SLtt_tgetstr("cb");
- if (is_xterm && (Del_Bol_Str == NULL))
- Del_Bol_Str = "\033[1K";
- if (is_xterm && (Del_Eol_Str == NULL))
- Del_Bol_Str = "\033[K";
-
- Rev_Vid_Str = SLtt_tgetstr("mr");
- if (Rev_Vid_Str == NULL) Rev_Vid_Str = SLtt_tgetstr("so");
-
- Bold_Vid_Str = SLtt_tgetstr("md");
-
- /* Although xterm cannot blink, it does display the blinking characters
- * as bold ones. Some Rxvt will display the background as high intensity.
- */
- if ((NULL == (Blink_Vid_Str = SLtt_tgetstr("mb")))
- && is_xterm)
- Blink_Vid_Str = "\033[5m";
-
- UnderLine_Vid_Str = SLtt_tgetstr("us");
-
- Start_Alt_Chars_Str = SLtt_tgetstr ("as"); /* smacs */
- End_Alt_Chars_Str = SLtt_tgetstr ("ae"); /* rmacs */
- Enable_Alt_Char_Set = SLtt_tgetstr ("eA"); /* enacs */
- SLtt_Graphics_Char_Pairs = SLtt_tgetstr ("ac");
-
- if (NULL == SLtt_Graphics_Char_Pairs)
- {
- /* make up for defective termcap/terminfo */
- if (Vt100_Like)
- {
- Start_Alt_Chars_Str = "\016";
- End_Alt_Chars_Str = "\017";
- Enable_Alt_Char_Set = "\033)0";
- }
- }
-
- /* aixterm added by willi */
- if (is_xterm || !strncmp (term, "aixterm", 7))
- {
- Start_Alt_Chars_Str = "\016";
- End_Alt_Chars_Str = "\017";
- Enable_Alt_Char_Set = "\033(B\033)0";
- }
-
- if ((SLtt_Graphics_Char_Pairs == NULL) &&
- ((Start_Alt_Chars_Str == NULL) || (End_Alt_Chars_Str == NULL)))
- {
- SLtt_Has_Alt_Charset = 0;
- Enable_Alt_Char_Set = NULL;
- }
- else SLtt_Has_Alt_Charset = 1;
-
-#ifdef AMIGA
- Enable_Alt_Char_Set = Start_Alt_Chars_Str = End_Alt_Chars_Str = NULL;
-#endif
-
- /* status line capabilities */
- if ((SLtt_Has_Status_Line == -1)
- && (0 != (SLtt_Has_Status_Line = TGETFLAG ("hs"))))
- {
- Disable_Status_line_Str = SLtt_tgetstr ("ds");
- Return_From_Status_Line_Str = SLtt_tgetstr ("fs");
- Goto_Status_Line_Str = SLtt_tgetstr ("ts");
- /* Status_Line_Esc_Ok = TGETFLAG("es"); */
- Num_Status_Line_Columns = SLtt_tgetnum ("ws");
- if (Num_Status_Line_Columns < 0) Num_Status_Line_Columns = 0;
- }
-
- if (NULL == (Norm_Vid_Str = SLtt_tgetstr("me")))
- {
- Norm_Vid_Str = SLtt_tgetstr("se");
- }
-
- Cursor_Invisible_Str = SLtt_tgetstr("vi");
- Cursor_Visible_Str = SLtt_tgetstr("ve");
-
- Curs_F_Str = SLtt_tgetstr("RI");
-
-# if 0
- if (NULL != Curs_F_Str)
- {
- Len_Curs_F_Str = strlen(Curs_F_Str);
- }
- else Len_Curs_F_Str = strlen(Curs_Pos_Str);
-# endif
-
- Automatic_Margins = TGETFLAG ("am");
- /* No_Move_In_Standout = !TGETFLAG ("ms"); */
-# ifdef HP_GLITCH_CODE
- Has_HP_Glitch = TGETFLAG ("xs");
-# else
- Worthless_Highlight = TGETFLAG ("xs");
-# endif
-
- if (Worthless_Highlight == 0)
- { /* Magic cookie glitch */
- Worthless_Highlight = (SLtt_tgetnum ("sg") > 0);
- }
-
- if (Worthless_Highlight)
- SLtt_Has_Alt_Charset = 0;
-
- Reset_Color_String = SLtt_tgetstr ("op");
- Color_Fg_Str = SLtt_tgetstr ("AF"); /* ANSI setaf */
- Color_Bg_Str = SLtt_tgetstr ("AB"); /* ANSI setbf */
- if ((Color_Fg_Str == NULL) || (Color_Bg_Str == NULL))
- {
- Color_Fg_Str = SLtt_tgetstr ("Sf"); /* setf */
- Color_Bg_Str = SLtt_tgetstr ("Sb"); /* setb */
- }
-
- if ((Max_Terminfo_Colors = SLtt_tgetnum ("Co")) < 0)
- Max_Terminfo_Colors = 8;
-
- if ((Color_Bg_Str != NULL) && (Color_Fg_Str != NULL))
- SLtt_Use_Ansi_Colors = 1;
- else
- {
-#if 0
- Color_Fg_Str = "%?%p1%{7}%>%t\033[1;3%p1%{8}%m%dm%e\033[3%p1%dm%;";
- Color_Bg_Str = "%?%p1%{7}%>%t\033[5;4%p1%{8}%m%dm%e\033[4%p1%dm%;";
- Max_Terminfo_Colors = 16;
-#else
- Color_Fg_Str = "\033[3%dm";
- Color_Bg_Str = "\033[4%dm";
- Max_Terminfo_Colors = 8;
-#endif
- }
-
-#if SLTT_HAS_NON_BCE_SUPPORT
- Can_Background_Color_Erase = TGETFLAG ("ut"); /* bce */
- /* Modern xterms have the BCE capability as well as the linux console */
- if (Can_Background_Color_Erase == 0)
- {
- Can_Background_Color_Erase = (Linux_Console
-# if SLTT_XTERM_ALWAYS_BCE
- || is_xterm
-# endif
- );
- }
-#endif
- get_color_info ();
-
-
- if ((Cls_Str == NULL)
- || (Curs_Pos_Str == NULL))
- return -2;
-
- return 0;
-}
-
-#endif
-/* Unix */
-
-/* specific to vtxxx only */
-void SLtt_enable_cursor_keys (void)
-{
-#ifdef __unix__
- if (Vt100_Like)
-#endif
- tt_write_string("\033=\033[?1l");
-}
-
-#ifdef VMS
-int SLtt_initialize (char *term)
-{
- SLtt_get_terminfo ();
- return 0;
-}
-
-void SLtt_get_terminfo ()
-{
- int zero = 0;
-
- Color_Fg_Str = "\033[3%dm";
- Color_Bg_Str = "\033[4%dm";
- Max_Terminfo_Colors = 8;
-
- get_color_info ();
-
- SLtt_set_term_vtxxx(&zero);
- Start_Alt_Chars_Str = "\016";
- End_Alt_Chars_Str = "\017";
- SLtt_Has_Alt_Charset = 1;
- SLtt_Graphics_Char_Pairs = "aaffgghhjjkkllmmnnooqqssttuuvvwwxx";
- Enable_Alt_Char_Set = "\033(B\033)0";
- SLtt_get_screen_size ();
-}
-#endif
-
-/* This sets term for vt102 terminals it parameter vt100 is 0. If vt100
- * is non-zero, set terminal appropriate for a only vt100
- * (no add line capability). */
-
-void SLtt_set_term_vtxxx(int *vt100)
-{
- Norm_Vid_Str = "\033[m";
-
- Scroll_R_Str = "\033[%i%d;%dr";
- Cls_Str = "\033[2J\033[H";
- Rev_Vid_Str = "\033[7m";
- Bold_Vid_Str = "\033[1m";
- Blink_Vid_Str = "\033[5m";
- UnderLine_Vid_Str = "\033[4m";
- Del_Eol_Str = "\033[K";
- Del_Bol_Str = "\033[1K";
- Rev_Scroll_Str = "\033M";
- Curs_F_Str = "\033[%dC";
- /* Len_Curs_F_Str = 5; */
- Curs_Pos_Str = "\033[%i%d;%dH";
- if ((vt100 == NULL) || (*vt100 == 0))
- {
- Ins_Mode_Str = "\033[4h";
- Eins_Mode_Str = "\033[4l";
- Del_Char_Str = "\033[P";
- Del_N_Lines_Str = "\033[%dM";
- Add_N_Lines_Str = "\033[%dL";
- SLtt_Term_Cannot_Insert = 0;
- }
- else
- {
- Del_N_Lines_Str = NULL;
- Add_N_Lines_Str = NULL;
- SLtt_Term_Cannot_Insert = 1;
- }
- SLtt_Term_Cannot_Scroll = 0;
- /* No_Move_In_Standout = 0; */
-}
-
-int SLtt_init_video (void)
-{
- /* send_string_to_term("\033[?6h"); */
- /* relative origin mode */
- tt_write_string (Term_Init_Str);
- tt_write_string (Keypad_Init_Str);
- SLtt_reset_scroll_region();
- SLtt_end_insert();
- tt_write_string (Enable_Alt_Char_Set);
- Video_Initialized = 1;
- return 0;
-}
-
-int SLtt_reset_video (void)
-{
- SLtt_goto_rc (SLtt_Screen_Rows - 1, 0);
- Cursor_Set = 0;
- SLtt_normal_video (); /* MSKermit requires this */
- tt_write_string(Norm_Vid_Str);
-
- Current_Fgbg = 0xFFFFFFFFU;
- SLtt_set_alt_char_set (0);
- if (SLtt_Use_Ansi_Colors)
- {
- if (Reset_Color_String == NULL)
- {
- SLtt_Char_Type attr;
- if (-1 != make_color_fgbg (NULL, NULL, &attr))
- write_attributes (attr);
- else tt_write_string ("\033[0m\033[m");
- }
- else tt_write_string (Reset_Color_String);
- Current_Fgbg = 0xFFFFFFFFU;
- }
- SLtt_erase_line ();
- tt_write_string (Keypad_Reset_Str);
- tt_write_string (Term_Reset_Str);
- SLtt_flush_output ();
- Video_Initialized = 0;
- return 0;
-}
-
-void SLtt_bold_video (void)
-{
- tt_write_string (Bold_Vid_Str);
-}
-
-int SLtt_set_mouse_mode (int mode, int force)
-{
- char *term;
-
- if (force == 0)
- {
- if (NULL == (term = (char *) getenv("TERM"))) return -1;
- if (strncmp ("xterm", term, 5))
- return -1;
- }
-
- if (mode)
- tt_write_string ("\033[?9h");
- else
- tt_write_string ("\033[?9l");
-
- return 0;
-}
-
-void SLtt_disable_status_line (void)
-{
- if (SLtt_Has_Status_Line > 0)
- {
- tt_write_string (Disable_Status_line_Str);
- SLtt_flush_output ();
- }
-}
-
-int SLtt_write_to_status_line (char *s, int col)
-{
- if ((SLtt_Has_Status_Line <= 0)
- || (Goto_Status_Line_Str == NULL)
- || (Return_From_Status_Line_Str == NULL))
- return -1;
-
- tt_printf (Goto_Status_Line_Str, col, 0);
- tt_write_string (s);
- tt_write_string (Return_From_Status_Line_Str);
- return 0;
-}
-
-void SLtt_get_screen_size (void)
-{
-#ifdef VMS
- int status, code;
- unsigned short chan;
- $DESCRIPTOR(dev_dsc, "SYS$INPUT:");
-#endif
- int r = 0, c = 0;
-
-#ifdef TIOCGWINSZ
- struct winsize wind_struct;
-
- do
- {
- if ((ioctl(1,TIOCGWINSZ,&wind_struct) == 0)
- || (ioctl(0, TIOCGWINSZ, &wind_struct) == 0)
- || (ioctl(2, TIOCGWINSZ, &wind_struct) == 0))
- {
- c = (int) wind_struct.ws_col;
- r = (int) wind_struct.ws_row;
- break;
- }
- }
- while (errno == EINTR);
-
-#endif
-
-#ifdef VMS
- status = sys$assign(&dev_dsc,&chan,0,0,0);
- if (status & 1)
- {
- code = DVI$_DEVBUFSIZ;
- status = lib$getdvi(&code, &chan,0, &c, 0,0);
- if (!(status & 1))
- c = 80;
- code = DVI$_TT_PAGE;
- status = lib$getdvi(&code, &chan,0, &r, 0,0);
- if (!(status & 1))
- r = 24;
- sys$dassgn(chan);
- }
-#endif
-
- if (r <= 0)
- {
- char *s = getenv ("LINES");
- if (s != NULL) r = atoi (s);
- }
-
- if (c <= 0)
- {
- char *s = getenv ("COLUMNS");
- if (s != NULL) c = atoi (s);
- }
-
- if (r <= 0) r = 24;
- if (c <= 0) c = 80;
-#if 0
- if ((r <= 0) || (r > 200)) r = 24;
- if ((c <= 0) || (c > 250)) c = 80;
-#endif
- SLtt_Screen_Rows = r;
- SLtt_Screen_Cols = c;
-}
-
-#if SLTT_HAS_NON_BCE_SUPPORT
-int _SLtt_get_bce_color_offset (void)
-{
- if ((SLtt_Use_Ansi_Colors == 0)
- || Can_Background_Color_Erase
- || SLtt_Use_Blink_For_ACS) /* in this case, we cannot lose a color */
- Bce_Color_Offset = 0;
- else
- {
- if (GET_BG(Ansi_Color_Map[0].fgbg) == SLSMG_COLOR_DEFAULT)
- Bce_Color_Offset = 0;
- else
- Bce_Color_Offset = 1;
- }
-
- return Bce_Color_Offset;
-}
-#endif
diff --git a/mdk-stage1/slang/slerr.c b/mdk-stage1/slang/slerr.c
deleted file mode 100644
index 139b3859b..000000000
--- a/mdk-stage1/slang/slerr.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* error handling common to all routines. */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-void (*SLang_VMessage_Hook) (char *, va_list);
-void (*SLang_Error_Hook)(char *);
-void (*SLang_Exit_Error_Hook)(char *, va_list);
-volatile int SLang_Error = 0;
-char *SLang_Error_Message;
-volatile int SLKeyBoard_Quit = 0;
-
-static char *get_error_string (void)
-{
- char *str;
-
- if (!SLang_Error) SLang_Error = SL_UNKNOWN_ERROR;
- if (SLang_Error_Message != NULL) str = SLang_Error_Message;
- else switch(SLang_Error)
- {
- case SL_NOT_IMPLEMENTED: str = "Not Implemented"; break;
- case SL_APPLICATION_ERROR: str = "Application Error"; break;
- case SL_VARIABLE_UNINITIALIZED: str = "Variable Uninitialized"; break;
- case SL_MALLOC_ERROR : str = "Malloc Error"; break;
- case SL_INTERNAL_ERROR: str = "Internal Error"; break;
- case SL_STACK_OVERFLOW: str = "Stack Overflow"; break;
- case SL_STACK_UNDERFLOW: str = "Stack Underflow"; break;
- case SL_INTRINSIC_ERROR: str = "Intrinsic Error"; break;
- case SL_USER_BREAK: str = "User Break"; break;
- case SL_UNDEFINED_NAME: str = "Undefined Name"; break;
- case SL_SYNTAX_ERROR: str = "Syntax Error"; break;
- case SL_DUPLICATE_DEFINITION: str = "Duplicate Definition"; break;
- case SL_TYPE_MISMATCH: str = "Type Mismatch"; break;
- case SL_READONLY_ERROR: str = "Variable is read-only"; break;
- case SL_DIVIDE_ERROR: str = "Divide by zero"; break;
- case SL_OBJ_NOPEN: str = "Object not opened"; break;
- case SL_OBJ_UNKNOWN: str = "Object unknown"; break;
- case SL_INVALID_PARM: str = "Invalid Parameter"; break;
- case SL_TYPE_UNDEFINED_OP_ERROR:
- str = "Operation not defined for datatype"; break;
- case SL_USER_ERROR:
- str = "User Error"; break;
- case SL_USAGE_ERROR:
- str = "Illegal usage of function";
- break;
- case SL_FLOATING_EXCEPTION:
- str = "Floating Point Exception";
- break;
- case SL_UNKNOWN_ERROR:
- default: str = "Unknown Error Code";
- }
-
- SLang_Error_Message = NULL;
- return str;
-}
-
-void SLang_doerror (char *error)
-{
- char *str = NULL;
- char *err;
- char *malloced_err_buf;
- char err_buf [1024];
-
- malloced_err_buf = NULL;
-
- if (((SLang_Error == SL_USER_ERROR)
- || (SLang_Error == SL_USAGE_ERROR))
- && (error != NULL) && (*error != 0))
- err = error;
- else
- {
- char *sle = "S-Lang Error: ";
- unsigned int len;
- char *fmt;
-
- str = get_error_string ();
-
- fmt = "%s%s%s";
- if ((error == NULL) || (*error == 0))
- error = "";
- else if (SLang_Error == SL_UNKNOWN_ERROR)
- /* Do not display an unknown error message if error is non-NULL */
- str = "";
- else
- fmt = "%s%s: %s";
-
- len = strlen (sle) + strlen (str) + strlen(error) + 1;
-
- err = err_buf;
- if (len >= sizeof (err_buf))
- {
- if (NULL == (malloced_err_buf = SLmalloc (len)))
- err = NULL;
- else
- err = malloced_err_buf;
- }
-
- if (err != NULL) sprintf (err, fmt, sle, str, error);
- else err = "Out of memory";
- }
-
- if (SLang_Error_Hook == NULL)
- {
- fputs (err, stderr);
- fputs("\r\n", stderr);
- fflush (stderr);
- }
- else
- (*SLang_Error_Hook)(err);
-
- SLfree (malloced_err_buf);
-}
-
-void SLang_verror (int err_code, char *fmt, ...)
-{
- va_list ap;
- char err [1024];
-
- if (err_code == 0) err_code = SL_INTRINSIC_ERROR;
- if (SLang_Error == 0) SLang_Error = err_code;
-
- if (fmt != NULL)
- {
- va_start(ap, fmt);
- (void) _SLvsnprintf (err, sizeof (err), fmt, ap);
- fmt = err;
- va_end(ap);
- }
-
- SLang_doerror (fmt);
-}
-
-void SLang_exit_error (char *fmt, ...)
-{
- va_list ap;
-
- va_start (ap, fmt);
- if (SLang_Exit_Error_Hook != NULL)
- {
- (*SLang_Exit_Error_Hook) (fmt, ap);
- exit (1);
- }
-
- if (fmt != NULL)
- {
- vfprintf (stderr, fmt, ap);
- fputs ("\r\n", stderr);
- fflush (stderr);
- }
- va_end (ap);
-
- exit (1);
-}
-
-void SLang_vmessage (char *fmt, ...)
-{
- va_list ap;
-
- if (fmt == NULL)
- return;
-
- va_start (ap, fmt);
-
- if (SLang_VMessage_Hook != NULL)
- (*SLang_VMessage_Hook) (fmt, ap);
- else
- {
- vfprintf (stdout, fmt, ap);
- fputs ("\r\n", stdout);
- }
-
- va_end (ap);
-}
diff --git a/mdk-stage1/slang/slerrno.c b/mdk-stage1/slang/slerrno.c
deleted file mode 100644
index 662fadde1..000000000
--- a/mdk-stage1/slang/slerrno.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* The point of this file is to handle errno values in a system independent
- * way so that they may be used in slang scripts.
- */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include <errno.h>
-#include "slang.h"
-#include "_slang.h"
-
-typedef struct
-{
- char *msg;
- int sys_errno;
- char *symbolic_name;
-}
-Errno_Map_Type;
-
-static Errno_Map_Type Errno_Map [] =
-{
-#ifndef EPERM
-# define EPERM -1
-#endif
- {"Not owner", EPERM, "EPERM"},
-#ifndef ENOENT
-# define ENOENT -1
-#endif
- {"No such file or directory", ENOENT, "ENOENT"},
-#ifndef ESRCH
-# define ESRCH -1
-#endif
- {"No such process", ESRCH, "ESRCH"},
-#ifndef EINTR
-# define EINTR -1
-#endif
- {"Interrupted system call", EINTR, "EINTR"},
-#ifndef EIO
-# define EIO -1
-#endif
- {"I/O error", EIO, "EIO"},
-#ifndef ENXIO
-# define ENXIO -1
-#endif
- {"No such device or address", ENXIO, "ENXIO"},
-#ifndef E2BIG
-# define E2BIG -1
-#endif
- {"Arg list too long", E2BIG, "E2BIG"},
-#ifndef ENOEXEC
-# define ENOEXEC -1
-#endif
- {"Exec format error", ENOEXEC,"ENOEXEC"},
-#ifndef EBADF
-# define EBADF -1
-#endif
- {"Bad file number", EBADF, "EBADF"},
-#ifndef ECHILD
-# define ECHILD -1
-#endif
- {"No children", ECHILD, "ECHILD"},
-#ifndef EAGAIN
-# define EAGAIN -1
-#endif
- {"Try again", EAGAIN, "EAGAIN"},
-#ifndef ENOMEM
-# define ENOMEM -1
-#endif
- {"Not enough core", ENOMEM, "ENOMEM"},
-#ifndef EACCES
-# define EACCES -1
-#endif
- {"Permission denied", EACCES, "EACCES"},
-#ifndef EFAULT
-# define EFAULT -1
-#endif
- {"Bad address", EFAULT, "EFAULT"},
-#ifndef ENOTBLK
-# define ENOTBLK -1
-#endif
- {"Block device required", ENOTBLK, "ENOTBLK"},
-#ifndef EBUSY
-# define EBUSY -1
-#endif
- {"Mount device busy", EBUSY, "EBUSY"},
-#ifndef EEXIST
-# define EEXIST -1
-#endif
- {"File exists", EEXIST, "EEXIST"},
-#ifndef EXDEV
-# define EXDEV -1
-#endif
- {"Cross-device link", EXDEV, "EXDEV"},
-#ifndef ENODEV
-# define ENODEV -1
-#endif
- {"No such device", ENODEV, "ENODEV"},
-#ifndef ENOTDIR
-# define ENOTDIR -1
-#endif
- {"Not a directory", ENOTDIR, "ENOTDIR"},
-#ifndef EISDIR
-# define EISDIR -1
-#endif
- {"Is a directory", EISDIR, "EISDIR"},
-#ifndef EINVAL
-# define EINVAL -1
-#endif
- {"Invalid argument", EINVAL, "EINVAL"},
-#ifndef ENFILE
-# define ENFILE -1
-#endif
- {"File table overflow", ENFILE, "ENFILE"},
-#ifndef EMFILE
-# define EMFILE -1
-#endif
- {"Too many open files", EMFILE, "EMFILE"},
-#ifndef ENOTTY
-# define ENOTTY -1
-#endif
- {"Not a typewriter", ENOTTY, "ENOTTY"},
-#ifndef ETXTBSY
-# define ETXTBSY -1
-#endif
- {"Text file busy", ETXTBSY, "ETXTBSY"},
-#ifndef EFBIG
-# define EFBIG -1
-#endif
- {"File too large", EFBIG, "EFBIG"},
-#ifndef ENOSPC
-# define ENOSPC -1
-#endif
- {"No space left on device", ENOSPC, "ENOSPC"},
-#ifndef ESPIPE
-# define ESPIPE -1
-#endif
- {"Illegal seek", ESPIPE, "ESPIPE"},
-#ifndef EROFS
-# define EROFS -1
-#endif
- {"Read-only file system", EROFS, "EROFS"},
-#ifndef EMLINK
-# define EMLINK -1
-#endif
- {"Too many links", EMLINK, "EMLINK"},
-#ifndef EPIPE
-# define EPIPE -1
-#endif
- {"Broken pipe", EPIPE, "EPIPE"},
-#ifndef ELOOP
-# define ELOOP -1
-#endif
- {"Too many levels of symbolic links",ELOOP, "ELOOP"},
-#ifndef ENAMETOOLONG
-# define ENAMETOOLONG -1
-#endif
- {"File name too long", ENAMETOOLONG, "ENAMETOOLONG"},
-
- {NULL, 0, NULL}
-};
-
-int _SLerrno_errno;
-
-int SLerrno_set_errno (int sys_errno)
-{
- _SLerrno_errno = sys_errno;
- return 0;
-}
-
-char *SLerrno_strerror (int sys_errno)
-{
- Errno_Map_Type *e;
-
- e = Errno_Map;
- while (e->msg != NULL)
- {
- if (e->sys_errno == sys_errno)
- return e->msg;
-
- e++;
- }
-
- if (sys_errno == SL_ERRNO_NOT_IMPLEMENTED)
- return "System call not available for this platform";
-
- return "Unknown error";
-}
-
-static char *intrin_errno_string (int *sys_errno)
-{
- return SLerrno_strerror (*sys_errno);
-}
-
-int _SLerrno_init (void)
-{
- static Errno_Map_Type *e;
-
- if (e != NULL) /* already initialized */
- return 0;
-
- if ((-1 == SLadd_intrinsic_function ("errno_string", (FVOID_STAR) intrin_errno_string,
- SLANG_STRING_TYPE, 1, SLANG_INT_TYPE))
- || (-1 == SLadd_intrinsic_variable ("errno", (VOID_STAR)&_SLerrno_errno, SLANG_INT_TYPE, 1)))
- return -1;
-
- e = Errno_Map;
- while (e->msg != NULL)
- {
- if (-1 == SLadd_intrinsic_variable (e->symbolic_name, (VOID_STAR) &e->sys_errno, SLANG_INT_TYPE, 1))
- return -1;
- e++;
- }
-
- return 0;
-}
diff --git a/mdk-stage1/slang/slgetkey.c b/mdk-stage1/slang/slgetkey.c
deleted file mode 100644
index 2f2914f07..000000000
--- a/mdk-stage1/slang/slgetkey.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-unsigned int SLang_Input_Buffer_Len = 0;
-unsigned char SLang_Input_Buffer [SL_MAX_INPUT_BUFFER_LEN];
-
-int SLang_Abort_Char = 7;
-int SLang_Ignore_User_Abort = 0;
-
-/* This has the effect of mapping all characters in the range 128-169 to
- * ESC [ something
- */
-
-unsigned int SLang_getkey (void)
-{
- unsigned int imax;
- unsigned int ch;
-
- if (SLang_Input_Buffer_Len)
- {
- ch = (unsigned int) *SLang_Input_Buffer;
- SLang_Input_Buffer_Len--;
- imax = SLang_Input_Buffer_Len;
-
- SLMEMCPY ((char *) SLang_Input_Buffer,
- (char *) (SLang_Input_Buffer + 1), imax);
- }
- else if (SLANG_GETKEY_ERROR == (ch = _SLsys_getkey ())) return ch;
-
-#if _SLANG_MAP_VTXXX_8BIT
-# if !defined(IBMPC_SYSTEM)
- if (ch & 0x80)
- {
- unsigned char i;
- i = (unsigned char) (ch & 0x7F);
- if (i < ' ')
- {
- i += 64;
- SLang_ungetkey (i);
- ch = 27;
- }
- }
-# endif
-#endif
- return(ch);
-}
-
-int SLang_ungetkey_string (unsigned char *s, unsigned int n)
-{
- register unsigned char *bmax, *b, *b1;
- if (SLang_Input_Buffer_Len + n + 3 > SL_MAX_INPUT_BUFFER_LEN)
- return -1;
-
- b = SLang_Input_Buffer;
- bmax = (b - 1) + SLang_Input_Buffer_Len;
- b1 = bmax + n;
- while (bmax >= b) *b1-- = *bmax--;
- bmax = b + n;
- while (b < bmax) *b++ = *s++;
- SLang_Input_Buffer_Len += n;
- return 0;
-}
-
-int SLang_buffer_keystring (unsigned char *s, unsigned int n)
-{
-
- if (n + SLang_Input_Buffer_Len + 3 > SL_MAX_INPUT_BUFFER_LEN) return -1;
-
- SLMEMCPY ((char *) SLang_Input_Buffer + SLang_Input_Buffer_Len,
- (char *) s, n);
- SLang_Input_Buffer_Len += n;
- return 0;
-}
-
-int SLang_ungetkey (unsigned char ch)
-{
- return SLang_ungetkey_string(&ch, 1);
-}
-
-int SLang_input_pending (int tsecs)
-{
- int n;
- unsigned char c;
- if (SLang_Input_Buffer_Len) return (int) SLang_Input_Buffer_Len;
-
- n = _SLsys_input_pending (tsecs);
-
- if (n <= 0) return 0;
-
- c = (unsigned char) SLang_getkey ();
- SLang_ungetkey_string (&c, 1);
-
- return n;
-}
-
-void SLang_flush_input (void)
-{
- int quit = SLKeyBoard_Quit;
-
- SLang_Input_Buffer_Len = 0;
- SLKeyBoard_Quit = 0;
- while (_SLsys_input_pending (0) > 0)
- {
- (void) _SLsys_getkey ();
- /* Set this to 0 because _SLsys_getkey may stuff keyboard buffer if
- * key sends key sequence (OS/2, DOS, maybe VMS).
- */
- SLang_Input_Buffer_Len = 0;
- }
- SLKeyBoard_Quit = quit;
-}
-
-#ifdef IBMPC_SYSTEM
-static int Map_To_ANSI;
-int SLgetkey_map_to_ansi (int enable)
-{
- Map_To_ANSI = enable;
- return 0;
-}
-
-static int convert_scancode (unsigned int scan,
- unsigned int shift,
- int getkey,
- unsigned int *ret_key)
-{
- unsigned char buf[16];
- unsigned char *b;
- unsigned char end;
- int is_arrow;
-
- shift &= (_SLTT_KEY_ALT|_SLTT_KEY_SHIFT|_SLTT_KEY_CTRL);
-
- b = buf;
- if (_SLTT_KEY_ALT == shift)
- {
- shift = 0;
- *b++ = 27;
- }
- *b++ = 27;
- *b++ = '[';
-
- is_arrow = 0;
- end = '~';
- if (shift)
- {
- if (shift == _SLTT_KEY_CTRL)
- end = '^';
- else if (shift == _SLTT_KEY_SHIFT)
- end = '$';
- else shift = 0;
- }
-
- /* These mappings correspond to what rxvt produces under Linux */
- switch (scan & 0xFF)
- {
- default:
- return -1;
-
- case 0x47: /* home */
- *b++ = '1';
- break;
- case 0x48: /* up */
- end = 'A';
- is_arrow = 1;
- break;
- case 0x49: /* PgUp */
- *b++ = '5';
- break;
- case 0x4B: /* Left */
- end = 'D';
- is_arrow = 1;
- break;
- case 0x4D: /* Right */
- end = 'C';
- is_arrow = 1;
- break;
- case 0x4F: /* End */
- *b++ = '4';
- break;
- case 0x50: /* Down */
- end = 'B';
- is_arrow = 1;
- break;
- case 0x51: /* PgDn */
- *b++ = '6';
- break;
- case 0x52: /* Insert */
- *b++ = '2';
- break;
- case 0x53: /* Delete */
- *b++ = '3';
- break;
- case ';': /* F1 */
- *b++ = '1';
- *b++ = '1';
- break;
- case '<': /* F2 */
- *b++ = '1';
- *b++ = '2';
- break;
- case '=': /* F3 */
- *b++ = '1';
- *b++ = '3';
- break;
-
- case '>': /* F4 */
- *b++ = '1';
- *b++ = '4';
- break;
-
- case '?': /* F5 */
- *b++ = '1';
- *b++ = '5';
- break;
-
- case '@': /* F6 */
- *b++ = '1';
- *b++ = '7';
- break;
-
- case 'A': /* F7 */
- *b++ = '1';
- *b++ = '8';
- break;
-
- case 'B': /* F8 */
- *b++ = '1';
- *b++ = '9';
- break;
-
- case 'C': /* F9 */
- *b++ = '2';
- *b++ = '0';
- break;
-
- case 'D': /* F10 */
- *b++ = '2';
- *b++ = '1';
- break;
-
- case 0x57: /* F11 */
- *b++ = '2';
- *b++ = '3';
- break;
-
- case 0x58: /* F12 */
- *b++ = '2';
- *b++ = '4';
- break;
- }
-
- if (is_arrow && shift)
- {
- if (shift == _SLTT_KEY_CTRL)
- end &= 0x1F;
- else
- end |= 0x20;
- }
- *b++ = end;
-
- if (getkey)
- {
- (void) SLang_buffer_keystring (buf + 1, (unsigned int) (b - (buf + 1)));
- *ret_key = buf[0];
- return 0;
- }
-
- (void) SLang_buffer_keystring (buf, (unsigned int) (b - buf));
- return 0;
-}
-
-
-unsigned int _SLpc_convert_scancode (unsigned int scan,
- unsigned int shift,
- int getkey)
-{
- unsigned char buf[16];
-
- if (Map_To_ANSI)
- {
- if (0 == convert_scancode (scan, shift, getkey, &scan))
- return scan;
- }
-
- if (getkey)
- {
- buf[0] = scan & 0xFF;
- SLang_buffer_keystring (buf, 1);
- return (scan >> 8) & 0xFF;
- }
- buf[0] = (scan >> 8) & 0xFF;
- buf[1] = scan & 0xFF;
- (void) SLang_buffer_keystring (buf, 2);
- return 0;
-}
-
-#endif
diff --git a/mdk-stage1/slang/slimport.c b/mdk-stage1/slang/slimport.c
deleted file mode 100644
index 44b4b25e1..000000000
--- a/mdk-stage1/slang/slimport.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#define SLANG_HAS_DYNAMIC_LINKING 1
-
-#ifndef HAVE_DLFCN_H
-# undef SLANG_HAS_DYNAMIC_LINKING
-# define SLANG_HAS_DYNAMIC_LINKING 0
-#endif
-
-/* The rest of this file is in the if block */
-#if SLANG_HAS_DYNAMIC_LINKING
-
-#ifdef HAVE_DLFCN_H
-# include <dlfcn.h>
-#endif
-
-static char *Module_Path;
-#define MODULE_PATH_ENV_NAME "SLANG_MODULE_PATH"
-#ifndef MODULE_INSTALL_DIR
-# define MODULE_INSTALL_DIR "/usr/local/lib/slang/modules"
-#endif
-
-typedef struct _Handle_Type
-{
- struct _Handle_Type *next;
- char *name;
- VOID_STAR handle;
- void (*deinit_fun) (void);
-}
-Handle_Type;
-
-static Handle_Type *Handle_List;
-
-static void delete_handles (void)
-{
- while (Handle_List != NULL)
- {
- Handle_Type *next = Handle_List->next;
-
- if (Handle_List->deinit_fun != NULL)
- Handle_List->deinit_fun ();
- (void) dlclose (Handle_List->handle);
- SLang_free_slstring (Handle_List->name);
- SLfree ((char *)Handle_List);
- Handle_List = next;
- }
-}
-
-static Handle_Type *save_handle (char *name, VOID_STAR h, void (*df)(void))
-{
- Handle_Type *l;
-
- l = (Handle_Type *) SLmalloc (sizeof (Handle_Type));
- if (l == NULL)
- return NULL;
- memset ((char *) l, 0, sizeof(Handle_Type));
- if (NULL == (l->name = SLang_create_slstring (name)))
- {
- SLfree ((char *) l);
- return NULL;
- }
- l->handle = h;
- l->next = Handle_List;
- l->deinit_fun = df;
- Handle_List = l;
-
- return l;
-}
-
-static Handle_Type *find_handle (char *name)
-{
- Handle_Type *l;
-
- l = Handle_List;
- while (l != NULL)
- {
- if (0 == strcmp (l->name, name))
- break;
- l = l->next;
- }
- return l;
-}
-
-static int import_from_library (char *name,
- char *init_fun_name, char *deinit_fun_name,
- char *file,
- char *ns,
- char *ns_init_fun_name)
-{
- VOID_STAR handle;
- int (*init_fun) (void);
- int (*ns_init_fun) (char *);
- void (*deinit_fun) (void);
- char *err;
- char filebuf[1024];
- char *fun_name;
-
- if (NULL != find_handle (name))
- return 0; /* already loaded */
-
- while (1)
- {
-#ifndef RTLD_GLOBAL
-# define RTLD_GLOBAL 0
-#endif
-#ifdef RTLD_NOW
- handle = (VOID_STAR) dlopen (file, RTLD_NOW | RTLD_GLOBAL);
-#else
- handle = (VOID_STAR) dlopen (file, RTLD_LAZY | RTLD_GLOBAL);
-#endif
-
- if (handle != NULL)
- break;
-
- if (NULL == strchr (file, '/'))
- {
- _SLsnprintf (filebuf, sizeof (filebuf), "./%s", file);
- file = filebuf;
- continue;
- }
-
- if (NULL == (err = (char *) dlerror ()))
- err = "UNKNOWN";
-
- SLang_verror (SL_INTRINSIC_ERROR,
- "Error linking to %s: %s", file, err);
- return -1;
- }
-
- fun_name = ns_init_fun_name;
- ns_init_fun = (int (*)(char *)) dlsym (handle, fun_name);
- if (ns_init_fun == NULL)
- {
- if ((ns != NULL)
- && (0 != strcmp (ns, "Global")))
- goto return_error;
-
- fun_name = init_fun_name;
- init_fun = (int (*)(void)) dlsym (handle, fun_name);
- if (init_fun == NULL)
- goto return_error;
-
- if (-1 == (*init_fun) ())
- {
- dlclose (handle);
- return -1;
- }
- }
- else if (-1 == (*ns_init_fun) (ns))
- {
- dlclose (handle);
- return -1;
- }
-
-
- deinit_fun = (void (*)(void)) dlsym (handle, deinit_fun_name);
-
- (void) save_handle (name, handle, deinit_fun);
- return 0;
-
- return_error:
-
- if (NULL == (err = (char *) dlerror ()))
- err = "UNKNOWN";
-
- dlclose (handle);
- SLang_verror (SL_INTRINSIC_ERROR,
- "Unable to get symbol %s from %s: %s",
- name, file, err);
- return -1;
-}
-
-static void import_module (void)
-{
- char module_name[256];
- char symbol_name[256];
- char deinit_name[256];
- char ns_init_name[256];
- char *path;
- char *file;
- char *module;
- char *ns = NULL;
-
- if (SLang_Num_Function_Args == 2)
- {
- if (-1 == SLang_pop_slstring (&ns))
- return;
- }
-
- if (-1 == SLang_pop_slstring (&module))
- {
- SLang_free_slstring (ns); /* NULL ok */
- return;
- }
-
- _SLsnprintf (symbol_name, sizeof(symbol_name), "init_%s_module", module);
- _SLsnprintf (module_name, sizeof(module_name), "%s-module.so", module);
- _SLsnprintf (deinit_name, sizeof(deinit_name), "deinit_%s_module", module);
- _SLsnprintf (ns_init_name, sizeof (ns_init_name), "init_%s_module_ns", module);
-
- if (Module_Path != NULL)
- file = SLpath_find_file_in_path (Module_Path, module_name);
- else file = NULL;
-
- if ((file == NULL)
- && (NULL != (path = getenv (MODULE_PATH_ENV_NAME))))
- file = SLpath_find_file_in_path (path, module_name);
-
- if (file == NULL)
- file = SLpath_find_file_in_path (MODULE_INSTALL_DIR, module_name);
-
- if (file != NULL)
- {
- (void) import_from_library (symbol_name, symbol_name, deinit_name, file, ns, ns_init_name);
- SLfree (file);
- }
- else
- {
- /* Maybe the system loader can find it in LD_LIBRARY_PATH */
- (void) import_from_library (symbol_name, symbol_name, deinit_name, module_name, ns, ns_init_name);
- }
-}
-
-static void set_import_module_path (char *path)
-{
- (void) SLang_set_module_load_path (path);
-}
-
-static char *get_import_module_path (void)
-{
- char *path;
- if (Module_Path != NULL)
- return Module_Path;
- if (NULL != (path = getenv (MODULE_PATH_ENV_NAME)))
- return path;
- return MODULE_INSTALL_DIR;
-}
-
-static SLang_Intrin_Fun_Type Module_Intrins [] =
-{
- MAKE_INTRINSIC_0("import", import_module, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("set_import_module_path", set_import_module_path, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("get_import_module_path", get_import_module_path, SLANG_STRING_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-#endif /* SLANG_HAS_DYNAMIC_LINKING */
-
-int SLang_set_module_load_path (char *path)
-{
-#if SLANG_HAS_DYNAMIC_LINKING
- if (NULL == (path = SLang_create_slstring (path)))
- return -1;
- SLang_free_slstring (Module_Path);
- Module_Path = path;
- return 0;
-#else
- (void) path;
- return -1;
-#endif
-}
-
-int SLang_init_import (void)
-{
-#if SLANG_HAS_DYNAMIC_LINKING
- (void) SLang_add_cleanup_function (delete_handles);
- return SLadd_intrin_fun_table (Module_Intrins, "__IMPORT__");
-#else
- return 0;
-#endif
-}
diff --git a/mdk-stage1/slang/slinclud.h b/mdk-stage1/slang/slinclud.h
deleted file mode 100644
index d60a4423e..000000000
--- a/mdk-stage1/slang/slinclud.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef _SLANG_INCLUDE_H_
-#define _SLANG_INCLUDE_H_
-
-#include "config.h"
-#include "sl-feat.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef HAVE_MALLOC_H
-# include <malloc.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-# include <memory.h>
-#endif
-
-#endif /* _SLANG_INCLUDE_H_ */
diff --git a/mdk-stage1/slang/slintall.c b/mdk-stage1/slang/slintall.c
deleted file mode 100644
index a66b9d6d2..000000000
--- a/mdk-stage1/slang/slintall.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-int SLang_init_all (void)
-{
- if ((-1 == SLang_init_slang ())
- || (-1 == SLang_init_slmath ())
- || (-1 == SLang_init_posix_dir ())
- || (-1 == SLang_init_posix_process ())
- || (-1 == SLang_init_stdio ())
- || (-1 == SLang_init_array ())
- || (-1 == SLang_init_posix_io ())
- || (-1 == SLang_init_ospath ())
- )
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slistruc.c b/mdk-stage1/slang/slistruc.c
deleted file mode 100644
index 06b8fd6ff..000000000
--- a/mdk-stage1/slang/slistruc.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/* Intrinsic Structure type implementation */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/* Intrinsic structures */
-
-typedef struct
-{
- char *name;
- VOID_STAR addr;
- SLang_IStruct_Field_Type *fields;
-}
-_SLang_IStruct_Type;
-
-static SLang_IStruct_Field_Type *istruct_pop_field (char *name, int no_readonly, VOID_STAR *addr)
-{
- _SLang_IStruct_Type *s;
- SLang_IStruct_Field_Type *f;
- char *struct_addr;
-
- /* Note: There is no need to free this object */
- if (-1 == SLclass_pop_ptr_obj (SLANG_ISTRUCT_TYPE, (VOID_STAR *) &s))
- return NULL;
-
- if (NULL == (struct_addr = *(char **)s->addr))
- {
- SLang_verror (SL_INTRINSIC_ERROR,
- "%s is NULL. Unable to access field", s->name);
- return NULL;
- }
-
- f = s->fields;
- while (f->field_name != NULL)
- {
- /* Since both these are slstrings, just test pointers */
- if (f->field_name != name)
- {
- f++;
- continue;
- }
-
- if (no_readonly && f->read_only)
- {
- SLang_verror (SL_READONLY_ERROR,
- "%s.%s is read-only", s->name, name);
- return NULL;
- }
-
- *addr = (VOID_STAR) (struct_addr + f->offset);
- return f;
- }
-
- SLang_verror (SL_TYPE_MISMATCH,
- "%s has no field called %s", s->name, name);
- return NULL;
-}
-
-static int istruct_sget (unsigned char type, char *name)
-{
- SLang_IStruct_Field_Type *f;
- VOID_STAR addr;
- SLang_Class_Type *cl;
-
- if (NULL == (f = istruct_pop_field (name, 0, &addr)))
- return -1;
-
- type = f->type;
- cl = _SLclass_get_class (type);
-
- return (cl->cl_push_intrinsic)(f->type, addr);
-}
-
-static int istruct_sput (unsigned char type, char *name)
-{
- SLang_IStruct_Field_Type *f;
- VOID_STAR addr;
- SLang_Class_Type *cl;
-
- if (NULL == (f = istruct_pop_field (name, 1, &addr)))
- return -1;
-
- type = f->type;
- cl = _SLclass_get_class (type);
-
- return (*cl->cl_pop) (type, addr);
-}
-
-static int istruct_push (unsigned char type, VOID_STAR ptr)
-{
- _SLang_IStruct_Type *s;
-
- s = *(_SLang_IStruct_Type **) ptr;
- if ((s == NULL)
- || (s->addr == NULL)
- || (*(char **) s->addr == NULL))
- return SLang_push_null ();
-
- return SLclass_push_ptr_obj (type, (VOID_STAR) s);
-}
-
-static int istruct_pop (unsigned char type, VOID_STAR ptr)
-{
- return SLclass_pop_ptr_obj (type, (VOID_STAR *)ptr);
-}
-
-static void istruct_destroy (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- (void) ptr;
-}
-
-/* Intrinsic struct objects are not stored in a variable. So, the address that
- * is passed here is actually a pointer to the struct. So, pass its address
- * to istruct_push since v is a variable. Confusing, n'est pas?
- */
-static int istruct_push_intrinsic (unsigned char type, VOID_STAR v)
-{
- return istruct_push (type, (VOID_STAR) &v);
-}
-
-static int init_intrin_struct (void)
-{
- SLang_Class_Type *cl;
- static int initialized;
-
- if (initialized)
- return 0;
-
- if (NULL == (cl = SLclass_allocate_class ("IStruct_Type")))
- return -1;
-
- cl->cl_pop = istruct_pop;
- cl->cl_push = istruct_push;
- cl->cl_sget = istruct_sget;
- cl->cl_sput = istruct_sput;
- cl->cl_destroy = istruct_destroy;
- cl->cl_push_intrinsic = istruct_push_intrinsic;
-
- if (-1 == SLclass_register_class (cl, SLANG_ISTRUCT_TYPE, sizeof (_SLang_IStruct_Type *),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- initialized = 1;
- return 0;
-}
-
-int SLadd_istruct_table (SLang_IStruct_Field_Type *fields, VOID_STAR addr, char *name)
-{
- _SLang_IStruct_Type *s;
- SLang_IStruct_Field_Type *f;
-
- if (-1 == init_intrin_struct ())
- return -1;
-
- if (addr == NULL)
- {
- SLang_verror (SL_INVALID_PARM,
- "SLadd_istruct_table: address must be non-NULL");
- return -1;
- }
-
- if (fields == NULL)
- return -1;
-
- /* Make the field names slstrings so that only the pointers need to be
- * compared. However, this table may have been already been added for
- * another instance of the intrinsic object. So, check for the presence
- * of an slstring.
- */
- f = fields;
- while (f->field_name != NULL)
- {
- char *fname;
-
- fname = SLang_create_slstring (f->field_name);
- if (fname == NULL)
- return -1;
-
- /* Here is the check for the slstring */
- if (f->field_name == fname)
- SLang_free_slstring (fname);
- else /* replace string literal with slstring */
- f->field_name = fname;
-
- f++;
- }
-
- s = (_SLang_IStruct_Type *)SLmalloc (sizeof (_SLang_IStruct_Type));
- if (s == NULL)
- return -1;
-
- memset ((char *)s, 0, sizeof (_SLang_IStruct_Type));
- if (NULL == (s->name = SLang_create_slstring (name)))
- {
- SLfree ((char *) s);
- return -1;
- }
-
- s->addr = addr;
- s->fields = fields;
-
- if (-1 == SLadd_intrinsic_variable (name, (VOID_STAR) s, SLANG_ISTRUCT_TYPE, 1))
- {
- SLang_free_slstring (s->name);
- SLfree ((char *) s);
- return -1;
- }
-
- return 0;
-}
diff --git a/mdk-stage1/slang/slkeymap.c b/mdk-stage1/slang/slkeymap.c
deleted file mode 100644
index dff65433e..000000000
--- a/mdk-stage1/slang/slkeymap.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/* Keymap routines for SLang. The role of these keymap routines is simple:
- * Just read keys from the tty and return a pointer to a keymap structure.
- * That is, a keymap is simple a mapping of strings (keys from tty) to
- * structures. Also included are routines for managing the keymaps.
- */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/* We need a define a rule for upperand lower case chars that user cannot
- change! This could be a problem for international chars! */
-
-#define UPPER_CASE_KEY(x) (((x) >= 'a') && ((x) <= 'z') ? (x) - 32 : (x))
-#define LOWER_CASE_KEY(x) (((x) >= 'A') && ((x) <= 'Z') ? (x) + 32 : (x))
-
-int SLang_Key_TimeOut_Flag = 0; /* true if more than 1 sec has elapsed
- without key in multikey sequence */
-
-int SLang_Last_Key_Char;
-
-SLKeyMap_List_Type SLKeyMap_List[SLANG_MAX_KEYMAPS];
-
-static SLang_Key_Type *malloc_key(unsigned char *str)
-{
- SLang_Key_Type *neew;
-
- if (NULL == (neew = (SLang_Key_Type *) SLmalloc(sizeof(SLang_Key_Type))))
- return NULL;
-
- SLMEMSET ((char *) neew, 0, sizeof (SLang_Key_Type));
- SLMEMCPY((char *) neew->str, (char *) str, (unsigned int) *str);
- return(neew);
-}
-
-static SLKeyMap_List_Type *add_keymap (char *name, SLang_Key_Type *map)
-{
- int i;
-
- for (i = 0; i < SLANG_MAX_KEYMAPS; i++)
- {
- if (SLKeyMap_List[i].keymap == NULL)
- {
- if (NULL == (name = SLang_create_slstring (name)))
- return NULL;
-
- SLKeyMap_List[i].keymap = map;
- SLKeyMap_List[i].name = name;
- return &SLKeyMap_List[i];
- }
- }
- SLang_Error = SL_UNKNOWN_ERROR;
- /* SLang_doerror ("Keymap quota exceeded."); */
- return NULL;
-}
-
-FVOID_STAR SLang_find_key_function(char *name, SLKeyMap_List_Type *keymap)
-{
- SLKeymap_Function_Type *fp = keymap -> functions;
- char ch = *name;
-
- while ((fp != NULL) && (fp->name != NULL))
- {
- if ((ch == *fp->name)
- && (0 == strcmp(fp->name, name)))
- return (FVOID_STAR) fp->f;
-
- fp++;
- }
- return NULL;
-}
-
-#ifdef REAL_UNIX_SYSTEM
-/* Expand termcap string specified by s. s as passed will have the format:
- * "XY)..." where XY represents a termcap keyname.
- */
-static char *process_termcap_string (char *s, char *str, int *ip, int imax)
-{
- char c[3], *val;
- int i;
-
- if ((0 == (c[0] = s[0]))
- || (0 == (c[1] = s[1]))
- || (s[2] != ')'))
- {
- SLang_verror (SL_SYNTAX_ERROR, "setkey: ^(%s is badly formed", s);
- return NULL;
- }
- s += 3;
-
- c[2] = 0;
- if ((NULL == (val = SLtt_tgetstr (c)))
- || (*val == 0))
- return NULL;
-
- i = *ip;
- while ((i < imax) && (*val != 0))
- {
- str[i++] = *val++;
- }
- *ip = i;
-
- return s;
-}
-#endif
-
-/* convert things like "^A" to 1 etc... The 0th char is the strlen INCLUDING
- * the length character itself.
- */
-char *SLang_process_keystring(char *s)
-{
- /* FIXME: v2.0, make this thread safe */
- static char str[32];
- unsigned char ch;
- int i;
-
- i = 1;
- while (*s != 0)
- {
- ch = (unsigned char) *s++;
- if (ch == '^')
- {
- ch = *s++;
- if (ch == 0)
- {
- if (i < 32)
- str[i++] = '^';
- break;
- }
-#ifdef REAL_UNIX_SYSTEM
- if (ch == '(')
- {
- s = process_termcap_string (s, str, &i, 32);
- if (s == NULL)
- {
- str[0] = 1;
- return str;
- }
- continue;
- }
-#endif
- ch = UPPER_CASE_KEY(ch);
- if (ch == '?') ch = 127; else ch = ch - 'A' + 1;
- }
-
- if (i >= 32) break;
- str[i++] = ch;
- }
-
- if (i > SLANG_MAX_KEYMAP_KEY_SEQ)
- {
- SLang_verror (SL_INVALID_PARM, "Key sequence is too long");
- return NULL;
- }
-
- str[0] = i;
- return(str);
-}
-
-static int key_string_compare (unsigned char *a, unsigned char *b, unsigned int len)
-{
- unsigned char *amax = a + len;
- int cha, chb, cha_up, chb_up;
-
- while (a < amax)
- {
- cha = *a++;
- chb = *b++;
-
- if (cha == chb) continue;
-
- cha_up = UPPER_CASE_KEY(cha);
- chb_up = UPPER_CASE_KEY(chb);
-
- if (cha_up == chb_up)
- {
- /* Use case-sensitive result. */
- return cha - chb;
- }
- /* Use case-insensitive result. */
- return cha_up - chb_up;
- }
- return 0;
-}
-
-static char *Define_Key_Error = "Inconsistency in define key.";
-
-/* This function also performs an insertion in an ordered way. */
-static int find_the_key (char *s, SLKeyMap_List_Type *kml, SLang_Key_Type **keyp)
-{
- unsigned char ch;
- unsigned int str_len;
- SLang_Key_Type *key, *last, *neew;
- unsigned char *str;
-
- *keyp = NULL;
-
- if (NULL == (str = (unsigned char *) SLang_process_keystring(s)))
- return -2;
-
- if (1 == (str_len = str[0]))
- return 0;
-
- ch = str[1];
- key = kml->keymap + ch;
-
- if (str_len == 2)
- {
- if (key->next != NULL)
- {
- SLang_doerror (Define_Key_Error);
- return -2;
- }
-
- if (key->type == SLKEY_F_INTERPRET)
- SLang_free_slstring (key->f.s);
-
- key->str[0] = str_len;
- key->str[1] = ch;
-
- *keyp = key;
- return 0;
- }
-
- /* insert the key definition */
- while (1)
- {
- int cmp;
- unsigned int key_len, len;
-
- last = key;
- key = key->next;
-
- if ((key != NULL) && (key->str != NULL))
- {
- len = key_len = key->str[0];
- if (len > str_len) len = str_len;
-
- cmp = key_string_compare (str + 1, key->str + 1, len - 1);
-
- if (cmp > 0)
- continue;
-
- if (cmp == 0)
- {
- if (key_len != str_len)
- {
- SLang_doerror (Define_Key_Error);
- return -2;
- }
-
- if (key->type == SLKEY_F_INTERPRET)
- SLang_free_slstring (key->f.s);
-
- *keyp = key;
- return 0;
- }
- /* Drop to cmp < 0 case */
- }
-
- if (NULL == (neew = malloc_key(str))) return -1;
-
- neew -> next = key;
- last -> next = neew;
-
- *keyp = neew;
- return 0;
- }
-}
-
-/* returns -2 if inconsistent, -1 if malloc error, 0 upon success */
-int SLkm_define_key (char *s, FVOID_STAR f, SLKeyMap_List_Type *kml)
-{
- SLang_Key_Type *key;
- unsigned int type = SLKEY_F_INTRINSIC;
- int ret;
-
- ret = find_the_key (s, kml, &key);
- if ((ret != 0) || (key == NULL))
- return ret;
-
- key->type = type;
- key->f.f = f;
- return 0;
-}
-
-int SLang_define_key (char *s, char *funct, SLKeyMap_List_Type *kml)
-{
- SLang_Key_Type *key;
- FVOID_STAR f;
- int ret;
-
- ret = find_the_key (s, kml, &key);
- if ((ret != 0) || (key == NULL))
- return ret;
-
- f = SLang_find_key_function(funct, kml);
-
- if (f == NULL) /* assume interpreted */
- {
- char *str = SLang_create_slstring (funct);
- if (str == NULL) return -1;
- key->type = SLKEY_F_INTERPRET;
- key->f.s = str;
- }
- else
- {
- key->type = SLKEY_F_INTRINSIC;
- key->f.f = f;
- }
- return 0;
-}
-
-int SLkm_define_keysym (char *s, unsigned int keysym, SLKeyMap_List_Type *kml)
-{
- SLang_Key_Type *key;
- int ret;
-
- ret = find_the_key (s, kml, &key);
-
- if ((ret != 0) || (key == NULL))
- return ret;
-
- key->type = SLKEY_F_KEYSYM;
- key->f.keysym = keysym;
- return 0;
-}
-
-SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *kml, int (*getkey)(void))
-{
- register SLang_Key_Type *key, *next, *kmax;
- unsigned int len;
- unsigned char input_ch;
- register unsigned char chup, chlow;
- unsigned char key_ch = 0;
-
- SLang_Last_Key_Char = (*getkey)();
- SLang_Key_TimeOut_Flag = 0;
-
- if (SLANG_GETKEY_ERROR == (unsigned int) SLang_Last_Key_Char)
- return NULL;
-
- input_ch = (unsigned char) SLang_Last_Key_Char;
-
- key = (SLang_Key_Type *) &((kml->keymap)[input_ch]);
-
- /* if the next one is null, then we know this MAY be it. */
- while (key->next == NULL)
- {
- if (key->type != 0)
- return key;
-
- /* Try its opposite case counterpart */
- chlow = LOWER_CASE_KEY(input_ch);
- if (input_ch == chlow)
- input_ch = UPPER_CASE_KEY(input_ch);
-
- key = kml->keymap + input_ch;
- if (key->type == 0)
- return NULL;
- }
-
- /* It appears to be a prefix character in a key sequence. */
-
- len = 1; /* already read one character */
- key = key->next; /* Now we are in the key list */
- kmax = NULL; /* set to end of list */
-
- while (1)
- {
- SLang_Key_TimeOut_Flag = 1;
- SLang_Last_Key_Char = (*getkey)();
- SLang_Key_TimeOut_Flag = 0;
-
- len++;
-
- if ((SLANG_GETKEY_ERROR == (unsigned int) SLang_Last_Key_Char)
- || SLKeyBoard_Quit)
- break;
-
- input_ch = (unsigned char) SLang_Last_Key_Char;
-
- chup = UPPER_CASE_KEY(input_ch); chlow = LOWER_CASE_KEY(input_ch);
-
- while (key != kmax)
- {
- if (key->str[0] > len)
- {
- key_ch = key->str[len];
- if (chup == UPPER_CASE_KEY(key_ch))
- break;
- }
- key = key->next;
- }
-
- if (key == kmax) break;
-
- /* If the input character is lowercase, check to see if there is
- * a lowercase match. If so, set key to it. Note: the
- * algorithm assumes the sorting performed by key_string_compare.
- */
- if (input_ch != key_ch)
- {
- next = key->next;
- while (next != kmax)
- {
- if (next->str[0] > len)
- {
- unsigned char next_ch = next->str[len];
- if (next_ch == input_ch)
- {
- key = next;
- break;
- }
- if (next_ch != chup)
- break;
- }
- next = next->next;
- }
- }
-
- /* Ok, we found the first position of a possible match. If it
- * is exact, we are done.
- */
- if ((unsigned int) key->str[0] == len + 1)
- return key;
-
- /* Apparantly, there are some ambiguities. Read next key to resolve
- * the ambiguity. Adjust kmax to encompass ambiguities.
- */
-
- next = key->next;
- while (next != kmax)
- {
- if ((unsigned int) next->str[0] > len)
- {
- key_ch = next->str[len];
- if (chup != UPPER_CASE_KEY(key_ch))
- break;
- }
- next = next->next;
- }
- kmax = next;
- }
-
- return NULL;
-}
-
-void SLang_undefine_key(char *s, SLKeyMap_List_Type *kml)
-{
- int n, i;
- SLang_Key_Type *key, *next, *last, *key_root, *keymap;
- unsigned char *str;
-
- keymap = kml -> keymap;
- if (NULL == (str = (unsigned char *) SLang_process_keystring(s)))
- return;
-
- if (0 == (n = *str++ - 1)) return;
- i = *str;
-
- last = key_root = (SLang_Key_Type *) &(keymap[i]);
- key = key_root->next;
-
- while (key != NULL)
- {
- next = key->next;
- if (0 == SLMEMCMP ((char *)(key->str + 1), (char *) str, n))
- {
- if (key->type == SLKEY_F_INTERPRET)
- SLang_free_slstring (key->f.s);
-
- SLfree((char *) key);
- last->next = next;
- }
- else last = key;
- key = next;
- }
-
- if (n == 1)
- {
- *key_root->str = 0;
- key_root->f.f = NULL;
- key_root->type = 0;
- }
-}
-
-char *SLang_make_keystring(unsigned char *s)
-{
- static char buf [3 * SLANG_MAX_KEYMAP_KEY_SEQ + 1];
- char *b;
- int n;
-
- n = *s++ - 1;
-
- if (n > SLANG_MAX_KEYMAP_KEY_SEQ)
- {
- SLang_verror (SL_INVALID_PARM, "Key sequence is too long");
- return NULL;
- }
-
- b = buf;
- while (n--)
- {
- if (*s < 32)
- {
- *b++ = '^';
- *b++ = *s + 'A' - 1;
- }
- else *b++ = *s;
- s++;
- }
- *b = 0;
- return(buf);
-}
-
-static SLang_Key_Type *copy_keymap(SLKeyMap_List_Type *kml)
-{
- int i;
- SLang_Key_Type *neew, *old, *new_root, *km;
-
- if (NULL == (new_root = (SLang_Key_Type *) SLcalloc(256, sizeof(SLang_Key_Type))))
- return NULL;
-
- if (kml == NULL) return new_root;
- km = kml->keymap;
-
- for (i = 0; i < 256; i++)
- {
- old = &(km[i]);
- neew = &(new_root[i]);
-
- if (old->type == SLKEY_F_INTERPRET)
- neew->f.s = SLang_create_slstring (old->f.s);
- else
- neew->f.f = old->f.f;
-
- neew->type = old->type;
- SLMEMCPY((char *) neew->str, (char *) old->str, (unsigned int) *old->str);
-
- old = old->next;
- while (old != NULL)
- {
- neew->next = malloc_key((unsigned char *) old->str);
- neew = neew->next;
-
- if (old->type == SLKEY_F_INTERPRET)
- neew->f.s = SLang_create_slstring (old->f.s);
- else
- neew->f.f = old->f.f;
-
- neew->type = old->type;
- old = old->next;
- }
- neew->next = NULL;
- }
- return(new_root);
-}
-
-SLKeyMap_List_Type *SLang_create_keymap(char *name, SLKeyMap_List_Type *map)
-{
- SLang_Key_Type *neew;
- SLKeyMap_List_Type *new_map;
-
- if ((NULL == (neew = copy_keymap(map)))
- || (NULL == (new_map = add_keymap(name, neew)))) return NULL;
-
- if (map != NULL) new_map -> functions = map -> functions;
-
- return new_map;
-}
-
-SLKeyMap_List_Type *SLang_find_keymap(char *name)
-{
- SLKeyMap_List_Type *kmap, *kmap_max;
-
- kmap = SLKeyMap_List;
- kmap_max = kmap + SLANG_MAX_KEYMAPS;
-
- while (kmap < kmap_max)
- {
- if ((kmap->name != NULL)
- && (0 == strcmp (kmap->name, name)))
- return kmap;
-
- kmap++;
- }
- return NULL;
-}
diff --git a/mdk-stage1/slang/slkeypad.c b/mdk-stage1/slang/slkeypad.c
deleted file mode 100644
index 524dc80fa..000000000
--- a/mdk-stage1/slang/slkeypad.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static SLKeyMap_List_Type *Keymap_List;
-
-int SLkp_init (void)
-{
- char esc_seq[10];
- int i;
-
- if (NULL == (Keymap_List = SLang_create_keymap ("_SLKeypad", NULL)))
- return -1;
-
- esc_seq[1] = 0;
- for (i = 1; i < 256; i++)
- {
- esc_seq[0] = (char) i;
- SLkm_define_keysym (esc_seq, i, Keymap_List);
- }
-
- /* Now add most common ones. */
-#ifndef IBMPC_SYSTEM
- SLkm_define_keysym ("^@", 0, Keymap_List);
-
- SLkm_define_keysym ("\033[A", SL_KEY_UP, Keymap_List);
- SLkm_define_keysym ("\033OA", SL_KEY_UP, Keymap_List);
- SLkm_define_keysym ("\033[B", SL_KEY_DOWN, Keymap_List);
- SLkm_define_keysym ("\033OB", SL_KEY_DOWN, Keymap_List);
- SLkm_define_keysym ("\033[C", SL_KEY_RIGHT, Keymap_List);
- SLkm_define_keysym ("\033OC", SL_KEY_RIGHT, Keymap_List);
- SLkm_define_keysym ("\033[D", SL_KEY_LEFT, Keymap_List);
- SLkm_define_keysym ("\033OD", SL_KEY_LEFT, Keymap_List);
- SLkm_define_keysym ("\033[2~", SL_KEY_IC, Keymap_List);
- SLkm_define_keysym ("\033[7~", SL_KEY_HOME, Keymap_List);
- SLkm_define_keysym ("\033[5~", SL_KEY_PPAGE, Keymap_List);
- SLkm_define_keysym ("\033[6~", SL_KEY_NPAGE, Keymap_List);
- SLkm_define_keysym ("\033[8~", SL_KEY_END, Keymap_List);
- SLkm_define_keysym ("\033[3~", SL_KEY_DELETE, Keymap_List);
-#else
- /* Note: This will not work if SLgetkey_map_to_ansi (1) has
- * been called.
- */
- SLkm_define_keysym ("^@\x48", SL_KEY_UP, Keymap_List );
- SLkm_define_keysym ("^@\x50", SL_KEY_DOWN, Keymap_List );
- SLkm_define_keysym ("^@\x4d", SL_KEY_RIGHT, Keymap_List );
- SLkm_define_keysym ("^@\x4b", SL_KEY_LEFT, Keymap_List );
- SLkm_define_keysym ("^@\x47", SL_KEY_HOME, Keymap_List );
- SLkm_define_keysym ("^@\x49", SL_KEY_PPAGE, Keymap_List );
- SLkm_define_keysym ("^@\x51", SL_KEY_NPAGE, Keymap_List );
- SLkm_define_keysym ("^@\x4f", SL_KEY_END, Keymap_List );
- SLkm_define_keysym ("^@\x52", SL_KEY_IC, Keymap_List );
- SLkm_define_keysym ("^@\x53", SL_KEY_DELETE, Keymap_List );
-
- SLkm_define_keysym ("\xE0\x48", SL_KEY_UP, Keymap_List );
- SLkm_define_keysym ("\xE0\x50", SL_KEY_DOWN, Keymap_List );
- SLkm_define_keysym ("\xE0\x4d", SL_KEY_RIGHT, Keymap_List );
- SLkm_define_keysym ("\xE0\x4b", SL_KEY_LEFT, Keymap_List );
- SLkm_define_keysym ("\xE0\x47", SL_KEY_HOME, Keymap_List );
- SLkm_define_keysym ("\xE0\x49", SL_KEY_PPAGE, Keymap_List );
- SLkm_define_keysym ("\xE0\x51", SL_KEY_NPAGE, Keymap_List );
- SLkm_define_keysym ("\xE0\x4f", SL_KEY_END, Keymap_List );
- SLkm_define_keysym ("\xE0\x52", SL_KEY_IC, Keymap_List );
- SLkm_define_keysym ("\xE0\x53", SL_KEY_DELETE, Keymap_List );
-
- strcpy (esc_seq, "^@ "); /* guarantees esc_seq[3] = 0. */
-
- for (i = 0x3b; i < 0x45; i++)
- {
- esc_seq [2] = i;
- SLkm_define_keysym (esc_seq, SL_KEY_F(i - 0x3a), Keymap_List);
- }
- esc_seq[2] = 0x57; SLkm_define_keysym (esc_seq, SL_KEY_F(11), Keymap_List);
- esc_seq[2] = 0x58; SLkm_define_keysym (esc_seq, SL_KEY_F(12), Keymap_List);
-#endif
-
-#ifdef REAL_UNIX_SYSTEM
- strcpy (esc_seq, "^(kX)");
- for (i = 0; i <= 9; i++)
- {
- esc_seq[3] = '0' + i;
- SLkm_define_keysym (esc_seq, SL_KEY_F(i), Keymap_List);
- }
- SLkm_define_keysym ("^(k;)", SL_KEY_F(10), Keymap_List);
-
- SLkm_define_keysym ("^(ku)", SL_KEY_UP, Keymap_List);
- SLkm_define_keysym ("^(kd)", SL_KEY_DOWN, Keymap_List);
- SLkm_define_keysym ("^(kl)", SL_KEY_LEFT, Keymap_List);
- SLkm_define_keysym ("^(kr)", SL_KEY_RIGHT, Keymap_List);
- SLkm_define_keysym ("^(kP)", SL_KEY_PPAGE, Keymap_List);
- SLkm_define_keysym ("^(kN)", SL_KEY_NPAGE, Keymap_List);
- SLkm_define_keysym ("^(kh)", SL_KEY_HOME, Keymap_List);
- SLkm_define_keysym ("^(@7)", SL_KEY_END, Keymap_List);
- SLkm_define_keysym ("^(K1)", SL_KEY_A1, Keymap_List);
- SLkm_define_keysym ("^(K3)", SL_KEY_A3, Keymap_List);
- SLkm_define_keysym ("^(K2)", SL_KEY_B2, Keymap_List);
- SLkm_define_keysym ("^(K4)", SL_KEY_C1, Keymap_List);
- SLkm_define_keysym ("^(K5)", SL_KEY_C3, Keymap_List);
- SLkm_define_keysym ("^(%0)", SL_KEY_REDO, Keymap_List);
- SLkm_define_keysym ("^(&8)", SL_KEY_UNDO, Keymap_List);
- SLkm_define_keysym ("^(kb)", SL_KEY_BACKSPACE, Keymap_List);
- SLkm_define_keysym ("^(@8)", SL_KEY_ENTER, Keymap_List);
- SLkm_define_keysym ("^(kD)", SL_KEY_DELETE, Keymap_List);
-#endif
-
- if (SLang_Error)
- return -1;
- return 0;
-}
-
-int SLkp_getkey (void)
-{
- SLang_Key_Type *key;
-
- key = SLang_do_key (Keymap_List, (int (*)(void)) SLang_getkey);
- if ((key == NULL) || (key->type != SLKEY_F_KEYSYM))
- {
- SLang_flush_input ();
- return SL_KEY_ERR;
- }
-
- return key->f.keysym;
-}
-
-int SLkp_define_keysym (char *keystr, unsigned int keysym)
-{
- if (SLkm_define_keysym (keystr, keysym, Keymap_List) < 0)
- return -1;
-
- return 0;
-}
-
-#if 0
-int main (int argc, char **argv)
-{
- int ch;
-
- SLtt_get_terminfo ();
-
- if (-1 == SLkp_init ())
- return 1;
-
- SLang_init_tty (-1, 0, 0);
-
- while ('q' != (ch = SLkp_getkey ()))
- {
- fprintf (stdout, "Keycode = %d\r\n", ch);
- fflush (stdout);
- }
-
- SLang_reset_tty ();
-
- return 0;
-}
-#endif
-
diff --git a/mdk-stage1/slang/sllimits.h b/mdk-stage1/slang/sllimits.h
deleted file mode 100644
index c4ae03b83..000000000
--- a/mdk-stage1/slang/sllimits.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-/* sllimits.h */
-
-/* slstring.c: Size of the hash table used for strings (prime numbers) */
-#ifdef __MSDOS_16BIT__
-# define SLSTRING_HASH_TABLE_SIZE 601
-# define SLASSOC_HASH_TABLE_SIZE 601
-#else
-# define SLSTRING_HASH_TABLE_SIZE 2909
-# define SLASSOC_HASH_TABLE_SIZE 2909
-#endif
-
-/* slang.c: maximum size of run time stack */
-#ifdef __MSDOS_16BIT__
-# define SLANG_MAX_STACK_LEN 500
-#else
-# define SLANG_MAX_STACK_LEN 2500
-#endif
-
-/* slang.c: This sets the size on the depth of function calls */
-#ifdef __MSDOS_16BIT__
-# define SLANG_MAX_RECURSIVE_DEPTH 50
-#else
-# define SLANG_MAX_RECURSIVE_DEPTH 250
-#endif
-
-/* slang.c: Size of the stack used for local variables */
-#ifdef __MSDOS_16BIT__
-# define SLANG_MAX_LOCAL_STACK 200
-#else
-# define SLANG_MAX_LOCAL_STACK 1024
-#endif
-
-/* slang.c: The size of the hash table used for local and global objects.
- * These should be prime numbers.
- */
-#define SLGLOBALS_HASH_TABLE_SIZE 2909
-#define SLLOCALS_HASH_TABLE_SIZE 73
-#define SLSTATIC_HASH_TABLE_SIZE 73
-
-/* Size of the keyboard buffer use by the ungetkey routines */
-#ifdef __MSDOS_16BIT__
-# define SL_MAX_INPUT_BUFFER_LEN 40
-#else
-# define SL_MAX_INPUT_BUFFER_LEN 1024
-#endif
-
-/* Maximum number of nested switch statements */
-#define SLANG_MAX_NESTED_SWITCH 10
-
-/* Size of the block stack (used in byte-compiling) */
-#define SLANG_MAX_BLOCK_STACK_LEN 50
-
-/* slfile.c: Max number of open file pointers */
-#ifdef __MSDOS_16BIT__
-# define SL_MAX_FILES 32
-#else
-# define SL_MAX_FILES 256
-#endif
diff --git a/mdk-stage1/slang/slmalloc.c b/mdk-stage1/slang/slmalloc.c
deleted file mode 100644
index be4ed6cae..000000000
--- a/mdk-stage1/slang/slmalloc.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#ifdef SL_MALLOC_DEBUG
-# undef SL_MALLOC_DEBUG
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef __alpha
-# define Chunk 8
-#else
-# define Chunk 4
-#endif
-
-static long Total_Allocated;
-static long Max_Single_Allocation;
-static long Max_Allocated;
-/* #define SLDEBUG_DOUT */
-
-#ifdef SLDEBUG_DOUT
-static FILE *dout;
-#endif
-
-void SLmalloc_dump_statistics (void)
-{
-#ifdef SLDEBUG_DOUT
- fflush (dout);
-#endif
- fprintf (stderr, "Total Allocated: %ld\nHighest single allocation: %ld\nHighest Total Allocated:%ld\n",
- Total_Allocated, Max_Single_Allocation, Max_Allocated);
-}
-
-static void register_at_exit_fun (void)
-{
- static int is_registered = 0;
- if (is_registered)
- return;
- is_registered = 1;
-
-#ifdef SLDEBUG_DOUT
- if (dout == NULL) dout = fopen ("malloc.out", "w");
-#endif
- SLang_add_cleanup_function (SLmalloc_dump_statistics);
-}
-
-static void fixup (unsigned char *p, unsigned long n, char *what)
-{
- register_at_exit_fun ();
-
- p += Chunk;
- *(p - 4)= (unsigned char) ((n >> 24) & 0xFF);
- *(p - 3) = (unsigned char) ((n >> 16) & 0xFF);
- *(p - 2) = (unsigned char) ((n >> 8) & 0xFF);
- *(p - 1) = (unsigned char) (n & 0xFF);
- *(p + (int) n) = 27;
- *(p + (int) (n + 1)) = 182;
- *(p + (int) (n + 2)) = 81;
- *(p + (int) (n + 3)) = 86;
- Total_Allocated += (long) n;
- if (Total_Allocated > Max_Allocated) Max_Allocated = Total_Allocated;
- if ((long) n > Max_Single_Allocation)
- Max_Single_Allocation = (long) n;
-
-#ifdef SLDEBUG_DOUT
- fprintf (dout, "ALLOC: %s\t%p %ld\n", what, p, (long) n);
-#else
- (void) what;
-#endif
-}
-
-static void SLmalloc_doerror (char *buf)
-{
- SLang_doerror (buf);
-}
-
-static int check_memory (unsigned char *p, char *what)
-{
- char buf[128];
- unsigned long n;
-
- register_at_exit_fun ();
-
- n = ((unsigned long) *(p - 4)) << 24;
- n |= ((unsigned long) *(p - 3)) << 16;
- n |= ((unsigned long) *(p - 2)) << 8;
- n |= (unsigned long) *(p - 1);
-
- if (n == 0xFFFFFFFFUL)
- {
- sprintf (buf, "%s: %p: Already FREE! Abort NOW.", what, (void*)p - Chunk);
- SLmalloc_doerror (buf);
- return -1;
- }
-
- if ((*(p + (int) n) != 27)
- || (*(p + (int) (n + 1)) != 182)
- || (*(p + (int) (n + 2)) != 81)
- || (*(p + (int) (n + 3)) != 86))
- {
- sprintf (buf, "\007%s: %p: Memory corrupt! Abort NOW.", what, (void*)p);
- SLmalloc_doerror (buf);
- return -1;
- }
-
- *(p - 4) = *(p - 3) = *(p - 2) = *(p - 1) = 0xFF;
-
- Total_Allocated -= (long) n;
- if (Total_Allocated < 0)
- {
- sprintf (buf, "\007%s: %p\nFreed %ld, Allocated is: %ld!\n",
- what, (void*)p, (long) n, Total_Allocated);
- SLang_doerror (buf);
- }
-#ifdef SLDEBUG_DOUT
- fprintf (dout, "FREE: %s:\t%p %ld\n", what, p, (long) n);
-#endif
- return 0;
-}
-
-void SLdebug_free (char *p)
-{
- if (p == NULL) return;
- if (-1 == check_memory ((unsigned char *) p, "FREE")) return;
-
- SLFREE (p - Chunk);
-}
-
-char *SLdebug_malloc (unsigned long n)
-{
- char *p;
-
- if ((p = (char *) SLMALLOC (n + 2 * Chunk)) == NULL) return NULL;
-
- fixup ((unsigned char *) p, n, "MALLOC");
- return p + Chunk;
-}
-
-char *SLdebug_realloc (char *p, unsigned long n)
-{
- if (-1 == check_memory ((unsigned char *) p, "REALLOC")) return NULL;
- if ((p = (char *) SLREALLOC (p - Chunk, n + 2 * Chunk)) == NULL) return NULL;
- fixup ((unsigned char *) p, n, "REALLOC");
- return p + Chunk;
-}
-
-char *SLdebug_calloc (unsigned long n, unsigned long size)
-{
- char *p;
- int m;
-
- /* This is tough -- hope this is a good assumption!! */
- if (size >= Chunk) m = 1; else m = Chunk;
-
- if ((p = (char *) SLCALLOC (n + m + m, size)) == NULL) return NULL;
- fixup ((unsigned char *) p, size * n, "CALLOC");
- return p + Chunk;
-}
-
diff --git a/mdk-stage1/slang/slmath.c b/mdk-stage1/slang/slmath.c
deleted file mode 100644
index 1d61e14d3..000000000
--- a/mdk-stage1/slang/slmath.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* sin, cos, etc, for S-Lang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include <math.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef PI
-# undef PI
-#endif
-#define PI 3.14159265358979323846264338327950288
-
-#if defined(__unix__)
-#include <signal.h>
-#include <errno.h>
-
-#define SIGNAL SLsignal
-
-static void math_floating_point_exception (int sig)
-{
- sig = errno;
- if (SLang_Error == 0) SLang_Error = SL_FLOATING_EXCEPTION;
- (void) SIGNAL (SIGFPE, math_floating_point_exception);
- errno = sig;
-}
-#endif
-
-double SLmath_hypot (double x, double y)
-{
- double fr, fi, ratio;
-
- fr = fabs(x);
- fi = fabs(y);
-
- if (fr > fi)
- {
- ratio = y / x;
- x = fr * sqrt (1.0 + ratio * ratio);
- }
- else if (fi == 0.0) x = 0.0;
- else
- {
- ratio = x / y;
- x = fi * sqrt (1.0 + ratio * ratio);
- }
-
- return x;
-}
-
-/* usage here is a1 a2 ... an n x ==> a1x^n + a2 x ^(n - 1) + ... + an */
-static double math_poly (void)
-{
- int n;
- double xn = 1.0, sum = 0.0;
- double an, x;
-
- if ((SLang_pop_double(&x, NULL, NULL))
- || (SLang_pop_integer(&n))) return(0.0);
-
- while (n-- > 0)
- {
- if (SLang_pop_double(&an, NULL, NULL)) break;
- sum += an * xn;
- xn = xn * x;
- }
- return (double) sum;
-}
-
-static int double_math_op_result (int op, unsigned char a, unsigned char *b)
-{
- (void) op;
-
- if (a != SLANG_FLOAT_TYPE)
- *b = SLANG_DOUBLE_TYPE;
- else
- *b = a;
-
- return 1;
-}
-
-#ifdef HAVE_ASINH
-# define ASINH_FUN asinh
-#else
-# define ASINH_FUN my_asinh
-static double my_asinh (double x)
-{
- return log (x + sqrt (x*x + 1));
-}
-#endif
-#ifdef HAVE_ACOSH
-# define ACOSH_FUN acosh
-#else
-# define ACOSH_FUN my_acosh
-static double my_acosh (double x)
-{
- return log (x + sqrt(x*x - 1)); /* x >= 1 */
-}
-#endif
-#ifdef HAVE_ATANH
-# define ATANH_FUN atanh
-#else
-# define ATANH_FUN my_atanh
-static double my_atanh (double x)
-{
- return 0.5 * log ((1.0 + x)/(1.0 - x)); /* 0 <= x^2 < 1 */
-}
-#endif
-
-static int double_math_op (int op,
- unsigned char type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- double *a, *b;
- unsigned int i;
- double (*fun) (double);
-
- (void) type;
- a = (double *) ap;
- b = (double *) bp;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLMATH_SINH:
- fun = sinh;
- break;
- case SLMATH_COSH:
- fun = cosh;
- break;
- case SLMATH_TANH:
- fun = tanh;
- break;
- case SLMATH_TAN:
- fun = tan;
- break;
- case SLMATH_ASIN:
- fun = asin;
- break;
- case SLMATH_ACOS:
- fun = acos;
- break;
- case SLMATH_ATAN:
- fun = atan;
- break;
- case SLMATH_EXP:
- fun = exp;
- break;
- case SLMATH_LOG:
- fun = log;
- break;
- case SLMATH_LOG10:
- fun = log10;
- break;
- case SLMATH_SQRT:
- fun = sqrt;
- break;
- case SLMATH_SIN:
- fun = sin;
- break;
- case SLMATH_COS:
- fun = cos;
- break;
-
- case SLMATH_ASINH:
- fun = ASINH_FUN;
- break;
- case SLMATH_ATANH:
- fun = ATANH_FUN;
- break;
- case SLMATH_ACOSH:
- fun = ACOSH_FUN;
- break;
-
- case SLMATH_CONJ:
- case SLMATH_REAL:
- for (i = 0; i < na; i++)
- b[i] = a[i];
- return 1;
- case SLMATH_IMAG:
- for (i = 0; i < na; i++)
- b[i] = 0.0;
- return 1;
- }
-
- for (i = 0; i < na; i++)
- b[i] = (*fun) (a[i]);
-
- return 1;
-}
-
-static int float_math_op (int op,
- unsigned char type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- float *a, *b;
- unsigned int i;
- double (*fun) (double);
-
- (void) type;
- a = (float *) ap;
- b = (float *) bp;
-
-
- switch (op)
- {
- default:
- return 0;
-
- case SLMATH_SINH:
- fun = sinh;
- break;
- case SLMATH_COSH:
- fun = cosh;
- break;
- case SLMATH_TANH:
- fun = tanh;
- break;
- case SLMATH_TAN:
- fun = tan;
- break;
- case SLMATH_ASIN:
- fun = asin;
- break;
- case SLMATH_ACOS:
- fun = acos;
- break;
- case SLMATH_ATAN:
- fun = atan;
- break;
- case SLMATH_EXP:
- fun = exp;
- break;
- case SLMATH_LOG:
- fun = log;
- break;
- case SLMATH_LOG10:
- fun = log10;
- break;
- case SLMATH_SQRT:
- fun = sqrt;
- break;
- case SLMATH_SIN:
- fun = sin;
- break;
- case SLMATH_COS:
- fun = cos;
- break;
-
- case SLMATH_ASINH:
- fun = ASINH_FUN;
- break;
- case SLMATH_ATANH:
- fun = ATANH_FUN;
- break;
- case SLMATH_ACOSH:
- fun = ACOSH_FUN;
- break;
-
- case SLMATH_CONJ:
- case SLMATH_REAL:
- for (i = 0; i < na; i++)
- b[i] = a[i];
- return 1;
- case SLMATH_IMAG:
- for (i = 0; i < na; i++)
- b[i] = 0.0;
- return 1;
- }
-
- for (i = 0; i < na; i++)
- b[i] = (float) (*fun) ((double) a[i]);
-
- return 1;
-}
-
-static int generic_math_op (int op,
- unsigned char type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- double *b;
- unsigned int i;
- SLang_To_Double_Fun_Type to_double;
- double (*fun) (double);
- unsigned int da;
- char *a;
-
- if (NULL == (to_double = SLarith_get_to_double_fun (type, &da)))
- return 0;
-
- b = (double *) bp;
- a = (char *) ap;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLMATH_SINH:
- fun = sinh;
- break;
- case SLMATH_COSH:
- fun = cosh;
- break;
- case SLMATH_TANH:
- fun = tanh;
- break;
- case SLMATH_TAN:
- fun = tan;
- break;
- case SLMATH_ASIN:
- fun = asin;
- break;
- case SLMATH_ACOS:
- fun = acos;
- break;
- case SLMATH_ATAN:
- fun = atan;
- break;
- case SLMATH_EXP:
- fun = exp;
- break;
- case SLMATH_LOG:
- fun = log;
- break;
- case SLMATH_LOG10:
- fun = log10;
- break;
- case SLMATH_SQRT:
- fun = sqrt;
- break;
- case SLMATH_SIN:
- fun = sin;
- break;
- case SLMATH_COS:
- fun = cos;
- break;
-
- case SLMATH_ASINH:
- fun = ASINH_FUN;
- break;
- case SLMATH_ATANH:
- fun = ATANH_FUN;
- break;
- case SLMATH_ACOSH:
- fun = ACOSH_FUN;
- break;
-
-
- case SLMATH_CONJ:
- case SLMATH_REAL:
- for (i = 0; i < na; i++)
- {
- b[i] = to_double((VOID_STAR) a);
- a += da;
- }
- return 1;
-
- case SLMATH_IMAG:
- for (i = 0; i < na; i++)
- b[i] = 0.0;
- return 1;
- }
-
- for (i = 0; i < na; i++)
- {
- b[i] = (*fun) (to_double ((VOID_STAR) a));
- a += da;
- }
-
- return 1;
-}
-
-#if SLANG_HAS_COMPLEX
-static int complex_math_op_result (int op, unsigned char a, unsigned char *b)
-{
- (void) a;
- switch (op)
- {
- default:
- *b = SLANG_COMPLEX_TYPE;
- break;
-
- case SLMATH_REAL:
- case SLMATH_IMAG:
- *b = SLANG_DOUBLE_TYPE;
- break;
- }
- return 1;
-}
-
-static int complex_math_op (int op,
- unsigned char type, VOID_STAR ap, unsigned int na,
- VOID_STAR bp)
-{
- double *a, *b;
- unsigned int i;
- unsigned int na2 = na * 2;
- double *(*fun) (double *, double *);
-
- (void) type;
- a = (double *) ap;
- b = (double *) bp;
-
- switch (op)
- {
- default:
- return 0;
-
- case SLMATH_REAL:
- for (i = 0; i < na; i++)
- b[i] = a[2 * i];
- return 1;
-
- case SLMATH_IMAG:
- for (i = 0; i < na; i++)
- b[i] = a[2 * i + 1];
- return 1;
-
- case SLMATH_CONJ:
- for (i = 0; i < na2; i += 2)
- {
- b[i] = a[i];
- b[i+1] = -a[i+1];
- }
- return 1;
-
- case SLMATH_ATANH:
- fun = SLcomplex_atanh;
- break;
- case SLMATH_ACOSH:
- fun = SLcomplex_acosh;
- break;
- case SLMATH_ASINH:
- fun = SLcomplex_asinh;
- break;
- case SLMATH_EXP:
- fun = SLcomplex_exp;
- break;
- case SLMATH_LOG:
- fun = SLcomplex_log;
- break;
- case SLMATH_LOG10:
- fun = SLcomplex_log10;
- break;
- case SLMATH_SQRT:
- fun = SLcomplex_sqrt;
- break;
- case SLMATH_SIN:
- fun = SLcomplex_sin;
- break;
- case SLMATH_COS:
- fun = SLcomplex_cos;
- break;
- case SLMATH_SINH:
- fun = SLcomplex_sinh;
- break;
- case SLMATH_COSH:
- fun = SLcomplex_cosh;
- break;
- case SLMATH_TANH:
- fun = SLcomplex_tanh;
- break;
- case SLMATH_TAN:
- fun = SLcomplex_tan;
- break;
- case SLMATH_ASIN:
- fun = SLcomplex_asin;
- break;
- case SLMATH_ACOS:
- fun = SLcomplex_acos;
- break;
- case SLMATH_ATAN:
- fun = SLcomplex_atan;
- break;
- }
-
- for (i = 0; i < na2; i += 2)
- (void) (*fun) (b + i, a + i);
-
- return 1;
-}
-#endif
-
-static SLang_DConstant_Type DConst_Table [] =
-{
- MAKE_DCONSTANT("E", 2.718281828459045),
- MAKE_DCONSTANT("PI", 3.14159265358979323846264338327950288),
- SLANG_END_DCONST_TABLE
-};
-
-static SLang_Math_Unary_Type SLmath_Table [] =
-{
- MAKE_MATH_UNARY("sinh", SLMATH_SINH),
- MAKE_MATH_UNARY("asinh", SLMATH_ASINH),
- MAKE_MATH_UNARY("cosh", SLMATH_COSH),
- MAKE_MATH_UNARY("acosh", SLMATH_ACOSH),
- MAKE_MATH_UNARY("tanh", SLMATH_TANH),
- MAKE_MATH_UNARY("atanh", SLMATH_ATANH),
- MAKE_MATH_UNARY("sin", SLMATH_SIN),
- MAKE_MATH_UNARY("cos", SLMATH_COS),
- MAKE_MATH_UNARY("tan", SLMATH_TAN),
- MAKE_MATH_UNARY("atan", SLMATH_ATAN),
- MAKE_MATH_UNARY("acos", SLMATH_ACOS),
- MAKE_MATH_UNARY("asin", SLMATH_ASIN),
- MAKE_MATH_UNARY("exp", SLMATH_EXP),
- MAKE_MATH_UNARY("log", SLMATH_LOG),
- MAKE_MATH_UNARY("sqrt", SLMATH_SQRT),
- MAKE_MATH_UNARY("log10", SLMATH_LOG10),
-#if SLANG_HAS_COMPLEX
- MAKE_MATH_UNARY("Real", SLMATH_REAL),
- MAKE_MATH_UNARY("Imag", SLMATH_IMAG),
- MAKE_MATH_UNARY("Conj", SLMATH_CONJ),
-#endif
- SLANG_END_MATH_UNARY_TABLE
-};
-
-static SLang_Intrin_Fun_Type SLang_Math_Table [] =
-{
- MAKE_INTRINSIC_0("polynom", math_poly, SLANG_DOUBLE_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int SLang_init_slmath (void)
-{
- unsigned char *int_types;
-
-#if defined(__unix__)
- (void) SIGNAL (SIGFPE, math_floating_point_exception);
-#endif
-
- int_types = _SLarith_Arith_Types;
-
- while (*int_types != SLANG_FLOAT_TYPE)
- {
- if (-1 == SLclass_add_math_op (*int_types, generic_math_op, double_math_op_result))
- return -1;
- int_types++;
- }
-
- if ((-1 == SLclass_add_math_op (SLANG_FLOAT_TYPE, float_math_op, double_math_op_result))
- || (-1 == SLclass_add_math_op (SLANG_DOUBLE_TYPE, double_math_op, double_math_op_result))
-#if SLANG_HAS_COMPLEX
- || (-1 == SLclass_add_math_op (SLANG_COMPLEX_TYPE, complex_math_op, complex_math_op_result))
-#endif
- )
- return -1;
-
- if ((-1 == SLadd_math_unary_table (SLmath_Table, "__SLMATH__"))
- || (-1 == SLadd_intrin_fun_table (SLang_Math_Table, NULL))
- || (-1 == SLadd_dconstant_table (DConst_Table, NULL)))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slmemchr.c b/mdk-stage1/slang/slmemchr.c
deleted file mode 100644
index 1417bc549..000000000
--- a/mdk-stage1/slang/slmemchr.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* These routines are fast memcpy, memset routines. When available, I
- use system rouines. For msdos, I use inline assembly. */
-
-/* The current versions only work in the forward direction only!! */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-char *SLmemchr(register char *p, register char c, register int n)
-{
- int n2;
- register char *pmax;
-
- pmax = p + (n - 32);
-
- while (p <= pmax)
- {
- if ((*p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c)
- || (*++p == c) || (*++p == c) || (*++p == c) || (*++p == c))
- return p;
- p++;
- }
-
- n2 = n % 32;
-
- while (n2--)
- {
- if (*p == c) return p;
- p++;
- }
- return(NULL);
-}
diff --git a/mdk-stage1/slang/slmemcmp.c b/mdk-stage1/slang/slmemcmp.c
deleted file mode 100644
index c5ed50095..000000000
--- a/mdk-stage1/slang/slmemcmp.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* These routines are fast memcpy, memset routines. When available, I
- use system rouines. For msdos, I use inline assembly. */
-
-/* The current versions only work in the forward direction only!! */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/* This is an UNSIGNED comparison designed for systems that either do not have
-* this function or performed a signed comparison (SunOS)
-*/
-int SLmemcmp(register char *s1, register char *s2, int n)
-{
- register int cmp;
- register char *s1max;
-
- s1max = s1 + (n - 32);
-
- while (s1 <= s1max)
- {
- if (*s1 != *s2) return ((unsigned char) *s1 - (unsigned char) *s2);
- if (*(s1 + 1) != *(s2 + 1)) return ((unsigned char) *(s1 + 1) - (unsigned char) *(s2 + 1));
- if (*(s1 + 2) != *(s2 + 2)) return ((unsigned char) *(s1 + 2) - (unsigned char) *(s2 + 2));
- if (*(s1 + 3) != *(s2 + 3)) return ((unsigned char) *(s1 + 3) - (unsigned char) *(s2 + 3));
- if (*(s1 + 4) != *(s2 + 4)) return ((unsigned char) *(s1 + 4) - (unsigned char) *(s2 + 4));
- if (*(s1 + 5) != *(s2 + 5)) return ((unsigned char) *(s1 + 5) - (unsigned char) *(s2 + 5));
- if (*(s1 + 6) != *(s2 + 6)) return ((unsigned char) *(s1 + 6) - (unsigned char) *(s2 + 6));
- if (*(s1 + 7) != *(s2 + 7)) return ((unsigned char) *(s1 + 7) - (unsigned char) *(s2 + 7));
- if (*(s1 + 8) != *(s2 + 8)) return ((unsigned char) *(s1 + 8) - (unsigned char) *(s2 + 8));
- if (*(s1 + 9) != *(s2 + 9)) return ((unsigned char) *(s1 + 9) - (unsigned char) *(s2 + 9));
- if (*(s1 + 10) != *(s2 + 10)) return ((unsigned char) *(s1 + 10) - (unsigned char) *(s2 + 10));
- if (*(s1 + 11) != *(s2 + 11)) return ((unsigned char) *(s1 + 11) - (unsigned char) *(s2 + 11));
- if (*(s1 + 12) != *(s2 + 12)) return ((unsigned char) *(s1 + 12) - (unsigned char) *(s2 + 12));
- if (*(s1 + 13) != *(s2 + 13)) return ((unsigned char) *(s1 + 13) - (unsigned char) *(s2 + 13));
- if (*(s1 + 14) != *(s2 + 14)) return ((unsigned char) *(s1 + 14) - (unsigned char) *(s2 + 14));
- if (*(s1 + 15) != *(s2 + 15)) return ((unsigned char) *(s1 + 15) - (unsigned char) *(s2 + 15));
- if (*(s1 + 16) != *(s2 + 16)) return ((unsigned char) *(s1 + 16) - (unsigned char) *(s2 + 16));
- if (*(s1 + 17) != *(s2 + 17)) return ((unsigned char) *(s1 + 17) - (unsigned char) *(s2 + 17));
- if (*(s1 + 18) != *(s2 + 18)) return ((unsigned char) *(s1 + 18) - (unsigned char) *(s2 + 18));
- if (*(s1 + 19) != *(s2 + 19)) return ((unsigned char) *(s1 + 19) - (unsigned char) *(s2 + 19));
- if (*(s1 + 20) != *(s2 + 20)) return ((unsigned char) *(s1 + 20) - (unsigned char) *(s2 + 20));
- if (*(s1 + 21) != *(s2 + 21)) return ((unsigned char) *(s1 + 21) - (unsigned char) *(s2 + 21));
- if (*(s1 + 22) != *(s2 + 22)) return ((unsigned char) *(s1 + 22) - (unsigned char) *(s2 + 22));
- if (*(s1 + 23) != *(s2 + 23)) return ((unsigned char) *(s1 + 23) - (unsigned char) *(s2 + 23));
- if (*(s1 + 24) != *(s2 + 24)) return ((unsigned char) *(s1 + 24) - (unsigned char) *(s2 + 24));
- if (*(s1 + 25) != *(s2 + 25)) return ((unsigned char) *(s1 + 25) - (unsigned char) *(s2 + 25));
- if (*(s1 + 26) != *(s2 + 26)) return ((unsigned char) *(s1 + 26) - (unsigned char) *(s2 + 26));
- if (*(s1 + 27) != *(s2 + 27)) return ((unsigned char) *(s1 + 27) - (unsigned char) *(s2 + 27));
- if (*(s1 + 28) != *(s2 + 28)) return ((unsigned char) *(s1 + 28) - (unsigned char) *(s2 + 28));
- if (*(s1 + 29) != *(s2 + 29)) return ((unsigned char) *(s1 + 29) - (unsigned char) *(s2 + 29));
- if (*(s1 + 30) != *(s2 + 30)) return ((unsigned char) *(s1 + 30) - (unsigned char) *(s2 + 30));
- if (*(s1 + 31) != *(s2 + 31)) return ((unsigned char) *(s1 + 31) - (unsigned char) *(s2 + 31));
- s1 += 32; s2 += 32;
- }
-
- s1max = s1 + (n % 32);
-
- while (s1 < s1max)
- {
- cmp = (unsigned char) *s1 - (unsigned char) *s2;
- if (cmp) return(cmp);
- s1++;
- s2++;
- }
-
- return(0);
-}
diff --git a/mdk-stage1/slang/slmemcpy.c b/mdk-stage1/slang/slmemcpy.c
deleted file mode 100644
index e8665e4c6..000000000
--- a/mdk-stage1/slang/slmemcpy.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* These routines are fast memcpy, memset routines. When available, I
- use system rouines. For msdos, I use inline assembly. */
-
-/* The current versions only work in the forward direction only!! */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-char *SLmemcpy(char *s1, char *s2, int n)
-{
-#if defined(__BORLANDC__) && defined(__MSDOS__)
- asm mov ax, ds
- asm mov bx, si
- asm mov dx, di
- asm mov cx, n
- asm les di, s1
- asm lds si, s2
- asm cld
- asm rep movsb
- asm mov ds, ax
- asm mov si, bx
- asm mov di, dx
- return(s1);
-
-#else
- register char *smax, *s = s1;
- int n2;
-
- n2 = n % 4;
- smax = s + (n - 4);
- while (s <= smax)
- {
- *s = *s2; *(s + 1) = *(s2 + 1); *(s + 2) = *(s2 + 2); *(s + 3) = *(s2 + 3);
- s += 4;
- s2 += 4;
- }
- while (n2--) *s++ = *s2++;
- return(s1);
-#endif
-}
diff --git a/mdk-stage1/slang/slmemset.c b/mdk-stage1/slang/slmemset.c
deleted file mode 100644
index 3851663c5..000000000
--- a/mdk-stage1/slang/slmemset.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* These routines are fast memcpy, memset routines. When available, I
- use system rouines. For msdos, I use inline assembly. */
-
-/* The current versions only work in the forward direction only!! */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-void SLmemset(char *p, char space, int n)
-{
-#if defined(__BORLANDC__) && defined(__MSDOS__)
- asm mov al, space
- asm mov dx, di
- asm mov cx, n
- asm les di, p
- asm cld
- asm rep stosb
- asm mov di, dx
-#else
- register char *pmax;
-
- pmax = p + (n - 4);
- n = n % 4;
- while (p <= pmax)
- {
- *p++ = space; *p++ = space; *p++ = space; *p++= space;
- }
- while (n--) *p++ = space;
-#endif
-}
diff --git a/mdk-stage1/slang/slmisc.c b/mdk-stage1/slang/slmisc.c
deleted file mode 100644
index ccc7a9bdf..000000000
--- a/mdk-stage1/slang/slmisc.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#define DEBUG_MALLOC 0
-
-#if DEBUG_MALLOC
-# define SLREALLOC_FUN SLdebug_realloc
-# define SLMALLOC_FUN SLdebug_malloc
-# define SLFREE_FUN SLdebug_free
-#else
-# define SLREALLOC_FUN SLREALLOC
-# define SLMALLOC_FUN SLMALLOC
-# define SLFREE_FUN SLFREE
-#endif
-
-/* Version information goes here since this file is always needed. */
-int SLang_Version = SLANG_VERSION;
-char *SLang_Version_String = SLANG_VERSION_STRING;
-
-char *SLmake_string(char *str)
-{
- return SLmake_nstring(str, strlen (str));
-}
-
-char *SLmake_nstring (char *str, unsigned int n)
-{
- char *ptr;
-
- if (NULL == (ptr = SLmalloc(n + 1)))
- {
- return NULL;
- }
- SLMEMCPY (ptr, str, n);
- ptr[n] = 0;
- return(ptr);
-}
-
-void SLmake_lut (unsigned char *lut, unsigned char *range, unsigned char reverse)
-{
- register unsigned char *l = lut, *lmax = lut + 256;
- int i, r1, r2;
-
- while (l < lmax) *l++ = reverse;
- reverse = !reverse;
-
- r1 = *range++;
- while (r1)
- {
- r2 = *range++;
- if ((r2 == '-') && (*range != 0))
- {
- r2 = *range++;
- for (i = r1; i <= r2; i++) lut[i] = reverse;
- r1 = *range++;
- continue;
- }
- lut[r1] = reverse;
- r1 = r2;
- }
-}
-
-char *SLmalloc (unsigned int len)
-{
- char *p;
-
- p = (char *) SLMALLOC_FUN (len);
- if (p == NULL)
- SLang_Error = SL_MALLOC_ERROR;
-
- return p;
-}
-
-void SLfree (char *p)
-{
- if (p != NULL) SLFREE_FUN (p);
-}
-
-char *SLrealloc (char *p, unsigned int len)
-{
- if (len == 0)
- {
- SLfree (p);
- return NULL;
- }
-
- if (p == NULL) p = SLmalloc (len);
- else
- {
- p = (char *)SLREALLOC_FUN (p, len);
- if (p == NULL)
- SLang_Error = SL_MALLOC_ERROR;
- }
- return p;
-}
-
-char *SLcalloc (unsigned int nelems, unsigned int len)
-{
- char *p;
-
- len = nelems * len;
- p = SLmalloc (len);
- if (p != NULL) SLMEMSET (p, 0, len);
- return p;
-}
-
-/* p and ch may point to the same buffer */
-char *_SLexpand_escaped_char(char *p, char *ch)
-{
- int i = 0;
- int max = 0, num, base = 0;
- char ch1;
-
- ch1 = *p++;
-
- switch (ch1)
- {
- default: num = ch1; break;
- case 'n': num = '\n'; break;
- case 't': num = '\t'; break;
- case 'v': num = '\v'; break;
- case 'b': num = '\b'; break;
- case 'r': num = '\r'; break;
- case 'f': num = '\f'; break;
- case 'E': case 'e': num = 27; break;
- case 'a': num = 7;
- break;
-
- /* octal */
- case '0': case '1': case '2': case '3':
- case '4': case '5': case '6': case '7':
- max = '7';
- base = 8; i = 2; num = ch1 - '0';
- break;
-
- case 'd': /* decimal -- S-Lang extension */
- base = 10;
- i = 3;
- max = '9';
- num = 0;
- break;
-
- case 'x': /* hex */
- base = 16;
- max = '9';
- i = 2;
- num = 0;
- break;
- }
-
- while (i--)
- {
- ch1 = *p;
-
- if ((ch1 <= max) && (ch1 >= '0'))
- {
- num = base * num + (ch1 - '0');
- }
- else if (base == 16)
- {
- ch1 |= 0x20;
- if ((ch1 < 'a') || ((ch1 > 'f'))) break;
- num = base * num + 10 + (ch1 - 'a');
- }
- else break;
- p++;
- }
-
- *ch = (char) num;
- return p;
-}
-
-/* s and t could represent the same space */
-void SLexpand_escaped_string (register char *s, register char *t,
- register char *tmax)
-{
- char ch;
-
- while (t < tmax)
- {
- ch = *t++;
- if (ch == '\\')
- {
- t = _SLexpand_escaped_char (t, &ch);
- }
- *s++ = ch;
- }
- *s = 0;
-}
-
-int SLextract_list_element (char *list, unsigned int nth, char delim,
- char *elem, unsigned int buflen)
-{
- char *el, *elmax;
- char ch;
-
- while (nth > 0)
- {
- while ((0 != (ch = *list)) && (ch != delim))
- list++;
-
- if (ch == 0) return -1;
-
- list++;
- nth--;
- }
-
- el = elem;
- elmax = el + (buflen - 1);
-
- while ((0 != (ch = *list)) && (ch != delim) && (el < elmax))
- *el++ = *list++;
- *el = 0;
-
- return 0;
-}
-
-#ifndef HAVE_VSNPRINTF
-int _SLvsnprintf (char *buf, unsigned int buflen, char *fmt, va_list ap)
-{
-#if 1
- unsigned int len;
-
- /* On some systems vsprintf returns useless information. So, punt */
- vsprintf (buf, fmt, ap);
- len = strlen (buf);
- if (len >= buflen)
- {
- SLang_exit_error ("\
-Your system lacks the vsnprintf system call and vsprintf overflowed a buffer.\n\
-The integrity of this program has been violated.\n");
- return EOF; /* NOT reached */
- }
- return (int)len;
-#else
- int status;
-
- status = vsprintf (buf, fmt, ap);
- if (status >= (int) buflen)
- {
- /* If we are lucky, we will get this far. The real solution is to
- * provide a working version of vsnprintf
- */
- SLang_exit_error ("\
-Your system lacks the vsnprintf system call and vsprintf overflowed a buffer.\n\
-The integrity of this program has been violated.\n");
- return EOF; /* NOT reached */
- }
- return status;
-#endif
-}
-#endif
-
-#ifndef HAVE_SNPRINTF
-int _SLsnprintf (char *buf, unsigned int buflen, char *fmt, ...)
-{
- int status;
-
- va_list ap;
-
- va_start (ap, fmt);
- status = _SLvsnprintf (buf, buflen, fmt, ap);
- va_end (ap);
-
- return status;
-}
-#endif
-
-typedef struct _Cleanup_Function_Type
-{
- struct _Cleanup_Function_Type *next;
- void (*f)(void);
-}
-Cleanup_Function_Type;
-
-static Cleanup_Function_Type *Cleanup_Function_List;
-
-static void cleanup_slang (void)
-{
- while (Cleanup_Function_List != NULL)
- {
- Cleanup_Function_Type *next = Cleanup_Function_List->next;
- (*Cleanup_Function_List->f)();
- SLFREE_FUN ((char *) Cleanup_Function_List);
- Cleanup_Function_List = next;
- }
-}
-
-#ifndef HAVE_ATEXIT
-# ifdef HAVE_ON_EXIT
-static void on_exit_cleanup_slang (int arg_unused)
-{
- (void) arg_unused;
- cleanup_slang ();
-}
-# endif
-#endif
-
-int SLang_add_cleanup_function (void (*f)(void))
-{
- Cleanup_Function_Type *l;
-
- l = (Cleanup_Function_Type *) SLMALLOC_FUN (sizeof (Cleanup_Function_Type));
- if (l == NULL)
- return -1;
-
- l->f = f;
- l->next = Cleanup_Function_List;
-
- if (Cleanup_Function_List == NULL)
- {
-#ifdef HAVE_ATEXIT
- (void) atexit (cleanup_slang);
-#else
-# ifdef HAVE_ON_EXIT
- (void) on_exit (on_exit_cleanup_slang, 0);
-# endif
-#endif
- }
- Cleanup_Function_List = l;
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slnspace.c b/mdk-stage1/slang/slnspace.c
deleted file mode 100644
index 174ba7c81..000000000
--- a/mdk-stage1/slang/slnspace.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* -*- mode: C; mode: fold; -*- */
-/* slnspace.c --- Name Space implementation */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static SLang_NameSpace_Type *Namespace_Tables;
-
-static SLang_NameSpace_Type *find_name_table (char *name)
-{
- SLang_NameSpace_Type *table_list;
-
- table_list = Namespace_Tables;
- while (table_list != NULL)
- {
- if (0 == strcmp (table_list->name, name))
- break;
- table_list = table_list->next;
- }
- return table_list;
-}
-
-SLang_NameSpace_Type *_SLns_find_namespace (char *name)
-{
- SLang_NameSpace_Type *table_list;
-
- table_list = Namespace_Tables;
- while (table_list != NULL)
- {
- if ((table_list->namespace_name != NULL)
- && (0 == strcmp (table_list->namespace_name, name)))
- break;
- table_list = table_list->next;
- }
- return table_list;
-}
-
-SLang_NameSpace_Type *_SLns_allocate_namespace (char *name, unsigned int size)
-{
- SLang_NameSpace_Type *table_list;
- SLang_Name_Type **nt;
-
- if (NULL != (table_list = find_name_table (name)))
- return table_list;
-
- if (NULL == (name = SLang_create_slstring (name)))
- return NULL;
-
- if (NULL == (table_list = (SLang_NameSpace_Type *)
- SLmalloc (sizeof (SLang_NameSpace_Type))))
- {
- SLang_free_slstring (name);
- return NULL;
- }
-
- if (NULL == (nt = (SLang_Name_Type **) SLmalloc (sizeof (SLang_Name_Type *) * size)))
- {
- SLang_free_slstring (name);
- SLfree ((char *)table_list);
- return NULL;
- }
-
- memset ((char *)nt, 0, size * sizeof (SLang_Name_Type *));
- memset ((char *) table_list, 0, sizeof (SLang_NameSpace_Type));
-
- table_list->name = name;
- table_list->table = nt;
- table_list->table_size = size;
-
- table_list->next = Namespace_Tables;
- Namespace_Tables = table_list;
-
- return table_list;
-}
-
-int _SLns_set_namespace_name (SLang_NameSpace_Type *t, char *name)
-{
- SLang_NameSpace_Type *t1;
-
- t1 = _SLns_find_namespace (name);
- if (t1 == NULL)
- t1 = t;
-
- if ((t != t1) || (*name == 0))
- {
- SLang_verror (SL_INTRINSIC_ERROR, "Namespace \"%s\" already exists",
- name);
- return -1;
- }
-
- if (NULL == (name = SLang_create_slstring (name)))
- return -1;
-
- SLang_free_slstring (t->namespace_name); /* NULL ok */
- t->namespace_name = name;
-
- return 0;
-}
-
-SLang_Array_Type *_SLnspace_apropos (SLang_NameSpace_Type *ns, char *pat, unsigned int what)
-{
- SLang_Array_Type *at;
- unsigned int table_size;
- SLang_Name_Type *t, **table;
- int num_matches;
- unsigned int i;
- SLRegexp_Type rexp;
- unsigned char rbuf[512];
- unsigned int two;
-
- at = NULL;
-
- if ((ns == NULL)
- || ((table = ns->table) == NULL))
- return NULL;
-
- memset ((char *) &rexp, 0, sizeof (SLRegexp_Type));
- rexp.case_sensitive = 1;
- rexp.buf = rbuf;
- rexp.buf_len = sizeof (rbuf);
- rexp.pat = (unsigned char *)pat;
-
- if (0 != SLang_regexp_compile (&rexp))
- {
- SLang_verror (SL_INVALID_PARM, "Invalid regular expression: %s", pat);
- return NULL;
- }
-
- table_size = ns->table_size;
-
- two = 2;
- while (two != 0)
- {
- two--;
-
- num_matches = 0;
- for (i = 0; i < table_size; i++)
- {
- t = table[i];
- while (t != NULL)
- {
- unsigned int flags;
- char *name = t->name;
-
- switch (t->name_type)
- {
- case SLANG_GVARIABLE:
- flags = 8;
- break;
-
- case SLANG_ICONSTANT:
- case SLANG_DCONSTANT:
- case SLANG_RVARIABLE:
- case SLANG_IVARIABLE:
- flags = 4;
- break;
-
- case SLANG_INTRINSIC:
- case SLANG_MATH_UNARY:
- case SLANG_APP_UNARY:
- flags = 1;
- break;
-
- case SLANG_FUNCTION:
- flags = 2;
- break;
-
- default:
- flags = 0;
- break;
- }
-
- if ((flags & what)
- && (NULL != SLang_regexp_match ((unsigned char *)name, strlen (name), &rexp)))
- {
- if (at != NULL)
- {
- if (-1 == SLang_set_array_element (at, &num_matches, (VOID_STAR)&name))
- goto return_error;
- }
- num_matches++;
- }
- t = t->next;
- }
- }
-
- if (at == NULL)
- {
- at = SLang_create_array (SLANG_STRING_TYPE, 0, NULL, &num_matches, 1);
- if (at == NULL)
- goto return_error;
- }
- }
-
- return at;
-
- return_error:
- SLang_free_array (at);
- return NULL;
-}
-
-SLang_NameSpace_Type *SLns_create_namespace (char *namespace_name)
-{
- SLang_NameSpace_Type *ns;
- static int num;
- char name[64];
-
- if (namespace_name == NULL)
- namespace_name = "Global";
-
- ns = _SLns_find_namespace (namespace_name);
- if (ns != NULL)
- return ns;
-
- sprintf (name, " *** internal ns <%d> *** ", num);
-
- if (NULL == (ns = _SLns_allocate_namespace (name, SLSTATIC_HASH_TABLE_SIZE)))
- return NULL;
-
- num++;
- if (-1 == _SLns_set_namespace_name (ns, namespace_name))
- {
- SLns_delete_namespace (ns);
- return NULL;
- }
-
- return ns;
-}
-
-void SLns_delete_namespace (SLang_NameSpace_Type *ns)
-{
- (void) ns;
- /* V2.0 */
-}
diff --git a/mdk-stage1/slang/slospath.c b/mdk-stage1/slang/slospath.c
deleted file mode 100644
index 644931e81..000000000
--- a/mdk-stage1/slang/slospath.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Pathname intrinsic functions */
-/* Copyright (c) 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static void path_concat (char *a, char *b)
-{
- SLang_push_malloced_string (SLpath_dircat (a,b));
-}
-
-static void path_extname (char *path)
-{
-#ifdef VMS
- char *p;
-#endif
-
- path = SLpath_extname (path);
-#ifndef VMS
- SLang_push_string (path);
-#else
- p = strchr (path, ';');
- if (p == NULL)
- (void)SLang_push_string (p);
- else
- (void)SLang_push_malloced_string (SLmake_nstring (path, (unsigned int)(p - path)));
-#endif
-}
-
-static void path_basename (char *path)
-{
- (void) SLang_push_string (SLpath_basename (path));
-}
-
-static void path_dirname (char *path)
-{
- (void) SLang_push_malloced_string (SLpath_dirname (path));
-}
-
-static void path_sans_extname (char *path)
-{
- (void) SLang_push_malloced_string (SLpath_pathname_sans_extname (path));
-}
-
-
-
-static SLang_Intrin_Fun_Type Path_Name_Table [] =
-{
- MAKE_INTRINSIC_SS("path_concat", path_concat, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("path_extname", path_extname, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("path_dirname", path_dirname, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("path_basename", path_basename, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("path_sans_extname", path_sans_extname, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("path_is_absolute", SLpath_is_absolute_path, SLANG_INT_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int SLang_init_ospath (void)
-{
- if (-1 == SLadd_intrin_fun_table(Path_Name_Table, "__OSPATH__"))
- return -1;
-
- return 0;
-}
-
-
diff --git a/mdk-stage1/slang/slpack.c b/mdk-stage1/slang/slpack.c
deleted file mode 100644
index 53ef63643..000000000
--- a/mdk-stage1/slang/slpack.c
+++ /dev/null
@@ -1,785 +0,0 @@
-/* Pack objects as a binary string */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include <ctype.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifndef isdigit
-# define isdigit(c) (((c)>='0')&&((c)<= '9'))
-#endif
-#ifndef isspace
-# define isspace(c) (((c)==' ') || ((c)=='\t') || ((c)=='\n'))
-#endif
-
-/* format description:
- *
- * s = string (null padded)
- * S = string (space padded)
- * c = signed char
- * C = unsigned char
- * h = short
- * H = unsigned short
- * i = int
- * I = unsigned int
- * l = long
- * L = unsigned long
- * j = 16 bit signed integer (short)
- * J = 16 bit unsigned integer (short)
- * k = 32 bit signed integer (long)
- * K = 32 bit unsigned integer (long)
- * f = float (native format)
- * F = 32 bit double
- * d = double (native format)
- * D = 64 bit double
- * x = null pad byte
- * > = big-endian mode
- * < = little-endian mode
- * = = native mode
- */
-
-#define NATIVE_ORDER 0
-#define BIGENDIAN_ORDER 1
-#define LILENDIAN_ORDER 2
-static int Native_Byte_Order = NATIVE_ORDER;
-
-typedef struct
-{
- char format_type;
- unsigned char data_type;
- unsigned int repeat;
- unsigned int sizeof_type;
- char pad;
- int byteorder;
- int is_scalar;
-}
-Format_Type;
-
-static int get_int_type_for_size (unsigned int size, unsigned char *s, unsigned char *u)
-{
- if (sizeof (int) == size)
- {
- if (s != NULL) *s = SLANG_INT_TYPE;
- if (u != NULL) *u = SLANG_UINT_TYPE;
- return 0;
- }
-
- if (sizeof (short) == size)
- {
- if (s != NULL) *s = SLANG_SHORT_TYPE;
- if (u != NULL) *u = SLANG_USHORT_TYPE;
- return 1;
- }
-
- if (sizeof (long) == size)
- {
- if (s != NULL) *s = SLANG_LONG_TYPE;
- if (u != NULL) *u = SLANG_ULONG_TYPE;
- return 1;
- }
-
- if (s != NULL) *s = 0;
- if (u != NULL) *u = 0;
- SLang_verror (SL_NOT_IMPLEMENTED,
- "This OS does not support a %u byte int", size);
- return -1;
-}
-
-static int get_float_type_for_size (unsigned int size, unsigned char *s)
-{
- if (sizeof (float) == size)
- {
- *s = SLANG_FLOAT_TYPE;
- return 0;
- }
-
- if (sizeof (double) == size)
- {
- *s = SLANG_DOUBLE_TYPE;
- return 0;
- }
-
- SLang_verror (SL_NOT_IMPLEMENTED,
- "This OS does not support a %u byte float", size);
- return -1;
-}
-
-static int parse_a_format (char **format, Format_Type *ft)
-{
- char *f;
- char ch;
- unsigned repeat;
-
- f = *format;
-
- while (((ch = *f++) != 0)
- && isspace (ch))
- ;
-
- switch (ch)
- {
- default:
- ft->byteorder = NATIVE_ORDER;
- break;
-
- case '=':
- ft->byteorder = NATIVE_ORDER;
- ch = *f++;
- break;
-
- case '>':
- ft->byteorder = BIGENDIAN_ORDER;
- ch = *f++;
- break;
-
- case '<':
- ft->byteorder = LILENDIAN_ORDER;
- ch = *f++;
- break;
- }
-
- if (ch == 0)
- {
- f--;
- *format = f;
- return 0;
- }
-
- ft->format_type = ch;
- ft->repeat = 1;
-
- if (isdigit (*f))
- {
- repeat = (unsigned int) (*f - '0');
- f++;
-
- while (isdigit (*f))
- {
- unsigned int repeat10 = 10 * repeat + (unsigned int)(*f - '0');
-
- /* Check overflow */
- if (repeat != repeat10 / 10)
- {
- SLang_verror (SL_OVERFLOW,
- "Repeat count too large in [un]pack format");
- return -1;
- }
- repeat = repeat10;
- f++;
- }
- ft->repeat = repeat;
- }
-
- *format = f;
-
- ft->is_scalar = 1;
- ft->pad = 0;
-
- switch (ft->format_type)
- {
- default:
- SLang_verror (SL_NOT_IMPLEMENTED,
- "[un]pack format character '%c' not supported", ft->format_type);
- return -1;
-
- case 'D':
- ft->sizeof_type = 8;
- if (-1 == get_float_type_for_size (8, &ft->data_type))
- return -1;
- break;
-
- case 'd':
- ft->data_type = SLANG_DOUBLE_TYPE;
- ft->sizeof_type = sizeof (double);
- break;
-
- case 'F':
- ft->sizeof_type = 4;
- if (-1 == get_float_type_for_size (4, &ft->data_type))
- return -1;
- break;
- case 'f':
- ft->data_type = SLANG_FLOAT_TYPE;
- ft->sizeof_type = sizeof (float);
- break;
-
- case 'h':
- ft->data_type = SLANG_SHORT_TYPE;
- ft->sizeof_type = sizeof (short);
- break;
- case 'H':
- ft->data_type = SLANG_USHORT_TYPE;
- ft->sizeof_type = sizeof (unsigned short);
- break;
- case 'i':
- ft->data_type = SLANG_INT_TYPE;
- ft->sizeof_type = sizeof (int);
- break;
- case 'I':
- ft->data_type = SLANG_UINT_TYPE;
- ft->sizeof_type = sizeof (unsigned int);
- break;
- case 'l':
- ft->data_type = SLANG_LONG_TYPE;
- ft->sizeof_type = sizeof (long);
- break;
- case 'L':
- ft->data_type = SLANG_ULONG_TYPE;
- ft->sizeof_type = sizeof (unsigned long);
- break;
-
- /* 16 bit ints */
- case 'j':
- ft->sizeof_type = 2;
- if (-1 == get_int_type_for_size (2, &ft->data_type, NULL))
- return -1;
- break;
- case 'J':
- ft->sizeof_type = 2;
- if (-1 == get_int_type_for_size (2, NULL, &ft->data_type))
- return -1;
- break;
-
- /* 32 bit ints */
- case 'k':
- ft->sizeof_type = 4;
- if (-1 == get_int_type_for_size (4, &ft->data_type, NULL))
- return -1;
- break;
- case 'K':
- ft->sizeof_type = 4;
- if (-1 == get_int_type_for_size (4, NULL, &ft->data_type))
- return -1;
- break;
-
- case 'x':
- ft->sizeof_type = 1;
- ft->data_type = 0;
- break;
-
- case 'c':
- ft->sizeof_type = 1;
- ft->data_type = SLANG_CHAR_TYPE;
- break;
-
- case 'C':
- ft->data_type = SLANG_UCHAR_TYPE;
- ft->sizeof_type = 1;
- break;
-
- case 'S':
- case 'A':
- ft->pad = ' ';
- case 'a':
- case 's':
- ft->data_type = SLANG_BSTRING_TYPE;
- ft->sizeof_type = 1;
- ft->is_scalar = 0;
- break;
- }
- return 1;
-}
-
-static int compute_size_for_format (char *format, unsigned int *num_bytes)
-{
- unsigned int size;
- Format_Type ft;
- int status;
-
- *num_bytes = size = 0;
-
- while (1 == (status = parse_a_format (&format, &ft)))
- size += ft.repeat * ft.sizeof_type;
-
- *num_bytes = size;
- return status;
-}
-
-static void byte_swap64 (unsigned char *ss, unsigned int n) /*{{{*/
-{
- unsigned char *p, *pmax, ch;
-
- if (n == 0) return;
- p = (unsigned char *) ss;
- pmax = p + 8 * n;
- while (p < pmax)
- {
- ch = *p;
- *p = *(p + 7);
- *(p + 7) = ch;
-
- ch = *(p + 6);
- *(p + 6) = *(p + 1);
- *(p + 1) = ch;
-
- ch = *(p + 5);
- *(p + 5) = *(p + 2);
- *(p + 2) = ch;
-
- ch = *(p + 4);
- *(p + 4) = *(p + 3);
- *(p + 3) = ch;
-
- p += 8;
- }
-}
-
-/*}}}*/
-static void byte_swap32 (unsigned char *ss, unsigned int n) /*{{{*/
-{
- unsigned char *p, *pmax, ch;
-
- p = (unsigned char *) ss;
- pmax = p + 4 * n;
- while (p < pmax)
- {
- ch = *p;
- *p = *(p + 3);
- *(p + 3) = ch;
-
- ch = *(p + 1);
- *(p + 1) = *(p + 2);
- *(p + 2) = ch;
- p += 4;
- }
-}
-
-/*}}}*/
-static void byte_swap16 (unsigned char *p, unsigned int nread) /*{{{*/
-{
- unsigned char *pmax, ch;
-
- pmax = p + 2 * nread;
- while (p < pmax)
- {
- ch = *p;
- *p = *(p + 1);
- *(p + 1) = ch;
- p += 2;
- }
-}
-
-/*}}}*/
-
-static int byteswap (int order, unsigned char *b, unsigned int size, unsigned int num)
-{
- if (Native_Byte_Order == order)
- return 0;
-
- switch (size)
- {
- case 2:
- byte_swap16 (b, num);
- break;
- case 4:
- byte_swap32 (b, num);
- break;
- case 8:
- byte_swap64 (b, num);
- break;
- default:
- return -1;
- }
-
- return 0;
-}
-
-static void check_native_byte_order (void)
-{
- unsigned short x;
-
- if (Native_Byte_Order != NATIVE_ORDER)
- return;
-
- x = 0xFF;
- if (*(unsigned char *)&x == 0xFF)
- Native_Byte_Order = LILENDIAN_ORDER;
- else
- Native_Byte_Order = BIGENDIAN_ORDER;
-}
-
-static SLang_BString_Type *
-pack_according_to_format (char *format, unsigned int nitems)
-{
- unsigned int size, num;
- unsigned char *buf, *b;
- SLang_BString_Type *bs;
- Format_Type ft;
-
- buf = NULL;
-
- if (-1 == compute_size_for_format (format, &size))
- goto return_error;
-
- if (NULL == (buf = (unsigned char *) SLmalloc (size + 1)))
- goto return_error;
-
- b = buf;
-
- while (1 == parse_a_format (&format, &ft))
- {
- unsigned char *ptr;
- unsigned int repeat;
-
- repeat = ft.repeat;
- if (ft.data_type == 0)
- {
- memset ((char *) b, ft.pad, repeat);
- b += repeat;
- continue;
- }
-
- if (ft.is_scalar)
- {
- unsigned char *bstart;
- num = repeat;
-
- bstart = b;
- while (repeat != 0)
- {
- unsigned int nelements;
- SLang_Array_Type *at;
-
- if (nitems == 0)
- {
- SLang_verror (SL_INVALID_PARM,
- "Not enough items for pack format");
- goto return_error;
- }
-
- if (-1 == SLang_pop_array_of_type (&at, ft.data_type))
- goto return_error;
-
- nelements = at->num_elements;
- if (repeat < nelements)
- nelements = repeat;
- repeat -= nelements;
-
- nelements = nelements * ft.sizeof_type;
- memcpy ((char *)b, (char *)at->data, nelements);
-
- b += nelements;
- SLang_free_array (at);
- nitems--;
- }
-
- if (ft.byteorder != NATIVE_ORDER)
- byteswap (ft.byteorder, bstart, ft.sizeof_type, num);
-
- continue;
- }
-
- /* Otherwise we have a string */
- if (-1 == SLang_pop_bstring (&bs))
- goto return_error;
-
- ptr = SLbstring_get_pointer (bs, &num);
- if (repeat < num) num = repeat;
- memcpy ((char *)b, (char *)ptr, num);
- b += num;
- repeat -= num;
- memset ((char *)b, ft.pad, repeat);
- SLbstring_free (bs);
- b += repeat;
- nitems--;
- }
-
- *b = 0;
- bs = SLbstring_create_malloced (buf, size, 0);
- if (bs == NULL)
- goto return_error;
-
- SLdo_pop_n (nitems);
- return bs;
-
- return_error:
- SLdo_pop_n (nitems);
- if (buf != NULL)
- SLfree ((char *) buf);
-
- return NULL;
-}
-
-void _SLpack (void)
-{
- SLang_BString_Type *bs;
- char *fmt;
- int nitems;
-
- check_native_byte_order ();
-
- nitems = SLang_Num_Function_Args;
- if (nitems <= 0)
- {
- SLang_verror (SL_SYNTAX_ERROR,
- "pack: not enough arguments");
- return;
- }
-
- if ((-1 == SLreverse_stack (nitems))
- || (-1 == SLang_pop_slstring (&fmt)))
- bs = NULL;
- else
- {
- bs = pack_according_to_format (fmt, (unsigned int)nitems - 1);
- SLang_free_slstring (fmt);
- }
-
- SLang_push_bstring (bs);
- SLbstring_free (bs);
-}
-
-void _SLunpack (char *format, SLang_BString_Type *bs)
-{
- Format_Type ft;
- unsigned char *b;
- unsigned int len;
- unsigned int num_bytes;
-
- check_native_byte_order ();
-
- if (-1 == compute_size_for_format (format, &num_bytes))
- return;
-
- b = SLbstring_get_pointer (bs, &len);
- if (b == NULL)
- return;
-
- if (len < num_bytes)
- {
- SLang_verror (SL_INVALID_PARM,
- "unpack format %s is too large for input string",
- format);
- return;
- }
-
- while (1 == parse_a_format (&format, &ft))
- {
- char *str, *s;
-
- if (ft.repeat == 0)
- continue;
-
- if (ft.data_type == 0)
- { /* skip padding */
- b += ft.repeat;
- continue;
- }
-
- if (ft.is_scalar)
- {
- SLang_Array_Type *at;
- int dims;
-
- if (ft.repeat == 1)
- {
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (ft.data_type);
- memcpy ((char *)cl->cl_transfer_buf, (char *)b, ft.sizeof_type);
- if (ft.byteorder != NATIVE_ORDER)
- byteswap (ft.byteorder, (unsigned char *)cl->cl_transfer_buf, ft.sizeof_type, 1);
-
- if (-1 == (cl->cl_apush (ft.data_type, cl->cl_transfer_buf)))
- return;
- b += ft.sizeof_type;
- continue;
- }
-
- dims = (int) ft.repeat;
- at = SLang_create_array (ft.data_type, 0, NULL, &dims, 1);
- if (at == NULL)
- return;
-
- num_bytes = ft.repeat * ft.sizeof_type;
- memcpy ((char *)at->data, (char *)b, num_bytes);
- if (ft.byteorder != NATIVE_ORDER)
- byteswap (ft.byteorder, (unsigned char *)at->data, ft.sizeof_type, ft.repeat);
-
- if (-1 == SLang_push_array (at, 1))
- return;
-
- b += num_bytes;
- continue;
- }
-
- len = ft.repeat;
- str = SLmalloc (len + 1);
- if (str == NULL)
- return;
-
- memcpy ((char *) str, (char *)b, len);
- str [len] = 0;
-
- if (ft.pad == ' ')
- {
- unsigned int new_len;
-
- s = str + len;
- while (s > str)
- {
- s--;
- if ((*s != ' ') && (*s != 0))
- {
- s++;
- break;
- }
- *s = 0;
- }
- new_len = (unsigned int) (s - str);
-
- if (new_len != len)
- {
- s = SLrealloc (str, new_len + 1);
- if (s == NULL)
- {
- SLfree (str);
- return;
- }
- str = s;
- len = new_len;
- }
- }
-
- /* Avoid a bstring if possible */
- s = SLmemchr (str, 0, len);
- if (s == NULL)
- {
- if (-1 == SLang_push_malloced_string (str))
- return;
- }
- else
- {
- SLang_BString_Type *new_bs;
-
- new_bs = SLbstring_create_malloced ((unsigned char *)str, len, 1);
- if (new_bs == NULL)
- return;
-
- if (-1 == SLang_push_bstring (new_bs))
- {
- SLfree (str);
- return;
- }
- SLbstring_free (new_bs);
- }
-
- b += ft.repeat;
- }
-}
-
-unsigned int _SLpack_compute_size (char *format)
-{
- unsigned int n;
-
- n = 0;
- (void) compute_size_for_format (format, &n);
- return n;
-}
-
-void _SLpack_pad_format (char *format)
-{
- unsigned int len, max_len;
- Format_Type ft;
- char *buf, *b;
-
- check_native_byte_order ();
-
- /* Just check the syntax */
- if (-1 == compute_size_for_format (format, &max_len))
- return;
-
- /* This should be sufficient to handle any needed xyy padding characters.
- * I cannot see how this will be overrun
- */
- max_len = 4 * (strlen (format) + 1);
- if (NULL == (buf = SLmalloc (max_len + 1)))
- return;
-
- b = buf;
- len = 0;
- while (1 == parse_a_format (&format, &ft))
- {
- struct { char a; short b; } s_h;
- struct { char a; int b; } s_i;
- struct { char a; long b; } s_l;
- struct { char a; float b; } s_f;
- struct { char a; double b; } s_d;
- unsigned int pad;
-
- if (ft.repeat == 0)
- continue;
-
- if (ft.data_type == 0)
- { /* pad */
- sprintf (b, "x%u", ft.repeat);
- b += strlen (b);
- len += ft.repeat;
- continue;
- }
-
- switch (ft.data_type)
- {
- default:
- case SLANG_STRING_TYPE:
- case SLANG_BSTRING_TYPE:
- case SLANG_CHAR_TYPE:
- case SLANG_UCHAR_TYPE:
- pad = 0;
- break;
-
- case SLANG_SHORT_TYPE:
- case SLANG_USHORT_TYPE:
- pad = ((unsigned int) ((char *)&s_h.b - (char *)&s_h.a));
- break;
-
- case SLANG_INT_TYPE:
- case SLANG_UINT_TYPE:
- pad = ((unsigned int) ((char *)&s_i.b - (char *)&s_i.a));
- break;
-
- case SLANG_LONG_TYPE:
- case SLANG_ULONG_TYPE:
- pad = ((unsigned int) ((char *)&s_l.b - (char *)&s_l.a));
- break;
-
- case SLANG_FLOAT_TYPE:
- pad = ((unsigned int) ((char *)&s_f.b - (char *)&s_f.a));
- break;
-
- case SLANG_DOUBLE_TYPE:
- pad = ((unsigned int) ((char *)&s_d.b - (char *)&s_d.a));
- break;
- }
-
- /* Pad to a length that is an integer multiple of pad. */
- if (pad)
- pad = pad * ((len + pad - 1)/pad) - len;
-
- if (pad)
- {
- sprintf (b, "x%u", pad);
- b += strlen (b);
- len += pad;
- }
-
- *b++ = ft.format_type;
- if (ft.repeat > 1)
- {
- sprintf (b, "%u", ft.repeat);
- b += strlen (b);
- }
-
- len += ft.repeat * ft.sizeof_type;
- }
- *b = 0;
-
- (void) SLang_push_malloced_string (buf);
-}
diff --git a/mdk-stage1/slang/slparse.c b/mdk-stage1/slang/slparse.c
deleted file mode 100644
index bc709d1fb..000000000
--- a/mdk-stage1/slang/slparse.c
+++ /dev/null
@@ -1,1970 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static SLang_Load_Type *LLT;
-int _SLang_Compile_Line_Num_Info;
-
-static void free_token (_SLang_Token_Type *t)
-{
- register unsigned int nrefs = t->num_refs;
-
- if (nrefs == 0)
- return;
-
- if (nrefs == 1)
- {
- if (t->free_sval_flag)
- {
- if (t->type == BSTRING_TOKEN)
- SLbstring_free (t->v.b_val);
- else
- _SLfree_hashed_string (t->v.s_val, strlen (t->v.s_val), t->hash);
- t->v.s_val = NULL;
- }
- }
-
- t->num_refs = nrefs - 1;
-}
-
-static void init_token (_SLang_Token_Type *t)
-{
- memset ((char *) t, 0, sizeof (_SLang_Token_Type));
-#if _SLANG_HAS_DEBUG_CODE
- t->line_number = -1;
-#endif
-}
-
-/* Allow room for one push back of a token. This is necessary for
- * multiple assignment.
- */
-static unsigned int Use_Next_Token;
-static _SLang_Token_Type Next_Token;
-#if _SLANG_HAS_DEBUG_CODE
-static int Last_Line_Number = -1;
-#endif
-
-static int unget_token (_SLang_Token_Type *ctok)
-{
- if (SLang_Error)
- return -1;
- if (Use_Next_Token != 0)
- {
- _SLparse_error ("unget_token failed", ctok, 0);
- return -1;
- }
-
- Use_Next_Token++;
- Next_Token = *ctok;
- init_token (ctok);
- return 0;
-}
-
-static int get_token (_SLang_Token_Type *ctok)
-{
- if (ctok->num_refs)
- free_token (ctok);
-
- if (Use_Next_Token)
- {
- Use_Next_Token--;
- *ctok = Next_Token;
- return ctok->type;
- }
-
- return _SLget_token (ctok);
-}
-
-static int compile_token (_SLang_Token_Type *t)
-{
-#if _SLANG_HAS_DEBUG_CODE
- if (_SLang_Compile_Line_Num_Info
- && (t->line_number != Last_Line_Number)
- && (t->line_number != -1))
- {
- _SLang_Token_Type tok;
- tok.type = LINE_NUM_TOKEN;
- tok.v.long_val = Last_Line_Number = t->line_number;
- (*_SLcompile_ptr) (&tok);
- }
-#endif
- (*_SLcompile_ptr) (t);
- return 0;
-}
-
-typedef struct
-{
-#define USE_PARANOID_MAGIC 0
-#if USE_PARANOID_MAGIC
- unsigned long magic;
-#endif
- _SLang_Token_Type *stack;
- unsigned int len;
- unsigned int size;
-}
-Token_List_Type;
-
-#define MAX_TOKEN_LISTS 16
-static Token_List_Type Token_List_Stack [MAX_TOKEN_LISTS];
-static unsigned int Token_List_Stack_Depth = 0;
-static Token_List_Type *Token_List = NULL;
-
-static void init_token_list (Token_List_Type *t)
-{
- t->size = 0;
- t->len = 0;
- t->stack = NULL;
-#if USE_PARANOID_MAGIC
- t->magic = 0xABCDEF12;
-#endif
-}
-
-static void free_token_list (Token_List_Type *t)
-{
- _SLang_Token_Type *s;
-
- if (t == NULL)
- return;
-#if USE_PARANOID_MAGIC
- if (t->magic != 0xABCDEF12)
- {
- SLang_doerror ("Magic error.");
- return;
- }
-#endif
- s = t->stack;
- if (s != NULL)
- {
- _SLang_Token_Type *smax = s + t->len;
- while (s != smax)
- {
- if (s->num_refs) free_token (s);
- s++;
- }
-
- SLfree ((char *) t->stack);
- }
-
- memset ((char *) t, 0, sizeof (Token_List_Type));
-}
-
-static Token_List_Type *push_token_list (void)
-{
- if (Token_List_Stack_Depth == MAX_TOKEN_LISTS)
- {
- _SLparse_error ("Token list stack size exceeded", NULL, 0);
- return NULL;
- }
-
- Token_List = Token_List_Stack + Token_List_Stack_Depth;
- Token_List_Stack_Depth++;
- init_token_list (Token_List);
- return Token_List;
-}
-
-static int pop_token_list (int do_free)
-{
- if (Token_List_Stack_Depth == 0)
- {
- if (SLang_Error == 0)
- _SLparse_error ("Token list stack underflow", NULL, 0);
- return -1;
- }
- Token_List_Stack_Depth--;
-
- if (do_free) free_token_list (Token_List);
-
- if (Token_List_Stack_Depth != 0)
- Token_List = Token_List_Stack + (Token_List_Stack_Depth - 1);
- else
- Token_List = NULL;
-
- return 0;
-}
-
-static int check_token_list_space (Token_List_Type *t, unsigned int delta_size)
-{
- _SLang_Token_Type *st;
- unsigned int len;
-#if USE_PARANOID_MAGIC
- if (t->magic != 0xABCDEF12)
- {
- SLang_doerror ("Magic error.");
- return -1;
- }
-#endif
- len = t->len + delta_size;
- if (len <= t->size) return 0;
-
- if (delta_size < 4)
- {
- delta_size = 4;
- len = t->len + delta_size;
- }
-
- st = (_SLang_Token_Type *) SLrealloc((char *) t->stack,
- len * sizeof(_SLang_Token_Type));
- if (st == NULL)
- {
- _SLparse_error ("Malloc error", NULL, 0);
- return -1;
- }
-
- memset ((char *) (st + t->len), 0, delta_size);
-
- t->stack = st;
- t->size = len;
- return 0;
-}
-
-static int append_token (_SLang_Token_Type *t)
-{
- if (-1 == check_token_list_space (Token_List, 1))
- return -1;
-
- Token_List->stack [Token_List->len] = *t;
- Token_List->len += 1;
- t->num_refs = 0; /* stealing it */
- return 0;
-}
-
-static int append_token_of_type (unsigned char t)
-{
- _SLang_Token_Type *tok;
-
- if (-1 == check_token_list_space (Token_List, 1))
- return -1;
-
- /* The memset when the list was created ensures that the other fields
- * are properly initialized.
- */
- tok = Token_List->stack + Token_List->len;
- init_token (tok);
- tok->type = t;
- Token_List->len += 1;
- return 0;
-}
-
-static _SLang_Token_Type *get_last_token (void)
-{
- unsigned int len;
-
- if ((Token_List == NULL)
- || (0 == (len = Token_List->len)))
- return NULL;
-
- len--;
- return Token_List->stack + len;
-}
-
-/* This function does NOT free the list. */
-static int compile_token_list_with_fun (int dir, Token_List_Type *list,
- int (*f)(_SLang_Token_Type *))
-{
- _SLang_Token_Type *t0, *t1;
-
- if (list == NULL)
- return -1;
-
- if (f == NULL)
- f = compile_token;
-
- t0 = list->stack;
- t1 = t0 + list->len;
-
- if (dir < 0)
- {
- /* backwards */
-
- while ((SLang_Error == 0) && (t1 > t0))
- {
- t1--;
- (*f) (t1);
- }
- return 0;
- }
-
- /* forward */
- while ((SLang_Error == 0) && (t0 < t1))
- {
- (*f) (t0);
- t0++;
- }
- return 0;
-}
-
-static int compile_token_list (void)
-{
- if (Token_List == NULL)
- return -1;
-
- compile_token_list_with_fun (1, Token_List, NULL);
- pop_token_list (1);
- return 0;
-}
-
-/* Take all elements in the list from pos2 to the end and exchange them
- * with the elements at pos1, e.g.,
- * ...ABCDEabc ==> ...abcABCDE
- * where pos1 denotes A and pos2 denotes a.
- */
-static int token_list_element_exchange (unsigned int pos1, unsigned int pos2)
-{
- _SLang_Token_Type *s, *s1, *s2;
- unsigned int len, nloops;
-
- if (Token_List == NULL)
- return -1;
-
- s = Token_List->stack;
- len = Token_List->len;
-
- if ((s == NULL) || (len == 0)
- || (pos2 >= len))
- return -1;
-
- /* This may not be the most efficient algorithm but the number to swap
- * is most-likely going to be small, e.g, 3
- * The algorithm is to rotate the list. The particular rotation
- * direction was chosen to make insert_token fast.
- * It works like:
- * @ ABCabcde --> BCabcdeA --> CabcdeAB --> abcdefAB
- * which is optimal for Abcdef sequence produced by function calls.
- *
- * Profiling indicates that nloops is almost always 1, whereas the inner
- * loop can loop many times (e.g., 9 times).
- */
-
- s2 = s + (len - 1);
- s1 = s + pos1;
- nloops = pos2 - pos1;
-
- while (nloops)
- {
- _SLang_Token_Type save;
-
- s = s1;
- save = *s;
-
- while (s < s2)
- {
- *s = *(s + 1);
- s++;
- }
- *s = save;
-
- nloops--;
- }
- return 0;
-}
-
-#if 0
-static int insert_token (_SLang_Token_Type *t, unsigned int pos)
-{
- if (-1 == append_token (t))
- return -1;
-
- return token_list_element_exchange (pos, Token_List->len - 1);
-}
-#endif
-static void compile_token_of_type (unsigned char t)
-{
- _SLang_Token_Type tok;
-
-#if _SLANG_HAS_DEBUG_CODE
- tok.line_number = -1;
-#endif
- tok.type = t;
- compile_token(&tok);
-}
-
-static void statement (_SLang_Token_Type *);
-static void compound_statement (_SLang_Token_Type *);
-static void expression_with_parenthesis (_SLang_Token_Type *);
-static void handle_semicolon (_SLang_Token_Type *);
-static void statement_list (_SLang_Token_Type *);
-static void variable_list (_SLang_Token_Type *, unsigned char);
-static void struct_declaration (_SLang_Token_Type *);
-static void define_function_args (_SLang_Token_Type *);
-static void typedef_definition (_SLang_Token_Type *);
-static void function_args_expression (_SLang_Token_Type *, int);
-static void expression (_SLang_Token_Type *);
-static void expression_with_commas (_SLang_Token_Type *, int);
-static void simple_expression (_SLang_Token_Type *);
-static void unary_expression (_SLang_Token_Type *);
-static void postfix_expression (_SLang_Token_Type *);
-static int check_for_lvalue (unsigned char, _SLang_Token_Type *);
-/* static void primary_expression (_SLang_Token_Type *); */
-static void block (_SLang_Token_Type *);
-static void inline_array_expression (_SLang_Token_Type *);
-static void array_index_expression (_SLang_Token_Type *);
-static void do_multiple_assignment (_SLang_Token_Type *);
-static void try_multiple_assignment (_SLang_Token_Type *);
-#if 0
-static void not_implemented (char *what)
-{
- char err [256];
- sprintf (err, "Expression not implemented: %s", what);
- _SLparse_error (err, NULL, 0);
-}
-#endif
-static void rpn_parse_line (_SLang_Token_Type *tok)
-{
- do
- {
- /* multiple RPN tokens possible when the file looks like:
- * . <end of line>
- * . <end of line>
- */
- if (tok->type != RPN_TOKEN)
- compile_token (tok);
- free_token (tok);
- }
- while (EOF_TOKEN != _SLget_rpn_token (tok));
-}
-
-static int get_identifier_token (_SLang_Token_Type *tok)
-{
- if (IDENT_TOKEN == get_token (tok))
- return IDENT_TOKEN;
-
- _SLparse_error ("Expecting identifier", tok, 0);
- return tok->type;
-}
-
-static void define_function (_SLang_Token_Type *ctok, unsigned char type)
-{
- _SLang_Token_Type fname;
-
- switch (type)
- {
- case STATIC_TOKEN:
- type = DEFINE_STATIC_TOKEN;
- break;
-
- case PUBLIC_TOKEN:
- type = DEFINE_PUBLIC_TOKEN;
- break;
-
- case PRIVATE_TOKEN:
- type = DEFINE_PRIVATE_TOKEN;
- }
-
- init_token (&fname);
- if (IDENT_TOKEN != get_identifier_token (&fname))
- {
- free_token (&fname);
- return;
- }
-
- compile_token_of_type(OPAREN_TOKEN);
- get_token (ctok);
- define_function_args (ctok);
- compile_token_of_type(FARG_TOKEN);
-
- if (ctok->type == OBRACE_TOKEN)
- compound_statement(ctok);
-
- else if (ctok->type != SEMICOLON_TOKEN)
- {
- _SLparse_error("Expecting {", ctok, 0);
- free_token (&fname);
- return;
- }
-
- fname.type = type;
- compile_token (&fname);
- free_token (&fname);
-}
-
-/* statement:
- * compound-statement
- * if ( expression ) statement
- * if ( expression ) statement else statement
- * !if ( expression ) statement
- * loop ( expression ) statement
- * _for ( expression ) statement
- * foreach ( expression ) statement
- * foreach (expression ) using (expression-list) statement
- * while ( expression ) statement
- * do statement while (expression) ;
- * for ( expressionopt ; expressionopt ; expressionopt ) statement
- * ERROR_BLOCK statement
- * EXIT_BLOCK statement
- * USER_BLOCK0 statement
- * USER_BLOCK1 statement
- * USER_BLOCK2 statement
- * USER_BLOCK3 statement
- * USER_BLOCK4 statement
- * forever statement
- * break ;
- * continue ;
- * return expressionopt ;
- * variable variable-list ;
- * struct struct-decl ;
- * define identifier function-args ;
- * define identifier function-args compound-statement
- * switch ( expression ) statement
- * rpn-line
- * at-line
- * push ( expression )
- * ( expression ) = expression ;
- * expression ;
- * expression :
- */
-
-/* Note: This function does not return with a new token. It is up to the
- * calling routine to handle that.
- */
-static void statement (_SLang_Token_Type *ctok)
-{
- unsigned char type;
-
- if (SLang_Error)
- return;
-
- LLT->parse_level += 1;
-
- switch (ctok->type)
- {
- case OBRACE_TOKEN:
- compound_statement (ctok);
- break;
-
- case IF_TOKEN:
- case IFNOT_TOKEN:
- type = ctok->type;
- get_token (ctok);
- expression_with_parenthesis (ctok);
- block (ctok);
-
- if (ELSE_TOKEN != get_token (ctok))
- {
- compile_token_of_type (type);
- unget_token (ctok);
- break;
- }
- get_token (ctok);
- block (ctok);
- if (type == IF_TOKEN) type = ELSE_TOKEN; else type = NOTELSE_TOKEN;
- compile_token_of_type (type);
- break;
-
- /* case IFNOT_TOKEN: */
- case LOOP_TOKEN:
- case _FOR_TOKEN:
- type = ctok->type;
- get_token (ctok);
- expression_with_parenthesis (ctok);
- block (ctok);
- compile_token_of_type (type);
- break;
-
- case FOREACH_TOKEN:
- get_token (ctok);
- expression_with_parenthesis (ctok);
-
- if (NULL == push_token_list ())
- break;
-
- append_token_of_type (ARG_TOKEN);
- if (ctok->type == USING_TOKEN)
- {
- if (OPAREN_TOKEN != get_token (ctok))
- {
- _SLparse_error ("Expected 'using ('", ctok, 0);
- break;
- }
- get_token (ctok);
- function_args_expression (ctok, 0);
- }
- append_token_of_type (EARG_TOKEN);
-
- compile_token_list ();
-
- block (ctok);
- compile_token_of_type (FOREACH_TOKEN);
- break;
-
- case WHILE_TOKEN:
- get_token (ctok);
- compile_token_of_type (OBRACE_TOKEN);
- expression_with_parenthesis (ctok);
- compile_token_of_type (CBRACE_TOKEN);
- block (ctok);
- compile_token_of_type (WHILE_TOKEN);
- break;
-
- case DO_TOKEN:
- get_token (ctok);
- block (ctok);
-
- if (WHILE_TOKEN != get_token (ctok))
- {
- _SLparse_error("Expecting while", ctok, 0);
- break;
- }
-
- get_token (ctok);
-
- compile_token_of_type (OBRACE_TOKEN);
- expression_with_parenthesis (ctok);
- compile_token_of_type (CBRACE_TOKEN);
- compile_token_of_type (DOWHILE_TOKEN);
- handle_semicolon (ctok);
- break;
-
- case FOR_TOKEN:
-
- /* Look for (exp_opt ; exp_opt ; exp_opt ) */
-
- if (OPAREN_TOKEN != get_token (ctok))
- {
- _SLparse_error("Expecting (.", ctok, 0);
- break;
- }
-
- if (NULL == push_token_list ())
- break;
-
- append_token_of_type (OBRACE_TOKEN);
- if (SEMICOLON_TOKEN != get_token (ctok))
- {
- expression (ctok);
- if (ctok->type != SEMICOLON_TOKEN)
- {
- _SLparse_error("Expecting ;", ctok, 0);
- break;
- }
- }
- append_token_of_type (CBRACE_TOKEN);
-
- append_token_of_type (OBRACE_TOKEN);
- if (SEMICOLON_TOKEN != get_token (ctok))
- {
- expression (ctok);
- if (ctok->type != SEMICOLON_TOKEN)
- {
- _SLparse_error("Expecting ;", ctok, 0);
- break;
- }
- }
- append_token_of_type (CBRACE_TOKEN);
-
- append_token_of_type (OBRACE_TOKEN);
- if (CPAREN_TOKEN != get_token (ctok))
- {
- expression (ctok);
- if (ctok->type != CPAREN_TOKEN)
- {
- _SLparse_error("Expecting ).", ctok, 0);
- break;
- }
- }
- append_token_of_type (CBRACE_TOKEN);
-
- compile_token_list ();
-
- get_token (ctok);
- block (ctok);
- compile_token_of_type (FOR_TOKEN);
- break;
-
- case ERRBLK_TOKEN:
- case EXITBLK_TOKEN:
- case USRBLK0_TOKEN:
- case USRBLK1_TOKEN:
- case USRBLK2_TOKEN:
- case USRBLK3_TOKEN:
- case USRBLK4_TOKEN:
- case FOREVER_TOKEN:
- type = ctok->type;
- get_token (ctok);
- block (ctok);
- compile_token_of_type (type);
- break;
-
- case BREAK_TOKEN:
- case CONT_TOKEN:
- compile_token_of_type (ctok->type);
- get_token (ctok);
- handle_semicolon (ctok);
- break;
-
- case RETURN_TOKEN:
- if (SEMICOLON_TOKEN != get_token (ctok))
- {
- if (NULL == push_token_list ())
- break;
-
- expression (ctok);
-
- if (ctok->type != SEMICOLON_TOKEN)
- {
- _SLparse_error ("Expecting ;", ctok, 0);
- break;
- }
- compile_token_list ();
- }
- compile_token_of_type (RETURN_TOKEN);
- handle_semicolon (ctok);
- break;
-
- case STATIC_TOKEN:
- case PRIVATE_TOKEN:
- case PUBLIC_TOKEN:
- type = ctok->type;
- get_token (ctok);
- if (ctok->type == VARIABLE_TOKEN)
- {
- get_token (ctok);
- variable_list (ctok, type);
- handle_semicolon (ctok);
- break;
- }
- if (ctok->type == DEFINE_TOKEN)
- {
- define_function (ctok, type);
- break;
- }
- _SLparse_error ("Expecting 'variable' or 'define'", ctok, 0);
- break;
-
- case VARIABLE_TOKEN:
- get_token (ctok);
- variable_list (ctok, OBRACKET_TOKEN);
- handle_semicolon (ctok);
- break;
-
- case TYPEDEF_TOKEN:
- get_token (ctok);
- if (NULL == push_token_list ())
- break;
- typedef_definition (ctok);
- compile_token_list ();
-
- handle_semicolon (ctok);
- break;
-
- case DEFINE_TOKEN:
- define_function (ctok, DEFINE_TOKEN);
- break;
-
- case SWITCH_TOKEN:
- get_token (ctok);
- expression_with_parenthesis (ctok);
-
- while ((SLang_Error == 0)
- && (OBRACE_TOKEN == ctok->type))
- {
- compile_token_of_type (OBRACE_TOKEN);
- compound_statement (ctok);
- compile_token_of_type (CBRACE_TOKEN);
- get_token (ctok);
- }
- compile_token_of_type (SWITCH_TOKEN);
- unget_token (ctok);
- break;
-
- case EOF_TOKEN:
- break;
-#if 0
- case PUSH_TOKEN:
- get_token (ctok);
- expression_list_with_parenthesis (ctok);
- handle_semicolon (ctok);
- break;
-#endif
-
- case SEMICOLON_TOKEN:
- handle_semicolon (ctok);
- break;
-
- case RPN_TOKEN:
- if (POUND_TOKEN == get_token (ctok))
- _SLcompile_byte_compiled ();
- else if (ctok->type != EOF_TOKEN)
- rpn_parse_line (ctok);
- break;
-
- case OPAREN_TOKEN: /* multiple assignment */
- try_multiple_assignment (ctok);
- if (ctok->type == COLON_TOKEN)
- compile_token_of_type (COLON_TOKEN);
- else handle_semicolon (ctok);
- break;
-
- default:
-
- if (NULL == push_token_list ())
- break;
-
- expression (ctok);
- compile_token_list ();
-
- if (ctok->type == COLON_TOKEN)
- compile_token_of_type (COLON_TOKEN);
- else handle_semicolon (ctok);
- break;
- }
-
- LLT->parse_level -= 1;
-}
-
-static void block (_SLang_Token_Type *ctok)
-{
- compile_token_of_type (OBRACE_TOKEN);
- statement (ctok);
- compile_token_of_type (CBRACE_TOKEN);
-}
-
-/*
- * statement-list:
- * statement
- * statement-list statement
- */
-static void statement_list (_SLang_Token_Type *ctok)
-{
- while ((SLang_Error == 0)
- && (ctok->type != CBRACE_TOKEN)
- && (ctok->type != EOF_TOKEN))
- {
- statement(ctok);
- get_token (ctok);
- }
-}
-
-/* compound-statement:
- * { statement-list }
- */
-static void compound_statement (_SLang_Token_Type *ctok)
-{
- /* ctok->type is OBRACE_TOKEN here */
- get_token (ctok);
- statement_list(ctok);
- if (CBRACE_TOKEN != ctok->type)
- {
- _SLparse_error ("Expecting '}'", ctok, 0);
- return;
- }
-}
-
-/* This function is only called from statement. */
-static void expression_with_parenthesis (_SLang_Token_Type *ctok)
-{
- if (ctok->type != OPAREN_TOKEN)
- {
- _SLparse_error("Expecting (", ctok, 0);
- return;
- }
-
- if (NULL == push_token_list ())
- return;
-
- get_token (ctok);
- expression (ctok);
-
- if (ctok->type != CPAREN_TOKEN)
- _SLparse_error("Expecting )", ctok, 0);
-
- compile_token_list ();
-
- get_token (ctok);
-}
-
-static void handle_semicolon (_SLang_Token_Type *ctok)
-{
- if ((ctok->type == SEMICOLON_TOKEN)
- || (ctok->type == EOF_TOKEN))
- return;
-
- _SLparse_error ("Expecting ;", ctok, 0);
-}
-
-void _SLparse_start (SLang_Load_Type *llt)
-{
- _SLang_Token_Type ctok;
- SLang_Load_Type *save_llt;
- unsigned int save_use_next_token;
- _SLang_Token_Type save_next_token;
- Token_List_Type *save_list;
-#if _SLANG_HAS_DEBUG_CODE
- int save_last_line_number = Last_Line_Number;
-
- Last_Line_Number = -1;
-#endif
- save_use_next_token = Use_Next_Token;
- save_next_token = Next_Token;
- save_list = Token_List;
- save_llt = LLT;
- LLT = llt;
-
- init_token (&Next_Token);
- Use_Next_Token = 0;
- init_token (&ctok);
- get_token (&ctok);
-
- llt->parse_level = 0;
- statement_list (&ctok);
-
- if ((SLang_Error == 0)
- && (ctok.type != EOF_TOKEN))
- _SLparse_error ("Parse ended prematurely", &ctok, 0);
-
-
- if (SLang_Error)
- {
- if (SLang_Error < 0) /* severe error */
- save_list = NULL;
-
- while (Token_List != save_list)
- {
- if (-1 == pop_token_list (1))
- break; /* ??? when would this happen? */
- }
- }
-
- free_token (&ctok);
- LLT = save_llt;
- if (Use_Next_Token)
- free_token (&Next_Token);
- Use_Next_Token = save_use_next_token;
- Next_Token = save_next_token;
-#if _SLANG_HAS_DEBUG_CODE
- Last_Line_Number = save_last_line_number;
-#endif
-}
-
-/* variable-list:
- * variable-decl
- * variable-decl variable-list
- *
- * variable-decl:
- * identifier
- * identifier = simple-expression
- */
-static void variable_list (_SLang_Token_Type *name_token, unsigned char variable_type)
-{
- int declaring;
- _SLang_Token_Type tok;
-
- if (name_token->type != IDENT_TOKEN)
- {
- _SLparse_error ("Expecting a variable name", name_token, 0);
- return;
- }
-
- declaring = 0;
- do
- {
- if (declaring == 0)
- {
- declaring = 1;
- compile_token_of_type (variable_type);
- }
-
- compile_token (name_token);
-
- init_token (&tok);
- if (ASSIGN_TOKEN == get_token (&tok))
- {
- compile_token_of_type (CBRACKET_TOKEN);
- declaring = 0;
-
- get_token (&tok);
-
- push_token_list ();
- simple_expression (&tok);
- compile_token_list ();
-
- name_token->type = _SCALAR_ASSIGN_TOKEN;
- compile_token (name_token);
- }
-
- free_token (name_token);
- *name_token = tok;
- }
- while ((name_token->type == COMMA_TOKEN)
- && (IDENT_TOKEN == get_token (name_token)));
-
- if (declaring) compile_token_of_type (CBRACKET_TOKEN);
-}
-
-/* struct-declaration:
- * struct { struct-field-list };
- *
- * struct-field-list:
- * struct-field-name , struct-field-list
- * struct-field-name
- *
- * Generates code: "field-name-1" ... "field-name-N" N STRUCT_TOKEN
- */
-static void struct_declaration (_SLang_Token_Type *ctok)
-{
- int n;
- _SLang_Token_Type num_tok;
-
- if (ctok->type != OBRACE_TOKEN)
- {
- _SLparse_error ("Expecting {", ctok, 0);
- return;
- }
-
- n = 0;
- while (IDENT_TOKEN == get_token (ctok))
- {
- n++;
- ctok->type = STRING_TOKEN;
- append_token (ctok);
- if (COMMA_TOKEN != get_token (ctok))
- break;
- }
-
- if (ctok->type != CBRACE_TOKEN)
- {
- _SLparse_error ("Expecting }", ctok, 0);
- return;
- }
- if (n == 0)
- {
- _SLparse_error ("struct requires at least 1 field", ctok, 0);
- return;
- }
-
- init_token (&num_tok);
- num_tok.type = INT_TOKEN;
- num_tok.v.long_val = n;
- append_token (&num_tok);
- append_token_of_type (STRUCT_TOKEN);
-
- get_token (ctok);
-}
-
-/* struct-declaration:
- * typedef struct { struct-field-list } Type_Name;
- *
- * struct-field-list:
- * struct-field-name , struct-field-list
- * struct-field-name
- *
- * Generates code: "field-name-1" ... "field-name-N" N STRUCT_TOKEN typedef
- */
-static void typedef_definition (_SLang_Token_Type *t)
-{
-
- if (t->type != STRUCT_TOKEN)
- {
- _SLparse_error ("Expecting `struct'", t, 0);
- return;
- }
- get_token (t);
-
- struct_declaration (t);
- if (t->type != IDENT_TOKEN)
- {
- _SLparse_error ("Expecting identifier", t, 0);
- return;
- }
-
- t->type = STRING_TOKEN;
- append_token (t);
- append_token_of_type (TYPEDEF_TOKEN);
-
- get_token (t);
-}
-
-/* function-args:
- * ( args-dec-opt )
- *
- * args-decl-opt:
- * identifier
- * args-decl , identifier
- */
-static void define_function_args (_SLang_Token_Type *ctok)
-{
- if (CPAREN_TOKEN == get_token (ctok))
- {
- get_token (ctok);
- return;
- }
-
- compile_token_of_type(OBRACKET_TOKEN);
-
- while ((SLang_Error == 0)
- && (ctok->type == IDENT_TOKEN))
- {
- compile_token (ctok);
- if (COMMA_TOKEN != get_token (ctok))
- break;
-
- get_token (ctok);
- }
-
- if (CPAREN_TOKEN != ctok->type)
- {
- _SLparse_error("Expecting )", ctok, 0);
- return;
- }
- compile_token_of_type(CBRACKET_TOKEN);
-
- get_token (ctok);
-}
-
-void try_multiple_assignment (_SLang_Token_Type *ctok)
-{
- /* This is called with ctok->type == OPAREN_TOKEN. We have no idea
- * what follows this. There are various possibilities such as:
- * @ () = x;
- * @ ( expression ) = x;
- * @ ( expression ) ;
- * @ ( expression ) OP expression;
- * @ ( expression ) [expression] = expression;
- * and only the first two constitute a multiple assignment. The last
- * two forms create the difficulty.
- *
- * Here is the plan. First parse (expression) and then check next token.
- * If it is an equal operator, then it will be parsed as a multiple
- * assignment. In fact, that is the easy part.
- *
- * The hard part stems from the fact that by parsing (expression), we
- * have effectly truncated the parse if (expression) is part of a binary
- * or unary expression. Somehow, the parsing must be resumed. The trick
- * here is to use a dummy literal that generates no code: NO_OP_LITERAL
- * Using it, we just call 'expression' and proceed.
- */
-
- if (NULL == push_token_list ())
- return;
-
- get_token (ctok);
-
- if (ctok->type != CPAREN_TOKEN)
- {
- expression_with_commas (ctok, 1);
- if (ctok->type != CPAREN_TOKEN)
- {
- _SLparse_error ("Expecting )", ctok, 0);
- return;
- }
- }
-
- switch (get_token (ctok))
- {
- case ASSIGN_TOKEN:
- case PLUSEQS_TOKEN:
- case MINUSEQS_TOKEN:
- case TIMESEQS_TOKEN:
- case DIVEQS_TOKEN:
- case BOREQS_TOKEN:
- case BANDEQS_TOKEN:
- do_multiple_assignment (ctok);
- pop_token_list (1);
- break;
-
- default:
- unget_token (ctok);
- ctok->type = NO_OP_LITERAL;
- expression (ctok);
- compile_token_list ();
- break;
- }
-}
-
-/* Note: expression never gets compiled directly. Rather, it gets
- * appended to the token list and then compiled by a calling
- * routine.
- */
-
-/* expression:
- * simple_expression
- * simple-expression , expression
- * <none>
- */
-static void expression_with_commas (_SLang_Token_Type *ctok, int save_comma)
-{
- while (SLang_Error == 0)
- {
- if (ctok->type != COMMA_TOKEN)
- {
- if (ctok->type == CPAREN_TOKEN)
- return;
-
- simple_expression (ctok);
-
- if (ctok->type != COMMA_TOKEN)
- break;
- }
- if (save_comma) append_token (ctok);
- get_token (ctok);
- }
-}
-
-static void expression (_SLang_Token_Type *ctok)
-{
- expression_with_commas (ctok, 0);
-}
-
-/* priority levels of binary operations */
-static unsigned char Binop_Level[] =
-{
-/* ADD_TOKEN */ 2,
-/* SUB_TOKEN */ 2,
-/* MUL_TOKEN */ 1,
-/* DIV_TOKEN */ 1,
-/* LT_TOKEN */ 4,
-/* LE_TOKEN */ 4,
-/* GT_TOKEN */ 4,
-/* GE_TOKEN */ 4,
-/* EQ_TOKEN */ 5,
-/* NE_TOKEN */ 5,
-/* AND_TOKEN */ 9,
-/* OR_TOKEN */ 10,
-/* MOD_TOKEN */ 1,
-/* BAND_TOKEN */ 6,
-/* SHL_TOKEN */ 3,
-/* SHR_TOKEN */ 3,
-/* BXOR_TOKEN */ 7,
-/* BOR_TOKEN */ 8,
-/* POUND_TOKEN */ 1 /* Matrix Multiplication */
-};
-
-/* % Note: simple-expression groups operators OP1 at same level. The
- * % actual implementation will not do this.
- * simple-expression:
- * unary-expression
- * binary-expression BINARY-OP unary-expression
- * andelse xxelse-expression-list
- * orelse xxelse-expression-list
- *
- * xxelse-expression-list:
- * { expression }
- * xxelse-expression-list { expression }
- * binary-expression:
- * unary-expression
- * unary-expression BINARY-OP binary-expression
- */
-static void simple_expression (_SLang_Token_Type *ctok)
-{
- unsigned char type;
- unsigned char op_stack [64];
- unsigned char level_stack [64];
- unsigned char level;
- unsigned int op_num;
-
- switch (ctok->type)
- {
- case ANDELSE_TOKEN:
- case ORELSE_TOKEN:
- type = ctok->type;
- if (OBRACE_TOKEN != get_token (ctok))
- {
- _SLparse_error ("Expecting '{'", ctok, 0);
- return;
- }
-
- while (ctok->type == OBRACE_TOKEN)
- {
- append_token (ctok);
- get_token (ctok);
- expression (ctok);
- if (CBRACE_TOKEN != ctok->type)
- {
- _SLparse_error("Expecting }", ctok, 0);
- return;
- }
- append_token (ctok);
- get_token (ctok);
- }
- append_token_of_type (type);
- return;
-
- /* avoid unary-expression if possible */
- case STRING_TOKEN:
- append_token (ctok);
- get_token (ctok);
- break;
-
- default:
- unary_expression (ctok);
- break;
- }
-
- if (SEMICOLON_TOKEN == (type = ctok->type))
- return;
-
- op_num = 0;
-
- while ((SLang_Error == 0)
- && (IS_BINARY_OP(type)))
- {
- level = Binop_Level[type - FIRST_BINARY_OP];
-
- while ((op_num > 0) && (level_stack [op_num - 1] <= level))
- append_token_of_type (op_stack [--op_num]);
-
- if (op_num >= sizeof (op_stack) - 1)
- {
- _SLparse_error ("Binary op stack overflow", ctok, 0);
- return;
- }
-
- op_stack [op_num] = type;
- level_stack [op_num] = level;
- op_num++;
-
- get_token (ctok);
- unary_expression (ctok);
- type = ctok->type;
- }
-
- while (op_num > 0)
- append_token_of_type(op_stack[--op_num]);
-}
-
-/* unary-expression:
- * postfix-expression
- * ++ postfix-expression
- * -- postfix-expression
- * case unary-expression
- * OP3 unary-expression
- * (OP3: + - ~ & not @)
- *
- * Note: This grammar permits: case case case WHATEVER
- */
-static void unary_expression (_SLang_Token_Type *ctok)
-{
- unsigned char save_unary_ops [16];
- unsigned int num_unary_ops;
- unsigned char type;
- _SLang_Token_Type *last_token;
-
- num_unary_ops = 0;
- while (SLang_Error == 0)
- {
- type = ctok->type;
-
- switch (type)
- {
- case PLUSPLUS_TOKEN:
- case MINUSMINUS_TOKEN:
- get_token (ctok);
- postfix_expression (ctok);
- check_for_lvalue (type, NULL);
- goto out_of_switch;
-
- case ADD_TOKEN:
- get_token (ctok); /* skip it-- it's unary here */
- break;
-
- case SUB_TOKEN:
- (void) get_token (ctok);
- if (IS_INTEGER_TOKEN (ctok->type))
- {
- ctok->v.long_val = -ctok->v.long_val;
- break;
- }
-
- if (num_unary_ops == 16)
- goto stack_overflow_error;
- save_unary_ops [num_unary_ops++] = CHS_TOKEN;
- break;
-
- case DEREF_TOKEN:
- case BNOT_TOKEN:
- case NOT_TOKEN:
- case CASE_TOKEN:
- if (num_unary_ops == 16)
- goto stack_overflow_error;
-
- save_unary_ops [num_unary_ops++] = type;
- get_token (ctok);
- break;
-
- /* Try to avoid ->postfix_expression->primary_expression
- * subroutine calls.
- */
- case STRING_TOKEN:
- append_token (ctok);
- get_token (ctok);
- goto out_of_switch;
-
- default:
- postfix_expression (ctok);
- goto out_of_switch;
- }
- }
-
- out_of_switch:
- if (num_unary_ops == 0)
- return;
-
- if ((DEREF_TOKEN == save_unary_ops[num_unary_ops - 1])
- && (NULL != (last_token = get_last_token ()))
- && (IS_ASSIGN_TOKEN(last_token->type)))
- {
- /* FIXME: Priority=medium
- * This needs generalized so that things like @a.y = 1 will work properly.
- */
- if ((num_unary_ops != 1)
- || (last_token->type != _SCALAR_ASSIGN_TOKEN))
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Only derefence assignments to simple variables are possible");
- return;
- }
-
- last_token->type += (_DEREF_ASSIGN_TOKEN - _SCALAR_ASSIGN_TOKEN);
- return;
- }
-
- while (num_unary_ops)
- {
- num_unary_ops--;
- append_token_of_type (save_unary_ops [num_unary_ops]);
- }
- return;
-
- stack_overflow_error:
- _SLparse_error ("Too many unary operators.", ctok, 0);
-}
-
-static int combine_namespace_tokens (_SLang_Token_Type *a, _SLang_Token_Type *b)
-{
- char *sa, *sb, *sc;
- unsigned int lena, lenb;
- unsigned long hash;
-
- /* This is somewhat of a hack. Combine the TWO identifier names
- * (NAMESPACE) and (name) into the form NAMESPACE->name. Then when the
- * byte compiler compiles the object it will not be found. It will then
- * check for this hack and make the appropriate namespace lookup.
- */
-
- sa = a->v.s_val;
- sb = b->v.s_val;
-
- lena = strlen (sa);
- lenb = strlen (sb);
-
- sc = SLmalloc (lena + lenb + 3);
- if (sc == NULL)
- return -1;
-
- strcpy (sc, sa);
- strcpy (sc + lena, "->");
- strcpy (sc + lena + 2, sb);
-
- sb = _SLstring_make_hashed_string (sc, lena + lenb + 2, &hash);
- SLfree (sc);
- if (sb == NULL)
- return -1;
-
- /* I can free this string because no other token should be referencing it.
- * (num_refs == 1).
- */
- _SLfree_hashed_string (sa, lena, a->hash);
- a->v.s_val = sb;
- a->hash = hash;
-
- return 0;
-}
-
-static void append_identifier_token (_SLang_Token_Type *ctok)
-{
- _SLang_Token_Type *last_token;
-
- append_token (ctok);
-
- if (NAMESPACE_TOKEN != get_token (ctok))
- return;
-
- if (IDENT_TOKEN != get_token (ctok))
- {
- _SLparse_error ("Expecting name-space identifier", ctok, 0);
- return;
- }
-
- last_token = get_last_token ();
- if (-1 == combine_namespace_tokens (last_token, ctok))
- return;
-
- (void) get_token (ctok);
-}
-
-static int get_identifier_expr_token (_SLang_Token_Type *ctok)
-{
- _SLang_Token_Type next_token;
-
- if (IDENT_TOKEN != get_identifier_token (ctok))
- return -1;
-
- init_token (&next_token);
- if (NAMESPACE_TOKEN != get_token (&next_token))
- {
- unget_token (&next_token);
- return IDENT_TOKEN;
- }
-
- if (IDENT_TOKEN != get_identifier_token (&next_token))
- {
- free_token (&next_token);
- return -1;
- }
-
- if (-1 == combine_namespace_tokens (ctok, &next_token))
- {
- free_token (&next_token);
- return -1;
- }
- free_token (&next_token);
- return IDENT_TOKEN;
-}
-
-/* postfix-expression:
- * primary-expression
- * postfix-expression [ expression ]
- * postfix-expression ( function-args-expression )
- * postfix-expression . identifier
- * postfix-expression ^ unary-expression
- * postfix-expression ++
- * postfix-expression --
- * postfix-expression = simple-expression
- * postfix-expression += simple-expression
- * postfix-expression -= simple-expression
- *
- * primary-expression:
- * literal
- * identifier-expr
- * ( expression_opt )
- * [ inline-array-expression ]
- * &identifier-expr
- * struct-definition
- * __tmp(identifier-expr)
- *
- * identifier-expr:
- * identifier
- * identifier->identifier
- */
-static void postfix_expression (_SLang_Token_Type *ctok)
-{
- unsigned int start_pos, end_pos;
- unsigned char type;
-
- if (Token_List == NULL)
- return;
-
- start_pos = Token_List->len;
-
- switch (ctok->type)
- {
- case IDENT_TOKEN:
- append_identifier_token (ctok);
- break;
-
- case CHAR_TOKEN:
- case SHORT_TOKEN:
- case INT_TOKEN:
- case LONG_TOKEN:
- case UCHAR_TOKEN:
- case USHORT_TOKEN:
- case UINT_TOKEN:
- case ULONG_TOKEN:
- case STRING_TOKEN:
- case BSTRING_TOKEN:
-#ifdef SLANG_HAS_FLOAT
- case DOUBLE_TOKEN:
- case FLOAT_TOKEN:
-#endif
-#ifdef SLANG_HAS_COMPLEX
- case COMPLEX_TOKEN:
-#endif
- append_token (ctok);
- get_token (ctok);
- break;
-
- case OPAREN_TOKEN:
- if (CPAREN_TOKEN != get_token (ctok))
- {
- expression (ctok);
- if (ctok->type != CPAREN_TOKEN)
- _SLparse_error("Expecting )", ctok, 0);
- }
- get_token (ctok);
- break;
-
- case BAND_TOKEN:
- if (IDENT_TOKEN != get_identifier_expr_token (ctok))
- break;
-
- ctok->type = _REF_TOKEN;
- append_token (ctok);
- get_token (ctok);
- break;
-
- case OBRACKET_TOKEN:
- get_token (ctok);
- inline_array_expression (ctok);
- break;
-
- case NO_OP_LITERAL:
- /* This token was introduced by try_multiple_assignment. There,
- * a new token_list was pushed and (expression) was evaluated.
- * NO_OP_LITERAL represents the result of expression. However,
- * we need to tweak the start_pos variable to point to the beginning
- * of the token list to complete the equivalence.
- */
- start_pos = 0;
- get_token (ctok);
- break;
-
- case STRUCT_TOKEN:
- get_token (ctok);
- struct_declaration (ctok);
- break;
-
- case TMP_TOKEN:
- get_token (ctok);
- if (ctok->type == OPAREN_TOKEN)
- {
- if (IDENT_TOKEN == get_identifier_expr_token (ctok))
- {
- ctok->type = TMP_TOKEN;
- append_token (ctok);
- get_token (ctok);
- if (ctok->type == CPAREN_TOKEN)
- {
- get_token (ctok);
- break;
- }
- }
- }
- _SLparse_error ("Expecting form __tmp(NAME)", ctok, 0);
- break;
-
- default:
- if (IS_INTERNAL_FUNC(ctok->type))
- {
- append_token (ctok);
- get_token (ctok);
- }
- else
- _SLparse_error("Expecting a PRIMARY", ctok, 0);
- }
-
- while (SLang_Error == 0)
- {
- end_pos = Token_List->len;
- type = ctok->type;
- switch (type)
- {
- case OBRACKET_TOKEN: /* X[args] ==> [args] X ARRAY */
- get_token (ctok);
- append_token_of_type (ARG_TOKEN);
- if (ctok->type != CBRACKET_TOKEN)
- array_index_expression (ctok);
-
- if (ctok->type != CBRACKET_TOKEN)
- {
- _SLparse_error ("Expecting ']'", ctok, 0);
- return;
- }
- get_token (ctok);
- /* append_token_of_type (EARG_TOKEN); -- ARRAY_TOKEN implicitely does this */
- token_list_element_exchange (start_pos, end_pos);
- append_token_of_type (ARRAY_TOKEN);
- break;
-
- case OPAREN_TOKEN:
- /* f(args) ==> args f */
- if (CPAREN_TOKEN != get_token (ctok))
- {
- function_args_expression (ctok, 1);
- token_list_element_exchange (start_pos, end_pos);
- }
- else get_token (ctok);
- break;
-
- case DOT_TOKEN:
- /* S.a ==> "a" S DOT
- * This means that if S is X[b], then X[b].a ==> a b X ARRAY DOT
- * and f(a).X[b].c ==> "c" b "X" a f . ARRAY .
- * Also, f(a).X[b] = g(x); ==> x g b "X" a f .
- */
- if (IDENT_TOKEN != get_identifier_token (ctok))
- return;
-
- ctok->type = DOT_TOKEN;
- append_token (ctok);
- get_token (ctok);
- break;
-
- case PLUSPLUS_TOKEN:
- case MINUSMINUS_TOKEN:
- check_for_lvalue (type, NULL);
- get_token (ctok);
- break;
-
- case ASSIGN_TOKEN:
- case PLUSEQS_TOKEN:
- case MINUSEQS_TOKEN:
- case TIMESEQS_TOKEN:
- case DIVEQS_TOKEN:
- case BOREQS_TOKEN:
- case BANDEQS_TOKEN:
- check_for_lvalue (type, NULL);
- get_token (ctok);
- simple_expression (ctok);
- token_list_element_exchange (start_pos, end_pos);
- break;
-
- case POW_TOKEN:
- get_token (ctok);
- unary_expression (ctok);
- append_token_of_type (POW_TOKEN);
- break;
-
- default:
- return;
- }
- }
-}
-
-static void function_args_expression (_SLang_Token_Type *ctok, int handle_num_args)
-{
- unsigned char last_type, this_type;
-
- if (handle_num_args) append_token_of_type (ARG_TOKEN);
-
- last_type = COMMA_TOKEN;
-
- while (SLang_Error == 0)
- {
- this_type = ctok->type;
-
- switch (this_type)
- {
- case COMMA_TOKEN:
- if (last_type == COMMA_TOKEN)
- append_token_of_type (_NULL_TOKEN);
- get_token (ctok);
- break;
-
- case CPAREN_TOKEN:
- if (last_type == COMMA_TOKEN)
- append_token_of_type (_NULL_TOKEN);
- if (handle_num_args) append_token_of_type (EARG_TOKEN);
- get_token (ctok);
- return;
-
- default:
- simple_expression (ctok);
- if ((ctok->type != COMMA_TOKEN)
- && (ctok->type != CPAREN_TOKEN))
- {
- _SLparse_error ("Expecting ')'", ctok, 0);
- break;
- }
- }
- last_type = this_type;
- }
-}
-
-static int check_for_lvalue (unsigned char eqs_type, _SLang_Token_Type *ctok)
-{
- unsigned char type;
-
- if ((ctok == NULL)
- && (NULL == (ctok = get_last_token ())))
- return -1;
-
- type = ctok->type;
-
- eqs_type -= ASSIGN_TOKEN;
-
- if (type == IDENT_TOKEN)
- eqs_type += _SCALAR_ASSIGN_TOKEN;
- else if (type == ARRAY_TOKEN)
- eqs_type += _ARRAY_ASSIGN_TOKEN;
- else if (type == DOT_TOKEN)
- eqs_type += _STRUCT_ASSIGN_TOKEN;
- else
- {
- _SLparse_error ("Expecting LVALUE", ctok, 0);
- return -1;
- }
-
- ctok->type = eqs_type;
- return 0;
-}
-
-static void array_index_expression (_SLang_Token_Type *ctok)
-{
- unsigned int num_commas;
-
- num_commas = 0;
- while (1)
- {
- switch (ctok->type)
- {
- case COLON_TOKEN:
- if (num_commas)
- _SLparse_error ("Misplaced ':'", ctok, 0);
- return;
-
- case TIMES_TOKEN:
- append_token_of_type (_INLINE_WILDCARD_ARRAY_TOKEN);
- get_token (ctok);
- break;
-
- case COMMA_TOKEN:
- _SLparse_error ("Misplaced ','", ctok, 0);
- return;
-
- default:
- simple_expression (ctok);
- }
-
- if (ctok->type != COMMA_TOKEN)
- return;
- num_commas++;
- get_token (ctok);
- }
-}
-
-/* inline-array-expression:
- * array_index_expression
- * simple_expression : simple_expression
- * simple_expression : simple_expression : simple_expression
- */
-static void inline_array_expression (_SLang_Token_Type *ctok)
-{
- int num_colons = 0;
-
- append_token_of_type (ARG_TOKEN);
-
- if (ctok->type == COLON_TOKEN) /* [:...] */
- append_token_of_type (_NULL_TOKEN);
- else if (ctok->type != CBRACKET_TOKEN)
- array_index_expression (ctok);
-
- if (ctok->type == COLON_TOKEN)
- {
- num_colons++;
- if ((COLON_TOKEN == get_token (ctok))
- || (ctok->type == CBRACKET_TOKEN))
- append_token_of_type (_NULL_TOKEN);
- else
- simple_expression (ctok);
-
- if (ctok->type == COLON_TOKEN)
- {
- num_colons++;
- get_token (ctok);
- simple_expression (ctok);
- }
- }
-
- if (ctok->type != CBRACKET_TOKEN)
- {
- _SLparse_error ("Expecting ']'", ctok, 0);
- return;
- }
-
- /* append_token_of_type (EARG_TOKEN); */
- if (num_colons)
- append_token_of_type (_INLINE_IMPLICIT_ARRAY_TOKEN);
- else
- append_token_of_type (_INLINE_ARRAY_TOKEN);
- get_token (ctok);
-}
-
-static void do_multiple_assignment (_SLang_Token_Type *ctok)
-{
- _SLang_Token_Type *s;
- unsigned int i, k, len;
- unsigned char assign_type;
-
- assign_type = ctok->type;
-
- /* The LHS token list has already been pushed. Here we do the RHS
- * so push to another token list, process it, then come back to
- * LHS for assignment.
- */
- if (NULL == push_token_list ())
- return;
-
- get_token (ctok);
- expression (ctok);
- compile_token_list ();
-
- if (SLang_Error)
- return;
-
- /* Finally compile the LHS of the assignment expression
- * that has been saved.
- */
- s = Token_List->stack;
- len = Token_List->len;
-
- if (len == 0)
- {
- compile_token_of_type (POP_TOKEN);
- return;
- }
-
- while (len > 0)
- {
- /* List is of form:
- * a , b, c d e, f , g , , , h ,
- * The missing expressions will be replaced by a POP
- * ,,a
- */
-
- /* Start from back looking for a COMMA */
- k = len - 1;
- if (s[k].type == COMMA_TOKEN)
- {
- compile_token_of_type (POP_TOKEN);
- len = k;
- continue;
- }
-
- if (-1 == check_for_lvalue (assign_type, s + k))
- return;
-
- i = 0;
- while (1)
- {
- if (s[k].type == COMMA_TOKEN)
- {
- i = k + 1;
- break;
- }
-
- if (k == 0)
- break;
-
- k--;
- }
-
- while (i < len)
- {
- compile_token (s + i);
- i++;
- }
-
- len = k;
- }
-
- if (s[0].type == COMMA_TOKEN)
- compile_token_of_type (POP_TOKEN);
-}
-
diff --git a/mdk-stage1/slang/slpath.c b/mdk-stage1/slang/slpath.c
deleted file mode 100644
index 831bd34df..000000000
--- a/mdk-stage1/slang/slpath.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/* Pathname and filename functions */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#ifdef HAVE_IO_H
-# include <io.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <signal.h>
-#include <time.h>
-
-#include <errno.h>
-#include <string.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-/* In this file, all file names are assumed to be specified in the Unix
- * format, or in the native format.
- *
- * Aboout VMS:
- * VMS pathnames are a mess. In general, they look like
- * node::device:[dir.dir]file.ext;version
- * and I do not know of a well-defined Unix representation for them. So,
- * I am going to punt and encourage users to stick to the native
- * representation.
- */
-
-#if defined(IBMPC_SYSTEM)
-# define PATH_SEP '\\'
-# define DRIVE_SPECIFIER ':'
-# define SEARCH_PATH_DELIMITER ';'
-# define THIS_DIR_STRING "."
-#else
-# if defined(VMS)
-# define PATH_SEP ']'
-# define DRIVE_SPECIFIER ':'
-# define SEARCH_PATH_DELIMITER ' '
-# define THIS_DIR_STRING "[]" /* Is this correct?? */
-# else
-# define PATH_SEP '/'
-# define UNIX_PATHNAMES_OK
-# define SEARCH_PATH_DELIMITER ':'
-# define THIS_DIR_STRING "."
-# endif
-#endif
-
-#ifdef UNIX_PATHNAMES_OK
-# define IS_PATH_SEP(x) ((x) == PATH_SEP)
-#else
-# define IS_PATH_SEP(x) (((x) == PATH_SEP) || ((x) == '/'))
-#endif
-
-/* If file is /a/b/c/basename, this function returns a pointer to basename */
-char *SLpath_basename (char *file)
-{
- char *b;
-
- if (file == NULL) return NULL;
- b = file + strlen (file);
-
- while (b != file)
- {
- b--;
- if (IS_PATH_SEP(*b))
- return b + 1;
-#ifdef DRIVE_SPECIFIER
- if (*b == DRIVE_SPECIFIER)
- return b + 1;
-#endif
- }
-
- return b;
-}
-
-/* Returns a malloced string */
-char *SLpath_pathname_sans_extname (char *file)
-{
- char *b;
-
- file = SLmake_string (file);
- if (file == NULL)
- return NULL;
-
- b = file + strlen (file);
-
- while (b != file)
- {
- b--;
- if (*b == '.')
- {
- *b = 0;
- return file;
- }
- }
-
- return file;
-}
-
-/* If path looks like: A/B/C/D/whatever, it returns A/B/C/D as a malloced
- * string.
- */
-char *SLpath_dirname (char *file)
-{
- char *b;
-
- if (file == NULL) return NULL;
- b = file + strlen (file);
-
- while (b != file)
- {
- b--;
- if (IS_PATH_SEP(*b))
- {
- if (b == file) b++;
- break;
- }
-
-#ifdef DRIVE_SPECIFIER
- if (*b == DRIVE_SPECIFIER)
- {
- b++;
- break;
- }
-#endif
- }
-
- if (b == file)
- return SLmake_string (THIS_DIR_STRING);
-
- return SLmake_nstring (file, (unsigned int) (b - file));
-}
-
-/* Note: VMS filenames also contain version numbers. The caller will have
- * to deal with that.
- *
- * The extension includes the '.'. If no extension is present, "" is returned.
- */
-char *SLpath_extname (char *file)
-{
- char *b;
-
- if (NULL == (file = SLpath_basename (file)))
- return NULL;
-
- b = file + strlen (file);
- while (b != file)
- {
- b--;
- if (*b == '.')
- return b;
- }
-
- if (*b == '.')
- return b;
-
- /* Do not return a literal "" */
- return file + strlen (file);
-}
-
-#ifdef IBMPC_SYSTEM
-static void convert_slashes (char *f)
-{
- while (*f)
- {
- if (*f == '/') *f = PATH_SEP;
- f++;
- }
-}
-#endif
-
-int SLpath_is_absolute_path (char *name)
-{
-#ifdef UNIX_PATHNAMES_OK
- return (*name == '/');
-#else
- if (IS_PATH_SEP (*name))
- return 1;
-
-# ifdef DRIVE_SPECIFIER
- /* Look for a drive specifier */
- while (*name)
- {
- if (*name == DRIVE_SPECIFIER)
- return 1;
-
- name++;
- }
-# endif
-
- return 0;
-#endif
-}
-
-/* This returns a MALLOCED string */
-char *SLpath_dircat (char *dir, char *name)
-{
- unsigned int len, dirlen;
- char *file;
-#ifndef VMS
- int requires_fixup;
-#endif
-
- if (name == NULL)
- name = "";
-
- if ((dir == NULL) || (SLpath_is_absolute_path (name)))
- dir = "";
-
- /* Both VMS and MSDOS have default directories associated with each drive.
- * That is, the meaning of something like C:X depends upon more than just
- * the syntax of the string. Since this concept has more power under VMS
- * it will be honored here. However, I am going to treat C:X as C:\X
- * under MSDOS.
- *
- * Note!!!
- * VMS has problems of its own regarding path names, so I am simply
- * going to strcat. Hopefully the VMS RTL is smart enough to deal with
- * the result.
- */
- dirlen = strlen (dir);
-#ifndef VMS
- requires_fixup = (dirlen && (0 == IS_PATH_SEP(dir[dirlen - 1])));
-#endif
-
- len = dirlen + strlen (name) + 2;
- if (NULL == (file = SLmalloc (len)))
- return NULL;
-
- strcpy (file, dir);
-
-#ifndef VMS
- if (requires_fixup)
- file[dirlen++] = PATH_SEP;
-#endif
-
- strcpy (file + dirlen, name);
-
-#if defined(IBMPC_SYSTEM)
- convert_slashes (file);
-#endif
-
- return file;
-}
-
-int SLpath_file_exists (char *file)
-{
- struct stat st;
- int m;
-
-#if defined(__os2__) && !defined(S_IFMT)
-/* IBM VA3 doesn't declare S_IFMT */
-# define S_IFMT (S_IFDIR | S_IFCHR | S_IFREG)
-#endif
-
-#ifdef _S_IFDIR
-# ifndef S_IFDIR
-# define S_IFDIR _S_IFDIR
-# endif
-#endif
-
-#ifndef S_ISDIR
-# ifdef S_IFDIR
-# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-# else
-# define S_ISDIR(m) 0
-# endif
-#endif
-
- if (file == NULL)
- return -1;
-
- if (stat(file, &st) < 0) return 0;
- m = st.st_mode;
-
- if (S_ISDIR(m)) return (2);
- return 1;
-}
-
-char *SLpath_find_file_in_path (char *path, char *name)
-{
- unsigned int max_path_len;
- unsigned int this_path_len;
- char *file, *dir;
- char *p;
- unsigned int nth;
-
- if ((path == NULL) || (*path == 0)
- || (name == NULL) || (*name == 0))
- return NULL;
-
- max_path_len = 0;
- this_path_len = 0;
- p = path;
- while (*p != 0)
- {
- if (*p++ == SEARCH_PATH_DELIMITER)
- {
- if (this_path_len > max_path_len) max_path_len = this_path_len;
- this_path_len = 0;
- }
- else this_path_len++;
- }
- if (this_path_len > max_path_len) max_path_len = this_path_len;
- max_path_len++;
-
- if (NULL == (dir = SLmalloc (max_path_len)))
- return NULL;
-
- nth = 0;
- while (-1 != SLextract_list_element (path, nth, SEARCH_PATH_DELIMITER,
- dir, max_path_len))
- {
- nth++;
- if (*dir == 0)
- continue;
-
- if (NULL == (file = SLpath_dircat (dir, name)))
- {
- SLfree (dir);
- return NULL;
- }
-
- if (1 == SLpath_file_exists (file))
- {
- SLfree (dir);
- return file;
- }
-
- SLfree (file);
- }
-
- SLfree (dir);
- return NULL;
-}
-
diff --git a/mdk-stage1/slang/slposdir.c b/mdk-stage1/slang/slposdir.c
deleted file mode 100644
index 33799e574..000000000
--- a/mdk-stage1/slang/slposdir.c
+++ /dev/null
@@ -1,1057 +0,0 @@
-/* file intrinsics for S-Lang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#if defined(__unix__) || (defined (__os2__) && defined (__EMX__))
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_IO_H
-# include <io.h> /* for chmod */
-#endif
-
-#if defined(__BORLANDC__)
-# include <process.h>
-# include <dos.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_FCNTL_H
-# include <sys/fcntl.h>
-#endif
-
-#ifdef __unix__
-# include <sys/file.h>
-#endif
-
-#if defined(__BORLANDC__)
-# include <dir.h>
-#endif
-
-#if defined(_MSC_VER)
-# include <io.h>
-#endif
-
-#if defined(__DECC) && defined(VMS)
-# include <unixio.h>
-# include <unixlib.h>
-#endif
-
-#ifdef VMS
-# include <stat.h>
-#else
-# include <sys/stat.h>
-#endif
-
-#if defined(VMS)
-# define USE_LISTDIR_INTRINSIC 0
-#else
-# define USE_LISTDIR_INTRINSIC 1
-#endif
-
-#if USE_LISTDIR_INTRINSIC
-
-#if defined(__WIN32__)
-# include <windows.h>
-#else
-# if defined(__OS2__) && defined(__IBMC__)
-# define INCL_DOS
-# define INCL_ERRORS
-# include <os2.h>
-# include <direct.h>
-# include <ctype.h>
-# else
-# ifdef HAVE_DIRENT_H
-# include <dirent.h>
-# else
-# ifdef HAVE_DIRECT_H
-# include <direct.h>
-# else
-# define dirent direct
-# define NEED_D_NAMLEN
-# if HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-# include <ndir.h>
-# endif
-# endif
-# endif
-# endif
-#endif
-
-#endif /* USE_LISTDIR_INTRINSIC */
-
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-static int push_stat_struct (struct stat *st, int opt_attrs)
-{
- char *field_names [12];
- unsigned char field_types[12];
- VOID_STAR field_values [12];
- int int_values [12];
- unsigned int i;
-
- field_names [0] = "st_dev"; int_values [0] = (int) st->st_dev;
- field_names [1] = "st_ino"; int_values [1] = (int) st->st_ino;
- field_names [2] = "st_mode"; int_values [2] = (int) st->st_mode;
- field_names [3] = "st_nlink"; int_values [3] = (int) st->st_nlink;
- field_names [4] = "st_uid"; int_values [4] = (int) st->st_uid;
- field_names [5] = "st_gid"; int_values [5] = (int) st->st_gid;
- field_names [6] = "st_rdev"; int_values [6] = (int) st->st_rdev;
- field_names [7] = "st_size"; int_values [7] = (int) st->st_size;
- field_names [8] = "st_atime"; int_values [8] = (int) st->st_atime;
- field_names [9] = "st_mtime"; int_values [9] = (int) st->st_mtime;
- field_names [10] = "st_ctime"; int_values [10] = (int) st->st_ctime;
-
- field_names [11] = "st_opt_attrs"; int_values[11] = opt_attrs;
-
- for (i = 0; i < 12; i++)
- {
- field_types [i] = SLANG_INT_TYPE;
- field_values [i] = (VOID_STAR) (int_values + i);
- }
-
- return SLstruct_create_struct (12, field_names, field_types, field_values);
-}
-
-static void stat_cmd (char *file)
-{
- struct stat st;
- int status;
- int opt_attrs;
-
- status = stat (file, &st);
-
-#if defined(__MSDOS__) || defined(__WIN32__)
- if (status == -1)
- {
- unsigned int len = strlen (file);
- if (len && ((file[len-1] == '\\') || (file[len-1] == '/')))
- {
- file = SLmake_nstring (file, len-1);
- if (file == NULL)
- return;
-
- status = stat (file, &st);
- SLfree (file);
- }
- }
-#endif
- if (status == -1)
- {
- _SLerrno_errno = errno;
- SLang_push_null ();
- return;
- }
-
-#ifdef __WIN32__
- opt_attrs = GetFileAttributes (file);
-#else
- opt_attrs = 0;
-#endif
-
- push_stat_struct (&st, opt_attrs);
-}
-
-static void lstat_cmd (char *file)
-{
-#ifdef HAVE_LSTAT
- struct stat st;
- int opt_attrs;
-
- if (-1 == lstat (file, &st))
- {
- _SLerrno_errno = errno;
- SLang_push_null ();
- return;
- }
-
-#ifdef __WIN32__
- opt_attrs = GetFileAttributes (file);
-#else
- opt_attrs = 0;
-#endif
-
- push_stat_struct (&st, opt_attrs);
-#else
- stat_cmd (file);
-#endif
-}
-
-/* Well, it appears that on some systems, these are not defined. Here I
- * provide them. These are derived from the Linux stat.h file.
- */
-
-#ifdef __os2__
-# ifdef __IBMC__
-/* IBM VA3 doesn't declare S_IFMT */
-# define S_IFMT (S_IFDIR | S_IFCHR | S_IFREG)
-# endif
-#endif
-
-#ifndef S_ISLNK
-# ifdef S_IFLNK
-# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-# else
-# define S_ISLNK(m) 0
-# endif
-#endif
-
-#ifndef S_ISREG
-# ifdef S_IFREG
-# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-# else
-# define S_ISREG(m) 0
-# endif
-#endif
-
-#ifndef S_ISDIR
-# ifdef S_IFDIR
-# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-# else
-# define S_ISDIR(m) 0
-# endif
-#endif
-
-#ifndef S_ISCHR
-# ifdef S_IFCHR
-# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-# else
-# define S_ISCHR(m) 0
-# endif
-#endif
-
-#ifndef S_ISBLK
-# ifdef S_IFBLK
-# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-# else
-# define S_ISBLK(m) 0
-# endif
-#endif
-
-#ifndef S_ISFIFO
-# ifdef S_IFIFO
-# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-# else
-# define S_ISFIFO(m) 0
-# endif
-#endif
-
-#ifndef S_ISSOCK
-# ifdef S_IFSOCK
-# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-# else
-# define S_ISSOCK(m) 0
-# endif
-#endif
-
-static char stat_is_cmd (char *what, int *mode_ptr)
-{
- int ret;
- int st_mode = *mode_ptr;
-
- if (!strcmp (what, "sock")) ret = S_ISSOCK(st_mode);
- else if (!strcmp (what, "fifo")) ret = S_ISFIFO(st_mode);
- else if (!strcmp (what, "blk")) ret = S_ISBLK(st_mode);
- else if (!strcmp (what, "chr")) ret = S_ISCHR(st_mode);
- else if (!strcmp (what, "dir")) ret = S_ISDIR(st_mode);
- else if (!strcmp (what, "reg")) ret = S_ISREG(st_mode);
- else if (!strcmp (what, "lnk")) ret = S_ISLNK(st_mode);
- else
- {
- SLang_verror (SL_INVALID_PARM, "stat_is: Unrecognized type: %s", what);
- return -1;
- }
-
- return (char) (ret != 0);
-}
-
-#ifdef HAVE_READLINK
-static void readlink_cmd (char *s)
-{
- char buf[2048];
- int n;
-
- n = readlink (s, buf, sizeof (buf)-1);
- if (n == -1)
- {
- _SLerrno_errno = errno;
- s = NULL;
- }
- else
- {
- buf[n] = 0;
- s = buf;
- }
-
- (void) SLang_push_string (s);
-}
-#endif
-
-static int chmod_cmd (char *file, int *mode)
-{
- if (-1 == chmod(file, (mode_t) *mode))
- {
- _SLerrno_errno = errno;
- return -1;
- }
- return 0;
-}
-
-#ifdef HAVE_CHOWN
-static int chown_cmd (char *file, int *owner, int *group)
-{
- int ret;
-
- if (-1 == (ret = chown(file, (uid_t) *owner, (gid_t) *group)))
- _SLerrno_errno = errno;
- return ret;
-}
-#endif
-
-/* add trailing slash to dir */
-static void fixup_dir (char *dir)
-{
-#ifndef VMS
- int n;
-
- if ((n = strlen(dir)) > 1)
- {
- n--;
-#if defined(IBMPC_SYSTEM)
- if ( dir[n] != '/' && dir[n] != '\\' )
- strcat(dir, "\\" );
-#else
- if (dir[n] != '/' )
- strcat(dir, "/" );
-#endif
- }
-#endif /* !VMS */
-}
-
-static void slget_cwd (void)
-{
- char cwd[1024];
- char *p;
-
-#ifndef HAVE_GETCWD
- p = getwd (cwd);
-#else
-# if defined (__EMX__)
- p = _getcwd2(cwd, 1022); /* includes drive specifier */
-# else
- p = getcwd(cwd, 1022); /* djggp includes drive specifier */
-# endif
-#endif
-
- if (p == NULL)
- {
- _SLerrno_errno = errno;
- SLang_push_null ();
- return;
- }
-
-#ifndef VMS
-#ifdef __GO32__
- /* You never know about djgpp since it favors unix */
- {
- char ch;
- p = cwd;
- while ((ch = *p) != 0)
- {
- if (ch == '/') *p = '\\';
- p++;
- }
- }
-#endif
- fixup_dir (cwd);
-#endif
- SLang_push_string (cwd);
-}
-
-static int chdir_cmd (char *s)
-{
- int ret;
-
- while (-1 == (ret = chdir (s)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- break;
- }
- return ret;
-}
-
-#ifdef VMS
-static int remove_cmd (char *);
-/* If the file looks like xxx, then change it to xxx.dir. If
- * it looks like A:[B.xxx] then change it to A:[B]xxx.dir.
- */
-
-static char *vms_convert_dirspec_to_vms_dir (char *str)
-{
- char *s;
- char *version;
- unsigned int len;
- char *dot;
-
- len = strlen (str);
-
- version = strchr (str, ';');
- if (version == NULL)
- version = str + len;
- /* version points to the version of the input string */
-
-
- if (NULL == (s = SLmalloc (len + 8)))/* allow extra space to work with */
- return NULL;
-
- len = (unsigned int) (version - str);
- strncpy (s, str, len);
- s[len] = 0;
- str = s;
-
- /* Lowercase the whole thing */
- while (*s != 0)
- {
- *s = LOWER_CASE(*s);
- s++;
- }
-
- if ((s > str)
- && (s[-1] != ']'))
- {
- if ((s >= str + 4)
- && (0 == strcmp (s - 4, ".dir")))
- s -= 4;
- goto add_dir_version;
- }
-
- /* Check for one of two possibilities:
- *
- * dev:[x] --> dev:x
- * dev:[a.x] --> dev:[a]x
- */
-
- if (NULL == (dot = strchr (str, '.')))
- {
- /* First possibility */
- if (NULL == (s = strchr (str, '[')))
- return str; /* let someone else figure this out */
- while (s[1] != ']')
- {
- s[0] = s[1];
- s++;
- }
- *s = 0;
- goto add_dir_version;
- }
-
- while (NULL != (s = strchr (dot + 1, '.')))
- dot = s;
-
- *dot = ']';
- s = str + (len - 1);
-
- /* Drop */
-
- add_dir_version:
- strcpy (s, ".dir");
- strcpy (s+4, version);
- return str;
-}
-#endif
-
-static int rmdir_cmd (char *s)
-{
-#ifdef VMS
- int status;
-
- if (NULL == (s = vms_convert_dirspec_to_vms_dir (s)))
- return -1;
-
- status = remove_cmd (s);
- SLfree (s);
-
- return status;
-
-#else
- int ret;
-
- while (-1 == (ret = rmdir (s)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- break;
- }
- return ret;
-#endif
-}
-
-static int remove_cmd (char *s)
-{
- int ret;
-#ifdef VMS
-# define REMOVE delete
-#else
-# ifdef REAL_UNIX_SYSTEM
-# define REMOVE unlink
-# else
-# define REMOVE remove
-# endif
-#endif
-
- while (-1 == (ret = REMOVE (s)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- break;
- }
- return ret;
-}
-
-static int rename_cmd (char *oldpath, char *newpath)
-{
- int ret;
- while (-1 == (ret = rename (oldpath, newpath)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- break;
- }
- return ret;
-}
-
-static int mkdir_cmd (char *s, int *mode_ptr)
-{
- int ret;
-
- (void) mode_ptr;
- errno = 0;
-
-#if defined (__MSDOS__) && !defined(__GO32__)
-# define MKDIR(x,y) mkdir(x)
-#else
-# if defined (__os2__) && !defined (__EMX__)
-# define MKDIR(x,y) mkdir(x)
-# else
-# if defined (__WIN32__) && !defined (__CYGWIN32__)
-# define MKDIR(x,y) mkdir(x)
-# else
-# define MKDIR mkdir
-# endif
-# endif
-#endif
-
- while (-1 == (ret = MKDIR(s, *mode_ptr)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- break;
- }
- return ret;
-}
-
-#ifdef HAVE_MKFIFO
-static int mkfifo_cmd (char *path, int *mode)
-{
- if (-1 == mkfifo (path, *mode))
- {
- _SLerrno_errno = errno;
- return -1;
- }
- return 0;
-}
-#endif
-
-#if USE_LISTDIR_INTRINSIC
-
-static void free_dir_list (char **list, unsigned int num)
-{
- unsigned int i;
-
- if (list == NULL)
- return;
-
- for (i = 0; i < num; i++)
- SLang_free_slstring (list[i]);
- SLfree ((char *) list);
-}
-
-#if defined(__WIN32__) || defined(__os2__) && defined(__IBMC__)
-static int build_dirlist (char *file, char *opt, char ***listp, unsigned int *nump, unsigned int *maxnum)
-{
-# ifdef __WIN32__
- DWORD status;
- HANDLE h;
- WIN32_FIND_DATA fd;
-# else
- APIRET rc;
- FILESTATUS3 status;
- HDIR h;
- FILEFINDBUF3 fd;
- ULONG cFileNames;
-# endif
- char *pat;
- unsigned int len;
- char **list;
- unsigned int num;
- unsigned int max_num;
- int hok;
-
- /* If an option is present, assume ok to list hidden files. Later
- * I will formalize this.
- */
- hok = (opt != NULL);
-
-# ifdef __WIN32__
- status = GetFileAttributes (file);
-# else
- rc = DosQueryPathInfo(file, FIL_STANDARD, &status, sizeof(FILESTATUS3));
-# endif
-
-
-# ifdef __WIN32__
- if (status == (DWORD)-1)
- {
- _SLerrno_errno = ENOENT;
- return -1;
- }
- if (0 == (status & FILE_ATTRIBUTE_DIRECTORY))
- {
- _SLerrno_errno = ENOTDIR;
- return -1;
- }
-# else
- if ((rc != 0) || (status.attrFile & FILE_DIRECTORY) == 0)
- {
- /* ENOTDIR isn't defined in VA3. */
- _SLerrno_errno = ENOENT;
- return -1;
- }
-# endif
-
- len = strlen (file);
- pat = SLmalloc (len + 3);
- if (pat == NULL)
- return -1;
-
- strcpy (pat, file);
- file = pat;
- while (*file != 0)
- {
- if (*file == '/') *file = '\\';
- file++;
- }
-
- if (len && (pat[len-1] != '\\'))
- {
- pat[len] = '\\';
- len++;
- }
- pat[len++] = '*';
- pat[len] = 0;
-
- num = 0;
- max_num = 50;
- list = (char **)SLmalloc (max_num * sizeof(char *));
- if (list == NULL)
- {
- SLfree (pat);
- return -1;
- }
-
-# ifdef __WIN32__
- h = FindFirstFile(pat, &fd);
- if (h == INVALID_HANDLE_VALUE)
- {
- if (ERROR_NO_MORE_FILES != GetLastError())
- {
- SLfree (pat);
- SLfree ((char *)list);
- return -1;
- }
- }
-# else
- h = HDIR_CREATE;
- cFileNames = 1;
- rc = DosFindFirst(pat, &h, FILE_READONLY | FILE_DIRECTORY |
- FILE_ARCHIVED, &fd, sizeof(fd), &cFileNames, FIL_STANDARD);
- if (rc != 0)
- {
- if (rc != ERROR_NO_MORE_FILES)
- {
- SLfree (pat);
- SLfree ((char *)list);
- return -1;
- }
- }
-# endif
- else while (1)
- {
- /* Do not include hidden files in the list. Also, do not
- * include "." and ".." entries.
- */
-#ifdef __WIN32__
- file = fd.cFileName;
-#else
- file = fd.achName;
-#endif
- if (
-#ifdef __WIN32__
- (hok || (0 == (fd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)))
-#else
- (hok || (0 == (fd.attrFile & FILE_HIDDEN)))
-#endif
- && ((*file != '.')
- || ((0 != strcmp (file, "."))
- && (0 != strcmp (file, "..")))))
- {
- if (num == max_num)
- {
- char **new_list;
-
- max_num += 100;
- new_list = (char **)SLrealloc ((char *)list, max_num * sizeof (char *));
- if (new_list == NULL)
- goto return_error;
-
- list = new_list;
- }
-
- file = SLang_create_slstring (file);
- if (file == NULL)
- goto return_error;
-
- list[num] = file;
- num++;
- }
-
-#ifdef __WIN32__
- if (FALSE == FindNextFile(h, &fd))
- {
- if (ERROR_NO_MORE_FILES == GetLastError())
- {
- FindClose (h);
- break;
- }
-
- _SLerrno_errno = errno;
- FindClose (h);
- goto return_error;
- }
-#else
- cFileNames = 1;
- rc = DosFindNext(h, &fd, sizeof(fd), &cFileNames);
- if (rc != 0)
- {
- if (rc == ERROR_NO_MORE_FILES)
- {
- DosFindClose (h);
- break;
- }
-
- _SLerrno_errno = errno;
- DosFindClose (h);
- goto return_error;
- }
-#endif
- }
-
- SLfree (pat);
- *maxnum = max_num;
- *nump = num;
- *listp = list;
- return 0;
-
- return_error:
- free_dir_list (list, num);
- SLfree (pat);
- return -1;
-}
-
-#else /* NOT __WIN32__ */
-
-static int build_dirlist (char *dir, char *opt, char ***listp, unsigned int *nump, unsigned int *maxnum)
-{
- DIR *dp;
- struct dirent *ep;
- unsigned int num_files;
- unsigned int max_num_files;
- char **list;
-
- (void) opt;
-
- if (NULL == (dp = opendir (dir)))
- {
- _SLerrno_errno = errno;
- return -1;
- }
-
- num_files = max_num_files = 0;
- list = NULL;
- while (NULL != (ep = readdir (dp)))
- {
- unsigned int len;
- char *name;
-
- name = ep->d_name;
-# ifdef NEED_D_NAMLEN
- len = ep->d_namlen;
-# else
- len = strlen (name);
-# endif
- if ((*name == '.') && (len <= 2))
- {
- if (len == 1) continue;
- if (name [1] == '.') continue;
- }
-
- if (num_files == max_num_files)
- {
- char **new_list;
-
- max_num_files += 100;
- if (NULL == (new_list = (char **) SLrealloc ((char *)list, max_num_files * sizeof(char *))))
- goto return_error;
-
- list = new_list;
- }
-
- if (NULL == (list[num_files] = SLang_create_nslstring (name, len)))
- goto return_error;
-
- num_files++;
- }
-
- closedir (dp);
- *nump = num_files;
- *maxnum = max_num_files;
- *listp = list;
- return 0;
-
- return_error:
- if (dp != NULL)
- closedir (dp);
- free_dir_list (list, num_files);
- return -1;
-}
-# endif /* NOT __WIN32__ */
-
-static void listdir_cmd (char *dir, char *opt)
-{
- SLang_Array_Type *at;
- unsigned int num_files;
- unsigned int max_num_files;
- int inum_files;
- char **list;
-
- if (-1 == build_dirlist (dir, opt, &list, &num_files, &max_num_files))
- {
- SLang_push_null ();
- return;
- }
- /* If max_num_files == 0, then num_files == 0 and list == NULL.
- * The realloc step below will malloc list for us.
- */
- if (num_files + 1 < max_num_files)
- {
- char **new_list;
- if (NULL == (new_list = (char **) SLrealloc ((char *)list, (num_files + 1)* sizeof(char*))))
- {
- free_dir_list (list, num_files);
- SLang_push_null ();
- return;
- }
- list = new_list;
- }
-
- inum_files = (int) num_files;
- if (NULL == (at = SLang_create_array (SLANG_STRING_TYPE, 0, (VOID_STAR) list, &inum_files, 1)))
- {
- free_dir_list (list, num_files);
- SLang_push_null ();
- return;
- }
-
- /* Allow the array to free this list if push fails */
- if (-1 == SLang_push_array (at, 1))
- SLang_push_null ();
-}
-
-static void listdir_cmd_wrap (void)
-{
- char *s, *sopt;
-
- sopt = NULL;
- switch (SLang_Num_Function_Args)
- {
- case 2:
- if (-1 == SLang_pop_slstring (&sopt))
- return;
- case 1:
- if (-1 == SLang_pop_slstring (&s))
- {
- SLang_free_slstring (sopt);
- return;
- }
- break;
- default:
- SLang_verror (SL_INVALID_PARM, "usage: listdir (string, [opt-string]");
- return;
- }
-
- listdir_cmd (s, sopt);
- SLang_free_slstring (s);
- SLang_free_slstring (sopt);
-}
-
-#endif /* USE_LISTDIR_INTRINSIC */
-
-#ifdef HAVE_UMASK
-static int umask_cmd (int *u)
-{
- return umask (*u);
-}
-#endif
-
-static SLang_Intrin_Fun_Type PosixDir_Name_Table [] =
-{
-#ifdef HAVE_READLINK
- MAKE_INTRINSIC_S("readlink", readlink_cmd, SLANG_VOID_TYPE),
-#endif
- MAKE_INTRINSIC_S("lstat_file", lstat_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("stat_file", stat_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SI("stat_is", stat_is_cmd, SLANG_CHAR_TYPE),
-#ifdef HAVE_MKFIFO
- MAKE_INTRINSIC_SI("mkfifo", mkfifo_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_CHOWN
- MAKE_INTRINSIC_SII("chown", chown_cmd, SLANG_INT_TYPE),
-#endif
- MAKE_INTRINSIC_SI("chmod", chmod_cmd, SLANG_INT_TYPE),
-#ifdef HAVE_UMASK
- MAKE_INTRINSIC_I("umask", umask_cmd, SLANG_INT_TYPE),
-#endif
- MAKE_INTRINSIC_0("getcwd", slget_cwd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SI("mkdir", mkdir_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("chdir", chdir_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("rmdir", rmdir_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("remove", remove_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SS("rename", rename_cmd, SLANG_INT_TYPE),
-#if USE_LISTDIR_INTRINSIC
- MAKE_INTRINSIC("listdir", listdir_cmd_wrap, SLANG_VOID_TYPE, 0),
-#endif
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-static SLang_IConstant_Type PosixDir_Consts [] =
-{
-#ifndef S_IRWXU
-# define S_IRWXU 00700
-#endif
- MAKE_ICONSTANT("S_IRWXU", S_IRWXU),
-#ifndef S_IRUSR
-# define S_IRUSR 00400
-#endif
- MAKE_ICONSTANT("S_IRUSR", S_IRUSR),
-#ifndef S_IWUSR
-# define S_IWUSR 00200
-#endif
- MAKE_ICONSTANT("S_IWUSR", S_IWUSR),
-#ifndef S_IXUSR
-# define S_IXUSR 00100
-#endif
- MAKE_ICONSTANT("S_IXUSR", S_IXUSR),
-#ifndef S_IRWXG
-# define S_IRWXG 00070
-#endif
- MAKE_ICONSTANT("S_IRWXG", S_IRWXG),
-#ifndef S_IRGRP
-# define S_IRGRP 00040
-#endif
- MAKE_ICONSTANT("S_IRGRP", S_IRGRP),
-#ifndef S_IWGRP
-# define S_IWGRP 00020
-#endif
- MAKE_ICONSTANT("S_IWGRP", S_IWGRP),
-#ifndef S_IXGRP
-# define S_IXGRP 00010
-#endif
- MAKE_ICONSTANT("S_IXGRP", S_IXGRP),
-#ifndef S_IRWXO
-# define S_IRWXO 00007
-#endif
- MAKE_ICONSTANT("S_IRWXO", S_IRWXO),
-#ifndef S_IROTH
-# define S_IROTH 00004
-#endif
- MAKE_ICONSTANT("S_IROTH", S_IROTH),
-#ifndef S_IWOTH
-# define S_IWOTH 00002
-#endif
- MAKE_ICONSTANT("S_IWOTH", S_IWOTH),
-#ifndef S_IXOTH
-# define S_IXOTH 00001
-#endif
- MAKE_ICONSTANT("S_IXOTH", S_IXOTH),
-#ifdef __WIN32__
- MAKE_ICONSTANT("FILE_ATTRIBUTE_ARCHIVE", FILE_ATTRIBUTE_ARCHIVE),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_COMPRESSED", FILE_ATTRIBUTE_COMPRESSED),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_NORMAL", FILE_ATTRIBUTE_NORMAL),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_DIRECTORY", FILE_ATTRIBUTE_DIRECTORY),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_HIDDEN", FILE_ATTRIBUTE_HIDDEN),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_READONLY", FILE_ATTRIBUTE_READONLY),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_SYSTEM", FILE_ATTRIBUTE_SYSTEM),
- MAKE_ICONSTANT("FILE_ATTRIBUTE_TEMPORARY", FILE_ATTRIBUTE_TEMPORARY),
-#endif
- SLANG_END_ICONST_TABLE
-};
-
-static int Initialized;
-
-int SLang_init_posix_dir (void)
-{
- if (Initialized)
- return 0;
-
- if ((-1 == SLadd_intrin_fun_table(PosixDir_Name_Table, "__POSIX_DIR__"))
- || (-1 == SLadd_iconstant_table (PosixDir_Consts, NULL))
- || (-1 == _SLerrno_init ()))
- return -1;
-
- Initialized = 1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slposio.c b/mdk-stage1/slang/slposio.c
deleted file mode 100644
index ab1e9f689..000000000
--- a/mdk-stage1/slang/slposio.c
+++ /dev/null
@@ -1,568 +0,0 @@
-/* This module implements an interface to posix system calls */
-/* file stdio intrinsics for S-Lang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#if defined(__unix__) || (defined (__os2__) && defined (__EMX__))
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_FCNTL_H
-# include <sys/fcntl.h>
-#endif
-
-#ifdef __unix__
-# include <sys/file.h>
-#endif
-
-#ifdef HAVE_IO_H
-# include <io.h>
-#endif
-
-#if defined(__BORLANDC__)
-# include <dir.h>
-#endif
-
-#if defined(__DECC) && defined(VMS)
-# include <unixio.h>
-# include <unixlib.h>
-#endif
-
-#ifdef VMS
-# include <stat.h>
-#else
-# include <sys/stat.h>
-#endif
-
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-struct _SLFile_FD_Type
-{
- char *name;
- unsigned int num_refs; /* reference counting */
- int fd;
- SLang_MMT_Type *stdio_mmt; /* fdopen'd stdio object */
-
- /* methods */
- int (*close)(int);
- int (*read) (int, char *, unsigned int *);
- int (*write)(int, char *, unsigned int *);
-};
-
-static int close_method (int fd)
-{
- return close (fd);
-}
-
-static int write_method (int fd, char *buf, unsigned int *nump)
-{
- int num;
-
- if (-1 == (num = write (fd, buf, *nump)))
- {
- *nump = 0;
- return -1;
- }
-
- *nump = (unsigned int) num;
- return 0;
-}
-
-static int read_method (int fd, char *buf, unsigned int *nump)
-{
- int num;
-
- num = read (fd, buf, *nump);
- if (num == -1)
- {
- *nump = 0;
- return -1;
- }
- *nump = (unsigned int) num;
- return 0;
-}
-
-static int check_fd (int fd)
-{
- if (fd == -1)
- {
-#ifdef EBADF
- _SLerrno_errno = EBADF;
-#endif
- return -1;
- }
-
- return 0;
-}
-
-static int posix_close (SLFile_FD_Type *f)
-{
- if (-1 == check_fd (f->fd))
- return -1;
-
- if ((f->close != NULL)
- && (-1 == f->close (f->fd)))
- {
- _SLerrno_errno = errno;
- return -1;
- }
-
- if (f->stdio_mmt != NULL)
- {
- SLang_free_mmt (f->stdio_mmt);
- f->stdio_mmt = NULL;
- }
-
- f->fd = -1;
- return 0;
-}
-
-/* Usage: Uint write (f, buf); */
-static void posix_write (SLFile_FD_Type *f, SLang_BString_Type *bstr)
-{
- unsigned int len;
- char *p;
-
- if ((-1 == check_fd (f->fd))
- || (NULL == (p = (char *)SLbstring_get_pointer (bstr, &len))))
- {
- SLang_push_integer (-1);
- return;
- }
-
- if (-1 == f->write (f->fd, p, &len))
- {
- _SLerrno_errno = errno;
- SLang_push_integer (-1);
- return;
- }
-
- (void) SLang_push_uinteger (len);
-}
-
-/* Usage: nn = read (f, &buf, n); */
-static void posix_read (SLFile_FD_Type *f, SLang_Ref_Type *ref, unsigned int *nbytes)
-{
- unsigned int len;
- char *b;
- SLang_BString_Type *bstr;
-
- b = NULL;
-
- len = *nbytes;
- if ((-1 == check_fd (f->fd))
- || (NULL == (b = SLmalloc (len + 1))))
- goto return_error;
-
- if (-1 == f->read (f->fd, b, &len))
- {
- _SLerrno_errno = errno;
- goto return_error;
- }
-
- if (len != *nbytes)
- {
- char *b1 = SLrealloc (b, len + 1);
- if (b1 == NULL)
- goto return_error;
- b = b1;
- }
-
- bstr = SLbstring_create_malloced ((unsigned char *) b, len, 0);
- if (bstr != NULL)
- {
- if ((-1 != SLang_assign_to_ref (ref, SLANG_BSTRING_TYPE, (VOID_STAR)&bstr))
- && (-1 != SLang_push_uinteger (len)))
- return;
-
- SLbstring_free (bstr);
- b = NULL;
- /* drop */
- }
-
- return_error:
- if (b != NULL) SLfree ((char *)b);
- (void) SLang_assign_to_ref (ref, SLANG_NULL_TYPE, NULL);
- (void) SLang_push_integer (-1);
-}
-
-SLFile_FD_Type *SLfile_create_fd (char *name, int fd)
-{
- SLFile_FD_Type *f;
-
- if (NULL == (f = (SLFile_FD_Type *) SLmalloc (sizeof (SLFile_FD_Type))))
- return NULL;
-
- memset ((char *) f, 0, sizeof (SLFile_FD_Type));
- if (NULL == (f->name = SLang_create_slstring (name)))
- {
- SLfree ((char *)f);
- return NULL;
- }
-
- f->fd = fd;
- f->num_refs = 1;
-
- f->close = close_method;
- f->read = read_method;
- f->write = write_method;
-
- return f;
-}
-
-SLFile_FD_Type *SLfile_dup_fd (SLFile_FD_Type *f0)
-{
- SLFile_FD_Type *f;
- int fd0, fd;
-
- if (f0 == NULL)
- return NULL;
- fd0 = f0->fd;
- if (-1 == check_fd (fd0))
- return NULL;
-
- while (-1 == (fd = dup (fd0)))
- {
-#ifdef EINTR
- if (errno == EINTR)
- continue;
-#endif
- _SLerrno_errno = errno;
- return NULL;
- }
-
- if (NULL == (f = SLfile_create_fd (f0->name, fd)))
- {
- f0->close (fd);
- return NULL;
- }
-
- return f;
-}
-
-int SLfile_get_fd (SLFile_FD_Type *f, int *fd)
-{
- if (f == NULL)
- return -1;
-
- *fd = f->fd;
- if (-1 == check_fd (*fd))
- return -1;
-
- return 0;
-}
-
-void SLfile_free_fd (SLFile_FD_Type *f)
-{
- if (f == NULL)
- return;
-
- if (f->num_refs > 1)
- {
- f->num_refs -= 1;
- return;
- }
-
- if (f->fd != -1)
- {
- if (f->close != NULL)
- (void) f->close (f->fd);
-
- f->fd = -1;
- }
-
- if (f->stdio_mmt != NULL)
- SLang_free_mmt (f->stdio_mmt);
-
- SLfree ((char *) f);
-}
-
-static int pop_string_int (char **s, int *i)
-{
- *s = NULL;
- if ((-1 == SLang_pop_integer (i))
- || (-1 == SLang_pop_slstring (s)))
- return -1;
-
- return 0;
-}
-
-static int pop_string_int_int (char **s, int *a, int *b)
-{
- *s = NULL;
- if ((-1 == SLang_pop_integer (b))
- || (-1 == pop_string_int (s, a)))
- return -1;
-
- return 0;
-}
-
-static void posix_open (void)
-{
- char *file;
- int mode, flags;
- SLFile_FD_Type *f;
-
- switch (SLang_Num_Function_Args)
- {
- case 3:
- if (-1 == pop_string_int_int (&file, &flags, &mode))
- {
- SLang_push_null ();
- return;
- }
- break;
-
- case 2:
- default:
- if (-1 == pop_string_int (&file, &flags))
- return;
- mode = 0777;
- break;
- }
-
- f = SLfile_create_fd (file, -1);
- if (f == NULL)
- {
- SLang_free_slstring (file);
- SLang_push_null ();
- return;
- }
- SLang_free_slstring (file);
-
- if (-1 == (f->fd = open (f->name, flags, mode)))
- {
- _SLerrno_errno = errno;
- SLfile_free_fd (f);
- SLang_push_null ();
- return;
- }
-
- if (-1 == SLfile_push_fd (f))
- SLang_push_null ();
- SLfile_free_fd (f);
-}
-
-static void posix_fileno (void)
-{
- FILE *fp;
- SLang_MMT_Type *mmt;
- int fd;
- SLFile_FD_Type *f;
- char *name;
-
- if (-1 == SLang_pop_fileptr (&mmt, &fp))
- {
- SLang_push_null ();
- return;
- }
- name = SLang_get_name_from_fileptr (mmt);
- fd = fileno (fp);
-
- f = SLfile_create_fd (name, fd);
- if (f != NULL)
- f->close = NULL; /* prevent fd from being closed
- * when it goes out of scope
- */
- SLang_free_mmt (mmt);
-
- if (-1 == SLfile_push_fd (f))
- SLang_push_null ();
- SLfile_free_fd (f);
-}
-
-static void posix_fdopen (SLFile_FD_Type *f, char *mode)
-{
- if (f->stdio_mmt == NULL)
- {
- if (-1 == _SLstdio_fdopen (f->name, f->fd, mode))
- return;
-
- if (NULL == (f->stdio_mmt = SLang_pop_mmt (SLANG_FILE_PTR_TYPE)))
- return;
- }
-
- (void) SLang_push_mmt (f->stdio_mmt);
-}
-
-static long posix_lseek (SLFile_FD_Type *f, long ofs, int whence)
-{
- long status;
-
- if (-1 == (status = lseek (f->fd, ofs, whence)))
- _SLerrno_errno = errno;
-
- return status;
-}
-
-static int posix_isatty (void)
-{
- int ret;
- SLFile_FD_Type *f;
-
- if (SLang_peek_at_stack () == SLANG_FILE_PTR_TYPE)
- {
- SLang_MMT_Type *mmt;
- FILE *fp;
-
- if (-1 == SLang_pop_fileptr (&mmt, &fp))
- return 0; /* invalid descriptor */
-
- ret = isatty (fileno (fp));
- SLang_free_mmt (mmt);
- return ret;
- }
-
- if (-1 == SLfile_pop_fd (&f))
- return 0;
-
- ret = isatty (f->fd);
- SLfile_free_fd (f);
-
- return ret;
-}
-
-static void posix_dup (SLFile_FD_Type *f)
-{
- if ((NULL == (f = SLfile_dup_fd (f)))
- || (-1 == SLfile_push_fd (f)))
- SLang_push_null ();
-
- SLfile_free_fd (f);
-}
-
-#define I SLANG_INT_TYPE
-#define V SLANG_VOID_TYPE
-#define F SLANG_FILE_FD_TYPE
-#define B SLANG_BSTRING_TYPE
-#define R SLANG_REF_TYPE
-#define U SLANG_UINT_TYPE
-#define S SLANG_STRING_TYPE
-#define L SLANG_LONG_TYPE
-static SLang_Intrin_Fun_Type Fd_Name_Table [] =
-{
- MAKE_INTRINSIC_0("fileno", posix_fileno, V),
- MAKE_INTRINSIC_0("isatty", posix_isatty, I),
- MAKE_INTRINSIC_0("open", posix_open, V),
- MAKE_INTRINSIC_3("read", posix_read, V, F, R, U),
- MAKE_INTRINSIC_3("lseek", posix_lseek, L, F, L, I),
- MAKE_INTRINSIC_2("fdopen", posix_fdopen, V, F, S),
- MAKE_INTRINSIC_2("write", posix_write, V, F, B),
- MAKE_INTRINSIC_1("dup_fd", posix_dup, V, F),
- MAKE_INTRINSIC_1("close", posix_close, I, F),
- SLANG_END_INTRIN_FUN_TABLE
-};
-#undef I
-#undef V
-#undef F
-#undef B
-#undef R
-#undef S
-#undef L
-#undef U
-
-static SLang_IConstant_Type PosixIO_Consts [] =
-{
-#ifdef O_RDONLY
- MAKE_ICONSTANT("O_RDONLY", O_RDONLY),
-#endif
-#ifdef O_WRONLY
- MAKE_ICONSTANT("O_WRONLY", O_WRONLY),
-#endif
-#ifdef O_RDWR
- MAKE_ICONSTANT("O_RDWR", O_RDWR),
-#endif
-#ifdef O_APPEND
- MAKE_ICONSTANT("O_APPEND", O_APPEND),
-#endif
-#ifdef O_CREAT
- MAKE_ICONSTANT("O_CREAT", O_CREAT),
-#endif
-#ifdef O_EXCL
- MAKE_ICONSTANT("O_EXCL", O_EXCL),
-#endif
-#ifdef O_NOCTTY
- MAKE_ICONSTANT("O_NOCTTY", O_NOCTTY),
-#endif
-#ifdef O_NONBLOCK
- MAKE_ICONSTANT("O_NONBLOCK", O_NONBLOCK),
-#endif
-#ifdef O_TRUNC
- MAKE_ICONSTANT("O_TRUNC", O_TRUNC),
-#endif
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
- MAKE_ICONSTANT("O_BINARY", O_BINARY),
-#ifndef O_TEXT
-# define O_TEXT 0
-#endif
- MAKE_ICONSTANT("O_TEXT", O_TEXT),
-
- SLANG_END_ICONST_TABLE
-};
-
-int SLfile_push_fd (SLFile_FD_Type *f)
-{
- if (f == NULL)
- return SLang_push_null ();
-
- f->num_refs += 1;
-
- if (0 == SLclass_push_ptr_obj (SLANG_FILE_FD_TYPE, (VOID_STAR) f))
- return 0;
-
- f->num_refs -= 1;
-
- return -1;
-}
-
-int SLfile_pop_fd (SLFile_FD_Type **f)
-{
- return SLclass_pop_ptr_obj (SLANG_FILE_FD_TYPE, (VOID_STAR *) f);
-}
-
-static void destroy_fd_type (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- SLfile_free_fd (*(SLFile_FD_Type **) ptr);
-}
-
-static int fd_push (unsigned char type, VOID_STAR v)
-{
- (void) type;
- return SLfile_push_fd (*(SLFile_FD_Type **)v);
-}
-
-int SLang_init_posix_io (void)
-{
- SLang_Class_Type *cl;
-
- if (NULL == (cl = SLclass_allocate_class ("FD_Type")))
- return -1;
- cl->cl_destroy = destroy_fd_type;
- (void) SLclass_set_push_function (cl, fd_push);
-
- if (-1 == SLclass_register_class (cl, SLANG_FILE_FD_TYPE, sizeof (SLFile_FD_Type), SLANG_CLASS_TYPE_PTR))
- return -1;
-
- if ((-1 == SLadd_intrin_fun_table(Fd_Name_Table, "__POSIXIO__"))
- || (-1 == SLadd_iconstant_table (PosixIO_Consts, NULL))
- || (-1 == _SLerrno_init ()))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slprepr.c b/mdk-stage1/slang/slprepr.c
deleted file mode 100644
index 358eeb874..000000000
--- a/mdk-stage1/slang/slprepr.c
+++ /dev/null
@@ -1,427 +0,0 @@
-/* Copyright (c) 1996, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/*--------------------------------*-C-*---------------------------------*
- * File: slprepr.c
- *
- * preprocessing routines
- */
-/*{{{ notes: */
-/*
- * various preprocessing tokens supported
- *
- * #ifdef TOKEN1 TOKEN2 ...
- * - True if any of TOKEN1 TOKEN2 ... are defined
- *
- * #ifndef TOKEN1 TOKEN2 ...
- * - True if none of TOKEN1 TOKEN2 ... are defined
- *
- * #iftrue
- * #ifnfalse
- * - always True
- *
- * #iffalse
- * #ifntrue
- * - always False
- *
- * #if$ENV
- * - True if the enviroment variable ENV is set
- *
- * #ifn$ENV
- * - True if the enviroment variable ENV is not set
- *
- * #if$ENV TOKEN1 TOKEN2 ...
- * - True if the contents of enviroment variable ENV match
- * any of TOKEN1 TOKEN2 ...
- *
- * #ifn$ENV TOKEN1 TOKEN2 ...
- * - True if the contents of enviroment variable ENV do not match
- * any of TOKEN1 TOKEN2 ...
- *
- * NB: For $ENV, the tokens may contain wildcard characters:
- * '?' - match any single character
- * '*' - match any number of characters
- *
- * #elif...
- * #else
- * #endif
- *
- *
- * mj olesen
- *----------------------------------------------------------------------*/
-/*}}}*/
-/*{{{ includes: */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-/*}}}*/
-
-int (*SLprep_exists_hook) (char *, char);
-int (*_SLprep_eval_hook) (char *);
-
-/*{{{ SLprep_open_prep (), SLprep_close_prep () */
-int SLprep_open_prep (SLPreprocess_Type *pt)
-{
- pt->this_level = 0;
- pt->exec_level = 0;
- pt->prev_exec_level = 0;
- pt->comment_char = '%';
- pt->preprocess_char = '#';
- pt->flags = 0;
- return 0;
-}
-
-void SLprep_close_prep (SLPreprocess_Type *pt)
-{
- (void) pt;
-}
-/*}}}*/
-
-/*{{{ SLwildcard () */
-/*----------------------------------------------------------------------*
- * Does `string' match `pattern' ?
- *
- * '*' in pattern matches any sub-string (including the null string)
- * '?' matches any single char.
- *
- * Code taken from that donated by Paul Hudson <paulh@harlequin.co.uk>
- * to the fvwm project.
- * It is public domain, no strings attached. No guarantees either.
- *----------------------------------------------------------------------*/
-static int SLwildcard (char *pattern, char *string)
-{
- if (pattern == NULL || *pattern == '\0' || !strcmp (pattern, "*"))
- return 1;
- else if (string == NULL)
- return 0;
-
- while (*pattern && *string) switch (*pattern)
- {
- case '?':
- /* match any single character */
- pattern++;
- string++;
- break;
-
- case '*':
- /* see if rest of pattern matches any trailing */
- /* substring of the string. */
- if (*++pattern == '\0')
- return 1; /* trailing * must match rest */
-
- while (*string)
- {
- if (SLwildcard (pattern, string)) return 1;
- string++;
- }
- return 0;
-
- /* break; */
-
- default:
- if (*pattern == '\\')
- {
- if (*++pattern == '\0')
- pattern--; /* don't skip trailing backslash */
- }
- if (*pattern++ != *string++) return 0;
- break;
- }
-
- return ((*string == '\0')
- && ((*pattern == '\0') || !strcmp (pattern, "*")));
-}
-/*}}}*/
-
-#if defined(__16_BIT_SYSTEM__)
-# define MAX_DEFINES 10
-#else
-# define MAX_DEFINES 128
-#endif
-
-/* The extra one is for NULL termination */
-char *_SLdefines [MAX_DEFINES + 1];
-
-int SLdefine_for_ifdef (char *s) /*{{{*/
-{
- unsigned int i;
-
- for (i = 0; i < MAX_DEFINES; i++)
- {
- char *s1 = _SLdefines [i];
-
- if (s1 == s)
- return 0; /* already defined (hashed string) */
-
- if (s1 != NULL)
- continue;
-
- s = SLang_create_slstring (s);
- if (s == NULL)
- return -1;
-
- _SLdefines[i] = s;
- return 0;
- }
- return -1;
-}
-/*}}}*/
-
-/*{{{ static functions */
-static int is_any_defined(char *buf, char comment) /*{{{*/
-{
- char *sys;
- unsigned int i;
-
- while (1)
- {
- register char ch;
-
- /* Skip whitespace */
- while (((ch = *buf) == ' ') || (ch == '\t'))
- buf++;
-
- if ((ch == '\n') || (ch == 0) || (ch == comment))
- return 0;
-
- i = 0;
- while (NULL != (sys = _SLdefines [i++]))
- {
- unsigned int n;
-
- if (*sys != ch)
- continue;
-
- n = strlen (sys);
- if (0 == strncmp (buf, sys, n))
- {
- char ch1 = *(buf + n);
-
- if ((ch1 == '\n') || (ch1 == 0) ||
- (ch1 == ' ') || (ch1 == '\t') || (ch1 == comment))
- return 1;
- }
- }
-
- /* Skip past word */
- while (((ch = *buf) != ' ')
- && (ch != '\n')
- && (ch != 0)
- && (ch != '\t')
- && (ch != comment))
- buf++;
- }
-}
-/*}}}*/
-
-static unsigned char *tokenize (unsigned char *buf, char *token, unsigned int len)
-{
- register char *token_end;
-
- token_end = token + (len - 1); /* allow room for \0 */
-
- while ((token < token_end) && (*buf > ' '))
- *token++ = *buf++;
-
- if (*buf > ' ') return NULL; /* token too long */
-
- *token = '\0';
-
- while ((*buf == ' ') || (*buf == '\t')) buf++;
-
- return buf;
-}
-
-static int is_env_defined (char *buf, char comment) /*{{{*/
-{
- char * env, token [32];
-
- if ((*buf <= ' ') || (*buf == comment)) return 0; /* no token */
-
- if (NULL == (buf = (char *) tokenize ((unsigned char *) buf,
- token, sizeof (token))))
- return 0;
-
- if (NULL == (env = getenv (token)))
- return 0; /* ENV not defined */
-
- if ((*buf == '\0') || (*buf == '\n') || (*buf == comment))
- return 1; /* no tokens, but getenv() worked */
-
- do
- {
- buf = (char *) tokenize ((unsigned char *) buf, token, sizeof (token));
- if (buf == NULL) return 0;
-
- if (SLwildcard (token, env))
- return 1;
- }
- while (*buf && (*buf != '\n') && (*buf != comment));
-
- return 0;
-}
-/*}}}*/
-/*}}}*/
-
-int SLprep_line_ok (char *buf, SLPreprocess_Type *pt) /*{{{*/
-{
- int level, prev_exec_level, exec_level;
-
- if ((buf == NULL) || (pt == NULL)) return 1;
-
- if (*buf != pt->preprocess_char)
- {
- if (pt->this_level != pt->exec_level)
- return 0;
-
- if (*buf == '\n') return pt->flags & SLPREP_BLANK_LINES_OK;
- if (*buf == pt->comment_char) return pt->flags & SLPREP_COMMENT_LINES_OK;
-
- return 1;
- }
-
- level = pt->this_level;
- exec_level = pt->exec_level;
- prev_exec_level = pt->prev_exec_level;
-
- buf++;
-
- /* Allow '#!' to pass. This could be a shell script with something
- like '#! /local/bin/slang' */
- if ((*buf == '!') && (pt->preprocess_char == '#'))
- return 0;
-
- /* Allow whitespace as in '# ifdef' */
- while ((*buf == ' ') || (*buf == '\t')) buf++;
- if (*buf < 'a') return (level == exec_level);
-
- if (!strncmp(buf, "endif", 5))
- {
- if (level == exec_level)
- {
- exec_level--;
- prev_exec_level = exec_level;
- }
- level--;
- if (level < prev_exec_level) prev_exec_level = level;
- goto done;
- }
-
- if ((buf[0] == 'e') && (buf[1] == 'l')) /* else, elifdef, ... */
- {
- if ((level == exec_level + 1)
- && (prev_exec_level != level))
- {
- /* We are in position to execute */
- buf += 2;
- if ((buf[0] == 's') && (buf[1] == 'e'))
- {
- /* "else" */
- exec_level = level;
- goto done;
- }
-
- /* drop through to ifdef testing. First set variable
- * to values appropriate for ifdef testing.
- */
- level--; /* now == to exec level */
- }
- else
- {
- if (level == exec_level)
- {
- exec_level--;
- }
- goto done;
- }
- }
-
- if ((buf[0] == 'i') && (buf[1] == 'f'))
- {
- int truth;
-
- if (level != exec_level)
- {
- /* Not interested */
- level++;
- goto done;
- }
-
- level++;
-
- buf += 2;
- if (buf[0] == 'n')
- {
- truth = 0;
- buf++;
- }
- else truth = 1;
-
- if (!strncmp (buf, "def", 3))
- truth = (truth == is_any_defined(buf + 3, pt->comment_char));
-
- else if (!strncmp (buf, "false", 5))
- truth = !truth;
-
- else if (*buf == '$')
- truth = (truth == is_env_defined (buf + 1, pt->comment_char));
-
- else if (!strncmp (buf, "exists", 6)
- && (SLprep_exists_hook != NULL))
- truth = (truth == (*SLprep_exists_hook)(buf + 6, pt->comment_char));
-
- else if (!strncmp (buf, "eval", 4)
- && (_SLprep_eval_hook != NULL))
- truth = (truth == (*_SLprep_eval_hook) (buf + 4));
-
- else if (0 != strncmp (buf, "true", 4))
- return 1; /* let it bomb */
-
- if (truth)
- {
- exec_level = level;
- prev_exec_level = exec_level;
- }
- }
- else return 1; /* let it bomb. */
-
- done:
-
- if (exec_level < 0) return 1;
-
- pt->this_level = level;
- pt->exec_level = exec_level;
- pt->prev_exec_level = prev_exec_level;
- return 0;
-}
-/*}}}*/
-
-/*{{{ main() - for testing only */
-#if 0
-int main ()
-{
- char buf[1024];
- SLPreprocess_Type pt;
-
- SLprep_open_prep (&pt);
-
- SLdefine_for_ifdef ("UNIX");
-
- while (NULL != fgets (buf, sizeof (buf) - 1, stdin))
- {
- if (SLprep_line_ok (buf, &pt))
- {
- fputs (buf, stdout);
- }
- }
-
- SLprep_close_prep (&pt);
- return 0;
-}
-#endif
-/*}}}*/
diff --git a/mdk-stage1/slang/slproc.c b/mdk-stage1/slang/slproc.c
deleted file mode 100644
index 8b266f28f..000000000
--- a/mdk-stage1/slang/slproc.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/* Process specific system calls */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#ifdef HAVE_IO_H
-# include <io.h> /* for chmod */
-#endif
-
-#ifdef HAVE_PROCESS_H
-# include <process.h> /* for getpid */
-#endif
-
-#if defined(__BORLANDC__)
-# include <dos.h>
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <signal.h>
-#include <time.h>
-
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef HAVE_KILL
-static int kill_cmd (int *pid, int *sig)
-{
- int ret;
-
- if (-1 == (ret = kill ((pid_t) *pid, *sig)))
- _SLerrno_errno = errno;
- return ret;
-}
-#endif
-
-static int getpid_cmd (void)
-{
- return getpid ();
-}
-
-#ifdef HAVE_GETPPID
-static int getppid_cmd (void)
-{
- return getppid ();
-}
-#endif
-
-#ifdef HAVE_GETGID
-static int getgid_cmd (void)
-{
- return getgid ();
-}
-#endif
-
-#ifdef HAVE_GETEGID
-static int getegid_cmd (void)
-{
- return getegid ();
-}
-#endif
-
-#ifdef HAVE_GETEUID
-static int geteuid_cmd (void)
-{
- return geteuid ();
-}
-#endif
-
-#ifdef HAVE_GETUID
-static int getuid_cmd (void)
-{
- return getuid ();
-}
-#endif
-
-#ifdef HAVE_SETGID
-static int setgid_cmd (int *gid)
-{
- if (0 == setgid (*gid))
- return 0;
- _SLerrno_errno = errno;
- return -1;
-}
-#endif
-
-#ifdef HAVE_SETPGID
-static int setpgid_cmd (int *pid, int *pgid)
-{
- if (0 == setpgid (*pid, *pgid))
- return 0;
- _SLerrno_errno = errno;
- return -1;
-}
-#endif
-
-#ifdef HAVE_SETUID
-static int setuid_cmd (int *uid)
-{
- if (0 == setuid (*uid))
- return 0;
- _SLerrno_errno = errno;
- return -1;
-}
-#endif
-
-static SLang_Intrin_Fun_Type Process_Name_Table[] =
-{
- MAKE_INTRINSIC_0("getpid", getpid_cmd, SLANG_INT_TYPE),
-
-#ifdef HAVE_GETPPID
- MAKE_INTRINSIC_0("getppid", getppid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_GETGID
- MAKE_INTRINSIC_0("getgid", getgid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_GETEGID
- MAKE_INTRINSIC_0("getegid", getegid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_GETEUID
- MAKE_INTRINSIC_0("geteuid", geteuid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_GETUID
- MAKE_INTRINSIC_0("getuid", getuid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_SETGID
- MAKE_INTRINSIC_I("setgid", setgid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_SETPGID
- MAKE_INTRINSIC_II("setpgid", setpgid_cmd, SLANG_INT_TYPE),
-#endif
-#ifdef HAVE_SETUID
- MAKE_INTRINSIC_I("setuid", setuid_cmd, SLANG_INT_TYPE),
-#endif
-
-#ifdef HAVE_KILL
- MAKE_INTRINSIC_II("kill", kill_cmd, SLANG_INT_TYPE),
-#endif
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int SLang_init_posix_process (void)
-{
- if ((-1 == SLadd_intrin_fun_table (Process_Name_Table, "__POSIX_PROCESS__"))
- || (-1 == _SLerrno_init ()))
- return -1;
- return 0;
-}
diff --git a/mdk-stage1/slang/slregexp.c b/mdk-stage1/slang/slregexp.c
deleted file mode 100644
index 6592a5a63..000000000
--- a/mdk-stage1/slang/slregexp.c
+++ /dev/null
@@ -1,935 +0,0 @@
-/* ed style regular expressions */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#define SET_BIT(b, n) b[(unsigned int) (n) >> 3] |= 1 << ((unsigned int) (n) % 8)
-#define TEST_BIT(b, n) (b[(unsigned int)(n) >> 3] & (1 << ((unsigned int) (n) % 8)))
-#define LITERAL 1
-#define RANGE 2 /* [...] */
-#define ANY 3 /* . */
-#define BOL 4 /* ^ */
-#define EOL 5 /* $ */
-#define NTH_MATCH 6 /* \1 \2 ... \9 */
-#define OPAREN 7 /* \( */
-#define CPAREN 0x8 /* \) */
-#define ANY_DIGIT 0x9 /* \d */
-#define BOW 0xA /* \< */
-#define EOW 0xB /* \> */
-#if 0
-#define NOT_LITERAL 0xC /* \~ */
-#endif
-#define STAR 0x80 /* * */
-#define LEAST_ONCE 0x40 /* + */
-#define MAYBE_ONCE 0x20 /* ? */
-#define MANY 0x10 /* {n,m} */
-/* The rest are additions */
-#define YES_CASE (STAR | BOL)
-#define NO_CASE (STAR | EOL)
-
-#define UPPERCASE(x) (cs ? (x) : UPPER_CASE(x))
-#define LOWERCASE(x) (cs ? (x) : LOWER_CASE(x))
-
-static unsigned char Word_Chars[256];
-#define IS_WORD_CHAR(x) Word_Chars[(unsigned int) (x)]
-
-#if 0
-static int ctx->open_paren_number;
-static char Closed_Paren_Matches[10];
-
-static SLRegexp_Type *This_Reg;
-static unsigned char *This_Str;
-#endif
-
-typedef struct
-{
- SLRegexp_Type *reg;
- unsigned char *str;
- unsigned int len;
- char closed_paren_matches[10];
- int open_paren_number;
-}
-Re_Context_Type;
-
-static unsigned char *do_nth_match (Re_Context_Type *ctx, int n, unsigned char *str, unsigned char *estr)
-{
- unsigned char *bpos;
-
- if (ctx->closed_paren_matches[n] == 0)
- return NULL;
-
- bpos = ctx->reg->beg_matches[n] + ctx->str;
- n = ctx->reg->end_matches[n];
- if (n == 0) return(str);
- if (n > (int) (estr - str)) return (NULL);
-
- /* This needs fixed for case sensitive match */
- if (0 != strncmp((char *) str, (char *) bpos, (unsigned int) n)) return (NULL);
- str += n;
- return (str);
-}
-
-/* returns pointer to the end of regexp or NULL */
-static unsigned char *regexp_looking_at (Re_Context_Type *ctx, register unsigned char *str, unsigned char *estr, unsigned char *buf, register int cs)
-{
- register unsigned char p, p1;
- unsigned char *save_str, *tmpstr;
- int n, n0, n1;
- int save_num_open;
- char save_closed_matches[10];
-
- p = *buf++;
-
- while (p != 0)
- {
- /* p1 = UPPERCASE(*buf); */
- /* if (str < estr) c = UPPERCASE(*str); */
-
- switch((unsigned char) p)
- {
- case BOW:
- if ((str != ctx->str)
- && ((str >= estr)
- || IS_WORD_CHAR(*(str - 1))
- || (0 == IS_WORD_CHAR(*str)))) return NULL;
- break;
-
- case EOW:
- if ((str < estr)
- && IS_WORD_CHAR (*str)) return NULL;
- break;
-
- case YES_CASE: cs = 1; break;
- case NO_CASE: cs = 0; break;
-
- case OPAREN:
- ctx->open_paren_number++;
- ctx->reg->beg_matches[ctx->open_paren_number] = (int) (str - ctx->str);
- break;
- case CPAREN:
- n = ctx->open_paren_number;
- while (n > 0)
- {
- if (ctx->closed_paren_matches[n] != 0)
- {
- n--;
- continue;
- }
- ctx->closed_paren_matches[n] = 1;
- ctx->reg->end_matches[n] = (unsigned int) (str - (ctx->str + ctx->reg->beg_matches[n]));
- break;
- }
- break;
-#ifdef NOT_LITERAL
- case NOT_LITERAL:
- if ((str >= estr) || (*buf == UPPERCASE(*str))) return (NULL);
- str++; buf++;
- break;
-
- case MAYBE_ONCE | NOT_LITERAL:
- save_str = str;
- if ((str < estr) && (*buf != UPPERCASE(*str))) str++;
- buf++;
- goto match_rest;
-
- case NOT_LITERAL | LEAST_ONCE: /* match at least once */
- if ((str >= estr) || (UPPERCASE(*str) == UPPERCASE(*buf))) return (NULL);
- str++;
- /* drop */
- case STAR | NOT_LITERAL:
- save_str = str; p1 = *buf;
- while ((str < estr) && (UPPERCASE(*str) != p1)) str++;
- buf++;
- goto match_rest;
-
- /* this type consists of the expression + two bytes that
- determine number of matches to perform */
- case MANY | NOT_LITERAL:
- p1 = *buf; buf++;
- n = n0 = (int) (unsigned char) *buf++;
- /* minimum number to match--- could be 0 */
- n1 = (int) (unsigned char) *buf++;
- /* maximum number to match */
-
- while (n && (str < estr) && (p1 != *str))
- {
- n--;
- str++;
- }
- if (n) return (NULL);
-
- save_str = str;
- n = n1 - n0;
- while (n && (str < estr) && (p1 != *str))
- {
- n--;
- str++;
- }
- goto match_rest;
-#endif /* NOT_LITERAL */
- case LITERAL:
- if ((str >= estr) || (*buf != UPPERCASE(*str))) return (NULL);
- str++; buf++;
- break;
-
- case MAYBE_ONCE | LITERAL:
- save_str = str;
- if ((str < estr) && (*buf == UPPERCASE(*str))) str++;
- buf++;
- goto match_rest;
-
- case LITERAL | LEAST_ONCE: /* match at least once */
- if ((str >= estr) || (UPPERCASE(*str) != UPPERCASE(*buf))) return (NULL);
- str++;
- /* drop */
- case STAR | LITERAL:
- save_str = str; p1 = *buf;
- while ((str < estr) && (UPPERCASE(*str) == p1)) str++;
- buf++;
- goto match_rest;
-
- /* this type consists of the expression + two bytes that
- determine number of matches to perform */
- case MANY | LITERAL:
- p1 = *buf; buf++;
- n = n0 = (int) (unsigned char) *buf++;
- /* minimum number to match--- could be 0 */
- n1 = (int) (unsigned char) *buf++;
- /* maximum number to match */
-
- while (n && (str < estr) && (p1 == *str))
- {
- n--;
- str++;
- }
- if (n) return (NULL);
-
- save_str = str;
- n = n1 - n0;
- while (n && (str < estr) && (p1 == *str))
- {
- n--;
- str++;
- }
- goto match_rest;
-
- case NTH_MATCH:
- if ((str = do_nth_match(ctx, (int) (unsigned char) *buf, str, estr)) == NULL) return(NULL);
- buf++;
- break;
-
- case MAYBE_ONCE | NTH_MATCH:
- save_str = str;
- tmpstr = do_nth_match (ctx, (int) (unsigned char) *buf, str, estr);
- buf++;
- if (tmpstr != NULL)
- {
- str = tmpstr;
- goto match_rest;
- }
- continue;
-
- case LEAST_ONCE | NTH_MATCH:
- if ((str = do_nth_match(ctx, (int) (unsigned char) *buf, str, estr)) == NULL) return(NULL);
- /* drop */
- case STAR | NTH_MATCH:
- save_str = str;
- while (NULL != (tmpstr = do_nth_match(ctx, (int) (unsigned char) *buf, str, estr)))
- {
- str = tmpstr;
- }
- buf++;
- goto match_rest;
-
- case MANY | NTH_MATCH: return(NULL);
- /* needs done */
-
- case RANGE:
- if (str >= estr) return (NULL);
- if (TEST_BIT(buf, UPPERCASE(*str)) == 0) return (NULL);
- buf += 32; str++;
- break;
-
- case MAYBE_ONCE | RANGE:
- save_str = str;
- if ((str < estr) && TEST_BIT(buf, UPPERCASE(*str))) str++;
- buf += 32;
- goto match_rest;
-
- case LEAST_ONCE | RANGE:
- if ((str >= estr) || (0 == TEST_BIT(buf, UPPERCASE(*str)))) return NULL;
- str++;
- /* drop */
- case STAR | RANGE:
- save_str = str;
- while ((str < estr) && TEST_BIT(buf, UPPERCASE(*str))) str++;
- buf += 32;
- goto match_rest;
-
- /* The first 32 bytes correspond to the range and the two
- * following bytes indicate the min and max number of matches.
- */
- case MANY | RANGE:
- /* minimum number to match--- could be 0 */
- n = n0 = (int) (unsigned char) *(buf + 32);
- /* maximum number to match */
- n1 = (int) (unsigned char) *(buf + 33);
-
- while (n && (str < estr) && (TEST_BIT(buf, UPPERCASE(*str))))
- {
- n--;
- str++;
- }
- if (n) return (NULL);
- save_str = str;
- n = n1 - n0;
- while (n && (str < estr) && (TEST_BIT(buf, UPPERCASE(*str))))
- {
- n--;
- str++;
- }
- buf += 34; /* 32 + 2 */
- goto match_rest;
-
- case ANY_DIGIT:
- if ((str >= estr) || (*str > '9') || (*str < '0')) return (NULL);
- str++;
- break;
-
- case MAYBE_ONCE | ANY_DIGIT:
- save_str = str;
- if ((str < estr) && ((*str > '9') || (*str < '0'))) str++;
- goto match_rest;
-
- case LEAST_ONCE | ANY_DIGIT:
- if ((str >= estr) || ((*str > '9') || (*str < '0'))) return NULL;
- str++;
- /* drop */
- case STAR | ANY_DIGIT:
- save_str = str;
- while ((str < estr) && ((*str <= '9') && (*str >= '0'))) str++;
- goto match_rest;
-
- case MANY | ANY_DIGIT:
- /* needs finished */
- return (NULL);
-
- case ANY:
- if ((str >= estr) || (*str == '\n')) return (NULL);
- str++;
- break;
-
- case MAYBE_ONCE | ANY:
- save_str = str;
- if ((str < estr) && (*str != '\n')) str++;
- goto match_rest;
-
- case LEAST_ONCE | ANY:
- if ((str >= estr) || (*str == '\n')) return (NULL);
- str++;
- /* drop */
- case STAR | ANY:
- save_str = str;
- while ((str < estr) && (*str != '\n')) str++;
- goto match_rest;
-
- case MANY | ANY:
- return (NULL);
- /* needs finished */
-
- case EOL:
- if ((str >= estr) || (*str == '\n')) return (str);
- return(NULL);
-
- default: return (NULL);
- }
- p = *buf++;
- continue;
-
- match_rest:
- if (save_str == str)
- {
- p = *buf++;
- continue;
- }
-
- /* if (p == EOL)
- * {
- * if (str < estr) return (NULL); else return (str);
- * }
- */
-
- SLMEMCPY(save_closed_matches, ctx->closed_paren_matches, sizeof(save_closed_matches));
- save_num_open = ctx->open_paren_number;
- while (str >= save_str)
- {
- tmpstr = regexp_looking_at (ctx, str, estr, buf, cs);
- if (tmpstr != NULL) return(tmpstr);
- SLMEMCPY(ctx->closed_paren_matches, save_closed_matches, sizeof(ctx->closed_paren_matches));
- ctx->open_paren_number = save_num_open;
- str--;
- }
- return NULL;
- }
- if ((p != 0) && (p != EOL)) return (NULL); else return (str);
-}
-
-static void
-fixup_beg_end_matches (Re_Context_Type *ctx, SLRegexp_Type *r, unsigned char *str, unsigned char *epos)
-{
- int i;
-
- if (str == NULL)
- {
- r->beg_matches[0] = -1;
- r->end_matches[0] = 0;
- SLMEMSET(ctx->closed_paren_matches, 0, sizeof(ctx->closed_paren_matches));
- }
- else
- {
- r->beg_matches[0] = (int) (str - ctx->str);
- r->end_matches[0] = (unsigned int) (epos - str);
- }
-
- for (i = 1; i < 10; i++)
- {
- if (ctx->closed_paren_matches [i] == 0)
- {
- r->beg_matches[i] = -1;
- r->end_matches[i] = 0;
- }
- }
-}
-
-static void init_re_context (Re_Context_Type *ctx, SLRegexp_Type *reg,
- unsigned char *str, unsigned int len)
-{
- memset ((char *) ctx, 0, sizeof (Re_Context_Type));
- ctx->reg = reg;
- ctx->str = str;
- ctx->len = len;
-}
-
-unsigned char *SLang_regexp_match(unsigned char *str,
- unsigned int len, SLRegexp_Type *reg)
-{
- register unsigned char c = 0, *estr = str + len;
- int cs = reg->case_sensitive, lit = 0;
- unsigned char *buf = reg->buf, *epos = NULL;
- Re_Context_Type ctx_buf;
-
- if (reg->min_length > len) return NULL;
-
- init_re_context (&ctx_buf, reg, str, len);
-
- if (*buf == BOL)
- {
- if (NULL == (epos = regexp_looking_at (&ctx_buf, str, estr, buf + 1, cs)))
- str = NULL;
-
- fixup_beg_end_matches (&ctx_buf, reg, str, epos);
- return str;
- }
-
- if (*buf == NO_CASE)
- {
- buf++; cs = 0;
- }
-
- if (*buf == YES_CASE)
- {
- buf++; cs = 1;
- }
-
- if (*buf == LITERAL)
- {
- lit = 1;
- c = *(buf + 1);
- }
- else if ((*buf == OPAREN) && (*(buf + 1) == LITERAL))
- {
- lit = 1;
- c = *(buf + 2);
- }
-
- while (str < estr)
- {
- ctx_buf.open_paren_number = 0;
- memset (ctx_buf.closed_paren_matches, 0, sizeof(ctx_buf.closed_paren_matches));
- /* take care of leading chars */
- if (lit)
- {
- while ((str < estr) && (c != UPPERCASE(*str))) str++;
- if (str >= estr)
- break; /* failed */
- }
-
- if (NULL != (epos = regexp_looking_at(&ctx_buf, str, estr, buf, cs)))
- {
- fixup_beg_end_matches (&ctx_buf, reg, str, epos);
- return str;
- }
- str++;
- }
- fixup_beg_end_matches (&ctx_buf, reg, NULL, epos);
- return NULL;
-}
-
-static unsigned char *convert_digit(unsigned char *pat, int *nn)
-{
- int n = 0, m = 0;
- unsigned char c;
- while (c = (unsigned char) *pat, (c <= '9') && (c >= '0'))
- {
- pat++;
- n = 10 * n + (c - '0');
- m++;
- }
- if (m == 0)
- {
- return (NULL);
- }
- *nn = n;
- return pat;
-}
-
-#define ERROR return (int) (pat - reg->pat)
-
-/* Returns 0 if successful or offset in pattern of error */
-int SLang_regexp_compile (SLRegexp_Type *reg)
-{
- register unsigned char *buf, *ebuf, *pat;
- unsigned char *last = NULL, *tmppat;
- register unsigned char c;
- int i, reverse = 0, n, cs;
- int oparen = 0, nparen = 0;
- /* substring stuff */
- int count, last_count, this_max_mm = 0, max_mm = 0, ordinary_search,
- no_osearch = 0, min_length = 0;
- unsigned char *mm_p = NULL, *this_mm_p = NULL;
- static int already_initialized;
-
- reg->beg_matches[0] = reg->end_matches[0] = 0;
- buf = reg->buf;
- ebuf = (reg->buf + reg->buf_len) - 2; /* make some room */
- pat = reg->pat;
- cs = reg->case_sensitive;
-
- if (already_initialized == 0)
- {
- SLang_init_case_tables ();
-#ifdef IBMPC_SYSTEM
- SLmake_lut (Word_Chars, (unsigned char *) "_0-9a-zA-Z\200-\232\240-\245\341-\353", 0);
-#else
- SLmake_lut (Word_Chars, (unsigned char *) "_0-9a-zA-Z\277-\326\330-\336\340-\366\370-\376", 0);
-#endif
- already_initialized = 1;
- }
-
- i = 1; while (i < 10)
- {
- reg->beg_matches[i] = -1;
- reg->end_matches[i] = 0;
- i++;
- }
-
- if (*pat == '\\')
- {
- if (pat[1] == 'c')
- {
- cs = 1;
- pat += 2;
- no_osearch = 1;
- }
- else if (pat[1] == 'C')
- {
- cs = 0;
- pat += 2;
- no_osearch = 1;
- }
- }
-
- if (*pat == '^')
- {
- pat++;
- *buf++ = BOL;
- reg->must_match_bol = 1;
- }
- else reg->must_match_bol = 0;
-
- if (cs != reg->case_sensitive)
- {
- if (cs) *buf++ = YES_CASE;
- else *buf++ = NO_CASE;
- }
-
- *buf = 0;
-
- last_count = count = 0;
- while ((c = *pat++) != 0)
- {
- if (buf >= ebuf - 3)
- {
- SLang_doerror ("Pattern too large to be compiled.");
- ERROR;
- }
-
- count++;
- switch (c)
- {
- case '$':
- if (*pat != 0) goto literal_char;
- *buf++ = EOL;
- break;
-
- case '\\':
- c = *pat++;
- no_osearch = 1;
- switch(c)
- {
- case 'e': c = 033; goto literal_char;
- case 'n': c = '\n'; goto literal_char;
- case 't': c = '\t'; goto literal_char;
- case 'C': cs = 0; *buf++ = NO_CASE; break;
- case 'c': cs = 1; *buf++ = YES_CASE; break;
- case '1': case '2': case '3': case '4': case '5':
- case '6': case '7': case '8': case '9':
- c = c - '0';
- if ((int) c > nparen) ERROR;
- last = buf;
- *buf++ = NTH_MATCH; *buf++ = c;
- break;
-#ifdef NOT_LITERAL
- case '~': /* slang extension */
- if ((c = *pat) == 0) ERROR;
- pat++;
- last = buf;
- *buf++ = NOT_LITERAL;
- *buf++ = c;
- min_length++;
- break;
-#endif
- case 'd': /* slang extension */
- last = buf;
- *buf++ = ANY_DIGIT;
- min_length++;
- break;
-
- case '<':
- last = NULL;
- *buf++ = BOW;
- break;
-
- case '>':
- last = NULL;
- *buf++ = EOW;
- break;
-
- case '{':
- if (last == NULL) goto literal_char;
- *last |= MANY;
- tmppat = convert_digit(pat, &n);
- if (tmppat == NULL) ERROR;
- pat = tmppat;
- *buf++ = n;
-
- min_length += (n - 1);
-
- if (*pat == '\\')
- {
- *buf++ = n;
- }
- else if (*pat == ',')
- {
- pat++;
- if (*pat == '\\')
- {
- n = 255;
- }
- else
- {
- tmppat = convert_digit(pat, &n);
- if (tmppat == NULL) ERROR;
- pat = tmppat;
- if (*pat != '\\') ERROR;
- }
- *buf++ = n;
- }
- else ERROR;
- last = NULL;
- pat++;
- if (*pat != '}') ERROR;
- pat++;
- break; /* case '{' */
-
- case '(':
- oparen++;
- if (oparen > 9) ERROR;
- *buf++ = OPAREN;
- break;
- case ')':
- if (oparen == 0) ERROR;
- oparen--;
- nparen++;
- *buf++ = CPAREN;
- break;
-
- case 0: ERROR;
- default:
- goto literal_char;
- }
- break;
-
- case '[':
-
- *buf = RANGE;
- last = buf++;
-
- if (buf + 32 >= ebuf) ERROR;
-
- for (i = 0; i < 32; i++) buf[i] = 0;
- c = *pat++;
- if (c == '^')
- {
- reverse = 1;
- SET_BIT(buf, '\n');
- c = *pat++;
- }
-
- if (c == ']')
- {
- SET_BIT(buf, c);
- c = *pat++;
- }
- while (c && (c != ']'))
- {
- if (c == '\\')
- {
- c = *pat++;
- switch(c)
- {
- case 'n': c = '\n'; break;
- case 't': c = '\t'; break;
- case 0: ERROR;
- }
- }
-
- if (*pat == '-')
- {
- pat++;
- while (c < *pat)
- {
- if (cs == 0)
- {
- SET_BIT(buf, UPPERCASE(c));
- SET_BIT(buf, LOWERCASE(c));
- }
- else SET_BIT(buf, c);
- c++;
- }
- }
- if (cs == 0)
- {
- SET_BIT(buf, UPPERCASE(c));
- SET_BIT(buf, LOWERCASE(c));
- }
- else SET_BIT(buf, c);
- c = *pat++;
- }
- if (c != ']') ERROR;
- if (reverse) for (i = 0; i < 32; i++) buf[i] = buf[i] ^ 0xFF;
- reverse = 0;
- buf += 32;
- min_length++;
- break;
-
- case '.':
- last = buf;
- *buf++ = ANY;
- min_length++;
- break;
-
- case '*':
- if (last == NULL) goto literal_char;
- *last |= STAR;
- min_length--;
- last = NULL;
- break;
-
- case '+':
- if (last == NULL) goto literal_char;
- *last |= LEAST_ONCE;
- last = NULL;
- break;
-
- case '?':
- if (last == NULL) goto literal_char;
- *last |= MAYBE_ONCE;
- last = NULL;
- min_length--;
- break;
-
- literal_char:
- default:
- /* This is to keep track of longest substring */
- min_length++;
- this_max_mm++;
- if (last_count + 1 == count)
- {
- if (this_max_mm == 1)
- {
- this_mm_p = buf;
- }
- else if (max_mm < this_max_mm)
- {
- mm_p = this_mm_p;
- max_mm = this_max_mm;
- }
- }
- else
- {
- this_mm_p = buf;
- this_max_mm = 1;
- }
-
- last_count = count;
-
- last = buf;
- *buf++ = LITERAL;
- *buf++ = UPPERCASE(c);
- }
- }
- *buf = 0;
- /* Check for ordinary search */
- ebuf = buf;
- buf = reg->buf;
-
- if (no_osearch) ordinary_search = 0;
- else
- {
- ordinary_search = 1;
- while (buf < ebuf)
- {
- if (*buf != LITERAL)
- {
- ordinary_search = 0;
- break;
- }
- buf += 2;
- }
- }
-
- reg->osearch = ordinary_search;
- reg->must_match_str[15] = 0;
- reg->min_length = (min_length > 0) ? (unsigned int) min_length : 0;
- if (ordinary_search)
- {
- strncpy((char *) reg->must_match_str, (char *) reg->pat, 15);
- reg->must_match = 1;
- return(0);
- }
- /* check for longest substring of pattern */
- reg->must_match = 0;
- if ((mm_p == NULL) && (this_mm_p != NULL)) mm_p = this_mm_p;
- if (mm_p == NULL)
- {
- return (0);
- }
- n = 15;
- pat = reg->must_match_str;
- buf = mm_p;
- while (n--)
- {
- if (*buf++ != LITERAL) break;
- *pat++ = *buf++;
- }
- *pat = 0;
- if (pat != reg->must_match_str) reg->must_match = 1;
- return(0);
-}
-
-char *SLregexp_quote_string (char *re, char *buf, unsigned int buflen)
-{
- char ch;
- char *b, *bmax;
-
- if (re == NULL) return NULL;
-
- b = buf;
- bmax = buf + buflen;
-
- while (b < bmax)
- {
- switch (ch = *re++)
- {
- case 0:
- *b = 0;
- return buf;
-
- case '$':
- case '\\':
- case '[':
- case ']':
- case '.':
- case '^':
- case '*':
- case '+':
- case '?':
- *b++ = '\\';
- if (b == bmax) break;
- /* drop */
-
- default:
- *b++ = ch;
- }
- }
- return NULL;
-}
-
-#if 0
-#define MAX_EXP 4096
-int main(int argc, char **argv)
-{
- FILE *fp;
- char *regexp, *file;
- char expbuf[MAX_EXP], buf[512];
- SLRegexp_Type reg;
-
- file = argv[2];
- regexp = argv[1];
-
- if (NULL == (fp = fopen(file, "r")))
- {
- fprintf(stderr, "File not open\n");
- return(1);
- }
-
- reg.buf = expbuf;
- reg.buf_len = MAX_EXP;
- reg.pat = regexp;
- reg.case_sensitive = 1;
-
- if (!regexp_compile(&reg)) while (NULL != fgets(buf, 511, fp))
- {
- if (reg.osearch)
- {
- if (NULL == strstr(buf, reg.pat)) continue;
- }
- else
- {
- if (reg.must_match && (NULL == strstr(buf, reg.must_match_str))) continue;
- if (0 == regexp_match(buf, buf + strlen(buf), &reg)) continue;
- }
-
- fputs(buf, stdout);
- }
- return (0);
-}
-#endif
diff --git a/mdk-stage1/slang/slrline.c b/mdk-stage1/slang/slrline.c
deleted file mode 100644
index 1874be0bb..000000000
--- a/mdk-stage1/slang/slrline.c
+++ /dev/null
@@ -1,836 +0,0 @@
-/* SLang_read_line interface --- uses SLang tty stuff */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef REAL_UNIX_SYSTEM
-int SLang_RL_EOF_Char = 4;
-#else
-int SLang_RL_EOF_Char = 26;
-#endif
-
-int SLang_Rline_Quit;
-static SLang_RLine_Info_Type *This_RLI;
-
-static unsigned char Char_Widths[256];
-static void position_cursor (int);
-
-static void rl_beep (void)
-{
- putc(7, stdout);
- fflush (stdout);
-}
-
-/* editing functions */
-static int rl_bol (void)
-{
- if (This_RLI->point == 0) return 0;
- This_RLI->point = 0;
- return 1;
-}
-
-static int rl_eol (void)
-{
- if (This_RLI->point == This_RLI->len) return 0;
- This_RLI->point = This_RLI->len;
- return 1;
-}
-
-static int rl_right (void)
-{
- if (This_RLI->point == This_RLI->len) return 0;
- This_RLI->point++;
- return 1;
-}
-
-static int rl_left (void)
-{
- if (This_RLI->point == 0) return 0;
- This_RLI->point--;
- return 1;
-}
-
-static int rl_self_insert (void)
-{
- unsigned char *pmin, *p;
-
- if (This_RLI->len == This_RLI->buf_len)
- {
- rl_beep ();
- return 0;
- }
-
- pmin = This_RLI->buf + This_RLI->point;
- p = This_RLI->buf + This_RLI->len;
- while (p > pmin)
- {
- *p = *(p - 1);
- p--;
- }
- *pmin = SLang_Last_Key_Char;
-
- This_RLI->len++;
- This_RLI->point++;
- if ((This_RLI->curs_pos + 2 >= This_RLI->edit_width)
- || (This_RLI->tt_insert == NULL)
- || (Char_Widths[SLang_Last_Key_Char] != 1)) return 1;
-
- (*This_RLI->tt_insert)((char) SLang_Last_Key_Char);
- /* update screen buf */
- p = This_RLI->old_upd + (This_RLI->len - 1);
- pmin = This_RLI->old_upd + (This_RLI->point - 1);
- while (p > pmin)
- {
- *p = *(p - 1);
- p--;
- }
- *pmin = SLang_Last_Key_Char;
- return 0;
-}
-
-int SLang_rline_insert (char *s)
-{
- unsigned char *pmin, *p;
- int n;
-
- n = strlen (s);
- if (n > This_RLI->buf_len - This_RLI->len)
- n = This_RLI->buf_len - This_RLI->len;
-
- if (n == 0) return 0;
-
- pmin = This_RLI->buf + This_RLI->point;
- p = This_RLI->buf + (This_RLI->len - 1);
-
- while (p >= pmin)
- {
- *(p + n) = *p;
- p--;
- }
- SLMEMCPY ((char *) pmin, s, n);
-
- This_RLI->len += n;
- This_RLI->point += n;
- return n;
-}
-
-static int rl_deln (int n)
-{
- unsigned char *pmax, *p;
-
- p = This_RLI->buf + This_RLI->point;
- pmax = This_RLI->buf + This_RLI->len;
-
- if (p + n > pmax) n = (int) (pmax - p);
- while (p < pmax)
- {
- *p = *(p + n);
- p++;
- }
- This_RLI->len -= n;
- return n;
-}
-
-static int rl_del (void)
-{
- return rl_deln(1);
-}
-
-static int rl_quote_insert (void)
-{
- int err = SLang_Error;
- SLang_Error = 0;
- SLang_Last_Key_Char = (*This_RLI->getkey)();
- rl_self_insert ();
- if (SLang_Error == SL_USER_BREAK) SLang_Error = 0;
- else SLang_Error = err;
- return 1;
-}
-
-static int rl_trim (void)
-{
- unsigned char *p, *pmax, *p1;
- p = This_RLI->buf + This_RLI->point;
- pmax = This_RLI->buf + This_RLI->len;
-
- if (p == pmax)
- {
- if (p == This_RLI->buf) return 0;
- p--;
- }
-
- if ((*p != ' ') && (*p != '\t')) return 0;
- p1 = p;
- while ((p1 < pmax) && ((*p1 == ' ') || (*p1 == '\t'))) p1++;
- pmax = p1;
- p1 = This_RLI->buf;
-
- while ((p >= p1) && ((*p == ' ') || (*p == '\t'))) p--;
- if (p == pmax) return 0;
- p++;
-
- This_RLI->point = (int) (p - p1);
- return rl_deln ((int) (pmax - p));
-}
-
-static int rl_bdel (void)
-{
- if (rl_left()) return rl_del();
- return 0;
-}
-
-static int rl_deleol (void)
-{
- if (This_RLI->point == This_RLI->len) return 0;
- *(This_RLI->buf + This_RLI->point) = 0;
- This_RLI->len = This_RLI->point;
- return 1;
-}
-
-static int rl_delete_line (void)
-{
- This_RLI->point = 0;
- *(This_RLI->buf + This_RLI->point) = 0;
- This_RLI->len = 0;
- return 1;
-}
-
-static int rl_enter (void)
-{
- *(This_RLI->buf + This_RLI->len) = 0;
- SLang_Rline_Quit = 1;
- return 1;
-}
-
-static SLKeyMap_List_Type *RL_Keymap;
-
-/* This update is designed for dumb terminals. It assumes only that the
- * terminal can backspace via ^H, and move cursor to start of line via ^M.
- * There is a hook so the user can provide a more sophisticated update if
- * necessary.
- */
-
-static void position_cursor (int col)
-{
- unsigned char *p, *pmax;
- int dc;
-
- if (col == This_RLI->curs_pos)
- {
- fflush (stdout);
- return;
- }
-
- if (This_RLI->tt_goto_column != NULL)
- {
- (*This_RLI->tt_goto_column)(col);
- This_RLI->curs_pos = col;
- fflush (stdout);
- return;
- }
-
- dc = This_RLI->curs_pos - col;
- if (dc < 0)
- {
- p = This_RLI->new_upd + This_RLI->curs_pos;
- pmax = This_RLI->new_upd + col;
- while (p < pmax) putc((char) *p++, stdout);
- }
- else
- {
- if (dc < col)
- {
- while (dc--) putc(8, stdout);
- }
- else
- {
- putc('\r', stdout);
- p = This_RLI->new_upd;
- pmax = This_RLI->new_upd + col;
- while (p < pmax) putc((char) *p++, stdout);
- }
- }
- This_RLI->curs_pos = col;
- fflush (stdout);
-}
-
-static void erase_eol (SLang_RLine_Info_Type *rli)
-{
- unsigned char *p, *pmax;
-
- p = rli->old_upd + rli->curs_pos;
- pmax = rli->old_upd + rli->old_upd_len;
-
- while (p++ < pmax) putc(' ', stdout);
-
- rli->curs_pos = rli->old_upd_len;
-}
-
-static unsigned char *spit_out(SLang_RLine_Info_Type *rli, unsigned char *p)
-{
- unsigned char *pmax;
- position_cursor ((int) (p - rli->new_upd));
- pmax = rli->new_upd + rli->new_upd_len;
- while (p < pmax) putc((char) *p++, stdout);
- rli->curs_pos = rli->new_upd_len;
- return pmax;
-}
-
-static void really_update (SLang_RLine_Info_Type *rli, int new_curs_position)
-{
- unsigned char *b = rli->old_upd, *p = rli->new_upd, chb, chp;
- unsigned char *pmax;
-
- if (rli->update_hook != NULL)
- {
- (*rli->update_hook)(p, rli->edit_width, new_curs_position);
- }
- else
- {
- pmax = p + rli->edit_width;
- while (p < pmax)
- {
- chb = *b++; chp = *p++;
- if (chb == chp) continue;
-
- if (rli->old_upd_len <= rli->new_upd_len)
- {
- /* easy one */
- (void) spit_out (rli, p - 1);
- break;
- }
- spit_out(rli, p - 1);
- erase_eol (rli);
- break;
- }
- position_cursor (new_curs_position);
- }
-
- /* update finished, so swap */
-
- rli->old_upd_len = rli->new_upd_len;
- p = rli->old_upd;
- rli->old_upd = rli->new_upd;
- rli->new_upd = p;
-}
-
-static void RLupdate (SLang_RLine_Info_Type *rli)
-{
- int len, dlen, start_len = 0, prompt_len = 0, tw = 0, count;
- int want_cursor_pos;
- unsigned char *b, chb, *b_point, *p;
- int no_echo;
-
- no_echo = rli->flags & SL_RLINE_NO_ECHO;
-
- b_point = (unsigned char *) (rli->buf + rli->point);
- *(rli->buf + rli->len) = 0;
-
- /* expand characters for output buffer --- handle prompt first.
- * Do two passes --- first to find out where to begin upon horiz
- * scroll and the second to actually fill the buffer. */
- len = 0;
- count = 2; /* once for prompt and once for buf */
-
- b = (unsigned char *) rli->prompt;
- while (count--)
- {
- if ((count == 0) && no_echo)
- break;
-
- /* The prompt could be NULL */
- if (b != NULL) while ((chb = *b) != 0)
- {
- /* This will ensure that the screen is scrolled a third of the edit
- * width each time */
- if (b_point == b) break;
- dlen = Char_Widths[chb];
- if ((chb == '\t') && tw)
- {
- dlen = tw * ((len - prompt_len) / tw + 1) - (len - prompt_len);
- }
- len += dlen;
- b++;
- }
- tw = rli->tab;
- b = (unsigned char *) rli->buf;
- if (count == 1) want_cursor_pos = prompt_len = len;
- }
-
- if (len < rli->edit_width - rli->dhscroll) start_len = 0;
- else if ((rli->start_column > len)
- || (rli->start_column + rli->edit_width <= len))
- {
- start_len = len - (rli->edit_width - rli->dhscroll);
- if (start_len < 0) start_len = 0;
- }
- else start_len = rli->start_column;
- rli->start_column = start_len;
-
- want_cursor_pos = len - start_len;
-
- /* second pass */
- p = rli->new_upd;
-
- len = 0;
- count = 2;
- b = (unsigned char *) rli->prompt;
- if (b == NULL) b = (unsigned char *) "";
-
- while ((len < start_len) && (*b))
- {
- len += Char_Widths[*b++];
- }
-
- tw = 0;
- if (*b == 0)
- {
- b = (unsigned char *) rli->buf;
- while (len < start_len)
- {
- len += Char_Widths[*b++];
- }
- tw = rli->tab;
- count--;
- }
-
- len = 0;
- while (count--)
- {
- if ((count == 0) && (no_echo))
- break;
-
- while ((len < rli->edit_width) && ((chb = *b++) != 0))
- {
- dlen = Char_Widths[chb];
- if (dlen == 1) *p++ = chb;
- else
- {
- if ((chb == '\t') && tw)
- {
- dlen = tw * ((len + start_len - prompt_len) / tw + 1) - (len + start_len - prompt_len);
- len += dlen; /* ok since dlen comes out 0 */
- if (len > rli->edit_width) dlen = len - rli->edit_width;
- while (dlen--) *p++ = ' ';
- dlen = 0;
- }
- else
- {
- if (dlen == 3)
- {
- chb &= 0x7F;
- *p++ = '~';
- }
-
- *p++ = '^';
- if (chb == 127) *p++ = '?';
- else *p++ = chb + '@';
- }
- }
- len += dlen;
- }
- /* if (start_len > prompt_len) break; */
- tw = rli->tab;
- b = (unsigned char *) rli->buf;
- }
-
- rli->new_upd_len = (int) (p - rli->new_upd);
- while (p < rli->new_upd + rli->edit_width) *p++ = ' ';
- really_update (rli, want_cursor_pos);
-}
-
-void SLrline_redraw (SLang_RLine_Info_Type *rli)
-{
- unsigned char *p = rli->new_upd;
- unsigned char *pmax = p + rli->edit_width;
- while (p < pmax) *p++ = ' ';
- rli->new_upd_len = rli->edit_width;
- really_update (rli, 0);
- RLupdate (rli);
-}
-
-static int rl_eof_insert (void)
-{
- if (This_RLI->len == 0)
- {
- SLang_Last_Key_Char = SLang_RL_EOF_Char;
- /* rl_self_insert (); */
- return rl_enter ();
- }
- return 0;
-}
-
-/* This is very naive. It knows very little about nesting and nothing
- * about quoting.
- */
-static void blink_match (SLang_RLine_Info_Type *rli)
-{
- unsigned char bra, ket;
- unsigned int delta_column;
- unsigned char *p, *pmin;
- int dq_level, sq_level;
- int level;
-
- pmin = rli->buf;
- p = pmin + rli->point;
- if (pmin == p)
- return;
-
- ket = SLang_Last_Key_Char;
- switch (ket)
- {
- case ')':
- bra = '(';
- break;
- case ']':
- bra = '[';
- break;
- case '}':
- bra = '{';
- break;
- default:
- return;
- }
-
- level = 0;
- sq_level = dq_level = 0;
-
- delta_column = 0;
- while (p > pmin)
- {
- char ch;
-
- p--;
- delta_column++;
- ch = *p;
-
- if (ch == ket)
- {
- if ((dq_level == 0) && (sq_level == 0))
- level++;
- }
- else if (ch == bra)
- {
- if ((dq_level != 0) || (sq_level != 0))
- continue;
-
- level--;
- if (level == 0)
- {
- rli->point -= delta_column;
- RLupdate (rli);
- (*rli->input_pending)(10);
- rli->point += delta_column;
- RLupdate (rli);
- break;
- }
- if (level < 0)
- break;
- }
- else if (ch == '"') dq_level = !dq_level;
- else if (ch == '\'') sq_level = !sq_level;
- }
-}
-
-int SLang_read_line (SLang_RLine_Info_Type *rli)
-{
- unsigned char *p, *pmax;
- SLang_Key_Type *key;
-
- SLang_Rline_Quit = 0;
- This_RLI = rli;
- p = rli->old_upd; pmax = p + rli->edit_width;
- while (p < pmax) *p++ = ' ';
-
- /* Sanity checking */
- rli->len = strlen ((char *) rli->buf);
- if (rli->len >= rli->buf_len)
- {
- rli->len = 0;
- *rli->buf = 0;
- }
- if (rli->point > rli->len) rli->point = rli->len;
- if (rli->point < 0) rli->point = 0;
-
- rli->curs_pos = rli->start_column = 0;
- rli->new_upd_len = rli->old_upd_len = 0;
-
- This_RLI->last_fun = NULL;
- if (rli->update_hook == NULL)
- putc ('\r', stdout);
-
- RLupdate (rli);
-
- while (1)
- {
- key = SLang_do_key (RL_Keymap, (int (*)(void)) rli->getkey);
-
- if ((key == NULL) || (key->f.f == NULL))
- rl_beep ();
- else
- {
- if ((SLang_Last_Key_Char == SLang_RL_EOF_Char)
- && (*key->str == 2)
- && (This_RLI->len == 0))
- rl_eof_insert ();
- else if (key->type == SLKEY_F_INTRINSIC)
- {
- if ((key->f.f)())
- RLupdate (rli);
-
- if ((rli->flags & SL_RLINE_BLINK_MATCH)
- && (rli->input_pending != NULL))
- blink_match (rli);
- }
-
- if (SLang_Rline_Quit)
- {
- This_RLI->buf[This_RLI->len] = 0;
- if (SLang_Error == SL_USER_BREAK)
- {
- SLang_Error = 0;
- return -1;
- }
- return This_RLI->len;
- }
- }
- if (key != NULL)
- This_RLI->last_fun = key->f.f;
- }
-}
-
-static int rl_abort (void)
-{
- rl_delete_line ();
- return rl_enter ();
-}
-
-/* TTY interface --- ANSI */
-
-static void ansi_goto_column (int n)
-{
- putc('\r', stdout);
- if (n) fprintf(stdout, "\033[%dC", n);
-}
-
-static void rl_select_line (SLang_Read_Line_Type *p)
-{
- This_RLI->last = p;
- strcpy ((char *) This_RLI->buf, (char *) p->buf);
- This_RLI->point = This_RLI->len = strlen((char *) p->buf);
-}
-static int rl_next_line (void);
-static int rl_prev_line (void)
-{
- SLang_Read_Line_Type *prev;
-
- if (((This_RLI->last_fun != (FVOID_STAR) rl_prev_line)
- && (This_RLI->last_fun != (FVOID_STAR) rl_next_line))
- || (This_RLI->last == NULL))
- {
- prev = This_RLI->tail;
- }
- else prev = This_RLI->last->prev;
-
- if (prev == NULL)
- {
- rl_beep ();
- return 0;
- }
-
- rl_select_line (prev);
- return 1;
-}
-static int rl_redraw (void)
-{
- SLrline_redraw (This_RLI);
- return 1;
-}
-
-static int rl_next_line (void)
-{
- SLang_Read_Line_Type *next;
-
- if (((This_RLI->last_fun != (FVOID_STAR) rl_prev_line)
- && (This_RLI->last_fun != (FVOID_STAR) rl_next_line))
- || (This_RLI->last == NULL))
- {
- rl_beep ();
- return 0;
- }
-
- next = This_RLI->last->next;
-
- if (next == NULL)
- {
- This_RLI->len = This_RLI->point = 0;
- *This_RLI->buf = 0;
- This_RLI->last = NULL;
- }
- else rl_select_line (next);
- return 1;
-}
-
-static SLKeymap_Function_Type SLReadLine_Functions[] =
-{
- {"up", rl_prev_line},
- {"down", rl_next_line},
- {"bol", rl_bol},
- {"eol", rl_eol},
- {"right", rl_right},
- {"left", rl_left},
- {"self_insert", rl_self_insert},
- {"bdel", rl_bdel},
- {"del", rl_del},
- {"deleol", rl_deleol},
- {"enter", rl_enter},
- {"trim", rl_trim},
- {"quoted_insert", rl_quote_insert},
- {(char *) NULL, NULL}
-};
-
-int SLang_init_readline (SLang_RLine_Info_Type *rli)
-{
- int ch;
- char simple[2];
-
- if (RL_Keymap == NULL)
- {
- simple[1] = 0;
- if (NULL == (RL_Keymap = SLang_create_keymap ("ReadLine", NULL)))
- return -1;
-
- RL_Keymap->functions = SLReadLine_Functions;
-
- /* This breaks under some DEC ALPHA compilers (scary!) */
-#ifndef __DECC
- for (ch = ' '; ch < 256; ch++)
- {
- simple[0] = (char) ch;
- SLkm_define_key (simple, (FVOID_STAR) rl_self_insert, RL_Keymap);
- }
-#else
- ch = ' ';
- while (1)
- {
- simple[0] = (char) ch;
- SLkm_define_key (simple, (FVOID_STAR) rl_self_insert, RL_Keymap);
- ch = ch + 1;
- if (ch == 256) break;
- }
-#endif /* NOT __DECC */
-
- simple[0] = SLang_Abort_Char;
- SLkm_define_key (simple, (FVOID_STAR) rl_abort, RL_Keymap);
- simple[0] = SLang_RL_EOF_Char;
- SLkm_define_key (simple, (FVOID_STAR) rl_eof_insert, RL_Keymap);
-
-#ifndef IBMPC_SYSTEM
- SLkm_define_key ("^[[A", (FVOID_STAR) rl_prev_line, RL_Keymap);
- SLkm_define_key ("^[[B", (FVOID_STAR) rl_next_line, RL_Keymap);
- SLkm_define_key ("^[[C", (FVOID_STAR) rl_right, RL_Keymap);
- SLkm_define_key ("^[[D", (FVOID_STAR) rl_left, RL_Keymap);
- SLkm_define_key ("^[OA", (FVOID_STAR) rl_prev_line, RL_Keymap);
- SLkm_define_key ("^[OB", (FVOID_STAR) rl_next_line, RL_Keymap);
- SLkm_define_key ("^[OC", (FVOID_STAR) rl_right, RL_Keymap);
- SLkm_define_key ("^[OD", (FVOID_STAR) rl_left, RL_Keymap);
-#else
- SLkm_define_key ("^@H", (FVOID_STAR) rl_prev_line, RL_Keymap);
- SLkm_define_key ("^@P", (FVOID_STAR) rl_next_line, RL_Keymap);
- SLkm_define_key ("^@M", (FVOID_STAR) rl_right, RL_Keymap);
- SLkm_define_key ("^@K", (FVOID_STAR) rl_left, RL_Keymap);
- SLkm_define_key ("^@S", (FVOID_STAR) rl_del, RL_Keymap);
- SLkm_define_key ("^@O", (FVOID_STAR) rl_eol, RL_Keymap);
- SLkm_define_key ("^@G", (FVOID_STAR) rl_bol, RL_Keymap);
-
- SLkm_define_key ("\xE0H", (FVOID_STAR) rl_prev_line, RL_Keymap);
- SLkm_define_key ("\xE0P", (FVOID_STAR) rl_next_line, RL_Keymap);
- SLkm_define_key ("\xE0M", (FVOID_STAR) rl_right, RL_Keymap);
- SLkm_define_key ("\xE0K", (FVOID_STAR) rl_left, RL_Keymap);
- SLkm_define_key ("\xE0S", (FVOID_STAR) rl_del, RL_Keymap);
- SLkm_define_key ("\xE0O", (FVOID_STAR) rl_eol, RL_Keymap);
- SLkm_define_key ("\xE0G", (FVOID_STAR) rl_bol, RL_Keymap);
-#endif
- SLkm_define_key ("^C", (FVOID_STAR) rl_abort, RL_Keymap);
- SLkm_define_key ("^E", (FVOID_STAR) rl_eol, RL_Keymap);
- SLkm_define_key ("^G", (FVOID_STAR) rl_abort, RL_Keymap);
- SLkm_define_key ("^I", (FVOID_STAR) rl_self_insert, RL_Keymap);
- SLkm_define_key ("^A", (FVOID_STAR) rl_bol, RL_Keymap);
- SLkm_define_key ("\r", (FVOID_STAR) rl_enter, RL_Keymap);
- SLkm_define_key ("\n", (FVOID_STAR) rl_enter, RL_Keymap);
- SLkm_define_key ("^K", (FVOID_STAR) rl_deleol, RL_Keymap);
- SLkm_define_key ("^L", (FVOID_STAR) rl_deleol, RL_Keymap);
- SLkm_define_key ("^V", (FVOID_STAR) rl_del, RL_Keymap);
- SLkm_define_key ("^D", (FVOID_STAR) rl_del, RL_Keymap);
- SLkm_define_key ("^F", (FVOID_STAR) rl_right, RL_Keymap);
- SLkm_define_key ("^B", (FVOID_STAR) rl_left, RL_Keymap);
- SLkm_define_key ("^?", (FVOID_STAR) rl_bdel, RL_Keymap);
- SLkm_define_key ("^H", (FVOID_STAR) rl_bdel, RL_Keymap);
- SLkm_define_key ("^P", (FVOID_STAR) rl_prev_line, RL_Keymap);
- SLkm_define_key ("^N", (FVOID_STAR) rl_next_line, RL_Keymap);
- SLkm_define_key ("^R", (FVOID_STAR) rl_redraw, RL_Keymap);
- SLkm_define_key ("`", (FVOID_STAR) rl_quote_insert, RL_Keymap);
- SLkm_define_key ("\033\\", (FVOID_STAR) rl_trim, RL_Keymap);
- if (SLang_Error) return -1;
- }
-
- if (rli->prompt == NULL) rli->prompt = "";
- if (rli->keymap == NULL) rli->keymap = RL_Keymap;
- rli->old_upd = rli->upd_buf1;
- rli->new_upd = rli->upd_buf2;
- *rli->buf = 0;
- rli->point = 0;
-
- if (rli->flags & SL_RLINE_USE_ANSI)
- {
- if (rli->tt_goto_column == NULL) rli->tt_goto_column = ansi_goto_column;
- }
-
- if (Char_Widths[0] == 2) return 0;
-
- for (ch = 0; ch < 32; ch++) Char_Widths[ch] = 2;
- for (ch = 32; ch < 256; ch++) Char_Widths[ch] = 1;
- Char_Widths[127] = 2;
-#ifndef IBMPC_SYSTEM
- for (ch = 128; ch < 160; ch++) Char_Widths[ch] = 3;
-#endif
-
- return 0;
-}
-
-SLang_Read_Line_Type *SLang_rline_save_line (SLang_RLine_Info_Type *rli)
-{
- SLang_Read_Line_Type *rl = NULL;
- unsigned char *buf;
-
- if ((rli == NULL) || (rli->buf == NULL))
- return NULL;
-
- if (NULL == (rl = (SLang_Read_Line_Type *) SLmalloc (sizeof (SLang_Read_Line_Type)))
- || (NULL == (buf = (unsigned char *) SLmake_string ((char *)rli->buf))))
- {
- SLfree ((char *)rl);
- return NULL;
- }
- rl->buf = buf;
- rl->buf_len = strlen ((char *)buf);
- rl->num = rl->misc = 0;
- rl->next = rl->prev = NULL;
-
- if (rli->tail != NULL)
- {
- rli->tail->next = rl;
- rl->prev = rli->tail;
- }
- rli->tail = rl;
-
- return rl;
-}
diff --git a/mdk-stage1/slang/slscanf.c b/mdk-stage1/slang/slscanf.c
deleted file mode 100644
index 5bd93ff41..000000000
--- a/mdk-stage1/slang/slscanf.c
+++ /dev/null
@@ -1,718 +0,0 @@
-/* sscanf function for S-Lang */
-/* Copyright (c) 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-#include <ctype.h>
-#include <math.h>
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-static char *skip_whitespace (char *s)
-{
- while (isspace (*s))
- s++;
-
- return s;
-}
-
-static void init_map (unsigned char map[256], int base)
-{
- memset ((char *) map, 0xFF, 256);
-
- map['0'] = 0; map['1'] = 1; map['2'] = 2; map['3'] = 3;
- map['4'] = 4; map['5'] = 5; map['6'] = 6; map['7'] = 7;
- if (base == 8)
- return;
-
- map['8'] = 8; map['9'] = 9;
- if (base == 10)
- return;
-
- map['A'] = 10; map['B'] = 11; map['C'] = 12; map['D'] = 13;
- map['E'] = 14; map['F'] = 15; map['a'] = 10; map['b'] = 11;
- map['c'] = 12; map['d'] = 13; map['e'] = 14; map['f'] = 15;
-}
-
-static char *get_sign (char *s, char *smax, int *sign)
-{
- *sign = 1;
- if (s + 1 < smax)
- {
- if (*s == '+') s++;
- else if (*s == '-')
- {
- s++;
- *sign = -1;
- }
- }
- return s;
-}
-
-
-static int parse_long (char **sp, char *smax, long *np,
- long base, unsigned char map[256])
-{
- char *s, *s0;
- long n;
- int sign;
-
- s = s0 = get_sign (*sp, smax, &sign);
-
- n = 0;
- while (s < smax)
- {
- unsigned char value;
-
- value = map [(unsigned char) *s];
- if (value == 0xFF)
- break;
-
- n = base * n + value;
- s++;
- }
-
- *sp = s;
- if (s == s0)
- return 0;
-
- *np = n * sign;
-
- return 1;
-}
-
-
-static int parse_int (char **sp, char *smax, int *np,
- long base, unsigned char map[256])
-{
- long n;
- int status;
-
- if (1 == (status = parse_long (sp, smax, &n, base, map)))
- *np = (int) n;
- return status;
-}
-
-static int parse_short (char **sp, char *smax, short *np,
- long base, unsigned char map[256])
-{
- long n;
- int status;
-
- if (1 == (status = parse_long (sp, smax, &n, base, map)))
- *np = (short) n;
- return status;
-}
-
-static int parse_ulong (char **sp, char *smax, unsigned long *np,
- long base, unsigned char map[256])
-{
- return parse_long (sp, smax, (long *) np, base, map);
-}
-
-static int parse_uint (char **sp, char *smax, unsigned int *np,
- long base, unsigned char map[256])
-{
- return parse_int (sp, smax, (int *) np, base, map);
-}
-
-static int parse_ushort (char **sp, char *smax, unsigned short *np,
- long base, unsigned char map[256])
-{
- return parse_short (sp, smax, (short *) np, base, map);
-}
-
-#if SLANG_HAS_FLOAT
-/*
- * In an ideal world, strtod would be the correct function to use. However,
- * there may be problems relying on this function because some systems do
- * not support and some that do get it wrong. So, I will handle the parsing
- * of the string and let atof or strtod handle the arithmetic.
- */
-static int parse_double (char **sp, char *smax, double *d)
-{
- char *s, *s0;
- int sign;
- int expon;
- unsigned char map[256];
- char buf[128];
- int has_leading_zeros;
- char *start_pos, *sign_pos;
- char *b, *bmax;
-
- start_pos = *sp;
- s = get_sign (start_pos, smax, &sign);
- if (s >= smax)
- {
- errno = _SLerrno_errno = EINVAL;
- return 0;
- }
-
- /* Prepare the buffer that will be passed to strtod */
- /* Allow the exponent to be 5 significant digits: E+xxxxx\0 */
- bmax = buf + (sizeof (buf) - 8);
- buf[0] = '0'; buf[1] = '.';
- b = buf + 2;
-
- init_map (map, 10);
-
- /* Skip leading 0s */
- s0 = s;
- while ((s < smax) && (*s == '0'))
- s++;
- has_leading_zeros = (s != s0);
-
- expon = 0;
- while (s < smax)
- {
- unsigned char value = map [(unsigned char) *s];
-
- if (value == 0xFF)
- break;
-
- if (b < bmax)
- *b++ = *s;
-
- expon++;
- s++;
- }
-
- if ((s < smax) && (*s == '.'))
- {
- s++;
- if (b == buf + 2) /* nothing added yet */
- {
- while ((s < smax) && (*s == '0'))
- {
- expon--;
- s++;
- }
- }
-
- while (s < smax)
- {
- unsigned char value = map [(unsigned char) *s];
-
- if (value == 0xFF)
- break;
-
- if (b < bmax)
- *b++ = *s;
- s++;
- }
- }
-
- if ((b == buf + 2)
- && (has_leading_zeros == 0))
- {
- *sp = start_pos;
- errno = EINVAL;
- return 0;
- }
-
- if ((s + 1 < smax) && ((*s == 'E') || (*s == 'e')))
- {
- int e;
- int esign;
-
- s0 = s;
- s = get_sign (s + 1, smax, &esign);
- sign_pos = s;
- e = 0;
- while (s < smax)
- {
- unsigned char value = map [(unsigned char) *s];
- if (value == 0xFF)
- break;
- if (e < 25000) /* avoid overflow if 16 bit */
- e = 10 * e + value;
- s++;
- }
-#ifdef ERANGE
- if (e >= 25000)
- errno = ERANGE;
-#endif
- if (s == sign_pos)
- s = s0; /* ...E-X */
- else
- {
- e = esign * e;
- expon += e;
- }
- }
-
- if (expon != 0)
- sprintf (b, "e%d", expon);
- else
- *b = 0;
-
- *sp = s;
-#if HAVE_STRTOD
- *d = sign * strtod (buf, NULL);
-#else
- *d = sign * atof (buf);
-#endif
- return 1;
-}
-
-static int parse_float (char **sp, char *smax, float *d)
-{
- double x;
- if (1 == parse_double (sp, smax, &x))
- {
- *d = (float) x;
- return 1;
- }
- return 0;
-}
-#endif /* SLANG_HAS_FLOAT */
-
-static int parse_string (char **sp, char *smax, char **str)
-{
- char *s, *s0;
-
- s0 = s = *sp;
- while (s < smax)
- {
- if (isspace (*s))
- break;
- s++;
- }
- if (NULL == (*str = SLang_create_nslstring (s0, (unsigned int) (s - s0))))
- return -1;
-
- *sp = s;
- return 1;
-}
-
-static int parse_bstring (char **sp, char *smax, char **str)
-{
- char *s;
-
- s = *sp;
- if (NULL == (*str = SLang_create_nslstring (s, (unsigned int) (smax - s))))
- return -1;
-
- *sp = smax;
- return 1;
-}
-
-static int parse_range (char **sp, char *smax, char **fp, char **str)
-{
- char *s, *s0;
- char *range;
- char *f;
- unsigned char map[256];
- unsigned char reverse;
-
- /* How can one represent a range with just '^'? The naive answer is
- * is [^]. However, this may be interpreted as meaning any character
- * but ']' and others. Let's assume that the user will not use a range
- * to match '^'.
- */
- f = *fp;
- /* f is a pointer to (one char after) [...]. */
- if (*f == '^')
- {
- f++;
- reverse = 1;
- }
- else reverse = 0;
-
- s0 = f;
- if (*f == ']')
- f++;
-
- while (1)
- {
- char ch = *f;
-
- if (ch == 0)
- {
- SLang_verror (SL_INVALID_PARM, "Unexpected end of range in format");
- return -1;
- }
- if (ch == ']')
- break;
- f++;
- }
- if (NULL == (range = SLmake_nstring (s0, (unsigned int) (f - s0))))
- return -1;
- *fp = f + 1; /* skip ] */
-
- SLmake_lut (map, (unsigned char *) range, reverse);
- SLfree (range);
-
- s0 = s = *sp;
- while ((s < smax) && map [(unsigned char) *s])
- s++;
-
- if (NULL == (*str = SLang_create_nslstring (s0, (unsigned int) (s - s0))))
- return -1;
-
- *sp = s;
- return 1;
-}
-
-
-int _SLang_sscanf (void)
-{
- int num;
- unsigned int num_refs;
- char *format;
- char *input_string, *input_string_max;
- char *f, *s;
- unsigned char map8[256], map10[256], map16[256];
-
- if (SLang_Num_Function_Args < 2)
- {
- SLang_verror (SL_INVALID_PARM, "Int_Type sscanf (str, format, ...)");
- return -1;
- }
-
- num_refs = (unsigned int) SLang_Num_Function_Args;
- if (-1 == SLreverse_stack (num_refs))
- return -1;
- num_refs -= 2;
-
- if (-1 == SLang_pop_slstring (&input_string))
- return -1;
-
- if (-1 == SLang_pop_slstring (&format))
- {
- SLang_free_slstring (input_string);
- return -1;
- }
-
- f = format;
- s = input_string;
- input_string_max = input_string + strlen (input_string);
-
- init_map (map8, 8);
- init_map (map10, 10);
- init_map (map16, 16);
-
- num = 0;
-
- while (num_refs != 0)
- {
- SLang_Object_Type obj;
- SLang_Ref_Type *ref;
- char *smax;
- unsigned char *map;
- int base;
- int no_assign;
- int is_short;
- int is_long;
- int status;
- char chf;
- unsigned int width;
- int has_width;
-
- chf = *f++;
-
- if (chf == 0)
- {
- /* Hmmm.... what is the most useful thing to do?? */
-#if 1
- break;
-#else
- SLang_verror (SL_INVALID_PARM, "sscanf: format not big enough for output list");
- goto return_error;
-#endif
- }
-
- if (isspace (chf))
- {
- s = skip_whitespace (s);
- continue;
- }
-
- if ((chf != '%')
- || ((chf = *f++) == '%'))
- {
- if (*s != chf)
- break;
- s++;
- continue;
- }
-
- no_assign = 0;
- is_short = 0;
- is_long = 0;
- width = 0;
- smax = input_string_max;
-
- /* Look for the flag character */
- if (chf == '*')
- {
- no_assign = 1;
- chf = *f++;
- }
-
- /* Width */
- has_width = isdigit (chf);
- if (has_width)
- {
- f--;
- (void) parse_uint (&f, f + strlen(f), &width, 10, map10);
- chf = *f++;
- }
-
- /* Now the type modifier */
- switch (chf)
- {
- case 'h':
- is_short = 1;
- chf = *f++;
- break;
-
- case 'L': /* not implemented */
- case 'l':
- is_long = 1;
- chf = *f++;
- break;
- }
-
- status = -1;
-
- if ((chf != 'c') && (chf != '['))
- s = skip_whitespace (s);
-
- if (has_width)
- {
- if (width > (unsigned int) (input_string_max - s))
- width = (unsigned int) (input_string_max - s);
- smax = s + width;
- }
-
- /* Now the format descriptor */
-
- map = map10;
- base = 10;
-
- try_again: /* used by i, x, and o, conversions */
- switch (chf)
- {
- case 0:
- SLang_verror (SL_INVALID_PARM, "sscanf: Unexpected end of format");
- goto return_error;
- case 'D':
- is_long = 1;
- case 'd':
- if (is_short)
- {
- obj.data_type = SLANG_SHORT_TYPE;
- status = parse_short (&s, smax, &obj.v.short_val, base, map);
- }
- else if (is_long)
- {
- obj.data_type = SLANG_LONG_TYPE;
- status = parse_long (&s, smax, &obj.v.long_val, base, map);
- }
- else
- {
- obj.data_type = SLANG_INT_TYPE;
- status = parse_int (&s, smax, &obj.v.int_val, base, map);
- }
- break;
-
-
- case 'U':
- is_long = 1;
- case 'u':
- if (is_short)
- {
- obj.data_type = SLANG_USHORT_TYPE;
- status = parse_ushort (&s, smax, &obj.v.ushort_val, base, map);
- }
- else if (is_long)
- {
- obj.data_type = SLANG_ULONG_TYPE;
- status = parse_ulong (&s, smax, &obj.v.ulong_val, base, map);
- }
- else
- {
- obj.data_type = SLANG_INT_TYPE;
- status = parse_uint (&s, smax, &obj.v.uint_val, base, map);
- }
- break;
-
- case 'I':
- is_long = 1;
- case 'i':
- if ((s + 1 >= smax)
- || (*s != 0))
- chf = 'd';
- else if (((s[1] == 'x') || (s[1] == 'X'))
- && (s + 2 < smax))
- {
- s += 2;
- chf = 'x';
- }
- else chf = 'o';
- goto try_again;
-
- case 'O':
- is_long = 1;
- case 'o':
- map = map8;
- base = 8;
- chf = 'd';
- goto try_again;
-
- case 'X':
- is_long = 1;
- case 'x':
- base = 16;
- map = map16;
- chf = 'd';
- goto try_again;
-
- case 'E':
- case 'F':
- is_long = 1;
- case 'e':
- case 'f':
- case 'g':
-#if SLANG_HAS_FLOAT
- if (is_long)
- {
- obj.data_type = SLANG_DOUBLE_TYPE;
- status = parse_double (&s, smax, &obj.v.double_val);
- }
- else
- {
- obj.data_type = SLANG_FLOAT_TYPE;
- status = parse_float (&s, smax, &obj.v.float_val);
- }
-#else
- SLang_verror (SL_NOT_IMPLEMENTED,
- "This version of the S-Lang does not support floating point");
- status = -1;
-#endif
- break;
-
- case 's':
- obj.data_type = SLANG_STRING_TYPE;
- status = parse_string (&s, smax, &obj.v.s_val);
- break;
-
- case 'c':
- if (has_width == 0)
- {
- obj.data_type = SLANG_UCHAR_TYPE;
- obj.v.uchar_val = *s++;
- status = 1;
- break;
- }
- obj.data_type = SLANG_STRING_TYPE;
- status = parse_bstring (&s, smax, &obj.v.s_val);
- break;
-
- case '[':
- obj.data_type = SLANG_STRING_TYPE;
- status = parse_range (&s, smax, &f, &obj.v.s_val);
- break;
-
- case 'n':
- obj.data_type = SLANG_UINT_TYPE;
- obj.v.uint_val = (unsigned int) (s - input_string);
- status = 1;
- break;
-
- default:
- status = -1;
- SLang_verror (SL_NOT_IMPLEMENTED, "format specifier '%c' is not supported", chf);
- break;
- }
-
- if (status == 0)
- break;
-
- if (status == -1)
- goto return_error;
-
- if (no_assign)
- {
- SLang_free_object (&obj);
- continue;
- }
-
- if (-1 == SLang_pop_ref (&ref))
- {
- SLang_free_object (&obj);
- goto return_error;
- }
-
- if (-1 == SLang_push (&obj))
- {
- SLang_free_object (&obj);
- SLang_free_ref (ref);
- goto return_error;
- }
-
- if (-1 == _SLang_deref_assign (ref))
- {
- SLang_free_ref (ref);
- goto return_error;
- }
- SLang_free_ref (ref);
-
- num++;
- num_refs--;
- }
-
- if (-1 == SLdo_pop_n (num_refs))
- goto return_error;
-
- SLang_free_slstring (format);
- SLang_free_slstring (input_string);
- return num;
-
- return_error:
- /* NULLS ok */
- SLang_free_slstring (format);
- SLang_free_slstring (input_string);
- return -1;
-}
-
-
-# if SLANG_HAS_FLOAT
-
-#ifndef HAVE_STDLIB_H
-/* Oh dear. Where is the prototype for atof? If not in stdlib, then
- * I do not know where. Not in math.h on some systems either.
- */
-extern double atof ();
-#endif
-
-double _SLang_atof (char *s)
-{
- double x;
-
- s = skip_whitespace (s);
- errno = 0;
-
- if (1 != parse_double (&s, s + strlen (s), &x))
- {
- if ((0 == strcmp ("NaN", s))
- || (0 == strcmp ("-Inf", s))
- || (0 == strcmp ("Inf", s)))
- return atof (s); /* let this deal with it */
-#ifdef EINVAL
- errno = _SLerrno_errno = EINVAL;
-#endif
- return 0.0;
- }
- if (errno)
- _SLerrno_errno = errno;
- return x;
-}
-#endif
diff --git a/mdk-stage1/slang/slscroll.c b/mdk-stage1/slang/slscroll.c
deleted file mode 100644
index 358296116..000000000
--- a/mdk-stage1/slang/slscroll.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/* SLang Scrolling Window Routines */
-/* Copyright (c) 1996, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-static void find_window_bottom (SLscroll_Window_Type *win)
-{
- unsigned int nrows;
- unsigned int hidden_mask;
- SLscroll_Type *bot, *cline, *last_bot;
- unsigned int row;
-
- nrows = win->nrows;
- hidden_mask = win->hidden_mask;
- cline = win->current_line;
-
- win->window_row = row = 0;
- last_bot = bot = win->top_window_line;
-
- while (row < nrows)
- {
- if (bot == cline)
- win->window_row = row;
-
- last_bot = bot;
-
- if (bot == NULL)
- break;
-
- bot = bot->next;
-
- if (hidden_mask)
- {
- while ((bot != NULL) && (bot->flags & hidden_mask))
- bot = bot->next;
- }
-
- row++;
- }
-
- win->bot_window_line = last_bot;
-}
-
-static int find_top_to_recenter (SLscroll_Window_Type *win)
-{
- unsigned int nrows;
- unsigned int hidden_mask;
- SLscroll_Type *prev, *last_prev, *cline;
-
- nrows = win->nrows;
- cline = win->current_line;
- hidden_mask = win->hidden_mask;
-
- nrows = nrows / 2;
-
- last_prev = prev = cline;
-
- while (nrows && (prev != NULL))
- {
- nrows--;
- last_prev = prev;
- do
- {
- prev = prev->prev;
- }
- while (hidden_mask
- && (prev != NULL)
- && (prev->flags & hidden_mask));
- }
-
- if (prev == NULL) prev = last_prev;
-
- win->top_window_line = prev;
- find_window_bottom (win);
-
- return 0;
-}
-
-#define HAS_BORDER_CODE 1
-int SLscroll_find_top (SLscroll_Window_Type *win)
-{
- unsigned int i;
- SLscroll_Type *cline, *prev, *next;
- SLscroll_Type *top_window_line;
- unsigned int nrows;
- unsigned int hidden_mask;
- int scroll_mode;
- unsigned int border;
-
- cline = win->current_line;
- nrows = win->nrows;
- scroll_mode = win->cannot_scroll;
- border = win->border;
- if (scroll_mode == 2)
- border = 0;
-
- if ((cline == NULL) || (nrows <= 1))
- {
- win->top_window_line = cline;
- find_window_bottom (win);
- return 0;
- }
-
- hidden_mask = win->hidden_mask;
-
- /* Note: top_window_line might be a bogus pointer. This means that I cannot
- * access it unless it really corresponds to a pointer in the buffer.
- */
- top_window_line = win->top_window_line;
-
- if (top_window_line == NULL)
- return find_top_to_recenter (win);
-
- /* Chances are that the current line is visible in the window. This means
- * that the top window line should be above it.
- */
- prev = cline;
-
- i = 0;
-
- while ((i < nrows) && (prev != NULL))
- {
- if (prev == top_window_line)
- {
- SLscroll_Type *twl = top_window_line;
- int dir = 0;
-
- if (i < border) dir = -1; else if (i + border >= nrows) dir = 1;
-
- if (dir) while (border)
- {
- if (dir < 0) twl = twl->prev;
- else twl = twl->next;
-
- if (twl == NULL)
- {
- twl = top_window_line;
- break;
- }
- if ((hidden_mask == 0)
- || (0 == (twl->flags & hidden_mask)))
- border--;
- }
-
- win->top_window_line = twl;
- find_window_bottom (win);
- return 0;
- }
-
- do
- {
- prev = prev->prev;
- }
- while (hidden_mask
- && (prev != NULL)
- && (prev->flags & hidden_mask));
- i++;
- }
-
- /* Now check the borders of the window. Perhaps the current line lies
- * outsider the border by a line. Only do this if terminal can scroll.
- */
-
- if (scroll_mode == 1)
- return find_top_to_recenter (win);
- else if (scroll_mode == -1)
- scroll_mode = 0;
-
- next = cline->next;
- while (hidden_mask
- && (next != NULL)
- && (next->flags & hidden_mask))
- next = next->next;
-
- if ((next != NULL)
- && (next == top_window_line))
- {
- /* The current line is one line above the window. This means user
- * has moved up past the top of the window. If scroll_mode is set
- * to scroll by pages, we need to do a page up.
- */
-
- win->top_window_line = cline;
- find_window_bottom (win);
-
- if (scroll_mode) return SLscroll_pageup (win);
-
- return 0;
- }
-
- prev = cline->prev;
-
- while (hidden_mask
- && (prev != NULL)
- && (prev->flags & hidden_mask))
- prev = prev->prev;
-
- if ((prev == NULL)
- || (prev != win->bot_window_line))
- return find_top_to_recenter (win);
-
- /* It looks like cline is below window by one line. See what line should
- * be at top to scroll it into view. Only do this unless we are scrolling
- * by pages.
- */
- if (scroll_mode)
- {
- win->top_window_line = cline;
- find_window_bottom (win);
- return 0;
- }
-
- i = 2;
- while ((i < nrows) && (prev != NULL))
- {
- do
- {
- prev = prev->prev;
- }
- while (hidden_mask
- && (prev != NULL)
- && (prev->flags & hidden_mask));
- i++;
- }
-
- if (prev != NULL)
- {
- win->top_window_line = prev;
- find_window_bottom (win);
- return 0;
- }
-
- return find_top_to_recenter (win);
-}
-
-int SLscroll_find_line_num (SLscroll_Window_Type *win)
-{
- SLscroll_Type *cline, *l;
- unsigned int n;
- unsigned int hidden_mask;
-
- if (win == NULL) return -1;
-
- hidden_mask = win->hidden_mask;
- cline = win->current_line;
-
- n = 1;
-
- l = win->lines;
- while (l != cline)
- {
- if ((hidden_mask == 0)
- || (0 == (l->flags & hidden_mask)))
- n++;
-
- l = l->next;
- }
-
- win->line_num = n;
- n--;
-
- while (l != NULL)
- {
- if ((hidden_mask == 0)
- || (0 == (l->flags & hidden_mask)))
- n++;
- l = l->next;
- }
- win->num_lines = n;
-
- return 0;
-}
-
-unsigned int SLscroll_next_n (SLscroll_Window_Type *win, unsigned int n)
-{
- unsigned int i;
- unsigned int hidden_mask;
- SLscroll_Type *l, *cline;
-
- if ((win == NULL)
- || (NULL == (cline = win->current_line)))
- return 0;
-
- hidden_mask = win->hidden_mask;
- l = cline;
- i = 0;
- while (i < n)
- {
- l = l->next;
- while (hidden_mask
- && (l != NULL) && (l->flags & hidden_mask))
- l = l->next;
-
- if (l == NULL)
- break;
-
- i++;
- cline = l;
- }
-
- win->current_line = cline;
- win->line_num += i;
- return i;
-}
-
-unsigned int SLscroll_prev_n (SLscroll_Window_Type *win, unsigned int n)
-{
- unsigned int i;
- unsigned int hidden_mask;
- SLscroll_Type *l, *cline;
-
- if ((win == NULL)
- || (NULL == (cline = win->current_line)))
- return 0;
-
- hidden_mask = win->hidden_mask;
- l = cline;
- i = 0;
- while (i < n)
- {
- l = l->prev;
- while (hidden_mask
- && (l != NULL) && (l->flags & hidden_mask))
- l = l->prev;
-
- if (l == NULL)
- break;
-
- i++;
- cline = l;
- }
-
- win->current_line = cline;
- win->line_num -= i;
- return i;
-}
-
-int SLscroll_pageup (SLscroll_Window_Type *win)
-{
- SLscroll_Type *l, *top;
- unsigned int nrows, hidden_mask;
- unsigned int n;
-
- if (win == NULL)
- return -1;
-
- (void) SLscroll_find_top (win);
-
- nrows = win->nrows;
-
- if ((NULL != (top = win->top_window_line))
- && (nrows > 2))
- {
- n = 0;
- hidden_mask = win->hidden_mask;
- l = win->current_line;
- while ((l != NULL) && (l != top))
- {
- l = l->prev;
- if ((hidden_mask == 0)
- || ((l != NULL) && (0 == (l->flags & hidden_mask))))
- n++;
- }
-
- if (l != NULL)
- {
- unsigned int save_line_num;
- int ret = 0;
-
- win->current_line = l;
- win->line_num -= n;
-
- /* Compute a new top/bottom header */
- save_line_num = win->line_num;
-
- if ((0 == SLscroll_prev_n (win, nrows - 1))
- && (n == 0))
- ret = -1;
-
- win->top_window_line = win->current_line;
- win->current_line = l;
- win->line_num = save_line_num;
-
- find_window_bottom (win);
- return ret;
- }
- }
-
- if (nrows < 2) nrows++;
- if (0 == SLscroll_prev_n (win, nrows - 1))
- return -1;
- return 0;
-}
-
-int SLscroll_pagedown (SLscroll_Window_Type *win)
-{
- SLscroll_Type *l, *bot;
- unsigned int nrows, hidden_mask;
- unsigned int n;
-
- if (win == NULL)
- return -1;
-
- (void) SLscroll_find_top (win);
-
- nrows = win->nrows;
-
- if ((NULL != (bot = win->bot_window_line))
- && (nrows > 2))
- {
- n = 0;
- hidden_mask = win->hidden_mask;
- l = win->current_line;
- while ((l != NULL) && (l != bot))
- {
- l = l->next;
- if ((hidden_mask == 0)
- || ((l != NULL) && (0 == (l->flags & hidden_mask))))
- n++;
- }
-
- if (l != NULL)
- {
- win->current_line = l;
- win->top_window_line = l;
- win->line_num += n;
-
- find_window_bottom (win);
-
- if (n || (bot != win->bot_window_line))
- return 0;
-
- return -1;
- }
- }
-
- if (nrows < 2) nrows++;
- if (0 == SLscroll_next_n (win, nrows - 1))
- return -1;
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slsearch.c b/mdk-stage1/slang/slsearch.c
deleted file mode 100644
index a9a427a7d..000000000
--- a/mdk-stage1/slang/slsearch.c
+++ /dev/null
@@ -1,239 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef upcase
-# undef upcase
-#endif
-
-#define upcase(ch) (cs ? ch : UPPER_CASE(ch))
-
-static unsigned char *search_forward (register unsigned char *beg,
- unsigned char *end,
- unsigned char *key,
- register int key_len, int cs, int *ind)
-{
- register unsigned char char1;
- unsigned char *pos;
- int j, str_len;
- register unsigned char ch;
- register int db;
-
- str_len = (int) (end - beg);
- if (str_len < key_len) return (NULL);
-
- if (key_len == 0)
- return NULL;
-
- char1 = key[key_len - 1];
- beg += (key_len - 1);
-
- while(1)
- {
- if (cs) while (beg < end)
- {
- ch = *beg;
- db = ind[(unsigned char) ch];
- if ((db < key_len) && (ch == char1)) break;
- beg += db; /* ind[(unsigned char) ch]; */
- }
- else while (beg < end)
- {
- ch = *beg;
- db = ind[(unsigned char) ch];
- if ((db < key_len) &&
- (UPPER_CASE(ch) == char1)) break;
- beg += db; /* ind[(unsigned char) ch]; */
- }
-
- if (beg >= end) return(NULL);
-
- pos = beg - (key_len - 1);
- for (j = 0; j < key_len; j++)
- {
- ch = upcase(pos[j]);
- if (ch != (unsigned char) key[j]) break;
- }
-
- if (j == key_len) return(pos);
- beg += 1;
- }
-}
-
-static unsigned char *search_backward (unsigned char *beg,unsigned char *end,
- unsigned char *key, int key_len,
- int cs, int *ind)
-{
- unsigned char ch, char1;
- int j, str_len, ofs;
-
- str_len = (int) (end - beg);
- if (str_len < key_len) return (NULL);
-
- if (key_len == 0)
- return NULL;
-
- /* end -= (key_len - 1); */
- end -= key_len;
-
- char1 = key[0];
-
- while(1)
- {
- while ((beg <= end) && (ch = *end, ch = upcase(ch), ch != char1))
- {
- ofs = ind[(unsigned char) ch];
-#ifdef __MSDOS__
- /* This is needed for msdos segment wrapping problems */
- if (beg + ofs > end) return(NULL);
-#endif
- end -= ofs;
- }
- if (beg > end) return(NULL);
- for (j = 1; j < key_len; j++)
- {
- ch = upcase(end[j]);
- if (ch != key[j]) break;
- }
- if (j == key_len) return(end);
- end--;
- }
-}
-
-unsigned char *SLsearch (unsigned char *pmin, unsigned char *pmax,
- SLsearch_Type *st)
-{
- if (st->dir > 0) return search_forward (pmin, pmax, st->key,
- st->key_len, st->cs, st->ind);
- else return search_backward (pmin, pmax, st->key,
- st->key_len, st->cs, st->ind);
-}
-
-static int Case_Tables_Ok;
-
-int SLsearch_init (char *str, int dir, int cs, SLsearch_Type *st)
-{
- int i, maxi;
- register int max = strlen(str);
- unsigned char *w, *work = st->key;
- register int *indp, *indpm;
- int *ind = st->ind;
-
- if (max >= (int) sizeof (st->key))
- {
- SLang_doerror ("Search string too long.");
- return -1;
- }
-
- st->dir = dir; st->cs = cs;
-
- if (!Case_Tables_Ok) SLang_init_case_tables ();
-
- if (dir > 0)
- {
- w = work;
- }
- else
- {
- maxi = max - 1;
- str = str + maxi;
- w = work + maxi;
- }
-
- /* for (i = 0; i < 256; i++) ind[i] = max; */
- indp = ind; indpm = ind + 256;
- while (indp < indpm)
- {
- *indp++ = max;
- *indp++ = max;
- *indp++ = max;
- *indp++ = max;
- }
-
- i = 0;
- if (cs) while (i < max)
- {
- i++;
- maxi = max - i;
- *w = *str;
- ind[(unsigned char) *str] = maxi;
- str += dir; w += dir;
- }
- else while (i < max)
- {
- i++;
- maxi = max - i;
- *w = UPPER_CASE(*str);
- ind[(unsigned char) *w] = maxi;
- ind[(unsigned char) LOWER_CASE(*str)] = maxi;
- str += dir; w += dir;
- }
-
- work[max] = 0;
- st->key_len = max;
- return max;
-}
-
-/* 8bit clean upper and lowercase macros */
-unsigned char _SLChg_LCase_Lut[256];
-unsigned char _SLChg_UCase_Lut[256];
-
-void SLang_define_case (int *u, int *l)
-{
- unsigned char up = (unsigned char) *u, dn = (unsigned char) *l;
-
- _SLChg_LCase_Lut[up] = dn;
- _SLChg_LCase_Lut[dn] = dn;
- _SLChg_UCase_Lut[dn] = up;
- _SLChg_UCase_Lut[up] = up;
-}
-
-void SLang_init_case_tables (void)
-{
- int i, j;
- if (Case_Tables_Ok) return;
-
- for (i = 0; i < 256; i++)
- {
- _SLChg_UCase_Lut[i] = i;
- _SLChg_LCase_Lut[i] = i;
- }
-
- for (i = 'A'; i <= 'Z'; i++)
- {
- j = i + 32;
- _SLChg_UCase_Lut[j] = i;
- _SLChg_LCase_Lut[i] = j;
- }
-#ifdef PC_SYSTEM
- /* Initialize for DOS code page 437. */
- _SLChg_UCase_Lut[135] = 128; _SLChg_LCase_Lut[128] = 135;
- _SLChg_UCase_Lut[132] = 142; _SLChg_LCase_Lut[142] = 132;
- _SLChg_UCase_Lut[134] = 143; _SLChg_LCase_Lut[143] = 134;
- _SLChg_UCase_Lut[130] = 144; _SLChg_LCase_Lut[144] = 130;
- _SLChg_UCase_Lut[145] = 146; _SLChg_LCase_Lut[146] = 145;
- _SLChg_UCase_Lut[148] = 153; _SLChg_LCase_Lut[153] = 148;
- _SLChg_UCase_Lut[129] = 154; _SLChg_LCase_Lut[154] = 129;
- _SLChg_UCase_Lut[164] = 165; _SLChg_LCase_Lut[165] = 164;
-#else
- /* ISO Latin */
- for (i = 192; i <= 221; i++)
- {
- j = i + 32;
- _SLChg_UCase_Lut[j] = i;
- _SLChg_LCase_Lut[i] = j;
- }
- _SLChg_UCase_Lut[215] = 215; _SLChg_LCase_Lut[215] = 215;
- _SLChg_UCase_Lut[223] = 223; _SLChg_LCase_Lut[223] = 223;
- _SLChg_UCase_Lut[247] = 247; _SLChg_LCase_Lut[247] = 247;
- _SLChg_UCase_Lut[255] = 255; _SLChg_LCase_Lut[255] = 255;
-#endif
- Case_Tables_Ok = 1;
-}
diff --git a/mdk-stage1/slang/slsignal.c b/mdk-stage1/slang/slsignal.c
deleted file mode 100644
index 30707dea5..000000000
--- a/mdk-stage1/slang/slsignal.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include <signal.h>
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_WAIT_H
-# include <sys/wait.h>
-#endif
-
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-/* Do not trust these environments */
-#if defined(__CYGWIN32__) || defined(__MINGW32__) || defined(AMIGA)
-# ifdef SLANG_POSIX_SIGNALS
-# undef SLANG_POSIX_SIGNALS
-# endif
-#endif
-
-/* This function will cause system calls to be restarted after signal if possible */
-SLSig_Fun_Type *SLsignal (int sig, SLSig_Fun_Type *f)
-{
-#if defined(SLANG_POSIX_SIGNALS)
- struct sigaction old_sa, new_sa;
-
-# ifdef SIGALRM
- /* We want system calls to be interrupted by SIGALRM. */
- if (sig == SIGALRM) return SLsignal_intr (sig, f);
-# endif
-
- sigemptyset (&new_sa.sa_mask);
- new_sa.sa_handler = f;
-
- new_sa.sa_flags = 0;
-# ifdef SA_RESTART
- new_sa.sa_flags |= SA_RESTART;
-# endif
-
- if (-1 == sigaction (sig, &new_sa, &old_sa))
- return (SLSig_Fun_Type *) SIG_ERR;
-
- return old_sa.sa_handler;
-#else
- /* Not POSIX. */
- return signal (sig, f);
-#endif
-}
-
-/* This function will NOT cause system calls to be restarted after
- * signal if possible
- */
-SLSig_Fun_Type *SLsignal_intr (int sig, SLSig_Fun_Type *f)
-{
-#ifdef SLANG_POSIX_SIGNALS
- struct sigaction old_sa, new_sa;
-
- sigemptyset (&new_sa.sa_mask);
- new_sa.sa_handler = f;
-
- new_sa.sa_flags = 0;
-# ifdef SA_INTERRUPT
- new_sa.sa_flags |= SA_INTERRUPT;
-# endif
-
- if (-1 == sigaction (sig, &new_sa, &old_sa))
- return (SLSig_Fun_Type *) SIG_ERR;
-
- return old_sa.sa_handler;
-#else
- /* Not POSIX. */
- return signal (sig, f);
-#endif
-}
-
-/* We are primarily interested in blocking signals that would cause the
- * application to reset the tty. These include suspend signals and
- * possibly interrupt signals.
- */
-#ifdef SLANG_POSIX_SIGNALS
-static sigset_t Old_Signal_Mask;
-#endif
-
-static volatile unsigned int Blocked_Depth;
-
-int SLsig_block_signals (void)
-{
-#ifdef SLANG_POSIX_SIGNALS
- sigset_t new_mask;
-#endif
-
- Blocked_Depth++;
- if (Blocked_Depth != 1)
- {
- return 0;
- }
-
-#ifdef SLANG_POSIX_SIGNALS
- sigemptyset (&new_mask);
-# ifdef SIGQUIT
- sigaddset (&new_mask, SIGQUIT);
-# endif
-# ifdef SIGTSTP
- sigaddset (&new_mask, SIGTSTP);
-# endif
-# ifdef SIGINT
- sigaddset (&new_mask, SIGINT);
-# endif
-# ifdef SIGTTIN
- sigaddset (&new_mask, SIGTTIN);
-# endif
-# ifdef SIGTTOU
- sigaddset (&new_mask, SIGTTOU);
-# endif
-# ifdef SIGWINCH
- sigaddset (&new_mask, SIGWINCH);
-# endif
-
- (void) sigprocmask (SIG_BLOCK, &new_mask, &Old_Signal_Mask);
- return 0;
-#else
- /* Not implemented. */
- return -1;
-#endif
-}
-
-int SLsig_unblock_signals (void)
-{
- if (Blocked_Depth == 0)
- return -1;
-
- Blocked_Depth--;
-
- if (Blocked_Depth != 0)
- return 0;
-
-#ifdef SLANG_POSIX_SIGNALS
- (void) sigprocmask (SIG_SETMASK, &Old_Signal_Mask, NULL);
- return 0;
-#else
- return -1;
-#endif
-}
-
-#ifdef MSWINDOWS
-int SLsystem (char *cmd)
-{
- SLang_verror (SL_NOT_IMPLEMENTED, "system not implemented");
- return -1;
-}
-
-#else
-int SLsystem (char *cmd)
-{
-#ifdef SLANG_POSIX_SIGNALS
- pid_t pid;
- int status;
- struct sigaction ignore;
-# ifdef SIGINT
- struct sigaction save_intr;
-# endif
-# ifdef SIGQUIT
- struct sigaction save_quit;
-# endif
-# ifdef SIGCHLD
- sigset_t child_mask, save_mask;
-# endif
-
- if (cmd == NULL) return 1;
-
- ignore.sa_handler = SIG_IGN;
- sigemptyset (&ignore.sa_mask);
- ignore.sa_flags = 0;
-
-# ifdef SIGINT
- if (-1 == sigaction (SIGINT, &ignore, &save_intr))
- return -1;
-# endif
-
-# ifdef SIGQUIT
- if (-1 == sigaction (SIGQUIT, &ignore, &save_quit))
- {
- (void) sigaction (SIGINT, &save_intr, NULL);
- return -1;
- }
-# endif
-
-# ifdef SIGCHLD
- sigemptyset (&child_mask);
- sigaddset (&child_mask, SIGCHLD);
- if (-1 == sigprocmask (SIG_BLOCK, &child_mask, &save_mask))
- {
-# ifdef SIGINT
- (void) sigaction (SIGINT, &save_intr, NULL);
-# endif
-# ifdef SIGQUIT
- (void) sigaction (SIGQUIT, &save_quit, NULL);
-# endif
- return -1;
- }
-# endif
-
- pid = fork();
-
- if (pid == -1)
- status = -1;
- else if (pid == 0)
- {
- /* Child */
-# ifdef SIGINT
- (void) sigaction (SIGINT, &save_intr, NULL);
-# endif
-# ifdef SIGQUIT
- (void) sigaction (SIGQUIT, &save_quit, NULL);
-# endif
-# ifdef SIGCHLD
- (void) sigprocmask (SIG_SETMASK, &save_mask, NULL);
-# endif
-
- execl ("/bin/sh", "sh", "-c", cmd, NULL);
- _exit (127);
- }
- else
- {
- /* parent */
- while (-1 == waitpid (pid, &status, 0))
- {
-# ifdef EINTR
- if (errno == EINTR)
- continue;
-# endif
-# ifdef ERESTARTSYS
- if (errno == ERESTARTSYS)
- continue;
-# endif
- status = -1;
- break;
- }
- }
-# ifdef SIGINT
- if (-1 == sigaction (SIGINT, &save_intr, NULL))
- status = -1;
-# endif
-# ifdef SIGQUIT
- if (-1 == sigaction (SIGQUIT, &save_quit, NULL))
- status = -1;
-# endif
-# ifdef SIGCHLD
- if (-1 == sigprocmask (SIG_SETMASK, &save_mask, NULL))
- status = -1;
-# endif
-
- return status;
-
-#else /* No POSIX Signals */
-# ifdef SIGINT
- void (*sint)(int);
-# endif
-# ifdef SIGQUIT
- void (*squit)(int);
-# endif
- int status;
-
-# ifdef SIGQUIT
- squit = SLsignal (SIGQUIT, SIG_IGN);
-# endif
-# ifdef SIGINT
- sint = SLsignal (SIGINT, SIG_IGN);
-# endif
- status = system (cmd);
-# ifdef SIGINT
- SLsignal (SIGINT, sint);
-# endif
-# ifdef SIGQUIT
- SLsignal (SIGQUIT, squit);
-# endif
- return status;
-#endif /* POSIX_SIGNALS */
-}
-#endif
-
-#if 0
-#include <windows.h>
-static int msw_system (char *cmd)
-{
- STARTUPINFO startup_info;
- PROCESS_INFORMATION process_info;
- int status;
-
- if (cmd == NULL) return -1;
-
- memset ((char *) &startup_info, 0, sizeof (STARTUPINFO));
- startup_info.cb = sizeof(STARTUPINFO);
- startup_info.dwFlags = STARTF_USESHOWWINDOW;
- startup_info.wShowWindow = SW_SHOWDEFAULT;
-
- if (FALSE == CreateProcess (NULL,
- cmd,
- NULL,
- NULL,
- FALSE,
- NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
- NULL,
- NULL,
- &startup_info,
- &process_info))
- {
- SLang_verror (0, "%s: CreateProcess failed.", cmd);
- return -1;
- }
-
- status = -1;
-
- if (0xFFFFFFFFUL != WaitForSingleObject (process_info.hProcess, INFINITE))
- {
- DWORD exit_code;
-
- if (TRUE == GetExitCodeProcess (process_info.hProcess, &exit_code))
- status = (int) exit_code;
- }
-
- CloseHandle (process_info.hThread);
- CloseHandle (process_info.hProcess);
-
- return status;
-}
-#endif
diff --git a/mdk-stage1/slang/slsmg.c b/mdk-stage1/slang/slsmg.c
deleted file mode 100644
index 088557f27..000000000
--- a/mdk-stage1/slang/slsmg.c
+++ /dev/null
@@ -1,1584 +0,0 @@
-/* SLang Screen management routines */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-typedef struct Screen_Type
- {
- int n; /* number of chars written last time */
- int flags; /* line untouched, etc... */
- SLsmg_Char_Type *old, *neew;
-#ifndef IBMPC_SYSTEM
- unsigned long old_hash, new_hash;
-#endif
- }
-Screen_Type;
-
-#define TOUCHED 0x1
-#define TRASHED 0x2
-static int Screen_Trashed;
-
-#if !defined(__MSDOS_16BIT__)
-# define MAX_SCREEN_SIZE 256
-#else
-# define MAX_SCREEN_SIZE 75
-#endif
-
-Screen_Type SL_Screen[MAX_SCREEN_SIZE];
-static int Start_Col, Start_Row;
-static int Screen_Cols, Screen_Rows;
-static int This_Row, This_Col;
-static int This_Color; /* only the first 8 bits of this
- * are used. The highest bit is used
- * to indicate an alternate character
- * set. This leaves 127 userdefineable
- * color combination.
- */
-
-#ifndef IBMPC_SYSTEM
-#define ALT_CHAR_FLAG 0x80
-#else
-#define ALT_CHAR_FLAG 0x00
-#endif
-
-#if SLTT_HAS_NON_BCE_SUPPORT && !defined(IBMPC_SYSTEM)
-#define REQUIRES_NON_BCE_SUPPORT 1
-static int Bce_Color_Offset;
-#endif
-
-int SLsmg_Newline_Behavior = 0;
-int SLsmg_Backspace_Moves = 0;
-/* Backward compatibility. Not used. */
-/* int SLsmg_Newline_Moves; */
-
-static void (*tt_normal_video)(void) = SLtt_normal_video;
-static void (*tt_goto_rc)(int, int) = SLtt_goto_rc;
-static void (*tt_cls) (void) = SLtt_cls;
-static void (*tt_del_eol) (void) = SLtt_del_eol;
-static void (*tt_smart_puts) (SLsmg_Char_Type *, SLsmg_Char_Type *, int, int) = SLtt_smart_puts;
-static int (*tt_flush_output) (void) = SLtt_flush_output;
-static int (*tt_reset_video) (void) = SLtt_reset_video;
-static int (*tt_init_video) (void) = SLtt_init_video;
-static int *tt_Screen_Rows = &SLtt_Screen_Rows;
-static int *tt_Screen_Cols = &SLtt_Screen_Cols;
-
-#ifndef IBMPC_SYSTEM
-static void (*tt_set_scroll_region)(int, int) = SLtt_set_scroll_region;
-static void (*tt_reverse_index)(int) = SLtt_reverse_index;
-static void (*tt_reset_scroll_region)(void) = SLtt_reset_scroll_region;
-static void (*tt_delete_nlines)(int) = SLtt_delete_nlines;
-#endif
-
-#ifndef IBMPC_SYSTEM
-static int *tt_Term_Cannot_Scroll = &SLtt_Term_Cannot_Scroll;
-static int *tt_Has_Alt_Charset = &SLtt_Has_Alt_Charset;
-static char **tt_Graphics_Char_Pairs = &SLtt_Graphics_Char_Pairs;
-static int *tt_Use_Blink_For_ACS = &SLtt_Use_Blink_For_ACS;
-#endif
-
-static int Smg_Inited;
-
-static void blank_line (SLsmg_Char_Type *p, int n, unsigned char ch)
-{
- register SLsmg_Char_Type *pmax = p + n;
- register SLsmg_Char_Type color_ch;
-
- color_ch = SLSMG_BUILD_CHAR(ch,This_Color);
-
- while (p < pmax)
- {
- *p++ = color_ch;
- }
-}
-
-static void clear_region (int row, int n)
-{
- int i;
- int imax = row + n;
-
- if (imax > Screen_Rows) imax = Screen_Rows;
- for (i = row; i < imax; i++)
- {
- if (i >= 0)
- {
- blank_line (SL_Screen[i].neew, Screen_Cols, ' ');
- SL_Screen[i].flags |= TOUCHED;
- }
- }
-}
-
-void SLsmg_erase_eol (void)
-{
- int r, c;
-
- if (Smg_Inited == 0) return;
-
- c = This_Col - Start_Col;
- r = This_Row - Start_Row;
-
- if ((r < 0) || (r >= Screen_Rows)) return;
- if (c < 0) c = 0; else if (c >= Screen_Cols) return;
- blank_line (SL_Screen[This_Row].neew + c , Screen_Cols - c, ' ');
- SL_Screen[This_Row].flags |= TOUCHED;
-}
-
-static void scroll_up (void)
-{
- unsigned int i, imax;
- SLsmg_Char_Type *neew;
-
- neew = SL_Screen[0].neew;
- imax = Screen_Rows - 1;
- for (i = 0; i < imax; i++)
- {
- SL_Screen[i].neew = SL_Screen[i + 1].neew;
- SL_Screen[i].flags |= TOUCHED;
- }
- SL_Screen[i].neew = neew;
- SL_Screen[i].flags |= TOUCHED;
- blank_line (neew, Screen_Cols, ' ');
- This_Row--;
-}
-
-void SLsmg_gotorc (int r, int c)
-{
- This_Row = r;
- This_Col = c;
-}
-
-int SLsmg_get_row (void)
-{
- return This_Row;
-}
-
-int SLsmg_get_column (void)
-{
- return This_Col;
-}
-
-void SLsmg_erase_eos (void)
-{
- if (Smg_Inited == 0) return;
-
- SLsmg_erase_eol ();
- clear_region (This_Row + 1, Screen_Rows);
-}
-
-static int This_Alt_Char;
-
-void SLsmg_set_char_set (int i)
-{
-#ifdef IBMPC_SYSTEM
- (void) i;
-#else
- if ((tt_Use_Blink_For_ACS != NULL)
- && (*tt_Use_Blink_For_ACS != 0))
- return;/* alt chars not used and the alt bit
- * is used to indicate a blink.
- */
-
- if (i) This_Alt_Char = ALT_CHAR_FLAG;
- else This_Alt_Char = 0;
-
- This_Color &= 0x7F;
- This_Color |= This_Alt_Char;
-#endif
-}
-
-void SLsmg_set_color (int color)
-{
- if (color < 0) return;
-#ifdef REQUIRES_NON_BCE_SUPPORT
- color += Bce_Color_Offset;
-#endif
- This_Color = color | This_Alt_Char;
-}
-
-void SLsmg_reverse_video (void)
-{
- SLsmg_set_color (1);
-}
-
-void SLsmg_normal_video (void)
-{
- SLsmg_set_color (0);
-}
-
-static int point_visible (int col_too)
-{
- return ((This_Row >= Start_Row) && (This_Row < Start_Row + Screen_Rows)
- && ((col_too == 0)
- || ((This_Col >= Start_Col)
- && (This_Col < Start_Col + Screen_Cols))));
-}
-
-void SLsmg_write_string (char *str)
-{
- SLsmg_write_nchars (str, strlen (str));
-}
-
-void SLsmg_write_nstring (char *str, unsigned int n)
-{
- unsigned int width;
- char blank = ' ';
-
- /* Avoid a problem if a user accidently passes a negative value */
- if ((int) n < 0)
- return;
-
- if (str == NULL) width = 0;
- else
- {
- width = strlen (str);
- if (width > n) width = n;
- SLsmg_write_nchars (str, width);
- }
- while (width++ < n) SLsmg_write_nchars (&blank, 1);
-}
-
-void SLsmg_write_wrapped_string (char *s, int r, int c,
- unsigned int dr, unsigned int dc,
- int fill)
-{
- register char ch, *p;
- int maxc = (int) dc;
-
- if ((dr == 0) || (dc == 0)) return;
- p = s;
- dc = 0;
- while (1)
- {
- ch = *p++;
- if ((ch == 0) || (ch == '\n'))
- {
- int diff;
-
- diff = maxc - (int) dc;
-
- SLsmg_gotorc (r, c);
- SLsmg_write_nchars (s, dc);
- if (fill && (diff > 0))
- {
- while (diff--) SLsmg_write_char (' ');
- }
- if ((ch == 0) || (dr == 1)) break;
-
- r++;
- dc = 0;
- dr--;
- s = p;
- }
- else if ((int) dc == maxc)
- {
- SLsmg_gotorc (r, c);
- SLsmg_write_nchars (s, dc + 1);
- if (dr == 1) break;
-
- r++;
- dc = 0;
- dr--;
- s = p;
- }
- else dc++;
- }
-}
-
-int SLsmg_Tab_Width = 8;
-
-/* Minimum value for which eight bit char is displayed as is. */
-
-#ifndef IBMPC_SYSTEM
-int SLsmg_Display_Eight_Bit = 160;
-static unsigned char Alt_Char_Set[129];/* 129th is used as a flag */
-#else
-int SLsmg_Display_Eight_Bit = 128;
-#endif
-
-void SLsmg_write_nchars (char *str, unsigned int n)
-{
- register SLsmg_Char_Type *p, old, neew, color;
- unsigned char ch;
- unsigned int flags;
- int len, start_len, max_len;
- char *str_max;
- int newline_flag;
-#ifndef IBMPC_SYSTEM
- int alt_char_set_flag;
-
- alt_char_set_flag = ((This_Color & ALT_CHAR_FLAG)
- && ((tt_Use_Blink_For_ACS == NULL)
- || (*tt_Use_Blink_For_ACS == 0)));
-#endif
-
- if (Smg_Inited == 0) return;
-
- str_max = str + n;
- color = This_Color;
-
- top: /* get here only on newline */
-
- newline_flag = 0;
- start_len = Start_Col;
-
- if (point_visible (0) == 0) return;
-
- len = This_Col;
- max_len = start_len + Screen_Cols;
-
- p = SL_Screen[This_Row - Start_Row].neew;
- if (len > start_len) p += (len - start_len);
-
- flags = SL_Screen[This_Row - Start_Row].flags;
- while ((len < max_len) && (str < str_max))
- {
- ch = (unsigned char) *str++;
-
-#ifndef IBMPC_SYSTEM
- if (alt_char_set_flag)
- ch = Alt_Char_Set [ch & 0x7F];
-#endif
- if (((ch >= ' ') && (ch < 127))
- || (ch >= (unsigned char) SLsmg_Display_Eight_Bit)
-#ifndef IBMPC_SYSTEM
- || alt_char_set_flag
-#endif
- )
- {
- len += 1;
- if (len > start_len)
- {
- old = *p;
- neew = SLSMG_BUILD_CHAR(ch,color);
- if (old != neew)
- {
- flags |= TOUCHED;
- *p = neew;
- }
- p++;
- }
- }
-
- else if ((ch == '\t') && (SLsmg_Tab_Width > 0))
- {
- n = len;
- n += SLsmg_Tab_Width;
- n = SLsmg_Tab_Width - (n % SLsmg_Tab_Width);
- if ((unsigned int) len + n > (unsigned int) max_len)
- n = (unsigned int) (max_len - len);
- neew = SLSMG_BUILD_CHAR(' ',color);
- while (n--)
- {
- len += 1;
- if (len > start_len)
- {
- if (*p != neew)
- {
- flags |= TOUCHED;
- *p = neew;
- }
- p++;
- }
- }
- }
- else if ((ch == '\n')
- && (SLsmg_Newline_Behavior != SLSMG_NEWLINE_PRINTABLE))
- {
- newline_flag = 1;
- break;
- }
- else if ((ch == 0x8) && SLsmg_Backspace_Moves)
- {
- if (len != 0) len--;
- }
- else
- {
- if (ch & 0x80)
- {
- neew = SLSMG_BUILD_CHAR('~',color);
- len += 1;
- if (len > start_len)
- {
- if (*p != neew)
- {
- *p = neew;
- flags |= TOUCHED;
- }
- p++;
- if (len == max_len) break;
- ch &= 0x7F;
- }
- }
-
- len += 1;
- if (len > start_len)
- {
- neew = SLSMG_BUILD_CHAR('^',color);
- if (*p != neew)
- {
- *p = neew;
- flags |= TOUCHED;
- }
- p++;
- if (len == max_len) break;
- }
-
- if (ch == 127) ch = '?'; else ch = ch + '@';
- len++;
- if (len > start_len)
- {
- neew = SLSMG_BUILD_CHAR(ch,color);
- if (*p != neew)
- {
- *p = neew;
- flags |= TOUCHED;
- }
- p++;
- }
- }
- }
-
- SL_Screen[This_Row - Start_Row].flags = flags;
- This_Col = len;
-
- if (SLsmg_Newline_Behavior == 0)
- return;
-
- if (newline_flag == 0)
- {
- while (str < str_max)
- {
- if (*str == '\n') break;
- str++;
- }
- if (str == str_max) return;
- str++;
- }
-
- This_Row++;
- This_Col = 0;
- if (This_Row == Start_Row + Screen_Rows)
- {
- if (SLsmg_Newline_Behavior == SLSMG_NEWLINE_SCROLLS) scroll_up ();
- }
- goto top;
-}
-
-void SLsmg_write_char (char ch)
-{
- SLsmg_write_nchars (&ch, 1);
-}
-
-static int Cls_Flag;
-
-void SLsmg_cls (void)
-{
- int tac;
- if (Smg_Inited == 0) return;
-
- tac = This_Alt_Char; This_Alt_Char = 0;
- SLsmg_set_color (0);
- clear_region (0, Screen_Rows);
- This_Alt_Char = tac;
- SLsmg_set_color (0);
- Cls_Flag = 1;
-}
-#if 0
-static void do_copy (SLsmg_Char_Type *a, SLsmg_Char_Type *b)
-{
- SLsmg_Char_Type *amax = a + Screen_Cols;
-
- while (a < amax) *a++ = *b++;
-}
-#endif
-
-#ifndef IBMPC_SYSTEM
-int SLsmg_Scroll_Hash_Border = 0;
-static unsigned long compute_hash (SLsmg_Char_Type *s, int n)
-{
- register unsigned long h = 0, g;
- register unsigned long sum = 0;
- register SLsmg_Char_Type *smax, ch;
- int is_blank = 2;
-
- s += SLsmg_Scroll_Hash_Border;
- smax = s + (n - SLsmg_Scroll_Hash_Border);
- while (s < smax)
- {
- ch = *s++;
- if (is_blank && (SLSMG_EXTRACT_CHAR(ch) != 32)) is_blank--;
-
- sum += ch;
-
- h = sum + (h << 3);
- if ((g = h & 0xE0000000UL) != 0)
- {
- h = h ^ (g >> 24);
- h = h ^ g;
- }
- }
- if (is_blank) return 0;
- return h;
-}
-
-static unsigned long Blank_Hash;
-
-static int try_scroll_down (int rmin, int rmax)
-{
- int i, r1, r2, di, j;
- unsigned long hash;
- int did_scroll;
- int color;
- SLsmg_Char_Type *tmp;
- int ignore;
-
- did_scroll = 0;
- for (i = rmax; i > rmin; i--)
- {
- hash = SL_Screen[i].new_hash;
- if (hash == Blank_Hash) continue;
-
- if ((hash == SL_Screen[i].old_hash)
-#if 0
- || ((i + 1 < Screen_Rows) && (hash == SL_Screen[i + 1].old_hash))
- || ((i - 1 > rmin) && (SL_Screen[i].old_hash == SL_Screen[i - 1].new_hash))
-#endif
- )
- continue;
-
- for (j = i - 1; j >= rmin; j--)
- {
- if (hash == SL_Screen[j].old_hash) break;
- }
- if (j < rmin) continue;
-
- r2 = i; /* end scroll region */
-
- di = i - j;
- j--;
- ignore = 0;
- while ((j >= rmin) && (SL_Screen[j].old_hash == SL_Screen[j + di].new_hash))
- {
- if (SL_Screen[j].old_hash == Blank_Hash) ignore++;
- j--;
- }
- r1 = j + 1;
-
- /* If this scroll only scrolls this line into place, don't do it.
- */
- if ((di > 1) && (r1 + di + ignore == r2)) continue;
-
- /* If there is anything in the scrolling region that is ok, abort the
- * scroll.
- */
-
- for (j = r1; j <= r2; j++)
- {
- if ((SL_Screen[j].old_hash != Blank_Hash)
- && (SL_Screen[j].old_hash == SL_Screen[j].new_hash))
- {
- /* See if the scroll is happens to scroll this one into place. */
- if ((j + di > r2) || (SL_Screen[j].old_hash != SL_Screen[j + di].new_hash))
- break;
- }
- }
- if (j <= r2) continue;
-
- color = This_Color; This_Color = 0;
- did_scroll = 1;
- (*tt_normal_video) ();
- (*tt_set_scroll_region) (r1, r2);
- (*tt_goto_rc) (0, 0);
- (*tt_reverse_index) (di);
- (*tt_reset_scroll_region) ();
- /* Now we have a hole in the screen.
- * Make the virtual screen look like it.
- *
- * Note that if the terminal does not support BCE, then we have
- * no idea what color the hole is. So, for this case, we do not
- * want to add Bce_Color_Offset to This_Color since if Bce_Color_Offset
- * is non-zero, then This_Color = 0 does not match any valid color
- * obtained by adding Bce_Color_Offset.
- */
- for (j = r1; j <= r2; j++) SL_Screen[j].flags = TOUCHED;
-
- while (di--)
- {
- tmp = SL_Screen[r2].old;
- for (j = r2; j > r1; j--)
- {
- SL_Screen[j].old = SL_Screen[j - 1].old;
- SL_Screen[j].old_hash = SL_Screen[j - 1].old_hash;
- }
- SL_Screen[r1].old = tmp;
- blank_line (SL_Screen[r1].old, Screen_Cols, ' ');
- SL_Screen[r1].old_hash = Blank_Hash;
- r1++;
- }
- This_Color = color;
- }
-
- return did_scroll;
-}
-
-static int try_scroll_up (int rmin, int rmax)
-{
- int i, r1, r2, di, j;
- unsigned long hash;
- int did_scroll;
- int color;
- SLsmg_Char_Type *tmp;
- int ignore;
-
- did_scroll = 0;
- for (i = rmin; i < rmax; i++)
- {
- hash = SL_Screen[i].new_hash;
- if (hash == Blank_Hash) continue;
- if (hash == SL_Screen[i].old_hash)
- continue;
- /* find a match further down screen */
- for (j = i + 1; j <= rmax; j++)
- {
- if (hash == SL_Screen[j].old_hash) break;
- }
- if (j > rmax) continue;
-
- r1 = i; /* beg scroll region */
- di = j - i; /* number of lines to scroll */
- j++; /* since we know this is a match */
-
- /* find end of scroll region */
- ignore = 0;
- while ((j <= rmax) && (SL_Screen[j].old_hash == SL_Screen[j - di].new_hash))
- {
- if (SL_Screen[j].old_hash == Blank_Hash) ignore++;
- j++;
- }
- r2 = j - 1; /* end of scroll region */
-
- /* If this scroll only scrolls this line into place, don't do it.
- */
- if ((di > 1) && (r1 + di + ignore == r2)) continue;
-
- /* If there is anything in the scrolling region that is ok, abort the
- * scroll.
- */
-
- for (j = r1; j <= r2; j++)
- {
- if ((SL_Screen[j].old_hash != Blank_Hash)
- && (SL_Screen[j].old_hash == SL_Screen[j].new_hash))
- {
- if ((j - di < r1) || (SL_Screen[j].old_hash != SL_Screen[j - di].new_hash))
- break;
- }
-
- }
- if (j <= r2) continue;
-
- did_scroll = 1;
-
- /* See the above comments about BCE */
- color = This_Color; This_Color = 0;
- (*tt_normal_video) ();
- (*tt_set_scroll_region) (r1, r2);
- (*tt_goto_rc) (0, 0); /* relative to scroll region */
- (*tt_delete_nlines) (di);
- (*tt_reset_scroll_region) ();
- /* Now we have a hole in the screen. Make the virtual screen look
- * like it.
- */
- for (j = r1; j <= r2; j++) SL_Screen[j].flags = TOUCHED;
-
- while (di--)
- {
- tmp = SL_Screen[r1].old;
- for (j = r1; j < r2; j++)
- {
- SL_Screen[j].old = SL_Screen[j + 1].old;
- SL_Screen[j].old_hash = SL_Screen[j + 1].old_hash;
- }
- SL_Screen[r2].old = tmp;
- blank_line (SL_Screen[r2].old, Screen_Cols, ' ');
- SL_Screen[r2].old_hash = Blank_Hash;
- r2--;
- }
- This_Color = color;
- }
- return did_scroll;
-}
-
-static void try_scroll (void)
-{
- int r1, rmin, rmax;
- int num_up, num_down;
- /* find region limits. */
-
- for (rmax = Screen_Rows - 1; rmax > 0; rmax--)
- {
- if (SL_Screen[rmax].new_hash != SL_Screen[rmax].old_hash)
- {
- r1 = rmax - 1;
- if ((r1 == 0)
- || (SL_Screen[r1].new_hash != SL_Screen[r1].old_hash))
- break;
-
- rmax = r1;
- }
- }
-
- for (rmin = 0; rmin < rmax; rmin++)
- {
- if (SL_Screen[rmin].new_hash != SL_Screen[rmin].old_hash)
- {
- r1 = rmin + 1;
- if ((r1 == rmax)
- || (SL_Screen[r1].new_hash != SL_Screen[r1].old_hash))
- break;
-
- rmin = r1;
- }
- }
-
- /* Below, we have two scrolling algorithms. The first has the effect of
- * scrolling lines down. This is usually appropriate when one moves
- * up the display, e.g., with the UP arrow. The second algorithm is
- * appropriate for going the other way. It is important to choose the
- * correct one.
- */
-
- num_up = 0;
- for (r1 = rmin; r1 < rmax; r1++)
- {
- if (SL_Screen[r1].new_hash == SL_Screen[r1 + 1].old_hash)
- num_up++;
- }
-
- num_down = 0;
- for (r1 = rmax; r1 > rmin; r1--)
- {
- if (SL_Screen[r1 - 1].old_hash == SL_Screen[r1].new_hash)
- num_down++;
- }
-
- if (num_up > num_down)
- {
- if (try_scroll_up (rmin, rmax))
- return;
-
- (void) try_scroll_down (rmin, rmax);
- }
- else
- {
- if (try_scroll_down (rmin, rmax))
- return;
-
- (void) try_scroll_up (rmin, rmax);
- }
-}
-#endif /* NOT IBMPC_SYSTEM */
-
-
-#ifdef REQUIRES_NON_BCE_SUPPORT
-static void adjust_colors (void)
-{
- int bce;
- int i;
-
- bce = Bce_Color_Offset;
- Bce_Color_Offset = _SLtt_get_bce_color_offset ();
- if (bce == Bce_Color_Offset)
- return;
-
- if ((tt_Use_Blink_For_ACS != NULL)
- && (*tt_Use_Blink_For_ACS != 0))
- return; /* this mode does not support non-BCE
- * terminals.
- */
-
- for (i = 0; i < Screen_Rows; i++)
- {
- SLsmg_Char_Type *s, *smax;
-
- SL_Screen[i].flags |= TRASHED;
- s = SL_Screen[i].neew;
- smax = s + Screen_Cols;
-
- while (s < smax)
- {
- int color = (int) SLSMG_EXTRACT_COLOR(*s);
- int acs;
-
- if (color < 0)
- {
- s++;
- continue;
- }
-
- acs = color & 0x80;
- color = (color & 0x7F) - bce;
- color += Bce_Color_Offset;
- if (color >= 0)
- {
- unsigned char ch = SLSMG_EXTRACT_CHAR(*s);
- *s = SLSMG_BUILD_CHAR(ch, ((color&0x7F)|acs));
- }
- s++;
- }
- }
-}
-#endif
-
-void SLsmg_refresh (void)
-{
- int i;
-#ifndef IBMPC_SYSTEM
- int trashed = 0;
-#endif
-
- if (Smg_Inited == 0) return;
-
- if (Screen_Trashed)
- {
- Cls_Flag = 1;
- for (i = 0; i < Screen_Rows; i++)
- SL_Screen[i].flags |= TRASHED;
-#ifdef REQUIRES_NON_BCE_SUPPORT
- adjust_colors ();
-#endif
- }
-
-#ifndef IBMPC_SYSTEM
- for (i = 0; i < Screen_Rows; i++)
- {
- if (SL_Screen[i].flags == 0) continue;
- SL_Screen[i].new_hash = compute_hash (SL_Screen[i].neew, Screen_Cols);
- trashed = 1;
- }
-#endif
-
- if (Cls_Flag)
- {
- (*tt_normal_video) (); (*tt_cls) ();
- }
-#ifndef IBMPC_SYSTEM
- else if (trashed && (*tt_Term_Cannot_Scroll == 0)) try_scroll ();
-#endif
-
- for (i = 0; i < Screen_Rows; i++)
- {
- if (SL_Screen[i].flags == 0) continue;
-
- if (Cls_Flag || SL_Screen[i].flags & TRASHED)
- {
- int color = This_Color;
-
- if (Cls_Flag == 0)
- {
- (*tt_goto_rc) (i, 0);
- (*tt_del_eol) ();
- }
- This_Color = 0;
- blank_line (SL_Screen[i].old, Screen_Cols, ' ');
- This_Color = color;
- }
-
- SL_Screen[i].old[Screen_Cols] = 0;
- SL_Screen[i].neew[Screen_Cols] = 0;
-
- (*tt_smart_puts) (SL_Screen[i].neew, SL_Screen[i].old, Screen_Cols, i);
-
- SLMEMCPY ((char *) SL_Screen[i].old, (char *) SL_Screen[i].neew,
- Screen_Cols * sizeof (SLsmg_Char_Type));
-
- SL_Screen[i].flags = 0;
-#ifndef IBMPC_SYSTEM
- SL_Screen[i].old_hash = SL_Screen[i].new_hash;
-#endif
- }
-
- if (point_visible (1)) (*tt_goto_rc) (This_Row - Start_Row, This_Col - Start_Col);
- (*tt_flush_output) ();
- Cls_Flag = 0;
- Screen_Trashed = 0;
-}
-
-static int compute_clip (int row, int n, int box_start, int box_end,
- int *rmin, int *rmax)
-{
- int row_max;
-
- if (n < 0) return 0;
- if (row >= box_end) return 0;
- row_max = row + n;
- if (row_max <= box_start) return 0;
-
- if (row < box_start) row = box_start;
- if (row_max >= box_end) row_max = box_end;
- *rmin = row;
- *rmax = row_max;
- return 1;
-}
-
-void SLsmg_touch_lines (int row, unsigned int n)
-{
- int i;
- int r1, r2;
-
- /* Allow this function to be called even when we are not initialied.
- * Calling this function is useful after calling SLtt_set_color
- * to force the display to be redrawn
- */
-
- if (Smg_Inited == 0)
- return;
-
- if (0 == compute_clip (row, (int) n, Start_Row, Start_Row + Screen_Rows, &r1, &r2))
- return;
-
- r1 -= Start_Row;
- r2 -= Start_Row;
- for (i = r1; i < r2; i++)
- {
- SL_Screen[i].flags |= TRASHED;
- }
-}
-
-void SLsmg_touch_screen (void)
-{
- Screen_Trashed = 1;
-}
-
-
-#ifndef IBMPC_SYSTEM
-static char Fake_Alt_Char_Pairs [] = "a:j+k+l+m+q-t+u+v+w+x|n+`+f\\g#~o,<+>.v-^h#0#";
-
-static void init_alt_char_set (void)
-{
- int i;
- unsigned char *p, *pmax, ch;
-
- if (Alt_Char_Set[128] == 128) return;
-
- i = 32;
- memset ((char *)Alt_Char_Set, ' ', i);
- while (i <= 128)
- {
- Alt_Char_Set [i] = i;
- i++;
- }
-
- /* Map to VT100 */
- if (*tt_Has_Alt_Charset)
- {
- if (tt_Graphics_Char_Pairs == NULL) p = NULL;
- else p = (unsigned char *) *tt_Graphics_Char_Pairs;
- if (p == NULL) return;
- }
- else p = (unsigned char *) Fake_Alt_Char_Pairs;
- pmax = p + strlen ((char *) p);
-
- /* Some systems have messed up entries for this */
- while (p < pmax)
- {
- ch = *p++;
- ch &= 0x7F; /* should be unnecessary */
- Alt_Char_Set [ch] = *p;
- p++;
- }
-}
-#endif
-
-#ifndef IBMPC_SYSTEM
-# define BLOCK_SIGNALS SLsig_block_signals ()
-# define UNBLOCK_SIGNALS SLsig_unblock_signals ()
-#else
-# define BLOCK_SIGNALS (void)0
-# define UNBLOCK_SIGNALS (void)0
-#endif
-
-static int Smg_Suspended;
-int SLsmg_suspend_smg (void)
-{
- BLOCK_SIGNALS;
-
- if (Smg_Suspended == 0)
- {
- (*tt_reset_video) ();
- Smg_Suspended = 1;
- }
-
- UNBLOCK_SIGNALS;
- return 0;
-}
-
-int SLsmg_resume_smg (void)
-{
- BLOCK_SIGNALS;
-
- if (Smg_Suspended == 0)
- {
- UNBLOCK_SIGNALS;
- return 0;
- }
-
- Smg_Suspended = 0;
-
- if (-1 == (*tt_init_video) ())
- {
- UNBLOCK_SIGNALS;
- return -1;
- }
-
- Cls_Flag = 1;
- SLsmg_touch_screen ();
- SLsmg_refresh ();
-
- UNBLOCK_SIGNALS;
- return 0;
-}
-
-
-static void reset_smg (void)
-{
- int i;
- if (Smg_Inited == 0)
- return;
-
- for (i = 0; i < Screen_Rows; i++)
- {
- SLfree ((char *)SL_Screen[i].old);
- SLfree ((char *)SL_Screen[i].neew);
- SL_Screen[i].old = SL_Screen[i].neew = NULL;
- }
- This_Alt_Char = This_Color = 0;
- Smg_Inited = 0;
-}
-
-
-static int init_smg (void)
-{
- int i, len;
- SLsmg_Char_Type *old, *neew;
-
- Smg_Inited = 0;
-
-#ifdef REQUIRES_NON_BCE_SUPPORT
- Bce_Color_Offset = _SLtt_get_bce_color_offset ();
-#endif
-
- Screen_Rows = *tt_Screen_Rows;
- if (Screen_Rows > MAX_SCREEN_SIZE)
- Screen_Rows = MAX_SCREEN_SIZE;
-
- Screen_Cols = *tt_Screen_Cols;
-
- This_Col = This_Row = Start_Col = Start_Row = 0;
-
- This_Alt_Char = 0;
- SLsmg_set_color (0);
- Cls_Flag = 1;
-#ifndef IBMPC_SYSTEM
- init_alt_char_set ();
-#endif
- len = Screen_Cols + 3;
- for (i = 0; i < Screen_Rows; i++)
- {
- if ((NULL == (old = (SLsmg_Char_Type *) SLmalloc (sizeof(SLsmg_Char_Type) * len)))
- || ((NULL == (neew = (SLsmg_Char_Type *) SLmalloc (sizeof(SLsmg_Char_Type) * len)))))
- {
- SLfree ((char *) old);
- return -1;
- }
- blank_line (old, len, ' ');
- blank_line (neew, len, ' ');
- SL_Screen[i].old = old;
- SL_Screen[i].neew = neew;
- SL_Screen[i].flags = 0;
-#ifndef IBMPC_SYSTEM
- Blank_Hash = compute_hash (old, Screen_Cols);
- SL_Screen[i].new_hash = SL_Screen[i].old_hash = Blank_Hash;
-#endif
- }
-
- _SLtt_color_changed_hook = SLsmg_touch_screen;
- Screen_Trashed = 1;
- Smg_Inited = 1;
- return 0;
-}
-
-
-int SLsmg_init_smg (void)
-{
- int ret;
-
- BLOCK_SIGNALS;
-
- if (Smg_Inited)
- SLsmg_reset_smg ();
-
- if (-1 == (*tt_init_video) ())
- {
- UNBLOCK_SIGNALS;
- return -1;
- }
-
- if (-1 == (ret = init_smg ()))
- (void) (*tt_reset_video)();
-
- UNBLOCK_SIGNALS;
- return ret;
-}
-
-int SLsmg_reinit_smg (void)
-{
- int ret;
-
- if (Smg_Inited == 0)
- return SLsmg_init_smg ();
-
- BLOCK_SIGNALS;
- reset_smg ();
- ret = init_smg ();
- UNBLOCK_SIGNALS;
- return ret;
-}
-
-void SLsmg_reset_smg (void)
-{
- if (Smg_Inited == 0)
- return;
-
- BLOCK_SIGNALS;
-
- reset_smg ();
- (*tt_reset_video)();
-
- UNBLOCK_SIGNALS;
-}
-
-SLsmg_Char_Type SLsmg_char_at (void)
-{
- if (Smg_Inited == 0) return 0;
-
- if (point_visible (1))
- {
- return SL_Screen[This_Row - Start_Row].neew[This_Col - Start_Col];
- }
- return 0;
-}
-
-void SLsmg_vprintf (char *fmt, va_list ap)
-{
- char buf[1024];
-
- if (Smg_Inited == 0) return;
-
- (void) _SLvsnprintf (buf, sizeof (buf), fmt, ap);
- SLsmg_write_string (buf);
-}
-
-void SLsmg_printf (char *fmt, ...)
-{
- va_list ap;
- unsigned int len;
- char *f;
-
- if (Smg_Inited == 0) return;
-
- va_start(ap, fmt);
-
- f = fmt;
- while (*f && (*f != '%'))
- f++;
- len = (unsigned int) (f - fmt);
- if (len) SLsmg_write_nchars (fmt, len);
-
- if (*f != 0)
- SLsmg_vprintf (f, ap);
-
- va_end (ap);
-}
-
-void SLsmg_set_screen_start (int *r, int *c)
-{
- int orow = Start_Row, oc = Start_Col;
-
- if (Smg_Inited == 0) return;
-
- if (c == NULL) Start_Col = 0;
- else
- {
- Start_Col = *c;
- *c = oc;
- }
- if (r == NULL) Start_Row = 0;
- else
- {
- Start_Row = *r;
- *r = orow;
- }
-}
-
-void SLsmg_draw_object (int r, int c, unsigned char object)
-{
- This_Row = r; This_Col = c;
-
- if (Smg_Inited == 0) return;
-
- if (point_visible (1))
- {
- int color = This_Color;
- This_Color |= ALT_CHAR_FLAG;
- SLsmg_write_char (object);
- This_Color = color;
- }
-
- This_Col = c + 1;
-}
-
-void SLsmg_draw_hline (unsigned int n)
-{
- static unsigned char hbuf[16];
- int count;
- int cmin, cmax;
- int final_col = This_Col + (int) n;
- int save_color;
-
- if (Smg_Inited == 0) return;
-
- if ((This_Row < Start_Row) || (This_Row >= Start_Row + Screen_Rows)
- || (0 == compute_clip (This_Col, n, Start_Col, Start_Col + Screen_Cols,
- &cmin, &cmax)))
- {
- This_Col = final_col;
- return;
- }
-
- if (hbuf[0] == 0)
- {
- SLMEMSET ((char *) hbuf, SLSMG_HLINE_CHAR, 16);
- }
-
- n = (unsigned int)(cmax - cmin);
- count = n / 16;
-
- save_color = This_Color;
- This_Color |= ALT_CHAR_FLAG;
- This_Col = cmin;
-
- SLsmg_write_nchars ((char *) hbuf, n % 16);
- while (count-- > 0)
- {
- SLsmg_write_nchars ((char *) hbuf, 16);
- }
-
- This_Color = save_color;
- This_Col = final_col;
-}
-
-void SLsmg_draw_vline (int n)
-{
- unsigned char ch = SLSMG_VLINE_CHAR;
- int c = This_Col, rmin, rmax;
- int final_row = This_Row + n;
- int save_color;
-
- if (Smg_Inited == 0) return;
-
- if (((c < Start_Col) || (c >= Start_Col + Screen_Cols)) ||
- (0 == compute_clip (This_Row, n, Start_Row, Start_Row + Screen_Rows,
- &rmin, &rmax)))
- {
- This_Row = final_row;
- return;
- }
-
- save_color = This_Color;
- This_Color |= ALT_CHAR_FLAG;
-
- for (This_Row = rmin; This_Row < rmax; This_Row++)
- {
- This_Col = c;
- SLsmg_write_nchars ((char *) &ch, 1);
- }
-
- This_Col = c; This_Row = final_row;
- This_Color = save_color;
-}
-
-void SLsmg_draw_box (int r, int c, unsigned int dr, unsigned int dc)
-{
- if (Smg_Inited == 0) return;
-
- if (!dr || !dc) return;
- This_Row = r; This_Col = c;
- dr--; dc--;
- SLsmg_draw_hline (dc);
- SLsmg_draw_vline (dr);
- This_Row = r; This_Col = c;
- SLsmg_draw_vline (dr);
- SLsmg_draw_hline (dc);
- SLsmg_draw_object (r, c, SLSMG_ULCORN_CHAR);
- SLsmg_draw_object (r, c + (int) dc, SLSMG_URCORN_CHAR);
- SLsmg_draw_object (r + (int) dr, c, SLSMG_LLCORN_CHAR);
- SLsmg_draw_object (r + (int) dr, c + (int) dc, SLSMG_LRCORN_CHAR);
- This_Row = r; This_Col = c;
-}
-
-void SLsmg_fill_region (int r, int c, unsigned int dr, unsigned int dc, unsigned char ch)
-{
- static unsigned char hbuf[16];
- int count;
- int dcmax, rmax;
-
- if (Smg_Inited == 0) return;
-
- SLsmg_gotorc (r, c);
- r = This_Row; c = This_Col;
-
- dcmax = Screen_Cols - This_Col;
- if (dcmax < 0)
- return;
-
- if (dc > (unsigned int) dcmax) dc = (unsigned int) dcmax;
-
- rmax = This_Row + dr;
- if (rmax > Screen_Rows) rmax = Screen_Rows;
-
-#if 0
- ch = Alt_Char_Set[ch];
-#endif
- if (ch != hbuf[0]) SLMEMSET ((char *) hbuf, (char) ch, 16);
-
- for (This_Row = r; This_Row < rmax; This_Row++)
- {
- This_Col = c;
- count = dc / 16;
- SLsmg_write_nchars ((char *) hbuf, dc % 16);
- while (count-- > 0)
- {
- SLsmg_write_nchars ((char *) hbuf, 16);
- }
- }
-
- This_Row = r;
-}
-
-void SLsmg_forward (int n)
-{
- This_Col += n;
-}
-
-void SLsmg_write_color_chars (SLsmg_Char_Type *s, unsigned int len)
-{
- SLsmg_Char_Type *smax, sh;
- char buf[32], *b, *bmax;
- int color, save_color;
-
- if (Smg_Inited == 0) return;
-
- smax = s + len;
- b = buf;
- bmax = b + sizeof (buf);
-
- save_color = This_Color;
-
- while (s < smax)
- {
- sh = *s++;
-
- color = SLSMG_EXTRACT_COLOR(sh);
-
-#if REQUIRES_NON_BCE_SUPPORT
- if (Bce_Color_Offset)
- {
- if (color & 0x80)
- color = ((color & 0x7F) + Bce_Color_Offset) | 0x80;
- else
- color = ((color & 0x7F) + Bce_Color_Offset) & 0x7F;
- }
-#endif
-
- if ((color != This_Color) || (b == bmax))
- {
- if (b != buf)
- {
- SLsmg_write_nchars (buf, (int) (b - buf));
- b = buf;
- }
- This_Color = color;
- }
- *b++ = (char) SLSMG_EXTRACT_CHAR(sh);
- }
-
- if (b != buf)
- SLsmg_write_nchars (buf, (unsigned int) (b - buf));
-
- This_Color = save_color;
-}
-
-unsigned int SLsmg_read_raw (SLsmg_Char_Type *buf, unsigned int len)
-{
- unsigned int r, c;
-
- if (Smg_Inited == 0) return 0;
-
- if (0 == point_visible (1)) return 0;
-
- r = (unsigned int) (This_Row - Start_Row);
- c = (unsigned int) (This_Col - Start_Col);
-
- if (c + len > (unsigned int) Screen_Cols)
- len = (unsigned int) Screen_Cols - c;
-
- memcpy ((char *) buf, (char *) (SL_Screen[r].neew + c), len * sizeof (SLsmg_Char_Type));
- return len;
-}
-
-unsigned int SLsmg_write_raw (SLsmg_Char_Type *buf, unsigned int len)
-{
- unsigned int r, c;
- SLsmg_Char_Type *dest;
-
- if (Smg_Inited == 0) return 0;
-
- if (0 == point_visible (1)) return 0;
-
- r = (unsigned int) (This_Row - Start_Row);
- c = (unsigned int) (This_Col - Start_Col);
-
- if (c + len > (unsigned int) Screen_Cols)
- len = (unsigned int) Screen_Cols - c;
-
- dest = SL_Screen[r].neew + c;
-
- if (0 != memcmp ((char *) dest, (char *) buf, len * sizeof (SLsmg_Char_Type)))
- {
- memcpy ((char *) dest, (char *) buf, len * sizeof (SLsmg_Char_Type));
- SL_Screen[r].flags |= TOUCHED;
- }
- return len;
-}
-
-void
-SLsmg_set_color_in_region (int color, int r, int c, unsigned int dr, unsigned int dc)
-{
- int cmax, rmax;
- SLsmg_Char_Type char_mask;
-
- if (Smg_Inited == 0) return;
-
- c -= Start_Col;
- r -= Start_Row;
-
- cmax = c + (int) dc;
- rmax = r + (int) dr;
-
- if (cmax > Screen_Cols) cmax = Screen_Cols;
- if (rmax > Screen_Rows) rmax = Screen_Rows;
-
- if (c < 0) c = 0;
- if (r < 0) r = 0;
-
-#if REQUIRES_NON_BCE_SUPPORT
- if (Bce_Color_Offset)
- {
- if (color & 0x80)
- color = ((color & 0x7F) + Bce_Color_Offset) | 0x80;
- else
- color = ((color & 0x7F) + Bce_Color_Offset) & 0x7F;
- }
-#endif
- color = color << 8;
-
- char_mask = 0xFF;
-
-#ifndef IBMPC_SYSTEM
- if ((tt_Use_Blink_For_ACS == NULL)
- || (0 == *tt_Use_Blink_For_ACS))
- char_mask = 0x80FF;
-#endif
-
- while (r < rmax)
- {
- SLsmg_Char_Type *s, *smax;
-
- SL_Screen[r].flags |= TOUCHED;
- s = SL_Screen[r].neew;
- smax = s + cmax;
- s += c;
-
- while (s < smax)
- {
- *s = (*s & char_mask) | color;
- s++;
- }
- r++;
- }
-}
-
-void SLsmg_set_terminal_info (SLsmg_Term_Type *tt)
-{
- if (tt == NULL) /* use default */
- return;
-
- if ((tt->tt_normal_video == NULL)
- || (tt->tt_goto_rc == NULL)
- || (tt->tt_cls == NULL)
- || (tt->tt_del_eol == NULL)
- || (tt->tt_smart_puts == NULL)
- || (tt->tt_flush_output == NULL)
- || (tt->tt_reset_video == NULL)
- || (tt->tt_init_video == NULL)
-#ifndef IBMPC_SYSTEM
- || (tt->tt_set_scroll_region == NULL)
- || (tt->tt_reverse_index == NULL)
- || (tt->tt_reset_scroll_region == NULL)
- || (tt->tt_delete_nlines == NULL)
- /* Variables */
- || (tt->tt_term_cannot_scroll == NULL)
- || (tt->tt_has_alt_charset == NULL)
-#if 0 /* These can be NULL */
- || (tt->tt_use_blink_for_acs == NULL)
- || (tt->tt_graphic_char_pairs == NULL)
-#endif
- || (tt->tt_screen_cols == NULL)
- || (tt->tt_screen_rows == NULL)
-#endif
- )
- SLang_exit_error ("Terminal not powerful enough for SLsmg");
-
- tt_normal_video = tt->tt_normal_video;
- tt_goto_rc = tt->tt_goto_rc;
- tt_cls = tt->tt_cls;
- tt_del_eol = tt->tt_del_eol;
- tt_smart_puts = tt->tt_smart_puts;
- tt_flush_output = tt->tt_flush_output;
- tt_reset_video = tt->tt_reset_video;
- tt_init_video = tt->tt_init_video;
-
-#ifndef IBMPC_SYSTEM
- tt_set_scroll_region = tt->tt_set_scroll_region;
- tt_reverse_index = tt->tt_reverse_index;
- tt_reset_scroll_region = tt->tt_reset_scroll_region;
- tt_delete_nlines = tt->tt_delete_nlines;
-
- tt_Term_Cannot_Scroll = tt->tt_term_cannot_scroll;
- tt_Has_Alt_Charset = tt->tt_has_alt_charset;
- tt_Use_Blink_For_ACS = tt->tt_use_blink_for_acs;
- tt_Graphics_Char_Pairs = tt->tt_graphic_char_pairs;
-#endif
-
- tt_Screen_Cols = tt->tt_screen_cols;
- tt_Screen_Rows = tt->tt_screen_rows;
-}
-
diff --git a/mdk-stage1/slang/slstd.c b/mdk-stage1/slang/slstd.c
deleted file mode 100644
index b05dfcddb..000000000
--- a/mdk-stage1/slang/slstd.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/* -*- mode: C; mode: fold; -*- */
-/* Standard intrinsic functions for S-Lang. Included here are string
- and array operations */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-/*{{{ Include Files */
-
-#include <time.h>
-
-#ifndef __QNX__
-# if defined(__GO32__) || defined(__WATCOMC__)
-# include <dos.h>
-# include <bios.h>
-# endif
-#endif
-
-#if SLANG_HAS_FLOAT
-# include <math.h>
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-/*}}}*/
-
-/* builtin stack manipulation functions */
-int SLdo_pop(void) /*{{{*/
-{
- return SLdo_pop_n (1);
-}
-
-/*}}}*/
-
-int SLdo_pop_n (unsigned int n)
-{
- SLang_Object_Type x;
-
- while (n--)
- {
- if (SLang_pop(&x)) return -1;
- SLang_free_object (&x);
- }
-
- return 0;
-}
-
-static void do_dup(void) /*{{{*/
-{
- (void) SLdup_n (1);
-}
-
-/*}}}*/
-
-static int length_cmd (void)
-{
- SLang_Class_Type *cl;
- SLang_Object_Type obj;
- VOID_STAR p;
- unsigned int length;
- int len;
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- cl = _SLclass_get_class (obj.data_type);
- p = _SLclass_get_ptr_to_value (cl, &obj);
-
- len = 1;
- if (cl->cl_length != NULL)
- {
- if (0 == (*cl->cl_length)(obj.data_type, p, &length))
- len = (int) length;
- else
- len = -1;
- }
-
- SLang_free_object (&obj);
- return len;
-}
-
-/* convert integer to a string of length 1 */
-static void char_cmd (int *x) /*{{{*/
-{
- char ch, buf[2];
-
- ch = (char) *x;
- buf[0] = ch;
- buf[1] = 0;
- SLang_push_string (buf);
-}
-
-/*}}}*/
-
-/* format object into a string and returns slstring */
-char *_SLstringize_object (SLang_Object_Type *obj) /*{{{*/
-{
- SLang_Class_Type *cl;
- unsigned char stype;
- VOID_STAR p;
- char *s, *s1;
-
- stype = obj->data_type;
- p = (VOID_STAR) &obj->v.ptr_val;
-
- cl = _SLclass_get_class (stype);
-
- s = (*cl->cl_string) (stype, p);
- if (s != NULL)
- {
- s1 = SLang_create_slstring (s);
- SLfree (s);
- s = s1;
- }
- return s;
-}
-/*}}}*/
-
-int SLang_run_hooks(char *hook, unsigned int num_args, ...)
-{
- unsigned int i;
- va_list ap;
-
- if (SLang_Error) return -1;
-
- if (0 == SLang_is_defined (hook))
- return 0;
-
- (void) SLang_start_arg_list ();
- va_start (ap, num_args);
- for (i = 0; i < num_args; i++)
- {
- char *arg;
-
- arg = va_arg (ap, char *);
- if (-1 == SLang_push_string (arg))
- break;
- }
- va_end (ap);
- (void) SLang_end_arg_list ();
-
- if (SLang_Error) return -1;
- return SLang_execute_function (hook);
-}
-
-static void intrin_getenv_cmd (char *s)
-{
- SLang_push_string (getenv (s));
-}
-
-#ifdef HAVE_PUTENV
-static void intrin_putenv (void) /*{{{*/
-{
- char *s;
-
- /* Some putenv implementations required malloced strings. */
- if (SLpop_string(&s)) return;
-
- if (putenv (s))
- {
- SLang_Error = SL_INTRINSIC_ERROR;
- SLfree (s);
- }
-
- /* Note that s is NOT freed */
-}
-
-/*}}}*/
-
-#endif
-
-static void lang_print_stack (void) /*{{{*/
-{
- char buf[32];
- unsigned int n;
-
- n = (unsigned int) (_SLStack_Pointer - _SLRun_Stack);
- while (n)
- {
- n--;
- sprintf (buf, "(%u)", n);
- _SLdump_objects (buf, _SLRun_Stack + n, 1, 1);
- }
-}
-
-/*}}}*/
-
-static void byte_compile_file (char *f, int *m)
-{
- SLang_byte_compile_file (f, *m);
-}
-
-static void intrin_type_info1 (void)
-{
- SLang_Object_Type obj;
- unsigned int type;
-
- if (-1 == SLang_pop (&obj))
- return;
-
- type = obj.data_type;
- if (type == SLANG_ARRAY_TYPE)
- type = obj.v.array_val->data_type;
-
- SLang_free_object (&obj);
-
- _SLang_push_datatype (type);
-}
-
-static void intrin_type_info (void)
-{
- SLang_Object_Type obj;
-
- if (-1 == SLang_pop (&obj))
- return;
-
- _SLang_push_datatype (obj.data_type);
- SLang_free_object (&obj);
-}
-
-void _SLstring_intrinsic (void) /*{{{*/
-{
- SLang_Object_Type x;
- char *s;
-
- if (SLang_pop (&x)) return;
- if (NULL != (s = _SLstringize_object (&x)))
- _SLang_push_slstring (s);
-
- SLang_free_object (&x);
-}
-
-/*}}}*/
-
-static void intrin_typecast (void)
-{
- unsigned char to_type;
- if (0 == _SLang_pop_datatype (&to_type))
- (void) SLclass_typecast (to_type, 0, 1);
-}
-
-#if SLANG_HAS_FLOAT
-static void intrin_double (void)
-{
- (void) SLclass_typecast (SLANG_DOUBLE_TYPE, 0, 1);
-}
-
-#endif
-
-static void intrin_int (void) /*{{{*/
-{
- (void) SLclass_typecast (SLANG_INT_TYPE, 0, 1);
-}
-
-/*}}}*/
-
-static char *
-intrin_function_name (void)
-{
- if (NULL == _SLang_Current_Function_Name)
- return "";
- return _SLang_Current_Function_Name;
-}
-
-static void intrin_message (char *s)
-{
- SLang_vmessage ("%s", s);
-}
-
-static void intrin_error (char *s)
-{
- SLang_verror (SL_USER_ERROR, "%s", s);
-}
-
-static void intrin_pop_n (int *n)
-{
- SLdo_pop_n ((unsigned int) *n);
-}
-
-static void intrin_reverse_stack (int *n)
-{
- SLreverse_stack (*n);
-}
-
-static void intrin_roll_stack (int *n)
-{
- SLroll_stack (*n);
-}
-
-static void usage (void)
-{
- char *msg;
-
- _SLstrops_do_sprintf_n (SLang_Num_Function_Args - 1); /* do not include format */
-
- if (-1 == SLang_pop_slstring (&msg))
- return;
-
- SLang_verror (SL_USAGE_ERROR, "Usage: %s", msg);
- SLang_free_slstring (msg);
-}
-
-/* Convert string to integer */
-static int intrin_integer (char *s)
-{
- int i;
-
- i = SLatoi ((unsigned char *) s);
-
- if (SLang_Error)
- SLang_verror (SL_TYPE_MISMATCH, "Unable to convert string to integer");
- return i;
-}
-/*}}}*/
-
-static void guess_type (char *s)
-{
- _SLang_push_datatype (SLang_guess_type(s));
-}
-
-static int load_file (char *s)
-{
- if (-1 == SLang_load_file (s))
- return 0;
- return 1;
-}
-
-static void get_doc_string (char *file, char *topic)
-{
- FILE *fp;
- char line[1024];
- unsigned int topic_len, str_len;
- char *str;
- char ch;
-
- if (NULL == (fp = fopen (file, "r")))
- {
- SLang_push_null ();
- return;
- }
-
- topic_len = strlen (topic);
- ch = *topic;
-
- while (1)
- {
- if (NULL == fgets (line, sizeof(line), fp))
- {
- fclose (fp);
- (void) SLang_push_null ();
- return;
- }
-
- if ((ch == *line)
- && (0 == strncmp (line, topic, topic_len))
- && ((line[topic_len] == '\n') || (line [topic_len] == 0)
- || (line[topic_len] == ' ') || (line[topic_len] == '\t')))
- break;
- }
-
- if (NULL == (str = SLmake_string (line)))
- {
- fclose (fp);
- (void) SLang_push_null ();
- return;
- }
- str_len = strlen (str);
-
- while (NULL != fgets (line, sizeof (line), fp))
- {
- unsigned int len;
- char *new_str;
-
- ch = *line;
- if (ch == '#') continue;
- if (ch == '-') break;
-
- len = strlen (line);
- if (NULL == (new_str = SLrealloc (str, str_len + len + 1)))
- {
- SLfree (str);
- str = NULL;
- break;
- }
- str = new_str;
- strcpy (str + str_len, line);
- str_len += len;
- }
-
- fclose (fp);
-
- (void) SLang_push_malloced_string (str);
-}
-
-static int push_string_array_elements (SLang_Array_Type *at)
-{
- char **strs;
- unsigned int num;
- unsigned int i;
-
- if (at == NULL)
- return -1;
-
- strs = (char **)at->data;
- num = at->num_elements;
- for (i = 0; i < num; i++)
- {
- if (-1 == SLang_push_string (strs[i]))
- {
- SLdo_pop_n (i);
- return -1;
- }
- }
- SLang_push_integer ((int) num);
- return 0;
-}
-
-
-static void intrin_apropos (void)
-{
- int num_args;
- char *pat;
- char *namespace_name;
- unsigned int flags;
- SLang_Array_Type *at;
-
- num_args = SLang_Num_Function_Args;
-
- if (-1 == SLang_pop_uinteger (&flags))
- return;
- if (-1 == SLang_pop_slstring (&pat))
- return;
-
- namespace_name = NULL;
- at = NULL;
- if (num_args == 3)
- {
- if (-1 == SLang_pop_slstring (&namespace_name))
- goto free_and_return;
- }
-
- at = _SLang_apropos (namespace_name, pat, flags);
- if (num_args == 3)
- {
- (void) SLang_push_array (at, 0);
- goto free_and_return;
- }
-
- /* Maintain compatibility with old version of the function. That version
- * did not take three arguments and returned everything to the stack.
- * Yuk.
- */
- (void) push_string_array_elements (at);
-
- free_and_return:
- /* NULLs ok */
- SLang_free_slstring (namespace_name);
- SLang_free_slstring (pat);
- SLang_free_array (at);
-}
-
-static int intrin_get_defines (void)
-{
- int n = 0;
- char **s = _SLdefines;
-
- while (*s != NULL)
- {
- if (-1 == SLang_push_string (*s))
- {
- SLdo_pop_n ((unsigned int) n);
- return -1;
- }
- s++;
- n++;
- }
- return n;
-}
-
-static void intrin_get_reference (char *name)
-{
- _SLang_push_ref (1, (VOID_STAR) _SLlocate_name (name));
-}
-
-#ifdef HAVE_SYS_UTSNAME_H
-# include <sys/utsname.h>
-#endif
-
-static void uname_cmd (void)
-{
-#ifdef HAVE_UNAME
- struct utsname u;
- char *field_names [6];
- unsigned char field_types[6];
- VOID_STAR field_values [6];
- char *ptrs[6];
- int i;
-
- if (-1 == uname (&u))
- (void) SLang_push_null ();
-
- field_names[0] = "sysname"; ptrs[0] = u.sysname;
- field_names[1] = "nodename"; ptrs[1] = u.nodename;
- field_names[2] = "release"; ptrs[2] = u.release;
- field_names[3] = "version"; ptrs[3] = u.version;
- field_names[4] = "machine"; ptrs[4] = u.machine;
-
- for (i = 0; i < 5; i++)
- {
- field_types[i] = SLANG_STRING_TYPE;
- field_values[i] = (VOID_STAR) &ptrs[i];
- }
-
- if (0 == SLstruct_create_struct (5, field_names, field_types, field_values))
- return;
-#endif
-
- SLang_push_null ();
-}
-
-static void uninitialize_ref_intrin (SLang_Ref_Type *ref)
-{
- (void) _SLang_uninitialize_ref (ref);
-}
-
-static SLang_Intrin_Fun_Type SLang_Basic_Table [] = /*{{{*/
-{
- MAKE_INTRINSIC_1("__is_initialized", _SLang_is_ref_initialized, SLANG_INT_TYPE, SLANG_REF_TYPE),
- MAKE_INTRINSIC_S("__get_reference", intrin_get_reference, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_1("__uninitialize", uninitialize_ref_intrin, SLANG_VOID_TYPE, SLANG_REF_TYPE),
- MAKE_INTRINSIC_SS("get_doc_string_from_file", get_doc_string, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SS("autoload", SLang_autoload, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("is_defined", SLang_is_defined, SLANG_INT_TYPE),
- MAKE_INTRINSIC_0("string", _SLstring_intrinsic, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("uname", uname_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("getenv", intrin_getenv_cmd, SLANG_VOID_TYPE),
-#ifdef HAVE_PUTENV
- MAKE_INTRINSIC_0("putenv", intrin_putenv, SLANG_VOID_TYPE),
-#endif
- MAKE_INTRINSIC_S("evalfile", load_file, SLANG_INT_TYPE),
- MAKE_INTRINSIC_I("char", char_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("eval", SLang_load_string, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("dup", do_dup, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("integer", intrin_integer, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("system", SLsystem, SLANG_INT_TYPE),
- MAKE_INTRINSIC_0("_apropos", intrin_apropos, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("_trace_function", _SLang_trace_fun, SLANG_VOID_TYPE),
-#if SLANG_HAS_FLOAT
- MAKE_INTRINSIC_S("atof", _SLang_atof, SLANG_DOUBLE_TYPE),
- MAKE_INTRINSIC_0("double", intrin_double, SLANG_VOID_TYPE),
-#endif
- MAKE_INTRINSIC_0("int", intrin_int, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("typecast", intrin_typecast, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("_stkdepth", _SLstack_depth, SLANG_INT_TYPE),
- MAKE_INTRINSIC_I("_stk_reverse", intrin_reverse_stack, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("typeof", intrin_type_info, VOID_TYPE),
- MAKE_INTRINSIC_0("_typeof", intrin_type_info1, VOID_TYPE),
- MAKE_INTRINSIC_I("_pop_n", intrin_pop_n, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("_print_stack", lang_print_stack, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_I("_stk_roll", intrin_roll_stack, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SI("byte_compile_file", byte_compile_file, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("_clear_error", _SLang_clear_error, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("_function_name", intrin_function_name, SLANG_STRING_TYPE),
-#if SLANG_HAS_FLOAT
- MAKE_INTRINSIC_S("set_float_format", _SLset_double_format, SLANG_VOID_TYPE),
-#endif
- MAKE_INTRINSIC_S("_slang_guess_type", guess_type, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("error", intrin_error, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("message", intrin_message, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("__get_defined_symbols", intrin_get_defines, SLANG_INT_TYPE),
- MAKE_INTRINSIC_I("__pop_args", _SLstruct_pop_args, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_1("__push_args", _SLstruct_push_args, SLANG_VOID_TYPE, SLANG_ARRAY_TYPE),
- MAKE_INTRINSIC_0("usage", usage, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("implements", _SLang_implements_intrinsic, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("use_namespace", _SLang_use_namespace_intrinsic, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("current_namespace", _SLang_cur_namespace_intrinsic, SLANG_STRING_TYPE),
- MAKE_INTRINSIC_0("length", length_cmd, SLANG_INT_TYPE),
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-/*}}}*/
-
-#ifdef SLANG_DOC_DIR
-char *SLang_Doc_Dir = SLANG_DOC_DIR;
-#else
-char *SLang_Doc_Dir = "";
-#endif
-
-static SLang_Intrin_Var_Type Intrin_Vars[] =
-{
- MAKE_VARIABLE("_debug_info", &_SLang_Compile_Line_Num_Info, SLANG_INT_TYPE, 0),
- MAKE_VARIABLE("_auto_declare", &_SLang_Auto_Declare_Globals, SLANG_INT_TYPE, 0),
- MAKE_VARIABLE("_traceback", &SLang_Traceback, SLANG_INT_TYPE, 0),
- MAKE_VARIABLE("_slangtrace", &_SLang_Trace, SLANG_INT_TYPE, 0),
- MAKE_VARIABLE("_slang_version", &SLang_Version, SLANG_INT_TYPE, 1),
- MAKE_VARIABLE("_slang_version_string", &SLang_Version_String, SLANG_STRING_TYPE, 1),
- MAKE_VARIABLE("_NARGS", &SLang_Num_Function_Args, SLANG_INT_TYPE, 1),
- MAKE_VARIABLE("_slang_doc_dir", &SLang_Doc_Dir, SLANG_STRING_TYPE, 1),
- MAKE_VARIABLE("NULL", NULL, SLANG_NULL_TYPE, 1),
- SLANG_END_INTRIN_VAR_TABLE
-};
-
-int SLang_init_slang (void) /*{{{*/
-{
- char name[3];
- unsigned int i;
- char **s;
- static char *sys_defines [] =
- {
-#if defined(__os2__)
- "OS2",
-#endif
-#if defined(__MSDOS__)
- "MSDOS",
-#endif
-#if defined(__WIN16__)
- "WIN16",
-#endif
-#if defined (__WIN32__)
- "WIN32",
-#endif
-#if defined(__NT__)
- "NT",
-#endif
-#if defined (VMS)
- "VMS",
-#endif
-#ifdef REAL_UNIX_SYSTEM
- "UNIX",
-#endif
-#if SLANG_HAS_FLOAT
- "SLANG_DOUBLE_TYPE",
-#endif
- NULL
- };
-
- if (-1 == _SLregister_types ()) return -1;
-
- if ((-1 == SLadd_intrin_fun_table(SLang_Basic_Table, NULL))
- || (-1 == SLadd_intrin_var_table (Intrin_Vars, NULL))
- || (-1 == _SLang_init_slstrops ())
- || (-1 == _SLang_init_sltime ())
- || (-1 == _SLstruct_init ())
-#if SLANG_HAS_COMPLEX
- || (-1 == _SLinit_slcomplex ())
-#endif
-#if SLANG_HAS_ASSOC_ARRAYS
- || (-1 == SLang_init_slassoc ())
-#endif
- )
- return -1;
-
- SLadd_global_variable (SLANG_SYSTEM_NAME);
-
- s = sys_defines;
- while (*s != NULL)
- {
- if (-1 == SLdefine_for_ifdef (*s)) return -1;
- s++;
- }
-
- /* give temp global variables $0 --> $9 */
- name[2] = 0; name[0] = '$';
- for (i = 0; i < 10; i++)
- {
- name[1] = (char) (i + '0');
- SLadd_global_variable (name);
- }
-
- SLang_init_case_tables ();
-
- /* Now add a couple of macros */
- SLang_load_string (".(_NARGS 1 - Sprintf error)verror");
- SLang_load_string (".(_NARGS 1 - Sprintf message)vmessage");
-
- if (SLang_Error)
- return -1;
-
- return 0;
-}
-
-/*}}}*/
-
-int SLang_set_argc_argv (int argc, char **argv)
-{
- static int this_argc;
- static char **this_argv;
- int i;
-
- if (argc < 0) argc = 0;
- this_argc = argc;
-
- if (NULL == (this_argv = (char **) SLmalloc ((argc + 1) * sizeof (char *))))
- return -1;
- memset ((char *) this_argv, 0, sizeof (char *) * (argc + 1));
-
- for (i = 0; i < argc; i++)
- {
- if (NULL == (this_argv[i] = SLang_create_slstring (argv[i])))
- goto return_error;
- }
-
- if (-1 == SLadd_intrinsic_variable ("__argc", (VOID_STAR)&this_argc,
- SLANG_INT_TYPE, 1))
- goto return_error;
-
- if (-1 == SLang_add_intrinsic_array ("__argv", SLANG_STRING_TYPE, 1,
- (VOID_STAR) this_argv, 1, argc))
- goto return_error;
-
- return 0;
-
- return_error:
- for (i = 0; i < argc; i++)
- SLang_free_slstring (this_argv[i]); /* NULL ok */
- SLfree ((char *) this_argv);
-
- return -1;
-}
diff --git a/mdk-stage1/slang/slstdio.c b/mdk-stage1/slang/slstdio.c
deleted file mode 100644
index 05db1af77..000000000
--- a/mdk-stage1/slang/slstdio.c
+++ /dev/null
@@ -1,1050 +0,0 @@
-/* file stdio intrinsics for S-Lang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#if defined(__unix__) || (defined (__os2__) && defined (__EMX__))
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_FCNTL_H
-# include <sys/fcntl.h>
-#endif
-
-#ifdef __unix__
-# include <sys/file.h>
-#endif
-
-#if defined(__BORLANDC__)
-# include <io.h>
-# include <dir.h>
-#endif
-
-#if defined(__DECC) && defined(VMS)
-# include <unixio.h>
-# include <unixlib.h>
-#endif
-
-#ifdef VMS
-# include <stat.h>
-#else
-# include <sys/stat.h>
-#endif
-
-#include <errno.h>
-
-#define SL_APP_WANTS_FOREACH
-#include "slang.h"
-#include "_slang.h"
-
-typedef struct
-{
- FILE *fp; /* kind of obvious */
- char *file; /* file name associated with pointer */
-
- unsigned int flags; /* modes, etc... */
-#define SL_READ 0x0001
-#define SL_WRITE 0x0002
-#define SL_BINARY 0x0004
-#define SL_FDOPEN 0x2000
-#define SL_PIPE 0x4000
-#define SL_INUSE 0x8000
-}
-SL_File_Table_Type;
-
-static SL_File_Table_Type *SL_File_Table;
-
-static SL_File_Table_Type *get_free_file_table_entry (void)
-{
- SL_File_Table_Type *t = SL_File_Table, *tmax;
-
- tmax = t + SL_MAX_FILES;
- while (t < tmax)
- {
- if (t->flags == 0)
- {
- memset ((char *) t, 0, sizeof (SL_File_Table_Type));
- return t;
- }
- t++;
- }
-
- return NULL;
-}
-
-static unsigned int file_process_flags (char *mode)
-{
- char ch;
- unsigned int flags = 0;
-
- while (1)
- {
- ch = *mode++;
- switch (ch)
- {
- case 'r': flags |= SL_READ;
- break;
- case 'w':
- case 'a':
- case 'A':
- flags |= SL_WRITE;
- break;
- case '+': flags |= SL_WRITE | SL_READ;
- break;
- case 'b': flags |= SL_BINARY;
- break;
- case 0:
- return flags;
-
- default:
- SLang_verror (SL_INVALID_PARM, "File flag %c is not supported", ch);
- return 0;
- }
- }
-}
-
-static int open_file_type (char *file, int fd, char *mode,
- FILE *(*open_fun)(char *, char *),
- int (*close_fun)(FILE *),
- unsigned int xflags)
-{
- FILE *fp;
- SL_File_Table_Type *t;
- unsigned int flags;
- SLang_MMT_Type *mmt;
-
- fp = NULL;
- t = NULL;
- mmt = NULL;
-
- if ((NULL == (t = get_free_file_table_entry ()))
- || (0 == (flags = file_process_flags(mode))))
- goto return_error;
-
- if (fd != -1)
- fp = fdopen (fd, mode);
- else
- fp = open_fun (file, mode);
-
- if (fp == NULL)
- {
- _SLerrno_errno = errno;
- goto return_error;
- }
-
- if (NULL == (mmt = SLang_create_mmt (SLANG_FILE_PTR_TYPE, (VOID_STAR) t)))
- goto return_error;
-
- t->fp = fp;
- t->flags = flags | xflags;
- fp = NULL; /* allow free_mmt to close fp */
-
- if ((NULL != (t->file = SLang_create_slstring (file)))
- && (0 == SLang_push_mmt (mmt)))
- return 0;
-
- /* drop */
-
- return_error:
- if (fp != NULL) (*close_fun) (fp);
- if (mmt != NULL) SLang_free_mmt (mmt);
- (void) SLang_push_null ();
- return -1;
-}
-
-/* Since some compilers do not have popen/pclose prototyped and in scope,
- * and pc compilers sometimes have silly prototypes involving PASCAL, etc.
- * use wrappers around the function to avoid compilation errors.
- */
-
-static FILE *fopen_fun (char *f, char *m)
-{
- return fopen (f, m);
-}
-static int fclose_fun (FILE *fp)
-{
- return fclose (fp);
-}
-
-static void stdio_fopen (char *file, char *mode)
-{
- (void) open_file_type (file, -1, mode, fopen_fun, fclose_fun, 0);
-}
-
-int _SLstdio_fdopen (char *file, int fd, char *mode)
-{
- if (fd == -1)
- {
- _SLerrno_errno = EBADF;
- (void) SLang_push_null ();
- return -1;
- }
-
- return open_file_type (file, fd, mode, NULL, fclose_fun, SL_FDOPEN);
-}
-
-#ifdef HAVE_POPEN
-static int pclose_fun (FILE *fp)
-{
- return pclose (fp);
-}
-
-static FILE *popen_fun (char *file, char *mode)
-{
- return popen (file, mode);
-}
-
-static void stdio_popen (char *file, char *mode)
-{
- (void) open_file_type (file, -1, mode, popen_fun, pclose_fun, SL_PIPE);
-}
-#endif
-
-/* returns pointer to file entry if it is open and consistent with
- flags. Returns NULL otherwise */
-static SLang_MMT_Type *pop_fp (unsigned int flags, FILE **fp_ptr)
-{
- SL_File_Table_Type *t;
- SLang_MMT_Type *mmt;
-
- *fp_ptr = NULL;
-
- if (NULL == (mmt = SLang_pop_mmt (SLANG_FILE_PTR_TYPE)))
- return NULL;
-
- t = (SL_File_Table_Type *) SLang_object_from_mmt (mmt);
- if ((t->flags & flags)
- && (NULL != (*fp_ptr = t->fp)))
- return mmt;
-
- SLang_free_mmt (mmt);
- return NULL;
-}
-
-static FILE *check_fp (SL_File_Table_Type *t, unsigned flags)
-{
- if ((t != NULL) && (t->flags & flags))
- return t->fp;
-
- return NULL;
-}
-
-char *SLang_get_name_from_fileptr (SLang_MMT_Type *mmt)
-{
- SL_File_Table_Type *ft;
-
- ft = (SL_File_Table_Type *) SLang_object_from_mmt (mmt);
- if (ft == NULL)
- return NULL;
- return ft->file;
-}
-
-int SLang_pop_fileptr (SLang_MMT_Type **mmt, FILE **fp)
-{
- if (NULL == (*mmt = pop_fp (0xFFFF, fp)))
- {
-#ifdef EBADF
- _SLerrno_errno = EBADF;
-#endif
- return -1;
- }
-
- return 0;
-}
-
-static int close_file_type (SL_File_Table_Type *t)
-{
- int ret = 0;
- FILE *fp;
-
- if (t == NULL)
- return -1;
-
- fp = t->fp;
-
- if (NULL == fp) ret = -1;
- else
- {
- if (0 == (t->flags & SL_PIPE))
- {
- if (EOF == (ret = fclose (fp)))
- _SLerrno_errno = errno;
- }
-#ifdef HAVE_POPEN
- else
- {
- if (-1 == (ret = pclose (fp)))
- _SLerrno_errno = errno;
- }
-#endif
- }
-
- if (t->file != NULL) SLang_free_slstring (t->file);
- memset ((char *) t, 0, sizeof (SL_File_Table_Type));
- return ret;
-}
-
-static int stdio_fclose (SL_File_Table_Type *t)
-{
- int ret;
-
- if (NULL == check_fp (t, 0xFFFF))
- return -1;
-
- ret = close_file_type (t);
-
- t->flags = SL_INUSE;
- return ret;
-}
-
-static int read_one_line (FILE *fp, char **strp, unsigned int *lenp)
-{
- char buf[512];
- char *str;
- unsigned int len;
-
- *strp = NULL;
- len = 0;
- str = NULL;
-
- while (NULL != fgets (buf, sizeof (buf), fp))
- {
- unsigned int dlen;
- char *new_str;
- int done_flag;
-
- dlen = strlen (buf);
- /* Note: If the file contains embedded \0 characters, then this
- * fails to work properly since dlen will not be correct.
- */
- done_flag = ((dlen + 1 < sizeof (buf))
- || (buf[dlen - 1] == '\n'));
-
- if (done_flag && (str == NULL))
- {
- /* Avoid the malloc */
- str = buf;
- len = dlen;
- break;
- }
-
- if (NULL == (new_str = SLrealloc (str, len + dlen + 1)))
- {
- SLfree (str);
- return -1;
- }
-
- str = new_str;
- strcpy (str + len, buf);
- len += dlen;
-
- if (done_flag) break;
- }
-
- if (str == NULL)
- return 0;
-
- *strp = SLang_create_nslstring (str, len);
- if (str != buf) SLfree (str);
-
- if (*strp == NULL) return -1;
-
- *lenp = len;
- return 1;
-}
-
-/* returns number of characters read and pushes the string to the stack.
- If it fails, it returns -1 */
-static int stdio_fgets (SLang_Ref_Type *ref, SL_File_Table_Type *t)
-{
- char *s;
- unsigned int len;
- FILE *fp;
- int status;
-
- if (NULL == (fp = check_fp (t, SL_READ)))
- return -1;
-
- status = read_one_line (fp, &s, &len);
- if (status <= 0)
- return -1;
-
- status = SLang_assign_to_ref (ref, SLANG_STRING_TYPE, (VOID_STAR)&s);
- SLang_free_slstring (s);
-
- if (status == -1)
- return -1;
-
- return (int) len;
-}
-
-static void stdio_fgetslines_internal (FILE *fp, unsigned int n)
-{
- unsigned int num_lines, max_num_lines;
- char **list;
- SLang_Array_Type *at;
- int inum_lines;
-
- if (n > 1024)
- max_num_lines = 1024;
- else
- {
- max_num_lines = n;
- if (max_num_lines == 0)
- max_num_lines++;
- }
-
- list = (char **) SLmalloc (sizeof (char *) * max_num_lines);
- if (list == NULL)
- return;
-
- num_lines = 0;
- while (num_lines < n)
- {
- int status;
- char *line;
- unsigned int len;
-
- status = read_one_line (fp, &line, &len);
- if (status == -1)
- goto return_error;
-
- if (status == 0)
- break;
-
- if (max_num_lines == num_lines)
- {
- char **new_list;
-
- if (max_num_lines + 4096 > n)
- max_num_lines = n;
- else
- max_num_lines += 4096;
-
- new_list = (char **) SLrealloc ((char *)list, sizeof (char *) * max_num_lines);
- if (new_list == NULL)
- {
- SLang_free_slstring (line);
- goto return_error;
- }
- list = new_list;
- }
-
- list[num_lines] = line;
- num_lines++;
- }
-
- if (num_lines != max_num_lines)
- {
- char **new_list;
-
- new_list = (char **)SLrealloc ((char *)list, sizeof (char *) * (num_lines + 1));
- if (new_list == NULL)
- goto return_error;
-
- list = new_list;
- }
-
- inum_lines = (int) num_lines;
- if (NULL == (at = SLang_create_array (SLANG_STRING_TYPE, 0, (VOID_STAR) list, &inum_lines, 1)))
- goto return_error;
-
- if (-1 == SLang_push_array (at, 1))
- SLang_push_null ();
- return;
-
- return_error:
- while (num_lines > 0)
- {
- num_lines--;
- SLfree (list[num_lines]);
- }
- SLfree ((char *)list);
- SLang_push_null ();
-}
-
-static void stdio_fgetslines (void)
-{
- unsigned int n;
- FILE *fp;
- SLang_MMT_Type *mmt;
-
- n = (unsigned int)-1;
-
- if (SLang_Num_Function_Args == 2)
- {
- if (-1 == SLang_pop_uinteger (&n))
- return;
- }
-
- if (NULL == (mmt = pop_fp (SL_READ, &fp)))
- {
- SLang_push_null ();
- return;
- }
-
- stdio_fgetslines_internal (fp, n);
- SLang_free_mmt (mmt);
-}
-
-
-static int stdio_fputs (char *s, SL_File_Table_Type *t)
-{
- FILE *fp;
-
- if (NULL == (fp = check_fp (t, SL_WRITE)))
- return -1;
-
- if (EOF == fputs(s, fp)) return -1;
- return (int) strlen (s);
-}
-
-static int stdio_fflush (SL_File_Table_Type *t)
-{
- FILE *fp;
-
- if (NULL == (fp = check_fp (t, SL_WRITE)))
- return -1;
-
- if (EOF == fflush (fp))
- {
- _SLerrno_errno = errno;
- return -1;
- }
-
- return 0;
-}
-
-/* Usage: n = fread (&str, data-type, nelems, fp); */
-static void stdio_fread (SLang_Ref_Type *ref, int *data_typep, unsigned int *num_elemns, SL_File_Table_Type *t)
-{
- char *s;
- FILE *fp;
- int ret;
- unsigned int num_read, num_to_read;
- unsigned int nbytes;
- SLang_Class_Type *cl;
- unsigned int sizeof_type;
- int data_type;
-
- ret = -1;
- s = NULL;
- cl = NULL;
-
- if (NULL == (fp = check_fp (t, SL_READ)))
- goto the_return;
-
- /* FIXME: priority = low : I should add some mechanism to support
- * other types.
- */
- data_type = *data_typep;
-
- cl = _SLclass_get_class ((unsigned char) data_type);
-
- if (cl->cl_fread == NULL)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "fread does not support %s objects",
- cl->cl_name);
- goto the_return;
- }
-
- sizeof_type = cl->cl_sizeof_type;
-
- num_to_read = *num_elemns;
- nbytes = (unsigned int) num_to_read * sizeof_type;
-
- s = SLmalloc (nbytes + 1);
- if (s == NULL)
- goto the_return;
-
- ret = cl->cl_fread (data_type, fp, (VOID_STAR)s, num_to_read, &num_read);
-
- if ((num_read == 0)
- && (num_read != num_to_read))
- ret = -1;
-
- if ((ret == -1) && ferror (fp))
- _SLerrno_errno = errno;
-
- if ((ret == 0)
- && (num_read != num_to_read))
- {
- char *new_s;
-
- nbytes = num_read * sizeof_type;
- new_s = SLrealloc (s, nbytes + 1);
- if (new_s == NULL)
- ret = -1;
- else
- s = new_s;
- }
-
- if (ret == 0)
- {
- if (num_read == 1)
- {
- ret = SLang_assign_to_ref (ref, data_type, (VOID_STAR)s);
- SLfree (s);
- }
- else if ((data_type == SLANG_CHAR_TYPE)
- || (data_type == SLANG_UCHAR_TYPE))
- {
- SLang_BString_Type *bs;
-
- bs = SLbstring_create_malloced ((unsigned char *)s, num_read, 1);
- ret = SLang_assign_to_ref (ref, SLANG_BSTRING_TYPE, (VOID_STAR)&bs);
- SLbstring_free (bs);
- }
- else
- {
- SLang_Array_Type *at;
- int inum_read = (int) num_read;
- at = SLang_create_array (data_type, 0, (VOID_STAR)s, &inum_read, 1);
- ret = SLang_assign_to_ref (ref, SLANG_ARRAY_TYPE, (VOID_STAR)&at);
- SLang_free_array (at);
- }
- s = NULL;
- }
-
- the_return:
-
- if (s != NULL)
- SLfree (s);
-
- if (ret == -1)
- SLang_push_integer (ret);
- else
- SLang_push_uinteger (num_read);
-}
-
-/* Usage: n = fwrite (str, fp); */
-static void stdio_fwrite (SL_File_Table_Type *t)
-{
- FILE *fp;
- unsigned char *s;
- unsigned int num_to_write, num_write;
- int ret;
- SLang_BString_Type *b;
- SLang_Array_Type *at;
- SLang_Class_Type *cl;
-
- ret = -1;
- b = NULL;
- at = NULL;
-
- switch (SLang_peek_at_stack ())
- {
- case SLANG_BSTRING_TYPE:
- case SLANG_STRING_TYPE:
- if (-1 == SLang_pop_bstring (&b))
- goto the_return;
-
- if (NULL == (s = SLbstring_get_pointer (b, &num_to_write)))
- goto the_return;
-
- cl = _SLclass_get_class (SLANG_UCHAR_TYPE);
- break;
-
- default:
- if (-1 == SLang_pop_array (&at, 1))
- goto the_return;
-
- cl = at->cl;
- num_to_write = at->num_elements;
- s = (unsigned char *) at->data;
- }
-
- if (NULL == (fp = check_fp (t, SL_WRITE)))
- goto the_return;
-
- if (cl->cl_fwrite == NULL)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "fwrite does not support %s objects", cl->cl_name);
- goto the_return;
- }
-
- ret = cl->cl_fwrite (cl->cl_data_type, fp, s, num_to_write, &num_write);
-
- if ((ret == -1) && ferror (fp))
- _SLerrno_errno = errno;
-
- /* drop */
- the_return:
- if (b != NULL)
- SLbstring_free (b);
- if (at != NULL)
- SLang_free_array (at);
-
- if (ret == -1)
- SLang_push_integer (ret);
- else
- SLang_push_uinteger (num_write);
-}
-
-static int stdio_fseek (SL_File_Table_Type *t, int *ofs, int *whence)
-{
- FILE *fp;
-
- if (NULL == (fp = check_fp (t, 0xFFFF)))
- return -1;
-
- if (-1 == fseek (fp, (long) *ofs, *whence))
- {
- _SLerrno_errno = errno;
- return -1;
- }
-
- return 0;
-}
-
-static int stdio_ftell (SL_File_Table_Type *t)
-{
- FILE *fp;
- long ofs;
-
- if (NULL == (fp = check_fp (t, 0xFFFF)))
- return -1;
-
- if (-1L == (ofs = ftell (fp)))
- {
- _SLerrno_errno = errno;
- return -1;
- }
-
- return (int) ofs;
-}
-
-static int stdio_feof (SL_File_Table_Type *t)
-{
- FILE *fp;
-
- if (NULL == (fp = check_fp (t, 0xFFFF)))
- return -1;
-
- return feof (fp);
-}
-
-static int stdio_ferror (SL_File_Table_Type *t)
-{
- FILE *fp;
-
- if (NULL == (fp = check_fp (t, 0xFFFF)))
- return -1;
-
- return ferror (fp);
-}
-
-static void stdio_clearerr (SL_File_Table_Type *t)
-{
- FILE *fp;
-
- if (NULL != (fp = check_fp (t, 0xFFFF)))
- clearerr (fp);
-}
-
-/* () = fprintf (fp, "FORMAT", arg...); */
-static int stdio_fprintf (void)
-{
- char *s;
- FILE *fp;
- SLang_MMT_Type *mmt;
- int status;
-
- if (-1 == _SLstrops_do_sprintf_n (SLang_Num_Function_Args - 2))
- return -1;
-
- if (-1 == SLang_pop_slstring (&s))
- return -1;
-
- if (NULL == (mmt = pop_fp (SL_WRITE, &fp)))
- {
- SLang_free_slstring (s);
- return -1;
- }
-
- if (EOF == fputs(s, fp))
- status = -1;
- else
- status = (int) strlen (s);
-
- SLang_free_mmt (mmt);
- SLang_free_slstring (s);
- return status;
-}
-
-static int stdio_printf (void)
-{
- char *s;
- int status;
-
- if (-1 == _SLstrops_do_sprintf_n (SLang_Num_Function_Args - 1))
- return -1;
-
- if (-1 == SLang_pop_slstring (&s))
- return -1;
-
- if (EOF == fputs(s, stdout))
- status = -1;
- else
- status = (int) strlen (s);
-
- SLang_free_slstring (s);
- return status;
-}
-
-
-#define F SLANG_FILE_PTR_TYPE
-#define R SLANG_REF_TYPE
-#define I SLANG_INT_TYPE
-#define V SLANG_VOID_TYPE
-#define S SLANG_STRING_TYPE
-#define B SLANG_BSTRING_TYPE
-#define U SLANG_UINT_TYPE
-#define D SLANG_DATATYPE_TYPE
-static SLang_Intrin_Fun_Type Stdio_Name_Table[] =
-{
- MAKE_INTRINSIC_0("fgetslines", stdio_fgetslines, V),
- MAKE_INTRINSIC_SS("fopen", stdio_fopen, V),
- MAKE_INTRINSIC_1("feof", stdio_feof, I, F),
- MAKE_INTRINSIC_1("ferror", stdio_ferror, I, F),
- MAKE_INTRINSIC_1("fclose", stdio_fclose, I, F),
- MAKE_INTRINSIC_2("fgets", stdio_fgets, I, R, F),
- MAKE_INTRINSIC_1("fflush", stdio_fflush, I, F),
- MAKE_INTRINSIC_2("fputs", stdio_fputs, I, S, F),
- MAKE_INTRINSIC_0("fprintf", stdio_fprintf, I),
- MAKE_INTRINSIC_0("printf", stdio_printf, I),
- MAKE_INTRINSIC_3("fseek", stdio_fseek, I, F, I, I),
- MAKE_INTRINSIC_1("ftell", stdio_ftell, I, F),
- MAKE_INTRINSIC_1("clearerr", stdio_clearerr, V, F),
- MAKE_INTRINSIC_4("fread", stdio_fread, V, R, D, U, F),
- MAKE_INTRINSIC_1("fwrite", stdio_fwrite, V, F),
-#ifdef HAVE_POPEN
- MAKE_INTRINSIC_SS("popen", stdio_popen, V),
- MAKE_INTRINSIC_1("pclose", stdio_fclose, I, F),
-#endif
- SLANG_END_INTRIN_FUN_TABLE
-};
-#undef F
-#undef I
-#undef R
-#undef V
-#undef S
-#undef B
-#undef U
-#undef D
-
-#ifndef SEEK_SET
-# define SEEK_SET 0
-#endif
-#ifndef SEEK_CUR
-# define SEEK_CUR 1
-#endif
-#ifndef SEEK_END
-# define SEEK_END 2
-#endif
-
-static SLang_IConstant_Type Stdio_Consts [] =
-{
- MAKE_ICONSTANT("SEEK_SET", SEEK_SET),
- MAKE_ICONSTANT("SEEK_END", SEEK_END),
- MAKE_ICONSTANT("SEEK_CUR", SEEK_CUR),
- SLANG_END_ICONST_TABLE
-};
-
-static void destroy_file_type (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- (void) close_file_type ((SL_File_Table_Type *) ptr);
-}
-
-
-struct _SLang_Foreach_Context_Type
-{
- SLang_MMT_Type *mmt;
- FILE *fp;
-#define CTX_USE_LINE 1
-#define CTX_USE_CHAR 2
- unsigned char type;
-};
-
-
-static SLang_Foreach_Context_Type *
-cl_foreach_open (unsigned char type, unsigned int num)
-{
- SLang_Foreach_Context_Type *c;
- SLang_MMT_Type *mmt;
- FILE *fp;
-
- if (NULL == (mmt = pop_fp (SL_READ, &fp)))
- return NULL;
-
- type = CTX_USE_LINE;
-
- switch (num)
- {
- char *s;
-
- case 0:
- type = CTX_USE_LINE;
- break;
-
- case 1:
- if (-1 == SLang_pop_slstring (&s))
- {
- SLang_free_mmt (mmt);
- return NULL;
- }
- if (0 == strcmp (s, "char"))
- type = CTX_USE_CHAR;
- else if (0 == strcmp (s, "line"))
- type = CTX_USE_LINE;
- else
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "using '%s' not supported by File_Type",
- s);
- SLang_free_slstring (s);
- SLang_free_mmt (mmt);
- return NULL;
- }
- SLang_free_slstring (s);
- break;
-
- default:
- SLdo_pop_n (num);
- SLang_verror (SL_NOT_IMPLEMENTED,
- "Usage: foreach (File_Type) using ([line|char])");
- SLang_free_mmt (mmt);
- return NULL;
- }
-
- if (NULL == (c = (SLang_Foreach_Context_Type *) SLmalloc (sizeof (SLang_Foreach_Context_Type))))
- {
- SLang_free_mmt (mmt);
- return NULL;
- }
- memset ((char *) c, 0, sizeof (SLang_Foreach_Context_Type));
-
- c->type = type;
- c->mmt = mmt;
- c->fp = fp;
-
- return c;
-}
-
-static void cl_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- if (c == NULL) return;
- SLang_free_mmt (c->mmt);
- SLfree ((char *) c);
-}
-
-static int cl_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- int status;
- int ch;
- unsigned int len;
- char *s;
-
- (void) type;
-
- if (c == NULL)
- return -1;
-
- switch (c->type)
- {
- case CTX_USE_CHAR:
- if (EOF == (ch = getc (c->fp)))
- return 0;
- if (-1 == SLang_push_uchar ((unsigned char) ch))
- return -1;
- return 1;
-
- case CTX_USE_LINE:
- status = read_one_line (c->fp, &s, &len);
- if (status <= 0)
- return status;
- if (0 == _SLang_push_slstring (s))
- return 1;
- return -1;
- }
-
- return -1;
-}
-
-static int Stdio_Initialized;
-static SLang_MMT_Type *Stdio_Mmts[3];
-
-int SLang_init_stdio (void)
-{
- unsigned int i;
- SL_File_Table_Type *s;
- SLang_Class_Type *cl;
- char *names[3];
-
- if (Stdio_Initialized)
- return 0;
-
- SL_File_Table = (SL_File_Table_Type *)SLcalloc(sizeof (SL_File_Table_Type), SL_MAX_FILES);
- if (SL_File_Table == NULL)
- return -1;
-
- if (NULL == (cl = SLclass_allocate_class ("File_Type")))
- return -1;
- cl->cl_destroy = destroy_file_type;
- cl->cl_foreach_open = cl_foreach_open;
- cl->cl_foreach_close = cl_foreach_close;
- cl->cl_foreach = cl_foreach;
-
-
- if (-1 == SLclass_register_class (cl, SLANG_FILE_PTR_TYPE, sizeof (SL_File_Table_Type), SLANG_CLASS_TYPE_MMT))
- return -1;
-
- if ((-1 == SLadd_intrin_fun_table(Stdio_Name_Table, "__STDIO__"))
- || (-1 == SLadd_iconstant_table (Stdio_Consts, NULL))
- || (-1 == _SLerrno_init ()))
- return -1;
-
- names[0] = "stdin";
- names[1] = "stdout";
- names[2] = "stderr";
-
- s = SL_File_Table;
- s->fp = stdin; s->flags = SL_READ;
-
- s++;
- s->fp = stdout; s->flags = SL_WRITE;
-
- s++;
- s->fp = stderr; s->flags = SL_WRITE|SL_READ;
-
- s = SL_File_Table;
- for (i = 0; i < 3; i++)
- {
- if (NULL == (s->file = SLang_create_slstring (names[i])))
- return -1;
-
- if (NULL == (Stdio_Mmts[i] = SLang_create_mmt (SLANG_FILE_PTR_TYPE, (VOID_STAR) s)))
- return -1;
- SLang_inc_mmt (Stdio_Mmts[i]);
-
- if (-1 == SLadd_intrinsic_variable (s->file, (VOID_STAR)&Stdio_Mmts[i], SLANG_FILE_PTR_TYPE, 1))
- return -1;
- s++;
- }
-
- Stdio_Initialized = 1;
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slstring.c b/mdk-stage1/slang/slstring.c
deleted file mode 100644
index 529c41827..000000000
--- a/mdk-stage1/slang/slstring.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-typedef struct _SLstring_Type
-{
- struct _SLstring_Type *next;
- unsigned int ref_count;
- char bytes [1];
-}
-SLstring_Type;
-
-static SLstring_Type *String_Hash_Table [SLSTRING_HASH_TABLE_SIZE];
-static char Single_Char_Strings [256 * 2];
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
-#define MAX_FREE_STORE_LEN 32
-static SLstring_Type *SLS_Free_Store [MAX_FREE_STORE_LEN];
-
-# define NUM_CACHED_STRINGS 601
-typedef struct
-{
- unsigned long hash;
- SLstring_Type *sls;
- unsigned int len;
-}
-Cached_String_Type;
-static Cached_String_Type Cached_Strings [NUM_CACHED_STRINGS];
-
-#define GET_CACHED_STRING(s) \
- (Cached_Strings + (unsigned int)(((unsigned long) (s)) % NUM_CACHED_STRINGS))
-
-_INLINE_
-static void cache_string (SLstring_Type *sls, unsigned int len, unsigned long hash)
-{
- Cached_String_Type *cs;
-
- cs = GET_CACHED_STRING(sls->bytes);
- cs->sls = sls;
- cs->hash = hash;
- cs->len = len;
-}
-
-_INLINE_
-static void uncache_string (char *s)
-{
- Cached_String_Type *cs;
-
- cs = GET_CACHED_STRING(s);
- if ((cs->sls != NULL)
- && (cs->sls->bytes == s))
- cs->sls = NULL;
-}
-#endif
-
-
-
-_INLINE_
-unsigned long _SLstring_hash (unsigned char *s, unsigned char *smax)
-{
- register unsigned long h = 0;
- register unsigned long sum = 0;
- unsigned char *smax4;
-
- smax4 = smax - 4;
-
- while (s < smax4)
- {
- sum += s[0];
- h = sum + (h << 1);
- sum += s[1];
- h = sum + (h << 1);
- sum += s[2];
- h = sum + (h << 1);
- sum += s[3];
- h = sum + (h << 1);
-
- s += 4;
- }
-
- while (s < smax)
- {
- sum += *s++;
- h ^= sum + (h << 3); /* slightly different */
- }
-
- return h;
-}
-
-unsigned long _SLcompute_string_hash (char *s)
-{
-#if _SLANG_OPTIMIZE_FOR_SPEED
- Cached_String_Type *cs;
- SLstring_Type *sls;
-
- cs = GET_CACHED_STRING(s);
- if (((sls = cs->sls) != NULL)
- && (sls->bytes == s))
- return cs->hash;
-#endif
- return _SLstring_hash ((unsigned char *) s, (unsigned char *) s + strlen (s));
-}
-
-_INLINE_
-/* This routine works with any (long) string */
-static SLstring_Type *find_string (char *s, unsigned int len, unsigned long hash)
-{
- SLstring_Type *sls;
- char ch;
-
- sls = String_Hash_Table [(unsigned int)(hash % SLSTRING_HASH_TABLE_SIZE)];
-
- if (sls == NULL)
- return NULL;
-
- ch = s[0];
- do
- {
- char *bytes = sls->bytes;
-
- /* Note that we need to actually make sure that bytes[len] == 0.
- * In this case, it is not enough to just compare pointers. In fact,
- * this is called from create_nstring, etc... It is unlikely that the
- * pointer is a slstring
- */
- if ((/* (s == bytes) || */ ((ch == bytes[0])
- && (0 == strncmp (s, bytes, len))))
- && (bytes [len] == 0))
- break;
-
- sls = sls->next;
- }
- while (sls != NULL);
-
- return sls;
-}
-
-_INLINE_
-static SLstring_Type *find_slstring (char *s, unsigned long hash)
-{
- SLstring_Type *sls;
-
- sls = String_Hash_Table [(unsigned int)(hash % SLSTRING_HASH_TABLE_SIZE)];
- while (sls != NULL)
- {
- if (s == sls->bytes)
- return sls;
-
- sls = sls->next;
- }
- return sls;
-}
-
-_INLINE_
-static SLstring_Type *allocate_sls (unsigned int len)
-{
- SLstring_Type *sls;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if ((len < MAX_FREE_STORE_LEN)
- && (NULL != (sls = SLS_Free_Store [len])))
- {
- SLS_Free_Store[len] = NULL;
- return sls;
- }
-#endif
- /* FIXME: use structure padding */
- return (SLstring_Type *) SLmalloc (len + sizeof (SLstring_Type));
-}
-
-_INLINE_
-static void free_sls (SLstring_Type *sls, unsigned int len)
-{
-#if _SLANG_OPTIMIZE_FOR_SPEED
- if ((len < MAX_FREE_STORE_LEN)
- && (SLS_Free_Store[len] == NULL))
- {
- SLS_Free_Store [len] = sls;
- return;
- }
-#else
- (void) len;
-#endif
- SLfree ((char *)sls);
-}
-
-_INLINE_
-static char *create_long_string (char *s, unsigned int len, unsigned long hash)
-{
- SLstring_Type *sls;
-
- sls = find_string (s, len, hash);
-
- if (sls != NULL)
- {
- sls->ref_count++;
- s = sls->bytes;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- cache_string (sls, len, hash);
-#endif
- return s;
- }
-
- sls = allocate_sls (len);
- if (sls == NULL)
- return NULL;
-
- strncpy (sls->bytes, s, len);
- sls->bytes[len] = 0;
- sls->ref_count = 1;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- cache_string (sls, len, hash);
-#endif
-
- hash = hash % SLSTRING_HASH_TABLE_SIZE;
- sls->next = String_Hash_Table [(unsigned int)hash];
- String_Hash_Table [(unsigned int)hash] = sls;
-
- return sls->bytes;
-}
-
-_INLINE_
-static char *create_short_string (char *s, unsigned int len)
-{
- char ch;
-
- /* Note: if len is 0, then it does not matter what *s is. This is
- * important for SLang_create_nslstring.
- */
- if (len) ch = *s; else ch = 0;
-
- len = 2 * (unsigned int) ((unsigned char) ch);
- Single_Char_Strings [len] = ch;
- Single_Char_Strings [len + 1] = 0;
- return Single_Char_Strings + len;
-}
-
-/* s cannot be NULL */
-_INLINE_
-static char *create_nstring (char *s, unsigned int len, unsigned long *hash_ptr)
-{
- unsigned long hash;
-
- if (len < 2)
- return create_short_string (s, len);
-
- hash = _SLstring_hash ((unsigned char *) s, (unsigned char *) (s + len));
- *hash_ptr = hash;
-
- return create_long_string (s, len, hash);
-}
-
-char *SLang_create_nslstring (char *s, unsigned int len)
-{
- unsigned long hash;
- return create_nstring (s, len, &hash);
-}
-
-char *_SLstring_make_hashed_string (char *s, unsigned int len, unsigned long *hashptr)
-{
- unsigned long hash;
-
- if (s == NULL) return NULL;
-
- hash = _SLstring_hash ((unsigned char *) s, (unsigned char *) s + len);
- *hashptr = hash;
-
- if (len < 2)
- return create_short_string (s, len);
-
- return create_long_string (s, len, hash);
-}
-
-char *_SLstring_dup_hashed_string (char *s, unsigned long hash)
-{
- unsigned int len;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- Cached_String_Type *cs;
- SLstring_Type *sls;
-
- if (s == NULL) return NULL;
- if (s[0] == 0)
- return create_short_string (s, 0);
- if (s[1] == 0)
- return create_short_string (s, 1);
-
- cs = GET_CACHED_STRING(s);
- if (((sls = cs->sls) != NULL)
- && (sls->bytes == s))
- {
- sls->ref_count += 1;
- return s;
- }
-#else
- if (s == NULL) return NULL;
-#endif
-
- len = strlen (s);
-#if !_SLANG_OPTIMIZE_FOR_SPEED
- if (len < 2) return create_short_string (s, len);
-#endif
-
- return create_long_string (s, len, hash);
-}
-
-char *_SLstring_dup_slstring (char *s)
-{
- SLstring_Type *sls;
- unsigned int len;
- unsigned long hash;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- Cached_String_Type *cs;
-
- cs = GET_CACHED_STRING(s);
- if (((sls = cs->sls) != NULL)
- && (sls->bytes == s))
- {
- sls->ref_count += 1;
- return s;
- }
-#endif
-
- if ((s == NULL) || ((len = strlen (s)) < 2))
- return s;
-
- hash = _SLstring_hash ((unsigned char *)s, (unsigned char *)(s + len));
-
- sls = find_slstring (s, hash);
- if (sls == NULL)
- {
- SLang_Error = SL_INTERNAL_ERROR;
- return NULL;
- }
-
- sls->ref_count++;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- cache_string (sls, len, hash);
-#endif
- return s;
-}
-
-static void free_sls_string (SLstring_Type *sls, char *s, unsigned int len,
- unsigned long hash)
-{
- SLstring_Type *sls1, *prev;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- uncache_string (s);
-#endif
-
- hash = hash % SLSTRING_HASH_TABLE_SIZE;
-
- sls1 = String_Hash_Table [(unsigned int) hash];
-
- prev = NULL;
-
- /* This should not fail. */
- while (sls1 != sls)
- {
- prev = sls1;
- sls1 = sls1->next;
- }
-
- if (prev != NULL)
- prev->next = sls->next;
- else
- String_Hash_Table [(unsigned int) hash] = sls->next;
-
- free_sls (sls, len);
-}
-
-_INLINE_
-static void free_long_string (char *s, unsigned int len, unsigned long hash)
-{
- SLstring_Type *sls;
-
- if (NULL == (sls = find_slstring (s, hash)))
- {
- SLang_doerror ("Application internal error: invalid attempt to free string");
- return;
- }
-
- sls->ref_count--;
- if (sls->ref_count != 0)
- {
-#if _SLANG_OPTIMIZE_FOR_SPEED
- /* cache_string (sls, len, hash); */
-#endif
- return;
- }
-
-
- free_sls_string (sls, s, len, hash);
-}
-
-/* This routine may be passed NULL-- it is not an error. */
-void SLang_free_slstring (char *s)
-{
- unsigned long hash;
- unsigned int len;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- Cached_String_Type *cs;
- SLstring_Type *sls;
-
- cs = GET_CACHED_STRING(s);
- if (((sls = cs->sls) != NULL)
- && (sls->bytes == s))
- {
- if (sls->ref_count <= 1)
- free_sls_string (sls, s, cs->len, cs->hash);
- else
- sls->ref_count -= 1;
- return;
- }
-#endif
-
- if (s == NULL) return;
-
- if ((len = strlen (s)) < 2)
- return;
-
- hash = _SLstring_hash ((unsigned char *)s, (unsigned char *) s + len);
- free_long_string (s, len, hash);
-}
-
-char *SLang_create_slstring (char *s)
-{
- unsigned long hash;
-#if _SLANG_OPTIMIZE_FOR_SPEED
- Cached_String_Type *cs;
- SLstring_Type *sls;
-
- cs = GET_CACHED_STRING(s);
- if (((sls = cs->sls) != NULL)
- && (sls->bytes == s))
- {
- sls->ref_count += 1;
- return s;
- }
-#endif
-
- if (s == NULL) return NULL;
- return create_nstring (s, strlen (s), &hash);
-}
-
-void _SLfree_hashed_string (char *s, unsigned int len, unsigned long hash)
-{
- if ((s == NULL) || (len < 2)) return;
- free_long_string (s, len, hash);
-}
-
-
-char *_SLallocate_slstring (unsigned int len)
-{
- SLstring_Type *sls = allocate_sls (len);
- if (sls == NULL)
- return NULL;
-
- return sls->bytes;
-}
-
-void _SLunallocate_slstring (char *s, unsigned int len)
-{
- SLstring_Type *sls;
-
- if (s == NULL)
- return;
-
- sls = (SLstring_Type *) (s - offsetof(SLstring_Type,bytes[0]));
- free_sls (sls, len);
-}
-
-char *_SLcreate_via_alloced_slstring (char *s, unsigned int len)
-{
- unsigned long hash;
- SLstring_Type *sls;
-
- if (s == NULL)
- return NULL;
-
- if (len < 2)
- {
- char *s1 = create_short_string (s, len);
- _SLunallocate_slstring (s, len);
- return s1;
- }
-
- /* s is not going to be in the cache because when it was malloced, its
- * value was unknown. This simplifies the coding.
- */
- hash = _SLstring_hash ((unsigned char *)s, (unsigned char *)s + len);
- sls = find_string (s, len, hash);
- if (sls != NULL)
- {
- sls->ref_count++;
- _SLunallocate_slstring (s, len);
- s = sls->bytes;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- cache_string (sls, len, hash);
-#endif
- return s;
- }
-
- sls = (SLstring_Type *) (s - offsetof(SLstring_Type,bytes[0]));
- sls->ref_count = 1;
-
-#if _SLANG_OPTIMIZE_FOR_SPEED
- cache_string (sls, len, hash);
-#endif
-
- hash = hash % SLSTRING_HASH_TABLE_SIZE;
- sls->next = String_Hash_Table [(unsigned int)hash];
- String_Hash_Table [(unsigned int)hash] = sls;
-
- return s;
-}
-
-/* Note, a and b may be ordinary strings. The result is an slstring */
-char *SLang_concat_slstrings (char *a, char *b)
-{
- unsigned int lena, len;
- char *c;
-
- lena = strlen (a);
- len = lena + strlen (b);
-
- c = _SLallocate_slstring (len);
- if (c == NULL)
- return NULL;
-
- strcpy (c, a);
- strcpy (c + lena, b);
-
- return _SLcreate_via_alloced_slstring (c, len);
-}
-
diff --git a/mdk-stage1/slang/slstrops.c b/mdk-stage1/slang/slstrops.c
deleted file mode 100644
index a57ef6389..000000000
--- a/mdk-stage1/slang/slstrops.c
+++ /dev/null
@@ -1,1686 +0,0 @@
-/* -*- mode: C; mode: fold; -*- */
-/* string manipulation functions for S-Lang. */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-/*{{{ Include Files */
-
-#include <time.h>
-
-#ifndef __QNX__
-# if defined(__GO32__) || defined(__WATCOMC__)
-# include <dos.h>
-# include <bios.h>
-# endif
-#endif
-
-#if SLANG_HAS_FLOAT
-#include <math.h>
-#endif
-
-#include <string.h>
-#include <stdarg.h>
-#include <ctype.h>
-
-#ifndef isdigit
-# define isdigit(x) (((x) >= '0') && ((x) <= '9'))
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-/*}}}*/
-
-#define USE_ALLOC_STSTRING 1
-
-/*{{{ Utility Functions */
-
-static char Utility_Char_Table [256];
-static unsigned char WhiteSpace_Lut[256];
-
-static void set_utility_char_table (char *pos) /*{{{*/
-{
- register char *t = Utility_Char_Table, *tmax;
- register unsigned char ch;
-
- tmax = t + 256;
- while (t < tmax) *t++ = 0;
-
- t = Utility_Char_Table;
- while ((ch = (unsigned char) *pos++) != 0) t[ch] = 1;
-}
-
-/*}}}*/
-
-_INLINE_
-static unsigned char *make_whitespace_lut (void)
-{
- if (WhiteSpace_Lut[' '] != 1)
- {
- WhiteSpace_Lut[' '] = WhiteSpace_Lut['\r']
- = WhiteSpace_Lut ['\n'] = WhiteSpace_Lut['\t']
- = WhiteSpace_Lut ['\f'] = 1;
- }
- return WhiteSpace_Lut;
-}
-
-static unsigned char *make_lut (unsigned char *s, unsigned char *lut)
-{
- int reverse = 0;
-
- if (*s == '^')
- {
- reverse = 1;
- s++;
- }
- SLmake_lut (lut, s, reverse);
- return lut;
-}
-
-static unsigned int do_trim (char **beg, int do_beg,
- char **end, int do_end,
- char *white) /*{{{*/
-{
- unsigned int len;
- char *a, *b;
-
- set_utility_char_table (white);
-
- a = *beg;
- len = strlen (a);
- b = a + len;
-
- if (do_beg)
- while (Utility_Char_Table[(unsigned char) *a]) a++;
-
- if (do_end)
- {
- b--;
- while ((b >= a) && (Utility_Char_Table[(unsigned char) *b])) b--;
- b++;
- }
-
- len = (unsigned int) (b - a);
- *beg = a;
- *end = b;
- return len;
-}
-
-/*}}}*/
-
-/*}}}*/
-
-static int pop_3_strings (char **a, char **b, char **c)
-{
- *a = *b = *c = NULL;
- if (-1 == SLpop_string (c))
- return -1;
-
- if (-1 == SLpop_string (b))
- {
- SLfree (*c);
- *c = NULL;
- return -1;
- }
-
- if (-1 == SLpop_string (a))
- {
- SLfree (*b);
- SLfree (*c);
- *b = *c = NULL;
- return -1;
- }
-
- return 0;
-}
-
-static void free_3_strings (char *a, char *b, char *c)
-{
- SLfree (a);
- SLfree (b);
- SLfree (c);
-}
-
-static void strcat_cmd (void) /*{{{*/
-{
- char *c, *c1;
- int nargs;
- int i;
- char **ptrs;
- unsigned int len;
-#if !USE_ALLOC_STSTRING
- char buf[256];
-#endif
- nargs = SLang_Num_Function_Args;
- if (nargs <= 0) nargs = 2;
-
- if (NULL == (ptrs = (char **)SLmalloc (nargs * sizeof (char *))))
- return;
-
- memset ((char *) ptrs, 0, sizeof (char *) * nargs);
-
- c = NULL;
- i = nargs;
- len = 0;
- while (i != 0)
- {
- char *s;
-
- i--;
- if (-1 == SLang_pop_slstring (&s))
- goto free_and_return;
- ptrs[i] = s;
- len += strlen (s);
- }
-#if USE_ALLOC_STSTRING
- if (NULL == (c = _SLallocate_slstring (len)))
- goto free_and_return;
-#else
- len++; /* \0 char */
- if (len <= sizeof (buf))
- c = buf;
- else if (NULL == (c = SLmalloc (len)))
- goto free_and_return;
-#endif
-
- c1 = c;
- for (i = 0; i < nargs; i++)
- {
- strcpy (c1, ptrs[i]);
- c1 += strlen (c1);
- }
-
- free_and_return:
- for (i = 0; i < nargs; i++)
- SLang_free_slstring (ptrs[i]);
- SLfree ((char *) ptrs);
-
-#if USE_ALLOC_STSTRING
- (void) _SLpush_alloced_slstring (c, len);
-#else
- if (c != buf)
- (void) SLang_push_malloced_string (c); /* NULL ok */
- else
- (void) SLang_push_string (c);
-#endif
-}
-
-/*}}}*/
-
-static int _SLang_push_nstring (char *a, unsigned int len)
-{
- a = SLang_create_nslstring (a, len);
- if (a == NULL)
- return -1;
-
- return _SLang_push_slstring (a);
-}
-
-
-static void strtrim_cmd_internal (char *str, int do_beg, int do_end)
-{
- char *beg, *end, *white;
- int free_str;
- unsigned int len;
-
- /* Go through SLpop_string to get a private copy since it will be
- * modified.
- */
-
- free_str = 0;
- if (SLang_Num_Function_Args == 2)
- {
- white = str;
- if (-1 == SLang_pop_slstring (&str))
- return;
- free_str = 1;
- }
- else white = " \t\f\r\n";
-
- beg = str;
- len = do_trim (&beg, do_beg, &end, do_end, white);
-
- (void) _SLang_push_nstring (beg, len);
- if (free_str)
- SLang_free_slstring (str);
-}
-
-
-static void strtrim_cmd (char *str)
-{
- strtrim_cmd_internal (str, 1, 1);
-}
-
-static void strtrim_beg_cmd (char *str)
-{
- strtrim_cmd_internal (str, 1, 0);
-}
-
-static void strtrim_end_cmd (char *str)
-{
- strtrim_cmd_internal (str, 0, 1);
-}
-
-
-static void strcompress_cmd (void) /*{{{*/
-{
- char *str, *white, *c;
- unsigned char *s, *beg, *end;
- unsigned int len;
- char pref_char;
-
- if (SLpop_string (&white)) return;
- if (SLpop_string (&str))
- {
- SLfree (white);
- return;
- }
-
- /* The first character of white is the preferred whitespace character */
- pref_char = *white;
-
- beg = (unsigned char *) str;
- (void) do_trim ((char **) &beg, 1, (char **) &end, 1, white);
- SLfree (white);
-
- /* Determine the effective length */
- len = 0;
- s = (unsigned char *) beg;
- while (s < end)
- {
- len++;
- if (Utility_Char_Table[*s++])
- {
- while ((s < end) && Utility_Char_Table[*s]) s++;
- }
- }
-
-#if USE_ALLOC_STSTRING
- c = _SLallocate_slstring (len);
-#else
- c = SLmalloc (len + 1);
-#endif
- if (c == NULL)
- {
- SLfree (str);
- return;
- }
-
- s = (unsigned char *) c;
-
- while (beg < end)
- {
- unsigned char ch = *beg++;
-
- if (0 == Utility_Char_Table[ch])
- {
- *s++ = ch;
- continue;
- }
-
- *s++ = (unsigned char) pref_char;
-
- while ((beg < end) && Utility_Char_Table[*beg])
- beg++;
- }
-
- *s = 0;
-
-#if USE_ALLOC_STSTRING
- (void) _SLpush_alloced_slstring (c, len);
-#else
- SLang_push_malloced_string(c);
-#endif
-
- SLfree(str);
-}
-
-/*}}}*/
-
-static int str_replace_cmd_1 (char *orig, char *match, char *rep, unsigned int max_num_replaces,
- char **new_strp) /*{{{*/
-{
- char *s, *t, *new_str;
- unsigned int rep_len, match_len, new_len;
- unsigned int num_replaces;
-
- *new_strp = NULL;
-
- match_len = strlen (match);
-
- if (match_len == 0)
- return 0;
-
- num_replaces = 0;
- s = orig;
- while (num_replaces < max_num_replaces)
- {
- s = strstr (s, match);
- if (s == NULL)
- break;
- s += match_len;
- num_replaces++;
- }
-
- if (num_replaces == 0)
- return 0;
-
- max_num_replaces = num_replaces;
-
- rep_len = strlen (rep);
-
- new_len = (strlen (orig) - num_replaces * match_len) + num_replaces * rep_len;
- new_str = SLmalloc (new_len + 1);
- if (new_str == NULL)
- return -1;
-
- s = orig;
- t = new_str;
-
- for (num_replaces = 0; num_replaces < max_num_replaces; num_replaces++)
- {
- char *next_s;
- unsigned int len;
-
- next_s = strstr (s, match); /* cannot be NULL */
- len = (unsigned int) (next_s - s);
- strncpy (t, s, len);
- t += len;
- strcpy (t, rep);
- t += rep_len;
-
- s = next_s + match_len;
- }
- strcpy (t, s);
- *new_strp = new_str;
-
- return (int) num_replaces;
-}
-
-/*}}}*/
-
-static void reverse_string (char *a)
-{
- char *b;
-
- b = a + strlen (a);
- while (b > a)
- {
- char ch;
-
- b--;
- ch = *a;
- *a++ = *b;
- *b = ch;
- }
-}
-
-static int strreplace_cmd (int *np)
-{
- char *orig, *match, *rep;
- char *new_str;
- int max_num_replaces;
- int ret;
-
- max_num_replaces = *np;
-
- if (-1 == pop_3_strings (&orig, &match, &rep))
- return -1;
-
- if (max_num_replaces < 0)
- {
- reverse_string (orig);
- reverse_string (match);
- reverse_string (rep);
- ret = str_replace_cmd_1 (orig, match, rep, -max_num_replaces, &new_str);
- if (ret > 0) reverse_string (new_str);
- else if (ret == 0)
- reverse_string (orig);
- }
- else ret = str_replace_cmd_1 (orig, match, rep, max_num_replaces, &new_str);
-
- if (ret == 0)
- {
- if (-1 == SLang_push_malloced_string (orig))
- ret = -1;
- orig = NULL;
- }
- else if (ret > 0)
- {
- if (-1 == SLang_push_malloced_string (new_str))
- ret = -1;
- }
-
- free_3_strings (orig, match, rep);
- return ret;
-}
-
-static int str_replace_cmd (char *orig, char *match, char *rep)
-{
- char *s;
- int ret;
-
- ret = str_replace_cmd_1 (orig, match, rep, 1, &s);
- if (ret == 1)
- (void) SLang_push_malloced_string (s);
- return ret;
-}
-
-
-
-static void strtok_cmd (char *str)
-{
- _SLString_List_Type sl;
- unsigned char white_buf[256];
- char *s;
- unsigned char *white;
-
- if (SLang_Num_Function_Args == 1)
- white = make_whitespace_lut ();
- else
- {
- white = white_buf;
- make_lut ((unsigned char *)str, white);
- if (-1 == SLang_pop_slstring (&str))
- return;
- }
-
- if (-1 == _SLstring_list_init (&sl, 256, 1024))
- goto the_return;
-
- s = str;
- while (*s != 0)
- {
- char *s0;
-
- s0 = s;
- /* Skip whitespace */
- while ((*s0 != 0) && (0 != white[(unsigned char)*s0]))
- s0++;
-
- if (*s0 == 0)
- break;
-
- s = s0;
- while ((*s != 0) && (0 == white[(unsigned char) *s]))
- s++;
-
- /* sl deleted upon failure */
- if (-1 == _SLstring_list_append (&sl, SLang_create_nslstring (s0, (unsigned int) (s - s0))))
- goto the_return;
- }
-
- /* Deletes sl */
- (void) _SLstring_list_push (&sl);
-
- the_return:
- if (white == white_buf)
- SLang_free_slstring (str);
-}
-
-/* This routine returns the string with text removed between single character
- comment delimiters from the set b and e. */
-
-static void str_uncomment_string_cmd (char *str, char *b, char *e) /*{{{*/
-{
- unsigned char chb, che;
- unsigned char *s, *cbeg, *mark;
-
- if (strlen(b) != strlen(e))
- {
- SLang_doerror ("Comment delimiter length mismatch.");
- return;
- }
-
- set_utility_char_table (b);
-
- if (NULL == (str = (char *) SLmake_string(str))) return;
-
- s = (unsigned char *) str;
-
- while ((chb = *s++) != 0)
- {
- if (Utility_Char_Table [chb] == 0) continue;
-
- mark = s - 1;
-
- cbeg = (unsigned char *) b;
- while (*cbeg != chb) cbeg++;
-
- che = (unsigned char) *(e + (int) (cbeg - (unsigned char *) b));
-
- while (((chb = *s++) != 0) && (chb != che));
-
- if (chb == 0)
- {
- /* end of string and end not found. Just truncate it a return; */
- *mark = 0;
- break;
- }
-
- strcpy ((char *) mark, (char *)s);
- s = mark;
- }
- SLang_push_malloced_string (str);
-}
-
-/*}}}*/
-
-static void str_quote_string_cmd (char *str, char *quotes, int *slash_ptr) /*{{{*/
-{
- char *q;
- int slash;
- unsigned int len;
- register char *t, *s, *q1;
- register unsigned char ch;
-
- slash = *slash_ptr;
-
- if ((slash > 255) || (slash < 0))
- {
- SLang_Error = SL_INVALID_PARM;
- return;
- }
-
- /* setup the utility table to have 1s at quote char postitions. */
- set_utility_char_table (quotes);
-
- t = Utility_Char_Table;
- t[(unsigned int) slash] = 1;
-
- /* calculate length */
- s = str;
- len = 0;
- while ((ch = (unsigned char) *s++) != 0) if (t[ch]) len++;
- len += (unsigned int) (s - str);
-
- if (NULL != (q = SLmalloc(len)))
- {
- s = str; q1 = q;
- while ((ch = (unsigned char) *s++) != 0)
- {
- if (t[ch]) *q1++ = slash;
- *q1++ = (char) ch;
- }
- *q1 = 0;
- SLang_push_malloced_string(q);
- }
-}
-
-/*}}}*/
-
-/* returns the position of substrin in a string or null */
-static int issubstr_cmd (char *a, char *b) /*{{{*/
-{
- char *c;
-
- if (NULL == (c = (char *) strstr(a, b)))
- return 0;
-
- return 1 + (int) (c - a);
-}
-
-/*}}}*/
-
-/* returns to stack string at pos n to n + m of a */
-static void substr_cmd (char *a, int *n_ptr, int *m_ptr) /*{{{*/
-{
- int n, m;
- int lena;
-
- n = *n_ptr;
- m = *m_ptr;
-
- lena = strlen (a);
- if (n > lena) n = lena + 1;
- if (n < 1)
- {
- SLang_Error = SL_INVALID_PARM;
- return;
- }
-
- n--;
- if (m < 0) m = lena;
- if (n + m > lena) m = lena - n;
-
- (void) _SLang_push_nstring (a + n, (unsigned int) m);
-}
-
-/*}}}*/
-
-/* substitute char m at positin string n in string*/
-static void strsub_cmd (int *nptr, int *mptr) /*{{{*/
-{
- char *a;
- int n, m;
- unsigned int lena;
-
- if (-1 == SLpop_string (&a))
- return;
-
- n = *nptr;
- m = *mptr;
-
- lena = strlen (a);
-
- if ((n <= 0) || (lena < (unsigned int) n))
- {
- SLang_Error = SL_INVALID_PARM;
- SLfree(a);
- return;
- }
-
- a[n - 1] = (char) m;
-
- SLang_push_malloced_string (a);
-}
-
-/*}}}*/
-
-static void strup_cmd(void) /*{{{*/
-{
- unsigned char c, *a;
- char *str;
-
- if (SLpop_string (&str))
- return;
-
- a = (unsigned char *) str;
- while ((c = *a) != 0)
- {
- /* if ((*a >= 'a') && (*a <= 'z')) *a -= 32; */
- *a = UPPER_CASE(c);
- a++;
- }
-
- SLang_push_malloced_string (str);
-}
-
-/*}}}*/
-
-static int isdigit_cmd (char *what) /*{{{*/
-{
- return isdigit((unsigned char)*what);
-}
-
-/*}}}*/
-static int toupper_cmd (int *ch) /*{{{*/
-{
- return UPPER_CASE(*ch);
-}
-
-/*}}}*/
-
-static int tolower_cmd (int *ch) /*{{{*/
-{
- return LOWER_CASE(*ch);
-}
-
-/*}}}*/
-
-static void strlow_cmd (void) /*{{{*/
-{
- unsigned char c, *a;
- char *str;
-
- if (SLpop_string(&str)) return;
- a = (unsigned char *) str;
- while ((c = *a) != 0)
- {
- /* if ((*a >= 'a') && (*a <= 'z')) *a -= 32; */
- *a = LOWER_CASE(c);
- a++;
- }
-
- SLang_push_malloced_string ((char *) str);
-}
-
-/*}}}*/
-
-static SLang_Array_Type *do_strchop (char *str, int delim, int quote)
-{
- int count;
- char *s0, *elm;
- register char *s1;
- register unsigned char ch;
- int quoted;
- SLang_Array_Type *at;
- char **data;
-
- if ((quote < 0) || (quote > 255)
- || (delim <= 0) || (delim > 255))
- {
- SLang_Error = SL_INVALID_PARM;
- return NULL;
- }
-
- s1 = s0 = str;
-
- quoted = 0;
- count = 1; /* at least 1 */
- while (1)
- {
- ch = (unsigned char) *s1++;
- if ((ch == quote) && quote)
- {
- if (*s1 == 0)
- break;
-
- s1++;
- continue;
- }
-
- if (ch == delim)
- {
- count++;
- continue;
- }
-
- if (ch == 0)
- break;
- }
-
- if (NULL == (at = SLang_create_array (SLANG_STRING_TYPE, 0, NULL, &count, 1)))
- return NULL;
-
- data = (char **)at->data;
-
- count = 0;
- s1 = s0;
-
- while (1)
- {
- ch = (unsigned char) *s1;
-
- if ((ch == quote) && quote)
- {
- s1++;
- if (*s1 != 0) s1++;
- quoted = 1;
- continue;
- }
-
- if ((ch == delim) || (ch == 0))
- {
- if (quoted == 0)
- elm = SLang_create_nslstring (s0, (unsigned int) (s1 - s0));
- else
- {
- register char ch1, *p, *p1;
- char *tmp;
-
- tmp = SLmake_nstring (s0, (unsigned int)(s1 - s0));
- if (tmp == NULL)
- break;
-
- /* Now unquote it */
- p = p1 = tmp;
- do
- {
- ch1 = *p1++;
- if (ch1 == '\\') ch1 = *p1++;
- *p++ = ch1;
- }
- while (ch1 != 0);
- quoted = 0;
-
- elm = SLang_create_slstring (tmp);
- SLfree (tmp);
- }
-
- if (elm == NULL)
- break;
-
- data[count] = elm;
- count++;
-
- if (ch == 0)
- return at;
-
- s1++; /* skip past delim */
- s0 = s1; /* and reset */
- }
- else s1++;
- }
-
- SLang_free_array (at);
- return NULL;
-}
-
-static void strchop_cmd (char *str, int *q, int *d)
-{
- (void) SLang_push_array (do_strchop (str, *q, *d), 1);
-}
-
-static void strchopr_cmd (char *str, int *q, int *d)
-{
- SLang_Array_Type *at;
-
- if (NULL != (at = do_strchop (str, *q, *d)))
- {
- char **d0, **d1;
-
- d0 = (char **) at->data;
- d1 = d0 + (at->num_elements - 1);
-
- while (d0 < d1)
- {
- char *tmp;
-
- tmp = *d0;
- *d0 = *d1;
- *d1 = tmp;
- d0++;
- d1--;
- }
- }
- SLang_push_array (at, 1);
-}
-
-static int strcmp_cmd (char *a, char *b) /*{{{*/
-{
- return strcmp(a, b);
-}
-
-/*}}}*/
-
-static int strncmp_cmd (char *a, char *b, int *n) /*{{{*/
-{
- return strncmp(a, b, (unsigned int) *n);
-}
-
-/*}}}*/
-
-static int strlen_cmd (char *s) /*{{{*/
-{
- return (int) strlen (s);
-}
-/*}}}*/
-
-static void extract_element_cmd (char *list, int *nth_ptr, int *delim_ptr)
-{
- char buf[1024], *b;
-
- b = buf;
- if (-1 == SLextract_list_element (list, *nth_ptr, *delim_ptr, buf, sizeof(buf)))
- b = NULL;
-
- SLang_push_string (b);
-}
-
-/* sprintf functionality for S-Lang */
-
-static char *SLdo_sprintf (char *fmt) /*{{{*/
-{
- register char *p = fmt, ch;
- char *out = NULL, *outp = NULL;
- char dfmt[1024]; /* used to hold part of format */
- char *f;
- VOID_STAR varp;
- int want_width, width, precis, use_varp, int_var;
- long long_var;
- unsigned int len = 0, malloc_len = 0, dlen;
- int do_free, guess_size;
-#if SLANG_HAS_FLOAT
- int tmp1, tmp2, use_double;
- double x;
-#endif
- int use_long = 0;
-
- while (1)
- {
- while ((ch = *p) != 0)
- {
- if (ch == '%')
- break;
- p++;
- }
-
- /* p points at '%' or 0 */
-
- dlen = (unsigned int) (p - fmt);
-
- if (len + dlen >= malloc_len)
- {
- malloc_len = len + dlen;
- if (out == NULL) outp = SLmalloc(malloc_len + 1);
- else outp = SLrealloc(out, malloc_len + 1);
- if (NULL == outp)
- return out;
- out = outp;
- outp = out + len;
- }
-
- strncpy(outp, fmt, dlen);
- len += dlen;
- outp = out + len;
- *outp = 0;
- if (ch == 0) break;
-
- /* bump it beyond '%' */
- ++p;
- fmt = p;
-
- f = dfmt;
- *f++ = ch;
- /* handle flag char */
- ch = *p++;
-
- /* Make sure cases such as "% #g" can be handled. */
- if ((ch == '-') || (ch == '+') || (ch == ' ') || (ch == '#'))
- {
- *f++ = ch;
- ch = *p++;
- if ((ch == '-') || (ch == '+') || (ch == ' ') || (ch == '#'))
- {
- *f++ = ch;
- ch = *p++;
- }
- }
-
-
- /* width */
- /* I have got to parse it myself so that I can see how big it needs
- * to be.
- */
- want_width = width = 0;
- if (ch == '*')
- {
- if (SLang_pop_integer(&width)) return (out);
- want_width = 1;
- ch = *p++;
- }
- else
- {
- if (ch == '0')
- {
- *f++ = '0';
- ch = *p++;
- }
-
- while ((ch <= '9') && (ch >= '0'))
- {
- width = width * 10 + (ch - '0');
- ch = *p++;
- want_width = 1;
- }
- }
-
- if (want_width)
- {
- sprintf(f, "%d", width);
- f += strlen (f);
- }
- precis = 0;
- /* precision -- also indicates max number of chars from string */
- if (ch == '.')
- {
- *f++ = ch;
- ch = *p++;
- want_width = 0;
- if (ch == '*')
- {
- if (SLang_pop_integer(&precis)) return (out);
- ch = *p++;
- want_width = 1;
- }
- else while ((ch <= '9') && (ch >= '0'))
- {
- precis = precis * 10 + (ch - '0');
- ch = *p++;
- want_width = 1;
- }
- if (want_width)
- {
- sprintf(f, "%d", precis);
- f += strlen (f);
- }
- else precis = 0;
- }
-
- long_var = 0;
- int_var = 0;
- varp = NULL;
- guess_size = 32;
-#if SLANG_HAS_FLOAT
- use_double = 0;
-#endif
- use_long = 0;
- use_varp = 0;
- do_free = 0;
-
- if (ch == 'l')
- {
- use_long = 1;
- ch = *p++;
- }
- else if (ch == 'h') ch = *p++; /* not supported */
-
- /* Now the actual format specifier */
- switch (ch)
- {
- case 'S':
- _SLstring_intrinsic ();
- ch = 's';
- /* drop */
- case 's':
- if (SLang_pop_slstring((char **) &varp)) return (out);
- do_free = 1;
- guess_size = strlen((char *) varp);
- use_varp = 1;
- break;
-
- case '%':
- guess_size = 1;
- do_free = 0;
- use_varp = 1;
- varp = (VOID_STAR) "%";
- break;
-
- case 'c': guess_size = 1;
- use_long = 0;
- /* drop */
- case 'd':
- case 'i':
- case 'o':
- case 'u':
- case 'X':
- case 'x':
- if (SLang_pop_long (&long_var)) return(out);
- if (use_long == 0)
- int_var = (int) long_var;
- else
- *f++ = 'l';
- break;
-
- case 'f':
- case 'e':
- case 'g':
- case 'E':
- case 'G':
-#if SLANG_HAS_FLOAT
- if (SLang_pop_double(&x, &tmp1, &tmp2)) return (out);
- use_double = 1;
- guess_size = 256;
- (void) tmp1; (void) tmp2;
- use_long = 0;
- break;
-#endif
- case 'p':
- guess_size = 32;
- /* Pointer type?? Why?? */
- if (-1 == SLdo_pop ())
- return out;
- varp = (VOID_STAR) _SLStack_Pointer;
- use_varp = 1;
- use_long = 0;
- break;
-
- default:
- SLang_doerror("Invalid Format.");
- return(out);
- }
- *f++ = ch; *f = 0;
-
- width = width + precis;
- if (width > guess_size) guess_size = width;
-
- if (len + guess_size > malloc_len)
- {
- outp = (char *) SLrealloc(out, len + guess_size + 1);
- if (outp == NULL)
- {
- SLang_Error = SL_MALLOC_ERROR;
- return (out);
- }
- out = outp;
- outp = out + len;
- malloc_len = len + guess_size;
- }
-
- if (use_varp)
- {
- sprintf(outp, dfmt, varp);
- if (do_free) SLang_free_slstring ((char *)varp);
- }
-#if SLANG_HAS_FLOAT
- else if (use_double) sprintf(outp, dfmt, x);
-#endif
- else if (use_long) sprintf (outp, dfmt, long_var);
- else sprintf(outp, dfmt, int_var);
-
- len += strlen(outp);
- outp = out + len;
- fmt = p;
- }
-
- if (out != NULL)
- {
- outp = SLrealloc (out, (unsigned int) (outp - out) + 1);
- if (outp != NULL) out = outp;
- }
-
- return (out);
-}
-
-/*}}}*/
-
-int _SLstrops_do_sprintf_n (int n) /*{{{*/
-{
- char *p;
- char *fmt;
- SLang_Object_Type *ptr;
- int ofs;
-
- if (-1 == (ofs = SLreverse_stack (n + 1)))
- return -1;
-
- ptr = _SLRun_Stack + ofs;
-
- if (SLang_pop_slstring(&fmt))
- return -1;
-
- p = SLdo_sprintf (fmt);
- SLang_free_slstring (fmt);
-
- while (_SLStack_Pointer > ptr)
- SLdo_pop ();
-
- if (SLang_Error)
- {
- SLfree (p);
- return -1;
- }
-
- return SLang_push_malloced_string (p);
-}
-
-/*}}}*/
-
-static void sprintf_n_cmd (int *n)
-{
- _SLstrops_do_sprintf_n (*n);
-}
-
-static void sprintf_cmd (void)
-{
- _SLstrops_do_sprintf_n (SLang_Num_Function_Args - 1); /* do not include format */
-}
-
-/* converts string s to a form that can be used in an eval */
-static void make_printable_string(char *s) /*{{{*/
-{
- unsigned int len;
- register char *s1 = s, ch, *ss1;
- char *ss;
-
- /* compute length */
- len = 3;
- while ((ch = *s1++) != 0)
- {
- if ((ch == '\n') || (ch == '\\') || (ch == '"')) len++;
- len++;
- }
-
- if (NULL == (ss = SLmalloc(len)))
- return;
-
- s1 = s;
- ss1 = ss;
- *ss1++ = '"';
- while ((ch = *s1++) != 0)
- {
- if (ch == '\n')
- {
- ch = 'n';
- *ss1++ = '\\';
- }
- else if ((ch == '\\') || (ch == '"'))
- {
- *ss1++ = '\\';
- }
- *ss1++ = ch;
- }
- *ss1++ = '"';
- *ss1 = 0;
- if (-1 == SLang_push_string (ss))
- SLfree (ss);
-}
-
-/*}}}*/
-
-static int is_list_element_cmd (char *list, char *elem, int *d_ptr)
-{
- char ch;
- int d, n;
- unsigned int len;
- char *lbeg, *lend;
-
- d = *d_ptr;
-
- len = strlen (elem);
-
- n = 1;
- lend = list;
-
- while (1)
- {
- lbeg = lend;
- while ((0 != (ch = *lend)) && (ch != (char) d)) lend++;
-
- if ((lbeg + len == lend)
- && (0 == strncmp (elem, lbeg, len)))
- break;
-
- if (ch == 0)
- {
- n = 0;
- break;
- }
- lend++; /* skip delim */
- n++;
- }
-
- return n;
-}
-
-/*}}}*/
-
-/* Regular expression routines for strings */
-static SLRegexp_Type regexp_reg;
-
-static int string_match_cmd (char *str, char *pat, int *nptr) /*{{{*/
-{
- int n;
- unsigned int len;
- unsigned char rbuf[512], *match;
-
- n = *nptr;
-
- regexp_reg.case_sensitive = 1;
- regexp_reg.buf = rbuf;
- regexp_reg.pat = (unsigned char *) pat;
- regexp_reg.buf_len = sizeof (rbuf);
-
- if (SLang_regexp_compile (&regexp_reg))
- {
- SLang_verror (SL_INVALID_PARM, "Unable to compile pattern");
- return -1;
- }
-
- n--;
- len = strlen(str);
- if ((n < 0) || ((unsigned int) n >= len))
- {
- /* SLang_Error = SL_INVALID_PARM; */
- return 0;
- }
-
- str += n;
- len -= n;
-
- if (NULL == (match = SLang_regexp_match((unsigned char *) str, len, &regexp_reg)))
- return 0;
-
- /* adjust offsets */
- regexp_reg.offset = n;
-
- return (1 + (int) ((char *) match - str));
-}
-
-/*}}}*/
-
-static int string_match_nth_cmd (int *nptr) /*{{{*/
-{
- int n, beg;
-
- n = *nptr;
-
- if ((n < 0) || (n > 9) || (regexp_reg.pat == NULL)
- || ((beg = regexp_reg.beg_matches[n]) == -1))
- {
- SLang_Error = SL_INVALID_PARM;
- return -1;
- }
- SLang_push_integer(beg + regexp_reg.offset);
- return regexp_reg.end_matches[n];
-}
-
-/*}}}*/
-
-static char *create_delimited_string (char **list, unsigned int n,
- char *delim)
-{
- unsigned int len, dlen;
- unsigned int i;
- unsigned int num;
- char *str, *s;
-
- len = 1; /* allow room for \0 char */
- num = 0;
- for (i = 0; i < n; i++)
- {
- if (list[i] == NULL) continue;
- len += strlen (list[i]);
- num++;
- }
-
- dlen = strlen (delim);
- if (num > 1)
- len += (num - 1) * dlen;
-
- if (NULL == (str = SLmalloc (len)))
- return NULL;
-
- *str = 0;
- s = str;
- i = 0;
-
- while (num > 1)
- {
- while (list[i] == NULL)
- i++;
-
- strcpy (s, list[i]);
- s += strlen (list[i]);
- strcpy (s, delim);
- s += dlen;
- i++;
- num--;
- }
-
- if (num)
- {
- while (list[i] == NULL)
- i++;
-
- strcpy (s, list[i]);
- }
-
- return str;
-}
-
-static void create_delimited_string_cmd (int *nptr)
-{
- unsigned int n, i;
- char **strings;
- char *str;
-
- str = NULL;
-
- n = 1 + (unsigned int) *nptr; /* n includes delimiter */
-
- if (NULL == (strings = (char **)SLmalloc (n * sizeof (char *))))
- {
- SLdo_pop_n (n);
- return;
- }
- memset((char *)strings, 0, n * sizeof (char *));
-
- i = n;
- while (i != 0)
- {
- i--;
- if (-1 == SLang_pop_slstring (strings + i))
- goto return_error;
- }
-
- str = create_delimited_string (strings + 1, (n - 1), strings[0]);
- /* drop */
- return_error:
- for (i = 0; i < n; i++) SLang_free_slstring (strings[i]);
- SLfree ((char *)strings);
-
- (void) SLang_push_malloced_string (str); /* NULL Ok */
-}
-
-static void strjoin_cmd (char *delim)
-{
- SLang_Array_Type *at;
- char *str;
-
- if (-1 == SLang_pop_array_of_type (&at, SLANG_STRING_TYPE))
- return;
-
- str = create_delimited_string ((char **)at->data, at->num_elements, delim);
- SLang_free_array (at);
- (void) SLang_push_malloced_string (str); /* NULL Ok */
-}
-
-static void str_delete_chars_cmd (char *s, char *d)
-{
- unsigned char lut[256];
- unsigned char *s1, *s2;
- unsigned char ch;
-
- make_lut ((unsigned char *)d, lut);
- if (NULL == (s = SLmake_string (s)))
- return;
-
- s1 = s2 = (unsigned char *) s;
- while ((ch = *s2++) != 0)
- {
- if (0 == lut[ch])
- *s1++ = ch;
- }
- *s1 = 0;
-
- (void) SLang_push_malloced_string (s);
-}
-
-static unsigned char *make_lut_string (unsigned char *s)
-{
- unsigned char lut[256];
- unsigned char *l;
- unsigned int i;
-
- /* Complement-- a natural order is imposed */
- make_lut (s, lut);
- l = lut;
- for (i = 1; i < 256; i++)
- {
- if (lut[i])
- *l++ = (unsigned char) i;
- }
- *l = 0;
- return (unsigned char *) SLmake_string ((char *)lut);
-}
-
-static unsigned char *make_str_range (unsigned char *s)
-{
- unsigned char *s1, *range;
- unsigned int num;
- unsigned char ch;
- int len;
-
- if (*s == '^')
- return make_lut_string (s);
-
- num = 0;
- s1 = s;
- while ((ch = *s1++) != 0)
- {
- unsigned char ch1;
-
- ch1 = *s1;
- if (ch1 == '-')
- {
- s1++;
- ch1 = *s1;
- len = (int)ch1 - (int)ch;
- if (len < 0)
- len = -len;
-
- num += (unsigned int) len;
- if (ch1 != 0)
- s1++;
- }
-
- num++;
- }
-
- range = (unsigned char *)SLmalloc (num + 1);
- if (range == NULL)
- return NULL;
-
- s1 = s;
- s = range;
- while ((ch = *s1++) != 0)
- {
- unsigned char ch1;
- unsigned int i;
-
- ch1 = *s1;
- if (ch1 != '-')
- {
- *s++ = ch;
- continue;
- }
-
- s1++;
- ch1 = *s1;
-
- if (ch > ch1)
- {
- if (ch1 == 0)
- ch1 = 1;
-
- for (i = (unsigned int) ch; i >= (unsigned int) ch1; i--)
- *s++ = (unsigned char) i;
-
- if (*s1 == 0)
- break;
- }
- else
- {
- for (i = (unsigned int) ch; i <= (unsigned int) ch1; i++)
- *s++ = (unsigned char) i;
- }
- s1++;
- }
-
-#if 0
- if (range + num != s)
- SLang_verror (SL_INTERNAL_ERROR, "make_str_range: num wrong");
-#endif
- *s = 0;
-
- return range;
-}
-
-static void strtrans_cmd (char *s, unsigned char *from, unsigned char *to)
-{
- unsigned char map[256];
- char *s1;
- unsigned int i;
- unsigned char ch;
- unsigned char last_to;
- unsigned char *from_range, *to_range;
-
- for (i = 0; i < 256; i++) map[i] = (unsigned char) i;
-
- if (*to == 0)
- {
- str_delete_chars_cmd (s, (char *)from);
- return;
- }
-
- from_range = make_str_range (from);
- if (from_range == NULL)
- return;
- to_range = make_str_range (to);
- if (to_range == NULL)
- {
- SLfree ((char *)from_range);
- return;
- }
-
- from = from_range;
- to = to_range;
-
- last_to = 0;
- while ((ch = *from++) != 0)
- {
- unsigned char to_ch;
-
- if (0 == (to_ch = *to++))
- {
- do
- {
- map[ch] = last_to;
- }
- while (0 != (ch = *from++));
- break;
- }
-
- last_to = map[ch] = to_ch;
- }
-
- SLfree ((char *)from_range);
- SLfree ((char *)to_range);
-
- s = SLmake_string (s);
- if (s == NULL)
- return;
-
- s1 = s;
- while ((ch = (unsigned char) *s1) != 0)
- *s1++ = (char) map[ch];
-
- (void) SLang_push_malloced_string (s);
-}
-
-
-static SLang_Intrin_Fun_Type Strops_Table [] = /*{{{*/
-{
- MAKE_INTRINSIC_I("create_delimited_string", create_delimited_string_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SS("strcmp", strcmp_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SSI("strncmp", strncmp_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_0("strcat", strcat_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("strlen", strlen_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SII("strchop", strchop_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SII("strchopr", strchopr_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_I("strreplace", strreplace_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SSS("str_replace", str_replace_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SII("substr", substr_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SS("is_substr", issubstr_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_II("strsub", strsub_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SII("extract_element", extract_element_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SSI("is_list_element", is_list_element_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_SSI("string_match", string_match_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_I("string_match_nth", string_match_nth_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_0("strlow", strlow_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_I("tolower", tolower_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_I("toupper", toupper_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_0("strup", strup_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("isdigit", isdigit_cmd, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("strtrim", strtrim_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("strtrim_end", strtrim_end_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("strtrim_beg", strtrim_beg_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("strcompress", strcompress_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_I("Sprintf", sprintf_n_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("sprintf", sprintf_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("sscanf", _SLang_sscanf, SLANG_INT_TYPE),
- MAKE_INTRINSIC_S("make_printable_string", make_printable_string, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SSI("str_quote_string", str_quote_string_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SSS("str_uncomment_string", str_uncomment_string_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_II("define_case", SLang_define_case, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("strtok", strtok_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_S("strjoin", strjoin_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SSS("strtrans", strtrans_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_SS("str_delete_chars", str_delete_chars_cmd, SLANG_VOID_TYPE),
-
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-/*}}}*/
-
-int _SLang_init_slstrops (void)
-{
- return SLadd_intrin_fun_table (Strops_Table, NULL);
-}
diff --git a/mdk-stage1/slang/slstruct.c b/mdk-stage1/slang/slstruct.c
deleted file mode 100644
index 33d182373..000000000
--- a/mdk-stage1/slang/slstruct.c
+++ /dev/null
@@ -1,932 +0,0 @@
-/* Structure type implementation */
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#define SL_APP_WANTS_FOREACH
-#include "slang.h"
-#include "_slang.h"
-
-void _SLstruct_delete_struct (_SLang_Struct_Type *s)
-{
- _SLstruct_Field_Type *field, *field_max;
-
- if (s == NULL) return;
-
- if (s->num_refs > 1)
- {
- s->num_refs -= 1;
- return;
- }
-
- field = s->fields;
- if (field != NULL)
- {
- field_max = field + s->nfields;
-
- while (field < field_max)
- {
- SLang_free_object (&field->obj);
- SLang_free_slstring (field->name); /* could be NULL */
- field++;
- }
- SLfree ((char *) s->fields);
- }
- SLfree ((char *) s);
-}
-
-static _SLang_Struct_Type *allocate_struct (unsigned int nfields)
-{
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
- unsigned int i, size;
-
- s = (_SLang_Struct_Type *) SLmalloc (sizeof (_SLang_Struct_Type));
- if (s == NULL) return NULL;
-
- SLMEMSET((char *) s, 0, sizeof (_SLang_Struct_Type));
-
- size = nfields * sizeof(_SLstruct_Field_Type);
- if (NULL == (f = (_SLstruct_Field_Type *) SLmalloc (size)))
- {
- SLfree ((char *) s);
- return NULL;
- }
- SLMEMSET ((char *) f, 0, size);
- s->nfields = nfields;
- s->fields = f;
-
- /* By default, all structs will be created with elements set to NULL. I
- * do not know whether or not it is better to use SLANG_UNDEFINED_TYPE.
- */
- for (i = 0; i < nfields; i++)
- f[i].obj.data_type = SLANG_NULL_TYPE;
-
- return s;
-}
-
-static int push_struct_of_type (unsigned char type, _SLang_Struct_Type *s)
-{
- SLang_Object_Type obj;
-
- obj.data_type = type;
- obj.v.struct_val = s;
- s->num_refs += 1;
-
- if (0 == SLang_push (&obj))
- return 0;
-
- s->num_refs -= 1;
- return -1;
-}
-
-int _SLang_push_struct (_SLang_Struct_Type *s)
-{
- return push_struct_of_type (SLANG_STRUCT_TYPE, s);
-}
-
-int _SLang_pop_struct (_SLang_Struct_Type **sp)
-{
- SLang_Object_Type obj;
- SLang_Class_Type *cl;
- unsigned char type;
-
- if (0 != SLang_pop (&obj))
- return -1;
-
- type = obj.data_type;
- if (type != SLANG_STRUCT_TYPE)
- {
- cl = _SLclass_get_class (type);
- if (cl->cl_struct_def == NULL)
- {
- *sp = NULL;
- SLang_free_object (&obj);
- SLang_verror (SL_TYPE_MISMATCH,
- "Expecting struct type object. Found %s",
- cl->cl_name);
- return -1;
- }
- }
-
- *sp = obj.v.struct_val;
- return 0;
-}
-
-static void struct_destroy (unsigned char type, VOID_STAR vs)
-{
- (void) type;
- _SLstruct_delete_struct (*(_SLang_Struct_Type **) vs);
-}
-
-static int struct_push (unsigned char type, VOID_STAR ptr)
-{
- return push_struct_of_type (type, *(_SLang_Struct_Type **) ptr);
-}
-
-static _SLstruct_Field_Type *find_field (_SLang_Struct_Type *s, char *name)
-{
- _SLstruct_Field_Type *f, *fmax;
-
- f = s->fields;
- fmax = f + s->nfields;
-
- while (f < fmax)
- {
- /* Since both these are slstrings, only compare pointer */
- if (name == f->name)
- return f;
-
- f++;
- }
-
- return NULL;
-}
-
-static _SLstruct_Field_Type *pop_field (_SLang_Struct_Type *s, char *name)
-{
- _SLstruct_Field_Type *f;
-
- f = find_field (s, name);
- if (f == NULL)
- SLang_verror (SL_SYNTAX_ERROR, "struct has no field named %s", name);
- return f;
-}
-
-int SLstruct_create_struct (unsigned int nfields,
- char **field_names,
- unsigned char *field_types,
- VOID_STAR *field_values)
-{
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
- unsigned int i;
-
- if (NULL == (s = allocate_struct (nfields)))
- return -1;
-
- f = s->fields;
- for (i = 0; i < nfields; i++)
- {
- unsigned char type;
- SLang_Class_Type *cl;
- VOID_STAR value;
- char *name = field_names [i];
-
- if (name == NULL)
- {
- SLang_verror (SL_INVALID_PARM, "A struct field name cannot be NULL");
- goto return_error;
- }
-
- if (NULL == (f->name = SLang_create_slstring (name)))
- goto return_error;
-
- if ((field_values == NULL)
- || (NULL == (value = field_values [i])))
- {
- f++;
- continue;
- }
-
- type = field_types[i];
- cl = _SLclass_get_class (type);
-
- if ((-1 == (cl->cl_push (type, value)))
- || (-1 == SLang_pop (&f->obj)))
- goto return_error;
-
- f++;
- }
-
- if (0 == _SLang_push_struct (s))
- return 0;
- /* drop */
-
- return_error:
- _SLstruct_delete_struct (s);
- return -1;
-}
-
-/* Interpreter interface */
-
-int _SLstruct_define_struct (void)
-{
- int nfields;
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
-
- if (-1 == SLang_pop_integer (&nfields))
- return -1;
-
- if (nfields <= 0)
- {
- SLang_verror (SL_INVALID_PARM, "Number of struct fields must be > 0");
- return -1;
- }
-
- if (NULL == (s = allocate_struct (nfields)))
- return -1;
-
- f = s->fields;
- while (nfields)
- {
- char *name;
-
- nfields--;
- if (-1 == SLang_pop_slstring (&name))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
- f[nfields].name = name;
- }
-
- if (-1 == _SLang_push_struct (s))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
- return 0;
-}
-
-/* Simply make a struct that contains the same fields as struct s. Do not
- * duplicate the field values.
- */
-static _SLang_Struct_Type *make_struct_shell (_SLang_Struct_Type *s)
-{
- _SLang_Struct_Type *new_s;
- _SLstruct_Field_Type *new_f, *old_f;
- unsigned int i, nfields;
-
- nfields = s->nfields;
- if (NULL == (new_s = allocate_struct (nfields)))
- return NULL;
-
- new_f = new_s->fields;
- old_f = s->fields;
-
- for (i = 0; i < nfields; i++)
- {
- if (NULL == (new_f[i].name = SLang_create_slstring (old_f[i].name)))
- {
- _SLstruct_delete_struct (new_s);
- return NULL;
- }
- }
- return new_s;
-}
-
-static int struct_init_array_object (unsigned char type, VOID_STAR addr)
-{
- SLang_Class_Type *cl;
- _SLang_Struct_Type *s;
-
- cl = _SLclass_get_class (type);
- if (NULL == (s = make_struct_shell (cl->cl_struct_def)))
- return -1;
-
- s->num_refs = 1;
- *(_SLang_Struct_Type **) addr = s;
- return 0;
-}
-
-static int
-typedefed_struct_datatype_deref (unsigned char type)
-{
- SLang_Class_Type *cl;
- _SLang_Struct_Type *s;
-
- cl = _SLclass_get_class (type);
- if (NULL == (s = make_struct_shell (cl->cl_struct_def)))
- return -1;
-
- if (-1 == push_struct_of_type (type, s))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
-
- return 0;
-}
-
-static _SLang_Struct_Type *duplicate_struct (_SLang_Struct_Type *s)
-{
- _SLang_Struct_Type *new_s;
- _SLstruct_Field_Type *new_f, *f, *fmax;
-
- new_s = make_struct_shell (s);
-
- if (new_s == NULL)
- return NULL;
-
- f = s->fields;
- fmax = f + s->nfields;
- new_f = new_s->fields;
-
- while (f < fmax)
- {
- SLang_Object_Type *obj;
-
- obj = &f->obj;
- if (obj->data_type != SLANG_UNDEFINED_TYPE)
- {
- if ((-1 == _SLpush_slang_obj (obj))
- || (-1 == SLang_pop (&new_f->obj)))
- {
- _SLstruct_delete_struct (new_s);
- return NULL;
- }
- }
- new_f++;
- f++;
- }
-
- return new_s;
-}
-
-static int struct_dereference (unsigned char type, VOID_STAR addr)
-{
- _SLang_Struct_Type *s;
-
- if (NULL == (s = duplicate_struct (*(_SLang_Struct_Type **) addr)))
- return -1;
-
- if (-1 == push_struct_of_type (type, s))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
-
- return 0;
-}
-
-/*{{{ foreach */
-
-struct _SLang_Foreach_Context_Type
-{
- _SLang_Struct_Type *s;
- char *next_field_name;
-};
-
-static SLang_Foreach_Context_Type *
-struct_foreach_open (unsigned char type, unsigned int num)
-{
- SLang_Foreach_Context_Type *c;
- _SLang_Struct_Type *s;
- char *next_name;
-
- (void) type;
-
- if (-1 == _SLang_pop_struct (&s))
- return NULL;
-
- switch (num)
- {
- case 0:
- next_name = SLang_create_slstring ("next");
- break;
-
- case 1:
- if (-1 == SLang_pop_slstring (&next_name))
- next_name = NULL;
- break;
-
- default:
- next_name = NULL;
- SLang_verror (SL_NOT_IMPLEMENTED,
- "'foreach (Struct_Type) using' requires single control value");
- SLdo_pop_n (num);
- break;
- }
-
- if (next_name == NULL)
- {
- _SLstruct_delete_struct (s);
- return NULL;
- }
-
- c = (SLang_Foreach_Context_Type *)SLmalloc (sizeof (SLang_Foreach_Context_Type));
- if (c == NULL)
- {
- _SLstruct_delete_struct (s);
- SLang_free_slstring (next_name);
- return NULL;
- }
- memset ((char *) c, 0, sizeof (SLang_Foreach_Context_Type));
-
- c->next_field_name = next_name;
- c->s = s;
-
- return c;
-}
-
-static void struct_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- if (c == NULL) return;
-
- SLang_free_slstring (c->next_field_name);
- if (c->s != NULL) _SLstruct_delete_struct (c->s);
- SLfree ((char *) c);
-}
-
-static int struct_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- _SLstruct_Field_Type *f;
- _SLang_Struct_Type *next_s;
-
- (void) type;
-
- if (c == NULL)
- return -1;
-
- if (c->s == NULL)
- return 0; /* done */
-
- if (-1 == _SLang_push_struct (c->s))
- return -1;
-
- /* Now get the next one ready for the next foreach loop */
-
- next_s = NULL;
- if (NULL != (f = find_field (c->s, c->next_field_name)))
- {
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (f->obj.data_type);
- /* Note that I cannot simply look for SLANG_STRUCT_TYPE since the
- * user may have typedefed another struct type. So, look at the
- * class methods.
- */
- if (cl->cl_foreach_open == struct_foreach_open)
- {
- next_s = f->obj.v.struct_val;
- next_s->num_refs += 1;
- }
- }
-
- _SLstruct_delete_struct (c->s);
- c->s = next_s;
-
- /* keep going */
- return 1;
-}
-
-/*}}}*/
-
-static int struct_sput (unsigned char type, char *name)
-{
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
- SLang_Object_Type obj;
-
- (void) type;
-
- if (-1 == _SLang_pop_struct (&s))
- return -1;
-
- if ((NULL == (f = pop_field (s, name)))
- || (-1 == SLang_pop (&obj)))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
-
- SLang_free_object (&f->obj);
- f->obj = obj;
- _SLstruct_delete_struct (s);
- return 0;
-}
-
-static int struct_sget (unsigned char type, char *name)
-{
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
- int ret;
-
- (void) type;
-
- if (-1 == _SLang_pop_struct (&s))
- return -1;
-
- if (NULL == (f = pop_field (s, name)))
- {
- _SLstruct_delete_struct (s);
- return -1;
- }
-
- ret = _SLpush_slang_obj (&f->obj);
- _SLstruct_delete_struct (s);
- return ret;
-}
-
-static int struct_typecast
- (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- _SLang_Struct_Type **a, **b;
- unsigned int i;
-
- (void) a_type;
- (void) b_type;
-
- a = (_SLang_Struct_Type **) ap;
- b = (_SLang_Struct_Type **) bp;
- for (i = 0; i < na; i++)
- {
- b[i] = a[i];
- if (a[i] != NULL)
- a[i]->num_refs += 1;
- }
-
- return 1;
-}
-
-int _SLstruct_define_typedef (void)
-{
- char *type_name;
- _SLang_Struct_Type *s, *s1;
- SLang_Class_Type *cl;
-
- if (-1 == SLang_pop_slstring (&type_name))
- return -1;
-
- if (-1 == _SLang_pop_struct (&s))
- {
- SLang_free_slstring (type_name);
- return -1;
- }
-
- if (NULL == (s1 = make_struct_shell (s)))
- {
- SLang_free_slstring (type_name);
- _SLstruct_delete_struct (s);
- return -1;
- }
-
- _SLstruct_delete_struct (s);
-
- if (NULL == (cl = SLclass_allocate_class (type_name)))
- {
- SLang_free_slstring (type_name);
- _SLstruct_delete_struct (s1);
- return -1;
- }
- SLang_free_slstring (type_name);
-
- cl->cl_struct_def = s1;
- cl->cl_init_array_object = struct_init_array_object;
- cl->cl_datatype_deref = typedefed_struct_datatype_deref;
- cl->cl_destroy = struct_destroy;
- cl->cl_push = struct_push;
- cl->cl_dereference = struct_dereference;
- cl->cl_foreach_open = struct_foreach_open;
- cl->cl_foreach_close = struct_foreach_close;
- cl->cl_foreach = struct_foreach;
-
- cl->cl_sget = struct_sget;
- cl->cl_sput = struct_sput;
-
- if (-1 == SLclass_register_class (cl,
- SLANG_VOID_TYPE, /* any open slot */
- sizeof (_SLang_Struct_Type),
- SLANG_CLASS_TYPE_PTR))
- {
- /* FIXME: Priority=low */
- /* There is a memory leak here if this fails... */
- return -1;
- }
- /* Note: typecast from a user type struct type allowed but not the other
- * way.
- */
- if (-1 == SLclass_add_typecast (cl->cl_data_type, SLANG_STRUCT_TYPE, struct_typecast, 1))
- return -1;
-
- return 0;
-}
-
-static int
-struct_datatype_deref (unsigned char stype)
-{
- (void) stype;
-
- if (SLang_peek_at_stack () == SLANG_ARRAY_TYPE)
- {
- SLang_Array_Type *at;
- int status;
-
- if (-1 == SLang_pop_array_of_type (&at, SLANG_STRING_TYPE))
- return -1;
-
- status = SLstruct_create_struct (at->num_elements,
- (char **) at->data, NULL, NULL);
-
- SLang_free_array (at);
- return status;
- }
-
- SLang_push_integer (SLang_Num_Function_Args);
- return _SLstruct_define_struct ();
-}
-
-static int register_struct (void)
-{
- SLang_Class_Type *cl;
-
- if (NULL == (cl = SLclass_allocate_class ("Struct_Type")))
- return -1;
-
- (void) SLclass_set_destroy_function (cl, struct_destroy);
- (void) SLclass_set_push_function (cl, struct_push);
- cl->cl_dereference = struct_dereference;
- cl->cl_datatype_deref = struct_datatype_deref;
-
- cl->cl_foreach_open = struct_foreach_open;
- cl->cl_foreach_close = struct_foreach_close;
- cl->cl_foreach = struct_foreach;
-
- cl->cl_sget = struct_sget;
- cl->cl_sput = struct_sput;
-
- if (-1 == SLclass_register_class (cl, SLANG_STRUCT_TYPE, sizeof (_SLang_Struct_Type),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- return 0;
-}
-
-static void get_struct_field_names (_SLang_Struct_Type *s)
-{
- SLang_Array_Type *a;
- char **data;
- int i, nfields;
- _SLstruct_Field_Type *f;
-
- nfields = (int) s->nfields;
-
- if (NULL == (a = SLang_create_array (SLANG_STRING_TYPE, 0, NULL, &nfields, 1)))
- return;
-
- f = s->fields;
- data = (char **) a->data;
- for (i = 0; i < nfields; i++)
- {
- /* Since we are dealing with hashed strings, the next call should not
- * fail. If it does, the interpreter will handle it at some other
- * level.
- */
- data [i] = SLang_create_slstring (f[i].name);
- }
-
- SLang_push_array (a, 1);
-}
-
-static int push_struct_fields (_SLang_Struct_Type *s)
-{
- _SLstruct_Field_Type *f, *fmax;
- int num;
-
- f = s->fields;
- fmax = f + s->nfields;
-
- num = 0;
- while (fmax > f)
- {
- fmax--;
- if (-1 == _SLpush_slang_obj (&fmax->obj))
- break;
-
- num++;
- }
-
- return num;
-}
-
-/* Syntax: set_struct_field (s, name, value); */
-static void struct_set_field (void)
-{
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
- SLang_Object_Type obj;
- char *name;
-
- if (-1 == SLang_pop (&obj))
- return;
-
- if (-1 == SLang_pop_slstring (&name))
- {
- SLang_free_object (&obj);
- return;
- }
-
- if (-1 == _SLang_pop_struct (&s))
- {
- SLang_free_slstring (name);
- SLang_free_object (&obj);
- return;
- }
-
- if (NULL == (f = pop_field (s, name)))
- {
- _SLstruct_delete_struct (s);
- SLang_free_slstring (name);
- SLang_free_object (&obj);
- return;
- }
-
- SLang_free_object (&f->obj);
- f->obj = obj;
-
- _SLstruct_delete_struct (s);
- SLang_free_slstring (name);
-}
-
-/* Syntax: set_struct_fields (s, values....); */
-static void set_struct_fields (void)
-{
- unsigned int n;
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
-
- n = (unsigned int) SLang_Num_Function_Args;
-
- if (-1 == SLreverse_stack (n))
- return;
-
- n--;
- if (-1 == _SLang_pop_struct (&s))
- {
- SLdo_pop_n (n);
- return;
- }
-
- if (n > s->nfields)
- {
- SLdo_pop_n (n);
- SLang_verror (SL_INVALID_PARM, "Too many values for structure");
- _SLstruct_delete_struct (s);
- return;
- }
-
- f = s->fields;
- while (n > 0)
- {
- SLang_Object_Type obj;
-
- if (-1 == SLang_pop (&obj))
- break;
-
- SLang_free_object (&f->obj);
- f->obj = obj;
-
- f++;
- n--;
- }
-
- _SLstruct_delete_struct (s);
-}
-
-static void get_struct_field (char *name)
-{
- (void) struct_sget (0, name);
-}
-
-static int is_struct_type (void)
-{
- SLang_Object_Type obj;
- unsigned char type;
- int status;
-
- if (-1 == SLang_pop (&obj))
- return -1;
-
- type = obj.data_type;
- if (type == SLANG_STRUCT_TYPE)
- status = 1;
- else
- status = (NULL != _SLclass_get_class (type)->cl_struct_def);
- SLang_free_object (&obj);
- return status;
-}
-
-
-static SLang_Intrin_Fun_Type Struct_Table [] =
-{
- MAKE_INTRINSIC_1("get_struct_field_names", get_struct_field_names, SLANG_VOID_TYPE, SLANG_STRUCT_TYPE),
- MAKE_INTRINSIC_1("get_struct_field", get_struct_field, SLANG_VOID_TYPE, SLANG_STRING_TYPE),
- MAKE_INTRINSIC_1("_push_struct_field_values", push_struct_fields, SLANG_INT_TYPE, SLANG_STRUCT_TYPE),
- MAKE_INTRINSIC_0("set_struct_field", struct_set_field, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("set_struct_fields", set_struct_fields, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("is_struct_type", is_struct_type, SLANG_INT_TYPE),
- /* MAKE_INTRINSIC_I("_create_struct", create_struct, SLANG_VOID_TYPE), */
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int _SLstruct_init (void)
-{
- if ((-1 == SLadd_intrin_fun_table (Struct_Table, NULL))
- || (-1 == register_struct ()))
- return -1;
-
- return 0;
-}
-
-void _SLstruct_pop_args (int *np)
-{
- SLang_Array_Type *at;
- int i, n;
- _SLang_Struct_Type **data;
-
- n = *np;
-
- if (n < 0)
- {
- SLang_Error = SL_INVALID_PARM;
- return;
- }
-
- data = (_SLang_Struct_Type **) SLmalloc ((n + 1) * sizeof (_SLang_Struct_Type *));
- if (data == NULL)
- {
- SLdo_pop_n (n);
- return;
- }
-
- memset ((char *)data, 0, n * sizeof (_SLang_Struct_Type *));
-
- i = n;
- while (i > 0)
- {
- _SLang_Struct_Type *s;
- _SLstruct_Field_Type *f;
-
- i--;
-
- if (NULL == (s = allocate_struct (1)))
- goto return_error;
-
- data[i] = s;
- s->num_refs += 1; /* keeping a copy */
-
- f = s->fields;
- if (NULL == (f->name = SLang_create_slstring ("value")))
- goto return_error;
-
- if (-1 == SLang_pop (&f->obj))
- goto return_error;
- }
-
- if (NULL == (at = SLang_create_array (SLANG_STRUCT_TYPE, 0,
- (VOID_STAR) data, &n, 1)))
- goto return_error;
-
- (void) SLang_push_array (at, 1);
- return;
-
- return_error:
- for (i = 0; i < n; i++)
- {
- _SLang_Struct_Type *s;
-
- s = data[i];
- if (s != NULL)
- _SLstruct_delete_struct (s);
- }
-
- SLfree ((char *) data);
-}
-
-void _SLstruct_push_args (SLang_Array_Type *at)
-{
- _SLang_Struct_Type **sp;
- unsigned int num;
-
- if (at->data_type != SLANG_STRUCT_TYPE)
- {
- SLang_Error = SL_TYPE_MISMATCH;
- return;
- }
-
- sp = (_SLang_Struct_Type **) at->data;
- num = at->num_elements;
-
- while ((SLang_Error == 0) && (num > 0))
- {
- _SLang_Struct_Type *s;
-
- num--;
- if (NULL == (s = *sp++))
- {
- SLang_push_null ();
- continue;
- }
-
- /* I should check to see if the value field is present, but... */
- (void) _SLpush_slang_obj (&s->fields->obj);
- }
-}
diff --git a/mdk-stage1/slang/sltermin.c b/mdk-stage1/slang/sltermin.c
deleted file mode 100644
index f9c64f0b2..000000000
--- a/mdk-stage1/slang/sltermin.c
+++ /dev/null
@@ -1,1155 +0,0 @@
-/* This file contains enough terminfo reading capabilities sufficient for
- * the slang SLtt interface.
- */
-
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-/*
- * The majority of the comments found in the file were taken from the
- * term(4) man page on an SGI.
- */
-
-/* Short integers are stored in two 8-bit bytes. The first byte contains
- * the least significant 8 bits of the value, and the second byte contains
- * the most significant 8 bits. (Thus, the value represented is
- * 256*second+first.) The value -1 is represented by 0377,0377, and the
- * value -2 is represented by 0376,0377; other negative values are illegal.
- * The -1 generally means that a capability is missing from this terminal.
- * The -2 means that the capability has been cancelled in the terminfo
- * source and also is to be considered missing.
- */
-
-static int make_integer (unsigned char *buf)
-{
- register int lo, hi;
- lo = (int) *buf++; hi = (int) *buf;
- if (hi == 0377)
- {
- if (lo == 0377) return -1;
- if (lo == 0376) return -2;
- }
- return lo + 256 * hi;
-}
-
-/*
- * The compiled file is created from the source file descriptions of the
- * terminals (see the -I option of infocmp) by using the terminfo compiler,
- * tic, and read by the routine setupterm [see curses(3X).] The file is
- * divided into six parts in the following order: the header, terminal
- * names, boolean flags, numbers, strings, and string table.
- *
- * The header section begins the file. This section contains six short
- * integers in the format described below. These integers are (1) the magic
- * number (octal 0432); (2) the size, in bytes, of the names section; (3)
- * the number of bytes in the boolean section; (4) the number of short
- * integers in the numbers section; (5) the number of offsets (short
- * integers) in the strings section; (6) the size, in bytes, of the string
- * table.
- */
-
-#define MAGIC 0432
-
-/* In this structure, all char * fields are malloced EXCEPT if the
- * structure is SLTERMCAP. In that case, only terminal_names is malloced
- * and the other fields are pointers into it.
- */
-struct _SLterminfo_Type
-{
-#define SLTERMINFO 1
-#define SLTERMCAP 2
- unsigned int flags;
-
- unsigned int name_section_size;
- char *terminal_names;
-
- unsigned int boolean_section_size;
- unsigned char *boolean_flags;
-
- unsigned int num_numbers;
- unsigned char *numbers;
-
- unsigned int num_string_offsets;
- unsigned char *string_offsets;
-
- unsigned int string_table_size;
- char *string_table;
-
-};
-
-static char *tcap_getstr (char *, SLterminfo_Type *);
-static int tcap_getnum (char *, SLterminfo_Type *);
-static int tcap_getflag (char *, SLterminfo_Type *);
-static int tcap_getent (char *, SLterminfo_Type *);
-
-static FILE *open_terminfo (char *file, SLterminfo_Type *h)
-{
- FILE *fp;
- unsigned char buf[12];
-
- /* Alan Cox reported a security problem here if the application using the
- * library is setuid. So, I need to make sure open the file as a normal
- * user. Unfortunately, there does not appear to be a portable way of
- * doing this, so I am going to use 'setfsgid' and 'setfsuid', which
- * are not portable.
- *
- * I will also look into the use of setreuid, seteuid and setregid, setegid.
- * FIXME: Priority=medium
- */
- fp = fopen (file, "rb");
- if (fp == NULL) return NULL;
-
- if ((12 == fread ((char *) buf, 1, 12, fp) && (MAGIC == make_integer (buf))))
- {
- h->name_section_size = make_integer (buf + 2);
- h->boolean_section_size = make_integer (buf + 4);
- h->num_numbers = make_integer (buf + 6);
- h->num_string_offsets = make_integer (buf + 8);
- h->string_table_size = make_integer (buf + 10);
- }
- else
- {
- fclose (fp);
- fp = NULL;
- }
- return fp;
-}
-
-/*
- * The terminal names section comes next. It contains the first line of the
- * terminfo description, listing the various names for the terminal,
- * separated by the bar ( | ) character (see term(5)). The section is
- * terminated with an ASCII NUL character.
- */
-
-/* returns pointer to malloced space */
-static unsigned char *read_terminfo_section (FILE *fp, unsigned int size)
-{
- char *s;
-
- if (NULL == (s = (char *) SLmalloc (size))) return NULL;
- if (size != fread (s, 1, size, fp))
- {
- SLfree (s);
- return NULL;
- }
- return (unsigned char *) s;
-}
-
-static char *read_terminal_names (FILE *fp, SLterminfo_Type *t)
-{
- return t->terminal_names = (char *) read_terminfo_section (fp, t->name_section_size);
-}
-
-/*
- * The boolean flags have one byte for each flag. This byte is either 0 or
- * 1 as the flag is present or absent. The value of 2 means that the flag
- * has been cancelled. The capabilities are in the same order as the file
- * <term.h>.
- */
-
-static unsigned char *read_boolean_flags (FILE *fp, SLterminfo_Type *t)
-{
- /* Between the boolean section and the number section, a null byte is
- * inserted, if necessary, to ensure that the number section begins on an
- * even byte offset. All short integers are aligned on a short word
- * boundary.
- */
-
- unsigned int size = (t->name_section_size + t->boolean_section_size) % 2;
- size += t->boolean_section_size;
-
- return t->boolean_flags = read_terminfo_section (fp, size);
-}
-
-/*
- * The numbers section is similar to the boolean flags section. Each
- * capability takes up two bytes, and is stored as a short integer. If the
- * value represented is -1 or -2, the capability is taken to be missing.
- */
-
-static unsigned char *read_numbers (FILE *fp, SLterminfo_Type *t)
-{
- return t->numbers = read_terminfo_section (fp, 2 * t->num_numbers);
-}
-
-/* The strings section is also similar. Each capability is stored as a
- * short integer, in the format above. A value of -1 or -2 means the
- * capability is missing. Otherwise, the value is taken as an offset from
- * the beginning of the string table. Special characters in ^X or \c
- * notation are stored in their interpreted form, not the printing
- * representation. Padding information ($<nn>) and parameter information
- * (%x) are stored intact in uninterpreted form.
- */
-
-static unsigned char *read_string_offsets (FILE *fp, SLterminfo_Type *t)
-{
- return t->string_offsets = (unsigned char *) read_terminfo_section (fp, 2 * t->num_string_offsets);
-}
-
-/* The final section is the string table. It contains all the values of
- * string capabilities referenced in the string section. Each string is
- * null terminated.
- */
-
-static char *read_string_table (FILE *fp, SLterminfo_Type *t)
-{
- return t->string_table = (char *) read_terminfo_section (fp, t->string_table_size);
-}
-
-/*
- * Compiled terminfo(4) descriptions are placed under the directory
- * /usr/share/lib/terminfo. In order to avoid a linear search of a huge
- * UNIX system directory, a two-level scheme is used:
- * /usr/share/lib/terminfo/c/name where name is the name of the terminal,
- * and c is the first character of name. Thus, att4425 can be found in the
- * file /usr/share/lib/terminfo/a/att4425. Synonyms for the same terminal
- * are implemented by multiple links to the same compiled file.
- */
-
-#define MAX_TI_DIRS 7
-static char *Terminfo_Dirs [MAX_TI_DIRS] =
-{
- NULL, /* $HOME/.terminfo */
- NULL, /* $TERMINFO */
- "/usr/share/terminfo",
- "/usr/lib/terminfo",
- "/usr/share/lib/terminfo",
- "/etc/terminfo",
- "/usr/local/lib/terminfo"
-};
-
-SLterminfo_Type *_SLtt_tigetent (char *term)
-{
- char *tidir;
- int i;
- FILE *fp = NULL;
- char file[1024];
- static char home_ti [1024];
- char *home;
- SLterminfo_Type *ti;
-
- if (
- (term == NULL)
-#ifdef SLANG_UNTIC
- && (SLang_Untic_Terminfo_File == NULL)
-#endif
- )
- return NULL;
-
- if (NULL == (ti = (SLterminfo_Type *) SLmalloc (sizeof (SLterminfo_Type))))
- {
- return NULL;
- }
-
-#ifdef SLANG_UNTIC
- if (SLang_Untic_Terminfo_File != NULL)
- {
- fp = open_terminfo (SLang_Untic_Terminfo_File, ti);
- goto fp_open_label;
- }
- else
-#endif
- /* If we are on a termcap based system, use termcap */
- if (0 == tcap_getent (term, ti)) return ti;
-
- if (NULL != (home = getenv ("HOME")))
- {
- strncpy (home_ti, home, sizeof (home_ti) - 11);
- home_ti [sizeof(home_ti) - 11] = 0;
- strcat (home_ti, "/.terminfo");
- Terminfo_Dirs [0] = home_ti;
- }
-
- Terminfo_Dirs[1] = getenv ("TERMINFO");
- i = 0;
- while (i < MAX_TI_DIRS)
- {
- tidir = Terminfo_Dirs[i];
- if ((tidir != NULL)
- && (sizeof (file) > strlen (tidir) + 2 + strlen (term)))
- {
- sprintf (file, "%s/%c/%s", tidir, *term, term);
- if (NULL != (fp = open_terminfo (file, ti)))
- break;
- }
- i++;
- }
-#ifdef SLANG_UNTIC
- fp_open_label:
-#endif
-
- if (fp != NULL)
- {
- if (NULL != read_terminal_names (fp, ti))
- {
- if (NULL != read_boolean_flags (fp, ti))
- {
- if (NULL != read_numbers (fp, ti))
- {
- if (NULL != read_string_offsets (fp, ti))
- {
- if (NULL != read_string_table (fp, ti))
- {
- /* success */
- fclose (fp);
- ti->flags = SLTERMINFO;
- return ti;
- }
- SLfree ((char *)ti->string_offsets);
- }
- SLfree ((char *)ti->numbers);
- }
- SLfree ((char *)ti->boolean_flags);
- }
- SLfree ((char *)ti->terminal_names);
- }
- fclose (fp);
- }
-
- SLfree ((char *)ti);
- return NULL;
-}
-
-#ifdef SLANG_UNTIC
-# define UNTIC_COMMENT(x) ,x
-#else
-# define UNTIC_COMMENT(x)
-#endif
-
-typedef struct
-{
- char name[3];
- int offset;
-#ifdef SLANG_UNTIC
- char *comment;
-#endif
-}
-Tgetstr_Map_Type;
-
-/* I need to add: K1-5, %0-5(not important), @8, &8... */
-static Tgetstr_Map_Type Tgetstr_Map [] =
-{
- {"!1", 212 UNTIC_COMMENT("shifted key")},
- {"!2", 213 UNTIC_COMMENT("shifted key")},
- {"!3", 214 UNTIC_COMMENT("shifted key")},
- {"#1", 198 UNTIC_COMMENT("shifted key")},
- {"#2", 199 UNTIC_COMMENT("Key S-Home")},
- {"#3", 200 UNTIC_COMMENT("Key S-Insert")},
- {"#4", 201 UNTIC_COMMENT("Key S-Left")},
- {"%0", 177 UNTIC_COMMENT("redo key")},
- {"%1", 168 UNTIC_COMMENT("help key")},
- {"%2", 169 UNTIC_COMMENT("mark key")},
- {"%3", 170 UNTIC_COMMENT("message key")},
- {"%4", 171 UNTIC_COMMENT("move key")},
- {"%5", 172 UNTIC_COMMENT("next key")},
- {"%6", 173 UNTIC_COMMENT("open key")},
- {"%7", 174 UNTIC_COMMENT("options key")},
- {"%8", 175 UNTIC_COMMENT("previous key")},
- {"%9", 176 UNTIC_COMMENT("print key")},
- {"%a", 202 UNTIC_COMMENT("shifted key")},
- {"%b", 203 UNTIC_COMMENT("shifted key")},
- {"%c", 204 UNTIC_COMMENT("Key S-Next")},
- {"%d", 205 UNTIC_COMMENT("shifted key")},
- {"%e", 206 UNTIC_COMMENT("Key S-Previous")},
- {"%f", 207 UNTIC_COMMENT("shifted key")},
- {"%g", 208 UNTIC_COMMENT("shifted key")},
- {"%h", 209 UNTIC_COMMENT("shifted key")},
- {"%i", 210 UNTIC_COMMENT("Key S-Right")},
- {"%j", 211 UNTIC_COMMENT("shifted key")},
- {"&0", 187 UNTIC_COMMENT("shifted key")},
- {"&1", 178 UNTIC_COMMENT("reference key")},
- {"&2", 179 UNTIC_COMMENT("refresh key")},
- {"&3", 180 UNTIC_COMMENT("replace key")},
- {"&4", 181 UNTIC_COMMENT("restart key")},
- {"&5", 182 UNTIC_COMMENT("resume key")},
- {"&6", 183 UNTIC_COMMENT("save key")},
- {"&7", 184 UNTIC_COMMENT("suspend key")},
- {"&8", 185 UNTIC_COMMENT("undo key")},
- {"&9", 186 UNTIC_COMMENT("shifted key")},
- {"*0", 197 UNTIC_COMMENT("shifted key")},
- {"*1", 188 UNTIC_COMMENT("shifted key")},
- {"*2", 189 UNTIC_COMMENT("shifted key")},
- {"*3", 190 UNTIC_COMMENT("shifted key")},
- {"*4", 191 UNTIC_COMMENT("Key S-Delete")},
- {"*5", 192 UNTIC_COMMENT("shifted key")},
- {"*6", 193 UNTIC_COMMENT("select key")},
- {"*7", 194 UNTIC_COMMENT("Key S-End")},
- {"*8", 195 UNTIC_COMMENT("shifted key")},
- {"*9", 196 UNTIC_COMMENT("shifted key")},
- {"@0", 167 UNTIC_COMMENT("find key")},
- {"@1", 158 UNTIC_COMMENT("begin key")},
- {"@2", 159 UNTIC_COMMENT("cancel key")},
- {"@3", 160 UNTIC_COMMENT("close key")},
- {"@4", 161 UNTIC_COMMENT("command key")},
- {"@5", 162 UNTIC_COMMENT("copy key")},
- {"@6", 163 UNTIC_COMMENT("create key")},
- {"@7", 164 UNTIC_COMMENT("Key End")},
- {"@8", 165 UNTIC_COMMENT("enter/send key")},
- {"@9", 166 UNTIC_COMMENT("exit key")},
- {"AB", 360 UNTIC_COMMENT("set ANSI color background")},
- {"AF", 359 UNTIC_COMMENT("set ANSI color foreground")},
- {"AL", 110 UNTIC_COMMENT("parm_insert_line")},
- {"CC", 9 UNTIC_COMMENT("terminal settable cmd character in prototype !?")},
- {"CM", 15 UNTIC_COMMENT("memory relative cursor addressing")},
- {"CW", 277 UNTIC_COMMENT("define a window #1 from #2, #3 to #4, #5")},
- {"DC", 105 UNTIC_COMMENT("delete #1 chars")},
- {"DI", 280 UNTIC_COMMENT("dial number #1")},
- {"DK", 275 UNTIC_COMMENT("display clock at (#1,#2)")},
- {"DL", 106 UNTIC_COMMENT("parm_delete_line")},
- {"DO", 107 UNTIC_COMMENT("down #1 lines")},
- {"F1", 216 UNTIC_COMMENT("key_f11")},
- {"F2", 217 UNTIC_COMMENT("key_f12")},
- {"F3", 218 UNTIC_COMMENT("key_f13")},
- {"F4", 219 UNTIC_COMMENT("key_f14")},
- {"F5", 220 UNTIC_COMMENT("key_f15")},
- {"F6", 221 UNTIC_COMMENT("key_f16")},
- {"F7", 222 UNTIC_COMMENT("key_f17")},
- {"F8", 223 UNTIC_COMMENT("key_f18")},
- {"F9", 224 UNTIC_COMMENT("key_f19")},
- {"FA", 225 UNTIC_COMMENT("key_f20")},
- {"FB", 226 UNTIC_COMMENT("F21 function key")},
- {"FC", 227 UNTIC_COMMENT("F22 function key")},
- {"FD", 228 UNTIC_COMMENT("F23 function key")},
- {"FE", 229 UNTIC_COMMENT("F24 function key")},
- {"FF", 230 UNTIC_COMMENT("F25 function key")},
- {"FG", 231 UNTIC_COMMENT("F26 function key")},
- {"FH", 232 UNTIC_COMMENT("F27 function key")},
- {"FI", 233 UNTIC_COMMENT("F28 function key")},
- {"FJ", 234 UNTIC_COMMENT("F29 function key")},
- {"FK", 235 UNTIC_COMMENT("F30 function key")},
- {"FL", 236 UNTIC_COMMENT("F31 function key")},
- {"FM", 237 UNTIC_COMMENT("F32 function key")},
- {"FN", 238 UNTIC_COMMENT("F33 function key")},
- {"FO", 239 UNTIC_COMMENT("F34 function key")},
- {"FP", 240 UNTIC_COMMENT("F35 function key")},
- {"FQ", 241 UNTIC_COMMENT("F36 function key")},
- {"FR", 242 UNTIC_COMMENT("F37 function key")},
- {"FS", 243 UNTIC_COMMENT("F38 function key")},
- {"FT", 244 UNTIC_COMMENT("F39 function key")},
- {"FU", 245 UNTIC_COMMENT("F40 function key")},
- {"FV", 246 UNTIC_COMMENT("F41 function key")},
- {"FW", 247 UNTIC_COMMENT("F42 function key")},
- {"FX", 248 UNTIC_COMMENT("F43 function key")},
- {"FY", 249 UNTIC_COMMENT("F44 function key")},
- {"FZ", 250 UNTIC_COMMENT("F45 function key")},
- {"Fa", 251 UNTIC_COMMENT("F46 function key")},
- {"Fb", 252 UNTIC_COMMENT("F47 function key")},
- {"Fc", 253 UNTIC_COMMENT("F48 function key")},
- {"Fd", 254 UNTIC_COMMENT("F49 function key")},
- {"Fe", 255 UNTIC_COMMENT("F50 function key")},
- {"Ff", 256 UNTIC_COMMENT("F51 function key")},
- {"Fg", 257 UNTIC_COMMENT("F52 function key")},
- {"Fh", 258 UNTIC_COMMENT("F53 function key")},
- {"Fi", 259 UNTIC_COMMENT("F54 function key")},
- {"Fj", 260 UNTIC_COMMENT("F55 function key")},
- {"Fk", 261 UNTIC_COMMENT("F56 function key")},
- {"Fl", 262 UNTIC_COMMENT("F57 function key")},
- {"Fm", 263 UNTIC_COMMENT("F58 function key")},
- {"Fn", 264 UNTIC_COMMENT("F59 function key")},
- {"Fo", 265 UNTIC_COMMENT("F60 function key")},
- {"Fp", 266 UNTIC_COMMENT("F61 function key")},
- {"Fq", 267 UNTIC_COMMENT("F62 function key")},
- {"Fr", 268 UNTIC_COMMENT("F63 function key")},
- {"G1", 400 UNTIC_COMMENT("single upper right")},
- {"G2", 398 UNTIC_COMMENT("single upper left")},
- {"G3", 399 UNTIC_COMMENT("single lower left")},
- {"G4", 401 UNTIC_COMMENT("single lower right")},
- {"GC", 408 UNTIC_COMMENT("single intersection")},
- {"GD", 405 UNTIC_COMMENT("tee pointing down")},
- {"GH", 406 UNTIC_COMMENT("single horizontal line")},
- {"GL", 403 UNTIC_COMMENT("tee pointing left")},
- {"GR", 402 UNTIC_COMMENT("tee pointing right")},
- {"GU", 404 UNTIC_COMMENT("tee pointing up")},
- {"GV", 407 UNTIC_COMMENT("single vertical line")},
- {"Gm", 358 UNTIC_COMMENT("Curses should get button events")},
- {"HU", 279 UNTIC_COMMENT("hang-up phone")},
- {"IC", 108 UNTIC_COMMENT("insert #1 chars")},
- {"Ic", 299 UNTIC_COMMENT("initialize color #1 to (#2,#3,#4)")},
- {"Ip", 300 UNTIC_COMMENT("Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)")},
- {"K1", 139 UNTIC_COMMENT("upper left of keypad")},
- {"K2", 141 UNTIC_COMMENT("center of keypad")},
- {"K3", 140 UNTIC_COMMENT("upper right of keypad")},
- {"K4", 142 UNTIC_COMMENT("lower left of keypad")},
- {"K5", 143 UNTIC_COMMENT("lower right of keypad")},
- {"Km", 355 UNTIC_COMMENT("Mouse event has occurred")},
- {"LE", 111 UNTIC_COMMENT("move #1 chars to the left")},
- {"LF", 157 UNTIC_COMMENT("turn off soft labels")},
- {"LO", 156 UNTIC_COMMENT("turn on soft labels")},
- {"Lf", 273 UNTIC_COMMENT("label format")},
- {"MC", 270 UNTIC_COMMENT("clear right and left soft margins")},
- {"ML", 271 UNTIC_COMMENT("set left soft margin")},
- {"ML", 368 UNTIC_COMMENT("Set both left and right margins to #1, #2")},
- {"MR", 272 UNTIC_COMMENT("set right soft margin")},
- {"MT", 369 UNTIC_COMMENT("Sets both top and bottom margins to #1, #2")},
- {"Mi", 356 UNTIC_COMMENT("Mouse status information")},
- {"PA", 285 UNTIC_COMMENT("pause for 2-3 seconds")},
- {"PU", 283 UNTIC_COMMENT("select pulse dialling")},
- {"QD", 281 UNTIC_COMMENT("dial number #1 without checking")},
- {"RA", 152 UNTIC_COMMENT("turn off automatic margins")},
- {"RC", 276 UNTIC_COMMENT("remove clock")},
- {"RF", 215 UNTIC_COMMENT("send next input char (for ptys)")},
- {"RI", 112 UNTIC_COMMENT("parm_right_cursor")},
- {"RQ", 357 UNTIC_COMMENT("Request mouse position")},
- {"RX", 150 UNTIC_COMMENT("turn off xon/xoff handshaking")},
- {"S1", 378 UNTIC_COMMENT("Display PC character")},
- {"S2", 379 UNTIC_COMMENT("Enter PC character display mode")},
- {"S3", 380 UNTIC_COMMENT("Exit PC character display mode")},
- {"S4", 381 UNTIC_COMMENT("Enter PC scancode mode")},
- {"S5", 382 UNTIC_COMMENT("Exit PC scancode mode")},
- {"S6", 383 UNTIC_COMMENT("PC terminal options")},
- {"S7", 384 UNTIC_COMMENT("Escape for scancode emulation")},
- {"S8", 385 UNTIC_COMMENT("Alternate escape for scancode emulation")},
- {"SA", 151 UNTIC_COMMENT("turn on automatic margins")},
- {"SC", 274 UNTIC_COMMENT("set clock, #1 hrs #2 mins #3 secs")},
- {"SF", 109 UNTIC_COMMENT("scroll forward #1 lines")},
- {"SR", 113 UNTIC_COMMENT("scroll back #1 lines")},
- {"SX", 149 UNTIC_COMMENT("turn on xon/xoff handshaking")},
- {"Sb", 303 UNTIC_COMMENT("set background (color)")},
- {"Sf", 302 UNTIC_COMMENT("set foreground (color)")},
- {"TO", 282 UNTIC_COMMENT("select touch tone dialing")},
- {"UP", 114 UNTIC_COMMENT("up #1 lines")},
- {"WA", 286 UNTIC_COMMENT("wait for dial-tone")},
- {"WG", 278 UNTIC_COMMENT("go to window #1")},
- {"XF", 154 UNTIC_COMMENT("XOFF character")},
- {"XN", 153 UNTIC_COMMENT("XON character")},
- {"Xh", 386 UNTIC_COMMENT("Enter horizontal highlight mode")},
- {"Xl", 387 UNTIC_COMMENT("Enter left highlight mode")},
- {"Xo", 388 UNTIC_COMMENT("Enter low highlight mode")},
- {"Xr", 389 UNTIC_COMMENT("Enter right highlight mode")},
- {"Xt", 390 UNTIC_COMMENT("Enter top highlight mode")},
- {"Xv", 391 UNTIC_COMMENT("Enter vertical highlight mode")},
- {"Xy", 370 UNTIC_COMMENT("Repeat bit image cell #1 #2 times")},
- {"YZ", 377 UNTIC_COMMENT("Set page length to #1 lines")},
- {"Yv", 372 UNTIC_COMMENT("Move to beginning of same row")},
- {"Yw", 373 UNTIC_COMMENT("Give name for color #1")},
- {"Yx", 374 UNTIC_COMMENT("Define rectangualar bit image region")},
- {"Yy", 375 UNTIC_COMMENT("End a bit-image region")},
- {"Yz", 376 UNTIC_COMMENT("Change to ribbon color #1")},
- {"ZA", 304 UNTIC_COMMENT("Change number of characters per inch")},
- {"ZB", 305 UNTIC_COMMENT("Change number of lines per inch")},
- {"ZC", 306 UNTIC_COMMENT("Change horizontal resolution")},
- {"ZD", 307 UNTIC_COMMENT("Change vertical resolution")},
- {"ZE", 308 UNTIC_COMMENT("Define a character")},
- {"ZF", 309 UNTIC_COMMENT("Enter double-wide mode")},
- {"ZG", 310 UNTIC_COMMENT("Enter draft-quality mode")},
- {"ZH", 311 UNTIC_COMMENT("Enter italic mode")},
- {"ZI", 312 UNTIC_COMMENT("Start leftward carriage motion")},
- {"ZJ", 313 UNTIC_COMMENT("Start micro-motion mode")},
- {"ZK", 314 UNTIC_COMMENT("Enter NLQ mode")},
- {"ZL", 315 UNTIC_COMMENT("Wnter normal-quality mode")},
- {"ZM", 316 UNTIC_COMMENT("Enter shadow-print mode")},
- {"ZN", 317 UNTIC_COMMENT("Enter subscript mode")},
- {"ZO", 318 UNTIC_COMMENT("Enter superscript mode")},
- {"ZP", 319 UNTIC_COMMENT("Start upward carriage motion")},
- {"ZQ", 320 UNTIC_COMMENT("End double-wide mode")},
- {"ZR", 321 UNTIC_COMMENT("End italic mode")},
- {"ZS", 322 UNTIC_COMMENT("End left-motion mode")},
- {"ZT", 323 UNTIC_COMMENT("End micro-motion mode")},
- {"ZU", 324 UNTIC_COMMENT("End shadow-print mode")},
- {"ZV", 325 UNTIC_COMMENT("End subscript mode")},
- {"ZW", 326 UNTIC_COMMENT("End superscript mode")},
- {"ZX", 327 UNTIC_COMMENT("End reverse character motion")},
- {"ZY", 328 UNTIC_COMMENT("Like column_address in micro mode")},
- {"ZZ", 329 UNTIC_COMMENT("Like cursor_down in micro mode")},
- {"Za", 330 UNTIC_COMMENT("Like cursor_left in micro mode")},
- {"Zb", 331 UNTIC_COMMENT("Like cursor_right in micro mode")},
- {"Zc", 332 UNTIC_COMMENT("Like row_address in micro mode")},
- {"Zd", 333 UNTIC_COMMENT("Like cursor_up in micro mode")},
- {"Ze", 334 UNTIC_COMMENT("Match software bits to print-head pins")},
- {"Zf", 335 UNTIC_COMMENT("Like parm_down_cursor in micro mode")},
- {"Zg", 336 UNTIC_COMMENT("Like parm_left_cursor in micro mode")},
- {"Zh", 337 UNTIC_COMMENT("Like parm_right_cursor in micro mode")},
- {"Zi", 338 UNTIC_COMMENT("Like parm_up_cursor in micro mode")},
- {"Zj", 339 UNTIC_COMMENT("Select character set")},
- {"Zk", 340 UNTIC_COMMENT("Set bottom margin at current line")},
- {"Zl", 341 UNTIC_COMMENT("Set bottom margin at line #1 or #2 lines from bottom")},
- {"Zm", 342 UNTIC_COMMENT("Set left (right) margin at column #1 (#2)")},
- {"Zn", 343 UNTIC_COMMENT("Set right margin at column #1")},
- {"Zo", 344 UNTIC_COMMENT("Set top margin at current line")},
- {"Zp", 345 UNTIC_COMMENT("Set top (bottom) margin at row #1 (#2)")},
- {"Zq", 346 UNTIC_COMMENT("Start printing bit image braphics")},
- {"Zr", 347 UNTIC_COMMENT("Start character set definition")},
- {"Zs", 348 UNTIC_COMMENT("Stop printing bit image graphics")},
- {"Zt", 349 UNTIC_COMMENT("End definition of character aet")},
- {"Zu", 350 UNTIC_COMMENT("List of subscriptable characters")},
- {"Zv", 351 UNTIC_COMMENT("List of superscriptable characters")},
- {"Zw", 352 UNTIC_COMMENT("Printing any of these chars causes CR")},
- {"Zx", 353 UNTIC_COMMENT("No motion for subsequent character")},
- {"Zy", 354 UNTIC_COMMENT("List of character set names")},
- {"Zz", 371 UNTIC_COMMENT("Move to next row of the bit image")},
- {"ac", 146 UNTIC_COMMENT("acs_chars")},
- {"ae", 38 UNTIC_COMMENT("exit_alt_charset_mode")},
- {"al", 53 UNTIC_COMMENT("insert line")},
- {"as", 25 UNTIC_COMMENT("enter_alt_charset_mode")},
- {"bc", 395 UNTIC_COMMENT("move left, if not ^H")},
- {"bl", 1 UNTIC_COMMENT("audible signal (bell)")},
- {"bt", 0 UNTIC_COMMENT("back tab")},
- {"bx", 411 UNTIC_COMMENT("box chars primary set")},
- {"cb", 269 UNTIC_COMMENT("Clear to beginning of line")},
- {"cd", 7 UNTIC_COMMENT("clear to end of screen")},
- {"ce", 6 UNTIC_COMMENT("clr_eol")},
- {"ch", 8 UNTIC_COMMENT("horizontal position #1, absolute")},
- {"ci", 363 UNTIC_COMMENT("Init sequence for multiple codesets")},
- {"cl", 5 UNTIC_COMMENT("clear screen and home cursor")},
- {"cm", 10 UNTIC_COMMENT("move to row #1 columns #2")},
- {"cr", 2 UNTIC_COMMENT("carriage return")},
- {"cs", 3 UNTIC_COMMENT("change region to line #1 to line #2")},
- {"ct", 4 UNTIC_COMMENT("clear all tab stops")},
- {"cv", 127 UNTIC_COMMENT("vertical position #1 absolute")},
- {"dc", 21 UNTIC_COMMENT("delete character")},
- {"dl", 22 UNTIC_COMMENT("delete line")},
- {"dm", 29 UNTIC_COMMENT("enter delete mode")},
- {"do", 11 UNTIC_COMMENT("down one line")},
- {"ds", 23 UNTIC_COMMENT("disable status line")},
- {"dv", 362 UNTIC_COMMENT("Indicate language/codeset support")},
- {"eA", 155 UNTIC_COMMENT("enable alternate char set")},
- {"ec", 37 UNTIC_COMMENT("erase #1 characters")},
- {"ed", 41 UNTIC_COMMENT("end delete mode")},
- {"ei", 42 UNTIC_COMMENT("exit insert mode")},
- {"ff", 46 UNTIC_COMMENT("hardcopy terminal page eject")},
- {"fh", 284 UNTIC_COMMENT("flash switch hook")},
- {"fs", 47 UNTIC_COMMENT("return from status line")},
- {"hd", 24 UNTIC_COMMENT("half a line down")},
- {"ho", 12 UNTIC_COMMENT("home cursor (if no cup)")},
- {"hu", 137 UNTIC_COMMENT("half a line up")},
- {"i1", 48 UNTIC_COMMENT("initialization string")},
- {"i2", 392 UNTIC_COMMENT("secondary initialization string")},
- {"i3", 50 UNTIC_COMMENT("initialization string")},
- {"iP", 138 UNTIC_COMMENT("path name of program for initialization")},
- {"ic", 52 UNTIC_COMMENT("insert character")},
- {"if", 51 UNTIC_COMMENT("name of initialization file")},
- {"im", 31 UNTIC_COMMENT("enter insert mode")},
- {"ip", 54 UNTIC_COMMENT("insert padding after inserted character")},
- {"is", 49 UNTIC_COMMENT("initialization string")},
- {"k0", 65 UNTIC_COMMENT("F0 function key")},
- {"k1", 66 UNTIC_COMMENT("F1 function key")},
- {"k2", 68 UNTIC_COMMENT("F2 function key")},
- {"k3", 69 UNTIC_COMMENT("F3 function key")},
- {"k4", 70 UNTIC_COMMENT("F4 function key")},
- {"k5", 71 UNTIC_COMMENT("F5 function key")},
- {"k6", 72 UNTIC_COMMENT("F6 function key")},
- {"k7", 73 UNTIC_COMMENT("F7 function key")},
- {"k8", 74 UNTIC_COMMENT("F8 fucntion key")},
- {"k9", 75 UNTIC_COMMENT("F9 function key")},
- {"k;", 67 UNTIC_COMMENT("F10 function key")},
- {"kA", 78 UNTIC_COMMENT("insert-line key")},
- {"kB", 148 UNTIC_COMMENT("back-tab key")},
- {"kC", 57 UNTIC_COMMENT("clear-screen or erase key")},
- {"kD", 59 UNTIC_COMMENT("delete-character key")},
- {"kE", 63 UNTIC_COMMENT("clear-to-end-of-line key")},
- {"kF", 84 UNTIC_COMMENT("scroll-forward key")},
- {"kH", 80 UNTIC_COMMENT("last-line key")},
- {"kI", 77 UNTIC_COMMENT("insert-character key")},
- {"kL", 60 UNTIC_COMMENT("delete-line key")},
- {"kM", 62 UNTIC_COMMENT("sent by rmir or smir in insert mode")},
- {"kN", 81 UNTIC_COMMENT("next-page key")},
- {"kP", 82 UNTIC_COMMENT("prev-page key")},
- {"kR", 85 UNTIC_COMMENT("scroll-backward key")},
- {"kS", 64 UNTIC_COMMENT("clear-to-end-of-screen key")},
- {"kT", 86 UNTIC_COMMENT("set-tab key")},
- {"ka", 56 UNTIC_COMMENT("clear-all-tabs key")},
- {"kb", 55 UNTIC_COMMENT("backspace key")},
- {"kd", 61 UNTIC_COMMENT("down-arrow key")},
- {"ke", 88 UNTIC_COMMENT("leave 'keyboard_transmit' mode")},
- {"kh", 76 UNTIC_COMMENT("home key")},
- {"kl", 79 UNTIC_COMMENT("left-arrow key")},
- {"ko", 396 UNTIC_COMMENT("list of self-mapped keycaps")},
- {"kr", 83 UNTIC_COMMENT("right-arrow key")},
- {"ks", 89 UNTIC_COMMENT("enter 'keyboard_transmit' mode")},
- {"kt", 58 UNTIC_COMMENT("clear-tab key")},
- {"ku", 87 UNTIC_COMMENT("up-arrow key")},
- {"l0", 90 UNTIC_COMMENT("label on function key f0 if not f0")},
- {"l1", 91 UNTIC_COMMENT("label on function key f1 if not f1")},
- {"l2", 93 UNTIC_COMMENT("label on function key f2 if not f2")},
- {"l3", 94 UNTIC_COMMENT("label on function key f3 if not f3")},
- {"l4", 95 UNTIC_COMMENT("label on function key f4 if not f4")},
- {"l5", 96 UNTIC_COMMENT("lable on function key f5 if not f5")},
- {"l6", 97 UNTIC_COMMENT("label on function key f6 if not f6")},
- {"l7", 98 UNTIC_COMMENT("label on function key f7 if not f7")},
- {"l8", 99 UNTIC_COMMENT("label on function key f8 if not f8")},
- {"l9", 100 UNTIC_COMMENT("label on function key f9 if not f9")},
- {"la", 92 UNTIC_COMMENT("label on function key f10 if not f10")},
- {"le", 14 UNTIC_COMMENT("move left one space")},
- {"ll", 18 UNTIC_COMMENT("last line, first column (if no cup)")},
- {"ma", 397 UNTIC_COMMENT("map arrow keys rogue(1) motion keys")},
- {"mb", 26 UNTIC_COMMENT("turn on blinking")},
- {"md", 27 UNTIC_COMMENT("turn on bold (extra bright) mode")},
- {"me", 39 UNTIC_COMMENT("turn off all attributes")},
- {"mh", 30 UNTIC_COMMENT("turn on half-bright mode")},
- {"mk", 32 UNTIC_COMMENT("turn on blank mode (characters invisible)")},
- {"ml", 409 UNTIC_COMMENT("memory lock above")},
- {"mm", 102 UNTIC_COMMENT("turn on meta mode (8th-bit on)")},
- {"mo", 101 UNTIC_COMMENT("turn off meta mode")},
- {"mp", 33 UNTIC_COMMENT("turn on protected mode")},
- {"mr", 34 UNTIC_COMMENT("turn on reverse video mode")},
- {"mu", 410 UNTIC_COMMENT("memory unlock")},
- {"nd", 17 UNTIC_COMMENT("move right one space")},
- {"nl", 394 UNTIC_COMMENT("use to move down")},
- {"nw", 103 UNTIC_COMMENT("newline (behave like cr followed by lf)")},
- {"oc", 298 UNTIC_COMMENT("Set all color pairs to the original ones")},
- {"op", 297 UNTIC_COMMENT("Set default pair to its original value")},
- {"pO", 144 UNTIC_COMMENT("turn on printer for #1 bytes")},
- {"pc", 104 UNTIC_COMMENT("padding char (instead of null)")},
- {"pf", 119 UNTIC_COMMENT("turn off printer")},
- {"pk", 115 UNTIC_COMMENT("program function key #1 to type string #2")},
- {"pl", 116 UNTIC_COMMENT("program function key #1 to execute string #2")},
- {"pn", 147 UNTIC_COMMENT("program label #1 to show string #2")},
- {"po", 120 UNTIC_COMMENT("turn on printer")},
- {"ps", 118 UNTIC_COMMENT("print contents of screen")},
- {"px", 117 UNTIC_COMMENT("program function key #1 to transmit string #2")},
- {"r1", 122 UNTIC_COMMENT("reset string")},
- {"r2", 123 UNTIC_COMMENT("reset string")},
- {"r3", 124 UNTIC_COMMENT("reset string")},
- {"rP", 145 UNTIC_COMMENT("like ip but when in insert mode")},
- {"rc", 126 UNTIC_COMMENT("restore cursor to last position of sc")},
- {"rf", 125 UNTIC_COMMENT("name of reset file")},
- {"rp", 121 UNTIC_COMMENT("repeat char #1 #2 times")},
- {"rs", 393 UNTIC_COMMENT("terminal reset string")},
- {"s0", 364 UNTIC_COMMENT("Shift to code set 0 (EUC set 0, ASCII)")},
- {"s1", 365 UNTIC_COMMENT("Shift to code set 1")},
- {"s2", 366 UNTIC_COMMENT("Shift to code set 2")},
- {"s3", 367 UNTIC_COMMENT("Shift to code set 3")},
- {"sa", 131 UNTIC_COMMENT("define video attributes #1-#9 (PG9)")},
- {"sc", 128 UNTIC_COMMENT("save current cursor position")},
- {"se", 43 UNTIC_COMMENT("exit standout mode")},
- {"sf", 129 UNTIC_COMMENT("scroll text up")},
- {"so", 35 UNTIC_COMMENT("begin standout mode")},
- {"sp", 301 UNTIC_COMMENT("Set current color pair to #1")},
- {"sr", 130 UNTIC_COMMENT("scroll text down")},
- {"st", 132 UNTIC_COMMENT("set a tab in every row, current columns")},
- {"ta", 134 UNTIC_COMMENT("tab to next 8-space hardware tab stop")},
- {"te", 40 UNTIC_COMMENT("strings to end programs using cup")},
- {"ti", 28 UNTIC_COMMENT("string to start programs using cup")},
- {"ts", 135 UNTIC_COMMENT("move to status line")},
- {"u0", 287 UNTIC_COMMENT("User string #0")},
- {"u1", 288 UNTIC_COMMENT("User string #1")},
- {"u2", 289 UNTIC_COMMENT("User string #2")},
- {"u3", 290 UNTIC_COMMENT("User string #3")},
- {"u4", 291 UNTIC_COMMENT("User string #4")},
- {"u5", 292 UNTIC_COMMENT("User string #5")},
- {"u6", 293 UNTIC_COMMENT("User string #6")},
- {"u7", 294 UNTIC_COMMENT("User string #7")},
- {"u8", 295 UNTIC_COMMENT("User string #8")},
- {"u9", 296 UNTIC_COMMENT("User string #9")},
- {"uc", 136 UNTIC_COMMENT("underline char and move past it")},
- {"ue", 44 UNTIC_COMMENT("exit underline mode")},
- {"up", 19 UNTIC_COMMENT("up one line")},
- {"us", 36 UNTIC_COMMENT("begin underline mode")},
- {"vb", 45 UNTIC_COMMENT("visible bell (may not move cursor)")},
- {"ve", 16 UNTIC_COMMENT("make cursor appear normal (undo civis/cvvis)")},
- {"vi", 13 UNTIC_COMMENT("make cursor invisible")},
- {"vs", 20 UNTIC_COMMENT("make cursor very visible")},
- {"wi", 133 UNTIC_COMMENT("current window is lines #1-#2 cols #3-#4")},
- {"xl", 361 UNTIC_COMMENT("Program function key #1 to type string #2 and show string #3")},
- {"", -1 UNTIC_COMMENT(NULL)}
-};
-
-static int compute_cap_offset (char *cap, SLterminfo_Type *t, Tgetstr_Map_Type *map, unsigned int max_ofs)
-{
- char cha, chb;
-
- (void) t;
- cha = *cap++; chb = *cap;
-
- while (*map->name != 0)
- {
- if ((cha == *map->name) && (chb == *(map->name + 1)))
- {
- if (map->offset >= (int) max_ofs) return -1;
- return map->offset;
- }
- map++;
- }
- return -1;
-}
-
-char *_SLtt_tigetstr (SLterminfo_Type *t, char *cap)
-{
- int offset;
-
- if (t == NULL)
- return NULL;
-
- if (t->flags == SLTERMCAP) return tcap_getstr (cap, t);
-
- offset = compute_cap_offset (cap, t, Tgetstr_Map, t->num_string_offsets);
- if (offset < 0) return NULL;
- offset = make_integer (t->string_offsets + 2 * offset);
- if (offset < 0) return NULL;
- return t->string_table + offset;
-}
-
-static Tgetstr_Map_Type Tgetnum_Map[] =
-{
- {"BT", 30 UNTIC_COMMENT("number of buttons on mouse")},
- {"Co", 13 UNTIC_COMMENT("maximum numbers of colors on screen")},
- {"MW", 12 UNTIC_COMMENT("maxumum number of defineable windows")},
- {"NC", 15 UNTIC_COMMENT("video attributes that can't be used with colors")},
- {"Nl", 8 UNTIC_COMMENT("number of labels on screen")},
- {"Ya", 16 UNTIC_COMMENT("numbers of bytes buffered before printing")},
- {"Yb", 17 UNTIC_COMMENT("spacing of pins vertically in pins per inch")},
- {"Yc", 18 UNTIC_COMMENT("spacing of dots horizontally in dots per inch")},
- {"Yd", 19 UNTIC_COMMENT("maximum value in micro_..._address")},
- {"Ye", 20 UNTIC_COMMENT("maximum value in parm_..._micro")},
- {"Yf", 21 UNTIC_COMMENT("character size when in micro mode")},
- {"Yg", 22 UNTIC_COMMENT("line size when in micro mode")},
- {"Yh", 23 UNTIC_COMMENT("numbers of pins in print-head")},
- {"Yi", 24 UNTIC_COMMENT("horizontal resolution in units per line")},
- {"Yj", 25 UNTIC_COMMENT("vertical resolution in units per line")},
- {"Yk", 26 UNTIC_COMMENT("horizontal resolution in units per inch")},
- {"Yl", 27 UNTIC_COMMENT("vertical resolution in units per inch")},
- {"Ym", 28 UNTIC_COMMENT("print rate in chars per second")},
- {"Yn", 29 UNTIC_COMMENT("character step size when in double wide mode")},
- {"Yo", 31 UNTIC_COMMENT("number of passed for each bit-image row")},
- {"Yp", 32 UNTIC_COMMENT("type of bit-image device")},
- {"co", 0 UNTIC_COMMENT("number of columns in aline")},
- {"dB", 36 UNTIC_COMMENT("padding required for ^H")},
- {"dC", 34 UNTIC_COMMENT("pad needed for CR")},
- {"dN", 35 UNTIC_COMMENT("pad needed for LF")},
- {"dT", 37 UNTIC_COMMENT("padding required for ^I")},
- {"it", 1 UNTIC_COMMENT("tabs initially every # spaces")},
- {"kn", 38 UNTIC_COMMENT("count of function keys")},
- {"lh", 9 UNTIC_COMMENT("rows in each label")},
- {"li", 2 UNTIC_COMMENT("number of lines on screen or page")},
- {"lm", 3 UNTIC_COMMENT("lines of memory if > line. 0 => varies")},
- {"lw", 10 UNTIC_COMMENT("columns in each label")},
- {"ma", 11 UNTIC_COMMENT("maximum combined attributes terminal can handle")},
- {"pa", 14 UNTIC_COMMENT("maximum number of color-pairs on the screen")},
- {"pb", 5 UNTIC_COMMENT("lowest baud rate where padding needed")},
- {"sg", 4 UNTIC_COMMENT("number of blank chars left by smso or rmso")},
- {"ug", 33 UNTIC_COMMENT("number of blanks left by ul")},
- {"vt", 6 UNTIC_COMMENT("virtual terminal number (CB/unix)")},
- {"ws", 7 UNTIC_COMMENT("columns in status line")},
- {"", -1 UNTIC_COMMENT(NULL)}
-};
-
-int _SLtt_tigetnum (SLterminfo_Type *t, char *cap)
-{
- int offset;
-
- if (t == NULL)
- return -1;
-
- if (t->flags == SLTERMCAP) return tcap_getnum (cap, t);
-
- offset = compute_cap_offset (cap, t, Tgetnum_Map, t->num_numbers);
- if (offset < 0) return -1;
- return make_integer (t->numbers + 2 * offset);
-}
-
-static Tgetstr_Map_Type Tgetflag_Map[] =
-{
- {"5i", 22 UNTIC_COMMENT("printer won't echo on screen")},
- {"HC", 23 UNTIC_COMMENT("cursor is hard to see")},
- {"MT", 40 UNTIC_COMMENT("has meta key")},
- {"ND", 26 UNTIC_COMMENT("scrolling region is non-destructive")},
- {"NL", 41 UNTIC_COMMENT("move down with \n")},
- {"NP", 25 UNTIC_COMMENT("pad character does not exist")},
- {"NR", 24 UNTIC_COMMENT("smcup does not reverse rmcup")},
- {"YA", 30 UNTIC_COMMENT("only positive motion for hpa/mhpa caps")},
- {"YB", 31 UNTIC_COMMENT("using cr turns off micro mode")},
- {"YC", 32 UNTIC_COMMENT("printer needs operator to change character set")},
- {"YD", 33 UNTIC_COMMENT("only positive motion for vpa/mvpa caps")},
- {"YE", 34 UNTIC_COMMENT("printing in last column causes cr")},
- {"YF", 35 UNTIC_COMMENT("changing character pitch changes resolution")},
- {"YG", 36 UNTIC_COMMENT("changing line pitch changes resolution")},
- {"am", 1 UNTIC_COMMENT("terminal has automatic margins")},
- {"bs", 37 UNTIC_COMMENT("uses ^H to move left")},
- {"bw", 0 UNTIC_COMMENT("cub1 wraps from column 0 to last column")},
- {"cc", 27 UNTIC_COMMENT("terminal can re-define existing colors")},
- {"da", 11 UNTIC_COMMENT("display may be retained above the screen")},
- {"db", 12 UNTIC_COMMENT("display may be retained below the screen")},
- {"eo", 5 UNTIC_COMMENT("can erase overstrikes with a blank")},
- {"es", 16 UNTIC_COMMENT("escape can be used on the status line")},
- {"gn", 6 UNTIC_COMMENT("generic line type")},
- {"hc", 7 UNTIC_COMMENT("hardcopy terminal")},
- {"hl", 29 UNTIC_COMMENT("terminal uses only HLS color notation (tektronix)")},
- {"hs", 9 UNTIC_COMMENT("has extra status line")},
- {"hz", 18 UNTIC_COMMENT("can't print ~'s (hazeltine)")},
- {"in", 10 UNTIC_COMMENT("insert mode distinguishes nulls")},
- {"km", 8 UNTIC_COMMENT("Has a meta key, sets msb high")},
- {"mi", 13 UNTIC_COMMENT("safe to move while in insert mode")},
- {"ms", 14 UNTIC_COMMENT("safe to move while in standout mode")},
- {"nc", 39 UNTIC_COMMENT("no way to go to start of line")},
- {"ns", 38 UNTIC_COMMENT("crt cannot scroll")},
- {"nx", 21 UNTIC_COMMENT("padding won't work, xon/xoff required")},
- {"os", 15 UNTIC_COMMENT("terminal can overstrike")},
- {"pt", 42 UNTIC_COMMENT("has 8-char tabs invoked with ^I")},
- {"ul", 19 UNTIC_COMMENT("underline character overstrikes")},
- {"ut", 28 UNTIC_COMMENT("screen erased with background color")},
- {"xb", 2 UNTIC_COMMENT("beehive (f1=escape, f2=ctrl C)")},
- {"xn", 4 UNTIC_COMMENT("newline ignored after 80 cols (concept)")},
- {"xo", 20 UNTIC_COMMENT("terminal uses xon/xoff handshaking")},
- {"xr", 43 UNTIC_COMMENT("return clears the line")},
- {"xs", 3 UNTIC_COMMENT("standout not erased by overwriting (hp)")},
- {"xt", 17 UNTIC_COMMENT("tabs destructive, magic so char (t1061)")},
- {"", -1 UNTIC_COMMENT(NULL)}
-};
-
-int _SLtt_tigetflag (SLterminfo_Type *t, char *cap)
-{
- int offset;
-
- if (t == NULL) return -1;
-
- if (t->flags == SLTERMCAP) return tcap_getflag (cap, t);
-
- offset = compute_cap_offset (cap, t, Tgetflag_Map, t->boolean_section_size);
-
- if (offset < 0) return -1;
- return (int) *(t->boolean_flags + offset);
-}
-
-/* These are my termcap routines. They only work with the TERMCAP environment
- * variable. This variable must contain the termcap entry and NOT the file.
- */
-
-static int tcap_getflag (char *cap, SLterminfo_Type *t)
-{
- char a, b;
- char *f = (char *) t->boolean_flags;
- char *fmax;
-
- if (f == NULL) return 0;
- fmax = f + t->boolean_section_size;
-
- a = *cap;
- b = *(cap + 1);
- while (f < fmax)
- {
- if ((a == f[0]) && (b == f[1]))
- return 1;
- f += 2;
- }
- return 0;
-}
-
-static char *tcap_get_cap (unsigned char *cap, unsigned char *caps, unsigned int len)
-{
- unsigned char c0, c1;
- unsigned char *caps_max;
-
- c0 = cap[0];
- c1 = cap[1];
-
- if (caps == NULL) return NULL;
- caps_max = caps + len;
- while (caps < caps_max)
- {
- if ((c0 == caps[0]) && (c1 == caps[1]))
- {
- return (char *) caps + 3;
- }
- caps += (int) caps[2];
- }
- return NULL;
-}
-
-static int tcap_getnum (char *cap, SLterminfo_Type *t)
-{
- cap = tcap_get_cap ((unsigned char *) cap, t->numbers, t->num_numbers);
- if (cap == NULL) return -1;
- return atoi (cap);
-}
-
-static char *tcap_getstr (char *cap, SLterminfo_Type *t)
-{
- return tcap_get_cap ((unsigned char *) cap, (unsigned char *) t->string_table, t->string_table_size);
-}
-
-static int tcap_extract_field (unsigned char *t0)
-{
- register unsigned char ch, *t = t0;
- while (((ch = *t) != 0) && (ch != ':')) t++;
- if (ch == ':') return (int) (t - t0);
- return -1;
-}
-
-int SLtt_Try_Termcap = 1;
-static int tcap_getent (char *term, SLterminfo_Type *ti)
-{
- unsigned char *termcap, ch;
- unsigned char *buf, *b;
- unsigned char *t;
- int len;
-
- if (SLtt_Try_Termcap == 0) return -1;
-#if 1
- /* XFREE86 xterm sets the TERMCAP environment variable to an invalid
- * value. Specifically, it lacks the tc= string.
- */
- if (!strncmp (term, "xterm", 5))
- return -1;
-#endif
- termcap = (unsigned char *) getenv ("TERMCAP");
- if ((termcap == NULL) || (*termcap == '/')) return -1;
-
- /* We have a termcap so lets use it provided it does not have a reference
- * to another terminal via tc=. In that case, use terminfo. The alternative
- * would be to parse the termcap file which I do not want to do right now.
- * Besides, this is a terminfo based system and if the termcap were parsed
- * terminfo would almost never get a chance to run. In addition, the tc=
- * thing should not occur if tset is used to set the termcap entry.
- */
- t = termcap;
- while ((len = tcap_extract_field (t)) != -1)
- {
- if ((len > 3) && (t[0] == 't') && (t[1] == 'c') && (t[2] == '='))
- return -1;
- t += (len + 1);
- }
-
- /* malloc some extra space just in case it is needed. */
- len = strlen ((char *) termcap) + 256;
- if (NULL == (buf = (unsigned char *) SLmalloc ((unsigned int) len))) return -1;
-
- b = buf;
-
- /* The beginning of the termcap entry contains the names of the entry.
- * It is terminated by a colon.
- */
-
- ti->terminal_names = (char *) b;
- t = termcap;
- len = tcap_extract_field (t);
- if (len < 0)
- {
- SLfree ((char *)buf);
- return -1;
- }
- strncpy ((char *) b, (char *) t, (unsigned int) len);
- b[len] = 0;
- b += len + 1;
- ti->name_section_size = len;
-
- /* Now, we are really at the start of the termcap entries. Point the
- * termcap variable here since we want to refer to this a number of times.
- */
- termcap = t + (len + 1);
-
- /* Process strings first. */
- ti->string_table = (char *) b;
- t = termcap;
- while (-1 != (len = tcap_extract_field (t)))
- {
- unsigned char *b1;
- unsigned char *tmax;
-
- /* We are looking for: XX=something */
- if ((len < 4) || (t[2] != '=') || (*t == '.'))
- {
- t += len + 1;
- continue;
- }
- tmax = t + len;
- b1 = b;
-
- while (t < tmax)
- {
- ch = *t++;
- if ((ch == '\\') && (t < tmax))
- {
- t = (unsigned char *) _SLexpand_escaped_char ((char *) t, (char *) &ch);
- }
- else if ((ch == '^') && (t < tmax))
- {
- ch = *t++;
- if (ch == '?') ch = 127;
- else ch = (ch | 0x20) - ('a' - 1);
- }
- *b++ = ch;
- }
- /* Null terminate it. */
- *b++ = 0;
- len = (int) (b - b1);
- b1[2] = (unsigned char) len; /* replace the = by the length */
- /* skip colon to next field. */
- t++;
- }
- ti->string_table_size = (int) (b - (unsigned char *) ti->string_table);
-
- /* Now process the numbers. */
-
- t = termcap;
- ti->numbers = b;
- while (-1 != (len = tcap_extract_field (t)))
- {
- unsigned char *b1;
- unsigned char *tmax;
-
- /* We are looking for: XX#NUMBER */
- if ((len < 4) || (t[2] != '#') || (*t == '.'))
- {
- t += len + 1;
- continue;
- }
- tmax = t + len;
- b1 = b;
-
- while (t < tmax)
- {
- *b++ = *t++;
- }
- /* Null terminate it. */
- *b++ = 0;
- len = (int) (b - b1);
- b1[2] = (unsigned char) len; /* replace the # by the length */
- t++;
- }
- ti->num_numbers = (int) (b - ti->numbers);
-
- /* Now process the flags. */
- t = termcap;
- ti->boolean_flags = b;
- while (-1 != (len = tcap_extract_field (t)))
- {
- /* We are looking for: XX#NUMBER */
- if ((len != 2) || (*t == '.') || (*t <= ' '))
- {
- t += len + 1;
- continue;
- }
- b[0] = t[0];
- b[1] = t[1];
- t += 3;
- b += 2;
- }
- ti->boolean_section_size = (int) (b - ti->boolean_flags);
- ti->flags = SLTERMCAP;
- return 0;
-}
-
-
-/* These routines are provided only for backward binary compatability.
- * They will vanish in V2.x
- */
-char *SLtt_tigetent (char *s)
-{
- return (char *) _SLtt_tigetent (s);
-}
-
-extern char *SLtt_tigetstr (char *s, char **p)
-{
- if (p == NULL)
- return NULL;
- return _SLtt_tigetstr ((SLterminfo_Type *) *p, s);
-}
-
-extern int SLtt_tigetnum (char *s, char **p)
-{
- if (p == NULL)
- return -1;
- return _SLtt_tigetnum ((SLterminfo_Type *) *p, s);
-}
-
-
diff --git a/mdk-stage1/slang/sltime.c b/mdk-stage1/slang/sltime.c
deleted file mode 100644
index 14fc6ec16..000000000
--- a/mdk-stage1/slang/sltime.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/* time related system calls */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include <sys/types.h>
-#include <time.h>
-
-#if defined(__BORLANDC__)
-# include <dos.h>
-#endif
-#if defined(__GO32__) || defined(__WATCOMC__)
-# include <dos.h>
-# include <bios.h>
-#endif
-
-#include <errno.h>
-
-#include "slang.h"
-#include "_slang.h"
-
-#ifdef __WIN32__
-#include <windows.h>
-/* Sleep is defined badly in MSVC... */
-# ifdef _MSC_VER
-# define sleep(n) _sleep((n)*1000)
-# else
-# ifdef sleep
-# undef sleep
-# endif
-# define sleep(x) if(x)Sleep((x)*1000)
-# endif
-#endif
-
-
-#if defined(IBMPC_SYSTEM)
-/* For other system (Unix and VMS), _SLusleep is in sldisply.c */
-int _SLusleep (unsigned long s)
-{
- sleep (s/1000000L);
- s = s % 1000000L;
-
-# if defined(__WIN32__)
- Sleep (s/1000);
-#else
-# if defined(__IBMC__)
- DosSleep(s/1000);
-# else
-# if defined(_MSC_VER)
- _sleep (s/1000);
-# endif
-# endif
-#endif
- return 0;
-}
-#endif
-
-#if defined(__IBMC__) && !defined(_AIX)
-/* sleep is not a standard function in VA3. */
-unsigned int sleep (unsigned int seconds)
-{
- DosSleep(1000L * ((long)seconds));
- return 0;
-}
-#endif
-
-static char *ctime_cmd (unsigned long *tt)
-{
- char *t;
-
- t = ctime ((time_t *) tt);
- t[24] = 0; /* knock off \n */
- return (t);
-}
-
-static void sleep_cmd (void)
-{
- unsigned int secs;
-#if SLANG_HAS_FLOAT
- unsigned long usecs;
- double x;
-
- if (-1 == SLang_pop_double (&x, NULL, NULL))
- return;
-
- if (x < 0.0)
- x = 0.0;
- secs = (unsigned int) x;
- sleep (secs);
- x -= (double) secs;
- usecs = (unsigned long) (1e6 * x);
- if (usecs > 0) _SLusleep (usecs);
-#else
- if (-1 == SLang_pop_uinteger (&secs))
- return;
- if (secs != 0) sleep (secs);
-#endif
-}
-
-static unsigned long _time_cmd (void)
-{
- return (unsigned long) time (NULL);
-}
-
-#if defined(__GO32__)
-static char *djgpp_current_time (void) /*{{{*/
-{
- union REGS rg;
- unsigned int year;
- unsigned char month, day, weekday, hour, minute, sec;
- char days[] = "SunMonTueWedThuFriSat";
- char months[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
- static char the_date[26];
-
- rg.h.ah = 0x2A;
-#ifndef __WATCOMC__
- int86(0x21, &rg, &rg);
- year = rg.x.cx & 0xFFFF;
-#else
- int386(0x21, &rg, &rg);
- year = rg.x.ecx & 0xFFFF;
-#endif
-
- month = 3 * (rg.h.dh - 1);
- day = rg.h.dl;
- weekday = 3 * rg.h.al;
-
- rg.h.ah = 0x2C;
-
-#ifndef __WATCOMC__
- int86(0x21, &rg, &rg);
-#else
- int386(0x21, &rg, &rg);
-#endif
-
- hour = rg.h.ch;
- minute = rg.h.cl;
- sec = rg.h.dh;
-
- /* we want this form: Thu Apr 14 15:43:39 1994\n */
- sprintf(the_date, "%.3s %.3s%3d %02d:%02d:%02d %d\n",
- days + weekday, months + month,
- day, hour, minute, sec, year);
- return the_date;
-}
-
-/*}}}*/
-
-#endif
-
-char *SLcurrent_time_string (void) /*{{{*/
-{
- char *the_time;
-#ifndef __GO32__
- time_t myclock;
-
- myclock = time((time_t *) 0);
- the_time = (char *) ctime(&myclock);
-#else
- the_time = djgpp_current_time ();
-#endif
- /* returns the form Sun Sep 16 01:03:52 1985\n\0 */
- the_time[24] = '\0';
- return(the_time);
-}
-
-/*}}}*/
-
-static int push_tm_struct (struct tm *tms)
-{
- char *field_names [9];
- unsigned char field_types[9];
- VOID_STAR field_values [9];
- int int_values [9];
- unsigned int i;
-
- if (tms == NULL)
- return SLang_push_null ();
-
- field_names [0] = "tm_sec"; int_values [0] = tms->tm_sec;
- field_names [1] = "tm_min"; int_values [1] = tms->tm_min;
- field_names [2] = "tm_hour"; int_values [2] = tms->tm_hour;
- field_names [3] = "tm_mday"; int_values [3] = tms->tm_mday;
- field_names [4] = "tm_mon"; int_values [4] = tms->tm_mon;
- field_names [5] = "tm_year"; int_values [5] = tms->tm_year;
- field_names [6] = "tm_wday"; int_values [6] = tms->tm_wday;
- field_names [7] = "tm_yday"; int_values [7] = tms->tm_yday;
- field_names [8] = "tm_isdst"; int_values [8] = tms->tm_isdst;
-
- for (i = 0; i < 9; i++)
- {
- field_types [i] = SLANG_INT_TYPE;
- field_values [i] = (VOID_STAR) (int_values + i);
- }
-
- return SLstruct_create_struct (9, field_names, field_types, field_values);
-}
-
-
-static void localtime_cmd (long *t)
-{
- time_t tt = (time_t) *t;
- (void) push_tm_struct (localtime (&tt));
-}
-
-static void gmtime_cmd (long *t)
-{
-#ifdef HAVE_GMTIME
- time_t tt = (time_t) *t;
- (void) push_tm_struct (gmtime (&tt));
-#else
- localtime_cmd (t);
-#endif
-}
-
-#ifdef HAVE_TIMES
-
-# ifdef HAVE_SYS_TIMES_H
-# include <sys/times.h>
-# endif
-
-#include <limits.h>
-
-#ifdef CLK_TCK
-# define SECS_PER_TICK (1.0/(double)CLK_TCK)
-#else
-# ifdef CLOCKS_PER_SEC
-# define SECS_PER_TICK (1.0/(double)CLOCKS_PER_SEC)
-# else
-# define SECS_PER_TICK (1.0/60.0)
-# endif
-#endif
-
-static void times_cmd (void)
-{
- double dvals[4];
- struct tms t;
- VOID_STAR field_values[4];
- char *field_names[4];
- unsigned int i;
- unsigned char field_types[4];
-
- (void) times (&t);
-
- field_names[0] = "tms_utime"; dvals[0] = (double)t.tms_utime;
- field_names[1] = "tms_stime"; dvals[1] = (double)t.tms_stime;
- field_names[2] = "tms_cutime"; dvals[2] = (double)t.tms_cutime;
- field_names[3] = "tms_cstime"; dvals[3] = (double)t.tms_cstime;
-
- for (i = 0; i < 4; i++)
- {
- dvals[i] *= SECS_PER_TICK;
- field_values[i] = (VOID_STAR) &dvals[i];
- field_types[i] = SLANG_DOUBLE_TYPE;
- }
- (void) SLstruct_create_struct (4, field_names, field_types, field_values);
-}
-
-static struct tms Tic_TMS;
-
-static void tic_cmd (void)
-{
- (void) times (&Tic_TMS);
-}
-
-static double toc_cmd (void)
-{
- struct tms t;
- double d;
-
- (void) times (&t);
- d = ((t.tms_utime - Tic_TMS.tms_utime)
- + (t.tms_stime - Tic_TMS.tms_stime)) * SECS_PER_TICK;
- Tic_TMS = t;
- return d;
-}
-
-#endif /* HAVE_TIMES */
-
-
-static SLang_Intrin_Fun_Type Time_Funs_Table [] =
-{
- MAKE_INTRINSIC_1("ctime", ctime_cmd, SLANG_STRING_TYPE, SLANG_ULONG_TYPE),
- MAKE_INTRINSIC_0("sleep", sleep_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("_time", _time_cmd, SLANG_ULONG_TYPE),
- MAKE_INTRINSIC_0("time", SLcurrent_time_string, SLANG_STRING_TYPE),
- MAKE_INTRINSIC_1("localtime", localtime_cmd, SLANG_VOID_TYPE, SLANG_LONG_TYPE),
- MAKE_INTRINSIC_1("gmtime", gmtime_cmd, SLANG_VOID_TYPE, SLANG_LONG_TYPE),
-
-#ifdef HAVE_TIMES
- MAKE_INTRINSIC_0("times", times_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("tic", tic_cmd, SLANG_VOID_TYPE),
- MAKE_INTRINSIC_0("toc", toc_cmd, SLANG_DOUBLE_TYPE),
-#endif
- SLANG_END_INTRIN_FUN_TABLE
-};
-
-int _SLang_init_sltime (void)
-{
-#ifdef HAVE_TIMES
- (void) tic_cmd ();
-#endif
- return SLadd_intrin_fun_table (Time_Funs_Table, NULL);
-}
-
diff --git a/mdk-stage1/slang/sltoken.c b/mdk-stage1/slang/sltoken.c
deleted file mode 100644
index d08967a24..000000000
--- a/mdk-stage1/slang/sltoken.c
+++ /dev/null
@@ -1,1702 +0,0 @@
-/* Copyright (c) 1998, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-#include "slinclud.h"
-
-#include "slang.h"
-#include "_slang.h"
-
-#define MAX_TOKEN_LEN 254
-#define MAX_FILE_LINE_LEN 256
-
-static char Empty_Line[1] = {0};
-
-static int Default_Compile_Line_Num_Info;
-static char *Input_Line = Empty_Line;
-static char *Input_Line_Pointer;
-
-static SLPreprocess_Type *This_SLpp;
-
-static SLang_Load_Type *LLT;
-
-static char *map_token_to_string (_SLang_Token_Type *tok)
-{
- char *s;
- static char numbuf [32];
- unsigned char type;
- s = NULL;
-
- if (tok != NULL) type = tok->type;
- else type = 0;
-
- switch (type)
- {
- case 0:
- s = "??";
- break;
-
- case CHAR_TOKEN:
- case SHORT_TOKEN:
- case INT_TOKEN:
- case LONG_TOKEN:
- s = numbuf;
- sprintf (s, "%ld", tok->v.long_val);
- break;
-
- case UCHAR_TOKEN:
- case USHORT_TOKEN:
- case UINT_TOKEN:
- case ULONG_TOKEN:
- s = numbuf;
- sprintf (s, "%lu", (unsigned long)tok->v.long_val);
- break;
-
- case OBRACKET_TOKEN: s = "["; break;
- case CBRACKET_TOKEN: s = "]"; break;
- case OPAREN_TOKEN: s = "("; break;
- case CPAREN_TOKEN: s = ")"; break;
- case OBRACE_TOKEN: s = "{"; break;
- case CBRACE_TOKEN: s = "}"; break;
- case DEREF_TOKEN: s = "@"; break;
- case POUND_TOKEN: s = "#"; break;
- case COMMA_TOKEN: s = ","; break;
- case SEMICOLON_TOKEN: s = ";"; break;
- case COLON_TOKEN: s = ":"; break;
-
-#if SLANG_HAS_FLOAT
- case FLOAT_TOKEN:
- case DOUBLE_TOKEN:
- case COMPLEX_TOKEN:
-#endif
- case IDENT_TOKEN:
- if ((tok->free_sval_flag == 0) || (tok->num_refs == 0))
- break;
- /* drop */
- default:
- s = tok->v.s_val;
- break;
- }
-
- if (s == NULL)
- {
- s = numbuf;
- sprintf (s, "(0x%02X)", type);
- }
-
- return s;
-}
-
-static char *make_line_file_error (char *buf, unsigned int buflen,
- _SLang_Token_Type *tok, char *dsc, int line, char *file)
-{
-#if _SLANG_HAS_DEBUG_CODE
- if (tok != NULL) line = tok->line_number;
-#endif
- if (file == NULL) file = "??";
-
- (void) _SLsnprintf (buf, buflen, "%s: found '%s', line %d, file: %s",
- dsc, map_token_to_string (tok), line, file);
-
- return buf;
-}
-
-void _SLparse_error(char *str, _SLang_Token_Type *tok, int flag)
-{
- char buf [1024];
-
- if (str == NULL)
- str = "Parse Error";
-
- make_line_file_error (buf, sizeof (buf), tok, str, LLT->line_num, (char *) LLT->name);
-
- if ((flag == 0) && SLang_Error)
- return;
-
- SLang_verror (SL_SYNTAX_ERROR, "%s", buf);
-}
-
-static void do_line_file_error (int line, char *file)
-{
- SLang_verror (SL_SYNTAX_ERROR,
- "called from line %d, file: %s", line, file);
-}
-
-#define ALPHA_CHAR 1
-#define DIGIT_CHAR 2
-#define EXCL_CHAR 3
-#define SEP_CHAR 4
-#define OP_CHAR 5
-#define DOT_CHAR 6
-#define BOLDOT_CHAR 7
-#define DQUOTE_CHAR 8
-#define QUOTE_CHAR 9
-#define COMMENT_CHAR 10
-#define NL_CHAR 11
-#define BAD_CHAR 12
-#define WHITE_CHAR 13
-
-#define CHAR_EOF 255
-
-#define CHAR_CLASS(c) (Char_Type_Table[(c)][0])
-#define CHAR_DATA(c) (Char_Type_Table[(c)][1])
-
-/* In this table, if a single character can represent an operator, e.g.,
- * '&' (BAND_TOKEN), then it must be placed before multiple-character
- * operators that begin with the same character, e.g., "&=". See
- * get_op_token to see how this is exploited.
- *
- * The third character null terminates the operator string. This is for
- * the token structure.
- */
-static char Operators [29][4] =
-{
-#define OFS_EXCL 0
- {'!', '=', 0, NE_TOKEN},
-#define OFS_POUND 1
- {'#', 0, 0, POUND_TOKEN},
-#define OFS_BAND 2
- {'&', 0, 0, BAND_TOKEN},
- {'&', '&', 0, EOF_TOKEN},
- {'&', '=', 0, BANDEQS_TOKEN},
-#define OFS_STAR 5
- {'*', 0, 0, TIMES_TOKEN},
- {'*', '=', 0, TIMESEQS_TOKEN},
-#define OFS_PLUS 7
- {'+', 0, 0, ADD_TOKEN},
- {'+', '+', 0, PLUSPLUS_TOKEN},
- {'+', '=', 0, PLUSEQS_TOKEN},
-#define OFS_MINUS 10
- {'-', 0, 0, SUB_TOKEN},
- {'-', '-', 0, MINUSMINUS_TOKEN},
- {'-', '=', 0, MINUSEQS_TOKEN},
- {'-', '>', 0, NAMESPACE_TOKEN},
-#define OFS_DIV 14
- {'/', 0, 0, DIV_TOKEN},
- {'/', '=', 0, DIVEQS_TOKEN},
-#define OFS_LT 16
- {'<', 0, 0, LT_TOKEN},
- {'<', '=', 0, LE_TOKEN},
-#define OFS_EQS 18
- {'=', 0, 0, ASSIGN_TOKEN},
- {'=', '=', 0, EQ_TOKEN},
-#define OFS_GT 20
- {'>', 0, 0, GT_TOKEN},
- {'>', '=', 0, GE_TOKEN},
-#define OFS_AT 22
- {'@', 0, 0, DEREF_TOKEN},
-#define OFS_POW 23
- {'^', 0, 0, POW_TOKEN},
-#define OFS_BOR 24
- {'|', 0, 0, BOR_TOKEN},
- {'|', '|', 0, EOF_TOKEN},
- {'|', '=', 0, BOREQS_TOKEN},
-#define OFS_BNOT 27
- {'~', 0, 0, BNOT_TOKEN},
- { 0, 0, 0, EOF_TOKEN}
-};
-
-static unsigned char Char_Type_Table[256][2] =
-{
- { NL_CHAR, 0 }, /* 0x0 */ { BAD_CHAR, 0 }, /* 0x1 */
- { BAD_CHAR, 0 }, /* 0x2 */ { BAD_CHAR, 0 }, /* 0x3 */
- { BAD_CHAR, 0 }, /* 0x4 */ { BAD_CHAR, 0 }, /* 0x5 */
- { BAD_CHAR, 0 }, /* 0x6 */ { BAD_CHAR, 0 }, /* 0x7 */
- { WHITE_CHAR, 0 }, /* 0x8 */ { WHITE_CHAR, 0 }, /* 0x9 */
- { NL_CHAR, 0 }, /* \n */ { WHITE_CHAR, 0 }, /* 0xb */
- { WHITE_CHAR, 0 }, /* 0xc */ { WHITE_CHAR, 0 }, /* \r */
- { BAD_CHAR, 0 }, /* 0xe */ { BAD_CHAR, 0 }, /* 0xf */
- { BAD_CHAR, 0 }, /* 0x10 */ { BAD_CHAR, 0 }, /* 0x11 */
- { BAD_CHAR, 0 }, /* 0x12 */ { BAD_CHAR, 0 }, /* 0x13 */
- { BAD_CHAR, 0 }, /* 0x14 */ { BAD_CHAR, 0 }, /* 0x15 */
- { BAD_CHAR, 0 }, /* 0x16 */ { BAD_CHAR, 0 }, /* 0x17 */
- { BAD_CHAR, 0 }, /* 0x18 */ { BAD_CHAR, 0 }, /* 0x19 */
- { BAD_CHAR, 0 }, /* 0x1a */ { BAD_CHAR, 0 }, /* 0x1b */
- { BAD_CHAR, 0 }, /* 0x1c */ { BAD_CHAR, 0 }, /* 0x1d */
- { BAD_CHAR, 0 }, /* 0x1e */ { BAD_CHAR, 0 }, /* 0x1f */
- { WHITE_CHAR, 0 }, /* 0x20 */ { EXCL_CHAR, OFS_EXCL }, /* ! */
- { DQUOTE_CHAR, 0 }, /* " */ { OP_CHAR, OFS_POUND }, /* # */
- { ALPHA_CHAR, 0 }, /* $ */ { NL_CHAR, 0 },/* % */
- { OP_CHAR, OFS_BAND }, /* & */ { QUOTE_CHAR, 0 }, /* ' */
- { SEP_CHAR, OPAREN_TOKEN }, /* ( */ { SEP_CHAR, CPAREN_TOKEN }, /* ) */
- { OP_CHAR, OFS_STAR }, /* * */ { OP_CHAR, OFS_PLUS}, /* + */
- { SEP_CHAR, COMMA_TOKEN }, /* , */ { OP_CHAR, OFS_MINUS }, /* - */
- { DOT_CHAR, 0 }, /* . */ { OP_CHAR, OFS_DIV }, /* / */
- { DIGIT_CHAR, 0 }, /* 0 */ { DIGIT_CHAR, 0 }, /* 1 */
- { DIGIT_CHAR, 0 }, /* 2 */ { DIGIT_CHAR, 0 }, /* 3 */
- { DIGIT_CHAR, 0 }, /* 4 */ { DIGIT_CHAR, 0 }, /* 5 */
- { DIGIT_CHAR, 0 }, /* 6 */ { DIGIT_CHAR, 0 }, /* 7 */
- { DIGIT_CHAR, 0 }, /* 8 */ { DIGIT_CHAR, 0 }, /* 9 */
- { SEP_CHAR, COLON_TOKEN }, /* : */ { SEP_CHAR, SEMICOLON_TOKEN }, /* ; */
- { OP_CHAR, OFS_LT }, /* < */ { OP_CHAR, OFS_EQS }, /* = */
- { OP_CHAR, OFS_GT }, /* > */ { BAD_CHAR, 0 }, /* ? */
- { OP_CHAR, OFS_AT}, /* @ */ { ALPHA_CHAR, 0 }, /* A */
- { ALPHA_CHAR, 0 }, /* B */ { ALPHA_CHAR, 0 }, /* C */
- { ALPHA_CHAR, 0 }, /* D */ { ALPHA_CHAR, 0 }, /* E */
- { ALPHA_CHAR, 0 }, /* F */ { ALPHA_CHAR, 0 }, /* G */
- { ALPHA_CHAR, 0 }, /* H */ { ALPHA_CHAR, 0 }, /* I */
- { ALPHA_CHAR, 0 }, /* J */ { ALPHA_CHAR, 0 }, /* K */
- { ALPHA_CHAR, 0 }, /* L */ { ALPHA_CHAR, 0 }, /* M */
- { ALPHA_CHAR, 0 }, /* N */ { ALPHA_CHAR, 0 }, /* O */
- { ALPHA_CHAR, 0 }, /* P */ { ALPHA_CHAR, 0 }, /* Q */
- { ALPHA_CHAR, 0 }, /* R */ { ALPHA_CHAR, 0 }, /* S */
- { ALPHA_CHAR, 0 }, /* T */ { ALPHA_CHAR, 0 }, /* U */
- { ALPHA_CHAR, 0 }, /* V */ { ALPHA_CHAR, 0 }, /* W */
- { ALPHA_CHAR, 0 }, /* X */ { ALPHA_CHAR, 0 }, /* Y */
- { ALPHA_CHAR, 0 }, /* Z */ { SEP_CHAR, OBRACKET_TOKEN }, /* [ */
- { BAD_CHAR, 0 }, /* \ */ { SEP_CHAR, CBRACKET_TOKEN }, /* ] */
- { OP_CHAR, OFS_POW }, /* ^ */ { ALPHA_CHAR, 0 }, /* _ */
- { BAD_CHAR, 0 }, /* ` */ { ALPHA_CHAR, 0 }, /* a */
- { ALPHA_CHAR, 0 }, /* b */ { ALPHA_CHAR, 0 }, /* c */
- { ALPHA_CHAR, 0 }, /* d */ { ALPHA_CHAR, 0 }, /* e */
- { ALPHA_CHAR, 0 }, /* f */ { ALPHA_CHAR, 0 }, /* g */
- { ALPHA_CHAR, 0 }, /* h */ { ALPHA_CHAR, 0 }, /* i */
- { ALPHA_CHAR, 0 }, /* j */ { ALPHA_CHAR, 0 }, /* k */
- { ALPHA_CHAR, 0 }, /* l */ { ALPHA_CHAR, 0 }, /* m */
- { ALPHA_CHAR, 0 }, /* n */ { ALPHA_CHAR, 0 }, /* o */
- { ALPHA_CHAR, 0 }, /* p */ { ALPHA_CHAR, 0 }, /* q */
- { ALPHA_CHAR, 0 }, /* r */ { ALPHA_CHAR, 0 }, /* s */
- { ALPHA_CHAR, 0 }, /* t */ { ALPHA_CHAR, 0 }, /* u */
- { ALPHA_CHAR, 0 }, /* v */ { ALPHA_CHAR, 0 }, /* w */
- { ALPHA_CHAR, 0 }, /* x */ { ALPHA_CHAR, 0 }, /* y */
- { ALPHA_CHAR, 0 }, /* z */ { SEP_CHAR, OBRACE_TOKEN }, /* { */
- { OP_CHAR, OFS_BOR }, /* | */ { SEP_CHAR, CBRACE_TOKEN }, /* } */
- { OP_CHAR, OFS_BNOT }, /* ~ */ { BAD_CHAR, 0 }, /* 0x7f */
-
- { ALPHA_CHAR, 0 }, /* € */ { ALPHA_CHAR, 0 }, /* */
- { ALPHA_CHAR, 0 }, /* ‚ */ { ALPHA_CHAR, 0 }, /* ƒ */
- { ALPHA_CHAR, 0 }, /* „ */ { ALPHA_CHAR, 0 }, /* … */
- { ALPHA_CHAR, 0 }, /* † */ { ALPHA_CHAR, 0 }, /* ‡ */
- { ALPHA_CHAR, 0 }, /* ˆ */ { ALPHA_CHAR, 0 }, /* ‰ */
- { ALPHA_CHAR, 0 }, /* Š */ { ALPHA_CHAR, 0 }, /* ‹ */
- { ALPHA_CHAR, 0 }, /* Π*/ { ALPHA_CHAR, 0 }, /* */
- { ALPHA_CHAR, 0 }, /* Ž */ { ALPHA_CHAR, 0 }, /* */
- { ALPHA_CHAR, 0 }, /* */ { ALPHA_CHAR, 0 }, /* ‘ */
- { ALPHA_CHAR, 0 }, /* ’ */ { ALPHA_CHAR, 0 }, /* “ */
- { ALPHA_CHAR, 0 }, /* ” */ { ALPHA_CHAR, 0 }, /* • */
- { ALPHA_CHAR, 0 }, /* – */ { ALPHA_CHAR, 0 }, /* — */
- { ALPHA_CHAR, 0 }, /* ˜ */ { ALPHA_CHAR, 0 }, /* ™ */
- { ALPHA_CHAR, 0 }, /* š */ { ALPHA_CHAR, 0 }, /* › */
- { ALPHA_CHAR, 0 }, /* œ */ { ALPHA_CHAR, 0 }, /* */
- { ALPHA_CHAR, 0 }, /* ž */ { ALPHA_CHAR, 0 }, /* Ÿ */
- { ALPHA_CHAR, 0 }, /*   */ { ALPHA_CHAR, 0 }, /* ¡ */
- { ALPHA_CHAR, 0 }, /* ¢ */ { ALPHA_CHAR, 0 }, /* £ */
- { ALPHA_CHAR, 0 }, /* ¤ */ { ALPHA_CHAR, 0 }, /* ¥ */
- { ALPHA_CHAR, 0 }, /* ¦ */ { ALPHA_CHAR, 0 }, /* § */
- { ALPHA_CHAR, 0 }, /* ¨ */ { ALPHA_CHAR, 0 }, /* © */
- { ALPHA_CHAR, 0 }, /* ª */ { ALPHA_CHAR, 0 }, /* « */
- { ALPHA_CHAR, 0 }, /* ¬ */ { ALPHA_CHAR, 0 }, /* ­ */
- { ALPHA_CHAR, 0 }, /* ® */ { ALPHA_CHAR, 0 }, /* ¯ */
- { ALPHA_CHAR, 0 }, /* ° */ { ALPHA_CHAR, 0 }, /* ± */
- { ALPHA_CHAR, 0 }, /* ² */ { ALPHA_CHAR, 0 }, /* ³ */
- { ALPHA_CHAR, 0 }, /* ´ */ { ALPHA_CHAR, 0 }, /* µ */
- { ALPHA_CHAR, 0 }, /* ¶ */ { ALPHA_CHAR, 0 }, /* · */
- { ALPHA_CHAR, 0 }, /* ¸ */ { ALPHA_CHAR, 0 }, /* ¹ */
- { ALPHA_CHAR, 0 }, /* º */ { ALPHA_CHAR, 0 }, /* » */
- { ALPHA_CHAR, 0 }, /* ¼ */ { ALPHA_CHAR, 0 }, /* ½ */
- { ALPHA_CHAR, 0 }, /* ¾ */ { ALPHA_CHAR, 0 }, /* ¿ */
- { ALPHA_CHAR, 0 }, /* À */ { ALPHA_CHAR, 0 }, /* Á */
- { ALPHA_CHAR, 0 }, /* Â */ { ALPHA_CHAR, 0 }, /* Ã */
- { ALPHA_CHAR, 0 }, /* Ä */ { ALPHA_CHAR, 0 }, /* Å */
- { ALPHA_CHAR, 0 }, /* Æ */ { ALPHA_CHAR, 0 }, /* Ç */
- { ALPHA_CHAR, 0 }, /* È */ { ALPHA_CHAR, 0 }, /* É */
- { ALPHA_CHAR, 0 }, /* Ê */ { ALPHA_CHAR, 0 }, /* Ë */
- { ALPHA_CHAR, 0 }, /* Ì */ { ALPHA_CHAR, 0 }, /* Í */
- { ALPHA_CHAR, 0 }, /* Î */ { ALPHA_CHAR, 0 }, /* Ï */
- { ALPHA_CHAR, 0 }, /* Ð */ { ALPHA_CHAR, 0 }, /* Ñ */
- { ALPHA_CHAR, 0 }, /* Ò */ { ALPHA_CHAR, 0 }, /* Ó */
- { ALPHA_CHAR, 0 }, /* Ô */ { ALPHA_CHAR, 0 }, /* Õ */
- { ALPHA_CHAR, 0 }, /* Ö */ { ALPHA_CHAR, 0 }, /* × */
- { ALPHA_CHAR, 0 }, /* Ø */ { ALPHA_CHAR, 0 }, /* Ù */
- { ALPHA_CHAR, 0 }, /* Ú */ { ALPHA_CHAR, 0 }, /* Û */
- { ALPHA_CHAR, 0 }, /* Ü */ { ALPHA_CHAR, 0 }, /* Ý */
- { ALPHA_CHAR, 0 }, /* Þ */ { ALPHA_CHAR, 0 }, /* ß */
- { ALPHA_CHAR, 0 }, /* à */ { ALPHA_CHAR, 0 }, /* á */
- { ALPHA_CHAR, 0 }, /* â */ { ALPHA_CHAR, 0 }, /* ã */
- { ALPHA_CHAR, 0 }, /* ä */ { ALPHA_CHAR, 0 }, /* å */
- { ALPHA_CHAR, 0 }, /* æ */ { ALPHA_CHAR, 0 }, /* ç */
- { ALPHA_CHAR, 0 }, /* è */ { ALPHA_CHAR, 0 }, /* é */
- { ALPHA_CHAR, 0 }, /* ê */ { ALPHA_CHAR, 0 }, /* ë */
- { ALPHA_CHAR, 0 }, /* ì */ { ALPHA_CHAR, 0 }, /* í */
- { ALPHA_CHAR, 0 }, /* î */ { ALPHA_CHAR, 0 }, /* ï */
- { ALPHA_CHAR, 0 }, /* ð */ { ALPHA_CHAR, 0 }, /* ñ */
- { ALPHA_CHAR, 0 }, /* ò */ { ALPHA_CHAR, 0 }, /* ó */
- { ALPHA_CHAR, 0 }, /* ô */ { ALPHA_CHAR, 0 }, /* õ */
- { ALPHA_CHAR, 0 }, /* ö */ { ALPHA_CHAR, 0 }, /* ÷ */
- { ALPHA_CHAR, 0 }, /* ø */ { ALPHA_CHAR, 0 }, /* ù */
- { ALPHA_CHAR, 0 }, /* ú */ { ALPHA_CHAR, 0 }, /* û */
- { ALPHA_CHAR, 0 }, /* ü */ { ALPHA_CHAR, 0 }, /* ý */
- { ALPHA_CHAR, 0 }, /* þ */ { ALPHA_CHAR, 0 }, /* ÿ */
-};
-
-int _SLcheck_identifier_syntax (char *name)
-{
- unsigned char *p;
-
- p = (unsigned char *) name;
- if (ALPHA_CHAR == Char_Type_Table[*p][0]) while (1)
- {
- unsigned ch;
- unsigned char type;
-
- ch = *++p;
-
- type = Char_Type_Table [ch][0];
- if ((type != ALPHA_CHAR) && (type != DIGIT_CHAR))
- {
- if (ch == 0)
- return 0;
- break;
- }
- }
-
- SLang_verror (SL_SYNTAX_ERROR,
- "Name %s contains an illegal character", name);
- return -1;
-}
-
-static unsigned char prep_get_char (void)
-{
- register unsigned char ch;
-
- if (0 != (ch = *Input_Line_Pointer++))
- return ch;
-
- Input_Line_Pointer--;
- return 0;
-}
-
-static void unget_prep_char (unsigned char ch)
-{
- if ((Input_Line_Pointer != Input_Line)
- && (ch != 0))
- Input_Line_Pointer--;
- /* *Input_Line_Pointer = ch; -- Do not modify the Input_Line */
-}
-
-#include "keywhash.c"
-
-static int get_ident_token (_SLang_Token_Type *tok, unsigned char *s, unsigned int len)
-{
- unsigned char ch;
- unsigned char type;
- Keyword_Table_Type *table;
-
- while (1)
- {
- ch = prep_get_char ();
- type = CHAR_CLASS (ch);
- if ((type != ALPHA_CHAR) && (type != DIGIT_CHAR))
- {
- unget_prep_char (ch);
- break;
- }
- s [len++] = ch;
- }
-
- s[len] = 0;
-
- /* check if keyword */
- table = is_keyword ((char *) s, len);
- if (table != NULL)
- {
- tok->v.s_val = table->name;
- return (tok->type = table->type);
- }
-
- tok->v.s_val = _SLstring_make_hashed_string ((char *)s, len, &tok->hash);
- tok->free_sval_flag = 1;
- return (tok->type = IDENT_TOKEN);
-}
-
-static int get_number_token (_SLang_Token_Type *tok, unsigned char *s, unsigned int len)
-{
- unsigned char ch;
- unsigned char type;
-
- /* Look for pattern [0-9.xX]*([eE][-+]?[digits])?[ijfhul]? */
- while (1)
- {
- ch = prep_get_char ();
-
- type = CHAR_CLASS (ch);
- if ((type != DIGIT_CHAR) && (type != DOT_CHAR))
- {
- if ((ch != 'x') && (ch != 'X'))
- break;
- /* It must be hex */
- do
- {
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
-
- s[len++] = ch;
- ch = prep_get_char ();
- type = CHAR_CLASS (ch);
- }
- while ((type == DIGIT_CHAR) || (type == ALPHA_CHAR));
- break;
- }
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
- s [len++] = ch;
- }
-
- /* At this point, type and ch are synchronized */
-
- if ((ch == 'e') || (ch == 'E'))
- {
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
- s[len++] = ch;
- ch = prep_get_char ();
- if ((ch == '+') || (ch == '-'))
- {
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
- s[len++] = ch;
- ch = prep_get_char ();
- }
-
- while (DIGIT_CHAR == (type = CHAR_CLASS(ch)))
- {
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
- s[len++] = ch;
- ch = prep_get_char ();
- }
- }
-
- while (ALPHA_CHAR == type)
- {
- if (len == (MAX_TOKEN_LEN - 1))
- goto too_long_return_error;
- s[len++] = ch;
- ch = prep_get_char ();
- type = CHAR_CLASS(ch);
- }
-
- unget_prep_char (ch);
- s[len] = 0;
-
- switch (SLang_guess_type ((char *) s))
- {
- default:
- tok->v.s_val = (char *) s;
- _SLparse_error ("Not a number", tok, 0);
- return (tok->type = EOF_TOKEN);
-
-#if SLANG_HAS_FLOAT
- case SLANG_FLOAT_TYPE:
- tok->v.s_val = _SLstring_make_hashed_string ((char *)s, len, &tok->hash);
- tok->free_sval_flag = 1;
- return (tok->type = FLOAT_TOKEN);
-
- case SLANG_DOUBLE_TYPE:
- tok->v.s_val = _SLstring_make_hashed_string ((char *)s, len, &tok->hash);
- tok->free_sval_flag = 1;
- return (tok->type = DOUBLE_TOKEN);
-#endif
-#if SLANG_HAS_COMPLEX
- case SLANG_COMPLEX_TYPE:
- tok->v.s_val = _SLstring_make_hashed_string ((char *)s, len, &tok->hash);
- tok->free_sval_flag = 1;
- return (tok->type = COMPLEX_TOKEN);
-#endif
- case SLANG_CHAR_TYPE:
- tok->v.long_val = (char)SLatol (s);
- return tok->type = CHAR_TOKEN;
- case SLANG_UCHAR_TYPE:
- tok->v.long_val = (unsigned char)SLatol (s);
- return tok->type = UCHAR_TOKEN;
- case SLANG_SHORT_TYPE:
- tok->v.long_val = (short)SLatol (s);
- return tok->type = SHORT_TOKEN;
- case SLANG_USHORT_TYPE:
- tok->v.long_val = (unsigned short)SLatoul (s);
- return tok->type = USHORT_TOKEN;
- case SLANG_INT_TYPE:
- tok->v.long_val = (int)SLatol (s);
- return tok->type = INT_TOKEN;
- case SLANG_UINT_TYPE:
- tok->v.long_val = (unsigned int)SLatoul (s);
- return tok->type = UINT_TOKEN;
- case SLANG_LONG_TYPE:
- tok->v.long_val = SLatol (s);
- return tok->type = LONG_TOKEN;
- case SLANG_ULONG_TYPE:
- tok->v.long_val = SLatoul (s);
- return tok->type = ULONG_TOKEN;
- }
-
- too_long_return_error:
- _SLparse_error ("Number too long for buffer", NULL, 0);
- return (tok->type == EOF_TOKEN);
-}
-
-static int get_op_token (_SLang_Token_Type *tok, char ch)
-{
- unsigned int offset;
- char second_char;
- unsigned char type;
- char *name;
-
- /* operators are: + - / * ++ -- += -= = == != > < >= <= | etc..
- * These lex to the longest valid operator token.
- */
-
- offset = CHAR_DATA((unsigned char) ch);
- if (0 == Operators [offset][1])
- {
- name = Operators [offset];
- type = name [3];
- }
- else
- {
- type = EOF_TOKEN;
- name = NULL;
- }
-
- second_char = prep_get_char ();
- do
- {
- if (second_char == Operators[offset][1])
- {
- name = Operators [offset];
- type = name [3];
- break;
- }
- offset++;
- }
- while (ch == Operators[offset][0]);
-
- tok->type = type;
-
- if (type == EOF_TOKEN)
- {
- _SLparse_error ("Operator not supported", NULL, 0);
- return type;
- }
-
- tok->v.s_val = name;
-
- if (name[1] == 0)
- unget_prep_char (second_char);
-
- return type;
-}
-
-/* If this returns non-zero, then it is a binary string */
-static int expand_escaped_string (register char *s,
- register char *t, register char *tmax,
- unsigned int *lenp)
-{
- char *s0;
- int is_binary = 0;
- char ch;
-
- s0 = s;
- while (t < tmax)
- {
- ch = *t++;
- if (ch == '\\')
- {
- t = _SLexpand_escaped_char (t, &ch);
- if (ch == 0) is_binary = 1;
- }
- *s++ = ch;
- }
- *s = 0;
-
- *lenp = (unsigned char) (s - s0);
- return is_binary;
-}
-
-static int get_string_token (_SLang_Token_Type *tok, unsigned char quote_char,
- unsigned char *s)
-{
- unsigned char ch;
- unsigned int len = 0;
- int has_quote = 0;
- int is_binary;
-
- while (1)
- {
- ch = prep_get_char ();
- if (ch == 0)
- {
- _SLparse_error("Expecting quote-character", NULL, 0);
- return (tok->type = EOF_TOKEN);
- }
- if (ch == quote_char) break;
-
- s[len++] = ch;
-
- if (len == (MAX_TOKEN_LEN - 1))
- {
- _SLparse_error ("String too long for buffer", NULL, 0);
- return (tok->type == EOF_TOKEN);
- }
-
- if (ch == '\\')
- {
- has_quote = 1;
- ch = prep_get_char ();
- s[len++] = ch;
- }
- }
-
- s[len] = 0;
-
- if (has_quote)
- is_binary = expand_escaped_string ((char *) s, (char *)s, (char *)s + len, &len);
- else is_binary = 0;
-
- if ('"' == quote_char)
- {
- tok->free_sval_flag = 1;
- if (is_binary)
- {
- tok->v.b_val = SLbstring_create (s, len);
- return tok->type = BSTRING_TOKEN;
- }
- else
- {
- tok->v.s_val = _SLstring_make_hashed_string ((char *)s,
- len,
- &tok->hash);
- tok->free_sval_flag = 1;
- return (tok->type = STRING_TOKEN);
- }
- }
-
- /* else single character */
- if (s[1] != 0)
- {
- _SLparse_error("Single char expected", NULL, 0);
- return (tok->type = EOF_TOKEN);
- }
-
- tok->v.long_val = s[0];
- return (tok->type = UCHAR_TOKEN);
-}
-
-static int extract_token (_SLang_Token_Type *tok, unsigned char ch, unsigned char t)
-{
- unsigned char s [MAX_TOKEN_LEN];
- unsigned int slen;
-
- s[0] = (char) ch;
- slen = 1;
-
- switch (t)
- {
- case ALPHA_CHAR:
- return get_ident_token (tok, s, slen);
-
- case OP_CHAR:
- return get_op_token (tok, ch);
-
- case DIGIT_CHAR:
- return get_number_token (tok, s, slen);
-
- case EXCL_CHAR:
- ch = prep_get_char ();
- s [slen++] = ch;
- t = CHAR_CLASS(ch);
- if (t == ALPHA_CHAR) return get_ident_token (tok, s, slen);
- if (t == OP_CHAR)
- {
- unget_prep_char (ch);
- return get_op_token (tok, '!');
- }
- _SLparse_error("Misplaced !", NULL, 0);
- return -1;
-
- case DOT_CHAR:
- ch = prep_get_char ();
- if (DIGIT_CHAR == CHAR_CLASS(ch))
- {
- s [slen++] = ch;
- return get_number_token (tok, s, slen);
- }
- unget_prep_char (ch);
- return (tok->type = DOT_TOKEN);
-
- case SEP_CHAR:
- return (tok->type = CHAR_DATA(ch));
-
- case DQUOTE_CHAR:
- case QUOTE_CHAR:
- return get_string_token (tok, ch, s);
-
- default:
- _SLparse_error("Invalid character", NULL, 0);
- return (tok->type = EOF_TOKEN);
- }
-}
-
-int _SLget_rpn_token (_SLang_Token_Type *tok)
-{
- unsigned char ch;
-
- tok->v.s_val = "??";
- while ((ch = *Input_Line_Pointer) != 0)
- {
- unsigned char t;
-
- Input_Line_Pointer++;
- if (WHITE_CHAR == (t = CHAR_CLASS(ch)))
- continue;
-
- if (NL_CHAR == t)
- break;
-
- return extract_token (tok, ch, t);
- }
- Input_Line_Pointer = Empty_Line;
- return EOF_TOKEN;
-}
-
-int _SLget_token (_SLang_Token_Type *tok)
-{
- unsigned char ch;
- unsigned char t;
-
- tok->num_refs = 1;
- tok->free_sval_flag = 0;
- tok->v.s_val = "??";
-#if _SLANG_HAS_DEBUG_CODE
- tok->line_number = LLT->line_num;
-#endif
- if (SLang_Error || (Input_Line == NULL))
- return (tok->type = EOF_TOKEN);
-
- while (1)
- {
- ch = *Input_Line_Pointer++;
- if (WHITE_CHAR == (t = CHAR_CLASS (ch)))
- continue;
-
- if (t != NL_CHAR)
- return extract_token (tok, ch, t);
-
- do
- {
- LLT->line_num++;
-#if _SLANG_HAS_DEBUG_CODE
- tok->line_number++;
-#endif
- Input_Line = LLT->read(LLT);
- if ((NULL == Input_Line) || SLang_Error)
- {
- Input_Line_Pointer = Input_Line = NULL;
- return (tok->type = EOF_TOKEN);
- }
- }
- while (0 == SLprep_line_ok(Input_Line, This_SLpp));
-
- Input_Line_Pointer = Input_Line;
- if (*Input_Line_Pointer == '.')
- {
- Input_Line_Pointer++;
- return tok->type = RPN_TOKEN;
- }
- }
-}
-
-static int prep_exists_function (char *line, char comment)
-{
- char buf[MAX_FILE_LINE_LEN], *b, *bmax;
- unsigned char ch;
-
- bmax = buf + (sizeof (buf) - 1);
-
- while (1)
- {
- /* skip whitespace */
- while ((ch = (unsigned char) *line),
- ch && (ch != '\n') && (ch <= ' '))
- line++;
-
- if ((ch <= '\n')
- || (ch == (unsigned char) comment)) break;
-
- b = buf;
- while ((ch = (unsigned char) *line) > ' ')
- {
- if (b < bmax) *b++ = (char) ch;
- line++;
- }
- *b = 0;
-
- if (SLang_is_defined (buf))
- return 1;
- }
-
- return 0;
-}
-
-static int prep_eval_expr (char *expr)
-{
- int ret;
-
- if (0 != SLang_load_string (expr))
- return -1;
- if (-1 == SLang_pop_integer (&ret))
- return -1;
- return (ret != 0);
-}
-
-
-int SLang_load_object (SLang_Load_Type *x)
-{
- SLPreprocess_Type this_pp;
- SLPreprocess_Type *save_this_pp;
- SLang_Load_Type *save_llt;
- char *save_input_line, *save_input_line_ptr;
-#if _SLANG_HAS_DEBUG_CODE
- int save_compile_line_num_info;
-#endif
- int save_auto_declare_variables;
-
- if (SLprep_exists_hook == NULL)
- SLprep_exists_hook = prep_exists_function;
-
- if (_SLprep_eval_hook == NULL)
- _SLprep_eval_hook = prep_eval_expr;
-
- if (-1 == SLprep_open_prep (&this_pp)) return -1;
-
- if (-1 == _SLcompile_push_context (x))
- return -1;
-
-#if _SLANG_HAS_DEBUG_CODE
- save_compile_line_num_info = _SLang_Compile_Line_Num_Info;
-#endif
- save_this_pp = This_SLpp;
- save_input_line = Input_Line;
- save_input_line_ptr = Input_Line_Pointer;
- save_llt = LLT;
- save_auto_declare_variables = _SLang_Auto_Declare_Globals;
-
- This_SLpp = &this_pp;
- Input_Line_Pointer = Input_Line = Empty_Line;
- LLT = x;
-
- x->line_num = 0;
- x->parse_level = 0;
- _SLang_Auto_Declare_Globals = x->auto_declare_globals;
-
-#if _SLANG_HAS_DEBUG_CODE
- _SLang_Compile_Line_Num_Info = Default_Compile_Line_Num_Info;
-#endif
-
- _SLparse_start (x);
- if (SLang_Error)
- do_line_file_error (x->line_num, x->name);
-
- _SLang_Auto_Declare_Globals = save_auto_declare_variables;
-
- if (SLang_Error) SLang_restart (0);
-
- (void) _SLcompile_pop_context ();
-
- Input_Line = save_input_line;
- Input_Line_Pointer = save_input_line_ptr;
- LLT = save_llt;
- This_SLpp = save_this_pp;
-
-#if _SLANG_HAS_DEBUG_CODE
- _SLang_Compile_Line_Num_Info = save_compile_line_num_info;
-#endif
-
- if (SLang_Error) return -1;
- return 0;
-}
-
-SLang_Load_Type *SLallocate_load_type (char *name)
-{
- SLang_Load_Type *x;
-
- if (NULL == (x = (SLang_Load_Type *)SLmalloc (sizeof (SLang_Load_Type))))
- return NULL;
- memset ((char *) x, 0, sizeof (SLang_Load_Type));
-
- if (name == NULL) name = "";
-
- x->name = SLang_create_slstring (name);
- if (x->name == NULL)
- {
- SLfree ((char *) x);
- return NULL;
- }
- return x;
-}
-
-void SLdeallocate_load_type (SLang_Load_Type *x)
-{
- if (x != NULL)
- {
- SLang_free_slstring (x->name);
- SLfree ((char *) x);
- }
-}
-
-typedef struct
-{
- char *string;
- char *ptr;
-}
-String_Client_Data_Type;
-
-static char *read_from_string (SLang_Load_Type *x)
-{
- String_Client_Data_Type *data;
- char *s, *s1, ch;
-
- data = (String_Client_Data_Type *)x->client_data;
- s1 = s = data->ptr;
-
- if (*s == 0)
- return NULL;
-
- while ((ch = *s) != 0)
- {
- s++;
- if (ch == '\n')
- break;
- }
-
- data->ptr = s;
- return s1;
-}
-
-int SLang_load_string (char *string)
-{
- SLang_Load_Type *x;
- String_Client_Data_Type data;
- int ret;
-
- if (string == NULL)
- return -1;
-
- /* Grab a private copy in case loading modifies string */
- if (NULL == (string = SLang_create_slstring (string)))
- return -1;
-
- /* To avoid creating a static data space for every string loaded,
- * all string objects will be regarded as identical. So, identify
- * all of them by ***string***
- */
- if (NULL == (x = SLallocate_load_type ("***string***")))
- {
- SLang_free_slstring (string);
- return -1;
- }
-
- x->client_data = (VOID_STAR) &data;
- x->read = read_from_string;
-
- data.ptr = data.string = string;
- if (-1 == (ret = SLang_load_object (x)))
- SLang_verror (SLang_Error, "called from eval: %s", string);
-
- SLang_free_slstring (string);
- SLdeallocate_load_type (x);
- return ret;
-}
-
-typedef struct
-{
- char *buf;
- FILE *fp;
-}
-File_Client_Data_Type;
-
-char *SLang_User_Prompt;
-static char *read_from_file (SLang_Load_Type *x)
-{
- FILE *fp;
- File_Client_Data_Type *c;
-
- c = (File_Client_Data_Type *)x->client_data;
- fp = c->fp;
-
- if ((fp == stdin) && (SLang_User_Prompt != NULL))
- {
- fputs (SLang_User_Prompt, stdout);
- fflush (stdout);
- }
-
- return fgets (c->buf, MAX_FILE_LINE_LEN, c->fp);
-}
-
-/* Note that file could be freed from Slang during run of this routine
- * so get it and store it !! (e.g., autoloading)
- */
-int (*SLang_Load_File_Hook) (char *);
-int SLang_load_file (char *f)
-{
- File_Client_Data_Type client_data;
- SLang_Load_Type *x;
- char *name, *buf;
- FILE *fp;
-
- if (SLang_Load_File_Hook != NULL)
- return (*SLang_Load_File_Hook) (f);
-
- if (f == NULL) name = "<stdin>"; else name = f;
-
- name = SLang_create_slstring (name);
- if (name == NULL)
- return -1;
-
- if (NULL == (x = SLallocate_load_type (name)))
- {
- SLang_free_slstring (name);
- return -1;
- }
-
- buf = NULL;
-
- if (f != NULL)
- fp = fopen (f, "r");
- else
- fp = stdin;
-
- if (fp == NULL)
- SLang_verror (SL_OBJ_NOPEN, "Unable to open %s", name);
- else if (NULL != (buf = SLmalloc (MAX_FILE_LINE_LEN + 1)))
- {
- client_data.fp = fp;
- client_data.buf = buf;
- x->client_data = (VOID_STAR) &client_data;
- x->read = read_from_file;
-
- (void) SLang_load_object (x);
- }
-
- if ((fp != NULL) && (fp != stdin))
- fclose (fp);
-
- SLfree (buf);
- SLang_free_slstring (name);
- SLdeallocate_load_type (x);
-
- if (SLang_Error)
- return -1;
-
- return 0;
-}
-
-int SLang_guess_type (char *t)
-{
- char *p;
- register char ch;
- int modifier = 0;
-
- if (*t == '-') t++;
- p = t;
-
-#if SLANG_HAS_FLOAT
- if (*p != '.')
- {
-#endif
- modifier = 0;
- while ((*p >= '0') && (*p <= '9')) p++;
- if (t == p) return (SLANG_STRING_TYPE);
- if ((*p == 'x') && (p == t + 1)) /* 0x?? */
- {
- modifier |= 8;
- p++;
- while (ch = *p,
- ((ch >= '0') && (ch <= '9'))
- || (((ch | 0x20) >= 'a') && ((ch | 0x20) <= 'f'))) p++;
- }
-
- /* Now look for UL, LU, UH, HU, L, H modifiers */
- while ((ch = *p) != 0)
- {
- ch |= 0x20;
- if (ch == 'h') modifier |= 1;
- else if (ch == 'l') modifier |= 2;
- else if (ch == 'u') modifier |= 4;
- else break;
- p++;
- }
- if ((1|2) == (modifier & (1|2))) /* hl present */
- return SLANG_STRING_TYPE;
-
- if (ch == 0)
- {
- if ((modifier & 0x7) == 0) return SLANG_INT_TYPE;
- if (modifier & 4)
- {
- if (modifier & 1) return SLANG_USHORT_TYPE;
- if (modifier & 2) return SLANG_ULONG_TYPE;
- return SLANG_UINT_TYPE;
- }
- if (modifier & 1) return SLANG_SHORT_TYPE;
- if (modifier & 2) return SLANG_LONG_TYPE;
- return SLANG_INT_TYPE;
- }
-
- if (modifier) return SLANG_STRING_TYPE;
-#if SLANG_HAS_FLOAT
- }
-
- /* now down to double case */
- if (*p == '.')
- {
- p++;
- while ((*p >= '0') && (*p <= '9')) p++;
- }
- if (*p == 0) return(SLANG_DOUBLE_TYPE);
- if ((*p != 'e') && (*p != 'E'))
- {
-# if SLANG_HAS_COMPLEX
- if (((*p == 'i') || (*p == 'j'))
- && (p[1] == 0))
- return SLANG_COMPLEX_TYPE;
-# endif
- if (((*p | 0x20) == 'f') && (p[1] == 0))
- return SLANG_FLOAT_TYPE;
-
- return SLANG_STRING_TYPE;
- }
-
- p++;
- if ((*p == '-') || (*p == '+')) p++;
- while ((*p >= '0') && (*p <= '9')) p++;
- if (*p != 0)
- {
-# if SLANG_HAS_COMPLEX
- if (((*p == 'i') || (*p == 'j'))
- && (p[1] == 0))
- return SLANG_COMPLEX_TYPE;
-# endif
- if (((*p | 0x20) == 'f') && (p[1] == 0))
- return SLANG_FLOAT_TYPE;
-
- return SLANG_STRING_TYPE;
- }
- return SLANG_DOUBLE_TYPE;
-#else
- return SLANG_STRING_TYPE;
-#endif /* SLANG_HAS_FLOAT */
-}
-
-static int hex_atoul (unsigned char *s, unsigned long *ul)
-{
- register unsigned char ch;
- register unsigned long value;
- register int base;
-
- s++; /* skip the leading 0 */
-
- /* look for 'x' which indicates hex */
- if ((*s | 0x20) == 'x')
- {
- base = 16;
- s++;
- if (*s == 0)
- {
- SLang_Error = SL_SYNTAX_ERROR;
- return -1;
- }
- }
- else base = 8;
-
- value = 0;
- while ((ch = *s++) != 0)
- {
- char ch1 = ch | 0x20;
- switch (ch1)
- {
- default:
- SLang_Error = SL_SYNTAX_ERROR;
- break;
-
- case 'u':
- case 'l':
- case 'h':
- *ul = value;
- return 0;
-
- case '8':
- case '9':
- if (base != 16) SLang_Error = SL_SYNTAX_ERROR;
- /* drop */
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- ch1 -= '0';
- break;
-
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- if (base != 16) SLang_Error = SL_SYNTAX_ERROR;
- ch1 = (ch1 - 'a') + 10;
- break;
- }
- value = value * base + ch1;
- }
- *ul = value;
- return 0;
-}
-
-/* Note: These routines do not check integer overflow. I would use the C
- * library functions atol and atoul but some implementations check overflow
- * and some do not. The following implementations provide a consistent
- * behavior.
- */
-unsigned long SLatoul (unsigned char *s)
-{
- int sign;
- unsigned long value;
-
- if (*s == '-') sign = -1;
- else
- {
- sign = 1;
- if (*s == '+') s++;
- }
-
- if (*s == '0')
- {
- if (-1 == hex_atoul (s, &value))
- return (unsigned long) -1;
- }
- else
- {
- while (WHITE_CHAR == CHAR_CLASS(*s))
- s++;
-
- value = 0;
- while (DIGIT_CHAR == CHAR_CLASS(*s))
- {
- value = value * 10 + (unsigned long) (*s - '0');
- s++;
- }
- }
-
- if (sign == -1)
- value = (unsigned long)-1L * value;
-
- return value;
-}
-
-long SLatol (unsigned char *s)
-{
- while (WHITE_CHAR == CHAR_CLASS(*s))
- s++;
-
- if (*s == '-')
- {
- long value = (long) SLatoul (s+1);
- return -value;
- }
- return (long) SLatoul (s);
-}
-
-int SLatoi (unsigned char *s)
-{
- return (int) SLatol (s);
-}
-
-static char *check_byte_compiled_token (char *buf)
-{
- unsigned int len_lo, len_hi, len;
-
- len_lo = (unsigned char) *Input_Line_Pointer++;
- if ((len_lo < 32)
- || ((len_hi = (unsigned char)*Input_Line_Pointer++) < 32)
- || ((len = (len_lo - 32) | ((len_hi - 32) << 7)) >= MAX_TOKEN_LEN))
- {
- SLang_doerror ("Byte compiled file appears corrupt");
- return NULL;
- }
-
- SLMEMCPY (buf, Input_Line_Pointer, len);
- buf += len;
- Input_Line_Pointer += len;
- *buf = 0;
- return buf;
-}
-
-void _SLcompile_byte_compiled (void)
-{
- unsigned char type;
- _SLang_Token_Type tok;
- char buf[MAX_TOKEN_LEN];
- char *ebuf;
- unsigned int len;
-
- memset ((char *) &tok, 0, sizeof (_SLang_Token_Type));
-
- while (SLang_Error == 0)
- {
- top_of_switch:
- type = (unsigned char) *Input_Line_Pointer++;
- switch (type)
- {
- case '\n':
- case 0:
- if (NULL == (Input_Line = LLT->read(LLT)))
- {
- Input_Line_Pointer = Input_Line = NULL;
- return;
- }
- Input_Line_Pointer = Input_Line;
- goto top_of_switch;
-
- case LINE_NUM_TOKEN:
- case CHAR_TOKEN:
- case UCHAR_TOKEN:
- case SHORT_TOKEN:
- case USHORT_TOKEN:
- case INT_TOKEN:
- case UINT_TOKEN:
- case LONG_TOKEN:
- case ULONG_TOKEN:
- if (NULL == check_byte_compiled_token (buf))
- return;
- tok.v.long_val = atol (buf);
- break;
-
- case COMPLEX_TOKEN:
- case FLOAT_TOKEN:
- case DOUBLE_TOKEN:
- if (NULL == check_byte_compiled_token (buf))
- return;
- tok.v.s_val = buf;
- break;
-
- case ESC_STRING_TOKEN:
- if (NULL == (ebuf = check_byte_compiled_token (buf)))
- return;
- tok.v.s_val = buf;
- if (expand_escaped_string (buf, buf, ebuf, &len))
- {
- tok.hash = len;
- type = _BSTRING_TOKEN;
- }
- else
- {
- tok.hash = _SLstring_hash ((unsigned char *)buf, (unsigned char *)buf + len);
- type = STRING_TOKEN;
- }
- break;
-
- case TMP_TOKEN:
- case DEFINE_TOKEN:
- case DEFINE_STATIC_TOKEN:
- case DEFINE_PRIVATE_TOKEN:
- case DEFINE_PUBLIC_TOKEN:
- case DOT_TOKEN:
- case STRING_TOKEN:
- case IDENT_TOKEN:
- case _REF_TOKEN:
- case _DEREF_ASSIGN_TOKEN:
- case _SCALAR_ASSIGN_TOKEN:
- case _SCALAR_PLUSEQS_TOKEN:
- case _SCALAR_MINUSEQS_TOKEN:
- case _SCALAR_TIMESEQS_TOKEN:
- case _SCALAR_DIVEQS_TOKEN:
- case _SCALAR_BOREQS_TOKEN:
- case _SCALAR_BANDEQS_TOKEN:
- case _SCALAR_PLUSPLUS_TOKEN:
- case _SCALAR_POST_PLUSPLUS_TOKEN:
- case _SCALAR_MINUSMINUS_TOKEN:
- case _SCALAR_POST_MINUSMINUS_TOKEN:
- case _STRUCT_ASSIGN_TOKEN:
- case _STRUCT_PLUSEQS_TOKEN:
- case _STRUCT_MINUSEQS_TOKEN:
- case _STRUCT_TIMESEQS_TOKEN:
- case _STRUCT_DIVEQS_TOKEN:
- case _STRUCT_BOREQS_TOKEN:
- case _STRUCT_BANDEQS_TOKEN:
- case _STRUCT_POST_MINUSMINUS_TOKEN:
- case _STRUCT_MINUSMINUS_TOKEN:
- case _STRUCT_POST_PLUSPLUS_TOKEN:
- case _STRUCT_PLUSPLUS_TOKEN:
- if (NULL == (ebuf = check_byte_compiled_token (buf)))
- return;
- tok.v.s_val = buf;
- tok.hash = _SLstring_hash ((unsigned char *)buf, (unsigned char *)ebuf);
- break;
-
- default:
- break;
- }
- tok.type = type;
-
- (*_SLcompile_ptr) (&tok);
- }
-}
-
-static int escape_string (unsigned char *s, unsigned char *smax,
- unsigned char *buf, unsigned char *buf_max,
- int *is_escaped)
-{
- unsigned char ch;
-
- *is_escaped = 0;
- while (buf < buf_max)
- {
- if (s == smax)
- {
- *buf = 0;
- return 0;
- }
-
- ch = *s++;
- switch (ch)
- {
- default:
- *buf++ = ch;
- break;
-
- case 0:
- *buf++ = '\\';
- if (buf < buf_max) *buf++ = 'x';
- if (buf < buf_max) *buf++ = '0';
- if (buf < buf_max) *buf++ = '0';
- *is_escaped = 1;
- break; /* return 0; */
-
- case '\n':
- *buf++ = '\\';
- if (buf < buf_max) *buf++ = 'n';
- *is_escaped = 1;
- break;
-
- case '\r':
- *buf++ = '\\';
- if (buf < buf_max) *buf++ = 'r';
- *is_escaped = 1;
- break;
-
- case 0x1A: /* ^Z */
- *buf++ = '\\';
- if (buf < buf_max) *buf++ = 'x';
- if (buf < buf_max) *buf++ = '1';
- if (buf < buf_max) *buf++ = 'A';
- *is_escaped = 1;
- break;
-
- case '\\':
- *buf++ = ch;
- if (buf < buf_max) *buf++ = ch;
- *is_escaped = 1;
- break;
- }
- }
- _SLparse_error ("String too long to byte-compile", NULL, 0);
- return -1;
-}
-
-static FILE *Byte_Compile_Fp;
-static unsigned int Byte_Compile_Line_Len;
-
-static int bytecomp_write_data (char *buf, unsigned int len)
-{
- char *err = "Write Error";
-
- if ((Byte_Compile_Line_Len + len + 1) >= MAX_FILE_LINE_LEN)
- {
- if (EOF == fputs ("\n", Byte_Compile_Fp))
- {
- SLang_doerror (err);
- return -1;
- }
- Byte_Compile_Line_Len = 0;
- }
-
- if (EOF == fputs (buf, Byte_Compile_Fp))
- {
- SLang_doerror (err);
- return -1;
- }
- Byte_Compile_Line_Len += len;
- return 0;
-}
-
-static void byte_compile_token (_SLang_Token_Type *tok)
-{
- unsigned char buf [MAX_TOKEN_LEN + 4], *buf_max;
- unsigned int len;
- char *b3;
- int is_escaped;
- unsigned char *s;
-
- if (SLang_Error) return;
-
- buf [0] = (unsigned char) tok->type;
- buf [1] = 0;
-
- buf_max = buf + sizeof(buf);
- b3 = (char *) buf + 3;
-
- switch (tok->type)
- {
- case LINE_NUM_TOKEN:
- case CHAR_TOKEN:
- case SHORT_TOKEN:
- case INT_TOKEN:
- case LONG_TOKEN:
- sprintf (b3, "%ld", tok->v.long_val);
- break;
-
- case UCHAR_TOKEN:
- case USHORT_TOKEN:
- case UINT_TOKEN:
- case ULONG_TOKEN:
- sprintf (b3, "%lu", tok->v.long_val);
- break;
-
- case _BSTRING_TOKEN:
- s = (unsigned char *) tok->v.s_val;
- len = (unsigned int) tok->hash;
-
- if (-1 == escape_string (s, s + len,
- (unsigned char *)b3, buf_max,
- &is_escaped))
- return;
-
- buf[0] = ESC_STRING_TOKEN;
- break;
-
- case BSTRING_TOKEN:
- if (NULL == (s = SLbstring_get_pointer (tok->v.b_val, &len)))
- return;
-
- if (-1 == escape_string (s, s + len,
- (unsigned char *)b3, buf_max,
- &is_escaped))
- return;
- buf[0] = ESC_STRING_TOKEN;
- break;
-
- case STRING_TOKEN:
- s = (unsigned char *)tok->v.s_val;
-
- if (-1 == escape_string (s, s + strlen ((char *)s),
- (unsigned char *)b3, buf_max,
- &is_escaped))
- return;
-
- if (is_escaped)
- buf[0] = ESC_STRING_TOKEN;
- break;
-
- /* a _SCALAR_* token is attached to an identifier. */
- case _DEREF_ASSIGN_TOKEN:
- case _SCALAR_ASSIGN_TOKEN:
- case _SCALAR_PLUSEQS_TOKEN:
- case _SCALAR_MINUSEQS_TOKEN:
- case _SCALAR_TIMESEQS_TOKEN:
- case _SCALAR_DIVEQS_TOKEN:
- case _SCALAR_BOREQS_TOKEN:
- case _SCALAR_BANDEQS_TOKEN:
- case _SCALAR_PLUSPLUS_TOKEN:
- case _SCALAR_POST_PLUSPLUS_TOKEN:
- case _SCALAR_MINUSMINUS_TOKEN:
- case _SCALAR_POST_MINUSMINUS_TOKEN:
- case DOT_TOKEN:
- case TMP_TOKEN:
- case DEFINE_TOKEN:
- case DEFINE_STATIC_TOKEN:
- case DEFINE_PRIVATE_TOKEN:
- case DEFINE_PUBLIC_TOKEN:
- case FLOAT_TOKEN:
- case DOUBLE_TOKEN:
- case COMPLEX_TOKEN:
- case IDENT_TOKEN:
- case _REF_TOKEN:
- case _STRUCT_ASSIGN_TOKEN:
- case _STRUCT_PLUSEQS_TOKEN:
- case _STRUCT_MINUSEQS_TOKEN:
- case _STRUCT_TIMESEQS_TOKEN:
- case _STRUCT_DIVEQS_TOKEN:
- case _STRUCT_BOREQS_TOKEN:
- case _STRUCT_BANDEQS_TOKEN:
- case _STRUCT_POST_MINUSMINUS_TOKEN:
- case _STRUCT_MINUSMINUS_TOKEN:
- case _STRUCT_POST_PLUSPLUS_TOKEN:
- case _STRUCT_PLUSPLUS_TOKEN:
- strcpy (b3, tok->v.s_val);
- break;
-
- default:
- b3 = NULL;
- }
-
- if (b3 != NULL)
- {
- len = strlen (b3);
- buf[1] = (unsigned char) ((len & 0x7F) + 32);
- buf[2] = (unsigned char) (((len >> 7) & 0x7F) + 32);
- len += 3;
- }
- else len = 1;
-
- (void) bytecomp_write_data ((char *)buf, len);
-}
-
-int SLang_byte_compile_file (char *name, int method)
-{
- char file [1024];
-
- (void) method;
- if (strlen (name) + 2 >= sizeof (file))
- {
- SLang_verror (SL_INVALID_PARM, "Filename too long");
- return -1;
- }
- sprintf (file, "%sc", name);
- if (NULL == (Byte_Compile_Fp = fopen (file, "w")))
- {
- SLang_verror(SL_OBJ_NOPEN, "%s: unable to open", file);
- return -1;
- }
-
- Byte_Compile_Line_Len = 0;
- if (-1 != bytecomp_write_data (".#", 2))
- {
- _SLcompile_ptr = byte_compile_token;
- (void) SLang_load_file (name);
- _SLcompile_ptr = _SLcompile;
-
- (void) bytecomp_write_data ("\n", 1);
- }
-
- if (EOF == fclose (Byte_Compile_Fp))
- SLang_doerror ("Write Error");
-
- if (SLang_Error)
- {
- SLang_verror (0, "Error processing %s", name);
- return -1;
- }
- return 0;
-}
-
-int SLang_generate_debug_info (int x)
-{
- int y = Default_Compile_Line_Num_Info;
- Default_Compile_Line_Num_Info = x;
- return y;
-}
diff --git a/mdk-stage1/slang/sltypes.c b/mdk-stage1/slang/sltypes.c
deleted file mode 100644
index 05b8741b1..000000000
--- a/mdk-stage1/slang/sltypes.c
+++ /dev/null
@@ -1,966 +0,0 @@
-/* Basic type operations for S-Lang */
-/* Copyright (c) 1992, 1996, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#if SLANG_HAS_FLOAT
-# include <math.h>
-#endif
-
-#define SL_APP_WANTS_FOREACH /* for String_Type */
-#include "slang.h"
-#include "_slang.h"
-
-int SLpop_string (char **s) /*{{{*/
-{
- char *sls;
-
- *s = NULL;
-
- if (-1 == SLang_pop_slstring (&sls))
- return -1;
-
- if (NULL == (*s = SLmake_string (sls)))
- {
- SLang_free_slstring (sls);
- return -1;
- }
-
- SLang_free_slstring (sls);
- return 0;
-}
-
-/*}}}*/
-
-int SLang_pop_slstring (char **s) /*{{{*/
-{
- return SLclass_pop_ptr_obj (SLANG_STRING_TYPE, (VOID_STAR *)s);
-}
-
-/*}}}*/
-
-/* if *data != 0, string should be freed upon use. */
-int SLang_pop_string(char **s, int *data) /*{{{*/
-{
- if (SLpop_string (s))
- return -1;
-
- *data = 1;
- return 0;
-}
-
-/*}}}*/
-
-int _SLang_push_slstring (char *s)
-{
- if (0 == SLclass_push_ptr_obj (SLANG_STRING_TYPE, (VOID_STAR)s))
- return 0;
-
- SLang_free_slstring (s);
- return -1;
-}
-
-int _SLpush_alloced_slstring (char *s, unsigned int len)
-{
- if (NULL == (s = _SLcreate_via_alloced_slstring (s, len)))
- return -1;
-
- return _SLang_push_slstring (s);
-}
-
-int SLang_push_string (char *t) /*{{{*/
-{
- if (t == NULL)
- return SLang_push_null ();
-
- if (NULL == (t = SLang_create_slstring (t)))
- return -1;
-
- return _SLang_push_slstring (t);
-}
-
-/*}}}*/
-
-int _SLang_dup_and_push_slstring (char *s)
-{
- if (NULL == (s = _SLstring_dup_slstring (s)))
- return SLang_push_null ();
-
- return _SLang_push_slstring (s);
-}
-
-
-/* This function _always_ frees the malloced string */
-int SLang_push_malloced_string (char *c) /*{{{*/
-{
- int ret;
-
- ret = SLang_push_string (c);
- SLfree (c);
-
- return ret;
-}
-
-/*}}}*/
-
-#if 0
-static int int_int_power (int a, int b)
-{
- int r, s;
-
- if (a == 0) return 0;
- if (b < 0) return 0;
- if (b == 0) return 1;
-
- s = 1;
- if (a < 0)
- {
- if ((b % 2) == 1) s = -1;
- a = -a;
- }
-
- /* FIXME: Priority=low
- * This needs optimized
- */
- r = 1;
- while (b)
- {
- r = r * a;
- b--;
- }
- return r * s;
-}
-#endif
-
-static int
-string_string_bin_op_result (int op, unsigned char a, unsigned char b,
- unsigned char *c)
-{
- (void) a;
- (void) b;
- switch (op)
- {
- default:
- return 0;
-
- case SLANG_PLUS:
- *c = SLANG_STRING_TYPE;
- break;
-
- case SLANG_GT:
- case SLANG_GE:
- case SLANG_LT:
- case SLANG_LE:
- case SLANG_EQ:
- case SLANG_NE:
- *c = SLANG_CHAR_TYPE;
- break;
- }
- return 1;
-}
-
-static int
-string_string_bin_op (int op,
- unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp, unsigned int nb,
- VOID_STAR cp)
-{
- char *ic;
- char **a, **b, **c;
- unsigned int n, n_max;
- unsigned int da, db;
-
- (void) a_type;
- (void) b_type;
-
- if (na == 1) da = 0; else da = 1;
- if (nb == 1) db = 0; else db = 1;
-
- if (na > nb) n_max = na; else n_max = nb;
-
- a = (char **) ap;
- b = (char **) bp;
- for (n = 0; n < n_max; n++)
- {
- if ((*a == NULL) || (*b == NULL))
- {
- SLang_verror (SL_VARIABLE_UNINITIALIZED, "String element[%u] not initialized for binary operation", n);
- return -1;
- }
- a += da; b += db;
- }
-
- a = (char **) ap;
- b = (char **) bp;
- ic = (char *) cp;
- c = NULL;
-
- switch (op)
- {
- case SLANG_DIVIDE:
- case SLANG_MINUS:
- default:
- return 0;
-
- case SLANG_PLUS:
- /* Concat */
- c = (char **) cp;
- for (n = 0; n < n_max; n++)
- {
- if (NULL == (c[n] = SLang_concat_slstrings (*a, *b)))
- goto return_error;
-
- a += da; b += db;
- }
- break;
-
- case SLANG_NE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (0 != strcmp (*a, *b));
- a += da;
- b += db;
- }
- break;
- case SLANG_GT:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (strcmp (*a, *b) > 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_GE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (strcmp (*a, *b) >= 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_LT:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (strcmp (*a, *b) < 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_LE:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (strcmp (*a, *b) <= 0);
- a += da;
- b += db;
- }
- break;
- case SLANG_EQ:
- for (n = 0; n < n_max; n++)
- {
- ic [n] = (strcmp (*a, *b) == 0);
- a += da;
- b += db;
- }
- break;
- }
- return 1;
-
- return_error:
- if (c != NULL)
- {
- unsigned int nn;
- for (nn = 0; nn < n; nn++)
- {
- SLang_free_slstring (c[nn]);
- c[nn] = NULL;
- }
- for (nn = n; nn < n_max; nn++)
- c[nn] = NULL;
- }
- return -1;
-}
-
-static void string_destroy (unsigned char unused, VOID_STAR s)
-{
- (void) unused;
- SLang_free_slstring (*(char **) s);
-}
-
-static int string_push (unsigned char unused, VOID_STAR sptr)
-{
- (void) unused;
- return SLang_push_string (*(char **) sptr);
-}
-
-static int string_cmp (unsigned char unused, VOID_STAR ap, VOID_STAR bp, int *c)
-{
- char *a, *b;
- (void) unused;
-
- a = *(char **) ap;
- b = *(char **) bp;
- if (a != b)
- {
- if (a == NULL) *c = -1;
- else if (b == NULL) *c = 1;
- else *c = strcmp (a, b);
- return 0;
- }
- *c = 0;
- return 0;
-}
-
-static int string_to_int (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- char **s;
- unsigned int i;
- int *b;
-
- (void) a_type;
- (void) b_type;
-
- s = (char **) ap;
- b = (int *) bp;
- for (i = 0; i < na; i++)
- {
- if (s[i] == NULL) b[i] = 0;
- else b[i] = s[i][0];
- }
- return 1;
-}
-
-struct _SLang_Foreach_Context_Type
-{
- char *string;
- unsigned int n;
-};
-
-static SLang_Foreach_Context_Type *
-string_foreach_open (unsigned char type, unsigned int num)
-{
- char *s;
- SLang_Foreach_Context_Type *c;
-
- (void) type;
- if (num != 0)
- {
- SLang_verror (SL_NOT_IMPLEMENTED,
- "'foreach using' form not supported by String_Type");
- SLdo_pop_n (num + 1);
- return NULL;
- }
- if (-1 == SLang_pop_slstring (&s))
- return NULL;
-
- c = (SLang_Foreach_Context_Type *)SLmalloc (sizeof (SLang_Foreach_Context_Type));
- if (c == NULL)
- {
- SLang_free_slstring (s);
- return NULL;
- }
-
- memset ((char *) c, 0, sizeof (SLang_Foreach_Context_Type));
- c->string = s;
-
- return c;
-}
-
-static void string_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- if (c == NULL) return;
- SLang_free_slstring (c->string);
- SLfree ((char *) c);
-}
-
-static int string_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- char ch;
-
- (void) type;
- ch = c->string[c->n];
- if (ch == 0)
- return 0; /* done */
-
- c->n += 1;
-
- if (-1 == SLclass_push_int_obj (SLANG_INT_TYPE, ch))
- return -1;
-
- return 1;
-}
-
-int _SLstring_list_push (_SLString_List_Type *p)
-{
- unsigned int num;
- int inum;
- SLang_Array_Type *at;
- char **buf;
-
- if ((buf = p->buf) == NULL)
- return SLang_push_null ();
-
- num = p->num;
- inum = (int) num;
-
- if (num == 0) num++;
- if (num != p->max_num)
- {
- if (NULL == (buf = (char **)SLrealloc ((char *) buf, sizeof (char *) * num)))
- {
- _SLstring_list_delete (p);
- return -1;
- }
- p->max_num = num;
- p->buf = buf;
- }
-
- if (NULL == (at = SLang_create_array (SLANG_STRING_TYPE, 0, (VOID_STAR) buf, &inum, 1)))
- {
- _SLstring_list_delete (p);
- return -1;
- }
- p->buf = NULL;
- _SLstring_list_delete (p);
- return SLang_push_array (at, 1);
-}
-
-int _SLstring_list_init (_SLString_List_Type *p, unsigned int max_num, unsigned int delta_num)
-{
- if (NULL == (p->buf = (char **) SLmalloc (max_num * sizeof (char *))))
- return -1;
-
- p->max_num = max_num;
- p->num = 0;
- p->delta_num = delta_num;
- return 0;
-}
-
-int _SLstring_list_append (_SLString_List_Type *p, char *s)
-{
- if (s == NULL)
- {
- _SLstring_list_delete (p);
- return -1;
- }
-
- if (p->max_num == p->num)
- {
- char **b;
- unsigned int max_num = p->num + p->delta_num;
- b = (char **)SLrealloc ((char *)p->buf, max_num * sizeof (char *));
- if (b == NULL)
- {
- _SLstring_list_delete (p);
- SLang_free_slstring (s);
- return -1;
- }
- p->buf = b;
- p->max_num = max_num;
- }
-
- p->buf[p->num] = s;
- p->num++;
- return 0;
-}
-
-void _SLstring_list_delete (_SLString_List_Type *p)
-{
- if (p->buf != NULL)
- {
- unsigned int i, imax;
- char **buf = p->buf;
- imax = p->num;
- for (i = 0; i < imax; i++)
- SLang_free_slstring (buf[i]);
- SLfree ((char *)buf);
- p->buf = NULL;
- }
-}
-
-/* Ref type */
-int SLang_pop_ref (SLang_Ref_Type **ref)
-{
- return SLclass_pop_ptr_obj (SLANG_REF_TYPE, (VOID_STAR *)ref);
-}
-
-/* Note: This is ok if ptr is NULL. Some routines rely on this behavior */
-int _SLang_push_ref (int is_global, VOID_STAR ptr)
-{
- SLang_Ref_Type *r;
-
- if (ptr == NULL)
- return SLang_push_null ();
-
- r = (SLang_Ref_Type *) SLmalloc (sizeof (SLang_Ref_Type));
- if (r == NULL) return -1;
-
- r->is_global = is_global;
- r->v.nt = (SLang_Name_Type *) ptr;
-
- if (-1 == SLclass_push_ptr_obj (SLANG_REF_TYPE, (VOID_STAR) r))
- {
- SLfree ((char *) r);
- return -1;
- }
- return 0;
-}
-
-static void ref_destroy (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
- SLfree ((char *) *(SLang_Ref_Type **)ptr);
-}
-
-void SLang_free_ref (SLang_Ref_Type *ref)
-{
- SLfree ((char *) ref);
-}
-
-static int ref_push (unsigned char type, VOID_STAR ptr)
-{
- SLang_Ref_Type *ref;
-
- (void) type;
-
- ref = *(SLang_Ref_Type **) ptr;
-
- if (ref == NULL)
- return SLang_push_null ();
-
- return _SLang_push_ref (ref->is_global, (VOID_STAR) ref->v.nt);
-}
-
-int SLang_assign_to_ref (SLang_Ref_Type *ref, unsigned char type, VOID_STAR v)
-{
- SLang_Object_Type *stkptr;
- SLang_Class_Type *cl;
-
- cl = _SLclass_get_class (type);
-
- /* Use apush since this function is passing ``array'' bytes rather than the
- * address of the data. I need to somehow make this more consistent. To
- * see what I mean, consider:
- *
- * double z[2];
- * char *s = "silly";
- * int i;
- *
- * SLang_assign_to_ref (ref, SLANG_INT_TYPE, &i);
- * SLang_assign_to_ref (ref, SLANG_STRING_TYPE, &s);
- * SLang_assign_to_ref (ref, SLANG_COMPLEX_TYPE, z);
- *
- * That is, all external routines that take a VOID_STAR argument need to
- * be documented such that how the function should be called with the
- * various class_types.
- */
- if (-1 == (*cl->cl_apush) (type, v))
- return -1;
-
- stkptr = _SLStack_Pointer;
- if (0 == _SLang_deref_assign (ref))
- return 0;
-
- if (stkptr != _SLStack_Pointer)
- SLdo_pop ();
-
- return -1;
-}
-
-static char *ref_string (unsigned char type, VOID_STAR ptr)
-{
- SLang_Ref_Type *ref;
-
- (void) type;
- ref = *(SLang_Ref_Type **) ptr;
- if (ref->is_global)
- {
- char *name, *s;
-
- name = ref->v.nt->name;
- if ((name != NULL)
- && (NULL != (s = SLmalloc (strlen(name) + 2))))
- {
- *s = '&';
- strcpy (s + 1, name);
- return s;
- }
-
- return NULL;
- }
- return SLmake_string ("Local Variable Reference");
-}
-
-static int ref_dereference (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return _SLang_dereference_ref (*(SLang_Ref_Type **) ptr);
-}
-
-static int ref_cmp (unsigned char type, VOID_STAR a, VOID_STAR b, int *c)
-{
- SLang_Ref_Type *ra, *rb;
-
- (void) type;
-
- ra = *(SLang_Ref_Type **)a;
- rb = *(SLang_Ref_Type **)b;
-
- if (ra == NULL)
- {
- if (rb == NULL) *c = 0;
- else *c = -1;
- return 0;
- }
- if (rb == NULL)
- {
- *c = 1;
- return 0;
- }
-
- if (ra->v.nt == rb->v.nt)
- *c = 0;
- else *c = strcmp (ra->v.nt->name, rb->v.nt->name);
- return 0;
-}
-
-
-SLang_Name_Type *SLang_pop_function (void)
-{
- SLang_Ref_Type *ref;
- SLang_Name_Type *f;
-
- if (SLang_peek_at_stack () == SLANG_STRING_TYPE)
- {
- char *name;
-
- if (-1 == SLang_pop_slstring (&name))
- return NULL;
-
- if (NULL == (f = SLang_get_function (name)))
- {
- SLang_verror (SL_UNDEFINED_NAME, "Function %s does not exist", name);
- SLang_free_slstring (name);
- return NULL;
- }
- SLang_free_slstring (name);
- return f;
- }
-
- if (-1 == SLang_pop_ref (&ref))
- return NULL;
-
- f = SLang_get_fun_from_ref (ref);
- SLang_free_ref (ref);
- return f;
-}
-
-/* This is a placeholder for version 2 */
-void SLang_free_function (SLang_Name_Type *f)
-{
- (void) f;
-}
-
-/* NULL type */
-int SLang_push_null (void)
-{
- return SLclass_push_ptr_obj (SLANG_NULL_TYPE, NULL);
-}
-
-int SLang_pop_null (void)
-{
- SLang_Object_Type obj;
- return _SLang_pop_object_of_type (SLANG_NULL_TYPE, &obj, 0);
-}
-
-static int null_push (unsigned char unused, VOID_STAR ptr_unused)
-{
- (void) unused; (void) ptr_unused;
- return SLang_push_null ();
-}
-
-static int null_pop (unsigned char type, VOID_STAR ptr)
-{
- (void) type;
-
- if (-1 == SLang_pop_null ())
- return -1;
-
- *(char **) ptr = NULL;
- return 0;
-}
-
-/* Implement foreach (NULL) using (whatever) to do nothing. This is useful
- * because suppose that X is a list but is NULL in some situations. Then
- * when it is NULL, we want foreach(X) to do nothing.
- */
-static SLang_Foreach_Context_Type *
-null_foreach_open (unsigned char type, unsigned int num)
-{
- (void) type;
- SLdo_pop_n (num + 1);
- return (SLang_Foreach_Context_Type *)1;
-}
-
-static void null_foreach_close (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- (void) c;
-}
-
-static int null_foreach (unsigned char type, SLang_Foreach_Context_Type *c)
-{
- (void) type;
- (void) c;
- return 0;
-}
-
-static int null_to_bool (unsigned char type, int *t)
-{
- (void) type;
- *t = 0;
- return SLang_pop_null ();
-}
-
-/* AnyType */
-int _SLanytype_typecast (unsigned char a_type, VOID_STAR ap, unsigned int na,
- unsigned char b_type, VOID_STAR bp)
-{
- SLang_Class_Type *cl;
- SLang_Any_Type **any;
- unsigned int i;
- unsigned int sizeof_type;
-
- (void) b_type;
-
- any = (SLang_Any_Type **) bp;
-
- cl = _SLclass_get_class (a_type);
- sizeof_type = cl->cl_sizeof_type;
-
- for (i = 0; i < na; i++)
- {
- if ((-1 == (*cl->cl_apush) (a_type, ap))
- || (-1 == SLang_pop_anytype (&any[i])))
- {
- while (i != 0)
- {
- i--;
- SLang_free_anytype (any[i]);
- any[i] = NULL;
- }
- return -1;
- }
- ap = (VOID_STAR)((char *)ap + sizeof_type);
- }
-
- return 1;
-}
-
-int SLang_pop_anytype (SLang_Any_Type **any)
-{
- SLang_Object_Type *obj;
-
- *any = NULL;
-
- if (NULL == (obj = (SLang_Object_Type *) SLmalloc (sizeof (SLang_Object_Type))))
- return -1;
-
- if (-1 == SLang_pop (obj))
- {
- SLfree ((char *) obj);
- return -1;
- }
- *any = (SLang_Any_Type *)obj;
- return 0;
-}
-
-/* This function will result in an object that is represented by the
- * anytype object.
- */
-int SLang_push_anytype (SLang_Any_Type *any)
-{
- return _SLpush_slang_obj ((SLang_Object_Type *)any);
-}
-
-/* After this call, the stack will contain an Any_Type object */
-static int anytype_push (unsigned char type, VOID_STAR ptr)
-{
- SLang_Any_Type *obj;
-
- /* Push the object onto the stack, then pop it back off into our anytype
- * container. That way, any memory managing associated with the type
- * will be performed automatically. Another way to think of it is that
- * pushing an Any_Type onto the stack will create another copy of the
- * object represented by it.
- */
- if (-1 == _SLpush_slang_obj (*(SLang_Object_Type **)ptr))
- return -1;
-
- if (-1 == SLang_pop_anytype (&obj))
- return -1;
-
- /* There is no need to reference count the anytype objects since every
- * push results in a new anytype container.
- */
- if (-1 == SLclass_push_ptr_obj (type, (VOID_STAR) obj))
- {
- SLang_free_anytype (obj);
- return -1;
- }
-
- return 0;
-}
-
-static void anytype_destroy (unsigned char type, VOID_STAR ptr)
-{
- SLang_Object_Type *obj;
-
- (void) type;
- obj = *(SLang_Object_Type **)ptr;
- SLang_free_object (obj);
- SLfree ((char *) obj);
-}
-
-void SLang_free_anytype (SLang_Any_Type *any)
-{
- if (any != NULL)
- anytype_destroy (SLANG_ANY_TYPE, (VOID_STAR) &any);
-}
-
-static int anytype_dereference (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return _SLpush_slang_obj (*(SLang_Object_Type **) ptr);
-}
-
-/* SLANG_INTP_TYPE */
-static int intp_push (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return SLclass_push_int_obj (SLANG_INT_TYPE, **(int **)ptr);
-}
-
-static int intp_pop (unsigned char unused, VOID_STAR ptr)
-{
- (void) unused;
- return SLang_pop_integer (*(int **) ptr);
-}
-
-static int undefined_push (unsigned char t, VOID_STAR p)
-{
- (void) t; (void) p;
- if (SLang_Error == 0)
- SLang_Error = SL_VARIABLE_UNINITIALIZED;
- return -1;
-}
-
-int _SLregister_types (void)
-{
- SLang_Class_Type *cl;
-
- /* A good compiler should optimize this code away. */
- if ((sizeof(short) != SIZEOF_SHORT)
- || (sizeof(int) != SIZEOF_INT)
- || (sizeof(long) != SIZEOF_LONG)
- || (sizeof(float) != SIZEOF_FLOAT)
- || (sizeof(double) != SIZEOF_DOUBLE))
- SLang_exit_error ("S-Lang Library not built properly. Fix SIZEOF_* in config.h and recompile");
-
- if (-1 == _SLclass_init ())
- return -1;
-
- /* Undefined Type */
- if (NULL == (cl = SLclass_allocate_class ("Undefined_Type")))
- return -1;
- (void) SLclass_set_push_function (cl, undefined_push);
- (void) SLclass_set_pop_function (cl, undefined_push);
- if (-1 == SLclass_register_class (cl, SLANG_UNDEFINED_TYPE, sizeof (int),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
- /* Make Void_Type a synonym for Undefined_Type. Note that this does
- * not mean that Void_Type represents SLANG_VOID_TYPE. Void_Type is
- * used by array_map to indicate no array is to be created.
- */
- if (-1 == SLclass_create_synonym ("Void_Type", SLANG_UNDEFINED_TYPE))
- return -1;
-
- if (-1 == _SLarith_register_types ())
- return -1;
-
- /* SLANG_INTP_TYPE */
- if (NULL == (cl = SLclass_allocate_class ("_IntegerP_Type")))
- return -1;
- (void) SLclass_set_push_function (cl, intp_push);
- (void) SLclass_set_pop_function (cl, intp_pop);
- if (-1 == SLclass_register_class (cl, SLANG_INTP_TYPE, sizeof (int),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
-
- /* String Type */
-
- if (NULL == (cl = SLclass_allocate_class ("String_Type")))
- return -1;
- (void) SLclass_set_destroy_function (cl, string_destroy);
- (void) SLclass_set_push_function (cl, string_push);
- cl->cl_foreach_open = string_foreach_open;
- cl->cl_foreach_close = string_foreach_close;
- cl->cl_foreach = string_foreach;
- cl->cl_cmp = string_cmp;
- if (-1 == SLclass_register_class (cl, SLANG_STRING_TYPE, sizeof (char *),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- /* ref Type */
- if (NULL == (cl = SLclass_allocate_class ("Ref_Type")))
- return -1;
- cl->cl_dereference = ref_dereference;
- cl->cl_push = ref_push;
- cl->cl_destroy = ref_destroy;
- cl->cl_string = ref_string;
- cl->cl_cmp = ref_cmp;
- if (-1 == SLclass_register_class (cl, SLANG_REF_TYPE,
- sizeof (SLang_Ref_Type *),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- /* NULL Type */
-
- if (NULL == (cl = SLclass_allocate_class ("Null_Type")))
- return -1;
- cl->cl_push = null_push;
- cl->cl_pop = null_pop;
- cl->cl_foreach_open = null_foreach_open;
- cl->cl_foreach_close = null_foreach_close;
- cl->cl_foreach = null_foreach;
- cl->cl_to_bool = null_to_bool;
- if (-1 == SLclass_register_class (cl, SLANG_NULL_TYPE, sizeof (char *),
- SLANG_CLASS_TYPE_SCALAR))
- return -1;
-
- /* AnyType */
- if (NULL == (cl = SLclass_allocate_class ("Any_Type")))
- return -1;
- (void) SLclass_set_push_function (cl, anytype_push);
- (void) SLclass_set_destroy_function (cl, anytype_destroy);
- cl->cl_dereference = anytype_dereference;
- if (-1 == SLclass_register_class (cl, SLANG_ANY_TYPE, sizeof (VOID_STAR),
- SLANG_CLASS_TYPE_PTR))
- return -1;
-
- if (-1 == _SLang_init_bstring ())
- return -1;
-
- if ((-1 == SLclass_add_typecast (SLANG_STRING_TYPE, SLANG_INT_TYPE, string_to_int, 0))
- || (-1 == SLclass_add_binary_op (SLANG_STRING_TYPE, SLANG_STRING_TYPE, string_string_bin_op, string_string_bin_op_result)))
- return -1;
-
- return 0;
-}
-
diff --git a/mdk-stage1/slang/slutty.c b/mdk-stage1/slang/slutty.c
deleted file mode 100644
index 636c1bb90..000000000
--- a/mdk-stage1/slang/slutty.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/* slutty.c --- Unix Low level terminal (tty) functions for S-Lang */
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-#include "slinclud.h"
-
-#include <signal.h>
-/* sequent support thanks to Kenneth Lorber <keni@oasys.dt.navy.mil> */
-/* SYSV (SYSV ISC R3.2 v3.0) provided by iain.lea@erlm.siemens.de */
-
-#if defined (_AIX) && !defined (_ALL_SOURCE)
-# define _ALL_SOURCE /* so NBBY is defined in <sys/types.h> */
-#endif
-
-#include <sys/time.h>
-#include <sys/types.h>
-
-#ifdef SYSV
-# include <fcntl.h>
-# ifndef CRAY
-# include <sys/termio.h>
-# include <sys/stream.h>
-# include <sys/ptem.h>
-# include <sys/tty.h>
-# endif
-#endif
-
-#ifdef __BEOS__
-/* Prototype for select */
-# include <net/socket.h>
-#endif
-
-#include <sys/file.h>
-
-#ifndef sun
-# include <sys/ioctl.h>
-#endif
-
-#ifdef __QNX__
-# include <sys/select.h>
-#endif
-
-#include <sys/stat.h>
-#include <errno.h>
-
-#if defined (_AIX) && !defined (FD_SET)
-# include <sys/select.h> /* for FD_ISSET, FD_SET, FD_ZERO */
-#endif
-
-#ifndef O_RDWR
-# include <fcntl.h>
-#endif
-
-#include "slang.h"
-#include "_slang.h"
-
-int SLang_TT_Read_FD = -1;
-int SLang_TT_Baud_Rate;
-
-#ifdef HAVE_TERMIOS_H
-# if !defined(HAVE_TCGETATTR) || !defined(HAVE_TCSETATTR)
-# undef HAVE_TERMIOS_H
-# endif
-#endif
-
-#ifndef HAVE_TERMIOS_H
-
-# if !defined(CBREAK) && defined(sun)
-# ifndef BSD_COMP
-# define BSD_COMP 1
-# endif
-# include <sys/ioctl.h>
-# endif
-
-typedef struct
- {
- struct tchars t;
- struct ltchars lt;
- struct sgttyb s;
- }
-TTY_Termio_Type;
-#else
-# include <termios.h>
-typedef struct termios TTY_Termio_Type;
-#endif
-
-static TTY_Termio_Type Old_TTY;
-
-#ifdef HAVE_TERMIOS_H
-typedef struct
-{
- unsigned int key;
- unsigned int value;
-} Baud_Rate_Type;
-
-static Baud_Rate_Type Baud_Rates [] =
-{
-#ifdef B0
- {B0, 0},
-#endif
-#ifdef B50
- {B50, 50},
-#endif
-#ifdef B75
- {B75, 75},
-#endif
-#ifdef B110
- {B110, 110},
-#endif
-#ifdef B134
- {B134, 134},
-#endif
-#ifdef B150
- {B150, 150},
-#endif
-#ifdef B200
- {B200, 200},
-#endif
-#ifdef B300
- {B300, 300},
-#endif
-#ifdef B600
- {B600, 600},
-#endif
-#ifdef B1200
- {B1200, 1200},
-#endif
-#ifdef B1800
- {B1800, 1800},
-#endif
-#ifdef B2400
- {B2400, 2400},
-#endif
-#ifdef B4800
- {B4800, 4800},
-#endif
-#ifdef B9600
- {B9600, 9600},
-#endif
-#ifdef B19200
- {B19200, 19200},
-#endif
-#ifdef B38400
- {B38400, 38400},
-#endif
-#ifdef B57600
- {B57600, 57600},
-#endif
-#ifdef B115200
- {B115200, 115200},
-#endif
-#ifdef B230400
- {B230400, 230400},
-#endif
- {0, 0}
-};
-
-static void
-set_baud_rate (TTY_Termio_Type *tty)
-{
-#ifdef HAVE_CFGETOSPEED
- unsigned int speed;
- Baud_Rate_Type *b, *bmax;
-
- if (SLang_TT_Baud_Rate)
- return; /* already set */
-
- speed = (unsigned int) cfgetospeed (tty);
-
- b = Baud_Rates;
- bmax = b + (sizeof (Baud_Rates)/sizeof(Baud_Rates[0]));
- while (b < bmax)
- {
- if (b->key == speed)
- {
- SLang_TT_Baud_Rate = b->value;
- return;
- }
- b++;
- }
-#else
- (void) tty;
-#endif
-}
-
-#endif /* HAVE_TERMIOS_H */
-
-#ifdef HAVE_TERMIOS_H
-# define GET_TERMIOS(fd, x) tcgetattr(fd, x)
-# define SET_TERMIOS(fd, x) tcsetattr(fd, TCSADRAIN, x)
-#else
-# ifdef TCGETS
-# define GET_TERMIOS(fd, x) ioctl(fd, TCGETS, x)
-# define SET_TERMIOS(fd, x) ioctl(fd, TCSETS, x)
-# else
-# define X(x,m) &(((TTY_Termio_Type *)(x))->m)
-# define GET_TERMIOS(fd, x) \
- ((ioctl(fd, TIOCGETC, X(x,t)) || \
- ioctl(fd, TIOCGLTC, X(x,lt)) || \
- ioctl(fd, TIOCGETP, X(x,s))) ? -1 : 0)
-# define SET_TERMIOS(fd, x) \
- ((ioctl(fd, TIOCSETC, X(x,t)) ||\
- ioctl(fd, TIOCSLTC, X(x,lt)) || \
- ioctl(fd, TIOCSETP, X(x,s))) ? -1 : 0)
-# endif
-#endif
-
-static int TTY_Inited = 0;
-static int TTY_Open = 0;
-
-#ifdef ultrix /* Ultrix gets _POSIX_VDISABLE wrong! */
-# define NULL_VALUE -1
-#else
-# ifdef _POSIX_VDISABLE
-# define NULL_VALUE _POSIX_VDISABLE
-# else
-# define NULL_VALUE 255
-# endif
-#endif
-
-int SLang_init_tty (int abort_char, int no_flow_control, int opost)
-{
- TTY_Termio_Type newtty;
-
- SLsig_block_signals ();
-
- if (TTY_Inited)
- {
- SLsig_unblock_signals ();
- return 0;
- }
-
- TTY_Open = 0;
-
- if ((SLang_TT_Read_FD == -1)
- || (1 != isatty (SLang_TT_Read_FD)))
- {
-#ifdef O_RDWR
-# ifndef __BEOS__ /* I have been told that BEOS will HANG if passed /dev/tty */
- if ((SLang_TT_Read_FD = open("/dev/tty", O_RDWR)) >= 0)
- {
- TTY_Open = 1;
- }
-# endif
-#endif
- if (TTY_Open == 0)
- {
- SLang_TT_Read_FD = fileno (stderr);
- if (1 != isatty (SLang_TT_Read_FD))
- {
- SLang_TT_Read_FD = fileno (stdin);
- if (1 != isatty (SLang_TT_Read_FD))
- {
- fprintf (stderr, "Failed to open terminal.");
- return -1;
- }
- }
- }
- }
-
- SLang_Abort_Char = abort_char;
-
- /* Some systems may not permit signals to be blocked. As a result, the
- * return code must be checked.
- */
- while (-1 == GET_TERMIOS(SLang_TT_Read_FD, &Old_TTY))
- {
- if (errno != EINTR)
- {
- SLsig_unblock_signals ();
- return -1;
- }
- }
-
- while (-1 == GET_TERMIOS(SLang_TT_Read_FD, &newtty))
- {
- if (errno != EINTR)
- {
- SLsig_unblock_signals ();
- return -1;
- }
- }
-
-#ifndef HAVE_TERMIOS_H
- newtty.s.sg_flags &= ~(ECHO);
- newtty.s.sg_flags &= ~(CRMOD);
- /* if (Flow_Control == 0) newtty.s.sg_flags &= ~IXON; */
- newtty.t.t_eofc = 1;
- if (abort_char == -1) SLang_Abort_Char = newtty.t.t_intrc;
- newtty.t.t_intrc = SLang_Abort_Char; /* ^G */
- newtty.t.t_quitc = 255;
- newtty.lt.t_suspc = 255; /* to ignore ^Z */
- newtty.lt.t_dsuspc = 255; /* to ignore ^Y */
- newtty.lt.t_lnextc = 255;
- newtty.s.sg_flags |= CBREAK; /* do I want cbreak or raw????? */
-#else
-
- /* get baud rate */
-
- newtty.c_iflag &= ~(ECHO | INLCR | ICRNL);
-#ifdef ISTRIP
- /* newtty.c_iflag &= ~ISTRIP; */
-#endif
- if (opost == 0) newtty.c_oflag &= ~OPOST;
-
- set_baud_rate (&newtty);
-
- if (no_flow_control) newtty.c_iflag &= ~IXON; else newtty.c_iflag |= IXON;
-
- newtty.c_cc[VEOF] = 1;
- newtty.c_cc[VMIN] = 1;
- newtty.c_cc[VTIME] = 0;
- newtty.c_lflag = ISIG | NOFLSH;
- if (abort_char == -1) SLang_Abort_Char = newtty.c_cc[VINTR];
- newtty.c_cc[VINTR] = SLang_Abort_Char; /* ^G */
- newtty.c_cc[VQUIT] = NULL_VALUE;
- newtty.c_cc[VSUSP] = NULL_VALUE; /* to ignore ^Z */
-#ifdef VDSUSP
- newtty.c_cc[VDSUSP] = NULL_VALUE; /* to ignore ^Y */
-#endif
-#ifdef VLNEXT
- newtty.c_cc[VLNEXT] = NULL_VALUE; /* to ignore ^V ? */
-#endif
-#ifdef VSWTCH
- newtty.c_cc[VSWTCH] = NULL_VALUE; /* to ignore who knows what */
-#endif
-#endif /* NOT HAVE_TERMIOS_H */
-
- while (-1 == SET_TERMIOS(SLang_TT_Read_FD, &newtty))
- {
- if (errno != EINTR)
- {
- SLsig_unblock_signals ();
- return -1;
- }
- }
-
- TTY_Inited = 1;
- SLsig_unblock_signals ();
- return 0;
-}
-
-void SLtty_set_suspend_state (int mode)
-{
- TTY_Termio_Type newtty;
-
- SLsig_block_signals ();
-
- if (TTY_Inited == 0)
- {
- SLsig_unblock_signals ();
- return;
- }
-
- while ((-1 == GET_TERMIOS (SLang_TT_Read_FD, &newtty))
- && (errno == EINTR))
- ;
-
-#ifndef HAVE_TERMIOS_H
- /* I do not know if all systems define the t_dsuspc field */
- if (mode == 0)
- {
- newtty.lt.t_suspc = 255;
- newtty.lt.t_dsuspc = 255;
- }
- else
- {
- newtty.lt.t_suspc = Old_TTY.lt.t_suspc;
- newtty.lt.t_dsuspc = Old_TTY.lt.t_dsuspc;
- }
-#else
- if (mode == 0)
- {
- newtty.c_cc[VSUSP] = NULL_VALUE;
-#ifdef VDSUSP
- newtty.c_cc[VDSUSP] = NULL_VALUE;
-#endif
- }
- else
- {
- newtty.c_cc[VSUSP] = Old_TTY.c_cc[VSUSP];
-#ifdef VDSUSP
- newtty.c_cc[VDSUSP] = Old_TTY.c_cc[VDSUSP];
-#endif
- }
-#endif
-
- while ((-1 == SET_TERMIOS (SLang_TT_Read_FD, &newtty))
- && (errno == EINTR))
- ;
-
- SLsig_unblock_signals ();
-}
-
-void SLang_reset_tty (void)
-{
- SLsig_block_signals ();
-
- if (TTY_Inited == 0)
- {
- SLsig_unblock_signals ();
- return;
- }
-
- while ((-1 == SET_TERMIOS(SLang_TT_Read_FD, &Old_TTY))
- && (errno == EINTR))
- ;
-
- if (TTY_Open)
- {
- while ((-1 == close (SLang_TT_Read_FD))
- && (errno == EINTR))
- ;
-
- TTY_Open = 0;
- SLang_TT_Read_FD = -1;
- }
-
- TTY_Inited = 0;
- SLsig_unblock_signals ();
-}
-
-static void default_sigint (int sig)
-{
- sig = errno; /* use parameter */
-
- SLKeyBoard_Quit = 1;
- if (SLang_Ignore_User_Abort == 0) SLang_Error = SL_USER_BREAK;
- SLsignal_intr (SIGINT, default_sigint);
- errno = sig;
-}
-
-int SLang_set_abort_signal (void (*hand)(int))
-{
- int save_errno = errno;
- SLSig_Fun_Type *f;
-
- if (hand == NULL) hand = default_sigint;
- f = SLsignal_intr (SIGINT, hand);
-
- errno = save_errno;
-
- if (f == (SLSig_Fun_Type *) SIG_ERR)
- return -1;
-
- return 0;
-}
-
-#ifndef FD_SET
-#define FD_SET(fd, tthis) *(tthis) = 1 << (fd)
-#define FD_ZERO(tthis) *(tthis) = 0
-#define FD_ISSET(fd, tthis) (*(tthis) & (1 << fd))
-typedef int fd_set;
-#endif
-
-static fd_set Read_FD_Set;
-
-/* HACK: If > 0, use 1/10 seconds. If < 0, use 1/1000 seconds */
-
-int _SLsys_input_pending(int tsecs)
-{
- struct timeval wait;
- long usecs, secs;
-
- if (TTY_Inited == 0) return -1;
-
- if (tsecs >= 0)
- {
- secs = tsecs / 10;
- usecs = (tsecs % 10) * 100000;
- }
- else
- {
- tsecs = -tsecs;
- secs = tsecs / 1000;
- usecs = (tsecs % 1000) * 1000;
- }
-
- wait.tv_sec = secs;
- wait.tv_usec = usecs;
-
- FD_ZERO(&Read_FD_Set);
- FD_SET(SLang_TT_Read_FD, &Read_FD_Set);
-
- return select(SLang_TT_Read_FD + 1, &Read_FD_Set, NULL, NULL, &wait);
-}
-
-int (*SLang_getkey_intr_hook) (void);
-
-static int handle_interrupt (void)
-{
- if (SLang_getkey_intr_hook != NULL)
- {
- int save_tty_fd = SLang_TT_Read_FD;
-
- if (-1 == (*SLang_getkey_intr_hook) ())
- return -1;
-
- if (save_tty_fd != SLang_TT_Read_FD)
- return -1;
- }
-
- return 0;
-}
-
-unsigned int _SLsys_getkey (void)
-{
- unsigned char c;
-
- if (TTY_Inited == 0)
- {
- int ic = fgetc (stdin);
- if (ic == EOF) return SLANG_GETKEY_ERROR;
- return (unsigned int) ic;
- }
-
- while (1)
- {
- int ret;
-
- if (SLKeyBoard_Quit)
- return SLang_Abort_Char;
-
- if (0 == (ret = _SLsys_input_pending (100)))
- continue;
-
- if (ret != -1)
- break;
-
- if (SLKeyBoard_Quit)
- return SLang_Abort_Char;
-
- if (errno == EINTR)
- {
- if (-1 == handle_interrupt ())
- return SLANG_GETKEY_ERROR;
-
- continue;
- }
-
- break; /* let read handle it */
- }
-
- while (1)
- {
- int status = read(SLang_TT_Read_FD, (char *) &c, 1);
-
- if (status > 0)
- break;
-
- if (status == 0)
- {
- /* We are at the end of a file. Let application handle it. */
- return SLANG_GETKEY_ERROR;
- }
-
- if (errno == EINTR)
- {
- if (-1 == handle_interrupt ())
- return SLANG_GETKEY_ERROR;
-
- if (SLKeyBoard_Quit)
- return SLang_Abort_Char;
-
- continue;
- }
-#ifdef EAGAIN
- if (errno == EAGAIN)
- {
- sleep (1);
- continue;
- }
-#endif
-#ifdef EWOULDBLOCK
- if (errno == EWOULDBLOCK)
- {
- sleep (1);
- continue;
- }
-#endif
-#ifdef EIO
- if (errno == EIO)
- {
- SLang_exit_error ("_SLsys_getkey: EIO error.");
- }
-#endif
- return SLANG_GETKEY_ERROR;
- }
-
- return((unsigned int) c);
-}
-
diff --git a/mdk-stage1/slang/slxstrng.c b/mdk-stage1/slang/slxstrng.c
deleted file mode 100644
index 3f8a4dffa..000000000
--- a/mdk-stage1/slang/slxstrng.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (c) 1992, 1999, 2001 John E. Davis
- * This file is part of the S-Lang library.
- *
- * You may distribute under the terms of either the GNU General Public
- * License or the Perl Artistic License.
- */
-
-/* These routines are simple and inefficient. They were designed to work on
- * SunOS when using Electric Fence.
- */
-
-#include "slang.h"
-#include "_slang.h"
-char *SLstrcpy(register char *aa, register char *b)
-{
- char *a = aa;
- while ((*a++ = *b++) != 0);
- return aa;
-}
-
-int SLstrcmp(register char *a, register char *b)
-{
- while (*a && (*a == *b))
- {
- a++;
- b++;
- }
- if (*a) return((unsigned char) *a - (unsigned char) *b);
- else if (*b) return ((unsigned char) *a - (unsigned char) *b);
- else return 0;
-}
-
-char *SLstrncpy(char *a, register char *b,register int n)
-{
- register char *aa = a;
- while ((n > 0) && *b)
- {
- *aa++ = *b++;
- n--;
- }
- while (n-- > 0) *aa++ = 0;
- return (a);
-}
diff --git a/mdk-stage1/stage1-data/stage1-with-busybox.tar.bz2 b/mdk-stage1/stage1-data/stage1-with-busybox.tar.bz2
deleted file mode 100644
index 337b13666..000000000
--- a/mdk-stage1/stage1-data/stage1-with-busybox.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/mdk-stage1/stage1-data/stage1-with-sash.tar.bz2 b/mdk-stage1/stage1-data/stage1-with-sash.tar.bz2
deleted file mode 100644
index 56279ae90..000000000
--- a/mdk-stage1/stage1-data/stage1-with-sash.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/mdk-stage1/stage1-data/stage1.tar.bz2 b/mdk-stage1/stage1-data/stage1.tar.bz2
deleted file mode 100644
index 98e62b362..000000000
--- a/mdk-stage1/stage1-data/stage1.tar.bz2
+++ /dev/null
Binary files differ
diff --git a/mdk-stage1/stage1.c b/mdk-stage1/stage1.c
deleted file mode 100644
index e3a5b364c..000000000
--- a/mdk-stage1/stage1.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- * Guillaume Cottenceau (was gc@mandrakesoft.com)
- *
- * Copyright 2000-2004 Mandrakesoft
- *
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <sys/ioctl.h>
-#include <sys/mount.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <signal.h>
-#include <linux/unistd.h>
-_syscall2(int,pivot_root,const char *,new_root,const char *,put_old)
-
-#include "stage1.h"
-
-#include "log.h"
-#include "probing.h"
-#include "frontend.h"
-#include "modules.h"
-#include "tools.h"
-#include "automatic.h"
-#include "mount.h"
-#include "insmod.h"
-#include "thirdparty.h"
-
-#ifdef ENABLE_PCMCIA
-#include "pcmcia_/pcmcia.h"
-#endif
-
-#ifndef DISABLE_CDROM
-#include "cdrom.h"
-#endif
-
-#ifndef DISABLE_NETWORK
-#include "network.h"
-#endif
-
-#ifndef DISABLE_DISK
-#include "disk.h"
-#endif
-
-
-/************************************************************
- * globals */
-
-
-
-void fatal_error(char *msg)
-{
- printf("FATAL ERROR IN STAGE1: %s\n\nI can't recover from this.\nYou may reboot your system.\n", msg);
- while (1);
-}
-
-
-/************************************************************
- * special frontend functs
- * (the principle is to not pollute frontend code with stage1-specific stuff) */
-
-void stg1_error_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- unset_automatic();
- verror_message(msg, args);
- va_end(args);
-}
-
-void stg1_fatal_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- unset_automatic();
- verror_message(msg, args);
- va_end(args);
- exit(1);
-}
-
-void stg1_info_message(char *msg, ...)
-{
- va_list args;
- va_start(args, msg);
- if (IS_AUTOMATIC) {
- vlog_message(msg, args);
- return;
- }
- vinfo_message(msg, args);
- va_end(args);
-}
-
-
-#ifdef SPAWN_SHELL
-static pid_t shell_pid = 0;
-
-/************************************************************
- * spawns a shell on console #2 */
-static void spawn_shell(void)
-{
- int fd;
- char * shell_name[] = { "/tmp/sh", NULL };
-
- log_message("spawning a shell");
-
- if (!IS_TESTING) {
- fd = open("/dev/tty2", O_RDWR);
- if (fd == -1) {
- log_message("cannot open /dev/tty2 -- no shell will be provided");
- return;
- }
- else if (access(shell_name[0], X_OK)) {
- log_message("cannot open shell - %s doesn't exist", shell_name[0]);
- return;
- }
-
- if (!(shell_pid = fork())) {
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
-
- close(fd);
- setsid();
- if (ioctl(0, TIOCSCTTY, NULL))
- log_perror("could not set new controlling tty");
-
- execv(shell_name[0], shell_name);
- log_message("execve of %s failed: %s", shell_name[0], strerror(errno));
- exit(-1);
- }
-
- close(fd);
- }
-}
-#endif
-
-#ifdef SPAWN_INTERACTIVE
-char * interactive_fifo = "/tmp/stage1-fifo";
-static pid_t interactive_pid = 0;
-
-/* spawns my small interactive on console #6 */
-static void spawn_interactive(void)
-{
- int fd;
- char * dev = "/dev/tty6";
-
- printf("spawning my interactive on %s\n", dev);
-
- if (!IS_TESTING) {
- fd = open(dev, O_RDWR);
- if (fd == -1) {
- printf("cannot open %s -- no interactive\n", dev);
- return;
- }
-
- if (mkfifo(interactive_fifo, O_RDWR)) {
- printf("cannot create fifo -- no interactive\n");
- return;
- }
-
- if (!(interactive_pid = fork())) {
- int fif_out;
-
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
-
- close(fd);
- setsid();
- if (ioctl(0, TIOCSCTTY, NULL))
- perror("could not set new controlling tty");
-
- fif_out = open(interactive_fifo, O_WRONLY);
- printf("Please enter your command (availables: [+,-] [rescue]).\n");
-
- while (1) {
- char s[50];
- int i = 0;
- printf("? ");
- fflush(stdout);
- read(0, &(s[i++]), 1);
- fcntl(0, F_SETFL, O_NONBLOCK);
- while (read(0, &(s[i++]), 1) > 0 && i < sizeof(s));
- fcntl(0, F_SETFL, 0);
- write(fif_out, s, i-2);
- printf("Ok.\n");
- }
- }
-
- close(fd);
- }
-}
-#endif
-
-
-#ifdef ENABLE_PCMCIA
-static void handle_pcmcia(void)
-{
- char * pcmcia_adapter;
- if (kernel_version() == 2) {
- stg1_error_message("We now use kernel pcmcia support and this won't work with a 2.2 kernel.");
- return;
- }
-
- pcmcia_adapter = pcmcia_probe();
- if (!pcmcia_adapter) {
- log_message("no pcmcia adapter found");
- return;
- }
- my_insmod("pcmcia_core", ANY_DRIVER_TYPE, NULL, 0);
- my_insmod(pcmcia_adapter, ANY_DRIVER_TYPE, NULL, 0);
- /* ds is an alias for pcmcia in recent 2.6 kernels
- but we don't have modules.alias in install, so try to load both */
- my_insmod("ds", ANY_DRIVER_TYPE, NULL, 0);
- my_insmod("pcmcia", ANY_DRIVER_TYPE, NULL, 0);
-
- /* call to cardmgr takes time, let's use the wait message */
- wait_message("Enabling PCMCIA extension cards...");
- log_message("cardmgr rc: %d", cardmgr_call());
- remove_wait_message();
-
- add_to_env("PCMCIA", pcmcia_adapter);
-}
-#endif
-
-
-/************************************************************
- */
-
-static void method_select_and_prepare(void)
-{
- enum return_type results;
- char * choice;
- char * means[10], * means_auto[10];
- int i;
-
-#ifndef DISABLE_DISK
- char * disk_install = "Hard disk"; char * disk_install_auto = "disk";
-#endif
-#ifndef DISABLE_CDROM
- char * cdrom_install = "CDROM drive"; char * cdrom_install_auto = "cdrom";
-#endif
-#ifndef DISABLE_NETWORK
- char * network_nfs_install = "NFS server"; char * network_nfs_install_auto = "nfs";
- char * network_ftp_install = "FTP server"; char * network_ftp_install_auto = "ftp";
- char * network_http_install = "HTTP server"; char * network_http_install_auto = "http";
-#endif
- char * thirdparty_install = "Load third party modules"; char * thirdparty_install_auto = "thirdparty";
-
- i = 0;
-#ifndef DISABLE_NETWORK
- means[i] = network_nfs_install; means_auto[i++] = network_nfs_install_auto;
- means[i] = network_ftp_install; means_auto[i++] = network_ftp_install_auto;
- means[i] = network_http_install; means_auto[i++] = network_http_install_auto;
-#endif
-#ifndef DISABLE_CDROM
- means[i] = cdrom_install; means_auto[i++] = cdrom_install_auto;
- allow_additional_modules_floppy = 0;
-#endif
-#ifndef DISABLE_DISK
- means[i] = disk_install; means_auto[i++] = disk_install_auto;
- allow_additional_modules_floppy = 0;
-#endif
- means[i] = thirdparty_install; means_auto[i++] = thirdparty_install_auto;
- means[i] = NULL;
-
- unlink(IMAGE_LOCATION);
- rmdir(IMAGE_LOCATION); /* useful if we change the method, eg: we have automatic:cdrom but go back to nfs */
-
- results = ask_from_list_auto("Please choose the installation method.", means, &choice, "method", means_auto);
-
- if (results != RETURN_OK)
- return method_select_and_prepare();
-
-#ifndef DISABLE_CDROM
- if (!strcmp(choice, cdrom_install))
- results = cdrom_prepare();
-#endif
-
-#ifndef DISABLE_DISK
- if (!strcmp(choice, disk_install))
- results = disk_prepare();
-#endif
-
-#ifndef DISABLE_NETWORK
- if (!strcmp(choice, network_nfs_install))
- results = nfs_prepare();
-
-#ifndef MANDRAKE_MOVE
- if (!strcmp(choice, network_ftp_install))
- results = ftp_prepare();
-
- if (!strcmp(choice, network_http_install))
- results = http_prepare();
-#endif
-#endif
-
- if (!strcmp(choice, thirdparty_install)) {
- thirdparty_load_modules();
- return method_select_and_prepare();
- }
-
- if (results != RETURN_OK)
- return method_select_and_prepare();
-
- /* try to find third party modules on the install media */
- thirdparty_load_media_modules();
-}
-
-static enum return_type create_initial_fs_symlinks(char* symlinks)
-{
- FILE *f;
- char buf[5000];
-
- if (scall(!(f = fopen(symlinks, "rb")), "fopen"))
- return RETURN_ERROR;
- while (fgets(buf, sizeof(buf), f)) {
- char oldpath[500], newpath[500], newpathfinal[500];
- buf[strlen(buf)-1] = '\0'; // trim \n
- if (sscanf(buf, "%s %s", oldpath, newpath) != 2) {
- sprintf(oldpath, "%s%s", STAGE2_LOCATION_ROOTED, buf);
- sprintf(newpathfinal, "%s%s", SLASH_LOCATION, buf);
- } else {
- sprintf(newpathfinal, "%s%s", SLASH_LOCATION, newpath);
- }
- log_message("creating symlink %s -> %s", oldpath, newpathfinal);
- if (scall(symlink(oldpath, newpathfinal), "symlink"))
- return RETURN_ERROR;
- }
- fclose(f);
- return RETURN_OK;
-}
-
-static enum return_type create_initial_fs_devices(char* devices)
-{
- FILE *f;
- char buf[5000];
-
- // need to create the few devices needed to start up stage2 in a decent manner, we can't symlink or they will keep CD busy
- if (scall(mkdir(SLASH_LOCATION "/dev", 0755), "mkdir"))
- return RETURN_ERROR;
- if (scall(!(f = fopen(devices, "rb")), "fopen"))
- return RETURN_ERROR;
- while (fgets(buf, sizeof(buf), f)) {
- char name[500], path[500], type;
- int major, minor;
- sscanf(buf, "%s %c %d %d", name, &type, &major, &minor);
- sprintf(path, "%s%s", SLASH_LOCATION, name);
- log_message("creating device %s %c %d %d", path, type, major, minor);
- if (scall(mknod(path, (type == 'c' ? S_IFCHR : S_IFBLK) | 0600, makedev(major, minor)), "mknod"))
- return RETURN_ERROR;
- }
- fclose(f);
- return RETURN_OK;
-}
-
-#ifdef MANDRAKE_MOVE
-static enum return_type handle_move_clp(char* clp_name, char* live, char* location_live, char* location_mount, int* is_symlink, int preload)
-{
- if (mount_clp_may_preload(clp_name, location_mount, preload) == RETURN_OK) {
- return RETURN_OK;
- } else {
- char *full_live = asprintf_("%s%s", location_live, live);
- log_message("no %s found (or disabled), trying to fallback on plain tree", clp_name);
- if (!access(full_live, R_OK)) {
- if (scall(symlink(location_live, location_mount), "symlink"))
- return RETURN_ERROR;
- *is_symlink = 1;
- return RETURN_OK;
- } else {
- log_message("move: can't find %s nor %s, proceeding hoping files will be there", clp_name, full_live);
- return RETURN_OK;
- }
- }
-}
-
-int mandrake_move_post(void)
-{
- int boot__real_is_symlink_to_raw = 0;
- int always__real_is_symlink_to_raw = 0;
- int totem__real_is_symlink_to_raw = 0;
- int main__real_is_symlink_to_raw = 0;
-
- if (handle_move_clp("live_tree_boot.clp", "/usr/bin/runstage2.pl",
- IMAGE_LOCATION "/live_tree_boot", BOOT_LOCATION,
- &boot__real_is_symlink_to_raw, 1) != RETURN_OK)
- return RETURN_ERROR;
-
- if (handle_move_clp("live_tree_always.clp", "/bin/bash",
- IMAGE_LOCATION "/live_tree_always", ALWAYS_LOCATION,
- &always__real_is_symlink_to_raw, 1) != RETURN_OK)
- return RETURN_ERROR;
-
- if (handle_move_clp("live_tree_totem.clp", "/usr/bin/totem",
- IMAGE_LOCATION "/live_tree_totem", TOTEM_LOCATION,
- &totem__real_is_symlink_to_raw, 1) != RETURN_OK)
- return RETURN_ERROR;
-
- if (handle_move_clp("live_tree.clp", "/etc/fstab",
- IMAGE_LOCATION "/live_tree", STAGE2_LOCATION,
- &main__real_is_symlink_to_raw, 0) != RETURN_OK)
- return RETURN_ERROR;
-
- // in case we didn't mount any clp, because gzloop.o is not available later in /lib/modules
- my_insmod("gzloop", ANY_DRIVER_TYPE, NULL, 0);
-
- // hardcoded :(
- if (!access(TOTEM_LOCATION, R_OK)) {
- if (scall(symlink("/image_totem/usr", SLASH_LOCATION "/usr"), "symlink"))
- return RETURN_ERROR;
- } else
- // need a fallback in case we don't use image_totem.clp nor live_tree_totem, but we're in -u mode
- if (scall(symlink(STAGE2_LOCATION_ROOTED "/usr", SLASH_LOCATION "/usr"), "symlink"))
- return RETURN_ERROR;
-
- if (create_initial_fs_symlinks(STAGE2_LOCATION "/move/symlinks") != RETURN_OK ||
- create_initial_fs_devices(STAGE2_LOCATION "/move/devices") != RETURN_OK)
- return RETURN_ERROR;
-
- if (boot__real_is_symlink_to_raw) {
- if (scall(unlink(BOOT_LOCATION), "unlink"))
- return RETURN_ERROR;
- if (scall(symlink(IMAGE_LOCATION_REL "/live_tree_boot", BOOT_LOCATION), "symlink"))
- return RETURN_ERROR;
- }
-
- if (always__real_is_symlink_to_raw) {
- if (scall(unlink(ALWAYS_LOCATION), "unlink"))
- return RETURN_ERROR;
- if (scall(symlink(IMAGE_LOCATION_REL "/live_tree_always", ALWAYS_LOCATION), "symlink"))
- return RETURN_ERROR;
- }
-
- if (totem__real_is_symlink_to_raw) {
- if (scall(unlink(TOTEM_LOCATION), "unlink"))
- return RETURN_ERROR;
- if (scall(symlink(IMAGE_LOCATION_REL "/live_tree_totem", TOTEM_LOCATION), "symlink"))
- return RETURN_ERROR;
- }
-
- if (main__real_is_symlink_to_raw) {
- if (scall(unlink(STAGE2_LOCATION), "unlink"))
- return RETURN_ERROR;
- if (scall(symlink(IMAGE_LOCATION_REL "/live_tree", STAGE2_LOCATION), "symlink"))
- return RETURN_ERROR;
- }
- return RETURN_OK;
-}
-#endif
-
-int do_pivot_root(void)
-{
- int fd;
- char rootdev[] = "0x0100";
-
- if (IS_DEBUGSTAGE1)
- while (1);
-
- log_message("pivot_rooting");
- // trick so that kernel won't try to mount the root device when initrd exits
- if (scall((fd = open("/proc/sys/kernel/real-root-dev", O_WRONLY)) < 0, "open"))
- return RETURN_ERROR;
- if (scall(write(fd, rootdev, strlen(rootdev)) != (signed)strlen(rootdev), "write")) {
- close(fd);
- return RETURN_ERROR;
- }
- close(fd);
-
- if (scall(mkdir(SLASH_LOCATION "/stage1", 0755), "mkdir"))
- return RETURN_ERROR;
-
- if (scall(pivot_root(SLASH_LOCATION, SLASH_LOCATION "/stage1"), "pivot_root"))
- return RETURN_ERROR;
-
- return RETURN_OK;
-}
-
-void finish_preparing(void)
-{
-#ifdef MANDRAKE_MOVE
- if (mandrake_move_post() != RETURN_OK)
- stg1_fatal_message("Fatal error when launching MandrakeMove.");
-#else
- mkdir(SLASH_LOCATION "/etc", 0755);
- mkdir(SLASH_LOCATION "/var", 0755);
- if (IS_RESCUE) {
- if (create_initial_fs_symlinks(STAGE2_LOCATION "/usr/share/symlinks") != RETURN_OK)
- stg1_fatal_message("Fatal error finishing initialization.");
-
- } else {
- if (create_initial_fs_symlinks(STAGE2_LOCATION "/usr/share/symlinks") != RETURN_OK ||
- create_initial_fs_devices(STAGE2_LOCATION "/usr/share/devices") != RETURN_OK)
- stg1_fatal_message("Fatal error finishing initialization.");
- }
-#endif
-
- /* /tmp/syslog is used by the second init, so it must be copied now, not in stage2 */
- /* we remove it to ensure the old one is not copied over it in stage2 */
- copy_file("/tmp/syslog", SLASH_LOCATION "/tmp/syslog", NULL);
- unlink("/tmp/syslog");
- copy_file("/etc/resolv.conf", SLASH_LOCATION "/etc/resolv.conf", NULL);
- mkdir(SLASH_LOCATION "/modules", 0755);
- copy_file("/modules/modules.dep", SLASH_LOCATION "/modules/modules.dep", NULL);
-
- if (!IS_RESCUE) {
- copy_file(STAGE2_LOCATION "/etc/init", SLASH_LOCATION "/etc/init", NULL);
- chmod(SLASH_LOCATION "/etc/init", 0755);
- }
-
- umount("/tmp/tmpfs");
- do_pivot_root();
-
- if (file_size(IS_RESCUE ? "/sbin/init" : "/etc/init") == -1)
- stg1_fatal_message("Fatal error giving hand to second stage.");
-
-#ifdef SPAWN_SHELL
- if (shell_pid != 0) {
- int fd;
- kill(shell_pid, 9);
- fd = open("/dev/tty2", O_RDWR);
- write(fd, "Killed\n", 7);
- close(fd);
- }
-#endif
-}
-
-int main(int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)), char **env)
-{
-#ifdef ENABLE_NETWORK_STANDALONE
- open_log();
- init_frontend("");
-
- unlink("/etc/resolv.conf"); /* otherwise it is read-only */
- set_param(MODE_AUTOMATIC);
- grab_automatic_params("network:dhcp");
-
- intf_select_and_up();
- finish_frontend();
- return 0;
-#else
- if (getenv("DEBUGSTAGE1")) {
- set_param(MODE_DEBUGSTAGE1);
- set_param(MODE_TESTING);
- }
-
- if (!IS_TESTING) {
- mkdir(SLASH_LOCATION, 0755);
- if (scall(mount("none", SLASH_LOCATION, "tmpfs", MS_MGC_VAL, NULL), "mount tmpfs"))
- fatal_error("Fatal error initializing.");
- mkdir(SLASH_LOCATION "/tmp", 0755);
- }
-
-#ifdef SPAWN_INTERACTIVE
- spawn_interactive();
-#endif
-
- open_log();
- log_message("welcome to the " DISTRIB_NAME " install (mdk-stage1, version " DISTRIB_VERSION " built " __DATE__ " " __TIME__")");
- process_cmdline();
-#ifdef SPAWN_SHELL
- spawn_shell();
-#endif
- init_modules_insmoding();
- init_frontend("Welcome to " DISTRIB_DESCR ", " __DATE__ " " __TIME__);
-
- /* load usb interface as soon as possible, helps usb mouse detection in stage2 */
- probe_that_type(USB_CONTROLLERS, BUS_USB);
-
- if (IS_THIRDPARTY)
- thirdparty_load_modules();
-
-#ifdef ENABLE_PCMCIA
- if (!IS_NOAUTO)
- handle_pcmcia();
-#endif
-
- if (IS_CHANGEDISK)
- stg1_info_message("You are starting the installation with an alternate booting method. "
- "Please change your disk, and insert the Installation disk.");
-
- if (IS_RESCUE && total_memory() < MEM_LIMIT_RESCUE) {
- stg1_error_message("You are starting the rescue with a low memory configuration. "
- "Our experience shows that your system may crash at any point "
- "or lock up for no apparent reason. Continue at "
- "your own risk. Alternatively, you may reboot your system now.");
- }
-
-#ifdef MANDRAKE_MOVE
- if (total_memory() < MEM_LIMIT_MOVE)
- stg1_info_message(DISTRIB_NAME " typically needs more than %d Mbytes of memory (detected %d Mbytes). You may proceed, but the machine may crash or lock up for no apparent reason. Continue at your own risk. Alternatively, you may reboot your system now.",
- MEM_LIMIT_MOVE, total_memory());
-#endif
- method_select_and_prepare();
-
-#ifndef MANDRAKE_MOVE
- if (access(STAGE2_LOCATION, R_OK) != 0)
- if (symlink(IMAGE_LOCATION_REL "/" LIVE_LOCATION_REL, STAGE2_LOCATION) != 0)
- log_perror("symlink from " IMAGE_LOCATION_REL "/" LIVE_LOCATION_REL " to " STAGE2_LOCATION " failed");
-#endif
-
-#ifdef SPAWN_INTERACTIVE
- if (interactive_pid != 0)
- kill(interactive_pid, 9);
-#endif
-
- finish_preparing();
-
- finish_frontend();
- close_log();
-
- if (IS_TESTING)
- return 0;
- else
- return 66;
-#endif
-}
diff --git a/mdk-stage1/stage1.h b/mdk-stage1/stage1.h
deleted file mode 100644
index a14311918..000000000
--- a/mdk-stage1/stage1.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _STAGE1_H_
-#define _STAGE1_H_
-
-#include "config-stage1.h"
-#include "tools.h"
-
-
-/* Some global stuff */
-
-extern char * interactive_fifo;
-
-#define MODE_TESTING (1 << 0)
-#define MODE_RESCUE (1 << 3)
-#define MODE_AUTOMATIC (1 << 4)
-#define MODE_KEEP_MOUNTED (1 << 5) /* for rescue */
-#define MODE_DEBUGSTAGE1 (1 << 6)
-#define MODE_CHANGEDISK (1 << 10)
-#define MODE_THIRDPARTY (1 << 11)
-#define MODE_NOAUTO (1 << 12)
-#define MODE_NETAUTO (1 << 13)
-#define MODE_RECOVERY (1 << 14)
-
-#define IS_TESTING (get_param(MODE_TESTING))
-#define IS_RESCUE (get_param(MODE_RESCUE))
-#define IS_AUTOMATIC (get_param(MODE_AUTOMATIC))
-#define IS_DEBUGSTAGE1 (get_param(MODE_DEBUGSTAGE1))
-#define IS_CHANGEDISK (get_param(MODE_CHANGEDISK))
-#define IS_THIRDPARTY (get_param(MODE_THIRDPARTY))
-#define IS_NOAUTO (get_param(MODE_NOAUTO))
-#define IS_NETAUTO (get_param(MODE_NETAUTO))
-#define IS_RECOVERY (get_param(MODE_RECOVERY))
-#define KEEP_MOUNTED (!IS_RESCUE || get_param(MODE_KEEP_MOUNTED))
-
-void fatal_error(char *msg) __attribute__ ((noreturn));
-
-
-void stg1_error_message(char *msg, ...) __attribute__ ((format (printf, 1, 2)));
-void stg1_info_message(char *msg, ...) __attribute__ ((format (printf, 1, 2)));
-
-#endif
diff --git a/mdk-stage1/stdio-frontend.c b/mdk-stage1/stdio-frontend.c
deleted file mode 100644
index ffa306811..000000000
--- a/mdk-stage1/stdio-frontend.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-
-/*
- * Each different frontend must implement all functions defined in frontend.h
- */
-
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <termios.h>
-
-#include <probing.h>
-
-#include "frontend.h"
-
-
-void init_frontend(char * welcome_msg)
-{
- printf(welcome_msg);
- printf("\n");
-}
-
-
-void finish_frontend(void)
-{
-}
-
-static void get_any_response(void)
-{
- unsigned char t;
- printf("\n\t(press <enter> to proceed)");
- fflush(stdout);
- read(0, &t, 1);
- fcntl(0, F_SETFL, O_NONBLOCK);
- while (read(0, &t, 1) > 0);
- fcntl(0, F_SETFL, 0);
-}
-
-static int get_int_response(void)
-{
- char s[50];
- int j = 0;
- unsigned int i = 0; /* (0) tied to Cancel */
- fflush(stdout);
- read(0, &(s[i++]), 1);
- fcntl(0, F_SETFL, O_NONBLOCK);
- do {
- int v = s[i-1];
- if (v >= '0' && v <= '9')
- j = j*10 + (v - '0');
- } while (read(0, &(s[i++]), 1) > 0 && i < sizeof(s));
- fcntl(0, F_SETFL, 0);
- return j;
-}
-
-static char * get_string_response(char * initial_string)
-{
- /* I won't use a scanf/%s since I also want the null string to be accepted -- also, I want the initial_string */
- char s[500];
- int i = 0;
- char buf[10];
- int b_index = 0;
- char b;
-
- struct termios t;
-
- memset(s, '\0', sizeof(s));
-
- if (initial_string) {
- printf(initial_string);
- strcpy(s, initial_string);
- i = strlen(s);
- }
-
- /* from ncurses/tinfo/lib_raw.c:(cbreak) */
- tcgetattr(0, &t);
- t.c_lflag &= ~ICANON;
- t.c_lflag |= ISIG;
- t.c_lflag &= ~ECHO;
- t.c_iflag &= ~ICRNL;
- t.c_cc[VMIN] = 1;
- t.c_cc[VTIME] = 0;
- tcsetattr(0, TCSADRAIN, &t);
-
- fflush(stdout);
-
- fcntl(0, F_SETFL, O_NONBLOCK);
-
- while (1) {
- if (read(0, &b, 1) > 0) {
- if (b_index == 1) {
- if (b == 91) {
- buf[b_index] = b;
- b_index++;
- continue;
- }
- else
- b_index = 0;
- }
- if (b_index == 2) {
- if (b == 67) {
- if (s[i] != '\0') {
- printf("\033[C");
- i++;
- }
- }
- if (b == 68) {
- if (i > 0) {
- printf("\033[D");
- i--;
- }
- }
- b_index = 0;
- continue;
- }
-
- if (b == 13)
- break;
- if (b == 127) {
- if (i > 0) {
- printf("\033[D");
- printf(" ");
- printf("\033[D");
- if (s[i] == '\0')
- s[i-1] = '\0';
- else
- s[i-1] = ' ';
- i--;
- }
- } else if (b == 27) {
- buf[b_index] = b;
- b_index++;
- } else {
- printf("%c", b);
- s[i] = b;
- i++;
- }
- }
- }
-
- t.c_lflag |= ICANON;
- t.c_lflag |= ECHO;
- t.c_iflag |= ICRNL;
- tcsetattr(0, TCSADRAIN, &t);
-
- fcntl(0, F_SETFL, 0);
-
- printf("\n");
- return strdup(s);
-}
-
-static void blocking_msg(char *type, char *fmt, va_list ap)
-{
- printf(type);
- vprintf(fmt, ap);
- get_any_response();
-}
-
-void verror_message(char *msg, va_list ap)
-{
- blocking_msg("> Error! ", msg, ap);
-}
-
-void vinfo_message(char *msg, va_list ap)
-{
- blocking_msg("> Notice: ", msg, ap);
-}
-
-void vwait_message(char *msg, va_list ap)
-{
- printf("Please wait: ");
- vprintf(msg, ap);
- fflush(stdout);
-}
-
-void remove_wait_message(void)
-{
- printf("\n");
-}
-
-
-static int size_progress;
-static int actually_drawn;
-#define PROGRESS_SIZE 45
-void init_progression_raw(char *msg, int size)
-{
- int i;
- size_progress = size;
- printf("%s ", msg);
- if (size) {
- actually_drawn = 0;
- for (i=0; i<PROGRESS_SIZE; i++)
- printf(".");
- printf("]\033[G%s [", msg); /* only works on ANSI-compatibles */
- fflush(stdout);
- } else
- printf("\n");
-}
-
-void update_progression_raw(int current_size)
-{
- if (size_progress) {
- if (current_size > size_progress)
- current_size = size_progress;
- while ((int)((current_size*PROGRESS_SIZE)/size_progress) > actually_drawn) {
- printf("*");
- actually_drawn++;
- }
- } else
- printf("\033[GStatus: [%8d] bytes loaded...", current_size);
-
- fflush(stdout);
-}
-
-void end_progression_raw(void)
-{
- if (size_progress) {
- update_progression_raw(size_progress);
- printf("]\n");
- } else
- printf(" done.\n");
-}
-
-
-enum return_type ask_from_list_comments(char *msg, char ** elems, char ** elems_comments, char ** choice)
-{
- int justify_number = 1;
- void print_choice_number(int i) {
- char tmp[500];
- snprintf(tmp, sizeof(tmp), "[%%%dd]", justify_number);
- printf(tmp, i);
- }
- char ** sav_elems = elems;
- int i = 1;
- int j = 0;
-
- while (elems && *elems) {
- elems++;
- i++;
- }
- if (i >= 10)
- justify_number = 2;
-
- elems = sav_elems;
- i = 1;
-
- printf("> %s\n", msg);
- print_choice_number(0);
- printf(" Cancel");
-
- while (elems && *elems) {
- if (elems_comments && *elems_comments) {
- printf("\n");
- print_choice_number(i);
- printf(" %s (%s)", *elems, *elems_comments);
- j = 0;
- } else {
- if (j == 0)
- printf("\n");
- print_choice_number(i);
- printf(" %-14s ", *elems);
- j++;
- }
- if (j == 4)
- j = 0;
-
- if (elems_comments)
- elems_comments++;
- i++;
- elems++;
- }
-
- printf("\n? ");
-
- j = get_int_response();
-
- if (j == 0)
- return RETURN_BACK;
-
- if (j >= 1 && j <= i) {
- *choice = strdup(sav_elems[j-1]);
- return RETURN_OK;
- }
-
- return RETURN_ERROR;
-}
-
-
-enum return_type ask_from_list(char *msg, char ** elems, char ** choice)
-{
- return ask_from_list_comments(msg, elems, NULL, choice);
-}
-
-
-enum return_type ask_yes_no(char *msg)
-{
- int j;
-
- printf("> %s\n[0] Yes [1] No [2] Back\n? ", msg);
-
- j = get_int_response();
-
- if (j == 0)
- return RETURN_OK;
- else if (j == 2)
- return RETURN_BACK;
- else return RETURN_ERROR;
-}
-
-
-enum return_type ask_from_entries(char *msg, char ** questions, char *** answers, int entry_size UNUSED, void (*callback_func)(char ** strings) UNUSED)
-{
- int j, i = 0;
- char ** already_answers = NULL;
-
- printf("> %s\n", msg);
-
- while (questions && *questions) {
- printf("(%c) %s\n", i + 'a', *questions);
- i++;
- questions++;
- }
-
- if (*answers == NULL)
- *answers = (char **) malloc(sizeof(char *) * i);
- else
- already_answers = *answers;
-
- while (1) {
- int r;
- for (j = 0 ; j < i ; j++) {
- printf("(%c) ? ", j + 'a');
- if (already_answers && *already_answers) {
- (*answers)[j] = get_string_response(*already_answers);
- already_answers++;
- } else
- (*answers)[j] = get_string_response(NULL);
-
- }
- printf("[0] Cancel [1] Accept [2] Re-enter answers\n? ");
- r = get_int_response();
- if (r == 0)
- return RETURN_BACK;
- if (r == 1)
- return RETURN_OK;
- }
-}
-
-
-void suspend_to_console(void) {}
-void resume_from_suspend(void) {}
diff --git a/mdk-stage1/thirdparty.c b/mdk-stage1/thirdparty.c
deleted file mode 100644
index 176a24f1c..000000000
--- a/mdk-stage1/thirdparty.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- * Olivier Blin (oblin@mandrakesoft.com)
- *
- * Copyright 2005 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/mount.h>
-
-#include "stage1.h"
-#include "log.h"
-#include "insmod.h"
-#include "modules.h"
-#include "mount.h"
-#include "frontend.h"
-#include "partition.h"
-#include "automatic.h"
-#include "probing.h"
-
-#include "thirdparty.h"
-
-#define THIRDPARTY_MOUNT_LOCATION "/tmp/thirdparty"
-
-static struct pcitable_entry pcitable[100];
-static int pcitable_len = 0;
-
-static enum return_type thirdparty_choose_device(char ** device, int probe_only)
-{
- char ** medias, ** medias_models;
- char ** ptr, ** ptr_models;
-#ifndef DISABLE_DISK
- char ** disk_medias, ** disk_medias_models;
- int disk_count;
- char * parts[50];
- char * parts_comments[50];
-#endif
-#ifndef DISABLE_CDROM
- char ** cdrom_medias, ** cdrom_medias_models;
- int cdrom_count;
-#endif
- char * floppy_dev;
- enum return_type results;
- int count = 0;
-
- wait_message("Looking for floppy, disk and cdrom devices ...");
-
-#ifndef DISABLE_DISK
- disk_count = get_disks(&disk_medias, &disk_medias_models);
- count += disk_count;
-#endif
-#ifndef DISABLE_CDROM
- cdrom_count = get_cdroms(&cdrom_medias, &cdrom_medias_models);
- count += cdrom_count;
-#endif
-
- floppy_dev = floppy_device();
- if (strstr(floppy_dev, "/dev/") == floppy_dev) {
- floppy_dev = floppy_dev + 5;
- }
- if (floppy_dev)
- count += 1;
-
- remove_wait_message();
-
- if (count == 0) {
- stg1_error_message("I can't find any floppy, disk or cdrom on this system. "
- "No third-party kernel modules will be used.");
- return RETURN_BACK;
- }
-
- if (probe_only) {
-#ifndef DISABLE_DISK
- free(disk_medias);
- free(disk_medias_models);
-#endif
-#ifndef DISABLE_CDROM
- free(cdrom_medias);
- free(cdrom_medias_models);
-#endif
- return RETURN_OK;
- }
-
- ptr = medias = malloc((count + 1) * sizeof(char *));
- ptr_models =medias_models = malloc((count + 1) * sizeof(char *));
-#ifndef DISABLE_DISK
- memcpy(ptr, disk_medias, disk_count * sizeof(char *));
- memcpy(ptr_models, disk_medias_models, disk_count * sizeof(char *));
- free(disk_medias);
- free(disk_medias_models);
- ptr += disk_count;
- ptr_models += disk_count;
-#endif
-#ifndef DISABLE_CDROM
- memcpy(ptr, cdrom_medias, cdrom_count * sizeof(char *));
- memcpy(ptr_models, cdrom_medias_models, cdrom_count * sizeof(char *));
- free(cdrom_medias);
- free(cdrom_medias_models);
- cdrom_medias = ptr; /* used later to know if a cdrom is selected */
- ptr += cdrom_count;
- ptr_models += cdrom_count;
-#endif
- if (floppy_dev) {
- ptr[0] = floppy_dev;
- ptr_models[0] = "Floppy device";
- ptr++;
- ptr_models++;
- }
- ptr[0] = NULL;
- ptr_models[0] = NULL;
-
- if (count == 1) {
- *device = medias[0];
- } else {
- results = ask_from_list_comments("If you want to insert third-party kernel modules, "
- "please select the disk containing the modules.",
- medias, medias_models, device);
- if (results != RETURN_OK)
- return results;
- }
-
- if (streq(*device, floppy_dev)) {
- /* a floppy is selected, don't try to list partitions */
- return RETURN_OK;
- }
-
-#ifndef DISABLE_CDROM
- for (ptr = cdrom_medias; ptr < cdrom_medias + cdrom_count; ptr++) {
- if (*device == *ptr) {
- /* a cdrom is selected, don't try to list partitions */
- log_message("thirdparty: a cdrom is selected, using it (%s)", *device);
- return RETURN_OK;
- }
- }
-#endif
-
-#ifndef DISABLE_DISK
- /* a disk or usb key is selected */
- if (list_partitions(*device, parts, parts_comments)) {
- stg1_error_message("Could not read partitions information.");
- return RETURN_ERROR;
- }
-
- if (parts[0] == NULL) {
- stg1_error_message("No partition found.");
- return RETURN_ERROR;
- }
-
- /* only one partition has been discovered, don't ask which one to use */
- if (parts[1] == NULL) {
- log_message("thirdparty: found only one partition on device (%s)", parts[0]);
- *device = parts[0];
- return RETURN_OK;
- }
-
- results = ask_from_list_comments("Please select the partition containing "
- "the third party modules.",
- parts, parts_comments, device);
- if (results == RETURN_OK)
- return RETURN_OK;
-#endif
-
- stg1_error_message("Sorry, no third party device can be used.");
-
- return RETURN_BACK;
-}
-
-
-static enum return_type thirdparty_mount_device(char * device)
-{
- log_message("third party: trying to mount device %s", device);
- if (try_mount(device, THIRDPARTY_MOUNT_LOCATION) != 0) {
- stg1_error_message("I can't mount the selected device (%s).", device);
- return RETURN_ERROR;
- }
- return RETURN_OK;
-}
-
-
-static enum return_type thirdparty_prompt_modules(const char *modules_location, char ** modules_list)
-{
- enum return_type results;
- char final_name[500];
- char *module_name;
- int rc;
- char * questions[] = { "Options", NULL };
- static char ** answers = NULL;
-
- while (1) {
- results = ask_from_list("Which driver would you like to insmod?", modules_list, &module_name);
- if (results != RETURN_OK)
- break;
-
- sprintf(final_name, "%s/%s", modules_location, module_name);
-
- results = ask_from_entries("Please enter the options:", questions, &answers, 24, NULL);
- if (results != RETURN_OK)
- continue;
-
- rc = insmod_local_file(final_name, answers[0]);
- if (rc) {
- log_message("\tfailed");
- stg1_error_message("Insmod failed.");
- }
- }
- return RETURN_OK;
-}
-
-
-static void thirdparty_load_pcitable(const char *modules_location)
-{
- char pcitable_filename[100];
- FILE * f = NULL;
-
- sprintf(pcitable_filename, "%s/pcitable", modules_location);
- if (!(f = fopen(pcitable_filename, "rb"))) {
- log_message("third_party: no external pcitable found");
- return;
- }
- while (1) {
- char buf[200];
- struct pcitable_entry *e;
- if (!fgets(buf, sizeof(buf), f)) break;
- e = &pcitable[pcitable_len++];
- sscanf(buf, "%hx\t%hx\t\"%[^ \"]\"\t\"%[^ \"]\"", &e->vendor, &e->device, e->module, e->description);
- }
- fclose(f);
-}
-
-
-static int thirdparty_is_detected(char *driver) {
- int i, j;
-
- for (i = 0; i < detected_devices_len ; i++) {
- /* first look for the IDs in the third-party pcitable */
- for (j = 0; j < pcitable_len ; j++) {
- if (pcitable[j].vendor == detected_devices[i].vendor &&
- pcitable[j].device == detected_devices[i].device &&
- !strcmp(pcitable[j].module, driver)) {
- log_message("probing: found device for module %s", driver);
- return 1;
- }
- }
- /* if not found, compare with the detected driver */
- if (!strcmp(detected_devices[i].module, driver)) {
- log_message("probing: found device for module %s", driver);
- return 1;
- }
- }
-
- return 0;
-}
-
-static enum return_type thirdparty_autoload_modules(const char *modules_location, char ** modules_list, FILE *f, int load_detected_only)
-{
- while (1) {
- char final_name[500];
- char module[500];
- char * options;
- char ** entry = modules_list;
-
- if (!fgets(module, sizeof(module), f)) break;
- if (module[0] == '#' || strlen(module) == 0)
- continue;
-
- while (module[strlen(module)-1] == '\n')
- module[strlen(module)-1] = '\0';
- options = strchr(module, ' ');
- if (options) {
- options[0] = '\0';
- options++;
- }
-
- if (load_detected_only && !thirdparty_is_detected(module)) {
- log_message("third party: no device detected for module %s, skipping", module);
- continue;
- }
-
- log_message("third party: auto-loading module (%s) with options (%s)", module, options);
- while (entry && *entry) {
- if (!strncmp(*entry, module, strlen(module)) && (*entry)[strlen(module)] == '.') {
- sprintf(final_name, "%s/%s", modules_location, *entry);
- if (insmod_local_file(final_name, options)) {
- log_message("\t%s (third party media): failed", *entry);
- stg1_error_message("Insmod %s (third party media) failed.", *entry);
- }
- break;
- }
- entry++;
- }
- if (!entry || !*entry) {
- enum insmod_return ret = my_insmod(module, ANY_DRIVER_TYPE, options, 0);
- if (ret != INSMOD_OK) {
- log_message("\t%s (marfile): failed", module);
- stg1_error_message("Insmod %s (marfile) failed.", module);
- }
- }
- }
-
- return RETURN_OK;
-}
-
-static enum return_type thirdparty_try_directory(char * root_directory, int interactive) {
- char modules_location[100];
- char list_filename[50];
- FILE *f_load, *f_detect;
- char **modules_list;
-
- /* look first in the specific third-party directory */
- strcpy(modules_location, root_directory);
- strcat(modules_location, THIRDPARTY_DIRECTORY);
- modules_list = list_directory(modules_location);
-
- /* if it's empty, look in the root of selected device */
- if (!modules_list || !modules_list[0]) {
- modules_location[strlen(root_directory)] = '\0';
- modules_list = list_directory(modules_location);
- if (interactive)
- add_to_env("THIRDPARTY_DIR", "");
- } else {
- if (interactive)
- add_to_env("THIRDPARTY_DIR", THIRDPARTY_DIRECTORY);
- }
-
- log_message("third party: using modules location %s", modules_location);
-
- if (!modules_list || !*modules_list) {
- log_message("third party: no modules found");
- if (interactive)
- stg1_error_message("No modules found on selected device.");
- return RETURN_ERROR;
- }
-
- sprintf(list_filename, "%s/to_load", modules_location);
- f_load = fopen(list_filename, "rb");
- if (f_load) {
- thirdparty_autoload_modules(modules_location, modules_list, f_load, 0);
- fclose(f_load);
- }
-
- sprintf(list_filename, "%s/to_detect", modules_location);
- f_detect = fopen(list_filename, "rb");
- if (f_detect) {
- probing_detect_devices();
- thirdparty_load_pcitable(modules_location);
- thirdparty_autoload_modules(modules_location, modules_list, f_detect, 1);
- fclose(f_detect);
- }
-
- if (f_load || f_detect)
- return RETURN_OK;
- else if (interactive) {
- if (IS_AUTOMATIC)
- stg1_error_message("I can't find a \"to_load\" file. Please select the modules manually.");
- log_message("third party: no \"to_load\" file, prompting for modules");
- return thirdparty_prompt_modules(modules_location, modules_list);
- } else {
- return RETURN_OK;
- }
-}
-
-void thirdparty_load_media_modules(void)
-{
- thirdparty_try_directory(IMAGE_LOCATION, 0);
-}
-
-void thirdparty_load_modules(void)
-{
- enum return_type results;
- char * device;
-
- device = NULL;
- if (IS_AUTOMATIC) {
- device = get_auto_value("thirdparty");
- thirdparty_choose_device(NULL, 1); /* probe only to create devices */
- log_message("third party: trying automatic device %s", device);
- if (thirdparty_mount_device(device) != RETURN_OK)
- device = NULL;
- }
-
- while (!device || streq(device, "")) {
- results = thirdparty_choose_device(&device, 0);
- if (results == RETURN_BACK)
- return;
- if (thirdparty_mount_device(device) != RETURN_OK)
- device = NULL;
- }
-
- log_message("third party: using device %s", device);
- add_to_env("THIRDPARTY_DEVICE", device);
-
- results = thirdparty_try_directory(THIRDPARTY_MOUNT_LOCATION, 1);
- umount(THIRDPARTY_MOUNT_LOCATION);
-
- if (results != RETURN_OK)
- return thirdparty_load_modules();
-}
diff --git a/mdk-stage1/thirdparty.h b/mdk-stage1/thirdparty.h
deleted file mode 100644
index 23066374c..000000000
--- a/mdk-stage1/thirdparty.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- * Olivier Blin (oblin@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _THIRDPARTY_H_
-#define _THIRDPARTY_H_
-
-#define THIRDPARTY_DIRECTORY "/install/thirdparty"
-
-/* load third party modules present on install media
- * use to_load and to_detect files in /install/thirdparty
- * do not prompt user
- */
-void thirdparty_load_media_modules(void);
-
-/* load modules if to_load or to_detect files are present
- * prompt user if no to_load file is present
- */
-void thirdparty_load_modules(void);
-
-#endif
diff --git a/mdk-stage1/tools.c b/mdk-stage1/tools.c
deleted file mode 100644
index 4f4bff8bb..000000000
--- a/mdk-stage1/tools.c
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <dirent.h>
-#include <sys/types.h>
-#include <sys/mount.h>
-#include <sys/poll.h>
-#include <errno.h>
-#include <sys/utsname.h>
-#include <sys/ioctl.h>
-#include <linux/fd.h>
-#include "stage1.h"
-#include "log.h"
-#include "mount.h"
-#include "frontend.h"
-#include "automatic.h"
-
-#include "tools.h"
-#include "probing.h"
-#include "modules.h"
-#include "lomount.h"
-
-static struct param_elem params[50];
-static int param_number = 0;
-
-void process_cmdline(void)
-{
- char buf[512];
- int size, i;
- int fd = -1;
-
- if (IS_TESTING) {
- log_message("TESTING: opening cmdline... ");
-
- if ((fd = open("cmdline", O_RDONLY)) == -1)
- log_message("TESTING: could not open cmdline");
- }
-
- if (fd == -1) {
- log_message("opening /proc/cmdline... ");
-
- if ((fd = open("/proc/cmdline", O_RDONLY)) == -1)
- fatal_error("could not open /proc/cmdline");
- }
-
- size = read(fd, buf, sizeof(buf));
- buf[size-1] = '\0'; // -1 to eat the \n
- close(fd);
-
- log_message("\t%s", buf);
-
- i = 0;
- while (buf[i] != '\0') {
- char *name, *value = NULL;
- int j = i;
- while (buf[i] != ' ' && buf[i] != '=' && buf[i] != '\0')
- i++;
- if (i == j) {
- i++;
- continue;
- }
- name = memdup(&buf[j], i-j + 1);
- name[i-j] = '\0';
-
- if (buf[i] == '=') {
- int k = i+1;
- i++;
- while (buf[i] != ' ' && buf[i] != '\0')
- i++;
- value = memdup(&buf[k], i-k + 1);
- value[i-k] = '\0';
- }
-
- params[param_number].name = name;
- params[param_number].value = value;
- param_number++;
- if (!strcmp(name, "changedisk")) set_param(MODE_CHANGEDISK);
- if (!strcmp(name, "updatemodules") ||
- !strcmp(name, "thirdparty")) set_param(MODE_THIRDPARTY);
- if (!strcmp(name, "rescue")) set_param(MODE_RESCUE);
- if (!strcmp(name, "keepmounted")) set_param(MODE_KEEP_MOUNTED);
- if (!strcmp(name, "noauto")) set_param(MODE_NOAUTO);
- if (!strcmp(name, "netauto")) set_param(MODE_NETAUTO);
- if (!strcmp(name, "debugstage1")) set_param(MODE_DEBUGSTAGE1);
- if (!strcmp(name, "automatic")) {
- set_param(MODE_AUTOMATIC);
- grab_automatic_params(value);
- }
- if (buf[i] == '\0')
- break;
- i++;
- }
-
- log_message("\tgot %d args", param_number);
-}
-
-
-int stage1_mode = 0;
-
-int get_param(int i)
-{
-#ifdef SPAWN_INTERACTIVE
- static int fd = 0;
- char buf[5000];
- char * ptr;
- int nb;
-
- if (fd <= 0) {
- fd = open(interactive_fifo, O_RDONLY);
- if (fd == -1)
- return (stage1_mode & i);
- fcntl(fd, F_SETFL, O_NONBLOCK);
- }
-
- if (fd > 0) {
- if ((nb = read(fd, buf, sizeof(buf))) > 0) {
- buf[nb] = '\0';
- ptr = buf;
- while ((ptr = strstr(ptr, "+ "))) {
- if (!strncmp(ptr+2, "rescue", 6)) set_param(MODE_RESCUE);
- ptr++;
- }
- ptr = buf;
- while ((ptr = strstr(ptr, "- "))) {
- if (!strncmp(ptr+2, "rescue", 6)) unset_param(MODE_RESCUE);
- ptr++;
- }
- }
- }
-#endif
-
- return (stage1_mode & i);
-}
-
-char * get_param_valued(char *param_name)
-{
- int i;
- for (i = 0; i < param_number ; i++)
- if (!strcmp(params[i].name, param_name))
- return params[i].value;
-
- return NULL;
-}
-
-void set_param_valued(char *param_name, char *param_value)
-{
- params[param_number].name = param_name;
- params[param_number].value = param_value;
- param_number++;
-}
-
-void set_param(int i)
-{
- stage1_mode |= i;
-}
-
-void unset_param(int i)
-{
- stage1_mode &= ~i;
-}
-
-void unset_automatic(void)
-{
- log_message("unsetting automatic");
- unset_param(MODE_AUTOMATIC);
- exit_bootsplash();
-}
-
-// warning, many things rely on the fact that:
-// - when failing it returns 0
-// - it stops on first non-digit char
-int charstar_to_int(const char * s)
-{
- int number = 0;
- while (*s && isdigit(*s)) {
- number = (number * 10) + (*s - '0');
- s++;
- }
- return number;
-}
-
-off_t file_size(const char * path)
-{
- struct stat statr;
- if (stat(path, &statr))
- return -1;
- else
- return statr.st_size;
-}
-
-int total_memory(void)
-{
- int value;
-
- /* drakx powered: use /proc/kcore and rounds every 4 Mbytes */
- value = 4 * ((int)((float)file_size("/proc/kcore") / 1024 / 1024 / 4 + 0.5));
- log_message("Total Memory: %d Mbytes", value);
-
- return value;
-}
-
-
-int image_has_stage2()
-{
-#ifdef MANDRAKE_MOVE
- return access(IMAGE_LOCATION "/live_tree.clp", R_OK) == 0;
-#else
- return access(CLP_FILE_REL(IMAGE_LOCATION "/"), R_OK) == 0 ||
- access(IMAGE_LOCATION "/" LIVE_LOCATION_REL, R_OK) == 0;
-#endif
-}
-
-int ramdisk_possible(void)
-{
- if (total_memory() > (IS_RESCUE ? MEM_LIMIT_RESCUE : MEM_LIMIT_DRAKX))
- return 1;
- else {
- log_message("warning, ramdisk is not possible due to low mem!");
- return 0;
- }
-}
-
-int clp_preload(void)
-{
- if (total_memory() > (IS_RESCUE ? MEM_LIMIT_RESCUE_PRELOAD : MEM_LIMIT_DRAKX_PRELOAD))
- return 1;
- else {
- log_message("warning, not preloading clp due to low mem");
- return 0;
- }
-}
-
-enum return_type save_fd(int from_fd, char * to, void (*callback_func)(int overall))
-{
- FILE * f_to;
- size_t quantity __attribute__((aligned(16))), overall = 0;
- char buf[4096] __attribute__((aligned(4096)));
- int ret = RETURN_ERROR;
-
- if (!(f_to = fopen(to, "w"))) {
- log_perror(to);
- goto close_from;
- }
-
- do {
- quantity = read(from_fd, buf, sizeof(buf));
- if (quantity > 0) {
- if (fwrite(buf, 1, quantity, f_to) != quantity) {
- log_message("short write (%s)", strerror(errno));
- goto cleanup;
- }
- } else if (quantity == -1) {
- log_message("an error occured: %s", strerror(errno));
- goto cleanup;
- }
-
- if (callback_func) {
- overall += quantity;
- callback_func(overall);
- }
- } while (quantity);
-
- ret = RETURN_OK;
-
- cleanup:
- fclose(f_to);
- close_from:
- close(from_fd);
-
- return ret;
-}
-
-enum return_type copy_file(char * from, char * to, void (*callback_func)(int overall))
-{
- int from_fd;
-
- log_message("copy_file: %s -> %s", from, to);
-
- from_fd = open(from, O_RDONLY);
- if (from_fd != -1) {
- return save_fd(from_fd, to, callback_func);
- } else {
- log_perror(from);
- return RETURN_ERROR;
- }
-}
-
-enum return_type mount_clp(char *clp, char *location_mount)
-{
- if (lomount(clp, location_mount, NULL, 1)) {
- stg1_error_message("Could not mount compressed loopback :(.");
- return RETURN_ERROR;
- }
- return RETURN_OK;
-}
-
-enum return_type preload_mount_clp(int clp_fd, int clp_size, char *clp_name, char *location_mount)
-{
- int ret;
- char *clp_tmpfs = asprintf_("%s/tmp/%s", SLASH_LOCATION, clp_name);
-#ifdef MANDRAKE_MOVE
- static int count = 0;
- char buf[5000];
- sprintf(buf, "Loading program into memory (part %d)...", ++count);
-#else
- char *buf = "Loading program into memory...";
-#endif
- init_progression(buf, clp_size);
- ret = save_fd(clp_fd, clp_tmpfs, update_progression);
- end_progression();
- if (ret != RETURN_OK)
- return ret;
-
- return mount_clp(clp_tmpfs, location_mount);
-}
-
-enum return_type mount_clp_may_preload(char *clp_name, char *location_mount, int preload)
-{
- char *clp = asprintf_("%s/%s", CLP_LOCATION, clp_name);
-
- log_message("mount_clp_may_preload: %s into %s (preload = %d)", clp, location_mount, preload);
-
- if (access(clp, R_OK) != 0) return RETURN_ERROR;
-
- if (preload) {
- int clp_fd = open(clp, O_RDONLY);
- if (clp_fd != -1) {
- return preload_mount_clp(clp_fd, file_size(clp), clp_name, location_mount);
- } else {
- log_perror(clp);
- return RETURN_ERROR;
- }
- } else {
- return mount_clp(clp, location_mount);
- }
-}
-
-#ifndef MANDRAKE_MOVE
-enum return_type may_load_clp(void)
-{
- if (!IS_RESCUE && access(IMAGE_LOCATION "/" LIVE_LOCATION_REL, R_OK) == 0) {
- /* LIVE install */
- return RETURN_OK;
- } else {
- /* CLP install */
- return mount_clp_may_preload(CLP_NAME(""), STAGE2_LOCATION, clp_preload());
- }
-}
-
-enum return_type load_clp_fd(int fd, int size)
-{
- return preload_mount_clp(fd, size, CLP_NAME(""), STAGE2_LOCATION);
-}
-#endif
-
-/* pixel's */
-void * memdup(void *src, size_t size)
-{
- void * r;
- r = malloc(size);
- memcpy(r, src, size);
- return r;
-}
-
-
-void add_to_env(char * name, char * value)
-{
- FILE* fakeenv = fopen(SLASH_LOCATION "/tmp/env", "a");
- if (fakeenv) {
- char* e = asprintf_("%s=%s\n", name, value);
- fwrite(e, 1, strlen(e), fakeenv);
- free(e);
- fclose(fakeenv);
- } else
- log_message("couldn't fopen to fake env");
-}
-
-
-char ** list_directory(char * direct)
-{
- char * tmp[50000]; /* in /dev there can be many many files.. */
- int i = 0;
- struct dirent *ep;
- DIR *dp = opendir(direct);
- while (dp && (ep = readdir(dp))) {
- if (strcmp(ep->d_name, ".") && strcmp(ep->d_name, "..")) {
- tmp[i] = strdup(ep->d_name);
- i++;
- }
- }
- if (dp)
- closedir(dp);
- tmp[i] = NULL;
- return memdup(tmp, sizeof(char*) * (i+1));
-}
-
-
-int string_array_length(char ** a)
-{
- int i = 0;
- if (!a)
- return -1;
- while (a && *a) {
- a++;
- i++;
- }
- return i;
-}
-
-int kernel_version(void)
-{
- struct utsname val;
- if (uname(&val)) {
- log_perror("uname failed");
- return -1;
- }
- return charstar_to_int(val.release + 2);
-}
-
-int try_mount(char * dev, char * location)
-{
- char device_fullname[50];
- strcpy(device_fullname, "/dev/");
- strcat(device_fullname, dev);
-
- if (my_mount(device_fullname, location, "ext2", 0) == -1 &&
- my_mount(device_fullname, location, "vfat", 0) == -1 &&
- my_mount(device_fullname, location, "ntfs", 0) == -1 &&
- my_mount(device_fullname, location, "reiserfs", 0) == -1 &&
- my_mount(device_fullname, location, "iso9660", 0) == -1) {
- return 1;
- }
-
- return 0;
-}
-
-#ifndef DISABLE_DISK
-int get_disks(char *** names, char *** models)
-{
- char ** ptr;
- int count = 0;
-
- my_insmod("sd_mod", ANY_DRIVER_TYPE, NULL, 0);
-
- get_medias(DISK, names, models, BUS_ANY);
-
- ptr = *names;
- while (ptr && *ptr) {
- count++;
- ptr++;
- }
-
- return count;
-}
-#endif
-
-#ifndef DISABLE_CDROM
-int get_cdroms(char *** names, char *** models)
-{
- char ** ptr;
- int count = 0;
-
- my_insmod("ide-cd", ANY_DRIVER_TYPE, NULL, 0);
- my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0);
-
- get_medias(CDROM, names, models, BUS_ANY);
-
- ptr = *names;
- while (ptr && *ptr) {
- count++;
- ptr++;
- }
-
- return count;
-}
-#endif
-
-char * floppy_device(void)
-{
- char ** names, ** models;
- int fd;
- my_insmod("floppy", ANY_DRIVER_TYPE, NULL, 0);
- fd = open("/dev/fd0", O_RDONLY|O_NONBLOCK);
- if (fd != -1) {
- char drivtyp[17];
- if (!ioctl(fd, FDGETDRVTYP, (void *)drivtyp)) {
- struct floppy_drive_struct ds;
- log_message("/dev/fd0 type: %s", drivtyp);
- if (!ioctl(fd, FDPOLLDRVSTAT, &ds)) {
- log_message("\ttrack: %d", ds.track);
- if (ds.track >= 0) {
- close(fd);
- return "/dev/fd0";
- }
- }
- } else {
- log_perror("can't FDGETDRVTYP /dev/fd0");
- }
- close(fd);
- }
- log_message("seems that you don't have a regular floppy drive");
- my_insmod("sd_mod", ANY_DRIVER_TYPE, NULL, 0);
- get_medias(FLOPPY, &names, &models, BUS_ANY);
- if (names && *names)
- return asprintf_("/dev/%s", *names);
- else
- return "/dev/fd0";
-}
-
-char * asprintf_(const char *msg, ...)
-{
- int n;
- char * s;
- va_list arg_ptr;
- va_start(arg_ptr, msg);
- n = vsnprintf(0, 1000000, msg, arg_ptr);
- va_start(arg_ptr, msg);
- if ((s = malloc(n + 1))) {
- vsnprintf(s, n + 1, msg, arg_ptr);
- va_end(arg_ptr);
- return s;
- }
- va_end(arg_ptr);
- return strdup("");
-}
-
-int scall_(int retval, char * msg, char * file, int line)
-{
- char tmp[5000];
- sprintf(tmp, "%s(%s:%d) failed", msg, file, line);
- if (retval)
- log_perror(tmp);
- return retval;
-}
diff --git a/mdk-stage1/tools.h b/mdk-stage1/tools.h
deleted file mode 100644
index b7681a16b..000000000
--- a/mdk-stage1/tools.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan (ewt@redhat.com)
- *
- * Copyright 1996 Red Hat Software
- *
- */
-
-#ifndef _TOOLS_H_
-#define _TOOLS_H_
-
-#include <stdlib.h>
-#include "bootsplash.h"
-
-void process_cmdline(void);
-int get_param(int i);
-void set_param(int i);
-void unset_param(int i);
-void unset_automatic(void);
-int charstar_to_int(const char * s);
-off_t file_size(const char * path);
-int total_memory(void);
-int image_has_stage2();
-int ramdisk_possible(void);
-enum return_type copy_file(char * from, char * to, void (*callback_func)(int overall));
-enum return_type preload_mount_clp(int clp_fd, int clp_size, char *clp_name, char *location_mount);
-enum return_type mount_clp(char *clp, char *location_mount);
-enum return_type mount_clp_may_preload(char *clp_name, char *location_mount, int preload);
-#ifndef MANDRAKE_MOVE
-enum return_type load_clp_fd(int fd, int size);
-enum return_type may_load_clp(void);
-#endif
-void * memdup(void *src, size_t size);
-void add_to_env(char * name, char * value);
-char ** list_directory(char * direct);
-int string_array_length(char ** a);
-int kernel_version(void);
-int try_mount(char * dev, char * location);
-#ifndef DISABLE_DISK
-int get_disks(char *** names, char *** models);
-#endif
-#ifndef DISABLE_CDROM
-int get_cdroms(char *** names, char *** models);
-#endif
-char * floppy_device(void);
-char * asprintf_(const char *msg, ...);
-int scall_(int retval, char * msg, char * file, int line);
-#define scall(retval, msg) scall_(retval, msg, __FILE__, __LINE__)
-
-struct param_elem
-{
- char * name;
- char * value;
-};
-
-#define ptr_begins_static_str(pointer,static_str) (!strncmp(pointer,static_str,sizeof(static_str)-1))
-#define streq(a,b) (!strcmp(a,b))
-
-#endif
diff --git a/mdk-stage1/url.c b/mdk-stage1/url.c
deleted file mode 100644
index 6187a6195..000000000
--- a/mdk-stage1/url.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan <ewt@redhat.com> and Matt Wilson <msw@redhat.com>
- *
- * Copyright 1999 Red Hat, Inc.
- *
- */
-
-#include <alloca.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in_systm.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/poll.h>
-
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <arpa/inet.h>
-
-#include "dns.h"
-#include "log.h"
-#include "tools.h"
-
-#include "url.h"
-
-
-#define TIMEOUT_SECS 60
-#define BUFFER_SIZE 4096
-
-
-static int ftp_check_response(int sock, char ** str)
-{
- static char buf[BUFFER_SIZE + 1];
- int bufLength = 0;
- struct pollfd polls;
- char * chptr, * start;
- int bytesRead, rc = 0;
- int doesContinue = 1;
- char errorCode[4];
-
- errorCode[0] = '\0';
-
- do {
- polls.fd = sock;
- polls.events = POLLIN;
- if (poll(&polls, 1, TIMEOUT_SECS*1000) != 1)
- return FTPERR_BAD_SERVER_RESPONSE;
-
- bytesRead = read(sock, buf + bufLength, sizeof(buf) - bufLength - 1);
-
- bufLength += bytesRead;
-
- buf[bufLength] = '\0';
-
- /* divide the response into lines, checking each one to see if
- we are finished or need to continue */
-
- start = chptr = buf;
-
- do {
- while (*chptr != '\n' && *chptr) chptr++;
-
- if (*chptr == '\n') {
- *chptr = '\0';
- if (*(chptr - 1) == '\r') *(chptr - 1) = '\0';
- if (str) *str = start;
-
- if (errorCode[0]) {
- if (!strncmp(start, errorCode, 3) && start[3] == ' ')
- doesContinue = 0;
- } else {
- strncpy(errorCode, start, 3);
- errorCode[3] = '\0';
- if (start[3] != '-') {
- doesContinue = 0;
- }
- }
-
- start = chptr + 1;
- chptr++;
- } else {
- chptr++;
- }
- } while (*chptr);
-
- if (doesContinue && chptr > start) {
- memcpy(buf, start, chptr - start - 1);
- bufLength = chptr - start - 1;
- } else {
- bufLength = 0;
- }
- } while (doesContinue);
-
- if (*errorCode == '4' || *errorCode == '5') {
- if (!strncmp(errorCode, "550", 3)) {
- return FTPERR_FILE_NOT_FOUND;
- }
-
- return FTPERR_BAD_SERVER_RESPONSE;
- }
-
- if (rc) return rc;
-
- return 0;
-}
-
-static int ftp_command(int sock, char * command, char * param)
-{
- char buf[500];
- int rc;
-
- strcpy(buf, command);
- if (param) {
- strcat(buf, " ");
- strcat(buf, param);
- }
-
- strcat(buf, "\r\n");
-
- if (write(sock, buf, strlen(buf)) != (ssize_t)strlen(buf)) {
- return FTPERR_SERVER_IO_ERROR;
- }
-
- if ((rc = ftp_check_response(sock, NULL)))
- return rc;
-
- return 0;
-}
-
-static int get_host_address(char * host, struct in_addr * address)
-{
- if (isdigit(host[0])) {
- if (!inet_aton(host, address)) {
- return FTPERR_BAD_HOST_ADDR;
- }
- } else {
- if (mygethostbyname(host, address))
- return FTPERR_BAD_HOSTNAME;
- }
-
- return 0;
-}
-
-int ftp_open_connection(char * host, char * name, char * password, char * proxy)
-{
- int sock;
- struct in_addr serverAddress;
- struct sockaddr_in destPort;
- int rc;
- int port = 21;
-
- if (!strcmp(name, "")) {
- name = "anonymous";
- password = "-drakx@";
- }
-
- if (strcmp(proxy, "")) {
- name = asprintf_("%s@%s", name, host);
- host = proxy;
- }
-
- if ((rc = get_host_address(host, &serverAddress))) return rc;
-
- sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
- if (sock < 0) {
- return FTPERR_FAILED_CONNECT;
- }
-
- destPort.sin_family = AF_INET;
- destPort.sin_port = htons(port);
- destPort.sin_addr = serverAddress;
-
- if (connect(sock, (struct sockaddr *) &destPort, sizeof(destPort))) {
- close(sock);
- return FTPERR_FAILED_CONNECT;
- }
-
- /* ftpCheckResponse() assumes the socket is nonblocking */
- if (fcntl(sock, F_SETFL, O_NONBLOCK)) {
- close(sock);
- return FTPERR_FAILED_CONNECT;
- }
-
- if ((rc = ftp_check_response(sock, NULL))) {
- return rc;
- }
-
- if ((rc = ftp_command(sock, "USER", name))) {
- close(sock);
- return rc;
- }
-
- if ((rc = ftp_command(sock, "PASS", password))) {
- close(sock);
- return rc;
- }
-
- if ((rc = ftp_command(sock, "TYPE", "I"))) {
- close(sock);
- return rc;
- }
-
- return sock;
-}
-
-
-int ftp_data_command(int sock, char * command, char * param)
-{
- int dataSocket;
- struct sockaddr_in dataAddress;
- int i, j;
- char * passReply;
- char * chptr;
- char retrCommand[500];
- int rc;
-
- if (write(sock, "PASV\r\n", 6) != 6) {
- return FTPERR_SERVER_IO_ERROR;
- }
- if ((rc = ftp_check_response(sock, &passReply)))
- return FTPERR_PASSIVE_ERROR;
-
- chptr = passReply;
- while (*chptr && *chptr != '(') chptr++;
- if (*chptr != '(') return FTPERR_PASSIVE_ERROR;
- chptr++;
- passReply = chptr;
- while (*chptr && *chptr != ')') chptr++;
- if (*chptr != ')') return FTPERR_PASSIVE_ERROR;
- *chptr-- = '\0';
-
- while (*chptr && *chptr != ',') chptr--;
- if (*chptr != ',') return FTPERR_PASSIVE_ERROR;
- chptr--;
- while (*chptr && *chptr != ',') chptr--;
- if (*chptr != ',') return FTPERR_PASSIVE_ERROR;
- *chptr++ = '\0';
-
- /* now passReply points to the IP portion, and chptr points to the
- port number portion */
-
- dataAddress.sin_family = AF_INET;
- if (sscanf(chptr, "%d,%d", &i, &j) != 2) {
- return FTPERR_PASSIVE_ERROR;
- }
- dataAddress.sin_port = htons((i << 8) + j);
-
- chptr = passReply;
- while (*chptr++) {
- if (*chptr == ',') *chptr = '.';
- }
-
- if (!inet_aton(passReply, &dataAddress.sin_addr))
- return FTPERR_PASSIVE_ERROR;
-
- dataSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
- if (dataSocket < 0) {
- return FTPERR_FAILED_CONNECT;
- }
-
- if (!param)
- sprintf(retrCommand, "%s\r\n", command);
- else
- sprintf(retrCommand, "%s %s\r\n", command, param);
-
- i = strlen(retrCommand);
-
- if (write(sock, retrCommand, i) != i) {
- return FTPERR_SERVER_IO_ERROR;
- }
-
- if (connect(dataSocket, (struct sockaddr *) &dataAddress,
- sizeof(dataAddress))) {
- close(dataSocket);
- return FTPERR_FAILED_DATA_CONNECT;
- }
-
- if ((rc = ftp_check_response(sock, NULL))) {
- close(dataSocket);
- return rc;
- }
-
- return dataSocket;
-}
-
-
-int ftp_get_filesize(int sock, char * remotename)
-{
- int size = 0;
- char buf[2000];
- char file[500];
- char * ptr;
- int fd, rc, tot;
- int i;
-
- strcpy(buf, remotename);
- ptr = strrchr(buf, '/');
- if (!*ptr)
- return -1;
- *ptr = '\0';
-
- strcpy(file, ptr+1);
-
- if ((rc = ftp_command(sock, "CWD", buf))) {
- return -1;
- }
-
- fd = ftp_data_command(sock, "LIST", file);
- if (fd <= 0) {
- close(sock);
- return -1;
- }
-
- ptr = buf;
- while ((tot = read(fd, ptr, sizeof(buf) - (ptr - buf) - 1)) != 0)
- ptr += tot;
- *ptr = '\0';
- close(fd);
-
- if (!(ptr = strstr(buf, file))) {
- log_message("FTP/get_filesize: Bad mood, directory does not contain searched file (%s)", file);
- if (ftp_end_data_command(sock))
- close(sock);
- return -1;
- }
-
- for (i=0; i<4; i++) {
- while (*ptr && *ptr != ' ')
- ptr--;
- while (*ptr && *ptr == ' ')
- ptr--;
- }
- while (*ptr && *ptr != ' ')
- ptr--;
-
- if (ptr)
- size = charstar_to_int(ptr+1);
- else
- size = 0;
-
- if (ftp_end_data_command(sock)) {
- close(sock);
- return -1;
- }
-
- return size;
-}
-
-
-int ftp_start_download(int sock, char * remotename, int * size)
-{
- if ((*size = ftp_get_filesize(sock, remotename)) == -1) {
- log_message("FTP: could not get filesize (trying to continue)");
- *size = 0;
- }
- return ftp_data_command(sock, "RETR", remotename);
-}
-
-
-int ftp_end_data_command(int sock)
-{
- if (ftp_check_response(sock, NULL))
- return FTPERR_BAD_SERVER_RESPONSE;
-
- return 0;
-}
-
-
-char *str_ftp_error(int error)
-{
- return error == FTPERR_PASSIVE_ERROR ? "error with passive connection" :
- error == FTPERR_FAILED_CONNECT ? "couldn't connect to server" :
- error == FTPERR_FILE_NOT_FOUND ? "file not found" :
- error == FTPERR_BAD_SERVER_RESPONSE ? "bad server response (server too busy?)" :
- NULL;
-}
-
-
-int http_download_file(char * hostname, char * remotename, int * size, char * proxyprotocol, char * proxyname, char * proxyport)
-{
- char * buf;
- char headers[4096];
- char * nextChar = headers;
- int checkedCode;
- struct in_addr serverAddress;
- struct pollfd polls;
- int sock;
- int rc;
- struct sockaddr_in destPort;
- char * header_content_length = "Content-Length: ";
- char * http_server_name;
- int http_server_port;
-
- if (proxyprotocol) {
- http_server_name = proxyname;
- http_server_port = atoi(proxyport);
- } else {
- http_server_name = hostname;
- http_server_port = 80;
- }
-
- log_message("HTTP: connecting to server %s:%i (%s)",
- http_server_name, http_server_port,
- proxyprotocol ? "proxy" : "no proxy");
-
- if ((rc = get_host_address(http_server_name, &serverAddress))) return rc;
-
- sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
- if (sock < 0) {
- return FTPERR_FAILED_CONNECT;
- }
-
- destPort.sin_family = AF_INET;
- destPort.sin_port = htons(http_server_port);
- destPort.sin_addr = serverAddress;
-
- if (connect(sock, (struct sockaddr *) &destPort, sizeof(destPort))) {
- close(sock);
- return FTPERR_FAILED_CONNECT;
- }
-
- buf = proxyprotocol ? asprintf_("GET %s://%s%s HTTP/0.9\r\nHost: %s\r\n\r\n", proxyprotocol, hostname, remotename, hostname)
- : asprintf_("GET %s HTTP/0.9\r\nHost: %s\r\n\r\n", remotename, hostname);
-
- write(sock, buf, strlen(buf));
-
- /* This is fun; read the response a character at a time until we:
-
- 1) Get our first \r\n; which lets us check the return code
- 2) Get a \r\n\r\n, which means we're done */
-
- *nextChar = '\0';
- checkedCode = 0;
- while (!strstr(headers, "\r\n\r\n")) {
- polls.fd = sock;
- polls.events = POLLIN;
- rc = poll(&polls, 1, TIMEOUT_SECS*1000);
-
- if (rc == 0) {
- close(sock);
- return FTPERR_SERVER_TIMEOUT;
- } else if (rc < 0) {
- close(sock);
- return FTPERR_SERVER_IO_ERROR;
- }
-
- if (read(sock, nextChar, 1) != 1) {
- close(sock);
- return FTPERR_SERVER_IO_ERROR;
- }
-
- nextChar++;
- *nextChar = '\0';
-
- if (nextChar - headers == sizeof(headers)) {
- close(sock);
- return FTPERR_SERVER_IO_ERROR;
- }
-
- if (!checkedCode && strstr(headers, "\r\n")) {
- char * start, * end;
-
- checkedCode = 1;
- start = headers;
- while (!isspace(*start) && *start) start++;
- if (!*start) {
- close(sock);
- return FTPERR_SERVER_IO_ERROR;
- }
- start++;
-
- end = start;
- while (!isspace(*end) && *end) end++;
- if (!*end) {
- close(sock);
- return FTPERR_SERVER_IO_ERROR;
- }
-
- *end = '\0';
- log_message("HTTP: server response '%s'", start);
- if (!strcmp(start, "404")) {
- close(sock);
- return FTPERR_FILE_NOT_FOUND;
- } else if (strcmp(start, "200")) {
- close(sock);
- return FTPERR_BAD_SERVER_RESPONSE;
- }
-
- *end = ' ';
- }
- }
-
- if ((buf = strstr(headers, header_content_length)))
- *size = charstar_to_int(buf + strlen(header_content_length));
- else
- *size = 0;
-
- return sock;
-}
diff --git a/mdk-stage1/url.h b/mdk-stage1/url.h
deleted file mode 100644
index 7a9dcfb4b..000000000
--- a/mdk-stage1/url.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Guillaume Cottenceau (gc@mandrakesoft.com)
- *
- * Copyright 2000 Mandrakesoft
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-/*
- * Portions from Erik Troan <ewt@redhat.com> and Matt Wilson <msw@redhat.com>
- *
- * Copyright 1999 Red Hat, Inc.
- *
- */
-
-#ifndef _URL_H_
-#define _URL_H_
-
-int ftp_open_connection(char * host, char * name, char * password, char * proxy);
-int ftp_get_filesize(int sock, char * remotename);
-int ftp_start_download(int sock, char * remotename, int * size);
-int ftp_end_data_command(int sock);
-char *str_ftp_error(int error);
-
-int http_download_file(char * hostname, char * remotename, int * size, char * proxyprotocol, char * proxyname, char * proxyport);
-
-
-#define FTPERR_BAD_SERVER_RESPONSE -1
-#define FTPERR_SERVER_IO_ERROR -2
-#define FTPERR_SERVER_TIMEOUT -3
-#define FTPERR_BAD_HOST_ADDR -4
-#define FTPERR_BAD_HOSTNAME -5
-#define FTPERR_FAILED_CONNECT -6
-#define FTPERR_FILE_IO_ERROR -7
-#define FTPERR_PASSIVE_ERROR -8
-#define FTPERR_FAILED_DATA_CONNECT -9
-#define FTPERR_FILE_NOT_FOUND -10
-#define FTPERR_UNKNOWN -100
-
-#endif
diff --git a/mdk-stage1/usb-resource/.cvsignore b/mdk-stage1/usb-resource/.cvsignore
deleted file mode 100644
index a7d0cfa9a..000000000
--- a/mdk-stage1/usb-resource/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-usb-ids.h
diff --git a/mdk-stage1/usb-resource/Makefile b/mdk-stage1/usb-resource/Makefile
deleted file mode 100644
index a5bd19cff..000000000
--- a/mdk-stage1/usb-resource/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
- #******************************************************************************
- #
- # $Id$
- #
- # Guillaume Cottenceau (gc@mandrakesoft.com)
- #
- # Copyright 2000 Mandrakesoft
- #
- # This software may be freely redistributed under the terms of the GNU
- # public license.
- #
- # 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- #
- #*****************************************************************************
-
-
-all: usb-ids.h
-
-usb-ids.h: /usr/share/ldetect-lst/usbtable update-usb-ids.pl
- perl update-usb-ids.pl > $@ || rm -f $@
-
-clean:
- rm -f usb-ids.h
diff --git a/mdk-stage1/usb-resource/update-usb-ids.pl b/mdk-stage1/usb-resource/update-usb-ids.pl
deleted file mode 100755
index 749d09d7e..000000000
--- a/mdk-stage1/usb-resource/update-usb-ids.pl
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use MDK::Common;
-
-require '/usr/bin/merge2pcitable.pl';
-my $pci = read_pcitable("/usr/share/ldetect-lst/pcitable");
-my $usb = read_pcitable("/usr/share/ldetect-lst/usbtable");
-
-print '
-
-
-struct usb_module_map {
- unsigned short vendor; /* vendor */
- unsigned short id; /* device */
- const char *name; /* human readable name */
- const char *module; /* module to load */
-};
-
-';
-
-print "struct pci_module_map usb_pci_ids[] = {
-
-";
-
-foreach my $k (sort keys %$pci) {
- my $v = $pci->{$k};
- $v->[0] =~ /^usb-|^ehci-hcd|^ohci1394/ or next;
- $k =~ /^(....)(....)/;
- printf qq|\t{ 0x%s, 0x%s, "", "%s" },\n|,
- $1, $2, $v->[0];
-}
-
-print "};
-int usb_num_ids=sizeof(usb_pci_ids)/sizeof(struct pci_module_map);
-";
-
-print "struct usb_module_map usb_usb_ids[] = {
-";
-
-my @modules = chomp_(`perl ../../kernel/modules.pl pci_modules4stage1 "network/usb disk/usb"`);
-
- foreach my $k (sort keys %$usb) {
- my $v = $usb->{$k};
- member($v->[0], @modules) or next;
- $k =~ /^(....)(....)/;
- printf qq|\t{ 0x%s, 0x%s, "%s", "%s" },\n|,
- $1, $2, $v->[1], $v->[0];
- }
-
- print "};
-int usb_usb_num_ids=sizeof(usb_usb_ids)/sizeof(struct usb_module_map);
-";
diff --git a/mdk-stage1/wireless.c b/mdk-stage1/wireless.c
deleted file mode 100644
index c241bd662..000000000
--- a/mdk-stage1/wireless.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Olivier Blin (oblin@mandriva.com)
- *
- * Copyright 2005 Mandriva
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <linux/wireless.h>
-
-#include "automatic.h"
-#include "stage1.h"
-#include "log.h"
-#include "wireless.h"
-
-static int wireless_open_socket();
-static int wireless_close_socket(int socket);
-static int wireless_ioctl(int socket, const char *ifname, int request, struct iwreq *wrq);
-static int wireless_is_aware(int socket, const char *ifname);
-static int wireless_set_mode_managed(int socket, const char *ifname);
-static int wireless_disable_key(int socket, const char *ifname);
-static int wireless_set_restricted_key(int socket, const char *ifname, const char *key);
-static int wireless_set_essid(int socket, const char *ifname, const char *essid);
-
-static int wireless_open_socket()
-{
- return socket(AF_INET, SOCK_DGRAM, 0);
-}
-
-static int wireless_close_socket(int socket)
-{
- return close(socket);
-}
-
-static int wireless_ioctl(int socket, const char *ifname, int request, struct iwreq *wrq)
-{
- strncpy(wrq->ifr_name, ifname, IFNAMSIZ);
- return ioctl(socket, request, wrq);
-}
-
-static int wireless_is_aware(int socket, const char *ifname)
-{
- struct iwreq wrq;
- return wireless_ioctl(socket, ifname, SIOCGIWNAME, &wrq) == 0;
-}
-
-static int wireless_set_mode_managed(int socket, const char *ifname)
-{
- struct iwreq wrq;
-
- wrq.u.mode = IW_MODE_INFRA; /* managed */
-
- return wireless_ioctl(socket, ifname, SIOCSIWMODE, &wrq) == 0;
-}
-
-static int wireless_set_essid(int socket, const char *ifname, const char *essid)
-{
- struct iwreq wrq;
-
- wrq.u.essid.flags = 1;
- wrq.u.essid.pointer = (void *) essid;
- wrq.u.essid.length = strlen(essid) + 1;
-
- return wireless_ioctl(socket, ifname, SIOCSIWESSID, &wrq) == 0;
-}
-
-static int wireless_disable_key(int socket, const char *ifname)
-{
- struct iwreq wrq;
-
- wrq.u.data.flags = IW_ENCODE_DISABLED;
- wrq.u.data.pointer = NULL;
- wrq.u.data.length = 0;
-
- return wireless_ioctl(socket, ifname, SIOCSIWENCODE, &wrq) == 0;
-}
-
-static int wireless_set_restricted_key(int socket, const char *ifname, const char *key)
-{
- struct iwreq wrq;
- char real_key[IW_ENCODING_TOKEN_MAX];
- int key_len = 0;
- unsigned int tmp;
-
- while (sscanf(key + 2*key_len, "%2X", &tmp) == 1)
- real_key[key_len++] = (char) tmp;
-
- wrq.u.data.flags = IW_ENCODE_RESTRICTED;
- wrq.u.data.pointer = (char *) real_key;
- wrq.u.data.length = key_len;
-
- return wireless_ioctl(socket, ifname, SIOCSIWENCODE, &wrq) == 0;
-}
-
-enum return_type configure_wireless(const char *ifname)
-{
- enum return_type results;
- char * questions[] = { "ESSID", "WEP key", NULL };
- char * questions_auto[] = { "essid", "wep_key" };
- static char ** answers = NULL;
- int wsock = wireless_open_socket();
-
- if (!wireless_is_aware(wsock, ifname)) {
- log_message("interface %s doesn't support wireless", ifname);
- wireless_close_socket(wsock);
- return RETURN_OK;
- }
-
- results = ask_from_entries_auto("Please enter your wireless settings. "
- "The ESSID is your wireless network identifier. "
- "The WEP key must be entered in hexadecimal, without any separator.",
- questions, &answers, 32, questions_auto, NULL);
- if (results != RETURN_OK) {
- wireless_close_socket(wsock);
- return RETURN_BACK;
- }
-
- if (!wireless_set_mode_managed(wsock, ifname)) {
- stg1_error_message("unable to set mode Managed on device \"%s\": %s", ifname, strerror(errno));
- wireless_close_socket(wsock);
- return RETURN_ERROR;
- }
-
- if (answers[1] && !streq(answers[1], "")) {
- log_message("setting WEP key \"%s\" on device \"%s\"", answers[1], ifname);
- if (!wireless_set_restricted_key(wsock, ifname, answers[1])) {
- stg1_error_message("unable to set WEP key \"%s\" on device \"%s\": %s", answers[1], ifname, strerror(errno));
- return RETURN_ERROR;
- }
- } else {
- log_message("disabling WEP key on device \"%s\"", ifname);
- if (!wireless_disable_key(wsock, ifname)) {
- stg1_error_message("unable to disable WEP key on device \"%s\": %s", ifname, strerror(errno));
- return RETURN_ERROR;
- }
- }
-
- /* most devices perform discovery when ESSID is set, it needs to be last */
- log_message("setting ESSID \"%s\" on device \"%s\"", answers[0], ifname);
- if (!wireless_set_essid(wsock, ifname, answers[0])) {
- stg1_error_message("unable to set ESSID \"%s\" on device \"%s\": %s", answers[0], ifname, strerror(errno));
- return RETURN_ERROR;
- }
-
- wireless_close_socket(wsock);
- return RETURN_OK;
-}
diff --git a/mdk-stage1/wireless.h b/mdk-stage1/wireless.h
deleted file mode 100644
index 36f247b23..000000000
--- a/mdk-stage1/wireless.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Olivier Blin (oblin@mandriva.com)
- *
- * Copyright 2005 Mandriva
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-#ifndef _WIRELESS_H_
-#define _WIRELESS_H_
-
-#include "frontend.h"
-
-enum return_type configure_wireless(const char *ifname);
-
-#endif
diff --git a/move/.cvsignore b/move/.cvsignore
deleted file mode 100644
index 0600e5070..000000000
--- a/move/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-runlevel_set
-*.rdz
-xwait
-.perl_checker.cache
diff --git a/move/Makefile b/move/Makefile
deleted file mode 100644
index 7571c6e83..000000000
--- a/move/Makefile
+++ /dev/null
@@ -1,159 +0,0 @@
-DEST = /tmp
-DEST_LIVETREE = $(DEST)/live_tree
-DEST_STAGE2 = $(DEST_LIVETREE)/usr/lib/stage2
-
-ISO = /tmp/mdkmove.iso
-
-DATA_FILES = devices symlinks directories-to-create etcfiles all-etcfiles keyfiles \
- BOOT-800-MOVE.jpg BOOT-1024-MOVE.jpg BOOT-1280-MOVE.jpg BOOT-1600-MOVE.jpg
-
-PROGRAM_FILES = etc-monitorer.pl tree/startkde_move tree/wait4x tree/netscape tree/alsa_default.pl
-LANG_FILES = $(shell perl -ne 'print $$1 if /ALLOWED_LANGS = qw\((.*)\)/' move.pm)
-
-STAGE1 = ../mdk-stage1
-INSTALL = ../perl-install
-
-INSTALL_FILES = install2.pm install_steps.pm install_any.pm install_interactive.pm install_steps_gtk.pm install_steps_interactive.pm install_messages.pm install_gtk.pm
-
-ARCH := $(shell arch | egrep "(x86_64|sparc64|s390x)")
-ifneq ("x$(ARCH)", "x")
-LIB_NAME = lib64
-else
-LIB_NAME = lib
-endif
-
-.PHONY: iso
-
-default: install
-
-get_dest_livetree:
- @echo -n $(DEST_LIVETREE)
-
-iso: build install live_tree_boot big_clps only_iso
-
-
-build: stage1 xwait runlevel_set
- $(MAKE) -C ../perl-install mo_files
-
-data/isolinux-graphic.bmp.parameters: data/isolinux-graphic.bmp
- perl -I $(INSTALL) $(INSTALL)/standalone/draksplash2 --kernel isolinux/vmlinuz --initrd isolinux/all.rdz $<
-
-data/i18n_en.list:
- cd data ; ./make_i18n_list $(DEST_LIVETREE)
-
-install: un_live_tree_boot data/i18n_en.list
- sudo ./collect-directories-to-create.pl $(DEST_LIVETREE) > data/directories-to-create
- sudo find $(DEST_LIVETREE)/etc -type f | perl -pe 's|$(DEST_LIVETREE)||' > data/all-etcfiles
-
- sudo cp -f $(STAGE1)/init-move $(DEST_LIVETREE)/sbin/init
-
- $(MAKE) -C ../perl-install/share/po install NAME=libDrakX DATADIR=$(DEST_LIVETREE)/usr/share
-
- sudo cp -f xwait $(DEST_LIVETREE)/usr/bin
- sudo cp -f runlevel_set $(DEST_LIVETREE)/usr/bin
- sudo cp -f runstage2 $(DEST_LIVETREE)/usr/bin/runstage2.pl
- sudo rm -rf $(DEST_STAGE2)
- sudo mkdir -p $(DEST_STAGE2)
- sudo sh -c 'echo 1 > $(DEST_STAGE2)/help.pm'
- sudo cp -f *.pm $(DEST_STAGE2)
- sudo cp -f $(addprefix $(INSTALL)/, $(INSTALL_FILES)) $(DEST_STAGE2)
- sudo cp -f $(PROGRAM_FILES) $(DEST_LIVETREE)/usr/bin
- sudo rm -f $(DEST_LIVETREE)/usr/bin/{halt,reboot} #- symlinks to consolehelper
- sudo cp -f tree/{halt,reboot} $(DEST_LIVETREE)/usr/bin
- sudo cp -f tree/X_move $(DEST_LIVETREE)/usr/X11R6/bin
- sudo cp -f tree/sound.initscript $(DEST_LIVETREE)/etc/init.d/sound
-
- sudo rm -rf $(DEST_LIVETREE)/usr/share/langs
- sudo mkdir -p $(DEST_LIVETREE)/usr/share/langs
- sudo cp -f $(INSTALL)/pixmaps/langs/lang-*.png $(DEST_LIVETREE)/usr/share/langs
-
- #- overwrite /usr/lib/libDrakX files of the live tree with those in CVS
- (cd $(DEST_LIVETREE)/usr/lib/libDrakX ; find -name "*.pm") | egrep -v 'ctxhelp|drakfirsttime' | (cd $(INSTALL) ; sudo cpio -pLumd $(DEST_LIVETREE)/usr/lib/libDrakX/)
-
- #- overwrite stuff.so of drakxtools because it doesn't contain C_DRAKX stuff
- sudo cp -f ../perl-install/c/blib/arch/auto/stuff/stuff.so $(DEST_LIVETREE)/usr/lib/libDrakX/auto/c/stuff
-
- #- overwrite MDK-Common
-# sudo cp -f ../../soft/perl-MDK-Common/MDK/Common/*.pm $(DEST_LIVETREE)/usr/$(LIB_NAME)/perl5/vendor_perl/*/MDK/Common
-
- #- duplicated :(
- sudo perl -pi -e 's/#[-+].*//; $$_ = "\n" if (/^=(head|begin)/ .. /^=cut/) || /use (diagnostics|vars|strict)/' $(DEST_STAGE2)/*.pm `find $(DEST_LIVETREE)/usr/lib/libDrakX -name "*.pm"`
-
- sudo mkdir -p $(DEST_LIVETREE)/move
- sudo cp -f $(addprefix data/, $(DATA_FILES)) $(DEST_LIVETREE)/move
-
- sudo install -m 440 tree/sudoers $(DEST_LIVETREE)/etc
- sudo install -m 644 tree/mdk_move_boot_loop.desktop $(DEST_LIVETREE)/usr/share/autostart
- sudo install tree/{mdk_move_loop,mdk_totem,mdk_behind_totem} $(DEST_LIVETREE)/usr/bin
- sudo install -m 644 -D tree/mdk_totem.desktop $(DEST_LIVETREE)/usr/share/apps/kdesktop/DesktopLinks/mdk_totem.desktop
- sudo install -m 644 tree/{kdedrc,konsolerc} $(DEST_LIVETREE)/usr/share/config
- sudo install -m 644 img/Mandrake.png $(DEST_LIVETREE)/usr/share/mdk/backgrounds
- sudo install -m 644 img/FE* $(DEST_LIVETREE)/usr/share/wallpapers
-
- grep ChangeLog $(INSTALL)/CVS/Entries > /tmp/version
- sudo cp -f /tmp/version $(DEST_LIVETREE)/usr/share/VERSION
-
-un_live_tree_boot:
- sudo ./make_live_tree_boot -u $(DEST_LIVETREE)
- sudo tools/fix-fc-cache.pl $(DEST_LIVETREE)
-
-live_tree_boot:
- rm -f $(DEST)/live_tree*.clp
- sudo ./make_live_tree_boot $(DEST_LIVETREE)
- sudo tools/fix-fc-cache.pl $(DEST_LIVETREE)
- $(MAKE) clps
-
-clps:
- $(MAKE) $(DEST)/live_tree_always.clp
- $(MAKE) $(DEST)/live_tree_boot.clp
- $(MAKE) $(DEST)/live_tree_totem.clp
- -$(MAKE) $(DEST)/live_tree_nvidia.clp
- for i in en fr de it es; do $(MAKE) $(DEST)/live_tree_i18n_$$i.clp $(DEST)/live_tree_always_i18n_$$i.clp; done
-
-big_clps:
- $(MAKE) $(DEST)/live_tree.clp
-
-
-only_iso:
- rm -rf $(DEST)/iso
- mkdir $(DEST)/iso
- cp -a isolinux $(DEST)/iso
- rm -rf $(DEST)/iso/isolinux/CVS
-
- mv $(DEST)/*.clp $(DEST)/iso
-
- touch $(DEST)/iso/isolinux/boot.cat
- find $(DEST)/iso/isolinux -type f -printf '%p 100\n' > $(DEST)/iso.sort ; echo '$(DEST)/iso/live_tree_boot.clp 5' >> $(DEST)/iso.sort
-# download version: MOVE10DO
-# complete version: MOVE10IN
- mkisofs -r -J -hide-rr-moved -nobak -cache-inodes -publisher Mandrakesoft -V 'Move' -volset MOVE10IN -b isolinux/isolinux.bin -c isolinux/boot.cat -sort $(DEST)/iso.sort -no-emul-boot -boot-load-size 4 -boot-info-table -o $(ISO) $(DEST)/iso
- mv $(DEST)/iso/*.clp $(DEST)
- mkcd --addmd5 $(ISO)
-# cdrecord -v -eject dev=0,0,0 blank=fast gracetime=2 speed=99 $(ISO)
-# ftp://a:a@leia//BIG/mdkmove.iso
-
-
-stage1:
- cd $(STAGE1) && ADDITIONAL_DEFS="-DMANDRAKE_MOVE" MOVE=1 make dirs init stage1-full init-move
- cd .. ; ./make_boot_img move
-
-xwait: %: %.c
- $(CC) $(CFLAGS) $< -L/usr/X11R6/$(LIB_NAME) -lX11 -o $@
-
-runlevel_set: %: %.c
- $(CC) $(CFLAGS) $< -o $@
-
-clean:
- rm -f xwait
-
-%.clp: %
- if [ -e $<.sort ]; then \
- sudo mkisofs -R -sort $<.sort $< | create_compressed_fs - 65536 $@ 2000 2>/dev/null ; \
- else \
- sudo mkisofs -R $< | create_compressed_fs - 65536 $@ 2000 2>/dev/null ; \
- fi
-
-check_dirs:
- for i in `cat data/*.dirs`; do grep "^$$i/" data/*.list && echo "$$i"; done ||:
-
-# perl tools/busy-files-accesses --no-link --no-dir --full-dirs 'data/always.dirs data/boot.dirs data/totem.dirs' --already-have data/always.list
diff --git a/move/collect-directories-to-create.pl b/move/collect-directories-to-create.pl
deleted file mode 100755
index 7a5cfd283..000000000
--- a/move/collect-directories-to-create.pl
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use MDK::Common;
-
-#- there are programs/packages which fail when the directory
-#- in which they try to write doesn't exist. better collect them
-#- at build time so that drakx startup can create them.
-
-chdir $ARGV[0];
-foreach (`find etc var -type d`) {
- chomp;
- my @l = stat($_);
- printf "%o %d %d %s\n", $l[2] & 07777, $l[4], $l[5], $_;
-}
diff --git a/move/data/.cvsignore b/move/data/.cvsignore
deleted file mode 100644
index 1420fea7c..000000000
--- a/move/data/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-all-etcfiles
-directories-to-create
-i18n_*.list
-
diff --git a/move/data/BOOT-1024-MOVE.jpg b/move/data/BOOT-1024-MOVE.jpg
deleted file mode 100644
index 819268432..000000000
--- a/move/data/BOOT-1024-MOVE.jpg
+++ /dev/null
Binary files differ
diff --git a/move/data/BOOT-1280-MOVE.jpg b/move/data/BOOT-1280-MOVE.jpg
deleted file mode 100644
index 705184942..000000000
--- a/move/data/BOOT-1280-MOVE.jpg
+++ /dev/null
Binary files differ
diff --git a/move/data/BOOT-1600-MOVE.jpg b/move/data/BOOT-1600-MOVE.jpg
deleted file mode 100644
index d96935f18..000000000
--- a/move/data/BOOT-1600-MOVE.jpg
+++ /dev/null
Binary files differ
diff --git a/move/data/BOOT-800-MOVE.jpg b/move/data/BOOT-800-MOVE.jpg
deleted file mode 100644
index 197c64e27..000000000
--- a/move/data/BOOT-800-MOVE.jpg
+++ /dev/null
Binary files differ
diff --git a/move/data/always.dirs b/move/data/always.dirs
deleted file mode 100644
index e69de29bb..000000000
--- a/move/data/always.dirs
+++ /dev/null
diff --git a/move/data/always.list b/move/data/always.list
deleted file mode 100644
index 1ccb2f96d..000000000
--- a/move/data/always.list
+++ /dev/null
@@ -1,143 +0,0 @@
-/bin/bash
-/bin/mount
-/bin/umount
-/etc/ld.so.cache
-/etc/nsswitch.conf
-/lib/ld-2.3.3.so
-/lib/ld-linux.so.2
-/lib/libc-2.3.3.so
-/lib/libc.so.6
-/lib/libdl-2.3.3.so
-/lib/libdl.so.2
-/lib/libgcc_s-3.3.2.so.1
-/lib/libm-2.3.3.so
-/lib/libm.so.6
-/lib/libnsl-2.3.3.so
-/lib/libnss_dns-2.3.3.so
-/lib/libnss_files-2.3.3.so
-/lib/libnss_nis-2.3.3.so
-/lib/libnss_nisplus-2.3.3.so
-/lib/libpam.so.0.77
-/lib/libpam_misc.so.0.77
-/lib/libpopt.so.0.0.0
-/lib/libpthread-0.10.so
-/lib/libpthread.so.0
-/lib/libresolv-2.3.3.so
-/lib/librt-2.3.3.so
-/lib/librt.so.1
-/lib/libtermcap.so.2
-/lib/libtermcap.so.2.0.8
-/lib/libthread_db-1.0.so
-/lib/libutil-2.3.3.so
-/lib/libz.so.1.2.1
-/lib/security/pam_console_apply_devfsd.so
-/sbin/cardmgr
-/sbin/devfsd
-/sbin/init
-/sbin/klogd
-/sbin/losetup
-/sbin/syslogd
-/usr/X11R6/bin/XFree86
-/usr/X11R6/bin/X_move
-/usr/X11R6/bin/xfs
-/usr/X11R6/bin/xwait
-/usr/X11R6/lib/X11/fonts/75dpi/helvB12-ISO8859-1.pcf.gz
-/usr/X11R6/lib/X11/fonts/75dpi/helvB12.pcf.gz
-/usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2
-/usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2
-/usr/X11R6/lib/X11/locale/lib/common/xomGeneric.so.2
-/usr/X11R6/lib/libGL.so.1.2
-/usr/X11R6/lib/libICE.so.6.3
-/usr/X11R6/lib/libSM.so.6.0
-/usr/X11R6/lib/libX11.so.6.2
-/usr/X11R6/lib/libXcursor.so.1.0
-/usr/X11R6/lib/libXext.so.6.4
-/usr/X11R6/lib/libXfont.so.1.4
-/usr/X11R6/lib/libXft.so.2.1.1
-/usr/X11R6/lib/libXi.so.6.0
-/usr/X11R6/lib/libXinerama.so.1.0
-/usr/X11R6/lib/libXmu.so.6.2
-/usr/X11R6/lib/libXrandr.so.2.0
-/usr/X11R6/lib/libXrender.so.1.2.2
-/usr/X11R6/lib/libXss.so.1.0
-/usr/X11R6/lib/libXt.so.6.0
-/usr/X11R6/lib/libXtst.so.6.1
-/usr/X11R6/lib/libaudio.so.2.3
-/usr/bin/artsd
-/usr/bin/dnotify
-/usr/bin/eject
-/usr/bin/kdeinit
-/usr/bin/krandrtray
-/usr/bin/kwrapper
-/usr/bin/magicdev
-/usr/bin/startkde
-/usr/bin/startkde_move
-/usr/bin/xwait
-/usr/lib/gconv/ISO8859-1.so
-/usr/lib/gconv/ISO8859-2.so
-/usr/lib/gconv/ISO8859-15.so
-/usr/lib/gtk-2.0/2.2.0/immodules/im-cedilla.so
-/usr/lib/kde3/clock_panelapplet.so
-/usr/lib/kde3/dcopserver.so
-/usr/lib/kde3/kded.so
-/usr/lib/kde3/kded_mountwatcher.so
-/usr/lib/kde3/kio_devices.so
-/usr/lib/kde3/kio_file.so
-/usr/lib/kde3/klauncher.so
-/usr/lib/kde3/kmix.so
-/usr/lib/kde3/knotify.so
-/usr/lib/kde3/konq_sound.so
-/usr/lib/kde3/ksmserver.so
-/usr/lib/kde3/kwin.so
-/usr/lib/kde3/kwin3_mandrake2.so
-/usr/lib/kde3/minipager_panelapplet.so
-/usr/lib/kde3/plugins/styles/galaxy.so
-/usr/lib/kde3/systemtray_panelapplet.so
-/usr/lib/kde3/taskbar_panelapplet.so
-/usr/lib/libDCOP.so.4.2.0
-/usr/lib/libart_lgpl_2.so.2.3.16
-/usr/lib/libartsflow.so.1.0.0
-/usr/lib/libartsflow_idl.so.1.0.0
-/usr/lib/libartskde.so.1.2.0
-/usr/lib/libasound.so.2.0.0
-/usr/lib/libaudiofile.so.0.0.2
-/usr/lib/libesd.so.0.2.32
-/usr/lib/libexpat.so.0.4.0
-/usr/lib/libfam.so.0.0.0
-/usr/lib/libfontconfig.so.1.0.4
-/usr/lib/libfreetype.so.6.3.5
-/usr/lib/libglib-2.0.so.0.200.3
-/usr/lib/libgmodule-2.0.so.0.200.3
-/usr/lib/libgthread-2.0.so.0.200.3
-/usr/lib/libjpeg.so.62.0.0
-/usr/lib/libkdecorations.so.1.0.0
-/usr/lib/libkdecore.so.4.2.0
-/usr/lib/libkdefx.so.4.2.0
-/usr/lib/libkdeinit_dcopserver.so
-/usr/lib/libkdeinit_kded.so
-/usr/lib/libkdeinit_klauncher.so
-/usr/lib/libkdeinit_kmix.so
-/usr/lib/libkdeinit_ksmserver.so
-/usr/lib/libkdeinit_kwin.so
-/usr/lib/libkdesu.so.4.2.0
-/usr/lib/libkdeui.so.4.2.0
-/usr/lib/libkio.so.4.2.0
-/usr/lib/libkmedia2_idl.so.1.0.0
-/usr/lib/libkonq.so.4.2.0
-/usr/lib/libkparts.so.2.1.0
-/usr/lib/libkutils.so.1.2.0
-/usr/lib/libmad.so.0.2.0
-/usr/lib/libmcop.so.1.0.0
-/usr/lib/libmng.so.1.0.0
-/usr/lib/libogg.so.0.5.0
-/usr/lib/libpng.so.3.1.2.5
-/usr/lib/libqtmcop.so.1.0.0
-/usr/lib/libsoundserver_idl.so.1.0.0
-/usr/lib/libstdc++.so.5.0.5
-/usr/lib/libtaskbar.so.1.2.0
-/usr/lib/libtaskmanager.so.1.0.0
-/usr/lib/libvorbis.so.0.3.0
-/usr/lib/libvorbisfile.so.3.1.0
-/usr/lib/qt3/lib/libqt-mt.so.3.2.3
-/usr/share/fonts/ttf/vera/Vera.ttf
-/usr/share/fonts/ttf/vera/VeraBd.ttf
diff --git a/move/data/always_i18n.list b/move/data/always_i18n.list
deleted file mode 100644
index 5edba2713..000000000
--- a/move/data/always_i18n.list
+++ /dev/null
@@ -1,33 +0,0 @@
-/usr/share/locale/__LANG__/LC_ADDRESS
-/usr/share/locale/__LANG__/LC_COLLATE
-/usr/share/locale/__LANG__/LC_CTYPE
-/usr/share/locale/__LANG__/LC_IDENTIFICATION
-/usr/share/locale/__LANG__/LC_MEASUREMENT
-/usr/share/locale/__LANG__/LC_MESSAGES/GConf2.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/SYS_LC_MESSAGES
-/usr/share/locale/__LANG__/LC_MESSAGES/glib20.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/gtk20.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kdelibs.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kdesktop.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/khotkeys.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kicker.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kio.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kio_devices.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kmix.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/knotify.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/krandr.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/ksmserver.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/ktaskbarapplet.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/kwin.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/libgnomeui-2.0.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/libkonq.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/libxine1.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/magicdev.mo
-/usr/share/locale/__LANG__/LC_MESSAGES/totem.mo
-/usr/share/locale/__LANG__/LC_MONETARY
-/usr/share/locale/__LANG__/LC_NAME
-/usr/share/locale/__LANG__/LC_NUMERIC
-/usr/share/locale/__LANG__/LC_PAPER
-/usr/share/locale/__LANG__/LC_TELEPHONE
-/usr/share/locale/__LANG__/LC_TIME
-/usr/share/services/ksycoca-__LANG__
diff --git a/move/data/boot.dirs b/move/data/boot.dirs
deleted file mode 100644
index c6c43e7db..000000000
--- a/move/data/boot.dirs
+++ /dev/null
@@ -1,39 +0,0 @@
-/etc/X11/fs
-/etc/X11/xserver
-/etc/dynamic/hooks
-/etc/pango
-/etc/profile.d
-/lib/modutils
-/usr/X11R6/lib/X11/locale/C
-/usr/X11R6/lib/modules/drivers/linux
-/usr/lib/libDrakX/Xconfig
-/usr/lib/libDrakX/auto/c
-/usr/lib/libDrakX/auto/xf86misc
-/usr/lib/libDrakX/c
-/usr/lib/libDrakX/printer
-/usr/lib/libDrakX/sbus_probing
-/usr/lib/libDrakX/xf86misc
-/usr/lib/perl5/5.8.3/Exporter
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/File
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/auto/File
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/auto/Socket
-/usr/lib/perl5/5.8.3/warnings
-/usr/lib/perl5/vendor_perl/5.8.3/MDK
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/Gtk2/Gdk
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/Glib
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/Gtk2
-/usr/lib/stage2
-/usr/share/applnk-mdk
-/usr/share/apps/kconf_update
-/usr/share/apps/kdisplay/app-defaults
-/usr/share/apps/khtml/css
-/usr/share/apps/knotify
-/usr/share/autostart
-/usr/share/icons/default
-/usr/share/langs
-/usr/share/mimelnk
-/usr/share/services/kaddressbook
-/usr/share/servicetypes
-/usr/share/themes/Default/gtk-2.0
-/usr/share/themes/Galaxy/gtk-2.0
diff --git a/move/data/boot.list b/move/data/boot.list
deleted file mode 100644
index 7919509cc..000000000
--- a/move/data/boot.list
+++ /dev/null
@@ -1,879 +0,0 @@
-/bin/basename
-/bin/cat
-/bin/chmod
-/bin/chown
-/bin/cp
-/bin/cut
-/bin/date
-/bin/egrep
-/bin/env
-/bin/gawk
-/bin/gettext
-/bin/grep
-/bin/gunzip
-/bin/hostname
-/bin/id
-/bin/loadkeys
-/bin/mkdir
-/bin/mktemp
-/bin/mv
-/bin/rm
-/bin/sed
-/bin/sort
-/bin/touch
-/bin/true
-/bin/uname
-/etc/DIR_COLORS
-/etc/X11/Xresources
-/etc/X11/Xsession
-/etc/X11/fs
-/etc/X11/wmsession.d/01KDE
-/etc/X11/wmsession.d/07IceWM
-/etc/X11/xdm/Xsession
-/etc/X11/xinit.d/Mod_Meta_L_Disable
-/etc/X11/xinit.d/menu
-/etc/X11/xinit.d/mountloop
-/etc/X11/xinit.d/numlock
-/etc/X11/xinit/XIM
-/etc/X11/xinit/fixkeyboard
-/etc/X11/xkb/compat/accessx
-/etc/X11/xkb/compat/basic
-/etc/X11/xkb/compat/complete
-/etc/X11/xkb/compat/iso9995
-/etc/X11/xkb/compat/misc
-/etc/X11/xkb/compat/mousekeys
-/etc/X11/xkb/compat/xfree86
-/etc/X11/xkb/geometry/pc
-/etc/X11/xkb/keycodes/aliases
-/etc/X11/xkb/keycodes/xfree86
-/etc/X11/xkb/rules/xfree86
-/etc/X11/xkb/rules/xfree86.lst
-/etc/X11/xkb/symbols/en_US
-/etc/X11/xkb/symbols/gb
-/etc/X11/xkb/symbols/iso9995-3
-/etc/X11/xkb/symbols/srvr_ctrl
-/etc/X11/xkb/symbols/us
-/etc/X11/xkb/types/basic
-/etc/X11/xkb/types/complete
-/etc/X11/xkb/types/extra
-/etc/X11/xkb/types/iso9995
-/etc/X11/xkb/types/mousekeys
-/etc/X11/xkb/types/pc
-/etc/X11/xkb/xkbcomp
-/etc/X11/xserver
-/etc/bash_completion
-/etc/bash_completion.d/netprofile
-/etc/bash_completion.d/urpmi
-/etc/bashrc
-/etc/cups/classes.conf
-/etc/cups/client.conf
-/etc/cups/command.types
-/etc/cups/cupsd.conf
-/etc/cups/mime.convs
-/etc/cups/mime.types
-/etc/cups/printers.conf
-/etc/cups/pstoraster.convs
-/etc/devfs/conf.d/dynamic.conf
-/etc/devfsd.conf
-/etc/dynamic/hooks
-/etc/dynamic/scripts/functions.script
-/etc/dynamic/scripts/lp.script
-/etc/dynamic/scripts/part.script
-/etc/filesystems
-/etc/fonts/fonts.conf
-/etc/fonts/local.conf
-/etc/group
-/etc/gtk-2.0/gdk-pixbuf.loaders
-/etc/gtk-2.0/gtk.immodules
-/etc/hotplug.d/default/default.hotplug
-/etc/hotplug/hotplug.functions
-/etc/imrc
-/etc/initlog.conf
-/etc/inputrc
-/etc/localtime
-/etc/mandrake-release
-/etc/modprobe.devfs
-/etc/pam.d/other
-/etc/pam.d/sudo
-/etc/pam.d/system-auth
-/etc/pam.d/xserver
-/etc/pango
-/etc/passwd
-/etc/profile
-/etc/profile.d
-/etc/rc.d/init.d/functions
-/etc/rc.d/init.d/mandrake_consmap
-/etc/rc.d/init.d/netfs
-/etc/rc.d/init.d/numlock
-/etc/rc.d/init.d/sound
-/etc/rc.d/init.d/syslog
-/etc/rc.d/init.d/xfs
-/etc/rc.d/rc.local
-/etc/rpc
-/etc/security/console.perms
-/etc/security/fileshare.conf
-/etc/security/pam_env.conf
-/etc/services
-/etc/sudoers
-/etc/syslog.conf
-/etc/termcap
-/etc/tmdns.conf
-/etc/xdg/menus/applications-merged-simplified/applications-simplified-configure.menu
-/etc/xdg/menus/applications-simplified.menu
-/etc/xdg/menus/kontact.menu
-/etc/xdg/menus/mdk-configure-kde.menu
-/lib/libblkid.so.1.0
-/lib/libcom_err.so.2.1
-/lib/libcrypt-2.3.3.so
-/lib/libe2p.so.2.3
-/lib/libext2fs.so.2.4
-/lib/libintl.so.2.4.1
-/lib/libpcre.so.0.0.1
-/lib/libproc.so.3.1.15
-/lib/libuuid.so.1.2
-/lib/module-init-tools/modprobe.compat
-/lib/module-init-tools/modprobe.default
-/lib/security/pam_console.so
-/lib/security/pam_cracklib.so
-/lib/security/pam_deny.so
-/lib/security/pam_env.so
-/lib/security/pam_limits.so
-/lib/security/pam_permit.so
-/lib/security/pam_rootok.so
-/lib/security/pam_stack.so
-/lib/security/pam_unix.so
-/move/BOOT-800-MOVE.jpg
-/move/all-etcfiles
-/move/directories-to-create
-/move/etcfiles
-/sbin/chkconfig
-/sbin/consoletype
-/sbin/generate-modprobe.conf
-/sbin/hotplug
-/sbin/initlog
-/sbin/mkdosfs
-/sbin/mke2fs
-/sbin/modprobe-25
-/sbin/pam_console_apply
-/sbin/rmmod-25
-/sbin/runlevel
-/sbin/service
-/sbin/sysctl
-/usr/X11R6/bin/Xwrapper
-/usr/X11R6/bin/enable_X11_numlock
-/usr/X11R6/bin/iceauth
-/usr/X11R6/bin/setxkbmap
-/usr/X11R6/bin/xdpyinfo
-/usr/X11R6/bin/xmodmap
-/usr/X11R6/bin/xrdb
-/usr/X11R6/bin/xset
-/usr/X11R6/bin/xsetroot
-/usr/X11R6/lib/X11/XErrorDB
-/usr/X11R6/lib/X11/XKeysymDB
-/usr/X11R6/lib/X11/locale/C
-/usr/X11R6/lib/X11/locale/compose.dir
-/usr/X11R6/lib/X11/locale/iso8859-1/Compose
-/usr/X11R6/lib/X11/locale/iso8859-1/XI18N_OBJS
-/usr/X11R6/lib/X11/locale/iso8859-1/XLC_LOCALE
-/usr/X11R6/lib/X11/locale/locale.alias
-/usr/X11R6/lib/X11/locale/locale.dir
-/usr/X11R6/lib/X11/rgb.txt
-/usr/X11R6/lib/libXm.so.2.0.1
-/usr/X11R6/lib/libXmuu.so.1.0
-/usr/X11R6/lib/libXp.so.6.2
-/usr/X11R6/lib/libXxf86misc.so.1.0
-/usr/X11R6/lib/libXxf86vm.so.1.0
-/usr/X11R6/lib/modules/drivers/linux
-/usr/X11R6/lib/modules/fonts/libbitmap.a
-/usr/X11R6/lib/modules/fonts/libfreetype.a
-/usr/X11R6/lib/modules/fonts/libtype1.a
-/usr/X11R6/lib/modules/input/mouse_drv.o
-/usr/X11R6/lib/modules/libfb.a
-/usr/X11R6/lib/modules/libpcidata.a
-/usr/X11R6/lib/modules/libramdac.a
-/usr/X11R6/lib/modules/libvgahw.a
-/usr/bin/cpp-3.3.2
-/usr/bin/dcopserver_shutdown
-/usr/bin/dircolors
-/usr/bin/dumpkeys
-/usr/bin/expr
-/usr/bin/getent
-/usr/bin/head
-/usr/bin/kab2kabc
-/usr/bin/killall
-/usr/bin/krootwarning
-/usr/bin/ksplash
-/usr/bin/lnusertemp
-/usr/bin/locale
-/usr/bin/mandrakegalaxy
-/usr/bin/mandrakegalaxy.real
-/usr/bin/mdk_move_loop
-/usr/bin/nspluginscan
-/usr/bin/perl5.8.3
-/usr/bin/qiv
-/usr/bin/runlevel_set
-/usr/bin/runstage2.pl
-/usr/bin/setleds
-/usr/bin/sperl5.8.3
-/usr/bin/sudo
-/usr/bin/test-windows-key
-/usr/bin/tr
-/usr/bin/tty
-/usr/bin/wait4x
-/usr/bin/which
-/usr/bin/whoami
-/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.2/cc1
-/usr/lib/gconv/gconv-modules
-/usr/lib/gtk-2.0/2.2.0/engines/libgalaxy.so
-/usr/lib/gtk-2.0/2.2.0/loaders/libpixbufloader-png.so
-/usr/lib/kbd/consolefonts/lat0-16.psf.gz
-/usr/lib/kbd/consoletrans/iso15.acm.gz
-/usr/lib/kbd/consoletrans/iso15.sfm.gz
-/usr/lib/kde3/clock_panelapplet.la
-/usr/lib/kde3/dcopserver.la
-/usr/lib/kde3/kabc_file.la
-/usr/lib/kde3/kabc_file.so
-/usr/lib/kde3/kbuildsycoca.la
-/usr/lib/kde3/kbuildsycoca.so
-/usr/lib/kde3/kcm_access.la
-/usr/lib/kde3/kcm_access.so
-/usr/lib/kde3/kcm_arts.la
-/usr/lib/kde3/kcm_arts.so
-/usr/lib/kde3/kcm_bell.la
-/usr/lib/kde3/kcm_bell.so
-/usr/lib/kde3/kcm_energy.la
-/usr/lib/kde3/kcm_energy.so
-/usr/lib/kde3/kcm_input.la
-/usr/lib/kde3/kcm_input.so
-/usr/lib/kde3/kcm_keyboard.la
-/usr/lib/kde3/kcm_keyboard.so
-/usr/lib/kde3/kcm_keys.la
-/usr/lib/kde3/kcm_keys.so
-/usr/lib/kde3/kcm_kgamma.la
-/usr/lib/kde3/kcm_kgamma.so
-/usr/lib/kde3/kcm_kmix.la
-/usr/lib/kde3/kcm_kmix.so
-/usr/lib/kde3/kcm_nsplugins.la
-/usr/lib/kde3/kcm_nsplugins.so
-/usr/lib/kde3/kcm_randr.la
-/usr/lib/kde3/kcm_randr.so
-/usr/lib/kde3/kcm_style.la
-/usr/lib/kde3/kcm_style.so
-/usr/lib/kde3/kcminit.la
-/usr/lib/kde3/kcminit.so
-/usr/lib/kde3/kconf_update.la
-/usr/lib/kde3/kconf_update.so
-/usr/lib/kde3/kded.la
-/usr/lib/kde3/kded_mountwatcher.la
-/usr/lib/kde3/kdesktop.la
-/usr/lib/kde3/kgreet_classic.la
-/usr/lib/kde3/kgreet_classic.so
-/usr/lib/kde3/kicker.la
-/usr/lib/kde3/kio_devices.la
-/usr/lib/kde3/kio_file.la
-/usr/lib/kde3/klauncher.la
-/usr/lib/kde3/knotify.la
-/usr/lib/kde3/konq_sound.la
-/usr/lib/kde3/ksmserver.la
-/usr/lib/kde3/ksplashmdk.la
-/usr/lib/kde3/ksplashmdk.so
-/usr/lib/kde3/kwin.la
-/usr/lib/kde3/kwin3_mandrake2.la
-/usr/lib/kde3/minipager_panelapplet.la
-/usr/lib/kde3/systemtray_panelapplet.la
-/usr/lib/kde3/taskbar_panelapplet.la
-/usr/lib/krandrinithack.la
-/usr/lib/krandrinithack.so
-/usr/lib/libDrakX/Xconfig
-/usr/lib/libDrakX/any.pm
-/usr/lib/libDrakX/auto/c
-/usr/lib/libDrakX/auto/xf86misc
-/usr/lib/libDrakX/c
-/usr/lib/libDrakX/c.pm
-/usr/lib/libDrakX/class_discard.pm
-/usr/lib/libDrakX/commands.pm
-/usr/lib/libDrakX/common.pm
-/usr/lib/libDrakX/detect_devices.pm
-/usr/lib/libDrakX/devices.pm
-/usr/lib/libDrakX/do_pkgs.pm
-/usr/lib/libDrakX/fs.pm
-/usr/lib/libDrakX/fsedit.pm
-/usr/lib/libDrakX/handle_configs.pm
-/usr/lib/libDrakX/harddrake/sound.pm
-/usr/lib/libDrakX/interactive.pm
-/usr/lib/libDrakX/interactive/gtk.pm
-/usr/lib/libDrakX/keyboard.pm
-/usr/lib/libDrakX/lang.pm
-/usr/lib/libDrakX/list_modules.pm
-/usr/lib/libDrakX/log.pm
-/usr/lib/libDrakX/loopback.pm
-/usr/lib/libDrakX/modules.pm
-/usr/lib/libDrakX/modules/interactive.pm
-/usr/lib/libDrakX/mouse.pm
-/usr/lib/libDrakX/network/network.pm
-/usr/lib/libDrakX/network/tools.pm
-/usr/lib/libDrakX/partition_table.pm
-/usr/lib/libDrakX/partition_table/dos.pm
-/usr/lib/libDrakX/partition_table/empty.pm
-/usr/lib/libDrakX/partition_table/raw.pm
-/usr/lib/libDrakX/printer
-/usr/lib/libDrakX/run_program.pm
-/usr/lib/libDrakX/sbus_probing
-/usr/lib/libDrakX/services.pm
-/usr/lib/libDrakX/steps.pm
-/usr/lib/libDrakX/swap.pm
-/usr/lib/libDrakX/timezone.pm
-/usr/lib/libDrakX/ugtk2.pm
-/usr/lib/libDrakX/xf86misc
-/usr/lib/libatk-1.0.so.0.400.1
-/usr/lib/libbeecrypt.so.6.2.0
-/usr/lib/libbz2.so.1.0.0
-/usr/lib/libconsole.so.0.0.0
-/usr/lib/libcrack.so.2.7
-/usr/lib/libctutils.so.0.0.0
-/usr/lib/libelf-0.89.so
-/usr/lib/libgdk-1.2.so.0.9.1
-/usr/lib/libgdk-x11-2.0.so.0.200.4
-/usr/lib/libgdk_imlib.so.1.9.14
-/usr/lib/libgdk_pixbuf-2.0.so.0.200.4
-/usr/lib/libglib-1.2.so.0.0.10
-/usr/lib/libgmodule-1.2.so.0.0.10
-/usr/lib/libgobject-2.0.so.0.200.3
-/usr/lib/libgtk-1.2.so.0.9.1
-/usr/lib/libgtk-x11-2.0.so.0.200.4
-/usr/lib/libimlib-jpeg.so
-/usr/lib/libkabc.so.1.2.0
-/usr/lib/libkabc_file.so.1.0.0
-/usr/lib/libkdeinit_kbuildsycoca.so
-/usr/lib/libkdeinit_kcminit.so
-/usr/lib/libkdeinit_kconf_update.so
-/usr/lib/libkdeprint.so.4.2.0
-/usr/lib/libkhtml.so.4.2.0
-/usr/lib/libkjs.so.1.2.0
-/usr/lib/libkmid.so.0.0.95
-/usr/lib/libkonq.la
-/usr/lib/libkresources.so.1.2.0
-/usr/lib/libksplashthemes.so.0.0.0
-/usr/lib/libkwalletclient.so.1.0.0
-/usr/lib/libpango-1.0.so.0.200.5
-/usr/lib/libpangox-1.0.so.0.200.5
-/usr/lib/libpangoxft-1.0.so.0.200.5
-/usr/lib/libpcreposix.so.0.0.0
-/usr/lib/libpng12.so.0.1.2.5
-/usr/lib/librpm-4.2.so
-/usr/lib/librpmdb-4.2.so
-/usr/lib/librpmio-4.2.so
-/usr/lib/libvcard.so.0.0.0
-/usr/lib/libxine.so.1.8.1
-/usr/lib/pango/1.2.0/modules/pango-basic-xft.so
-/usr/lib/perl5/5.8.3/AutoLoader.pm
-/usr/lib/perl5/5.8.3/Carp.pm
-/usr/lib/perl5/5.8.3/Digest/base.pm
-/usr/lib/perl5/5.8.3/Exporter
-/usr/lib/perl5/5.8.3/Exporter.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/CORE
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/Config.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/Digest/MD5.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/DynaLoader.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/File
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/Socket.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/XSLoader.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/_h2ph_pre.ph
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/asm/unistd.ph
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/auto/Digest/MD5/MD5.so
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/auto/File
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/auto/Socket
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/bits/syscall.ph
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/lib.pm
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/sys/syscall.ph
-/usr/lib/perl5/5.8.3/i386-linux-thread-multi/syscall.ph
-/usr/lib/perl5/5.8.3/overload.pm
-/usr/lib/perl5/5.8.3/strict.pm
-/usr/lib/perl5/5.8.3/vars.pm
-/usr/lib/perl5/5.8.3/warnings
-/usr/lib/perl5/5.8.3/warnings.pm
-/usr/lib/perl5/vendor_perl/5.8.3/MDK
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/Glib.pm
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/Gtk2.pm
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/Gtk2/Gdk
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/Glib
-/usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/Gtk2
-/usr/lib/stage2
-/usr/sbin/chksession
-/usr/sbin/ddcxinfos
-/usr/sbin/fileshareset
-/usr/sbin/update-alternatives
-/usr/share/application-registry/gnome-vfs.applications
-/usr/share/applnk-mdk
-/usr/share/applnk-mdk-simplified/.hidden/.directory
-/usr/share/applnk-mdk-simplified/.hidden/kontact-summary.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/.directory
-/usr/share/applnk-mdk-simplified/Administer your system/Configure your computer.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/KControl.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/KFloppy.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/ark.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/kdepasswd.desktop
-/usr/share/applnk-mdk-simplified/Administer your system/konsole.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/.directory
-/usr/share/applnk-mdk-simplified/Enjoy music and video/Listen to music files.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/Mix music.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/Record sounds.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/Watch television.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/Watch videos.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/kdenlive.desktop
-/usr/share/applnk-mdk-simplified/Enjoy music and video/kmix.desktop
-/usr/share/applnk-mdk-simplified/Organize/.directory
-/usr/share/applnk-mdk-simplified/Organize/Manage projects.desktop
-/usr/share/applnk-mdk-simplified/Organize/Manage your finances.desktop
-/usr/share/applnk-mdk-simplified/Organize/karm.desktop
-/usr/share/applnk-mdk-simplified/Organize/kontact-knotes.desktop
-/usr/share/applnk-mdk-simplified/Organize/kontact-korganizer-time.desktop
-/usr/share/applnk-mdk-simplified/Organize/kontact-korganizer.desktop
-/usr/share/applnk-mdk-simplified/Play games/.directory
-/usr/share/applnk-mdk-simplified/Play games/ArmageTron.desktop
-/usr/share/applnk-mdk-simplified/Play games/Cannon Smash.desktop
-/usr/share/applnk-mdk-simplified/Play games/Chromium.desktop
-/usr/share/applnk-mdk-simplified/Play games/Crack Attack! - Solo.desktop
-/usr/share/applnk-mdk-simplified/Play games/Frozen-Bubble.desktop
-/usr/share/applnk-mdk-simplified/Play games/LBreakout 2.desktop
-/usr/share/applnk-mdk-simplified/Play games/Tuxracer.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/.directory
-/usr/share/applnk-mdk-simplified/Surf the Internet/Kppp.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/Organize a video conference.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/kbear.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/konqueror.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/kontact-KMail.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/kontact-KNode.desktop
-/usr/share/applnk-mdk-simplified/Surf the Internet/kopete.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/.directory
-/usr/share/applnk-mdk-simplified/Use office tools/Create a drawing.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/Create a presentation.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/Create a spreadsheet.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/Create a text document.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/Create flowcharts and diagrams.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/kcalc.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/kdeprintfax.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/kdict.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/kfax.desktop
-/usr/share/applnk-mdk-simplified/Use office tools/kontact-kaddressbook.desktop
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/.directory
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/Edit images and photos.desktop
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/View images and photos.desktop
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/kimdaba.desktop
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/kooka.desktop
-/usr/share/applnk-mdk-simplified/View, modify and create graphics/ksnapshot.desktop
-/usr/share/apps/kabc/formats/binary.desktop
-/usr/share/apps/kconf_update
-/usr/share/apps/kdesktop/directory.autostart
-/usr/share/apps/kdesktop/directory.desktop
-/usr/share/apps/kdesktop/directory.trash
-/usr/share/apps/kdisplay/app-defaults
-/usr/share/apps/khtml/css
-/usr/share/apps/khtml/khtml.rc
-/usr/share/apps/khtml/khtml_popupmenu.rc
-/usr/share/apps/kicker/applets/clockapplet.desktop
-/usr/share/apps/kicker/applets/minipagerapplet.desktop
-/usr/share/apps/kicker/applets/systemtrayapplet.desktop
-/usr/share/apps/kicker/applets/taskbarapplet.desktop
-/usr/share/apps/kicker/default-download-apps-simplified
-/usr/share/apps/kicker/pics/disk1.png
-/usr/share/apps/kicker/pics/disk10.png
-/usr/share/apps/kicker/pics/disk2.png
-/usr/share/apps/kicker/pics/disk3.png
-/usr/share/apps/kicker/pics/disk4.png
-/usr/share/apps/kicker/pics/disk5.png
-/usr/share/apps/kicker/pics/disk6.png
-/usr/share/apps/kicker/pics/disk7.png
-/usr/share/apps/kicker/pics/disk8.png
-/usr/share/apps/kicker/pics/disk9.png
-/usr/share/apps/knotify
-/usr/share/apps/kwin/eventsrc
-/usr/share/autostart
-/usr/share/config/kcmdisplayrc
-/usr/share/config/kcookiejarrc
-/usr/share/config/kdebug.areas
-/usr/share/config/kdebugrc
-/usr/share/config/kdedrc
-/usr/share/config/kdeglobals
-/usr/share/config/kdeprintrc
-/usr/share/config/kdesktoprc
-/usr/share/config/kdm/kdmrc
-/usr/share/config/khotkeysrc
-/usr/share/config/kickerrc
-/usr/share/config/klipperrc
-/usr/share/config/konquerorrc
-/usr/share/config/konsolerc
-/usr/share/config/krootwarningrc
-/usr/share/config/kwritedrc
-/usr/share/config/mountwatcher.desktop
-/usr/share/icons/crystalsvg/16x16/apps/desktop-mdk.png
-/usr/share/icons/crystalsvg/16x16/apps/kicker.png
-/usr/share/icons/crystalsvg/16x16/apps/konqueror.png
-/usr/share/icons/crystalsvg/16x16/apps/kontact-mdk.png
-/usr/share/icons/crystalsvg/16x16/apps/ksplash.png
-/usr/share/icons/crystalsvg/16x16/apps/mandrakegalaxy.png
-/usr/share/icons/crystalsvg/16x16/apps/menuk-mdk.png
-/usr/share/icons/crystalsvg/16x16/mimetypes/unknown.png
-/usr/share/icons/crystalsvg/32x32/apps/desktop-mdk.png
-/usr/share/icons/crystalsvg/32x32/apps/konqueror.png
-/usr/share/icons/crystalsvg/32x32/apps/kontact-mdk.png
-/usr/share/icons/crystalsvg/32x32/apps/ksplash.png
-/usr/share/icons/crystalsvg/32x32/apps/mandrakegalaxy.png
-/usr/share/icons/crystalsvg/32x32/apps/menuk-mdk.png
-/usr/share/icons/crystalsvg/32x32/apps/xapp.png
-/usr/share/icons/crystalsvg/32x32/devices/3floppy_mount.png
-/usr/share/icons/crystalsvg/32x32/devices/cdrom_mount.png
-/usr/share/icons/crystalsvg/32x32/filesystems/trashcan_empty.png
-/usr/share/icons/crystalsvg/index.theme
-/usr/share/icons/default
-/usr/share/icons/hicolor/32x32/apps/ooo_writer.xpm
-/usr/share/icons/hicolor/index.theme
-/usr/share/icons/totem.png
-/usr/share/icons/wilbur.png
-/usr/share/langs
-/usr/share/ldetect-lst/Cards+
-/usr/share/ldetect-lst/MonitorsDB
-/usr/share/ldetect-lst/pcitable
-/usr/share/ldetect-lst/usbtable
-/usr/share/mdk/backgrounds/Mandrake.png
-/usr/share/mdk/faces/ic-tux1.png
-/usr/share/mdk/kde/bookmarks/bookmarks-download.xml
-/usr/share/mdk/mandrakegalaxy/doc.png
-/usr/share/mdk/mandrakegalaxy/mcc.png
-/usr/share/mdk/mandrakegalaxy/mdkclub.png
-/usr/share/mdk/mandrakegalaxy/mdkexpert.png
-/usr/share/mdk/mandrakegalaxy/mdkgalaxy-en.html
-/usr/share/mdk/mandrakegalaxy/mdksoft.png
-/usr/share/mdk/mandrakegalaxy/mdkstore.png
-/usr/share/mimelnk
-/usr/share/services/about.protocol
-/usr/share/services/ar.protocol
-/usr/share/services/ark_part.desktop
-/usr/share/services/audiocd.protocol
-/usr/share/services/bmp.kimgio
-/usr/share/services/bzip.protocol
-/usr/share/services/bzip2.protocol
-/usr/share/services/cgi.protocol
-/usr/share/services/chatwindow.desktop
-/usr/share/services/configcolors.desktop
-/usr/share/services/configfonts.desktop
-/usr/share/services/configfreebusy.desktop
-/usr/share/services/configgroupautomation.desktop
-/usr/share/services/configgroupscheduling.desktop
-/usr/share/services/configmain.desktop
-/usr/share/services/configtime.desktop
-/usr/share/services/configviews.desktop
-/usr/share/services/cursorthumbnail.desktop
-/usr/share/services/data.protocol
-/usr/share/services/devices.protocol
-/usr/share/services/djvuthumbnail.desktop
-/usr/share/services/eps.kimgio
-/usr/share/services/file.protocol
-/usr/share/services/finger.protocol
-/usr/share/services/fish.protocol
-/usr/share/services/floppy.protocol
-/usr/share/services/fonts.protocol
-/usr/share/services/fontthumbnail.desktop
-/usr/share/services/ftp.protocol
-/usr/share/services/ghelp.protocol
-/usr/share/services/gif.kimgio
-/usr/share/services/gsthumbnail.desktop
-/usr/share/services/gzip.protocol
-/usr/share/services/help.protocol
-/usr/share/services/htmlthumbnail.desktop
-/usr/share/services/http.protocol
-/usr/share/services/http_cache_cleaner.desktop
-/usr/share/services/https.protocol
-/usr/share/services/ico.kimgio
-/usr/share/services/imagethumbnail.desktop
-/usr/share/services/imap4.protocol
-/usr/share/services/imaps.protocol
-/usr/share/services/info.protocol
-/usr/share/services/jpeg.kimgio
-/usr/share/services/kabconfig.desktop
-/usr/share/services/kabldapconfig.desktop
-/usr/share/services/kaccess.desktop
-/usr/share/services/kaddressbook
-/usr/share/services/kamera.protocol
-/usr/share/services/katedefaultproject.desktop
-/usr/share/services/katepart.desktop
-/usr/share/services/kbearftp.protocol
-/usr/share/services/kbeargftimportfilter.desktop
-/usr/share/services/kbearkrusaderimportfilter.desktop
-/usr/share/services/kbearncftpimportfilter.desktop
-/usr/share/services/kbearoldimportfilter.desktop
-/usr/share/services/kbearwincommanderimportfilter.desktop
-/usr/share/services/kbearws_ftpimportfilter.desktop
-/usr/share/services/kbzip2filter.desktop
-/usr/share/services/kcertpart.desktop
-/usr/share/services/kcmweather.desktop
-/usr/share/services/kcmweatherservice.desktop
-/usr/share/services/kconfiguredialog/kopete_autoreplace_config.desktop
-/usr/share/services/kconfiguredialog/kopete_cryptography_config.desktop
-/usr/share/services/kconfiguredialog/kopete_highlight_config.desktop
-/usr/share/services/kconfiguredialog/kopete_history_config.desktop
-/usr/share/services/kconfiguredialog/kopete_msn_config.desktop
-/usr/share/services/kconfiguredialog/kopete_nowlistening_config.desktop
-/usr/share/services/kconfiguredialog/kopete_texteffect_config.desktop
-/usr/share/services/kconfiguredialog/kopete_translator_config.desktop
-/usr/share/services/kconfiguredialog/kopete_webpresence_config.desktop
-/usr/share/services/kded/favicons.desktop
-/usr/share/services/kded/kcookiejar.desktop
-/usr/share/services/kded/kdeprintd.desktop
-/usr/share/services/kded/konqy_preloader.desktop
-/usr/share/services/kded/kpasswdserver.desktop
-/usr/share/services/kded/kssld.desktop
-/usr/share/services/kded/kwalletd.desktop
-/usr/share/services/kded/mountwatcher.desktop
-/usr/share/services/kded/proxyscout.desktop
-/usr/share/services/kdeprint_part.desktop
-/usr/share/services/kfile_au.desktop
-/usr/share/services/kfile_avi.desktop
-/usr/share/services/kfile_bmp.desktop
-/usr/share/services/kfile_dvi.desktop
-/usr/share/services/kfile_font.desktop
-/usr/share/services/kfile_ico.desktop
-/usr/share/services/kfile_jpeg.desktop
-/usr/share/services/kfile_m3u.desktop
-/usr/share/services/kfile_mp3.desktop
-/usr/share/services/kfile_ogg.desktop
-/usr/share/services/kfile_pcx.desktop
-/usr/share/services/kfile_pdf.desktop
-/usr/share/services/kfile_png.desktop
-/usr/share/services/kfile_pnm.desktop
-/usr/share/services/kfile_ps.desktop
-/usr/share/services/kfile_tga.desktop
-/usr/share/services/kfile_tiff.desktop
-/usr/share/services/kfile_vcf.desktop
-/usr/share/services/kfile_wav.desktop
-/usr/share/services/kfile_xbm.desktop
-/usr/share/services/kfindpart.desktop
-/usr/share/services/kfontviewpart.desktop
-/usr/share/services/kgzipfilter.desktop
-/usr/share/services/khelpcenter.desktop
-/usr/share/services/khtml.desktop
-/usr/share/services/khtmlimage.desktop
-/usr/share/services/kio_uiserver.desktop
-/usr/share/services/kjavaappletviewer.desktop
-/usr/share/services/kmailservice.protocol
-/usr/share/services/kmanpart.desktop
-/usr/share/services/kmixctrl_restore.desktop
-/usr/share/services/kmultipart.desktop
-/usr/share/services/knewsservice.protocol
-/usr/share/services/knotify.desktop
-/usr/share/services/kntsrcfilepropsdlg.desktop
-/usr/share/services/konq_aboutpage.desktop
-/usr/share/services/konq_detailedlistview.desktop
-/usr/share/services/konq_iconview.desktop
-/usr/share/services/konq_infolistview.desktop
-/usr/share/services/konq_multicolumnview.desktop
-/usr/share/services/konq_sidebartng.desktop
-/usr/share/services/konq_textview.desktop
-/usr/share/services/konq_treeview.desktop
-/usr/share/services/konqueror_config.desktop
-/usr/share/services/konsole-script.desktop
-/usr/share/services/konsolepart.desktop
-/usr/share/services/kontact/kaddressbookplugin.desktop
-/usr/share/services/kontact/kmailplugin.desktop
-/usr/share/services/kontact/knodeplugin.desktop
-/usr/share/services/kontact/knotesplugin.desktop
-/usr/share/services/kontact/korganizerplugin.desktop
-/usr/share/services/kontact/summaryplugin.desktop
-/usr/share/services/kontact/todoplugin.desktop
-/usr/share/services/kontact/weatherplugin.desktop
-/usr/share/services/kontactconfig.desktop
-/usr/share/services/kopete_accountconfig.desktop
-/usr/share/services/kopete_aim.desktop
-/usr/share/services/kopete_appearanceconfig.desktop
-/usr/share/services/kopete_autoreplace.desktop
-/usr/share/services/kopete_behaviorconfig.desktop
-/usr/share/services/kopete_connectionstatus.desktop
-/usr/share/services/kopete_contactnotes.desktop
-/usr/share/services/kopete_cryptography.desktop
-/usr/share/services/kopete_highlight.desktop
-/usr/share/services/kopete_history.desktop
-/usr/share/services/kopete_icq.desktop
-/usr/share/services/kopete_irc.desktop
-/usr/share/services/kopete_jabber.desktop
-/usr/share/services/kopete_msn.desktop
-/usr/share/services/kopete_nowlistening.desktop
-/usr/share/services/kopete_sms.desktop
-/usr/share/services/kopete_texteffect.desktop
-/usr/share/services/kopete_translator.desktop
-/usr/share/services/kopete_webpresence.desktop
-/usr/share/services/kopete_yahoo.desktop
-/usr/share/services/korganizer/birthdays.desktop
-/usr/share/services/korganizer/datenums.desktop
-/usr/share/services/korganizer/exchange.desktop
-/usr/share/services/korganizer/hebrew.desktop
-/usr/share/services/korganizer/holidays.desktop
-/usr/share/services/korganizer/projectview.desktop
-/usr/share/services/korganizer/webexport.desktop
-/usr/share/services/kpfpropertiesdialogplugin.desktop
-/usr/share/services/kresources/kabc/dir.desktop
-/usr/share/services/kresources/kabc/file.desktop
-/usr/share/services/kresources/kabc/imap.desktop
-/usr/share/services/kresources/kabc/ldapkio.desktop
-/usr/share/services/kresources/kabc/net.desktop
-/usr/share/services/kresources/kcal/imap.desktop
-/usr/share/services/kresources/kcal/kabc.desktop
-/usr/share/services/kresources/kcal/local.desktop
-/usr/share/services/kresources/kcal/localdir.desktop
-/usr/share/services/kresources/kcal/remote.desktop
-/usr/share/services/kshorturifilter.desktop
-/usr/share/services/ksplash.desktop
-/usr/share/services/ksplashdefault.desktop
-/usr/share/services/ksplashmdk.desktop
-/usr/share/services/ksplashredmond.desktop
-/usr/share/services/ksplashstandard.desktop
-/usr/share/services/ksycoca-en_US
-/usr/share/services/ktexteditor_insertfile.desktop
-/usr/share/services/ktexteditor_isearch.desktop
-/usr/share/services/ktexteditor_kdatatool.desktop
-/usr/share/services/kuriikwsfilter.desktop
-/usr/share/services/kurisearchfilter.desktop
-/usr/share/services/kwallet_config.desktop
-/usr/share/services/kwalletmanager_show.desktop
-/usr/share/services/kweatherservice.desktop
-/usr/share/services/kwrited.desktop
-/usr/share/services/kxkb.desktop
-/usr/share/services/ldap.protocol
-/usr/share/services/ldifvcardthumbnail.desktop
-/usr/share/services/localdomainurifilter.desktop
-/usr/share/services/mac.protocol
-/usr/share/services/man.protocol
-/usr/share/services/metainfo.protocol
-/usr/share/services/mms.protocol
-/usr/share/services/nfs.protocol
-/usr/share/services/nntp.protocol
-/usr/share/services/pbm.kimgio
-/usr/share/services/pcx.kimgio
-/usr/share/services/pgm.kimgio
-/usr/share/services/picturethumbnail.desktop
-/usr/share/services/png.kimgio
-/usr/share/services/pop3.protocol
-/usr/share/services/pop3s.protocol
-/usr/share/services/popmail-conduit.desktop
-/usr/share/services/ppm.kimgio
-/usr/share/services/print.protocol
-/usr/share/services/printdb.protocol
-/usr/share/services/programs.protocol
-/usr/share/services/rdp.protocol
-/usr/share/services/rlogin.protocol
-/usr/share/services/rssservice.desktop
-/usr/share/services/rtsp.protocol
-/usr/share/services/scanservice.desktop
-/usr/share/services/searchproviders/acronym.desktop
-/usr/share/services/searchproviders/alexa.desktop
-/usr/share/services/searchproviders/alexa_url.desktop
-/usr/share/services/searchproviders/alltheweb.desktop
-/usr/share/services/searchproviders/altavista.desktop
-/usr/share/services/searchproviders/appsy.desktop
-/usr/share/services/searchproviders/austronaut.desktop
-/usr/share/services/searchproviders/bugft.desktop
-/usr/share/services/searchproviders/bugno.desktop
-/usr/share/services/searchproviders/call.desktop
-/usr/share/services/searchproviders/citeseer.desktop
-/usr/share/services/searchproviders/cpan.desktop
-/usr/share/services/searchproviders/ctan.desktop
-/usr/share/services/searchproviders/ctan_cat.desktop
-/usr/share/services/searchproviders/de2en.desktop
-/usr/share/services/searchproviders/dmoz.desktop
-/usr/share/services/searchproviders/docbook.desktop
-/usr/share/services/searchproviders/doi.desktop
-/usr/share/services/searchproviders/en2de.desktop
-/usr/share/services/searchproviders/en2es.desktop
-/usr/share/services/searchproviders/en2fr.desktop
-/usr/share/services/searchproviders/en2it.desktop
-/usr/share/services/searchproviders/es2en.desktop
-/usr/share/services/searchproviders/excite.desktop
-/usr/share/services/searchproviders/feedster.desktop
-/usr/share/services/searchproviders/foldoc.desktop
-/usr/share/services/searchproviders/fr2en.desktop
-/usr/share/services/searchproviders/freshmeat.desktop
-/usr/share/services/searchproviders/froogle.desktop
-/usr/share/services/searchproviders/google.desktop
-/usr/share/services/searchproviders/google_advanced.desktop
-/usr/share/services/searchproviders/google_groups.desktop
-/usr/share/services/searchproviders/google_images.desktop
-/usr/share/services/searchproviders/google_lucky.desktop
-/usr/share/services/searchproviders/google_news.desktop
-/usr/share/services/searchproviders/hotbot.desktop
-/usr/share/services/searchproviders/hyperdictionary.desktop
-/usr/share/services/searchproviders/hyperdictionary_thesaurus.desktop
-/usr/share/services/searchproviders/imdb.desktop
-/usr/share/services/searchproviders/it2en.desktop
-/usr/share/services/searchproviders/jeeves.desktop
-/usr/share/services/searchproviders/kde.desktop
-/usr/share/services/searchproviders/kde_webcvs.desktop
-/usr/share/services/searchproviders/leo.desktop
-/usr/share/services/searchproviders/lycos.desktop
-/usr/share/services/searchproviders/mamma.desktop
-/usr/share/services/searchproviders/metacrawler.desktop
-/usr/share/services/searchproviders/msdn.desktop
-/usr/share/services/searchproviders/netcraft.desktop
-/usr/share/services/searchproviders/nl-telephone.desktop
-/usr/share/services/searchproviders/nl-teletekst.desktop
-/usr/share/services/searchproviders/pgpkeys.desktop
-/usr/share/services/searchproviders/php.desktop
-/usr/share/services/searchproviders/python.desktop
-/usr/share/services/searchproviders/qt.desktop
-/usr/share/services/searchproviders/rae.desktop
-/usr/share/services/searchproviders/rfc.desktop
-/usr/share/services/searchproviders/rpmfind.desktop
-/usr/share/services/searchproviders/ruby_application_archive.desktop
-/usr/share/services/searchproviders/seek.desktop
-/usr/share/services/searchproviders/sourceforge.desktop
-/usr/share/services/searchproviders/thesaurus.desktop
-/usr/share/services/searchproviders/vivisimo.desktop
-/usr/share/services/searchproviders/voila.desktop
-/usr/share/services/searchproviders/webster.desktop
-/usr/share/services/searchproviders/whatis.desktop
-/usr/share/services/searchproviders/wikipedia.desktop
-/usr/share/services/searchproviders/wordref.desktop
-/usr/share/services/settings.protocol
-/usr/share/services/sftp.protocol
-/usr/share/services/shellscript.desktop
-/usr/share/services/sieve.protocol
-/usr/share/services/smb.protocol
-/usr/share/services/smtp.protocol
-/usr/share/services/smtps.protocol
-/usr/share/services/ssh.protocol
-/usr/share/services/system.protocol
-/usr/share/services/tar.protocol
-/usr/share/services/telnet.protocol
-/usr/share/services/textthumbnail.desktop
-/usr/share/services/tga.kimgio
-/usr/share/services/thumbnail.protocol
-/usr/share/services/tiff.kimgio
-/usr/share/services/useragentstrings/ie401onwinnt4.desktop
-/usr/share/services/useragentstrings/ie45onwinnt5.desktop
-/usr/share/services/useragentstrings/ie501onwinnt5.desktop
-/usr/share/services/useragentstrings/ie50onppc.desktop
-/usr/share/services/useragentstrings/ie50onwin95.desktop
-/usr/share/services/useragentstrings/ie55onwin98.desktop
-/usr/share/services/useragentstrings/ie55onwinnt5.desktop
-/usr/share/services/useragentstrings/ie60onwinnt51.desktop
-/usr/share/services/useragentstrings/lynxoncurrent.desktop
-/usr/share/services/useragentstrings/mozoncurrent.desktop
-/usr/share/services/useragentstrings/mozonwin2000.desktop
-/usr/share/services/useragentstrings/mozonwinnt4.desktop
-/usr/share/services/useragentstrings/nn301oncurrent.desktop
-/usr/share/services/useragentstrings/nn475oncurrent.desktop
-/usr/share/services/useragentstrings/nn475onwin95.desktop
-/usr/share/services/useragentstrings/nn476onppc.desktop
-/usr/share/services/useragentstrings/op403onwinnt4.desktop
-/usr/share/services/useragentstrings/safari.desktop
-/usr/share/services/useragentstrings/w3moncurrent.desktop
-/usr/share/services/useragentstrings/wgetoncurrent.desktop
-/usr/share/services/videothumbnail.desktop
-/usr/share/services/webcal.protocol
-/usr/share/services/webdav.protocol
-/usr/share/services/webdavs.protocol
-/usr/share/services/xbm.kimgio
-/usr/share/services/xpm.kimgio
-/usr/share/services/xv.kimgio
-/usr/share/services/zip.protocol
-/usr/share/servicetypes
-/usr/share/themes/Default/gtk-2.0
-/usr/share/themes/Galaxy/gtk-2.0
diff --git a/move/data/devices b/move/data/devices
deleted file mode 100644
index d409df63b..000000000
--- a/move/data/devices
+++ /dev/null
@@ -1,4 +0,0 @@
-/dev/console c 5 1
-/dev/tty4 c 4 4
-/dev/tty3 c 4 3
-/dev/tty2 c 4 2
diff --git a/move/data/etcfiles b/move/data/etcfiles
deleted file mode 100644
index 721681766..000000000
--- a/move/data/etcfiles
+++ /dev/null
@@ -1,36 +0,0 @@
-# READ directories/files that will be read (we let only non trivial things here)
-/etc/bonobo-activation
-/etc/esd.conf
-/etc/gimp
-/etc/gnucash
-/etc/host.conf
-/etc/imrc
-/etc/initlog.conf
-/etc/localtime
-/etc/openoffice
-/etc/rpc
-/etc/termcap
-/etc/tmdns.conf
-/var/lib/clamav/daily.cvd
-/var/lib/clamav/main.cvd
-
-# OVERWRITE files that will be overwritten
-/etc/modules
-/etc/modprobe.preload
-/etc/ntp.conf
-/etc/.pwd.lock
-/etc/inittab
-/etc/ppp/options
-/etc/ppp/chap-secrets
-/etc/ppp/pap-secrets
-/etc/ppp/pppoe.conf
-/var/log/clamav/freshclam.log
-
-# DIR mandatory directories because files will be written in
-/etc/profile.d
-/etc/rpm
-/etc/sysconfig
-/etc/sysconfig/console/consolefonts
-/etc/sysconfig/console/consoletrans
-/etc/sysconfig/network-scripts
-/etc/X11/xinit.d
diff --git a/move/data/etcfiles-report b/move/data/etcfiles-report
deleted file mode 100644
index 0e8aa0908..000000000
--- a/move/data/etcfiles-report
+++ /dev/null
@@ -1,151 +0,0 @@
-read:
- /etc/DIR_COLORS
- /etc/X11/fs/config
- /etc/X11/xserver/SecurityPolicy
- /etc/bashrc
- /etc/bonobo-activation/bonobo-activation-config.xml
- /etc/cups/client.conf
- /etc/devfs/conf.d/dynamic.conf
- /etc/devfsd.conf
- /etc/dynamic/scripts/functions.script
- /etc/dynamic/scripts/part.script
- /etc/esd.conf
- /etc/fonts/fonts.conf
- /etc/fonts/local.conf
- /etc/fstab
- /etc/gconf/2/path
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/audio_codecs/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/audio_settings/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/call_forwarding/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/contacts/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/devices/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/gatekeeper/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/general/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/history/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/ldap/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/personal_data/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/ports/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/video_display/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/video_settings/%gconf.xml
- /etc/gconf/gconf.xml.defaults/apps/gnomemeeting/view/%gconf.xml
- /etc/gconf/gconf.xml.defaults/desktop/gnome/interface/%gconf.xml
- /etc/gconf/gconf.xml.defaults/desktop/gnome/sound/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/audio_settings/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/call_forwarding/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/contacts/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/devices/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/gatekeeper/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/general/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/history/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/ldap/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/personal_data/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/ports/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/video_display/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/video_settings/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/apps/gnomemeeting/view/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/desktop/gnome/interface/%gconf.xml
- /etc/gconf/gconf.xml.defaults/schemas/desktop/gnome/sound/%gconf.xml
- /etc/gimp/1.2/gimprc
- /etc/gimp/1.2/gimprc_user
- /etc/gimp/1.2/gtkrc
- /etc/gimp/1.2/gtkrc_user
- /etc/gimp/1.2/unitrc
- /etc/gnome-vfs-2.0/modules/cdda-module.conf
- /etc/gnome-vfs-2.0/modules/default-modules.conf
- /etc/gnome-vfs-2.0/modules/ssl-modules.conf
- /etc/gnucash/config
- /etc/group
- /etc/gtk-2.0/gdk-pixbuf.loaders
- /etc/gtk-2.0/gtk.immodules
- /etc/host.conf
- /etc/hotplug/blacklist
- /etc/hotplug/hotplug.functions
- /etc/hotplug/scsi.agent
- /etc/hotplug/usb.agent
- /etc/hotplug/usb.handmap
- /etc/hotplug/usb.usermap
- /etc/hotplug/usb/usb-storage
- /etc/imrc
- /etc/initlog.conf
- /etc/inittab
- /etc/inputrc
- /etc/ld.so.cache
- /etc/localtime
- /etc/login.defs
- /etc/modules
- /etc/modules.conf
- /etc/modules.devfs
- /etc/nsswitch.conf
- /etc/openoffice/autoresponse.conf
- /etc/openoffice/openoffice.conf
- /etc/pam.d/other
- /etc/pam.d/su
- /etc/pam.d/sudo
- /etc/pam.d/system-auth
- /etc/pam.d/xserver
- /etc/pango/pango.modules
- /etc/passwd
- /etc/passwd-
- /etc/profile.d/10lang.sh
- /etc/profile.d/alias.sh
- /etc/profile.d/configure_keyboard.sh
- /etc/profile.d/glib20.sh
- /etc/profile.d/inputrc.sh
- /etc/profile.d/kde3.sh
- /etc/profile.d/msec.sh
- /etc/profile.d/qtdir3.sh
- /etc/profile.d/screen.sh
- /etc/profile.d/ssh-client.sh
- /etc/profile.d/tmpdir.sh
- /etc/profile.d/xhost.sh
- /etc/rc.d/init.d/functions
- /etc/rc.d/init.d/mandrake_consmap
- /etc/rc.d/init.d/syslog
- /etc/rc.d/init.d/xfs
- /etc/resolv.conf
- /etc/rpc
- /etc/security/console.perms
- /etc/security/fileshare.conf
- /etc/security/limits.conf
- /etc/security/pam_env.conf
- /etc/services
- /etc/shells
- /etc/skel/.bash_logout
- /etc/skel/.bash_profile
- /etc/skel/.bashrc
- /etc/skel/.mailcap
- /etc/skel/.screenrc
- /etc/sudoers
- /etc/sysconfig/i18n
- /etc/sysconfig/init
- /etc/sysconfig/msec
- /etc/sysconfig/syslog
- /etc/sysconfig/usb
- /etc/syslog.conf
- /etc/termcap
- /etc/tmdns.conf
-wrote:
- /etc/group
- /etc/inittab
- /etc/modules
- /etc/modules.conf
- /etc/passwd
- /etc/passwd-
- /etc/sysconfig/i18n
-new:
- /etc/X11/XF86Config
- /etc/X11/XF86Config-4
- /etc/X11/XF86Config-4.old
- /etc/X11/XF86Config.old
- /etc/hosts
- /etc/mcc.conf
- /etc/profile.d/proxy.csh
- /etc/profile.d/proxy.sh
- /etc/rpm/macros
- /etc/shadow
- /etc/sysconfig/autologin
- /etc/sysconfig/console/consolefonts/lat0-16.psf.gz
- /etc/sysconfig/console/consoletrans/iso15.acm.gz
- /etc/sysconfig/console/consoletrans/iso15.sfm.gz
- /etc/sysconfig/network
- /etc/sysconfig/network-scripts/ifcfg-eth0
diff --git a/move/data/isolinux-graphic.bmp b/move/data/isolinux-graphic.bmp
deleted file mode 100644
index 3d004d2d0..000000000
--- a/move/data/isolinux-graphic.bmp
+++ /dev/null
Binary files differ
diff --git a/move/data/isolinux-graphic.bmp.parameters b/move/data/isolinux-graphic.bmp.parameters
deleted file mode 100755
index babeff953..000000000
--- a/move/data/isolinux-graphic.bmp.parameters
+++ /dev/null
@@ -1,10 +0,0 @@
-progress_w=6
-progress_real_w=468
-clear_h=800
-progress_c=191
-progress_h=13
-mode=259
-clear_w=600
-isolinux_mode=1
-progress_x=165
-progress_y=403
diff --git a/move/data/keyfiles b/move/data/keyfiles
deleted file mode 100644
index d414c83ba..000000000
--- a/move/data/keyfiles
+++ /dev/null
@@ -1,24 +0,0 @@
-/etc/fstab
-/etc/group
-/etc/modules
-/etc/modules.conf
-/etc/modprobe.preload
-/etc/modprobe.conf
-/etc/passwd
-/etc/resolv.conf
-/etc/sudoers
-/etc/cups/*
-/etc/devfs/conf.d/*
-/etc/profile.d/*
-/etc/sane.d/*
-/etc/security/fileshare.conf
-/etc/shorewall/*
-/etc/sysconfig/*
-/etc/sysconfig/console/consolefonts/*
-/etc/sysconfig/console/consoletrans/*
-/etc/sysconfig/harddrake2/previous_hw
-/etc/sysconfig/network-scripts/*
-/etc/sysconfig/suspend-scripts/suspend.d/*
-/etc/X11/XF86Config-4
-/etc/X11/X
-/etc/rc.d/rc.local
diff --git a/move/data/make_i18n_list b/move/data/make_i18n_list
deleted file mode 100755
index df53d39fb..000000000
--- a/move/data/make_i18n_list
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-my $prefix = $ARGV[0];
-my $rpm = "rpm --root $prefix";
-
-unlink glob("i18n_*.list");
-
-my %have;
-foreach my $list (glob("*.list")) {
- $have{$_} = $list foreach chomp_(cat_($list));
-}
-
-my @pkg_langs = map { /locales-(.*)/ } `$rpm -qa --qf "%{name}\n" locales-*`;
-
-my %extra_pkgs = (
- hy => 'fonts-ttf-armenian',
- ja => 'fonts-ttf-japanese',
- kn => 'fonts-ttf-kannada',
- ko => 'fonts-ttf-korean',
- ta => 'fonts-ttf-tamil fonts-ttf-tscii fonts-bitmap-tscii',
- th => 'fonts-ttf-thai',
- zh => 'fonts-ttf-gb2312 taipeifonts fonts-ttf-big5',
- el => 'fonts-type1-greek',
-);
-
-foreach my $i18n (@pkg_langs) {
- #- $i18n_re is different from $i18n because of things like locales-no giving nb|nn|no
- my $i18n_re = join('|', uniq($i18n, map { if_(/locales-(\S+)/, $1) } `$rpm -q --provides locales-$i18n`));
-
- my @pkgs = uniq("locales-$i18n", chomp_(`$rpm -q --qf "%{name}\n" --whatrequires locales-$i18n`));
- push @pkgs, split(' ', $extra_pkgs{$i18n} || '');
- my @l = grep { !m!^/usr/share/locale/en_ZA! } uniq(chomp_(`$rpm -ql @pkgs`));
- my ($dirs, $files) = partition { -d "$prefix$_" } @l;
-
- my @i18n_dirs = uniq(grep { m!/($i18n_re) (_[^/]*)? (\.[^/]*)? (\@[^/]*)?$!x } @$dirs);
- my $i18n_dirs_re = join('|', map { quotemeta $_ } @i18n_dirs);
- my @files = grep { !m!^($i18n_dirs_re)/! } @$files;
-
- my $list = "i18n_$i18n.list";
- foreach (@i18n_dirs, @files) {
- $have{$_} and die "$_ would be twice: in $have{$_} and $list\n";
- $have{$_} = $list;
- }
- output($list, map { "$_\n" } @i18n_dirs, @files);
-}
diff --git a/move/data/nvidia.list b/move/data/nvidia.list
deleted file mode 100644
index 01fd67a6c..000000000
--- a/move/data/nvidia.list
+++ /dev/null
@@ -1,5 +0,0 @@
-/usr/lib/libGLcore.so.1
-/usr/lib/libGLcore.so.1.0.6106
-/usr/lib/libnvidia-tls.so.1
-/usr/lib/libnvidia-tls.so.1.0.6106
-/usr/X11R6/lib/modules/extensions/libglx.so.1.0.6106
diff --git a/move/data/symlinks b/move/data/symlinks
deleted file mode 100644
index b6601d4e1..000000000
--- a/move/data/symlinks
+++ /dev/null
@@ -1,4 +0,0 @@
-/sbin
-/lib
-/bin
-/opt
diff --git a/move/data/totem.dirs b/move/data/totem.dirs
deleted file mode 100644
index bc73094f8..000000000
--- a/move/data/totem.dirs
+++ /dev/null
@@ -1,2 +0,0 @@
-/usr/share/totem
-/usr/lib/xine
diff --git a/move/data/totem.list b/move/data/totem.list
deleted file mode 100644
index ab0adbbee..000000000
--- a/move/data/totem.list
+++ /dev/null
@@ -1,68 +0,0 @@
-/bin/sleep
-/etc/gnome-vfs-mime-magic
-/usr/X11R6/lib/libXi.so.6.0
-/usr/X11R6/lib/libXrandr.so.2.0
-/usr/X11R6/lib/libXtst.so.6.1
-/usr/bin/mdk_behind_totem
-/usr/bin/totem
-/usr/lib/GConf/2/libgconfbackend-xml.so
-/usr/lib/gconfd-2
-/usr/lib/gnome-vfs-2.0/modules/libfile.so
-/usr/lib/gtk-2.0/2.2.0/engines/libgalaxy.so
-/usr/lib/gtk-2.0/2.2.0/loaders/libpixbufloader-png.so
-/usr/lib/kde3/libkshorturifilter.so
-/usr/lib/kde3/libkuriikwsfilter.so
-/usr/lib/kde3/libkurisearchfilter.so
-/usr/lib/kde3/liblocaldomainurifilter.so
-/usr/lib/libSDL-1.2.so.0.7.0
-/usr/lib/libORBit-2.so.0.0.0
-/usr/lib/libORBitCosNaming-2.so.0.0.0
-/usr/lib/libartsc.so.0.0.0
-/usr/lib/libartscbackend.so.0.0.0
-/usr/lib/libatk-1.0.so.0.400.1
-/usr/lib/libbonobo-2.so.0.0.0
-/usr/lib/libbonobo-activation.so.4.0.0
-/usr/lib/libbonoboui-2.so.0.0.0
-/usr/lib/libcdio.so.0.0.0
-/usr/lib/libcrypto.so.0.9.7
-/usr/lib/libcurl.so.2.0.2
-/usr/lib/libgconf-2.so.4.1.0
-/usr/lib/libgdk-x11-2.0.so.0.200.4
-/usr/lib/libgdk_pixbuf-2.0.so.0.200.4
-/usr/lib/libglade-2.0.so.0.0.1
-/usr/lib/libglade/2.0/libbonobo.so
-/usr/lib/libglade/2.0/libgnome.so
-/usr/lib/libgnome-2.so.0.400.0
-/usr/lib/libgnome-desktop-2.so.2.1.9
-/usr/lib/libgnomecanvas-2.so.0.400.0
-/usr/lib/libgnomeui-2.so.0.400.0
-/usr/lib/libgnomevfs-2.so.0.400.2
-/usr/lib/libgobject-2.0.so.0.200.3
-/usr/lib/libgtk-x11-2.0.so.0.200.4
-/usr/lib/libiso9660.so.0.0.0
-/usr/lib/liblirc_client.so.0.0.0
-/usr/lib/libpango-1.0.so.0.200.5
-/usr/lib/libpangoft2-1.0.so.0.200.5
-/usr/lib/libpangox-1.0.so.0.200.5
-/usr/lib/libpangoxft-1.0.so.0.200.5
-/usr/lib/libpng12.so.0.1.2.5
-/usr/lib/libspeex.so.1.1.0
-/usr/lib/libssl.so.0.9.7
-/usr/lib/libstartup-notification-1.so.0.0.0
-/usr/lib/libvcd.so.0.0.0
-/usr/lib/libvcdinfo.so.0.0.0
-/usr/lib/libxine.so.1.8.1
-/usr/lib/libxml2.so.2.6.6
-/usr/lib/pango/1.2.0/modules/pango-basic-xft.so
-/usr/lib/xine
-/usr/share/alsa
-/usr/share/totem
-/usr/lib/gnome-vfs-2.0/modules/libcdda.so
-/usr/lib/libcdda_interface.so.0
-/usr/lib/libcdda_interface.so.0.9.8
-/usr/lib/libcdda_paranoia.so.0
-/usr/lib/libcdda_paranoia.so.0.9.8
-/sbin/ifplugd
-/sbin/dhcpcd
-/sbin/dhclient
-/sbin/zcip
diff --git a/move/doc/README b/move/doc/README
deleted file mode 100644
index 28865cdba..000000000
--- a/move/doc/README
+++ /dev/null
@@ -1,95 +0,0 @@
-MandrakeMove is Copyright (c) 2003 Mandrakesoft
-
-MandrakeMove is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
- MandrakeMove README
-
-
- General overview.
-
-Mandrake Move is a "live" Mandrake Linux Discovery based system,
-an OS which boots off a removable device (a CDROM in our case)
-without needing any installation on hard drive (it doesn't need
-any harddrive in computer actually).
-
-Mandrake Move brings two main innovations:
-
-- ability to eject the CDROM which Move was booted from, still
- running a multimedia player, so that user can play
- ogg/mp3/vcd/avi/dvd discs without needing a second CDROM drive
-
-- transparently saving user and system data to a USB key
-
-
- Technical aspects.
-
- CDROM ejecting.
-
-Works by killing most unneeded running application (open-office,
-frozen-bubble, gimp, etc), then transfering X/kde/totem files
-(already pertaining to a loopback) into memory, then CDROM drive
-is not busy anymore.
-
- Paths of boot.
-
-MandrakeMove should work in three different paths of boot:
-
-- mode 1: no USB key
-
- automatic X configuration, DrakX starts up, asks for language,
- license, asks for a key (we answer we have no key), possibly
- for mouse and keyboard, username/password, auto-detects sound,
- printer and network devices, starts up KDE
-
- this is a normal live mode, nothing particular
-
-- mode 2: USB key but doesn't yet contain MandrakeMove files
-
- automatic X configuration, DrakX starts up, asks for language,
- license, set up configuration files on the key, possibly asks
- for mouse and keyboard, username/password, starts up KDE
-
- once KDE is booted, we are in full Move move, in which user
- data and system configuration data are saved on the usb key
-
- the USB key is mounted on /home, and some symlinks are created
- from a selection of /etc system files to a per-host directory
- on the USB key (based in /home/.sysconf)
-
- a daemon is monitoring modifications made to /etc, and
- transparently copy modified/new files to the USB key; hence
- Mandrake Move is much extensible, any modification on /etc will
- be saved
-
-- mode 3: USB key, contains MandrakeMove files
-
- - 3.1: we are running on the same machine
-
- DrakX GUI not even shows up as we use existing configuration
- files, we set up stuff of the usb key (/home etc) and we start
- up KDE
-
- - 3.2: we are running on another machine
-
- We use language, username/password, and homedir from USB key,
- but other system configuration need to be re-asked:
-
- automatic X configuration, DrakX starts up, possibly asks for
- mouse and keyboard, starts up KDE
-
-
-
- gc, pixel
diff --git a/move/doc/errata.1 b/move/doc/errata.1
deleted file mode 100644
index 8f8924bbf..000000000
--- a/move/doc/errata.1
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-<p align="justify">Some users have encountered problems
-installing or using MandrakeMove due to specific configuration
-situations that we did not have an opportunity to fully test.
-Please use the patches or recommendations included below for each
-scenario if it applies to you.</p>
-
-<p align="justify"><b>Note on using Patches:</b> To use any of
-the <i>patch.pl</i> patches that are noted below, you must copy the
-appropriate patch onto a floppy disk, with the name patch.pl.
-Then you can boot off of your CD-ROM with the "linux patch"
-command at the boot prompt (obtained by pressing F1 at the splash
-screen), and making sure that the floppy containing the patch is
-in the floppy disk drive.</p>
-
-
-<p>
-<a name="webcam"></a>
-
-<i>Error scenario:</i> <b>no program seem to see my webcam, whereas on
-regular Mandrake 9.2 it works perfectly (may apply to other USB
-devices as well).</b>
-
-<br><i>Why:</i> "hotplug" automatic loading of drivers is disabled due to a
-bug on our side.
-
-<br><i>Solution:</i> add the following to the last line of
-/etc/rc.d/rc.local :
-<pre>
-sysctl -w kernel.hotplug=/sbin/hotplug
-</pre>
-and be sure to plug your webcam after boot and KDE startup is
-finished, not before booting.
-
-<br><i>Solution for download version:</i> run the following
-command in a console at the end of KDE startup, and then plug in
-your webcam:
-<pre>
-sysctl -w kernel.hotplug=/sbin/hotplug
-</pre>
-
-</p>
-
diff --git a/move/etc-monitorer.pl b/move/etc-monitorer.pl
deleted file mode 100755
index 231b9f772..000000000
--- a/move/etc-monitorer.pl
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-sub outpend { my $f = shift; local *F; open F, ">>$f" or die "outpend in file $f failed: $!\n"; print F foreach @_ }
-sub logit { outpend "/var/log/etc-monitorer.log", sprintf("[%s] @_\n", chomp_(`date`)) }
-
-foreach my $dir (@ARGV) {
- my $destdir = '/home/.sysconf/' . cat_('/var/lib/machine_ident');
- my @etcfiles = glob_("$dir/*");
- foreach (@etcfiles) {
- if ($_ eq '/etc/sudoers' #- /etc/sudoers can't be a link
- || $_ eq '/etc/mtab' #- same for /etc/mtab
- || !-f
- || -l && readlink =~ m|^/|) { #- we want to trap relative symlinks only
- next;
- }
- my $dest = "$destdir$_";
- mkdir_p(dirname($dest)); #- case of newly created directories
- logit("restoring broken symlink $_ -> $dest");
- if (-l) {
- system("cp $_ $dest 2>/dev/null");
- } else {
- system("mv $_ $dest 2>/dev/null");
- }
- symlinkf($dest, $_);
- }
- foreach (difference2([ grep { -f && s/^\Q$destdir\E// } glob_("$destdir$dir/*") ], [ @etcfiles ])) {
- logit("removing $destdir$_ because of deleted $_");
- unlink "$destdir$_";
- }
-}
diff --git a/move/img/FE92-1024-MOVE1.jpg b/move/img/FE92-1024-MOVE1.jpg
deleted file mode 100644
index 4abb003a3..000000000
--- a/move/img/FE92-1024-MOVE1.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1024-MOVE2.jpg b/move/img/FE92-1024-MOVE2.jpg
deleted file mode 100644
index 46af01bec..000000000
--- a/move/img/FE92-1024-MOVE2.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1024-MOVE3.jpg b/move/img/FE92-1024-MOVE3.jpg
deleted file mode 100644
index 32c7debdc..000000000
--- a/move/img/FE92-1024-MOVE3.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1024-MOVE4.jpg b/move/img/FE92-1024-MOVE4.jpg
deleted file mode 100644
index d3340b9c9..000000000
--- a/move/img/FE92-1024-MOVE4.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1024-MOVE5.jpg b/move/img/FE92-1024-MOVE5.jpg
deleted file mode 100644
index c3e3fd7d0..000000000
--- a/move/img/FE92-1024-MOVE5.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1280-MOVE1.jpg b/move/img/FE92-1280-MOVE1.jpg
deleted file mode 100644
index cc11b0b0c..000000000
--- a/move/img/FE92-1280-MOVE1.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1280-MOVE2.jpg b/move/img/FE92-1280-MOVE2.jpg
deleted file mode 100644
index bee10753f..000000000
--- a/move/img/FE92-1280-MOVE2.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1280-MOVE3.jpg b/move/img/FE92-1280-MOVE3.jpg
deleted file mode 100644
index 17135e024..000000000
--- a/move/img/FE92-1280-MOVE3.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1280-MOVE4.jpg b/move/img/FE92-1280-MOVE4.jpg
deleted file mode 100644
index 545643e68..000000000
--- a/move/img/FE92-1280-MOVE4.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/FE92-1280-MOVE5.jpg b/move/img/FE92-1280-MOVE5.jpg
deleted file mode 100644
index cafbbcaf6..000000000
--- a/move/img/FE92-1280-MOVE5.jpg
+++ /dev/null
Binary files differ
diff --git a/move/img/Mandrake.png b/move/img/Mandrake.png
deleted file mode 100644
index 0f7577e65..000000000
--- a/move/img/Mandrake.png
+++ /dev/null
Binary files differ
diff --git a/move/isolinux/.cvsignore b/move/isolinux/.cvsignore
deleted file mode 100644
index a7edff342..000000000
--- a/move/isolinux/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-boot.msg
-all.rdz
-isolinux.bin
-vmlinuz
diff --git a/move/isolinux/help.msg b/move/isolinux/help.msg
deleted file mode 100644
index 3f89e4f11..000000000
--- a/move/isolinux/help.msg
+++ /dev/null
Binary files differ
diff --git a/move/isolinux/isolinux.cfg b/move/isolinux/isolinux.cfg
deleted file mode 100644
index 1b734525d..000000000
--- a/move/isolinux/isolinux.cfg
+++ /dev/null
@@ -1,14 +0,0 @@
-default linux
-prompt 1
-timeout 150
-display boot.msg
-F1 help.msg
-F2 boot.msg
-
-label linux
- kernel vmlinuz
- append initrd=all.rdz acpi=ht quiet devfs=nomount automatic=method:cdrom
-
-label acpi
- kernel vmlinuz
- append initrd=all.rdz quiet devfs=nomount automatic=method:cdrom
diff --git a/move/isolinux/make.pl b/move/isolinux/make.pl
deleted file mode 100644
index 4a946fd98..000000000
--- a/move/isolinux/make.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-output 'help.msg', pack("C*", 0x0E, 0x80, 0x03, 0x00),
-"
- 0aWelcome to 09Move0a help07
-
-In most cases, the best way to get started is to simply press the 0e<Enter>07 key.
-If you experience problems, you can try to add on the command line :
-
- o 0fnoauto07 to disable automatic detection (generally used with 0fexpert07).
- o 0fupdatemodules07 to use the special update floppy containing modules updates.
- o 0fpatch07 to use a patch from the floppy (file named 09patch.pl07).
- o 0fcleankey07 to remove previously saved system config files from the USB key.
- o 0fformatkey07 to format the USB key (ie: erase all data)
- o 0fwaitkey07 to wait 15 more seconds at boot time while detecting the USB key,
- that might be useful for some keys for which detection doesn't work nicely
- o 0fvirtual_key=09/dev/hda10f,09/key07 to use file 09/key07 on device 09/dev/hda107 as a
- virtual key instead of a physical one (must be an existing file containing
- a valid filesystem - e.g. a loopback).
-
-You can also pass some 0f<specific kernel options>07 to the Linux kernel.
-For example, try 0flinux mem=128M07 if your system has 128Mb of RAM but we
-don't detect the amount correctly.
-0cNOTE07: You cannot pass options to modules (SCSI, ethernet card) or devices
-such as CD-ROM drives in this way. If you need to do so, use expert mode.
-
-0c[F1-Help] [F2-Main]07\n";
diff --git a/move/make_live b/move/make_live
deleted file mode 100755
index 0ddca9ace..000000000
--- a/move/make_live
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/perl
-
-use lib "../perl-install";
-use common;
-use pkgs;
-use lang;
-
-@ARGV <= 1 or die "usage: make_live [live_location=/tmp/live_tree]\n";
-
-my $kernel_version = do {
- my @l = glob_('/export/Mandrake/RPMS/kernel-2.6*');
- @l >= 1 or die "can't find kernel";
- @l <= 1 or die "too many kernels";
- first(`rpm -qp --qf '%{name}' $l[0]` =~ /kernel-(.*)/);
-};
-
-sub installPackages() {
- output_p("$::prefix/etc/rpm/macros", "%_install_langs all\n");
- rename '/etc/rpm/macros', '/etc/rpm/macros.';
- system('cp', "$::prefix/etc/rpm/macros", '/etc/rpm/macros');
-
- mkdir_p("$::prefix/var/lib/rpm");
- mkdir_p("$::prefix/root/drakx");
-
-
- undef *install_any::setDefaultPackages;
- *install_any::setDefaultPackages = sub {};
-
- undef *install_any::getFile;
- *install_any::getFile = sub {
- my ($f, $o_method) = @_;
- log::l("getFile $f:$o_method");
- open(my $F, '/export/' . install_any::relGetFile($f)) or return;
- $F;
- };
-
- undef *c::kernel_version;
- *c::kernel_version = sub { $kernel_version };
-
- install_any::setPackages(my $o = $::o = {
- prefix => $::prefix,
- meta_class => 'desktop',
- default_packages => [
- qw(XFree86-server XFree86-xfs XFree86-FBDev),
- qw(openssh-server), #- fred wants it
- qw(alsa-utils newt), #- newt
- qw(davfs nfs-utils samba-server sane-backends xsane xsane-gimp ntp),
- qw(acpi acpid), #- so that removing acpi=ht will work
- qw(mountloop), #- crypted folders
- qw(dnotify), #- notification of /etc changes
- qw(mandrake-doc-drakxtools-en mandrake-doc-drakxtools-fr mandrake-doc-drakxtools-es mandrake-doc-drakxtools-it),
- qw(synaptics),
- #- network conf:
- qw(wireless-tools pcmcia-cs),
- #- zeroconf:
- qw(zcip dhcpcd tmdns),
- #- cnx stuff:
- qw(dhcp-client ppp kdenetwork-kppp ppp-pppoatm ppp-pppoe pptp-linux pptp-adsl rp-pppoe),
- #- ISDN stuff:
- qw(isdn4net ibod isdn4k-utils),
- #- network file sharing:
- qw(nfs-utils-clients samba-client),
- #- network drivers and firmwares:
- qw(eagle-usb speedtouch speedtouch_mgmt unicorn),
- qw(cups cups-drivers foomatic-db gimpprint hpoj libnet-snmp mtools mtoolsfm nmap printer-filters printer-testpages printer-utils scli xojpanel xpp), #- printer stuff
- qw(ATI_GLX ATI_GLX-utils NVIDIA_GLX),
- qw(hcfpcimodem hsflinmodem ltmodem ipw2100),
- qw(nxclient), #- proprietary soft from powerpack
- qw(xinput), #- for some mice
- qw(perl-Term-Readline-Gnu binutils bash-completion), #- allow debugging move
- qw(openssh-askpass-gnome), #- openssh-askpass for mountloop doesn't allow to click on ok/cancel buttons
- qw(clanbomber freeciv-client freeciv-server crack-attack kdegames), #- more games
- qw(numlock shorewall clamav unison mozilla),
- qw(xawtv zapping), #- tv apps
- qw(scribus scribus-i18n-de scribus-i18n-fr), #- John Jablonski says it's so much useful
- ],
- });
-
- my %compssUsersChoice = map { $_ => 1 } map { @{$_->{flags}} } values %{$o->{compssUsers}};
- $compssUsersChoice{$_} = 1 foreach qw(SYSTEM DVD USB SOUND BURNER UTF8 DOCS TV 3D INSTALL PHOTO);
- $compssUsersChoice{qq(LOCALES"$_")} = 1 foreach lang::langsLANGUAGE({ all => 1 });
-
- #- we don't want those
- foreach (qw(mdkonline quanta)) {
- my $pkg = pkgs::packageByName($o->{packages}, $_) or die "$_ not there anymore";
- $pkg->set_rate(0);
- }
-
- pkgs::setSelectedFromCompssList($o->{packages}, \%compssUsersChoice, 4, 0);
-
- my @toInstall = pkgs::packagesToInstall($o->{packages});
- local $ENV{DURING_INSTALL} = 1;
- $ENV{LD_LIBRARY_PATH} = "/lib:/usr/lib:/usr/X11R6/lib:/usr/lib/qt3/lib";
- pkgs::install($::prefix, 0, \@toInstall, $o->{packages});
-
- eval { fs::umount("$::prefix/proc") };
-
- unlink "/etc/rpm/macros";
- rename "/etc/rpm/macros.", "/etc/rpm/macros";
-}
-
-sub config_X_proprietary_drivers() {
- unlink "$::prefix/usr/lib/libGL.so";
-
- my %name_to_Driver = (NVIDIA_GLX => 'nvidia', ATI_GLX => 'fglrx');
-
- my $lib = 'libGL.so.1';
- symlinkf("/etc/X11/$lib", "$::prefix/usr/lib/$lib");
- foreach (keys %name_to_Driver) {
- my ($full_name) = run_program::rooted_get_stdout($::prefix, 'rpm', '-ql', $_) =~ m!/usr/lib/(\Q$lib\E\..*)! or die '';
- symlinkf($full_name, "$::prefix/usr/lib/$lib.$name_to_Driver{$_}");
- }
-
- #- nvidia's libglx.so is hardwired to the tls version, change this
- system("cd $::prefix/usr/X11R6/lib/modules/extensions ; ln -sf libglx.so.* libglx.so");
-
- #- remove the dirty hack done by NVIDIA_kernel-xxx proprietary package
- #- we do it by hand when needed
- substInFile { $_ = '' if $_ eq 'nvidia' } "$::prefix/etc/modules";
-}
-
-$::prefix = `make get_dest_livetree`;
-print "Making live in $::prefix directory.\n";
-
-eval { fs::umount("$::prefix/proc") };
-eval { rm_rf($::prefix) };
-output_p("$::prefix/etc/fstab", "none /proc proc defaults 0 0\n");
-
-installPackages();
-
-run_program::rooted($::prefix, 'ldconfig');
-any::fix_broken_alternatives();
-run_program::rooted($::prefix, 'fc-cache'); #- generate cache in all directories mentioned in config file
-
-run_program::rooted_or_die($::prefix, '/usr/lib/mozilla-1.6/mozilla-rebuild-databases.pl');
-
- #- system
-
-# de-complexify, use the default on any arch
-eval { rm_rf("$::prefix$_") } foreach '/lib/i686', '/lib/tls', '/usr/lib/tls', '/usr/X11R6/lib/tls', '/usr/X11R6/lib/modules/extensions/tls', '/usr/X11R6/lib/modules/dri/tls';
-
-eval { config_X_proprietary_drivers() };
-
-substInFile {
- #- /lib is ro, for the moment we don't save, we'll see later if we may want to save (using /var/dev-state for example)
- s|.*lib/dev-state.*||;
-} "$::prefix/etc/devfsd.conf";
-
-substInFile {
- #- don't use shadow passwords since pwconv overwrites /etc/shadow hence contents will be lost for usb key
- s|\s*shadow||;
-} "$::prefix/etc/pam.d/system-auth";
-
-substInFile {
- #- remove this line which D-state mounting /home again
- #- we don't know what this line is for
- $_ = "# $_" if /Mounting other filesystems/;
-} "$::prefix/etc/init.d/netfs";
-
-#- remove services we start ourselves from chkconfig system
-substInFile {
- s|chkconfig:|chkconfig-disabled:|;
-} "$::prefix/etc/rc.d/init.d/$_" foreach qw(xfs dm devfsd syslog);
-
-#- we're not using sysv init, we need to replace these
-unlink "$::prefix/sbin/$_" foreach qw(halt reboot);
-
-#- provide a way for speedtouch users of free version to escape
-if (!-e "$::prefix/usr/share/speedtouch/mgmt.o") {
- symlink '/etc/mgmt.o', "$::prefix/usr/share/speedtouch/mgmt.o";
-}
-
-#- we don't want everyone to have the same ssh key :)
-system("rm -f $::prefix/etc/ssh/*key*");
-
-
- #- XFree
-
-#- don't want the relative path, prefering the absolute path
-symlinkf('/var/lib/xkb', "$::prefix/etc/X11/xkb/compiled");
-
-#- Xsession wants to start first-time
-unlink "$::prefix/usr/X11R6/bin/drakfw";
-
-
- #- KDE
-
-unlink "$::prefix/usr/share/autostart/$_.desktop" foreach 'klipper', 'korgac', 'kalarmd.autostart';
-
-update_gnomekderc("$::prefix/usr/share/config/kdesktoprc", ScreenSaver => (Lock => 'true'));
-
-#- remove "Login Manager" module from kcontrol, rpmdrake stuff
-unlink "$::prefix/usr/lib/menu/$_" foreach qw(kdebase-kdm rpmdrake);
-
-touch("$::prefix/etc/menu/enable_simplified");
-
-substInFile {
- s/mandrake_doc-(en|fr)/mandrake_doc-move-$1/g;
- $_ = '' if m!/usr/sbin/drakbackup!;
-} "$::prefix/usr/lib/menu/simplified/mandrake_desk";
-
-substInFile {
- s!/es/Starter.html/!/en/Starter.html/!;
-} "$::prefix/usr/share/mdk/mandrakegalaxy/mdkgalaxy-es.html";
-
-substInFile {
- if (!/mimetypes=/) {
- chomp;
- $_ .= ' mimetypes="image/gif;image/jpeg;image/png;image/tiff;image/x-xbm;image/x-xpm;image/bmp;image/fits;image/pcx;image/pix;image/pnm;image/x-bmp"';
- $_ .= ' kde_opt="InitialPreference=15"' . "\n";
- }
-} "$::prefix/usr/lib/menu/gqview";
-
-{
- local $ENV{LC_ALL} = 'en_US'; #- update-menus doesn't work when there is no locale (aka locale "C")
- local $ENV{HOME} = '/'; #- savekdemimetypes.pl needs this otherwise it's tmp file fails
- run_program::rooted($::prefix, 'update-menus', '-n');
-}
-
-run_program::rooted($::prefix, 'nspluginscan'); #- must be run before kbuildsycoca for the ksycoca to be flash plugin aware
-
-$ENV{HELP_BROWSER} = "kfmclient openProfile webbrowsing";
-$ENV{BROWSER} = "kfmclient openProfile webbrowsing";
-$ENV{DESKTOP} = "kde";
-foreach my $lang (lang::list_langs()) {
- local $ENV{LC_ALL} = lang::getLANGUAGE($lang);
- unlink "$::prefix/usr/share/services/ksycoca";
- run_program::rooted($::prefix, 'kbuildsycoca', '--global');
- rename("$::prefix/usr/share/services/ksycoca", "$::prefix/usr/share/services/ksycoca-$lang");
-}
-symlinkf('/etc/X11/ksycoca', "$::prefix/usr/share/services/ksycoca");
-
-cp_af("$::prefix/usr/share/applnk-mdk/System/Configuration/Hardware/krandrtray.desktop", "$::prefix/usr/share/autostart");
-
- #- Mandrake
-
-substInFile {
- s|Mandrake Linux release (\S+) \(.*\)|Mandrake Move release $1 (Moyoto)|;
-} "$::prefix/etc/mandrake-release";
-
-#- remove documentation link in mdkgalaxy
-foreach (glob("$::prefix/usr/share/mdk/mandrakegalaxy/mdkgalaxy-*.html")) {
- my $nb;
- substInFile {
- if (m!/Starter.html! ... m!^\s*</td>$!) {
- $_ = '';
- $nb++;
- }
- } $_;
- $nb % 4 == 0 or die "bad $_\n";
-}
-
-rm_rf("$::prefix/usr/share/locale/en_ZA");
-
-#- remove uncessary wizards, especially from appearing in MCC
-unlink "$::prefix/usr/sbin/$_" foreach qw(drakautoinst drakboot drakfloppy drakgw drakbackup drakedm drakfont drakperm draksec rpmdrake MandrakeUpdate rpmdrake-remove edit-urpm-sources.pl);
-unlink "$::prefix/usr/bin/$_" foreach qw(userdrake);
-
-#- selecting language must be done from drakx anyway
-unlink "$::prefix/usr/bin/localedrake";
-
-#- fix openoffice autopilote feature
-foreach (glob("$::prefix/usr/lib/openoffice/share/template/*")) {
- symlink '../../english/wizard/bitmap', "$_/wizard/bitmap";
-}
-
-# fix nxclient
-system("chmod a+x $::prefix/etc/profile.d/nx*");
diff --git a/move/make_live_tree_boot b/move/make_live_tree_boot
deleted file mode 100755
index e7cd9d617..000000000
--- a/move/make_live_tree_boot
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/perl
-
-use lib qw(../perl-install);
-use common;
-use lang;
-use Getopt::Long;
-
-GetOptions(u => \ (my $un_build)) or die '';
-
-my $prefix = $ARGV[0] || `make get_dest_livetree`;
-
-
-sub create_light_tree {
- my ($livetree_prefix, $live_name, $list) = @_;
- my $light_prefix = $prefix . '_' . $live_name;
-
- -e $light_prefix and die "you can't make_live_tree_boot since one already exists
-Maybe you should remove it first with 'make_live_tree_boot -u'\n";
-
- foreach my $f (@$list) {
- my $dest = "$light_prefix$f";
- my $orig = "$livetree_prefix$f";
-
- mkdir_p(dirname($dest));
-
- if (-l $orig) {
- symlink readlink($orig), $dest;
- } else {
- my $link = $orig;
- $link =~ s|^$livetree_prefix|/image_$live_name|;
-
- rename $orig, $dest or die "moving $orig to $dest failed: $!\n";
- symlink $link, $orig or die "symlinking from $dest to $orig failed: $!\n";
- }
- }
-}
-
-sub create_totem_links {
- my ($live_name, $list) = @_;
- my $light_prefix = $prefix . '_' . $live_name;
-
- #- creating all the dirs, even when things are in the "always" tree
- foreach my $f (@$list) {
- my $dest = "$light_prefix$f";
- my $orig = "$prefix$f";
- mkdir_p(dirname($dest)) if ! (-e $dest || -l $dest);
-
- if (-l $orig) {
- symlink readlink($orig), $dest;
- }
- }
-
- foreach my $dir (chomp_(`cd $light_prefix ; find usr -type d`)) {
- foreach my $f (all("$prefix/$dir")) {
- my $link;
- my $fl = $f;
- while (my $l = readlink("$prefix/$dir/$fl")) {
- if ($l =~ /^\w/) {
- $fl = $l;
- next;
- } elsif ($l =~ m!^/!) {
- $link = $l;
- }
- last;
- }
- $link ||= "/image/$dir/$fl";
- symlink $link, "$light_prefix/$dir/$f";
- }
- }
-}
-
-sub remove_light_tree {
- my ($live_name, $list) = @_;
- my $light_prefix = $prefix . '_' . $live_name;
-
- -d $light_prefix or return;
-
- foreach my $f (@$list) {
- my $dest = "$prefix$f";
- my $orig = "$light_prefix$f";
-
- if (-l $orig) {
- unlink $orig;
- } elsif (-e $orig) {
- if (-e $dest && -s $dest != -s $orig) {
- warn "ERROR: $dest already exist, skipping\n";
- } elsif (!-d $dest || -l $dest) {
- unlink $dest or die "removing $dest failed: $!\n";
- rename $orig, $dest or die "moving $orig to $dest failed: $!\n";
- }
- }
- }
- rmdir($_) foreach reverse(chomp_(`find $light_prefix -type d`));
-
- if (-e $light_prefix) {
- unlink($_) foreach chomp_(`find $light_prefix -type l`);
-
- foreach my $orig (chomp_(`find $light_prefix -type f`)) {
- my $dest = $orig;
- $dest =~ s|^$light_prefix|$prefix|;
- if (my $orig2 = readlink($dest)) {
- $orig2 =~ s!/image_$live_name/!$light_prefix/! or next;
- $orig2 eq $orig or next;
- } else {
- next if -e $dest && -s $dest != -s $orig;
- }
- unlink $dest or die "removing $dest failed: $!\n";
- rename $orig, $dest or die "moving $orig to $dest failed: $!\n";
- }
- system("rm -rf $light_prefix/usr/bin/stage2/*.pm");
- system("rm -rf $light_prefix/usr/lib/libDrakX/*.pm");
- system("rm -rf $light_prefix/usr/share/langs/*.png");
-
- rmdir($_) foreach reverse(chomp_(`find $light_prefix -type d`));
- }
-
- if (-e $light_prefix) {
- print "still there:\n";
- system('find', $light_prefix);
- }
-}
-my @i18n = map { if_(/i18n_(.*)\.list$/, $1) } all('data');
-my @clps = ('always', 'boot', 'totem', 'nvidia', map { "i18n_$_" } @i18n);
-
-my %lists = map {
- $_ => [ chomp_(cat_("data/$_.list")) ];
-} @clps, 'always_i18n';
-
-my %i18n_to_locales = do {
- my %useful = map { lang::l2locale($_) => 1 } lang::list_langs();
- map_each {
- if (my ($i18n) = $::a =~ /i18n_(.*)/) {
- $i18n => [ map { if_(m!^/usr/share/locale/([^/]*)! && $useful{$1}, $1) } @$::b ];
- } else {
- ();
- }
- } %lists;
-};
-
-
-$lists{always_simpl} = [ uniq(@{$lists{always}}, intersection($lists{boot}, $lists{totem})) ];
-$lists{boot_simpl} = [ difference2($lists{boot}, $lists{always_simpl}) ];
-$lists{totem_simpl} = [ difference2($lists{totem}, $lists{always_simpl}) ];
-
-foreach (@clps, map { "always_i18n_$_" } @i18n) {
- remove_light_tree($_, $lists{$_ . '_simpl'} || $lists{$_} || []);
-}
-
-if (!$un_build) {
- foreach my $i18n (@i18n) {
- $lists{"always_i18n_$i18n"} = [ map {
- my $pattern = $_;
- my @l = map {
- (my $f = $pattern) =~ s/__LANG__/$_/;
- if (readlink("$prefix$f") =~ m!^[^/]!) {
- system('cp', "$prefix$f", "$prefix$f-");
- rename "$prefix$f-", "$prefix$f";
- $f;
- } elsif (-e "$prefix$f") {
- $f;
- } else {
- ();
- }
- } $i18n, @{$i18n_to_locales{$i18n}};
- } @{$lists{always_i18n}} ];
- }
-
- foreach my $i18n (@i18n) {
- create_light_tree($prefix, "always_i18n_$i18n", $lists{"always_i18n_$i18n"});
- }
- foreach (@clps) {
- my $list = $lists{$_ . '_simpl'} || $lists{$_};
- next if $_ eq 'nvidia' && ! -e "$prefix$list->[0]";
- create_light_tree($prefix, $_, $list);
- }
- create_totem_links('totem', $lists{totem});
-}
diff --git a/move/move.pm b/move/move.pm
deleted file mode 100644
index 1ca46710f..000000000
--- a/move/move.pm
+++ /dev/null
@@ -1,809 +0,0 @@
-package move; # $Id$ $
-
-#- Copyright (c) 2003-2004 Mandriva
-#-
-#- This program is free software; you can redistribute it and/or modify
-#- it under the terms of the GNU General Public License as published by
-#- the Free Software Foundation; either version 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-use diagnostics;
-use strict;
-
-use modules;
-use common;
-use fs;
-use fsedit;
-use run_program;
-use partition_table qw(:types);
-use swap;
-use log;
-use lang;
-use Digest::MD5 qw(md5_hex);
-
-my $key_disabled;
-
-my ($using_existing_user_config, $using_existing_host_config);
-my $key_sysconf = '/home/.sysconf';
-my $key_part;
-my $virtual_key_part;
-my $key_mountopts = 'umask=077,uid=501,gid=501,shortname=mixed,nobadchars';
-
-sub symlinkf_short {
- my ($dest, $file) = @_;
- if (my $l = readlink $dest) {
- $dest = $l if $l =~ m!^/!;
- }
- -d $file and log::l("$file already exists and is a directory! writing in directory may be needed, not overwriting"), return;
- symlinkf($dest, $file);
-}
-
-sub handle_etcfiles {
- my (@allowed_modes) = @_;
- #- non-trivial files listed from tools/scan-etc.pl
- my ($mode, $allowed);
- foreach (chomp_(cat_('/image/move/etcfiles'))) {
- if (m|^# (\S+)|) {
- $mode = $1;
- $allowed = member($mode, @allowed_modes);
- } elsif (m|^/| && $allowed) {
- if ($mode eq 'READ') {
- mkdir_p(dirname($_));
- symlinkf_short("/image$_", $_) if !-e $_;
- } elsif ($mode eq 'OVERWRITE') {
- mkdir_p(dirname($_));
- cp_f("/image$_", $_); #- need copy contents
- } elsif ($mode eq 'DIR') {
- mkdir_p $_;
- }
- }
- }
-
-}
-
-sub handle_virtual_key() {
- return if $key_disabled;
- if (my ($device, $file, $options) = cat_('/proc/cmdline') =~ /\bvirtual_key=([^,\s]+),([^,\s]+)(,\S+)?/) {
- log::l("using device=$device file=$file as a virtual key with options $options");
- my $dir = '/virtual_key_mount';
- mkdir $dir;
- run_program::run('mount', $device, $dir);
- if ($options =~ /format/) {
- if (! -e "$dir$file") {
- require commands;
- commands::dd("if=/dev/zero", "of=$dir$file", "bs=1M", "count=40");
- }
- run_program::run('mkdosfs', "$dir$file");
- }
- require devices;
- my $loop = devices::find_free_loop();
- run_program::run('losetup', $loop, "$dir$file");
- run_program::run('mount', $loop, '/home', '-o', $key_mountopts);
- $virtual_key_part = { device => $loop, mntpoint => '/home', type => 0xc, isMounted => 1 };
- }
-}
-
-sub setup_userconf {
- my ($o) = @_;
- if (is_empty_array_ref($o->{users}) && `getent passwd 501` =~ /([^:]+):/) {
- log::l("passwd/501 is $1");
- $o->{users} = [ { name => $1 } ];
- $ENV{HOME} = "/home/$1"; #- used by lang::read() :-/
- print "using existing user configuration\n";
- $using_existing_user_config = 1;
- }
-}
-
-sub lang2move_clp_name {
- my ($lang) = @_;
- my $dir = '/usr/share/locale/' . lang::l2locale($lang);
- my $link = readlink($dir) or return -d $dir ? '' : 'ERROR';
- my ($name) = $link =~ m!image_(i18n_.*?)/! or log::l("ERROR: bad link $link for $dir"), return 'ERROR';
- $name;
-}
-
-#- run very soon at stage2 start, setup things on tmpfs rw / that
-#- were not necessary to start stage2 itself (there were setup
-#- by stage1 of course)
-sub init {
- my ($o) = @_;
-
- $::testing and goto drakx_stuff;
-
- #- rw things
- mkdir "/$_" foreach qw(home mnt root root/tmp etc var);
-
- mkdir "/etc/$_" foreach qw(X11);
- touch '/etc/modules.conf';
- touch '/etc/modprobe.conf';
- cp_f('/proc/mounts', '/etc/mtab');
-
- #- these files need be writable but we need a sensible first contents
- cp_f("/image/etc/$_", '/etc') foreach qw(passwd passwd- group sudoers fstab);
-
- #- these files are typically opened in read-write mode, we need them copied
- mkdir_p("/etc/$_"), cp_f(glob_("/image/etc/$_/*"), "/etc/$_")
- foreach qw(cups profile.d sysconfig devfs/conf.d);
-
- #- TODO: cp_af is broken for symlinks to directories
- #- replace below with cp_af is fixed in perl-MDK-Common
- run_program::run('cp', '-a', glob("/image/etc/rc[0-6].d"), '/etc');
-
- #- directories we badly need as non-links because files will be written in
- handle_etcfiles('DIR');
-
- #- for /etc/sysconfig/networking/ifcfg-lo
- mkdir "/etc/sysconfig/networking";
-
- #- ro things
- symlinkf_short("/image/etc/$_", "/etc/$_")
- foreach qw(alternatives man.config services shells pam.d inputrc ld.so.conf
- DIR_COLORS bashrc profile init.d devfsd.conf gtk-2.0 pango fonts modules.devfs
- dynamic hotplug gnome-vfs-2.0 gnome-vfs-mime-magic gtk gconf menu menu-methods nsswitch.conf default login.defs
- skel ld.so.cache openoffice xinetd.d xinetd.conf syslog.conf sysctl.conf sysconfig/networking/ifcfg-lo
- ifplugd);
- symlinkf_short("/image/etc/X11/$_", "/etc/X11/$_")
- foreach qw(encodings.dir app-defaults applnk fs lbxproxy proxymngr rstart wmsession.d xinit xkb xserver xsm);
- symlinkf_short("/image/root/$_", "/root/$_") foreach qw(.bashrc);
-
- mkdir_p(dirname("/var/$_")), symlinkf_short("/image/var/$_", "/var/$_") foreach qw(lib/samba lib/rpm cache/gstreamer-0.6);
-
- #- non-trivial files/directories that need be readable, files that will be overwritten
- handle_etcfiles('READ', 'OVERWRITE');
-
- run_program::run('chown', 'clamav.clamav', '/var/log/clamav/freshclam.log');
-
- #- create remaining /etc and /var subdirectories if not already copied or symlinked,
- #- because programs most often will not try to create the missing subdir before trying
- #- to write a file, leading to obscure unexpected failures
- foreach (cat_('/image/move/directories-to-create')) {
- my ($mode, $uid, $gid, $name) = split;
- next if -d $name;
- mkdir($name);
- chmod(oct($mode), $name);
- chown($uid, $gid, $name);
- }
-
- chmod 01777, '/tmp', '/var/tmp'; #- /var/tmp -> badly needed for printing from OOo
-
- #- remaining non existent /etc files are symlinked from the RO volume,
- #- better to have them RO than non existent.
- #- PB: problems arise when programs try to open then in O_WRONLY
- #- or O_RDWR -> in that case, they should be handled in the
- #- OVERWRITE section of data/etcfiles)
- foreach (chomp_(cat_('/image/move/all-etcfiles'))) {
- -f $_ or symlinkf_short("/image$_", $_);
- }
-
- #- free up stage1 memory
- eval { fs::umount($_) } foreach qw(/stage1/proc/bus/usb /stage1/proc /stage1);
-
- #- devfsd needed for devices accessed by old names
- fs::mount("none", "/dev", "devfs", 0);
- fs::mount("none", "/dev/pts", "devpts", 0);
- run_program::run('/sbin/devfsd', '/dev');
-
- -d '/lib/modules/' . c::kernel_version() or warn("ERROR: kernel package " . c::kernel_version() . " not installed\n"), c::_exit(1);
-
- $key_disabled = !-e '/cdrom/live_tree_nvidia.clp' && cat_('/proc/mounts') !~ /nfs/;
-
- run_program::run('/sbin/service', 'syslog', 'start');
- run_program::run('sysctl', '-w', 'kernel.hotplug=/bin/true');
- modules::load_category('bus/usb');
- eval { modules::load('usb-storage', 'sd_mod') };
- handle_virtual_key();
- $o->{pcmcia} ||= !$::noauto && c::pcmcia_probe();
- cat_('/proc/cmdline') =~ /\bwaitkey\b/ and sleep 15;
- install_steps::setupSCSI($o);
- run_program::run('sysctl', '-w', 'kernel.hotplug=/sbin/hotplug');
-
- if (cat_('/proc/cmdline') =~ /\bformatkey\b/) {
- #- waiting until X is launched
- } else {
- key_mount($o);
- }
- if (cat_('/proc/cmdline') =~ /\bcleankey\b/) {
- eval { rm_rf $key_sysconf, glob_('/home/.mdkmove*') };
- }
- key_installfiles('simple');
- setup_userconf($o);
- if (-f '/etc/X11/X') {
- print "using existing host configuration\n";
- $using_existing_host_config = 1;
-
- #- so that /etc/devfsd/conf.d/mouse.conf is used and /dev/mouse created
- run_program::run('/sbin/service', 'devfsd', 'reload');
- }
- if (-s '/etc/sysconfig/i18n') {
- lang::set($o->{locale} = lang::read('', 0)); #- read ~/.i18n first if it exists
- }
-
- touch '/var/run/rebootctl';
-
-drakx_stuff:
- $o->{steps}{$_} = { reachable => 1, text => $_ }
- foreach qw(initGraphical autoSelectLanguage verifyKey configMove startMove);
- $o->{orderedSteps_orig} = $o->{orderedSteps};
- $o->{orderedSteps} = [ $using_existing_host_config ?
- qw(initGraphical verifyKey startMove)
- : $using_existing_user_config ?
- qw(initGraphical autoSelectLanguage verifyKey selectMouse selectKeyboard configMove startMove)
- : qw(initGraphical selectLanguage acceptLicense verifyKey selectMouse selectKeyboard configMove startMove) ];
- $o->{steps}{first} = $o->{orderedSteps}[0];
-
- #- do not use shadow passwords since pwconv overwrites /etc/shadow hence contents will be lost for usb key
- delete $o->{authentication}{shadow};
-
- foreach my $lang (keys %lang::langs) {
- my $clp_name = lang2move_clp_name($lang) or next;
- if (! -e "/cdrom/live_tree_$clp_name.clp") {
- log::l("disabling lang $lang");
- delete $lang::langs{$lang};
- }
- }
-}
-
-sub lomount_clp {
- my ($name, $needed_file) = @_;
- my ($clp, $dir) = ("/cdrom/live_tree_$name.clp", "/image_$name");
-
- -e "$dir$needed_file" and return;
-
- if (! -e $clp || cat_('/proc/cmdline') =~ /\blive\b/) {
- symlink "/cdrom/live_tree_$name", $dir;
- return;
- }
-
- log::l("lomount_clp: lomounting $name");
-
- mkdir_p($dir);
- my $dev = devices::find_free_loop();
- run_program::run('losetup', '-r', '-e', 'gz', $dev, $clp);
- run_program::run('mount', '-r', $dev, $dir);
-}
-
-sub install2::autoSelectLanguage {
- my $o = $::o;
-
- install_steps::selectLanguage($o);
-}
-
-sub handleI18NClp {
- my ($lang) = @_;
-
- my $clp_name = lang2move_clp_name($lang) or return;
- log::l("move: handleI18NClp (lang=$lang, clp_name=$clp_name)");
- lomount_clp($clp_name, '/usr');
- lomount_clp("always_$clp_name", '/usr');
-}
-
-sub clean_partition_table_and_format_key {
- my ($in) = @_;
- my @keys = grep { detect_devices::isKeyUsb($_) } detect_devices::getSCSI() or return;
- my $key = $in->ask_from_listf('', N("Which USB key do you want to format?"),
- sub { "$_->{usb_description} ($_->{device})" },
- \@keys);
-
- $in->ask_warn('', N("You are about to format a USB device \"%s\". This will delete all data on it.
-Make sure that the selected device is the USB key you want to format.
-We advise you to unplug all other USB storage devices while doing this operation.", $key->{usb_description}));
-
- $key->{prefix} ||= $key->{device};
- add2hash_($key, partition_table::raw::get_geometry($key->{file} = devices::make($key->{device})));
- partition_table::raw::zero_MBR($key);
- my ($part) = partition_table::get_normal_parts_and_holes($key);
- $part->{type} = 0xb;
- partition_table::add($key, $part);
- partition_table::write($key);
- fs::real_format_part($part);
-}
-
-sub key_parts {
- my ($o) = @_;
-
- return () if $key_disabled;
-
- my @keys = grep { detect_devices::isKeyUsb($_) } @{$o->{all_hds}{hds}};
- my @parts = (fsedit::get_fstab(@keys), grep { detect_devices::isKeyUsb($_) } @{$o->{all_hds}{raw_hds}});
- grep { isFat({ type => fsedit::typeOfPart($_->{device}) }) } @parts;
-}
-
-sub key_mount {
- my ($o, $o_reread) = @_;
-
- if ($o_reread) {
- $o->{all_hds} = fsedit::empty_all_hds();
- install_any::getHds($o, $o);
- }
- if ($virtual_key_part) {
- #- :/ merge_from_mtab did not got my virtual key, need to add it manually
- push @{$o->{fstab}}, $virtual_key_part;
- $key_part = $virtual_key_part;
- return;
- }
-
- foreach (key_parts($o)) {
- if ($key_part) {
- log::l("trying another usb key partition than $key_part->{device}");
- fs::umount_part($key_part);
- delete $key_part->{mntpoint};
- undef $key_part;
- }
- $_->{mntpoint} = '/home';
- $_->{options} = "$key_mountopts,sync";
- my $ok = eval { fs::mount_part($_); 1 };
- if ($ok) {
- my ($kb_size) = MDK::Common::System::df('/home');
- log::l("$_->{device} is $kb_size KB");
- $ok = $kb_size > 10 * 1024; #- at least 10 MB
- fs::umount_part($_) if !$ok;
- }
- if ($ok) {
- $key_part = $_;
- last if -e $key_sysconf;
- } else {
- delete $_->{mntpoint};
- }
- }
-
-
-}
-
-sub machine_ident() {
- #- , c::get_hw_address('eth0'); before detect of network :(
- md5_hex(join '', (map { (split)[1] } cat_('/proc/bus/pci/devices')));
-}
-
-sub key_installfiles {
- my ($mode) = @_;
-
- my $done if 0;
- $done and return;
-
- mkdir $key_sysconf;
- my $sysconf = "$key_sysconf/" . machine_ident();
-
- my $copy_userinfo = sub {
- my (@files) = @_;
- my @etcpasswords = glob("$key_sysconf/*/etc/passwd");
- if (@etcpasswords > 1) {
- print "inconsistency: more than one /etc/passwd on key! can not proceed, please clean the key\n";
- exit 1;
- }
- return if !@etcpasswords;
- my ($path) = $etcpasswords[0] =~ m|(.*)/etc/passwd|;
- run_program::run('cp', '-f', "$path$_", $_) foreach @files;
- run_program::run('rm', '-f', $etcpasswords[0]);
- };
-
- if (!-d $sysconf) {
- if ($mode eq 'full') {
- log::l("key_installfiles: installing config files in $sysconf");
- mkdir $sysconf;
- foreach (chomp_(cat_('/image/move/keyfiles'))) {
- mkdir_p($sysconf . dirname($_));
- my @l = /\*$/ ? glob_($_) : $_;
- foreach (@l) {
- eval { cp_f($_, "$sysconf$_") };
- symlinkf("$sysconf$_", $_);
- }
- }
- eval { cp_f('/image/move/README.adding.more.files', $key_sysconf) };
- $done = 1;
- } else {
- #- not in full mode and no host directory, grab user config from first existing host directory if possible
- log::l("key_installfiles: only looking for user config files");
- $copy_userinfo->(qw(/etc/passwd /etc/group /etc/sysconfig/i18n));
- }
- } else {
- log::l("key_installfiles: installing symlinks to key");
- if (!-e "$sysconf/etc/passwd") {
- log::l("key_installfiles: /etc/passwd not here, trying to copy from previous host boot");
- $copy_userinfo->(qw(/etc/passwd /etc/group));
- }
- foreach (chomp_(`find $sysconf -type f`)) {
- my ($path) = /^\Q$sysconf\E(.*)/;
- mkdir_p(dirname($path));
- symlinkf($_, $path);
- }
- $done = 1;
- $::o->{steps}{configMove}{done} = 1;
- }
-
- #- /etc/sudoers can not be a link
- unlink($_), cp_f("/image$_", $_) foreach qw(/etc/sudoers);
-}
-
-sub reboot() {
- output('/var/run/rebootctl', "reboot"); #- tell X_move to not respawn
- run_program::run('killall', 'X'); #- kill it ourselves to be sure that it will not lock console when killed by our init
- exit 0;
-}
-
-
-sub check_key {
- my ($o) = @_;
-
- if ($key_part) {
- my $tmp = '/home/.touched';
- #- can we write?
- if (eval { output($tmp, 'foo'); cat_($tmp) eq 'foo' && unlink $tmp }) {
- return 1;
- }
-
- #- argh, key is read-only
- #- try umounting
- if (eval { fs::umount_part($key_part); undef $key_part; 1 }) {
- modules::unload('usb-storage'); #- it will not notice change on write protection otherwise :/
-
- $o->ask_okcancel_({ title => N("Key is not writable"),
- messages => formatAlaTeX(
-N("The USB key seems to have write protection enabled. Please
-unplug it, remove write protection, and then plug it again.")),
- ok => N("Retry"),
- cancel => N("Continue without USB key") }) or return;
-
- modules::load('usb-storage');
- sleep 2;
- } else {
- #- this case happens when the user boots with a write-protected key containing
- #- all user and host data, /etc/X11/X which is on key busyfies it
- $o->ask_okcancel_({ title => N("Key is not writable"),
- messages => formatAlaTeX(
-N("The USB key seems to have write protection enabled, but we can not safely
-unplug it now.
-
-
-Click the button to reboot the machine, unplug it, remove write protection,
-plug the key again, and launch Mandriva Move again.")),
- ok => N("Reboot") });
- reboot();
- }
- } else {
- my $message = key_parts($o) ?
-N("Your USB key does not have any valid Windows (FAT) partitions.
-We need one to continue (beside, it's more standard so that you
-will be able to move and access your files from machines
-running Windows). Please plug in an USB key containing a
-Windows partition instead.
-
-
-You may also proceed without an USB key - you'll still be
-able to use Mandriva Move as a normal live Mandriva
-Operating System.") :
-N("We did not detect any USB key on your system. If you
-plug in an USB key now, Mandriva Move will have the ability
-to transparently save the data in your home directory and
-system wide configuration, for next boot on this computer
-or another one. Note: if you plug in a key now, wait several
-seconds before detecting again.
-
-
-You may also proceed without an USB key - you'll still be
-able to use Mandriva Move as a normal live Mandriva
-Operating System.");
- $o->ask_okcancel_({ title => N("Need a key to save your data"),
- messages => formatAlaTeX($message),
- ok => N("Detect USB key again"),
- cancel => N("Continue without USB key") }) or return;
-
- }
- key_mount($o, 'reread');
- check_key($o);
-}
-
-sub install2::verifyKey {
- my $o = $::o;
-
- log::l("automatic transparent key support is disabled"), return if $key_disabled;
-
- if (cat_('/proc/cmdline') =~ /\bformatkey\b/) {
- clean_partition_table_and_format_key($o);
- key_mount($o, 'reread');
- }
-
- check_key($o) or return;
-
- my $_wait = $using_existing_host_config
- || $o->wait_message(N("Setting up USB key"), N("Please wait, setting up system configuration files on USB key..."));
-
- if (eval { fs::umount_part($key_part); 1 }) {
- log::l("remounting without sync option");
- $key_part->{options} = $key_mountopts;
- fs::mount_part($key_part);
- }
-
- key_installfiles('full');
-
- setup_userconf($o);
-}
-
-sub enable_service {
- run_program::run('/sbin/chkconfig', '--level', 5, $_[0], 'on');
-}
-
-sub install2::configMove {
- my $o = $::o;
-
- #- just in case
- lomount_clp("always_i18n_$o->{locale}{lang}", '/usr');
-
- if (!$using_existing_user_config) {
- if (cat_('/proc/cmdline') =~ /\buser=(\w+)/) {
- $o->{users} = [ { name => $1 } ];
- } else {
- require any;
- any::ask_user_one($o, $o->{users} ||= [], $o->{security},
- additional_msg => N("Enter your user information, password will be used for screensaver"), noaccept => 1, needauser => 1, noicons => 1);
- }
- #- force uid/gid to 501 as it was used when mounting key, addUser may choose 502 when key already holds user data
- put_in_hash($o->{users}[0], { uid => 501, gid => 501 });
- require install_steps;
- install_steps::addUser($o);
- }
-
- $::noauto and goto after_autoconf;
-
- my $_wait = $o->wait_message(N("Auto configuration"), N("Please wait, detecting and configuring devices..."));
-
- #- automatic printer, timezone, network configs
- require install_steps_interactive;
- if (cat_('/proc/mounts') !~ /nfs/) {
- install_steps_interactive::configureNetwork($o);
- touch('/etc/resolv.conf');
- enable_service('network');
- }
- enable_service('netfs');
- install_steps_interactive::summaryBefore($o);
-
- modules::load_category('multimedia/sound');
- enable_service('sound');
-
- detect_devices::isLaptop() or enable_service('numlock');
-
-after_autoconf:
- require timezone;
- timezone::write($o->{timezone});
-
- $o->{useSupermount} = 'magicdev';
- fs::set_removable_mntpoints($o->{all_hds});
- fs::set_all_default_options($o->{all_hds}, %$o, lang::fs_options($o->{locale}));
-
- require install_any;
- install_any::write_fstab($o);
-
- modules::write_conf();
- require mouse;
- mouse::write_conf($o, $o->{mouse}, 1); #- write xfree mouse conf
- detect_devices::install_addons('');
-
- {
- my $user = $o->{users}[0]{name};
- my $confdir = "/home/$user/.kde/share/config";
- mkdir_p($confdir);
- output("$confdir/kdeglobals", cat_("/usr/share/config/kdeglobals"));
- lang::configure_kdeglobals($o->{locale}, $confdir);
-
- run_program::run('chown', '-R', "$user.$user", "/home/$user/.kde");
- }
-
- foreach my $step (@{$o->{orderedSteps_orig}}) {
- next if member($step, @{$o->{orderedSteps}});
- while (my $f = shift @{$o->{steps}{$step}{toBeDone} || []}) {
- log::l("doing remaining toBeDone for undone step $step");
- eval { &$f() };
- $o->ask_warn(N("Error"), [
-N("An error occurred, but I do not know how to handle it nicely.
-Continue at your own risk."), formatError($@) ]) if $@;
- }
- }
-}
-
-sub install_TrueFS_in_home {
- my ($o) = @_;
-
- my $home = fsedit::mntpoint2part('/home', $o->{fstab}) or return;
-
- my %loopbacks = map {
- my $part = {
- type => 0x83,
- device => "/home/.mdkmove-$_",
- loopback_file => "/.mdkmove-$_", loopback_device => $home,
- mntpoint => "/home/$_/.mdkmove-truefs", size => 6 << 11,
- toFormat => ! -e "/home/.mdkmove-$_",
- };
- $_ => $part;
- } list_users();
- $home->{loopback} = [ values %loopbacks ];
- fsedit::recompute_loopbacks($o->{all_hds});
- fs::formatMount_all([], $home->{loopback}, $o->{prefix});
-
- foreach my $user (keys %loopbacks) {
- my $dir = $loopbacks{$user}{mntpoint};
-
- foreach (qw(.kde .openoffice)) {
- if (-d "/home/$user/$_" && ! -d "$dir/$_") {
- run_program::run('mv', "/home/$user/$_", "$dir/$_");
- }
- mkdir $_ foreach "/home/$user/$_", "$dir/$_";
-
- run_program::run('mount', '-o', 'bind', "$dir/$_", "/home/$user/$_");
- }
-
- my $cache = "/tmp/.$user-cache";
- foreach (qw(.kde/share/cache)) {
- mkdir_p("$cache/$_");
- mkdir_p("/home/$user/" . dirname($_));
- symlink "$cache/$_", "/home/$user/$_";
- }
- run_program::run('chown', '-R', "$user.$user", $dir);
- run_program::run('chown', '-R', "$user.$user", $cache);
-
- $ENV{XAUTHORITY} = "$dir/.Xauthority";
- $ENV{ICEAUTHORITY} = "$dir/.ICEauthority";
- }
-}
-
-sub errorInStep {
- my ($o, $err) = @_;
-
- if (!fsedit::mntpoint2part('/home', $o->{fstab})) {
- $o->ask_warn(N("Error"), [ N("An error occurred"), formatError($err) ]);
- return;
- }
-
- $o->ask_okcancel_({ title => N("Error"),
- messages => formatAlaTeX(
-N("An error occurred:
-
-
-%s
-
-This may come from corrupted system configuration files
-on the USB key, in this case removing them and then
-rebooting Mandriva Move would fix the problem. To do
-so, click on the corresponding button.
-
-
-You may also want to reboot and remove the USB key, or
-examine its contents under another OS, or even have
-a look at log files in console #3 and #4 to try to
-guess what's happening.", formatError($err))),
- ok => N("Remove system config files"),
- cancel => N("Simply reboot") }) or goto reboot;
- eval { rm_rf $key_sysconf };
-reboot:
- reboot();
-}
-
-sub install2::initGraphical {
- my $xdim = $::rootwidth;
- $xdim < 800 and $xdim = 800;
- $xdim > 1600 and $xdim = 1600;
- run_program::run('qiv', '--root', "/image/move/BOOT-$xdim-MOVE.jpg");
-
- undef *install_steps_interactive::errorInStep;
- *install_steps_interactive::errorInStep = \&errorInStep;
-}
-
-sub install2::startMove {
- my $o = $::o;
-
- $::WizardWindow->destroy if $::WizardWindow;
- require ugtk2;
- ugtk2::flush();
-
- #- get info from existing fstab. This will not do anything if we already wrote fstab in configMove
- fs::get_info_from_fstab($o->{all_hds}, '');
- foreach (fsedit::get_really_all_fstab($o->{all_hds})) {
- if (isSwap($_)) {
- eval { swap::swapon($_->{device}) };
- } elsif ($_->{mntpoint} && !$_->{isMounted} && !$::noauto) {
- mkdir_p($_->{mntpoint});
- run_program::run('mount', $_->{mntpoint}) if $_->{options} !~ /noauto/;
- }
- }
-
- symlinkf("/usr/share/services/ksycoca-$o->{locale}{lang}", '/etc/X11/ksycoca');
-
- install_TrueFS_in_home($o);
-
- my $username = $o->{users}[0]{name} or die 'no user';
- output('/var/run/console.lock', $username);
- output("/var/run/console/$username", 1);
- run_program::run('pam_console_apply');
-
- run_program::run('hwclock', '-s', '--localtime');
- run_program::run('chown', "$username.root", '/var/run/rebootctl');
- substInFile { $_ = '' if m!\s/home\s! } $_ foreach '/etc/fstab', '/etc/mtab';
-
- touch '/var/run/utmp';
- run_program::run('runlevel_set', '5');
- foreach (glob('/etc/rc.d/rc5.d/*')) {
- next if member($_, qw(xfs dm devfsd syslog));
- next if /~$/;
- run_program::run($_, 'start');
- }
-
- #- allow user customisation of startup through /etc/rc.d/rc.local
- run_program::run('/etc/rc.d/rc.local');
-
- if ($key_part) {
- output '/var/lib/machine_ident', machine_ident();
- run_program::run('/usr/bin/etc-monitorer.pl', uniq map { dirname($_) } (chomp_(`find /etc -type f`),
- grep { readlink($_) !~ m|^/| } chomp_(`find /etc -type l`)));
- run_program::raw({ detach => 1 }, '/usr/bin/dnotify', '-MCRD', '/etc', '-r', '-e', '/usr/bin/etc-monitorer.pl', '{}') or die "dnotify not found!";
- }
-
- #- password in screensaver does not make sense if we keep the shell
- if (cat_('/proc/cmdline') !~ /\bshell\b/) {
- kill 9, cat_('/var/run/drakx_shell.pid');
- output('/dev/tty2', "Killed\n");
- }
-
- if (fork()) {
- sleep 1;
- log::l("DrakX waves bye-bye");
-
- open STDOUT, ">>/tmp/.kde-errors"; #- do not display startkde shit on first console
- open STDERR, ">>/tmp/.kde-errors";
-
- my (undef, undef, $uid, $gid, undef, undef, undef, $home, $shell) = getpwnam($username);
- $( = $) = "$gid $gid";
- $< = $> = $uid;
- $ENV{LOGNAME} = $ENV{USER} = $username;
- $ENV{HOME} = $home;
- $ENV{SHELL} = $shell;
- $ENV{XDM_MANAGED} = '/var/run/rebootctl,maysd,mayfn,sched'; #- for reboot/halt availability of "logout" by kde
- $ENV{GDMSESSION} = 1; #- disable ~/.xsession-errors in Xsession (waste of usb key writes)
- $ENV{LD_LIBRARY_PATH} = "$home/lib";
- chdir $home;
- exec 'startkde_move';
- } else {
- exec 'xwait', '-permanent' or c::_exit(0);
- }
-}
-
-sub automatic_xconf {
- my ($o) = @_;
-
- if (!$using_existing_host_config) {
-
- log::l('automatic XFree configuration');
-
- any::devfssymlinkf($o->{mouse}, 'mouse');
- local $o->{mouse}{device} = 'mouse';
-
- require Xconfig::default;
- $o->{raw_X} = Xconfig::default::configure(class_discard->new, { KEYBOARD => 'uk' }, $o->{mouse}); #- using uk instead of us for now to have less warnings
-
- require Xconfig::main;
- require class_discard;
-
- Xconfig::main::configure_everything_auto_install($o->{raw_X}, class_discard->new, {}, install_any::X_options_from_o($o));
- }
-
- modules::load_category('various/agpgart');
-
- my $file = '/etc/X11/XF86Config';
- $file = "$file-4" if -e "$file-4";
- my ($Driver) = cat_($file) =~ /Section "Device".*Driver\s*"(.*?)"/s;
- if ($Driver eq 'nvidia') {
- modules::load('nvidia');
- lomount_clp('nvidia', '/usr/lib/libGLcore.so.1');
- }
- my $lib = 'libGL.so.1';
- symlinkf_short(-e "/usr/lib/$lib.$Driver" ? "/usr/lib/$lib.$Driver" : "/usr/X11R6/lib/$lib", "/etc/X11/$lib");
-}
-
-
-1;
diff --git a/move/pkgs.pm b/move/pkgs.pm
deleted file mode 100644
index 66f163504..000000000
--- a/move/pkgs.pm
+++ /dev/null
@@ -1,32 +0,0 @@
-#- $Id$ $
-
-package urpm_pkg;
-
-sub flag_available {
- return 1;
-}
-
-
-package pkgs;
-use log;
-
-sub rpmDbOpen {
- #- install_steps:343
-}
-
-sub packageByName {
- #- install_steps:344
- return bless {}, 'urpm_pkg'; #- we'll need to call flag_available on it
-}
-
-sub selectPackage {
- #- install_steps:344
-}
-
-sub packagesToInstall {
- #- install_steps:346
- return ();
-}
-
-
-1;
diff --git a/move/runlevel_set.c b/move/runlevel_set.c
deleted file mode 100644
index 94f7b5933..000000000
--- a/move/runlevel_set.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <utmp.h>
-
-int main(int argc, char **argv)
-{
- struct utmp utmp;
-
- if (argc <= 1) {
- fprintf(stderr, "need an argument\n");
- return 1;
- }
-
- memset(&utmp, 0, sizeof(utmp));
- utmp.ut_type = RUN_LVL;
- utmp.ut_pid = argv[1][0];
-
- setutent();
- pututline(&utmp);
- endutent();
-
- return 0;
-}
diff --git a/move/runstage2 b/move/runstage2
deleted file mode 100755
index 481b8579c..000000000
--- a/move/runstage2
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/perl
-
-#- Copyright (c) 2003 Mandrakesoft
-#-
-#- This program is free software; you can redistribute it and/or modify
-#- it under the terms of the GNU General Public License as published by
-#- the Free Software Foundation; either version 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-use lib qw(../perl-install /usr/lib/stage2 /usr/lib/libDrakX);
-use install2;
-
-$::isStandalone = 0;
-install2::main(@ARGV, '--move');
-
-c::_exit(0);
diff --git a/move/todo b/move/todo
deleted file mode 100644
index 8a0f34158..000000000
--- a/move/todo
+++ /dev/null
@@ -1,39 +0,0 @@
- startup
-
-
- drakx
-
-what security level?
-
-resize .mdkmove-user loopback if it gets too stuffed
-
-put .mdkmove-user loopback file at the place it will be mouted so
-that user can't see the loop file on the filesystem and so can't
-shoot herself by removing it
-
-
- kde
-
-at startup:
- Can't get own host name. Your system is serveral misconfigured
-although "hostname" binary answers localhost.localdomain (set by
-sethostname from init of stage1)
-
-font of konsole still too large and non proportional (same
-problem as 9.2 it seems)
-
-
- system running
-
-Click on the Menu/Doc/Howtos > Fail
-
-
- usb key
-
-/etc/X11/X
- is a link but vfat doesn't handle links :(
-
-
- shutdown
-
-cd won't eject when there is an NFS mounted partition
diff --git a/move/tools/busy-files b/move/tools/busy-files
deleted file mode 100755
index 7426e785a..000000000
--- a/move/tools/busy-files
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-my @pids = grep { $_ ne $$ && /^(\d+)$/ } all('/proc');
-
-my @l = map {
- grep {
- $_ && !m!^(/proc/|/dev/|pipe:|socket:)!;
- } map { readlink($_) } "/proc/$_/exe", glob_("/proc/$_/fd/*");
-} @pids;
-
-push @l, grep { $_ } map { (split)[5] } map { cat_("/proc/$_/maps") } @pids;
-
-if ($ARGV[0] eq '--totem') {
- @l = grep { m!/(image(_boot)?|cdrom)/! } @l;
- $ARGV[0] = '--server';
-}
-foreach (uniq @l) {
- if ($ARGV[0] eq '--server') {
- s!/image(_always|_boot|_totem)?/!/tmp/live_tree/!;
- s!/cdrom/live_tree!/tmp/live_tree!;
- }
- print "$_\n";
-}
diff --git a/move/tools/busy-files-accesses b/move/tools/busy-files-accesses
deleted file mode 100644
index 241b68405..000000000
--- a/move/tools/busy-files-accesses
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-use Getopt::Long;
-
-GetOptions('no-link' => \ (my $no_link),
- 'no-dir' => \ (my $no_dir),
- 'full-dirs=s', \ (my $full_dirs),
- 'already-have=s', \ (my $already_have),
-);
-
-if ($full_dirs) {
- my @l = map { chomp_(MDK::Common::File::cat_or_die($_)) } split(' ', $full_dirs);
- $full_dirs = '/tmp/live_tree(' . join('|', map { quotemeta } @l) . ')/';
-}
-if ($already_have) {
- my @l = map { chomp_(MDK::Common::File::cat_or_die($_)) } split(' ', $already_have);
- $already_have = '(' . join('|', map { quotemeta } @l) . ')';
-}
-
-my ($file_list) = @ARGV;
-foreach my $file (cat_($file_list)) {
- chomp $file;
-
- $file =~ m!/tmp/live_tree! or next;
- $already_have && $file =~ /^$already_have$/ and next;
-
- if (-l $file ? !$no_link : -d $file ? !$no_dir : 1) {
- my $s = $full_dirs && $file =~ /^$full_dirs/ ? "/tmp/live_tree$1" : $file;
- push @l, $s;
- }
-}
-
-print "$_\n" foreach sort(uniq(@l));
diff --git a/move/tools/check-fc-cache.pl b/move/tools/check-fc-cache.pl
deleted file mode 100644
index 42902835f..000000000
--- a/move/tools/check-fc-cache.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl
-
-# check if files are more recent (fc-cache will slow down starting of drakx)
-
-use MDK::Common;
-
-sub stat_ {
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat $_[0];
- max($mtime, $ctime);
-}
-
-my $prefix = $ARGV[0] || '/tmp/live_tree';
-
-my @conf = cat_("$prefix/etc/fonts/fonts.conf");
-
-foreach my $line (@conf) {
- while ($line =~ m|<dir>([^<]+)</dir|g) {
- my $dir = $1;
- $dir =~ m|^/| or next;
- print "dir $prefix$dir\n";
- foreach my $d (chomp_(`find $prefix$dir -type d 2>/dev/null`)) {
- my $ref = stat_("$d/fonts.cache-1");
- stat_($_) > $ref and print "\t$_\n" foreach glob("$d/*");
- }
- }
-}
-
diff --git a/move/tools/fix-fc-cache.pl b/move/tools/fix-fc-cache.pl
deleted file mode 100755
index 720c94141..000000000
--- a/move/tools/fix-fc-cache.pl
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/perl
-
-# touch fontconfig cache files so that fc-cache will not slow down starting of drakx
-
-use MDK::Common;
-
-my ($prefix) = @ARGV or die "usage: $0 <prefix>\n";
-
-my @conf = cat_("$prefix/etc/fonts/fonts.conf");
-
-print "touching fontconfig cache files...\n";
-foreach my $line (@conf) {
- while ($line =~ m|<dir>([^<]+)</dir|g) {
- my $dir = $1;
- $dir =~ m|^/| or next;
- foreach my $d (chomp_(`find $prefix$dir -type d 2>/dev/null`)) {
- touch "$d/fonts.cache-1";
- }
- }
-}
-
diff --git a/move/tools/kernel-nfsd.patch b/move/tools/kernel-nfsd.patch
deleted file mode 100644
index a169edb14..000000000
--- a/move/tools/kernel-nfsd.patch
+++ /dev/null
@@ -1,61 +0,0 @@
---- linux-2.6.3/fs/nfsd/vfs.c.pix 2004-02-18 04:57:29.000000000 +0100
-+++ linux-2.6.3/fs/nfsd/vfs.c 2004-04-05 15:56:35.423508058 +0200
-@@ -444,6 +444,41 @@
-
-
-
-+static unsigned int i2a(char* dest,unsigned int x) {
-+ register unsigned int tmp=x;
-+ register unsigned int len=0;
-+ if (x>=100) { *dest++=tmp/100+'0'; tmp=tmp%100; ++len; }
-+ if (x>=10) { *dest++=tmp/10+'0'; tmp=tmp%10; ++len; }
-+ *dest++=tmp+'0';
-+ return len+1;
-+}
-+
-+static char *inet_ntoa_r(struct in_addr in,char* buf) {
-+ unsigned int len;
-+ unsigned char *ip=(unsigned char*)&in;
-+ len=i2a(buf,ip[0]); buf[len]='.'; ++len;
-+ len+=i2a(buf+ len,ip[1]); buf[len]='.'; ++len;
-+ len+=i2a(buf+ len,ip[2]); buf[len]='.'; ++len;
-+ len+=i2a(buf+ len,ip[3]); buf[len]=0;
-+ return buf;
-+}
-+
-+static char *inet_ntoa(struct in_addr in) {
-+ static char buf[20];
-+ return inet_ntoa_r(in,buf);
-+}
-+
-+static void printk_debug_file_access(struct svc_rqst *rqstp, struct dentry *dentry) {
-+ printk("nfsd (%s): ", inet_ntoa(rqstp->rq_addr.sin_addr));
-+ while (1) {
-+ if (dentry == dentry->d_parent) break;
-+ printk("%s/", dentry->d_name.name);
-+ dentry = dentry->d_parent;
-+ }
-+ printk("\n");
-+}
-+
-+
- /*
- * Open an existing file or directory.
- * The access argument indicates the type of open (read/write/lock)
-@@ -502,6 +537,8 @@
- } else if (access & MAY_WRITE)
- put_write_access(inode);
-
-+ if (err == 0) printk_debug_file_access(rqstp, dentry);
-+
- out_nfserr:
- if (err)
- err = nfserrno(err);
-@@ -1156,6 +1193,7 @@
- goto out_nfserr;
- *lenp = err;
- err = 0;
-+ printk_debug_file_access(rqstp, dentry);
- out:
- return err;
-
diff --git a/move/tools/nfs-accesses b/move/tools/nfs-accesses
deleted file mode 100755
index f27de0d37..000000000
--- a/move/tools/nfs-accesses
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-use Getopt::Long;
-
-my $first_file;
-my $log_file = '/var/log/kernel/warnings';
-
-GetOptions('no-link' => \ (my $no_link),
- 'no-dir' => \ (my $no_dir),
- 'full-dirs=s', \ (my $full_dirs),
- 'ip=s' => \ (my $wanted_ip),
- 'log-file=s' => \$log_file,
- 'first-file=s' => \ (my $first_file),
- 'from-time=s', => \ (my $from_time),
- 'already-have=s', \ (my $already_have),
- );
-
-my @skipped_dirs = (
- '/usr/share/fonts',
- '/lib/modules/2.4.22-21mdk',
- '/usr/X11R6/lib/modules/extensions',
- '/usr/X11R6/lib/X11/fonts',
- '/usr/lib/kbd/keymaps',
- '/usr/share/locale',
- '/etc/skel',
- );
-
-my $skipped_dirs = '/tmp/live_tree(' . join('|', map { quotemeta } @skipped_dirs) . ')/';
-if ($full_dirs) {
- my @l = chomp_(map { MDK::Common::File::cat_or_die($_) } split(' ', $full_dirs));
- $full_dirs = '/tmp/live_tree(' . join('|', map { quotemeta } @l) . ')/';
-}
-if ($already_have) {
- my @l = map { chomp_(MDK::Common::File::cat_or_die($_)) } split(' ', $already_have);
- $already_have = '(' . join('|', map { quotemeta } @l) . ')';
-}
-
-open(my $F, "tac $log_file |");
-
-my @l;
-while (<$F>) {
- my ($time, $ip, $rfile) = /(\d+:\d+:\d+).*kernel: nfsd \((.*?)\): (.*)/ or next;
-
- if ($wanted_ip) {
- $wanted_ip eq $ip or next;
- } else {
- warn "choosing $ip\n";
- $wanted_ip = $ip;
- }
- my $file = join('/', '', reverse split('/', $rfile));
-
- last if $file =~ m!/tmp/live_tree/move/(devices|symlinks)!;
- last if $from_time && $time le $from_time;
-
- $already_have && $file =~ /^$already_have$/ and next;
-
- if ($file !~ /^$skipped_dirs/) {
- if (-l $file ? !$no_link : -d $file ? !$no_dir : 1) {
- my $s = $full_dirs && $file =~ /^$full_dirs/ ? "/tmp/live_tree$1" : $file;
- unshift @l, $s;
- }
- }
- last if $first_file && ($file eq "/tmp/live_tree$first_file" || $rfile eq $first_file);
-}
-
-print "$_\n" foreach sort(uniq(@l));
diff --git a/move/tools/scan-etc.pl b/move/tools/scan-etc.pl
deleted file mode 100755
index 66415d4de..000000000
--- a/move/tools/scan-etc.pl
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/perl
-
-# To be used replacing move::init handling of etc files with:
-#
-# system("cp -a /image/etc /");
-# symlinkf "/proc/mounts", "/etc/mtab";
-# system("find /etc -type f > /tmp/filelist");
-# touch '/dummy';
-# m|^/var| && !-d $_ and mkdir_p $_ foreach chomp_(cat_('/image/move/directories-to-create'));
-# sleep 2;
-# goto meuh;
-
-use MDK::Common;
-
-sub stat_ {
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat $_[0];
- [ $atime, max($mtime, $ctime) ];
-}
-
-our $reference = (stat_('/dummy'))->[0];
-
-our @old_filelist = chomp_(cat_("/tmp/filelist"));
-foreach (chomp_(`find /etc -type f`)) {
- if (!member($_, @old_filelist)) {
- push @new, $_;
- } else {
- $times = stat_($_);
- $times->[0] > $reference and push @read, $_;
- $times->[1] > $reference and push @wrote, $_;
- }
-}
-
-print "read:\n";
-print "\t$_\n" foreach sort @read;
-
-print "wrote:\n";
-print "\t$_\n" foreach sort @wrote;
-
-print "new:\n";
-print "\t$_\n" foreach sort @new;
-
diff --git a/move/tree/X_move b/move/tree/X_move
deleted file mode 100755
index dde4bcc32..000000000
--- a/move/tree/X_move
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-ok=0
-lastdate1=0
-lastdate0=0
-while [ "$ok" == 0 -a ! -s /var/run/rebootctl ]; do
- lastdate2=$lastdate1
- lastdate1=$lastdate0
- lastdate0=`date +%s`
- if [ `expr $lastdate0 - $lastdate2` -lt 40 ]; then
- echo "X server respawning too fast :(, dropping to a shell"
- bash
- fi
- X $@
- ok=$?
-done
diff --git a/move/tree/alsa_default.pl b/move/tree/alsa_default.pl
deleted file mode 100755
index 28b06cc04..000000000
--- a/move/tree/alsa_default.pl
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/perl -pi
-
-# state machine:
-if (/\s*control\./) {
- ($min, $max) = (0, 0);
-} elsif (/\s*name '/) {
- # skip masks and blacklist sb live and the like:
- $ignore = /\s*name '.*(3D Control|AC97 Playback Volume|Audigy Analog\/Digital Output Jack|External Amplifier Power Down|Exchange DAC|IEC958 input monitor|IEC958 Capture Monitor|IEC958 Playback Switch|mask|Mic Boost \(\+20dB\)|Mic Playback Switch|Output Jack|Surround down mix)/i;
-} elsif (!$ignore) {
- if (/s*comment.range '(\d+) - (\d+)'/) {
- ($min, $max) = ($1, $2);
- } elsif (/s*value/) {
- # enable switches:
- s/(value\w*\S*)\s* false/\1 true/;
- # set volume to 80%:
- my $val = int($max*0.8);
- s/(value\w*\S*)\s* \d+/\1 $val/;
- }
-}
diff --git a/move/tree/halt b/move/tree/halt
deleted file mode 100755
index c8431ac03..000000000
--- a/move/tree/halt
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-echo "halt" > /var/run/rebootctl
-sudo killall -USR1 startkde_move
-sudo killall X
diff --git a/move/tree/kdedrc b/move/tree/kdedrc
deleted file mode 100644
index a58482a55..000000000
--- a/move/tree/kdedrc
+++ /dev/null
@@ -1,7 +0,0 @@
-[General]
-CheckSycoca=false
-CheckUpdates=false
-CheckHostname=false
-
-[Move]
-Rebuild=false
diff --git a/move/tree/konsolerc b/move/tree/konsolerc
deleted file mode 100644
index fb7658ad3..000000000
--- a/move/tree/konsolerc
+++ /dev/null
@@ -1,19 +0,0 @@
-[Desktop Entry]
-ActiveSession=0
-DefaultSession=shell.desktop
-Height 600=410
-Width 800=582
-bellmode=1
-defaultfont=Fixed,13,-1,5,48,0,0,0,1,0
-history=0
-historyenabled=true
-keytab=default
-
-[konsole-mainwindow#1 Toolbar style]
-Hidden=false
-IconSize=22
-IconText=IconOnly
-Index=0
-NewLine=false
-Offset=-1
-Position=Bottom
diff --git a/move/tree/mdk_behind_totem b/move/tree/mdk_behind_totem
deleted file mode 100755
index 028077821..000000000
--- a/move/tree/mdk_behind_totem
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/bin/bash
-
-ok=1
-
-while [ -n "$1" ]; do
- case "$1" in
- --lang)
- lang="$2"
- shift
- shift
- ;;
- --i18n-loop)
- i18n_loop="$2"
- shift
- shift
- ;;
- --boot-loop)
- boot_loop="$2"
- shift
- shift
- ;;
- --main-loop)
- main_loop="$2"
- shift
- shift
- ;;
- --totem-pid)
- totem_pid="$2"
- shift
- shift
- ;;
- --user)
- USER="$2"
- shift
- shift
- ;;
- --restore-cmd)
- RESTORE_CMD="$2"
- shift
- shift
- ;;
- *)
- ok=''
- shift
- esac
-done
-
-if [ -z "$totem_pid" -o -z "$ok" ]; then
- printf "Usage: mdk_behind_totem [--boot-loop <loop>] [--main-loop <loop>] --totem-pid <pid>\n"
- exit 1
-fi
-
-exec &> /tmp/mdk_behind_totem.log
-
-trap 'umount_cd' USR1
-
-umount_cd() {
- echo umount_cd
-
- umount /image_i18n_$lang
- losetup -d /dev/$i18n_loop
-
- umount /image_boot
- losetup -d /dev/$boot_loop
-
- ln -sf /image_always/lib /
-
- if [ -L /image ]; then
- rm -f /image
- else
- umount /image && \
- /image_always/sbin/losetup -d /dev/$main_loop || { mount_cd; kill $totem_pid; exec mdk_totem; }
- fi
-
- /image_always/usr/bin/eject
-}
-
-mount_cd() {
- echo mount_cd
- if [ -e /cdrom/live_tree.clp ]; then
- /image_always/sbin/losetup -r -e gz /dev/$main_loop /cdrom/live_tree.clp
- /image_always/bin/mount -r /dev/$main_loop /image
- else
- ln -sf /cdrom/live_tree /image
- fi
-
- losetup -r -e gz /dev/$boot_loop /cdrom/live_tree_boot.clp
- mount -r /dev/$boot_loop /image_boot
-
- losetup -r -e gz /dev/$i18n_loop /cdrom/live_tree_i18n_$lang.clp
- mount -r /dev/$i18n_loop /image_i18n_$lang
-
- ln -sf /image/lib /
-
- mdk_move_loop to_cdrom always always_i18n totem nvidia
-
- # restore killed kde apps
- su -c "$RESTORE_CMD" $USER
-}
-
-while [ -e "/proc/$totem_pid" ]; do
- echo "waiting..."
- /image_totem/bin/sleep 1
-done
-
-mount_cd
diff --git a/move/tree/mdk_move_boot_loop.desktop b/move/tree/mdk_move_boot_loop.desktop
deleted file mode 100644
index 5d82a7875..000000000
--- a/move/tree/mdk_move_boot_loop.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Name=Move Move Loop
-Exec=mdk_move_loop to_cdrom always always_i18n boot totem
-Type=Application
-Terminal=0
-X-KDE-autostart-after=panel
-X-KDE-autostart-after=mdkhtmlbrowser
-X-KDE-StartupNotify=false
diff --git a/move/tree/mdk_move_loop b/move/tree/mdk_move_loop
deleted file mode 100755
index b98c4a417..000000000
--- a/move/tree/mdk_move_loop
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/perl
-
-sub name2file {
- my ($name) = @_;
- "live_tree_$name.clp";
-}
-
-sub get_file2loop {
- my %file2loop;
- foreach (0 .. 9) {
- my ($file) = `sudo losetup /dev/loop$_ 2>/dev/null` =~ m!\([^)]*/([^)]*)\)! or last;
- $file2loop{$file} = "loop$_";
- }
- %file2loop;
-}
-
-sub to_memory {
- my ($loop, $file) = @_;
-
- return if -e "/tmp/$file";
-
- if (-e "/$file") {
- system("sudo mv /$file /tmp");
- } else {
- system("sudo cp /cdrom/$file /tmp");
- }
- system("sudo losetup /dev/$loop /tmp/$file");
-}
-
-sub to_cdrom {
- my ($loop, $file) = @_;
- my $f = -e "/$file" ? "/$file" : -e "/tmp/$file" ? "/tmp/$file" : return;
- system("sudo losetup /dev/$loop /cdrom/$file");
- system("sudo rm $f");
-}
-
-sub usage() { die "usage: mdk_move_loop <to_cdrom | to_memory> [names ...]\n" }
-
-my ($direction, @names) = @ARGV;
-my $f = $direction eq 'to_memory' && \&to_memory || $direction eq 'to_cdrom' && \&to_cdrom;
-$f && @names or usage();
-
-my %file2loop = get_file2loop(@names);
-
-foreach my $name (@names) {
- if ($name eq 'always_i18n') {
- /(always_i18n.*)\.clp/ and $name = $1 foreach keys %file2loop;
- }
- my $file = name2file($name);
- my $loop = $file2loop{$file} or next;
- $f->($loop, $file);
-}
-
-if ($ENV{GIVE_LOOP}) {
- print "$_=$file2loop{$_}\n" foreach keys %file2loop;
-}
diff --git a/move/tree/mdk_totem b/move/tree/mdk_totem
deleted file mode 100755
index 0a54248ac..000000000
--- a/move/tree/mdk_totem
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/perl
-
-use lib qw(../../perl-install /usr/lib/libDrakX);
-use common;
-use interactive;
-
-sub busy_pids_and_files() {
- my @pids = grep { $_ ne $$ && /^(\d+)$/ } all('/proc');
-
- map {
-
- my @l1 = grep {
- $_ && !m!^(/proc/|/dev/|pipe:|socket:)!;
- } map { readlink($_) } "/proc/$_/exe", glob_("/proc/$_/fd/*");
-
- my @l2 = grep { $_ } map { (split)[5] } cat_("/proc/$_/maps");
-
- if (my @l = grep { m!^/(image(_boot)?|cdrom/live_tree)/! } @l1, @l2) {
- my $cmdline = join(' ', split('\0', cat_("/proc/$_/cmdline")));
- my $exe = readlink("/proc/$_/exe");
- { pid => $_, cmdline => $cmdline, exe => $exe, files => [ sort(uniq(@l)) ] };
- } else {
- ();
- }
- } @pids;
-}
-
-my @to_restart_progs = qw(kded kdesktop kicker);
-my $restart_progs = join(";", @to_restart_progs);
-my @simple_daemons = qw(kdesud kio_uiserver klaptopdaemon artsd portmap);
-sub simple_daemon {
- my ($e) = @_;
- my $re = join('|', @to_restart_progs, @simple_daemons);
- $e->{cmdline} =~ m!\b($re)\b!
-}
-
-my $in = interactive->vnew;
-
-my @busy = busy_pids_and_files();
-
-my $needed_processes = join('|', map { quotemeta }
- 'init',
- 'xfs',
- 'kdeinit: Running...',
- '/etc/X11/X',
- '/sbin/devfsd',
- );
-
-if (!$ENV{DEBUG} && find { $_->{cmdline} =~ /^($needed_processes)/ } @busy) {
- exec 'totem' if $in->ask_okcancel('', N("You can only run with no CDROM support"));
- $in->exit(1);
-}
-
-my ($simple_daemons, $bad_busy) = partition { simple_daemon($_) } @busy;
-if (@$bad_busy) {
- warn '*' x 80, "\n";
- warn join("\n", "$_->{exe} ($_->{cmdline}) =>", map { " $_" } @{$_->{files}}) . "\n" foreach @$bad_busy;
- warn '*' x 80, "\n";
-
- my @progs = map {
- my $s = $_->{cmdline};
- $s =~ s!^/usr/bin/perl\s+([^-]\S*).*!$1!;
- $s =~ s!/.*/!!;
- $s =~ s!^kdeinit:\s+(\S+).*!$1!;
- $s =~ s!\s.*!!;
- $s;
- } @$bad_busy;
-
- my $choice = 'quit';
- my @l = my %l = (
- kill => N("Kill those programs"),
- keep => N("No CDROM support"),
- );
-
- $in->ask_from_({
- title => N("Read carefully!"),
- messages => N("You can not use another CDROM when the following programs are running:
-%s", join(", ", uniq(sort @progs))) },
- [ { type => 'list', val => \$choice, list => first(list2kv(@l)), format => sub { $l{$_[0]} } } ]) or $in->exit;
-
- if ($choice eq 'keep') {
- exec 'totem' or $in->exit;
- } else {
- system('sudo', 'kill', map { $_->{pid} } @$bad_busy);
- sleep 2;
- system('sudo', 'kill', '-9', map { $_->{pid} } @$bad_busy);
- }
-}
-
-kill 15, map { $_->{pid} } @$simple_daemons;
-sleep 1;
-
-@busy = busy_pids_and_files(); #- update list
-if (@busy) {
- system($restart_progs);
- exec 'totem' if $in->ask_okcancel('', N("You can only run with no CDROM support"));
- $in->exit(1);
-}
-
-my %file2loop = do {
- my $_w = $in->wait_message('', N("Copying to memory to allow removing the CDROM"));
- `GIVE_LOOP=1 mdk_move_loop to_memory always always_i18n totem nvidia` =~ /(.*?)=(.*)/g;
-};
-
-ugtk2::gtkset_mousecursor_normal(); #- for restoring a normal in any case
-ugtk2::flush();
-
-my ($lang) = map { if_(/live_tree_i18n_(.*)\.clp/, $1) } keys %file2loop;
-my $totem_pid = $$;
-
-if (my $pid = fork()) {
- $ENV{MDKMOVE} = $pid;
- $ENV{G_BROKEN_FILENAMES} = 1;
- exec 'totem';
-} else {
- exec 'sudo', 'mdk_behind_totem',
- '--lang', $lang,
- '--i18n-loop', $file2loop{"live_tree_i18n_$lang.clp"},
- '--boot-loop', $file2loop{'live_tree_boot.clp'},
- '--boot-loop', $file2loop{'live_tree_boot.clp'},
- '--main-loop', $file2loop{'live_tree.clp'},
- '--totem-pid', $totem_pid,
- '--user', $ENV{USER},
- '--restore-cmd', $restart_progs;
-}
diff --git a/move/tree/mdk_totem.desktop b/move/tree/mdk_totem.desktop
deleted file mode 100644
index 85511c1db..000000000
--- a/move/tree/mdk_totem.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=Multimedia Player for CDs/DVDs
-Comment=Play movies and songs
-Exec=mdk_totem
-Icon=totem.png
-Type=Application
-Terminal=false
-
-Name[fr]=Lecteur Multimédia pour CDs/DVDs
-Name[it]=Lettore Multimediale di CD/DVDs
-Name[de]=Multimedia-Player für CDs/DVDs
-Name[es]=Reproductor multimedios para CD/DVD
diff --git a/move/tree/netscape b/move/tree/netscape
deleted file mode 100755
index 922d33bc5..000000000
--- a/move/tree/netscape
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-$BROWSER "$@"
diff --git a/move/tree/reboot b/move/tree/reboot
deleted file mode 100755
index b4b1d4ede..000000000
--- a/move/tree/reboot
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-echo "reboot" > /var/run/rebootctl
-sudo killall -USR1 startkde_move
-sudo killall X
diff --git a/move/tree/sound.initscript b/move/tree/sound.initscript
deleted file mode 100755
index 919a9b875..000000000
--- a/move/tree/sound.initscript
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/sh
-# (c) Mandrakesoft, Chmouel Boudjnah <chmouel@mandrakesoft.com>
-# $Id$
-#
-# sound: This shell script launch the sound on your system.
-#
-# chkconfig: 2345 18 69
-# description: This shell script launch the sound on your system.
-
-. /etc/rc.d/init.d/functions
-
-PKLVL=$(cut -f1 /proc/sys/kernel/printk)
-sysctl -n -w kernel.printk=0
-
-function start_mixer () {
- # ALSA
- if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ]; then
- # is ALSA already configured ?
- if [[ ! -r /etc/asound.state ]]; then
- # provide decent default sound level for alsa drivers
- if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
- MIXER_SETTINGS=/root/tmp/asound.state_tmp
- alsactl -f $MIXER_SETTINGS store
- # set some sane default volume and unmute needed channels:
- /usr/bin/alsa_default.pl $MIXER_SETTINGS
- action "Setting mixer settings" alsactl -f $MIXER_SETTINGS restore
- rm -f $MIXER_SETTINGS
- return 0
- fi
- # if we've not alsa-utils, we'll fallback on OSS initialization below
- else
- # Not first boot:
- # Done by alsa service but only if sound service is not
- # enabled (hance this code path).
- # We'll merge in back aksa service once mdk9.2 is released.
- # [but we'll still handle both aumix & alsactl in order
- # to manage packages removing / driver switch]
- action "Loading mixer settings" /usr/sbin/alsactl restore
- return 0
- fi
- fi
- # OSS
- if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && \
- [ "$retval" -eq 0 ] && [ -x /usr/bin/aumix ];then
- if [ ! -r /etc/.aumixrc ];then
- action "Setting mixer settings" /usr/bin/aumix -v80 -w80 -c80
- else
- action "Loading mixer settings" /usr/bin/aumix -f /etc/.aumixrc -L
- fi
- fi
-}
-
-function stop_mixer () {
- if [ -d /proc/asound ] && [ -x /usr/sbin/alsactl ];then
- # done by alsa service (to merge back after mdk9.2 release)
- #action "Saving mixer settings" /usr/sbin/alsactl store
- return 0;
- fi
- if egrep -q '(sparcaudio|sound)' /proc/devices 2>/dev/null && [ -x /usr/bin/aumix ];then
- action "Saving mixer settings" /usr/bin/aumix -f /etc/.aumixrc -S
- fi
-}
-
-function module () {
- opt=""
- phrase=$1
- alias=$2
- [ -n "$3" ] && opt="-r"
- module=`/sbin/modprobe -c | egrep -s "^alias( |\t)+"$alias"( |\t)+" | awk '{ print $3 }'`
- if [ -n "$module" ] && [ "$module" != "off" ];then
- action "$phrase ($module)" modprobe "$opt" $module
- return $?
- fi
-}
-
-case $1 in
- start)
- retval=0
- if [ ! -d /proc/asound ];then
- module "Loading sound module" sound || retval=1
- /sbin/modprobe -c | awk '/^((alias)|(probe)) +sound-slot-[0-9]/ {print $2}' | ( \
- while read line; do
- [[ $line = snd-card-* ]] && continue #we do it via alsa script
- module "Loading sound module" $line || retval=1
- done
- )
- module "Loading midi module" midi
- fi
- start_mixer;
- touch /var/lock/subsys/sound
- ;;
- stop)
- # i should have the same semantic of alsa script than oss script,
- # but i do not :-(, patches welcome.
- stop_mixer;
- rm -f /var/lock/subsys/sound
- ;;
- status)
- if egrep -q '(sparcaudio|sound)' /proc/devices;then
- gprintf "Sound loaded"
- echo
- fi
- ;;
- reload)
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: %s\n" "$(basename $0) {start|stop|restart|status}"
- exit 0
-esac
-
-sysctl -n -w kernel.printk=$PKLVL
-exit 0
diff --git a/move/tree/startkde_move b/move/tree/startkde_move
deleted file mode 100755
index a455ee580..000000000
--- a/move/tree/startkde_move
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-#- exit cleanly on SIGUSR1, so that our init can see a clean shutdown and automatically reboot
-reboot () {
- exit 0
-}
-trap 'reboot' SIGUSR1
-
-while true; do
- wait4x || exit 1
- xwait -permanent &
- xdim=`xdpyinfo | perl -ne 'print $1 if /dimensions:\s*(\d+)/'`
- qiv --root /image/move/BOOT-$xdim-MOVE.jpg
- /etc/X11/xdm/Xsession KDE #- call it with KDE parameter to keep background image
- sudo killall X
- sleep 2
-done
diff --git a/move/tree/sudoers b/move/tree/sudoers
deleted file mode 100644
index 49615de98..000000000
--- a/move/tree/sudoers
+++ /dev/null
@@ -1 +0,0 @@
-ALL ALL = NOPASSWD: ALL
diff --git a/move/tree/wait4x b/move/tree/wait4x
deleted file mode 100755
index a3158f1bd..000000000
--- a/move/tree/wait4x
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-use lib qw(/usr/lib/libDrakX);
-use xf86misc::main;
-
-my $nb = 0;
-$| = 1;
-print "waiting for X";
-foreach (1..30) {
- print ".";
- sleep 1;
- print("no X server :(\n"), exit 1 if !fuzzy_pidofs(qr/\bX_move\b/);
- $nb++ if xf86misc::main::Xtest(':0');
- if ($nb > 2) { #- one succeeded test is not enough :-(
- print "found\n";
- exit 0;
- }
-}
-print "not found\n";
-exit 1;
diff --git a/move/xwait.c b/move/xwait.c
deleted file mode 100644
index 07a693514..000000000
--- a/move/xwait.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <stdlib.h>
-#include <X11/Xlib.h>
-
-int main(int argc, char **argv) {
- int permanent = argc > 1 && !strcmp(argv[1], "-permanent");
- Display *display = XOpenDisplay(NULL);
-
- if (display) {
- XEvent event;
-
- XSelectInput(display, DefaultRootWindow(display), SubstructureNotifyMask);
- do {
- XNextEvent(display, &event);
- } while (event.type != CreateNotify || permanent);
- XCloseDisplay(display);
- }
-
- exit(display == NULL);
-}
diff --git a/perl-install/.cvsignore b/perl-install/.cvsignore
deleted file mode 100644
index a75f8c73b..000000000
--- a/perl-install/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.*.sw?
-.perl_checker.cache
-debug.log
-auto
-t.pl
-*.flog
diff --git a/perl-install/.perl_checker b/perl-install/.perl_checker
deleted file mode 100644
index 72ce24fd0..000000000
--- a/perl-install/.perl_checker
+++ /dev/null
@@ -1,18 +0,0 @@
-encoding
-Libconf
-Digest::MD5
-Gtk2::Gdk::Keysyms
-Gtk2::Pango
-Gtk2::SimpleList
-IO::Socket::INET
-handle_configs
-Libconf::Templates::Generic::KeyValueSections
-printer::cups
-printer::hpoj
-printer::main
-printer::printerdrake
-scanner
-move
-utf8
-URPM::Build
-packdrake
diff --git a/perl-install/ChangeLog b/perl-install/ChangeLog
deleted file mode 100644
index 56579f25c..000000000
--- a/perl-install/ChangeLog
+++ /dev/null
@@ -1,78833 +0,0 @@
-2005/05/22 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated simplified Chinese translation.
-
-2005/05/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * Xconfig/card.pm: ensure that explanations go into /var/log/explanations
- is standalone
- mode (log::explanations() just calls log::l() at install time)
- (libgl_config) only run ldconfig if needed (aka only if GL config was
- altered)
-
- * share/po/help-zh_CN.pot, share/po/bn.po, share/po/ms.po, share/po/sk.po,
- share/po/gl.po, share/po/pt_BR.po, share/po/th.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/be.po, share/po/pa_IN.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/da.po,
- share/po/ca.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/help-ru.pot, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sc.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/help-de.pot, share/po/mn.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/help-it.pot, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/hi.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/nl.po, share/po/help-fr.pot, share/po/tl.po, share/po/de.po,
- share/po/help-es.pot, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: undo breakage
-
- * drakxtools.spec: 10.3-0.16mdk
-
- * interactive/newt.pm: fix canceling managment in text mode
-
- * share/rpmsrate: us428control usx2yloader are for devices managed by
- snd-usb-usx2y and not by snd-usb-audio
- install synaptics related packages early in the install process
- ensure sound utils got installed
- install bluez-utils only if a bluetooth device is plugged
- install joystick utils if a joystick is detected
- install kradio qtradio with KDE and gnomeradio with GNOME if a radio
- card is
- present
- do not install eroaster under KDE & GNOME since they've their own native
- burner program
- adiusbadsl has been replaced by eagle-usb in the pcitable in november
- 2004
- automatically install wireless-tools if there's a wireless card
- remove references to perl-GTK-Glade, perl-GTK-GLArea and perl-GTK-Gnome
- since
- they're obsoleted and not used by any core package
- ispell packages are gone; let's replace them by aspell ones
-
-2005/05/20 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/help-zh_CN.pot, share/po/bn.po, share/po/ms.po, share/po/sk.po,
- share/po/gl.po, share/po/pt_BR.po, share/po/th.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, install_steps_interactive.pm,
- share/po/be.po, share/po/pa_IN.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, install_steps_newt.pm, share/po/da.po, share/po/ca.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/help-ru.pot, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/sc.po,
- install_steps.pm, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/help-de.pot, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/help-it.pot, share/po/tg.po,
- install_steps_gtk.pm, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, bootloader.pm, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/nl.po, share/po/help-fr.pot,
- share/po/tl.po, share/po/de.po, share/po/help-es.pot, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/uz@Latn.po:
- s/Mandrivalinux/Mandriva Linux/
-
-2005/05/20 Pixel <pixel at mandrakesoft.com>
-
- * share/list.xml, commands.pm, share/aliases, Makefile, share/symlinks:
- keep binaries in their "standard" binary dir instead of moving
- everything to /usr/bin
- (it used to be in /usr/bin when the stage1 was not exited)
-
- * modules.pm: keep binaries in their "standard" binary dir instead of
- moving everything to /usr/bin
- (it used to be in /usr/bin when the stage1 was not exited)
- fix titi sux
-
- * install_any.pm: propagate postInstall and postInstallNonRooted in new
- auto_install.cfg.pl
-
-2005/05/20 willysr
-
- * share/po/id.po: Small update
- Updated
-
-2005/05/19 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated simplified Chinese translation
-
-2005/05/19 Pixel <pixel at mandrakesoft.com>
-
- * rescue/aliases, rescue/list.ia64, rescue/list, rescue/list.alpha,
- rescue/list.ppc, rescue/list.xml, rescue/list.sparc, rescue/list.x86_64,
- rescue/list.i386, rescue/make_rescue_img: use install-xml-file-list
-
- * share/list.xml, share/aliases, list.sparc:
- - insmod_ is now a symlink to insmod-25
- - handle explictly insmod, modinfo and rmmod
-
- * rescue/restore_ms_boot: rewrite using DrakX modules
-
- * bootloader.pm:
- - list the known bootloaders without checking the availability of the
- binary (useful when we don't have the root partition mounted, eg in
- restore_ms_boot)
- - tell kdm which is the installed bootloader
-
- * tools/simplify-drakx-modules: also remove modules ending with __END__
-
- * Makefile: revert wrongly committed temporary change
- - insmod_ is now a symlink to insmod-25
- - handle explictly insmod, modinfo and rmmod
-
- * tools/install-xml-file-list: many changes for use with rescue list
-
-2005/05/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_detect) simplify again
- (adsl_detect) explain
- (adsl_detect) detect all ADSL modems of each kind (though drakconnect
- is able to configure only one...)
- (adsl_detect) typo fix
- (adsl_detect) detect more ADSL USB modems
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/da.po, share/po/ca.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sc.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/nl.po, share/po/tl.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/uz@Latn.po: update cataglog
-
- * standalone/service_harddrake: uninstall DVB modules if needed
-
- * harddrake/data.pm: really list ATM devices
- fix DVB configurator
- list tablets and touchscreens in their own category
- fix detecting joysticks
- add a DVB class
- - simplify through modules::probe_category()
- - ensure modules.pm is loaded since we used it for quite some time
- list ATM, Bluetooth, WAN, USB audio devices in their own categories
- split the old joystick category into gameport (aka joystick controllers)
- and
- joystick (real joysticks devices)
-
- * standalone/harddrake2 (simple_read_rpmsrate) add support for HW_CAT
- keyword that enable to match
- a category from list_modules.pm
-
- * share/rpmsrate: install proper softwares for DVB
- kill another module list duplication thanks to the new HW_CAT keyword.
- use the HW_CAT to stop copying (twice!) and syncing bluetooth driver
- list from
- list_modules.pm
-
- * pkgs.pm (read_rpmsrate) add support for HW_CAT keyword that enable to
- match
- a category from list_modules.pm
-
- * drakxtools.spec: real 10.3-0.15mdk
- 10.3-0.15mdk
- main subpackage lacked update-menus calls since net_applet menu entry
- was added
- mandrakesoft => mandriva switch
- 10.3-0.14mdk
-
- * share/po/br.po, share/po/fr.po: update
- update cataglog
-
- * mouse.pm (detect) handle quite's more tablets and touchscreens at
- install time
-
-2005/05/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm (selectCountry) only speak about other countries if needed
-
- * interactive/newt.pm: handle 'wizcancel'
-
-2005/05/17 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/05/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/modem.pm: keep # and * characters in phone number (#16031)
-
- * network/netconnect.pm: use iwpriv for WPA with rt2x00 drivers (they
- don't plan to support wpa_supplicant)
-
- * standalone/drakroam: really write waproamd config files
- fix another potential security bug (#16020)
-
-2005/05/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakroam: help testing
- really fix permissions
- fix perms on /etc/wlandetect.conf (#16020)
- forward fix perms on /etc/wlandetect.conf (#16020)
-
- * drakxtools.spec: 10.3-0.13mdk
-
-2005/05/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: add the "Create new theme" button back
- allow to choose between "text only", "verbose" and "silent" bootsplash
- modes
-
-2005/05/16 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Don't translate media types for config (#15437)
- Don't translate media types for config (#15437)
-
-2005/05/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * mygtk2.pm (_text_insert) append option was ignored when using simplified
- API
-
- * drakxtools.spec: 10.3-0.12mdk
-
-2005/05/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: DVB support
-
- * network/netconnect.pm: DVB support
- hide DVB for now
-
-2005/05/13 Pixel <pixel at mandrakesoft.com>
-
- * c/stuff.xs.pl: add commented line to help debugging pci_probe
-
- * share/list.xml, tools/install-xml-file-list: allow makefile like
- variables
-
-2005/05/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) do not detect ms joystick as UPS (#15930)
-
-2005/05/12 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: reorder drakconnect first screen (to please our
- flowered bearded boss)
-
- * standalone/service_harddrake: fix PCMCIA controller reconfiguration
- (#15742)
- fix PCMCIA controller reconfiguration (#15742)
-
-2005/05/12 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: default to "Custom" when group fileshare exists (bugzilla
- #15917)
-
-2005/05/12 Till Kamppeter <till at mandrakesoft.com>
-
- * install_steps.pm, share/rpmsrate:
- - Gimp-Print was renamed to Gutenprint, adapted printerdrake/DrakX
- appropriately.
-
- * scanner.pm, standalone/printerdrake:
- - Removed some remaining "Mandrake"s in printerdrake and scannerdrake.
-
- * printer/printerdrake.pm:
- - Let Gutenprint GIMP plug-in be installed by printerdrake when GIMP
- is installed.
-
- * printer/data.pm:
- - Let Gutenprint GIMP plug-in be installed by printerdrake when GIMP
- is installed.
- - Gimp-Print was renamed to Gutenprint, adapted printerdrake/DrakX
- appropriately.
-
-2005/05/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.3-0.11mdk
- one more fix in 10.2-24.102.2mdk
- 10.2-24.102.2mdk
-
- * standalone/harddrake2:
- - clean embedding stuff
- - center wait message on parent
-
- * detect_devices.pm (getUPS) fix detecting Wingman gamepad as UPS (#15750)
- (probeSerialDevices) really fix serial controllers detection (#15457)
- (probeSerialDevices) fix serial controllers detection (#15457)
- (probeSerialDevices) forward fix for serial controllers detection
- (#15457)
-
- * harddrake/data.pm: forward fix SATA & hw RAID detection by detecting
- them pior to PATA detection
-
- * share/po/br.po: update
-
-2005/05/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/vi.po, share/po/sv.po: updated Swedish and
- Vietnamese file;
- corrected references to old name in Portuguese file
-
-2005/05/11 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Drop webdav support (can be mounted as a normal
- net filesystem these days)
- Remove translation on "tape" media selection (#15437)
- Rework .backupignore handling (#12352)
-
-2005/05/10 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/05/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/draksplash2: move rectangle2xywh(), distance(), farthest()
- and nearest() from draksplash2 to bootsplash module, create
- xywh2rectangle()
-
- * ugtk2.pm: shrink real_window
-
- * bootsplash.pm: really get default vga mode
- move rectangle2xywh(), distance(), farthest() and nearest() from
- draksplash2 to bootsplash module, create xywh2rectangle()
-
- * standalone/draksplash: shrink preview window on resolution change
- handle both silent and verbose images
- allow to modify progress bar and console box by dragging the mouse
-
-2005/05/10 Pixel <pixel at mandrakesoft.com>
-
- * share/list.i386, share/list.sparc, lang.pm, share/list.ia64,
- tools/install-xml-file-list, share/list.alpha, share/list.xml,
- share/list, share/list.x86_64, Makefile, share/list.ppc: create
- install-xml-file-list and use it to replace share/list and
- share/list.ARCH with share/list.xml
-
- * rescue/make_rescue_img:
- - handle multiple data dirs
- - choose a free data dir if the given one already exists
- fix (for list_modules.pm)
-
- * Xconfig/monitor.pm (probe_using_X): add missing chomp_
-
- * rescue/make_partimage_save_rest_all, rescue/partimage_whole_disk:
- - handle multiple data dirs
- - choose a free data dir if the given one already exists
-
-2005/05/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm: add support for iiimf (UTUMI Hirosi <utuhiro78@yahoo.co.jp>)
-
- * drakxtools.spec: real 10.3-0.10mdk
- 10.3-0.10mdk
-
- * share/rpmsrate: install cpqarrayd on Compaq Smart Array controllers
-
-2005/05/09 Funda Wang <fundawang at linux.net.cn>
-
- * share/rpmsrate, lang.pm: Drop uim-anthy for ja locale, because the great
- improvements of scim-anthy.
- http://archives.mandrivalinux.com/cooker-i18n/2005-04/msg00052.php
-
-2005/05/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/draksplash: remove spurious characters
- use a separate window for image previews, use a notebook to split
- silent/verbose/console settings
- fix layout, update scale factors when the theme name is changed too
- use default values for scale settings and draw a cross inside the text
- box
-
- * standalone/drakboot: use bootsplash::get_framebuffer_resolution
-
- * bootsplash.pm: use default jpeg image path in config file for both
- silent and verbose images
- write bootsplash v3 configuration files (progress bar still missing)
- force the exact image size when writing a theme
- add get_framebuffer_resolution and create_path
- fix typos
-
-2005/05/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.3-0.9mdk
- 10.2-24.102.1mdk
-
- * standalone/draksplash: better use gtkpack__() rather than gtkadd() when
- adding multiple widgets
-
-2005/05/08 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/05/07 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: another small typo fixed in slovak translation
- updated slovak translation
-
-2005/05/06 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/Makefile.common, mdk-stage1/Makefile,
- mdk-stage1/mar/Makefile: use installed dietlibc, not our forked cvs
- version
-
-2005/05/06 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/Makefile, mdk-stage1/config-stage1.h,
- mdk-stage1/newt/newt.c, mdk-stage1/newt/button.c,
- mdk-stage1/rp-pppoe/src/common.c, mdk-stage1/newt/entry.c,
- mdk-stage1/dhcp.c, mdk-stage1/newt/checkbox.c, mdk-stage1/network.c,
- mdk-stage1/directory.c, mdk-stage1/ppp/pppd/Makefile: Stage 1
- compilation fixes for gcc 4.0 :
- * more casts signed<->unsigned types
- * make choose_iso_in_directory()'s return type "void"
- * change order of .h files in network.c so strndup is included correctly
- * newt: initialize some variables properly
- * compile pcmcia and ppp with -Wno-deprecated-declarations, since they
- use
- deprecated types such as u_int32_t
-
- * install2.pm: Add missing brace
-
- * docs/HACKING: Document that dietlibc-devel is now required to build gi
-
- * resize_fat/c_rewritten.xs: gcc 4.0 was choking on lvalues of
- unpredictable type.
-
- * mdk-stage1/Makefile: Fix path of librpc.a now that we use the system's
- dietlibc
-
-2005/05/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/br.po: small typo error
-
-2005/05/05 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Predict NBI disk space usage and check.
- Catch failed NBI creation. (#13902)
- Catch failed dhcpd.conf creation (#13943)
- Misc small bug fixes.
-
-2005/05/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/draksplash: preview theme in real time, cleanups
-
- * bootsplash.pm: fix theme creation
-
- * network/netconnect.pm: remove another useless step
- ask wireless settings before boot protocol selection
- remove useless warning in install, we never override configuration
- (#10827)
-
-2005/05/04 Pixel <pixel at mandrakesoft.com>
-
- * rescue/guessmounts: don't try to mount ntfs
-
- * bootloader.pm: lilo and grub are launched chrooted, so look for them in
- $::prefix
- (it worked during install since PATH contains /mnt/sbin and the like)
-
- * rescue/partimage_whole_disk: run_program needs a proper HOME
-
-2005/05/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * rescue/make_rescue_img: Sometimes this tries to copy a directory
-
-2005/05/03 mareklaane
-
- * share/po/et.po: Estonian translation updated.
-
-2005/05/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * install2.pm: remove obsolete code (most of these steps are anyway
- skipped in upgrade mode)
-
- * tools/patch_pcmcia_config.pl: ds has been renamed pcmcia in 2.6 kernels
-
- * standalone/drakboot, bootsplash.pm: new theme creation functions
-
- * standalone/draksplash: perl_checker fixes, use bool2yesno
- remove ugly dec2hex
-
-2005/05/03 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2005/05/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Clarify quota message, optional delete old
- backups (#15066).
- Optional mail "From" address (#15293).
- Fix automagic addition of /root to backups when not desired.
-
-2005/05/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot: do not garbage the console on 'wizcancel'
-
-2005/05/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * detect_devices.pm, network/ethernet.pm, network/ndiswrapper.pm: fix USB
- devices detection for ndiswrapper
-
-2005/05/02 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: fix displaying "Number of logical extents: %d"
- - allow resizing ext3 LV if not mounted
- - allow resizing reiserfs LV even if not mounted
-
-2005/05/02 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Update for new etherboot
-
-2005/05/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/localedrake: add comment
-
- * standalone/drakperm, standalone/harddrake2, standalone/printerdrake,
- standalone/logdrake, standalone/draksec, standalone/drakfloppy,
- standalone/drakfont, standalone/drakups: embedding cleanups resulting in
- reusing main window icon in sub dialogs
-
- * harddrake/data.pm: fix SATA & hw RAID detection by detecting them pior
- to PATA detection
-
- * standalone/drakboot: fix boot style layout
- embedding cleanups resulting in reusing main window icon in sub dialogs
-
- * drakxtools.spec: 10.3-0.8mdk
-
- * share/po/br.po: update
-
-2005/05/01 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/30 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
- melo + jorge
-
-2005/04/29 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Install epiphany-extensions when installing epiphany
-
-2005/04/29 huftis
-
- * share/po/nn.po: Translated more strings.
-
-2005/04/29 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/29 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- indexhtml/po/da.po soft/urpmi/po/da.po
- gi/perl-install/share/po/da.po
-
-2005/04/29 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: typo/perl_checker fixes
- use new bootsplash module, really split autologin and bootsplash stuff
- kill unneeded hash
- perl_checker fixes
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: detect tokenring and wireless
- cards in stage1
-
- * network/tools.pm, network/test.pm: use www.mandriva.com to test
- connection
-
- * standalone/drakroam: exit and warn when no wireless interface is found
- (#15244)
- do not write blank ESSID
-
- * bootsplash.pm: initial bootsplash module
-
-2005/04/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.3-0.7mdk
-
-2005/04/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: configure pppoe connections in a ppp peer file
-
-2005/04/28 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: if one prefer using "Modes" instead of "Virtual", keep
- it as is
-
-2005/04/27 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, network/drakfirewall.pm, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/sc.po,
- share/po/br.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/uk.po, share/po/mn.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/ta.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- Maybe the last Mandrake->Mandriva replacement.
-
-2005/04/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: display VPI/VCI values in decimal
- update ATM_ADDR after with VPI/VCI values
-
- * network/adsl.pm: reindent
- don't write /etc/ppp/options anymore, adjust options in peer files
-
- * share/rpmsrate: pptp-adsl is obsolete, prefer pptp-linux
-
-2005/04/27 Pixel <pixel at mandrakesoft.com>
-
- * rescue/partimage_whole_disk: after setting geometry H and S, we must
- re-compute C
- ensure we use the same geometry as used when saving
-
- * common.pm: fix mandrake_release() when called with a prefix
- allow using mandrake_release() with a prefix
-
- * rescue/install_bootloader: use module bootloader.pm to handle more
- bootloaders (esp. grub)
-
- * bootloader.pm:
- - create config_files() out of update_for_renumbered_partitions()
- - create main_method_choices() out of read()
- - create configured_main_methods() for rescue install_bootloader
- - rework update_for_renumbered_partitions()
- create install_raw_grub() and install_raw_lilo()
-
-2005/04/26 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: always initialize proxy settings
- fix typo
-
- * mdk-stage1/adsl.c: detect IP address from DSL connection
-
- * mdk-stage1/dns.c: fix dns resolution for DSL connections
- enhance logging again, re-indent
- fix typo (me sux)
- enhance logging
-
-2005/04/26 Pixel <pixel at mandrakesoft.com>
-
- * mygtk2.pm: don't use ->set_uposition anymore, use ->move instead (as
- suggested on gtk-perl mailing list)
-
- * Makefile: remove obsolete change (C_RPM and C_DRAKX are not used in
- c/stuff anymore)
- start simplifying "make stage2"
-
-2005/04/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) do not detect IR devices as UPSes (#15495)
-
- * share/po/br.po: add missing tags
- update
-
-2005/04/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * standalone/drakxtv: corrected url
-
- * share/po/cy.po: updated Welsh file
-
- * share/po/it.po, share/po/ms.po, share/po/es.po: updated Italian and
- Spanish files
-
-2005/04/25 Pixel <pixel at mandrakesoft.com>
-
- * rescue/guessmounts: rewrite using gi/perl-install modules
-
- * bootloader.pm: using c::rpmvercmp is cleaner
- fix comparing kernel version greater than 6.8
-
-2005/04/25 sharuzzaman
-
- * share/po/ms.po: Updated Malay translation
-
-2005/04/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfont: bump copyrigth notice
- list myself
- damien is no more working for us
-
- * drakxtools.spec: add bug reference in 10.3-0.6mdk's changelog
- 10.3-0.6mdk
-
- * share/po/br.po: update
- sync with copyright bumping
-
- * standalone/drakfirewall, standalone/logdrake, standalone/drakpxe,
- standalone/finish-install.xsetup, standalone/drakvpn,
- standalone/drakboot, standalone/drakTermServ, standalone/net_monitor,
- standalone/drakbackup, standalone/listsupportedprinters,
- standalone/printerdrake, standalone/fileshareset, standalone/drakedm,
- standalone/drakroam, standalone/drakconnect, standalone/drakhelp,
- standalone/XFdrake, standalone/drakbug, standalone/autosetupprintqueues,
- standalone/drakupdate_fstab, standalone/draksound, standalone/drakxtv,
- standalone/draksec, standalone/drakautoinst, standalone/drakproxy,
- standalone/diskdrake, standalone/drakfloppy, standalone/drakgw,
- standalone/scannerdrake: bump copyrigth notice
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sc.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: sync with copyright bumping
-
-2005/04/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: handle errors in wireless packages installation,
- simplify
- allow to disable WPA even if no key is used
- fix WPA key
-
- * network/wireless.pm: handle errors in wireless packages installation,
- simplify
- fix WPA key
-
-2005/04/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * standalone/harddrake2, standalone/drakfont: mandrakesoft.com ->
- mandriva.com
-
- * share/po/ms.po, share/po/pt_BR.po, share/po/th.po, share/po/be.po,
- share/po/pa_IN.po, share/po/ko.po, share/po/sr.po, share/po/pl.po,
- share/po/ca.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nn.po, share/po/tr.po,
- share/po/ga.po, share/po/am.po, share/po/tg.po, share/po/fur.po,
- share/po/ta.po, share/po/fr.po, share/po/tl.po, share/po/uz@Latn.po:
- various Mandrake -> Mandriva changes
- updated po files
-
- * standalone/draksound: s/www.linux-mandrake.com/www.mandrivalinux.com/
-
- * share/po/zh_CN.po: more Mandrake -> Mandriva changes
- various Mandrake -> Mandriva changes
-
- * standalone.pm: mandrakelinux -> Mandriva Linux
-
- * share/advertising/25.pl, standalone/logdrake, share/advertising/02.pl,
- standalone/net_monitor, share/advertising/27.pl,
- network/drakfirewall.pm, share/advertising/08.pl, standalone/drakedm,
- share/advertising/30.pl, share/advertising/10.pl,
- share/advertising/18.pl, standalone/drakconnect, standalone/drakhelp,
- share/advertising/01.pl, standalone/drakbug, network/adsl.pm,
- printer/printerdrake.pm, help.pm, share/advertising/29.pl,
- share/advertising/07.pl, share/advertising/09.pl,
- share/advertising/04.pl, share/advertising/28.pl,
- install_interactive.pm, share/advertising/26.pl, any.pm,
- share/advertising/06.pl, share/advertising/03.pl, standalone/net_applet,
- share/advertising/11.pl, share/advertising/05.pl,
- standalone/scannerdrake: s/Mandrivalinux/Mandriva Linux/
-
- * install_messages.pm: s/www.mandrakelinux.com/www.mandrivalinux.com/
- s/Mandrivalinux/Mandriva Linux/
-
- * share/po/bn.po, share/po/gl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/fi.po, share/po/he.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/br.po, share/po/mt.po,
- share/po/mn.po, share/po/lt.po, share/po/cy.po, share/po/bs.po,
- share/po/mk.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, share/po/nl.po, share/po/de.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po: more Mandrake ->
- Mandriva changes
- various Mandrake -> Mandriva changes
- updated po files
-
- * share/po/sk.po, share/po/DrakX.pot, share/po/sv.po, share/po/zh_TW.po,
- share/po/sc.po, share/po/ru.po, share/po/sl.po, share/po/uk.po,
- share/po/wa.po, share/po/pt.po, share/po/vi.po: various Mandrake ->
- Mandriva changes
-
-2005/04/23 willysr
-
- * share/po/id.po: Updated
-
-2005/04/22 willysr
-
- * share/po/id.po: Updated
-
-2005/04/21 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/21 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/wireless.c: set SSID after all other settings, improve text,
- fix cast
-
- * standalone/drakroam: fix Signal Quality parsing (and re-indent)
-
- * mdk-stage1/dhcp.c: support DHCP over Wireless, Token Ring (great),
- Firewire, you name it
- borrow some comments from pump
-
- * mdk-stage1/probing.c: use /proc/net/dev to detect network interfaces,
- instead of testing a limited set of interface names
-
-2005/04/21 Pixel <pixel at mandrakesoft.com>
-
- * rescue/drvinst: use detect_devices and simplify
-
- * Makefile: use simplify-drakx-modules
-
- * rescue/make_rescue_img: use get-needed-drakx-modules to handle perl
- scripts using DrakX modules
-
- * rescue/list.i386: dmidecode is useful
-
- * tools/simplify-drakx-modules, tools/get-needed-drakx-modules: add some
- scripts used in perl-install/Makefile and rescue/make_rescue_img
-
- * common.pm, install_any.pm: create common::release_file() and use it
-
- * fs/type.pm: perl_checker fix
- create true_local_fs_types() out of isTrueLocalFS()
-
- * log.pm: ensure the log is flushed ASAP when using a local file
-
-2005/04/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: switch from MandrakeSoft to Mandriva
- update
- update
- update
- update string for new drakroam
-
- * share/advertising/25.pl, install_steps_interactive.pm,
- standalone/finish-install.xsetup, share/advertising/27.pl,
- share/po/help-ru.pot, share/advertising/08.pl, share/advertising/10.pl,
- share/advertising/18.pl, share/compssUsers.pl, network/adsl.pm, help.pm,
- install_steps.pm, share/advertising/29.pl, share/advertising/07.pl,
- share/advertising/09.pl, share/advertising/13-b.pl,
- share/po/help-de.pot, share/advertising/04.pl, crypto.pm,
- network/test.pm, install_interactive.pm, share/advertising/26.pl,
- standalone/net_applet, bootloader.pm, share/advertising/05.pl,
- share/po/help-fr.pot, share/po/help-es.pot, share/po/help-zh_CN.pot,
- share/advertising/02.pl, network/drakfirewall.pm, install_steps_newt.pm,
- share/advertising/30.pl, share/advertising/01.pl,
- share/advertising/28.pl, share/po/help-it.pot, any.pm,
- install_steps_gtk.pm, share/advertising/03.pl, share/advertising/06.pl,
- share/advertising/13-a.pl, install_messages.pm,
- Xconfig/resolution_and_depth.pm, share/advertising/11.pl: switch from
- MandrakeSoft to Mandriva
-
- * standalone/scannerdrake: switch from MandrakeSoft to Mandriva in
- scannerdrake & printerdrake
- switch from MandrakeSoft to Mandriva in copyright notices
-
- * standalone/drakbackup: switch from MandrakeSoft to Mandriva in copyright
- notices
- improve layout
- (filedialog_generic) switch to gtk+-2.6's new file selector
-
- * standalone/drakboot, standalone.pm, standalone/drakedm,
- standalone/drakhelp, standalone/logdrake, standalone/net_monitor,
- standalone/drakconnect, standalone/drakbug: switch from MandrakeSoft to
- Mandriva
- switch from MandrakeSoft to Mandriva in copyright notices
-
- * standalone/drakfirewall, standalone/drakpxe, standalone/drakvpn,
- standalone/drakTermServ, standalone/listsupportedprinters,
- standalone/printerdrake, standalone/fileshareset, standalone/XFdrake,
- standalone/drakupdate_fstab, scanner.pm, standalone/drakproxy,
- standalone/drakfloppy, mouse.pm, standalone/autosetupprintqueues,
- standalone/draksound, standalone/drakxtv, standalone/drakautoinst,
- standalone/diskdrake, standalone/drakgw: switch from MandrakeSoft to
- Mandriva in copyright notices
-
- * printer/printerdrake.pm: switch from MandrakeSoft to Mandriva
- switch from MandrakeSoft to Mandriva in scannerdrake & printerdrake
-
- * standalone/draksplash: switch to gtk+-2.6's new file selector
-
- * standalone/drakperm: perl_checker cleanups
- (row_setting_dialog) set dialog's title (usability bug)
-
- * share/po/af.po: fix doble messages
- switch from MandrakeSoft to Mandriva
- update
- sync LAN string
- update string for new drakroam
-
- * share/po/Makefile: remove useless merge2 rule
-
- * share/po/ja.po, share/po/sv.po, share/po/fi.po, share/po/ca.po,
- share/po/eu.po, share/po/id.po, share/po/mt.po, share/po/uk.po,
- share/po/tg.po, share/po/pt.po, share/po/vi.po, share/po/tl.po,
- share/po/gl.po, share/po/sk.po, share/po/pl.po, share/po/da.po,
- share/po/ar.po, share/po/nb.po, share/po/it.po, share/po/ru.po,
- share/po/nl.po: switch from MandrakeSoft to Mandriva
- update
- sync LAN string
- update string for new drakroam
-
- * share/po/fr.po, share/po/cy.po: switch from MandrakeSoft to Mandriva
- update
- update
- sync LAN string
- update string for new drakroam
-
- * standalone/drakfont: switch from MandrakeSoft to Mandriva in copyright
- notices
- inline useless create_fontsel()
-
- * network/netconnect.pm: switch from MandrakeSoft to Mandriva
- rename "ethernet connection" as "LAN connection" like anywhere since
- we're going to support tokenring and not just LAN (what's more, these
- steps are whered with wireless connections which have nothing to do
- with ethernet....)
-
- * drakxtools.spec: 10.3-0.5mdk
- 10.3-0.4mdk
- 10.3-0.3mdk
-
- * standalone/drakroam (ConnectNow) simplify
- (ConnectNow) simplify
- (UpdateStatus) improve layout
-
- * share/po/ms.po, share/po/pt_BR.po, share/po/et.po, share/po/sr.po,
- share/po/ltg.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/es.po, share/po/lv.po, share/po/ga.po, share/po/lt.po,
- share/po/mk.po, share/po/fur.po, share/po/de.po, share/po/bg.po,
- share/po/el.po, share/po/uz@Latn.po, share/po/bn.po, share/po/th.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/DrakX.pot,
- share/po/ko.po, share/po/he.po, share/po/ky.po, share/po/zh_CN.po,
- share/po/sq.po, share/po/sr@Latn.po, share/po/hu.po, share/po/fa.po,
- share/po/sc.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mn.po, share/po/am.po, share/po/bs.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/az.po, share/po/ta.po,
- share/po/eo.po, share/po/cs.po: switch from MandrakeSoft to Mandriva
- update
- update string for new drakroam
-
-2005/04/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/ethernet.pm: we do want to use sysfs if ethtool fails
-
- * mdk-stage1/Makefile, mdk-stage1/network.c, mdk-stage1/wireless.h:
- initial wireless support (needs ESSID, and optionally a WEP key)
-
- * network/netconnect.pm: allow to choose the wireless encryption mode
- between "None", "Open WEP", "Restricted WEP" and "WPA Pre-Shared Key"
- move ndiswrapper stuff in network::ndiswrapper
- unload ndiswrapper first so that the newly installed .inf files will be
- read
- redetect interfaces after ndiswrapper setup (so that the ndiswrapper
- module can be detected)
-
- * mdk-stage1/wireless.c: fix hex key parsing
- initial wireless support (needs ESSID, and optionally a WEP key)
-
- * install_any.pm: do not care about the ISO volume name if it doesn't end
- in -Disc\d+
- handle DVD ISO images too (so that they get added installed for urpmi)
-
- * network/wireless.pm, network/ndiswrapper.pm: allow to choose the
- wireless encryption mode between "None", "Open WEP", "Restricted WEP"
- and "WPA Pre-Shared Key"
- move ndiswrapper stuff in network::ndiswrapper
-
-2005/04/20 Pixel <pixel at mandrakesoft.com>
-
- * rescue/make_partimage_save_rest_all: add a check
-
-2005/04/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfont (font_choice) filter file list so that only fonts
- are displayed
- switch to gtk+-2.6's new file selector
-
- * network/ndiswrapper.pm (setup_device) move comment where it's
- appropriate
-
- * drakxtools.spec: 10.3-0.2mdk
-
-2005/04/19 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- indexhtml/po/da.po soft/drakstats/po/da.po
- soft/mdkonline/po/da.po gi/perl-install/share/po/da.po
-
-2005/04/19 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/ethernet.pm: fix typo
- fix Titi sux (we do want to use sysfs if ethtool fails)
- do not write zeroed MAC addresses in iftab, it confuses ifrename
-
- * standalone/drakroam: fix SSID listing
- fix SSID listing
-
- * network/tools.pm: move wireless stuff in wireless.pm
- do not crash if modprobe fails
- do not show empty ndiswrapper devices list
-
- * mouse.pm: fix simplification ..
- simplify again (Pixel)
- kill unused variable, simplify
- using same mouse for alternate_install should be useless
- remove it for xbox controller, thus making this option obsolete
- fix me sucks
- always set synaptics touchpad as secondary and don't list them in
- mousedrake
-
- * network/netconnect.pm: simplify
- fix ancient bug (Managed should be the default wireless mode, not
- Secondary) and simplify
- really use given encryption key
- network::wireless is needed for wireless configuration
- fix typo
- improve ndiswrapper driver configuration (allow to select driver, device
- and many errors handling)
- fix missing step
- move wireless stuff in wireless.pm
- do not show empty ndiswrapper devices list
- unload ndiswrapper first so that the newly installed .inf files will be
- read
-
- * network/wireless.pm: improve ndiswrapper driver configuration (allow to
- select driver, device and many errors handling)
- convert_key_for_wpa_supplicant is now in network::wireless
- move wireless stuff in wireless.pm
-
- * install_steps_gtk.pm: using same mouse for alternate_install should be
- useless
- remove it for xbox controller, thus making this option obsolete
-
- * network/network.pm: move wireless stuff in wireless.pm
-
-2005/04/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ky.po, share/po/de.po: updated Kirghiz file
-
-2005/04/19 Pixel <pixel at mandrakesoft.com>
-
- * rescue/partimage_whole_disk:
- - ".lst" makes the file hidden, use "lst" instead
- - default timeout is much too short
-
- * rescue/install_bootloader, rescue/guessmounts, rescue/drvinst: mandriva
- switch
-
- * Xconfig/resolution_and_depth.pm: suggest 1280x1024 instead of 1280x960
- which causes pbs
-
- * rescue/restore_ms_boot: update copyright
-
- * rescue/make_partimage_save_rest_all:
- - allow specifying something else than /data/box
- - acpi=ht by default
-
- * diskdrake/interactive.pm: fix comment
-
- * rescue/rescue-doc: switch to mandriva
-
- * rescue/lsparts: remove redundancy using gi/perl-install pms
- mandriva switch
-
-2005/04/19 sharuzzaman
-
- * share/po/ms.po: Updated Malay translation
-
-2005/04/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: increase network check timeout to lower the load
- remove useless assignments
-
- * network/netconnect.pm: clean includes
- merge wireless steps and move advanced settings in advanced mode
- (#15501)
- configure wpa driver in drakconnect, wpa_supplicant init script is
- dropped
-
- * mdk-stage1/config-stage1.h, mdk-stage1/network.c: move defines
-
- * network/tools.pm: replace to_bool(grep) call with any
-
- * mouse.pm: preselect synaptics touchpad if no external mouse is present
- use detect_devices::getSynapticsTouchpads() to detect touchpads
- always configure an universal mouse so that USB mices can be hotplugged
-
- * network/isdn.pm: remove useless includes
-
- * network/shorewall.pm: fix automatic net interface detection
- fix automatic net interface detection
-
- * network/network.pm: configure wpa driver in drakconnect, wpa_supplicant
- init script is dropped
-
- * detect_devices.pm: perl_checker fix
- space fix
- add getSynapticsTouchpads()
-
- * modules.pm: append evdev in modprobe.preload if a touchpad is detected
- use better laptop detection now that dmidecode is used
-
-2005/04/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: added/modified various keyboards on the list (for next
- update of xorg-x11)
-
- * share/po/be.po, share/po/bn.po, share/po/ms.po, share/po/ko.po,
- share/po/ro.po, share/po/pl.po, share/po/gl.po, share/po/he.po,
- share/po/cy.po, share/po/af.po, share/po/et.po, share/po/eo.po,
- share/po/hr.po, share/po/el.po, share/po/sq.po: updated Welsh file;
- fixed some menu errors
-
-2005/04/18 rstandtke
-
- * share/po/de.po: some fixes
-
-2005/04/16 huftis
-
- * share/po/nn.po: Translated a few strings.
-
-2005/04/15 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/config-stage1.h: new domain name
-
- * mdk-stage1/thirdparty.c: really try to list partitions on USB keys or
- hard disks
-
- * mdk-stage1/directory.c: enlarge directory list
-
-2005/04/15 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm, install_any.pm: Change the name of the directory
- where the rpms are copied
-
- * crypto.pm: Update the name of the update media added by the installer
-
-2005/04/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.3-0.1mdk
-
- * standalone/harddrake2: perl_checker cleanups
-
-2005/04/14 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: allow to modify METRIC settings in the wizard
-
-2005/04/14 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: When re-using the rpmsrate and compssUsers.pl
- from a supplementary media,
- always retrieve them locally in /tmp, instead of choosing the main
- install
- method (this wasn't working for http installs)
-
-2005/04/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix typo in drakxservices' description
-
- * share/po/br.po: update
- update
-
-2005/04/14 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: sync'ed with Arabeyes CVS
-
-2005/04/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakconnect: use get_interface_type() to decide if the wifi
- settings page should be displayed
-
- * network/tools.pm: consider a device as wifi even if it isn't plugged
- (useful in manage wizard)
-
-2005/04/13 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/raw.pm: create default_type() out of zero_MBR()
-
- * rescue/make_partimage_save_rest_all: fix typo
-
- * rescue/make_rescue_img, rescue/partimage_whole_disk: we now use script
- partimage_whole_disk around partimage
-
- * resize_fat/any.pm: remove old debug code
-
- * log.pm: cleanup and allow openLog() to force the log file
-
- * rescue/list.i386: add ntfsresize
-
- * rescue/tree/etc/rc.sysinit: mount /sys
-
-2005/04/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Remount CD1 if we cancel insertion of a supplementary CD
- Eject CD-Rom when installation is finished
-
- * install_steps.pm: Eject CD-Rom when installation is finished
-
-2005/04/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm (autologin) make autologin choice more user friendly (#4304)
-
- * drakxtools.spec: fix 10.2-16mdk's changelog
-
-2005/04/12 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm, detect_devices.pm, network/tools.pm,
- standalone/drakconnect: use sysfs as fallback to detect wireless
- interfaces (rt2x00/prism2_*)
-
-2005/04/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: put text back
- enabled kirghiz console kbd
-
- * share/po/br.po: removing and re-adding file
- removing and re-adding file
- updated po file
-
-2005/04/12 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * network/tools.pm: Fix running ifup/ifdown not in chroot
- Need to specify the full path of ifup/ifdown when a shell isn't used to
- run them
-
-2005/04/12 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: fix direct-to-tape backup/restore issues (#15293)
-
-2005/04/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-24mdk
-
- * share/po/br.po: update
-
-2005/04/12 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Remove the duplicates for a320raid
- Workarround for clean-rpmsrate regexp pb
-
-2005/04/12 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * network/tools.pm: Fix running ifup/ifdown not in chroot
- Need to specify the full path of ifup/ifdown when a shell isn't used to
- run them
-
-2005/04/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-24mdk
-
-2005/04/12 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Remove the duplicates for a320raid
- Workarround for clean-rpmsrate regexp pb
-
-2005/04/12 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * network/tools.pm: Fix running ifup/ifdown not in chroot
- Need to specify the full path of ifup/ifdown when a shell isn't used to
- run them
-
- * install_any.pm: When installing urpmi, mark cd-rom media as "static" so
- they never get
- updated. This is needed because those media use hdlists, but the hdlist
- path is false for all CDs except the first one.
-
-2005/04/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-24mdk
-
- * share/po/br.po: update
-
-2005/04/12 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Remove the duplicates for a320raid
- Workarround for clean-rpmsrate regexp pb
-
-2005/04/11 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: fix error reporting for ndiswrapper package
- installation (#15373)
- handle spaces in ndiswrapper drivers path
-
- * standalone/drakroam: handle ESSID with spaces (#15352)
-
-2005/04/11 Pixel <pixel at mandrakesoft.com>
-
- * do_pkgs.pm: have a valid return value in
- ->ensure_is_installed_if_available
-
- * bootloader.pm: fix setting perImageAppend to default entry {append}
- (it was buggy when the default entry had an empty append, making
- perImageAppend be failsafe on amd64 upgrade)
-
- * pkgs.pm: the standard kernel is bigmem compliant, no need to install
- kernel-smp for this (bugzilla #15353)
-
-2005/04/11 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * crypto.pm: Change the URL of the mirrorsfull.list for installation of
- the updates
-
-2005/04/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-23mdk
-
-2005/04/10 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/08 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/04/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * harddrake/data.pm: with harddrake crash with USB/PCI DSL modems (#15034)
-
-2005/04/08 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: ugly hack to fix empty ModeLine lines, XFdrake seems
- to generate some, but where???
- at least this allows fixing the pb by re-running XFdrake
- 1152x864 needs more modelines than the poor 1152x864@75Hz builtin xorg
- (bugzilla #11698)
-
-2005/04/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Supplementary cd-roms weren't marked as supplementary.
- Fix this.
- Don't copy rpms that come from any sort of supplementary media.
- More heuristics to figure out the CD / DVD number from its name, used
- for the copy of media to the local HD.
-
- * pkgs.pm: When sorting CDs, put supplementary CDs at the end
-
-2005/04/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-22mdk
-
-2005/04/08 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: new install module
-
-2005/04/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * harddrake/data.pm: with harddrake crash with USB/PCI DSL modems (#15034)
-
- * network/netconnect.pm: add some comments for post 10.2
-
-2005/04/08 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: updates from Eskild Hustvedt:)
-
-2005/04/08 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: do the edid probe before launching X server (the way it was
- already done for i810fb)
-
- * any.pm: XF86Config-4 doesn't exist anymore, no need logging it
-
- * Xconfig/xfree.pm: ugly hack to fix empty ModeLine lines, XFdrake seems
- to generate some, but where???
- at least this allows fixing the pb by re-running XFdrake
- 1152x864 needs more modelines than the poor 1152x864@75Hz builtin xorg
- (bugzilla #11698)
-
-2005/04/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Don't copy rpms that come from any sort of supplementary
- media.
- More heuristics to figure out the CD / DVD number from its name, used
- for the copy of media to the local HD.
-
- * pkgs.pm: When sorting CDs, put supplementary CDs at the end
-
-2005/04/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-22mdk
-
-2005/04/08 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: new install module
-
-2005/04/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: add some comments for post 10.2
-
-2005/04/08 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: do the edid probe before launching X server (the way it was
- already done for i810fb)
-
- * any.pm: XF86Config-4 doesn't exist anymore, no need logging it
-
-2005/04/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/probing.h, mdk-stage1/thirdparty.c, mdk-stage1/probing.c:
- - add probing_detect_devices() to keep existing pci devices in an
- array
- - allow to use external third-party pcitable
- - modules in to_detect (thirdparty install) are now compared to
- external third-par ty pcitable first, then to built-in pcitable
-
- * network/netconnect.pm: always restart slmodem, even if it was already
- installed
-
-2005/04/07 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: handle third party
- modules from various devices
- (at least floppy is still working :)
-
-2005/04/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-21mdk
-
-2005/04/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakroam: add some comment
- hide roaming frame by default, not tested
- don't truncate default gateway (#15247)
-
- * standalone/net_applet: fix refresh (forget erased settings)
-
- * mdk-stage1/thirdparty.h, mdk-stage1/thirdparty.c: export
- THIRDPARTY_DEVICE and THIRDPARTY_DIR for stage2
-
- * network/netconnect.pm: always restart slmodem, even if it was already
- installed
- cosmetics
- create correct /dev/modem for HCF modems
- use correct package name for HCF modems
- fix h[cs]f fix
-
- * network/tools.pm: net_applet: really allow users to start connection
- without having to
- type the root password
- run ifup/ifdown with run_program::raw and detach, so that pppd doesn't
- complain about invalid tty
-
-2005/04/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: sent utf-8 by default for languages that only use plain ascii,
- and for newly added or with few users languages.
-
-2005/04/07 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: handle third party modules from various
- devices
- (at least floppy is still working :)
-
- * install_steps.pm: handle third party modules from various devices
- (at least floppy is still working :)
- workaround weird old code (bugzilla #15300)
-
-2005/04/07 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Add a trace
-
-2005/04/07 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Sort the nic list for nbis.
-
-2005/04/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-21mdk
-
-2005/04/06 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/list, share/aliases: ship rmmod binary since insmod from
- module-init-tools isn't combined with rmmod
-
-2005/04/06 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: monitor-edid needs /dev/zero when fallbacking on lrmi
-
- * install2.pm: leave bootsplash when X is up (and also in newt and
- auto_install)
-
- * install_gtk.pm: fix position of steps window in direction rtl (bugzilla
- #15261)
-
-2005/04/06 Olivier Blin <oblin at mandrakesoft.com>
-
- * do_pkgs.pm: now that I know how to short-circuit it, make it work as
- well
- (have I already said I sux ?)
- use short-circuit operator (/me sux, thanks Pixel)
-
- * share/list, share/aliases: ship rmmod binary since insmod from
- module-init-tools isn't combined with rmmod
-
-2005/04/06 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: monitor-edid needs /dev/zero when fallbacking on lrmi
-
- * install2.pm: leave bootsplash when X is up (and also in newt and
- auto_install)
- when re-ordering the steps to have doPartitionDisks just after
- selectInstallClass in case of upgrade, do it properly so that the
- "Partitioning lamp" behaves properly (bugzilla #15040)
-
- * install_any.pm: make the auto_inst.cfg more valid in report.bug.gz, and
- add a warning
-
- * install_gtk.pm: fix position of steps window in direction rtl (bugzilla
- #15261)
-
-2005/04/06 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: LE-2005 logo
-
-2005/04/06 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: make the auto_inst.cfg more valid in report.bug.gz, and
- add a warning
-
-2005/04/06 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: LE-2005 logo
-
-2005/04/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: remove useless and unwanted non-ASCII character
-
- * mouse.pm: really apply specific ALPS touchpad settings (#14510)
-
- * modules.pm: don't load modules.cz in uml install
-
- * standalone/net_monitor: perl_checker, indent
- detect more devices (e.g. wireless)
-
- * drakxtools.spec: 10.2-20mdk
-
- * network/netconnect.pm: support more slmodems
-
- * do_pkgs.pm: install dkms packages if found
-
- * standalone/drakroam: do not crash if no essid is selected (partially fix
- #15244)
- hide unavailable features, add close button
-
- * network/adsl.pm: please perl_checker
- replace non-ASCII characters
-
- * network/tools.pm: improve wifi detection
-
-2005/04/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: corrected small typo
-
- * share/po/eu.po: updated Basque file
-
-2005/04/05 pmaryanov
-
- * share/po/ru.po: updated
-
-2005/04/05 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: since we have a non-ascii font name, we have to "use utf8"
- check(): only display "Errors:" if there is some errors
-
- * rescue/list: revert adding Compress::Zlib
-
- * install_steps.pm: remove accentuated char
-
- * standalone/draksplash, share/advertising/22.pl, share/advertising/10.pl,
- standalone/drakpxe, share/advertising/05.pl, share/advertising/21.pl,
- share/advertising/28.pl, share/advertising/14.pl,
- share/advertising/24.pl:
- - remove non useful non-ascii characters
- - add "use utf8" for useful utf8 characters
-
- * ugtk2.pm: replace the latin-charset unbreakable space with a "use utf8"
- and the utf8 unbreakable space
-
- * install_any.pm: media_browser is returning a file, not a file handle,
- /me is bad :-/
-
- * Makefile: the keyboard check is always failing, can't make pablo have it
- right, so not checking it by default
- (that way we can have the "make check" in gi call "make check" in
- gi/perl-install)
- check the presence of non ascii characters in perl files (allow utf8
- chars if there is 'use utf8')
-
- * printer/main.pm: replace non ascii char
-
-2005/04/05 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2005/04/05 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * crypto.pm: Add new countries to match the mirror list
- Update mirror list
-
-2005/04/05 sharuzzaman
-
- * share/po/ms.po: Updated Malay translation
-
-2005/04/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: remove useless and unwanted non-ASCII character
-
- * network/adsl.pm: please perl_checker
- replace non-ASCII characters
-
-2005/04/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2005/04/05 Pixel <pixel at mandrakesoft.com>
-
- * standalone/draksplash, share/advertising/22.pl, share/advertising/10.pl,
- standalone/drakpxe, share/advertising/05.pl, share/advertising/21.pl,
- share/advertising/28.pl, share/advertising/14.pl,
- share/advertising/24.pl:
- - remove non useful non-ascii characters
- - add "use utf8" for useful utf8 characters
-
- * ugtk2.pm: replace the latin-charset unbreakable space with a "use utf8"
- and the utf8 unbreakable space
-
- * install_any.pm: media_browser is returning a file, not a file handle,
- /me is bad :-/
-
- * bootloader.pm: apply patch from bugzilla #15216, adding support for
- "password=..." and "restricted" at per-entry level (thanks to jarfil)
-
- * Makefile: the keyboard check is always failing, can't make pablo have it
- right, so not checking it by default
- (that way we can have the "make check" in gi call "make check" in
- gi/perl-install)
- check the presence of non ascii characters in perl files (allow utf8
- chars if there is 'use utf8')
-
- * lang.pm: check(): only display "Errors:" if there is some errors
-
- * rescue/list: revert adding Compress::Zlib
-
- * install_steps.pm: remove accentuated char
-
- * printer/main.pm: replace non ascii char
-
-2005/04/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/thirdparty.h, mdk-stage1/thirdparty.c:
- add thirdparty_load_media_modules(), try to find third party modules on
- the install media
-
- * mdk-stage1/probing.h, mdk-stage1/probing.c: allow to keep track of
- orphan devices (no module available)
-
- * drakxtools.spec: 10.2-19mdk
-
-2005/04/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm, share/keyboards.tar.bz2: included/fixed some xmodmap files
-
- * share/po/gl.po: updated Galician
-
-2005/04/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Try to guess the device associated with the CD-ROM when
- installing urpmi
- (bug 14395)
-
-2005/04/04 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Fixed bug #4319: Printer options cannot be set after renaming the
- printer or changing the connection type
- - Fixed bug of PostScript printers with manufacturer-supplied PPD
- cannot
- be renamed at all
- - Fixed bug of print queue being deleted when renaming fails
- - Fixed bug of printerdrake trying to open a message window when
- non-interactive queue generation fails
- - Fixed pre-definition of $printer->{ARGS}, this bug made printerdrake
- crashing sometimes
-
-2005/04/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/thirdparty.h, mdk-stage1/thirdparty.c, mdk-stage1/stage1.c:
- add thirdparty_load_media_modules(), try to find third party modules on
- the install media
-
- * network/netconnect.pm: disconnect internet interface before trying to
- reconnect (or else some
- nasty pppd and pppoa may be still alive)
-
- * detect_devices.pm: getNet(): only up wireless devices
-
- * mdk-stage1/probing.h, mdk-stage1/probing.c: allow to keep track of
- orphan devices (no module available)
-
- * network/adsl.pm: do not reload firmware on eagle-usb modems if already
- done
-
- * drakxtools.spec: 10.2-19mdk
-
-2005/04/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Try to guess the device associated with the CD-ROM when
- installing urpmi
- (bug 14395)
- /me sux
-
-2005/04/04 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Fixed bug #4319: Printer options cannot be set after renaming the
- printer or changing the connection type
- - Fixed bug of PostScript printers with manufacturer-supplied PPD
- cannot
- be renamed at all
- - Fixed bug of print queue being deleted when renaming fails
- - Fixed bug of printerdrake trying to open a message window when
- non-interactive queue generation fails
- - Fixed pre-definition of $printer->{ARGS}, this bug made printerdrake
- crashing sometimes
-
-2005/04/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * detect_devices.pm: getNet(): only up wireless devices
-
-2005/04/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/fr.po: updated French and Italian files
-
- * share/po/de.po: updated German file
-
-2005/04/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: /me sux
- Don't ask for the same cd to be reinserted when copying rpms on disk
- Introduce the new utility function getCDNumber()
-
- * install_steps_gtk.pm: Introduce the new utility function getCDNumber()
-
-2005/04/04 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: small fix in /boot/message-text
-
-2005/04/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * pixmaps/langs/lang-qu.png, lang.pm: Enabled choice of Guarani, Quichua
- and Berber (tifinagh) at install time;
- changed various encoding names internally used for font choosing from
- language based to encoding based (following iso-15924 naming)
-
-2005/04/03 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: add /usr/local and /opt to suggestions_mntpoints
-
-2005/04/03 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/fi.po: Updated Translations, fully translated, was 93 fuzzy, 67
- untranslated.
-
-2005/04/02 mareklaane
-
- * share/po/et.po: Updated translation (supermount=automaatne haakimine).
-
-2005/04/02 mbukovjan
-
- * share/po/cs.po: Updated Czech translation.
-
-2005/04/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po, share/po/es.po, share/po/vi.po, share/po/wa.po: updated
- Spanish, Slovenian, Vietnamese and Walloon files
-
- * share/po/ja.po: updated Japanese file
-
-2005/04/02 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/04/02 willysr
-
- * share/po/id.po: Updated
-
-2005/04/01 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/04/01 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2005/04/01 tsdgeos
-
- * share/po/ca.po: small update
-
-2005/04/01 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2005/04/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/cdrom.c, mdk-stage1/disk.c: try to load ide-generic as
- fallback when no disk or cdrom is found
-
- * mouse.pm: configure wacom devices with synaptics touchpads too
-
-2005/04/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * Makefile, pixmaps/langs/lang-pa_IN.png, share/fonts.tar.bz2, lang.pm:
- Added font for gurmukhi script (used by pa_IN translation);
- enabled pa_IN, and define the font for KDE
-
- * share/po/nb.po, share/po/id.po, share/po/sk.po, share/po/ru.po,
- share/po/is.po, share/po/sl.po, share/po/de.po, share/po/cs.po,
- share/po/hu.po: updated Slovenian file;
- run msgmerge on all *.po files
-
- * share/po/az.po, share/po/sv.po, share/po/ca.po: updated Swedish and
- Italian files; small fixes in Azeri and Catalan files
-
- * share/po/it.po: updated Italian file
- updated Swedish and Italian files; small fixes in Azeri and Catalan
- files
-
- * share/po/cy.po: updated Welsh file
-
-2005/04/01 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: Last minute strings:)
-
-2005/04/01 pjetur
-
- * share/po/is.po: Small fuzzy fixes
-
-2005/04/01 pmaryanov
-
- * share/po/ru.po: s/ÓÌÕÖÂ/ÓÅÒ×ÉÓ/
-
-2005/04/01 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Sort CDs according to CD numbers, not alphabetically
-
- * install_steps_gtk.pm: Actually remove multiple Mini-CD media for
- deselection
- When presenting the list of media to deselect, group by CDs even when
- using the
- mini ISO
-
-2005/04/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: one more item in 10.2-18mdk
- 10.2-18mdk
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sc.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/mn.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/Makefile,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/nl.po,
- share/po/tl.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po: add 3 new strings
- from diskdrake
-
- * share/po/fr.po: add 3 new strings from diskdrake
- fix truncated message (#13989)
-
- * harddrake/data.pm: fix harddrake crash
-
-2005/03/31 marco
-
- * share/po/it.po: fix
- fix
-
-2005/03/31 Olivier Blin <oblin at mandrakesoft.com>
-
- * c/stuff.xs.pl: add enable_net_device
-
- * network/netconnect.pm: add some comment for post 10.2
- do not use ifplugd for wireless cards (and don't allow users to enable
- it for wireless cards in drakconnect)
-
- * detect_devices.pm: enable ethernet interfaces during detection (fix
- Ralink wireless detection)
-
-2005/03/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tr.po: small changes
-
- * share/po/az.po: some Azeri changes from Max Payne
- small changes
-
- * share/po/es.po: updated Spanish file
-
- * share/po/cy.po: updated Welsh file
-
-2005/03/31 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: Updates from Eskild Hustvedt:)
-
-2005/03/31 pmaryanov
-
- * share/po/ru.po: fixed drakperm:24 and drakperm:23
-
-2005/03/31 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: useSupermount is no more a boolean, don't let
- the "More" dialog box set it to 1 when it is magicdev
-
- * standalone/drakauth, authentication.pm: don't display description for
- non proposed authentication kinds
-
- * lang.pm: better locale-policy.fdi (bugzilla #15025)
-
-2005/03/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: do not try to install packages that are not
- availlable (#15106)
- do no try to install too generic hw packages (#15101)
-
- * drakxtools.spec: 10.2-17mdk
-
- * detect_devices.pm: do not detect joystics as UPSes
-
-2005/03/31 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Add gpdf and eog to GNOME packages
-
-2005/03/31 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/03/31 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: add some comment for post 10.2
- do not use ifplugd for wireless cards (and don't allow users to enable
- it for wireless cards in drakconnect)
-
-2005/03/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/az.po, share/po/tr.po: small changes
-
- * share/po/vi.po: updated Vietnamese file
-
- * share/po/es.po: updated Spanish file
-
-2005/03/31 pmaryanov
-
- * share/po/ru.po: fixed drakperm:24 and drakperm:23
- updated drakperm
-
-2005/03/31 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: useSupermount is no more a boolean, don't let
- the "More" dialog box set it to 1 when it is magicdev
-
- * standalone/drakauth, authentication.pm: don't display description for
- non proposed authentication kinds
-
- * network/drakfirewall.pm: fix typo (bugzilla #15116)
-
- * lang.pm: better locale-policy.fdi (bugzilla #15025)
-
- * rescue/list: disambiguate (esp for Config.pm which now has
- Net/Config.pm)
-
- * any.pm: the wmaker line didn't ask the window manager to logout, but to
- rerun itself, so removing it (bugzilla #15087)
-
-2005/03/31 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/03/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: do not detect USB joystics as UPSes (#15102)
-
- * share/po/az.po: update (Ugur Eminli <system.virus@gmail.com>)
-
- * standalone/harddrake2: do not try to install packages that are not
- availlable (#15106)
- do no try to install too generic hw packages (#15101)
-
-2005/03/30 mbukovjan
-
- * share/po/cs.po: Updated Czech translation.
-
-2005/03/30 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: fix speedtouch microcode url (#15095)
-
- * network/adsl.pm: eagle-usb: try to use the country specific CMV
- fctStartAdsl is moved in /sbin too
-
-2005/03/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po, share/po/ja.po, share/po/pl.po, share/po/fr.po,
- share/po/wa.po: updated Japanese, Polish, Spanish, French and Walloon
- files
-
-2005/03/30 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: updates:)
-
-2005/03/30 pmaryanov
-
- * share/po/ru.po: updated drakbackup
- multiply fixes translation of 'Service'
- s/search/Search
- fixed '...mail alert...'
-
-2005/03/30 rstandtke
-
- * share/po/de.po: some fixes
- some additions
-
-2005/03/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/pa_IN.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sc.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/nl.po,
- share/po/tl.po, share/po/de.po, share/po/cs.po, share/po/uz@Latn.po:
- - merge in new strings from drakroam
- - auto translate "RAID controllers" for harddrake
- - manual updates for af, br & fr
-
- * share/po/Makefile: fix makefile
-
- * drakxtools.spec: update 10.2-16mdk's changelog
- update 10.2-16mdk's changelog
- 10.2-16mdk
-
- * share/po/sr.po, share/po/ro.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/tr.po, share/po/mn.po, share/po/az.po, share/po/ta.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po: manual updates
- - merge in new strings from drakroam
- - auto translate "RAID controllers" for harddrake
- - manual updates for af, br & fr
-
- * harddrake/data.pm: megaraid controllers are listed as RAID ones now
- 3ware controllers are listed as RAID ones now
- ensure we detect all known sound cards
- do not list hardware controllers in unknown section
- ensure we detect all known SATA controllers
-
-2005/03/30 willysr
-
- * share/po/id.po: Updated
-
-2005/03/29 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/03/29 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: fix NET_INTERFACE for sagem modems not using
- pppoa
-
- * detect_devices.pm: detect more Bewan devices
-
- * standalone/net_applet: really load network configuration at start
-
-2005/03/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po, share/po/fr.po: updated French and Spanish files
-
- * Makefile: removed pa_IN.po and ta.po from install due to font problems
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/pa_IN.po: Added Punjabi file
-
- * share/po/it.po: updated Italian file
-
-2005/03/29 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: Updates from Eskild Hustvedt
-
-2005/03/29 pmaryanov
-
- * share/po/ru.po: fixed Uninstall font
-
-2005/03/29 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: if i686-up-4GB is not there we don't have pae, fallback on
- i586-up-1GB
-
- * lang.pm: revert to standard size (as told on bugzilla #14988 to revert
- #13809)
-
- * lvm.pm: ensure we have a {lv_name} (esp. for auto_installs)
-
- * standalone/service_harddrake, modules.pm, standalone/harddrake2,
- harddrake/data.pm:
- - disable imm/ppa probe during install since it causes some rubbish to
- be printed (bugzilla #12560)
- - add an option in harddrake to probe imm/ppa
-
-2005/03/29 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Reinout van Schouwen <reinout@cs.vu.nl>:
- Updated Dutch translation-
-
-2005/03/29 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/detect.pm:
- - Let IOCTL detection of an USB printer not get accepted if there is
- no
- relevant item at all in the ID string, to avoid mis-detection of some
- USB
- keyboards as printers.
-
-2005/03/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: move drakroam from drakxtools-newt into drakxtools
- since it requires gtk+
- fix tools' crash when drakconf is not installing (#13392)
- 10.2-15mdk
-
- * docs/HACKING: update package list regarding gtk+ bindings
-
- * standalone/drakroam (UpdateStatus) fix layout
- translate columns' headers
-
- * any.pm (selectLanguage) remove unused variable
- (selectLanguage) let "unicode" checkbox be an advanced item at both
- install
- time and in standalone mode
-
- * detect_devices.pm (floppies) do not use dmidecode for detecting floppies
- since it's not
- reliable (#15029)
-
- * harddrake/data.pm: fix optical mice detection (#15082)
-
-2005/03/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm, network/adsl.pm: eaglectrl is now in /sbin
- (#15033)
-
-2005/03/28 pmaryanov
-
- * share/po/ru.po: fixed PPPoE, PPPoA,...
-
-2005/03/27 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: transl. drakroam messages
-
-2005/03/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/br.po, share/po/pl.po, share/po/ar.po,
- share/po/he.po: removed "10.1"
-
-2005/03/27 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * rescue/list: Add some more files to the rescue until packdrake works
- correctly without Compress::Zlib.
-
-2005/03/27 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/03/27 willysr
-
- * share/po/id.po: Updated
-
-2005/03/26 Funda Wang <fundawang at linux.net.cn>
-
- * share/advertising/09.pl: Oops, Sorry for the critical typo
- s/Mandrakelinux 10.1/Mandrakelinux. For advertising.
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sc.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: Oops! Sorry for the critial typo :(
- s/Mandrakelinux 10.1/Mandrakelinux/. For advertising.
-
-2005/03/26 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/03/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sc.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * share/po/es.po, share/po/pt.po: updated Spanish file
- updated pot file
-
-2005/03/25 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * rescue/list.x86_64: speculatively add 32-bit loader in case user wants
- to use 3rdparty 32-bit
- binaries depending on it.
-
- * rescue/tree/usr/share/symlinks: I hate you pixel. ;-) You were not lib64
- aware of those modern arches. ;-))
-
- * rescue/make_rescue_img: take care of lib64 platforms, also add msboot
- restorer to x86_64 tree
-
- * share/rpmsrate: kdm was the new default
-
-2005/03/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sc.po: Added Sardinian file
-
- * share/po/pt_BR.po: updated Brazilian file
-
- * share/po/sl.po, share/po/id.po: updated Slovenian file
-
-2005/03/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-14mdk
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sc.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/Makefile, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/fr.po, share/po/ta.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po:
- - add new strings from drakroam
- - merge in kde's translations
-
- * share/po/be.po: fix bogus translations introduced on 6-Aug-2004
- - add new strings from drakroam
- - merge in kde's translations
-
- * modules/interactive.pm (load_category__prompt_for_more) enable one to
- load ide drivers if needed
-
-2005/03/25 willysr
-
- * share/po/id.po: Fix Typo
- Fix Typo and Minnor Update
- Updated
-
-2005/03/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_any.pm: nasty warly uses different volume IDs for mini CDs
-
- * standalone/drakroam: do not crash in Help and About buttons
-
-2005/03/24 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Always write an MD5SUM file
-
-2005/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
- * standalone/drakroam: tag strings as being translatable
-
- * share/po/pt_BR.po:
- - update from Cristiano Otto Von Trompczynski <cris@mandrakesoft.com>
- - fix errors in cataglog
-
-2005/03/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: force refresh if asked by user from the menu
- reload configuration on SIGHUP
- ask for root password if needed when setting a new profile
-
- * network/network.pm: write ATM_ADDR field
-
- * network/netconnect.pm: ATMARP support, useful for modems using pppoatm
- (e.g. SpeedTouch) and
- ISP using RFC 1483 Routed VC MUX (e.g. Free Degroupe)
-
- * network/adsl.pm: use new --nocall option of speedtouch-start
-
-2005/03/24 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakvpn, network/shorewall.pm, standalone/drakgw:
- - network::shorewall::default_interfaces_silent() does not need any
- parameter
- - network::shorewall::read() is simpler with a $o_in
- - network::drakfirewall::default_from_pkgs() is non interactive,
- better give it a do_pkgs
- - cleanup as little as possible
-
- * security/level.pm: really default security level 3
-
- * raid.pm: calling inactivate_and_dirty() on a new structure is bad, we
- loose the {isFormatted} flag
- (no big deal though, it happened because raid::new() was creating a new
- raid with an already active md name)
- ensure we use/propose a free md when creating a new one
- after "mdadm --assemble" there can be some mds in inactivate state
- busying devices, stopping them
-
- * network/drakfirewall.pm: log what we are doing
- return the user choices
- - there is no reason to have string ref for ports
- - replace main_auto_install() with default_ports()
- network::drakfirewall::set_ports() doesn't *need* a $in anymore, and it
- doesn't die when no network card
- - network::shorewall::default_interfaces_silent() does not need any
- parameter
- - network::shorewall::read() is simpler with a $o_in
- - network::drakfirewall::default_from_pkgs() is non interactive,
- better give it a do_pkgs
- - cleanup as little as possible
-
- * install_steps_interactive.pm:
- - configure a firewall by default in secure level >= 3
- - allow auto_install parameter {firewall_ports}
- - network::shorewall::default_interfaces_silent() does not need any
- parameter
- - network::shorewall::read() is simpler with a $o_in
- - network::drakfirewall::default_from_pkgs() is non interactive,
- better give it a do_pkgs
- - cleanup as little as possible
-
- * install_steps.pm: really default security level 3
- - configure a firewall by default in secure level >= 3
- - allow auto_install parameter {firewall_ports}
-
- * diskdrake/interactive.pm: calling inactivate_and_dirty() on a new
- structure is bad, we loose the {isFormatted} flag
- (no big deal though, it happened because raid::new() was creating a new
- raid with an already active md name)
- use raid::free_mds() and don't sort (we provide a better numerically
- sorted list)
-
-2005/03/24 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * tools/Makefile: Install modules required by packdrake and gendistrib in
- MISC_DEST
-
-2005/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (Gtk2::Banner::new) make banner be RTL aware (aka follow
- language direction
- and display itself mirrored for RTL languages) (#11910)
- (Gtk2::Banner::new) ensure icon is centered vertically
-
- * drakxtools.spec: 10.2-13mdk
-
-2005/03/24 willysr
-
- * share/po/id.po: Updated
-
-2005/03/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: warn that the mount can fail if the partition hasn't
- been cleanly unmounted
-
- * install_any.pm: temporarily fallback on /mnt/hd if the hard disk mount
- point can't be found
-
-2005/03/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: warn that the mount can fail if the partition hasn't
- been cleanly unmounted
-
- * install_any.pm: temporarily fallback on /mnt/hd if the hard disk mount
- point can't be found
-
-2005/03/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix ejection of cdrom when asking for the supplementary
- CD. (bug 14902)
-
-2005/03/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: warn that the mount can fail if the partition hasn't
- been cleanly unmounted
-
- * install_any.pm: temporarily fallback on /mnt/hd if the hard disk mount
- point can't be found
-
-2005/03/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix ejection of cdrom when asking for the supplementary
- CD. (bug 14902)
-
-2005/03/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: warn that the mount can fail if the partition hasn't
- been cleanly unmounted
-
- * install_any.pm: temporarily fallback on /mnt/hd if the hard disk mount
- point can't be found
-
-2005/03/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix ejection of cdrom when asking for the supplementary
- CD. (bug 14902)
-
-2005/03/23 fisher
-
- * share/po/uk.po: uk tr-tion update
-
-2005/03/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: warn that the mount can fail if the partition hasn't
- been cleanly unmounted
-
- * install_any.pm: temporarily fallback on /mnt/hd if the hard disk mount
- point can't be found
-
- * network/adsl.pm: make Bewan PCI modems work (drop MTU config entries)
-
-2005/03/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: changed tifinagh kbd to "tifinagh(phonetic)", to avoid
- conflicts
- with future moroccan standard layout (as will be used in schools etc)
- which is a bit different
-
-2005/03/23 pmaryanov
-
- * share/po/ru.po: fixed 'Load/Save selection' and 'No details'
- translated 'Smart Card'
- fixed 'Allow all users'
-
-2005/03/23 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: probe_using_X on neomagic can return rubbish, so
- prefer probe_DMI() (even if dmi probe is quite fuzzy...)
-
-2005/03/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: Fix detection of available space when copying rpms
- on disk (bug 14790)
-
- * install_any.pm: Fix ejection of cdrom when asking for the supplementary
- CD. (bug 14902)
-
-2005/03/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- typo fix
-
- * Makefile.drakxtools, Makefile: package rpmsrate
-
- * drakxtools.spec: 10.2-12mdk
-
-2005/03/23 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Add ufraw-gimp with gimp and ufraw in photo (for
- handling raw images from digital camera)
-
-2005/03/23 willysr
-
- * share/po/id.po: Fix Typo
- Updated
-
-2005/03/23 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: probe_using_X on neomagic can return rubbish, so
- prefer probe_DMI() (even if dmi probe is quite fuzzy...)
-
-2005/03/22 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/rpmsrate: install atmel firmwares for hardware using at76* modules
- install prism54-firmware for prism54 devices only
- kernel 2.4 isn't needed anymore for this hardware
- install xine-esd on Gnome desktops so that totem works when esd is
- running
-
- * mdk-stage1/disk.c: dirname may modify the string, so copy it first
-
-2005/03/22 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: perl_checker fix
- choose the default background best matching the resolution
-
- * standalone/keyboarddrake: we require_root_capability, so do it ASAP
- (bugzilla #13619)
- clean-up
- put the question inside the interactive code
-
- * Xconfig/main.pm: try a little harder to know if we must write the config
- file.
- this is still not enough though
- put X conf read in Xconfig::main
-
- * diskdrake/interactive.pm, lvm.pm: ensure {lv_name} is set when calling
- check_mntpoint() from Create() (via check()) (bugzilla #14253)
-
- * any.pm: be more explicit
- when calling adduser, don't forget {realname} or {home} if we have them
- (bugzilla #13805)
- no acpi means acpi=on, not the contrary (bugzilla #13935)
-
- * install_steps.pm: acpi=on is the default
-
- * install_steps_interactive.pm: handle the return value of
- any::setupBootloader() (bugzilla #13641)
-
- * standalone/XFdrake: put X conf read in Xconfig::main
-
- * standalone/drakauth, authentication.pm: SmartCard authentication needs a
- (bloody) proprietary package,
- only propose it when the package is available
-
- * Xconfig/xfree.pm: try a little harder to know if we must write the
- config file.
- this is still not enough though
-
-2005/03/22 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * install_steps_gtk.pm, share/list.i386, mouse.pm: XBox - get xpad to work
- in install (added xset)
-
- * harddrake/sound.pm: XBox - add options "xbox=1" for sound driver (thx
- Thierry)
-
-2005/03/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: help perl_checker
- install packages needed for hw support
-
- * drakxtools.spec: 10.2-11mdk
-
- * interactive.pm: perl_checker cleanup
-
-2005/03/22 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: fix kdegraphics-common duplicate problem
-
-2005/03/22 willysr
-
- * share/po/id.po: Fix Typo
- Updated
- Fix Typo
- Updated
-
-2005/03/21 Funda Wang <fundawang at linux.net.cn>
-
- * keyboard.pm: fixed wrongly spelled us_intl for lb locale.
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, install_messages.pm, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: s/102errata/errata/. There will not
- be an 10.2, and errara.php3
- is allways pointed to latest errata :/
-
-2005/03/21 marco
-
- * share/po/it.po: Successivo -> Next
-
-2005/03/21 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/rpmsrate: install kwifimanager on wireless-aware kde desktops
-
- * mdk-stage1/network.c: rephrase message (#14813)
-
- * mouse.pm: help perl_checker
- use specific Synaptics settings for ALPS devices (#14512)
-
- * detect_devices.pm: handle wireless hardware type
- is_lan_interface: do not list wifi%d interfaces as LAN devices (#14523)
-
- * Xconfig/xfree.pm: remove useless function to improve readability and
- please Titi
- use specific Synaptics settings for ALPS devices (#14512)
- use new recommended settings for synaptics-0.14.0
- factorize and minimal comments
-
-2005/03/21 Pixel <pixel at mandrakesoft.com>
-
- * do_pkgs.pm: add ->is_available
-
- * ugtk2.pm: don't use show_all, it unhides hidden summary (bugzilla
- #13941)
-
- * rescue/make_partimage_save_rest_all: addmd5 to the generated iso
- factorize
-
- * bootloader.pm: enhance yaboot macos entry handling (mostly written by
- cjw) (bugzilla #14642)
-
-2005/03/21 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Don't copy RPMs from supplementary media, except
- supplementary CDs
- Factorize code on opening CD tray.
- This, and the previous change, fixed bug #14850.
- Force opening of cdrom tray when asking for a supplementary CD.
- Allow to eject non-mounted cdroms
-
-2005/03/21 rstandtke
-
- * share/po/de.po: some additions
-
-2005/03/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) enforce "hidups" as driver for BackPro UPSes
-
- * drakxtools.spec: 10.2-10mdk
-
- * standalone/drakups (add_device_wizard) set extra parameters if present
-
-2005/03/21 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: install kdegraphics-common to support camera
-
-2005/03/21 willysr
-
- * share/po/id.po: Fix typo
- Updated
-
-2005/03/21 Olivier Blin <oblin at mandrakesoft.com>
-
- * drakxtools.spec: force net_applet start from menu (#14858)
-
- * mdk-stage1/network.c: rephrase message (#14813)
-
- * standalone/net_applet: don't modify autostart config file value if
- started with --force
-
-2005/03/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po: updated Bengali file
-
- * share/po/sl.po: updated Slovenian file
-
-2005/03/21 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: ensure strange return value from gtf(1) doesn't cause
- havoc
-
- * rescue/make_partimage_save_rest_all: addmd5 to the generated iso
- factorize
-
- * detect_devices.pm, pkgs.pm: handle new kernel flavour for i686 but non
- pae
-
-2005/03/21 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Allow to eject non-mounted cdroms
-
-2005/03/21 willysr
-
- * share/po/id.po: Updated
- Fix typo
- Updated
-
-2005/03/20 willysr
-
- * share/po/id.po: Fix Typo
- Fix Typo
- Updated
-
-2005/03/19 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: we need latest ldetect-lst (bugzilla #14785)
-
-2005/03/19 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/03/19 willysr
-
- * share/po/id.po: minnor update
- Updated
- minnor update
- Updated
- Updated
-
-2005/03/18 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: do "doPartitionDisks" and "formatPartitions" ASAP in
- upgrade so that miscellaneous is runned when /mnt is mounted (bugzilla
- #8678)
-
-2005/03/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-9mdk
-
- * network/netconnect.pm: disable network hotplug for via-velocity driver
- (#14763)
-
-2005/03/18 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, install_messages.pm, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: s/101errata/102errata for the next
- release. We often forget this.
-
-2005/03/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * harddrake/data.pm: adapt to new adsl_detect prototype
-
- * standalone/drakroam: perl_checker/include fixes
- don't be verbose
-
- * standalone/drakconnect: really detect wireless devices in manage
- interface
-
- * rescue/tree/etc/issue: tell how to go back to the rescue menu
-
- * share/po/fr.po: fix drakbackup message
- fix bad translations
-
- * standalone/logdrake: perl_checker fixes
- fix save dialog
-
- * network/ethernet.pm: remove other mac address occurrences in iftab
-
-2005/03/18 Pixel <pixel at mandrakesoft.com>
-
- * lvm.pm: rootDevice must be properly set, esp. for newt diskdrake
- (bugzilla #14254)
-
- * standalone/localedrake: always warn the user to logout, even if we can't
- help (bugzilla #14403)
-
- * diskdrake/interactive.pm: remove the lvm if lvm::vg_destroy() succeeds
- (bugzilla #14249)
-
- * install2.pm: do "doPartitionDisks" and "formatPartitions" ASAP in
- upgrade so that miscellaneous is runned when /mnt is mounted (bugzilla
- #8678)
-
- * bootloader.pm: handle grub file names that do not correspond to a
- mounted filesystem (bugzilla #14410)
- use renamef instead of rename to create .old conf files
-
- * Xconfig/xfree.pm: simplify
- ensure the .old X conf is the last one
- instead of having xorg.conf symlinked to XF86Config, do the contrary
-
-2005/03/18 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * crypto.pm: Fix downloading update rpms with ftp method.
- Remove noisy log
-
- * ftp.pm: Meaningful error messages
-
-2005/03/18 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Better way to list NIC modules (thx Thierry).
- Lose the "system" calls. Use pxe.include now. Clean up some redundant
- code.
-
-2005/03/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) move comment about serial UPS where
- appropriate
-
- * standalone/drakups (add_device_wizard) fix device path when manually
- adding an UPS (#12290)
-
- * standalone/logdrake: fix explanation mode only displaying last line
- (#14368)
- (parse_file) do not horribly die
-
- * standalone/drakperm (row_setting_dialog) better looking GUI: span groups
- & users on
- several columns (up to 3)
- (we might have choosed to set number of columns depending of number
- and max length of group/users rather than hardcoding 3 columns)
- (get_user_or_group) do not ignore groups with empty password field
- (#14777)
-
- * drakxtools.spec: 10.2-9mdk
- 10.2-8mdk
- 10.2-7mdk
-
-2005/03/18 willysr
-
- * share/po/id.po: Updated
- Updated
- Updated
-
-2005/03/17 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2005/03/17 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * install_steps_interactive.pm: bring back generic release-notes.txt to
- life
- MERGE: make it possible to read arch-specific release notes in addition
- to
- global (default) ones
-
- * mdk-stage1/usb-resource/update-usb-ids.pl: fix usb devices id generation
-
- * mdk-stage1/Makefile: pcmcia also works on x86-64 (old 10.1-branch)
-
- * rescue/list: MERGE: fix ldso name
-
- * install_steps_gtk.pm: MERGE: stop using dedicated X drivers on x86-64,
- default to vesafb
-
- * mdk-stage1/pcmcia_/cs.h, mdk-stage1/pcmcia_/cardmgr.c,
- mdk-stage1/pcmcia_/ds.h, mdk-stage1/pcmcia_/yacc_config.h,
- mdk-stage1/pcmcia_/cs_types.h, mdk-stage1/pcmcia_/vg468.h,
- mdk-stage1/pcmcia_/yacc_config.c, mdk-stage1/pcmcia_/i82365.h,
- mdk-stage1/pcmcia_/driver_ops.h, mdk-stage1/pcmcia_/cirrus.h: merge with
- recent enough kernel and remove osbolete (unused) stuff, also do
- some 64-bit fixing there (forward port from cs3 and 10.1 branches)
-
- * share/list, share/list.x86_64, share/list.i386: mdadm for everyone, fix
- ldso linker name for other arches
-
- * devices.pm: MERGE: don't be so i586 centric
-
-2005/03/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/thirdparty.c: probe in automatic mode to create devices (and
- really check for mount return code)
- fix return code check
- message fix again
- more message fixes
- fix/enhance messages
- look for modules in /install/thirdparty first
-
- * network/adsl.pm: vpi is given as hex too (though it doesn't matter much
- since it's
- merely always less than or equal to 9)
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: use sata modules too
-
- * standalone/drakconnect: fill at least the DEVICE field for
- non-configured devices
- allow to modify non configured devices in manage interface
-
-2005/03/17 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm, Xconfig/main.pm, Xconfig/xfree.pm: use
- monitor-probe-using-X
-
- * mygtk2.pm: ensure the val registrations are kept ordered
-
- * common.pm: ensure this bloody stupid code doesn't break things when it
- is unused
-
- * install_steps_interactive.pm: simplify
-
- * mdk-stage1/doc/UPDATEMODULES, install_steps.pm: give ability to tell in
- which list_modules category is a module
-
- * Xconfig/resolution_and_depth.pm:
- - simplify GUI: don't have a "ratio" combo. have the resolutions from
- current ratio by default and allow "Other" to see all others
- - by default 1280x1024 is now in 4/3, not 5/4 (stupid bloody
- resolution!)
- have 1280x1024 in both 4/3 and 5/4 ratios
-
- * share/rpmsrate: we may need monitor-probe-using-X installed to configure
- X during install
- (XFdrake already require monitor-edid)
-
-2005/03/17 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed queue name auto-generation, it sometimes hanged in an endless
- loop
- (bugs #14426, #14525, #14563).
-
-2005/03/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: temporary move collate sorting into net wizard in
- order to minimize possible side effects
-
- * drakxtools.spec: add an item to 10.2-6mdk's log
-
- * interactive.pm: temporary move collate sorting into net wizard in order
- to minimize possible side effects
- (ask_from_normalize) use newly introduced set_l10n_sort() in order to
- have proper localized sorting (#14634)
-
- * common.pm (set_l10n_sort) import comments from rpmdrake
- (set_l10n_sort) do not bother touch LC_ALL
- (set_l10n_sort) stole it from rpmdrake
-
-2005/03/17 willysr
-
- * share/po/id.po: Updated
- Updated
-
-2005/03/16 Daouda Lo <daouda at mandrakesoft.com>
-
- * bootloader.pm:
- - cluster without capturing
-
-2005/03/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/tools.h: cdrom support in third-party module
-
- * mdk-stage1/tools.c:
- - merge update_modules stuff in third-party module
- - add "thirdparty" as an alias for the "updatemodules" option
- - allow to specify thirdparty device using automatic "thirdparty"
- option
- - try to mount as iso9660 too in try_mount
- cdrom support in third-party module
-
- * mdk-stage1/thirdparty.c:
- - merge update_modules stuff in third-party module
- - add "thirdparty" as an alias for the "updatemodules" option
- - allow to specify thirdparty device using automatic "thirdparty"
- option
- - try to mount as iso9660 too in try_mount
- fail if device doesn't match anything
- cdrom support in third-party module
-
- * mdk-stage1/Makefile: allow to clean local directory only
- partition.c is used only in disk installs for now
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c, mdk-stage1/stage1.h,
- mdk-stage1/modules.h:
- - merge update_modules stuff in third-party module
- - add "thirdparty" as an alias for the "updatemodules" option
- - allow to specify thirdparty device using automatic "thirdparty"
- option
- - try to mount as iso9660 too in try_mount
-
-2005/03/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po, share/po/sv.po, share/po/fr.po: updated French, Basque
- and Swedish files
-
-2005/03/16 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: fix dropping line macos in yaboot.conf (bugzilla #14642)
-
-2005/03/16 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install2.pm: Allow to specify "suppl" and "askmedia" in the
- kernel command-line as well as in the hdlists file
-
- * share/po/fr.po: Fix typo
-
- * share/po/id.po: Fix po syntax
-
-2005/03/16 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/03/16 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/default.pm:
- - Fixed setting of default printer on daemon-less CUPS client (bug
- #13940).
-
-2005/03/16 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: finalized slovak translation for 10.2
-
-2005/03/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/localedrake: enable to enable/disable utf-8
- ensure there's never a "previous" button on first step
-
- * any.pm: enable to enable/disable utf-8
-
- * drakxtools.spec: 10.2-6mdk
-
- * interactive/gtk.pm (ask_fromW) remove dead code
- (ask_fromW) remove unecessary sync (which was needed to workaround
- CList bug but now make TreeViews breaking CheckBoxes)
-
-2005/03/16 willysr
-
- * share/po/id.po: Updated
- Updated
- Updated
-
-2005/03/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm, network/adsl.pm: allow drakconnect to display
- multiple instances of the same adsl device
-
-2005/03/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * any.pm, pkgs.pm, install_any.pm: Install kernel-xbox on XBOX, bypass
- bootloader setup and eject call
-
-2005/03/15 mareklaane
-
- * share/po/et.po: Fixed translation.
-
-2005/03/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: allow drakconnect to display multiple instances
- of the same adsl device
- fix comment
- fix unicorn packages installation
- do not compare translated string, on Pixel's advice
- allow not to set gateway device (#14633)
-
- * network/adsl.pm: allow drakconnect to display multiple instances of the
- same adsl device
-
- * mdk-stage1/stage1.c, install_any.pm: fix pcmcia modules loading
-
-2005/03/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/cy.po: updated Italian and Welsh files
-
-2005/03/15 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/empty.pm: do not drop field {info} that can be created
- in zero_MBR
- do not drop field {info} that can be created in zero_MBR
- do not drop field {info} that can be created in zero_MBR
-
- * c/stuff.xs.pl, detect_devices.pm, modules.pm, install_any.pm,
- share/list:
- - add dmi_probe()
- - some special code on dmi is now moved in dmitable with flags Pkg:
- and Module:
-
- * bootloader.pm: fix typo
-
- * Xconfig/main.pm:
- - new function Xconfig::monitor::is_valid()
- - new function Xconfig::monitor::probe() which probes DDC, then
- fallbacks on DMI
-
- * Xconfig/monitor.pm:
- - new function Xconfig::monitor::is_valid()
- - new function Xconfig::monitor::probe() which probes DDC, then
- fallbacks on DMI
- don't pass $monitors_db around, use memoized monitors_db()
-
-2005/03/15 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix cdrom device name
-
-2005/03/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm: install scim-input-pad too for japanese
-
- * drakxtools.spec: 10.2-5mdk
-
-2005/03/14 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * share/rpmsrate: install setarch by default on x86_64, add provisions for
- a320raid-kernel
- drivers, add 32-bit compat galaxy gnome theme
-
-2005/03/14 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/03/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/shorewall.pm: allow connections from local net to firewall
- (#14586)
-
- * network/adsl.pm: remove eagle-usb_must_be_configured file
- fix and force CMVs symlink creation
-
-2005/03/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po: fixed encoding
- fixed syntax errors
-
- * share/po/ja.po, share/po/wa.po: updated Japanese file
-
-2005/03/14 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: fix netmask string..
-
-2005/03/14 Pixel <pixel at mandrakesoft.com>
-
- * standalone/bootloader-config: ensure we have /sbin in our PATH
-
-2005/03/14 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Fix typo
-
- * share/po/zh_CN.po: Fix newline issue
-
- * install_any.pm: Change the code for the rpm copying progress bar to
- avoid forking.
-
- * crypto.pm: Update mirror list
-
- * install_steps_gtk.pm: Don't die while upgrading if
- /var/ftp/pub/Mandrakelinux isn't there (bug #14585)
-
-2005/03/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: fix netmask message after funda fixed blino message
-
- * share/po/br.po: update
- fix netmask message after funda fixed blino message
-
-2005/03/14 willysr
-
- * share/po/id.po: Delete Conflict Indicator and Little Update
- Little Update
- Updated
- Updated
- Updated again
- Downgrade one version
- updated
-
-2005/03/13 mbukovjan
-
- * share/po/cs.po: Updates to Czech translations
-
-2005/03/13 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: add some xxXGA names
-
- * any.pm: fix looking for the user uid.gid
-
- * bootloader.pm: don't die when we have no entries in grub menu.lst
-
-2005/03/13 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
-
-2005/03/13 willysr
-
- * share/po/id.po: Updated
-
-2005/03/12 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, network/netconnect.pm, share/po/be.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- standalone/drakconnect, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/fa.po, share/po/id.po, share/po/ru.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: s/Netmask
- address/Netmask/. typo fix
-
- * share/po/zh_CN.po: s/Netmask address/Netmask/. typo fix
- Updated Simplified Chinese translation
- Updated Simplified Chinese translation
-
-2005/03/12 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2005/03/12 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: Updates
- soft/control-center/po/da.po gi/perl-install/share/po/da.po
-
-2005/03/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/vi.po: updated Vietnamese file; corrected
- syntax error in Chinese file
-
-2005/03/11 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/03/11 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_any.pm: remove useless /
- really create ISO images mountpoint (me sux)
- use full path to rpms for ISO media
-
- * network/adsl.pm: fix typo (linetype for eagle-usb)
-
-2005/03/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/tg.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * share/po/be.po, share/po/ar.po, share/po/br.po, share/po/am.po,
- share/po/cy.po, share/po/bs.po, share/po/az.po, share/po/bg.po: updated
- pot file
- updated pot file
-
-2005/03/11 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: grf, translate last minute strings
-
-2005/03/11 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: for 1400x1050, put the resolutions (60 and 75Hz are
- already in extramodes, but they are GTF modelines, we can overrule them)
-
-2005/03/11 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: When removing duplicate physical media, take DVDs
- into account as well as CDs
-
- * install_any.pm: Use library functions
- Create an empty MD5SUM file to make urpmi happy
- Don't stack information windows on top of another
- Eject last CD after copy of rpms on disk
-
-2005/03/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/uk.po, share/po/eu.po, share/po/bn.po, share/po/ms.po,
- share/po/am.po, share/po/ko.po, share/po/sl.po, share/po/az.po,
- share/po/zh_TW.po, share/po/hr.po, share/po/ja.po, share/po/zh_CN.po,
- share/po/tr.po, share/po/cs.po: fix translations
-
-2005/03/10 fisher
-
- * share/po/uk.po: tr-tion update
-
-2005/03/10 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/03/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/modem.pm: use a higher timeout for modem dialing (#10814)
-
- * install_any.pm: don't spawn a shell if stage2 isn't run directly
- setup urpmi media for ISO images
-
- * network/netconnect.pm, mdk-stage1/thirdparty.c: fix messages
-
-2005/03/10 Pixel <pixel at mandrakesoft.com>
-
- * standalone.pm: help perl
-
- * Xconfig/monitor.pm: cleanup
- simplify
- we don't want the 4/3 detailed_timings otherwise they conflict with the
- Xorg builtin vesamodes
-
- * partition_table/dos.pm: catch bad use of get_rawCHS()
-
- * Xconfig/xfree.pm: don't add modelines for 1280x1024, they are already in
- standard vesamodes (builtin Xorg)
- when adding gtf modelines, have them sorted with high frequencies first
- (since Xorg prefer the first matching modeline (!))
-
-2005/03/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Put a wait message for copying rpms from CDs
-
-2005/03/10 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * diskdrake/interactive.pm, partition_table/raw.pm, fs/type.pm: Diskdrake
- mods for XBox (thks Pixel)
-
-2005/03/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ltg.po, share/po/ky.po, share/po/am.po, share/po/cy.po,
- share/po/fur.po, share/po/vi.po, share/po/tl.po, share/po/uz@Latn.po:
- fix kde merge
- further merge with KDE
- remove duplicated string
- remove uneeded string
- merge in new strings
-
- * standalone/harddrake2 (upload) remove uneeded string
- enable to upload the hardware list
-
- * Xconfig/monitor.pm (getinfoFromDDC) fix crash (eg when called from
- hwdb-clients)
-
- * run_program.pm (raw) ensure runned programs are logged in explanations
-
- * share/po/DrakX.pot, share/po/Makefile: merge in new strings
-
- * share/po/br.po, share/po/fr.po: fix kde merge
- further merge with KDE
- update
- remove duplicated string
- remove uneeded string
- merge translations from KDE
- merge in new strings
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/lt.po, share/po/tg.po, share/po/bs.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/ta.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po: fix kde merge
- further merge with KDE
- remove duplicated string
- remove uneeded string
- merge translations from KDE
- merge in new strings
-
- * drakxtools.spec: 10.2-4mdk
- harddrake: require hwdb-clients
-
-2005/03/10 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: we don't want the 4/3 detailed_timings otherwise
- they conflict with the Xorg builtin vesamodes
-
- * standalone.pm: help perl
-
-2005/03/10 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/03/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: hide wlan-ng settings for non-root users
- make wpa_supplicant.conf readable by root only
-
-2005/03/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * Makefile: ga translation level has been leveraged up
-
-2005/03/09 mareklaane
-
- * share/po/et.po: Translation fixes.
-
-2005/03/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/stage1.h: expert mode is dead
-
- * mdk-stage1/disk.c: fix message
- move partition stuff in partition.c and common disk stuff in tools.c
-
- * mdk-stage1/thirdparty.h, mdk-stage1/thirdparty.c: initial import (allow
- to load thirdparty modules from disks)
-
- * mdk-stage1/Makefile: don't forget to link with third_party stuff
- move partition stuff in partition.c and common disk stuff in tools.c
-
- * network/netconnect.pm, network/network.pm, network/ethernet.pm,
- standalone/drakconnect: write selected dhcp client in ifcfg files
-
- * mdk-stage1/probing.c: do ask for modules here, it is already done when
- needed
- wait for mass storage devices to be detected
- add log message when looking for scsi adapters
-
- * mdk-stage1/partition.c, mdk-stage1/tools.h, mdk-stage1/partition.h: move
- partition stuff in partition.c and common disk stuff in tools.c
-
- * mdk-stage1/stage1.c: expert mode is dead
- do not ask for third party modules here, it's available from main menu
- allow to use new third party stuff from main menu
- probe usb devices before trying to use third party modules
-
- * mdk-stage1/tools.c: expert mode is dead
- move partition stuff in partition.c and common disk stuff in tools.c
-
-2005/03/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * Makefile: updated list of too low languages
-
- * share/po/sl.po: updated Slovenian file
-
-2005/03/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
- * network/netconnect.pm: better looking text
-
- * Makefile: ga translation level has been leveraged up
-
- * network/ethernet.pm (get_eth_cards) update comments
- (get_eth_cards) do not overwrite driver name with sysfs one when we
- already got it from ethtool, thus fixing bogus names registered though
- pci layer in kernel (#14163)
-
- * drakxtools.spec: 10.2-3mdk
-
-2005/03/09 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: rc1 logo
-
-2005/03/08 Funda Wang <fundawang at linux.net.cn>
-
- * share/rpmsrate: removed obsolete IMEs for zh_TW
-
-2005/03/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * drakxtools.spec: use full path for net_applet icon in menu entry
- (#14346)
-
- * network/network.pm (wpa_supplicant_configure) scan hidden ssid
-
-2005/03/08 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: choose a 4/3 resolution by default
- xbox support (by Stew)
-
- * bootloader.pm: please perl_checker differently
-
- * Makefile: Vera is now in xorg
-
-2005/03/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Disable progress bar when copying rpms from CDs. (The
- change CD dialog
- clashes with it)
-
-2005/03/08 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * mouse.pm: mousedrake, detectloader support for XBox
-
- * bootloader.pm: perl_checker - bad /me
- mousedrake, detectloader support for XBox
-
-2005/03/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * interactive.pm, standalone.pm, ugtk2.pm: log program exiting
-
- * security/msec.pm (load_values) fix getting value when it's defined but 0
- (#14364)
- (get_function_value) fix getting value when it's 0 (#14364)
-
- * drakxtools.spec: fix 10.2-2mdk's changelog
- 10.2-2mdk
-
- * share/rpmsrate: install scim-input-pad for japanese users
-
-2005/03/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm (wpa_supplicant_configure) scan hidden ssid
-
-2005/03/08 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: choose a 4/3 resolution by default
- xbox support (by Stew)
-
-2005/03/08 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/03/07 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: use fonts-ttf-dejavu instead of fonts-ttf-vera (bug
- #13493).
-
-2005/03/07 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: added gcin setup
- Added settings for new traditional chinese IME gcin.
-
-2005/03/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakconnect: handle NEEDHOSTNAME and DHCP_HOSTNAME in Manage
- interface
- move DHCP settings in a notebook page
-
- * network/netconnect.pm: delete gateway if appropriate when configuring
- DSL devices too (#13978)
-
- * mdk-stage1/dhcp.h: export dhcp_domain too
-
- * mdk-stage1/network.c: remove spurious space
- try to reuse hostname and domain information from dhcp step (#14285)
- ask if the http proxy should be used for ftp (#13492)
- don't segault if proxy step is cancelled
-
-2005/03/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po: updated Bengali file
-
-2005/03/07 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: more and more fixes
-
-2005/03/07 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: allow live resizing of reiserfs on lvm (as
- tested by Gaetan Lehmann). not tested
-
- * share/themes-galaxy.rc, install_gtk.pm, share/themes-blue.rc,
- share/list:
- - by default, gtk use /usr/share/themes/Galaxy/gtk-2.0/gtkrc,
- so add this gtkrc to the install, and so no need
- to have galaxy settings in themes-galaxy.rc
- => this fixes the doc theme not having the good shapes for the buttons
- - fix the worst pb in themes-blue.rc (even if we don't use it)
-
-2005/03/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-1mdk
-
- * share/po/br.po: update
-
-2005/03/06 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: more fixes..
-
-2005/03/06 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, diskdrake/resize_ntfs.pm: ensure ntfsresize is
- available
-
-2005/03/06 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/03/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: proofreading (gerard delafond)
-
-2005/03/06 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/03/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: set Linetype in eagle-usb.conf to use CMVs
- create CMV symlinks for both POTS and ISDN lines
-
-2005/03/05 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/03/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: CMV support for eagle-usb
-
- * mdk-stage1/probing.c: remove unused variable
-
- * network/netconnect.pm: copy provider_id tag too
- add @network::ethernet::dhcp_clients
-
- * detect_devices.pm: add is_lan_interface
-
- * mdk-stage1/stage1.c: set MODE_TESTING too if DEBUGSTAGE1 is set
-
- * standalone/drakconnect: perl_checker fix
- allow to modify DHCP settings too
- use detect_devices::is_lan_interface
-
- * network/ethernet.pm: add @network::ethernet::dhcp_clients
-
- * network/adsl_consts.pm: use provider_id as key instead of id
- add provider IDs, comments, cleanups
-
-2005/03/04 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: 100% good to go!:)
- A few more fixes:)
- 100%!
- :)
-
-2005/03/04 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: do not check yaboot "magic" on ppc (it seems the magic we
- have is somewhat wrong), assuming we have yaboot installed (it is the
- only handled bootloader anyway)
-
-2005/03/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: Disallow to delect the first media listed in the
- "hdlists" file.
-
- * pkgs.pm: Modify new string in order to merge with KDE translations
- Fix passing installation method instead of description to
- install_any::getFile
- Add a wait message when downloading hdlists from network
-
- * share/po/fr.po: Translation nit
-
- * install_any.pm: Add an explicit error message instead of a built-in
- cryptic one (bug #14243)
-
-2005/03/04 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/03/04 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/default.pm:
- - Let printerdrake recognize if the user edited /etc/cups/client.conf
- manually.
-
-2005/03/03 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/03/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * detect_devices.pm: add ralink RT2x00 interfaces type in comment
-
- * network/netconnect.pm: delete gateway settings if gateway device is
- invalid too (#11761)
-
-2005/03/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: Added translation for "recommended"
- string
-
-2005/03/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm, install_any.pm: perl_checker fixes
- Add a progress bar when copying rpms from the media to the hard disk
-
- * commands.pm: Avoid unnecessary stats.
-
- * share/po/nb.po: Fix .po syntax
-
-2005/03/03 shivahuang
-
- * share/po/zh_TW.po: updated po files
- updated po files
-
-2005/03/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
-2005/03/03 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Sync with Arabeyes CVS
-
-2005/03/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: refresh every second, and do not reread network
- conf at each refresh
-
- * network/netconnect.pm: delete gateway settings if reconfiguring the
- gateway interface to dhcp
-
-2005/03/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po: fixed menu
-
- * share/po/af.po: updated po file
- small fix in Afrikaans file
-
- * share/po/bg.po: fixed menus
-
-2005/03/02 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: handle boot-as and master-boot (bugzilla #13846)
- fix comment
-
- * Xconfig/xfree.pm: add the various "names" for standard resolutions
- sort CVT_ratios by preference
- "keyboard" InputDevice can also be called "kbd"
-
- * install_any.pm: screenshot_dir__and_move(): use /tmp which is ramdisk
- instead of /tmp/stage2 which is now always read-only
-
-2005/03/02 rstandtke
-
- * share/po/de.po: some additions
-
-2005/03/02 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Made the "(recommended)" in the printer/driver lists translateable
- (bug
- 10651)
-
- * share/rpmsrate:
- - Let hardware-specific GUI tools for HP printers not be installed by
- default
- during installation. They get only preloaded now, so that printerdrake
- can install them if needed (bug 13957).
-
-2005/03/02 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/03/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix 10.2-0.35mdk's changelog
- 10.2-0.35mdk
-
- * ugtk2.pm (create_scrolled_window) Gtk2::Html::View has native scrolling
- support and
- thus behave badly with GtkViewport
-
-2005/03/01 Daouda Lo <daouda at mandrakesoft.com>
-
- * any.pm:
- - webclient alternative is obsolete, launch browser with new
- /usr/bin/www-browser
- - check and launch browser according to wm
-
- * standalone/drakbug:
- - load link with /usr/bin/www-browser
- - use any::launch_browser_with_wm func to launch better suited
- browser
-
- * standalone/drakhelp:
- - load link with /usr/bin/www-browser
- - use any::launch_browser_with_wm
-
-2005/03/01 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: add i18n packages for mozilla-firefox
-
-2005/03/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/probing.c: do not show a dialog box before loading network or
- SCSI drivers, we'll
- load it anyway ...
-
- * diskdrake/interactive.pm: remember encryption algorithm
- allow to choose encryption algorithm (#13472)
-
-2005/03/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po: corrected syntax error
-
-2005/03/01 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: more proof reading
-
-2005/03/01 pjetur
-
- * share/po/is.po: Small fixes
-
-2005/03/01 Pixel <pixel at mandrakesoft.com>
-
- * interactive.pm: when testing, don't silently default to newt
-
- * mygtk2.pm: stringify using a perl_checker compliant way
- - handle {list_ref} in ComboBox
- - handle more than one {ref} per widget
- - check that the string value of the ref doesn't change when it is set
- (maybe we should remove the REF or SCALAR prefix?)
-
- * Xconfig/monitor.pm: fix typo
- create {preferred_resolution} out of the edid detailed_timings and use
- it
- skip detailed_timings flagged bad_ratio
-
- * bootloader.pm: fix buggy get_append_memsize() (bugzilla #13874)
-
- * Xconfig/resolution_and_depth.pm: add a ratio choice, and restrict the
- resolutions to this choice
- - sort the whole resolutions to simplify the code, and get better
- choices
- - add a failsafe resolution
- create {preferred_resolution} out of the edid detailed_timings and use
- it
-
- * Xconfig/xfree.pm: add 1280x600 for VAIO PCG-C1M (bugzilla #5192)
- give up trying to only add modelines not defined in xorg, otherwise xorg
- will prefer the modelines we give here (eg: it will use 1024x768@50
- whereas it could use 1024x768@60)
- - when setting a resolution, create associated gtf modelines for
- various standard vfreqs
- (but don't do it for builtin_ModeLines (cf vesamodes and extramodes in
- xorg))
- - drop the Dell modelines (this is now cleanly handled)
- - drop the Vaio modeline (but this modeline was not gtf, will it work
- with the gtf modeline?)
- - export {ModeLine} raw to allow playing with pre_comment
-
- * Xconfig/parse.pm: fix section with only comments (putting the comment
- after the EndSection is wrong)
-
- * lang.pm: configure iocharset and codepage option for hal
-
-2005/03/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Make sure that recommended driver is preselected in expert mode,
- even if the
- recommended driver is a manufacturer-supplied PPD with language tag.
- - Added possibility to add a remote LPD printer in beginner's mode
- (bug 13734)
- - Fixed incorrect display of accentuated characters in PPD options
- also for
- boolean options (bug 13928)
- - Let detected LPD printer model be shown in a pop-up window and not
- in the
- add printer wizard
- - Let detected socket printer model be shown if the IP/port was
- manually
- entered
- - Small fix on selection of test pages
- - Fixed add printer wizard ("Previous" and "Cancel") for printerdrake
- being
- run embedded in the MCC (bug 13929).
-
-2005/03/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm (get_eth_cards) workaround buggy kernel until
- provided patch got applied (#12609)
- (get_eth_cards) backport fixes from HEAD:
- - workaround buggy kernel until provided patch got applied (#12609)
- - do not rely on broken ethtool from hostap drivers (#13979)
-
- * ugtk2.pm (Gtk2::ComboBox::set_popdown_strings) clear model before
- filling the list
-
- * share/rpmsrate: do not install gftp with gnome, it's not HIG compliant,
- it's not
- gtk+2, it's bog prone and browser & nautilus are better
-
- * Makefile.drakxtools, Makefile: fix build after pixel's pass
-
- * drakxtools.spec: 10.2-0.34mdk
- 10.2-0.33mdk
-
- * share/po/fr.po: fix bogus translation
-
-2005/02/28 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/28 mbukovjan
-
- * share/po/cs.po: Updated Czech translation.
-
-2005/02/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/ethernet.pm: do not rely on broken ethtool from hostap drivers
-
- * drakxtools.spec: add net_applet menu entry
-
- * network/netconnect.pm: enhance "wrong network mask format" message
- (#10712)
- allow to modify DHCP timeout
- handle PEERYP and PEERNTPD too (#9982)
- peerdns support (and assorted space fixes)
- apply USERCTL settings for modems too
-
- * standalone/net_applet: netprofile support, allow to select watched
- interface
-
- * standalone/drakconnect: enhance "wrong network mask format" message
- (#10712)
-
- * network/network.pm: write DHCP_TIMEOUT for DHCP connections
- write PEERYP and PEERNTPD for DHCP connections
- write PEERDNS for DHCP interfaces
-
-2005/02/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fr.po: updated French file
-
- * keyboard.pm: define 'compose:rwin' in XkbOptions when
- $keyboard->{GRP_TOGGLE}
- is different than "rwin_toggle" and also when $keyboard->{GRP_TOGGLE}
- is not defined.
-
- * share/po/sl.po: updated Slovenian file
- updated Slovenian file
-
- * share/po/vi.po: updated Vietnamese file
-
- * share/po/fa.po, share/po/nl.po, share/po/it.po, share/po/bs.po,
- share/po/sk.po, share/po/br.po, share/po/cy.po, share/po/et.po,
- share/po/ja.po, share/po/da.po, share/po/pt.po: updated Welsh, Persian,
- Italian adn Japanese files;
- ran msgmerge on all *.po files
-
-2005/02/28 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: minor fixes
- updates from eskild hustvedt:)
- a few fixes
-
-2005/02/28 Pixel <pixel at mandrakesoft.com>
-
- * rescue/make_partimage_save_rest_all, rescue/make_rescue_img:
- - in rest_all, try to restore from the cdrom
- - remove the debugging setting of leia as the partimage server
-
- * Xconfig/resolution_and_depth.pm:
- - remove ddcxinfos, replaced by monitor-edid (which is in a separate
- package)
- - add many resolutions (they are structured by aspect ratio for next
- move)
- - put the "Monitor preferred modeline" from EDID in xorg.conf
- - for this ModeLine must be exported from the monitor section
- - specifying a VendorName|ModelName in auto_inst is valid, don't
- overwrite it with edid probe
- - the strange /dev/zero needed (?) by ddcxinfos is no more needed
- - field {size} is now {diagonal_size}, and is no more "corrected"
- - add @CVT_ratios and @CVT_vfreqs (unused at the moment)
- - Getopt::Long is needed by monitor-parse-edid
- - drop hashes
- - handle lower than 640 resolutions
- (prepare for next move, introducing aspect ratio in choose_gtk)
-
- * mdk-stage1/disk.c, mdk-stage1/cdrom.c, mdk-stage1/stage1.h,
- mdk-stage1/tools.c, mdk-stage1/directory.c: new option "keepmounted" to
- allow the rescue media to be kept mounted
-
- * Xconfig/various.pm, any.pm, Makefile.config, drakxtools.spec,
- share/list, Xconfig/xfree.pm, Makefile.drakxtools, Xconfig/monitor.pm,
- tools/Makefile, install2.pm:
- - remove ddcxinfos, replaced by monitor-edid (which is in a separate
- package)
- - add many resolutions (they are structured by aspect ratio for next
- move)
- - put the "Monitor preferred modeline" from EDID in xorg.conf
- - for this ModeLine must be exported from the monitor section
- - specifying a VendorName|ModelName in auto_inst is valid, don't
- overwrite it with edid probe
- - the strange /dev/zero needed (?) by ddcxinfos is no more needed
- - field {size} is now {diagonal_size}, and is no more "corrected"
- - add @CVT_ratios and @CVT_vfreqs (unused at the moment)
- - Getopt::Long is needed by monitor-parse-edid
-
- * rescue/list: add xfs_repair to the rescue (bugzilla #10488)
-
- * bootloader.pm: fix typo
- have install.sh 755 (as suggested by Vincent Meyer)
-
-2005/02/28 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: Make regexps a bit more lenient.
-
-2005/02/28 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Bugzilla 13998 - Sort list of nbis.
- Bugzilla 14031 - cleint files created as char devices.
-
-2005/02/28 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm, install_steps_interactive.pm:
- - Let country and not language decide about default paper size
-
-2005/02/28 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/02/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix adding net_applet menu entry
- 10.2-0.32mdk
-
- * share/po/br.po: update
- typo fixes
-
-2005/02/28 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic QA
- QA for Arabic
-
-2005/02/27 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/27 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
- Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
-
-2005/02/26 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: translated new 78 messages
-
-2005/02/26 vljubovic
-
- * share/po/bs.po: Latest changes to Bosnian files
-
-2005/02/25 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2005/02/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: write USERCTL too
-
- * network/netconnect.pm: pre-detect modem device (instead of mouse device
- ...) and do it at the
- right place
- remove debug code (spotted by Pixel)
- allow to enable USERCTL
- space fixes
- space fixes
- allow to select "unlisted" provider in adsl provider list
-
- * network/tools.pm: do not ask for root password if interface allows
- USERCTL
-
-2005/02/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po: updated Bengali file
-
- * share/po/wa.po: small update
-
- * share/po/sv.po, share/po/gl.po: updated Swedish file; corrected
- "default:LTR" entry for Galician
-
- * keyboard.pm: changed keyboard to "us" for Chinese
-
-2005/02/25 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: now that i understand hsync and vsync,
- i can filter using HorizSync much more nicely :)
-
-2005/02/25 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Driver "oki4w" was renamed to "oki4drv". Adapted printerdrake
- appropriately
-
-2005/02/25 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
- updated slovak translation
-
-2005/02/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakxtv: perl_checker fixes
-
- * standalone/drakfont (backend_mod) fix uninstalling fonts (#9324)
- (backend_mod) fix uninstalling fonts (#9324)
- rollback unwanted changes
- (backend_mod) fix uninstalling fonts (#9324)
-
- * drakxtools.spec: 10.2-0.31mdk
- 10.2-0.30mdk
-
- * share/po/ja.po: fix wrong key accelerator (#13540)
-
- * standalone/draksec: rollback unwanted changes
-
- * standalone/logdrake: simplify
- perl_checker fixes
-
- * share/po/br.po: update
-
- * standalone/drakconnect: perl_checko fixes (especially fix wrong message)
-
-2005/02/24 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation.
-
-2005/02/24 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/02/24 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- soft/control-center/po/da.po soft/mdkonline/po/da.po
- soft/urpmi/po/da.po gi/perl-install/share/po/da.po
-
-2005/02/24 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/02/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: do not update kde config file if kde isn't installed
- (spotted by Mathieu Geli)
- fix typos
- minimal WPA support
- always restart wlan-ng interface
- move wlan-ng stuff in network::network
-
- * network/tools.pm: minimal WPA support
-
- * network/netconnect.pm: minimal WPA support
- move wlan-ng stuff in network::network
- space cleanup
- spaces cleanup
-
-2005/02/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * standalone/net_applet: no space before question marks in English
- no space after colon in English
-
- * printer/printerdrake.pm: move "HPOJ" and "HPLIP" as parameters of
- translatable strings,
- so common phrases need to be translated only once.
- perl_cheker doesn't like a line break between function name and
- parenthesis
-
- * share/po/nn.po, share/po/wa.po: updated Walloon file
- updated pot file
-
- * share/po/da.po, share/po/eu.po: updated Basque and Danish files
- updated pot file
-
- * share/po/es.po: updated Spanish file
- updated pot file
-
-2005/02/24 Pixel <pixel at mandrakesoft.com>
-
- * fs/mount_options.pm: if we remove a weird option, also remove nodev,
- noexec and nosuid
- (but don't do it everytime, since those options can be usefully used for
- /tmp for example)
- fix typo
- fix typo
- fix typo
-
-2005/02/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/lt.po: merge in strings from urpmi & rpmdrake
-
- * standalone/drakups: perl_checker fixes
- fix reading UPS db: some UPS have the same name but differes in the
- way they're plugged into the system (eg: USB vs serial cable), so we
- need to differ them through the "extra" field
- adapt to new Libconf API
-
- * share/po/br.po: merge in strings from urpmi & rpmdrake
- update
- minor update
-
- * drakxtools.spec: 10.2-0.29mdk
-
- * .perl_checker: blacklist bad Libconf package
-
- * share/po/eo.po: merge in strings from urpmi & rpmdrake
- update
-
- * share/po/id.po, share/po/ro.po, share/po/mk.po, share/po/th.po,
- share/po/af.po, share/po/az.po, share/po/sr@Latn.po, share/po/ko.po,
- share/po/bg.po, share/po/lv.po: update
-
- * standalone/drakxtv: explain
- fix #13865: scan TV channels for TV ocards that do not require any
- driver configuration
-
-2005/02/24 willysr
-
- * share/po/id.po: Updated
-
-2005/02/23 fisher
-
- * share/po/uk.po: ukrainian tr-tion update
-
-2005/02/23 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakconnect: remove spurious spaces
-
- * network/modem.pm: remove all non-digit characters in phone number
- (#10813)
-
- * network/network.pm: handle wpa_supplicant files
-
-2005/02/23 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: fix
-
- * interactive/gtk.pm:
- - fix displaying "Advanced" instead of "Basic" in advanced_state by
- default
- - cleanup
-
- * ugtk2.pm: fix usage of create_file_selector()
-
- * common.pm: cleanup is_xbox() here too
-
- * detect_devices.pm: write code correctly
- "pae" flag in the cpu is needed for new kernel
- SuSE also have "Hand Held" as a laptop (ch_type in { 8, 9, 10, 11, 14 })
-
-2005/02/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Force to open file selector as a modal window (bug 13942)
-
- * share/po/zh_TW.po: Fix missing \n
-
-2005/02/23 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * keyboard.pm, detect_devices.pm, common.pm, Xconfig/monitor.pm,
- Xconfig/xfree.pm: XBox support - XFdrake
-
- * standalone/drakbackup, standalone/drakTermServ: Drop banner, using up
- too much window space. Perl_checker mods.
-
-2005/02/23 shivahuang
-
- * share/po/zh_TW.po: merge correctly between 1.352 and 1.353
-
-2005/02/23 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed bug of accentuated characters in PPDs not correctly reproduced
- in the
- printer options dialog.
-
- * printer/main.pm:
- - Made possible modifying the options on a non-Foomatic queue not set
- up
- with printerdrake.
-
-2005/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_any.pm (default_packages) setup acerk for another laptop (which
- doesn't need
- any option)
-
- * network/adsl_consts.pm: add norwegian ADSL providers (Eskild Hustvedt)
-
- * share/po/br.po: update
-
-2005/02/23 vljubovic
-
- * share/po/bs.po: Fixes in Bosnian translation
-
-2005/02/22 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: finished translation for 10.2
-
-2005/02/22 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
- melo
-
-2005/02/22 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: reflect new label from drakconf
- disable activefw by default
-
-2005/02/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po: updated Bengali file
-
- * share/po/ky.po: updated Kirghiz file
-
- * share/po/sl.po: updated Slovenian file
-
-2005/02/22 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm, pkgs.pm: Verify free space on disk for copying
- rpms
-
- * install_any.pm: Fix location of hdlist for rpms copied on disk
-
-2005/02/22 rstandtke
-
- * share/po/de.po: some fixes
-
-2005/02/22 shivahuang
-
- * share/po/zh_TW.po: updated po files
-
-2005/02/22 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Corrected default settings for printer auto-detection in beginner's
- mode
-
-2005/02/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfont (interactive_mode) typo fix
-
- * standalone/drakconnect, standalone/net_applet: reuse the very same
- message
- unbreak blino change: reuse string from mcc since that's what will be
- displayed and allter *all* callers
-
- * drakxtools.spec: 10.2-0.28mdk
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: merge missing strings from mcc's
- domain
-
- * share/rpmsrate, lang.pm: adapt to new uim splitting
-
-2005/02/22 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic QA
-
-2005/02/21 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/02/21 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakids: add an explanation about the Gtk2::SimpleList
- workaround
- uggly workaround of Gtk2::SimpleList bugs
-
-2005/02/21 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: fix scim-anthy appearing twice
-
-2005/02/21 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/data.pm:
- - Removed "gpr" from the packages to be installed. It is taken from
- the distro
- because it is not maintained anymore.
-
-2005/02/21 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/02/21 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: part. update
-
-2005/02/21 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/02/21 mareklaane
-
- * share/po/et.po: Translation fixes.
-
-2005/02/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po: updated Slovenian file
-
-2005/02/21 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: do URPM::add_macro in write_langs(), and require URPM instead
- of using it
- (for now it's only used during install) (bugzilla #13796)
-
-2005/02/21 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/02/20 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: New koi8-u font size. bug#13809
-
-2005/02/20 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation
-
-2005/02/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakfont: perl_checker fixes
- really use the file selection message
- allow to select multiple files
-
-2005/02/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: keyboard values for "lb" language.
-
-2005/02/20 pjetur
-
- * share/po/is.po: End of days work
- End of another day
-
-2005/02/20 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/scannerdrake:
- - Let unsupported scanners be visibly marked in the scanners list (bug
- #12049)
- - Load kernel modules (and make them loaded on boot) if specified in
- ScannerDB
- - Tell user if his scanner requires manual editing of config files to
- work
- (the appropriate scanner models are marked in ScannerDB)
-
-2005/02/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: small typo fix
-
- * keyboard.pm: small fix
-
-2005/02/19 pjetur
-
- * share/po/is.po: More translations
-
-2005/02/19 Till Kamppeter <till at mandrakesoft.com>
-
- * scanner.pm:
- - Added support for the new keywords MANUAL, MANUALREQUIRED, and
- KERNEL in the
- scanner database
-
-2005/02/18 fisher
-
- * share/po/uk.po: translation update
-
-2005/02/18 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: scim-chinese has been renamed to scim-pinyin.
-
- * share/rpmsrate: uim has a new gtk frontend
- scim-chinese has been renamed to scim-pinyin.
-
-2005/02/18 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/activefw.pm: support GetReports method
-
- * standalone/net_applet: remove spurious spaces
- show unprocessed attacks when the applet starts
- store attacks in a queue instead of blocking DBus bus with a Gtk2 main
- loop
- let the daemon handle the blacklist policy in automatic mode
-
- * standalone/drakgw: indentation/spaces cleanups
-
- * Makefile.config, drakxtools.spec, Makefile.drakxtools: don't package
- drakids for now
-
-2005/02/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: a small note so I don't forget why I did it that way
-
- * share/po/sl.po: updated po file
- updated Slovenian file
-
- * share/po/pt.po: updated Slovenian file
-
-2005/02/18 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm, partition_table.pm: media_browser returns
- a filehandle when non save
-
- * any.pm: really fix the typo!
- fix typo
- factorize code in ask_window_manager_to_logout_then_do()
-
- * install_any.pm:
- - add HTTP support in media_browser
- - HTTP support is non save only
- media_browser returns a filehandle when non save
-
- * diskdrake/interactive.pm: use ->ask_filename instead of ->ask_file (esp.
- useful in "save" mode)
- factorize code in ask_window_manager_to_logout_then_do()
- don't reboot if the window manager did not exit
- media_browser returns a filehandle when non save
-
- * install_steps.pm: generated auto_install.cfg.pl can contain a somewhat
- empty printer config, but not really empty
- don't let upNetwork break /etc/protocols when the install is not done
- yet
- generated auto_install.cfg.pl can contain a somewhat empty printer
- config, but not really empty
- generated auto_install.cfg.pl can contain a somewhat empty printer
- config, but not really empty
-
- * standalone/XFdrake: factorize code in
- ask_window_manager_to_logout_then_do()
-
- * mdk-stage1/directory.c: fix using the mirror tree when there is an iso
- at the root of the mirror but we don't use it (or can't use it)
-
- * interactive.pm: ensure the "range" entry returned value is bounded as
- asked
- (useful for backends not handling "range" correctly, like
- interactive::newt)
- (bugzilla #13744)
-
-2005/02/18 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * detect_devices.pm: Detect XBox, don't probe for floppy on XBox.
-
-2005/02/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: prefer uim-qt for japanese under KDE
-
- * share/po/ga.po: update
-
-2005/02/18 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Sync with Arabeyes CVS -> 100% Arabic translation :-)
-
-2005/02/17 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * Makefile: probe.c is located in c/
-
- * network/shorewall.pm: definitively get rid off net_cnx scripts
- add get_default_device
- remove unneeded test
- use network::shorewall::get_net_device
- add and use network::shorewall::get_net_device
-
- * network/netconnect.pm: titifix
- perl_checker fix
- remove unused network::netconnect::get_net_device
-
- * standalone/drakconnect: fix typo
- perl_checker fixes
- don't use net_cnx_up anymore
-
- * network/tools.pm: perl_checker fixes
- revert some previous commit
- net_cnx scripts shouldn't be used anywhere now
- remove set_cnx_script
- remove write_cnx_script
-
- * standalone/drakvpn: perl_checker fixes
- use network::shorewall::get_net_device
-
- * drakxtools.spec: ship drakids in drakxtools
- do not ship activefw.pm in drakxtools-backend but in drakxtools
-
- * Makefile.drakxtools: move drakids in /usr/bin
-
- * standalone/drakids: clear white list too
-
- * standalone/net_applet: allow to enable automatic mode from popup
- use only one 'edge' ButtonBox
-
- * standalone/drakgw: perl_checker fixes
- use network::shorewall::get_net_device
- net_cnx scripts shouldn't be used anymore
-
- * Makefile.config: ship drakids
-
-2005/02/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/ltg.po, share/po/nb.po, share/po/uz.po,
- share/po/sk.po, share/po/ru.po, share/po/pt_BR.po, share/po/br.po,
- share/po/is.po, share/po/sl.po, share/po/nn.po, share/po/et.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/nl.po, share/po/it.po, share/po/uk.po,
- share/po/eu.po, share/po/es.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/de.po, share/po/fi.po, share/po/he.po,
- share/po/cy.po, share/po/da.po, share/po/cs.po, share/po/uz@Latn.po:
- updated Slovenian file;
- fixed various MandrakeSoft -> Mandrakesoft etc.
-
-2005/02/17 pjetur
-
- * share/po/is.po: cleaning up more
-
-2005/02/17 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: in case someone use diskdrake only to create
- partitions, shut up the predefined mount point automatic choice
-
- * detect_devices.pm, install_any.pm:
- - create dmidecode_category()
- - don't use field {string} when not needed
- - better use regexps on dmidecode returned strings (even the kernel
- use strstr)
-
-2005/02/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: perl_checko cleanup
-
- * standalone/keyboarddrake: simplify
-
- * share/rpmsrate: only install gnome-volume-manager for KDE & GNOME
- desktops
- KDE uses gnome-volume-manager too
- install cpufreqd on laptops w/o KDE (#13697)
-
- * share/po/br.po: update
-
-2005/02/16 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: install nautilus-filesharing when installing nautilus
- install desktop-printing when installing GNOME
-
-2005/02/16 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakids: use foreach (perl_checker)
- fix whitelist display and unwhitelist call
- use drakfirewall icon
- handle Whitelist signal
- handle whitelist
- allow to sort blacklist by date, attacker or attack type
-
- * standalone/net_applet: rename get_mode as get_interactive
-
- * network/activefw.pm: rename get_mode as get_interactive
- add generic call_method sub to factorize
- typo fix
- handle whitelist
-
-2005/02/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po: updated Slovenian file
- updated Slovenian file
-
- * share/po/vi.po: updated Vietnamese file
-
-2005/02/16 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: More updates:)
- minor update
-
-2005/02/16 Pixel <pixel at mandrakesoft.com>
-
- * patch/patch-updatemodules.pl: for the real 10_1, not the 10_1-update
- branch
-
-2005/02/16 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - If a printer is set up with HPLIP and has still an old HPOJ
- configuration,
- it will be automatically removed now.
-
-2005/02/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: list usb mice that have not driver set as "Mouse:xxx"
- in usbtable (#13575)
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/compssUsers.pl, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/uz@Latn.po: typo fix (Per Oyvind Karlsen)
-
- * standalone/keyboarddrake: better display of keyboard layouts by using a
- tree (rationale: big
- pull-down menu is slow to browse)
-
- * share/rpmsrate: rollback
- typo fix (Per Oyvind Karlsen)
- include more EVMS packages
-
- * drakxtools.spec: 10.2-0.27mdk
-
- * share/po/br.po: typo fix (Per Oyvind Karlsen)
- update
- update
- typo fixes
-
-2005/02/16 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation (sync with arabeyes CVS)
-
-2005/02/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakids: perl_checker fixes
- delete unblacklisted entries from the list
- handle Init signal (look again for daemon if received)
- clear blacklist when needed
- add quit button
- initial import
-
- * standalone/net_applet: fix typo again
- fix typo
- remove unneeded variable
- use network::activefw;
-
- * network/activefw.pm: allow to look for daemon after startup
- add unblacklist
- initial import
-
-2005/02/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: corrected encoding
-
- * share/po/sr@Latn.po: fixed cyrillic mix
-
- * share/po/th.po: small fix
- small fix
-
- * share/po/sl.po: updated Slovenian file
-
-2005/02/15 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: More updates again!:)
- Even more fixes:)
-
-2005/02/15 Pixel <pixel at mandrakesoft.com>
-
- * mygtk2.pm: add FileChooser creation and rollback ugly ->run thing
- (hopefully now unneeded)
-
- * ugtk2.pm: _ask_dir and _ask_file now use FileChooser
-
- * tools/cvslog2changelog.pl: fix typo
-
- * install_steps_gtk.pm, diskdrake/interactive.pm, install_any.pm,
- install_steps_interactive.pm: replace load/save from floppy with using
- media_browser()
-
- * interactive/gtk.pm, interactive.pm: create ->ask_filename and
- ->ask_directory to replace ->ask_file
-
-2005/02/15 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix bug 13661 : umounting a supplementary CD wasn't done
- cleanly after failure
-
- * install_steps_gtk.pm, pkgs.pm: Support media size check when copying
- every rpm on HD
-
-2005/02/15 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Force only ASCII letters, numbers, and
- underscores being used in print queue names.
-
-2005/02/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/id.po, share/po/ru.po,
- share/po/gl.po, share/po/pt_BR.po, share/po/br.po, share/po/th.po,
- share/po/sl.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/be.po, share/po/mn.po, share/po/ko.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/lt.po,
- share/po/ca.po, share/po/tg.po, share/po/uz.po, share/po/mk.po,
- share/po/ro.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, share/po/zh_TW.po, share/po/ta.po, share/po/sq.po,
- share/po/sr@Latn.po, share/po/eo.po, share/po/bg.po, share/po/el.po,
- share/po/lv.po: update
-
-2005/02/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/activefw.pm: initial import
-
- * standalone/net_applet: remove unneeded variable
- use network::activefw;
-
-2005/02/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/th.po: small fix
- small fix
- automerging
-
- * share/po/nb.po: corrected encoding
-
- * share/po/ltg.po, share/po/ky.po, share/po/uz.po, share/po/ms.po,
- share/po/ro.po, share/po/fur.po, share/po/br.po, share/po/hr.po,
- share/po/tr.po, share/po/ta.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/ga.po, share/po/be.po, share/po/mn.po, share/po/am.po,
- share/po/ko.po, share/po/sr.po, share/po/lt.po, share/po/eo.po,
- share/po/el.po, share/po/lv.po, share/po/uz@Latn.po: automerging
-
-2005/02/15 Per Øyvind Karlsen <peroyvind at linux-mandrake.com>
-
- * share/po/nb.po: Even more fixes:)
-
-2005/02/15 Pixel <pixel at mandrakesoft.com>
-
- * mygtk2.pm: add FileChooser creation and rollback ugly ->run thing
- (hopefully now unneeded)
-
- * install_steps_gtk.pm, diskdrake/interactive.pm, install_any.pm,
- install_steps_interactive.pm: replace load/save from floppy with using
- media_browser()
-
- * ugtk2.pm: _ask_dir and _ask_file now use FileChooser
-
- * tools/cvslog2changelog.pl: fix typo
-
- * interactive/gtk.pm, interactive.pm: create ->ask_filename and
- ->ask_directory to replace ->ask_file
-
-2005/02/15 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm, pkgs.pm: Support media size check when copying
- every rpm on HD
-
-2005/02/14 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: Modified font settings for zh_CN and zh_TW, 10pt would be fine
- to New Sung
- rather than 14pt.
-
-2005/02/14 peroyvind
-
- * share/po/nb.po: Updates from Eskild Hustvedt:)
-
-2005/02/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (probeSerialDevices) simplify
-
- * standalone/service_harddrake: better style
-
-2005/02/13 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: updated Japanese file
-
-2005/02/13 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: protect against bad depth (may occur on ppc?)
-
-2005/02/13 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * drakconf, DrakX
-
-2005/02/13 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm: Allow HPLIP setup also when
- setting up the print queue manually.
-
-2005/02/12 mbukovjan
-
- * share/po/cs.po: Updated Czech translations
-
-2005/02/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po, share/po/DrakX.pot: updated Basque file
-
- * share/po/cy.po: updated Welsh file
-
-2005/02/12 rstandtke
-
- * share/po/de.po: some additions
-
-2005/02/11 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: GNOME is now using gnome-volume-manager instead of
- magicdev
- -install GNOME software if GNOME AND KDE are selected at install
- -install gthumb instead of gqview
- -install sound-juicer and rhythmbox for sound and GNOME
-
-2005/02/11 fisher
-
- * share/po/uk.po: translation update
-
-2005/02/11 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * tools/ddcprobe/Makefile: ppc fixes (danny)
-
-2005/02/11 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/11 mareklaane
-
- * share/po/et.po: Updated and fixed translation.
-
-2005/02/11 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * lang.pm: Don't use the RPM_LANG_INSTALL environment variable anymore
-
- * install_any.pm: Sort media names in recapitulative message
-
-2005/02/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: fix removing a PCMCIA controller
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/advertising/10.pl, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: fix CD-ROM acronym
-
- * drakxtools.spec: 10.2-0.25mdk
-
- * harddrake/sound.pm: align
- add snd-hdspm & snd-indigo
- add snd-emu10k1x
-
- * pkgs.pm: do not favor perl-GTK
-
- * modules.pm: add various/crypto category (support for hardware
- accelerated crypto)
- (write_preload_conf) preload padlock driver for VIA C3 that have RNG
- (crypto hw) enabled
-
-2005/02/11 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation + a few fixes
- Arabic translation
-
-2005/02/10 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/02/10 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fr.po: updated Slovenian file
- updated French file
-
- * share/po/sl.po: updated Slovenian file
-
-2005/02/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/list: include dmraid
-
- * share/rpmsrate: install hotkeys even when KDE isn't selected
-
- * docs/HACKING: add another required package (dmraid)
-
- * detect_devices.pm (isTVcard) better style
- (probeSerialDevices) really "install" serial modules
-
-2005/02/10 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Sync with arabic translation CVS
-
-2005/02/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fr.po: updated French file
-
- * share/po/ja.po: updated Japanese file
-
-2005/02/10 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm:
- - Added help text for printers used with HPLIP.
- - Let "ask_warn()" messages not embed in the wizard, this breaks the
- "Cancel" button (help texts when MF device queue is added).
-
- * printer/printerdrake.pm: Tell that card reader is USB storage in the
- HPLIP help text only if the device is actually connected via USB.
- - Added help text for printers used with HPLIP.
- - Let "ask_warn()" messages not embed in the wizard, this breaks the
- "Cancel" button (help texts when MF device queue is added).
-
-2005/02/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (isTVcard) only look for drivers configurable by
- drakxtv
- (getTVcards) rely on "multimedia/tv" category
- add various/serial category and thus add support for mice and modems
- connected to multiport serial cards
- add network/modem category, thus adding support for ACP (Mwave) modems
-
- * network/netconnect.pm: fix ndiswrapper installing: always install it if
- needed (btw run faster if
- already installed)
- fix stepping back from lan interface step (impossible when using
- ndiswrapper
- and when there's only one interface)
- simplify ndiwrapper step chaining
-
- * drakxtools.spec: typo fix in 10.2-0.24mdk's changelog
- 10.2-0.24mdk
- fix 10.2-0.23mdk's changelog
- 10.2-0.23mdk
-
- * modules.pm (write_preload_conf) typo fix
- (write_preload_conf) rely on "multimedia/tv" category, thus managing
- more TV cards
- (write_preload_conf) minimal joystick support: preload proper modules
- (though
- only those on sound cards from Creative Labs and Fortemedia are
- detectable by
- pci_probe()...)
- (write_preload_conf) simplify and support multiple different AGP
- controllers
- (though unprobable)
- (write_preload_conf) minimal DVB support: preload proper modules
- add various/laptop category (only toshiba is detectable by pci_probe()
- though...)
-
- * mygtk2.pm (main) fix FileSelection (inactive & unusable window)
-
- * share/po/br.po: update
-
- * standalone/drakxtv: do not complain about no tv cards when there're but
- they do not
- require any configuration beyond loading proper module (#7443, #11270
- and the like)
-
- * harddrake/data.pm: do not detect speakers as keyboards
- rely on new "multimedia/webcam" category for detecting webcams
-
-2005/02/09 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: perl_checker fixes
-
-2005/02/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/eu.po,
- share/po/lv.po, share/po/hu.po, share/po/id.po, share/po/ru.po,
- share/po/br.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/ta.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/eo.po,
- share/po/el.po, share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po:
- updated pot file
-
- * share/po/sv.po, share/po/nb.po: updated pot file
- updated Swedish and Norwegian files
-
- * share/po/it.po: updated Italian file
- updated pot file
-
- * share/rpmsrate: Arabic-only fonts are useless for "fa" or "ur" locales
-
- * share/po/fa.po: updated Persian file
- updated pot file
-
- * share/po/es.po: updated po file
- updated pot file
-
- * lang.pm: changed arabic font for KDE ("Roya" doesn't have ascii glyphs;
- "Terafik" does)
-
-2005/02/09 peroyvind
-
- * share/po/nb.po: * translate the word "daemon" to norwegian
- * various corrections
- updated
-
-2005/02/09 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: fix ugly typo (especially causing acpi to not be set in
- drakboot --boot)
-
-2005/02/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Add the possibility to call a callback just after widget
- initialisation in
- ask_browse_tree_info_given_widgets().
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- Make an error message more user-friendly
-
- * install_any.pm: Make an error message more user-friendly
- make perl_checko, the little bot, happy
- Remove "Cancel" button from the supplementary media selection window
-
-2005/02/09 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Added automatic setup of HP printers with
- HPLIP.
-
- * printer/main.pm: Added reading the printing technology type in the HPLIP
- model database.
- Added automatic setup of HP printers with HPLIP.
- Added subroutine to parse HPLIP device database XML file.
-
-2005/02/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * fs.pm (mount) let's support ntfs and reorder fs list btw (#3653)
-
- * drakxtools.spec: 10.2-0.22mdk
- 10.2-0.21mdk
- add bug reference in 10.1-14mdk's changelog
-
- * standalone/service_harddrake: prevent adding spurious empty lines at end
- of /etc/hotplub/blacklist on stop
-
-2005/02/08 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/08 mareklaane
-
- * share/po/et.po: Menus and some more translation fixes.
-
-2005/02/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * drakxtools.spec: start automatically net_applet in fluxbox and XFce4 too
-
-2005/02/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fr.po: updated pot file
- updated French file
- updated pot file
-
- * share/po/gl.po: updated pot file
- updated pot file
- updated pot file
-
- * share/keyboards.tar.bz2, keyboard.pm: synchronized keyboards with X11;
- added second bengali layout;
- make Serbian cyrillic use Serbian latin (isntead of "us") for latin
- layout
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/hr.po, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/mn.po, share/po/am.po,
- share/po/lt.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/uz@Latn.po: updated pot file
- updated pot file
-
- * share/po/ja.po: updated pot file
- updated pot file
- updated Japanese file
-
- * printer/printerdrake.pm: translatable string already in use
-
- * standalone/drakbug: "%s" is not a translatable thing (changed N() ->
- translate())
-
- * share/po/cy.po: updated Welsh file
- updated pot file
- updated pot file
-
-2005/02/08 peroyvind
-
- * share/po/nb.po: complete translation from Eskild:)
-
-2005/02/08 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: allow mounting isOtherAvailableFS filesystems read-only
-
- * ugtk2.pm: {rwindow} is more probably a mygtk2::MagicWindow
-
- * standalone/drakbug: cleanup this mess
-
- * fs/format.pm: workaround perl limitation
-
- * fs/type.pm: add iso9660 in isOtherAvailableFS
- detect iso9660 filesystem
-
- * fsedit.pm: when the partition table is empty, try to see if we are not
- using the plain disk
-
- * install2.pm, fs.pm, modules.pm, mdk-stage1/probing.c: new kernel doesn't
- like usbdevfs any more, it wants usbfs
-
-2005/02/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: Better wording for a couple of strings
- Don't propose to copy RPMs on disk for ISO installation method
-
- * any.pm: Allow upper case letters in users' real names.
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/ta.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- Better wording for a couple of strings
-
- * docs/HACKING: Add some more necessary RPMs
-
-2005/02/08 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed (worked around?) bug of parallel HP MF devices
- not being set up correctly with HPOJ (probably bad interaction with
- udev).
- - Corrected recognition of driver name in Foomatic-generated PPDs.
- - Conserve auto-detection data when a Foomatic printer entry is
- replaced by an
- entry from a native PostScript PPD.
-
- * printer/detect.pm:
- - Prevented restarting of HPOJ and reloading the parallel port kernel
- modules
- when printerdrake's queue generator is called by the hotplug script.
-
- * printer/printerdrake.pm: Updated device destinctions for HPOJ to the
- newest models.
- - Prevented restarting of HPOJ and reloading the parallel port kernel
- modules
- when printerdrake's queue generator is called by the hotplug script.
- Limited automatically generated print queue names to 12 characters and
- warn user if he manually enters longer names. Names longer than 12
- characters will make the printer unaccessible for certain Windows
- clients (bug #12674).
-
- * printer/data.pm: Added hplip-model-data package to be installed.
-
-2005/02/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-0.20mdk
- 10.1-27.5.101mdk
-
-2005/02/08 vljubovic
-
- * share/po/bs.po: Update translation
-
-2005/02/07 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/02/07 mareklaane
-
- * share/po/et.po: Some more translation fixes.
- First round of translation fixes ended...
-
-2005/02/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: do not require perl-Gnome2-Gconf in drakxtools, but
- use gconftool-2
- make it easy to use other GConf interfaces
-
- * network/adsl_consts.pm: add missing methods
-
- * network/netconnect.pm: select manual adsl connection type if the network
- interface was static
-
-2005/02/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * share/po/wa.po: updated Walloon file
- updated pot file
-
- * share/po/zh_TW.po, share/po/fa.po: updated Farsi file
- updated pot file
-
-2005/02/07 Pixel <pixel at mandrakesoft.com>
-
- * mygtk2.pm:
- ->get('window-position') should be done on real_window
-
- * install_steps_interactive.pm: really fix "Graphical interface - not
- configured" bug
-
- * fs/mount_options.pm: ensure some options are not set for
- directories_needed_to_boot (bugzilla #13433)
-
- * pkgs.pm: fix setting @hdlists when deselectionAllowed is false
-
-2005/02/07 shivahuang
-
- * share/po/zh_TW.po: conflicts between 1.336 & 1.337 solved
-
-2005/02/07 Till Kamppeter <till at mandrakesoft.com>
-
- * share/rpmsrate: Updated rpmsrate for new printing packages
-
- * standalone/printerdrake: Adjusted version number.
-
- * printer/data.pm: Use "hplip-hpijs" for HPIJS package.
-
-2005/02/07 mareklaane
-
- * share/po/et.po: More translation fixes.
-
-2005/02/07 Pixel <pixel at mandrakesoft.com>
-
- * fs/mount_options.pm: ensure some options are not set for
- directories_needed_to_boot (bugzilla #13433)
-
- * pkgs.pm: fix setting @hdlists when deselectionAllowed is false
-
-2005/02/06 mareklaane
-
- * share/po/et.po: More translation fixes.
- More translation fixes.
- Fixed translations.
-
-2005/02/06 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Adapted printerdrake to new printer drivers
- packages.
-
- * printer/data.pm: Added "hplip-hpijs-ppds" to be installed when
- printerdrake is started.
- Adapted printerdrake to new printer drivers packages.
-
-2005/02/05 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/02/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm, network/tools.pm: basic ndiswrapper support
-
- * network/network.pm: remove useless message
-
-2005/02/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: changed LANGUAGE value for languages that will need renaming
- in the future (ph->fil, ltg->LTG)
-
-2005/02/05 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: \w can match non-ascii characters, so expanding it (bugzilla
- #13432). It would be better to remove accents, but i don't know how to
- do it easily
-
-2005/02/05 Warly <warly at mandrakesoft.com>
-
- * install_any.pm: fix copy_rpms_on_disks
-
-2005/02/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: gnome proxy support in drakproxy
-
- * network/netconnect.pm: handle bpalogin service
- perl_checker fixes
-
- * drakxtools.spec: 10.2-0.19mdk
-
-2005/02/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Better version to install urpmi with copied RPMs
- Make install_urpmi work when having copied every RPM on disk
-
-2005/02/04 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 10.2 logo
-
-2005/02/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: handle bpalogin service
- perl_checker fixes
- add bpalogin support for cable connections
-
-2005/02/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po, share/po/fr.po: updated French file; corrected syntax
- errors in Chinese file
-
- * share/po/vi.po: updated Vietnamese file
-
-2005/02/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Better version to install urpmi with copied RPMs
- Make install_urpmi work when having copied every RPM on disk
- call hdInstallPath only once
- Remove a debug trace, and perl_checker fixes
- Add support to copy all RPMs to the hard drive before installation.
-
- * share/po/zh_TW.po: Fix zh_TW problem
-
- * install_steps.pm, install_steps_gtk.pm, pkgs.pm,
- install_steps_interactive.pm: Add support to copy all RPMs to the hard
- drive before installation.
-
- * diskdrake/interactive.pm: Untranslated string
-
-2005/02/04 shivahuang
-
- * share/po/zh_TW.po: updated po file
-
-2005/02/04 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 10.2 logo
-
-2005/02/03 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2005/02/03 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: CAT_X at Pixel's suggestion
- Always install mozilla-firefox when NETWORKING_WWW is selected
-
-2005/02/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: updated Japanese file
-
-2005/02/03 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/main.pm: in auto, $raw_X non empty is "ok"
-
- * partition_table.pm: cleanup
-
-2005/02/03 rstandtke
-
- * share/po/de.po: some additions
-
-2005/02/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-0.18mdk
-
-2005/02/03 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabnic translation
-
-2005/02/02 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/02/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/drakfirewall.pm: fix samba port range syntax
-
- * network/isdn.pm: fix capi kernel drivers installation
- fix capi kernel drivers installation
-
-2005/02/02 Pixel <pixel at mandrakesoft.com>
-
- * rescue/make_rescue_img, rescue/make_partimage_save_rest_all: add a basic
- partimage save_all/rest_all feature
-
-2005/02/02 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/02/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: prefer beep-media-player over xmms
-
-2005/02/02 vljubovic
-
- * share/po/bs.po: Updating Bosnian translation
-
-2005/02/02 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation
-
-2005/02/01 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Update
-
-2005/02/01 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/02/01 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/02/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/drakfirewall.pm: supplement previous half-fix
- port 445 is used for Samba (without NetBios)
- use new range syntax for smb
-
-2005/02/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/cy.po: updated Italian and Welsh files
-
-2005/02/01 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: check the given mount points
-
- * loopback.pm, diskdrake/interactive.pm, fsedit.pm: $hd is now unused, no
- need to pass it
-
- * fs/type.pm: ensure isLVM() works on both the VG and the partitions
- (isLVM() on a part was already used once in fsedit::check_mntpoint())
-
- * lvm.pm: ensure {lv_name} is set for LVM partitions
-
-2005/02/01 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Restore a bunch of translation that have disappeared
-
-2005/02/01 tsdgeos
-
- * share/po/ca.po: updates
-
-2005/02/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po, share/po/ga.po: update
-
- * share/rpmsrate: like latest rxvt-CJK, rxvt-unicode works fine with SCIM
- too, but is
- multilingual too (unlike rxvt)
- install rxvt-CJK with the same priority as rxvt
-
-2005/01/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po: updated Spanish file
-
- * share/po/fr.po: updated French file
- updated French file
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/eu.po: updated Basque file
-
-2005/01/31 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/modules.c, mdk-stage1/Makefile, rescue/make_rescue_img,
- mdk-stage1/network.c, mdk-stage1/.cvsignore, mdk-stage1/network.h,
- mdk-stage1/newt-frontend.c: add a dhcp-client built using mdk-stage1
- code
-
- * mdk-stage1/stage1.c: add a dhcp-client built using mdk-stage1 code
- - have nothing talking about interactive when SPAWN_INTERACTIVE is
- unset
- - same for SPAWN_SHELL
-
-2005/01/30 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/fa.po, share/po/id.po, share/po/ru.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: s/Disk/Hard Disk/.
- from Harddrake
-
- * share/po/zh_CN.po: s/Disk/Hard Disk/. from Harddrake
- Updated Simplified Chinese translation
-
- * harddrake/data.pm: s/Disk/Hard Disk/
-
-2005/01/30 mbukovjan
-
- * share/po/cs.po: Updated Czech translations.
-
-2005/01/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
-2005/01/29 mareklaane
-
- * share/po/et.po: Small corrections (väljalasketeave -> info väljalaske
- kohta + kasutaja õige -> lisa kasutaja).
-
-2005/01/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po: updated po file
-
- * share/po/am.po: updated Amharic file
-
- * share/po/it.po: updated Italian file
-
-2005/01/28 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/Makefile: only prompt for "Additional Drivers floppy" for
- network
-
- * fs.pm, fs/type.pm, fsedit.pm, fs/mount_options.pm:
- - create fs::type::directories_needed_to_boot() and use it
- - for removable drives used for / /usr and the like, ensure we check
- it at boot time
- (bugzilla #13283)
-
- * mdk-stage1/modules.c: only prompt for "Additional Drivers floppy" for
- network
- don't prompt if no modules, otherwise "Ok" in ask_from_list_comments()
- gets a segfault
-
- * mdk-stage1/stage1.c: ensure switching between different install methods
- do not break due to IMAGE_LOCATION (/sysroot/tmp/image can be either
- symlink or a directory)
-
-2005/01/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm (console_font_files) perl_checker cleanup
-
- * share/po/pt_BR.po: typo fix (#12660)
-
- * network/ethernet.pm (configure_eth_aliases) simplify
-
- * drakxtools.spec:
- - bump Glib/Gtk+2 requires
- - 10.2-0.17mdk
-
- * standalone/service_harddrake: perl_checker cleanup
- fix PCMCIA autoconfig in harddrake service
- make --force force harddrake to eeconfigure everything
-
-2005/01/27 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakbug:
- - vincent danen patch (barely tested)
-
-2005/01/27 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- soft/control-center/po/da.po gi/perl-install/share/po/da.po
- soft/drakstats/po/da.po
-
-2005/01/27 Pixel <pixel at mandrakesoft.com>
-
- * fs/format.pm: remove log
-
- * raid.pm: switch back to auto=yes :
- > > the only problem with auto=yes is that it ignores the minor number
- > > specified and always uses the first avaliable minor number, so you
- might
- > > find /dev/md2 with minor 0, /proc/mdstat will call it based on minor
- > > number. This is going to get really confusing for users.
- > > I was planning to fix this in upstream source, but i have not been
- able
- > > to find time to do it yet.
- >
- > ok, i fixed that in mdadm-1.8.0-2mdk
- > there is a new option (auto=dev) that will create the device file with
- > the correct minor number based on the device name.
- > so please put auto=dev instead of auto=yes in the /etc/mdadm.conf
- >
- please hold the auto=dev change, the mdadm author feel this should be
- the default behaviour for auto=yes, so i will upload a new
- mdadm-1.9.0-0pre1.1mdk with fully working auto as soon as i return to
- italy (this weekend i believe)
- fix "mdadm package not installed" during install (bugzilla #13259)
-
-2005/01/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: typo fix
-
-2005/01/26 huftis
-
- * share/po/nn.po: Updated Norwegian Nynorsk translation.
-
-2005/01/26 Pixel <pixel at mandrakesoft.com>
-
- * partition_table.pm: nicer description() (esp. when the size is 0)
-
-2005/01/26 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Wizard, System Backup configuration problems
- (#13235)
-
-2005/01/26 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/01/26 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/card.pm: xorg_version is 6.8.2
-
- * install2.pm: drakx_version() is now in install_any
-
- * network/network.pm: fix (bugzilla #13197)
-
- * partition_table.pm: nicer description() (esp. when the size is 0)
-
- * mygtk2.pm: fix commented code :)
- fix return value of method calls on MagicWindow
- ->size_request doesn't return anything on the box, it is better done
- on the window (for rpmdrake)
-
- * any.pm, install_any.pm: drakx_version() is now in install_any and use
- getFile() to get VERSION
-
-2005/01/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec:
- - move convert script from spec file into standalone/convert
- - btw, do not try converting if uneeded
- 10.2-0.16mdk
-
- * standalone/convert, Makefile.drakxtools, Makefile:
- - move convert script from spec file into standalone/convert
- - btw, do not try converting if uneeded
-
-2005/01/25 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * do_pkgs.pm, drakxtools.spec: Use the new --gui option to urpmi for the
- drakxtools to ask for media
- change; update the dependency of drakxtools on urpmi version
- accordingly.
- Remove dependency on gurpmi.
-
-2005/01/25 rstandtke
-
- * share/po/de.po: some additions and fixes
-
-2005/01/25 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: fix previous commit (we don't want devfsd anymore)
-
- * install_any.pm: fix rpmsrate_always_flags() not applied (bugzilla
- #13177)
-
- * fs/format.pm: even if it still takes some time when format is over, we
- don't want the progress bar to stay at 85%
-
-2005/01/25 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Bugzilla 13138, 13139. (portmap check,
- dhcpd.conf.pxe.include)
-
-2005/01/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
-2005/01/24 mareklaane
-
- * share/po/et.po: Updated translation.
-
-2005/01/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: updated Japanese file
-
- * share/po/it.po, share/po/cy.po: updated Welsh and Italian files
-
-2005/01/24 Pixel <pixel at mandrakesoft.com>
-
- * rescue/tree/etc/rc.sysinit: create /var/log
-
-2005/01/24 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/rpmsrate: Fix duplicate flag in rpmsrate
-
-2005/01/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: fix wrong package name
-
-2005/01/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2005/01/23 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: removing code setting devfs=mount or devfs=nomount
-
- * raid.pm: put the new option auto=dev instead of auto=yes (see
- mdadm-1.8.0-2mdk)
-
-2005/01/22 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/01/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
-2005/01/22 Pixel <pixel at mandrakesoft.com>
-
- * standalone/draksplash, standalone/drakperm, diskdrake/hd_gtk.pm,
- standalone/harddrake2, standalone/drakboot, standalone/printerdrake,
- standalone/logdrake, standalone/draksec, standalone/drakfloppy,
- standalone/drakfont, standalone/drakups: fix the various transient on
- {rwindow} (or even {window} ?) not working anymore on the MagicWindow
- (maybe the code could be simplified since it should now work even when
- embedded (?))
-
- * ugtk2.pm: allow using {real_window} instead of {rwindow}{real_window}
- (esp. for set_transient_for for which we can't easily do some magic)
-
-2005/01/21 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/main.pm: fix check_valid()
- - rename Xconfig::main::is_valid() to Xconfig::main::check_valid() and
- return the cause of the error
- - ensure an empty config file doesn't make it display "Your Xorg
- configuration file is broken..."
-
-2005/01/21 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Drop quasi-pxe setup in dhcp.conf as we can use
- real pxe now.
- Perl_checker fixes.
-
-2005/01/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-0.15mdk
-
-2005/01/21 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/printerdrake:
- - main loop fix
- - remove dead code
- - cleanups
-
-2005/01/21 Pixel <pixel at mandrakesoft.com>
-
- * raid.pm:
- - don't write /etc/mdadm.conf when no raid
- - use option "auto=yes" in mdadm.conf to ensure mdadm will create
- /dev/mdX devices when needed
- (those are not there when using udev and neither kernel raid autostart
- nor initrd created the raid)
-
- * Xconfig/main.pm: fix check_valid()
- - rename Xconfig::main::is_valid() to Xconfig::main::check_valid() and
- return the cause of the error
- - ensure an empty config file doesn't make it display "Your Xorg
- configuration file is broken..."
-
- * mygtk2.pm: do show_all on the real window (this is used by drakloop)
-
- * keyboard.pm, standalone/keyboarddrake: minimal XkbModel support
-
-2005/01/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: tag devices as bridges later so that pcmcia
- controllers got a chance
- to be detected
-
- * share/po/br.po: typo fixes
- typo fixes
-
- * standalone/printerdrake: fix subdialogs when embedded in mcc
- fix banner's title by initializing mcc domain before ugtk2
-
- * drakxtools.spec: 10.2-0.14mdk
- 10.2-0.13mdk
-
- * network/adsl_consts.pm: updates from baud:
- - add "Czech Republic|Cesky Telecom"
- - add "Switzerland|Tiscali.ch"
- - add "Tunisia|Planet.tn"
- - add dns servers to "Israel|Bezeq"
-
-2005/01/21 Pixel <pixel at mandrakesoft.com>
-
- * raid.pm:
- - don't write /etc/mdadm.conf when no raid
- - use option "auto=yes" in mdadm.conf to ensure mdadm will create
- /dev/mdX devices when needed
- (those are not there when using udev and neither kernel raid autostart
- nor initrd created the raid)
-
- * keyboard.pm, standalone/keyboarddrake: minimal XkbModel support
-
-2005/01/20 Pixel <pixel at mandrakesoft.com>
-
- * commands.pm: add lspcidrake
-
- * network/shorewall.pm, network/ethernet.pm, standalone/drakconnect:
- restore previous network::ethernet::get_eth_cards_names() behaviour
- (i got hit by { map ... }; being a block and not a hash ref)
-
- * rescue/dirs: not useful anymore (maybe others are unneeded too?)
-
- * rescue/tree/etc/rc.sysinit: we want /mnt at the root of the rescue
-
-2005/01/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: snd-azx was renamed as snd-hda-intel in ALSA's CVS,
- so let's prepare
- ground for future
-
- * modules/interactive.pm (load_category__prompt_for_more)
- - fix missing help for SCSI
- - display it too for non SCSI disks that're handled as SCSI ones
- (USB, Firewire, SATA, raid ...)
- move SATA in its own category
-
- * modules.pm (append_to_modules_loaded_at_startup_for_all_kernels)
- introduce it
- (wrapper around append_to_modules_loaded_at_startup())
- move SATA in its own category
-
- * install_any.pm (default_packages) simplify through
- modules::append_to_modules_loaded_at_startup_for_all_kernels()
- (default_packages) handle buggy laptops that're unusable without
- laoding acerhk module
-
- * install_steps.pm, install_steps_interactive.pm: move SATA in its own
- category
-
-2005/01/19 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakconnect: adapt to new
- network::ethernet::get_eth_cards_names() prototype
-
- * standalone/keyboarddrake: use ->ask_from instead of ->ask_from_listf
- (keeping the same GUI behaviour)
-
-2005/01/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm (switch) add hint for translator
-
- * drakxtools.spec: 10.2-0.12mdk
-
-2005/01/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po, share/po/uz.po, share/po/am.po, share/po/uz@Latn.po:
- updated Basque files;
- corrected "<control>X" translations for non-latin keyboards
-
- * share/po/gl.po: corrected "default:LTR" translation
-
-2005/01/18 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/rescue-gui.c: VERSION is now DISTRIB_VERSION
-
- * mdk-stage1/Makefile: include gi/Makefile.config to have DISTRIB_DESCR
- defined
-
- * commands.pm: fix *old* typo
-
- * mygtk2.pm: fix broken focus during install
-
- * pkgs.pm: fix generating compssUsers.flat (was broken because of the
- CAT_xxx switch)
-
- * install_any.pm: auto_install compatibility: CAT_SYSTEM used to be
- selected by default
-
-2005/01/18 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: auto_install compatibility: CAT_SYSTEM used to be
- selected by default
-
-2005/01/17 huftis
-
- * share/po/nn.po: Updated translation.
-
-2005/01/17 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: fix backward compatibility
-
-2005/01/17 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Bugzilla 13056 - custom cron configuration
- Bugzilla 13056 - custom cron setup
-
-2005/01/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: require dmidecode in -backend subpackage
-
-2005/01/16 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2005/01/16 huftis
-
- * share/po/nn.po: Updated translation.
-
-2005/01/16 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo e jorge
-
-2005/01/16 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: if the window is not modal, the main
- XFdrake window can block it :-(
-
- * Xconfig/xfree.pm: don't be too picky on uppercase or lowercase sections
-
- * mygtk2.pm: MagicWindow:
- - hide is done on the window if popped
- - show is done on both the window and the child
- (to handle initial show on the window, and show after a hide on the
- child)
-
- * Xconfig/various.pm, install_steps.pm, install_any.pm: move setupFB() in
- Xconfig, and do it when needed (including when standalone)
-
- * bootloader.pm: fix syntax error
- mapdrive should not bother same_entries()
-
- * Xconfig/main.pm: when reading an existing X config file, ensure it is
- not too bad, otherwise propose to start from scratch
- (bugzilla #8548)
- move setupFB() in Xconfig, and do it when needed (including when
- standalone)
- for Driver fbdev, rework to allow configuring vga= in bootloader and
- telling to reboot instead of restarting X server (now i simply need to
- configure bootloader in Xconfig::main::write() when need_reboot)
-
- * install_steps_interactive.pm: for Driver fbdev, rework to allow
- configuring vga= in bootloader and telling to reboot instead of
- restarting X server (now i simply need to configure bootloader in
- Xconfig::main::write() when need_reboot)
-
- * standalone/XFdrake: make perl_checker happy
- for Driver fbdev, rework to allow configuring vga= in bootloader and
- telling to reboot instead of restarting X server (now i simply need to
- configure bootloader in Xconfig::main::write() when need_reboot)
-
- * Xconfig/card.pm: fix auto_install graphic card configuration (when one
- specify the Driver)
-
-2005/01/15 huftis
-
- * share/po/nn.po: Updated translation.
-
-2005/01/15 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm: change packing for the widgets given
- - move set_main_window_size() from ugtk2 to mygtk2
- - call it in MagicWindow creation
- allow passing gtk widgets to ->wait_message
-
- * mdk-stage1/Makefile, mdk-stage1/config-stage1.h, mdk-stage1/stage1.c,
- rescue/tree/etc/issue, rescue/Makefile, rescue/make_rescue_img:
- factorize the distrib version
-
- * bootloader.pm: in read_grub(), setting {table} cause write_grub to
- create a {mapdrive} even when we didn't have one (bugzilla #12307)
-
- * mygtk2.pm:
- - move set_main_window_size() from ugtk2 to mygtk2
- - call it in MagicWindow creation
- fix using gtkset with text => ... on a Button
-
- * ugtk2.pm:
- - move set_main_window_size() from ugtk2 to mygtk2
- - call it in MagicWindow creation
-
- * fs/format.pm: gtk2 progress bar when formatting ext3
-
-2005/01/14 huftis
-
- * share/po/nn.po: More translation
-
-2005/01/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fr.po: updated po file
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/eo.po: updated Esperanto file
-
-2005/01/14 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: this warning is stupid during install
-
- * tools/hd_grub.cgi: fix typo
-
- * detect_devices.pm: since dmidecode can fail to properly detect a floppy
- drive, don't use it during install (where we don't care if it's a bit
- slow)
-
- * mygtk2.pm: create wrapper object mygtk2::MagicWindow which handles the
- {rwindow} vs {window} duality
-
- * interactive/gtk.pm:
- - fix displaying wait_message
- - restore previous display of the wait_message during install (is that
- better ?)
-
- * ugtk2.pm: MagicWindow is now really magic, {rwindow} and {window} can be
- the same thing :)
-
- * authentication.pm: fix switching back nsswitch.conf to local
- authentication (bugzilla #13024)
-
-2005/01/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: fix crash on opening help windows
-
-2005/01/13 huftis
-
- * share/po/nn.po: Updated translation.
-
-2005/01/13 Pixel <pixel at mandrakesoft.com>
-
- * network/shorewall.pm: fix bugzilla #12996
-
-2005/01/12 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm: have separate SizeGroup's for advanced and non
- advanced entries
-
-2005/01/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-0.11mdk
-
-2005/01/12 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: return the child when MagicWindow is using the $::WizardWindow
- (otherwise the user of the MagicWindow can destroy the WizardWindow)
-
- * mygtk2.pm: return the child when MagicWindow is using the
- $::WizardWindow
- (otherwise the user of the MagicWindow can destroy the WizardWindow)
- - fix gtkadd()
- - fix displaying banner
- - no banner if no ::Wizard_title (as used to be)
-
- * interactive/gtk.pm: rewrite wait_messageW using mygtk2
-
- * bootloader.pm: write in lilo.conf the global root= (bugzilla #12312)
-
- * mdk-stage1/init.c: fix buggy blino commit which caused install failures
- to cause reboot without prompting
-
- * install_any.pm: we don't need the clp read-write (if it is read-only it
- allows remounting /mnt ro)
-
- * fs/format.pm: remove debug code
-
- * any.pm: add user specific shell support in create_user (Nicolas Planel)
-
- * mdk-stage1/stage1.c, Makefile: use /etc/init instead of /sbin/init to
- allow umounting clp in init
-
-2005/01/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.2-0.11mdk
- one more change in 10.2-0.10mdk
- 10.2-0.10mdk
-
- * standalone/harddrake2: display the menubar and the banner when embedded
-
- * standalone/printerdrake: show banner when embedded
-
-2005/01/11 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * any.pm: add user specific shell support in create_user
-
-2005/01/11 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: do not log the encrypted password
- show advanced languages by default
-
- * install_steps_gtk.pm: we always have force_focus when we have
- !$::isStandalone,
- so do it that way and get rid of $ugtk2::force_focus
- remove $ugtk2::force_center_at_pos, inline it instead
- revert bad commit
- install_gtk::create_help_window is unused, removing it
-
- * ugtk2.pm: create "MagicWindow" in mygtk2 out of ugtk2::new()
- simplify away thing already done in %window_options
- move ugtk2::create_window() to mygtk2::_create_Window()
- change set_main_window_size() prototype
- - create mygtk2::main()
- - get rid of setting {destroyed}, use a local variable instead
- simplify (no need to protect against double destroy anymore)
- {window}->show is already done in ->new
- better comment
- the ugly gtkset_mousecursor_wait() done on destroy is not called often
- nowadays, and not very useful either since the wait cursor is only on
- the root window, and since install use isWizard, the root window is not
- often seen. We should at least also set the wait cursor on the
- $::WizardTable
- fix typo
- fix typo
- - $current_window can be local to ugtk2, so do it that way
- - create force_keyboard_focus()
- better comments
- we always have force_focus when we have !$::isStandalone,
- so do it that way and get rid of $ugtk2::force_focus
- remove $ugtk2::force_center_at_pos, inline it instead
- no need to set widget name to Title (what was it used for?)
- more consistent naming
- help initial positioning of window during install (since position_policy
- center-on-parent only works with a window manager, we can't get rid of
- force_center_at_pos)
- add comments
-
- * mygtk2.pm: create "MagicWindow" in mygtk2 out of ugtk2::new()
- mygtk2::_gtk() takes an hash ref to allow checking the resulting hash
- move ugtk2::create_window() to mygtk2::_create_Window()
- - create mygtk2::main()
- - get rid of setting {destroyed}, use a local variable instead
-
- * install_gtk.pm: cleanup
- help size doesn't need anything special anymore
- don't fake a ugtk2, use pure mygtk2 instead
- don't fake a ugtk2, use pure mygtk2 instead
- no need to set title to 'skip' (it was used by aewm-drakx)
- install_gtk::create_help_window is unused, removing it
-
- * interactive/gtk.pm: create "MagicWindow" in mygtk2 out of ugtk2::new()
- change set_main_window_size() prototype
-
- * Xconfig/test.pm: we always have force_focus when we have
- !$::isStandalone,
- so do it that way and get rid of $ugtk2::force_focus
-
- * run_program.pm: do not log the encrypted password
-
-2005/01/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (dmidecode) do not rerun dmidecode on machines that do
- not support it
-
- * share/po/br.po: typo fix
-
- * share/rpmsrate: do not install ivtv packages since it's already in the
- kernel (it
- wasn't in our pcitable due to the lack of MODULE_DEVICE_TABLE)
- ivtv & zaptel dkms packages were renamed
-
-2005/01/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/gl.po: updated Galician file
-
-2005/01/10 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: move some now common things in _create_window()
- more installing special install shortcuts in _create_window()
- (there is no reason for not having the shortcuts when the window has
- pop_it)
- - XFdrake test is not standalone, it is the non install nor standalone
- state
- (used when there is no window manager)
- - get rid of now unused $ugtk2::force_center
- use {icon_no_error} instead of {icon}
- rewrite
- rewrite
- the test is not useful, we can't get to this code when $::isEmbedded is
- set
- emove unused feature
- $ugtk2::pop_it is unused
-
- * Makefile: dont_run_directly_stage2 and trace_stage2 needs the live, not
- the clp
- - add vera fonts (normal and bold)
- - generate fonts.dir and fonts.cache-1
- - take cursor.pcf.gz from system
-
- * share/list: add /etc/fonts/fonts.conf
-
- * share/fonts.tar.bz2:
- - remove cursor.pcf.gz (now taken from system)
- - generate fonts.dir and fonts.cache-1
-
- * lang.pm:
- - add vera fonts (normal and bold)
- - generate fonts.dir and fonts.cache-1
- - take cursor.pcf.gz from system
-
- * rescue/dirs: at least be able to mount /dev/pts if needed
-
- * interactive/gtk.pm: simplify using {pop_it}
-
- * rescue/list: rsync is useful too
- add what Lord Packdrakeng.pm request
- minimal ssh tools (alas it doesn't on console 1 because /dev/tty is
- allocated properly, it needs fixing)
-
- * Xconfig/test.pm:
- - XFdrake test is not standalone, it is the non install nor standalone
- state
- (used when there is no window manager)
- - get rid of now unused $ugtk2::force_center
-
- * share/rpmsrate: simplify
-
- * rescue/tree/etc/inittab: use "mingetty --autologin" instead of calling
- directly "bash --login", that
- way the shell has a valid controlling terminal (CTTY, accessed via
- /dev/tty).
- This is needed for ssh to work
-
- * rescue/tree/etc/rc.sysinit: have /dev rw (eg: for /dev/initctl)
-
- * mygtk2.pm: create {icon_no_error}
-
-2005/01/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * do_pkgs.pm: Add --expect-install to the options passed to urpmi to
- install packages, so
- do_pkgs::install() can return 0 or true depending on whether some
- packages were
- actually installed.
-
- * standalone/drakbackup: Don't use deprecated urpmi --X option
-
- * standalone/drakTermServ: Silent install of terminal-server if needed
- (--X is deprecated)
-
- * drakxtools.spec: Require urpmi 4.6.11 (for --expect-install)
-
-2005/01/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: install zaptel packages if needed
- install ivtv packages if needed
-
-2005/01/09 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2005/01/09 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2005/01/08 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
- * lang.pm: install scim-chewing if zh is selected by localedrake. Fix font
- setting for zh_CN.
-
-2005/01/08 huftis
-
- * share/po/nn.po: Updated translation.
-
-2005/01/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: updated po file
-
- * share/rpmsrate: new fonts-ttf-chinese package
-
- * lang.pm: changed chinese font names
-
-2005/01/07 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakclock: simplify
-
- * interactive/gtk.pm: $w->{isEmbedded} is unused
- $w->{isWizard} is unused
-
- * ugtk2.pm: $w->{isEmbedded} is unused
- $w->{isWizard} is unused
- $o->{force_center} is unused
- no icon during install
- simplify using mygtk2
-
- * mygtk2.pm: add "Plug"
-
-2005/01/07 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * keyboard.pm: Make %lang2keyboard a global variable, so it can be
- overriden in a
- patch file
-
-2005/01/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/et.po: updated Welsh and Estonian files
-
-2005/01/06 Pixel <pixel at mandrakesoft.com>
-
- * network/shorewall.pm: cleanup unused variables
-
- * mdk-stage1/doc/UPDATEMODULES: fix
-
- * standalone/draksec, harddrake/sound.pm: remove unused variable
-
- * interactive/gtk.pm: on a label, we must use ->get_text, not ->get
-
- * install_gtk.pm: fix typo (thanks to perl_checker)
- - move some install specific code out of ugtk2.pm into install_gtk.pm
- - move some install specific code out of common.pm into install_any.pm
-
- * ugtk2.pm: simplify
- - move some install specific code out of ugtk2.pm into install_gtk.pm
- - move some install specific code out of common.pm into install_any.pm
- - change _create_window() prototype to be more "mygtk2" like
- - use more mygtk2 properties
- - create and use wm_icon() (until all this crap is cleaned)
- (drop $o->{wm_icon} which is unused)
-
- * install2.pm, common.pm, install_any.pm:
- - move some install specific code out of ugtk2.pm into install_gtk.pm
- - move some install specific code out of common.pm into install_any.pm
-
- * mygtk2.pm: add {icon} for Window
- merge Window and Dialog creation
- allow setting padding for pack_start, but only globally (it works like
- spacing, but also include spacing at beginning, and at end)
- add {position_policy} for Window
-
- * network/tools.pm: remove unused variables
-
- * fs.pm, install_steps.pm: fs::formatMount_all() parameter wait_message is
- no more optional (though you can give undef)
-
- * loopback.pm, diskdrake/interactive.pm, install_steps_interactive.pm,
- raid.pm, fs/format.pm:
- - fs::format::part_raw() now takes $wait_message to allow displaying
- the progress of format
- - create fs::format::wait_message() which creates a $wait_message
- valid to give to fs::format::part
- - fs::format::mke2fs() format while parsing the output to display the
- progress
-
-2005/01/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
- * lang.pm: update UIM config for uim-0.4.5 (UTUMI Hirosi)
-
- * drakxtools.spec: 10.2-0.9mdk
-
-2005/01/05 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- soft/urpmi/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2005/01/05 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: fix selecting "other" keyboard when @best
- <= 1
- fix selecting "other" keyboard when @best <= 1
- fix selecting "other" keyboard when @best <= 1
-
- * fs.pm: part2wild_device_name('', $part) is better than
- devices::make($part->{device}) (esp. for nfs "devices")
- handle spaces in username
-
- * fs/mount_options.pm: don't set fs_type to ext2:vfat for ext3 or reiserfs
- /home coming from usb key (bugzilla #9827)
-
- * network/smb.pm: handle spaces in username
-
-2005/01/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_any.pm (migrate_device_names) fix message
-
- * share/rpmsrate: install echomixer if needed
- switch default IM to scim-chewing for zh_TW
-
- * harddrake/sound.pm: add a couple of new ALSA drivers (from CVS)
-
- * drakxtools.spec: 10.2-0.8mdk
-
-2005/01/04 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: backport s/jp/ja/ fix from HEAD
-
-2005/01/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hr.po: updated Croatian file
-
- * share/po/cy.po: updated Welsh file
-
-2005/01/04 Pixel <pixel at mandrakesoft.com>
-
- * rescue/list: ld-linux.so.2 is also needed on the rescue :)
-
-2005/01/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
-2005/01/04 Pixel <pixel at mandrakesoft.com>
-
- * rescue/list: ld-linux.so.2 is also needed on the rescue :)
-
- * mdk-stage1/init.c: ensure /tmp/syslog in stage2 contains the full log
-
- * mdk-stage1/stage1.c: ensure /tmp/syslog in stage2 contains the full log
- (currently stage2 init was writing in a file shadowed by stage2 copying
- the /stage1/tmp/syslog over its file)
-
-2005/01/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: update ADSL ISPs list
-
- * share/rpmsrate: install hotkeys in order to have working special keys on
- internet/multimedia laptop keyboards
-
-2005/01/03 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm, steps.pm: "Administrator (root)" is more
- user-friendly than "root"
-
- * fs/mount_options.pm: remove codepage= option for fs types which don't
- handle it (eg: ntfs)
-
- * fs/type.pm: create can_be_one_of_those_fs_types()
-
- * network/netconnect.pm, network/network.pm, network/ethernet.pm,
- install_steps_interactive.pm, harddrake/data.pm: move and rename
- network::ethernet::get_eth_categories() into
- list_modules::ethernet_categories()
- (it's closer to the definition of the categories)
-
- * modules/interactive.pm: a somewhat nicer message when loading a module
-
- * install_steps.pm: default security level is now 3
-
-2005/01/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * do_pkgs.pm: '--best-output' is no longer an urpmi option (and it's not
- necessary
- anyway since --auto is specified)
-
- * install_steps.pm: Make do_pkgs::install() return the number of packages
- actually installed
- (used by printerdrake, apparently)
-
-2005/01/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Bugzilla 12861 - Directories with spaces
- Mandrakeclub - Perms on tarballs too relaxed
- perl_checker compliance
- Bugzilla 12861 - Directories with spaces
- Mandrakeclub - Perms too relaxed on tarballs
- perl_checker compliance
- Bugzilla 12861 - Directories with spaces
- Mandrakeclub - Perms too relaxed on tarballs
- perl_checker compliance
-
-2005/01/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_any.pm (migrate_device_names) try to be smarter with translators
-
-2005/01/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * keyboard.pm:
- - enabled choice of various new keyboard layouts.
- - don't prepend "us," if there is already a list of layouts
-
- * share/po/cy.po: updated Welsh file
- updated pot file
-
-2005/01/03 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/tools.c: it's cleaner to have the clp_tmpfs in /tmp
- (i think it was already that way for move and that i broke it, but who
- knows?)
-
- * install_any.pm: no clp is not an error
- move mdkinst.clp on hard drive ASAP
- => allows multi-cd installs even if the mdkinst.clp was not preloaded
- => allows to better memory handling during pkgs install (hopefully at
- least)
-
- * fs/mount_options.pm: remove codepage= option for fs types which don't
- handle it (eg: ntfs)
-
- * fs/type.pm: create can_be_one_of_those_fs_types()
-
- * devices.pm, install2.pm: move mdkinst.clp on hard drive ASAP
- => allows multi-cd installs even if the mdkinst.clp was not preloaded
- => allows to better memory handling during pkgs install (hopefully at
- least)
-
- * mdk-stage1/stage1.c, mdk-stage1/init.c: ensure /tmp/syslog in stage2
- contains the full log
- (currently stage2 init was writing in a file shadowed by stage2 copying
- the /stage1/tmp/syslog over its file)
-
-2005/01/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: add another sparc sound driver
-
-2005/01/03 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: s/jp/ja. Corrected spelling of locale ja
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/12/31 Pixel <pixel at mandrakesoft.com>
-
- * mygtk2.pm: no need to have things twice in _icon_paths()
-
- * install_steps_gtk.pm: simplify (thanks to perl_checker)
- remove code using getAndSaveFile to get the X server
- (we don't have live directory anymore, and anyway we only use one X
- server)
-
- * install_gtk.pm: simplify (we always want the logo, and looking the right
- path is already done elsewhere)
-
- * share/list: ldd doesn't say anymore which file ld-linux is, so adding it
- explicitly
-
- * interactive/gtk.pm: better layout:
- - ensure buttons are at bottom using pack_end instead of packing a
- growing empty vbox for ask_warn-like dialogs
- - drop old code
- - always allow box to grow (this may be wrong)
-
-2004/12/31 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm: simplify (thanks to perl_checker)
- remove code using getAndSaveFile to get the X server
- (we don't have live directory anymore, and anyway we only use one X
- server)
-
- * interactive/gtk.pm: better layout:
- - ensure buttons are at bottom using pack_end instead of packing a
- growing empty vbox for ask_warn-like dialogs
- - drop old code
- - always allow box to grow (this may be wrong)
-
-2004/12/30 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: more spacing around the separator and the buttons (as
- requested by ergonomy team)
-
- * install_steps.pm: finish backporting HEAD changes for finish-install
- (any::write_passwd_user() doesn't exist anymore)
-
-2004/12/29 Pixel <pixel at mandrakesoft.com>
-
- * lvm.pm, devices.pm: move device mapper initialisation out of lvm.pm into
- devices.pm (since it will be useful for other things)
-
- * install_steps_interactive.pm: when computing group size, select
- CAT_SYSTEM packages
-
- * pkgs.pm: simplify and speed up computeGroupSize()
- in computeGroupSize()
- - fix old ugly bug (CAT_FOO && CAT_BAR || CAT_FOO was reduced to
- CAT_FOO && CAT_BAR)
- - log the time spent
- - ignore already selected packages
- - group by same rpmsrate flags (nice speedup :)
-
-2004/12/28 Pixel <pixel at mandrakesoft.com>
-
- * install_gtk.pm: fix overlap
- re-organize steps display as requested by ergonomic team
-
- * install_steps_gtk.pm: fix displaying package tree (was empty since
- moving from XXX to CAT_XXX)
-
- * mygtk2.pm:
- - add can_default
- - remove known_opts (alike the rest of the code)
-
- * pkgs.pm, install_any.pm, install_steps_interactive.pm:
- - create set_rpmsrate_category_flags(),
- set_rpmsrate_default_category_flags(), default_packages(),
- rpmsrate_always_flags() replacing setDefaultPackages()
- - create select_default_packages()
- - apply "always" rpmsrate flags ASAP and skip packages with flag
- "FALSE" in computeGroupSize()
- => 30% speed-up
-
-2004/12/24 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate, install_any.pm, install_steps_interactive.pm:
- differentiate compssUsers flags from non-user modifiable flags (eg:
- hardware flags)
-
- * network/drakfirewall.pm: "Samba server" is better named "Windows Files
- Sharing (SMB)" (bugzilla #10585)
-
-2004/12/23 Pixel <pixel at mandrakesoft.com>
-
- * standalone/XFdrake: fix Xconfig::default::configure() use
- "XFdrake --auto" is now fully auto using auto_install configuration
- instead of "as much auto as can be"
- - don't ask X to restart in auto mode
- - set exit status to 1 when configuration failed (esp. auto mode)
-
-2004/12/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * tools/checkusedmodules: Add a new check script in tools. It compares the
- perl modules used by the .pm
- files in perl-install against the ones listed in share/list, to detect
- potential missing modules (and potential run-time problems during the
- stage 2)
-
-2004/12/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump require on perl in order to prevent beakage on
- update due to
- binary incompatibility (#12719 and the like)
- fix typo in 10.2-0.7mdk's changelog
- 10.2-0.7mdk
-
-2004/12/22 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: simplify
- fix previous commit
- create read_rpmsrate_raw() out of read_rpmsrate(), this new function can
- be easily used outside install
-
- * install_steps_interactive.pm: no need to use max_size, no need to
- compute it
-
- * install2.pm, fsedit.pm: add option no_bad_drives (to workaround bugzilla
- #12766)
-
-2004/12/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: "snd-audigyls" ALSA driver was renamed "snd-ca0106"
- in ALSA CVS;
- let's have our tools be aware of that once our kernel got synced
- handle new snd-pcxhr driver from alsa CVS
-
- * share/rpmsrate: install proper tools for Digigram PCXHR sound card
-
-2004/12/21 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: /proc/sys/kernel/modprobe wants something non empty,
- otherwise it doesn't change anything
-
- * install_any.pm: don't pass prefix, use $::prefix
- don't pass prefix to network::netconnect::main() (it doesn't use it)
- don't pass prefix, use $::prefix
-
- * fs.pm:
- - fs::mount() wants a real device or a faked one, but doesn't accept
- things like fd0 anymore (give it /dev/fd0)
- - a little more robust analyze_wild_device_name() during install
- - handle bad things in subpart_from_wild_device_name()
-
- * install_steps_interactive.pm: don't pass prefix, use $::prefix
- don't pass prefix to network::netconnect::main() (it doesn't use it)
-
- * mdk-stage1/doc/UPDATEMODULES: much simpler code to handle post-install
- update modules
- - it handles new modules
- - it calls depmod
-
- * install_steps_gtk.pm, commands, standalone/drakbug_report, pkgs.pm,
- crypto.pm, commands.pm: don't pass prefix, use $::prefix
-
- * standalone/drakconnect, network/netconnect.pm, printer/printerdrake.pm:
- don't pass prefix to network::netconnect::main() (it doesn't use it)
-
- * any.pm:
- - fs::mount() wants a real device or a faked one, but doesn't accept
- things like fd0 anymore (give it /dev/fd0)
- - a little more robust analyze_wild_device_name() during install
- - handle bad things in subpart_from_wild_device_name()
- don't pass prefix, use $::prefix
-
- * install_steps.pm:
- - fs::mount() wants a real device or a faked one, but doesn't accept
- things like fd0 anymore (give it /dev/fd0)
- - a little more robust analyze_wild_device_name() during install
- - handle bad things in subpart_from_wild_device_name()
- don't pass prefix, use $::prefix
- don't pass prefix, use $::prefix
- much simpler code to handle post-install update modules
- - it handles new modules
- - it calls depmod
-
- * detect_devices.pm: fix floppies detection (through dmidecode)
-
-2004/12/20 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: don't die when /proc/sys/kernel/modprobe doesn't exist (for
- BOOT kernels)
-
- * mdk-stage1/tools.c, mdk-stage1/tools.h, mdk-stage1/automatic.c: minimal
- bootsplash stage1 support
- create unset_automatic()
-
- * mdk-stage1/modules.c, mdk-stage1/cdrom.c, mdk-stage1/stage1.c,
- mdk-stage1/network.c: create unset_automatic()
-
- * mdk-stage1/Makefile, mdk-stage1/bootsplash.h, mdk-stage1/bootsplash.c,
- mdk-stage1/frontend.h, mdk-stage1/stdio-frontend.c,
- mdk-stage1/newt-frontend.c: minimal bootsplash stage1 support
-
-2004/12/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/modem.pm (get_user_home) do not horribly die if USER environment
- variable list
- a non existing user
-
-2004/12/19 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: jp console should not be localized
- jp console should not be localized
-
-2004/12/18 rstandtke
-
- * share/po/de.po: added some translations
-
-2004/12/17 Pixel <pixel at mandrakesoft.com>
-
- * install_gtk.pm: don't parse the theme rc file to set the root window
- background color during install,
- instead use the gc of a fake window named "background"
- switch to mygtk2
-
- * ugtk2.pm: add some more functions in mygtk2
-
- * Xconfig/test.pm: remove unused code
-
- * modules.pm: packdrake changed a little, ensuring that if we ask no
- modules it doesn't cause havoc
-
- * mygtk2.pm: don't parse the theme rc file to set the root window
- background color during install,
- instead use the gc of a fake window named "background"
- oops, set_background *is* needed
- remove unneeded ->set_background
- add some more functions in mygtk2
-
- * bootloader.pm: ia64 uses the lilo method (even if it has some important
- differences)
- on ia64, use method lilo
-
-2004/12/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix NETMASK autofilling
-
-2004/12/16 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * c/smp.c: merge smp detection from fedora/ydl
-
-2004/12/16 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: help testing
-
- * mygtk2.pm:
- - add DrawingArea
- - add text_ref & format for buttons
- remove debug code
- we must allow more than one callback per ref & widget
- add option allow_unknown_options for easy compatibility
-
- * detect_devices.pm, pkgs.pm, install_any.pm: create function
- detect_devices::BIGMEM() which calls c::dmiDetectMemory(), but only
- if we are root (this helps testings install without dying)
-
- * install_steps_gtk.pm: migrate to mygtk2
-
- * ugtk2.pm: fix typo (mygtk2 wants active_ref, not val)
- add option allow_unknown_options for easy compatibility
-
- * Xconfig/resolution_and_depth.pm: much simpler code using mygtk2
-
-2004/12/15 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * mdk-stage1/insmod-modutils/include/util.h,
- mdk-stage1/insmod-modutils/util/logger.c: rename log to do_log in order
- to avoid clashes with builtins
-
- * mdk-stage1/dietlibc/ia64/start.S, mdk-stage1/dietlibc/ia64/fork.S,
- mdk-stage1/dietlibc/ia64/pipe.S: ia64 fixes: fork, pipe, syscall weak
- symnames
-
- * mdk-stage1/insmod-modutils/include/elf_ppc64.h,
- mdk-stage1/insmod-modutils/obj/obj_ppc64.c: merge ppc64 support from
- modutils 2.4.26
-
- * mdk-stage1/insmod-modutils/obj/obj_gpl_license.c: add missing file from
- older merge from modutils 2.4.26
-
- * mdk-stage1/dietlibc/ia64/syscalls.h: add ia64 setjmp/longjmp from glibc
- ia64 fixes: fork, pipe, syscall weak symnames
-
- * tools/ddcprobe/Makefile: ppc & ppc64 fixes
- ppc64 support
-
- * mdk-stage1/insmod-modutils/obj/obj_kallsyms.c: fix build to expose
- assignments better
-
- * mdk-stage1/insmod-modutils/obj/obj_ia64.c: add support for
- R_IA64_PCREL60B reloc
- build fix
-
- * tools/ddcprobe/ddcxinfos.c: ppc & ppc64 fixes
- sounds like the (empty) line is expected
-
- * mdk-stage1/insmod-modutils/util/sys_oim.c,
- mdk-stage1/insmod-modutils/insmod.c,
- mdk-stage1/insmod-modutils/util/Makefile,
- mdk-stage1/insmod-modutils/util/modstat.c: drop support for kernel 2.0
-
- * tools/ddcprobe/vbe.h: ppc & ppc64 fixes
- fix on big endian platforms (ppc, ppc64)
-
- * mdk-stage1/dietlibc/ia64/__longjmp.S, mdk-stage1/dietlibc/ia64/setjmp.S:
- add ia64 setjmp/longjmp from glibc
-
- * mdk-stage1/rescue-gui.c, mdk-stage1/init.c: lib64 fixes on ppc64
-
- * mdk-stage1/dietlibc/include/elf.h: ia64 elf definitions
-
- * tools/ddcprobe/of.c: ppc & ppc64 fixes
- On PowerPC platforms, byteswap product_code so that ids match MonitorsDB
- contents
-
-2004/12/15 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/network.c: fix http directory not starting with a "/" (it was
- handled for stage1, but not for URLPREFIX given to stage2)
-
-2004/12/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: perl_checker, suggestions from Pixel, rework
- buttons in main GUI
-
-2004/12/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update (stef, neoclust)
-
- * drakxtools.spec: 10.2-0.6mdk
-
-2004/12/15 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate.corpo-server, share/rpmsrate.corpo-desktop: remove
- mdkonline-backend
-
-2004/12/14 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * mdk-stage1/dietlibc/include/termios.h, mdk-stage1/dietlibc/diet.c,
- mdk-stage1/dietlibc/syscalls.h, mdk-stage1/dietlibc/include/sys/stat.h,
- mdk-stage1/dietlibc/include/sys/ucontext.h,
- mdk-stage1/dietlibc/include/sys/shm.h,
- mdk-stage1/dietlibc/include/fcntl.h,
- mdk-stage1/dietlibc/include/sys/mman.h,
- mdk-stage1/dietlibc/include/asm/sigcontext.h,
- mdk-stage1/dietlibc/include/elf.h,
- mdk-stage1/dietlibc/include/sys/ioctl.h,
- mdk-stage1/dietlibc/include/sys/types.h, mdk-stage1/dietlibc/Makefile,
- mdk-stage1/dietlibc/include/endian.h,
- mdk-stage1/dietlibc/include/sys/ptrace.h,
- mdk-stage1/dietlibc/include/signal.h: ppc64 port
-
- * mdk-stage1/dietlibc/include/setjmp.h: fix setjmp.h (JB_SIZE) on ppc64
- ppc64 port
-
-2004/12/14 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: fix release (keep 101mdk for 10.1 packages)
-
- * network/netconnect.pm: for drakx-finish-install, we want drakconnect to
- restart network
- for drakx-finish-install, we want drakconnect to restart network
-
- * mygtk2.pm: export gtkval_register() and gtkval_modify()
-
- * mdk-stage1/pcmcia_/merge_from_pcitable: cleanup
-
-2004/12/13 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- soft/drakpxelinux/po/da.po soft/rpmdrake/po/da.po
- soft/urpmi/po/da.po gi/perl-install/share/po/da.po
-
-2004/12/13 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: fix
-
- * drakxtools.spec: introduce in CVS 27.2.101mdk which was using a patch on
- drakbug
-
- * standalone/drakbug: commit vdanen patch which makes drakbug send
- everything to bugzilla (instead of anthill)
-
-2004/12/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/list: Add a gazillion modules required by the new packdrake for
- now
-
-2004/12/13 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: fix
-
- * drakxtools.spec: introduce in CVS 27.2.101mdk which was using a patch on
- drakbug
-
- * standalone/drakbug: commit vdanen patch which makes drakbug send
- everything to bugzilla (instead of anthill)
-
-2004/12/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/list: Add a gazillion modules required by the new packdrake for
- now
- Add the subset of POSIX.pm needed by the new packdrake
-
-2004/12/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/autoconf.pm:
- - rename/move install_any::write_pcmcia() as
- harddrake::autoconf::pcmcia() so
- that it became availlable for standalone tools
- - reuse it in harddrake service in order to configure PCMCIA cards
-
- * harddrake/data.pm (pcmcia_controller_probe) move some harddrake code
- there
-
- * detect_devices.pm: better english (writing style rather than spoken one)
- (pcmcia_controller_probe) reuse pcmcia_controller_probe(), thus fixing
- installer not handling anymore PCMCIA controllers managed by driver
- other than
- yenta_socket...
- this is still not enough for stage1 though (since
- mdk-stage1/pcmcia_/probe.c::pcmcia_probe() isn't aware of all PCMCIA
- host
- controller drivers that're known to list_modules.pm)
- (pcmcia_controller_probe) move some harddrake code there
-
- * Xconfig/card.pm, share/po/ms.po, share/po/pt_BR.po, share/po/et.po,
- share/po/ja.po, install_steps_interactive.pm, standalone/drakvpn,
- printer/data.pm, standalone/drakboot, standalone.pm,
- standalone/drakTermServ, share/po/sv.po, share/po/sr.po, share/po/fi.po,
- fs/type.pm, standalone/drakbackup, share/po/ca.po, share/po/ltg.po,
- share/po/uz.po, partition_table/mac.pm, diskdrake/interactive.pm,
- standalone/fileshareset, share/po/ro.po, standalone/drakroam,
- authentication.pm, share/po/zh_TW.po, share/po/eu.po, share/po/es.po,
- network/adsl.pm, modules.pm, network/tools.pm,
- standalone/service_harddrake.sh, standalone/drakupdate_fstab,
- share/po/lv.po, share/po/id.po, help.pm, share/po/br.po, install_gtk.pm,
- network/isdn.pm, share/po/mt.po, share/po/ga.po, modules/parameters.pm,
- share/po/uk.po, install2.pm, share/po/lt.po, resize_fat/boot_sector.pm,
- commands.pm, network/test.pm, install_interactive.pm, share/po/tg.po,
- share/advertising/12.pl, loopback.pm, mygtk2.pm, interactive/http.pm,
- ftp.pm, interactive/stdio.pm, share/po/mk.po, share/po/fur.po,
- services.pm, harddrake/sound.pm, fs.pm, standalone/drakfont,
- share/po/af.po, network/ethernet.pm, standalone/net_applet,
- bootloader.pm, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- keyboard.pm, standalone/drakperm, share/advertising/05.pl,
- share/po/tl.po, share/po/de.po, common.pm, share/po/el.po,
- share/po/bg.po, share/po/uz@Latn.po, network/network.pm, share/po/bn.po,
- standalone/logdrake, share/po/gl.po, share/po/sk.po, share/po/th.po,
- Xconfig/parse.pm, interactive.pm, share/po/hr.po, resize_fat/fat.pm,
- network/netconnect.pm, share/po/be.po, do_pkgs.pm, mouse.pm,
- network/smb.pm, share/po/DrakX.pot, share/po/ko.po, share/po/pl.po,
- share/po/he.po, raid.pm, fs/format.pm, diskdrake/smbnfs_gtk.pm,
- share/po/da.po, share/po/ar.po, partition_table.pm, unused/dns.pm,
- share/po/ky.po, share/po/nb.po, pkgs.pm, run_program.pm,
- standalone/drakconnect, share/po/zh_CN.po, share/po/sq.po,
- share/po/sr@Latn.po, share/po/it.po, printer/printerdrake.pm,
- share/po/hu.po, http.pm, share/po/fa.po, network/modem.pm,
- resize_fat/main.pm, network/ipsec.pm, share/po/ru.po, share/po/sl.po,
- standalone/drakautoinst, c.pm, share/po/nn.po, share/po/tr.po,
- partition_table/gpt.pm, share/po/mn.po, share/po/am.po, lang.pm,
- devices.pm, harddrake/v4l.pm, share/po/cy.po, partition_table/raw.pm,
- ugtk2.pm, any.pm, install_steps_gtk.pm, printer/main.pm, share/po/bs.po,
- interactive/newt.pm, share/po/wa.po, fs/mount_options.pm,
- share/po/is.po, share/po/hi.po, share/po/az.po, Xconfig/xfree.pm,
- share/po/ta.po, standalone/drakgw, share/po/nl.po, fsedit.pm,
- share/po/eo.po, share/po/cs.po, standalone/bootloader-config: better
- english (writing style rather than spoken one)
-
- * install_any.pm, install_steps.pm, standalone/service_harddrake: better
- english (writing style rather than spoken one)
- - rename/move install_any::write_pcmcia() as
- harddrake::autoconf::pcmcia() so
- that it became availlable for standalone tools
- - reuse it in harddrake service in order to configure PCMCIA cards
-
-2004/12/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/list: Add new packdrake module
-
-2004/12/12 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: ignore packdrake for now
-
- * install_gtk.pm, share/list.i386: keyboard_drv.o is needed by Xorg, and
- driver must "keyboard", not "Keyboard"
-
-2004/12/12 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: ignore packdrake for now
-
- * install_gtk.pm, share/list.i386: keyboard_drv.o is needed by Xorg, and
- driver must "keyboard", not "Keyboard"
-
-2004/12/10 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: move drakx VERSION file in install/stage2 (used by bugzilla)
-
-2004/12/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ja.po: update (Yukiko Bando)
-
-2004/12/09 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: commit warly's fix in HEAD
- commit warly's fix in 10.1 branch
-
-2004/12/08 Warly <warly at mandrakesoft.com>
-
- * install_steps.pm: fix the updatemodules mode for installation
-
-2004/12/07 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm, install_steps_interactive.pm: look for yenta_socket
- in pci_probe too (nb: ldetect pci_probe has a special rule for it, not
- simply pcitable)
- look for yenta_socket in pci_probe too
- look for yenta_socket in pci_probe too (nb: ldetect pci_probe has a
- special rule for it, not simply pcitable)
-
- * share/rpmsrate: xcdroast only if X is chosen (bugzilla #12594)
-
-2004/12/06 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate.corpo-server, share/rpmsrate.corpo-desktop: Added
- mdkonline, slmodem and ipw2?00
-
-2004/12/05 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/12/05 Pixel <pixel at mandrakesoft.com>
-
- * fs/format.pm, install_any.pm: don't allow partition types we don't know
- how to format in {partitions} for auto_installs (eg of bad type: ntfs)
-
-2004/12/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: typo fixes (#12580)
-
-2004/12/04 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/merge_from_pcitable: simplify
-
-2004/12/04 tsdgeos
-
- * share/po/ca.po: Update
-
-2004/12/03 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: disable kmod, otherwise we get a different behaviour in
- kernel vs kernel-BOOT
-
- * Makefile: use the cute "perldoc -l" instead of perl -V:vendorlib which
- doesn't work when the module hasn't been rebuilt
-
- * unused/migrate-ugtk2-to-mygtk2.pl, unused/migrate-ugtk2-to-mygtk2.el: be
- more automatic and less .emacs dependent
-
- * tools/Makefile: use perldoc -l instead of perl -M + %INC
-
- * install_steps_gtk.pm: more debug log
-
- * commands: during install, commands should $::isInstall set (otherwise
- poor modprobe becomes a fork bomb)
-
-2004/12/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/be.po,
- share/po/mn.po, share/po/am.po, share/po/ko.po, share/po/sr.po,
- share/po/lt.po, share/po/he.po, share/po/cy.po, share/po/ca.po,
- share/po/ar.po, share/po/ltg.po, share/po/ky.po, share/po/mk.po,
- share/po/ro.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/vi.po, share/po/sq.po, share/po/sr@Latn.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po: rescued some strings
-
-2004/12/03 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: disable kmod, otherwise we get a different behaviour in
- kernel vs kernel-BOOT
-
- * Makefile: use the cute "perldoc -l" instead of perl -V:vendorlib which
- doesn't work when the module hasn't been rebuilt
-
- * unused/migrate-ugtk2-to-mygtk2.pl, unused/migrate-ugtk2-to-mygtk2.el: be
- more automatic and less .emacs dependent
-
- * tools/Makefile: use perldoc -l instead of perl -M + %INC
-
- * install_steps_gtk.pm: more debug log
-
- * commands: during install, commands should $::isInstall set (otherwise
- poor modprobe becomes a fork bomb)
-
-2004/12/02 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: use migrate-ugtk2-to-mygtk2.pl (and i verified the diff)
-
- * unused/migrate-ugtk2-to-mygtk2.pl: replace "policy => [ horizpolicy,
- vertpolicy ]" with "h_policy => ..., v_policy => ..."
- (both defaulting to "automatic")
- dirty script easing the switch from ugtk2 to mygtk2 (beware!)
-
- * unused/migrate-ugtk2-to-mygtk2.el: dirty script easing the switch from
- ugtk2 to mygtk2 (beware!)
-
- * rescue/make_rescue_img: fix typo and perl_checker compliance
-
- * mygtk2.pm: replace "policy => [ horizpolicy, vertpolicy ]" with
- "h_policy => ..., v_policy => ..."
- (both defaulting to "automatic")
-
-2004/12/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
-2004/12/02 Pixel <pixel at mandrakesoft.com>
-
- * unused/migrate-ugtk2-to-mygtk2.pl: replace "policy => [ horizpolicy,
- vertpolicy ]" with "h_policy => ..., v_policy => ..."
- (both defaulting to "automatic")
- dirty script easing the switch from ugtk2 to mygtk2 (beware!)
-
- * mygtk2.pm: replace "policy => [ horizpolicy, vertpolicy ]" with
- "h_policy => ..., v_policy => ..."
- (both defaulting to "automatic")
- future is in mygtk2, ugtk2 must die (and it will die, but not that soon
- (to keep compatibility))
-
- * rescue/make_rescue_img: remove temporary directory
-
- * detect_devices.pm: helping titi that didn't get isLaptop() right in 3
- commits ;p
-
- * ugtk2.pm: use migrate-ugtk2-to-mygtk2.pl (and i verified the diff)
- future is in mygtk2, ugtk2 must die (and it will die, but not that soon
- (to keep compatibility))
-
- * unused/migrate-ugtk2-to-mygtk2.el: dirty script easing the switch from
- ugtk2 to mygtk2 (beware!)
-
- * authentication.pm, any.pm:
- - any::enableShadow() -> authentication::enable_shadow()
- - inline authentication::crypt()
- move crypt() where it's needed
-
-2004/12/02 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * authentication.pm, any.pm: Move crypt() in the package it belongs to
-
-2004/12/01 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: simplify: grep already done
- complete_usb_storage_info()
-
-2004/12/01 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: return value for gtkset_mousecursor
-
-2004/12/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ja.po: typo fix
-
-2004/12/01 Warly <warly at mandrakesoft.com>
-
- * install_steps.pm: Add a SYSTEM to Corporate in /etc/sysconfig/system for
- corporate
-
- * share/compssUsers.corpo-server: remove development section in corpo
- server
-
- * install_any.pm: use the compssUsers related to the meta_class if it
- exists
-
- * share/compssUsers.suppl-desktop, share/compssUsers.suppl-server: add
- compssUsers for supplementary CDs
-
- * install_steps_gtk.pm: update the group selection layout to handle the
- supplementary CD
-
- * share/compssUsers.desktop: remove game for corpo desktop
-
- * rescue/tree/etc/issue: change Mandrake Linux 10.0 into Mandrakelinux
- Corporate 3.0
-
- * share/themes-corporate.rc: correct the theme color for installation
-
- * steps.pm: Do not activate the updates selection step during installation
-
- * share/rpmsrate.corpo-server, share/rpmsrate.corpo-desktop: updated
- rpmsrate for corporate desktop and server
-
- * install_messages.pm: The coporate errata is corpo30errata.php3 and not
- 100errata.php3
-
-2004/11/30 Frederic Lepied <flepied at mandrakesoft.com>
-
- * mdk-stage1/Makefile, mdk-stage1/config-stage1.h: corporate
-
-2004/11/30 Pixel <pixel at mandrakesoft.com>
-
- * network/network.pm: don't pass the prefix/etc/sysconfig/network to
- network::network::write_conf(), we always use the same file name
- backport HEAD changes used by finish-install
-
- * modules.pm: replace isStandalone with !isInstall (for finish-install
- which is neither isInstall nor isStandalone)
- replace isStandalone with !isInstall (for finish-install which is
- neither isInstall nor isStandalone)
-
- * install_steps_interactive.pm:
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
- backport HEAD changes used by finish-install
-
- * standalone/finish-install: don't keep the banner from drakconnect for
- all steps
- add drakx-finish-install
- prog to launch after install which configurate users, authentication,
- root password and network
- don't keep the banner from drakconnect for all steps
- add drakx-finish-install
- prog to launch after install which configurate users, authentication,
- root password and network
-
- * any.pm, install_steps.pm:
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
- backport HEAD changes used by finish-install
- create any::set_root_passwd() and use it
-
- * drakxtools.spec: add drakx-finish-install
-
- * standalone/drakbackup: fix fatal perl_checker error
- fix fatal perl_checker warning
-
- * run_program.pm: replace !isStandalone with isInstall
-
- * authentication.pm: make $when_network_is_up optional
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
- backport HEAD changes used by finish-install
-
- * Makefile.config, Makefile, Makefile.drakxtools,
- standalone/finish-install.xsetup: add drakx-finish-install
- add drakx-finish-install
-
- * network/netconnect.pm: network::netconnect::real_main() do not exit
- brutally on wizcancel, handle it in network::netconnect::main()
- network::netconnect::real_main() do not exit brutally on wizcancel,
- handle it in network::netconnect::main()
-
- * standalone/adduserdrake: backport HEAD changes used by finish-install
-
- * standalone/drakauth: perl_checker fix
- shorter
- don't pass the prefix/etc/sysconfig/network to
- network::network::write_conf(), we always use the same file name
- $when_network_is_up is now optional
- backport HEAD changes used by finish-install
-
-2004/11/30 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Warn when failing to mount the supplementary CD-ROM
-
-2004/11/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (dmidecode) explain why we return a list and not
- directly an hash
- (floppies) do not try to load floppy if there's no floppy drive (#8211)
- a side effect is that now we'll still see the floppy drive even if
- some buggy code triggered $@ earlier
-
- * share/rpmsrate, lang.pm: install scim-anthy as well for japanese users
-
- * install_any.pm (setDefaultPackages) perl_checker cleanup
-
- * drakxtools.spec: typo fix
-
- * harddrake/data.pm: rollback previous bogus commit
-
-2004/11/30 Warly <warly at mandrakesoft.com>
-
- * rescue/tree/etc/issue: update version for rescue issue
-
-2004/11/30 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, any.pm:
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
- create any::set_root_passwd() and use it
- - rely on adduser(8) to set the users password instead of using
- write_passwd_user()
- - use adduser(8) during install (we now use the same code during and
- after install)
-
- * install_steps_interactive.pm:
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
-
- * standalone/adduserdrake:
- - rely on adduser(8) to set the users password instead of using
- write_passwd_user()
- - use adduser(8) during install (we now use the same code during and
- after install)
-
- * authentication.pm:
- - move some functions from any.pm to authentication.pm
- - create authentication::ask_root_password_and_authentication() out of
- install_steps_interactive::setRootPassword()
- white space normalisation
-
-2004/11/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/localedrake: Yes/no is better than Ok/cancel for logout
- question
-
- * harddrake/data.pm: rollback previous bogus commit
- detect_devices::getModem() does not take an argument anymore
-
- * share/rpmsrate, lang.pm: install scim-anthy as well for japanese users
-
- * install_any.pm (setDefaultPackages) perl_checker cleanup
-
- * detect_devices.pm (isLaptop) fix it on non PPC architectures
- (dmidecode) add (explicit) memoization
-
-2004/11/29 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: perl_checker compliance
- - drop oem & recovery code (which was broken)
- - will be replaced with a root password + user accounts + network
- configuration a la drakfirsttime
-
- * authentication.pm: minimal authentication get() function
- create %kind2pam_kind
-
- * any.pm: rename allocUsers() to alloc_user_faces() (better suited)
-
- * mdk-stage1/disk.h, install_steps_gtk.pm, docs/README, mdk-stage1/disk.c,
- install_steps.pm, rescue/tree/etc/rc.sysinit, rescue/tree/etc/oem,
- install_steps_interactive.pm, tools/oem-prepare, mdk-stage1/tools.c,
- rescue/tree/etc/oem-all, rescue/.cvsignore, install2.pm,
- mdk-stage1/stage1.c, rescue/Makefile, rescue/kernel_read_part.c:
- - drop oem & recovery code (which was broken)
- - will be replaced with a root password + user accounts + network
- configuration a la drakfirsttime
-
-2004/11/29 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install2.pm: A bit of grammar
-
-2004/11/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: add hint for translator
-
- * share/po/ja.po: update (Yukiko Bando)
-
- * install_any.pm (setDefaultPackages) better support for Toshiba laptops:
- preload
- toshiba driver and install toshutils (inspirated from
- drivers/char/toshiba.c's audit)
- (setDefaultPackages) better support for DELL laptops: preload i8k driver
- better support for DELL laptops (inspirated from drivers/char/i8k.c's
- audit)
-
- * share/rpmsrate: ensure toshutils is present on media
- ensure ik8utils is present on media
-
-2004/11/27 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/11/27 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * network/adsl_consts.pm: Don't load encoding.pm, it's not provided in the
- stage 2 perl
-
-2004/11/26 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add some tool in DEVELOPMENT section
-
-2004/11/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * standalone/harddrake2: fixed typo
-
-2004/11/26 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/card.pm: simplify
-
- * partition_table/dos.pm:
- - geometry XXX/240/63 is quite common, so add 240 to @valid_nb_heads
- - remove checking that nb_heads is in @valid_nb_heads
- (this fixes yet another case of the infamous "XP doesn't boot" occuring
- 10.1
- CE, though it should already be fixed via EDD)
-
- * standalone/keyboarddrake: don't write X config when there is none
- (otherwise we write a partial X config)
-
- * Xconfig/monitor.pm: help perl another way that perl_checker prefers
-
- * network/ethernet.pm: help perl_checker
-
-2004/11/26 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: We won't have files named
- compssUsers.pl.<meta_class> since they're all
- merged now.
-
-2004/11/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
- * drakxtools.spec: 10.2-0.5mdk
-
-2004/11/25 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Fix Totem installation when KDE and GNOME are both
- installed.
- Fix Quanta installation
-
-2004/11/25 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: moving partitions never really worked and is disabled since
- years
- safer
-
- * Xconfig/card.pm: create function libgl_config() and have it after
- setting Driver to 'fglrx' so
- that libgl_config() can behave based on {Driver} instead of {Driver2}
-
- * any.pm: remove /lib and /usr/lib with more verbose code
- fix previous commit
- handle the lib64 case separately
-
- * pkgs.pm, devices.pm, install_any.pm: we don't use /tmp for devices
- anymore
- (this comes from long ago when redhat code was using a ro /dev and
- creating other devices in /tmp)
-
- * install_steps_gtk.pm: simpler code
-
- * standalone/drakfloppy: minimal perl_checker compliance
- use floppies_dev() instead of floppies()
-
- * diskdrake/interactive.pm: moving partitions never really worked and is
- disabled since years
- - create analyze_wild_device_name() out of
- subpart_from_wild_device_name()
- - rename part2device() into part2wild_device_name(), change its
- prototype and use analyze_wild_device_name()
- - new field {faked_device}
- - for LABEL=..., {device} is not empty anymore and {faked_device} is
- set,
- merge_fstabs() will take care of having the real {device} and
- {faked_device} unset
- - for devfs_device, {device} is set to the devfs device,
- merge_fstabs() will take care of having the non devfs device in
- {device}
-
- * standalone/diskdrake: use fs::get::device2part()
- use fs::get::device2part()
-
- * fs.pm: remove unused var
- we don't use /tmp for devices anymore
- (this comes from long ago when redhat code was using a ro /dev and
- creating other devices in /tmp)
- - create analyze_wild_device_name() out of
- subpart_from_wild_device_name()
- - rename part2device() into part2wild_device_name(), change its
- prototype and use analyze_wild_device_name()
- - new field {faked_device}
- - for LABEL=..., {device} is not empty anymore and {faked_device} is
- set,
- merge_fstabs() will take care of having the real {device} and
- {faked_device} unset
- - for devfs_device, {device} is set to the devfs device,
- merge_fstabs() will take care of having the non devfs device in
- {device}
- more intelligent sort of fstab to handle loopback files or bind
- directory (bug anthil #1198)
-
-2004/11/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: do not probe memory chips at boot time ...
-
- * standalone/printerdrake (About) let be more l10n friendly regarding
- "translatability"
- (About) let be more l10n friendly regarding font's weight and size
-
- * modules.pm (load_and_configure) fix setting scsi and usb probell in live
- CD (thus fixing
- mousedrake --auto with USB mice on live CD)
-
- * modules/any_conf.pm: ensure that explanations go into
- /var/log/explanations is standalone mode
- (log::explanations() just calls log::l() at install time)
-
- * standalone/service_harddrake: do not die if sound never was configured
- (aka on first boot on live CD)
-
- * drakxtools.spec: fix spacing in 10.2-0.4mdk's changelog
- 10.2-0.4mdk
-
-2004/11/24 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/11/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: list Turkish language in both Asia and Europe (for Istanbul)
-
-2004/11/23 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: fix {device_alias} containing /dev/xxx instead of xxx. The bug
- was
- "none /mnt/cdrom supermount dev=/dev//dev/cdrom,fs=iso9660..."
- (bugzilla #12224)
- fix {device_alias} containing /dev/xxx instead of xxx. The bug was
- "none /mnt/cdrom supermount dev=/dev//dev/cdrom,fs=iso9660..."
- (bugzilla #12224)
-
- * partition_table/raw.pm: detect on lilo on floppy (bugzilla #12213)
- detect on lilo on floppy (bugzilla #12213)
-
- * bootloader.pm: don't use typeOfMBR to check the method on floppy which
- may not be inserted
- (part of bugzilla #12213)
- don't use typeOfMBR to check the method on floppy which may not be
- inserted
- (part of bugzilla #12213)
-
-2004/11/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ja.po: update (Yukiko Bando)
-
- * share/po/fr.po: update (kournikolas)
-
- * share/po/br.po: update
-
-2004/11/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ja.po: update (Yukiko Bando)
-
- * share/po/br.po: update
-
-2004/11/22 Pixel <pixel at mandrakesoft.com>
-
- * rescue/make_rescue_img, mdk-stage1/pci-resource/update-pci-ids.pl,
- docs/HACKING, Makefile:
- - no more kernel/all.modules, things are in kernel/all.kernels
- - cleanup what we keep in kernel/all.kernels: only vmlinuz,
- modules.dep, *.mar, all_modules.tar, modules.cz
- - replace all_modules.list + modules with all_modules.tar
- - kernel/all.modules/modules.cz-VERSION are now in
- kernel/all.kernels/VERSION/modules.cz
- - allow having a normal in isolinux, but don't use it for floppy
- images
- (for this, add kernel/all.kernels/.main-BOOT)
- - add many modules kernel/list_modules.pm in unused categories since
- we don't
- take all modules from kernel, only those listed
- (needed to have a not too big modules.cz for normal kernel)
- - complete rewrite of update_kernel (now written in perl)
-
-2004/11/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm (real_main) in "ADSL provider" step, plain reset
- the protocol on
- provider switch
-
- * standalone/harddrake2: kill a stock icon
-
- * share/po/br.po: update
-
-2004/11/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm (alsa2oss) add snd-azx
-
- * share/rpmsrate: fix wrong package name
-
-2004/11/18 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * install_steps_gtk.pm: use 'fbdev' server on x86_64 too
-
- * share/advertising/list-cpd, share/advertising/list-cps: update to match
- warly's config files
-
-2004/11/18 Pixel <pixel at mandrakesoft.com>
-
- * interactive.pm: fix prototype
- remove some unneeded ";", add some for normalization (as told by
- perl_checker)
-
- * install_steps_interactive.pm, diskdrake/interactive.pm: since we don't
- use ramdisk but clp, some code is dead
- (remove usingRamdisk(), check_prog(), remove_unused()...)
- add some ";", remove some ";", as told by perl_checker
-
- * install2.pm, pkgs.pm, run_program.pm: since we don't use ramdisk but
- clp, some code is dead
- (remove usingRamdisk(), check_prog(), remove_unused()...)
-
- * lang.pm, fs.pm, common.pm, install_any.pm: since we don't use ramdisk
- but clp, some code is dead
- (remove usingRamdisk(), check_prog(), remove_unused()...)
- remove some unneeded ";", add some for normalization (as told by
- perl_checker)
-
- * partition_table/gpt.pm, standalone/harddrake2, partition_table/raw.pm,
- partition_table/mac.pm, install_steps_auto_install.pm,
- diskdrake/hd_gtk.pm: add some ";", remove some ";", as told by
- perl_checker
-
- * wizards.pm, install_steps.pm, install_gtk.pm, network/isdn.pm,
- diskdrake/resize_ntfs.pm, network/netconnect.pm, mouse.pm, lvm.pm,
- devices.pm, raid.pm, crypto.pm, Xconfig/screen.pm, commands.pm,
- install_interactive.pm, ugtk2.pm, partition_table.pm, any.pm,
- interactive/stdio.pm, interactive/newt.pm, harddrake/sound.pm,
- services.pm, authentication.pm, network/ethernet.pm, bootloader.pm,
- harddrake/data.pm, interactive/gtk.pm, network/adsl.pm, fsedit.pm,
- detect_devices.pm, modules.pm, network/shorewall.pm: remove some
- unneeded ";", add some for normalization (as told by perl_checker)
-
-2004/11/18 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/hd_gtk.pm, install_steps_auto_install.pm,
- partition_table/mac.pm, diskdrake/interactive.pm, standalone/harddrake2,
- partition_table/raw.pm, partition_table/gpt.pm,
- install_steps_interactive.pm: add some ";", remove some ";", as told by
- perl_checker
-
-2004/11/17 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: really remove the VG from internal list of
- {lvms}, not on a copy
-
- * install_steps_interactive.pm: fix indentation
-
- * partition_table.pm: also remove "require partition_table::lvm_PV"
- comment for perl_checker
-
-2004/11/17 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * crypto.pm: Update inline mirror list again (the previous one was broken)
- Update the inline mirror list for mini isos
- Integrate from trunk (mirror list update)
- Integrate fixes for mini-ISOs from the trunk.
-
- * install_any.pm: Integrate fixes for mini-ISOs from the trunk.
-
-2004/11/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: add new sound drivers from
- kernel-tmb-2.6.7-2.tmb.6mdk
-
- * modules.pm: on 10.0, b44 failled on newer cards; let's try bcm4400 too
-
- * drakxtools.spec: bump requires on ldetect-lst b/c of s/3c90x/3c59x/
- 10.2-0.3mdk
- fill in 10.2-0.2mdk's changelog
- 10-34.8.100mdk
- 10-34.7.100mdk
-
- * standalone/service_harddrake: backport from 10.1: adapt to new nvidia
- driver location due to
- corporate now using DKMS
-
-2004/11/16 Pixel <pixel at mandrakesoft.com>
-
- * rescue/list.i386, rescue/list.ia64, rescue/list, rescue/list.ppc,
- rescue/list.x86_64: move libperl.so from list.ARCH back to list, using a
- wildcard
-
- * fs/type.pm: for sunos:
- - "SunOS swap" and "Whole disk" don't use ufs
- - drop isSunOS(): replace it with testing {fs_type} eq 'ufs'
- create isEmpty() and use it instead of simply testing {pt_type}, since
- {pt_type} can be undef whereas {fs_type} is set
- don't use pseudo fs_type "apple" for Apple Bootstrap partitions, better
- only use {pt_type} for non mountable partitions
-
- * fs/get.pm, diskdrake/interactive.pm, diskdrake/hd_gtk.pm: create
- isEmpty() and use it instead of simply testing {pt_type}, since
- {pt_type} can be undef whereas {fs_type} is set
-
- * lang.pm: fix typo (thanks to bugzilla #12387)
-
- * fsedit.pm, partition_table/lvm_PV.pm: handle more nicely raw_lvm_PV
- (don't simply ignore them)
-
- * partition_table/empty.pm: empty partition table means sectors #0 and #1
- are zeroes, not simply sector #0
- (this gives a chance to raw_lvm_PV which has its magic on sector #1)
-
- * partition_table.pm: handle more nicely raw_lvm_PV (don't simply ignore
- them)
- don't die in will_tell_kernel() when the device is weird, since it is
- normal when destroying a raw_lvm_PV
- enhance readability
- create isEmpty() and use it instead of simply testing {pt_type}, since
- {pt_type} can be undef whereas {fs_type} is set
-
- * detect_devices.pm: update ppc kernel modules detection & loading
- cleanup get_mac_generation()
-
- * tools/make_mdkinst_stage2, tools/mdkinst_stage2_tool: major switch from
- ramdisk to clp
- - make_mdkinst_stage2 is now mdkinst_stage2_tool
- (we don't keep the live when building the clp, mdkinst_stage2_tool is
- able to create the clp from the live, or the live from the clp)
-
- * partition_table/raw.pm: fix yaboot detection
-
- * bootloader.pm: rename get_of_dev() -> dev2yaboot()
- don't write boot OF in /tmp/of_boot_dev, better use dev2yaboot() instead
- - create yaboot2file() and use it
- - update read_lilo() for yaboot
- - update write_yaboot()
- - remove {useboot}
- - set {boot} to /dev/sda1 in suggest() instead of handling it in
- write_yaboot()
-
- * Xconfig/card.pm: enable UseFBDev in X configs on ppc, for rage128 and
- radeon
- set raw_LINES on every fglrx devices
- drop broken code
- - setting VideoRam for i810
- - unsetting UseFBDev for r128 on ppc
-
- * modules.pm: update ppc kernel modules detection & loading
-
- * mdk-stage1/disk.c, mdk-stage1/tools.h, Makefile, mdk-stage1/cdrom.c,
- mdk-stage1/config-stage1.h, rescue/Makefile, mdk-stage1/directory.c,
- mdk-stage1/Makefile, docs/README, mdk-stage1/tools.c, rescue/.cvsignore,
- rescue/make_rescue_img, mdk-stage1/network.c: major switch from ramdisk
- to clp
- - mdkinst_stage2.bz2 is now mdkinst.clp
- - rescue_stage2.bz2 is now rescue.clp
- - make_mdkinst_stage2 is now mdkinst_stage2_tool
- (we don't keep the live when building the clp, mdkinst_stage2_tool is
- able to create the clp from the live, or the live from the clp)
- - all stage1 images now need cryptoloop & gzloop
- - the clp can be preloaded in memory or not (see
- MEM_LIMIT_DRAKX_PRELOAD and MEM_LIMIT_RESCUE_PRELOAD)
- (for http & ftp, it *must* be preloaded)
- - we don't uncompress the ramdisk anymore since the decompression is
- done on the fly, this makes the rescue boot much faster
- - function get_ramdisk_realname() is replaced with macro CLP_FILE_REL
-
- * pkgs.pm: enhance analyse_kernel_name(), esp. to handle i686-up-64GB
-
- * any.pm: don't write boot OF in /tmp/of_boot_dev, better use dev2yaboot()
- instead
-
- * tools/Makefile: make_mdkinst_stage2 is no more, hail mdkinst_stage2_tool
-
-2004/11/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake, harddrake/data.pm: on startup, redo ethX
- aliases
- on startup, redo ethX aliases
-
-2004/11/15 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm:
- - special bootstrap partition warning for IBM mac_generation
- - no "OldWorld or Unknown machine" for IBM mac_generation
-
-2004/11/15 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * drakxtools.spec: new release for new perl
-
- * share/list: Adjust perl architecture, now that we don't have threads
- anymore
-
-2004/11/14 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: switch to gbk in zh_CN
-
-2004/11/13 Pixel <pixel at mandrakesoft.com>
-
- * rescue/list: add partimage
-
-2004/11/12 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: no "auto install floppy"
- on ppc
-
- * mdk-stage1/Makefile.common: cleanup
- simplify
- build init using $(DIET) just like stage2-* (needed for ppc, and nicer),
- unify LDFLAGS_INIT and LDFLAGS_STAGE1
- remove GLIBC_LDFLAGS_STAGE1 and DIETLIBC_LDFLAGS_STAGE1 since they were
- not used everywhere,
- and so it was not easy to understand
- drop unused INIT_LIBC, GLIBC_LIBC, DIETLIBC_LIBC (all 3 were empty at
- the moment)
-
- * tools/ddcprobe/Makefile: disable ddcprobe again - it doesn't work right,
- causing the installer to halt
- with a divide by zero error
-
- * share/themes-galaxy.rc: the color of the categories of steps is better
- in the theme
- (it was the only part not defined in the theme but in the code)
-
- * mdk-stage1/Makefile: build init using $(DIET) just like stage2-* (needed
- for ppc, and nicer),
- unify LDFLAGS_INIT and LDFLAGS_STAGE1
- remove GLIBC_LDFLAGS_STAGE1 and DIETLIBC_LDFLAGS_STAGE1 since they were
- not used everywhere,
- and so it was not easy to understand
- drop unused INIT_LIBC, GLIBC_LIBC, DIETLIBC_LIBC (all 3 were empty at
- the moment)
- don't use minilibc.h on ppc
- simplify arch dependent config based on dietlibc vs glibc.
- this patch may be wrong for ppc which now used dietlibc but may prefer
- init-libc-headers.h over minilibc.h
- (need testing)
- some defines are not arch dependent
-
- * install_gtk.pm: the color of the categories of steps is better in the
- theme
- (it was the only part not defined in the theme but in the code)
- fix converting the background color
-
-2004/11/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/mk.po: updated Macedonian file
-
-2004/11/10 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: drakauth: add SmartCard authentication
-
- * authentication.pm:
- - correctly restore pam.d/system-auth when setting "local"
- authentication
- - no use_first_pass on "auth sufficient pam_unix.so" line for
- pam_castella
- - correctly restore pam.d/system-auth when setting "local"
- authentication
- - no use_first_pass on "auth sufficient pam_unix.so" line for
- pam_castella
-
-2004/11/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: sync ADSL ISPs DB with HEAD
-
- * drakxtools.spec: 10.2-0.1mdk
- merge 10.1-27mdk's changelog from MDK10.1 branch
- merge in lost changelog
- 10.1-27.1.101mdk
- fix 10.1-27mdk's changelog
-
- * standalone/service_harddrake: load yenta_socket and the like for PCMCIA
- controllers
-
- * standalone/logdrake: fix logdrake speed (should have been commited long
- time ago)
- fix logdrake speed (should have been commited long time ago)
-
- * detect_devices.pm (isLaptop) fix it on non PPC arches
-
- * network/ethernet.pm (mapIntfToDevice) backport 9box detection fix:
- do not try to match usb devices since ldetect doesn't return enough data
-
- * share/rpmsrate: install drivers for ipw2xOO
- sync relevant "hardware/driver matching" bits from Head
-
- * network/isdn_consts.pm: backport support for Philips Semiconductors DSL
- card
-
-2004/11/10 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: add pm_mkhomedir
-
-2004/11/09 Funda Wang <fundawang at linux.net.cn>
-
- * pkgs.pm: reverted pkgs, Sorry
- s/fctix/fcitx. Critical typo
-
- * lang.pm: s/fctix/fcitx. Critical typo
-
-2004/11/09 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/11/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm: introduce network::tools::get_interface_status
-
-2004/11/09 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/card.pm: fix regexp given to matching_driver (otherwise
- smartcard:xxx matches)
- fix regexp given to matching_driver (otherwise smartcard:xxx matches)
-
-2004/11/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getSagem) do not probe for old adiusbadsl driver
- (which is deprecated
- by eagle-usb for more than one year)
-
- * network/adsl_consts.pm: update/add ADSL ISP entries (Benoit Audouard)
- reorder finnish entry
-
- * lang.pm: backport s/fctix/fcitx/ fix from HEAD
-
- * drakxtools.spec: bump require on ldetect-lst b/c of
- s/adiusbadsl/eagleusb/
-
- * share/theme-editor.pl: basic port from Gtk-1.2.x to Gtk+-2.x
-
-2004/11/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/pt.po: updated Tajik file
-
-2004/11/08 Pixel <pixel at mandrakesoft.com>
-
- * common.pm, install2.pm: cp_af() is missing in perl-MDK-Common
- 1.1.11-2mdk
-
- * lvm.pm: call pvremove on every PVs when destroying a VG (to clear the
- LVM2 magic) (bugzilla #11579)
-
- * Xconfig/card.pm, do_pkgs.pm, bootloader.pm: backport
- check_kernel_module_packages() from 10.1 to adapt to dkms proprietary
- packages
-
-2004/11/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not use slicing when selecting single values
-
-2004/11/07 huftis
-
- * share/po/nn.po: More translated.
-
-2004/11/07 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm: SmartCard authentication needs pkg castella-pam
- SmartCard authentication needs pkg castella-pam
-
-2004/11/06 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/11/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: hide ifcfg files for non-root users if they contain
- a WEP key (#12177)
- hide ifcfg files for non-root users if they contain a WEP key (#12177)
-
- * mdk-stage1/pcmcia_/probe.c: merge from pcitable
-
-2004/11/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/de.po: updated Estonian and German files
-
-2004/11/05 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/directory.c: RAMDISK_LOCATION_REL is a better name than
- RAMDISK_LOCATION
- create choose_iso_in_directory() out of try_with_directory()
-
- * mdk-stage1/tools.c: we use pivot_root for rescue, so don't umount
- STAGE2_LOCATION
- saving stage1 resolv.conf is done in finish_preparing() with no special
- code needed for rescue
- (as was done in save_stuff_for_rescue())
- RAMDISK_LOCATION_REL is a better name than RAMDISK_LOCATION
-
- * Makefile: do not gzip pm files anymore (since we will soon use
- compressed loopback, this is not useful anymore)
- create install/stage2/mdkinst.kernels which contains the list of kernels
- known by stage2.
- this replaces looking at install/stage2/live/modules/modules.cz-xxx
- (why? cuz install/stage2/live is going to be removed!)
- simplify
-
- * mdk-stage1/network.c: use install/stage2/mdkinst.kernels to check stage2
- kernel version instead of install/stage2/live/lib/modules.cz-xxx
-
- * mdk-stage1/config-stage1.h: RAMDISK_LOCATION_REL is a better name than
- RAMDISK_LOCATION
-
- * share/list: do not gzip pm files anymore (since we will soon use
- compressed loopback, this is not useful anymore)
-
- * mdk-stage1/Makefile:
- - no need to build stage1-cdrom nor stage1-network for MOVE
- - for stage1-full, no special .c is needed for MOVE
- cleanup (hoist MOVE_ADDSRC in STAGE1SRC)
- remove duplicates in STAGE1OBJS-FULL, this removes make warnings
-
- * authentication.pm: add "Smart Card" authentication (using pam_castella)
- (as asked by flepied)
- add "Smart Card" authentication (using pam_castella) (as asked by
- flepied)
-
- * rescue/tree/usr/share/symlinks, mdk-stage1/stage1.c: keep the tmpfs and
- rescue in /tmp/stage2
- (this allows to mount the rescue read-only)
-
- * rescue/tree/etc/rc.sysinit: umount /stage1 when /etc/mtab exists to
- remove a warning
- free up stage1 memory
- fix typo
- keep the tmpfs and rescue in /tmp/stage2
- (this allows to mount the rescue read-only)
-
-2004/11/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque po file
-
-2004/11/04 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/stage1.h: MODE_RAMDISK is now unused
- drop IS_SPECIAL_STAGE2 in favor of IS_RESCUE
-
- * mdk-stage1/modules.c: LIVE_LOCATION is better named LIVE_LOCATION_REL
- without the leading "/"
- cleanup code using kernel_module_extension()
-
- * mdk-stage1/stage1.c:
- - create mount_clp_may_preload() out of handle_clp()
- - rename handle_clp() to handle_move_clp() and simplify its use
- IMAGE_LOCATION_REAL is better named STAGE2_LOCATION in MOVE
- replace RAW_LOCATION_REL with IMAGE_LOCATION_REL
- (the absolute symlink will now be relative, but that's ok here)
- simplify since STAGE2_LOCATION is now valid for live installs before
- pivot_root
- (due to previous stage1.c commit)
- STAGE2_LOCATION symlink is now relative instead of absolute
- (relies on the fact that STAGE2_LOCATION and IMAGE_LOCATION are both in
- /tmp in non MOVE)
- rename STAGE2_LOCATION_REL into STAGE2_LOCATION_ROOTED
- (since STAGE2_LOCATION_REL is not relative, it's simply absolute when
- chrooted)
- create STAGE2_LOCATION symlink if it is not a directory (well more
- precisely when it doesn't exist)
- LIVE_LOCATION is better named LIVE_LOCATION_REL without the leading "/"
-
- * mdk-stage1/network.c: LIVE_LOCATION is better named LIVE_LOCATION_REL
- without the leading "/"
- create str_ftp_error()
-
- * mdk-stage1/config-stage1.h:
- - create mount_clp_may_preload() out of handle_clp()
- - rename handle_clp() to handle_move_clp() and simplify its use
- add some comments
- IMAGE_LOCATION_REAL is better named STAGE2_LOCATION in MOVE
- - STAGE2_LOCATION is unused in MOVE
- - IMAGE_LOCATION_REAL is unused in non MOVE
- replace RAW_LOCATION_REL with IMAGE_LOCATION_REL
- (the absolute symlink will now be relative, but that's ok here)
- new macro IMAGE_LOCATION_REL
- rename STAGE2_LOCATION_REL into STAGE2_LOCATION_ROOTED
- (since STAGE2_LOCATION_REL is not relative, it's simply absolute when
- chrooted)
- LIVE_LOCATION is better named LIVE_LOCATION_REL without the leading "/"
-
- * mdk-stage1/tools.h:
- - create mount_clp_may_preload() out of handle_clp()
- - rename handle_clp() to handle_move_clp() and simplify its use
- test_that_cd() is now image_has_stage2()
-
- * mdk-stage1/tools.c:
- - create mount_clp_may_preload() out of handle_clp()
- - rename handle_clp() to handle_move_clp() and simplify its use
- fix typo
- create save_fd() out of copy_file()
- MODE_RAMDISK is now unused
- LIVE_LOCATION is better named LIVE_LOCATION_REL without the leading "/"
- test_that_cd() is now image_has_stage2()
- drop IS_SPECIAL_STAGE2 in favor of IS_RESCUE
-
- * mdk-stage1/url.c, mdk-stage1/url.h: create str_ftp_error()
-
- * mdk-stage1/directory.c: LIVE_LOCATION_REL doesn't exist anymore in MOVE
- more comment
- LIVE_LOCATION is better named LIVE_LOCATION_REL without the leading "/"
- use image_has_stage2() (even if not equivalent for rescue since we now
- check the stage2 stuff instead, but it should do)
- drop IS_SPECIAL_STAGE2 in favor of IS_RESCUE
-
- * mdk-stage1/cdrom.c: more comment
- test_that_cd() is now image_has_stage2()
- drop IS_SPECIAL_STAGE2 in favor of IS_RESCUE
-
-2004/11/04 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Create cfg dir if needed. Use xorg.conf.
- Touch /etc/dhcpd.conf.etherboot.kernel if missing.
- Ignore vmnet for broadcast address.
- Start reworking PXE support.
- Create cfg dir if needed, ignore vmnet for broadcast address.
- Use xorg.conf. Touch dhcp.conf.etherboot.kernel.
-
-2004/11/02 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/tools.c: rename MEM_LIMIT_RAMDISK into MEM_LIMIT_DRAKX
- compile less things when MANDRAKE_MOVE is defined
- (needed so that future commits can restrict define's in config-stage1.h)
-
- * mdk-stage1/directory.c: cleanup (remove warning when compiling with
- MANDRAKE_MOVE defined)
-
- * mdk-stage1/config-stage1.h: rename MEM_LIMIT_RAMDISK into
- MEM_LIMIT_DRAKX
-
- * mdk-stage1/disk.h, mdk-stage1/tools.h, mdk-stage1/stage1.c,
- mdk-stage1/network.h: compile less things when MANDRAKE_MOVE is defined
- (needed so that future commits can restrict define's in config-stage1.h)
-
- * mdk-stage1/disk.c: use IMAGE_LOCATION_DIR where it should be
- compile less things when MANDRAKE_MOVE is defined
- (needed so that future commits can restrict define's in config-stage1.h)
-
- * mdk-stage1/network.c: normalize code
- rename MEM_LIMIT_RAMDISK into MEM_LIMIT_DRAKX
- normalize code
- use IMAGE_LOCATION_DIR where it should be
- compile less things when MANDRAKE_MOVE is defined
- (needed so that future commits can restrict define's in config-stage1.h)
-
-2004/11/02 rstandtke
-
- * share/po/de.po: some fixes
-
-2004/11/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm: perl_checker cleanups
- (dmidecode) provide more fields
- (computer_info) simplify
- (dmidecode) handle multiple devices with same name
- (computer_info) split it out of dmidecode()
-
- * standalone/harddrake2, harddrake/data.pm: display more information
-
- * install_steps.pm (setupBootloaderBefore) dmidecode() was renamed as
- computer_info()
-
-2004/10/29 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Anthill #1134 - advise user about anacron.
-
-2004/10/28 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * pkgs.pm: IA-64 and X86-64 are full 64-bit arches thus don't need
- kernel-enterprise
- IA-64 and X86-64 are full 64-bit arches and thus don't need
- kernel-enterprise
-
-2004/10/28 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: corrections of errors
- gi/perl-install/share/po/da.po
-
-2004/10/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn_consts.pm: support Philips Semiconductors DSL card
-
-2004/10/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump buildrequires on ldetect and requires on
- ldetect-lst so that
- we've working support for freebox with USB link
- 10.1-27mdk
-
-2004/10/28 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: remove idmap from winbind AD
- change description for Active directory
- Remove sasl entry
- Add check button for tls
-
-2004/10/27 Pixel <pixel at mandrakesoft.com>
-
- * raid.pm: since we need mdadm, ensure we have it (bugzilla #12146)
-
- * diskdrake/interactive.pm: warn about created partition with a given
- mount point but not formatted
- since we need mdadm, ensure we have it (bugzilla #12146)
-
- * any.pm:
- - handle setting memsize mem= kernel parameter in a special function
- - rely on pack_append() to remove dups (using $uniq_dict_appends) in
- set_append_with_key()
- (drawback: it doesn't keep the order anymore)
- split {get,set}_append() into {get,set}_append_with_key() and
- {get,set}_append_simple()
- remove dead code
- modifying $e->{append} is useless since we override it with $append
-
- * bootloader.pm:
- - handle setting memsize mem= kernel parameter in a special function
- - rely on pack_append() to remove dups (using $uniq_dict_appends) in
- set_append_with_key()
- (drawback: it doesn't keep the order anymore)
- split {get,set}_append() into {get,set}_append_with_key() and
- {get,set}_append_simple()
- many kernel parameters alike "console=tty0 console=ttyS0,57600" can take
- different values, so we now take the safe side and only remove dups for
- parameters we know the last parameter is used (bugzilla #12055)
-
- * install_steps.pm: split {get,set}_append() into
- {get,set}_append_with_key() and {get,set}_append_simple()
- nicer
-
- * diskdrake/hd_gtk.pm: use ToggleButton instead of Button so that selected
- partition is visually toggled
-
-2004/10/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) fix again MGE USB UPSes
- (getUPS) fix again MGE USB UPSes
- (getUPS) fix again MGE USB UPSes
-
- * standalone/drakups: backport working drakups
-
- * network/ethernet.pm (mapIntfToDevice) do not try to match usb devices
- since ldetect doesn't return
- enough data (thus fixing 9box string)
-
-2004/10/27 Warly <warly at mandrakesoft.com>
-
- * install_any.pm: add more log into find_root_part
-
-2004/10/26 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * share/list.x86_64: add 'synaptics' module so that testing works
- add 'synaptics' module so that testing works
-
- * fs/type.pm: older partition types (ntfs) are also available to x86_64
- older partition types (ntfs) are also available to x86_64
-
- * bootloader.pm: run grub chrooted
- run grub chrooted
-
-2004/10/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2004/10/26 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm: configure sshd to use PAM when needed (sshd config
- file is modified, but i did not test more)
-
- * install_any.pm: help perl_checker
- in upgrade, when we need to migrate device names, we must write the
- fstab
- in upgrade, when we need to migrate device names, we must write the
- fstab
-
- * run_program.pm: do not use die when forked, use log::l + c::_exit
- instead
- do not use die when forked, use log::l + c::_exit instead
-
- * install_steps_interactive.pm: in upgrade, when we need to migrate device
- names, we must write the fstab
- in upgrade, when we need to migrate device names, we must write the
- fstab
-
- * raid.pm: newly created raids must have a fs_type (this was dropped in
- rev 1.45, it was an error)
- newly created raids must have a fs_type (this was dropped in rev 1.45,
- it was an error)
-
- * Xconfig/various.pm, standalone/drakboot, bootloader.pm,
- standalone/bootloader-config: detectloader must handle specially
- raid-extra-boot=mbr-only (bugzilla #12089)
-
- * install_steps.pm: detectloader must handle specially
- raid-extra-boot=mbr-only (bugzilla #12089)
- in upgrade, when we need to migrate device names, we must write the
- fstab
- in upgrade, when we need to migrate device names, we must write the
- fstab
-
-2004/10/26 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * crypto.pm: Remove spurious "my"
-
-2004/10/26 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: Fix net join for winbind
- Changer order dialog in AD
-
-2004/10/26 Warly <warly at mandrakesoft.com>
-
- * install_any.pm: include support of the oem configuration file to display
- the correct product name
-
-2004/10/25 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Some fixed
-
-2004/10/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po, share/po/gl.po: updated Basque and Galician files
-
-2004/10/25 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Merge French translations from cooker
-
-2004/10/21 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/harddrake2:
- - backport patches to MDK-10-update branch for oem
-
- * standalone/printerdrake:
- - backport fixes to MDK-10-update
-
-2004/10/21 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: remove trailing slashes
-
-2004/10/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/gl.po: updated Galician file
-
-2004/10/19 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/printerdrake:
- - perl_checker fixes
- - don't hardcore distroname
- - don't trigger help system when mandrake-doc-common is not installed
- - don't trigger bug report in oem mode
-
- * standalone/harddrake2:
- - don't trigger help system when mandrake-doc-common is not installed
- - don't trigger bug report in oem mode
- - don't hardcode distro name (usefull for oem to change the distro
- name at only one place)
-
-2004/10/19 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: no need to set $::o->{locale} anymore
- (it was introduced in 1.172, maybe for create_box_with_title(), but
- doesn't seem useful anymore)
-
- * standalone/net_monitor: really fix typo (ie revert gtknew() patch)
- fix typo
- simplify
-
-2004/10/19 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Repair FTP supplementary media with overriding of
- rpmsrate and compssUsers.pl
- Installation with a ftp supplementary media (for mini-isos) :
- inline the mirror list (since fetching it causes weird network
- problems).
- Fix the handling of relative urls in ftp media when fetching hdlists
- file.
-
- * pkgs.pm: Installation with a ftp supplementary media (for mini-isos) :
- inline the mirror list (since fetching it causes weird network
- problems).
- Fix the handling of relative urls in ftp media when fetching hdlists
- file.
-
- * install_steps_interactive.pm: This deserves an explanation
- Installation with a ftp supplementary media (for mini-isos) :
- inline the mirror list (since fetching it causes weird network
- problems).
- Fix the handling of relative urls in ftp media when fetching hdlists
- file.
-
- * crypto.pm: There are mirrors in many new countries now. (and sort the
- list)
- Installation with a ftp supplementary media (for mini-isos) :
- inline the mirror list (since fetching it causes weird network
- problems).
- Fix the handling of relative urls in ftp media when fetching hdlists
- file.
-
-2004/10/18 Warly <warly at mandrakesoft.com>
-
- * crypto.pm: update version checking code of crypto.pm
-
-2004/10/17 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2004/10/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
-2004/10/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor (update) do not re-select the default interface
- every 5 seconds
-
-2004/10/16 rstandtke
-
- * share/po/de.po: added some translations
-
-2004/10/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/eu.po, share/po/es.po, share/po/am.po: updated
- Basque and Amharic files
-
-2004/10/15 Pixel <pixel at mandrakesoft.com>
-
- * network/adsl.pm: cleanup
-
- * network/tools.pm: cleanup thanks to perl_checker
-
- * network/netconnect.pm: cleanup thanks to perl_checker
- make perl_checker happy
-
-2004/10/14 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/10/14 Pixel <pixel at mandrakesoft.com>
-
- * lvm.pm: no need to run vgscan and vgchange in standalone
- (nb: /etc/lvmtab is no more used, so i also dropped that check)
-
- * network/tools.pm: simplify
- cleanup thanks to perl_checker
-
- * standalone/fileshareset: cleanup
- perl_checker compliance
-
- * rescue/devices.pl: create /dev/md* devices in rescue
-
- * diskdrake/interactive.pm: document UUID md field
-
- * standalone/drakups: perl_checker compliance
-
- * standalone/harddrake2, standalone/service_harddrake: cleanup thanks to
- perl_checker
-
- * services.pm: simplify
- simplify
-
- * Xconfig/resolution_and_depth.pm: even if bugzilla #9755 says 24 bpp is
- not valid for vmware, Nora Etukudo says the contrary on cooker.
- the limitation seems to be "The guest X server must run at the same
- depth and bpp as the host" which is hard to enforce in XFdrake
-
- * raid.pm: put UUID instead of devices in mdadm.conf to be more device
- naming independant
- (as requested by Luca Berra on cooker)
-
- * rescue/list: add /sbin/lvm2 to the rescue
-
- * share/compssUsers.pl: remove unneeded parentheses
-
-2004/10/13 Antoine Ginies <aginies at mandrakesoft.com>
-
- * mdk-stage1/tools.c, mdk-stage1/stage1.h, mdk-stage1/tools.h,
- mdk-stage1/url.c, mdk-stage1/stage1.c, mdk-stage1/network.c,
- mdk-stage1/network.h, mdk-stage1/url.h: add new installation method (ka)
-
- * mdk-stage1/stage1-data/stage1-with-ka.tar.bz2: add stage1 with ka-tools
-
-2004/10/13 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/10/13 Pixel <pixel at mandrakesoft.com>
-
- * standalone/fileshareset: "portmap status" prints "portmap (pid XXXX) is
- running..." which bothers progs calling fileshareset (eg: gnome)
-
- * install_steps_interactive.pm: make perl_checker happy
- don't ask the security level in firewire meta_class
- don't ask the security level in firewire meta_class
-
-2004/10/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfont: remove TODO entry regarding configurnig programs
- that uses fontconfig
-
-2004/10/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm (get_eth_cards) workaround more buggy drivers that
- returns a bogus driver name for the GDRVINFO command of the ETHTOOL
- ioctl
-
- * standalone/drakconnect (del_intf) fix crash introduced by trainee just
- before the release :-(
-
- * drakxtools.spec: 10.1-26mdk
-
- * share/po/br.po: update
-
-2004/10/11 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: in grub menu.lst, keep previous "serial ..." and
- "terminal ..." lines (bugzilla #12054)
-
-2004/10/11 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
-
-2004/10/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm (get_eth_cards) fix another lying module
-
- * drakxtools.spec: 10.1-25mdk
-
-2004/10/11 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: use k3b-dvd by default
-
-2004/10/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-24mdk
-
-2004/10/10 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2004/10/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: updated Persian file
-
- * share/po/uk.po: updated Ukrainian file
-
- * share/po/uz.po, share/po/pl.po, share/po/zh_TW.po, share/po/pt.po,
- share/po/fr.po, share/po/hu.po, share/po/uz@Latn.po: updated Uzbek
- files; checked various po files against latest *.pot
-
- * share/po/ja.po: updated Japanese file
-
- * share/po/nb.po, share/po/es.po: updated Spanish and Bokmål files
-
- * share/po/it.po: updated Italian file
-
-2004/10/10 vljubovic
-
- * share/po/bs.po: Fixing Bosnian translation
-
-2004/10/09 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/10/09 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/10/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm (adsl_conf_backend) don't write ifcfg-ppp0 for
- static/dhcp connections
-
- * network/network.pm (configureNetwork2) remove
- /etc/sysconfig/network-scripts/ethX files
- that may have been created by sagem scripts
-
- * standalone/drakconnect: remove /etc/sysconfig/network-scripts/ethX files
-
-2004/10/08 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: 1660:Welcome to the Printer Setup Wizard
-
-2004/10/08 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2004/10/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/fr.po: updated Estonian po file
-
-2004/10/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Missing French translations
-
-2004/10/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: fix encapsulation for chinese ISPs (Funda Wang,
- #10965)
-
- * share/rpmsrate:
- - install ppp for RTC modems
- - install kppp too if KDE is selected
- - install drivers for HSF and HCF modems
-
- * .perl_checker: perl_checker cannot currently parse the "encoding" and
- the "utf8" modules
-
- * network/netconnect.pm: try /dev/ttyS14 too for serial modems (ie
- internal PCI modems that
- don't need any driver but export a serial port instead)
- start slmodemd when installing it (thus preventing the average user to
- have to restart his machine in order to get a working connection)
- fix H[CS]F modems configuration (kernel packages were renamed)
-
- * drakxtools.spec: one more change for 10.1-23mdk
- 10.1-23mdk
- 10.1-22mdk
-
-2004/10/08 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Simplify complicated Flags for ppp and kdenetwork-ppp
- add shareutils installed by default in SYSTEM
-
-2004/10/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/fr.po: updated Estonian po file
-
-2004/10/08 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: on a recent kernel, we remove any existing devfs= kernel
- option to enable udev
-
-2004/10/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Missing French translations
- Fixes
-
-2004/10/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-22mdk
-
-2004/10/08 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: on a recent kernel, we remove any existing devfs= kernel
- option to enable udev
-
-2004/10/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Fixes
-
-2004/10/07 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/fa.po, share/po/id.po, share/po/ru.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: Updated POT
-
- * share/po/zh_CN.po: Updated POT
- Updated Simplified Chinese translation
-
-2004/10/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * network/adsl_consts.pm: corrected "Morocco" name; converted to UTF-8
-
-2004/10/07 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/fi.po: update translations, 100% translated, was 22 fuzzy, 2
- untranslated.
-
- * share/po/sv.po: Updated translations, 100% translated, was 193 fuzzy,
- 138 untranslated.
- Whopee.... Swedish translations are now also at 100% ....
-
-2004/10/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: add chinese ISPs (fundawang@yeah.net, #10965)
-
- * network/modem.pm (first_modem) fix crash at install time
-
- * harddrake/data.pm: explain
-
-2004/10/07 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/various.pm, install_steps.pm, Xconfig/default.pm,
- Xconfig/main.pm, harddrake/autoconf.pm:
- - XFdrake can detect a auxmouse which was not detected by mousedrake
- so we need to call various_xfree_conf()
- - this implies adding parameter $do_pkgs to a few functions
-
- * Xconfig/parse.pm: fix parsing fully commented Section. eg:
- #Section "Extensions"
- # Option "Composite" "Enable"
- # Option "RENDER" "Enable"
- #Endsection
-
-2004/10/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/modem.pm (first_modem) fix crash at install time
-
-2004/10/07 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/various.pm, install_steps.pm, Xconfig/default.pm,
- Xconfig/main.pm, harddrake/autoconf.pm:
- - XFdrake can detect a auxmouse which was not detected by mousedrake
- so we need to call various_xfree_conf()
- - this implies adding parameter $do_pkgs to a few functions
-
- * Xconfig/parse.pm: fix parsing fully commented Section. eg:
- #Section "Extensions"
- # Option "Composite" "Enable"
- # Option "RENDER" "Enable"
- #Endsection
-
-2004/10/06 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2004/10/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/am.po: updated Amharic file
-
- * share/po/nb.po: updated Bokmål file
- updated Bokmål file
-
-2004/10/06 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/sv.po: updated translations, was 269 fuzzy, 193 untranslated,
- is now 171 fuzzy, 136 untranslated, the rest will be done by
- tomorrow (today?)
-
-2004/10/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Bokmål file
-
-2004/10/06 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: fix regexp decompose_vmlinuz_name (broke with kernel
- vmlinuz-2.6.8.1-12.1mdk)
-
-2004/10/06 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_auto_install.pm: Unneccessary in cooker
-
-2004/10/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: log one more change in 10.1-21mdk
- 10.1-21mdk
-
- * detect_devices.pm (getUPS) fix detecting UPS devices
-
-2004/10/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * services.pm: fixed encoding problem with the output of start/stop init
- scripts
- (the output must be forced to utf-8 in order to have it displayed in
- gtk2)
-
-2004/10/05 Pixel <pixel at mandrakesoft.com>
-
- * install_gtk.pm: no special theme for meta_class firewall
- no special theme for meta_class firewall
-
- * install_steps_interactive.pm: for meta_class firewall, call the general
- netconnect function
- don't warnAboutNaughtyServers if meta_class is firewall
- for meta_class firewall, call the general netconnect function
- don't warnAboutNaughtyServers if meta_class is firewall
-
- * Makefile: remove bad uniq now unneeded
- use TMPDIR
-
- * Makefile.config: add TMPDIR
-
- * install2.pm: don't install updates when meta_class is firewall
- don't install updates when meta_class is firewall
-
- * partition_table.pm: don't use devices::part_number(), otherwise it fails
- with c0d0p* devices
-
- * network/netconnect.pm: don't configure firewall after configuring
- network during install
- (in summary you can configure firewall directly)
-
-2004/10/05 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_auto_install.pm: Add a dummy ask_yesorno for autoinstalls
-
- * crypto.pm: Further normalization of updates directories.
- New mirror structure for official updates
-
-2004/10/05 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2004/10/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getUPS) add proper support for "American Power
- Conversion|Back-UPS"
- (getUPS) fix port for MGE's USB UPSes
- (getUPS) fix drivers
- (getUPS) typo fix
- (getUPS) detect "American Power Conversion" UPS too
-
- * drakxtools.spec: 10.1-20mdk
- 10.1-19mdk
-
- * standalone/drakups: in manual adding:
- - let's have unique UPS names in the list
- - fix reading driver from the list
- write config in pure wizard mode
- (writeconf) restart upsd daemon
- install nut earlier
- fix installing nut
-
- * standalone/drakfont (font_choice) remove debug message
- fix closing import dialog (#11052)
-
- * ugtk2.pm (Gtk2::ComboBox->set_text) do not die in official release
-
- * pkgs.pm (supplCDMountPoint) perl_checker cleanup
-
- * standalone/drakconnect (save) applying changes can be quite time
- expensive, especially with
- ppp and wifi connections thus let's show the same "wait" dialog like
- in the old interface
-
- * network/adsl_consts.pm: add a few new ADSL ISP : Argentina (Speedy),
- Austria (AON), Morrocco
- (Maroc Telecom) and Thailand (Asianet) (baud)
- fix wrong VCI which wasn't in hexa for brazililan Velox/Telemar ISP
- (baud)
-
-2004/10/05 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: fix madwifi_kernel in madwifi-kernel
-
-2004/10/05 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: remove bad uniq now unneeded
- remove unused specific_arch
-
- * partition_table.pm: don't use devices::part_number(), otherwise it fails
- with c0d0p* devices
-
- * tools/specific_arch: specific_arch will now return only the specific
- arch file, not the main one
- (which is what we want for perl-install/share/symlinks,
- perl-install/share/list and rescue/list)
-
-2004/10/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-19mdk
-
- * ugtk2.pm (Gtk2::ComboBox->set_text) do not die in official release
-
- * network/adsl_consts.pm: add a few new ADSL ISP : Argentina (Speedy),
- Austria (AON), Morrocco
- (Maroc Telecom) and Thailand (Asianet) (baud)
- fix wrong VCI which wasn't in hexa for brazililan Velox/Telemar ISP
- (baud)
-
-2004/10/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakconnect (apply) recompute NETWORK and BROADCAST fiels in
- manage interface
- (manage) use both type and device name in non-ethernet interfaces list
- (build_notebook) do not crash if BOOTPROTO is empty, use 'none' by
- default (#11899)
-
- * network/netconnect.pm: do not lose GATEWAYDEV if it is a non wireless
- one and a static
- wireless card is configured (and vice versa)
-
-2004/10/04 rcasha
-
- * share/po/mt.po: var
-
-2004/10/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-18mdk
- typo fix in 10.1-17mdk's changelog
-
- * standalone/service_harddrake: remove what should had never been commited
-
-2004/10/04 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Fix "Corporate Desktop" advertisment
-
-2004/10/04 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * mdk-stage1/dietlibc/include/sys/io.h: allow ioports on x86_64 too for
- pcmcia support
-
- * c/smp.c: 64-bit fixes for x86_64
-
- * share/symlinks.x86_64: extra links on x86_64
-
- * rescue/list.x86_64: add grub files
-
- * Makefile: handle lib64 dirs, build pcmcia stuff on x86_64 too, handle
- arch-specific
- symlinks additions.
-
- * fs/type.pm: re-enable xfs on x86_64, for testing
-
- * Xconfig/card.pm: make perl_checker happy
- x86_64 is a lib64 platform, so handle nvidia glx here too (and ati in
- the future)
-
- * share/list.x86_64: updates for xorg
-
- * share/list: lib64 fixes, add im-cedilla
-
- * mdk-stage1/rescue-gui.c: allow recovery of MS bootloader on x86 too
-
-2004/10/04 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: 1645:
- NOTE: Depending on the printer model and the printing system up to %d MB
- of
- additional software will be installed.
-
-2004/10/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: do not lose GATEWAYDEV if it is a non wireless
- one and a static
- wireless card is configured (and vice versa)
- write wlan-ng config files for prism2 drivers
-
-2004/10/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po: updated Italian file
-
-2004/10/04 rcasha
-
- * share/po/mt.po: var
-
-2004/10/04 rstandtke
-
- * share/po/de.po: some additions
-
-2004/10/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: remove what should had never been commited
- do not disable glx when switching from nvidia driver to nv (indirect
- support, #11285)
- do not failled when hw db is corrupted
-
- * share/po/br.po: fix inverted translation for autologin
-
- * drakxtools.spec: 10.1-18mdk
- typo fix in 10.1-17mdk's changelog
- 10.1-17mdk
- 10.1-16mdk
-
-2004/10/04 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: mdkkdm is now the default again
-
-2004/10/03 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/10/03 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- soft/menu-messages/da.po soft/mdkonline/po/da.po
- soft/mountloop/po/da.po gi/perl-install/share/po/da.po
-
-2004/10/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: fix typo
- (sagem_set_parameters, adsl_conf_backend): write static ip in
- eagle-usb.conf if needed for sagem modems, else erase it
-
- * install_steps_interactive.pm (configureNetwork) load only ethernet
- modules before easy_dhcp (this
- will load firewire modules after other ethernet modules, so firewire
- interfaces won't always take the name eth0)
-
- * network/netconnect.pm: remove TYPE field in ifcfg files if connection
- type isn't ADSL
- perl_checker fix
- do not lose ONBOOT setting for manual/dhcp dsl connections
- misc sagem fixes:
- - allow to write static ip in eagle-usb.conf (write this file later)
- - load sagem specific modules/programs before config is written
- - do not reset IP address each time it is configured
- - automatically guess gateway for static connections
- do not break the "IP %s address is usually reserved" warning
-
-2004/10/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/pt.po: updated Persian file; put back current
- version of Portuguese file
-
-2004/10/03 rcasha
-
- * share/po/mt.po: var
-
-2004/10/03 tsdgeos
-
- * share/po/ca.po: Small updates for ca
-
-2004/10/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
-
-2004/10/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: fix keyboard names
-
-2004/10/01 Daouda Lo <daouda at mandrakesoft.com>
-
- * tools/cvslog2changelog.pl:
- - added Romain
-
-2004/10/01 Frederic Lepied <flepied at mandrakesoft.com>
-
- * network/network.pm: call the scripts in
- /etc/sysconfig/network-scripts/hostname.d like the network
- scripts are doing when changing the hostname.
-
-2004/10/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: create $intf->{sagem} when needed before checking
- it exists ...
- (make sagem usable again with dhcp/static connections)
-
- * mouse.pm (detect) fix synaptics auto-detection
-
-2004/10/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/po/uk.po: updated Ukrainian file
-
-2004/10/01 Pixel <pixel at mandrakesoft.com>
-
- * share/compssUsers.pl, share/compssUsers-powerpack.pl,
- share/compssUsers-discovery.pl, share/compssUsers-powerpackplus.pl:
- dynamically choose the compssUsers based on meta_class, so now we have
- only one compssUsers.pl
-
- * share/rpmsrate: revert part of the commit that was not done on purpose
- (nb: don't modify rpmsrate *after* running clean-rpmsrate)
-
- * pkgs.pm: fix logging rpmsrate_flags_chosen
-
- * install2.pm:
- - prosuite is now named powerpackplus
- - simplify the code searching for the meta_class
- fix logging rpmsrate_flags_chosen
-
-2004/10/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakups: add --wizard option in order to directly run the
- wizard
- do not show banner when embedded
-
- * standalone/service_harddrake.sh: run harddrake service on stop
-
- * share/rpmsrate: try harder to include IMs on CDs
-
- * standalone/service_harddrake: on stop blacklist snd-usb-audio
-
- * standalone/man/C/man8/drakconnect.8: typo fixes
-
- * drakxtools.spec: 10.1-15mdk
- 10.1-14mdk
- 10.1-13mdk
-
- * detect_devices.pm: perl_checker cleanup
-
-2004/10/01 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: revert part of the commit that was not done on purpose
- (nb: don't modify rpmsrate *after* running clean-rpmsrate)
-
- * pkgs.pm: fix logging rpmsrate_flags_chosen
-
- * share/compssUsers.pl, share/compssUsers-powerpack.pl,
- share/compssUsers-discovery.pl, share/compssUsers-powerpackplus.pl:
- dynamically choose the compssUsers based on meta_class, so now we have
- only one compssUsers.pl
-
- * install2.pm:
- - prosuite is now named powerpackplus
- - simplify the code searching for the meta_class
- fix logging rpmsrate_flags_chosen
-
-2004/09/30 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: 1612: Edit selected server
-
-2004/09/30 marco
-
- * share/po/it.po: fix
-
-2004/09/30 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/fi.po: Updated translations, 100% translated, was 17 fuzzy, 78
- untranslated.
-
-2004/09/30 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers.powerpack, share/rpmsrate, share/compssUsers.pl,
- share/compssUsers-discovery.pl, share/compssUsers.server,
- share/compssUsers.desktop, share/compssUsers-powerpack.pl,
- share/compssUsers-powerpackplus.pl: Update
-
-2004/09/30 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/net_applet:
- - Numeric comparisons
-
-2004/09/30 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/30 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: 1425:WARNING: this device
-
-2004/09/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * authentication.pm: removed "\t" and "\n" out of translatable strings to
- avoid useless
- duplication; fixed English typographic errors (don't put spaces
- before colons!).
-
- * share/po/hr.po, share/po/sv.po: updated pot file
- updated pot file
- updated Croatian and Swedish files
-
- * share/po/ja.po: updated po file
- updated pot file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
- updated pot file
-
-2004/09/30 Pixel <pixel at mandrakesoft.com>
-
- * lvm.pm: don't die when device-mapper is missing (occurs on 2.4 kernel)
- (bugzilla #11834)
-
- * authentication.pm: kinds() must return all kinds
- only allow Active Directory for the corporate product
- revert enhancement commit since we are in deep freeze
-
- * standalone/drakauth, install_steps_interactive.pm: only allow Active
- Directory for the corporate product
-
-2004/09/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: typo fix
- list tablets too with mice
- use a distinct icon for UPS devices in harddrake GUI
- fix UPS devices listed in both "UPS" and "unknown" classes
- list all mice and keyboards (thus lowering unknown hardware in
- hwdb-clients)
-
- * lang.pm (configure_kdeglobals) set KDE in m17n emvironment if needed
-
- * drakxtools.spec: split localedrake menu entry in two ones:
- - one for user config
- - one for system (embedded in mcc)
- add one missing log in 10.1-12mdk
- 10.1-12mdk
-
- * share/po/br.po: translate reverted messages so that they got smoothly
- uncommented once
- drakauth changes are merged back after mdk10.1 release
- update
-
- * standalone/icons/harddrake2/ups.png: use a distinct icon for UPS devices
- in harddrake GUI
-
- * detect_devices.pm (getUPS) provide more data on UPS (arnaud quette)
- (getInputDevices) introduce it in order to list input devices
-
-2004/09/30 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: Remove ssl config in ldap
- Add pam_mkhomedir for ldap
-
-2004/09/29 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: check every 5 seconds (instead of 20) for new or
- disconnected interfaces (#11780)
-
-2004/09/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po: corrected typo
-
-2004/09/29 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm:
- - disable the new gtk smart search which display an entry box
- - fix return value of key_press_event for some cases
- (otherwise arrow keys do not work)
-
-2004/09/29 rcasha
-
- * share/po/mt.po: var
-
-2004/09/29 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2004/09/29 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: Add more new entry for LDAP
-
-2004/09/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po: corrected typo
-
-2004/09/29 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/raw.pm, fsedit.pm: don't die when failing to open a
- device (to get its geometry), skip it instead
- (as used to be done before partition_table::raw::get_geometries() was
- introduced)
-
- * interactive/gtk.pm:
- - disable the new gtk smart search which display an entry box
- - fix return value of key_press_event for some cases
- (otherwise arrow keys do not work)
-
- * any.pm: add raid-extra-boot=mbr when installing on mdX (bugzilla #11699)
-
- * modules.pm: fix titi sux
-
- * install_steps.pm: ensure gdk loaders, gtk immodules and pango modules
- lists are correct
-
-2004/09/29 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: install_urpmi now writes a names file for each media
-
-2004/09/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm (write) fix setting fonts at install time
-
- * modules.pm (write_preload_conf) simplify
- (write_preload_conf) preload nvram on laptops
-
- * standalone.pm (version) print translated usage message (#5657)
-
- * share/po/br.po: update
-
-2004/09/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: test if IP address is already used for static
- interfaces
- (do not test for sagem DSL devices since it may use many ifcfg files)
-
-2004/09/28 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: More logs on install_urpmi
-
-2004/09/28 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2004/09/28 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: madwifi_pci => ath_pci
-
-2004/09/28 Pixel <pixel at mandrakesoft.com>
-
- * rescue/install_bootloader: handle /etc/mandrakelinux-release
-
- * Xconfig/xfree.pm: use Driver "keyboard" instead of "Keyboard" (for Xorg
- 6.8)
-
- * install_steps.pm, printer/main.pm, standalone/printerdrake,
- printer/printerdrake.pm, install_steps_interactive.pm:
- - make printer::printerdrake::install_spooler() work with an optional
- $in
- - many functions now take $security (which used to be taken from $in
- during install)
- - fix some functions with empty prototype but still using a parameter
- - remove some unused variable
- - rename some $_foo vars to $foo since those vars are used
- - add some undef to some function calls to be minimally perl_checker
- compliant
- - perl_checker compliant optional parameters in
- start_spooler_on_boot(), install_spooler()
-
-2004/09/28 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: More logs on install_urpmi
-
-2004/09/28 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, printer/main.pm, standalone/printerdrake,
- printer/printerdrake.pm, install_steps_interactive.pm:
- - make printer::printerdrake::install_spooler() work with an optional
- $in
- - many functions now take $security (which used to be taken from $in
- during install)
- - fix some functions with empty prototype but still using a parameter
- - remove some unused variable
- - rename some $_foo vars to $foo since those vars are used
- - add some undef to some function calls to be minimally perl_checker
- compliant
- - perl_checker compliant optional parameters in
- start_spooler_on_boot(), install_spooler()
-
-2004/09/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm: I sux, fix priority
- (bg_command_as_root) use kdesu in kde
- (get_default_gateway_interface) try to detect default connection in
- this order : adsl > isdn > modem > ethernet
-
- * mouse.pm: use input/mice instead of psaux for synaptics touchpads
- (#11771)
- (input/mice won't work with 2.4 kernels, but it doesn't matter since
- the config file is rewritten at boot on major kernel change, and
- synaptics devices are not configured for 2.4 kernels)
-
- * network/netconnect.pm: ask to connect for isdn_external too
- don't scramble $netcnx->{type}
- ask to connect for modem/isdn connections too (crappy fix, this needs
- to be redesigned once 10.1 is out)
- we really support all linmodems (including Hsf and Hcf ones) with 2.6
- kernels
-
-2004/09/27 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/lvm_PV.pm: fix typos
- simplify and handle LVM2, *but* since creating a LVM2 PV on a non
- partitioned
- drive doesn't modify the MBR, it won't help if the MBR is empty or a
- valid dos
- partition table, since those are checked first... but i won't change
- this so
- late in the release cycle
-
-2004/09/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm: fix last commit
-
- * standalone/drakperm (get_user_or_group) list users rather than groups
- when requested for
- (anthill #1161)
-
-2004/09/27 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * share/rpmsrate.corpo-server: mandrakegalaxy
-
- * share/rpmsrate.corpo-desktop: clean-ups (factor out) + fixes for lib64
- packages
-
-2004/09/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: we really support all linmodems (including Hsf
- and Hcf ones) with 2.6 kernels
-
-2004/09/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
-
- * share/po/bn.po: updated Bengali and Ukrainian files
-
- * share/po/uk.po: updated Ukrainian file
- updated Bengali and Ukrainian files
-
- * lang.pm: fixed KDE font names to match currently shiped Xfs font names
-
-2004/09/27 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/lvm_PV.pm: fix typos
- simplify and handle LVM2, *but* since creating a LVM2 PV on a non
- partitioned
- drive doesn't modify the MBR, it won't help if the MBR is empty or a
- valid dos
- partition table, since those are checked first... but i won't change
- this so
- late in the release cycle
-
- * fs.pm: fix typo
-
- * partition_table/dos.pm: fail if legacy_sectors_per_track or
- legacy_max_head doesn't exist instead of returning garbage (bugzilla
- #11738)
- perl_checker compliance
- don't call compute_nb_cylinders() before checking {sectors} and {heads}
- are valid
-
- * pkgs.pm, install2.pm: better logging
-
- * Makefile: remove from perl-Gtk2 directories from /tmp/list to have less
- warnings
-
-2004/09/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm: fix last commit
-
- * standalone/drakperm (get_user_or_group) list users rather than groups
- when requested for
- (anthill #1161)
-
-2004/09/27 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate.corpo-server, share/rpmsrate.corpo-desktop: add ximian
- connector with evolution and change mdkonline to mdkonline-backend
-
-2004/09/26 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: perl-install:1310
- Manual choice
-
-2004/09/26 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: I am stupid, start when asked to start, stop
- when asked to stop
-
- * standalone/net_applet: fix again running processes detection
- (go2state) do not destroy/re-create menu if state hasn't changed, or
- else the menu may disappear without any reason
-
- * standalone/drakroam (ConnectNow) specify device to iwconfig when
- applying settings (partial fix for #11279)
-
-2004/09/26 rcasha
-
- * share/po/mt.po: var
-
-2004/09/25 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 1283
- The most common
-
-2004/09/24 Frederic Lepied <flepied at mandrakesoft.com>
-
- * install_steps.pm: Mandrakelinux
-
- * share/rpmsrate: slmodem-kernel and bluez-utils
-
-2004/09/24 Pixel <pixel at mandrakesoft.com>
-
- * printer/printerdrake.pm: don't ask when $in is not set in
- security_check()
-
- * install_steps_interactive.pm: oops, i missed a ->cleanupPrinter here.
- inline it here too
- install_steps must not call a method only defined in
- install_steps_interactive, inline it
-
- * standalone/bootloader-config: fix typos in usage
-
- * install_steps.pm: install_steps must not call a method only defined in
- install_steps_interactive, inline it
-
- * fsedit.pm: increase the max size of the swap
-
-2004/09/24 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
-
-2004/09/24 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Fix field name
- Remove dead code
- Better handling of relative paths
- Ask only once for a supplementary CD
- Fix 10.0-style paths
-
- * pkgs.pm: Save hdlists and synthesis as user root
- Remove unused code
-
-2004/09/24 tsdgeos
-
- * share/po/ca.po: Small catalan updates
-
-2004/09/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not disable ifplugd support for wireless cards
-
- * standalone/drakups (add_device_wizard) refix list refreshing on UPS
- adding
-
- * drakxtools.spec: fix 10.1-11mdk's changelog
- 10.1-11mdk
-
-2004/09/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakupdate_fstab: allow SYNC=no option in
- /etc/sysconfig/dynamic
-
- * network/modem.pm (ppp_configure) add a specific udev script in addition
- to the udev
- rules file to create /dev/modem (ttySL0 is a symlink, udev won't be
- called when it's created)
-
- * network/netconnect.pm: install kernel packages for winmodems
-
- * network/adsl.pm (adsl_probe_info) fix old typo, do not reset vpi and vci
- if vpi is
- zero
-
-2004/09/23 Pixel <pixel at mandrakesoft.com>
-
- * install_interactive.pm: call fsedit::auto_allocate() with
- $o->{partitions} so be able to fix a partitioning scheme in a defcfg
-
-2004/09/23 rcasha
-
- * share/po/mt.po: var
-
-2004/09/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * Makefile.config, Makefile: Introducing TMPDIR
-
- * install_any.pm: Missing bit from the trunk
-
-2004/09/23 rstandtke
-
- * share/po/de.po: some additions and fixes
-
-2004/09/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: do not install scim for hindic (native keyboards're
- availlable)
- gives a change to be on CDs to skim
-
- * share/po/br.po: update
-
- * lang.pm: add support for SKIM IM
- install x-unikey for vietnamese (aka sync with share/rpmsrate)
- use Sazanami Gothic for everything in japanese (Yukiko Bando)
-
-2004/09/22 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: simplify
-
- * network/adsl_consts.pm: rename "|Télé2 128k " as "|Télé2" so that users
- don't choose a random
- provider with wrong vci/vpi settings
-
- * network/netconnect.pm: use ttySL0 for slmodem, so that a symlink to
- /dev/modem is done (#8947
- again)
-
-2004/09/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/po/ja.po: updated Japanese file
-
-2004/09/22 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/dos.pm: remove the backtrace
- more logging
-
- * install2.pm: don't set {meta_class} from file VERSION when it is already
- given on cmdline
-
- * fsedit.pm: fix an old ugly typo
-
- * partition_table.pm: better logging
-
- * devices.pm: module aes is now named aes-i586 (bugzilla #11588)
-
- * lvm.pm: call pvremove on every PVs when destroying a VG (to clear the
- LVM2 magic) (bugzilla #11579)
-
- * fs.pm: silently ignore encrypted filesystems with no encrypt_key
- don't add /dev/pts line in fstab anymore (it's done in initrd and udev)
-
-2004/09/22 rcasha
-
- * share/po/mt.po: var
-
-2004/09/22 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: New method
- selectSupplMedia
-
- * Makefile: Separate mdkinst_stage2 step in makefile
-
- * pkgs.pm: Don't read packages twice
- Fix variable name
- Handle reading multiple "hdlists" files (for supplementary media)
- More CD­rom mountpoint flexibility
- Better error reporting with rpm installation failures
- Always return a hashref from pkgs::packageMedium()
-
- * install_any.pm: A trimmed-down version of the supplementary media
- handling routine of
- 10.1 community. It handles only supplementary CDs.
- Selection of supplementary media is now a method.
- Backport utility functions from 10.1
- Cope with different cd-rom mountpoints
-
-2004/09/22 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2004/09/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: before exclamation marks, ellipsises, question marks and
- colons:
- - replace spaces by non breaking spaces where appropriate
- - add missing spaces
-
- * share/po/fr.po: fix badly phrased translation
- before exclamation marks, ellipsises, question marks and colons:
- - replace spaces by non breaking spaces where appropriate
- - add missing spaces
- fix a translation
-
-2004/09/21 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/lpi.png, share/advertising/list-pwp,
- share/advertising/lpi.pl, share/advertising/list-dwd,
- share/advertising/list-dis, share/advertising/list-ppp: Add LPI
- advertisement
-
-2004/09/21 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/21 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/cs.h, mdk-stage1/pcmcia_/cardmgr.c,
- mdk-stage1/pcmcia_/ds.h, mdk-stage1/pcmcia_/yacc_config.h,
- mdk-stage1/pcmcia_/cs_types.h, mdk-stage1/pcmcia_/vg468.h,
- mdk-stage1/pcmcia_/yacc_config.c, mdk-stage1/pcmcia_/i82365.h,
- mdk-stage1/pcmcia_/driver_ops.h, mdk-stage1/pcmcia_/cirrus.h: clean-up,
- merge, fix pcmcia subsystem to make it work on x86_64
-
- * mdk-stage1/init.c: dirty little hack from pixel/gc to let mdk stage1
- work with newer kernels
- ("testing" variable is supposedly obsolete btw)
-
- * mdk-stage1/rescue-gui.c: make it possible to restore windows boot loader
- on x86_64 too
-
- * share/rpmsrate: rebreakify, tv likes it
- - use correct name for mandrakegalaxy
- - install cxoffice if available
- - move rp-pppoe to appropriate location
-
- * rescue/list.x86_64: add grub stuff to rescue
-
- * bootloader.pm: run grub installation program in chroot so that to avoid
- weird pbs at times
-
- * mdk-stage1/stage1.c: same dirtly little hack (a cleanup actually)
-
- * share/list: add missing gtk module (im-cedilla), arrangements for new
- pango
-
- * mdk-stage1/Makefile: pcmcia works on x86_64 too, update stage1 build for
- 10.0
-
- * mdk-stage1/dietlibc/include/sys/io.h: define io ports on x86_64 too for
- pcmcia stuff
-
-2004/09/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2004/09/21 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/main.pm: allow ignoring X config file when it contains errors
-
- * mouse.pm: don't allow a broken X configuration to break mouse
- configuration
-
-2004/09/21 Tibor Pittich <Tibor.Pittich at phuture.sk>
-
- * share/po/sk.po: updated slovak translation
-
-2004/09/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- typo fix
-
-2004/09/21 Warly <warly at mandrakesoft.com>
-
- * pkgs.pm: temporary workarround to fix extra CD
-
- * install_steps_gtk.pm: do not display workstation entries in corporate
- server
-
- * share/rpmsrate, share/compssUsers.corpo-server,
- share/rpmsrate.corpo-server, share/po/DrakX.pot,
- share/rpmsrate.corpo-desktop, share/advertising/dwd-01.pl,
- share/themes-corporate.rc, share/list, share/po/fr.po: Added some
- corporate specific changes
-
- * install_steps_interactive.pm: Display group selection in corporate
-
- * any.pm: do not use default autologin in corporate
-
- * Makefile: revert wrongly uploaded Makefile
- Added some corporate specific changes
-
- * install_gtk.pm: use corporate gtk theme in corporate
-
-2004/09/21 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation
- Arabic translation
-
-2004/09/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm (adsl_conf_backend) do not let speedtouch-start launch
- connection
-
- * network/network.pm: more zeroconf fixes (zcip isn't a service, stop
- tmdns service if
- zeroconf is disabled, check tmdns init file in prefix/etc)
-
- * network/netconnect.pm: do not write config two times for lan connections
-
-2004/09/20 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, devices.pm, fs/type.pm, fs/mount_options.pm,
- install_steps.pm, standalone/drakupdate_fstab, install_any.pm,
- install_steps_interactive.pm, partition_table.pm:
- - add field {part_number} for partitions
- (handle it in subpart_from_wild_device_name(), partition_table::read())
- - create migrate_device_names() to handle the change of device names
- when
- changing kernel&modules (eg: hde->hda or hda->sda)
- - change prototype of install_any::use_root_part()
- (prefix is dropped, optional $in is added)
- - create fs::type::can_be_this_fs_type() and use it
- - create devices::part_number() and devices::part_prefix() and use
- them
-
- * fs.pm: perl_checker compliance
- - add field {part_number} for partitions
- (handle it in subpart_from_wild_device_name(), partition_table::read())
- - create migrate_device_names() to handle the change of device names
- when
- changing kernel&modules (eg: hde->hda or hda->sda)
- - change prototype of install_any::use_root_part()
- (prefix is dropped, optional $in is added)
- - create fs::type::can_be_this_fs_type() and use it
- - create devices::part_number() and devices::part_prefix() and use
- them
-
-2004/09/20 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm: Fix supplementary CDs with any kind of media
-
-2004/09/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * security/help.pm: add translator hints; real fix will be in mdk10.2:
- s!N("(.*?) \"(ALL)\" (.*?)"!N("\1 %s \3", N("\2"))! and the like
-
-2004/09/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: remove connection time timer if connection fails
- (fix #11590)
-
- * network/adsl.pm (adsl_conf_backend) use avmadsl option for capi cards to
- use settings
- generated by drdsl
-
- * network/netconnect.pm: do not write config two times for lan connections
- move "Start at boot" step for lan-like adsl/cable connections
-
- * network/network.pm: more zeroconf fixes (zcip isn't a service, stop
- tmdns service if
- zeroconf is disabled, check tmdns init file in prefix/etc)
-
-2004/09/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/da.po: merged with current pot file
-
-2004/09/20 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, devices.pm, fs/type.pm, fs/mount_options.pm,
- install_steps.pm, standalone/drakupdate_fstab,
- install_steps_interactive.pm, partition_table.pm:
- - add field {part_number} for partitions
- (handle it in subpart_from_wild_device_name(), partition_table::read())
- - create migrate_device_names() to handle the change of device names
- when
- changing kernel&modules (eg: hde->hda or hda->sda)
- - change prototype of install_any::use_root_part()
- (prefix is dropped, optional $in is added)
- - create fs::type::can_be_this_fs_type() and use it
- - create devices::part_number() and devices::part_prefix() and use
- them
-
- * fs.pm: perl_checker compliance
- - add field {part_number} for partitions
- (handle it in subpart_from_wild_device_name(), partition_table::read())
- - create migrate_device_names() to handle the change of device names
- when
- changing kernel&modules (eg: hde->hda or hda->sda)
- - change prototype of install_any::use_root_part()
- (prefix is dropped, optional $in is added)
- - create fs::type::can_be_this_fs_type() and use it
- - create devices::part_number() and devices::part_prefix() and use
- them
- - don't use fs::get_info_from_fstab() in install_any::use_root_part()
- to be able to handle
- renamed devices
- - fs::get_info_from_fstab() doesn't take a prefix anymore
- - small perl_checker fix in install_any.pm
-
- * install_any.pm:
- - add field {part_number} for partitions
- (handle it in subpart_from_wild_device_name(), partition_table::read())
- - create migrate_device_names() to handle the change of device names
- when
- changing kernel&modules (eg: hde->hda or hda->sda)
- - change prototype of install_any::use_root_part()
- (prefix is dropped, optional $in is added)
- - create fs::type::can_be_this_fs_type() and use it
- - create devices::part_number() and devices::part_prefix() and use
- them
- - don't use fs::get_info_from_fstab() in install_any::use_root_part()
- to be able to handle
- renamed devices
- - fs::get_info_from_fstab() doesn't take a prefix anymore
- - small perl_checker fix in install_any.pm
-
- * standalone/drakboot, network/tools.pm, standalone/diskdrake,
- standalone/bootloader-config:
- - don't use fs::get_info_from_fstab() in install_any::use_root_part()
- to be able to handle
- renamed devices
- - fs::get_info_from_fstab() doesn't take a prefix anymore
- - small perl_checker fix in install_any.pm
-
-2004/09/20 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Fix typo
-
- * pkgs.pm: Fix supplementary CDs with any kind of media
-
- * install_any.pm: Remove no longer necessary hack.
-
-2004/09/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakups (add_device_wizard) default to automatic detection
-
- * share/po/br.po: update
-
-2004/09/19 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/19 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 1210
- Circular mounts
-
-2004/09/19 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates (ugh!)
- gi/perl-install/share/po/da.po
- Updates
- gi/perl-install/share/po/da.po
- updates
- gi/perl-install/share/po/da.po
-
-2004/09/18 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
- updates
- gi/perl-install/share/po/da.po
- updates
- gi/perl-install/share/po/da.po
-
-2004/09/17 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
- Updates
- soft/drakbt/po/da.po soft/drakpxelinux/po/da.po
- gi/perl-install/share/po/da.po
-
-2004/09/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/service_harddrake: update iftab when new ethernet devices are
- detected
- probe firewire and pcmcia network devices too
-
- * network/ethernet.pm (configure_eth_aliases) don't write aliases for
- pcmcia cards but
- remove them, or else the pcmcia service won't be started correctly
- (the ethernet module being loaded, pcmcia_core would be loaded too,
- and the pcmcia service would think it is already started ...)
- (configure_eth_aliases) kill code that can't do anything good
- (remove_alias isn't intended to be used with the module name)
-
- * network/adsl.pm (adsl_conf_backend) make sure the speedtch kernel module
- won't be hidden
-
- * network/network.pm (configureNetwork2) really enable zeroconf if
- zeroconf is requested
- (configureNetwork2) write blank zeroconf hostname if zeroconf is
- disabled, else drakconnect will assume it is enabled
- (configureNetwork2) use services do disable zeroconf, do not disable
- if it doesn't exist (to avoid warnings in console)
-
-2004/09/17 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/dos.pm, partition_table/raw.pm, fsedit.pm: try to get
- geometry from EDD
-
-2004/09/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakups: perl_checker cleanup
- remove debug message :-)
- refresh UPS list when adding a new UPS though the add wizard
- (add_device_wizard) fix automatically detect/add an UPS
-
- * share/rpmsrate: install NUT for "American Power Conversion|Back-UPS Pro
- 500" too
-
- * drakxtools.spec: 10.1-10mdk
-
-2004/09/16 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: jorge
-
-2004/09/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: stop capi service before new config is written so that
- capiinit can unload the old driver
-
- * network/isdn.pm: stop capi service before new config is written so that
- capiinit can unload the old driver
- make isdn over capi work again
-
- * network/netconnect.pm: don't support all slmodem cards, our agreement
- forbid it :-/
- do not ask "capidrv or capidrv ?" ...
- make isdn over capi work again
-
- * share/rpmsrate: do not install isdn-light, it's unused, unsupported, and
- breaks
- isdn4net
-
- * network/network.pm (read_all_conf) use network::tools to probe
- connection type
-
-2004/09/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * share/po/es.po: fixed typo
- updated pot file
-
- * network/netconnect.pm: fixed typo (no spaces before question marks in
- English)
-
-2004/09/16 Pixel <pixel at mandrakesoft.com>
-
- * standalone/draksplash2: add as a comment the "convert" command
- imagemagick can do what gimp can't: reduce the number of colors while
- using a fixed treedepth different than 24bpp (we want 6*3 = 18bpp)
- display the stepping effect
-
- * detect_devices.pm: C3 has "cpu family" == 6, so now also checking that
- cmov flag is available to say we have a i686
-
- * install_steps_gtk.pm: on a test here, a "Server died" occured whereas
- the server is running.
- i think it can occur if the server is in fact not even started. Trying
- to handle this case
-
-2004/09/16 rcasha
-
- * share/po/mt.po: var
-
-2004/09/16 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_gtk.pm: Kludgy fix for bug 11558 : sometimes when
- restarting the installer at the
- step where partitions are read, it'll be needed to reaload the rpmsrate
- and compssUsers.pl to avoid a crash a bit later.
-
- * install_any.pm: Kludgy fix for bug 11558 : sometimes when restarting the
- installer at the
- step where partitions are read, it'll be needed to reaload the rpmsrate
- and compssUsers.pl to avoid a crash a bit later.
- Better retry on error handling for supplementary media
-
- * share/list: Include locale.pm in the install, since ugtk2 now uses it.
-
-2004/09/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
- * standalone/drakups (add_device_wizard) fix device list in wizard
- perl_checker cleanups
-
-2004/09/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: do not add prefix in path given to ensure_is_installed
- ! (i.e. replace untested code with untested code), fix #11547 and more
- add comment
- (adsl_conf_backend) don't create empty pppoe.conf if the package isn't
- installed
- load modules and run start programs in standalone too, so that it will
- work even if the packages have just been installed
-
- * network/netconnect.pm: install unicorn-kernel package if available
- add "Unlisted - edit manually" entry in modem provider list (fix #11549)
- do not add prefix in path given to ensure_is_installed ! (i.e. replace
- untested code with untested code), fix #11547 and more
-
- * detect_devices.pm (getBewan) use more permissive regexp for PCI modem,
- description in
- pcitable may change
-
- * network/isdn.pm: do not add prefix in path given to ensure_is_installed
- ! (i.e. replace untested code with untested code), fix #11547 and more
-
-2004/09/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/uz@Latn.po: updated Uzbek files
-
- * share/po/it.po: updated Italian file
-
- * keyboard.pm: removed "caps:shift" it never fully solved the problem of
- turkish keyboards
- anyway; and a much better solution is done on newer keyboard maps
- in xorg package.
-
-2004/09/15 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: explicit scalar false value (otherwise it gives () in list
- context)
-
- * bootloader.pm: no need to require pkgs (and it makes bootloader-config
- some break when removing entries)
-
-2004/09/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Use radio buttons in media selection (wildman).
- perl_checker compliance.
-
-2004/09/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakbackup (interactive_mode_box) better make parameter
- optionnal
-
- * share/po/bn.po, share/po/ms.po, share/po/gl.po, share/po/th.po,
- share/po/et.po, share/po/hr.po, network/netconnect.pm, share/po/be.po,
- share/po/ko.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, network/adsl.pm,
- share/po/lv.po, share/po/hu.po, share/po/ru.po, share/po/sl.po,
- share/po/nn.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/wa.po, share/po/hi.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/ta.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/cs.po,
- share/po/uz@Latn.po: fix PPPoA case
-
- * modules/interactive.pm (load_category__prompt) fix spacing in module
- list
-
- * share/po/br.po: update
- update
- update
- update
-
- * drakxtools.spec: last minute changes in 10.1-9mdk
- 10.1-9mdk
- fix typo in 10.1-6mdk's and 10.1-7mdk's changelog
-
- * share/po/sk.po, share/po/pt_BR.po, share/po/ja.po, share/po/sv.po,
- share/po/sr.po, share/po/da.po, share/po/ky.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/fa.po, share/po/id.po, share/po/tr.po,
- share/po/mk.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/tl.po, share/po/el.po, share/po/bg.po: unfuzzy a few sagem
- strings
- fix PPPoA case
-
- * share/po/cy.po: update (note that my welsh needs to be reviewed as well
- as my 2004/08/13 update)
- fix PPPoA case
-
- * ugtk2.pm (get_text_coord) fix wrapping for CJ when mixed with english
- strings
- (eg: cuted "Mandrakesoft" word)
- (get_text_coord) kill unused character
-
- * install_steps_gtk.pm (installPackages) kill unused variable
-
-2004/09/15 vljubovic
-
- * share/po/bs.po: A small fix
-
-2004/09/15 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add dkms-minimal in INSTALL
-
-2004/09/15 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation
-
-2004/09/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/uz@Latn.po: updated Uzbek files
-
- * share/po/it.po: updated Italian file
-
-2004/09/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_steps.pm (configureNetwork) commit forgotten patch (I sux)
-
- * detect_devices.pm (getModem) use network/slmodem category
-
- * install_steps_interactive.pm (configureNetwork) load all network modules
- before network
- auto-configuration, so that all interfaces will be available and
- written in iftab
-
- * network/isdn.pm: adapt to kernel packages naming
-
- * network/netconnect.pm: allow to configure slmodem
-
-2004/09/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
-
- * lang.pm: comment for default:LTR
- comment on default:LTR
-
- * share/po/it.po, share/po/ms.po, share/po/es.po, share/po/am.po,
- share/po/fur.po, share/po/fi.po, share/po/pt.po: corrected default:LTR
- entries
-
- * share/po/ar.po: corrected "<control>X" strings
-
- * share/po/bn.po: corrected "<control>X" strings
- corrected default:LTR entries
-
-2004/09/14 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, fsedit.pm, fs/mount_options.pm,
- partition_table.pm:
- - ensure {is_removable} field is there for created partitions, not
- only existing partitions
- - it breaks Create(), fixing
-
-2004/09/14 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * authentication.pm: Fix net join syntax for winbind setup.
-
-2004/09/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix typo in 10.1-7mdk's changelog
- 10.1-8mdk
- 10.1-7mdk
- package man pages
-
- * standalone/service_harddrake: adapt to new nvidia driver location
-
- * any.pm (selectCountry) offer to select IM if language has one
- preselected
- (else option is only availlable in advanced mode)
-
- * Makefile.drakxtools, Makefile: package man pages
-
- * standalone/man/C/man8/drakconnect.8: remove reference to ipchains
- add drakconnect man page
-
- * network/ethernet.pm (get_eth_cards) document it somewhat
- (get_eth_cards_names) let detect_devices->firewire_probe() set the
- device description
- (get_eth_cards) workaround buggy eth1394 that returs a bogus driver
- name for the GDRVINFO command of the ETHTOOL ioctl returns
- (get_eth_cards_names) set a sensible name for firewire network
- adapters in order to make GUIes look more user friendly
-
-2004/09/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn.pm: adapt to kernel packages naming
- (write_config) remove unused parameter
- (setup_capi_conf) use capi4linux file to detect isdn4k-utils package
- (setup_capi_conf) install firmware if needed
- (setup_capi_conf) do not do dsl-specific stuff here
-
- * network/netconnect.pm: allow to configure slmodem
- (get_eth_cards_names) remove unused parameter
- (configureNetwork2) configure eth aliases, needs modules_conf
- cleanup, remove unused parameters and comments
- support dsl over capi
-
- * network/network.pm (configureNetwork2) configure eth aliases, needs
- modules_conf
-
- * standalone/drakconnect (get_eth_cards_names) remove unused parameter
- (configureNetwork2) configure eth aliases, needs modules_conf
- remove unused parameter
-
- * network/adsl.pm (adsl_conf_backend) move isdn4k-utils installation here
- (adsl_conf_backend) remove ifcfg-sagem
- (adsl_conf_backend) support dsl over capi
-
- * detect_devices.pm (getModem) use network/slmodem category
-
- * network/shorewall.pm, standalone/drakgw (get_eth_cards_names) remove
- unused parameter
-
- * do_pkgs.pm (check_kernel_module_packages) make ext package optionnal
-
- * network/ethernet.pm (get_eth_cards_names) remove unused parameter
- (configureNetwork2) configure eth aliases, needs modules_conf
- (configure_eth_aliases) errm, use modules_conf
- do not configure eth aliases in various places, move aliases
- configuration code from get_eth_cards_names to configure_eth_aliases
-
-2004/09/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/es.po, share/po/ro.po, share/po/gl.po, share/po/fur.po,
- share/po/wa.po, share/po/pt_BR.po, share/po/ca.po, share/po/eo.po,
- share/po/fr.po: MandrakeSoft -> Mandrakesoft; Mandrake -> Mandrakelinux
-
- * share/po/pt.po: MandrakeSoft -> Mandrakesoft; Mandrake -> Mandrakelinux
- fixed typo
-
- * share/po/ar.po: updated po file
-
- * share/po/cs.po: updated Czech po file
-
-2004/09/14 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, fsedit.pm, fs/mount_options.pm,
- partition_table.pm:
- - ensure {is_removable} field is there for created partitions, not
- only existing partitions
- - it breaks Create(), fixing
-
- * detect_devices.pm: get the scsi driver name in field {driver}
-
-2004/09/14 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Apparently perl_checker doesn't like my perfectly
- sensible perl syntax.
-
-2004/09/14 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * network/smb.pm: syntax changes in winbind smb.conf (errors in
- /var/log/messages)
-
- * authentication.pm: Fix net join syntax for winbind setup.
-
-2004/09/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/man/C/man8/drakconnect.8: add drakconnect man page
-
- * standalone/service_harddrake: space cleanup
-
- * network/netconnect.pm: upcase acronyms
-
- * Makefile, Makefile.drakxtools: package man pages
-
- * standalone/draksec:
- - fix label of entry in help
- - move help from tooltips into separate page (#9894)
- rationale:
-
- - there's already a "help" button that do the same thing as mcc one
-
- - Gtk+ only support tooltips on widgets that have their own X window
- (which new
- GtkComboBox widget has not)
-
- - tooltips are usefull on first run but then are just annoying
-
- * harddrake/data.pm: detect scanners later so that we filter out bogus usb
- devices detected
- by sane_find_scanner
- detect not yet supported ethernnet cards too
- (unknown) blacklist more bridges (though f() should already take care
- of that)
- detect more bridges and the like
-
- * network/ethernet.pm (get_eth_cards) document it somewhat
- (get_eth_cards_names) let detect_devices->firewire_probe() set the
- device description
- (get_eth_cards) workaround buggy eth1394 that returs a bogus driver
- name for the GDRVINFO command of the ETHTOOL ioctl returns
- (get_eth_cards_names) set a sensible name for firewire network
- adapters in order to make GUIes look more user friendly
-
- * standalone/drakTermServ, standalone/drakfont, standalone/drakbackup:
- sanitize capitale usage on buttons
-
- * drakxtools.spec: 10.1-7mdk
- package man pages
- 10.1-6mdk
- 10.1-5mdk
-
- * scanner.pm (detect) blacklist usb devices that have a driver and that
- are wrongly
- detected by sane-find-scanner (scanners are managed by scanner.o
- module in 2.4.x and through libusb on 2.6.x)
-
-2004/09/14 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: Community 10.1 logo
-
-2004/09/14 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation
-
-2004/09/13 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 711
- Please insert the
- locally modified
-
-2004/09/13 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/09/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn_consts.pm: fix typo
-
- * network/netconnect.pm: do not auto-select static/dhcp if the provider
- uses pppoe
- only write ifcfg-sagem when needed
- add isdn_driver step to be able to choose between hisax and capi drivers
-
- * network/isdn.pm (setup_capi_conf) install isdn4k-utils
- handle capi drivers
-
- * network/tools.pm (get_default_ippp_interface) use interfaces with true
- DIAL_ON_IFUP
-
-2004/09/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_interactive.pm: The "choose an update mirror" screen was
- launched without notice when
- a supplementary ftp media was selected.
-
- * install_any.pm: redundant code
-
-2004/09/13 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix crashes in CD/Tape setup. Fix UI behavior in
- wizard. (Nicolas Adenis-Lamarre)
-
-2004/09/13 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/13 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: simplify
-
- * Xconfig/card.pm: adapt to new proprietary package naming
-
- * do_pkgs.pm:
- - simplify ->check_kernel_module_packages, same for install and
- standalone
- - create ->are_available used by ->check_kernel_module_packages
-
-2004/09/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps.pm: Ability to choose from the mirror list when assing an
- ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
- * install_any.pm: redundant code
- deselection of found media: don't display twice media from the same
- installation CD
- http supplementary media were borked
- Ability to choose from the mirror list when assing an ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
- * install_steps_interactive.pm: The "choose an update mirror" screen was
- launched without notice when
- a supplementary ftp media was selected.
- Ability to choose from the mirror list when assing an ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
-2004/09/13 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix crashes in CD/Tape setup. Fix UI behavior in
- wizard. (Nicolas Adenis-Lamarre)
-
-2004/09/13 Till Kamppeter <till at mandrakesoft.com>
-
- * Makefile.config: Reverted accidentally uploaded file.
- Fixed "dynamic()" in scannerdrake to do not contain anything
- interactive.
-
- * standalone/scannerdrake: Fixed "dynamic()" in scannerdrake to do not
- contain anything interactive.
-
-2004/09/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: another typo fix
- typo fix
-
- * drakxtools.spec: fix 10.1-3mdk's changelog
- 10.1-4mdk
-
- * share/po/cy.po: fix draksec entries in welsh
-
- * share/rpmsrate: fix regexpes
- fix rpmsrate
- ltmodem needs ltmodem package
-
-2004/09/13 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
-2004/09/13 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: simplify
-
- * Xconfig/card.pm: adapt to new proprietary package naming
-
- * do_pkgs.pm:
- - simplify ->check_kernel_module_packages, same for install and
- standalone
- - create ->are_available used by ->check_kernel_module_packages
-
-2004/09/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: http supplementary media were borked
- Ability to choose from the mirror list when assing an ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
- * install_steps.pm, install_steps_interactive.pm: Ability to choose from
- the mirror list when assing an ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
-2004/09/13 Till Kamppeter <till at mandrakesoft.com>
-
- * Makefile.config: Reverted accidentally uploaded file.
- Fixed "dynamic()" in scannerdrake to do not contain anything
- interactive.
-
- * standalone/scannerdrake: Fixed "dynamic()" in scannerdrake to do not
- contain anything interactive.
-
-2004/09/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: another typo fix
- typo fix
-
- * drakxtools.spec: fix 10.1-3mdk's changelog
- 10.1-4mdk
-
- * share/po/cy.po: fix draksec entries in welsh
-
- * share/rpmsrate: fix rpmsrate
- ltmodem needs ltmodem package
-
-2004/09/13 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * share/po/ar.po: updated pot file
- updated Arabic file
-
- * share/po/et.po: updated pot file
- updated Estonian po file
-
-2004/09/13 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: simplify
-
- * Xconfig/card.pm: adapt to new proprietary package naming
-
- * do_pkgs.pm:
- - simplify ->check_kernel_module_packages, same for install and
- standalone
- - create ->are_available used by ->check_kernel_module_packages
-
-2004/09/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps.pm, install_any.pm, install_steps_interactive.pm: Ability
- to choose from the mirror list when assing an ftp supplementary
- media. Fix download of hdlists file for ftp supplementary media.
-
-2004/09/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/cy.po: fix draksec entries in welsh
- - fix label of entry in help
- - move help from tooltips into separate page (#9894)
- rationale:
-
- - there's already a "help" button that do the same thing as mcc one
-
- - Gtk+ only support tooltips on widgets that have their own X window
- (which new
- GkComboBox widget has not)
-
- - tooltips are usefull on first run but then are just annoying
-
- * share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/et.po, share/po/hr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/am.po, share/po/ko.po, share/po/sv.po, share/po/pl.po,
- share/po/he.po, share/po/ca.po, share/po/ar.po, share/po/tg.po,
- security/help.pm, share/po/ltg.po, share/po/uz.po, share/po/wa.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/pt.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/it.po, share/po/nl.po,
- share/po/tl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/lv.po:
- - fix label of entry in help
- - move help from tooltips into separate page (#9894)
- rationale:
-
- - there's already a "help" button that do the same thing as mcc one
-
- - Gtk+ only support tooltips on widgets that have their own X window
- (which new
- GkComboBox widget has not)
-
- - tooltips are usefull on first run but then are just annoying
-
- * standalone/draksec (set_help_tip) only use on tooltip group
-
- * standalone/drakbug_report: fix crash
-
- * share/rpmsrate: fix rpmsrate
- ltmodem needs ltmodem package
- install Device-mapper ATARAID tool for software raid (aka bios driven
- ones)
- the odds're high we should do this too for sata_promise, sata_sx4 and
- sx8 SATA
- drivers.
- both diskdrake and initscripts now prefer mdadm over raidtools
-
- * harddrake/data.pm: explain why some hw classes are not probed on
- bootstrapping
- move comment where appropriate
-
-2004/09/13 vljubovic
-
- * share/po/bs.po: Fixing
-
-2004/09/12 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 711
- No floppy drive
-
-2004/09/12 huftis
-
- * share/po/nn.po: Fixed a few fuzzy strings.
-
-2004/09/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po, share/po/az.po, share/po/nl.po: updated Azeri file
- updated pot file
-
- * keyboard.pm: disambiguation of keyboard names, so they can be translated
- differently
- from language names
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * share/po/it.po: updated Italian file
- updated pot file
-
-2004/09/12 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
- * DrakX
-
-2004/09/12 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arab ic translation
-
-2004/09/11 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 662
- You have selected
-
-2004/09/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po: updated Bengali file
-
- * share/po/fa.po, share/po/ms.po, share/po/sv.po, share/po/he.po,
- share/po/br.po, share/po/hi.po, share/po/et.po, share/po/zh_TW.po,
- share/po/tr.po, share/po/pt.po, share/po/ar.po: updated Estonian file;
- fixed error syntax in Hebrew file;
- removed non-ascii version of the bootloader message
-
-2004/09/10 (Hilbert) <h at mandrake.org>
-
- * share/po/zh_TW.po: DrakX-zh_TW: 650
- You must also
-
-2004/09/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: do not ask if network should be started on boot
- if it has already been
- asked during pseudo-lan configuration
-
- * standalone/net_applet: lower refresh timeout to 5 seconds
- make connect/disconnect buttons useful
-
-2004/09/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: some more XKB keyboard names fixed to match xorg versions
- fixed compose:rwin (it must be enabled if the key isn't used, and not
- when the key is already used); and a new keyboard toggle
- fixed Russian phonetic keyboard layout on xorg
-
-2004/09/10 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: fix choosing bestKernelPackage
- remove debug code
-
-2004/09/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: one more change in 10.1-3mdk for lord blino
- 10.1-3mdk
- typo fix in 10.1-0.19mdk's changelog
- fix 10.1-0.25mdk's changelog
- 10.1-2mdk
- - move tools description in proper packages (aka make -newt
- description somewhat usefull)
- - describe missing tools
- - sanitize tool names
-
- * share/po/fr.po: update (how did the drakvpn got fuzzy whereas this tool
- was left
- untouched for monthes???)
-
-2004/09/10 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Arabic translation from Arabeyes
-
-2004/09/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot (enable_framebuffer) do not kill the whole wizard
- when embedded
-
-2004/09/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: fixed compose:rwin (it must be enabled if the key isn't
- used, and not
- when the key is already used); and a new keyboard toggle
- fixed Russian phonetic keyboard layout on xorg
-
- * share/po/it.po: updated Italian file
-
-2004/09/10 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: fix choosing bestKernelPackage
- remove debug code
-
- * resize_fat/c_rewritten.xs, c/stuff.xs.pl, xf86misc/main.xs,
- Newt/Newt.xs: prototypes are dangerous
-
-2004/09/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Remove (temporarily, do we hope) the code that re-reads
- all hdlists when the
- user has added supplementary media. It doesn't work for now, when the
- main
- media is networked and the supplementary media a superset of the main
- media.
-
-2004/09/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: autoconfigure mice on bootstrapping
-
- * harddrake/autoconf.pm: cleanups
- autoconfigure mice on bootstrapping
-
- * drakxtools.spec: typo fix in 10.1-1mdk's changelog
- 10.1-1mdk
-
- * share/po/br.po: update
-
- * standalone/service_harddrake: cleanups
- perl_checker cleanups
- autoconfigure mice on bootstrapping
-
-2004/09/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot (enable_framebuffer) do not kill the whole wizard
- when embedded
-
- * standalone/drakconnect (configure_net) use network::test to test
- internet connection
-
- * network/test.pm: fix stupid things
- fix indentation and CVS Id
- (update_status) handle decimal ping time with comma instead of dot
-
-2004/09/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po: updated Italian file
-
-2004/09/10 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm: do not display release notes anymore (since it
- hides advertising...)
-
- * install_steps_interactive.pm: add button "Release Notes" in the
- acceptLicense dialog box
-
- * c/stuff.xs.pl, xf86misc/main.xs, Newt/Newt.xs,
- resize_fat/c_rewritten.xs: prototypes are dangerous
-
- * interactive/gtk.pm: for ask_warn with big text, create a bigger window
- introduce {more_buttons} to allow the "Release Notes" button. ugly, but
- it works :-(
-
- * rescue/list: /bin/loadkeys is no more
-
- * install2.pm: log the {meta_class}
-
- * ugtk2.pm: create_box_with_title():
- - introduce the ugly $o->{box_allow_grow}
- - cleanup the usage
-
-2004/09/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Remove (temporarily, do we hope) the code that re-reads
- all hdlists when the
- user has added supplementary media. It doesn't work for now, when the
- main
- media is networked and the supplementary media a superset of the main
- media.
-
-2004/09/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: autoconfigure mice on bootstrapping
-
- * harddrake/autoconf.pm: cleanups
- autoconfigure mice on bootstrapping
-
- * drakxtools.spec: typo fix in 10.1-1mdk's changelog
- 10.1-1mdk
-
- * share/po/br.po: update
-
- * standalone/service_harddrake: cleanups
- perl_checker cleanups
- autoconfigure mice on bootstrapping
-
-2004/09/09 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm:
- - choose the good kernel for the box
- - add recognition of i586-up-1GB
-
- * c/smp-dmi.c: max() is not defined, inline it
-
- * install_any.pm: BIGMEM now means >4GB
-
- * detect_devices.pm: add is_i586() based on "cpu family", hopefully it
- works for detecting K6 and C3
-
-2004/09/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/compssUsers.pl: Fix typo in section title
-
- * install_steps_interactive.pm: minor fix in last patch
- Re-read all hdlists in reverse order when there are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
- * pkgs.pm, install_any.pm: Re-read all hdlists in reverse order when there
- are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
-2004/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.27mdk
- 10.1-0.26mdk
-
- * any.pm (selectCountry) do not default to per locale default IM. IM was
- either setup by drakx or by localedrake. If the field does not
- exists, this means the user *decided* to not have an IM.
- (selectCountry) do not overwrite current IM (why does this only failed
- with miniChinput???)
-
- * standalone/localedrake: really reset IM on language switch
- remove debug message
- only default to per locale default IM when switching between locales
-
- * lang.pm (write) fix ENC setting too (like thai IM, it got broken when
- analyse_locale_name and the like were added it seems)
- fix thai IM that was broken for ages (but it was disabled in 10.0
- anyway so ...)
- fix ENC and locale specific stuff even when IM is disabled (because of
- thai)
- simplify ENC setting
- - sanitize some variable names
- - add/update comments
- (write) make it a little more readable
- (write) kill unused variable
- add a comment about font settings for installer
- Singapore is en_SG not zh_SG !!!
- (read) fix chinput identification
- fix XIM_MODIFIER field for xcin and chinput IM
-
-2004/09/09 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Syn with Arabeyes CVS before a translation that should
- hopefully happen soon...
-
-2004/09/09 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Up kpilot
-
-2004/09/09 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: Updated POT file
-
-2004/09/09 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * tools/ddcprobe/int10/i10_v86.c: Nuke use of conditional expressions as
- lvalues
-
- * tools/ddcprobe/Makefile: Remake x86emu & int10 subdirs if sources have
- changed
-
-2004/09/09 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * c/smp-dmi.c: add dmi type 6 in detection memory size
-
-2004/09/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn_consts.pm: add @isdn_capi array of cards than can use capi
- drivers
-
- * lang.pm: reduce font size in japanese install
-
-2004/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po: cyrillic fixes
-
- * share/po/bs.po, share/po/af.po, share/po/az.po, share/po/am.po,
- share/po/ar.po: some Mandrake -> Mandrakelinux and MandrakeSoft ->
- Mandrakesoft fixes
-
- * share/po/tg.po, share/po/ltg.po, share/po/ru.po, share/po/ro.po,
- share/po/mt.po, share/po/sr@Latn.po, share/po/it.po, share/po/tl.po,
- share/po/sr.po, share/po/de.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/el.po, share/po/lv.po: fixed media paths
-
- * share/po/uk.po: cyrillic fixes
- fixed media paths
-
- * share/po/bg.po: some Mandrake -> Mandrakelinux and MandrakeSoft ->
- Mandrakesoft fixes
- fixed media paths
-
-2004/09/09 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm:
- - choose the good kernel for the box
- - add recognition of i586-up-1GB
-
- * share/rpmsrate: cleanup
- remove tabulation
-
- * any.pm: even "lilo -u" can prompt about the "Volume ID" fixing process
- handles the lilo case where it wants to assign a new Volume ID: prompt
- the user, then
- - if it doesn't want to modify the Volume ID, use static-bios-codes to
- be able to install lilo
- - otherwise call lilo with answer "n" to the question "Is the above
- disk an NT boot disk?"
- so that it assigns a new Volume ID
-
- * c/smp-dmi.c: max() is not defined, inline it
-
- * bootloader.pm: handle raid-extra-boot (bugzilla #11350)
- remove unused variable
- - handle lilo "static-bios-codes" option
- - call lilo with a forced stdin (so that it doesn't read from tty)
- - enable calling lilo with a special stdin value
- help emacs mode
- fix regexp to work with "linux-2.6.8.1-10mdk"
- instead of expanding symlinks in any case, only do it when renaming
- "linux"
- into the kernel version based label (eg: "2681-10")
- that way "linux" like entries won't be modified, the way the "linux" is
- already handled
-
- * run_program.pm: don't check_prog when the prog is a complex command
- (containing a pipe)
- simplify
- rename $str into $real_name
- remove redundant code
-
- * install_any.pm: BIGMEM now means >4GB
-
- * detect_devices.pm: add is_i586() based on "cpu family", hopefully it
- works for detecting K6 and C3
-
-2004/09/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Grammar fixes
-
- * install_steps_interactive.pm: minor fix in last patch
- Re-read all hdlists in reverse order when there are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
- * pkgs.pm, install_any.pm: Re-read all hdlists in reverse order when there
- are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
-2004/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm (selectCountry) do not default to per locale default IM. IM was
- either setup by drakx or by localedrake. If the field does not
- exists, this means the user *decided* to not have an IM.
- (selectCountry) do not overwrite current IM (why does this only failed
- with miniChinput???)
-
- * lang.pm: fix thai IM that was broken for ages (but it was disabled in
- 10.0
- anyway so ...)
- fix ENC and locale specific stuff even when IM is disabled (because of
- thai)
- simplify ENC setting
- - sanitize some variable names
- - add/update comments
- (write) make it a little more readable
- (write) kill unused variable
- add a comment about font settings for installer
- Singapore is en_SG not zh_SG !!!
- (read) fix chinput identification
- fix XIM_MODIFIER field for xcin and chinput IM
- (write) set proper XIM_PROGRAM depending on both encoding and locale
- (fix chinput configuration that was broken for ages)
- (set_default_im) really just set default IM and nothing more
- (write) fix XIM_PROGRAM setting
- (set_default_im) simplify
- (IM packages list) when configuring chinput, we need miniChinput (a
- evolution of chinput that replaced it)
-
- * share/rpmsrate: install slmodem for ltmodem, slamr, slusb windmodem
- drivers too
-
- * standalone/localedrake: really reset IM on language switch
- remove debug message
- only default to per locale default IM when switching between locales
-
- * network/network.pm (read_all_conf) remove spurous character from regexp
- (read_all_conf) ignore rpm's backups (#10816)
-
- * resize_fat/c_rewritten.xs, xf86misc/main.xs, Newt/Newt.xs: kill warnings
-
- * drakxtools.spec: 10.1-0.27mdk
- 10.1-0.26mdk
- 10.1-0.25mdk
-
-2004/09/09 Warly <warly at mandrakesoft.com>
-
- * share/compssUsers.pl: Display Development group in the same way as other
- groups.
-
-2004/09/09 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Up kpilot
-
-2004/09/09 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: Updated POT file
-
-2004/09/09 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * c/smp-dmi.c: add dmi type 6 in detection memory size
-
-2004/09/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn_consts.pm: add @isdn_capi array of cards than can use capi
- drivers
-
- * lang.pm: reduce font size in japanese install
-
-2004/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po: cyrillic fixes
-
- * share/po/bs.po, share/po/af.po, share/po/az.po, share/po/am.po,
- share/po/ar.po: some Mandrake -> Mandrakelinux and MandrakeSoft ->
- Mandrakesoft fixes
-
- * share/po/tg.po, share/po/ltg.po, share/po/ru.po, share/po/ro.po,
- share/po/mt.po, share/po/sr@Latn.po, share/po/it.po, share/po/tl.po,
- share/po/sr.po, share/po/de.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/el.po, share/po/lv.po: fixed media paths
-
- * share/po/uk.po: cyrillic fixes
- fixed media paths
-
- * share/po/bg.po: some Mandrake -> Mandrakelinux and MandrakeSoft ->
- Mandrakesoft fixes
- fixed media paths
-
-2004/09/09 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm:
- - choose the good kernel for the box
- - add recognition of i586-up-1GB
-
- * share/rpmsrate: cleanup
- remove tabulation
-
- * any.pm: even "lilo -u" can prompt about the "Volume ID" fixing process
- handles the lilo case where it wants to assign a new Volume ID: prompt
- the user, then
- - if it doesn't want to modify the Volume ID, use static-bios-codes to
- be able to install lilo
- - otherwise call lilo with answer "n" to the question "Is the above
- disk an NT boot disk?"
- so that it assigns a new Volume ID
-
- * c/smp-dmi.c: max() is not defined, inline it
-
- * bootloader.pm: handle raid-extra-boot (bugzilla #11350)
- remove unused variable
- - handle lilo "static-bios-codes" option
- - call lilo with a forced stdin (so that it doesn't read from tty)
- - enable calling lilo with a special stdin value
- help emacs mode
- fix regexp to work with "linux-2.6.8.1-10mdk"
- instead of expanding symlinks in any case, only do it when renaming
- "linux"
- into the kernel version based label (eg: "2681-10")
- that way "linux" like entries won't be modified, the way the "linux" is
- already handled
-
- * run_program.pm: don't check_prog when the prog is a complex command
- (containing a pipe)
- simplify
- rename $str into $real_name
- remove redundant code
-
- * install_any.pm: BIGMEM now means >4GB
-
- * detect_devices.pm: add is_i586() based on "cpu family", hopefully it
- works for detecting K6 and C3
-
-2004/09/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Grammar fixes
-
- * install_steps_interactive.pm: minor fix in last patch
- Re-read all hdlists in reverse order when there are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
- * pkgs.pm, install_any.pm: Re-read all hdlists in reverse order when there
- are supplementary media.
- Don't unselect every single media when doing an installation from iso
- images.
-
-2004/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm (selectCountry) do not default to per locale default IM. IM was
- either setup by drakx or by localedrake. If the field does not
- exists, this means the user *decided* to not have an IM.
- (selectCountry) do not overwrite current IM (why does this only failed
- with miniChinput???)
-
- * lang.pm: fix thai IM that was broken for ages (but it was disabled in
- 10.0
- anyway so ...)
- fix ENC and locale specific stuff even when IM is disabled (because of
- thai)
- simplify ENC setting
- - sanitize some variable names
- - add/update comments
- (write) make it a little more readable
- (write) kill unused variable
- add a comment about font settings for installer
- Singapore is en_SG not zh_SG !!!
- (read) fix chinput identification
- fix XIM_MODIFIER field for xcin and chinput IM
- (write) set proper XIM_PROGRAM depending on both encoding and locale
- (fix chinput configuration that was broken for ages)
- (set_default_im) really just set default IM and nothing more
- (write) fix XIM_PROGRAM setting
- (set_default_im) simplify
- (IM packages list) when configuring chinput, we need miniChinput (a
- evolution of chinput that replaced it)
-
- * share/rpmsrate: install slmodem for ltmodem, slamr, slusb windmodem
- drivers too
-
- * standalone/localedrake: really reset IM on language switch
- remove debug message
- only default to per locale default IM when switching between locales
-
- * network/network.pm (read_all_conf) remove spurous character from regexp
- (read_all_conf) ignore rpm's backups (#10816)
-
- * resize_fat/c_rewritten.xs, xf86misc/main.xs, Newt/Newt.xs: kill warnings
-
- * drakxtools.spec: 10.1-0.27mdk
- 10.1-0.26mdk
- 10.1-0.25mdk
-
-2004/09/09 Warly <warly at mandrakesoft.com>
-
- * share/compssUsers.pl: Display Development group in the same way as other
- groups.
-
-2004/09/09 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Up kpilot
- compssUsers.pl and rpmsrate for 10.1 Community
-
- * share/compssUsers.pl: compssUsers.pl and rpmsrate for 10.1 Community
-
-2004/09/09 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * c/smp-dmi.c: add dmi type 6 in detection memory size
-
-2004/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po: cyrillic fixes
-
- * share/po/tg.po, share/po/ltg.po, share/po/ru.po, share/po/ro.po,
- share/po/mt.po, share/po/sr@Latn.po, share/po/it.po, share/po/tl.po,
- share/po/de.po, share/po/sr.po, share/po/cy.po, share/po/da.po,
- share/po/ca.po, share/po/el.po, share/po/bg.po, share/po/lv.po: fixed
- media paths
-
- * share/po/uk.po: cyrillic fixes
- fixed media paths
-
-2004/09/09 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm:
- - handle lilo "static-bios-codes" option
- - call lilo with a forced stdin (so that it doesn't read from tty)
- - enable calling lilo with a special stdin value
- help emacs mode
- fix regexp to work with "linux-2.6.8.1-10mdk"
- instead of expanding symlinks in any case, only do it when renaming
- "linux"
- into the kernel version based label (eg: "2681-10")
- that way "linux" like entries won't be modified, the way the "linux" is
- already handled
-
- * any.pm: handles the lilo case where it wants to assign a new Volume ID:
- prompt the user, then
- - if it doesn't want to modify the Volume ID, use static-bios-codes to
- be able to install lilo
- - otherwise call lilo with answer "n" to the question "Is the above
- disk an NT boot disk?"
- so that it assigns a new Volume ID
-
- * run_program.pm: don't check_prog when the prog is a complex command
- (containing a pipe)
- simplify
- rename $str into $real_name
- remove redundant code
-
-2004/09/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps_interactive.pm: Fix regexp
-
- * share/po/fr.po: Grammar fixes
-
-2004/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/network.pm (read_all_conf) remove spurous character from regexp
- (read_all_conf) ignore rpm's backups (#10816)
-
-2004/09/08 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Slow mdkkdm, up kdm, add accessibility softwares
-
-2004/09/08 Frederic Lepied <flepied at mandrakesoft.com>
-
- * detect_devices.pm: added slamr, slusb and ltmodem modules for getModem
-
-2004/09/08 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/09/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: update splash when removed too, use Mandrakelinux
- theme by default,
- don't give theme name to remove-theme
-
- * network/network.pm (configureNetwork2) update iftab when config is
- written
-
- * standalone/drakconnect: fix #11287
-
- * network/ethernet.pm: remove update_eth_card_iftab(), add update_iftab()
-
-2004/09/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po (tm) -> â„¢
- updated po file
-
- * share/po/it.po: updated Italian file
-
- * keyboard.pm: added (commented) new keyboard for tibetan script, so I
- remember it later
-
-2004/09/08 Pixel <pixel at mandrakesoft.com>
-
- * fs/get.pm: fix comment
-
- * any.pm: replace "Cancel" with "Close" when prompting to launch userdrake
- (as suggested by Fabian Mandelbaum)
- disable "Ok" when neither NFS nor SMB is selected (as suggested by
- Fabian Mandelbaum)
-
-2004/09/08 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/09/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * http.pm, install_any.pm: Better version of the reload-IO::Socket patch
-
- * install_steps_interactive.pm: Don't suggest lost+found as a user name
- (bug #11298)
-
- * install_steps.pm: Don't require installation of foomatic-db-engine when
- installing from the
- mini CD (bug #11292)
-
- * pkgs.pm: Add a count of skipped packages after having read an hdlist
- Always return a hashref from pkgs::packageMedium()
- Remove debug logs
-
-2004/09/08 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/fi.po: updated translations...
-
-2004/09/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.24mdk
-
- * standalone/drakupdate_fstab: handle options in any order
-
- * harddrake/autoconf.pm (xconf) fix X11 autoconfiguration
-
- * standalone/drakperm (get_user_or_group) fix freeze (#11274)
-
- * standalone/service_harddrake: log which tools are runned
- fix log message when we cannot run a configurator
-
- * any.pm (set_window_manager) ensure ~/.dmrc is owned by user else GDM
- complains about (spoted by frederic crozat)
-
- * share/rpmsrate: install slmodem for winmodem managed by ALSA (there're
- more out not
- managed by ALSA that need to be added here)
-
-2004/09/07 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add kphone
-
-2004/09/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/adsl.c (perform_adsl) ppp module doesn't exist, don't try to
- load it
-
-2004/09/07 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * http.pm, install_any.pm: Install from a CD with a networked HTTP media :
- force reloading of
- IO::Socket::INET after having brought up the network interface. It
- won't work otherwise (for mysterious reasons.)
-
-2004/09/07 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add kphone
- Down kdm
-
-2004/09/07 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakbug:
- - shift twice to get the correct function name
-
-2004/09/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/adsl.c (perform_adsl) ppp module doesn't exist, don't try to
- load it
-
- * mouse.pm: more synaptics fixes
-
- * fs/mount_options.pm (set_default) use "users" options for removable
- devices (so that users
- can unmount them if the devices were mounted by root)
-
-2004/09/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Bokmål po file
-
-2004/09/07 Pixel <pixel at mandrakesoft.com>
-
- * standalone/bootloader-config: take care of symlink based bootloader
- entries
-
- * bootloader.pm: create get_kernels_and_labels_before_kernel_remove() used
- by bootloader-config
-
- * modules/modprobe_conf.pm, modules/modules_conf.pm: when installing on
- kernel 2.4, do generate a valid modprobe.conf anyway
-
-2004/09/07 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: install_urpmi() wasn't writing proper urls when having
- read an hdlists
- file for a networked supplementary media
- Allow supplementary media for upgrades
-
- * pkgs.pm: install_urpmi() wasn't writing proper urls when having read an
- hdlists
- file for a networked supplementary media
-
-2004/09/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: one more change for 10.1-0.23mdk
- last minute change for 10.1-0.23mdk
- 10.1-0.23mdk
-
- * share/po/fr.po: typo fix
- fix unclosed tag
-
- * install_steps.pm (selectLanguage) set default IM (else IM was only set
- if one click on
- "Country / Region" in summary)
-
-2004/09/07 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Down zapping rank
-
-2004/09/07 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakbug:
- - shift twice to get the correct function name
-
-2004/09/07 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm (get_interface_type) ethernet devices can be used as
- adsl devices
-
- * standalone/drakconnect (del_intf) use more detailled device names on
- Fabrice Facorat suggestion
- s/kind/name/
- (manage) clean interface kind assignment
-
- * network/adsl.pm: load modules for pppoe connections during install
- (partial fix for #11189)
-
- * mouse.pm: more synaptics fixes
-
- * fs/mount_options.pm (set_default) use "users" options for removable
- devices (so that users
- can unmount them if the devices were mounted by root)
-
- * network/netconnect.pm: I sux
- pppoa shouldn't be selected by default for ethernet devices, fallback on
- pppoe
- use fctStartAdsl for eagle-usb in dhcp/static modes
-
-2004/09/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Bokmål po file
-
-2004/09/07 Pixel <pixel at mandrakesoft.com>
-
- * standalone/bootloader-config: take care of symlink based bootloader
- entries
-
- * bootloader.pm: create get_kernels_and_labels_before_kernel_remove() used
- by bootloader-config
-
- * fs.pm:
- - ignore first line of /proc/swaps
- - partially handle /udev/xxx device names in fstab
- - ignore rootfs "device"
- - don't warn for loopback files
-
- * modules/modprobe_conf.pm, modules/modules_conf.pm: when installing on
- kernel 2.4, do generate a valid modprobe.conf anyway
-
-2004/09/07 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Iran != Irak
- Typo fix
-
- * pkgs.pm: Code factorization
- Skip packages that are found on a supplementary media but that are
- already provided by the main media.
-
- * install_any.pm: Remove unused variable
-
-2004/09/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: one more change for 10.1-0.23mdk
- last minute change for 10.1-0.23mdk
- 10.1-0.23mdk
-
- * standalone/service_harddrake: add/update a few comments
- explicitely do not try to run configurator for AGP, ATA_STORAGE,
- SATA_STORAGE,
- SCSI_CONTROLLER and TV classes (some of them [eg: TV] do have a
- configurator
- for harddrake GUI and thus are not skiped by -x test)
-
- * share/po/fr.po: typo fix
- fix unclosed tag
- update
-
-2004/09/06 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
- Updated Simplified Chinese translation
-
- * share/po/DrakX.pot: Updated Simplified Chinese translation
-
-2004/09/06 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm (adsl_conf_backend) explode sagem specific stuff to
- sagem_set_parameters()
-
- * install2.pm: always load mouse modules at beginning of install (should
- fix X test
- not working with synaptics during install)
-
- * standalone/drakconnect: perl_checker fixes
- (del_intf) update for adsl/modem/isdn connections
- (build_tree) avoid code duplication, use network::modem::ppp_read_conf
- (build_notebook) Authentication is used for modems only (better fix for
- #11142)
-
- * network/modem.pm (ppp_read_conf) override Authentication if it does not
- contain a digit character,
- the empty string exists ...
- (ppp_read_conf) try to read kppp config from user dir
- (ppp_read_conf) return modem configuration
- (ppp_read_conf) use /dev/modem if no modem was detected (do not crash
- when we edit a connection whose modem is unplugged)
-
- * detect_devices.pm (getNet) fix detection in 2.4 kernel for net devices
- with high traffic
-
- * network/netconnect.pm: fix stupid error
- adjust tests, dhcp/static adsl connections can now use non-ethernet
- devices
- write sagem specific stuff for dhcp/static connections
- always ask adsl provider
- keep linmodem message for Hcf and Hsf
- remove wrong message about linmodems (#11224)
-
- * share/po/fr.po: translate Zeroconf message
-
-2004/09/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/wa.po, share/po/fr.po: Mandrake --> Mandrakelinux
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/fa.po, share/po/id.po, share/po/ru.po,
- share/po/br.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: updated pot file
-
- * lang.pm: some more languages not supported on console
-
- * any.pm: Changed "User name" to "Login name" (less ambiguous)
-
-2004/09/06 Pixel <pixel at mandrakesoft.com>
-
- * raid.pm: safer
- fix typo
- handle pt_type, not only fs_type
- be more failsafe with half broken existing raids
-
- * drakxtools.spec: need latest perl-MDK-Common
-
- * detect_devices.pm: BIOS release date can have date DD/MM/YY (or maybe it
- is MM/DD/YY), only YYYY was handled
-
- * fs/type.pm:
- - detect LVM2
- - don't even check_md magic when we don't have the size of the device
- detect linux software raid magic
-
- * share/rpmsrate: install xorg-x11-server when installing xorg-x11 (no
- need to do it based on the hardware anymore (it used to be needed for
- XF3))
-
- * install_steps_interactive.pm:
- - don't prompt package groups selection when the available size is
- 200MB (instead of 140MB)
- - when user unselect every groups (ie. the special minimal install
- case), allow the available size to be lower than needed size
-
- * fsedit.pm: some more logging
- fix typo
- detect linux software raid magic
-
- * diskdrake/interactive.pm: fix displaying "mdmd0" instead of "md0"
-
-2004/09/06 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/09/06 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Supplementary media: don't forget to check for a new
- rpmsrate too
- Make the network supplementary media probe able to find an hdlists file
- Override rpmsrate and compssUsers.pl by the ones found on a
- supplementary CD
-
- * pkgs.pm: Make the network supplementary media probe able to find an
- hdlists file
-
- * share/list: consolechars has moved
-
-2004/09/06 Thomas Backlund <tmb at mandrake.org>
-
- * share/po/fi.po: Merge translations by Taisto Kuikka.
- Update translations, not yet fully translated...
-
-2004/09/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: better looking for alternative drivers
-
- * ugtk2.pm (_create_window) do not set border for wizards
-
- * drakxtools.spec: 10.1-0.22mdk
- 10.1-0.21mdk
-
- * install_steps.pm, standalone/localedrake, install_steps_interactive.pm:
- drop lang::write()'s prefix parameter in favor of $::prefix (which was
- already partially done)
-
- * share/rpmsrate: do not install uim-applet for japanese since SCIM
- already provides its
- own applet
-
- * harddrake/data.pm:
- - do not run drakconnect for ethernet & ADSL
- - do not run diskdrake for hd
- add module for storage controllers that are not compiled built-in in
- kernel
- add a few comments
- add module for AGP controller
- run drakconnect when an ADSL device is found (we should do so only when
- device
- is added, not when removed)
- add module for TV cards (trainee sucks...)
-
- * standalone/drakconnect: fix crashes
-
- * log.pm (explanations) redirect log where appropriate at install time
-
- * standalone/service_harddrake: typo fix
- add module for storage controllers that are not compiled built-in in
- kernel
-
- * modules.pm: add module for storage controllers that are not compiled
- built-in in kernel
-
- * standalone/drakboot: ensure we do not enable autologin w/o any user
-
- * lang.pm (write) fix log message when installing IM packages
- drop lang::write()'s prefix parameter in favor of $::prefix (which was
- already partially done)
- (write, configure_kdeglobals) log quite more explanations
- (write) really do nothing when no IM is set (harmfull but saner)
- (write) package list was already computed
- fix english name for breton
- always set QT_IM_MODULE when setting GTK_IM_MODULE
- remove uneeded quotes
- - install scim-m17n as well for generic SCIM configuration (more input
- methods)
- - split am entry from generic one since we've choosen to use
- scim-tables for am on 2004-09-01
- add specific packages to install for japanese when using SCIM
- set QT_IM_MODULE too (UTUMI Hirosi)
- we should probably set it for all IM that use gtk+ API since their API
- is almost identical.
-
- * share/po/fr.po: update
-
-2004/09/06 vljubovic
-
- * share/po/bs.po: Small fixes
-
-2004/09/05 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po, share/po/DrakX.pot: Updated Simplified Chinese
- translation
-
-2004/09/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/nl.po, share/po/tl.po, share/po/de.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * pixmaps/langs/lang-lb.png, pixmaps/langs/lang-km.png,
- pixmaps/langs/lang-lo.png, pixmaps/langs/lang-ik.png,
- pixmaps/langs/lang-ur.png, pixmaps/langs/lang-sc.png,
- pixmaps/langs/lang-fy.png, pixmaps/langs/lang-ks.png,
- pixmaps/langs/lang-lg.png, pixmaps/langs/lang-ug.png,
- pixmaps/langs/lang-sw.png, pixmaps/langs/lang-ha.png,
- pixmaps/langs/lang-tt@Cyrl.png, pixmaps/langs/lang-pa.png,
- pixmaps/langs/lang-chr.png, pixmaps/langs/lang-csb.png,
- pixmaps/langs/lang-fur.png, pixmaps/langs/lang-so.png,
- pixmaps/langs/lang-ps.png, pixmaps/langs/lang-kl.png,
- pixmaps/langs/lang-ks@Arab.png, pixmaps/langs/lang-kk.png: new lang
- images
-
- * lang.pm: * enabled some more languages in the selection list (Furlan,
- Frisian,
- Inuktitut, Greenlandic (Kalaallisut), Khmer, Luxembourguish, Punjabi,
- Sardinian and Uyghur).
- Those languages have either translations for Mandrakelinux tools,
- or for KDE, or Gnome, or any combination of the three;
- or there have been interest recently in starting a translation for
- them.
- * updated list of available locales (@locales)
-
- * standalone/drakbackup: fixed typo
-
-2004/09/05 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/09/05 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/po/fr.po: Replace a XFree86 by X11 in the French messages
-
-2004/09/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po: fixed typo
-
- * share/po/ja.po: updated Japanese file
-
-2004/09/03 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/09/03 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: more
-
-2004/09/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * Xconfig/xfree.pm (set_synaptics) remove spurious space
-
- * mouse.pm: perl_checker fix
- (set_xfree_conf) synaptics fixes
-
-2004/09/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Umount supplementary CD immediately after having read
- informations on it.
-
-2004/09/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ja.po: update (Yukiko Bando <ybando@k6.dion.ne.jp>)
-
- * detect_devices.pm (getModem) handle new winmodem low level driver for
- VIA in ALSA
-
-2004/09/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm (findIntf, read_all_conf) use default DEVICE field
- only at last
- ressort, keep weird DEVICE fiels (i.e for sagem)
- (write_interface_conf) remove quotes if DEVICE is the result of a
- command
- (configureNetwork2) use key from $intf hash to determine ifcfg
- filename (to allow to use weird DEVICE fields, like
- DEVICE=`/usr/sbin/eaglectrl -i`)
- (write_interface_conf) allow TYPE field, will be used to recognize ADSL
- interfaces
-
- * mouse.pm (set_xfree_conf) synaptics fixes
-
- * network/netconnect.pm: support DHCP and manual for sagem devices
-
- * network/tools.pm: remove horrible and unneeded workaround
- shut up perl_checker!
- remove test_internet_connection(), use network::test instead
- (get_interface_type) enhance detection for adsl devices
-
-2004/09/03 Pixel <pixel at mandrakesoft.com>
-
- * share/list, interactive/newt.pm:
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
-
- * Makefile: make dont_run_directly_stage2 keep runinstall2 as a symlink
- (since mdkstage1 check it is a symlink)
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
-
- * lang.pm: always use utf8 strings during install since our locale is
- always utf8
-
- * Newt/Newt.xs:
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
- don't let slang call setlocale(), we do it ourselves
-
-2004/09/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Umount supplementary CD immediately after having read
- informations on it.
- Make local copies of rpmsrate and compssUsers.pl from supplementary CD
- Better handling of mounting/umounting supplementary CDs
- Add a system error when no CD reader is found for a supplementary CD
- Remove support for looking directly for a hdlist1s.cz file on
- supplementary CDs.
-
- * pkgs.pm: Better handling of mounting/umounting supplementary CDs
-
-2004/09/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: log a few more commits from blino for 10.1-0.20mdk
- 10.1-0.20mdk
-
- * share/po/ja.po: update (Yukiko Bando <ybando@k6.dion.ne.jp>)
-
- * tools/cvslog2changelog.pl: add one more translator
-
- * detect_devices.pm (getModem) handle new winmodem low level driver for
- VIA in ALSA
-
-2004/09/03 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: don't exclude Gtk2::Entry filling
-
-2004/09/03 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/09/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm (findIntf, read_all_conf) use default DEVICE field
- only at last
- ressort, keep weird DEVICE fiels (i.e for sagem)
- (write_interface_conf) remove quotes if DEVICE is the result of a
- command
- (configureNetwork2) use key from $intf hash to determine ifcfg
- filename (to allow to use weird DEVICE fields, like
- DEVICE=`/usr/sbin/eaglectrl -i`)
- (write_interface_conf) allow TYPE field, will be used to recognize ADSL
- interfaces
-
- * network/netconnect.pm: support DHCP and manual for sagem devices
-
- * network/adsl.pm: adapt to new fctStartAdsl
-
- * network/tools.pm: remove horrible and unneeded workaround
- shut up perl_checker!
- remove test_internet_connection(), use network::test instead
- (get_interface_type) enhance detection for adsl devices
-
-2004/09/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: small fix in Japanese po files
-
- * share/po/bs.po, share/po/et.po, share/po/pt.po, share/po/pl.po,
- share/po/fr.po: updated Estonian file
-
-2004/09/03 Pixel <pixel at mandrakesoft.com>
-
- * share/list:
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
- stage1 terminfo is not available anymore, use our own terminfo
-
- * interactive/newt.pm:
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
-
- * Makefile: make dont_run_directly_stage2 keep runinstall2 as a symlink
- (since mdkstage1 check it is a symlink)
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
-
- * lang.pm: always use utf8 strings during install since our locale is
- always utf8
-
- * Newt/Newt.xs:
- - we need unicode_start, which need kbd_mode and a real "echo" command
- - initialize newt (and so slang) with a fake en_US.UTF-8 locale during
- install
- (and it works better when slang does its setlocale, i don't know why)
- don't let slang call setlocale(), we do it ourselves
-
- * install2.pm: stage1 terminfo is not available anymore, use our own
- terminfo
-
-2004/09/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm: Better handling of mounting/umounting supplementary CDs
-
- * install_any.pm: Make local copies of rpmsrate and compssUsers.pl from
- supplementary CD
- Better handling of mounting/umounting supplementary CDs
- Add a system error when no CD reader is found for a supplementary CD
- Remove support for looking directly for a hdlist1s.cz file on
- supplementary CDs.
- Don't bypass errorOpeningFile, because it won't ask for further CDs
- anymore... (/me sux)
-
- * share/po/fr.po: Fix grammar.
-
-2004/09/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: log a few more commits from blino for 10.1-0.20mdk
- 10.1-0.20mdk
-
- * share/po/fr.po: update
-
- * ugtk2.pm (create_hbox) do not set extra border since we've a generic fix
- in _create_window
- (_create_window) prevent inner widgets to stick the window
-
- * tools/cvslog2changelog.pl: add one more translator
-
- * install_steps.pm, install_steps_interactive.pm (setupSCSI) load
- modularized PATA drivers too
-
-2004/09/03 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: now kernel-i686-up-4GB and kernel-p3-smp-64GB are
- deprecated
-
-2004/09/03 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: don't exclude Gtk2::Entry filling
-
-2004/09/03 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/09/03 Pixel <pixel at mandrakesoft.com>
-
- * share/list, install2.pm: stage1 terminfo is not available anymore, use
- our own terminfo
-
-2004/09/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Don't bypass errorOpeningFile, because it won't ask for
- further CDs
- anymore... (/me sux)
-
- * share/po/fr.po: Fix grammar.
-
-2004/09/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
- * ugtk2.pm (create_hbox) do not set extra border since we've a generic fix
- in _create_window
- (_create_window) prevent inner widgets to stick the window
-
-2004/09/03 vljubovic
-
- * share/po/bs.po: Improving Bosnian translation
-
-2004/09/03 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: now kernel-i686-up-4GB and kernel-p3-smp-64GB are
- deprecated
-
-2004/09/02 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated partially
-
-2004/09/02 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated zh_CN translation
-
-2004/09/02 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 626
- DrakX will first
-
-2004/09/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: fix cancel in disk install
-
- * standalone/drakupdate_fstab: do not use supermount by default for
- removable devices
-
- * share/rpmsrate: add synaptics in INSTALL section
-
- * network/test.pm: initial import of connection test package
-
- * fs/mount_options.pm: set_default: use sync for removable devices
-
- * crypto.pm, install_any.pm: adapt to new mirror structure
-
-2004/09/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po: updated po file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * standalone/drakhelp: Mandrake -> Mandrakelinux
-
-2004/09/02 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: replace /etc/udev/conf.d/xxx.conf shell scripts with
- /etc/udev/rules.d/xxx.conf conf file
-
-2004/09/02 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: If a supplementary media is incorrect, continue asking
- Don't log too much
- Don't start network for supplementary media if it is cdrom or disk
-
- * install_steps.pm: Don't unselect all media in autoinstalls.
-
- * pkgs.pm: If a supplementary media is incorrect, continue asking
- Allow to deselect media only if the hdlists file contains a line
- "askmedia"
-
-2004/09/02 sharuzzaman
-
- * share/po/ms.po: Updated Malay translation
-
-2004/09/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.19mdk
-
- * standalone/printerdrake, standalone/scannerdrake: reuse icon for windows
-
- * standalone/localedrake: use proper window & banner icon
- set banner title...
-
- * standalone/drakhelp: reuse icon for windows
- fix untraslated title
-
- * standalone/drakfirewall, standalone/logdrake, standalone/draksec,
- standalone/drakfloppy, standalone/drakedm, standalone/drakxservices,
- standalone/drakproxy, standalone/drakperm, standalone/keyboarddrake,
- standalone/net_monitor, standalone/diskdrake, standalone/mousedrake,
- standalone/drakclock, standalone/drakxtv: reuse mcc icons (if
- availlable) for windows
-
- * printer/main.pm (write_client_conf) fix drakxtools build
-
- * any.pm (selectLanguage) tag title as translatable
-
- * ugtk2.pm (new) fallback on window'icon for wizards
-
-2004/09/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po, share/po/es.po, share/po/fr.po, share/po/wa.po: updated
- Norwegian file; small fixes on Spanish, French and Walloon files
-
-2004/09/01 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: comply with the rpmsrate parser
-
-2004/09/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Do not check for presence of "scanner-gui" during install.
-
- * services.pm:
- - Lete the function "start_not_running_service()" really start the
- specified service if it is not running instead of being a copy of the
- function "is_service_running()".
- - Restored wrong upload.
-
-2004/09/01 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: fixed/added some laptop entries
-
-2004/09/01 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: Updated POT file
-
-2004/09/01 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo melo
- last rush
-
-2004/09/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/rpmsrate: add xawtv in TV section, install ati.2 for ATI cards
- only
-
-2004/09/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: fixed fonts.cache-1 file so that the tamil font no
- longer claims it
- support western languages.
-
-2004/09/01 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: comply with the rpmsrate parser
-
-2004/09/01 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: perl_checker cleanup
-
-2004/09/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Do not check for presence of "scanner-gui" during install.
- - Fixed bug of printerdrake trying to install the virtual package
- "scanner-gui" during installation (when a multi-function device from HP
- is present).
-
- * printer/main.pm:
- - If cupsd.conf is read but does not exist, use default settings for
- all settings which are required. This prevents from writing a corrupt
- cupsd.conf
- - Write cupsd.conf only if it exists already (cups package installed).
- - Create /etc/cups directory if it does not exist when client.conf is
- written
- - Return something reasonable if client.conf is tried to be read but
- does not exist.
- - Write mime.convs only if it exists already (cups package installed).
-
- * services.pm:
- - Lete the function "start_not_running_service()" really start the
- specified service if it is not running instead of being a copy of the
- function "is_service_running()".
- - Restored wrong upload.
- - Lete the function "start_not_running_service()" really start the
- specified service if it is not running instead of being a copy of the
- function "is_service_running()".
-
-2004/09/01 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: fixed/added some laptop entries
-
-2004/09/01 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: Updated POT file
-
-2004/09/01 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/09/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: add notconfigured state
-
- * share/rpmsrate: add xawtv in TV section, install ati.2 for ATI cards
- only
-
- * standalone/drakboot: do not crash if default autologin or default
- desktop doesn't exist
-
- * standalone/service_harddrake: write modules conf files if a tv card is
- detected
-
- * mdk-stage1/init.c: drop non-standard tld (localdomain)
-
- * standalone/net_monitor: fix stupid error
-
- * network/network.pm: symlink resolv.conf in install root, so that it
- works for dhcp too
- write /etc/resolv.conf in install root
-
- * network/tools.pm: revert titi fix, do not return random interface if
- internet connection
- is not configured
- do not use find over grep, just find
-
-2004/09/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: fixed fonts.cache-1 file so that the tamil font no
- longer claims it
- support western languages.
- modified the fonts.conf file so that a subset of the "sans" alias list
- is copied into the "serif" and "monospace" aliases list, before the
- listing
- of problematic fonts, hoping it will solve bug #10937
- (apparently the problem is that input fields want a monospace font,
- there is no latin monospace font, and a rando font is used, the tamil
- one having wrong glyphs at some latin1 positions)
-
-2004/09/01 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * lang.pm: Fix syntax error
-
- * any.pm: Fix generation of urpmi.cfg when doing a disk install from a
- live tree
-
- * share/rpmsrate: remove duplicated entry for nut-server
-
- * install_any.pm: perl_checker cleanup
- ensure install_interactive is loaded
- When adding a networked supplementary media, configure the network if
- needed. Install basesystem for this purpose.
-
- * Makefile: Split into a new target mdkinst_stage2
-
-2004/09/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed bug of printerdrake trying to install the virtual package
- "scanner-gui" during installation (when a multi-function device from HP
- is present).
-
-2004/09/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/net_applet: perl_checker cleanups
-
- * standalone/harddrake2: enable harddrake2 to properly adapt to theme
- changes and the like
-
- * share/rpmsrate: enable SCIM for Amharic language
-
- * standalone/drakclock: unbreak drakclock
-
- * network/tools.pm (get_internet_connection) if no default route exits,
- take first route in order
- to not have strange messages in net_appletb
-
- * drakxtools.spec: 10.1-0.18mdk
-
- * lang.pm: enable SCIM for Amharic language
- typo fix
- simplify
-
- * detect_devices.pm (getBewan) reuse ematching_desc__regexp()
-
- * standalone/drakautoinst (create_notebook) follow the same parameter
- order as gtkappend_page() use and
- as C/Gtk+ does
-
- * ugtk2.pm (create_notebook) follow the same parameter order as
- gtkappend_page() use and
- as C/Gtk+ does
- (create_notebook) give meaningfull name to variables
-
-2004/09/01 Warly <warly at mandrakesoft.com>
-
- * standalone/drakclock: initialize and so that motion_event correctly
- handle the mouse moves
- Repaint the calendar (especially when the day changed)
- Make the hour tick shorter
- Check if the ntpdate command succeed or not, do not quit if it fails
- Only apply the date command again if ntp mode is not selected
- Do not perform a date command when ntpdate has just been called
-
-2004/08/31 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated a part of
-
-2004/08/31 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: ads #25: use translation from Marketing and not one
- which come from nowhere
- Close <b> in ads #28
-
-2004/08/31 Frederic Lepied <flepied at mandrakesoft.com>
-
- * harddrake/data.pm: added initial support for UPS
-
- * detect_devices.pm: please perl_checker
- simplify UPS detection and report the needed info for harddrake
-
- * share/rpmsrate: added kuickshow and supertux
-
-2004/08/31 Florin Grad <florin at mandrakesoft.com>
-
- * network/shorewall.pm: use the loc zone in policy only if the loc
- interface exists
-
-2004/08/31 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: Updated POT file
-
-2004/08/31 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * share/advertising/README, share/advertising/corpo-server-03.png,
- share/advertising/corpo-desk-10.pl,
- share/advertising/corpo-server-09.png, share/advertising/list-cpd,
- share/advertising/corpo-server-06.pl,
- share/advertising/corpo-server-01.pl,
- share/advertising/corpo-desk-01.png,
- share/advertising/corpo-desk-05-a.pl,
- share/advertising/corpo-desk-09.png,
- share/advertising/corpo-desk-05-a.png,
- share/advertising/corpo-desk-06-a.pl,
- share/advertising/corpo-desk-06.png, share/advertising/corpo-desk-02.pl,
- share/advertising/corpo-desk-06-b.pl,
- share/advertising/corpo-server-08.pl,
- share/advertising/corpo-desk-05-b.png,
- share/advertising/corpo-server-02.pl,
- share/advertising/corpo-server-10.png,
- share/advertising/corpo-server-10.pl,
- share/advertising/corpo-server-05.pl,
- share/advertising/corpo-server-08.png, share/advertising/list-cps,
- share/advertising/corpo-desk-03.png,
- share/advertising/corpo-server-06.png,
- share/advertising/corpo-desk-07.pl,
- share/advertising/corpo-server-07.pl,
- share/advertising/corpo-desk-04.pl, share/advertising/corpo-desk-09.pl,
- share/advertising/corpo-server-05.png,
- share/advertising/corpo-server-02.png,
- share/advertising/corpo-desk-05.png,
- share/advertising/corpo-desk-02.png, share/advertising/corpo-desk-05.pl,
- share/advertising/corpo-desk-06.pl, share/advertising/corpo-desk-08.png,
- share/advertising/corpo-server-04.pl,
- share/advertising/corpo-desk-07.png,
- share/advertising/corpo-server-09.pl,
- share/advertising/corpo-server-07.png,
- share/advertising/corpo-desk-04.png,
- share/advertising/corpo-server-01.png,
- share/advertising/corpo-desk-03.pl,
- share/advertising/corpo-desk-06-b.png,
- share/advertising/corpo-desk-05-b.pl,
- share/advertising/corpo-desk-10.png,
- share/advertising/corpo-server-04.png,
- share/advertising/corpo-desk-01.pl,
- share/advertising/corpo-desk-06-a.png,
- share/advertising/corpo-desk-08.pl,
- share/advertising/corpo-server-03.pl: Corporate material
-
-2004/08/31 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: dia zero
- melo
-
-2004/08/31 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet (is_running) enhance regexp, use any
-
-2004/08/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: make CONSOLE_NOT_LOCALIZED written to i18n file
-
- * share/po/nl.po, share/po/id.po, share/po/lt.po, share/po/cy.po,
- share/po/et.po, share/po/da.po, share/po/mt.po, share/po/uz@Latn.po:
- updated Welsh and Estonian files; fixed some errors due to automatic
- replacements.
-
-2004/08/31 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_steps.pm, install_any.pm, install_steps_interactive.pm: Support
- for unselecting some media before the install (begin.)
-
- * pkgs.pm: Remove dead code
- Support for unselecting some media before the install (begin.)
-
- * share/rpmsrate: Remove duplicate entries in rpmsrate
-
- * share/po/fr.po: French grammar fix
-
-2004/08/31 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/data.pm:
- - Let xpp also be installed when in daemon-less CUPS client mode.
-
-2004/08/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect (build_notebook) fix crashes (#11100)
-
- * share/rpmsrate: install nut-server for MGE's UPS
-
- * standalone/net_applet (is_running) make it work
- (is_running) try harder
- (is_running) ignore our own process ... (brown paper bag bug)
-
-2004/08/30 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: part updated
-
-2004/08/30 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/25.png: New image
-
-2004/08/30 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/net_applet:
- - no need to run net-monitor with '--testing'
- - launch net_monitor in background
- - typo
- - avoid duplication
- - s/and/or/ (oblin)
- - launch net_monitor once (test if there's a running net_monitor
- before)
-
-2004/08/30 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: added smartmontools
-
-2004/08/30 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/08/30 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm, standalone/net_monitor: move start_interface and
- stop_interface from net_monitor to network::tools, use it in net_monitor
- and net_applet
-
- * network/netconnect.pm: adsl_conf_backend needs $intf now
- NET_DEVICE is the ethernet interface for pptp too
-
- * standalone/net_applet: move start_interface and stop_interface from
- net_monitor to network::tools, use it in net_monitor and net_applet
- allow to connect/disconnect from net_applet
- is_running returns a boolean which would never be > 1
-
- * network/adsl.pm: write ifcfg files for NET_DEVICE if it's ethernet
- (pptp, pppoe)
-
-2004/08/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
- updated pot file
-
- * standalone/printerdrake: fixed use of N()
-
- * share/po/it.po: updated Italian file
- updated pot file
- updated pot file
-
-2004/08/30 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: Fix support for suppl. CDs with hdlists file
-
-2004/08/30 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed duplicate translatable strings.
- - Added column to show whether the printers are enabled or disables to
- the list of available print queues in the main window.
- - Added command to the edit-printer window to enable and disable print
- queues.
- - Fixed bug of "--expert" command line option of printerdrake not
- working.
-
- * printer/cups.pm, printer/main.pm, standalone/printerdrake:
- - Added column to show whether the printers are enabled or disables to
- the list of available print queues in the main window.
- - Added command to the edit-printer window to enable and disable print
- queues.
- - Fixed bug of "--expert" command line option of printerdrake not
- working.
-
-2004/08/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.17mdk
-
- * share/po/br.po: update
- typo fixes (Arpad Biro <biro_arpad@yahoo.com>)
-
- * standalone/drakclock: fix layout so that NTP frame is not badly cut on
- small resolution (#10971)
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, standalone/drakvpn, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- standalone/drakconnect, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/fur.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: typo fixes (Arpad
- Biro <biro_arpad@yahoo.com>)
-
- * share/po/fr.po: minor update
- update
- typo fixes (Arpad Biro <biro_arpad@yahoo.com>)
-
-2004/08/30 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakupdate_fstab: do not restrict "many partitions" test to
- SCSI devices
- do not mount and add/delete in fstab when many partitions (#11005)
-
- * mouse.pm: really make synaptics works at install (don't crash graphical
- install)
-
-2004/08/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (Gtk2::ComboBox::set_text) explain which caller failled
-
- * drakxtools.spec: 10.1-0.16mdk
-
- * Xconfig/resolution_and_depth.pm (choose_gtk) fix crash
-
- * share/po/fr.po: update
-
-2004/08/29 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/sr@Latn.po, share/po/sq.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/lv.po,
- share/po/hu.po, share/po/fa.po, share/po/id.po, share/po/ru.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: Updated POT file
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
- Updated POT file
-
-2004/08/29 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 618
- authentication
- DrakX-zh_TW: 612
- Espanol
-
-2004/08/29 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, standalone/printerdrake, printer/printerdrake.pm:
- - Inform the user on first-time setup, both during or after
- installation, that he can set up a daemon-less CUPS client.
- - Warn the user when printerdrake is set to daemon-less CUPS client
- but no server is specified.
- - Fixed bug of local queues not being recognized when the spooler
- daemon is not running during printerdrake startup.
- - Do not try to copy print queues when switchung from daemon-less CUPS
- to normal CUPS.
- - Remove the client.conf when switching from daemon-less CUPS to
- normal CUPS.
-
-2004/08/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakroam: move DHCP column to left for better sizing (Austin
- <aacton@yorku.ca>)
- (UpdateAvailable) print ESSID too (Austin <aacton@yorku.ca>)
- fix Add button behavior (Austin <aacton@yorku.ca>)
-
-2004/08/29 vljubovic
-
- * share/po/bs.po: Improving Bosnian translation
-
-2004/08/27 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 604
- done
-
-2004/08/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm, network/tools.pm, network/network.pm,
- network/adsl.pm: write metric in ifcfg files according to connection
- type
-
- * standalone/drakconnect (manage) read settings from correct interface for
- non ethernet interfaces
- (manage) add metric text entry for all connections
-
- * network/modem.pm: use same keys than manage interface for metrics
- (ppp_read_conf) read metric if set
- write metric in ifcfg files according to connection type
-
-2004/08/27 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/rpmsrate: Remove duplicated entries with complex flags from the
- rpmsrate
-
-2004/08/27 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/default.pm, printer/cups.pm, printer/main.pm, printer/data.pm,
- standalone/printerdrake, printer/printerdrake.pm:
- - Made support for daemon-less CUPS client working.
- - Fixed graying out of buttons/menu entries in the main window.
-
-2004/08/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/localedrake: do not complain on wizcancel
-
- * standalone/logdrake (insert_text_n_scroll) fix displaying only last
- parsed file
-
- * detect_devices.pm (matching_driver) introduce it in order to factorize
- some tests
- add __regexp suffix to matching_desc() and matching_driver()
- (getModem) report modems supported by ALSA too
-
- * lang.pm: space cleanup for lord perl_checker
- (IM2packages)
- - alter prototype: directly take a locale hash
- - get lang from locale hash
- - use it to install needed packages depending on locale (instead of
- only generic ones depending on IM)
-
- * drakxtools.spec: 10.1-0.15mdk
-
- * Xconfig/card.pm, pkgs.pm, common.pm, install_steps.pm, bootloader.pm,
- install_any.pm: add __regexp suffix to matching_desc() and
- matching_driver()
-
- * share/rpmsrate: sort a few entries
-
-2004/08/27 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: melo
-
-2004/08/27 Laurent Montel <lmontel at mandrakesoft.com>
-
- * share/rpmsrate: Don't install kdeutils-klaptop all the time
- just when we detect a laptop
-
-2004/08/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * install2.pm: read modules configuration file from stage1 as modules_conf
- file, but
- get an object of the proper type by using modules::any_conf::vnew
-
-2004/08/27 Olivier Thauvin <thauvin at aerov.jussieu.fr>
-
- * Xconfig/xfree.pm:
- - add dell D800 specific modeline and resolution
-
-2004/08/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po, share/po/cs.po: updated Czech and Bokmål po files
-
-2004/08/27 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Support for multiple supplementary media
-
- * share/rpmsrate: Remove duplicated entries with complex flags from the
- rpmsrate
-
-2004/08/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot (lilo_choice) fix canceling first step
-
- * detect_devices.pm (matching_driver) introduce it in order to factorize
- some tests
- add __regexp suffix to matching_desc() and matching_driver()
- (getModem) report modems supported by ALSA too
-
- * standalone/localedrake: do not complain on wizcancel
- no need to check first step return value since we're covered by both
- Wizard_no_previous and die('wizcancel')
- remove useless label "the_end"
- inline select_language()
- make it looks and behave like a wizard for GUI sanity (previously
- cancel on second step resulted in step backward rather than exit...)
-
- * share/rpmsrate: sort a few entries
-
- * standalone/logdrake (insert_text_n_scroll) fix displaying only last
- parsed file
-
- * lang.pm: space cleanup for lord perl_checker
- (IM2packages)
- - alter prototype: directly take a locale hash
- - get lang from locale hash
- - use it to install needed packages depending on locale (instead of
- only generic ones depending on IM)
-
- * Xconfig/card.pm, pkgs.pm, common.pm, install_steps.pm, bootloader.pm,
- install_any.pm: add __regexp suffix to matching_desc() and
- matching_driver()
-
- * drakxtools.spec: 10.1-0.15mdk
-
-2004/08/26 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated 95%
- Updated partially
-
-2004/08/26 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Finish to add french translation from Marketing team
- (DrakX ads)
-
-2004/08/26 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * tools/ddcprobe/vbe.c, tools/ddcprobe/Makefile: Some arrangements for
- IA-64
- PowerPC arrangements from Christiaan Welvaart
-
- * tools/ddcprobe/of.c: PowerPC arrangements from Christiaan Welvaart
-
- * tools/ddcprobe/ddcxinfos.c: Some arrangements for IA-64
-
-2004/08/26 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: josé melo
-
-2004/08/26 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_steps_gtk.pm: define and use $o->{mouse}{alternate_install} if
- detected mouse can't be used during install
-
- * network/netconnect.pm: adsl devices need network restart if they're
- *not* in the adsl devices list
-
- * install_steps.pm (doPartitionDisksBefore) umount /sys and /proc/bus/usb
- in chroot
-
- * Xconfig/xfree.pm (set_synaptics) quote decimal values so that
- write_XF86Config doesn't
- write commas instead of dots
-
- * mouse.pm: i sux
- define and use $o->{mouse}{alternate_install} if detected mouse can't be
- used during install
- (set_xfree_conf) don't create crappy auxmouse if there is none
- (detect) do not return unusable synaptics driver at beginning of install
-
-2004/08/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/fa.po, share/po/nb.po, share/po/bn.po,
- share/po/uz.po, share/po/ru.po, share/po/wa.po, share/po/pt_BR.po,
- share/po/sl.po, share/po/hi.po, share/po/af.po, share/po/et.po,
- share/po/pt.po, share/po/vi.po, share/po/fr.po, share/po/nl.po,
- share/po/it.po, share/po/uk.po, share/po/eu.po, share/po/es.po,
- share/po/tl.po, share/po/pl.po, share/po/de.po, share/po/fi.po,
- share/po/cy.po, share/po/da.po, share/po/ca.po, share/po/ar.po,
- share/po/uz@Latn.po: updated Estonian and Spanish files; retrieved some
- more old strings
-
-2004/08/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: complete 10.1-0.14mdk's changelog
- add bug reference in 10.1-0.11mdk's changelog
- 10.1-0.9mdk
-
- * share/po/fr.po: minor update
- typo fix
- update
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/advertising/18.pl, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: typo fix
-
-2004/08/25 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: DrakX ads: begin to add french translations from
- Marketing team
-
- * share/advertising/24.png, share/advertising/07.png,
- share/advertising/26.png, share/advertising/16.png,
- share/advertising/11.png, share/advertising/02.png,
- share/advertising/23.png, share/advertising/15.png,
- share/advertising/03.png, share/advertising/14.png,
- share/advertising/25.png, share/advertising/19.png,
- share/advertising/13-a.png, share/advertising/10.png,
- share/advertising/04.png, share/advertising/27.png,
- share/advertising/18.png, share/advertising/28.png,
- share/advertising/13-b.png, share/advertising/22.png,
- share/advertising/09.png, share/advertising/29.png,
- share/advertising/30.png, share/advertising/06.png,
- share/advertising/17.png, share/advertising/05.png,
- share/advertising/21.png, share/advertising/20.png,
- share/advertising/08.png, share/advertising/12.png: Images for 10.1
-
-2004/08/25 Funda Wang <fundawang at linux.net.cn>
-
- * standalone/drakedm: Mandrake -> Mandrakelinux. Mark DM entries as
- translatable.
-
-2004/08/25 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * tools/ddcprobe/vbe.c, tools/ddcprobe/vbe.h: Extensive rewrite and
- cleanups to use the new int10 interface. Plus add
- some 64-bit fixes and a last-resort means to get VBE/EDID information
- from special -BOOT kernel during early boot.
-
- * Xconfig/monitor.pm: Parse XFree86.log in last resort in case we have not
- got any valuable
- information at this stage from ddcxinfos.
-
- * crypto.pm: Always prefer 64-bit packages for updates on biarch
- platforms.
-
- * tools/ddcprobe/ddcxinfos.c: Some cleanups
- Extensive rewrite and cleanups to use the new int10 interface. Plus add
- some 64-bit fixes and a last-resort means to get VBE/EDID information
- from special -BOOT kernel during early boot.
-
- * share/list.x86_64: i18n stuff at install time, probably make it common
- with /LIB/
-
- * tools/ddcprobe/x86emu/include/x86emu.h,
- tools/ddcprobe/x86emu/include/x86emu/fpu_regs.h,
- tools/ddcprobe/x86emu/include/x86emu/regs.h,
- tools/ddcprobe/x86emu/include/x86emu/types.h: Add remaining x86 CPU
- emulator bits
-
- * partition_table.pm: add XFS to x86_64 known FS
-
- * Xconfig/card.pm: handle lib64 drivers on x86-64
-
- * install_steps_gtk.pm: default to 75dpi in order to get anti-aliased
- fonts
-
- * drakxtools.spec: update changelog dates to please rpm + add some
- highlights to please titi
- enough amd64 changes merged
-
- * tools/ddcprobe/x86emu/x86emu/prim_asm.h, tools/ddcprobe/x86emu/sys.c,
- tools/ddcprobe/x86emu/x86emu/fpu.h, tools/ddcprobe/x86emu/prim_ops.c,
- tools/ddcprobe/x86emu/ops.c, tools/ddcprobe/x86emu/debug.c,
- tools/ddcprobe/x86emu/x86emu/x86emui.h,
- tools/ddcprobe/x86emu/x86emu/decode.h, tools/ddcprobe/x86emu/validate.c,
- tools/ddcprobe/x86emu/x86emu/prim_ops.h, tools/ddcprobe/x86emu/decode.c,
- tools/ddcprobe/x86emu/x86emu/debug.h, tools/ddcprobe/x86emu/fpu.c,
- tools/ddcprobe/x86emu/LICENSE, tools/ddcprobe/x86emu/Makefile,
- tools/ddcprobe/x86emu/x86emu/ops.h, tools/ddcprobe/x86emu/ops2.c: Add
- x86 CPU emulator for BIOS int10 emulation on non x86 arches.
-
- * tools/ddcprobe/minifind.h, tools/ddcprobe/of.c,
- tools/ddcprobe/minifind.c: Get EDID block from OF (kudzu)
-
- * c/smp.c: fix smp detection on x86_64
-
- * Makefile: Handle PCMCIA on x86-64 too. Fix libs glob for live tree.
- Don't ship with
- "cdcom" modules archives in netinstallable trees.
-
- * tools/ddcprobe/int10/vbios.h, tools/ddcprobe/int10/pci.h,
- tools/ddcprobe/int10/Makefile, tools/ddcprobe/int10/i10_v86.c,
- tools/ddcprobe/int10/i10_int.c, tools/ddcprobe/int10/i10_vbios.c,
- tools/ddcprobe/int10/v86bios.h, tools/ddcprobe/int10/emu_vm86.c,
- tools/ddcprobe/int10/i10_pci.c, tools/ddcprobe/int10/i10_io.c,
- tools/ddcprobe/int10/vm86_struct.h, tools/ddcprobe/int10/README,
- tools/ddcprobe/int10/AsmMacros.h: VGA softbootloader for Linux, uses an
- x86 CPU emulator on non x86 arches.
-
- * tools/ddcprobe/Makefile: Some cleanups
- Raw merge from Kudzu for PPC. Christian, can you get something of it?
- Only use VBE parsing code on x86 and x86_64.
- Extensive rewrite and cleanups to use the new int10 interface. Plus add
- some 64-bit fixes and a last-resort means to get VBE/EDID information
- from special -BOOT kernel during early boot.
-
- * install_steps.pm: handle nolapic, idle=poll, ide=nodma boot options
-
-2004/08/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl_consts.pm: fix Titi sux hard (add missing comma and spaces,
- remove spurious
- nameserver word)
-
- * network/tools.pm: add missing spaces
- add get_interface_type to guess interface type
-
- * standalone/net_applet: avoid grep to grep itself, use perl
-
- * install_any.pm: set TV flag when a TV card is detected to install
- appropriate packages
-
- * any.pm (selectCountry) fix Pixel broke country selection (bug 10938)
-
- * standalone/service_harddrake: killer feature: restore bootsplash mode
- don't abort miserably if configurator is code
- fix typo
-
- * standalone/drakconnect: use exists
- (manage) use network::tools::get_interface_type instead of
- /etc/sysconfig/drakconnect in order to avoid to recognize ppp0 as both
- modem and adsl (bug 10772)
-
- * tools/i386/netboot/davicom/stage2, tools/i386/netboot/grub,
- tools/i386/netboot/via_rhine/pxegrub, tools/i386/netboot/natsemi/nbgrub,
- tools/i386/netboot/davicom/nbgrub, tools/i386/netboot/cs89x0/stage2,
- tools/i386/netboot/cs89x0/pxegrub, tools/i386/netboot/via_rhine/stage2,
- tools/i386/netboot/davicom/pxegrub, tools/i386/netboot/natsemi/stage2,
- tools/i386/netboot/via_rhine/nbgrub, tools/i386/netboot/davicom/stage1,
- tools/i386/netboot/cs89x0/nbgrub, tools/i386/netboot/cs89x0/stage1,
- tools/i386/netboot/via_rhine/stage1, tools/i386/netboot/natsemi/pxegrub,
- tools/i386/netboot/natsemi/stage1: add new drivers, upgrade to grub-0.95
-
- * tools/i386/netboot/ni5010/stage1, tools/i386/netboot/tiara/pxegrub,
- tools/i386/netboot/3c507/pxegrub, tools/i386/netboot/lance/nbgrub,
- tools/i386/netboot/otulip/nbgrub, tools/i386/netboot/tulip/pxegrub,
- tools/i386/netboot/ni5210/pxegrub, tools/i386/netboot/sis900/stage1,
- tools/i386/netboot/otulip/stage1, tools/i386/netboot/ni6510/stage2,
- tools/i386/netboot/eepro100/stage2, tools/i386/netboot/3c503/stage1,
- tools/i386/netboot/w89c840/stage1, tools/i386/netboot/ni5010/nbgrub,
- tools/i386/netboot/smc9000/stage2, tools/i386/netboot/ns8390/pxegrub,
- tools/i386/netboot/lance/stage1, tools/i386/netboot/tulip/stage2,
- tools/i386/netboot/ni5210/stage1, tools/i386/netboot/rtl8139/stage2,
- tools/i386/netboot/ne/stage1, tools/i386/netboot/rtl8139/nbgrub,
- tools/i386/netboot/sis900/nbgrub, tools/i386/netboot/3c509/nbgrub,
- tools/i386/netboot/eepro/stage1, tools/i386/netboot/lance/stage2,
- tools/i386/netboot/otulip/stage2, tools/i386/netboot/ni5010/pxegrub,
- tools/i386/netboot/ns8390/stage2, tools/i386/netboot/wd/nbgrub,
- tools/i386/netboot/ne/pxegrub, tools/i386/netboot/depca/stage2,
- tools/i386/netboot/tulip/nbgrub, tools/i386/netboot/lance/pxegrub,
- tools/i386/netboot/tiara/stage1, tools/i386/netboot/epic100/pxegrub,
- tools/i386/netboot/ni6510/pxegrub, tools/i386/netboot/3c90x/stage1,
- tools/i386/netboot/3c507/nbgrub, tools/i386/netboot/3c529/stage2,
- tools/i386/netboot/epic100/nbgrub, tools/i386/netboot/wd/stage2,
- tools/i386/netboot/3c507/stage1, tools/i386/netboot/3c595/stage2,
- tools/i386/netboot/3c529/stage1, tools/i386/netboot/depca/pxegrub,
- tools/i386/netboot/ne2100/stage2, tools/i386/netboot/exos205/stage1,
- tools/i386/netboot/w89c840/pxegrub, tools/i386/netboot/sk_g16/pxegrub,
- tools/i386/netboot/3c509/stage1, tools/i386/netboot/eepro/stage2,
- tools/i386/netboot/rtl8139/pxegrub, tools/i386/netboot/3c595/pxegrub,
- tools/i386/netboot/smc9000/stage1, tools/i386/netboot/w89c840/nbgrub,
- tools/i386/netboot/3c503/nbgrub, tools/i386/netboot/ne/stage2,
- tools/i386/netboot/sk_g16/stage2, tools/i386/netboot/exos205/nbgrub,
- tools/i386/netboot/tulip/stage1, tools/i386/netboot/wd/stage1,
- tools/i386/netboot/3c503/pxegrub, tools/i386/netboot/3c529/nbgrub,
- tools/i386/netboot/ni6510/stage1, tools/i386/netboot/depca/nbgrub,
- tools/i386/netboot/3c503/stage2, tools/i386/netboot/ni5010/stage2,
- tools/i386/netboot/sis900/stage2, tools/i386/netboot/eepro/pxegrub,
- tools/i386/netboot/3c90x/nbgrub, tools/i386/netboot/ni6510/nbgrub,
- tools/i386/netboot/epic100/stage1, tools/i386/netboot/ne2100/pxegrub,
- tools/i386/netboot/rtl8139/stage1, tools/i386/netboot/tiara/nbgrub,
- tools/i386/netboot/ns8390/stage1, tools/i386/netboot/3c90x/pxegrub,
- tools/i386/netboot/3c595/stage1, tools/i386/netboot/ni5210/nbgrub,
- tools/i386/netboot/depca/stage1, tools/i386/netboot/3c509/pxegrub,
- tools/i386/netboot/ne2100/stage1, tools/i386/netboot/sk_g16/stage1,
- tools/i386/netboot/eepro100/nbgrub, tools/i386/netboot/tiara/stage2,
- tools/i386/netboot/eepro100/stage1, tools/i386/netboot/ns8390/nbgrub,
- tools/i386/netboot/ni5210/stage2, tools/i386/netboot/eepro100/pxegrub,
- tools/i386/netboot/3c507/stage2, tools/i386/netboot/3c509/stage2,
- tools/i386/netboot/3c90x/stage2, tools/i386/netboot/3c595/nbgrub,
- tools/i386/netboot/epic100/stage2, tools/i386/netboot/otulip/pxegrub,
- tools/i386/netboot/eepro/nbgrub, tools/i386/netboot/3c529/pxegrub,
- tools/i386/netboot/exos205/pxegrub, tools/i386/netboot/ne2100/nbgrub,
- tools/i386/netboot/w89c840/stage2, tools/i386/netboot/smc9000/pxegrub,
- tools/i386/netboot/wd/pxegrub, tools/i386/netboot/sis900/pxegrub,
- tools/i386/netboot/exos205/stage2, tools/i386/netboot/sk_g16/nbgrub,
- tools/i386/netboot/ne/nbgrub, tools/i386/netboot/smc9000/nbgrub: upgrade
- to grub-0.95
-
- * tools/i386/netboot/make_boot_network: warn if driver not available,
- print available drivers
-
- * tools/i386/netboot/makeImages: use grub-0.95
- don't be a bastard, keep CVS directory
-
- * tools/i386/netboot/stage1.via-rhine, tools/i386/netboot/stage1.3c59x,
- tools/i386/netboot/stage2.3c59x, tools/i386/netboot/stage2.tulip,
- tools/i386/netboot/stage1.tulip, tools/i386/netboot/stage2.rtl8139,
- tools/i386/netboot/stage2.3c90x, tools/i386/netboot/stage1.eepro100,
- tools/i386/netboot/stage2.via-rhine, tools/i386/netboot/stage1.rtl8139,
- tools/i386/netboot/stage1.3c90x, tools/i386/netboot/stage2.eepro100:
- delete obsolete files
-
-2004/08/25 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/data.pm, printer/printerdrake.pm:
- - Moved initial package installation by printerdrake into
- "install_spooler()" function, so all package installation done by
- printerdrake (except printer/queue-type-specific, as HPOJ) is done in
- one step.
- - First changes for daemonless CUPS client support.
-
-2004/08/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.13mdk
- merge in lost 10-34.3.100mdk's changelog
-
- * ugtk2.pm (create_packtable) fix cuted ads at install time
-
- * network/adsl_consts.pm: fix siol's vci (hexa formated)
-
- * Makefile.config: add listsupportedprinters
-
- * standalone/service_harddrake: rename loop variable in order to prevent
- trainee to be confused
- support inline configuators
- run proper program :-)
- just go on if --force is passed
-
-2004/08/25 Gwenole Beauchesne <gbeauchesne at mandrakesoft.com>
-
- * tools/ddcprobe/vbe.c, tools/ddcprobe/vbe.h, tools/ddcprobe/Makefile,
- tools/ddcprobe/ddcxinfos.c: Extensive rewrite and cleanups to use the
- new int10 interface. Plus add
- some 64-bit fixes and a last-resort means to get VBE/EDID information
- from special -BOOT kernel during early boot.
-
- * Xconfig/monitor.pm: Parse XFree86.log in last resort in case we have not
- got any valuable
- information at this stage from ddcxinfos.
-
- * crypto.pm: Always prefer 64-bit packages for updates on biarch
- platforms.
-
- * share/list.x86_64: i18n stuff at install time, probably make it common
- with /LIB/
-
- * tools/ddcprobe/x86emu/include/x86emu.h,
- tools/ddcprobe/x86emu/include/x86emu/fpu_regs.h,
- tools/ddcprobe/x86emu/include/x86emu/regs.h,
- tools/ddcprobe/x86emu/include/x86emu/types.h: Add remaining x86 CPU
- emulator bits
-
- * partition_table.pm: add XFS to x86_64 known FS
-
- * Xconfig/card.pm: handle lib64 drivers on x86-64
-
- * install_steps_gtk.pm: default to 75dpi in order to get anti-aliased
- fonts
-
- * tools/ddcprobe/x86emu/x86emu/prim_asm.h, tools/ddcprobe/x86emu/sys.c,
- tools/ddcprobe/x86emu/x86emu/fpu.h, tools/ddcprobe/x86emu/prim_ops.c,
- tools/ddcprobe/x86emu/ops.c, tools/ddcprobe/x86emu/debug.c,
- tools/ddcprobe/x86emu/x86emu/x86emui.h,
- tools/ddcprobe/x86emu/x86emu/decode.h, tools/ddcprobe/x86emu/validate.c,
- tools/ddcprobe/x86emu/x86emu/prim_ops.h, tools/ddcprobe/x86emu/decode.c,
- tools/ddcprobe/x86emu/x86emu/debug.h, tools/ddcprobe/x86emu/fpu.c,
- tools/ddcprobe/x86emu/LICENSE, tools/ddcprobe/x86emu/Makefile,
- tools/ddcprobe/x86emu/x86emu/ops.h, tools/ddcprobe/x86emu/ops2.c: Add
- x86 CPU emulator for BIOS int10 emulation on non x86 arches.
-
- * drakxtools.spec: update changelog dates to please rpm + add some
- highlights to please titi
- enough amd64 changes merged
-
- * c/smp.c: fix smp detection on x86_64
-
- * tools/ddcprobe/int10/vbios.h, tools/ddcprobe/int10/pci.h,
- tools/ddcprobe/int10/Makefile, tools/ddcprobe/int10/i10_v86.c,
- tools/ddcprobe/int10/i10_int.c, tools/ddcprobe/int10/i10_vbios.c,
- tools/ddcprobe/int10/v86bios.h, tools/ddcprobe/int10/emu_vm86.c,
- tools/ddcprobe/int10/i10_pci.c, tools/ddcprobe/int10/i10_io.c,
- tools/ddcprobe/int10/vm86_struct.h, tools/ddcprobe/int10/README,
- tools/ddcprobe/int10/AsmMacros.h: VGA softbootloader for Linux, uses an
- x86 CPU emulator on non x86 arches.
-
- * Makefile: Handle PCMCIA on x86-64 too. Fix libs glob for live tree.
- Don't ship with
- "cdcom" modules archives in netinstallable trees.
-
- * install_steps.pm: handle nolapic, idle=poll, ide=nodma boot options
-
-2004/08/25 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 604
- (not finished)
-
-2004/08/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl_consts.pm: fix Titi sux hard (add missing comma and spaces,
- remove spurious
- nameserver word)
-
- * network/tools.pm: add missing spaces
- add get_interface_type to guess interface type
-
- * any.pm (selectCountry) fix Pixel broke country selection (bug 10938)
-
- * standalone/drakconnect: use exists
- (manage) use network::tools::get_interface_type instead of
- /etc/sysconfig/drakconnect in order to avoid to recognize ppp0 as both
- modem and adsl (bug 10772)
-
-2004/08/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.13mdk
- merge in lost 10-34.3.100mdk's changelog
-
- * network/adsl_consts.pm: fix siol's vci (hexa formated)
-
- * Makefile.config: add listsupportedprinters
-
-2004/08/24 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
- Updated Simplified Chinese translation
-
-2004/08/24 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: mmodem
-
-2004/08/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * modules/modprobe_conf.pm, modules/any_conf.pm, modules/modules_conf.pm:
- really parse modules file according to its type when reading it (always
- call $conf->read, split modules::any_conf::read in
- modules::any_conf::read_handled)
-
- * printer/detect.pm (local_detect) fix modules conf parsing
-
- * install_steps.pm: drop non-standard tld (localdomain)
-
- * network/network.pm (add2hosts) use difference2
- (add2hosts) make it more readable
- (add2hosts) rework parsing
- i sux
- (configureNetwork2) always add an hostname alias and add it on the
- loopback device (bug 10345)
- (add2hosts) allow multiple aliases per host
- (add2hosts) regexp fixes
-
- * standalone/drakconnect (configure_net) do not ask the user to do an
- inifinite looping in MCC ...
-
- * detect_devices.pm (usbMice, usbWacom) wacom devices can have 'wacom' as
- driver
-
- * mouse.pm, Xconfig/xfree.pm: synaptics touchpad support
-
-2004/08/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated Japanese file; retrieved
- some old translation strings
-
- * share/po/nb.po: updated Bokmål file
- updated Japanese file; retrieved some old translation strings
-
-2004/08/24 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Special treatments for print queues with the "lbp660" and "ml85p"
- drivers. Here the driver communicates directly with the printer instead
- of sending the output to a CUPS backend.
- - Make sure that queues which have special treatment, as for example
- the ones using "lbp660" and "ml85p", do not try to open message indows
- when the print queues are auto-generated by dynamic/hotplug.
- - If the user gets an error/warning message during setup of a queue
- with special treatment, he is automatically put back to the previous
- step in the add-printer wizard.
- - Let warning messages (funktion "ask_warn()") never embed in the
- add-printer wizard, as they have no "Previous" button in the wizard.
- Fixed "ask_from_()" calls in "config_cups()" (Thanks Olivier for
- breaking it in your perl-checker clean-up in 1.119 --> 1.120).
-
- * standalone/listsupportedprinters: Added "listsupportedprinters", a
- simple program which runs the printer model list function of
- printerdrake to get a list of supported printer models on STDOUT (Mainly
- for auto-generation of Mandrakelinux hardware support database).
-
- * standalone/printerdrake: Version number.
-
-2004/08/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm (write) use newly introduced IM2packages() in order to install
- proper
- packages depending on (locale, input method) tuple
- (IM2packages) introduce it in order to know which packages need to be
- installed for a (locale, input method) tuple
-
- * standalone/drakroam: fix crash when config directory does not exist
- (#10935)
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, standalone/drakups, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/fr.po, share/po/ta.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po: typo fix
-
- * network/adsl_consts.pm: add Siol (the bigest ADSL provider in Slovenia)
- in ADSL providers DB
- (Gregor Pirnaver <gregor.pirnaver@mandrakeprinas.org>)
-
-2004/08/23 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/08/23 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 598
- If you chose
-
-2004/08/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * crypto.pm (getPackages) use new mirror structure filepaths
-
- * standalone/net_monitor: watch connection time, not disconnection time
- :-)
-
- * commands.pm (modprobe) use load_with_options instead of load_raw to take
- care of
- module dependencies
-
- * network/network.pm (add2hosts) make it work with sub hostnames
-
-2004/08/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * standalone/drakvpn, standalone/drakclock: no space before question marks
- in English
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: updated pot file
-
- * install_steps_interactive.pm: no space before a question mark in English
-
- * network/netconnect.pm: no space before question marks in English
- no space before a question mark in English
-
-2004/08/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.12mdk
-
- * printer/printerdrake.pm: language names are upcase in english
- aspell's typo fixes
-
- * Xconfig/card.pm (to_raw_X) do not set DRI mode anymore; this is not
- needed anymore
- with PAM
-
- * Makefile.config: add autosetupprintqueues
-
- * network/netconnect.pm, standalone/drakvpn, standalone/drakTermServ,
- standalone/drakbackup, standalone/drakconnect: protocol names, trademark
- and acronyms should be upcase
- aspell's typo fixes
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/da.po, share/po/ca.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/nl.po, share/po/tl.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/uz@Latn.po: language names are upcase in
- english
- protocol names, trademark and acronyms should be upcase
- aspell's typo fixes
-
- * standalone/drakpxe, network/adsl.pm, network/adsl_consts.pm: protocol
- names, trademark and acronyms should be upcase
-
- * standalone/logdrake, standalone.pm, standalone/draksound,
- install_any.pm, standalone/drakxtv, standalone/draksec,
- standalone/harddrake2, install_interactive.pm, any.pm,
- harddrake/sound.pm, services.pm, install_messages.pm,
- standalone/drakfont: aspell's typo fixes
-
-2004/08/22 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
- * share/po/Makefile: adjust Makefile to fit doc module zh_cn
-
-2004/08/22 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/08/21 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/08/21 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/autosetupprintqueues, printer/main.pm,
- printer/printerdrake.pm:
- - Added fully automatic, non-interactive, X-less print queue set up by
- the "autosetupprintqueues" command, preferrably to be started by
- hotplug.
- - Typo correction.
- - Correction of file check for package installation.
-
-2004/08/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: add a fixme comment
- update mac address in network::ethernet::get_eth_cards to be sure iftab
- is always up-to-date
-
- * share/rpmsrate: install kdeutils-klaptop on laptops
-
- * standalone/net_monitor: do not assume internet isn't configured if
- connect scripts do not
- exist (they're obsolete), fix connect button sensitivity
-
- * pkgs.pm (read_rpmsrate) support the TYPE keyword, using
- detect_devices::matching_type()
-
- * install_steps.pm (configureNetwork) net_cnx_* scripts are dead
-
- * share/po/fr.po: update adsl message (partial fix of bug 5778)
-
- * network/ethernet.pm: update mac address in
- network::ethernet::get_eth_cards to be sure iftab is always up-to-date
-
- * network/netconnect.pm (network_on_boot step) do not create ifcfg-ippp0
- quite randomly
- ($after_start_on_boot_step) remove obsolete call to write_cnx_script
- fix nonsense in reconfigure message (#10827)
-
- * detect_devices.pm: add matching_type() to introduce the TYPE keyword in
- rpmsrate
- (supports only laptop type for now)
- (firewire_probe) use sysfs to detect firewire devices (eth1394 should be
- detected now)
- fix nasty typo
-
-2004/08/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * standalone/drakvpn: Fixed English typos
- fixed English typos (no space before colon)
-
- * standalone/drakups: fixed English typo
-
- * share/advertising/05.pl: standardized on using the asterisk as bullet
- list for all advertisings
-
-2004/08/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Use standard mouse wait/normal. Make $cmd_line
- a global. perl_checker fixes.
-
-2004/08/20 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed problem of Brother laser printer on parallel port not showing
- its name in auto-detection result.
-
-2004/08/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: add BuildRequires: rpm-devel b/c of c/stuff.xs
- (Christiaan Welvaart)
-
- * share/po/Makefile: fix drakxtools build
-
- * network/netconnect.pm: rollback (a string was removed so translators
- still have to
- investigate anyway...)
- rollback 'n split in order to reduce pressure on translators
-
-2004/08/19 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/printerdrake: perl_checker fixes
-
- * printer/printerdrake.pm: always close the wizard_window, die when an
- exception has been raised
- perl_checker fixes
- perl_checker fixes
-
-2004/08/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/am.po: updated Amharic file
-
- * share/po/eu.po: updated Basque file
-
- * share/po/sr.po: fixed cyrillic encoding mess with Serbian translations
-
- * share/po/tg.po, share/po/uk.po, share/po/uz.po, share/po/ru.po,
- share/po/mk.po, share/po/bg.po: fixed wrong cyrillic encoding chars
-
-2004/08/19 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Let printer name, description, location be entered after determining
- the model in the add printer wizard
- - Let default print queue name be derived from the model instead of
- being "Printer", "Printer1", ...
- - Simplified print queue name generation in non-interactive printer
- setup
- - Fixed "Previous" button in the test page step of the add printer
- wizard.
-
-2004/08/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.11mdk
-
-2004/08/19 Erwan Velu <erwan at mandrakesoft.com>
-
- * share/rpmsrate: removing OpenIPMI as default
-
-2004/08/19 Olivier Blin <oblin at mandrakesoft.com>
-
- * printer/printerdrake.pm: always close the wizard_window, die when an
- exception has been raised
- perl_checker fixes
- perl_checker fixes
- workaround not to call c::upgrade_utf8 on read-only variables
-
- * standalone/printerdrake: perl_checker fixes
-
- * printer/main.pm: workaround not to call c::upgrade_utf8 on read-only
- variables
- perl_checker fixes
-
-2004/08/19 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: fix keyboarddrake not modifying xkb
-
-2004/08/19 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Move code in another function
-
- * install2: Wrong comment
-
-2004/08/19 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/detect.pm: Fix problem of the "usblp" kernel module not loaded
- before local printer auto-detection.
-
- * printer/main.pm, printer/printerdrake.pm, printer/office.pm,
- printer/gimp.pm:
- - Removed installation of "gimpprint" package, it is part of GIMP
- 2.0.x now.
- - Removed configuration of applications, GIMP and OpenOffice.org are
- patched now so that they do not need configuration of print queues any
- more.
- - Text fix for scanners in HP's multi-function devices.
-
-2004/08/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * printer/main.pm (connectionstr) workaround perl bug
-
- * standalone/draksplash, share/po/bn.po, share/po/ms.po, share/po/sk.po,
- share/po/gl.po, share/po/pt_BR.po, share/po/th.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, network/netconnect.pm, share/po/be.po,
- standalone/drakvpn, standalone/drakboot, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/da.po, share/po/ca.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, standalone/drakedm, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po,
- standalone/drakbug, share/po/it.po, share/po/eu.po, share/po/es.po,
- network/adsl.pm, share/po/lv.po, share/po/hu.po,
- printer/printerdrake.pm, standalone/drakxtv, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po,
- standalone/service_harddrake_confirm, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, security/help.pm, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, standalone/drakperm, share/po/nl.po,
- share/po/tl.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, standalone/scannerdrake,
- share/po/uz@Latn.po: typo fixes
-
- * Makefile.drakxtools: fix drakxtools build (do not include
- ../Makefile.config)
-
- * drakxtools.spec: 10.1-0.11mdk
-
- * share/rpmsrate: reduce non default (aka old default ones) IM priority
-
-2004/08/19 Youcef Rabah Rahal <rahal at arabeyes.org>
-
- * share/po/ar.po: Sync with Arabeyes CVS
-
-2004/08/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm (write_interface_conf) use mac_ieee1394 descriptor in
- iftab for firewire links
-
- * standalone/service_harddrake, harddrake/data.pm: check usb controllers
- on boot
-
-2004/08/18 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: restrict the wait message (so that it's dead when an error
- message is displayed)
- fix typo
- fix typos
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
-
- * standalone/drakboot, install_steps_interactive.pm:
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
-
- * install_steps_gtk.pm: hide $release_notes_scroll by default, it's
- visually cleaner
-
- * ugtk2.pm: fix blino sucks
-
- * detect_devices.pm: perl_checker compliance
-
-2004/08/18 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Make the status field optional in treeviews
-
-2004/08/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm, any.pm: fix default IM setting when switching language
-
- * drakxtools.spec: add bug reference
- 10.1-0.10mdk
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/uz@Latn.po: merge in s/%d/%s/ fix in net_applet's message
-
-2004/08/18 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: restrict the wait message (so that it's dead when an error
- message is displayed)
- fix typo
- fix typos
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
- create install_acpi_pkgs() and use it for auto_installs
-
- * standalone/drakboot, install_steps_interactive.pm:
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
-
- * install_steps_gtk.pm: hide $release_notes_scroll by default, it's
- visually cleaner
-
- * ugtk2.pm: fix blino sucks
-
- * detect_devices.pm: perl_checker compliance
-
- * install_steps.pm: force ACPI on a laptop with recent bios
- create install_acpi_pkgs() and use it for auto_installs
-
-2004/08/18 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Make the status field optional in treeviews
-
-2004/08/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm, any.pm: fix default IM setting when switching language
-
- * harddrake/data.pm: add PCMCIA controllers class
-
- * drakxtools.spec: 10.1-0.10mdk
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/uz@Latn.po: merge in s/%d/%s/ fix in net_applet's message
-
-2004/08/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * harddrake/data.pm: use network::ethernet::get_eth_categories in ethernet
- detector
-
-2004/08/18 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: restrict the wait message (so that it's dead when an error
- message is displayed)
- fix typo
- fix typos
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
- create install_acpi_pkgs() and use it for auto_installs
-
- * standalone/drakboot, install_steps_interactive.pm:
- - any::setupBootloader() used to call bootloader::install() whereas
- install_steps_interactive::setupBootloader() could call it once again
- (but this code seems dead though)
- - create any::installBootloader() out of what was done in the end of
- any::setupBootloader() but also in install_steps_interactive and
- drakboot (which handled the error that could occur in
- bootloader::install())
-
- * install_steps_gtk.pm: hide $release_notes_scroll by default, it's
- visually cleaner
-
- * ugtk2.pm: fix blino sucks
-
- * detect_devices.pm: perl_checker compliance
- use dmidecode to detect isLaptop()
-
- * .perl_checker: Getopt::Long is now faked
-
- * install_steps.pm: force ACPI on a laptop with recent bios
- create install_acpi_pkgs() and use it for auto_installs
-
-2004/08/18 Reinout van Schouwen <reinout at cs.vu.nl>
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/08/18 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Make the status field optional in treeviews
-
-2004/08/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: add PCMCIA controllers class
-
-2004/08/17 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * c/smp-dmi.c: rework smp-dmi, add dmi memory detection suppport
-
- * c/stuff.xs.pl: revert my last bad commit
- rework smp-dmi, add dmi memory detection suppport
-
-2004/08/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: get rid off the 'ifcfg-Manually load a driver'
- file ...
- use network::ethernet::get_eth_categories() when needed
-
- * standalone/net_applet: fix titi sux, fix I sux
- use network::tools::get_internet_connection
-
- * network/adsl.pm: fix sagem pty quoting
- sagem: don't run pppoa if the ethernet interface isn't created and use
- a reduced timeout (1 second) so that boot doesn't take forever if
- modem can't be synchronized (maxfail * timeout was equal to 25
- minutes)
-
- * network/tools.pm: add new functions to make internet connection tests
- easier
- drop network::tools::reread_net_conf
-
- * network/ethernet.pm: use network::ethernet::get_eth_categories() when
- needed
- add network::ethernet::get_eth_categories
- drop network::ethernet::conf_network_card_backend
- (conf_network_card_backend) set NET_INTERFACE too
-
- * network/network.pm: use network::ethernet::get_eth_categories() when
- needed
- (easy_dhcp) probe all network sub categories
- (easy_dhcp) don't use network::ethernet::conf_network_card_backend
- (easy_dhcp) sort devices and keep only eth[0-9]+ devices
- (easy_dhcp) allow configured interface not to be eth0 and make sure it
- uses ethernet
- (write_interface_conf) use unspec descriptor in iftab if link isn't
- ether
- fix suckiness (write proper iftab)
-
-2004/08/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bs.po, share/po/cs.po: updated Bosnian and Czech files
-
-2004/08/17 Pixel <pixel at mandrakesoft.com>
-
- * standalone/bootloader-config: better error handling
-
- * install2.pm, install_steps_interactive.pm: $::corporate is dead
- get release_notes at beginning of
- install_steps_interactive::acceptLicense(), even when
- useless_thing_accepted
-
- * tools/make_mdkinst_stage2: don't remove /usr/share/locale anymore, we
- use the same locale for all langs
-
- * bootloader.pm:
- - fix short label with extension. eg: have "linux-smp" instead of
- "linuxsmp"
- - this fixes choosing the default specialised kernel
-
- * fs/type.pm: cleanly handle the case when {pt_type} is 0
-
- * share/gen_locales.sh, share/gen_locales.pl, share/list, share/Makefile,
- Makefile:
- - don't generate locales.tar.bz2, do the same directly (since it's now
- quite simple)
- - when using ramdisk, we now have all the locales, no need to handle
- it specially
-
- * crypto.pm: $::corporate is dead
-
- * lang.pm: lang::list() is unused, dropping it
- - don't generate locales.tar.bz2, do the same directly (since it's now
- quite simple)
- - when using ramdisk, we now have all the locales, no need to handle
- it specially
-
- * install_steps_gtk.pm: add release notes during install of packages
- remove dead code
-
-2004/08/17 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Display the list of media already taken into accounts
- when asking for
- supplementary media
- perl_checker fix
- Supplementary cd-roms don't need to have a rpmsrate / compssUsers.pl
-
- * pkgs.pm: Log the reason why the rpms aren't installed
-
-2004/08/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.9mdk
-
- * network/network.pm (easy_dhcp) handle pcmci card too
-
- * share/rpmsrate: fix rpmsrate regarding s2u
-
- * share/po/fr.po: update
-
-2004/08/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_steps_interactive.pm: alsaconf is in alsa-utils package (bug
- 10358)
-
- * mdk-stage1/probing.c (probe_that_type) do not prompt in
- discovered_device() before loading usb controllers (they're not network
- devices)
-
- * network/netconnect.pm: NET_INTERFACE should be ppp0 for pppoe too
- add reminder about external ISDN modems (special init string)
-
- * network/adsl.pm: do not write noipdefault in /etc/ppp/peers/ppp0 for
- pptp connections
-
- * standalone/drakroam: merge with waproamd version
- add comments from waproamd version
-
-2004/08/16 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: handle /etc/X11/xorg.conf
-
- * Xconfig/various.pm: we don't use XF86Config-4 anymore
-
-2004/08/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm (adsl_probe_info) net_cnx_up is obsolete, pptp info is
- available in
- ppp config files
- (adsl_conf_backend) don't write net cnx scripts, internet service
- should be dead
- remove useless assignment (already done in adsl_protocol step)
- fix pppoe with sagem (write ETH=`/usr/sbin/eaglectrl -i` instead of
- ETH=sagem)
-
-2004/08/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: changed a keyboard name
-
-2004/08/16 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/card.pm: replace freeDriver with freedriver (stage2 para are
- lower cased)
- fix pixel sucks
- replace freeDriver with freedriver (stage2 para are lower cased)
-
- * install2.pm: replace freeDriver with freedriver (stage2 para are lower
- cased)
- modules::load doesn't accept options anymore, use
- modules::load_with_options() (bugzilla #10778)
- replace freeDriver with freedriver (stage2 para are lower cased)
-
- * bootloader.pm: help debugging detectloader
-
- * install_any.pm: better URLPREFIX parsing regexp (handle URLPREFIX =
- "http://leia")
- replace freeDriver with freedriver (stage2 para are lower cased)
- replace freeDriver with freedriver (stage2 para are lower cased)
-
- * share/compssUsers.pl: field is {default_selected}, not {selected}
-
- * modules.pm: add load_with_options()
-
- * network/netconnect.pm: don't configure firewall after configuring
- network during install
- (in summary you can configure firewall directly)
-
-2004/08/15 José JORGE <jjorge at free.fr>
-
- * share/po/pt.po: beta rush
-
-2004/08/15 Keld Jørn Simonsen <keld at dkuug.dk>
-
- * share/po/da.po: updates
- indexhtml/po/da.po soft/mdkhtmlbrowser/po/da.po
- soft/mdkonline/po/da.po soft/menudrake/po/da.po
- soft/rpmdrake/po/da.po soft/urpmi/po/da.po
- soft/userdrake2/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2004/08/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/vi.po: updated Vietnamese file
-
- * share/po/et.po: updated Estonian file
-
- * share/po/it.po, share/po/help-it.pot: updated Italian file
-
-2004/08/14 Funda Wang <fundawang at linux.net.cn>
-
- * share/po/help_xml2pm.pl: zh_CN -> zh_cn to fit CVS module
-
-2004/08/14 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 591
- Generate auto
-
-2004/08/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ky.po, share/po/ms.po, share/po/id.po, share/po/mk.po,
- share/po/fur.po, share/po/th.po, share/po/is.po, share/po/sl.po,
- share/po/hi.po, share/po/zh_TW.po, share/po/hr.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/ga.po, share/po/be.po, share/po/mn.po,
- share/po/am.po, share/po/ko.po, share/po/sr.po, share/po/he.po,
- share/po/lt.po, share/po/eo.po, share/po/lv.po, share/po/el.po: fixed
- special "<control>" entries;
- included translations for various standard menu entries (File, Edit,
- Help,...)
-
- * share/po/ta.po: small fix
- fixed special "<control>" entries;
- included translations for various standard menu entries (File, Edit,
- Help,...)
-
- * share/po/nb.po, share/po/uz.po, share/po/uz@Latn.po: fixed shortcut
- entries ("<control>...")
-
- * share/po/tg.po: fixed shortcut entries ("<control>...")
- fixed special "<control>" entries;
- included translations for various standard menu entries (File, Edit,
- Help,...)
-
- * share/po/bn.po: fixed special "<control>" entries;
- included translations for various standard menu entries (File, Edit,
- Help,...)
- updated Bengali file
-
-2004/08/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: misc cleanups
- make perl_checker happy
- perl_checker fix
- (drakboot --splash) add enable_framebuffer to allow to choose a video
- mode if boot isn't graphical
-
- * any.pm: add and use bootloader::set_append_netprofile() and
- bootloader::get_append_netprofile()
- remove old linuxconf profile code
- (setupBootloader__entries) allow to choose net profile in advanced mode
-
- * bootloader.pm: add and use bootloader::set_append_netprofile() and
- bootloader::get_append_netprofile()
- remove old linuxconf profile code
- add remove_append_dict
-
-2004/08/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: changed arabic font to roya.ttf (from
- fonts-ttf-arabic-farsi) which
- also cover Farsi (fa).
- updated Nimbus Sans L to cooker version, and edited it to add
- the two missing letters needed to full latin and cyrillic coverage
- (the two letters were latin schwa (for Azeri) and cyrillic che
- with descender (for Tajik))
-
- * lang.pm: enabled Turkmen and Tatar; prepared various other languages
- (waiting for
- lang-*.png pixmap).
- updated the kde-i18n list with the newly available languages
-
-2004/08/13 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm:
- - bootloader::remove_append_dict() is not useful,
- bootloader::set_append() can do the same
- - don't modify anything before "Ok" is clicked
- - set_append with $netprofile eq '' will remove parameter PROFILE=xxx,
- which is what we want
-
- * any.pm: perl_checker compliance
- - bootloader::remove_append_dict() is not useful,
- bootloader::set_append() can do the same
- - don't modify anything before "Ok" is clicked
- - set_append with $netprofile eq '' will remove parameter PROFILE=xxx,
- which is what we want
-
- * install_steps_gtk.pm: perl_checker compliance
- - don't use compssUsers anymore, use compssUsers.pl
- - code to display compssUsers choices is now in compssUsers.pl
- - {compssUsers} is now a list instead of a hash, and so drop
- {compssUsersSorted}
- - rename {compssUsersChoice} to {rpmsrate_flags_chosen} (better name)
- - i18n_compssUsers is no more needed, add share/compssUsers.pl* to
- ALLPMS
-
- * share/compssUsers.pl, Makefile.config, share/compssUsers, pkgs.pm,
- install2.pm, share/po/Makefile, install_steps.pm,
- share/po/i18n_compssUsers, install_any.pm, Makefile,
- install_steps_interactive.pm:
- - don't use compssUsers anymore, use compssUsers.pl
- - code to display compssUsers choices is now in compssUsers.pl
- - {compssUsers} is now a list instead of a hash, and so drop
- {compssUsersSorted}
- - rename {compssUsersChoice} to {rpmsrate_flags_chosen} (better name)
- - i18n_compssUsers is no more needed, add share/compssUsers.pl* to
- ALLPMS
-
-2004/08/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: One further step towards the ftp supplementary media
-
-2004/08/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/cy.po: update
- update
-
- * any.pm (set_autologin) parameters are optionnal, writing empty variables
- in
- kdmrc and the like means disabled autologin
-
- * share/po/fr.po: update
-
- * standalone/drakboot (updateAutologin) clean any::set_autologin() call
-
-2004/08/13 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dis-06.pl, share/advertising/dis-05.png,
- share/advertising/25.pl, share/advertising/dwd-08.pl,
- share/advertising/pwp-02.pl, share/advertising/dwd-04.pl,
- share/advertising/03.png, share/advertising/25.png,
- share/advertising/13-b.png, share/advertising/pwp-05.png,
- share/advertising/dis-11.pl, share/advertising/dwd-04.png,
- share/advertising/30.png, share/advertising/dis-10.pl,
- share/advertising/ppp-11.pl, share/advertising/27.pl,
- share/advertising/14.pl, share/advertising/dwd-03.png,
- share/advertising/08.pl, share/advertising/dis-05.pl,
- share/advertising/22.pl, share/advertising/dis-03.png,
- share/advertising/10.pl, share/advertising/dwd-01.pl,
- share/advertising/18.pl, share/advertising/dwd-08.png,
- share/advertising/dis-01.pl, share/advertising/pwp-02.png,
- share/advertising/28.png, share/advertising/09.png,
- share/advertising/ppp-06.pl, share/advertising/29.png,
- share/advertising/ppp-07.png, share/advertising/list-dwd,
- share/advertising/06.png, share/advertising/pwp-09.png,
- share/advertising/dis-03.pl, share/advertising/dwd-09.png,
- share/advertising/01.png, share/advertising/list-dis,
- share/advertising/pwp-01.png, share/advertising/02.png,
- share/advertising/15.png, share/advertising/23.png,
- share/advertising/29.pl, share/advertising/ppp-03.pl,
- share/advertising/07.pl, share/advertising/04.png,
- share/advertising/13-a.png, share/advertising/09.pl,
- share/advertising/17.pl, share/advertising/13-b.pl,
- share/advertising/ppp-01.png, share/advertising/04.pl,
- share/advertising/ppp-08.pl, share/advertising/dwd-06.pl,
- share/advertising/ppp-05.png, share/advertising/ppp-02.pl,
- share/advertising/12.png, share/advertising/24.pl,
- share/advertising/12.pl, share/advertising/26.pl,
- share/advertising/dis-09.png, share/advertising/16.png,
- share/advertising/ppp-11.png, share/advertising/14.png,
- share/advertising/list-pwp, share/advertising/ppp-09.png,
- share/advertising/dis-06.png, share/advertising/dis-11.png,
- share/advertising/10.png, share/advertising/dis-04.png,
- share/advertising/19.pl, share/advertising/pwp-10.png,
- share/advertising/05.pl, share/advertising/ppp-05.pl,
- share/advertising/ppp-01.pl, share/advertising/dis-09.pl,
- share/advertising/pwp-03.pl, share/advertising/dwd-05.png,
- share/advertising/pwp-04.pl, share/advertising/20.png,
- share/advertising/dis-10.png, share/advertising/dis-02.pl,
- share/advertising/dwd-07.png, share/advertising/dis-04.pl,
- share/advertising/ppp-06.png, share/advertising/20.pl,
- share/advertising/02.pl, share/advertising/list-ppp,
- share/advertising/21.png, share/advertising/pwp-07.pl,
- share/advertising/pwp-08.png, share/advertising/07.png,
- share/advertising/26.png, share/advertising/dwd-02.pl,
- share/advertising/30.pl, share/advertising/ppp-09.pl,
- share/advertising/16.pl, share/advertising/pwp-06.png,
- share/advertising/dis-07.pl, share/advertising/01.pl,
- share/advertising/drweb.pl, share/advertising/dwd-05.pl,
- share/advertising/drweb.png, share/advertising/ppp-10.pl,
- share/advertising/pwp-07.png, share/advertising/pwp-09.pl,
- share/advertising/pwp-04.png, share/advertising/pwp-05.pl,
- share/advertising/dis-01.png, share/advertising/23.pl,
- share/advertising/dwd-06.png, share/advertising/dis-08.png,
- share/advertising/ppp-08.png, share/advertising/19.png,
- share/advertising/dis-08.pl, share/advertising/dwd-02.png,
- share/advertising/pwp-06.pl, share/advertising/27.png,
- share/advertising/dis-07.png, share/advertising/22.png,
- share/advertising/ppp-03.png, share/advertising/dwd-03.pl,
- share/advertising/28.pl, share/advertising/dis-02.png,
- share/advertising/pwp-03.png, share/advertising/dwd-07.pl,
- share/advertising/24.png, share/advertising/03.pl,
- share/advertising/06.pl, share/advertising/ppp-07.pl,
- share/advertising/13-a.pl, share/advertising/11.png,
- share/advertising/ppp-04.png, share/advertising/pwp-10.pl,
- share/advertising/ppp-10.png, share/advertising/18.png,
- share/advertising/11.pl, share/advertising/15.pl,
- share/advertising/21.pl, share/advertising/17.png,
- share/advertising/05.png, share/advertising/dwd-01.png,
- share/advertising/ppp-04.pl, share/advertising/pwp-01.pl,
- share/advertising/ppp-02.png, share/advertising/pwp-08.pl,
- share/advertising/08.png, share/advertising/dwd-09.pl: New ad's for 10.1
-
-2004/08/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/rpmsrate: add list of providers for modem connexions in INSTALL
- section
-
- * network/network.pm (write_interface_conf) do not write undefined MAC
- address in iftab
-
- * any.pm: add and use bootloader::set_append_netprofile() and
- bootloader::get_append_netprofile()
- remove old linuxconf profile code
- (setupBootloader__entries) allow to choose net profile in advanced mode
-
- * standalone/drakvpn: perl_checker fix (add missing spaces)
- do not assume drakvpn is already configured if the tunnels file is
- made of comments only
-
- * ugtk2.pm: ctrl-alt-delete allows to restart install
-
- * bootloader.pm: add and use bootloader::set_append_netprofile() and
- bootloader::get_append_netprofile()
- remove old linuxconf profile code
- add remove_append_dict
-
- * standalone/drakupdate_fstab: drakupdate_fstab: add debug mode that dumps
- argv, device list and fstab
- to make bug reports easier
- (device_name_to_entry) remove unused $variable
- (device_name_to_entry) if device looks like a devfs device, set
- $e->{devfs_device} to $name even if the device wasn't found in devices
- list (it helps in case the device has been removed in del mode)
- (device_name_to_entry) remove useless assignment
- (device_name_to_entry) in non devfs case, $e->{device} always equals
- to $name, move this test in devfs case
- (device_name_to_entry) don't do brain twisted things
- ($e->{prefix} || $e->{device}) equals $prefix
- $prefix . $nb equals $name
- (device_name_to_entry) fix indentation
- (device_name_to_entry) define $nb locally
- (device_name_to_entry) recompute $e->{device} only when needed
- (device_name_to_entry) do devfs things where they should be done
- (device_name_to_entry) define $e->{devfs_prefix} if entry looks looks
- like a devfs one but isn't found in device list (else our computed
- $e->{devfs_device} will be crappy)
-
-2004/08/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: changed arabic font to roya.ttf (from
- fonts-ttf-arabic-farsi) which
- also cover Farsi (fa).
- updated Nimbus Sans L to cooker version, and edited it to add
- the two missing letters needed to full latin and cyrillic coverage
- (the two letters were latin schwa (for Azeri) and cyrillic che
- with descender (for Tajik))
-
-2004/08/13 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm:
- - bootloader::remove_append_dict() is not useful,
- bootloader::set_append() can do the same
- - don't modify anything before "Ok" is clicked
- - set_append with $netprofile eq '' will remove parameter PROFILE=xxx,
- which is what we want
-
- * install_steps.pm:
- - don't use compssUsers anymore, use compssUsers.pl
- - code to display compssUsers choices is now in compssUsers.pl
- - {compssUsers} is now a list instead of a hash, and so drop
- {compssUsersSorted}
- - rename {compssUsersChoice} to {rpmsrate_flags_chosen} (better name)
- - i18n_compssUsers is no more needed, add share/compssUsers.pl* to
- ALLPMS
- - move installing acpi and acpid directly in any::setupBootloader()
- instead of doing
- it in summaryAfter(), that way acpi and acpid are installed in drakboot
- (bugzilla #10760)
- - if no acpi parameter, don't try installing acpi & acpid (fix for
- ppc)
-
- * install_steps_gtk.pm: perl_checker compliance
- - don't use compssUsers anymore, use compssUsers.pl
- - code to display compssUsers choices is now in compssUsers.pl
- - {compssUsers} is now a list instead of a hash, and so drop
- {compssUsersSorted}
- - rename {compssUsersChoice} to {rpmsrate_flags_chosen} (better name)
- - i18n_compssUsers is no more needed, add share/compssUsers.pl* to
- ALLPMS
-
- * share/compssUsers.pl, Makefile.config, share/compssUsers, pkgs.pm,
- install2.pm, share/po/Makefile, share/po/i18n_compssUsers,
- install_any.pm, Makefile, install_steps_interactive.pm:
- - don't use compssUsers anymore, use compssUsers.pl
- - code to display compssUsers choices is now in compssUsers.pl
- - {compssUsers} is now a list instead of a hash, and so drop
- {compssUsersSorted}
- - rename {compssUsersChoice} to {rpmsrate_flags_chosen} (better name)
- - i18n_compssUsers is no more needed, add share/compssUsers.pl* to
- ALLPMS
-
- * any.pm: perl_checker compliance
- - bootloader::remove_append_dict() is not useful,
- bootloader::set_append() can do the same
- - don't modify anything before "Ok" is clicked
- - set_append with $netprofile eq '' will remove parameter PROFILE=xxx,
- which is what we want
- - move installing acpi and acpid directly in any::setupBootloader()
- instead of doing
- it in summaryAfter(), that way acpi and acpid are installed in drakboot
- (bugzilla #10760)
- - if no acpi parameter, don't try installing acpi & acpid (fix for
- ppc)
-
-2004/08/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm: perl_checker fix
- Concision, good (says perl_checker)
- Try to copy associated synthesis when a custom hdlist path is given
-
- * standalone.pm: Remove a perl compilation warning
-
- * install_steps.pm, install_steps_interactive.pm: Don't ask for the
- selection of supplementary media in non-interactive
- installs.
-
- * install_any.pm: One further step towards the ftp supplementary media
- Don't ask for the selection of supplementary media in non-interactive
- installs.
-
-2004/08/12 Funda Wang <fundawang at linux.net.cn>
-
- * lang.pm: Hong Kong -> Hong Kong SAR
-
-2004/08/12 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/gen_locales.pl: revived, still needed since installer can't make
- symlinks on read-only stage2, and we can't easily workaround it by
- modifying LC_* variables
-
- * network/netconnect.pm: kill unused variables
- kill deprecated parts
- set both NET_DEVICE and NET_INTERFACE in automatic lan configuration
- (network install)
- set NET_DEVICE and NET_INTERFACE for lan and adsl dhcp/manual
- connections
-
- * share/gen_locales.sh: still needed since installer can't make symlinks
- on read-only stage2,
- and we can't easily workaround it by modifying LC_* variables
-
- * network/network.pm: write interface MAC address in iftab
- errm, don't commit crappy gnome proxy handling for now
- (write_interface_conf) simplify HWADDR assignment and define
- $mac_address (will be used later for /etc/iftab)
-
- * mdk-stage1/init.c: restart forked process if it exits with
- exit_value_restart as return
- code (thanks to Rafael for the choice of its value, 0x35 is the
- translation of RS, abbreviation of ReStart, in his local l33t dialect,
- and happens to be 53 in its decimal form, which is quite nice)
- reorder else if blocks, it's useless to do two times the same test
- (WEXITSTATUS(wait_status) == exit_value_proceed)
- use a do while loop to wait for forked process
-
-2004/08/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: fixed tamil font (removed wrong unicode values for
- some glyphs);
- improved fonts.conf
-
- * share/po/help-zh_CN.pot, share/po/bn.po, share/po/ms.po, share/po/sk.po,
- share/po/gl.po, share/po/pt_BR.po, share/po/th.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/be.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/nb.po, share/po/ky.po,
- share/po/uz.po, share/po/help-ru.pot, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/help-de.pot, share/po/mn.po,
- share/po/am.po, share/po/lt.po, share/po/cy.po, share/po/help-it.pot,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/nl.po, share/po/help-fr.pot, share/po/tl.po,
- share/po/de.po, share/po/help-es.pot, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * standalone/drakbug: fixed English string
-
-2004/08/12 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: enhance based on perl_checker suggestion, but not using it :)
-
- * .perl_checker: standalone doesn't need to be blacklisted
-
- * resize_fat/io.pm: remove check_mounted(), it is done by diskdrake
-
- * share/po/help-zh_CN.pot, share/po/help-fr.pot, share/po/help-de.pot,
- share/po/help-ru.pot, share/po/help-es.pot, share/po/help-it.pot: update
- from doc (/cooker/doc/manualB)
-
- * help.pm: fix bad %%
- update from doc (/cooker/doc/manualB)
-
- * share/po/help_xml2pm.pl:
- - nicer error message for help.pm N parameters error
- - handle <sect3> (and also <option>)
-
-2004/08/12 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: First stab at supporting several hdlists on a
- supplementary CD
-
-2004/08/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/nn.po: update (Karl Ove Hufthammer <karl@huftis.org>)
-
- * standalone/drakbug: better let pango/Gtk+ do the proper wrapping that
- let translator
- manually insert end of lines which will badly look depending on
- current theme and font settings
-
- * standalone/net_monitor: let's be more l10n-friendly
- fix default connection time (Fabrice FACORAT)
-
- * tools/cvslog2changelog.pl: sync with soft/common/username
-
- * standalone/draksec (basic_seclevel_explanations) explain
- (basic_seclevel_explanations)
- - handle "bold" value for "weight"
- - display labels as bold
-
- * share/po/br.po, share/po/fr.po: update
-
- * share/rpmsrate: install driver and firmware for madwifi cards
-
- * share/po/sv.po: typo fix (#10713, Robin Rosenberg
- <robin.rosenberg@dewire.com>)
- fix missing translations (#10711, Robin Rosenberg
- <robin.rosenberg@dewire.com>)
- big swedish update thanks to Robin Rosenberg
- <robin.rosenberg@dewire.com>
-
-2004/08/12 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: standalone doesn't need to be blacklisted
-
- * resize_fat/io.pm: remove check_mounted(), it is done by diskdrake
- perl_checker compliance
-
- * security/msec.pm: use difference2() as suggested by new perl_checker
- warning
- cleanup
- perl_checker compliance
-
- * lang.pm: cleanup
-
-2004/08/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/sv.po: big swedish update thanks to Robin Rosenberg
- <robin.rosenberg@dewire.com>
-
- * share/rpmsrate: install driver and firmware for madwifi cards
-
-2004/08/11 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakhelp:
- - perl_checker fixes
- - use webclient-kde instead of konqueror
- - add epiphany browser
-
-2004/08/11 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakroam: rewrite write_config for wlandetect to use output()
- regexp cleanup (bis)
- regexp cleanups
- remove unused variable
- use each_index
- introduce and use isRoamingRunning to detect if the roaming daemon is
- running (woah, sector clear, titi is gone home, no more cvs conflicts)
- prepare for multiple roaming daemons support
- run UpdateStatus after a timeout in case 'ps' output isn't updated
- immediately
- make titi enhancement actually work
- use standalone
- only one item can be selected in the known list
- use a lower scan interval, as requested by Austin
- use cat_, remove unneeded local $_, try to fix ConnectNow
-
- * share/gen_locales.pl: unused since locale links are done by the
- installer
-
- * share/gen_locales.sh: do not run gen_locales.pl anymore
- (locale links are done by the installer)
-
- * lang.pm: main charset is now en_US.UTF-8
-
- * standalone/drakbug: comment unused variable
- update product list and fix case (bugzilla is case sensitive)
- fix product, component and version for bugzilla
- reorganize to use the same upload info message for Anthill and Bugzilla
- fix bugzilla url
-
-2004/08/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: rewrite handling of defautl locale
-
- * share/po/es.po: updated Spanish file
- s/XFree/Xorg/
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: s/XFree/Xorg/
-
-2004/08/11 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: new perl_checker fake those packages
-
- * any.pm, standalone/harddrake2, interactive/stdio.pm, standalone.pm,
- pkgs.pm, lang.pm, standalone/service_harddrake, install_steps.pm,
- install_any.pm, ugtk2.pm: perl_checker compliance
-
-2004/08/11 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Support for ftp supplementary media
- Restore ability to have supplementary http media.
- Fix http installs.
- Misleading comment
-
-2004/08/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10.1-0.8mdk
-
- * bootloader.pm (mkinitrd) log failled command
-
- * standalone/drakroam: perl_checker hints
- typo fix
- (Dialog) according to mandrake guidelines we should not use stock icon
- (AddNet) help perl_checker in checking callers
- (UpdateStatus) simplify
- simplify through run_program::get_stdout()
- expand parenthesises
- (UpdateAvailable) probably better
- (UpdateAvailable) localize variable
- (Dialog) indent
- (Dialog) enable checking call signature
- (Dialog) simplify: reuse create_scrolled_window()
- (Dialog) fix it (got broken on ugtk2 port)
- perl_checker fixes
-
- * Makefile.config: install drakroam
-
- * standalone.pm: perl_checker cleanups
-
- * share/rpmsrate: install firmware for centrino if needed
-
- * .perl_checker: blacklist Gtk2::SimpleList for drakroam
-
-2004/08/10 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: update
-
-2004/08/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: remove unused variable in network::netconnect,
- thanks perl_checker
- add some FIXME comments in network::netconnect
- network::tools::connect_prog shouldn't be used/written anymore now
- kill some more connect/disconnect_file
-
- * standalone/drakroam: perl_checker compliance
- ugtk2 port
- fix roaming detection
- initial import of wlandetect version, from Austin Action
-
- * standalone/drakconnect: network::tools::connect_prog is really dead now
-
-2004/08/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/locales-skeleton.tar.bz2: updated use UTF-8 locales for everything
-
- * share/gen_locales.pl, share/gen_locales.sh: using "en_US.UTF-8" instead
- of "UTF-8" as model
- updated use UTF-8 locales for everything
-
-2004/08/10 Pixel <pixel at mandrakesoft.com>
-
- * tools/make_mdkinst_stage2, rescue/make_rescue_img: umount mount point
- instead of umounting the loopback file
- (works better when /etc/mtab is /proc/mounts)
-
- * share/rpmsrate: don't install devfsd by default, use udev instead
-
- * Xconfig/various.pm, Xconfig/card.pm: s/XFree/Xorg/
-
- * any.pm: create /etc/udev/conf.d/xxx.conf
-
- * diskdrake/interactive.pm: no {fs_type} doesn't mean the type invalid
- no {pt_type} doesn't mean Empty
-
- * network/adsl.pm, pkgs.pm, install2.pm, bootloader.pm: mount /proc, /sys
- and /proc/usb/usb in $prefix ASAP instead of doing it at various places
-
- * fs/type.pm: when there is no {pt_type}, favour the one fs_type2pt_type
- favours
-
- * raid.pm: remove dead code
-
-2004/08/10 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/08/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: URLPREFIX is not set if the main media isn't
- http, so the prefix must be
- passed manually.
-
-2004/08/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/net_monitor: add a horizontal separator in stats to prevent
- visual disguts between
- supposed non aligned labels
- fix looking aka vertical alignment of labels (Fabrice FACORAT
- <f.faber-pro@ifrance.com>, #10300)
- fix packing (Fabrice FACORAT <f.faber-pro@ifrance.com>, #10300)
-
- * tools/cvslog2changelog.pl: list a few more contributors
-
- * share/rpmsrate: add s2u so that hostname changes do not fsck the desktop
- install udev by default
-
- * standalone/drakroam (AddNet, WriteConfig) do not bother accessing arrays
- like in C
- perl_checker cleanups (GUI code actually wasn't touched in order to
- help olivier merge his ugtk2 porting work)
-
-2004/08/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: updated fonts (added devanagari and tamil)
-
-2004/08/10 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: more logs
-
- * network/adsl.pm: mounting device "none" is cleaner
-
- * share/rpmsrate: don't install devfsd by default, use udev instead
-
- * modules/modprobe_conf.pm, modules/modules_conf.pm: perl_checker
- compliance
- internally keep module names according to what we configure (and our
- kernel, 2.4 or 2.6)
-
- * modules.pm, modules/any_conf.pm: internally keep module names according
- to what we configure (and our kernel, 2.4 or 2.6)
-
- * Xconfig/various.pm, Xconfig/card.pm: s/XFree/Xorg/
-
-2004/08/10 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: install_urpmi(): set up the right with_hdlist for
- urpmi.cfg
- Back to first medium after having added a supplementary one.
- Set prefix for http supplementary media, since $URLPREFIX is not
- defined.
-
- * crypto.pm: Adapt to the new mirror structure: RPMs are no longer in a
- RPMS subdirectory
-
-2004/08/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: install udev by default
-
-2004/08/09 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/08/09 fwang
-
- * share/advertising/dis-11.pl, share/advertising/pwp-10.pl,
- share/advertising/dwd-08.pl, share/advertising/ppp-11.pl:
- s/MandrakeExpert/Mandrakeexpert
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/08/09 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 556
- The Mandrakelinux
-
-2004/08/09 jjorge
-
- * share/po/pt.po: saraiva corrected
- saraiva
-
-2004/08/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: in netconnect::(start|stop)_internet, use
- (connect|disconnect)_backend
-
- * install_any.pm: use new ISO images volume name (#10543)
- fix regexp (do not strip paths ending in .*iso)
-
- * mdk-stage1/directory.c: typo fix (from Olivier Borowski)
-
-2004/08/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
- updated pot file
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * share/fonts.tar.bz2: replaced arabic and bengali fonts
-
- * share/po/ar.po: updated Arabic file
- updated pot file
-
- * share/po/bn.po: updated Bengali file
- updated pot file
-
-2004/08/09 Pixel <pixel at mandrakesoft.com>
-
- * interactive/http.pm: use $F instead of *F
- prototype perl_checker compliance
-
- * network/network.pm: perl_checker prototype compliance
- perl_checker compliance + cleanup
-
- * ugtk2.pm, standalone/drakxtv, standalone/localedrake: we never pass a
- prefix to lang::read() which is always use in standalone,
- so use $::prefix and don't pass a prefix anymore
-
- * any.pm:
- - move the "Input method:" at the end (titi did put it in the middle
- for OptionMenu which is crap)
- - need updating the "changed" callback since there is a new entry
-
- * share/rpmsrate: remove awesfx from "SYSTEM 2" otherwise it gives a fatal
- error
-
- * diskdrake/interactive.pm: help perl_checker know the $all_hds *is* used
-
- * install_steps_auto_install.pm, install2.pm: correctly call errorInStep()
-
- * fsedit.pm: flags is optional
-
- * lang.pm: prototype compliance with perl_checker
- we never pass a prefix to lang::read() which is always use in
- standalone,
- so use $::prefix and don't pass a prefix anymore
-
- * Xconfig/various.pm:
- - adapt prototype of runlevel() to its use
- - bootloader::read() needs fstab
-
- * install_steps.pm: correctly call errorInStep()
- fix call to bootloader::read()
-
- * install_any.pm: fix typo
- - fix unlockCdrom()
- - ejectCdrom() prototype compliance with perl_checker
-
- * fs.pm: allow 192.168.1.1:/export
-
-2004/08/09 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Select supplementary medium
- Begin the support for installations over multiple media.
-
- * share/po/pt.po: Remove conflict marker and duplicate entries
-
-2004/08/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakperm: prefer obj->new rather than new obj for gtk+
- widgets
- - perl_checker cleanups
- - reuse cat_() where opencoded
-
- * share/po/fr.po: update
- update
-
- * standalone/logdrake, standalone/drakfloppy,
- Xconfig/resolution_and_depth.pm, standalone/drakconnect,
- standalone/drakbug, standalone/drakTermServ, standalone/net_monitor:
- prefer obj->new rather than new obj for gtk+ widgets
-
- * ugtk2.pm (gtkappend_page) title is optonnal and perl_checker is loudly
- complaining outdoor...
-
- * standalone/drakautoinst: prefer obj->new rather than new obj for gtk+
- widgets
- perl_checker cleanup
-
- * standalone/net_applet: developers should always run their stuff with the
- strict pragma
- prefer obj->new rather than new obj for gtk+ widgets
- (checkNetwork) do not die when gateway canot be guessed (Joe Bolin
- <sopwithcamel@charter.net>)
- else the applet dies never to be heard from again until the next login
- b/c with DHCP connections, the gateway information is lost when the
- network is manually brought down.
- Indeed gateway is not needed for direct connection through crossover
- cable.
- (setState) fix status toolip
- allow multiple instances, but only one per user (Joe Bolin
- <sopwithcamel@charter.net>)
-
- * standalone/draksec (basic_seclevel_explanation) handle any tags ala
- label
- add hint about ala LaTeX strings for translators
- prefer obj->new rather than new obj for gtk+ widgets
-
- * standalone/drakbackup: prefer obj->new rather than new obj for gtk+
- widgets
- (find_files_to_restore) cleanups
-
- * harddrake/sound.pm, install_messages.pm, standalone/drakfont,
- standalone/draksound, install_interactive.pm, install_any.pm,
- standalone/drakxtv: add hint about ala LaTeX strings for translators
-
- * share/po/br.po: update
-
- * drakxtools.spec: 10.1-0.7mdk
-
-2004/08/09 yrahal
-
- * share/po/ar.po: Arabic (from Arabeyes.org) translation
- Arabic translation
-
-2004/08/08 fwang
-
- * network/netconnect.pm: s/iwpconfig/iwconfig
-
- * share/advertising/dwd-04.pl, share/advertising/ppp-09.pl,
- share/advertising/dis-08.pl, share/advertising/dis-10.pl,
- share/advertising/ppp-05.pl, share/advertising/ppp-08.pl,
- share/advertising/ppp-10.pl, share/advertising/dwd-06.pl,
- share/advertising/dis-09.pl, share/advertising/ppp-04.pl,
- share/advertising/pwp-04.pl, share/advertising/pwp-08.pl,
- share/advertising/dwd-07.pl, share/advertising/pwp-07.pl,
- share/advertising/pwp-09.pl: Some string fixes
-
- * standalone/logdrake: typo fix
- s/Mandrake/Mandrakelinux
-
- * authentication.pm, share/po/zh_CN.po: typo fix
-
- * lang.pm: Revised comments to make non-utf-8 editor happier
- changed default font for gb2312
-
- * standalone/drakconnect, standalone/drakbug, standalone/harddrake2,
- standalone.pm, standalone/net_monitor: s/Mandrake/Mandrakelinux
-
-2004/08/08 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 401
- Volume label:
-
-2004/08/08 Pixel <pixel at mandrakesoft.com>
-
- * share/aliases: remove raidstop
-
- * diskdrake/hd_gtk.pm, share/list.i386, diskdrake/interactive.pm,
- fs/get.pm, install2.pm, fsedit.pm, detect_devices.pm, raid.pm,
- bootloader.pm, install_any.pm:
- - switch to mdadm (instead of raidtools)
- - create mdadm.conf instead of raidtab
- - internal {raids} is no more indexed by X for mdX, and so don't have
- holes anymore
- - internal {chunk-size} is now a number in KiB
- - internal {raid} is the raid device name, not the number
- - various cleanup for raid detection
-
- * install_steps.pm: don't set toFormat if we don't have a {fs_type} (eg:
- pt_type 0xfd, ie raw raid)
-
- * share/rpmsrate: many authentication packages where missing (bugzilla
- #10644)
- many authentication packages where missing (bugzilla #10644)
-
-2004/08/08 tsdgeos
-
- * share/po/ca.po: small updates to catalan translation
-
-2004/08/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakperm (row_setting_dialog) add hints for translators
- (row_setting_dialog) enable translators to print a fully translated
- strings
- (though we should probably just pregenerate and fill pos with all the
- strings
- b/c of inflections and mutations that occur in some languages)
- (row_setting_dialog) do not set hash as string on labels else perl will
- stringify this very hash thus making draksec crashes with strict pragma
- simplify code through Gtk2::ComboBox->new_with_strings()
-
- * standalone/drakTermServ, standalone/drakbackup, standalone/draksec,
- standalone/drakfloppy: simplify code through
- Gtk2::ComboBox->new_with_strings()
-
- * drakxtools.spec: fix 10.1-0.6mdk's changelog
-
- * standalone/drakboot: sort theme list
- simplify code through Gtk2::ComboBox->new_with_strings()
- sort WMs list
- use proper widget (aka GtkTable)
- sort user list
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: merge in typo fixes
-
- * ugtk2.pm (Gtk2::ComboBox->new_with_strings) make it working
-
-2004/08/08 yrahal
-
- * share/po/ar.po: Arabic translation
-
-2004/08/08 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 205
- Local file:
-
-2004/08/08 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: don't set toFormat if we don't have a {fs_type} (eg:
- pt_type 0xfd, ie raw raid)
-
- * detect_devices.pm:
- - switch to mdadm (instead of raidtools)
- - create mdadm.conf instead of raidtab
- - internal {raids} is no more indexed by X for mdX, and so don't have
- holes anymore
- - internal {chunk-size} is now a number in KiB
- - internal {raid} is the raid device name, not the number
- - various cleanup for raid detection
- only load floppy module explictly during install (otherwise it causes
- ugly messages in bootloader-config)
-
- * any.pm: replace "More" with a more descriptive button name
-
- * share/rpmsrate: many authentication packages where missing (bugzilla
- #10644)
- many authentication packages where missing (bugzilla #10644)
-
- * diskdrake/hd_gtk.pm, share/list.i386, diskdrake/interactive.pm,
- fs/get.pm, install2.pm, fsedit.pm, raid.pm, bootloader.pm,
- install_any.pm:
- - switch to mdadm (instead of raidtools)
- - create mdadm.conf instead of raidtab
- - internal {raids} is no more indexed by X for mdX, and so don't have
- holes anymore
- - internal {chunk-size} is now a number in KiB
- - internal {raid} is the raid device name, not the number
- - various cleanup for raid detection
-
-2004/08/07 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 130
-
-2004/08/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
- * share/po/wa.po: updated Walloon file
-
-2004/08/07 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/08/06 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 100
- What norm is your...
-
-2004/08/06 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm (network::adsl::adsl_conf_backend) add ppp_async alias
- for sagem
- devices (so that they work during install)
- fix titypo
- try to load all modules that may be needed to establish connexion
- try to mount proc fs too, in case it wasn't done earlier
-
- * network/netconnect.pm: use the new kdenetwork-kppp-provider package
- (thanks Laurent !) to be
- able to parse the provider db without requiring kdenetwork-kppp
-
-2004/08/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po: updated German file
- updated pot file
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/ky.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/fur.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/tl.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/uz@Latn.po: updated pot file
-
- * fsedit.pm: reverted an unneeded string change
-
-2004/08/06 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: fix typo
- don't try to remove non existing should_be_dirs
-
-2004/08/06 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/rpmsrate: If totem is to be avoided for KDE, avoid it in audio as
- well as in video.
-
- * pkgs.pm: Allow multiple complicate flags in rpmsrate, if they're exactly
- the same.
-
-2004/08/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
- push typo fixes in order to reduce pressure on translators
-
- * drakxtools.spec: 10.1-0.6mdk
- 10.1-0.5mdk
-
- * any.pm (selectCountry) fix IM sorting
-
- * share/rpmsrate:
- - install awesfx too if neded
- - add a note b/c we cannot install it :-)
- always install all arabic fonts since farsi oness contains nice arabic
- glyphs but not urdu (by way of arabayes feedback)
-
- * network/adsl.pm (adsl_conf_backend) let's have a better looking mesage
- (adsl_conf_backend) only try to mount /proc if it wasn't (eg if we
- didn't intall any packages)
-
- * lang.pm: fix x-unikey support (Larry Nguyen)
- (write) fix configuring IM
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/am.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/fur.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/nl.po, share/po/tl.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po:
- push typo fixes in order to reduce pressure on translators
-
- * ugtk2.pm (Gtk2::ComboBox->set_text) better error message
- (create_scrolled_window) adding 6px as left margin for TextView in
- scrolled Window
-
- * standalone/drakbackup: typo fix
- cleanups for lord perl_checker
- (advanced_when) quiet runtime warnings
- (advanced_when) fix crash when selecting an entry in pull down menus
-
-2004/08/06 yrahal
-
- * share/po/ar.po: Arabeyes' Arabic translation
-
-2004/08/05 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Update
- Update for discovery
-
-2004/08/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakclock: if ntp is used, get the new time before updating
- the hwclock
- (fix from Emmanuel Blindauer, #10537)
-
- * mdk-stage1/directory.c: do not go back to the beginning if no
- distribution is found in the
- directory (second fix)
- do not go back to the beginning if no distribution is found in the
- directory
-
- * network/adsl.pm: try to mount usbdevfs in $::prefix before attempting to
- run adsl start
- programs
-
- * network/netconnect.pm: set netcnx type when an external isdn modem is
- selected, or else
- modem::ppp_read_conf will crash (Anthill #1033)
- set netcnx type when an external isdn modem is selected, or else
- modem::ppp_read_conf will crash (Anthill #1033)
-
-2004/08/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uk.po, share/po/et.po: updated Estonian file
-
-2004/08/05 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/various.pm, diskdrake/interactive.pm,
- standalone/bootloader-config: adapt to bootloader functions now using
- all_hds instead of hds
-
- * bootloader.pm: update yaboot code (based on Christiaan Welvaart patch)
- /usr/sbin/ofpath seems to need /mnt/sys mounted, and the device must
- exist (Christiaan Welvaart)
- fix typos (Christiaan Welvaart)
-
- * install_steps_interactive.pm: basic code for upgrading from a redhat
- distribution
-
- * install_steps_gtk.pm: drop Xpmac support
-
- * detect_devices.pm: isLaptop() special code for ppc
-
- * any.pm, install_steps.pm: basic code for upgrading from a redhat
- distribution
- adapt to bootloader functions now using all_hds instead of hds
-
- * install_any.pm: basic code for upgrading from a redhat distribution
- write auto_inst.cfg after making room on the floppy image
- make room on replay/auto_install floppy image before doing anything
- when replaying, overwrite boot.msg with an empty message to win some
- space
- (it was only done in non-replay mode)
- adapt to bootloader functions now using all_hds instead of hds
- make room on replay/auto_install floppy image before doing anything
-
-2004/08/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: make it clearer by factorizing arch() call
- fix PPC entries
-
- * install_messages.pm (install_completed) bump errata page (though it does
- not yet exists)
-
- * share/rpmsrate: use new arabic font packages
- install sg usefull when there's a bluetooth device connected to the
- system
- install gimp's help along it
-
-2004/08/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakclock: if ntp is used, get the new time before updating
- the hwclock
- (fix from Emmanuel Blindauer, #10537)
-
-2004/08/05 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm, standalone/bootloader-config: adapt to
- bootloader functions now using all_hds instead of hds
-
- * install_steps.pm: adapt to bootloader functions now using all_hds
- instead of hds
- pass around $all_hds instead of $hds
-
- * harddrake/sound.pm: add dmasound_pmac <=> snd-powermac (for ppc,
- Christiaan Welvaart)
-
- * keyboard.pm: ppc doesn't use dumpkeys (?) (Christiaan Welvaart)
-
- * install_steps_gtk.pm: drop Xpmac support
-
- * detect_devices.pm: isLaptop() special code for ppc
-
- * bootloader.pm: update yaboot code (based on Christiaan Welvaart patch)
- /usr/sbin/ofpath seems to need /mnt/sys mounted, and the device must
- exist (Christiaan Welvaart)
- fix typos (Christiaan Welvaart)
- pass around $all_hds instead of $hds
- create bootloader::allowed_boot_parts() and use it,
- it allows installing on md0 if using lilo and md0 is raid1
-
- * Xconfig/various.pm: adapt to bootloader functions now using all_hds
- instead of hds
- replaced XFree86 and XFree with Xorg (bugzilla #10531)
-
- * any.pm: adapt to bootloader functions now using all_hds instead of hds
- create bootloader::allowed_boot_parts() and use it,
- it allows installing on md0 if using lilo and md0 is raid1
-
- * rescue/list.ppc, tools/ppc/mkINSTALLCD, share/list.ppc: update
- (Christiaan Welvaart)
-
- * fs/type.pm: "PPC PReP Boot" is an "important" type on ppc
-
- * Xconfig/card.pm, services.pm, standalone/XFdrake: replaced XFree86 and
- XFree with Xorg (bugzilla #10531)
-
- * share/list, share/list.x86_64, share/list.i386: ntfsresize and dmidecode
- are not needed on ppc (Christiaan Welvaart)
-
- * install_any.pm: make room on replay/auto_install floppy image before
- doing anything
- when replaying, overwrite boot.msg with an empty message to win some
- space
- (it was only done in non-replay mode)
- adapt to bootloader functions now using all_hds instead of hds
- fix backward compatibility {type} field in partitions and manualFstab
-
-2004/08/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksec: looks like patch -l did wrong things :-(
-
- * network/adsl.pm: quiet perl_checker
- (adsl_conf_backend) fix error message
-
- * share/rpmsrate: install needed alsa tools depending on present sound
- cards
-
- * harddrake/sound.pm: make it clearer by factorizing arch() call
- fix PPC entries
- add support for ALSA on PPC and SPARC
- align sound driver entries
- update sound drivers list
-
-2004/08/04 Daouda Lo <daouda at mandrakesoft.com>
-
- * share/net_applet.xinit:
- - added net_applet xinit file to automate launch of net_applet in KDE,
- GNOME and IceWM
-
- * drakxtools.spec:
- - do not expand shell vars
- - do not forget to package xinit.d net_applet file
- - automatically launch net_applet for KDE, GNOME and IceWM
-
-2004/08/04 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/isdn.pm: do not write cnx_script anymore (isdn4linux service
- will modprobe the
- driver, ibod service is started at boot, ifup/ifdown handle the dial)
-
- * mdk-stage1/directory.c: prefer to use a ramdisk for disk installs
-
- * network/tools.pm, network/ethernet.pm, standalone/drakconnect: kill
- set_cnx_script usage, replace cnx_scripts with ifup/ifdown
-
- * network/adsl.pm: catch die from modules::load
- add modules arrays and use modules::load to be able to load modules
- from modules.cz files, load these modules when not in standalone mode
- (they're needed for install and Move)
-
- * network/netconnect.pm: fix wording
- do not force kppp installation, it will be installed by
- modem::ppp_configure if kdebase is installed,
- else ifup/ifdown scripts are enough
- kill set_cnx_script usage, replace cnx_scripts with ifup/ifdown
- write a cnx_script for adsl connexions too (so that drakconnect can
- establish the connexion), add a FIXME comment to remind it is bad
-
-2004/08/04 Pixel <pixel at mandrakesoft.com>
-
- * fs/get.pm, fs/mount_options.pm: return a true value for perl
-
- * standalone/bootloader-config: don't allow unknown kernel names to mess
- everything
-
- * bootloader.pm:
- - same_entries() doesn't look anymore at kernel options
- (it tends to create stupid alt_xxx entries)
- - fix creation of labels alt2_alt_xxx (will now be alt2_xxx)
- - don't create bad "linux-nonfb" for kernel-win4lin
- try to keep the order of kernel options (to help same_entries())
- handle win4lin kernels
-
- * any.pm: .gnome2/wmrc and .wmrc are obsolete, it is now .dmrc
- (nb: beware, one must write 07IceWM instead of IceWM, same for others)
- don't set /etc/sysconfig/desktop anymore, configure ~/.wmrc,
- ~/.gnome2/gdm and ~/.desktop instead
-
- * rescue/list: replace /sbin/mkraid with /sbin/mdadm (as told on cooker by
- Luca Berra)
-
-2004/08/04 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * http.pm: Verify that regexp matched
-
-2004/08/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * Makefile.drakxtools: fix build
-
- * ugtk2.pm (Gtk2::ComboBox->set_text) actually print a warning if we
- failled
- let's system wide config not override user's locale
-
- * lang.pm: add x-unikey support for Vietnamese
- switch korean to scim-hangul IM
- (write) if one override default IM, remove any setting from default IM
- (hint:
- some IM configurations do not have all fields set...)
- (read) fix IM reading
-
- * share/rpmsrate: add x-unikey support for Vietnamese
- include fcitx IM too
- ensure alternative IMs get in in the isos
- switch korean to scim-hangul IM
- uim is already installed if needed depending on locale
- install xvnkb IM for vietnamese
- install ami IM only for korean
-
- * network/adsl.pm: log module loading faillure
-
- * drakxtools.spec: 10.1-0.4mdk
- update 10.1-0.3mdk'log (thx to build issue...)
- 10.1-0.3mdk
-
- * Makefile: fix build
- remove unused net_applet.desktop
-
- * interactive/gtk.pm (ask_fromW) actually honor default value
-
- * standalone/draksec: perl_checker cleanup
- - upcase fields values (and btw reduce the number of strings to
- translate :-))
- - simplify translating
-
-2004/08/03 jjorge
-
- * share/po/pt.po: error?
-
-2004/08/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/fonts.tar.bz2: add missing fonts.conf (with Kacst-Qr entries)
-
-2004/08/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: oops, /etc/fonts.conf missing from tarball
- updted fonts-cache file
-
-2004/08/03 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: move mount options related stuff from
- fs.pm to newly created fs/mount_options.pm
- - fs::set_all_default_options() ->
- fs::mount_options::set_all_default()
- - fs::mount_options_pack() -> fs::mount_options::pack()
- - fs::mount_options_unpack() -> fs::mount_options::unpack()
- - fs::rationalize_options() -> fs::mount_options::rationalize()
- - fs::set_default_options() -> fs::mount_options::set_default()
- - fs::mount_options() -> fs::mount_options::list()
- - fs::mount_options_help() -> fs::mount_options::help()
- many functions in fsedit don't modify anything, they are simply
- accessors.
- create fs::get and move them into it
- - device2part(), up_mount_point() moved from fs to fs::get
- - part2hd(), file2part(), has_mntpoint(), mntpoint2part(),
- empty_all_hds() moved from fsedit to fs::get
- - fsedit::get_root() -> fs::get::root()
- - fsedit::get_root_() -> fs::get::root_()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
- - fsedit::get_all_fstab_and_holes() -> fs::get::fstab_and_holes()
- - fsedit::get_all_fstab() -> fs::get::fstab()
- - fsedit::get_all_holes() -> fs::get::holes()
- - fsedit::all_free_space -> fs::get::free_space()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
-
- - fsedit::get_fstab_and_holes() -> fs::get::hds_fstab_and_holes()
- - fsedit::get_holes() -> fs::get::hds_holes()
- - fsedit::get_fstab() -> fs::get::hds_fstab()
- - fsedit::free_space() -> fs::get::hds_free_space()
-
- - fsedit::get_visible_fstab() unused, removed
- authentication::kind2description() has changed and its name is
- missleading :-(
- keeping it for now and adapt install_steps_interactive::setRootPassword
- along what's done in drakauth
- authentication::kind2description() has changed and its name is
- missleading :-(
- keeping it for now and adapt install_steps_interactive::setRootPassword
- along what's done in drakauth
-
- * fs/format.pm: add CVS $Id:
- many functions in fsedit don't modify anything, they are simply
- accessors.
- create fs::get and move them into it
- - device2part(), up_mount_point() moved from fs to fs::get
- - part2hd(), file2part(), has_mntpoint(), mntpoint2part(),
- empty_all_hds() moved from fsedit to fs::get
- - fsedit::get_root() -> fs::get::root()
- - fsedit::get_root_() -> fs::get::root_()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
- - fsedit::get_all_fstab_and_holes() -> fs::get::fstab_and_holes()
- - fsedit::get_all_fstab() -> fs::get::fstab()
- - fsedit::get_all_holes() -> fs::get::holes()
- - fsedit::all_free_space -> fs::get::free_space()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
-
- - fsedit::get_fstab_and_holes() -> fs::get::hds_fstab_and_holes()
- - fsedit::get_holes() -> fs::get::hds_holes()
- - fsedit::get_fstab() -> fs::get::hds_fstab()
- - fsedit::free_space() -> fs::get::hds_free_space()
-
- - fsedit::get_visible_fstab() unused, removed
-
- * fs/mount_options.pm, network/smbnfs.pm, network/smb.pm: move mount
- options related stuff from fs.pm to newly created fs/mount_options.pm
- - fs::set_all_default_options() ->
- fs::mount_options::set_all_default()
- - fs::mount_options_pack() -> fs::mount_options::pack()
- - fs::mount_options_unpack() -> fs::mount_options::unpack()
- - fs::rationalize_options() -> fs::mount_options::rationalize()
- - fs::set_default_options() -> fs::mount_options::set_default()
- - fs::mount_options() -> fs::mount_options::list()
- - fs::mount_options_help() -> fs::mount_options::help()
-
- * tools/hd_grub.cgi: better description
-
- * diskdrake/interactive.pm, install_steps.pm, fs.pm, fsedit.pm,
- standalone/diskdrake, standalone/drakupdate_fstab: move mount options
- related stuff from fs.pm to newly created fs/mount_options.pm
- - fs::set_all_default_options() ->
- fs::mount_options::set_all_default()
- - fs::mount_options_pack() -> fs::mount_options::pack()
- - fs::mount_options_unpack() -> fs::mount_options::unpack()
- - fs::rationalize_options() -> fs::mount_options::rationalize()
- - fs::set_default_options() -> fs::mount_options::set_default()
- - fs::mount_options() -> fs::mount_options::list()
- - fs::mount_options_help() -> fs::mount_options::help()
- many functions in fsedit don't modify anything, they are simply
- accessors.
- create fs::get and move them into it
- - device2part(), up_mount_point() moved from fs to fs::get
- - part2hd(), file2part(), has_mntpoint(), mntpoint2part(),
- empty_all_hds() moved from fsedit to fs::get
- - fsedit::get_root() -> fs::get::root()
- - fsedit::get_root_() -> fs::get::root_()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
- - fsedit::get_all_fstab_and_holes() -> fs::get::fstab_and_holes()
- - fsedit::get_all_fstab() -> fs::get::fstab()
- - fsedit::get_all_holes() -> fs::get::holes()
- - fsedit::all_free_space -> fs::get::free_space()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
-
- - fsedit::get_fstab_and_holes() -> fs::get::hds_fstab_and_holes()
- - fsedit::get_holes() -> fs::get::hds_holes()
- - fsedit::get_fstab() -> fs::get::hds_fstab()
- - fsedit::free_space() -> fs::get::hds_free_space()
-
- - fsedit::get_visible_fstab() unused, removed
-
- * loopback.pm, any.pm, fs/get.pm, diskdrake/removable.pm, bootloader.pm,
- network/netconnect.pm, diskdrake/dav.pm, diskdrake/hd_gtk.pm,
- standalone/drakboot, lvm.pm, install2.pm, network/tools.pm,
- diskdrake/smbnfs_gtk.pm, install_interactive.pm, install_any.pm,
- standalone/bootloader-config, partition_table.pm: many functions in
- fsedit don't modify anything, they are simply accessors.
- create fs::get and move them into it
- - device2part(), up_mount_point() moved from fs to fs::get
- - part2hd(), file2part(), has_mntpoint(), mntpoint2part(),
- empty_all_hds() moved from fsedit to fs::get
- - fsedit::get_root() -> fs::get::root()
- - fsedit::get_root_() -> fs::get::root_()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
- - fsedit::get_all_fstab_and_holes() -> fs::get::fstab_and_holes()
- - fsedit::get_all_fstab() -> fs::get::fstab()
- - fsedit::get_all_holes() -> fs::get::holes()
- - fsedit::all_free_space -> fs::get::free_space()
- - fsedit::get_really_all_fstab() -> fs::get::really_all_fstab()
-
- - fsedit::get_fstab_and_holes() -> fs::get::hds_fstab_and_holes()
- - fsedit::get_holes() -> fs::get::hds_holes()
- - fsedit::get_fstab() -> fs::get::hds_fstab()
- - fsedit::free_space() -> fs::get::hds_free_space()
-
- - fsedit::get_visible_fstab() unused, removed
-
-2004/08/03 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: A small variable renaming: use $medium for
- hashes and $medium_name for strings
-
- * share/po/fr.po: Small typos
-
- * share/po/pt.po: pt.po was corrupted
-
-2004/08/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksplash2: help perl_checker
-
- * ugtk2.pm (create_dialog) only add space between icon and text if there's
- actually an icon
- (create_notebook) reuse gtkappend_page()
- (create_dialog) do not show separator by default
- (_create_dialog) sanitize dialogs/popups:
- - set a border around it
- - add more space between the icon and the text
- (gtkappend_page) name parameters, enabling perl_checker to check
- callers' call
- signature
- (create_packtable) set a border around packtables
-
- * standalone/draksec: reuse gtkappend_page()
-
- * standalone/drakups (add_device_wizard) fix string (Joe Brower)
-
-2004/08/03 Olivier Blin <oblin at mandrakesoft.com>
-
- * share/fonts.tar.bz2: add missing fonts.conf (with Kacst-Qr entries)
-
-2004/08/03 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: authentication::kind2description() has
- changed and its name is missleading :-(
- keeping it for now and adapt install_steps_interactive::setRootPassword
- along what's done in drakauth
- authentication::kind2description() has changed and its name is
- missleading :-(
- keeping it for now and adapt install_steps_interactive::setRootPassword
- along what's done in drakauth
-
-2004/08/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakups (add_device_wizard) fix string (Joe Brower)
-
-2004/08/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * Makefile: enable ar and fa locales since an arabic font is now available
- in install
-
-2004/08/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: added arabic and bengali fonts
-
-2004/08/02 Pixel <pixel at mandrakesoft.com>
-
- * fs/format.pm: make perl_checker happy
-
-2004/08/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: in sagem start section, modprobe eagle-usb and do not
- wait for sync
- here, fctStartAdsl will handle that when pppd is called
- in speedtouch start section, modprobe speedtch module and use
- speedtouch-start instead of directly using modem_run
- in install, run modem start scripts once config is written
-
- * Makefile: enable ar and fa locales since an arabic font is now available
- in install
-
-2004/08/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/fonts.tar.bz2: added arabic and bengali fonts
-
-2004/08/02 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: black list URPM::Build
-
- * fs.pm: don't use supermount for {is_removable} devices when used for a
- boot time partition (like /usr and /)
-
- * share/rpmsrate: flag rosegarden4 KDE
-
- * any.pm, network/network.pm, harddrake/sound.pm, diskdrake/dav.pm,
- network/netconnect.pm, network/smb.pm, do_pkgs.pm, lvm.pm,
- network/drakfirewall.pm, network/nfs.pm, standalone/drakups,
- standalone/drakxtv: introduce ->ensure_binary_is_installed and use it
-
- * fs/format.pm, install_any.pm:
- - move package_needed_for_partition_type() from fsedit to fs::format
- - create check_package_is_installed() in fs::format and use it
-
- * diskdrake/interactive.pm: fsedit::check_fs_type() is now
- fs::type::check()
- use fs::format::check_package_is_installed() before formatting (bugzilla
- #10435)
- - move package_needed_for_partition_type() from fsedit to fs::format
- - create check_package_is_installed() in fs::format and use it
-
- * fsedit.pm: fsedit::check_fs_type() is now fs::type::check()
- - move package_needed_for_partition_type() from fsedit to fs::format
- - create check_package_is_installed() in fs::format and use it
-
- * fs/type.pm: fsedit::check_fs_type() is now fs::type::check()
-
-2004/08/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/Makefile.PL: fix build
-
- * standalone/drakups: clean spacing
- (add_device_wizard) fix string
-
-2004/08/02 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: updated installed packages for 10.1
-
-2004/08/02 jjorge
-
- * share/po/pt.po: install lover
-
-2004/08/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: in sagem start section, modprobe eagle-usb and do not
- wait for sync
- here, fctStartAdsl will handle that when pppd is called
- in speedtouch start section, modprobe speedtch module and use
- speedtouch-start instead of directly using modem_run
- in install, run modem start scripts once config is written
-
-2004/08/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/uk.po, share/po/wa.po: updated Farsi file
-
- * share/po/ar.po: updated Arabic file
-
- * share/po/zh_TW.po: updated Chinese file
-
-2004/08/02 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: flag rosegarden4 KDE
-
- * diskdrake/interactive.pm: use fs::format::check_package_is_installed()
- before formatting (bugzilla #10435)
- - move package_needed_for_partition_type() from fsedit to fs::format
- - create check_package_is_installed() in fs::format and use it
- don't call will_tell_kernel() when we have lvm (anthill #994)
-
- * any.pm, network/network.pm, harddrake/sound.pm, diskdrake/dav.pm,
- network/netconnect.pm, do_pkgs.pm, network/smb.pm, lvm.pm,
- network/drakfirewall.pm, network/nfs.pm, standalone/drakups,
- standalone/drakxtv: introduce ->ensure_binary_is_installed and use it
-
- * fsedit.pm, fs/format.pm, install_any.pm:
- - move package_needed_for_partition_type() from fsedit to fs::format
- - create check_package_is_installed() in fs::format and use it
-
- * standalone/service_harddrake: check the XF86Config and/or XF86Config-4
- exist before modifying it
- (otherwise it creates an empty file) (bugzilla #10487)
-
-2004/08/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/Makefile.PL: fix build
-
- * ugtk2.pm: fix inverted comments
- (gtktext_insert) merge with text_append() from logdrake:
- - name parameters
- - provide fast text insertion by using named tags instead of anonymous
- tags.
- this is especially usefull in order to speed up programs that use quite
- a
- lot of identical tags such as logdrake (#8412) and rpmdrake
-
- * standalone/logdrake: perl_checker cleanup
- (log_output__real) rename it as insert_text_n_scroll() in order to
- better
- reflect what it does
- reuse new ugtk2 infrastructure
- (log_output) fix tag name (was harmfull but it's just saner anyway)
-
- * harddrake/autoconf.pm (network_conf) rename o as obj so that pixel isn't
- confused
-
- * standalone/drakups (add_device_wizard) fix string
-
-2004/08/01 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: added s2u
-
-2004/08/01 fwang
-
- * standalone/drakbackup, standalone/harddrake2, standalone/drakups:
- several typos fix
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/08/01 hilbert
-
- * share/po/zh_TW.po: DrakX-zh_TW: 75
- Choose the...
-
-2004/08/01 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/07/30 Pixel <pixel at mandrakesoft.com>
-
- * standalone/draksplash2: draksplash2 is here until merged in draksplash
-
-2004/07/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * lang.pm: support nabi input method too
- support im-ja input method too
-
- * drakxtools.spec: log more stuff into 10.1-0.2mdk
- 10.1-0.2mdk
-
- * standalone/net_applet: keep strings synced and warn both coders and
- translators about it
- fix timeout usage
- like in all other tools, revert ugly code printing "This program
- cannot be run in console mode", which is easier done in ugtk2.pm
- do not enforce parameter position in translatable strings
-
- * share/po/br.po, share/po/fr.po: update
-
- * ugtk2.pm (shrink_topwindow) drop Gtk+-2.[02]x support
-
- * any.pm (selectCountry) let's have a better looking GUI by preventing
- uneeded
- scrollbar on pull down menu
- (selectCountry) use a combo box rather than a list for listing input
- methods
-
-2004/07/30 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/netconnect.pm: offer to connect for pppoe connexions too
-
- * mdk-stage1/stage1.c: revert previous commit, that won't work after
- pivot_root (proc has to
- be mounted, insmod would have to be able to find the modules in the
- new root)
- revert previous commit, that won't work after pivot_root (proc has to
- be mounted, insmod would have to be able to find the modules in the
- new root), we'll have to use hotplug to load eagle-usb drivers in Move
- (in next release maybe)
-
- * network/adsl.pm: sagem: use fctStartAdsl to wait for sync, up the
- interface and get interface name
- modprobe eagle-usb for sagem modems (useful if coldplug doesn't work)
-
-2004/07/30 Pixel <pixel at mandrakesoft.com>
-
- * standalone/draksplash2: draksplash2 is here until merged in draksplash
-
- * share/rpmsrate: authentication installs perl-Net-DNS in some cases
- authentication installs perl-Net-DNS in some cases
-
- * any.pm, lang.pm: cleanup
-
-2004/07/30 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fixes for Anthill #1009, #1010 (DVD recording,
- disk quota)
- Direct-to-tape enahancement
- Fixes for AntHill #1009, #1010.
-
-2004/07/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: log more stuff into 10.1-0.2mdk
- 10.1-0.2mdk
-
- * standalone/service_harddrake: do not offer to configure mouse if we've
- already automatically reconfigure it
- b/c of 2.4.x vs 2.6.x switch
-
- * any.pm (selectCountry) let's have a better looking GUI by preventing
- uneeded
- scrollbar on pull down menu
- (selectCountry) use a combo box rather than a list for listing input
- methods
- enable one to choose its input method in advanced mode
-
- * standalone/drakgw (outpend) clean by reusing MDK::Common
-
- * lang.pm: support nabi input method too
- support im-ja input method too
- enable one to choose its input method in advanced mode
-
- * security/help.pm, security/msec.pm, security/l10n.pm: sync with
- msec-0.44
-
-2004/07/30 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: Clean ldap client configuration
-
-2004/07/30 yrahal
-
- * share/po/ar.po: Arabeyes.org's Arabic translation
- Sync with Arabeyes CVS
-
-2004/07/29 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: split server and plugin options, in order to support
- again bewan
- modems (pppd_options wasn't used anywhere, they couldn't work)
- add newline at end of net_cnx_up script
- use connect option or pppd in net_cnx_up, not both
- (to fix weird pppoe net_cnx_up script)
-
-2004/07/29 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm: cleanup, fix various typos
- (still, ->target seems broken, but i'm not sure, since i couldn't test)
-
- * fsedit.pm: merge hds() in get_hds() to correctly handle catching cdie
- when the device is non partionned
- merge hds() in get_hds() to correctly handle catching cdie when the
- device is non partionned
-
- * mdk-stage1/stage1.c, mdk-stage1/config-stage1.h: s/MandrakeMove/Move/
-
-2004/07/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/stuff.xs.pl, c/Makefile: always include all funcs (these're needed
- anyway by Move and GlobeTrotter)
-
- * drakxtools.spec: 10.1-0.1mdk
-
- * wizards.pm (check_rpm) backport fix from HEAD
-
- * standalone/service_harddrake: use new set_removable_auto_configurator
- merge fix from HEAD: do not automatically configure removable media in
- harddrake GUI (only in harddrake service)
-
- * network/netconnect.pm (handle_multiple_cnx) only restart network for
- ADSL if we use an
- ethernet modem
-
- * harddrake/data.pm (set_removable_auto_configurator) copy it out from
- set_removable_configurator()
- (set_removable_configurator) restore it as of MDK10.0 time
- merge fix from HEAD: do not automatically configure removable media in
- harddrake GUI (only in harddrake service)
-
- * network/tools.pm (remove_initscript) simplify
-
- * standalone/draksec, standalone/drakedm, standalone/drakgw: standalone
- tools are *not* chrooted
-
- * standalone/draksplash (show_prev)
- - kill useless variables
- - simplify
- (show_prev) fix preview refresh while simplying code
- (write_boot_thm) typo fix
- more cleanups
- misc cleanups
- (show_prev) do not crash when the image format is unknown
- (make_boot_frame) fix it
-
-2004/07/28 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: do not write a blank "pty" option in ppp config file is
- there is no
- pty command (should fix some problems with Bewan modems)
- do not write a blank "pty" option in ppp config file is there is no
- pty command (should fix some problems with Bewan modems)
-
- * mdk-stage1/stage1.c: do not probe usb interface too soon, wait for the
- Move images to be mounted
- (or else usb drivers won't be automatically loaded at boot with Move)
- do not probe usb interface too soon, wait for the Move images to be
- mounted
- (or else usb drivers won't be automatically loaded at boot with Move)
-
- * network/netconnect.pm: it's probably better to rely on modem_run since
- speedtouch.sh may be dropped
-
-2004/07/28 Pixel <pixel at mandrakesoft.com>
-
- * fs/type.pm: remove small ugly typo
-
- * network/smb.pm:
- - use option -g for smbclient -L, this fixes bad parsing of formatted
- smbclient output
- - skip "netlogon" Disk share (lowercase letters)
-
- * install_steps.pm: explain why we set toFormatUnsure
-
- * install_any.pm: don't set mount point /mnt/windows for removable devices
-
- * detect_devices.pm: fix getSCSI_26() not sorting the drives
- fix getCompaqSmartArray() on 2.6 (since /proc/driver/cciss/cciss0
- doesn't talk about c0dX anymore)
- fix getSCSI_26() not sorting the drives
-
-2004/07/28 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: Fix crashes on
- append_set.
-
-2004/07/28 Pixel <pixel at mandrakesoft.com>
-
- * fs/type.pm: remove small ugly typo
-
- * detect_devices.pm: fix getSCSI_26() not sorting the drives
- fix getCompaqSmartArray() on 2.6 (since /proc/driver/cciss/cciss0
- doesn't talk about c0dX anymore)
- fix getSCSI_26() not sorting the drives
-
-2004/07/27 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakbug:
- - scroll down text while typing
- - many cleanups
- - Stable releases are 'Official' and 'Community'
-
-2004/07/27 jjorge
-
- * share/po/pt.po: bunch of work
-
-2004/07/27 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: '-e 1' option is unneeded with speedtouch >= 1.3
-
-2004/07/27 Pixel <pixel at mandrakesoft.com>
-
- * lvm.pm:
- - add field {fs_type} partially replacing {pt_type}
- {pt_type} is always a number, {fs_type} is always a string
- - introduce set_isFormatted()
- (to ensure {notFormatted} but also {fs_type_from_magic} and
- {bad_fs_type_magic} are updated)
- - don't use 0x483 for ext3 anymore (same for reiserfs...),
- the type_name gives both a pt_type and a fs_type
- - many accessors from partition_table removed (type2fs(),
- fs2pt_type())
- - remove isThisFs() (not useful anymore since we can use directly
- {fs_type})
- - remove isFat() (inline the function)
- - other isXXX() from partition_table are moved to fs::type
- - part2name() is now fs::type::part2type_name
- - name2pt_type() is now fs::type::type_name2subpart()
- - partition_table::important_types() is now fs::type::type_names()
- - fsedit::typeOfPart() is now fs::type::fs_type_from_magic()
-
- - no need to truncate type_name since they are shorter
- a {type} didn't get moved to {pt_type}, fixing
-
- * loopback.pm, any.pm, partition_table/mac.pm, partition_table/bsd.pm,
- diskdrake/interactive.pm, partition_table/dos.pm, fs.pm,
- install_steps.pm, diskdrake/removable.pm, bootloader.pm,
- partition_table/sun.pm, partition_table/gpt.pm,
- install_steps_interactive.pm, network/smbnfs.pm, diskdrake/dav.pm,
- diskdrake/hd_gtk.pm, fs/type.pm, fsedit.pm, install2.pm, raid.pm,
- fs/format.pm, install_interactive.pm, install_any.pm,
- partition_table.pm:
- - add field {fs_type} partially replacing {pt_type}
- {pt_type} is always a number, {fs_type} is always a string
- - introduce set_isFormatted()
- (to ensure {notFormatted} but also {fs_type_from_magic} and
- {bad_fs_type_magic} are updated)
- - don't use 0x483 for ext3 anymore (same for reiserfs...),
- the type_name gives both a pt_type and a fs_type
- - many accessors from partition_table removed (type2fs(),
- fs2pt_type())
- - remove isThisFs() (not useful anymore since we can use directly
- {fs_type})
- - remove isFat() (inline the function)
- - other isXXX() from partition_table are moved to fs::type
- - part2name() is now fs::type::part2type_name
- - name2pt_type() is now fs::type::type_name2subpart()
- - partition_table::important_types() is now fs::type::type_names()
- - fsedit::typeOfPart() is now fs::type::fs_type_from_magic()
-
- - no need to truncate type_name since they are shorter
-
-2004/07/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/net_monitor: save/restore options
-
-2004/07/26 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/07/26 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm: remove unneeded quotes
- let perl-MDK-Common do the quoting
-
-2004/07/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po: small fix
-
- * share/po/bn.po: updated Bengali file
-
-2004/07/26 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: blacklist Net::DNS (until we get rid of it?)
-
- * authentication.pm: cleanup, fix various typos
- (still, ->target seems broken, but i'm not sure, since i couldn't test)
-
- * tools/make_mdkinst_stage2, install_steps_gtk.pm, docs/README,
- Makefile.config, mdk-stage1/disk.c, pkgs.pm, mdk-stage1/doc/TECH-INFOS,
- share/po/Makefile, install_steps.pm, standalone/drakpxe,
- Makefile.drakxtools, Makefile, mdk-stage1/config-stage1.h, lang.pm,
- tools/Makefile, install2.pm, modules.pm, rescue/Makefile,
- share/advertising/Makefile, mdk-stage1/network.c,
- tools/i386/netboot/menu.lst.example, install_any.pm: adapt to new
- directories layout:
- - Mandrake/mdkinst -> install/stage2/live
- - Mandrake/base/mdkinst_stage2.bz2 ->
- install/stage2/mdkinst_stage2.bz2
- - Mandrake/base/rpmsrate -> media/media_info/rpmsrate
- - Mandrake/RPMS -> media/main
- - images -> install/images
- - isolinux -> install/isolinux
- - Mandrake/share/advertising -> install/extra/advertising
-
- * fs/format.pm: fix typo
-
- * detect_devices.pm: fix getCompaqSmartArray() on 2.6 (since
- /proc/driver/cciss/cciss0 doesn't talk about c0dX anymore)
-
-2004/07/26 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * ugtk2.pm: Redundant line.
-
-2004/07/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakauth, authentication.pm, network/smb.pm: merge auth fixes
- from HEAD
-
-2004/07/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po: small fix
-
-2004/07/26 Pixel <pixel at mandrakesoft.com>
-
- * tools/make_mdkinst_stage2, install_steps_gtk.pm, docs/README,
- Makefile.config, mdk-stage1/disk.c, pkgs.pm, mdk-stage1/doc/TECH-INFOS,
- share/po/Makefile, install_steps.pm, standalone/drakpxe,
- Makefile.drakxtools, Makefile, mdk-stage1/config-stage1.h, lang.pm,
- tools/Makefile, install2.pm, modules.pm, rescue/Makefile,
- share/advertising/Makefile, mdk-stage1/network.c,
- tools/i386/netboot/menu.lst.example, install_any.pm: adapt to new
- directories layout:
- - Mandrake/mdkinst -> install/stage2/live
- - Mandrake/base/mdkinst_stage2.bz2 ->
- install/stage2/mdkinst_stage2.bz2
- - Mandrake/base/rpmsrate -> media/media_info/rpmsrate
- - Mandrake/RPMS -> media/main
- - images -> install/images
- - isolinux -> install/isolinux
- - Mandrake/share/advertising -> install/extra/advertising
-
- * fs/format.pm: fix typo
-
-2004/07/23 fisher
-
- * share/po/uk.po: Ukrainian translation update.
-
-2004/07/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakconnect: remove useless $lan_button and $host_button in
- old drakconnect
- cosmetics (remove useless blanks at end of line)
- prepare for network::tools::reread_net_conf removal
-
- * network/network.pm: hey, I suck, that's DIAL_ON_IFUP, not DIAL_ON_BOOT
- - introduce ONBOOT and DIAL_ON_BOOT settings for isdn connections
- - write this settings with configureNetwork2, kill the old tweak in
- isdn.pm
- - use the isdn_dial_on_boot step instead of nework_on_boot in
- netconnect.pm
-
- * network/adsl.pm: pptp connections are now handled by pppd (#6515)
-
- * network/isdn.pm:
- - introduce ONBOOT and DIAL_ON_BOOT settings for isdn connections
- - write this settings with configureNetwork2, kill the old tweak in
- isdn.pm
- - use the isdn_dial_on_boot step instead of nework_on_boot in
- netconnect.pm
- FIRMWARE isn't used by ifup-ippp
-
- * network/netconnect.pm: hey, I suck, that's DIAL_ON_IFUP, not
- DIAL_ON_BOOT
- perl_checker compliance
- one more FIXME comment
- - introduce ONBOOT and DIAL_ON_BOOT settings for isdn connections
- - write this settings with configureNetwork2, kill the old tweak in
- isdn.pm
- - use the isdn_dial_on_boot step instead of nework_on_boot in
- netconnect.pm
-
-2004/07/23 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm, fs/format.pm: replace pt_type2name($part->{pt_type}) with
- part2name($part)
- (hoisting the dereferencing {pt_type})
- - move format related functions out of fs.pm to new module
- fs/format.pm
- - remove swap.pm, moving its few functions to fs/format.pm or fs.pm
-
- * diskdrake/hd_gtk.pm, install_any.pm: replace
- pt_type2name($part->{pt_type}) with part2name($part)
- (hoisting the dereferencing {pt_type})
-
- * tools/mkhdlist: obsolete since 4 years
-
- * partition_table.pm: replace pt_type2name($part->{pt_type}) with
- part2name($part)
- (hoisting the dereferencing {pt_type})
- - simplify partition table entry names (based on fdisk's names)
- - rename some internal variables
- old dos is not useful anymore
- simplify
-
- * tools/updatehdlist: remove fpons only tool
-
- * diskdrake/interactive.pm: replace pt_type2name($part->{pt_type}) with
- part2name($part)
- (hoisting the dereferencing {pt_type})
- - move format related functions out of fs.pm to new module
- fs/format.pm
- - remove swap.pm, moving its few functions to fs/format.pm or fs.pm
- fix indentation
-
- * loopback.pm, raid.pm, commands.pm, swap.pm:
- - move format related functions out of fs.pm to new module
- fs/format.pm
- - remove swap.pm, moving its few functions to fs/format.pm or fs.pm
-
-2004/07/23 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: remove print coin and pwet in find_srv_name function
- clean function find_srv_name
- Add "net time set -S $server" to AD et SMBKRB config, for clock sync
- (kerberos require)
-
-2004/07/22 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/network.pm: rewrite read_tmdns_conf to use cat_
- perl_checker/misc fixes
-
-2004/07/22 Pixel <pixel at mandrakesoft.com>
-
- * modules/any_conf.pm: perl_checker enhancement
- add $Id
- modules::modprobe_conf now works (at least a little :)
-
- * fsedit.pm: shorter and faster
- set {is_removable} directly in fsedit::hds()
-
- * modules/modprobe_conf.pm, modules/modules_conf.pm: add $Id
- modules::modprobe_conf now works (at least a little :)
-
- * drakxtools.spec: need latest MDK::Common
-
- * modules.pm: cleanup
- modules::modprobe_conf now works (at least a little :)
-
- * fs.pm: set {is_removable} directly in fsedit::hds()
-
- * detect_devices.pm:
- - isRemovableDrive() removed, partially replaced with may_be_a_hd()
- - the main difference is that isRemovableDrive() checked
- isRemovableUsb() whereas
- may_be_a_hd() allows more usb removable drives
- (esp. memory cards and some usb keys declared as memory cards (0x0c76
- 0x0005))
- simplify
- - re-indent
- - use begins_with()
- more cleanup
- cleanup
- isRemovableDrive() doesn't check isRemovableUsb() anymore allowing more
- usb
- removable drives (esp. some usb keys declared as memory cards (0x0c76
- 0x0005))
-
- * network/network.pm: perl_checker compliance
- - don't use if_() when not needed and strange
- - read_tmdns_conf() now knows which file it reads, don't give it as
- argument
-
-2004/07/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone.pm (rename) only log succesfull renamings
-
- * network/network.pm (read_tmdns_conf) unbreak oblin code
- (read_tmdns_conf) reinsert parameter naming for parameter checking
-
- * drakxtools.spec: bump drakconf conflict due to new drakconnect API
-
-2004/07/21 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakautoinst: perl_checker fixes
-
- * standalone/drakboot, standalone/drakfloppy: remove unused variable
-
- * standalone/draksec, standalone/drakpxe, network/smb.pm: perl_checker
- compliance
-
- * harddrake/autoconf.pm, standalone/service_harddrake: use
- do_pkgs_standalone->new instead of class_discard
- - %modules::conf is no more a global, so many functions need passing
- $modules_conf
- - $modules_conf is a class choosing modules.conf or modprobe.conf
- (esp. useful after install) (but not working yet!)
- - modules::load() doesn't use $modules_conf, use
- modules::load_and_configure()
- - modules::load() doesn't allow options, use either
- modules::load_raw() or modules::load_and_configure()
- - some functions used to want an array ref for modules options and
- some a string, now every functions use a string
- - many functions (like modules::get_alias()) are now methods on
- $modules_conf
- - some functions in mouse.pm needed a $in where a $do_pkgs is enough
- - some perl_checker compliance
- - small fixes
-
- * do_pkgs.pm:
- - do_pkgs_standalone->new doesn't *need* a $in anymore
- - ->in replace ->{in} so that it can be created on demand (ugly,
- but...)
- ->{in}->do_pkgs gives the same kind of object, removing it
-
- * standalone/XFdrake: XFdrake doesn't modify modules_conf! (or does it?)
-
- * network/network.pm, install_steps.pm, network/isdn.pm,
- install_steps_interactive.pm, network/netconnect.pm, mouse.pm,
- install2.pm, modules/modprobe_conf.pm, harddrake/v4l.pm,
- modules/interactive.pm, standalone/mousedrake, commands.pm,
- printer/detect.pm, printer/main.pm, standalone/printerdrake,
- harddrake/sound.pm, install_steps_auto_install.pm, network/ethernet.pm,
- modules/any_conf.pm, standalone/drakconnect, modules/modules_conf.pm,
- standalone/drakgw, harddrake/data.pm, network/adsl.pm,
- detect_devices.pm, modules.pm, network/shorewall.pm, network/tools.pm,
- Xconfig/default.pm, standalone/draksound, install_any.pm,
- printer/printerdrake.pm, standalone/drakxtv:
- - %modules::conf is no more a global, so many functions need passing
- $modules_conf
- - $modules_conf is a class choosing modules.conf or modprobe.conf
- (esp. useful after install) (but not working yet!)
- - modules::load() doesn't use $modules_conf, use
- modules::load_and_configure()
- - modules::load() doesn't allow options, use either
- modules::load_raw() or modules::load_and_configure()
- - some functions used to want an array ref for modules options and
- some a string, now every functions use a string
- - many functions (like modules::get_alias()) are now methods on
- $modules_conf
- - some functions in mouse.pm needed a $in where a $do_pkgs is enough
- - some perl_checker compliance
- - small fixes
-
-2004/07/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * .perl_checker: blacklist URPM::Resolve
-
- * standalone/drakauth: perl_checker fix
-
- * lang.pm: fix xmodifiers setting which is broken since
- perl-MDK-Common-1.1.13-1mdk
-
- * drakxtools.spec: 10-57mdk
- bump requires on perl-MDK-Common b/c of localedrake vs CJK issue
-
-2004/07/21 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: Add service smb et winbind restart in smbkrb config
-
-2004/07/20 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm: merge netconnect::load_conf in netconnect::read_conf
- (and replace all calls to lload_conf with read_conf, remove all previous
- calls to read_conf)
- don't probe again connection type here since now
- network::netconnect::load_conf does it as intended initially
-
- * install_steps_interactive.pm: use correct method variable in chooseCD
- (even if this code is used only in expert
- mode which isn't anymore supported)
-
- * network/netconnect.pm: fix perl_checker combo (yeah)
- oops, fix suckiness
- use read_net_conf to avoid code duplication
- merge netconnect::load_conf in netconnect::read_conf (and replace all
- calls to lload_conf with read_conf, remove all previous calls to
- read_conf)
- unused variable
- don't forget to send $netcnx to network::network::read_all_conf ...
- (or else we won't get back the probed connection type)
-
- * standalone/draksound: do not probe devices twice (and avoid to grep on
- detect_devices::probeall()), cosmetics
-
- * standalone/net_monitor: merge netconnect::load_conf in
- netconnect::read_conf (and replace all calls to lload_conf with
- read_conf, remove all previous calls to read_conf)
- cosmetics
- do not allocate new Gtk2::Gdk::GC at each redraw (last memory leak
- fixed ?)
- use the power of the Gtk2::Dialog widget, thus giving change_color()
- more luck to succeed
- translate connection type (Fabrice Facorat)
- fix spacing (from Fabrice Facorat, #10300), remove blank line
-
- * standalone/drakconnect: maxi perl_checker compliance combo
- do not read conf in add_intf, this is already done by the netconnect
- wizard
- merge netconnect::load_conf in netconnect::read_conf (and replace all
- calls to lload_conf with read_conf, remove all previous calls to
- read_conf)
-
-2004/07/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/translation_size.pl, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/mn.po, share/po/am.po, lang.pm,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/fur.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/fr.po, share/po/ta.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/validate.pl, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- changed MandrakeSoft -> Mandrakesoft
-
-2004/07/20 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: remove debugging code
-
- * authentication.pm, install_steps_gtk.pm: perl_checker compliance
-
- * mdk-stage1/dns.c, mdk-stage1/pcmcia_/cardmgr.c, standalone/drakfirewall,
- share/advertising/pwp-02.pl, rescue/restore_ms_boot,
- mdk-stage1/mkinitrd_helper/mkinitrd_helper.c, tools/genmodparm,
- tools/gencryptofiles, rescue/tree/sbin/fakeshutdown, standalone/drakpxe,
- mdk-stage1/config-stage1.h, standalone/drakvpn, standalone/drakboot,
- standalone.pm, mdk-stage1/init-libc-headers.h, standalone/drakTermServ,
- mdk-stage1/mar/mar-frontend.c, mdk-stage1/probing.h,
- standalone/drakbackup, mdk-stage1/pcmcia_/probe.c,
- mdk-stage1/insmod-busybox/insmod-frontend.c,
- tools/serial_probe/serial_probe.c, mdk-stage1/disk.h,
- mdk-stage1/modules.c, mdk-stage1/mount.c, standalone/printerdrake,
- standalone/fileshareset, standalone/drakedm, mdk-stage1/modules.h,
- share/advertising/dwd-01.pl, mdk-stage1/mar/mar.h,
- share/advertising/dis-01.pl, standalone/drakhelp, standalone/XFdrake,
- mdk-stage1/insmod.h, mdk-stage1/rp-pppoe/src/Makefile,
- mdk-stage1/pcmcia_/pcmcia.h, standalone/drakupdate_fstab,
- mdk-stage1/bzlib/Makefile, scanner.pm, mdk-stage1/Makefile.common,
- mdk-stage1/stdio-frontend.c, standalone/drakproxy,
- tools/ppc/mkINSTALLCD, share/advertising/dwd-06.pl,
- mdk-stage1/rescue-gui.c, mdk-stage1/nfsmount.c, mdk-stage1/network.h,
- mdk-stage1/doc/README, mdk-stage1/log.h, standalone/drakfloppy,
- mdk-stage1/newt/Makefile, standalone/drakfont,
- mdk-stage1/newt-frontend.c, share/advertising/ppp-01.pl,
- rescue/tree/etc/profile, share/advertising/dis-09.pl,
- mdk-stage1/network.c, mdk-stage1/disk.c, rescue/guessmounts,
- mdk-stage1/url.c, standalone/logdrake, mdk-stage1/automatic.h,
- mdk-stage1/frontend.h, mdk-stage1/insmod-modutils/insmod-frontend.c,
- rescue/lsparts, mdk-stage1/usb-resource/Makefile, mdk-stage1/url.h,
- mdk-stage1/probing.c, mdk-stage1/mar/mar-extract-only.h,
- mdk-stage1/cdrom.c, mouse.pm, mdk-stage1/lomount.h, mdk-stage1/dhcp.h,
- standalone/net_monitor, mdk-stage1/stage1.c, diskdrake/diskdrake.html,
- mdk-stage1/dhcp.c, mdk-stage1/init.c, mdk-stage1/pci-resource/Makefile,
- mdk-stage1/mkinitrd_helper/Makefile, install2, mdk-stage1/Makefile,
- rescue/install_bootloader, mdk-stage1/lomount.c, mdk-stage1/adsl.h,
- share/advertising/ppp-09.pl, mdk-stage1/adsl.c, mdk-stage1/dns.h,
- mdk-stage1/automatic.c, mdk-stage1/mar/mar-extract-only.c,
- standalone/drakconnect, tools/shift_img.c, standalone/drakbug,
- tools/make_lang_png_transparent.c, mdk-stage1/frontend-common.c,
- standalone/draksound, standalone/drakxtv, mdk-stage1/tools.h,
- share/compssUsers.server, mdk-stage1/slang/Makefile,
- mdk-stage1/minilibc.h, standalone/drakautoinst, mdk-stage1/cdrom.h,
- mdk-stage1/Makefile.mkinitrd_helper, mdk-stage1/stage1.h,
- standalone/diskdrake, mdk-stage1/doc/documented..frontend.h,
- mdk-stage1/mount.h, mdk-stage1/directory.c, rescue/drvinst,
- mdk-stage1/mar/Makefile, mdk-stage1/directory.h, mdk-stage1/log.c,
- install_messages.pm, mdk-stage1/modules_descr.h, standalone/drakgw,
- mdk-stage1/pcmcia_/Makefile, mdk-stage1/tools.c,
- share/advertising/pwp-01.pl, tools/syncrpms,
- share/advertising/pwp-08.pl, mdk-stage1/ppp/pppd/Makefile,
- standalone/scannerdrake, mdk-stage1/minilibc.c: MandrakeSoft ->
- Mandrakesoft
-
- * share/list: adapt to file renaming
-
-2004/07/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * authentication.pm: better looking wizard
-
- * lang.pm (write) better check parameter rather than EUID
- (write) do not bother trying to write /etc/menu-methods/lang.h when
- run as a user
-
- * standalone/drakauth: better looking wizard
- put help out of the radiobutton
-
-2004/07/20 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: remove ask_warn winbind or SFU and add new entry in
- kinds
- Add desciption for authentification type
- Add Entry for IDMAP
- clean code
-
- * standalone/drakauth: Add type => 'list' in ask_from
-
-2004/07/20 Pixel <pixel at mandrakesoft.com>
-
- * share/list: adapt to file renaming
-
- * bootloader.pm: remove debugging code
-
-2004/07/20 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: clean code
-
-2004/07/19 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: use run_program, try to handle default interface
- better
- disable the connect button if up interface is found (there is
- currently no reliable way to find the gateway interface)
- code factorization, do not use system() but fork() and exec() since we
- don't
- want to wait the command to return
- perl_checker compliance
- use ifup/ifdown to connect/disconnect
- no need to be root to monitor connection
-
- * network/netconnect.pm: use hotplug blacklist for adsl connections too
-
- * network/network.pm: do not write wireless encryption key if empty
-
- * network/tools.pm: make the tcp ping actually work
-
-2004/07/19 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: don't bootloader::suggest_floppy
-
- * bootloader.pm: don't bootloader::suggest_floppy
- don't unset prompt when timeout is undefined (and don't care when
- timeout is 0)
-
- * pkgs.pm: perl_checker compliance
- add multimedia kernel in analyse_kernel_name
-
- * tools/hd_grub.cgi, docs/README, rescue/rescue-doc,
- rescue/tree/etc/issue, rescue/lsparts, docs/HACKING,
- mdk-stage1/doc/README: replace "Mandrake Linux" with "Mandrakelinux"
-
- * standalone/bootloader-config: also add long name when adding add short
- name
-
-2004/07/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-56mdk
- fix changelog
- merge changelog from the real update
-
- * share/po/br.po: update
-
- * standalone/net_monitor: unsensitive buttons immediatly once ifup/isdown
- has completed
-
-2004/07/19 Vincent Guardiola <vguardiola at mandrakesoft.com>
-
- * authentication.pm: modify nss_path one to sub
- config winbind for AD
-
- * network/smb.pm: Add function write_smb_ads_conf
-
-2004/07/18 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: save the previous bootloader config file (bugzilla
- #10072)
-
-2004/07/17 Daouda Lo <daouda at mandrakesoft.com>
-
- * pam.net_monitor, drakxtools.spec, apps.net_monitor, Makefile: remove
- historical consolehelper files (pam.d and console.apps)
-
-2004/07/16 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/tools.pm: use a tcp ping in check_link_beat if not root
-
- * wizards.pm: do not ask to install already installed packages, prefer to
- install
- uninstalled packages (misc)
-
- * install_steps_gtk.pm: fix predicted time when there is an error
- installing packages
-
-2004/07/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: add a border spacing of 5 pixel (fix #10299,
- from Fabrice Facorat)
-
- * drakxtools.spec: 10-54mdk
-
-2004/07/15 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: change_pt_type() must return a boolean value
-
- * standalone/bootloader-config: make_boot_splash is no good since the same
- initrd is used with or without vga=,
- so call add_boot_splash directly
-
- * bootloader.pm: make_boot_splash is no good since the same initrd is used
- with or without vga=,
- so call add_boot_splash directly
- alt_xxx instead of old_xxx for bootloader labels (as suggested by
- Svetoslav Slavtchev on cooker)
-
- * diskdrake/interactive.pm: encryption key length can now be lower than
- 20, allowing >= 6
-
-2004/07/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * install_steps_interactive.pm: to_bool is what I was looking for, thanks
- Pixel
- perl_checker fix, I should have done it before ...
- automatically detect which media are available in install from ISO
- images
-
- * install_any.pm: remove unneeded return
- automatically detect which media are available in install from ISO
- images
-
- * standalone/drakboot: use bootloader and Xconfig instead of
- detect-resolution
-
-2004/07/13 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: umount nfs directory if an error occurs too
- fix segfault when hostname resolves as weird name without any dot (for
- example 24.159.64.20 resolves as TN-JACKSN-NR1) and abort domain name
- guess in this case
-
- * standalone/net_applet: apply Pixel's suggestion, use //m instead of
- foreach
-
- * mdk-stage1/directory.c: don't forget to umount ISO images
- it is again stupid to use a ramdisk if the install location isn't
- mounted by loopback
-
-2004/07/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bn.po, share/po/fur.po: Added Bengali and Furlan files
-
-2004/07/13 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm: Some factorization. Protection against /var/lib/urpmi being a
- dangling symlink (see bug #9934)
-
-2004/07/13 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: cooker logo
-
-2004/07/12 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/07/12 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_applet: perl_checker fixes
- add a "monitor network" menu item that launches net_monitor
- use drakconnect to configure network
- use 'ip route show' to find the gateway device when no GATEWAYDEV is
- defined
-
-2004/07/12 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm (sort_hds_according_to_bios): when installing on floppy,
- $boot_hd is undefined, but that's ok (bugzilla #10260)
-
- * authentication.pm:
- - add "Active Directory" through winbind (it needs more stuff to work)
- - drop using $val, use directly $authentication->{XXX}
-
-2004/07/09 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: replace lang::get_unneeded_png_lang_files() with
- lang::png_lang_files
-
- * share/list: unicore/PVA.pl is needed
- - adapt to new perl
- - use "*" instead of PERL_VERSION to be more versatile
-
- * rescue/make_rescue_img, rescue/list: use "*" instead of PERL_VERSION in
- list, but ensure only one match
-
- * install_steps.pm: fix commit 1.685: use lang::analyse_locale_name() but
- still use lang::l2locale()
-
- * Makefile: replace lang::get_unneeded_png_lang_files() with
- lang::png_lang_files
- ensure "*" to wildcard a directory in share/list match only once
-
- * tools/Makefile: ask perl where to find package.pm and URPM.pm, this is
- more versatile than using installvendorlib
-
- * install2.pm: fix mounting /sys (why did i switch to using syscall_
- 'mount' directly? and with missing parameters!)
-
- * any.pm: add "ls -l /sys/bus/scsi/devices" in report.bug
- (it helps for debugging getSCSI on 2.6)
-
-2004/07/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: sort
- add Robert Vojta
-
-2004/07/09 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: fix mounting /sys (why did i switch to using syscall_
- 'mount' directly? and with missing parameters!)
-
- * any.pm: add "ls -l /sys/bus/scsi/devices" in report.bug
- (it helps for debugging getSCSI on 2.6)
-
-2004/07/08 keld
-
- * share/po/da.po: updates
- soft/drakcronat/po/da.po soft/drakfax/po/da.po
- soft/GtkMdkWidgets/po/da.po soft/mdkonline/po/da.po
- soft/rpmdrake/po/da.po soft/urpmi/po/da.po
- gi/perl-install/share/po/da.po
- soft/galaxy/thememdk/mandrake_client/po/da.po
-
-2004/07/08 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm: handle s/snd-card/snd/g and
- s/snd-via686|snd-via8233/snd-via82xx/g more generically
- in mergein_conf(), get the "above" value, and don't dirty "probeall"
- rename load_raw() to load_raw_install() and change the prototype
- cleanup
- - create when_load_category()
- - replace regexp [uo]hci on module name with testing category
- "bus/usb"
- - move the special case imm ppa from when_load() to load()
- fix previous commit
- - generalize the snd-pcm-oss case
- - cleanup
- - rename add_alias() into set_alias()
- - create set_sound_slot() and use it
- don't remove "above ... snd-pcm-oss" for the old alias, it's better done
- explictly, and already done by remove_module()
-
- * install_steps_interactive.pm:
- - create X_options_from_o() and use it
- - add freeDriver boot option
- when adding users during install, suggest the user names found in /home
-
- * Xconfig/card.pm, install2.pm, install_steps.pm, install_any.pm:
- - create X_options_from_o() and use it
- - add freeDriver boot option
-
- * lang.pm: merge with MDK-10-update Move changes
-
- * any.pm: fix typo
- merge "language choice dialog" from MDK-10-update
- selectCountry doesn't really need a $o, a $in is enough
- when adding users during install, suggest the user names found in /home
-
- * network/adsl.pm, harddrake/sound.pm, detect_devices.pm,
- network/ethernet.pm:
- - rename add_alias() into set_alias()
- - create set_sound_slot() and use it
-
- * standalone/adduserdrake: when adding users during install, suggest the
- user names found in /home
-
-2004/07/08 rvojta
-
- * standalone/drakedm:
- - typo fix (lost -> lose)
-
-2004/07/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add vincent
-
- * drakxtools.spec: 10-53mdk final
-
- * standalone/drakedm: warn the user before dm exit will kill the session
- (Robert Vojta, #10179)
-
-2004/07/07 Pixel <pixel at mandrakesoft.com>
-
- * mouse.pm: fix comment
- modules::mergein_conf() doesn't need to be given /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
-
- * install_steps.pm, install_steps_interactive.pm, install_any.pm:
- - move configure_pcmcia() and write_pcmcia() out of modules.pm to
- install_any.pm
- - load pcmcia_core, $pcic and ds in one call to modules::load
- - don't pass prefix to write_pcmcia()
-
- * modules.pm: fix indentation
- modules::mergein_conf() doesn't need to be given /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
- modules::mergein_conf() doesn't need to be given /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
- remove non-useful prototypes ($)
- use the module category to decide if it needs alias usb-interface or
- alias ieee1394-controller
- fix typo
- - restrict view of %mappings_24_26 and %mappings_26_24 to modules.pm
- - simplify mapping_24_26(), it now takes only one module name, not a
- list
- - simplify mapping_26_24(), the special case is handled properly in
- %mappings_26_24
- - move configure_pcmcia() and write_pcmcia() out of modules.pm to
- install_any.pm
- - load pcmcia_core, $pcic and ds in one call to modules::load
- - don't pass prefix to write_pcmcia()
- create write_preload_conf()
-
- * standalone/XFdrake: modules::mergein_conf() doesn't need to be given
- /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
- modules::mergein_conf() doesn't need to be given /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
-
- * standalone/printerdrake, standalone/service_harddrake,
- network/ethernet.pm, harddrake/data.pm, network/netconnect.pm,
- install2.pm, modules/interactive.pm, standalone/mousedrake,
- standalone/draksound, standalone/drakxtv: modules::mergein_conf()
- doesn't need to be given /etc/modules.conf
- => prepare for reading either modprobe.conf or modules.conf based on the
- running kernel version
-
-2004/07/07 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Merge fixes from Anthill 927, 929.
- (filenames with spaces, .backupignore, gui behavior)
- Merge fixes from Anthill 927, 929
- (filenames with spaces, .backupignore, gui issues)
-
-2004/07/06 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: update bootsplash even if framebuffer was disabled
-
- * mdk-stage1/config-stage1.h: add missing slash in Mandrake Move image
- location
-
-2004/07/06 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/config-stage1.h: fix blino fix
- doing basename is dumb (is blino too?), really make the symlink relative
-
- * mdk-stage1/disk.c:
- - when the directory is bad, go back to choose another directory
- instead of choosing another device
- (you can still use "Cancel" to choose another device)
- - list files in directory given, not the root directory of the device
-
- * standalone/bootloader-config: fix typo
- - nicer "usage: ..."
- - add actions "add-entry" and "remove-entry"
- - add option --label
- - add option --chainload
- - rename --vmlinuz to --image
-
- * bootloader.pm: remove unneeded spaces in append=" foo"
- write_lilo handles "optional"
- rename var
- cleanup
- cleanup
-
- * mdk-stage1/directory.c: doing basename is dumb (is blino too?), really
- make the symlink relative
-
- * Xconfig/xfree.pm: add 1024x480 (part of bugzilla #5192)
-
- * Xconfig/resolution_and_depth.pm: rename function $set_chosen_x_res to
- $set_chosen_resolution (since it sets both)
- (choose_gtk): ensure default height is the chosen one
-
-2004/07/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/stuff.xs.pl: workaround blind gwenole
- workaround build with new kernels
-
- * standalone/service_harddrake: high level explanation
-
- * drakxtools.spec: 10-53mdk
-
-2004/07/06 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/disk.c:
- - when the directory is bad, go back to choose another directory
- instead of choosing another device
- (you can still use "Cancel" to choose another device)
- - list files in directory given, not the root directory of the device
-
- * mdk-stage1/config-stage1.h, mdk-stage1/directory.c: doing basename is
- dumb (is blino too?), really make the symlink relative
-
-2004/07/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: high level explanation
-
-2004/07/05 jjorge
-
- * share/po/pt.po: rush to beta one man
-
-2004/07/05 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: properly handle error return code in nfs install
-
- * install_any.pm: allow medium change in nfs-iso install
-
- * standalone/net_monitor: try to use $default_intf (and fix the last
- perl_checker warning, yeah)
- perl_checker compliance
- rename $echr and $echt to $scale_r and $scale_t
- remove unused variable $type
-
-2004/07/05 Pixel <pixel at mandrakesoft.com>
-
- * log.pm: use $LOG instead of *LOG
-
- * standalone/draksec: fix #-PO: comment
-
- * install_steps.pm: big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
- allow getpwnam, getgrnam, getgrid to work
-
- * any.pm, partition_table/mac.pm, partition_table/bsd.pm,
- partition_table/dos.pm, diskdrake/removable.pm, partition_table/sun.pm,
- partition_table/gpt.pm, install_steps_interactive.pm, network/smbnfs.pm,
- diskdrake/dav.pm, diskdrake/hd_gtk.pm, lvm.pm, raid.pm,
- install_interactive.pm, install_any.pm, partition_table/raw.pm,
- partition_table.pm: big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
-
- * drakxtools.spec: drakxtools-backend needs ldetect-lst (for
- complete_usb_storage_info())
-
- * fsedit.pm: big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
- create rationalize_options() and use it (bugzilla #3525)
- more checks should be done in this function, and used at more places
- (but where?)
-
- * bootloader.pm: big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
- drop "other" entries in grub conf when the device is unknown
- - handle missing root=/dev/xxx kernel commandline parameter
- - handle grub splashimage option
- oops, revert debugging code
-
- * standalone/bootloader-config: drop --no-link option (already replaced by
- --no-short-name)
- - new option --no-short-name which implies no short labels (usually
- vmlinuz) and no symlinks (usually /boot/vmlinuz)
- - rename --no-link to --no-short-name (keeping compatibility for a few
- days)
-
- * fs.pm: big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
- create rationalize_options() and use it (bugzilla #3525)
- more checks should be done in this function, and used at more places
- (but where?)
- don't set {major} and {minor} to 0 when the device doesn't exist
-
- * diskdrake/interactive.pm: fix function call
- big renaming of field {type} to {pt_type},
- this will allow defining {fs_type} which will always be a string
- whereas {pt_type} will always be a number
-
-2004/07/03 jjorge
-
- * share/po/pt.po: saraiva esta rapido ;-)
-
-2004/07/03 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: fix typo
-
-2004/07/02 fisher
-
- * share/po/uk.po: Ukrainian translation update.
-
-2004/07/02 Olivier Blin <oblin at mandrakesoft.com>
-
- * network/adsl.pm: remove spurious '"pty ', I suck
- pptp support (partial fix for #6515)
-
-2004/07/02 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: ensure proper upgrade: explictly tell urpmi that old
- drakxtools-newt conflicts with drakxtools-backend
-
- * authentication.pm: cleanup
-
-2004/07/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-52mdk
-
- * lang.pm: switch to new japanese fonts (UTUMI Hirosi
- <utuhiro78@yahoo.co.jp>)
- (write) let be aware of install mode
- (write) configure menu-method's language too so that altering language
- is done for KDE menu entries too (instead of just programs' messages)
-
-2004/07/02 vguardiola
-
- * authentication.pm: Add anonymous bind
- remove anonymous entry
- add libsasl2-plug-gssapi when AD is selected
- Change SSL/TLS to SSL or TLS
- add uc_domain to realm section in /etc/krb5.conf
- padbol
-
-2004/07/01 Olivier Blin <oblin at mandrakesoft.com>
-
- * any.pm: add fluxbox in known window managers list
-
- * mdk-stage1/network.c: rephrase previous patch, with correct indentation
- this time
- add a slash at beginning of the given directory if not already present
- (ftp and http install)
-
-2004/07/01 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: default consolefont is lat0-16, no more lat0-sun16
-
- * authentication.pm, bootloader.pm: fix typo
-
- * standalone/draksplash, standalone/printerdrake, standalone/logdrake,
- standalone/draksec, standalone/drakfloppy, standalone/drakfont,
- standalone/drakbug, standalone/drakperm, standalone/harddrake2,
- standalone/drakTermServ, standalone/net_monitor, standalone/drakclock,
- standalone/drakups: revert ugly code printing "This program cannot be
- run in console mode",
- it is easily done in ugtk2.pm
-
- * Xconfig/xfree.pm: fix typo causing multiple "Keyboard" entries in
- XF86Config (bugzilla #10163)
-
- * drakxtools.spec: create package drakxtools-backend
-
- * mdk-stage1/modules.c, install2.pm: stage1 used to write files
- /tmp/network, /tmp/ifcfg-eth0, /etc/modules.conf
- but those files are in /stage1 after pivot rooting, so:
- - write modules.conf in /tmp instead of /etc
- - cp those files from /stage1/tmp to /tmp before umounting /stage1
-
-2004/07/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm, standalone/harddrake2: typo fix
-
- * drakxtools.spec: add bug reference
- 10-50mdk
-
-2004/06/30 fisher
-
- * share/po/uk.po: Ukrainian translation update
- Sync'ed with .pot
-
-2004/06/30 fwang
-
- * share/po/zh_CN.po: update
-
-2004/06/30 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/net_monitor: try to display arrows closely to transmission
- values
- always draw an arrow next to transmitted amount
- always display a speed label for transmitted graph
- allow the user to use different scales for received and transmitted
- prepare code to use distinct scales for received and transmitted
- remove most magic numbers, prefer usage of $width and $height
-
-2004/06/30 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: use print + exit instead of die
- (so that standalone tools don't need to do it by hand)
-
- * standalone/bootloader-config: when doing update_splash or remove_splash,
- call when_config_changed (mainly for lilo)
- please perl_checker
-
- * network/smb.pm: shut up "smbclient -L"
-
- * authentication.pm: for Active Directory, allow: Kerberos, SSL/TLS,
- simple and anonymous
-
-2004/06/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfloppy (build_it) add translator hint
-
- * standalone/net_monitor: fix button layout
-
-2004/06/29 fisher
-
- * share/po/uk.po: translation update
-
-2004/06/29 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: properly handle "back" behavior in mirror list
- step
- do not unset automatic if mirror list selection fails, we know it wasn't
- automatic at that point
- remove http proxy settings from interface structure, that was really
- dumb
- allow to use a specific ACNAME for pppoe connections
-
- * standalone/drakupdate_fstab: use fsedit::is_same_hd in drakupdate_fstab
- and revert previous change in fs::subpart_from_wild_device_name (do not
- fill both devfs_device and device fields)
-
- * fs.pm: use fsedit::is_same_hd in drakupdate_fstab and revert previous
- change in fs::subpart_from_wild_device_name (do not fill both
- devfs_device and device fields)
- do not add default device in device hash, it will be filled with result
- from fs::subpart_from_wild_device_name
- always update $part{device} in fs::subpart_from_wild_device_name because
- /dev is stripped (fix #6982, #10175)
-
- * mdk-stage1/tools.c, mdk-stage1/directory.c, mdk-stage1/probing.c:
- variable declaration fixes (spotted by neofutur)
-
- * mdk-stage1/network.h: remove http proxy settings from interface
- structure, that was really dumb
- allow to use a specific ACNAME for pppoe connections
-
- * mdk-stage1/adsl.c: allow to use a specific ACNAME for pppoe connections
-
-2004/06/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/et.po, share/po/uz@Latn.po: updated Estonian
- and Uzbek files
-
-2004/06/29 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: in is_same_hd(), both hds can have {device} unset, it doesn't
- mean they are the same
-
- * drakxtools.spec:
- - add bootloader-config (used by bootloader-utils and bootsplash
- scripts)
- - drakboot (pixel):
- o major backend rewrite b/c of code sharing with new installkernel
- o when adding a new kernel, have a nicer new name for conflicting
- entry
- o when modifying kernel parameters in all entries, skip the
- "failsafe" entry (#10143)
- o when modifying a symlink, ensure we also use the long name for the
- old symlink in the existing entries
- - drakconnect (Olivier Blin):
- o never disable "DHCP host name" entry box, it shouldn't be linked
- with "Assign host name from DHCP address" checkbox (#2759, #9981)
- o unblacklist sis900 since its link beat detection works with latest
- kernels
- - draksound: remove unneeded "above" lines in modules::write_conf
- (Olivier Blin) (#8288)
- - ugtk2 layer: catch missing wizard pixmap, otherwise we end up with
- unshown windows and error messages can't pop up (pixel)
- - don't require mkbootdisk
-
- * Makefile: add missing share/net_monitor.desktop
-
- * bootloader.pm:
- - mkinitrd() calls make-boot-splash after building the initrd
- (since /sbin/mkinitrd doesn't do it anymore)
- - change mkinitrd() parameters
- - change add_kernel() parameters and add option b_no_initrd
- (it is available in installkernel though i suspect it is unused)
- - after reading config file, get {perImageAppend} and {default_vga}
- (it was only done for lilo and {perImageAppend})
- - keep the current kernel for linux-nonfb too (it was only done for
- failsafe)
- - add create_link_source(), action(),
- when_config_changed_{lilo,grub,yaboot}
- - create write_yaboot()
-
- * Makefile.config, standalone/bootloader-config: add bootloader-config
- (tested for adding and removing in simple cases)
-
- * .perl_checker: add "Getopt::Long" (used by bootloader-config)
-
-2004/06/28 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: fix titi's regexp for matching centrino
-
- * any.pm: don't set ICEAUTHORITY using $ENV{HOME} for kde (bugzilla
- #10144)
-
- * bootloader.pm: after install, when modifying kernel parameters in all
- entries, skip the "failsafe" entry
- (bugzilla #10143)
-
- * ugtk2.pm: make perl_checker a little more happy
- catch missing wizard pixmap, otherwise we end up with WizardWindow being
- non
- shown and error messages can't pop up
- disallow switching to expert mode using Alt-e
-
-2004/06/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/Makefile.PL: drop useless linkage since X11 stuff was split out of c
- module
-
-2004/06/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/directory.c: fix typo
- do not use ramdisk in nfs install
- add missing include for basename()
- use relative symlink to image location in disk/nfs install, to have a
- working stage2
-
-2004/06/25 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: remove deprecated rhimage symlink
-
- * bootloader.pm: when adding a new kernel, have a nicer new name for
- conflicting entry
- when modifying a symlink, ensure we also use the long name for the old
- symlink in the existing entries
-
- * install_steps.pm: fix blino stage1 change (i think he likes breaking
- things ;p)
- bootloader::add_kernel() do a good job at replacing symlinks with the
- real
- kernel/initrd file name, so don't need to do it here
-
- * install_any.pm: use internal_error() instead of die'ing with no
- arguments
- fix blino stage1 change (i think he likes breaking things ;p)
-
-2004/06/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/directory.c: fix typo
- do not use ramdisk in nfs install
- add missing include for basename()
- use relative symlink to image location in disk/nfs install, to have a
- working stage2
-
- * mdk-stage1/network.c: unset automatic in ftp/http install when ramdisk
- can't be loaded
- use new http_proxy variables instead of the old answers (not anymore
- available)
-
- * network/netconnect.pm: never disable "DHCP host name" entry box, it
- shouldn't be linked with ""Assign host name from DHCP address" checkbox
- (#2759, #9981)
- unblacklist sis900 since its link beat detection works with latest
- kernels
-
-2004/06/25 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakTermServ: simplify using new bootloader.pm
-
- * Xconfig/various.pm, any.pm, standalone/drakboot: adapt to new
- bootloader.pm
-
- * bootloader.pm: when adding a new kernel, have a nicer new name for
- conflicting entry
- when modifying a symlink, ensure we also use the long name for the old
- symlink in the existing entries
- fix 2 typos
- drop obsolete function
- drop obsolete lnx4win_file()
- major cleanup and rewrite
- - some functions have been renamed
- - some functions have changed prototype
- - no more bootloader::vga_modes, we use
- Xconfig::resolution_and_depth::bios_vga_modes()
- - no more detectloader, it is now detect_main_method(),
- but notice that bootloader::read() + bootloader::write() abstract all
- this!
- - update_for_renumbered_partitions() is surely broken :)
- - sort_hds_according_to_bios() and mixed_kind_of_disks() uses new
- function hd2bios_kind()
- - new data structure "kernel_str"
- - lilo doesn't need so much help as it used to be, so don't put as
- much
- "disk=/dev/sda bios=0x80" as before
- some goals:
- - don't rely on device names
- (this allows not to care too much about devfs vs udev vs ...)
- - kernels can be named something else than /boot/vmlinuz*,
- please use the various functions to construct the initrd file name,
- the symlink name...
-
- * fs.pm:
- - enhance subpart_from_wild_device_name() to handle "sda" the same as
- "/dev/sda" (when /dev/sda exists)
- - new function device2part() which uses subpart_from_wild_device_name
- and the
- given fstab to convert the device name to the corresponding structure
- (this allows not relying too much on the device name)
-
- * install2.pm: remove deprecated rhimage symlink
-
- * install_steps.pm: fix blino stage1 change (i think he likes breaking
- things ;p)
- bootloader::add_kernel() do a good job at replacing symlinks with the
- real
- kernel/initrd file name, so don't need to do it here
- adapt to new bootloader.pm
-
- * install_any.pm: use internal_error() instead of die'ing with no
- arguments
- fix blino stage1 change (i think he likes breaking things ;p)
- - adapt to new bootloader.pm
- - simplify
-
-2004/06/25 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Make perl_checker silent
-
-2004/06/25 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: unset automatic in ftp/http install when ramdisk
- can't be loaded
- use new http_proxy variables instead of the old answers (not anymore
- available)
-
-2004/06/25 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: drop obsolete function
- drop obsolete lnx4win_file()
- major cleanup and rewrite
- - some functions have been renamed
- - some functions have changed prototype
- - no more bootloader::vga_modes, we use
- Xconfig::resolution_and_depth::bios_vga_modes()
- - no more detectloader, it is now detect_main_method(),
- but notice that bootloader::read() + bootloader::write() abstract all
- this!
- - update_for_renumbered_partitions() is surely broken :)
- - sort_hds_according_to_bios() and mixed_kind_of_disks() uses new
- function hd2bios_kind()
- - new data structure "kernel_str"
- - lilo doesn't need so much help as it used to be, so don't put as
- much
- "disk=/dev/sda bios=0x80" as before
- some goals:
- - don't rely on device names
- (this allows not to care too much about devfs vs udev vs ...)
- - kernels can be named something else than /boot/vmlinuz*,
- please use the various functions to construct the initrd file name,
- the symlink name...
-
- * install_any.pm:
- - adapt to new bootloader.pm
- - simplify
-
- * standalone/drakTermServ: simplify using new bootloader.pm
-
- * Xconfig/various.pm, any.pm, standalone/drakboot, install_steps.pm: adapt
- to new bootloader.pm
-
- * fs.pm:
- - enhance subpart_from_wild_device_name() to handle "sda" the same as
- "/dev/sda" (when /dev/sda exists)
- - new function device2part() which uses subpart_from_wild_device_name
- and the
- given fstab to convert the device name to the corresponding structure
- (this allows not relying too much on the device name)
-
- * share/rpmsrate:
- - scim-uim requires scim, no need to have both
- - scim-chinese requires scim, no need to have both
-
-2004/06/24 fisher
-
- * share/po/uk.po: translation update.
-
-2004/06/24 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * mdk-stage1/probing.c: don't redefine buf for /proc/scsi/scsi (size 5000
- instead of 2048)
- don't redefine buf for /proc/scsi/scsi (size 5000 instead of 512)
-
-2004/06/24 Olivier Blin <oblin at mandrakesoft.com>
-
- * modules.pm: perl_checker compliance
- remove unneeded "above" lines in modules::write_conf
- delete "above" lines when removing a sound alias with
- modules::remove_alias_regexp
- fix stupid typo
- in modules::when_load, try to find the best sound slot index instead of
- always overwritting sound-slot-0 (#7890)
-
- * network/tools.pm, network/network.pm: properly handle ascii WEP keys
- (#9884)
-
-2004/06/24 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate:
- - add gv (not installed by default) to have it in the package tree
- (bugzilla #10127)
- - add pciutils (not installed by default) in MONITORING (but i don't
- think it will get to the package tree)
-
- * mouse.pm: module hid is now named usbhid (thanks to svetljo on cooker)
-
-2004/06/24 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * standalone/draksplash, standalone/drakperm, standalone/drakbug,
- standalone/harddrake2, standalone/printerdrake, standalone/logdrake,
- standalone/draksec, standalone/drakfloppy, standalone/drakTermServ,
- standalone/net_monitor, standalone/drakfont, standalone/drakups,
- standalone/drakclock: Some standalone tools don't compile when run from
- console
-
-2004/06/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_steps_interactive.pm (acceptLicense) just reboot when one cancel
- the globetrotter first time wizard
- (acceptLicense) just reboot when one cancel the globetrotter first time
- wizard
-
- * drakxtools.spec: 10-48mdk
-
- * share/rpmsrate:
- - switch japanese to scim+uim and scim
- - switch chinese to scim
-
- * lang.pm: switch chinese to scim by default
- fix gtk IM module for scim IM
- fix xcin IM
- add back support for kinput2 IM
- sort CJK's IM entries
- - factorize im settings
- - change default IM according to cooker-i18n feedback:
- o default all chinese locales to fctix IM
- o default all japanese locales to scim+uim IM
-
- * standalone/service_harddrake.sh: rollback service priority
-
-2004/06/23 Olivier Blin <oblin at mandrakesoft.com>
-
- * any.pm: remove global vga choice to please Pixel and Titi
- add a global vga option in any::setupBootloader__general (fix bug 8957)
-
- * standalone/drakclock: be mouse wheel aware (fix bug 9926)
-
- * mdk-stage1/Makefile: define _FILE_OFFSET_BITS=64 so that stat() is large
- files aware
-
- * modules.pm: fix another typo from Titi in #9112 fix (#6802)
-
- * mdk-stage1/directory.c: revert the workaround on stat() now that it
- works on large files
-
- * standalone/drakboot: remove unneeded quotes
- fix processing of config file broken again by Titi
- please perl_checko the Clean Keeper
- remove spurious spaces
- ask for bootloader choice when framebuffer isn't configured (fix bug
- 9925)
- remove unused variable
-
-2004/06/23 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: good_default_monitor() should work *nearly*
- everywhere, so use it for the auto_install fallback
- (this is used by mandrakemove)
- good_default_monitor() should work *nearly* everywhere, so use it for
- the auto_install fallback
- (this is used by mandrakemove)
-
- * any.pm: kernelVersion() is unused (only bootloader::mkbootdisk() used
- it, and it has already been removed)
-
-2004/06/23 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: Make perl_checker happy
- Support for supplementary CDs during installation (from the 10.0
- update branch.)
-
-2004/06/23 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: code cleanup per Pixel
-
-2004/06/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm: use upcase letters whenever needed
-
- * network/netconnect.pm:
- - unblacklist tg3 since QA has confirmed it works smoothly
- - blacklist buggy madwifi_pci
-
- * standalone/drakboot:
- - fix processing of config file broken by magic olivier
- - reuse cat_()
-
- * modules.pm: merge fix from MDK-10-branch: tv modules weren't loaded on
- boot
-
- * share/po/br.po: update
-
-2004/06/22 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: fix indentation
- do not update bootsplash in autologin wizard
- remove spurious comma and spaces
-
- * network/netconnect.pm: rephrase zeroconf dialog (cybercfo)
- blacklist sis900 and tg3 modules for network hotplugging
-
-2004/06/22 Pixel <pixel at mandrakesoft.com>
-
- * any.pm:
- - use Xconfig::resolution_and_depth::bios_vga_modes() instead of
- %bootloader::vga_modes
- - remove broken sparc code
-
- * docs/HACKING, install2.pm: rename --test in --testing for install2 (more
- coherent with standalone tools)
-
- * ugtk2.pm:
- ->set_title doesn't like title undef, give it '' instead
- (to remove ugly warnings at install)
-
- * Xconfig/resolution_and_depth.pm: perl_checker compliance
- - export @bios_vga_modes (needed for bootloader vga=)
- - to_string should return '' instead of ()
- remove duplicate (use existing function to_string())
- sync with detect-resolution
-
- * bootloader.pm: add check_enough_space() and use it
- - fix typo
- - remove silo code (sparc)
-
-2004/06/22 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Make the CD-Rom install with supplementary CD work
- (don't forget to
- re-mount the main CDs).
-
- * share/po/fr.po: French translations for new messages
-
-2004/06/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: update fields description (baud
- <baud123@tuxfamily.org>)
- update doc urls (baud <baud123@tuxfamily.org>)
- add new ISP entries (baud <baud123@tuxfamily.org>)
- fix Telia entry (baud <baud123@tuxfamily.org>)
- fix Free dns (baud <baud123@tuxfamily.org>)
- merge duplicate Free entries
- enhance tel9com name (baud <baud123@tuxfamily.org>)
- kill duplicate spanish entry (baud <baud123@tuxfamily.org>)
- enhance a few entries (baud <baud123@tuxfamily.org>)
- fix spanish isp name
-
- * drakxtools.spec: fix build broken by net_applet
- move net_applet in right package (aka drakxtools-gtk)
- 10-47mdk
-
- * standalone/net_applet: perl_checker fixes
- (getIP) fix build
-
-2004/06/21 Daouda Lo <daouda at mandrakesoft.com>
-
- * Makefile.drakxtools:
- - autostart file for KDE/GNOME
- - add net_applet file (installed in bindir)
-
- * drakxtools.spec:
- - net_applet to watch network connection
-
- * Makefile.config:
- - added net_applet
-
- * share/net_applet.desktop:
- - autostart file for KDE/GNOME
-
- * pixmaps/connected.png, pixmaps/disconnected.png: network applet state
- icons
-
- * standalone/net_applet:
- - cleaning titi factorization
- - net_applet to watch network connection
-
-2004/06/21 Florin Grad <florin at mandrakesoft.com>
-
- * network/shorewall.pm: accept from fw to loc
-
-2004/06/21 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/network.c: allow to use ISO images in NFS install
-
- * mdk-stage1/directory.c: workaround the fact that stat() fails on large
- files (like DVD ISO images)
- add log message when using directory as a mirror tree
- split directory specific functions and move them from disk.c to
- directory.c (will be used in NFS install)
-
- * mdk-stage1/disk.c, mdk-stage1/directory.h: split directory specific
- functions and move them from disk.c to directory.c (will be used in NFS
- install)
-
- * mdk-stage1/Makefile: allow to use ISO images in NFS install
- split directory specific functions and move them from disk.c to
- directory.c (will be used in NFS install)
-
-2004/06/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: fix missing trailling quotes
-
- * standalone/logdrake: kill stupid useless code
-
- * standalone/harddrake2: do not display version number in title bar since
- it's useless
- according to interface team
-
- * standalone/net_applet (getIP) simplify
-
-2004/06/20 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/06/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/mousedrake: kill dead code
-
- * standalone/harddrake2: show list of partitions
- display better info for hard disks
- really ensure that "identification" section is displayed first
- still show info field if detect_devices::getIDE() failled to parse it
- for a
- known vendor string
- still show mass media fields for mass media that are not hard disks (eg:
- cdroms, dvdrom, burners, ...)
- remove old SCSI garbage code
- adapt fields name to new behavior of mousedrake on 2.6.x kernels
- smoother mouse data: sort fields
- show more fields for mice
- move mice help where it belongs
- simplify
- display media type for mass storage devices
- fix undisplayed fields:
- - if a per-class group exists, prefer it upon generic group
- - only care about current group fields, not about those of the group
- that has
- the same name in generic
- show splited vendor and description fields for USB hard disks too
-
- * share/po/fr.po: spell-check french translations
- update
- typo fixes
-
- * drakxtools.spec: 10-46mdk
- cleanups build
- typo fix
-
- * standalone/service_harddrake: fix logs of newly added hardware
- fix warnings
- only log about nv <-> nvidia swtich only if we do have to perform it
- fix mouse autoconfiguration done on every boot instead of on 2.4.x/2.6.x
- switches
- simplify x11 autoconf
- log error if a tool isn't executable
- simplify globetrotter case: skip non interactive stuff
- do not uselessy fork shells
- log error when we cannot run the config tool
- faster auto mouse reconfiguration on major kernel switch
- harddrake wasn't aware of newly added wireless network card since early
- 2004/02
- fix logs of newly added hardware
- fix mouse autoconfiguration done on every boot instead of on 2.4.x/2.6.x
- switches
-
-2004/06/19 yrahal
-
- * share/po/ar.po: Committing Arabic translation
- Sync with Arabeyes.org's CVS
-
-2004/06/18 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: in iso install, use ISOPATH environment variable
- instead of loopback device filename (limited to 64 chars)
-
- * pkgs.pm: add and use install_any::method_allows_medium_change
- in disk-iso install, automatically choose and change ISO images,
- according to their volume id and application id
-
- * install_steps_gtk.pm, install_steps_interactive.pm: fix
- method_allows_medium_change calls (I suck)
- add and use install_any::method_allows_medium_change
- in disk-iso install, automatically choose and change ISO images,
- according to their volume id and application id
-
- * c/stuff.xs.pl: in iso install, use ISOPATH environment variable instead
- of loopback device filename (limited to 64 chars)
- in disk-iso install, automatically choose and change ISO images,
- according to their volume id and application id
-
- * install_any.pm: in disk-iso install, strip old root from ISOPATH and
- remove iso file from path if present
- in iso install, use ISOPATH environment variable instead of loopback
- device filename (limited to 64 chars)
- add and use install_any::method_allows_medium_change
- in disk-iso install, automatically choose and change ISO images,
- according to their volume id and application id
-
-2004/06/18 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * install_any.pm: Don't ask a supplementary CD for upgrades
-
-2004/06/18 tsdgeos
-
- * share/po/ca.po: typos
-
-2004/06/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakupdate_fstab: merge floppies support from MDK-10-branch
-
- * harddrake/autoconf.pm: merge x11 autoconf support from MDK-10-branch
-
- * authentication.pm (configure_krb5_for_AD) fix kerberos server lookup
- (vincent guardiola)
-
- * install_steps_newt.pm: fix comment
-
- * standalone/service_harddrake: only stop boot progressbar if there a non
- automatic tool to run
- merge globetrotter support from MDK-10-branch
- merge mouse autoreconfiguration when switching between 2.4.x and 2.6.x
- kernels
- from MDK-10-branch
- merge x11 autoconf support from MDK-10-branch
- only stop boot progressbar if there a non automatic tool to run
-
- * install_steps_gtk.pm, do_pkgs.pm, install2.pm, install_gtk.pm: merge
- globetrotter support from MDK-10-branch
-
- * standalone/harddrake2: add help for new fields
- group driver fields for sound cards
- do not display PCI/USB vendor id in identification section
- - simplify item grouping
- - always show identification first
- fix displaying pci/usb vendor and device id
- display bus (PCI, USB, ...) first
- fix help for floppies
- - add infrastructure in order to group fields
- - start to group fields for mass media, CPUs and generic PCI/USB
- devices
-
- * drakxtools.spec: update 10-45mdk
- 10-45mdk
-
- * Xconfig/card.pm: merge from MDK-10-branch: add support for ATI_GLX and
- NVIDIA_GLX cohabitation
-
-2004/06/17 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/probing.c: enlarge your scsi buffer (previous size wasn't
- enough with more than one scsi device, fixed thanks to nplanel)
-
- * mdk-stage1/disk.c: add disk-iso install method
- do not delete loopbacks devices before umount but after
-
-2004/06/17 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm:
- - AD_users_db is cn=users,ldap_domain and not
- cn=users,dc=servername,ldap_domain
- - AD_user (for binddn) is user@domain instead of
- cn=user,cn=users,ldap_domain
- - better system-auth krb5 configuration
- (all this as requested by Vincent Guardiola)
-
-2004/06/17 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: Install with a supplementary CD:
- allow to override the main compssUsers and rpmsrate
-
-2004/06/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump buildrequires on ldetect-devel so that tools get
- proper module
- information on USB devices (we should really use a shared library
- instead ...)
- compile everything with standard flags from rpm
-
- * harddrake/data.pm (pciusb_id) fix duplicated USB disks (in both disk and
- unknown categories)
- (set_removable_configurator) fix typo preventing adding entries in
- /etc/fstab for new removable media
- (pciusb_id) fix duplicated USB disks (in both disk and unknown
- categories)
- (set_removable_configurator, set_removable_remover) use the same flags
- as hotplug does when calling drakupdate_fstab
- (set_removable_configurator) fix adding a removable medium
-
- * tools/cvslog2changelog.pl: perl_checker cleanups
-
- * standalone/drakupdate_fstab: add support for floppies
-
- * lang.pm, ugtk2.pm: kill warnings
-
- * standalone/service_harddrake: autoconfigure mouse when swtiching back
- between 2.4.x and 2.6.x kernels
-
- * standalone/harddrake2: kill warnings
- kill usb_id like usb_vendor is (for USB mass storage media)
- add missing field for hard disks
- the split of the cpu help nicely show up that mice were using CPU help.
- let's describe their "name" field too.
- split out CPU help
- use new infrastructure in order to not display useless floppy help for
- SCSI
- disks
- add infrastructure for per class help (and add missing space around
- brackets
- that perl_checker did miss :-()
- perl_checker cleanup
-
- * install_steps_gtk.pm, install_gtk.pm: fix applying keyboard
- configuration in globetrotter's first time wizard
-
- * Xconfig/card.pm (install_server) remove proprietary gl libraries when
- configuring a non
- ATI/NVIDIA card and redo ldconfig cache accordingly
- (to_raw_X) load non nvidia glx for all non nvidia cards, thus fixing 3D
- on non
- NVIDIA/ATI gfx card
-
-2004/06/15 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: redesign of the ISO image selection dialog, add an
- entry in the list to allow to use the directory as a mirror tree
- do not try to mount the partition in testing mode, assume it is already
- mounted
- del loop device after unmount
-
- * mdk-stage1/Makefile: upgrade distrib version
-
- * mdk-stage1/network.c: allow to go back in proxy selection window
- fix return code handling in mirror list selection
- fix typo spotted by John Keller
- redesign to add "Specify the mirror manually" entries in mirror list
- selection
-
-2004/06/15 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: rename is_same_part to are_same_partitions (not that much
- clear, but at least a little)
- use "find { ... }"
-
- * Makefile: allow easy tracing of stage2
- remove PERL_INSTALL_DEBUG code modifying install2 (unused and not
- working anyway)
-
- * diskdrake/hd_gtk.pm, diskdrake/interactive.pm: rename is_same_part to
- are_same_partitions (not that much clear, but at least a little)
-
- * keyboard.pm: the presence of loadkeys doesn't mean it is the regular
- one. (fixes loadkeys calling itself)
-
- * mdk-stage1/lomount.c, devices.pm: increase the number of loopbacks
- (needed for mandrakemove where the default (8) is much too low :)
- increase the number of loopbacks (needed for mandrakemove where the
- default (8) is much too low :)
-
- * install_any.pm: remove some broken sparc code
-
- * fs.pm:
- - new function subpart_from_wild_device_name()
- - use it
-
-2004/06/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: .backupignore issues (email reports), typo in
- "other" routine
- .backupignore issue (email reports), typo in "other" routine
-
-2004/06/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm (set_removable_configurator) switch from diskdrake to
- drakupdate_fstab
- (like hotplug we just automatically guess what's better)
- update comment
- rename usbnet as net_modules
-
- * drakxtools.spec: fix 10-44mdk's changelog
-
-2004/06/14 jjorge
-
- * share/po/pt.po: saraiva
-
-2004/06/14 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/disk.c: rephrase question again
- rephrase again the disk install questions (thanks to Pierre Jarillon,
- Rapsys|Phoenix and John Kelller)
- rephrase the partition selection message
-
- * mdk-stage1/network.c: move mirror list functions upper
- rename variables for extra cohesion
- fix brown paper bug combo
- always fill proxy fields of interfaces
-
- * mdk-stage1/stage1.c: do not mount sysroot in testing mode
-
-2004/06/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/am.po, share/po/lt.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- updated pot file
-
- * pixmaps/langs/lang-ber.png: Added image for Berber language, so it is
- available when it would be needed
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
-
- * share/po/nn.po: updated Nynorsk file
- updated pot file
-
- * share/po/cy.po: updated Welsh file
- updated pot file
-
-2004/06/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: enforce introduction of translators hints into
- translation catalogs
- (perl_checker should have been loudly complain on those!!!! :-():
- - add missing coma caracter
- - move them near translations
- note that i didn't bother check po comments that already have the proper
- comma. instead this should be done by perl_checker which should warn
- about po
- comments out of translation calls and tags contexts
- display more data about hard disks (geometry, number of primary/extended
- partitions)
-
- * network/netconnect.pm, standalone/drakTermServ, standalone/drakbackup,
- ugtk2.pm: merge fixes from HEAD
-
- * standalone/service_harddrake: do not automatically switch from nv to
- nvidia (in order to handle
- cases where nvidia module crashes the system)
- merge fix from HEAD
-
- * interactive/newt.pm (ask_fromW_real) make previous button be labeled
- "cancel" when needed
-
- * drakxtools.spec: 10-44mdk
-
- * standalone/printerdrake, standalone/draksec, standalone/drakconnect:
- enforce introduction of translators hints into translation catalogs
- (perl_checker should have been loudly complain on those!!!! :-():
- - add missing coma caracter
- - move them near translations
- note that i didn't bother check po comments that already have the proper
- comma. instead this should be done by perl_checker which should warn
- about po
- comments out of translation calls and tags contexts
-
- * standalone/drakperm: enable drag on drop when looking only at customized
- settings
-
- * harddrake/data.pm: since some hard disks are USB models, we've to
- filtering them out once we've
- detected them in order to prevent tem to appear in the "unknown/other"
- category
- ethernet card detection: only rely on driver for matching ethernet
- cards, thus
- preventing mislisting of other/unwanted devices (eg: bluetooth, wlan,
- AX25).
- last but not least, it enables us to catch
- ldetect/ldetect-lst/detect_devices
- bugs where some devices are *not* seen by drakx and drakconnect.
- remove useless filtering in bridges detection code since proper
- filtering (for
- dobles) is already done at the upper level.
- fix misdetection of nvidia nforce ethernet cards (broken since forcedeth
- replaced nvnet on 2004-01-21 in MDK10's ldetect-lst)
- merge fixes from HEAD
-
- * standalone/draksplash: enforce introduction of translators hints into
- translation catalogs
- (perl_checker should have been loudly complain on those!!!! :-():
- - add missing coma caracter
- - move them near translations
- note that i didn't bother check po comments that already have the proper
- comma. instead this should be done by perl_checker which should warn
- about po
- comments out of translation calls and tags contexts
- merge fixes from HEAD
-
-2004/06/11 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/stage1.c: enable MODE_TESTING if the DEBUGSTAGE1 environment
- variable is set
-
- * mdk-stage1/tools.c: in testing mode, try to open cmdline file in current
- directory before trying in /proc
-
- * mdk-stage1/disk.c: let the user choose between ISO images containing a
- stage2 installer if a directory containing ISO images has been specified
-
- * mdk-stage1/network.c: do not ask proxy settings if interface wasn't
- brought up (stupid me)
- add http proxy settings in interface_info struct, and ask them right
- after the interface is up, so that they can be used to fetch the mirror
- list
-
- * mdk-stage1/network.h: add http proxy settings in interface_info struct,
- and ask them right after the interface is up, so that they can be used
- to fetch the mirror list
-
-2004/06/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksplash: merge lost hunk
- s/_([xy])\b/_\1\1/ so that cperl-mode is happier
- make draksplash work again...
-
-2004/06/10 Olivier Blin <oblin at mandrakesoft.com>
-
- * standalone/drakboot: fix trainee suckiness
-
- * mdk-stage1/config-stage1.h: use new product name (Mandrakelinux)
-
- * mdk-stage1/mount.c, mdk-stage1/disk.c: ntfs support in install from disk
- (on nplanel request, but to actually work, it would need the BOOT
- kernels to include the ntfs module)
-
-2004/06/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po: updated Tajik file
-
-2004/06/10 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: perl_checker compliance
- - hde is ide/host1/bus0/target0/lun0, and not
- ide/host0/bus2/target0/lun0
- - add host in hd struct for bus ide
-
-2004/06/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: first lan step: replace the "manual choice"
- string by the more
- meaningfull "manually load a driver"
- first lan step: do not compare translated strings, use format callback
-
- * security/level.pm (get) default to standard level; else security::msec
- won't be able to
- load any values when level is not set (thus resulting in an empty
- draksec GUI)
-
- * tools/cvslog2changelog.pl: add olivier blin
-
-2004/06/09 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/stage1.c: in move, use stg1_info_message() instead of
- stg1_error_message() not to disable MODE_AUTOMATIC
- in move, use stg1_info_message() instead of stg1_error_message() not to
- disable MODE_AUTOMATIC if not enough memory
-
-2004/06/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
- * drakxtools.spec: 10-43mdk
-
-2004/06/08 Olivier Blin <oblin at mandrakesoft.com>
-
- * mdk-stage1/config-stage1.h: in ftp install, display a mirror list
- (fetched from http://www.linux-mandrake.com/mirrorsfull.list) to allow
- the user to choose the medium, the host, and automatically find the path
- on mirror (next try, I suck Pixel said)
-
- * mdk-stage1/network.c: in ftp install, display a mirror list (fetched
- from http://www.linux-mandrake.com/mirrorsfull.list) to allow the user
- to choose the medium, the host, and automatically find the path on
- mirror
- include missing header for uname
- in ftp install, check that modules for the boot kernel are available in
- mdkinst live location (they won't be used by the installer, but if they
- aren't here, they probably won't be in the mdkinst tarball)
-
- * mdk-stage1/url.h, mdk-stage1/url.c: list only the requested file in
- ftp_get_filesize() instead of the whole directory (the buffer happens to
- be too small sometimes), make this function available for other modules
-
-2004/06/08 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/monitor.pm: fix typo causing "Out of memory"
-
- * Xconfig/card.pm, install_steps_gtk.pm, share/list.i386, pkgs.pm,
- standalone/drakedm, install2.pm, install_steps.pm, Xconfig/main.pm,
- Xconfig/test.pm, standalone/XFdrake, install_steps_interactive.pm:
- switch to xorg
-
- * authentication.pm: add "Active Directory" authentication (alpha code)
-
- * share/rpmsrate:
- - obsolete: gnome-vfs-extras xanim nist mtv gatos mokmod
- ghostscript-utils tetex-latex-arab-doc sgml-tools
- ghostscript-module-SVGALIB kdenetwork-kit ApacheJServ
- cameleo unarj unstuff postgresql-python mercury NVIDIA_nforce*
- fonts-type1-baltic gnorpm
- - obsolete games: xtrojka bunnies xgammon xpuzzles 7colors xrally
- gtulpas gtkgo
- - obsolete and the new one is auto required: MAKEDEV
- - xine-oss xine-xv are in xine-plugins which is required by xine-ui
- - gatos is no more, replacing with ati.2 (??)
- - replace php with php-cgi (??)
- - replace scanner-gui with xsane and "KDE kdegraphics-kooka"
- - replace clispp2c with clisp (??)
- - replace autoconf with autoconf2.1
- - replace automake with automake1.4
- - switch to gimp2_0
- - everybuddy is now ayttm
- - gimp-plugin is no more, but adding gimp-help
- - Epplets is now epplets (since a lot of time)
- - mandrake-galaxy is now mandrakegalaxy
- - prelude is now prelude-manager
- - kdenetwork-kmail is now kdepim-kmail (same for kdepim-korn and
- kdepim-knode)
- - many XFree86-* are now xorg-x11-*, others are removed (the old
- XFree3 servers)
- - libxfree86-devel is now libxorg-x11-devel
- - libxfree86-static-devel is now libxorg-x11-static-devel
- - tight-vnc-doc is now tightvnc-doc
- - php-manual is now php-manual-{en,fr,...}
- - sketch is now skencil
- - libgr-progs is now netpbm
- - MySQL-devel is now libmysqlXX-devel
- - replace xkobo with skobo
- - fix typo for xtraceroute (bad layout for flag 3D)
-
- - libiw27 instead of libiw26
- - libhpojip0 instead of libhpojip
-
-2004/06/08 Rafael Garcia-Suarez <rgarciasuarez at mandrakesoft.com>
-
- * share/list: A chunk of the previous patch wasn't suitable for 10.0
- Report revisions 1.124, 1.125 and 1.126 from HEAD
-
-2004/06/08 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Bugzilla #9877 - deal with kernel ring buffer
- that is flooded with msgs
- for tape device detection.
-
-2004/06/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakedm: kill dead code
-
- * tools/cvslog2changelog.pl: add rafael
-
-2004/06/08 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm, share/list.i386, install2.pm, standalone/XFdrake,
- install_steps_interactive.pm: switch to xorg
-
- * authentication.pm: add "Active Directory" authentication (alpha code)
-
- * share/rpmsrate:
- - obsolete: gnome-vfs-extras xanim nist mtv gatos mokmod
- ghostscript-utils tetex-latex-arab-doc sgml-tools
- ghostscript-module-SVGALIB kdenetwork-kit ApacheJServ
- cameleo unarj unstuff postgresql-python mercury NVIDIA_nforce*
- fonts-type1-baltic gnorpm
- - obsolete games: xtrojka bunnies xgammon xpuzzles 7colors xrally
- gtulpas gtkgo
- - obsolete and the new one is auto required: MAKEDEV
- - xine-oss xine-xv are in xine-plugins which is required by xine-ui
- - gatos is no more, replacing with ati.2 (??)
- - replace php with php-cgi (??)
- - replace scanner-gui with xsane and "KDE kdegraphics-kooka"
- - replace clispp2c with clisp (??)
- - replace autoconf with autoconf2.1
- - replace automake with automake1.4
- - switch to gimp2_0
- - everybuddy is now ayttm
- - gimp-plugin is no more, but adding gimp-help
- - Epplets is now epplets (since a lot of time)
- - mandrake-galaxy is now mandrakegalaxy
- - prelude is now prelude-manager
- - kdenetwork-kmail is now kdepim-kmail (same for kdepim-korn and
- kdepim-knode)
- - many XFree86-* are now xorg-x11-*, others are removed (the old
- XFree3 servers)
- - libxfree86-devel is now libxorg-x11-devel
- - libxfree86-static-devel is now libxorg-x11-static-devel
- - tight-vnc-doc is now tightvnc-doc
- - php-manual is now php-manual-{en,fr,...}
- - sketch is now skencil
- - libgr-progs is now netpbm
- - MySQL-devel is now libmysqlXX-devel
- - replace xkobo with skobo
- - fix typo for xtraceroute (bad layout for flag 3D)
-
- - libiw27 instead of libiw26
- - libhpojip0 instead of libhpojip
-
-2004/06/08 rgarciasuarez
-
- * share/list: Report revisions 1.124, 1.125 and 1.126 from HEAD
-
-2004/06/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/ja.po, share/po/hr.po, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/ky.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/am.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/tl.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
-2004/06/07 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/init.c: nasty kernel now gives us weird
- PIDs, so we can't rely on this to detect if we are running
- on a live box or not. So set testing to 0
-
- * mdk-stage1/dietlibc/lib/alloc.c: fix build with gcc 3.4 (+ little
- cleanup)
-
- * mouse.pm: hid is missing (and not needed) on kernel 2.6.7.0.rc2
-
- * mdk-stage1/dietlibc/Makefile:
- - fix build on gcc 3.4
- - much nicer detection of wether $ARCH/Makefile.add modifies CFLAGS or
- not
-
-2004/06/04 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm: switch ONBOOT to on/off for isdn and adsl
- connections
-
- * network/adsl.pm: remove some FIXME comments
-
-2004/06/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/gl.po: updated Galician file
-
-2004/06/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake.sh: run harddrake service earlier
-
- * any.pm (setupBootloader) remove debugging messages
- (setupBootloader__entries) fix typo (Andrea Celli)
-
-2004/06/03 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/xfree.pm: add resolution 1920x1200 called WUXGA (used by Dell
- Laptops Inspiron 8500, 8600 and Latitude D800) (bugzilla #6795)
-
- * tools/cvslog2changelog.pl: add AUTHOR environment option for my warly
- reports
-
- * patch/patch-rh9-mdk10.pl: only big known bug remaining is mouse
- configuration
-
- * mdk-stage1/probing.c: use the same technique as ldetect for detecting
- usb and firewire controllers (based on the pci class)
- use the same technique as ldetect for detecting usb and firewire
- controllers (based on the pci class)
-
-2004/06/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po: updated German file
-
-2004/06/02 Pixel <pixel at mandrakesoft.com>
-
- * any.pm:
- - add descriptions for NFS and SMB (thanks to bugzilla #9940)
- - don't iterate on %l, better iterate on %types
-
- * fs.pm:
- - stop mounting ext3 partitions using type ext2 during install
- - stop fsck'ing ext3 partitions (it was only done during install, not
- upgrade)
-
-2004/06/01 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: s#ppp/peers/adsl#ppp/peers/ppp0#
- as we now use ifup-ppp for adsl, it will look for ppp0
- new way to specify how to up connection for pppoe(xDSL) and others(ADSL)
-
-2004/06/01 jjorge
-
- * share/po/pt.po: saraiva
-
-2004/06/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/am.po: updated Amharic file
-
- * share/po/nb.po: updated Norwegian po file
-
-2004/06/01 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakboot: rollback weird and ugly workaround when pressing
- cancel on the ask_warn. The real fix is in ugtk2.pm
-
- * any.pm: handle the nfs/smb service disabled (enhancement given by
- Olivier Blin)
-
- * ugtk2.pm: when wizcancel occurs, ugtk2 object is not destroyed (the
- garbage collector seems to have some pbs taking care of this, but since
- many callbacks using it are registered, it's no wonder)
- (fixes pressing "Cancel" on a ->ask_warn in wizard mode)
- (set_text): fix "cleanups"
-
-2004/06/01 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Really apply gui fix.
- Use array rather than hash per Thierry.
- Insure ftp transfers are binary, fix gui problem (in 10.0 update also).
- Binary ftp/gui fixes from cooker branch.
-
- * standalone/drakTermServ: Use array rather than hash per Thierry.
- Insure ftp transfers are binary, fix gui problem (in 10.0 update also).
-
-2004/06/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/tools.pm: remove debug message
- (use_windows) space cleanup
-
- * ugtk2.pm (set_text) cleanups
-
- * network/netconnect.pm: make LAN wizard more user friendly: move "manual
- choice" after detected
- interfaces
-
- * standalone/drakboot (lilo_choice) fix error title
- fix "two windows after exception" bug
-
- * network/drakfirewall.pm: mark it as translatable for non alphabetic
- languages
-
- * drakxtools.spec: 10-42mdk
-
- * bootloader.pm (write_grub_config) do not write partial config file (thus
- garbaging previous
- config) if an error occured
-
- * detect_devices.pm (getNet) handle interface w/o ip addresses
- (getNet) rollbacl to MDK10.0 detection scheme
-
-2004/05/28 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Typo in tape restore (Federico Belvisi).
-
-2004/05/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm (real_main) fix protocol switching from manual to
- auto when stepping back
- merge brown paper bug fix from TRUNK
-
- * network/ethernet.pm (get_eth_cards) fallback on sysfs in order to get
- driver and card
- description when ethtool is not supported (eg: ipw2100 driver for
- intel centrino)
- merge from HEAD:
- (get_eth_cards) fallback on sysfs in order to get
- driver and card description when ethtool is not supported (eg: ipw2100
- driver for intel centrino)
- merge fixes from HEAD
-
- * keyboard.pm, any.pm, c/stuff.xs.pl, standalone/drakTermServ,
- standalone/net_monitor, network/drakfirewall.pm, authentication.pm,
- detect_devices.pm: merge fixes from HEAD
-
- * standalone/drakbackup: merge fix from TRUNK
- merge fixes from HEAD
-
- * network/network.pm (read_all_conf) read VLAN interfaces too
- (read_all_conf) read ip aliased interfaces too
-
- * drakxtools.spec: update 10-41mdk's changelog
- 10-41mdk
- 10-40mdk
- fix 10-37mdk's indentation
- fix perl Glib/Gtk2 binding requires for mdk10.0
- fix 10-34.2mdk changelog indentation
- update 10-34.2mdk's changelog
- update 10-34.2mdk's changelog
- merge fixes from HEAD
-
-2004/05/27 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm:
- - drop old internet service code
- - only one way to configure/up/down an adsl connection
-
- * network/netconnect.pm:
- - call remove_initscript because internet service is dropped
- - drop write_initscript call
-
- * network/tools.pm:
- - kill write_initscript
- - add remove_initscript
-
-2004/05/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/am.po: Added Amharic file
-
-2004/05/27 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: new function isTrueLocalFS() to make a distinction between
- ext3/reiserfs/... and nfs
- => allow /home on nfs (bugzilla #7460)
- new function isTrueLocalFS() to make a distinction between
- ext3/reiserfs/... and nfs
- => allow /home on nfs (bugzilla #7460)
-
- * fsedit.pm, install_interactive.pm, partition_table.pm: new function
- isTrueLocalFS() to make a distinction between ext3/reiserfs/... and nfs
- => allow /home on nfs (bugzilla #7460)
-
- * Xconfig/card.pm, install2.pm, install_steps.pm, install_any.pm,
- install_steps_interactive.pm: handle freeDriver which disable using
- proprietary X driver (esp. for nvidia)
-
- * any.pm: really chkconfig --add and --del for "diskdrake --fileshare"
- (thanks to Olivier Blin)
- instead of removing package nfs-utils or samba-server (when "diskdrake
- --fileshare" disables a export kind) (bugzilla #9804)
-
-2004/05/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getNet) ignore loopback device
-
- * standalone/net_monitor (get_val) reuse c::get_netdevices() and thus skip
- bogus sit0
-
- * drakxtools.spec: 10-39mdk
- 10-38mdk
-
-2004/05/26 Daouda Lo <daouda at mandrakesoft.com>
-
- * docs/HACKING:
- - perl-XML-Parser is needed at build stage
-
-2004/05/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: updated Filipino file
-
- * keyboard.pm, share/rpmsrate, lang.pm: enabled Latgalian language choice;
- prepared for Sardian;
- rpmsrate: Japanese input method is now "uim"
-
-2004/05/26 Pixel <pixel at mandrakesoft.com>
-
- * common.pm, crypto.pm, install_any.pm: /etc/mandrake-release is now
- /etc/mandrakelinux-release
-
- * lang.pm:
- - call handleI18NClp() ASAP
- - create and use lang2move_clp_name()
-
- * install2.pm: "expert" flag in stage2 is bad and deprecated, removing it!
-
-2004/05/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getNet) reuse c::get_netdevices()
- (getNet) support br (bridging) and tr (UML) interfaces (florin)
-
- * c/stuff.xs.pl (netdevices) introduce it in order to list network
- interfaces
-
-2004/05/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/eu.po: updated Basque and Tajik files
-
- * share/keyboards.tar.bz2: new keyboards; new lang->keyboard
- correspondences
-
- * keyboard.pm: Nepali uses devanagari script
- new keyboards; new lang->keyboard correspondences
- don't trust the USB keyboard layout announc when it claims to be "us"
- layout (mosdt manufacturers just keep that default value while seeling
- different layouts)
-
-2004/05/25 rvojta
-
- * network/drakfirewall.pm:
- - BitTorrent support added
-
-2004/05/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: update 10-37mdk's changelog
- 10-37mdk
-
- * network/ethernet.pm (mapIntfToDevice) only try to lookup pci or usb
- device by bus location
- if its location is defined (some driver are returning bogus data on
- ETHTOOL_GDRVINFO command)
- (get_eth_cards) brown paper bug: fix card name lookup when driver does
- not support GDRVINFO command from ETHTOOL ioctl and there's only one
- card managed by this driver
-
- * share/po/br.po: update
-
-2004/05/24 rgarciasuarez
-
- * share/list: Don't hardcode architecture
-
-2004/05/24 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix dropped .txt files when running mkisofs.
- (Anthill #799)
-
-2004/05/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksplash (mk_frame) minor cleanup
- switch from deprecated OptionMenu into new ComboBox widget
-
- * share/po/br.po: typo fix
-
- * drakxtools.spec: 10-36mdk
-
- * standalone/drakperm, standalone/drakbug, interactive/gtk.pm,
- standalone/drakboot, standalone/draksec, standalone/drakfloppy,
- standalone/drakTermServ, Xconfig/resolution_and_depth.pm,
- standalone/drakbackup: switch from deprecated OptionMenu into new
- ComboBox widget
-
- * standalone/drakconnect: switch from deprecated OptionMenu into new
- ComboBox widget
- (build_notebook) simplify pull down menu filling and do not duplicate
- protocols
- list
-
- * ugtk2.pm: still provide compat stuff for OptionMenu (#9826) until all
- tools are
- converted
-
-2004/05/21 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: Some new perl_checker
- fixes.
-
-2004/05/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Add /etc/modprobe* mount points for client
- hardware config.
-
-2004/05/19 Daouda Lo <daouda at mandrakesoft.com>
-
- * share/list:
- - Share pango modules between the FT2 and Xft backend (named fc in
- pango 1.4)
- - pango-modules file is now located in /etc/pango/i386/
- - Add Build.pm
-
-2004/05/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * c/stuff.xs.pl (hasNetDevice, isNetDeviceWirelessAware, getNetDriver)
- explicitely use
- system IFNAMSIZ instead of implicitely defining it
- (isNetDeviceWirelessAware) introduce it in order to detect whether a
- network interface support wireless extensions or not
- forward better LAN vs wireless filtering
-
- * network/adsl.pm: forward speedtouch fix (using kernel mode)
-
- * network/netconnect.pm: filter LAN and Wireless cards by explicitely
- checking whether network
- interfaces support wireless extensions or not instead of relying on
- both ethtool support (in order to get the module name) and checking
- against a whitelist of known wireless awere cards
- forward speedtouch fix (using kernel mode)
- forward better LAN vs wireless filtering
-
- * drakxtools.spec: 10-35mdk
-
-2004/05/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/ky.po, share/po/es.po, share/po/pl.po: updated
- Kyrgyz and Welsh files
-
-2004/05/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (Gtk2::OptionMenu->new) kill debug message
- (Gtk2::OptionMenu) transparently replace obsolete OptionMenu widget by
- the new ComboBox widget
-
-2004/05/17 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm: perl_checker compliance
- remove speedtouch and ISDN 'only working under 2.4 kernel' warnings
-
-2004/05/17 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm: install autofs for nis authentication (dixit florin &
- fcrozat)
-
- * Xconfig/xfree.pm: restore the ability to specify the file where the
- config should be written (since it's used by Xconfig/test.pm)
-
- * Makefile: instead of keeping stage1 (mostly as temporary space but with
- a fixed size, and for the background init),
- exit the stage1 giving hand to stage2 in a tmpfs (same as what was done
- for Mandrakemove)
- stage2 now builds the full mdkinst, and full_stage2 is stage2 + building
- mdkinst_stage2
-
-2004/05/17 rgarciasuarez
-
- * tools/Makefile: Clean up perl version checking in the tools makefile.
-
- * Makefile: Remove an obsolete check for XFree86-VGA16
-
- * share/list: Fix version of PerlIO::gzip in file list
-
-2004/05/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/icons/drakconnect_step.png: kill unused image
-
- * share/po/br.po: update
-
-2004/05/16 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Fixes
-
-2004/05/16 yrahal
-
- * share/po/ar.po: Arabic translation
-
-2004/05/15 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Upadted Spanish messages
-
-2004/05/14 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: Fixes to use speedtouch kernel driver / drop userspace
- one
- (happy modem with both 2.4 and 2.6)
- - fix modem_run parameters to use kernel driver
- - change/move pty declaration in /etc/ppp/peers/adsl
- - plugin pppoatm has to be set and vpi.vci too
- - new net_cnx_{up/down}, speedtouch.sh seems to be useless now
-
-2004/05/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po, share/po/ky.po, share/po/hi.po: fixed "default:LTR"
- string
-
- * share/po/et.po, share/po/pt_BR.po: updated Estonian and Brazilian files
-
-2004/05/13 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: in manualFstab coming from auto_install.cfg, allow device
- /dev/XXX instead of simply XXX
- instead of keeping stage1 (mostly as temporary space but with a fixed
- size, and for the background init),
- exit the stage1 giving hand to stage2 in a tmpfs (same as what was done
- for Mandrakemove)
-
- * mdk-stage1/probing.c: usb cdrom has a weird size in /proc/partitions,
- the result is that it is detected as floppy
- usb cdrom has a weird size in /proc/partitions, the result is that it is
- detected as floppy
-
- * c/stuff.xs.pl, diskdrake/interactive.pm, fs.pm, fsedit.pm,
- standalone/drakupdate_fstab: really handle LABEL=XXX in fstab (as used
- by redhat) (no xfs labels yet)
-
- * mdk-stage1/Makefile, mdk-stage1/disk.c, mdk-stage1/tools.h,
- mdk-stage1/log.c, mdk-stage1/adsl.c, Makefile, mdk-stage1/cdrom.c,
- share/devices, mdk-stage1/config-stage1.h, mdk-stage1/stage1.h,
- mdk-stage1/tools.c, mdk-stage1/.cvsignore, share/symlinks,
- mdk-stage1/stage1.c, mdk-stage1/init.c, mdk-stage1/dhcp.c,
- mdk-stage1/network.c: instead of keeping stage1 (mostly as temporary
- space but with a fixed size, and for the background init),
- exit the stage1 giving hand to stage2 in a tmpfs (same as what was done
- for Mandrakemove)
-
- * ugtk2.pm: better error logging when gtkcreate_img or gtkcreate_pixbuf
- can't find the image
-
- * Xconfig/resolution_and_depth.pm: simplify
- Xconfig::resolution_and_depth::allowed(): adapt it to the way it's
- really used
- $prefered_depth defaults to the greatest depths, no need to set it to 24
- vmware doesn't like 24bpp (bugzilla #9755)
-
- * Xconfig/monitor.pm: speed-up monitor choosing dialog when {VendorName}
- is undef (esp. when using "use diagnostics")
-
-2004/05/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/advertising/dwd-07.pl: unified two strings
-
- * share/po/et.po: updated Estonian file
-
- * share/po/be.po: updated po file
-
-2004/05/12 Pixel <pixel at mandrakesoft.com>
-
- * keyboard.pm, install_steps_interactive.pm: fix typo
-
- * lang.pm: no lang-ltg.png, so disabling ltg
- - fix typo
- - fix last commit which was not using $locale_country as it should in
- system_locales_to_ourlocale()
-
- * Makefile: use busybox when dont_run_directly_stage2
-
- * install_any.pm: fix selecting locales-LANG (it didn't really work, but
- it doesn't seem needed?)
-
-2004/05/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/ky.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated pot file
-
-2004/05/11 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm: fix winbind configuration and do the same for LDAP
- and NIS (modifs proposed and checked by Vincent Guardiola)
-
- * mdk-stage1/stage1.c: adapt copyright
-
- * lang.pm:
- - new function locale_to_main_locale() to replace the typical
- substr($lang, 0, 2) or $lang =~ /(..)/
- - new function analyse_locale_name() to replace various regexps on
- locale name
- - use those 2 functions for cleanup
- - cleanup even more standard_locale()
- perl_checker compliance
- remove unused function
-
- * drakxtools.spec: new update:
- - fix pam configuration when using winbind (also fixes LDAP and NIS
- (?))
-
- * detect_devices.pm: rewrite a little probeSerialDevices(), the beginning
- is still very strange
-
- * Xconfig/test.pm: fix typo
-
- * printer/main.pm, install_steps.pm, keyboard.pm: use
- lang::analyse_locale_name() and lang::analyse_locale_name()
-
- * http.pm, Xconfig/card.pm, printer/detect.pm, wizards.pm,
- interactive/newt.pm, network/netconnect.pm, mouse.pm, install2.pm,
- .perl_checker: perl_checker compliance
-
- * ugtk2.pm: perl_checker compliance
- better error logging when gtkcreate_img or gtkcreate_pixbuf can't find
- the image
-
- * any.pm: use lang::analyse_locale_name() and lang::analyse_locale_name()
- more cleanup in selectLanguage()
- selectLanguage():
- - simplify @langs generation
- - use a tree if @langs > 15, not when $::move is set
-
- * install_steps_interactive.pm: use lang::analyse_locale_name() and
- lang::analyse_locale_name()
- fix ugly typo (thanks to perl_checker)
-
- * install_any.pm: fix selecting locales-LANG (i didn't really work, but it
- doesn't seem needed?)
-
-2004/05/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
- * harddrake/data.pm: do not run XFdrake in automatic mode, it's useless
-
-2004/05/10 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/man/C/man5/drakbackup.conf.5: Man page for drakbackup.conf.
-
-2004/05/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update breton translation
-
-2004/05/08 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated partially
-
-2004/05/08 Pixel <pixel at mandrakesoft.com>
-
- * standalone/diskdrake: perl_checker compliance
-
-2004/05/08 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/scannerdrake: Fixed firmware installation.
-
-2004/05/07 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/main.pm: remove debugging code
- you can now configure monitors on heads > 1
- fix an old typo
-
- * Xconfig/various.pm, Xconfig/resolution_and_depth.pm, Xconfig/xfree.pm:
- you can now configure monitors on heads > 1
-
- * Xconfig/monitor.pm: you can now configure monitors on heads > 1
- rename monitors() and $monitors to monitors_db() and $monitors_db
- (preparation for next commit which adds ability to configure each
- monitor)
-
-2004/05/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakclock: do saner check for ntp package (Robert Vojta)
-
-2004/05/06 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm, standalone/drakupdate_fstab: don't prefer_devfs_name when reading
- /proc/mounts (which uses devfs names)
-
- * Xconfig/card.pm: don't succeed automatic configuration (not
- auto_install) when there is many cards (as requested by Joe Bolin on
- cooker)
-
-2004/05/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
-2004/05/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: preparing for Furlan
-
- * share/po/gl.po: updated Galician file
-
-2004/05/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix 10-31mdk's changelog
-
- * network/drakfirewall.pm: open more ports for samba
-
- * network/netconnect.pm: do not offer to set DOMAINNAME2 since it is never
- saved nor read (#9580)
-
-2004/05/04 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/ethernet.pm: use @cards instead of $#cards as told by master
- pipi
- perl_checker fixes
-
- * network/netconnect.pm: perlchecker fixes
-
-2004/05/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-34mdk
-
- * standalone/drakconnect: fix interface destruction wizard
-
- * share/po/de.po: update
-
-2004/05/03 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm, network/isdn.pm: take ISDN protocol into account
- for people outside Europe to use it
- (kind of lost in space before)
-
-2004/05/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po: updated German file
-
-2004/05/03 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: no need for defensive programming
- blank.img has been removed, so remove special code handling it
-
- * docs/README: quick update, not complete
-
- * mdk-stage1/modules.c, install_steps_interactive.pm, install2.pm,
- modules.pm, mdk-stage1/stage1.c: blank.img has been removed, so remove
- special code handling it
-
- * Xconfig/xfree3.pm, Xconfig/various.pm, Xconfig/card.pm,
- Xconfig/resolution_and_depth.pm, Xconfig/xfree.pm, Xconfig/test.pm,
- Xconfig/xfreeX.pm, mouse.pm, Xconfig/xfree4.pm, standalone.pm,
- Xconfig/default.pm, Xconfig/main.pm, Xconfig/screen.pm, Xconfig/FILES:
- XFree 3 is gone!
-
- * mdk-stage1/Makefile: stage1-disk and stage1-medias-usb are dead already
-
-2004/05/01 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm, standalone/drakupdate_fstab, diskdrake/interactive.pm, fsedit.pm:
- fix drakupdate_fstab adding twice an entry in fstab, one with the old
- name, one with the devfs name
-
-2004/04/30 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm, any.pm, devices.pm:
- - new getSCSI_26() not using /proc/scsi/scsi
- (since we can't say first Direct-Access entry is sda anymore)
- - deprecate field {raw_type}
- - don't fill {device} with sgX for non-(cdrom|hd|floppy)
- (hopefully not used by anything, except maybe scanners?)
- - replace scdX with srX (which everybody use)
-
-2004/04/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone.pm (version) bump release number
-
- * standalone/drakclock: time is displayed as HH:MM:SS with RTL languages
-
- * drakxtools.spec: 10-32mdk
-
- * harddrake/data.pm: list SATA controllers in their own category (anthill
- #741)
-
-2004/04/28 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/isdn.pm: cleaning _last_ 'isdn_' prefix
- drop unused ISA and EXPORT
- drop isdn_ fonction names
-
- * network/netconnect.pm: drop isdn_ fonction names
- drop network::isdn->import
-
- * harddrake/data.pm: change last isdn_detect_backend() remaining
-
- * standalone/drakconnect: drop isdn_ fonction names
-
-2004/04/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ky.po: updated Kyrgyz file
-
- * share/po/nn.po: Updated Nynorsk file
-
-2004/04/28 tsdgeos
-
- * share/po/ca.po: updating catalan translations of DrakX and drakfax
-
-2004/04/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
- * standalone/service_harddrake: log removed/added hw
-
-2004/04/27 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/isdn.pm: no need to up ippp0 in net_cnx_up, it's been up'ed at
- startup
-
- * standalone/drakconnect: more gui layout fixes
-
- * network/netconnect.pm, network/tools.pm: try to fix #3793 or at least
- enhance firmware seeking on windows partition
- (based upon titi's patch)
-
-2004/04/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po, share/po/pt_BR.po: updated Brazilian file
-
-2004/04/27 Pixel <pixel at mandrakesoft.com>
-
- * standalone/XFdrake: not needed for Lacie, so removing
-
- * diskdrake/removable.pm, diskdrake/interactive.pm: revert handling --auto
- for removable, it is much better done in a separate function
- (the goal of this --auto is not clear at all, and is better explicitly
- done)
-
-2004/04/27 yrahal
-
- * share/po/ar.po: Arabeyes' Arabic translation
-
-2004/04/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po: updated German translations
-
-2004/04/26 Pixel <pixel at mandrakesoft.com>
-
- * run_program.pm: create ~/tmp when needed
-
- * mdk-stage1/stage1.c, mdk-stage1/config-stage1.h: rename MandrakeMove to
- Mandrakemove
-
- * lang.pm: utf8_should_be_needed() must return true if any of the
- languages chosen is utf8, not only the main one
- (it also returns true when there are many charsets)
-
-2004/04/25 fwang
-
- * share/po/zh_CN.po: update
-
-2004/04/25 yrahal
-
- * share/po/ar.po: Arabeyes.org's Arabic translation
-
-2004/04/24 fwang
-
- * share/po/zh_CN.po: update
-
-2004/04/23 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: re-indentation
- use gtkset_border_width(Gtk2::VBox->new, 5) to create a vbox and set a
- border_width at the same time
- change packing to get a better GUI
-
- * ugtk2.pm: create frame with a border witdth (titi rulez)
-
-2004/04/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nn.po: updated Nynorsk file
-
- * share/po/gl.po: updated Galician files
-
-2004/04/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (shrink_topwindow) support both 10.0 and cooker
-
- * standalone/drakconnect: remove useless ::prefix references
- (build_notebook) sort ppp auth methods
-
- * drakxtools.spec: 10-32mdk
-
- * standalone/service_harddrake: do automatic sound configuration (one can
- still switch between OSS and
- ALSA through mcc)
- handle again timeouts
- do X11 configuration automagically
- - when automatic flag is set for one hardware class, do not ask for
- confirmation and just do what is needed
- - only show "probing in progress" message if we did run an interactive
- tool
-
- * modules.pm (probe_category) perl_checker cleanup
- (remove_alias, remove_alias_regexp, remove_alias_regexp_byname,
- remove_module, set_options) add more explanations
-
- * harddrake/data.pm: do X11 configuration automagically
- (set_removable_configurator) use diskdrake instead of drakupdate_fstab
- for removable media in automatic mode
- set automatic flag for removable media
-
- * diskdrake/interactive.pm, diskdrake/removable.pm: handle --auto when
- managing removable media
-
- * Xconfig/various.pm, standalone/XFdrake: handle --auto
-
-2004/04/22 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * modules.pm: fix 'somewhat' broken isdn type and driver name fetching
- from pcitable
- (this is no paper-bag)
-
-2004/04/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po: updated Slovanian file
-
-2004/04/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake, standalone/harddrake2: switch to new
- harddrake data structure
-
- * install_steps_interactive.pm (summary) install alsaconf too for isapnp
- sound cards (it better handle some
- isapnp sound cards)
-
- * standalone/drakxtv: fix tv cards detection
-
- * harddrake/data.pm: split usb ports from usb controllers (arnaud request)
- new harddrake data structure (easier to extend)
-
- * harddrake/v4l.pm: sync tuners list with 2.6.6-rc2 too
- sync card lists with 2.6.6-rc2
-
-2004/04/20 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: move reread_net_conf to tools.pm
- remove unneeded @all_cards initialisation in reread_net_conf
-
- * network/tools.pm: move reread_net_conf to tools.pm
-
-2004/04/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect (populate_notebook) fix drakxtools' build
- (build_notebook) do not assume there's not language that want to
- translate the "dhcp" string as in other code
-
- * drakxtools.spec: 10-31mdk
-
-2004/04/19 dam's <dams at idm.fr>
-
- * standalone/drakfont: attempt to correct bug #9423
-
-2004/04/19 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: $adsl_modem is optional, moved to $o_adsl_modem
-
- * standalone/drakconnect: dropped $::i in foreach loop, use $i instead
- - translate strings once and only for the user.
- don't bother with translated strings internally..
- - drop DHCP translation, it's always DHCP
- IPADDR, NETMASK and GATEWAY fields are not sensitive by default in DHCP
- (broken by #8498 fix)
-
-2004/04/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/nb.po: updated Welsh and Norwegian files
-
-2004/04/19 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Consolidate button_box* code, remaining
- file_dialogs.
-
-2004/04/18 tsdgeos
-
- * share/po/ca.po: Unfuzzying and updating
-
-2004/04/18 yrahal
-
- * share/po/ar.po: Arabic translation (Arabeyes.org)
-
-2004/04/16 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Some drives don't return "ATIP info from disk".
-
-2004/04/11 yrahal
-
- * share/po/ar.po: Arabic translation
-
-2004/04/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/uk.po: updated Ukrainian and Welsh files
-
- * share/po/nn.po, share/po/tl.po: updated Nynorsk and Filipino files
-
- * share/po/hi.po, share/po/eu.po: corrected default:LTR entries
-
-2004/04/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_steps.pm, lang.pm (lang::write_langs) drop prefix parameter
-
-2004/04/08 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakclock:
- - test /etc/init.d/ntpd instead of /etc/ntp.conf for ntp installation
-
-2004/04/08 keld
-
- * share/po/da.po: updates
- soft/mdkonline/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2004/04/08 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: mount /sys before move::init() since move::init() needs it
-
- * mdk-stage1/lomount.c:
- - no need for chloop device anymore, my kernel patch applies directly
- on the default loop module :)
- - gzloop needs cryptoloop and zlib_inflate (why must i handle this by
- hand? is my gzloop ugly?...)
-
- * devices.pm: get rid of the chloop code (not used anymore)
-
-2004/04/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump glib/gtk+ perl binding requires
- use Mandrakelinux now
- 10-30mdk
-
-2004/04/07 dam's <dams at idm.fr>
-
- * standalone/drakups: corrected drakups against new libconf 0.32
-
-2004/04/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: defined default font to use in KDE for devanagari and malayalam
- scripts
-
-2004/04/06 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/list-pwp, share/advertising/list-dwd,
- share/advertising/list-dis, share/advertising/list-ppp: Don't display
- commercial advertisement in development version
-
-2004/04/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ky.po, share/po/eu.po: Added Kyrgyz file; updated Basque file
-
-2004/04/06 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Use a scalar with cat_ (Pixel suggestion).
- Don't move existing dhcpd.conf, add an include for terminal-server
- instead.
-
-2004/04/06 tbacklund
-
- * share/po/fi.po: fully translated, was 3 fuzzy, 3 untranslated
-
-2004/04/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (shrink_topwindow) fix faillure with perl-Gtk+-1.04x (#9411)
-
- * install_steps_interactive.pm: typo fix
-
-2004/04/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hi.po: updated Hindi file
-
-2004/04/05 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: allow mounting type devpts
- perl now handle cleanly utf8 string in exceptions, no need to die
- \N("...")
-
- * loopback.pm, diskdrake/hd_gtk.pm, diskdrake/interactive.pm, lvm.pm,
- install2.pm, fsedit.pm, network/drakfirewall.pm, authentication.pm,
- install_steps.pm, raid.pm, bootloader.pm, swap.pm, install_any.pm,
- install_interactive.pm, partition_table/raw.pm, partition_table.pm,
- install_steps_interactive.pm: perl now handle cleanly utf8 string in
- exceptions, no need to die \N("...")
-
-2004/04/05 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Remove config-info (new home to be man page).
- Use ugtk2 cursor wait/normal (share the wheel).
- Combine/rework restore code.
-
-2004/04/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_any.pm (setDefaultPackages) despite find and any are
- semantically equivalent
- in this context, any will be used there (boolean vs scalar context)
- (setDefaultPackages) install alsa-utils if *any* of the present sound
- card is driven by ALSA
-
- * standalone/service_harddrake: log nv<=>nvidia switches
-
- * share/rpmsrate: install gnome-alsamixer and alsa-utils when there's an
- alsa driver sound card
- setDefaultPackages
- im-ja has been reported to be more user-friendly than uim
-
-2004/04/04 keld
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2004/04/04 yrahal
-
- * share/po/ar.po: Commmitting Arabeyes.org's Arabic translation of the
- week
-
-2004/04/02 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/04/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/nb.po: updated Farsi and Norwegian files
-
-2004/04/02 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/Makefile: clean init-move when cleaning
-
- * mdk-stage1/nfsmount.c: enable nfs install on old i586 machines (or maybe
- poor network cards) (bugzilla #9322) (thanks to Michael Riss)
-
-2004/04/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
-
-2004/04/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/gl.po, share/po/pt_BR.po, share/po/th.po,
- share/po/et.po, share/po/ja.po, share/po/be.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/sl.po, share/po/nn.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/tl.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * share/po/sk.po, share/po/hr.po, share/po/fi.po, share/po/br.po,
- share/po/mn.po, share/po/ta.po, share/po/eo.po: updated Mongol files
- updated pot file
-
-2004/04/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: move harddrake service confirmation script from spec
- file into its own file
-
- * Makefile.config: list service_harddrake_confirm too
-
- * ugtk2.pm: space cleanup
-
- * standalone/service_harddrake_confirm: pass timeout parameter too
- move harddrake service confirmation script from spec file into its own
- file
-
- * standalone/service_harddrake: let execl() handle the arg array (this is
- safer)
- pass timeout parameter too
- enable to translate a few more messages
- translate "XYZ was added/removed" messages
-
-2004/03/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: typo fix
-
- * drakxtools.spec: fix drakxtools postuninstall script
-
-2004/03/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * pixmaps/langs/lang-ltg.png, lang.pm: Added missing choice for Latgalian
- (it had been forgotten when adding the
- 10.0 new languages)
-
-2004/03/30 Pixel <pixel at mandrakesoft.com>
-
- * rescue/list: add /sbin/badblocks
-
- * ugtk2.pm: fix relative file names (mostly (only?) for debugging)
-
-2004/03/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
- update
-
- * any.pm: share translation with help.pm
-
- * share/po/fr.po: fix inverted translations (#8217)
-
-2004/03/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hi.po: corrected default:LTR entries
-
- * share/po/it.po: corrected default:LTR entries
- updated Italian file
-
-2004/03/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: space "fix"
- typo fix
- only alter xfree config if we found an nvidia card
- try several locations
- check for compressed nvidia modules too
- typo fix
-
- * drakxtools.spec: 10-29mdk
- 10-28mdk
-
- * share/po/fr.po: typo fix
- update
-
-2004/03/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hi.po: corrected default:LTR entries
-
- * share/po/it.po: corrected default:LTR entries
- updated Italian file
-
-2004/03/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-28mdk
-
- * share/po/fr.po: update
-
- * standalone/service_harddrake: try several locations
- check for compressed nvidia modules too
- typo fix
-
-2004/03/28 yrahal
-
- * share/po/ar.po: Arabeyes.org's translation
-
-2004/03/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: s/bcm4400/b44/
-
- * network/adsl.pm (adsl_probe_info) fix vpi, vci rereading (speedtouch
- conf write hexa...)
-
- * drakxtools.spec: fix changelog
-
- * pkgs.pm (installTransactionClosure) fix list refreshing (warly)
-
-2004/03/26 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate:
- - add SMP and BIGMEM for kernel-2.4
- - aggregate all the kernel-2.4 in one occurence not to raised
- the "complicated tags" error in install rpmsrate parsing code
-
-2004/03/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_probe_info) fix vpi, vci rereading (speedtouch
- conf write hexa...)
- misc space cleanups (thx perl_checko)
- (adsl_probe_info) fix "manage interface" that broke speedtouch
- configuration
-
- * network/netconnect.pm: s/bcm4400/b44/
- warn than speedtouch only works with 2.4.x kernels for now
-
- * bootloader.pm (method_choices) blacklist again Savage, they're broken
- again :-(
-
- * drakxtools.spec: 10-27mdk
-
-2004/03/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_probe_info) fix "manage interface" that broke
- speedtouch configuration
-
- * network/netconnect.pm: warn than speedtouch only works with 2.4.x
- kernels for now
- bcm4400 is known to not support ETHTOOL
-
- * bootloader.pm (method_choices) blacklist again Savage, they're broken
- again :-(
-
- * drakxtools.spec: 10-27mdk
-
- * share/rpmsrate: speedtouch support is definitvely buggy with 2.6.x
- kernel for now
-
-2004/03/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: bcm4400 is known to not support ETHTOOL
-
- * share/rpmsrate: speedtouch support is definitvely buggy with 2.6.x
- kernel for now
-
-2004/03/25 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/03/25 Warly <warly at mandrakesoft.com>
-
- * share/compssUsers.server: s/PHPgroupware/Kolab server/
-
-2004/03/24 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm:
- - preferring "p3-smp-64GB" first (for BIGMEM + SMP)
- - also adding i686-up-4GB
- - cleanup code
- fix extension parsing (vmlinuz-2.6.3-7mdksmp &
- vmlinuz-2.6.3-7mdkenterprise vs vmlinuz-2.6.3-7mdk-p3-smp-64GB &
- vmlinuz-2.6.3-7mdk-i686-up-4GB)
- sorting based on @prefered is nearly unused, remove it
-
-2004/03/24 tsdgeos
-
- * share/po/ca.po: Unfuzzying
-
-2004/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/isdn.pm (isdn_write_config_backend) load ISDN driver
- up ippp0 interface and delete previous default route
- (isdn_detect_backend) do not try to get "type" field here, we just have
- nothing
- to guess it there
- (isdn_read_config) do not overwrite current parameters with undefed ones
-
- * network/netconnect.pm: fix ISDN modem selection
-
- * modules.pm (probe_category) set ISDN hisax driver type parameter
-
-2004/03/24 Pixel <pixel at mandrakesoft.com>
-
- * share/rpmsrate: when BIGMEM & SMP, use kernel-p3-smp-64GB
-
- * bootloader.pm:
- - preferring "p3-smp-64GB" first (for BIGMEM + SMP)
- - also adding i686-up-4GB
- - cleanup code
- fix extension parsing (vmlinuz-2.6.3-7mdksmp &
- vmlinuz-2.6.3-7mdkenterprise vs vmlinuz-2.6.3-7mdk-p3-smp-64GB &
- vmlinuz-2.6.3-7mdk-i686-up-4GB)
- sorting based on @prefered is nearly unused, remove it
-
-2004/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/isdn.pm (isdn_write_config_backend) load ISDN driver
- up ippp0 interface and delete previous default route
- (isdn_detect_backend) do not try to get "type" field here, we just have
- nothing
- to guess it there
- (isdn_read_config) do not overwrite current parameters with undefed ones
-
- * network/netconnect.pm: fix ISDN modem selection
-
- * modules.pm (probe_category) set ISDN hisax driver type parameter
-
- * network/adsl_consts.pm: #5056 really refered to austria, not australia
-
-2004/03/24 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Update translations
-
- * share/rpmsrate: Install kdeutils-kwalletmanager by default when KDE is
- installed
-
-2004/03/24 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm: meta_class server (PowerPack+) needs category
- Workstation
-
- * share/rpmsrate: when BIGMEM & SMP, use kernel-p3-smp-64GB
-
-2004/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_conf_backend) only disable kernel driver for 2.4.x
- kernels since
- latest speedtouch package is totally broken in userland mode now :-(
-
- * drakxtools.spec: fix changelog
- one more change
- one more change in 10-26mdk
-
- * standalone/service_harddrake: switch between nv and nvidia driver if
- commercial driver isn't installed
-
- * network/adsl_consts.pm: #5056 really refered to austria, not australia
-
-2004/03/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hi.po: updated Hindi file
-
-2004/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_conf_backend) only disable kernel driver for 2.4.x
- kernels since
- latest speedtouch package is totally broken in userland mode now :-(
-
- * drakxtools.spec: one more change in 10-26mdk
-
-2004/03/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakgw: add a new line for lord cat
-
- * network/netconnect.pm: fix drakconnect config writing when there's only
- one configured
- interface (eg: at install time) (#8998)
-
- * drakxtools.spec: add bug reference in 10-25mdk changelog
- remove doble entries in 10-25mdk changelog
- 10-26mdk
-
- * standalone/drakconnect (del_intf) enable to delete ADSL and ISDN
- connections
-
-2004/03/23 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/03/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakgw: add a new line for lord cat
-
- * drakxtools.spec: add bug reference in 10-25mdk changelog
- remove doble entries in 10-25mdk changelog
- 10-26mdk
-
- * standalone/drakconnect (del_intf) enable to delete ADSL and ISDN
- connections
-
- * network/netconnect.pm: fix drakconnect config writing when there's only
- one configured
- interface (eg: at install time) (#8998)
- bewan PCI and ethernet ADSL modems work smoothly with 2.6.x kernels
- for ISDN, do the same warning popup about supported kernels
-
- * share/po/gl.po, share/po/ga.po: update
-
-2004/03/23 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
- update
-
-2004/03/23 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * any.pm: add nolapic support option (NOn Local APIC)
-
-2004/03/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/it.po, share/po/uk.po, share/po/sv.po,
- share/po/mk.po, share/po/de.po, share/po/is.po, share/po/hi.po,
- share/po/nn.po, share/po/et.po, share/po/ca.po, share/po/ja.po,
- share/po/sq.po: corrected "default:LTR" translations
-
-2004/03/23 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm, install_any.pm, install_steps_interactive.pm: LSB doesn't
- need kernel 2.4 anymore
-
- * fs.pm, standalone/diskdrake, standalone/drakupdate_fstab:
- - do not pass options is_removable to set_default_options() since it
- is not a global options
- - replace it with a flag in the part or raw_hd
- - set is_removable for part from usb drive
- - ensure usb partitions are not checked at boot time (freq field in
- fstab)
-
- * keyboard.pm:
- - az, tr and tr_f needs XkbOptions 'caps:shift'
- - cleanup
-
- * share/rpmsrate: replace kernel-enterprise with kernel-i686-up-4GB when
- BIGMEM
-
-2004/03/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: install ndiswrapper for centrino chipsets
-
- * standalone/drakgw: fix drakgw removing MII_NOT_SUPPORTED parameter from
- ifcfg file (#9076)
-
- * network/netconnect.pm: bewan PCI and ethernet ADSL modems work smoothly
- with 2.6.x kernels
- for ISDN, do the same warning popup about supported kernels
-
- * standalone/drakTermServ (interactive_mode) fix button layout (prevent
- button collisions and
- text truncation when translated)
- (client_type) fix layout (checbox was using too muche vertical space)
- enable to go in in --testing mode
-
- * standalone/drakclock: fix packing
-
- * share/po/gl.po, share/po/cy.po, share/po/fr.po, share/po/ga.po: update
-
-2004/03/22 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/po/fr.po: Fix typo
-
-2004/03/22 Florin Grad <florin at mandrakesoft.com>
-
- * network/shorewall.pm: typo (forgot a space)
- do not write the REDIRECT squid rules if one has only one NIC connected
- to the net zone
-
-2004/03/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: updated Filipino file
-
-2004/03/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakperm (row_setting_dialog) hide dialog's horizontal
- separator, because
- create_okcancel() already creates its own separator (Robert Vojta,
- #9153)
- add space around main vbox (Robert Vojta, #9153)
-
- * standalone/drakclock: Look & feel enhancement in order to have a
- smoother GUI (Robert Vojta,
- #9141) :
- - when not embedded, add 5 pixels border around the whole GUI
- - add border around frames contents
- show timezone in drakclock (Robert Vojta, #9141)
- (get_servers) sort servers (Robert Vojta, #9139)
-
- * detect_devices.pm (isTVcard) typo fix
- fix tv cards managed by cx88 and saa7134 (#9112)
-
- * harddrake/v4l.pm: fix log message
-
- * standalone/drakxtv: fix tv cards managed by cx88 and saa7134 (#9112)
-
- * modules.pm (write_conf) simplify
- typo fix
- fix tv cards managed by cx88 and saa7134 (#9112)
-
- * standalone/logdrake (parse_file) oops, forgot one /o
- fix non first searches (#9115)
-
-2004/03/21 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: done
-
-2004/03/21 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/03/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
- * share/po/ar.po: updated Arabic file
-
-2004/03/21 tbacklund
-
- * share/po/fi.po: fully translated, was 25 fuzzy, 5 untranslated
-
-2004/03/21 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation
-
-2004/03/20 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2004/03/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: updated Farsi file
-
-2004/03/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakxtv: fix error message (#9080)
- cleanup
- fix loged message (thx perl_checko)
- fix #3193:
- - use right device
- - offer to set the user to config
- fix saa7134 detection (#5612)
- testing mode
- reorder modules import
- fix wiping out /etc/modules.conf (scott@littlefish.ca)
- Defaulted canada-cable to NTSC (Scott Mazur (scott@littlefish.ca)
-
- * standalone/drakvpn: icon
-
- * harddrake/v4l.pm: sync with 2.6.3-4mdk
- reorder modules import
- (config) read current configuration (Scott Mazur <scott@littlefish.ca>)
- share translation
- fix setting options for bttv instead of saa7134 (#5612)
-
- * drakxtools.spec: move draksplash into drakxtools b/c it needs gtk+
- (#7807)
- oops, that should have been 25mdk
-
-2004/03/19 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated
-
-2004/03/19 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Update GNOME devel packages
-
-2004/03/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po, share/po/DrakX.pot, share/po/nb.po, share/po/zh_CN.po,
- share/po/it.po, share/po/eu.po, share/po/ru.po, share/po/uk.po,
- share/po/cy.po, share/po/mk.po, share/po/af.po, share/po/tl.po,
- share/po/cs.po: updated pot file
-
- * share/po/et.po: Updated Estonian file; fixed quote in Hindi file
- updated pot file
-
- * share/po/sk.po, share/po/th.po, share/po/hr.po, share/po/sv.po,
- share/po/ltg.po, share/po/zh_TW.po, share/po/sq.po, share/po/nn.po,
- share/po/mn.po, share/po/pt.po, share/po/fr.po, share/po/ta.po: updated
- po files
- updated po files
- updated pot file
-
- * share/po/ms.po, share/po/gl.po, share/po/pt_BR.po, share/po/be.po,
- share/po/ko.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/uz.po, share/po/ro.po, share/po/sr@Latn.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/br.po, share/po/sl.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/lt.po, share/po/tg.po, share/po/bs.po,
- share/po/wa.po, share/po/is.po, share/po/az.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/el.po, share/po/uz@Latn.po: updated po files
- updated pot file
-
- * standalone/drakvpn: disambiguated string
-
- * share/po/hi.po: updated po files
- Updated Estonian file; fixed quote in Hindi file
- updated pot file
-
-2004/03/19 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: adapt to devfs (?) naming which breaks compatibility
- (bugzilla #9029)
-
- * ugtk2.pm:
- - fix _find_imgfile()
- - cleanup
-
- * install_steps.pm: devfs=mount is the default for kernel 2.6 (what about
- 2.4 ?), so one need
- devfs=nomount when devfsd is not installed
-
-2004/03/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
- * standalone/drakvpn: add hint for translators (cooker-i18n request)
-
- * drakxtools.spec: 10-24mdk
-
- * network/netconnect.pm: eagle-usb maintainers ask not to fill dns by
- default because ppp will
- return better one through peerdns option
- dnsX were renamed as dnsServerX+1 long time ago and are managed one
- step earlier
-
-2004/03/19 Warly <warly at mandrakesoft.com>
-
- * standalone/drakboot: add Olivier Blin patches to reread the previous
- configuration
-
-2004/03/19 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: adapt to devfs (?) naming which breaks compatibility
- (bugzilla #9029)
-
- * ugtk2.pm:
- - fix _find_imgfile()
- - cleanup
-
- * install_steps.pm: devfs=mount is the default for kernel 2.6 (what about
- 2.4 ?), so one need
- devfs=nomount when devfsd is not installed
-
-2004/03/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm (switch) perl_checker fix
-
- * network/netconnect.pm: eagle-usb maintainers ask not to fill dns by
- default because ppp will
- return better one through peerdns option
- dnsX were renamed as dnsServerX+1 long time ago and are managed one
- step earlier
-
-2004/03/18 David Baudens <baudens at mandrakesoft.com>
-
- * standalone/icons/localedrake-32.png,
- standalone/icons/localedrake-48.png, drakxtools.spec,
- standalone/icons/localedrake-16.png, Makefile.drakxtools: Add icons for
- localedrake menu entry
-
- * share/rpmsrate: Add kdegraphics-common in GRAPHICS section
-
-2004/03/18 marco
-
- * share/po/it.po: successivo -> avanti
-
-2004/03/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: updated Filipino file
-
-2004/03/18 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: new helper function may_set_icon that takes care of missing
- wiz_default_up during install
-
- * partition_table/dos.pm: not guessing a geometry when default_ok is no
- big deal
-
-2004/03/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: install alsa-utils if needed (#6288)
-
- * network/adsl.pm: only kill pppoa for sagem modem (eg for bewan, we use
- pppoa plugin for
- ppp)
- fix bewan support by providing an ad-how /etc/ppp/options
-
- * standalone/icons/drakups.png: use mdk icon for drakups
-
- * network/netconnect.pm: fix obvious wrong lookup (at install time, we
- must check installed
- root fs instead of /)
- always offer to restart adsl connections
- only warn about 2.4.x kernel for bewan modem
- only warn about the fact we need 2.4.x kernel when we're under 2.6.x
-
- * Makefile.config: reput back drakups
-
- * share/rpmsrate: install kernel-2.4.x for pci modems whose binary driver
- isn't ported
- on 2.6.x
-
-2004/03/18 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: move the DRIVER part from INSTALL to SYSTEM
- fix speedtouch-mgm -> mgmt
- fix bad indentation
-
-2004/03/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: Gnome Low-Saxon translations use "nds_DE", putting it on
- LANGUAGE
-
-2004/03/18 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: new helper function may_set_icon that takes care of missing
- wiz_default_up during install
-
- * partition_table/dos.pm: not guessing a geometry when default_ok is no
- big deal
-
-2004/03/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: only warn about the fact we need 2.4.x kernel
- when we're under 2.6.x
-
- * network/adsl.pm: only kill pppoa for sagem modem (eg for bewan, we use
- pppoa plugin for
- ppp)
- fix bewan support by providing an ad-how /etc/ppp/options
-
- * Makefile.config: reput back drakups
-
- * share/rpmsrate: install kernel-2.4.x for pci modems whose binary driver
- isn't ported
- on 2.6.x
-
-2004/03/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po: chinese names for countries
-
- * share/po/uk.po: updated Ukrainian file
-
- * share/po/mn.po: updated po files
-
-2004/03/17 Pixel <pixel at mandrakesoft.com>
-
- * install_gtk.pm: enlarge steps window (no pb since the window is
- invisible) (bugzilla #8985)
-
- * standalone/diskdrake: add "diskdrake
- --change-geometry=<device>=[<cylinders>,]<heads>,<sectors>" to
- allow forcing the geometry used in the partition table. This allows
- helping
- poor Windows booting using old int13 function 2. This should work when
- Windows
- has not been resized.
-
-2004/03/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: do not alter oss<->alsa drivers mapping table
- (olivier blin, #8501)
- When current driver doesn't match current sound card (because sound
- card has been replaced for example), draksound allows to choose the
- driver between current driver and its alternatives, but does not
- propose default driver and alternatives for current sound card. So
- available drivers don't match current sound card (olivier blin, #8501)
-
- * standalone/drakedm: fix dm restart
-
- * standalone/service_harddrake: remove /etc/asound.state *before*
- restarting sound service
-
- * drakxtools.spec: 10-24mdk
-
-2004/03/17 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: community install logo
-
-2004/03/17 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Update advertising translations
-
- * share/compssUsers: Update
- Update
-
- * share/rpmsrate: Fix my mistake (forgot to cvs up before commit)
- Update
-
-2004/03/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po: chinese names for countries
-
-2004/03/17 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/dos.pm, partition_table/raw.pm, partition_table.pm: add
- set_best_geometry_for_the_partition_table to use the hd geometry instead
- of the physical geometry returned by the kernel (since for now i can't
- have bios geometry on 2.6)
-
-2004/03/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: misc perl_checker cleanup
- remove debug statements
- fix no information for drivers that do not support ethtool ioctl (eg:
- sk98lin): try to match the device by interface name and driver name
- (won't work for several cards managed by the same driver)
-
- * share/po/fr.po: update
-
- * share/rpmsrate: roll-back bogus dadou commit
-
- * network/netconnect.pm: fix pci modem support:
- - handle manually installed drivers
- - removed urpmi sources
- - faster checking for driver presence
-
-2004/03/17 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: community install logo
-
- * share/rpmsrate: s/glade/glade2/
-
-2004/03/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2004/03/17 Pixel <pixel at mandrakesoft.com>
-
- * partition_table/raw.pm, partition_table.pm: add
- set_best_geometry_for_the_partition_table to use the hd geometry instead
- of the physical geometry returned by the kernel (since for now i can't
- have bios geometry on 2.6)
-
- * partition_table/dos.pm: add set_best_geometry_for_the_partition_table to
- use the hd geometry instead of the physical geometry returned by the
- kernel (since for now i can't have bios geometry on 2.6)
- - sector2CHS() now gives sector number starting at 0
- - CHS2rawCHS() takes care of giving sector number starting at 1
-
-2004/03/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: split out agp controllers out of bridges
-
- * standalone/drakups: use std banner
- use new $ugtk2::wm_icon for x11 icon
-
- * network/ethernet.pm (get_eth_cards) if SIOCETHTOOL ioctl is not
- supported by driver, try
- to lookup card by driver in devices list (if there's only one physical
- card managed by this driver)
-
- * standalone/logdrake, standalone/drakfont: use new $ugtk2::wm_icon for
- x11 icon
-
- * network/adsl.pm: do not pass eth interface and user to adsl-start,
- they're already
- provided in pppoe.conf (#2004)
-
- * network/adsl_consts.pm: update wanadoo dns according to
-
- http://www.wanadoo.fr/bin/frame2.cgi?u=http%3A//assistance.wanadoo.fr/reponse791.asp
-
- * standalone/service_harddrake: add agpgart modules to modprobe.preload if
- needed
-
- * standalone/harddrake2: use new $ugtk2::wm_icon for x11 icon
- show module for system bridges if it's not unknown (aka not managed by
- kernel core)
- blacklist agp controllers class (they're still visible in the bridges
- one)
-
- * ugtk2.pm (_create_dialog) set x11 icon for dialogs too
- (new) fix x11 icon for Gtk2::Plug
- (_find_imgfile) prevent matching subdirectory (eg: harddrake)
-
- * network/netconnect.pm: fix SmartLink modem managment (#8959)
-
- * standalone/drakconnect: misc perl_checker cleanup
- remove debug statements
- fix no information for drivers that do not support ethtool ioctl (eg:
- sk98lin): try to match the device by interface name and driver name
- (won't work for several cards managed by the same driver)
- use new $ugtk2::wm_icon for x11 icon
-
-2004/03/16 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: transl.in progress
-
-2004/03/16 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers.server: Add NETWORKING_FILE support for PowerPackPlus
-
- * standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/tv.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/multimedia.png,
- standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/cd.png,
- standalone/icons/harddrake2/hw_network.png: Update images
-
-2004/03/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * pixmaps/langs/lang-ku.png, pixmaps/langs/lang-hy.png,
- pixmaps/langs/lang-tt.png: updated and added pictures for language
- selection list.
- enabled choice for Filipino (we have quite good translations),
- Low-Saxon and Kyrgyz.
-
- * pixmaps/langs/lang-gn.png, pixmaps/langs/lang-nds.png,
- pixmaps/langs/lang-ky.png, pixmaps/langs/lang-tk.png,
- pixmaps/langs/lang-ph.png: readding images in binary mode
- removed pixmaps to readd them in binary mode
- updated and added pictures for language selection list.
- enabled choice for Filipino (we have quite good translations),
- Low-Saxon and Kyrgyz.
-
- * lang.pm: changed order of LANGUAGE value for Filipino so monolingual
- windowmanagers
- can have translated menus
- updated and added pictures for language selection list.
- enabled choice for Filipino (we have quite good translations),
- Low-Saxon and Kyrgyz.
-
- * share/po/it.po: updated Italian file
-
-2004/03/16 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakupdate_fstab: choose wether to use supermount is now
- based on variable SUPERMOUNT in /etc/sysconfig/dynamic
-
- * ugtk2.pm: fix typo
- - add $ugtk2::wm_icon (esp. for park-rpmdrake)
- - cleanup, correct indentation
-
-2004/03/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake (alert_config) fix wizard when logdrake is embedded
- (alert_config) fix wizard on second run
- (alert_config) make it a wizard again (that is, with banner,
- "previous"/"next" buttons and the like)
- set x11 ico
-
- * share/rpmsrate: wireless-tools is listed twice!
- speedtouch was listed two times in the old days!
- install speedtouch firmware too
- automatically install speedtouch for Alcatel USB ADSL modems
- automatically install eagle-usb for sagem ADSL modems
- install kernel-2.4.x for internal ISDN devices
-
- * ugtk2.pm (new) set x11 icon for non wizard tools
- (new) set default x11 icon
-
- * standalone/harddrake2, standalone/drakups: set x11 ico
-
- * standalone/drakclock: fix server lookup (#8846)
-
- * standalone/icons/drakups.png: add drakups icon
- "Copyright (C) 2004 MGE UPS SYSTEMS / Luc Descotils
- This graphic 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..."
-
- * network/netconnect.pm: bewan support
- only show encapsulation parameter for sagem modem
- preselect pppoa for bewan too
- make it clear these checks are only for pci modems
- pci modem: only take care of selected one
- warn that we only support kernel 2.4.x for pci modems
- remove debug statement
- for ADSL Bewan and ISDN modem, warn that only 2.4.x kernels are
- supported
-
- * network/adsl.pm: bewan support
- (adsl_conf_backend) fix adsl stop on pppoa links
-
- * network/modem.pm (ppp_configure) really fix modem symlink (#7967)
-
- * standalone/drakconnect: set x11 ico
- (configure_net) do not offer to alter domain name since this is
- achievable through FQDN
-
- * standalone/drakfont (interactive_mode) better style
- (interactive_mode, dialog) let's have nice icon in sub dialogs when
- embedded too
- (dialog) make subdialogs be transcient for main window when not embedded
- set x11 ico
-
-2004/03/16 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: clean majors introduced into the CVS by mistake
-
-2004/03/15 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Replace xsane by scanner-gui (allows to install kooka or
- xsane)
- Readd Audacity (needs to be moved from Contrib to Main; it should be
- installed by default for all products)
-
-2004/03/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Fix misnamed inittab\$\$IP=xxx.xxx.xxx.xxx\$\$.
-
-2004/03/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect (configure_net) enable to alter hostname
- (configure_net) fix unlisted first dns server
-
- * drakxtools.spec: 10-23mdk
-
- * standalone/logdrake: fix explanations in mcc that got broken by #8412
- speedup
-
- * network/netconnect.pm: always write scripts like in the old days but
- when there's no cnx
- skip "start on boot" step for LAN (already managed by network scripts)
- perl_checker fix
- write ether conf later on QA request
- do not list anymore wireless cards in LAN connection, only in wireless
- connections
- fix ADSL modems not listed unless one try to manually pick a network
- card (#8611): prevent module::interactive from offering to pick a
- module when there's no network cards
-
- * share/po/fr.po: update
-
-2004/03/15 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: add ppp+ and ippp+ at the interfaces list
-
- * network/shorewall.pm: add ppp+ and ippp+ in the interfaces list
-
-2004/03/15 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/03/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not list anymore wireless cards in LAN
- connection, only in wireless
- connections
- fix ADSL modems not listed unless one try to manually pick a network
- card (#8611): prevent module::interactive from offering to pick a
- module when there's no network cards
-
- * network/ethernet.pm (mapIntfToDevice) do not try to match a physical
- device when SIOCETHTOOL ioctl is not supported
-
- * standalone/drakclock: make the ntpdate after stopping the ntpd
- (manu@agat.net, #8141)
-
- * network/network.pm (write_interface_conf) fix missing quotes around
- wireless encryption key (#8887)
-
- * standalone/drakconnect (configure_net) fix spacing around DNS/domainname
- settings table
- (configure_net) write back domain name and dns servers
- (configure_net) fix domainname reading
- (configure_net) fix crash on internet access dialog closing
- (configure_net) update connection status in background (#7800)
- add --old option in order to see old interface
-
-2004/03/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: updated Farsi file
-
- * share/po/cy.po, share/po/nn.po, share/po/ca.po: updated Welsh and
- Nynorsk files
-
-2004/03/14 tbacklund
-
- * share/po/fi.po: fully translated, was 10 fuzzy, 1 untranslated
-
-2004/03/14 tsdgeos
-
- * share/po/ca.po: updating
-
-2004/03/14 yrahal
-
- * share/po/ar.po: Weekly Arabeyes' Arabic translation.
-
-2004/03/13 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated translation
-
-2004/03/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: updated Farsi file
-
- * share/po/cy.po: Updated Welsh file
-
- * share/po/et.po: updated Estonian file
-
- * share/po/uz.po, share/po/uz@Latn.po: updated Uzbek files
-
-2004/03/13 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Let printerdrake install "scanner-gui" instead
- of "xsane" when it sets up an HP multi-function device.
- "MandrakeSoft" -> "Mandrakesoft", "Mandrake" -> "Mandrakelinux".
-
- * standalone/scannerdrake: Let scannerdrake install "scanner-gui" instead
- of "xsane", so that scanning GUI actually used can be determined by the
- system environment.
- "MandrakeSoft" -> "Mandrakesoft", "Mandrake" -> "Mandrakelinux".
-
- * standalone/printerdrake: "MandrakeSoft" -> "Mandrakesoft", "Mandrake" ->
- "Mandrakelinux".
-
-2004/03/12 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Update for PowerPackPlus
-
-2004/03/12 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated
-
-2004/03/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
- * lang.pm: small correction
- improved previous change
-
- * share/po/ms.po, share/po/id.po, share/po/gl.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/nn.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/mn.po, share/po/ko.po, share/po/sr.po,
- share/po/lt.po, share/po/he.po, share/po/ca.po, share/po/ar.po,
- share/po/ltg.po, share/po/uz.po, share/po/is.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/ta.po, share/po/sq.po, share/po/sr@Latn.po,
- share/po/eu.po, share/po/es.po, share/po/eo.po, share/po/bg.po,
- share/po/el.po, share/po/lv.po, share/po/hu.po, share/po/uz@Latn.po:
- merged some strings from mcc
-
-2004/03/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: eagle was renamed as eagle-usb
-
-2004/03/12 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/03/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
- * lang.pm: improved previous change
- always define KDM fonts dependending on encoding (fix for bug #8714)
-
-2004/03/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-22mdk
-
- * standalone/drakconnect (build_notebook) default protocol is dhcp (eg for
- unconfigured
- interfaces), thus preventing ip checks faillure on protocol change on
- other network interfaces
- (apply) do not write IPADDR, NETMASK and NETWORK fields in ifcfg-ethX
- when using DHCP
- (apply) factorize interface hash
- (apply) fix crash (is_dynamic_ip expect a hash of network interaces,
- not a single interface)
- (configure_net) kill useless code
- (configure_net) fix layout by using a table
- remove a few more parameters
- (configure_net) get rid of mask now we've cleaned up parameters
- only show dns from resolv.conf for now
- (configure_net) remove some parameters according to specs
- (configure_net) sanitize buttons layout (#8637)
-
- * network/netconnect.pm: provide a nice way to go back to summary when
- interface is already configured (#8002)
- fix buttons so that they're labeled as cancel/ok instead of
- previous/next when warning in network installations
- fix writing drakconnect config file at install time (#7478)
-
- * standalone/drakfont (advanced_install) "Install" button is sensitive
- only if there're some
- fonts in the font list
-
-2004/03/12 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: removed audacity (in contrib)
-
-2004/03/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-22mdk
-
- * network/netconnect.pm: fix writing drakconnect config file at install
- time (#7478)
-
-2004/03/11 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: fix the disable, enable functions
-
- * network/shorewall.pm: add some tests for the REDIRECT squid rules
-
-2004/03/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: updated Filipino file
-
-2004/03/11 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: fix installing locales-XX for lang=nb which needs
- locales-no (one needs to use provides)
-
- * fsedit.pm: disallow lvm on / with no /boot until lilo handles it
-
- * install2.pm: tentatively fix lilo with lvm on /
-
- * bootloader.pm:
- - always generate a precise entry using the precise version
- - remove the linux-2.4 or linux-2.6 entries which don't work together
- with the precise version entry
- - still have the "linux" entry
-
- * install_steps_interactive.pm: nice fix for installing locales-XX
- corresponding the chosen country (using packagesProviding())
- workaround code trying to install locales-nb (bugzilla #8287)
-
- * install_steps.pm: catch cdie's in auto_install
-
- * do_pkgs.pm: use pkgs::packagesProviding()
-
- * pkgs.pm:
- - add function packagesProviding()
- - use it
-
-2004/03/11 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Install extra packages when using wizard too.
- Key transfer in GUI wasn't reporting errors.
-
-2004/03/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakvpn: remove debug statement
- fix previous button on first step (robert.vojta@qcm.cz, anthill #387)
-
- * ugtk2.pm (gtktext_insert) if we want anonymous tags, just create
- anonymous tags
- instead of creating fake tag names that we just discard after (rand is
- not guarranted to not return the same number twice...)
-
- * harddrake/data.pm: fix in strict mode
-
- * detect_devices.pm: workaround anthil bug #369
-
- * mdk-stage1/probing.c: fix eth[67] detection (gc)
-
- * standalone/drakgw: fix previous button on first step
- (robert.vojta@qcm.cz, anthill #386)
-
- * standalone/logdrake (text_append) fix second run (on next filling, we
- shall not create
- tags with name of existing ones)
- (parse_file) fix search :-)
- (log_output) take a color and a font as parameters now
- (log_output__real) splited from log_output(), insert text into
- textview at once
- (*) use new framework to speedup (#8412)
- (text_append) introduce it, forked from gtktext_insert()
-
- unlike the later, it create named tags, thus reducing tagtable size
- from 30000+ tags to 10-20, thus speedup logdrake in quite a big way.
-
- it should probably replace gtktext_insert in mdk10.1 since all
- gtktext_insert users really have quite a few tags (eg: 1 for
- harddrake2 and rpmdrake)
- (parse_file) speed up it by 20% (#8412) but logcolorize is the top one
- in profiles
-
- * standalone/drakboot: list yes/no for autologin in a more intuitive way,
- that is yes is
- grouped with user and wm pull down menus (robert.vojta@qcm.cz, anthill
- #390)
-
-2004/03/10 fwang
-
- * share/po/zh_CN.po: update
-
-2004/03/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- updated pot file
-
- * share/po/tl.po: updated pot file
- Updated Filipino file
-
- * keyboard.pm: list jp106 keyboard as latin only to avoid the misleading
- screen about
- language switching (japanese input doesn't use that method)
-
-2004/03/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/help-zh_CN.pot, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/advertising/dwd-04.pl, share/po/pt_BR.po, share/po/th.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po,
- install_steps_interactive.pm, network/netconnect.pm, share/po/be.po,
- share/advertising/dis-10.pl, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, network/drakfirewall.pm, install_steps_newt.pm,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/help-ru.pot,
- share/advertising/dwd-02.pl, standalone/printerdrake, share/po/ro.po,
- share/advertising/dwd-01.pl, share/advertising/dis-01.pl,
- share/po/zh_TW.po, share/po/sr@Latn.po, share/po/sq.po,
- share/advertising/dwd-05.pl, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/advertising/ppp-10.pl, share/po/lv.po,
- share/po/hu.po, printer/printerdrake.pm, share/advertising/pwp-09.pl,
- share/po/fa.po, share/po/id.po, share/po/ru.po, help.pm, share/po/br.po,
- share/po/sl.po, share/advertising/ppp-03.pl, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/advertising/dwd-03.pl, share/po/uk.po, share/po/mn.po,
- share/po/help-de.pot, share/po/lt.po, share/po/cy.po, crypto.pm,
- share/advertising/ppp-02.pl, share/po/help-it.pot,
- install_interactive.pm, share/advertising/dwd-07.pl, share/po/tg.po,
- any.pm, install_steps_gtk.pm, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, install_messages.pm, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, bootloader.pm, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/help-fr.pot, share/advertising/ppp-01.pl, share/po/tl.po,
- share/po/de.po, share/advertising/pwp-03.pl,
- share/advertising/ppp-04.pl, share/advertising/pwp-04.pl,
- share/advertising/pwp-01.pl, share/po/help-es.pot, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/advertising/dwd-09.pl, standalone/scannerdrake,
- share/po/uz@Latn.po: spell Mandrakelinux in one word
-
- * standalone/drakperm (row_setting_dialog) sanitize spacing in frames
-
-2004/03/10 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: fix the 8669 bug
-
-2004/03/10 fwang
-
- * share/po/zh_CN.po: update
- update
-
-2004/03/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: Updated Filipino file
-
-2004/03/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * mdk-stage1/probing.c (get_net_devices) increase max number of detectable
- net cards from 6 to 10
-
-2004/03/09 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/03/09 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm: special case to handle imm & ppa on kernel 2.6:
- - need parport_pc
- - modules insmod always succeed, so need to check
- /proc/sys/dev/parport/parport0/devices/{imm,ppa}
-
- * keyboard.pm: keyboard::load() causes some errors on kernel 2.4, ignoring
- them
-
- * Xconfig/card.pm: catch exception (bugzilla #8726)
-
-2004/03/09 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Reverse trivial translation typo. Change
- the_time() usage.
- Fix breakage introduced in config rewrite.
- All wizard methods should end at config summary.
- Support for plain tar. Deal with mixture of formats on restore. (#8676)
- Fix issue with first incremental pass not using base as comparison.
- Rework most file selections to use the same sub, drop other subs.
-
-2004/03/09 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Made more clear choices in the first-time
- dialog of printerdrake.
-
-2004/03/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksplash: fix boot_conf_path usage
- rename thm_conf_path as boot_conf_path to prevent confusion with
- thm_path
- (write_boot_thm) simplify through mkdir_p()
- misc perl_checker cleanups
- fix config file path (directory is now named config, not cfg)
-
- * harddrake/data.pm: really, really fix ISDN cards detection :-(
- really adapt to new network::isdn::isdn_detect_backend() API
-
- * share/po/fr.po: respect upcase letters
-
- * network/isdn.pm (read_providers_backend) add prototype in order to
- please lord perl_checker
-
- * standalone/drakbackup: fix crash in wizard (#8654) (setVarsInSh use
- output instead of output_p...)
- (the_time) simplify
-
- * network/netconnect.pm: fix isdn config step
- isdn config step: enable to alter defined but empty fields
- fix parameters reading/writin in isdn config step: take parameters
- from isdn data structure, not cnx one
- fix isdn config step by using runtime references
-
-2004/03/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
-2004/03/08 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: fix typo
- in generate_automatic_stage1_params():
- - handle FTP via HTTP proxy (bugzilla #8699)
- - cleanup using a different data-structure
-
- * modules.pm: a missing module is now an error, that way it won't be in
- scsi_hostadapters. In load_category(), exception is caught, so no pb
- when using load_category(). But beware, this may break!
-
-2004/03/08 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix to prevent saving host passwd when user
- requests not to (#8700).
-
-2004/03/08 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm: a missing module is now an error, that way it won't be in
- scsi_hostadapters. In load_category(), exception is caught, so no pb
- when using load_category(). But beware, this may break!
-
- * install_any.pm: in generate_automatic_stage1_params():
- - handle FTP via HTTP proxy (bugzilla #8699)
- - cleanup using a different data-structure
-
-2004/03/08 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: UI coherency (#8675).
- Fix some missing configuration options (#8654).
-
-2004/03/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: rename ensure_is_installed_if_availlable( as
- ensure_is_installed_if_available()
- install unicorn package for bewan modems
-
- * do_pkgs.pm: rename ensure_is_installed_if_availlable( as
- ensure_is_installed_if_available()
-
-2004/03/08 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/03/08 Pixel <pixel at mandrakesoft.com>
-
- * devices.pm: nicer debug error message
-
- * modules.pm: a missing module is now an error, that way it won't be in
- scsi_hostadapters. In load_category(), exception is caught, so no pb
- when using load_category(). But beware, this may break!
-
- * fsedit.pm: /proc/partitions parsing was broken for scsi cdroms using
- non-devfs names, and
- our 2.6 doesn't use devfs names in /proc/partitions... :'-(
- (bugzilla #8641)
-
-2004/03/08 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: UI coherency (#8675).
- Fix some missing configuration options (#8654).
-
-2004/03/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: rename ensure_is_installed_if_availlable( as
- ensure_is_installed_if_available()
- install unicorn package for bewan modems
- fix variable interpolation in strings
- misc perl_checker cleanups
- isdn_read_config() alter its argument, thus there's no need in returning
- it
- (which may induce developer in error by believing argument is not
- overwritten...)
- standalone drakconnect already discard returned value anyway...
- port old ISDN wizard upon new wizard layer
- fix first_modem() call
- indent
- simplify speedtouch firmware installation through newly introduced
- do_pkg::ensure_is_installed_if_availlable()
- wizard: be aware of bewan modems detection
-
- * detect_devices.pm (getBewan) fix bewan modem detection
-
- * standalone/drakperm: center labels like before
-
- * do_pkgs.pm: rename ensure_is_installed_if_availlable( as
- ensure_is_installed_if_available()
- (ensure_is_installed_if_availlable) introduce it in order to check if we
- need
- to install a package, then install it if it's availlable (eg: for binary
- drivers not availlable in download edition)
-
- * network/isdn_consts.pm:
- - add "|" separator
- - remove bus from description (the user has already selected the bus
- type)
-
- * share/po/fr.po: fix missing upercase first letter
- be aware of string change due to bewan support
-
- * share/po/br.po: be aware of string change due to bewan support
- update
-
- * standalone/draksplash (make_boot_frame) fix crash on color switch
- (mk_frame)
- - workaround horrible packing by using a table instead of a vbox
- - do packing of resulted table outside mk_frame() which is much saner
- fix spacing around commas (sanitizing)
- gc prefers "obj->method" rather than "method obj" call style
- use option menu for resolutions list
- (mk_frame) enable to use either combo boxes or option menus for lists
- (mk_frame) fix combo boxes filling
- (which_res_exist) unjonathan-ize
- (show_prev) only redraw needed part, not whole image
- (show_prev) fix crash on image drawing
- (show_prev) fix crash on image scaling
- fix crash on "preview" button
- (get_this_thm_res_conf) add prototype to help perl_checker
- kill unused variables
- kill perl4 function call style
-
- * network/isdn.pm: isdn_read_config() alter its argument, thus there's no
- need in returning it
- (which may induce developer in error by believing argument is not
- overwritten...)
- standalone drakconnect already discard returned value anyway...
- kill isdn_get_info() and isdn_get_list() (they were unused since quite a
- few
- releases :-()
- (isdn_get_cards) introduce it to build a tree bus|card for isdn wizard
- (get_info_providers_backend) prevent faillure as soon as translaters
- catch up
- export isdn_read_config()
- kill isdn_ask(), isdn_ask_info() and isdn_ask_protocol() since they were
- merged into wizard (aka ported to new wizard layer)
- (isdn_get_cards_by_type) splited out of old isdn_ask() func
- (get_info_providers_backend) drop file argument and do ISDN db lookup in
- place
- (read_providers_backend) move it from network::tools to network::isdn
- (isdn_detect_backend) enhance detection: just return a list of devices
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/uk.po, share/po/mn.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/nl.po,
- share/po/tl.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/uz@Latn.po: be aware of string
- change due to bewan support
-
- * network/adsl.pm (adsl_detect) detect bewan ADSL modems
-
- * network/tools.pm (read_providers_backend) move it from network::tools to
- network::isdn
-
- * harddrake/data.pm: adapt to new network::isdn::isdn_detect_backend() API
-
- * ugtk2.pm (Gtk2::WrappedLabel::new) fix unusing label
- (Gtk2::WrappedLabel::new) enable to alter default alignment
-
-2004/03/08 yrahal
-
- * share/po/ar.po: Doing a sync with Arabeyes.org's CVS...
- There should be no stat differences anymore.
-
-2004/03/07 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/03/07 keld
-
- * share/po/da.po: updates
- soft/ftw/po/da.po gi/perl-install/share/po/da.po
-
-2004/03/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ar.po: updated po file
-
-2004/03/07 tbacklund
-
- * share/po/fi.po: finnish translations at 100% again...
-
-2004/03/07 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation of the
- week...
-
-2004/03/06 fwang
-
- * share/po/zh_CN.po: update
-
-2004/03/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
-2004/03/05 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/03/05 keld
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2004/03/05 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: replacing automatic=method:disk with $param instead of
- adding $param (since $param already contains automatic=met:disk)
-
- * fs.pm: no entry in fstab for zips (now cleanly done by hotplug)
-
- * detect_devices.pm: fix warning
-
-2004/03/05 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/cups.pm, printer/printerdrake.pm: Let URIs listed by "lpinfo -v"
- be shown in the dialog for entering a URI manually.
-
-2004/03/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- standalone/drakTermServ, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/ar.po,
- share/po/ltg.po, share/po/nb.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/nn.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: typo fix
-
- * network/network.pm (write_resolv_conf) only remove /etc/resolv.conf if
- it's really a link
- (prevent no resolv.conf rewriting when it was empty eg b/c link was
- dead)
-
-2004/03/04 keld
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
- Updates
- gi/perl-install/share/po/da.po
- Updates
- gi/perl-install/share/po/da.po
-
-2004/03/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/ca.po, share/po/nn.po: updated Estonian file
- updated pot file
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/ja.po, share/po/hr.po, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/da.po,
- share/po/ar.po, share/po/ltg.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: updated pot file
-
- * share/po/tl.po: updated po file
- updated pot file
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
-
-2004/03/04 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: fix & cleanup generating
- replay & auto_install images
- (thanks to David Eastcott)
-
- * install_any.pm: oops, fix commit
- fix & cleanup generating replay & auto_install images
- (thanks to David Eastcott)
-
-2004/03/04 tsdgeos
-
- * share/po/ca.po: Unfuzzying
-
-2004/03/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix crash on modem configuration in installer
- (standalone drakconnect
- didn't had the bug because it has already loaded the network::modem
- package at this stage)
-
- * standalone/draksec (wait_msg) show up some translated title
-
- * ugtk2.pm: enable exception managment even at install time (installer set
- $::no_ugtk_init)
-
-2004/03/04 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/init.c: unmounting /sys is not needed (useful to have one
- less line displayed after "unmounting filesystems...")
-
- * install_steps.pm, install_steps_interactive.pm: fix & cleanup generating
- replay & auto_install images
- (thanks to David Eastcott)
-
- * install_any.pm: oops, fix commit
- fix & cleanup generating replay & auto_install images
- (thanks to David Eastcott)
-
-2004/03/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix crash on modem configuration in installer
- (standalone drakconnect
- didn't had the bug because it has already loaded the network::modem
- package at this stage)
-
- * ugtk2.pm: enable exception managment even at install time (installer set
- $::no_ugtk_init)
-
-2004/03/04 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: really enable the proxy squid, fix the proxy REDIRECT
- shorewall rule, fis the shorewall interfaces configuration
-
- * network/shorewall.pm: use the name of the network interface instead of
- the label
- remove an obsolete comparison in the read function
-
-2004/03/04 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/init.c: unmounting /sys is not needed (useful to have one
- less line displayed after "unmounting filesystems...")
-
- * install_steps.pm, install_steps_interactive.pm: fix & cleanup generating
- replay & auto_install images
- (thanks to David Eastcott)
-
- * install_any.pm: oops, fix commit
- fix & cleanup generating replay & auto_install images
- (thanks to David Eastcott)
-
-2004/03/04 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/03/04 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Don't destroy "fat" client inittab.
-
-2004/03/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_steps.pm (hasNetwork) do not refuse to up the network when in
- dhcp (bad oem patch)
-
- * standalone/drakgw: reput back strict pragma
- list network card name rather than just ethX in device list
-
-2004/03/03 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: 2 entries
-
-2004/03/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/is.po, share/po/nn.po, share/po/et.po: updated pot files
-
-2004/03/03 Pixel <pixel at mandrakesoft.com>
-
- * devices.pm: one now need cryptoloop and aes when using encryption
- (kernel 2.6)
-
- * fs.pm: move set_loop() from formatMount_part to real_format_part to fix
- Format with encrypted files/devices
- one now need cryptoloop and aes when using encryption (kernel 2.6)
-
-2004/03/03 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/03/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Default kernel version, add gdm user if needed,
- autologin warning.
- Copy server X keyboard config to client. Default thin client setup.
- Change banner method as other drak tools.
-
-2004/03/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: add vpi/vci parameters for australia ISPs
- (#5056)
-
- * drakxtools.spec: 10-21mdk
-
-2004/03/03 Pixel <pixel at mandrakesoft.com>
-
- * devices.pm: one now need cryptoloop and aes when using encryption
- (kernel 2.6)
-
- * fs.pm: move set_loop() from formatMount_part to real_format_part to fix
- Format with encrypted files/devices
- one now need cryptoloop and aes when using encryption (kernel 2.6)
-
-2004/03/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: add vpi/vci parameters for australia ISPs
- (#5056)
-
- * drakxtools.spec: 10-21mdk
- 10-20mdk
-
-2004/03/03 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: mount /sys in case it is useful (and it is for
- get_usb_storage_info_26())
-
- * fs.pm: sysfs now exists!
-
- * detect_devices.pm: fix get_usb_storage_info() on kernel 2.6
-
- * standalone/drakupdate_fstab:
- - device_name_to_entry() will not fail anymore so that removing a
- device works
- - log calls to drakupdate_fstab
- - use "find" instead of "grep" where possible
-
-2004/03/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-20mdk
-
-2004/03/03 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: mount /sys in case it is useful (and it is for
- get_usb_storage_info_26())
-
- * fs.pm: sysfs now exists!
-
- * detect_devices.pm: fix get_usb_storage_info() on kernel 2.6
-
- * standalone/drakupdate_fstab:
- - device_name_to_entry() will not fail anymore so that removing a
- device works
- - log calls to drakupdate_fstab
- - use "find" instead of "grep" where possible
-
- * crypto.pm:
- - community updates are not in a per-version directory either
- - cooker & community urls do contain .../RPMS at the end whereas
- updates directory do not, handle this
-
-2004/03/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Use preferred conf file read/write method. More
- code reduction/cleaning.
-
-2004/03/03 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: If an HP multi-function device was configured
- manually, extract the model name from the HPOJ device entry name.
-
- * printer/main.pm: Let HPOJ device entry be created with the correct
- printer model name.
-
-2004/03/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: hide dns settings by default when using dhcp
-
-2004/03/02 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/03/02 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed HPOJ configuration when manually setting up a
- device.
-
-2004/03/02 tsdgeos
-
- * share/po/ca.po: updating
-
-2004/03/02 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: removed lib in PRINTER automatically included via
- dependencies
- add major to libsnmp and libsane-hpoj because there are not required by
- any packages and clean_rpmsrate does not update lib only (only -devel)
-
-2004/03/02 Pixel <pixel at mandrakesoft.com>
-
- * crypto.pm: cooker updates are not in a per-version directory
-
- * any.pm, standalone/drakboot: drakboot --boot is now a wizard
-
- * diskdrake/interactive.pm: type "ext2:vfat" must not be the same as 0
-
- * interactive/gtk.pm: small fix when clicking on an empty tree (when
- allow_empty_list)
-
-2004/03/02 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Sometimes option default settings in the
- printer options dialog were missing (e. g. "Dithering Pixels Per Inch"
- in "pcl3" driver). Fixed.
-
-2004/03/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: bump version number
-
- * any.pm (setupBootloader__general) fix wizard title now that drakboot
- --boot
- is a wizard like tool
-
- * drakxtools.spec: 10-19mdk: last but not least
- 10-19mdk
-
- * network/isdn.pm: fix doble ISDN detection (#6535)
-
-2004/03/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po: updated pot file
- updated Filipino file
- updated pot file
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
- updated pot file
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated pot file
- updated pot file
-
- * network/shorewall.pm: rewrote string to avoid duplication
-
-2004/03/02 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: bugzilla #8133 says "VT8751 [ProSavageDDR P4M266] VGA
- Controller" (0x5333,
- 0x8d04) has no pb with graphical lilo. So only keeping the restriction
- for
- (0x5333, 0x8d03), hoping that's what fpons wanted.
-
- * crypto.pm: cooker updates are not in a per-version directory
-
- * any.pm, standalone/drakboot: drakboot --boot is now a wizard
-
- * diskdrake/interactive.pm: type "ext2:vfat" must not be the same as 0
-
- * common.pm: better error message on exceptions
-
- * interactive/gtk.pm: small fix when clicking on an empty tree (when
- allow_empty_list)
-
-2004/03/02 tbacklund
-
- * share/po/fi.po: Finnish tranlsation 100% again
-
-2004/03/02 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Sometimes option default settings in the
- printer options dialog were missing (e. g. "Dithering Pixels Per Inch"
- in "pcl3" driver). Fixed.
-
-2004/03/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-19mdk: last but not least
- 10-19mdk
- 10-18mdk
-
- * network/modem.pm: fix modem symlink (#7967)
-
- * any.pm (setupBootloader__general) fix wizard title now that drakboot
- --boot
- is a wizard like tool
-
- * network/isdn.pm: fix doble ISDN detection (#6535)
-
- * harddrake/data.pm: bump version number
-
- * network/netconnect.pm: sync dhcp client with ifup one
- preselect first availlable dhcp client
- stricter pci modem matching (purely cosmetic but sanity is always good)
- fix pci modem type matching
-
- * bootloader.pm (read) default to lilo if grub config file isn't there
- (workaround
- buggy detectloader only checking MBR)
-
- * share/po/fr.po: update
-
-2004/03/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/uz@Latn.po:
- updated pot file
-
- * share/po/tl.po: updated Filipino file
- updated pot file
-
-2004/03/02 Pixel <pixel at mandrakesoft.com>
-
- * share/list: add SecurityPolicy to remove "error opening security policy
- file" warning
-
- * install_gtk.pm: fix potential error
- add SecurityPolicy to remove "error opening security policy file"
- warning
-
- * bootloader.pm: if the default bootloader entry is invalid, choose
- another one
-
-2004/03/02 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- by Reinout van Schouwen <reinout@cs.vu.nl>
-
-2004/03/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-17mdk
-
- * standalone/logdrake: fix icon name change
-
- * standalone/drakups: fix wizard icon
-
-2004/03/01 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated translation
-
-2004/03/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po, share/po/uz.po, share/po/nn.po, share/po/uz@Latn.po:
- updated Norwegian and Uzbek files
-
-2004/03/01 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: remove existing xxx=ide-scsi on upgrades
-
-2004/03/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/gimp.pm: Do not configure the GIMP-Print plug-in on more than 50
- users (bug #6423).
-
- * printer/printerdrake.pm: Fixed bug #8483: No "ptal:/..." in manual
- device URI list.
-
- * scanner.pm, standalone/scannerdrake: Fixed bug #7242: Firmware was not
- found by "gt68xx" SANE backend.
-
-2004/03/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_steps.pm (upNetwork) log up try and faillures
-
- * drakxtools.spec: 10-16mdk
-
-2004/03/01 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: use "default.png" instead of (missing) "man.png" which resulted
- to defaulting to parrot (ic-bird.png)
-
- * install_steps.pm: remove existing xxx=ide-scsi on upgrades
-
- * Makefile: fix typo
-
-2004/03/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/gimp.pm: Do not configure the GIMP-Print plug-in on more than 50
- users (bug #6423).
-
- * printer/main.pm: Fixed bug of installer crashing when an HP
- multi-function device is detected and set up.
-
-2004/03/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: fix bootproto filling (#8498)
-
- * install_steps.pm (upNetwork) log up try and faillures
-
- * detect_devices.pm (getBewan) fix detection
-
- * standalone/draksec: perl_checker cleanups
-
- * standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/modem.png: update
-
-2004/03/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt_BR.po: updated Brazilian file
-
-2004/03/01 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: we don't need .pod files during install
- (but why aren't glib & gtk files not listed in share/list ??)
-
- * install_any.pm: simplify
-
- * any.pm: use "default.png" instead of (missing) "man.png" which resulted
- to defaulting to parrot (ic-bird.png)
-
- * rescue/list, tools/Makefile: adapt to perl packages rebuilt
-
- * crypto.pm, install_steps_interactive.pm: do not use $o in crypto.pm,
- pass {distro_type} to mirrors() and bestMirror() instead
-
-2004/03/01 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Removed spurious quotes ('"') from HPOJ config file.
-
- * printer/printerdrake.pm: Support for new HP multi-function devices and
- for special needs of Lexmark X125 printer.
-
-2004/03/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (create_packtable) wrap labels by default
- (Gtk2::WrappedLabel::new) left align labels by default
-
- * standalone/service_harddrake: do not crash when detector failled (eg:
- when mouse detection failled because
- of unhandled exception on module exception b/c of unresolved symbolds
- b/c of
- gcc-3.4)
-
- * standalone/drakconnect: fix bootproto filling (#8498)
-
- * standalone/draksec: sanitize main explanation text (resizable, weight,
- margin, ...)
- prevent pull-down menus to fill availlable space in packtables
- wrap and left align main options labels
- do not left align main explanation text
-
- * drakxtools.spec: 10-15mdk
-
- * share/po/fr.po: typo fix
- fix item description (#8507)
-
- * standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/webcam.png, share/po/br.po,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/modem.png,
- standalone/icons/harddrake2/keyboard.png: update
-
-2004/02/29 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2004/02/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ar.po: updated po file
-
- * share/po/nb.po: updated Norwegian file
-
-2004/02/29 reinouts
-
- * share/po/nl.po: Updated Dutch (nl) translation
- (small change to test)
-
-2004/02/29 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation for the
- past week :-)
-
-2004/02/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_any.pm: log reason why getAndSaveFile can't opening dest file
- for writing
-
- * share/list: rpmtools and perl-URPM have been rebuilt for perl 5.8.3
-
- * tools/make_mdkinst_stage2: add a few more inodes to the second stage
- ramdisk, got bitten by
- a sucking no space left on device :/ will also print available
- inodes when creating ramdisk so that we can see if our computing
- was quite good
-
- * lang.pm: load_mo: first perform a lookup on mo's for all possible langs,
- will prevent from downloading each time another time the mo file
- (fr_FR comes first, is not here, everything including fr gets
- removed, fr_FR is non-existent, and then fr is downloaded again)
-
-2004/02/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/tl.po: Updated Italian and Filipino files
-
- * share/po/hi.po: updated Hindi po file
-
- * share/po/bs.po: updated Bosnian file
-
-2004/02/27 Florin Grad <florin at mandrakesoft.com>
-
- * network/shorewall.pm, network/drakfirewall.pm: remove the masq zone and
- add policies, rules only if there is an interface in loc
-
-2004/02/27 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/27 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/disk.c: when in automatic=disk mode but no partition is
- given, fall back
- on non automatic mode evidently
-
-2004/02/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
-2004/02/27 tbacklund
-
- * share/po/fi.po: fully translated again...
-
-2004/02/27 tsdgeos
-
- * share/po/ca.po: unfuzzying
-
-2004/02/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-14mdk
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ltg.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/nn.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/mn.po, share/po/uk.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, share/po/bs.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/hi.po, share/po/af.po,
- share/po/az.po, share/po/pt.po, share/po/fr.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/de.po, share/po/tl.po,
- share/po/eo.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/uz@Latn.po: sync
-
- * standalone/net_monitor (in_ifconfig) better check ifconfig is executable
- before running it
- (-e is not enough)
-
- * network/netconnect.pm: note that isdn configuration has not yet be
- ported upon new wizard layer
- fix crash when modem was not found
-
-2004/02/27 Warly <warly at mandrakesoft.com>
-
- * crypto.pm: add $o in global vars.
- add distro_type variable to select correct updates mirror type
-
- * install2.pm: add distro_type variable to select correct updates mirror
- type
-
- * share/rpmsrate: Try to have some find of better handling for PRINTER
- flag
-
-2004/02/27 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/disk.c: when in automatic=disk mode but no partition is
- given, fall back
- on non automatic mode evidently
-
-2004/02/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-14mdk
-
- * standalone/net_monitor (in_ifconfig) better check ifconfig is executable
- before running it
- (-e is not enough)
-
- * network/netconnect.pm: note that isdn configuration has not yet be
- ported upon new wizard layer
- fix crash when modem was not found
-
-2004/02/27 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/disk.c: when in automatic=disk mode but no partition is
- given, fall back
- on non automatic mode evidently
-
-2004/02/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-14mdk
-
- * standalone/net_monitor (in_ifconfig) better check ifconfig is executable
- before running it
- (-e is not enough)
-
- * network/netconnect.pm: note that isdn configuration has not yet be
- ported upon new wizard layer
- fix crash when modem was not found
-
- * standalone/drakvpn: translate some fields
-
- * share/po/fr.po: a few new translated strings
- typo fix
-
-2004/02/27 David Baudens <baudens at mandrakesoft.com>
-
- * pixmaps/refresh.png: Udpate icon to not display a cuted icon
-
- * pixmaps/about.png, standalone/printerdrake,
- pixmaps/about-printerdrake.png: Better layout for PrinterDrake about
- dialog box
-
-2004/02/27 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/27 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/po/fr.po: update
-
-2004/02/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/af.po: updated Afrikaans and Estonian files
- updated po files
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/ja.po, share/po/hr.po, share/po/be.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/he.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/ltg.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/tl.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: updated po files
-
-2004/02/27 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix tape backup/restore (#8284)
-
-2004/02/27 tbacklund
-
- * share/po/fi.po: fully translated again
-
-2004/02/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (set_back_pixmap) export it
-
- * standalone/net_monitor (in_ifconfig) better check ifconfig is executable
- before running it
- (-e is not enough)
-
- * network/netconnect.pm: fix crash when modem was not found
-
- * share/po/fr.po: a few new translated strings
- typo fix
- update
-
- * standalone/drakvpn: translate some fields
-
-2004/02/26 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated translation
-
-2004/02/26 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * standalone/drakautoinst, install_any.pm: support two-floppies boot style
- for replay_install disk as well (not nice at all..)
-
-2004/02/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (Gtk2::Banner::new) add o_otions ref hash parameter, thus
- enabling to
- override text position (eg: for mcc about dialog)
- (set_back_pixmap) split it out of Gtk2::Banner::set_pixmap
-
- * network/netconnect.pm:
- - never delete up/down scripts
- - only write internet service if start at boot requested
-
- * drakxtools.spec: remove bogus empty line
- update 10-13mdk changelog
- 10-13mdk
-
-2004/02/26 Warly <warly at mandrakesoft.com>
-
- * pkgs.pm: We need the PRINTER flag
-
-2004/02/26 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * standalone/drakautoinst: support two-floppies boot style for
- replay_install disk as well (not nice at all..)
-
- * install_any.pm: support two-floppies boot style for replay_install disk
- as well (not nice at all..)
- hd.img doesn't exist anymore, using hd_grub.img
-
- * ugtk2.pm: ask_browse_tree_info_given_widgets: allow for an initial
- selection if necessary (through toggle_nodes)
-
-2004/02/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tl.po, share/po/he.po: Added Filipino file; updated Hebrew file
-
-2004/02/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: remove bogus empty line
- update 10-13mdk changelog
- 10-13mdk
- 10-12mdk
-
- * ugtk2.pm (Gtk2::Banner::new) add o_otions ref hash parameter, thus
- enabling to
- override text position (eg: for mcc about dialog)
- (set_back_pixmap) split it out of Gtk2::Banner::set_pixmap
- (Gtk2::Banner::new) create only *one* expose event handler
- (Gtk2::Banner::set_pixmap) stop expose event propagation so that
- shadows do not accumulate (thus resulting in darker alpha-channel)
-
- * network/adsl.pm (adsl_conf_backend) install needed packages
-
- * network/netconnect.pm:
- - never delete up/down scripts
- - only write internet service if start at boot requested
- skip apply_setting step for now since anyway we've already written
- most config files... (btw, now installer also write cnx type as side
- effect)
- reverse debug stuff that should never have been commited
- typo fix: only write ether config for lan...
-
-2004/02/26 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/data.pm: Fixes for HPOJ setup during
- installation.
-
-2004/02/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: skip apply_setting step for now since anyway
- we've already written
- most config files... (btw, now installer also write cnx type as side
- effect)
- reverse debug stuff that should never have been commited
- typo fix: only write ether config for lan...
-
- * network/adsl.pm (adsl_conf_backend) install needed packages
-
-2004/02/25 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers: Don't install Webmin by default in Download and
- PowerPack
-
- * share/compssUsers.powerpack: Don't install Webmin by default in Download
- and PowerPack
- compssUsers for 10.0 PowerPack
-
- * share/compssUsers.server: compssUsers for 10.0 PowerPackPlus
-
-2004/02/25 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/rescue-gui.c: give us more chance to get bootloader write
- actually commited to
- disk before reboot
-
-2004/02/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: defined GTK_IM_MODULE values for CJK languages; so xim is used
- by default for languages for which we don't ship good enough
- native gtk2 input methods.
-
- * share/po/he.po: updated Hebrew file
-
-2004/02/25 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Use ATAPI:/dev/hdX for both 2.4/2.6
- compatibility.
-
- * standalone/drakTermServ: Really filter symlinked kernels. nohup the dm
- restart.
- Don't let any kernel symlinks be visible for making NBIs.
-
-2004/02/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: when sound card is added/removed, delete
- current sound levels so that sound
- service reset it to sg sane
-
- * harddrake/data.pm: look at sound cards changes on bootstrapping
-
- * drakxtools.spec (harddrake-ui package) requires sane-backends so that
- scanner
- detection works smoothly (#8305)
- 10-11mdk
-
-2004/02/25 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers.powerpack: Don't install Webmin by default in Download
- and PowerPack
- compssUsers for 10.0 PowerPack
-
- * share/compssUsers: Don't install Webmin by default in Download and
- PowerPack
- compssUsers for 10.0 Download
-
-2004/02/25 Erwan Velu <erwan at mandrakesoft.com>
-
- * mdk-stage1/disk.c: Patch from gc to allow booting a MandrakeMove on a
- Harddrive using the
- automatic settings.
-
-2004/02/25 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-10mdk
-
- * harddrake/data.pm: handle webcams managed by pwc driver
-
- * share/po/fr.po: update
-
-2004/02/25 Warly <warly at mandrakesoft.com>
-
- * pkgs.pm: revert my suckinessed / added to prefix
-
-2004/02/25 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/modem.pm:
- - allow writting to another kppprc file
- - replace new kppp option values
-
- * standalone/drakconnect: fix forgotten $::prefix (could I say typo fix ?)
- - RTC Modem page shown and pretty okayish
- - use '/root/.kde/share/config/kppprc' for any local change
-
-2004/02/25 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-10mdk
-
- * harddrake/data.pm: handle webcams managed by pwc driver
-
- * share/po/fr.po: update
-
-2004/02/24 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/nn.po, share/po/ja.po,
- share/po/hr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/mn.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/lt.po, share/po/he.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/ltg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file; added Latgalian
- file
-
- * share/po/tr.po: updated Turkish file
- updated pot file; added Latgalian file
-
- * share/po/et.po: updated Estonian file
- updated pot file; added Latgalian file
-
-2004/02/24 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Rework CD recording for ATA device setup.
-
-2004/02/24 tbacklund
-
- * share/po/fi.po: 100% translated, was 54 fuzzy, 49 untranslated
-
-2004/02/24 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm, standalone/scannerdrake: UI text fixes.
-
-2004/02/24 tsdgeos
-
- * share/po/ca.po: some more unfuzzyin
-
-2004/02/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: merge in typo fixes
- from tille
-
- * network/adsl.pm (adsl_conf_backend) alter both
- /etc/analog/adiusbadsl.conf and
- /etc/eagle-usb/eagle-usb.conf too when configuring sagemXXX
-
- * drakxtools.spec: fix changelog
- 10-9mdk
- 10-8mdk
-
-2004/02/24 Warly <warly at mandrakesoft.com>
-
- * pkgs.pm: add PRINTER alongside with INSTALL not to duplicate printer
- related packages into OFFICE
-
- * share/rpmsrate, share/compssUsers, share/compssUsers.server,
- share/compssUsers.desktop: Separate printing-related packages from
- INSTALL to create a new separated PRINTER group and pre-select them if
- OFFICE compssUser group is selected
-
-2004/02/24 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation
-
-2004/02/24 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Fix typo
- Fix typos
-
- * share/rpmsrate: Update
-
-2004/02/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/ca.po: updated Estonian file
-
- * share/po/ja.po: updated Japanese file
-
- * share/po/ms.po: updated Malay file
-
-2004/02/24 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: mknbi-set always wants a kernel version now.
- Deal with conflicts with msec > 3 and exporting / (use no_root_squash).
- Always pass a kernel to mkinitrd-net. (Both part of #8216)
- Add --restart option for terminal-server.
-
-2004/02/24 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/scannerdrake: UI text fixes.
- Ask user before installing packages.
-
- * printer/printerdrake.pm: UI text fixes.
- Give clear warning/error messages if a package installation fails.
- Let printer model in first-time dialog also be shown if there is no
- description field in the device ID of the printer.
-
-2004/02/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix module lookup for pcmcia cards
-
- * network/adsl_consts.pm: set default protocol to pppoa for various ISPs
- update 9telecom entry (Benot Audouard)
- add encapsulation method for tiscali 512k offer in france
- fix wrongly inverted encapsulation methods for free isp cnx offers
- use spanish caracters in spanish isp name (Benot Audouard)
- fix url (Benoît Audouard)
- typo fix
- typo fix (fcrozat)
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: merge in typo fixes
- from tille
-
-2004/02/24 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation
-
-2004/02/23 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/nn.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
-2004/02/23 tsdgeos
-
- * share/po/ca.po: Some unfuzzying
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
-2004/02/23 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
- typo fixes (Reinout van Schouwen)
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, diskdrake/interactive.pm, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, diskdrake/hd_gtk.pm, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: typo fixes (Reinout van Schouwen)
-
- * standalone/drakconnect: misc perl_checker cleanups
-
- * drakxtools.spec: 10-7mdk
-
-2004/02/23 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * rescue/tree/etc/issue: 10.0
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm: write ethX aliases and ifup/ifdown scripts when
- configuring a LAN connection
-
- * standalone/drakconnect (del_intf) keep ethX aliases b/c eg removing eth0
- will results in eth1 to be
- renumbered on next boot...
- (del_intf) down the network interface when deleting it
- (del_intf) when no network configuration is configured, just report it
- (del_intf) only list configured interfaces when offering to delete them
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, diskdrake/interactive.pm, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, diskdrake/hd_gtk.pm, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/nn.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po, share/po/uz@Latn.po: typo fixes (Reinout
- van Schouwen)
-
- * drakxtools.spec: 10-7mdk
- 10-6mdk
-
- * network/netconnect.pm:
- - always write up/down scripts
- - only write initscript when starting at boot was choosen (instead of
- writing
- it in restart path...)
- write ethX aliases and ifup/ifdown scripts when configuring a LAN
- connection
-
- * network/adsl.pm: fix adsl scripts (especially with sagem8xx modems)
- add missing space
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: fix french translation (upcase label)
-
- * standalone/drakconnect: fix ability to set ip parameters broken by
- localizing bootproto
-
- * drakxtools.spec: 10-6mdk
- 10-5mdk
-
- * network/adsl.pm: fix adsl scripts (especially with sagem8xx modems)
- add missing space
- (adsl_conf_backend) speedtouch config need vpi/vci as decimal numbers
- whereas sagem8xx wants hexa numbers
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: do not tag some ata raid controllers as unknown hw
-
- * share/po/fr.po: fix french translation (upcase label)
- fix french translation (upcase label)
-
- * standalone/drakconnect: fix ability to set ip parameters broken by
- localizing bootproto
- handle and translate BOOTPROTO
- read ppp auth method
- handle new PAP/CHAP method
- fix untranslated strings
- do not complain about gateway format when it's not set
-
- * any.pm (setupBootloader__entries) fix entry editing layout
-
- * drakxtools.spec: 10-5mdk
- 10-4mdk
-
- * network/netconnect.pm: handle unknown hardware: enable one to manually
- load a driver like expert mode
- in old pre-10.0 wizard
- enable one to manually choose the serial port to use while configuring
- modem
- fix unreachable steps
- read ppp config earlier and prevent provider choice to overwrite it (but
- if
- user select a *new* provider)
- initialize modem data structure at one point only for serial/PCI modems
- split kppp config reading into network::modem::ppp_read_conf() in order
- to be
- shared with manage interface
- fix choosing betweeen '' and 'adsl connections when configuring adsl
- (due to
- write_cnx_scripts vivificating data structure)
-
- * modules/interactive.pm (load_category__prompt_for_more) do not list
- probed category in detected hardware list
- (load_category__prompt_for_more) show quotes around detected hardware in
- order
- to more easily see thems
-
- * network/modem.pm (ppp_read_conf) really default to dynamic dns, gateway
- and ip (really fix #7705)
- misc perl_checker cleanups
- split kppp config reading into network::modem::ppp_read_conf() in order
- to be
- shared with manage interface
-
- * network/ethernet.pm (conf_network_card_backend) update its doc now that
- it has been splited in
- get_eth_cards() and conf_network_card_backend()
-
- * network/adsl_consts.pm: rollback bogus damien change, here vpi/vci
- parameters are in hexa, not decimal
-
- * network/adsl.pm (adsl_conf_backend) speedtouch config need vpi/vci as
- decimal numbers
- whereas sagem8xx wants hexa numbers
-
-2004/02/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: do not tag some ata raid controllers as unknown hw
-
- * standalone/drakconnect: handle and translate BOOTPROTO
- read ppp auth method
- handle new PAP/CHAP method
- fix untranslated strings
- do not complain about gateway format when it's not set
-
- * any.pm (setupBootloader__entries) fix entry editing layout
-
- * network/netconnect.pm: handle unknown hardware: enable one to manually
- load a driver like expert mode
- in old pre-10.0 wizard
- enable one to manually choose the serial port to use while configuring
- modem
- fix unreachable steps
- read ppp config earlier and prevent provider choice to overwrite it (but
- if
- user select a *new* provider)
- initialize modem data structure at one point only for serial/PCI modems
- split kppp config reading into network::modem::ppp_read_conf() in order
- to be
- shared with manage interface
- fix choosing betweeen '' and 'adsl connections when configuring adsl
- (due to
- write_cnx_scripts vivificating data structure)
-
- * share/po/fr.po: fix french translation (upcase label)
-
- * modules/interactive.pm (load_category__prompt_for_more) do not list
- probed category in detected hardware list
- (load_category__prompt_for_more) show quotes around detected hardware in
- order
- to more easily see thems
-
- * network/modem.pm (ppp_read_conf) really default to dynamic dns, gateway
- and ip (really fix #7705)
- misc perl_checker cleanups
- split kppp config reading into network::modem::ppp_read_conf() in order
- to be
- shared with manage interface
-
- * network/ethernet.pm (conf_network_card_backend) update its doc now that
- it has been splited in
- get_eth_cards() and conf_network_card_backend()
-
- * drakxtools.spec: 10-4mdk
-
-2004/02/22 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated translation
-
-2004/02/22 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl_consts.pm: fix vci number for Belgium and France
-
-2004/02/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nn.po: updated Nynorsk file
- Added Nynorsk file
-
- * share/po/cy.po: Added Nynorsk file
-
-2004/02/21 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/21 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/et.po: updated Estonian and Italian files
-
-2004/02/21 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Verify user has selected a cron interval and
- media [Bugzilla 8138]
- More code reduction.
-
-2004/02/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
-2004/02/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: QA - tweak wizard setup.
-
-2004/02/20 tsdgeos
-
- * share/po/ca.po: Some updates and unfuzzying
-
-2004/02/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: when one refuse to install firmware *now*, she
- won't be able to select
- a provider, thus vci and vpi parameters won't be filled
- remove useless "next" field (since post already handle it)
-
- * standalone/logdrake: fix title when run from mcc (#8111)
-
- * drakxtools.spec: 10-3mdk
- 10-2mdk
-
- * detect_devices.pm (getBewan) introduce it in order to detect Bewan ADSL
- modems (both PCI
- and USB ones)
-
- * share/po/fr.po: update
-
-2004/02/20 tsdgeos
-
- * share/po/ca.po: Some updates and unfuzzying
-
-2004/02/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm (getBewan) introduce it in order to detect Bewan ADSL
- modems (both PCI
- and USB ones)
- (getSagem) lookup sagem8xx modems by module rather than relying on
- strings
- manually added to ldetect-lst
-
- * standalone/drakperm: fix "current" checkbox vs "group" and "user"
- pull-down menus
-
- * standalone/logdrake: fix title when run from mcc (#8111)
-
- * network/netconnect.pm: when one refuse to install firmware *now*, she
- won't be able to select
- a provider, thus vci and vpi parameters won't be filled
- remove useless "next" field (since post already handle it)
- enable to refuse network restarting
-
- * drakxtools.spec: 10-3mdk
- 10-2mdk
-
-2004/02/20 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: keep provider vpi/vci settings when exist
-
-2004/02/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
- * lang.pm: uim-anthy works ok in on-the-spot mode with KDE
-
-2004/02/20 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm (update_for_renumbered_partitions):
- - handle no grub config
- - skip modifications when dev2grub fail
- (since the device not in device.map means the device is currently unused
- for booting)
-
- * modules.pm, install_steps.pm: alias agpgart should be only for 2.6,
- since code doesn't allow this easily,
- adding the agp module to modprobe.preload
-
-2004/02/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Shrink code per Thierry.
-
-2004/02/20 tsdgeos
-
- * share/po/ca.po: Some updates and unfuzzying
-
-2004/02/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect (add_intf) no need to handle errors, it's done by
- callee now in order to share
- exception handling with installer
-
- * drakxtools.spec: 10-2mdk
-
- * network/adsl_consts.pm: remove debug statement
- aliase Free non dégroupé 1024/256 on "Free non dégroupé 512/128" (#7615)
-
- * standalone/drakperm: fix "current" checkbox vs "group" and "user"
- pull-down menus
-
- * network/netconnect.pm: enable to refuse network restarting
- do not detect lan interfaces when configuring modems
- do not horribly die at install time on error
- really fix previous button on first step: we want it at install time
-
- * detect_devices.pm (getSagem) lookup sagem8xx modems by module rather
- than relying on strings
- manually added to ldetect-lst
-
-2004/02/20 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: uim-anthy works ok in on-the-spot mode with KDE
-
-2004/02/20 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: fix warning LSB chosen implies kernel 2.4
-
- * fs.pm: add umask=0022 capability, and use it for security level 3
-
- * share/compssUsers, share/compssUsers.server: Gnome is no good, GNOME is
- good
-
- * bootloader.pm (update_for_renumbered_partitions):
- - handle no grub config
- - skip modifications when dev2grub fail
- (since the device not in device.map means the device is currently unused
- for booting)
-
- * modules.pm, install_steps.pm: alias agpgart should be only for 2.6,
- since code doesn't allow this easily,
- adding the agp module to modprobe.preload
-
-2004/02/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Shrink code per Thierry.
-
-2004/02/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: remove debug statement
- aliase Free non dégroupé 1024/256 on "Free non dégroupé 512/128" (#7615)
-
- * network/adsl.pm: fix writing aliases (fix broken speedtouch)
-
- * drakxtools.spec: 10-1mdk
-
-2004/02/20 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * interactive/gtk.pm, install_gtk.pm, ugtk2.pm: don't force buttons a size
- related to $::windowwidth since this is no more used to size the main
- window (fixes missing Next button in vgahi), use a global
- $::real_windowwidth for sizings related to the main window
-
- * mdk-stage1/Makefile: 10.0
-
- * install_steps_gtk.pm: don't force buttons a size related to
- $::windowwidth since this is no more used to size the main window (fixes
- missing Next button in vgahi), use a global $::real_windowwidth for
- sizings related to the main window
- allow to specify the Xnest wanted resolution with --vga
-
-2004/02/20 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: fix warning LSB chosen implies kernel 2.4
-
- * fs.pm: add umask=0022 capability, and use it for security level 3
-
- * share/compssUsers, share/compssUsers.server: Gnome is no good, GNOME is
- good
-
-2004/02/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Gnome icon order. Drop an unused button box.
-
-2004/02/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-0.21mdk
-
-2004/02/19 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/02/19 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm, ugtk2.pm: use $ugtk2::current_window in place of
- @interactive::objects (which was unused and broken)
- => fix XSetInputFocus (bugzilla #8046 and #8053)
-
-2004/02/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: since no PCMCIA cards support link status
- notification, ifplugd should
- be disabled for all pcmcia cards by default => let blacklist them
- (#8031)
-
- * standalone/drakvpn: fix string
-
- * share/po/fr.po: update
-
-2004/02/19 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/02/19 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Update
-
-2004/02/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: value of XIM is the xim identifier, not the xim program name
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
-2004/02/19 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm, ugtk2.pm: use $ugtk2::current_window in place of
- @interactive::objects (which was unused and broken)
- => fix XSetInputFocus (bugzilla #8046 and #8053)
-
-2004/02/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakvpn: consolidate strings
-
-2004/02/19 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Update
- Revert my mistake
-
- * share/advertising/dwd-01.pl: Add missing string
-
-2004/02/19 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm: put a Previous button on the first page
-
-2004/02/19 Florin Grad <florin at mandrakesoft.com>
-
- * network/ipsec.pm: add plenty of help explanations, add anonymous support
- in sainfo
-
- * standalone/drakvpn: add plenty of help files, add anonymous support for
- sainfo
-
-2004/02/19 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps.pm: add utf8 key to locale config if not already present,
- so that
- auto install behave as before (pixel)
-
- * http.pm: well, value is not dropped anymore perl checko
- - don't resolv host, it breaks virtual servers configs
- - log when we don't receive a 200
-
-2004/02/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: value of XIM is the xim identifier, not the xim program name
-
- * standalone/drakvpn: fixed typos
-
-2004/02/19 Pixel <pixel at mandrakesoft.com>
-
- * standalone/XFdrake: no more global icon in XFdrake
-
- * install_steps_gtk.pm: the text we give to set_markup should not contain
- raw "&"
- (occurs for "Any PS/2 & USB mice")
-
- * interactive/gtk.pm: don't have a big scrolled window that can be around
- a local scrolled window.
- ensure instead many local scrolled windows
-
- * share/rpmsrate:
- - kimdaba must be flagged KDE
- - lower some packages rates for my tests
- kdenlive must be flagged KDE
-
- * tools/make_mdkinst_stage2: catch kernel 2.6 loop bug
-
- * install_steps_interactive.pm: better logging
-
- * ugtk2.pm: we don't need warp_text since we have WrappedLabel
- fix _ask_file (tested in wizard, normal and embedded)
- fix titi sucks (Advanced and Help were broken)
-
-2004/02/19 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix issue with multisession CDs (Anthill #349)
-
-2004/02/19 tsdgeos
-
- * share/po/ca.po: Today's work
-
-2004/02/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: only show "previous" button on first step in
- install; in standalone
- mode, we already have the "cancel" button
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/cs.po, share/po/uz@Latn.po: typo fix
-
- * share/rpmsrate: uim won't work without uim-applet
-
- * standalone/drakvpn: consolidate strings
- typo fix
-
- * printer/main.pm (set_usermode) do not die when run with --testing as
- user
-
- * drakxtools.spec: 10-0.20mdk
-
- * lang.pm: switch japanese from kinput2 to uim input method
-
-2004/02/19 Warly <warly at mandrakesoft.com>
-
- * standalone/drakboot: Apply Olivier Blin patch to fix theme displaying
- under console
-
-2004/02/18 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2004/02/18 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Advertisements: update translations for download
-
-2004/02/18 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: drop $netc->{internet_cnx} test, unnedeed
-
- * standalone/drakconnect:
- - add adsl_atboot() to check at boot status
- - use it instead of chk_internet()
-
-2004/02/18 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/02/18 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps.pm, any.pm, lang.pm: selectlanguage: utf8 flag status is
- updated when user selects more/less languages; when user touches it,
- update is disabled, allowing andrej to have an en_GB + ru_RU install
- without utf8
-
-2004/02/18 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: HACK: set LD_ASSUME_KERNEL so that rpm doesn't try to use
- tls (which we don't
- have at install) otherwise it causes *weird* problems in __db*. When
- LD_ASSUME_KERNEL is set, no __db* are used, and so no such pbs.
-
- * fsedit.pm, partition_table.pm: type 0x17 *can* be ntfs, assuming it is
- when we don't care much, and check if it is ntfs otherwise
-
-2004/02/18 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: QA - Encourage user to finish configuring media
- before leaving wizard.
- Rework backupignore behavior (Anthill #306).
-
-2004/02/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, standalone/drakvpn, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: typo fix
-
- * network/netconnect.pm: do not use ifplugd on wireless connections by
- default
- fix "network needs to be restarted" step
- do not overwrite current wireless parameters with default values
- move some wireless options as advanced ones
-
- * drakxtools.spec: 10-0.19mdk
-
- * standalone/harddrake2 (quit_global) do not die in exit path when not run
- as root
- reindent button packing
- sanitize buttons layout when embedded
-
-2004/02/18 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Install Google's search bar when KDE is installed
-
-2004/02/18 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: drop $netc->{internet_cnx} test, unnedeed
-
- * standalone/drakconnect: fix adsl at boot, better and more clean
-
-2004/02/18 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Pull xine-arts when choosing video AND KDE
-
-2004/02/18 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/fr.po,
- share/po/ta.po, share/po/vi.po, share/po/nl.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/advertising/dwd-09.pl, share/po/uz@Latn.po: fix wording of
- advertisement thx to austin
-
- * tools/shift_img.c, tools/shift_all.pl: these files I needed when pablo
- gave me lang-*.png images because they were not aligned.. commiting in
- case
-
- * install_any.pm: ok, ok, perl checker roulaize
- better match
- tentatively fix #7792 (seems like line number don't match #7792,
- but this one I'm fixing was obviously wrong, at least)
- allow using ext2 or vfat floppies for kickstart=floppy so that
- when you do an auto install based on network.img and
- network_drivers.img, you can put your auto_inst.cfg.pl on
- network_drivers.img and rock n roll
-
- * mdk-stage1/modules.c: support automatic installs even when needing the
- additional drivers floppy
-
- * modules.pm: don't log insmod errors on tty5, rather on tty3+ddebug.log
- as normal log
-
-2004/02/18 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm: when cancel is pressed, fix re-selecting
- unselected packages
- (callback_choices unneeded, cf rpmdrake)
- small cleanup
-
- * install2.pm: HACK: set LD_ASSUME_KERNEL so that rpm doesn't try to use
- tls (which we don't
- have at install) otherwise it causes *weird* problems in __db*. When
- LD_ASSUME_KERNEL is set, no __db* are used, and so no such pbs.
-
- * fsedit.pm, partition_table.pm: type 0x17 *can* be ntfs, assuming it is
- when we don't care much, and check if it is ntfs otherwise
-
- * standalone/diskdrake: set useSupermount to magicdev (so that it doesn't
- use supermount from cdroms)
-
- * share/rpmsrate: gdm is an important gnome application, make it 5 (for my
- tests)
-
-2004/02/18 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Rework backupignore behavior (Anthill #306).
-
-2004/02/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (create_okcancel) enable to specify that some buttons must be
- at right
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, standalone/drakvpn, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- share/po/fa.po, share/po/id.po, share/po/ru.po, share/po/br.po,
- share/po/sl.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/mn.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/tg.po, share/po/bs.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/hi.po, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/fr.po, share/po/ta.po, share/po/vi.po,
- share/po/nl.po, share/po/de.po, share/po/eo.po, share/po/bg.po,
- share/po/cs.po, share/po/el.po, share/po/uz@Latn.po: typo fix
-
- * standalone/drakconnect: force apply button to be right aligned
-
-2004/02/17 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: manage interfaces don't want to break cnx_scripts
-
- * standalone/drakconnect:
- - add chk_config() to test internet service state
- - adsl onboot using chk_config()
-
-2004/02/17 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c, mdk-stage1/modules.h: support
- 2.6 insmoding for expert third party modules and loading named modules
-
- * Xconfig/card.pm: well we reverted to 4.3
-
-2004/02/17 tsdgeos
-
- * share/po/ca.po: today's updates
-
-2004/02/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: enforce gnome button order everywhere (interface team request)
-
- * drakxtools.spec: log one more stuff into 10-0.18mdk
- fix changelog
- 10-0.18mdk
-
- * standalone/icons/wiz_default_up.png: new default icon for wizards
-
-2004/02/17 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/17 Florin Grad <florin at mandrakesoft.com>
-
- * network/ipsec.pm: one can now start from scratch with ipsec.conf
- fix the ";" mark in the Security Policies Section
-
- * standalone/drakvpn: one can now start an ipsec.conf file from scratch
- add the ask_info3 function
-
-2004/02/17 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/frontend-common.c,
- mdk-stage1/stdio-frontend.c, mdk-stage1/newt-frontend.c: when available,
- always load usb interface, as soon as possible, should help usb mouse
- detection in stage2 which otherwise timeouts
-
-2004/02/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/mn.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/lt.po, share/po/he.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/nb.po,
- share/po/bs.po, share/po/uz.po, share/po/ro.po, share/po/mk.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/hi.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/hu.po,
- share/po/uz@Latn.po: updated pot file
-
-2004/02/17 Pixel <pixel at mandrakesoft.com>
-
- * mouse.pm: detection defaults on automatic choices
- fix mouse detect() on kernel 2.4
-
- * bootloader.pm: remove bad entries after reading existing conf file
- log where the bootloader is installed
-
- * interactive/newt.pm: don't have a scroll inside a scroll which causes
- display pbs.
- alas it doesn't fix the "Tab" navigation when having a global scroll + a
- Listbox. You have to use the right arrow to exit the Listbox
-
-2004/02/17 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Added warnings to clearly tell the user when
- there is no network access.
- Removed printer list button whenthere is no network also in expert mode.
-
- * printer/detect.pm: Fixed problem that not used parallel ports were
- detected as printers.
-
-2004/02/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/icons/drakfont.png, standalone/drakfont,
- standalone/icons/drakfont.620x57.png: switch drakfont to new banner
- style
-
- * harddrake/data.pm: really fix doble blanked ISDN detection
-
- * share/po/Changelog: kill no more used file
-
- * standalone/drakvpn (ask_info3) really use parameters...
- consolidate strings
-
- * share/po/fr.po: update
-
- * network/netconnect.pm: sort lan protocols
-
- * drakxtools.spec: fix changelog
- 10-0.17mdk
-
-2004/02/16 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Nothing special
- Partially updated file
-
-2004/02/16 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: move check_field's ask_warn() to save_notebook()
- check gateway entry
-
-2004/02/16 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/16 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakvpn: do not test the translated chains anymore
-
-2004/02/16 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/url.c: fix buggy redhat code exhausted only in -Os which
- corrupted
- memory and gave wrong results for download file size in FTP/HTTP
- installs
-
-2004/02/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * network/netconnect.pm, standalone/drakvpn, standalone/drakboot: typo
- fixes
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
- updated pot file
-
- * network/ipsec.pm: removed N() around of a non-translatable string
-
-2004/02/16 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: keep current authentication kind, even if
- not completly accepted
- network::shorewall::read without silent is nasty, since it doesn't only
- read,
- it prompts the user. So each time the summary updates the data, it
- prompts
- (when you have more than one card and no firewall configured)
-
- * authentication.pm: keep current authentication kind, even if not
- completly accepted
-
-2004/02/16 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/detect.pm: Recognize parallel printers also when they miss the
- "CLASS:PRINTER;" in their device ID string (ex: Brother HL-720, bug
- #7753).
-
-2004/02/16 tsdgeos
-
- * share/po/ca.po: Today's worjk
-
-2004/02/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakpxe, standalone/drakgw: do not abuse global namespace
-
- * network/netconnect.pm: fix automatically found "...2" dns when network
- is done
- show a more precise error messages when no wireless cards were found
- eagle was renamed as eagle-usb
- minor poulpe cleanup
- explain about DNS (#7908)
-
- * standalone/drakclock: let's look better when embedded
-
- * standalone/drakvpn (ask_info2) list valid values in a pull-down menu
- (ask_info2) introduce it in order to share one more step
- (ask_info) introduce it in order to share some code
- PFS group only accept 3 distinct values
- more user friendly labels
- do not list twice the same elements in list...
- try to have better names
- do not put " = " in translated messages
- add hints
- do not abuse global namespace
-
- * standalone/drakautoinst: typo fix
- do not abuse global namespace
-
- * authentication.pm (to_kind) try harder to find out if some auth method
- already had been choosed
-
- * share/po/fr.po: update
- beautify string
-
- * install_steps_interactive.pm (setRootPassword) do not reset auth method
- when pressing "previous" in next step
-
-2004/02/16 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/list: Removed on Pixel's request (will use list-dwd
- instead)
-
- * share/rpmsrate: Add kolab-server in GROUPWARE
-
- * share/compssUsers.server: Select Groupware by default
-
-2004/02/16 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: add in %pkgs::preferred the kernel-source corresponding to the
- preferred kernel
-
- * ugtk2.pm: during install, "Ok" is on the right, like gnome not kde
-
- * share/advertising/Makefile: get the list of files needed from
- list-PRODUCT
-
-2004/02/15 tsdgeos
-
- * share/po/ca.po: more updates
-
-2004/02/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-0.16mdk
-
- * harddrake/data.pm: typo fix :-)
-
-2004/02/15 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation
-
-2004/02/14 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/02/14 keld
-
- * share/po/nb.po: Updates
- gi/perl-install/share/po/nb.po
- Updates. I could just as well update the Norwegian version
- as I wanted to use this as base for my Danish translation.
- gi/perl-install/share/po/nb.po
-
- * share/po/da.po: Updates
- soft/wizard_perl/po/da.po gi/perl-install/share/po/da.po
- Updates
- soft/control-center/po/da.po soft/drakfax/po/da.po
- soft/ftw/po/da.po soft/mdkonline/po/da.po
- soft/rfbdrake/po/da.po soft/rpmdrake/po/da.po
- soft/urpmi/po/da.po gi/perl-install/share/po/da.po
-
-2004/02/14 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: FTP restore failure feedback. Allow multiple
- catalog/file restore selection.
-
-2004/02/14 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/data.pm: Let printerdrake load the "usblp"
- instead of the "printer" kernel module if kernel 2.6.x is used.
-
- * printer/printerdrake.pm: Made printerdrake handling even very weird
- printer ID strings, as the one of the Brother HL-720 with empty
- manufacturer and description fields (Bug #7753).
-
- * printer/detect.pm: Recognize also "SN:" as serial number field in
- printer ID string (HP PhotoSmart 7760, bug #6534).
- Let printerdrake load the "usblp" instead of the "printer" kernel module
- if kernel 2.6.x is used.
-
-2004/02/14 tsdgeos
-
- * share/po/ca.po: Small updates to catalan translations
-
-2004/02/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-0.15mdk
-
- * network/netconnect.pm: fix automatically found "...2" dns
-
- * harddrake/data.pm: fix ISDN detection (#6535)
- filter out devices to prevent them to appear several times in device
- tree (#4906)
-
- * network/isdn.pm (isdn_detect_backend) try harder to detect ISDN devices
-
- * standalone/harddrake2: break devices loop into two pass:
- - first detect devices into each class
- - then process them for later display
-
- * network/tools.pm: fix crash on canceling "already configured net device"
- configuration (#7679)
-
-2004/02/13 Pixel <pixel at mandrakesoft.com>
-
- * modules/interactive.pm: don't have a wait_message above another empty
- wait_message when probing hardware
-
- * ugtk2.pm: use center-on-parent for popped windows
-
- * share/list: perl-MDK-Common has been rebuilt
-
-2004/02/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: do not try setting transcient hint when embedded
-
- * network/netconnect.pm: by default do not start connection at boot for
- modems (#7705)
-
- * drakxtools.spec: 10-0.14mdk
-
- * wizards.pm: enable default value to be dynamically computed
- enable to pass untranslated defaut to yes/no or ok/cancel like
- questions by translating value at runtime
- default to next/finish when no field is present
- add 'default' field in order to be able to enforce default answer for
- yes/no like questions or when data does not conatains any fields
- (needed for last #7705 bit)
- missing #7593 bit
- use interactive->ask_okcancel in order to not have spurious field in
- text mode (#7593)
-
-2004/02/13 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: forgotten modem page, to be traduced, not yet
- usable (please don't hurt me)
-
-2004/02/13 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: add a warning when choosing security level
- > 2 and having a windows partition
- (since in that case we won't have umask=0) (bugzilla #4731)
-
- * modules/interactive.pm: don't have a wait_message above another empty
- wait_message when probing hardware
-
- * ugtk2.pm: use center-on-parent for popped windows
-
- * share/list: perl-MDK-Common has been rebuilt
-
- * bootloader.pm: fix reading grub config (esp. when /boot is a separate
- partition)
- (nb for titi: join($xx, $yy) is *not* useful)
-
- * install2.pm: in boolean context, "any" is better than "find"
-
-2004/02/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-0.14mdk
-
-2004/02/13 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Fix </b> in advertiesment #5
-
- * share/advertising/drweb.pl, share/advertising/list-dwd,
- share/advertising/list-dis, share/advertising/list-ppp,
- share/advertising/drweb.png, share/advertising/list-pwp,
- share/advertising/list:
- - Add DRWeb's advertisement
- - Add list for each version
-
-2004/02/13 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm:
- - do not flush /etc/sysconfig/drakconnect with an empty hash
- - move $offer_to_connect after %adsl_devices declaration (fix typo?)
- s/$config/$p/ for drakconnect conf file
-
- * standalone/drakconnect: forgotten modem page, to be traduced, not yet
- usable (please don't hurt me)
- - nice ethernet names back
- - fix adsl via ethernet bug
- - fix apply settings bug
- - fix and shrink sub apply
- - drop $gui and $config
- - add new hash style $p
-
-2004/02/13 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * modules.pm: fix deps problem because of 2.4/2.6 mappings, better support
- 2.4 and 2.6 alltogether by keeping 2.4 names in modules.conf
-
-2004/02/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
- * share/advertising/dwd-09.pl: USE ASCII OR UTF-8 ONLY; **DON'T** USE
- ISO-8859-1!
-
-2004/02/13 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: add a warning when choosing security level
- > 2 and having a windows partition
- (since in that case we won't have umask=0) (bugzilla #4731)
-
- * modules/interactive.pm: don't have a wait_message above another empty
- wait_message when probing hardware
-
- * bootloader.pm: fix reading grub config (esp. when /boot is a separate
- partition)
- (nb for titi: join($xx, $yy) is *not* useful)
- try hard to update_bootloader_for_renumbered_partitions()
- create read_grub_device_map()
-
- * install2.pm: in boolean context, "any" is better than "find"
- - have usb-storage as a scsi_hostadapter by default
- - remove it if unneeded for normal boot (cf comment in the code)
-
- * modules.pm:
- - have usb-storage as a scsi_hostadapter by default
- - remove it if unneeded for normal boot (cf comment in the code)
-
- * diskdrake/interactive.pm: try hard to
- update_bootloader_for_renumbered_partitions()
-
- * mdk-stage1/init.c: sleep 10 only when debugging
-
- * interactive.pm: no need for this
-
-2004/02/13 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix QA reports of crash on file search, failure
- to report ftp error.
-
-2004/02/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
- update
-
- * standalone/icons/printerdrake.png, standalone/icons/drakgw.png,
- standalone/icons/scannerdrake.png, standalone/icons/drakvpn.png,
- standalone/icons/drakfirewall.png,
- standalone/icons/wiz_scannerdrake.png, standalone/drakpxe,
- standalone/icons/wiz_firewall.png, pixmaps/printerdrake.png,
- standalone/icons/wiz_drakvpn.png, standalone/drakgw,
- standalone/icons/logdrake.png, standalone/icons/wiz_printerdrake.png,
- standalone/icons/wiz_drakgw.png, standalone/icons/wiz_logdrake.png,
- standalone/icons/wiz_drakconnect.png, standalone/icons/drakconnect.png,
- printer/printerdrake.pm: new banner icons
-
- * standalone/harddrake2: do not force black color for fields values, this
- badly conflict with
- inverted accessibility themes
- remove statusbar on interface team request
-
- * network/netconnect.pm: new banner icons
- offer_to_connect: fix indentation
-
- * harddrake/data.pm: only look for local printers (do not perform heavy
- network probe)
-
- * modules.pm: handle wireless modules
-
- * standalone/drakconnect: new banner icons
- remove useless comment
- new banner icons
-
- * ugtk2.pm (create_scrolled_window) add relief for TreeViews too
- (interface team
- request)
- (new) simplify WizardTable
- (Gtk2::Banner->new) fix default banner size
- (new) use new Gtk2::Banner object for banner
- remove uneeded variable
- (Gtk2::Banner) move that widget from mcc into ugtk2 so that all tools
- can reuise it for their banners
-
- * interactive.pm (vnew) do not complaint about being run as root when
- --testing was passed
-
- * drakxtools.spec: 10-0.14mdk
- 10-0.13mdk
-
- * Makefile.config: add drakvpn
-
- * standalone/drakvpn: verbs must be upcased on buttons!!!
- new banner icons
-
-2004/02/12 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: in get_kernels_and_labels():
- - change internal data structure
- - change regexp matching kernel names (was broken for
- 2.4.25-0.pre7.3mdk)
- - default to kernel 2.4 when lsb is installed
-
-2004/02/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm (new) simplify banner rendering, make it cpu lighter
-
- * network/netconnect.pm: ask isp for ip and gateway by default (#7705)
-
- * standalone/drakclock (DrawPointAt) simplify draw_points call
-
-2004/02/12 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dwd-09.pl: Update text to reflect reality
-
-2004/02/12 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: fix ethernet and adsl conflict in menu
-
-2004/02/12 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakvpn: hopefuly better interface
-
-2004/02/12 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c, mdk-stage1/tools.c: try to
- detect regular floppy drives
-
- * mdk-stage1/Makefile.common: linux/fd.h is too broken to compile with -W
- :(
-
- * install2.pm: i810fb on 2.6 needs intel-agp module, doesn't like hwcur
- and xcon parameters
-
-2004/02/12 Pixel <pixel at mandrakesoft.com>
-
- * authentication.pm:
- - install ldap packages *before* doing ldapsearch
- - pam*.so modules do not have /lib/security/ prefix anymore
-
- * Makefile: add rule dont_run_directly_stage2
-
- * devices.pm: add input/mice
-
- * install_any.pm: change return type of pkgs::packages2kernels()
- add kernel-2.4* in group LSB
-
- * bootloader.pm: in get_kernels_and_labels():
- - change internal data structure
- - change regexp matching kernel names (was broken for
- 2.4.25-0.pre7.3mdk)
- - default to kernel 2.4 when lsb is installed
-
- * do_pkgs.pm, pkgs.pm: change return type of pkgs::packages2kernels()
-
- * standalone/icons/wiz_drakvpn.png: re-adding with -kb
- removing for re-adding with -kb
-
- * Xconfig/card.pm: handle case where rpm can't be found (eg: XFree86-SVGA
- for xfree3) (part of bugzilla #7786)
-
- * install_steps_interactive.pm: warn that selecting LSB means having 2.4
- by default
-
-2004/02/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: fix driver blacklist
-
- * drakxtools.spec: fix changelog
- 10-0.12mdk
- 10-0.11mdk
-
- * ugtk2.pm (new) simplify banner rendering, make it cpu lighter
-
- * standalone/drakclock (DrawPointAt) simplify draw_points call
-
- * network/netconnect.pm: ask isp for ip and gateway by default (#7705)
- do use the actual user's answer
- preselect right protocol for ethernet though connections
- fix step linking with ask_connect_now and restart steps:
- - fix check for restart step
- - only offer to connect now for ppp connections
- fix module retrieving when configuring an adsl connection over ethernet
- sort ADSL protocols according to locale
- fix adsk over ethernet through dhcp protocol
-
- * share/po/fr.po: update
-
-2004/02/12 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/ppp-07.pl, share/advertising/dis-11.pl,
- share/advertising/dis-10.pl, share/advertising/ppp-11.pl,
- share/advertising/ppp-10.pl, share/advertising/dis-05.pl,
- share/advertising/ppp-09.pl, share/advertising/ppp-04.pl,
- share/advertising/pwp-04.pl, share/advertising/pwp-10.pl,
- share/advertising/dis-07.pl, share/advertising/pwp-08.pl,
- share/advertising/dis-04.pl, share/advertising/pwp-09.pl: Final versions
- for MDK 10.0
-
-2004/02/12 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: add rule dont_run_directly_stage2
-
- * install2.pm: replace unless with if
-
- * mouse.pm: more cleanup
- new 'Universal|Any PS/2 & USB mice' mouse name usable with kernel 2.6
- rename mouseconfig() with detect_serial() which is what it really does!
- create probe_wacom_devices() and cleanup
- cleanup
- cleanup
- remove deprecated comment
- always use fast_mouse_probe (probing serial is now mostly deprecated,
- and it
- is *re-done* by drakconnect, so no need to do it soon)
- cleanup wacom detection
-
- * devices.pm: add input/mice
-
-2004/02/12 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Restore title banner.
-
- * standalone/drakbackup: Address some QA issues with restores.
- Cleanup screen layout in restore screen.
- Restore title banner.
-
-2004/02/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: sort ADSL protocols according to locale
- fix adsk over ethernet through dhcp protocol
- simplify adsl protocol choosing through format callback
-
- * drakxtools.spec: 10-0.11mdk
-
- * harddrake/data.pm: detect more webcams
-
-2004/02/11 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/icons/wiz_drakvpn.png: first shy attempt
-
- * network/ipsec.pm: fix the perl_checker errors
- remove debugging print commands
- first shy attempt
-
- * standalone/drakvpn: typo errors
- fix the perl_checker errors
- remote debugging print commands
- first shy attempt
-
-2004/02/11 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/02/11 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c: be sure to load usb-storage after SCSI adapters,
- so that they are in
- same order than reboot, so that naming is the same
- don't insmod usb-storage the soonest, we can end up mixing scsi devices
- orders at reboot time, do it only when needed
-
-2004/02/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/po/cy.po: updated Welsh file
-
-2004/02/11 Pixel <pixel at mandrakesoft.com>
-
- * tools/hd_grub.cgi: adding hdd .. hdh
- initial version
-
-2004/02/11 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Rearrange main buttons (jmdault -
- http://advx.org/docs/ice3.png)
- Disable title banner for now (Bugzilla 7564).
- Don't assume eth0, rework subnet/netmask for hosts.allow (jmdault).
-
- * standalone/drakbackup: Disable title banner for now (same as Bugzilla
- 7564, just not reported yet).
-
-2004/02/11 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2004/02/11 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Add smb4k to replace LinNeighborhood (Buchan Milnes
- suggestion), decrease LinNeighborhood to 3.
- raise mc from 3 to 4 in FILE_TOOLS
-
-2004/02/10 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - isdn and modem are fetched from $intf
- - drop useless @all_cards
- - 'ath' and 'wlan' cards fix
-
-2004/02/10 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/10 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/02/10 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c: fake usb floppies detection by looking at blocks
- size of scsi disk devices, 1048575 is for 2.4 and 1440 for 2.6
-
- * mdk-stage1/mount.c: in network mode we need to create nodes as well
- because of usb floppies support
-
- * mdk-stage1/tools.c, mdk-stage1/tools.h: floppy_device returns first
- floppy device, look for medias first in case of usb floppies (maybe ide
- floppies also? never tested) then regular floppy drive
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c: use floppy_device rather than
- /dev/fd0 because we now support usb floppies as well
-
-2004/02/10 Pixel <pixel at mandrakesoft.com>
-
- * share/keymaps.tar.bz2: update
-
- * tools/serial_probe/serial.c: fix serial probe not detecting legacy mice
-
- * install_steps.pm, detect_devices.pm, any.pm: no need to fake scsi for
- ide anymore (hopefully!)
-
-2004/02/10 tsdgeos
-
- * share/po/ca.po: Updates, unfuzzying and spell checking
-
-2004/02/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * security/msec.pm (apply_checks) reindent
- (apply_checks) fix unable to save checks when config file is empty
- (aka substInFile does not support using print in that case)
-
-2004/02/10 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/pwp-05.pl, share/advertising/dis-11.pl,
- share/advertising/ppp-11.pl, share/advertising/dwd-02.pl,
- share/advertising/dis-09.pl, share/advertising/ppp-09.pl,
- share/advertising/pwp-04.pl, share/advertising/dis-04.pl,
- share/advertising/pwp-06.pl, share/advertising/dwd-09.pl: Update
-
- * share/advertising/dwd-06.pl: Update
- Update
-
-2004/02/10 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - add 'ath' and 'wlan' to ethernet kind
- - use regexp once
-
-2004/02/10 fwang
-
- * share/po/zh_CN.po: Updated Simplified Chinese translation
-
-2004/02/10 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c: fake usb floppies detection by looking at blocks
- size of scsi disk devices, 1048575 is for 2.4 and 1440 for 2.6
-
- * mdk-stage1/mount.c: in network mode we need to create nodes as well
- because of usb floppies support
-
- * mdk-stage1/tools.c, mdk-stage1/tools.h: floppy_device returns first
- floppy device, look for medias first in case of usb floppies (maybe ide
- floppies also? never tested) then regular floppy drive
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c: use floppy_device rather than
- /dev/fd0 because we now support usb floppies as well
-
-2004/02/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
- updated pot file
-
-2004/02/10 Pixel <pixel at mandrakesoft.com>
-
- * any.pm, detect_devices.pm, install_steps.pm: no need to fake scsi for
- ide anymore (hopefully!)
-
- * interactive/gtk.pm: have modal windows
-
- * ugtk2.pm: better code for detecting if the window is hidden or not
- (fixes embedded drakconnect wizard should be popped window) (bugzilla
- #7246)
-
- * services.pm: for install, a service is on if there is at least one
- runlevel for which the
- service is on (esp. for service "dm") (bugzilla #7146)
-
- * c/stuff.xs.pl: we don't KTYP anymore, but we need K_NOSUCHMAP
-
- * keyboard.pm: rewrite & cleanup. Now works with kernel 2.6, don't know
- exactly why...
-
- * common.pm: add unpack_with_refs()
-
- * tools/serial_probe/serial.c: fix serial probe not detecting legacy mice
-
- * share/keymaps.tar.bz2: update
-
-2004/02/10 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Use logdrake mail method, allow definition of
- SMTP server. (Arnaud de Lorbeau)
-
-2004/02/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not allow to step forward if no network card
- was found (workaround
- #7672). we'd better be able to manually add an unsupported network
- card though.
-
- * drakxtools.spec: 10-0.10mdk
-
- * security/msec.pm (apply_checks) reindent
- (apply_checks) fix unable to save checks when config file is empty
- (aka substInFile does not support using print in that case)
-
- * share/po/fr.po: update
-
-2004/02/10 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
-2004/02/10 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: better code for detecting if the window is hidden or not
- (fixes embedded drakconnect wizard should be popped window) (bugzilla
- #7246)
- remove many warnings about unitialised value (causing a bug in
- diagnostics.pm?)
-
- * pkgs.pm: remove postfix from naughtyServers (fix titi)
-
- * Xconfig/resolution_and_depth.pm: prefer BoardName to card_name
-
- * interactive/gtk.pm: have modal windows
-
-2004/02/10 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Undo some of the breakage, format is still
- wrong :(
-
- * standalone/drakbackup: Remove confusing "On hard drive" checkbox from
- wizard (Arnaud de Lorbeau)
- Fix failure to disable user cron job. Code reduction.
-
-2004/02/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * pkgs.pm: warn when installing postfix server (#7102)
- fix not warning about apache2 servers (#7559)
-
- * network/ethernet.pm (mapIntfToDevice) match pci function too (not that
- important since we
- do not know of any ethernet pci card that export two functions on the
- pci bug but anyway it's saner)
- note that we do not match for pci domain since ldetect does not report
- it
-
-2004/02/09 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/09 fwang
-
- * share/po/zh_CN.po: update
-
-2004/02/09 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_gtk.pm: resurrect 9.2 code for setting background. i was said to
- remove it for move because default colour is already mandrake colour but
- obviously it isn't.
-
- * Xconfig/resolution_and_depth.pm: RIVA128 fails miserably when using
- 16bpp
-
-2004/02/09 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm, standalone/XFdrake:
- handle allowNVIDIA_rpms & allowATI_rpms directly in
- Xconfig::card::install_server
-
- * .cvsignore: my test file is now t.pl
-
- * install_steps_gtk.pm: use modal windows during install
-
- * common.pm: fix typo
-
- * Xconfig/card.pm: fix typo
- handle allowNVIDIA_rpms & allowATI_rpms directly in
- Xconfig::card::install_server
- force XF4 on all archs
-
- * ugtk2.pm: remove show_all that breaks when there are some hidden windows
- allow set_modal for popped windows at install
-
-2004/02/09 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Thierry compliance. Doesn't work anymore and
- fails perl_checker now :P
-
-2004/02/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm (ether_conf) rename it as write_ether_conf()
- (mapIntfToDevice) fix pci/usb ethernet devices matching
-
- * standalone/drakfont (appli_choice) fix crash on option toggling (#7248)
-
- * network/netconnect.pm: fix unability to select gateway (#7585)
- fix empty list in "multiple internet_connexions" step
- fix unwritten ethernet interface config
- sort ethX interfaces in list
- blacklist bogus forcedeth driver for network hotplugging, enable
- ifplugd support for all other drivers even at install time (#7389)
-
- * drakxtools.spec: 10-0.9mdk
- 10-0.8mdk
-
- * detect_devices.pm (getNet) detect athX interfaces too (maybe should we
- inverse this func
- logic and blacklist ppp and the like interfaces ...)
- some eide Lite-on drivers are reported with different casse
-
-2004/02/08 Pixel <pixel at mandrakesoft.com>
-
- * Newt/.cvsignore: simplify
-
- * install_steps_interactive.pm: adapt to change allowing checking
- nvidia/ati proprietary driver availability only when needed
-
- * xf86misc/main.pm, c/stuff.xs.pl, install_steps_gtk.pm, mouse.pm,
- Makefile.config, xf86misc/main.xs, xf86misc/.cvsignore, drakxtools.spec,
- xf86misc/Makefile.PL, common.pm, xf86misc/Makefile, Xconfig/test.pm,
- Makefile.drakxtools: move Xtest() and setMouseLive() out of c/stuff to
- xf86misc::main
- so that we can use them (esp. setMouseLive) in standalone without making
- drakxtools-newt
- require xfree libs
-
-2004/02/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
- update
-
- * drakxtools.spec: XFdrake can run w/o gtk+ toolkit
- 10-0.7mdk
-
- * Xconfig/card.pm, standalone/XFdrake: make XFdrake startup be
- instantenous for non nv|ati cards (allowNVIDIA_rpms and
- allowATI_rpms tests used to cost us 99% of the long startup time of
- XFdrake:-()
-
-2004/02/08 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org Arabic translation
-
-2004/02/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
- updated pot file
-
- * standalone/logdrake: English typo and disambiguation of some strings
-
-2004/02/07 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: PXE image support, researched by Venantius
- Kumar.
-
-2004/02/06 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dwd-05.pl, share/advertising/dwd-08.pl,
- share/advertising/dwd-02.pl, share/advertising/dwd-04.pl,
- share/advertising/dwd-06.pl, share/advertising/dwd-07.pl,
- share/advertising/dwd-09.pl: Update
-
- * share/rpmsrate: Update for Discovery
-
-2004/02/06 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - do only one regexp on $interface
- - more readable repack
- - add sub check_field
- - check IPs
- - delete BOOTPROTO when not needed
-
-2004/02/06 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/06 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/url.c: log server http response
-
- * ugtk2.pm: shrink_topwindow: add (force gtk to recompute size of
- topwindow, when some child widgets got destroyed or shrinked)
-
-2004/02/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/help-zh_CN.pot, share/po/ms.po, share/po/sk.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/help_xml2pm.pl, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/he.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/nb.po, share/po/uz.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/lv.po, share/po/hu.po, share/po/fa.po, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/mn.po, share/po/uk.po,
- share/po/lt.po, share/po/cy.po, share/po/help-it.pot, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * help.pm: Changed Newt/Previous strings to remove arrows
-
-2004/02/06 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: draksec needs gtk, no must not be in drakxtools-newt
- (bugzilla #7413)
-
- * Xconfig/monitor.pm:
- - ensure ModelName comes from the ddc probe when choosing "Plug'n
- Play"
- - only "Plug'n Play" instead of "Plug'n Play (<ModelName>)" when
- current monitor is not plug'n play
-
- * mouse.pm:
- - add change_mouse_live()
- - use /dev/mouse in XF86Config to allow changing protocol in
- standalone
-
- * interactive/gtk.pm: workaround gtk limitation #133489
-
- * install_steps_gtk.pm: use mouse::change_mouse_live()
-
- * bootloader.pm: special way to remove mem=<memsize>
- please perl_checker
- following quintela's lilo change, allowing lilo labels up to 31
- characters
-
- * share/po/help_xml2pm.pl:
- - handle zh_CN.po
- - handle tags <phrase> and <hardware>
-
- * Xconfig/card.pm: don't test X config if using driver vmware (bugzilla
- #5346)
-
- * share/po/help-zh_CN.pot, share/po/help-ru.pot, help.pm,
- share/po/help-de.pot, share/po/help-fr.pot, share/po/help-es.pot,
- share/po/help-it.pot: update from xml
-
- * standalone/mousedrake: use ->create_okcancel instead of doing it by hand
- (hopefully it will ensure better choice of Ok/Cancel vs Cancel/Ok
- without breaking anything...)
- - no special testing mouse in embedded
- - use mouse::change_mouse_live()
-
- * network/shorewall.pm: handle range (bugzilla #7172)
-
- * any.pm (fileshare_config): quite different way of handling it, asking
- first if user
- wants sharing or not, then asking which protocol (when users wants
- sharing).
- Removing or installing the server package handling the protocols (smb or
- nfs).
- handle better bootloader per entries video mode
- special way to remove mem=<memsize>
- remove defaulting global vga mode to normal
- fix old typo: complete callback was not called
- drop bootloader main options "Compact" and "Video mode"
-
-2004/02/06 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Provide more detailed info on files backed
- up/ignored. <Anthill #306>
- Cleanup some of the redundant code in the actual backup routines.
-
-2004/02/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake (alert_config) do not complain when removing non
- existing cron entry
- (aka when one run twice the disable path)
-
- * security/msec.pm: fix draksec not saving options when config file do not
- exists :-(
-
- * share/po/fr.po: update
- update
- fix layout in drakconnect
-
- * standalone/draksec: workaround gtk limitation #133489
-
- * drakxtools.spec: 10-0.6mdk
- move drakbug, drakclock, drakperm, drakTermServ, net_monitor in
- drakxtools too since they require ugtk2.
- move their aliases (soft links) their too.
- 10-0.5mdk
- 10-0.4mdk
-
- * network/netconnect.pm: help perl_checker regarding comments for
- translators
- wireless step: add an hint for translators
- split wireless step into two steps since there way too much options
- fix wireless settings (references being made too early)
- (main) try first to match a pcmcia device before trying to match
- pci/usb when looking for module (#7431)
-
- * ugtk2.pm (new) remove unused flush()
- (new) fix pixel breaking non wizard embedded case while cleaning :-(
-
- * standalone/draksound: advertize alsaconf too since sndconfig failled for
- cards only managed
- by ALSA (#7456)
-
-2004/02/06 Warly <warly at mandrakesoft.com>
-
- * standalone/drakboot: Warn if the user is not in framebuffer mode, but
- allow to see the installed theme.
- Do not perform autologin config in splash mode
- Better parsing of current resolution from detect-resolution
-
-2004/02/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * any.pm: this part of code is already executed only in $::isInstall
-
- * standalone/drakconnect: Informations doesn't exist in english, use
- Information instead (no need to update the POs, they already contain
- Information elsewhere)
-
-2004/02/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/mn.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/nb.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/mk.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/hi.po, share/po/az.po,
- share/po/zh_TW.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
- * share/po/zh_CN.po: updated pot file
- updated Chinese file
-
- * share/po/sl.po: updated Slovenian file
- updated pot file
-
- * share/po/et.po: updated pot file
- updated Estonian file
-
- * keyboard.pm: ichanged console uz keyboard to uz.uni
-
- * share/po/cs.po: updated Czech file
- updated pot file
-
-2004/02/05 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: allow 24bpp for DRI (since all drivers
- now support it: we had mga tdfx r128
- radeon, and i810 also works (tested on a i865))
-
- * interactive/gtk.pm: since we use WrappedLabel, it's better not to
- warp_text()
-
- * standalone/drakboot: write fstab for /tmp using tmpfs when "clean /tmp"
- is chosen
-
- * Xconfig/xfreeX.pm, Xconfig/parse.pm, Xconfig/main.pm, Xconfig/xfree.pm:
- - add ->prepare_write to allow comparing raw_X's
- - ensure "config_changed" is returned only if the config file really
- changed
-
- * ugtk2.pm: simplify _create_window() prototype
-
- * diskdrake/dav.pm: remove "Quit" icon
-
- * any.pm: fix ugly typo (occuring when removing "clean /tmp", ie not
- often, especially
- since drakboot didn't write fstab)
-
- * install_steps.pm: install_steps is a do_pkgs, so add "use do_pkgs"
-
-2004/02/05 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2004/02/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake: typo fix (spoted by Per Øyvind Karlsen)
- upcase protocol name
-
- * network/netconnect.pm: enable one to not enter optional parameters (aka
- relax checks on valid
- values for bitrate and frequency) (#7432)
-
- * share/po/fr.po: update
- another typo fix regarding firewall
- typo fixes (cosmic flo)
-
- * ugtk2.pm (new) add a border too when embedded
-
- * network/ethernet.pm (get_eth_cards) try first to match a pcmcia device
- before trying to
- match pci/usb ones when looking for real device's name (#7401)
-
-2004/02/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/mn.po,
- share/po/uk.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/bs.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/hi.po, share/po/af.po, share/po/az.po, share/po/pt.po,
- share/po/fr.po, share/po/ta.po, share/po/vi.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po, share/po/uz@Latn.po: updated pot file
-
- * lang.pm: more locale fixes; and changed images for Uzbek to default to
- cyrillic
- a bit of locales corrections
-
- * pixmaps/langs/lang-uz@Latn.png, pixmaps/langs/lang-uz.png: more locale
- fixes; and changed images for Uzbek to default to cyrillic
-
-2004/02/04 Pixel <pixel at mandrakesoft.com>
-
- * standalone/icons/wiz_default_left.png: remove $draw2 (in ugtk2.pm) and
- wiz_default_left.png which are unused
-
- * install_steps_gtk.pm: rename $ugtk2::force_center used at install with
- $ugtk2::force_center_at_pos
- the boolean $ugtk2::force_center value used standalone is kept as before
-
- * mouse.pm: use protocol "ExplorerPS/2" instead of "auto" for kernel 2.6
- (not statisfying since people booting with kernel 2.4 will not get a
- working
- mouse, but at least we can test if this really works nicely for 2.6)
-
- * standalone/harddrake2, standalone.pm: $::noBorder is deprecated (it was
- the same as !$::isInstall)
-
- * ugtk2.pm:
- - rename $ugtk2::force_center used at install with
- $ugtk2::force_center_at_pos
- the boolean $ugtk2::force_center value used standalone is kept as before
- - deprecate $::noBorder (it was the same as !$::isInstall)
- - deprecate $ugtk2::force_position (unused AFAIK)
-
- - _create_window() now returns the created window, it doesn't assign
- {rwindow}
- nor {window} anymore. It doesn't handle a Frame for the window
- (it is now directly done by ugtk2->new which is the only function
- using _create_window())
-
- - deprecate option no_interactive_objects (unused AFAIK)
-
- - {rwindow} is a VBox for both isWizard and isEmbedded
- (when isEmbedded, a HBox was created, replacing the create VBox)
-
- - call ->set_title on $::WizardWindow so that the title is honored in
- non embedded wizard
-
- - remove $draw2 and wiz_default_left.png which are unused
-
- - remove ->set_uposition on $::WizardWindow for install. This is not
- needed
- anymore since force_center_at_pos now works on $::WizardWindow
-
- - hoist $::WizardTable creation
-
- - explicitly set the size of the window during install. The chosen
- value is
- the same as before +9 pixels for the height
- (the size needs to be fixed since the advertising images must fit)
-
- - remove the callbacks on expose_event and delete_event for non
- embedded wizard.
- they are the same as the one in _create_window()
- (except for the delete_event which explicitly destroy the window, is
- that ok??)
-
- more questions:
- - ->set_title on a plug may break, it needs testing
- - flush() just after Gtk2::Plug->new, is it needed? (since there is
- another flush())
-
-2004/02/04 Daouda Lo <daouda at mandrakesoft.com>
-
- * drakxtools.spec:
- - don't be afraid, this is not the doc package but just perl module
- needed by drakhelp.
-
- * timezone.pm:
- - less arguments in ntp_server, $prefix no more passed to function
- args
-
- * share/rpmsrate:
- - new mandrake-doc* names
-
-2004/02/04 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm:
- - add network::ethernet::get_eth_cards_names
- - kill duplicated code
- drop Storable and use Dumper (queen & pipi rulez)
-
- * network/ethernet.pm:
- - add network::ethernet::get_eth_cards_names
- - kill duplicated code
-
- * standalone/drakconnect: compact declaration
- ethernet cards get via get_eth_cards()
- - add network::ethernet::get_eth_cards_names
- - kill duplicated code
- drop Storable and use Dumper (queen & pipi rulez)
- typo fix...
-
-2004/02/04 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * standalone.pm: http://www.gnu.org/prep/standards_18.html says --help and
- --version are printed on standard output
-
- * docs/README: update netauto doc
-
-2004/02/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: a bit of locales corrections
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po, share/po/uz@Latn.po: updated pot file
-
-2004/02/04 Pixel <pixel at mandrakesoft.com>
-
- * standalone/icons/wiz_default_left.png: remove $draw2 (in ugtk2.pm) and
- wiz_default_left.png which are unused
-
- * lvm.pm: create /dev/mapper/control (needed when you don't have devfs)
- - replace PE_size with extent_size and get it (fix illegal division by
- 0)
- - fix getting the output of pvs vgs lvs commands
- (chomp_ is not enough because of spaces at the end)
- - fix get_lvs() (and use lvs instead of vgdisplay)
-
- * diskdrake/interactive.pm:
- - don't display start sector and cylinders used for LVs
- - display "Number of logical extents" of LVs
-
- * install_gtk.pm: we now use XF4 during install, so we can support
- ExplorerPS/2 (XF3 didn't know it)
-
- * install_steps_gtk.pm: rename $ugtk2::force_center used at install with
- $ugtk2::force_center_at_pos
- the boolean $ugtk2::force_center value used standalone is kept as before
-
- * mouse.pm: use protocol "ExplorerPS/2" instead of "auto" for kernel 2.6
- (not statisfying since people booting with kernel 2.4 will not get a
- working
- mouse, but at least we can test if this really works nicely for 2.6)
-
- * Xconfig/card.pm: replace 4.3 with 4.4 (XFree version) (bugzilla #7378)
-
- * ugtk2.pm:
- - rename $ugtk2::force_center used at install with
- $ugtk2::force_center_at_pos
- the boolean $ugtk2::force_center value used standalone is kept as before
- - deprecate $::noBorder (it was the same as !$::isInstall)
- - deprecate $ugtk2::force_position (unused AFAIK)
-
- - _create_window() now returns the created window, it doesn't assign
- {rwindow}
- nor {window} anymore. It doesn't handle a Frame for the window
- (it is now directly done by ugtk2->new which is the only function
- using _create_window())
-
- - deprecate option no_interactive_objects (unused AFAIK)
-
- - {rwindow} is a VBox for both isWizard and isEmbedded
- (when isEmbedded, a HBox was created, replacing the create VBox)
-
- - call ->set_title on $::WizardWindow so that the title is honored in
- non embedded wizard
-
- - remove $draw2 and wiz_default_left.png which are unused
-
- - remove ->set_uposition on $::WizardWindow for install. This is not
- needed
- anymore since force_center_at_pos now works on $::WizardWindow
-
- - hoist $::WizardTable creation
-
- - explicitly set the size of the window during install. The chosen
- value is
- the same as before +9 pixels for the height
- (the size needs to be fixed since the advertising images must fit)
-
- - remove the callbacks on expose_event and delete_event for non
- embedded wizard.
- they are the same as the one in _create_window()
- (except for the delete_event which explicitly destroy the window, is
- that ok??)
-
- more questions:
- - ->set_title on a plug may break, it needs testing
- - flush() just after Gtk2::Plug->new, is it needed? (since there is
- another flush())
- (gtk_TextView_get_log): handle errors
-
- * standalone/harddrake2, standalone.pm: $::noBorder is deprecated (it was
- the same as !$::isInstall)
-
- * interactive.pm:
- ->ask_from_entry and ->ask_from_entries are better with focus_first
-
- * do_pkgs.pm (ensure_is_installed): file to test if the package is
- installed is optional.
- But in that case, you have to check if it is installed first.
-
-2004/02/03 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm, standalone/drakconnect:
- - fix adsl_conf_backend call
- - store and retreive network interfaces via $config file
-
-2004/02/03 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/03 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/modules.c: differentiate no floppy disk in driver or ext2 fs
-
- * mdk-stage1/dhcp.c: document when netauto is not provided and bootfile
- DHCP server param is given
-
- * mdk-stage1/doc/TECH-INFOS: more doc on DHCP server response conf
-
-2004/02/03 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: perl_checker fix
-
- * modules.pm: fix typo
- fix typo
-
-2004/02/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Maintain /etc/passwd$$CLIENT$$ so mdkkdm has a
- valid userlist.
-
-2004/02/03 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * modules/parameters.pm (parameters) fix modinfo parsing (format had been
- altered between
- modutils and module-init-tools :-()
-
- * modules/interactive.pm (config_window) do not even try to hint the user
- about the parameter
- format on a 2.6.x kernel
-
- * share/po/fr.po: fix translator that ignore shortcut hints
-
-2004/02/02 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dis-07.pl, share/advertising/dis-09.pl: Update
- Update
-
- * share/advertising/pwp-05.pl, share/advertising/dis-06.pl,
- share/advertising/dwd-08.pl, share/advertising/pwp-02.pl,
- share/advertising/dwd-04.pl, share/advertising/ppp-03.pl,
- share/advertising/dis-02.pl, share/advertising/dis-08.pl,
- share/advertising/dis-04.pl, share/advertising/pwp-06.pl,
- share/advertising/dis-11.pl, share/advertising/dwd-03.pl,
- share/advertising/dis-10.pl, share/advertising/ppp-08.pl,
- share/advertising/dwd-06.pl, share/advertising/ppp-02.pl,
- share/advertising/pwp-07.pl, share/advertising/dwd-07.pl,
- share/advertising/ppp-07.pl, share/advertising/dwd-02.pl,
- share/advertising/dis-05.pl, share/advertising/ppp-09.pl,
- share/advertising/dis-01.pl, share/advertising/pwp-10.pl,
- share/advertising/dwd-05.pl, share/advertising/ppp-06.pl,
- share/advertising/ppp-05.pl, share/advertising/ppp-01.pl,
- share/advertising/dis-03.pl, share/advertising/pwp-03.pl,
- share/advertising/ppp-04.pl, share/advertising/pwp-01.pl,
- share/advertising/pwp-04.pl, share/advertising/pwp-08.pl,
- share/advertising/pwp-09.pl, share/advertising/dwd-09.pl: Update
-
-2004/02/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po, share/po/uz@Latn.po: updated pot file;
- changed Uzbek to default to cyrillic
-
-2004/02/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 10-0.3mdk
- 10-0.2mdk
-
- * share/po/fr.po: make installer look smoother in french
- fix drakboot layout when localized in french
- update
-
- * ugtk2.pm: use wrapped labels in various places
-
- * interactive/gtk.pm: do not pass extra empty invisible label (really
- cosmetic)
- use wrapped labels in various places
-
- * c/stuff.xs.pl: kill warning
-
- * network/netconnect.pm: only list wireless capabale cards when one choose
- wireless cnx
- split out wireless connections out of lan ones so that users are less
- confused
- fix preselecting ppoa for speedtouch modem
-
- * standalone/logdrake: remove unneeded next fields
- make cron script be able to use either local smtp server or a remote
- one (arnaud)
- add "remove cron entry" on arnaud request
-
- * standalone.pm: update drakfont help message
- bump copyright
- --help: documente new drakboot and drakconnect parameters
-
- * any.pm: fix drakboot layout: use checkboxes own labels rather than
- packing extra
- labels
-
- * network/tools.pm (is_wireless_intf) kill it since it's no more usefull.
- rationale: rather than duplicating modules list in
- kernel/list_modules.pm
- and network/tools.pm (with usual sync bugs), it's quite much easier to
- maintain one single list of wireless modules in list_modules.pm
-
-2004/02/02 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/advertising/dis-10.pl, share/advertising/pwp-09.pl: unified
- phrases that are the same, to ease translating
-
-2004/02/02 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: fix reading stage1 network configuration
-
- * detect_devices.pm:
- - no ide-scsi emulation for ide ZIPs
- - no ide-scsi emulation for cd burners when kernel 2.6
-
- * install_steps.pm: fix typo creating agpgart alias
- - no ide-scsi emulation for ide ZIPs
- - no ide-scsi emulation for cd burners when kernel 2.6
-
-2004/02/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: remove debug message
- fix adsl modem detection
-
- * network/tools.pm: remove pseudo global variables use from use_floppy()
-
- * network/adsl.pm (adsl_detect) fix modem detection so that harddrake get
- full device
- meta data rather than plain presence boolean
- remove pseudo global variables use from adsl_conf_backend()
-
- * network/netconnect.pm: fix preselecting ppoa for speedtouch modem
- remove pseudo global variables use from use_floppy()
- remove pseudo global variables use from adsl_conf_backend()
-
- * drakxtools.spec: 10-0.2mdk
- 10-0.1mdk
-
- * share/rpmsrate: add some packages for adsl
-
- * network/ethernet.pm: this module does not need anymore pseudo global
- variables
-
- * harddrake/sound.pm: handle new aureal drivers
-
-2004/02/02 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/02/02 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm:
- - no ide-scsi emulation for ide ZIPs
- - no ide-scsi emulation for cd burners when kernel 2.6
-
- * install_steps.pm: fix typo creating agpgart alias
- - no ide-scsi emulation for ide ZIPs
- - no ide-scsi emulation for cd burners when kernel 2.6
-
-2004/02/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/ethernet.pm (get_eth_cards) handle not loaded drivers
-
- * harddrake/sound.pm: handle new aureal drivers
-
- * drakxtools.spec: 9.3-28mdk
-
-2004/02/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: only install uim and anthil on cjk boxes
-
- * network/ethernet.pm (get_eth_cards) handle not loaded drivers
-
- * drakxtools.spec: 9.3-28mdk
-
-2004/02/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: changed font names to match real font name capitalization
-
- * share/po/de.po: updated German file
-
-2004/02/01 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org's Arabic translation.
-
-2004/01/31 keld
-
- * share/po/da.po: updates
- soft/ftw/po/da.po soft/initscripts/po/da.po
- soft/menudrake/po/da.po soft/urpmi/po/da.po
- soft/wizard_perl/po/da.po gi/perl-install/share/po/da.po
-
-2004/01/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl_consts.pm: add sources url
-
- * network/netconnect.pm: enable to set hostname even when using DHCP
- (#7230)
-
-2004/01/30 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/ppp-07.pl, share/advertising/dis-06.pl,
- share/advertising/dwd-08.pl, share/advertising/dwd-02.pl,
- share/advertising/dwd-04.pl, share/advertising/ppp-09.pl,
- share/advertising/ppp-03.pl, share/advertising/dwd-01.pl,
- share/advertising/dwd-05.pl, share/advertising/ppp-06.pl,
- share/advertising/dwd-03.pl, share/advertising/dis-10.pl,
- share/advertising/ppp-05.pl, share/advertising/ppp-11.pl,
- share/advertising/ppp-01.pl, share/advertising/ppp-08.pl,
- share/advertising/ppp-10.pl, share/advertising/dwd-06.pl,
- share/advertising/ppp-04.pl, share/advertising/ppp-02.pl,
- share/advertising/dwd-07.pl: Update
-
- * share/advertising/dwd-09.pl: Fix typo
- Update
-
-2004/01/30 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - remove not needed $security
- - clean dumb foreach repetition (one foreach to rule them all)
-
-2004/01/30 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: hack :( if ' ' is at the beginning of a text section, don't
- forget it, substitute
- with an unbreakable space because gtk allocates too much space otherwise
-
- * install_messages.pm: bump up to 100errata
-
-2004/01/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
-2004/01/30 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: add help method ->iter_each_children for Gtk2::TreeModel
-
-2004/01/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not offer to select dhcp client when
- configuring static interfaces
- fix crash on module lookup when ifcfg-<intf> file is missing on disk
- (not yet configured interface case)
-
- * share/po/fr.po: update
-
- * share/advertising/dwd-07.pl: share string with dis-10.pl ppp-10.pl and
- pwp-09.pl
-
- * drakxtools.spec: log one more change in -27mdk
- 9.3-27mdk
-
- * share/rpmsrate: add anthy/uim better cjk input methods
-
-2004/01/30 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add magicdev in SYSTEM for KDE or GNOME
-
-2004/01/30 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - remove not needed $security
- - clean dumb foreach repetition (one foreach to rule them all)
-
-2004/01/30 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: hack :( if ' ' is at the beginning of a text section, don't
- forget it, substitute
- with an unbreakable space because gtk allocates too much space otherwise
-
- * install_messages.pm: bump up to 100errata
-
-2004/01/30 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * install_steps.pm: add/fix various/agpgart section
-
-2004/01/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
-2004/01/30 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm, install_steps.pm: xxx-agp is not loaded at install, so
- when_load() is not the right place
-
- * ugtk2.pm: add help method ->iter_each_children for Gtk2::TreeModel
-
-2004/01/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: do not offer to select dhcp client when
- configuring static interfaces
- fix crash on module lookup when ifcfg-<intf> file is missing on disk
- (not yet configured interface case)
-
- * drakxtools.spec: log one more change in -27mdk
- 9.3-27mdk
-
-2004/01/30 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - show gateway in ethernet only
- - hide gateway Entry in dhcp mode
-
-2004/01/30 Nicolas Planel <nplanel at mandrakesoft.com>
-
- * install_steps.pm: add/fix various/agpgart section
-
-2004/01/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/fi.po: updated Estonian and Finnish files
-
-2004/01/30 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm, install_steps.pm: xxx-agp is not loaded at install, so
- when_load() is not the right place
-
- * c/stuff.xs.pl: the multiplication must be done with type "long long"
- otherwise it overflows at 4GB
-
- * partition_table.pm:
- - tell kernel to remove the extended partition
- - true/false is better than yes/no in log message
- enhance log message "tell kernel ..."
-
-2004/01/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/rpmsrate: force availlability of speedtouch and eagle packages at
- install time
-
- * network/ethernet.pm (conf_network_card_backend) make type and interface
- arguments mandatory
-
- * network/netconnect.pm: perl_checker cleanups
-
-2004/01/30 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add rpm-rebuilder and lm_sensors
- add dvd+rw-tools in BURNER
-
-2004/01/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: updated pot file
-
-2004/01/29 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: replace iocharset= with nls= for ntfs (as instructed by Thomas
- Backlund, thanks)
-
-2004/01/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/tools.pm (set_cnx_script) split it out of write_cnx_script()
- rationale:functions whose behavior is totally altered by arguments
- number are insane should just be splited and their callers be fixed
-
- * network/adsl.pm, network/isdn.pm: convert some write_cnx_script()
- callers into set_cnx_script() ones
-
- * network/network.pm, standalone/drakconnect: replace
- conf_network_card_backend() "detect" calls by get_eth_cards() ones
-
- * network/netconnect.pm: kppp provider db reading: blacklist spurious
- .directory entries
- kill dead code
- prevent the installer from going back to proxy configuration (!!!)
- when pressinth the previous button on first step of network config
- wizard :-)
- cleanups enabled b/c of path sharing between standalone tool and
- installer
- convert some write_cnx_script() callers into set_cnx_script() ones
- replace conf_network_card_backend() "detect" calls by get_eth_cards()
- ones
-
- * drakxtools.spec: fix changelog
-
- * share/po/fr.po: update
-
- * network/ethernet.pm: convert some write_cnx_script() callers into
- set_cnx_script() ones
- (conf_network_card_backend) insert a bug notice
- (conf_network_card_backend) remove compat stuff since callers were
- cleaned up
-
-2004/01/29 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: beautify ethernet cards name
- shrink
-
-2004/01/29 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/advertising/dwd-03.pl, install_steps_gtk.pm,
- share/advertising/dwd-01.pl, share/advertising/dwd-02.pl, ugtk2.pm:
- advertising:
- - support leftish and centered text
- - support arbitrary bold text with ml-like syntax <b>foo</b> in
- strings
- - simplify get_text_coord and unexport it, no one else than
- wrap_paragraph uses it nowadays
-
-2004/01/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/help-ru.pot, share/po/help-fr.pot: converted help-*.pot files
- to utf-8 too (they MUST be of same encoding
- as po files)
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: updated pot file
-
-2004/01/29 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: replace iocharset= with nls= for ntfs (as instructed by Thomas
- Backlund, thanks)
-
-2004/01/29 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Configure clients with defined IPs to set
- hostname so gnome works.
-
-2004/01/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: prevent the installer from going back to proxy
- configuration (!!!)
- when pressinth the previous button on first step of network config
- wizard :-)
- cleanups enabled b/c of path sharing between standalone tool and
- installer
- convert some write_cnx_script() callers into set_cnx_script() ones
- replace conf_network_card_backend() "detect" calls by get_eth_cards()
- ones
- help cperl-mode parsing this file (drawback: perl_checker won't be
- happy)
- simplify
-
- * network/tools.pm (set_cnx_script) split it out of write_cnx_script()
- rationale:functions whose behavior is totally altered by arguments
- number are insane should just be splited and their callers be fixed
-
- * network/adsl.pm, network/isdn.pm: convert some write_cnx_script()
- callers into set_cnx_script() ones
-
- * network/network.pm, standalone/drakconnect: replace
- conf_network_card_backend() "detect" calls by get_eth_cards() ones
-
- * share/po/fr.po: update
-
- * network/ethernet.pm: convert some write_cnx_script() callers into
- set_cnx_script() ones
- (conf_network_card_backend) insert a bug notice
- (conf_network_card_backend) remove compat stuff since callers were
- cleaned up
-
- * drakxtools.spec: 9.3-26mdk
- 9.3-24mdk was never released
- 9.3-25mdk
-
-2004/01/29 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: shrink
- fix modem login fetching
- - use nice interfaces name (e.g. ethernet0 rather than eth0)
- - fix adsl loading and saving calls
-
-2004/01/29 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/advertising/dwd-03.pl, install_steps_gtk.pm,
- share/advertising/dwd-01.pl, share/advertising/dwd-02.pl, ugtk2.pm:
- advertising:
- - support leftish and centered text
- - support arbitrary bold text with ml-like syntax <b>foo</b> in
- strings
- - simplify get_text_coord and unexport it, no one else than
- wrap_paragraph uses it nowadays
-
-2004/01/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/net_monitor: do not force page switch
-
- * drakxtools.spec: 9.3-25mdk
- 9.3-24mdk
-
- * security/msec.pm: fix parsing of default values for multi argument msec
- functions
-
- * network/netconnect.pm: help cperl-mode parsing this file (drawback:
- perl_checker won't be
- happy)
- simplify
- fix interface config file writing
- fix DHCP client installation
- fix static/dhcp step branching
- fix ethernet network card list
-
- * security/help.pm: add help for newly introduced MAIL_EMPTY_CONTENT item
- notify that timeout is in seconds
-
-2004/01/29 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm: fix encapsulation parameter
- fix VPI parameter setting
- (adsl_conf_backend) fix disconnect script
- (adsl_conf_backend) fix ppp's pty server
-
- * network/netconnect.pm: typo fix
- fix encapsulation pull down menu filling
- enable to alter encapsulation, vci and vpi parameters in advanced mode
- write cnx scripts for cable connection too
-
- * drakxtools.spec: 9.3-23mdk
-
-2004/01/28 David Baudens <baudens at mandrakesoft.com>
-
- * pixmaps/about.png, pixmaps/nosplash_thumb.png,
- pixmaps/slpash-drakeprint-2.png, pixmaps/printerdrake.png: Update
-
-2004/01/28 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: sucky toggled fix (queen fix)
- - move radio buttons to $gui->{intf_radio}
- - fix authentication menu wrongly used for isdn
-
-2004/01/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/dns.c, mdk-stage1/network.c: allow having no DNS by only
- using the ip callback once, see DNS == IP as a special case, don't do
- DNS calls when no DNS is configured to avoid timeouts
-
-2004/01/28 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm: create add_modify_remove_sensitive() and use it so
- that "Modify" and "Remove"
- are non sensitive when the initial list is empty
-
-2004/01/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm (adsl_probe_info) minor cleanups
- (adsl_conf_backend) new configuration stuff
-
- * network/modem.pm: simplify code through format callback (thus enabling
- to centralize translatable
- strings, thus reducing error risk)
-
- * network/netconnect.pm: removed useless variable
- simplify code through format callback (thus enabling to centralize
- translatable
- strings, thus reducing error risk)
-
-2004/01/27 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/th.po,
- share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/hu.po: fix typo s#Network name#Network name#
-
- * standalone/drakconnect: fix typo s/Netwok name (ESSID)/Network name
- (ESSID)/
- - fix Information page
- - use mapIntfToDevice to get infos
-
-2004/01/27 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm:
- - add gtk_new_TextView_get_log() and gtk_TextView_get_log() which
- allow
- running a command in background and get the filtered output in a
- TextView
- - add Gtk2::OptionMenu::new_with_strings() which is a simple
- combination of
- ->new, ->set_popdown_strings and ->set_text
-
-2004/01/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: rollback debug stuff :-(
- typo fix
- get encapsulation default value from provider db and offer to configure
- it
- typo fix
- adiusbadsl package was renamed as eagle
- default protocol for speedtouch is pppoa
- do not try to install "auto" package
- install needed packages w/o second thoughs
- remove extra argument
- add a step in order to select a provider from kppp database
- configure adsl account
- (isdn account step)
- - directly use needed variables
- - kill uneeded fields
- preset domainname for a few known providers
-
- * share/po/fr.po: update
-
- * network/adsl.pm: kill dead code
- (adsl_probe_info) vpi and vci parameters are independant
-
- * network/adsl_consts.pm: typo fix
- - add Retevision spanish provider
- - add encapsulation default value
- preset domainname for a few known providers
- typo fix
-
-2004/01/26 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - fix sucky fix
- - fix missing parameters
- - add kind and protocol to $config
- - fix various issues from $config changes
-
-2004/01/26 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/modules.c: don't forget to umount additional drivers floppy
- after successful copy of modules.mar (gc sux)
-
-2004/01/26 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: fix typo
-
- * ugtk2.pm: add gtk_set_treelist
-
- * share/list: perl Gtk2 has been rebuilt
-
- * interactive/gtk.pm:
- - pack add_modify_remove widget growable
- - no need to size it
- new function add_modify_remove_action()
-
-2004/01/26 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Another cron issue reported on Anthill.
-
- * standalone/drakTermServ: Remove unused sub.
-
-2004/01/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: reput back my changes that poulpy gratuitously
- rollbacked because:
- - he hadn't update network/*pm but only update standalone/drakconnect
- - he happilly followed what perl_checker instrumentate him w/o any
- second thoughs
- next time damien, do not listen gc when he's explaining how he
- resolves conflicts the first time he used cvs :-(
- get rid of global variables regarding connect/disconnect scripts
-
- * network/ethernet.pm (mapIntfToDevice) actually use given interface
- rather than hardcoded "eth0"
- cleanups
- (get_eth_cards)
- - split it out of conf_network_card_backend() (which still call it for
- compatibility for now but sincefunctions whose behavior is totally
- altered by
- arguments are insane should just be splited, caller will be fixed then
- this
- compatibily call removed)
- - add a third string in returned tuples (physical net device
- description)
- (mapIntfToDevice) introduce it in order to map a network interface to a
- pci/usb/... device
- get rid of pseudo global $prefix, just reuse global $::prefix :-)
-
- * standalone/net_monitor: get rid of global variables regarding
- connect/disconnect scripts
-
- * network/network.pm: get rid of pseudo global $prefix, just reuse global
- $::prefix :-)
- kill unused down_it() and up_it() functions
-
- * network/tools.pm: get rid of global variables regarding
- connect/disconnect scripts
- get rid of pseudo global $prefix, just reuse global $::prefix :-)
-
- * network/adsl.pm, network/isdn.pm: get rid of pseudo global $prefix, just
- reuse global $::prefix :-)
-
- * network/adsl_consts.pm: rename dns fields as they're named in netc
- structure
-
- * network/netconnect.pm: reuse values got from provider db
- display nice "ethX: card description" rather than raw interface name
- when
- selecting an ethernet interface
- perl_checker was wrong
- get rid of global variables regarding connect/disconnect scripts
- (stop_internet) init_globals()'s prefix parameter is dead
- get rid of pseudo global $prefix, just reuse global $::prefix :-)
- fix the cleanup
- remove useless parenthessis
- make wizard be faster when trying to install speedtouch_mgmt and when
- firmware
- is already present
- share provider db for all usb modems (vpi/vci parameters are need for
- most
- modem/protocol combinaisons and anyway it's ok to guess the protocol and
- dns
- servers for the end user)
- - let be faster when trying to install already installed packages
- - fix next step name when installing kppp
-
-2004/01/26 keld
-
- * share/po/da.po: Updates
- soft/control-center/po/da.po soft/GtkMdkWidgets/po/da.po
- soft/mdkhtmlbrowser/po/da.po soft/menudrake/po/da.po
- soft/rfbdrake/po/da.po gi/perl-install/share/po/da.po
-
-2004/01/26 Pixel <pixel at mandrakesoft.com>
-
- * keyboard.pm: don't use ioctl KDSKBENT with kernel 2.6, until fixed...
-
-2004/01/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakclock (Repaint) help perl_checker in checking
- time_to_rad() arguments
- (spinned) do not pass extra arguments to time_to_rad()
- reindent gtkpack calls
- rename adj_* variables as adj* in order to help cperl-mode parsing
- this file
-
- * c/stuff.xs.pl (getNetDriver) introduce getHwIDs() alias that return
- pci/usb/... hw
- addr (or "N/A" for some isapnp cards due to lack of support from
- drivers)
-
-2004/01/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: kill unused dhcp_hostname step
- fix again adsl type setting :-(
- modem connection: install kppp
- set adsl protocol to use according to provider database when using a
- sagem 800
- modem
- modem connection: default to pap/chap authentification method (should
- work for
- most people)
- typo fix
-
- * drakxtools.spec: typo fix
-
- * share/po/fr.po: update
-
- * share/po/br.po: minor update
-
-2004/01/25 yrahal
-
- * share/po/ar.po: Committing Arabeyes.org translation.
-
-2004/01/24 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2004/01/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: s/ppptp/pptp/
- factorize lan module search for adsl through ethernet
- make adsl device choose somewhat readable (detabable though
- fix adsl device setting :-(
- kill unreachable code
- kill unused variable
- cleanup
-
-2004/01/23 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dis-01.png, share/advertising/dwd-06.png,
- share/advertising/dis-05.png, share/advertising/dis-08.png,
- share/advertising/pwp-01.png, share/advertising/ppp-08.png,
- share/advertising/dis-10.png, share/advertising/dwd-07.png,
- share/advertising/dwd-02.png, share/advertising/ppp-06.png,
- share/advertising/dis-07.png, share/advertising/pwp-05.png,
- share/advertising/ppp-03.png, share/advertising/ppp-01.png,
- share/advertising/dwd-04.png, share/advertising/dis-02.png,
- share/advertising/pwp-03.png, share/advertising/ppp-05.png,
- share/advertising/pwp-08.png, share/advertising/dwd-03.png,
- share/advertising/dis-09.png, share/advertising/dis-03.png,
- share/advertising/ppp-04.png, share/advertising/ppp-11.png,
- share/advertising/dwd-08.png, share/advertising/pwp-06.png,
- share/advertising/dis-06.png, share/advertising/ppp-09.png,
- share/advertising/dis-11.png, share/advertising/ppp-10.png,
- share/advertising/pwp-02.png, share/advertising/dis-04.png,
- share/advertising/pwp-10.png, share/advertising/ppp-07.png,
- share/advertising/pwp-09.png, share/advertising/dwd-01.png,
- share/advertising/dwd-09.png, share/advertising/dwd-05.png,
- share/advertising/ppp-02.png, share/advertising/pwp-07.png,
- share/advertising/pwp-04.png: Update
-
-2004/01/23 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * rescue/tree/bin/insmod: autoprobe? what's that?
-
- * docs/HACKING: wrong, "make" in kernel by hand is not even needed
- update
-
- * rescue/tree/sbin/modprobe: support 2.4 and 2.6
-
- * standalone/printerdrake: "use USER" is unecessary and probably comes
- from copy-pasting userdrake's GUI
-
- * modules.pm: don't miss the hook with 2.6 usb kernels (might explain
- fredl problem with usb keyboard)
-
- * mdk-stage1/nfsmount.c: since dietlibc always reports null strings for
- RPC errors, at least provide something useful instead
-
- * rescue/list: lsmod.old and rmmod.old also needed
-
-2004/01/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po: upfdated pot file
-
- * share/po/et.po: updated Estonian po file
- upfdated pot file
-
-2004/01/23 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: checking {notFormatted} must never be done alone, one must check
- {isFormatted} first!
-
-2004/01/23 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: perl_checker: assigned, but not read
- More perl_checker fixes. Remove another unused sub.
- Fix broken sys, other restore.
- Rework timestamp for backup files to please perl_checker.
-
-2004/01/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfont (search_dir_font) kill unused variable
-
- * network/adsl_consts.pm: provider database needed in oder to not
- arbitrary set obfuscated vpi
- and vci parameters
-
- * network/adsl.pm (adsl_probe_info) make it aware of the fact we now see
- the adsl modem
- and protocol separatly
-
- * share/po/fr.po: update
- minor update
- update
-
- * network/netconnect.pm: fix adsl connection type retrieving
- fix interface name when doing adsl over an ethernet card
- sort ADSL connection types
- offer to configure sagem800 (needed because of unfriendly vpi/vci
- parameters)
-
- * interactive/gtk.pm: remove debug message
- (ask_fromW) enable TreeView to take all availlable space
-
-2004/01/22 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - remove _radio suffix
- - prevent undefined value to be get_texted
- - further s/cnx/intf/
- - remove old code
-
-2004/01/22 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c: moving forward our story with nice kernel guys,
- now they decided to remove the trailing space at the end of "Attached
- devices:" of /proc/scsi/scsi, probably that they had nothing more
- interesting to do this day
- until we haven't loaded the usb interface and the keyboard usb driver,
- we can't allow asking for additional drivers floppy, so need another
- parameter to my_insmod to indicate in which situation we are
-
- * mdk-stage1/cdrom.c, mdk-stage1/pcmcia_/cardmgr.c, mdk-stage1/mount.c,
- mdk-stage1/lomount.c, mdk-stage1/disk.c, mdk-stage1/modules.h,
- mdk-stage1/stage1.c, mdk-stage1/adsl.c, mdk-stage1/network.c: until we
- haven't loaded the usb interface and the keyboard usb driver, we can't
- allow asking for additional drivers floppy, so need another parameter to
- my_insmod to indicate in which situation we are
-
- * tools/cvslog2changelog.pl: clean up users
- add planou
-
- * mdk-stage1/modules.c: better do 2.4->2.6 compat module alias as soon as
- possible to display correct stuff in logs and simplify code
- until we haven't loaded the usb interface and the keyboard usb driver,
- we can't allow asking for additional drivers floppy, so need another
- parameter to my_insmod to indicate in which situation we are
- when checking for modules already loaded, be sure to check for the real
- name
- ensure insmod will try to access correct filename according to 2.4->2.6
- compat mapping
- really display filename when "error reading" a file to insmod in 2.6
-
- * mdk-stage1/Makefile: stage1-network-usb is deprecated
-
-2004/01/22 Pixel <pixel at mandrakesoft.com>
-
- * interactive/stdio.pm: $def_n is unused
-
- * interactive/gtk.pm: remove unused variable
-
- * modules/interactive.pm, install_steps_interactive.pm: help perl_checker
-
-2004/01/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: update copyright notices
- - fix untraslated strings
- - upcase tcp/ip
-
- * network/tools.pm (copy_firmware) kill it (was merged into add intf
- wizard
-
- * network/netconnect.pm: fix doble "IP address" entries
- typo fix
- config some stuff about adsl protocol
- kill debug statement
- factorize out adsl protocols' translations
- get rid of uselesss net_device variabl
- code simplification due to previous assertion
- ensure struct XXX and o_XXX parameters always reference the same hashes
- when configuring an ethernet card, skip the protocol choice step for any
- cnx
- type different than lan (eg: for cable and adsl connections)
- rollback debug stuff :-(
- handle speedtouch firmware if needed
- detect ECI like modems and warn we cannot support them (hence less
- pressure on
- our support services)
- fix typo fix
- typo fix :-(
- tag speedtouch and eci connections as to be restarted as in old wizard
-
- * detect_devices.pm: perl_checker cleanups
- do not mix before and after firmware upload usb ids
- (getECI) introduce it in order to detect eci like usb modems
-
- * standalone/drakfont: update copyright notices
- remove never implemented --strong option
- perl_checker cleanups
- fix button label
-
- * network/adsl.pm (adsl_conf_backend) kill interactive code (was merged
- into adsl wizard)
- (adsl_detect) detect ECI modems
- rename old end adsl step
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/br.po, share/po/sl.po,
- share/po/uz@Cyrl.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/advertising/dwd-03.pl, share/po/mn.po, share/po/uk.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/bs.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/hi.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/fr.po, share/po/ta.po, share/po/nl.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/cs.po:
- s/(Mandrake Linux is one) (the most widely used)/\1 of \2/
-
- * ugtk2.pm: perl_checker cleanups
- minor cleanups
- (gtkadd_widget) introduce it for size groups
-
- * standalone/drakfirewall, standalone/logdrake, standalone/drakpxe,
- standalone/drakboot, standalone/drakTermServ, standalone/net_monitor,
- standalone/drakbackup, standalone/printerdrake, standalone/fileshareset,
- standalone/drakedm, standalone/drakhelp, standalone/XFdrake,
- standalone/drakbug, standalone/drakupdate_fstab, standalone/draksound,
- standalone/drakxtv, standalone/draksec, standalone/drakautoinst,
- standalone/drakproxy, standalone/diskdrake, standalone/drakfloppy,
- standalone/drakgw, standalone/scannerdrake: update copyright notices
-
- * interactive/gtk.pm (ask_fromW) gc prefers ->isa()
- (ask_fromW) enable properly setted checkbuttons (aka those who
- correctly use text instead of label) to take all the place they need,
- thus preventing spurious horizontal scrolling bar to show up
-
- * harddrake/sound.pm: draksound doesn't write the sound alias b/c of wrong
- comparison with the
- default driver, thus not configuring not yet configured cards (#6988)
-
-2004/01/22 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2004/01/22 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: do not test $intf but $gui, poulpy sux
- fix isdn modem page
- factorise gui set_text
- - drop detection, will use interface scheme ($config)
- - use $interface_kind
- drop now unused code
- fix broken MII_NOT_SUPPORTED and HWADDR
- add dns3 entry
-
-2004/01/22 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * modules.pm: nice kernel guys spend their free time renaming modules for
- fun
-
- * mdk-stage1/doc/TECH-INFOS: disk will also need the directory
-
- * mdk-stage1/modules.c: nice kernel guys like to change modules names for
- no reasons when they have a break
-
-2004/01/22 Pixel <pixel at mandrakesoft.com>
-
- * tools/Makefile: rpmtools and perl-URPM are still 5.8.2
-
-2004/01/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: typo fix :-(
- tag speedtouch and eci connections as to be restarted as in old wizard
- install needed package depending of modem
- rollback
- add static configuration for sagem800 spanish users
- hide too big label (which is useless because of above text) but keep
- it for translation b/c of further reusage
-
- * network/adsl.pm: rename old end adsl step
-
-2004/01/21 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: retreive vpi and vci from config file for speedtouch
-
-2004/01/21 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/modules.c: add capability to use an additional drivers floppy
- network_gigabit_usb doesn't exist anymore
-
- * network/netconnect.pm: perl checker fixes
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.h: add capability to use an
- additional drivers floppy
-
- * modules.pm: misc change: more readable way of setting usb-interface
- alias
-
-2004/01/21 nplanel
-
- * modules.pm: add *-agp module support
-
-2004/01/21 Till Kamppeter <till at mandrakesoft.com>
-
- * scanner.pm, standalone/printerdrake: Removed occurences of "Mandrake"
- from translateable strings.
-
- * printer/main.pm, printer/printerdrake.pm: Added title bar texts for
- error and warning pop-ups.
- Removed occurences of "Mandrake" from translateable strings.
-
- * standalone/scannerdrake: Updated title bar texts of error pop-ups.
- Removed occurences of "Mandrake" from translateable strings.
-
-2004/01/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/adsl.pm: rename old adsl step
- (adsl_detect)
- - remove useless parameter
- - always return an hash, even if empty (simplify caller code)
-
- * network/netconnect.pm: really use the same path in standalone and
- install mode
- add new first adsl steps
- factorize lan detection (needed for adsl)
-
-2004/01/21 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/po/fr.po: fix typo
-
-2004/01/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: updated pot file
-
-2004/01/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
-
-2004/01/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pl.po, share/po/hi.po: updated pot file
- updated Hindi file; corrected syntax error in Polish file
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/hu.po: updated
- pot file
-
- * network/netconnect.pm: fixed typo
-
-2004/01/21 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm, ugtk2.pm:
- - fix sizing main window
- - always use a scrolled window when non pop_it
- (so that the buttons are at the bottom)
-
- * any.pm: perl_checker fix
-
- * modules.pm: don't pass empty options, new insmod doesn't like it
-
- * share/po/Makefile, Makefile: remove checking "$" in po strings,
- perl_checker takes care of this correctly
- (ie. N("a\$b") will get string "a$b" in po which is ok, whereas N("a$b")
- gives an error)
-
-2004/01/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: simplify
-
-2004/01/20 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm:
- - ugly hack to temporary handle reading ide_cd in /proc/modules
- whereas we
- insmoded ide-cd
- - removing load_ide() (unused)
-
- * rescue/list, share/list: replace PERL_VERSION with current version of
- some perl modules
-
- * install_steps.pm: modules::load_ide() is removed, now we use the same as
- install_step_interactive
-
-2004/01/20 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated partially
-
-2004/01/20 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: install the squid package, if necessary
-
-2004/01/20 fwang
-
- * share/po/zh_CN.po: update
-
-2004/01/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: updated pot file
-
-2004/01/20 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm:
- - ugly hack to temporary handle reading ide_cd in /proc/modules
- whereas we
- insmoded ide-cd
- - removing load_ide() (unused)
-
- * any.pm: in setupBootloader__entries():
- - move vga and initrd from $::expert to advanced
- - drop setting read-write, table, unsafe
-
- * rescue/list, share/list: replace PERL_VERSION with current version of
- some perl modules
-
- * install_steps.pm: modules::load_ide() is removed, now we use the same as
- install_step_interactive
-
- * interactive/gtk.pm: do not try anymore to have small pop_it dialog
- boxes. Make them all the same
- size and so drop all the (big) code trying to use scrolled windows only
- when
- needed and to size them appropriately
-
- * lang.pm: disable wen and dns until fixed
-
- * docs/HACKING: update (thanks to Sunny Dubey)
-
-2004/01/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.3-22mdk
-
- * network/network.pm: fix #6944: ensure proper perms on
- /etc/profile.d/proxy.{,c}sh
- (pieleric@etu.utc.fr)
-
- * network/modem.pm: remove useless LOGIN field
- do not gratuitously reinvent write_secret_backend()
- s/N('...')/N("...")/
- save login in ifcfg-ppp0
- save ip if needed
- fix dyn/static stuff
- fix static/dyn settings
- - handle PAP/CHAP auth method too
- - translate again strings
- handle more kppp options from new steps
- make sections more visible in generated kppprc conf file
-
- * network/netconnect.pm: share same path in both standalone and in install
- mode (2/2)
- do not offer to enter domain name twice
- share same path in both standalone and in install mode
- read back auth method
- read back new fields
- fix gateway reading and writing
- - handle PAP/CHAP auth method too
- - translate again strings
- use checkbow's label
- dyn hostname is a boolean
- - split ppp steps into account, ip, dns and gateway parameters step
- - offer to configure more ip, dns and gateway parameters
- rename ppp_choose as ppp_account
-
-2004/01/20 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: cooker logo
-
-2004/01/20 hilbert
-
- * share/po/zh_TW.po: This is a test commit
-
-2004/01/20 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: fix mount point /tmp/image for the cdrom in generated /etc/fstab
-
- * install_steps.pm: help perl_checker seeing charsetChanged even if known
- install_steps_* can be seen
- kernel 2.6 .ko adaptation
-
- * share/advertising/Makefile: CVS has all the advertisings, but only
- upload the dwd (download) one
-
- * modules.pm, modules/parameters.pm: kernel 2.6 .ko adaptation
-
- * install_steps_interactive.pm: help perl_checker seeing charsetChanged
- even if known install_steps_* can be seen
-
- * lang.pm: disable wen and dns until fixed
-
- * commands.pm: cleanup & kernel 2.6 .ko adaptation
-
-2004/01/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/modem.pm: handle more kppp options from new steps
- make sections more visible in generated kppprc conf file
- simpkify %toreplace build
-
- * network/netconnect.pm: use checkbow's label
- dyn hostname is a boolean
- - split ppp steps into account, ip, dns and gateway parameters step
- - offer to configure more ip, dns and gateway parameters
- rename ppp_choose as ppp_account
- typo fix
- simplify
- go to wireless step if needed
- always go to hostname step (shared by all paths)
- kill old cable step
- install requested dhcp client
- add hidden option enabling to select dhcp client
- skip protocol step when configuring cable connection
- cable is like lan but with dhcp
- set connection type at one point only
- load adsl wizard on demand
- (get_subwizard) introduce the infrastructure that enable to load a
- part of a wizard from another module
- init modem data structure when manually selecting a serial port
- fix modem dns servers reading
- keep entered data when stepping back to dialup options step
- do not mix modem choice and modem configuration, so that we keep
- entered data when stepping back and forward
- pass dynamically build data into interactive layer when configuring
- modems
- fix device (was broken due to the fact we kept all the data collected
- about modems)
-
- * install_gtk.pm: fix set_default_direction() call
-
- * network/adsl.pm: fix wizard layer usage (b/c of new api)
- remove useless parameter
-
-2004/01/20 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: part. update
-
-2004/01/20 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: fix typo
-
-2004/01/20 hilbert
-
- * share/po/zh_TW.po: This is a test commit
-
-2004/01/20 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: help perl_checker seeing charsetChanged even if known
- install_steps_* can be seen
- kernel 2.6 .ko adaptation
-
- * share/advertising/Makefile: CVS has all the advertisings, but only
- upload the dwd (download) one
-
- * modules.pm, modules/parameters.pm: kernel 2.6 .ko adaptation
-
- * install_steps_interactive.pm: help perl_checker seeing charsetChanged
- even if known install_steps_* can be seen
-
- * commands.pm: cleanup & kernel 2.6 .ko adaptation
-
- * rescue/list: replace rpmpopt-4.2 with rpmpopt-* (since we now have
- rpmpopt-4.2.2)
-
-2004/01/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * bootloader.pm: workaround buggy installkernel that left default value be
- geater than
- the current number of entries, thus making drakboot displaying
- (default-entries_count) spurious "()*" entries which then results in
- writing back bogus grub conf file.
- kernel team should just be shuted down :-(
-
- * share/po/bs.po: fix duplicate message
- fix duplicate message
-
- * install_gtk.pm: fix set_default_direction() call
-
- * network/adsl.pm: fix wizard layer usage (b/c of new api)
- remove useless parameter
-
- * network/modem.pm: simpkify %toreplace build
- merge ppp_configure_raw() into its only caller (ppp_configure())
- do not bother try installing packages in testing mode
-
- * network/netconnect.pm: load adsl wizard on demand
- (get_subwizard) introduce the infrastructure that enable to load a
- part of a wizard from another module
- init modem data structure when manually selecting a serial port
- fix modem dns servers reading
- keep entered data when stepping back to dialup options step
- do not mix modem choice and modem configuration, so that we keep
- entered data when stepping back and forward
- pass dynamically build data into interactive layer when configuring
- modems
- fix device (was broken due to the fact we kept all the data collected
- about modems)
- fix ppp_configure call
- prepare killing obfuscated install path
- merge in next_cnx_step into handle_multiple_cnx
-
-2004/01/19 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/ppp-04.pl: Update
-
-2004/01/19 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - add build_tree to fetch info before doing GUI stuff
- - use $intf->{$interface}{save} to re-use existing write_foo specific
- fonctions
- - change build_notebook thing
- - indenting && perl_checking
-
-2004/01/19 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/19 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Epiphany is now GNOME default web browser.
-
-2004/01/19 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: typo error
- add transparent proxy support
-
- * network/network.pm: add the silly read_squid function
-
-2004/01/19 fwang
-
- * share/po/zh_CN.po: update
- update
-
-2004/01/19 keld
-
- * share/po/da.po: Trying to get rid of "Translated to da.po" problem - did
- not work:-(
- soft/menu-messages/da.po soft/control-center/po/da.po
- soft/drakcronat/po/da.po soft/ftw/po/da.po
- soft/GtkMdkWidgets/po/da.po soft/kdebase-servicemenu/po/da.po
- soft/krozat/po/da.po soft/mandrake-menu-directory/po/da.po
- soft/mdkkdm/po/da.po soft/mdklaunchhelp/po/da.po
- soft/menudrake/po/da.po soft/rpmdrake/po/da.po
- soft/urpmi/po/da.po soft/userdrake2/po/da.po
- soft/wizard_perl/po/da.po gi/perl-install/share/po/da.po
- soft/galaxy/thememdk/mandrake_client/po/da.po
- updates
- soft/control-center/po/da.po soft/ftw/po/da.po
- soft/rpmdrake/po/da.po soft/urpmi/po/da.po
- gi/perl-install/share/po/da.po
-
-2004/01/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po, share/po/et.po: updated Estonian and Norwegian files
-
-2004/01/19 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm: kernel22 is not there anymore (since a long time now)
- select bestKernelPackage before selecting basesystem (otherwise
- basesystem already requires kernel)
-
- * modules.pm, fs.pm: kernel 2.2 is deprecated
-
- * bootloader.pm: cleanup sanitize_ver (re-synced with common.pm from
- bootloader-utils)
- add a warning telling to run lilo after modifying the lilo.conf
- (bugzilla #6924)
-
- * pkgs.pm:
- - factorize kernel regexp in analyse_kernel_name()
- - remove special kernel choosing in packageCallbackChoices()
- add some logging explaining the default kernel choice
-
- * do_pkgs.pm:
- - factorize kernel regexp in analyse_kernel_name()
- - remove special kernel choosing in packageCallbackChoices()
-
- * install_steps_interactive.pm: $::testing means testing, not "testing
- what titi wants to test"
-
-2004/01/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakgw: perl_checker fixes
- remove empty lines in order to get more place for entry fields
-
- * detect_devices.pm (getSerialModem) fix device field
- (getModem) simplify
- (getSerialModem)
- - drop useless first arg
- - return all detected serial modems, not only first
- - return all data we collected on serial modems
- (getSerialModem) do not even bother check for /dev/modem since anyway
- probeSerialDevices() set a bijection between modems and /dev/ttySx
- devices (not /dev/modem) thus making hasModem() test useless for
- /dev/modem
- (getUPS) use HIDIOCAPPLICATION ioctl definition from c module
-
- * share/po/br.po: minor update
- update
- update
-
- * ugtk2.pm (reate_box_with_title) shrink TextView size to its minimal size
- in
- order to get the bigger place for other widgets
-
- * network/modem.pm (ppp_configure_raw) remove code stolen from
- ppp_configure()
-
- * interactive/gtk.pm: prevent unpoped wait messages when called from
- within wizards in standalone
- mode
- remove useless spacing above advanced options
-
- * network/netconnect.pm:
- - kill duplicated code
- - move some code where it belongs so that it's shared by isdn/modem
- - merge wireless step into normal modem one
- - report all detected serial modems
- - use all collected data on modems in order to have a nice list
- rollback bogus change
- dot not try to alter squid config in --testing mode
- isdn: detect serial modems if needed
- rename "ppp_choose step" as "choose_serial_port" and "ppp_choose2" one
- as "ppp_choose"
- chain hostname/dns step with zeroconf one (more work on zeroconf will
- be done between beta 1 and 2)
- turn "unsupported winmodem" into a terminal step
- add strings for future options
- fix next_cnx_step call
- (detect) display a nice string for serial modems
- (detect)
- - adapt modem detection to new detect_devices
- - keep all data collected on modems
- add proper window title
- make a real wizard step out of first modem step
- winmodem connection'll be merge into modem connection
- kill Data::Dumper orphean
- merge dhcp hostname into hostname step
- use radio button instead of optionmenu if possible (aka not too many
- network interfaces)
-
- * standalone/drakbug: simplify
-
- * share/po/cy.po: add missing empty lines
- another update
- further update
- update
-
- * share/po/fr.po: update
-
- * standalone/drakconnect: kill useless diagnostics pragma
-
-2004/01/18 fwang
-
- * share/po/zh_CN.po: update
-
-2004/01/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/cy.po: update
- update
-
- * share/po/fr.po:
- - typo fix (#6919)
- - let drakconnect message be wrapped by gtk+ rather than us
-
-2004/01/17 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/dwd-09.pl: Fix (r)
-
-2004/01/17 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: add wait message as hardware detection takes
- time
-
-2004/01/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/hu.po: udated pot file; converted to UTF-8 all po files (as
- therer are utf-8 msgid
-
- * diskdrake/hd_gtk.pm: spell checking
-
-2004/01/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: fix obvious typo
- update
- fix doble entries
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/nb.po,
- share/po/uz.po, share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/lv.po, share/po/hu.po, share/po/fa.po,
- share/po/id.po, share/po/ru.po, share/po/sl.po, share/po/uz@Cyrl.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/po/mn.po, share/po/lt.po, share/po/cy.po, share/po/tg.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/nl.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po: fix doble entries
-
- * ugtk2.pm: fix #6899: tools failling to popup windows while embedded
-
- * share/po/br.po: update
- fix doble entries
-
- * share/advertising/dwd-08.pl, share/advertising/dwd-04.pl,
- share/advertising/dis-11.pl, share/advertising/ppp-11.pl,
- share/advertising/ppp-09.pl, share/advertising/dwd-05.pl,
- share/advertising/pwp-09.pl, share/advertising/dwd-06.pl,
- share/advertising/ppp-07.pl, share/advertising/pwp-10.pl,
- share/advertising/ppp-05.pl, share/advertising/dis-09.pl,
- share/advertising/ppp-04.pl, share/advertising/pwp-04.pl,
- share/advertising/pwp-08.pl: fix package build
-
-2004/01/16 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: * manage interfaces:
- - fix Ok button logic
- - fix some calls to $apply
- * manage interfaces
- - added Modem page
- - most of the GUI in place
-
-2004/01/16 Pixel <pixel at mandrakesoft.com>
-
- * network/shorewall.pm: fix N() badly used
- - add icmp support
- - add "Echo request (ping)" choice
-
- * network/drakfirewall.pm:
- - add icmp support
- - add "Echo request (ping)" choice
-
-2004/01/16 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: ask_warn fixes per
- Thierry, purge some old, unused code
-
-2004/01/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/tools.pm: prevent faillure when trying to dereference undef in
- testing mode
-
- * install_steps_interactive.pm (Accept) default to accept in testing mode
- do not complain about root password in testing mode
-
- * network/adsl.pm, network/isdn.pm, network/ethernet.pm: do not export
- dead functions
-
- * share/po/da.po: rollback bogus change
- remove arrows from previous/next buttons according to interface team
-
- * network/modem.pm (ppp_configure) reintroduce it for drakconnect's
- manager
-
- * network/network.pm: do not alter proxies config while configuring
- network interfaces (needed since
- we've disabled proxy config in network interface config path)
- do not install zeroconf if no zeroconf hostname was typed in (we may add
- a
- USE_ZEROCONF variable to /etc/sysconfig/network instead)
-
- * network/netconnect.pm: new host settings step
- clean horrible code
- split/merge lan config steps according to new specs
- (card => protocol => parameters => hostname)
- rollback "separate standalone and install paths" try (just too painful
- to
- maintain and anyway install net wizard has no logic)
- - make a real step out of "manage multiple internet connections" case
- - factorize and fix accessing to this step
- drop proxy configuration step.
- rationale:
- - miscellaneous_choose() was reintroduced in network::network since it
- was still
- needed by drakproxy
- - anyway configuring proxies is:
- o not supposed to be done while configuring network interfaces
- o duplicated with drakproxy and the like
- o removed in new drakconnect specs
- morph hw_account step through reusing new wizard layer capabilites (aka
- dynamically return just build needed data rather than ackwardly puting
- it in
- place)
- fix ppp_first_step() call
- small reindenting
- remove overrided variables
- enable to step forward after to "connect now?" step since wizard
- infrastructure fixed the ask_yesorno design flaw (and remove bug hint
- left by
- previous maintainers)
- use wizard layer 's yesorno type
- typo fix
-
- * share/po/ms.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/th.po, interactive.pm, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/be.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/he.po, standalone/drakbackup, share/po/ca.po, share/po/ar.po,
- share/po/nb.po, share/po/uz.po, share/po/ro.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/lv.po, share/po/hu.po,
- printer/printerdrake.pm, share/po/fa.po, share/po/id.po,
- drakxtools.spec, share/po/ru.po, help.pm, share/po/br.po,
- share/po/sl.po, share/po/uz@Cyrl.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/mn.po, share/po/lt.po,
- share/po/cy.po, share/po/tg.po, install_steps_gtk.pm, share/po/bs.po,
- interactive/newt.pm, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po: remove arrows from previous/next buttons according to
- interface team
-
- * standalone/drakconnect: kill unused variables
-
- * standalone/logdrake:
- - set a meaningfull window title when called from mcc for explanations
- - upcase default window title
- do not abuse global namespace (this also allow to track variables
- usage through static code analysers such as perl_checker)
-
-2004/01/15 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/15 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_gtk.pm: fix individual package selection (was broken since
- 30 september...)
- formatList is imported, no need to get it in common::
-
- * c/stuff.xs.pl, diskdrake/interactive.pm, fsedit.pm,
- install_interactive.pm, partition_table/raw.pm, partition_table.pm:
- - remove the use of BLKRRPART (telling the kernel to re-read the
- partition table) in most cases
- - replace with tell_kernel() and will_tell_kernel()
- - correctly handle in standalone the need to reboot, with no way to
- forget it
- (telling the WM to quit nicely then call reboot when it's done)
-
- * rescue/list: insmod.old is needed when the kernel is a 2.4
-
- * lvm.pm: adaptation/simplification for new lvm2 (thanks to Luca Berra)
-
- * share/rpmsrate: have hylafax-client installed when kdebase-kdeprintfax
- is selected
-
- * bootloader.pm: don't modify {append} after add_kernel(), call
- add_kernel() directly with the append parameter
- (so that comparison with previous entries is done correctly)
-
-2004/01/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: First time wizard
-
-2004/01/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po: update
- update
-
- * standalone/drakboot: add bug hint
- remove unused variable
- (lilo_choice) do not complain on canceling
- (lilo_choice) let's set dialog title when poping up an error message
- (lilo_choice) do not complaing about lilo faillure when we use another
- bootloader: just complain about the actually used bootloader
- warly said that we should not restrict ourselves to lilo
- make splash config looks better when embedded
-
- * standalone/drakups: reuse create_okcancel() in ordet to get some std
- button layout
- remove useless menu infrastucture
-
- * drakxtools.spec: require a fixed perl-Glib
- fix changelog
- 9.3-21mdk
- 9.3-20mdk
-
- * ugtk2.pm: do not create spurious top window when embedded (why does this
- fsck us
- only now?)
-
-2004/01/14 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/README, share/advertising/dis-06.pl,
- share/advertising/dis-05.png, share/advertising/dwd-08.pl,
- share/advertising/pwp-02.pl, share/advertising/dwd-04.pl,
- share/advertising/06-development.pl, share/advertising/01-thanks.png,
- share/advertising/dis-10.png, share/advertising/dwd-07.png,
- share/advertising/dis-02.pl, share/advertising/ppp-06.png,
- share/advertising/dis-04.pl, share/advertising/02-community.png,
- share/advertising/pwp-05.png, share/advertising/11-mnf.png,
- share/advertising/02-community.pl, share/advertising/05-desktop.pl,
- share/advertising/dis-11.pl, share/advertising/01-thanks.pl,
- share/advertising/dwd-04.png, share/advertising/dis-10.pl,
- share/advertising/ppp-11.pl, share/advertising/08-store.pl,
- share/advertising/pwp-07.pl, share/advertising/08-store.png,
- share/advertising/pwp-08.png, share/advertising/dwd-03.png,
- share/advertising/dwd-02.pl, share/advertising/12-mdkexpert.png,
- share/advertising/dis-05.pl, share/advertising/06-development.png,
- share/advertising/ppp-09.pl, share/advertising/11-mnf.pl,
- share/advertising/dis-03.png, share/advertising/dwd-01.pl,
- share/advertising/dwd-08.png, share/advertising/dis-01.pl,
- share/advertising/pwp-06.png, share/advertising/dis-07.pl,
- share/advertising/pwp-02.png, share/advertising/list,
- share/advertising/dwd-05.pl, share/advertising/ppp-06.pl,
- share/advertising/ppp-07.png, share/advertising/pwp-09.png,
- share/advertising/ppp-10.pl, share/advertising/dis-03.pl,
- share/advertising/dwd-09.png,
- share/advertising/13-mdkexpert_corporate.png,
- share/advertising/pwp-07.png, share/advertising/pwp-09.pl,
- share/advertising/pwp-04.png, share/advertising/pwp-05.pl,
- share/advertising/dis-01.png, share/advertising/10-security.png,
- share/advertising/07-server.pl, share/advertising/dwd-06.png,
- share/advertising/dis-08.png, share/advertising/pwp-01.png,
- share/advertising/ppp-08.png, share/advertising/ppp-03.pl,
- share/advertising/07-server.png, share/advertising/dis-08.pl,
- share/advertising/dwd-02.png, share/advertising/pwp-06.pl,
- share/advertising/dis-07.png, share/advertising/ppp-03.png,
- share/advertising/dwd-03.pl, share/advertising/ppp-01.png,
- share/advertising/03-software.png, share/advertising/ppp-08.pl,
- share/advertising/dis-02.png, share/advertising/dwd-06.pl,
- share/advertising/10-security.pl, share/advertising/Makefile,
- share/advertising/pwp-03.png, share/advertising/ppp-05.png,
- share/advertising/ppp-02.pl, share/advertising/dwd-07.pl,
- share/advertising/ppp-07.pl, share/advertising/dis-09.png,
- share/advertising/09-mdksecure.png, share/advertising/ppp-04.png,
- share/advertising/ppp-11.png, share/advertising/pwp-10.pl,
- share/advertising/ppp-09.png, share/advertising/dis-06.png,
- share/advertising/ppp-10.png, share/advertising/dis-11.png,
- share/advertising/dis-04.png, share/advertising/03-software.pl,
- share/advertising/pwp-10.png, share/advertising/09-mdksecure.pl,
- share/advertising/13-mdkexpert_corporate.pl,
- share/advertising/12-mdkexpert.pl, share/advertising/ppp-05.pl,
- share/advertising/ppp-01.pl, share/advertising/dis-09.pl,
- share/advertising/pwp-03.pl, share/advertising/04-configuration.png,
- share/advertising/dwd-01.png, share/advertising/ppp-04.pl,
- share/advertising/dwd-05.png, share/advertising/pwp-04.pl,
- share/advertising/pwp-01.pl, share/advertising/ppp-02.png,
- share/advertising/05-desktop.png, share/advertising/pwp-08.pl,
- share/advertising/04-configuration.pl, share/advertising/dwd-09.pl: New
- texts to translate for next release.
- Images will be modified in a short time.
-
-2004/01/14 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - manage interfaces :
- o add Account page
- o speedtouch and sagem modems
- o build_notebook don't need $window anymore
- o cosmetic change to Infornations page
-
-2004/01/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: updated pot file
-
-2004/01/14 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: don't write fstab entries which are notFormatted
-
-2004/01/14 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Let list of printer models get sorted.
-
-2004/01/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update
- update
-
- * drakxtools.spec: 9.3-19mdk
-
- * network/network.pm (miscellaneous_choose) restore it for drakproxy (we'd
- better split out
- network interface and proxy configuration at install time)
-
- * standalone/drakboot: typo fix
- use class->new rather than new class style
- minor cleanup
- perl_checker cleanups
- proper indenting
- - offer to configure bootsplash only on --splash
- - drop useless frames
- - set main window title according to current mode (autologin,
- bootloader or bootsplash)
-
- * install_steps_interactive.pm: proxy conf: do not touch files in
- --testing mode
- split out proxy configuration out of network interfaces configuration
-
- * standalone/drakautoinst:
- - kill unused variables
- - fix gtk+2 notebook usage
- - perl_checker cleanups
-
- * any.pm: move bootloader title from drakboot
-
- * standalone/drakclock: unused variable
-
- * network/tools.pm: ask_info2 is dead
-
- * install2.pm: fix fix
- fix logic test order in order to prevent useless error message in
- --testing mode
-
- * wizards.pm: using box radio looks better for yes/no like questions
- (process) in yes/no case, keep the same logic as
- interactive->ask_yesorno() and pass 1 if /yes/ and undef else
-
-2004/01/14 Warly <warly at mandrakesoft.com>
-
- * standalone/drakboot: clean splash management code
-
-2004/01/13 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/Makefile: cookr
-
- * pkgs.pm: perl check
- allow DRIVER"regexp" in rpmsrate and use it to install xmms-alsa when we
- use alsa sound driver
-
- * share/rpmsrate: allow DRIVER"regexp" in rpmsrate and use it to install
- xmms-alsa when we use alsa sound driver
-
- * Xconfig/card.pm, common.pm, detect_devices.pm, modules.pm:
- detect_devices::matching_driver -> matching_desc but matching driver
- names (kernel modules)
-
- * any.pm: changing utf8 flag on an installed OS is not supported
-
-2004/01/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po, share/po/et.po: updated Estonian and Norwegian files
-
-2004/01/13 Pixel <pixel at mandrakesoft.com>
-
- * devices.pm: lvm2 uses urandom
-
- * lvm.pm: lvm2 uses urandom
- - install lvm2 rpm instead of lvm (and using ->ensure_is_installed)
- - "vgdisplay" error status is not good, using "vgs" instead
-
- * diskdrake/smbnfs_gtk.pm: revert titi breaking the code, keeping the only
- valid change
-
-2004/01/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakautoinst: alter message according to interface team
- suggestion
-
- * ugtk2.pm:
- - "Next->" => "Next"
- - "<-Previous" => "Previous"
- enable to access extra buttons $w->{buttons}{<label>}
- do not pack empty label before extra buttons if there'll be no button
- before it
- rationale: when there's no cancel button, packing an empty label
- instead of the cancel button results in extra buttons (eg: help,
- advanced) to be shifted with a space before;
-
- * standalone/drakboot, standalone/draksec, standalone/drakconnect:
- sanitize buttons through reusing create_okcancel()
-
- * standalone/drakedm: perl_checker sometimes wrongly complain
-
- * standalone/drakfloppy: sanitize buttons through reusing
- create_okcancel()
- upcase label
-
- * share/po/fr.po: typo fix
-
- * standalone/drakfont: hide about butto b/c there's already mcc about
- dialog and there're
- already too much buttons
- sanitize buttons through reusing create_okcancel()
-
- * standalone/drakperm, standalone/drakclock: alter message according to
- interface team suggestion
- sanitize buttons through reusing create_okcancel()
-
- * wizards.pm: add support for yes/no questions
- better rely on the end field being set rather than on the last step to
- be named "end" (thus allowing to have several different last steps)
-
-2004/01/12 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * pixmaps/langs/lang-sr.png: changed the Serbian cyrillic image to display
- using cyrillic.
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po: updated pot file
-
- * lang.pm: adding spaces to please perl_checker
- Added to the language selection menu languages with recently appeared
- translations in Gnome or KDE (fo, ia, ku, nds, ne, oc, wen, yi)
-
-2004/01/12 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: used the ip from stage1 instead of using IPADDR which is
- not given for dhcp
- for auto_install file (as asked by Michael Riss)
-
- * install_gtk.pm: wacom support should be re-added :-/
-
-2004/01/12 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm: Added functionality to
- configure a PostScript printer with a
- manufacturer-supplied PPD file.
-
-2004/01/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakedm: perl_checker cleanups
-
- * drakxtools.spec: 9.3-18mdk
-
- * standalone/drakfloppy: handle both kernel 2.4.x and 2.6.x (before size
- field was not properly
- when switching between threes b/c we looked for module.ko instead of
- module.o.gz and the like)
-
- * standalone/drakfont: upcase first letter of error messages
- perl_checker fixes
- new layout with subdialogs
- remove spurious minus at beginning of paragraph
-
- * standalone/printerdrake: do not push anymore help menu at right (hig and
- kde guidelines are
- against this)
-
-2004/01/12 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po: updated pot file
-
-2004/01/12 Pixel <pixel at mandrakesoft.com>
-
- * share/list: need insmod.old for kernel 2.4
-
- * install_gtk.pm: wacom support should be re-added :-/
- XFree4 during install
-
- * install2.pm: used the ip from stage1 instead of using IPADDR which is
- not given for dhcp
- for auto_install file (as asked by Michael Riss)
-
- * install_steps_gtk.pm, share/list.i386: XFree4 during install
-
- * network/drakfirewall.pm: allow a range of ports (anthill bug #267)
-
- * run_program.pm: don't print refs in log when output is redirected
- (nice patch from blino :)
-
- * do_pkgs.pm, install_steps.pm, interactive.pm:
- - install_steps_auto_install is not a interactive but still needs
- do_pkgs
- - so making do_pkgs a class, and interactive and install_steps will
- inheritate from it
- - do_pkgs renamed into do_pkgs_common, containing the things common to
- do_pkgs_during_install and do_pkgs_standalone
-
- * docs/HACKING: update from sunny@opencurve.org
-
-2004/01/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump perl(Gtk2) require
- 9.3-17mdk
-
- * standalone/drakfont: new layout with subdialogs
- remove spurious minus at beginning of paragraph
- make font removing working with --testing
- fix unstalling fonts
- kill unused variables
- (put_font_dir) factorize some code into put_font_dir_real()
- fix chkfontpath call in --testing mode (/usr/sbin) not in path
- fix applications layout:
- - remove spurious empty boxes
- - fix layout (aka do not uselessly resize main window)
- - sanitize layout (put legal warning between title and application
- list)
- - "[X] label" packing looks quite a less uglier than "label
- [X]"
- fix about layout:
- - sanitize horrible line breaking (let pango do it for now, it know
- how to do
- it quite a lot better than we)
- - add myself in author list
- - split about translation in three pieces (copyright holders, std fsf
- header
- and thanks), enabling to share std fsf legal header among several
- programs
- prevent useless spacing above button bar
- enforce class->new calling convention rather than "new class" one
- style only change; "fix" gtkpacking so that expand arg always precede
- the
- widget it's about rather that following another widget
-
- * Makefile: handle poulpy code
-
- * standalone/drakedm: perl_checker cleanups
- when offering to restart dm, offer yes/no as choice rather than
- ok/cancel (#6810)
-
- * interactive/gtk.pm: fix embedding:
- - prevent subwindows being too small
- - prevent subwindows breaking when canceled
-
- * standalone/drakconnect: show a finish button on last step
- exit once delete interface wizard has ended instead of then running the
- std
- add wizard...
- list ppp interfaces too when offering to delete an interface
-
- * diskdrake/smbnfs_gtk.pm (per_entry_action_box)
- - sanitieze buttons packing (do not eat extra space)
- - get rid of groupby2
-
- * share/po/fr.po: typo fix
- update
- fix french translation: always translate "NONE" as "AUCUN" in draksec
-
- * wizards.pm: rollback debug statements
- only complain if a problem actually happened
-
-2004/01/10 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
- last messages updated
-
-2004/01/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * standalone/drakconnect, standalone/scannerdrake: fixed typos
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/mn.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/nb.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/mk.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/hi.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: big pot file update
-
-2004/01/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix changelog
- one more fix
-
-2004/01/09 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - apply and ok button now working
- - some clean up
-
-2004/01/09 Pixel <pixel at mandrakesoft.com>
-
- * interactive.pm, do_pkgs.pm, standalone.pm: new do_pkgs package which get
- rid of pkgs_interactive::* which was in install_any
- and standalone, and partially duplicated
-
-2004/01/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake: fix wizard when logdrake is embeded
-
- * ugtk2.pm: handle exceptions with Glib-1.020/Gtk2-1.022
- (gtktext_insert) make it works with both Glib-0.95/Gtk2-0.95 and
- Glib-1.020/Gtk2-1.022
-
- * drakxtools.spec: 9.3-16mdk
- 9.3-15mdk
-
- * standalone/drakboot: fix drakboot --boot embedding
-
-2004/01/09 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: information box fully fonctionnal for ethernet
- cards
-
-2004/01/09 Pixel <pixel at mandrakesoft.com>
-
- * share/po/Makefile: get translated strings in directory gi/perl-install
- to have xxx.pm instead of ../../xxx.pm
-
- * install_any.pm: http://serv.mydomain/pub/install must get split into
- server:serv.mydomain and
- directory:/pub/install, and not directory:pub/install
- simplify
-
- * interactive.pm, do_pkgs.pm: new do_pkgs package which get rid of
- pkgs_interactive::* which was in install_any
- and standalone, and partially duplicated
-
- * fs.pm, install_steps_gtk.pm: remove a few other SIG{__DIE__}
-
- * standalone.pm: new do_pkgs package which get rid of pkgs_interactive::*
- which was in install_any
- and standalone, and partially duplicated
- perl_checker compliance
- simplify, cleanup
-
-2004/01/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: share translations with harddrake
-
- * harddrake/data.pm: tag megaraid controllers as scsi ones
-
- * common.pm: enable other packages to override libDrakx translations with
- those
- from their own domains (eg: prevent mcc to display "partition de
- demarrage" instead of "demarrage" in french for "boot" ...)
-
- * share/po/br.po: update
-
-2004/01/08 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - informations afford copy/paste (mac address)
- - add module name to informations
- - perl_checker compliant
-
-2004/01/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
-2004/01/08 Pixel <pixel at mandrakesoft.com>
-
- * standalone/drakauth, any.pm, authentication.pm, install_any.pm,
- install_steps_interactive.pm:
- - integrate chkauth (which is now deprecated)
- - new module authentication
-
- * install_steps_auto_install.pm: display the error
-
- * common.pm: better override formatError than replacing all the
- formatError with formatError_and_log
- (goal: get log'ing even now that SIG{__DIE__} is not there anymore)
- add formatError_and_log (to get log'ing even now that SIG{__DIE__} is
- not there anymore)
-
- * install2.pm: no need to log the error twice, errorInStep will take care
- of it
- display the error
-
-2004/01/08 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: fix sagem net_cnx_up (thanks to QA team)
-
- * standalone/drakconnect: first 'manage interface'
- implementatiimplementation
-
- * drakxtools.spec: new version
-
-2004/01/08 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: runinstall2 is deprecated, install2 is called directly
-
- * share/aliases: i thought stage1 didn't call runinstall2 anymore...
- what's wrong with me??
- runinstall2 is deprecated, install2 is called directly
-
- * install2.pm: no need to log the error twice, errorInStep will take care
- of it
- display the error
-
- * diskdrake/interactive.pm, Xconfig/resolution_and_depth.pm: perl_checker
- compliance
-
- * network/smb.pm, diskdrake/smbnfs_gtk.pm: authentification is french, the
- english word is authentication
-
- * bootloader.pm: drop keytable line in grub config file since grub doesn't
- handle it anymore
- (patch dropped long ago in grub 0.90-3mdk)
- - simplify lilo boot message. Not mentioning the timeout parameter
- fixes bugzilla #5429
- - remove /boot/grub/messages and don't use the i18n command which are
- obsolete
- since grub doesn't handle it anymore
-
- * standalone/drakauth, any.pm, authentication.pm,
- install_steps_interactive.pm, install_any.pm:
- - integrate chkauth (which is now deprecated)
- - new module authentication
-
- * services.pm: add a fam description (telling that GNOME & KDE uses it).
- closes part of bugzilla #1704
-
- * common.pm: better override formatError than replacing all the
- formatError with formatError_and_log
- (goal: get log'ing even now that SIG{__DIE__} is not there anymore)
- add formatError_and_log (to get log'ing even now that SIG{__DIE__} is
- not there anymore)
-
- * install_steps_auto_install.pm: display the error
-
-2004/01/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakbackup: merge back drakbacup update
-
- * ugtk2.pm: add a separator below buttons on fredc request
-
- * drakxtools.spec: merge in spec file from update SRPM
-
- * network/adsl.pm: fordward sagem net_cnx_up fix
-
- * standalone/drakconnect (configure_net)
- - make buttons smaller
- - follow button std order
- move all options parsing pieces together
- restore exit_dialogsub
- (configure_net)
- when there's no connection:
- - fix message for new drakconnect scheme
- - shrink code by reusing interactive
-
-2004/01/07 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2004/01/07 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm, standalone/diskdrake: logging when __DIE__ing is dangerous:
- - in diskdrake, logging the error via c::syslog caused $@ to be
- undefined, causing the error to be dropped! (esp "you need to reboot")
- - during install, no known error, but it's better to remove it anyway
- (bye bye the "warning: ..." in ddebug.log, sniff)
-
- * pkgs.pm: handle lilo not installed
-
- * install_any.pm: use whereis_binary()
-
- * Makefile.config: livedrake is deprecated/removed
-
- * bootloader.pm: handle lilo not installed
- pass --splash <resolution> to mkinitrd
- (so that make-boot-splash doesn't rely on lilo.conf or menu.lst)
-
- * run_program.pm: when called from commands.pm, install_any is not loaded
-
- * any.pm, Xconfig/resolution_and_depth.pm: pass --splash <resolution> to
- mkinitrd
- (so that make-boot-splash doesn't rely on lilo.conf or menu.lst)
-
- * drakxtools.spec: we need latest perl-MDK-Common
-
-2004/01/07 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: DVD+RW support, perl_checker, fix bogus cron
- message
-
-2004/01/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/br.po, share/po/fr.po: update
-
- * standalone/service_harddrake, modules.pm, c/stuff.xs.pl,
- network/ethernet.pm, drakxtools.spec: fixes merged from head into
- updates
-
-2004/01/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po, share/po/ms.po, share/po/id.po, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/th.po,
- share/po/sl.po, share/po/uz@Cyrl.po, share/po/et.po, share/po/ja.po,
- share/po/hr.po, share/po/tr.po, share/po/mt.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/mn.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/nb.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/mk.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/hi.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/nl.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/lv.po, share/po/el.po, share/po/bg.po, share/po/cs.po,
- share/po/hu.po: updated pot file
-
-2004/01/06 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: perl_checker compliance
- get rid of g_auto_install (unused & not working)
-
- * Xconfig/card.pm, live_install, Makefile.config, install_gtk.pm,
- standalone/livedrake, modules.pm, live_install2: obsolete livedrake,
- live_install, live_update
-
- * g_auto_install: get rid of g_auto_install (unused & not working)
-
- * install_any.pm: obsolete livedrake, live_install, live_update
- perl_checker compliance
- use $::prefix
- get rid of g_auto_install (unused & not working)
-
- * detect_devices.pm: perl_checker compliance
- obsolete livedrake, live_install, live_update
-
- * standalone/adduserdrake, partition_table/mac.pm, standalone/XFdrake,
- fsedit.pm, commands.pm, standalone/localedrake, partition_table.pm:
- perl_checker compliance
-
- * drakxtools.spec: obsolete live_update
-
- * install_steps.pm: obsolete livedrake, live_install, live_update
- use $::prefix
- get rid of g_auto_install (unused & not working)
-
- * standalone/drakclock: perl_checker compliance
- use $::prefix
-
- * Makefile, install2.pm: obsolete livedrake, live_install, live_update
- get rid of g_auto_install (unused & not working)
-
- * timezone.pm: use $::prefix
-
- * install_steps_interactive.pm: perl_checker compliance
- perl_checker compliance
- perl_checker compliance
- use $::prefix
- get rid of g_auto_install (unused & not working)
-
-2004/01/06 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: kill unused variables
-
-2003/09/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uk.po, share/po/it.po: updated Basque, Italian and Ukrainian
- files
-
- * share/po/eu.po: updated Basque file
- updated Basque, Italian and Ukrainian files
-
- * share/po/nl.po: updated Dutch file
-
-2003/09/22 François Pons <fpons at mandrakesoft.com>
-
- * install_steps.pm: avoid mounting partitions in recovery mode.
-
- * network/netconnect.pm: make sure module are loaded only during
- installation.
-
- * install2.pm: keep use_existing_root for recovery (behaviour changed
- later)
-
- * pkgs.pm: simplified code.
- use kernel-i686 or kernel-enterprise as other kernel.
-
-2003/09/22 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: fix error message
-
- * detect_devices.pm: dmi doesn't detect ht, but acpi does, so use it
-
-2003/09/22 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Bug 5916, all users overrides individual
- selection in wizard.
-
-2003/09/22 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: simplified code.
- use kernel-i686 or kernel-enterprise as other kernel.
-
- * network/netconnect.pm: make sure module are loaded only during
- installation.
-
- * install2.pm: keep use_existing_root for recovery (behaviour changed
- later)
-
- * install_steps.pm: avoid mounting partitions in recovery mode.
-
-2003/09/22 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: fix error message
-
- * detect_devices.pm: dmi doesn't detect ht, but acpi does, so use it
-
-2003/09/22 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: try to follow what is wrong when requiring
- multiple cds.
-
- * install_steps.pm: avoid mounting partitions in recovery mode.
- avoid urpmi source in oem to use cdrom (we now use disk instead,
- avoiding
- supermount problems).
-
- * pkgs.pm: simplified code.
- use kernel-i686 or kernel-enterprise as other kernel.
-
- * network/network.pm: simplified perl writing, make sure bool2yesno has a
- chance to be called for MII_NOT_SUPPORTED
- fixed strange perl writing sense less...
-
- * install2.pm: keep use_existing_root for recovery (behaviour changed
- later)
-
- * network/netconnect.pm: make sure module are loaded only during
- installation.
- try loading boot kernel modules before trying to start internet
- connection...
-
-2003/09/22 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: dmi doesn't detect ht, but acpi does, so use it
-
- * fs.pm: fix error message
-
- * rescue/tree/etc/oem-all:
- - fix typo
- - add CVS Id
-
-2003/09/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/fa.po, share/po/eu.po, share/po/bs.po,
- share/po/zh_CN.po, share/po/pt_BR.po, share/po/it.po: updated Bosnian,
- Basque, Farsi, Italian, Portuguese and Chinese files
-
-2003/09/21 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: allowing consolefonts to be ungzip'ed (adapting to new
- console-tools) (thanks to Mark Draheim)
-
-2003/09/20 keld
-
- * share/po/da.po: Updates
- soft/ftw/po/da.po gi/perl-install/share/po/da.po
-
-2003/09/19 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: switch the other way too
- switch to kdebase-kdm while the reboot options aren't fixed
-
-2003/09/19 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem-all: updated with oem
- fixed too many files copied.
-
- * rescue/tree/etc/oem: fixed severe bug of directory not created.
- fixed too many files copied.
-
-2003/09/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/is.po: updated Icelandic file
-
- * share/po/vi.po, share/po/sv.po, share/po/de.po, share/po/pt_BR.po:
- updated German, Brazilian, Swedish and Vietnamese files
-
-2003/09/19 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: next FreeWnn is not a naughtyServers anymore
- final update naughtyServers for 9.2
-
-2003/09/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-16mdk
-
- * standalone/drakconnect: fix the fix
- fix #5825 (hostname set as ARRAY(0x...))
-
-2003/09/19 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: do not install lisa by default (reduce to 3)
-
-2003/09/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/is.po: updated Icelandic file
-
- * share/po/pl.po, share/po/hu.po, share/po/cs.po, share/po/pt_BR.po,
- share/po/zh_TW.po, share/po/fi.po, share/po/ja.po, share/po/az.po:
- updated Azeri, Czech, Finnish, Hungarian, Japanese, Polish,
- Brazilian and Chinese files
-
-2003/09/19 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: next FreeWnn is not a naughtyServers anymore
- final update naughtyServers for 9.2
-
-2003/09/18 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last license message update
-
-2003/09/18 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/18 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c, mdk-stage1/disk.c: close file descriptors
-
-2003/09/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
-2003/09/18 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: update naughtyServers
-
-2003/09/18 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/09/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: one more typo fix
- typo fix
- 9.2-15mdk
-
-2003/09/18 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last license message update
-
-2003/09/18 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add kdemultimedia-common to allow kaudiocreator to work
-
-2003/09/18 François Pons <fpons at mandrakesoft.com>
-
- * share/rpmsrate: added kdeutils in rpmsrate to help upgrading it.
-
-2003/09/18 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/probing.c, mdk-stage1/disk.c: close file descriptors
-
-2003/09/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/sq.po: updated Albanian file
- updated pot file
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
-
- * share/po/eo.po, share/po/da.po, share/po/uz@Cyrl.po, share/po/sl.po,
- share/po/sv.po, share/po/hu.po, share/po/fa.po, share/po/de.po,
- share/po/sr@Latn.po, share/po/ga.po, share/po/it.po, share/po/cy.po,
- share/po/wa.po, share/po/vi.po, share/po/fi.po, share/po/ru.po,
- share/po/gl.po, share/po/af.po, share/po/ar.po, share/po/pl.po,
- share/po/pt_BR.po, share/po/lt.po, share/po/el.po, share/po/zh_CN.po,
- share/po/id.po, share/po/eu.po, share/po/sr.po, share/po/ja.po,
- share/po/be.po, share/po/uk.po, share/po/hr.po, share/po/th.po,
- share/po/nl.po, share/po/ca.po, share/po/DrakX.pot, share/po/bg.po,
- share/po/lv.po, share/po/ta.po, share/po/he.po, share/po/ro.po,
- share/po/fr.po, share/po/ko.po, share/po/bs.po, share/po/mt.po,
- share/po/sk.po, share/po/es.po, share/po/tr.po, share/po/az.po,
- share/po/is.po, share/po/ms.po, share/po/uz.po, share/po/cs.po,
- share/po/pt.po, share/po/zh_TW.po, share/po/tg.po: updated pot file
-
-2003/09/18 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: update naughtyServers
-
- * modules.pm: don't "probeall scsi_hostadapter usb-storage" (as requested
- by flepied and planel)
-
- * install_steps_gtk.pm: the install package dialog box must be explictly
- destroyed when quitting
- installation (esp. this occurs when answering "No" to "There was an
- error
- installing packages")
- rationale: the $w (created with ugtk2->new) is not reference counted
- correctly
- (it was already workarounded when leaving installPackages the normal
- way)
-
-2003/09/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-15mdk
-
- * install_steps_interactive.pm: fix slot number when configuring sound
- cards
-
- * harddrake/sound.pm: prevent some obscure crash at install time
- when installing, remember the new sound driver so that the user isn't
- confused if he ever want to configure it again
-
-2003/09/18 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last license message update
-
-2003/09/18 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add kdemultimedia-common to allow kaudiocreator to work
-
-2003/09/18 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem-all: updated with oem
-
- * share/rpmsrate: added kdeutils in rpmsrate to help upgrading it.
-
- * rescue/tree/etc/oem: fixed for %{ARCH} used in hdlists.
-
-2003/09/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/bs.po, share/po/zh_TW.po, share/po/pt_BR.po,
- share/po/is.po, share/po/tr.po, share/po/sr@Latn.po, share/po/az.po,
- share/po/ta.po, share/po/ro.po, share/po/ga.po, share/po/eu.po,
- share/po/cy.po, share/po/fa.po, share/po/tg.po, share/po/ar.po,
- share/po/ru.po, share/po/el.po, share/po/lt.po, share/po/it.po,
- share/po/de.po, share/po/pt.po, share/po/hr.po, share/po/uz.po,
- share/po/ko.po, share/po/ca.po, share/po/be.po, share/po/hu.po,
- share/po/sv.po, share/po/fr.po, share/po/bg.po, share/po/lv.po,
- share/po/uz@Cyrl.po, share/po/sl.po, share/po/pl.po, share/po/ms.po,
- share/po/ja.po, share/po/eo.po, share/po/nl.po, share/po/mt.po,
- share/po/nb.po, share/po/vi.po, share/po/wa.po, share/po/sk.po,
- share/po/DrakX.pot, share/po/fi.po, share/po/sr.po, share/po/th.po,
- share/po/he.po, share/po/da.po, share/po/gl.po, share/po/es.po,
- share/po/af.po, share/po/id.po: updated pot file
-
- * install_messages.pm: paragraph about patents was not tagged as
- translatable; added N( )
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/Makefile: Arabic and Farsi po files not used at install, as
- there
- isn't available font during install
-
- * share/po/sq.po: updated Albanian file
- updated pot file
-
- * share/po/cs.po, share/po/uk.po: updated pot file
- updated Czech and Ukrainian files
-
-2003/09/18 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: update naughtyServers
-
- * share/po/Makefile, Makefile: don't remove some po's from drakxtools,
- only from install
- (ar/fa disabled because not working at install, ga/sl not translated
- enough)
-
- * install_steps.pm: sanitize ld.so.conf *before* calling ldconfig
-
- * standalone/drakboot: ensure update_bootloader_label() won't break when
- called in text interactive
- (hint: in that case, $boot_label is unset)
-
- * bootloader.pm:
- - fix grub/menu.lst -> lilo.conf
- - cleanup
-
- * install_steps_gtk.pm: the install package dialog box must be explictly
- destroyed when quitting
- installation (esp. this occurs when answering "No" to "There was an
- error
- installing packages")
- rationale: the $w (created with ugtk2->new) is not reference counted
- correctly
- (it was already workarounded when leaving installPackages the normal
- way)
-
- * modules.pm: don't "probeall scsi_hostadapter usb-storage" (as requested
- by flepied and planel)
-
-2003/09/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-15mdk
-
- * install_steps_interactive.pm: fix slot number when configuring sound
- cards
-
- * harddrake/sound.pm: prevent some obscure crash at install time
- when installing, remember the new sound driver so that the user isn't
- confused if he ever want to configure it again
-
-2003/09/17 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: fresh updates
-
-2003/09/17 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakhelp:
- - replace mdklaunchhelp by konqueror
-
- * standalone/drakbug:
- - drakhelp will load online drakbug help file
-
-2003/09/17 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * install_steps.pm: remove deprecated function call (thanks to guillaume
- 'eagle eye' Cottenceau)
-
-2003/09/17 François Pons <fpons at mandrakesoft.com>
-
- * install2.pm: make sure use_existing_root is not set.
-
- * install_steps.pm: moved update-menu after installation of oem-theme.rpm
- allow exit code of detached process to be seen.
- fixed closing of rpmdb directly in pkgs
- install urpmi before update-menus is called.
- fixed to close rpm db whenever possible.
-
- * pkgs.pm: make always sure rpmdb is closed before attempting
- installation.
-
-2003/09/17 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm, install_steps.pm: treat C encoding specially when computing
- utf8 flag, it should not trigger utf8 set by itself
-
-2003/09/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_TW.po: removed duplicate entry
- Completed a translation
- s:country:country/region:
- updated Italian, Brazilian and Chinese files
-
- * share/po/it.po, share/po/pt_BR.po: updated Italian, Brazilian and
- Chinese files
-
- * share/po/wa.po, lang.pm: Added "English (Ireland)" choice;
- make Russian encoding compatible with Ukrainian (choosin 'ru' and 'uk'
- languages doesn't force utf-8 but keeps koi8)
-
- * pixmaps/langs/lang-en_IE.png: readded with binary flag
- removed binary file
- Added "English (Ireland)" choice;
- make Russian encoding compatible with Ukrainian (choosin 'ru' and 'uk'
- languages doesn't force utf-8 but keeps koi8)
-
-2003/09/17 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/interactive.pm: don't display a wait_message together with the
- write_partitions() dialog
-
- * fs.pm, partition_table.pm: ensure that a number is not written as the
- type in fstab
-
- * any.pm: add /usr/lib/qt3/lib (and sometimes /usr/lib/qt3/lib64) in
- ld.so.conf
- (needed for upgrade where package renaming can cause this to disappear)
-
- * install_steps_interactive.pm: cancel in setRootPassword means "No
- password", not cancel
-
- * pkgs.pm: don't warn about FreeWnn being an open port (gc will try to
- only open it to localhost)
-
- * fsedit.pm: when the checking the mount point is not already used, don't
- take into account current partition
-
- * interactive/gtk.pm: fix ugliness: don't display $advanced_pack when
- there are no @widgets_advanced
- (esp. since $advanced_pack is now in its own scrolled window)
-
-2003/09/17 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed "Configure CUPS" function of printerdrake adding
- a second
- "<Location />...</Location>" in /etc/cups/cupsd.conf instead of
- replacing the existing one (fix of Titi's newly introduced bug from
- May 19 14:17:58 2003 UTC).
-
-2003/09/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * handle_configs.pm (comment_directive) fix it
-
- * drakxtools.spec: 9.2-14mdk
- we still are 13mdk
- do not log changes that got reversed between two releases
- 9.2-13mdk
-
-2003/09/17 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: force mandrake_doc-en if language is not fr, it or es
-
-2003/09/17 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: fresh updates
-
-2003/09/17 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/17 François Pons <fpons at mandrakesoft.com>
-
- * install_steps.pm: fixed to close rpm db whenever possible.
-
-2003/09/17 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps.pm, lang.pm: treat C encoding specially when computing
- utf8 flag, it should not trigger utf8 set by itself
-
-2003/09/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/nb.po, share/po/et.po, share/po/cy.po,
- share/po/hu.po: updated Welsh, Estonian, Hungarian, Norwegian and
- Portuguese files
-
-2003/09/17 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm: fix ugliness: don't display $advanced_pack when
- there are no @widgets_advanced
- (esp. since $advanced_pack is now in its own scrolled window)
-
- * any.pm: add /usr/lib/qt3/lib (and sometimes /usr/lib/qt3/lib64) in
- ld.so.conf
- (needed for upgrade where package renaming can cause this to disappear)
- run nisdomainname et ypbind so that nis is correctly set up *now*, not
- at next reboot.
- TODO: also do it during install since nis can be useful to resolve
- domain names. Not done because 9.2-RC
-
- * fsedit.pm: when the checking the mount point is not already used, don't
- take into account current partition
-
- * install_steps_interactive.pm: cancel in setRootPassword means "No
- password", not cancel
-
- * standalone/drakauth: display errors occuring in
- any::set_authentication()
- (esp. for "Can't use broadcast with no NIS domain")
-
- * diskdrake/interactive.pm: don't display a wait_message together with the
- write_partitions() dialog
-
- * fs.pm, partition_table.pm: ensure that a number is not written as the
- type in fstab
-
-2003/09/17 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/09/16 François Pons <fpons at mandrakesoft.com>
-
- * install_steps.pm: make sure / and /usr are formatted in recovery mode.
-
-2003/09/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sl.po, share/po/fa.po, share/po/sr.po, share/po/ar.po,
- share/po/sr@Latn.po, share/po/nl.po, share/po/es.po, share/po/eo.po,
- share/po/th.po, share/po/uz@Cyrl.po, share/po/vi.po, share/po/hu.po,
- share/po/wa.po, share/po/eu.po, share/po/tr.po, share/po/ro.po,
- share/po/sq.po, share/po/et.po, share/po/is.po, share/po/zh_CN.po,
- share/po/he.po, share/po/ca.po, share/po/be.po, share/po/lt.po,
- share/po/ja.po, share/po/ms.po, share/po/da.po, share/po/nb.po,
- share/po/bs.po, share/po/cs.po, share/po/el.po, share/po/pt_BR.po,
- share/po/az.po, share/po/cy.po, share/po/uz.po, share/po/hr.po,
- share/po/ru.po, share/po/bg.po, share/po/gl.po, share/po/ko.po,
- share/po/mt.po, share/po/zh_TW.po, share/po/uk.po, share/po/tg.po,
- share/po/sv.po, share/po/pl.po, share/po/af.po, share/po/pt.po,
- share/po/ta.po, share/po/fr.po, share/po/fi.po, share/po/id.po,
- share/po/de.po, share/po/sk.po, share/po/ga.po, share/po/it.po,
- share/po/lv.po: updated pot files
-
-2003/09/16 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: pixelization
-
-2003/09/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix typos
-
- * harddrake/sound.pm: fix #5403:
- - make sure to use OptionMenu instead of Combo boxes
- - move help into a tooltip
-
-2003/09/16 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: fix firmware testing at installation
-
-2003/09/16 François Pons <fpons at mandrakesoft.com>
-
- * install_steps.pm: make sure / and /usr are formatted in recovery mode.
-
-2003/09/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/help-it.pot, share/po/help-de.pot, share/po/help-es.pot,
- share/po/help-ru.pot, share/po/DrakX.pot: updated pot files
-
-2003/09/16 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * share/rpmsrate: wireless packages fix
-
- * network/adsl.pm: fix firmware testing at installation
-
-2003/09/16 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_interactive.pm: added question to ask for recovering the
- system in recover mode.
-
- * install_any.pm: removing update media tag (except for update medium)
-
- * install2.pm: made mouse, keyboard, packages selection, timezone and
- security selection automatic...
- / and /usr should be formatted, keep default for installation.
- fixed stupid typo preventing mouse modules to be loaded.
- added automatic steps in recovery mode.
- disable recovery mode if recovery.cfg file has not been read
- successfully.
-
-2003/09/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/help-ru.pot, share/po/help-de.pot, share/po/DrakX.pot,
- share/po/help-it.pot, share/po/help-es.pot: updated pot files
-
-2003/09/16 Pixel <pixel at mandrakesoft.com>
-
- * interactive/gtk.pm: Gtk2::CheckButton->new is
- Gtk2::CheckButton->new_with_mnemonic, it's better to use
- Gtk2::CheckButton->new_with_label (bug #5728)
-
-2003/09/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * interactive/gtk.pm: fix expert mode resulting in advanced setting being
- displayed by
- default but label still being "advanced" instead of "basic"
-
- * drakxtools.spec: one more fix
- 9.2-12mdk
-
-2003/09/16 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add minichinput in X 5
-
-2003/09/15 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: initialize $adsl, fix #5674 and pppoe.conf problems
- fix #5056 (mostly workaround as kernel is frozen)
-
- * network/netconnect.pm: net install autodetection fix
-
-2003/09/15 François Pons <fpons at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: avoid using other depth than 24 for
- fglrx in automatic mode.
-
- * standalone.pm: improved speed by invoking once `rpm -qa` instead of 4.
-
-2003/09/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/is.po, share/po/fr.po, share/po/fi.po: updated Finnish, French
- and Icelandic files
-
- * share/po/help-ru.pot, share/po/help-fr.pot, share/po/help-it.pot,
- share/po/help-de.pot, share/po/help-es.pot: put back previous versions
- of help-*.pot files to be in synch with help.pm
-
-2003/09/15 Pixel <pixel at mandrakesoft.com>
-
- * run_program.pm: better logging of killed runaway processes
-
- * Xconfig/main.pm: configure_resolution() must return 'config_changed'
- when a new resolution is chosen
-
- * lang.pm: use locale_special when $::prefix is set (so that X test is
- i18n)
-
- * any.pm: set ICEAUTHORITY for "gnome-session-save --kill"
- (it would be better to set it in usermode, but it works :)
-
- * standalone/XFdrake:
- - call any::ask_window_manager_to_logout() after forking so that exit
- doesn't happen before it is done
- (otherwise it can loose Xauth access)
- - fix checking config_changed (it can be string 'config_changed' or
- the new $raw_X)
-
- * partition_table.pm: associate partition table 0xeb (BeOS) with
- filesystem befs (part of bug #5523)
-
-2003/09/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbug: New, improved, compact code, courtesy of Thierry.
- Updates for stable release bug submission to anthill (vdanen)
-
-2003/09/15 Till Kamppeter <till at mandrakesoft.com>
-
- * share/rpmsrate: Added usbutils to the packages needed for installation.
- This package
- is needed for setting up the HP PSC 1xxx and OfficeJet 4xxx with HPOJ.
-
- * printer/main.pm: Small fix on LIDIL workaround.
- Put device identity info into the HPOJ config file also when HPOJ
- configuration was not verified (LIDIL devices).
- Added workaround to make HP PSC 1xxx and OfficeJet 4xxx really working.
-
-2003/09/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/sound.pm: fix #5488: do not overwrite current driver if it's a
- viable driver for
- the current sound card
- show the current driver too (being preselected) so that users do not
- get confused
-
- * drakxtools.spec: typo fixes
-
- * interactive/gtk.pm: fix hidden or cutted buttons (#1919, #2364, #2705,
- #3667, ...)
-
-2003/09/15 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: fix #5056 (mostly workaround as kernel is frozen)
-
-2003/09/15 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/15 François Pons <fpons at mandrakesoft.com>
-
- * c/Makefile: fixed possible typo...
-
- * standalone.pm: improved speed by invoking once `rpm -qa` instead of 4.
-
-2003/09/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * help.pm: reverted to previous version, to avoid huge strings break at
- this stage
-
- * share/po/pt.po, share/po/it.po, share/po/af.po, share/po/hu.po,
- share/po/mt.po: updated Afrikaans, Hungarian, Italian, Maltese and
- Portuguese files
-
-2003/09/15 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: use locale_special when $::prefix is set (so that X test is
- i18n)
-
- * Xconfig/main.pm: configure_resolution() must return 'config_changed'
- when a new resolution is chosen
-
- * run_program.pm: better logging of killed runaway processes
-
- * diskdrake/interactive.pm: fix growing ext2/ext3 partitions
-
- * standalone/drakupdate_fstab: fix typo (pixel sux)
-
- * any.pm: set ICEAUTHORITY for "gnome-session-save --kill"
- (it would be better to set it in usermode, but it works :)
- when "Back" is pressed, restore the list of entries in bootloader (bug
- #5680)
-
- * standalone/XFdrake:
- - call any::ask_window_manager_to_logout() after forking so that exit
- doesn't happen before it is done
- (otherwise it can loose Xauth access)
- - fix checking config_changed (it can be string 'config_changed' or
- the new $raw_X)
-
- * partition_table.pm: associate partition table 0xeb (BeOS) with
- filesystem befs (part of bug #5523)
-
-2003/09/15 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: drakTermServ -
- translation issues (Arpad Biro), fix help text format
- drakbackup - translation issues (Arpad Biro)
- fix user, cron misbehavior (Keld Jørn Simonsen)
-
-2003/09/15 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Added support for user-mode-only HPOJ devices
- (HP PSC 1xxx and
- OfficeJet 4xxx). Fixes bug #5641.
-
- * printer/main.pm: perl_checker fix.
- Added support for user-mode-only HPOJ devices (HP PSC 1xxx and
- OfficeJet 4xxx). Fixes bug #5641.
-
-2003/09/14 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: add a warning for / on LVM: "You may not be able to install
- lilo (since lilo doesn't handle a LV on multiple PVs)"
-
-2003/09/14 Warly <warly at mandrakesoft.com>
-
- * standalone/service_harddrake: stop bootsplash silent mode if something
- is detected
-
-2003/09/14 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last updates, fixed some typos
-
-2003/09/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po, share/po/he.po, share/po/pt_BR.po, share/po/uk.po,
- share/po/fa.po, share/po/sq.po: updated Farsi, Hebrew, Hungarian,
- Brazilian, Albanian and Ukrainian files
-
-2003/09/14 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: add a warning for / on LVM: "You may not be able to install
- lilo (since lilo doesn't handle a LV on multiple PVs)"
-
-2003/09/13 nplanel
-
- * install2.pm: back to i810fb xcon=4 (bad docummented option)
-
-2003/09/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: put quotes around the XIM_PROGRAM values that use spaces
-
- * share/po/it.po, share/po/ro.po, share/po/he.po, share/po/pt_BR.po,
- share/po/sk.po, share/po/bg.po: updated Bulgarian, Hebrew, Italian,
- Brazilian and Romanian files;
- fixed syntax errors in Slovak file
-
- * share/po/zh_CN.po, share/po/cy.po: updated Welsh and Chinese files
-
-2003/09/13 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/09/12 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers: Always install a termunal emulator and don't install
- GNOME by default
-
- * standalone/icons/wiz_logdrake.png, standalone/icons/wiz_drakgw.png,
- standalone/icons/wiz_scannerdrake.png,
- standalone/icons/wiz_drakconnect.png,
- standalone/icons/wiz_default_up.png, standalone/icons/wiz_firewall.png,
- standalone/icons/wiz_printerdrake.png,
- standalone/icons/drakfont.620x57.png: Update
-
-2003/09/12 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm:
- - dropped sub load_firmware_floppy
- - handle windows firmware's copy
-
- * network/tools.pm: added sub copy_firmware, sub use_windows(), sub
- use_floppy
- firmware copy works from floppy and windows/winnt
-
-2003/09/12 François Pons <fpons at mandrakesoft.com>
-
- * share/rpmsrate: fixed fatal error in rpmsrate.
-
-2003/09/12 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: fix garbled font when asking UTF8 in text install
-
- * c/Makefile.PL, c/stuff.xs.pl: stuff doesn't contain gtk stuff anymore
-
- * tools/make_mdkinst_stage2: die if cp failed
-
- * share/themes-galaxy.rc: fix progressbar color (should be blue)
-
-2003/09/12 keld
-
- * share/po/da.po: corrections
- gi/perl-install/share/po/da.po
- corrections
- soft/wizard_perl/po/da.po gi/perl-install/share/po/da.po
- updates
- soft/menu-messages/da.po soft/ftw/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/09/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po, share/po/nb.po, share/po/vi.po: updated Norwegian,
- Swedish and Vietnamese files
-
- * share/po/cs.po: updated Czech file
-
- * share/po/az.po: updated Azeri file
-
-2003/09/12 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: hd as default daemon media
-
-2003/09/12 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/09/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: fix #5586 (profiles with spaces in name)
-
- * drakxtools.spec: 9.2-11mdk
-
-2003/09/12 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2003/09/12 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Fix gnome-audio entry
- Update
-
-2003/09/12 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translation
-
-2003/09/12 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: removed nautilus-gtkhtml
- added rnboifd and cm2020 packages
-
-2003/09/12 François Pons <fpons at mandrakesoft.com>
-
- * share/rpmsrate: fixed fatal error in rpmsrate.
-
-2003/09/12 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/themes-galaxy.rc: fix progressbar color (should be blue)
-
-2003/09/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/uz.po, share/po/nb.po, share/po/id.po, share/po/da.po,
- share/po/tr.po, share/po/mt.po, share/po/tg.po, share/po/sr.po,
- share/po/ru.po, share/po/sl.po, share/po/hr.po, share/po/uk.po,
- share/po/ro.po, share/po/af.po, share/po/he.po, share/po/ms.po,
- share/po/el.po, share/po/wa.po, share/po/uz@Cyrl.po, share/po/ta.po,
- share/po/az.po, share/po/ja.po, share/po/de.po, share/po/lt.po,
- share/po/cy.po, share/po/ga.po, share/po/is.po, share/po/vi.po,
- share/po/pl.po, share/po/zh_TW.po, share/po/fr.po, share/po/sv.po,
- share/po/nl.po, share/po/ar.po, share/po/lv.po, share/po/sq.po,
- share/po/pt_BR.po, share/po/zh_CN.po, share/po/th.po, share/po/hu.po,
- share/po/es.po, share/po/eo.po, share/po/sk.po, share/po/be.po,
- share/po/ko.po, share/po/fa.po, share/po/cs.po, share/po/gl.po,
- share/po/sr@Latn.po, share/po/pt.po, share/po/ca.po, share/po/bg.po,
- share/po/it.po, share/po/DrakX.pot, share/po/fi.po, share/po/bs.po,
- share/po/eu.po: updated pot file
-
-2003/09/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix #5586 (netprofile package still need be
- fixed)
-
-2003/09/11 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps_gtk.pm: don't display a watch when slow things because due
- to the
- large number of gtkflush(), the ask_ok_cancel appears
- before its Gtk->main is called, hence clicking too fast
- will call Gtk->main_quit before Gtk->main, but the dialog
- doesn't disappear; then on the next click on ok/cancel,
- the call to another Gtk->main_quit will lead to two
- Gtk->main being exited, hence destroying the ok/cancel
- dialog but alors the main window (choose of individual
- packages)
-
- * ugtk2.pm: don't pack_end two times a button, this causes a Gtk Critical
- and we never know what can happen after that :/
-
-2003/09/11 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/test.pm, ugtk2.pm: use center_always for popped windows (if
- transient is not used), and force centering in Xconfig test
-
- * lang.pm: move configuring kdmrc to lang::write so that it is done in
- localedrake
- don't configure kde config files when they are not present
- (otherwise minimal install followed by urpmi kde gives a badly
- configured kde)
-
- * c/Makefile.PL: libXext seems to be needed, i don't know why...
-
- * install_steps.pm: move configuring kdmrc to lang::write so that it is
- done in localedrake
-
-2003/09/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * modules/interactive.pm: if some module has no parameter, instead of not
- displaying the config
- window, show that there's no parameters to configure
- translate one more string
-
- * standalone/harddrake2: fix infamous #4136
- rationale: our own SIG_CHLD handler intercept the child death after
- run_program's waitpid() got interrupted by the signal but before it
- get rescheduled by the kernel (at which stage the child it wait for
- does not exists anymore)
-
- * standalone/drakfont: fix #5571
-
- * share/po/fr.po: help making printerdrake icon bar be shorter (#5282
- again)
-
-2003/09/11 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: one fix
- typo fixes
-
-2003/09/11 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Add 5 LOCALES"zh_CN" miniChinput (#4408)
-
-2003/09/11 Florin Grad <florin at mandrakesoft.com>
-
- * network/shorewall.pm: add the network interface window as in the
- drakgw's case
-
- * standalone/drakgw: silly me, I forgot the debug messages
- some Cancel interface fix
-
-2003/09/11 François Pons <fpons at mandrakesoft.com>
-
- * bootloader.pm: protected restore entry to be only visible if restore
- option added during boot.
-
- * install2.pm: added restore option to allow restore entry to be created
- (refused by default)
-
- * any.pm: fixed to use meta_class desktop instead of virtual discovery
- (mapped to desktop).
-
- * Xconfig/resolution_and_depth.pm: fixed depth to 24 when using driver
- fglrx (it won't work unless 24 bits)
-
- * install_steps.pm: simplified oem theme generation, now use oem-theme.rpm
- wait for processes that need to be correctly finished before.
-
- * run_program.pm: added detach option to handle detached process running
- (for update-menus).
-
-2003/09/11 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_gtk.pm: inactivate antialias in VGA16 because it makes fonts
- look worse
-
- * mdk-stage1/disk.c: fix recovery behaviour thx to francois comments
-
- * any.pm: don't use images for language choice in vga16, it's too ugly
-
-2003/09/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz@Cyrl.po, share/po/uz.po, share/po/cy.po: updated Welsh and
- Uzbek files
-
- * share/po/lt.po, share/po/he.po, share/po/wa.po, share/po/ta.po,
- share/po/tg.po, share/po/ms.po, share/po/sl.po, share/po/eo.po: updated
- po files (country names strings merged from drakfw)
-
- * share/po/it.po: updated Italian file
- updated Italian file
-
-2003/09/11 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: move configuring kdmrc to lang::write so that it is done in
- localedrake
- don't configure kde config files when they are not present
- (otherwise minimal install followed by urpmi kde gives a badly
- configured kde)
-
- * Xconfig/test.pm, ugtk2.pm: use center_always for popped windows (if
- transient is not used), and force centering in Xconfig test
-
- * install_steps.pm: move configuring kdmrc to lang::write so that it is
- done in localedrake
-
- * c/Makefile.PL: libXext seems to be needed, i don't know why...
-
-2003/09/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake: always display the log domain names in the same
- order, that is in
- english (not l10n) alphabetic order
-
- * standalone/drakconnect: do not set hostname if there's a dynamic
- interface
-
- * standalone/drakperm: remove debugging assertion
- display "the current level is X" instead of "the current level is level
- X"
-
-2003/09/10 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated one string
-
-2003/09/10 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: 2 typo fixes
- Updated
-
-2003/09/10 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate, share/compssUsers.desktop: Update
-
-2003/09/10 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Don't install nautilus-gtkhtml by default
-
-2003/09/10 François Pons <fpons at mandrakesoft.com>
-
- * install2.pm: make sure mouse modules are loaded before using them
- (usefull for defcfg or recovery).
- save recovery file if disk installation.
- take recovery option into account.
-
- * mouse.pm: fixed the fix of fpons trick...
- fixed the fpons trick (which was false moreover)
- added load_modules to load mouse module according to configuration.
-
- * bootloader.pm: restore entry is a recovery entry.
- restore entry shouldn't have reference of vga=... in append, moved to
- vga.
-
- * network/adsl.pm: added sagem support for dhcp (as used by Free
- degroupped ;-))
-
- * standalone/XFdrake, install_steps_interactive.pm: added nplanel patch
- for ATI proprietary drivers.
-
- * Xconfig/card.pm: fixed perl_checker fixes.
- added nplanel patch for ATI proprietary drivers.
-
-2003/09/10 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * Xconfig/test.pm: clean
- we don't have .jpg loader in install, file needs to be in .png
- (mandrake_desk 9.2-8mdk)
-
- * rescue/tree/etc/issue, mdk-stage1/Makefile: 9.2
-
- * mdk-stage1/stage1.c, mdk-stage1/stage1.h, mdk-stage1/disk.h,
- mdk-stage1/automatic.h, mdk-stage1/tools.c, mdk-stage1/disk.c: recovery
-
-2003/09/10 nplanel
-
- * Xconfig/card.pm: fixup default fglrx config to be included in Device
- Section. thanks pixel
-
-2003/09/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pl.po, share/po/et.po, share/po/pt_BR.po, share/po/nb.po,
- share/po/az.po, share/po/cs.po, share/po/zh_CN.po, share/po/hu.po:
- updated Azeri, Czech, Estonian, Hungarian, Brazilian and Chinese files
-
-2003/09/10 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: no more "dos" label in bootloader (it seems WinXP use the
- "DOS FAT16" for fat partitions)
-
-2003/09/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-10mdk
-
- * standalone/drakperm:
- - do not comply on filter change (system, user or system & user)
- - default to "system & user" by default
- - show customized rules after system ones since these are managed once
- system ones get applied
- - add new rules to end of list
-
- * network/netconnect.pm: follow std explanations policy
-
- * standalone/drakedm: follow std explanations policy
- add higher level explanations
-
-2003/09/09 Daouda Lo <daouda at mandrakesoft.com>
-
- * any.pm:
- - userdrake is in /usr/sbin/ (#5447)
-
-2003/09/09 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm: profile is 'default' if no configuration file
- found
-
-2003/09/09 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/09 François Pons <fpons at mandrakesoft.com>
-
- * install_messages.pm: fixed reference to 9.1 errata, (now
- http://www.mandrakelinux.com/en/92errata.php3).
-
- * standalone/drakautoinst: try again if no floppy (or error during
- creation of floppy)
-
- * bootloader.pm: avoid lilo-graphic for ProSavageDDR card as this card
- seems to report bad window size.
-
-2003/09/09 keld
-
- * share/po/da.po: updates
- soft/GtkMdkWidgets/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/de.po: updated German file
- updated pot file
-
- * share/po/help-es.pot, share/po/pt_BR.po, share/po/nb.po, share/po/eu.po,
- share/po/ta.po, share/po/help-de.pot, share/po/it.po, share/po/ja.po,
- share/po/uz.po, share/po/tr.po, share/po/et.po, share/po/sl.po,
- share/po/fr.po, share/po/DrakX.pot, share/po/uk.po,
- share/po/help-it.pot, share/po/nl.po, share/po/af.po, share/po/cs.po,
- share/po/he.po, share/po/wa.po, share/po/bg.po, share/po/ru.po,
- share/po/be.po, share/po/ms.po, share/po/pl.po, share/po/vi.po,
- share/po/help-ru.pot, share/po/ga.po, share/po/cy.po, share/po/ca.po,
- share/po/eo.po, share/po/th.po, share/po/sr.po, share/po/sk.po,
- share/po/az.po, share/po/da.po, share/po/sq.po, share/po/ar.po,
- share/po/mt.po, share/po/el.po, share/po/uz@Cyrl.po, share/po/tg.po,
- share/po/hr.po, share/po/sv.po, share/po/pt.po, share/po/lt.po,
- share/po/gl.po, share/po/fa.po, share/po/es.po, share/po/zh_TW.po,
- share/po/fi.po, share/po/zh_CN.po, share/po/lv.po, share/po/ko.po,
- share/po/bs.po, share/po/sr@Latn.po, share/po/ro.po, share/po/id.po,
- share/po/is.po, share/po/hu.po: updated pot file
-
-2003/09/09 Pixel <pixel at mandrakesoft.com>
-
- * mouse.pm: write "MOVE YOUR WHEEL!" only for ps2 mice
-
- * ugtk2.pm: remove too verbose _XSetInputFocus log
-
- * modules.pm: increase sleep time after modprobing usb-uhci/usb-ohci
- (otherwise USB mouse may be undetected)
-
- * standalone/drakupdate_fstab: re-enable supermount
-
- * standalone/diskdrake, any.pm: ensure userdrake works when diskdrake
- --fileshare is embedded or run through kdesu
-
- * install_steps_interactive.pm: don't ask security level when upgrading
-
- * share/po/help-es.pot, share/po/help-fr.pot, share/po/help-de.pot,
- share/po/help-ru.pot, help.pm, share/po/help-it.pot: update from xml
- help
-
-2003/09/09 Till Kamppeter <till at mandrakesoft.com>
-
- * scanner.pm: Fixed functions for scanner database (ScannerDB) generation.
-
- * printer/printerdrake.pm: Fixed bug #5423: Some option settings were not
- be recognized or changed.
-
-2003/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake: fix #5448 (infinite entries)
-
- * standalone/drakxtv: install xawtv if needed
-
- * standalone/drakconnect: fix window size in when non embedded & non
- wizard
-
- * share/po/fr.po: fix drakboot layout
-
- * interactive/gtk.pm: fix #5040 (too small drakboot's window width)
-
- * standalone/drakboot: fix default size without draksplash
-
-2003/09/09 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/ta.po, share/po/ko.po, share/po/fi.po, share/po/sq.po: Fix
- s/9.1/9.2
-
-2003/09/09 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/printerdrake:
- - help call
- - reportbug via bugzilla
-
-2003/09/09 François Pons <fpons at mandrakesoft.com>
-
- * install_messages.pm: fixed reference to 9.1 errata, (now
- http://www.mandrakelinux.com/en/92errata.php3).
-
- * standalone/drakautoinst: try again if no floppy (or error during
- creation of floppy)
-
-2003/09/09 keld
-
- * share/po/da.po: updates
- soft/GtkMdkWidgets/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/uk.po, share/po/eu.po: updated Basque,
- Portuguese and Ukrainian files
-
-2003/09/09 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: don't ask security level when upgrading
-
- * mouse.pm: write "MOVE YOUR WHEEL!" only for ps2 mice
-
- * modules.pm: increase sleep time after modprobing usb-uhci/usb-ohci
- (otherwise USB mouse may be undetected)
-
- * share/po/help-it.pot, share/po/help-de.pot, share/po/help-fr.pot,
- help.pm, share/po/help-ru.pot, share/po/help-es.pot: update from xml
- help
-
-2003/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakfloppy: fix #5430: do not confuse users with debug
- messages
-
- * install_steps.pm: fix network install
-
- * standalone/drakboot: fix default size without draksplash
-
-2003/09/09 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2003/09/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po, share/po/eu.po, share/po/uk.po: updated Basque,
- Portuguese and Ukrainian files
-
-2003/09/09 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * install_steps.pm: fix network install
-
- * standalone/drakfloppy: fix #5430: do not confuse users with debug
- messages
-
-2003/09/08 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last updates
-
-2003/09/08 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/sq.po, share/po/vi.po, share/po/gl.po, share/po/ro.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/ta.po, share/po/it.po,
- share/po/ru.po, share/po/de.po, share/po/zh_CN.po, share/po/ja.po,
- share/po/ms.po, share/po/ko.po, share/po/tr.po, share/po/lv.po,
- share/po/ca.po, share/po/ga.po, share/po/el.po, share/po/he.po,
- share/po/da.po, share/po/uz.po, share/po/af.po, share/po/nb.po,
- share/po/hr.po, share/po/be.po, share/po/uz@Cyrl.po, share/po/fi.po,
- share/po/es.po, share/po/id.po, share/po/et.po, share/po/eo.po,
- share/po/sl.po, share/po/pt_BR.po, share/po/bg.po, share/po/fr.po,
- share/po/mt.po, share/po/nl.po, share/po/uk.po, share/po/tg.po,
- share/po/lt.po, share/po/th.po, share/po/pl.po, share/po/hu.po,
- share/po/sr.po, share/po/sk.po, share/po/pt.po, share/po/fa.po,
- share/po/az.po, share/po/cs.po, share/po/bs.po, share/po/is.po,
- share/po/eu.po, share/po/zh_TW.po, share/po/sr@Latn.po, share/po/wa.po,
- share/po/cy.po, share/po/ar.po: s/9\.1/9\.2/g
-
- * share/advertising/06-development.pl, share/advertising/01-thanks.pl,
- share/advertising/04-configuration.pl: Update
-
-2003/09/08 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - do not call anymore network::netconnect::save_conf
- - good set_profiles($netcnx) call
- shrink
-
- * network/nfs.pm, network/isdn.pm, network/adsl.pm, network/network.pm:
- - fix/use explanations
- - fix #5307 (firmware)
-
- * network/netconnect.pm:
- - do not call anymore network::netconnect::save_conf
- - good set_profiles($netcnx) call
- - fix/use explanations
- - fix #5307 (firmware)
-
-2003/09/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fi.po, share/po/et.po, share/po/az.po, share/po/zh_CN.po:
- updated Azeri, Estonian, Finnish and Chinese files
-
- * share/po/hu.po, share/po/eu.po: updated Basque and Hungarian files
-
- * share/po/nb.po, share/po/cy.po: updated Welsh and Norwegian files
-
-2003/09/08 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: don't warnAboutNaughtyServers when
- upgrading
-
- * standalone/diskdrake: remove obsolete code
- ~fix~ calling userdrake in "diskdrake --fileshare"
-
- * any.pm: perl_checker compliance
- ~fix~ calling userdrake in "diskdrake --fileshare"
-
- * standalone/XFdrake: Xdrakres is "XFdrake resolution" not simply
- "XFdrake"
-
- * Xconfig/resolution_and_depth.pm:
- - use OptionMenu's instead of Combo's (better looking and mcc doesn't
- like embedding combos)
- - cleanup
-
-2003/09/08 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/printerdrake: Fixed copyright notice.
-
-2003/09/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: fix current profile load in wizard mode
- increase drakconnect robustness regarding profiles managment
- - fix set_profiles() call on profiles menu user change
- - (set_profiles) consolidate netcnx->{PROFILE} setting where we call
- set_profile
-
- - (update_profiles) rely on netcnx->{PROFILE}
-
- - fix profiles list update when wizard exits
-
- * standalone/drakperm, standalone/draksec: add help buttons
-
- * network/netconnect.pm: save_conf() really is dead
-
- * drakxtools.spec: last 9.2-9mdk bits
- fix net_monitor not working as root
- 9.2-9mdk
-
- * ugtk.pm, my_gtk.pm: no more used (drakcronat just removed from distro)
- => less dependancies :-)
-
- * standalone/drakfont: fix #4964 (not being able to select directories)
-
-2003/09/08 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: last updates
-
-2003/09/08 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/printerdrake:
- - support new help call
-
-2003/09/08 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: shrink
-
- * network/network.pm, network/adsl.pm, network/isdn.pm,
- network/netconnect.pm, network/nfs.pm:
- - fix/use explanations
- - fix #5307 (firmware)
-
- * share/po/fr.po: s/Utiliserer une disquette/Utiliser une disquette/
-
-2003/09/08 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/08 François Pons <fpons at mandrakesoft.com>
-
- * install2.pm: set xcon=6 when loading i810fb module (to have console 7
- with X).
-
-2003/09/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/ru.po, share/po/lv.po, share/po/lt.po,
- share/po/ga.po, share/po/sr@Latn.po, share/po/ar.po, share/po/hu.po,
- share/po/bg.po, share/po/zh_TW.po, share/po/sl.po, share/po/mt.po,
- share/po/gl.po, share/po/DrakX.pot, share/po/cy.po, share/po/sv.po,
- share/po/uk.po, share/po/tg.po, share/po/id.po, share/po/hr.po,
- share/po/ms.po, share/po/nl.po, share/po/de.po, share/po/uz@Cyrl.po,
- share/po/is.po, share/po/fr.po, share/po/ja.po, share/po/sk.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/it.po,
- share/po/tr.po, share/po/sr.po, share/po/nb.po, share/po/be.po,
- share/po/fa.po, share/po/eu.po, share/po/da.po, share/po/ko.po,
- share/po/af.po, share/po/es.po, share/po/ro.po, share/po/pl.po,
- share/po/vi.po, share/po/bs.po, share/po/wa.po, share/po/sq.po,
- share/po/he.po, share/po/ta.po, share/po/pt.po, share/po/ca.po,
- share/po/th.po, share/po/pt_BR.po: updated pot file
-
- * share/po/az.po, share/po/zh_CN.po, share/po/et.po, share/po/fi.po:
- updated Azeri, Estonian, Finnish and Chinese files
- updated pot file
-
-2003/09/08 Pixel <pixel at mandrakesoft.com>
-
- * tools/aewm-drakx/aewm-drakx.c, install_steps_gtk.pm,
- tools/aewm-drakx/client.c, tools/Makefile, tools/aewm-drakx/aewm.h,
- tools/aewm-drakx/README, tools/aewm-drakx/misc.c, Makefile.config,
- ugtk2.pm, tools/aewm-drakx/Makefile, tools/aewm-drakx/events.c: fixing
- keyboard focus during install:
- - removed aewm-drakx which doesn't work nicely
- - fix @interactive::objects handling
- (don't push non pop_it windows, ensure destroyed windows are removed)
- - ensure XSetInputFocus is called on $::WizardWindow
-
- * Xconfig/resolution_and_depth.pm:
- - use OptionMenu's instead of Combo's (better looking and mcc doesn't
- like embedding combos)
- - cleanup
-
- * any.pm: ~fix~ calling userdrake in "diskdrake --fileshare"
-
- * standalone/XFdrake: Xdrakres is "XFdrake resolution" not simply
- "XFdrake"
-
- * fsedit.pm: fix check_mntpoint to get back error "There is already a
- partition with mount point %s\n"
-
- * install_steps_interactive.pm: don't warnAboutNaughtyServers when
- upgrading
-
- * standalone/diskdrake: remove obsolete code
- ~fix~ calling userdrake in "diskdrake --fileshare"
- use formatError to have the error message instead of SCALAR(0x....)
-
-2003/09/08 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/printerdrake: Fixed copyright notice.
- - Use a field in the $printer data structure and no a global variable
- for the expert mode.
- - Fixed bug of database not being re-read when switching between
- normal and expert mode with the new GTK2 main window.
-
- * standalone/scannerdrake: Show an error message if saned could not be
- installed.
-
- * printer/printerdrake.pm, printer/main.pm, printer/cups.pm:
- - Use a field in the $printer data structure and no a global variable
- for the expert mode.
- - Fixed bug of database not being re-read when switching between
- normal and expert mode with the new GTK2 main window.
-
-2003/09/08 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-9mdk
-
- * standalone/drakfont: fix #4964 (not being able to select directories)
-
- * ugtk.pm, my_gtk.pm: no more used (drakcronat just removed from distro)
- => less dependancies :-)
-
-2003/09/07 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: typo fix
-
-2003/09/07 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect, network/netconnect.pm:
- - $netcnx->{PROFILE} is current profile name (now scalar)
- - fix non working profiles loading/saving
- - perl_checker
-
-2003/09/07 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Fixed first-time dialog.
-
-2003/09/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-8mdk
-
- * share/po/br.po: update
-
-2003/09/06 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Update
-
-2003/09/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po, share/po/vi.po, share/po/bs.po, share/po/he.po,
- share/po/cy.po: updated Bosnian, Welsh, Hebrew, Hungarian and Vietnamese
- files
-
-2003/09/05 David Baudens <baudens at mandrakesoft.com>
-
- * pixmaps/monitor-640.png, pixmaps/monitor-2048.png,
- pixmaps/monitor-1920.png, pixmaps/monitor-1600.png,
- pixmaps/monitor-800.png, pixmaps/monitor-1280.png,
- pixmaps/monitor-1400.png, pixmaps/monitor.png, pixmaps/monitor-1152.png,
- pixmaps/monitor-1024.png: Update
-
-2003/09/05 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/network.pm: workaround messed up ppp0 configration
-
-2003/09/05 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/05 Florin Grad <florin at mandrakesoft.com>
-
- * network/network.pm, network/netconnect.pm: small fixes for drakgw and
- drakfirewall
-
-2003/09/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: add support for "variants" as explained by pablo (in uz@Cyrl
- the @Cyrl is a variant)
-
- * keyboard.pm: /me sux
- apply patch asked by pablo so that users are not confused during
- install that their chosen grp_toggle is not usable. yes it's too
- late for additional translations but it's not very important that
- this is untranslated, it's better to have it in.
-
-2003/09/05 keld
-
- * share/po/da.po: updates
- soft/control-center/po/da.po gi/perl-install/share/po/da.po
-
-2003/09/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
- * lang.pm: increazed size of Arabic font in KDE
-
- * share/po/uz.po, share/po/ru.po, share/po/zh_CN.po, share/po/uz@Cyrl.po,
- share/po/sk.po, share/po/cs.po: updated Czech, Slovak, Uzbek and Chinese
- files
-
- * share/po/hu.po, share/po/nb.po, share/po/fa.po: updated pot files
-
-2003/09/05 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Change the strings again for Pablo
-
-2003/09/05 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/printerdrake: Reverted button texts to not break existing
- translations, added hints
- for translators to make the button texts short.
- Shorter button texts, so that translations do not let the buttons go
- out of the window.
-
-2003/09/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update fr translation
- help making printerdrake icon bar be shorter (#5282)
-
-2003/09/04 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: passed spellchecking, fixed some typos
- last updates
-
-2003/09/04 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Fully updated
-
-2003/09/04 David Baudens <baudens at mandrakesoft.com>
-
- * share/compssUsers.desktop: Update
-
-2003/09/04 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/modem.pm: always ask for modem device even if not detected,
- unless user has winmodem
- fix #5242, don't go back to main menu if winmodem isn't found
-
-2003/09/04 François Pons <fpons at mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: XF 3.3 should use depth 16 if
- use_UTAH_GLX, this has been glitched in XF4 mode
- (so never available).
-
-2003/09/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/sq.po: updated Estonian and Albanian files
- updated pot file
-
- * share/po/uz.po, share/po/ru.po, share/po/lv.po, share/po/lt.po,
- share/po/az.po, share/po/zh_CN.po, share/po/ga.po, share/po/sr@Latn.po,
- share/po/ar.po, share/po/hu.po, share/po/bg.po, share/po/zh_TW.po,
- share/po/sl.po, share/po/mt.po, share/po/gl.po, share/po/DrakX.pot,
- share/po/cy.po, share/po/sv.po, share/po/uk.po, share/po/tg.po,
- share/po/id.po, share/po/hr.po, share/po/ms.po, share/po/nl.po,
- share/po/de.po, share/po/uz@Cyrl.po, share/po/is.po, share/po/fr.po,
- share/po/ja.po, share/po/sk.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/tr.po, share/po/sr.po, share/po/be.po,
- share/po/fa.po, share/po/da.po, share/po/ko.po, share/po/af.po,
- share/po/es.po, share/po/ro.po, share/po/pl.po, share/po/vi.po,
- share/po/bs.po, share/po/wa.po, share/po/he.po, share/po/ta.po,
- share/po/ca.po, share/po/fi.po, share/po/th.po, share/po/pt_BR.po:
- updated pot file
-
- * share/po/eu.po: updated pot file
- updated Basque file
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
-
- * share/po/it.po: updated pot file
- updated Italian file
-
- * share/po/pt.po: updated pot file
- updated Portuguese file
-
-2003/09/04 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/icons/drakbackup.540x57.png,
- standalone/icons/drakTS.620x57.png: No longer needed with reworked
- banners.
-
- * standalone/drakTermServ: Add application title in banner.
-
- * standalone/drakbackup: CDROM -> CDR
-
-2003/09/04 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/scannerdrake: Abort scannerdrake when SANE packages cannot be
- installed.
-
-2003/09/04 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/09/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec:
- - printerdrake needs foomatic-db-engine
- - printerdrake is moved to drakxtools since it does not anymore run on
- the console
- remove doble entry
- 9.2-7mdk (arghh, 9.2-6mdk was really uploaded)
- 9.2-6mdk last bits
- fix buildrequires for 64bit ports
-
-2003/09/03 David Baudens <baudens at mandrakesoft.com>
-
- * share/rpmsrate: Update
- Update
- Update
-
-2003/09/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/nl.po, share/po/nb.po: updated Norwegian and Dutch files
-
-2003/09/03 Pixel <pixel at mandrakesoft.com>
-
- * pixmaps/mouse_3b+_middle.png, pixmaps/mouse_2b.png, mouse.pm,
- pixmaps/mouse_right.xpm, pixmaps/mouse_3b.xpm,
- pixmaps/mouse_2b_left.png, pixmaps/mouse_3b.png,
- pixmaps/mouse_3b_middle.png, pixmaps/mouse_middle.xpm,
- pixmaps/mouse_3b_left.png, pixmaps/arrow_up.png,
- pixmaps/mouse_3b_mini.xpm, pixmaps/arrow_down.xpm,
- pixmaps/mouse_2b_right.png, pixmaps/mouse_3b+_mini.xpm,
- pixmaps/mouse_3b+.png, pixmaps/mouse_3b_right.png,
- pixmaps/mouse_3b+.xpm, pixmaps/arrow_down.png, pixmaps/mouse_left.xpm,
- pixmaps/arrow_up.xpm:
- - much cleanup in test_mouse()
- - new images for mouse test (thanks to Jerome Villette)
-
- * install_steps_newt.pm, install_steps_interactive.pm, install_steps.pm,
- install_steps_stdio.pm, install_steps_auto_install.pm:
- - move call to ->charsetChanged from install_steps_interactive to
- install_steps
- so that we can use it in install_steps_auto_install_non_interactive
- - don't overload ->selectLanguage to call lang::load_console_font(),
- overload ->charsetChanged instead
-
- * diskdrake/hd_gtk.pm, diskdrake/interactive.pm: require resize_fat::main
- when needed (fix bug #5204)
-
-2003/09/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Default to all users for wizard->Users (as root).
- Only allow 1 media select from wizard.
- Limit possible user list to self for nonroot users.
-
-2003/09/03 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakhelp:
- - change to handle documentaion system other than drakxtools one (for
- instance MandrakeGalaxy)
-
-2003/09/03 François Pons <fpons at mandrakesoft.com>
-
- * standalone/drakautoinst: fixed missing import of ugtk2
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: created simple image
- from 9.2 install isolinux pictures for floppy.
-
-2003/09/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: use command line parameter to specify traditional or simplified
- style
- for Chinput
-
-2003/09/03 Pixel <pixel at mandrakesoft.com>
-
- * pixmaps/mouse_3b_middle.png, pixmaps/mouse_3b_left.png,
- pixmaps/mouse_3b.xpm, pixmaps/mouse_3b_mini.xpm, pixmaps/mouse_left.xpm,
- pixmaps/mouse_3b+.png, pixmaps/mouse_3b+_middle.png,
- pixmaps/mouse_middle.xpm, pixmaps/mouse_3b.png,
- pixmaps/mouse_2b_right.png, pixmaps/arrow_down.xpm,
- pixmaps/arrow_up.xpm, pixmaps/mouse_2b_left.png,
- pixmaps/mouse_right.xpm, pixmaps/mouse_3b+_mini.xpm,
- pixmaps/mouse_3b+.xpm, pixmaps/arrow_up.png, pixmaps/mouse_2b.png,
- pixmaps/arrow_down.png, pixmaps/mouse_3b_right.png, mouse.pm:
- - much cleanup in test_mouse()
- - new images for mouse test (thanks to Jerome Villette)
-
- * install_steps_interactive.pm, install_steps_stdio.pm,
- install_steps_auto_install.pm, install_steps_newt.pm, install_steps.pm:
- - move call to ->charsetChanged from install_steps_interactive to
- install_steps
- so that we can use it in install_steps_auto_install_non_interactive
- - don't overload ->selectLanguage to call lang::load_console_font(),
- overload ->charsetChanged instead
-
- * diskdrake/hd_gtk.pm, diskdrake/interactive.pm: require resize_fat::main
- when needed (fix bug #5204)
-
-2003/09/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Last untranslated string. Rework banner with
- title ala rpmdrake.
- Fix some untranslated strings - Arpad Biro
-
-2003/09/02 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: fixed some errors in license message
-
-2003/09/02 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/09/02 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: fixed duplicate entries in src architecture.
-
- * pkgs.pm: fixed XFree86-75dpi-fonts not available (seems like a problem
- with length of
- rpmsrate computation, strange as it fails now and not before).
-
-2003/09/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/eu.po: updated Basque and Farsi files
- updated po files
-
- * share/po/fa.po: updated Basque and Farsi files
-
- * share/po/hu.po: updated po files
-
- * share/fonts.tar.bz2: updated 12x13 bitmap font (replaced hebrew glyphs
- with a copy from
- nachlieli font, under gpl)
-
- * share/po/fi.po, share/po/pt.po: Updated Finnish and Portuguese files
-
-2003/09/02 Pixel <pixel at mandrakesoft.com>
-
- * lang.pm: do not disable arabic completly (tis very ugly to do this,
- better remove the
- arabic choice!)
-
- * fs.pm: add description for option "umask=0" (bug #4310)
-
- * share/po/Makefile: do not translate in arabic during install since
- there's no font available
-
-2003/09/02 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Fixed major number of libsane-hpoj.
-
- * standalone/printerdrake: Prevent main window crash when queue list gets
- empty by deleting all
- print queues.
-
-2003/09/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: update french translation
-
- * share/po/br.po: update
-
-2003/09/01 gbeauchesne
-
- * drakxtools.spec: Fix lsnsetdrake on AMD64
-
-2003/09/01 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: _ask_file: don't forget to overwrite $o->{window} as well or
- else
- it will be ->show'ed as a blank window (#5083)
-
-2003/09/01 keld
-
- * share/po/da.po: Update
- soft/urpmi/po/da.po gi/perl-install/share/po/da.po
-
-2003/09/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/ru.po, share/po/de.po, share/po/vi.po,
- share/po/sk.po, share/po/sq.po, share/po/az.po, share/po/da.po,
- share/po/uk.po: updated Azeri, Albanian, Ucrainian, Vietnamese and
- Chinese files
-
- * share/po/pt.po: updated Portuguese file
-
- * share/po/uz@Cyrl.po, share/po/uz.po, share/po/cs.po: updated Czech and
- Uzbek files
-
- * share/po/bs.po, share/po/nb.po: updated Bosnian and Nrowegian files
-
- * share/po/he.po: updated Hebrew file
-
-2003/09/01 Pixel <pixel at mandrakesoft.com>
-
- * pkgs.pm: oops, really kill gconfd silently
- don't warn when killing /usr/lib/gconfd-2 when runs in background
-
- * tools/ntp_servers.pl: update to new timezone.pm and adapt to new web
- page listing ntp servers
-
- * timezone.pm: update stratum 2 ntp servers
-
- * install_steps.pm, any.pm: chksession gives GNOME for gnome, not Gnome
-
-2003/09/01 siegel
-
- * share/po/de.po: updates german translation
-
-2003/09/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/printerdrake: do not explicitely reject embedding there, it
- has to be done in mcc.
- else, mcc wait forever for rpmdrake to embed in, then display an error
- dialog explaining that rpmdrake has failled (since it exited before
- displaying anything in mcc...)
-
-2003/08/31 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: don't check ext3 filesystems nor mount them as ext2 during
- upgrade (bug #5067)
-
-2003/08/31 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/08/31 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakedm: in non expert mode, only display the list of
- *installed* display managers.
- (interface team request)
- if no dm is installed, then switch back to expert mode behaviour and
- display
- all dm and install them if needed.
- explanations now work again thanks to pixel, no need to duplicate them
-
- * share/po/fr.po: fix draksec french translation
-
- * standalone/drakfloppy: fix dialogs height: replace"small" option by
- "height" & "weight" ones
- rationale: make thecommon path be the easiest one to set up (and make
- the
- uncommon path be the hardest one to follow)
-
- * standalone/harddrake2: harddrake2 help dialog: use the new scrolled
- dialog API for scrolled labels
- fix dialogs height: replace"small" option by "height" & "weight" ones
- rationale: make thecommon path be the easiest one to set up (and make
- the
- uncommon path be the hardest one to follow)
-
- * drakxtools.spec: 9.2-6mdk
- conflicts with older drakxtools doc due to new ctxhelp (drakhelp being
- broken
- until ctxhelp module is splited out as perl-MDK-Doc)
- requires perl-Gtk2 >= 0.95-6mdk for working XSetInputFocus()
- since we renewed network profiles feature, we shall require netprofile
- for
- drakconnect
-
- * ugtk2.pm (create_dialog) do not scroll labels by default
- fix dialogs height: replace"small" option by "height" & "weight" ones
- rationale: make thecommon path be the easiest one to set up (and make
- the
- uncommon path be the hardest one to follow)
-
- * standalone/drakconnect: fix profiles list refreshing
- fix dialogs height: replace"small" option by "height" & "weight" ones
- rationale: make thecommon path be the easiest one to set up (and make
- the
- uncommon path be the hardest one to follow)
-
-2003/08/30 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: current updates
-
-2003/08/30 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2003/08/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/pt.po: updated Estonian and Portuguese files
-
- * share/po/hu.po: updated Hungarian file
-
-2003/08/30 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: since XFree86-VGA16-3.3.6-29mdk is bad, insist on having
- XFree86-VGA16 28mdk instead
-
-2003/08/30 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/icons/wiz_printerdrake.png: Updated head image for
- add-printer wizard to have the new printerdrake icon.
-
- * pixmaps/printer_del.png, pixmaps/printer_conf.png,
- pixmaps/slpash-drakeprint-2.png, pixmaps/about.png,
- pixmaps/unselected.png, pixmaps/cups_config.png,
- pixmaps/printer_add.png, pixmaps/selected.png, pixmaps/refresh.png,
- pixmaps/redhat-config-users.png, pixmaps/printerdrake.png,
- pixmaps/printer_default.png, pixmaps/help.png: Re-uploaded binary files
- added with "cvs add -kb ...".
- Binary files uploaded without "cvs add -kb ...", removed for re-upload.
-
-2003/08/29 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: set {perImageAppend} to the append= line from the default
- entry or the first image= entry
-
- * ugtk2.pm: set_minmax_width was commented which caused the individual
- package selection
- tree to be to large (fix bug #4548 #4865)
-
-2003/08/30 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2003/08/30 Pixel <pixel at mandrakesoft.com>
-
- * Makefile: since XFree86-VGA16-3.3.6-29mdk is bad, insist on having
- XFree86-VGA16 28mdk instead
-
-2003/08/30 Till Kamppeter <till at mandrakesoft.com>
-
- * standalone/icons/wiz_printerdrake.png: Updated head image for
- add-printer wizard to have the new printerdrake icon.
-
-2003/08/29 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: remove system("cp..."); (I suck so much...)
-
-2003/08/29 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: try to make sure additional CD are taken into account if low
- memory available
- for configuring urpmi.
-
-2003/08/29 gbeauchesne
-
- * modules.pm: no imm/ppa on ia64
-
-2003/08/29 keld
-
- * share/po/da.po: Updates
- soft/menu-messages/da.po soft/GtkMdkWidgets/po/da.po
- soft/urpmi/po/da.po soft/wizard_perl/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/08/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ko.po, share/po/sl.po, share/po/vi.po, share/po/mt.po,
- share/po/af.po, share/po/tr.po, share/po/sk.po, share/po/ja.po,
- share/po/hr.po, share/po/ga.po, share/po/nl.po, share/po/nb.po,
- share/po/he.po, share/po/az.po, share/po/fa.po, share/po/cy.po,
- share/po/et.po, share/po/lv.po, share/po/uz@Cyrl.po, share/po/lt.po,
- share/po/sv.po, share/po/zh_TW.po, share/po/eu.po, share/po/wa.po,
- share/po/bs.po, share/po/sr@Latn.po, share/po/de.po, share/po/is.po,
- share/po/ro.po, share/po/ru.po, share/po/bg.po, share/po/pl.po,
- share/po/ms.po, share/po/eo.po, share/po/tg.po, share/po/ta.po,
- share/po/id.po, share/po/sq.po, share/po/da.po, share/po/ca.po,
- share/po/gl.po, share/po/uz.po, share/po/el.po, share/po/fi.po,
- share/po/it.po, share/po/th.po, share/po/ar.po, share/po/es.po,
- share/po/be.po, share/po/DrakX.pot, share/po/fr.po, share/po/sr.po,
- share/po/pt.po, share/po/pt_BR.po, share/po/hu.po: updated pot file
-
- * share/po/uk.po, share/po/cs.po, share/po/zh_CN.po: updated pot file
- updated Czech, Ukrainian and Chinese files
-
-2003/08/29 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: set {perImageAppend} to the append= line from the default
- entry or the first image= entry
-
- * ugtk2.pm: set_minmax_width was commented which caused the individual
- package selection
- tree to be to large (fix bug #4548 #4865)
-
-2003/08/29 Till Kamppeter <till at mandrakesoft.com>
-
- * pixmaps/unselected.png, pixmaps/printer_conf.png,
- pixmaps/cups_config.png, pixmaps/printer_del.png,
- pixmaps/printer_add.png, pixmaps/refresh.png, pixmaps/printerdrake.png,
- pixmaps/selected.png, standalone/printerdrake,
- pixmaps/printer_default.png, pixmaps/redhat-config-users.png,
- pixmaps/help.png, pixmaps/slpash-drakeprint-2.png, pixmaps/about.png:
- New GTK2-based main window for printerdrake (only after installation).
-
- * printer/printerdrake.pm: Do not show hidden options in the options
- dialog.
- Enabled Wizards in embedded mode. They work there now!
-
-2003/08/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: restore profiles feature through new netprofile
- package
-
- * ctxhelp.pm: provided by mandrake_doc-drakxtools-LL
-
- * drakxtools.spec: 9.2-5mdk
-
- * standalone/drakconnect: restore profiles feature
- fix title when not embedded (print right number of network interfaces
- instead of displaying a big random number)
-
- * share/po/fr.po: translation just means translation, not gratuitously
- speaking about
- the whole universe
-
-2003/08/29 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: major cleaning
-
-2003/08/28 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Partially updated
- Updated
-
-2003/08/28 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/28 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: removed drakprofile
-
- * share/compssUsers, share/compssUsers.desktop: select Documentation for
- all classes
-
-2003/08/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
-
-2003/08/28 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm: don't install autologin if using KDE or Gnome desktop
- (not needed nor used)
-
- * any.pm:
- - configure /etc/sysconfig/autologin in case of xdm, but remove it if
- kde/gnome
- - create any::sessions()
- if there is only one users and meta_class is discovery, choose autologin
- without asking
-
-2003/08/28 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Moved some stuff from mainwindow_interactive()
- to main() and init() as
- it has nothing to do with the main window.
-
-2003/08/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: fix dialogs heigh
-
- * ugtk2.pm (create_dialog) enable to pass an already created Gtk2::Label
-
-2003/08/28 Daouda Lo <daouda at mandrakesoft.com>
-
- * ctxhelp.pm:
- - put ctxhelp modules to prevent broken drakx build
-
-2003/08/28 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: fix #4372
-
-2003/08/28 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/compssUsers.desktop, share/compssUsers: select Documentation for
- all classes
-
- * share/rpmsrate: removed drakprofile
- removed linuxconf and gnome-network
-
-2003/08/28 François Pons <fpons at mandrakesoft.com>
-
- * share/compssUsers: make selected=all by default (so that RC1 (in
- meta_class=download will see them)
-
-2003/08/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * detect_devices.pm: detect a laptop if cpu name contains "mobile" as many
- recent laptops are in that case (in case other means would fail)
-
-2003/08/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/uz@Cyrl.po: updated Uzbek files
-
- * share/po/fi.po: updated Finnish file
-
- * share/po/et.po: updated Estonian file
-
-2003/08/28 Pixel <pixel at mandrakesoft.com>
-
- * standalone.pm: fix MDK::Common::* explainations
-
- * install_steps.pm: don't install autologin if using KDE or Gnome desktop
- (not needed nor used)
-
- * any.pm:
- - configure /etc/sysconfig/autologin in case of xdm, but remove it if
- kde/gnome
- - create any::sessions()
- if there is only one users and meta_class is discovery, choose autologin
- without asking
-
-2003/08/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone.pm (output) remove buggy warn
-
- * install_gtk.pm: fix direction setting for bidi (need perl-Gtk2-0.95-5mdk
- though)
-
- * ugtk2.pm (create_dialog) enable to pass an already created Gtk2::Label
-
-2003/08/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
- * share/po/he.po: updated Hebrew file
-
-2003/08/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm, printer/cups.pm: fix pot regeneration at package build time
-
- * drakxtools.spec: 9.2-4mdk
-
-2003/08/27 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2003/08/27 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/diskdrake:
- - new drakhelp call schema
-
- * standalone/drakhelp:
- - perl-checker
- - New drakhelp to increase accuracy in help system
- - contextual help
-
- * standalone/drakconnect, standalone/harddrake2, standalone/drakbackup:
- - new drakhelp args
-
- * standalone/drakbug:
- - help connects to qa.mandrakesoft.com
-
-2003/08/27 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakboot: typo fix
-
- * network/adsl.pm: fix firmware name (shame on me)
- fix #4363 (titi's so beautiful)
-
-2003/08/27 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/27 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_interactive.pm: scandisk is not enough! you can destroy your
- windows XP if you
- don't use chkdsk and then ntfsresize is used on a buggy partition
- (drakx should detect it via ntfsresize though), running chkdsk is
- *mandatory*
-
-2003/08/27 nplanel
-
- * any.pm: Now acpi=ht to prevent HT detection only
-
- * install_steps.pm: fixup last hack
- Now acpi=ht to prevent HT detection only
-
-2003/08/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
- updated pot file
-
- * share/po/nl.po: updated po file
- updated pot file
-
- * share/po/he.po: updated Hebrew file
- updated pot file
-
- * share/po/sr@Latn.po, share/po/sk.po, share/po/eo.po, share/po/bg.po,
- share/po/zh_TW.po, share/po/sv.po, share/po/sr.po, share/po/ta.po,
- share/po/sl.po, share/po/lt.po, share/po/it.po, share/po/es.po,
- share/po/el.po, share/po/pt_BR.po, share/po/eu.po, share/po/ca.po,
- share/po/ru.po, share/po/pl.po, share/po/id.po, share/po/mt.po,
- share/po/da.po, share/po/lv.po, share/po/ga.po, share/po/be.po,
- share/po/uz@Cyrl.po, share/po/zh_CN.po, share/po/ja.po, share/po/ms.po,
- share/po/is.po, share/po/ko.po, share/po/ar.po, share/po/af.po,
- share/po/fr.po, share/po/de.po, share/po/fi.po, share/po/et.po,
- share/po/gl.po, share/po/tr.po, share/po/bs.po, share/po/tg.po,
- share/po/uz.po, share/po/hr.po, share/po/ro.po, share/po/wa.po,
- share/po/cy.po, share/po/th.po, share/po/vi.po, share/po/DrakX.pot,
- share/po/az.po: updated pot file
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
- updated Norwegian file
-
- * share/po/hu.po: updated Hungarian file
- updated pot file
-
- * share/po/uk.po, share/po/fa.po, share/po/sq.po, share/po/pt.po: updated
- pot file
- updated Farsi, Portuguese, Albanian and Ukrainian files
-
-2003/08/27 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Determine default printer already when reading in the
- queue data,
- this is much faster than running "foomatic-configure" a second time.
-
- * printer/cups.pm: Added lpstat_lpv() function to list remotely defined
- printers with
- description and location.
-
-2003/08/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: let draconnect banner fit in french
-
- * standalone/drakconnect: rename vbox2 as param_vbox
- remove useless bbox8 (due to use of std dialog button box)
- get rid of useless/badly named bbox0
- rename combo1 as profile_combo
- - fix hostname setting
- - set hostname at the same time we apply dns changes, that is when one
- ask to apply changes
-
- * drakxtools.spec: 9.2-4mdk
-
- * any.pm, printer/cups.pm: fix pot regeneration at package build time
-
- * harddrake/v4l.pm: resync with current bttv card and tuner lists
-
-2003/08/26 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: current update
-
-2003/08/26 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakfont: fix buttons sensitive behavior
-
-2003/08/26 François Pons <fpons at mandrakesoft.com>
-
- * install2.pm: alias meta_class=discovery with meta_class=desktop
-
- * share/compssUsers: added [selected=default] for all section which needed
- to be selected
- (approximative map of existing packages).
-
- * share/compssUsers.desktop: added [selected=desktop] when needed (same as
- default selection (PowerPack) but
- Gnome is removed).
-
- * install_steps_interactive.pm: drop security level selection for desktop
- user.
- do not ask user for group selection if desktop meta class is used.
-
- * install_any.pm: added default compssUsers group selection from
- compssUser file directly (use
- [selected=...] where ... is a list of comma separated meta_class (or
- default for
- no meta_class or all for all meta_class).
- fixed all radeon card are using 3D for 3D package group.
-
- * share/compssUsers.server: added [selected=server] for groups to be
- selected by default.
-
- * pkgs.pm: get selected list from compssUsers for readCompssUsers.
-
-2003/08/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po, share/po/et.po: updated Estonian, Finnish, Hungarian,
- Norwegian and Swedish files
- updated pot file
- updated Estonian, Hungarian and Ukrainian files
-
- * share/po/uk.po: updated pot file
- updated Estonian, Hungarian and Ukrainian files
-
- * share/po/sv.po, share/po/nb.po, share/po/fi.po: updated Estonian,
- Finnish, Hungarian, Norwegian and Swedish files
- updated pot file
-
- * share/po/pt.po: updated Portuguese file
- updated pot file
-
- * share/po/sr@Latn.po, share/po/sk.po, share/po/eo.po, share/po/bg.po,
- share/po/zh_TW.po, share/po/sr.po, share/po/ta.po, share/po/sl.po,
- share/po/lt.po, share/po/it.po, share/po/es.po, share/po/el.po,
- share/po/pt_BR.po, share/po/he.po, share/po/eu.po, share/po/ca.po,
- share/po/ru.po, share/po/pl.po, share/po/id.po, share/po/mt.po,
- share/po/da.po, share/po/lv.po, share/po/ga.po, share/po/be.po,
- share/po/uz@Cyrl.po, share/po/cs.po, share/po/fa.po, share/po/zh_CN.po,
- share/po/ja.po, share/po/ms.po, share/po/is.po, share/po/ko.po,
- share/po/ar.po, share/po/af.po, share/po/nl.po, share/po/fr.po,
- share/po/de.po, share/po/sq.po, share/po/gl.po, share/po/tr.po,
- share/po/bs.po, share/po/tg.po, share/po/uz.po, share/po/hr.po,
- share/po/ro.po, share/po/wa.po, share/po/cy.po, share/po/th.po,
- share/po/vi.po, share/po/DrakX.pot, share/po/az.po: updated pot file
-
- * lang.pm: updated list of available kde-i18n-xx packages
-
- * share/fonts.tar.bz2: updated Nimbus Sans font with more cyrillic glyphs
-
-2003/08/26 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: install "autofs" pkg when using ldap (thanks to Buchan Milne)
-
- * share/po/i18n_compssUsers: adapt to new flag [selected=...]
-
-2003/08/26 Till Kamppeter <till at mandrakesoft.com>
-
- * pixmaps/printer-mdk.png: Updated icon for printerdrake's dialog windows.
-
-2003/08/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-3mdk
-
- * standalone/drakconnect: hide profile in "internet config" dialog if
- profiles are disabled
- fix "Internet Connection Configuration" dialog does not show up its
- contents
- rename --gui option as --skip-wizard option on interface team request
- only write conf & install packages on exit (Ok press) if something
- really has been altered so that we do not write the config twice if
- the user already pressed the "apply" button
- - "Configure hostname..." button: offer to configure DNS too
- - (configure_hostname) kill it since it only duplicate code from
- network/*pm
- still more dialogs cleanups
- add --gui in order to start in "mcc" state (aka not in wizard mode)
- more dialog misusage and some indent fixes
- enfore gc style for gtk+2 widgets creation
- more layout fixes: cance/ok order coherency, no VBoxes/HButtonBoxes
- abuses, ...
- (configure_net) Gtk2::Dialog main area is already a vbox, so it's
- useless to pack a vbox there idem for action area and Gtk2::HButtonBox
- (get_intf_status) kill duplicate
- net & lan configuration dialogs: prevent one to do concurrent config
- changes from the gui
- (sensitive_buttons) fix it
- - only allow to run one wizard at once (insensitive button if one is
- already started)
- - reload the configuration once the wizard exited
- - prevent one to do concurrent config changes from the gui while the
- wizard is run (proper fix involve both fix modality/transcientness
- when embedded and running the wizard within the same process instead
- of forking it]
-
- * network/drakfirewall.pm: fix pkg to install for samba
-
-2003/08/26 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakfont: fix buttons sensitive behavior
-
-2003/08/26 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_interactive.pm: drop security level selection for desktop
- user.
- do not ask user for group selection if desktop meta class is used.
-
- * pkgs.pm: get selected list from compssUsers for readCompssUsers.
-
- * share/compssUsers.server: added [selected=server] for groups to be
- selected by default.
-
- * share/compssUsers.desktop: added [selected=desktop] when needed (same as
- default selection (PowerPack) but
- Gnome is removed).
-
- * share/compssUsers: added [selected=default] for all section which needed
- to be selected
- (approximative map of existing packages).
-
- * install_any.pm: added default compssUsers group selection from
- compssUser file directly (use
- [selected=...] where ... is a list of comma separated meta_class (or
- default for
- no meta_class or all for all meta_class).
- fixed all radeon card are using 3D for 3D package group.
-
-2003/08/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/uk.po, share/po/hu.po: updated Estonian,
- Hungarian and Ukrainian files
-
-2003/08/26 Pixel <pixel at mandrakesoft.com>
-
- * share/po/i18n_compssUsers: adapt to new flag [selected=...]
-
- * any.pm: install "autofs" pkg when using ldap (thanks to Buchan Milne)
-
- * keyboard.pm:
- - don't set XkbCompat to group_led, it's better to use grp_led:scroll
- in
- XkbOptions
- - also set compose:rwin if GRP_TOGGLE is not rwin_toggle. rationale:
- Also, for multilayout keyboards, it would be nice to also
- in XkbOptions "compose:rwin" to define the right windows
- key as the compose key (unless "rwin_toggle" has been
- choosen to toggle the layouts) "compose:rwin" is the
- default when loading a single latin layout, but is lost
- when loading several layouts...
-
- * fs.pm: use fs=ext2:vfat or fs=udf:iso9600 for supermount (it needs
- supermount-ng)
-
-2003/08/26 Till Kamppeter <till at mandrakesoft.com>
-
- * pixmaps/printer-mdk.png: Updated icon for printerdrake's dialog windows.
-
-2003/08/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: more last bits for 9.2-2mdk for lord pixel
- 9.2-2mdk
-
- * standalone/drakconnect: still more dialogs cleanups
- add --gui in order to start in "mcc" state (aka not in wizard mode)
- more dialog misusage and some indent fixes
- enfore gc style for gtk+2 widgets creation
- more layout fixes: cance/ok order coherency, no VBoxes/HButtonBoxes
- abuses, ...
- (configure_net) Gtk2::Dialog main area is already a vbox, so it's
- useless to pack a vbox there idem for action area and Gtk2::HButtonBox
- (get_intf_status) kill duplicate
- net & lan configuration dialogs: prevent one to do concurrent config
- changes from the gui
- (sensitive_buttons) fix it
- - only allow to run one wizard at once (insensitive button if one is
- already started)
- - reload the configuration once the wizard exited
- - prevent one to do concurrent config changes from the gui while the
- wizard is run (proper fix involve both fix modality/transcientness
- when embedded and running the wizard within the same process instead
- of forking it]
-
- * modules.pm (add_alias) override current setting when adding an alias
-
- * harddrake/sound.pm, standalone/service_harddrake: while bootstrapping,
- only write /etc/modules.conf only if we really altered it
- (thus preventing depmod to be runned everytime)
-
-2003/08/26 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: get selected list from compssUsers for readCompssUsers.
-
- * install_steps_interactive.pm: drop security level selection for desktop
- user.
- do not ask user for group selection if desktop meta class is used.
-
- * share/compssUsers.server: added [selected=server] for groups to be
- selected by default.
-
- * share/compssUsers: added [selected=default] for all section which needed
- to be selected
- (approximative map of existing packages).
-
- * install_any.pm: added default compssUsers group selection from
- compssUser file directly (use
- [selected=...] where ... is a list of comma separated meta_class (or
- default for
- no meta_class or all for all meta_class).
- fixed all radeon card are using 3D for 3D package group.
-
- * share/compssUsers.desktop: added [selected=desktop] when needed (same as
- default selection (PowerPack) but
- Gnome is removed).
-
-2003/08/26 Pixel <pixel at mandrakesoft.com>
-
- * standalone/diskdrake: do embed WebDAV configuration (fix bug #4703)
-
- * any.pm: install "autofs" pkg when using ldap (thanks to Buchan Milne)
-
- * diskdrake/dav.pm: focus_first on the webdav server field
-
- * keyboard.pm:
- - don't set XkbCompat to group_led, it's better to use grp_led:scroll
- in
- XkbOptions
- - also set compose:rwin if GRP_TOGGLE is not rwin_toggle. rationale:
- Also, for multilayout keyboards, it would be nice to also
- in XkbOptions "compose:rwin" to define the right windows
- key as the compose key (unless "rwin_toggle" has been
- choosen to toggle the layouts) "compose:rwin" is the
- default when loading a single latin layout, but is lost
- when loading several layouts...
-
- * fs.pm: use fs=ext2:vfat or fs=udf:iso9600 for supermount (it needs
- supermount-ng)
-
-2003/08/26 Till Kamppeter <till at mandrakesoft.com>
-
- * pixmaps/printer-mdk.png: Updated icon for printerdrake's dialog windows.
-
-2003/08/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: more last bits for 9.2-2mdk for lord pixel
- 9.2-2mdk
-
- * modules.pm (add_alias) override current setting when adding an alias
-
- * standalone/drakconnect: add --gui in order to start in "mcc" state (aka
- not in wizard mode)
- more dialog misusage and some indent fixes
- enfore gc style for gtk+2 widgets creation
- more layout fixes: cance/ok order coherency, no VBoxes/HButtonBoxes
- abuses, ...
- (configure_net) Gtk2::Dialog main area is already a vbox, so it's
- useless to pack a vbox there idem for action area and Gtk2::HButtonBox
- (get_intf_status) kill duplicate
- net & lan configuration dialogs: prevent one to do concurrent config
- changes from the gui
- (sensitive_buttons) fix it
- - only allow to run one wizard at once (insensitive button if one is
- already started)
- - reload the configuration once the wizard exited
- - prevent one to do concurrent config changes from the gui while the
- wizard is run (proper fix involve both fix modality/transcientness
- when embedded and running the wizard within the same process instead
- of forking it]
-
- * harddrake/data.pm: explain data struct
-
- * harddrake/sound.pm, standalone/service_harddrake: while bootstrapping,
- only write /etc/modules.conf only if we really altered it
- (thus preventing depmod to be runned everytime)
-
-2003/08/26 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/dav.pm: focus_first on the webdav server field
-
- * keyboard.pm:
- - don't set XkbCompat to group_led, it's better to use grp_led:scroll
- in
- XkbOptions
- - also set compose:rwin if GRP_TOGGLE is not rwin_toggle. rationale:
- Also, for multilayout keyboards, it would be nice to also
- in XkbOptions "compose:rwin" to define the right windows
- key as the compose key (unless "rwin_toggle" has been
- choosen to toggle the layouts) "compose:rwin" is the
- default when loading a single latin layout, but is lost
- when loading several layouts...
-
- * any.pm: install "autofs" pkg when using ldap (thanks to Buchan Milne)
-
- * fs.pm: use fs=ext2:vfat or fs=udf:iso9600 for supermount (it needs
- supermount-ng)
-
- * standalone/diskdrake: do embed WebDAV configuration (fix bug #4703)
-
-2003/08/26 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: If an HPOJ-controlled HP MF device on a parallel port
- has an URI with
- model reference (and not port number) tell at least in the menues that
- it is on a parallel port.
-
- * printer/printerdrake.pm: Let names of automatically generated queues not
- contain the word "Series".
-
-2003/08/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * modules.pm (add_alias) override current setting when adding an alias
-
- * standalone/service_harddrake, harddrake/sound.pm: while bootstrapping,
- only write /etc/modules.conf only if we really altered it
- (thus preventing depmod to be runned everytime)
-
- * harddrake/data.pm: explain data struct
-
- * drakxtools.spec: more last bits for 9.2-2mdk for lord pixel
- 9.2-2mdk
-
-2003/08/25 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: update
-
-2003/08/25 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: updated po file
- updated pot file
-
- * share/po/uz@Cyrl.po, share/po/id.po, share/po/be.po, share/po/ru.po,
- share/po/ja.po, share/po/he.po, share/po/ga.po, share/po/tr.po,
- share/po/ms.po, share/po/hr.po, share/po/uz.po, share/po/nb.po,
- share/po/ko.po, share/po/es.po, share/po/zh_CN.po, share/po/cy.po,
- share/po/zh_TW.po, share/po/eu.po, share/po/vi.po, share/po/eo.po,
- share/po/tg.po, share/po/sr@Latn.po, share/po/DrakX.pot, share/po/th.po,
- share/po/lt.po, share/po/cs.po, share/po/sr.po, share/po/pt.po,
- share/po/nl.po, share/po/hu.po, share/po/is.po, share/po/fr.po,
- share/po/uk.po, share/po/sv.po, share/po/de.po, share/po/ca.po,
- share/po/bs.po, share/po/et.po, share/po/lv.po, share/po/az.po,
- share/po/it.po, share/po/ro.po, share/po/wa.po, share/po/af.po,
- share/po/pl.po, share/po/sk.po, share/po/pt_BR.po, share/po/mt.po,
- share/po/da.po, share/po/ta.po, share/po/fi.po, share/po/sq.po,
- share/po/el.po, share/po/ar.po, share/po/gl.po, share/po/sl.po,
- share/po/bg.po: updated pot file
-
-2003/08/25 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Distinguish between printers "Configured on this
- machine" and
- "Configured on other machines", not any more "Local Printers" and
- "Remote Printers", so the current dialog is compatible to the new GTK2
- dialog.
- Fixed recognition of installed parallel HPOJ-driven MF devices.
-
- * printer/cups.pm: Distinguish between printers "Configured on this
- machine" and
- "Configured on other machines", not any more "Local Printers" and
- "Remote Printers", so the current dialog is compatible to the new GTK2
- dialog.
-
- * printer/printerdrake.pm: Distinguish between printers "Configured on
- this machine" and
- "Configured on other machines", not any more "Local Printers" and
- "Remote Printers", so the current dialog is compatible to the new GTK2
- dialog.
- - Modularized the function main() to have separate subroutines for
- adding, setting as default, editing, and removing a printer (for new
- main window).
- - Cleaned up the code of the former function main().
- - Re-activated the wizard mode for adding a printer, it works again!
-
-2003/08/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot: fix drakboot always showing advanced stuff even
- when --expert was not
- passed
-
- * share/po/fr.po: update french translation
-
- * network/netconnect.pm: fix drakconnect not working on console (found by
- poulpy) due to having
- killed pre_func() which used to set a background pixmap in the old
- days, thus the bogus test that went in.
-
- * drakxtools.spec: 9.2-1mdk
-
-2003/08/25 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/25 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Add /etc/modules for local hardware config.
-
-2003/08/25 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed recognition of installed parallel HPOJ-driven MF
- devices.
-
- * printer/detect.pm: Removed use of "parport_probe", we do not need to
- support kernel 2.2.x
- any more.
-
-2003/08/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/netconnect.pm: fix drakconnect not working on console (found by
- poulpy) due to having
- killed pre_func() which used to set a background pixmap in the old
- days, thus the bogus test that went in.
-
- * standalone/drakfloppy: this tool really is gtk2 ported, so do not trash
- languages not handled
- by gtk+-1.x
-
-2003/08/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po, share/po/zh_CN.po, share/po/fa.po, share/po/uk.po,
- share/po/eu.po: updated Basque, Farsi, Hungarian, Ukrainian and Chinese
- files
-
-2003/08/24 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Adapted version mark in HPOJ config files to the
- current HPOJ.
- - Fixed expert/normal mode switch (it will perhaps be removed, but a
- working switch makes the further development easier).
- - Added connectionstr() function which produces a human-readable
- string for the connection type, needed for new main window.
- - Added missing parantheses (there was a warning complaining about
- this).
-
- * printer/printerdrake.pm: Made the HP DeskJet 450 really being recognized
- as a printer needing HPOJ.
- Added HP DeskJet 450 to the models which need HPOJ.
- - Fixed expert/normal mode switch (it will perhaps be removed, but a
- working switch makes the further development easier).
- - Added connectionstr() function which produces a human-readable
- string for the connection type, needed for new main window.
- - Added missing parantheses (there was a warning complaining about
- this).
-
-2003/08/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: require a perl-Gtk2 that properly handle perl
- exceptions in gtk+ callbacks
- typo fix
-
-2003/08/23 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2003/08/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po, share/po/zh_CN.po, share/po/eu.po: updated pot file
- updated Basque, Hungarian and Chinese files
-
- * share/po/ta.po, share/po/pt_BR.po, share/po/fr.po, share/po/de.po,
- share/po/cy.po, share/po/lv.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/he.po, share/po/cs.po, share/po/fi.po, share/po/ca.po,
- share/po/ms.po, share/po/ja.po, share/po/bs.po, share/po/bg.po,
- share/po/th.po, share/po/mt.po, share/po/el.po, share/po/et.po,
- share/po/wa.po, share/po/pl.po, share/po/fa.po, share/po/uk.po,
- share/po/uz@Cyrl.po, share/po/nl.po, share/po/is.po, share/po/it.po,
- share/po/sq.po, share/po/es.po, share/po/id.po, share/po/ko.po,
- share/po/tr.po, share/po/be.po, share/po/hr.po, share/po/vi.po,
- share/po/sr@Latn.po, share/po/az.po, share/po/ar.po, share/po/nb.po,
- share/po/eo.po, share/po/gl.po, share/po/sl.po, share/po/ru.po,
- share/po/pt.po, share/po/sk.po, share/po/af.po, share/po/tg.po,
- share/po/lt.po, share/po/ga.po, share/po/zh_TW.po, share/po/da.po,
- share/po/ro.po, share/po/uz.po, share/po/sr.po: updated pot file
-
-2003/08/23 Till Kamppeter <till at mandrakesoft.com>
-
- * handle_configs.pm: if_($A, $B) got extremely slow, replaced by ( $A ? $B
- : () ).
-
-2003/08/23 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/08/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: as discussed with david, gc, laurent & pixel early this week,
- since
- gtk+ dialogs are HIG-ed and since most drakxtools' explicit gtk+
- windows follow cancel/ok order for now, let implicit windows (that is
- interactive written ones) follow the same order in standalone mode.
- after release, we'll have to make ugtk2 handle one more abstractions,
- that is taking some buttons callbacks, add buttons that have callbacks
- and pack them in kde or gnome order depending of interface team
- decision or maybe of runtime detection of desktop.
-
- * standalone/icons/non-editable.png: add new icon for drakperm
-
- * standalone/drakperm: rename $treeModel as $model since it really is a
- ListModel, not a
- TreeModel anymore (cosmetic)
- - disable up button when selected rule is the first one
- - disable down button when selected rule is the latest one or when
- next rule is non editable
- always add newly created setting at top of editable settings so that
- we're we can sort them since they're no non editable items between old
- & new editable ones
- once we start to alter settings ordering, we need to save it on exit;
- so just tell it to drakperm
- - fix gtk bug on moving down line
- - merge moving up & down callbacks
- - we do not have a hierarchy, so just use a s/tree/list/
-
- * share/po/fr.po: a few more translations
- translate last remaining non translated languages with google help
-
- * drakxtools.spec: 9.2-0.35mdk
- 9.2-0.34mdk
-
-2003/08/22 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm: typo fix s/succeed/succeeded/
-
-2003/08/22 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: updated Spanish translations
-
-2003/08/22 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add erwan
-
- * share/po/fr.po: fix titi
-
- * interactive/gtk.pm: fix keyboard browsing in treeviews not always
- centering on
- selected row (workaround gtk2 bug not honouring centering on the
- given row if node was closed by updating ui before requesting the
- scrolling to the cell)
-
-2003/08/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nb.po: updated Norwegian file
- updated pot file
-
- * share/po/ru.po: updated Russian file
- updated pot file
-
- * share/po/ta.po, share/po/pt_BR.po, share/po/fr.po, share/po/de.po,
- share/po/cy.po, share/po/lv.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/hu.po, share/po/he.po, share/po/fi.po, share/po/ca.po,
- share/po/ms.po, share/po/ja.po, share/po/bs.po, share/po/zh_CN.po,
- share/po/bg.po, share/po/th.po, share/po/eu.po, share/po/mt.po,
- share/po/el.po, share/po/et.po, share/po/wa.po, share/po/pl.po,
- share/po/fa.po, share/po/uk.po, share/po/uz@Cyrl.po, share/po/nl.po,
- share/po/is.po, share/po/it.po, share/po/sq.po, share/po/es.po,
- share/po/id.po, share/po/ko.po, share/po/tr.po, share/po/be.po,
- share/po/hr.po, share/po/vi.po, share/po/sr@Latn.po, share/po/az.po,
- share/po/ar.po, share/po/eo.po, share/po/gl.po, share/po/sl.po,
- share/po/pt.po, share/po/sk.po, share/po/af.po, share/po/tg.po,
- share/po/lt.po, share/po/ga.po, share/po/zh_TW.po, share/po/da.po,
- share/po/ro.po, share/po/uz.po, share/po/sr.po: updated pot file
-
- * lang.pm: use "Sans" as default font name
-
- * share/po/cs.po: updated po file
- updated pot file
-
-2003/08/22 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: fix crash on file select of "Other"
- finish custom cron configuration - normal users can now do cron backups
-
-2003/08/22 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/detect.pm: Adapted to scli 0.2.12.
-
- * printer/printerdrake.pm, printer/main.pm: Support for the new
- "ptal://..." (two slashes) URIs of the new HPOJ.
-
-2003/08/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * interactive/gtk.pm (ask_fromW) split $set_advanced into $set_advanced
- and
- $set_advanced_raw to fix drakconnect "failling" to detect network
- interfaces in standalone mode when in expert mode
-
- * standalone/draksec: translate default value in help tooltips too
- CJK fixes: use newly introduced Gtk2::WrappedLabel package
-
- * network/drakfirewall.pm: offer samba in services list
-
- * standalone/drakperm: renew drakperm gui (interface team feedback):
- - indicate if current setting is editable or not
- - only display current security level, editable settings or both
-
- * ugtk2.pm: CJK fixes: use newly introduced Gtk2::WrappedLabel package
- introduce Gtk2::WrappedLabel to factorize fixed labels for CJK
- languages
- (gtkset_line_wrap) export it
-
- * share/po/fr.po: update french translation
- minor fix (due to ala latex format used in draksec)
- update french translation
- update french translation
- update french translation
- translate draksec main label
-
-2003/08/21 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/adsl.pm:
- - more use info in load_firmware_floppy
- - catch no floppy in drive error
- - catch wizcancel
- - add '-e 1' pppoa option for speedtouch USB
- - N_ instead of N, won't translate twice (guillaume has the greatest
- member)
-
- * network/modem.pm: fix no winmodem message/behavior
-
-2003/08/21 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
- * network/adsl.pm: s/alcatel/Alcatel/
-
- * share/po/zh_CN.po: updated Chinese file
-
- * share/po/fr.po: updated French file
-
- * share/po/cs.po: updated Czech file
-
-2003/08/21 Pixel <pixel at mandrakesoft.com>
-
- * diskdrake/resize_ntfs.pm: display the error returned by ntfsresize (need
- i18n though)
-
- * standalone/draksec: fix english (thanks to Reinout van Schouwen)
-
- * bootloader.pm: have bootsplash also for smp & enterprise kernels
-
- * ugtk2.pm: only access $::o->{mouse}{unsafe} during install
-
- * modules.pm: don't care if insmod'ing ohci1394 fail (bug #1972)
-
-2003/08/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm:
- - (gtkset_line_wrap) introduce a Gtk2::Label wrapper for
- set_line_wrap()
- - (create_box_with_title)
- o factorize label creation
- o fix label wrongly wrap cjk languages by enabling its wrapping
- (real bugs is that GtkLabel does not really know its geometry: see
- gtk+ bugs #118045, #118046, #101968 and #104188)
- move ugtk2 related language fixes into ugtk2 jail
-
- * harddrake/sound.pm: typo fixes from Arpad Biro
-
- * standalone.pm: move ugtk2 related language fixes into ugtk2 jail
-
- * standalone/harddrake2: workaround gtk bug #118047
-
-2003/08/21 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated to current pot
-
-2003/08/21 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/modem.pm: fix no winmodem message/behavior
-
- * network/adsl.pm:
- - allow user to copy firmware from a floppy
- - fix 'previous' behavior
- - change wrong url
-
- * share/po/id.po, share/po/af.po, share/po/hr.po, share/po/eo.po,
- share/po/de.po, share/po/ar.po, share/po/zh_TW.po, share/po/nb.po,
- share/po/fr.po, share/po/ko.po, share/po/el.po, share/po/da.po,
- share/po/sr@Latn.po, share/po/lt.po, share/po/eu.po, share/po/nl.po,
- share/po/he.po, share/po/tr.po, share/po/wa.po, share/po/uz@Cyrl.po,
- share/po/ta.po, share/po/pl.po, share/po/az.po, share/po/be.po,
- share/po/mt.po, share/po/uk.po, share/po/hu.po, share/po/uz.po,
- share/po/fa.po, share/po/ja.po, share/po/it.po, share/po/pt.po,
- share/po/ro.po, share/po/sq.po, share/po/sk.po, share/po/ru.po,
- share/po/fi.po, share/po/gl.po, share/po/cs.po, share/po/sv.po,
- share/po/th.po, share/po/es.po, share/po/sl.po, share/po/lv.po,
- share/po/ca.po, share/po/sr.po, share/po/pt_BR.po, share/po/vi.po,
- share/po/tg.po, share/po/cy.po, share/po/zh_CN.po, share/po/bg.po,
- share/po/is.po, share/po/ga.po, share/po/et.po, share/po/bs.po: fix
- firmware url
-
-2003/08/21 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/21 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: use perl-URPM 0.94
- really fixed bad content generated.
- fixed next key block not taken into accound.
-
- * install_any.pm: updated with new perl-URPM 0.94 (simplified code)
- avoid 0 to be dumped in urpmi.cfg :(
- added some log when importing pbukey block and when key id have been
- found.
- make sure other key are added to urpmi.cfg when imported.
-
-2003/08/21 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/merge_from_pcitable: also display probe.c entries
- that are completely missing from pcitable
-
- * mdk-stage1/pcmcia_/probe.c: 0x1524 0x1411 is a yenta_socket on Asus
- Pundit machine (laurent at pschit.net)
-
- * share/rpmsrate: s/freeciv/freeciv-client/
-
-2003/08/21 keld
-
- * share/po/da.po: updates
- soft/GtkMdkWidgets/po/da.po soft/mdkkdm/po/da.po
- soft/urpmi/po/da.po soft/userdrake2/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/08/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
- updated pot file
-
- * share/po/zh_CN.po: updated Chinese file
- updated pot file
-
- * standalone/drakbackup: fixed English typos
-
- * share/po/fr.po: updated French file
- updated pot file
-
- * share/po/cs.po: updated Czech file
- updated pot file
-
- * standalone/logdrake: Changed back NC() to N() (functionality will be
- merged)
- definition and use of an NC() function (translation with context, kde
- like)
-
- * share/po/id.po, share/po/af.po, share/po/hr.po, share/po/eo.po,
- share/po/de.po, share/po/ar.po, share/po/zh_TW.po, share/po/nb.po,
- share/po/ko.po, share/po/el.po, share/po/da.po, share/po/sr@Latn.po,
- share/po/lt.po, share/po/eu.po, share/po/he.po, share/po/tr.po,
- share/po/wa.po, share/po/uz@Cyrl.po, share/po/ta.po, share/po/pl.po,
- share/po/az.po, share/po/be.po, share/po/mt.po, share/po/uk.po,
- share/po/hu.po, share/po/uz.po, share/po/fa.po, share/po/ja.po,
- share/po/it.po, share/po/pt.po, share/po/ro.po, share/po/sq.po,
- share/po/sk.po, share/po/ru.po, share/po/fi.po, share/po/gl.po,
- share/po/sv.po, share/po/th.po, share/po/es.po, share/po/DrakX.pot,
- share/po/sl.po, share/po/lv.po, share/po/ca.po, share/po/sr.po,
- share/po/pt_BR.po, share/po/vi.po, share/po/tg.po, share/po/ms.po,
- share/po/cy.po, share/po/bg.po, share/po/is.po, share/po/ga.po,
- share/po/et.po, share/po/bs.po: updated pot file
-
- * common.pm: perl_checker complain avout using N(@_) so NC() has been
- rewritten as
- a duplicate of N() plus one line
- definition and use of an NC() function (translation with context, kde
- like)
-
-2003/08/21 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: when umount fails, try killing fam and trying again
-
- * diskdrake/resize_ntfs.pm: display the error returned by ntfsresize (need
- i18n though)
-
- * Xconfig/card.pm: don't propose XF3 when $force_xf4
- fix typo ($::force_xf4 doesn't exist anymore)
-
- * ugtk2.pm: only access $::o->{mouse}{unsafe} during install
-
- * partition_table.pm:
- - fix call to openit()
- - replace *F with $F
-
- * fsedit.pm: simplify
- allocatePartitions() resulted in a small unallocated area at the end of
- the
- drive when:
- - suggest_part() reserves some room for the other partitions which are
- going to
- be added next. For maxsize limited partition, it reserves maxsize (if
- maxsize
- is reached)
- - suggest_part() which adds the last partition limited by maxsize can
- be
- called on a partition a little bigger than maxsize due to cylinder
- boundary
- adjustments on previous partition creations. In that case, it doesn't
- use the
- full area.
- It occured for example with the current $fsedit::suggestions{server}.
- The fix chosen is to ensure the last suggest_part() is called with a
- size
- defined as maxsize <= size < maxsize + cylinder_size.
-
- * modules.pm: don't care if insmod'ing ohci1394 fail (bug #1972)
-
- * standalone/draksec: fix english (thanks to Reinout van Schouwen)
-
- * Xconfig/test.pm: fix typo
- - use $TMPDIR before using $HOME/tmp
- - if $HOME doesn't exist, it will use /tmp which is safe when using
- secured_file()
-
- * common.pm: no need for NC(), doing it in translate() in any case
-
-2003/08/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakxtv: only offer to configure xawtv if bttv was configured
- fix warnings with diagnostics pragma
-
- * drakxtools.spec: 9.2-0.33mdk
-
- * ugtk2.pm: move ugtk2 related language fixes into ugtk2 jail
- chinese badly wrap with labels too
- the scrolled text is correctly sized, so do not let it compete with
- the options box and the advanced box for availlable space
-
- * harddrake/sound.pm: typo fixes from Arpad Biro
-
- * standalone.pm: move ugtk2 related language fixes into ugtk2 jail
- set $::o in standalone mode too (because of guillaume fixes for "pango
- vs cjk" match)
-
- * harddrake/v4l.pm: return ok/cancel state
-
-2003/08/21 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: simplify
- allocatePartitions() resulted in a small unallocated area at the end of
- the
- drive when:
- - suggest_part() reserves some room for the other partitions which are
- going to
- be added next. For maxsize limited partition, it reserves maxsize (if
- maxsize
- is reached)
- - suggest_part() which adds the last partition limited by maxsize can
- be
- called on a partition a little bigger than maxsize due to cylinder
- boundary
- adjustments on previous partition creations. In that case, it doesn't
- use the
- full area.
- It occured for example with the current $fsedit::suggestions{server}.
- The fix chosen is to ensure the last suggest_part() is called with a
- size
- defined as maxsize <= size < maxsize + cylinder_size.
-
-2003/08/20 erwan
-
- * share/rpmsrate: Decreasing weight of pbs (pro),
- Increasing weight of ScalablePBS & Maui
-
-2003/08/20 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/20 François Pons <fpons at mandrakesoft.com>
-
- * mouse.pm: added emulate wheel support (a bit hacky though) (bug 3976)
-
- * install_any.pm: added missing require.
- added pubkey and rpmdb key importation.
-
- * Xconfig/parse.pm: fix bug 3976.
-
- * pkgs.pm: added pubkey support for medium.
-
- * share/list: added URPM::Signature module needed to parse pubkey and
- import them to rpmdb.
-
-2003/08/20 gbeauchesne
-
- * tools/x86_64/busybox: Add busybox/amd64 compiled with dietlibc
-
- * c/smp.c: Use x86 smp detection scheme on amd64 instead of the ugly dmesg
- workaround.
-
- * mdk-stage1/pcmcia_/cardmgr.c: Use "%p" specifier as "Base" is likely to
- be an address.
-
- * mdk-stage1/ppp/pppd/sys-linux.c: Use <net/if_arp.h> thusly bypassing
- need for <linux/byteorder/generic.h>
-
- * Makefile: Use busybox in stage2 on AMD64
-
-2003/08/20 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/fonts.tar.bz2: re-put etc/fonts/fonts.conf, pablo removed it in
- previous commit, it broke the whole installation program starting up :)
-
- * tools/make_lang_png_transparent.c: this file allows to make an
- antialiased black-on-white png, antialiased black-on-transparent
- it's used for perl-install/pixmaps/langs/lang-*.png
-
- * pixmaps/langs/lang-ve.png, pixmaps/langs/lang-gu.png,
- pixmaps/langs/lang-as.png, pixmaps/langs/lang-se.png,
- pixmaps/langs/lang-mr.png, pixmaps/langs/lang-uz.png,
- pixmaps/langs/lang-xh.png, pixmaps/langs/lang-ne.png,
- pixmaps/langs/lang-ml.png, pixmaps/langs/lang-li.png,
- pixmaps/langs/lang-zu.png, pixmaps/langs/lang-ku.png,
- pixmaps/langs/lang-uz@Cyrl.png, pixmaps/langs/lang-te.png,
- pixmaps/langs/lang-st.png, pixmaps/langs/lang-ss.png: make them
- transparent
-
-2003/08/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/da.po, share/po/ro.po, share/po/sv.po,
- share/po/bs.po, share/po/DrakX.pot, share/po/az.po, share/po/uz.po,
- share/po/cs.po, share/po/ar.po, share/po/ko.po, share/po/cy.po,
- share/po/tr.po, share/po/gl.po, share/po/ga.po, share/po/nl.po,
- share/po/ja.po, share/po/eo.po, share/po/wa.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/be.po, share/po/fr.po, share/po/ta.po,
- share/po/sl.po, share/po/es.po, share/po/fi.po, share/po/hu.po,
- share/po/pl.po, share/po/el.po, share/po/et.po, share/po/eu.po,
- share/po/sk.po, share/po/lv.po, share/po/bg.po, share/po/pt.po,
- share/po/zh_CN.po, share/po/sr.po, share/po/uk.po, share/po/af.po,
- share/po/zh_TW.po, share/po/he.po, share/po/hr.po, share/po/vi.po,
- share/po/id.po, share/po/uz@Cyrl.po, share/po/th.po, share/po/de.po,
- share/po/ru.po, share/po/fa.po, share/po/pt_BR.po, share/po/mt.po,
- share/po/nb.po, share/po/ca.po, share/po/lt.po, share/po/is.po: updated
- pot file
-
- * keyboard.pm, share/keyboards.tar.bz2: Added choice of Irish keyboard;
- updated the Georgian "latin layout" one.
-
- * share/po/it.po: updated pot file
- updated Italian file
-
-2003/08/20 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm, modules.pm, install_steps.pm: load
- detected firewire modules during install
-
- * detect_devices.pm: add firewire_probe() and use it in probeall()
-
- * fsedit.pm, security/l10n.pm: fix english (thanks to Arpad Biro)
-
-2003/08/20 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: Text typos - Arpad Biro
-
-2003/08/20 siegel
-
- * share/po/de.po: updates
-
-2003/08/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: standalone wizards: increase height to prevent some hidden or
- cutted
- buttons (some locales and some steps may still be partially hidden)
-
- * standalone/logdrake: annotate load for translators (Arpad Biro)
- only complain if an error really happened
-
- * standalone.pm: frederic crozat said that border is ugly for standalone
- tools.
- so let it be used only by install.
-
- * share/po/fr.po: fix #4787
-
-2003/08/20 Pixel <pixel at mandrakesoft.com>
-
- * detect_devices.pm: add firewire_probe() and use it in probeall()
-
- * modules.pm, install_steps.pm, install_steps_interactive.pm: load
- detected firewire modules during install
-
-2003/08/19 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Partially updated
-
-2003/08/19 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/tools.pm: fix internet reconnection in mcc
-
-2003/08/19 erwan
-
- * share/rpmsrate: Switching to ScalablePBS
-
- * install_any.pm: Fixing Nvidia detection.. Many were missing due to wrong
- regexp
-
-2003/08/19 gbeauchesne
-
- * mdk-stage1/dietlibc/librpc/pmap_getport.c: Gracefully handle IPPROTO_TCP
- in pmap_getport() [PR libc/4943]
-
- * share/list: lib64 fixes. Make sure we grab Gtk2.pm
-
- * mdk-stage1/dietlibc/librpc/xdr.c, mdk-stage1/dietlibc/librpc/clnt_udp.c,
- mdk-stage1/dietlibc/librpc/clnt_tcp.c: 64-bit clean RPC code enough to
- let MDK stage1 do NFS mounts
-
- * mdk-stage1/dietlibc/librpc/xdr_mem.c,
- mdk-stage1/dietlibc/librpc/xdr_rec.c: 64-bit clean RPC code enough to
- let MDK stage1 do NFS mounts
- XDR security fix from glibc [CAN 2003-0028]
-
- * mdk-stage1/dietlibc/lib/htonl.c, mdk-stage1/dietlibc/lib/htons.c,
- mdk-stage1/dietlibc/include/netinet/in.h: Fix htonl() on 64-bit
- platforms
-
- * mdk-stage1/Makefile: Build ppp stuff on AMD64 too
-
- * Xconfig/card.pm, install_steps_gtk.pm: Use xf4 on AMD64 too
-
- * mdk-stage1/ppp/pppd/utils.c: Fix varargs for AMD64
-
- * install_any.pm:
- - Don't care about BIGMEM stuff for IA-64 & AMD64
- - Handle platforms that are only aware of all.img
-
- * partition_table.pm:
- - Merge in AMD64 tree
- - Handle EFI partitions on IA-64
-
- * fsedit.pm: Handle /boot/efi as an EFI partition
-
- * any.pm: Merge from AMD64 branch: lib64 fixes
-
- * mdk-stage1/dietlibc/librpc/xdr_stdio.c: XDR security fix from glibc [CAN
- 2003-0028]
-
- * share/list.ia64, share/list.x86_64: AMD64 updates for 9.2
-
- * mdk-stage1/dietlibc/include/sys/types.h: Really match dietlibc 0.22 for
- <sys/types.h> u_long definition though
- it ought to be uint32_t.
-
- * fs.pm: Handle EFI partitions. umount syscall does not exist on AMD64,
- use umount2
-
-2003/08/19 keld
-
- * share/po/da.po: updates
- soft/rpmdrake/po/da.po gi/perl-install/share/po/da.po
- soft/bootsplash/po/da.po
-
-2003/08/19 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/ro.po, share/po/et.po, share/po/wa.po,
- share/po/nl.po, share/po/ja.po, share/po/uz@Cyrl.po, share/po/el.po,
- share/po/th.po, share/po/be.po, share/po/gl.po, share/po/id.po,
- share/po/bg.po, share/po/uz.po, share/po/af.po, share/po/ru.po,
- share/po/tg.po, share/po/lv.po, share/po/ca.po, share/po/vi.po,
- share/po/ko.po, share/po/bs.po, share/po/is.po, share/po/he.po,
- share/po/lt.po, share/po/ta.po, share/po/sl.po, share/po/fi.po,
- share/po/de.po, share/po/DrakX.pot, share/po/uk.po, share/po/eu.po,
- share/po/ga.po, share/po/tr.po, share/po/mt.po, share/po/cy.po,
- share/po/es.po, share/po/sv.po, share/po/fr.po, share/po/sr.po,
- share/po/zh_TW.po, share/po/da.po, share/po/nb.po, share/po/az.po,
- share/po/pt_BR.po, share/po/eo.po, share/po/sk.po, share/po/pl.po,
- share/po/hr.po, share/po/pt.po, share/po/sq.po, share/po/hu.po,
- share/po/sr@Latn.po, share/po/it.po: updated pot file
-
- * standalone/drakbackup, help.pm: Fixed typos
-
- * share/po/fa.po: updated Farsi file
- updated pot file
-
- * share/po/cs.po, share/po/ar.po: updated Arabic and Czech files
- updated pot file
-
- * share/fonts.tar.bz2: Updated Nimbus Sans L font (some wrong cyrillic
- glyphs fixed by
- Mashrab Kuvatov <kmashrab@uni-bremen.de>)
-
-2003/08/19 Pixel <pixel at mandrakesoft.com>
-
- * modules.pm, standalone/drakxtv, detect_devices.pm, harddrake/data.pm,
- mouse.pm, standalone/draksound: full pci probe does not freeze anymore,
- removing code work-arounding the freeze
-
- * install_steps.pm: add resume=/dev/XXX where /dev/XXX is the swap
- partition (when the swap partition is bigger than ram size)
-
- * standalone/drakpxe: "xxx or xxx" in list context is always bad!
-
- * network/netconnect.pm: perl_checker compliance (revert non usefull titi
- change)
-
- * standalone/drakhelp, standalone/drakperm, standalone/drakautoinst,
- pkgs.pm: perl_checker compliance
-
- * share/po/help_xml2pm.pl: remove debug code
- adapt to new documentation layout
-
- * standalone/adduserdrake: fix any::write_passwd_user() call
-
- * modules/interactive.pm: do translate choices N_("Yes"), N_("No"),
- N_("See hardware info")
- (thanks to Arpad Biro)
- full pci probe does not freeze anymore, removing code work-arounding the
- freeze
-
- * help.pm: new version from XML doc
-
-2003/08/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * detect_devices.pm: help perl_checker somewhat
- pci hardware discovery: do full-probe by default
-
- * standalone/logdrake: mark one more string as translatable (spoted by
- Arpad Biro)
- remove unused variable
-
- * ugtk2.pm: remove broken and unused gtkexpand()
-
- * standalone/drakconnect: mark one more string as translatable (spoted by
- Arpad Biro)
- readd LANGUAGE=C
- pablo say that redefining LC_* is useless if LC_ALL is defined as the
- later overrides and take priority over the former
- add perl_checker hint
- (update_intbutt) consolidate internet connection button switch code
- - use real known interface name everywhere not guessed one
- (having eth0 and eth9 would resulting in displaying eth0 & eth1
- before), thus enabling to get rid of get_eth_ip()
- - replace build_list() by update_list() that fix flicker on list
- update: only add/remove added/removed interfaces, just update fields
- for others
-
- * install_steps.pm: fix brown paper bug #4702 ...
-
- * drakxtools.spec: first bits of 9.2-0.32mdk
-
- * interactive/gtk.pm: show advanced options by default if --expert was
- passed or if expect
- checkbox was checked (#4353)
-
- * commands.pm, c/stuff.xs.pl: pci hardware discovery: do full-probe by
- default
-
- * standalone/drakfloppy: translate one more string (already translated as
- this is a double)
-
-2003/08/18 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated with current pot
-
-2003/08/18 keld
-
- * share/po/da.po: Updates
- soft/menu-messages/da.po soft/userdrake2/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/08/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/hu.po, share/po/it.po: updated pot file
- updated pot file
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/zh_CN.po, share/po/ro.po, share/po/cs.po, share/po/wa.po,
- share/po/nl.po, share/po/ja.po, share/po/uz@Cyrl.po, share/po/el.po,
- share/po/th.po, share/po/be.po, share/po/gl.po, share/po/bg.po,
- share/po/uz.po, share/po/af.po, share/po/ru.po, share/po/tg.po,
- share/po/lv.po, share/po/ca.po, share/po/vi.po, share/po/ar.po,
- share/po/ko.po, share/po/bs.po, share/po/is.po, share/po/he.po,
- share/po/lt.po, share/po/ta.po, share/po/sl.po, share/po/fi.po,
- share/po/fa.po, share/po/de.po, share/po/DrakX.pot, share/po/uk.po,
- share/po/eu.po, share/po/ga.po, share/po/tr.po, share/po/mt.po,
- share/po/cy.po, share/po/es.po, share/po/sv.po, share/po/fr.po,
- share/po/sr.po, share/po/zh_TW.po, share/po/az.po, share/po/nb.po,
- share/po/pt_BR.po, share/po/eo.po, share/po/sk.po, share/po/hr.po,
- share/po/pl.po, share/po/pt.po, share/po/sq.po, share/po/sr@Latn.po:
- updated pot file
-
- * share/po/da.po: updated Danish file
- updated pot file
-
-2003/08/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: typo fix
-
- * drakxtools.spec: 9.2-0.31mdk (aka do not forget about killing poulpy)
- 9.2-0.30mdk
-
-2003/08/18 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: updated
-
-2003/08/18 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - fix up/down interface detection
- - do not wipe out IP and NETMASK when "No ip" is filled in
- - fix typo
-
-2003/08/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/cs.po, share/po/nb.po, share/po/uz@Cyrl.po,
- share/po/uz.po: updated Czech, Indonesian, Norwegian and Uzbek files
-
- * standalone/drakTermServ: splitted too big text into smaller chunks for
- translators
-
-2003/08/18 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: progess -> progress typo
-
-2003/08/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: typo fix
- (configure_lan) fix crash on interface enabling/disabling
- (get_intf_status) factorize translations and use upcase initale
- better message when no ip (aka interface down or broken)
-
- * network/netconnect.pm, network/isdn.pm, network/modem.pm: fix some
- previous callback in drakconnect wizard mode
-
- * standalone/drakfloppy: perl_checker fixes
- sort modules and directories in treeview
- - fix long-standing broken mkbootdisk call bug
- - btw fix the passing of mkinirtd arguments to mkbootdisk
- - save the modules list on exit and restore it on load
- - simplify modules list managment btw
- - consolidate some code in get_file_size()
- try to be more user friendly:
- - if no error, display a success message, then exit
- - on error, instead of displaying the raw exit code that has no
- meaning for
- the end user, display in red the log message of mkbootdisk
- - remove insane expert button and so called expert frame
- make testing mode usefull for debugging drakfloppy
-
- * .perl_checker:
- - we do not use anymore perl-GTK
- - let be able to parse ugtk2
-
- * standalone/harddrake2: display the right information when no selected
- device
- use new create_dialog api to get better modal dialogs
-
- * ugtk2.pm (_create_dialog, create_dialog) let support the same api as
- new() and
- threat transient option
- (info_dialog) introduce another dialog helper
- kill buggy and no more used gtkbuttonset()
-
-2003/08/17 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: allow hostname change in mcc
- perl_checker
-
-2003/08/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
- updated Farsi and Hungarian files
-
- * share/po/sk.po, share/po/es.po: updated Hungarian file
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/fa.po: updated Farsi and Hungarian files
-
-2003/08/17 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/08/16 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
- updated Bulgarian, Estonian, Basque, Hungarian, Albanian, Uzbek and
- Chinese
-
- * share/po/et.po, share/po/bg.po, share/po/sq.po, share/po/zh_CN.po,
- share/po/eu.po, share/po/uz@Cyrl.po, share/po/uz.po: updated Bulgarian,
- Estonian, Basque, Hungarian, Albanian, Uzbek and Chinese
-
-2003/08/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sq.po, share/po/lv.po, share/po/hu.po, share/po/eo.po,
- share/po/cs.po, share/po/uz@Cyrl.po, share/po/sr@Latn.po,
- share/po/uz.po, share/po/af.po, share/po/ga.po, share/po/id.po,
- share/po/tg.po, share/po/sl.po, share/po/da.po, share/po/th.po,
- share/po/hr.po, share/po/uk.po, share/po/ko.po, share/po/mt.po,
- share/po/lt.po, share/po/bs.po, share/po/wa.po, share/po/sr.po,
- share/po/nl.po, share/po/de.po, share/po/fi.po, share/po/ro.po,
- share/po/he.po, share/po/tr.po, share/po/bg.po, share/po/fr.po,
- share/po/zh_TW.po, share/po/DrakX.pot, share/po/es.po, share/po/cy.po,
- share/po/it.po, share/po/pt.po, share/po/zh_CN.po, share/po/pt_BR.po,
- share/po/sv.po, share/po/ru.po, share/po/is.po, share/po/ja.po,
- share/po/be.po, share/po/ta.po, share/po/fa.po, share/po/el.po,
- share/po/vi.po, share/po/et.po, share/po/sk.po, share/po/pl.po,
- share/po/ar.po, share/po/ca.po, share/po/nb.po, share/po/eu.po,
- share/po/gl.po, share/po/az.po: updated pot file
-
-2003/08/14 keld
-
- * share/po/da.po: update
- gi/perl-install/share/po/da.po
- updates
- soft/drakcronat/po/da.po soft/rpmdrake/po/da.po
- soft/urpmi/po/da.po gi/perl-install/share/po/da.po
- Updates
- po/po/da.po gi/perl-install/share/po/da.po
-
-2003/08/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bg.po, share/po/nb.po: updated Bulgarian and Norwegian files
- updated Turkish file
-
- * share/po/sq.po, share/po/lv.po, share/po/hu.po, share/po/eo.po,
- share/po/cs.po, share/po/uz@Cyrl.po, share/po/sr@Latn.po,
- share/po/uz.po, share/po/af.po, share/po/ga.po, share/po/id.po,
- share/po/tg.po, share/po/sl.po, share/po/da.po, share/po/th.po,
- share/po/hr.po, share/po/uk.po, share/po/ko.po, share/po/mt.po,
- share/po/lt.po, share/po/bs.po, share/po/wa.po, share/po/sr.po,
- share/po/de.po, share/po/fi.po, share/po/ro.po, share/po/he.po,
- share/po/tr.po, share/po/fr.po, share/po/zh_TW.po, share/po/DrakX.pot,
- share/po/es.po, share/po/cy.po, share/po/it.po, share/po/pt.po,
- share/po/zh_CN.po, share/po/pt_BR.po, share/po/sv.po, share/po/ru.po,
- share/po/is.po, share/po/ja.po, share/po/be.po, share/po/ta.po,
- share/po/fa.po, share/po/el.po, share/po/vi.po, share/po/et.po,
- share/po/sk.po, share/po/pl.po, share/po/ar.po, share/po/ca.po,
- share/po/eu.po, share/po/gl.po, share/po/az.po: updated Turkish file
-
- * share/po/nl.po: updated Dutch file
- updated Turkish file
-
-2003/08/14 Pixel <pixel at mandrakesoft.com>
-
- * c/stuff.xs.pl: in floppy_info(), check ioctl success and use
- FDPOLLDRVSTAT (copied from kudzu code)
-
-2003/08/14 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: start user definable crontab entry - sorry
- translators, new strings :(
-
-2003/08/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/zh_TW.po, share/po/eo.po, share/po/eu.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/be.po, share/po/et.po,
- share/po/pl.po, share/po/tr.po, share/po/ca.po, share/po/uk.po,
- share/po/it.po, share/po/is.po, share/po/th.po, share/po/mt.po,
- share/po/id.po, share/po/fi.po, share/po/el.po, share/po/wa.po,
- share/po/lt.po, share/po/ar.po, share/po/bg.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/nl.po, share/po/pt.po, share/po/fa.po,
- share/po/sl.po, share/po/de.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/sr@Latn.po, share/po/he.po, share/po/hr.po, share/po/gl.po,
- share/po/nb.po, share/po/da.po, share/po/fr.po, share/po/cs.po,
- share/po/bs.po, share/po/sk.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sq.po, share/po/hu.po, share/po/ga.po, share/po/tg.po,
- share/po/ta.po, share/po/sr.po, share/po/ko.po, share/po/ro.po,
- share/po/es.po, share/po/uz.po, share/po/az.po, share/po/af.po,
- share/po/lv.po: updated Turkish file
-
-2003/08/14 Pixel <pixel at mandrakesoft.com>
-
- * c/stuff.xs.pl: in floppy_info(), check ioctl success and use
- FDPOLLDRVSTAT (copied from kudzu code)
-
-2003/08/14 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: start user definable crontab entry - sorry
- translators, new strings :(
-
-2003/08/13 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect: fix mcc lan changes (fix at least #4088)
-
-2003/08/13 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/13 François Pons <fpons at mandrakesoft.com>
-
- * rescue/list.i386: updated with xfs_progs.
-
- * pkgs.pm: added log for checking deselection (check deadlock unless gtk
- are doing them).
- workaround for rpmdb problems of opening Conflictname and Triggername
- files.
-
- * share/list.i386: updated with newer xfs_progs.
-
- * standalone/drakpxe: fixed to match new pxe dhcp.conf configuration file.
-
- * install_any.pm: fixed to build an inflexion point in list file (so that
- urpmi can found it).
- generate a list file if a macro is used (and only in this case).
- fixed with_hdlist possibly incorrect.
- added tiny support for arch dependant directory.
-
-2003/08/13 gbeauchesne
-
- * Makefile: Use bash in stage2 on IA-64
-
- * mdk-stage1/Makefile: Fix merge from amd64-branch
-
- * rescue/list.x86_64, rescue/list: Merge with amd64-branch (rpm libdir is
- always /usr/lib/rpm, update lists)
-
-2003/08/13 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/po/cy.po, share/po/zh_TW.po, share/po/eo.po,
- install_steps_interactive.pm, share/po/eu.po, share/po/zh_CN.po,
- share/po/vi.po, share/po/be.po, standalone/drakbackup, share/po/et.po,
- share/po/pl.po, share/po/tr.po, share/po/ca.po, share/po/uk.po,
- share/po/it.po, share/po/is.po, share/po/th.po, share/po/mt.po,
- share/po/id.po, share/po/fi.po, share/po/el.po, share/po/wa.po,
- share/po/lt.po, share/po/ar.po, share/po/bg.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/nl.po, share/po/pt.po, share/po/fa.po,
- share/po/sl.po, share/po/br.po, share/po/de.po, share/po/uz@Cyrl.po,
- share/po/ja.po, share/po/sr@Latn.po, share/po/he.po, share/po/hr.po,
- share/po/gl.po, share/po/nb.po, share/po/da.po, share/po/fr.po,
- share/po/cs.po, share/po/bs.po, share/po/sk.po, share/po/sv.po,
- share/po/sq.po, share/po/hu.po, share/po/ga.po, share/po/tg.po,
- share/po/ta.po, share/po/sr.po, share/po/ko.po, share/po/ro.po,
- share/po/es.po, standalone/drakboot, share/po/uz.po, share/po/az.po,
- share/po/af.po, share/po/lv.po: some english typo fixes thx to Arpad
- Biro
-
- * mdk-stage1/probing.c: full pci probe can't be run with fopen/fread
- because we might read too many bytes. this was the reason for freezes on
- some boxes from drakx, that may impact stage1 also, so better change
- that.
-
-2003/08/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: corrected typo
-
- * share/po/cy.po, share/po/zh_TW.po, share/po/eo.po, share/po/eu.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/be.po, share/po/et.po,
- share/po/pl.po, share/po/tr.po, share/po/ca.po, share/po/uk.po,
- share/po/it.po, share/po/is.po, share/po/th.po, share/po/mt.po,
- share/po/id.po, share/po/fi.po, share/po/el.po, share/po/wa.po,
- share/po/lt.po, share/po/ar.po, share/po/bg.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/nl.po, share/po/pt.po, share/po/fa.po,
- share/po/sl.po, share/po/de.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/sr@Latn.po, share/po/he.po, share/po/hr.po, share/po/gl.po,
- share/po/nb.po, share/po/da.po, share/po/fr.po, share/po/cs.po,
- share/po/bs.po, share/po/sk.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sq.po, share/po/hu.po, share/po/ga.po, share/po/tg.po,
- share/po/ta.po, share/po/sr.po, share/po/ko.po, share/po/ro.po,
- share/po/es.po, share/po/uz.po, share/po/az.po, share/po/af.po,
- share/po/lv.po: updated pot file
- updated pot file
-
- * harddrake/sound.pm: fixed typo
-
-2003/08/12 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * drakxtools.spec: drakxtools depends on gurpmi (do_pkgs->install for
- example)
-
-2003/08/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/he.po: updated Hebrew file
-
- * share/po/cs.po: updated Czech file
- updated Czech file
-
-2003/08/12 Pixel <pixel at mandrakesoft.com>
-
- * share/gen_locales.sh: by the way, gen_locales.sh makes an error because
- /usr/X11R6/lib/X11/locale/common doesn't exist anymore. It used to
- contain
- ximcp.so.2 xlcDef.so.2 xlcUTF8Load.so.2
- xlibi18n.so.2 xlocale.so.2 xomGeneric.so.2
- in mdk9.0, but mdk9.1 install was without it and it was ok...
-
- * diskdrake/smbnfs_gtk.pm: do pop the "do you want to install samba?"
- (otherwise when cancel is pressed,
- drakconf thinks the install exited abnormally since no window was
- embedded
- whereas "diskdrake --smb" is normally embedded)
-
- * lang.pm: > During the installation when one chooses Uzbek (latin) as a
- language the next
- > installation stage comes in English. However, DrakX creates
- > /usr/share/locale_special/uz/LC_MESSAGES/libDrakX.mo and
- > /usr/share/locale/uz/LC_* files.
- this comes from during_install__l2charset() returning UNICODE which is
- not recognised.
-
-2003/08/12 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: medias -> media
- Mb -> MB [Bug 4381]
-
-2003/08/11 François Pons <fpons at mandrakesoft.com>
-
- * share/rpmsrate: added bash-completion in TERMINALS section.
-
-2003/08/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/zh_TW.po, share/po/eo.po, share/po/eu.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/be.po, share/po/pl.po,
- share/po/tr.po, share/po/ca.po, share/po/uk.po, share/po/it.po,
- share/po/is.po, share/po/th.po, share/po/mt.po, share/po/id.po,
- share/po/fi.po, share/po/el.po, share/po/wa.po, share/po/lt.po,
- share/po/ar.po, share/po/bg.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/nl.po, share/po/pt.po, share/po/fa.po, share/po/sl.po,
- share/po/de.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/sr@Latn.po, share/po/he.po, share/po/hr.po, share/po/gl.po,
- share/po/da.po, share/po/fr.po, share/po/cs.po, share/po/bs.po,
- share/po/sk.po, share/po/DrakX.pot, share/po/sv.po, share/po/sq.po,
- share/po/ga.po, share/po/tg.po, share/po/ta.po, share/po/sr.po,
- share/po/ko.po, share/po/ro.po, share/po/es.po, share/po/uz.po,
- share/po/az.po, share/po/af.po, share/po/lv.po: updated pot file
-
- * share/po/et.po, share/po/nb.po, share/po/hu.po: updated Estonian,
- Hungarian and Norvegian files
- updated pot file
-
-2003/08/11 Pixel <pixel at mandrakesoft.com>
-
- * standalone/XFdrake: more newbie-friendly message:
- "You need to log out and back in again for changes to take effect"
- instead of "Please relog into %s to activate the changes"
- (as suggested on cooker, thanks!)
-
- * install2.pm: when any::setupBootloader_simple() fail, use
- any::setupBootloader() afterwards
-
- * install_steps_interactive.pm: when any::setupBootloader_simple() fail,
- use any::setupBootloader() afterwards
- perl_checker compliance
-
- * .perl_checker: why were c, pkgs and URPM::Resolve excluded? i don't
- know, but that's much
- better when perl_checker can see them
-
- * security/msec.pm, ugtk2.pm, scanner.pm, security/l10n.pm,
- install_gtk.pm, services.pm: perl_checker compliance
-
- * lvm.pm: fix typo (fix bug #4239)
-
- * bootloader.pm: perl_checker compliance
- sanitize_ver() can fail and return ''
-
-2003/08/11 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Search for files to restore.
- Fix looping signal_connect in catalog restore.
- GUI fixes - Fabrice FACORAT.
-
-2003/08/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bg.po: updated Bulgarian file
-
-2003/08/10 Pixel <pixel at mandrakesoft.com>
-
- * install_any.pm, install_steps_interactive.pm, standalone/adduserdrake,
- any.pm: use $::prefix instead of passing $prefix to functions
-
- * install_steps.pm: use $::prefix instead of passing $prefix to functions
- since we wrote the password in /etc/passwd, we must convert to shadow
-
- * interactive/gtk.pm, diskdrake/hd_gtk.pm: use
- Gtk2::Button->new_with_label instead of Gtk2::Button->new for some
- widgets otherwise underscores become underlines (bug #4678)
-
- * network/netconnect.pm: perl_checker compliance
- replace "Press \"Forward\" to continue" with "Press \"%s\" to continue"
- (bug #4564)
-
-2003/08/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/fa.po: updated Farsi file
-
-2003/08/08 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: add gtkset_alignment
-
-2003/08/08 keld
-
- * share/po/da.po: Updates
- soft/control-center/po/da.po soft/ftw/po/da.po
- soft/mdkhtmlbrowser/po/da.po soft/rpmdrake/po/da.po
- soft/urpmi/po/da.po soft/userdrake2/po/da.po
- gi/perl-install/share/po/da.po
-
-2003/08/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/zh_TW.po, share/po/eo.po, share/po/eu.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/be.po, share/po/pl.po,
- share/po/tr.po, share/po/ca.po, share/po/uk.po, share/po/it.po,
- share/po/is.po, share/po/th.po, share/po/mt.po, share/po/id.po,
- share/po/fi.po, share/po/el.po, share/po/wa.po, share/po/lt.po,
- share/po/ar.po, share/po/bg.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/nl.po, share/po/pt.po, share/po/fa.po, share/po/sl.po,
- share/po/de.po, share/po/uz@Cyrl.po, share/po/ja.po,
- share/po/sr@Latn.po, share/po/he.po, share/po/hr.po, share/po/gl.po,
- share/po/nb.po, share/po/da.po, share/po/fr.po, share/po/cs.po,
- share/po/bs.po, share/po/sk.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/hu.po, share/po/ga.po, share/po/tg.po, share/po/ta.po,
- share/po/sr.po, share/po/ko.po, share/po/ro.po, share/po/es.po,
- share/po/uz.po, share/po/az.po, share/po/af.po, share/po/lv.po: updated
- pot file
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/sq.po: updated Albanian file
- updated pot file
-
-2003/08/07 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated Hebrew and Swedish files
-
- * share/po/de.po: Small fix (too long string)
-
- * share/po/he.po: updated Hebrew file
- updated Hebrew and Swedish files
-
-2003/08/07 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec:
- - drakxservices: xinetd services have a special treatment
- - localedrake: fix the "zh_TW with country China" case
- - no more stock icons
-
-2003/08/07 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix removed users code (thanks gc). Enable
- .backupignore.
- Clean up spastic progress bar. Add more info in "View Config"
- Deal with users that are deleted from the system [Bug 4541].
-
-2003/08/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po, share/po/he.po: updated Hebrew and Swedish files
-
-2003/08/06 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Update (partially)
-
-2003/08/06 David Baudens <baudens at mandrakesoft.com>
-
- * standalone/drakfloppy: Use capital letter when needed
-
-2003/08/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/az.po: updated Azeri file
-
-2003/08/06 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: try to restore the MBR using "lilo -u" for users not liking the
- default
- bootloader automatic configuration (eg: bug #4415)
-
- * services.pm: in drakxservices, display differently services handled by
- xinetd (bug #4516)
- create services_raw() which returns all the info out of "chkconfig
- --list"
- perl_checker compliance
-
-2003/08/05 François Pons <fpons at mandrakesoft.com>
-
- * install2.pm: added discovery and download meta_class facility in VERSION
- file.
-
- * pkgs.pm: checking transaction allow ordering them ;-)
- make default size of transaction to 13 (?) and avoid rpm ordering which
- seems
- nasty at present (missing configuration read ?).
-
-2003/08/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: ghanese ppl don't talk french!?
-
-2003/08/05 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: Turkish "F" keyboard was unavailable due to a typo
-
- * share/po/sk.po, share/po/it.po: updated Italian file
-
-2003/08/05 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: do not invert Ok/Cancel for mdk 9.2 (per IHM team request)
- remove stock icons (per IHM team request)
-
- * any.pm: fix an old typo
-
- * standalone/drakbackup, standalone/drakfloppy, standalone/logdrake,
- diskdrake/hd_gtk.pm, standalone/harddrake2, standalone/drakgw,
- standalone/drakperm, standalone/draksec,
- Xconfig/resolution_and_depth.pm, standalone/mousedrake, Xconfig/main.pm,
- interactive/gtk.pm, standalone/drakboot, standalone/net_monitor,
- services.pm, standalone/drakbug, standalone/drakfont,
- standalone/drakconnect: remove stock icons (per IHM team request)
-
- * lang.pm:
- - fix system_locales_to_ourlocale() returning { lang => 'zh' } for
- $locale_lang == 'zn_CN.UTF8'
- - in standard_locale, return zh_TW instead of zh_CN for lang=zh_TW
- country=CN
- - cleanup standard_locale
-
- * install_any.pm: add flag UTF8 for rpmsrate
-
-2003/08/05 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: checking transaction allow ordering them ;-)
- make default size of transaction to 13 (?) and avoid rpm ordering which
- seems
- nasty at present (missing configuration read ?).
- fixed ordering of packages.
- fixed otherOnly for package selection not correctly updated (according
- to
- changes in perl-URPM).
-
- * install2.pm: added discovery and download meta_class facility in VERSION
- file.
-
-2003/08/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * drakxtools.spec: commit titi's requested typos changes
-
- * ftp.pm: revert my bad change
-
-2003/08/05 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: do not invert Ok/Cancel for mdk 9.2 (per IHM team request)
- remove stock icons (per IHM team request)
-
- * interactive/gtk.pm, standalone/mousedrake, standalone/drakconnect,
- standalone/draksec, standalone/drakperm, diskdrake/hd_gtk.pm,
- standalone/net_monitor, standalone/drakbackup, standalone/harddrake2,
- standalone/drakgw, standalone/drakbug, standalone/drakboot,
- Xconfig/resolution_and_depth.pm, Xconfig/main.pm, standalone/logdrake,
- standalone/drakfloppy, services.pm, standalone/drakfont: remove stock
- icons (per IHM team request)
-
-2003/08/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * drakxtools.spec: commit titi's requested typos changes
-
-2003/08/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * drakxtools.spec: commit titi's requested typos changes
-
-2003/08/04 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/08/04 François Pons <fpons at mandrakesoft.com>
-
- * pkgs.pm: added log.
- updated with newer perl-URPM
-
-2003/08/04 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ftp.pm: don't have two / in the urpmi url or it seems it causes problems
- for some people (some ftp servers? wget/curl? proxy? no sé..)
-
- * drakxtools.spec: 9.2-0.27mdk
-
- * ugtk2.pm: fix not possible to select with mouse anymore (rpmdrake etc)
- revert "use checkboxes instead of icons"
-
-2003/08/04 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sr.po, share/po/sq.po, share/po/mt.po, share/po/sr@Latn.po,
- share/po/nb.po, share/po/hr.po, share/po/be.po, share/po/sv.po,
- share/po/vi.po, share/po/fi.po, share/po/ru.po, share/po/eo.po,
- share/po/sl.po, share/po/el.po, share/po/bg.po, share/po/gl.po,
- share/po/DrakX.pot, share/po/az.po, share/po/bs.po, share/po/eu.po,
- share/po/pt.po, share/po/zh_TW.po, share/po/tr.po, share/po/sk.po,
- share/po/ar.po, share/po/it.po, share/po/af.po, share/po/ga.po,
- share/po/da.po, share/po/ta.po, share/po/lt.po, share/po/id.po,
- share/po/ko.po, share/po/cy.po, share/po/is.po, share/po/tg.po,
- share/po/fa.po, share/po/uz@Cyrl.po, share/po/pt_BR.po, share/po/pl.po,
- share/po/nl.po, share/po/lv.po, share/po/cs.po, share/po/th.po,
- share/po/ca.po, share/po/ro.po, share/po/ja.po, share/po/zh_CN.po,
- share/po/es.po, share/po/uz.po, share/po/hu.po, share/po/wa.po,
- share/po/fr.po, share/po/de.po: updated pot file
-
- * share/po/he.po: updated Hebrew file
- updated pot file
-
- * share/po/et.po: updated Estonian file
- updated pot file
-
- * share/po/uk.po: updated Ukrainian file
- updated pot file
-
- * keyboard.pm: removed bad keyboard from list for Swedish;
-
- * lang.pm: removed 'xh_ZA' in double in @locales
- updated list of available locales
-
-2003/08/04 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: fix ask_window_manager_to_logout for gnome
-
- * ugtk2.pm: don't export destroy_window(), this function doesn't exist!
- (thanks to perl_checker)
- perl_checker compliance
- disable selecting text and popping the contextual menu
- (GUI team says it's *horrible* to be able to do select text!)
-
- * drakxtools.spec: gc: commit pixel's 9.2-0.26mdk changelog diff (pixel
- sux)
-
-2003/08/04 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/08/04 Warly <warly at mandrakesoft.com>
-
- * share/logo-mandrake.png: Add new cooker logo for installation
-
-2003/08/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/fa.po: Added Farsi file
-
-2003/08/03 Pixel <pixel at mandrakesoft.com>
-
- * bootloader.pm: don't overwrite $o->{bootloader}{method} (much nicer for
- auto_installs)
-
- * install_steps_interactive.pm: more complete name for the setRootPassword
- step: "Set root password and
- network authentication methods" instead of simply "Set root password"
-
- * interactive/gtk.pm: OptionMenus do not have an horizontal scroll-bar.
- This can cause havoc for
- long strings. So use combo box as we used to do in those cases
- (eg: diskdrake Create dialog box in expert mode) (bug #4484)
-
- * rescue/make_rescue_img: fix /sbin/insmod /sbin/rmmod and /sbin/lsmod
- which were dead symlinks
- (to /etc/alternatives/something)
-
- * rescue/guessmounts:
- - copy /etc/mtab to /mnt/etc/mtab to have a nice chrooted "mount" or
- "df"
- - some perl_checker compliance
-
-2003/08/03 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Tool tips.
-
-2003/08/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2003/08/01 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm, install_steps.pm, network/smb.pm,
- install_steps_interactive.pm:
- - move write_smb_conf() from install_any to network::smb
- - rename setAuthentication() to set_authentication()
- - move the work of set_authentication() from install_any to any
- - move the per-authentification kind questions from
- install_steps_interactive::setRootPassword() to
- any::ask_authentification_parameters()
- - various cleanup in code prompting authentification questions
- - call install_any::set_authentication() in
- install_steps::setRootPassword()
- instead of waiting for the installPackages step to be done
- (since setRootPassword occurs *after* packages installation)
- - don't call set_authentification() in install_steps::addUser()
- (why was this done there??)
- => these changes will allow drakauth
-
- * drakxtools.spec: re-adding with -kb
- add drakauth
-
- * Xconfig/xfreeX.pm, Xconfig/parse.pm, Xconfig/xfree4.pm,
- Xconfig/xfree3.pm: => do as Chris Picton suggested
- Chris Picton said (nearly one year ago :-/) :
- I have found the need for many low res screen resolutions for such
- thingas as movie playing, xmame, etc.
-
- The method XFdrake uses to enable modes is to enumerate each mode in the
- XF86Config file. For example (a newly created file):
-
- Subsection "Display"
- Depth 24
- Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480"
- EndSubsection
-
- It would be better (at least under XFree 4, which automatically provides
- resoltions from the monitor, if it is capable), to not limit the modes
- provided to the user
-
- If I use instead, the following:
-
- Subsection "Display"
- Depth 24
- Virtual 1280 960
- EndSubsection
-
- My maximum mode is exactly the same as before, but I have many more low
- resolution modes.
-
- * any.pm, install_any.pm:
- - move write_smb_conf() from install_any to network::smb
- - rename setAuthentication() to set_authentication()
- - move the work of set_authentication() from install_any to any
- - move the per-authentification kind questions from
- install_steps_interactive::setRootPassword() to
- any::ask_authentification_parameters()
- - various cleanup in code prompting authentification questions
- - call install_any::set_authentication() in
- install_steps::setRootPassword()
- instead of waiting for the installPackages step to be done
- (since setRootPassword occurs *after* packages installation)
- - don't call set_authentification() in install_steps::addUser()
- (why was this done there??)
- => these changes will allow drakauth
- use $::prefix
-
- * standalone/drakauth, Makefile.config: add drakauth
-
- * pixmaps/langs/lang-ku.png, pixmaps/langs/lang-uz@Cyrl.png,
- pixmaps/langs/lang-gu.png, pixmaps/langs/lang-zu.png,
- pixmaps/langs/lang-sr@Latn.png, pixmaps/langs/lang-ne.png,
- pixmaps/langs/lang-se.png, pixmaps/langs/lang-xh.png,
- pixmaps/langs/lang-as.png, pixmaps/langs/lang-st.png,
- pixmaps/langs/lang-li.png, pixmaps/langs/lang-ss.png,
- pixmaps/langs/lang-ve.png, pixmaps/langs/lang-ml.png: re-adding with -kb
- removing for re-adding with -kb
-
-2003/08/01 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Add gnome calculator and charmap
-
-2003/08/01 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po: updated Chinese file
-
- * lang.pm: Added some more languages to the list;
- defined kde fonts for some languages
-
- * pixmaps/langs/lang-zu.png, pixmaps/langs/lang-te.png,
- pixmaps/langs/lang-mr.png, pixmaps/langs/lang-uz@Cyrl.png,
- pixmaps/langs/lang-ss.png, pixmaps/langs/lang-xh.png,
- pixmaps/langs/lang-sr@Latn.png, pixmaps/langs/lang-se.png,
- pixmaps/langs/lang-ku.png, pixmaps/langs/lang-ml.png,
- pixmaps/langs/lang-ne.png, pixmaps/langs/lang-as.png,
- pixmaps/langs/lang-li.png, pixmaps/langs/lang-st.png,
- pixmaps/langs/lang-ve.png, pixmaps/langs/lang-gu.png,
- pixmaps/langs/lang-uz.png: New/updated images with language names
-
- * share/po/et.po: updated po file
-
- * share/rpmsrate: Added locale->fonts-* dependencies
-
-2003/08/01 Pixel <pixel at mandrakesoft.com>
-
- * .perl_checker: printer::printerdrake is not perl_checker compliant,
- don't pretend it is!
-
- * standalone/draksec: perl_checker compliance
-
- * Makefile: s/head -1/head -n 1/
- (am i the only one who thinks changing head's usage is really stupid?
- well...)
-
- * diskdrake/smbnfs_gtk.pm: instead of removing the "Search servers" button
- when the search is over, keep
- it to allow searching for new servers (the label is changed from "Search
- servers" to "Search new servers") (bug #4297)
-
- * install_any.pm, any.pm:
- - move write_smb_conf() from install_any to network::smb
- - rename setAuthentication() to set_authentication()
- - move the work of set_authentication() from install_any to any
- - move the per-authentification kind questions from
- install_steps_interactive::setRootPassword() to
- any::ask_authentification_parameters()
- - various cleanup in code prompting authentification questions
- - call install_any::set_authentication() in
- install_steps::setRootPassword()
- instead of waiting for the installPackages step to be done
- (since setRootPassword occurs *after* packages installation)
- - don't call set_authentification() in install_steps::addUser()
- (why was this done there??)
- => these changes will allow drakauth
- use $::prefix
-
- * interactive/gtk.pm: don't warn when label is used with no text for boot
- entries
- (i want titi's explaination on this first)
-
- * Xconfig/card.pm: Intel drivers don't need DontVTSwitch anymore (dixit
- Arnaud de Lorbeau)
-
- * drakxtools.spec, standalone/drakauth, Makefile.config: add drakauth
-
- * install_steps_interactive.pm, install2.pm, install_steps.pm,
- network/smb.pm:
- - move write_smb_conf() from install_any to network::smb
- - rename setAuthentication() to set_authentication()
- - move the work of set_authentication() from install_any to any
- - move the per-authentification kind questions from
- install_steps_interactive::setRootPassword() to
- any::ask_authentification_parameters()
- - various cleanup in code prompting authentification questions
- - call install_any::set_authentication() in
- install_steps::setRootPassword()
- instead of waiting for the installPackages step to be done
- (since setRootPassword occurs *after* packages installation)
- - don't call set_authentification() in install_steps::addUser()
- (why was this done there??)
- => these changes will allow drakauth
-
- * ugtk2.pm: replace signal_disconnect with signal_handler_disconnect
- (needed for perl-gtk2-xs)
-
- * Xconfig/xfree4.pm, Xconfig/xfree3.pm, Xconfig/xfreeX.pm,
- Xconfig/parse.pm: => do as Chris Picton suggested
- Chris Picton said (nearly one year ago :-/) :
- I have found the need for many low res screen resolutions for such
- thingas as movie playing, xmame, etc.
-
- The method XFdrake uses to enable modes is to enumerate each mode in the
- XF86Config file. For example (a newly created file):
-
- Subsection "Display"
- Depth 24
- Modes "1280x960" "1152x864" "1024x768" "800x600" "640x480"
- EndSubsection
-
- It would be better (at least under XFree 4, which automatically provides
- resoltions from the monitor, if it is capable), to not limit the modes
- provided to the user
-
- If I use instead, the following:
-
- Subsection "Display"
- Depth 24
- Virtual 1280 960
- EndSubsection
-
- My maximum mode is exactly the same as before, but I have many more low
- resolution modes.
-
-2003/07/31 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem: make oem-all by default (obsoleted previous oem)
-
- * install_steps.pm: added redo of initrd files for oem changes to take
- effects for bootsplash...
- fixed /usr/share/bootsplash directory not created for images.
- apply oem image modification to bootsplash too.
-
-2003/07/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated pot file
- updated Swedish file
-
- * share/po/ru.po, share/po/et.po, share/po/cy.po, share/po/ca.po,
- share/po/ja.po, share/po/tg.po, share/po/pt_BR.po, share/po/ar.po,
- share/po/lt.po, share/po/id.po, share/po/eo.po, share/po/be.po,
- share/po/af.po, share/po/sq.po, share/po/he.po, share/po/az.po,
- share/po/ta.po, share/po/uk.po, share/po/sk.po, share/po/it.po,
- share/po/ro.po, share/po/pt.po, share/po/es.po, share/po/ko.po,
- share/po/bs.po, share/po/sr@Latn.po, share/po/lv.po, share/po/bg.po,
- share/po/DrakX.pot, share/po/sr.po, share/po/el.po, share/po/nb.po,
- share/po/zh_TW.po, share/po/sl.po, share/po/th.po, share/po/hu.po,
- share/po/cs.po, share/po/ga.po, share/po/is.po, share/po/uz@Cyrl.po,
- share/po/gl.po, share/po/pl.po, share/po/fr.po, share/po/eu.po,
- share/po/de.po, share/po/da.po, share/po/tr.po, share/po/nl.po,
- share/po/vi.po, share/po/wa.po, share/po/hr.po, share/po/zh_CN.po,
- share/po/fi.po, share/po/mt.po, share/po/uz.po: updated pot file
-
-2003/07/31 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec:
- - drakxtools-newt must not require perl(interactive::gtk) or
- perl(ugtk2)
- - only drakbackup require perl(Net::FTP) & perl(Time::localtime), i
- don't want
- this require for all drakxtools. What about moving drakbackup to a
- separate
- package?
-
- * bootloader.pm: use "splash=silent" instead of "quiet".
- kernel messages will still be written, but will be hidden (can be seen
- if
- pressing F2 or escape at boot time)
-
-2003/07/31 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: UI issues from cooker list. Push help off to
- drakhelp.
-
-2003/07/30 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/07/30 François Pons <fpons at mandrakesoft.com>
-
- * interactive/gtk.pm: removed ugly code for scrollbars as pixel has fixed
- it now.
-
- * ugtk2.pm: intermediate commit to completely broken ugtk2 for handling
- tree, in order for
- gc or pixel to fix this...
-
- * pkgs.pm: allow testing locally, should not avoid pkgs to work in real
- place.
-
- * install_steps_interactive.pm: removed remaining code of eval (eq nop).
- remove eval around choosePackagesTree as it display something even if it
- doesn't run...
-
-2003/07/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cs.po, share/po/he.po, share/po/sq.po: updated Albanian, Czech
- and Hebrew files
-
-2003/07/30 Pixel <pixel at mandrakesoft.com>
-
- * network/network.pm: revert to 1.129:
- it's no good removing " (using module ...)" from {DEVICE} field, it's
- much
- better not having it in the first place. See network/ethernet.pm v1.81
- for
- the real fix
-
- * install_steps.pm: Aurora doesn't exist anymore (and it's been that way
- for quite a few time)
-
- * network/ethernet.pm: fix typo (thanks to perl_checker)
- cleanup (especially ensure $interface is not something like "eth0 (using
- module ...)" but only "eth0" (cf network/network.pm 1.130 nasty change)
-
- * timezone.pm:
- - cleanup
- - add pool.ntp.org (and make it the default) (cf bug #4197)
-
- * install_steps_gtk.pm: ensure "No details" is displayed instead of
- "Details" when beginning a new
- package installation round and "No details" was pressed in previous
- round
-
- * any.pm: perl_checker compliance
- - cleanup debug code
- - use read_gnomekderc & update_gnomekderc instead of getVarsFromSh &
- substInFile
- allow other=/dev/fd0 (bug #4405)
-
- * Xconfig/test.pm:
- - move from perl-GTK2 to perl-Gtk2
- - fix an old weird typo
-
- * install_steps_interactive.pm: fix typo
- - cleanup
- - add pool.ntp.org (and make it the default) (cf bug #4197)
-
-2003/07/29 Frederic Crozat <fcrozat at mandrakesoft.com>
-
- * share/rpmsrate: Add vera font by default
-
-2003/07/29 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/wa.po, share/po/da.po, share/po/zh_CN.po,
- share/po/uz@Cyrl.po, share/po/sk.po, share/po/uz.po: updated pot file
-
-2003/07/29 Pixel <pixel at mandrakesoft.com>
-
- * docs/README: remove some really obsolete doc
-
- * fsedit.pm: re-export %fsedit::suggestions as needed (why did titi my-ed
- it?) (fixes bug #4298)
-
- * install2.pm: use formatError for the error message occuring when
- auto_install.cfg is bad
-
- * drakxtools.spec: there is no good url for drakxtools, but at least don't
- give a broken one!
- (thanks to Raul Dias)
-
- * ugtk2.pm: labels are not able to correctly handle long texts, so
- rollback to using
- TextView instead.
- For information on this pb:
- - IHM team doesn't like TextView because the text can be selected, and
- a
- contextual menu is available
- - IHM team doesn't like the difference between small text (using a
- Label) and
- longer text (using a TextView)
- - Label can wrap automatically but not nicely (it doesn't use the full
- width)
- - Label can't wrap CJK text which have no spaces
- Apart from this Label vs TextView pb, Titi only left some code which
- takes
- care of small text, causing the text to be wrapped using warp_text
- (which is
- not proportional font aware) and not using a scrolled window (causing
- the
- license to take more than the screen, the buttons disappearing at the
- bottom
- of the screen)
-
-2003/07/28 François Pons <fpons at mandrakesoft.com>
-
- * share/list.i386: moved mkfs.xfs
-
- * rescue/list.i386: moved xfs files.
-
- * rescue/list.ia64: moved xfs files (problably the same for ia64 ?).
-
- * interactive/gtk.pm: make sure the split of message is done only in
- install mode, as standalone has
- no problem.
-
-2003/07/28 Pixel <pixel at mandrakesoft.com>
-
- * tools/ddcprobe/Makefile: we now need -lm to link
-
-2003/07/28 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/07/26 keld
-
- * share/po/da.po: small update
- gi/perl-install/share/po/da.po
- update!
- soft/menudrake/po/da.po gi/perl-install/share/po/da.po
- update
- gi/perl-install/share/po/da.po
-
-2003/07/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po, share/po/uk.po: updated Japanese and Ukrainian files
-
-2003/07/25 aginies
-
- * pixmaps/drakcluster.png: new icon, without alpha-layer (unsupported
- under 9.0)
-
-2003/07/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: Updated Estonian file
- updated pot file
-
- * share/po/ru.po, share/po/cy.po, share/po/ca.po, share/po/ja.po,
- share/po/tg.po, share/po/pt_BR.po, share/po/ar.po, share/po/lt.po,
- share/po/id.po, share/po/eo.po, share/po/be.po, share/po/af.po,
- share/po/sq.po, share/po/he.po, share/po/az.po, share/po/ta.po,
- share/po/uk.po, share/po/sk.po, share/po/it.po, share/po/ro.po,
- share/po/pt.po, share/po/es.po, share/po/ko.po, share/po/bs.po,
- share/po/sr@Latn.po, share/po/lv.po, share/po/bg.po, share/po/DrakX.pot,
- share/po/sr.po, share/po/el.po, share/po/nb.po, share/po/zh_TW.po,
- share/po/sv.po, share/po/sl.po, share/po/th.po, share/po/hu.po,
- share/po/cs.po, share/po/ga.po, share/po/is.po, share/po/uz@Cyrl.po,
- share/po/gl.po, share/po/pl.po, share/po/fr.po, share/po/eu.po,
- share/po/de.po, share/po/da.po, share/po/tr.po, share/po/nl.po,
- share/po/vi.po, share/po/wa.po, share/po/hr.po, share/po/zh_CN.po,
- share/po/fi.po, share/po/mt.po, share/po/uz.po: updated pot file
-
-2003/07/25 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-0.24mdk
- 9.2-0.24mdk: work in progress
-
- * ugtk2.pm: work in progress (follow interface team recommendation) : use
- checkboxes instead of ugly icon
- inconsistent (aka semi-selected) state still need working
- install caller must be fixed like rpmdrake is
-
- * standalone/drakbug: use std button layout
- use option menus instead of combos in on interface team request
-
- * standalone/drakperm: fix crash on adding new permission
-
-2003/07/24 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Update
-
-2003/07/24 Frederic Lepied <flepied at mandrakesoft.com>
-
- * share/rpmsrate: removed ncompress (contrib)
-
-2003/07/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot: hide splash screen section for now on ihm team
- request
-
- * standalone/net_monitor:
- - use option menus instead of combos
- - fix crash on profile change due to netconnect api change
-
- * harddrake/sound.pm: fix #4258
-
- * standalone/logdrake: upcase label
-
- * security/l10n.pm: describe
-
- * security/help.pm: better help
- - filter dumb characters
- - strip help from internal msec doc so that it better fit end user
-
- * share/po/fr.po: update
- one more typo (still fabrice)
- typo fix (spoted by Fabrice Facorat)
- follow english case
-
- * interactive/gtk.pm: if the callee explicitely want to force the user to
- pick sg from a
- fixed set of options, the right widget to use is an OptionMenu rather
- than a Combo (see ugtk2 r1.141 log and ugtk2::Gtk2::OptionMenu
- sub-module)
-
- * standalone/drakperm: since we've replace save "button" by "ok", exit the
- tool after saving the preferences
- fix tree filling
- - ugtk2-ize dialog construction
- - fix tip setting
- localize level option menu
- settings dialog:
- - localize all fields
- - add tips for all check boxes
- use stock icons on rule toolbar
- make label be undserstandable
- upcase various widget texts (still have to localize settings dialog
- fields though)
- simplify (un|)sensitive property setting of the list
- use option menus instead of combos in settings dialog too
- use stock icons and std button layout in settings dialog
- use option menus instead of combos
-
- * drakxtools.spec: bump perl-Gtk2 requires in order to fix drakfont bug
- with utf8 file
- names
- 9.2-0.23mdk
- draksec: requires a non broken msec
- 9.2-0.22mdk
-
- * standalone/mousedrake: use std button layout
-
- * standalone/draksec: restore help for msec checks
-
- * standalone/drakconnect: remove nonsense expert button
- - (configure_lan) directly use global variables
- - double click on ethernet lines run lan config dialog
-
-2003/07/23 Daouda Lo <daouda at mandrakesoft.com>
-
- * standalone/drakhelp:
- - ru, de and it have no specific drakxtools help packages. Default to
- english
- - retest $$path to see if the page exists.
- - don't launch browser unless help page exists.
-
-2003/07/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/he.po: fixed "arrows"
-
- * share/po/uz@Cyrl.po, share/po/uz.po: Added Uzbek cyrillic file
-
-2003/07/23 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix catalog restore for perl-Gtk2
- Fix rsync behavior - broken in perl_checker fixes
- Fix wildcard_to_tarfile
-
-2003/07/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm: new autologin scheme (spec87): directly configure display
- manager
-
- * drakxtools.spec: log drakfont fixes
- 9.2-0.21mdk
-
- * standalone/drakboot: we do not need anymore autologin (spec87)
-
- * standalone/drakfont: fix #1679 & #3673
-
-2003/07/22 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/07/22 François Pons <fpons at mandrakesoft.com>
-
- * install_gtk.pm: fixed titi sucks (as usually as he never tests nor
- checks what he is writing).
-
- * standalone.pm: avoid being clashed by signature checking when installing
- packages,
- need a better fix later.
-
- * interactive/gtk.pm: tempory fix for title not having scroll bars (which
- sounds reasonable ?), as the
- size of the window is fixed the low part of the window is not visible.
- titi who makes the portage to newer Gtk2 has not tested this (again, for
- info).
-
-2003/07/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
-2003/07/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * share/po/fr.po: last but not least ...
- more unfuzzy
- unfuzzy...
- more french translation
- better phrasing
-
- * drakxtools.spec: first bits of 9.2-0.21mdk
- 9.2-0.20mdk
- 9.2-0.20mdk
-
- * standalone/draksec: N_ON_E is of no use, NONE is
- simplify and order vertically OptionMenus
-
- * network/network.pm: fix fpons sucks (as usuall as he neither tests nor
- care about bug
- reports)
-
- * standalone/drakconnect:
- - fix "lan config" dialog where fields were not filled
- - factorize some code in order to achieve it
-
- * standalone/drakgw: disable service start/stop too in testing mode
- do not install package in testing mode
- no valid reason not to be able to go back at first step
- fix going backward in the wizard at deepest stages
- testing mode: enable to go some steps further when testing this tool
- fix back step
-
-2003/07/21 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid src package to be seen in tree.
-
- * pkgs.pm: fixed setSelectedFromCompssList (updated with newer perl-URPM
- interface),
- more need to be done. maybe increased speed of unselectAllPackages.
-
-2003/07/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ru.po, share/po/et.po, share/po/cy.po, share/po/ca.po,
- share/po/ja.po, share/po/tg.po, share/po/pt_BR.po, share/po/ar.po,
- share/po/lt.po, share/po/id.po, share/po/eo.po, share/po/be.po,
- share/po/af.po, share/po/sq.po, share/po/he.po, share/po/az.po,
- share/po/ta.po, share/po/uk.po, share/po/sk.po, share/po/it.po,
- share/po/ro.po, share/po/pt.po, share/po/es.po, share/po/ko.po,
- share/po/bs.po, share/po/sr@Latn.po, share/po/lv.po, share/po/bg.po,
- share/po/DrakX.pot, share/po/sr.po, share/po/el.po, share/po/nb.po,
- share/po/zh_TW.po, share/po/sv.po, share/po/sl.po, share/po/th.po,
- share/po/hu.po, share/po/cs.po, share/po/ga.po, share/po/is.po,
- share/po/gl.po, share/po/pl.po, share/po/fr.po, share/po/eu.po,
- share/po/de.po, share/po/da.po, share/po/tr.po, share/po/nl.po,
- share/po/vi.po, share/po/wa.po, share/po/hr.po, share/po/zh_CN.po,
- share/po/fi.po, share/po/mt.po, share/po/uz.po: updated pot file
-
-2003/07/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: mcc view: add an help button (and ugtk2-ize main
- window buttons btw)
-
- * network/netconnect.pm: add a hint if we never restore profiles feature
- do not gratuitously waste space
- if we really want the type connection to be translated by translate()
- call in
- step_2, we should mark it as translatable for gettext somewhere ...
- fix final success message:
- - fix join usage
- - fix gtk frontend detection
- do not loop if one refuse to save changes, just skip the save step
- keep user changes on back step
- fix no previous button when using ask_okcancel() in wizard mode due to
- *very*
- ugly "$common->{cancel} = '' if !defined wantarray();" in interactive.pm
- anyway, the whole pre_func() idea was totally dumb
- it now looks a little cleaner
-
-
-
- making all main configuration callbacks having the same prototype and
- name
- would enable further cleanups (direct call to
- network::$net_module{$type}::configure(...);)
-
- * standalone/harddrake2: add hints for translators
- workaround buggy gtk+-2.x that do not wrap textviews when realized
-
- * standalone/diskdrake: provide some help access in standalone mode
-
- * network/network.pm: dhcp host name cannot be set if one want to get it
- from dhcp server
-
- * drakxtools.spec: 9.2-0.19mdk
-
- * standalone/draksec: add hints for translators
- make 1st tab title somewhat clearer
- fix infamous "when embedded draksec can be enlarged but never shrink
- back"
- one should not be able to set syadmin when no reports
- - describe all security levels
- - make it clean than security admin is not a security level
- - colorize security levels names
- - use a label instead of textview
-
-2003/07/21 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid src package to be seen in tree.
-
- * pkgs.pm: fixed setSelectedFromCompssList (updated with newer perl-URPM
- interface),
- more need to be done. maybe increased speed of unselectAllPackages.
-
-2003/07/21 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid src package to be seen in tree.
-
- * pkgs.pm: fixed setSelectedFromCompssList (updated with newer perl-URPM
- interface),
- more need to be done. maybe increased speed of unselectAllPackages.
-
-2003/07/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksec: fix checks loading
- fix checks setting
- fix config load
-
- * drakxtools.spec: 9.2-0.18mdk
-
- * security/msec.pm: sort functions & checks when writing configuration
-
-2003/07/18 erwan
-
- * pixmaps/drakcluster.png: new drakcluster icon from LN
-
-2003/07/18 François Pons <fpons at mandrakesoft.com>
-
- * Makefile: trying to follow the sucking of titi...
- use perl-Gtk2 and perl-Glib files.
-
-2003/07/18 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: new binding returns a list intead of an array ref
-
- * network/netconnect.pm: sync translation with stock item
-
- * standalone/draksec: now that we display localized descriptions instead
- of raw function
- names, we've to sort the formers instead of sorting the laters
- fix preferences loading & saving
-
- * interactive/gtk.pm: only catch real wrong callees
-
- * drakxtools.spec: add bug ref
- first 9.2-0.17mdk bits
-
-2003/07/17 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/07/17 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: do not exit the whole app when one destroy a dialog
- (_create_dialog) default is "as much as needed" size
- perl_checker fixes
- center_always is unuser-friendly
- - ihm team said: always use labels, textview are stupid nonsenses
- - fcrozat then said: labels have no wrapping problems with cjk and the
- like
- use stock items in wizards
-
- * network/ethernet.pm: proxy configuration step: do not go back two steps
- back on "previous"
- click, but only one back
-
- * standalone/drakconnect: adjust dialogs size
- correctly align fields in "lan configuration" dialog
- perl_checker fixes
- center_always is unuser-friendly
- fix internet gateway buttons layout
- remove ugly icon
-
- * network/network.pm: properly use checkboxes
-
- * drakxtools.spec: one more bit for 0.16mdk
- 9.2-0.16mdk
- frop gtk+1 requires
-
- * network/netconnect.pm: fix usage of bool type in interactive: put the
- text in the checkbox's
- label instead of packing a standalone label *and* a checkbox with an
- empty label
-
- * interactive/gtk.pm: perl_checker fix
- simplify with gtkshow()
- intercept buggy callees/users of bool type that wrongly pass label
- instead of text
-
-2003/07/16 aginies
-
- * fsedit.pm: now swap is before / on client node
-
-2003/07/16 Pixel <pixel at mandrakesoft.com>
-
- * commands.pm, swap.pm, Makefile: remove mkswap from commands.pm, so no
- need anymore to have mkswap_ (the drawback is that the mkswap command
- won't create the device anymore)
-
-2003/06/06 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/Makefile: we're in cooker now
-
- * share/logo-mandrake.png: cooker
-
-2003/06/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * help.pm: "Country" -> "Country" . " / Region" in a few places still
- missing that change
-
-2003/06/06 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: stricter regexp when looking /dev/xxx otherwise it is used also
- for nfs names
- and causes havoc
-
- * standalone/fileshareset: fileshareset doesn't use MDK::Common
-
- * any.pm: perl_checker compliance
-
- * fsedit.pm: fix computeSize which took into account suggested partitions
- on another drives
- (which is especially bad for LVMs)
-
- * network/nfs.pm:
- - handle spaces in exported directories
- - simplify using --no-headers when calling showmount
-
- * common.pm, ugtk2.pm: ensure N() is not called before ugtk2 is
- initialised, otherwise
- the gettext is not forced to utf8
-
- * diskdrake/interactive.pm: fix typos + perl_checker fixes
-
- * standalone.pm: don't use N() so early
- (beware, this removes translation, some translate() calls must be
- added!)
-
-2003/06/05 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * Makefile: fix install crashed X server because /usr/bin/true was no more
- available :/
-
-2003/06/05 Pixel <pixel at mandrakesoft.com>
-
- * mdk-stage1/Makefile.common: fix build with new gcc
-
- * fs.pm: make perl_checker a happy bot
- don't use description of fstab options from manpage mount(8), inline
- them in the source
-
-2003/06/05 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Bug 3647 - Chinese translations. More
- perl_checker fixes.
-
-2003/06/05 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/v4l.pm: support more tuners and tv cards
-
-2003/06/04 François Pons <fpons at mandrakesoft.com>
-
- * rescue/list: updated with rpm 4.2.
-
- * tools/updatehdlist: update only RPMS1 and RPMS2 to keep other package in
- RPMS3.
-
- * tools/syncrpms: avoid updating kernel-BOOT (as kernel-BOOT of cooker is
- pure shit).
-
- * install_steps_gtk.pm: allow X server to use :9 (:1 seems to not working
- ?) and disable access control
- (no clients can connect by default).
-
- * pkgs.pm: updated for newer perl-URPM (0.90 series).
-
-2003/06/04 gbeauchesne
-
- * mdk-stage1/dietlibc/include/termio.h,
- mdk-stage1/dietlibc/i386/sendmsg.S, mdk-stage1/dietlibc/i386/asin.S,
- mdk-stage1/dietlibc/libpthread/pthread_flockfile.c,
- mdk-stage1/dietlibc/ia64/__longjmp.S, mdk-stage1/dietlibc/i386/strcmp.S,
- mdk-stage1/dietlibc/libcruft/scan_ulong.c,
- mdk-stage1/dietlibc/libdl/_dl_relocate.c,
- mdk-stage1/dietlibc/i386/stpcpy.S, mdk-stage1/dietlibc/i386/ltostr.S,
- mdk-stage1/dietlibc/libugly/utent.c, mdk-stage1/dietlibc/i386/connect.S,
- mdk-stage1/dietlibc/i386/atan2.S,
- mdk-stage1/dietlibc/syscalls.s/mlock.S,
- mdk-stage1/dietlibc/ppc/syscalls.h, mdk-stage1/dietlibc/lib/__ptrace.c,
- mdk-stage1/dietlibc/libstdio/scanf.c, mdk-stage1/dietlibc/i386/memcmp.S,
- mdk-stage1/dietlibc/include/stdarg-cruft.h,
- mdk-stage1/dietlibc/i386/fmod.S, mdk-stage1/dietlibc/i386/strrchr.S,
- mdk-stage1/dietlibc/libcruft/bzero.c,
- mdk-stage1/dietlibc/syscalls.s/sendfile64.S,
- mdk-stage1/dietlibc/libugly/iconv.c,
- mdk-stage1/dietlibc/libugly/getprotobyname.c,
- mdk-stage1/dietlibc/include/asm/types.h,
- mdk-stage1/dietlibc/i386/accept.S,
- mdk-stage1/dietlibc/include/sys/fsuid.h,
- mdk-stage1/dietlibc/syscalls.s/ftruncate64.S,
- mdk-stage1/dietlibc/x86_64/socket.S,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr2_r.c,
- mdk-stage1/dietlibc/lib/llabs.c, mdk-stage1/dietlibc/i386/memccpy.S,
- mdk-stage1/dietlibc/libugly/getservbyname.c,
- mdk-stage1/dietlibc/include/write12.h, mdk-stage1/dietlibc/i386/bind.S,
- mdk-stage1/dietlibc/x86_64/listen.S,
- mdk-stage1/dietlibc/alpha/errlist.S,
- mdk-stage1/dietlibc/libcruft/setlocale.c,
- mdk-stage1/dietlibc/x86_64/msgctl.S,
- mdk-stage1/dietlibc/syscalls.s/setfsuid.S,
- mdk-stage1/dietlibc/lib/tcflow.c,
- mdk-stage1/dietlibc/syscalls.s/geteuid32.S,
- mdk-stage1/dietlibc/libcruft/scandir.c,
- mdk-stage1/dietlibc/syscalls.s/getuid32.S,
- mdk-stage1/dietlibc/include/asm/ia64-sigcontext.h,
- mdk-stage1/dietlibc/libcruft/getusershell.c,
- mdk-stage1/dietlibc/i386/floor.S,
- mdk-stage1/dietlibc/syscalls.s/alarm.S,
- mdk-stage1/dietlibc/ia64/utime.S, mdk-stage1/dietlibc/x86_64/mmap.S,
- mdk-stage1/dietlibc/ia64/README, mdk-stage1/dietlibc/libcruft/tmpnam.c,
- mdk-stage1/dietlibc/libm/acosh.c,
- mdk-stage1/dietlibc/libcruft/alphasort64.c,
- mdk-stage1/dietlibc/syscalls.s/fchown32.S,
- mdk-stage1/dietlibc/libcruft/getopt_long_only.c,
- mdk-stage1/dietlibc/syscalls.s/munlock.S,
- mdk-stage1/dietlibc/ppc/clone.S, mdk-stage1/dietlibc/libcruft/pwbuf.c,
- mdk-stage1/dietlibc/i386/getpeername.S,
- mdk-stage1/dietlibc/ia64/clone.S, mdk-stage1/dietlibc/x86_64/setjmp.S,
- mdk-stage1/dietlibc/libpthread/pthread_fgetc.c,
- mdk-stage1/dietlibc/ia64/listen.S,
- mdk-stage1/dietlibc/include/net/if_ether.h,
- mdk-stage1/dietlibc/lib/strtof.c,
- mdk-stage1/dietlibc/x86_64/Makefile.add,
- mdk-stage1/dietlibc/lib/errlistu.c,
- mdk-stage1/dietlibc/libstdio/vfscanf.c,
- mdk-stage1/dietlibc/syscalls.s/create_module.S,
- mdk-stage1/dietlibc/alpha/syscalls.h,
- mdk-stage1/dietlibc/x86_64/unified.S, mdk-stage1/dietlibc/lib/write12.c,
- mdk-stage1/dietlibc/lib/__stime.c,
- mdk-stage1/dietlibc/include/netpacket/packet.h,
- mdk-stage1/dietlibc/i386/poly.S, mdk-stage1/dietlibc/libugly/netent.c,
- mdk-stage1/dietlibc/ia64/msgrcv.S,
- mdk-stage1/dietlibc/libcruft/seteuid.c,
- mdk-stage1/dietlibc/syscalls.s/delete_module.S,
- mdk-stage1/dietlibc/ia64/pipe.S, mdk-stage1/dietlibc/libcruft/setegid.c,
- mdk-stage1/dietlibc/libpthread/pthread_getschedparam.c,
- mdk-stage1/dietlibc/include/linux/nfs.h,
- mdk-stage1/dietlibc/libugly/gai_strerror.c,
- mdk-stage1/dietlibc/i386/rint.S,
- mdk-stage1/dietlibc/include/asm/arm-sigcontext.h,
- mdk-stage1/dietlibc/lib/ipv6constants.c,
- mdk-stage1/dietlibc/lib/sigpending.c,
- mdk-stage1/dietlibc/i386/syscalls.h,
- mdk-stage1/dietlibc/include/float.h, mdk-stage1/dietlibc/i386/hypot.S,
- mdk-stage1/dietlibc/i386/cosh.S, mdk-stage1/dietlibc/x86_64/semop.S,
- mdk-stage1/dietlibc/libugly/strndup.c, mdk-stage1/dietlibc/libm/erf.c,
- mdk-stage1/dietlibc/lib/memmem.c,
- mdk-stage1/dietlibc/syscalls.s/setregid32.S,
- mdk-stage1/dietlibc/libcruft/tempnam.c,
- mdk-stage1/dietlibc/libcompat/syscall.S,
- mdk-stage1/dietlibc/x86_64/recvfrom.S,
- mdk-stage1/dietlibc/lib/strtold.c,
- mdk-stage1/dietlibc/syscalls.s/setfsgid32.S,
- mdk-stage1/dietlibc/libcruft/herror.c,
- mdk-stage1/dietlibc/libcruft/bcopy.c,
- mdk-stage1/dietlibc/libcruft/__parse_ws.c,
- mdk-stage1/dietlibc/i386/sendto.S, mdk-stage1/dietlibc/ia64/sendmsg.S,
- mdk-stage1/dietlibc/i386/sleep.S, mdk-stage1/dietlibc/i386/shutdown.S,
- mdk-stage1/dietlibc/libugly/getservent.c,
- mdk-stage1/dietlibc/libugly/putpwent.c, mdk-stage1/dietlibc/libm/sinh.c,
- mdk-stage1/dietlibc/libcruft/getspent_r.c,
- mdk-stage1/dietlibc/i386/send.S, mdk-stage1/dietlibc/ia64/msgget.S,
- mdk-stage1/dietlibc/libcruft/killpg.c,
- mdk-stage1/dietlibc/x86_64/__testandset.S,
- mdk-stage1/dietlibc/syscalls.s/rt_sigqueueinfo.S,
- mdk-stage1/dietlibc/libstdio/fsetpos.c,
- mdk-stage1/dietlibc/i386/isleap.S, mdk-stage1/dietlibc/i386/PIC.h,
- mdk-stage1/dietlibc/syscalls.s/rt_sigtimedwait.S,
- mdk-stage1/dietlibc/lib/tcsendbreak.c,
- mdk-stage1/dietlibc/x86_64/shmat.S,
- mdk-stage1/dietlibc/libcruft/dnscruft3.c,
- mdk-stage1/dietlibc/libugly/difftime.c,
- mdk-stage1/dietlibc/libstdio/ftello.c,
- mdk-stage1/dietlibc/x86_64/sendto.S,
- mdk-stage1/dietlibc/x86_64/syscalls.h, mdk-stage1/dietlibc/ia64/send.S,
- mdk-stage1/dietlibc/ia64/bind.S, mdk-stage1/dietlibc/x86_64/shmctl.S,
- mdk-stage1/dietlibc/libcruft/clock.c,
- mdk-stage1/dietlibc/syscalls.s/settimeofday.S,
- mdk-stage1/dietlibc/libugly/protoent_buf.c,
- mdk-stage1/dietlibc/libstdio/fgetpos.c,
- mdk-stage1/dietlibc/libugly/getprotobynumber_r.c,
- mdk-stage1/dietlibc/sparc/strlen.S,
- mdk-stage1/dietlibc/lib/sigprocmask.c,
- mdk-stage1/dietlibc/ia64/__nice.c,
- mdk-stage1/dietlibc/syscalls.s/mmap2.S, mdk-stage1/dietlibc/i386/sqrt.S,
- mdk-stage1/dietlibc/i386/strlen.S, mdk-stage1/dietlibc/ia64/shmget.S,
- mdk-stage1/dietlibc/x86_64/bind.S,
- mdk-stage1/dietlibc/syscalls.s/setreuid32.S,
- mdk-stage1/dietlibc/include/net/ethernet.h,
- mdk-stage1/dietlibc/include/linux/eventpoll.h,
- mdk-stage1/dietlibc/syscalls.s/errlist.S,
- mdk-stage1/dietlibc/i386/getenv.S, mdk-stage1/dietlibc/libm/bessel.c,
- mdk-stage1/dietlibc/libm/ipow.c, mdk-stage1/dietlibc/libm/atanh.c,
- mdk-stage1/dietlibc/libstdio/fdglue2.c,
- mdk-stage1/dietlibc/libcruft/getgrent_r.c,
- mdk-stage1/dietlibc/i386/strcpy.S,
- mdk-stage1/dietlibc/include/linux/types.h,
- mdk-stage1/dietlibc/include/asm/ppc-sigcontext.h,
- mdk-stage1/dietlibc/libugly/unlockpt.c,
- mdk-stage1/dietlibc/ia64/unified.S,
- mdk-stage1/dietlibc/libugly/freeaddrinfo.c,
- mdk-stage1/dietlibc/libcruft/getpwuid_r.c,
- mdk-stage1/dietlibc/ia64/semget.S,
- mdk-stage1/dietlibc/libcruft/hstrerror.c,
- mdk-stage1/dietlibc/libcruft/grbuf.c,
- mdk-stage1/dietlibc/sparc/syscalls.h,
- mdk-stage1/dietlibc/libstdio/fseeko64.c,
- mdk-stage1/dietlibc/libcruft/getgrnam_r.c,
- mdk-stage1/dietlibc/i386/log.S, mdk-stage1/dietlibc/lib/sigsuspend.c,
- mdk-stage1/dietlibc/ia64/getpeername.S,
- mdk-stage1/dietlibc/i386/strncmp.S,
- mdk-stage1/dietlibc/syscalls.s/setfsuid32.S,
- mdk-stage1/dietlibc/syscalls.s/__pwrite.S,
- mdk-stage1/dietlibc/ia64/shmdt.S, mdk-stage1/dietlibc/libm/rint.c,
- mdk-stage1/dietlibc/libcruft/mktemp.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigsuspend.S,
- mdk-stage1/dietlibc/libcruft/__end_parse.c,
- mdk-stage1/dietlibc/syscalls.s/adjtimex.S,
- mdk-stage1/dietlibc/i386/exp2.S,
- mdk-stage1/dietlibc/libcruft/alphasort.c,
- mdk-stage1/dietlibc/libugly/openpty.c,
- mdk-stage1/dietlibc/profiling/monitor.c,
- mdk-stage1/dietlibc/ia64/recv.S,
- mdk-stage1/dietlibc/syscalls.s/getresgid32.S,
- mdk-stage1/dietlibc/lib/atoll.c,
- mdk-stage1/dietlibc/libcruft/getopt_long.c,
- mdk-stage1/dietlibc/ia64/connect.S,
- mdk-stage1/dietlibc/include/linux/loop.h,
- mdk-stage1/dietlibc/alpha/sigaction.c,
- mdk-stage1/dietlibc/libstdio/vfprintf.c,
- mdk-stage1/dietlibc/libugly/getservent_r.c,
- mdk-stage1/dietlibc/ia64/recvmsg.S,
- mdk-stage1/dietlibc/libcruft/mkdtemp.c,
- mdk-stage1/dietlibc/ia64/Makefile.add,
- mdk-stage1/dietlibc/libshell/basename.c,
- mdk-stage1/dietlibc/x86_64/semget.S,
- mdk-stage1/dietlibc/x86_64/getsockopt.S,
- mdk-stage1/dietlibc/syscalls.s/fdatasync.S,
- mdk-stage1/dietlibc/libcruft/spbuf.c,
- mdk-stage1/dietlibc/syscalls.s/errno.S,
- mdk-stage1/dietlibc/syscalls.s/setfsgid.S,
- mdk-stage1/dietlibc/syscalls.s/n_sigpending.S,
- mdk-stage1/dietlibc/ia64/semop.S, mdk-stage1/dietlibc/lib/sigaction.c,
- mdk-stage1/dietlibc/libdl/_dl_main.c,
- mdk-stage1/dietlibc/include/sys/alpha-ioctl.h,
- mdk-stage1/dietlibc/x86_64/getpeername.S,
- mdk-stage1/dietlibc/libpthread/pthread_internal.c,
- mdk-stage1/dietlibc/i386/tan.S, mdk-stage1/dietlibc/lib/__isinf.c,
- mdk-stage1/dietlibc/i386/strncpy.S,
- mdk-stage1/dietlibc/lib/__v_printf.c,
- mdk-stage1/dietlibc/syscalls.s/msync.S,
- mdk-stage1/dietlibc/syscalls.s/epoll_ctl.S,
- mdk-stage1/dietlibc/x86_64/clone.S,
- mdk-stage1/dietlibc/libugly/getservbyport_r.c,
- mdk-stage1/dietlibc/libcruft/getopt_data.c,
- mdk-stage1/dietlibc/libcompat/stpcpy.c,
- mdk-stage1/dietlibc/libcruft/getpwent_r.c,
- mdk-stage1/dietlibc/include/linux/posix_types.h,
- mdk-stage1/dietlibc/libstdio/fseeko.c,
- mdk-stage1/dietlibc/libugly/getnameinfo.c,
- mdk-stage1/dietlibc/include/dietref.h, mdk-stage1/dietlibc/libm/asinh.c,
- mdk-stage1/dietlibc/include/pty.h, mdk-stage1/dietlibc/i386/exp.S,
- mdk-stage1/dietlibc/include/sys/soundcard.h,
- mdk-stage1/dietlibc/include/sys/klog.h,
- mdk-stage1/dietlibc/libpthread/pthread_setschedparam.c,
- mdk-stage1/dietlibc/i386/sqrtl.S,
- mdk-stage1/dietlibc/syscalls.s/rt_sigaction.S,
- mdk-stage1/dietlibc/i386/strcasecmp.S,
- mdk-stage1/dietlibc/syscalls.s/setgid32.S,
- mdk-stage1/dietlibc/i386/__half.S,
- mdk-stage1/dietlibc/include/asm/sparc-sigcontext.h,
- mdk-stage1/dietlibc/profiling/__mcount.c,
- mdk-stage1/dietlibc/include/sys/arm-ioctl.h,
- mdk-stage1/dietlibc/libugly/getprotobynumber.c,
- mdk-stage1/dietlibc/i386/log2.S, mdk-stage1/dietlibc/ia64/mmap.S,
- mdk-stage1/dietlibc/sparc/errlist.S,
- mdk-stage1/dietlibc/ia64/__testandset.S,
- mdk-stage1/dietlibc/include/sys/i386-ioctl.h,
- mdk-stage1/dietlibc/libcruft/getpwent.c,
- mdk-stage1/dietlibc/syscalls.s/environ.S,
- mdk-stage1/dietlibc/libpthread/pthread_errno.c,
- mdk-stage1/dietlibc/alpha/__alarm.c, mdk-stage1/dietlibc/i386/mmap64.S,
- mdk-stage1/dietlibc/i386/vfork.S, mdk-stage1/dietlibc/ia64/vfork.S,
- mdk-stage1/dietlibc/libugly/timezone.c,
- mdk-stage1/dietlibc/libugly/servent_buf.c,
- mdk-stage1/dietlibc/x86_64/getsockname.S,
- mdk-stage1/dietlibc/include/sys/prctl.h,
- mdk-stage1/dietlibc/x86_64/semctl.S, mdk-stage1/dietlibc/i386/write12.S,
- mdk-stage1/dietlibc/libm/cosh.c, mdk-stage1/dietlibc/include/libgen.h,
- mdk-stage1/dietlibc/syscalls.s/bdflush.S,
- mdk-stage1/dietlibc/libcompat/re_bsd.c,
- mdk-stage1/dietlibc/libdl/_dl_rel.c,
- mdk-stage1/dietlibc/alpha/__testandset.S,
- mdk-stage1/dietlibc/libstdio/vscanf.c, mdk-stage1/dietlibc/i386/atanh.S,
- mdk-stage1/dietlibc/i386/copysign.S, mdk-stage1/dietlibc/i386/htons.S,
- mdk-stage1/dietlibc/libugly/hasmntopt.c,
- mdk-stage1/dietlibc/libm/gamma.c, mdk-stage1/dietlibc/ia64/msgctl.S,
- mdk-stage1/dietlibc/i386/recvfrom.S,
- mdk-stage1/dietlibc/libcompat/daemon.c,
- mdk-stage1/dietlibc/profiling/PORTING,
- mdk-stage1/dietlibc/libdl/_dl_load.c,
- mdk-stage1/dietlibc/libcompat/getline.c,
- mdk-stage1/dietlibc/include/sys/sparc-ioctl.h,
- mdk-stage1/dietlibc/libstdio/vprintf.c,
- mdk-stage1/dietlibc/include/asm/statfs.h,
- mdk-stage1/dietlibc/x86_64/shmdt.S, mdk-stage1/dietlibc/libugly/dirfd.c,
- mdk-stage1/dietlibc/i386/atoll.S, mdk-stage1/dietlibc/ia64/sendto.S,
- mdk-stage1/dietlibc/syscalls.s/getegid32.S,
- mdk-stage1/dietlibc/i386/getsockopt.S,
- mdk-stage1/dietlibc/libpthread/pthread_sigmask.c,
- mdk-stage1/dietlibc/libpthread/pthread_key.c,
- mdk-stage1/dietlibc/x86_64/shmget.S,
- mdk-stage1/dietlibc/libcruft/__parse_1.c,
- mdk-stage1/dietlibc/alpha/socketpair.S,
- mdk-stage1/dietlibc/sparc/sigaction.c,
- mdk-stage1/dietlibc/x86_64/shutdown.S,
- mdk-stage1/dietlibc/libdl/_dl_alloc.c,
- mdk-stage1/dietlibc/lib/setlinebuf.c, mdk-stage1/dietlibc/lib/bcd.c,
- mdk-stage1/dietlibc/libcruft/getgrent.c,
- mdk-stage1/dietlibc/i386/mcount.S, mdk-stage1/dietlibc/i386/ceil.S,
- mdk-stage1/dietlibc/libpthread/pthread_sys_fdatasync.c,
- mdk-stage1/dietlibc/x86_64/recv.c, mdk-stage1/dietlibc/lib/adjtime.c,
- mdk-stage1/dietlibc/i386/expm1.S, mdk-stage1/dietlibc/ia64/setjmp.S,
- mdk-stage1/dietlibc/i386/cos.S, mdk-stage1/dietlibc/i386/fabs.S,
- mdk-stage1/dietlibc/i386/htonl.S, mdk-stage1/dietlibc/i386/log10.S,
- mdk-stage1/dietlibc/i386/pow.S,
- mdk-stage1/dietlibc/include/linux/if_ether.h,
- mdk-stage1/dietlibc/lib/cfsetospeed.c,
- mdk-stage1/dietlibc/alpha/n_sigprocmask.S,
- mdk-stage1/dietlibc/libcruft/localeconv.c,
- mdk-stage1/dietlibc/ia64/shmat.S, mdk-stage1/dietlibc/libstdio/puts.c,
- mdk-stage1/dietlibc/i386/memset.S, mdk-stage1/dietlibc/libm/poly.c,
- mdk-stage1/dietlibc/include/libintl.h,
- mdk-stage1/dietlibc/libugly/ftime.c,
- mdk-stage1/dietlibc/ia64/socketpair.S, mdk-stage1/dietlibc/lib/rand_r.c,
- mdk-stage1/dietlibc/i386/ilogb.S,
- mdk-stage1/dietlibc/libpthread/pthread_equal.c,
- mdk-stage1/dietlibc/libcrypt/md5.c, mdk-stage1/dietlibc/i386/cbrt.S,
- mdk-stage1/dietlibc/syscalls.s/ptrace.S,
- mdk-stage1/dietlibc/syscalls.s/pivot_root.S,
- mdk-stage1/dietlibc/libdl/elf_hash.h, mdk-stage1/dietlibc/include/md5.h,
- mdk-stage1/dietlibc/x86_64/__longjmp.S,
- mdk-stage1/dietlibc/include/cpio.h,
- mdk-stage1/dietlibc/syscalls.s/chown32.S,
- mdk-stage1/dietlibc/x86_64/connect.S,
- mdk-stage1/dietlibc/libugly/ptsname.c,
- mdk-stage1/dietlibc/libstdio/fdprintf.c,
- mdk-stage1/dietlibc/ia64/__waitpid.c,
- mdk-stage1/dietlibc/i386/socketpair.S,
- mdk-stage1/dietlibc/libstdio/fscanf.c,
- mdk-stage1/dietlibc/ia64/getsockname.S,
- mdk-stage1/dietlibc/lib/sigtimedwait.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigpending.S,
- mdk-stage1/dietlibc/include/sys/ppc-ioctl.h,
- mdk-stage1/dietlibc/libstdio/vfdprintf.c,
- mdk-stage1/dietlibc/i386/usleep.S, mdk-stage1/dietlibc/include/iconv.h,
- mdk-stage1/dietlibc/ia64/semctl.S,
- mdk-stage1/dietlibc/include/sys/timex.h,
- mdk-stage1/dietlibc/include/asm/i386-sigcontext.h,
- mdk-stage1/dietlibc/i386/dyn_syscalls.S,
- mdk-stage1/dietlibc/libcruft/getgrgid_r.c,
- mdk-stage1/dietlibc/libcruft/sysconf.c,
- mdk-stage1/dietlibc/include/tar.h, mdk-stage1/dietlibc/x86_64/umount.S,
- mdk-stage1/dietlibc/libugly/getprotoent_r.c,
- mdk-stage1/dietlibc/syscalls.s/prctl.S, mdk-stage1/dietlibc/i386/acos.S,
- mdk-stage1/dietlibc/libpthread/pthread_funlockfile.c,
- mdk-stage1/dietlibc/libcruft/res_mkquery.c,
- mdk-stage1/dietlibc/include/sys/timeb.h,
- mdk-stage1/dietlibc/libugly/iconv_close.c,
- mdk-stage1/dietlibc/ia64/__alarm.c,
- mdk-stage1/dietlibc/x86_64/socketpair.S,
- mdk-stage1/dietlibc/i386/sinh.S, mdk-stage1/dietlibc/libdl/test/test.c,
- mdk-stage1/dietlibc/include/asm/alpha-sigcontext.h,
- mdk-stage1/dietlibc/i386/memchr.S,
- mdk-stage1/dietlibc/profiling/profil.c,
- mdk-stage1/dietlibc/libdl/_dl_rel.h, mdk-stage1/dietlibc/i386/__ten.S,
- mdk-stage1/dietlibc/lib/execle.c,
- mdk-stage1/dietlibc/include/sys/s390-ioctl.h,
- mdk-stage1/dietlibc/i386/recvmsg.S,
- mdk-stage1/dietlibc/ia64/getsockopt.S,
- mdk-stage1/dietlibc/i386/md5asm.S, mdk-stage1/dietlibc/i386/memcpy.S,
- mdk-stage1/dietlibc/libcruft/__parse.c,
- mdk-stage1/dietlibc/x86_64/setsockopt.S,
- mdk-stage1/dietlibc/libcruft/getspnam_r.c,
- mdk-stage1/dietlibc/syscalls.s/getgid32.S,
- mdk-stage1/dietlibc/libpthread/pthread_fdglue2.c,
- mdk-stage1/dietlibc/ia64/__time.c, mdk-stage1/dietlibc/i386/tanh.S,
- mdk-stage1/dietlibc/lib/siginterrupt.c,
- mdk-stage1/dietlibc/i386/strcat.S,
- mdk-stage1/dietlibc/libugly/grantpt.c, mdk-stage1/dietlibc/lib/rand48.c,
- mdk-stage1/dietlibc/syscalls.s/setresgid32.S,
- mdk-stage1/dietlibc/syscalls.s/lchown32.S,
- mdk-stage1/dietlibc/profiling/README, mdk-stage1/dietlibc/ia64/msgsnd.S,
- mdk-stage1/dietlibc/libugly/getservbyname_r.c,
- mdk-stage1/dietlibc/x86_64/send.c, mdk-stage1/dietlibc/i386/socket.S,
- mdk-stage1/dietlibc/ia64/setsockopt.S,
- mdk-stage1/dietlibc/include/asm/parisc-sigcontext.h,
- mdk-stage1/dietlibc/include/sys/gmon.h,
- mdk-stage1/dietlibc/i386/acosh.S, mdk-stage1/dietlibc/ia64/socket.S,
- mdk-stage1/dietlibc/libcruft/dn_expand.c,
- mdk-stage1/dietlibc/lib/binshstr.c,
- mdk-stage1/dietlibc/include/netinet/udp.h,
- mdk-stage1/dietlibc/x86_64/msgget.S,
- mdk-stage1/dietlibc/libugly/getprotobyname_r.c,
- mdk-stage1/dietlibc/libcruft/res_search.c,
- mdk-stage1/dietlibc/libshell/dirname.c,
- mdk-stage1/dietlibc/i386/exp10.S, mdk-stage1/dietlibc/libdl/_dl_queue.c,
- mdk-stage1/dietlibc/lib/socketpair.c, mdk-stage1/dietlibc/i386/ldexp.S,
- mdk-stage1/dietlibc/libstdio/ftello64.c,
- mdk-stage1/dietlibc/libpthread/pthread_fputc.c,
- mdk-stage1/dietlibc/libdl/test/test_so.c,
- mdk-stage1/dietlibc/i386/strchr.S, mdk-stage1/dietlibc/lib/pwrite64.c,
- mdk-stage1/dietlibc/include/netinet/tcp.h,
- mdk-stage1/dietlibc/libm/pow.c,
- mdk-stage1/dietlibc/libcruft/res_query.c,
- mdk-stage1/dietlibc/include/asm/mips-sigcontext.h,
- mdk-stage1/dietlibc/libstdio/fputc_unlocked.c,
- mdk-stage1/dietlibc/libcruft/sysconf_cpus.c,
- mdk-stage1/dietlibc/alpha/lseek64.S, mdk-stage1/dietlibc/i386/recv.S,
- mdk-stage1/dietlibc/libcruft/getspent.c,
- mdk-stage1/dietlibc/libugly/iconv_open.c,
- mdk-stage1/dietlibc/lib/memrchr.c,
- mdk-stage1/dietlibc/syscalls.s/epoll_wait.S,
- mdk-stage1/dietlibc/x86_64/sendmsg.S,
- mdk-stage1/dietlibc/libugly/wtent.c, mdk-stage1/dietlibc/i386/mmap.S,
- mdk-stage1/dietlibc/syscalls.s/getgroups32.S,
- mdk-stage1/dietlibc/i386/atol.S,
- mdk-stage1/dietlibc/include/sys/ucontext.h,
- mdk-stage1/dietlibc/libcruft/dnscruft4.c,
- mdk-stage1/dietlibc/include/sys/mips-ioctl.h,
- mdk-stage1/dietlibc/include/netinet/ip_icmp.h,
- mdk-stage1/dietlibc/lib/sigqueueinfo.c,
- mdk-stage1/dietlibc/libcruft/__prepare_parse.c,
- mdk-stage1/dietlibc/x86_64/waitpid.S,
- mdk-stage1/dietlibc/i386/setsockopt.S,
- mdk-stage1/dietlibc/include/sys/gmon_out.h,
- mdk-stage1/dietlibc/lib/cfsetispeed.c,
- mdk-stage1/dietlibc/i386/socketcall.S,
- mdk-stage1/dietlibc/include/asm/sigcontext.h,
- mdk-stage1/dietlibc/x86_64/msgsnd.S, mdk-stage1/dietlibc/lib/labs.c,
- mdk-stage1/dietlibc/x86_64/recvmsg.S,
- mdk-stage1/dietlibc/libugly/getservbyport.c,
- mdk-stage1/dietlibc/libugly/getaddrinfo.c,
- mdk-stage1/dietlibc/ia64/syscalls.h,
- mdk-stage1/dietlibc/libcompat/getdelim.c,
- mdk-stage1/dietlibc/lib/__truncate64.c,
- mdk-stage1/dietlibc/include/sys/hppa-ioctl.h,
- mdk-stage1/dietlibc/libcrypt/md5crypt.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigsuspend.S,
- mdk-stage1/dietlibc/i386/listen.S,
- mdk-stage1/dietlibc/lib/if_nameindex.c,
- mdk-stage1/dietlibc/syscalls.s/truncate64.S,
- mdk-stage1/dietlibc/libcruft/__parse_nws.c,
- mdk-stage1/dietlibc/lib/readdir64.c,
- mdk-stage1/dietlibc/syscalls.s/setuid32.S,
- mdk-stage1/dietlibc/libugly/gethostent.c,
- mdk-stage1/dietlibc/syscalls.s/epoll_create.S,
- mdk-stage1/dietlibc/include/sys/sysmacros.h,
- mdk-stage1/dietlibc/syscalls.s/madvise.S,
- mdk-stage1/dietlibc/lib/pwrite.c, mdk-stage1/dietlibc/i386/log1p.S,
- mdk-stage1/dietlibc/ia64/shutdown.S,
- mdk-stage1/dietlibc/lib/__v_scanf.c,
- mdk-stage1/dietlibc/include/sys/epoll.h,
- mdk-stage1/dietlibc/x86_64/start.S,
- mdk-stage1/dietlibc/x86_64/sigaction.c,
- mdk-stage1/dietlibc/i386/getsockname.S, mdk-stage1/dietlibc/i386/sin.S,
- mdk-stage1/dietlibc/i386/sincos.S,
- mdk-stage1/dietlibc/libcruft/scandir64.c,
- mdk-stage1/dietlibc/lib/cfgetospeed.c, mdk-stage1/dietlibc/i386/asinh.S,
- mdk-stage1/dietlibc/libstdio/tmpfile.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigprocmask.S,
- mdk-stage1/dietlibc/ia64/recvfrom.S, mdk-stage1/dietlibc/i386/ipow.S,
- mdk-stage1/dietlibc/syscalls.s/init_module.S,
- mdk-stage1/dietlibc/lib/__ftruncate64.c,
- mdk-stage1/dietlibc/i386/atan.S, mdk-stage1/dietlibc/libm/tanh.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigprocmask.S,
- mdk-stage1/dietlibc/x86_64/accept.S, mdk-stage1/dietlibc/ia64/start.S,
- mdk-stage1/dietlibc/include/sysexits.h,
- mdk-stage1/dietlibc/lib/signal.c, mdk-stage1/dietlibc/ia64/accept.S,
- mdk-stage1/dietlibc/include/stddef.h,
- mdk-stage1/dietlibc/include/stdarg.h,
- mdk-stage1/dietlibc/libstdio/fgetc_unlocked.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigaction.S,
- mdk-stage1/dietlibc/lib/strxfrm.c, mdk-stage1/dietlibc/ia64/shmctl.S,
- mdk-stage1/dietlibc/x86_64/msgrcv.S,
- mdk-stage1/dietlibc/libcruft/getpwnam_r.c,
- mdk-stage1/dietlibc/i386/libm2.S, mdk-stage1/dietlibc/ia64/fork.S:
- Import dietlibc 0.22 + other fixes for AMD64
-
- * mdk-stage1/dns.c, mdk-stage1/dietlibc/lib/msgget.c,
- mdk-stage1/dietlibc/lib/strerror.c,
- mdk-stage1/insmod-modutils/obj/obj_s390.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname.c,
- mdk-stage1/dietlibc/librpc/rpc_prot.c,
- mdk-stage1/dietlibc/lib/iscntrl.c, mdk-stage1/dietlibc/include/stdint.h,
- mdk-stage1/dietlibc/lib/atexit.c, mdk-stage1/dietlibc/include/stdlib.h,
- mdk-stage1/dietlibc/libpthread/pthread_cancel.c,
- mdk-stage1/dietlibc/libdl/dlopen.c, mdk-stage1/dietlibc/lib/isgraph.c,
- mdk-stage1/dietlibc/lib/closedir.c,
- mdk-stage1/insmod-modutils/obj/obj_alpha.c,
- mdk-stage1/insmod-modutils/include/config.h,
- mdk-stage1/dietlibc/lib/alloc.c, mdk-stage1/dietlibc/lib/tcsetpgrp.c,
- mdk-stage1/dietlibc/i386/Makefile.add,
- mdk-stage1/dietlibc/include/sys/mman.h,
- mdk-stage1/dietlibc/include/fcntl.h, mdk-stage1/dietlibc/lib/memchr.c,
- mdk-stage1/dietlibc/lib/isupper.c, mdk-stage1/dietlibc/lib/qsort.c,
- mdk-stage1/dietlibc/lib/isxdigit.c,
- mdk-stage1/dietlibc/librpc/svc_raw.c,
- mdk-stage1/dietlibc/include/arpa/nameser.h,
- mdk-stage1/dietlibc/lib/open64.c, mdk-stage1/newt/form.c,
- mdk-stage1/dietlibc/include/sys/file.h,
- mdk-stage1/insmod-modutils/obj/Makefile, mdk-stage1/dietlibc/lib/ftw.c,
- mdk-stage1/insmod-modutils/obj/obj_hppa64.c,
- mdk-stage1/insmod-modutils/obj/obj_hppa.c,
- mdk-stage1/dietlibc/libstdio/ftell.c,
- mdk-stage1/dietlibc/libstdio/fdopen.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_signal.c,
- mdk-stage1/dietlibc/include/pwd.h, mdk-stage1/dietlibc/lib/snprintf.c,
- mdk-stage1/dietlibc/i386/unified.S, mdk-stage1/dietlibc/lib/msgrcv.c,
- mdk-stage1/dietlibc/alpha/start.S,
- mdk-stage1/insmod-modutils/include/kallsyms.h,
- mdk-stage1/dietlibc/include/sys/ptrace.h,
- mdk-stage1/dietlibc/lib/mkfifo.c, mdk-stage1/dietlibc/lib/send.c,
- mdk-stage1/dietlibc/lib/execvp.c,
- mdk-stage1/dietlibc/librpc/get_myaddress.c,
- mdk-stage1/insmod-modutils/include/elf_m68k.h,
- mdk-stage1/dietlibc/libugly/mktime.c,
- mdk-stage1/dietlibc/sparc/__longjmp.S,
- mdk-stage1/dietlibc/include/pthread.h,
- mdk-stage1/dietlibc/libpthread/pthread_key_delete.c,
- mdk-stage1/dietlibc/include/sys/socket.h,
- mdk-stage1/dietlibc/syscalls.s/nice.S,
- mdk-stage1/insmod-modutils/include/elf_mips.h,
- mdk-stage1/dietlibc/syscalls.s/getdents64.S,
- mdk-stage1/dietlibc/librpc/svc_run.c, mdk-stage1/dietlibc/lib/isblank.c,
- mdk-stage1/dietlibc/syscalls.s/time.S,
- mdk-stage1/dietlibc/libugly/gmtime_r.c,
- mdk-stage1/dietlibc/include/sys/kd.h,
- mdk-stage1/dietlibc/librpc/bindresvport.c,
- mdk-stage1/dietlibc/libstdio/fdglue.c,
- mdk-stage1/dietlibc/lib/ttyname.c,
- mdk-stage1/dietlibc/libcruft/getspnam.c,
- mdk-stage1/dietlibc/lib/strncat.c,
- mdk-stage1/dietlibc/libugly/strsignal.c,
- mdk-stage1/dietlibc/librpc/clnt_tcp.c,
- mdk-stage1/insmod-modutils/util/sys_cm.c,
- mdk-stage1/dietlibc/libcruft/initgroups.c,
- mdk-stage1/dietlibc/lib/sendmsg.c,
- mdk-stage1/dietlibc/include/sys/stat.h,
- mdk-stage1/dietlibc/libshell/fnmatch.c,
- mdk-stage1/dietlibc/syscalls.s/setresgid.S,
- mdk-stage1/dietlibc/libstdio/feof.c, mdk-stage1/init-libc-headers.h,
- mdk-stage1/dietlibc/include/dirent.h,
- mdk-stage1/dietlibc/libpthread/thread_internal.h,
- mdk-stage1/insmod-modutils/util/snap_shot.c,
- mdk-stage1/dietlibc/include/shadow.h,
- mdk-stage1/dietlibc/include/sys/select.h,
- mdk-stage1/dietlibc/lib/strsep.c,
- mdk-stage1/dietlibc/include/rpc/auth_unix.h,
- mdk-stage1/dietlibc/lib/msgsnd.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c,
- mdk-stage1/insmod-modutils/util/logger.c,
- mdk-stage1/dietlibc/libpthread/Makefile,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setscope.c,
- mdk-stage1/dietlibc/lib/__ltostr.c, mdk-stage1/dietlibc/lib/strlen.c,
- mdk-stage1/dietlibc/libregex/rx.c,
- mdk-stage1/insmod-modutils/util/xsystem.c,
- mdk-stage1/dietlibc/liblatin1/latin1-islower.c,
- mdk-stage1/dietlibc/lib/raise.c,
- mdk-stage1/dietlibc/libpthread/pthread_setspecific.c,
- mdk-stage1/dietlibc/lib/semget.c,
- mdk-stage1/dietlibc/libcruft/inet_aton.c,
- mdk-stage1/dietlibc/lib/sigismember.c, mdk-stage1/dietlibc/librpc/svc.c,
- mdk-stage1/dietlibc/lib/sigemptyset.c,
- mdk-stage1/dietlibc/include/sys/vfs.h,
- mdk-stage1/insmod-modutils/include/elf_ppc.h,
- mdk-stage1/dietlibc/libugly/getprotoent.c,
- mdk-stage1/dietlibc/lib/__stat64.c, mdk-stage1/dietlibc/include/elf.h,
- mdk-stage1/dietlibc/lib/strncmp.c,
- mdk-stage1/dietlibc/lib/gethostname.c,
- mdk-stage1/dietlibc/lib/vsscanf.c, mdk-stage1/dietlibc/lib/cfmakeraw.c,
- mdk-stage1/dietlibc/lib/perror.c, mdk-stage1/dietlibc/include/time.h,
- mdk-stage1/dietlibc/lib/strncasecmp.c,
- mdk-stage1/dietlibc/lib/__lltostr.c,
- mdk-stage1/dietlibc/libpthread/pthread_key_create.c,
- mdk-stage1/dietlibc/include/fnmatch.h,
- mdk-stage1/dietlibc/libugly/time_table_spd.c,
- mdk-stage1/dietlibc/libstdio/stderr.c,
- mdk-stage1/insmod-modutils/util/arch64.c,
- mdk-stage1/dietlibc/libdl/dlerror.c,
- mdk-stage1/dietlibc/libcruft/mkstemp.c,
- mdk-stage1/dietlibc/libstdio/ungetc.c,
- mdk-stage1/dietlibc/libugly/tzfile.c, mdk-stage1/log.c,
- mdk-stage1/dietlibc/include/rpc/xdr.h,
- mdk-stage1/dietlibc/include/rpc/key_prot.h,
- mdk-stage1/insmod-modutils/include/elf_sparc.h,
- mdk-stage1/dietlibc/sparc/start.S,
- mdk-stage1/dietlibc/libcruft/getpwnam.c,
- mdk-stage1/dietlibc/libpthread/pthread_spinlock.c,
- mdk-stage1/dietlibc/include/sys/un.h,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_lock.c,
- mdk-stage1/insmod-busybox/insmod.c,
- mdk-stage1/insmod-modutils/include/elf_arm.h,
- mdk-stage1/dietlibc/alpha/unified.S,
- mdk-stage1/dietlibc/include/sys/io.h,
- mdk-stage1/dietlibc/lib/getsockname.c,
- mdk-stage1/dietlibc/i386/__testandset.S,
- mdk-stage1/dietlibc/libcruft/dnscruft.c,
- mdk-stage1/dietlibc/lib/sprintf.c, mdk-stage1/rp-pppoe/src/Makefile,
- mdk-stage1/dietlibc/lib/tcdrain.c,
- mdk-stage1/dietlibc/include/sys/time.h,
- mdk-stage1/dietlibc/lib/errno_location.c,
- mdk-stage1/dietlibc/liblatin1/latin1-isprint.c,
- mdk-stage1/dietlibc/libshell/glob.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c,
- mdk-stage1/dietlibc/lib/_brk.c,
- mdk-stage1/insmod-modutils/obj/obj_arm.c,
- mdk-stage1/dietlibc/lib/sys_siglist.c,
- mdk-stage1/dietlibc/libcruft/getgrnam.c,
- mdk-stage1/dietlibc/lib/strtok.c, mdk-stage1/dietlibc/include/unistd.h,
- mdk-stage1/dietlibc/lib/isascii.c,
- mdk-stage1/dietlibc/librpc/xdr_reference.c,
- mdk-stage1/dietlibc/sparc/urem.S, mdk-stage1/dietlibc/i386/__longjmp.S,
- mdk-stage1/dietlibc/include/sys/syslog.h, mdk-stage1/Makefile,
- mdk-stage1/dietlibc/lib/bind.c, mdk-stage1/dietlibc/libdl/Makefile,
- mdk-stage1/dietlibc/librpc/svc_simple.c,
- mdk-stage1/dietlibc/lib/lockf.c, mdk-stage1/dietlibc/lib/htons.c,
- mdk-stage1/dietlibc/lib/shmdt.c, mdk-stage1/dietlibc/i386/setjmp.S,
- mdk-stage1/dietlibc/syscalls.s/ioperm.S,
- mdk-stage1/dietlibc/lib/getenv.c,
- mdk-stage1/dietlibc/include/features.h,
- mdk-stage1/dietlibc/libpthread/CHANGES,
- mdk-stage1/dietlibc/include/arpa/inet.h,
- mdk-stage1/dietlibc/lib/strtoul.c,
- mdk-stage1/dietlibc/libstdio/fprintf.c,
- mdk-stage1/dietlibc/include/regex.h,
- mdk-stage1/dietlibc/lib/__stat64_cvt.c,
- mdk-stage1/dietlibc/libcruft/inet_ntop.c,
- mdk-stage1/dietlibc/include/getopt.h,
- mdk-stage1/insmod-modutils/obj/obj_ia64.c, mdk-stage1/minilibc.c,
- mdk-stage1/insmod-modutils/include/util.h,
- mdk-stage1/insmod-modutils/include/version.h,
- mdk-stage1/dietlibc/alpha/Makefile.add,
- mdk-stage1/dietlibc/include/net/if.h,
- mdk-stage1/dietlibc/lib/recvfrom.c, mdk-stage1/dietlibc/sparc/clone.S,
- mdk-stage1/dietlibc/lib/memccpy.c, mdk-stage1/dietlibc/lib/strtoull.c,
- mdk-stage1/dietlibc/libcruft/getgrgid.c,
- mdk-stage1/dietlibc/librpc/auth_unix.c,
- mdk-stage1/dietlibc/include/termios.h,
- mdk-stage1/dietlibc/include/strings.h,
- mdk-stage1/insmod-modutils/include/elf_alpha.h,
- mdk-stage1/dietlibc/lib/execv.c,
- mdk-stage1/dietlibc/include/sys/param.h,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setstacksize.c,
- mdk-stage1/dietlibc/librpc/xdr_mem.c,
- mdk-stage1/dietlibc/libcruft/res_init.c,
- mdk-stage1/dietlibc/libpthread/pthread_detach.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_tcdrain.c,
- mdk-stage1/newt/Makefile, mdk-stage1/dietlibc/lib/isatty.c,
- mdk-stage1/dietlibc/include/sys/mtio.h,
- mdk-stage1/dietlibc/lib/memcmp.c,
- mdk-stage1/dietlibc/include/sys/sysinfo.h,
- mdk-stage1/dietlibc/librpc/clnt_simple.c,
- mdk-stage1/dietlibc/lib/vfork.c, mdk-stage1/dietlibc/lib/isalpha.c,
- mdk-stage1/dietlibc/lib/strncpy.c, mdk-stage1/dietlibc/lib/strcmp.c,
- mdk-stage1/insmod-modutils/include/obj.h,
- mdk-stage1/dietlibc/include/rpc/clnt.h, mdk-stage1/frontend.h,
- mdk-stage1/dietlibc/libcruft/getpass.c, mdk-stage1/dietlibc/lib/abort.c,
- mdk-stage1/dietlibc/syscalls.s/stime.S,
- mdk-stage1/dietlibc/sparc/fork.S, mdk-stage1/dietlibc/lib/readdir.c,
- mdk-stage1/dietlibc/lib/sbrk.c,
- mdk-stage1/dietlibc/include/sys/reboot.h,
- mdk-stage1/dietlibc/syscalls.s/getresuid.S,
- mdk-stage1/dietlibc/liblatin1/latin1-iscntrl.c,
- mdk-stage1/dietlibc/include/limits.h, mdk-stage1/dietlibc/lib/putenv.c,
- mdk-stage1/dietlibc/include/paths.h,
- mdk-stage1/dietlibc/librpc/pmap_prot2.c,
- mdk-stage1/dietlibc/librpc/pmap_clnt.c,
- mdk-stage1/dietlibc/lib/memcpy.c,
- mdk-stage1/insmod-modutils/obj/obj_kallsyms.c,
- mdk-stage1/dietlibc/syscalls.s/_llseek.S,
- mdk-stage1/dietlibc/include/setjmp.h,
- mdk-stage1/insmod-modutils/obj/obj_m68k.c,
- mdk-stage1/dietlibc/lib/tcgetpgrp.c, mdk-stage1/dietlibc/lib/abs.c,
- mdk-stage1/dietlibc/Makefile, mdk-stage1/dietlibc/include/net/route.h,
- mdk-stage1/dietlibc/syscalls.s/fstat64.S, mdk-stage1/mar/Makefile,
- mdk-stage1/dietlibc/include/rpc/auth.h, mdk-stage1/dietlibc/ppc/start.S,
- mdk-stage1/dietlibc/lib/assert_fail.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc.c,
- mdk-stage1/dietlibc/lib/if_nametoindex.c,
- mdk-stage1/dietlibc/include/inttypes.h, mdk-stage1/dietlibc/lib/atoi.c,
- mdk-stage1/dietlibc/librpc/svc_tcp.c,
- mdk-stage1/dietlibc/alpha/setjmp.S,
- mdk-stage1/dietlibc/include/net/if_arp.h, mdk-stage1/ppp/pppd/Makefile,
- mdk-stage1/insmod-modutils/obj/obj_common.c,
- mdk-stage1/dietlibc/librpc/authunix_prot.c,
- mdk-stage1/dietlibc/lib/longjmp.c,
- mdk-stage1/dietlibc/libugly/getmntent.c,
- mdk-stage1/insmod-modutils/obj/obj_load.c, mdk-stage1/dietlibc/diet.c,
- mdk-stage1/dietlibc/libstdio/fwrite.c,
- mdk-stage1/insmod-modutils/obj/obj_mips.c,
- mdk-stage1/dietlibc/libugly/asprintf.c,
- mdk-stage1/dietlibc/librpc/clnt_udp.c,
- mdk-stage1/dietlibc/lib/recvmsg.c, mdk-stage1/dietlibc/lib/sendto.c,
- mdk-stage1/dietlibc/include/endian.h,
- mdk-stage1/dietlibc/libstdio/stdin.c,
- mdk-stage1/dietlibc/libdl/dlclose.c, mdk-stage1/bzlib/Makefile,
- mdk-stage1/Makefile.common, mdk-stage1/dietlibc/dietdirent.h,
- mdk-stage1/insmod-modutils/util/xstrcat.c,
- mdk-stage1/dietlibc/libpthread/pthread_testcancel.c,
- mdk-stage1/dietlibc/libshell/realpath.c, mdk-stage1/rescue-gui.c,
- mdk-stage1/dietlibc/lib/tcsetattr.c,
- mdk-stage1/dietlibc/libstdio/fgets.c,
- mdk-stage1/dietlibc/include/rpc/netdb.h,
- mdk-stage1/dietlibc/lib/sscanf.c, mdk-stage1/dietlibc/lib/creat.c,
- mdk-stage1/dietlibc/lib/getdomainname.c,
- mdk-stage1/dietlibc/libstdio/fclose.c,
- mdk-stage1/dietlibc/lib/vsnprintf.c, mdk-stage1/dietlibc/lib/ispunct.c,
- mdk-stage1/insmod-modutils/util/sys_oim.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setschedparam.c,
- mdk-stage1/dietlibc/sparc/mmap.c, mdk-stage1/dietlibc/dietstdio.h,
- mdk-stage1/dietlibc/librpc/xdr_array.c, mdk-stage1/init.c,
- mdk-stage1/dietlibc/lib/__isnan.c,
- mdk-stage1/dietlibc/include/sys/resource.h,
- mdk-stage1/dietlibc/lib/tolower.c,
- mdk-stage1/dietlibc/alpha/__longjmp.S,
- mdk-stage1/dietlibc/libpthread/pthread_join.c,
- mdk-stage1/dietlibc/libstdio/fopen.c,
- mdk-stage1/dietlibc/syscalls.s/umount2.S,
- mdk-stage1/dietlibc/include/signal.h,
- mdk-stage1/dietlibc/librpc/rpc_callmsg.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutexattr_setkind_np.c,
- mdk-stage1/dietlibc/i386/clone.S,
- mdk-stage1/insmod-modutils/include/elf_i386.h,
- mdk-stage1/dietlibc/lib/__dtostr.c,
- mdk-stage1/dietlibc/syscalls.s/ipc.S,
- mdk-stage1/dietlibc/include/sys/cdefs.h,
- mdk-stage1/dietlibc/include/sys/types.h,
- mdk-stage1/insmod-modutils/util/sys_gks.c,
- mdk-stage1/insmod-modutils/util/xrealloc.c,
- mdk-stage1/dietlibc/include/sys/shm.h,
- mdk-stage1/dietlibc/libpthread/pthread_cond_timedwait.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname_r.c,
- mdk-stage1/dietlibc/lib/lseek64.c,
- mdk-stage1/dietlibc/libdl/_dl_search.c,
- mdk-stage1/dietlibc/dietfeatures.h,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr.c,
- mdk-stage1/dietlibc/librpc/svc_udp.c,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr_r.c,
- mdk-stage1/dietlibc/libugly/localtime_r.c,
- mdk-stage1/dietlibc/include/netdb.h, mdk-stage1/dietlibc/lib/semop.c,
- mdk-stage1/insmod-modutils/obj/obj_i386.c,
- mdk-stage1/dietlibc/lib/opendir.c, mdk-stage1/dietlibc/libugly/system.c,
- mdk-stage1/dietlibc/i386/start.S, mdk-stage1/dietlibc/include/dlfcn.h,
- mdk-stage1/dietlibc/lib/usleep.c, mdk-stage1/dietlibc/lib/strchr.c,
- mdk-stage1/dietlibc/ppc/unified.S,
- mdk-stage1/dietlibc/syscalls.s/waitpid.S,
- mdk-stage1/dietlibc/libpthread/pthread_sys_fcntl.c,
- mdk-stage1/dietlibc/lib/memset.c, mdk-stage1/dietlibc/lib/__fstat64.c,
- mdk-stage1/dietlibc/include/sched.h,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setschedpolicy.c,
- mdk-stage1/dietlibc/lib/accept.c, mdk-stage1/dietlibc/lib/pread.c,
- mdk-stage1/dietlibc/.cvsignore, mdk-stage1/dietlibc/sparc/setjmp.S,
- mdk-stage1/dietlibc/librpc/pmap_rmt.c,
- mdk-stage1/insmod-modutils/util/xstrdup.c,
- mdk-stage1/dietlibc/include/sys/ioctl.h,
- mdk-stage1/dietlibc/libpthread/pthread_setcanceltype.c,
- mdk-stage1/dietlibc/lib/exec_lib.c,
- mdk-stage1/dietlibc/include/string.h,
- mdk-stage1/dietlibc/libpthread/pthread_atfork.c,
- mdk-stage1/insmod-modutils/include/elf_sparc64.h,
- mdk-stage1/dietlibc/include/assert.h, mdk-stage1/dietlibc/lib/connect.c,
- mdk-stage1/dietlibc/include/locale.h,
- mdk-stage1/dietlibc/libpthread/pthread_attr_init.c,
- mdk-stage1/dietlibc/lib/execl.c, mdk-stage1/dietlibc/lib/tcflush.c,
- mdk-stage1/dietlibc/libstdio/setvbuf.c,
- mdk-stage1/dietlibc/libpthread/README,
- mdk-stage1/insmod-modutils/include/elf_s390.h,
- mdk-stage1/dietlibc/libcruft/getlogin.c,
- mdk-stage1/dietlibc/lib/__lstat64.c, mdk-stage1/dietlibc/lib/strcpy.c,
- mdk-stage1/dietlibc/lib/strtod.c, mdk-stage1/dietlibc/libdl/_dl_open.c,
- mdk-stage1/dietlibc/include/stdio.h,
- mdk-stage1/insmod-modutils/util/sys_nim.c,
- mdk-stage1/dietlibc/lib/sigdelset.c, mdk-stage1/dietlibc/libdl/dlsym.c,
- mdk-stage1/dietlibc/lib/setsockopt.c,
- mdk-stage1/dietlibc/libpthread/pthread_setcancelstate.c,
- mdk-stage1/dietlibc/libcruft/inet_ntoa.c,
- mdk-stage1/dietlibc/lib/vsprintf.c,
- mdk-stage1/insmod-modutils/util/alias.h,
- mdk-stage1/dietlibc/include/grp.h, mdk-stage1/pcmcia_/Makefile,
- mdk-stage1/dietlibc/lib/isprint.c,
- mdk-stage1/dietlibc/syscalls.s/setresuid.S,
- mdk-stage1/dietlibc/syscalls.s/lstat64.S,
- mdk-stage1/dietlibc/lib/__getcwd.c, mdk-stage1/dietlibc/lib/isdigit.c,
- mdk-stage1/dietlibc/lib/semctl.c, mdk-stage1/dietlibc/include/rpc/rpc.h,
- mdk-stage1/dietlibc/lib/strstr.c,
- mdk-stage1/dietlibc/include/rpc/pmap_rmt.h,
- mdk-stage1/dietlibc/include/rpc/types.h,
- mdk-stage1/dietlibc/libcruft/inet_pton.c,
- mdk-stage1/insmod-modutils/util/sys_qm.c,
- mdk-stage1/dietlibc/include/utmp.h, mdk-stage1/dietlibc/lib/sleep.c,
- mdk-stage1/dietlibc/libugly/asctime_r.c,
- mdk-stage1/dietlibc/include/netinet/in.h,
- mdk-stage1/dietlibc/syscalls.s/sendfile.S,
- mdk-stage1/dietlibc/include/sys/msg.h,
- mdk-stage1/dietlibc/include/rpc/svc.h,
- mdk-stage1/dietlibc/include/netinet/ip.h,
- mdk-stage1/dietlibc/libcruft/getpagesize.c,
- mdk-stage1/dietlibc/sparc/unified.S,
- mdk-stage1/insmod-modutils/util/Makefile,
- mdk-stage1/dietlibc/lib/execlp.c, mdk-stage1/dietlibc/libstdio/fread.c,
- mdk-stage1/dietlibc/librpc/xdr.c, mdk-stage1/ppp/include/net/ppp_defs.h,
- mdk-stage1/dietlibc/lib/recv.c, mdk-stage1/dietlibc/lib/reboot.c,
- mdk-stage1/dietlibc/librpc/svc_auth_unix.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc64.c,
- mdk-stage1/dietlibc/include/errno.h,
- mdk-stage1/dietlibc/syscalls.s/stat64.S,
- mdk-stage1/dietlibc/include/sys/uio.h,
- mdk-stage1/dietlibc/librpc/pmap_getport.c,
- mdk-stage1/dietlibc/libstdio/printf.c,
- mdk-stage1/dietlibc/include/sys/times.h,
- mdk-stage1/dietlibc/lib/sigaddset.c, mdk-stage1/dietlibc/lib/sigjmp.c,
- mdk-stage1/dietlibc/lib/getopt.c,
- mdk-stage1/dietlibc/lib/if_indextoname.c,
- mdk-stage1/dietlibc/libcrypt/crypt.c,
- mdk-stage1/insmod-modutils/Makefile,
- mdk-stage1/dietlibc/include/rpc/pmap_prot.h,
- mdk-stage1/dietlibc/libstdio/fflush.c,
- mdk-stage1/dietlibc/libugly/popen.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_trylock.c,
- mdk-stage1/dietlibc/ppc/mmap.c, mdk-stage1/dietlibc/include/sys/poll.h,
- mdk-stage1/dietlibc/librpc/getrpcport.c,
- mdk-stage1/dietlibc/librpc/auth_none.c,
- mdk-stage1/dietlibc/lib/pread64.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setinheritsched.c,
- mdk-stage1/insmod-modutils/util/config.c,
- mdk-stage1/dietlibc/lib/strtoll.c, mdk-stage1/dietlibc/include/resolv.h,
- mdk-stage1/insmod-modutils/util/sys_dm.c,
- mdk-stage1/dietlibc/lib/bsearch.c, mdk-stage1/dietlibc/lib/strcasecmp.c,
- mdk-stage1/dietlibc/sparc/shmat.c,
- mdk-stage1/dietlibc/librpc/pmap_getmaps.c,
- mdk-stage1/dietlibc/ppc/__testandset.S,
- mdk-stage1/dietlibc/libugly/setenv.c,
- mdk-stage1/dietlibc/include/alloca.h, mdk-stage1/dietlibc/libdl/README,
- mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c,
- mdk-stage1/insmod-busybox/Makefile,
- mdk-stage1/dietlibc/librpc/clnt_generic.c,
- mdk-stage1/dietlibc/lib/memmove.c, mdk-stage1/dietlibc/sparc/pipe.S,
- mdk-stage1/dietlibc/include/daemon.h,
- mdk-stage1/dietlibc/liblatin1/latin1-isgraph.c,
- mdk-stage1/dietlibc/include/math.h, mdk-stage1/dietlibc/sparc/udiv.S,
- mdk-stage1/dietlibc/lib/remove.c,
- mdk-stage1/dietlibc/include/sys/sendfile.h,
- mdk-stage1/dietlibc/libugly/isleap.c,
- mdk-stage1/dietlibc/syscalls.s/syslog.S,
- mdk-stage1/insmod-modutils/obj/obj_reloc.c,
- mdk-stage1/dietlibc/lib/getpeername.c,
- mdk-stage1/dietlibc/include/sys/ipc.h, mdk-stage1/dietlibc/lib/rand.c,
- mdk-stage1/dietlibc/include/ftw.h,
- mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c,
- mdk-stage1/dietlibc/lib/shmat.c,
- mdk-stage1/insmod-modutils/include/module.h,
- mdk-stage1/dietlibc/librpc/xdr_stdio.c,
- mdk-stage1/insmod-modutils/util/xmalloc.c,
- mdk-stage1/dietlibc/sparc/umul.S,
- mdk-stage1/insmod-modutils/include/kerneld.h,
- mdk-stage1/dietlibc/librpc/clnt_raw.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_init.c,
- mdk-stage1/dietlibc/libstdio/stdout.c, mdk-stage1/dietlibc/README,
- mdk-stage1/dietlibc/libcruft/herrno_location.c,
- mdk-stage1/dietlibc/lib/shmctl.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_unlock.c,
- mdk-stage1/dietlibc/librpc/xdr_rec.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_destroy.c,
- mdk-stage1/dietlibc/include/rpc/rpc_msg.h,
- mdk-stage1/dietlibc/syscalls.h, mdk-stage1/dietlibc/lib/toupper.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_open.c,
- mdk-stage1/dietlibc/lib/sigfillset.c, mdk-stage1/dietlibc/lib/listen.c,
- mdk-stage1/dietlibc/include/glob.h, mdk-stage1/dietlibc/libdl/_dl_int.h,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_destroy.c,
- mdk-stage1/dietlibc/include/sys/mount.h, mdk-stage1/disk.c,
- mdk-stage1/dietlibc/lib/socket.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_waitpid.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setdetachstate.c,
- mdk-stage1/dietlibc/libugly/strftime.c,
- mdk-stage1/dietlibc/lib/shutdown.c, mdk-stage1/insmod-modutils/insmod.c,
- mdk-stage1/dietlibc/lib/msgctl.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname2.c,
- mdk-stage1/dietlibc/include/rpc/pmap_clnt.h,
- mdk-stage1/dietlibc/syscalls.s/pause.S,
- mdk-stage1/dietlibc/syscalls.s/socketcall.S,
- mdk-stage1/dietlibc/libpthread/pthread_cond_init.c,
- mdk-stage1/dietlibc/liblatin1/latin1-isupper.c,
- mdk-stage1/dietlibc/lib/islower.c,
- mdk-stage1/dietlibc/sparc/Makefile.add,
- mdk-stage1/dietlibc/include/sys/wait.h,
- mdk-stage1/dietlibc/lib/isalnum.c, mdk-stage1/dietlibc/libstdio/fseek.c,
- mdk-stage1/slang/Makefile, mdk-stage1/minilibc.h,
- mdk-stage1/dietlibc/librpc/getrpcent.c, mdk-stage1/dietlibc/AUTHOR,
- mdk-stage1/dietlibc/lib/getsockopt.c,
- mdk-stage1/dietlibc/libdl/_dl_jump.S, mdk-stage1/dietlibc/lib/atol.c,
- mdk-stage1/dietlibc/lib/isspace.c,
- mdk-stage1/dietlibc/syscalls.s/__pread.S,
- mdk-stage1/dietlibc/lib/strtol.c, mdk-stage1/dietlibc/lib/htonl.c,
- mdk-stage1/dietlibc/include/sys/sem.h,
- mdk-stage1/insmod-modutils/obj/obj_ppc.c,
- mdk-stage1/dietlibc/lib/shmget.c,
- mdk-stage1/dietlibc/include/rpc/auth_des.h,
- mdk-stage1/dietlibc/libcruft/getpwuid.c,
- mdk-stage1/dietlibc/libugly/logging.c,
- mdk-stage1/dietlibc/libcruft/dnscruft2.c,
- mdk-stage1/dietlibc/libpthread/pthread_create.c,
- mdk-stage1/dietlibc/alpha/clone.S,
- mdk-stage1/dietlibc/libpthread/pthread_sys_logging.c: Merge from
- R9_0-AMD64, most notably:
- - AMD64 support to insmod-busybox, minilibc, et al.
- - Sync with insmod-modutils 2.4.19 something but everyone should use
- dietlibc nowadays
- - Factor out compilation and prefix with $(DIET) for dietlibc builds
- - 64-bit & varargs fixes
-
- * mdk-stage1/stdio-frontend.c: typo from post-rereading
- Merge from R9_0-AMD64, most notably:
- - AMD64 support to insmod-busybox, minilibc, et al.
- - Sync with insmod-modutils 2.4.19 something but everyone should use
- dietlibc nowadays
- - Factor out compilation and prefix with $(DIET) for dietlibc builds
- - 64-bit & varargs fixes
-
- * mdk-stage1/dietlibc/threadsafe.sh, mdk-stage1/dietlibc/findcflags.sh:
- add missing scripts
-
- * mdk-stage1/dietlibc/libpthread/thread_key.c,
- mdk-stage1/dietlibc/lib/puts.c, mdk-stage1/dietlibc/lib/memccmp.c,
- mdk-stage1/dietlibc/libcruft/entlib.c,
- mdk-stage1/dietlibc/libcruft/grent.c, mdk-stage1/dietlibc/dirstream.h,
- mdk-stage1/dietlibc/syscalls.s/ptrace.s,
- mdk-stage1/dietlibc/lib/set_errno.c, mdk-stage1/dietlibc/lib/vprintf.c,
- mdk-stage1/dietlibc/syscalls.s/sigaction.S,
- mdk-stage1/dietlibc/libcruft/entlib.h, mdk-stage1/dietlibc/start.h,
- mdk-stage1/dietlibc/lib/__xmknod.c, mdk-stage1/dietlibc/lib/alarm.c,
- mdk-stage1/dietlibc/libcruft/pwent.c,
- mdk-stage1/dietlibc/libstdio/fputc.c,
- mdk-stage1/dietlibc/alpha/signal.S,
- mdk-stage1/dietlibc/libdl/elf_hash.c, mdk-stage1/dietlibc/dietstdarg.h,
- mdk-stage1/dietlibc/lib/speed.c,
- mdk-stage1/dietlibc/syscalls.s/llseek.S,
- mdk-stage1/dietlibc/lib/getservent.c,
- mdk-stage1/dietlibc/syscalls.s/sigsuspend.S,
- mdk-stage1/dietlibc/lib/errlist.c, mdk-stage1/dietlibc/lib/nop.c,
- mdk-stage1/dietlibc/syscalls.s/signal.S,
- mdk-stage1/dietlibc/libcruft/spent.c,
- mdk-stage1/dietlibc/syscalls.s/sigprocmask.S,
- mdk-stage1/dietlibc/libpthread/thread_internal.c,
- mdk-stage1/dietlibc/alpha/sigprocmask.S,
- mdk-stage1/dietlibc/lib/random.c,
- mdk-stage1/dietlibc/syscalls.s/sigpending.S,
- mdk-stage1/dietlibc/syscalls.s/exit.S,
- mdk-stage1/dietlibc/syscalls.s/pwrite.S,
- mdk-stage1/dietlibc/libugly/daemon.c,
- mdk-stage1/dietlibc/libstdio/fgetc.c,
- mdk-stage1/dietlibc/lib/vfprintf.c: even more removals
-
- * mdk-stage1/dietlibc/dieticonv.h, mdk-stage1/dietlibc/dietlibm.h,
- mdk-stage1/dietlibc/dyn_stop.c, mdk-stage1/dietlibc/binshstr.h,
- mdk-stage1/dietlibc/linuxnet.h, mdk-stage1/dietlibc/parselib.h,
- mdk-stage1/dietlibc/dietuglyweaks.h, mdk-stage1/dietlibc/dyn_start.c,
- mdk-stage1/dietlibc/dietdns.h: latest missing files
-
-2003/06/04 Pixel <pixel at mandrakesoft.com>
-
- * fsedit.pm: allow specifying lv_name in auto_installs (not tested!)
-
- * install_steps.pm: don't use framebuffer after install on i845 (even if
- framebuffer works during install)
- (this implies no graphical boot)
-
- * diskdrake/interactive.pm, lvm.pm: allow choosing lv name (thanks to
- Brian Murrell)
-
-2003/06/03 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/ja.po, share/po/vi.po, share/po/sq.po: updated
- Estonien, Japanese, Albanian and Vietnamese po files
-
-2003/06/02 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Update
-
-2003/06/02 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: updated Spanish translations
-
-2003/05/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, keyboard.pm, share/po/it.po, share/po/nl.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: changed the name of the russian phonetic layout
-
-2003/05/30 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * standalone/mousedrake, drakxtools.spec: add mouse test in non-embedded
- mode (#2049)
-
-2003/05/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated Vietnamese file
-
- * share/po/de.po: updated German file
- updated Vietnamese file
-
-2003/05/28 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/isdn.pm: forgot to commit the new configuration step
- - remove isdn-light config (seen with isdn4net maintainer)
- - new step to keep old device configuration
-
- * network/isdn_consts.pm: s/my/our/ to make perl_checker happy in isdn.pm
-
-2003/05/28 François Pons <fpons at mandrakesoft.com>
-
- * network/modem.pm: remove /dev/ttyS14 link by drakconnect.
-
-2003/05/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: grow MAX_ARP_RETRIES from 4 to 7 after erwan's
- suggestion
-
-2003/05/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/id.po, share/po/ru.po, share/po/ro.po,
- share/po/th.po, share/po/is.po, share/po/no.po, share/po/hr.po,
- share/po/tr.po, share/po/ta.po, share/po/mt.po, share/po/sq.po,
- share/po/it.po, share/po/nl.po, share/po/fi.po, share/po/he.po,
- share/po/lt.po, share/po/lv.po, share/po/hu.po: updated Albanian file
-
-2003/05/28 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * network/isdn_consts.pm: fix isdndata export in stripped package
-
-2003/05/27 Daouda Lo <daouda at mandrakesoft.com>
-
- * any.pm:
- - user name must begin with a letter but not with a number or - or _
-
-2003/05/27 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: updated Spanish translation
-
-2003/05/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po, share/po/bs.po, share/po/gl.po, share/po/de.po,
- share/po/br.po, share/po/cy.po, share/po/af.po, share/po/et.po,
- share/po/az.po, share/po/da.po, share/po/ca.po, share/po/cs.po,
- share/po/bg.po, share/po/ar.po, share/po/ga.po: updated Estonian file
-
-2003/05/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-0.5mdk
- 9.2-0.4mdk
-
-2003/05/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/uz.po, share/po/sk.po, share/po/wa.po, share/po/pt_BR.po,
- share/po/sl.po, share/po/et.po, share/po/zh_TW.po, share/po/ja.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/sr@Latn.po, share/po/sq.po, share/po/uk.po, share/po/eu.po,
- share/po/es.po, share/po/DrakX.pot, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/fi.po, share/po/pl.po, share/po/eo.po,
- share/po/el.po: updated pot file
-
-2003/05/26 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: be perl_checker prototype compliant
-
- * commands: use formatError to display the error message
- (to have a better error message than "SCALAR(0x....) at ...")
-
- * interactive/http.pm, interactive.pm, interactive/newt.pm:
- - methods with no argument are not functions with no argument!
- - perl_checker fixes
-
-2003/05/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm: Added new toggle possibilities to the menu; use "en_US" for
- US layout
-
-2003/05/23 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/network.pm: #3628 /etc/resolv.conf explicit rights set (by titi)
-
-2003/05/23 gbeauchesne
-
- * any.pm, bootloader.pm: Kernel and initrd are now in /boot/efi/mandrake
- on IA-64
-
- * drakxtools.spec: Update changelog
-
- * mdk-stage1/insmod-modutils/obj/Makefile:
- -Wno-error on IA-64 too for insmod-modutils/obj
-
- * install_gtk.pm, share/list.ia64: Clean-ups. Remove
- /var/log/XFree86.0.log from filelist
-
-2003/05/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/po/ja.po: updated Japanese file
-
-2003/05/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksplash, network/network.pm, network/modem.pm,
- standalone/draksec, install_steps.pm, handle_configs.pm,
- standalone/drakautoinst, standalone/drakpxe, my_gtk.pm,
- partition_table/sun.pm, install_steps_interactive.pm,
- standalone/harddrake2, standalone/drakboot, standalone/drakTermServ,
- standalone/net_monitor, standalone/drakbackup, partition_table/raw.pm,
- partition_table.pm, interactive/http.pm, printer/main.pm,
- security/msec.pm, diskdrake/interactive.pm, partition_table/bsd.pm,
- standalone/fileshareset, standalone/drakfloppy, standalone/drakfont,
- standalone/drakconnect, standalone/drakgw, interactive/gtk.pm,
- standalone/drakbug, standalone/drakperm, fsedit.pm, .perl_checker,
- printer/printerdrake.pm: perl_checker fixes
-
- * drakxtools.spec: next release
-
- * standalone/drakfirewall: please perl_checker
-
- * standalone/logdrake: perl_checker fixes
- perl_checker fixes
-
-2003/05/22 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/05/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
-2003/05/22 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: Fix differntial user file naming.
-
-2003/05/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * printer/printerdrake.pm: better english (#1342)
-
- * standalone/draksplash, standalone/logdrake: gtk+-2 specs prohibid
- playing with policy
-
- * drakxtools.spec: 9.2-0.3mdk
- next 9.2-0.3mdk bits
- fix #3485
-
- * network/netconnect.pm: kill some warnings catched by diagnostics pragma
-
- * standalone/drakconnect: gtk+-2 specs prohibid playing with policy
- (build_list) simplify ip parsing
- workaround #3341: display "Bad ip" instead of a blank field if ip
- wasn't correctly parsed as an ip ?
-
- * standalone/drakbug: do not mix interactive and ugtk2, let reusse
- create_dialog()
- do not set twice the title, ugtk2->new already do it for us
- remove unused variable
- gtk+-2 specs prohibid playing with policy
- (quit_global) inline it
- - further clean gui construction through functionnal ugtk2
- - do not gratuitously add:
- o " " around button labels
- o empty strings at end of kernel release
- - (parse_release) simplify
- - there's no need to keep a reference on field that we do not further
- use (distro release is parsed again when needed and kernel release
- is already stored in some variable)
- - do not pack nothing to widgets
- - simplify gui construction through create_packtable(), we really do
- not have to offuscate it like c programmers have to
- - one shall not be able to alter kernel or distribution release number
-
- * harddrake/data.pm: do not fork usb module drivers list but reuse
- list_modules one instead
-
- * share/po/fr.po: update fr translation
-
-2003/05/21 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/network.pm: add some ip checking (#853)
- remove old comments
-
-2003/05/21 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translations
-
-2003/05/21 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: fix gc sux in 1.117 modfiying function behaviour
- gtktext_insert: fix indenting of one line, takes that as a
- pretext to redo whole function identing without tabs
- beautify titi
-
-2003/05/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/be.po, share/po/uk.po, share/po/bg.po, share/po/sr.po,
- share/po/ru.po: put "yawerty" in cyrillic for languages using cyrillic
- alphabet
-
-2003/05/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.2-0.3mdk's first bits (more to com tomorrow)
-
- * standalone/drakboot: we already have fork()+exec() detect_loader, so
- there's no need to do
- it again
-
- * standalone/harddrake2: remove unused function that should never have
- come to live
- - help menu items are not checkable
- - do not display spurious "/" on menu buttons when embedded
- - (strip_first_underscore) let speedup the regexp
-
- * printer/gimp.pm: please gc
-
- * ugtk2.pm (gtktext_append) fix gtktext_insert() call
-
-2003/05/20 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Partially updated
-
-2003/05/20 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * modules/interactive.pm: fix BUG 2530, no more spurious window when
- insmoding fail
-
- * network/ethernet.pm: #763 #2336 fix alias in modules.conf
- perl_checker compliant
-
-2003/05/20 keld
-
- * share/po/da.po: Updates
- gi/perl-install/share/po/da.po
-
-2003/05/20 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po, share/po/fi.po, share/po/de.po: updated pot file
- updated German, Estonian and Finnish files
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/lt.po, share/po/he.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/bs.po, share/po/uz.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sr@Latn.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: updated pot file
-
-2003/05/20 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/scannerdrake (removeverticalbar) pixelate
- perl_checker fixes
-
- * Xconfig/xfreeX.pm: perl_checker fix
-
- * common.pm (set_permissions): owner and group are optional parameters
-
- * printer/gimp.pm: typo fix
- (pop_spaces) prevent infinite loop
- (addprinter,isprinterconfigured): remove temp variables
-
- * drakxtools.spec: 9.1-0.2mdk
- distriblint fix
- one last fix
- further bits for 9.2-0.1mdk
- first bits of 9.2-0.1mdk
-
- * printer/printerdrake.pm:
- - perl_checker fixes, which show up the following bugs:
- - printer::printerdrake::{setup_smb,setup_socket}(): do not use undef
- values, but reuse those we just calculate
- - printer::printerdrake::main(): fix printer::default::printer_type()
- callee
-
- - printer::printerdrake::check_network(): fix
- network::netconnect::main() callee
-
- * network/nfs.pm (find_servers): chomp is uneeded
- (find_exports) better behavior when regexp does not match
-
- * standalone/harddrake2: better explanation of the wp field
-
- * standalone/draksplash: perl_checker fixes
-
- * printer/detect.pm, standalone/printerdrake: perl_checker fixes
- printer::printerdrake::{setup_smb,setup_socket}(): do not use undef
- values, but reuse those
- we just calculate
- printer::printerdrake::main(): fix printer::default::printer_type()
- callee
-
- * my_gtk.pm: fix #3952: do not pass extra argument (gc altered
- common::take_screenshot() api in r1.172 but forget to alter all
- callees)
-
- * standalone/drakfont: try to simplify
- (put_font_dir): $/variable is unlikely what was initially intended
- (chk_empty_xfs_path): typo fix
- (search_dir_font_uninstall): further simplify
- (chk_empty_xfs_path):
- - any { !cdt} equals to every { cdt }
- - if_ is unneeded
-
- (search_dir_font_uninstall) map { if_(cdt, $_ } equals to grep { cdt }
- (file_ok_sel) prevent potential crash in perl regexp engine if sg bad
- happenned in the translation
- fix #3960: divide by zero execption
-
- * security/msec.pm:
- - fix #3616 (draksec discarding changes)
- - add a end of line btw at the end of file to please cat
-
- * standalone/drakedm: fix #1743: offer to restart the dm service
-
- * printer/main.pm: perl_checker fixes
- printer::printerdrake::{setup_smb,setup_socket}(): do not use undef
- values, but reuse those
- we just calculate
- printer::printerdrake::main(): fix printer::default::printer_type()
- callee
- prevent set_usermode() vs set_cups_autoconf() conflict
- restore service restart
-
- * .perl_checker: check again printerdrake, this would have prevent whoever
- altered
- network::netconnect::main() to forget some calle when updating all
- calle for new parameters signature :-(
-
- * bootloader.pm: for whatever reason, the second part of
- detect_bootloader()
- consolidation didn't make up into the cvs
-
- * modules.pm (probe_category): one regexp is enough for isdn
-
- * share/po/fr.po: update french translation
-
-2003/05/19 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: updated Spanish translations
-
-2003/05/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * printer/gimp.pm (gimp::pop_spaces): consolidate skipping of lines that
- are space ended
- perl_checker fixes
-
- * any.pm: in standalone drakboot, raise a wait message window so that the
- user can figure
- out what occurs (lilo installation being quite long)
-
- * bootloader.pm: fix #3560 (drakboot not updating bootloader label): the
- only confusing
- bug is that when one come back to drakboot main window after having
- altered the bootloader, the main window still list the old bootloader
- as the current bootloader.
- let update this label.
- btw consolidate bootloader detection in bootloader::detect_bootloader()
- further fix #2826 (lilo failling to handle entry with spaces): replace
- spaces by underscores in labels (image names are not likely to contain
- spaces) to prevent the error
- when configuring to install grub bootloader, we first install lilo, then
- grub.
-
- the logic is that we only reread /etc/lilo.conf[1], so we need to write
- /etc/lilo.conf. but when installing grub, we really do not need to run
- lilo, we
- only have to write its config file.
-
- [1] because grub/menu.lst lacks some data and because we do neither want
- to
- parse both config files nor to resolve conflicts between configuration
- let further consolidate make_label_lilo_compatible()
-
- * printer/main.pm:
- - (read_location, rip_location): simplify loop condition since once we
- get
- $location_end, we exit it
- - (rip_location): simplify @location build when no existing one
- - (get_cups_autoconf, set_cups_autoconf, get_usermode, set_usermode):
- simplify
- a lot through getVarsFromSh() and setVarsInSh()
-
- - (set_jap_textmode) simplify a lot through substInFile()
-
- now all /etc/sysconfig/printing accesses get done by MDK::Common::File
- (until
- shell template from libconf is used)
- perl_checker fixes
-
- * standalone/logdrake: dialog window is already modal
-
- * printer/cups.pm, printer/detect.pm, printer/office.pm,
- printer/default.pm, printer/services.pm, printer/printerdrake.pm:
- perl_checker fixes
-
- * standalone/drakboot: fix #3560 (drakboot not updating bootloader label):
- the only confusing
- bug is that when one come back to drakboot main window after having
- altered the bootloader, the main window still list the old bootloader
- as the current bootloader.
- let update this label.
- btw consolidate bootloader detection in bootloader::detect_bootloader()
-
- * network/network.pm: move expert stuff under the "advanced" button like
- in all other drakx/drakxtools code
-
- * network/nfs.pm: do not drop return values from regexp but use them to
- ensure we do not
- reuse capture buffers from previous one, which is really bad and
- trully buggy
-
- * lang.pm: %langs: first column is supposed to be localized in english
-
- * standalone/drakconnect: some drakconnect cleanups
-
- * standalone/lsnetdrake: simplify
-
- * standalone/harddrake2: localize drive capabilites (aka burning, dvd
- managment, ...)
-
- * drakxtools.spec: add a bug reference
- last 9.1-38mdk bits
- update perl-gtk0 users list (drakcronat being ported to gtk+2)
-
- * install_steps.pm: fix network::netconnect::save_conf() callee
-
-2003/05/16 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm: add a step to warn user before writing settings
- (bug #852 and so)
-
-2003/05/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sr@Latn.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
-2003/05/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk2.pm: perl_checker fix
-
- * network/isdn_consts.pm: let it work
-
- * drakxtools.spec: first bits of 9.1-38mdk
-
-2003/05/15 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Typo fix
-
-2003/05/15 keld
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2003/05/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po, share/po/DrakX.pot: updated pot file
-
-2003/05/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * ugtk.pm: mark it as deprecated
-
- * standalone/harddrake2:
- - describe wp flag on ia32 cpus
- - make all field descriptions begin by a lower case letter
- - (create_dialog) :
- o options are passed through a hash ref
- o wrap text
- o update caller list
- - harddrake2: convert to use create_dialog() instead of
- interactive->warn
- (fix #3487)
-
- * standalone/drakfont (create_dialog) :
- - update caller list
- - add title parameter and update callers
- remove unused variable
- do not use interactive to get root capabilties, directly use
- require_root_capability()
- fix #1352 : do not add buggy font directories
- hide "mode switch" buttons to only enable to switch to the other mode,
- not the current one
-
- * ugtk2.pm (create_dialog) scroll window if needed
- - (create_dialog) :
- o options are passed through a hash ref
- o wrap text
- o update caller list
- - harddrake2: convert to use create_dialog() instead of
- interactive->warn
- (fix #3487)
- (create_dialog) :
- - update caller list
- - add title parameter and update callers
-
- * standalone/drakfloppy (create_dialog) :
- - update caller list
- - add title parameter and update callers
-
- * harddrake/data.pm: bump version
-
- * drakxtools.spec:
- - 9.1-37mdk
- - bump require in order to help rpm to update for new autoreq
-
-2003/05/14 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Some fixes and so...
- Updated partially
-
-2003/05/14 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * bootloader.pm: perl_checker fixes
-
- * standalone/drakfont:
- - uninline poulpy
- - use map instead of foreach in some places
- - (chk_empty_xfs_path): replacing foreach by map make obvious that we
- don't have to grep all items, grep will be enough
-
- - (put_font_dir): consolidate some code into convert_fonts; this make
- obvious there were some bug due to $/varname typo; this also reduce
- the message to translate ammount
-
-2003/05/13 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: perl_checker cleaning
-
-2003/05/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakedm: perl_checker fix
-
- * .perl_checker: ignore URPM::Resolve until francois qiet it down
-
- * standalone/drakperm: better use get instead of _get
-
- * network/netconnect.pm:
- - gtkcreate_img is exported by helpers tag in ugtk2
- - add a bug note: write_on_pixmap() is only in my_gtk, not in ugtk2 !
-
- * standalone/drakbug: make option managment look like real perl
-
- * standalone/drakgw: perl_checker fixes
-
- * Xconfig/main.pm (configure_everything_or_configure_chooser) keyboard and
- mouse
- paremeters really are optional, Xconfig::default::configure() handle
- the fact they're undefined for us
-
- * standalone/drakboot: let ugtk2->new manage the title setting
-
- * standalone/drakfont: better use s/_get/get/ and {get,set}_fraction
- instead of ->fraction
- helper
-
- * standalone/drakconnect:
- - remove 80% of perl_checker warnings
- - gtkbuttonset is not exported by ugtk2
-
- * standalone/drakTermServ: cleanups
-
- * standalone/drakfloppy:
- - add empty prototypes to help perl_checker
- - has_sub_trees: better use ||
-
- * standalone/drakxtv: help perl_checker by providing an empty prototype
-
-2003/05/12 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/isdn.pm: s/@isdn::isdndata/@isdndata/
-
-2003/05/12 Pixel <pixel at mandrakesoft.com>
-
- * interactive.pm: have the "Ok" in ask_from__add_modify_remove return true
- in default mode (eg: newt)
-
- * standalone/diskdrake: add "--list-hd" to please gbeauchesne
-
-2003/05/12 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: perl_checker compliance, differential mode
- option, explain adding directories
-
-2003/05/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm: use matched values only if matching did success
-
- * drakxtools.spec: help auto-provides
- 9.1-36mdk
-
- * standalone/drakboot:
- - pass enough dummy parameters to fs::merge_info_from_fstab
- - add empty prototypes to help perl_checker catch miss writeen func
- calls
- - do not log localized messages; what's more, this is supposed to be
- already logged by standalone
- - in testing mode:
- o do not enforce the need for bootsplash
- o do not really run mkinitrd
- - if bootsplash miss, we should just go back to main config window
-
-2003/05/10 keld
-
- * share/po/da.po: updates
- gi/perl-install/share/po/da.po
-
-2003/05/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/he.po: updated Hebrew file
-
-2003/05/07 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakconnect:
- - follow new network::netconnect::save_conf signature
- - remove call to network::netconnect::set_net_conf, no longer exist
-
- * network/netconnect.pm:
- - configuration stuff
- . rewrite sub save_conf, new signature is ($netcnx)
- . rewrite sub load_conf, connection type stored in
- /etc/sysconfig/drakconnect
- . remove sub read_raw_net_conf
- . shrink sub read_net_conf
- - drop if ($nb < 1 ), useless
- - perl_checker
-
- * network/isdn.pm: s|/sbin/isdnctrl|/usr/sbin/isdnctrl|
-
-2003/05/06 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: More entries
-
-2003/05/06 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/netconnect.pm:
- - remove sub intro
- - change sub main signature
- - drop !$::isWizard code
- - perl_checker
-
- * network/tools.pm:
- - drop !$::isWizard code
- - perl_checker
-
- * standalone/drakconnect:
- - drop !$::isWizard code
- - change netconnect::main signature
- - change network::modem::ppp_configure signature
- - perl_checker
- - cleanup
-
- * install_steps_interactive.pm: change network::netconnect::main signature
-
-2003/05/06 erwan
-
- * drakxtools.spec: Fix changelog
-
-2003/05/06 gbeauchesne
-
- * standalone/drakboot: Fix drakboot booloader methods for ia64 and amd64
-
-2003/05/06 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * keyboard.pm, share/po/sp.po, pixmaps/langs/lang-sh.png, lang.pm,
- share/po/sr.po, share/po/sr@Latn.po, pixmaps/langs/lang-sp.png: Renamed
- Serbian po files to follow standard (sr -> cyrillic, sr@Latn -> latin).
- 'sh' is used internally by DrakX for identifier by DrakX; and 'sh_YU'
- used as locale name, for latin Serbian, to avoid use of '@' character
- which may be problematic in some cases.
-
- * share/po/ru.po, share/po/he.po: updated Hebrew and Russian files
-
-2003/05/06 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: crash on add other files
- fix disabled incremental other files checkbox
- fix lack of incremental backups of other files
- fix broken daemon mode
- fix file remove issue
- I know it fails perl_checker - require ugtk2 never returns on console
-
-2003/05/05 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/ethernet.pm: perl_checker fixes
-
- * network/adsl.pm:
- - remove unused $intf in adsl_probe_info and adsl_ask_info
- - perl_checker fixes
-
- * network/netconnect.pm:
- - change configure and winmodemConfigure args (due to $intf drop)
-
- * network/modem.pm:
- - drop unused $intf in configure and winmodemConfigure
- - fix winmodem configuration behavior
- - perl_checker
-
-2003/05/02 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * network/ethernet.pm: fix typo
-
- * network/netconnect.pm, network/tools.pm, network/network.pm:
- perl_checker fixes
-
- * standalone/drakfont: fix sucky fonction (thanks to master guillaume)
-
-2003/04/30 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakfont: more perl_checker compliant
-
-2003/04/30 gbeauchesne
-
- * partition_table.pm: Revert XFS support, not stable enough especially on
- SMP
-
-2003/04/30 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * any.pm: have /etc/sysconfig/i18n in report.bug
-
- * ugtk2.pm: remove export for two removed functions
-
-2003/04/30 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/zh_CN.po: Changed charset encoding
-
-2003/04/30 Pixel <pixel at mandrakesoft.com>
-
- * install_steps.pm, http.pm, detect_devices.pm, network/isdn.pm,
- interactive.pm, Xconfig/resolution_and_depth.pm, c.pm,
- partition_table/sun.pm, network/adsl.pm, swap.pm, pkgs.pm, lang.pm,
- install2.pm: perl_checker compliance
-
-2003/04/30 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: perl_checker fix
-
- * drakxtools.spec: 9.1-35mdk
-
- * standalone/drakfont:
- - no non empty prototypes
- - s/sub { one func call }/code ref/
- perl_checker fixes
-
- * ugtk2.pm (create_dialog):
- - second parameter really is optionnal
- - do not blindly set the title to logdrake, this is used elsewhere
-
- * security/level.pm: fix #3618
-
- * scanner.pm, standalone/drakperm, standalone/drakbug: perl_checker fixes
-
-2003/04/29 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated partially
-
-2003/04/29 Damien Chaumette <dchaumette at mandrakesoft.com>
-
- * standalone/drakfont: more perl_checker friendly
- empty install list at cancel
- prevent void list installation
-
-2003/04/29 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: perl_checker can parse me at last
-
-2003/04/29 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot: no doble module loading
-
- * modules.pm (get_parameters) perl-ize
-
- * drakxtools.spec: 9.1-34mdk
-
- * standalone/drakedm: fix #3701: return back to the display managers menu
- if one cancel the
- installation of the required packages
-
-2003/04/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * rescue/list.i386: add resize_reiserfs
-
-2003/04/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bg.po, share/po/he.po: updated Hebrew and Bulgarian files
-
-2003/04/26 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
-2003/04/24 gbeauchesne
-
- * drakxtools.spec: 1.1.19-56mdk
-
-2003/04/24 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/various.pm, Xconfig/card.pm, standalone/draksec, scanner.pm,
- install_steps.pm, diskdrake/removable.pm, network/isdn.pm,
- interactive.pm, c.pm, partition_table/gpt.pm, resize_fat/directory.pm,
- install_steps_interactive.pm, network/netconnect.pm, mouse.pm,
- standalone/harddrake2, devices.pm, lang.pm, lvm.pm, install2.pm,
- raid.pm, crypto.pm, diskdrake/smbnfs_gtk.pm, commands.pm, ugtk2.pm,
- partition_table.pm, any.pm, loopback.pm, Xconfig/xfree3.pm,
- sbus_probing/main.pm, interactive/http.pm, diskdrake/interactive.pm,
- interactive/stdio.pm, pkgs.pm, interactive/newt.pm, harddrake/sound.pm,
- services.pm, security/level.pm, fs.pm, install_messages.pm,
- install_steps_auto_install.pm, harddrake/data.pm, keyboard.pm,
- diskdrake/hd_gtk.pm, Xconfig/monitor.pm, fsedit.pm, modules.pm,
- common.pm, detect_devices.pm, network/tools.pm, network/shorewall.pm,
- install_any.pm, timezone.pm: perl_checker adaptations + fixes
-
-2003/04/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: fix conflict with perl-Locale-gettext
-
-2003/04/23 gbeauchesne
-
- * share/list.x86_64, rescue/list.x86_64, partition_table.pm: add xfs for
- amd64
-
-2003/04/23 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * rescue/list: file-4.02
-
-2003/04/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/tg.po, share/po/uz.po, share/po/sk.po, share/po/ru.po,
- share/po/ro.po, share/po/wa.po, share/po/pt_BR.po, share/po/th.po,
- share/po/sl.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/tr.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/sq.po,
- share/po/uk.po, share/po/pl.po, share/po/sr.po, share/po/sv.po,
- share/po/sp.po, share/po/help-it.pot: updated pot file
-
-2003/04/23 Pixel <pixel at mandrakesoft.com>
-
- * help.pm: add prototypes
-
- * share/po/help_xml2pm.pl: add prototypes to help.pm
-
-2003/04/23 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.1-32mdk
- - localedrake is part of drakxtools-newt, so does its menu entry (and
- sanitize its entry btw)
- - drakxtools-newt: add the needed post and postun macros
- - sort provides'n obsoletes, add missing drakfloppy
-
- * share/po/fr.po: update french translation
-
-2003/04/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/et.po: updated pot file
- updated pot file
-
- * share/po/bs.po, share/po/id.po, share/po/gl.po, share/po/br.po,
- share/po/is.po, share/po/no.po, share/po/af.po, share/po/az.po,
- share/po/ja.po, share/po/hr.po, share/po/mt.po, share/po/fr.po,
- share/po/ga.po, share/po/nl.po, share/po/it.po, share/po/be.po,
- share/po/eu.po, share/po/es.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/fi.po, share/po/de.po, share/po/lt.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/eo.po,
- share/po/lv.po, share/po/bg.po, share/po/cs.po, share/po/el.po,
- share/po/hu.po, share/po/ar.po: updated pot file
-
-2003/04/22 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: fix typos and cleanup syntax
-
- * install_any.pm: perl_checker compliance for optional method arguments
- fix bug #3652 (grub must be installed for a loopback install)
-
- * share/po/help_xml2pm.pl, help.pm: fix typo (help.pm must return a true
- value)
- per Pablo's request:
- - create a mini header in the generated help-*.pot files
- - guilabel, guibutton and guimenu now uses %s to separate more cleanly
- what
- comes is doc and what is gui text
- !! the new generated help.pm has a different interface, non-backward
- compliant !!
-
- * Xconfig/xfree3.pm, Xconfig/xfreeX.pm, install_steps_gtk.pm,
- Xconfig/xfree.pm: perl_checker compliance for optional method arguments
-
- * interactive.pm: perl_checker compliance for optional method arguments
- adapt to new help.pm
-
- * share/po/help-fr.pot, share/po/help-de.pot, share/po/help-ru.pot,
- share/po/help-es.pot, share/po/help-it.pot: per Pablo's request:
- - create a mini header in the generated help-*.pot files
- - guilabel, guibutton and guimenu now uses %s to separate more cleanly
- what
- comes is doc and what is gui text
- !! the new generated help.pm has a different interface, non-backward
- compliant !!
-
-2003/04/22 tpittich
-
- * share/po/sk.po: fixed slovak translation (thanks to Stanislav Visnovsky
- and Zdenko Podobny)
-
-2003/04/22 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: array costs less than a hash
-
- * drakxtools.spec: 9.1-31mdk
-
-2003/04/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po: updated Italian file
-
-2003/04/21 Pixel <pixel at mandrakesoft.com>
-
- * keyboard.pm: 'Option "XkbCompat" "group_led"' is no good because
- it means that effectively NO other compatibility settings
- are included i.e. NONE of standard XFree86 keys work,
- including Ctrl-Alt-Fx, Ctrl-Alt-KP+, Ctrl-Alt-KP- etc.
- 'Option "XkbCompat" "default+group_led"' is much better
- (thanks Andrey Borzenkov)
-
- * share/rpmsrate: have bison and flex installed when DEVELOPMENT is chosen
- (thanks to Adam
- Williamson)
-
-2003/04/18 François Pons <fpons at mandrakesoft.com>
-
- * install_any.pm: make all CD as update (as it should have been to allow
- updates to be resolved).
-
-2003/04/17 gbeauchesne
-
- * share/list.x86_64: Add raid & reiserfs tools
-
- * drakxtools.spec: Use RPM_OPT_FLAGS when compiling tools
- (rpcinfo-flushed)
- 1.1.9-55mdk
-
- * tools/Makefile: Compile rpcinfo-flushed/xhost+ with -Os so that code
- size is reduced
- and magically fixed on hammer. ;-)
-
-2003/04/17 Pixel <pixel at mandrakesoft.com>
-
- * fs.pm: another perl_checker optional parameter compliance
- new perl_checker compliance
-
- * Xconfig/various.pm, network/network.pm, network/modem.pm,
- security/various.pm, standalone/draksec, partition_table/dos.pm,
- scanner.pm, install_steps.pm, Xconfig/parse.pm, network/isdn.pm,
- interactive.pm, resize_fat/directory.pm, install_steps_interactive.pm,
- network/netconnect.pm, Xconfig/xfreeX.pm, mouse.pm, devices.pm, lang.pm,
- resize_fat/boot_sector.pm, network/drakfirewall.pm,
- modules/interactive.pm, standalone/diskdrake, crypto.pm,
- Xconfig/main.pm, diskdrake/smbnfs_gtk.pm, install_interactive.pm,
- partition_table/raw.pm, ugtk2.pm, partition_table.pm, any.pm,
- install_steps_gtk.pm, partition_table/mac.pm, ftp.pm,
- diskdrake/interactive.pm, pkgs.pm, interactive/newt.pm,
- network/ethernet.pm, Xconfig/resolution_and_depth.pm, bootloader.pm,
- diskdrake/hd_gtk.pm, Xconfig/monitor.pm, fsedit.pm,
- partition_table/lvm_PV.pm, modules.pm, common.pm, detect_devices.pm,
- standalone/drakupdate_fstab, install_any.pm, timezone.pm: new
- perl_checker compliance
-
-2003/04/16 gbeauchesne
-
- * mdk-stage1/insmod-busybox/Makefile:
- - Update to busybox 0.65.0 version
- - Add support for x86-64
- Use $(DIET) wrapper
-
- * mdk-stage1/insmod-busybox/insmod.c, mdk-stage1/insmod-busybox/Config.h,
- mdk-stage1/insmod-busybox/busybox.h: Fixes. Don't care about taint
- stuff. Constify a little so that some dead
- branches could be nuked. -> Reduce code size by 5 KB.
- - Update to busybox 0.65.0 version
- - Add support for x86-64
- Merge back fixes from HEAD but don't use the init_module() et al. tricks
- since correct dietlibc 0.22 is used on the branch.
- - Update to insmod from busybox 0.65.0
- - Add support for x86-64
-
- * mdk-stage1/insmod-busybox/README: Update README
-
- * mdk-stage1/Makefile: use insmod-busybox on x86-64, save around 50 KB.
- ;-)
-
-2003/04/16 Pixel <pixel at mandrakesoft.com>
-
- * ugtk2.pm: comply to new each_index behaviour
-
-2003/04/16 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakconnect: fix #1675: swap the text and button widgets
-
-2003/04/15 gbeauchesne
-
- * detect_devices.pm: Fix hasSMP()
-
- * install_any.pm: CD-ROM installations use cdrom.img on x86-64 nowadays
-
-2003/04/15 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/harddrake2: add hint for translators
-
-2003/04/14 gbeauchesne
-
- * harddrake/data.pm: fix harddrake doesn't display unknow hardware (tv,
- 9.0 updates)
-
- * mdk-stage1/dhcp.c, docs/README, mdk-stage1/tools.c, mdk-stage1/stage1.h:
- Handle "netauto" mode (gc, post 9.1)
-
- * drakxtools.spec: Match current 9_0-64bit-branch state
-
-2003/04/14 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/dhcp.c, mdk-stage1/tools.c, mdk-stage1/stage1.h: put dhcp
- bootfile under netauto parameter
-
-2003/04/11 dam's <dams at idm.fr>
-
- * standalone/drakconnect: corrected titi typo
-
-2003/04/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/th.po: changed "reboot" to latin letters, as requested.
-
-2003/04/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/drakboot: any::setupBootloader() already call
- bootloader::install()
-
- * standalone/drakedm: it was designed in 2003, not 2002
-
-2003/04/07 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: first bits of 9.1-31mdk
- fix harddrake menu entry description
-
- * standalone/drakboot: fix #2826 (aka pixel sucks):
- pixel changed the booloader module api by throwing an exception
- instead of using the ugly /tmp/.error temporary file and altered drakx
- callers but forget to update standalone/* callers (aka drakboot).
- now, with this patch, any error during lilo/grub installation is
- catched and displayed, which is more generic than checking for spaces.
-
-2003/04/04 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * docs/README: some fixes and improvements
-
- * docs/HACKING: some updates
-
-2003/04/04 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: bump gtk2-perl require because of #3633
- 9.1-30mdk
-
- * scanner.pm: fix doble explanation logging of scannerdrake and harddrake
- startup
-
- * standalone/logdrake:
- - perl_checker fixes
- - ensure only one callback do regular parsing
-
- * standalone/drakfloppy: fix crash on floppy generation reported by
- Francisco Alcaraz
-
-2003/04/03 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Updated
-
-2003/04/03 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: after adding gtk_text_buffer_place_cursor in gtk2-perl, use it
- here :)
- fix #3633 (cursor at the end of TextView after gtktext_insert)
- remove a few memory leaks
-
- * drakxtools.spec: after adding gtk_text_buffer_place_cursor in gtk2-perl,
- use it here :)
-
-2003/04/02 gbeauchesne
-
- * detect_devices.pm: Update to match IA-64 ACPI format string "XXX CPUs
- available"
-
-2003/04/02 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * patch/9.1/patch-loopback.pl: Error scenario: When using a file for your
- / (a "loopback"), booting your newly
- installed system will fail with a kernel panic with flashing keyboard
- lights
- Why: The initrd needs to load the loop.o module to mount your /
- partition; but
- since recently, loop.o depends on aes.o, and since mkinitrd doesn't
- handle
- dependencies automatically and we didn't notice that change, we didn't
- update
- mkinitrd accordingly
- Solution: Format a floppy disk with a DOS filesystem (in Linux, you can
- use the
- command "mkdosfs /dev/fd0"). Copy patch.pl to the floppy disk. Remove
- the floppy
- and reboot using the Mandrake Linux 9.1 CD1 to do a CD-ROM installation.
- During
- boot, press F1 at the splash screen, then place your floppy disk that
- contains
- patch.pl in the floppy drive. At the prompt, type "patch", then follow
- the
- installation as usual.
-
- see bugzilla #3614
-
-2003/04/02 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
-2003/04/02 Pixel <pixel at mandrakesoft.com>
-
- * patch/9.1/patch-detectSMP-K6.pl: Error scenario: On a AMD-K6, install
- fails after the formatting partitions steps with a strange "type read"
- error
- Why: in some cases, the SMP detection code fails and force the install
- to exit
- Solution: Use patch.pl which disables SMP detection
- (thanks to Angela Bayley)
-
-2003/04/02 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake: remove unused variable
- - various perl_checker "fixes"
- - (logcolorize): make it saner regarding its arguments, thanks
- perl_checker
-
- * harddrake/sound.pm: hackism to shut up perl_checker
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, standalone/drakTermServ,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/lt.po, share/po/he.po, share/po/sp.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/tg.po,
- share/po/bs.po, share/po/uz.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sq.po, share/po/it.po, share/po/nl.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: s/initrdrd/initrd/ (Arpad Biro)
-
- * standalone/harddrake2: fix pablo patch that broke two translations
- (reported by Arkadiusz
- Lipiec)
-
-2003/04/01 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem-all: added restore into boot_entries default value,
- increased hd install size from
- 1500 MB to 2500 MB to include current ackbar cooker repository.
-
-2003/04/01 gbeauchesne
-
- * bootloader.pm: Indentation fixes
-
- * install_steps_gtk.pm: Pass $Driver to launchX in non /FB/ case
- Pass $Driver to launchX in non /FB/ case
- Backport from 9.1 xf4 fallbacking to fbdev driver
-
- * install_steps.pm: Remove MAKEDEV workaround for ia64. Fixes must be
- found, and kernel nowadays
- have devfs support.
-
- * install_gtk.pm: Backport from 9.1 xf4 fallbacking to fbdev driver
-
-2003/04/01 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: misc
-
-2003/04/01 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/logdrake (parse_file) pass explicit argument instead of
- relying on lexical $_
- being correct in that context (worked fine but this is bad)
-
- * share/po/fr.po:
- - fix fscking french translation
- - explain why it's bad to translate this way
-
- * standalone/draksound, install_steps_interactive.pm: move
- harddrake::sound $index param in hash and pass only the hash ref around
- functions
-
- * ugtk2.pm: perl_checker fixes
-
- * standalone/harddrake2:
- - fix fscking french translation
- - explain why it's bad to translate this way
- - prevent translators to do bad things (that is having badly
- constructed
- strings on screen)
- - reuse some translations instead of relying on extracting tools'
- merge
- feature
- - give translators more control on about window text
-
- * harddrake/sound.pm: propagate $in where needed
- move harddrake::sound $index param in hash and pass only the hash ref
- around
- functions
-
- * standalone/drakhelp: simplify
-
-2003/03/31 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Typo fix
-
-2003/03/31 François Pons <fpons at mandrakesoft.com>
-
- * bootloader.pm: copy kernel and stage1 in order to avoid remapping
- /mnt/hd on the fly during
- install for bootloader installation to complete correctly.
- fixed regex for kernel options retrieved for restore bootloader entry.
-
-2003/03/31 keld
-
- * share/po/da.po: spelling errors
- po/po/da.po gi/perl-install/share/po/da.po
-
-2003/03/31 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/vi.po: updated Vietnamese file
-
- * share/po/fr.po: fixed a bad grammatical error
-
-2003/03/30 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: clean
-
-2003/03/30 keld
-
- * share/po/da.po: spelling errors
- soft/menu-messages/da.po gi/perl-install/share/po/da.po
- some spelling errors
- soft/control-center/po/da.po gi/perl-install/share/po/da.po
-
-2003/03/29 keld
-
- * share/po/da.po: Updates
- soft/GtkMdkWidgets/po/da.po gi/perl-install/share/po/da.po
-
-2003/03/28 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: disable arabic whic doesn't work well after install
-
- * patch/9.1/hp.diff: disable arabic
-
-2003/03/28 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * lang.pm: Special cases for KDE to recognize zh_HK and zh_SG
-
-2003/03/28 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/card.pm: fix typo, grr...
- also have DontVTSwitch for i845 (and i85x)
- use option DontVTSwitch for i865
-
- * drakxtools.spec: use ServerFlags DontVTSwitch for i845, i865 and i85x
- use ServerFlags DontVTSwitch for i865
-
-2003/03/27 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sq.po: updated Albanian file
-
- * share/po/ja.po: updated Japanese file
-
-2003/03/27 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * docs/9.1_errata.txt:
- - mcc erratas
- - lexical ordering
-
-2003/03/26 François Pons <fpons at mandrakesoft.com>
-
- * install_any.pm: moved hdInstallPath to any.pm.
-
- * any.pm: removed acpi reference here (should already been have removed
- earlier).
- moved here hdInstallPath from install_any.
-
- * standalone.pm: simplified code to allow parsing rpmdb instead of just
- urpmi db.
-
- * bootloader.pm: fixed another typo for adding restore entry (grub menu).
- fixed wrong usage of any::hdInstallPath which is mapped as /tmp/image
- during
- installation.
- fix typo on grub menu file read.
-
- * rescue/tree/etc/oem-all: use fat32 instead of fat16, fixed
- mandrake-release to install.
- fix typo.
- mandrake-release should be installed.
- current parted does no more support fat fs but fat16 or fat32 fs.
-
-2003/03/26 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * docs/9.1_errata.txt: first drakxtools errata
-
- * drakxtools.spec: fix harddrake menu entry
-
-2003/03/25 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sq.po: updated Albanian file
-
-2003/03/24 François Pons <fpons at mandrakesoft.com>
-
- * network/netconnect.pm: added modem configuration after LT Modem support.
-
- * network/modem.pm: added login and password retrieval for ppp0 in
- configure function.
- propose /dev/modem before other device (as it will work for other most
- case).
- added modem configuration after LT Modem support.
-
-2003/03/24 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- Japanese file; updated pot file
-
-2003/03/24 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * any.pm, install_steps_interactive.pm: hp fix
-
- * drakxtools.spec:
- - fix changelog
- - 9.1-28mdk
- first bits of 9.1-26mdk
-
- * patch/9.1/hp.diff: more hp fixes
- mdk9.1 changes for hp
-
-2003/03/23 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/sq.po: updated Italian and Albanian files
-
-2003/03/22 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/tr.po, share/po/pt.po: updated Italian,
- Portuguese and Turkish files
-
-2003/03/21 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/ja.po: changed translation fo "mandrakesoft store"
- changed "mandrakesoft-shouten" to "mandrakesoft-no shouten"
- ("store named mandrakesoft" -> "mandrakesoft's store")
-
-2003/03/21 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/service_harddrake: increase timeout from 5 to 25 seconds
-
-2003/03/20 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed typo.
- add probe for netncx type in case of not already setted.
-
-2003/03/19 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: fix
-
-2003/03/19 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem, rescue/tree/etc/oem-all: added support for passing
- kernel options to oem scrpit.
-
- * lang.pm: silently use en_US for arabic.
- removed Arabic language (no correct font during install).
- avoid displaying Hong Kong as a country.
-
-2003/03/19 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * docs/mdk-9.2: update, sort
-
- * standalone/harddrake2: properly *both* reap zombies and clear status bar
- message
-
- * share/po/fr.po:
- - fix harddrake2 main window title broken by stupid translators
- - explain the problem
- - explain how to easily get « and » caracters
-
- * docs/9.1_errata.txt: first errate: ntfs kernel bug (bug and fix reported
- by Szakacsits
- Szabolcs)
-
-2003/03/18 François Pons <fpons at mandrakesoft.com>
-
- * rescue/tree/etc/oem, rescue/tree/etc/oem-all: added lookup into
- isolinux/alt0 if possible
- updated ramdisk_size=128000 acpi=off
-
-2003/03/18 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po: updated Indonesian file
-
- * share/po/wa.po: corrected small typo
-
-2003/03/18 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: s/mplayer-guimplayer-gui/mplayer-gui/
-
-2003/03/17 Frederic Lepied <flepied at mandrakesoft.com>
-
- * install_steps.pm: reverted to 1.604
-
-2003/03/17 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/da.po: updated Danish and Italian files
-
- * share/po/pt.po: updated Portuguese file
-
- * share/po/ja.po: updated Japanese file
-
-2003/03/17 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: Add NVIDIA_nforce for smp and secure kernel
- Fix NVIDIA_nforce entry removing kernel version (added by cleanrpmsrate)
- FlashPlayer with a capital P
-
-2003/03/16 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bs.po, share/po/ro.po: updated Bosnian and Romanian files
-
-2003/03/16 Warly <warly at mandrakesoft.com>
-
- * drakxtools.spec: 26mdk to fix drakperm
-
-2003/03/15 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/bs.po, share/po/vi.po: updated Bosnian and Vietnamese files
-
- * share/po/he.po: updated Hebrew file
-
-2003/03/15 Warly <warly at mandrakesoft.com>
-
- * install_steps.pm, share/rpmsrate, drakxtools.spec: fix a fatal error in
- drakpem in editable mode
-
- * standalone/drakperm: Fix fatal error in editable window when adding a
- new entry
-
-2003/03/14 David Baudens <baudens at mandrakesoft.com>
-
- * share/po/fr.po: Fix typo in french ads
-
-2003/03/14 François Pons <fpons at mandrakesoft.com>
-
- * standalone.pm: fix checking for installed kernel modules (for nvidia)
- (/me sux)
- (fix & changelog by pixel)
-
- * share/rpmsrate: fixed error mandrake_doc
- fixed gnupg using multiple rates.
- fixed synthax error.
-
- * install_steps_gtk.pm: made desktop group centred.
-
-2003/03/14 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * mdk-stage1/modules.c: fix myself sux: don't unconditionnally fgets
- /proc/modules, because fopen
- may have failed (the libc, in its great search for speed, probably
- doesn't
- care to check if the FILE* given to fgets is valid and opened)
-
-2003/03/14 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
- * share/po/is.po, share/po/el.po, share/po/he.po: updated Greek file
-
- * share/po/zh_CN.po: updated Chinese file
-
- * share/po/tr.po: updated Turkish file
-
-2003/03/14 Pixel <pixel at mandrakesoft.com>
-
- * drakxtools.spec: fix XFdrake handling NVidia proprietary drivers
-
-2003/03/14 Till Kamppeter <till at mandrakesoft.com>
-
- * drakxtools.spec: 9.1-23mdk
-
-2003/03/14 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: mandrake-galaxy doc link is broken if mandrake_doc is
- not install. Waiting for a better solution install mandrake_doc via
- rpmsrate in the same group as mandrake-galaxy.
-
-2003/03/13 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed bug #417: '$' character in printer URI not
- correctly handled.
-
-2003/03/13 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/main.pm: Fixed bug #417: '$' character in printer URI not
- correctly handled.
-
-2003/03/13 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: updated Spanish translations
-
-2003/03/13 François Pons <fpons at mandrakesoft.com>
-
- * install_steps_gtk.pm: desktop group simplification.
-
-2003/03/13 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
- * share/po/ru.po, share/po/fi.po: updated Russian and Finnish files
-
- * share/po/id.po, share/po/eo.po, share/po/cs.po, share/po/hu.po: updated
- Czech, Esperanto, Indonesian and Hungarian files
-
-2003/03/13 Pixel <pixel at mandrakesoft.com>
-
- * any.pm: cleanup (still need to handle permissions more cleanly, people
- using umask 0
- should be shot)
-
-2003/03/13 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakTermServ: Fix IP pool range bug from gtk2 conversion.
-
-2003/03/13 Till Kamppeter <till at mandrakesoft.com>
-
- * scanner.pm: Bug fixes:
- - SHOWSTOPPER: SCSI scanners were never recognized as already
- configured, the user was always asked whether he wants to configure
- them. Problem was that device files are symlinks.
- - Made most ISDN and ADSL devices not being considered as a scanner by
- Scannerdrake, SANE does not support internet scanners.
-
-2003/03/13 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/03/13 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: more logs
- first 9.1-22mdk bits
-
- * install_any.pm: alsa drivers are now named snd-<name> not anymore
- snd-card-<name>
-
- * any.pm: fix #3161 (ensure right permissions on /etc/sysconfig/autologin
- for
- bad root umask case)
-
- * modules.pm: via via686 upgdrade after simplification too (next time
- pixel told me
- it's better to reuse some regexp, i kill him)
- fix upgrade after simplification
- simplify
- convert alsa driver from old naming system to new one (snd-card-XXX =>
- snd-XXX) and ensure correct upgrade for snd-via683 and snd-via8233
- drivers
-
- * docs/mdk-9.2: more stuff
- more thoughts
-
-2003/03/13 Warly <warly at mandrakesoft.com>
-
- * install_gtk.pm: logo is the same for desktop and powerpack
- installations.
-
- * share/compssUsers.desktop: Make only one sectio. Include KDE/GNOME and
- documentation into it.
-
-2003/03/12 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: updated
-
-2003/03/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/cy.po, share/po/et.po, share/po/he.po: updated Welsh, Estonian
- and Hebrew files
-
-2003/03/12 François Pons <fpons at mandrakesoft.com>
-
- * install_any.pm: added log for kernel module packages found.
-
- * network/modem.pm: fixed typo.
- fix ltmodem package name with newer version.
-
- * install_steps_interactive.pm: fix for newer kernel module package name.
-
- * standalone/XFdrake: fix for newer commercial kernel module package name.
-
- * install_steps.pm: fix for newer commercial package name (kernel module).
- added minimal of what is selected log for pkg_install.
-
- * detect_devices.pm: fix titi sucks.
-
- * standalone.pm: fixed return value of check_kernel_module_packages and
- examination of synthesis
- file using current interface of urpm library.
- fix small typo.
-
-2003/03/12 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: fix non-important (but still valid) part of #2488, a.k.a
- package tree not expanding visually when it should (needs the mouse
- pointer over it to be updated visually)
-
- * share/po/ja.po: fix for "Advanced" by utuhiro <utuhiro at
- mx12.freecom.ne.jp>
-
-2003/03/12 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/nl.po: updated dutch file
- updated pot file
-
- * keyboard.pm: Tagged cyrillic keyboard as non-latin
-
-2003/03/12 Pixel <pixel at mandrakesoft.com>
-
- * standalone/diskdrake: set by default the fs type and mntpoint for
- removables not present in fstab
- (useful for harddrake)
-
- * standalone/drakupdate_fstab: have fd0 & fd1 be recognised as known
- entries, even if we don't probe them
- (useful for harddrake)
-
- * diskdrake/interactive.pm, install_interactive.pm: fix maximum loopback
- size (bug #3188)
-
-2003/03/12 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * harddrake/data.pm: jackadit^h^h^h^h^ hpixel said: "we do not need
- anymore --auto"
- fix typo
- handle multiple removable devices: their managment is different from
- other hw
- classes since we need to run a config tool per device and not one per hw
- class
-
- * standalone/harddrake2: fix first message display
- better packed paned behavior in both embedded and standalone modes
- handle multiple removable devices: their managment is different from
- other hw
- classes since we need to run a config tool per device and not one per hw
- class
-
- * drakxtools.spec: update requires
- 9.1-20mdk
-
- * standalone/service_harddrake: let it look better
- shut up perl_checker
- handle multiple removable devices: their managment is different from
- other hw
- classes since we need to run a config tool per device and not one per hw
- class
-
- * docs/mdk-9.2: better embedded diskdrake hint
-
- * diskdrake/hd_gtk.pm:
- - let diskdrake fit when embedded in mcc
- - let action box be larger so that there's no horizontal scrollbar in
- standalone mode
-
- * share/po/wa.po: fix package build :-(
-
- * standalone/drakedm: really sort
- - check if dm package is installed and install it if needed
- - use format instead of reverse() (not a big slow down but small
- rivers make
- big ones and it makes gc happier...)
-
-2003/03/11 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * lang.pm: thx perl checko
- (pablo) change kde font scheme (crossing fingers)
-
-2003/03/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/nl.po, share/po/cs.po: updated Dutch and Czech files
-
-2003/03/11 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: typos fixed
-
-2003/03/11 David Baudens <baudens at mandrakesoft.com>
-
- * share/advertising/10-security.png, share/advertising/07-server.pl,
- share/advertising/12-mdkexpert.png,
- share/advertising/06-development.png,
- share/advertising/06-development.pl, share/advertising/11-mnf.pl,
- share/advertising/09-mdksecure.png, share/advertising/01-thanks.png,
- share/advertising/07-server.png, share/advertising/02-community.png,
- share/po/fr.po, share/advertising/list, share/advertising/11-mnf.png,
- share/advertising/02-community.pl, share/advertising/03-software.pl,
- share/advertising/05-desktop.pl, share/advertising/09-mdksecure.pl,
- share/advertising/01-thanks.pl,
- share/advertising/13-mdkexpert_corporate.pl,
- share/advertising/12-mdkexpert.pl, share/advertising/03-software.png,
- share/advertising/08-store.pl, share/advertising/04-configuration.png,
- share/advertising/13-mdkexpert_corporate.png,
- share/advertising/10-security.pl, share/advertising/05-desktop.png,
- share/advertising/04-configuration.pl, share/advertising/08-store.png:
- Update
-
-2003/03/11 Florin Grad <florin at mandrakesoft.com>
-
- * standalone/drakgw: really use the chosen net_connect interface
-
-2003/03/11 François Pons <fpons at mandrakesoft.com>
-
- * network/network.pm: changed netcnx type probe (so that if an ethernet
- connection exists, it won't
- cause netcnx type to be always lan).
-
- * rescue/tree/etc/oem: modified language settings.
-
- * network/adsl.pm: moved probing code outside adsl_ask_info.
-
- * network/ethernet.pm: use $::prefix, waiting for 9.1 to be out before
- cleaning network modules.
-
- * standalone/drakconnect: added probing of adsl connection.
-
-2003/03/11 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps_gtk.pm: the shadow behind the new adverts looks ugly,
- remove it
- new advertisement will be with grey background
-
- * share/po/fr.po: rephrase a bit MNF advert to make it fit
- spelling
-
- * share/advertising/07-server.pl, share/advertising/06-development.pl,
- share/advertising/11-mnf.pl, share/advertising/02-community.pl,
- share/advertising/03-software.pl, share/advertising/05-desktop.pl,
- share/advertising/09-mdksecure.pl, share/advertising/01-thanks.pl,
- share/advertising/12-mdkexpert.pl,
- share/advertising/13-mdkexpert_corporate.pl,
- share/advertising/08-store.pl, share/advertising/10-security.pl,
- share/advertising/04-configuration.pl: fix pablo breaking translation of
- advertisement :)
-
- * lang.pm: thx perl checko
- (pablo) change kde font scheme (crossing fingers)
-
- * install_steps_interactive.pm: install additional locales package for
- country according to the locale that will be really used, not according
- to the default locale for a given country (fixing unecessary installing
- of locales-de in case of a fr_CH install)
-
-2003/03/11 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/it.po, share/po/no.po: updated Italian and Norwegian files
-
- * lang.pm: Changed Qt Chinese XIMStyle to 'Over The Spot' ('On The Spot'
- crashes)
- changed KDE default font names for CJK
-
- * share/po/nl.po, share/po/cs.po: updated Dutch and Czech files
-
- * share/po/da.po, share/po/vi.po: updated Danish and Vientamese files
-
-2003/03/11 Pixel <pixel at mandrakesoft.com>
-
- * Xconfig/main.pm: remove XFdrake icons (per dadou's request)
-
- * any.pm, bootloader.pm, standalone/drakboot: fix lilo-menu not working
- (bug #3048)
-
-2003/03/11 Stew Benedict <sbenedict at mandrakesoft.com>
-
- * standalone/drakbackup: More gtk2 fixes.
-
-2003/03/11 Till Kamppeter <till at mandrakesoft.com>
-
- * printer/printerdrake.pm: Added button to switch to japanese text file
- printing.
- Many bug fixes:
- - Wait messages bloxked the OK buttons of the dialogs telling how to
- scan and how to read photo cards on HP´s MF devices.
- - Do not configure OpenOffice.org any more, only Star Office.
- OpenOffice.org is patched to have native CUPS support now.
- - If the Port for a BrowsePoll address is left blank, 631 is taken as
- default now.
- - Text for firmware upload for HP LaserJet 1000 now also available in
- the 'Learn how to use printer' dialog.
- - Updated check of model name for HP´s MF devices to newest models.
-
- * printer/detect.pm: Made sure that all IP addresses of the local machine
- are in 'Allow
- From' lines in the /etc/cups/cupsd.conf, otherwise one can have
- certain configurations with which one cannot access to the options of
- the local printer(s).
-
- * printer/main.pm: Made sure that all IP addresses of the local machine
- are in 'Allow
- From' lines in the /etc/cups/cupsd.conf, otherwise one can have
- certain configurations with which one cannot access to the options of
- the local printer(s).
- Added button to switch to japanese text file printing.
-
- * printer/office.pm: Many bug fixes:
- - Wait messages bloxked the OK buttons of the dialogs telling how to
- scan and how to read photo cards on HP´s MF devices.
- - Do not configure OpenOffice.org any more, only Star Office.
- OpenOffice.org is patched to have native CUPS support now.
- - If the Port for a BrowsePoll address is left blank, 631 is taken as
- default now.
- - Text for firmware upload for HP LaserJet 1000 now also available in
- the 'Learn how to use printer' dialog.
- - Updated check of model name for HP´s MF devices to newest models.
-
-2003/03/11 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * drakxtools.spec: 9.1-19mdk final
-
- * docs/mdk-9.2: update
-
-2003/03/11 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add kdeartwork level 3 in KDE
-
- * share/logo-mandrake.png: 9.1 logo
-
-2003/03/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/no.po: minor typo
-
-2003/03/10 Alice Lafox <alice at lafox.com.ua>
-
- * share/po/ru.po: some fixes
- update
-
-2003/03/10 François Pons <fpons at mandrakesoft.com>
-
- * install_any.pm: use quoted url instead for install_urpmi.
- fixed duplicate url entry for file and removable.
- build a list file only if needed for install_urpmi.
-
- * rescue/tree/etc/oem, rescue/tree/etc/oem-all: added missing right
- parenthesis.
- fix for strange parted behaviour.
-
-2003/03/10 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * install_steps.pm: fix original #2842 problem
-
- * lang.pm (pablo) workaround console localization broken in RTL languages
- fix original #2842 problem
-
- * install_gtk.pm: meta class desktop also uses galaxy theme, not blue
- theme
-
-2003/03/10 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/no.po: minor typo
- updated Norwegian file
- updated Welsh, Icelandic, Italian, Norwegian
-
- * share/po/Makefile, share/po/it.po, share/po/is.po, share/po/cy.po:
- updated Welsh, Icelandic, Italian, Norwegian
-
- * keyboard.pm: Changed console Czech keyboard
-
-2003/03/10 Pixel <pixel at mandrakesoft.com>
-
- * install2.pm: fix getting brltty help and table (thanks to Hans Schou)
-
-2003/03/10 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/03/10 Thierry Vignaud <tvignaud at mandrakesoft.com>
-
- * standalone/draksec:
- - clean wait messages creation
- - fix wait messages displaying (label was not displayed) in both
- standalone and embedded modes
-
- * drakxtools.spec: fix #1461
- more logs
- typo fix
-
- * harddrake/TODO, docs/mdk-9.2: update
-
- * services.pm:
- - fix packing on standalone mode (no horizontal scrolling)
- - let show it all when embedded
-
-2003/03/10 Warly <warly at mandrakesoft.com>
-
- * share/rpmsrate: add kdeartwork-kde-classic not to have trouble in KDE
- updates.
- reduce gpm level from 4 to 2 in system
-
- * share/compssUsers.desktop: Update for new standard pack
-
-2003/03/09 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: Typo fix
-
-2003/03/09 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * share/po/fr.po: latest missing stuff
-
- * Xconfig/test.pm: fix background of X test during install
-
-2003/03/09 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
- * standalone/drakTermServ: fixed text (missing '/')
-
-2003/03/09 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: make perl_checker a happy prog
- no "Previous" button when choosing install or upgrade
-
-2003/03/08 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
-2003/03/07 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: mask encryption key (using stars)
-
-2003/03/07 Arkadiusz Lipiec <alipiec at elka.pw.edu.pl>
-
- * share/po/pl.po: One message
- updated
-
-2003/03/07 Fabian Mandelbaum <fabman at 2vias.com.ar>
-
- * share/po/es.po: Updated Spanish translation
-
-2003/03/07 Frederic Lepied <flepied at mandrakesoft.com>
-
- * any.pm: launch startx.autologin instead of startx in autologin
-
-2003/03/07 François Pons <fpons at mandrakesoft.com>
-
- * network/adsl.pm: dropped a line.
- fix logical error (flepied).
-
-2003/03/07 Guillaume Cottenceau <gc at mandrakesoft.com>
-
- * ugtk2.pm: refine the already dirty code to workaround gtk bug leading to
- bugzilla #1445 (clicking two times too fast still lead to same problem)
- fix rpmdrake dumping core when multiple searchs in
- "selected" and "upgradable" sorting modes (#2899)
-
- * tools/cvslog2changelog.pl: add fabman
- protect emails
-
- * drakxtools.spec: fix rpmdrake dumping core when multiple searchs in
- "selected" and "upgradable" sorting modes (#2899)
-
-2003/03/07 Pablo Saratxaga <pablo at mandrakesoft.com>
-
- * share/po/sk.po, share/po/pt_BR.po, share/po/th.po, share/po/et.po,
- share/po/ja.po, share/po/ko.po, share/po/da.po, share/po/uz.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/sq.po,
- share/po/it.po, share/po/es.po, share/po/lv.po, share/po/ru.po,
- share/po/sl.po, share/po/tr.po, share/po/mt.po, share/po/uk.po,
- share/po/lt.po, share/po/cy.po, share/po/tg.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/nl.po: iupdated Vietnamese,
- Estonian and Dutch files;
- fixed the translations of "default:LTR"
- updated pot file
-
- * share/po/gl.po, share/po/hr.po, share/po/be.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/he.po,
- share/po/ca.po, share/po/ar.po, share/po/eu.po, share/po/hu.po,
- share/po/id.po, share/po/br.po, share/po/no.po, share/po/ga.po,
- share/po/sp.po, share/po/bs.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/fr.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po: updated
- pot file
-
- * share/advertising/06-development.pl, share/advertising/02-community.pl,
- share/advertising/05-desktop.pl, share/advertising/01-thanks.pl,
- share/advertising/08-store.pl, share/advertising/11-mnf.pl,
- share/advertising/07-server.pl, share/advertising/10-security.pl,
- share/advertising/03-software.pl, share/advertising/09-mdksecure.pl,
- share/advertising/12-mdkexpert.pl,
- share/advertising/13-mdkexpert_corporate.pl,
- share/advertising/04-configuration.pl: Changed _() to N_()
-
- * share/po/fi.po: updated Finnish file
- updated pot file
-
-2003/03/07 Pixel <pixel at mandrakesoft.com>
-
- * install_steps_interactive.pm: mask encryption key (using stars)
-
- * Makefile.config: don't install share/advertising/*.pl files in
- Mandrake/mdkinst/usr/bin/perl-install/share, only in
- Mandrake/share/advertising
-
-2003/03/06 David Baudens <baudens@mandrakesoft.com>
-
- * share/advertising/03-software.pl: Fix typo
- Update
- Sync names with text files
-
- * share/advertising/07-server.pl, share/advertising/06-development.pl,
- share/advertising/05-desktop.pl, share/advertising/08-store.pl,
- share/advertising/11-mnf.pl,
- share/advertising/13-mdkexpert_corporate.pl: Update
- Sync names with text files
-
- * share/advertising/07-desktop.png, share/advertising/14-mdkexpert.png,
- share/advertising/14-mdkexpert.pl, share/advertising/17-mdkclub.pl,
- share/advertising/13-mdkcampus.png, share/advertising/06-mcc.png,
- share/advertising/11-mdkstore.pl, share/advertising/17-mdkclub.png,
- share/advertising/11-mdkstore.png, share/advertising/12-mdkstore.png,
- share/advertising/04-multimedia.png, share/advertising/10-mnf.png,
- share/advertising/03-internet.pl, share/advertising/05-games.pl,
- share/advertising/16-thanks.png, share/advertising/12-mdkstore.pl,
- share/advertising/15-mdkexpert-corporate.png,
- share/advertising/09-server.pl, share/advertising/05-games.png,
- share/advertising/04-multimedia.pl, share/advertising/13-mdkcampus.pl,
- share/advertising/03-internet.png, share/advertising/07-desktop.pl,
- share/advertising/09-server.png, share/advertising/08-development.png,
- share/advertising/10-mnf.pl,
- share/advertising/15-mdkexpert-corporate.pl,
- share/advertising/08-development.pl, share/advertising/06-mcc.pl: Remove
- old files
-
- * share/advertising/02-community.pl, share/advertising/01-thanks.pl,
- share/advertising/list: Use texts from specifications
-
- * share/advertising/10-security.png, share/advertising/07-server.png,
- share/advertising/11-mnf.png, share/advertising/03-software.png,
- share/advertising/10-security.pl, share/advertising/08-store.png,
- share/advertising/12-mdkexpert.png,
- share/advertising/06-development.png,
- share/advertising/09-mdksecure.png, share/advertising/09-mdksecure.pl,
- share/advertising/12-mdkexpert.pl,
- share/advertising/04-configuration.png,
- share/advertising/13-mdkexpert_corporate.png,
- share/advertising/05-desktop.png, share/advertising/04-configuration.pl:
- Sync names with text files
-
-2003/03/06 François Pons <fpons@mandrakesoft.com>
-
- * network/ethernet.pm: avoid virtual ethX to be reconfigured by
- drakconnect
- fixed ifconfig invocation and state analysis in install mode.
-
- * drakxtools.spec: avoid virtual ethX to be reconfigured by drakconnect
- NVIDIA drop.
-
- * install_any.pm: dropped allowNVIDIA_rpms method.
- added check_kernel_module_packages for checking prioprietary base kernel
- package.
-
- * install2.pm: added summaryAfter steps for summary.
-
- * any.pm: make sure acpi is installed.
-
- * standalone/XFdrake: moved prioprietary NVIDIA code support to generic
- prioprietary support in standalone.pm.
-
- * standalone.pm: fixed error message.
- added check_kernel_module_packages with same behaviour expected as for
- install_any module.
-
- * install_steps.pm: dropped allowNVIDIA_rpms
- fixed stupid again typo.
- modified logic for summaryAfter.
- fixed again the same typo.
- fixed stupid typo.
- summaryAfter created to install acpi and acpid if needed.
-
- * install_steps_interactive.pm: dropped allowNVIDIA_rpms
-
- * install_steps_gtk.pm: added desktop groups organization.
-
- * network/modem.pm: added support for kernel base name of ltmodem.
-
- * network/adsl.pm: fixed adsl login not probed in install mode.
-
-2003/03/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/url.c: provide Host: in http requests so that install works
- from sites with virtual hosting (#2561)
-
- * share/po/es.po: this translation can't get much big or else it will
- enlarge too
- much diskdrake
-
-2003/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Enabled Laotian (was missing a definition in %charsets),
- Bengali (there starts to be gnome translations available),
- and Kannada (there starts to be gnome translations available).
- Code for Xhosa added (there is an official kde-i18n-xh package
- available),
- wating for lang-xh.png to enable it
-
- * share/po/cs.po, share/po/vi.po, share/po/ta.po, share/po/fi.po,
- share/po/ar.po: updated Czech, Arabic, Finnish, Tamil and Vietnamese
- files
-
-2003/03/06 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: don't create xxx.conf for standard devfs compatibility names
-
- * install_steps_interactive.pm: basic encrypt_key handling in upgrade
- (don't mistype!)
-
- * share/po/help-ru.pot: add it since drakx-chapter.xml is ok (dixit Alice
- Lafox)
-
- * share/po/help_xml2pm.pl: do not exclude "ru" drakx-help.xml anymore
-
- * detect_devices.pm: merge cdroms__faking_ide_scsi() and
- zips__faking_ide_scsi() in
- cdroms_and_zips__faking_ide_scsi() to be able to have a good devfs
- device name
- this fixes *__faking_ide_scsi() not faking devfs_device causing bad
- /etc/devfs/conf.d/dvd.conf for dvd burners
-
- * install_any.pm: cleanup
-
-2003/03/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/draksec: perl_checker fix
-
- * harddrake/data.pm: move usb webcams which have mod_quickcam as a driver
- from unknown to
- webcam clategory since they do not have any valid usb class
-
- * standalone/service_harddrake: s/perl -w/use diagnostics/ so stat it get
- removed from package at
- build time
-
- * drakxtools.spec: typo fix
- 9.1-17mdk
- update
- 9.1-16mdk, first bit
- more fixes
-
- * harddrake/sound.pm: perl_checker fix
- fix #1929
- let fix #2244, #2245, #2730
-
- * standalone/draksplash: do not crash on color selection
- prevent one to pop up hundred of windows: make browse dialog be modal
- - fix #1766
- - do not crash when browsing
-
- * services.pm: we do use $in !!!!
-
- * docs/mdk-9.2: first bits of mdk9.2 specs (aka postponed bugs...) stuff
-
- * scanner.pm: perl_checker fixes
- do not detect some usb webcams as scanners ...
-
- * harddrake/TODO: update
-
- * standalone/draksound, install_steps_interactive.pm: let fix #2244,
- #2245, #2730
-
-2003/03/06 Warly <warly@mandrakesoft.com>
-
- * network/network.pm: detect if the device is pcmcia when initializing the
- ONBOOT parameter
-
-2003/03/06 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/po/fr.po: corrected remaining mise-à-jour
-
-2003/03/06 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: make sure acpi is installed.
-
- * install_steps.pm: modified logic for summaryAfter.
- fixed again the same typo.
- fixed stupid typo.
- summaryAfter created to install acpi and acpid if needed.
- menu update method modified for upgrade.
-
- * install2.pm: added summaryAfter steps for summary.
-
-2003/03/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/es.po: this translation can't get much big or else it will
- enlarge too
- much diskdrake
-
-2003/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * standalone/harddrake2: fixed XIM definitions for Chinese locales
-
- * share/rpmsrate: removed non-ascii chars
-
- * share/po/sv.po, share/po/sk.po: updated Slovak and Swedish files
-
- * lang.pm: Enabled Laotian (was missing a definition in %charsets),
- Bengali (there starts to be gnome translations available),
- and Kannada (there starts to be gnome translations available).
- Code for Xhosa added (there is an official kde-i18n-xh package
- available),
- wating for lang-xh.png to enable it
- fixed XIM definitions for Chinese locales
-
-2003/03/06 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: don't create xxx.conf for standard devfs compatibility names
-
- * detect_devices.pm: merge cdroms__faking_ide_scsi() and
- zips__faking_ide_scsi() in
- cdroms_and_zips__faking_ide_scsi() to be able to have a good devfs
- device name
- this fixes *__faking_ide_scsi() not faking devfs_device causing bad
- /etc/devfs/conf.d/dvd.conf for dvd burners
-
- * share/po/help_xml2pm.pl: do not exclude "ru" drakx-help.xml anymore
-
- * interactive/gtk.pm: "ensure buttons are visible when the widgets above
- are too big" only at install
-
-2003/03/06 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/03/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: fix #2672
-
- * Makefile: move ugtk2 back in drakxtools on gc idea
-
- * standalone/logdrake:
- - display "wait while searching" message also when embedded: we do not
- want it only when embedded for explanations
- - flush this wait dialog draw queue on each update so that it get
- displayed when embedded
-
- * harddrake/data.pm: move usb webcams which have mod_quickcam as a driver
- from unknown to
- webcam clategory since they do not have any valid usb class
-
- * scanner.pm: do not detect some usb webcams as scanners ...
-
- * standalone/drakedm: log system config changes
-
- * drakxtools.spec: more fixes
- more logdrake fixes
- move ugtk2 back in drakxtools on gc idea
- more fixes
- more fixes
- 9.1-15mdk
-
- * lang.pm:
- - cornish is a p-celtic language (aka a britonnic one), not a gaelic
- one
- - homogeinize q-celtic languages (aka gaelic ones)
-
- * standalone/draksec: let i fit in 800x600
-
-2003/03/05 Arkadiusz Lipiec <alipiec@elka.pw.edu.pl>
-
- * share/po/pl.po: two entries remained
-
-2003/03/05 fabman
-
- * share/po/es.po: updated Spanish translation
-
-2003/03/05 Frederic Lepied <flepied@mandrakesoft.com>
-
- * network/isdn.pm: read right config according to isdn-light or isdn4linux
-
- * network/adsl.pm: read login name from net_cnx_up in pptp mode.
-
- * network/ethernet.pm: fix to avoid creating an ifcfg-1 config file.
-
- * network/tools.pm: if the user don't want to start the internet
- connection, continue without
- error message.
-
- * network/netconnect.pm: use driver instead of descrition to validate an
- isdn autodetection
-
-2003/03/05 François Pons <fpons@mandrakesoft.com>
-
- * drakxtools.spec: add changelog for drakconnect modification.
-
- * standalone/drakconnect: fixed wizard modification not taken into account
- when using drakconf.
-
-2003/03/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix one translation
-
- * any.pm, drakxtools.spec, standalone/localedrake: fix behaviour when only
- one lang is available (clicking
- on "cancel" on the country selection didn't cancel it)
-
-2003/03/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po, share/po/vi.po, share/po/ar.po: updated Arabic, Romanian
- and Vietnamese files
-
- * share/po/tg.po, share/po/th.po, share/po/is.po, share/po/sl.po,
- share/po/az.po, share/po/be.po, share/po/uk.po, share/po/lt.po,
- share/po/eo.po, share/po/hu.po: updated Hungarian file
-
- * share/po/fr.po, share/po/it.po, share/po/es.po, share/po/de.po: merged
- with help strings from manuals
-
- * share/po/uz.po: updated Uzbek file
-
- * share/po/no.po: updated Norwegian file
-
-2003/03/05 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/various.pm (choose_xdm): allow to switch back from level 5 to
- level 3
-
- * network/network.pm, network/isdn.pm: this is perl, not python ;p
-
- * install_steps.pm: modifying keyboard in summary must modify XF86Config
-
- * interactive/gtk.pm: ensure buttons are visible when the widgets above
- are too big
-
-2003/03/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * mouse.pm, standalone/harddrake2, common.pm, harddrake/data.pm: prevent
- warning when using diagnostics pragma (easier debugging)
-
- * standalone/drakedm: handle low case config variables despite they should
- have been upcase
- (fix side effects of stupid rh code that manage $prefdm)
-
- * detect_devices.pm:
- - (getTVcards, isTVcard) : consolidate tv detection code
- - no need to keep capture buffer (not a big slow down but small rivers
- make big ones...)
- normalize
- prevent warning when using diagnostics pragma (easier debugging)
-
- * standalone/logdrake: restore old search behavior like we did before
- gtk+-2 port:
- - empty log buffer on search startup
- - freeze buffer while searching
- - do not realize ourselves the window, it's done by next statement
- - set initial text to '' so that editable property is disabled once
- the textview is realized
- no need to explicitely disable editable property, this is already
- handled by ugtk2::gtktext_insert() called from ugtk2::gtktext_append()
-
- * standalone/drakxtv, install_steps_interactive.pm:
- - (getTVcards, isTVcard) : consolidate tv detection code
- - no need to keep capture buffer (not a big slow down but small rivers
- make big ones...)
-
- * drakxtools.spec: more to come
-
- * share/po/fr.po: update french translation
-
- * share/po/br.po: minor update
-
-2003/03/04 Frederic Lepied <flepied@mandrakesoft.com>
-
- * network/isdn.pm: corrected isdn-light choice
-
- * network/modem.pm: install kdenetwork-kppp if kdebase is already
- installed
-
- * network/network.pm: allow to set hostname in DHCP mode
- install tmdns only when bind isn't installed
-
-2003/03/04 François Pons <fpons@mandrakesoft.com>
-
- * standalone/drakconnect: clean interface flags when dhcp mode is used.
-
- * network/ethernet.pm: avoid being pertubed by created virtual interface
- (no inet addre nor
- physicall card behing)
-
-2003/03/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add florin alafox alus
-
- * lang.pm: set better default XIMInputStyle value for CJK, thx to Narfi
- Stefansson <narfi at cs.wisc.edu> for the idea
-
- * mdk-stage1/stdio-frontend.c, mdk-stage1/newt-frontend.c: don't forget to
- probe USB for info and error messages as well
-
-2003/03/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
- updated pot files
-
- * share/po/ar.po: corrected encoding problems
- updated pot files
-
- * share/po/sk.po, share/po/ru.po, share/po/pt_BR.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/tr.po, share/po/mt.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/lt.po, share/po/sp.po,
- share/po/tg.po, share/po/uz.po, share/po/ro.po, share/po/wa.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/sq.po, share/po/nl.po, share/po/lv.po: updated
- pot file
-
- * share/po/th.po: corrected encoding problems
- updated pot file
-
- * share/po/et.po: updated Estonian file
- updated pot files
-
- * share/po/id.po, share/po/gl.po, share/po/br.po, share/po/hr.po,
- share/po/ga.po, share/po/be.po, share/po/fi.po, share/po/he.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/bs.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/fr.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/hu.po: updated
- pot files
-
-2003/03/04 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add "acpi" and "acpid" to INSTALL
- move imap to NETWORKING_MAIL_SERVER (bug #2622)
-
-2003/03/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakperm:
- - untabify
- - fix small memory leak (tree iterators)
- - restore edit dialog on doble click and
- - restore informations retrieving for edit dialog on doble click and
- get rid of %CURENT
-
- * standalone/logdrake: scroll back when logging
-
-2003/03/04 florin
-
- * standalone/drakgw: simplified form (pixel)
-
-2003/03/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
-2003/03/04 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/hd_gtk.pm:
- - in focus_in_event for partition buttons, grab_focus is needed
- because gtk2 is buggy. Forcing an expose event would be enough
- - in button_press_event for partition buttons, grab_focus is needed
- because gtk2 is buggy. The creation of widgets causes the lost of the
- focus
- (fixes part of #2621)
-
- * share/rpmsrate: move imap to NETWORKING_MAIL_SERVER (bug #2622)
-
- * rescue/tree/etc/profile:
- - unsetting LD_LIBRARY_PATH: setting LD_LIBRARY_PATH to libraries in
- /mnt is
- wrong since the ld loader used (/lib/ld-linux.so.2) won't use the one in
- /mnt,
- causing dependency problems.
- - removing /mnt dirs from PATH (which are not useful anymore since the
- corresponding libraries won't be found)
- (fixes bug #2554)
-
- * install_steps_interactive.pm: fix typo
-
- * network/nfs.pm (check): fix return value (bug introduced with checking
- portmap is running)
-
- * lang.pm: make perl_checker happy
-
- * services.pm: in drakxservices, don't stop services if one is using the
- gtk frontend (since it allows one to start/stop services)
- this allows to skip stopping service "dm" (bug #2664)
-
-2003/03/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakboot: remove debuging assertions (as spoted by gc)
-
- * standalone/drakperm:
- - remove last warning
- - remove unused variables
- - fix #1776 (part one): make up and down button be usefull instead of
- nop (this need an updated perl-GTK2 though)
- - let up, down, delete and edit buttons be insensitive when selection
- is destroyed or when there's no selection
- - fix #1776 part two (do not insert dummy lines)
- - restore special lines with current keyword
- - reuse already defined path
-
-2003/03/03 alafox
-
- * share/po/ru.po: updated and partially proofread. need more lproof
-
-2003/03/03 alus
-
- * share/po/pl.po: updated
-
-2003/03/03 florin
-
- * standalone/drakgw: add an extra first choose the net device step
-
-2003/03/03 François Pons <fpons@mandrakesoft.com>
-
- * network/tools.pm: simplified unquotify.
-
- * network/adsl.pm: simplified code of adsl_ask_info, password can be
- retrieved using
- passwd_by_login which was not used with computed login from
- /etc/ppp/peers/adsl
- or /etc/ppp/options or /etc/ppp/options.adsl.
-
-2003/03/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: thx po validato
-
- * any.pm, drakxtools.spec: any::selectLanguage: in standalone, don't
- categorize langs, for
- better looking (since most people will have very few of them)
-
- * share/po/validate.pl: make it useful
- - print problems with GREP_COLOR
- - have enough exceptions to get usable errors
-
- * interactive/gtk.pm: a few treeview/list fixes:
- - when selecting a value, scroll it like in treeview/tree
- - use saved_default_val dirty hackery to really honour default value
- - fix not calling $select again when trying to select an already
- selected value (happens when clicking or keyboard-selecting;
- broken, it ended up in always scrolling the selected value to
- the center)
-
-2003/03/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/sq.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/it.po: updated Italian file
- updated pot file
-
- * share/po/et.po, share/po/fi.po, share/po/nl.po: updated Estonian,
- Finnish and Dutch files
- updated pot file
-
-2003/03/03 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm (n_line_size): spacing for default font using XFT is 3
-
- * install_steps_interactive.pm: add some explaination for translators
- translate _bootloader_ on _device_
- translate mouse names
-
- * install_interactive.pm: use formatAlaTeX() for the warning "DrakX will
- now resize your Windows partition..."
-
- * share/po/help-fr.pot, share/po/help-de.pot, help.pm,
- share/po/help-es.pot: update from xml
-
- * share/rpmsrate: add ncurses-devel in DEVELOPMENT
-
- * Xconfig/various.pm (runlevel): fix typo
-
-2003/03/03 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/detect.pm: Fixed bug of USB printers which do not report back an
- IEEE-1284 ID string after
- three attempts being invisible instead of being listed as an "Unknown
- device".
-
- * printer/data.pm, printer/printerdrake.pm: Fixed bug of wrong function
- call to display the spooler name (Titi's untested changes).
-
-2003/03/03 tpittich
-
- * share/po/sk.po: updated slovak translation
- updated slovak translation
- change code page to utf-8
-
-2003/03/03 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 9.1-13mdk
- 9.1-12mdk
-
- * share/po/fr.po: unfuzzy()
- fix translation
-
- * standalone/harddrake2:
- - remove a warning
- - better scsi bus location
- reap zombie children (aka fix mem leak :-( )
-
- * standalone/drakboot:
- - fix #2091 and #2480 (settings restoration
- - make dialogs be modal
-
- * standalone/drakperm: remove unused $rows_cnt
- smoother gui: let main windows be unreachable until modal dialog is
- closed
- fix bug reported by Cédric Thévenet (impossible to save newly edited
- rules)
-
- * share/po/help-fr.pot, share/po/help-de.pot, share/po/help-es.pot,
- share/po/help-it.pot: revert to non broken version
-
-2003/03/02 alafox
-
- * share/po/ru.po: updated
-
-2003/03/02 alus
-
- * share/po/pl.po: Hard spell checking
-
-2003/03/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/translation_size.pl: add
-
-2003/03/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po, share/po/es.po, share/po/ro.po, share/po/hu.po,
- share/po/fi.po, share/po/ar.po: updated Arabic, Estonian, Finnish,
- Hungarian and Romanian files
-
-2003/03/02 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Avoid two overlayed wait messages when installing packages
- - Let applications (OpenOffice.org/GIMP) being once on startup of
- Printerdrake
- Call function for configuring applications only if really needed.
- Shortened the texts in some list dialogs to get a better layout.
- - When non-interactively creating print queues ask the user for the
- model
- name if the model is not in the database, don't do wild guesses then.
-
- * printer/data.pm: Make file checks for CUPS package installation
- independent of whether "curl"
- or "wget" is installed to fulfill the "webfetch" requirement.
-
- * printer/detect.pm: Read device ID string for a USB printer up to three
- times when it does not contain information.
-
- * printer/gimp.pm: Fixed auto-configuration for printers in the GIMP to
- work with Foomatic 3.0.
-
- * printer/main.pm: Correction on reading the Foomatic overview.
- Fixes on reading of Foomatic data overview ("foomatic-configure -O"):
- - Removed usage of on-disk cache
- - Made new "<general>" and "<ieee1284>" tags for auto-detection info
- being recognized.
-
-2003/03/01 fabman
-
- * share/po/es.po: updated Spanish translation
- updated Spanish translation
-
-2003/03/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/zh_CN.po, share/po/sv.po, share/po/sr.po,
- share/po/hu.po: updated Chinese, Swedish, Hungarian and Serbian files
-
-2003/03/01 Till Kamppeter <till@mandrakesoft.com>
-
- * install_steps_interactive.pm: The generation of the "Summary" button for
- printer configuration created a blank entry in the
- $o->{printer}{configures} hash which lead to a blank menu entry in the
- main menu of printerdrake. This is fixed now.
-
-2003/02/28 alus
-
- * share/po/pl.po: updated
-
-2003/02/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/ja.po: reduce a translation size so that groups choice still
- has the "ok" button shown
-
- * detect_devices.pm: let hasSMP don't exit DrakX in testing mode because
- /dev/mem is not accessible
-
-2003/02/28 alus
-
- * share/po/pl.po: updated
-
-2003/02/28 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakhelp:
- - fix the check of mandrake_doc installed package (gc)
-
-2003/02/28 fabman
-
- * share/po/es.po: updated Spanish translations. Some fuzzy left
-
-2003/02/28 François Pons <fpons@mandrakesoft.com>
-
- * network/modem.pm: add LT WinModem support by searching ltmodem package.
-
- * drakxtools.spec: ltmodem support reminder.
- fixes for drakconnect.
-
- * any.pm: install acpi and acpid if "Enable ACPI" is ok.
-
- * standalone/drakconnect: removed profile management entry point.
-
-2003/02/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_gtk.pm: fix theming in --doc mode
-
- * mdk-stage1/init.c: moltes powered (for deush)
-
- * lang.pm: remove temporiraly lo because utf_lo is not in the charsets
- hash
- put new pablo's images (less large, add missing ones)
- sort langs in lang.pm
-
- * mdk-stage1/modules.c, mdk-stage1/.cvsignore: hd_usb.img ->
- hdcdrom_usb.img
-
- * standalone/draksplash, standalone/drakfirewall, standalone/logdrake,
- standalone/drakpxe, standalone/keyboarddrake, standalone/drakboot,
- standalone/mousedrake, standalone/drakbackup, standalone/drakconnect,
- standalone/drakxtv, standalone/adduserdrake, standalone/drakxservices,
- standalone/drakproxy, standalone/livedrake, standalone/harddrake2,
- standalone/drakfont, standalone/drakgw, standalone/drakperm,
- standalone/scannerdrake: reflect in standalone drakxtools the removal of
- DrakX icons
-
- * pixmaps/langs/lang-zh_CN.png, pixmaps/langs/lang-sl.png,
- pixmaps/langs/lang-hy.png, pixmaps/langs/lang-de.png,
- pixmaps/langs/lang-cy.png, pixmaps/langs/lang-it.png,
- pixmaps/langs/lang-eu.png, pixmaps/langs/lang-ca.png,
- pixmaps/langs/lang-sp.png, pixmaps/langs/lang-mr.png,
- pixmaps/langs/lang-am.png, pixmaps/langs/lang-nb.png,
- pixmaps/langs/lang-kn.png, pixmaps/langs/lang-gd.png,
- pixmaps/langs/lang-bn.png, pixmaps/langs/lang-lo.png,
- pixmaps/langs/lang-el.png, pixmaps/langs/lang-ia.png,
- pixmaps/langs/lang-pt_BR.png, pixmaps/langs/lang-sv.png,
- pixmaps/langs/lang-mi.png, pixmaps/langs/lang-bg.png,
- pixmaps/langs/lang-fo.png, pixmaps/langs/lang-kw.png,
- pixmaps/langs/lang-hu.png, pixmaps/langs/lang-ur.png,
- pixmaps/langs/lang-iu.png, pixmaps/langs/lang-az.png,
- pixmaps/langs/lang-mt.png, pixmaps/langs/lang-et.png,
- pixmaps/langs/lang-wa.png, pixmaps/langs/lang-sq.png,
- pixmaps/langs/lang-he.png, pixmaps/langs/lang-eo.png,
- pixmaps/langs/lang-ta.png, pixmaps/langs/lang-ga.png,
- pixmaps/langs/lang-sr.png, pixmaps/langs/lang-lt.png,
- pixmaps/langs/lang-oc.png, pixmaps/langs/lang-ms.png,
- pixmaps/langs/lang-mk.png, pixmaps/langs/lang-lv.png,
- pixmaps/langs/lang-zh_TW.png, pixmaps/langs/lang-is.png,
- pixmaps/langs/lang-ro.png, pixmaps/langs/lang-be.png,
- pixmaps/langs/lang-fr.png, pixmaps/langs/lang-te.png,
- pixmaps/langs/lang-hr.png, pixmaps/langs/lang-no.png,
- pixmaps/langs/lang-en_GB.png, pixmaps/langs/lang-sk.png,
- pixmaps/langs/lang-uk.png, pixmaps/langs/lang-br.png,
- pixmaps/langs/lang-en_US.png, pixmaps/langs/lang-bs.png,
- pixmaps/langs/lang-nl.png, pixmaps/langs/lang-af.png,
- pixmaps/langs/lang-tr.png, pixmaps/langs/lang-pt.png,
- pixmaps/langs/lang-gl.png, pixmaps/langs/lang-uz.png,
- pixmaps/langs/lang-pl.png, pixmaps/langs/lang-hi.png,
- pixmaps/langs/lang-id.png, pixmaps/langs/lang-mn.png,
- pixmaps/langs/lang-yi.png, pixmaps/langs/lang-fi.png,
- pixmaps/langs/lang-ka.png, pixmaps/langs/lang-ru.png,
- pixmaps/langs/lang-nn.png, pixmaps/langs/lang-gv.png,
- pixmaps/langs/lang-th.png, pixmaps/langs/lang-cs.png,
- pixmaps/langs/lang-ko.png, pixmaps/langs/lang-tg.png,
- pixmaps/langs/lang-tt.png, pixmaps/langs/lang-da.png,
- pixmaps/langs/lang-ja.png, pixmaps/langs/lang-vi.png,
- pixmaps/langs/lang-es.png: put new pablo's images (less large, add
- missing ones)
- sort langs in lang.pm
-
- * detect_devices.pm: let hasSMP don't exit DrakX in testing mode because
- /dev/mem is not accessible
-
- * mdk-stage1/Makefile: fix deps problem when re-running make
- hd_usb.img -> hdcdrom_usb.img
-
- * share/po/ja.po: reduce a translation size so that groups choice still
- has the "ok" button shown
- reduce some translations sizes to make diskdrake at least usable ("ok"
- button was hidden!)
-
- * share/po/fr.po: update
-
- * ugtk2.pm: perl checko says we need to use parentheses with ref
- hugly hack because GtkLabel doesn't wrap when using languages that don't
- contain spaces
-
- * drakxtools.spec: cøws gó mòõh
-
-2003/02/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/help-de.pot, share/po/help-it.pot, share/po/help-fr.pot,
- share/po/help-es.pot: updated pot file
-
- * standalone/harddrake2: i18n fixes
-
- * standalone/drakpxe: fixed bad English string
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated pot file
- updated pot file
-
- * share/po/et.po, share/po/ja.po: updated pot file
- Updated Estonian file
- updated pot file
-
-2003/02/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: ensure the $::expert flag in netconnect
- doesn't propagate to the rest of the
- install
-
-2003/02/28 Frederic Lepied <flepied@mandrakesoft.com>
-
- * network/netconnect.pm: allow to switch in expert mode during install.
-
- * network/ethernet.pm: Configure hostname only in expert mode.
-
- * network/network.pm: corrected HOSTNAME/DHCP_HOSTNAME management.
-
-2003/02/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: ensure the $::expert flag in netconnect
- doesn't propagate to the rest of the
- install
-
-2003/02/28 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm, share/rpmsrate:
- - Fixed confScanner() deleting the config file in some cases.
- - Removed PDQ from share/rpmsrate
-
-2003/02/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * lang.pm, Makefile: error out when a listed lang doesn't have a png lang
- file
- when doing the check of lang.pm, first show the warnings,
- then the errors
- at make-install time, remove pang lang files corresponding
- to disabled langs
-
-2003/02/27 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 9.1-10mdk
-
-2003/02/27 alafox
-
- * share/po/ru.po: spellchecked and updated some translations
-
-2003/02/27 Frederic Lepied <flepied@mandrakesoft.com>
-
- * network/network.pm: corrected HOSTNAME management
-
-2003/02/27 florin
-
- * standalone/drakgw: read more carefully the existing network
- configuration
-
-2003/02/27 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: added mirror url not given.
- fixed small typo.
- added cancel button.
- fixed message displayed.
- added dialog more precisely.
- added message box in case of error.
-
- * share/rpmsrate: moved galaxy-gnome to X from GNOME (lmontel and dadou
- request)
-
- * network/adsl.pm: add sagem connection and disconnection script using
- /etc/ppp/peers/adsl file.
- probe user and password in /etc/ppp/options.adsl too (as produced by
- original eagle installation),
- sagem adsl type connection does not need to configure an ethernet
- connection.
-
-2003/02/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: don't forget gigabit network
- adapters
-
-2003/02/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
-2003/02/27 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: /root on a separate partition gives a warning, not an error
-
- * network/nfs.pm (check): start portmap if needed
-
- * install_any.pm:
- - add get_info_from_fstab()
- - use it when reading existing fstab (to get for example devfs mount)
- have locales-xx first in default_packages so that default choosing based
- on
- locales works for packages in default_packages
-
- * pkgs.pm: perl_checker fix
- enhance packageCallbackChoices and %preferred
- (uses new URPM::Resolve feature allowing multiple choices)
-
- * fs.pm, standalone/diskdrake:
- - add get_info_from_fstab()
- - use it when reading existing fstab (to get for example devfs mount)
-
- * interactive/gtk.pm: workaround gtk suckiness (set_text in a combo
- generates two 'change' signals, one when removing the whole, one for
- inserting the replacement..)
-
- * install2.pm: no mouse probe when brltty
-
- * standalone/drakupdate_fstab: allow removing device "non kudzu flagged"
- (for harddrake)
-
- * bootloader.pm: use lilo-like code for selecting mapdrive or not
- (it was buggy, always generating "map (0x81) (0x80)", even for hd2)
-
- * share/rpmsrate:
- - don't need to list packages providing a required virtual language
- (eg: aspell-dictionnary)
- - replace ispell with aspell (otherwise people using evolution get
- both aspell and ispell)
-
-2003/02/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/data.pm, printer/office.pm: Make OpenOffice.org opening a GUI
- printing tool when printing with the "Generic Printer".
-
- * standalone/scannerdrake: Do not ask for the port when the user has
- chosen an HP MF device as scanner model.
-
-2003/02/27 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: translate missing translations
- fix sorting in keybordrake that was broken by bad translator
-
- * standalone/drakconnect: fix too big internet configuration window
-
- * standalone/service_harddrake: add ieee1394-controller alias and load
- ohci1394 when a firewire controller appeared
- handle configurators with options (eg: "diskdrake --removable=scd0")
-
- * drakxtools.spec: 9.1-10mdk
- 9.1-10mdk
- 9.1-9mdk
-
- * standalone/drakperm: make it fit in embedded mode, large enough else
-
- * harddrake/data.pm: add ieee1394-controller alias and load ohci1394 when
- a firewire controller appeared
-
- * standalone/drakgw: fix embedding
-
-2003/02/27 florin
-
- * standalone/drakgw: read more carefully the existing network
- configuration
- the function is called read_dhcpd_conf not read_dhcpd_conf_raw
- read the dhcpd conf file before hand
-
- * network/network.pm: add the read_dhcpd_conf function for drakgw
-
-2003/02/27 François Pons <fpons@mandrakesoft.com>
-
- * crypto.pm: change default version to 9.1
-
- * standalone/drakconnect: fixed cancel on configure_net, fixed bad fields
- setted up in configure_lan,
- fixed Data::Dumper->Dump on stdout on startup.
-
-2003/02/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/mousedrake: fix mousedrake in embedded mode
-
-2003/02/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/da.po, share/po/hu.po: updated Dutch, Hungarian
- and Danish files
-
-2003/02/27 Pixel <pixel@mandrakesoft.com>
-
- * interactive/newt.pm: perl_checker fix
-
- * pkgs.pm: enhance packageCallbackChoices and %preferred
- (uses new URPM::Resolve feature allowing multiple choices)
-
- * install_any.pm: have locales-xx first in default_packages so that
- default choosing based on
- locales works for packages in default_packages
-
- * share/rpmsrate:
- - don't need to list packages providing a required virtual language
- (eg: aspell-dictionnary)
- - replace ispell with aspell (otherwise people using evolution get
- both aspell and ispell)
-
-2003/02/27 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: More gtk2 updates. May have finally suppressed
- the hanging.
-
-2003/02/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm: Fixed bug #2171.
-
-2003/02/27 tpittich
-
- * share/po/sk.po: updated slovak translation
-
-2003/02/27 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: detect firewire controllers
-
- * services.pm: perl_checker fix
-
- * standalone/logdrake: fix scrolling when embedded
-
- * standalone/drakboot:
- - disable autologin settings when autologin is disabled
- - make embedded app look better
- - add vertical separators
-
- * drakxtools.spec: 9.1-8mdk
-
- * standalone/harddrake2: remove debugging print
- small perl_checker fix
- - consolidate menu titles translations
- - add two pull down menu that enable one to access options and help
- when
- embedded
- - (popup_menu) provide this callback for embedded pull down menus
- - cleanup various other embedding stuff
- - convert all object creations to gc blessed style
-
- * standalone/drakfloppy:
- - gtk+2 port
- - clean the code through ugtk2
- - too many fixes to count
- - clean, clean it, ... (thus shrinking the code by 20%)
- - ...
-
- * standalone/drakconnect:
- - better check /sbin/ifconfig is executable rather than simply exists
- - fix lan configuration window filling ...
-
- * ugtk2.pm:
- - (create_factory_popup_menu): introduce it for embedded harddrake2
- - embedding cleanups:
- o give access to top-level gtk2::plug widget
- o reuse gtkshow
-
- * standalone/drakperm: make it fit in embedded mode, large enough else
-
-2003/02/26 alus
-
- * share/po/pl.po: uipdated
- updated
-
-2003/02/26 erwan
-
- * rescue/list.ia64: merg ia64
-
- * share/list.ia64, bootloader.pm, install_any.pm, Makefile: merge ia64
-
- * install_steps.pm: Merging ia64
-
- * any.pm: Merging any.pm with ia64
-
- * fs.pm: merging fs.pm with ia64
-
- * fsedit.pm, steps.pm, partition_table.pm: merging ia64
-
-2003/02/26 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: moved type detection code to network.
-
- * install2.pm: added corporate global flag.
-
- * standalone/drakpxe: added code to handle more smootly if apache or
- apache-mod_perl is installed, or
- try using apache2.
- switched to apache2 instead of apache (avoid problem with
- apache-mod_perl).
-
- * network/network.pm: small fixes.
- added probe separately to handle drakconnect horror.
- add probe of internet connection (this could avoid strange behaviour).
- fixed back as titi sucks about message.
- try to get back DOMAINNAME if needed.
-
- * standalone/drakconnect: fixed unablities to launch Internet
- configuration dialog.
- add explicit probe for netcnx type.
-
-2003/02/26 nplanel
-
- * c/smp-dmi.c, c/smp.c: Two smp detection for intel arch
-
-2003/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/gen_locales.sh: removed exception for Tamil
-
- * share/po/pl.po: Fixed syntax error
-
- * share/po/nl.po, share/po/fi.po: updated Finnish and Dutch files
-
- * keyboard.pm: There is no arabic keyboard available for the console
-
-2003/02/26 Pixel <pixel@mandrakesoft.com>
-
- * interactive/newt.pm: handle multi-line labels for Checkbox'es (eg:
- Options in diskdrake)
- handle the "Advanced" button in newt
-
- * network/isdn.pm: replace the last @isdndata with @isdn::isdndata (beurk)
-
-2003/02/26 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm: Skip Alcatel Speed Touch ADSL Modem when it is detected by
- "sane-find-scanner"
-
-2003/02/26 tpittich
-
- * share/po/sk.po: updated slovak translation (this is my first cvs commit
- ;) ).
-
-2003/02/26 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * c/smp-dmi.c: fix planel sucks that broke the installation (hint look at
- nm output
- on old stuff.so ... )
-
- * standalone/drakedm: untabify
- on laurent request, strip the empty lines and add a end-of-line
- character on
- last line
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, harddrake/sound.pm, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: typo fix
- (s/snd-slot/sound-slot/)
-
- * bootlook.pm, standalone/drakboot:
- - kill used once only bootlook module
- - inline oneliners use only once
- - kill unused variables
- - strict pragma fixes
- - ...
-
- * harddrake/data.pm: detect usb adsl speed touch modem as modem and not as
- unknown device
- what's remain: why sane-find-scanner keep detect it a scanner ??
-
- * standalone/harddrake2:
- - remove unused variable (hey perl_checker, why didn't you see it ?)
- - (rename_field) better use the parameter we passed than relying on $_
- be set to the right value in that context even if it was correct
-
-2003/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- Finnish, Hungarian and Slovak files
-
-2003/02/26 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm, install_interactive.pm: after ntfs resize,
- warn user that on Windows next boot fsck will be done
-
-2003/02/26 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Gtk2 port. Bugzilla reports. Some perl_checker
- errors still, but cleaner.
- (some are generated by calls from other modules used)
-
-2003/02/26 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * c/smp-dmi.c: fix planel sucks that broke the installation (hint look at
- nm output
- on old stuff.so ... )
-
-2003/02/25 fabman
-
- * share/po/es.po: updated spanish translation
-
-2003/02/25 Pixel <pixel@mandrakesoft.com>
-
- * network/network.pm (read_resolv_conf_raw): fix "search ..." handling
-
-2003/02/25 fabman
-
- * share/po/es.po: Updated Spanish translations (some left)
-
-2003/02/25 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: removed gnome-tiles
-
- * share/po/fr.po: mise-à-jour => mise à jour
-
-2003/02/25 François Pons <fpons@mandrakesoft.com>
-
- * share/list: added dmidecode in install.
-
- * pkgs.pm: improved code for populating group with pixel.
-
- * network/adsl.pm: cleaned a bit the code.
- added login and passwd remember from /etc/ppp/peers/adsl
- /etc/ppp/options
- /etc/ppp/pap-secrets /etc/ppp/chap-secrets file
- modified string as sagem driver now use pppoa
-
- * any.pm: added dmidecode in bug report.
-
- * tools/Makefile, Makefile: removed dmidecode.
- added dmidecode
-
- * tools/dmidecode/dmidecode.c, tools/dmidecode/Makefile: added dmidecode
-
- * rescue/list: removed dmidecode.
- added dmidecode for rescue (from lm_sensors)
-
-2003/02/25 gbeauchesne
-
- * share/list.x86_64: More xf86 modules for x86-64
-
-2003/02/25 nplanel
-
- * c/smp-dmi.c, c/smp.c, c/Makefile.PL: Add dmidetection for smp
-
-2003/02/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ga.po, share/po/uk.po, share/po/lt.po, share/po/af.po,
- share/po/lv.po: Fixed the wrong Finish/Finnish of some translations
- updated Finnish and French files
-
- * share/po/et.po: updated Estonian file
- updated Finnish and French files
-
- * share/po/th.po: Fixed Thai button for "Finish" (it means "end" and not
- "from Finland")
- updated Finnish and French files
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/sl.po, share/po/no.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/be.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/hu.po: updated Finnish and French files
-
-2003/02/25 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm, install_gtk.pm: cleanup handling of XF4 server
- choice during install
-
- * network/network.pm (read_resolv_conf_raw): fix "search ..." handling
-
- * share/rpmsrate: s/apache/apache2/
-
- * mdk-stage1/mount.c: handle device hdi, hdj... hdt creation
-
- * modules/interactive.pm: join detect_devices::stringlist() to have it in
- a text box (eurk!)
- (for bug #1802), the result is quite ugly, but at least the full line
- can be read
-
- * any.pm (fileshare_config): create group "fileshare" in "Custom" mode
-
-2003/02/25 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm: Prepared for LPRng and PDQ
- goint to Contribs or leaving the distro, "Change
- Printing System" button only appears if at least one of them is manually
- installed.
-
-2003/02/25 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: handle floppes, zip drives, dvd-rom, cdrom and
- burners at startup time
- - factorize code into harddrake::data::set_removable_configurator()
- - really do not offer to configure module for removable devices
- - do not put zip drives in unknown devices class
- - reuse Yes|No translations in harddrake::ui
-
- * standalone/drakfloppy: we already use diagnostics pragma, so -w will
- just slow down normal execution
- only list physically present floppies
- reuse MDK::Common
- - fix stupid copy 'n past of copyright header
- - update copyright years
- fix #???? : switch the "expert mode" toggle button label regarding the
- current
- mode (beginner or expert)
-
- * bootlook.pm:
- - remove deprecated, half-commented aurora related code
- - fix display of autologin radio buttons
-
- * standalone/harddrake2: do not display alternatives oss/alsa drivers if
- there's none
- - factorize code into harddrake::data::set_removable_configurator()
- - really do not offer to configure module for removable devices
- - do not put zip drives in unknown devices class
- - reuse Yes|No translations in harddrake::ui
- - don't offer to configure module for removable media
- - usb devices (such as zip): display vendor, description and a more
- detailled media type
- display media capacity too (DVD and/or burning ability)
-
- * standalone/service_harddrake: handle floppes, zip drives, dvd-rom, cdrom
- and burners at startup time
- don't black out the screen if not needed
-
- * drakxtools.spec: 9.1-7mdk
-
- * share/po/fr.po: update french translation
-
-2003/02/25 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: readd harddrake in SYSTEM 5
-
- * share/compssUsers: add ARCHIVING in OFFICE
-
-2003/02/24 alus
-
- * share/po/pl.po: one entry
-
-2003/02/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/br.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/ko.po,
- share/po/sv.po, share/po/sr.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sq.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated Welsh, Greek,
- Swedish and Chinese files
-
- * lang.pm: improved default fonts for KDE, completed the geographic
- location
- by continent for a few remaining country codes
-
- * share/po/et.po: updated Estonian file
- updated Welsh, Greek, Swedish and Chinese files
-
- * share/po/pt_BR.po, share/po/DrakX.pot, share/po/pl.po, share/po/pt.po:
- updated Portuguese file
- updated Welsh, Greek, Swedish and Chinese files
-
-2003/02/24 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm: use Sans & Monospace for kde (as requested by lmontel)
-
- * mdk-stage1/probing.c: replace checking hd[a-h] with hd[a-t] (cf bug
- #1801)
-
- * install_steps_interactive.pm: allow neuneus to quit install at license
- step (esp. for Ann & Warly's father)
-
-2003/02/24 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * modules.pm: dmasound_awacs -> dmasound_pmac
-
-2003/02/24 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: final embedding cleanups
- - clean up embedding; since socket automatically emit plug-added gtk+
- signal
- when plug is realize, it's just cleaner to centralize/consolidate the
- child
- embedding in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR2', $::CCPID;"
- - keyboarddrake, xfdrake, drakautoinst: goto cleaning btw
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * standalone.pm: final embedding cleanups
-
- * standalone/harddrake2: fix size when embedded
- first attempt at making printerdrake to behave smoother when embedded in
- the
- mcc
- - untabify
- - hide devices which has no driver or whose driver is an url,
- a graphic server and consolidate the test by the way
- prefix devfs device name with "/dev/" too
-
- * standalone/drakfloppy:
- - fix packing (#1760)
- - --expert command line option switch to expert mode by default
- - only hide expert stuff if not in expert mode at startup
-
- * standalone/logdrake:
- - remove debug statements
- - print an error message if we die on something other than wizcancel
- fix mail alert generation
- - do not crash without any message in strict mode (wizcancel die
- miscatched)
- - make the generated script be 'use strict' and perl_checker compliant
- simplify
- - clean up embedding; since socket automatically emit plug-added gtk+
- signal
- when plug is realize, it's just cleaner to centralize/consolidate the
- child
- embedding in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR2', $::CCPID;"
- - keyboarddrake, xfdrake, drakautoinst: goto cleaning btw
-
- * standalone/printerdrake, standalone/drakconnect,
- standalone/scannerdrake:
- - clean up embedding; since socket automatically emit plug-added gtk+
- signal
- when plug is realize, it's just cleaner to centralize/consolidate the
- child
- embedding in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR2', $::CCPID;"
- - keyboarddrake, xfdrake, drakautoinst: goto cleaning btw
-
- * standalone/drakfont: looks better like this
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * interactive/gtk.pm, printer/printerdrake.pm: first attempt at making
- printerdrake to behave smoother when embedded in the
- mcc
-
- * standalone/drakautoinst, my_gtk.pm, standalone/XFdrake,
- standalone/keyboarddrake:
- - clean up embedding; since socket automatically emit plug-added gtk+
- signal
- when plug is realize, it's just cleaner to centralize/consolidate the
- child
- embedding in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR2', $::CCPID;"
- - keyboarddrake, xfdrake, drakautoinst: goto cleaning btw
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * drakxtools.spec: 9.1-6mdk
- more fixes
- 9.1-5mdk
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * standalone/net_monitor: fix embedding (even if we don't embbed it, it's
- better)
-
- * bootlook.pm: perl_checker fix
- clean up:
- - no more directly handle embeddign
- - use ugtk2
- - clean up embedding; since socket automatically emit plug-added gtk+
- signal
- when plug is realize, it's just cleaner to centralize/consolidate the
- child
- embedding in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR2', $::CCPID;"
- - keyboarddrake, xfdrake, drakautoinst: goto cleaning btw
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * standalone/drakxservices, diskdrake/hd_gtk.pm, standalone/drakboot,
- standalone/drakTermServ:
- - clean up embedding; since socket get automatically destroyed on
- child exit
- and since they emit plug-removed at that moment, it's just cleaner to
- centralize/consolidate the child exit in mcc
- this of course, need a newer up-to-date mcc
- what's more, it allows to remove the somewhat mythical
- "$::isEmbedded and kill 'USR1', $::CCPID;"
- - drakautoinst, drakxservices, keyboardrake: fix fscking embedding
- managment
-
- * standalone/drakperm: fix #1771
- level should not be editable
-
- * services.pm: in standalone mode, only display a service as enabled at
- boot time
- only if it's really enabled in current runlevel.
- what's more it's more coherent with other "only show current runlevel
- status" tools like ntsysv.
-
-2003/02/24 Warly <warly@mandrakesoft.com>
-
- * share/compssUsers: "Mail/Groupware/News" is now just "Mail"
-
-2003/02/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: fixed several fuzzy lines
-
-2003/02/23 Pixel <pixel@mandrakesoft.com>
-
- * timezone.pm: use output_p() instead of output() for
- /etc/ntp/step-tickers
-
-2003/02/23 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/scannerdrake: Fixed wait message not embedded in drakconf.
-
- * printer/main.pm, printer/printerdrake.pm: Several bug fixes on
- printerdrake
- - "BrowsePoll <IP>:<Port>" needs "Browsing On" in
- /etc/cups/cupsd.conf.
- - If the same printer model is once on the parallel port and second on
- USB,
- there was a new USB queue created on every start of Printerdrake.
- - Now CUPS is restarted whenever a new USB print queue is set up so
- that
- CUPS can provide the model-related USB URI.
- - Made sure that the default printer is defined and that it is an
- existing
- queue so that during installation printerdrake does not show a line
- only
- containing " (Default)" in the list of installed printers.
- - Cleaned up data structure after automatic queue generation.
-
-2003/02/23 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm (migrate_files): check return values (fixes bug
- #2170)
-
-2003/02/23 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/printerdrake.pm, install_steps_interactive.pm: Fixed bug of
- printerdrake loosing the printer queue info during the
- preparation of the "Summary" window (only if there are local
- printers). No the printer queue entries should not be empty when
- clicking on "Configure" in the "Printer" part of the "Summary" window.
-
-2003/02/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po, share/po/wa.po: updated pot file
- updated Estonian file
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated pot file
-
- * standalone/harddrake2: changed an English string
-
-2003/02/22 Pixel <pixel@mandrakesoft.com>
-
- * interactive/gtk.pm: in $::expert, use a SpinButton instead of HScale for
- type "range"
- (useful in diskdrake to enter the partition size directly)
-
- * share/rpmsrate: ensure galaxy-kde is installed together with kdebase
-
- * partition_table/raw.pm (test_for_bad_drives): don't open in write mode
- when testing
-
-2003/02/22 siegel
-
- * share/po/de.po: updates
-
-2003/02/21 alus
-
- * share/po/pl.po: updated
-
-2003/02/21 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: no need to use regexp
-
- * drakxtools.spec: 4mdk
-
- * network/isdn.pm: $isdn->{is_light} wasn't set while using autodetection,
- rpm wasn't installed
-
- * network/tools.pm: oups... hu... nothing
-
- * network/netconnect.pm: oups... hu... nothing
- get back password input for adsl
-
-2003/02/21 florin
-
- * network/netconnect.pm: add isdn check in get_net_device
-
-2003/02/21 gbeauchesne
-
- * mdk-stage1/dietlibc/libcruft/dnscruft2.c: Better fix for DNS resolver
- bug
-
-2003/02/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: embedded should segfault a bit less if I don't let the
- embedded
- window creation destroy the destroy handler
- workaround what seems to be a gtk bug (#1445)
- gtk seems to loop (and take 100% user cpu) when
- I change the pixbuf of a gtkcellrendererpixbuf
- in a treeview that is not currently displayed
-
-2003/02/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- Estonian and Dutch files
- updated Danish file
-
- * help.pm: fixed a typo
-
-2003/02/21 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm: when isEmbedded, use $::WizardTable to allow non pop_it when
- not visible
-
- * pixmaps/colors16.png:
- - make it the same range as colors.png and colors8.png
- - it is a 64 colors image (note that colors8 is 16 colors)
-
- * services.pm (ask_standalone_gtk): ensure popup is not destroyed more
- than once
-
- * fsedit.pm: use test_for_bad_drives even after install (esp. to detect
- removed usb-storage
- devices still visible in /proc/scsi/scsi)
-
- * install_steps_interactive.pm: "Generate auto install floppy" and "Save
- packages selection" are now available in advanced
-
- * Xconfig/resolution_and_depth.pm: fix setting the image & colors in
- resolution chooser
-
-2003/02/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/printerdrake.pm:
- - Fixed text of "Refresh printer list" button when list is empty.
- - Let printerdrake clean up its datastructure after auto-installing
- printers in the beginning of the "Summary" installation step.
-
-2003/02/20 florin
-
- * network/shorewall.pm: update 2 rules for the pptp dsl internet
- connection
-
-2003/02/20 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: added wait message when building groups.
-
-2003/02/20 gbeauchesne
-
- * mdk-stage1/dns.c: Fix mygethostbyaddr(), struct in is not a NULL
- terminated string.
- i.e. len has to be either sizeof(in.s_addr) or INADDRSZ.
-
- * mdk-stage1/dietlibc/libcruft/dnscruft2.c: Workaround DNS resolver bug on
- 64-bit platforms.
-
- * mdk-stage1/dietlibc/syscalls.s/lstat64.S,
- mdk-stage1/dietlibc/libregex/rx.c, mdk-stage1/dietlibc/include/string.h,
- mdk-stage1/dietlibc/libugly/strftime.c,
- mdk-stage1/dietlibc/i386/ldexp.S, mdk-stage1/dietlibc/i386/sin.S,
- mdk-stage1/dietlibc/lib/strerror.c, mdk-stage1/dietlibc/dietstdio.h,
- mdk-stage1/dietlibc/include/sys/vfs.h,
- mdk-stage1/dietlibc/include/unistd.h, mdk-stage1/dietlibc/i386/mmap64.S,
- mdk-stage1/dietlibc/i386/vfork.S,
- mdk-stage1/dietlibc/libstdio/fdglue2.c,
- mdk-stage1/dietlibc/alpha/errlist.S,
- mdk-stage1/dietlibc/include/dirent.h, mdk-stage1/dietlibc/sparc/urem.S,
- mdk-stage1/dietlibc/libcruft/scandir64.c,
- mdk-stage1/dietlibc/include/assert.h, mdk-stage1/dietlibc/lib/__isnan.c,
- mdk-stage1/dietlibc/sparc/umul.S,
- mdk-stage1/dietlibc/i386/dyn_syscalls.S, mdk-stage1/dietlibc/CHANGES,
- mdk-stage1/dietlibc/libstdio/fflush.c,
- mdk-stage1/dietlibc/libcruft/sysconf.c,
- mdk-stage1/dietlibc/syscalls.s/pause.S,
- mdk-stage1/dietlibc/include/termios.h,
- mdk-stage1/dietlibc/syscalls.s/n_sigprocmask.S,
- mdk-stage1/dietlibc/diet.c, mdk-stage1/dietlibc/FAQ,
- mdk-stage1/dietlibc/syscalls.s/socketcall.S,
- mdk-stage1/dietlibc/include/sys/poll.h,
- mdk-stage1/dietlibc/sparc/Makefile.add,
- mdk-stage1/dietlibc/syscalls.s/n_sigsuspend.S,
- mdk-stage1/dietlibc/include/dlfcn.h,
- mdk-stage1/dietlibc/syscalls.s/umount2.S,
- mdk-stage1/dietlibc/include/sys/time.h,
- mdk-stage1/dietlibc/include/signal.h,
- mdk-stage1/dietlibc/libcruft/alphasort64.c,
- mdk-stage1/dietlibc/libshell/glob.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigpending.S,
- mdk-stage1/dietlibc/include/stdarg-cruft.h,
- mdk-stage1/dietlibc/lib/signal.c, mdk-stage1/dietlibc/lib/__dtostr.c,
- mdk-stage1/dietlibc/lib/__isinf.c, mdk-stage1/dietlibc/syscalls.s/ipc.S,
- mdk-stage1/dietlibc/include/sys/types.h, mdk-stage1/dietlibc/Makefile,
- mdk-stage1/dietlibc/libstdio/fread.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigaction.S,
- mdk-stage1/dietlibc/syscalls.s/fstat64.S,
- mdk-stage1/dietlibc/libugly/tzfile.c,
- mdk-stage1/dietlibc/lib/__v_printf.c,
- mdk-stage1/dietlibc/sparc/errlist.S, mdk-stage1/dietlibc/i386/memchr.S,
- mdk-stage1/dietlibc/syscalls.s/msync.S,
- mdk-stage1/dietlibc/i386/libm2.S, mdk-stage1/dietlibc/sparc/udiv.S,
- mdk-stage1/dietlibc/i386/cos.S, mdk-stage1/dietlibc/include/sys/ioctl.h,
- mdk-stage1/dietlibc/syscalls.s/errlist.S,
- mdk-stage1/dietlibc/syscalls.s/stat64.S,
- mdk-stage1/dietlibc/libugly/strndup.c: Merge with dietlibc 0.22-1mdk
-
-2003/02/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dns.c: fix potential segfault thx to gwenole
-
- * install_steps_interactive.pm: oops i didn't understand the internals of
- wait_message hence breaking it. hopes that will fix.
- install the potentially needed locales country when user selected
- another country
- Gtk2::Label::set is deprecated
-
- * install_steps_gtk.pm, services.pm: Gtk2::Label::set is deprecated
-
- * share/logo-mandrake.png: update shadow
- Gtk2::Label::set is deprecated
-
- * interactive.pm: oops i didn't understand the internals of wait_message
- hence breaking it. hopes that will fix.
- Gtk2::Label::set is deprecated
-
- * install_gtk.pm, ugtk2.pm: change a bit position of main window and steps
- window
- in steps window, have titles in grey
-
- * fs.pm: thx rekcehc_lrep
-
- * any.pm: cows go møøh
-
-2003/02/20 Pixel <pixel@mandrakesoft.com>
-
- * network/shorewall.pm: fix florin: replace $prefix with $::prefix
-
- * help.pm: fix typos
-
- * any.pm: allow Cancel in setupBootloader__entries
- - add "Force No APIC"
- - rename add_append() to set_append()
- (since it can be used to remove a key)
- - add remove_append_simple()
-
- * install_steps.pm, bootloader.pm:
- - add "Force No APIC"
- - rename add_append() to set_append()
- (since it can be used to remove a key)
- - add remove_append_simple()
-
- * network/network.pm: use detect_devices::pcmcia_probe() instead of
- detect_devices::probeall()
- - read_resolv_conf() reads DOMAINNAME & DOMAINNAME2
- - read_resolv_conf() reads /etc/resolv.conf by default
- - read_resolv_conf_raw() created
-
- * install_steps_interactive.pm: help perl_checker find the N("...") the
- #-PO corresponds to
-
- * diskdrake/interactive.pm: have ask_okcancel instead of ask_warn on
- cdie's
- add catch_cdie's around fsedit::check_mntpoint and fsedit::add
-
- * install2.pm: {brltty}{device} is optional, default is ttyS0 or ttyS1 (?)
-
- * fsedit.pm: warn non-ascii chars in mount point (cf bug #1588)
- use cdie instead of die for warnings
-
- * Xconfig/card.pm: don't vivify @cards
-
- * install_steps_gtk.pm: fix $check_complete use in gtk summary
-
-2003/02/20 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: perl_checker
- Finish gtk2 port.
-
-2003/02/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakgw: don't use gtk+2 deprecated functions
-
- * bootlook.pm:
- - add --testing support
- - fix #1923 (aka reuse consolided code instead of using deprecated
- code)
- - minor cleanup
- - skip comments while parsing /etc/lilo.conf
- don't use gtk+2 deprecated functions
-
- * drakxtools.spec: 9.1-3mdk
-
- * standalone/harddrake2: perl_checker fix
- - prevent any l10n problem by having only one path string when both
- creating the menu and acessing a menu widget (aka translate menu
- paths only once), which also nicely cut down the translators job.
- - decrease diagnostics pragma verbosity (aka remove big fat warning
- messages)
-
- * share/po/fr.po: further updates
- translate all countrie names
- update french translation
-
-2003/02/20 alus
-
- * share/po/pl.po: typo fix
-
-2003/02/20 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: dhcp fix
-
-2003/02/20 gbeauchesne
-
- * mdk-stage1/dietlibc/dietfeatures.h: Disable back WANT_TZFILE_PARSER,
- 0.22 fixed strftime() problem
-
- * share/rpmsrate: Better defaults for OOo
-
- * mdk-stage1/dns.c: Fix mygethostbyaddr(), struct in is not a NULL
- terminated string.
- i.e. len has to be either sizeof(in.s_addr) or INADDRSZ.
-
-2003/02/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: install the potentially needed locales
- country when user selected
- another country
- Gtk2::Label::set is deprecated
- add a PO comment to try to keep buttons in the window..
-
- * share/themes-galaxy.rc: logo is aso white on blue
-
- * mdk-stage1/dns.c: fix potential segfault thx to gwenole
-
- * share/po/fr.po: some misc fixes
- translate iraq
-
- * fs.pm: thx rekcehc_lrep
-
- * install_steps_gtk.pm: Gtk2::Label::set is deprecated
- fix bold diplay of texts in adverts
-
- * share/logo-mandrake.png, services.pm, interactive.pm: Gtk2::Label::set
- is deprecated
-
- * ugtk2.pm: try to handle case with large fonts (CJK for example) ->
- branch on TextView
- when the box will be quite large
-
-2003/02/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: corrected Russian
- translation
-
- * share/po/eu.po: changed encoding
- corrected Russian translation
-
-2003/02/20 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: don't let diskdrake detect ext3/reiserfs/jfs/xfs on a type
- 0x7 partition
- - simplify check_mntpoint
- - fix checking mount point in Mount_point()
-
- * partition_table.pm: set {device_windobe} for 0x107 *and* 0x7 (since
- 0x107 is not set correctly at this stage)
- (otherwise this causes mount points /mnt/win_ /mnt/win_1...)
-
- * diskdrake/interactive.pm:
- - simplify check_mntpoint
- - fix checking mount point in Mount_point()
-
- * bootloader.pm:
- - add "Force No APIC"
- - rename add_append() to set_append()
- (since it can be used to remove a key)
- - add remove_append_simple()
-
- * install_steps_interactive.pm: help perl_checker find the N("...") the
- #-PO corresponds to
-
- * any.pm:
- - add "Force No APIC"
- - rename add_append() to set_append()
- (since it can be used to remove a key)
- - add remove_append_simple()
- add XF86Config and XF86Config-4 to report.bug
- no autologin by default if more than one users
-
- * Xconfig/card.pm: log manually chosen graphic card
- log why auto X config failed (needVideoRam)
-
- * ugtk2.pm: ensure {box_size} is set (to have less warnings)
-
- * standalone/diskdrake, interactive.pm: have less warnings when debugging
-
- * pkgs.pm: prefer myspell-en_US
-
- * install_steps.pm:
- - add "Force No APIC"
- - rename add_append() to set_append()
- (since it can be used to remove a key)
- - add remove_append_simple()
- usb is runned by rc.sysinit, and doesn't like "chkconfig --add" anymore
-
- * install2.pm: {brltty}{device} is optional, default is ttyS0 or ttyS1 (?)
- fix brltty support
-
- * interactive/gtk.pm: set a minimum size for Gtk2::HScale's (mainly used
- for resizing partitions)
- fix $ok_clicked when there is no ok button
- have less warnings when debugging
-
-2003/02/20 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Partial gtk2 update - still needs work on
- TreeViews
-
-2003/02/20 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Improved/fixed generation of printer list entries from
- manufacturer-supplied PostScript PPD files
- - Removed forgotten debug mode
- - Disabled wizard-mode temporarily
-
- * install_steps_interactive.pm: Made sure that printerdrake does not open
- its main window when called during the preparation of the "Summary"
- screen.
-
-2003/02/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/harddrake2:
- - prevent any l10n problem by having only one path string when both
- creating the menu and acessing a menu widget (aka translate menu
- paths only once), which also nicely cut down the translators job.
- - decrease diagnostics pragma verbosity (aka remove big fat warning
- messages)
-
- * drakxtools.spec: 9.1-2mdk
-
- * standalone/logdrake: fix #1829
-
- * share/po/fr.po: further updates
- translate all countrie names
- update french translation
-
-2003/02/20 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm: ensure {box_size} is set (to have less warnings)
-
- * diskdrake/interactive.pm, fsedit.pm:
- - simplify check_mntpoint
- - fix checking mount point in Mount_point()
-
- * interactive/gtk.pm, standalone/diskdrake, interactive.pm: have less
- warnings when debugging
-
- * Xconfig/card.pm: log why auto X config failed (needVideoRam)
-
-2003/02/19 alus
-
- * share/po/pl.po: updated
-
-2003/02/19 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed if update fail to allow retry.
- added code to retry finding an update medium if something went wrong.
- add ugly probed type of network configuration.
- make sure network::network:: is used (just in case)
- add default configuration for network for summary.
-
- * install_steps.pm: add simplified menu for desktop mode.
-
- * pkgs.pm: added a missing sanity unwind.
- add sanity code on error when reading hdlist (this will avoid update
- medium
- being trashed if an error occurred during hdlist download and so ...)
-
- * crypto.pm: code slight reorganization.
-
-2003/02/19 gbeauchesne
-
- * share/rpmsrate, share/compssUsers:
- - Add localized help files for OpenOffice.org
- - Add new SPELLCHECK category for myspell spellchecking and
- hyphenators
-
- * mdk-stage1/Makefile: Enable all usual stage1-* BINS on x86-64. Add
- dietlibc to DIRS too for that
- arch. Fix rescue-gui build with $(DIET) wrapper.
-
- * mdk-stage1/mar/Makefile: Rearrange build so that only mar binary is
- built with glibc and other objects
- with either glibc or dietlibc.
-
-2003/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * lang.pm: I'm stupid, we need to set UTF8 when there are two installed
- langs with different encodings, not just when the additional
- languages have different encoding than main one
-
- * loopback.pm, any.pm, diskdrake/interactive.pm, fs.pm, install_steps.pm,
- network/ethernet.pm, bootloader.pm, install_steps_interactive.pm,
- diskdrake/hd_gtk.pm, lvm.pm, fsedit.pm, install2.pm,
- network/drakfirewall.pm, raid.pm, install_interactive.pm,
- install_any.pm, partition_table/raw.pm, partition_table.pm: to
- workaround perl bug removing UTF8 flag when passing scalars to die's,
- pass
- a scalar-ref. but we need to de-ref, so it might break many things :).
- let's make a prayer :).
-
- * share/rpmsrate: add fonts-ttf-arabic when locale ar
-
- * ugtk2.pm: set the destroy handler after wizard creation, or the fact
- that
- wizard window will overwrite existing window will also destroy
- the destroy handler
- fix some segfaults caused by still calling destroy
- or other gtk functions after a destroy has been
- already done, triggered by the user clicking on
- the WM's "close this application" button (#1651)
- better comply to look of text like in Gtk1 (text inside a Frame)
- clean
-
-2003/02/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
- updated Uzbek file
-
- * share/rpmsrate: Improved the locale->font selection;
- added the tetex-latex-arab-doc package (previously was included in the
- main)
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/uz.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sq.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated Uzbek file
-
-2003/02/19 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: don't log "warning: find_index failed in ..."
-
- * install_steps.pm, install_steps_interactive.pm: add some more
- formatError
-
- * raid.pm: mkraid wants all the md devices written in raidtab to exist,
- even if asking to
- create a specific md
- cleanup
-
- * install_steps_auto_install.pm: add a formatError
-
- * pixmaps/X.png: add it back (used by XFdrake)
-
- * install_any.pm: use formatError
-
- * install_interactive.pm: add some formatError's
-
- * fsedit.pm, detect_devices.pm:
- - cleanup & simplify
- - handle raid on raid detection
-
- * interactive/gtk.pm: can't use $mainw->{ok}->clicked since $mainw->{ok}
- doesn't always exist, set
- {retval} and main_quit instead (the way it was done for double click, is
- this
- ok when pressing enter?)
-
- * diskdrake/interactive.pm: use formatError on $err
- use formatError($err) instead of $@
- - allow raid on raid (raid 10)
- - focus mount point in Mount_point
- - focus type in Type
-
- * standalone/icons/ic82-tape-40.png, pixmaps/ic82-tape-40.png,
- pixmaps/ic82-systemeplus-40.png,
- standalone/icons/ic82-systemeplus-40.png: move some images from
- standalone to pixmaps to have them both during install and after install
- (images used by XFdrake)
-
- * install_steps_gtk.pm: indent more the entries in the summary (as asked
- by dadou)
-
-2003/02/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv:
- - perl_checker fixes
- - indent-region, untabify
- - comment workaround
- workaround a drakx bug which don't always add bttv to /etc/modules
-
- * standalone/scannerdrake: cleanup
- fix embedding
-
- * standalone/printerdrake: hide the icon when embedded to get more space
- fix embedding and clean it up
-
-2003/02/19 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: make sure network::network:: is used (just
- in case)
- add default configuration for network for summary.
-
-2003/02/19 gbeauchesne
-
- * share/rpmsrate, share/compssUsers:
- - Add localized help files for OpenOffice.org
- - Add new SPELLCHECK category for myspell spellchecking and
- hyphenators
-
-2003/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/de.po: fix typo (#1821)
-
- * share/compssUsers: provide a minimum desrciption for Scientific
- Workstation (#1814)
-
- * share/themes-galaxy.rc: try to choose sensible values for insensitive
- widgets
-
-2003/02/19 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: don't log "warning: find_index failed in ..."
-
- * diskdrake/interactive.pm:
- - allow raid on raid (raid 10)
- - focus mount point in Mount_point
- - focus type in Type
-
- * raid.pm: mkraid wants all the md devices written in raidtab to exist,
- even if asking to
- create a specific md
- cleanup
-
- * detect_devices.pm, fsedit.pm:
- - cleanup & simplify
- - handle raid on raid detection
-
-2003/02/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv:
- - perl_checker fixes
- - indent-region, untabify
- - comment workaround
- workaround a drakx bug which don't always add bttv to /etc/modules
-
-2003/02/18 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * drakxtools.spec: new version
-
- * network/network.pm: Get back configuration settings from conf files
- (fix some kind of titi sucking)
-
-2003/02/18 gbeauchesne
-
- * mdk-stage1/bzlib/Makefile, mdk-stage1/insmod-modutils/obj/Makefile,
- mdk-stage1/insmod-modutils/util/Makefile,
- mdk-stage1/insmod-modutils/Makefile, mdk-stage1/newt/Makefile,
- mdk-stage1/slang/Makefile, mdk-stage1/mar/Makefile:
- - Use minilibc on x86-64
- - mar requires bzlib to be built beforehand, especially if building
- with
- dietlibc
- - Nuke trickery to handle -DIET objects, everything is now built
- through
- the diet driver, defined into $(DIET)
-
- * mdk-stage1/dietlibc/include/net/ethernet.h: Add <net/ethernet.h> and
- <linux/if_ether.h> so that dhcp.c can be compiled
-
- * mdk-stage1/dietlibc/dietfeatures.h: Define WANT_TZFILE_PARSER so that
- call to tset() in strftime() implementation
- can be resolved.
- Merge back small config file
- Merge in CVS dietlibc 0.21 for IA-64 and X86-64 support. However, drop
- the
- following architectures we currently don't support: arm, mips, mipsel,
- parisc,
- s390, sparc64.
-
- * mdk-stage1/dietlibc/syscalls.c/fchmod.c,
- mdk-stage1/dietlibc/librpc/authunix_prot.c,
- mdk-stage1/dietlibc/include/termio.h,
- mdk-stage1/dietlibc/i386/sendmsg.S,
- mdk-stage1/dietlibc/syscalls.c/syslog.c,
- mdk-stage1/dietlibc/syscalls.c/setpriority.c,
- mdk-stage1/dietlibc/lib/msgget.c, mdk-stage1/dietlibc/lib/longjmp.c,
- mdk-stage1/dietlibc/lib/strerror.c, mdk-stage1/dietlibc/dieticonv.h,
- mdk-stage1/dietlibc/i386/asin.S,
- mdk-stage1/dietlibc/libpthread/pthread_flockfile.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname.c,
- mdk-stage1/dietlibc/alpha/__alarm.c,
- mdk-stage1/dietlibc/librpc/rpc_prot.c,
- mdk-stage1/dietlibc/libugly/getmntent.c,
- mdk-stage1/dietlibc/lib/iscntrl.c, mdk-stage1/dietlibc/include/stdint.h,
- mdk-stage1/dietlibc/i386/mmap64.S, mdk-stage1/dietlibc/lib/getservent.c,
- mdk-stage1/dietlibc/lib/atexit.c, mdk-stage1/dietlibc/i386/strcmp.S,
- mdk-stage1/dietlibc/syscalls.c/sigsuspend.c,
- mdk-stage1/dietlibc/include/stdlib.h,
- mdk-stage1/dietlibc/libugly/timezone.c,
- mdk-stage1/dietlibc/libpthread/pthread_cancel.c,
- mdk-stage1/dietlibc/libdl/dlopen.c,
- mdk-stage1/dietlibc/libugly/servent_buf.c,
- mdk-stage1/dietlibc/lib/isgraph.c, mdk-stage1/dietlibc/lib/closedir.c,
- mdk-stage1/dietlibc/libcruft/scan_ulong.c,
- mdk-stage1/dietlibc/include/sys/prctl.h,
- mdk-stage1/dietlibc/lib/alloc.c, mdk-stage1/dietlibc/lib/tcsetpgrp.c,
- mdk-stage1/dietlibc/syscalls.s/sigsuspend.S,
- mdk-stage1/dietlibc/i386/write12.S,
- mdk-stage1/dietlibc/syscalls.c/mount.c,
- mdk-stage1/dietlibc/syscalls.c/setdomainname.c,
- mdk-stage1/dietlibc/libstdio/fwrite.c,
- mdk-stage1/dietlibc/libdl/_dl_relocate.c, mdk-stage1/dietlibc/diet.c,
- mdk-stage1/dietlibc/include/libgen.h,
- mdk-stage1/dietlibc/i386/Makefile.add,
- mdk-stage1/dietlibc/syscalls.s/bdflush.S,
- mdk-stage1/dietlibc/i386/stpcpy.S, mdk-stage1/dietlibc/i386/ltostr.S,
- mdk-stage1/dietlibc/syscalls.c/lchown.c,
- mdk-stage1/dietlibc/libugly/utent.c, mdk-stage1/dietlibc/i386/connect.S,
- mdk-stage1/dietlibc/include/sys/mman.h,
- mdk-stage1/dietlibc/include/fcntl.h,
- mdk-stage1/dietlibc/libdl/_dl_rel.c, mdk-stage1/dietlibc/lib/memchr.c,
- mdk-stage1/dietlibc/lib/isupper.c,
- mdk-stage1/dietlibc/libugly/asprintf.c,
- mdk-stage1/dietlibc/libpthread/thread_key.c,
- mdk-stage1/dietlibc/lib/errlist.c,
- mdk-stage1/dietlibc/librpc/clnt_udp.c, mdk-stage1/dietlibc/i386/atan2.S,
- mdk-stage1/dietlibc/lib/recvmsg.c, mdk-stage1/dietlibc/lib/qsort.c,
- mdk-stage1/dietlibc/lib/sendto.c,
- mdk-stage1/dietlibc/alpha/__testandset.S,
- mdk-stage1/dietlibc/include/endian.h,
- mdk-stage1/dietlibc/libstdio/vscanf.c,
- mdk-stage1/dietlibc/lib/isxdigit.c, mdk-stage1/dietlibc/i386/atanh.S,
- mdk-stage1/dietlibc/syscalls.s/mlock.S,
- mdk-stage1/dietlibc/ppc/syscalls.h,
- mdk-stage1/dietlibc/libstdio/stdin.c,
- mdk-stage1/dietlibc/lib/__ptrace.c,
- mdk-stage1/dietlibc/libstdio/scanf.c,
- mdk-stage1/dietlibc/libdl/dlclose.c,
- mdk-stage1/dietlibc/librpc/svc_raw.c,
- mdk-stage1/dietlibc/include/arpa/nameser.h,
- mdk-stage1/dietlibc/dietuglyweaks.h,
- mdk-stage1/dietlibc/i386/copysign.S, mdk-stage1/dietlibc/i386/memcmp.S,
- mdk-stage1/dietlibc/i386/htons.S, mdk-stage1/dietlibc/lib/open64.c,
- mdk-stage1/dietlibc/include/stdarg-cruft.h,
- mdk-stage1/dietlibc/libugly/hasmntopt.c,
- mdk-stage1/dietlibc/dietdirent.h,
- mdk-stage1/dietlibc/syscalls.c/setsid.c,
- mdk-stage1/dietlibc/libpthread/pthread_testcancel.c,
- mdk-stage1/dietlibc/libshell/realpath.c,
- mdk-stage1/dietlibc/include/sys/file.h, mdk-stage1/dietlibc/lib/ftw.c,
- mdk-stage1/dietlibc/i386/fmod.S, mdk-stage1/dietlibc/lib/tcsetattr.c,
- mdk-stage1/dietlibc/i386/strrchr.S,
- mdk-stage1/dietlibc/libcruft/bzero.c,
- mdk-stage1/dietlibc/i386/recvfrom.S,
- mdk-stage1/dietlibc/libstdio/ftell.c,
- mdk-stage1/dietlibc/libstdio/fgets.c,
- mdk-stage1/dietlibc/include/rpc/netdb.h,
- mdk-stage1/dietlibc/libdl/_dl_load.c,
- mdk-stage1/dietlibc/syscalls.c/getresgid.c,
- mdk-stage1/dietlibc/syscalls.s/sendfile64.S,
- mdk-stage1/dietlibc/lib/sscanf.c, mdk-stage1/dietlibc/lib/creat.c,
- mdk-stage1/dietlibc/syscalls.c/sync.c,
- mdk-stage1/dietlibc/lib/getdomainname.c,
- mdk-stage1/dietlibc/syscalls.c/flock.c,
- mdk-stage1/dietlibc/libugly/iconv.c,
- mdk-stage1/dietlibc/libstdio/fclose.c,
- mdk-stage1/dietlibc/libugly/getprotobyname.c,
- mdk-stage1/dietlibc/libstdio/vprintf.c,
- mdk-stage1/dietlibc/include/sys/sparc-ioctl.h,
- mdk-stage1/dietlibc/libstdio/fdopen.c,
- mdk-stage1/dietlibc/lib/vsnprintf.c,
- mdk-stage1/dietlibc/libugly/dirfd.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_signal.c,
- mdk-stage1/dietlibc/include/pwd.h, mdk-stage1/dietlibc/i386/atoll.S,
- mdk-stage1/dietlibc/i386/accept.S, mdk-stage1/dietlibc/lib/ispunct.c,
- mdk-stage1/dietlibc/syscalls.s/getegid32.S,
- mdk-stage1/dietlibc/sparc/mmap.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setschedparam.c,
- mdk-stage1/dietlibc/lib/snprintf.c,
- mdk-stage1/dietlibc/include/sys/fsuid.h,
- mdk-stage1/dietlibc/syscalls.s/ftruncate64.S,
- mdk-stage1/dietlibc/i386/getsockopt.S,
- mdk-stage1/dietlibc/syscalls.c/fchdir.c,
- mdk-stage1/dietlibc/i386/unified.S,
- mdk-stage1/dietlibc/libpthread/pthread_sigmask.c,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr2_r.c,
- mdk-stage1/dietlibc/syscalls.c/signal.c,
- mdk-stage1/dietlibc/syscalls.c/munmap.c,
- mdk-stage1/dietlibc/lib/llabs.c, mdk-stage1/dietlibc/lib/msgrcv.c,
- mdk-stage1/dietlibc/i386/memccpy.S,
- mdk-stage1/dietlibc/libugly/getservbyname.c,
- mdk-stage1/dietlibc/include/write12.h, mdk-stage1/dietlibc/dietstdio.h,
- mdk-stage1/dietlibc/alpha/start.S, mdk-stage1/dietlibc/i386/bind.S,
- mdk-stage1/dietlibc/libpthread/pthread_key.c, mdk-stage1/dietlibc/BUGS,
- mdk-stage1/dietlibc/syscalls.c/chown.c,
- mdk-stage1/dietlibc/libcruft/setlocale.c,
- mdk-stage1/dietlibc/librpc/xdr_array.c,
- mdk-stage1/dietlibc/libcruft/__parse_1.c,
- mdk-stage1/dietlibc/lib/__isnan.c,
- mdk-stage1/dietlibc/include/sys/ptrace.h,
- mdk-stage1/dietlibc/syscalls.s/setfsuid.S,
- mdk-stage1/dietlibc/lib/tcflow.c,
- mdk-stage1/dietlibc/syscalls.s/geteuid32.S,
- mdk-stage1/dietlibc/lib/puts.c, mdk-stage1/dietlibc/CHANGES,
- mdk-stage1/dietlibc/lib/mkfifo.c,
- mdk-stage1/dietlibc/syscalls.c/utime.c,
- mdk-stage1/dietlibc/lib/memccmp.c,
- mdk-stage1/dietlibc/alpha/socketpair.S,
- mdk-stage1/dietlibc/libcruft/scandir.c,
- mdk-stage1/dietlibc/syscalls.s/getuid32.S,
- mdk-stage1/dietlibc/lib/tolower.c,
- mdk-stage1/dietlibc/include/sys/resource.h,
- mdk-stage1/dietlibc/syscalls.c/access.c,
- mdk-stage1/dietlibc/libcruft/getusershell.c,
- mdk-stage1/dietlibc/i386/floor.S,
- mdk-stage1/dietlibc/syscalls.s/alarm.S, mdk-stage1/dietlibc/lib/send.c,
- mdk-stage1/dietlibc/sparc/sigaction.c, mdk-stage1/dietlibc/lib/execvp.c,
- mdk-stage1/dietlibc/libpthread/pthread_join.c,
- mdk-stage1/dietlibc/alpha/__longjmp.S,
- mdk-stage1/dietlibc/libcruft/entlib.c,
- mdk-stage1/dietlibc/libcruft/tmpnam.c,
- mdk-stage1/dietlibc/syscalls.c/getppid.c,
- mdk-stage1/dietlibc/libdl/_dl_alloc.c,
- mdk-stage1/dietlibc/lib/setlinebuf.c,
- mdk-stage1/dietlibc/libstdio/fopen.c,
- mdk-stage1/dietlibc/librpc/get_myaddress.c,
- mdk-stage1/dietlibc/lib/bcd.c, mdk-stage1/dietlibc/include/signal.h,
- mdk-stage1/dietlibc/syscalls.c/fcntl.c,
- mdk-stage1/dietlibc/libugly/mktime.c,
- mdk-stage1/dietlibc/syscalls.s/fchown32.S,
- mdk-stage1/dietlibc/libcruft/getopt_long_only.c,
- mdk-stage1/dietlibc/syscalls.s/munlock.S,
- mdk-stage1/dietlibc/libcruft/getgrent.c,
- mdk-stage1/dietlibc/syscalls.c/poll.c,
- mdk-stage1/dietlibc/sparc/__longjmp.S,
- mdk-stage1/dietlibc/librpc/rpc_callmsg.c,
- mdk-stage1/dietlibc/include/pthread.h,
- mdk-stage1/dietlibc/libpthread/pthread_key_delete.c,
- mdk-stage1/dietlibc/include/sys/socket.h,
- mdk-stage1/dietlibc/libpthread/pthread_mutexattr_setkind_np.c,
- mdk-stage1/dietlibc/ppc/clone.S, mdk-stage1/dietlibc/i386/clone.S,
- mdk-stage1/dietlibc/libcruft/pwbuf.c,
- mdk-stage1/dietlibc/syscalls.c/getrlimit.c,
- mdk-stage1/dietlibc/i386/getpeername.S,
- mdk-stage1/dietlibc/syscalls.c/setresuid.c,
- mdk-stage1/dietlibc/syscalls.c/clone.c,
- mdk-stage1/dietlibc/i386/mcount.S, mdk-stage1/dietlibc/lib/__dtostr.c,
- mdk-stage1/dietlibc/syscalls.s/nice.S,
- mdk-stage1/dietlibc/libcruft/grent.c, mdk-stage1/dietlibc/i386/ceil.S,
- mdk-stage1/dietlibc/syscalls.c/vhangup.c,
- mdk-stage1/dietlibc/include/sys/cdefs.h,
- mdk-stage1/dietlibc/libpthread/pthread_sys_fdatasync.c,
- mdk-stage1/dietlibc/syscalls.c/getuid.c,
- mdk-stage1/dietlibc/syscalls.s/getdents64.S,
- mdk-stage1/dietlibc/librpc/svc_run.c,
- mdk-stage1/dietlibc/libpthread/pthread_fgetc.c,
- mdk-stage1/dietlibc/lib/adjtime.c,
- mdk-stage1/dietlibc/syscalls.c/truncate.c,
- mdk-stage1/dietlibc/include/net/if_ether.h,
- mdk-stage1/dietlibc/lib/isblank.c, mdk-stage1/dietlibc/lib/strtof.c,
- mdk-stage1/dietlibc/syscalls.s/time.S,
- mdk-stage1/dietlibc/libugly/gmtime_r.c,
- mdk-stage1/dietlibc/include/sys/shm.h,
- mdk-stage1/dietlibc/include/sys/kd.h,
- mdk-stage1/dietlibc/lib/errlistu.c, mdk-stage1/dietlibc/i386/expm1.S,
- mdk-stage1/dietlibc/lib/nop.c, mdk-stage1/dietlibc/syscalls.c/rename.c,
- mdk-stage1/dietlibc/libstdio/vfscanf.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_timedwait.c,
- mdk-stage1/dietlibc/librpc/bindresvport.c,
- mdk-stage1/dietlibc/i386/cos.S, mdk-stage1/dietlibc/libstdio/fdglue.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname_r.c,
- mdk-stage1/dietlibc/lib/lseek64.c,
- mdk-stage1/dietlibc/libdl/_dl_search.c,
- mdk-stage1/dietlibc/syscalls.c/mknod.c, mdk-stage1/dietlibc/i386/fabs.S,
- mdk-stage1/dietlibc/lib/ttyname.c,
- mdk-stage1/dietlibc/syscalls.s/signal.S,
- mdk-stage1/dietlibc/syscalls.s/create_module.S,
- mdk-stage1/dietlibc/alpha/syscalls.h, mdk-stage1/dietlibc/i386/htonl.S,
- mdk-stage1/dietlibc/libcruft/getspnam.c,
- mdk-stage1/dietlibc/lib/strncat.c, mdk-stage1/dietlibc/i386/log10.S,
- mdk-stage1/dietlibc/libugly/strsignal.c,
- mdk-stage1/dietlibc/librpc/clnt_tcp.c, mdk-stage1/dietlibc/i386/pow.S,
- mdk-stage1/dietlibc/libcruft/initgroups.c,
- mdk-stage1/dietlibc/lib/sendmsg.c, mdk-stage1/dietlibc/lib/write12.c,
- mdk-stage1/dietlibc/lib/cfsetospeed.c,
- mdk-stage1/dietlibc/include/sys/stat.h,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr.c,
- mdk-stage1/dietlibc/lib/__stime.c, mdk-stage1/dietlibc/i386/poly.S,
- mdk-stage1/dietlibc/librpc/svc_udp.c,
- mdk-stage1/dietlibc/libugly/netent.c,
- mdk-stage1/dietlibc/libcruft/gethostbyaddr_r.c,
- mdk-stage1/dietlibc/syscalls.c/setpgid.c,
- mdk-stage1/dietlibc/libugly/localtime_r.c,
- mdk-stage1/dietlibc/libcruft/localeconv.c,
- mdk-stage1/dietlibc/alpha/n_sigprocmask.S,
- mdk-stage1/dietlibc/syscalls.c/gettimeofday.c,
- mdk-stage1/dietlibc/libshell/fnmatch.c,
- mdk-stage1/dietlibc/syscalls.c/mkdir.c,
- mdk-stage1/dietlibc/syscalls.s/setresgid.S,
- mdk-stage1/dietlibc/libstdio/feof.c,
- mdk-stage1/dietlibc/libcruft/seteuid.c,
- mdk-stage1/dietlibc/libstdio/puts.c,
- mdk-stage1/dietlibc/syscalls.c/sigpending.c,
- mdk-stage1/dietlibc/include/netdb.h, mdk-stage1/dietlibc/i386/memset.S,
- mdk-stage1/dietlibc/syscalls.s/delete_module.S,
- mdk-stage1/dietlibc/lib/semop.c, mdk-stage1/dietlibc/include/dirent.h,
- mdk-stage1/dietlibc/syscalls.c/getpid.c,
- mdk-stage1/dietlibc/libpthread/thread_internal.h,
- mdk-stage1/dietlibc/libugly/ftime.c,
- mdk-stage1/dietlibc/include/libintl.h, mdk-stage1/dietlibc/lib/rand_r.c,
- mdk-stage1/dietlibc/libcruft/setegid.c,
- mdk-stage1/dietlibc/syscalls.c/dup.c,
- mdk-stage1/dietlibc/syscalls.c/fsync.c,
- mdk-stage1/dietlibc/include/shadow.h,
- mdk-stage1/dietlibc/include/sys/select.h, mdk-stage1/dietlibc/PORTING,
- mdk-stage1/dietlibc/i386/ilogb.S, mdk-stage1/dietlibc/lib/strsep.c,
- mdk-stage1/dietlibc/lib/opendir.c,
- mdk-stage1/dietlibc/libpthread/pthread_equal.c,
- mdk-stage1/dietlibc/libugly/system.c,
- mdk-stage1/dietlibc/libpthread/pthread_getschedparam.c,
- mdk-stage1/dietlibc/libcrypt/md5.c, mdk-stage1/dietlibc/i386/cbrt.S,
- mdk-stage1/dietlibc/syscalls.s/ptrace.S,
- mdk-stage1/dietlibc/libcruft/spent.c, mdk-stage1/dietlibc/i386/start.S,
- mdk-stage1/dietlibc/syscalls.s/pivot_root.S,
- mdk-stage1/dietlibc/include/rpc/auth_unix.h,
- mdk-stage1/dietlibc/libdl/elf_hash.h,
- mdk-stage1/dietlibc/include/dlfcn.h,
- mdk-stage1/dietlibc/syscalls.c/nanosleep.c,
- mdk-stage1/dietlibc/lib/usleep.c, mdk-stage1/dietlibc/include/md5.h,
- mdk-stage1/dietlibc/lib/strchr.c, mdk-stage1/dietlibc/lib/msgsnd.c,
- mdk-stage1/dietlibc/include/cpio.h,
- mdk-stage1/dietlibc/syscalls.s/chown32.S,
- mdk-stage1/dietlibc/ppc/unified.S,
- mdk-stage1/dietlibc/libugly/gai_strerror.c,
- mdk-stage1/dietlibc/syscalls.c/sethostname.c,
- mdk-stage1/dietlibc/syscalls.c/geteuid.c,
- mdk-stage1/dietlibc/syscalls.s/sigprocmask.S,
- mdk-stage1/dietlibc/i386/rint.S, mdk-stage1/dietlibc/libugly/ptsname.c,
- mdk-stage1/dietlibc/lib/ipv6constants.c,
- mdk-stage1/dietlibc/syscalls.s/waitpid.S,
- mdk-stage1/dietlibc/libstdio/fdprintf.c,
- mdk-stage1/dietlibc/lib/sigpending.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_fcntl.c,
- mdk-stage1/dietlibc/lib/memset.c, mdk-stage1/dietlibc/lib/__fstat64.c,
- mdk-stage1/dietlibc/include/sched.h,
- mdk-stage1/dietlibc/i386/syscalls.h, mdk-stage1/dietlibc/dirstream.h,
- mdk-stage1/dietlibc/i386/socketpair.S, mdk-stage1/dietlibc/CAVEAT,
- mdk-stage1/dietlibc/include/float.h,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setschedpolicy.c,
- mdk-stage1/dietlibc/libstdio/fscanf.c,
- mdk-stage1/dietlibc/syscalls.c/setitimer.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c,
- mdk-stage1/dietlibc/i386/hypot.S,
- mdk-stage1/dietlibc/libpthread/Makefile,
- mdk-stage1/dietlibc/lib/pread.c, mdk-stage1/dietlibc/lib/accept.c,
- mdk-stage1/dietlibc/i386/mmap.c,
- mdk-stage1/dietlibc/syscalls.c/setresgid.c,
- mdk-stage1/dietlibc/sparc/setjmp.S, mdk-stage1/dietlibc/.cvsignore,
- mdk-stage1/dietlibc/librpc/pmap_rmt.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setscope.c,
- mdk-stage1/dietlibc/lib/sigtimedwait.c, mdk-stage1/dietlibc/i386/cosh.S,
- mdk-stage1/dietlibc/include/sys/ioctl.h,
- mdk-stage1/dietlibc/syscalls.s/rt_sigpending.S,
- mdk-stage1/dietlibc/lib/__ltostr.c,
- mdk-stage1/dietlibc/include/sys/ppc-ioctl.h,
- mdk-stage1/dietlibc/syscalls.s/ptrace.s,
- mdk-stage1/dietlibc/libpthread/pthread_setcanceltype.c,
- mdk-stage1/dietlibc/lib/exec_lib.c,
- mdk-stage1/dietlibc/libstdio/vfdprintf.c,
- mdk-stage1/dietlibc/lib/strlen.c, mdk-stage1/dietlibc/libregex/rx.c,
- mdk-stage1/dietlibc/liblatin1/latin1-islower.c,
- mdk-stage1/dietlibc/lib/memmem.c, mdk-stage1/dietlibc/include/string.h,
- mdk-stage1/dietlibc/lib/raise.c, mdk-stage1/dietlibc/i386/usleep.S,
- mdk-stage1/dietlibc/include/iconv.h,
- mdk-stage1/dietlibc/libpthread/pthread_setspecific.c,
- mdk-stage1/dietlibc/lib/semget.c,
- mdk-stage1/dietlibc/syscalls.s/setregid32.S,
- mdk-stage1/dietlibc/syscalls.c/swapoff.c,
- mdk-stage1/dietlibc/libpthread/pthread_atfork.c,
- mdk-stage1/dietlibc/libcruft/tempnam.c,
- mdk-stage1/dietlibc/libcruft/inet_aton.c,
- mdk-stage1/dietlibc/lib/sigismember.c, mdk-stage1/dietlibc/librpc/svc.c,
- mdk-stage1/dietlibc/lib/set_errno.c,
- mdk-stage1/dietlibc/syscalls.c/execve.c,
- mdk-stage1/dietlibc/lib/sigemptyset.c,
- mdk-stage1/dietlibc/include/sys/vfs.h, mdk-stage1/dietlibc/SECURITY,
- mdk-stage1/dietlibc/include/sys/timex.h,
- mdk-stage1/dietlibc/libugly/getprotoent.c,
- mdk-stage1/dietlibc/lib/__stat64.c, mdk-stage1/dietlibc/include/elf.h,
- mdk-stage1/dietlibc/lib/strncmp.c, mdk-stage1/dietlibc/include/assert.h,
- mdk-stage1/dietlibc/lib/gethostname.c,
- mdk-stage1/dietlibc/i386/dyn_syscalls.S,
- mdk-stage1/dietlibc/lib/vsscanf.c, mdk-stage1/dietlibc/lib/cfmakeraw.c,
- mdk-stage1/dietlibc/THANKS, mdk-stage1/dietlibc/libcruft/getgrgid_r.c,
- mdk-stage1/dietlibc/lib/connect.c,
- mdk-stage1/dietlibc/libcruft/sysconf.c,
- mdk-stage1/dietlibc/lib/perror.c, mdk-stage1/dietlibc/include/locale.h,
- mdk-stage1/dietlibc/syscalls.c/getresuid.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_init.c,
- mdk-stage1/dietlibc/syscalls.c/sigaction.c,
- mdk-stage1/dietlibc/include/tar.h, mdk-stage1/dietlibc/lib/execl.c,
- mdk-stage1/dietlibc/include/time.h,
- mdk-stage1/dietlibc/libstdio/setvbuf.c,
- mdk-stage1/dietlibc/lib/tcflush.c, mdk-stage1/dietlibc/lib/strtold.c,
- mdk-stage1/dietlibc/libugly/getprotoent_r.c,
- mdk-stage1/dietlibc/syscalls.s/setfsgid32.S,
- mdk-stage1/dietlibc/syscalls.s/prctl.S,
- mdk-stage1/dietlibc/lib/strncasecmp.c,
- mdk-stage1/dietlibc/syscalls.c/close.c,
- mdk-stage1/dietlibc/libpthread/README,
- mdk-stage1/dietlibc/lib/__lltostr.c, mdk-stage1/dietlibc/lib/vprintf.c,
- mdk-stage1/dietlibc/i386/acos.S,
- mdk-stage1/dietlibc/libpthread/pthread_funlockfile.c,
- mdk-stage1/dietlibc/libcruft/getlogin.c,
- mdk-stage1/dietlibc/libpthread/thread_internal.c,
- mdk-stage1/dietlibc/libpthread/pthread_key_create.c,
- mdk-stage1/dietlibc/libcruft/herror.c,
- mdk-stage1/dietlibc/syscalls.c/dup2.c,
- mdk-stage1/dietlibc/lib/__lstat64.c, mdk-stage1/dietlibc/lib/strtod.c,
- mdk-stage1/dietlibc/lib/strcpy.c, mdk-stage1/dietlibc/libdl/_dl_open.c,
- mdk-stage1/dietlibc/libcruft/bcopy.c,
- mdk-stage1/dietlibc/include/stdio.h,
- mdk-stage1/dietlibc/syscalls.c/chroot.c,
- mdk-stage1/dietlibc/libcruft/__parse_ws.c,
- mdk-stage1/dietlibc/include/fnmatch.h,
- mdk-stage1/dietlibc/alpha/sigprocmask.S,
- mdk-stage1/dietlibc/libcruft/res_mkquery.c,
- mdk-stage1/dietlibc/include/sys/timeb.h,
- mdk-stage1/dietlibc/i386/sendto.S,
- mdk-stage1/dietlibc/libugly/iconv_close.c,
- mdk-stage1/dietlibc/i386/sleep.S,
- mdk-stage1/dietlibc/libugly/time_table_spd.c,
- mdk-stage1/dietlibc/lib/sigdelset.c, mdk-stage1/dietlibc/libdl/dlsym.c,
- mdk-stage1/dietlibc/libstdio/stderr.c,
- mdk-stage1/dietlibc/libdl/dlerror.c,
- mdk-stage1/dietlibc/lib/setsockopt.c,
- mdk-stage1/dietlibc/i386/shutdown.S,
- mdk-stage1/dietlibc/libcruft/mkstemp.c,
- mdk-stage1/dietlibc/libstdio/ungetc.c,
- mdk-stage1/dietlibc/syscalls.c/fork.c,
- mdk-stage1/dietlibc/libpthread/pthread_setcancelstate.c,
- mdk-stage1/dietlibc/i386/sinh.S,
- mdk-stage1/dietlibc/libcruft/inet_ntoa.c,
- mdk-stage1/dietlibc/libugly/tzfile.c,
- mdk-stage1/dietlibc/syscalls.c/getgroups.c,
- mdk-stage1/dietlibc/i386/memchr.S,
- mdk-stage1/dietlibc/libugly/getservent.c, mdk-stage1/dietlibc/diet.1,
- mdk-stage1/dietlibc/include/rpc/xdr.h,
- mdk-stage1/dietlibc/libugly/putpwent.c,
- mdk-stage1/dietlibc/libdl/_dl_rel.h,
- mdk-stage1/dietlibc/libcruft/getspent_r.c,
- mdk-stage1/dietlibc/include/rpc/key_prot.h,
- mdk-stage1/dietlibc/syscalls.c/setgid.c,
- mdk-stage1/dietlibc/lib/vsprintf.c, mdk-stage1/dietlibc/lib/execle.c,
- mdk-stage1/dietlibc/i386/__ten.S, mdk-stage1/dietlibc/include/grp.h,
- mdk-stage1/dietlibc/lib/random.c, mdk-stage1/dietlibc/i386/send.S,
- mdk-stage1/dietlibc/include/sys/s390-ioctl.h,
- mdk-stage1/dietlibc/libcruft/killpg.c,
- mdk-stage1/dietlibc/sparc/start.S,
- mdk-stage1/dietlibc/syscalls.s/setresuid.S,
- mdk-stage1/dietlibc/libcruft/getpwnam.c,
- mdk-stage1/dietlibc/lib/isprint.c, mdk-stage1/dietlibc/i386/recvmsg.S,
- mdk-stage1/dietlibc/syscalls.s/rt_sigqueueinfo.S,
- mdk-stage1/dietlibc/libstdio/fsetpos.c,
- mdk-stage1/dietlibc/i386/md5asm.S, mdk-stage1/dietlibc/i386/isleap.S,
- mdk-stage1/dietlibc/i386/PIC.h,
- mdk-stage1/dietlibc/libpthread/pthread_spinlock.c,
- mdk-stage1/dietlibc/syscalls.c/pipe.c,
- mdk-stage1/dietlibc/syscalls.c/ioctl.c,
- mdk-stage1/dietlibc/syscalls.c/fchown.c,
- mdk-stage1/dietlibc/i386/memcpy.S,
- mdk-stage1/dietlibc/syscalls.s/rt_sigtimedwait.S,
- mdk-stage1/dietlibc/libcruft/__parse.c,
- mdk-stage1/dietlibc/lib/__getcwd.c, mdk-stage1/dietlibc/lib/isdigit.c,
- mdk-stage1/dietlibc/include/sys/un.h,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_lock.c,
- mdk-stage1/dietlibc/syscalls.s/sigaction.S,
- mdk-stage1/dietlibc/libcruft/getspnam_r.c,
- mdk-stage1/dietlibc/lib/semctl.c, mdk-stage1/dietlibc/lib/tcsendbreak.c,
- mdk-stage1/dietlibc/include/rpc/rpc.h,
- mdk-stage1/dietlibc/syscalls.s/getgid32.S,
- mdk-stage1/dietlibc/libpthread/pthread_fdglue2.c,
- mdk-stage1/dietlibc/syscalls.c/waitpid.c,
- mdk-stage1/dietlibc/alpha/unified.S, mdk-stage1/dietlibc/lib/strstr.c,
- mdk-stage1/dietlibc/syscalls.c/socketcall.c,
- mdk-stage1/dietlibc/include/rpc/pmap_rmt.h,
- mdk-stage1/dietlibc/include/sys/io.h, mdk-stage1/dietlibc/findcflags.sh,
- mdk-stage1/dietlibc/libcruft/inet_pton.c,
- mdk-stage1/dietlibc/i386/tanh.S, mdk-stage1/dietlibc/lib/getsockname.c,
- mdk-stage1/dietlibc/libugly/grantpt.c,
- mdk-stage1/dietlibc/i386/strcat.S,
- mdk-stage1/dietlibc/lib/siginterrupt.c,
- mdk-stage1/dietlibc/libcruft/dnscruft3.c,
- mdk-stage1/dietlibc/syscalls.c/link.c,
- mdk-stage1/dietlibc/libugly/difftime.c,
- mdk-stage1/dietlibc/include/utmp.h,
- mdk-stage1/dietlibc/libstdio/ftello.c,
- mdk-stage1/dietlibc/syscalls.c/sigprocmask.c,
- mdk-stage1/dietlibc/lib/rand48.c, mdk-stage1/dietlibc/lib/sleep.c,
- mdk-stage1/dietlibc/i386/__testandset.S,
- mdk-stage1/dietlibc/syscalls.s/setresgid32.S,
- mdk-stage1/dietlibc/libugly/asctime_r.c,
- mdk-stage1/dietlibc/syscalls.s/lchown32.S,
- mdk-stage1/dietlibc/libcruft/entlib.h,
- mdk-stage1/dietlibc/lib/sprintf.c,
- mdk-stage1/dietlibc/libcruft/dnscruft.c,
- mdk-stage1/dietlibc/syscalls.c/setgroups.c,
- mdk-stage1/dietlibc/libugly/getservbyname_r.c,
- mdk-stage1/dietlibc/syscalls.s/sigpending.S,
- mdk-stage1/dietlibc/lib/tcdrain.c, mdk-stage1/dietlibc/libcruft/clock.c,
- mdk-stage1/dietlibc/include/netinet/in.h,
- mdk-stage1/dietlibc/syscalls.s/settimeofday.S,
- mdk-stage1/dietlibc/syscalls.s/sendfile.S,
- mdk-stage1/dietlibc/i386/socket.S,
- mdk-stage1/dietlibc/libugly/protoent_buf.c,
- mdk-stage1/dietlibc/include/sys/time.h,
- mdk-stage1/dietlibc/lib/errno_location.c,
- mdk-stage1/dietlibc/include/sys/msg.h,
- mdk-stage1/dietlibc/liblatin1/latin1-isprint.c,
- mdk-stage1/dietlibc/libstdio/fgetpos.c,
- mdk-stage1/dietlibc/libshell/glob.c,
- mdk-stage1/dietlibc/libugly/getprotobynumber_r.c,
- mdk-stage1/dietlibc/sparc/strlen.S,
- mdk-stage1/dietlibc/include/rpc/svc.h,
- mdk-stage1/dietlibc/include/netinet/ip.h,
- mdk-stage1/dietlibc/include/sys/gmon.h,
- mdk-stage1/dietlibc/syscalls.c/wait4.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_broadcast.c,
- mdk-stage1/dietlibc/i386/acosh.S, mdk-stage1/dietlibc/lib/sigprocmask.c,
- mdk-stage1/dietlibc/lib/_brk.c,
- mdk-stage1/dietlibc/syscalls.c/getegid.c,
- mdk-stage1/dietlibc/syscalls.c/uname.c,
- mdk-stage1/dietlibc/syscalls.s/mmap2.S,
- mdk-stage1/dietlibc/libcruft/getpagesize.c,
- mdk-stage1/dietlibc/sparc/unified.S,
- mdk-stage1/dietlibc/libcruft/dn_expand.c,
- mdk-stage1/dietlibc/i386/sqrt.S, mdk-stage1/dietlibc/lib/binshstr.c,
- mdk-stage1/dietlibc/syscalls.s/exit.S, mdk-stage1/dietlibc/lib/execlp.c,
- mdk-stage1/dietlibc/libstdio/fread.c,
- mdk-stage1/dietlibc/include/netinet/udp.h, mdk-stage1/dietlibc/start.h,
- mdk-stage1/dietlibc/lib/sys_siglist.c,
- mdk-stage1/dietlibc/i386/strlen.S,
- mdk-stage1/dietlibc/syscalls.c/ftruncate.c,
- mdk-stage1/dietlibc/librpc/xdr.c, mdk-stage1/dietlibc/lib/__xmknod.c,
- mdk-stage1/dietlibc/syscalls.s/pwrite.S,
- mdk-stage1/dietlibc/libcruft/getgrnam.c,
- mdk-stage1/dietlibc/lib/strtok.c,
- mdk-stage1/dietlibc/syscalls.s/setreuid32.S,
- mdk-stage1/dietlibc/lib/recv.c, mdk-stage1/dietlibc/lib/reboot.c,
- mdk-stage1/dietlibc/syscalls.c/write.c,
- mdk-stage1/dietlibc/libugly/getprotobyname_r.c,
- mdk-stage1/dietlibc/syscalls.s/errlist.S,
- mdk-stage1/dietlibc/librpc/svc_auth_unix.c,
- mdk-stage1/dietlibc/libshell/dirname.c,
- mdk-stage1/dietlibc/libcruft/res_search.c,
- mdk-stage1/dietlibc/i386/getenv.S, mdk-stage1/dietlibc/i386/exp10.S,
- mdk-stage1/dietlibc/include/errno.h,
- mdk-stage1/dietlibc/libdl/_dl_queue.c,
- mdk-stage1/dietlibc/include/sys/uio.h,
- mdk-stage1/dietlibc/lib/socketpair.c,
- mdk-stage1/dietlibc/librpc/pmap_getport.c,
- mdk-stage1/dietlibc/dyn_start.c, mdk-stage1/dietlibc/i386/ldexp.S,
- mdk-stage1/dietlibc/dietlibm.h, mdk-stage1/dietlibc/libstdio/printf.c,
- mdk-stage1/dietlibc/libstdio/ftello64.c,
- mdk-stage1/dietlibc/libpthread/pthread_fputc.c,
- mdk-stage1/dietlibc/syscalls.c/exit.c,
- mdk-stage1/dietlibc/include/sys/times.h,
- mdk-stage1/dietlibc/include/unistd.h, mdk-stage1/dietlibc/lib/isascii.c,
- mdk-stage1/dietlibc/syscalls.c/chdir.c,
- mdk-stage1/dietlibc/libugly/daemon.c,
- mdk-stage1/dietlibc/lib/sigaddset.c,
- mdk-stage1/dietlibc/syscalls.c/reboot.c,
- mdk-stage1/dietlibc/lib/sigjmp.c, mdk-stage1/dietlibc/i386/strchr.S,
- mdk-stage1/dietlibc/syscalls.c/getdents.c,
- mdk-stage1/dietlibc/libstdio/fdglue2.c,
- mdk-stage1/dietlibc/i386/strcpy.S, mdk-stage1/dietlibc/lib/getopt.c,
- mdk-stage1/dietlibc/libcruft/getgrent_r.c,
- mdk-stage1/dietlibc/librpc/xdr_reference.c,
- mdk-stage1/dietlibc/include/netinet/tcp.h,
- mdk-stage1/dietlibc/lib/pwrite64.c,
- mdk-stage1/dietlibc/syscalls.c/kill.c,
- mdk-stage1/dietlibc/i386/__longjmp.S, mdk-stage1/dietlibc/TODO,
- mdk-stage1/dietlibc/include/sys/syslog.h,
- mdk-stage1/dietlibc/libcruft/res_query.c,
- mdk-stage1/dietlibc/lib/bind.c,
- mdk-stage1/dietlibc/lib/if_indextoname.c,
- mdk-stage1/dietlibc/syscalls.c/readlink.c,
- mdk-stage1/dietlibc/libcrypt/crypt.c,
- mdk-stage1/dietlibc/libugly/unlockpt.c,
- mdk-stage1/dietlibc/libstdio/fflush.c,
- mdk-stage1/dietlibc/libdl/Makefile,
- mdk-stage1/dietlibc/include/rpc/pmap_prot.h,
- mdk-stage1/dietlibc/libugly/popen.c,
- mdk-stage1/dietlibc/libstdio/fputc_unlocked.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_trylock.c,
- mdk-stage1/dietlibc/syscalls.c/swapon.c,
- mdk-stage1/dietlibc/lib/alarm.c, mdk-stage1/dietlibc/ppc/mmap.c,
- mdk-stage1/dietlibc/librpc/svc_simple.c,
- mdk-stage1/dietlibc/libcruft/sysconf_cpus.c,
- mdk-stage1/dietlibc/include/sys/poll.h,
- mdk-stage1/dietlibc/libugly/freeaddrinfo.c,
- mdk-stage1/dietlibc/libcruft/getpwuid_r.c,
- mdk-stage1/dietlibc/syscalls.c/_llseek.c,
- mdk-stage1/dietlibc/lib/lockf.c,
- mdk-stage1/dietlibc/librpc/getrpcport.c,
- mdk-stage1/dietlibc/lib/htons.c, mdk-stage1/dietlibc/librpc/auth_none.c,
- mdk-stage1/dietlibc/syscalls.c/getpgid.c,
- mdk-stage1/dietlibc/libcruft/hstrerror.c,
- mdk-stage1/dietlibc/lib/shmdt.c, mdk-stage1/dietlibc/libcruft/grbuf.c,
- mdk-stage1/dietlibc/lib/pread64.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setinheritsched.c,
- mdk-stage1/dietlibc/i386/setjmp.S,
- mdk-stage1/dietlibc/syscalls.s/ioperm.S,
- mdk-stage1/dietlibc/lib/getenv.c,
- mdk-stage1/dietlibc/include/features.h,
- mdk-stage1/dietlibc/lib/strtoll.c, mdk-stage1/dietlibc/sparc/syscalls.h,
- mdk-stage1/dietlibc/include/resolv.h, mdk-stage1/dietlibc/lib/bsearch.c,
- mdk-stage1/dietlibc/libstdio/fseeko64.c,
- mdk-stage1/dietlibc/libcruft/pwent.c,
- mdk-stage1/dietlibc/lib/strcasecmp.c,
- mdk-stage1/dietlibc/libcruft/getgrnam_r.c,
- mdk-stage1/dietlibc/syscalls.c/getrusage.c,
- mdk-stage1/dietlibc/libpthread/CHANGES, mdk-stage1/dietlibc/i386/log.S,
- mdk-stage1/dietlibc/lib/sigsuspend.c,
- mdk-stage1/dietlibc/alpha/lseek64.S,
- mdk-stage1/dietlibc/syscalls.c/mprotect.c,
- mdk-stage1/dietlibc/sparc/shmat.c,
- mdk-stage1/dietlibc/syscalls.c/_newselect.c,
- mdk-stage1/dietlibc/i386/strncmp.S,
- mdk-stage1/dietlibc/syscalls.s/setfsuid32.S,
- mdk-stage1/dietlibc/libcruft/getspent.c,
- mdk-stage1/dietlibc/i386/recv.S,
- mdk-stage1/dietlibc/librpc/pmap_getmaps.c,
- mdk-stage1/dietlibc/syscalls.c/setrlimit.c,
- mdk-stage1/dietlibc/ppc/__testandset.S,
- mdk-stage1/dietlibc/threadsafe.sh,
- mdk-stage1/dietlibc/syscalls.s/__pwrite.S,
- mdk-stage1/dietlibc/libugly/setenv.c,
- mdk-stage1/dietlibc/libugly/iconv_open.c,
- mdk-stage1/dietlibc/include/arpa/inet.h,
- mdk-stage1/dietlibc/include/alloca.h, mdk-stage1/dietlibc/lib/memrchr.c,
- mdk-stage1/dietlibc/lib/strtoul.c,
- mdk-stage1/dietlibc/syscalls.s/epoll_wait.S,
- mdk-stage1/dietlibc/syscalls.c/getgid.c,
- mdk-stage1/dietlibc/libcruft/mktemp.c,
- mdk-stage1/dietlibc/libugly/wtent.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigsuspend.S,
- mdk-stage1/dietlibc/libcruft/__end_parse.c,
- mdk-stage1/dietlibc/syscalls.s/adjtimex.S,
- mdk-stage1/dietlibc/libstdio/fprintf.c,
- mdk-stage1/dietlibc/libdl/README, mdk-stage1/dietlibc/include/regex.h,
- mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c,
- mdk-stage1/dietlibc/i386/exp2.S, mdk-stage1/dietlibc/i386/mmap.S,
- mdk-stage1/dietlibc/libcruft/alphasort.c,
- mdk-stage1/dietlibc/syscalls.c/umask.c,
- mdk-stage1/dietlibc/librpc/clnt_generic.c,
- mdk-stage1/dietlibc/syscalls.s/getgroups32.S,
- mdk-stage1/dietlibc/i386/atol.S, mdk-stage1/dietlibc/lib/memmove.c,
- mdk-stage1/dietlibc/sparc/pipe.S,
- mdk-stage1/dietlibc/include/sys/ucontext.h,
- mdk-stage1/dietlibc/include/daemon.h,
- mdk-stage1/dietlibc/lib/__stat64_cvt.c,
- mdk-stage1/dietlibc/liblatin1/latin1-isgraph.c,
- mdk-stage1/dietlibc/libcruft/inet_ntop.c,
- mdk-stage1/dietlibc/include/getopt.h,
- mdk-stage1/dietlibc/libugly/openpty.c,
- mdk-stage1/dietlibc/include/math.h,
- mdk-stage1/dietlibc/libcruft/dnscruft4.c,
- mdk-stage1/dietlibc/lib/remove.c, mdk-stage1/dietlibc/libugly/isleap.c,
- mdk-stage1/dietlibc/include/sys/mips-ioctl.h,
- mdk-stage1/dietlibc/include/sys/sendfile.h,
- mdk-stage1/dietlibc/syscalls.s/getresgid32.S,
- mdk-stage1/dietlibc/include/netinet/ip_icmp.h,
- mdk-stage1/dietlibc/lib/atoll.c,
- mdk-stage1/dietlibc/syscalls.s/syslog.S,
- mdk-stage1/dietlibc/lib/sigqueueinfo.c,
- mdk-stage1/dietlibc/libcruft/__prepare_parse.c,
- mdk-stage1/dietlibc/lib/getpeername.c,
- mdk-stage1/dietlibc/libcruft/getopt_long.c,
- mdk-stage1/dietlibc/include/sys/ipc.h,
- mdk-stage1/dietlibc/i386/setsockopt.S,
- mdk-stage1/dietlibc/libstdio/fputc.c, mdk-stage1/dietlibc/lib/rand.c,
- mdk-stage1/dietlibc/alpha/sigaction.c,
- mdk-stage1/dietlibc/include/sys/gmon_out.h,
- mdk-stage1/dietlibc/libstdio/vfprintf.c,
- mdk-stage1/dietlibc/alpha/signal.S,
- mdk-stage1/dietlibc/libugly/getservent_r.c,
- mdk-stage1/dietlibc/i386/socketcall.S,
- mdk-stage1/dietlibc/lib/cfsetispeed.c,
- mdk-stage1/dietlibc/alpha/Makefile.add,
- mdk-stage1/dietlibc/include/net/if.h,
- mdk-stage1/dietlibc/lib/recvfrom.c,
- mdk-stage1/dietlibc/libstdio/fgetc.c, mdk-stage1/dietlibc/include/ftw.h,
- mdk-stage1/dietlibc/libcruft/mkdtemp.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname2_r.c,
- mdk-stage1/dietlibc/sparc/clone.S, mdk-stage1/dietlibc/lib/labs.c,
- mdk-stage1/dietlibc/syscalls.c/getcwd.c,
- mdk-stage1/dietlibc/lib/shmat.c, mdk-stage1/dietlibc/librpc/xdr_stdio.c,
- mdk-stage1/dietlibc/syscalls.c/mremap.c,
- mdk-stage1/dietlibc/libshell/basename.c,
- mdk-stage1/dietlibc/lib/memccpy.c,
- mdk-stage1/dietlibc/libugly/getservbyport.c,
- mdk-stage1/dietlibc/lib/strtoull.c,
- mdk-stage1/dietlibc/libcruft/getgrgid.c,
- mdk-stage1/dietlibc/syscalls.c/symlink.c,
- mdk-stage1/dietlibc/librpc/auth_unix.c,
- mdk-stage1/dietlibc/libugly/getaddrinfo.c,
- mdk-stage1/dietlibc/include/termios.h,
- mdk-stage1/dietlibc/include/strings.h,
- mdk-stage1/dietlibc/syscalls.c/open.c, mdk-stage1/dietlibc/dyn_stop.c,
- mdk-stage1/dietlibc/lib/__truncate64.c, mdk-stage1/dietlibc/lib/execv.c,
- mdk-stage1/dietlibc/libdl/elf_hash.c,
- mdk-stage1/dietlibc/include/sys/param.h,
- mdk-stage1/dietlibc/syscalls.c/read.c,
- mdk-stage1/dietlibc/libcrypt/md5crypt.c,
- mdk-stage1/dietlibc/include/sys/hppa-ioctl.h,
- mdk-stage1/dietlibc/syscalls.s/fdatasync.S,
- mdk-stage1/dietlibc/libcruft/spbuf.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigsuspend.S,
- mdk-stage1/dietlibc/syscalls.s/errno.S,
- mdk-stage1/dietlibc/syscalls.s/setfsgid.S,
- mdk-stage1/dietlibc/syscalls.c/setuid.c,
- mdk-stage1/dietlibc/librpc/clnt_raw.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setstacksize.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_init.c,
- mdk-stage1/dietlibc/librpc/xdr_mem.c,
- mdk-stage1/dietlibc/syscalls.s/n_sigpending.S,
- mdk-stage1/dietlibc/lib/sigaction.c, mdk-stage1/dietlibc/i386/listen.S,
- mdk-stage1/dietlibc/libstdio/stdout.c,
- mdk-stage1/dietlibc/libdl/_dl_main.c,
- mdk-stage1/dietlibc/lib/if_nameindex.c,
- mdk-stage1/dietlibc/syscalls.s/truncate64.S,
- mdk-stage1/dietlibc/include/sys/alpha-ioctl.h,
- mdk-stage1/dietlibc/binshstr.h, mdk-stage1/dietlibc/libcruft/res_init.c,
- mdk-stage1/dietlibc/libpthread/pthread_detach.c,
- mdk-stage1/dietlibc/libpthread/pthread_internal.c,
- mdk-stage1/dietlibc/README, mdk-stage1/dietlibc/libcruft/__parse_nws.c,
- mdk-stage1/dietlibc/lib/readdir64.c, mdk-stage1/dietlibc/i386/tan.S,
- mdk-stage1/dietlibc/syscalls.c/getpriority.c,
- mdk-stage1/dietlibc/libcruft/herrno_location.c,
- mdk-stage1/dietlibc/lib/shmctl.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_unlock.c,
- mdk-stage1/dietlibc/librpc/xdr_rec.c,
- mdk-stage1/dietlibc/i386/strncpy.S,
- mdk-stage1/dietlibc/libpthread/pthread_sys_tcdrain.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_destroy.c,
- mdk-stage1/dietlibc/syscalls.s/setuid32.S,
- mdk-stage1/dietlibc/lib/__v_printf.c,
- mdk-stage1/dietlibc/libugly/gethostent.c,
- mdk-stage1/dietlibc/syscalls.s/epoll_create.S,
- mdk-stage1/dietlibc/include/rpc/rpc_msg.h,
- mdk-stage1/dietlibc/lib/isatty.c,
- mdk-stage1/dietlibc/syscalls.s/msync.S,
- mdk-stage1/dietlibc/include/sys/mtio.h, mdk-stage1/dietlibc/syscalls.h,
- mdk-stage1/dietlibc/lib/memcmp.c, mdk-stage1/dietlibc/lib/toupper.c,
- mdk-stage1/dietlibc/syscalls.s/epoll_ctl.S,
- mdk-stage1/dietlibc/include/sys/sysmacros.h,
- mdk-stage1/dietlibc/include/sys/sysinfo.h,
- mdk-stage1/dietlibc/librpc/clnt_simple.c,
- mdk-stage1/dietlibc/syscalls.s/madvise.S,
- mdk-stage1/dietlibc/libugly/getservbyport_r.c,
- mdk-stage1/dietlibc/lib/vfork.c,
- mdk-stage1/dietlibc/libcruft/getopt_data.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_open.c,
- mdk-stage1/dietlibc/lib/isalpha.c, mdk-stage1/dietlibc/lib/pwrite.c,
- mdk-stage1/dietlibc/lib/sigfillset.c,
- mdk-stage1/dietlibc/libcruft/getpwent_r.c,
- mdk-stage1/dietlibc/i386/log1p.S, mdk-stage1/dietlibc/lib/listen.c,
- mdk-stage1/dietlibc/lib/strncpy.c, mdk-stage1/dietlibc/include/glob.h,
- mdk-stage1/dietlibc/linuxnet.h, mdk-stage1/dietlibc/lib/__v_scanf.c,
- mdk-stage1/dietlibc/include/sys/epoll.h,
- mdk-stage1/dietlibc/lib/strcmp.c,
- mdk-stage1/dietlibc/libpthread/pthread_mutex_destroy.c,
- mdk-stage1/dietlibc/libdl/_dl_int.h,
- mdk-stage1/dietlibc/include/sys/mount.h,
- mdk-stage1/dietlibc/libstdio/fseeko.c,
- mdk-stage1/dietlibc/libpthread/pthread_sys_waitpid.c,
- mdk-stage1/dietlibc/include/rpc/clnt.h,
- mdk-stage1/dietlibc/lib/socket.c,
- mdk-stage1/dietlibc/libugly/getnameinfo.c,
- mdk-stage1/dietlibc/libpthread/pthread_attr_setdetachstate.c,
- mdk-stage1/dietlibc/include/dietref.h, mdk-stage1/dietlibc/dietstdarg.h,
- mdk-stage1/dietlibc/libugly/strftime.c,
- mdk-stage1/dietlibc/i386/getsockname.S, mdk-stage1/dietlibc/i386/sin.S,
- mdk-stage1/dietlibc/libcruft/getpass.c,
- mdk-stage1/dietlibc/include/pty.h, mdk-stage1/dietlibc/lib/abort.c,
- mdk-stage1/dietlibc/syscalls.s/stime.S,
- mdk-stage1/dietlibc/lib/shutdown.c, mdk-stage1/dietlibc/i386/exp.S,
- mdk-stage1/dietlibc/include/sys/soundcard.h,
- mdk-stage1/dietlibc/include/sys/klog.h,
- mdk-stage1/dietlibc/sparc/fork.S,
- mdk-stage1/dietlibc/libpthread/pthread_setschedparam.c,
- mdk-stage1/dietlibc/i386/sincos.S, mdk-stage1/dietlibc/lib/readdir.c,
- mdk-stage1/dietlibc/lib/sbrk.c, mdk-stage1/dietlibc/syscalls.c/unlink.c,
- mdk-stage1/dietlibc/include/sys/reboot.h,
- mdk-stage1/dietlibc/i386/sqrtl.S, mdk-stage1/dietlibc/syscalls.c/time.c,
- mdk-stage1/dietlibc/lib/vfprintf.c,
- mdk-stage1/dietlibc/syscalls.c/getsid.c,
- mdk-stage1/dietlibc/syscalls.c/chmod.c,
- mdk-stage1/dietlibc/lib/msgctl.c,
- mdk-stage1/dietlibc/syscalls.c/rmdir.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigaction.S,
- mdk-stage1/dietlibc/i386/strcasecmp.S, mdk-stage1/dietlibc/i386/asinh.S,
- mdk-stage1/dietlibc/lib/cfgetospeed.c,
- mdk-stage1/dietlibc/libcruft/gethostbyname2.c,
- mdk-stage1/dietlibc/libstdio/tmpfile.c,
- mdk-stage1/dietlibc/include/rpc/pmap_clnt.h,
- mdk-stage1/dietlibc/syscalls.s/getresuid.S,
- mdk-stage1/dietlibc/syscalls.s/n_sigprocmask.S, mdk-stage1/dietlibc/FAQ,
- mdk-stage1/dietlibc/i386/ipow.S,
- mdk-stage1/dietlibc/liblatin1/latin1-iscntrl.c,
- mdk-stage1/dietlibc/libpthread/pthread_cond_init.c,
- mdk-stage1/dietlibc/include/limits.h, mdk-stage1/dietlibc/lib/putenv.c,
- mdk-stage1/dietlibc/syscalls.s/init_module.S,
- mdk-stage1/dietlibc/liblatin1/latin1-isupper.c,
- mdk-stage1/dietlibc/syscalls.s/setgid32.S,
- mdk-stage1/dietlibc/lib/__ftruncate64.c,
- mdk-stage1/dietlibc/lib/islower.c, mdk-stage1/dietlibc/i386/atan.S,
- mdk-stage1/dietlibc/include/paths.h, mdk-stage1/dietlibc/i386/__half.S,
- mdk-stage1/dietlibc/include/sys/wait.h,
- mdk-stage1/dietlibc/librpc/pmap_prot2.c,
- mdk-stage1/dietlibc/librpc/pmap_clnt.c,
- mdk-stage1/dietlibc/lib/isalnum.c, mdk-stage1/dietlibc/lib/speed.c,
- mdk-stage1/dietlibc/libstdio/fseek.c, mdk-stage1/dietlibc/lib/memcpy.c,
- mdk-stage1/dietlibc/syscalls.s/rt_sigprocmask.S,
- mdk-stage1/dietlibc/librpc/getrpcent.c,
- mdk-stage1/dietlibc/include/sysexits.h,
- mdk-stage1/dietlibc/syscalls.c/setreuid.c,
- mdk-stage1/dietlibc/lib/signal.c,
- mdk-stage1/dietlibc/include/sys/arm-ioctl.h,
- mdk-stage1/dietlibc/syscalls.s/llseek.S,
- mdk-stage1/dietlibc/syscalls.s/_llseek.S,
- mdk-stage1/dietlibc/syscalls.c/setregid.c,
- mdk-stage1/dietlibc/include/setjmp.h, mdk-stage1/dietlibc/AUTHOR,
- mdk-stage1/dietlibc/include/stddef.h,
- mdk-stage1/dietlibc/libugly/getprotobynumber.c,
- mdk-stage1/dietlibc/libdl/_dl_jump.S,
- mdk-stage1/dietlibc/include/stdarg.h,
- mdk-stage1/dietlibc/lib/getsockopt.c,
- mdk-stage1/dietlibc/syscalls.c/umount.c, mdk-stage1/dietlibc/lib/atol.c,
- mdk-stage1/dietlibc/syscalls.s/__pread.S,
- mdk-stage1/dietlibc/lib/isspace.c, mdk-stage1/dietlibc/lib/abs.c,
- mdk-stage1/dietlibc/lib/tcgetpgrp.c, mdk-stage1/dietlibc/i386/log2.S,
- mdk-stage1/dietlibc/libstdio/fgetc_unlocked.c,
- mdk-stage1/dietlibc/include/net/route.h, mdk-stage1/dietlibc/parselib.h,
- mdk-stage1/dietlibc/dietdns.h,
- mdk-stage1/dietlibc/syscalls.s/n_sigaction.S,
- mdk-stage1/dietlibc/lib/strxfrm.c,
- mdk-stage1/dietlibc/include/rpc/auth.h,
- mdk-stage1/dietlibc/lib/strtol.c, mdk-stage1/dietlibc/ppc/start.S,
- mdk-stage1/dietlibc/libcruft/getpwnam_r.c,
- mdk-stage1/dietlibc/lib/assert_fail.c, mdk-stage1/dietlibc/lib/htonl.c,
- mdk-stage1/dietlibc/include/sys/sem.h,
- mdk-stage1/dietlibc/include/sys/i386-ioctl.h,
- mdk-stage1/dietlibc/lib/if_nametoindex.c,
- mdk-stage1/dietlibc/lib/shmget.c, mdk-stage1/dietlibc/i386/libm2.S,
- mdk-stage1/dietlibc/include/rpc/auth_des.h,
- mdk-stage1/dietlibc/include/inttypes.h, mdk-stage1/dietlibc/lib/atoi.c,
- mdk-stage1/dietlibc/syscalls.c/lseek.c,
- mdk-stage1/dietlibc/libcruft/getpwuid.c,
- mdk-stage1/dietlibc/libugly/logging.c,
- mdk-stage1/dietlibc/librpc/svc_tcp.c,
- mdk-stage1/dietlibc/alpha/setjmp.S,
- mdk-stage1/dietlibc/libpthread/pthread_create.c,
- mdk-stage1/dietlibc/libcruft/dnscruft2.c,
- mdk-stage1/dietlibc/libcruft/getpwent.c,
- mdk-stage1/dietlibc/include/net/if_arp.h,
- mdk-stage1/dietlibc/alpha/clone.S,
- mdk-stage1/dietlibc/syscalls.s/environ.S,
- mdk-stage1/dietlibc/libpthread/pthread_sys_logging.c,
- mdk-stage1/dietlibc/COPYING,
- mdk-stage1/dietlibc/libpthread/pthread_errno.c: Merge in CVS dietlibc
- 0.21 for IA-64 and X86-64 support. However, drop the
- following architectures we currently don't support: arm, mips, mipsel,
- parisc,
- s390, sparc64.
-
- * mdk-stage1/dietlibc/Makefile: dynlinker/ directory is obsolete and dead
- here.
- Fixes for unmerged parts (contrib, examples)
- Merge in CVS dietlibc 0.21 for IA-64 and X86-64 support. However, drop
- the
- following architectures we currently don't support: arm, mips, mipsel,
- parisc,
- s390, sparc64.
-
- * mdk-stage1/newt/form.c: #include <string.h> for memset()
-
- * mdk-stage1/Makefile.common, mdk-stage1/Makefile: Use dietlibc on x86-64
- - Use minilibc on x86-64
- - mar requires bzlib to be built beforehand, especially if building
- with
- dietlibc
- - Nuke trickery to handle -DIET objects, everything is now built
- through
- the diet driver, defined into $(DIET)
-
- * mdk-stage1/dietlibc/include/sys/types.h,
- mdk-stage1/dietlibc/include/rpc/types.h: Define u_char et al. from
- <rpc/types.h>. The __dietlibc_u_char mechanism
- is here to ensure we are not redefining types, if we were to compile
- programs with -D_BSD_SOURCE (u_char et al. are defined in <sys/types.h>
- int that case).
- Merge in CVS dietlibc 0.21 for IA-64 and X86-64 support. However, drop
- the
- following architectures we currently don't support: arm, mips, mipsel,
- parisc,
- s390, sparc64.
-
- * mdk-stage1/dns.c: dietlibc defined __dietlibc__ macro. Also add check
- for __GLIBC__. If none
- of those C library is used, simply abort compilation.
-
-2003/02/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: remove unneeded pablo's change on RTL
-
- * ugtk2.pm: fix titi's perl checko
- internalize prepare_gtk2 in the BEGIN {} of ugtk2 already containing the
- Gtk2->init
-
- * lang.pm: small change thx to pablo
- reposition main and steps window when in RTL language
- allow to specify font size in output of l2pango_font
- destroy and recreate steps window when charset changed because gtk won't
- update the font size otherwise
-
- * install_gtk.pm: reposition main and steps window when in RTL language
- allow to specify font size in output of l2pango_font
- destroy and recreate steps window when charset changed because gtk won't
- update the font size otherwise
-
- * interactive/gtk.pm: internalize prepare_gtk2 in the BEGIN {} of ugtk2
- already containing the Gtk2->init
-
- * install_steps_gtk.pm: allow to specify font size in output of
- l2pango_font
- destroy and recreate steps window when charset changed because gtk won't
- update the font size otherwise
-
-2003/02/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: fixed small typo
-
- * install_steps_interactive.pm: define language direction
-
- * printer/printerdrake.pm: Removed N( ) around IP numbers, there is no
- point in "translating" them
-
- * steps.pm: changed "Choose your Language" -> "Language"
- shortened some strings to help them fit in the steps window
-
-2003/02/18 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm: /proc/partitions includes partition with type
- "empty" and a non-null size
- so add them for comparison
- - ensure someone can't set a mount point on a non formatted ntfs
- partition
- - remove the mount point when destructive resizing and isNonMountable
-
- * diskdrake/interactive.pm: fix ugly bug (the bug was introduced in
- diskdrake/interactive.pm 1.67)
- - ensure someone can't set a mount point on a non formatted ntfs
- partition
- - remove the mount point when destructive resizing and isNonMountable
-
- * interactive/gtk.pm: in {complete} or {canceled}, ensure giving a bad
- entry number to focus doesn't
- break (and log that something wrong happened)
-
- * interactive/newt.pm: simplify
- fix tree in newt (now handles default selected entry, and disallow using
- non-leaves)
-
- * diskdrake/resize_ntfs.pm (resize): do a test resize before doing the
- real one
-
- * any.pm: don't use tmpfs on /tmp if /tmp is a separate partition
- (anyway, all this is ugly, see with titi)
-
- * install2.pm: simplify
-
- * install_steps_interactive.pm (setRootPassword): display "Authentication"
- in Advanced
- display the release even when there is only one system to upgrade
- (asked by flepied & warly)
-
- * ugtk2.pm: the empty label in the HButtonBox had the same size as the
- buttons (since
- HButtonBox are always homogeneous), causing addUser in german not to fit
- on
- the screen. No good way to solve this :-(
-
- * fsedit.pm: /proc/partitions includes partition with type "empty" and a
- non-null size
- so add them for comparison
- better default partitioning
-
- * keyboard.pm: translate grp_toggles at display-time, not compile-time
-
- * Newt/Newt.xs: fix tree in newt (now handles default selected entry, and
- disallow using non-leaves)
-
- * tools/ddcprobe/ddcxinfos.c: catch bad HorizSync or VertRefresh
- (on Regis's monitor, it gives "62-0 Hz VertRefresh")
-
-2003/02/18 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - "BrowsePoll" support in the CUPS configuration dialog.
- - Fixes on error message windows in the dialog for printer sharing
- destinations.
-
- * scanner.pm: Replaced "my" by "our" for the declaration of the
- "ScannerDB" variable, so that /usr/bin/scannerdrake has access to it.
-
-2003/02/18 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * scanner.pm: perl_checker fixes
-
- * network/network.pm: perl_checker fix
-
- * drakxtools.spec: 9.1-1mdk
-
- * Xconfig/card.pm: bump version on fredl request
-
- * security/help.pm: resync with msec
-
-2003/02/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix bug occurring "if no sound card are
- detected AND the user selected things
- needing a sound card, propose a special case for ISA cards"
- (thanks to guran)
-
- * help.pm: some more fixes (thanks to Edward Cherlin and Reinout van
- Schouwen)
-
- * security/level.pm: replace %level_list with level_list() so that
- N("...") is called at runtime
- instead of compile-time
-
- * network/drakfirewall.pm: translate server {name} at display-time, not
- compile-time
-
-2003/02/17 François Pons <fpons@mandrakesoft.com>
-
- * fsedit.pm: given default size of / increased.
- increased /var container for suggestion (simple or with /usr).
-
- * commands.pm: fixed command insmod.
-
- * install_steps_interactive.pm: add a reboot if not enough free space is
- available for installation or upgrade.
-
-2003/02/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: fix translation of title: N() needs to be called
- after
- interactive->vnew has been called
-
- * steps.pm: fix pixel's commit: never display choosePackages and
- configureServices, instead of always
-
- * lang.pm: change %countries so that we really have translated countries
- (side effect of #1723 -> noticing this bug)
- disable mn until we have lang-mn.png
-
- * drakxtools.spec: grüh
-
- * standalone/drakpxe: fix translation of title by calling N() after
- interactive->vnew
-
-2003/02/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/hu.po: updated
- Estonian file
- updated pot file
-
- * share/po/help-de.pot, share/po/help-it.pot, share/po/help-fr.pot,
- share/po/help-es.pot: updated Estonian file
-
- * lang.pm: updated @locales list
-
-2003/02/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix bug occurring "if no sound card are
- detected AND the user selected things
- needing a sound card, propose a special case for ISA cards"
- (thanks to guran)
- ensure $o->{raw_X} is not destroyed when there is no modification done
- (since in that case
- Xconfig::main::configure_everything_or_configure_chooser() returns
- undef)
-
- * any.pm: add a checkbox "Force ACPI"
-
- * ugtk2.pm: fix pop_it...
-
- * steps.pm: don't show "Choose packages to install" nor "Configure
- services"
- (was still there in expert)
-
- * diskdrake/interactive.pm: remove debug code :-(
-
- * security/level.pm: replace %level_list with level_list() so that
- N("...") is called at runtime
- instead of compile-time
-
- * install_steps.pm: propagate /proc/cmdline acpi=xxx
- have acpi=off by default
-
- * rescue/list.x86_64, rescue/list.i386, rescue/list.ia64: replace
- ext2resize with resize2fs in rescue (already done in DrakX)
-
- * network/drakfirewall.pm: translate server {name} at display-time, not
- compile-time
-
- * help.pm: some more fixes (thanks to Edward Cherlin and Reinout van
- Schouwen)
- fix typos (thanks to Reinout van Schouwen)
-
-2003/02/17 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * security/help.pm: synced with msec
-
- * harddrake/data.pm: bump version number
-
-2003/02/17 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm: fix pop_it...
- hopefully final fix for pop_it
-
- * interactive/gtk.pm: also ->hide in when a button is clicked in
- standalone
-
- * any.pm: add a checkbox "Force ACPI"
-
- * install_steps_interactive.pm: ensure $o->{raw_X} is not destroyed when
- there is no modification done
- (since in that case
- Xconfig::main::configure_everything_or_configure_chooser() returns
- undef)
-
- * install2.pm: don't security::various::config_security_user() can fail,
- don't let it bother us
-
- * install_steps.pm: propagate /proc/cmdline acpi=xxx
- have acpi=off by default
-
- * Xconfig/xfree3.pm (is_fbdev): fix typo
-
- * Xconfig/xfree.pm (get_both): fix typo
-
- * Xconfig/resolution_and_depth.pm (to_string): simpler way to handle the
- "default" resolution of frame-buffer
-
-2003/02/17 Till Kamppeter <till@mandrakesoft.com>
-
- * drakxtools.spec: 9.1-0.34mdk
-
- * printer/main.pm:
- - Fixed bug of HP DeskJetb 990C being automatically installed even if
- there is already a queue for it
- - Fixed checking whether a device is known to CUPS
-
-2003/02/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/da.po, share/po/ta.po, share/po/sv.po,
- share/po/fi.po: updated Arabic, Dutch, Danish, Finnish, Swedish and
- Tamil files
-
- * standalone/harddrake2: correction for non-latin1 locales,
- made strings "Unknown" and "unknown" translatable in device info
-
- * share/po/ru.po: updated Russian and Arabic files
-
- * share/po/ar.po: updated Russian and Arabic files
- updated Arabic, Dutch, Danish, Finnish, Swedish and Tamil files
-
- * lang.pm: synchrnoization of locale names with what we ship.
- updated list of available kde langs
-
-2003/02/17 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: add module2description()
-
- * diskdrake/hd_gtk.pm: fix help popping all the time
-
- * ugtk2.pm: hopefully final fix for pop_it
- fix setting pop_it for wizard in standalone
-
- * interactive/gtk.pm: also ->hide in when a button is clicked in
- standalone
-
- * Xconfig/card.pm: use fbdev when the graphic card is unknown
-
- * install_steps_gtk.pm: enhance summary layout
-
- * install_steps_interactive.pm: better sound card description in summary
-
- * install2.pm: don't security::various::config_security_user() can fail,
- don't let it bother us
-
- * Xconfig/monitor.pm: warn when auto conf fail
-
- * Xconfig/xfree.pm (get_both): fix typo
-
- * Xconfig/xfree3.pm (is_fbdev): fix typo
-
- * Xconfig/resolution_and_depth.pm (to_string): simpler way to handle the
- "default" resolution of frame-buffer
-
-2003/02/17 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm:
- - Fixed bug of HP DeskJetb 990C being automatically installed even if
- there is already a queue for it
- - Fixed checking whether a device is known to CUPS
- - Restructured function "main()"
- - Made automatic queue setup being done during installation
- - Support for unknown printers in auto-detection and in automatic
- queue
- setup
- - Fixed determination of default printer
- - Fixed printer help page display
- - Fixed wait message in /usr/sbin/printerdrake
-
- * printer/detect.pm, printer/data.pm, standalone/printerdrake,
- printer/printerdrake.pm:
- - Restructured function "main()"
- - Made automatic queue setup being done during installation
- - Support for unknown printers in auto-detection and in automatic
- queue
- setup
- - Fixed determination of default printer
- - Fixed printer help page display
- - Fixed wait message in /usr/sbin/printerdrake
-
- * drakxtools.spec: 9.1-0.31mdk
-
-2003/02/17 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * network/netconnect.pm, network/ethernet.pm, standalone/drakconnect: perl
- generate undef indefinitely from the void
-
- * standalone/logdrake: this was just tested before
-
- * scanner.pm:
- - (get_usb_ids_for_port, updateScannerDBfromSane) : simplify
- - perl_checker fixes
-
- * drakxtools.spec: 9.1-0.33mdk
- fix #1718
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/tg.po, share/po/bs.po, share/po/uz.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/cs.po, share/po/bg.po,
- share/po/el.po, share/po/hu.po: simplify translator job by propaging
- pixel english typo fix
-
- * ugtk2.pm: in the old days, on cannot disable shrink1, resize2 or shrink2
- since they always were true
-
-2003/02/17 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: 9.1 rc1
-
-2003/02/16 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: summary written in gtk, isn't it nice (?)
-
- * install_steps_interactive.pm: handle "not configured" in summary_prompt
-
-2003/02/16 siegel
-
- * share/po/de.po: updates
-
-2003/02/16 alus
-
- * share/po/pl.po: updated
-
-2003/02/16 fabman
-
- * share/po/es.po: updated
-
-2003/02/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * lang.pm: log a bit more
-
- * install_steps_gtk.pm, install_gtk.pm: fix my breakage (broke non-latin1
- installs :/)
-
- * any.pm: clean $o->{locale}{langs}
-
-2003/02/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm, lang.pm: Enabled Arabic keyboard,
- added full list of countries listed in iso 3166,
- changed japanese charset->font for KDE,
- removed charset names no longer used
-
-2003/02/16 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: summary written in gtk, isn't it nice (?)
- - factorize "Help"-button handling
- - fix interactive_help_get_id (happily, it was no pb :)
-
- * help.pm: fix typo (thanks to Christophe Combelles)
-
- * install_steps_interactive.pm: handle "not configured" in summary_prompt
-
- * services.pm: fix rawdevices description (bug #1677)
-
- * diskdrake/hd_gtk.pm, interactive.pm, Xconfig/resolution_and_depth.pm,
- install_interactive.pm:
- - factorize "Help"-button handling
- - fix interactive_help_get_id (happily, it was no pb :)
-
-2003/02/15 alus
-
- * share/po/pl.po: mostly updated
- updated partially
- why this file wasn't regenerated?
-
-2003/02/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: don't mute the keyboard in ask_browse_tree_info (#1598)
-
- * printer/printerdrake.pm:
- - try to workaround #1581
- - fix the most code style-independant perl checker things
-
-2003/02/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po: updated Estonian, Norwegian and Vietnamese files
- updated po files
-
- * share/po/vi.po: updated Estonian, Norwegian and Vietnamese files
- updated pot files
- updated po files
-
- * share/po/id.po, share/po/gl.po, share/po/ja.po, share/po/hr.po,
- share/po/mt.po, share/po/ga.po, share/po/ko.po, share/po/lt.po,
- share/po/he.po, share/po/is.po, share/po/it.po, share/po/lv.po,
- share/po/hu.po: updated pot files
-
- * share/po/ar.po: updated remaining po files
- updated po files
-
- * share/po/pt_BR.po, share/po/br.po, share/po/be.po, share/po/uk.po,
- share/po/fi.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/tg.po, share/po/bs.po, share/po/uz.po, share/po/wa.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/fr.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po: updated po files
-
- * share/po/sk.po, share/po/ru.po, share/po/th.po, share/po/sl.po,
- share/po/tr.po, share/po/sv.po, share/po/sr.po, share/po/sp.po,
- share/po/ro.po, share/po/ta.po, share/po/sq.po, share/po/nl.po: updated
- remaining po files
-
- * share/po/no.po: updated Estonian, Norwegian and Vietnamese files
- updated remaining po files
-
-2003/02/15 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: fix gc's typo
-
-2003/02/15 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/scannerdrake: Fixed bug in setting up multiple scanners at
- once.
-
-2003/02/14 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm, standalone/scannerdrake: Improved manual scanner
- configuration, bug fixes.
-
- * standalone.pm: Updated "Usage:" message for Scannerdrake.
-
-2003/02/14 alus
-
- * share/po/pl.po: fixed
-
-2003/02/14 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * drakxtools.spec: 0.30mdk
-
- * standalone/drakperm: o Gtk2
- o 'add a rule' works again
- o 'edit rule' too
- o get_rights get all rights, not just a few
- o little cleanup (more to come)
-
-2003/02/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: okcehc lrep (hebrew feeling)
- wizard: free memory
- add a frame to the wizard's outline
- honour 9.1 theme title of windows: no icon, text to the left
-
- * share/themes-galaxy.rc: adapt theme: grey for selection's background, no
- inverse video on the selected text
-
- * pixmaps/services.png, pixmaps/X.png, pixmaps/bootloader.png,
- pixmaps/language.png, pixmaps/summary.png, pixmaps/security.png,
- pixmaps/partition.png, pixmaps/keyboard.png, pixmaps/mouse.png,
- pixmaps/rootpasswd.png, steps.pm, pixmaps/bootdisk.png,
- pixmaps/harddrive.png, install2.pm, pixmaps/user.png, pixmaps/exit.png,
- pixmaps/network.png: honour 9.1 theme title of windows: no icon, text to
- the left
-
- * install_gtk.pm: cleanup
- fix default_theme always responding 'galaxy'
- - update steps window to 9.1 theme (blue/white bullets)
- - don't destroy steps window between each step => better looking
-
- * install_steps_gtk.pm, pixmaps/steps_off.png, pixmaps/steps_on.png:
- - update steps window to 9.1 theme (blue/white bullets)
- - don't destroy steps window between each step => better looking
-
- * install_any.pm: install the locales-xx package for the selected country
-
- * share/po/fr.po: fix misc
-
-2003/02/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po, share/po/DrakX.pot: updated pot file
-
-2003/02/14 Pixel <pixel@mandrakesoft.com>
-
- * standalone/draksec: cleanup security::level, hopefully the **** draksec
- still works
-
- * security/level.pm: cleanup security::level, hopefully the **** draksec
- still works
- fix errors (due to previous commit)
- create security::level::to_string()
-
- * install_steps.pm: remove unneeded msec related actions (those are done
- in msec)
- simpler way to detect broken alternatives. It works for symlinks to
- symlinks,
- eg: rvi -> /bin/vi -> /etc/alternatives/vi -> /bin/vim-minimal
- use $::prefix
-
- * install_steps_interactive.pm: add "Security level" in summary
- - re-indent summary entries
- - add group for summary entries
- (acceptLicense): do translate "Accept" and "Refuse"
- - add "Services" and "Firewall" in summary
- - rework a little summary & summary_prompt
- use $::prefix
- change order of entries in summary
-
- * install_steps_gtk.pm: toggle Details / No details (as suggested by Prabu
- Anand)
-
- * interactive.pm: in ask_browse_tree_info, have Next instead of Ok,
- Previous instead of Cancel when isWizard
-
- * install_any.pm, install2.pm: create install_any::set_security() and use
- it
-
- * network/drakfirewall.pm: install package shorewall only when the user
- wants a firewall
-
- * services.pm: use $::prefix
-
- * Makefile: themes/* is gone, no need to copy those files
-
-2003/02/14 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm, standalone/scannerdrake: Improved manual scanner
- configuration, bug fixes.
-
- * standalone.pm: Updated "Usage:" message for Scannerdrake.
-
-2003/02/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: when detected too little memory in ftp/http,
- inform user that he/she may try an nfs install
-
-2003/02/13 alus
-
- * share/po/pl.po: updated
-
-2003/02/13 fabman
-
- * share/po/es.po: updated Spanish translation
-
-2003/02/13 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: added tmdns zcip mandrake-galaxy galaxy-gnome
-
-2003/02/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/themes.rc, share/themes-mdk.rc, share/themes-galaxy.rc,
- share/list, share/themes-mdk-Desktop.rc, install_gtk.pm,
- share/themes-marble3d.rc, share/install.rc, install_steps_gtk.pm:
- - use nice new gnome theme by ln and fcrozat
- - remove old no more used themes
- - for doc team, provide an option so that we'll
- override some colors of the default theme
- (for B&W printing screeshots)
-
- * pixmaps/langs/lang-zh_CN.png, pixmaps/langs/lang-sl.png,
- pixmaps/langs/lang-hy.png, pixmaps/langs/lang-de.png,
- pixmaps/langs/lang-cy.png, pixmaps/langs/lang-it.png,
- pixmaps/langs/lang-eu.png, pixmaps/langs/lang-ca.png,
- pixmaps/langs/lang-sp.png, pixmaps/langs/lang-am.png,
- pixmaps/langs/lang-nb.png, pixmaps/langs/lang-gd.png,
- pixmaps/langs/lang-el.png, pixmaps/langs/lang-ia.png,
- pixmaps/langs/lang-pt_BR.png, pixmaps/langs/lang-sv.png,
- pixmaps/langs/lang-mi.png, pixmaps/langs/lang-bg.png,
- pixmaps/langs/lang-fo.png, pixmaps/langs/lang-kw.png,
- pixmaps/langs/lang-hu.png, pixmaps/langs/lang-ur.png,
- pixmaps/langs/lang-iu.png, pixmaps/langs/lang-az.png,
- pixmaps/langs/lang-mt.png, pixmaps/langs/lang-et.png,
- pixmaps/langs/lang-wa.png, pixmaps/langs/lang-sq.png,
- pixmaps/langs/lang-he.png, pixmaps/langs/lang-eo.png,
- pixmaps/langs/lang-ta.png, pixmaps/langs/lang-ga.png,
- pixmaps/langs/lang-sr.png, pixmaps/langs/lang-lt.png,
- pixmaps/langs/lang-fa.png, pixmaps/langs/lang-oc.png,
- pixmaps/langs/lang-ms.png, pixmaps/langs/lang-mk.png,
- pixmaps/langs/lang-ar.png, pixmaps/langs/lang-lv.png,
- pixmaps/langs/lang-zh_TW.png, pixmaps/langs/lang-is.png,
- pixmaps/langs/lang-be.png, pixmaps/langs/lang-fr.png,
- pixmaps/langs/lang-ro.png, pixmaps/langs/lang-hr.png,
- pixmaps/langs/lang-en_GB.png, pixmaps/langs/lang-sk.png,
- pixmaps/langs/lang-uk.png, pixmaps/langs/lang-br.png,
- pixmaps/langs/lang-en_US.png, pixmaps/langs/lang-bs.png,
- pixmaps/langs/lang-nl.png, pixmaps/langs/lang-af.png,
- pixmaps/langs/lang-tr.png, pixmaps/langs/lang-gl.png,
- pixmaps/langs/lang-pt.png, pixmaps/langs/lang-uz.png,
- pixmaps/langs/lang-pl.png, pixmaps/langs/lang-id.png,
- pixmaps/langs/lang-yi.png, pixmaps/langs/lang-fi.png,
- pixmaps/langs/lang-ka.png, pixmaps/langs/lang-ru.png,
- pixmaps/langs/lang-nn.png, pixmaps/langs/lang-gv.png,
- pixmaps/langs/lang-th.png, pixmaps/langs/lang-cs.png,
- pixmaps/langs/lang-ko.png, pixmaps/langs/lang-tg.png,
- pixmaps/langs/lang-tt.png, pixmaps/langs/lang-da.png,
- pixmaps/langs/lang-ja.png, pixmaps/langs/lang-vi.png,
- pixmaps/langs/lang-es.png: invert video the images since the new theme
- will be printing black text on white background
-
- * install2.pm:
- - add option 'theme' to allow specifying a theme
- - add option 'doc' to specify that we should override the default
- theme with values well suited for printing screenshots on a B&W printer
-
- * ugtk2.pm: remove shape of windows
-
- * install_any.pm: die if getAndSaveFile failed, so that it will be easier
- to debug
- if we have this problem..
-
- * install_steps_interactive.pm: don't allow going back from
- accept_licenser to select_language, hence allow removing langs images
- before downloading huge CJK fonts
-
- * mdk-stage1/network.c: when detected too little memory in ftp/http,
- inform user that he/she may try an nfs install
-
- * lang.pm: don't allow going back from accept_licenser to select_language,
- hence allow removing langs images before downloading huge CJK fonts
- gc sux: install_any is not available in drakxtools
-
-2003/02/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
- * share/po/nl.po, share/po/et.po, share/po/fi.po: updated Arabic, Dutch,
- Estonian and Finnish files
-
- * share/po/ar.po: updated Arabic, Dutch, Estonian and Finnish files
- updated Arabic file
-
-2003/02/13 Pixel <pixel@mandrakesoft.com>
-
- * share/po/help-de.pot, share/po/help-it.pot, share/po/help-fr.pot,
- share/po/help-es.pot: minor changes (update from xml)
- new help from xml
-
- * network/network.pm, modules/interactive.pm, ugtk2.pm,
- diskdrake/interactive.pm, services.pm, security/level.pm,
- diskdrake/hd_gtk.pm, printer/printerdrake.pm:
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
-
- * install_steps_gtk.pm:
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- - {interactive_help} is a function returning text, it doesn't need to
- do the help window
- - drop global interactive_help during install. Will be done per
- ->ask_*
-
- * share/po/help_xml2pm.pl: no need for "empty" id anymore
- - adapt to new drakx-chapter.xml (esp. handle <variablelist> tags)
- - replace __ with N_
- - add "our" for "%steps"
-
- * interactive.pm: fix ask_warn(), really dont make it pop
- don't force pop_it on ask_warn's
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- add ask_yesorno_, ask_okcancel_, ask_warn_, ask_from_listf_raw (to allow
- help)
-
- * network/modem.pm, network/isdn.pm, network/ethernet.pm, network/adsl.pm,
- network/tools.pm:
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- add CVS $Id
-
- * help.pm: minor changes (update from xml)
- no need for "empty" id anymore
- fix typo (from xml)
- new help from xml
-
- * interactive/gtk.pm: fix ask_warn(), really dont make it pop
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- - {interactive_help} is a function returning text, it doesn't need to
- do the help window
- - drop global interactive_help during install. Will be done per
- ->ask_*
-
- * standalone/fileshareset: cleanup
-
- * Makefile: fix typo
- use PerlIO-gzip
-
- * c/Makefile: at last fix the culprit for the dreaded "relocation error"
- (esp. occured when the glibc changed)
-
- * harddrake/sound.pm:
- - {interactive_help} is a function returning text, it doesn't need to
- do the help window
- - drop global interactive_help during install. Will be done per
- ->ask_*
-
- * Xconfig/card.pm, Xconfig/main.pm, Xconfig/resolution_and_depth.pm,
- Xconfig/monitor.pm: fix and some more Help
-
- * Xconfig/various.pm, install_interactive.pm, any.pm: fix and some more
- Help
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
-
- * install_steps_interactive.pm:
- - fix calling configureTimezone
- - have country before timezone (gc wants it that way...)
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- don't use $_total, use $total_ instead
-
- * standalone/drakboot, commands: make perl_checker happy
-
- * standalone/drakupdate_fstab: help perl_checker
-
- * share/list: use PerlIO-gzip
-
- * network/netconnect.pm:
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
- add cvs $Id
-
- * install_steps.pm: have supermount back by default (at least when the
- security level < 4)
- - set_help is deprecated
- - it is replaced by interactive_help_id on each ask_*
- - many set_help do not have any correspondance in help.pm (drakxid-*),
- those are commented for now
-
-2003/02/13 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mouse.pm: Mouse button emulation. Clarify L-Command, add Enter. (Ben
- Reser)
-
-2003/02/13 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/scannerdrake: Fixed typo.
- Improved handling and structure of scanner database
- - Scanners with multiple ports are supported now
- - Fully automatic build of the scanner database, including lines for
- configuration files
- - Fixed "SnapScan" <-> "snapscan" bug
- - Some HP scanners had no manufacturer field. Fixed.
-
- * scanner.pm, handle_configs.pm: Improved handling and structure of
- scanner database
- - Scanners with multiple ports are supported now
- - Fully automatic build of the scanner database, including lines for
- configuration files
- - Fixed "SnapScan" <-> "snapscan" bug
- - Some HP scanners had no manufacturer field. Fixed.
-
-2003/02/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 9.1-0.29mdk
- 9.1-0.28mdk
-
- * services.pm (start_service_on_boot) prevent copying this style
- (do_not_start_service_on_boot) : simplify it
-
- * scanner.pm: no comment
- fix drakxtools build
-
-2003/02/12 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fix fpons sucks (at least one time).
- configure profile in order to avoid standalone networking tools to
- complain
- about unconfigured device.
-
- * standalone/drakpxe: updated to find an interface even when no profile
- are available.
-
- * pkgs.pm: prefer apache for drakpxe to find the right package.
-
-2003/02/12 gbeauchesne
-
- * rescue/list, share/list: rpm files are not set to live in /usr/lib/rpm,
- always.
-
-2003/02/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm:
- - ensure focus should not be needed anymore
- - support XSetInputFocus hackery
-
- * mdk-stage1/stdio-frontend.c: compile with -W
-
- * lang.pm: clean
- add missing pango rendering modules
- in ramdisk, do download additional fonts if needed (fixes problems with
- CJK languages and namely #1098)
-
- * share/fonts.tar.bz2: CJK fonts can now be pcf.gz, hopefully since they
- will be too large for ramdisks :(
-
- * tools/make_mdkinst_stage2, share/list: add missing pango rendering
- modules
- in ramdisk, do download additional fonts if needed (fixes problems with
- CJK languages and namely #1098)
-
-2003/02/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: Updated
- pot file
-
-2003/02/12 Pixel <pixel@mandrakesoft.com>
-
- * harddrake/sound.pm: use {interactive_help}
-
- * any.pm, install_steps_gtk.pm, diskdrake/interactive.pm, run_program.pm,
- install_steps_auto_install.pm, install_steps_stdio.pm,
- network/netconnect.pm, modules.pm, raid.pm, install_steps_newt.pm,
- commands.pm, partition_table.pm: perl_checker compliance ("ref" now need
- parentheses in many case)
-
- * interactive.pm, interactive/gtk.pm: allow {interactive_help} per dialog
- boxes instead of global
- perl_checker compliance ("ref" now need parentheses in many case)
-
- * install_steps.pm, install_steps_interactive.pm: rework summary() (esp.
- to allow a gtk frontend)
- perl_checker compliance ("ref" now need parentheses in many case)
-
- * services.pm: cleanup starts_on_boot()
-
- * install2.pm: rework summary() (esp. to allow a gtk frontend)
-
- * ugtk2.pm: don't set pop_it when the window is hidden
- perl_checker compliance ("ref" now need parentheses in many case)
-
-2003/02/12 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm, services.pm, standalone/scannerdrake: Scannerdrake vastly
- improved
- - Use auto-detection methods of SANE
- - Do not ask the user to configure scanners which are already
- configured
- - Handle systems with more than one scanner correctly
- - Added ports of newer scanners (libusb, parallel, ...) to the port
- selector
- in manual setup
- - Main dialog showing all configured scanners
- - Full support for scanner sharing via SANE (server/client)
- - Support for USB scanner access via libusb
-
-2003/02/12 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakpxe: fix just stupid fpons sucks
-
- * drakxtools.spec: 9.1-0.27mdk
-
- * standalone/drakconnect:
- - clean up through ugtk2
- - enforce strict mode
- - give meaningful names to widget variables
- - fix embedding in mcc at last, aka going into expert mode does not
- fsck up
- the gui
- - display all configuration buttons (both internet and lan) the same
- way
- - fix doble variable declaration to MDK::Common::Globals
- - fix non obvious "not a CODE reference" errors when embedded
- (fortunately, gc will fix perl-GTK2 if this syntax is still
- authorized)
- - (configure_lan) : fix gtk+-2 port and remove old commented out
- debugging code
-
- * standalone/drakperm: perl_checker fixes
-
- * standalone/draksec: do not enfore default settings
-
-2003/02/11 Frederic Lepied <flepied@mandrakesoft.com>
-
- * Makefile.drakxtools: don't take lang subdir in pixmap
-
-2003/02/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_gtk.pm: format-a-la-tex the message telling that the
- system is low on resources
-
- * install_steps.pm: try to fix the $o->{lang} compat
- have compatibility with old $o->{lang} for not breaking existing auto
- install files
-
- * install_any.pm: reflect lang->locale changes in saving auto_inst.cfg
- file
-
- * lang.pm: no need to duplicate LC_MONETARY
- thx perl checko
- have compatibility with old $o->{lang} for not breaking existing auto
- install files
-
- * Makefile.drakxtools: have localedrake in /usr/bin rather than /usr/sbin
- (#1407)
-
- * share/gen_locales.pl: update to changes in lang.pm
-
-2003/02/11 Pixel <pixel@mandrakesoft.com>
-
- * standalone/lsnetdrake:
- - ensure log::l's don't appear on stderr
- - catch authentification errors
-
- * keyboard.pm: for GRP_TOGGLE'd keyboard layouts, have "us,XX" instead of
- simply "XX"
- (to have previous XFree's behaviour)
-
- * fsedit.pm, partition_table.pm: handle 0x7 partition table id specially
- since it can be both hpfs or ntfs.
- so adding 0x107 being really ntfs. hopefully this change won't break too
- much things
- (but things were already broken, since it assigned a mount point with
- type ntfs to
- some hpfs partitions) (fixes bug #1455)
-
- * partition_table/raw.pm: add "OS/2 boot manager" (see bug #1338)
-
- * share/diskdrake.rc:
- - have the "Windows" button blue
- - set xthickness = 1 and ythickness = 1 for buttons
- (so that non-colored buttons have the same feelings with the upcoming
- new
- theme)
-
- * Xconfig/card.pm: don't set AGPMode (see bug #707)
-
-2003/02/11 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * bootlook.pm: stop:
- - copying stude && useless trace around
- - reinventing the wheel: kill parse_etc_passwd() and use list_users()
- instead
-
- * standalone/harddrake2: no frame in standalone mode
-
- * standalone/drakperm: smoother gui
- - further ugtk2 cleanups
- - (row_setting_dialog) : fix implosion
- phase 1 of drakperm clean up through ugtk2
- - gtk2 port of dialogs (poulpy)
- - one callback cleanup (me):
- o enforce strict mode (aka kill jonathanries) and introuce
- a permission data structure.
- o no need to keep global references on widget we pack through
- symbolic references; this is only namespace pollution
-
-2003/02/10 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - help link can be non local (http, www connnections).
-
- * standalone/drakhelp:
- - s/link/path/
- - http connections handled.
-
-2003/02/10 Frederic Lepied <flepied@mandrakesoft.com>
-
- * network/netconnect.pm: reworded network restart string
-
- * network/ethernet.pm: added a text to describe the Zeroconf host name
- field
-
- * network/network.pm: corrected option handling and added hotplug checkbox
-
-2003/02/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: perl checko
-
- * tools/make_mdkinst_stage2: count space needed for the filesystem so that
- we don't end up with 3 mbytes of free space if /tmp was ext3
-
- * interactive/gtk.pm: two fixes thx to perl_checker, one among them being
- very important :)
- when displaying images in treeview, unref pixbufs right after their use
- so that we try to save some memory
-
- * lang.pm: perl checko files
-
-2003/02/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ar.po: updated Arabic file
-
-2003/02/10 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: ck hptraid, but discard the insmod error for it
- small cleanup
-
- * bootloader.pm: in lilo.conf, "unsafe" is incompatible with "table=..."
- (fixes bug #1382)
-
- * fs.pm, diskdrake/interactive.pm, install_steps_interactive.pm:
- - more precise message when formatting / fsck'ing / mounting
- partitions
- - hide passwords (for smb)
-
-2003/02/10 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * network/netconnect.pm, network/network.pm, network/ethernet.pm:
- perl_checker fixes
-
- * ugtk2.pm:
- - sort functions by name in export tags
- - (gtkset_name) introduce it for mcc and reuse it in
- create_box_with_title()
-
- * harddrake/sound.pm: cs4239 is managed by both "ad1848" and "snd-cs4236"
-
-2003/02/09 Pixel <pixel@mandrakesoft.com>
-
- * install_gtk.pm: do translate "System installation" and "System
- configuration" in steps window
-
-2003/02/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: when probing that we're in testing mode, print out
- the pid (since the probe is based on the pid and some recent machines
- seem to interact badly with that when in bad acpi mood)
-
- * mdk-stage1/Makefile: set version to 9.1
-
- * pixmaps/langs/lang-zh_CN.png, pixmaps/langs/lang-sl.png,
- pixmaps/langs/lang-hy.png, pixmaps/langs/lang-de.png,
- pixmaps/langs/lang-cy.png, pixmaps/langs/lang-it.png,
- pixmaps/langs/lang-eu.png, pixmaps/langs/lang-ca.png,
- pixmaps/langs/lang-sp.png, install_steps_interactive.pm,
- pixmaps/langs/lang-am.png, pixmaps/langs/lang-nb.png,
- pixmaps/langs/lang-gd.png, install_steps_newt.pm,
- pixmaps/langs/lang-el.png, pixmaps/langs/lang-ia.png,
- pixmaps/langs/lang-pt_BR.png, pixmaps/langs/lang-sv.png,
- pixmaps/langs/lang-mi.png, pixmaps/langs/lang-bg.png,
- pixmaps/langs/lang-fo.png, pixmaps/langs/lang-kw.png,
- pixmaps/langs/lang-hu.png, pixmaps/langs/lang-ur.png,
- pixmaps/langs/lang-iu.png, install_steps_auto_install.pm,
- pixmaps/langs/lang-az.png, standalone/drakhelp,
- pixmaps/langs/lang-mt.png, pixmaps/langs/lang-et.png,
- pixmaps/langs/lang-wa.png, pixmaps/langs/lang-sq.png,
- pixmaps/langs/lang-he.png, pixmaps/langs/lang-eo.png,
- pixmaps/langs/lang-ta.png, pixmaps/langs/lang-ga.png,
- pixmaps/langs/lang-sr.png, pixmaps/langs/lang-lt.png,
- pixmaps/langs/lang-fa.png, install_any.pm, pixmaps/langs/lang-oc.png,
- standalone/drakxtv, pixmaps/langs/lang-ms.png,
- pixmaps/langs/lang-mk.png, pixmaps/langs/lang-ar.png,
- pixmaps/langs/lang-lv.png, pixmaps/langs/lang-zh_TW.png,
- pixmaps/langs/lang-is.png, pixmaps/langs/lang-ro.png,
- pixmaps/langs/lang-be.png, pixmaps/langs/lang-fr.png, install_steps.pm,
- install_gtk.pm, pixmaps/langs/lang-hr.png, Makefile,
- pixmaps/langs/lang-en_GB.png, pixmaps/langs/lang-sk.png,
- install_steps_stdio.pm, pixmaps/langs/lang-uk.png,
- pixmaps/langs/lang-br.png, pixmaps/langs/lang-en_US.png, lang.pm,
- install2.pm, pixmaps/langs/lang-nl.png, pixmaps/langs/lang-bs.png,
- pixmaps/langs/lang-af.png, pixmaps/langs/lang-tr.png,
- pixmaps/langs/lang-pt.png, pixmaps/langs/lang-gl.png,
- standalone/localedrake, pixmaps/langs/lang-uz.png, any.pm,
- pixmaps/langs/lang-pl.png, pixmaps/langs/lang-id.png,
- pixmaps/langs/lang-yi.png, pixmaps/langs/lang-fi.png,
- pixmaps/langs/lang-ka.png, pixmaps/langs/lang-ru.png,
- pixmaps/langs/lang-nn.png, pixmaps/langs/lang-gv.png,
- pixmaps/langs/lang-th.png, pixmaps/langs/lang-cs.png,
- pixmaps/langs/lang-ko.png, pixmaps/langs/lang-tg.png, keyboard.pm,
- pixmaps/langs/lang-tt.png, pixmaps/langs/lang-da.png,
- pixmaps/langs/lang-ja.png, pixmaps/langs/lang-vi.png,
- pixmaps/langs/lang-es.png, timezone.pm: language/country selection
- change:
- - first install step is selection of your language, in your language;
- it uses images for that
- - language->country is probed, the selection of the country is
- possible
- if there was a problem, in the Summary step
- - in the $o big structure, we now use $o->{locale} which contains
- three keys: lang, country and utf8
- - lang.pm has been cleaned and rewritten a bit
- - keyboard probing now done only on language (because this step is
- at the beginning of the install)
- - timezone probing done on country, if use changes country before
- timezone in the Summary, re-probe timezone accordingly
-
- * rescue/tree/etc/issue: remove "cooker" from the issue of the rescue
- since we're
- aproaching the release candidates
-
- * install_steps_gtk.pm: say we're low on resources if we have less than 70
- Mb of RAM (was 60 Mb)
-
- * tools/make_mdkinst_stage2: the shitload of images for selecting
- languages in their languages needs a few additional inodes..
-
- * install_messages.pm: change address for errata to reflect the future 9.1
-
- * mdk-stage1/network.c: indent
-
- * interactive.pm, interactive/gtk.pm: add option advanced_state: if set to
- 1, force the "Advanced" part of the dialog to be opened initially
- add possibility to display images in tree-lists and bool-lists
-
- * mdk-stage1/config-stage1.h: ramdisk is enlarging, move the limit from 52
- Mb to 68 Mb (it won't work properly in gtk on a box with 64 Mb of
- memory..)
-
-2003/02/07 alus
-
- * share/po/pl.po: updated
-
-2003/02/07 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm:
- - DHCP & Zeroconf fixes for installation
- - fix '217.0.0.1 localhost' not written in /etc/hosts when using DHCP
-
- * standalone/drakfont:
- - full Gtk2
- - cleanup code (still much to do...)
-
- * drakxtools.spec: new version
-
-2003/02/07 fabman
-
- * share/po/es.po: updated Spanish translations
-
-2003/02/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/ca.po, share/po/da.po, share/po/tg.po, share/po/bs.po,
- share/po/uz.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
- * share/po/ar.po: updated Arabic file
- updated pot file
-
- * share/po/sv.po, share/po/cy.po: Updated Welsh and Swedish files
- updated pot file
-
- * printer/printerdrake.pm: Fixed English typo
-
- * share/po/et.po: updated po file
- updated pot file
-
- * standalone/drakedm: fixed English typo
-
-2003/02/07 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm: fix english typo (bug #1350)
-
-2003/02/06 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakhelp:
- - change package name to install
-
-2003/02/06 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * drakxtools.spec: new version
-
- * network/network.pm: avoid to mess up tmdns.conf file
- fix dhcp package installation
- fix zeroconf suckiness
-
-2003/02/06 fabman
-
- * share/po/es.po: updated translation
-
-2003/02/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/uz.po, share/po/de.po: Added start of Uzbek file; updated
- German file
-
-2003/02/06 Pixel <pixel@mandrakesoft.com>
-
- * interactive/gtk.pm: add "Help" button
-
- * install_steps_interactive.pm (setRootPassword): have the focus on the
- password field
-
- * any.pm (ask_users): focus the "name" field, and change the buttons name
- & place
-
- * install_steps_gtk.pm: have the focus on the help "Ok" button
- missing aewm-drakx causes pb when testing (perl going havoc?)
- add "Help" button
-
- * install_gtk.pm: remove create_big_help
-
- * ugtk2.pm: drop "F1" for help (since a "Help" button is now available)
- (create_okcancel): allow buttons on the left (for the "Help" button)
-
- * interactive/newt.pm: fix sizing in the scrolled window in 80x25
-
- * diskdrake/hd_gtk.pm: add "Help" button
- (filesystems_button_box): in the caption write "Windows" instead of
- "FAT"
- (since NTFS uses the same color)
-
-2003/02/06 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/detect.pm: Corrected call for "tryWrite" function.
-
-2003/02/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakedm: sanitize
- perl_checker fix (yeah, i was faster than perl_checko!)
- the result of David Sansome|Laurent Montel|Frederic Lepied|Davod
- Beidebs|Thierry Vignaud collision
-
- * Makefile.config: add drakedm
-
- * standalone/drakfloppy: fix floppy create :-)
-
-2003/02/04 François Pons <fpons@mandrakesoft.com>
-
- * network/adsl.pm: fixed small typo.
- add support for adiusbadsl 1.0.2 (using adictrl -i to find interface and
- using
- pppoa).
-
-2003/02/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/tg.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/sq.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
-2003/02/04 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm: don't ->set_modal during install
-
- * devices.pm: add "vcsa" (for brltty)
-
- * Makefile: add brltty help file
- wildcard * in share/list allowed to match multiple files, but not
- multiple directories
-
- * install2.pm: fix typo
- add brltty help file
- brltty support
-
- * tools/make_mdkinst_stage2, install_steps.pm, install_any.pm: brltty
- support
-
- * share/list: add brltty help file
- brltty support
-
- * share/rpmsrate: add brltty
- move packages from 3 to 4 (fix bug #1265)
-
-2003/02/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Use system configs when wrapped in mcc.
-
-2003/02/04 Till Kamppeter <till@mandrakesoft.com>
-
- * handle_configs.pm:
- - "Out-sourced" functions for config file handling into
- handle_configs.pm,
- it is used by both printerdrake and scannerdrake.
- - Improvements and fixes on CUPS daemon configuration by printerdrake.
-
- * printer/printerdrake.pm: Fixed auto-detection of a configured (but not
- started) network.
- - "Out-sourced" functions for config file handling into
- handle_configs.pm,
- it is used by both printerdrake and scannerdrake.
- - Improvements and fixes on CUPS daemon configuration by printerdrake.
-
- * printer/main.pm: Removed debug helper line.
- - "Out-sourced" functions for config file handling into
- handle_configs.pm,
- it is used by both printerdrake and scannerdrake.
- - Improvements and fixes on CUPS daemon configuration by printerdrake.
-
-2003/02/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/draksec:
- - fix get_check_default() and get_function_default() description
- - fix "check states were not saved if their value did not change (thus
- reverting it to default on disk)"
- - fix emebedding (no transcience when embedded)
- - fix "value get chop()-ed until it disapear and is reset to default"
- - log which security level is set and not only the switch
- killing latest remanent parts of christian "yeah baby, i'm piggy"
- work:
-
- - functions and checks listing :
- o rename get_functions() as list_functions() and
- get_default_checks() as list_checks(); this is both
- more homogenous and enable one to separate them from the
- get_(check|function)_(value|default) function group
- o regroup them
- o over simplify list_functions(): leave functions listing to msec
- (aka /usr/share/msec/level.<LEVEL>, assuming share/msec.py is
- always up to date, just don't care reparsing python code (this is
- plain stupid); if we cannot rely on msec, on who could we :-) ?
- o this allow to simplify msec gui so that we do not exclude stuff
- already excluded
- - remove config_check(), config_funtion(): replace them by:
- o set_check() and set_function() to store new values in data
- structure
- o apply_checks() and apply_functions() to save these new values,
- thus writing config files once and not twice the functions &
- checks count
- now, we always have a help entry and a default value but when fredl
- rename a
- check and forgot to remove it from /var/lib/msec/security.conf like
- CHECK_SUID_GROUP => CHECK_SGID, but hopefully, he'll fix msec
-
- * share/theme-editor.pl: update theme editor to current libDrakX api
-
- * drakxtools.spec: 9.1-0.22mdk
-
- * security/msec.pm: perl_checker fix
- - fix get_check_default() and get_function_default() description
- - fix "check states were not saved if their value did not change (thus
- reverting it to default on disk)"
- - fix emebedding (no transcience when embedded)
- - fix "value get chop()-ed until it disapear and is reset to default"
- - log which security level is set and not only the switch
- killing latest remanent parts of christian "yeah baby, i'm piggy"
- work:
-
- - functions and checks listing :
- o rename get_functions() as list_functions() and
- get_default_checks() as list_checks(); this is both
- more homogenous and enable one to separate them from the
- get_(check|function)_(value|default) function group
- o regroup them
- o over simplify list_functions(): leave functions listing to msec
- (aka /usr/share/msec/level.<LEVEL>, assuming share/msec.py is
- always up to date, just don't care reparsing python code (this is
- plain stupid); if we cannot rely on msec, on who could we :-) ?
- o this allow to simplify msec gui so that we do not exclude stuff
- already excluded
- - remove config_check(), config_funtion(): replace them by:
- o set_check() and set_function() to store new values in data
- structure
- o apply_checks() and apply_functions() to save these new values,
- thus writing config files once and not twice the functions &
- checks count
-
- * standalone/harddrake2: adapt to new mandrake_doc-drakxtools-* packages
-
-2003/02/03 alus
-
- * share/po/pl.po: Not too many entries in beta release?
-
-2003/02/03 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: dhcp/zeroconf stuff
-
-2003/02/03 florin
-
- * network/netconnect.pm: fix some drakgw behaviour
-
-2003/02/03 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: integrated chmouel fixes.
-
-2003/02/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/tg.po, share/po/bs.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/ar.po: updated Arabic file
- updated pot file
-
-2003/02/03 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pl, install_any.pm: do not eject cdrom when already removed
- at the end of install (bug #1235)
-
- * modules/parameters.pm: use run_program::get_stdout
-
- * standalone/icons/smbnfs_mounted.png,
- standalone/icons/smbnfs_default.png,
- standalone/icons/smbnfs_has_mntpoint.png: have the background fully
- transparent
-
- * pkgs.pm: prefer mdkkdm over kdebase-kdm
-
- * diskdrake/interactive.pm: make perl_checker happy
-
- * diskdrake/smbnfs_gtk.pm: cleanup
- port to Gtk2
-
- * install_steps_gtk.pm: fix test mode install when Xnest is not there
-
- * standalone/diskdrake: don't "use diskdrake::interactive", only require
- it when needed
-
- * Xconfig/test.pm: ensure the X test strings are translated
-
- * interactive/newt.pm: fix typo (for treelist)
-
- * standalone/keyboarddrake: make perl_checker happy
- translate keyboard names
-
- * install_steps.pm: remove yelp-pregenerate
-
-2003/02/03 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/draksec:
- - msec was altered to produce help suitable for formatAlaTeX()
- - use formatAlaTeX() to have nicer tooltips
-
- * docs/porting-ugtk: new obsolete func (thanks drakcronat)
-
- * share/po/fr.po: typo fix
-
- * security/msec.pm:
- - consolidate file names
- - remove unused variables
- - rename get_(default|value as load_(default|value)s and alter them so
- that config file are read only one time instead of one per option;
- data is stocked in package variable
- - thus get_default_checks() is quite a lot faster
- - alter get_(check|function)_(value|default) to use new data structure
- - fix check default reading
- - group default values reading and current values reading
- what's left: do the same thing for writing tomorow
-
- * security/help.pm:
- - msec was altered to produce help suitable for formatAlaTeX()
- - use formatAlaTeX() to have nicer tooltips
- auto-generated from msec/share/draksec_help.py libmsec and moved from
- msec to here so that draksec help'll get translated
- all changes must be done in soft/msec/share/libmsec.py !!!
-
- * drakxtools.spec: 9.1-0.21mdk (to be continued by pouly)
-
- * share/po/Makefile: remove drakpxe exception since fpons has at lease
- fixed "fpons sucks"
- in drakpxe
-
-2003/02/03 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm, network/ethernet.pm:
- - fix zeroconf support
- - cleanups
-
-2003/02/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cy.po: updated Welsh file
-
-2003/02/03 Pixel <pixel@mandrakesoft.com>
-
- * modules/parameters.pm: use run_program::get_stdout
-
-2003/02/03 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/draksec: sanitize gui (aka make it look nicer):
- - put the same help label on top of each msec options notebook pages
- and consolidate it
- - use gtkpack_ instead of gtkpack so that we can tell gtk+ that label
- must neither fill nor expand, only the packtable should
- display again the first notebook page
- if no default value, then do not print one (aka for cron checks)
- fix help system description.
- we should really use the camille/deush help system though.
- - perl_checker fixes
- - display sorted options (hey pixel, note that the last diff trunk
- with
- execessive () was not detected by perl_checker :-( )
-
- * modules/parameters.pm: pixelize(tm)
-
- * standalone/interactive_http/authorised_progs: draksec is not written to
- use interactive, thus cannot be used by http
- frontend
-
- * standalone/interactive_http/miniserv.init: sanitize draxktools server
- service script:
- - no gratuitous shell forking
- - now can be debugged through "sh -x"
- - use std shell service lib
- - make it print [OK] || [FAILLED]
-
- * ugtk2.pm: let simplify
-
-2003/02/02 alus
-
- * share/po/pl.po: updated
-
-2003/02/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ar.po: updated Arabic, Spanish, Finnish and Slovak files
- updated Arabic and Danish files
-
- * share/po/es.po, share/po/sk.po, share/po/fi.po: updated Arabic, Spanish,
- Finnish and Slovak files
-
- * share/po/da.po: updated Arabic and Danish files
-
-2003/02/02 Pixel <pixel@mandrakesoft.com>
-
- * printer/printerdrake.pm: move whatPrinter(), whatUsbport() and
- whatPrinterPort() out of detect_devices to printer::detect
- (it cleans up detect_devices, and won't hurt eyes anymore :)
- this change, together with .perl_checker skipping printer::* marks the
- style disagreement
- between printer/* and the rest of install
-
- * lang.pm, common.pm, install_interactive.pm: please perl_checker
-
- * printer/detect.pm, detect_devices.pm: move whatParport() to
- printer::detect
- move whatPrinter(), whatUsbport() and whatPrinterPort() out of
- detect_devices to printer::detect
- (it cleans up detect_devices, and won't hurt eyes anymore :)
- this change, together with .perl_checker skipping printer::* marks the
- style disagreement
- between printer/* and the rest of install
-
- * bootloader.pm: fix grub installed on {first_hd_device} instead of {boot}
- (bug #1199)
-
- * share/diskdrake.rc: NTFS is blue
-
- * partition_table.pm (adjust_local_extended): fix resizing local extended
-
- * install_gtk.pm, ugtk2.pm: ensure the window is big enough in 640x480:
- remove logo and steps window
-
- * .perl_checker: do not check printer::main, printer::printerdrake and
- printer::detect, too many warnings
-
- * install_steps_gtk.pm:
- - handle {vga16} in Xnest testing mode
- - fix weird bug due to missing aewm-drakx in test mode (??)
- - add Xnest feature when testing
- - cleanup and re-indent
-
-2003/02/02 siegel
-
- * share/po/de.po: some updates
-
-2003/02/02 Till Kamppeter <till@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: Fixed Foomatic
- installation done by installer.
-
-2003/02/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated Vietnamese, Estonian and Albanian files
- updated Vietnamese file
-
- * share/po/et.po, share/po/sq.po: updated Vietnamese, Estonian and
- Albanian files
-
-2003/02/01 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/data.pm, printer/printerdrake.pm:
- - Completed support for pre-compiled Foomatic PPDs.
- - Cleaning of mamufacturer names for menues and for comparing
- auto-dtected
- data against Foomatic centralized in one function.
- - Fixed file name in check for installed packages.
- - Fixed display of boolean options from native PostScript PPD files in
- the
- option setting dialog.
-
- * printer/main.pm:
- - Improved generation of printer list entries from
- manufacturer-supplied PostScript PPDs.
- - Completed support for pre-compiled Foomatic PPDs.
- - Cleaning of mamufacturer names for menues and for comparing
- auto-dtected
- data against Foomatic centralized in one function.
- - Fixed file name in check for installed packages.
- - Fixed display of boolean options from native PostScript PPD files in
- the
- option setting dialog.
-
-2003/01/31 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * install_steps_interactive.pm: be sure $o->{netcnx}{type} is set when
- using easy_dhcp
-
- * mdk-stage1/network.c: don't save hostname if intf->boot_proto ==
- BOOTPROTO_DHCP
-
- * network/ethernet.pm: zeroconf
-
- * drakxtools.spec: new version
-
- * ugtk2.pm: avoid poping
-
- * network/network.pm: more zeroconf configuration
-
-2003/01/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/he.po, share/po/sp.po, share/po/cy.po, share/po/da.po,
- share/po/ar.po, share/po/tg.po, share/po/bs.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/vi.po,
- share/po/ta.po, share/po/fr.po, share/po/sq.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/ca.po: updated pot file
- Fixed small error (missing "/" in menu entry)
-
- * standalone/drakbackup: fixed typo (drakbakup.conf -> drakbackup.conf)
-
-2003/01/31 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix poulpy
-
-2003/01/31 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * install_steps_interactive.pm: be sure $o->{netcnx}{type} is set when
- using easy_dhcp
-
- * mdk-stage1/network.c: don't save hostname if intf->boot_proto ==
- BOOTPROTO_DHCP
-
- * ugtk2.pm: avoid poping
-
-2003/01/31 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/resize_ntfs.pm: create diskdrake::resize_ntfs to factorize
- code
-
- * install_gtk.pm (createXconf): special case for "none" mouse device
- graphical layout change
-
- * install_steps_gtk.pm: handle pop_it more nicely: no need to precise
- pop_it when the wizard window already has a window,
- that way, two dialog boxes won't merge in the same window (which is
- dumb!)
- remove explicitly setting the size of advertising window
- (it wasn't setting the same size as the wizard mode size)
-
- * install_any.pm: fix typo
-
- * diskdrake/interactive.pm:
- - do not write_partitions when resizing & loosing data (not needed)
- - handle "cancel" on write_partitions
- fix typo (calling resize_fat::main instead of diskdrake::resize_ntfs)
- create diskdrake::resize_ntfs to factorize code
-
- * install_interactive.pm: fix "one big ntfs" resizing (in the limit case)
- small fixes
- add ntfs resize to the wizard
-
- * interactive/gtk.pm, diskdrake/hd_gtk.pm, ugtk2.pm: handle pop_it more
- nicely: no need to precise pop_it when the wizard window already has a
- window,
- that way, two dialog boxes won't merge in the same window (which is
- dumb!)
-
- * mouse.pm (detect): cleanup the value returned when only a wacom is found
-
- * install_steps_interactive.pm: fix poulpy
-
- * install_steps.pm: do "yelp-pregenerate -a" only once
-
-2003/01/31 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Faster switch between normal and expert mode (no re-read of the
- print
- queues).
- - Prepared for working with pre-compiled Foomatic PPDs.
-
-2003/01/31 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 3 logo
-
-2003/01/31 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm, diskdrake/resize_ntfs.pm: create
- diskdrake::resize_ntfs to factorize code
-
- * install_interactive.pm: add ntfs resize to the wizard
-
- * install_any.pm: fix typo
-
- * install_gtk.pm: graphical layout change
-
-2003/01/30 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: fixed progress bar
- too small.
- new image for floppy for 9.1
-
- * share/list: added pango-hebrew-xft.so for hebrew to be displayed
- (chmouel)
-
-2003/01/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tg.po: Added Tajiki file
-
- * share/po/cy.po: converted Welsh file to UTF-8
-
- * share/po/nl.po: updated Dutch file
-
-2003/01/30 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm: drop $o->{lnx4win} handling
- add isFat_or_NTFS() and use it where possible instead of isFat() since
- Windows
- is now using ntfs, not only Windows NT
-
- * install2.pm: drop $o->{lnx4win} handling
-
- * mdk-stage1/Makefile: remove other.img & usb.img, add hd_usb.img &
- network_gigabit_usb.img
-
- * Xconfig/xfree.pm (merge_values): allow get_monitors to work when xfree3
- is missing
-
- * interactive.pm (helper_separator_tree_to_tree): this new function helps
- transforming a
- flag {list} to a tree, using {separator}
-
- * interactive/newt.pm: perl_checker small fixes
- basic treelist handling (it leaks memory, but who cares, compared to gtk
- :)
-
- * any.pm, bootloader.pm, install_steps_interactive.pm,
- diskdrake/hd_gtk.pm, fsedit.pm, install_any.pm, partition_table.pm: add
- isFat_or_NTFS() and use it where possible instead of isFat() since
- Windows
- is now using ntfs, not only Windows NT
-
- * network/network.pm, network/ethernet.pm, install_steps_auto_install.pm,
- network/netconnect.pm, modules.pm: adapt to new category network/gigabit
- (which used to be in network/main)
-
- * Newt/Newt.xs: basic treelist handling (it leaks memory, but who cares,
- compared to gtk :)
-
-2003/01/30 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Conservation of option settings also for queues with PostScript PPD
- files
- or when switching between PostScript PPD file and Foomatic.
- - Fixed tree structure of main window in expert mode.
- - Several smaller bug fixes.
- - Display options devided in the groups defined in the PPD file.
- - For Foomatic PPDs the options in the "General" group are shown by
- default
- the rest when clicking "Advanced". When there ar no groups, the
- decision
- is done by a table of most commonly used option names.
- - Sort the displayed options of a queue with a non-Foomatic PPD file
- by the
- importance of the options.
- - Do not sort the values of an option, they are already conveniently
- sorted
- in the PPD files.
- - Removed some unnecessary re-reads of the printer option information.
- - Several fixes to run smoothly with Foomatic 2.9.x.
-
- * printer/data.pm:
- - Conservation of option settings also for queues with PostScript PPD
- files
- or when switching between PostScript PPD file and Foomatic.
- - Fixed tree structure of main window in expert mode.
- - Several smaller bug fixes.
-
-2003/01/30 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/harddrake2: translate topics (aka hw class names) in
- harddrake gui
-
- * drakxtools.spec: 9.1-0.19mdk
-
- * harddrake/data.pm: translate topics (aka hw class names) in harddrake
- gui
- - cosmetic fix for "drakconnect does not detect nvnet part of nvforce2
- chips"
- hint: their class is MEMORY_RAM :-( ...
- - btw, simplify unknown devices detection (merging tests regarding
- driver and
- media type)
- - move nforce system controllers in bridge class (which is renamed
- "bridges and
- system controllers" aka where we put stuff we've nothing to configure
- but we
- don't want to put them in controller so that users are not afraid) but
- nvnet
-
- * standalone/logdrake: on second thoughts, this is just simpler
- - perl_checker fixes
- - fix non embedded case :-(
-
-2003/01/30 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (helper_separator_tree_to_tree): this new function helps
- transforming a
- flag {list} to a tree, using {separator}
-
- * Newt/Newt.xs, interactive/newt.pm: basic treelist handling (it leaks
- memory, but who cares, compared to gtk :)
-
-2003/01/29 François Pons <fpons@mandrakesoft.com>
-
- * standalone/drakpxe: fixed perl_checker
-
- * network/netconnect.pm: fixed some perl_checker
-
-2003/01/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/pt.po: updated Portuguese and Danish files
-
- * keyboard.pm, lang.pm: switched some languages to UTF-8 (they use ascii
- only, so it shouldn't
- be noticed); changed a keyboard name to match name used by XFree86
-
-2003/01/29 Pixel <pixel@mandrakesoft.com>
-
- * share/list: ntfsresize feature added (not tested!)
-
- * detect_devices.pm, raid.pm: software raid (mdX) can go up to md31
-
- * diskdrake/hd_gtk.pm: don't set $::main_window during install
-
- * diskdrake/interactive.pm: fix various resize pbs:
- - write partition table *before* resizing when partition is enlarged
- - debug ntfsresize
- dumpe2fs call cleanup
- ntfsresize feature added (not tested!)
-
- * fsedit.pm: handle mdX where X >= 10 (it should fix bug #1129)
-
-2003/01/29 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Automatic non-interactive installation of local print queues.
- - Standard and advanced options selected by option groups in PPD.
- - Fixed bug of "CUPS + GIMP-Print" drivers being preferred against
- "Foomatic + gimp-print" drivers in beginners mode.
- - Foomatic package installation adapted to Foomatic 2.9.x.
-
-2003/01/29 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/logdrake: logdrake is a special case as for embedding in mcc
- since it can be embedded
- twice: one as explanation viewer and one a log search tool.
- so we must handly ask mcc to display us ...
-
- * detect_devices.pm (getIDE) don't provide information when we don't have
- it (vendor, description)
- (getModem) it always return an empy hash, thus confusing harddrake
-
- * harddrake/data.pm: fix doble detection of pci modems
- restore cd/dvd burners detection
-
- * standalone/harddrake2: print badly managed devices' drivers in red
-
-2003/01/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive/gtk.pm: fixes unresponsive keyboard
-
-2003/01/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po, share/po/DrakX.pot: updated Portuguese file
-
- * share/po/fi.po, share/po/he.po: updated Finnish and Hebrew files
-
-2003/01/28 Pixel <pixel@mandrakesoft.com>
-
- * Newt/Newt.xs, interactive/newt.pm: cleanup use of flags
- simplify API (always -1,-1 for left,top when creating widget, it means
- auto-placement)
-
- * any.pm: log configured dvds for better post-debugging
-
- * diskdrake/interactive.pm: for resize2fs, don't multiply by 512 *then*
- divide by $block_size, better
- divide by ($block_size / 512)
-
-2003/01/28 Till Kamppeter <till@mandrakesoft.com>
-
- * share/rpmsrate: Take into account the new splitting of the Foomatic
- packages.
-
- * printer/main.pm, printer/printerdrake.pm: More stuff for non-interactive
- printer configuration:
- - Added find_new_printer() function to find local printers which are
- not
- configured yet
- - Fixed Titi's bugs which messed up list of auto-detected printers
- - Corrected text in the dialog for changing the printer connection
- type
- (for local printer connections).
- - Allow switching to expert mode during installation (the installation
- has
- no global expert mode any more.
-
-2003/01/28 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone.pm: s/version name/version number/ (Christophe Combelles)
- typo fix in logdrake usage help (spoted by Christophe Combelles)
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/cs.po, share/po/bg.po, share/po/el.po, share/po/hu.po: typo fix
- in logdrake usage help (spoted by Christophe Combelles)
-
- * interactive.pm, ugtk2.pm, ugtk.pm, interactive/gtk.pm, common.pm:
- cleaning the utf8 support stuff:
- - consolidate check_for_xserver() to check for x11 access
- - introduce prepare_gtk2() to do what gtk+2 needs, so that
- tools that're not part of drakxtools (aka: rpmdrake, mcc, ...) can
- just do :
-
- unshift @::textdomains, 'drakconf'; prepare_gtk2();
-
- * harddrake/TODO: update
-
- * drakxtools.spec: 9.1-0.17mdk
-
-2003/01/27 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * standalone/drakfont:
- - progress bars works
- - change sucky About box
- - wipeout commented code
- - remove ugly borders when embedded
-
-2003/01/27 florin
-
- * standalone/drakgw: typo rename, not renamef
-
-2003/01/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mouse.pm: fix missing pointer_ungrab so that after testing mouse during
- install we can move the mouse pointer everywhere
-
- * interactive/gtk.pm: since return values of callbacks are now
- non-ignored, we need to
- return 0 to the expose_event when displaying wait message so that
- gdk really does the exposure :)
-
-2003/01/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated po file
-
-2003/01/27 Pixel <pixel@mandrakesoft.com>
-
- * interactive/newt.pm: don't blindly truncate strings to size 40 in
- simplify_string
-
-2003/01/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm: Adapted printerdrake to
- Foomatic 2.9.x, bug fix for use of native PPDs in recommended mode, bug
- fixes in association between detected printers and existing queues.
-
-2003/01/27 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * modules.pm: fix latest source of "unlisted modules" in draksound:
- modules::get_alias() was able to give "module " instead of only "module"
- beacause modules::read_conf() split the line on space with a maximum of
- 3
- splited elements.
- i choose to strip terminal spaces and btw terminal comments.
- i did not choose to do not put a limit to split since it's usefull for
- some
- cases.
-
- * standalone/drakbug: force drakbug to be runnable in strict mode
-
- * drakxtools.spec: 9.1-0.16mdk
- 9.1-0.15mdk
- reput back perl-gtk-0.7 dependancy because of drakfloppy and
- net_monitor
-
- * standalone/drakxtv: this patch enable doc team to take snapshot of
- drakxtv even if they do not
- have any card:
- - running "/usr/sbin/drakxtv" will enable to take snapshot of error
- message
- when xawtv wasn't installed by the drakx installer
- - running "/usr/sbin/drakxtv --testing" will emulate a fake dummy tv
- card
- so that one is able to take snapshots of configuring a tv card
-
- * Makefile: roll back (mcc!=gi)
- remove warnings in package
-
- * standalone/draksec: it's useless to import %security::help::help since
- it's already
- exported by our
-
- * ugtk2.pm: remove debugging statement
- let mcc pack tables behave smoother, so that all columns of mcc tables
- behave
- like last column of drakx's pack tables
- don't sent USR2 to mcc for logdrake;
- logdrake is handled differently since it's a special case.
- else on first execution of an embedded app, we take two USR2 (one from
- the
- embedded app and one from logdrake, which is bad)
-
- * standalone/drakfloppy, interactive.pm, standalone/net_monitor: strip
- authentification out of interactive->vnew into common.pm
- This enable apps that still use gtk+-1.2 via my_gtk to still work when
- they only need interactive->vnew('su') just to get root capabilities.
- Indeed, interactive load ugtk if it has access to the X server, which
- make my_gtk and ugtk fight for the cpu forever... which is bad imho...
- drakfloppy and net_monitor were converted to use it and are now usuable
- again
- ("i leave ... again" commit).
-
- it would also enable to complete spec 64 by enabling rpmdrake
- to use kdesu under kde and consolehelper under gnome.
- rpmdrake is indeed the last program to not behave like
- the running desktop to get root capability.
-
- unless someone is against this, i'll convert the mcc and all other gtk+
- pure
- tools to do not use anymore interactive just to get root capability.
-
-
- btw, i fixed the infamous SECTOR_SIZE warning...
-
- * diskdrake/hd_gtk.pm, interactive/gtk.pm: diskdrake: when non embedded,
- ensure sub window are modal
- all other drakx tool can be fixed the same way
-
- * share/po/Makefile: since fpons don't care about fixing drakxtools build
- broken by
- drakpxe, let remove drakpxe from translatable files
-
- * standalone/logdrake: cosmetic fix for embedded mode:
- don't display "wait while parsing" window when embedded
- fix logdrake behaviour in mcc where logdrake would only log
- the first process.
- another (rare indeed) case of a bug introduced because perl_checker
- wanted us to localize a file handle :-(
-
- * common.pm (require_root_capability): having extracted it from
- interactive enable
- to further simplify it
- strip authentification out of interactive->vnew into common.pm
- This enable apps that still use gtk+-1.2 via my_gtk to still work when
- they only need interactive->vnew('su') just to get root capabilities.
- Indeed, interactive load ugtk if it has access to the X server, which
- make my_gtk and ugtk fight for the cpu forever... which is bad imho...
- drakfloppy and net_monitor were converted to use it and are now usuable
- again
- ("i leave ... again" commit).
-
- it would also enable to complete spec 64 by enabling rpmdrake
- to use kdesu under kde and consolehelper under gnome.
- rpmdrake is indeed the last program to not behave like
- the running desktop to get root capability.
-
- unless someone is against this, i'll convert the mcc and all other gtk+
- pure
- tools to do not use anymore interactive just to get root capability.
-
-
- btw, i fixed the infamous SECTOR_SIZE warning...
-
- * standalone/harddrake2: make interactive help window be modal, aka
- transcient for main ugtk2
- window
- perl_checker fix
- use new help system
-
- * network/netconnect.pm: let drakconnect be less verbose: aka explain
- rename of old configuration files
- if that had been already done
-
- * standalone/drakhelp:
- - strict mode
- - we need at least 1 argument, and only one
-
-2003/01/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po, share/po/zh_CN.po: updated Spanish and Chinese files
-
- * share/po/et.po: updated Estonian file
-
-2003/01/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sq.po: updated po file
-
-2003/01/24 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm (ask_browse_tree_info): better look when embedded in a smaller
- window
-
-2003/01/24 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * detect_devices.pm: get back serial modem detection
-
- * drakxtools.spec: new version
-
- * network/network.pm: fix typo
-
-2003/01/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive/gtk.pm: remove unused variable
- fix Return key on a radio button grabbing focus on next functional group
- of widgets AND doing an action on it (toggling checkbuttons etc) (needs
- perl-GTK2 >= 0.0.cvs.2003.01.24.1)
-
- * mouse.pm: remove blinks in mouse test
-
-2003/01/24 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_list, ask_from_list_, ...): option nocancel
- added
- (ask_yesorno): no "Cancel" or "Previous" button
-
- * install_any.pm, install_steps_interactive.pm: fix "Previous" button in
- warnAboutNaughtyServers, so there is 3 choices
- (Previous, unselect servers, accept :)
-
- * install_steps_gtk.pm, mouse.pm:
- - don't setMouseLive when the protocol hasn't changed
- - don't say "MOVE YOUR WHEEL" when there is no wheel and the protocol
- hasn't changed
- (nb: no wheel + IMPS/2 can now happen for usb mice)
-
-2003/01/24 alus
-
- * share/po/pl.po: done
-
-2003/01/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * common.pm, c/stuff.xs.pl, interactive.pm, lang.pm: fix non latin1
- post-install perl-gtk2 apps, seems like perl upgrading strings to utf8
- is somewhat broken (dunno why), so now we bind the codeset or our
- textdomains to utf8 and tag the translated strings to utf8, when using
- gtk
-
- * mouse.pm: remove blinks in mouse test
-
-2003/01/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sq.po, share/po/it.po, share/po/nl.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: updated pot file (English proofreading)
-
- * standalone/draksplash, standalone/logdrake, standalone/draksec,
- share/compssUsers.desktop, standalone/harddrake2,
- standalone/net_monitor, standalone/mousedrake, standalone/drakperm,
- standalone/scannerdrake: English proofreading
-
- * share/po/et.po: updated Estonian file
- updated pot file (English proofreading)
-
-2003/01/24 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm:
- - don't setMouseLive when the protocol hasn't changed
- - don't say "MOVE YOUR WHEEL" when there is no wheel and the protocol
- hasn't changed
- (nb: no wheel + IMPS/2 can now happen for usb mice)
- - switch "<= 3 buttons usb mice" from X protocol PS/2 to IMPS/2 (it
- works
- nicely, and redhat do so)
- - default usb mice to USB|Wheel instead of USB|Generic, since most
- (all?) usb
- mice have a wheel
- (i tested on 1 button mac mouse, it works nicely with ZAxisMapping and
- IMPS/2)
-
- * interactive.pm (ask_from_list, ask_from_list_, ...): option nocancel
- added
- (ask_yesorno): no "Cancel" or "Previous" button
-
- * install_any.pm, install_steps_interactive.pm: fix "Previous" button in
- warnAboutNaughtyServers, so there is 3 choices
- (Previous, unselect servers, accept :)
-
- * install_steps_gtk.pm:
- - don't setMouseLive when the protocol hasn't changed
- - don't say "MOVE YOUR WHEEL" when there is no wheel and the protocol
- hasn't changed
- (nb: no wheel + IMPS/2 can now happen for usb mice)
-
-2003/01/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: fixed some (locally used) charset names
-
- * share/po/et.po: updated Estonian file
-
-2003/01/23 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/main.pm (configure_chooser_raw): no special case for "Next"
- button
-
- * install_steps_interactive.pm (formatMountPartitions): help perl
- (otherwise wait_message stays forever in newt)
-
- * interactive/newt.pm: fix special case "for license agreement": only use
- it for long messages, and fix {format} use
- add a button to "summary"-like dialog boxes
-
-2003/01/23 alus
-
- * share/po/pl.po: updated
-
-2003/01/23 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm, network/ethernet.pm:
- - perl_checker compliant
- - s/$pump/$auto_ip/
- - use join('', if_(..), if_(..))
- - each_index instead of for
- - various fixes
-
- * network/netconnect.pm, network/modem.pm, network/isdn.pm,
- network/adsl.pm: isdn.pm now in use strict
- little cleanup
-
-2003/01/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po: updated Estonian file
-
- * share/po/ko.po: Changes asked by HP people to Korean translation
-
-2003/01/23 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/main.pm (configure_chooser_raw): no special case for "Next"
- button
-
- * common.pm: better fix of ->isa use
- remove use of UNIVERSAL::isa() (it is not much more complex with ref +
- ->isa, and UNIVERSAL::isa() would need a special case in perl_checker)
-
- * keyboard.pm (read): fix return value when no configured keyboard is
- found
-
- * diskdrake/interactive.pm: fix diskdrake in newt (causing error about
- missing method ->cylinder_size)
-
- * Xconfig/xfree3.pm, Xconfig/xfreeX.pm, Xconfig/xfree4.pm: introduce
- ->is_fbdev, and use it to simplify ->set_resolution
-
- * install_any.pm (getHds): do not handle missing harddrives by calling
- setupSCSI, since
- setupSCSI do it by itself now
-
- * interactive/newt.pm: fix special case "for license agreement": only use
- it for long messages, and fix {format} use
- add a button to "summary"-like dialog boxes
- - handle {ok_disabled}
- - correctly wrap messages
- - fix Textbox size
- - fix Listbox size
- - special code to handle the license dialog
-
- * Xconfig/various.pm (to_string): created, try to shortly describe current
- configuration
- (configure_FB_TVOUT): don't do anything when not using XF4
-
- * interactive/gtk.pm: focus first widget when there is no ok
-
- * Xconfig/xfree.pm (is_fbdev): created
- (get_both, set_both): skip modifications on missing xfree3 or xfree4
-
- * install_steps_interactive.pm (formatMountPartitions): help perl
- (otherwise wait_message stays forever in newt)
- (reallyChooseGroups): remove "Previous" button
- (setupSCSI): remove now unused variable $clicked
- (summary): display more nicely the current X config when fbdev
- (selectLanguage): no need to handle "Cancel" on language choosing :)
- (setupSCSI): handle calling modules::interactive::load_category in
- non-automatic mode when no harddrives are found
-
- * modules/interactive.pm (load_category__prompt_for_more): cleanup,
- propose "See hardware info" in any case
-
- * network/network.pm: pixelification
-
-2003/01/23 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: fix perl-GTK2 dependancy
- 9.1-0.13mdk
-
- * standalone/drakpxe: perl_checker fix
-
- * network/ethernet.pm:
- - force use strict
- - perl_checker fix
-
- * network/isdn.pm: force strict pragma
- force strict mode
-
- * interactive/gtk.pm: workaround bug introduced by new pixel focus
- managment
-
- * standalone/service_harddrake: perl_checker fix
- reconfigure sound slots at boot time (we should enhance slot filling
- by keeping existent module affectation, aka keep user choice if his
- module for slot X is not the default one)
-
- * network/netconnect.pm, network/tools.pm, network/shorewall.pm,
- network/network.pm, network/modem.pm: force strict mode
-
-2003/01/22 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm:
- - speedtouch fixes :
- o binaries location from /usr/bin to /usr/sbin
- o clean previous instance of pppoa3 according to modem id (-c)
- (special thanks to Corsikas who proudly brings this patch to me :)
-
-2003/01/22 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: perl checker fixes.
-
- * bootloader.pm: fix call to sanitize_ver by giving it linux-$version
- instead of linux$ext.
-
-2003/01/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/stuff.xs.pl, lang.pm: fix accents characters displaying in console
- mode during install:
- - convert translations into utf8 only during install && if using gtk
- - explicitely bind the codeset to the specified locale's encoding
- because
- during install they are reported as utf8
-
- * ugtk2.pm: correctly pop when F2 (screenshots)
- revive F1, F2 and alt-e (dialogs for F1 and F2 are broken, though)
-
- * mdk-stage1/pci-resource/update-pci-ids.pl, mdk-stage1/probing.c: add
- full pci probe support
-
- * mdk-stage1/usb-resource/update-usb-ids.pl: have pci usb controllers
- sorted alphabetically
-
- * common.pm: correctly pop when F2 (screenshots)
- fix accents characters displaying in console mode during install:
- - convert translations into utf8 only during install && if using gtk
- - explicitely bind the codeset to the specified locale's encoding
- because
- during install they are reported as utf8
-
-2003/01/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/lt.po, share/po/he.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/sq.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
- * standalone/draksplash, standalone/drakbackup, standalone/drakfloppy,
- standalone/drakfont, standalone/drakconnect, standalone/drakgw,
- standalone/drakperm: English proofreading
-
- * lang.pm: small changes in charset naming so they work better in console
- (console
- is still not in utf-8)
-
- * share/po/et.po, share/po/fi.po: updated pot file
- updated Finnish and Estonian files
-
-2003/01/22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: call "yelp-pregenerate -a" after installing pkgs
- (since it's skipped DURING_INSTALL)
- - remove createBootdisk step
- - add mkbootdisk option in setupBootloader__general()
- - move kernelVersion() from install_any to any
-
- * interactive.pm: add some documentation about the various possible fields
-
- * interactive/gtk.pm: add {callbacks}{ok_disabled}
-
- * network/network.pm: simplify easy_dhcp prototype
-
- * install_steps_interactive.pm (acceptLicense): use new "interactive"
- feature to gray "Next" button until
- license is accepted
- simplify easy_dhcp prototype
- - remove createBootdisk step
- - add mkbootdisk option in setupBootloader__general()
- - move kernelVersion() from install_any to any
-
- * any.pm, install2.pm, install_any.pm, steps.pm:
- - remove createBootdisk step
- - add mkbootdisk option in setupBootloader__general()
- - move kernelVersion() from install_any to any
-
-2003/01/22 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * network/netconnect.pm, network/network.pm, standalone/mousedrake,
- printer/printerdrake.pm, harddrake/TODO, standalone/drakxtv:
- perl_checker fixes
-
- * standalone/drakfont:
- - perl_checker fixes
- - is_a_font(): display the non existant file we just checked for
- instead of an undefined value
- fix progressbar label initialization
-
- * harddrake/sound.pm:
- - if there's no know driver, offer to pick a driver in the drivers
- list in case ldetect-lst isn't up to date but the user know which
- driver to use
- - consolidate "pick any driver" entry
-
-2003/01/22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, any.pm, install_any.pm, install2.pm, steps.pm,
- install_steps_interactive.pm:
- - remove createBootdisk step
- - add mkbootdisk option in setupBootloader__general()
- - move kernelVersion() from install_any to any
-
-2003/01/21 alus
-
- * share/po/pl.po: utf-8 again
- updated again...? And again UTF -> ISO
- back from UTF-8 to ISO-8859-2 ... Why Why Why? It should work from
- UTF-8...
-
-2003/01/21 François Pons <fpons@mandrakesoft.com>
-
- * standalone/drakpxe: latest fixes for having default file correctly
- documented and make sure if
- server boot using dhcp itself, server hostname is given instead of ip
- address.
- add daemons stop/start code.
- update with something that look like running.
-
-2003/01/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mouse.pm: fix absence of scroll up and scroll down in mouse test
-
- * interactive/gtk.pm, install_steps_gtk.pm: perl-GTK2 0.0.cvs.2003.01.21.1
- should fix set_active(undef) misbehaviour
-
- * ugtk2.pm: seems like gdk_window_foreign_new is leaking as well..
- since gtkset_mousecursor is called by a timeout, don't leak
- memory because it can lead to problems on the long term
-
-2003/01/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated Vietnamese and Polish files
- English proofreading (first pass)
-
- * network/adsl.pm: English proofreading by Stew Beneditcs
-
- * share/po/sk.po, share/po/DrakX.pot, share/po/zh_CN.po: English
- proofreading (first pass)
- updated Slovak and Chinese files
-
- * network/isdn.pm: English proofreading (first pass)
- English proofreading by Stew Benedicts
-
- * share/po/pl.po: updated Vietnamese and Polish files
-
- * network/network.pm, share/po/gl.po, share/po/pt_BR.po, share/po/th.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/be.po,
- share/advertising/01-thanks.pl, share/po/ko.po, standalone/drakTermServ,
- share/po/sv.po, share/po/sr.po, share/po/fi.po, share/po/he.po,
- share/advertising/05-games.pl, share/po/da.po, share/po/ca.po,
- share/po/ar.po, share/advertising/04-multimedia.pl, share/po/ro.po,
- security/level.pm, share/po/zh_TW.po, share/po/sq.po, share/po/it.po,
- share/po/eu.po, share/po/es.po, share/advertising/07-desktop.pl,
- network/shorewall.pm, network/tools.pm,
- share/advertising/08-development.pl, share/advertising/06-mcc.pl,
- share/po/lv.po, share/po/hu.po, printer/printerdrake.pm, share/po/id.po,
- share/po/ru.po, share/po/br.po, share/po/sl.po, share/po/no.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/uk.po,
- share/advertising/03-internet.pl, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, partition_table/raw.pm, share/po/bs.po, share/po/wa.po,
- share/po/is.po, standalone/drakfont, share/po/af.po, share/po/az.po,
- share/po/pt.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/cs.po,
- share/po/el.po: English proofreading (first pass)
-
- * bootlook.pm, install_steps_interactive.pm, network/netconnect.pm,
- network/drakfirewall.pm, standalone/mousedrake,
- diskdrake/interactive.pm, Xconfig/monitor.pm, install_any.pm,
- harddrake/v4l.pm, modules/interactive.pm, any.pm, harddrake/sound.pm,
- services.pm, network/ethernet.pm, bootloader.pm: English proofreading by
- Stew Benedicts
-
-2003/01/21 Pixel <pixel@mandrakesoft.com>
-
- * steps.pm: on error in acceptLicense, go back to selectLanguage (ie.
- handle "Previous ->" correctly)
-
- * Xconfig/various.pm, Xconfig/card.pm: have Xfree version at only one
- place
- (nb: it would be better to parse available package and get version from
- it.)
-
- * install_interactive.pm: remove or fix some "Previous"
-
- * help.pm: "license" is now step "acceptLicense"
-
- * interactive.pm: when the return value of ask_from_ and ask_from is not
- used, do not have a
- "Previous ->" or "Cancel" button (beware, black magic here :)
-
- * interactive/gtk.pm: remove unused variable
- (ask_fromW): very smart code to know which widget to focus (dilemna is:
- "Next" vs first widget). One can also force focusing of first widget
- using $common->{focus_first}
- (ask_fromW): have "advanced" widgets above buttons, not below
- (create_list): fix old bug (nb: this code must be unused)
- (create_boxradio): need to set {focus_w} to the selected widget (nb:
- this is ugly)
- (create_boxradio, $may_go_to_next): no special case for "tab", gtk2
- handles things better than gtk1
- ($set_all): pass the full_struct to the setters (this allows modifying
- {focus_w}) (nb: this is ugly)
-
- * install_gtk.pm: enlarge "steps" window a little
- small enhancement to know which step is currently done
-
- * ugtk2.pm: enlarge "steps" window a little
- (create_okcancel): rework to prepare next move, "Next" and "Previous" on
- the left, and @other buttons on the right
- (create_hbox): do handle the layout parameter
-
- * install_steps_interactive.pm: replace "Next" button with "Reboot" at
- exitInstall step
- remove or fix some "Previous"
- (acceptLicense): handle "Previous ->" correctly, and simplify code
- (esp. don't set useless_thing_accepted)
-
- * any.pm (setupBootloader__mbr_or_not): add ability to skip and to put on
- floppy
- rework autologin dialog box
- (selectLanguage): no "Previous ->" during install
-
- * diskdrake/interactive.pm (Mount_point): use uniq() on suggested mount
- points (otherwise the suggested mount point appears twice) (fixes bug
- #954)
-
- * install2.pm: don't prompt for license when useless_thing_accepted
- (this used to be done in install_steps_interactive::acceptLicense)
-
- * install_steps_gtk.pm: workaround set_active on Gtk2::CheckButton widgets
- thinking undef is true :-(
- (hopefully, gc will fix perl-GTK2!)
- replace some "Ok" with "Next ->"
-
- * Xconfig/main.pm: replace some "Ok" with "Next ->"
-
-2003/01/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm, printer/printerdrake.pm:
- - Support for manufacturer-supplied PostScript PPDs also in
- recommended
- mode.
- - If "Foomatic + Postscript" is recommended driver for a printer and a
- manufacturer-supplied PPD file exists for it, the PPD file gets the
- recommended driver.
- - Tried to extract IEEE-1284 auto-detection info from the PPD files
- but
- this takes too long time (40 sec for 800 PPDs).
- - Fixed long-standing bug in activation of auto-load of the USB
- "printer"
- kernel module.
-
-2003/01/21 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/TODO: update
-
- * share/po/fr.po: update french translation
-
- * harddrake/sound.pm: handle proprietary drivers
- if there's no alternative driver or if the current setting does not
- please the user, let he pick any driver among multimedia/sound modules
- category
-
-2003/01/20 alus
-
- * share/po/pl.po: updated
-
-2003/01/20 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm: little cleanup
-
- * network/network.pm: void label removed
- - zero conf is avaible in drakconnect, with/without dhcp
- - install tmdns and zcip packages when needed
-
- * network/tools.pm: get username back in menu
-
- * network/ethernet.pm:
- - zero conf is avaible in drakconnect, with/without dhcp
- - install tmdns and zcip packages when needed
-
-2003/01/20 François Pons <fpons@mandrakesoft.com>
-
- * standalone/drakpxe: initial revision with translation message.
-
- * Makefile.config: added drakpxe
-
-2003/01/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * Xconfig/test.pm: use gtk rather than qiv to display the background tile
- in X test
- fix Gtk2 port
-
-2003/01/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sr.po, share/po/fi.po, share/po/sp.po, share/po/tr.po: updated
- Finnish, Serbian and Turkish files
-
- * share/po/et.po: updated Estonian file
-
- * keyboard.pm: small keyboard name change
-
- * share/po/es.po, share/po/ar.po: updated Spanish and Arabic files
-
-2003/01/20 Till Kamppeter <till@mandrakesoft.com>
-
- * share/rpmsrate: Make flphoto getting onto the CDs.
-
- * printer/main.pm: Improved printer/driver list entries for PostScript PPD
- files.
- Improve association of printers with database entries (preparation for
- non-interactive print queue generation):
- - Make use of device ID strings in the Foomatic database
- - Association of generic printers when PDL (PCL, PCL-XL, PostScript)
- could
- be auto-detected
- - Cleaned up entries from manufacturer-supplied PPDs for PostScript
- printers to try to match model names of Foomatic entries
- - Bug fixes on previous association mechanism
-
- * detect_devices.pm, printer/printerdrake.pm: Improve association of
- printers with database entries (preparation for
- non-interactive print queue generation):
- - Make use of device ID strings in the Foomatic database
- - Association of generic printers when PDL (PCL, PCL-XL, PostScript)
- could
- be auto-detected
- - Cleaned up entries from manufacturer-supplied PPDs for PostScript
- printers to try to match model names of Foomatic entries
- - Bug fixes on previous association mechanism
-
-2003/01/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: make all chkconfig calls be chrooted
-
- * services.pm: fix prefix usage
-
- * mouse.pm: fix gtk+-2 port
-
- * standalone/draksec: use new help scheme just added to msec (this *does*
- need a newer msec
- package!!)
-
- * standalone.pm: fix breakage introduced when lowering warning level
-
-2003/01/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/sq.po: updated Danish and Albanian files
-
-2003/01/18 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * tools/ppc/mapping, tools/ppc/magic: Update magic, mapping files for PPC
- from Christian Walther
-
-2003/01/17 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm, network/ethernet.pm:
- - some changes to dhcp behavior for beta2 (not clean yet)
-
- * drakxtools.spec: 0.12mdk
-
-2003/01/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ru.po: updated po file
-
- * share/po/it.po: updated Italian file
-
-2003/01/17 Pixel <pixel@mandrakesoft.com>
-
- * tools/make_mdkinst_stage2: do not remove mdk_10.pcf in the ramdisk
- (or handle it in lang.pm since it seems to be needed for greek display)
-
-2003/01/17 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * modules.pm: airport support for ppc
-
-2003/01/17 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: add some applications on club voting
-
-2003/01/16 alus
-
- * share/po/pl.po: updated
-
-2003/01/16 Daouda Lo <daouda@mandrakesoft.com>
-
- * Makefile.drakxtools:
- - drakhelp moved to /usr/bin/
-
- * standalone/drakhelp:
- - checker
- - support gnome help
- - warn if documentation is not installed
- - syntax : drakhelp relative_link
- example: drakhelp Quick_Startup.html/drakx.html
- - drakhelp will check the running wm and will launch kdehelpcenter
- with the correct URL after localizing the link.
- Otherwise, it launch a default browser: mozilla konqueror or galeon.
-
- * standalone.pm:
- - remove help callback (moved into drakhelp)
-
- * Makefile.config:
- - add drakhelp
-
-2003/01/16 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm:
- - fix /etc/hosts localhost.localdomain in localhost
-
-2003/01/16 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed not to ask group instead of
- individual package selection.
-
-2003/01/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm, lang.pm: Added some more English locales; and changed all
- locale names using xx
- notation to xx_YY notation (so it's easier to just append a ".UTF-8" in
- case we provide a way to let the user choose if he wants UTF-8 or not)
-
-2003/01/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: workaround ref count perl bug
-
- * share/step-orange-click.xpm, share/step-red-on.xpm,
- share/step-orange.xpm, share/step-red-click.xpm,
- share/step-green-on.xpm, install2.pm, share/step-green.xpm,
- install_steps.pm, install_gtk.pm, share/step-green-click.xpm,
- share/step-red.xpm, install_steps_interactive.pm, steps.pm,
- share/step-orange-on.xpm: new steps window layout
-
-2003/01/16 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/harddrake2, services.pm: fix embedding
-
-2003/01/16 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone.pm:
- - remove help callback (moved into drakhelp)
-
- * standalone/drakhelp:
- - syntax : drakhelp relative_link
- example: drakhelp Quick_Startup.html/drakx.html
- - drakhelp will check the running wm and will launch kdehelpcenter
- with the correct URL after localizing the link.
- Otherwise, it launch a default browser: mozilla konqueror or galeon.
-
- * Makefile.config:
- - add drakhelp
-
-2003/01/16 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: do not propose individual package on
- upgrade.
-
- * install_steps.pm: fixed test of alternatives always seen as broken.
-
-2003/01/16 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add coreutils-doc by default
- add hdparm in default install (esp. per cooker request)
-
- * install_steps_interactive.pm: new steps window layout
- ask security level in every install
- hopefully last titi's bug on getSoundDevices :-(
-
- * share/po/Makefile: don't yell when checking for "$" in DrakX.pot and
- only finding "\$"
-
- * steps.pm: new steps window layout
- ask security level in every install
-
- * security/level.pm, standalone/drakconnect, network/netconnect.pm,
- standalone/drakperm, standalone/net_monitor, detect_devices.pm,
- network/tools.pm: replace occurences of "$foo ? $foo : $bar" with "$foo
- || $bar"
-
- * standalone/service_harddrake, standalone.pm: make perl_checker happy
-
- * network/network.pm: replace occurences of "$foo ? $foo : $bar" with
- "$foo || $bar"
- have dhcp-client the default dhcp client
-
- * share/step-orange-click.xpm, share/step-red-on.xpm,
- share/step-orange.xpm, share/step-green-on.xpm, share/step-green.xpm,
- install_steps.pm, install_gtk.pm, share/step-green-click.xpm,
- share/step-orange-on.xpm, share/step-red-click.xpm, install2.pm,
- share/step-red.xpm: new steps window layout
-
- * install_steps_auto_install.pm: configureNetwork step must be non-auto
- otherwise only
- install_steps::configureNetwork is called
-
-2003/01/16 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakbug, bootlook.pm, log.pm, standalone.pm,
- standalone/draksec, standalone/drakTermServ, harddrake/v4l.pm,
- standalone/drakxtv, standalone/drakgw, harddrake/TODO: "je n'en veux +
- de cette engeance" (c) pixel :
- make explanations provided by log and not anymore by standalone,
- thus preventing using standalone in drakx (which is bad)
-
- * standalone/service_harddrake, standalone/drakautoinst: perl_checker
- fixes
- "je n'en veux + de cette engeance" (c) pixel :
- make explanations provided by log and not anymore by standalone,
- thus preventing using standalone in drakx (which is bad)
-
- * drakxtools.spec: require an recent enought MDK::Common
-
- * harddrake/sound.pm: "je n'en veux + de cette engeance" (c) pixel :
- make explanations provided by log and not anymore by standalone,
- thus preventing using standalone in drakx (which is bad)
- happy drakx
- move "require standalone" where needed
- fix sound configuration while installing
-
-2003/01/16 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 2
-
- * share/rpmsrate: move gnucash up on mandrakeclub demand
-
-2003/01/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix typo
- (selectInstallClass): display mandrake release version when listing the
- choices of partitions to upgrade
-
- * install_steps.pm: adapt to install_any::find_root_parts() return value
- changes
-
- * install_any.pm (find_root_parts):
- - do not use guess_mount_point() anymore
- - check /etc/mandrake-release instead of /etc/fstab
- - return a list of { release => "Mandrake Linux release X.X (XXXX)",
- part => ... }
- instead of a list of parts
-
- * harddrake/sound.pm: do not "use standalone" in a module used during
- install!
-
-2003/01/16 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile: don't yell when checking for "$" in DrakX.pot and
- only finding "\$"
-
- * install_steps_interactive.pm: hopefully last titi's bug on
- getSoundDevices :-(
-
-2003/01/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix typo
- (selectInstallClass): display mandrake release version when listing the
- choices of partitions to upgrade
-
- * install_steps.pm: adapt to install_any::find_root_parts() return value
- changes
-
- * install_any.pm (find_root_parts):
- - do not use guess_mount_point() anymore
- - check /etc/mandrake-release instead of /etc/fstab
- - return a list of { release => "Mandrake Linux release X.X (XXXX)",
- part => ... }
- instead of a list of parts
-
- * harddrake/sound.pm: do not "use standalone" in a module used during
- install!
-
-2003/01/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/he.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/sq.po, share/po/it.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/nl.po: updated pot file
- fixed encoding problem
- updated Dutch file
-
- * lang.pm: Added "Amharic" in the languages list, so it can be choosed and
- its
- translations can get installed from the rpm packages
-
-2003/01/15 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (suggest_onmbr): log the choice
-
- * patch/patch-9.0-auto-inst-network-config.pl: fix for network module
- probe & configuration in interactive auto_install
-
- * install_steps.pm: adapt to install_any::find_root_parts() return value
- changes
-
- * install_steps_interactive.pm (selectInstallClass): display mandrake
- release version when listing the choices of partitions to upgrade
-
- * install_any.pm (find_root_parts):
- - do not use guess_mount_point() anymore
- - check /etc/mandrake-release instead of /etc/fstab
- - return a list of { release => "Mandrake Linux release X.X (XXXX)",
- part => ... }
- instead of a list of parts
-
- * install_steps_auto_install.pm: move
- install_steps_auto_install_non_interactive::configureNetwork() to
- install_steps_auto_install::configureNetwork() as it should be
- (thanks to Luc Bourdot)
-
- * harddrake/sound.pm: do not "use standalone" in a module used during
- install!
-
-2003/01/15 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: snd-sscape does not exist
- - factorize snd devices listing in detect_devices::getSoundDevices()
- so that each caller is ppc aware
- - factorize sound slots configuration into
- harddrake::sound::configure_sound_slots() so that harddrake service
- will eventually set them at bootstrapping time
-
- * standalone/drakproxy: drakproxy need common for getVarsFromSh()
-
- * detect_devices.pm, install2.pm, install_steps_interactive.pm:
- - factorize snd devices listing in detect_devices::getSoundDevices()
- so that each caller is ppc aware
- - factorize sound slots configuration into
- harddrake::sound::configure_sound_slots() so that harddrake service
- will eventually set them at bootstrapping time
-
- * standalone/harddrake2: add an option to skip jazz drives detection
-
-2003/01/14 Pixel <pixel@mandrakesoft.com>
-
- * rescue/list: /usr/share/magic has moved to /usr/share/misc/magic
-
- * any.pm: ensure cancel on setupBootloader__mbr_or_not do cancel
-
- * modules.pm: changes to have less "Use of uninitialized value"
-
- * printer/printerdrake.pm: please perl_checker
-
- * share/list: unicore/To/Fold.pl is necessary to fix "panic: swash_fetch"
- error occuring in
- a regexp with /i on ->{device} (fixes bug #799)
-
- * install2.pm: don't probe mouse when testing (startup is now much faster)
- remove the ugly temporary fix for fontconfig
- remove duplicate code
- don't automatically configure network on upgrade, now only done when
- called via summary
-
- * sbus_probing/main.pm: fix bug & cleanup (to have less warning in debug
- mode)
-
- * interactive/gtk.pm: set_active on Gtk2::CheckButton is pretty dumb, it
- thinks undef is true ;p
-
-2003/01/14 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/data.pm, printer/printerdrake.pm: Removed bugs from Titi which
- prevented printerdrake from installing the requested spooler.
-
-2003/01/14 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakfont: fix font_choice()
-
- * harddrake/check_snd.pl: add harddrake::sound checker
-
-2003/01/14 Pixel <pixel@mandrakesoft.com>
-
- * share/list: unicore/To/Fold.pl is necessary to fix "panic: swash_fetch"
- error occuring in
- a regexp with /i on ->{device} (fixes bug #799)
-
- * install2.pm: don't automatically configure network on upgrade, now only
- done when called via summary
-
-2003/01/14 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: add missing sound modules (found by check_snd in
- comparing
- harddrake::sound vs list_modules). we only left audio and bttv...
- add a "trouble shooting" window
-
- * harddrake/check_snd.pl: add harddrake::sound checker
-
- * standalone/drakfont: fix font_choice()
-
-2003/01/13 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm: don't say "You must have a swap partition"
- (since it's after using diskdrake which is for experts)
-
-2003/01/13 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/detect.pm: New CUPS printer sharing configuration dialog.
- Reverted broken printer::main::set_usermode() to version of Mandrake
- 9.0.
-
- * printer/main.pm: Avoid unnecessary restarts of the CUPS daemon.
- New CUPS printer sharing configuration dialog.
- Reverted broken printer::main::set_usermode() to version of Mandrake
- 9.0.
-
- * printer/printerdrake.pm: Avoid unnecessary restarts of the CUPS daemon.
- Removed debug helper line.
- New CUPS printer sharing configuration dialog.
- Reverted broken printer::main::set_usermode() to version of Mandrake
- 9.0.
-
-2003/01/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer/data.pm: remove old bug reference
-
- * share/po/fr.po: typo fix
-
- * printer/main.pm: make get_descr_from_ppd() clearer by :
- - using cat_() instead of manual open or ...
- - using "$var = s/$regexp//" instead of
- "var=/regexp\(...\)/; var=$1;"
- simplify set_cups_autoconf()
- add_spooler_to_security_level(), configure_queue()
- and config_sane() :
- factorize common code, aka resuse MDK::Common
-
- * harddrake/data.pm: add support for zip drives
-
- * harddrake/TODO: update
-
- * standalone/harddrake2: it's uneeded to force scalar context
- this is not a per class help, but we told the user what
- he can achieve (aka not only on startup)
- listlength() is obviously just "overhead" for arrays
- use diskdrake to configure cdroms, dvroms, cd|dvd -burners,
- floppies and zip drives
-
- * printer/printerdrake.pm: print_testpages() : factorize and simplify
- options managment
- by using an options hash
- setup_local_autoscan():
- - don't reinvent the wheel, reverse is faster
- - remove doble $device initialization in one path
- setup_local_autoscan() : simplify loop of loop
- and optimize away useless $alreadyfound
-
-2003/01/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Albanian and Swedish files
-
-2003/01/12 Pixel <pixel@mandrakesoft.com>
-
- * docs/comparisons: add explained changes in hwdata and kudzu from redhat
- 8.0 to 8.1beta
- add changes between anaconda 8.0 and current
-
- * drakxtools.spec: drakxtools need latest perl-MDK-Common
-
-2003/01/11 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: capitalise win $domain ASAP so that directory
- /home/$domain is created
- capitalised (thanks to Buchan Milne)
-
-2003/01/10 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: do not use supermount by default
- (readBootloaderConfigBeforeInstall): set bootUnsafe to 0 when upgrading
- so
- that it doesn't ask where to install the bootloader (mbr vs boot
- partition)
-
-2003/01/10 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/netconnect.pm:
- - catch wizcancel die
- - fix fucked previous button after configuration completes
- - little cleanup
-
-2003/01/10 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: do not use supermount by default
- (readBootloaderConfigBeforeInstall): set bootUnsafe to 0 when upgrading
- so
- that it doesn't ask where to install the bootloader (mbr vs boot
- partition)
- simplify and factorize
- (now works on 1.upgrade 2.install 3.install + change existing config)
-
- * Xconfig/card.pm: fix priority
-
- * Xconfig/main.pm, standalone/XFdrake, install_steps_interactive.pm:
- simplify and factorize
- (now works on 1.upgrade 2.install 3.install + change existing config)
-
- * fsedit.pm: lvm on / works (dixit Brian J. Murrell)
-
- * install2.pm: fix unused vars
-
-2003/01/09 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: changed interface of detect_devices::install_addons.
-
- * detect_devices.pm: add update-ldetect-lst after install_addons.
-
-2003/01/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fi.po, share/po/sq.po: updated Finnish and Albanian files
-
-2003/01/09 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (configureNetwork): call
- install_steps::configureNetwork()
- - configureNetwork step now only does easy_dhcp()
- - added full network configuration to summary
-
- * network/network.pm (easy_dhcp): don't call network::configureNetwork2
- - fix priority
- - add a log
-
- * install2.pm:
- - configureNetwork step now only does easy_dhcp()
- - added full network configuration to summary
-
- * install_steps_gtk.pm (installPackages): do pop error messages
-
-2003/01/09 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/main.pm: Added cupsd.conf handling functions for a new printer
- sharing configuration dialog.
-
-2003/01/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: fix invalid translation for draksound
-
- * harddrake/sound.pm: there's an oss usb driver too
- - snd-rme9652 is a snd-rme96 sub module
- - fix rme96xx <=> snd-rme96 equivalence
- quite a number of ensoniq cards are managed by sb.o
- - pss is the oss equivalent of alsa ad1848
- - oss ad1848 is not a driver but a sub module
- cmi8330 is handled by sb too
- als100 card is handled by sb oss sound driver
- oss trident driver handle ali5451 too
- - remove doble
- - add a comment noting there's no alsa alternative for oss' ad1889
- driver
- fix "unlisted driver" bug for rme driver
- - add new oss drivers : ad1889, ali5455 and forte
- - mark forte as oss counterpart for alsa snd-fm801 driver
- - mark ice1712 as oss counterpart for alsa snd-ice1712 driver
- - mark ali5455 as one of the oss counterpart for alsa snd-intel8x0
- driver
- - update top commentary
- - snd-via686 and snd-via8233 were merged in via82cxxx_audio
- - don't pollute install ml anymore
-
- * keyboard.pm: make return value name more explicit
- simplify
-
-2003/01/08 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm: added install_addons to install pcitable or usbtable
- addons.
-
- * install2.pm: removed perl_checker warning.
- added install_addons before leaving.
-
- * any.pm: really install the bootloader.
-
-2003/01/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: fix a misc bug in rpmdrake (selecting a pkg doesn't work in
- certain circumstances - seems to be when the treeview doesn't have the
- focus, for exa
- mple after a search) by changing a bit the way we handle
- button_press_event in ask_browse_tree_info
-
-2003/01/08 Pixel <pixel@mandrakesoft.com>
-
- * network/network.pm: pass $::prefix instead of ''
- fix typo
- (easy_dhcp): cleanup
-
- * install2.pm: UGLY TEMPORARY FIX: create an /etc/passwd for fontconfig
-
- * ugtk2.pm: ensure drakx don't need wiz_default_up.png and
- wiz_default_left.png
-
-2003/01/08 Till Kamppeter <till@mandrakesoft.com>
-
- * printer/office.pm: Fixed Titi's bugs in the auto-configuration of
- printers in OpenOffice.org.
-
-2003/01/08 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer/printerdrake.pm: once we identify the protocal, skip remaining
- tests
-
- * printer/office.pm:
- - typo fix
- - s/if !/unless/
- - remove useless next
-
-2003/01/08 Pixel <pixel@mandrakesoft.com>
-
- * ugtk2.pm: ensure drakx don't need wiz_default_up.png and
- wiz_default_left.png
-
-2003/01/07 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: "require bootloader" where needed
-
- * interactive/gtk.pm, install_steps_gtk.pm, install_gtk.pm, install2.pm,
- ugtk2.pm:
- - remove help (which was at the bottom)
- - wizard style
- - focus "Next" button by default (this is rough, some dialog boxes
- *need* changes
- before being able to complete (think root password dialog))
-
- * diskdrake/hd_gtk.pm: fix ugly global setting of $ugtk2::pop_it
-
-2003/01/07 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - new way to use request help
-
- * standalone.pm:
- - compress code (pixel)
- - use ask_warn when no browser is found on the system and BROWSER env
- var not set.
-
-2003/01/07 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: add network::easy_dhcp function. Quietly setup eth0
- in dhcp and restart network.
-
-2003/01/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/tree/etc/issue: version 9.1 cooker
-
- * rescue/devices.pl: init doesn't like anymore that /etc/initctl is
- already here
- (breaks any communication to init :/); remove /etc/initctl from
- the initial filesystem, and let init create it as a fifo during
- boot
-
-2003/01/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/th.po: converted th.po to UTF-8
-
- * share/po/pl.po: converted pl.po to utf-8
-
-2003/01/07 Pixel <pixel@mandrakesoft.com>
-
- * steps.pm: move "configureX" step before "summary" step
- move setupBootloader before summary
-
- * any.pm: "require bootloader" where needed
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
- - part of setupBootloader() are now in setupBootloader__mbr_or_not(),
- setupBootloader__general() and setupBootloader__boot_bios_drive()
- - this allows the creation of the new setupBootloader_simple() which
- is
- somehow similar to the old setupBootloader() in beginner mode
- - setupBootloader() is now always expert mode
-
- * printer/printerdrake.pm:
- - fix autodetection code (remember me to teach titi that "and" in list
- context is bad)
- - use printer::detect::whatNetPrinter directly (instead of
- net_detect() +
- net_smb_detect()), it is faster when one wants both
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * install_steps_interactive.pm (summary): add X configuration
- (configureX): this step is now always automatic. don't call
- configureXAfter() when config failed
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
- - adapt to new setupBootloader
- - add bootloader configuration in summary (still rough)
- - various cleanup
-
- * crypto.pm: cleanup and add a comment (!)
-
- * install_steps.pm: cleanup
- fix looking for broken alternatives
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
- - adapt to new setupBootloader
- - add bootloader configuration in summary (still rough)
- - various cleanup
-
- * network/network.pm, Xconfig/xfreeX.pm, network/smb.pm, lang.pm,
- network/drakfirewall.pm, raid.pm, diskdrake/smbnfs_gtk.pm,
- partition_table.pm, printer/main.pm, diskdrake/interactive.pm, pkgs.pm,
- interactive/newt.pm, fs.pm, standalone/drakfont, network/ethernet.pm,
- common.pm, detect_devices.pm, modules.pm, install_any.pm, timezone.pm:
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * Xconfig/card.pm (configure): do not do card_config__not_listed in $auto
- mode
- (configure): return without doing anything when probe fails or
- needVideoRam in $auto mode
- (multi_head_choose): be completly automatic in $auto mode
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * bootloader.pm: use "if any" instead of "if grep", and various other
- occurences of "any", "every", "partition"
- (method_choices): returns the choices of bootloaders (lilo, grub,
- yaboot...) + cleanup
- (suggest_onmbr): "lilo" and "grub" are now "unsafe" "on_mbr" choices
- - renaming of $lilo with $bootloader
- - $bootloader->{methods} is replaced by the much simpler
- $bootloader->{method},
- the special handling of grub (which need to also generate lilo.conf)
- is nicely handled in bootloader::install()
- - cleanup error handling: it was using the ugly (though safe)
- /tmp/.error
- temporary file, better use an exception
-
- * printer/detect.pm (detect): don't use net_smb_detect() and net_detect(),
- call
- whatNetPrinter() directly asking for both network & smb (faster)
-
- * Xconfig/various.pm (various): in $auto mode, don't ask about tvout
-
- * install_gtk.pm, install_steps_gtk.pm:
- - remove help (which was at the bottom)
- - wizard style
- - focus "Next" button by default (this is rough, some dialog boxes
- *need* changes
- before being able to complete (think root password dialog))
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * install_interactive.pm: fsedit::part2hd() returns a scalar, no need to
- do "my ($hd) = fsedit::part2hd(...)"
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * ugtk2.pm, interactive/gtk.pm:
- - remove help (which was at the bottom)
- - wizard style
- - focus "Next" button by default (this is rough, some dialog boxes
- *need* changes
- before being able to complete (think root password dialog))
-
- * diskdrake/hd_gtk.pm: fix ugly global setting of $ugtk2::pop_it
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * interactive.pm: fix ask_okcancel in wizard mode
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
- nicer debug message
-
- * Xconfig/resolution_and_depth.pm (configure): in $auto mode, use
- $default_resolution without asking
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * Xconfig/monitor.pm: don't do anything when automatic configuration fails
- in $auto mode
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * Xconfig/main.pm (configure_everything): in $auto mode, don't test nor
- ask when the config failed
-
- * fsedit.pm: fsedit::part2hd() returns a scalar, no need to do "my ($hd) =
- fsedit::part2hd(...)"
- fix typo (operator priority related)
- use "if any" instead of "if grep", and various other occurences of
- "any", "every", "partition"
-
- * partition_table/raw.pm: use internal_error instead of die for better
- error message (esp. backtrace)
-
- * install2.pm:
- - remove help (which was at the bottom)
- - wizard style
- - focus "Next" button by default (this is rough, some dialog boxes
- *need* changes
- before being able to complete (think root password dialog))
- cleanup
- - adapt to new setupBootloader
- - add bootloader configuration in summary (still rough)
- - various cleanup
-
-2003/01/07 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: forgot to commit threat-hub-as-usb-controllers...
-
- * standalone/draksound: perl_checker fix
- let it ask for root capabilites if launched in standalone mode
-
- * printer/printerdrake.pm: printerdrake is back alive
-
- * printer/gimp.pm: fix new data structure usage
- fixes
- - remove useless $_ setting
- - simplify overgianted look for functions
- - mask isprinterconfigured() as bogus: if $done is 1 then
- $sectionfound *is* already 1
- - simplify by reusing list_passwd()
- - simplify program flow
- - one perl_checker fix
- - simplify directories list building
- - simplify test: if a file is a plain regular file, testing if it's a
- directory is useless;
- anyway, this test is probably bogus and should just be -e and not -f
-
- * printer/office.pm: fix new data structure usage
-
- * printer/main.pm: printerdrake is back alive
- perl_checker fix
- beautify
- simplif installed spoolers "detection"
-
- * Xconfig/card.pm: fix pixel sucks(bis)
-
- * ugtk2.pm: CList and CTree being deprecated and unsupported in perl-gtk2,
- don't bother handle them
-
- * drakxtools.spec: 9.1-0.9mdk
- 9.1-0.8mdk
-
- * Xconfig/resolution_and_depth.pm: fix pixel sucks
-
-2003/01/07 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (method_choices): returns the choices of bootloaders
- (lilo, grub, yaboot...) + cleanup
- (suggest_onmbr): "lilo" and "grub" are now "unsafe" "on_mbr" choices
- - renaming of $lilo with $bootloader
- - $bootloader->{methods} is replaced by the much simpler
- $bootloader->{method},
- the special handling of grub (which need to also generate lilo.conf)
- is nicely handled in bootloader::install()
- - cleanup error handling: it was using the ugly (though safe)
- /tmp/.error
- temporary file, better use an exception
-
- * any.pm:
- - part of setupBootloader() are now in setupBootloader__mbr_or_not(),
- setupBootloader__general() and setupBootloader__boot_bios_drive()
- - this allows the creation of the new setupBootloader_simple() which
- is
- somehow similar to the old setupBootloader() in beginner mode
- - setupBootloader() is now always expert mode
-
- * interactive.pm: nicer debug message
-
- * steps.pm: move setupBootloader before summary
-
- * install_steps.pm, install2.pm, install_steps_interactive.pm:
- - adapt to new setupBootloader
- - add bootloader configuration in summary (still rough)
- - various cleanup
-
-2003/01/06 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone.pm:
- - perl checker
- - no retval
- - function on_request_help to display online help.
- - use it as callback to help button or help menu.
-
- * standalone/drakbug:
- - support help system
- - remove unused function
-
-2003/01/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: synchronized with XFree86 4.2.99 keyboard layout names
-
-2003/01/06 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: fix typos (thanks
- perl_checko!)
- selectInstallClass now automatically detect if an existing install is
- there,
- and propose update or install based on this
-
- * bootloader.pm: when reading existing config, remove double quotes around
- the default label
-
- * install2.pm (selectKeyboard): read existing keyboard config even if not
- upgrading (it
- won't do anything when not upgrading :)
- (selectInstallClass): do not move step doPartitionDisks after setupSCSI
- on
- upgrade (since the "upgrade" part of the job of doPartitionDisks is now
- done in selectInstallClass)
- (selectMouse): "addToBeDone mouse::write()" was done only on upgrade,
- replace it with an "addToBeDone" done in any case which only does
- "mouse::write()" if $o->{isUpgrade} is set (since isUpgrade *will* be
- set
- correctly but is not set at this step)
-
- * steps.pm:
- - selectMouse is now just after selectLanguage
- - selectSCSI is before selectInstallClass
-
- * Makefile: when taking files from perl-GTK2, don't
- /usr/lib/libDrakX/ugtk2.pm since we don't need it
-
- * install_interactive.pm (partition_with_diskdrake): fix reloading
- partition table
-
- * common.pm: common::secured_file() is a wrapper around
- c::is_secure_file()
-
- * any.pm: fix "Where do you want to install the bootloader?" dialog box
-
- * fs.pm (mount): do not fsck.ext2 when mounting readonly
-
- * swap.pm: replace *F with $F
- fix an *old* bug causing pbs when formatting more than one partition
- using
- format v0 (occurs when the sizes differ)
-
-2003/01/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: require a recent enough ldetect-lst for fixed usb hubs
- detection
- 9.1-0.7mdk
-
- * printer/main.pm: fix displaying list of availlable printer spoolers
-
- * printer/printerdrake.pm: fix displaying of spooler list
-
- * printer/gimp.pm: fix printerdrake regarding gimp configuration
-
- * standalone/logdrake: perl_checker fixes
- prevent one to write in log buffer
-
- * printer/data.pm: put full data in all variants of the data structure
-
- * share/po/fr.po: update french translation
-
-2003/01/05 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: in bootloader configuration, add return values to Add and Remove
- callbacks
-
- * interactive.pm:
- - callbacks "Add", "Modify" and "Remove" return undef when they fail
- - callback "Add" return the new added element (not handled by
- interactive emulation, but correctly handled by interactive::gtk native
- ask_from__add_modify_removeW)
-
-2003/01/05 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: in bootloader configuration, add return values to Add and Remove
- callbacks
-
- * interactive.pm:
- - callbacks "Add", "Modify" and "Remove" return undef when they fail
- - callback "Add" return the new added element (not handled by
- interactive emulation, but correctly handled by interactive::gtk native
- ask_from__add_modify_removeW)
-
- * interactive/gtk.pm: add ask_from__add_modify_removeW gtk handling
-
-2003/01/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix missing "use modules::interactive"
- (thanks to David Eastcott)
-
-2003/01/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/stuff.xs.pl: dgettext needs to have previous behaviour in standalone
- mode (fixes #736)
-
-2003/01/03 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: fix call to method ask_from__add_modify_removeW
-
- * interactive/gtk.pm (create_treeview_list): fix setter
- - factorize the creation of the {formatted_list} from {list} for
- create_boxradio, create_treeview_list, create_treeview_tree
- - an added advantage for create_treeview_list is the ability to easily
- change
- {list}, {formatted_list} and Gtk2::ListStore without breaking keyboard
- acceleration (see next commit for a usage of this feature)
-
- * ugtk2.pm (create_packtable): ScrolledWindow are not the only one allowed
- to grow,
- widgets with get_data('must_grow') set are allowed too
-
- * printer/printerdrake.pm (first_time_dialog): much cleanup (but not
- tested)
-
- * mdk-stage1/minilibc.c: add symbols __libc_csu_fini and __libc_csu_init
- to be compatible with new glibc (?)
-
-2003/01/02 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/test.pm: X test is now working :)
-
-2003/01/03 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: fix call to method ask_from__add_modify_removeW
-
- * mdk-stage1/minilibc.c: add symbols __libc_csu_fini and __libc_csu_init
- to be compatible with new glibc (?)
-
-2003/01/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: titi's message annoys me too much.. removing it
-
-2003/01/02 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: replace any::load_category() with
- modules::interactive::load_category()
-
- * Xconfig/test.pm: X test is now working :)
-
- * interactive.pm (ask_from__add_modify_remove): check all callbacks are
- given
- (ask_from__add_modify_remove): fix
- add ask_from__add_modify_remove, and use it for bootloader entries
-
- * any.pm: add ask_from__add_modify_remove, and use it for bootloader
- entries
-
-2003/01/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm:
- - Layout widget has native scrolling support
- - shadow parameter can always be used
-
- * standalone.pm: fixes for wizards
-
- * drakxtools.spec: 9.1-0.6mdk
- merge in back external stefan changes
-
- * standalone/logdrake: embedding fixes
-
-2002/12/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fi.po: updated Finnish file
-
-2002/12/29 Pixel <pixel@mandrakesoft.com>
-
- * network/ethernet.pm: move any::load_category() to
- network::interactive::load_category()
- (and a few other functions which are only used by load_category())
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
- * printer/gimp.pm: set_permissions() doesn't want the given file to be
- $::prefix'ed
-
- * network/network.pm, standalone/drakproxy:
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
- * pkgs.pm: use "our" instead of "use vars"
- *pkg::LOG is unused, so don't export it
-
- * install_steps.pm: move any::runlevel() to Xconfig::various::runlevel()
- - move any::choose_security_level() to security::level::level_choose()
- - move any::config_security_user() to
- security::various::config_security_user()
- - move any::config_libsafe() and security::libsafe::config_libsafe()
- to security::various::config_libsafe()
- no need to close *pkgs::LOG, pkgs handles it nicely now
-
- * install_steps_interactive.pm: move any::keyboard_group_toggle_choose()
- to keyboard::group_toggle_choose()
- - move any::choose_security_level() to security::level::level_choose()
- - move any::config_security_user() to
- security::various::config_security_user()
- - move any::config_libsafe() and security::libsafe::config_libsafe()
- to security::various::config_libsafe()
- cleanup comments
-
- * security/various.pm: deprecates security::libsafe
-
- * security/level.pm, security/libsafe.pm, install2.pm:
- - move any::choose_security_level() to security::level::level_choose()
- - move any::config_security_user() to
- security::various::config_security_user()
- - move any::config_libsafe() and security::libsafe::config_libsafe()
- to security::various::config_libsafe()
-
- * network/modem.pm: in network::modem::configure $intf is unused, rename
- it to $_intf
- - do not use a global $in in network::modem, pass it as a parameter
- - create network::modem::ppp_configure_raw() which doesn't need $in
- (it is only used by network::modem::ppp_configure(), but this is clearer
- that way)
- - use $::prefix instead the global $prefix
- - don't pass $prefix to ppp_configure
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
- * Xconfig/various.pm, bootlook.pm, Xconfig/main.pm: move any::runlevel()
- to Xconfig::various::runlevel()
-
- * keyboard.pm, standalone/keyboarddrake: move
- any::keyboard_group_toggle_choose() to keyboard::group_toggle_choose()
-
- * network/netconnect.pm:
- - do not use a global $in in network::modem, pass it as a parameter
- - create network::modem::ppp_configure_raw() which doesn't need $in
- (it is only used by network::modem::ppp_configure(), but this is clearer
- that way)
-
- * standalone/drakconnect: any::load_category_no_message() doesn't exist
- anymore, it really is modules::load_category() !
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
- * modules/interactive.pm: move any::load_category() to
- network::interactive::load_category()
- (and a few other functions which are only used by load_category())
-
- * any.pm: cleanup (using ask_from instead of ask_from_listf_)
- cleanup (using "format => ...")
- move any::load_category() to network::interactive::load_category()
- (and a few other functions which are only used by load_category())
- move any::keyboard_group_toggle_choose() to
- keyboard::group_toggle_choose()
- move any::runlevel() to Xconfig::various::runlevel()
- - move any::choose_security_level() to security::level::level_choose()
- - move any::config_security_user() to
- security::various::config_security_user()
- - move any::config_libsafe() and security::libsafe::config_libsafe()
- to security::various::config_libsafe()
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
- * network/isdn.pm:
- - do not use a global $in in network::modem, pass it as a parameter
- - create network::modem::ppp_configure_raw() which doesn't need $in
- (it is only used by network::modem::ppp_configure(), but this is clearer
- that way)
- - move any::pppConfig() to network::modem::ppp_configure()
- - move any::miscellaneousNetwork() to
- network::network::proxy_configure()
- (and uses the parameter instead of $::o->{miscellaneous})
- - move network::network::miscellaneousNetwork() to
- network::network::miscellaneous_choose()
- (and do not export it)
- (and uses a parameter instead of $::o->{miscellaneous})
- - move network::modem::pppConfig() to network::modem::ppp_choose()
- (and change parameter order, and drop unused parameter $intf)
- - do not export network::network::write_interface_conf()
- (since it is only used locally (?))
- - cleanup network::network::write_interface_conf()
- (one still needs to pass $::o->{miscellaneous}{track_network_id} more
- cleanly, and use run_program::rooted when calling /sbin/ip)
-
-2002/12/28 Pixel <pixel@mandrakesoft.com>
-
- * standalone.pm: don't import everything from "common" (including
- MDK::Common::*) to get rid of
- warnings "Subroutine renamef redefined ..." "Subroutine linkf redefined
- ..."
- ... (but I don't understand how to make explainations on common_functs
- work?!)
-
- * printer/gimp.pm:
- - mkdir_p throws an exception on error, so "mkdir_p() or ..." is dumb,
- fixing
- (thanks to Lea Gris)
- - use output()
-
-2002/12/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: Updated Portuguese file
-
-2002/12/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * lang.pm: CJK font names changes (still doesn't work :/)
-
- * share/list: perl's automatic utf8 handling will need these files (will
- try to do better in the future)
-
- * install_steps_gtk.pm: fix 'bold' advertisements
-
- * share/fonts.tar.bz2: use another default font
- have a default fixed alias for a font which will always be here even in
- ramdisk
-
- * tools/make_mdkinst_stage2: fonts changes (doesn't work with CJK (at
- least) in ramdisk, though)
-
- * Xconfig/resolution_and_depth.pm: workaround gtk bug in
- gtk_entry_set_text
- fix titi porting gtk2 without testing enough..
-
- * interactive/gtk.pm: be more efficient in precomputing, previous
- situation could lead to several tens of seconds of wait in
- XFdrake-monitor
-
-2002/12/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po: updated Brazilian file
-
-2002/12/23 Pixel <pixel@mandrakesoft.com>
-
- * printer/printerdrake.pm: help perl_checker (interactive is used even if
- the constructor is not there)
-
- * Xconfig/resolution_and_depth.pm: fix setting size of depth combo
-
-2002/12/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * lang.pm: simplify since we don't use X11 fonts (we can't since
- GDK_USE_XFT is not switchable once program is launched)
-
- * mouse.pm: image in CVS is 3b+, not 3bp
-
- * share/themes-mdk.rc: allow gtk2 theme engine to find pixmaps
-
- * share/list, Makefile: list files changes for gtk2 (is that really
- optimal to have utf8.pm and utf8_heavy.pl?)
-
-2002/12/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
- updated Portuguese file
-
- * share/fonts.tar.bz2: updated fonts tarball, all old bitmap fonts have
- been removed,
- now it only includes:
- - an OpenType font with glyphs for latin and cyrillic
- - two unicode encoded bitmap fonts with glyphs for CJK and Greek
- (and it could be used for non latin/cyrillic scripts for which there
- isn't any outline font available).
- Those fonts are based on fonts shipped with XFree86 (Nimbus Sans L and
- "misc-fixed"), but with some modifications (extra glyphs added to
- complete the "holes" in latin and cyrillic for the outline font,
- added a few missing chines chars and changed ascii portion from
- monospaced
- to varaible width for the bitmap fonts (so the visual output is
- better)).
- The choice of bitmap fonts for CJK has been done due to the very huge
- size of CJK outline fonts.
-
- * share/po/fi.po: updated Finnish file
-
- * share/po/eo.po: Small change in Esperanto file
-
-2002/12/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: gtk+2 support for plug/socket is back since 2.1.5-2mdk
-
-2002/12/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/doc/README: meuh
-
-2002/12/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
- * share/po/ta.po: Converted Tamil file to utf-8
-
-2002/12/19 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: add "make test_pms_all"
-
- * standalone/.perl_checker: use libDrakX from CVS (ie. ..) in perl_checker
-
- * printer/cups.pm, printer/main.pm, printer/printerdrake.pm:
- - printer::main::read_cups_printer_list() is now
- printer::cups::read_printer_list() (but it is unused!)
- - printer::main::get_cups_remote_queues() is now
- printer::cups::get_formatted_remote_queues()
- - cleanup printer::cups::get_remote_queues() using
- printer::cups::lpstat_v()
-
- * standalone/drakupdate_fstab: any::get_secure_level() doesn't exist
- anymore, use security::level::get() instead (fix titi change)
-
- * printer/gimp.pm: do not use "$1 !~ ..."
-
-2002/12/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: conflict with "non gtk+-2 aware" releases of mcc
- 9.1-0.4mdk
-
-2002/12/18 Pixel <pixel@mandrakesoft.com>
-
- * any.pm, .perl_checker, install_any.pm: new features including checking
- unused functions, and checking methods being available
-
- * install2.pm, partition_table.pm: enumerate the various required packages
- when requiring a package dynamically known
-
- * standalone.pm, Newt/Newt.pm: help perl_checker knowing packages are used
- as classes
-
- * diskdrake/interactive.pm, lvm.pm, fsedit.pm: add "new" to lvm.pm, and
- use it
-
- * .cvsignore: ignore .perl_checker.cache
-
-2002/12/18 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: XFdrake gtk+-2
-
- * Xconfig/test.pm: fix
- XFdrake gtk+-2
-
- * standalone/drakperm:
- - basic gtk+-2 port (edition is not ready yet)
- - perl_checker fixes
-
- * ugtk2.pm: perl_checker fixes
- disable embedded mode for now due to gtk+-2 bugs
- fix wizards and draconnect:
- it's the same code as in old my_gtk but i don't understand
- how it could have worked...
- yet the logic is quite simple : we add the "previous" button only if
- we're not in the wizard's first page; but the "next/finish" button
- must still be added, else the wizard is quite unusefull :-(
-
- * standalone/harddrake2, harddrake/data.pm: saner default size (too big
- for 800x600 sadly)
-
- * standalone/drakconnect: refresh: remove current interfaces before
- readding them, like it was
- before
- - consolidate some code into new_dialog
- - simplify through MDK::Common
- perl_checker fixes
- - gtk+-2 port is completed (switch from CList to TreeView)
- - gtk+-2 minor fixes (use new API rather than old one)
- - fix non wizard mode (add to frame not to window which is already
- full)
- - wizard mode is fixed by previous ugtk2 fix
- - simplify through MDK::Common
- fix drakconnect warnings
-
-2002/12/17 alus
-
- * share/po/pl.po: updated
-
-2002/12/17 Daouda Lo <daouda@mandrakesoft.com>
-
- * ugtk2.pm:
- - export gtkappend_page
- - add gtkappend_page function (for gui building wizard)
-
-2002/12/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
-2002/12/16 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm: fix english typo (thanks to J. Grant)
-
- * mouse.pm: really drop update_type_name
-
- * fsedit.pm: really drop check()
-
- * standalone/drakautoinst: use ->method syntax for method call
-
-2002/12/16 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: build automatically the font description if needed
- fix string_size() usage in get_text_coord()
-
-2002/12/14 Pixel <pixel@mandrakesoft.com>
-
- * network/netconnect.pm: do not export start_internet and stop_internet
- (was broken since network::netconnect do not inheritate from Exporter)
-
-2002/12/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_messages.pm: must return a true value
-
- * interactive/gtk.pm: expand_row no longer bugs, great :)
-
- * c/stuff.xs.pl: iconv_ is needed all the times, not only in drakx
-
-2002/12/13 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (kdeicons_postinstall): drop (unused)
-
- * detect_devices.pm: drop hasUltra66 (unused)
-
- * any.pm, bootloader.pm: drop loadlin handling
-
- * network/network.pm, ugtk.pm, my_gtk.pm, printer/data.pm,
- partition_table.pm, ugtk2.pm: remove exported names which are not
- defined
-
- * printer/main.pm: commit the real code, not the debug code :-(
- put back the comment
- (read_cups_printer_list, get_cups_remote_queues): much cleanup
-
- * fsedit.pm (check): drop it (unused, maybe you should use
- diskdrake::interactive::check instead)
-
- * services.pm: use wrap_text (instead of handcoding it)
-
- * Xconfig/various.pm (show_info): drop (unused)
-
- * timezone.pm (sexProb): drop (unused!)
-
- * standalone/drakbackup: replace "%" with "%%" in translated string
-
- * mouse.pm (update_type_name): drop (unused (?))
-
- * bootlook.pm: drop unused function
-
- * fs.pm (add_options): drop (unused, use mount_options_unpack +
- mount_options_pack instead)
- (mount_all): drop (unused, use formatMount_all instead)
-
-2002/12/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Makefile.drakxtools, Makefile: fix installation after pixel changes
-
- * drakxtools.spec: fix {build,}requires for gtk+2
-
- * ugtk.pm: remove uneeded variables
-
- * standalone.pm: remove double
- move draksec's gui into the standalone program,
- nobody will uses it so it's useless to load drakx with it.
- also use common cli options managment
-
- * standalone/harddrake2: perl_checker fixes
-
- * security/main.pm, standalone/draksec: move draksec's gui into the
- standalone program,
- nobody will uses it so it's useless to load drakx with it.
- also use common cli options managment
-
-2002/12/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po, share/po/he.po: Added a starting Hebrew file; updated
- Portguese file
-
-2002/12/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: remove unused variable $clicked
- remove some $::expert
- remove beginner/expert choice
-
- * install_steps_gtk.pm: remove beginner/expert choice
-
- * ugtk.pm: unused variables renamed with a leading underscore (some code
- should be removed?)
-
- * diskdrake/hd_gtk.pm: when clicking on one of the legend buttons together
- with an existing partition
- selected, it doesn't change the partition type, it tells to use "Type"
- (it used to be ignored in non-expert, and do a change type in expert)
-
- * install2.pm: drop options "fexpert" and "fbeginner" which used to skip
- the choice expert/beginner
-
-2002/12/12 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: simplify
- add gtkmodify_font() and gtkset_property()
-
- * standalone/harddrake2: better english
- don't confuse people by altering sentences that could have been
- interpreted as questions
- - s/::/:/ on cpu info
- - print field names in bold blue rather than just blue
-
-2002/12/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/pt.po: updated Portuguese and Chinese files
-
-2002/12/11 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk2.pm: reuse already consolided code
- reuse already consolided code
- add set_back_pixbuf() to let a widget paint itself a pixbuf in its
- background rather that doing this ourselves in rpmdrake or mcc
-
-2002/12/10 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile, share/po/fake_c.pl: use "perl_checker --generate-pot"
- instead of fake_c + xgettext
-
- * Xconfig/test.pm: do not duplicate "An error occurred ..." t10n string
-
- * any.pm, bootloader.pm: perl_checker --generate-pot is a bit picky about
- the localisation of "#-PO:" comments
-
- * install_steps_interactive.pm: fix % in translated string (it must be %%)
-
- * standalone/drakbug, standalone/logdrake, standalone/drakfloppy,
- standalone/drakTermServ, standalone/drakautoinst, standalone/drakbackup,
- standalone/drakconnect, standalone/drakxtv: minimal perl_checker fixes
- to have only warnings
-
- * Makefile.config: service_harddrake.sh is not a PM, so i remove it from
- STANDALONEPMS_
- live_install is a shell script, do not pretend it's perl ;p
-
-2002/12/10 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * network/netconnect.pm, network/tools.pm, network/isdn.pm,
- standalone/drakTermServ, standalone/drakxtv: perl_checker fixes
-
- * standalone/harddrake2: no gratuitously tab
-
- * standalone/draksplash:
- - gtk+2 port
- - "use strict" fixes
- - perl_checker fixes
-
- * standalone/drakconnect: perl_checker fixes
- fix gtk+2 port
-
-2002/12/09 adesmons
-
- * network/netconnect.pm: make perl_checker happy
- drakconnect conf file no more uploaded with now useless variable
-
- * network/adsl.pm: drakconnect conf file no more uploaded with now useless
- variable
-
-2002/12/09 Pixel <pixel@mandrakesoft.com>
-
- * share/themes-blackwhite.rc, share/themes.rc, share/themes-savane.rc:
- remove already obsolete themes
-
- * my_gtk.pm, ugtk2.pm: remove dynamic theme choosing, and next/previous
- (F11/F12) handling
- remove code handling setstep
-
- * diskdrake/hd_gtk.pm, diskdrake/interactive.pm, install_interactive.pm:
- - handle more locally "Reload partition table" (esp. without using
- setstep)
- => no exception is called through gtk
-
- * interactive/newt.pm, install2.pm: remove code handling setstep
-
- * install_steps_gtk.pm, install_messages.pm, install_steps_interactive.pm:
- move long messages (like license) to a new package: install_messages.pm
-
- * install_gtk.pm: remove unused variable ($step_name)
- remove code handling setstep
-
- * any.pm: remove old code
-
-2002/12/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * network/isdn.pm: remove unused modules
-
-2002/12/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po: updated Brazilian file
-
-2002/12/07 alus
-
- * share/po/pl.po: update
- update
-
-2002/12/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sq.po: Added Albanian file
-
-2002/12/06 adesmons
-
- * network/netconnect.pm, network/tools.pm, network/modem.pm,
- network/isdn.pm, network/adsl.pm: isdn data are now fetched form system
- instead of drakconnect conf file
-
-2002/12/06 alus
-
- * share/po/pl.po: removed unuset texts
-
-2002/12/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: don't use unless
-
- * c/stuff.xs.pl: add bind_textdomain_codeset, iconv the dgettext results
- to UTF8 since perl seems to mess with that when trying to do so from
- within gtk2-perl (with sv_utf8_upgrade)
-
- * install_gtk.pm: better style
-
- * interactive/gtk.pm: 2.1.3 doesn't have trouble with expand_to_path
-
- * lang.pm: perl checker OwnZ Da W3rld
- misc
-
- * bootlook.pm: perl_checker help'ed fix
- s/Gtk->/Gtk2->/
-
-2002/12/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po, share/po/vi.po: updated po file
-
-2002/12/06 Pixel <pixel@mandrakesoft.com>
-
- * network/isdn.pm, standalone/XFdrake: be more perl_checker compliant
-
-2002/12/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_gtk.pm: fix syntax & style
-
- * lang.pm: try to fix charset2pango_font
- fix syntax & style
- add bind_textdomain_codeset
-
- * ugtk2.pm: remove unused $_lan
-
-2002/12/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * standalone/harddrake2, share/po/DrakX.pot, standalone/net_monitor: Fixed
- some typos or bad English
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/Makefile,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/cs.po,
- share/po/bg.po, share/po/el.po, share/po/hu.po: updated po files
-
- * install_gtk.pm: two pango font names, for 10 and 12 sizes
- made some functions to retrieve pango font namese from lang/charset
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: Changed the way
- locale->encoding is handled; revert to the old way which was
- working.
- And changed the charset to use during install to UTF-8 for all but CJK
- locales,
- in the X11 locale config files and in lang.pm;
- So, the same values of LC_* variables are used as before; but they
- should
- point, in glibc and in X11, to UTF-8 locales now
-
- * lang.pm: made some functions to retrieve pango font namese from
- lang/charset
- Changed the way locale->encoding is handled; revert to the old way which
- was
- working.
- And changed the charset to use during install to UTF-8 for all but CJK
- locales,
- in the X11 locale config files and in lang.pm;
- So, the same values of LC_* variables are used as before; but they
- should
- point, in glibc and in X11, to UTF-8 locales now
-
-2002/12/05 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: parameter passing using $_ is bad
-
- * any.pm: format => sub { ...} doesn't pass parameter as $_, but as $_[0]
-
- * printer/main.pm: $_ was not localized, fixing (and cleanup)
-
- * bootlook.pm: fix typo, be perl_checker compatible
- packages should not "use lib qw(/usr/lib/libDrakX)"
-
- * partition_table.pm: replace "map $_->{normal}, @l" with "map {
- $_->{normal} } @l"
- (the other form is perl_checker-deprecated)
-
- * standalone.pm: remove unused variables or rename them with an underscore
- (eg: $o becomes $_o)
-
-2002/12/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/mousedrake: gtk+2 port (how difficult it was ...)
-
- * network/netconnect.pm: gtk+-2 port
-
- * c/Makefile.PL: glib-config is obsolete now
- gtk+-2 port
-
- * modules/interactive.pm: bug fix
-
- * standalone/drakTermServ, standalone/drakconnect: use gtkflush()
-
- * drakxtools.spec: pre gtk+2 work snapshot for mcc (mandrake_release() and
- the like
-
- * standalone/drakgw: gtk+2 fixes
-
- * bootlook.pm: use gtkflush()
- start gtk+2 port; perl-gtk2 is expected to implement
- Gtk::Image->set_from_pixbuf()
-
- * standalone/drakautoinst: use gtkflush()
- gtk+2 port
-
- * standalone/harddrake2: s/describe/describes/
-
- * standalone/drakfont: fix gtk+-2 port
- don't use anymore deprecated widgets
-
- * services.pm: drakxservices' gtk+-2 port
-
- * standalone/logdrake: fix gtk+2 port
-
-2002/12/04 adesmons
-
- * network/netconnect.pm, network/tools.pm, network/network.pm,
- network/modem.pm: More data are now fetched from system instead of
- drakconnect conf file
-
-2002/12/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/locales-skeleton.tar.bz2: added recognition of locale named
- "en_US.UTF-8"
-
- * lang.pm: made 'en_US.UTF-8' the default locale for LC_* varaibles during
- isntall
-
- * share/fonts.tar.bz2: Put Nimbus Sans L as default font
- put back the default iso8859-15 fonts used by install.rc
-
- * install_gtk.pm: put "Nimbus Sans L" as used font
- try of Gtk2 font definitions
-
-2002/12/04 Pixel <pixel@mandrakesoft.com>
-
- * network/adsl.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- syntax changes to make perl_checker happy
-
- * install_steps.pm: remove unused code (installCrypto)
- remove unused variables or rename them with an underscore (eg: $o
- becomes $_o)
- do not use "local *F"
-
- * install_steps_interactive.pm, install2.pm: remove unused code
- (installCrypto)
- remove unused variables or rename them with an underscore (eg: $o
- becomes $_o)
-
- * interactive.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- "require log" causes some pb, perl thinking that "log" is the log()
- function. So replace it with require 'log.pm' (perl_checker will handle
- this)
-
- * fsedit.pm: remove unused variables or rename them with an underscore
- (eg: $o becomes $_o)
- use if_() where possible (as reported by perl_checker)
- don't use "local *F"
-
- * interactive/stdio.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- fix typo
-
- * crypto.pm: use if_() where possible (as reported by perl_checker)
-
- * my_gtk.pm, ugtk.pm, printer/printerdrake.pm, ugtk2.pm,
- install_steps_gtk.pm, printer/main.pm, fs.pm, bootloader.pm: remove
- unused variables or rename them with an underscore (eg: $o becomes $_o)
- use if_() where possible (as reported by perl_checker)
-
- * scanner.pm: remove unused variables or rename them with an underscore
- (eg: $o becomes $_o)
- $prefix is no good, replace it with $::prefix
-
- * partition_table/dos.pm, partition_table/sun.pm, partition_table/bsd.pm,
- partition_table/empty.pm, keyboard.pm, partition_table/lvm_PV.pm: do not
- use "local *F"
-
- * printer/office.pm, Xconfig/parse.pm, network/smb.pm, mouse.pm,
- resize_fat/io.pm, Xconfig/xfree4.pm, network/drakfirewall.pm,
- Xconfig/main.pm, diskdrake/smbnfs_gtk.pm, partition_table.pm,
- printer/common.pm, diskdrake/interactive.pm, pkgs.pm,
- install_steps_auto_install.pm, diskdrake/hd_gtk.pm, Xconfig/monitor.pm,
- install_any.pm, diskdrake/removable.pm, network/isdn.pm, swap.pm,
- resize_fat/directory.pm, devices.pm, commands.pm,
- install_interactive.pm, printer/gimp.pm, any.pm, interactive/http.pm,
- printer/detect.pm, ftp.pm, services.pm, interactive/newt.pm,
- resize_fat/dir_entry.pm, network/ethernet.pm,
- Xconfig/resolution_and_depth.pm, Xconfig/test.pm, diskdrake/dav.pm,
- network/smbnfs.pm, interactive/gtk.pm, network/nfs.pm: remove unused
- variables or rename them with an underscore (eg: $o becomes $_o)
-
- * standalone.pm: no need to "require common", it is "use"d
- "require log" causes some pb, perl thinking that "log" is the log()
- function. So replace it with require 'log.pm' (perl_checker will handle
- this)
-
- * network/tools.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- my' variables as needed
-
- * security/main.pm, network/modem.pm: remove unused variables or rename
- them with an underscore (eg: $o becomes $_o)
- syntax changes to make perl_checker happy
- syntax changes to make perl_checker happy
-
- * network/network.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- syntax changes to make perl_checker happy
- use if_() where possible (as reported by perl_checker)
-
- * network/netconnect.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- - %l is not used, so why declare it??
- - in network::netconnect::main(), declare @l as it should be. But the
- code is really wrong, it NEEDS fixing (bis)
- syntax changes to make perl_checker happy
- use if_() where possible (as reported by perl_checker)
- syntax changes to make perl_checker happy
-
- * partition_table/mac.pm, modules.pm, partition_table/raw.pm, loopback.pm:
- remove unused variables or rename them with an underscore (eg: $o
- becomes $_o)
- do not use "local *F"
-
- * partition_table/gpt.pm: remove unused variables or rename them with an
- underscore (eg: $o becomes $_o)
- fix typo ($hd is not available in read_header(), so don't use it)
- do not use "local *F"
-
-2002/12/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/harddrake2:
- - free objects non freeed by gtk+ (the eternal gobject vs boxed types
- debat)
- - remove dead code
- - use ->append_set() everywhere
- - strip again vendor name from displayed string (aka keep only the
- model description)
- - enfoce pixel style : remove () from method calls
-
- * harddrake/data.pm: display "cpu #<XX>: <name>" for cpus
-
- * harddrake/TODO: update
-
-2002/12/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: use option tty7 to force X server to be on tty7
- (instead of opening tty5 and
- tty6 so that the next available tty is tty7)
-
-2002/12/04 uid580
-
- * harddrake/ui.pm: kill "used by only one" harddrake::ui module,
- move its content to standalone/harddrake2
- cleanups
- hide config buttons when switching from a configurable device to a non
- configurable one
- fix gtktext_insert() usage
- gtk+2 port, yeah baby :-)
-
- * security/main.pm: share common options
-
- * pkgs.pm: perl_checker
-
- * standalone/harddrake2, harddrake/data.pm: kill "used by only one"
- harddrake::ui module,
- move its content to standalone/harddrake2
-
- * standalone/drakxservices: strict mode
-
- * ugtk2.pm: reverse
- clean up
-
- * security/msec.pm:
- - fix obvious pixel typo (s/if/if_/)
- - no need to maintain dummy documentation about something which is
- called only in one place
- - simplify
-
-2002/12/03 dam's <dams@idm.fr>
-
- * any.pm: allow #, and other characters in phone number
-
-2002/12/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: gcsux
-
- * pkgs.pm, network/tools.pm: make it $::testing aware
-
- * ugtk2.pm: misc fixes
-
- * interactive/gtk.pm, diskdrake/hd_gtk.pm, install_steps_gtk.pm, mouse.pm,
- services.pm, install_gtk.pm, diskdrake/smbnfs_gtk.pm: gtk2
-
-2002/12/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po, share/po/ja.po, share/po/vi.po: updated Estonian and
- Vietnamese files; fixed typo in Japanese file
-
-2002/12/03 Pixel <pixel@mandrakesoft.com>
-
- * raid.pm: use output()
-
- * network/tools.pm: cleanup use of filehandles
-
- * detect_devices.pm: do not use "local my $F, ...", use "local(my $F, ...)
- instead
- do not use "local *F", use run_program::get_stdout() or "local $F"
- instead
-
- * scanner.pm, install_any.pm, timezone.pm, partition_table.pm: do not use
- "local *F", use "my $F" or output() instead
-
- * install_steps.pm: do not use "local my $F, ...", use "local(my $F, ...)
- instead
-
- * network/network.pm (read_resolv_conf): simplify
-
- * Xconfig/test.pm, devices.pm: do not use "local my $F, ...", use
- "local(my $F, ...) instead
- do not use "local *F"
-
- * commands.pm: do not use "local my $F, ...", use "local(my $F, ...)
- instead
- remove pack_ and unpack_ (unused)
-
- * security/msec.pm: fix typo
- simplify (esp. use cat_)
- (get_value): cleanup
-
- * fs.pm: one need run_program::raw() to use options
-
- * common.pm: do not use "local my $F, ...", use "local(my $F, ...) instead
- (formatXiB): simplify
- use "my $F" instead of "local *F" (and cleanup)
-
- * network/nfs.pm (find_exports): use run_program::raw + stdout
-
-2002/12/03 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/logdrake, ugtk2.pm: add gtktext_append() and uses it
-
-2002/12/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * common.pm, c/stuff.xs.pl: workaround perl sprintf bug when some
- parameters are utf8 and some not
-
- * ugtk2.pm: titisux, revert the pango pixels stuff
-
-2002/12/03 uid551
-
- * share/fonts.tar.bz2: First try of fonts for Xft2
-
- * share/po/zh_CN.po, share/po/pt_BR.po: updated Brazilian and Chinese
- files
-
-2002/12/02 adesmons
-
- * network/netconnect.pm, network/network.pm, network/modem.pm,
- standalone/drakconnect, network/adsl.pm: Some data are now fetched from
- system instead of drakconnect conf file (adsl, ppp, ifcfg-eth)
-
-2002/12/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: updated
- pot file
-
-2002/12/02 Pixel <pixel@mandrakesoft.com>
-
- * standalone/adduserdrake: remove commented code
-
- * proxy.pm: this package is unused, no need to keep it
-
- * install_steps.pm: use output_with_perm()
- use $::prefix
- any::runlevel() doesnt need the prefix anymore
-
- * Xconfig/card.pm: don't use $_
-
- * bootloader.pm: use output()
-
- * fs.pm: formatting timeout is now 1 hour
- remove the duplicate mke2fs (fixes buggy 1.225 change)
- use append_to_file()
-
- * install_steps_interactive.pm: any::get_autologin() doesnt modify $o, it
- returns a hash
- use $::prefix
-
- * network/network.pm (add2hosts): use output and pixelization
-
- * any.pm: use output_with_perm()
- any::get_autologin() doesnt modify $o, it returns a hash
- use $::prefix
- (get_autologin): $o->{autologin} is set to the chosen user only if
- AUTOLOGIN is set (it now mirrors what set_autologin() does)
- any::runlevel() doesnt need the prefix anymore
- use output and append_to_file
-
- * common.pm (set_alternative): simplify
- (files_exist): simplify
-
- * Xconfig/main.pm: any::runlevel() doesnt need the prefix anymore
-
- * Xconfig/various.pm:
- - any::runlevel() doesnt need the prefix anymore
- - fix use of any:runlevel()
-
- * printer/main.pm, printer/office.pm: simplify
-
- * network/isdn.pm, network/netconnect.pm, mouse.pm, network/smb.pm,
- network/tools.pm: use output_with_perm()
-
- * Makefile: adapt "make test_pms" to new perl_checker
-
- * bootlook.pm:
- - use any::get_autologin and any::set_autologin
- - any::set_autologin doesn't set /etc/sysconfig/autologin to perm 600,
- is it needed??
- use any::runlevel()
-
-2002/12/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakbug: fix gtk2 port
-
- * standalone/logdrake: make append option be usable as other ones
- use named tags for color rather than rgbt triplet,
- waiting for full foreground-gdk support in perl-gtk2
- - gtk2 port
- - add a note to remember to try gtkhtml instead of TextView
- - make wait message be transcient and modal (we should share some
- create_*_dialog() around logdrake/mcc/drakfloppy/rpmdrake)
- - fixes for 'strict ref'
-
- * security/main.pm, standalone/drakbackup, standalone/drakconnect:
- - gtk2 port
- - perl_checker fixes
-
- * standalone/drakgw:
- - fix gtk2 port
- - let it work with kernel 2.5 too
-
- * docs/porting-ugtk: add a tool to ease gtk2 port.
- this is not the rule of thumb but basic stuff.
-
- * standalone/drakTermServ, standalone/drakfont:
- - gtk2 port
- - consolidate some code in text_view()
- - perl_checker fixes
-
- * ugtk2.pm: make append option be usable as other ones
- gtkfontinfo() is bugged since it uses a C macro which is
- (oh surprise) not in binary library .... :
- $fontinfo{$_} = Gtk2::Pango->PANGO_PIXELS($metrics->$func);
- - use useless when needed
- - gtktext_insert() : add an append argument to prevent overwriting
- already present text in TextBuffer
- - gtkfontinfo() is bugged since it uses a C macro which is
- (oh surprise) not in binary library .... :
- $fontinfo{$_} = Gtk2::Pango->PANGO_PIXELS($metrics->$func);
-
-2002/11/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * raid.pm: testing aware
-
- * any.pm: load_category__prompt: use formatAlaTeX
-
-2002/11/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/et.po: Updated Estonian file
-
- * share/po/pt.po: Updated Portuguese file
-
-2002/11/28 Pixel <pixel@mandrakesoft.com>
-
- * commands.pm: fix "ps" and "df" (were broken due to localization of *DF
- and *PS)
-
- * bootlook.pm, network/adsl.pm, printer/printerdrake.pm: perl_checker
- adaptations
- perl_checker adaptations
-
- * resize_fat/c_rewritten.pm: to export, one needs to inheritate from
- Exporter
-
- * resize_fat/io.pm: perl_checker adaptations
- remove debug code
-
- * Makefile: fix removing of pods when installing pms
-
- * printer/cups.pm, any.pm, install_steps_gtk.pm, printer/main.pm,
- printer/detect.pm, printer/common.pm, network/network.pm, ftp.pm,
- services.pm, ugtk.pm, network/isdn.pm, network/ethernet.pm,
- resize_fat/fat.pm, install_steps_interactive.pm, network/netconnect.pm,
- lang.pm, network/tools.pm, install_any.pm, printer/gimp.pm,
- partition_table.pm, harddrake/ui.pm: perl_checker adaptations
-
- * Xconfig/test.pm: in the test snippet, add "use common" to have access to
- N()
-
- * bootloader.pm:
- - compare labels case insensitively (thanks to D.Faure)
- - when reading existing config, remove double quotes around the label
- (thanks to D.Faure)
- - add double quotes around the label instead of removing spaces (need
- checking installkernel compatibility)
- perl_checker adaptations
-
-2002/11/28 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * services.pm:
- - my_gtk->main already do the kill 'USR2'
- and hardcoding signal number was bad anyway
- - use gtkflush()
- - my_gtk->main already do the kill 'USR2'
- and hardcoding signal number was bad anyway
- - use gtkflush()
-
- * standalone/drakperm: one more fix
- - "use strict" fixes
- - perl_checker fixes
-
- * standalone/drakgw: fix
-
- * ugtk2.pm: perl_checker fixes
- fix create_factory_menu*(): since we get an object and not anymore a
- hash, let just return factory as another variable...
-
-2002/11/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk2.pm: reflect calling style change of PANGO_PIXELS
-
-2002/11/27 Pixel <pixel@mandrakesoft.com>
-
- * printer/main.pm: perl_checker adaptations
- (configure_hpoj): functions dynamically loaded from /usr/sbin/ptal-init
- are
- now loaded in printer::hpoj namespace (needs testing)
-
- * .perl_checker: update for new packages (Gtk2), and remove the
- now-handled-by-perl_check packages
-
- * Xconfig/card.pm, bootlook.pm, network/network.pm, log.pm,
- printer/office.pm, help.pm, scanner.pm, install_steps.pm,
- Xconfig/parse.pm, install_gtk.pm, network/isdn.pm, interactive.pm,
- my_gtk.pm, swap.pm, resize_fat/fat.pm, partition_table/gpt.pm,
- Newt/Newt.pm, resize_fat/c_rewritten.pm, mouse.pm, resize_fat/io.pm,
- standalone.pm, lang.pm, devices.pm, install2.pm, commands.pm,
- install_interactive.pm, printer/gimp.pm, partition_table.pm,
- Xconfig/xfree3.pm, any.pm, install_steps_gtk.pm, printer/detect.pm,
- interactive/http.pm, diskdrake/interactive.pm, ftp.pm,
- interactive/stdio.pm, interactive/newt.pm, harddrake/sound.pm, fs.pm,
- ugtk.pm, network/ethernet.pm, Xconfig/resolution_and_depth.pm,
- bootloader.pm, Xconfig/test.pm, harddrake/data.pm, Xconfig/monitor.pm,
- network/adsl.pm, fsedit.pm, modules.pm, network/tools.pm,
- network/isdn_consts.pm, install_any.pm, printer/printerdrake.pm,
- timezone.pm, harddrake/ui.pm, c/stuff.pm: perl_checker adaptations
-
-2002/11/27 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakgw:
- - Gtk2 port
- - perl_checker fixes
-
- * standalone/drakbug:
- - Gtk2 port
- - one perl_checker fix
-
- * standalone/mousedrake: restore previous behaviour and exit early only in
- cancel case
- fix bad interaction between mcc & mousedrake.
- interactive already take care of it through my_gtk...
-
-2002/11/26 gbeauchesne
-
- * install_any.pm: Only all.img is currently used on x86-64, ia64 and ppc.
- Therefore, don't
- complain nor try to stat some cdrom.img on first CD.
-
-2002/11/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * unused/demo-frozen-bubble.patch: forgot to commit it (.cvsignore
- containing * doesn't help)
-
- * ugtk2.pm: fix typo (gtkstring_size) thx to perl checker
- fix shadow bug due to wrong extraction of allocation data
- two small fixes
- add
-
- * Makefile: ugtk2.pm is temporarily not in drakxtools but in perl-GTK2
-
-2002/11/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: changed values for console font when en_US is chosen
-
- * share/po/pt.po, share/po/pt_BR.po: Updated Portuguese files
-
-2002/11/26 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm, standalone.pm: no need to call common::backtrace(), use
- directly backtrace() (was it written that way to workaround a bug in old
- perl_checker?)
-
- * ugtk2.pm: make perl_checker happy
-
- * diskdrake/removable_gtk.pm: fix undeclared variable
-
-2002/11/26 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer/main.pm: simplify some stuff
-
- * harddrake/data.pm: fix eating too much items
-
- * modules.pm, printer/detect.pm, run_program.pm, services.pm: perl_checker
- fixes
-
- * printer/printerdrake.pm: miaouh
- simplify
-
-2002/11/25 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: assume any hardware is found (forget to commit).
-
- * rescue/tree/etc/oem-all: synced with latest change to HP version (and
- now HP is in CVS).
-
- * network/netconnect.pm: removed old code (commented out).
-
- * diskdrake/interactive.pm: revert previous change useless (another
- problem).
- added a trailing true value for perl being happy.
-
- * network/ethernet.pm: add support ADIModem.
- removed reference to ...->{nb_cards} no more used.
- removed 2 labels and 2 gotos by a very simple while, dam's is really
- great
- sometimes ;-)
-
- * network/adsl.pm: add support for Sagem USB Modem (for free.fr ;-))
-
- * network/network.pm: added is_domain_name that checks validity of a
- domain name.
-
- * detect_devices.pm: add getSagem() to detect Sagem USB ADSL Modem.
-
- * install_any.pm: fixes perl-checker importation of bug, getFile is
- complex for perl newbies, do
- not rely on perl-checker for trying to "fix" it else it won't run
- anymore ;-)
- make it work (changed *F => *GETFILE and added a return) else perl has
- some
- problem using it as reference to file handle.
-
- * mdk-stage1/dietlibc/include/sys/mount.h: fixes for new kernel headers
- (It should problably be kernel-headers to be
- modified but it is *much* faster to modify yoyotte's works).
-
-2002/11/25 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: fix typo (openInstallLog *must* return the filehandle)
- don't use filehandle *pkgs::LOG, use a my'ed $LOG
- since we use the "fileno", perl doesn't know we're still using the
- filehandle, and so closes it, and :-(
-
- * network/netconnect.pm: in network::netconnect::main(), declare @l as it
- should be. But the code is really wrong, it NEEDS fixing
- $modem is redefined 2 lines below its first declaration. this first
- declaration is useless (??)
-
- * standalone/diskdrake: oops, didn't see titi modified option handling
- fix handling of options --expert and --testing
-
- * install_any.pm: use a scalar instead of a typeglob (let typeglobs be
- deprecated!)
-
- * lang.pm: fix handling of "all" languages selected
-
- * network/isdn.pm: since $mouse is undefined, replace it with undef (??)
-
- * diskdrake/interactive.pm: make perl_checker happy
-
- * network/tools.pm:
- - $up was my-ed inside the if-then block though it was used outside
- the block (hint: buggy code)
- - my @country as it should be
-
-2002/11/25 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone.pm:
- - simplify --embedded handling
- - stricter matching on --no-autoc
-
- * ugtk.pm:
- - simplify mcc stuff
- - prevent bad stacking of right icons in mcc at startup
-
- * detect_devices.pm: remove dobles
-
- * my_gtk.pm: warn about broken programs that misuse my_gtk
- display in mcc when embedded only when ready to interact with the user
-
- * harddrake/ui.pm: interactive->exit call my_gtk->exit which destroy the
- window
-
- * common.pm, standalone/drakbug, standalone/drakbug_report:
- s/mdk_rel/mandrake_release/
- consolidate some stuff from standalone tools & mcc into mdk_rel()
-
-2002/11/22 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: incorporate 8.2 HP fixes back in cooker.
-
-2002/11/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakautoinst: use ask_warn when I should, and remove a one
- year old debug statement (???)
-
-2002/11/21 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/net_monitor: switch latest tools that still manually handle
- embedding
- to use my_gtk
- - perl_checker fixes
- - use my_gtk to transparently handle embedding
-
- * standalone/drakproxy: this one requires any
-
- * standalone/drakbug:
- - Gtk::Gdk::ImlibImage is not needed
- - perl_checker fixes
- - fix interactive exit (s/in/$in/ ->exit)
-
- * standalone/drakfont, standalone/drakconnect, standalone/drakTermServ,
- standalone/drakgw: switch latest tools that still manually handle
- embedding
- to use my_gtk
-
- * standalone/drakbackup: switch latest tools that still manually handle
- embedding
- to use my_gtk
- remove dead code about option managment which is
- obsoleted by standalone
-
-2002/11/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: hide the "please wait" at the latest stage
-
- * ugtk.pm:
- - api change for latest harddrake
- - s/$x ne ''/$x/
-
- * security/msec.pm: simplify
- cleanups
-
- * printer/printerdrake.pm: cleanups
- update to new security::level scheme
-
- * standalone/drakbackup: message_noconf_box() and message_underdevel()
- were quite
- identical. let consolidate them
- message_noselect_box() and message_noselect_what_box() were just
- identical (but for their label).
- let consolidate this
- send_mail_pb() and client_ftp_pb() were just identical (modulo their
- label)
- kill heavy duplication in get_cd_info()
- perl_checker fixes
- - don't gratuitously copy a 70 lines help text with typo changes,
- translators will kill us
- - use strict, fix it
- s/$x ne (0|'')/$x/
-
- * standalone/logdrake: do not use print_hello() callback, anyway it does
- not exists (but in
- drakfloppy ...)
- - logdrake does not need any
- - use ugtk for gtkcolor & co
- - perl_checker fixes
-
- * standalone/draksec, standalone/service_harddrake, standalone/drakgw,
- standalone/draksound: perl_checker fixes
-
- * standalone/draksplash: perl_checker fixes
- - fixes for "use strict" (still some work to do since some variables
- are created through ${ $x.$y }
- - use my_gtk :
- o clean code
- o transparently manage embedding
-
- - perl_checker fixes
-
- * standalone/drakproxy, standalone/drakupdate_fstab: fix blind copyright
- copy
-
- * interactive/stdio.pm, standalone/drakbug, standalone/drakTermServ: s/$x
- ne (0|'')/$x/
-
- * standalone/drakfloppy: perl_checker fixes
- more perl_checker fixes
- - don't require unused modules
- - use my_gtk to transparently handle embedding
- - fixes for strict mode
- - fixes for perl_checker (more to come after lunch)
-
- * bootlook.pm: this is a module, not a program
-
-2002/11/19 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, network/ethernet.pm, share/po/az.po, share/po/zh_TW.po,
- standalone/drakconnect, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: default dhcp client is dhcp-client
-
-2002/11/19 gbeauchesne
-
- * mdk-stage1/log.c: Don't forget to va_end() what was va_copy()'ed.
-
-2002/11/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm, share/keyboards.tar.bz2: Added Malayalam keyboard
-
- * share/po/fi.po: updated Finnish file
-
-2002/11/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * security/main.pm, any.pm, security/level.pm, install_steps.pm:
- - fix duplication of sec level setting:
- merge any::get_secure_level() with
- secure::msec::get_secure_level()
- - move security level functions from secure::msec
- to secure::level
- - uses secure::level in install_steps
- - fix duplication of security level labels
- - draksec: use same strings in drakx, got nice
- translations
- - get_default_checks(): make it more readable
-
- * mouse.pm: perldoc: explain basic usage of mouse.pm, regarding
- problems that show up in early interaction between
- harddrake::data and mouse
-
- * harddrake/ui.pm:
- - remove debugging code
- - document menu building
- - add option menu check boxes to prevent (slowly) detecting
- printers and modems
- - remove warnings on usb devices
- - explains more cpu bugs
- - eventually fix --testing effect
- --testing handling was erronously reverted
-
- * security/msec.pm:
- - fix duplication of sec level setting:
- merge any::get_secure_level() with
- secure::msec::get_secure_level()
- - move security level functions from secure::msec
- to secure::level
- - uses secure::level in install_steps
- - fix duplication of security level labels
- - draksec: use same strings in drakx, got nice
- translations
- - get_default_checks(): make it more readable
- previous example in perldoc was buggy;
- put one that really works
-
- * diskdrake/hd_gtk.pm, diskdrake/interactive.pm: make perldoc working
-
- * harddrake/data.pm: don't display two times some usb mice
-
- * help.pm: one can now alter settings there
-
-2002/11/18 Pixel <pixel@mandrakesoft.com>
-
- * network/netconnect.pm, Xconfig/card.pm, bootlook.pm, printer/main.pm,
- printer/detect.pm, Xconfig/monitor.pm, network/adsl.pm, standalone.pm,
- pkgs.pm, harddrake/sound.pm, printer/office.pm, network/isdn.pm,
- printer/printerdrake.pm, printer/gimp.pm, harddrake/ui.pm: make
- perl_checker happy
-
-2002/11/18 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/net_monitor, standalone/drakfont: drakbug, drakfont,
- drakperm, draksplash, drakxtv, harddrake2,
- net_monitor : final update for common cli options/help manager
- update copyright years
-
- * harddrake/TODO: final switch of drakbackup, logdrake and scannerdrake
- to new option scheme
-
- * standalone/adduserdrake, standalone/drakxservices, standalone/livedrake,
- standalone/keyboarddrake, standalone/drakboot, standalone/mousedrake,
- standalone/drakconnect, standalone/draksound:
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
-
- * standalone/draksplash, standalone/harddrake2, standalone/drakbug,
- standalone/drakperm: drakbug, drakfont, drakperm, draksplash, drakxtv,
- harddrake2,
- net_monitor : final update for common cli options/help manager
-
- * drakxtools.spec: 9.1-0.2dmk
-
- * standalone/drakautoinst, standalone/printerdrake, standalone/XFdrake,
- standalone/drakgw:
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
- update copyright years
-
- * standalone/drakfloppy:
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
- remove old dead commented i18n code that kept being copied around
-
- * standalone/diskdrake: final switch of drakbackup, logdrake and
- scannerdrake
- to new option scheme
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
- update copyright years
-
- * standalone/logdrake: final switch of drakbackup, logdrake and
- scannerdrake
- to new option scheme
- update copyright years
- - clean code sot that it runs under "use strict"
- - simplify date command construction, this is basic perl :-(
- - kill dead old commented code to handle i18n instead of relying on
- common shared modules
- remove old dead commented i18n code that kept being copied around
-
- * modparm.pm, modules/parameters.pm, modules/interactive.pm, any.pm:
- rename modparm as modules::parameters
-
- * standalone.pm: drakbug, drakfont, drakperm, draksplash, drakxtv,
- harddrake2,
- net_monitor : final update for common cli options/help manager
- typo fix
- switch drakTermServ to new option scheme
- rename modparm as modules::parameters
- final switch of drakbackup, logdrake and scannerdrake
- to new option scheme
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
-
- * standalone/drakxtv: drakbug, drakfont, drakperm, draksplash, drakxtv,
- harddrake2,
- net_monitor : final update for common cli options/help manager
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
-
- * bootlook.pm: switch to new help/options scheme
- update copyright years
-
- * harddrake/ui.pm:
- - standalone.pm :
- o make it be 'use strict' aware
- o factorize options managment in one place
- - standalone tools :
- o they all now support -h|--help -v|--version, ...
- o they can add their own options to %standalone::usages
- - harddrake : use std --testing/$::testing rather than its own
- --test option
- simplify code though my_gtk::gtkcolor
-
- * standalone/drakTermServ: switch drakTermServ to new option scheme
-
- * standalone/drakbackup, standalone/scannerdrake: final switch of
- drakbackup, logdrake and scannerdrake
- to new option scheme
- update copyright years
-
- * scanner.pm, standalone/drakproxy, security/msec.pm,
- printer/printerdrake.pm: update copyright years
-
-2002/11/17 alus
-
- * share/po/pl.po: fix
-
-2002/11/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/pt.po: updated Portuguese and Chinese files
-
-2002/11/15 Pixel <pixel@mandrakesoft.com>
-
- * any.pm, run_program.pm, interactive.pm, c.pm, ftp.pm:
- s/wantarray/wantarray()/
-
-2002/11/15 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Xconfig/monitor.pm: perl_checker fix
-
- * harddrake/data.pm: s/usbvideo/usbvision/
-
- * standalone/drakxtv: typo fix
-
- * printer/printerdrake.pm:
- - more cleanups
- - don't display messages if we're not going to remove/install some
- packages
- cleanups
- cleanups
- printerdrake::install_spooler() : fix heavy duplication of code
- by using %spoolers data structure (function shrunked by 66%)
- consolidate some stuff into printer::data::spoolers{XXX}{alternatives}
- so that all alternatives get centralized in one data structure
- cleanups
-
- * printer/data.pm: printerdrake::install_spooler() : fix heavy duplication
- of code
- by using %spoolers data structure (function shrunked by 66%)
- consolidate some stuff into printer::data::spoolers{XXX}{alternatives}
- so that all alternatives get centralized in one data structure
-
- * security/main.pm:
- - use run_program rather than raw system
- - kill useless show_msec_help()
- - kill commented remanant code of help buttons
- - add tooltip with default values on combos & entries
- - log about security administrator changes only when we do some
- - factorize some code into new_editable_combo() and
- set_default_tip()
-
- * Makefile.config, drakxtools.spec, harddrake/sound.pm,
- Makefile.drakxtools:
- - add missing printer directory
- - bump version to 9.1 like most of our packages
-
-2002/11/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po: updated Romanian file
-
- * standalone/drakfont: Make drakfont use ttmkfdir again, as it recognizes
- more encodings,
- use of parameter "-u" of ttmkfdir to always output unicode entries,
- call xftcache to create/update the Xftcache files (used by Xft),
- rewrite fonts.dir (with ttmkfdir) when removing a ttf file so it no
- longer appears on the font list, and execute "xset fp rehash" after
- adding/removing fonts, so the font list used by X server is
- synchronized.
-
-2002/11/14 Pixel <pixel@mandrakesoft.com>
-
- * printer/cups.pm, bootlook.pm, network/network.pm, resize_fat/main.pm,
- printer/office.pm, partition_table/dos.pm, scanner.pm, unused/scsi.pm,
- my_gtk.pm, swap.pm, install_steps_interactive.pm, Xconfig/xfreeX.pm,
- network/smb.pm, devices.pm, crypto.pm, commands.pm, printer/gimp.pm,
- any.pm, install_steps_gtk.pm, printer/main.pm, printer/detect.pm,
- interactive/stdio.pm, interactive/newt.pm, fs.pm,
- resize_fat/dir_entry.pm, ugtk.pm, run_program.pm, bootloader.pm,
- steps.pm, harddrake/data.pm, diskdrake/hd_gtk.pm, interactive/gtk.pm,
- detect_devices.pm, network/tools.pm, install_any.pm,
- printer/printerdrake.pm, harddrake/ui.pm:
- - add/remove spaces to make perl_checker happy
- - remove redundant parentheses
- - add some parentheses for clarity
-
- * partition_table/mac.pm, ftp.pm, pkgs.pm: make perl_checker happy
- - add/remove spaces to make perl_checker happy
- - remove redundant parentheses
- - add some parentheses for clarity
-
- * partition_table/gpt.pm, partition_table/raw.pm, partition_table.pm: make
- perl_checker happy
-
-2002/11/14 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/v4l.pm: resync with bttv-0.7.100 and saa7134-0.2.2snapshot
-
- * drakxtools.spec: 1.1.12-1mdk
-
- * security/main.pm:
- - kill unused myexit()
- - perl_checker fixes
-
- * printer/main.pm, printer/data.pm, printer/STATUS, printer/office.pm,
- printer/gimp.pm:
- - printer::data : export all data structures
- - cleanups
- - all code is now runnable in strict mode
-
- * security/msec.pm:
- - perl_checker fixes
- - clean code
- - simplify config_function()
-
- * harddrake/ui.pm: explain the detect() vs new() delayed gui construction
- when embedded
- display port for network printers too
-
-2002/11/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po, share/po/ru.po: updated Slovak and Russian files
-
-2002/11/13 Pixel <pixel@mandrakesoft.com>
-
- * printer/common.pm: fix syntax error
-
- * Xconfig/various.pm, http.pm, network/network.pm, network/modem.pm,
- resize_fat/main.pm, install_gtk.pm, interactive.pm, my_gtk.pm, mouse.pm,
- printer/data.pm, devices.pm, lang.pm, install2.pm, install_steps_gtk.pm,
- interactive/http.pm, partition_table/mac.pm, pkgs.pm,
- interactive/newt.pm, network/ethernet.pm, standalone/XFdrake, steps.pm,
- harddrake/data.pm, keyboard.pm, network/adsl.pm, fsedit.pm,
- install_any.pm, harddrake/ui.pm: add/remove spaces to make perl_checker
- happy
-
- * bootlook.pm, printer/office.pm, scanner.pm, install_steps.pm,
- network/isdn.pm, install_steps_interactive.pm, network/netconnect.pm,
- harddrake/v4l.pm, printer/main.pm, harddrake/sound.pm, ugtk.pm,
- network/tools.pm, printer/printerdrake.pm: add/remove spaces to make
- perl_checker happy
- add/remove spaces to make perl_checker happy
-
-2002/11/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer/printerdrake.pm: simplify install_spooler() but there's still
- lot of duplication there
- (some work for tomorow)
- - final switch to $::prefix
- - simplify main::get_copiable_queues(), main::setcupslink()
- - s/unless (X ne Y)/if (X eq Y)/
- - set_usermode() : ensure we add the line if it didn't exists
-
- * harddrake/ui.pm: display floppy driver type as well as mouse type
-
- * printer/office.pm: fix files lookup
- printer::common: export function
-
- * printer/gimp.pm: don't reinvent the wheel, use common
-
- * detect_devices.pm: fix vendor/model spliting when there's neither space
- nor separator
-
- * printer/common.pm: printer::common: export function
-
- * printer/main.pm:
- - final switch to $::prefix
- - simplify main::get_copiable_queues(), main::setcupslink()
- - s/unless (X ne Y)/if (X eq Y)/
- - set_usermode() : ensure we add the line if it didn't exists
- - set_usermode() : don't reinvent the wheel, use substInFile
- - get_usermode() : ditto, use getVarsFromSh
-
- * drakxtools.spec: pixel neither know how to update cvs nor comitting its
- changes
-
-2002/11/12 erwan
-
- * mdk-stage1/network.c, mdk-stage1/stage1.h: Cleaning old stuff
-
-2002/11/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2002/11/12 Pixel <pixel@mandrakesoft.com>
-
- * security/main.pm, bootlook.pm, printer/main.pm, printer/detect.pm,
- partition_table/mac.pm, diskdrake/interactive.pm, pkgs.pm, services.pm,
- printer/office.pm, ugtk.pm, run_program.pm,
- install_steps_auto_install.pm, bootloader.pm, standalone/XFdrake,
- network/netconnect.pm, lang.pm, install2.pm, modules.pm, commands.pm,
- printer/printerdrake.pm, printer/gimp.pm, partition_table.pm: add/remove
- some spaces to make perl_checker happy
-
- * diskdrake/removable_gtk.pm: add "use common" for N()
-
-2002/11/12 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer/main.pm: kill set_prefix()
- printer related modules cleaning :
- - create the printer/ hierarchy
- - split services related stuff into services.pm & printer::services,
-
- - move things that've nothing to do with printers into common.pm
- (alternatives, permissions, ...)
-
- - move eveything related to cups, gimp-print, detection,
- {star,open}office to the corresponding splited printer:: module
-
- - big consolidation of printer::office (it was obvious there were tons
- of duplication between staroffice and openoffice managment)
-
- - move other stuff into printer::main, printer::common,
-
- status : print.pm has been heavily splited (now one can begin to
- understand the little bits).
- printerdrake still needs to be splited/cleaned and eventually removed
- since printer/printerdrake modules separation is not understandable by
- other people
-
- till, in printer::gimp, $lprcommand is neither declared nor setted
- nowhere. idem in mdk9.0 ...
-
- * security/main.pm: fix _() -> N() conversion
-
- * install_steps_interactive.pm: resync with latest printerdrake
-
- * printer/printerdrake.pm: fix getSNMPModel() location
- printer related modules cleaning :
- - create the printer/ hierarchy
- - split services related stuff into services.pm & printer::services,
-
- - move things that've nothing to do with printers into common.pm
- (alternatives, permissions, ...)
-
- - move eveything related to cups, gimp-print, detection,
- {star,open}office to the corresponding splited printer:: module
-
- - big consolidation of printer::office (it was obvious there were tons
- of duplication between staroffice and openoffice managment)
-
- - move other stuff into printer::main, printer::common,
-
- status : print.pm has been heavily splited (now one can begin to
- understand the little bits).
- printerdrake still needs to be splited/cleaned and eventually removed
- since printer/printerdrake modules separation is not understandable by
- other people
-
- till, in printer::gimp, $lprcommand is neither declared nor setted
- nowhere. idem in mdk9.0 ...
-
- * drakxtools.spec: 1.1.12-1mdk
-
- * printer/cups.pm, printer/detect.pm, printer/common.pm,
- standalone/printerdrake, services.pm, printer/office.pm,
- printer/default.pm, printer.pm, printer/data.pm, common.pm,
- printer/services.pm, printerdrake.pm, printer/gimp.pm: printer related
- modules cleaning :
- - create the printer/ hierarchy
- - split services related stuff into services.pm & printer::services,
-
- - move things that've nothing to do with printers into common.pm
- (alternatives, permissions, ...)
-
- - move eveything related to cups, gimp-print, detection,
- {star,open}office to the corresponding splited printer:: module
-
- - big consolidation of printer::office (it was obvious there were tons
- of duplication between staroffice and openoffice managment)
-
- - move other stuff into printer::main, printer::common,
-
- status : print.pm has been heavily splited (now one can begin to
- understand the little bits).
- printerdrake still needs to be splited/cleaned and eventually removed
- since printer/printerdrake modules separation is not understandable by
- other people
-
- till, in printer::gimp, $lprcommand is neither declared nor setted
- nowhere. idem in mdk9.0 ...
-
- * standalone/drakxtv: don't offer to configure kernel for usbvision (no
- option for now)
- handle devices managed by usbvision too
-
- * install_steps.pm: update for new printerdrake
-
- * harddrake/data.pm: resync with printerdrake
- handle devices managed by usbvision too
- exclude more usb mice from unknown devices
-
-2002/11/11 alus
-
- * share/po/pl.po: updated
-
-2002/11/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po, share/po/ru.po: updated Russian and Vietnamese files
-
-2002/11/11 Pixel <pixel@mandrakesoft.com>
-
- * security/msec.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
- - use "foreach" instead of "for" in list context
- - use "for" instead of "foreach" when used a la C
- various small syntax enhancements to please perl_checker
-
- * partition_table/sun.pm:
- - use "foreach" instead of "for" in list context
- - use "for" instead of "foreach" when used a la C
-
- * Xconfig/card.pm, bootlook.pm, my_gtk.pm, network/netconnect.pm,
- harddrake/data.pm, network/tools.pm, install_any.pm, security/main.pm,
- network/isdn.pm, harddrake/ui.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
-
- * detect_devices.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
- - do not use "foreach $var (...) {...}" use "foreach my $var (...)
- {...}" instead
- (only pb are functions called in {...} that could use $var, none found
- except in commands.pm)
- - various small syntax enhancements to please perl_checker
-
- * partition_table/mac.pm:
- - do not use "foreach $var (...) {...}" use "foreach my $var (...)
- {...}" instead
- (only pb are functions called in {...} that could use $var, none found
- except in commands.pm)
- - various small syntax enhancements to please perl_checker
-
- * pkgs.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- - do not use "foreach $var (...) {...}" use "foreach my $var (...)
- {...}" instead
- (only pb are functions called in {...} that could use $var, none found
- except in commands.pm)
- - various small syntax enhancements to please perl_checker
-
- * network/adsl.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
- replace qq{...} with qq(...)
-
- * network/network.pm, mouse.pm, standalone.pm, network/drakfirewall.pm,
- partition_table.pm, partition_table/bsd.pm, ugtk.pm, Xconfig/monitor.pm,
- modules.pm, network/shorewall.pm, network/modem.pm, resize_fat/main.pm,
- resize_fat/any.pm, install_gtk.pm, unused/scsi.pm,
- resize_fat/directory.pm, lang.pm, devices.pm, harddrake/v4l.pm, any.pm,
- install_steps_gtk.pm, ftp.pm, services.pm, harddrake/sound.pm,
- Xconfig/test.pm, steps.pm, keyboard.pm, interactive/gtk.pm,
- partition_table/lvm_PV.pm, network/isdn_consts.pm: add or remove spaces
- where need to please perl_checker
-
- * standalone/drakfloppy: don't use <*> for globbing, use all or glob_
-
- * standalone/logdrake: replace q@...@ with q(...) or here_doc
-
- * interactive/stdio.pm, common.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- various small syntax enhancements to please perl_checker
-
- * http.pm, install_steps.pm, interactive/newt.pm, fs.pm, diskdrake/dav.pm:
-
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
-
- * resize_fat/fat.pm:
- - use "foreach" instead of "for" in list context
- - use "for" instead of "foreach" when used a la C
- various small syntax enhancements to please perl_checker
-
- * standalone/draksplash, raid.pm, Xconfig/xfreeX.pm,
- partition_table/raw.pm: various small syntax enhancements to please
- perl_checker
-
- * install2.pm: add or remove spaces where need to please perl_checker
- replace availableMemory with availableMemory()
-
- * scanner.pm, commands.pm: add or remove spaces where need to please
- perl_checker
- - do not use "foreach $var (...) {...}" use "foreach my $var (...)
- {...}" instead
- (only pb are functions called in {...} that could use $var, none found
- except in commands.pm)
- - various small syntax enhancements to please perl_checker
-
- * install_steps_interactive.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
- replace availableMemory with availableMemory()
-
- * network/ethernet.pm: add or remove spaces where need to please
- perl_checker
- various small syntax enhancements to please perl_checker
-
- * printerdrake.pm, printer.pm:
- - replace ... =~ 'foo' with ... =~ /foo/
- - remove unneeded parentheses for things like ... if (...)
- add or remove spaces where need to please perl_checker
- - use "foreach" instead of "for" in list context
- - use "for" instead of "foreach" when used a la C
- - do not use "foreach $var (...) {...}" use "foreach my $var (...)
- {...}" instead
- (only pb are functions called in {...} that could use $var, none found
- except in commands.pm)
- - various small syntax enhancements to please perl_checker
-
-2002/11/10 gbeauchesne
-
- * mdk-stage1/minilibc.c: Fix implementation of signal() for x86-64, adjust
- for new kernel-headers
-
-2002/11/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive/http.pm: don't return a typeglob ref, return the typeglob
- (reference to typeglobs are
- soft references which doesn't increment the ref count)
-
- * network/tools.pm: don't return a typeglob ref, return the typeglob
- (reference to typeglobs are
- soft references which doesn't increment the ref count) (thanks to Gerard
- Patel
- for the precise bug report)
-
- * standalone/draksplash, standalone/drakperm, standalone/drakbug,
- bootlook.pm, standalone/harddrake2, standalone/printerdrake,
- standalone/logdrake, standalone/drakfloppy, standalone/localedrake:
- ensure "common" is imported to have N()
-
-2002/11/09 Pixel <pixel@mandrakesoft.com>
-
- * proxy.pm: fix typo
-
- * network/tools.pm:
- - do not use q{...} to please perl_checker
- - use <<'EOF' instead
- - at the same time, fix the "\n" at the beginning of the generated
- script
-
- * harddrake/data.pm: make perl_checker happy
-
-2002/11/08 Pixel <pixel@mandrakesoft.com>
-
- * printer.pm: fix my typos
-
- * my_gtk.pm: normalize
-
-2002/11/07 erwan
-
- * mdk-stage1/stage1-data/stage1-with-kadeploy.tar.bz2,
- mdk-stage1/network.c, mdk-stage1/stage1.h, mdk-stage1/url.c: SCSI
- Support is now activated
-
- * rescue/Makefile: Adding missing link for test in tree/usr/bin
-
- * rescue/list, rescue/list.i386: SCSI support now activated
-
-2002/11/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Added definition of default font for Thai
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/hu.po: updated
- pot file
-
- * share/rpmsrate: Added dependences for greek font and urw-fonts for
- cyrillic
-
-2002/11/07 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * detect_devices.pm:
- - getCPUs() : fix cpu fields parsing
- - harddrake::detect :
- o describe most cpu fields
- o print value of skipped fields
- perl checker fixes
- - harddrake : don't display modem when there're none
- - getModem() :
- o simplify
- o remove unused variables
- - getSerialModem() : indent
-
- * harddrake/ui.pm:
- - getCPUs() : fix cpu fields parsing
- - harddrake::detect :
- o describe most cpu fields
- o print value of skipped fields
- - describe cpu frequency
- - only display help topics related to currently displayed fields in
- right framea
- - if no device selected, display a message explaining the help dialog
- - simplify the unknow driver case for color choice
- - only display fields we described
- perl checker fixes
- - add help for some cpu items
- - only display choosen items
- - remove a dead statement
-
- * drakxtools.spec: 1.1.11-1mdk
-
-2002/11/06 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem-all: add extra partition support as primary/logical
- with configurable size and fs.
- allow configurable min_size, def_size, trigger_size, inst_size,
- swap_size.
-
-2002/11/06 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm, install_any.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- replace complex "unless"s with "if"s
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * printerdrake.pm: replace "for my ..." with "foreach my ..."
- replace complex "unless"s with "if"s
- remove unneeded parentheses on the right side of infix if/foreach/unless
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * partition_table/raw.pm: remove unneeded parentheses on the right side of
- infix if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * harddrake/data.pm, install2.pm, standalone/service_harddrake,
- standalone/scannerdrake: make perl_checker happy
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * network/netconnect.pm, diskdrake/interactive.pm, network/isdn.pm:
- replace complex "unless"s with "if"s
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * standalone/draksplash, bootlook.pm, share/advertising/14-mdkexpert.pl,
- standalone/logdrake, share/advertising/17-mdkclub.pl, interactive.pm,
- my_gtk.pm, share/advertising/11-mdkstore.pl,
- share/advertising/02-community.pl, share/advertising/01-thanks.pl,
- mouse.pm, standalone/keyboarddrake, standalone/drakboot,
- share/po/DrakX.pot, standalone.pm, lvm.pm, standalone/drakTermServ,
- standalone/net_monitor, share/advertising/05-games.pl,
- network/drakfirewall.pm, standalone/mousedrake, Xconfig/main.pm,
- install_steps_newt.pm, standalone/drakbackup, diskdrake/smbnfs_gtk.pm,
- share/advertising/09-server.pl, share/advertising/04-multimedia.pl,
- standalone/printerdrake, share/advertising/13-mdkcampus.pl,
- install_steps_auto_install.pm, standalone/drakconnect,
- standalone/drakbug, diskdrake/hd_gtk.pm,
- share/advertising/07-desktop.pl, Xconfig/monitor.pm, network/adsl.pm,
- proxy.pm, modules.pm, share/advertising/10-mnf.pl, network/shorewall.pm,
- share/advertising/15-mdkexpert-corporate.pl,
- share/advertising/08-development.pl, share/advertising/06-mcc.pl,
- standalone/draksound, standalone/drakxtv, security/main.pm,
- Xconfig/various.pm, network/modem.pm, help.pm,
- diskdrake/removable_gtk.pm, install_gtk.pm, diskdrake/removable.pm,
- standalone/drakautoinst, share/po/b_dump_strings.pm, modparm.pm,
- install_steps_stdio.pm, Xconfig/xfreeX.pm, standalone/livedrake,
- share/advertising/03-internet.pl, standalone/harddrake2,
- harddrake/v4l.pm, modules/interactive.pm, crypto.pm,
- install_interactive.pm, share/advertising/12-mdkstore.pl,
- standalone/localedrake, loopback.pm, any.pm, interactive/http.pm,
- interactive/stdio.pm, standalone/drakfloppy, services.pm,
- interactive/newt.pm, share/po/Makefile, fs.pm, standalone/drakfont,
- network/ethernet.pm, Xconfig/resolution_and_depth.pm, standalone/drakgw,
- steps.pm, keyboard.pm, diskdrake/dav.pm, standalone/drakperm, fsedit.pm,
- common.pm, share/po/fake_c.pl, harddrake/ui.pm: replace "_" with "N" and
- "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * install_steps.pm: replace complex "unless"s with "if"s
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * bootloader.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- cleanup get_of_dev (aka ofpath)
- replace complex "unless"s with "if"s
- remove unneeded parentheses on the right side of infix if/foreach/unless
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * network/network.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- (write_resolv_conf): much cleanup (originally it was meant to introduce
- cat_ and output, but it ended up with a complete rewrite :)
- replace complex "unless"s with "if"s
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * scanner.pm: make perl_checker happy
- make perl_checker happy
-
- * commands.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- (cp): use cp_af
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
-
- * Xconfig/test.pm: please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * standalone/diskdrake, network/nfs.pm: make perl_checker happy
-
- * Xconfig/card.pm: when needVideoRam, don't take the raw value
- VideoRam_probed,
- better take a known value <= VideoRam_probed
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * Xconfig/xfree4.pm: please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
-
- * log.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
-
- * detect_devices.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- make perl_checker happy
- replace complex "unless"s with "if"s
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
-
- * ugtk.pm: make perl_checker happy
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * install_steps_interactive.pm, harddrake/sound.pm: make perl_checker
- happy
- replace complex "unless"s with "if"s
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * standalone/XFdrake: fix typo
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * raid.pm, network/tools.pm, install_steps_gtk.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * printer.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- replace "for my ..." with "foreach my ..."
- remove unneeded parentheses on the right side of infix if/foreach/unless
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
- * pkgs.pm:
- - have "local *FILEHANDLE" before each "open FILEHANDLE, ..."
- - use some "cat_" and "output" where possible
- please perl_checker:
- - local'ize $_ before doing while (<...>)
- - use "foreach" instead of "for"
- - remove unneeded parentheses on the right side of infix
- if/foreach/unless
- replace "_" with "N" and "__" with "N_"
- rationale:
- - currently, we use _("xxx") as a shorthand for gettext("xxx"). It
- also used to call xgettext with --keyword=_
-
- - alas, function &_ is global and not by package (notice esp. that _
- is not exported in common.pm)
-
- - this lead to big ugly pb with packages defining their own &_,
- overriding common.pm's &_
-
- - a fix is to set @::textdomains to add a new domain (the default
- being "libDrakX")
-
- but relying on the global "_" is still dangerous!
-
-2002/11/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 1.1.10-mdk
-
- * harddrake/sound.pm: fix for modules.pm not exporting
- category2modules_and_description
-
-2002/11/05 erwan
-
- * rescue/tree/etc/rc.sysinit: modified rc.sysinit for ka
-
-2002/11/05 gbeauchesne
-
- * c/smp.c: Revert last change
- Add generic cpu detection on x86-64 and IA-64, based on
- sysconf(_SC_NPROCESSORS_ONLN)
-
- * detect_devices.pm: Detect SMP more easily if we have APIC stuff capable
-
-2002/11/05 Pixel <pixel@mandrakesoft.com>
-
- * devices.pm: add /dev/ubd/0, /dev/ubd/1... support (thanks to Brian
- Murrell)
-
- * mouse.pm (xmouse2xId): ensure weird ids are ignored
- use find_index instead of map_index
-
- * interactive/newt.pm:
- - fix dialog boxes using a scrollbar
- - cleanup
- use each_index instead of map_index when the return value is not used
-
- * interactive.pm:
- - do not handle "format"ing in interactive for combos
- - do it in interactive::gtk instead (that way, "val" is back"format"ed
- in callbacks as wanted)
- - die when editable combos are used with non-strings (like arrays or
- hashes)
-
- * partition_table.pm:
- - isUBD can tell wether it is an ubd partition
- - isSpecial is true for ubd partitions
-
- * fs.pm (format_ext2): better error message when it is called from
- format_ext3
- (thanks to Brian Murrell)
-
- * diskdrake/interactive.pm, fsedit.pm: introduce a new flag:
- getting_rid_of_readonly_allowed. It is set when the partition table
- badly handled by diskdrake, but we are still allowed to wipe the
- partition table and start
- with something new.
-
- * interactive/gtk.pm:
- - do not handle "format"ing in interactive for combos
- - do it in interactive::gtk instead (that way, "val" is back"format"ed
- in callbacks as wanted)
- - die when editable combos are used with non-strings (like arrays or
- hashes)
- use each_index instead of map_index when the return value is not used
-
- * install2.pm: basic uml_install support (thanks to Brian Murrell)
- use each_index instead of map_index when the return value is not used
-
- * interactive/http.pm, interactive/stdio.pm, ugtk.pm, raid.pm,
- bootloader.pm: use each_index instead of map_index when the return value
- is not used
-
- * Newt/Newt.xs:
- - fix dialog boxes using a scrollbar
- - cleanup
-
- * services.pm: fix the use of a non-bounded regexp to check services (fix
- "nfs" being marked
- on whereas it is "nfslock" which is on)
-
-2002/11/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * tools/ppc/mkINSTALLCD: Update PPC boot CD creation.
-
- * mdk-stage1/init.c: PPC TIOCSCTTY changed to 0x540E
-
-2002/11/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: newt rebuild
-
-2002/11/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po: updated Slovak file
-
-2002/11/04 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm, Xconfig/xfreeX.pm, Xconfig/parse.pm,
- standalone/keyboarddrake: add XkbCompat "group_led" for all keyboards
- where a group layout switching is used
-
- * Xconfig/xfree.pm: have an empty configuration when a config file is
- buggy
-
-2002/11/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer.pm: typo fixes
-
- * drakxtools.spec: 1.1.10-2mdk
-
-2002/11/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ru.po, share/po/pt_BR.po: updated Russian and Portuguese files
-
-2002/10/31 erwan
-
- * mdk-stage1/stage1.c, mdk-stage1/network.c, mdk-stage1/tools.c,
- mdk-stage1/tools.h, mdk-stage1/url.h, mdk-stage1/url.c: Including
- ka-deploy for stage 2
-
- * mdk-stage1/stage1-data/stage1-with-kadeploy.tar.bz2: Including ka-deploy
- for stage 2
- Adding missing file (stage1-with-kadeploy)
-
-2002/10/30 erwan
-
- * mdk-stage1/stage1.c, mdk-stage1/network.c, mdk-stage1/stage1.h,
- mdk-stage1/network.h: Applying patch from 8.2, ka.img is working fine in
- old mode
-
-2002/10/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
-2002/10/29 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * bootloader.pm, rescue/list.ppc: Reflect changes in yaboot package.
-
-2002/10/28 alus
-
- * share/po/pl.po: updated
- updated translation
-
-2002/10/28 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/modem.pm: add sub winmodemConfigure
-
- * network/netconnect.pm: few reworks for winmodem detection
-
- * detect_devices.pm: s#$_->{driver} eq
- 'Bad:www.linmodems.org'#$_->{driver} =~ /www.linmodems.org/# to fit with
- ldetect
-
-2002/10/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po: Updated Romanian and Vietnamese files
-
-2002/10/28 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (preConfigureTimezone): don't set UTC in beginner mode if
- there is no windows
-
-2002/10/28 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: typo in comments: Josep L. Guallar-Esteve
- <jlguallar@computer.org>
-
-2002/10/28 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: add new drivers
-
-2002/10/25 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem-all: reduced version of oem script which allow
- installing in oem mode but
- without restricting language and without installing any packages.
- all package are copied to disk, ie this is an automated hd install
- builder.
-
-2002/10/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/vi.po: updated Chinese and Vietnamese files
-
-2002/10/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: Updated
- pot file
-
-2002/10/23 Pixel <pixel@mandrakesoft.com>
-
- * network/netconnect.pm, install_steps_newt.pm, harddrake/sound.pm: make
- perl_checker happy: replace PKG::f with PKG::f()
-
-2002/10/23 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: nono changes for stupid perl_checker whose maintainer
- don't want to fix deficienties
- reindent for lord pix
-
- * harddrake/sound.pm: do a perl_checker pass after pixel one since he only
- do half the work
- reindent for lord pix
-
- * ugtk.pm, printer.pm, network/adsl.pm, printerdrake.pm: perl_checker
- fixes
-
- * harddrake/v4l.pm, harddrake/ui.pm: reindent for lord pix
-
- * detect_devices.pm: fix "poulpy sux"
-
- * Xconfig/resolution_and_depth.pm: fix pixel code
-
-2002/10/18 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * detect_devices.pm: change dumb return values s/@pci_modems,
- $serial_modem/$serial_modem, @pci_modems/ (thanks to pixel)
-
- * network/netconnect.pm: remove useless 'pop'
- change dumb return values s/@pci_modems, $serial_modem/$serial_modem,
- @pci_modems/ (thanks to pixel)
-
-2002/10/17 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * harddrake/sound.pm: titi almost sux (he helped me that's why I can't say
- titi sux :p)
-
-2002/10/17 Pixel <pixel@mandrakesoft.com>
-
- * any.pm, interactive/gtk.pm, network/modem.pm, Xconfig/monitor.pm,
- pkgs.pm, interactive/newt.pm, install_steps.pm,
- Xconfig/resolution_and_depth.pm, install_steps_interactive.pm: make new
- perl_checker happy: replacing PKG::f by PKG::f()
-
- * network/netconnect.pm: "=head" doc must end with "=cut"
-
-2002/10/17 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * printer.pm: consolidate more stuff into %spoolers
- start to consolidate %spoolers as a data structure
- - printerdrake::auto_detect(local, net, smb):
- o split into local_detect, net_detect, net_smb_detect
- o detect: return all printers
- - printer: consolidate all *help_output into help_output
-
- * detect_devices.pm: add some comments to getCPUs
-
- * printerdrake.pm: setup_common: consolidate regexp
- - printerdrake::auto_detect(local, net, smb):
- o split into local_detect, net_detect, net_smb_detect
- o detect: return all printers
- - printer: consolidate all *help_output into help_output
-
- * network/netconnect.pm: document network::netconnect::detect()
-
- * harddrake/data.pm:
- - printerdrake::auto_detect(local, net, smb):
- o split into local_detect, net_detect, net_smb_detect
- o detect: return all printers
- - printer: consolidate all *help_output into help_output
-
-2002/10/16 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/netconnect.pm:
- - winmodem detection fix
-
-2002/10/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * my_gtk.pm: fix dams suckiness breaking install2 --test
-
-2002/10/16 Pixel <pixel@mandrakesoft.com>
-
- * patch/patch-da.pl, patch/patch-IMPS2.pl:
- - fix for bad da .mo charset
- - ugly hack to allow IMPS2 switch to work
-
- * c/stuff.xs.pl: initIMPS2: use /dev/mouse instead of /dev/cdrom (!)
-
-2002/10/16 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: don't print empty help for fields without any help
- - alphabetically sort help items
- - add help for some cpu fields
- fix Gtk::CTree:insert_node inversing devices order
- -add cpus detection
- - update todo list
- - perl_checker fix
-
- * standalone/drakfont: bit me!
-
- * detect_devices.pm: getCPUs() : fix multiples cpu detection
- -add cpus detection
- - update todo list
- - perl_checker fix
-
- * harddrake/data.pm: display cpu name (eg "Pentium") too in harddrake gui
- display "$vendor cpu number $id" for cpus in harddrake gui
- miaouh
- use code factored in detect_devices for modem detection
- -add cpus detection
- - update todo list
- - perl_checker fix
-
- * drakxtools.spec: 1.1.10-1mdk
- buildrequires: libext2fs-devel
-
- * harddrake/v4l.pm, harddrake/TODO:
- -add cpus detection
- - update todo list
- - perl_checker fix
-
-2002/10/15 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * detect_devices.pm: add Pioneer to vendors list
-
- * harddrake/data.pm: display again unknown category (spoted by florent
- beranger)
-
-2002/10/14 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: remove initrd images before umounting and exiting.
-
-2002/10/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2002/10/14 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm, install_any.pm: Hide password to browse W2k
- servers. (Buchan Milne).
- Domain name to all caps in smb.conf. (Buchan Milne).
-
- * standalone/drakTermServ: Finish thin client setup option.
-
-2002/10/14 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakbug:
- - fix typos
- - when something is eating io bandwith, drakbug is very slow to scroll
- the menu, since on each item selection, it does rpm db
- access. solution :
- o cache rpm result in %packages
-
- o only call rpm & which if nothing is cached
-
- - if there's the selected package isn't installed, just print "package
- not installed" (and translate that)
-
-2002/10/12 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Read/Write thin client configuration.
- Add draktermserv config to enable/disable thin clients.
- Update documentation.
-
-2002/10/11 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm: fix speedtouch detection
-
-2002/10/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po, share/po/pt.po, share/po/DrakX.pot: updated Catalan and
- Portuguese files
-
-2002/10/11 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Dynamic IP pool for client machines.
- Don't require image for PCI clients.
- Perl_checker fixes.
-
-2002/10/10 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm: notify if speedtouch is detected or not
-
- * network/netconnect.pm: add a warning window for winmodems
-
- * detect_devices.pm, network/modem.pm:
- - move serial modem detection to detect_devices.pm
- - add speedtouch USB detection
- - add winmodem detection
-
-2002/10/10 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Correct typo in create boot ISO code
- Add note in help about optional net boot image entry for PCI cards
-
-2002/10/09 gbeauchesne
-
- * mdk-stage1/log.c: ISO C standard as to say about va_list on 7.15 [#3]
- If access to the varying arguments is desired, the called
- function shall declare an object (referred to as ap in this
- subclause) having type va_list. The object ap may be passed
- as an argument to another function; if that function invokes
- the va_arg macro with parameter ap, the value of ap in the
- calling function is indeterminate and shall be passed to the
- va_end macro prior to any further reference to ap.199)
- Which interprets to do reuse a va_list that was already processed.
- Instead, use a copy. This fixes crashes on x86-64 and debugging
- feasible, since logging is now available. ;-)
-
- * mdk-stage1/minilibc.h, mdk-stage1/minilibc.c: Add support for x86-64 to
- minilibc. But we don't really use it yet, as glibc
- requirements for stage1 undoubtedly make images already bigger. So let
- have
- glibc init there too. ;-)
-
- * bootloader.pm: I surely don't want nor expect grub and loadlin to work
- on x86-64.
-
- * share/list.x86_64: Update list for perl mods and XF86 4.2.1 support
-
- * tools/aewm-drakx/misc.c: Apply FredL change from HEAD
-
- * mdk-stage1/disk.c: Use standard memset() instead of BSD-ish bzero().
-
- * mdk-stage1/Makefile, mdk-stage1/Makefile.common: Add x86-64, use glibc
- in init and stage1 as dietlibc is not working enough
- and minilibc for init doesn't seem to let umounting take place at the
- end
- of installation.
-
- * fs.pm: SYS_umount does not exist on modern kernels and architectures
- like x86-64 :)
-
- * mdk-stage1/rescue-gui.c: lib64 support
-
- * tools/aewm-drakx/client.c: Fix get/set_wm_state(), we have to get the
- same data (size) that was set.
-
- * mdk-stage1/init.c: Add support for lib64 architectures (x86-64, ppc64,
- etc.). Aka native
- libraries are in */lib64 there.
-
- * install_any.pm: Let's try a real bash prior to defaulting to perl'ish
- /bin/sh?
-
- * Xconfig/card.pm: Default to XF4 on x86-64 too
-
- * install_steps_gtk.pm: Yeah, stuck with XFree86 4.X server on x86-64 too.
-
- * partition_table.pm: Supported journalised FS on x86-64 are ReiserFS and
- ext3fs for now. Though,
- I haven't tested reiserfs and don't expect it to work before next kernel
- update.
-
- * mdk-stage1/insmod-modutils/util/sys_oim.c,
- mdk-stage1/insmod-modutils/obj/obj_common.c,
- mdk-stage1/insmod-modutils/include/obj.h,
- mdk-stage1/insmod-modutils/util/xsystem.c,
- mdk-stage1/insmod-modutils/include/util.h,
- mdk-stage1/insmod-modutils/include/version.h,
- mdk-stage1/insmod-modutils/util/sys_cm.c,
- mdk-stage1/insmod-modutils/obj/obj_s390.c,
- mdk-stage1/insmod-modutils/include/elf_sparc64.h,
- mdk-stage1/insmod-modutils/include/elf_ppc.h,
- mdk-stage1/insmod-modutils/insmod.c,
- mdk-stage1/insmod-modutils/include/kallsyms.h,
- mdk-stage1/insmod-modutils/include/elf_arm.h,
- mdk-stage1/insmod-modutils/include/module.h,
- mdk-stage1/insmod-modutils/util/xmalloc.c,
- mdk-stage1/insmod-modutils/util/snap_shot.c,
- mdk-stage1/insmod-modutils/include/kerneld.h,
- mdk-stage1/insmod-modutils/util/sys_qm.c,
- mdk-stage1/insmod-modutils/obj/obj_load.c,
- mdk-stage1/insmod-modutils/obj/obj_alpha.c,
- mdk-stage1/insmod-modutils/obj/obj_x86_64.c,
- mdk-stage1/insmod-modutils/include/config.h,
- mdk-stage1/insmod-modutils/Makefile,
- mdk-stage1/insmod-modutils/obj/obj_gpl_license.c,
- mdk-stage1/insmod-modutils/obj/obj_i386.c,
- mdk-stage1/insmod-modutils/obj/obj_mips.c,
- mdk-stage1/insmod-modutils/include/elf_alpha.h,
- mdk-stage1/insmod-modutils/include/elf_s390.h,
- mdk-stage1/insmod-modutils/util/config.c,
- mdk-stage1/insmod-modutils/util/sys_dm.c,
- mdk-stage1/insmod-modutils/include/elf_x86_64.h,
- mdk-stage1/insmod-modutils/include/elf_m68k.h,
- mdk-stage1/insmod-modutils/obj/obj_kallsyms.c,
- mdk-stage1/insmod-modutils/include/elf_i386.h,
- mdk-stage1/insmod-modutils/util/xstrcat.c,
- mdk-stage1/insmod-modutils/obj/obj_arm.c,
- mdk-stage1/insmod-modutils/obj/obj_m68k.c,
- mdk-stage1/insmod-modutils/util/sys_nim.c,
- mdk-stage1/insmod-modutils/obj/Makefile,
- mdk-stage1/insmod-modutils/obj/obj_hppa64.c,
- mdk-stage1/insmod-modutils/util/arch64.c,
- mdk-stage1/insmod-modutils/obj/obj_hppa.c,
- mdk-stage1/insmod-modutils/util/sys_gks.c,
- mdk-stage1/insmod-modutils/include/elf_mips.h,
- mdk-stage1/insmod-modutils/util/logger.c,
- mdk-stage1/insmod-modutils/obj/obj_ppc.c,
- mdk-stage1/insmod-modutils/util/xrealloc.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc.c,
- mdk-stage1/insmod-modutils/util/alias.h,
- mdk-stage1/insmod-modutils/util/xstrdup.c,
- mdk-stage1/insmod-modutils/include/elf_sparc.h,
- mdk-stage1/insmod-modutils/obj/obj_ia64.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc64.c,
- mdk-stage1/insmod-modutils/obj/obj_reloc.c: Update to modutils 2.4.19
- with x86-64 support and other fixes
-
- * mdk-stage1/frontend.h, mdk-stage1/stdio-frontend.c: Hint compiler about
- unused arguments and don't make it yell in that case. As,
- we do use -Werror along with -Wall stuff.
-
- * mdk-stage1/init-libc-headers.h: <sys/ioctl.h> is needed
-
- * install_gtk.pm: Somehow, "recent" DrakX changes mutated driver into
- Driver and card->type
- into card->BoardName
-
- * printerdrake.pm, any.pm: lib64 fixes
-
- * proxy.pm: wgetrc is in /etc not /usr/lib
-
-2002/10/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: don't use ugtk directly
-
-2002/10/08 Frederic Lepied <flepied@mandrakesoft.com>
-
- * tools/aewm-drakx/misc.c: removed client removal
-
-2002/10/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po: updated Romanian file
-
-2002/10/02 alus
-
- * share/po/pl.po: some changes
-
-2002/10/02 François Pons <fpons@mandrakesoft.com>
-
- * patch/patch-oem-9.0.pl, patch/rpmsrate.oem-9.0-staroffice,
- patch/rpmsrate.oem-9.0-openoffice: patch necessary for oem to work
- nicely and the two rpmsrate that allow
- CD of 700MB to be used.
-
-2002/10/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install2.pm: try to fix my fix for blank
-
- * modules.pm: try to fix my fix for blank
- try to make the install work in "blank" mode (aka fix pixel
- sucked when changed modules.pm code, not handling blank mode)
-
- * mdk-stage1/Makefile: cooker
-
- * mdk-stage1/stage1.c: do not detect/configure pcmcia stuff when "noauto"
- param
-
-2002/10/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * patch/patch-nforce.pl: update from oem patch
- fix nforce (from francois oem patch)
-
- * docs/9.0_errata.txt: miaou
- i810 crash when using XRender on vt switch (see fredc for further
- information) (fixed in cvs & rh's xfree86)
- kernel : snd-via686 is said to produce white noise; add workaround
- nforce audio bug
- drakconf bug has been workarounded
-
-2002/10/01 dam's <dams@idm.fr>
-
- * ugtk.pm: forking ugtk, sorry guys. reverted last patch
- cleaned, readded needed hack, removed mdk specific functions, added
- libconf GUI, WARNING, create_dialog API changed
-
- * my_gtk.pm: mdk icon_path are added here
-
-2002/10/01 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fixed oem images management not working at all!
-
-2002/10/01 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * docs/9.0_errata.txt: add 3 bugs:
- - drakfont: stat64 syscall blocks drakfont on ntfs partitions
- - XFree86: X can corrupt sound when overusing pci bus
- (PciRetry fix it)
- - some people reports stops on reboot on "illegal seek" (having /usr
- and / on the same fs "fix" it)
-
- * drakxtools.spec: harddrake-ui doesn't need the same obsoletes/provides
- as harddrake,
- else we may require harddrake-ui on update (thus XFree86 ...)
-
-2002/09/30 Daouda Lo <daouda@mandrakesoft.com>
-
- * docs/9.0_errata.txt:
- - first draft for all bugs/glitches/inconsistencies in 9.0. Developers
- are welcomed to fill it, read it and fix.
-
-2002/09/30 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: added possible fix for noauto: flag of hdlist not
- generating good list file.
-
-2002/09/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
- * share/po/id.po, share/po/ro.po: Updated Romanian and Indonesian files
-
-2002/09/30 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: drop "notail" when filesystem is not reiserfs
-
-2002/09/30 Till Kamppeter <till@mandrakesoft.com>
-
- * docs/9.0_errata.txt: "Best Grayscale" on HP DJ 6xx/Apollo.
- Several bugs found.
-
-2002/09/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Latvian file; corrected Danish file
- corrected encoding
-
- * share/po/lv.po: updated Latvian file; corrected Danish file
-
-2002/09/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * docs/README: refine info on blank.img
-
-2002/09/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * network/network.pm: workaround situation when /etc/resolv.conf is an
- absolute link to /etc/ppp/resolv.conf or whatever
-
- * mdk-stage1/dhcp.c, mdk-stage1/network.c: try to not save the hostname
- answered by the dhcp server
-
-2002/09/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: log install class selection
-
-2002/09/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
- * share/po/tr.po, share/po/cs.po: updated Turkish and Czech files
-
-2002/09/25 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: do not allow to create user "root" (thanks to Eric Fernandez)
-
-2002/09/25 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: handle nvaudio too
-
-2002/09/24 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * any.pm: change load_category__prompt_for_more dying 'already displayed'
- in return
-
- * network/ethernet.pm: Fix configureNetwork to fit with new
- any::load_category_prompt_for_more behavior
-
-2002/09/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_TW.po, share/po/pt.po: updated Chinese and Portuguese files
-
-2002/09/24 Pixel <pixel@mandrakesoft.com>
-
- * raid.pm: also create a raidtab if it doesn't exist (occurs when / has
- been formatted)
-
- * detect_devices.pm: fix raidAutoStartRaidtab crushing /etc/raidtab
-
- * patch/patch-raidtab.pl: also create a raidtab if it doesn't exist
- (occurs when / has been formatted)
- fix raidAutoStartRaidtab crushing /etc/raidtab
-
-2002/09/24 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm: dams fix enable to get rid of the infamous ugly gtk timeout
- from dams:
- remove his ugly hack for mcc which altered the
- scrolledwindow's "bordure" to hide it.
- this used to be done through a gtk timer (hance
- the ugly flash on first display of notebook pages)
- now createScrolledWindow take a new optional argument
- that enable to hide the border the right way
- thanks dams
- fix expansion of widgets
- (eg see draksound help window behaviour on resizing)
-
- * harddrake/TODO, harddrake/data.pm: move usb video devices to webcam
- category
-
- * security/main.pm: remember to factorize this with rpmdrake's wait
- messages in my_gtk
- remove "bogus periodic check 2" from periodic checks page
- let simplify
-
- * harddrake/ui.pm: add a few comments
- split harddrake part that configure a module into modules::interactive
- split devices listing ("detection") part into its own function
- (detect) for readability
-
- * Makefile.config, modules/interactive.pm: split harddrake part that
- configure a module into modules::interactive
-
- * security/msec.pm: ignore_list is useless
-
- * share/po/br.po: update
-
-2002/09/23 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: fix NULL Gateway IP checking
-
-2002/09/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_interactive.pm: tellAboutProprietaryModules: use formatAlaTeX
-
- * rescue/devices.pl: add st devices
-
-2002/09/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po: updated Spanish file
-
- * share/po/ru.po: updated Russian file
-
- * share/po/id.po, share/po/zh_CN.po, share/po/pt.po: updated Indonesian,
- Portuguese and Chinese files
-
- * keyboard.pm: Made Lithuanian numeric row keyboard bi-mode
-
-2002/09/23 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Really fix daemon mode issue.
- Fix daemon mode bug.
-
-2002/09/23 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: move vim-enhanced in X 4
- fix nforce version
-
-2002/09/22 alus
-
- * share/po/pl.po: No... Changes few days before release...
-
-2002/09/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cy.po, share/po/id.po, share/po/lv.po, share/po/vi.po,
- share/po/sk.po, share/po/ru.po, share/po/hu.po: updated Welsh,
- Hungarian, Indonesian, Latvian, Russian, Slovak and Vietnamese
-
-2002/09/22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix url
-
-2002/09/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: add a small sentence to the license in
- order to solve a negociation with
- Thomson about the MP3 patents.
-
-2002/09/22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix url
-
-2002/09/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: add a small sentence to the license in
- order to solve a negociation with
- Thomson about the MP3 patents.
-
-2002/09/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: add a small sentence to the license in
- order to solve a negociation with
- Thomson about the MP3 patents.
-
-2002/09/21 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Correct help notes on \$\$IP=IP-ADDRESS\$\$.
-
-2002/09/21 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: final
-
-2002/09/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po: updated Chinese file
-
-2002/09/20 Till Kamppeter <till@mandrakesoft.com>
-
- * network/shorewall.pm: The LPD/LPRng port is 515, not 5015.
-
-2002/09/20 florin
-
- * standalone/drakgw: fix the disable function
-
- * network/shorewall.pm: add the 5015 port for some printers in
- internal_ports
-
-2002/09/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
- * standalone/drakgw: removed unneeded '\t' in translatable text
-
- * share/po/zh_CN.po: updated Chinese file
- updated pot file
-
-2002/09/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 53mdk
- 52mdk
- 51mdk
-
- * harddrake/ui.pm: don't print logs in console
-
- * standalone/drakbug: fixes:
- - don't create bogus 1 file (deush: s/2>1&/2>&1/)
- - don't print error messages when which cannot find the program
-
- * harddrake/TODO: update
-
- * standalone/harddrake2: don't print useless warnings in console
-
- * standalone/drakxtv: no -w
-
-2002/09/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Catch non-existant config files on copy.
-
-2002/09/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug of printerdrake installing LPRng when it is
- started for the
- first time and CUPS is already installed without local queues but with
- remote CUPS servers broadcasting in their printer info.
-
-2002/09/19 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: try to avoid infinite loop on error to install package.
-
-2002/09/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix titisucks making cards choice in bttv
- dialog unavailable
-
-2002/09/19 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: prefer cups for lpddaemon
-
-2002/09/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Catch non-existant config files on copy.
-
-2002/09/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug of printerdrake installing LPRng when it is
- started for the
- first time and CUPS is already installed without local queues but with
- remote CUPS servers broadcasting in their printer info.
-
-2002/09/19 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: try to avoid infinite loop on error to install package.
-
-2002/09/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone.pm: when in install mode, log when a **** does a "use
- standalone"
-
- * interactive.pm: require log will reliably fail, use require 'log.pm'
- instead
-
- * install_steps_interactive.pm: fix titisucks making cards choice in bttv
- dialog unavailable
-
- * install2.pm: revert
-
-2002/09/19 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm: catch error in Done (mainly "reboot needed"),
- so that fstab can be written
- even if reboot needed (useful when removing partitions mounted by
- default)
-
- * install_steps.pm:
- - do not set type to ext2 when the type is ntfs
- - set to ext3 instead of ext2
-
-2002/09/19 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - s/rpm/mdk/ in package version matching
-
-2002/09/19 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: avoid proposing ntfs partition to be
- formatted.
-
-2002/09/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * network/tools.pm: fix spurious ";" before closing block
-
- * standalone.pm: when in install mode, log when a **** does a "use
- standalone"
-
- * interactive.pm: require log will reliably fail, use require 'log.pm'
- instead
-
- * install_steps_interactive.pm: fix titisucks making cards choice in bttv
- dialog unavailable
-
- * install2.pm: revert
- try to workaround strange situations when mkinitrd fail because
- loop is not loaded (we don't know who calls mkinitrd), by loading
- the loop module right after format-mount'ing the partitions
-
-2002/09/19 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm: catch error in Done (mainly "reboot needed"),
- so that fstab can be written
- even if reboot needed (useful when removing partitions mounted by
- default)
-
- * install_steps.pm:
- - do not set type to ext2 when the type is ntfs
- - set to ext3 instead of ext2
-
-2002/09/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/v4l.pm: don't use standalone while installing
-
- * security/libsafe.pm: s/package draksec::libsafe/package
- security::libsafe/
- anyway nobody uses that one
-
-2002/09/19 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: remove old WIZARDS package
- add drakwizard
- remove LPRng
-
-2002/09/18 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm:
- - add ntfs in isOtherAvailableFS
- - but ensure it is not in isMountableRW
-
-2002/09/18 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: remove *-mdk-cdcom
-
-2002/09/18 florin
-
- * standalone/drakgw: more details for the dhcp server
-
- * network/shorewall.pm: remove forgotten debug hash printings
-
-2002/09/18 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm:
- - add ntfs in isOtherAvailableFS
- - but ensure it is not in isMountableRW
-
-2002/09/18 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * security/msec.pm:
- - factorize @sec_levels and %sec_levels for get_default() and
- get_seclevel_list()
- - use them in get_default()
- - get_value() : don't assume a space between "function_name" and
- "(parameters)"
- remove brackets on function values loading
- respect msec syntax
- "kill quart of draksec code" patch aka make it really working aka "happy
- fred" :
- - security::msec :
- o consolidate get_function_value() and get_value into get_value()
- o really apply changes, aka save them :
- * config_check() : use substInFile and setVarsInSh
- * config_function() : use substInFile and append_to_file
- * kill stupid and bogus config_option()
- o don't overwrite previous changes, aka reread them :
- * fix checks and functions current value loading
- * fix checks and functions default loading
-
- - security::main :
- o simplify ui creation, make it more readable
- o kill offuscating basic_secadmin_check(), basic_secadmin_entry(),
- network_generate_page(), system_generate_page() and
- checks_generate_page()
- o increase default height because of stupid "add_with_viewport" in
- ugtk::createScrolledWindow
- o consolidate network and system functions managment, they're all the
- same for
- msec, splitting is only a draksec "feature"; all go in
- %options_values
-
- - draksec :
- o let standalone module configure standalone mode
- o security::main already take care of initializing gtk
- o security::main already take care of exiting
- o don't play with embedded mode special variables
-
- it overall looks better but big cleanups're still possible for mdk9.1
-
- * standalone/draksec: "kill quart of draksec code" patch aka make it
- really working aka "happy fred" :
- - security::msec :
- o consolidate get_function_value() and get_value into get_value()
- o really apply changes, aka save them :
- * config_check() : use substInFile and setVarsInSh
- * config_function() : use substInFile and append_to_file
- * kill stupid and bogus config_option()
- o don't overwrite previous changes, aka reread them :
- * fix checks and functions current value loading
- * fix checks and functions default loading
- - security::main :
- o simplify ui creation, make it more readable
- o kill offuscating basic_secadmin_check(), basic_secadmin_entry(),
- network_generate_page(), system_generate_page() and
- checks_generate_page()
- o increase default height because of stupid "add_with_viewport" in
- ugtk::createScrolledWindow
- o consolidate network and system functions managment, they're all the
- same for
- msec, splitting is only a draksec "feature"; all go in
- %options_values
-
- - draksec :
- o let standalone module configure standalone mode
- o security::main already take care of initializing gtk
- o security::main already take care of exiting
- o don't play with embedded mode special variables
-
- it overall looks better but big cleanups're still possible for mdk9.1
-
- * security/main.pm: fix wait_message doesn't display
- run msec after setting changes
- "kill quart of draksec code" patch aka make it really working aka "happy
- fred" :
- - security::msec :
- o consolidate get_function_value() and get_value into get_value()
- o really apply changes, aka save them :
- * config_check() : use substInFile and setVarsInSh
- * config_function() : use substInFile and append_to_file
- * kill stupid and bogus config_option()
- o don't overwrite previous changes, aka reread them :
- * fix checks and functions current value loading
- * fix checks and functions default loading
- - security::main :
- o simplify ui creation, make it more readable
- o kill offuscating basic_secadmin_check(), basic_secadmin_entry(),
- network_generate_page(), system_generate_page() and
- checks_generate_page()
- o increase default height because of stupid "add_with_viewport" in
- ugtk::createScrolledWindow
- o consolidate network and system functions managment, they're all the
- same for
- msec, splitting is only a draksec "feature"; all go in
- %options_values
-
- - draksec :
- o let standalone module configure standalone mode
- o security::main already take care of initializing gtk
- o security::main already take care of exiting
- o don't play with embedded mode special variables
-
- it overall looks better but big cleanups're still possible for mdk9.1
-
-2002/09/17 David Baudens <baudens@mandrakesoft.com>
-
- * share/advertising/04-multimedia.png: Use the right image
-
-2002/09/17 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - sync option names with server's name.
- - fix typo
- - back to normal http connection (instead of https)
- - relocated web wizard
-
-2002/09/17 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/po/fr.po: corrected typo
-
-2002/09/17 florin
-
- * network/shorewall.pm: small updates
-
- * network/drakfirewall.pm: add a silly message
-
- * standalone/drakgw: add warning message
- add the nameserver IP variable in advanced mode
-
-2002/09/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
- * share/po/nl.po, share/po/sk.po: updated Dutch and Slovak files
-
- * share/po/tr.po: updated Turkish file
-
-2002/09/17 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: fix draksec typo
-
- * drakxtools.spec: 50mdk for lord fredl
-
- * security/msec.pm:
- - security::msec :
- o config_check: use MDK::Common to set option rather
- than overwriting config file
- o remove all stupid prefix that just ofuscate code
- whereas it's always set to '',
- $::prefix will be a lot better
- o s/shift @_/shift/
- o kill config_option()
- o simplify get_default()
- o get_secure_level() : replace if cascade by an array
- o set_secure_level() :
- * replace if cascade by an hash
- * default to runlevel 3 if undefined
- o get_functions() : simplify by merging code paths
- - security::main :
- o security::libsafe is unneeded
- o don't pass useless prefix
- o begin to read default values
- - msec::config_check: use MDK::Common to set option rather
- than overwriting config file
- - remove all stupid prefix that just ofuscate code
- whereas it's always set to '',
- $::prefix will be a lot better
- - security::main: kill duplicated 'use strict'
- - no ignore choice for periodic checks
- - save functions in /etc/security/msec/level.local
- and not security.conf
- - "from mseclib import" is useless
- - fix functions saving (an object method invocation
- takes class name as argument)
- remove libsafe option (not anymore used by msec)
-
- * security/main.pm:
- - security::msec :
- o config_check: use MDK::Common to set option rather
- than overwriting config file
- o remove all stupid prefix that just ofuscate code
- whereas it's always set to '',
- $::prefix will be a lot better
- o s/shift @_/shift/
- o kill config_option()
- o simplify get_default()
- o get_secure_level() : replace if cascade by an array
- o set_secure_level() :
- * replace if cascade by an hash
- * default to runlevel 3 if undefined
- o get_functions() : simplify by merging code paths
- - security::main :
- o security::libsafe is unneeded
- o don't pass useless prefix
- o begin to read default values
- - msec::config_check: use MDK::Common to set option rather
- than overwriting config file
- - remove all stupid prefix that just ofuscate code
- whereas it's always set to '',
- $::prefix will be a lot better
- - security::main: kill duplicated 'use strict'
- - no ignore choice for periodic checks
- - save functions in /etc/security/msec/level.local
- and not security.conf
- - "from mseclib import" is useless
- - fix functions saving (an object method invocation
- takes class name as argument)
- add ignore option to msec items
-
-2002/09/17 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: remove !CDCOM flag for OpenOffice.org
-
-2002/09/16 siegel
-
- * share/po/de.po: updates
-
-2002/09/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm, share/po/de.po: Do not try to install "webfetch" during
- installation.
-
-2002/09/16 Warly <warly@mandrakesoft.com>
-
- * drakxtools.spec: 49mdk for new printerdrake code regarding webfetch that
- breaks during install.
-
-2002/09/16 siegel
-
- * share/po/de.po: updates
-
-2002/09/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm, share/po/de.po: Do not try to install "webfetch" during
- installation.
-
-2002/09/16 David Baudens <baudens@mandrakesoft.com>
-
- * share/advertising/17-mdkclub.pl,
- share/advertising/15-mdkexpert-corporate.pl,
- share/advertising/04-multimedia.pl, share/advertising/06-mcc.pl,
- share/advertising/12-mdkstore.pl: Adapt text postion to fix french
- translations
-
-2002/09/16 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - typo in options
-
- * standalone.pm:
- - use basename with drakbug for standalone tools
-
- * standalone/drakfloppy:
- - translation for drakfloppy
-
- * standalone/logdrake:
- - enable translation for logdrake
-
-2002/09/16 florin
-
- * network/shorewall.pm: add internal_ports variable
-
-2002/09/16 François Pons <fpons@mandrakesoft.com>
-
- * standalone/XFdrake: fixed no translation for XFdrake (pixel idea).
-
-2002/09/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * my_gtk.pm, drakxtools.spec: fix die wizcancel in non wizard mode
-
- * rescue/tree/sbin/modprobe: remove modules files even when modprobe fails
-
-2002/09/16 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: remove File::Copy dependencies and change lilo message path
-
-2002/09/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/zh_CN.po, share/po/pt.po, share/po/lv.po,
- share/po/sv.po: updated Indonesian, Latvian, Portuguese, Swedish and
- Chinese files
-
-2002/09/15 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: do not allow encrypted filesystem for /boot
-
-2002/09/15 Till Kamppeter <till@mandrakesoft.com>
-
- * share/po/de.po: In wizards: "Finish" --> "Assistent beenden"
-
-2002/09/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * my_gtk.pm: workaround ERROR: Can't call method "child" on an undefined
- value at
- /usr/lib/libDrakX/my_gtk.pm line 94
-
- * mdk-stage1/network.c: http: don't add a / between the hostname and the
- url, apache
- doesn't understand //~fermigier the same way as /~fermigier
-
-2002/09/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
- * share/po/wa.po: corrected typo
-
- * standalone/logdrake, standalone/drakfloppy: corrected gettext domain
- (translations are now in libDrakX)
-
- * share/po/cy.po, share/po/zh_CN.po, share/po/lv.po, share/po/fr.po:
- updated Welsh, French, Latvian and Chinese files
-
-2002/09/14 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Made "LPRng" show up in the spooler menu when LPRng is
- installed.
-
- * share/po/de.po: Printerdrake translations
- Printerdrake translations
- Printerdrake translations
- Printerdrake translations.
- Printerdrake translations
-
-2002/09/13 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone.pm:
- - meuh aka launch drakbug when incident is risen
-
-2002/09/13 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/netconnect.pm:
- - fix old conf files name (thx titi)
-
-2002/09/13 florin
-
- * network/shorewall.pm: more services in drakgw_protocols
-
-2002/09/13 François Pons <fpons@mandrakesoft.com>
-
- * live_install2: allow devfsd to be restarted after update.
-
- * install_any.pm: allow live_update to have something configured correctly
- for urpmi media.
-
-2002/09/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/lv.po, share/po/hu.po: removed
- obsolete old unused strings, to make the po files lighter
-
-2002/09/13 Pixel <pixel@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/sp.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: update the help english part (so that no
- fuzzy occurs)
-
- * share/rpmsrate: put back kernel-secure
-
- * install_any.pm: don't write fstab on upgrade (to workaround the fact
- that many entries are dropped)
-
- * help.pm, share/po/help-de.pot, share/po/help-it.pot,
- share/po/help-fr.pot, share/po/help-es.pot: update help from xml
-
-2002/09/13 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Do not insist on "curl" to download PPDs from a CUPS
- server (for Star Office/OpenOffice.org/GIMP), take the one from "curl"
- and "wget" which is there. Install "webfetch" when none is there.
- Let "cups-drivers" be installed when switching from normal to expert
- mode.
- Entries in "auto-detected" field of SMB printer setup mask should not be
- editable.
-
- * printer.pm: Do not insist on "curl" to download PPDs from a CUPS server
- (for Star Office/OpenOffice.org/GIMP), take the one from "curl" and
- "wget" which is there. Install "webfetch" when none is there.
- Let "cups-drivers" be installed when switching from normal to expert
- mode.
- Added timeouts to network scan with "nmap" so that scan does not take
- too long when there are machines running a firewall.
- To find running machines in the network, do not only a broadcast ping
- but also an "nmblookup" to also catch Windows machines which do not
- answer to ping.
-
-2002/09/13 Daouda Lo <daouda@mandrakesoft.com>
-
- * drakxtools.spec:
- - obsoletes drakfloppy
-
-2002/09/13 François Pons <fpons@mandrakesoft.com>
-
- * live_install2: allow devfsd to be restarted after update.
- added modprobe loop before killing devfsd.
- fixed for newer perl 5.8.0 (vendor_perl directory).
- fixed to kill devfsd before.
-
- * install_any.pm: allow live_update to have something configured correctly
- for urpmi media.
-
-2002/09/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po, share/po/zh_TW.po, share/po/da.po, share/po/pt.po,
- share/po/lv.po, share/po/hu.po: updated Danish, Spanish, Hungarian,
- Latvian, Portuguese and Chinese files
-
-2002/09/13 Pixel <pixel@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/sp.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/hu.po: update the help english part (so that no
- fuzzy occurs)
-
- * share/rpmsrate: put back kernel-secure
-
- * install_any.pm: don't write fstab on upgrade (to workaround the fact
- that many entries are dropped)
-
- * help.pm, share/po/help-de.pot, share/po/help-it.pot,
- share/po/help-fr.pot, share/po/help-es.pot: update help from xml
-
-2002/09/13 Till Kamppeter <till@mandrakesoft.com>
-
- * share/po/de.po: German translations for printerdrake and some
- corrections.
-
-2002/09/13 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: rc3
-
-2002/09/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po: updated slovak file
-
-2002/09/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, any.pm, install_any.pm, install2.pm,
- install_steps_interactive.pm: do something with "Security Administrator
- (login or email)"
-
- * share/po/help_xml2pm.pl:
- - discard &shy; (ie \x{ad})
- - handle <quote><literal>xxx</literal></quote> specially to not have
- double
- double quotes
-
-2002/09/12 siegel
-
- * share/po/de.po: updates
-
-2002/09/12 alus
-
- * share/po/pl.po: Updated polish translation
-
-2002/09/12 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/tools.pm, drakxtools.spec, standalone/net_monitor:
- - patch net_monitor
-
-2002/09/12 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed very stupid typo and inconsistency in
- allowNVIDIA_rpms.
-
- * install_steps.pm: added code after install of package to fix broken
- alternatives.
-
-2002/09/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: meumeuh
- meuh
- a fix from florin/pixel to make it work
-
- * network/shorewall.pm: run_program crazyness
-
- * drakxtools.spec: meuuuuh meuh meuh ?
-
-2002/09/12 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: resize previews pixmap to be nice when embedded
-
- * share/po/fr.po: modif bootlook.pm translation to keep a good when
- embedded
-
-2002/09/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: Updated Hungarian file
- updated pot file
-
- * share/po/sk.po: updated slovak file
- updated pot file
-
- * share/po/mt.po, share/po/vi.po: updated Vietnamese and Maltese files
- updated pot file
-
- * share/po/tr.po: updated pot file
- updated turkish file
-
- * share/po/id.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/no.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/ta.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/lv.po: updated pot file
-
- * share/po/cs.po: updated Czech file
- updated pot file
-
- * share/po/ru.po: updated Russian file
- updated pot file
-
-2002/09/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, any.pm, install_any.pm, install2.pm,
- install_steps_interactive.pm: do something with "Security Administrator
- (login or email)"
-
- * share/po/help_xml2pm.pl:
- - discard &shy; (ie \x{ad})
- - handle <quote><literal>xxx</literal></quote> specially to not have
- double
- double quotes
-
- * network/shorewall.pm: fix writing twice tcp instead of tcp & udp
-
-2002/09/12 siegel
-
- * share/po/de.po: updates
-
-2002/09/12 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: When adding a local printer during an expert install
- without network,
- printerdrake insists on starting the network and does not enter the
- add printer procedure.
- Made the association of model names obtained by auto-detection and of
- the model names in the printer database much more reliable.
-
- * detect_devices.pm: Made the association of model names obtained by
- auto-detection and of
- the model names in the printer database much more reliable.
-
-2002/09/12 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/logdrake, standalone/drakfloppy: fix logdrake and drakfloppy
-
- * drakxtools.spec: 45mdk
-
- * security/main.pm, security/msec.pm:
- - draksec window title is draksec, not "draksec - basic options" since
- it offer
- advanced options too now
- - mark some strings to be translated (mainly notebook pages titles)
-
- * share/po/fr.po: update french translation
-
-2002/09/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po, share/po/cs.po, share/po/vi.po, share/po/mt.po,
- share/po/hu.po: updated po files
-
-2002/09/11 alus
-
- * share/po/pl.po: updated po
-
-2002/09/11 David Baudens <baudens@mandrakesoft.com>
-
- * share/advertising/11-mdkstore.pl, share/advertising/07-desktop.pl,
- share/advertising/10-mnf.pl: Fix typos
-
- * share/advertising/09-server.pl: Update
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/cs.po,
- share/po/bg.po, share/po/el.po, share/po/hu.po: Don't break po
- Update
-
-2002/09/11 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - s/bugzilla.com/drakbug.mandrakesoft.com/
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po:
- -s/bugzilla.com/drakbug.mandrakesoft.com/
-
-2002/09/11 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * drakxtools.spec:
- - update spec for 44mdk
-
-2002/09/11 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed possible problem with NVIDIA packages parsing.
-
-2002/09/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/frontend-common.c: meuh
- probe for usb stuff in info and error msg also
-
-2002/09/11 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * standalone/draksplash: use do_pkgs for check and install ImageMagick
-
-2002/09/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po: updated Slovak file
- updated pot file
-
- * share/po/id.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/no.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/ga.po,
- share/po/be.po, share/po/uk.po, share/po/ko.po, share/po/DrakX.pot,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/lt.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/bs.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po, share/po/ta.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/bg.po, share/po/lv.po: updated
- pot file
-
- * standalone/draksplash: small text for translatators
-
- * share/po/mt.po, share/po/vi.po, share/po/es.po, share/po/cs.po,
- share/po/hu.po: updated po files
- updated pot file
-
- * share/po/fr.po: updatd French file
- updated pot file
-
- * share/po/ru.po: updated Russian file
- updated pot file
-
- * network/isdn.pm: corrected i18n usage
-
-2002/09/11 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakupdate_fstab: use flag "kudzu" for entries automatically
- handled by drakupdate_fstab
-
- * common.pm: allow various textdomains for i18n
-
-2002/09/11 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm:
- - Made printer::assure_device_is_available_for_cups() more reliable by
- checking and retrying.
- - Do not start the network when it is not configured.
-
-2002/09/11 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update french translation
- s/was the firt sound API/was the first sound API/
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/sp.po, share/po/cy.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/it.po, share/po/nl.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/bg.po, share/po/cs.po, share/po/el.po, share/po/lv.po,
- share/po/hu.po: s/was the firt sound API/was the first sound API/
-
- * standalone/draksound:
- - fix: we displayed current driver as default one: display the right
- one
- - show a wait message while switching driver
-
- * harddrake/sound.pm:
- - fix: we displayed current driver as default one: display the right
- one
- - show a wait message while switching driver
- s/was the firt sound API/was the first sound API/
-
- * drakxtools.spec: update
-
-2002/09/10 alus
-
- * share/po/pl.po: Strings one day before deadline????
- updated translation
-
-2002/09/10 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - definitive link and options
-
-2002/09/10 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/isdn.pm:
- - remove variable from a translated chain
-
-2002/09/10 François Pons <fpons@mandrakesoft.com>
-
- * c/stuff.pm: removed old code no more used.
-
- * pkgs.pm: consolidate unselectAllPackages.
-
- * install_steps_interactive.pm: fixed test of chooseCD on nfs (always
- enabled).
- avoid removing all packages during upgrade (safe guard).
-
-2002/09/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: tag version as 9.0
-
- * rescue/tree/etc/rc.sysinit: don't drvinst SERIAL_USB when noauto (it
- needs a lspcidrake -v)
-
- * rescue/drvinst: drvinst <param> is broken when we don't -v
-
-2002/09/10 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * standalone/draksplash: change the preview rendering method
-
-2002/09/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po, share/po/fr.po: updated French and Portuguese files
- updated pot file
- updated pot file
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/ta.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: updated pot file
- updated pot file
-
- * security/main.pm: improved i18n handling
-
- * share/po/vi.po: updated Vietnamese file
- updated Vietnamese file
-
- * share/po/nl.po: updated Dutch file
- updated pot file
- updated pot file
-
- * standalone/drakTermServ: small i18n change
-
-2002/09/10 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: set mount point for nt partitions by default
-
- * Xconfig/card.pm: do not prefer_xf3 for "NeoMagic (laptop/notebook)"
- since:
- - long ago it was decided to distrust driver "neomagic" together with
- Riva's, SiS, GeForce
- - in 09/2001 (XFree 4.1.0), it was decided to keep distrusting driver
- "neomagic"
- - Cosmic Flo says driver "neomagic" works (on card Neomagic
- Corporation|[MagicGraph 256AV])
-
- * fs.pm:
- - have ntfs "ro" by default
- - "umask=0" is a special option for ntfs
-
-2002/09/10 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Display issues in other locales.
-
-2002/09/10 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: description update
- fix OSS definition
-
- * share/po/fr.po: next updates batch
- update french translation
-
-2002/09/10 alus
-
- * share/po/pl.po: updated translation
-
-2002/09/10 David Baudens <baudens@mandrakesoft.com>
-
- * share/po/fr.po: Update
-
-2002/09/10 François Pons <fpons@mandrakesoft.com>
-
- * c/stuff.pm: removed old code no more used.
-
- * mouse.pm: fixed pixel typo (strange, I was sure it was titi but not ?).
-
- * pkgs.pm: consolidate unselectAllPackages.
-
- * install_steps_interactive.pm: fixed test of chooseCD on nfs (always
- enabled).
- avoid removing all packages during upgrade (safe guard).
-
-2002/09/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: tag version as 9.0
-
- * rescue/tree/etc/rc.sysinit: don't drvinst SERIAL_USB when noauto (it
- needs a lspcidrake -v)
-
- * rescue/drvinst: drvinst <param> is broken when we don't -v
-
-2002/09/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/br.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/ko.po,
- share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/sp.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/ta.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: updated pot file
-
- * share/po/ru.po, share/po/pt.po, share/po/cs.po: updated pot file
- updated Czech, Russian and Portuguese files
-
- * security/main.pm: improved i18n handling
-
- * standalone/drakTermServ: small i18n change
-
-2002/09/10 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: set mount point for nt partitions by default
-
- * fs.pm:
- - have ntfs "ro" by default
- - "umask=0" is a special option for ntfs
-
-2002/09/10 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Display issues in other locales.
-
-2002/09/10 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * security/libsafe.pm, standalone/draksec: move back draksec's files in
- drakxtools
-
- * drakxtools.spec: move back draksec to drakxtools
-
- * Makefile.config: move back draksec's files in drakxtools
- move back draksec to drakxtools
-
- * security/main.pm, security/msec.pm: inline seclevel_explain (why using
- functions to return a text label ?)
- move back draksec's files in drakxtools
-
-2002/09/10 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: fixed pixel typo (strange, I was sure it was titi but not ?).
-
-2002/09/10 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: fixed pixel typo (strange, I was sure it was titi but not ?).
-
-2002/09/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po, share/po/sk.po: updated Basque and Slovak files
-
-2002/09/09 dam's <dams@idm.fr>
-
- * ugtk.pm: corrected typo (modification of constant if ugtk.pm was a
- string)
-
-2002/09/09 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm: have the IMPS/2 warning "MOVE YOUR WHEEL" for ExplorerPS/2 too
-
- * Xconfig/card.pm: have BusID's on MULTI_HEAD, otherwise G450 & G550 go
- crazy
-
-2002/09/09 David Baudens <baudens@mandrakesoft.com>
-
- * share/po/fr.po: Update
- Update
- Fix typos and bad french translations
- Update
-
- * share/advertising/14-mdkexpert.pl, share/advertising/03-internet.pl: Fix
- typos
-
-2002/09/09 dam's <dams@idm.fr>
-
- * ugtk.pm: corrected typo (modification of constant if ugtk.pm was a
- string)
-
-2002/09/09 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/ethernet.pm:
- - check DNS & Gateway IP
-
- * network/network.pm:
- - show pcmcia ethernet cards in list
-
- * modules.pm:
- - change "=~ /isdn/" in "eq 'network/isdn'"
-
-2002/09/09 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fix urpmi installation.
- fixed still present hdlist and synthesis file for media not configured
- (because
- of not selected).
-
-2002/09/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * my_gtk.pm: gfx specs is to have the text justified on the left
-
- * share/po/fi.po: a fix from cooker
-
-2002/09/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot: updated pot file
-
- * share/po/fr.po: updated po files
- updated pot file
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated po files
-
-2002/09/09 Pixel <pixel@mandrakesoft.com>
-
- * ugtk.pm, Xconfig/test.pm, install2.pm:
- - use variable $::no_ugtk_init in ugtk.pm instead of using
- $::isInstall
- - that way, the X test can be made to work both at install and
- standalone
-
- * standalone/drakupdate_fstab: force non-supermount, supermount is too
- buggy
-
- * mouse.pm: have the IMPS/2 warning "MOVE YOUR WHEEL" for ExplorerPS/2 too
-
- * Xconfig/card.pm: have BusID's on MULTI_HEAD, otherwise G450 & G550 go
- crazy
-
- * any.pm: when "password" or "restricted" is set, propose the entries to
- change them
- (thanks to Aleksander Adamowski)
- fix detection of mixed_kind_of_disks (eg: hde with hda)
-
- * standalone/fileshareset: add "sync" to nfs exports default_options (so
- that exportfs doesn't warn a lot of stuff)
-
-2002/09/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: enforce unique ids
- add drakbug report entry in help menu
-
- * drakxtools.spec: fix confirm script
- require perl-GTK-Gdkpixbuf for bootlook
-
- * harddrake/TODO: update
-
-2002/09/09 Pixel <pixel@mandrakesoft.com>
-
- * ugtk.pm, Xconfig/test.pm, install2.pm:
- - use variable $::no_ugtk_init in ugtk.pm instead of using
- $::isInstall
- - that way, the X test can be made to work both at install and
- standalone
-
- * standalone/drakupdate_fstab: force non-supermount, supermount is too
- buggy
-
- * any.pm: fix detection of mixed_kind_of_disks (eg: hde with hda)
-
-2002/09/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: enforce unique ids
- add drakbug report entry in help menu
-
- * standalone/service_harddrake: don't detect same removed/added when
- upgrading from previous releases
- - harddrake:
- o don't pollute sbin namespace with one shot scripts
- o add run wrapper script for harddrake service
- o disable ?dm part
- o timeout configurator offer to 5 seconds
-
- * ugtk.pm, bootlook.pm, standalone/logdrake, standalone/drakfloppy:
- - drakfloppy / logdrake: destroy_window and create_dialog were
- gratuitously duplicated; move them in ugtk
- - drakfloppy / logdrake / bootlook.pm: get_main_menu was
- gratuitously duplicated;
- common code which was moved from harddrake::ui to
- ugtk::create_factory_menu just do the job
-
- * drakxtools.spec:
- - harddrake:
- o don't pollute sbin namespace with one shot scripts
- o add run wrapper script for harddrake service
- o disable ?dm part
- o timeout configurator offer to 5 seconds
-
-2002/09/09 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: remove harddrake
-
-2002/09/08 Daouda Lo <daouda@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po:
- - s/occurance/occurence.
-
- * install_steps_interactive.pm:
- - s/occurance/occurence in license.txt (thx qqun)
-
-2002/09/08 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/various.pm, Xconfig/proprietary.pm: replace a few more 4.2.0
- with 4.2.1
-
- * install_interactive.pm: warn "You don't have a swap
- partition.\n\nContinue anyway?" in expert mode
-
- * Xconfig/card.pm: replace 4.2.0 with 4.2.1
-
-2002/09/07 dam's <dams@idm.fr>
-
- * standalone/drakbackup: don't display the banner id in embedded mode
-
-2002/09/07 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/draksplash:
- - use standalone for explanations and center dialog
-
- * drakxtools.spec:
- - cvs up before packaging (fix messy drakboot conf).
-
-2002/09/07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix log
-
- * share/rpmsrate: don't install kernel-secure on HIGH_SECURITY since
- kernel-secure is broken
-
-2002/09/06 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/isdn.pm:
- - fix typo
- - add new screen for ISND detected device. Still have to get back in
- Expert mode to choose by hand.
-
- * modules.pm:
- - Fix isdn card detection
-
-2002/09/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/service_harddrake, drakxtools.spec, harddrake/ui.pm,
- harddrake/data.pm:
- - harddrake::data : consolidate common code in custom_id()
- - do some detection in dm stage
- - fix bad test
- - display better name
-
-2002/09/06 David Baudens <baudens@mandrakesoft.com>
-
- * standalone/icons/hori.png: Re-add old obsolete Aurora image requires by
- drakboot (can someone explain why? It is stupid)
- Update icons & remove old Aurora stuff
-
- * standalone/icons/gmon.png, standalone/icons/categ.png,
- standalone/icons/verti.png: Re-add completly obsolote Aurora's images
- needed for drakboot (really, but really stupid requires)
- Update icons & remove old Aurora stuff
-
- * standalone/icons/ic82-tape-40.png, standalone/icons/ic-drakfont-48.png,
- standalone/icons/mdk_logo.png, standalone/icons/ic82-when-40.png,
- standalone/icons/ic82-moreoption-40.png,
- standalone/icons/ic82-system-40.png,
- standalone/icons/ic82-dossier-32.png, standalone/icons/ic82-CD-40.png,
- standalone/icons/ic82-back-up-32.png,
- standalone/icons/ic82-where-40.png,
- standalone/icons/ic82-back-up-16.png,
- standalone/icons/ic82-network-40.png,
- standalone/icons/ic82-back-up-48.png,
- standalone/icons/ic82-discdurwhat-40.png,
- standalone/icons/ic82-systemeplus-40.png,
- standalone/icons/ic82-users-40.png, standalone/icons/ic82-others-40.png:
- Update
-
- * drakxtools.spec: Update
- Update
- Update
-
-2002/09/06 Daouda Lo <daouda@mandrakesoft.com>
-
- * my_gtk.pm:
- - fix wizard title and pixmap overlap
-
-2002/09/06 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/isdn.pm:
- - fix typo
- - add new screen for ISND detected device. Still have to get back in
- Expert mode to choose by hand.
-
- * modules.pm:
- - Fix isdn card detection
-
-2002/09/06 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed to allow changing boot medium.
-
-2002/09/06 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: comment old code concerning aurora
-
-2002/09/06 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm: during install, don't probe PS/2 mice when a serial mouse is
- already found.
- (otherwise if a PS/2 keyboard is present, a PS/2 is found even if
- absent, and
- configuring an auxmouse PS/2 causes the PS/2 keyboard to freeze)
- (thanks to Nora Etukudo)
-
- * bootloader.pm (read): cleanup duplicate labels (in case file is
- corrupted)
- (get_label): compare labels using 15 first characters (to be compliant
- with lilo)
- (add_entry): fix removing duplicate entries
- (read): fix
-
-2002/09/06 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakTermServ: QA BugSummer90 fixes
-
-2002/09/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/sound.pm: killing debugging prints
- - blacklist cs46xx and cs4281 drivers : we won't unload these drivers
- since they're know to oopses the kernel but just warn the user
- - add rooted(), unload() and load() wrapper to check wheter we're in
- drakx or in standalone mode
- - workaround alsaconf's aliases
- - add an help button that describe ALSA and OSS
- - display current driver, its type (OSS or ALSA), and the default
- driver for the card
-
- * harddrake/data.pm, harddrake/ui.pm:
- - harddrake::data : consolidate common code in custom_id()
- - do some detection in dm stage
- - fix bad test
- - display better name
- - don't list usb mouses as unknown hw
- - fix mouse detection (mouse::detect() needed
- modules::mergein_conf('/etc/modules.conf') first
- - don't skip mouse in --test mode
-
- * standalone/draksound: if there's no sound card, add a note about
- sndconfig
-
- * standalone/service_harddrake:
- - harddrake::data : consolidate common code in custom_id()
- - do some detection in dm stage
- - fix bad test
- - display better name
-
- * standalone/harddrake2:
- - document --test
- - mark usage as translatable
-
- * share/po/fr.po: update french translation
-
- * harddrake/TODO: update
-
- * drakxtools.spec:
- - harddrake::data : consolidate common code in custom_id()
- - do some detection in dm stage
- - fix bad test
- - display better name
- 40mdk
-
-2002/09/06 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: add lisa in KDE in REMOTE_ACCESS
- remove contrib packages
- add !CDCOM for OpenOffice.org
- move mod_php to 5
-
-2002/09/06 David Baudens <baudens@mandrakesoft.com>
-
- * standalone/icons/ic82-tape-40.png, standalone/icons/ic-drakfont-48.png,
- standalone/icons/mdk_logo.png, standalone/icons/ic82-when-40.png,
- standalone/icons/ic82-moreoption-40.png,
- standalone/icons/ic82-system-40.png,
- standalone/icons/ic82-dossier-32.png, standalone/icons/ic82-CD-40.png,
- standalone/icons/ic82-back-up-32.png,
- standalone/icons/ic82-where-40.png,
- standalone/icons/ic82-back-up-16.png,
- standalone/icons/ic82-network-40.png,
- standalone/icons/ic82-back-up-48.png,
- standalone/icons/ic82-discdurwhat-40.png,
- standalone/icons/ic82-systemeplus-40.png,
- standalone/icons/ic82-users-40.png, standalone/icons/ic82-others-40.png:
- Update
-
- * drakxtools.spec: Update
- Update
-
- * standalone/icons/gmon.png, standalone/icons/hori.png,
- standalone/icons/categ.png, standalone/icons/verti.png: Update icons &
- remove old Aurora stuff
-
-2002/09/06 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed to allow changing boot medium.
-
- * install_steps.pm: changed how pkgs::remove is called.
-
- * pkgs.pm: fixed excesive reduction of size.
- fixed stupid typo.
- allow obsoleted packages to be taken into account.
- allow cleaning ask_remove according to removed package.
-
-2002/09/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ugtk.pm, my_gtk.pm: add gtkset_visibility
-
- * drakxtools.spec: fix and change a few things in the description
-
-2002/09/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po: updated Polish file
-
- * share/po/pt.po, share/po/sk.po: updated Portuguese and Slovak files
-
-2002/09/06 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/various.pm, Xconfig/main.pm: ensure Xconfig::various::various is
- called at install
-
- * bootloader.pm (read): cleanup duplicate labels (in case file is
- corrupted)
- (get_label): compare labels using 15 first characters (to be compliant
- with lilo)
- (add_entry): fix removing duplicate entries
- (read): fix
-
-2002/09/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update french translation
- s/si vous être nouveau/si vous êtes nouveau/
- s/des actions additionnelle/des actions additionnelles/
- s/sur le disk/sur le disque/
- s/vous pouves atteindre les toutes options/vous pouvez modifier toutes
- les options/
- Ctrl - C (.... => manque )
- s/Si vous installer/Si vous installez/
- s/qui sera utilisé/qui sera utilisée/ (partition)
- s/accessible en cas de/des images « ramdisk » accessibles/
- s/Cette installation prends/Cette installation prend/
- s/Assurez vous/Assurez-vous/
- fix po
-
- * ugtk.pm: export compose_pixbufs for mcc
- - ugtk::gtkicons_labels_widget() :
- o pass icon name in $tag to $exec_func so that the later can display
- big icon
- o $label_exec is a duplicate of $label
- o simplify notebook redrawing:
- * remove dam'sugly hacks
- * $redraw_function->() : resize Gtk::Fixed on first run if more
- than 4 icons
- * redraw in only one place
- * don't redraw on realize event
- (now we both don't flick and have proper icon alignment without
- old hacks)
- - mcc:
- o print big icon while launching a tool (anim in next commit)
- o move todo list in TODO
- o stricter check:
- * default to use strict
- * disable strict mode when building rpm
- * fixes for 'use strict'
- o kill :
- * a debugging print
- * a superflous 'no warnings'
- * a title->show since we never hide it
- * $rootheight since gtk packer do the job for us
- * unused $nb_pages
- o begin to un-hardcode some values (window and notebook size, ...)
- o cosmetics:
- * comment some code
- * add myself to authors list (deush, you should add yourself too
- since you're the localedrake/mcc interaction guru)
- * s/darea1/summary_darea/
- o don't display logs when back in main summary
- o destroy pixbuf after
-
- * harddrake/ui.pm: fix translated string
-
- * standalone/drakbackup: handle delete_event in all cases
- use my_gtk for window creation, thus:
- - window creation and embedding mode're handled automatically
- - when one close drackbackup, my_gtk close it properly and return to
- mcc
-
- * drakxtools.spec: 36mdk
-
- * standalone/drakperm: use my_gtk for embedded mode.
- code must be cleaned up through my_gtk usage though.
-
-2002/09/06 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: remove contrib packages
- add !CDCOM for OpenOffice.org
- move mod_php to 5
-
-2002/09/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/zh_TW.po, share/po/sk.po: updated po Slovak and Chinese files
-
-2002/09/05 Pixel <pixel@mandrakesoft.com>
-
- * interactive/newt.pm: special case to handle many buttons in newt:
- replacing with something alike ask_from_list (useful for XFdrake)
-
-2002/09/05 David Baudens <baudens@mandrakesoft.com>
-
- * standalone/icons/drakfont.620x57.png: Update
-
- * share/po/fr.po: Update
- Update
-
-2002/09/05 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm:
- - Remove ECI ADSL modem from menu until we have an agreement
-
- * network/netconnect.pm:
- - little fix
-
-2002/09/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ta.po: updated po file
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/nl.po: updated Dutch file
-
- * share/po/zh_TW.po, share/po/sk.po: updated po Slovak and Chinese files
-
-2002/09/05 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: better NT & Fat bootloader entry adding or not
- do not add an nt label if there is no magic
- use name mangling for labels (taken from installkernel)
-
- * interactive/newt.pm: special case to handle many buttons in newt:
- replacing with something alike ask_from_list (useful for XFdrake)
-
- * Xconfig/card.pm, Xconfig/main.pm: add an option for prefering Xinerama
- in auto_installs
-
- * fs.pm: set umask=0 for ntfs partitions (currently only used when user
- sets the mount point to a ntfs partition)
- (suggested in bug #189)
-
-2002/09/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: cleanup check for Expect - thx gc
-
-2002/09/05 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: rc2
-
-2002/09/05 David Baudens <baudens@mandrakesoft.com>
-
- * pixmaps/services.png, pixmaps/X.png, pixmaps/quit.png,
- pixmaps/bootloader.png, pixmaps/language.png, pixmaps/summary.png,
- pixmaps/security.png, pixmaps/partition.png, pixmaps/default.png,
- pixmaps/keyboard.png, pixmaps/mouse.png,
- share/advertising/02-community.png, pixmaps/rootpasswd.png,
- pixmaps/bootdisk.png, pixmaps/colors16.png, pixmaps/harddrive.png,
- pixmaps/warning.png, pixmaps/user.png, pixmaps/printer-mdk.png,
- pixmaps/network.png, standalone/icons/drakfont.620x57.png,
- pixmaps/eth_card_mini.png: Update
-
- * share/po/fr.po: Update
- Update
- Update
- Update
- Update
-
-2002/09/05 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/modem.pm:
- - fix drakconnect broken modem detection
-
-2002/09/05 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed problem of --auto-select not always run.
- fixed copy of hdlist to avoid copying ignored media.
-
- * install_any.pm: allow noauto:... media in hdlists file to be installed
- for urpmi.
-
-2002/09/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add baudens
-
- * drakxtools.spec: meuuuuuuuuuh
-
- * my_gtk.pm: ask_browse_tree_info_given_widgets: add ability of partial
- selection clickery leading to unselection for rpmdrake (if
- someone understands this log message..)
-
- * mdk-stage1/modules.c, mdk-stage1/usb-resource/update-usb-ids.pl,
- mdk-stage1/probing.c, mdk-stage1/modules.h: fake support the firewire in
- stage1 (as if it were usb ;p)
-
-2002/09/05 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: add use ugtk.pm
-
- * standalone/draksplash: preview window bug correction
-
-2002/09/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
- * share/po/zh_CN.po: updated Chinese and Danish files
-
- * share/po/it.po: updated Chinese file, some more Italian typo corrections
- updated Czech and Swedish files; corrected various erros in Italian file
-
- * share/po/es.po, share/po/ta.po, share/po/hu.po: updated po file
-
- * share/po/zh_TW.po: updated Chinese file, some more Italian typo
- corrections
-
- * share/po/da.po: updated Chinese and Danish files
- updated Danish file
-
- * share/po/cs.po, share/po/sv.po: updated Czech and Swedish files;
- corrected various erros in Italian file
-
- * share/po/sk.po: updated Slovak file
-
- * share/po/vi.po: Updated Vietnamese file
-
- * share/po/nl.po: updated Dutch file
-
-2002/09/05 Pixel <pixel@mandrakesoft.com>
-
- * standalone/localedrake: workaround kde control center calling
- localedrake with an empty kde lang
-
- * diskdrake/dav.pm: add nice description to the initial dialog box (thanks
- Stew!)
-
- * install_any.pm: add flag CDCOM when using commercial cds
-
- * network/network.pm, proxy.pm: allow http://xxx for ftp_proxy
-
- * lvm.pm: fix using given size for created LVs whereas lvcreate allocates
- a little less
- (thanks to Alan Hughes)
-
- * any.pm (ask_window_manager_to_logout): do not su into user before doing
- dcop if
- we are not root (otherwise localedrake in user ask for user's password
- before login out) (thanks to H. Narfi Stefansson for reporting it)
-
- * bootloader.pm: do not add an nt label if there is no magic
- use name mangling for labels (taken from installkernel)
-
- * standalone/XFdrake: correctly set allowFB flag
-
-2002/09/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * drakxtools.spec: rework perl-Expect usage/requirements
-
- * standalone/drakbackup: cleanup check for Expect - thx gc
- rework perl-Expect usage/requirements
-
-2002/09/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: don't rely on ctree row number
-
-2002/09/04 David Baudens <baudens@mandrakesoft.com>
-
- * standalone/logdrake, standalone/icons/wiz_logdrake.png: Add image for
- logdrake
-
- * standalone/icons/drakbackup.540x57.png, drakxtools.spec,
- standalone/icons/wiz_printerdrake.png, standalone/icons/wiz_drakgw.png,
- standalone/icons/wiz_scannerdrake.png,
- standalone/icons/wiz_drakconnect.png, standalone/icons/wiz_firewall.png,
- standalone/icons/wiz_default_up.png: Update
-
-2002/09/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/it.po: fix typo
-
-2002/09/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/af.po: updated pot file
-
- * share/po/sk.po, share/po/pt.po, share/po/vi.po, share/po/el.po: updated
- po file
- updated Greek, Hungarian, Portuguese, Slovak and Vietnamese files
-
- * share/po/cy.po: updated Welsh file
- updated po file
- updated Danish and Welsh files
-
- * share/po/da.po: updated po file
- updated Danish and Welsh files
-
- * share/po/id.po, share/po/ru.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/br.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/sp.po, share/po/ca.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/ta.po, share/po/it.po, share/po/nl.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po: updated po file
-
- * share/po/hu.po: updated hungarian file
- updated po file
- updated Greek, Hungarian, Portuguese, Slovak and Vietnamese files
-
- * share/po/fr.po: updated po file
- corrected error syntax
-
-2002/09/04 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: remove symlink Xconfigurator (which was broken anyway,
- thanks to Ian Ventura-Whiting for reporting it)
-
- * standalone/drakupdate_fstab: do not use standalone (so that no
- "explaination" are generated)
-
- * bootloader.pm (same_entries): compare kernel options sorted (this is an
- approximation of
- reality since order can matter, but...). An example is "quiet
- devfs=mount
- hdc=ide-scsi" vs "devfs=mount hdc=ide-scsi quiet" (thanks to Gabriel
- Phoenix)
-
- * ugtk.pm: make perl_checker happy
-
- * fs.pm: revert add2hash_ username=% to add2hash (it breaks diskdrake
- --smb not
- defaulting to username=%, and i can't find out what was wrong in
- auto_install's manualFstab)
-
- * install_steps.pm (addUser): fix calling with a user already existing
- (mainly for installs keeping the / non-formatted, special for pixel)
-
- * install_steps_interactive.pm: fix dialog box asking "Load from floppy"
- or "Save on floppy" in individual package selection
-
-2002/09/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * drakxtools.spec: add perl-Expect requires for drakbackup (now enabled
- and in main)
-
-2002/09/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Makefile.config: add drakperm!
-
- * share/po/fr.po: s/Si vous disque/Si votre disque/
- s/Si non,, Les partitions devront être créés/Sinon, les partitions
- devront ,bj(Btre cr,bii(Bes/
- s/des fonctionnalité additionnelle/des fonctionnalit,bi(Bs
- additionnelles/
- s/sur un disque amovibles/sur un disque amovible/
- s/sauves la table/sauve la table/
- s/pour récurer les partitions/pour r,bi(Bcup,bi(Brer les partitions/
-
- * standalone/drakperm:
- - really embbed
- - kill stupid things (aka embedded window withouth any widget vs
- toplevel window)
-
- * ugtk.pm: gtkcreate_png_pixbuf() : support jpeg too for bootlook.pm
-
-2002/09/04 baudens
-
- * standalone/icons/wiz_logdrake.png, standalone/logdrake: Add image for
- logdrake
-
- * share/po/fr.po: Update
- Update
-
-2002/09/04 Daouda Lo <daouda@mandrakesoft.com>
-
- * network/network.pm:
- - correct typos in orinoco orinoco_cs modules
-
-2002/09/04 François Pons <fpons@mandrakesoft.com>
-
- * Xconfig/test.pm: move last warning before removing tempory file in order
- to have a chance to look
- at them.
-
-2002/09/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add fcrozat
-
- * rescue/tree/etc/rc.sysinit: drvinst serial_usb in rc.sysinit so that
- legacy free machines may
- work with rescue
-
-2002/09/04 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * standalone/drakperm: changing bad save path for perm.local
-
- * bootlook.pm: replace convert dependencies by gdk-pixbuf dependencies
-
-2002/09/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cy.po, share/po/da.po: updated Danish and Welsh files
-
-2002/09/04 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: remove symlink Xconfigurator (which was broken anyway,
- thanks to Ian Ventura-Whiting for reporting it)
-
- * bootloader.pm (same_entries): compare kernel options sorted (this is an
- approximation of
- reality since order can matter, but...). An example is "quiet
- devfs=mount
- hdc=ide-scsi" vs "devfs=mount hdc=ide-scsi quiet" (thanks to Gabriel
- Phoenix)
-
- * ugtk.pm: make perl_checker happy
-
- * install_steps.pm (addUser): fix calling with a user already existing
- (mainly for installs keeping the / non-formatted, special for pixel)
-
- * share/keymaps.tar.bz2: update (now includes ro2)
-
- * install_steps_interactive.pm: fix dialog box asking "Load from floppy"
- or "Save on floppy" in individual package selection
-
- * fs.pm: revert add2hash_ username=% to add2hash (it breaks diskdrake
- --smb not
- defaulting to username=%, and i can't find out what was wrong in
- auto_install's manualFstab)
- handle no options in fs::mount (is it really needed?... it should not!)
-
- * Xconfig/test.pm: set isInstall in test script otherwise it uses
- /usr/X11R6/bin/xtest
-
-2002/09/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: enable perl-Expect (moved to main)
-
-2002/09/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Makefile.config: add drakperm!
-
- * harddrake/ui.pm:
- - add --test option to skip mice|modem|printer detection (now
- harddrake start instantaneously)
- - print probed class to show progression
- - fix tree moving by using a Gtk::CTree instead of a Gtk::Tree; side
- effect is some code cleaning which compensate above features (code
- lenght)
- - let my_gtk handle embedded case
- - don't try to center window when embedded
-
- * standalone/drakbackup: embbed drakbackup in mcc
-
- * drakxtools.spec: 33mdk
- 32mdk
-
- * standalone/drakperm:
- - really embbed
- - kill stupid things (aka embedded window withouth any widget vs
- toplevel window)
-
- * ugtk.pm: gtkcreate_png_pixbuf() : support jpeg too for bootlook.pm
-
- * share/po/fr.po: s/Si vous disque/Si votre disque/
- s/Si non,, Les partitions devront être créés/Sinon, les partitions
- devront ,bj(Btre cr,bii(Bes/
- s/des fonctionnalité additionnelle/des fonctionnalit,bi(Bs
- additionnelles/
- s/sur un disque amovibles/sur un disque amovible/
- s/sauves la table/sauve la table/
- s/pour récurer les partitions/pour r,bi(Bcup,bi(Brer les partitions/
- fix dadou fsck; please check the po before comitting it!!!!!
-
-2002/09/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * drakxtools.spec: meumeu
- meuh
-
- * ugtk.pm, my_gtk.pm: try to get rid of BEGIN but still be able to start
- up the install :-)
-
-2002/09/03 Pixel <pixel@mandrakesoft.com>
-
- * standalone/icons/harddrake2/multimedia.png: re-adding with -kb
- removing for re-adding with -kb
-
-2002/09/03 baudens
-
- * share/advertising/09-server.pl, share/advertising/02-community.pl,
- share/advertising/04-multimedia.pl, share/advertising/07-desktop.pl,
- share/advertising/14-mdkexpert.pl, share/advertising/03-internet.pl,
- share/advertising/13-mdkcampus.pl, share/advertising/12-mdkstore.pl,
- share/advertising/11-mdkstore.pl, share/advertising/05-games.pl: Use
- official marketing ads
-
- * share/advertising/list: Add MandrakeClub screen in list
-
- * share/po/fr.po: Use MandrakeSoft marketing ads
- Begin to use Mandrake's marketing ads
-
- * share/advertising/17-mdkclub.pl, share/advertising/17-mdkclub.png: Add
- MDKclub screen and text
-
-2002/09/03 dam's <dams@idm.fr>
-
- * ugtk.pm: added create_pixbutton
-
- * my_gtk.pm: better icon association
- added create_pixbutton
- added add_icon_path for control-center
-
- * pixmaps/stock_cancel.xpm, pixmaps/stock_right.xpm, pixmaps/stock_ok.xpm,
- pixmaps/stock_exit.xpm, pixmaps/stock_left.xpm: re-adding with -kb
- removing for re-adding with -kb
- icons for ok/cancel/back/previou/next icons
-
-2002/09/03 Daouda Lo <daouda@mandrakesoft.com>
-
- * drakxtools.spec:
- - obsoletes/provides drakfloppy
-
- * my_gtk.pm:
- - better size of wizard for printerdrake
-
-2002/09/03 fcrozat
-
- * share/rpmsrate: mdk-eazel-engine is now in gtk-engines
-
-2002/09/03 François Pons <fpons@mandrakesoft.com>
-
- * install_gtk.pm: fixed old Xconf style because it doesn't work anymore on
- i845 with newer format.
-
- * mouse.pm: add a sleep and second try for usb mouse.
- added log when no usb interface is found, rare enough now.
-
- * ugtk.pm: fixed previous fix;
- try to avoid clashes with install.
-
- * modules.pm: make modules.pm patchable (avoid my ...)
- updated log of add_probeall to be correct.
-
- * my_gtk.pm: fixed damien (aka pitchounette) sucking, this is not this way
- pitchounette you
- will lost your current name as pitchounette :-)
-
- * install_steps_interactive.pm: fixed too higher percentage.
-
-2002/09/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * drakxtools.spec: meumeu
- meuh
-
- * ugtk.pm: try to get rid of BEGIN but still be able to start up the
- install :-)
- have the possibility in gtktext_insert to provide font/color
- information as well
- meuh gtk init
- gtkcreate_png was too stupid to allow subdirectories for images,
- fix it
-
- * my_gtk.pm: try to get rid of BEGIN but still be able to start up the
- install :-)
-
-2002/09/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po: updated Polish file
-
- * share/po/cs.po: updated po file
-
- * share/po/zh_CN.po: updated Chinese file
-
- * lang.pm: Changed Turkish console font
-
- * share/po/Makefile: enabled ro.po
-
-2002/09/03 Pixel <pixel@mandrakesoft.com>
-
- * rescue/list.i386: add gpart (per Giuseppe Ghibò request)
-
- * my_gtk.pm: remove the use of Ok/Cancel/Exit icons (per ergonomy team
- request)
-
-2002/09/03 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Fix empty subnet in /etc/exports /home entry.
-
-2002/09/03 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: remove double translation
-
- * ugtk.pm:
- - create_pix_text, gtkicons_labels_widget: remove text color argument,
- default to black
- - remove last debugging prints
- - ugtk :
- o create_pix_text:
- * remove
- * kill uni colored background
- * api change:
- + background argument => background list
- + remove bold argument
- * render all text (normal, highlighted, selected) on specified
- background in one pass
- o gtkicons_labels_widget():
- * explain/comment
- * move all drawing logic in &$draw
- * create buffer area, text pics only one time
- * add a pixbuf for highlighted item
- * render highlighted icon by making it more transparent
- * recalculate drawing buffer only on state change
- - mcc :
- * move all drawing logic in &$draw
- * create buffer area, text pics only one time
- * render highlighted icon by making it more transparent
- * recalculate drawing buffer only on state change
-
- * drakxtools.spec: 30mdk
-
-2002/09/02 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm, network/ethernet.pm:
- - fix previous behavior in Expert mode... (100% lazy loop free this
- time)
-
- * network/netconnect.pm:
- - network restart previous bug fixed
-
-2002/09/02 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/po/fr.po: corrected a gramatical error
-
-2002/09/02 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: restore auto build of synthesis file (for updates).
-
- * ugtk.pm: fixed titi suckings.
-
- * install_steps_interactive.pm: make sure upgrade is done instead.
-
-2002/09/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/id.po, share/advertising/14-mdkexpert.pl, share/po/sk.po,
- share/po/ru.po, share/po/gl.po, share/po/pt_BR.po, share/po/br.po,
- share/po/th.po, share/po/sl.po, share/po/no.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/advertising/03-internet.pl, share/po/ko.po, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/advertising/05-games.pl, share/po/sp.po, share/po/cy.po,
- share/po/da.po, share/po/ca.po, share/po/ar.po,
- share/advertising/12-mdkstore.pl, share/advertising/09-server.pl,
- share/advertising/04-multimedia.pl, share/po/bs.po, share/po/ro.po,
- share/advertising/13-mdkcampus.pl, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/pt.po, share/po/vi.po, share/po/ta.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/cs.po,
- share/po/bg.po, share/po/el.po, share/po/hu.po: try to fix broken
- english in advertisements and not break po's
-
-2002/09/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/advertising/12-mdkstore.pl,
- share/advertising/15-mdkexpert-corporate.pl: small fix
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/ro.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/ta.po, share/po/fr.po, share/po/nl.po,
- share/po/it.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/bg.po, share/po/el.po: updated
- pot file
-
- * share/advertising/14-mdkexpert.pl: fixed typo
- small fix
-
- * share/po/hu.po: updated Hungarian file
- updated pot file
-
- * help.pm: Fixed typo
-
- * share/po/zh_TW.po: updated Chinese file
- updated pot file
-
- * share/po/pl.po, share/po/cs.po: updated pot file
- updated Czech and Polish files
-
-2002/09/02 Till Kamppeter <till@mandrakesoft.com>
-
- * share/rpmsrate: Updated for the new printerdrake.
-
-2002/09/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: use new ln icons
-
- * ugtk.pm: gtkicons_labels_widget(): check binary exists
-
- * drakxtools.spec, Makefile.drakxtools: 29mdk: add harddrake icons
-
- * standalone/icons/harddrake2/harddrake.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/usb.png, standalone/icons/harddrake2/tv.png,
- standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/modem.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/cd.png, standalone/icons/harddrake2/cpu.png,
- standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/scsi.png,
- standalone/icons/harddrake2/hw_network.png: add new icons
- remove old icons
- add new ln icons
-
- * standalone/icons/harddrake2/menu/harddrake-menu48.png,
- standalone/icons/harddrake2/cable.png,
- standalone/icons/harddrake2/menu/harddrake-menu16.png,
- standalone/icons/harddrake2/menu/harddrake-menu32.png,
- standalone/icons/harddrake2/multimedia.png,
- standalone/icons/harddrake2/K7.png: add new ln icons
-
-2002/09/02 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/po/fr.po: corrected a gramatical error
-
-2002/09/02 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: restore auto build of synthesis file (for updates).
-
- * ugtk.pm: fixed titi suckings.
-
- * install_steps_interactive.pm: make sure upgrade is done instead.
-
-2002/09/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po, share/po/pl.po: updated Czech and Polish files
-
-2002/09/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm: gtkicons_labels_widget(): check binary exists
- kill glib warnings
-
- * harddrake/data.pm: use new ln icons
-
- * drakxtools.spec, Makefile.drakxtools: 29mdk: add harddrake icons
-
- * standalone/icons/harddrake2/harddrake.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/usb.png, standalone/icons/harddrake2/tv.png,
- standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/modem.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/cd.png, standalone/icons/harddrake2/cpu.png,
- standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/scsi.png,
- standalone/icons/harddrake2/hw_network.png: add new icons
- remove old icons
- add new ln icons
-
- * standalone/icons/harddrake2/menu/harddrake-menu48.png,
- standalone/icons/harddrake2/cable.png,
- standalone/icons/harddrake2/menu/harddrake-menu16.png,
- standalone/icons/harddrake2/menu/harddrake-menu32.png,
- standalone/icons/harddrake2/multimedia.png,
- standalone/icons/harddrake2/K7.png: add new ln icons
-
-2002/09/02 baudens
-
- * share/advertising/list, share/advertising/07-desktop.pl,
- share/advertising/05-games.pl, share/advertising/06-mcc.pl: Update
-
- * share/advertising/09-server.pl, share/advertising/04-multimedia.pl,
- share/advertising/14-mdkexpert.pl, share/advertising/13-mdkcampus.pl,
- share/advertising/11-mdkstore.pl, share/advertising/02-community.pl,
- share/advertising/01-thanks.pl, share/advertising/03-internet.pl,
- share/advertising/10-mnf.pl,
- share/advertising/15-mdkexpert-corporate.pl,
- share/advertising/08-development.pl, share/advertising/12-mdkstore.pl:
- Update
- Update
-
-2002/09/02 Daouda Lo <daouda@mandrakesoft.com>
-
- * Makefile.config, drakxtools.spec, standalone.pm, docs/README.devel:
- - s/tinyfirewall/drakfirewall/
-
- * standalone/drakbug: s/tinyfirewall/drakfirewall/
- - drakbug point to https://drakbug.mandrakesoft.com
-
- * network/netconnect.pm, standalone/tinyfirewall, standalone/drakfirewall,
- network/drakfirewall.pm, network/tinyfirewall.pm:
- - replace tinyfirewall by drakfirewall
-
-2002/09/02 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: sympa => mailman
- removed PHP-nuke
-
- * share/po/fr.po: corrected a gramatical error
-
-2002/09/02 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: make sure upgrade is done instead.
- reverted previous modification moved to crypto module.
- make sure rpmdb is open before displaying packages tree.
-
- * install2.pm: now allow meta_class option on command line to be taken
- into account instead of
- previous options desktop and firewall.
-
- * install_steps.pm: add $o->{packages} to install_any::install_urpmi call.
-
- * install_any.pm: restore auto build of synthesis file (for updates).
- fixed typo.
- fix list building not to use parsehdlist.
- install_urpmi only install selected media.
-
- * crypto.pm: fix typo.
- allow selecting packages to upgrade.
-
- * install_steps_gtk.pm: strange typo where no filtering on medium was
- issued ?
-
- * pkgs.pm: fixed to call to getFile by giving medium description,
- necessary for updates.
- allow selectPackagesToUpgrade to use a specific medium instead of all of
- them.
-
- * ugtk.pm: fixed titi suckings.
-
-2002/09/02 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * drakperm: solving bugs on add and save functions
-
-2002/09/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: updated Czech and Polish files
-
- * share/po/sv.po, share/po/sk.po, share/po/de.po, share/po/zh_TW.po,
- share/po/tr.po, share/po/hu.po: updated Hungarian, Turkish, Swedish,
- Slovak and Chinese files
-
- * share/po/pl.po: updated Czech and Polish files
- updated Hungarian, Turkish, Swedish, Slovak and Chinese files
-
- * share/po/es.po, share/po/ru.po: updated Spanish and Russian files
-
-2002/09/02 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm: gtkicons_labels_widget(): check binary exists
- kill glib warnings
-
- * harddrake/sound.pm, harddrake/ui.pm: display alternative drivers (oss,
- alsa) for sound cards
-
- * harddrake/data.pm: use new ln icons
-
- * drakxtools.spec, Makefile.drakxtools: 29mdk: add harddrake icons
-
- * standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/modem.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/scsi.png,
- standalone/icons/harddrake2/harddrake.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/tv.png, standalone/icons/harddrake2/usb.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/cd.png, standalone/icons/harddrake2/cpu.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/hw_network.png: add new icons
- remove old icons
- add new ln icons
-
- * share/po/fr.po: update french translation
-
- * standalone/icons/harddrake2/menu/harddrake-menu48.png,
- standalone/icons/harddrake2/multimedia.png,
- standalone/icons/harddrake2/cable.png,
- standalone/icons/harddrake2/menu/harddrake-menu16.png,
- standalone/icons/harddrake2/menu/harddrake-menu32.png,
- standalone/icons/harddrake2/K7.png: add new ln icons
-
-2002/09/01 alus
-
- * share/po/pl.po: and more...
- some translations
-
-2002/09/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated Vientamese file
-
-2002/09/01 siegel
-
- * share/po/de.po: updates
- new german version
-
-2002/09/01 Till Kamppeter <till@mandrakesoft.com>
-
- * scanner.pm: s/Seiko Epson/Epson/ in subroutine to update ScannerDB from
- Sane.
-
- * printerdrake.pm:
- - Tell users of the HP LaserJet 1000 that they have to upload firmware
- to the printer.
- - Updated instructions to get Lexmark's inkjet drivers.
- - Suppressed the display of the "Refresh printer list" and "Specify
- CUPS server" buttons in recommended mode when there is no local network.
-
-2002/08/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated po file
- updated pot file
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/ta.po,
- share/po/fr.po, share/po/nl.po, share/po/it.po, share/po/eu.po,
- share/po/es.po, share/po/de.po, share/po/eo.po, share/po/lv.po,
- share/po/cs.po, share/po/bg.po, share/po/el.po: updated pot file
-
- * share/advertising/14-mdkexpert.pl, share/advertising/12-mdkstore.pl,
- share/advertising/15-mdkexpert-corporate.pl: no need to translate web
- adresses
-
- * standalone/drakbackup: fixed use of variables in translatable strings
-
-2002/08/31 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Fix prompt text saved as filename - Advanced What
- - Other
-
-2002/08/31 siegel
-
- * share/po/de.po: some upadtes
-
-2002/08/31 Warly <warly@mandrakesoft.com>
-
- * share/rpmsrate: add shorewall and iptables in INSTALL section
-
-2002/08/30 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed possible problem with is_installed and
- are_installed.
-
- * install_steps.pm: fixed call to pkgs::remove.
-
-2002/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2002/08/30 siegel
-
- * share/po/de.po: update german version
-
-2002/08/30 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm:
- - Fixed bugs in automatic GIMP printer configuration during
- installation.
- - Worked around a bug of "ls -r xxx*" returning "xxx*" instead of
- nothing when "xxx*" does not exist ("ls" of "busybox" during
- installation).
-
-2002/08/30 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm, drakxtools.spec:
- - mcc :
- o kill gtkpng_() and gtk_createpng_() wrappers: if icon is missing,
- better die while testing rather than make perl display "uncaught
- code ..."
- o kill unused timer
- o use new ln's icons
- o disable stupid icon highlighting (was made with duplicating
- manually all icons in gimp and blue-y them there); restore this
- effect'll need little play with gamma
- o use ugtk
- o kill dead code
- o cleanups
- o icons:
- * switch to new icons set
- * replace pixmap table by a pixbuf one
- * use pixbufs for backgrouns and icons,
- * composite background and icons with transparency trough
- ugtk::compose_pixbufs()
- * render icons with full alpha blender in left column
- * comment the different states
- * simplify callbacks
- - ugtk :
- o readd gdkpixbuf support
- o ensure imlib is used by default to load files, not gdk-pixbuf
- o compose_with_back(): load a png icon into a pixbuf and call
- compose_pixbufs with background pixbuf
- o compose_pixbufs(): render transparent icon onto background into a
- new pixbuf
- o merge gtkcreate_png_pixbuf() from gdk-pixbuf-0-branch : load an
- icon into a pixbuf
- gdk-pixbuf-0-branch also uses it to simplify a lot of code
- o gtkicons_labels_widget() :
- * add a new background pixbuf parameter that'll be composited with
- icons
- * render icons with alpha blender in right area
- * kill imlib_counter
- * kill imlib usage for
- * kill dead code (was dead since i fixed mcc memory leaks)
-
- - TODO: icon flashing on application launch
-
- - POSTPONED: merge big cleanup, global replacement of imlib usage by
- gdk-pixbuf
- from gdk-pixbuf-0-branch since it would impacted drakx
- which is not
- so good
-
-2002/08/30 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed possible problem with is_installed and
- are_installed.
-
-2002/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2002/08/30 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm, drakxtools.spec:
- - mcc :
- o kill gtkpng_() and gtk_createpng_() wrappers: if icon is missing,
- better die while testing rather than make perl display "uncaught
- code ..."
- o kill unused timer
- o use new ln's icons
- o disable stupid icon highlighting (was made with duplicating
- manually all icons in gimp and blue-y them there); restore this
- effect'll need little play with gamma
- o use ugtk
- o kill dead code
- o cleanups
- o icons:
- * switch to new icons set
- * replace pixmap table by a pixbuf one
- * use pixbufs for backgrouns and icons,
- * composite background and icons with transparency trough
- ugtk::compose_pixbufs()
- * render icons with full alpha blender in left column
- * comment the different states
- * simplify callbacks
- - ugtk :
- o readd gdkpixbuf support
- o ensure imlib is used by default to load files, not gdk-pixbuf
- o compose_with_back(): load a png icon into a pixbuf and call
- compose_pixbufs with background pixbuf
- o compose_pixbufs(): render transparent icon onto background into a
- new pixbuf
- o merge gtkcreate_png_pixbuf() from gdk-pixbuf-0-branch : load an
- icon into a pixbuf
- gdk-pixbuf-0-branch also uses it to simplify a lot of code
- o gtkicons_labels_widget() :
- * add a new background pixbuf parameter that'll be composited with
- icons
- * render icons with alpha blender in right area
- * kill imlib_counter
- * kill imlib usage for
- * kill dead code (was dead since i fixed mcc memory leaks)
-
- - TODO: icon flashing on application launch
-
- - POSTPONED: merge big cleanup, global replacement of imlib usage by
- gdk-pixbuf
- from gdk-pixbuf-0-branch since it would impacted drakx
- which is not
- so good
-
-2002/08/30 baudens
-
- * share/advertising/list: Temporary fix
-
- * share/advertising/15-mdkexpert-corporate.pl,
- share/advertising/14-mdkexpert.pl, share/advertising/13-mdkcampus.pl,
- share/advertising/12-mdkstore.pl, share/advertising/11-mdkstore.pl:
- Temporary new texts. Need to be checked and fixed
-
-2002/08/30 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed possible problem with is_installed and
- are_installed.
-
-2002/08/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * network/network.pm: fix looping on network step when configuring
- ethernet card
-
-2002/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
- updated Swedish file
-
-2002/08/30 Pixel <pixel@mandrakesoft.com>
-
- * standalone/keyboarddrake:
- - use keyboard::keyboard2full_xkb
- - call setxkbmap with -option and -model
- - use "/etc/init.d/keytable restart" instead of loadkeys
-
- * keyboard.pm, Xconfig/default.pm: most of the code of
- Xconfig::default::config_keyboard moved to keyboard::keyboard2full_xkb
-
- * verify_c: ignore c::from_utf8
-
- * any.pm:
- - set GRP_TOGGLE to '' when no GRP_TOGGLE are used
- - defaults to previous GRP_TOGGLE if one is available
-
- * Xconfig/card.pm: make perl_checker happy
-
- * Xconfig/resolution_and_depth.pm: fix typo (choosing the Flat Panel
- resolution by default)
-
-2002/08/30 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm, drakxtools.spec:
- - mcc :
- o kill gtkpng_() and gtk_createpng_() wrappers: if icon is missing,
- better die while testing rather than make perl display "uncaught
- code ..."
- o kill unused timer
- o use new ln's icons
- o disable stupid icon highlighting (was made with duplicating
- manually all icons in gimp and blue-y them there); restore this
- effect'll need little play with gamma
- o use ugtk
- o kill dead code
- o cleanups
- o icons:
- * switch to new icons set
- * replace pixmap table by a pixbuf one
- * use pixbufs for backgrouns and icons,
- * composite background and icons with transparency trough
- ugtk::compose_pixbufs()
- * render icons with full alpha blender in left column
- * comment the different states
- * simplify callbacks
- - ugtk :
- o readd gdkpixbuf support
- o ensure imlib is used by default to load files, not gdk-pixbuf
- o compose_with_back(): load a png icon into a pixbuf and call
- compose_pixbufs with background pixbuf
- o compose_pixbufs(): render transparent icon onto background into a
- new pixbuf
- o merge gtkcreate_png_pixbuf() from gdk-pixbuf-0-branch : load an
- icon into a pixbuf
- gdk-pixbuf-0-branch also uses it to simplify a lot of code
- o gtkicons_labels_widget() :
- * add a new background pixbuf parameter that'll be composited with
- icons
- * render icons with alpha blender in right area
- * kill imlib_counter
- * kill imlib usage for
- * kill dead code (was dead since i fixed mcc memory leaks)
-
- - TODO: icon flashing on application launch
-
- - POSTPONED: merge big cleanup, global replacement of imlib usage by
- gdk-pixbuf
- from gdk-pixbuf-0-branch since it would impacted drakx
- which is not
- so good
-
-2002/08/30 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: rc1
-
-2002/08/30 baudens
-
- * share/advertising/list: Temporary fix
-
-2002/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * install_steps_newt.pm: Added text for translators
-
- * share/po/nl.po, share/po/cy.po, share/po/eu.po, share/po/cs.po: updated
- po files
-
-2002/08/30 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/resolution_and_depth.pm: fix typo (choosing the Flat Panel
- resolution by default)
-
-2002/08/30 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: rc1
-
-2002/08/29 Pixel <pixel@mandrakesoft.com>
-
- * share/keymaps.tar.bz2: now the only bad one is ro2
-
- * share/po/it.po, share/po/help-fr.pot, share/po/help-de.pot,
- share/po/es.po, share/po/de.po, share/po/help-es.pot,
- share/po/help-it.pot, share/po/fr.po:
- - re-update help-xx.pot after fixing bad drakxid's in xml files
- - update xx.po's using help-xx.pot
- => at last, DrakX help is now in sync with xml files :)
-
- * pixmaps/printer-mdk.png: re-adding with -kb
- removing for re-adding with -kb
-
- * detect_devices.pm (isRemovableDrive): usb with class "Floppy (UFI)" are
- removable even if they are not media_type fd
-
- * share/po/help_xml2pm.pl:
- - fix missing to_ascii on english part in help-xx.pot
- - ignore drakxid's in a language but not in english
-
-2002/08/29 baudens
-
- * share/advertising/09-MDKcampus_icon.png,
- share/advertising/12-MDKstore_icon.png, share/advertising/00-thanks.png,
- share/advertising/10-MDKexpert.png, share/advertising/06-user.png,
- share/advertising/03-graphic_icon.png, share/advertising/03-graphic.png,
- share/advertising/13-Nvert.png, share/advertising/04-develop_icon.png,
- share/advertising/12-MDKstore.png,
- share/advertising/05-contcenter_icon.png,
- share/advertising/02-internet_icon.png,
- share/advertising/02-internet.png, share/advertising/08-games.png,
- share/advertising/11-consul.png, share/advertising/06-user_icon.png,
- share/advertising/07-server.png, share/advertising/04-develop.png,
- share/advertising/10-MDKexpert_icon.png,
- share/advertising/07-server_icon.png,
- share/advertising/08-games_icon.png, share/advertising/01-gnu.png,
- share/advertising/05-contcenter.png, share/advertising/09-MDKcampus.png:
- Remove old images
-
- * share/advertising/07-desktop.png, share/advertising/14-mdkexpert.png,
- share/advertising/01-thanks.png, share/advertising/02-community.png,
- share/advertising/11-mdkstore.png, share/advertising/12-mdkstore.png,
- share/advertising/04-multimedia.png, share/advertising/05-games.png,
- share/advertising/03-internet.png, share/advertising/06-mcc.png,
- share/advertising/13-mdkcampus.png, share/advertising/10-mnf.png,
- share/advertising/16-thanks.png,
- share/advertising/15-mdkexpert-corporate.png,
- share/advertising/09-server.png, share/advertising/08-development.png:
- New images
-
- * share/advertising/05-contcenter.pl, share/advertising/09-MDKcampus.pl,
- share/advertising/08-games.pl, share/advertising/11-consul.pl,
- share/advertising/07-server.pl, share/advertising/01-gnu.pl,
- share/advertising/03-graphic.pl, share/advertising/02-internet.pl,
- share/advertising/00-thanks.pl, share/advertising/04-develop.pl,
- share/advertising/06-user.pl, share/advertising/12-MDKstore.pl,
- share/advertising/13-Nvert.pl, share/advertising/10-MDKexpert.pl: Remove
- old texts
-
- * share/advertising/02-community.pl, share/advertising/01-thanks.pl,
- share/advertising/05-games.pl, share/advertising/09-server.pl,
- share/advertising/04-multimedia.pl, share/advertising/07-desktop.pl,
- share/advertising/10-mnf.pl, share/advertising/08-development.pl,
- share/advertising/06-mcc.pl, share/advertising/03-internet.pl: New text
- (other will come later)
-
-2002/08/29 Daouda Lo <daouda@mandrakesoft.com>
-
- * network/adsl.pm:
- - dns settings for pppoe
- - set DNS in adsl config.
- - update speedtouch link
-
-2002/08/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/probe.c: merge some code from pcmcia-cs-3.2.1 so that
- some pci pcmcia driver
- use i82365 rather than yenta_socket
-
- * standalone/logdrake: in explain mode, don't display day and hostname to
- have more
- space for the rest
-
- * drakxtools.spec: meuh
- 24mdk
-
- * my_gtk.pm: ask_browse: display_info needs to be available for rpmdrake
-
-2002/08/29 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * drakperm: Gui for file permission in msec
-
-2002/08/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * standalone/drakfont, standalone/drakxtv: English typos (no space before
- colon in English)
-
- * share/po/es.po: updated po file
- updated pot file
-
- * share/po/sk.po, share/po/vi.po: updated Slovak and Vietnamese files
- updated pot file
-
- * share/po/id.po, share/po/ru.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/br.po, share/po/th.po, share/po/sl.po, share/po/no.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sv.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/ta.po, share/po/fr.po, share/po/it.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/cs.po, share/po/bg.po,
- share/po/el.po, share/po/hu.po: updated pot file
-
- * share/rpmsrate: removed ami-gnome (the package won't be in 9.0, as it
- doesn't work
- with Gnome2)
-
- * harddrake/ui.pm: English typos (Quitter->Quit,
- Informations->Information)
- corrected English typos (no space before colon in English)
-
- * share/po/cy.po, share/po/nl.po, share/po/eu.po: updated pot file
- updated Welsh, Basque and Dutch files
-
- * harddrake/v4l.pm, standalone/drakbackup: corrected English typos (no
- space before colon in English)
-
-2002/08/29 Pixel <pixel@mandrakesoft.com>
-
- * share/keymaps.tar.bz2: now the only bad one is ro2
-
- * share/po/help_update_english_only.pl: semi-automatic script allowing to
- update help.pm without creating a hell lot of "fuzzy" in po's
-
- * share/po/Makefile: workaround missing entities in spanish
- adapt to new manual cvs dirs
-
- * share/po/help_xml2pm.pl:
- - fix missing to_ascii on english part in help-xx.pot
- - ignore drakxid's in a language but not in english
- - adapt to new manualB xml help
- - fix tr/// causing havoc in french accents (and other)
-
- * install2.pm (formatPartitions): create /dev/null as soon as possible on
- to be installed system
-
- * detect_devices.pm (isRemovableDrive): usb with class "Floppy (UFI)" are
- removable even if they are not media_type fd
- (isRemovableUsb): using "Floppy (UFI)" usb media_type is no good, use
- magical usb2removable instead
- (usb_description2removable): more entries
- (suggest_mount_point): use new function usb2removable
-
- * share/po/help-eu.pot: not available anymore (=> use the i18n from eu.po)
-
- * help.pm: update help from xml
-
- * standalone/drakupdate_fstab: fix check_hard_drives
- in --auto, print the mount points add/removed for use in hotplug
- - add option --auto
- - when --auto, ignore actions on partitions when the drive has
- extended partitions
-
- * devices.pm: allow creation of "/dev/null" device
-
- * share/po/sk.po, share/po/gl.po, share/po/pt_BR.po, share/po/th.po,
- share/po/et.po, share/po/ja.po, share/po/hr.po, share/po/be.po,
- share/po/ko.po, share/po/sv.po, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/da.po, share/po/ca.po, share/po/ar.po,
- share/po/ro.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/eu.po,
- share/po/lv.po, share/po/hu.po, share/po/id.po, share/po/ru.po,
- share/po/no.po, share/po/sl.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/uk.po, share/po/lt.po, share/po/cy.po,
- share/po/sp.po, share/po/bs.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/pt.po, share/po/ta.po,
- share/po/vi.po, share/po/nl.po, share/po/eo.po, share/po/el.po,
- share/po/bg.po, share/po/cs.po: automatic update to new help.pm (so that
- no fuzzy appears)
-
- * share/po/help-de.pot, share/po/help-it.pot, share/po/help-fr.pot,
- share/po/help-es.pot:
- - re-update help-xx.pot after fixing bad drakxid's in xml files
- - update xx.po's using help-xx.pot
- => at last, DrakX help is now in sync with xml files :)
- update help from xml
-
- * install_steps_gtk.pm: rpm description & group are in utf8, so use
- c::from_utf8
-
- * standalone/drakgw: drakgw now needs shorewall, so install shorewall if
- needed (fix bug reported by Erwan)
-
- * share/po/it.po, share/po/es.po, share/po/fr.po, share/po/de.po:
- - re-update help-xx.pot after fixing bad drakxid's in xml files
- - update xx.po's using help-xx.pot
- => at last, DrakX help is now in sync with xml files :)
- automatic update to new help.pm (so that no fuzzy appears)
-
-2002/08/29 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: GUI feedback during restore.
-
-2002/08/29 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: s/||/or/ between commands, the high-precedence "||" lead to
- problems sometimes.
-
-2002/08/29 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: move STORAGE_OTHER devices in ata controllers (aka
- pseudo raid controllers
- ala pdc)
-
- * standalone/logdrake: add a scroll bar in embedded mode for mcc
-
- * standalone/service_harddrake, harddrake/TODO: 25mdk
-
- * harddrake/ui.pm: embedded mode: exit on "quit" click
-
- * drakxtools.spec: harddrake service:
- - Prereq: rpm-helper
- - fix init-script-without-chkconfig-{post,preun}
- - s/perl -w/perl/
- - don't use diags and strict
- gc must how learn to commit
- 25mdk
-
-2002/08/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/th.po: fixed Project-Id line
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/bs.po, share/po/ru.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/sl.po, share/po/af.po, share/po/az.po, share/po/ja.po,
- share/po/ga.po, share/po/uk.po, share/po/ko.po, share/po/sr.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/sp.po,
- share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/eo.po,
- share/po/lv.po, share/po/cs.po, share/po/bg.po, share/po/el.po,
- share/po/ar.po: fixed Project-Id header
-
-2002/08/28 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm:
- - ensure prefer_xf3 is never set when {server} is missing
- - don't propose xfree3 when no {server} for the card
- - don't propose xfree4 when no {Driver} for the card
-
- * detect_devices.pm:
- - why did hds() did return removable drives in standalone? changing
- this (this was written in 1999 so no good reason must stand)
- - remove the ugly isFloppyOrHD
- - new function get_usb_storage_info which magically links
- /proc/scsi/scsi entries to /proc/bus/usb/devices & usbtable one :)
- - new function usb_description2removable which tries to categorize the
- removables
- - new function removables returning various things
- - new function isRemovableUsb using usb class
- - new function isFloppyUsb using the usbtable "Removable:floppy"
- - suggest_mount_point use "Removable:xxx" entries from usbtable, or
- usb_description2removable()
-
- * drakxtools.spec:
- - drakupdate_fstab first appearance
- - remind me to teach titi how to commit
-
- * Makefile.config, standalone/drakupdate_fstab: new prog drakupdate_fstab
-
- * fs.pm: use add2hash_ for setting "username=%" otherwise it causes havoc
- in auto_install's manualFstab
- - read_fstab, write_fstab: add the possibility to not change
- credentials
- - use detect_devices::removables()
-
-2002/08/28 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Added automatical configuration of the
- printers in the GIMP.
-
-2002/08/28 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/logdrake:
- - fix logdrake display window in embedded mode
-
-2002/08/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: small fix
-
-2002/08/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated po files
- Changed encoding of Vietnamese file to be the same as used in vi.po of
- rpmdrake
-
- * share/po/cy.po, share/po/ca.po, share/po/da.po, share/po/ar.po,
- share/po/bs.po, share/po/af.po, share/po/az.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po: fixed Project-Id header
- updated pot file
-
- * share/po/br.po, share/po/be.po, share/po/DrakX.pot, share/po/de.po:
- updated pot file
-
- * share/po/ro.po: updated po files
- updated po files
- updated Italian and Romanian files
-
- * share/po/tr.po: updated Turkish file
- updated po files
- updated po files
-
- * share/po/sk.po, share/po/no.po, share/po/mt.po, share/po/sv.po,
- share/po/ta.po, share/po/nl.po: updated po files
- updated po files
-
- * harddrake/sound.pm: Fixed typo (no space before a colon in English)
-
- * share/po/gl.po, share/po/pt_BR.po, share/po/ga.po, share/po/pl.po,
- share/po/fi.po: fixed Project-Id header
- updated po files
-
- * share/po/it.po: updated po files
- updated Italian and Romanian files
-
- * share/po/th.po: fixed Project-Id line
- updated po files
- updated po files
-
- * share/po/id.po, share/po/et.po, share/po/hr.po, share/po/wa.po,
- share/po/is.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/fr.po, share/po/eu.po, share/po/es.po, share/po/hu.po: updated
- po files
-
- * share/po/ru.po, share/po/sl.po, share/po/ja.po, share/po/uk.po,
- share/po/ko.po, share/po/sr.po, share/po/lt.po, share/po/sp.po,
- share/po/lv.po: fixed Project-Id header
- updated po files
- updated po files
-
-2002/08/28 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm (is_same_hd): add ugly support for davfs devices (http://...)
- comparison without the ending "/"
-
- * partition_table/dos.pm (partition_table::dos::last_usable_sector): don't
- use totalsectors, compute it so that it is cylinder aligned
-
- * Xconfig/monitor.pm: choose a good_default_monitor based on laptop-or-not
- (thanks to cosmic flo)
-
- * fs.pm: use add2hash_ for setting "username=%" otherwise it causes havoc
- in auto_install's manualFstab
- - read_fstab, write_fstab: add the possibility to not change
- credentials
- - use detect_devices::removables()
- remove deprecated comment (supermount *does* handle auto type nowadays)
- (set_default_options): use $is_removable to know if it is removable
- instead of
- testing the presence of $part->{rootDevice} (this must be old code
- predating
- the avaibility of $is_removable)
- create detect_devices::suggest_mount_point and use it instead of doing
- it in fs::set_removable_mntpoints
- use mkdir_p instead of mkdir
- use new function part2device() to have the file from {device} (fixes
- mounting of ntfs in standalone)
- default option username=% for smb
-
- * Makefile.config, standalone/drakupdate_fstab: new prog drakupdate_fstab
-
- * interactive.pm, interactive/gtk.pm: add {callbacks}{advanced}, called
- when "Advance" button is pressed
-
- * standalone/diskdrake: remove unused $fstab
-
- * detect_devices.pm:
- - why did hds() did return removable drives in standalone? changing
- this (this was written in 1999 so no good reason must stand)
- - remove the ugly isFloppyOrHD
- - new function get_usb_storage_info which magically links
- /proc/scsi/scsi entries to /proc/bus/usb/devices & usbtable one :)
- - new function usb_description2removable which tries to categorize the
- removables
- - new function removables returning various things
- - new function isRemovableUsb using usb class
- - new function isFloppyUsb using the usbtable "Removable:floppy"
- - suggest_mount_point use "Removable:xxx" entries from usbtable, or
- usb_description2removable()
- create detect_devices::suggest_mount_point and use it instead of doing
- it in fs::set_removable_mntpoints
- use mkdir_p instead of mkdir
-
- * Xconfig/main.pm: fix calling export_to_install_X in
- configure_everything_auto_install
-
- * install_steps.pm:
- - use $::prefix in any::get_secure_level()
- - fix any::get_secure_level() not using prefix when it should
-
- * Xconfig/xfree3.pm, Xconfig/xfree4.pm: Xconfig::xfree3::set_resolution
- and Xconfig::xfree4::set_resolution must not modify parameter $Screen
- before calling Xconfig::xfreeX::set_resolution (otherwise the resolution
- setting is done on only one device which is bad for multi-head)
-
- * any.pm:
- - use $::prefix in any::get_secure_level()
- - fix any::get_secure_level() not using prefix when it should
- (selectLanguage): fix the ugly use of focus_out for setting langs. Was
- completly rubbish in newt.
-
- * network/tinyfirewall.pm: better error message
-
- * partition_table.pm: remove associating 0x35 => 'jfs' since it causes
- types_rev to associate jfs to 0x35 instead of 0x383
-
- * loopback.pm, devices.pm, install_any.pm: use mkdir_p instead of mkdir
-
- * install_steps_interactive.pm: bus/usb category prompting is automatic
-
- * diskdrake/interactive.pm, diskdrake/removable.pm,
- diskdrake/smbnfs_gtk.pm: in "Mount point", by default choose the default
- proposition (asked by dadou for smb)
-
- * diskdrake/dav.pm: add "Mount" and "Unmount"
- in "Mount point", by default choose the default proposition (asked by
- dadou for smb)
-
- * Xconfig/resolution_and_depth.pm: on a "Flat Panel" use the flat planel
- resolution (as suggested by Alastair Scott)
-
- * install_steps_gtk.pm, share/list, Makefile: group icons are not used,
- remove them
-
-2002/08/28 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Printerdrake remembers now whether it was in normal mode or
- in expert
- mode last time.
- OpenOffice.org: Remove default printer tag from the "Generic Printer"
- when Printerdrake adds an entry for the system's default printer.
-
- * pixmaps/printer-mdk.png, pixmaps/printer.png: Renamed icon of
- Printerdrake so that it does not get overwritten by
- Star Office.
-
- * standalone/printerdrake: Printerdrake remembers now whether it was in
- normal mode or in expert
- mode last time.
- Renamed icon of Printerdrake so that it does not get overwritten by
- Star Office.
-
- * printerdrake.pm: Printerdrake remembers now whether it was in normal
- mode or in expert
- mode last time.
-
-2002/08/28 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm:
- - embeded mode:
- o only display menu bar if not in embedded mode
- o add a "quit" button in embedded mode
- - make my_gtk ui be readable by indentation
-
- * harddrake/TODO: update
-
-2002/08/27 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/various.pm, standalone/drakboot: use the new fsedit::get_hds
-
- * detect_devices.pm: set {prefix} for rd/ida/cciss/... (instead of doing
- it in fsedit::hds)
-
- * fsedit.pm:
- - create lvms() which contains what was in hds()
- - create get_hds() which handle errors when calling hds()
- - remove commented obsolete code
- - read_partitions is now read_proc_partitions_raw
- - readProcPartitions is now read_proc_partitions
- - read_proc_partitions use fake {start}s so that the empty space is
- computed ok by get_normal_parts_and_holes
- - verifyHds doesn't exist anymore
- - part of it is in hds() using compare_with_proc_partitions() and
- use_proc_partitions()
- - part of it is in install_any::getHds
-
- * partition_table.pm:
- - do not handle clearall in read()
- - ensure not partition table in written when "readonly" (it must not
- happen, but just in case)
-
- * diskdrake/interactive.pm: handle "readonly" per hds
-
- * partition_table/raw.pm (test_for_bad_drives): classify error messages
- (either read, write or something-else)
-
- * install_interactive.pm: handle "readonly" flag per hard drives instead
- of a global one
-
- * standalone/diskdrake: use function fsedit::get_hds which handles errors
-
- * share/po/de.po: remove duplicate entries
-
- * install_steps_interactive.pm, install_any.pm: remove/simplify error
- hanling (most of it is moved to fsedit.pm)
-
- * any.pm, bootloader.pm, install2.pm: :x
-
- * diskdrake/hd_gtk.pm: nicer error message when no devices are available
- (esp. for standalone)
-
-2002/08/27 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm:
- - new 'previous' button bug fix
-
-2002/08/27 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: display a warning message about packages
- to remove.
-
- * install_any.pm: added warn about packages to remove.
-
- * crypto.pm: restore real distrution version used.
-
-2002/08/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated po file
-
- * share/po/sk.po: updated Slovak file
-
-2002/08/27 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm: handle "readonly" per hds
-
- * Xconfig/various.pm, standalone/drakboot: use the new fsedit::get_hds
-
- * my_gtk.pm:
- - add ",*-r-*" in wizard fontset
- - i18n the fontset
-
- * detect_devices.pm: set {prefix} for rd/ida/cciss/... (instead of doing
- it in fsedit::hds)
-
- * partition_table/raw.pm (test_for_bad_drives): classify error messages
- (either read, write or something-else)
-
- * fsedit.pm:
- - create lvms() which contains what was in hds()
- - create get_hds() which handle errors when calling hds()
- - remove commented obsolete code
- - read_partitions is now read_proc_partitions_raw
- - readProcPartitions is now read_proc_partitions
- - read_proc_partitions use fake {start}s so that the empty space is
- computed ok by get_normal_parts_and_holes
- - verifyHds doesn't exist anymore
- - part of it is in hds() using compare_with_proc_partitions() and
- use_proc_partitions()
- - part of it is in install_any::getHds
-
- * any.pm: set password2 to password so that upgrading bootloader with an
- existing password works (thanks to Aleksander Adamowski)
- add ntools and ctools in %high_security_groups
-
- * install_interactive.pm: handle "readonly" flag per hard drives instead
- of a global one
-
- * standalone/diskdrake: use function fsedit::get_hds which handles errors
-
- * install_any.pm, install_steps_interactive.pm: remove/simplify error
- hanling (most of it is moved to fsedit.pm)
-
- * partition_table.pm:
- - do not handle clearall in read()
- - ensure not partition table in written when "readonly" (it must not
- happen, but just in case)
-
- * diskdrake/hd_gtk.pm: nicer error message when no devices are available
- (esp. for standalone)
-
-2002/08/27 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: catalog restore via HD, CD, tape & network
-
-2002/08/27 siegel
-
- * share/po/de.po: updates
- updates
-
-2002/08/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm:
- - Bug fix: s/detect_devices::getSNMPModel/printer::getSNMPModel/
- - Added support for the photo card reader in the HP PSC 2200 series.
- Make number of MB to install in first time dialog changeable without
- breaking the translations.
-
- * printer.pm: Set default text margins to half an inch and default size
- for images
- to be printed to the full page.
-
-2002/08/26 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/monitor.pm: fix 2 occurences of use of $monitors as a hash
- (thanks to Nora Etukudo)
-
- * bootloader.pm: correctly handle empty and commented lines in lilo.conf
-
- * mouse.pm: create /dev/usbmouse symlink for non devfs use
-
- * detect_devices.pm: dev_is_devfs always return false during install
-
-2002/08/26 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/printerdrake:
- - Ask user whether he really wants to set up printing when he starts
- Printerdrake for the first time.
- - Added titles ("Printerdrake") to all wait messages.
-
- * printerdrake.pm: Button to close Printerdrake shows "Done" during
- installation and in MCC and "Quit" in standalone mode.
- - Ask user whether he really wants to set up printing when he starts
- Printerdrake for the first time.
- - Added titles ("Printerdrake") to all wait messages.
-
-2002/08/26 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/ethernet.pm:
- - fix previous button behavior in Proxies configuration
-
-2002/08/26 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm: avoid using serial_probe on non terminal device
- (ttyxx or ttySxx).
-
-2002/08/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: autoselection of tamil fonts when tamil locale is chosen
-
- * lang.pm: Now console fonts (at least those used by DrakX) include an sfm
- map;
- no need to provide one.
- small fix (ta->ta_IN)
-
- * share/po/zh_CN.po: updated Chinese file
-
-2002/08/26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix deleting previous report.bug when upgrading
- revert (not needed by gnome-panel)
- move modules::write_pcmcia before install packages
-
- * Xconfig/monitor.pm: fix 2 occurences of use of $monitors as a hash
- (thanks to Nora Etukudo)
-
- * bootloader.pm: correctly handle empty and commented lines in lilo.conf
-
- * mouse.pm: create /dev/usbmouse symlink for non devfs use
-
- * network/shorewall.pm: ensure net_interface is found in any case
-
- * fsedit.pm: increase maxsize for / (partitioning with /usr) since it
- contains /tmp and /opt (as requested by Arnaud de Lorbeau)
-
- * detect_devices.pm: dev_is_devfs always return false during install
-
- * fs.pm (prepare_write_fstab): use mkdir_p instead of mkdir to handle
- mount points like /mnt/foo/bar (bug reported by David Eastcott)
-
-2002/08/26 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Dialog for printing test pages: Unmark all test pages when
- "No test
- pages" is marked.
- Accelerated printing of the photo test page when CUPS is the spooler,
- the internal image converter of CUPS is faster than ImageMagick.
-
- * printerdrake.pm: Dialog for printing test pages: Unmark all test pages
- when "No test
- pages" is marked.
- Accelerated printing of the photo test page when CUPS is the spooler,
- the internal image converter of CUPS is faster than ImageMagick.
- Hide buttons to choose network printer auto-detection in the add printer
- wizard when there is no local network (recommended mode).
- Let "samba-client" only be installed when really needed.
-
-2002/08/26 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm:
- - lots of cleanups
- - documente gtkcreate_png()
- - fix Gdk::DrawingArea usage in gtkpng_pixbuf()
- - common bring MDK::Common::Math for us
- - globalize state (aka highlith icon or not)
- code is much more understandable now
- instead of creating a global callback for repainting exposing widgets,
- all Gdk::DrawingArea'll come from gtkpng_pixbuf() whose code is 80 %
- the redrawing callback
-
-2002/08/25 gbeauchesne
-
- * share/rpmsrate:
- - Suggest "OpenOffice.org" instead of "openoffice"
- - First attempt to get localized installations of OOo
-
-2002/08/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po, share/po/da.po: updated Danish and Spanish files
-
-2002/08/25 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakautoinst: fixe explanation use
-
-2002/08/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
- * lang.pm: ichanged kde default fonts to match what we ship
-
-2002/08/24 Till Kamppeter <till@mandrakesoft.com>
-
- * detect_devices.pm, printer.pm, printerdrake.pm: Let command line tools
- for network scanning run under "chroot $refix", otherwise they take ages
- during installation.
- Moved network scanning functions from "detect_devices.pm" to
- "printer.pm" so that they have access to the "$prefix" variable.
-
-2002/08/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_TW.po, share/po/hu.po: updated Hungarian and Chinese files
-
-2002/08/23 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/xfree4.pm: fix "screen1 RightOf screen2", it must be "screen2
- RightOf screen1"
-
- * network/netconnect.pm (read_raw_net_conf): new function to access
- /etc/sysconfig/drakconnect and /etc/sysconfig/drakconnect.$type ensuring
- migration from /etc/sysconfig/draknet and /etc/sysconfig/draknet.$type
-
- * network/shorewall.pm: remove debug code
-
- * Xconfig/card.pm:
- - fix setting "Screen <number>" for multi-head cards
- - don't propose XFree3 when using multi-head
-
- * standalone.pm: add modules network::tinyfirewall and network::shorewall
-
- * interactive.pm: when standalone, use the name of the program for the
- window title
-
- * Xconfig/xfreeX.pm (set_resolution): set the resolution on all Screen
- sections (otherwise Xinerama fails (?))
-
-2002/08/23 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: combine file browser subs into generic routine
- catalog restore - check restore media params - verify media
- reworked failure to find restore path treatment
- - now user gets option to reselect dir, install
- media, or use the catalog browser for
- unmountable media
- - fix eject media typo
- - create/read tape label for catalog
- - more GUI crash fixes
- - catalog browser - can select session or
- individual files for restore - needs backend
- - merge with other CVS changes, some language fixes
-
-2002/08/23 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm: 19mdk
- - ugtk:
- o switch from imlib to gdk-pixbuf
- o kill gtkcreate_imlib()
- o big cleanup by the way
- o support alpha blender [not complete]
- o fix mem leak
- o remove dynamic support of imlib||gdk-pixbuf since:
- * gtk2 require gdk-pixbuf anyway
- * imlib sucks
- * less code/libs in install
- o kill unused cursors
- o kill icon flashing
- o gtkcreate_png_pixbuf() : load a png into a pixbuf
- o gtkpng_pixbuf() : render a pixbuf into a drawable
- o simplify gtkcreate_png(): render a pixbuf into a pixmap and an
- alpha bitmap
- o add2notebook() : simplify
- fix 95% of mcc memory leaks
- - ugtk:
- o switch from imlib to gdk-pixbuf
- o kill gtkcreate_imlib()
- o big cleanup by the way
- o support alpha blender
- o fix mem leak
- o remove dynamic support of imlib||gdk-pixbuf since:
- * gtk2 require gdk-pixbuf anyway
- o kill unused cursors
- o kill icon flashing
- o gtkcreate_png_pixbuf() : load a png into a pixbuf
- o gtkpng_pixbuf() : render a pixbuf into a drawable
- o simplify gtkcreate_png(): render a pixbuf into a pixmap and an
- alpha bitmap
- o add2notebook() : simplify
- - harddrake:
- o bump version number
-
- * standalone/draksound: use right sound-slot
-
- * share/po/fr.po: s/p,bi(Bph,bi(Briques/p,bi(Briph,bi(Briques/
-
- * network/netconnect.pm, standalone/drakgw: florin fixes for multiple NIC
- boxes
-
- * harddrake/sound.pm: 20mdk:
- - florin fixes for firewalling
- - check that alternative is unknown, not the current driver, before
- saying that there's no alternative.
- anyway, our only caller cannot get there's with a current unknown
- driver since he only try listed/know drivers ....
- 19mdk
- use right sound-slot
- check that alternative is unknown, not the current driver, before
- saying that there's no alternative.
- anyway, our only caller cannot get there's with a current unknown
- driver since he only try listed/know drivers ....
-
- * drakxtools.spec: 20mdk:
- - florin fixes for firewalling
- - check that alternative is unknown, not the current driver, before
- saying that there's no alternative.
- anyway, our only caller cannot get there's with a current unknown
- driver since he only try listed/know drivers ....
- 19mdk
- - ugtk:
- o switch from imlib to gdk-pixbuf
- o kill gtkcreate_imlib()
- o big cleanup by the way
- o support alpha blender [not complete]
- o fix mem leak
- o remove dynamic support of imlib||gdk-pixbuf since:
- * gtk2 require gdk-pixbuf anyway
- * imlib sucks
- * less code/libs in install
- o kill unused cursors
- o kill icon flashing
- o gtkcreate_png_pixbuf() : load a png into a pixbuf
- o gtkpng_pixbuf() : render a pixbuf into a drawable
- o simplify gtkcreate_png(): render a pixbuf into a pixmap and an
- alpha bitmap
- o add2notebook() : simplify
- 18mdk
- - ugtk:
- o switch from imlib to gdk-pixbuf
- o kill gtkcreate_imlib()
- o big cleanup by the way
- o support alpha blender
- o fix mem leak
- o remove dynamic support of imlib||gdk-pixbuf since:
- * gtk2 require gdk-pixbuf anyway
- o kill unused cursors
- o kill icon flashing
- o gtkcreate_png_pixbuf() : load a png into a pixbuf
- o gtkpng_pixbuf() : render a pixbuf into a drawable
- o simplify gtkcreate_png(): render a pixbuf into a pixmap and an
- alpha bitmap
- o add2notebook() : simplify
- - harddrake:
- o bump version number
-
-2002/08/23 Warly <warly@mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 4 logo
-
-2002/08/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po, share/po/hu.po: updated Hungarian file
-
-2002/08/22 Pixel <pixel@mandrakesoft.com>
-
- * network/shorewall.pm: make perl_checker happy
- use $::prefix to access shorewall config files
- - add network::shorewall
- - add tinyfirewall during install
-
- * standalone/tinyfirewall: complete rewrite
-
- * network/netconnect.pm, tinyfirewall.pm, network/tinyfirewall.pm:
- - add network::shorewall
- - add tinyfirewall during install
-
- * pixmaps/monitor-1152.png, pixmaps/monitor-1920.png,
- pixmaps/monitor-1400.png, pixmaps/monitor-2048.png,
- pixmaps/monitor-1600.png: re-adding with -kb
- removing for re-adding with -kb
-
- * standalone/drakgw: use shorewall (need testing)
-
-2002/08/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: uniformize real names
-
-2002/08/21 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed stupid typo for bestKernelPackage.
- added return for bestKernelPackage ;-)
-
-2002/08/21 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: add link to draksplash
-
- * standalone/draksplash: remove warnings
-
-2002/08/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated po file
-
-2002/08/21 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm: put back loadkeys_files which *is* used (by
- make_rescue_img)
-
-2002/08/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated po file
-
- * keyboard.pm, share/keyboards.tar.bz2: merged keyboards with XFree86
-
-2002/08/20 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm: fix pablo... uh no, too hard. fix his typo instead ;p
-
- * drakxtools.spec:
- - fix dangling waiting watch mousecursor (well, please test!)
- - adding draksplash (nathan)
-
- * my_gtk.pm:
- - in destroy, detect if program is going to leave, in that case
- don't do anything, especially don't set the waiting mouse cursor
- another thing is that calling flush() at this moment causes segfault
- so don't do it and no more segfault :)
- (now, if someone finds out what this 4 is about... but you cares, it
- works :)
- this fixes program ending on an exception
- - also add END() calling exit() (in case a program forgets to (heurk)
- call exit())
-
-2002/08/20 alus
-
- * share/po/pl.po: Upper Case
- updated translation
-
-2002/08/20 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm: o ECI adsl config fix
-
-2002/08/20 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: make sure kernel is selected during upgrade.
-
- * pkgs.pm: fixed ldconfig not visible in packages tree.
- fixed ldconfig not selected for installation.
- added bestKernelPackage.
-
-2002/08/20 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * standalone/draksplash: a tool for bootsplash theme creation
-
- * drakxtools.spec: adding draksplash
-
- * Makefile.config: adding draksplash in STANDALONEPMS_
-
-2002/08/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/keyboards.tar.bz2, keyboard.pm: merged keyboards with XFree86
-
- * share/po/ta.po, share/po/hu.po: updated po file
- updated pot file
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/cs.po,
- share/po/bg.po, share/po/el.po: updated pot file
-
- * lang.pm: Removed fallback languages for "bs" (there are enough native
- translations now)
-
-2002/08/20 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm:
- - in destroy, detect if program is going to leave, in that case
- don't do anything, especially don't set the waiting mouse cursor
- another thing is that calling flush() at this moment causes segfault
- so don't do it and no more segfault :)
- (now, if someone finds out what this 4 is about... but you cares, it
- works :)
- this fixes program ending on an exception
- - also add END() calling exit() (in case a program forgets to (heurk)
- call exit())
-
- * share/keymaps.tar.bz2: update to correspond to keyboard.pm
-
- * mouse.pm: fix the use of create_okcancel
-
- * keyboard.pm: fix pablo... uh no, too hard. fix his typo instead ;p
- - drop the loadkeys_files (it is unused)
- - add more precise check of the existence of .bkmap's and that
- share/keymaps.tar.bz2 is up to date
-
- * install_steps_interactive.pm: firewire configuration is only automatic
- add firewire controller configuration
-
- * standalone/drakbackup: fix $'s in i18n'ed strings
-
- * standalone/XFdrake: when restarting X, don't kill kdm/gdm/xdm, they
- don't need this (worse, they don't respawn)
-
- * install_steps.pm, modules.pm: add firewire controller configuration
-
- * drakxtools.spec:
- - fix dangling waiting watch mousecursor (well, please test!)
- - adding draksplash (nathan)
-
-2002/08/20 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: remove unused subs
- disable forced "backup before restore" that erases previous backup
- more work towards tracking backed up files for future recovery
-
-2002/08/20 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/scannerdrake:
- - Let all occurences of "Seiko Epson" replaced by "Epson" both in the
- scanner names read from the ScannerDB and in the names resulting from
- scanner auto-detection (names from usbtable). So the user gets
- presented "Epson" and usbtable can have "Epson" names where ScannerDB
- can have "Seiko Epson" names.
- - If a scanner is listed as "unsupported" in ScannerDB, the user gets
- a message instead of scannerdrake silently exiting.
- Fixed parantheses of a "member" function, fixed typos.
-
- * scanner.pm:
- - Let all occurences of "Seiko Epson" replaced by "Epson" both in the
- scanner names read from the ScannerDB and in the names resulting from
- scanner auto-detection (names from usbtable). So the user gets
- presented "Epson" and usbtable can have "Epson" names where ScannerDB
- can have "Seiko Epson" names.
- - If a scanner is listed as "unsupported" in ScannerDB, the user gets
- a message instead of scannerdrake silently exiting.
-
- * printer.pm: Taken LPRng from spooler menu in printerdrake.
-
-2002/08/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/logdrake: s/one of the selected service/one of the selected
- services/
- (spoted by Arpad Biro)
-
- * standalone/draksound:
- - simplify
- - allocate sound slots in the same order as install2.pm (aka in
- modules::probe_category('multimedia/sound') order)
- add draksound: allow to switch between alsa and oss;
- should result in better sound support
-
- * harddrake/TODO: instead of generating my own list of module descriptions
- from
- list_modules.pm list of sound modules, just
- usemodules::category2modules_and_description
-
- * standalone/service_harddrake:
- - kill dead code
- - more use of MDK::Common
- - use draksound wizard
- - boot: only check for removed/added disks, video card, ethernet
- devices and mouse
-
- * ugtk.pm: kill debugging prints
-
- * help.pm: s/enter a disk/insert a disk/ (Arpad Biro)
-
- * standalone/drakbackup: typo fixed seen by Arpad Biro:
- s/durind/during/
- s/an user/a user/
- s/select select/select/
- s/propogate/propagate/
-
- * harddrake/data.pm:
- - use draksound wizard
- - boot: only check for removed/added disks, video card, ethernet
- devices and mouse
- don't put dvd burners in both dvd and burners classes but only in
- burners
-
- * harddrake/Makefile, harddrake/gen_snd_list, harddrake/sound.pm: instead
- of generating my own list of module descriptions from
- list_modules.pm list of sound modules, just
- usemodules::category2modules_and_description
- add draksound: allow to switch between alsa and oss;
- should result in better sound support
-
- * docs/Partition-ends-after-end-of-disk.txt: typo fix
-
- * bootlook.pm: s/mkinird/mkinitrd/ (Arpad Biro)
-
-2002/08/19 alus
-
- * share/po/pl.po: one fix
-
-2002/08/19 Pixel <pixel@mandrakesoft.com>
-
- * Makefile.config: remove dir security
-
- * interactive/gtk.pm: use my_gtk {isWizard} and {isEmbedded} which are
- more accurate than
- $::isWizard && !$my_gtk::pop_it and $::isEmbedded && !$my_gtk::pop_it,
- since
- when the Plug is full, the window is not embedded.
-
- * fs.pm: fix checking the return value of fsck.jfs
-
- * my_gtk.pm: in my_gtk object, set {isEmbedded} if embedded and {isWizard}
- if displayed wizard mode
-
- * Xconfig/monitor.pm (readMonitorsDB): now return a list instead of a hash
- to handle same name entries with different EISA_ID
- (configure_automatic): handle EISA_ID but no VertRefresh/HorizSync
- (happens for some hardware)
- (choose): handle user asking for "Plug'n Play" monitor and ddcxinfos
- failing
-
- * Xconfig/main.pm: replace "xxx => eval { }" with "xxx => scalar eval {}"
-
-2002/08/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * modules.pm: typo fix spoted by Arpad Biro
-
- * standalone/drakbackup: s/progess/progress/ (Arpad Biro)
-
-2002/08/19 alus
-
- * share/po/pl.po: one fix
-
-2002/08/19 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * standalone/draksec:
- - draksec is now in his own package
-
-2002/08/19 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/network.pm: o remove old /etc/hosts entries for the hostname
- before adding new one
-
-2002/08/19 fcrozat
-
- * share/rpmsrate: Make sure nautilus-gtkhtml is installed by default for
- GNOME
-
-2002/08/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ta.po: Added Tamil file
-
- * share/po/pt.po: updated Portuguese file
-
-2002/08/19 Pixel <pixel@mandrakesoft.com>
-
- * Makefile.config: remove dir security
-
- * proxy.pm: add $Id: ChangeLog,v 1.1039 2005/04/12 13:43:17 prigaux Exp $
-
- * interactive/gtk.pm: use my_gtk {isWizard} and {isEmbedded} which are
- more accurate than
- $::isWizard && !$my_gtk::pop_it and $::isEmbedded && !$my_gtk::pop_it,
- since
- when the Plug is full, the window is not embedded.
-
- * install_any.pm (getAndSaveAutoInstallFloppy): ensure mount fail doesn't
- cause any pb
-
- * detect_devices.pm: add scsi Optical Device recognition (thanks to
- Michael Riss)
- (without this, a hard drive following the optical device gets assigned
- sda
- whereas sda is the optical device and the hard drive really is sdb)
-
- * fs.pm: fix checking the return value of fsck.jfs
-
- * my_gtk.pm: in my_gtk object, set {isEmbedded} if embedded and {isWizard}
- if displayed wizard mode
-
- * Xconfig/monitor.pm (readMonitorsDB): now return a list instead of a hash
- to handle same name entries with different EISA_ID
- (configure_automatic): handle EISA_ID but no VertRefresh/HorizSync
- (happens for some hardware)
- (choose): handle user asking for "Plug'n Play" monitor and ddcxinfos
- failing
-
- * Xconfig/main.pm: replace "xxx => eval { }" with "xxx => scalar eval {}"
-
-2002/08/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: s/drakconnet/drakconnect/ (Thank you for adding this
- bug, Titi)
-
-2002/08/19 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * modules.pm: add remove_modules
-
-2002/08/18 alus
-
- * share/po/pl.po: updated translation
-
-2002/08/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po: updated Catalan file
-
- * share/po/id.po, share/po/da.po: updated Danish and Indonesian files
-
- * share/po/cs.po, share/po/hu.po: updated Czech and Hungarian files
-
-2002/08/18 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: since lba32 is the default in lilo.conf
- - write "geometric" when lba32 is not set
- - don't write lba32 (useless)
-
-2002/08/18 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Fixed HP multi-function device
- configuration during the installation:
- - Fixed mistyped package name for "mtoolsfm"
- - Set links for photo card reader auto-detection to work
-
-2002/08/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/ru.po, share/po/gl.po, share/po/pt_BR.po,
- share/po/br.po, share/po/th.po, share/po/no.po, share/po/et.po,
- share/po/ja.po, share/po/hr.po, share/po/tr.po, share/po/mt.po,
- share/po/ga.po, share/po/be.po, share/po/uk.po, share/po/ko.po,
- share/po/pl.po, share/po/fi.po, share/po/lt.po, share/po/cy.po,
- share/po/ca.po, share/po/da.po, share/po/ar.po, share/po/bs.po,
- share/po/ro.po, share/po/wa.po, share/po/is.po, share/po/af.po,
- share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/vi.po, share/po/fr.po, share/po/it.po, share/po/nl.po,
- share/po/eu.po, share/po/es.po, share/po/de.po, share/po/eo.po,
- share/po/el.po, share/po/cs.po, share/po/bg.po, share/po/lv.po,
- share/po/hu.po: updated po files
-
-2002/08/17 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm:
- - allow to change the detected card
- - the chosen card can be used for dualhead if it is dualhead
-
- * Xconfig/resolution_and_depth.pm: sort resolutions to default to
- 1280x1024 instead of 1280x960
- if the monitor size is not given, default to 14'
-
- * any.pm (devfssymlinkf): use "mksymlink" instead of "symlink" so that
- devfsd doesn't give an error when the symlink already exists
-
- * Xconfig/proprietary.pm:
- - fix module not returning true
- - don't install_matrox_hal when testing
-
- * Xconfig/main.pm: ensure the chosen resolution is maintained unchanged
- when changing the graphic
- card or monitor.
-
-2002/08/17 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixes to make it possible toinstall HP's multi-function
- devices during installation.
-
- * scanner.pm: Let a newline character be put after the entry in
- /etc/sane.d/dll.conf, so more than one driver name can be added
- without all of them going into one line and then being unreadable.
-
-2002/08/16 alus
-
- * share/po/pl.po: updated
-
-2002/08/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/sl.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/sk.po: updated Slovak file
-
- * share/po/da.po, share/po/ko.po: updated Danish and Korean files
-
-2002/08/16 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix "Security Administrator (login or email)" missing field
-
- * interactive/newt.pm: fix dialog box with empty buttons (thanks to
- Hamster <hamster@hamsternet.org>)
-
- * Xconfig/test.pm: raise the testing time from 8 to 12 seconds
-
- * my_gtk.pm (create_okcancel): do not display "Cancel" when {cancel} is
- empty string
-
- * bootloader.pm (add_entry): new entry will now keep its label, the
- conflicting one will be renamed "old_xxx" (and not the opposite)
-
- * diskdrake/interactive.pm: limit max size of loopback to 2GB on FAT
-
-2002/08/16 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm: insert a space between "field:" and "description"
-
- * harddrake/v4l.pm, harddrake/bttv.pm, standalone/drakxtv,
- install_steps_interactive.pm:
- - harddrake::bttv is renamed harddrake::v4l
- - harddrake::v4l handle saa7134 too now (and not only bttv)
- - harddrake::v4l::config need a new driver parameter in order to be
- able to offer the right cards and tuners list
- - drakxtv: kill some old comments
- - add the list of cards supported by saa7134
- - add a not to remember a potentiel speedup
-
-2002/08/15 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - add --incident : could be used by signal catcher to launch drakbug
- when app crash
-
- * standalone/drakautoinst:
- - explanations
-
-2002/08/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/da.po, share/po/DrakX.pot, share/po/fr.po,
- share/po/fi.po, share/po/de.po: updated Danish and Hungarian files
-
- * share/po/zh_CN.po, share/po/gl.po, share/po/ga.po: updated Chinese file
-
- * share/po/hu.po: updated Chinese and hungarian files
- updated Danish and Hungarian files
-
- * share/po/zh_TW.po: updated Chinese and hungarian files
- updated Chinese file
-
-2002/08/15 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Allow non-root user to use program with personal
- config.
- Finish multisession support.
- Fix various crash scenarios in GUI in restore mode.
- Fix user restore mode to restore only what is requested.
- View archive contents before restore, user & sys mode.
- Add explanation of config file options for non-X users.
-
-2002/08/14 alus
-
- * share/po/pl.po: updated translation
-
-2002/08/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po, share/po/da.po: updated Catalan, Danish and Turkish
- files
- updated some po files
-
- * share/po/et.po, share/po/eu.po, share/po/es.po, share/po/eo.po,
- share/po/el.po: updated Vietnamese file
-
- * share/po/id.po, share/po/no.po, share/po/ja.po, share/po/hr.po,
- share/po/mt.po, share/po/ko.po, share/po/DrakX.pot, share/po/lt.po,
- share/po/cy.po, share/po/ar.po, share/po/wa.po, share/po/is.po,
- share/po/af.po, share/po/az.po, share/po/zh_TW.po, share/po/zh_CN.po,
- share/po/it.po, share/po/nl.po, share/po/de.po, share/po/cs.po,
- share/po/lv.po, share/po/hu.po: updated some po files
-
- * share/po/sp.po: Updated Slovak file
- updated some po files
-
- * share/po/vi.po: updated Vietnamese file
- updated some po files
-
- * share/po/th.po, share/po/tr.po: updated Catalan, Danish and Turkish
- files
-
- * share/po/ru.po, share/po/pt_BR.po, share/po/ro.po, share/po/pt.po:
- updated po files
-
- * share/po/sk.po, share/po/br.po, share/po/sl.po, share/po/be.po,
- share/po/uk.po, share/po/sv.po, share/po/sr.po, share/po/bs.po,
- share/po/bg.po: Updated Slovak file
-
-2002/08/14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: reduce the width of install window
-
- * bootloader.pm: fix "You can't install the bootloader on a xfs partition"
- happening in weird cases (thanks to Alan Hughes)
-
- * standalone/diskdrake: disable embedding of WebDAV configuration since it
- is broken
- $all_hds->{hds} must be filled in any case, not only in --hd
-
-2002/08/14 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: undo advanced_what_user I broke perl_checking
- multisession CD support
-
-2002/08/14 Warly <warly@mandrakesoft.com>
-
- * share/compssUsers.server: add LSB group
-
-2002/08/13 alus
-
- * share/po/pl.po: 2 strings overlapped each other
-
-2002/08/13 Pixel <pixel@mandrakesoft.com>
-
- * network/dav.pm: nothing useful for the moment
- use ensure_is_installed
-
- * interactive/gtk.pm: handle the setting of 'ok' and 'cancel'
-
- * diskdrake/dav.pm: add checking davfs is installed
- rough WebDAV gui
-
- * standalone.pm: add ensure_is_installed (which was
- network::smbnfs::check_raw and is often useful)
-
- * standalone/diskdrake, diskdrake/interactive.pm: rough WebDAV gui
-
- * network/smbnfs.pm, network/smb.pm, network/nfs.pm: use
- ensure_is_installed
-
-2002/08/13 siegel
-
- * share/po/de.po: updates
-
-2002/08/13 alus
-
- * share/po/pl.po: 2 strings overlapped each other
- updated translation
-
-2002/08/13 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed stupid typo.
- allow selecting a choice package according to locales-xx found.
-
- * crypto.pm: added a true value.
-
- * share/rpmsrate: removed duplicate aspell-xx as DrakX will take care of
- them now.
-
-2002/08/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/gen_locales.sh: corrected erros that made the script fail
-
- * share/po/eu.po, share/po/es.po, share/po/DrakX.pot, share/po/ru.po,
- share/po/ro.po, share/po/pl.po, share/po/gl.po, share/po/fi.po,
- share/po/pt_BR.po, share/po/et.po, share/po/zh_TW.po, share/po/eo.po,
- share/po/pt.po, share/po/el.po, share/po/fr.po, share/po/ga.po: updated
- Portuguese and Chinese files
-
- * share/po/zh_CN.po: updated Chinese file
- updated Portuguese and Chinese files
-
-2002/08/13 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: require latest perl-MDK-Common
-
- * interactive.pm: remove completly setting 'ok' & 'cancel' since it's
- better done per
- interactive::* to handle correctly the Wizard mode
- button "Previous" and "Next" are not only there in interactive::gtk
-
- * standalone.pm: add ensure_is_installed (which was
- network::smbnfs::check_raw and is often useful)
-
- * fsedit.pm, fs.pm: backend davfs (WebDAV) support
-
- * interactive/gtk.pm: handle the setting of 'ok' and 'cancel'
-
- * interactive/http.pm, interactive/stdio.pm, interactive/newt.pm:
- - handle setting 'ok' && 'cancel'
- - handle isWizard in newt (basic handling)
-
- * diskdrake/dav.pm: add checking davfs is installed
- rough WebDAV gui
-
- * Xconfig/main.pm (export_to_install_X): if monitor is p'n'p, don't save
- it for auto_install
-
- * network/dav.pm: nothing useful for the moment
- use ensure_is_installed
- backend davfs (WebDAV) support
-
- * standalone/diskdrake: rough WebDAV gui
-
- * network/smbnfs.pm, network/smb.pm, network/nfs.pm: use
- ensure_is_installed
-
- * diskdrake/interactive.pm: rough WebDAV gui
- backend davfs (WebDAV) support
-
-2002/08/13 siegel
-
- * share/po/de.po: updates
-
-2002/08/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: harddrake-ui doesn't have to provides kudzu
-
- * standalone/drakxtv: add "Australian Optus cable TV" support (need xawtv
- <= 3.76)
-
- * standalone/service_harddrake: check the config file isn't empty
-
-2002/08/12 alus
-
- * share/po/pl.po: spell checking
- updated translation
-
-2002/08/12 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: allow removing packages on upgrade.
-
- * pkgs.pm: fixed stupid change (almost hope it was really changes).
- fix to reduce size of already installed packages.
-
- * install_steps_interactive.pm: synced to force calling
- selectPackagesAlreadyInstalled in order to have
- installed and upgrade computed (necessary to known if a package is
- already
- installed or will be upgradable to compute size more precisely).
-
-2002/08/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po, share/po/et.po, share/po/zh_TW.po, share/po/vi.po,
- share/po/eu.po, share/po/uk.po, share/po/es.po, share/po/eo.po,
- share/po/el.po: updated po files
-
- * share/po/zh_CN.po: updated Chinese file
- updated po files
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2, share/Makefile:
- locale name <-> charset correspondances better matching what DrakX uses
-
- * share/po/bs.po, share/po/br.po, share/po/be.po, share/po/cy.po,
- share/po/ca.po, share/po/cs.po, share/po/bg.po: updated Chinese file
-
-2002/08/12 Pixel <pixel@mandrakesoft.com>
-
- * standalone.pm:
- - add setExportedVarsInSh and setExportedVarsInCsh
- - remove setVarsInCsh (obsoleted by setExportedVarsInCsh)
-
- * bootloader.pm: fix typo
-
- * interactive.pm: don't switch to 2 buttons dialog box if the labels are
- too long in ask_from_list
- (otherwise it's ugly (reported for XFdrake multi-head choice with 67 &
- 58
- chars strings) (fix bug #62)
-
- * Xconfig/xfreeX.pm: create a backup of XF86Config (XF86Config.old)
-
- * any.pm: use setExportedVarsInSh for setting /etc/profile.d/proxy.sh so
- that http_proxy
- and ftp_proxy are exported (thanks to Pascal <pascal@vmfacility.fr>)
-
- * keyboard.pm, network/network.pm, install_steps.pm:
- - fix reading previous keyboard config on upgrade (for displaying in
- summary)
- - ensure keyboard and mouse configuration are not overwritten if not
- explictly modified on upgrade
- - propagate pci=xxx at install to bootloader (since "pci=bios,biosirq"
- is needed on some box, see http://islay.dyndns.org/taz/index.html for
- more)
-
- * proxy.pm: allow ftp_proxy beginning with http: (thanks to Christophe
- Combelles)
-
- * install2.pm:
- - fix reading previous keyboard config on upgrade (for displaying in
- summary)
- - ensure keyboard and mouse configuration are not overwritten if not
- explictly modified on upgrade
- - propagate pci=xxx at install to bootloader (since "pci=bios,biosirq"
- is needed on some box, see http://islay.dyndns.org/taz/index.html for
- more)
- use $::prefix
-
- * mouse.pm, Xconfig/default.pm: use $::prefix
-
- * bootlook.pm: fix embedding
-
-2002/08/12 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * ugtk.pm: consolidate create_factory_menu
- - ugtk::gtkexpand : new function
- - harddrake::ui : uses it
- write_on_pixmap: kill unused variable
- tree_set_icon: new function
- create_okcancel isn't in ugtk so don't export it (warning fix)
-
- * harddrake/ui.pm: print fields values in blue, paint unknown module in
- red
- consolidate create_factory_menu
- - on exit, kill the running configurator if any
- - modules::get_parameters : consolidate some code
- - harddrake::ui : uses it
- - ugtk::gtkexpand : new function
- - harddrake::ui : uses it
- - perl_checker fix
- - simplifications
- - put signals ids in %IDs
- - consolidate duplicated disconnection code into disconnect
- tree_set_icon: new function
-
- * modules.pm:
- - modules::get_parameters : consolidate some code
- - harddrake::ui : uses it
-
- * scanner.pm: update TODO list
-
- * harddrake/TODO:
- - on exit, kill the running configurator if any
-
-2002/08/12 Warly <warly@mandrakesoft.com>
-
- * share/compssUsers: update LSB text
-
- * share/logo-mandrake.png: logo for beta 3
-
- * share/rpmsrate: remove useless 2 GNOME
-
-2002/08/11 alus
-
- * share/po/pl.po: updated
-
-2002/08/11 Pixel <pixel@mandrakesoft.com>
-
- * partition_table/raw.pm: add Acronis bootloader magic
-
- * share/rpmsrate: adding aspell-LANGS before evolution to workaround the
- choices limitation (=> allow to choose the right aspell-LANG)
-
- * docs/comparisons: comprehensive feature-to-feature comparison with
- redhat 8.0
-
- * diskdrake/interactive.pm: allow to enter any mount point even in
- non-expert (why was it still the other way??)
-
- * drakxtools.spec: add "PreReq: rpm-helper" in drakxtools-http as advised
- by rpmlint
-
- * bootloader.pm:
- - compare_entries is now called same_entries
- - same_entries try hard to return true even if the files not the same
- but symlinks to the same file
- - rework add_entry (it handles weird case which used to give old_linux
- and old2_linux even if they are the same)
- - ensure the old failsafe entry doesn't give any old_failsafe
-
-2002/08/11 alus
-
- * share/po/pl.po: updated
-
-2002/08/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/sv.po, share/po/sr.po, share/po/sk.po,
- share/po/sp.po, share/po/af.po, share/po/sl.po, share/po/az.po,
- share/po/hr.po, share/po/ar.po, share/po/hu.po: updated some po files
-
- * share/po/th.po, share/po/tr.po: updated Turkish file
-
-2002/08/11 Pixel <pixel@mandrakesoft.com>
-
- * lvm.pm:
- - vg_add: do not vgremove the old_name anymore, this is dangerous and
- should not happen
- - lv_create: fix bug when {primary}{normal} didn't exist
- - use run_program::get_stdout instead of ``
- - create and use run() and run_or_die() which takes care of running
- vgscan again when needed
- - rename LVMname to VG_name
-
- * diskdrake/interactive.pm: allow to enter any mount point even in
- non-expert (why was it still the other way??)
- rename LVMname to VG_name
-
- * detect_devices.pm (floppies): module "floppy" can fail to insmod, in
- that case it means
- there's no floppy controller, so don't try fd0 & fd1 which may cause
- havoc
- (esp. segfault) (thanks to rcc)
-
- * share/rpmsrate: adding aspell-LANGS before evolution to workaround the
- choices limitation (=> allow to choose the right aspell-LANG)
-
- * docs/comparisons: comprehensive feature-to-feature comparison with
- redhat 8.0
-
- * diskdrake/hd_gtk.pm, partition_table.pm: rename LVMname to VG_name
-
- * fsedit.pm: get rid of the duplicated /tmp in for suggestions_mntpoint()
- (thanks to Amaury)
- - rename LVMname to VG_name
- - part2hd: allow rootDevice to be a VG_name
- - add auto_allocate_vgs
- cleanup
-
- * fs.pm (prepare_write_fstab): no need to read the fstab once again before
- writing since reading takes care of everything, including unknown
- entries (which go to {special}). This fixes a bug when removing existing
- partition with associated mount point. It used to keep the entry in
- fstab, which is wrong (as reported by andré <naderrt@wanadoo.fr>)
-
- * modules.pm (load): when isStandalone, ignore errors when loading
- unavailable modules (ie have the same behaviour as during install)
-
- * run_program.pm: add get_stdout (similar to rooted_get_stdout)
-
- * bootloader.pm:
- - compare_entries is now called same_entries
- - same_entries try hard to return true even if the files not the same
- but symlinks to the same file
- - rework add_entry (it handles weird case which used to give old_linux
- and old2_linux even if they are the same)
- - ensure the old failsafe entry doesn't give any old_failsafe
-
- * network/smb.pm: fix yet another bug regarding credentials during install
-
- * install_steps_auto_install.pm: nice message when rebootNeeded in
- auto_install (otherwise it reboots without prompting)
-
-2002/08/11 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Setup of HP MF devices on parallel port did
- not work. Fixed.
- Allow setup of MF device if device file name "/dev/printer/<number>" was
- entered.
- If auto-detection of model name fails, ask user always whether he has an
- MF device.
- If SNMP or local auto-detection fails but HPOJ auto-detection succeeds,
- use model name found by HPOJ.
-
-2002/08/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po, share/po/sv.po: updated po file
-
-2002/08/10 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm:
- - fix computing the minimal size for reiserfs resizing
- - use run_program::run instead of system for calling resizing tools
-
- * install_any.pm: workaround perl bug another way
-
-2002/08/10 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: GUI fixes, scp, rsync, webDAV, CD, tape support.
- Consolidate all net methods into one configure screen.
- Daemon mode, email fixed. Ran perl_checker and corrected.
- GUI feedback during various backup modes and result report.
- CD/Tape drive/media detection. Start to look at cataloging
- runs for locating restore media.
-
-2002/08/10 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Removed HP multi-function device configuration from SMB
- and remote LPD printer setup.
- Let the Sony IJP-V100 being treated as an HP multi-function device.
- Taken into account that the HP PhotoSmart 7150 has no photo card reader.
- Use any::get_secure_level() instead of printer::get_security_level().
-
- * detect_devices.pm: Scanning network for printers did not work during
- installation. Fixed.
-
- * printer.pm: Use any::get_secure_level() instead of
- printer::get_security_level().
-
-2002/08/09 fcrozat
-
- * share/rpmsrate: No longer requires metacity-setup (everything can be
- done using gnome-control-center)
- Ensure we install enough GNOME packages when selection GNOME
-
-2002/08/09 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: make sure size of packages is computed.
-
- * pkgs.pm: take care of packages already installed that will be removed
- (untested).
-
- * install_any.pm: fixed loadO when getFile is not used (local files).
-
- * interactive.pm: allow cancel button even for wizard.
-
- * install_steps_interactive.pm: small update to avoid side effect of bless
- to HASH even if nothing results from
- this.
-
-2002/08/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
-
- * share/po/pt.po: updated Portuguese file
-
- * share/po/id.po, share/po/fr.po: updated French and Indonesian files
-
-2002/08/09 Pixel <pixel@mandrakesoft.com>
-
- * share/keyboards.tar.bz2: fix rights on files
-
- * tools/make_mdkinst_stage2, share/list.i386, install_any.pm: add fsck.jfs
-
- * any.pm, modparm.pm, harddrake/ui.pm:
- - fix module parameter dialog box handling
- - enable the cancel on load_module__ask_options
-
- * bootloader.pm (mkinitrd): when an initrd is already there, it means an
- initrd is needed
- not the contrary (thanks to Damon Lynch for his test)
-
- * install_steps.pm: remove previous report.bug.gz (otherwise one get a
- report.bug *and* the previous report.bug.gz)
- (report.bug's are not rotated, ddebug.log's and install.log's are)
-
-2002/08/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * modparm.pm: no need anymore to pass extra arguments for harddrake::ui
-
- * Xconfig/various.pm: perl_checker fixes
-
- * harddrake/TODO: module parameters're now read from /etc/modules.conf
- before being
- altered
-
- * harddrake/bttv.pm: resync with bttv-0.7.95, add support for :
- - tv cards:
- o Hauppauge WinTV PVR
- o Leadtek|WinFast VC 100
- - tv tuners:
- o LG NTSC (newer TAPC series)
-
- * drakxtools.spec: harddrake changes
-
- * modules.pm: mergein_conf: return options if they're set
-
- * harddrake/ui.pm:
- - module configuration window:
- o read current options
- o don't display ranges, we cannot really know when a range is
- needed and so display them in wrong cases (kill code, enable us
- to simplify modparm::parameters after
- o read & parse modules.conf only when configuring the module, not
- on each click in the tree
- o move up "require module" since we use it above
- o use get_options accessor instead of direct $conf access
- o split the options string into a hash{option => value}
- o don't call several times interactive->vnew
- o fix busy cursor on window exit because of the previous change
-
-2002/08/08 alus
-
- * share/po/pl.po: various changes
-
-2002/08/08 Pixel <pixel@mandrakesoft.com>
-
- * services.pm (services): better sorting of services
-
-2002/08/08 alus
-
- * share/po/pl.po: various changes
- corrected errors
-
-2002/08/08 François Pons <fpons@mandrakesoft.com>
-
- * fs.pm: make sure fsck is called for ext3 partition (due to possible
- kernel panic on
- corrupted ext3 partition, even after mounting ext3, umounting and
- remounting
- ext2).
-
-2002/08/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/keyboards.tar.bz2, keyboard.pm: Added Tamils TSCII keyboard
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/de.po,
- share/po/eo.po, share/po/lv.po, share/po/cs.po, share/po/bg.po,
- share/po/el.po, share/po/hu.po: updated pot file
-
- * lang.pm: Added Tamils TSCII keyboard
- Added some support for Tamil (proper KDE default fonts, and define it
- as iso8859-1 encoding for kde)
-
- * share/po/es.po: updated pot file
- updated Spanish file
-
-2002/08/08 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm:
- - remove the icons in reallyChooseGroups
- - add the LSB group
- - remove buttons to change theme
- - add F5 to change the theme to the 'white' theme
- - cleanup the theme code
- workaround a weird pb with gtk: still re-creating help Gtk::Text at each
- step :-/
- - remove the "help" button
- - ensure the help box is not created twice (except when changing
- theme)
-
- * Xconfig/xfreeX.pm (set_resolution): handle the optional $resolution->{Y}
- (@resolutions): add 1280x960
- fix typo
- replace 1152x768 with 1152x864 as it should and used to be
-
- * install_steps.pm: don't add users in group usb (unneeded (?), anyway
- doesn't do anything since group usb doesn't exist currently)
-
- * install2.pm:
- - remove buttons to change theme
- - add F5 to change the theme to the 'white' theme
- - cleanup the theme code
-
- * services.pm (services): better sorting of services
-
- * install_any.pm, timezone.pm: use $::prefix in timezone::read
- timezone::read now returns a hash
-
- * install_gtk.pm:
- - remove buttons to change theme
- - add F5 to change the theme to the 'white' theme
- - cleanup the theme code
- workaround a weird pb with gtk: still re-creating help Gtk::Text at each
- step :-/
- - remove the "help" button
- - ensure the help box is not created twice (except when changing
- theme)
-
- * Xconfig/various.pm (tvout): rough default value for PAL vs NTSC
- (configure_FB_TVOUT): add ModeLines (Florent Beranger says it displays
- better with them)
-
- * any.pm:
- - write_passwd_user: ensure {pw} is set (at least '')
- - cleanup dead code
- (ask_window_manager_to_logout): adapt to new gnome
- sort security level descriptions
-
- * my_gtk.pm: do not hard code icon path
- - remove buttons to change theme
- - add F5 to change the theme to the 'white' theme
- - cleanup the theme code
-
- * Xconfig/card.pm, Xconfig/monitor.pm, Xconfig/main.pm: when prompting for
- VideoRam, default to the value obtained via DDC
-
- * Xconfig/resolution_and_depth.pm: handle the pb of resolutions where X
- doesn't imply Y (eg: 1280x1024 and 1280x960)
-
- * standalone/adduserdrake:
- - fix detecting use of MD5 and shadow passwords
- - cosmetic move of any::addUsers
-
-2002/08/08 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm, install_steps_interactive.pm: Windows PDC -> Windows
- Domain, don't make samba dirs - samba fixed now
-
-2002/08/08 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * scanner.pm: old hp scanners report themselves as "Processor"s as :
- - tested in hw lab
- - written in linux/include/scsi/scsi.h: "TYPE_PROCESSOR.*HP scanners
- use this"
- - reported by sane-find-sane: "old HP scanners use the CPU id"
-
- * detect_devices.pm: explain the fscking "Processor" need
- old hp scanners report themselves as "Processor"s as :
- - tested in hw lab
- - written in linux/include/scsi/scsi.h: "TYPE_PROCESSOR.*HP scanners
- use this"
- - reported by sane-find-sane: "old HP scanners use the CPU id"
-
-2002/08/07 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * security/shorewall.pm: shorewall-related functions will go here.
-
-2002/08/07 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: added automatic update of lilo image and KDE & GNOME
- background.
-
- * install2.pm: allow automatic oem patch. add log if successfull patching.
-
- * install_steps_interactive.pm: do not ask user to select ignored medium.
-
- * crypto.pm: allow patching of mirror used.
-
- * pkgs.pm: call rpmReadConfigFiles before installing packages.
- do not read package of ignored medium (contrib) to save memory.
-
- * install_any.pm: getAndSaveFile now return before writing zero-length
- file if input file doesn't
- exists on invocation.
-
-2002/08/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: updated Vietnamese file
-
-2002/08/07 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm: load glx in any case (well except for nvidia
- proprietary shit)
-
- * fs.pm: "LABEL=xxx" in fstab handling
-
- * bootlook.pm: replace glob() with all()
-
- * network/netconnect.pm (get_profiles): get rid of "glob", clean it up
-
-2002/08/06 alus
-
- * share/po/pl.po: updated translation
-
-2002/08/06 Daouda Lo <daouda@mandrakesoft.com>
-
- * network/tools.pm:
- - set the vpi vci correctly according to selected country.
-
-2002/08/06 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added log to follow dead lock to check what may cause it).
-
-2002/08/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: add warly,jgotti
-
-2002/08/06 Jonathan Gotti <jgotti@mandrakesoft.com>
-
- * bootlook.pm: add standalone::explanations for bootsplash configuration
-
-2002/08/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: Increased the level of "yudit"; it's one of the editors
- with best utf-8
- support, so very useful to have.
-
- * share/po/fr.po, share/po/wa.po: updated French and Walloon files
- Put _() around two strings in security level choosing
-
- * share/po/DrakX.pot: updated French and Walloon files
-
- * any.pm, share/po/pl.po: Put _() around two strings in security level
- choosing
-
-2002/08/06 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/xfree3.pm, Xconfig/xfreeX.pm, Xconfig/xfree4.pm,
- Xconfig/parse.pm: make wacom config work
-
- * bootloader.pm (get_kernels_and_labels): only take kernels for which we
- have the corresponding /lib/modules/VERSION (otherwise mkinitrd will
- fail)
-
- * run_program.pm (raw): new function allowing special options like
- {timeout}
-
- * fsedit.pm:
- - add /tmp in %suggestions for server partitioning
- - tweak some ratio's in %suggestions
-
- * any.pm (ddcxinfos): use the new run_program::raw with a 20s timeout to
- workaround ddcxinfos going wild using 100% system CPU
-
- * detect_devices.pm, my_gtk.pm, install_any.pm: make perl_checker happy
-
- * standalone.pm: add "use run_program" as needed
-
-2002/08/06 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: typo, change /etc/exports explanation in help
-
-2002/08/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: make perl_checker happier :-)
- - dont detect undef devices
- detect modem too
- - rename scanner::findScannerUsbport as scanner::detect
- as in mouse.pm
- - scanner::detect : detect SCSI scanners too
-
- * drakxtools.spec: log changes
-
- * network/modem.pm: nobody pass the second argument of
- network::modem::modem_detect_backend() so let simplify it
-
- * standalone/scannerdrake:
- - rename scanner::findScannerUsbport as scanner::detect
- as in mouse.pm
- - scanner::detect : detect SCSI scanners too
-
- * ugtk.pm: remove old references to rectangle drawing around mcc icons
-
- * scanner.pm: make perl_checker happier :-)
- - dont detect undef devices
- - rename scanner::findScannerUsbport as scanner::detect
- as in mouse.pm
- - scanner::detect : detect SCSI scanners too
-
-2002/08/05 Pixel <pixel@mandrakesoft.com>
-
- * share/list: switch to thread-multi
-
- * any.pm, mouse.pm: do the job of devfsd in case devfsd doesn't do it
-
- * drakxtools.spec: rebuild for perl thread-multi
-
- * rescue/list.sparc, rescue/list.x86_64, rescue/list.i386,
- rescue/list.ia64, rescue/list, rescue/list.alpha, rescue/list.ppc:
- - adapt to thread-multi
- - packdrake.pm is now out of arch dir
-
-2002/08/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm: smbpasswd call deferred with addToBeDone
-
-2002/08/05 alus
-
- * share/po/pl.po: removed unused strings
- updated translation, ugh... after second beta so much changes??
-
-2002/08/05 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/logdrake:
- - do not show empty wizard when save button clicked.
- - cleanup (remove all sms stuffs: code and labels)
- - do not expand mail address
-
-2002/08/05 gbeauchesne
-
- * Makefile: lib64 fixes
- - Move xf86Wacom.so modules to {i386,ppc}-specific filelist
- - Make filelists lib64 aware with LIB variable
- - Add x86_64-specific filelist
-
- * share/list.i386, Makefile.config, share/list, share/list.x86_64,
- share/list.ppc:
- - Move xf86Wacom.so modules to {i386,ppc}-specific filelist
- - Make filelists lib64 aware with LIB variable
- - Add x86_64-specific filelist
-
-2002/08/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * drakxtools.spec: 1.1.9-5mdk
- 1.1.9-4mdk
-
- * my_gtk.pm: the state can be XXX also in flat mode, for disabling
- the setting of the state
-
-2002/08/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/ko.po, share/po/DrakX.pot, share/po/sr.po, share/po/pl.po,
- share/po/fi.po, share/po/lt.po, share/po/cy.po, share/po/ca.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/vi.po, share/po/fr.po, share/po/it.po,
- share/po/nl.po, share/po/eu.po, share/po/es.po, share/po/de.po,
- share/po/eo.po, share/po/el.po, share/po/cs.po, share/po/bg.po,
- share/po/lv.po: updated pot file
-
- * share/po/sv.po, share/po/da.po, share/po/hu.po: updated pot file
- updated po files
-
- * share/po/tr.po, share/po/pt.po: updated po files
- updated pot file
-
-2002/08/05 Pixel <pixel@mandrakesoft.com>
-
- * tools/Makefile: packdrake.pm is now in vendorlib
-
- * commands.pm: make perl_checker happy
-
- * bootlook.pm, standalone/printerdrake, standalone/draksec,
- standalone/drakfloppy, standalone/drakxservices, standalone/drakfont,
- standalone/drakautoinst, my_gtk.pm, standalone/drakconnect,
- standalone/drakgw, standalone/XFdrake, standalone/tinyfirewall,
- standalone/keyboarddrake, standalone/drakTermServ,
- standalone/mousedrake, standalone/scannerdrake: replace "kill USR1" with
- "kill 'USR1'" (and same for USR2)
- (so that 'use strict' works)
-
- * drakxtools.spec: rebuild for perl thread-multi
-
- * diskdrake/smbnfs_gtk.pm: adapt to ugtk
-
- * standalone.pm (install): verify at least one package is not installed
- before displaying a
- wait_message and calling urpmi (thanks to Jure Repinc)
- (is_installed): use run_program and redirect stdout to dave null for
- cleanness
-
- * Xconfig/card.pm: fix Option's (especially for XFree3)
- don't have Utah GLX the default. XFree4 is the default
-
- * share/list: switch to thread-multi
- packdrake.pm is now in vendorlib
-
- * Xconfig/main.pm: call the "Quit" button exit during install (as
- suggested by David Sansome)
-
- * any.pm, mouse.pm: do the job of devfsd in case devfsd doesn't do it
-
- * install_steps_interactive.pm: as suggested by Buchan Milne, defaults
- LDAP Server to ldap.DOMAINNAME
-
- * Xconfig/xfree4.pm: still have HorizSync and VertRefresh for Plug'n Play
- monitors
- (XFree4 still need some help)
-
- * standalone/drakboot: replace "kill USR1" with "kill 'USR1'" (and same
- for USR2)
- (so that 'use strict' works)
- a few more fixes (thanks Jure Repinc & Richard Burt)
-
-2002/08/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm: smbpasswd call deferred with addToBeDone
-
-2002/08/05 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Make/Model/Driver list in expert mode: Fixed bug of
- "recommended" driver entries getting a duplicate entry without
- "recommended" when entering the list via double-click on existing queue
- / "Printer manufacturer, model, driver".
- Finished auto-detection of network and SMB printers.
- Added automatic configuration of HP's multi-function devices when
- connected via HP JetDirect (network).
-
- * printer.pm: Finished auto-detection of network and SMB printers.
- Added automatic configuration of HP's multi-function devices when
- connected via HP JetDirect (network).
-
-2002/08/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * modules.pm:
- - export %modules::conf
- - kill modparm::raw_parameters and modparm::parameter_type
- which get merged back in modparm::parameters
- - add more parameters to modparm::parameters for harddrake
- harddrake/ui.pm | 19 ++++++++++---------
- modparm.pm | 33 +++++++++------------------------
- 2 files changed, 19 insertions(+), 33 deletions(-)
-
- * install_steps_gtk.pm, network/network.pm, log.pm, install_steps.pm,
- interactive.pm, bootloader.pm, harddrake/data.pm, steps.pm,
- install_steps_interactive.pm, keyboard.pm, printer.pm, lang.pm,
- fsedit.pm, install2.pm, detect_devices.pm, common.pm, commands.pm:
- s/__END__/1;
- kill "wonderful perl"
-
- * harddrake/ui.pm:
- - export %modules::conf
- - kill modparm::raw_parameters and modparm::parameter_type
- which get merged back in modparm::parameters
- - add more parameters to modparm::parameters for harddrake
- harddrake/ui.pm | 19 ++++++++++---------
- modparm.pm | 33 +++++++++------------------------
- 2 files changed, 19 insertions(+), 33 deletions(-)
- no one use second paramater of raw_parameters
- factorize some code in modparm::parameter_type
- s/__END__/1;
-
- * modparm.pm:
- - export %modules::conf
- - kill modparm::raw_parameters and modparm::parameter_type
- which get merged back in modparm::parameters
- - add more parameters to modparm::parameters for harddrake
- harddrake/ui.pm | 19 ++++++++++---------
- modparm.pm | 33 +++++++++------------------------
- 2 files changed, 19 insertions(+), 33 deletions(-)
- no one use second paramater of raw_parameters
- factorize some code in modparm::parameter_type
-
- * standalone/service_harddrake.sh: english fixes
-
- * standalone/logdrake, scanner.pm, standalone/drakautoinst,
- standalone/drakgw, standalone/scannerdrake: kill $Log (487 useless lines
- supressed from drakxtools)
-
-2002/08/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm, install_steps_interactive.pm: partial rework of Windows
- PDC authentication, still need
- to run smbpasswd after network is up
-
-2002/08/04 Till Kamppeter <till@mandrakesoft.com>
-
- * detect_devices.pm, printerdrake.pm: Accelerated network scanning for
- printers by applying "nmap" only to machines which answered to a
- broadcast ping before.
- Completed network/SMB printer auto-detection for recommended mode.
- Started network/SMB printer auto-detection for expert mode.
-
-2002/08/02 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/logdrake:
- - expand $email in cron script
- - disable sms alerts (free sms site too complicated to
- handle). Postponed
- - mail service should work now
- - clean up code
- - give the correct right to cron file to work correctly
- - fix titi mess
-
- * standalone/drakbug:
- - avoiding looping indefinitalely when selecting items in combo
- - add commandline arguments: drakbug --report name_app
-
-2002/08/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive/gtk.pm, my_gtk.pm: move interactive::gtk::exit to
- my_gtk::exit so that my_gtk
- apps can call it (and fix busy mouse cursor problem that way)
-
-2002/08/02 jgotti
-
- * standalone/drakboot: minor bugfix in calling bootloader::read
-
-2002/08/02 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: keyboarddrake now handles choosing toggle key
- (XkbOptions)
-
-2002/08/02 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Corrected strings for printer queue list in main window.
-
-2002/08/02 warly
-
- * share/rpmsrate, share/compssUsers: add lsb group
-
-2002/08/01 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: drop keyboard unsafe when not unsafe
- anymore
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
- * Xconfig/various.pm: finish tvout configuration
-
- * any.pm, Xconfig/xfreeX.pm, standalone/keyboarddrake, install2.pm,
- install_steps.pm, Xconfig/parse.pm, Xconfig/default.pm, commands.pm,
- printerdrake.pm:
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
- * bootloader.pm (duplicate_kernel_entry): added
-
- * keyboard.pm: don't have "unsafe" in /etc/sysconfig/keyboard
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
-2002/08/01 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added stuff for scanning network for SMB printer
- shares.
-
- * detect_devices.pm: Added facility to scan network for SMB/Windows-hosted
- printers.
-
-2002/08/01 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Makefile.config, drakxtools.spec: drakconf is dead
-
- * harddrake/ui.pm, harddrake/TODO: update
-
-2002/08/01 warly
-
- * share/logo-mandrake.png: new logo for beta 2
-
-2002/08/01 alus
-
- * share/po/pl.po: updated translation
-
-2002/08/01 dam's <dams@idm.fr>
-
- * ugtk.pm: removed fonctions typage
-
-2002/08/01 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/netconnect.pm, network/adsl.pm:
- - First ECI adsl support step
-
-2002/08/01 gbeauchesne
-
- * rescue/make_rescue_img: While stripping libraries, note that we may need
- to have both /lib and
- /lib64 on biarch systems.
- - MDK::Common'ize for arch() support
- - Don't grab /lib/i686/ libraries
- - Update list to use LIB which expands to either lib64 or lib
-
- * rescue/list.x86_64: Add x86_64-specific filelist
-
- * docs/HACKING: Add /bin/mknod to command list of sudoers
-
- * mdk-stage1/disk.c: Add missing includes, <string.h> for bzero()
-
- * rescue/list:
- - MDK::Common'ize for arch() support
- - Don't grab /lib/i686/ libraries
- - Update list to use LIB which expands to either lib64 or lib
-
-2002/08/01 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/base.png, share/selected.png, share/rpm-semiselected.png,
- share/rpm-installed.png, share/rpm-unselected.png, share/installed.png,
- share/rpm-base.png, share/semiselected.png, share/unselected.png,
- share/rpm-selected.png: change some png files names according to
- simplification of
- gtkcreate_png call of new my_gtk.pm
-
- * drakxtools.spec, ugtk.pm, my_gtk.pm: commit according to 1.1.9-1mdk of
- drakxtools, and especially:
- - integrate patches in my_gtk and ugtk for new rpmdrake:
- - [ugtk] add "gtkentry" so that we can create an entry and set
- initial value in one call
- - [my_gtk::main] don't set the events, to fix keyboard focus
- problem in entries when embedded
- - [my_gtk::_create_window] add $::noBorder, to not have a frame
- in the main window, so that it's possible to end up with
- windows with no border
- - [my_gtk] add ask_dir which is a ask_file with only the dir list
- - [my_gtk] add ask_browse_tree_info to the export tags, and:
- - add support for parents with no leaves, so that then we can
- partially build the trees (for speedup)
- - add "delete_all" and "delete_category" callbacks
- - use Gtk::CList::clear when removing all the nodes, much
- speedup
-
-2002/08/01 jgotti
-
- * bootlook.pm:
- - add splash theme section
-
- * pixmaps/nosplash_thumb.png: add pixmap for drakboot
-
-2002/08/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
- * share/po/vi.po: updated vietnamese file
-
-2002/08/01 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: drop keyboard unsafe when not unsafe
- anymore
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
- * any.pm:
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
- get rid of some $prefix parameter passing (using $::prefix where needed
- instead)
-
- * Xconfig/various.pm: finish tvout configuration
-
- * ugtk.pm, my_gtk.pm: move back Gtk->init to "new" and "gtkroot"
- make perl_checker happy
-
- * Xconfig/parse.pm:
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
- BusID needs a string (thanks to Florent BERANGER)
-
- * standalone.pm: don't display a wait_message in newt, but do suspend
-
- * install_any.pm: get rid of some $prefix parameter passing
-
- * pkgs.pm, fsedit.pm: get rid of some $prefix parameter passing (using
- $::prefix where needed instead)
-
- * loopback.pm (prepare_boot): use $::prefix
-
- * interactive/gtk.pm: fix the many warnings when {icon} is not given
-
- * Xconfig/resolution_and_depth.pm: in newt, have the resolutions sorted by
- resolution size (wilplizgg)
-
- * install_steps.pm:
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
- get rid of some $prefix parameter passing
- get rid of some $prefix parameter passing (using $::prefix where needed
- instead)
- bootloader::suggest uses a hash for its options
-
- * .perl_checker: tune perl_checker
-
- * Xconfig/xfreeX.pm, standalone/keyboarddrake, install2.pm,
- Xconfig/default.pm, commands.pm, printerdrake.pm:
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
- * keyboard.pm: don't have "unsafe" in /etc/sysconfig/keyboard
- - the old $o->{keyboard} is now $o->{keyboard}{KEYBOARD}
- - KBCHARSET is $o->{keyboard}{KBCHARSET}
- - isNotDelete is $o->{keyboard}{BACKSPACE} (as written in
- sysconfig/keyboard)
- - add GRP_TOGGLE which gives XkbOptions "grp:GRP_TOGGLE"
- - add dialog box to choose GRP_TOGGLE
-
- * bootloader.pm (duplicate_kernel_entry): added
- get rid of some $prefix parameter passing (using $::prefix where needed
- instead)
- bootloader::suggest uses a hash for its options
-
-2002/08/01 Till Kamppeter <till@mandrakesoft.com>
-
- * share/rpmsrate: Added new packages needed by printerdrake.
-
- * printerdrake.pm: Let packages "nmap" and "scli" get installed by
- printerdrake.
- Printer model auto-detection for ethernet-connected printers when
- setting up TCP/Socket, remote LPD, IPP, or HTTP printers.
- Continued work on scanning the local network for printers.
- In "setup_local()": Renamed variable "@parport" to "@autodetected".
- Do not let list of auto-detected printers get sorted alphabetically, it
- should stay sorted by ports.
- Fixed typo in file name in "check_network()".
-
-2002/08/01 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm: perl_checker fix
-
- * drakxtools.spec: drakconf is dead
- 17mdk: stage 1
- my_gtk:
- - splitup it into my_gtk and ugtk as done by dams
- - resync with dams
- - increase the icon blinkage from 50ms to 100ms
- %postun -n harddrake: return 0 when nothing has to be done
-
- * ugtk.pm: we already require perl-GTK-GdkImLib so temporary disable
- Gtk::Gdk::Pixbuf support, thus removing all gdk/gtk warnings
- remove INFO warnings
- my_gtk:
- - splitup it into my_gtk and ugtk as done by dams
- - resync with dams
- - increase the icon blinkage from 50ms to 100ms
-
- * my_gtk.pm: my_gtk:
- - splitup it into my_gtk and ugtk as done by dams
- - resync with dams
- - increase the icon blinkage from 50ms to 100ms
-
- * tinyfirewall.pm: kill stupide style
- perl_checker fixes
-
- * standalone/harddrake2: export license
- move embedded and standalone managment from harddrake::ui to
- standalone/harddrake2
-
- * harddrake/TODO: update
- move embedded and standalone managment from harddrake::ui to
- standalone/harddrake2
-
- * harddrake/ui.pm: update
- add_icon_path is exported in :various
- perl_checker fixes
- perl_checker fixes
- - workaround for the busy mouse cursor set by
- gtkset_mousecursor_wait() in my_gtk::destroy
- - remove debugging prints
-
- - don't handle "$::isEmbedded ? kill('USR1', $::CCPID) :
- Gtk->exit(0);", it's done by interactive->exit()
- export license
- move embedded and standalone managment from harddrake::ui to
- standalone/harddrake2
-
- * standalone/logdrake, harddrake/bttv.pm, standalone/drakconnect,
- standalone/drakbug, standalone/tinyfirewall, standalone/scannerdrake,
- standalone/drakxtv: perl_checker fixes
-
- * standalone/drakxconf: remove obsolote file
-
- * Makefile.config: drakconf is dead
-
- * tools/cvslog2changelog.pl: use new dam's email
-
- * scanner.pm, harddrake/data.pm: perl_checker fixes
- perl_checker fixes
-
-2002/07/31 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/card.pm, Xconfig/main.pm:
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
-
- * bootlook.pm, network/network.pm, resize_fat/main.pm,
- network/netconnect.pm, Xconfig/xfreeX.pm, diskdrake/interactive.pm,
- network/ethernet.pm, printer.pm, detect_devices.pm,
- resize_fat/info_sector.pm, install_any.pm: make perl_checker happy again
- (replacing "{xx}->{yy}" by "{xx}{yy}")
-
- * any.pm (devfssymlinkf): when creating a symlink on the system, use devfs
- name if devfs is mounted
-
- * standalone/logdrake, standalone/draksec, standalone/drakxservices,
- standalone/drakautoinst, standalone/drakproxy, standalone/tinyfirewall,
- standalone/keyboarddrake, standalone/drakboot, standalone.pm,
- standalone/drakTermServ, standalone/net_monitor, standalone/diskdrake,
- standalone/mousedrake, standalone/drakbackup, standalone/printerdrake,
- standalone/drakfloppy, standalone/drakfont, standalone/drakconnect,
- standalone/drakgw, standalone/scannerdrake, standalone/drakxtv: Handle
- parsing --embedded command line in standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
-
- * standalone/XFdrake: Handle parsing --embedded command line in
- standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
-
- * Xconfig/various.pm: make perl_checker happy again (replacing
- "{xx}->{yy}" by "{xx}{yy}")
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
-
-2002/07/31 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * security/msec.pm:
- - Fix page change between checks -> advanced
- - Factorize options-related functions
- - s/choose_options/choose_functions
- - Added security checks page
- - put the basic button on top (in the advanced page)
- - move set_server_link in the ignore list temporary
-
- * security/main.pm:
- - Factorize options-related functions
- - s/choose_options/choose_functions
- - Added security checks page
- - factorize functions (many functions -> one function)
-
-2002/07/31 Daouda Lo <daouda@mandrakesoft.com>
-
- * share/rpmsrate:
- - s/GNOME/X/ for gnome-linuxconf
-
- * standalone/drakbug:
- - many changes
- - command line support (--report name_of_program), to be used in tools
- - ergonomy fixes (use table to align widget correctly)
-
-2002/07/31 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * run_program.pm:
- - fix $ENV{HOME} value to '/root' if usermode break it
-
-2002/07/31 gbeauchesne
-
- * c/Makefile.PL: lib64 fixes
-
-2002/07/31 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/cdrom.c: hopefully fix "device or resource busy" problem in
- cdrom
- automatic mode (I messed up between truth value and number in a
- list... the first value is numbered "0" whicih is "false"...)
-
-2002/07/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/help-it.pot, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/bs.po, share/po/ro.po,
- share/po/wa.po, share/po/is.po, share/po/af.po, share/po/az.po,
- share/po/zh_TW.po, share/po/zh_CN.po, share/po/vi.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/help-fr.pot, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/hu.po: updated pot file
-
- * share/po/pt.po, share/po/eu.po: updated Portuguese file
- updated pot file
-
-2002/07/31 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/main.pm:
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
-
- * install_steps_interactive.pm, printerdrake.pm, pkgs.pm, network/adsl.pm,
- modules.pm, commands.pm, install_interactive.pm, install_steps_gtk.pm,
- interactive/stdio.pm, services.pm, keyboard.pm: make new perl_checker
- happy
- make new perl_checker happy (and that's not easy!)
-
- * any.pm (devfssymlinkf): when creating a symlink on the system, use devfs
- name if devfs is mounted
- replace "$foo" with $foo
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * Xconfig/test.pm: change the location of X test image as told by dadou
-
- * Xconfig/resolution_and_depth.pm (choose_gtk): ensure the response is one
- of @resolutions (so that Y and maybe bios is kept)
- (to_string): created
- fix using $_ instead of $_[0] (thanks to perl_checker)
- make new perl_checker happy (and that's not easy!)
-
- * network/modem.pm: replace "$foo" with $foo
-
- * resize_fat/info_sector.pm, Xconfig/xfreeX.pm: make perl_checker happy
- again (replacing "{xx}->{yy}" by "{xx}{yy}")
-
- * printer.pm, install_any.pm, detect_devices.pm: make perl_checker happy
- again (replacing "{xx}->{yy}" by "{xx}{yy}")
- replace "$foo" with $foo
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * bootlook.pm, network/netconnect.pm, network/ethernet.pm: make
- perl_checker happy again (replacing "{xx}->{yy}" by "{xx}{yy}")
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * network/tools.pm, install_gtk.pm, network/isdn.pm: replace "$foo" with
- $foo
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * my_gtk.pm (create_box_with_title): create an empty box when there is no
- message
- (also don't set $o->{box} since unused outside of this function)
- replace "$foo" with $foo
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * Xconfig/card.pm:
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
- handle cancel in xfree_and_glx_choose
- default VideoRam choice 4096 when needVideoRam
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * network/network.pm: make perl_checker happy again (replacing
- "{xx}->{yy}" by "{xx}{yy}")
- replace "$foo" with $foo
- - have is_ip return the 4 parts of the ip address
- - cleanup
- make new perl_checker happy (and that's not easy!)
-
- * interactive/gtk.pm: allow "icon" to use the icon path
- make new perl_checker happy (and that's not easy!)
-
- * Makefile, crypto.pm: make new perl_checker happy
-
- * Xconfig/monitor.pm: fix keeping the existing name when choosing monitor
-
- * resize_fat/main.pm: make perl_checker happy again (replacing
- "{xx}->{yy}" by "{xx}{yy}")
- make new perl_checker happy
-
- * standalone/mousedrake: Handle parsing --embedded command line in
- standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
- what is needed for usbmouse is "hid mousedev usbmouse" not the weird
- "serial_usb"
- make new perl_checker happy
-
- * mouse.pm (read): don't look at /dev/mouse symlink to get {device},
- sysconfig/mouse
- gives it, so why bother (this fixes /dev//dev/misc/psaux bug)
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * standalone/logdrake, standalone/tinyfirewall, standalone/drakboot,
- standalone.pm, standalone/drakTermServ, standalone/net_monitor,
- standalone/drakbackup, standalone/printerdrake, standalone/drakconnect,
- standalone/drakxtv, standalone/draksec, standalone/drakxservices,
- standalone/drakautoinst, standalone/drakproxy, standalone/diskdrake,
- standalone/drakfloppy, standalone/drakfont, standalone/scannerdrake:
- Handle parsing --embedded command line in standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
-
- * standalone/keyboarddrake, standalone/drakgw: Handle parsing --embedded
- command line in standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
- make new perl_checker happy
-
- * install2.pm: allow acceptLicence to be automatic
- make new perl_checker happy
- make new perl_checker happy (and that's not easy!)
-
- * diskdrake/interactive.pm: make perl_checker happy again (replacing
- "{xx}->{yy}" by "{xx}{yy}")
- make new perl_checker happy (and that's not easy!)
-
- * standalone/XFdrake: Handle parsing --embedded command line in
- standalone.pm
- => allows to remove the somewhat mythical
- $::isEmbedded = ($::XID, $::CCPID) = "@ARGV" =~ /--embedded (\w+) (\w+)/
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
- use configure_chooser when there is an existing configuration
-
- * log.pm, interactive.pm, resize_fat/fat.pm, network/smb.pm, raid.pm,
- partition_table.pm, diskdrake/hd_gtk.pm, install_steps.pm, swap.pm,
- resize_fat/directory.pm, devices.pm, lang.pm, partition_table/raw.pm,
- bootloader.pm, fsedit.pm, network/isdn_consts.pm: make new perl_checker
- happy (and that's not easy!)
-
- * Xconfig/various.pm: make perl_checker happy again (replacing
- "{xx}->{yy}" by "{xx}{yy}")
- - add non-wizard ability to XFdrake
- - first part of ATI TVout support
- (still needs patching initscript, and adding an entry in bootloader)
- (and testing of course :)
- (info): fix displaying depth
-
-2002/07/31 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Started working on network printer auto-detection.
-
- * detect_devices.pm: Added subroutines for ethernet printer
- auto-detection.
-
-2002/07/31 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm:
- - bump harddrake version
- - module configuration is saved (todo: read the config)
- initial configuration window for modules. nothing is done yet.
- remove latest (?) gtk warnings
- don't display bogus fields
- in embedded mode, don't kill the main gtk app (aka drakconf) but
- only harddrake
- - add embedded mode for drakconf
- further simplification
- - the hw tree and the info text are auto-size now
- - further ui simplifications
- still more my_gtk simplifications
- ui.pm | 49 ++++++++++++++++---------------------------------
- 1 files changed, 16 insertions(+), 33 deletions(-)
- - simplify Gtk::Text filling
-
- - less gtk warnings get printed
- further my_gtk simplifications
- further my_gtk simplifications
- further use of my_gtk
- - remove useless realizations
-
- - simplify ctree and frames creation
- - make used once callbacks be anonymous functions
-
- - replace scores of useless ->show() call by one show_all() call
-
-
- ui.pm | 82
- +++++++++++++++++++++++++++---------------------------------------
- 1 files changed, 34 insertions(+), 48 deletions(-)
-
- * printer.pm: "cp -a" doesn't need "echo yes|"
-
- * modparm.pm: split parameters in raw_parameters and parameters.
- raw_parameters is
- used by harddrake to list module options in order to offer a module
- configuration window.
-
- * harddrake/TODO: update
- - bump harddrake version
- - module configuration is saved (todo: read the config)
- in embedded mode, don't kill the main gtk app (aka drakconf) but
- only harddrake
- - add embedded mode for drakconf
- - bump version number
- - fix pcmcia network card detection (no more unknown)
- - fix scsi detection :
-
- o fix SCSI controllers detection (no more unknown)
-
- o fix misdetection of scsi devices as scsi host adapter
-
- o fix double scsi devices detection (both unknown and real
- category)
-
- - update TODO list
-
- * Makefile: rename a few target:
- - srpm -> slowsrpm
- - fastsrpm -> srpm
-
- * drakxtools.spec: 15mdk (will be released tomorrow before the beta2)
- don't require detect-lst, it'll take harddrake instead :-(
- 14mdk
-
- * harddrake/data.pm:
- - bump harddrake version
- - module configuration is saved (todo: read the config)
- - bump version number
- - fix pcmcia network card detection (no more unknown)
- - fix scsi detection :
-
- o fix SCSI controllers detection (no more unknown)
-
- o fix misdetection of scsi devices as scsi host adapter
-
- o fix double scsi devices detection (both unknown and real
- category)
-
- - update TODO list
-
- * share/po/fr.po: update fr translation
-
-2002/07/30 alus
-
- * share/po/pl.po: variuos fixes and updates
- updates
-
-2002/07/30 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * security/libsafe.pm:
- - complete re-write of draksec. splitted all the libsafe related
- functions
- in this file.
-
- * security/msec.pm, standalone/draksec:
- - complete re-write
-
- * security/main.pm:
- -complete re-write of draksec. The main functions will go in this
- file.
-
-2002/07/30 Daouda Lo <daouda@mandrakesoft.com>
-
- * Makefile.drakxtools:
- - mv drakbug executable from $$SBINDEST to $$BINDEST
-
-2002/07/30 gbeauchesne
-
- * tools/Makefile, tools/aewm-drakx/Makefile: lib64 fixes
-
-2002/07/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/hr.po, share/po/tr.po,
- share/po/mt.po, share/po/ga.po, share/po/be.po, share/po/uk.po,
- share/po/sv.po, share/po/sr.po, share/po/pl.po, share/po/fi.po,
- share/po/lt.po, share/po/sp.po, share/po/cy.po, share/po/ca.po,
- share/po/da.po, share/po/ar.po, share/po/bs.po, share/po/ro.po,
- share/po/wa.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: reflect errata changes
-
- * install_steps_interactive.pm: have errata in parameter to not break too
- much updates
- 8.2->9.0
- s/82errata.php3/90errata.php3/
-
-2002/07/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: updated po file
-
-2002/07/30 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm:
- - call fsck.jfs before mounting read-write (otherwise mount simply
- fails)
- - propose fsck -y for ext2 when fsck -a fails
-
- * standalone/drakbackup: never EVER put $xxxx in to-be-translated
- strings!!
-
- * diskdrake/interactive.pm (Add2LVM): for LVM on RAID, ensure the RAID is
- created & enabled
-
- * Xconfig/parse.pm: fix handling of commented empty line
-
- * standalone/drakautoinst: use $o->{interactiveSteps} instead of
- @install_steps_auto_install::graphical_steps
-
- * keyboard.pm, c/stuff.xs.pl, detect_devices.pm, install_steps.pm: use usb
- keyboard bCountryCode to choose the right keyboard
-
- * install_steps_interactive.pm: use usb keyboard bCountryCode to choose
- the right keyboard
- - call fsck.jfs before mounting read-write (otherwise mount simply
- fails)
- - propose fsck -y for ext2 when fsck -a fails
-
-2002/07/30 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Better placement for waiting message.
-
- * printer.pm: Fixed a typo and a comment in the "SIGHUP_daemon()"
- function.
-
-2002/07/30 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: further translations
- update fr translation
-
- * standalone/drakbackup: don't translate useless strings (here: "\n")
-
- * standalone/drakbug: deush need to learn english
-
-2002/07/29 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (g_auto_install): also save chosen on_services (this is
- the only thing left to do to make it work :)
-
- * mouse.pm:
- - don't display "To activate the mouse, MOVE YOUR WHEEL!" when not
- install
- - don't display "Please test the mouse" either
- allow to not mess with X config auxmouse
- (that way mousedrake doesn't need to care about it)
-
- * run_program.pm: fix rooted() when chrooted and saving the result in a
- perl variable
-
- * Xconfig/resolution_and_depth.pm (configure_auto_install): really use
- resolution_wanted given in $o
-
- * partition_table.pm: cleanup
-
- * services.pm (ask_standalone_gtk, ask_install): only return the
- on_services (those
- functions used to return ($l, $on_services) which used in a scalar
- context
- returned $on_services)
-
- * standalone/mousedrake:
- - fix using deprecated Xconfig.pm
- - document dam's hack for test mouse
- - cleanup
- - don't bother reading XFree mouse config
- (using keep_auxmouse_unchanged of mouse::write_conf)
-
- * diskdrake/interactive.pm: nicer error message when "You can't create a
- new partition
- (since you reached the maximal number of primary partitions).
- First remove a primary partition and create an extended partition."
-
- * printer.pm: make perl_checker happy
-
- * standalone/XFdrake: make perl_checker happy
- (ask_for_X_restart): make it work
-
-2002/07/29 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed some "$prefix" issues in the HPOJ auto-configuration
- and in the Star Office/OpenOffice.org auto-configuration.
-
-2002/07/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: use aliases for stage1 params to reduce kernel msg
-
-2002/07/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated pot file
-
-2002/07/29 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm:
- - don't display "To activate the mouse, MOVE YOUR WHEEL!" when not
- install
- - don't display "Please test the mouse" either
- allow to not mess with X config auxmouse
- (that way mousedrake doesn't need to care about it)
- disallow big_help (when pressing F1) when testing mouse
-
- * install_any.pm (g_auto_install): also save chosen on_services (this is
- the only thing left to do to make it work :)
-
- * drakxtools.spec: remove "Requires: groff" (nobody know why it's there)
- (Pixel)
-
- * run_program.pm: fix rooted() when chrooted and saving the result in a
- perl variable
-
- * share/rpmsrate: xpcd is still there (deush)
- - remove deprecated packages
- - adapt some to their names
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: fix typo
-
- * Xconfig/main.pm: restore xdm choice previous behaviour (auto_install)
-
- * Xconfig/resolution_and_depth.pm (configure_auto_install): really use
- resolution_wanted given in $o
-
- * fs.pm: fix mke2fs on loopback
- - use $::prefix for reading/writing (it was missing for writing)
- - use output_p so that /etc/samba directory is created if needed
- (fix bug reported by David Eastcott)
-
- * Xconfig/test.pm: try harder to have "xfs" running
-
- * partition_table.pm: cleanup
-
- * services.pm (ask_standalone_gtk, ask_install): only return the
- on_services (those
- functions used to return ($l, $on_services) which used in a scalar
- context
- returned $on_services)
-
- * standalone/mousedrake:
- - fix using deprecated Xconfig.pm
- - document dam's hack for test mouse
- - cleanup
- - don't bother reading XFree mouse config
- (using keep_auxmouse_unchanged of mouse::write_conf)
-
- * Xconfig/default.pm: fix default config for mouse
-
- * my_gtk.pm: disallow big_help (when pressing F1) when testing mouse
-
- * printer.pm: make perl_checker happy
-
- * diskdrake/interactive.pm: nicer error message when "You can't create a
- new partition
- (since you reached the maximal number of primary partitions).
- First remove a primary partition and create an extended partition."
- fix diskdrake::interactive::Options() excepts a value from
- fs::mount_options_pack(), but fs::mount_options_pack() doesn't return
- any
- value (reported by Olivier Thauvin)
-
- * standalone/XFdrake: make perl_checker happy
- (ask_for_X_restart): make it work
-
- * bootloader.pm: try to allow /boot on vfat (it used to work)
-
- * network/smb.pm:
- - use $::prefix for reading/writing (it was missing for writing)
- - use output_p so that /etc/samba directory is created if needed
- (fix bug reported by David Eastcott)
-
- * install_interactive.pm: fix partition wizard choice updating after
- calling diskdrake
-
- * install_steps_gtk.pm, install_steps_interactive.pm, install2.pm: ensure
- choosing install-or-upgrade can't be done twice
- (since it's badly handled and hard to handle nicely)
-
-2002/07/29 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv: read and wrote /etc/modules.conf
-
- * Makefile:
- - consolidate duplicated 'use (warn|strict...' into nuke_perl target
- - thus enable to fix bug reported by gc (aka i only fixed localsrpm
- nuke, not srpm: one)
-
- * drakxtools.spec: final changes batch
- - pixel: don't set release to 14mdk when 13mdk hadn't be released ...
- - list 13mdk changes
- replace trigger by format test for hw config file conversion
-
-2002/07/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (configureX, configureXBefore, configureXAfter):
- greatly simplified using new Xconfig stuff
-
- * standalone/XFdrake:
- - adapt to new Xconfig modules
- - try out the new "XFdrake resolution" and "XFdrake monitor" that'll
- get into DrakConf soon
-
- * Xconfig/xfree3.pm, Xconfig/various.pm, Xconfig/parse.pm,
- Xconfig/xfree.pm, Xconfig/test.pm, Xconfig/xfreeX.pm,
- Xconfig/proprietary.pm, Xconfig/xfree4.pm, Xconfig/monitor.pm,
- Xconfig/default.pm, Xconfig/screen.pm, Xconfig/FILES: 14 new modules,
- will it be enough?? :)
-
- * any.pm (running_window_manager): return the pids found if wanted
- (ddcxinfos): ensure no probe is done when $::noauto
-
- * install_steps_gtk.pm, install_gtk.pm, standalone.pm: adapt to new
- Xconfig modules
-
- * install_any.pm (g_auto_install): no need to handle $o->{X} as a special
- case, it's already done by Xconfig::main::export_to_install_X
-
- * Xconfig.pm, Xconfigurator.pm, Xconfigurator_consts.pm: thou hast served
- well, you may now lie in peace
-
- * common.pm (availableRamMB): use a precise constraint on 'Card:Intel 810'
- instead of a regexp
-
- * Xconfig/card.pm: make perl_checker happy
- rahh, don't commit my test code!
- 14 new modules, will it be enough?? :)
-
- * share/list: CardsNames is not needed anymore
-
- * interactive.pm: fix "nicer error message when {val} is not set for
- ask_from & list" in case of a reference to a reference (ref is REF
- instead of SCALAR)
-
- * Xconfig/main.pm: fix displaying info about current configuration
- 14 new modules, will it be enough?? :)
-
- * Xconfig/resolution_and_depth.pm:
- - make the gtk resolution chooser work
- - dropped the differenciation between embedded or not
- 14 new modules, will it be enough?? :)
-
- * mouse.pm (detect): return wacom inside $mouse
- (mouseconfig): reduce the number of "Use of undefined value"
- (set_xfree_conf): created
-
- * install2.pm: wacom is now inside $mouse
-
- * install_steps_interactive.pm (configureX): adapt to new Xconfig
-
-2002/07/28 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig/main.pm: fix displaying info about current configuration
- 14 new modules, will it be enough?? :)
-
- * Xconfig/resolution_and_depth.pm:
- - make the gtk resolution chooser work
- - dropped the differenciation between embedded or not
- 14 new modules, will it be enough?? :)
-
- * install_steps_gtk.pm, install_gtk.pm, standalone.pm: adapt to new
- Xconfig modules
-
- * install_any.pm (g_auto_install): no need to handle $o->{X} as a special
- case, it's already done by Xconfig::main::export_to_install_X
-
- * mouse.pm (detect): return wacom inside $mouse
- (mouseconfig): reduce the number of "Use of undefined value"
- (set_xfree_conf): created
-
- * install_steps.pm (configureX, configureXBefore, configureXAfter):
- greatly simplified using new Xconfig stuff
-
- * install2.pm: wacom is now inside $mouse
-
- * standalone/XFdrake:
- - adapt to new Xconfig modules
- - try out the new "XFdrake resolution" and "XFdrake monitor" that'll
- get into DrakConf soon
-
- * Xconfig/xfree3.pm, Xconfig/various.pm, Xconfig/parse.pm,
- Xconfig/xfree.pm, Xconfig/test.pm, Xconfig/xfreeX.pm,
- Xconfig/proprietary.pm, Xconfig/xfree4.pm, Xconfig/monitor.pm,
- Xconfig/default.pm, Xconfig/screen.pm, Xconfig/FILES: 14 new modules,
- will it be enough?? :)
-
- * Xconfig.pm, Xconfigurator.pm, Xconfigurator_consts.pm: thou hast served
- well, you may now lie in peace
-
- * install_steps_interactive.pm (configureX): adapt to new Xconfig
-
- * any.pm (running_window_manager): return the pids found if wanted
- (ddcxinfos): ensure no probe is done when $::noauto
-
- * Xconfig/card.pm: make perl_checker happy
- rahh, don't commit my test code!
- 14 new modules, will it be enough?? :)
-
- * common.pm (availableRamMB): use a precise constraint on 'Card:Intel 810'
- instead of a regexp
-
- * interactive.pm: fix "nicer error message when {val} is not set for
- ask_from & list" in case of a reference to a reference (ref is REF
- instead of SCALAR)
-
-2002/07/28 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ: Check for/install terminal-server and friends.
- More intelligent error message when
- mkisofs fails. Cleanup code for use strict. Fix crash when no backup
- dhcpd.conf.
-
- * standalone/drakbackup: Numerous GUI crash fixes, oddities. Install
- needed packages. Fix email, daemon modes.
- Add rsync, webdav, cd, tape capabilities. Consolidate net method setup
- screens.
- Add CD device capability query.
-
-2002/07/27 alus
-
- * share/po/pl.po: Fixes. There're some entries concerning mdk 8.2 - they
- should be changed
- globally
-
-2002/07/27 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (add_probeall): use "uniq" to have modules only once in
- ddebug.log (a "uniq"
- was already in modules.conf so it doesn't change the result)
-
- * detect_devices.pm: use add_probeall for scsi_hostadapter, not add_alias
- (may fix a bug reported by Jure Repinc)
-
-2002/07/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Completed implementation of the support for
- HPOJ 0.9: Automatic photo card reader configuration, bugfixes.
-
-2002/07/26 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/logdrake:
- - more consistency when back button hit in wizard mode
- - back button at last stage.
-
- * standalone/drakbug:
- - add browser list in case BROWSER env var isn't set
-
-2002/07/26 François Pons <fpons@mandrakesoft.com>
-
- * tools/Makefile: fixed reference to rpmtools perl module.
-
-2002/07/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/rescue-gui.c:
- - usage of attribute unused (has not been rebuilt since -W? ;p)
- - since i polluted the newt-frontend with probing functions, i
- need to have probing functions (doing nothing) here :-((
-
-2002/07/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * harddrake/ui.pm: changed _("") -> "" empty strings must not be
- translated
-
-2002/07/26 Pixel <pixel@mandrakesoft.com>
-
- * rescue/list: remove traceroute (c naze dixit gc)
-
- * share/gen_locales.sh, lang.pm: hy is now using UTF8 locales
-
- * any.pm, services.pm, install_steps.pm: use
- run_program::rooted_get_stdout instead of `chroot $prefix ...`
-
- * install_any.pm: use run_program::rooted_get_stdout
-
- * Xconfigurator.pm: cleanup launching qiv (using run_program)
-
- * bootloader.pm:
- - fix dying when mkinitrd doesn't create an initrd
- - cleanup
-
- * run_program.pm (rooted_get_stdout): handle one line return using
- wantarray
- - also give the ability to redirect to an array ref
- - add rooted_get_stdout which is alike ``
- add 2 functionalities to run_program:
- - run_program::run(prog, '>', 'STDOUT', ...)
- run_program::run(prog, '2>', 'STDERR, ...)
- which will run with verbatim stdout or stderr
- - run_program::run(prog, '>', \$s, ...)
- run_program::run(prog, '2>', \$s, ...)
- which will return the stdout (resp. stderr) of the program in $s
-
- * rescue/Makefile: ensure rescue is built and uploaded
-
-2002/07/26 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/TODO: dadou said "no expert mode"
-
- * harddrake/ui.pm:
- - s/channel/Channel/
- - bus_id is for usb devices too
- - remove obsolete fields info and name
- - add nbuttons, device, old_device descriptions
-
- * drakxtools.spec: 13mdk
-
-2002/07/26 François Pons <fpons@mandrakesoft.com>
-
- * tools/Makefile: fixed reference to rpmtools perl module.
-
-2002/07/26 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: First step of automatic HP multi-function device
- configuration with HPOJ 0.9.
-
- * detect_devices.pm: Added detection of trhe serial number of a USB
- printer (in preparation for HPOJ 0.9 support in printerdrake).
-
-2002/07/25 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix loading ide-cd (big thanks to rcc
- <rickscafe.casablanca@gmx.net> you did
- all the work to resolve the pb)
- => this fixes ide burner detection
-
-2002/07/25 alus
-
- * share/po/pl.po: fix
- fix
- one entry more clearly :)
-
-2002/07/25 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/logdrake:
- - don't display services that are not installed
- - word wrap string correctly
- - cleanup
-
-2002/07/25 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added log.
- small code changes for upgrade.
-
- * tools/syncrpms: no more use rpmtools.pm.
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: new logo (simplified
- for 9.0).
-
-2002/07/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/id.po, share/po/vi.po: updated po files
-
-2002/07/25 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm: use a function icon_paths instead of @icon_paths
- => this ensure that $ENV{SHARE_PATH} value (used in @icon_paths) is set
- independently of the loading order of the modules
-
- * install_steps_interactive.pm: fix loading ide-cd (big thanks to rcc
- <rickscafe.casablanca@gmx.net> you did
- all the work to resolve the pb)
- => this fixes ide burner detection
- Help "perl -cw" not reporting any warning
- - for mac free partition, use $freepart instead of $freepart_device,
- $freepart_size ...
- - replace $timezone::ntp_servers by a function
-
- * bootloader.pm: let the bootloader::mkinitrd error be seen by the GUI
-
- * install_steps_newt.pm: please "perl -cw"
-
- * verify_c: adapt to stuff.xs.pl instead of stuff.xs.pm
-
- * partition_table.pm: add 0x35 partition table id meaning JFS (under OS/2)
- (thank to Mika Laitio)
-
- * fs.pm: noreturn is now exported, no need to
- MDK::Common::Various::noreturn()
-
- * common.pm: remove internal_error (which is now in MDK::Common)
-
- * partition_table/mac.pm, timezone.pm: Help "perl -cw" not reporting any
- warning
- - for mac free partition, use $freepart instead of $freepart_device,
- $freepart_size ...
- - replace $timezone::ntp_servers by a function
-
-2002/07/25 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 12mdk
- final batch of changes
- 11mdk
-
- * harddrake/TODO: still less things to do
- update
-
- * c/stuff.xs.pl: don't copy struct pciusb_entries on the stack
-
- * standalone/service_harddrake: merge timeout and cancel cases
- simplify:
- - we don't need to set media_type, we don't use it
- - mouse and mass storage media use the same key, let merge their code
- path
-
- * interactive/newt.pm: typo fix
-
- * Makefile.drakxtools: fix pixel "i do not need to test" fscking bug that
- broke drakxtools
- build :-)
-
- * harddrake/ui.pm: remove all gtk's "no callback/signal to disconnect"
- warnings
- add a fields data structure:
- - put together field translation and field description
- - this enable to get rid of %reverse_fields usage & creation
- - this ensure all field names & translations are marked translatables
- for gettext
- - move $wait declaration around its usage and explicit its destruction
- - remove usb debugging message needed to trace the null description
- bug i fixed in ldetect
- - simplify the device fields rendering "because of" the above
- - simplify the help window creation/display/destruction (only one
- statement left)
- - explicitely call interactive->exit
- handle both old device name and new devfs name
-
- * share/po/fr.po: update french translation
-
- * harddrake/data.pm: only do one probeall here (there's still many in
- detect_devices,
- probing caching should go there)
-
- * Makefile: use spec_test rather than test
-
-2002/07/24 alus
-
- * share/po/pl.po: fixes
- the last untranslated entry
-
-2002/07/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/cdrom.c, mdk-stage1/disk.c, mdk-stage1/tools.c,
- mdk-stage1/stage1.h, mdk-stage1/tools.h, mdk-stage1/frontend.h,
- mdk-stage1/probing.h, mdk-stage1/stdio-frontend.c,
- mdk-stage1/newt-frontend.c, mdk-stage1/probing.c: enhance (complicate?
- ;p) device detection so that scsi and usb
- detection are done only when no ide cdrom with mandrake install
- is detected (speed up), have usb keyboard modules installed
- before any interactive question, honour "noauto" (skip usb
- detection and insmod'ing)
-
-2002/07/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/cs.po,
- share/po/bg.po, share/po/lv.po, share/po/hu.po: updated po files
-
-2002/07/24 Pixel <pixel@mandrakesoft.com>
-
- * Makefile, Makefile.drakxtools: add PMS_DIRS in Makefile.config and use
- it everywhere
- (cleaning some ugly stuff in Makefile.drakxtools while doing so)
- => now adding a new directory only need to be done at one place
-
- * Xconfig/xfree3.pm, Xconfig/xfreeX.pm, mouse.pm, Xconfig/xfree4.pm,
- Xconfig/parse.pm: new XFree handling library
- - only keyboard and mice functions are done, but adding the others is
- quite easy
- - so for now only used in mousedrake
- - but keyboarddrake and (of course) XFdrake will come
-
- * Makefile.config: add Xconfig
- add PMS_DIRS in Makefile.config and use it everywhere
- (cleaning some ugly stuff in Makefile.drakxtools while doing so)
- => now adding a new directory only need to be done at one place
-
- * standalone/keyboarddrake: use Xconfig::xfree to set the XkbLayout
- (better should&will come)
-
- * c/stuff.xs.pl, c/Makefile, c/stuff.xs.pm: rename stuff.xs.pm to
- stuff.xs.pl (since it's a prog, not a module)
- (it helps for not having stuff.xs.pm in PMS)
-
- * Xconfig/xfree.pm (get_both): fix returning one element (eg:
- get_keyboard)
- new XFree handling library
- - only keyboard and mice functions are done, but adding the others is
- quite easy
- - so for now only used in mousedrake
- - but keyboarddrake and (of course) XFdrake will come
-
- * log.pm: when testing, log on STDERR
-
-2002/07/24 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/data.pm: don't account scanners as unknown devices
-
- * harddrake/ui.pm: scanners support:
- - split scannerdrake:val into vendor and description
- - don't display bogus "val:%HASH"
-
-2002/07/23 alus
-
- * share/po/pl.po: fuzzy cheched
-
-2002/07/23 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * security.pm: removal
-
-2002/07/23 Daouda Lo <daouda@mandrakesoft.com>
-
- * security/msec.pm:
- - fix typo: s/%%options;/%%options/
-
-2002/07/23 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: manage correctly unselectPackage and use perl-URPM >= 0.50.
-
-2002/07/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/probing.c: s/usb/moreprofessional/ thanks to vdanen
-
-2002/07/23 Pixel <pixel@mandrakesoft.com>
-
- * share/po/help-eu.pot: rebuild after replacing \" by "
-
- * any.pm, interactive.pm: use fuzzy_pidofs (to detect if kwin is running)
-
- * detect_devices.pm: handle computers with no /proc/scsi/scsi
-
- * .cvsignore, share/modparm.lst, Makefile: modparm.lst is not used anymore
- (modinfo -p)
-
-2002/07/23 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: further translations update
- update french translation
-
- * drakxtools.spec: 10mdk changes
- final changes batch
- 9mdk
- g Move 2: partition table: hierarchy
- - Big Move 1: interactive::* hierarchy
-
- * partition_table_dos.pm, partition_table/dos.pm, partition_table_mac.pm,
- partition_table/sun.pm, partition_table/gpt.pm, partition_table_raw.pm,
- partition_table_lvm_PV.pm, partition_table_empty.pm, standalone.pm,
- partition_table_sun.pm, partition_table_bsd.pm, install_interactive.pm,
- partition_table/raw.pm, partition_table.pm, any.pm,
- partition_table/mac.pm, partition_table/bsd.pm, bootloader.pm,
- diskdrake/hd_gtk.pm, partition_table/empty.pm, fsedit.pm,
- partition_table/lvm_PV.pm, partition_table_gpt.pm: g Move 2: partition
- table: hierarchy
-
- * Makefile.config, install_steps.pm, install_steps_interactive.pm,
- diskdrake/interactive.pm, Makefile.drakxtools, install_any.pm: g Move 2:
- partition table: hierarchy
- - Big Move 1: interactive::* hierarchy
-
- * harddrake/ui.pm: remove dead code
- remove dead args
- about and help windows: only show "OK" button, cancel one has no
- purpose here
-
- * detect_devices.pm: remove '-' before description for IBM eide hard disks
- g Move 2: partition table: hierarchy
-
- * standalone/service_harddrake: faster service startup
-
- * interactive_newt.pm, interactive.pm, standalone/drakautoinst,
- install_steps_stdio.pm, standalone/tinyfirewall, Xconfigurator.pm,
- standalone/drakboot, standalone/diskdrake, standalone/mousedrake,
- install_steps_newt.pm, printerdrake.pm, interactive_gtk.pm,
- install_steps_gtk.pm, interactive/http.pm, interactive/stdio.pm,
- interactive/newt.pm, services.pm, standalone/drakconnect,
- standalone/drakgw, interactive/gtk.pm, interactive_http.pm,
- interactive_stdio.pm, standalone/drakxtv:
- - Big Move 1: interactive::* hierarchy
-
- * Makefile: check make got correct tag from spec file
- fast build: new target (fastsrpm = cvstag localsrpm)
- g Move 2: partition table: hierarchy
- - Big Move 1: interactive::* hierarchy
-
- * harddrake/data.pm: s/drakconnet/drakconnect
-
- * harddrake/TODO: update
-
-2002/07/22 Pixel <pixel@mandrakesoft.com>
-
- * any.pm, mouse.pm, install2.pm, detect_devices.pm: when $::noauto,
- hardwire no probing in detect_devices::probeall to ensure no probing is
- never done
-
- * share/po/help-fr.pot, share/po/help-de.pot, share/po/help-eu.pot,
- help.pm, share/po/.cvsignore, share/po/Makefile, share/po/help-es.pot,
- share/po/help-it.pot:
- - update help.pm based on the xml manual
- - this fixes entities sticked together with no space in between
- - this also implies a few bad line-wrapping changes,
- but it needs to be done to have a clean state
- (we don't have one since 8.2beta where i updated things by hand)
- - put help-*.pot in CVS so that the files based on the xml manual can
- be updated
- independently from DrakX.pot & .po's
-
- * Newt/Makefile, resize_fat/Makefile, c/Makefile: ensure things build as
- they should when perl is upgraded on compilation box
- (using a nice scheme: make || make)
-
-2002/07/22 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Adapted printerdrake to CUPS 1.1.15 and
- Perl 5.8.0 (for Foomatic).
- Let network also be started during installation when LPRng or PDQ is the
- spooler, so that the user can install queues to remote printers.
-
-2002/07/22 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/tools.pm: hide password in adsl configuration
-
-2002/07/22 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: try avoiding infinite loop.
-
-2002/07/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/it.po, share/po/nl.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/el.po, share/po/bg.po,
- share/po/lv.po, share/po/hu.po: updated pot file
-
- * share/po/cs.po: updated Czech file
- updated pot file
-
-2002/07/22 Pixel <pixel@mandrakesoft.com>
-
- * c/Makefile, Newt/Makefile, resize_fat/Makefile: ensure things build as
- they should when perl is upgraded on compilation box
- (using a nice scheme: make || make)
-
- * any.pm, mouse.pm, install2.pm, detect_devices.pm: when $::noauto,
- hardwire no probing in detect_devices::probeall to ensure no probing is
- never done
-
- * help.pm, share/po/.cvsignore, share/po/Makefile, share/po/help-de.pot,
- share/po/help-fr.pot, share/po/help-eu.pot, share/po/help-es.pot,
- share/po/help-it.pot:
- - update help.pm based on the xml manual
- - this fixes entities sticked together with no space in between
- - this also implies a few bad line-wrapping changes,
- but it needs to be done to have a clean state
- (we don't have one since 8.2beta where i updated things by hand)
- - put help-*.pot in CVS so that the files based on the xml manual can
- be updated
- independently from DrakX.pot & .po's
-
- * share/po/help_xml2pm.pl:
- - use new PerlIO instead of iconv
- - transliterate by hand &ndash and &eacute
- - move "use utf8" at top
- - fix the spaces between entities
- (eg: &company-microsoft; &os-windows; must not be MicrosoftWindows)
-
-2002/07/21 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: new snapshot
-
- * Xconfigurator.pm: fix multi-head auto-choosing in auto install
-
- * install_any.pm: workaround "traverse_tag" pb in Resolve.pm
- resolve_requested (is it ok??)
-
-2002/07/21 Pixel <pixel@mandrakesoft.com>
-
- * drakxtools.spec: new snapshot
-
- * install_any.pm: workaround "traverse_tag" pb in Resolve.pm
- resolve_requested (is it ok??)
-
-2002/07/21 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: Load "extmod" is a must! (for things like shape and
- dga)
-
- * Xconfig.pm: fix typo
-
-2002/07/21 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: Load "extmod" is a must! (for things like shape and
- dga)
-
- * Xconfig.pm: fix typo
-
- * share/locales-skeleton.tar.bz2: usr/share/locale skeleton is now build
- in gen_locales.pl
-
- * share/gen_locales.pl, share/gen_locales.sh: build per languages symlinks
- using the new::during_install__lang2charset
- -> this enables doing the same during install when using ramdisk
- => no need to have a locale.cz2 anymore
- (this is now possible since the number of special cases is lower than
- before)
-
- * lang.pm:
- - remove utf_xxx charsets, adding a flag UTF-8 instead
- - add during_install__lang2charset
- - when using ramdisk, no locale.cz2 anymore:
- there are 3 main charsets containing everything for all locales, except
- LC_CTYPE
- by default, there is UTF-8.
- when asked for GB2312 or BIG5, removing the other main charsets
- - cleanup comments (use #- instead of #)
- - various cleanup
-
- * tools/make_mdkinst_stage2: no more locale.cz2, just keeping the main
- charset /usr/share/locale/UTF-8
-
-2002/07/21 Pixel <pixel@mandrakesoft.com>
-
- * share/locales-skeleton.tar.bz2: usr/share/locale skeleton is now build
- in gen_locales.pl
-
- * share/gen_locales.pl, share/gen_locales.sh: build per languages symlinks
- using the new::during_install__lang2charset
- -> this enables doing the same during install when using ramdisk
- => no need to have a locale.cz2 anymore
- (this is now possible since the number of special cases is lower than
- before)
-
- * lang.pm:
- - remove utf_xxx charsets, adding a flag UTF-8 instead
- - add during_install__lang2charset
- - when using ramdisk, no locale.cz2 anymore:
- there are 3 main charsets containing everything for all locales, except
- LC_CTYPE
- by default, there is UTF-8.
- when asked for GB2312 or BIG5, removing the other main charsets
- - cleanup comments (use #- instead of #)
- - various cleanup
-
- * tools/make_mdkinst_stage2: no more locale.cz2, just keeping the main
- charset /usr/share/locale/UTF-8
-
-2002/07/20 Daouda Lo <daouda@mandrakesoft.com>
-
- * standalone/drakbug:
- - complete app list
-
-2002/07/20 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: shorter and nicer XF86Config's
-
- * mouse.pm: devfssymlinkf doesn't have any return value, so don't check it
-
- * Xconfig.pm (getinfoFromXF86Config): move here setting prefer_xf3 based
- on current choice on system
- shorter and nicer XF86Config's
-
- * install_gtk.pm:
- - rename updateCardAccordingName into add_to_card__using_Cards
- - rename cardConfigurationAuto into probe_cards
- - cleanup the simple XF86Config used during install
-
- * install_steps.pm: call config_dvd with $have_devfsd
-
- * install_steps_gtk.pm:
- - rename updateCardAccordingName into add_to_card__using_Cards
- - rename cardConfigurationAuto into probe_cards
-
- * any.pm: try very hard to make rdvd work:
- - if not using devfs, it worked so keeping things unchanged
- - if using devfs, using the new dynamic rawdevice.script script to
- bind a
- rawdevice on demand
- pb: can't have both a devfs and a non-devfs config,
- the /etc/sysconfig/rawdevices solution gives errors with devfs
- (since the dvd is not REGISTERed yet)
- please perl_checker
- fix typo
- (devfssymlinkf): use devfs names for devfs/conf.d/xxx.conf, but not for
- the
- symlink in /dev (which is used when devfs is not)
- devfssymlinkf doesn't have any return value, so don't check it
-
- * Xconfigurator.pm:
- - $in and $do_pkgs are no more global
- => it's now easier to keep track of interactive vs non-interactive
- functions
- - rename updateCardAccordingName into add_to_card__using_Cards
- - rename cardConfigurationAuto into probe_cards
- - and a few other function renamings
- shorter and nicer XF86Config's
-
-2002/07/19 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm:
- - reorganize monitor tree
- - merge XF3 & XF4 server/module choosing
- - replace {eide} by {EISA_ID} (=> {monitor} cleanup)
- - ensure a few "Cancel" are more better handled
- - ensure the default monitor in the monitor tree is the last chosen
- one
-
- * Xconfigurator_consts.pm:
- - fix good_default_monitor (must not be 1600x1200!)
- - add r128 & radeon in XF4 drivers list
-
- * interactive_gtk.pm: reduce "Use of uninitialized value" in a heavy used
- place
- (useful when debugging)
-
- * Xconfig.pm: read monitor's VendorName & ModelName
-
-2002/07/19 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm:
- - check if speedtouch_mgmt exist before installing it
-
-2002/07/19 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: revert changes so that DrakX work again.
-
- * install_any.pm: select default_packages directly during setPackages.
-
- * install_steps_interactive.pm: make sure unselectMostPackages is called
- (so that changes in default_packages
- are taken into account... but is may be any changes here ?).
-
-2002/07/19 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator_consts.pm:
- - fix good_default_monitor (must not be 1600x1200!)
- - add r128 & radeon in XF4 drivers list
- fix default_monitors to adapt new MonitorsDB
-
- * mouse.pm (devfssymlinkf): use devfs_device instead of device when
- available
-
- * partition_table.pm: handling devfs names for cdrom/hds on ide/scsi
- (needs testing)
-
- * any.pm (devfssymlinkf): try devices::to_devfs when devfs_device is not
- provided
- (devfssymlinkf): use devfs_device instead of device when available
-
- * detect_devices.pm: help perl_checker
- handling devfs names for cdrom/hds on ide/scsi (needs testing)
-
- * devices.pm: add functions to_devfs and from_devfs. These only work for
- devices entries
- which can go devfs -> normal and normal -> devfs
-
- * interactive_gtk.pm: reduce "Use of uninitialized value" in a heavy used
- place
- (useful when debugging)
-
- * Xconfig.pm: read monitor's VendorName & ModelName
- (readCardsDB): add handling BAD_FB_RESTORE & BAD_FB_RESTORE_XF3
-
- * Xconfigurator.pm:
- - reorganize monitor tree
- - merge XF3 & XF4 server/module choosing
- - replace {eide} by {EISA_ID} (=> {monitor} cleanup)
- - ensure a few "Cancel" are more better handled
- - ensure the default monitor in the monitor tree is the last chosen
- one
- partly cleanup monitor re-configuration (work in progress)
-
-2002/07/19 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * any.pm:
- - remove any msec related functions
- - remove 'use security::msec'
-
-2002/07/19 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/adsl.pm:
- - check if speedtouch_mgmt exist before installing it
-
-2002/07/19 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: revert changes so that DrakX work again.
-
- * install_any.pm: select default_packages directly during setPackages.
- fix typo on what_provides (for pitchounette :-)).
- added what_provides.
-
- * standalone.pm: fix typo on last commit.
- added what_provides.
-
- * install_steps_interactive.pm: make sure unselectMostPackages is called
- (so that changes in default_packages
- are taken into account... but is may be any changes here ?).
-
-2002/07/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
-2002/07/19 Pixel <pixel@mandrakesoft.com>
-
- * standalone/XFdrake: rename $i in $X (to have the same as
- Xconfigurator.pm)
-
- * interactive.pm: nicer error message when {val} is not set for ask_from &
- list
-
- * Xconfigurator.pm: partly cleanup monitor re-configuration (work in
- progress)
- - don't write XF86Config when no {card}{server}
- - don't write XF86Config-4 when no {card}{driver}
- - workaround mixing values from existing config and
- cardConfigurationAuto()
- - fix asking VideoRam
- - fix device0 in XF86Config
- - use "device1", "device2"... for "Device" Identifier
- - restore having a nice VendorName + BoardName
- (since Identifier is not very useful)
- - get {card}{Chipset} from existing XF86Config
- - use $::prefix
- - drop obsolete stuff: Ramdac, Dacspeed, Clockchip
- - drop {card}{flags}, the few flags are moved directly to {card}
- - force_xf4 is now a global in Xconfigurator
- - create new functions for better modularity: multi_head_config,
- xfree_and_glx_choices, xfree_and_glx_choose
- - for ppc, allow choosing DRI or not
- - need flag {card}{use_DRI_GLX} and {card}{use_UTAH_GLX} deciding
- wether
- to use DRI_GLX or UTAH_GLX. That way, {card}{DRI_GLX}, {card}{UTAH_GLX}
- are only flags allowing or not DRI/UTAH.
- - {card}{use_xf4} is dropped. New function using_xf4 has this
- functionality. The flags are now:
- - using XF4 if {driver} && !{prefer_xf3} otherwise using XF3
- - error if $force_xf4 && !{driver} || !{driver} && !{server}
- - internal error if $force_xf4 && {prefer_xf3} || {prefer_xf3} &&
- !{server}
- - {card}{description} contains what used to be {card}{identifier}
- - rename {card}{type} to {card}{card_name}
- - drop {monitor}{type}
-
- * install_steps.pm: don't pass the prefix parameter, not needed/wanted
- anymore
-
- * Xconfigurator_consts.pm: fix default_monitors to adapt new MonitorsDB
-
- * Xconfig.pm (readCardsDB): add handling BAD_FB_RESTORE &
- BAD_FB_RESTORE_XF3
- - use "device1", "device2"... for "Device" Identifier
- - restore having a nice VendorName + BoardName
- (since Identifier is not very useful)
- - get {card}{Chipset} from existing XF86Config
- - use $::prefix
- - drop obsolete stuff: Ramdac, Dacspeed, Clockchip
- - drop {card}{flags}, the few flags are moved directly to {card}
- - force_xf4 is now a global in Xconfigurator
- - create new functions for better modularity: multi_head_config,
- xfree_and_glx_choices, xfree_and_glx_choose
- - for ppc, allow choosing DRI or not
- - need flag {card}{use_DRI_GLX} and {card}{use_UTAH_GLX} deciding
- wether
- to use DRI_GLX or UTAH_GLX. That way, {card}{DRI_GLX}, {card}{UTAH_GLX}
- are only flags allowing or not DRI/UTAH.
- - {card}{use_xf4} is dropped. New function using_xf4 has this
- functionality. The flags are now:
- - using XF4 if {driver} && !{prefer_xf3} otherwise using XF3
- - error if $force_xf4 && !{driver} || !{driver} && !{server}
- - internal error if $force_xf4 && {prefer_xf3} || {prefer_xf3} &&
- !{server}
- - {card}{description} contains what used to be {card}{identifier}
- - rename {card}{type} to {card}{card_name}
- - drop {monitor}{type}
-
-2002/07/19 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * any.pm:
- - remove any msec related functions
- - remove 'use security::msec'
-
-2002/07/19 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * standalone/drakconnect:
- - any::setup_thiskind_backend changed in any::load_category_no_message
-
-2002/07/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po: updated Portuguese file
-
-2002/07/19 Pixel <pixel@mandrakesoft.com>
-
- * standalone/XFdrake: rename $i in $X (to have the same as
- Xconfigurator.pm)
-
- * Xconfigurator.pm:
- - don't write XF86Config when no {card}{server}
- - don't write XF86Config-4 when no {card}{driver}
- - workaround mixing values from existing config and
- cardConfigurationAuto()
- - fix asking VideoRam
- - fix device0 in XF86Config
- - use "device1", "device2"... for "Device" Identifier
- - restore having a nice VendorName + BoardName
- (since Identifier is not very useful)
- - get {card}{Chipset} from existing XF86Config
- - use $::prefix
- - drop obsolete stuff: Ramdac, Dacspeed, Clockchip
- - drop {card}{flags}, the few flags are moved directly to {card}
- - force_xf4 is now a global in Xconfigurator
- - create new functions for better modularity: multi_head_config,
- xfree_and_glx_choices, xfree_and_glx_choose
- - for ppc, allow choosing DRI or not
- - need flag {card}{use_DRI_GLX} and {card}{use_UTAH_GLX} deciding
- wether
- to use DRI_GLX or UTAH_GLX. That way, {card}{DRI_GLX}, {card}{UTAH_GLX}
- are only flags allowing or not DRI/UTAH.
- - {card}{use_xf4} is dropped. New function using_xf4 has this
- functionality. The flags are now:
- - using XF4 if {driver} && !{prefer_xf3} otherwise using XF3
- - error if $force_xf4 && !{driver} || !{driver} && !{server}
- - internal error if $force_xf4 && {prefer_xf3} || {prefer_xf3} &&
- !{server}
- - {card}{description} contains what used to be {card}{identifier}
- - rename {card}{type} to {card}{card_name}
- - drop {monitor}{type}
-
- * interactive.pm: nicer error message when {val} is not set for ask_from &
- list
-
- * Xconfig.pm:
- - use "device1", "device2"... for "Device" Identifier
- - restore having a nice VendorName + BoardName
- (since Identifier is not very useful)
- - get {card}{Chipset} from existing XF86Config
- - use $::prefix
- - drop obsolete stuff: Ramdac, Dacspeed, Clockchip
- - drop {card}{flags}, the few flags are moved directly to {card}
- - force_xf4 is now a global in Xconfigurator
- - create new functions for better modularity: multi_head_config,
- xfree_and_glx_choices, xfree_and_glx_choose
- - for ppc, allow choosing DRI or not
- - need flag {card}{use_DRI_GLX} and {card}{use_UTAH_GLX} deciding
- wether
- to use DRI_GLX or UTAH_GLX. That way, {card}{DRI_GLX}, {card}{UTAH_GLX}
- are only flags allowing or not DRI/UTAH.
- - {card}{use_xf4} is dropped. New function using_xf4 has this
- functionality. The flags are now:
- - using XF4 if {driver} && !{prefer_xf3} otherwise using XF3
- - error if $force_xf4 && !{driver} || !{driver} && !{server}
- - internal error if $force_xf4 && {prefer_xf3} || {prefer_xf3} &&
- !{server}
- - {card}{description} contains what used to be {card}{identifier}
- - rename {card}{type} to {card}{card_name}
- - drop {monitor}{type}
-
- * install_steps.pm: don't pass the prefix parameter, not needed/wanted
- anymore
-
-2002/07/18 Christian Belisle <cbelisle@mandrakesoft.com>
-
- * standalone/draksec: create the main() function in security.pm
-
- * security.pm: Re-Addition: will contain the security related (but not
- related to any apps)
- funtioncs and the draksec interface.
- removing
-
- * security/msec.pm:
- - add prefix var in file names
- - remove useless expert_mode var
- - add get_options(): will be used to get various options from msec
- move the msec related functions from any.pm to msec.pm. create
- sec_options
-
-2002/07/18 Damien Chaumette <dchaumette@mandrakesoft.com>
-
- * network/netconnect.pm: . draknet renamed in drakconnect
-
-2002/07/18 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixes allowNVIDIA_rpms against perl-URPM.
- really fixes it.
- fixes error if package is not found (regression fixed).
-
- * pkgs.pm: removed all the commented out code obsoleted.
- fix speed improvement for computeGroupSize by computing closure directly
- (in
- order to have an approximative size, not the real one).
- add back change CD support.
-
- * standalone/XFdrake: fixes with new urpm library of urpmi.
-
-2002/07/18 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm:
- - set $::prefix
- - drop $o->{root} (was "/tmp/root-perl-install" when testing but
- completly unused)
-
- * standalone/XFdrake, install_steps_interactive.pm: don't pass the prefix
- parameter, not needed/wanted anymore
-
- * Xconfigurator.pm, Xconfigurator_consts.pm, Xconfig.pm:
- - %standard_monitors are now in Cards+, dropping them
- - multi head support generalized, now based on Cards+ MULTI_HEAD
- - fix some ModeLines being written twice in XF86Config
- - remove setting DefaultFbBpp to 32
- (since it is the default in all my tests)
-
- * common.pm, install_any.pm: use $::prefix instead of $::o->{prefix}
-
-2002/07/18 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm, install_steps_interactive.pm: add support/option for
- Windows(tm) authentication via winbind
-
-2002/07/18 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: 7mdk changes
- 6mdk final changes
-
- * harddrake/bttv.pm: useless standalone dependancy for pixel fscking
- checker
-
- * Makefile: faster startup: remove use (diagnostics|vars|strict) in srpm
- target as
- in local target (dams fsck)
-
- * harddrake/TODO: update
-
- * harddrake/data.pm: s/draknet/drakconnect/
- - bump version number
- - move scsi & ata controllers, tv-audio, dvd, burners, ... in their
- own "non configurable" sections
-
-2002/07/18 warly
-
- * share/logo-mandrake.png: install logo for 9.0 beta 1
-
-2002/07/18 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fix speed improvement for computeGroupSize by computing closure
- directly (in
- order to have an approximative size, not the real one).
- add back change CD support.
-
-2002/07/18 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm, Xconfigurator_consts.pm, Xconfig.pm:
- - %standard_monitors are now in Cards+, dropping them
- - multi head support generalized, now based on Cards+ MULTI_HEAD
- - fix some ModeLines being written twice in XF86Config
- - remove setting DefaultFbBpp to 32
- (since it is the default in all my tests)
-
-2002/07/17 alus
-
- * share/po/pl.po: some more fixes
- some little changes
-
-2002/07/17 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: added missing use pkgs.
-
-2002/07/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * pkgs.pm: spell right harddrake (two 'd') in @preferred
-
- * tools/cvslog2changelog.pl: add daouda chaumette cbelisle
-
-2002/07/17 Pixel <pixel@mandrakesoft.com>
-
- * install_gtk.pm: normalize Modeline to ModeLine
-
- * common.pm: add function "internal_error" (a specialized "die")
-
- * drakxtools.spec: the new XFdrake needs latest ldetect-lst
-
- * Makefile (test_pms): exclude urpm from uses
-
- * printer.pm, printerdrake.pm: use {XXX} instead of {'XXX'} (as detected
- by new perl_checker)
- remove "$_ =~ " (as detected by new perl_checker)
-
- * any.pm: move the "if !$::testing" for not modifying inittab in function
- runlevel()
- (was in install_steps.pm)
-
- * commands.pm: remove "$_ =~ " (as detected by new perl_checker)
-
- * Xconfigurator.pm, Xconfigurator_consts.pm, install_steps.pm,
- standalone/XFdrake, Xconfig.pm: Big Xconfigurator.pm cleanup/rework
- - use $X instead of $o (to avoid name conflict with DrakX's $o)
- - {flag}{noclockprobe} unused, dropping it
- - rename {memory} into "VideoRam"
- - rename {ramdac} into {Ramdac}
- - rename {chipset} into {Chipset}
- - rename {clockchip} into {Clockchip}
- - rename {keyboard}{xkb_model} into {keyboard}{XkbModel}
- - rename {keyboard}{xkb_keymap} into {keyboard}{XkbLayout}
- - drop {mouse}{chordmiddle} (obsolete)
- - drop {mouse}{cleardtrrts} (obsolete, was not written to XF4 config)
- - &testConfig is unused, removing it
- - as a concequence, {clocklines} is never set, dropping it
- - when UNSUPPORTED remove {driver}, instead of setting
- {flag}{unsupported}
- - Cards+ now only provide {Chipset} for cards needing it
- => {flag}{needChipset} not needed anymore
- - moved setting needVideoRam in Cards+ (via NEEDVIDEORAM)
- (hoping it will work: since the regexp was broken, it was never done.
- (it was applied on the module field of pcitable, instead of the
- description))
- - dropped modelines_text_Trident_TG_96xx case (it has never been used)
- - rename %xkb_options into %XkbOptions
- - rename {DRI_glx} into {DRI_GLX}, the value now comes from Cards+
- instead of regexp'ing {identifier}
- - rename {Utah_glx} into {UTAH_GLX}, the value now comes from Cards+
- instead of regexp'ing {identifier}
- - rename {Utah_glx_EXPERIMENTAL} into {UTAH_GLX_EXPERIMENTAL}, the
- value now comes from Cards+
- instead of regexp'ing {identifier}
- - very_bad_card and bad_card are now the same, the value now comes
- from
- Cards+ (BAD_FB_RESTORE & BAD_FB_RESTORE_XF3)
- - drop unused @accelservers
- - remove $modelines_text_apple, use $modelines_text_ext instead
- - don't use a <Section "Modes"> together with <UseModes "Mac Modes">,
- put
- directly modelines in Section "Monitor"
- (why should ppc behave differently than others!?)
- - replace (conflicting) ModeLines "1280x1024 @ 74 Hz" and
- "1280x1024 @ 76 Hz" with "1280x1024 @ 75 Hz" (from ddcxinfos)
- - drop ModeLine "640x480 @ 72 Hz"
- (it conflicts, and anyway, it has no real use nowadays :)
- - drop comments about HorizSync, VertRefresh and ModeLine's from
- XF86Config
- - drop many unneeded stuff from XF86Config:
- AutoRepeat, Xqueue, Xleds, NoTrapSignals, XkbTypes, XkbKeycodes,
- XkbCompat, XkbRules, LeftAlt/RightAlt/ScrollLock/RightCtl
- - drop section comments from XF86Config
- - drop XF86_Mono configuration
- (it doesn't work anyway, seems like it needs a special ModeLine?)
- - drop 320x200 with XF86_SVGA (who can use this!?)
- - do not write Screen section "accel" if the server configured is not
- an
- accel one
- - drop the "Generic VGA" Device section for XF4
- (this device is unused)
- - drop {monitor}{vendor}, {monitor}{model}, {card}{vendor},
- {card}{model},
- {card}{board} (only description strings, not useful for running the
- server)
- - use x_res instead of wres for things like 1024 in 1024x768
-
-2002/07/17 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: added missing use pkgs.
-
-2002/07/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * pkgs.pm: spell right harddrake (two 'd') in @preferred
-
-2002/07/17 Pixel <pixel@mandrakesoft.com>
-
- * install_gtk.pm: normalize Modeline to ModeLine
-
- * common.pm: add function "internal_error" (a specialized "die")
-
- * drakxtools.spec: the new XFdrake needs latest ldetect-lst
-
- * Makefile (test_pms): exclude urpm from uses
-
- * printer.pm, printerdrake.pm: use {XXX} instead of {'XXX'} (as detected
- by new perl_checker)
- remove "$_ =~ " (as detected by new perl_checker)
-
- * any.pm: move the "if !$::testing" for not modifying inittab in function
- runlevel()
- (was in install_steps.pm)
-
- * commands.pm: remove "$_ =~ " (as detected by new perl_checker)
-
- * Xconfigurator.pm, Xconfigurator_consts.pm, install_steps.pm,
- standalone/XFdrake, Xconfig.pm: Big Xconfigurator.pm cleanup/rework
- - use $X instead of $o (to avoid name conflict with DrakX's $o)
- - {flag}{noclockprobe} unused, dropping it
- - rename {memory} into "VideoRam"
- - rename {ramdac} into {Ramdac}
- - rename {chipset} into {Chipset}
- - rename {clockchip} into {Clockchip}
- - rename {keyboard}{xkb_model} into {keyboard}{XkbModel}
- - rename {keyboard}{xkb_keymap} into {keyboard}{XkbLayout}
- - drop {mouse}{chordmiddle} (obsolete)
- - drop {mouse}{cleardtrrts} (obsolete, was not written to XF4 config)
- - &testConfig is unused, removing it
- - as a concequence, {clocklines} is never set, dropping it
- - when UNSUPPORTED remove {driver}, instead of setting
- {flag}{unsupported}
- - Cards+ now only provide {Chipset} for cards needing it
- => {flag}{needChipset} not needed anymore
- - moved setting needVideoRam in Cards+ (via NEEDVIDEORAM)
- (hoping it will work: since the regexp was broken, it was never done.
- (it was applied on the module field of pcitable, instead of the
- description))
- - dropped modelines_text_Trident_TG_96xx case (it has never been used)
- - rename %xkb_options into %XkbOptions
- - rename {DRI_glx} into {DRI_GLX}, the value now comes from Cards+
- instead of regexp'ing {identifier}
- - rename {Utah_glx} into {UTAH_GLX}, the value now comes from Cards+
- instead of regexp'ing {identifier}
- - rename {Utah_glx_EXPERIMENTAL} into {UTAH_GLX_EXPERIMENTAL}, the
- value now comes from Cards+
- instead of regexp'ing {identifier}
- - very_bad_card and bad_card are now the same, the value now comes
- from
- Cards+ (BAD_FB_RESTORE & BAD_FB_RESTORE_XF3)
- - drop unused @accelservers
- - remove $modelines_text_apple, use $modelines_text_ext instead
- - don't use a <Section "Modes"> together with <UseModes "Mac Modes">,
- put
- directly modelines in Section "Monitor"
- (why should ppc behave differently than others!?)
- - replace (conflicting) ModeLines "1280x1024 @ 74 Hz" and
- "1280x1024 @ 76 Hz" with "1280x1024 @ 75 Hz" (from ddcxinfos)
- - drop ModeLine "640x480 @ 72 Hz"
- (it conflicts, and anyway, it has no real use nowadays :)
- - drop comments about HorizSync, VertRefresh and ModeLine's from
- XF86Config
- - drop many unneeded stuff from XF86Config:
- AutoRepeat, Xqueue, Xleds, NoTrapSignals, XkbTypes, XkbKeycodes,
- XkbCompat, XkbRules, LeftAlt/RightAlt/ScrollLock/RightCtl
- - drop section comments from XF86Config
- - drop XF86_Mono configuration
- (it doesn't work anyway, seems like it needs a special ModeLine?)
- - drop 320x200 with XF86_SVGA (who can use this!?)
- - do not write Screen section "accel" if the server configured is not
- an
- accel one
- - drop the "Generic VGA" Device section for XF4
- (this device is unused)
- - drop {monitor}{vendor}, {monitor}{model}, {card}{vendor},
- {card}{model},
- {card}{board} (only description strings, not useful for running the
- server)
- - use x_res instead of wres for things like 1024 in 1024x768
-
-2002/07/16 alus
-
- * share/po/pl.po: unused string removed
-
-2002/07/16 cbelisle
-
- * standalone/draksec: re-write the part setting the security admin
-
- * security.pm: draksec - initial commit. preparing for the advanced
- section.
-
- * any.pm: draksec:
- - rewrite the function to set the security admin
- - remove ugly buttons, 'advanced' button will come later
-
-2002/07/16 dchaumette
-
- * standalone/drakbug, standalone/interactive_http/authorised_progs,
- standalone/drakxconf: o finish moving draknet to drakconnect in
- standalone
-
-2002/07/16 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: update with newer perl-URPM.
- added log (finding packages to upgrade or computing installed flag)
-
- * install_steps.pm: removed useless package selection cleaning.
-
- * install_steps_gtk.pm: code cleanup.
-
- * install_steps_interactive.pm: improve a little.
- fixed missing upgrade.
- added wait message when finding packages to upgrade.
-
- * install2.pm: fixed reference to step 'selectPackagesToUpgrade'.
-
- * install_any.pm: fixed die when choosePackages step is redone.
-
- * crypto.pm: allow upgrade (if any) by using version at 8.2.
-
-2002/07/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * any.pm: small english fix thx to vdanen
-
- * share/po/id.po, share/po/sk.po, share/po/ru.po, share/po/gl.po,
- share/po/pt_BR.po, share/po/br.po, share/po/th.po, share/po/sl.po,
- share/po/no.po, share/po/et.po, share/po/ja.po, share/po/hr.po,
- share/po/tr.po, share/po/mt.po, share/po/ga.po, share/po/be.po,
- share/po/uk.po, share/po/ko.po, share/po/DrakX.pot, share/po/sv.po,
- share/po/sr.po, share/po/pl.po, share/po/fi.po, share/po/lt.po,
- share/po/sp.po, share/po/cy.po, share/po/ca.po, share/po/da.po,
- share/po/ar.po, share/po/bs.po, share/po/ro.po, share/po/wa.po,
- share/po/is.po, share/po/af.po, share/po/az.po, share/po/zh_TW.po,
- share/po/zh_CN.po, share/po/pt.po, share/po/vi.po, share/po/fr.po,
- share/po/nl.po, share/po/it.po, share/po/eu.po, share/po/es.po,
- share/po/de.po, share/po/eo.po, share/po/lv.po, share/po/el.po,
- share/po/cs.po, share/po/bg.po, share/po/hu.po: reflect typo fix in
- any.pm in the po's so that the translation are not broken
-
- * mdk-stage1/stage1.c: extend a bit fatal error when trying to execute
- /usr/bin/runinstall2 and it's not possible
-
-2002/07/16 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakTermServ: fix "$" in translated string
-
- * Makefile: don't display etags command (too long, not nice)
-
-2002/07/15 daouda
-
- * standalone/drakbug:
- - isStandalone is set in standalone.pm, removed
-
- * standalone/draksec:
- - isStandalone is set in standalone.pm, removed.
- - set isStandalone to 1 to center wait messages
-
-2002/07/15 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: synced.
-
- * install_any.pm: synced with other module updated.
-
- * c/stuff.xs.pm: cleaned no more used method.
-
- * pkgs.pm: made upgrade almost work again (need testing and
- remove/deselect still doesn't
- work properly).
-
- * install_steps.pm: code re-organisation (a little).
-
- * install_steps_gtk.pm: fixed flag usage (still check selected package to
- upgrade but already selected
- are correctly shown).
-
-2002/07/15 Pixel <pixel@mandrakesoft.com>
-
- * ChangeLog: revert titi's error
-
-2002/07/11 Pixel <pixel@mandrakesoft.com>
-
- * rescue/list.i386: switch to vendor_perl
-
-2002/07/10 daouda
-
- * standalone/drakbug:
- - code update
- - use local http server for test.
-
-2002/07/10 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm, install_steps_gtk.pm, crypto.pm, share/list, pkgs.pm,
- install_any.pm, install2.pm, install_steps_interactive.pm: use perl-URPM
- instead of rpmtools.
-
- * tools/Makefile: use vendor_perl instead of site_perl (check of
- rpmtools.pm and packdrake.pm presence).
-
-2002/07/10 Pixel <pixel@mandrakesoft.com>
-
- * tools/Makefile: nicer use of vendor_perl instead of site_perl (check of
- rpmtools.pm and
- packdrake.pm presence) ... i had forgot to commit :-(
-
- * ftp.pm: don't let Timeout kill us
-
- * modparm.pm: rollback titi's modif
-
- * detect_devices.pm: cleanup
-
- * share/list: add integer.pm (needed by Time::Local (needed by Net::FTP))
-
-2002/07/10 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * drakxtools.spec: list and describe all gui tools from drakxtools
- enhance cohenrency: step 1
- - ide and scsi devices use channel rather than bus to store their
- physical connection, which is more logic (at least for eide)
- - all devices have their connection bus in bus field, not in bus for
- {pci,usb,...} and interface_type for {scsi,eide,other_block_devices}
-
- - detect_devices:getIDE() : add eide_hds hash in order to be able to
- split info field between model and vendor
-
- - harddrake::ui : code reduction allowed by the above changes
- fix parrallel build
- fix perl depandancy on new perl
-
- * diskdrake/interactive.pm, detect_devices.pm, install_steps.pm,
- harddrake/ui.pm: enhance cohenrency: step 1
- - ide and scsi devices use channel rather than bus to store their
- physical connection, which is more logic (at least for eide)
- - all devices have their connection bus in bus field, not in bus for
- {pci,usb,...} and interface_type for {scsi,eide,other_block_devices}
-
- - detect_devices:getIDE() : add eide_hds hash in order to be able to
- split info field between model and vendor
-
- - harddrake::ui : code reduction allowed by the above changes
-
- * modparm.pm: typo fix
- no need to test two times if modinfo is executable in normal (ie not
- in drakx) case ...
-
- * Makefile, Makefile.drakxtools: remove all
- (use\s+(diagnostics|vars|strict)' instances
-
-2002/07/09 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: have MDK::Common's in TAGS
-
- * detect_devices.pm: rewrite getSCSI, now handling scanners
-
- * share/list: adapt to new perl 5.8.0
-
- * common.pm, modparm.pm: move join_lines to common
-
-2002/07/09 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: have MDK::Common's in TAGS
-
- * detect_devices.pm: rewrite getSCSI, now handling scanners
-
- * share/list: adapt to new perl 5.8.0
-
- * common.pm, modparm.pm: move join_lines to common
-
-2002/07/09 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/TODO: fix boot freeze on hw change: initscript was running us
- with stdout
- redirected to /dev/null; just use a small sh wrapper to fix it
- update
-
- * standalone/service_harddrake.sh:
- - redirect stderr
- - remove old commented stuff
- fix boot freeze on hw change: initscript was running us with stdout
- redirected to /dev/null; just use a small sh wrapper to fix it
-
- * Makefile.drakxtools: fix boot freeze on hw change: initscript was
- running us with stdout
- redirected to /dev/null; just use a small sh wrapper to fix it
-
- * standalone/service_harddrake:
- - configurator got displayed
- - move timeout around configurator asking (still not 100% ok)
- time out after 200 seconds
- fix boot freeze on hw change: initscript was running us with stdout
- redirected to /dev/null; just use a small sh wrapper to fix it
-
- * drakxtools.spec: fix url
- add harddrake service wrapper
- really final changes
- final batch of changes for -3mdk ?
- fix boot freeze on hw change: initscript was running us with stdout
- redirected to /dev/null; just use a small sh wrapper to fix it
-
- * Makefile.config: add harddrake service wrapper to installed files
-
- * harddrake/ui.pm:
- - add channel: primary/slave for eide deivces
- - get rid of ->{set,get}_user_data
- ensure we don't mix scsi and pci devices
-
- * harddrake/bttv.pm: log only if options set
- typo fix
- only log explanations in standalone mode
-
- * share/po/Makefile: fake make so that its builtin rule to create file
- from file.sh doesn't
- nuke service_harddrake with it wrapper
-
-2002/07/08 daouda
-
- * standalone/drakbug:
- - detect package automatically when app is chosen
-
-2002/07/08 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: create the list_modules symlink
- make test_pms should now work (was pb with list_modules.pm)
-
- * install_steps.pm, any.pm: mtools config so that "mdir a:" accesses the
- usb floppy if one is there
-
- * diskdrake/hd_gtk.pm: do not display "Clear all" (and the other per kind
- buttons) for the raid tab
-
- * install_steps_interactive.pm: in case the licence is refused, ask for
- confirmation
-
- * diskdrake/interactive.pm: make Clear_all work on a LVM VG
- make Clear_all remove partitions from raids
-
-2002/07/08 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/TODO: remove fixed stuff
-
- * Makefile.drakxtools: s/PHONY/.PHONY/
- - simplifications
- - harddrake support is complete
-
- * drakxtools.spec: update
- fix post: add start argument
- service changes batch for 2mdk
- rpmlint fixes
- parrallel build
- 1.1.8-2mdk
- - enhance descriptions
- - various spec clean
- split-up between harddrake and harddrake-ui
- complete changelog
- - obsoletes/provides libdetect-lst, libdetect-lst-devel, detect,
- detect-lst
- - don't restart harddrake on install
- - some stuff moved into Makefile.drakxtools
- - fix harddrake menu entry
- - fix build
-
- * harddrake/data.pm: cache @devices so that hw probe is only done once
-
- * standalone/harddrake2: no need to 'use strict' in "binary"
-
- * standalone/service_harddrake:
- - only work on start
- - add "please wait" message
- - really don't cry when no previous config
- skip configuration on firt run
- skip hw classes without configurator (which'll have a configurator
- after porting updfstab)
-
- * harddrake/ui.pm:
- - rehide "run config tool" button when it has been displayed in
- another hw class
- don't display "run config tool" button if no configurator availlable
- - center the main window
- - remove drakx decorations
- mice:
- - s/nbuttons/Number of buttons/
- - delete qw(MOUSETYPE XMOUSETYPE unsafe)
- don't delete info field in normal path
- - eide devices: split up info field into vendor and model fields
- - complete help
- hummm ... eide: 0->master, 1->slave :-(
- - remove save_report menu entry, this is done by service_harddrake
- - move $in declaration near where it's used
- eide hard disks : print master/slave for bus_location
-
-2002/07/08 daouda
-
- * Makefile.config:
- - add drakbug
-
- * drakxtools.spec:
- - add dir recursively
-
- * standalone/drakbug:
- - detect package automatically when app is chosen
- - standalone app
-
-2002/07/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/mount.c: small readability & size enhancement
-
-2002/07/08 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: in case the licence is refused, ask for
- confirmation
- help perl_checker
-
- * diskdrake/hd_gtk.pm: do not display "Clear all" (and the other per kind
- buttons) for the raid tab
-
- * diskdrake/interactive.pm: make Clear_all work on a LVM VG
- make Clear_all remove partitions from raids
-
- * Makefile: create the list_modules symlink
- make test_pms should now work (was pb with list_modules.pm)
-
-2002/07/08 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * harddrake/ui.pm:
- - remove save_report menu entry, this is done by service_harddrake
- - move $in declaration near where it's used
- eide hard disks : print master/slave for bus_location
- - remove dead stuff
- - comment some stuff
- minor simplication
- various cleanups:
- - move all harddrake modules to harddrake namespace
- - replace two use by require so that it's not done at compil time
- but at runtime
- - there was a missing $ in harddrake::ui.pm
-
- * harddrake/TODO: update todo list
-
- * install_steps_interactive.pm, standalone/draknet, harddrake/bttv.pm,
- standalone/harddrake2, standalone/service_harddrake, harddrake/data.pm:
- various cleanups:
- - move all harddrake modules to harddrake namespace
- - replace two use by require so that it's not done at compil time
- but at runtime
- - there was a missing $ in harddrake::ui.pm
-
- * drakxtools.spec:
- - some stuff moved into Makefile.drakxtools
- - fix harddrake menu entry
- - fix build
- fixes for missing files
- enhanced description
-
- * modules.pm:
- - s/snd-card/snd/
- - make some code clearer
-
- * Makefile.drakxtools:
- - simplifications
- - harddrake support is complete
-
- * scanner.pm: this doesn't need either "#!/usr/bin/perl" nor "use lib
- qw(/usr/lib/libDrakX);"
-
- * standalone/drakxtv:
- - fix options handling
- - use "perl -w"
- - s/bttv/harddrake::bttv/ due to recent changes
-
-2002/07/07 daouda
-
- * drakxtools.spec:
- - directory should exist before mv'ing things (mkdir
- %%buildroot%%_initrddir)
-
-2002/07/07 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm: smarter raidAutoStartRaidtab
- great new raidAutoStartRaidtab allowing to handle existing software
- raids
- even when RAID_AUTORUN is not supported by kernel (which is the case for
- us
- since md.o is a not builtin the kernel)
-
- * fsedit.pm: great new raidAutoStartRaidtab allowing to handle existing
- software raids
- even when RAID_AUTORUN is not supported by kernel (which is the case for
- us
- since md.o is a not builtin the kernel)
-
- * devices.pm: use c::total_sectors() instead of BLKGETSIZE
-
- * diskdrake/interactive.pm, raid.pm: ensure the raid is disactivated and
- marked dirty on any actions that destroy the raid
-
-2002/07/07 daouda
-
- * Makefile:
- - remove share/wizard.rc in DISTFILE
-
- * drakxtools.spec:
- - directory should exist before mv'ing things (mkdir
- %%buildroot%%_initrddir)
- - mv typo in %install section (titi sux)
-
-2002/07/07 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm: smarter raidAutoStartRaidtab
- great new raidAutoStartRaidtab allowing to handle existing software
- raids
- even when RAID_AUTORUN is not supported by kernel (which is the case for
- us
- since md.o is a not builtin the kernel)
- remove detect_devices::check (including the annoying log about no
- modules for the pci entry)
-
- * modules.pm: new "append_to_etc_modules" function
- remove detect_devices::check (including the annoying log about no
- modules for the pci entry)
-
- * fsedit.pm: great new raidAutoStartRaidtab allowing to handle existing
- software raids
- even when RAID_AUTORUN is not supported by kernel (which is the case for
- us
- since md.o is a not builtin the kernel)
-
- * any.pm: small regexp cleanup
-
- * fs.pm, partition_table.pm: for greater symmetry with smb, drop isNfs in
- favour of isThisFs('nfs', ...)
-
- * interactive_newt.pm: make the buttons work in all cases
- - workaround segfaults
- - ensure the perl values are set when calling the clicked_may_quit
- callback
-
- * devices.pm: use c::total_sectors() instead of BLKGETSIZE
-
- * diskdrake/interactive.pm, raid.pm: ensure the raid is disactivated and
- marked dirty on any actions that destroy the raid
-
-2002/07/06 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (ask_users): the user name length must be <= 32
-
- * diskdrake/interactive.pm (as suggested by Alexander Skwar)
- - in interactive::check_type, check if the package (like jfsprogs) is
- installed
- - use interactive::check_type where usefull
- - cleanup
-
- * Makefile.config: standalone/drakbug doesn't exist! (why did deush add
- it???)
- it is standalone/harddrake2, not standalone/harddrake (poor deush must
- be loosing his brain :p)
-
- * diskdrake/hd_gtk.pm: s/check_type/diskdrake::interactive::check_type/
- - move diskdrake.rc from /etc/gtk to /usr/share/libDrakX
- - remove unused wizard.rc
- (as suggested by Alexander Skwar)
- - in interactive::check_type, check if the package (like jfsprogs) is
- installed
- - use interactive::check_type where usefull
- - cleanup
-
- * fsedit.pm: /root and /mnt must "remain within the root filesystem" (ie
- can't be used as mountpoints), dixit redhat
- (package_needed_for_partition_type): return the package needed for a
- partition type
- (check_type): cleanup
-
- * install_any.pm (setDefaultPackages): use
- fsedit::package_needed_for_partition_type to get things like jfsprogs
-
- * fs.pm: supermount now handles fs=auto, using it :)
-
- * Makefile.drakxtools, my_gtk.pm, share/wizard.rc, drakxtools.spec:
- - move diskdrake.rc from /etc/gtk to /usr/share/libDrakX
- - remove unused wizard.rc
-
-2002/07/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * Makefile.config: add the harddrake service which was missing
-
- * printer.pm: try to simplify
-
- * harddrake/ui.pm: simplify: use reverse
- - help system:
- - add an help entry in help menu;
- - begin to describe information fields
-
- - reformat license in about window
-
- - information frame (mostly fixing incoherency between various hw
- classes fields)
-
- - s/media type/media class/
-
- - s/info/Hardware id/
-
- - s/device/device file/
-
- - split description into manufacturer/description
-
- - eide devices:
-
- - rename bus as bus_location
-
- - set interface_type as bus
-
- - scsi devices:
-
- - set bus to SCSI
-
- - set bus_location to bus:id fields
-
- - don't print pci subids when non set
-
- - remove fields that were already used above (vendor id subvendor
- subid pci_bus pci_device pci_function)
-
- - no need to return window after program exit
-
- - print usage if needed
-
- - embed hardware tree in a "detected hardware" frame
-
- - cleanups:
-
- - rename widget2 as frame
-
- - remove dead commented code
-
- * drakxtools.spec: add harddrake2 service
-
- * standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/harddrake.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/cable.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/usb.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/hw_network.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/cd.png,
- standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/tv.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/scsi.png,
- standalone/icons/harddrake2/cpu.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/modem.png,
- standalone/icons/harddrake2/K7.png: add harddrake2 icons
-
-2002/07/06 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (ask_users): the user name length must be <= 32
-
- * commands.pm: adapt to new modprobe.pm
-
- * diskdrake/hd_gtk.pm:
- - move diskdrake.rc from /etc/gtk to /usr/share/libDrakX
- - remove unused wizard.rc
- (as suggested by Alexander Skwar)
- - in interactive::check_type, check if the package (like jfsprogs) is
- installed
- - use interactive::check_type where usefull
- - cleanup
-
- * diskdrake/interactive.pm (as suggested by Alexander Skwar)
- - in interactive::check_type, check if the package (like jfsprogs) is
- installed
- - use interactive::check_type where usefull
- - cleanup
- (Resize): resize2fs handles ext3 :)
-
- * install_any.pm (setDefaultPackages): use
- fsedit::package_needed_for_partition_type to get things like jfsprogs
- when merge_fstabs, handle in a different way mtab and fstab (or
- manualFstab)
- => this allows to force the type&options in manualFstab
-
- * fsedit.pm (package_needed_for_partition_type): return the package needed
- for a partition type
- (check_type): cleanup
-
- * docs/comparisons: various remarks about mandrake
-
- * partition_table_lvm_PV.pm: Allows people having PVs on unpartitioned
- disks to install
- (but no way to create such beasts)
-
- * Makefile.config: standalone/drakbug doesn't exist! (why did deush add
- it???)
- it is standalone/harddrake2, not standalone/harddrake (poor deush must
- be loosing his brain :p)
- add harddrake pm's
-
- * partition_table.pm: Allows people having PVs on unpartitioned disks to
- install
- (but no way to create such beasts)
- cleanup
-
- * fs.pm: supermount now handles fs=auto, using it :)
- when merge_fstabs, handle in a different way mtab and fstab (or
- manualFstab)
- => this allows to force the type&options in manualFstab
-
- * Makefile.drakxtools, my_gtk.pm, share/wizard.rc, drakxtools.spec:
- - move diskdrake.rc from /etc/gtk to /usr/share/libDrakX
- - remove unused wizard.rc
-
-2002/07/06 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/lsnetdrake: simplify
-
- * Makefile: add harddrake to DISTFILES
-
- * printer.pm: try to simplify
-
- * harddrake/TODO: add bits regarding eide and scsi
-
- * standalone/harddrake2: add missing 'use lib' due to harddrak::ui changes
-
- * harddrake/ui.pm: simplify: use reverse
- - help system:
- - add an help entry in help menu;
- - begin to describe information fields
-
- - reformat license in about window
-
- - information frame (mostly fixing incoherency between various hw
- classes fields)
-
- - s/media type/media class/
-
- - s/info/Hardware id/
-
- - s/device/device file/
-
- - split description into manufacturer/description
-
- - eide devices:
-
- - rename bus as bus_location
-
- - set interface_type as bus
-
- - scsi devices:
-
- - set bus to SCSI
-
- - set bus_location to bus:id fields
-
- - don't print pci subids when non set
-
- - remove fields that were already used above (vendor id subvendor
- subid pci_bus pci_device pci_function)
-
- - no need to return window after program exit
-
- - print usage if needed
-
- - embed hardware tree in a "detected hardware" frame
-
- - cleanups:
-
- - rename widget2 as frame
-
- - remove dead commented code
-
- * harddrake/data.pm: add a configurator for sound
-
- * standalone/icons/harddrake2/cable.png,
- standalone/icons/harddrake2/tape.png,
- standalone/icons/harddrake2/usb.png,
- standalone/icons/harddrake2/hw_network.png,
- standalone/icons/harddrake2/unknown.png,
- standalone/icons/harddrake2/hw_printer.png,
- standalone/icons/harddrake2/scanner.png,
- standalone/icons/harddrake2/isdn.png,
- standalone/icons/harddrake2/cd.png,
- standalone/icons/harddrake2/scsi.png,
- standalone/icons/harddrake2/hw_mouse.png,
- standalone/icons/harddrake2/K7.png,
- standalone/icons/harddrake2/webcam.png,
- standalone/icons/harddrake2/harddrake.png,
- standalone/icons/harddrake2/keyboard.png,
- standalone/icons/harddrake2/ide_hd.png,
- standalone/icons/harddrake2/harddisk.png,
- standalone/icons/harddrake2/joystick.png,
- standalone/icons/harddrake2/video.png,
- standalone/icons/harddrake2/memory.png,
- standalone/icons/harddrake2/scsi_hd.png,
- standalone/icons/harddrake2/floppy.png,
- standalone/icons/harddrake2/sound.png,
- standalone/icons/harddrake2/tv.png, standalone/icons/harddrake2/cpu.png,
- standalone/icons/harddrake2/modem.png: add harddrake2 icons
-
-2002/07/05 daouda
-
- * Makefile.config:
- - add harddrake drakbug drakTermServ to STANDALONEPMS_
-
- * drakxtools.spec:
- - snapshot
- - new entries:
- o harddrake2 : new hardware detection && configuration tool
- o drakbugreport: bug reporting tool a la Kde (not working!)
- o drakTermServ : configuration tool for diskless stations.
-
-2002/07/05 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (prepare_write_fstab): for supermount, have "none" as the device
- (cleaner, and
- more coherent with the "supermount" script (tx to FredC))
-
-2002/07/05 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * install_steps_interactive.pm: minimize startup: only load
- harddrake::bttv if the user click on "tv
- card" field in the hw summary window
- use harddrake::bttv to let people configure their tv card if it's
- misdetected
-
- * harddrake/ui.pm: remove uneeded "#!/...", standalone, lib, ... (this is
- a module)
- POSIX is no more used too.
-
- * harddrake/bttv.pm: remove device test: there're only two harddrake::bttv
- users,
- install_steps_interactive.pm and drakxtv which both have already
- tested that a bttv managed tv card is there.
- - add more tv cards
- - enable users to select number of buffers for mmap()
- - better description for pll setting
-
- - add tooltips help for some entries
- tv cards list:
-
- - split multi-cards entries
-
- - reverse the hash (needed since now bttv card types are not
- anymore unique)
-
- - complete the list from various sources
-
- - use a tree to display the list, it's clearer now since it's
- splitted by vendors
-
- - longer message
- - remove uneeded stuff for modules ("#!/..", "use lib..", "use
- standalone", ...)
-
- - simplify bttv options managment:
-
- - use if_, thanks MDK::Common
-
- - s/mapn/map by using a hash at first
-
- - s/mapn{if}/map{if_}
-
- - don't read/write modules.conf here, drakx take care of that for us
-
- thus, the test program became:
-
- #!/usr/bin/perl
-
- use strict;
- use lib qw(/usr/lib/libDrakX);
-
- use standalone;
- use bttv;
- use interactive;
- use modules;
-
- modules::read_conf;
- bttv::config('interactive'->vnew());
- modules::write_conf;
- spec29: bttv configuration part of drakxtv.
- it can be used by:
-
- #!/usr/bin/perl
-
- use strict;
- use lib qw(/usr/lib/libDrakX);
-
- use standalone;
- use harddrake::bttv;
- use interactive;
-
- bttv::config('interactive'->vnew());
-
- * drakxtools.spec: fix typo
- fix dirs1/dirs2 mismatch
- - M-q descriptions
- - simplify file lists building
- - we can use several -f on one "%%files" line
-
- * standalone/drakxtv: if we're root and there's a tv card managed by bttv,
- offer to
- configure bttv trough harddrake::bttv
-
- * tools/cvslog2changelog.pl: typo fix
-
- * harddrake/data.pm: remove uneeded "#!/.." and "use lib"
-
-2002/07/05 François Pons <fpons@mandrakesoft.com>
-
- * Makefile:
- - handle /lib/i686 case
- - replace Mandrake/RPMS with Mandrake/RPMS*
-
-2002/07/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pcmcia/cardmgr.c, mdk-stage1/pcmcia/lex_config.c,
- mdk-stage1/pcmcia/vg468.h, mdk-stage1/pcmcia/cardmgr.h,
- mdk-stage1/pcmcia/bulkmem.h, mdk-stage1/pcmcia/i82365.h,
- mdk-stage1/pcmcia/cirrus.h, mdk-stage1/pcmcia/config.h,
- mdk-stage1/pcmcia/driver_ops.h, mdk-stage1/pcmcia/version.h,
- mdk-stage1/pcmcia/cistpl.h, mdk-stage1/pcmcia/cs.h,
- mdk-stage1/pcmcia/Makefile, mdk-stage1/pcmcia/ds.h,
- mdk-stage1/pcmcia/pcmcia.h, mdk-stage1/pcmcia/cs_types.h,
- mdk-stage1/pcmcia/yacc_config.c, mdk-stage1/pcmcia/tcic.h,
- mdk-stage1/pcmcia/yacc_config.h, mdk-stage1/pcmcia/pcmcia_probe.c:
- pcmcia is now pcmcia_ (it was to begin with a clean branch of unmodified
- sources)
-
-2002/07/05 Pixel <pixel@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: make it work with "use
- strict"
- do not look at the mar files anymore, only use kernel/modules.pl (and so
- list_modules.pm)
-
- * diskdrake/interactive.pm: handle comments in fstab
-
- * fs.pm (merge_info_from_fstab): try to keep options from merged fstab IF
- the entry is for the same mountpoint AND the same device
- handle comments in fstab
-
- * share/rpmsrate: add gnupg in "4 SYSTEM", so that rpm do not *Require*
- gnupg, only suggest it very strongly :)
-
- * mdk-stage1/usb-resource/update-usb-ids.pl:
- - do not use mar files for the list of modules, use list_modules.pm
- via kernel/modules.pl instead
- - use read_pcitable to parse usbtable
-
-2002/07/05 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * harddrake/ui.pm: remove uneeded "#!/...", standalone, lib, ... (this is
- a module)
- POSIX is no more used too.
-
- * drakxtools.spec: fix typo
- fix dirs1/dirs2 mismatch
- - M-q descriptions
- - simplify file lists building
- - we can use several -f on one "%%files" line
- - add preliminary harddrake support
-
- - clean %post
-
- - bump version number
-
- * harddrake/bttv.pm:
- - remove uneeded stuff for modules ("#!/..", "use lib..", "use
- standalone", ...)
- - simplify bttv options managment:
-
- - use if_, thanks MDK::Common
-
- - s/mapn/map by using a hash at first
-
- - s/mapn{if}/map{if_}
-
- - don't read/write modules.conf here, drakx take care of that for us
-
- thus, the test program became:
-
- #!/usr/bin/perl
-
- use strict;
- use lib qw(/usr/lib/libDrakX);
-
- use standalone;
- use bttv;
- use interactive;
- use modules;
-
- modules::read_conf;
- bttv::config('interactive'->vnew());
- modules::write_conf;
- spec29: bttv configuration part of drakxtv.
- it can be used by:
-
- #!/usr/bin/perl
-
- use strict;
- use lib qw(/usr/lib/libDrakX);
-
- use standalone;
- use harddrake::bttv;
- use interactive;
-
- bttv::config('interactive'->vnew());
-
- * Makefile: don't use sed when not needed
-
- * install_steps_interactive.pm: minimize startup: only load
- harddrake::bttv if the user click on "tv
- card" field in the hw summary window
- use harddrake::bttv to let people configure their tv card if it's
- misdetected
-
- * harddrake/data.pm: remove uneeded "#!/.." and "use lib"
-
-2002/07/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps_auto_install.pm,
- install2.pm, network/ethernet.pm, network/isdn.pm, commands.pm,
- printerdrake.pm, mouse.pm, network/netconnect.pm, install_any.pm,
- install_steps.pm, detect_devices.pm, bootloader.pm: adapt to new
- modules.pm
-
- * c/stuff.xs.pm: adapt to new ldetect
-
- * modules.pm: reworked, cleaned:
- - the list of modules is moved to kernel/list_modules.pm (and a few
- functions too)
- - new "add_probeall" function (similar to "add_alias")
- -> used for scsi_hostadapter and usb-interface
- - "load_multi" removed in favour of "load" which is now more powerful
- - load_thiskind renamed load_category
- - get_that_type renamed probe_category
- - %modules::drivers dropped (handled for list_modules)
- still more cleanup to come
-
- * rescue/make_rescue_img: adapt to the move all.modules ->
- kernel/all.modules and all.kernels -> kernel/all.kernels
-
- * modparm.pm: rework, cleanup, simplify and make it work
-
- * install2: create symlink list_modules.pm in current directory for
- testing purpose
-
- * Makefile: when building the tar for drakxtools, handle specially
- list_modules.pm
- adapt to the move all.modules -> kernel/all.modules and all.kernels ->
- kernel/all.kernels
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: new directory "kernel"
- containing:
- - all.modules all.kernels update_kernel
- - part of perl-install/modules.pm now in kernel/list_modules.pm and
- kernel/modules.pl
- - update_kernel cleaned (it doesn't mention module names anymore, it
- is now in kernel/modules.pl)
- - cleanup Makefile
- - mdk-stage1 doesn't depend on perl-install anymore
- (more precisely mdk-stage1/pci-resource/update-pci-ids.pl)
-
- * any.pm: reworked & cleaned the kernel modules part
- - adapt to new modules.pm
- - adapt to new modparm.pm
- - renamed setup_thiskind to load_category
- - renamed setup_thiskind_backend to load_category_no_message
-
- * share/po/Makefile: make the "clean" rule less verbose
-
-2002/07/04 daouda
-
- * standalone/draknet:
- - don't display clear password
-
-2002/07/04 fcrozat
-
- * share/rpmsrate: Fix GNOME2 packages
- Install urw-fonts when installing XFree
-
-2002/07/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/fr.po: updated French file
-
- * lang.pm: Changed some languages to defautl to utf-8
- removed X11_NOT_LOCALIZED (now Gnome2 fully supports right-to-left
- languages)
-
-2002/07/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps_auto_install.pm,
- install2.pm, network/ethernet.pm, network/isdn.pm, commands.pm,
- printerdrake.pm, mouse.pm, network/netconnect.pm, install_any.pm,
- install_steps.pm, detect_devices.pm, bootloader.pm: adapt to new
- modules.pm
-
- * c/stuff.xs.pm: adapt to new ldetect
-
- * modules.pm: reworked, cleaned:
- - the list of modules is moved to kernel/list_modules.pm (and a few
- functions too)
- - new "add_probeall" function (similar to "add_alias")
- -> used for scsi_hostadapter and usb-interface
- - "load_multi" removed in favour of "load" which is now more powerful
- - load_thiskind renamed load_category
- - get_that_type renamed probe_category
- - %modules::drivers dropped (handled for list_modules)
- still more cleanup to come
-
- * getpkgs_deps, do_resize_fat: removed since unused
-
- * Makefile, rescue/make_rescue_img: adapt to the move all.modules ->
- kernel/all.modules and all.kernels -> kernel/all.kernels
-
- * modparm.pm: rework, cleanup, simplify and make it work
-
- * install2: create symlink list_modules.pm in current directory for
- testing purpose
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: new directory "kernel"
- containing:
- - all.modules all.kernels update_kernel
- - part of perl-install/modules.pm now in kernel/list_modules.pm and
- kernel/modules.pl
- - update_kernel cleaned (it doesn't mention module names anymore, it
- is now in kernel/modules.pl)
- - cleanup Makefile
- - mdk-stage1 doesn't depend on perl-install anymore
- (more precisely mdk-stage1/pci-resource/update-pci-ids.pl)
-
- * tools/specific_arch: simplified using MDK::Common
-
- * any.pm: reworked & cleaned the kernel modules part
- - adapt to new modules.pm
- - adapt to new modparm.pm
- - renamed setup_thiskind to load_category
- - renamed setup_thiskind_backend to load_category_no_message
-
- * share/po/Makefile: make the "clean" rule less verbose
-
-2002/07/04 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * harddrake/TODO: add harddrake2 todo list
-
- * harddrake/data.pm: get rid of 'use vars'
- remove wait_message hack for printerdraker, better use class_discard
- harddrake2: "the return of the vengeance son"
- - harddrake/data.pm: the data structure
- - harddrake/ui.pm: the ui code
-
- - standalone/service_harddrake: the init.d service (which need a few
- polishing (timeout, ...)
-
- - standalone/harddrake2: the ui caller which need to be dadou/ln -fied
-
- * harddrake/ui.pm: don't stack signals on config buttons
- - remove no more used @pid_launched
- - better GUI reactivity: don't wait for config tool to complete, just
- "fork and forget" [(c) us air force] and refuse to run another
- config tool until the first one to complete
- print "Running $configurator ..." in status bar while running a config
- tool
- - POSIX is needed for POSIX::wait
- - move strict and standalone require at top
-
- - c is unused
-
- - comment exceptions in devices loop (ie skip classes without any
- devices or any detector
-
- - optimize away $pid
- fix move from harddrake.pm to harddrake/data.pm:
-
- - menu does appear
-
- - information fields are translated from raw to english again
- harddrake2: "the return of the vengeance son"
-
- - harddrake/data.pm: the data structure
-
- - harddrake/ui.pm: the ui code
-
- - standalone/service_harddrake: the init.d service (which need a few
- polishing (timeout, ...)
-
- - standalone/harddrake2: the ui caller which need to be dadou/ln -fied
-
- * detect_devices.pm: add tapes() for harddrake2
-
- * standalone/harddrake2, standalone/service_harddrake: harddrake2: "the
- return of the vengeance son"
- - harddrake/data.pm: the data structure
- - harddrake/ui.pm: the ui code
-
- - standalone/service_harddrake: the init.d service (which need a few
- polishing (timeout, ...)
-
- - standalone/harddrake2: the ui caller which need to be dadou/ln -fied
-
-2002/07/03 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/probing.c: fixed static definition when non static
- declaration (gcc limitation).
- added conditional code around network detection.
-
-2002/07/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/mar/mar-extract-only.c, mdk-stage1/minilibc.c,
- mdk-stage1/newt/newt.c, mdk-stage1/bzlib/bzlib.c,
- mdk-stage1/newt/listbox.c, mdk-stage1/newt-frontend.c,
- mdk-stage1/disk.c, mdk-stage1/modules.c, mdk-stage1/stage1.c,
- mdk-stage1/newt/checkboxtree.c, mdk-stage1/mar/mar-frontend.c,
- mdk-stage1/Makefile.common, mdk-stage1/url.c, mdk-stage1/newt/textbox.c,
- mdk-stage1/newt/grid.c, mdk-stage1/dhcp.c, mdk-stage1/init.c,
- mdk-stage1/automatic.c, mdk-stage1/newt/entry.c: compile with -W
-
-2002/07/02 daouda
-
- * my_gtk.pm:
- - fill a combo by default :
- gtkcombo_setpopdown_strings($combo_widget,@strings)
-
-2002/07/02 gbeauchesne
-
- * c/smp.c:
- - TODO: Update ia64 check with /proc/pal/cpuX ?
- - TODO: Update x86_64 check when SMP machines are actually available
- - Conditionalize compilation of main() with TEST macro
-
-2002/07/02 Pixel <pixel@mandrakesoft.com>
-
- * network/smb.pm: try harder to find the full list of servers available,
- using "smbclient -L" to
- check the workgroup masters
-
-2002/07/01 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm (raw_hd_mount_point): nicer default mount point
-
-2002/06/28 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm, network/smb.pm, network/smbnfs.pm:
- - add authentification in diskdrake --smb (esp. for windows NT)
- - use "credentials=" to put the passwords
- (ideas and investigations from Stew Benedict,
- integrated by Pixel, but need testing)
- Known bug: if you want to change the password when there are 2 entries
- in fstab
- using the same username=/password=, writing the credentials is done in
- random order,
- => you've got one chance in 2 that the password is changed :-(
-
- * fs.pm:
- - add authentification in diskdrake --smb (esp. for windows NT)
- - use "credentials=" to put the passwords
- (ideas and investigations from Stew Benedict,
- integrated by Pixel, but need testing)
- Known bug: if you want to change the password when there are 2 entries
- in fstab
- using the same username=/password=, writing the credentials is done in
- random order,
- => you've got one chance in 2 that the password is changed :-(
- handle spaces in mount points and devices (using \040)
-
-2002/06/27 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakTermServ, standalone/icons/drakTS.620x57.png: Add
- drakTermServ application and icon.
-
-2002/06/26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm, install2.pm: ensure
- licence step is asked in any case (ie. even when selectLanguage is
- automatic)
-
- * any.pm: "my" variables where needed
-
-2002/06/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po, share/po/ar.po: Updated po files
-
-2002/06/19 Frederic Lepied <flepied@mandrakesoft.com>
-
- * Makefile: corrected rules to make distributable rpms.
-
-2002/06/19 François Pons <fpons@mandrakesoft.com>
-
- * patch/patch-oem-hp.pl: added patch-oem.pl file used to generate HP
- Mandrake Linux 8.2.
-
-2002/06/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: remove a few drivers so that hd.img and network.img are
- possible with latest BOOT kernel
-
-2002/06/19 Pixel <pixel@mandrakesoft.com>
-
- * standalone/fileshareset: use "wide links = no" for exporting via samba
- (thanks to Jan Schäfer)
-
- * fs.pm: mounting of ntfs after install really mount the partition (thanks
- to Buchan Milne)
-
-2002/06/18 daouda
-
- * my_gtk.pm:
- - add gtkset_text, gtkprepend_text, gtkappend_text for entry widgets
-
-2002/06/18 Frederic Lepied <flepied@mandrakesoft.com>
-
- * Makefile.drakxtools: manage security subdir.
-
- * Makefile: added targets to build test and distribution rpms and srpms
- (localrpm,
- localsrpm, rpm, srpm).
- added security to the installed directories
-
- * pam.net_monitor, diskdrake/diskdrake.html, drakxtools.spec,
- apps.net_monitor: ripped from the srpm
-
-2002/06/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
-2002/06/17 cbelisle
-
- * standalone/draksec: added server, user and network advanced options
-
- * any.pm: draksec: customize entries for each options (lists, checkboxes
- and text boxes)
- Added user,server and network advanced options
-
- * security/msec.pm:
- - Customize entries for each options (checkboxes, text boxes and
- lists)
- added network, server and user advanced options
-
-2002/06/15 alus
-
- * share/po/pl.po: updates
-
-2002/06/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Catalan doesn't have French fallback anymore
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/mt.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/06/11 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: added /tmp in @suggestions_mntpoints (as suggested by
- Philippe Coulon)
-
-2002/06/10 cbelisle
-
- * standalone/draksec: Add an entry for the security user email
-
- * security/msec.pm: Initial commit
-
- * any.pm: Add security user email entry in draksec
-
-2002/06/10 daouda
-
- * network/tools.pm:
- - choose country according to timezone.
-
-2002/06/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/syncrpms: english fix
-
-2002/06/10 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm: s/class/class_/ for ldetect 0.4
-
-2002/06/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * timezone.pm: remove duplicate entry in ntp_servers
-
- * interactive_gtk.pm, my_gtk.pm: split ask_browse_tree_info from
- interactive_gtk
- to my_gtk between widgets creation and real
- stuff so that we can now call it with widgets
- places differently
-
-2002/06/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated po file
-
-2002/06/05 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: adapt to new lilo
-
-2002/06/05 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: use -ff for mkreiserfs, do not use -q for mkreiserfs
-
- * bootloader.pm: adapt to new lilo
-
-2002/06/05 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: use -ff for mkreiserfs, do not use -q for mkreiserfs
-
-2002/06/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, install_steps_interactive.pm, any.pm,
- install_steps_gtk.pm, mdk-stage1/network.c, mdk-stage1/disk.c: english
- fixes thx to vincent meyer
-
-2002/06/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: have the /root/drakx/auto_install.cfg.pl replay style
- instead of weird style
- with clearall unset & auto_allocate set
-
-2002/05/29 alus
-
- * share/po/pl.po: little fixes
-
-2002/05/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive_gtk.pm: remove typo fix when it's not a fix :-)
- small typo
- remove typo (hopefully really a typo ;p)
-
- * any.pm: be a bit more polite
-
-2002/05/27 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: make sure patch is always read after defcfg to take
- precedance.
-
-2002/05/27 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: have usb-interface1 for ehci-hcd
-
-2002/05/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * Xconfigurator.pm: dams fixes a bug in the install :-)
-
-2002/05/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: xtraceroute needs 3d
-
-2002/05/15 alus
-
- * share/po/Changelog: info about polish translation
-
-2002/05/14 alus
-
- * share/po/pl.po: polish finished
- updated polish translation
- polish updated to near finished. Fuzzy removed and checked
-
-2002/05/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * docs/HACKING: libncurses* also for the sucking neuneux
-
-2002/05/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po, share/po/id.po: updated po file
-
-2002/05/13 alus
-
- * share/po/pl.po: mostly finished polish translation.!!
-
-2002/05/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * docs/HACKING: libbzip2* and more explanations about failing compilation
-
- * mdk-stage1/Makefile, mdk-stage1/ppp/pppd/ipcp.c, mdk-stage1/probing.c:
- adapt to gcc-3.1
-
-2002/05/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Put back xcin as default XIM for zh_TW.Big5
-
- * share/po/eu.po: small corrections
-
-2002/04/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/usb-resource/update-usb-ids.pl: support USB2 controllers as
- well
-
-2002/04/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po, share/po/hu.po: updated po files
-
-2002/04/26 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed some machine with two present i830 CGC but only
- one in reality.
-
- * detect_devices.pm: updated usbMice to take care of device declared as
- Mouse:USB in usbtable (was
- not the case !)
-
-2002/04/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/mt.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/04/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * bootlook.pm: a few english fixes
-
- * any.pm: fixes
- english fixes from v meyer
- a few english fixes thx to vincent meyer
-
-2002/04/19 alus
-
- * share/po/pl.po: It's only about 100 entries to the end
-
-2002/04/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
- * share/po/hu.po: updated po file
-
-2002/04/18 alus
-
- * share/po/pl.po: 3 more long messages
- one entry
- stil working....
-
-2002/04/17 alus
-
- * share/po/pl.po: Mostly finished polish translation
- translations, fixes etc...
-
-2002/04/17 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: final candidate.
-
- * rescue/tree/etc/oem: final candidate.
- add gcc-cpp to oem install.
-
-2002/04/16 alus
-
- * share/po/pl.po: still working
- Few fixes
- Updated translation. Many strings is not yet translated...
-
-2002/04/16 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: sync with oem-prepare
- fixed stupid error.
- forget packdrake module invocation.
- fixed to support non standard rpm filename.
-
- * tools/oem-prepare: add gcc-cpp to always installed.
- disable unselection of some package (gmc, all gcc3.0 stuff).
-
-2002/04/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: only main version of automake
-
-2002/04/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated po file
-
-2002/04/16 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: handle "Cancel" on NIS / LDAP server
- dialog box
-
-2002/04/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: ipchains now conflicts with iptables
-
-2002/04/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: Another small fix
- Small corrections
-
-2002/04/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po: merged with drakfloppy strings
-
-2002/04/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/mt.po: updated Maltese file
-
-2002/04/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: small typo correction
-
-2002/04/10 warly
-
- * share/rpmsrate: autofs -> 2
-
-2002/04/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: time to remove ipchains/2.2 stuff since now ipchains
- and iptables
- packages conflict
-
-2002/04/09 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_dos.pm, partition_table_gpt.pm,
- partition_table_empty.pm, partition_table_bsd.pm,
- partition_table_sun.pm, partition_table_mac.pm: nicer debug "bag magic"
- error message (thanks to Brian J. Murrell)
-
-2002/04/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fixed a bunch of things
-
- * install_steps_interactive.pm, install_interactive.pm, network/isdn.pm,
- partition_table.pm, install_steps_gtk.pm, Xconfigurator.pm,
- printerdrake.pm, network/tools.pm, diskdrake/interactive.pm,
- network/netconnect.pm, fsedit.pm, diskdrake/removable_gtk.pm,
- network/network.pm, printer.pm, interactive_stdio.pm: fix a few english
- strings
-
-2002/04/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/mt.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: merged with
- drakfloppy strings
-
-2002/04/07 Yves Duret <yduret@mandrakesoft.com>
-
- * standalone/drakfloppy: moving from his own rpm to drakxtools
-
- * Makefile.config: add drakfloppy to STANDALONEPMS_
-
-2002/04/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/Makefile.PL: rpmlib 4.0.4 now also needs libpopt
-
-2002/04/04 sdupont
-
- * standalone/drakbackup: please yduret, do not commit these changes on cvs
- before to test it.
- you can say "bugs fixes" only if you have corrected some errors but not
- if you create it!
- the backup on cd was disabled because the backend is not available for
- moment.
-
- * standalone/drakfont: remove uninteresting yduret changes,
- would it be possible to know what are your "bugs fixies" ?
- to yduret: I'm the creator of this program so please do not remove my
- changes.
-
-2002/06/05 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: use -ff for mkreiserfs, do not use -q for mkreiserfs
-
-2002/06/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, install_steps_interactive.pm, any.pm,
- install_steps_gtk.pm, mdk-stage1/network.c, mdk-stage1/disk.c: english
- fixes thx to vincent meyer
-
-2002/06/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: have the /root/drakx/auto_install.cfg.pl replay style
- instead of weird style
- with clearall unset & auto_allocate set
-
-2002/05/29 alus
-
- * share/po/pl.po: little fixes
-
-2002/05/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive_gtk.pm: remove typo fix when it's not a fix :-)
- small typo
- remove typo (hopefully really a typo ;p)
-
- * any.pm: be a bit more polite
-
-2002/05/27 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: make sure patch is always read after defcfg to take
- precedance.
-
-2002/05/27 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: have usb-interface1 for ehci-hcd
-
-2002/05/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * Xconfigurator.pm: dams fixes a bug in the install :-)
-
-2002/05/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: xtraceroute needs 3d
-
-2002/05/15 alus
-
- * share/po/Changelog: info about polish translation
-
-2002/05/14 alus
-
- * share/po/pl.po: polish finished
- updated polish translation
- polish updated to near finished. Fuzzy removed and checked
-
-2002/05/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * docs/HACKING: libncurses* also for the sucking neuneux
-
-2002/05/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po, share/po/id.po: updated po file
-
-2002/05/13 alus
-
- * share/po/pl.po: mostly finished polish translation.!!
-
-2002/05/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * docs/HACKING: libbzip2* and more explanations about failing compilation
-
- * mdk-stage1/Makefile, mdk-stage1/probing.c: adapt to gcc-3.1
-
-2002/05/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Put back xcin as default XIM for zh_TW.Big5
-
- * share/po/eu.po: small corrections
-
-2002/04/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po, share/po/hu.po: updated po files
-
-2002/04/26 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed some machine with two present i830 CGC but only
- one in reality.
-
- * detect_devices.pm: updated usbMice to take care of device declared as
- Mouse:USB in usbtable (was
- not the case !)
-
-2002/04/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/mt.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/04/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * bootlook.pm: a few english fixes
-
- * any.pm: fixes
- english fixes from v meyer
- a few english fixes thx to vincent meyer
-
-2002/04/19 alus
-
- * share/po/pl.po: It's only about 100 entries to the end
-
-2002/04/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
- * share/po/hu.po: updated po file
-
-2002/04/18 alus
-
- * share/po/pl.po: 3 more long messages
- one entry
- stil working....
-
-2002/04/17 alus
-
- * share/po/pl.po: Mostly finished polish translation
- translations, fixes etc...
-
-2002/04/16 alus
-
- * share/po/pl.po: still working
- Few fixes
- Updated translation. Many strings is not yet translated...
-
-2002/04/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: only main version of automake
-
-2002/04/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated po file
-
-2002/04/16 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: handle "Cancel" on NIS / LDAP server
- dialog box
-
-2002/04/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: ipchains now conflicts with iptables
-
-2002/04/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: Another small fix
- Small corrections
-
-2002/04/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ro.po: merged with drakfloppy strings
-
-2002/04/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/mt.po: updated Maltese file
-
-2002/04/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: small typo correction
-
-2002/04/10 warly
-
- * share/rpmsrate: autofs -> 2
-
-2002/04/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: time to remove ipchains/2.2 stuff since now ipchains
- and iptables
- packages conflict
-
-2002/04/09 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_dos.pm, partition_table_gpt.pm,
- partition_table_empty.pm, partition_table_bsd.pm,
- partition_table_sun.pm, partition_table_mac.pm: nicer debug "bag magic"
- error message (thanks to Brian J. Murrell)
-
-2002/04/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fixed a bunch of things
-
- * install_steps_interactive.pm, install_interactive.pm, network/isdn.pm,
- partition_table.pm, install_steps_gtk.pm, Xconfigurator.pm,
- printerdrake.pm, network/tools.pm, diskdrake/interactive.pm,
- network/netconnect.pm, fsedit.pm, diskdrake/removable_gtk.pm,
- network/network.pm, printer.pm, interactive_stdio.pm: fix a few english
- strings
-
-2002/04/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/mt.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: merged with
- drakfloppy strings
-
-2002/04/07 Yves Duret <yduret@mandrakesoft.com>
-
- * standalone/drakfloppy: moving from his own rpm to drakxtools
-
- * Makefile.config: add drakfloppy to STANDALONEPMS_
-
-2002/04/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/Makefile.PL: rpmlib 4.0.4 now also needs libpopt
-
-2002/04/04 sdupont
-
- * standalone/drakbackup: please yduret, do not commit these changes on cvs
- before to test it.
- you can say "bugs fixes" only if you have corrected some errors but not
- if you create it!
- the backup on cd was disabled because the backend is not available for
- moment.
-
- * standalone/drakfont: remove uninteresting yduret changes,
- would it be possible to know what are your "bugs fixies" ?
- to yduret: I'm the creator of this program so please do not remove my
- changes.
-
-2002/04/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/Makefile.PL: rpmlib 4.0.4 now also needs libpopt
-
-2002/04/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * c/Makefile.PL: rpmlib 4.0.4 now also needs libpopt
-
-2002/04/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: setting /etc/sysconfig/msec for chkconfig which
- doesn't use $ENV{SECURE_LEVEL} anymore
-
-2002/04/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: setting /etc/sysconfig/msec for chkconfig which
- doesn't use $ENV{SECURE_LEVEL} anymore
-
-2002/04/02 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: do not have "root=" with no root (needed for memtest)
- (thanks to Borsenkow Andrej)
-
- * share/rpmsrate: add tmpwatch (since it is not mandatory any more)
-
-2002/03/30 Yves Duret <yduret@mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakfont: bugs fixes, code clean up,
- more mdkish..
-
-2002/03/26 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Fixed several problems related to HP
- multi-function devices:
- - Parallel multi-function devices worked only on the first (onboard)
- parallel
- port.
- - HP LaserJet 2200 needs HPOJ for printing via USB.
- - For the HP OfficeJet D series the scanning instructions were not
- shown.
- - HPOJ does not work with HP PhotoSmart 10xx, 11xx, and 12xx.
-
-2002/03/22 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: cleaned gtkpowerpack
-
-2002/03/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: use /root rather than /tmp for some temp files (security
- suxx)
-
-2002/03/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/list: rpm 4.0.4
-
- * mdk-stage1/network.c: don't save DHCP_HOSTNAME if the value is void
-
-2002/03/20 sdupont
-
- * standalone/drakfont: fixing problems
- exchanging: ttmkfdir by /usr/X11R6/bin/mkttfdir
- which generate correct fonts.dir
-
- * standalone/drakbackup: remove backup on cd
-
-2002/03/20 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * standalone/drakxtv: use log for what is not related to explanations
-
-2002/03/19 François Pons <fpons@mandrakesoft.com>
-
- * tools/updatehdlist: take care of commercial medium (not syncable).
-
-2002/03/19 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * standalone/drakxtv:
- - default tv norm is pal rather than ntsc (because of alphabetical
- sort) since it's the most used tv norm
- - figure out tv norm & country (aka frequency table) from locales
-
- - add a hash based on lang in order to do this
-
- - add --no-guess if one doesn't want drakxtv to automagically guess tv
- norm and geographic area through locales (lang.pm)
-
- - log with standalone::explanations:
-
- - guessed values from locales: language, tv norm and country
-
- - runned command to scan for tv channels
-
- - ~/.xawtv creation
-
-
- - s/bcast/broadcast/ in displayed messages
-
- - add -h and --help support
-
-2002/03/18 dam's <damien@mandrakesoft.com>
-
- * install_gtk.pm, mouse.pm, my_gtk.pm: corrected create_xpm API
-
-2002/03/18 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: fixed to support rpm filename incoherent to standard
- naming for commercial
- packages (commercial are *really* shit (almost, for the hope) all the
- time ?)
-
-2002/03/16 dam's <damien@mandrakesoft.com>
-
- * network/ethernet.pm: we now consider dhcp provide GATEWAY and internet
- connection.
-
-2002/03/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/ar.po: updated po file
-
-2002/03/16 Pixel <pixel@mandrakesoft.com>
-
- * network/ethernet.pm: small cleanup on untested code (need testing:)
-
-2002/03/16 dam's <damien@mandrakesoft.com>
-
- * network/ethernet.pm: we now consider dhcp provide GATEWAY and internet
- connection.
-
-2002/03/16 Pixel <pixel@mandrakesoft.com>
-
- * network/ethernet.pm: small cleanup on untested code (need testing:)
-
-2002/03/15 fabman
-
- * share/po/es.po: updated bad lilo/grub/yaboot translation
- updated spanish translations
-
-2002/03/15 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: force mkinitrd *really* for bootsplash.
- force initrd regeneration for oem on some case (maybe the cause of
- bootsplash
- perturbation, as maintainer don't even known why it is running correctly
- :-)
-
- * pkgs.pm: do not try to get synthesis if hdlist is available as an handle
- on file (typical
- for updates).
-
- * share/rpmsrate: remove doublon on NVIDIA_nforce.
- update to 6mdk for NVIDIA_nforce*
-
-2002/03/15 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: yet again add some dropped entities from drakx-help.xml
- add the dropped &linux-mandrake; &mandrake-linux; and a few &os-linux;
-
- * install_steps_interactive.pm:
- - remove obsolete code
- - the result is to use directly $availableC instead $size2install
- which was min($availableC, $max_size)
-
-2002/03/15 dam's <damien@mandrakesoft.com>
-
- * share/po/ja.po: reverted ' \n' from pablo because I managed to correct
- the way we wrap for the advertising
-
- * install_steps_gtk.pm: submitting widget instead of style (style/font
- initialization bug from gtk
-
- * my_gtk.pm: corrected get_text_coord : widget instead of style, and
- handling of ugly language (/ja|zh/)
-
-2002/03/15 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: do not try to get synthesis if hdlist is available as an handle
- on file (typical
- for updates).
-
- * rescue/tree/etc/oem: update lang according to lang.pm of 8.2 (remove
- @euro appended for 8.1).
-
-2002/03/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: added xx_YY -> keyboard lines in addition of xx -> keyboard
- ones
-
-2002/03/15 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: yet again add some dropped entities from drakx-help.xml
- add the dropped &linux-mandrake; &mandrake-linux; and a few &os-linux;
- s/Linux Mandrake/Mandrake Linux/ (from the drakx-help.xml not merged)
-
- * keyboard.pm (unpack_keyboards): return undef on error
-
-2002/03/15 dam's <damien@mandrakesoft.com>
-
- * share/po/ja.po: reverted ' \n' from pablo because I managed to correct
- the way we wrap for the advertising
-
- * install_steps_gtk.pm: submitting widget instead of style (style/font
- initialization bug from gtk
-
- * my_gtk.pm: corrected get_text_coord : widget instead of style, and
- handling of ugly language (/ja|zh/)
-
-2002/03/15 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: update lang according to lang.pm of 8.2 (remove
- @euro appended for 8.1).
-
-2002/03/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: added xx_YY -> keyboard lines in addition of xx -> keyboard
- ones
-
-2002/03/15 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: s/Linux Mandrake/Mandrake Linux/ (from the
- drakx-help.xml not merged)
-
- * keyboard.pm (unpack_keyboards): return undef on error
-
-2002/03/15 dam's <damien@mandrakesoft.com>
-
- * share/po/ja.po: reverted ' \n' from pablo because I managed to correct
- the way we wrap for the advertising
-
- * install_steps_gtk.pm: submitting widget instead of style (style/font
- initialization bug from gtk
-
- * my_gtk.pm: corrected get_text_coord : widget instead of style, and
- handling of ugly language (/ja|zh/)
-
-2002/03/15 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: update lang according to lang.pm of 8.2 (remove
- @euro appended for 8.1).
-
-2002/03/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: added xx_YY -> keyboard lines in addition of xx -> keyboard
- ones
-
-2002/03/15 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: s/Linux Mandrake/Mandrake Linux/ (from the
- drakx-help.xml not merged)
-
- * keyboard.pm (unpack_keyboards): return undef on error
-
-2002/03/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po: updated po file
-
-2002/03/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakxtv: english
-
-2002/03/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/da.po, share/po/no.po: updated po files
-
- * share/po/eu.po: updated po file
-
- * lang.pm: changed LANGUAGE for basque
-
- * share/po/ja.po: added \n in advertising
-
-2002/03/14 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: CHARSET"iso-8859-1" and CHARSET"iso-8859-15" is no good
- for english which has CHARSET"C", adding it
-
- * share/rpmsrate.server: obsolete
-
-2002/03/14 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * standalone/drakxtv:
- - add SECAM to france description to ease user comprehension
- - remove unused variables
- - revert gc & dam's (also known as the usual suckers) garbage
- who'ven't the hardware to test:
-
- - explain in source why we don't try to install xawtv (see below)
-
- - just display a message if xawtv isn't installed
- since drakx should have installed it
-
- - let it be runned as root again (how many times i'm
- supposed to restore this behaviour)
-
- - retest with a tv card
-
- - use %ENV rather than relying on shell ~ expansion
-
- - if tv card wasn't detected, ask the user to spam us
-
- - factorize $in->exit() out of scan4tvchannels()
-
- - add to TODO list the possibility to install xawtv if needed
-
- - check scantv return value and display an error message
-
- - also if the wrapper was runned on console, display a nice
- message saying one can now run xawtv under X11
-
-2002/03/14 warly
-
- * share/rpmsrate: add commercial apps
-
-2002/03/14 Yves Duret <yduret@mandrakesoft.com>
-
- * standalone/logdrake: fix some bug
- fix * bug in field matching/ not matching
-
-2002/03/13 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: new gfx
-
-2002/03/13 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: sync with oem (removed mach32 server).
- sync with oem.
- remove bzflag.
- synced with oem script.
-
- * rescue/tree/etc/oem: remove Mach32 XF3.3.6 server too.
- remove Mach8 and Mono driver for oem only.
- remove bzflag.
- fixed closure selection on sub groups (like 3D),
- moved some big package out of oem,
- minor fixes.
-
-2002/03/13 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: new gfx
-
-2002/03/13 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: sync with oem (removed mach32 server).
- sync with oem.
- remove bzflag.
- synced with oem script.
-
- * rescue/tree/etc/oem: remove Mach32 XF3.3.6 server too.
- remove Mach8 and Mono driver for oem only.
- remove bzflag.
- fixed closure selection on sub groups (like 3D),
- moved some big package out of oem,
- minor fixes.
-
-2002/03/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po, share/po/eu.po: updated po files
-
-2002/03/13 warly
-
- * share/rpmsrate: add aspell-fr and en for gabber require
-
-2002/03/13 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed closure selection on sub groups (like 3D),
- moved some big package out of oem,
- minor fixes.
-
- * tools/oem-prepare: synced with oem script.
-
-2002/03/13 gbeauchesne
-
- * share/rpmsrate:
- - Add openoffice with weight = 2
-
-2002/03/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po, share/po/vi.po, share/po/cs.po, share/po/hu.po,
- share/po/eu.po: updated po files
-
- * lang.pm: small console font changes
- set default console fotns for latin1/0 to lat1-16 and lat0-16;
- the font lat0-sun16 is missing some chars of iso-8859-1/15 !
-
-2002/03/13 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: add gcc and gcc-c++ in @preferred
-
-2002/03/13 warly
-
- * share/rpmsrate: add aspell-fr and en for gabber require
-
-2002/03/12 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: onboot option only in expert mode
- corrected domainname bug; added onboot option
-
-2002/03/12 dam's <damien@mandrakesoft.com>
-
- * standalone/drakbackup, standalone/drakfont: minor bug correction
-
- * standalone/net_monitor: greater timeout
-
- * network/tools.pm, network/netconnect.pm: changed timeout for testing
- internet connection
-
-2002/03/12 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: remove synthesis if not found (filesize is 0)
-
- * Xconfigurator.pm: avoid Utah GLX only if > 800MB, not if <= 800MB (!)
-
- * install_any.pm: added fix to support update hdlist renaming (ie hdlist
- of update are always hdlist.cz).
- remove old synthesis file, to make sure gzip can build a new one.
-
- * share/rpmsrate: added nforce support (hack by adding kernel version
- inside)
-
-2002/03/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
- * share/po/ga.po: fixed email address
-
- * share/po/zh_TW.po: updated po file
-
-2002/03/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, bootloader.pm: don't have "quiet" boot in the server
- meta_class
-
- * pkgs.pm: "fam" is not a naughtyServers
- remove the old "boa" comment
- adapt naughtyServers for 8.2
-
-2002/03/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: a few missing translations
-
-2002/03/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt.po, share/po/ga.po, share/po/de.po, share/po/az.po,
- share/po/pt_BR.po, share/po/nl.po, share/po/ja.po, share/po/id.po,
- share/po/ar.po, share/po/mt.po, share/po/eo.po, share/po/da.po: updated
- po files
-
- * share/po/eu.po, share/po/it.po: updated po files
- merged with new strings from manuals
-
- * share/po/DrakX.pot, share/po/fr.po: merged with new strings from manuals
-
- * share/po/be.po, share/po/bg.po, share/po/et.po, share/po/hr.po,
- share/po/ko.po, share/po/is.po, share/po/pl.po, share/po/no.po,
- share/po/fi.po, share/po/el.po, share/po/lt.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/bs.po,
- share/po/cs.po, share/po/af.po: updated po files (finished merging with
- manual strings)
- updated po files
-
- * share/po/hu.po: updated po files
- updated po files
-
- * share/po/cy.po: updated po file
- updated po files
-
- * share/po/es.po: updated Spanish
-
- * share/po/sp.po, share/po/zh_CN.po, share/po/sr.po, share/po/tr.po,
- share/po/ru.po, share/po/wa.po, share/po/sv.po, share/po/th.po,
- share/po/sk.po, share/po/sl.po, share/po/vi.po, share/po/uk.po,
- share/po/ro.po, share/po/zh_TW.po: updated po files (finished merging
- with manual strings)
-
-2002/03/11 dam's <damien@mandrakesoft.com>
-
- * Makefile.config: added drakproxy
-
- * standalone/drakxtv: added embedded mode
-
-2002/03/11 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: for updates, make tree as flat instead in order to
- see all packages.
-
-2002/03/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: webmin: 3
-
- * standalone/drakxtv:
- - install xawtv when necessary instead of
- telling people to use urpmi (titi sucks)
- - prints out a message when no tv card
- has been detected
-
- * share/po/fr.po: small ortograf
-
-2002/03/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po, share/po/it.po, share/po/eu.po: merged with new strings
- from manuals
-
- * share/po/DrakX.pot: merged with new strings from manuals
- updated GErman file
-
- * share/po/de.po: updated GErman file
-
- * share/po/es.po: updated Spanish
-
-2002/03/11 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm (fullname2mouse): workaround when "1 Button" is not found
-
- * install_steps.pm, install2.pm:
- - default security level now set in miscellaneousBefore
- - default security level is 3 in meta_class server
-
- * install_any.pm:
- - fix the setting of compssUsersChoices in auto_install when it is
- empty
- - set the default compssUsersChoices adapted to the server meta_class
-
- * share/rpmsrate: remove phpgroupware from OFFICE (since it appeas twice,
- the rate is 4, and it requires apache, and ...)
-
- * Makefile: upload the various compssUsers* (esp. compssUsers.server)
-
- * install_steps_gtk.pm:
- - remove the hack for not displaying Utilities in classic meta_class
- - new compssUsers groups for the server meta_class
-
- * share/compssUsers: remove "Utilities" here instead of removing it
- hackily in install_steps_gtk
-
- * share/compssUsers.server: fix the path=Utilities for the Utilities
- section
-
-2002/03/11 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Small text fix.
- Security fix: Give a warning that SMB passwords can easily be revealed
- by normal users when printing on a Windows-hosted printer is set up.
-
- * detect_devices.pm: Reverted parts of the last change, they broke in
- non-DevFS environments (e. g. during installation).
-
-2002/03/11 warly
-
- * share/rpmsrate: add bwbserver_linux in rpmsate for BeeWeb server
-
- * share/compssUsers.server: remove ICEWM choice
-
-2002/03/11 Yves Duret <yduret@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: added yduret entry in user.
-
-2002/03/11 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: add Rage Mobility as bad card for XF4 (was already bad
- card for XF3) (gégé report).
-
-2002/03/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help file
-
- * share/po/de.po, share/po/DrakX.pot: updated GErman file
-
-2002/03/11 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm (Mount_point): when files exist in the chosen
- mount point, propose migration
-
- * install_steps_interactive.pm: search /commercial/i instead of
- /Application/ before showing the commercial license
-
- * standalone/drakboot, bootloader.pm: fix Stew sucks
-
- * install2.pm, install_steps.pm:
- - default security level now set in miscellaneousBefore
- - default security level is 3 in meta_class server
-
- * install_steps_gtk.pm:
- - remove the hack for not displaying Utilities in classic meta_class
- - new compssUsers groups for the server meta_class
- search /commercial/i instead of /Application/ before showing the
- commercial license
-
- * install_any.pm:
- - fix the setting of compssUsersChoices in auto_install when it is
- empty
- - set the default compssUsersChoices adapted to the server meta_class
-
- * Makefile: upload the various compssUsers* (esp. compssUsers.server)
-
- * share/compssUsers: remove "Utilities" here instead of removing it
- hackily in install_steps_gtk
-
- * share/compssUsers.server: fix the path=Utilities for the Utilities
- section
-
-2002/03/11 yduret
-
- * standalone/scannerdrake: re-re-re-re-re-re-uncomment the pkgs check
- line.
-
-2002/03/10 chipaux
-
- * share/po/fr.po: Corrected few typo mistakes.
-
-2002/03/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps.pm: gcize damienization
-
- * share/rpmsrate: put userdrake together with drakconf so that
- userdrake is not missing (till)
-
-2002/03/10 siegel
-
- * share/po/help_xml2pm.pl: added tag filename
-
- * any.pm: added missing i18n _()
-
- * share/po/de.po: update
- and still fixes ...
- updates
- update
-
-2002/03/10 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Protect the Star Office/OpenOffice.org configuration against
- manual changing of the "update-alternatives" assignment of the "lpr"
- command.
-
- * detect_devices.pm: Made USB printer auto-detection more stable and
- reliable.
-
-2002/03/10 yduret
-
- * standalone/scannerdrake: added ASK DEVICE support
-
- * scanner.pm: added ASK support for more interactiveness during
- configuration
-
-2002/03/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: comply better to ClientID stuff
-
-2002/03/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated po file
-
-2002/03/09 yduret
-
- * standalone/scannerdrake: added sum up at the end
- uncomment line that checks if sane rpm is installed or not (thx gc).
- i sux,
-
-2002/03/08 dam's <damien@mandrakesoft.com>
-
- * standalone/drakproxy: drakproxy rewritten
- working drakproxy
-
- * install_steps.pm: corrected network up/down when network install
-
- * standalone/drakfont: ergonomy changed to fit in mcc
- corrected network up/down when network install
-
- * network/network.pm: proxy settings corrected
-
-2002/03/08 fabman
-
- * share/po/es.po: updated spanish translation
-
-2002/03/08 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed allowNVIDIA_rpms to take care of new kernel naming
- conventions.
-
- * standalone/XFdrake: fixed NVIDIA support to use newer kernel naming
- conventions.
-
- * Xconfigurator.pm: fixed possible additional XFree packages not installed
- if server is already
- installed.
-
-2002/03/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: missing translations + a few changes
-
- * mdk-stage1/probing.c: have 4 seconds of delay for usb stuff
- to show up rather than seconds
-
-2002/03/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po, share/po/it.po: updated po files
-
- * share/po/es.po: corrected typo
-
- * share/po/da.po: updated Danish file
-
- * lang.pm, share/locales-skeleton.tar.bz2: Added symlinks in
- locales-skeleton so non primary chinese encodings
- can work
-
- * share/po/ar.po: updated po file
-
- * share/po/cy.po: removed the "translation" of licence, it was random
- text.
-
-2002/03/07 dam's <damien@mandrakesoft.com>
-
- * share/po/fr.po, modparm.pm: corrected
-
-2002/03/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/newt-frontend.c: english fix thx to till & phil
-
-2002/03/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po: updated po file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
-2002/03/07 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: removing quota choices for reiserfs
-
-2002/03/07 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: make gc happy
-
- * modparm.pm, share/po/fr.po: corrected
-
- * standalone/draknet: corrected network/internet restart when already
- connected
-
- * network/netconnect.pm: corrected bad previous behaviour
-
- * standalone/drakfont: corrected bad system command
-
- * share/advertising/02-internet_icon.png,
- share/advertising/05-contcenter_icon.png,
- share/advertising/10-MDKexpert_icon.png, share/advertising/06-user.pl,
- share/advertising/08-games.pl, share/advertising/02-internet.pl,
- share/advertising/03-graphic_icon.png, share/advertising/07-server.pl,
- share/advertising/12-MDKstore_icon.png,
- share/advertising/06-user_icon.png,
- share/advertising/07-server_icon.png, share/advertising/09-MDKcampus.pl,
- share/advertising/10-MDKexpert.pl, share/advertising/05-contcenter.pl,
- share/advertising/04-develop.pl,
- share/advertising/09-MDKcampus_icon.png,
- share/advertising/12-MDKstore.pl, share/advertising/03-graphic.pl,
- share/advertising/04-develop_icon.png,
- share/advertising/08-games_icon.png: changed icon sizes
-
-2002/03/07 fcrozat
-
- * share/rpmsrate: Evolution is not dependent on GNOME selection (not
- require gnome-core)
-
-2002/03/07 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: avoid destroying some files in /etc.
-
- * install_steps_interactive.pm: fixed package tree with a given medium.
-
- * any.pm: fix autologin sometimes activated without user intervention.
-
-2002/03/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: generate_automatic_stage1_params: also save
- the interface number in case the machine will
- have several interfaces; clean code a bit
-
- * mdk-stage1/network.c: better error msg regarding pcmcia net
- adapters supported either with pcmcia.img
- or network.img (amaury sucks)
-
- * install_steps_auto_install.pm: in replay mode, since
- $o->{interactiveSteps}
- exists, we can't simply ||= @graphical_steps,
- we need to push to ensure that the
- @graphical_steps is always honoured
-
- * standalone/drakgw:
- - call net_monitor to disable internet
- connection before network-restart
- - user return value when status'ing the
- initscripts rather than grepping their
- text output
-
- * modules.pm: try to avoid segfaulting probeall stuff
- add ns83820 gigabit (goes to other.img)
-
- * rescue/rescue-doc: english fixes thx to phil
-
-2002/03/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * standalone/drakfont: Added a missing _( ) around a text
-
- * share/po/vi.po, share/po/cy.po, share/po/hu.po, share/po/id.po: updated
- po files
-
- * share/po/ko.po, share/po/ca.po, share/po/tr.po: commented out the
- translations using argument switching (not yet handled by DrakX)
-
- * bootlook.pm, standalone/drakboot: i18n changes
-
- * keyboard.pm: corrected the locale->keyboard list building
- make keyboard selection choose first the 5 first chars of lang;
- then the 2 first chars;
-
- * share/po/eu.po: commented out the translations using argument switching
- (not yet handled by DrakX)
- updated po file
-
-2002/03/07 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix fileshare custom config
- fix *some* stew errors
-
- * bootloader.pm: "--timeout=" must be after terminal
- add --timeout=... for "terminal serial ..." line in grub's menu.lst
- fix *some* stew errors
-
- * install_any.pm: don't have the adsl & modem passwords in report.bug
-
- * detect_devices.pm (zips__faking_ide_scsi): fix returned value in
- standalone
- (getSCSI): don't call isFloppyOrHD for ZIPs (lowers the number of kernel
- error when there is no floppy)
-
- * fs.pm: removing quota choices for reiserfs
-
-2002/03/07 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * any.pm, bootlook.pm, standalone/drakboot, bootloader.pm: drakboot
- functionality for PPC
-
-2002/03/07 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed bug of network not being started by Printerdrake
- during installation.
-
-2002/03/07 warly
-
- * share/compssUsers.server, share/compssUsers, share/rpmsrate: update
- server, merge with normal rpmsrate
-
-2002/03/06 dam's <damien@mandrakesoft.com>
-
- * standalone/drakautoinst: corrected HASH and ARRAY label
-
-2002/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po, share/po/no.po, share/po/cy.po: updated po file
-
-2002/03/06 Pixel <pixel@mandrakesoft.com>
-
- * standalone/fileshareset (nfs_exports::update_server): ensure portmap is
- running
-
-2002/03/06 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: corrected font stuff
-
- * standalone/drakautoinst: corrected HASH and ARRAY label
-
-2002/03/06 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: no 3D with Utah GLX (XF 3.3) if more than 800 MB.
-
- * pkgs.pm: fixed error when using multiple removable media and user
- aborted installation
- (for some other error) and hdlists cannot be retrieved.
- add save of synthesis too when partitions are reformated, so that urpmi
- is happy after.
- fixed when hdlist gives no new package (new name) but only obsoleted
- package or
- updated package, ie security updates may appreciate.
-
- * install_any.pm: update for newer pkgs module (fix for abort during
- installation).
-
- * rescue/tree/etc/oem: allow oem script to be executable from standard cd
- set (powerpack or other).
-
-2002/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po: updated po file
- updated pot file
-
- * share/po/fr.po, share/po/cy.po, share/po/id.po, share/po/zh_TW.po:
- updated pot file
- updated some po files
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/nl.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/it.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
-2002/03/06 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: add @preferred libxpm4
-
- * lang.pm: fix typo in %xim (for chineese)
- - create the kde share/config's directory, so that kde config files
- are created in any case
- - in user_only localedrake, ensure the /etc/sysconfig/i18n is taken
- into account when ~/.i18n doesn't exist (thanks to F.Crozat)
-
- * install_any.pm: ensure the fstab is kept on upgrade
- (g_auto_install): use "interactiveSteps" field instead of pushing in
- @install_steps_auto_install::graphical_steps
-
- * standalone/localedrake: when called by kcontrol with --apply, don't
- modify kde config files, kcontrol takes care of it more nicely
-
- * diskdrake/interactive.pm: translate the actions
- choose to activate crypto. type password. unselect encryption. Select
- encryption again, you were not asked for password. Fixed
- use formatError
-
- * bootloader.pm (add_append): don't add to entries of type 'other'
-
- * devices.pm (find_free_loop): fix
-
- * install_steps_interactive.pm, install_steps.pm: ensure the fstab is kept
- on upgrade
-
- * fsedit.pm: do not allow encrypted /var
-
-2002/03/06 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * standalone/drakxtv: print an error message if xawtv isn't installed
- fix conflict between i18n and complete signal handler (ie return key
- and not value)
-
-2002/03/06 warly
-
- * share/rpmsrate: remove abiword
-
-2002/03/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/probe.c: an old sucking PCI card needs oldskool
- i82365 :-((, ugly patch
-
-2002/03/05 warly
-
- * share/rpmsrate: add Fred Bastok modif
- remove too many duplicate in i18n packages that are now automatically
- added
-
-2002/03/05 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * modules.pm: Add USB2 controller
-
-2002/03/05 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: corrected expert option in install mode
- added expert mode
-
- * my_gtk.pm: greater interstice
-
- * modparm.pm: cosmetic
- gzipped modules handled
-
-2002/03/05 fcrozat
-
- * share/rpmsrate: Install xlockmore when installing gnome, since
- xscreensaver can't lock
- root desktop..
-
-2002/03/05 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: deactivate v4l module if DRI is enabled and r128
- driver used.
-
- * install_steps.pm: added auto restore of some files (/etc/profile) needed
- by upgrade (from .rpmnew).
- added log for hasNetwork (so that we can understand why installUpdates
- do nothing).
-
- * crypto.pm: avoid trying to find hdlist-updates.cz in existing medium
- (instead of ftp one).
-
- * fs.pm: fixed hd install to allow using specific directory.
-
- * install_any.pm: fix duplicate synthesis.hdlist.xxx file present in
- /var/lib/urpmi, and
- furthermore uncompressed :-(
- fixed possible bug when generating synthesis file for urpmi
- installation.
-
-2002/03/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c, mdk-stage1/dhcp.h, mdk-stage1/network.c: save
- dhcp_hostname for stage2
-
- * install_any.pm: fix bug in generating automatic stage1
- params for http
-
- * modules.pm: aironet core sucking thing
-
-2002/03/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sr.po, share/po/sp.po: updated po files
-
-2002/03/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: if mem=nopentium is given on cmdline, have it after
- install
-
- * modules.pm (extract_modules): created (was done in load_raw)
-
-2002/03/05 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator.pm: use UseFBDev for r128 - PPC
-
-2002/03/05 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added support for HP's newest MF devices: HP OfficeJet
- D series, HP LaserJet 33xx MFP.
- Fixed bug of printerdrake sometimes assuming the user has an MF device
- when he has typed the device file name in the expert mode.
-
-2002/03/05 yduret
-
- * bootlook.pm: fix nobody bug
-
- * standalone/logdrake: mail alert: use eval {} to catch wizcancel
-
-2002/03/04 dam's <damien@mandrakesoft.com>
-
- * modparm.pm: corected weirdness, I suck
-
-2002/03/04 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fix scroll total to match reality.
- fixed interpretation of size of package when doing an install (this can
- be
- severe, need testing).
-
-2002/03/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cy.po, share/po/id.po: updated po file
-
-2002/03/03 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm (gtkicons_labels_widget): since style is not set either, use
- the widget and ask it the style->font. This *works*
- (gtkicons_labels_widget): pass the style instead of directly passing the
- font
-
-2002/03/03 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Let Star Office/OpenOffice.org configuration corrcet a bug
- in the PostScript produced by these programs so that the Euro symbol is
- printed correctly.
-
-2002/03/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated po file
-
-2002/03/02 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm: better name for windobe new 0x42 special id (their
- own LVM marker)
-
- * detect_devices.pm: better jaz detection (thanks to Randy Welch)
-
-2002/03/02 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Replaced "Open Office" by "OpenOffice.org".
-
-2002/03/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po, share/po/da.po, share/po/vi.po, share/po/hu.po: updated
- po files
-
- * share/po/tr.po: updated po file
-
-2002/03/02 Pixel <pixel@mandrakesoft.com>
-
- * share/list: add lvreduce & lvextend
-
- * detect_devices.pm: fix ide zip name when there are already some other
- SCSI drives
- ZIPs and Jazz's are not floppies
-
- * diskdrake/interactive.pm (Resize): ensure we call lv_resize from lvm and
- adjust_* for normal partitions, even for destructive resizes
-
-2002/03/02 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Replaced "Open Office" by "OpenOffice.org".
-
-2002/03/01 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: fix gc's bulshit
-
-2002/03/01 dam's <damien@mandrakesoft.com>
-
- * services.pm: corrected translation used for shell command
-
- * my_gtk.pm: style & font correction
-
-2002/03/01 François Pons <fpons@mandrakesoft.com>
-
- * share/rpmsrate: updated INSTALL category with NOCOPY new flag added.
-
- * rescue/tree/etc/oem: added ext3 support.
-
- * share/rpmsrate.server: synced with rpmsrate INSTALL category.
-
- * install_any.pm: reset correct setup_postinstall_rpms calling.
- removed some card where 3D is not installed by default:
- Riva128, Radeon 8500 and Rage Mobility card.
- removed staling debug code.
- fixed bad copied package (if one is not found).
-
- * tools/oem-prepare: added handling of newer rpmsrate format with INSTALL
- category.
-
- * pkgs.pm: added pixel comments for handling INSTALL category and NOCOPY
- handling.
- only copy package in INSTALL category with a rate of at least 2.
-
-2002/03/01 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: a few missing trads
- please translators, keep two newlines when
- there are two newlines in original string,
- it's on purpose
-
-2002/03/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/cs.po,
- share/po/af.po: updated po files
-
- * share/po/fr.po: fixed two typos
- small corrections (non breakable spaces)
-
-2002/03/01 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: handle leaving X for both Xdrakres and XFdrake (=>
- Xdrakres completly obsolete)
-
- * standalone/localedrake: restrict localedrake to installed lang
-
- * lang.pm: restrict localedrake to installed lang
- add 'C' in %charset2kde_font (so that english has normal fonts)
-
- * bootloader.pm:
- - do not indent "disk=... bios=..."
- - $lilo->{first_hd_device} can be used to tell which drive is the
- first one
- for the BIOS. Useful when the bootloader is installed on a partition and
- not
- on the MBR.
- read "disk=/dev/xxx bios=0x8x" and save it
-
- * any.pm: restrict localedrake to installed lang
- ask which hard drive is the booting one when there is mixed kind of
- drives
- (scsi+ide, ide2+ide) and the bootloader is not installed on MBR
-
-2002/03/01 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Reduced the paths to search for Star/Open Office, on systems
- without these applications installed the search needed a significant
- time.
-
-2002/03/01 François Pons <fpons@mandrakesoft.com>
-
- * share/rpmsrate: updated INSTALL category with NOCOPY new flag added.
-
- * share/rpmsrate.server: synced with rpmsrate INSTALL category.
-
- * install_any.pm: removed staling debug code.
- fixed bad copied package (if one is not found).
-
- * pkgs.pm: added pixel comments for handling INSTALL category and NOCOPY
- handling.
- only copy package in INSTALL category with a rate of at least 2.
-
-2002/03/01 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: add hostname/domain in dhcp negociation,
- thx to david@eastcott.net
-
- * share/po/fr.po: please translators, keep two newlines when
- there are two newlines in original string,
- it's on purpose
-
-2002/03/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/zh_TW.po, share/po/hu.po: updated po files
-
-2002/03/01 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: handle leaving X for both Xdrakres and XFdrake (=>
- Xdrakres completly obsolete)
-
- * detect_devices.pm: add is_a_recent_computer()
-
- * any.pm: call dcop as user
-
- * lang.pm: add 'C' in %charset2kde_font (so that english has normal fonts)
- switch en_GB, *_CH, da, es@tradicional and wa to iso-8859-15
-
- * bootloader.pm: read "disk=/dev/xxx bios=0x8x" and save it
-
- * mouse.pm: special case for non detected usb interface on a box with no
- mouse.
- we *must* find out if there really is no usb, otherwise the box may
- not be accessible via the keyboard (if the keyboard is USB)
- the only way to know this is to make a full pci probe
-
-2002/02/28 dam's <damien@mandrakesoft.com>
-
- * standalone/drakbackup: bugfixs
- corrected translation for crontab
-
- * modparm.pm: corrected modinfo path for isa modules during install
-
-2002/02/28 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: try to fix if no chosen width has been found.
- removed Radeon 8500 from DRI capable cards.
-
- * rescue/tree/etc/oem: added curl as a bonus for oem install (it will be
- used by urpmi)
- added a2ps as a bonus (it fetch tetex where oem limited disk usage do
- not agree
- a lot).
- fixed bad copy of install packages.
-
- * tools/oem-prepare: added curl as a bonus for oem install (it will be
- used by urpmi)
- added a2ps as a bonus (it fetch tetex where oem limited disk usage do
- not agree
- a lot).
- fixed bad copy of INSTALL packages.
-
-2002/02/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install2.pm: more precise msg when can't access kernel modules because
- we still have many dumb people on cooker asking what's going on
-
- * install_steps_interactive.pm: small english fix
-
-2002/02/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/de.po, share/po/no.po: updated po files
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/is.po, share/po/hu.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
- * share/po/sv.po: updated Swedish file
- updated pot file
-
-2002/02/28 Pixel <pixel@mandrakesoft.com>
-
- * rescue/make_rescue_img: resolve conflicts for short keytable names (eg:
- "no" could be either "no-dvorak" or "no-latin1")
-
- * keyboard.pm (loadkeys_files): ensure each file appear only once
-
-2002/02/28 siegel
-
- * share/po/de.po: and another part of updates
- updates
-
-2002/02/28 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * share/po/fr.po: last translation but not least.
- further updates
- update french translation
-
-2002/02/28 dam's <damien@mandrakesoft.com>
-
- * share/themes-marble3d.rc: rechanged bg for camille
-
- * standalone/drakbackup: corrected translation for crontab
-
-2002/02/28 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed bad copy of install packages.
-
- * tools/oem-prepare: fixed bad copy of INSTALL packages.
-
- * Xconfigurator.pm: removed Radeon 8500 from DRI capable cards.
-
-2002/02/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/aliases, rescue/list: include /sbin/fsck.ext3 since our users are
- so dumb
-
-2002/02/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_TW.po: updated Chinese file
-
-2002/02/28 Pixel <pixel@mandrakesoft.com>
-
- * rescue/make_rescue_img: resolve conflicts for short keytable names (eg:
- "no" could be either "no-dvorak" or "no-latin1")
-
- * keyboard.pm (loadkeys_files): ensure each file appear only once
-
- * bootloader.pm: add "nowarn" in lilo.conf
-
- * install_steps.pm, fs.pm: use the "soft" option by default for /mnt/nfs
- and for "diskdrake --nfs"
-
-2002/02/28 sdupont
-
- * standalone/drakfont: including 'su' mode on drakfont.
-
-2002/02/28 siegel
-
- * share/po/de.po: updated missing strings
-
-2002/02/28 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Re-activated function to specify a CUPS server in
- another network and to switch to manual CUPS configuration.
- - Fixes/Improvements on Star Office/Open Office support:
- o When one switches the spooler, the entries of the printers under the
- old spooler are removed from Star Office/Open Office
- o Printers on remote CUPS servers (which are known through
- broadcasting)
- can be added to Star Office/Open Office
-
- * share/rpmsrate.server, share/rpmsrate: Added "curl" to install section,
- it is needed by printerdrake.
-
- * printer.pm:
- - Fixes/Improvements on Star Office/Open Office support:
- o When one switches the spooler, the entries of the printers under the
- old spooler are removed from Star Office/Open Office
- o Printers on remote CUPS servers (which are known through
- broadcasting)
- can be added to Star Office/Open Office
-
-2002/02/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: updated Basque file
-
-2002/02/27 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm:
- - Improved fully automatic adding of printer queue:
- o Ask for a queue name if more than one printer is detected
- o Let user confirm the model automatically chosen from the database
- o Set correct paper size according to the language/country
- - When one chooses a "CUPS + GIMP-Print" driver now all important
- options
- are displayed directly (without needing "Advanced" button).
- - Made less warning appearing on the console from where "printerdrake"
- was
- called.
-
-2002/02/27 fabman
-
- * share/po/es.po: converted to UTF-8
-
-2002/02/27 François Pons <fpons@mandrakesoft.com>
-
- * crypto.pm: fix missing version listed when doing update.
-
-2002/02/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: a few translations
-
- * mdk-stage1/rescue-gui.c, rescue/restore_ms_boot, rescue/list.i386,
- rescue/make_rescue_img: add "restore Windows Boot Loader" to rescue
-
- * install_steps_interactive.pm: formatAlaTex for congratz msg
- xfs + bootdisk = warning_msg
-
- * share/rpmsrate: flightgear is now fully lowercase
- glaxium
-
- * mdk-stage1/pcmcia_/probe.c: add Keld Jørn Simonsen <keld@dkuug.dk>'s O2
- Micro
- CardBus controller, and two other PCI entries which
- have close descriptions
-
- * mdk-stage1/pcmcia_/merge_from_pcitable: misc
- also report when pcitable is "too old"
- write a short perl program to easily merge new
- cardbus controllers from pcitable into probe.c
-
-2002/02/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eu.po: updated po file
-
-2002/02/27 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: simplify pyDict
-
- * install_steps_interactive.pm: ensure a keyboard is only once available,
- either in advanced or normal, but
- not in both (tx2fredl)
-
- * share/po/da.po:
- - it is UTF-8
- - fix line splitting
-
- * lang.pm: workaround iso-8859-1 charset based languages not displayed
- correctly at install
- - %lang2country is the authority, so if the country given by
- %lang2country doesn't exist in KDE, return C
- - fix be,sp,sr
- - s/def/default/ (typo)
- - add some utf kde fonts
-
-2002/02/27 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * share/po/fr.po: update french translation
-
- * standalone/drakxtv:
- - simplify an ACTION||fallback;fallback into ACTION;fallback
- - print a message saying that xawtv can be used now at the end of the
- channels auto-probing in case of direct use from cl and not from
- XawTV wrapper (from qa test) aka let the world be better :-)
-
- * share/po/br.po: minor update
- update brezhoneg translation
-
-2002/02/26 dam's <damien@mandrakesoft.com>
-
- * modparm.pm: corrected bad sprintf
-
-2002/02/26 fabman
-
- * share/po/es.po: updated spanish translations
-
-2002/02/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: version 8.2
-
-2002/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po, share/po/sv.po, share/po/hu.po: updated po files
-
-2002/02/26 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm, diskdrake/removable.pm,
- diskdrake/interactive.pm: propose some mount points for
- removable/nfs/smb
-
- * install_steps_interactive.pm: if no sound card are detected AND the user
- selected things needing a sound card, propose a special case for ISA
- cards
-
- * share/rpmsrate: add sndconfig in INSTALL (installed when user say Yes
- when asked for a ISA
- sound card)
-
- * my_gtk.pm (@icon_paths): ease testing
-
-2002/02/26 siegel
-
- * share/po/de.po: updates
-
-2002/02/26 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: corrected ttf/TTF and xfs restart
-
- * share/logo-mandrake.png: new logo
-
-2002/02/26 fabman
-
- * share/po/es.po: updated spanish translations
-
-2002/02/26 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fix translation of test program.
-
-2002/02/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/libstdio/fclose.c: don't segfault when fclose(NULL)
-
- * share/po/fr.po:
- - explain where to put nbsp spaces, explain
- what's nbsp spaces, explain how to compose them
- - add a few missing nbsp spaces
- - translate a few more things
-
-2002/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * any.pm: fixed English typo
-
-2002/02/26 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm, diskdrake/removable.pm,
- diskdrake/interactive.pm: propose some mount points for
- removable/nfs/smb
-
- * Xconfigurator.pm: make perl_checker happy
- have "Ok More Show all" instead of "Ok Cancel Show all"
- set the locale properly instead of setting the translated messages in
- the script
-
- * any.pm:
- - zips() now return devices ending with "4", raw_zips() is the old
- zips()
- - rdvd handling
- - add .conf for /etc/devfs/conf.d/ files
- (devfssymlinkf): use /etc/devfs/conf.d/name.conf instead of putting the
- symlink in lib/dev-state
-
- * share/rpmsrate: add sndconfig in INSTALL (installed when user say Yes
- when asked for a ISA
- sound card)
- add xine in VIDEO 4
-
- * install_steps.pm:
- - zips() now return devices ending with "4", raw_zips() is the old
- zips()
- - rdvd handling
- - add .conf for /etc/devfs/conf.d/ files
- don't add mem=nopentium anymore. kernel people says it's not needed and
- bad
- for performance. It also means any bug must be addressed to them
- create /dev/dvd for DVDs
-
- * my_gtk.pm (@icon_paths): ease testing
-
- * lang.pm: create bindtextdomain which does only part of the load_mo job
-
- * install_steps_interactive.pm: if no sound card are detected AND the user
- selected things needing a sound card, propose a special case for ISA
- cards
-
- * detect_devices.pm:
- - zips() now return devices ending with "4", raw_zips() is the old
- zips()
- - rdvd handling
- - add .conf for /etc/devfs/conf.d/ files
- cleanup
-
- * fs.pm:
- - zips() now return devices ending with "4", raw_zips() is the old
- zips()
- - rdvd handling
- - add .conf for /etc/devfs/conf.d/ files
-
-2002/02/26 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: Ti Powerbook uses non-std 1152x768, rather than
- 1152x864
-
-2002/02/26 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * standalone/drakxtv: use "xvt -T" rather than "xvt --title": now not only
- we support rxvt
- and xterm but konsole too.
- the only one missing is gnome-terminal which has -t but not -T
- update comments
- - remove useless "no_edit => 1"
- - use interactive_gtk to determine if we're runned under X11 (ie
- authorized acces to X11 server, X11 context, ...)
- - add a note to remember that we should add a method to detect if we
- run under X11 if/when we implement interactive_qt
- - simplify code :
- * remove is_tv and simplify its code to be a one-liner (replace a
- foreach by a scalar context)
- * use format to prevent reverse lookup on scantv run thus
- enabling to reverse the initial hash table
- - all cases (newt, gtk, wt/wo xvt, ...) have been re tested on real
- hw.
-
-2002/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated po file
-
-2002/02/26 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: remove passwords and realnames from report.bug
-
-2002/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated po file
-
-2002/02/26 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: remove passwords and realnames from report.bug
-
-2002/02/25 dam's <damien@mandrakesoft.com>
-
- * any.pm, modparm.pm: corrected modules parameters functions
-
- * standalone/drakfont: debug
-
-2002/02/25 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: fixes for cursor or
- nasty pixel displayed using syslinux-1.67-3mdk
-
-2002/02/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: don't put accents for bootloader, we can just use 7bit
- chars
- (titi sucks bigtime)
- add a few nbsp spaces
-
- * rescue/list: add mt-st DAT stuff for joeghi (ghibo)
-
-2002/02/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2002/02/25 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: ignore-table is a global flag, so put it there (when
- needed)
-
- * standalone/drakboot: add --testing
-
- * modules.pm, install_steps.pm, fs.pm, detect_devices.pm: use ide-scsi for
- ide zips
-
- * install_steps_interactive.pm: sort the list of keyboards
-
-2002/02/25 Thierry Vignaud <tvignaud@mandrakesoft.com
-
- * share/po/fr.po: fix a typo (thanks gc)
-
-2002/02/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ru.po, share/po/sp.po, share/po/ca.po, share/po/th.po,
- share/po/uk.po, share/po/es.po, share/po/eo.po, share/po/ro.po,
- share/po/sv.po, share/po/sr.po, share/po/da.po, share/po/el.po,
- share/po/et.po, share/po/cs.po, share/po/tr.po, share/po/az.po,
- share/po/eu.po: updated some po files
-
-2002/02/24 Pixel <pixel@mandrakesoft.com>
-
- * share/keyboards.tar.bz2: fix permission
-
-2002/02/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cy.po, share/po/Makefile: updated Welsh file
-
- * share/po/zh_CN.po, share/po/DrakX.pot, share/po/eu.po, share/po/vi.po,
- share/po/wa.po, share/po/zh_TW.po: udated Vietnamese file
-
- * install_steps_interactive.pm: removed useless _( ) around a string
- displayed in English only
-
- * share/po/be.po, share/po/bg.po, share/po/sk.po, share/po/ar.po,
- share/po/sl.po, share/po/br.po, share/po/bs.po, share/po/sv.po,
- share/po/af.po: updated some po files
-
-2002/02/23 Pixel <pixel@mandrakesoft.com>
-
- * interactive_newt.pm:
- - use simplify_string to ensure multi-line and too long strings are
- not used
- (hacky, but no other solution)
- - set $::setstep like interactive_gtk is doing (??)
-
- * partition_table_empty.pm: handle MBR containing the same character (0 or
- "l")
-
- * diskdrake/interactive.pm: not_edit'able filesystem type (allow esp. a
- nicer newt version)
-
- * devices.pm (devices::make): following a good advice from Andrej
- Borsenkow, return the
- file even if the device file doesn't exist the caller will fail or not.
- The
- advantage is better compatibility than raising an exception
- devices::make doesn't mknod with devfs
-
- * detect_devices.pm: no need to catch the exception from devices::make
- anymore
- devices::make doesn't mknod with devfs
-
- * fs.pm: nicer error message when mount fails
-
- * share/rpmsrate: adding gphoto2
-
- * install_steps_interactive.pm: when passwords do not match, focus on
- first password entry, not the second (thanks to garrick)
-
- * Xconfigurator_consts.pm: remove Option "sw_cursor" for "SiS 6326" since
- it's already handled in Xconfigurator.pm
-
- * my_gtk.pm: fix @icon_paths to include /usr/share/libDrakX/pixmaps
- (thanks to garrick)
-
- * modules.pm: remove "-f" option for insmod
-
-2002/02/23 siegel
-
- * share/po/de.po: fixed silly error
- updates
-
-2002/02/23 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Added automatic configuration of printers
- in Star Office and Open Office.
-
-2002/02/22 dam's <damien@mandrakesoft.com>
-
- * share/advertising/02-internet.pl, share/advertising/07-server.pl,
- share/advertising/11-consul.pl, share/advertising/09-MDKcampus.pl,
- share/advertising/01-gnu.pl, share/advertising/13-Nvert.pl,
- share/advertising/06-user.pl, share/advertising/10-MDKexpert.pl,
- share/advertising/04-develop.pl, share/advertising/05-contcenter.pl,
- share/advertising/12-MDKstore.pl, share/advertising/03-graphic.pl,
- share/advertising/08-games.pl: corrected advertising text
-
- * share/po/fr.po: corrected bad translation
-
- * my_gtk.pm: corrected icon paths
-
-2002/02/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: exit the pur_gtk version after launching the wizard
- version
-
- * any.pm: better rephrasing
- change name and description of security levels
-
- * share/rpmsrate: powermanga: 2 -> 3
-
-2002/02/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/DrakX.pot: updated Danish file
-
- * lang.pm: start of support of kde fonts
- fixed some keyboard names
-
- * keyboard.pm: fixed some keyboard names
- added the two ?win_toggle choices
- some info useful for keyboard handling
-
- * share/keyboards.tar.bz2: fixed some keyboard names
-
- * share/po/hu.po: updated hungarian file
-
-2002/02/22 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: even smarted process to kill selection
-
- * lang.pm: fix 2 entries in charset2kde_font
- - remove non needed entries in lang2country
- - fix syntax errors
- - rename kdefont in charset2kde_font
- - much cleanup
- use invalid instead of unknown for errors when checking
- put back the less deep langs
- have the tree less deep (esp. nicer when not displaying UTF-8 entries)
- not translating in console installs (esp. newt) when the font is missing
- restrict the langs displayed to non utf8 during install
- fix warning message
- disable perl warnings when checking
- make perl_checker happy
-
- * devices.pm: add atibm (thanks to Robin Pollard)
-
- * bootloader.pm: put ignore-table to disable lilo's partition table
- checking
- (esp. the checking of the CHS geometry vs linear geometry)
-
- * Xconfigurator_consts.pm: fix syntax typo
-
- * Makefile:
- - exclude urpm from perl_checker
- - add checking keyboard.pm
-
- * install_steps_interactive.pm, install2.pm, install_steps.pm: not
- translating in console installs (esp. newt) when the font is missing
-
- * keyboard.pm: use invalid instead of unknown for errors when checking
- change the message
- disable perl warnings when checking
- - add checks for the various data structures
- - fix another typo for usb2drakxkbd
- fix typo
-
- * share/rpmsrate: add procmail in SYSTEM 4
- add samba-doc samba-winbind samba-swat
-
- * Xconfigurator.pm: workaround set_active failing
-
- * any.pm: use the setupBootloader help instead of setupBootloaderGeneral
- restrict the langs displayed to non utf8 during install
-
-2002/02/22 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv: update TODO list;
- explain what is HRC
-
- * share/po/fr.po: further translations
- update french translation
-
-2002/02/21 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: corrected icon list
-
-2002/02/21 fabman
-
- * share/po/es.po: updated spanish po file
-
-2002/02/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: spacecup no more exists
- armagetron is nice, no use to install gltron as well
- autoconf2.5 and automake1.5
-
- * interactive.pm: when not in X and needs su, use consolehelper now
- use consolehelper when no "kdeinit: kwin" process
- is running
-
-2002/02/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/Makefile, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/no.po, share/po/fi.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/21 Pixel <pixel@mandrakesoft.com>
-
- * lvm.pm, install_any.pm: ensure lvm tools don't need to be all installed
- at the same time
-
- * lang.pm, tools/make_mdkinst_stage2: LC_COLLATE and LC_CTYPE are
- getFile'd (cuz they are big, causing the .cz2 to be *big*)
-
- * share/rpmsrate: add kinput2-wnn4
-
-2002/02/21 siegel
-
- * share/po/de.po: update
-
-2002/02/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Removed "Manual configuration" button when "Local
- Printer" dialog is started from the queue modification menu (Recommended
- mode).
- Improved matching of printer names resulting from auto-detection with
- names in the database.
-
-2002/02/21 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: final batch of typos fixes (next time, please run a
- check speller)
- fix more typos
- update french translation;
- fix typos
-
- * diskdrake/interactive.pm: shorter displayed message
-
-2002/02/21 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: changed button label
-
- * standalone/icons/gmon.png, standalone/icons/categ.png,
- standalone/icons/verti.png, standalone/icons/drakbackup.540x57.png,
- standalone/icons/net_c.png, standalone/icons/ic82-system-40.png,
- standalone/icons/wiz_drakgw.png, standalone/icons/ic-drakfont-48.png,
- standalone/icons/ic82-back-up-16.png,
- standalone/icons/wiz_scannerdrake.png,
- standalone/icons/ic82-discdurwhat-40.png,
- standalone/icons/ic82-tape-40.png, standalone/icons/ic82-network-40.png,
- standalone/icons/smbnfs_default.png, standalone/icons/smbnfs_server.png,
- standalone/icons/hori.png, standalone/icons/wiz_draknet.png,
- standalone/icons/smbnfs_mounted.png, standalone/icons/wiz_firewall.png,
- standalone/icons/wiz_default_up.png,
- standalone/icons/ic82-back-up-32.png, standalone/icons/ic82-CD-40.png,
- standalone/icons/ic82-systemeplus-40.png,
- standalone/icons/ic82-back-up-48.png,
- standalone/icons/ic82-dossier-32.png, standalone/icons/net_d.png,
- standalone/icons/ic82-moreoption-40.png,
- standalone/icons/smbnfs_has_mntpoint.png, standalone/icons/tradi.png,
- standalone/icons/wiz_printerdrake.png,
- standalone/icons/wiz_default_left.png,
- standalone/icons/eth_card_mini2.png, standalone/icons/net_u.png,
- standalone/icons/ic82-users-40.png, standalone/icons/mdk_logo.png,
- standalone/icons/ic82-others-40.png, standalone/icons/ic82-when-40.png,
- standalone/icons/draknet_step.png, standalone/icons/drakfont.620x57.png,
- standalone/icons/ic82-where-40.png: added new gfx only standalone
-
- * pixmaps/categ.png, pixmaps/verti.png, pixmaps/ic82-moreoption-40.png,
- pixmaps/ic82-system-40.png, pixmaps/net_c.png,
- pixmaps/ic-drakfont-48.png, pixmaps/ic82-CD-40.png,
- pixmaps/ic82-when-40.png, pixmaps/ic82-back-up-32.png,
- pixmaps/draknet_step.png, pixmaps/ic82-dossier-32.png,
- pixmaps/ic82-back-up-48.png, pixmaps/smbnfs_server.png,
- pixmaps/ic82-discdurwhat-40.png, pixmaps/smbnfs_default.png,
- pixmaps/gmon.png, pixmaps/drakbackup.540x57.png,
- pixmaps/smbnfs_mounted.png, pixmaps/wiz_printerdrake.png,
- pixmaps/wiz_default_left.png, pixmaps/wiz_default_up.png,
- pixmaps/drakfont.620x57.png, pixmaps/ic82-tape-40.png,
- pixmaps/wiz_draknet.png, pixmaps/net_d.png,
- pixmaps/ic82-systemeplus-40.png, pixmaps/wiz_drakgw.png,
- pixmaps/mdk_logo.png, pixmaps/ic82-users-40.png,
- pixmaps/ic82-back-up-16.png, pixmaps/hori.png, pixmaps/tradi.png,
- pixmaps/smbnfs_has_mntpoint.png, pixmaps/eth_card_mini2.png,
- pixmaps/wiz_firewall.png, pixmaps/net_u.png, pixmaps/ic82-where-40.png,
- pixmaps/ic82-others-40.png, pixmaps/ic82-network-40.png,
- pixmaps/wiz_scannerdrake.png: removed gfx not used during install
-
-2002/02/21 François Pons <fpons@mandrakesoft.com>
-
- * crypto.pm: fixed another not seen 8.1 reference in label.
- fixed 8.1 release hard coded.
-
-2002/02/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fi.po: updated pot file
- updated Finnish file
-
- * help.pm: updated help file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/Makefile, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/21 Pixel <pixel@mandrakesoft.com>
-
- * share/themes/blueHeart-button4.png, share/themes-DarkMarble.rc,
- install_gtk.pm, share/themes/DarkMarble-button3_out.png,
- share/themes.rc, share/themes/blueHeart-brown_bg1.png,
- share/themes/DarkMarble-button3_in.png, share/themes-blueHeart.rc,
- share/themes/DarkMarble-check_on.png,
- share/themes/blueHeart-button1.png,
- share/themes/DarkMarble-check_off.png,
- share/themes/blueHeart-button2.png, share/themes/DarkMarble-gloom2.png,
- share/themes/DarkMarble-button3_in_prelight.png,
- share/themes/DarkMarble-button3_out_prelight.png: remove DarkMarble and
- blueHeart themes
-
- * bootloader.pm: have devfs=nomount for failsafe
-
- * Makefile.config, share/po/Makefile: make a difference between PMS and
- ALLPMS. For install, only use PMS
-
- * lvm.pm: ensure lvm tools don't need to be all installed at the same time
-
- * Makefile: template.in stuff removed
- make a difference between PMS and ALLPMS. For install, only use PMS
-
- * pkgs.pm: smarter choosing of processes to kill
-
- * tools/i386/netboot/make_boot_network: cleanup
-
- * modules.pm: add aic7xxx_old
-
- * install_any.pm: ensure lvm tools don't need to be all installed at the
- same time
- (remove_bigseldom_used): remove xf86Wacom.so & mkfs.xfs
- DarkMarble theme is removed
- (kdeicons_postinstall): remove this obsolete code
- no special case for installing imwheel
-
- * lang.pm, tools/make_mdkinst_stage2: LC_COLLATE and LC_CTYPE are
- getFile'd (cuz they are big, causing the .cz2 to be *big*)
-
- * network/smbnfs.pm, network/nfs.pm: nicer conditional displaying of nfs
- comment
-
-2002/02/21 siegel
-
- * share/po/de.po: update
- snapshot
-
-2002/02/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added "type => 'list'" to the printer modification
- menu, it appeared as a drop-down list during the installation.
-
-2002/02/21 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv: more translatable strings;
- hide scantv output on console;
- check that we're under X11 before running scantv in an xterm
-
-2002/02/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/doc/UPDATEMODULES: add an example on modules with options
- first line comment no more necessary
- s/row/column/, silly me
-
- * standalone.pm: explanations stuff: no reason to use "updated" at a place
- when we
- use "modified" at the rest of the locations..
-
-2002/02/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po: updated Spanish file
- updated Spanish file
-
-2002/02/20 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (ejectCdrom): display "files still open:" for all
- processes when umounting fail
-
- * pkgs.pm: much simpler & stronger killing of still running processes
-
- * mouse.pm: USB|Generic is 3 button mice, add a USB 2 Button entry
-
-2002/02/20 dam's <damien@mandrakesoft.com>
-
- * share/themes-marble3d.rc: updated theme
-
- * network/adsl.pm: mgmt install corrected
-
-2002/02/20 daouda
-
- * share/rpmsrate:
- - same weight for rfbdrake in NETWORKING_REMOTE_ACCESS
- NETWORKING_REMOTE_ACCESS_SERVER
-
-2002/02/20 fcrozat
-
- * share/rpmsrate: Remove mozilla-psm from list, it is merged in mozilla
-
-2002/02/20 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem, tools/oem-prepare: synced with newer rpmsrate of
- DrakX and newer method to select INSTALL packages.
-
- * standalone/XFdrake: fixed NVIDIA package in urpmi db by directly using
- urpm library instead of
- parsing (now removed) depslist.ordered file.
-
- * Xconfigurator.pm: fixed default value if selecting a card (use previous
- one or existing one).
- added XFree 4 driver choice if Other|Unlisted is chosen.
- fixed cancel on card selection so that previous choice is not lost.
-
- * Xconfigurator_consts.pm: added @allbutfbdrivers and @alldrivers for
- listing XFree 4 drivers.
-
-2002/02/20 gbeauchesne
-
- * share/rpmsrate:
- - Add gcc3.0-c++ and libstdc++3.0-devel
- - Prefer gcc3.0-java over gcc-java
- - Remove BasiliskII-sheepnet since it does no longer exist
- - Add/prefer BasiliskII-jit over BasiliskII
-
-2002/02/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po: updated FRench file
-
- * share/po/es.po: updated Spanish file
- updated Spanish file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/eu.po, share/po/az.po,
- share/po/ru.po, share/po/pt_BR.po, share/po/hr.po, share/po/ko.po,
- share/po/cy.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/20 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: fix s/SILO/LILO/
-
- * fsedit.pm: have "with /usr" translated
-
- * install_steps_interactive.pm (loadSavePackagesOnFloppy): add a "Cancel"
- button
-
- * steps.pm: move installUpdates after configureX (workaround for bad
- timeouts during installing updates)
-
- * install_steps.pm, any.pm, standalone/draksec: factorize and update the
- reading of previous security level
-
-2002/02/20 siegel
-
- * share/po/de.po: update
-
-2002/02/20 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update french translations
-
-2002/02/20 dam's <damien@mandrakesoft.com>
-
- * share/advertising/13-Nvert.pl: changed toll free
-
- * my_gtk.pm: added mcc kill if wait message
-
- * standalone/logdrake: cosmetic change, mcc compliance
-
-2002/02/20 daouda
-
- * share/rpmsrate:
- - same weight for rfbdrake in NETWORKING_REMOTE_ACCESS
- NETWORKING_REMOTE_ACCESS_SERVER
-
-2002/02/20 fcrozat
-
- * share/rpmsrate: Remove mozilla-psm from list, it is merged in mozilla
-
-2002/02/20 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: fixed INSTALL category in rpmsrate for copying
- file when changing cd (was an
- limitation in read_rpmsrate when a package having a category and INSTALL
- caused
- INSTALL to be dropped).
-
-2002/02/20 gbeauchesne
-
- * share/rpmsrate:
- - Add gcc3.0-c++ and libstdc++3.0-devel
- - Prefer gcc3.0-java over gcc-java
- - Remove BasiliskII-sheepnet since it does no longer exist
- - Add/prefer BasiliskII-jit over BasiliskII
-
-2002/02/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/advertising/07-server.pl, share/advertising/01-gnu.pl: Improved
- English strings
-
- * share/po/hu.po, share/po/es.po, share/po/ar.po: updated Hungarian and
- Spanish files
-
-2002/02/20 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: remove fsck_option (obsolete)
-
- * share/po/fr.po: fix s/SILO/LILO/
-
- * fsedit.pm: have "with /usr" translated
-
- * install_steps_interactive.pm (loadSavePackagesOnFloppy): add a "Cancel"
- button
-
- * steps.pm: move installUpdates after configureX (workaround for bad
- timeouts during installing updates)
-
- * install_steps.pm, any.pm, standalone/draksec: factorize and update the
- reading of previous security level
-
-2002/02/20 siegel
-
- * share/po/de.po: snapshot
-
-2002/02/19 dam's <damien@mandrakesoft.com>
-
- * share/advertising/Makefile: new Makefile to install ads
-
-2002/02/19 fcrozat
-
- * share/rpmsrate:
- -Install gnome-vfs-extras when installing nautilus (to get samba
- browsing)
- -don't install nautilus-mozilla, it is pulled by nautilus
-
-2002/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * any.pm: english fix
-
-2002/02/19 Pixel <pixel@mandrakesoft.com>
-
- * share/advertising/Makefile: advertising installation cleanup
-
- * diskdrake/smbnfs_gtk.pm: ugly hack to fix die
-
-2002/02/19 siegel
-
- * share/po/de.po: updates for beta 3
-
-2002/02/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Changed button texts of "Do you want to auto-detect?"
- dialog.
-
-2002/02/19 dam's <damien@mandrakesoft.com>
-
- * share/advertising/Makefile: new Makefile to install ads
-
-2002/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * any.pm: report_bug: find syslog in /var/log if it's not in /tmp, add
- $prefix in front of /var/* when missing
- since we give "lilo.conf" in drakbug_report, let's also
- give "menu.lst"
-
-2002/02/19 Pixel <pixel@mandrakesoft.com>
-
- * share/advertising/Makefile: advertising installation cleanup
-
-2002/02/19 siegel
-
- * share/po/de.po: updates for beta 3
-
-2002/02/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Changed button texts of "Do you want to auto-detect?"
- dialog.
-
-2002/02/19 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: setting help
-
- * share/advertising/10-MDKexpert.png, share/advertising/07-server.png,
- share/advertising/05-contcenter.png, share/advertising/03-graphic.png,
- share/advertising/12-MDKstore_icon.png,
- share/advertising/06-user_icon.png,
- share/advertising/04-develop_icon.png,
- share/advertising/12-MDKstore.png, share/advertising/00-thanks.png,
- share/advertising/06-user.png, share/advertising/02-internet_icon.png,
- share/advertising/04-develop.png,
- share/advertising/05-contcenter_icon.png,
- share/advertising/10-MDKexpert_icon.png, share/advertising/13-Nvert.png,
- share/advertising/11-consul.png, share/advertising/03-graphic_icon.png,
- share/advertising/02-internet.png, share/advertising/07-server_icon.png,
- share/advertising/01-gnu.png, share/advertising/08-games.png,
- share/advertising/09-MDKcampus.png,
- share/advertising/09-MDKcampus_icon.png,
- share/advertising/08-games_icon.png: re-adding with -kb
- removing for re-adding with -kb
- added advertising for translation
-
- * share/advertising/essi.p: blah
- added advertising for translation
-
- * my_gtk.pm: new icon handler
-
- * Makefile.config: addde share/advertising/*.pl for translation
-
- * share/advertising/Makefile: new Makefile to install ads
-
- * share/advertising/00-thanks.pl, share/advertising/06-user.pl,
- share/advertising/08-games.pl, share/advertising/list,
- share/advertising/09-MDKcampus.pl, share/advertising/01-gnu.pl,
- share/advertising/11-consul.pl, share/advertising/13-Nvert.pl,
- share/advertising/02-internet.pl, share/advertising/07-server.pl,
- share/advertising/10-MDKexpert.pl, share/advertising/04-develop.pl,
- share/advertising/05-contcenter.pl, share/advertising/12-MDKstore.pl,
- share/advertising/03-graphic.pl: added advertising for translation
-
-2002/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * any.pm: report_bug: find syslog in /var/log if it's not in /tmp, add
- $prefix in front of /var/* when missing
- since we give "lilo.conf" in drakbug_report, let's also
- give "menu.lst"
-
-2002/02/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po, share/po/hu.po: updated Vietnamese and Hungarian files
-
-2002/02/19 Pixel <pixel@mandrakesoft.com>
-
- * share/advertising/Makefile: advertising installation cleanup
-
- * install2.pm: anchor the -IP match at the end of the string
- move loading /tmp/network from stage1 before doing the auto_install
- stuff to
- allow the -IP feature on auto_install file name
-
- * share/rpmsrate: add grub in 4 SYSTEM
-
-2002/02/19 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/printerdrake, printer.pm: Assured that the default page size
- is "Letter" for US/Canada and "A4" for the rest of the world.
- The "Description" field of a printer queue is filled in with printer
- manufacturer and model by default.
- Removed unused varaiables in /usr/sbin/printerdrake.
-
- * printerdrake.pm: Changed button texts of "Do you want to auto-detect?"
- dialog.
- Assured that the default page size is "Letter" for US/Canada and "A4"
- for the rest of the world.
- The "Description" field of a printer queue is filled in with printer
- manufacturer and model by default.
- Removed unused varaiables in /usr/sbin/printerdrake.
-
- * install_steps_interactive.pm: Replaced "a4" and "letter" by "A4" and
- "Letter" so that Foomatic recognizes
- the paper sizes.
- Also use "Letter" paper for "en_CA" and "fr_CA" locales.
-
-2002/02/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: when no net device found, print a msg to tell
- that now most pcmcia network adapters are supported
- with network.img
-
-2002/02/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help file
-
- * share/po/sp.po, share/po/zh_CN.po, share/po/DrakX.pot, share/po/th.po,
- share/po/es.po, share/po/fr.po, share/po/sr.po, share/po/de.po,
- share/po/sk.po, share/po/tr.po, share/po/eu.po, share/po/sl.po,
- share/po/vi.po, share/po/uk.po, share/po/wa.po, share/po/sv.po,
- share/po/zh_TW.po, share/po/it.po: updated pot file
-
-2002/02/18 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm, standalone/localedrake:
- - handle --kde_lang with optionally --kde_country
- - handle --apply
-
- * install_steps_gtk.pm: s/hbox/vbox for "Select Install Class"
-
-2002/02/18 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: new gfx
-
-2002/02/18 fcrozat
-
- * share/rpmsrate: Install Guppi when installing gnumeric
-
-2002/02/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: titi sucks again
-
-2002/02/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po: updated Slovak ile
- updated pot file
-
- * help.pm: updated help file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/lt.po, share/po/ar.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/bs.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/af.po:
- updated pot file
-
-2002/02/18 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm:
- - remove media_type cdrom-burner, use {capacity} instead
- - use /proc/sys/dev/cdrom/info to fill in the {capacity}
-
- * diskdrake/smbnfs_gtk.pm:
- - add Cancel
- - move "click here" in "Search servers" on the right side
- - remove Export
- - fix bug
-
- * share/rpmsrate: raise xsane in SCANNER (Yves Duret)
- raise mkisofs & cdrecord in BURNER
-
- * Xconfigurator.pm: workaround not having the right to connect to our new
- created test server.
- info about the pb (sorry for the french):
- quand on lance le serveur
- - via xdm/kdm/startx, ca utilise xauth, xhost est fermé
- - via X/xinit, xhost est ouvert sur localhost, xauth n'est pas utilisé
- *sauf* si X/xinit est lancé à partir d'un X *et* .Xauthority est non
- vide.
- dans ce cas, xhost est fermé, et aucun xauth n'est ajouté
- une conséquence, c'est que XFdrake ne peut pas accéder au X de
- test si XFdrake est lancé sous X ou "xauth list" est non vide
- exception: quand on lance le xdm/kdm en root, xhost n'est pas
- fermé,
- pas contre il est fermé en root & startx.
-
- * any.pm (fileshare_config): rework the custom message and launch
- userdrake
- (report_bug): add lilo.conf
-
- * standalone/localedrake:
- - handle --kde_lang with optionally --kde_country
- - handle --apply
- change the message & ask wether to logout or not
-
- * lang.pm:
- - handle --kde_lang with optionally --kde_country
- - handle --apply
- (lang2kde_lang): add missing valid_kde_langs
- fuzzy language finding between available langs when it doesn't match
- (useful for upgrades where fr_FR was fr_FR@euro)
-
- * diskdrake/interactive.pm: remove cdrom-burner from media_type set
-
- * install_steps_gtk.pm: s/hbox/vbox for "Select Install Class"
-
- * fs.pm (mount_options_unpack): add usrquota and grpquota for
- ext2/ext3/reiserfs/xfs
- - remove media_type cdrom-burner, use {capacity} instead
- - use /proc/sys/dev/cdrom/info to fill in the {capacity}
-
- * share/compssUsers: add EDITORS in Development/Development
- add EDITORS in Development/Development
-
-2002/02/18 yduret
-
- * bootlook.pm: remove aurora part (commented for the moment)
-
- * standalone/scannerdrake: HP OfficeJet support
- scsi/parport preliminary support
-
- * scanner.pm: update
- scsi parport preliminary support
- no more show unsupported scanner
- common output for ScannerDB update from sane *.desc files and from
- usbtable
-
-2002/02/17 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/interactive.pm: warn_if_renumbered now also done at install
-
-2002/02/17 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: have icewm-light in any case (to be used as a failsafe
- window manager)
- add hotplug, usbutils and usbview with the new flag USB
-
- * install_any.pm: hotplug now handled via rpmsrate and the USB flag
- add some log to know why umounting /tmp/image fail
-
- * diskdrake/interactive.pm: warn_if_renumbered now also done at install
- force scalar context for warp_text
-
- * share/po/id.xsl, share/po/help_xml2pm.pl: use xsltproc as a filter to
- remove entities
-
- * share/po/Makefile (clean): remove .memdump
-
- * any.pm (autologin): do not allow empty user name since no autologin can
- already be achieved by choosing "No"
-
- * install2.pm: do not use run_program::xxx, use directly "system" so that
- stdout is kept unchanged during "postInstall" execution
-
- * network/smb.pm: fix typo (s/nfs/smbfs/)
-
-2002/02/17 siegel
-
- * help.pm: new version for 8.2
-
- * share/po/de.po: new german version
-
- * share/po/help_xml2pm.pl: added check for missing xsltproc
- fix perl warnings after adding -w
-
- * share/po/.cvsignore: added .memdump
-
- * share/po/Makefile: allow me to work with a symlink to doc in this
- directory
-
-2002/02/16 Pixel <pixel@mandrakesoft.com>
-
- * lvm.pm:
- - LVs "device" field were containing "/dev/vg/number" whereas it must
- be "vg/name"
- - added lv_resize
-
- * diskdrake/interactive.pm: add Resize'ing mounted XFS on LVM
-
- * crypto.pm (mirrors): add a timeout via "alarm" (needs testing)
-
-2002/02/16 Pixel <pixel@mandrakesoft.com>
-
- * Xconfig.pm:
- - prefer XKB available from existing XF86Config over
- /etc/sysconfig/keyboard KEYTABLE
- - fix translating from /etc/sysconfig/keyboard KEYTABLE to XKB
-
- * diskdrake/interactive.pm: add Resize'ing mounted XFS on LVM
-
- * interactive_newt.pm: do not trash error messages if testing
-
- * lang.pm (country2lang): created
- (write): ensure it doesn't fail when kdeglobals is not writable (eg: the
- directory doesn't exist)
- (list): return the languages in a "specific" order (favours non utf8
- over utf8)
-
- * crypto.pm (mirrors): add a timeout via "alarm" (needs testing)
-
- * install_steps_interactive.pm (setupSCSI): when "clicked", ask "Do you
- have any SCSI interfaces" instead
- of assuming there is a SCSI interface and asking the driver name
-
- * lvm.pm:
- - LVs "device" field were containing "/dev/vg/number" whereas it must
- be "vg/name"
- - added lv_resize
- - call pvcreate with "-y -ff"
- - created LVs are notFormatted
-
- * interactive.pm:
- - fix non X + testing + su
- - since "interactive" takes care of "format" for type "combo", remove
- "format" (so that interactive_newt which switch to type "list" don't
- apply
- "format" once again)
-
- * standalone/localedrake: handle --kde_country=<country>
-
-2002/02/16 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (country2lang): created
- (write): ensure it doesn't fail when kdeglobals is not writable (eg: the
- directory doesn't exist)
- (list): return the languages in a "specific" order (favours non utf8
- over utf8)
- fix call to update_gnomekderc
-
- * standalone/localedrake: handle --kde_country=<country>
-
-2002/02/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
- * share/po/sk.po, share/po/cs.po, share/po/es.po: updated Czech, Spanish
- and Slovak files
-
-2002/02/16 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm: fix call to update_gnomekderc
- remove unused & unneeded special %lang2kde_lang
- - add lang::check
- - fix utf-ko -> utf_ko
- - fix utf-14 -> utf_14
- - modify share/config/kdeglobals
- - add charset2kde_charset, lang2country, lang2kde_lang
-
-2002/02/15 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: embedded mode correction
-
- * my_gtk.pm: highlight in gtk icon widget
-
- * share/themes/mdk-check_on.png, share/themes/mdk-toggle_off.png,
- share/themes/mdk-toggle_on.png, share/themes/mdk-check_off.png: new gfx
-
- * share/step-red.xpm, share/step-orange.xpm, share/step-orange-click.xpm,
- share/step-green-click.xpm, share/step-green.xpm, share/step-red-on.xpm,
- share/step-orange-on.xpm, share/step-green-on.xpm,
- share/step-red-click.xpm: new gfx
- new gfx
-
-2002/02/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po, share/po/fi.po, share/po/DrakX.pot, share/po/fr.po,
- share/po/wa.po, share/po/da.po, share/po/cs.po, share/po/hu.po,
- share/po/eu.po: updated Basque file; fixed a msgid change
-
- * share/po/sv.po: updated Swedish file
- updated Basque file; fixed a msgid change
-
-2002/02/15 Pixel <pixel@mandrakesoft.com>
-
- * run_program.pm: remove assigning STDIN to /dev/null since:
- - programs should not use STDIN
- - the "postInstall" script for auto_install's is more happy still
- having the STDIN.
-
- * diskdrake/smbnfs_gtk.pm, pixmaps/smbnfs_has_mntpoint.png,
- pixmaps/smbnfs_default.png, pixmaps/smbnfs_mounted.png,
- pixmaps/smbnfs_server.png: add icons showing if a mount-point is
- associated or if the share is mounted
-
- * pkgs.pm: fix typo
-
- * diskdrake/interactive.pm: use the new warp_text
-
- * install_steps.pm: use lang::charset2kde_charset
-
- * standalone/localedrake: lang::write doesn't need the filename anymore
-
- * any.pm: use 'combo' instead of 'type' for bootloader choice and security
- choice
- (requested by fredb&dadou)
-
- * interactive_gtk.pm: force scalar for Gtk::Label->new with warp_text
-
- * interactive.pm: favour "combo" over "list" in any case
-
- * Makefile (check): add lang::check checking
-
-2002/02/15 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update translation
-
-2002/02/14 Pixel <pixel@mandrakesoft.com>
-
- * standalone/lsnetdrake: adapt to the neater network::smb and network::nfs
-
- * network/smb.pm, network/smbnfs.pm, network/nfs.pm: cleaner & OOed code,
- with more code sharing
-
- * interactive_gtk.pm, diskdrake/interactive.pm: use the new warp_text
- feature
-
- * my_gtk.pm (ctree_set_icon): new function
-
- * diskdrake/smbnfs_gtk.pm: some cleanup, icons showing wether a
- mount-point is associated are coming
-
- * standalone/diskdrake: fix expert and testing options handling
-
-2002/02/14 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: embedded mode
- drakfont embedde mode
-
- * share/step-red-on.xpm, share/step-red.xpm, share/step-orange.xpm,
- share/step-orange-on.xpm, share/step-orange-click.xpm,
- share/step-green-click.xpm, share/step-red-click.xpm,
- share/step-green-on.xpm: new gfx
-
-2002/02/14 erwan
-
- * tools/i386/netboot/ni5010/pxegrub, tools/i386/netboot/epic100/stage1,
- tools/i386/netboot/epic100/stage2, tools/i386/netboot/3c90x/pxegrub,
- tools/i386/netboot/rtl8139/pxegrub, tools/i386/netboot/ni5210/nbgrub,
- tools/i386/netboot/otulip/stage1, tools/i386/netboot/otulip/stage2,
- tools/i386/netboot/exos205/nbgrub, tools/i386/netboot/eepro/stage1,
- tools/i386/netboot/eepro/stage2, tools/i386/netboot/3c529/nbgrub,
- tools/i386/netboot/smc9000/pxegrub, tools/i386/netboot/ne2100/stage1,
- tools/i386/netboot/ne2100/stage2, tools/i386/netboot/exos205/pxegrub,
- tools/i386/netboot/sis900/nbgrub, tools/i386/netboot/ne/stage1,
- tools/i386/netboot/ne/stage2, tools/i386/netboot/tulip/nbgrub,
- tools/i386/netboot/sk_g16/nbgrub, tools/i386/netboot/eepro100/pxegrub,
- tools/i386/netboot/tiara/nbgrub, tools/i386/netboot/rtl8139/stage1,
- tools/i386/netboot/rtl8139/stage2, tools/i386/netboot/tiara/pxegrub,
- tools/i386/netboot/lance/nbgrub, tools/i386/netboot/depca/nbgrub,
- tools/i386/netboot/ni6510/stage1, tools/i386/netboot/3c90x/nbgrub,
- tools/i386/netboot/ni6510/stage2, tools/i386/netboot/smc9000/stage1,
- tools/i386/netboot/smc9000/stage2, tools/i386/netboot/3c509/pxegrub,
- tools/i386/netboot/3c509/stage1, tools/i386/netboot/3c509/stage2,
- tools/i386/netboot/sis900/pxegrub, tools/i386/netboot/ne2100/pxegrub,
- tools/i386/netboot/3c595/nbgrub, tools/i386/netboot/eepro/pxegrub,
- tools/i386/netboot/wd/nbgrub, tools/i386/netboot/ns8390/nbgrub,
- tools/i386/netboot/ni5210/stage1, tools/i386/netboot/ni5010/nbgrub,
- tools/i386/netboot/ni5210/stage2, tools/i386/netboot/exos205/stage1,
- tools/i386/netboot/exos205/stage2, tools/i386/netboot/eepro100/nbgrub,
- tools/i386/netboot/3c529/stage1, tools/i386/netboot/3c529/stage2,
- tools/i386/netboot/sis900/stage1, tools/i386/netboot/tulip/stage1,
- tools/i386/netboot/sis900/stage2, tools/i386/netboot/tulip/stage2,
- tools/i386/netboot/sk_g16/stage1, tools/i386/netboot/w89c840/nbgrub,
- tools/i386/netboot/sk_g16/stage2, tools/i386/netboot/tiara/stage1,
- tools/i386/netboot/tiara/stage2, tools/i386/netboot/depca/stage1,
- tools/i386/netboot/lance/stage1, tools/i386/netboot/3c90x/stage1,
- tools/i386/netboot/depca/stage2, tools/i386/netboot/lance/stage2,
- tools/i386/netboot/3c90x/stage2, tools/i386/netboot/otulip/pxegrub,
- tools/i386/netboot/tulip/pxegrub, tools/i386/netboot/epic100/nbgrub,
- tools/i386/netboot/3c595/stage1, tools/i386/netboot/ni5210/pxegrub,
- tools/i386/netboot/3c595/stage2, tools/i386/netboot/w89c840/pxegrub,
- tools/i386/netboot/wd/stage1, tools/i386/netboot/wd/pxegrub,
- tools/i386/netboot/wd/stage2, tools/i386/netboot/otulip/nbgrub,
- tools/i386/netboot/ns8390/stage1, tools/i386/netboot/eepro/nbgrub,
- tools/i386/netboot/ni5010/stage1, tools/i386/netboot/ns8390/stage2,
- tools/i386/netboot/ni5010/stage2, tools/i386/netboot/ne2100/nbgrub,
- tools/i386/netboot/ni6510/pxegrub, tools/i386/netboot/eepro100/stage1,
- tools/i386/netboot/eepro100/stage2, tools/i386/netboot/ne/nbgrub,
- tools/i386/netboot/depca/pxegrub, tools/i386/netboot/ne/pxegrub,
- tools/i386/netboot/w89c840/stage1, tools/i386/netboot/rtl8139/nbgrub,
- tools/i386/netboot/w89c840/stage2, tools/i386/netboot/sk_g16/pxegrub,
- tools/i386/netboot/lance/pxegrub, tools/i386/netboot/ni6510/nbgrub,
- tools/i386/netboot/smc9000/nbgrub, tools/i386/netboot/3c529/pxegrub,
- tools/i386/netboot/3c595/pxegrub, tools/i386/netboot/ns8390/pxegrub,
- tools/i386/netboot/epic100/pxegrub, tools/i386/netboot/3c509/nbgrub: New
- version of grub (0.91) with allstage and pxegrub
-
- * tools/i386/netboot/3c507/pxegrub, tools/i386/netboot/3c507/stage1,
- tools/i386/netboot/3c507/stage2, tools/i386/netboot/3c503/nbgrub,
- tools/i386/netboot/3c503/pxegrub, tools/i386/netboot/3c507/nbgrub,
- tools/i386/netboot/3c503/stage1, tools/i386/netboot/3c503/stage2:
- Fixning some file missing in netboot
-
-2002/02/14 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed obsoletes management according to urpmi code.
-
-2002/02/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ga.po, share/po/cy.po, share/po/is.po, share/po/ar.po,
- share/po/sl.po, share/po/ro.po: Instead of temporary removingfiles from
- CVS put a rule in Makefile to
- don't use them (thanks Thierry)
- updated some po files; removed the ones too lowly translated for the 8.2
-
- * share/po/pt_BR.po: updted Brazilian file
- updated some po files; removed the ones too lowly translated for the 8.2
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/az.po,
- share/po/ru.po, share/po/hr.po, share/po/ko.po, share/po/nl.po,
- share/po/ja.po, share/po/sv.po, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/bs.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated some po files; removed the ones
- too lowly translated for the 8.2
-
- * share/po/vi.po: updated Vietnamese file
- updated some po files; removed the ones too lowly translated for the 8.2
-
- * share/po/Makefile: Instead of temporary removingfiles from CVS put a
- rule in Makefile to
- don't use them (thanks Thierry)
-
-2002/02/14 Pixel <pixel@mandrakesoft.com>
-
- * standalone/lsnetdrake: adapt to the neater network::smb and network::nfs
-
- * network/smbnfs.pm, network/smb.pm, network/nfs.pm: cleaner & OOed code,
- with more code sharing
-
- * interactive.pm: if testing, don't use kdesu
-
- * install_steps.pm: gzip report.bug
-
- * interactive_gtk.pm, diskdrake/interactive.pm: use the new warp_text
- feature
-
- * standalone/diskdrake: fix expert and testing options handling
-
- * my_gtk.pm (ctree_set_icon): new function
-
- * c/stuff.xs.pm: undef'ing some macros used by 2 independent sources et
- still needed :-(
- #include iconv.h is needed even when C_RPM is undefined
-
- * diskdrake/smbnfs_gtk.pm: some cleanup, icons showing wether a
- mount-point is associated are coming
-
-2002/02/14 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/br.po: update
- convert to utf-8
-
- * standalone/drakxtv: uses xawtv internal strings instead of frequencies
- tables ids as values
- in %freqtables in order to enhance drakxtv robustness when
- translators'll
- arrive. thus we'll pass right strings to scantv instead of translated
- ones
- explain how we manage the "all frequencies" case
- display sorted tv norms
-
-2002/02/13 erwan
-
- * tools/i386/netboot/device.map, tools/i386/netboot/makeImages: Adding
- missing file on netboot
-
- * tools/i386/netboot/make_boot_network, tools/i386/netboot/grub: updating
- grub in netboot
-
-2002/02/13 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: avoid generating headers for copying file in
- postinstall-rpm directory.
- make sure not to crash if a package that should have been in CD1 is
- somewhere
- else.
- fixed stupid typo.
- removed all @needToCopy... variables and now use INSTALL category in
- rpmsrate.
-
- * share/rpmsrate: updated INSTALL category with the merge of DrakX
- obsoleted list (it will use
- INSTALL now :-)
-
- * pkgs.pm: added extension to setSelectedFromCompssList.
-
- * share/rpmsrate.server: synced INSTALL category with standard rpmsrate.
-
-2002/02/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Danish and Hungarian files
-
- * share/po/da.po: updated Danish file
- updated Danish and Hungarian files
-
-2002/02/13 Pixel <pixel@mandrakesoft.com>
-
- * network/nfs.pm: $server->{ip} is no more mandatory
-
- * network/smb.pm: don't show shares ending with "$"
- $server->{ip} is no more mandatory
-
- * any.pm (setupBootloader): switch from "list" to "combo"
-
- * fs.pm (fstab_to_string): unsetting mount points in standalone will now
- work
- - handle WORM type in /proc/scsi/scsi
- - added media_type cdrom-burner
- - adapting to new media_type
- - nicer fd&hd testing
-
- * diskdrake/smbnfs_gtk.pm: have the fstab entries shown by default
-
- * detect_devices.pm, diskdrake/interactive.pm:
- - handle WORM type in /proc/scsi/scsi
- - added media_type cdrom-burner
- - adapting to new media_type
- - nicer fd&hd testing
-
-2002/02/13 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: When one visited the help page of a remote CUPS printer
- afterwards the full
- printer modification menu was shown, not only the one for remote CUPS
- printers. This is fixed now.
-
-2002/02/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po, share/po/DrakX.pot: updated Czech and Walloon files
-
- * share/po/cs.po: updated Czech file
- updated Czech and Walloon files
-
-2002/02/12 Pixel <pixel@mandrakesoft.com>
-
- * devices.pm: i prefer /(.*?)(\d+)$/ to /(.*\D)(\d+)$/
-
-2002/02/12 Till Kamppeter <till@mandrakesoft.com>
-
- * detect_devices.pm: In the USB auto-detection checked whether and where
- the device node was
- created.
-
-2002/02/12 dam's <damien@mandrakesoft.com>
-
- * share/step-red.xpm, share/step-orange.xpm, share/step-orange-click.xpm,
- share/themes/mdk-check_on.png, share/step-green-click.xpm,
- share/step-green.xpm, share/step-red-click.xpm,
- share/themes/mdk-check_off.png: new gfx
-
- * standalone/drakbackup, network/network.pm: bug correction
-
-2002/02/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/12 Pixel <pixel@mandrakesoft.com>
-
- * devices.pm: i prefer /(.*?)(\d+)$/ to /(.*\D)(\d+)$/
-
- * docs/README.pxe: cleanup the .cfg
-
- * share/rpmsrate:
- - move bootsplash from SYSTEM to X
- - lower Aurora
-
-2002/02/12 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed:
- - Endless loop when entering printerdrake during installation in
- recommended
- mode without local printer
- - Printerdrake was not closed when one was in the "Add Printer"
- sequence
- during installation and one clicked another installation item (entries
- on left hand side)
- - When configuring printing only after installation Printerdrake tried
- to
- check the installed queues without Foomatic being installed (bug was
- already in 8.1, but noone discovered it).
- - CUPS died when one tried to add a (local) printer in recommended
- mode
- after installation.
- - Improved text for the dialog telling that no local printer was
- detected.
- - The list of auto-detected printers appeared as drop-down menu and
- not as
- a list.
-
- * detect_devices.pm: In the USB auto-detection checked whether and where
- the device node was
- created.
- Fixes on device auto-detection:
- - Made USB printer auto-detection routine in "detect_devices.pm"
- creating
- the appropriate device nodes (needed for USB printers being recognized
- during installation).
- - Fixed "devices.pm" to be able to handle device files with numbers
- geater
- than 9 (ex: /dev/usb/lp10).
-
- * standalone/printerdrake:
- - Assure that Foomatic is installed before checking existing printer
- queues.
-
- * devices.pm: Fixes on device auto-detection:
- - Made USB printer auto-detection routine in "detect_devices.pm"
- creating
- the appropriate device nodes (needed for USB printers being recognized
- during installation).
- - Fixed "devices.pm" to be able to handle device files with numbers
- geater
- than 9 (ex: /dev/usb/lp10).
-
- * printer.pm: Added forgotten '$prefix'es.
- Fixed:
- - Endless loop when entering printerdrake during installation in
- recommended
- mode without local printer
- - Printerdrake was not closed when one was in the "Add Printer"
- sequence
- during installation and one clicked another installation item (entries
- on left hand side)
- - When configuring printing only after installation Printerdrake tried
- to
- check the installed queues without Foomatic being installed (bug was
- already in 8.1, but noone discovered it).
- - CUPS died when one tried to add a (local) printer in recommended
- mode
- after installation.
- - Improved text for the dialog telling that no local printer was
- detected.
- - The list of auto-detected printers appeared as drop-down menu and
- not as
- a list.
-
-2002/02/11 dam's <damien@mandrakesoft.com>
-
- * share/list: added modinfo
-
- * network/netconnect.pm: added cancel for first step
-
-2002/02/11 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: fixed syntax error...
-
- * Xconfigurator.pm: avoid testing fbdev driver.
-
- * install_steps.pm: added Aurora or bootsplash for getting a need on frame
- buffer.
- added fbdev for GeForce Integrated.
-
-2002/02/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/vi.po, share/po/hu.po: updated Danish,
- Hungarian and Vietnamese files
-
-2002/02/11 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: booh, fpons was faster than me on "bootsplash wanting
- fb". Keeping my solution ;p
-
- * c/stuff.xs.pm: "standard_charset" and "iconv" are needed even when C_RPM
- is undefined
-
- * any.pm: allow to edit the initrd field (thx to randy.k.wilson)
-
- * install_any.pm (@needToCopy): add "ntp"
-
-2002/02/11 warly
-
- * share/rpmsrate: remove dev from INSTALL, the sun is rising, and there
- are no more needs to have ppp in the INSTALL section, as the darkness is
- going away...
-
-2002/02/10 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: in case there is both ata66 (hde) and ata33 hard drives, go to
- expert
- questions directly (it would need a semi_auto asking on which drive the
- bios
- boots...)
-
-2002/02/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
-2002/02/09 daouda
-
- * share/rpmsrate:
- - add rfbdrake to NETWORKING_REMOTE_ACCESS and
- NETWORKING_REMOTE_ACCESS_SERVER
-
-2002/02/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help.pm file
-
- * share/po/fi.po, share/po/DrakX.pot, share/po/help_xml2pm.pl,
- share/po/es.po, share/po/fr.po, share/po/sv.po, share/po/da.po,
- share/po/de.po, share/po/hu.po, share/po/it.po, share/po/eu.po: merged
- with the manual help
-
-2002/02/09 warly
-
- * share/rpmsrate: add ppp in INSTALL
- add dev in INSTALL
-
-2002/02/08 dam's <damien@mandrakesoft.com>
-
- * pixmaps/wiz_drakgw.png, pixmaps/wiz_default_up.png,
- pixmaps/wiz_firewall.png, pixmaps/wiz_draknet.png: new gfx
-
- * network/network.pm: corrected wireless modules
-
-2002/02/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, share/locales-skeleton.tar.bz2: Added choice of charset for
- various languages
-
-2002/02/08 Pixel <pixel@mandrakesoft.com>
-
- * docs/SHORTCUTS: add F1 & F2
-
-2002/02/08 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added instructions for scanning on HP's MF devices to
- the printer help page.
- HP PhotoSmart printers do not scan, so do not show how to scan with
- them.
- Do not let dialogs of network configuration correction appear embedded
- in the "Add printer" wizard.
- Completed wizard mode for adding a printer in both recommended and
- expert mode.
-
- * printer.pm: Enabled transferring queues of HP multi-function devices
- between spoolers.
- CUPS 1.1.13 dies on SIGHUP, do normal restart instead.
- Completed wizard mode for adding a printer in both recommended and
- expert mode.
-
-2002/02/08 warly
-
- * share/rpmsrate: add bootsplash in system 4
-
-2002/02/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/07 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm: fix error causing a bad window sizing when there is
- a horiz scroll
-
-2002/02/07 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: fixed shadow when testing X
-
-2002/02/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/help_xml2pm.pl: fixed email address
-
-2002/02/07 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/smbnfs_gtk.pm:
- - don't pop the "do you want to install samba?"
- - rwindow is not a window when embedded, so set_default_size only if
- possible
-
- * my_gtk.pm: make perl_checker happy
- ensure no more than one child is in the Plug
-
- * interactive.pm: fix (causing XFdrake to use a combo instead of a list)
-
- * interactive_gtk.pm: fix error causing a bad window sizing when there is
- a horiz scroll
- (exit): ensure USR1 is sent to mcc
-
- * Xconfigurator.pm: allow to edit the hsyncrange and vsyncrange when
- choosing monitor "Custom"
-
- * install2.pm, install_steps.pm: create and use miscellaneousAfter (so
- that SECURE_LEVEL is set *after* asking)
-
- * diskdrake/interactive.pm (Options): wrap the help text
-
- * standalone/diskdrake: handle --embedded xxx xxx
-
-2002/02/07 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * standalone/drakxtv, Makefile.config: add drakxtv (scantv gui)
-
- * standalone/localedrake: fix pixel stuff: don't restart wm on cancel
-
-2002/02/07 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: beta 2
-
- * printerdrake.pm: corrected wizard pb
-
- * my_gtk.pm: wizard fixes
-
-2002/02/07 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (mount): precise the type when mounting in standalone (for smb,
- nfs would not need it)
-
- * diskdrake/smbnfs_gtk.pm:
- - don't pop the "do you want to install samba?"
- - rwindow is not a window when embedded, so set_default_size only if
- possible
-
- * interactive.pm: fix (causing XFdrake to use a combo instead of a list)
-
- * my_gtk.pm: ensure no more than one child is in the Plug
-
- * standalone/diskdrake: handle --embedded xxx xxx
-
- * interactive_gtk.pm (exit): ensure USR1 is sent to mcc
-
-2002/02/06 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: removed ugly pink and ugly left bar for wizard mode
-
-2002/02/06 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem, tools/oem-prepare: better handling of group linked
- to hardware or options.
-
-2002/02/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: have frozen-bubble in GAMES at level 4
-
-2002/02/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po, share/po/fi.po, share/po/DrakX.pot: updated French file
-
-2002/02/06 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Automatic configuration of the scanning part of HP's
- multi-function devices.
-
- * printerdrake.pm: Added some stuff for the Wizard mode.
- Automatic configuration of the scanning part of HP's multi-function
- devices.
- Updated automatic package installation in printerdrake, no "kups" and
- "qtcups" any more, but "gpr", "a2ps", and "hpoj", updated also
- "rpmsrate" and "rpmsrate.server" appropriately.
-
- * share/rpmsrate.server, share/rpmsrate: Added scanning packages to
- INSTALL section, for HP MF device installation by printerdrake.
- Updated automatic package installation in printerdrake, no "kups" and
- "qtcups" any more, but "gpr", "a2ps", and "hpoj", updated also
- "rpmsrate" and "rpmsrate.server" appropriately.
-
-2002/02/05 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Added automatic configuration of HPOJ for
- HP's multi-function devices.
-
-2002/02/05 dam's <damien@mandrakesoft.com>
-
- * standalone/logdrake: wizard updated
- correction for mcc.
-
-2002/02/05 François Pons <fpons@mandrakesoft.com>
-
- * share/rpmsrate.server: synced with normal rpmsrate for Basque
- management.
-
- * install2.pm: auto_allocate for oem mode is not needed as oem script
- create all necessary partition.
-
- * install_any.pm: add support for Basque (no KDE).
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: newer syslinux 1.67.
-
- * share/rpmsrate: add support for Basque (no netscape in such case)
-
- * rescue/tree/etc/oem: select preferred kernel as kernel-\d.
-
- * install_steps.pm: fixed logic, when someone want /root/drakx,
- it has to check /root/drakx and not /root only.
-
-2002/02/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/tree/sbin/modprobe: don't do insmod -f, it's not really necessary
- and it taints the kernel (pabo)
-
- * rescue/tree/etc/profile: use LD_LIBRARY_PATH in rescue so that PATH'ing
- in /mnt
- can really be used
-
-2002/02/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/es.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/no.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/05 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: fix "help lilo when there is hdd with no hdc drive"
-
- * Xconfigurator.pm: testFinalConfig now always returns true if test is
- skipped because of a bad_card (back to the old behaviour, this was no
- good (the aim is to enable changing the monitor when test is skipped))
-
- * share/po/fr.po: fix "Details" translated in "Détails de la partition"
- but is used at different
- place where the meaning has nothing to do with "partitions"
-
-2002/02/05 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Added automatic configuration of HPOJ for
- HP's multi-function devices.
-
-2002/02/05 warly
-
- * share/compssUsers.server: remove non server group from rpmsrate.server
- add utilities group in compssUser.server
- (webmin,ssh-server,wizards,monitoring)
-
- * share/rpmsrate.server: begin rpmsrate.server cleaning
-
-2002/02/05 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: fix "help lilo when there is hdd with no hdc drive"
-
- * Xconfigurator.pm: testFinalConfig now always returns true if test is
- skipped because of a bad_card (back to the old behaviour, this was no
- good (the aim is to enable changing the monitor when test is skipped))
-
-2002/02/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: log the "chkconfig --del gpm" when there is a serial
- mouse
-
-2002/02/04 dam's <damien@mandrakesoft.com>
-
- * standalone/logdrake: corrected typo. Yvounet, check your code!!
- embedded, explain
-
- * my_gtk.pm: bug correction
-
- * standalone/drakfont, services.pm, network/netconnect.pm: applied cooker
- guy english review
-
-2002/02/04 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added v4l module all the time (along with dbe already
- present).
-
-2002/02/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps.pm: have numlock activated when isLaptop rather than
- $o->{pcmcia}
-
-2002/02/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/zh_CN.po, share/po/no.po, share/po/fi.po,
- share/po/DrakX.pot, share/po/th.po, share/po/es.po, share/po/fr.po,
- share/po/sr.po, share/po/el.po, share/po/et.po, share/po/sk.po,
- share/po/tr.po, share/po/eu.po, share/po/sl.po, share/po/vi.po,
- share/po/uk.po, share/po/eo.po, share/po/nl.po, share/po/wa.po,
- share/po/sv.po, share/po/zh_TW.po: updated some po files
-
-2002/02/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix creating /etc/security/msec/server
-
- * share/po/fr.po: fix "More" translation
-
-2002/02/04 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Made HP multi-function devices configured
- with HPOJ being displayed correctly by printerdrake.
-
- * detect_devices.pm: Replace "Hewlett-Packard" by "HP" when HP device is
- detected on a parallel port.
-
-2002/02/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update french translations
-
-2002/02/03 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: force a few more "list"s instead of "combo" boxes
- since "format" is now handled for combo boxes, combo boxes are used in
- much too many places. Fix this by forcing type "list" for some cases,
- and using type "list" when a ask_from has only one entry
-
- * interactive.pm: since "format" is now handled for combo boxes, combo
- boxes are used in much too many places. Fix this by forcing type "list"
- for some cases, and using type "list" when a ask_from has only one entry
-
- * bootloader.pm:
- - fix some vga text modes 80x30
- - chmod 600 lilo.conf when a password is given
- - fix general "append"
- (thanks to David Eastcott)
- "password" works without "restricted", not the other way round (reported
- by David Eastcott)
- fix typo
-
-2002/02/03 warly
-
- * share/rpmsrate.server: synchronize with current cooker rpmsrate
-
-2002/02/03 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: force a few more "list"s instead of "combo" boxes
- since "format" is now handled for combo boxes, combo boxes are used in
- much too many places. Fix this by forcing type "list" for some cases,
- and using type "list" when a ask_from has only one entry
-
- * interactive.pm: since "format" is now handled for combo boxes, combo
- boxes are used in much too many places. Fix this by forcing type "list"
- for some cases, and using type "list" when a ask_from has only one entry
-
- * bootloader.pm: fix typo
- help lilo when there is hdd with no hdc drive (needs testing!)
-
-2002/02/03 warly
-
- * share/rpmsrate.server, share/compssUsers.server: add rpmsrate.server and
- compssUsers.server
-
-2002/02/03 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: help lilo when there is hdd with no hdc drive (needs
- testing!)
-
-2002/02/03 warly
-
- * share/rpmsrate.server, share/compssUsers.server: add rpmsrate.server and
- compssUsers.server
-
-2002/02/02 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: XFree is now 4.2
-
- * standalone/fileshareset: fix dropping samba sections which don't have
- any "path="
-
-2002/02/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po, share/po/DrakX.pot: updated Swedish file
-
- * share/po/fr.po: merged again French file to recover some lost strings;
- and added non breakable spaces at all the needed places as required
- by French typography
-
-2002/02/01 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm: please perl_checker
-
- * install_interactive.pm: use from_Mb for choosing the size of the windows
- partition
-
- * install_steps.pm: create symlink /etc/security/msec/server in security >
- 3
-
-2002/02/01 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: First steps of the implementation for the "Add printer"
- wizard.
-
- * detect_devices.pm: Made auto-detection working for HP DeskJet 840C on
- USB
- General improvements for reliability of USB printer auto-detection
-
-2002/02/01 yduret
-
- * pixmaps/wiz_scannerdrake.png: readding it with -kb option (i am still
- jeune and boulet)
- rm for readding with -kb option (i am jeune and boulet)
-
- * standalone/logdrake: ergo fix thx dadou report
- fix --explain=foo bug that prevent to show anything
-
- * bootlook.pm: ergo fix thx dadou report...
-
-2002/02/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * services.pm, standalone/drakbackup, printerdrake.pm,
- standalone/logdrake: changed some strings to make translation easier
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/no.po, share/po/fi.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/02/01 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm: please perl_checker
-
- * install_interactive.pm: use from_Mb for choosing the size of the windows
- partition
-
- * Xconfigurator.pm: testFinalConfig now returns false if test is skipped
- because of a bad_card or
- verybad_card and $skip_badcard is not set
-
-2002/01/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, share/keyboards.tar.bz2, keyboard.pm: Added Tamil language and
- keyboard choices (KDE is translated to Tamil)
-
-2002/01/31 yduret
-
- * pixmaps/wiz_scannerdrake.png: on rajoute la zolie image
-
-2002/01/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * Xconfigurator.pm: Added setting of model=jp106 for Japanese keyboard
-
- * keyboard.pm, share/keyboards.tar.bz2: Added Bulgarian "phonetic"
- keyboard
-
- * lang.pm: Enabled "ms" language in the language selection list (there are
- Gnome and KDE
- translations for it)
-
- * share/po/be.po, share/po/zh_CN.po, share/po/no.po, share/po/fi.po,
- share/po/es.po, share/po/bg.po, share/po/de.po, share/po/et.po,
- share/po/el.po, share/po/ru.po, share/po/br.po, share/po/uk.po,
- share/po/eo.po, share/po/bs.po, share/po/nl.po, share/po/ro.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/hu.po:
- updated some po files
-
-2002/01/30 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add gnome-core in GNOME (used to be required?)
-
- * Xconfigurator_consts.pm, Xconfigurator.pm: move "what is the
- running_window_manager" and "ask_window_manager_to_logout" to any.pm
-
- * any.pm (ask_window_manager_to_logout, running_window_manager): created
- from Xconfigurator and cleaned
- (selectLanguage): if $langs is empty, don't ask for "other languages"
-
- * pixmaps/wiz_printerdrake.png: re-adding with -kb
- removing for re-adding with -kb
-
- * standalone/localedrake: now works in normal user: it modifies the
- ~/.i18n (todo: handle kde crazy variables?)
-
- * lang.pm: handle read'ing and write'ing to a specified file (useful
- example: ~/.i18n)
-
-2002/01/30 sdupont
-
- * standalone/drakbackup: complex merging....
- change /var/drakbackup to /var/lib/drakbackup
- crontab update
- mail report update
- sendmail update
- require rpm mode
- code optimisation
- remove about gi
- new help function
-
-2002/01/29 Till Kamppeter <till@mandrakesoft.com>
-
- * pixmaps/wiz_printerdrake.png: Added logo for the "Add Printer" wizard of
- printerdrake.
-
- * printer.pm, printerdrake.pm: Prepared printerdrake for the "Add printer"
- wizard.
- Improvements for the selection of a local printer, especially when no or
- one printer was detected.
-
-2002/01/29 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: icons placements are better
-
-2002/01/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakbug_report, standalone/drakautoinst, install2.pm,
- install_any.pm, install_steps.pm, log.pm, docs/README, pkgs.pm: move
- /root/* files (ddebug.log, install.log, report.bug,
- auto_inst.cfg.pl, replay_install.img) to /root/drakx/,
- and also save stage1.log there
-
- * partition_table_raw.pm: add new pixel-made grub signature
-
- * crypto.pm: update land2tzs accordingly to new url2land
- Add url2land entries for nl, it, at
-
- * any.pm: move /root/* files (ddebug.log, install.log, report.bug,
- auto_inst.cfg.pl, replay_install.img) to /root/drakx/,
- and also save stage1.log there
- rephrase a little bit highest level
- to not refer to "level 4" anymore
- use formatAlaTeX for describing security levels
-
- * install_steps_interactive.pm: fix thanks to chipaux msg about mkbootdisk
-
-2002/01/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po, share/po/sv.po, share/po/hr.po, share/po/de.po,
- share/po/DrakX.pot, help.pm, share/po/it.po, share/po/eu.po,
- share/po/es.po: updated pot file with help messages from manual
-
-2002/01/29 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: handle "format" for combo's
-
- * bootloader.pm: use the new format for combo's to clean code handling
- {vga} field
-
- * diskdrake/hd_gtk.pm: look diskdrake.rc in another directory
-
- * any.pm: use the new format for combo's to clean code handling {vga}
- field
- handle the case where samba and/or nfs-utils are not installed
-
- * install_steps.pm: move the various bootloader::add_append's in
- setupBootloaderBefore
-
- * diskdrake/smbnfs_gtk.pm: handle the case where samba and/or nfs-utils
- are not installed
-
- * install_steps_interactive.pm: visually unselect X and docs when minimal
- install
- "With X" choice is now working
- handle "Cancel" on language selection
-
-2002/01/29 Till Kamppeter <till@mandrakesoft.com>
-
- * pixmaps/wiz_printerdrake.png: Added logo for the "Add Printer" wizard of
- printerdrake.
-
- * printer.pm, printerdrake.pm: Prepared printerdrake for the "Add printer"
- wizard.
- Improvements for the selection of a local printer, especially when no or
- one printer was detected.
-
-2002/01/29 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * interactive.pm: fix pixel's minimal example using interactive.
-
-2002/01/29 yduret
-
- * docs/interactive/ask_from_list, docs/interactive/wait_message,
- docs/interactive/ask_from_treelist, docs/interactive/ask_from_listf,
- docs/interactive/ask_from: added some snipet coe for example
-
- * standalone/logdrake: logdrake is now under gi/perl-install/standalone
-
-2002/01/29 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake/hd_gtk.pm: look diskdrake.rc in another directory
-
- * install_steps.pm: move the various bootloader::add_append's in
- setupBootloaderBefore
-
-2002/01/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: do the few new translations
-
- * standalone.pm: try to reflect hierarchy for */*.pm
-
-2002/01/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/no.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/de.po,
- share/po/sk.po, crypto.pm, share/po/tr.po, share/po/eu.po,
- printerdrake.pm, standalone/draknet, share/po/vi.po, share/po/ko.po,
- share/po/uk.po, share/po/nl.po, share/po/bs.po, share/po/ja.po,
- standalone/drakbackup, share/po/wa.po, share/po/sv.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/hu.po, share/po/af.po,
- share/po/id.po: Corrected various English typos
-
-2002/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix typo
-
- * partition_table.pm: warn if partitions have been renumbered due to a
- partition being added or removed
-
- * diskdrake/interactive.pm: don't warn_if_renumbered during install
- warn if partitions have been renumbered due to a partition being added
- or removed
-
-2002/01/28 siegel
-
- * share/po/de.po: new german version
-
-2002/01/28 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Replaced "sleep" commands by a subroutine which waits
- exactly until CUPS is ready.
- CUPS >= 1.1.12 needs to "know" all devices, let CUPS restart if a device
- is not "known" to it.
-
- * printer.pm: Removed debug helper line.
- Replaced "sleep" commands by a subroutine which waits exactly until CUPS
- is ready.
- CUPS >= 1.1.12 needs to "know" all devices, let CUPS restart if a device
- is not "known" to it.
-
-2002/01/28 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/br.po: update brezhoneg translations
-
- * share/po/fr.po: more french translations
-
-2002/01/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/no.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/de.po,
- share/po/sk.po, crypto.pm, share/po/tr.po, share/po/eu.po,
- printerdrake.pm, standalone/draknet, share/po/vi.po, share/po/ko.po,
- share/po/uk.po, share/po/nl.po, share/po/bs.po, share/po/ja.po,
- standalone/drakbackup, share/po/wa.po, share/po/sv.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/hu.po, share/po/af.po,
- share/po/id.po: Corrected various English typos
-
-2002/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix typo
-
- * diskdrake/interactive.pm, partition_table.pm: warn if partitions have
- been renumbered due to a partition being added or removed
-
-2002/01/28 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm, network/netconnect.pm: debug network testing
-
-2002/01/28 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: updated color of
- scroll bar and reduced its size.
-
- * bootloader.pm: fixed get_append if key=mem.
- timeout passed to 10 instead of 5.
-
-2002/01/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: update games rates
-
-2002/01/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (remove_advertising): ensure removing /tmp/drakx-images
- can't fail
-
- * any.pm: simpler&nicer solution for writing kppprc in utf8
- have kppprc strings in utf8
-
- * detect_devices.pm: remove test code
-
- * install_steps.pm, bootloader.pm: cleanup perImageAppend code (hopefully
- handling nicely the mem=nopentium case)
-
- * diskdrake/smbnfs_gtk.pm: don't use wait_message's when waiting (waiting
- is usually very short), use a waiting cursor instead.
- (the wait_message's were causing bad interactivity stuff)
-
-2002/01/27 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: add a minimal example
-
- * services.pm:
- - move the require on my_gtk to ask_standalone_gtk
- - cleanup
-
- * Makefile.config:
- - adapt to new diskdrake modules
- - add logdrake to STANDALONEPMS_
-
- * my_gtk.pm: strange protection against ensure_focus generating a "focus"
- event causing a
- dead-loop (reminder: ensure_focus helps ensuring a widget is focused)
-
- * Makefile.drakxtools, standalone.pm, Makefile, diskdrake_interactive.pm,
- install_interactive.pm, diskdrake.pm:
- - adapt to new diskdrake modules
- - some cleanup in drakxtools build
-
- * diskdrake/removable.pm: remove debugging code
- new diskdrake modules (diskdrake_interactive is now
- diskdrake::interactive, diskdrake is now diskdrake::hd_gtk, others
- created from diskdrake.pm)
-
- * diskdrake/interactive.pm, diskdrake/hd_gtk.pm,
- diskdrake/removable_gtk.pm: new diskdrake modules (diskdrake_interactive
- is now diskdrake::interactive, diskdrake is now diskdrake::hd_gtk,
- others created from diskdrake.pm)
-
- * diskdrake/smbnfs_gtk.pm: fix updating the actions
- new diskdrake modules (diskdrake_interactive is now
- diskdrake::interactive, diskdrake is now diskdrake::hd_gtk, others
- created from diskdrake.pm)
-
- * network/nfs.pm: find_exports: add a timeout
-
- * fs.pm: new function fstab_to_string
-
- * standalone/diskdrake: handle --removable *and* --removable=<dev>
- handle --removable=<dev>
- - new options --hd, --nfs, --smb, --removable
- - adapt to new diskdrake modules
- - save $all_hds->{current_fstab} to know if /etc/fstab must be saved
-
-2002/01/25 fabman
-
- * share/po/es.po: updated spanish translation
-
-2002/01/25 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add devfsd
-
- * install_any.pm: remove_advertising: use rm_rf since we don't have the
- real list of files (the .pl's are not in @advertising_images)
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: remove 'ncr53c8xx'
-
-2002/01/25 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Less important options only shown when
- "Advanced" button clicked.
- Handling of cursor position in the main window improved.
- Handling of empty printer queue list in main window improved.
- Removed line breaks from longer texts, so that text flows into window
- nicely
- Minor text improvements.
-
-2002/01/25 dam's <damien@mandrakesoft.com>
-
- * install_any.pm: advertising engine updated
-
- * share/logo-mandrake.png: beta logo
-
- * install_steps_gtk.pm: corrected decy
- advertising engine updated
-
-2002/01/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: please find a better fix
-
-2002/01/25 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: prefer default linux-{smp,enterprise,secure} over simple
- linux
- fix spelling
-
- * Makefile: call clean-rpmsrate
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: remove 'ncr53c8xx'
-
-2002/01/25 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm, install_any.pm: advertising engine updated
-
- * share/po/fr.po: typo
-
- * share/logo-mandrake.png: beta logo
-
-2002/01/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: please find a better fix
-
-2002/01/25 Pixel <pixel@mandrakesoft.com>
-
- * mdk-stage1/Makefile: ensure errors propagate
-
- * bootloader.pm: prefer default linux-{smp,enterprise,secure} over simple
- linux
- fix spelling
-
- * Makefile: call clean-rpmsrate
-
- * mdk-stage1/pci-resource/Makefile: silly shell
- ensure errors propagate
-
-2002/01/25 dam's <damien@mandrakesoft.com>
-
- * share/po/fr.po: typo
- corrected too long label Mise à niveau deas paquetages seule. please
- find a better FIX
-
-2002/01/25 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: cosmetic changes.
-
- * pkgs.pm: fixed try opening to trigger changeCD callback.
-
-2002/01/24 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate:
- - add msec in any install
- - use BIGMEM flag for kernel-enterprise
- - use SMP flag for kernel-smp
- (those 2 goes together with Warly's clean-rpmsrate)
- add flag DOCS which should work together with !excludedocs
-
- * any.pm: ensure grub is installed if grub is chosen
-
- * install_any.pm:
- - add DOCS (based on !excludedocs)
- - set BIGMEM and SMP flags
- (since kernel-smp and kernel-enterprise sub-numbers are better handled
- by
- rpmsrate together with Warly's clean-rpmsrate)
-
- * install_steps_interactive.pm, install2.pm: minimal install now handles
- excludedocs
-
- * install_steps.pm: log excludedocs
- minimal install now handles excludedocs
- put devfs=mount only if devfsd is installed
-
- * diskdrake_interactive.pm: truncate lvm name to 63 characters since
- longer vg names are not allowed
-
-2002/01/24 Till Kamppeter <till@mandrakesoft.com>
-
- * detect_devices.pm, printer.pm, printerdrake.pm: Fixed bug of empty menu
- entry appearing after adding a new printer.
- Modified "Local Printer" dialog to be more newbie-friendly.
-
-2002/01/23 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm: updated speedtouch code to use pppoa3
-
- * my_gtk.pm: removed font loading
-
-2002/01/23 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: fixed to allow multiple mem=xxx parameter (especially
- mem=nopentium).
-
- * install_steps.pm: restored mem=nopentium.
- removed mem=nopentium.
-
-2002/01/23 Pixel <pixel@mandrakesoft.com>
-
- * standalone/fileshareset: name mangling max length set to 12
- use name mangling for samba labels
-
-2002/01/23 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: New user interface in main window
- More printer info in printer modification window
- Better support for remote CUPS printers
-
-2002/01/22 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: improved widget_icons
-
- * install_steps.pm: added net_cnx_pg output when configuring network in
- auto install
-
-2002/01/22 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added support to save already existing synthesis file.
-
- * install_any.pm: changed code to build synthesis file, check if they have
- not already been copied
- from mirror, or build them using parsehdlist.
-
-2002/01/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: Translate a few things more
-
-2002/01/22 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: cleanup error messages (and fix diskdrake's)
- defaults to ext3 instead of ext2
-
- * interactive.pm: add "quit_if_double_click" and "tree_expanded" flags
- (request from till)
- add feature "allow_empty_list" for "list" entries (disables the special
- cases for 0 and 1 element lists)
-
- * install_any.pm, diskdrake.pm: cleanup error messages (and fix
- diskdrake's)
-
- * install_interactive.pm, raid.pm: defaults to ext3 instead of ext2
-
- * partition_table.pm: remove unused auto_win_extended stuff
- handle extended partitions with no partitions inside (esp. for the first
- hda5 & windows XP)
-
- * bootloader.pm:
- - fix default not being formatted like labels for lilo
- - check the label is not already used *case-sensitively*
- - check a kernel_or_dev is given
-
- * any.pm:
- - remove the default entry when that entry is removed
- - use allow_empty_list for displaying the entries
- - fix default not being formatted like labels for lilo
- - check the label is not already used *case-sensitively*
- - check a kernel_or_dev is given
-
- * fsedit.pm: yet again better error reporting
- defaults to ext3 instead of ext2
-
- * standalone/drakboot, bootlook.pm: fix yves's code duplication of
- lilo_choice (use $::lilo_choice in bootlook)
-
- * interactive_gtk.pm: add "quit_if_double_click" and "tree_expanded" flags
- (request from till)
-
- * install_steps_interactive.pm: cleanup error messages (and fix
- diskdrake's)
- better messages for the minimal installs
-
- * standalone/diskdrake: yet again better error reporting
- cleanup error messages (and fix diskdrake's)
-
- * share/rpmsrate: move mandrake-mime from SYSTEM to X
- lower sndconfig
-
-2002/01/22 fcrozat
-
- * share/rpmsrate: Really install gnome control center when installing
- GNOME
-
-2002/01/22 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: added mem=nopentium for any Athlon or Duron processor.
-
-2002/01/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * Makefile: exclude standalone from testing
-
- * share/po/fr.po: resolve small conflict
-
-2002/01/22 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: add the new "mii" module to 'net_raw'
-
- * install_steps_interactive.pm: better messages for the minimal installs
- fix a few cancel's (reported by slegros)
- don't ask security level in non-expert
-
- * install_steps_gtk.pm, install_interactive.pm: fix a few cancel's
- (reported by slegros)
-
- * share/rpmsrate: move mandrake-mime from SYSTEM to X
- lower sndconfig
-
-2002/01/21 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm, my_gtk.pm: hopefully better dialog box sizing
-
- * install_steps_interactive.pm, install2.pm: can't call
- any::config_libsafe so early during install, move it where msec is
- called
-
- * any.pm: quiet perl's warning
-
-2002/01/21 dam's <damien@mandrakesoft.com>
-
- * install_steps.pm: fixed network conf in auto install
- corrected network down
-
- * my_gtk.pm: removed debug print
- icons widget improvment : icon placment, highlighting
-
-2002/01/21 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: increase the size of the "Choose action" box
-
- * diskdrake_interactive.pm: remove the "Active" partition feature
-
- * interactive_gtk.pm, my_gtk.pm: hopefully better dialog box sizing
-
- * install2.pm: can't call any::config_libsafe so early during install,
- move it where msec is called
-
- * install_steps_interactive.pm: can't call any::config_libsafe so early
- during install, move it where msec is called
- cleanup, update, enhance security level choice
-
- * standalone/draksec: cleanup, update, enhance security level choice
-
- * install_steps.pm: remove deprecated msec groups adding
- cleanup
-
- * tools/i386/netboot/stage2.3c90x, tools/i386/netboot/grub: newer grub
-
- * any.pm: quiet perl's warning
- cleanup, update, enhance security level choice
- when creating users, add handling of xgrp/rpm/adm/wheel groups in high
- security
- fix advice about "usermod -G"
-
- * tools/i386/netboot/menu.lst.example: add gateway parameter
-
-2002/01/21 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: new ugly icon
-
- * install_steps.pm: corrected network down
-
-2002/01/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2002/01/21 Pixel <pixel@mandrakesoft.com>
-
- * share/fonts.tar.bz2: add helvR12_iso15
-
- * install_steps_interactive.pm: """ When I choose a / partition smaller
- than 200 MB, the installation
- gives me an error message complaining that my system does not
- have enough free space for the installation, although basesystem
- install
- require less than 100 MB. """
- up to around 250MB, minimal install is chosen.
- questions are: base system only, or no X, or normal.
-
-2002/01/21 siegel
-
- * share/po/de.po: updates
-
- * standalone/drakbackup: fixed i18n bugs
-
-2002/01/20 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: call msec with run_commands=0 to fix the network reloading
- (causing various problems, esp. "Net::FTP: Timeout" at X config step)
-
-2002/01/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakbackup: sorry, _("$_") is not allowed
-
-2002/01/20 Pixel <pixel@mandrakesoft.com>
-
- * share/po/fr.po: fix "`msgid' and `msgstr' entries do not both end with
- '\n'"
-
- * install2.pm: call msec with run_commands=0 to fix the network reloading
- (causing various problems, esp. "Net::FTP: Timeout" at X config step)
-
-2002/01/20 yduret
-
- * timezone.pm: added Italy (time.ien.it) in
-
-2002/01/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * standalone/drakbackup: Rework English syntax in drakbackup - hopefully
- I've got the intent correct ;^)
-
-2002/01/19 Till Kamppeter <till@mandrakesoft.com>
-
- * detect_devices.pm: Replaced USB printer auto-detection by a more
- reliable method.
-
-2002/01/18 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: changed Update -> Upgrade for installation
- class.
-
-2002/01/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/draknet:
- - move 'use standalone' up to comply to 'explanations'
- - fix an english typo, s/connexion/connection/
-
- * standalone/drakgw:
- - move 'use standalone' up to comply to 'explanations'
- - write higher-level 'explanations'
- - small fix, s/`ls ..`/glob(..)/
-
- * standalone/scannerdrake:
- - move 'use standalone' up to comply to 'explanations'
- - fix a small english problem
-
- * share/po/fr.po: reduce a lot of fuzzy and untranslations
- large stuff from printerdrake, drakbackup and drakfont still to do :-)
-
- * c/stuff.xs.pm, standalone/printerdrake, standalone/net_monitor,
- standalone/drakautoinst, standalone/keyboarddrake,
- standalone/localedrake, standalone/livedrake, standalone/drakboot,
- standalone/draksec, standalone/tinyfirewall, standalone/mousedrake,
- standalone/drakxservices, standalone.pm, standalone/drakproxy,
- standalone/XFdrake, standalone/diskdrake, standalone/adduserdrake,
- standalone/drakxconf, log.pm, standalone/logdrake,
- standalone/drakbackup, standalone/drakfont:
- - write the 'common' part of the 'explanations' stuff,
- with nice help from Pixel for the tough Perl part
- - move 'use standalone' up in all standalone apps,
- to comply to 'explanations'
-
-2002/01/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2,
- share/fonts.tar.bz2: changes to get in line with new XFree86
-
-2002/01/18 Pixel <pixel@mandrakesoft.com>
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: find the X11
- locale on the box so that XI18N_OBJS's and common are included
-
-2002/01/18 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: add update flag for urpmi medium.
-
- * install_steps_interactive.pm: even if user cancel update of package on
- tree, allow urpmi to install the medium.
- avoid downNetwork as no difference are made between ethernet or ppp.
- fixed typo.
- allow cancel when installUpdates.
-
- * crypto.pm: add update medium for crypto for urpmi (flag update).
- fixed typo.
- allow selection/deselection of update medium (for cancel of
- installation).
-
- * install_steps_gtk.pm: allow choosePackageTree to display a cancel if a
- specific medium has been given.
-
-2002/01/18 Pixel <pixel@mandrakesoft.com>
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: find the X11
- locale on the box so that XI18N_OBJS's and common are included
-
-2002/01/18 sdupont
-
- * standalone/drakfont: update warning messages (qa).
-
- * standalone/drakbackup: fix traduction problems and more ...
-
-2002/01/17 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm, diskdrake_interactive.pm: better error message when auto
- allocate doesn't do anything
-
-2002/01/17 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm, network/netconnect.pm: draknet : success message only
- if success
-
- * my_gtk.pm: added timeout for redrawing icon widget
-
-2002/01/17 fcrozat
-
- * share/rpmsrate: kdebase-nsplugins will be installed by default when
- selecting KDE
-
-2002/01/17 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: avoid upgrading a package by selection on files unless it has
- been obsoleted.
-
-2002/01/17 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: check the mountpoint is valid for encrypting (disallow "/"
- and "/usr")
-
- * fsedit.pm, diskdrake_interactive.pm: better error message when auto
- allocate doesn't do anything
- check the mountpoint is valid for encrypting (disallow "/" and "/usr")
-
- * fs.pm: do not create /swap
-
- * services.pm: move service apcupsd from Printing to System
-
- * bootloader.pm: fix many disks bios remapping (esp. booting on scsi when
- ide is present)
-
-2002/01/17 sdupont
-
- * standalone/drakbackup: stable version for qa pkg.
- (without unstables options)
-
-2002/01/16 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix cancel on scsi module loading
-
-2002/01/16 sdupont
-
- * standalone/drakbackup: update send mail.
- (pixel mode. ;))
-
-2002/01/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: installUpdates: use formatAlaTeX
-
-2002/01/16 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix cancel on scsi module loading
-
- * install_steps_interactive.pm: don't drop default_packages in "Base
- system only"
-
- * standalone/fileshareset: add locking to ensure things are in a proper
- state
-
-2002/01/15 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: advertising engine amelioration
-
- * my_gtk.pm: automatic icon placement in icon_labels_widget
-
-2002/01/15 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: remove the test trick
- encrypted filesystem handling:
- - using losetup
- - add "Options" for partitions in diskdrake (expert mode)
-
- * c/stuff.xs.pm, fs.pm, share/list, fsedit.pm, devices.pm, install_any.pm,
- diskdrake.pm: encrypted filesystem handling:
- - using losetup
- - add "Options" for partitions in diskdrake (expert mode)
-
-2002/01/15 dam's <damien@mandrakesoft.com>
-
- * network/isdn_consts.pm: updated
-
-2002/01/15 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: remove the test trick
- encrypted filesystem handling:
- - using losetup
- - add "Options" for partitions in diskdrake (expert mode)
-
- * c/stuff.xs.pm, fs.pm, share/list, fsedit.pm, devices.pm, install_any.pm,
- diskdrake.pm: encrypted filesystem handling:
- - using losetup
- - add "Options" for partitions in diskdrake (expert mode)
-
- * any.pm: have ddcxinfos take the best result of every run
-
-2002/01/15 sdupont
-
- * standalone/drakfont: fix progress bar problem.
- some gi updates:
- - windows font importation.
- - advanced font importation.
- - licence interface.
- - ...
-
- * standalone/drakbackup: new ./drakbackup --show-conf
- fix daemon problem (media to use).
- update informations on drakbackup report mail.
- __ 3290 lines.
- man pages fr created.
- some code cleaning on backend mode. (all_user_list && return_path)
- new functions on backend mode:
- - show-conf
- - debug
- - help
- - version.
-
-2002/01/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm:
- - eata is SCSI adapter, not 'disk' adapter
- - have eata module in boot floppies
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: we need also "big" modules in
- pci ids
-
- * share/rpmsrate: have lbreakout weigthed 4 instead of 2
-
- * mdk-stage1/modules.c: suggest other.img in file-not-found-in-archive
- (sugg David Faure
- and Pixel)
-
-2002/01/14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: fix typo (making auto installs working again)
-
-2002/01/13 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: s/lbreakout/lbreakout2/
-
- * install_steps_interactive.pm: cleanup
-
-2002/01/13 sdupont
-
- * standalone/drakbackup: some updates ...
- in "more option" steps user could choose to receive a report by mail for
- each backups.
- ftp backup work.
- fix time problems.
- remove doc from file.
- security fix for configuration file.
-
-2002/01/11 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: advertising engine works !
- champagne.
- still some display bugs, but they will be corrected later.
- need new ads and adequat description file
- new advertising engine
-
- * install_any.pm: modifications for new avertising engine
-
- * my_gtk.pm: new icons placement
-
-2002/01/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/zh_CN.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/th.po, share/po/es.po, share/po/fr.po, share/po/sr.po,
- share/po/de.po, share/po/el.po, share/po/et.po, share/po/sk.po,
- share/po/tr.po, share/po/ar.po, share/po/az.po, share/po/eu.po,
- share/po/sl.po, share/po/vi.po, share/po/eo.po, share/po/wa.po,
- share/po/sv.po, share/po/zh_TW.po, share/po/Makefile, share/po/af.po,
- share/po/it.po: updated Spanish file; merged help-* files
-
-2002/01/11 sdupont
-
- * standalone/drakbackup: update header pixmaps.
- correction of message problem.
-
- * pixmaps/drakfont.620x57.png, pixmaps/BDO-drakebackup1.png,
- pixmaps/drakbackup.540x57.png: update pixmaps for drakbakup & drakfont.
-
- * standalone/drakfont: update header pixmaps.
-
-2002/01/10 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: domainname corection
-
- * network/network.pm: domainname corection
- corrected network domainname pb
-
- * install2.pm: corrected read_resolv => read_conf
-
-2002/01/10 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: english taste inspired by daminette.
-
-2002/01/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/lsparts: better looking output of type of partition (%x => %0x)
-
-2002/01/09 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, standalone/net_monitor, standalone/draknet,
- network/network.pm, network/modem.pm, network/netconnect.pm: big merge
- from update 8.1 with cvs
- First part. Part 2 following
-
- * my_gtk.pm: added bold option in text creation. Some corrections
-
- * install_steps_interactive.pm: corrected fpons typo
-
-2002/01/09 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed too many package selected for No X or With X
- option of minimal installation.
-
- * install_steps_interactive.pm: avoid asking for minimal install for
- upgrade.
-
- * crypto.pm: fix incomplete prefix for update mirror when adding an entry
- for urpmi.
-
- * pkgs.pm: use rpm version comparison function.
-
- * c/stuff.xs.pm: added rpmvercmp.
-
-2002/01/09 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed too many package selected for No X or With X
- option of minimal installation.
-
- * install_steps_interactive.pm: avoid asking for minimal install for
- upgrade.
-
- * crypto.pm: fix incomplete prefix for update mirror when adding an entry
- for urpmi.
-
- * pkgs.pm: use rpm version comparison function.
-
- * c/stuff.xs.pm: added rpmvercmp.
-
-2002/01/09 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed too many package selected for No X or With X
- option of minimal installation.
-
- * install_steps_interactive.pm: avoid asking for minimal install for
- upgrade.
- fixed stupid.
-
- * crypto.pm: fix incomplete prefix for update mirror when adding an entry
- for urpmi.
-
- * pkgs.pm: use rpm version comparison function.
-
- * c/stuff.xs.pm: added rpmvercmp.
-
-2002/01/08 dam's <damien@mandrakesoft.com>
-
- * install2.pm: cosmetik
-
-2002/01/08 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: added eval around pixmap drawing for advertising.
-
-2002/01/08 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakbackup: another round of bad use of _() fixes.
- fixed bad use of _().
-
-2002/01/08 sdupont
-
- * standalone/drakbackup: drakbackup work ...
- incremental backup and restore work.
-
-2002/01/08 François Pons <fpons@mandrakesoft.com>
-
- * Makefile: again fixed dam's sucking, please dam's check what you write
- before commiting.
-
- * standalone/drakautoinst: removed stupid invocation of _("$_"), is it
- correct code to change it to $_ only ?
-
-2002/01/08 François Pons <fpons@mandrakesoft.com>
-
- * Makefile: again fixed dam's sucking, please dam's check what you write
- before commiting.
-
- * standalone/drakautoinst: removed stupid invocation of _("$_"), is it
- correct code to change it to $_ only ?
-
-2002/01/08 François Pons <fpons@mandrakesoft.com>
-
- * Makefile: again fixed dam's sucking, please dam's check what you write
- before commiting.
-
-2002/01/07 François Pons <fpons@mandrakesoft.com>
-
- * steps.pm: changed installUpdates after summary (to get corrected
- timezone).
-
- * install_any.pm: separated setDefaultPackages from setPackages because it
- is used by allowing
- only base system to be installed (allow remade a better package
- selection).
-
- * crypto.pm: added bestMirror method to retrieve a good mirror (according
- to timezone) and
- add salt with random number to avoid using always the same.
-
- * install2.pm: added option to only upgrade packages.
-
- * install_steps_interactive.pm: added minimal type of install support.
-
- * share/list: fixed to match newer menu package.
-
-2002/01/07 François Pons <fpons@mandrakesoft.com>
-
- * steps.pm: changed installUpdates after summary (to get corrected
- timezone).
-
- * install_any.pm: separated setDefaultPackages from setPackages because it
- is used by allowing
- only base system to be installed (allow remade a better package
- selection).
-
- * crypto.pm: added bestMirror method to retrieve a good mirror (according
- to timezone) and
- add salt with random number to avoid using always the same.
-
- * install2.pm: added option to only upgrade packages.
-
- * install_steps_interactive.pm: added minimal type of install support.
-
- * share/list: fixed to match newer menu package.
-
-2002/01/07 dam's <damien@mandrakesoft.com>
-
- * Makefile: socmetic
- typo
- added debug mode for the whole install
-
- * my_gtk.pm: removed print
- new pack_start functions, powerpack sub added (code from adrien)
- incorporated adrien's code to generalize pack functions
- minor bug fixes
-
- * install_steps.pm, network/netconnect.pm: corrected network connection
- during install
-
- * install2: added debug mode for the whole install
-
-2002/01/07 François Pons <fpons@mandrakesoft.com>
-
- * steps.pm: changed installUpdates after summary (to get corrected
- timezone).
-
- * install_any.pm: separated setDefaultPackages from setPackages because it
- is used by allowing
- only base system to be installed (allow remade a better package
- selection).
-
- * crypto.pm: added bestMirror method to retrieve a good mirror (according
- to timezone) and
- add salt with random number to avoid using always the same.
-
- * install2.pm: added option to only upgrade packages.
-
- * install_steps_interactive.pm: added minimal type of install support.
-
- * share/list: fixed to match newer menu package.
-
- * Makefile: fixed overwriting of install2 filtering, keep diagnostic and
- strict for debug mode.
-
-2002/01/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: also log server name for HTTP install
-
-2002/01/04 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, install_steps.pm, network/tools.pm, my_gtk.pm,
- network/netconnect.pm: corrected minor bugs in network (among others bug
- "modifying read only values")
- recode upNetwork and downNetwork (it might work, at least if you are
- lucky);
-
-2002/01/04 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: corrected minor bugs in network (among others bug "modifying
- read only values")
- recode upNetwork and downNetwork (it might work, at least if you are
- lucky);
- corrected font display : no useless font->height, but ascent + descent
- updated
-
- * network/isdn_consts.pm: changed asus isdn hisax identify
-
- * network/adsl.pm, install_steps.pm, network/tools.pm,
- network/netconnect.pm: corrected minor bugs in network (among others bug
- "modifying read only values")
- recode upNetwork and downNetwork (it might work, at least if you are
- lucky);
-
-2002/01/04 François Pons <fpons@mandrakesoft.com>
-
- * http.pm, install2.pm, steps.pm, install_any.pm: added update
- installation support to install (big modifs need testing).
-
- * pkgs.pm: allow to use same identifier for security medium (1u).
- re-install urpmi.
- allow some error to be catched.
- added update installation support to install (big modifs need testing).
-
- * crypto.pm: removed test code.
- allow to use same identifier for security medium (1u).
- re-install urpmi.
- allow some error to be catched.
- added update installation support to install (big modifs need testing).
-
- * install_steps_interactive.pm: removed obsoleted comment.
- allow to use same identifier for security medium (1u).
- re-install urpmi.
- allow some error to be catched.
- added update installation support to install (big modifs need testing).
-
- * install_steps_gtk.pm: fixed empty flat package selection when giving a
- limit to medium.
- added update installation support to install (big modifs need testing).
-
- * install_steps.pm: allow to use same identifier for security medium (1u).
- re-install urpmi.
- allow some error to be catched.
- fix for auto updates.
- added update installation support to install (big modifs need testing).
-
-2002/01/04 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm: enable easy patch-adding of pcitable and usbtable
- entries
-
-2002/01/03 dam's <damien@mandrakesoft.com>
-
- * standalone/drakbackup: user can be equal to 500
-
-2002/01/03 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: updated code to create synthesis file (including
- provides on files).
-
-2002/01/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ar.po: updated Arabic file
-
-2002/01/03 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm, Xconfig.pm: save the output of ddcxinfos before
- modprobe'ing i810fb, and use that output for Xconfig (when i810fb is
- modprobe'd, ddc probe doesn't work anymore)
-
- * install_steps_interactive.pm, install_steps_gtk.pm: fix english messages
-
- * share/rpmsrate: as asked by Vincent Danen, lower uucp and raise sudo
-
- * pkgs.pm: prefer gcc-cpp
-
- * interactive_gtk.pm, interactive.pm: toggle Advanced/Basic button
-
- * any.pm: fix english messages
- save the output of ddcxinfos before modprobe'ing i810fb, and use that
- output for Xconfig (when i810fb is modprobe'd, ddc probe doesn't work
- anymore)
-
-2002/01/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: changed @euro locales to plain names; now old currencies ones
- are obsolete
-
-2001/12/31 sdupont
-
- * standalone/drakfont: new fixed size and add a head pixmap (to update).
-
- * standalone/drakbackup: lots of update ...
- - cron work.
- - backup incremental & normal work.
- - corrupted backup data files supported.
- - error messages updated.
- - aff list of backup data files pbs.
- - test all backup files before to restore it.
-
-2001/12/30 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: format home directories with "-m 0" for ext2&ext3, so that the
- root reserved part is 0% (and not 5%)
-
-2001/12/30 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: format home directories with "-m 0" for ext2&ext3, so that the
- root reserved part is 0% (and not 5%)
-
-2001/12/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectMouse): when selecting a usb mouse,
- call setup_thiskind with
- at_least_one=1 (so that pci_class probe is used and so unknown
- serial_usb
- recognised (cf ldetect))
-
- * modules.pm (load_thiskind): allow $probe_type to be given, allowing
- forced pci probe (unsafe)
-
- * any.pm (setup_thiskind_backend): when at_least_one==1, try load_thiskind
- forcing
- pci_class probe when no modules is found.
-
-2001/12/28 sdupont
-
- * standalone/drakbackup: update select data on backup cd
-
-2001/12/27 sdupont
-
- * standalone/drakbackup: fix of user selection during restore step.
- remove return_file_date.
- change algo for incremental backup.
-
-2001/12/26 sdupont
-
- * standalone/drakbackup: some gi corrections & update.
- incremental restore.
-
-2001/12/22 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: s/use pkgs/require pkgs/ since pkgs::versionCompare is
- only used during install
-
- * my_gtk.pm: export gtkcolor (used in install_steps_gtk)
- make perl_checker happy
-
-2001/12/22 sdupont
-
- * pixmaps/backup_bot.png, pixmaps/cdrom.png, pixmaps/backup_time.png,
- pixmaps/backup_bot2.png, pixmaps/backup_left.png, pixmaps/net.png,
- pixmaps/backup_hd.png, pixmaps/backup_title.png,
- pixmaps/backup_left2.png, pixmaps/filedialog.png, pixmaps/hd.png,
- pixmaps/backup_options.png, pixmaps/backup_net.png: remove old
- drakbackup pixmaps files.
-
- * pixmaps/ic82-back-up-16.png, pixmaps/ic82-discdurwhat-40.png,
- pixmaps/ic82-tape-40.png, pixmaps/ic82-moreoption-40.png,
- pixmaps/ic82-where-40.png, pixmaps/ic82-system-40.png,
- pixmaps/ic82-others-40.png, pixmaps/ic82-systemeplus-40.png,
- pixmaps/ic82-network-40.png, pixmaps/ic82-CD-40.png,
- pixmaps/ic82-when-40.png, pixmaps/ic82-back-up-32.png,
- pixmaps/ic82-users-40.png, pixmaps/ic82-dossier-32.png,
- pixmaps/ic82-back-up-48.png: drakbackup designer icons.
-
- * standalone/drakbackup: add pixmaps on backup step.
- new designer pixmaps on drakbackup.
-
-2001/12/21 sdupont
-
- * standalone/drakbackup: some update in file name parsing...
- etc ...
-
- * pixmaps/BDO-drakebackup1.png: drakbackup
-
-2001/12/20 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: API changed, so call changed
-
- * share/logo-mandrake.png: new ayo logo
-
-2001/12/20 sdupont
-
- * standalone/drakbackup: update the todo header
- the REQUIRE header
- & code cleaning
- - tar -cvf tarfilename --after-date="sept 1, 2000" /home
- l.380 incremental: date -> if already exist do find -m ... | tar ...
- non incremental: date + delete old before the backup
- - correct detection of backups during restore.
- - gi for other media during restore. hd-> ok
- - backend for build backup update and support
- incremental backups.
- - real incremental backup
- update resore & help.
-
-2001/12/19 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: update graphical backend
-
-2001/12/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: add dl2k.o (nic module) per request of nplanel
-
-2001/12/19 sdupont
-
- * standalone/drakbackup:
- - gi for other media during restore. hd-> ok
- - backend for build backup update and support
- incremental backups.
- - real incremental backup
- add other media source during restore.
- - update help & license.
- - code cleaning.
- - ask during whqt sys step if user want to backup critical
- files, like /etc/passwd /etc/group /etc/fstab
- - use preserve permissions during tar
- - begin of total backup step.( all partitions wanted, windows
- partitions for example!)
- - remove replace mode (backup_*_version is enought)
-
-2001/12/18 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: fixed dam's sucking (syntax error only, code is
- untested).
-
-2001/12/18 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix typos
-
-2001/12/18 sdupont
-
- * standalone/drakfont: include new pixmap on main menu.
-
- * standalone/drakbackup: sort lists in all lists selection.
- correct use of incremental backup
- parse of restore & system state.
- fix restore user selection problems
- fix build backup data selection problems
- ect ...
- drakbackup -> drakxtools.rpm
-
- * pixmaps/ic-drakfont-48.png: drakfont pixmap...
-
-2001/12/18 yduret
-
- * standalone/logdrake: fix console mode : exit now
-
-2001/12/18 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: fix typos
-
-2001/12/17 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: power graphical backend update : text is now
- centered
-
- * my_gtk.pm: power graphical backend update : text is now centered
- updated new graphical backend
-
-2001/12/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive_gtk.pm, standalone/drakgw: drakgw for gold
-
- * tools/pcmcia_config.patch: remove permanently (using
- patch_pcmcia_config.pl now)
-
-2001/12/17 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, any.pm, install2.pm, bootloader.pm: clean_tmp now means using
- tmpfs
-
-2001/12/17 sdupont
-
- * standalone/drakbackup:
- ________________________________________________________________
- DONE:
- incremental backups have depends whith replace options.
- gtklist not maximized.
- restore mode.
- view date during restore
- view size of file, date & hours during backup on CD
- ________________________________________________________________
-
-2001/12/17 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, any.pm, install2.pm, bootloader.pm: clean_tmp now means using
- tmpfs
-
-2001/12/14 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: new picture for 8.2.
-
-2001/12/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: change again way of selection
- PCI entries :
- what's in mar files --> what's given by modules (e.g. just
- as update_kernel does)
-
-2001/12/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install2.pm: use "askdisplay" to ask a question at begining of install
- for what
- display you want to use during install
-
- * Makefile, tools/patch_pcmcia_config.pl: externalize patch_pcmcia_config
- (from make_boot_img)
- because we need it in perl-install/Makefile also
-
- * mdk-stage1/rescue-gui.c, rescue/make_rescue_img, rescue/rescue-doc,
- rescue/Makefile: have a bunch of Rescue documentation directly
- available from the Rescue-menu following suggestions
- by Denis among others
-
-2001/12/12 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: enable easy screenshot'ing
- - ensure /usr is formatted if / is
- - remove /var/lib/rpm if /var is kept
-
- * common.pm, docs/README: enable easy screenshot'ing
-
-2001/12/12 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * rescue/make_rescue_img: larger rescue image on PPC to accomodate huge
- xfs module
-
- * bootloader.pm: mods to address new yaboot's lack of symlink ability, xfs
- initrd load
-
-2001/12/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/dhcp.c, mdk-stage1/stage1.h: support
- "filename" in DHCP answers and give this
- to stage2 as --kickstart parameter
-
-2001/12/11 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator_consts.pm, keyboard.pm: finish journalled fs usage - PPC,
- add "\n" keyboard.pm, new modelines
-
-2001/12/10 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: added network package not present in @needToCopy
- (package that may be installed
- by DrakX to avoid re-asking of CD1).
-
- * bootloader.pm: added safe guard against looping symlink.
-
-2001/12/10 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, any.pm, bootloader.pm:
- - fix bootloader::add_append
- - add handling of serial console
-
- * http.pm, install_any.pm: enable http:// in auto_install file location
-
-2001/12/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: no need to give kernelVersion to bootloader::suggest
-
- * install_any.pm (kernelVersion): looks at /boot/vmlinuz
-
- * bootloader.pm (suggest, add_kernel): much cleanup
-
- * diskdrake.pm: fix call to fileshare_config
-
-2001/12/05 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: updateed logo
-
-2001/12/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile, mdk-stage1/pcmcia_/cardmgr.c:
- - fix problems with sockets not initialized (disabling
- hotplug support -> cardmgr handles sockets)
- - fix problems with PCMCIA net adapters now using PCI
- modules, by adding PCMCIA base code in `network.img'
-
-2001/12/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: no need to give kernelVersion to bootloader::suggest
-
- * pkgs.pm (selectPackage): hard coded preference to simple kernel
-
- * install_any.pm (kernelVersion): looks at /boot/vmlinuz
-
- * diskdrake.pm: fix call to fileshare_config
-
- * steps.pm: createBootdisk now after setupBootloader (together with dumber
- install_any::kernelVersion)
-
- * network/tools.pm: fix missing ";" (thanks to Robert Fox)
-
- * bootloader.pm (suggest, add_kernel): much cleanup
-
- * fs.pm: fix type "smb" vs "smbfs", and handle options in fs::mount
-
-2001/12/05 sdupont
-
- * pixmaps/backup_bot2.png: update pixmaps
-
- * standalone/drakbackup: todo : scp ssl sftp rsync connections perl || c ?
- done : bzip2 backup
- merge
-
-2001/12/04 dam's <damien@mandrakesoft.com>
-
- * standalone/drakbackup: corrected pixmap path
- corrected pixmap path
-
- * Makefile.config: added drakbackup drakfont
-
-2001/12/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * any.pm, mdk-stage1/log.c, docs/README: save stage1.log and have it in
- report.bug
-
- * mdk-stage1/automatic.c, mdk-stage1/doc/TECH-INFOS: support shorter
- versions of automatic keywords to beat problems with very long kernel
- commandlines
-
- * install_interactive.pm: try to not get something poorly wrapped
-
- * c/stuff.xs.pm: floppy_info: add missing close(fd)
-
-2001/12/04 Pixel <pixel@mandrakesoft.com>
-
- * network/smb.pm: cleaner smbclient call
-
- * install_steps.pm: re-enable supermount by default
-
-2001/12/04 sdupont
-
- * pixmaps/backup_bot.png, pixmaps/backup_left.png: correct colors
- problems.
-
- * standalone/drakbackup: bzip2 ok for compression to see: decomp without
- pbs whith tar.gz and tar.bz2
- todo: update mode -> decomp + update tar file + recomp
-
-2001/12/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_interactive.pm: try to not get something poorly wrapped
-
-2001/12/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: re-enable supermount by default
-
- * network/smb.pm: cleaner smbclient call
-
-2001/12/04 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fix bad parsing of package to copy (when one doen't
- exist anymore) in
- postinstall_rpms directory.
-
-2001/12/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_interactive.pm: try to not get something poorly wrapped
-
-2001/12/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: re-enable supermount by default
-
- * network/smb.pm: cleaner smbclient call
-
-2001/12/04 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: additional package for wlan
-
- * network/tools.pm: corrected pipe reading
-
-2001/12/04 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: make sure lilo is installed on automatic mode.
-
- * install_any.pm: fix bad parsing of package to copy (when one doen't
- exist anymore) in
- postinstall_rpms directory.
-
-2001/12/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_interactive.pm: try to not get something poorly wrapped
-
- * mdk-stage1/modules.c: fpons is a sucking chief
-
- * modules.pm, mdk-stage1/usb-resource/update-usb-ids.pl,
- mdk-stage1/Makefile, mdk-stage1/.cvsignore, mdk-stage1/probing.c:
- support install from USB CDROMS (using usb-storage)
-
-2001/12/04 Pixel <pixel@mandrakesoft.com>
-
- * network/smb.pm: cleaner smbclient call
-
-2001/12/04 sdupont
-
- * standalone/drakbackup: last update... for cooker
- drakbackup deamon -> ok
- drakbackup cvs -> to do (only for /etc)
- drakbackup wizard -> only last step
- drakbackup cd -> device detection and ask for only iso file.
- drakbackup net -> do rsync
- drakbackup begin -> todo : update initial message
- update help and about.
-
-2001/12/04 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: additional package for wlan
-
-2001/12/04 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: make sure lilo is installed on automatic mode.
-
- * mdk-stage1/modules.c: fixed gégé sucking.
-
-2001/12/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules.c: fpons is a sucking chief
-
-2001/12/04 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/modules.c: fixed gégé sucking.
-
-2001/12/04 sdupont
-
- * standalone/drakbackup: update...
-
-2001/12/03 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: removed use gtk
-
-2001/12/03 François Pons <fpons@mandrakesoft.com>
-
- * tools/updatehdlist: initial revision, simple way to update a local set
- of medium from /RPMS.
-
-2001/12/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules.c: typo of last commit (unused variable -> could not
- compile)
-
-2001/12/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/hu.po, share/po/es.po: updated Hungarian
- and Spanish files
-
-2001/12/03 sdupont
-
- * standalone/drakbackup: update
- option step.
- write other file content.
- restore gi.
-
-2001/12/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2001/12/01 sdupont
-
- * standalone/drakbackup: do not include browser cache.
-
-2001/11/30 François Pons <fpons@mandrakesoft.com>
-
- * docs/spec-DrakX-8.0.html: added spec (forgotten for quite a long)
-
-2001/11/30 gbeauchesne
-
- * partition_table_gpt.pm:
- - cleanups from mainline
-
- * modules.pm: Suckiness fixes from mainline (gc):
- - Do parse /proc/modules in reverse order
- - Fix "convert old scsi_hostadapter's to new probeall" scheme
-
- * bootloader.pm:
- - Don't forget to link the initrd to the real image in /boot/efi/ too
- - Remove DEBUG printouts in install_efi_boot_menu
-
-2001/11/30 Pixel <pixel@mandrakesoft.com>
-
- * network/smb.pm, any.pm, Makefile.drakxtools, standalone/diskdrake,
- Makefile.config, diskdrake.pm: fileshare should be ok, handle diskdrake
- --fileshare, fix smb import
-
-2001/11/30 sdupont
-
- * pixmaps/backup_left2.png: drakbackup pixmap
-
- * standalone/drakbackup: backend mode-> ok for hd
- we can use drakbackup !.
- todo :
- backend mode:
- - net
- - cd
-
- advanced mode:
- - device detection (cd writer)
-
- wizard:
- - end of this step.
-
- gi:
- - option step in adnanced step to choice
- for example tar.gz or tar.gz2 ...
- update
- restore step 1 & 2.
- adv step -> ok
- todo: wizard ...
- little update!
-
- variables correction in advanced step.
- wizard user question, sys question & daemon
-
-2001/11/29 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * share/rpmsrate: Remove linux_logo
-
-2001/11/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: add wvlan_cs
-
- * mdk-stage1/modules.c: remove unneeded handling of "alias
- scsi_hostadapter"
-
- * mdk-stage1/stage1.c: add another expert_third_party_modules at the end
- of enabling-pcmcia-stuff
-
-2001/11/29 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: remove the export tree for nfs/smb feature, remove some
- test code
- tentative version with export/import nfs/smb tree (committed to have it
- in CVS as the export tree is already deprecated)
-
- * standalone/fileshareset:
- - allow root to export everything
- - remove empty mntpoint (from smb)
-
-2001/11/29 sdupont
-
- * standalone/drakbackup: just update....
- advanced: users correction during save.
- user pass, user login, path to save local or on host
- combo for network protocol.
- wizrad: already to do!
- CDRW burn: todo: devices detection (see to_fond_cd).
- code cleaning.
-
- * standalone/drakfont: cleanning code.
-
-2001/11/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm:
- - fix pixel sucks of not parsing /proc/modules in
- reverse order
- - be more in sync regarding names of pcmcia drivers
-
- * any.pm: add modules.conf in report.bug
-
-2001/11/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_CN.po, share/po/zh_TW.po: updated Chinese file
-
-2001/11/28 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (read_conf): fix "convert old scsi_hostadapter's to new
- probeall"
-
- * standalone/drakbackup: make check_what_user works
-
- * standalone/fileshareset: better description
- gr_mem in getgrent is space separated, not comma separated
- add samba handling. Should be finished now :)
-
-2001/11/28 sdupont
-
- * pixmaps/backup_bot2.png, pixmaps/quit.png: drakbackup pixmaps.
-
- * standalone/drakbackup: no important changement!
- clean code
- update!
- for gc & Warly: some fixes, correction of advanced, wizard and after
- advanced steps.
- the user have a better gestion during advanced step, the protocols ftp,
- sftp, scp, rsync
- are now include in advanced step..... etc ;-)
- todo: when checkbuttonbox are clicked for user choice set it to 0 or 1
- juste after.
- clean code.
- new after advanced step, correction of checkbuttons problems & new
- pixmaps.
-
-2001/11/27 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake.png: updated, cooker style
-
-2001/11/27 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: avoid problem of array reference badly evaluated.
-
-2001/11/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/mailchangelog.pl: beurk
- changelog is at linux-mandrake not mandrakesoft
-
- * install_steps.pm: i810 -> no FB at boot
-
-2001/11/27 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_gpt.pm (generate_guid): cleanup
-
- * any.pm (setupBootloader): s/last/return/
-
-2001/11/27 sdupont
-
- * standalone/drakbackup: advanced step...
- update.
- advanced mode ... and ...
- read and use user list correctly, advanced step user list.
-
- * pixmaps/hd.png, pixmaps/net.png, pixmaps/cdrom.png: pixmaps for
- drakbackup.
-
-2001/11/26 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * tools/i386/netboot/stage2.rtl8139: add rtl8139 netboot file that works
-
- * tools/i386/netboot/stage1.rtl8139: add rtl8139 netboot file that works
- stage1/stage2 of rtl8139 didn't work
-
-2001/11/26 dam's <damien@mandrakesoft.com>
-
- * common.pm, my_gtk.pm: new features for new mcc
-
-2001/11/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: getAndSaveAutoInstallFloppy: don't die when output'ing
- of
- auto_inst.cfg is not possible
-
-2001/11/26 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: add $o->{excludedocs} feature
-
- * Makefile.drakxtools: remove unneeded files (*.bs and .exists)
-
- * interactive_gtk.pm: cleanup
-
-2001/11/26 sdupont
-
- * standalone/drakbackup: new gi, advanced step.
- update.
- gawk cmds.
- better use for read and save conf. file now on
- /etc/draxtools/drakbackup/drakbackup.cfg
-
- * pixmaps/backup_hd.png, pixmaps/backup_options.png,
- pixmaps/backup_net.png, pixmaps/backup_time.png: png files for
- DrakBackup.
-
-2001/11/25 Pixel <pixel@mandrakesoft.com>
-
- * standalone/fileshareset: first version. for the moment, only nfs.
-
-2001/11/25 sdupont
-
- * standalone/drakbackup: update of read_conf_file and default mode.
-
-2001/11/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/es.po: updated Spanish and Danish files
-
-2001/11/24 sdupont
-
- * standalone/drakfont: about...
-
- * standalone/drakbackup: update
- update gi ,build of system, user, other, options interfaces.
- advanced step.
-
-2001/11/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: package for pcmcia is now called "pcmcia-cs"
-
- * any.pm, detect_devices.pm: pcmcia: /var/run/stab is nor
- /var/lib/pcmcia/stab
- yes it probably doesn't bring anything valuable but it's
- how life is :-)
-
-2001/11/23 sdupont
-
- * standalone/drakbackup: radio buttons & information message.
- change gi interface, include help, about and pixmaps (backup_*.png on
- standalone/pixmaps directory)
-
-2001/11/22 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: removed loading of agpgart module for i810 card.
-
-2001/11/22 sdupont
-
- * standalone/drakfont: about button & GPL license.
-
- * standalone/drakbackup: update gi.
- TODO: separate all the boxes.
- include wizard and advanced in pixmaps.
- update
- notebook gi.
-
-2001/11/21 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2,
- mdk-stage1/init-data/msgboot-blank.img.bz2,
- mdk-stage1/init-data/msgboot.img.bz2: fixed typo in help.msg
-
- * Xconfigurator.pm: hack for SiS 640 for laptop.
-
- * install_any.pm: fixed install_urpmi to build a correct urpmi db.
-
-2001/11/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: i810fb
- migrate pcmcia in drakx to use in-kernel version (only
- for 2.4, though --> pcmcia in 2.2 no longer supported)
-
- * install_steps_interactive.pm, Makefile, c/Makefile.PL: migrate pcmcia in
- drakx to use in-kernel version (only
- for 2.4, though --> pcmcia in 2.2 no longer supported)
-
- * install2.pm: i810fb
-
- * mdk-stage1/stage1.c, mdk-stage1/pcmcia_/lex_config.c,
- mdk-stage1/pcmcia_/cardmgr.c, mdk-stage1/pcmcia_/yacc_config.c,
- mdk-stage1/pcmcia_/Makefile, mdk-stage1/Makefile,
- mdk-stage1/pcmcia_/pcmcia.h, mdk-stage1/pcmcia_/ds.h,
- mdk-stage1/pcmcia_/probe.c: migrate to pcmcia support from kernel,
- patching untouched imported
- sources from pcmcia-cs-3.1.29, to ease further updates of vendor
- code (start from a clean pcmcia_ subdir)
-
-2001/11/21 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm (suggestions_mntpoint): if there's no server suggestion, use
- the simple
- one, so that 'simple' is the only one required when someone modifies
- %fsedit::suggestions
-
-2001/11/20 gbeauchesne
-
- * partition_table.pm:
- - Add isEfi() to isOtherAvailableFS() test so that install doesn't
- suggest
- to format /boot/efi by default. That way, we could preserve (shame on
- us)
- EFI boot partition generated by Windows XP 64 bits...
-
-2001/11/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pcmcia_/lex_config.c, mdk-stage1/pcmcia_/cardmgr.c,
- mdk-stage1/pcmcia_/bulkmem.h, mdk-stage1/pcmcia_/cardmgr.h,
- mdk-stage1/pcmcia_/vg468.h, mdk-stage1/pcmcia_/driver_ops.h,
- mdk-stage1/pcmcia_/i82365.h, mdk-stage1/pcmcia_/cirrus.h,
- mdk-stage1/pcmcia_/version.h, mdk-stage1/pcmcia_/cistpl.h,
- mdk-stage1/pcmcia_/yacc_config.c, mdk-stage1/pcmcia_/cs_types.h,
- mdk-stage1/pcmcia_/cs.h, mdk-stage1/pcmcia_/yacc_config.h,
- mdk-stage1/pcmcia_/ds.h, mdk-stage1/pcmcia_/tcic.h,
- mdk-stage1/pcmcia_/probe.c: Initial revision
- version 3.1.29
-
-2001/11/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive_stdio.pm: for po i can't use $ for string interpolation
-
-2001/11/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * services.pm, standalone/scannerdrake: Corrected English errors
-
- * share/po/hu.po, share/po/cs.po: updated pot file
- updated Czech and Hungarian files
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/no.po, share/po/fi.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/af.po:
- updated pot file
-
-2001/11/19 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (setupBootloader): fix typo
- (setupBootloader): fix typo
-
-2001/11/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Last correction was wrong, reverted it.
-
-2001/11/19 yduret
-
- * standalone/scannerdrake: added dynamic support
-
-2001/11/16 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: syntax cleanup
- - a little cleanup
- - in case there is both scsi and ide hard drives, go to expert
- questions
- directly (it would need a semi_auto asking on which drive the bios
- boots...)
-
-2001/11/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help file
-
- * keyboard.pm: Added Swedish dvorak keyboard
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/help_xml2pm.pl, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/no.po, share/po/fi.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2001/11/12 sdupont
-
- * standalone/drakbackup: new backup tool.
- backend_mode with options.
- begin interactive mode.
-
-2001/10/29 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: code correction
-
-2001/10/29 gbeauchesne
-
- * rescue/list.ia64:
- - Add xfs_repair and efibootmgr
-
-2001/10/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * fs.pm, loopback.pm, fsedit.pm, bootloader.pm: revert back to /initrd
-
- * modules.pm: here too
- CDCEther looks good, I add it
-
-2001/10/29 Pixel <pixel@mandrakesoft.com>
-
- * tools/pcmcia_config.patch: adapt for new pcmcia-cs
-
-2001/10/29 sdupont
-
- * standalone/drakfont: Copyright (C)
- correction of warning & code cleaning.
- the end.... i think...
- updated
- uninstall interface & progress bar
- uninstall interface : lists & progress bar
- new progress bar update
- todo: second list
-
-2001/10/28 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: cleaning
-
-2001/10/27 daouda
-
- * devices.pm, my_gtk.pm, Xconfig.pm: return value at end of module
-
- * share/rpmsrate:
- - increase icewm weight.
-
-2001/10/26 dam's <damien@mandrakesoft.com>
-
- * standalone/drakautoinst, standalone/drakfont: progress bar hack
-
-2001/10/26 Pixel <pixel@mandrakesoft.com>
-
- * mdk-stage1/pcmcia_config.patch: was duplicated in gi/tools
-
- * partition_table_gpt.pm, partition_table_raw.pm: no adjust start and end
- on GPT
-
-2001/10/26 sdupont
-
- * standalone/drakfont: updated.
- search correct progress bar mode implementation.
- updated
- fix some bugs & interface progress implementation.
- TODO:
- progress before backend.
- search if directory already exist before custom install.
-
-2001/10/25 dam's <damien@mandrakesoft.com>
-
- * standalone/drakautoinst: simple variables handled, code compression.
- The new and shiny drakautoinst is coming. P|-|34R
- The new drakautoinst is coming. P|-|34R
-
- * pixmaps/mdk_logo.png: additional logo
-
- * standalone/drakfont: code correction
-
-2001/10/25 sdupont
-
- * standalone/drakfont: merge differents versions.
- file sector, list of fonts for advanced install...
- applications choice, license widget, help widget.
-
-2001/10/24 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: updated
- updated
- updated, lot of bugs.
- updated
-
- * my_gtk.pm: added set_editable
-
-2001/10/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/lsparts, mdk-stage1/rescue-gui.c, mdk-stage1/frontend.h,
- mdk-stage1/.cvsignore, rescue/install_bootloader,
- rescue/tree/etc/rc.sysinit, rescue/Makefile,
- mdk-stage1/stdio-frontend.c, rescue/guessmounts, mdk-stage1/Makefile,
- rescue/tree/etc/issue, rescue/make_rescue_img,
- mdk-stage1/newt-frontend.c:
- - add a GUI to the rescue
- - provide guessmounts with better efficiency and output, go to
- console, and reboot
- - provide install_bootloader which runs lilo from /mnt if it seems
- safe
- - add lsparts to rescue, which prints partitions with detected types
-
-2001/10/24 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: replace /initrd with /lib/initrd
- (hds): in case of GPT, allow ext2 to be replaced by any kind of
- partitions (esp. EFI)
-
- * partition_table.pm, partition_table_gpt.pm, partition_table_bsd.pm,
- partition_table_raw.pm: add methods first_usable_sector and
- last_usable_sector
-
- * fs.pm, loopback.pm, bootloader.pm: replace /initrd with /lib/initrd
-
-2001/10/24 sdupont
-
- * standalone/drakfont: scroll
- `
- import_status & progress.
- gi update.
-
-2001/10/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * services.pm: tagged as translatable some left out strigns
-
-2001/10/23 sdupont
-
- * standalone/drakfont: gi update
- doc and progress bar.
- gui: install from directory
- gui supported.
-
-2001/10/23 yduret
-
- * share/po/fr.po: fixed fohtes grammar
-
-2001/10/22 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm: speedtouch config : added usa vpi vci
-
-2001/10/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules.c: oops forgot to umount after "updatemodules"...
-
-2001/10/22 Pixel <pixel@mandrakesoft.com>
-
- * rescue/tree/etc/profile: fix PATH (have /mnt/bin /mnt/usr/bin ...)
-
-2001/10/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed connection device setting for "oki4w" driver.
-
-2001/10/19 gbeauchesne
-
- * partition_table_gpt.pm:
- - Use /dev/random through devices::make() instead of /dev/urandom
- - Localize file descriptor
- - Capitalize error message if no /dev/random found
-
- * partition_table.pm:
- - s/Win98 FAT32/FAT32/
- - s/Partition that contains an EFI file system/EFI (FAT-12/16/32)/
- - Add "FAT32" to @important_types for IA-64 & /boot/efi
-
-2001/10/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stdio-frontend.c: small fix
-
-2001/10/19 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm: OOize can_raw_add
-
- * partition_table.pm: handle empty $hd->{primary}{raw} (happens with no
- partitions on ia64)
- - raw_add, can_raw_add moved to partition_table_raw
- - using raw_removed
-
- * partition_table_dos.pm: better handling of CHS overflow (mainly for non
- cylinder-boundary aligned part (like ia64))
-
- * partition_table_raw.pm (adjustEnd): in case the end is totalsectors,
- don't adjust since totalsectors / cylinder_size may not be an integer
- (zero_MBR): defaults to GPT on ia64
- (raw_add, can_raw_add, raw_removed): created, can now be overloaded in
- partition_table_*.pm's
- (get_geometry): keep the total_sectors as given by c::total_sectors,
- don't try to recompute it based on nb_cylinders (for hds where
- total_sectors is not a multiple of nb_cylinders)
-
- * common.pm: cleanup
-
- * partition_table_gpt.pm: fix ending is last sector, not next one
- add TODO for partition entry guid
- - writing partition table now works
- - creating a new partition table now works (except GUIDs generation)
-
-2001/10/18 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm: corrected GET_FL and co
-
-2001/10/18 François Pons <fpons@mandrakesoft.com>
-
- * standalone/XFdrake: fix ia64 glitches with /usr/X11R6/lib/X11/Cards (now
- use rgb.txt instead).
-
-2001/10/18 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_gpt.pm:
- - add checksum verif on partition entries
- - detect the type of partition since the partition table types seem
- quite poor
- read part of GPT partition table working
-
- * fsedit.pm:
- - add checksum verif on partition entries
- - detect the type of partition since the partition table types seem
- quite poor
-
- * partition_table.pm: read part of GPT partition table working
- shorter GPT name
-
- * detect_devices.pm: safer modprobe ide-floppy
-
-2001/10/18 sdupont
-
- * standalone/drakfont: change Fontmap ghostscript file.
- drakfont support now .gsf fonts
- end of backend......
- update
-
-2001/10/17 dam's <damien@mandrakesoft.com>
-
- * standalone/draksec: typo
-
-2001/10/17 sdupont
-
- * standalone/drakfont: implementation of type1 fonts removing.
- ghostscript, xfs and staroffice tested and supported.
-
-2001/10/16 dam's <damien@mandrakesoft.com>
-
- * standalone/draksec: correct bad level display
-
- * standalone/interactive_http/Makefile: makes rpmlint happy
-
-2001/10/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: print checks
-
- * rescue/tree/etc/rc.sysinit: better phrasing
-
-2001/10/16 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * rescue/devices.pl, mdk-stage1/pci-resource/update-pci-ids.pl,
- rescue/list.ppc: typo in update kernel by /me
- fine-tune sanity_check for ppc
- move /dev/nvram from list.ppc to devices.pl
-
-2001/10/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2001/10/15 yduret
-
- * scanner.pm: wonderful perl forgotten
-
-2001/10/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: have "other.img" drivers also
- supported
-
-2001/10/12 sdupont
-
- * standalone/drakfont: support all installations, and support xfs,
- ghostcript, staroffice.
- todo aplli: openoffice, gimp, abiword, netscape & other browsers...
- todo or to see: --strong ttmkfdir -c ???
- emd of backend..
-
-2001/10/11 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: multiple card configuration bug corrected.
- allelluia.
-
- * network/tools.pm: aded use c
-
- * standalone/drakfont: code review
-
-2001/10/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive_stdio.pm, install_steps_stdio.pm: stdio mode works again
-
-2001/10/11 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: ensure postInstallNonRooted is done *before* ejecting cdrom
-
-2001/10/11 sdupont
-
- * docs/drakfont/drakfont.log, docs/drakfont/drakfont.pdf,
- docs/drakfont/drakfont.dvi: clean directory..
-
- * docs/drakfont/drakfont.aux, docs/drakfont/dia_srcs/drakfont.dia,
- docs/drakfont/dia_srcs/drakfont_uninstall.dia,
- docs/drakfont/dia_srcs/drakfont_install.dia: delete all bads files...
-
- * standalone/drakfont: improved....
- improved && implement remove fonts for xfs
- improved
- improved
- optimisation
- correction of option install --replace
- dialog of install options
- correction of install option.
-
- * docs/drakfont/drakfont.jpg, docs/drakfont/drakfont_install.jpg,
- docs/drakfont/drakfont_uninstall.jpg, docs/drakfont/mandrake.ps: jpg &
- ps with -kb option
- clean...2
-
-2001/10/10 dam's <damien@mandrakesoft.com>
-
- * standalone/drakfont: typo
- improved options handling
-
- * standalone/net_monitor: ergo and features improvments, pipe handling
- correction
-
- * network/tools.pm: updated
-
-2001/10/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, share/locales-skeleton.tar.bz2: enabled Maltese language
-
-2001/10/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: normalize the default type entry ("entry")
-
- * interactive_gtk.pm: fix typo (on clicked_may_quit)
-
-2001/10/10 sdupont
-
- * standalone/drakfont: option replace for "install from" &
- windows_import...
- update install dir
- better for --install
- new version of drakfont. in perl langage.
-
- * docs/drakfont/drakfont.jpg, docs/drakfont/drakfont.aux,
- docs/drakfont/drakfont.log, docs/drakfont/drakfont.pdf,
- docs/drakfont/drakfont.tex, docs/drakfont/Makefile,
- docs/drakfont/drakfont_install.jpg, docs/drakfont/drakfont.dvi,
- docs/drakfont/drakfont_uninstall.jpg, docs/drakfont/mandrake.ps: docs
- drakfont
-
-2001/10/10 yduret
-
- * standalone/scannerdrake: first apparition on earth..
-
- * Makefile.config: added scannerdrake
-
-2001/10/09 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm: removed trash
- connection test is now in background, corrects the interface freeze
- problem
-
- * pixmaps/net_u.png: new pixmap for draknet/net_monitor
-
- * standalone/net_monitor, standalone/draknet: connection test is now in
- background, corrects the interface freeze problem
-
-2001/10/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
-2001/10/09 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: fix detecting read-only drives (like memory-sticks)
-
- * partition_table.pm: make perl_checker happy
-
- * partition_table_raw.pm: fix detecting read-only drives (like
- memory-sticks)
- make perl_checker happy
-
- * modules.pm, detect_devices.pm, install2.pm: ensure floppies() takes care
- of usb-storage if possible, so that patch on usb floppy works
-
-2001/10/09 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator_consts.pm, keyboard.pm, Xconfigurator.pm: move to Linux
- keycodes on PPC, add additional Apple modelines
-
- * install_steps_interactive.pm: re-enable PPC bootloader setup
-
-2001/10/08 dam's <damien@mandrakesoft.com>
-
- * c/stuff.xs.pm: added FL_GET and FL_SET
-
-2001/10/08 François Pons <fpons@mandrakesoft.com>
-
- * modules.pm: keep isp and gdth module for hd.img (as well as all.rdz) as
- they have been
- removed from the skip list for stage1.
-
- * rescue/tree/etc/oem: added silly modification to avoid using more than 7
- partition for DAC960 (/home
- and /var are not created in the current state).
-
-2001/10/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: ia64
-
- * mdk-stage1/Makefile: 8.1 -> cooker
-
-2001/10/08 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm, partition_table.pm: yet a few other ataraid cases
-
-2001/10/06 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * partition_table_raw.pm, partition_table.pm: updates to accomodate IBM
- PPC systems with DOS partition table
-
-2001/10/05 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: added (missing) creation of
- /hd/boot/grub/device.map (needed for
- CompactSmartArray).
-
-2001/10/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: kdegames : 2 -> 4
-
-2001/10/04 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fix (work around) parted problem when it refuse to
- use all disk space for
- partition.
- added another psacct log file in touch.
- fixed typo on scalar reference for psacct bug.
- updated with 8.1 OEM ProSuite.
-
- * tools/oem-prepare: updated with 8.1 OEM ProSuite.
-
-2001/10/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po: updated Hungarian file
-
-2001/10/04 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_dos.pm: is little-endian, so use "V" instead of "I"
-
-2001/10/03 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: synced with oem script.
- removed 3D games not installed by default.
-
- * rescue/tree/etc/oem: fixed typo in produced patch.
- added extension to pro suite CD (added kernel-enterprise to possibly
- installable
- and install kernel22).
- removed 3D games not installed by default.
- added missing xmms-arts.
- allow halting.
-
-2001/10/03 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm: yet another ataraid support patch
-
-2001/10/02 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fix previous hack.
- added hack to do "/sbin/depmod -a" for NVIDIA driver.
-
-2001/10/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/probing.c: new pci-ids.h
-
- * mdk-stage1/usb-resource/update-usb-ids.pl: better look
-
- * share/po/fr.po: small fix
-
- * standalone/drakgw: don't call pkgs_install when no package needs to be
- installed
-
-2001/10/02 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm: bloody ataraid detection
-
- * devices.pm: ataraid devices support
-
-2001/10/01 François Pons <fpons@mandrakesoft.com>
-
- * share/rpmsrate: fixed bad format for BOOKS used in DEVELOPMENT.
-
- * rescue/tree/etc/oem: added CHARSET support, removed kernel22 and
- kernel-enterprise from list of
- package installable in oem mode, added possibility to set language on
- /etc/oem
- script invocation.
-
- * install_steps_interactive.pm: avoid chooseCD on oem install.
-
- * install_steps_gtk.pm: avoid asking for changing CD on oem install.
-
- * install_any.pm: use $boot_medium for default medium in oem install,
- avoid using kernel22 or
- kernel-enterprise in oem install (space available is too tight on CD oem
- version).
-
- * tools/oem-prepare: synced with oem script.
-
-2001/10/01 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: reword it so that it reflects
- what's in the marfiles
-
-2001/10/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bg.po: updated Bulgarian file
-
-2001/09/29 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * docs/README: New adress where to find the kernel BOOT
-
-2001/09/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2001/09/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/drvinst: don't install usb keyboard drivers more than once
- try to fix usb keyboards
-
-2001/09/27 kjx
-
- * share/po/zh_CN.po: translating
-
-2001/09/26 gbeauchesne
-
- * install_any.pm:
- - Suggest /boot/efi on IA-64 for the first VFAT partition found,
- instead
- of /mnt/windows
-
- * bootloader.pm:
- - bootloader.pm (suggest): don't search for dos (or windows) boot
- partition
- on IA-64 since ELILO can only boot Linux.
- - bootloader.pm (write_lilo_conf): don't cry if we don't have
- /boot/boot.b
- or boot/message on IA-64.
-
- * rescue/list.ia64:
- - Add file list for "rescue" disk
-
- * share/list.ia64, partition_table.pm:
- - partition_table.pm: Add XFS suggestion for IA-64
- - share/list.ia64: misc updates and additions wrt. XFS, ReiserFS
-
-2001/09/25 baudens
-
- * share/po/fr.po: s/Linux Mandrake/Mandrake Linux/
- Remove totally crazy translation.
- Translators, please use your brain!
-
-2001/09/25 gbeauchesne
-
- * partition_table.pm:
- - Add ReiserFS and Ext3fs entries for IA-64
-
-2001/09/25 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (naughtyServers): cleanup comments
-
-2001/09/25 warly
-
- * share/rpmsrate: put gtk-themes _and_ sawfish-themes to 4 so that it is
- installed for newbie and drakfirsttime does not fail.
- put gtk-themes to 4 so that it is installed for newbie and drakfirsttime
- does not fail.
-
-2001/09/25 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: allow non ejectable medium to allow all
- hdlists on the bootable medium.
- make current boot medium already selected if multiple hdlist are on this
- boot medium.
-
-2001/09/25 warly
-
- * share/rpmsrate: put gtk-themes _and_ sawfish-themes to 4 so that it is
- installed for newbie and drakfirsttime does not fail.
- put gtk-themes to 4 so that it is installed for newbie and drakfirsttime
- does not fail.
-
-2001/09/24 dam's <damien@mandrakesoft.com>
-
- * share/po/fr.po: corrected translation
-
-2001/09/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/mount.c, mdk-stage1/mount.h,
- mdk-stage1/disk.c: hd.img now detects partition types... backport from
- DrakX :-)
-
-2001/09/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
-2001/09/24 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (mount_part): fix for iso loopback mounted
-
- * share/po/fr.po: fix
-
-2001/09/24 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/isdn.pm: type assignation bug fix
- corrected type assignation
-
- * share/po/fr.po: corrected bad translation
-
- * standalone/draknet: corrected type assignation
-
-2001/09/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * bootloader.pm: fix add_append (there was a ) at the end of the parameter
- value)
-
-2001/09/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/tr.po, share/po/es.po: updated Spanish, Korean
- and Turkish files
-
-2001/09/24 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (mount_part): fix for iso loopback mounted
-
- * share/po/fr.po: fix
-
-2001/09/24 warly
-
- * share/rpmsrate: lower arkeia
-
-2001/09/24 dam's <damien@mandrakesoft.com>
-
- * modules.pm: corrected isdn firmware
-
- * network/adsl.pm, network/isdn.pm: type assignation bug fix
- corrected type assignation
-
- * share/po/fr.po: corrected bad translation
-
- * standalone/draknet: corrected type assignation
-
-2001/09/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * bootloader.pm: fix add_append (there was a ) at the end of the parameter
- value)
-
-2001/09/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/tr.po, share/po/es.po: updated Spanish, Korean
- and Turkish files
-
-2001/09/24 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix small error merging existing fstab
-
- * share/po/fr.po: fix
-
- * diskdrake.pm: do not propose to mount/umount removable medias (disabled
- for now)
-
- * diskdrake_interactive.pm: hide the supermount checkbox in standalone
-
-2001/09/24 warly
-
- * share/rpmsrate: lower arkeia
-
-2001/09/24 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm, network/ethernet.pm: bug fix
-
- * modules.pm: corrected isdn firmware
-
- * network/isdn.pm, network/adsl.pm: type assignation bug fix
- corrected type assignation
-
- * standalone/draknet: corrected type assignation
-
- * install_any.pm, rescue/tree/etc/oem: added isdn-light to be copied on hd
- during install
-
-2001/09/24 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: deactivated Riva128 3D hw acceleration and too many
- problems reported with it.
-
- * share/rpmsrate: allow rpm build for non expert who choose development.
-
- * install_steps.pm: disable wins in /etc/nsswitch.conf (after installed
- packages).
-
-2001/09/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/tr.po, share/po/es.po: updated Spanish, Korean
- and Turkish files
-
-2001/09/24 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix small error merging existing fstab
- add "iocharset=" for cdrom
-
- * install_steps.pm:
- - disable supermount by default
- - cleanup nsswitch.conf wins removing
-
- * diskdrake.pm: do not propose to mount/umount removable medias (disabled
- for now)
-
- * diskdrake_interactive.pm: hide the supermount checkbox in standalone
-
-2001/09/24 siegel
-
- * share/po/de.po: new german version
-
-2001/09/24 warly
-
- * share/rpmsrate: lower arkeia
-
-2001/09/24 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm, network/ethernet.pm: bug fix
-
-2001/09/24 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: deactivated Riva128 3D hw acceleration and too many
- problems reported with it.
-
- * share/rpmsrate: allow rpm build for non expert who choose development.
- removed any reference to XFree86-glide-module or Glide_XXX packages.
-
- * pkgs.pm: sort mediums by number, in allMediums() else they will be in
- hash keys orders in
- install_steps_interactive::chooseCD().
-
- * install_steps.pm: disable wins in /etc/nsswitch.conf (after installed
- packages).
-
-2001/09/24 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: add "iocharset=" for cdrom
-
- * install_steps.pm:
- - disable supermount by default
- - cleanup nsswitch.conf wins removing
-
-2001/09/24 François Pons <fpons@mandrakesoft.com>
-
- * share/rpmsrate: removed any reference to XFree86-glide-module or
- Glide_XXX packages.
-
- * pkgs.pm: sort mediums by number, in allMediums() else they will be in
- hash keys orders in
- install_steps_interactive::chooseCD().
-
-2001/09/24 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: File permission settings during install were not done.
- Fixed.
-
-2001/09/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: misc typo correction
-
- * install_steps.pm: voodoo cards don't like performing 3d accel in fb mode
-
-2001/09/23 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: add "Graphical Environment" in meta_class server
-
- * share/rpmsrate: simplify (for the moment)
- do not force X flag, have it selected for any "Graphical Environment"
-
- * share/compssUsers, install_any.pm: do not force X flag, have it selected
- for any "Graphical Environment"
-
-2001/09/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps.pm: voodoo cards don't like performing 3d accel in fb mode
-
-2001/09/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po, share/po/hu.po: updated Czech and Hungarian file
-
- * share/po/zh_TW.po: updated Chinese file
-
-2001/09/23 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: add "Graphical Environment" in meta_class server
-
- * fsedit.pm: add magic SWAPSPACE2
-
- * bootloader.pm: allow bootloader on fat partitions
-
- * share/compssUsers, share/rpmsrate, install_any.pm: do not force X flag,
- have it selected for any "Graphical Environment"
-
-2001/09/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: version is 8.1
-
-2001/09/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bs.po: updated Bosnian file
-
-2001/09/22 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, install2.pm:
- - cleanup noatime option setting
- - cleanup exec option setting (must noexec => 0 instead of exec => 1)
-
- * bootloader.pm (suggest): fix kernel 2.2 secure adding in menu
-
-2001/09/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bg.po: updated Bulgarian file
-
-2001/09/22 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (suggest): fix kernel 2.2 secure adding in menu
-
-2001/09/22 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added support for automatic /dev/... file permissions
- setting by devfsd.
- Improved matching of auto-detection results with database entries.
- Given hint to the user to select the correct model when matching fails.
-
- * printer.pm: Added support for automatic /dev/... file permissions
- setting by devfsd.
-
-2001/09/21 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm: avoid detecting plip for live upgrade.
-
-2001/09/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: use "us" XKB file for Korean keyboard, otherwise some
- functionality is lost
- small fix for "vn" keyboard (enable toggle key)
-
- * share/po/ko.po: updated Korean file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/vi.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/bs.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * printerdrake.pm: small fix
-
-2001/09/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: When one changes the driver of a freshly
- added printer, the cursor was not pointed to the old driver, fixed.
- Fixed paper size not set according to chosen language during
- installation.
-
-2001/09/21 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm: typo
-
-2001/09/21 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: reworked medium management.
- moved com_license to parent package (as code that show the license is
- now
- available even for non gtk install).
-
- * Xconfigurator.pm: S3 ViRGE is a bad card for testing on live upgrade.
-
- * pkgs.pm, install_any.pm: reworked medium management.
-
- * detect_devices.pm: avoid detecting plip for live upgrade.
-
- * install_steps_interactive.pm: avoid keeping testing code.
- reworked medium management.
- added code to support changeable cdrom, set a unique copy of license for
- installing commercial application as package variable (exported).
-
-2001/09/21 gbeauchesne
-
- * share/po/no.po: remove trailing '\n'
-
-2001/09/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hu.po, share/po/no.po: updated pot file
- updated pot file
- updated Norwegian and Hungarian files
- updated pot file
-
- * help.pm: updated help file
-
- * share/po/help_xml2pm.pl: updated pot file
-
- * printerdrake.pm: small fix
- changed text strings to be more translator friendly
- (NEVER EVER cut a phrase)
-
- * share/po/zh_CN.po, share/po/ru.po, share/po/vi.po: updated pot file
- updated pot file
- corrected extra \n
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/pt_BR.po, share/po/hr.po, share/po/ko.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/bs.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
- updated pot file
- updated pot file
-
- * keyboard.pm: adapted keyboard priority numbers (it is useless to give a
- multichoice with a
- value higher than 90)
-
- * share/po/zh_TW.po: updated pot file
- updated pot file
-
-2001/09/21 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm: write password in lilo.conf even if it's also done by
- msec, otherwise lilo will fail with restricted only
-
- * install_steps.pm: Ensure $o->{superuser}{name} is temporary
-
- * share/rpmsrate, install_any.pm: add HIGH_SECURITY flag, use it for
- libsafe and kernel22-secure
-
-2001/09/21 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Added a forgotten "_( ... )".
-
-2001/09/21 warly
-
- * share/rpmsrate: add gnomemeeting and openmcu
-
-2001/09/20 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm (partition_with_diskdrake): ensure the $::expert
- flag modifications in
- diskdrake do not escape from diskdrake
-
- * install_steps_interactive.pm (choosePartitionsToFormat): do not propose
- check bad blocks for xfs and jfs
-
-2001/09/20 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: don't reapply the conf, if already applied.
- usefull for dhcp, because the network should be restarted after
- configured
-
- * network/adsl.pm: test if microcode is there
-
- * bootlook.pm: removed blocking die
-
-2001/09/20 fcrozat
-
- * share/rpmsrate: Add gnome-user-docs to GNOME install
- Install Mdk eazel engine for gnome
-
-2001/09/20 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: take care not probing in /dev/ for finding package to upgrade,
- this cause
- problem in live_upgrade.
-
- * Xconfigurator.pm: added VideoRam for ET 6x00 card.
-
- * network/netconnect.pm: tried to fix damien sucking.
-
-2001/09/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: misc
-
-2001/09/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/cs.po: updated Czech file
-
- * share/po/nl.po, share/po/da.po, share/po/zh_TW.po: updated Danish,
- Chinese and Dutch files
-
-2001/09/20 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm (partition_with_diskdrake): ensure the $::expert
- flag modifications in
- diskdrake do not escape from diskdrake
-
- * share/rpmsrate: raise i18n fonts
-
- * fsedit.pm (hds): do a get_major_minor where needed
-
- * lang.pm: replace xcin by chinput as per Alex request
-
- * install_steps_interactive.pm (choosePartitionsToFormat): do not propose
- check bad blocks for xfs and jfs
-
-2001/09/20 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed flow of the program for the "recommended" mode of
- the installation.
-
-2001/09/20 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: don't reapply the conf, if already applied.
- usefull for dhcp, because the network should be restarted after
- configured
-
- * mouse.pm: text positionning
-
- * standalone/net_monitor: less gethostbyname
-
-2001/09/20 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: take care not probing in /dev/ for finding package to upgrade,
- this cause
- problem in live_upgrade.
-
- * network/netconnect.pm: tried to fix damien sucking.
-
-2001/09/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/da.po, share/po/zh_TW.po: updated Danish,
- Chinese and Dutch files
-
-2001/09/20 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: raise i18n fonts
- s/telnet-server/telnet-server-krb5/
-
- * fsedit.pm (hds): do a get_major_minor where needed
-
- * fs.pm (add2all_hds): allow both "smbfs" and "smb" as fs type
-
- * lang.pm: replace xcin by chinput as per Alex request
-
- * printerdrake.pm: back out the modif from till as asked by till
-
-2001/09/20 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Make it possible to configure more than 1 printer in a
- "recommended" mode installation.
-
-2001/09/19 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/netconnect.pm, network/ethernet.pm: network
- restart at better place
-
-2001/09/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: chromium and tuxracer don't work well with Riva
-
-2001/09/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: updated pot file
- updated help xml
-
- * help.pm: updated help file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/bg.po, share/po/sr.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/nl.po, share/po/ja.po,
- share/po/sv.po, share/po/hu.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/vi.po, share/po/gl.po,
- share/po/ca.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/de.po:
- updated help xml
-
- * share/po/wa.po: updated pot file
- updated pot file
-
-2001/09/19 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/netconnect.pm, network/ethernet.pm: network
- restart at better place
-
-2001/09/19 fcrozat
-
- * share/rpmsrate: Add mdk-eazel-engine
-
- * share/po/fr.po: Fix french mistakes
-
-2001/09/19 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added code to check if package are really installed.
-
- * Xconfigurator.pm: Rage 128 doesn't like XF3 at all.
- make only bad card Riva128 for testing XF4.
- Riva128 is now a bad card.
-
-2001/09/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: raklet quoting
-
- * share/rpmsrate: chromium and tuxracer don't work well with Riva
-
-2001/09/19 Pixel <pixel@mandrakesoft.com>
-
- * loopback.pm (create): don't use seek to create big files otherwise you
- get hole and
- swapon doesn't like it
-
- * any.pm (ask_users): default icon "man"
-
- * lang.pm: compatibility with older $o->{lang} names (for auto_installs)
-
- * install2.pm: initial support for server install
- compatibility with older $o->{lang} names (for auto_installs)
-
- * install_steps_gtk.pm: initial support for server install
-
- * printerdrake.pm: help perl_checker
-
- * pkgs.pm, share/rpmsrate, install_any.pm:
- - gmc instead of nautilus for non-latin1 installs
- - introduce CHARSET flag and use it
-
-2001/09/19 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Network is now only required (and checked) for remote
- printers.
- Several buglets fixed in remote CUPS server dialog.
-
- * printerdrake.pm: Removed a forgotten debug help line from the code.
- Fixed typo in dialog text of high/paranoid security.
- Network is now only required (and checked) for remote printers.
- Several buglets fixed in remote CUPS server dialog.
-
-2001/09/18 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: don't ask to connect if lan or dhcp
-
-2001/09/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install2.pm: don't create bootdisk by default
-
- * share/po/fr.po: misc
-
-2001/09/18 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (write_passwd_user): fix setting "pw" field (for auto_installs)
-
- * install_steps_gtk.pm, pkgs.pm: tentative to correct install time for big
- installs
-
-2001/09/18 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, my_gtk.pm: corrected Speedtouch -> speedtouch
-
- * network/netconnect.pm: don't ask to connect if lan or dhcp
-
- * standalone/drakgw: debug
-
-2001/09/18 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: added X group with SYSTEM.
- finally work arounded rpm bug by flepied.
-
- * detect_devices.pm: added back full pci probe for stage2 command lspci.
- removed full pci probe for stringlist (used for generating report_bug).
-
- * install_steps_interactive.pm: now finally really fixed printer label in
- summary dialog.
- fixed printer description in summary (again).
- fixed no printer displayed (at least, print Remote CUPS server).
-
- * commands.pm: make lspci a full pci probe instead of safe pci probe.
-
-2001/09/18 gbeauchesne
-
- * Xconfigurator.pm:
- - Force XFree 4 on IA-64. No XFree 3.3.X there...
-
- * tools/ia64/elilo.efi:
- - elilo 3.1
-
-2001/09/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install2.pm: don't create bootdisk by default
-
- * standalone/drakautoinst: have "manual" and "replay" translated
-
- * share/po/fr.po: misc
-
-2001/09/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po, share/po/hu.po: updated Dutch and Hungarian files
-
-2001/09/18 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm, share/gen_locales.sh, share/locales-skeleton.tar.bz2:
- - remove ISO-8859-5, KOI8-R and KOI8-U
- - cleanup packdrake extracting locales
- - cleanup/fixes lang.pm
-
- * install_steps.pm: fix setting kdmrc for latin1
-
- * any.pm (write_passwd_user): fix setting "pw" field (for auto_installs)
-
- * install_steps_gtk.pm, pkgs.pm: tentative to correct install time for big
- installs
-
-2001/09/17 François Pons <fpons@mandrakesoft.com>
-
- * rescue/list: updated for rpm 4.0.3.
-
- * rescue/tree/etc/oem: updated for 8.1, contains workaround for bug of
- "rpm --root" but need more testing.
-
- * standalone/XFdrake: removed comment.
- added support to configure NVIDIA driver if everything is correctly
- installed.
-
-2001/09/17 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, fsedit.pm:
- - '--' to separate options for supermount + small workaround (ro and
- exec before --)
- - fix nfs in manualFstab (for auto_installs, reported by David
- Eastcott)
-
-2001/09/17 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug of /etc/foomatic/defaultspooler not been written
- in expert install.
-
-2001/09/17 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: no expert mode needed to choose gateway
-
-2001/09/17 François Pons <fpons@mandrakesoft.com>
-
- * rescue/list: updated for rpm 4.0.3.
-
- * rescue/tree/etc/oem: updated for 8.1, contains workaround for bug of
- "rpm --root" but need more testing.
-
- * printerdrake.pm: add eval around installing lexmark-driver
- (proprietary).
-
- * Xconfigurator.pm: deactivating bad card test (too).
-
- * standalone/XFdrake: removed comment.
- added support to configure NVIDIA driver if everything is correctly
- installed.
-
-2001/09/17 odin
-
- * share/po/fr.po: updated fr.po
-
-2001/09/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: Added choice of "English|Ireland (euro)" so people wanting
- English language but also euro symbol can choose it.
- fixed Belgian keyboard
-
- * share/po/fr.po, share/po/wa.po, share/po/es.po: updated Spanish and
- Wallon files; corrected error syntax in French file
-
- * lang.pm: Added choice of "English|Ireland (euro)" so people wanting
- English language but also euro symbol can choose it.
-
-2001/09/17 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm:
- - '--' to separate options for supermount + small workaround (ro and
- exec before --)
- - fix nfs in manualFstab (for auto_installs, reported by David
- Eastcott)
- (mount): do not hand update /etc/mtab for nfs mounts, already done by
- mount(8)
- (set_default_options): disable iocharset= and codepage= for supermount
-
- * partition_table.pm (adjust_main_extended): do not use linux extended
-
- * detect_devices.pm (pci_probe): log full pci probes
-
- * standalone/drakbug_report: fix
-
- * fsedit.pm:
- - '--' to separate options for supermount + small workaround (ro and
- exec before --)
- - fix nfs in manualFstab (for auto_installs, reported by David
- Eastcott)
-
-2001/09/17 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug of /etc/foomatic/defaultspooler not been written
- in expert install.
- Do not die when "chkconfig" fails (needed for "security_check").
- Added "-q" option to foomatic-configure (should not get interactive).
- Added handling of high and paranoid security levels.
-
- * printerdrake.pm: /etc/foomatic/defaultspooler was not written in expert
- mode installation.
- Added handling of high and paranoid security levels.
-
-2001/09/17 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: add eval around installing lexmark-driver
- (proprietary).
-
-2001/09/17 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (pci_probe): log full pci probes
-
- * fs.pm (set_default_options): disable iocharset= and codepage= for
- supermount
-
-2001/09/17 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: add eval around installing lexmark-driver
- (proprietary).
-
-2001/09/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/vi.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2001/09/17 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (pci_probe): log full pci probes
-
-2001/09/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (getAndSaveAutoInstallFloppy): skip it on ia64
-
- * pkgs.pm (read_rpmsrate): fix bug
-
-2001/09/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug which prevented from printing the option list
- during install.
- Fixed bug which prevents printerdrake from running without PDQ
- installed.
-
-2001/09/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (getAndSaveAutoInstallFloppy): skip it on ia64
- more up to my need ALL flag in compssUsersChoice
- remove auto-install special case (initialisation of compssUsersChoice)
-
- * share/rpmsrate:
- - cleanup packages appearing twice in rpmsrate
- - handle a few case of packages appearing twice
- - special case for packages appearing in INSTALL section (flag
- dropped)
- - new special flag ALL for compssUsersChoice
-
- * pkgs.pm: more up to my need ALL flag in compssUsersChoice
- - cleanup packages appearing twice in rpmsrate
- - handle a few case of packages appearing twice
- - special case for packages appearing in INSTALL section (flag
- dropped)
- - new special flag ALL for compssUsersChoice
-
- * rescue/make_rescue_img: use new mkdir_p, rm_rf and cp_af from
- MDK::Common
-
-2001/09/16 siegel
-
- * share/po/help_xml2pm.pl: added "systemitem"
-
-2001/09/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Fixed bug which prevents printerdrake from running without
- PDQ installed.
-
-2001/09/16 dam's <damien@mandrakesoft.com>
-
- * mouse.pm, my_gtk.pm: bugfix + cosmetic changes
-
-2001/09/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: updated help.pm file
-
- * share/po/hu.po: updated Hungarian file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/vi.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/bs.po, share/po/da.po, share/po/zh_TW.po,
- share/po/cs.po, share/po/af.po: updated pot file
-
-2001/09/16 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: "please click on ..." for removable, nfs, smb.
-
- * fsedit.pm: enhance lvm handling (mostly standalone)
- - cleanup & enhance raid mdstat reading (now works with or without
- devfs mounted)
- - chunk size is buggy?
-
- * install_any.pm (getAndSaveAutoInstallFloppy): skip it on ia64
- more up to my need ALL flag in compssUsersChoice
- remove auto-install special case (initialisation of compssUsersChoice)
- use new mkdir_p, rm_rf and cp_af from MDK::Common
-
- * share/rpmsrate:
- - cleanup packages appearing twice in rpmsrate
- - handle a few case of packages appearing twice
- - special case for packages appearing in INSTALL section (flag
- dropped)
- - new special flag ALL for compssUsersChoice
-
- * verify_c: add special case for c::to_utf8
-
- * pkgs.pm: more up to my need ALL flag in compssUsersChoice
- - cleanup packages appearing twice in rpmsrate
- - handle a few case of packages appearing twice
- - special case for packages appearing in INSTALL section (flag
- dropped)
- - new special flag ALL for compssUsersChoice
- use new mkdir_p, rm_rf and cp_af from MDK::Common
-
- * services.pm, install2.pm, lang.pm, commands.pm, loopback.pm,
- tinyfirewall.pm, raid.pm, keyboard.pm, printerdrake.pm, fs.pm, mouse.pm,
- network/netconnect.pm, timezone.pm, network/adsl.pm, install_steps.pm,
- any.pm, printer.pm, rescue/make_rescue_img, bootloader.pm: use new
- mkdir_p, rm_rf and cp_af from MDK::Common
-
- * diskdrake_interactive.pm, lvm.pm: enhance lvm handling (mostly
- standalone)
-
- * devices.pm (make): ensure it never returns a non-absolute name
- (it happened with make("foo") when cwd=/dev and /dev/foo existed)
-
-2001/09/16 siegel
-
- * share/po/help_xml2pm.pl: added "systemitem"
- added commet explainig that help.pm is automatically generated.
-
- * .cvsignore: added .*.sw? for vim users
-
-2001/09/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Added possibility to list command line
- options for the printers and to give the users help for printing
- Fixed bug of sometimes appearing the wron dialog after printing test
- pages
-
-2001/09/15 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix options appearing twice in fstab
-
- * install_steps.pm, any.pm, c/stuff.pm: i18n kdmrc
-
- * lang.pm (load_mo): ensure the locale is set (was broken in non-gtk
- installs)
-
- * install_steps_auto_install.pm (enteringStep): do not translate in
- ja|ko|zh
-
-2001/09/15 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix options appearing twice in fstab
-
- * install_steps.pm, any.pm, c/stuff.pm: i18n kdmrc
-
- * lang.pm (load_mo): ensure the locale is set (was broken in non-gtk
- installs)
-
- * install_steps_auto_install.pm (enteringStep): do not translate in
- ja|ko|zh
-
-2001/09/15 civileme
-
- * help.pm: Added a dialog in English for users selecting a printing system
- since no other
- OS seems to offer such a choice during install.
-
-2001/09/15 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: better connection testing
-
- * network/tools.pm: more timeout
-
- * network/adsl.pm: avoid asking 2 times to restart the ethernet card
-
- * mouse.pm: readded darea realization
-
-2001/09/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: make gtk-themes installed when Gnome is choosen
-
- * share/po/es.po: updated Spanish file
-
- * share/po/wa.po, share/po/hu.po: updated Hungarian file
-
-2001/09/15 Pixel <pixel@mandrakesoft.com>
-
- * Makefile.config, tools/Makefile: add aewm-drakx
-
- * install_steps_gtk.pm: makes cancel on mouse selection works even better
- - add and use aewm-drakx
- - add some "skip" title on help/logo/steps windows so that aewm-drakx
- know they don't need keyboard focus
- - add some more title to ease debugging (when aewm-drakx is in debug
- mode)
-
- * install_gtk.pm, tools/aewm-drakx/Makefile, tools/aewm-drakx/misc.c,
- tools/aewm-drakx/README:
- - add and use aewm-drakx
- - add some "skip" title on help/logo/steps windows so that aewm-drakx
- know they don't need keyboard focus
- - add some more title to ease debugging (when aewm-drakx is in debug
- mode)
-
- * any.pm: i18n kdmrc
- fix user icons choice
- - add and use aewm-drakx
- - add some "skip" title on help/logo/steps windows so that aewm-drakx
- know they don't need keyboard focus
- - add some more title to ease debugging (when aewm-drakx is in debug
- mode)
-
- * install2.pm: don't warn if modules are missing when testing
-
- * bootloader.pm: find error in /tmp/.error only if exception is "xxx
- failed"
- (write_lilo_conf): ensure linear and lba32 are not both set
-
- * share/po/fake_c.pl: fix a tricky hack
-
- * my_gtk.pm: do the set_events before the show otherwise gtk go crazy (no
- more keyboard focus)
-
- * c/stuff.pm: i18n kdmrc
-
- * lang.pm (load_mo): ensure the locale is set (was broken in non-gtk
- installs)
-
- * install_steps_interactive.pm: fix typo
- find error in /tmp/.error only if exception is "xxx failed"
- makes cancel on mouse selection works even better
- fix cancel on mouse choice
-
- * install_steps.pm: i18n kdmrc
- enable supermount again
-
- * network/adsl.pm: correct dams typo
-
- * fs.pm (write_fstab): fix supermount moving from options to fstype
-
- * steps.pm: find error in /tmp/.error only if exception is "xxx failed"
-
- * tools/aewm-drakx/aewm.h, tools/aewm-drakx/client.c,
- tools/aewm-drakx/events.c, tools/aewm-drakx/aewm-drakx.c: set_focus on
- new map_request event (fix summary step)
- - add and use aewm-drakx
- - add some "skip" title on help/logo/steps windows so that aewm-drakx
- know they don't need keyboard focus
- - add some more title to ease debugging (when aewm-drakx is in debug
- mode)
-
- * install_steps_auto_install.pm (enteringStep): do not translate in
- ja|ko|zh
-
-2001/09/15 siegel
-
- * share/po/de.po: fixed another typo
- new string
-
- * printerdrake.pm: added missing _()
-
- * standalone/draksec: use " instead of ' to get i18n
-
- * standalone/draknet: fixed missing _()
-
-2001/09/15 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added the PDQ panic button.
- Removed a superfluous "set_help" line.
- Save default spooler at program start, fixed typos in comments.
- Command line commands as "lpr", "lpq", ... are mapped to the correct
- spooler now.
- Fixed bug of a waiting message appearing together with a dialog
- Cleaned up variables to correctly switch between CUPS/Foomatic/Raw type
- for a printer
-
- * printer.pm: Added the PDQ panic button.
- Command line commands as "lpr", "lpq", ... are mapped to the correct
- spooler now.
-
- * standalone/printerdrake: Fixed bug of spooler choice via command line
- options being ignored.
-
-2001/09/15 warly
-
- * share/rpmsrate: add drakfirsttime
-
-2001/09/14 dam's <damien@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: make test_pms happy
-
- * install_any.pm: pptp-adsl instead of pptp-adsl-fr
-
- * Xconfigurator.pm: no shadow when X test
-
- * standalone.pm: bugfix
-
- * my_gtk.pm: no icon if wizard
- no shadow when X test
- shadow color
-
- * bootlook.pm: bugfix
- iautologin correction
-
- * mouse.pm: trying to remove draw
-
- * network/adsl.pm: debug
- pptp-adsl instead of pptp-adsl-fr
- bugfix
- updated speedtouch handling.
-
-2001/09/14 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: removed S3 ViRGE card from card with problem with
- frame buffer as it works fine.
-
- * Xconfigurator.pm: fixed filtering of depth for newt version.
- depth 24 is used for DRI for Rage 128 and Radeon instead of Depth 32 (as
- depth
- 32 simply doesn't work, even if DRI guide says it works :-) 24 bit works
- fine
- for Rage 128.
- apply restriction on depth available when changing resolution, removed
- S3 ViRGE
- from experimental 3D accelerated card list as it really does not work,
- allow on
- second pass to change card configuration to choose server (experimental
- server
- are still only available to expert), added support for UseCCEFor2D for
- Rage 128
- card if a TV card is installed (set to true, else set to false), added
- support
- for Rage Mobility M... card that are Rage 128 Mobile chipset, improved
- error
- message display to catch only appropriate error message of XFree 4.1.0
- only,
- added support for 32 bits for DRI using Matrox card, improved info
- message with
- real version of XFree used (anybody) and identifier from PCI probe
- (expert).
-
-2001/09/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/insmod-busybox/Makefile: clean also cleans the DIET target
-
- * mdk-stage1/Makefile, mdk-stage1/Makefile.mkinitrd_helper: back to using
- a reduced form of mkinitrd_helper for mkinitrd (only
- to provide a dietlibc-enabled static insmod)
-
-2001/09/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po: updated Walloon file
-
- * share/po/ko.po: updated Korean file
-
- * share/po/da.po: updated Danish file
- updated Danish file
-
- * share/po/bs.po, share/po/sv.po: updated Bosnian and Swedish files
-
-2001/09/14 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_raw.pm, install_any.pm: when testing for bad drives, if
- opening for writing fails, remove the drive from the hard drive list
- (useful for Smartmedia readers)
-
- * pkgs.pm: update correctSize and invCorrectSize (now linear)
-
- * share/po/fr.po: fix odin bug (please run msgfmt before committing!)
-
- * share/rpmsrate: do not install Aurora in russian
-
-2001/09/14 siegel
-
- * share/po/de.po: updates
-
- * standalone/drakautoinst: Check exisence of "/root/replay_install.img"
- before anything else ...
-
-2001/09/14 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Added "set_help" lines for installer help texts.
- Raw queue entry added, so cursor not always on "Alps MD-1000" when no
- printer
- detected.
- Resolved conflict.
- Now it is checked whether the network is configured and running.
- draknet is called when the network is not configured.
- It is checked whether the spooler is automatically started at boot.
- The oki4daemon is started when needed.
- Lexmarks inkjet drivers are fully integrated.
- The permissions of the device files are set so that normal users can
- print with PDQ.
-
- * standalone/printerdrake: Fixed spooler selection by command line.
-
- * printer.pm: Raw queue entry added, so cursor not always on "Alps
- MD-1000" when no printer
- detected.
- Made network checking working on non-english systems.
- Now it is checked whether the network is configured and running.
- draknet is called when the network is not configured.
- It is checked whether the spooler is automatically started at boot.
- The oki4daemon is started when needed.
- Lexmarks inkjet drivers are fully integrated.
- The permissions of the device files are set so that normal users can
- print with PDQ.
-
-2001/09/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bg.po, share/po/tr.po: updated Turkish and Bulgarian files
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/eu.po, share/po/az.po,
- share/po/ru.po, share/po/pt_BR.po, share/po/hr.po, share/po/ko.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/vi.po, share/po/gl.po,
- share/po/ca.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/bs.po, share/po/da.po, share/po/zh_TW.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
-2001/09/13 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: added mt-st to ARCHIVING
-
-2001/09/13 odin
-
- * share/po/fr.po: updated up to 6648
-
-2001/09/13 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: new migration feature for creation of
- partitions on existing mount points
-
- * diskdrake.pm:
- - add back shortcuts
- - red colored buttons in nfs/smb/removable
-
-2001/09/13 dam's <damien@mandrakesoft.com>
-
- * pixmaps/wiz_default_up.png, pixmaps/wiz_draknet.png: updated
-
- * my_gtk.pm: updated
- addde /usr/share/icons in path for pixmaps search
- shadow reduced to 5 pixels
-
- * standalone/draknet, network/isdn.pm: isdn timeout works now.
-
-2001/09/13 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: added mt-st to ARCHIVING
-
-2001/09/13 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: removed ugly Modeline 1024x768 which causes
- trouble to XFree86 4.1.0.
-
- * Xconfigurator.pm: fix for missing Xinerama for Matrox cards.
- fix for Matrox G550 support, now add DRI support.
- disable any question to user about XF3 if he choose a dual head
- configuration.
- disable DRI if Xinerama has been chosen.
- updated Rage Mobility regexp for bad_card, added bad_card for XF4 as
- Tseng ET6\d00.
-
- * install_any.pm: updates 3D category according Matrox G550 and Radeon
- card.
-
- * install_steps.pm: synced with Xconfigurator bad_card class of video card
- to avoid using frame
- buffer, added ET6\d00 style card which seems to have problem.
-
-2001/09/13 odin
-
- * share/po/fr.po: updated up to 6648
- updated fr.po
-
-2001/09/13 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add krozat
-
- * any.pm (inspect): use a safer dir when standalone
-
- * install_steps.pm: extend disable KDE GreetString to
- ja|ko|zh|ru|th|vi|be|bg
- do not translate kdm GreetString in ja|ko|zh (what about ru?)
- in kdmrc GreetString, magic string HOSTNAME replaced by %n
-
- * diskdrake_interactive.pm: new migration feature for creation of
- partitions on existing mount points
-
- * diskdrake.pm:
- - add back shortcuts
- - red colored buttons in nfs/smb/removable
-
- * partition_table.pm: BLKPG_ADD_PARTITION support (aka adding partition on
- the fly without rebooting on a device with some already mounted
- partitions)
-
- * install_steps_interactive.pm (selectKeyboard): don't prompt in newbie
- mode if >=90, not >90
-
-2001/09/13 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: shadow reduced to 5 pixels
-
- * standalone/draknet, network/isdn.pm: isdn timeout works now.
-
-2001/09/13 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fix for missing Xinerama for Matrox cards.
- fix for Matrox G550 support, now add DRI support.
- disable any question to user about XF3 if he choose a dual head
- configuration.
- disable DRI if Xinerama has been chosen.
- updated Rage Mobility regexp for bad_card, added bad_card for XF4 as
- Tseng ET6\d00.
- avoid creating /etc/X11/XF86Config* file if --g_auto_install.
-
- * services.pm: updated repartition of services into category, network
- category are commented so
- that service will to "Other" one.
-
- * Xconfigurator_consts.pm: removed ugly Modeline 1024x768 which causes
- trouble to XFree86 4.1.0.
-
- * install_any.pm: updates 3D category according Matrox G550 and Radeon
- card.
-
- * install_steps.pm: synced with Xconfigurator bad_card class of video card
- to avoid using frame
- buffer, added ET6\d00 style card which seems to have problem.
-
-2001/09/13 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm: filtered the list from lang2keyboard to display only valid
- keyboards
-
- * c/stuff.xs.pm: add partition adding on the fly trick
-
- * partition_table.pm: BLKPG_ADD_PARTITION support (aka adding partition on
- the fly without rebooting on a device with some already mounted
- partitions)
-
- * install_steps.pm: do not translate kdm GreetString in ja|ko|zh (what
- about ru?)
- in kdmrc GreetString, magic string HOSTNAME replaced by %n
-
-2001/09/13 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet, network/isdn.pm: isdn timeout works now.
-
-2001/09/13 François Pons <fpons@mandrakesoft.com>
-
- * lang.pm: fixed bad $localedir in load_mo().
-
- * g_auto_install: updated so that this scripts is running again.
-
- * install2.pm: do not output error message for bad kernel if using
- --g_auto_install.
-
- * install_steps_interactive.pm: fixed Printer name reporting for a
- specific printer.
-
- * install_any.pm: updates 3D category according Matrox G550 and Radeon
- card.
-
- * services.pm: updated repartition of services into category, network
- category are commented so
- that service will to "Other" one.
-
- * live_install2: updated #! as ../perl is not used.
-
- * my_gtk.pm: synced with --g_auto_install mode.
-
- * install_steps.pm: synced with Xconfigurator bad_card class of video card
- to avoid using frame
- buffer, added ET6\d00 style card which seems to have problem.
-
- * Xconfigurator.pm: fix for Matrox G550 support, now add DRI support.
- disable any question to user about XF3 if he choose a dual head
- configuration.
- disable DRI if Xinerama has been chosen.
- updated Rage Mobility regexp for bad_card, added bad_card for XF4 as
- Tseng ET6\d00.
- avoid creating /etc/X11/XF86Config* file if --g_auto_install.
- synced with --g_auto_install mode.
- disable testing with all SiS card except SiS 630 under XF4.
-
-2001/09/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/pl.po, share/po/pt.po, share/po/no.po,
- share/po/th.po, share/po/sr.po, share/po/sk.po, share/po/lt.po,
- share/po/ru.po, share/po/pt_BR.po, share/po/ko.po, share/po/lv.po,
- share/po/uk.po, share/po/nl.po, share/po/ja.po, share/po/sv.po,
- share/po/id.po: updated pot file
-
-2001/09/13 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm: filtered the list from lang2keyboard to display only valid
- keyboards
-
- * c/stuff.xs.pm: add partition adding on the fly trick
-
- * partition_table.pm: BLKPG_ADD_PARTITION support (aka adding partition on
- the fly without rebooting on a device with some already mounted
- partitions)
-
- * install2.pm (selectKeyboard): remove code causing
- install_steps::selectKeyboard to be skipped
-
- * install_steps.pm: do not translate kdm GreetString in ja|ko|zh (what
- about ru?)
- in kdmrc GreetString, magic string HOSTNAME replaced by %n
-
-2001/09/12 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: typo
- new color for shadow
- corrected shadow handling
- no shadow if liveupdate
-
- * share/help.png: new help
-
- * mouse.pm: removed debug code
-
- * network/tools.pm, network/netconnect.pm, network/ethernet.pm,
- network/isdn.pm, network/adsl.pm, network/modem.pm: new default
- connection handling
-
- * standalone.pm: added wait message while installing package
-
-2001/09/12 daouda
-
- * standalone/drakbug_report: add Mandrake release section
-
-2001/09/12 fcrozat
-
- * share/rpmsrate: Fix gnome install
-
-2001/09/12 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: removed obsolete --nocpi flag for install2.
- avoid probing usb device (for mouse) if --noauto is given.
-
- * install_steps.pm: disabled frame buffer for most of the SiS display card
- except SiS 630.
-
- * Xconfigurator.pm: added MGA G550 as always having two head.
-
- * live_install2: fix when switching perl version.
-
- * live_install: use system perl instead.
-
-2001/09/12 gbeauchesne
-
- * share/list.ia64, share/list, share/list.i386:
- - list (/sbin/mkfs.jfs, /sbin/mkfs.xfs): Move to...
- - list.i386: ... Here.
- - list.ia64: Updates.
-
-2001/09/12 odin
-
- * share/po/fr.po: updated fr.po
-
-2001/09/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/zh_CN.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/de.po,
- share/po/et.po, share/po/el.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/hr.po, share/po/vi.po, share/po/ca.po,
- share/po/gl.po, share/po/eo.po, share/po/help_xml2pm.pl, share/po/wa.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/hu.po,
- share/po/it.po, share/po/af.po: updated pot file
-
- * help.pm: new version with [ and ]
-
- * lang.pm: commented out utf-8 russian locale, for now
-
-2001/09/12 Pixel <pixel@mandrakesoft.com>
-
- * standalone/lsnetdrake: fix typo
- added wonderful lsnetdrake
-
- * modules.pm, install2.pm: display error when the kernel mismatch the
- modules
-
- * docs/README: explain how to get the boot kernels
-
- * install_steps_gtk.pm (choosePackagesTree): translate the categories
-
- * standalone/drakbug_report: cleanup
-
- * bootloader.pm (suggest): no "quiet" boot for smp and enterprise kernels
- (suggest): no "quiet" boot for smp and enterprise kernels
- allow grub even for more than 800MB
-
- * Makefile.drakxtools, Makefile.config: added wonderful lsnetdrake
-
-2001/09/12 siegel
-
- * share/po/de.po: new & shiny verion
-
- * share/po/help_xml2pm.pl: fixed silly error
- added keycap patch
-
-2001/09/12 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: corrected shadow handling
- no shadow if liveupdate
- table undef corrected
- removed shadows if standalone
-
- * standalone/drakgw, standalone/draknet: corrected wizard mode in newt
- mode
-
- * mouse.pm: removed debug code
-
- * network/netconnect.pm: corrected splash in non X mode
-
-2001/09/12 daouda
-
- * standalone/drakbug_report: add Mandrake release section
-
-2001/09/12 François Pons <fpons@mandrakesoft.com>
-
- * live_install2: fix when switching perl version.
-
- * live_install: use system perl instead.
-
-2001/09/12 kjx
-
- * share/po/zh_CN.po: revison
-
-2001/09/12 Pixel <pixel@mandrakesoft.com>
-
- * docs/README: explain how to get the boot kernels
-
- * install_steps_gtk.pm (choosePackagesTree): translate the categories
-
- * standalone/drakbug_report: cleanup
-
- * bootloader.pm: allow grub even for more than 800MB
-
-2001/09/11 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: removed useless print
- don't detect ethx if no autodetection.
- implement smarter checkboxes
-
- * mouse.pm: test updated
- mouse test worked
-
- * network/ethernet.pm: don't detect ethx if no autodetection.
- implement smarter checkboxes
-
- * pixmaps/arrow_down.xpm: pixmap corrected
- new arrows
-
- * pixmaps/arrow_up.xpm: new arrows
-
- * share/rpmsrate: added ibod
- added isdn-light
-
- * interactive_gtk.pm, my_gtk.pm: fear the shaped windows...
-
-2001/09/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * help.pm: small fix
-
- * share/po/fr.po, share/po/de.po, share/po/DrakX.pot, share/po/hu.po,
- share/po/it.po: updated Hungarian file;
- updated pot file
-
-2001/09/11 Pixel <pixel@mandrakesoft.com>
-
- * Makefile (tar-drakxtools): remove the building of "help" for drakxtools
-
- * bootloader.pm: for lilo, do not have table=/dev/xxx if the device is not
- a primary
- partition (otherwise lilo dies)
-
-2001/09/10 dam's <damien@mandrakesoft.com>
-
- * network/modem.pm, network/ethernet.pm: detect_devices
-
- * standalone/net_monitor, network/network.pm: removed timeout:1 in
- resolv.conf, modified timeout scanning in draknet/net_monitor
-
- * install_gtk.pm, install_steps_gtk.pm: mouse test moved
-
- * mouse.pm: test_mouse moved
-
- * my_gtk.pm: added border
- window decorations
- no set_events if embedded
-
- * standalone/draknet: removed timeout:1 in resolv.conf, modified timeout
- scanning in draknet/net_monitor
- debug
-
- * standalone/mousedrake: don't fork the code
-
- * network/adsl.pm: debug
- debug
-
-2001/09/10 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: updated g_auto_install() for newer printerdrake
- interface.
-
- * modules.pm, detect_devices.pm: moved modules::get_pcmcia_devices into
- detect_devices::pcmcia_probe.
-
- * mdk-stage1/init-data/msgboot-blank.img.bz2: initial release for
- blank.img floppy image.
-
- * install_steps_interactive.pm, mouse.pm: added hid type usb mouse
- support.
-
- * Xconfigurator_consts.pm: added some more ModeLine (1024x768 @ 97.6 Hz,
- 1024x480 but not automatically used).
-
-2001/09/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: plop
- some adjustements in Games section
-
-2001/09/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/de.po: updated German file; added choice of
- various quotes in help_xml2pm.pl
- Updated pot file;
- removed translations that are too low on percentage.
-
- * share/po/zh_TW.po: updated Chinese file
-
- * share/po/ko.po: updated Korean file
- Updated pot file;
- removed translations that are too low on percentage.
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/cy.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/no.po, share/po/fi.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/bs.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated pot file;
- removed translations that are too low on percentage.
-
- * share/po/help_xml2pm.pl: updated German file; added choice of various
- quotes in help_xml2pm.pl
-
-2001/09/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm, my_gtk.pm:
- - make diskdrake work in embedded mode
- - $my_gtk::pop_it used where it should
-
- * detect_devices.pm: fix ide-scsi appearing 2 times when standalone
- because both in /proc/ide
- and /proc/scsi/scsi
-
- * share/po/help_xml2pm.pl: s/my/our/ for $i18ned_... vars
- - skip directories missing drakx-help.xml
- - convert to the right charset (taken from $lang.po)
- - rename help-*.po by help-*.pot
- - fix typo in script removing $lang.po translations to favour
- help-*.pot
-
- * diskdrake.pm:
- - make diskdrake work in embedded mode
- - $my_gtk::pop_it used where it should
- fix Umount and Mount when i18ned for nfs/smb
- don't display Wizard if wizard done before DrakX
-
- * share/po/Makefile, share/po/.cvsignore:
- - rename help-*.po by help-*.pot
- - fix typo in script removing $lang.po translations to favour
- help-*.pot
-
-2001/09/10 siegel
-
- * share/po/de.po: updates
-
-2001/09/10 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Copying of PPD file when moving a CUPS (non-Foomatic) queue
- modified to not get
- interactive when overwriting a file.
- Comment put into non-Foomatic CUPS PPD files in /etc/cups/ppd/ to be
- able to
- identify which PPD from /usr/share/cups/model was used (for
- auto-install).
-
-2001/09/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, share/po/vi.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/bs.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: Updated pot file;
- removed translations that are too low on percentage.
-
-2001/09/10 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile, share/po/.cvsignore, share/po/help_xml2pm.pl:
- - rename help-*.po by help-*.pot
- - fix typo in script removing $lang.po translations to favour
- help-*.pot
-
-2001/09/09 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: probeall handling
-
-2001/09/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: getAndSaveInstallFloppy: fix multiple cdrom issue
-
-2001/09/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
- * share/po/sv.po: updated Swedish file
-
-2001/09/09 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (ejectCdrom): fix D state on exit
-
- * diskdrake_interactive.pm, install_interactive.pm, diskdrake.pm:
- - "Wizard" and "More" are back
- - allow "Use for loopback" when there is already a loopback
- - set the options on newly created partitions
- - recompute_loopbacks called after modification of loopbacks, no more
- before reading
- - restrict the lenght of the lines in partition description
- - make loopback work
-
- * interactive_gtk.pm, interactive.pm, any.pm, interactive_newt.pm:
- clicked_may_quit used in place of clicked+exception to work-around
- perl-GTK bug (?)
-
- * share/po/i18n_compssUsers: ensure we're not adding a string already
- there (otherwise msgmerge yells)
-
- * share/po/help_xml2pm.pl, share/po/.cvsignore: xml help
- handling/enhancing for multi-langs
-
- * modules.pm: probeall handling
- (write_conf): switch to "probeall scsi_hostadapter ..."
-
- * share/po/Makefile: xml help handling/enhancing for multi-langs
- xml help handling/enhancing for multi-langs
-
- * partition_table.pm (get_normal_parts_and_holes): remove only small
- holes, not small partitions
-
- * fs.pm (set_default_options): remove iocharset=... for nfs (why was it
- there?)
-
-2001/09/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix some ortograf
-
- * share/rpmsrate: lvm not installed for everyone ?!
-
-2001/09/08 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_auto_install.pm: force exitInstall to be non automatic
-
- * install_steps.pm, fs.pm, install_steps_interactive.pm, fsedit.pm,
- diskdrake_interactive.pm, install2.pm, diskdrake.pm: make loopback
- installs work again
-
-2001/09/09 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (write_conf): switch to "probeall scsi_hostadapter ..."
-
-2001/09/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix some ortograf
-
- * share/rpmsrate: lvm not installed for everyone ?!
-
- * modules.pm: fix write_conf regarding /etc/modules so that (1) it doesn't
- flush it when
- it didn't decide to put any modules in it (to leave user's modules) (2)
- it
- doesn't remove the last line (3) it uses stronger regexp'es for
- substitution to not remove modules that have names made of other modules
- names subsets
-
-2001/09/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/zh_TW.po: updated Chinese file
-
-2001/09/08 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm: fix font in iso-15
-
- * modules.pm (write_conf): put "probeall scsi-hosts scsi_hostadapter ..."
-
- * interactive.pm: ugly workaround perl bug ([ID 20010908.008] memory leak
- with nested subs)
-
- * share/diskdrake.rc: change name
-
- * install_steps_auto_install.pm: force exitInstall to be non automatic
-
- * install_steps.pm, fs.pm, install_steps_interactive.pm, fsedit.pm,
- diskdrake_interactive.pm, install2.pm, diskdrake.pm: make loopback
- installs work again
-
- * timezone.pm: Asia/Taipei for Traditional Chinese
-
- * detect_devices.pm: remove debug code
-
-2001/09/07 daouda
-
- * share/rpmsrate: add mdkonline (X 4)
-
-2001/09/07 fcrozat
-
- * share/rpmsrate: Add grio500
-
-2001/09/07 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fix card managed only by XF4 (may have some wrong
- result).
- fix all Matrox card used with XF4 which really does not like X in frame
- buffer
- (unable to restore frame buffer of DrakX).
-
-2001/09/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/tree/etc/oem, rescue/guessmounts, rescue/list.i386,
- rescue/tree/etc/rc.sysinit: ext3, xfs, jfs
-
- * bootloader.pm: use -v for mkinitrd
-
- * share/po/fr.po: "reseaux" and plurals
- misc
-
- * share/rpmsrate: some work on games
-
-2001/09/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po, share/po/vi.po: updated Vietnamese and Japanese files
-
-2001/09/07 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: cleanup po
-
- * install_steps.pm: s|kdmrc|kdm/kdmrc|
-
- * lang.pm: fix load_mo call
-
- * share/po/help_xml2pm.pl, share/po/Makefile, help.pm: new help
-
- * diskdrake_interactive.pm: disable_forced_fsck called for ext3 formatting
- disable_forced_fsck called for ext3 formatting
- (Type): disable fsck when migrated ext2->ext3
-
- * fs.pm: disable_forced_fsck called for ext3 formatting
-
-2001/09/07 siegel
-
- * share/po/de.po: updates
-
-2001/09/07 Till Kamppeter <till@mandrakesoft.com>
-
- * standalone/printerdrake, printer.pm, printerdrake.pm: Data structure
- fitted for auto-install to work
- Optimized program to be much faster
- Many more waiting messages
- Many bugfixes
-
-2001/09/07 daouda
-
- * share/rpmsrate: add mdkonline (X 4)
-
-2001/09/07 fcrozat
-
- * share/rpmsrate: Add grio500
-
-2001/09/07 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fix card managed only by XF4 (may have some wrong
- result).
- fix all Matrox card used with XF4 which really does not like X in frame
- buffer
- (unable to restore frame buffer of DrakX).
-
-2001/09/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * any.pm: Changed simple quote to double quote for a translatable string
- (otherwise
- it isn't seen)
-
- * share/po/es.po: updated Spanish file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/is.po, share/po/hu.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/no.po,
- share/po/fi.po, share/po/th.po, share/po/el.po, share/po/sk.po,
- share/po/lt.po, share/po/ar.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/bs.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/af.po:
- updated pot file
-
- * share/po/sv.po: updated Swedish file
- updated pot file
-
-2001/09/07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: s|kdmrc|kdm/kdmrc|
- remove the "konsole and gnome-terminal are lamers in exotic languages,
- link them to something better"
-
- * bootloader.pm (write_lilo_conf): fix typo
-
- * share/po/help_xml2pm.pl, share/po/Makefile, help.pm: new help
-
- * diskdrake_interactive.pm: disable_forced_fsck called for ext3 formatting
- disable_forced_fsck called for ext3 formatting
- (Type): disable fsck when migrated ext2->ext3
-
- * install_any.pm, keyboard.pm: cleanup
-
- * partition_table.pm, share/list: add xfs
-
- * fs.pm: disable_forced_fsck called for ext3 formatting
-
- * share/rpmsrate: add jfsprogs
-
-2001/09/07 siegel
-
- * share/po/de.po: updates
- updates/fixes
-
-2001/09/06 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/tools.pm: corrected speedtouch
-
- * install_gtk.pm: removed comments
-
-2001/09/06 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: cleanup for bad card and prefer XF3, so now using
- XFree 4.1.0 is not bad, and
- all NVIDIA card are no more considered bad.
-
- * pkgs.pm: fixed retry of package 3 times everytime even if first install
- succeeded, now
- after first successfull install, go to next package to install.
-
- * install_steps.pm: removed some cards for allowing frame buffer.
-
-2001/09/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: works now ;p
-
-2001/09/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: 'zh' in LANGUAGE for Chinese is needed by DrakX
- corrected lang.pm to have coherence in locale usage (it was the source
- of much of the problems); changed keyboard.pm to ignore charset encoding
- in locale name for locale -> keyboard guessing.
- removed unused gconv modules, converted az.po to utf-8 (as it was the
- only
- remaining az.po on Earth still in a non standard encoding)
-
- * share/list, share/gen_locales.sh, share/locales-skeleton.tar.bz2,
- keyboard.pm, share/po/az.po: corrected lang.pm to have coherence in
- locale usage (it was the source
- of much of the problems); changed keyboard.pm to ignore charset encoding
- in locale name for locale -> keyboard guessing.
- removed unused gconv modules, converted az.po to utf-8 (as it was the
- only
- remaining az.po on Earth still in a non standard encoding)
-
-2001/09/06 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: fix keyboard config + some cleanup
- cleanup (use /proc/self instead of /proc/$$)
-
- * install_steps.pm, install_steps_interactive.pm, keyboard.pm: fix
- keyboard config + some cleanup
-
-2001/09/06 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/tools.pm: corrected speedtouch
-
- * install_gtk.pm: removed comments
-
-2001/09/06 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: cleanup for bad card and prefer XF3, so now using
- XFree 4.1.0 is not bad, and
- all NVIDIA card are no more considered bad.
- avoid using @resolutions_laptop, now use only @resolutions, this means
- 1400x1050
- is available to other, use XFree86 4.1.0 builtin timings for 1400x1050
- (so
- 1400x1050 is no more printed as modeline for XFree 4.1.0 configuration
- file).
-
- * install_steps.pm: removed some cards for allowing frame buffer.
- fix log when configuring printer queue.
-
- * Xconfigurator_consts.pm: added 1400, 1920 and 2048 for %min_hsync4wres.
- cleaned up a bit and using XFree86 4.1.0 builtin timings for 1400x1050
- and
- 1920x1440, 2048x1536 has no modeline (but its min hsync is really high).
-
- * pkgs.pm: fixed retry of package 3 times everytime even if first install
- succeeded, now
- after first successfull install, go to next package to install.
-
- * install_any.pm: update printer data for g_auto_install.
-
-2001/09/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: works now ;p
-
-2001/09/06 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: fix keyboard config + some cleanup
- cleanup (use /proc/self instead of /proc/$$)
-
- * install_steps.pm, install_steps_interactive.pm, keyboard.pm: fix
- keyboard config + some cleanup
-
- * fs.pm (merge_fstabs): correction allowing manual_fstab to not give the
- type
-
-2001/09/06 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/tools.pm: corrected speedtouch
-
- * install_gtk.pm: removed comments
- new mouse test
-
-2001/09/06 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: revert previous patch, this is not usable with current rpm as
- it complains if
- one the file has a modified MD5SUM against the header describing it in
- the
- hdlist, so this is most of the time useless.
- guess filename if the file is not found (for an rpm file during
- installation),
- so try with release incremented in such case (good for Cooker user or
- local
- tester using network installation).
-
- * install_steps.pm: fix log when configuring printer queue.
-
- * Xconfigurator.pm: avoid using @resolutions_laptop, now use only
- @resolutions, this means 1400x1050
- is available to other, use XFree86 4.1.0 builtin timings for 1400x1050
- (so
- 1400x1050 is no more printed as modeline for XFree 4.1.0 configuration
- file).
-
- * Xconfigurator_consts.pm: added 1400, 1920 and 2048 for %min_hsync4wres.
- cleaned up a bit and using XFree86 4.1.0 builtin timings for 1400x1050
- and
- 1920x1440, 2048x1536 has no modeline (but its min hsync is really high).
-
- * install_any.pm: update printer data for g_auto_install.
-
- * printerdrake.pm: revert previous commit.
- added a missing ifup lo, on some case (auto_install) it fails.
-
- * printer.pm: start ifup lo before starting service cups.
-
-2001/09/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
- * share/po/ga.po, share/po/no.po: updated Irish and Norwegian files
-
-2001/09/06 Pixel <pixel@mandrakesoft.com>
-
- * share/diskdrake.rc, fsedit.pm, diskdrake.pm: add journalised in legend,
- fix the use
-
- * diskdrake_interactive.pm (Add2LVM): do not allow spaces in lvm names
-
- * fs.pm (merge_fstabs): correction allowing manual_fstab to not give the
- type
-
- * timezone.pm (ntp_server): fix (step-tickers was empty)
-
-2001/09/05 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor, standalone/draknet: corrected opeions
-
- * standalone/mousedrake: typo
- updated
-
- * network/tools.pm: corrected initcript
-
- * pixmaps/mouse_middle.xpm, pixmaps/mouse_right.xpm,
- pixmaps/mouse_left.xpm: new pixmaps
-
-2001/09/05 Pixel <pixel@mandrakesoft.com>
-
- * standalone/diskdrake: fix function called
-
-2001/09/05 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Set default printer (all spoolers), manual
- config (CUPS), bugfixes, clean-ups.
-
-2001/09/05 dam's <damien@mandrakesoft.com>
-
- * pixmaps/wiz_default_left.png, pixmaps/wiz_default_up.png,
- pixmaps/wiz_drakgw.png: new icons
-
- * share/themes-mdk.rc: updated theme
-
- * standalone/draknet: interface display corrected
-
- * share/themes/mdk-button4.png, share/themes/mdk-button1.png: new buttons
-
- * install_gtk.pm: 2 sec without sensitives buttons
-
- * network/netconnect.pm: only if standalone
-
- * pixmaps/network.png, pixmaps/bootloader.png, pixmaps/printer.png,
- pixmaps/security.png, pixmaps/rootpasswd.png, pixmaps/harddrive.png,
- pixmaps/keyboard.png, pixmaps/X.png, pixmaps/mouse.png,
- pixmaps/bootdisk.png: new pixmaps
-
-2001/09/05 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed display of XFdrake test image (fcrozat).
-
- * install_steps.pm: fixed typo preventing removable devices to be seen in
- /etc/fstab.
- fixed configurePrinter (used for auto_install).
-
- * install_steps_interactive.pm: avoid asking when using existing partition
- for magic partition with a real
- mntpoint (typically /tmp/hdimage) if we are not using a ramdisk (so
- partition is
- not unmountable).
-
- * bootloader.pm: removed yvounet sucking, handle Mandrake lilo or unknown
- lilo.
-
- * fs.pm: fix bad creation of /mnt/hd for an hd installation without
- ramdisk.
- support setting /tmp/hdimage in /etc/fstab even if memory is low (not
- using ramdisk).
-
- * install_any.pm: filtering $o->{printer} for g_auto_install().
- allow installing urpmi on hd install even if low memory (so not using
- ramdisk).
-
- * diskdrake_interactive.pm: Do not use for loopback of magic partition
- (/tmp/hdimage).
-
-2001/09/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/i386/busybox: hopefully fix the _ problems with busybox 0.60.1
-
-2001/09/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bs.po: updated Bosnian file
-
- * share/po/uk.po: updated Ukrainian file
-
-2001/09/05 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: use EISA_ID in more cases to have the name
- non-case dependent EISA comparison
- also try EISA ID to auto-detect the monitor (sometimes the EISA ID is
- there, but not the [hv]syncrange
-
- * Xconfig.pm: fix typos
- non-case dependent EISA comparison
- also try EISA ID to auto-detect the monitor (sometimes the EISA ID is
- there, but not the [hv]syncrange
-
- * modules.pm: favor tmscsim over AM53C974
-
- * tools/ddcprobe/ddcxinfos.c: fix for cards giving bad info
- also try EISA ID to auto-detect the monitor (sometimes the EISA ID is
- there, but not the [hv]syncrange
-
- * standalone/diskdrake: fix function called
-
-2001/09/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/mount.c: reflect scd -> sr here too, /me sucks :-(
-
-2001/09/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/cy.po, share/po/nl.po, share/po/wa.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/eo.po, share/po/bs.po, share/po/ro.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/af.po:
- Updated Danish file; updated pot file
-
-2001/09/04 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix typo
-
-2001/09/04 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Fitted to the new Foomatic version.
- Fixed bug of spooler change only working when language is English.
-
-2001/09/04 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fix bad vga= which go for some install.
-
-2001/09/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * network/netconnect.pm: small english change
-
- * mdk-stage1/probing.c: Compaq mescouilles has changed proc stuff
-
- * share/rpmsrate: tetex-doc
-
- * mdk-stage1/mount.c: reflect scd -> sr here too, /me sucks :-(
-
-2001/09/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/cy.po, share/po/nl.po, share/po/wa.po, share/po/is.po,
- share/po/hu.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/eo.po, share/po/ro.po, share/po/bs.po,
- share/po/da.po, share/po/zh_TW.po, share/po/cs.po, share/po/af.po:
- Updated Danish file; updated pot file
-
- * share/po/ja.po: updated Japanese file
-
-2001/09/04 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (add_alias): use "above" instead of "post-install"
-
- * partition_table.pm: re-add JFS
-
- * fsedit.pm, common.pm, bootloader.pm:
- - don't expand symlinks in grub's menu.lst
- - better use of /proc/partitions verification
-
- * detect_devices.pm (getCompaqSmartArray): add yet another location for
- cpqarray location
-
- * fs.pm: fix typo
- mount ext3 as ext2 during install for speed up
-
-2001/09/04 fcrozat
-
- * share/rpmsrate: Add plugins for KDE and Mozilla
-
-2001/09/04 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fix bad vga= which go for some install.
-
- * pkgs.pm: cleanup to avoid invalid file error.
-
-2001/09/04 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (add_alias): use "above" instead of "post-install"
-
- * fs.pm: mount ext3 as ext2 during install for speed up
-
- * partition_table.pm: re-add JFS
-
- * fsedit.pm, common.pm, bootloader.pm:
- - don't expand symlinks in grub's menu.lst
- - better use of /proc/partitions verification
-
- * detect_devices.pm (getCompaqSmartArray): add yet another location for
- cpqarray location
-
-2001/09/04 yduret
-
- * my_gtk.pm: emebedded mode fix
-
- * interactive_gtk.pm, diskdrake.pm: embedded mode fix
-
-2001/09/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: unfuzzy-ise a few things, translate a few things
-
-2001/09/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po: updated Korean file
-
-2001/09/03 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: fix for lvm (non-)creation of devices
-
-2001/09/03 yduret
-
- * my_gtk.pm, diskdrake.pm: fix Embedded mode
-
-2001/09/03 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: added timeout in resolv.conf
-
-2001/09/03 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: updated to use new urpmi.cfg format for install_urpmi,
- make sure the directory
- is not given for ftp and http install ($dir).
-
- * Xconfigurator_consts.pm: added 1920x1440 and 2048x1536.
-
- * Xconfig.pm: make sure a staling Mouse2 is not present unless it really
- physically exists.
-
-2001/09/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: add axnet_cs to pcmcia category
-
- * mdk-stage1/probing.c: change `scd' with `sr'
-
-2001/09/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po: updated Spanish file
-
- * share/po/ko.po: updated Korean file
-
-2001/09/03 Pixel <pixel@mandrakesoft.com>
-
- * timezone.pm (ntp_server): also set /etc/ntp/step-tickers
-
- * fsedit.pm, devices.pm: fix mtab reading and pseudo-device use
-
- * interactive_gtk.pm: better sizing for combo boxes
-
- * install_steps_interactive.pm (choosePartitionsToFormat): do not propose
- to propose already formatted
- fat partitions
-
- * share/list: those files disappeared ??
-
- * fs.pm: fix for lvm (non-)creation of devices
- (set_default_options): created
- fix mtab reading and pseudo-device use
-
- * diskdrake.pm (smb_create, nfs_create): make the "New" button work
- (raw_hd_mount_point): fix checking the same mount point
- (try_): fix error displaying
-
- * partition_table.pm: fix switching to 0x85 extended when
- remove_empty_extended is called
-
-2001/09/03 yduret
-
- * standalone/net_monitor: sync with new logdrake command line options
-
-2001/09/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bs.po: updated bosnian file
- Added Bosnian file
-
-2001/09/01 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: avoid deleting package from %packages in install() when closing
- fd associated,
- if the open is called again (?), it will cause an invalid file (seems to
- happens
- on some invalid file).
-
-2001/08/31 dam's <damien@mandrakesoft.com>
-
- * standalone/draksec: corrected yesno interpretation
- libsafe modification
-
- * network/netconnect.pm: corrected profil recording for modem
-
- * standalone/net_monitor: correted typo
-
- * network/ethernet.pm: corrected zero return when cable configuring
-
- * any.pm: corrected autologin : no uc anymore
-
- * network/modem.pm: added domainname2 setting
-
- * share/logo-mandrake.png: new logo
-
-2001/08/31 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added missing AlwaysCore line for second mouse for
- XF3.
-
- * mouse.pm: added missing AlwaysCore line for second mouse in XF3.
-
- * standalone.pm: add option --allow-medium-change to force asking question
- even if --auto is
- given on command line of urpmi, for installing package so that a dialog
- appears.
-
-2001/08/31 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: mures is a fine game, have it at weight "4" under GAMES
- section
- have "numlock" in INSTALL because it's the only package which goes to
- CD#2
- when you unselect all groups, so having it here will allow not changing
- CD
- with this kind of small install
-
-2001/08/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/uk.po, share/po/es.po: updated Ukrainian
- and Spanish files
-
- * share/po/sv.po: updated Swedish file
- updated Ukrainian and Spanish files
-
-2001/08/31 siegel
-
- * share/help_sav.png: not used any more
-
- * share/po/de.po: updates
-
- * share/logo-mandrake2.png, share/logo-mandrake_trans.png,
- share/logo-mandrake_sav.png, share/logo-mandrake-Desktop.png: old
- versions => not in use any more
-
-2001/08/31 yduret
-
- * bootlook.pm: updated code
-
-2001/08/30 dam's <damien@mandrakesoft.com>
-
- * network/tools.pm: nicer display
-
- * standalone/draknet: added use common.pm (can be usefull, eh?)
-
- * network/network.pm: silently /sbin/ip
- track_network_id only if laptop
-
-2001/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: Updated Danishfile
- updated pot file (I had lost the group descriptions, sorry, they are
- back now)
- moved chinese files to charset independent names
-
- * share/po/be.po, share/po/sp.po, share/po/zh_CN.po, share/po/pt.po,
- share/po/DrakX.pot, share/po/es.po, share/po/fr.po, share/po/bg.po,
- share/po/ga.po, share/po/sr.po, share/po/de.po, share/po/et.po,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/zh_TW.po, share/po/cs.po, share/po/af.po: updated pot file (I
- had lost the group descriptions, sorry, they are back now)
- moved chinese files to charset independent names
-
-2001/08/30 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (read): it works now
-
- * help.pm: fixed (was utf8)
-
- * install_steps_gtk.pm (new): call interactive_gtk::new
-
- * install_steps.pm, Xconfigurator.pm: disable gpm (in case of serial
- mouse) before service choice
-
- * pkgs.pm (naughtyServers): update for 8.1
-
-2001/08/30 dam's <damien@mandrakesoft.com>
-
- * interactive.pm: corrected icon display
-
- * my_gtk.pm: new wizard
-
- * interactive_gtk.pm: corrected wizard mode display height/width
-
- * standalone/draknet: added draknet client installation
-
- * network/network.pm: track_network_id only if laptop
- dhcp package installation
-
- * pixmaps/wiz_default_left.png: new logo
-
-2001/08/30 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: make sure to update all symlink according to any mouse (max 2)
- probed.
- fix previous fixes on mouse::write_conf
-
- * standalone/mousedrake: fix previous fix (typo).
- keep mouse specific paramater if user does not change its mouse.
- make sure --auto is not interactive on some part.
- use default value for port device if a serial mouse.
-
- * printer.pm: fixed foomatic failed (no lo up since ifup lo don't run)
-
- * Makefile: ugly to make sure standalone/pixmaps is not here when building
- tar-drakxtools.
-
- * Xconfig.pm: when reading existing configuration for mouse, update
- type|name for second mouse too.
- make sure default to set 3 for nbuttons for getinfoFromXF86Config for
- second
- mouse if this mouse has 3 buttons.
-
- * Xconfigurator.pm: for single heads mode, no screen id should be set in
- file (or XFree is going
- mad, but he is right, no ?)
-
- * install_any.pm: if a medium is refused, get rid of it definitively until
- it is accepted again.
-
-2001/08/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: have a wait_message during installation of
- bootloader
-
- * mdk-stage1/pcmcia/pcmcia_probe.c: import new PCI ID's for more PCMCIA
- Controllers, from probe.c-1.54 of pcmcia-cs-3.1.28
-
-2001/08/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po, share/po/vi.po, share/po/es.po: updated Japanese,
- Spanish and Vietnamese files
-
-2001/08/30 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: allow LVM on RAID
-
- * help.pm: fixed (was utf8)
-
- * any.pm: cleanup
-
- * pkgs.pm (naughtyServers): update for 8.1
-
- * lang.pm (read): it works now
-
- * fs.pm (set_default_options): "ro" for cdroms, "user" for vfat only if
- removable
- media
-
- * share/po/Makefile: fix utf8 translation of xml file
-
- * interactive_gtk.pm: fix&cleanup window size
-
- * tools/Makefile: cleanup unneeded stuff
-
-2001/08/30 siegel
-
- * share/po/de.po: new german version
-
-2001/08/30 warly
-
- * share/rpmsrate: add koffice-i18n diald vlan-utils
-
-2001/08/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw, standalone/drakautoinst: quit_global
-
- * share/po/fr.po: minor fix
-
-2001/08/29 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix language selection
-
- * c.pm: better error message when function c::foo() is missing
-
- * rescue/dirs, rescue/make_rescue_img: make it work (do not have the dev
- in /)
-
-2001/08/29 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed if undef encountered in depslist when installing package
- (traversing
- depslist as $depOrder).
-
-2001/08/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw, standalone/drakautoinst: quit_global
-
- * share/po/fr.po: minor fix
-
-2001/08/29 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix language selection
-
- * c.pm: better error message when function c::foo() is missing
-
- * install_steps_gtk.pm (installPackages): have Ok button by default for
- asking for changing CD
-
- * bootloader.pm (mkbootdisk): cleanup
-
- * rescue/dirs, rescue/make_rescue_img: make it work (do not have the dev
- in /)
-
- * devices.pm: remove fd0H1440 and fd1H1440
-
- * modules.pm: remove "msdos"
-
-2001/08/29 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: improved write_conf to enable multi-mice if only once mice is
- already defined.
-
- * standalone/mousedrake: try to merge already existing mouse configuration
- with what has been probed,
- change if mouse is really changed as probe is incomplete.
-
- * Xconfig.pm: improve getinfoFromXF86Config for mouse parameters.
-
- * pkgs.pm: fixed if undef encountered in depslist when installing package
- (traversing
- depslist as $depOrder).
-
-2001/08/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw, standalone/drakautoinst: quit_global
-
- * share/po/fr.po: minor fix
-
-2001/08/29 Pixel <pixel@mandrakesoft.com>
-
- * c.pm: better error message when function c::foo() is missing
-
- * keyboard.pm (loadkeys_files): fixed
-
- * install_steps_interactive.pm, standalone/localedrake, lang.pm, any.pm,
- Makefile.config: add localedrake (not tested)
-
- * rescue/make_rescue_img: make it work (do not have the dev in /)
- cleanup, speedup, use mknod for devices
-
- * install_steps_gtk.pm (installPackages): have Ok button by default for
- asking for changing CD
-
- * rescue/devices.pl, rescue/list: cleanup, speedup, use mknod for devices
-
- * bootloader.pm (mkbootdisk): cleanup
-
- * rescue/dirs: make it work (do not have the dev in /)
-
- * devices.pm: remove fd0H1440 and fd1H1440
-
- * modules.pm: remove "msdos"
-
-2001/08/29 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/tools.pm, share/rpmsrate: speedtouch
- configuration
-
-2001/08/29 François Pons <fpons@mandrakesoft.com>
-
- * mouse.pm: improved write_conf to enable multi-mice if only once mice is
- already defined.
-
- * install_steps.pm: add support for mandatory frame buffer support (SiS
- 630) need them for XF3 to
- work properly, XF4 does work with it nicely.
-
- * Xconfigurator.pm: make sure Port entry for wacom is placed first.
-
- * standalone/mousedrake: try to merge already existing mouse configuration
- with what has been probed,
- change if mouse is really changed as probe is incomplete.
-
- * Xconfig.pm: improve getinfoFromXF86Config for mouse parameters.
-
-2001/08/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: games
-
-2001/08/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po, share/po/DrakX.pot, share/po/es.po: updated Danish file
-
-2001/08/29 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, install_any.pm, fsedit.pm, diskdrake.pm: try to better handle
- symlinks device and devfs devices
-
- * install_steps_interactive.pm, standalone/localedrake, lang.pm, any.pm,
- Makefile.config: add localedrake (not tested)
-
- * install_steps.pm: no need to have devfs=nomount anymore in root raid
- do not modify fstab options in upgrade
-
- * keyboard.pm (loadkeys_files): fixed
- fix DISABLE_WINDOWS_KEY state handling (for upgrade), cleanup
-
- * diskdrake_interactive.pm: try to better handle symlinks device and devfs
- devices
- (main): fix
- (Create): fix typo causing primaryOrExtended to be ignored
-
- * rescue/devices.pl, rescue/make_rescue_img, rescue/list: cleanup,
- speedup, use mknod for devices
-
- * c/stuff.xs.pm, detect_devices.pm: better floppy detection/info
-
-2001/08/28 dam's <damien@mandrakesoft.com>
-
- * interactive.pm, install2.pm: corrected icon handling
-
- * services.pm: added cupslpd in printing section
-
-2001/08/28 François Pons <fpons@mandrakesoft.com>
-
- * Makefile.config: really fix typo...
- fixed typo.
-
-2001/08/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: updated Czech file
-
-2001/08/28 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: remove the temporary file /tmp/autoinst.img
-
- * install_steps.pm, install_steps_interactive.pm: propose to format / and
- /usr even if isFormatted. More generally do not trust isFormatted to
- show which partitions to format
-
-2001/08/28 siegel
-
- * ChangeLog, keyboard.pm:
- - keyboard.pm: write DISABLE_WINDOWS_KEY=no in /etc/sysconfig/keyboard
- if no laptop is detected (= give users the chance to know about the
- existence of this variable).
-
-2001/08/28 yduret
-
- * standalone/diskdrake: embedded mode nicer
-
-2001/08/28 dam's <damien@mandrakesoft.com>
-
- * interactive.pm, install2.pm: corrected icon handling
-
-2001/08/28 François Pons <fpons@mandrakesoft.com>
-
- * share/list: added /sbin/e2fsck
-
- * share/aliases: added fsck.ext2 -> e2fsck (now in list file)
- removed e2fsck.shared as e2fsprogs now provide a shared version instead
- of a
- static one.
-
- * Makefile.config: really fix typo...
- fixed typo.
- removed reference to e2fsck.shared (now use e2fsck from package which is
- shared
- since 1.23-2mdk).
-
-2001/08/28 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: remove the temporary file /tmp/autoinst.img
-
-2001/08/28 siegel
-
- * ChangeLog, keyboard.pm:
- - keyboard.pm: write DISABLE_WINDOWS_KEY=no in /etc/sysconfig/keyboard
- if no laptop is detected (= give users the chance to know about the
- existence of this variable).
-
-2001/08/28 yduret
-
- * standalone/diskdrake: embedded mode nicer
-
-2001/08/28 Stefan Siegel <siegel@mandrakesoft.com>
-
- * keyboard.pm: write DISABLE_WINDOWS_KEY=no in /etc/sysconfig/keyboard
- if no laptop is detected (= give users the chance to know about
- the existence of this variable).
-
-2001/08/28 dam's <damien@mandrakesoft.com>
-
- * mouse.pm: typo
-
-2001/08/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: default the licence agreement to "Refuse"
-
- * standalone/drakboot: security fix and various
- move to all_hds stuff
-
- * c/stuff.xs.pm, bootloader.pm: security fix and various
-
-2001/08/28 warly
-
- * share/rpmsrate: move libsafe to SERVER_OTHER 2
- added prelude, libsafe...
-
-2001/08/28 yduret
-
- * standalone/drakxconf: readded dsikdrake
- added new items, remove some old ones
-
-2001/08/27 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: corrected hwaddr setting and draknet first window
- display
- corrected typo
-
- * network/netconnect.pm: corrected hwaddr setting and draknet first window
- display
-
-2001/08/27 dam's <damien@mandrakesoft.com>
-
- * network/network.pm: corrected hwaddr setting and draknet first window
- display
- corrected typo
-
- * network/netconnect.pm: corrected hwaddr setting and draknet first window
- display
-
-2001/08/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po, share/po/eu.po: updated Basque and slovak files
-
-2001/08/27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: nicer help display
-
- * share/keyboards.tar.bz2: fix the rights
-
- * c/stuff.xs.pm (setlocale): do not set LC_NUMERIC
-
-2001/08/27 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: corrected bad window size
-
- * network/network.pm: make it compile
- corrected hwaddr stuff
- added HWADDR
-
- * network/tools.pm: corrected internet initscript
-
- * any.pm, mouse.pm: make it compile
- add_devfslink
-
-2001/08/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, keyboard.pm: Added "zh_HK" to Chinese in LANGUAGE list.
- Added Latvian keyboard
-
- * share/keyboards.tar.bz2: Checked and updated xmodmap files for DrakX
-
- * share/po/sk.po, share/po/eu.po: updated Basque and slovak files
-
-2001/08/27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm: nicer help display
-
- * diskdrake.pm: use empty hash instead of the raid/loopback array
-
- * c/stuff.xs.pm (setlocale): do not set LC_NUMERIC
-
-2001/08/27 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: corrected bad window size
-
- * network/network.pm: added HWADDR
-
- * network/tools.pm: corrected internet initscript
-
-2001/08/27 François Pons <fpons@mandrakesoft.com>
-
- * any.pm, standalone/draknet, network/modem.pm: added Borsenkow Andrej
- patch to support CHAP again.
-
-2001/08/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, keyboard.pm: Added "zh_HK" to Chinese in LANGUAGE list.
- Added Latvian keyboard
-
-2001/08/27 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: use empty hash instead of the raid/loopback array
-
-2001/08/26 warly
-
- * share/rpmsrate: add some important packages
-
-2001/08/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakautoinst: require -> use
-
- * install_any.pm: save the .img file so that multi-cd install won't ask to
- re-enter first cd
-
-2001/08/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/no.po, share/po/zh_CN.GB2312.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2001/08/26 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile, share/po/.cvsignore: fetch directly the latest
- drakx-help.xml
-
-2001/08/25 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakbug_report: add "rpm -qa"
-
- * bootlook.pm: fix deprecated call standalone::pkgs_install
-
- * diskdrake.pm: don't the grab flag propagate everywhere
-
-2001/08/25 dam's <damien@mandrakesoft.com>
-
- * install2.pm, steps.pm: icon correction
-
-2001/08/25 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (mount): accept mounting iso9660 filesystem as it should be
- (write_fstab): enable mounting more than one swap :)
-
- * bootlook.pm: fix deprecated call standalone::pkgs_install
-
- * install_steps.pm: added the missing security parameter to
- set_default_options
-
- * diskdrake.pm: don't the grab flag propagate everywhere
-
-2001/08/24 dam's <damien@mandrakesoft.com>
-
- * pixmaps/mouse_3b_mini.xpm, pixmaps/mouse_3b+.xpm, pixmaps/mouse_3b.xpm,
- pixmaps/mouse_3b+_mini.xpm: mini pixmaps, and lower color res for normal
- pix
-
- * standalone/mousedrake: updated mouse test
-
-2001/08/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/libstdio/fdglue.c: fix this dietlibc... hope the
- uncompressing of ramdisk will rulz now
-
- * mdk-stage1/network.c: allow unsetting of automatic mode if not enough
- parameter provided in network steps
-
- * mdk-stage1/probing.c:
- - descr of proc files
- - fix small typo (segfault or not segfault? that's the question)
- enable install from Compaq Smart Array
-
- * mdk-stage1/dietlibc/Makefile, mdk-stage1/bzlib/Makefile: use CC rather
- than gcc statically
-
- * mdk-stage1/tools.c, mdk-stage1/mount.c: enable install from Compaq Smart
- Array
-
-2001/08/24 Pixel <pixel@mandrakesoft.com>
-
- * tools/pcmcia_config.patch: update the patch
-
- * Makefile (test_pms): make perl_checker skip help.pm
- ensure no .orig are generated when the pcmcia patch is applied
-
- * tools/make_mdkinst_stage2: give a little more free space (esp. for
- russian lang)
-
- * lang.pm, share/gen_locales.sh: no need for UTF-8/LC_CTYPE
-
- * share/po/help_xml2pm.pl, share/po/Makefile, help.pm: auto-generates
- help.pm from xml doc done by doc team
-
-2001/08/24 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm: bugfix, speedtouch help
-
- * standalone/mousedrake: updated mouse test
-
-2001/08/24 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fixed possible bug (not sorted partition when calling
- mount_part).
-
- * install_any.pm: fixed hdInstallPath for an hd installation without
- usingRamdisk (not installing
- urpmi in such case).
- updated packages to copy for printerdrake, removed almost obsoletes
- XFree86
- 3.3.6 servers (8514, AGX, Mach32, Mach8, Mono, P9000, W32, I128, VGA16,
- 3DLabs)
- which means user will have to change CD back to CD#1 if he a such a
- card.
- removed obsolete code for cond_remount and cond_umount and update
- hdInstallPath
- for hd installation.
-
- * diskdrake_interactive.pm: fixed typo common::usingRamdisk() instead of
- common::useRamdisk().
- take care mount point action is available for the hd installation
- partition only
- if a ramdisk is used (as it can be unmounted).
- use more global isMagicPart instead of isInstallHdPart.
- added real_mntpoint documentation and take care of hd install partition
- for
- available actions.
-
- * fs.pm: take care of using ram disk to remap mntpoint of hd installation
- partition.
- fixed partition never seen as mounted, added special case for
- real_mntpoint to
- remount magic partition on the right place.
-
-2001/08/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/libstdio/fdglue.c: fix this dietlibc... hope the
- uncompressing of ramdisk will rulz now
-
- * mdk-stage1/automatic.c: revert my auto->interactive patch
-
- * mdk-stage1/network.c: allow unsetting of automatic mode if not enough
- parameter provided in network steps
-
- * mdk-stage1/dietlibc/Makefile, mdk-stage1/bzlib/Makefile: use CC rather
- than gcc statically
-
- * mdk-stage1/tools.c, mdk-stage1/mount.c, mdk-stage1/probing.c: enable
- install from Compaq Smart Array
-
-2001/08/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/locales-skeleton.tar.bz2, share/fonts.tar.bz2, keyboard.pm:
- enabling euro and utf-8 for some languages; added unicode font
-
-2001/08/24 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: remove the cond_umount_hdimage and
- cond_remount_hdimage
-
- * tools/pcmcia_config.patch: update the patch
-
- * lang.pm: no need for UTF-8/LC_CTYPE
- (load_mo): if not usingRamdisk, don't try getFile
-
- * diskdrake_interactive.pm: remove the cond_umount_hdimage and
- cond_remount_hdimage
- (Done): do not write fstab nor ask about it in install
-
- * fs.pm (mount): allow to mount 'proc' and 'usbdevfs'
-
- * Makefile: ensure no .orig are generated when the pcmcia patch is applied
-
- * partition_table.pm (write): do not die when real_mntpoint fs fail to
- unmount/remount, just log
- (write): unmount+remount real_mntpoint before doing the kernel_read
-
- * share/gen_locales.sh: no need for UTF-8/LC_CTYPE
-
- * pkgs.pm: fix "invalid file"
-
-2001/08/24 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: speedtouch configuration
-
- * my_gtk.pm: gtk_create_xpm handles no absolute xpm path
-
- * pixmaps/mouse_3b+.xpm, pixmaps/mouse_middle.xpm, pixmaps/mouse_3b.xpm:
- added new mouse pixmap for mousedrake
-
- * network/adsl.pm: bugfix, speedtouch help
- added aliases for speedtouch stuff
- speedtouch configuration
- removed adsl detectioin, once again.
-
- * standalone/mousedrake: no absolute pixmap reference
- new mousedrake. experimental
-
- * network/tools.pm: speedtouch configuration
- export write_initscript, correct initscript.
-
-2001/08/24 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fixed possible bug (not sorted partition when calling
- mount_part).
-
- * diskdrake_interactive.pm: take care mount point action is available for
- the hd installation partition only
- if a ramdisk is used (as it can be unmounted).
- use more global isMagicPart instead of isInstallHdPart.
- added real_mntpoint documentation and take care of hd install partition
- for
- available actions.
-
- * install_any.pm: fixed hdInstallPath for an hd installation without
- usingRamdisk (not installing
- urpmi in such case).
- updated packages to copy for printerdrake, removed almost obsoletes
- XFree86
- 3.3.6 servers (8514, AGX, Mach32, Mach8, Mono, P9000, W32, I128, VGA16,
- 3DLabs)
- which means user will have to change CD back to CD#1 if he a such a
- card.
- removed obsolete code for cond_remount and cond_umount and update
- hdInstallPath
- for hd installation.
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2,
- mdk-stage1/init-data/msgboot.img.bz2: updated with latest 8.1 pictures
- and updated documentation.
-
- * fs.pm: take care of using ram disk to remap mntpoint of hd installation
- partition.
- fixed partition never seen as mounted, added special case for
- real_mntpoint to
- remount magic partition on the right place.
-
-2001/08/24 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm (write): do not die when real_mntpoint fs fail to
- unmount/remount, just log
- (write): unmount+remount real_mntpoint before doing the kernel_read
-
- * install_steps.pm: remove the cond_umount_hdimage and
- cond_remount_hdimage
-
- * diskdrake_interactive.pm: remove the cond_umount_hdimage and
- cond_remount_hdimage
- (Done): do not write fstab nor ask about it in install
-
- * lang.pm (load_mo): if not usingRamdisk, don't try getFile
-
- * fs.pm (mount): allow to mount 'proc' and 'usbdevfs'
-
-2001/08/24 siegel
-
- * share/po/de.po: New & shiny german version
-
-2001/08/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
- * share/po/el.po: updated Greek file
-
-2001/08/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
-2001/08/23 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: at_boot connection,resolvconf in profiles
-
- * standalone/draksec: addedlibsafe option
-
- * network/adsl.pm: restart network after having tested adsl. experimental
-
-2001/08/23 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: removed unusefull greping when building package
- tree.
-
-2001/08/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: work on GAMES section
-
-2001/08/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/lv.po: updated Latvian file
-
-2001/08/23 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (cond_umount_hdimage): do not unmount /tmp/hdimage if not
- using ramdisk
- (disable_user_view): damned kdmrc moved
-
- * diskdrake_interactive.pm: cancel at startup will now exit
- ask wether to save fstab
- (part_possible_actions): have "Mount point" first to please fpons
-
- * fs.pm: keep the freq&passno of /etc/fstab
-
- * tools/i386/netboot/menu.lst.example,
- tools/i386/netboot/make_boot_network,
- tools/i386/netboot/automatic.para.default: as we now have
- menu.lst.example, i remove automatic.para for more flexibility
-
- * lang.pm: fix locale support when usingRamdisk
-
-2001/08/22 anoncvs
-
- * share/po/zh_CN.GB2312.po: * Wed Aug 22 2001 DU Xiaoming
- <dxiaoming@mandrakesoft.com>
- Updated chinese (simplied) translation.
-
-2001/08/22 Pixel <pixel@mandrakesoft.com>
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: fix ru KOI8-R
-
- * network/nfs.pm: pleac perl_checker
-
- * interactive_gtk.pm: more intelligent setting back the selected value in
- the clist and ctree
- (done already for entry)
- - fix entries editing causing the cursor to go to the end of line
- - select the text
-
- * c/stuff.xs.pm, install_steps.pm, pkgs.pm: do init_db inside pkg_inside
- otherwise LOG is closed and rpmlib tries to write in it and ...
-
-2001/08/22 anoncvs
-
- * share/po/zh_CN.GB2312.po: * Wed Aug 22 2001 DU Xiaoming
- <dxiaoming@mandrakesoft.com>
- Updated chinese (simplied) translation.
-
-2001/08/22 fabman
-
- * share/po/es.po: updated spanish .po files for DrakX and drakbootdisk
-
-2001/08/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/automatic.c: don't stay automatic for ask_from_entries when
- entries are not given
-
- * mdk-stage1/tools.c, mdk-stage1/stage1.c, mdk-stage1/cdrom.c,
- mdk-stage1/mount.c, mdk-stage1/lomount.c, mdk-stage1/mount.h,
- mdk-stage1/network.c, mdk-stage1/modules.c, mdk-stage1/disk.c: mount all
- but ramdisk Read Only
-
-2001/08/22 Pixel <pixel@mandrakesoft.com>
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: fix ru KOI8-R
-
- * bootlook.pm: fix typo
-
- * network/nfs.pm: pleac perl_checker
-
- * install_steps.pm: do init_db inside pkg_inside otherwise LOG is closed
- and rpmlib tries to write in it and ...
- do not call configurePrinter if no printer is wanted
-
- * interactive_gtk.pm: more intelligent setting back the selected value in
- the clist and ctree
- (done already for entry)
- - fix entries editing causing the cursor to go to the end of line
- - select the text
-
- * c/stuff.xs.pm, pkgs.pm: do init_db inside pkg_inside otherwise LOG is
- closed and rpmlib tries to write in it and ...
-
-2001/08/22 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: fixed int and float checking which should accept
- negative number (added explicit
- positive too), cleaned code for some perl idioms.
-
- * install_steps.pm: updated configurePrinter to use foomatic printer
- configuration.
-
-2001/08/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/automatic.c: don't stay automatic for ask_from_entries when
- entries are not given
-
- * mdk-stage1/tools.c, mdk-stage1/stage1.c, mdk-stage1/cdrom.c,
- mdk-stage1/mount.c, mdk-stage1/lomount.c, mdk-stage1/mount.h,
- mdk-stage1/network.c, mdk-stage1/modules.c, mdk-stage1/disk.c: mount all
- but ramdisk Read Only
-
-2001/08/22 kjx
-
- * share/po/zh_CN.GB2312.po: review
- review
-
-2001/08/22 Pixel <pixel@mandrakesoft.com>
-
- * bootlook.pm: fix typo
-
- * install_steps_auto_install.pm: don't have formatPartitions interactive
- by default
-
- * install_steps.pm: do not call configurePrinter if no printer is wanted
-
-2001/08/22 siegel
-
- * share/po/de.po: new german version
-
-2001/08/21 dam's <damien@mandrakesoft.com>
-
- * Makefile: added rpcinfo to the tar
- corrected bad Makefile : rpcinfo-flushed.c comes from tools.
-
- * standalone/draknet: ergonomy correction
-
- * network/tools.pm: corrected qq bug
- corrected bug
-
- * standalone/net_monitor: log updatede
- removed memoty leak
- time connection label
-
-2001/08/21 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: moved installation code of foomatic (only)
- if a printer may be chosen.
-
- * install_any.pm: fixed hd installation for urpmi.
-
- * printerdrake.pm: slight rewrite of some perl idioms.
-
-2001/08/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po: updated Walloon file
- updated pot file
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
-2001/08/21 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: add telnet-client-krb5 and ftp-client-krb5
-
- * install_steps.pm: try to fix umount/remounting /tmp/hdimage in hd
- install
-
- * Makefile, share/po/Makefile: check presence of '$' in DrakX.pot
-
- * fs.pm (read_fstab): don't expand symlink if the link goes in a directory
-
- * install_any.pm: cleanup
-
- * install_steps_interactive.pm: fix '$' in i18n message
-
-2001/08/21 siegel
-
- * share/po/de.po: new german version
-
-2001/08/21 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: removed memoty leak
- time connection label
-
- * network/tools.pm, network/modem.pm, network/netconnect.pm,
- network/ethernet.pm, network/isdn.pm: generik internet initscript, planq
- the children again
-
- * network/adsl.pm: speedtouch config
- generik internet initscript, planq the children again
-
-2001/08/21 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed hd installation for urpmi.
-
-2001/08/21 kjx
-
- * share/po/zh_CN.GB2312.po: review
-
-2001/08/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2001/08/21 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: fix spelling error
-
- * install_any.pm: cleanup
- install hotplug if usb (i kept usbd just in case)
-
- * diskdrake_interactive.pm (Create): force no sorting on filesystems,
- editable mount points
-
- * install_steps.pm: try to fix umount/remounting /tmp/hdimage in hd
- install
-
- * Makefile, share/po/Makefile: check presence of '$' in DrakX.pot
-
- * install_steps_interactive.pm: fix '$' in i18n message
-
- * fs.pm (read_fstab): don't expand symlink if the link goes in a directory
- umask=0 only if security level < 3
-
-2001/08/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssUsers: Have NETWORKING_DNS in "Internet station" (was
- nowhere)
-
-2001/08/20 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: basic nfs handling in drakx
- fix bug 4257
-
- * detect_devices.pm (raidAutoStart): fix for when kmod is there
-
- * fsedit.pm: try a stronger matching technique for parsing /proc/mdstat
- with devfs
-
- * diskdrake_interactive.pm, install_any.pm, install_steps.pm: try harder
- to umount /tmp/hdimage only when needed
-
- * Makefile.drakxtools, Makefile, tools/rpcinfo-flushed.c, network/nfs.pm,
- tools/.cvsignore, tools/Makefile, diskdrake.pm: basic nfs handling in
- drakx
-
-2001/08/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssUsers: Have NETWORKING_DNS in "Internet station" (was
- nowhere)
-
-2001/08/20 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: add weird options for NeoMagic NM2160 (request
- of Alex Hulse <axh0@aber.ac.uk> on cooker)
-
- * detect_devices.pm (raidAutoStart): fix for when kmod is there
-
- * diskdrake.pm: remove test code
-
- * fs.pm: fix bug 4257
-
- * fsedit.pm: try a stronger matching technique for parsing /proc/mdstat
- with devfs
-
- * install_steps.pm, diskdrake_interactive.pm, install_any.pm: try harder
- to umount /tmp/hdimage only when needed
-
- * interactive_gtk.pm (wait_message_nextW): fix previous text == new text
- causing no
- expose_event causing dead loop
-
-2001/08/19 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake_interactive.pm: save fstab on exit
-
- * fsedit.pm: various typos fix
-
- * install_steps.pm: rename isCdNotEjectable in usingRamdisk, ensure no
- files are removed unless we're in ramdisk
- make the devfs= mount or nomount choice based on raid-based root work
-
- * standalone/diskdrake: rename isCdNotEjectable in usingRamdisk, ensure no
- files are removed unless we're in ramdisk
- fix diskdrake requiring gtk
- add some test code
-
- * fs.pm: rename isCdNotEjectable in usingRamdisk, ensure no files are
- removed unless we're in ramdisk
- various typos fix
-
- * install_steps_interactive.pm, common.pm, install2.pm, install_any.pm,
- lang.pm, pkgs.pm: rename isCdNotEjectable in usingRamdisk, ensure no
- files are removed unless we're in ramdisk
-
-2001/08/19 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: major fs.pm rework + adaptation to it
- don't show nfs/smb/removable in install
- basic smb handling
-
- * network/smb.pm: basic smb handling
-
- * install_steps.pm: rename isCdNotEjectable in usingRamdisk, ensure no
- files are removed unless we're in ramdisk
- make the devfs= mount or nomount choice based on raid-based root work
- disable supermount for the moment
- major fs.pm rework + adaptation to it
-
- * install_steps_interactive.pm, lang.pm: rename isCdNotEjectable in
- usingRamdisk, ensure no files are removed unless we're in ramdisk
- simplify
-
- * standalone/diskdrake: rename isCdNotEjectable in usingRamdisk, ensure no
- files are removed unless we're in ramdisk
- fix diskdrake requiring gtk
- add some test code
- major fs.pm rework + adaptation to it
-
- * install_any.pm: rename isCdNotEjectable in usingRamdisk, ensure no files
- are removed unless we're in ramdisk
- major fs.pm rework + adaptation to it
-
- * partition_table.pm: remove JFS from @important_types (too broken for the
- moment)
- remove isSupermount (was unused)
-
- * common.pm, install2.pm, pkgs.pm: rename isCdNotEjectable in
- usingRamdisk, ensure no files are removed unless we're in ramdisk
-
- * interactive_gtk.pm (create_ctree): fix focusing (the assumption number
- of leaves = number of lines is dumb)
-
- * fsedit.pm: various typos fix
- major fs.pm rework + adaptation to it
-
- * bootlook.pm, standalone/drakboot: major fs.pm rework + adaptation to it
-
- * fs.pm: rename isCdNotEjectable in usingRamdisk, ensure no files are
- removed unless we're in ramdisk
- various typos fix
- major fs.pm rework + adaptation to it
- cleanup
- basic smb handling
-
- * diskdrake_interactive.pm: save fstab on exit
- major fs.pm rework + adaptation to it
-
-2001/08/18 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm: basic nfs/smb handling in diskdrake
- fixes and function prototype removing
-
- * diskdrake.pm: basic nfs/smb handling in diskdrake
- nicer mount options code (for autofs and supermount)
-
- * install_steps.pm: oops, i inverted devfs=nomount and devfs=mount
-
- * interactive_gtk.pm: fix bug in box's height use
-
- * partition_table.pm, any.pm: fixes and function prototype removing
-
- * interactive.pm: readd the sorting based on size when no sorting is
- precised
-
- * my_gtk.pm (n_line_size): bigger spacing for 'various'
-
- * standalone/diskdrake, diskdrake_interactive.pm, fsedit.pm: basic nfs/smb
- handling in diskdrake
-
-2001/08/18 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm (n_line_size): bigger spacing for 'various'
- enhance look, fix ask_fileW
-
- * fs.pm: basic nfs/smb handling in diskdrake
- fixes and function prototype removing
- (write_fstab): add notail for reiserfs partitions in any case
- cleanup mounting options parsing
-
- * diskdrake.pm: basic nfs/smb handling in diskdrake
- nicer mount options code (for autofs and supermount)
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
- cleanup mounting options parsing
-
- * raid.pm: update the raid size as it should be
-
- * diskdrake_interactive.pm: basic nfs/smb handling in diskdrake
- less verbose resize_reiserfs
- update the raid size as it should be
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
-
- * fsedit.pm: basic nfs/smb handling in diskdrake
- update the raid size as it should be
-
- * network/tools.pm: fix typo
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
-
- * partition_table.pm: fixes and function prototype removing
-
- * install_steps_interactive.pm, standalone/drakautoinst, proxy.pm,
- install_interactive.pm, network/ethernet.pm, interactive_http.pm,
- printerdrake.pm, Xconfigurator.pm, network/netconnect.pm,
- network/network.pm, interactive_newt.pm, network/modem.pm: big renaming
- of ask_from_entries_refH in ask_from and ask_from_entries_refH_powered
- in ask_from_
-
- * standalone/diskdrake: basic nfs/smb handling in diskdrake
-
- * any.pm: fixes and function prototype removing
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
-
- * interactive_gtk.pm: fix bug in box's height use
- better radiobox keyboard handling
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
- enhance look, fix ask_fileW
-
- * interactive.pm: readd the sorting based on size when no sorting is
- precised
- big renaming of ask_from_entries_refH in ask_from and
- ask_from_entries_refH_powered in ask_from_
-
- * install_steps.pm: oops, i inverted devfs=nomount and devfs=mount
- do not use devfs with root software raid
-
-2001/08/18 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix pass $all_hds->{hds} instead of
- $all_hds
-
-2001/08/18 siegel
-
- * share/po/de.po: new german version
-
- * standalone/drakgw, bootlook.pm, network/ethernet.pm, install_any.pm,
- network/network.pm, raid.pm: fixed i18n
-
- * printerdrake.pm: i18n fixes
-
-2001/08/17 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm: use diskdrake_interactive instead of diskdrake
-
- * standalone/interactive_http/interactive_http.cgi: fix typo
- restrict the progs callable to a few one.
-
- * standalone/interactive_http/index.html.pl,
- standalone/interactive_http/index.html: autogenerate index.html
-
- * fs.pm, diskdrake_interactive.pm, diskdrake.pm: add mount options choice
- (with IA-like stripping of unused options)
-
- * c/stuff.xs.pm: is_ext3 is needed in standalone
- Xtest not needed in standalone
-
- * c/Makefile.PL: is_ext3 is needed in standalone
-
- * standalone/interactive_http/miniserv.init,
- standalone/interactive_http/Makefile: restrict the progs callable to a
- few one.
-
- * Makefile.drakxtools: fix po not build, add interactive_http in DIRS
-
- * modules.pm: move back sunhme in sparc only
-
-2001/08/17 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm: no scrollbar if list <= 10 and the list is alone
-
- * interactive.pm, install2.pm: removed no_incon
-
- * standalone/net_monitor: added no internet connection configured label on
- button
-
- * network/netconnect.pm, network/ethernet.pm: corrected connection script
- creation
-
-2001/08/17 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm: use diskdrake_interactive instead of diskdrake
- a hell lot of cleanup/rewrite:
- * diskdrake_interactive created, diskdrake is now interactive aware
- * added some documentation about the structure used for partitioning
- * all_hds now contain the various hds, lvm, raid
- * cleanup the isLVM, isRAID and alike functions
- * field {type} in detect_devices is now {media_type}
- * detect_devices::floppies is now floppies_dev
- * removed old function prototypes
-
- * fs.pm, diskdrake.pm: add mount options choice (with IA-like stripping of
- unused options)
- a hell lot of cleanup/rewrite:
- * diskdrake_interactive created, diskdrake is now interactive aware
- * added some documentation about the structure used for partitioning
- * all_hds now contain the various hds, lvm, raid
- * cleanup the isLVM, isRAID and alike functions
- * field {type} in detect_devices is now {media_type}
- * detect_devices::floppies is now floppies_dev
- * removed old function prototypes
-
- * install_steps_interactive.pm, install_steps_auto_install.pm,
- install2.pm, partition_table.pm, loopback.pm, raid.pm, bootlook.pm,
- standalone/diskdrake, install_any.pm, install_steps.pm, fsedit.pm,
- any.pm, detect_devices.pm, partition_table_raw.pm, bootloader.pm: a hell
- lot of cleanup/rewrite:
- * diskdrake_interactive created, diskdrake is now interactive aware
- * added some documentation about the structure used for partitioning
- * all_hds now contain the various hds, lvm, raid
- * cleanup the isLVM, isRAID and alike functions
- * field {type} in detect_devices is now {media_type}
- * detect_devices::floppies is now floppies_dev
- * removed old function prototypes
-
- * diskdrake_interactive.pm: add mount options choice (with IA-like
- stripping of unused options)
- (part_possible_actions): have possible actions sorted the way we want
- (Type): fix ext2->ext3 detection
- a hell lot of cleanup/rewrite:
- * diskdrake_interactive created, diskdrake is now interactive aware
- * added some documentation about the structure used for partitioning
- * all_hds now contain the various hds, lvm, raid
- * cleanup the isLVM, isRAID and alike functions
- * field {type} in detect_devices is now {media_type}
- * detect_devices::floppies is now floppies_dev
- * removed old function prototypes
-
- * modules.pm: move back sunhme in sparc only
-
-2001/08/17 Till Kamppeter <till@mandrakesoft.com>
-
- * share/rpmsrate: Corrected listing of packages for printing in 'INSTALL'
- section.
-
-2001/08/17 warly
-
- * share/rpmsrate: add package needed by the install in INSTALL
- remove shapecfg and gpa
-
-2001/08/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed bug of CUPS not being installed during
- installation
-
-2001/08/16 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm, install_any.pm: add remove_unused to have more place for mo
- files
-
-2001/08/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed bug of CUPS not being installed during
- installation
-
-2001/08/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: add remove_unused to have more place for mo files
- (getAndSaveAutoInstallFloppy): fix a missing del_loop which caused the
- unmounting at end of install to fail
-
- * install2.pm: add remove_unused to have more place for mo files
-
-2001/08/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed setup dialog for the "postpipe" connection type
-
-2001/08/16 warly
-
- * share/rpmsrate: add package needed by the install in INSTALL
-
-2001/08/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po: updated French file
-
- * share/po/sk.po: updated Slovak file
-
- * lang.pm: Added explicit setting of XFree86 internal XIM for Thai
-
-2001/08/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (getAndSaveAutoInstallFloppy): fix a missing del_loop
- which caused the
- unmounting at end of install to fail
-
-2001/08/16 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Fixed setup dialog for the "postpipe" connection type
-
-2001/08/16 warly
-
- * share/rpmsrate: add package needed by the install in INSTALL
- add kernel in INSTALL
- s/DrakConf/drakconf/
-
-2001/08/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/it.po, share/po/id.po: updated Indonesian,
- Italian and Korean files
-
- * share/po/sr.po, share/po/sp.po, share/po/tr.po: updated Turkish and
- Serbian files
-
-2001/08/15 Pixel <pixel@mandrakesoft.com>
-
- * standalone/diskdrake: oops reverting modifs commited by error
- fix XkbOptions handling
-
- * standalone/keyboarddrake: fix XkbOptions handling
-
-2001/08/15 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: Let the "Options" button only appear when
- the queue is Foomatic or with PPD (CUPS)
-
-2001/08/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po, share/po/it.po: updated Indonesian, Italian and Korean
- files
-
- * share/po/es.po: updated spanish and Indonesian files
-
- * share/po/id.po: updated Indonesian, Italian and Korean files
- updated spanish and Indonesian files
-
-2001/08/14 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: added options
-
-2001/08/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: oops, fix type of installing X or not
- - fix choice of packages when auto install
-
- * Makefile.config: add drakautoinst in drakxtools standalone binaries
-
- * install_steps_interactive.pm, install2.pm:
- - fix createBootdisk with auto
- - fix setupBootloader with auto
- - fix behaviour of draknet when auto-install
- - remove auto flag when error-in-step
-
- * install_steps.pm, network/netconnect.pm:
- - fix behaviour of draknet when auto-install
- - remove auto flag when error-in-step
-
- * Xconfigurator.pm: fix automatic configuration
-
-2001/08/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2001/08/14 Pixel <pixel@mandrakesoft.com>
-
- * devices.pm: add number-only device-name handling (eg: "801" is "sda1")
-
- * interactive_gtk.pm, interactive.pm:
- - small fixes (esp. gtk sensitive handling)
- - add ask_file
- - add "gtk" preference field
-
- * my_gtk.pm: remove ask_file (was unused)
-
- * http.pm: cleanup to please perl_checker
-
- * Makefile (TAGS): add MDK/Common files
-
- * services.pm: cleanup (it was working, but wasn't nice)
-
-2001/08/14 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: corrected activation button
-
-2001/08/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: oops, fix type of installing X or not
- - fix choice of packages when auto install
-
- * Makefile.config: add drakautoinst in drakxtools standalone binaries
-
- * install_steps_interactive.pm, install2.pm:
- - fix createBootdisk with auto
- - fix setupBootloader with auto
- - fix behaviour of draknet when auto-install
- - remove auto flag when error-in-step
-
- * install_steps.pm, network/netconnect.pm:
- - fix behaviour of draknet when auto-install
- - remove auto flag when error-in-step
-
- * Xconfigurator.pm: fix automatic configuration
-
-2001/08/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
-2001/08/14 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: fix typo?
-
-2001/08/14 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Transfer queues non-interactively when switching
- between LPD and LPRng.
-
-2001/08/14 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: corrected activation button
-
-2001/08/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm, install2.pm,
- network/netconnect.pm:
- - fix behaviour of draknet when auto-install
- - remove auto flag when error-in-step
-
- * Xconfigurator.pm: fix automatic configuration
-
- * install_any.pm:
- - fix choice of packages when auto install
-
-2001/08/14 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: fix typo?
-
-2001/08/14 Till Kamppeter <till@mandrakesoft.com>
-
- * printer.pm: Removed superfluous lines.
-
- * printerdrake.pm: Transfer queues non-interactively when switching
- between LPD and LPRng.
- Wait message for queue transfer, manufacturer name bugfix
-
-2001/08/13 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * tools/i386/netboot/stage2.eepro100: Add eepro100 grub stage.
- Removing old version of eepro100 (no stage1).
-
- * tools/i386/netboot/stage1.eepro100: Add eepro100 grub stage.
-
-2001/08/13 dam's <damien@mandrakesoft.com>
-
- * interactive.pm: corrected 'no icon'
-
- * network/adsl.pm, network/netconnect.pm: adsl autodetection activated
- (planq the children)
-
-2001/08/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakautoinst: ouch! use lib from /usr/lib/libDrakX, rather
- than from ..
- initial revision for drakautoinst
- - put %installSteps in a separate package (steps.pm) (for drakxtools)
- - use additional fields {auto} and {noauto}, by step, to ease
- interactive auto install and oem stuff
- - in install2.pm, perform each step either from the interactive class
- or from install_steps, according to the {auto} flag
- - id, tell each step to not try to be automatic if {noauto}
- - in the install, have auto install bootdisk created in install_any so
- we can always write a bootdisk (from install_steps) for further use from
- drakautoinst in standalone
- - interactive version of install_steps_auto_install is now inheriting
- from the interactive class, so we can click on a previous automatic step
- and have it interactively during an interactive auto install
-
- * install_steps.pm, install_steps_interactive.pm,
- install_steps_auto_install.pm, install2.pm, steps.pm, install_any.pm:
- initial revision for drakautoinst
- - put %installSteps in a separate package (steps.pm) (for drakxtools)
- - use additional fields {auto} and {noauto}, by step, to ease
- interactive auto install and oem stuff
- - in install2.pm, perform each step either from the interactive class
- or from install_steps, according to the {auto} flag
- - id, tell each step to not try to be automatic if {noauto}
- - in the install, have auto install bootdisk created in install_any so
- we can always write a bootdisk (from install_steps) for further use from
- drakautoinst in standalone
- - interactive version of install_steps_auto_install is now inheriting
- from the interactive class, so we can click on a previous automatic step
- and have it interactively during an interactive auto install
-
-2001/08/13 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_auto_install.pm, install2.pm, install_any.pm, steps.pm:
- auto_inst enhancements
-
- * install_steps_interactive.pm, standalone/XFdrake, install_steps.pm,
- Xconfigurator.pm: really use a class_discard for Xconfigurator::main
-
- * devices.pm: add /dev/hd[mt] handling
-
-2001/08/13 siegel
-
- * share/po/de.po: new german version
-
-2001/08/13 Till Kamppeter <till@mandrakesoft.com>
-
- * printerdrake.pm: Automatic transfer of queues when changing the spooler.
- Update printer queue list when exiting during install, so that the
- "Summary" entry is correct.
- When one sayd "No" on the test page, the modify dialog was not pointing
- to the current printer
-
- * printer.pm: Automatic transfer of queues when changing the spooler.
- The photo test page was not printed during installation.
-
- * interactive.pm: Tree lists are sorted again now.
-
-2001/08/13 yduret
-
- * standalone/drakxconf: removed diskdrake from the choice
-
-2001/08/12 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: longer timeout
-
-2001/08/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix ortograf typo
-
-2001/08/12 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile: po->mo is no longer gonna be nasty with us
-
- * interactive_gtk.pm: clean the nice till fix
-
- * tools/cvslog2changelog.pl: add till
-
- * Makefile: ensure locales.tar.bz2 in perl-install/share is build
- po->mo is no longer gonna be nasty with us
-
-2001/08/12 Till Kamppeter <till@mandrakesoft.com>
-
- * interactive.pm: Lists get only sorted when the "sort" option is given.
-
- * printer.pm, printerdrake.pm: Check files before checking RPM database =>
- Acceleration, waiting windows
-
-2001/08/11 dam's <damien@mandrakesoft.com>
-
- * share/themes.rc, share/logo-mandrake.png, share/themes-mdk.rc,
- share/themes/mdk-bg.png: new theme for beta
-
- * share/theme-editor.pl: updated
- now works.
-
-2001/08/11 tkamppeter
-
- * printer.pm, printerdrake.pm: Restructuring continued and debugged
-
-2001/08/10 dam's <damien@mandrakesoft.com>
-
- * share/theme-editor.pl: added theme editor
-
- * network/tools.pm: corrected password file substitution
-
- * network/ethernet.pm: remove Data::Dumper
-
- * network/netconnect.pm: added spped and timeout handling for isdn
-
- * any.pm: corrected autologin question
-
- * network/isdn.pm: tomeout option deactivated.
-
- * standalone/draknet: corrected internet cnfiguration pop up, and some
- other studds
- ifup/down ethx, anew pixmap for list
-
- * my_gtk.pm: removed Datta::Dump use
-
- * pixmaps/eth_card_mini2.png: added
-
-2001/08/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: small font fix
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/ar.po, share/po/sl.po, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * share/po/bg.po: updated Bulgarian file
- updated pot file
-
-2001/08/10 yduret
-
- * bootlook.pm: corrected vnew usage (thx gc)
-
-2001/08/09 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: added missing use
- added pixmap for eth. Some factorisation
-
- * network/tools.pm: added useless function type2interface for future use
-
- * my_gtk.pm: added gtkbuttonset, and corrected scrollbar height for
- standalone mode.
-
- * network/isdn.pm: labels corrections
-
-2001/08/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/tinyfirewall, standalone/printerdrake, standalone/mousedrake,
- standalone/drakxservices, standalone/net_monitor, standalone/draknet,
- standalone/drakproxy, standalone/XFdrake, standalone/keyboarddrake,
- standalone/drakxconf, standalone/adduserdrake, standalone/livedrake,
- standalone/drakboot, standalone/draksec: use vnew the right way
- everywhere
-
- * standalone/drakgw: use vnew the right way everywhere
- - if package installs fail, redo one by one to know which one failed
- - try to not end up with a failing configuration file, if program is
- brutally stopped
- - if unrecognized config file, don't fail, rather ignore it and
- proceed
- - run dhcpd_update feature (if present) after setup of dhcp server
-
- * share/rpmsrate: put traceroute in network client also, for claudio
-
-2001/08/09 Pixel <pixel@mandrakesoft.com>
-
- * standalone.pm, install_any.pm: rename interactive_pkgs in
- pkgs_interactive
-
-2001/08/09 siegel
-
- * standalone/interactive_http/miniserv.logrotate,
- standalone/interactive_http/Makefile: Added logrotate for
- "/var/log/drakxtools_http.log"
-
-2001/08/09 tkamppeter
-
- * printer.pm, printerdrake.pm: New structure for queue modification,
- general structure clean-up
-
-2001/08/09 yduret
-
- * bootlook.pm: readded in->do_pkg->install (i sux)
- rewrite in a more drakx fashion
-
- * my_gtk.pm: added gtkset_sensitive in wrapper..
-
-2001/08/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2001/08/08 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: typo
- makes interactive_pkgs stuff work
- add interactive_pkgs stuff
-
- * Makefile: skip module CGI in test_pms (perl_checker)
-
- * fsedit.pm (check_mntpoint): remove /root from directories that "should
- remain within the root filesystem"
-
- * proxy.pm, network/ethernet.pm, network/isdn.pm, tinyfirewall.pm,
- printerdrake.pm, standalone/drakgw, standalone/draknet,
- network/tools.pm, bootlook.pm, standalone.pm, standalone/drakproxy,
- standalone/XFdrake, network/netconnect.pm, standalone/adduserdrake,
- network/adsl.pm, network/network.pm, printer.pm, network/modem.pm: add
- interactive_pkgs stuff
-
- * install_steps_interactive.pm: installing foomatic before doing anything
- about printer
- add interactive_pkgs stuff
-
- * Xconfigurator.pm, any.pm: makes interactive_pkgs stuff work
- add interactive_pkgs stuff
-
- * install_any.pm (remove, remove_nodeps): fix typo
- makes interactive_pkgs stuff work
- add interactive_pkgs stuff
-
-2001/08/08 tkamppeter
-
- * install_steps_interactive.pm: Installation fitted to new printerdrake
-
- * printer.pm: Different choosable test pages available now
- Corrected init script calls in the (start|stop|restart)_service
- functions
-
- * printerdrake.pm: Different choosable test pages available now
- Removed superfluous line in install_spooler function
-
-2001/08/08 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (naughtyServers): add drakxtools-http
-
-2001/08/07 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: nex features
-
- * network/netconnect.pm: removed debugging message
-
- * network/isdn.pm: corrected pkgs use -> require
-
- * my_gtk.pm: added gtkset_relief
-
- * pixmaps/network.png, pixmaps/draknet_step.png: added
-
-2001/08/07 Pixel <pixel@mandrakesoft.com>
-
- * pixmaps/network.png, pixmaps/draknet_step.png: re-adding with -kb
- removing for re-adding with -kb
-
-2001/08/07 tkamppeter
-
- * printer.pm, printerdrake.pm: Automatic installation of all needed
- packages
-
-2001/08/07 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: corrected label
-
- * network/netconnect.pm: removed debugging message
-
- * standalone/net_monitor: nex features
- added color choice
- lot of improvments
-
- * network/isdn.pm: corrected pkgs use -> require
-
- * my_gtk.pm: added gtkset_relief
-
- * pixmaps/network.png, pixmaps/draknet_step.png: added
-
-2001/08/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/tools.c: say that it's a data read error, when we can't load
- the ramdisk
-
- * mdk-stage1/Makefile.common, mdk-stage1/bzlib/bzlib.h: don't use system
- wide bzlib.h but our own provided one
-
-2001/08/07 Pixel <pixel@mandrakesoft.com>
-
- * rescue/tree/etc/issue: fix distrib number
-
- * interactive.pm: adding http feature, mainly for standalone tools
-
- * standalone/miniserv.pem, standalone/miniserv.pl: Initial revision
- import
-
- * standalone/interactive_http/miniserv.pl: add interactive_http
- Initial revision
-
- * resize_fat/main.pm: fix
-
- * partition_table.pm: nicer names for journalised fs
-
- * Makefile.drakxtools, standalone/interactive_http/miniserv.init,
- standalone/interactive_http/index.html,
- standalone/interactive_http/interactive_http.cgi,
- standalone/interactive_http/miniserv.conf,
- standalone/interactive_http/miniserv.pam,
- standalone/interactive_http/miniserv.users, Makefile,
- standalone/interactive_http/Makefile: add interactive_http
-
- * interactive_http.pm, standalone/interactive_http.cgi: add
- interactive_http
- adding http feature, mainly for standalone tools
-
- * share/diskdrake.rc: have every journalised in darkred
-
- * c/stuff.xs.pm: add S_IFIFO
-
- * standalone/interactive_http/miniserv.pem: Initial revision
-
-2001/08/06 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: debugging, profile coding, isdn 128 debugging
- corrected gtkradio : shift instead of pop
-
- * interactive_gtk.pm, install_steps_gtk.pm: corrected gtkradio : shift
- instead of pop
-
- * network/netconnect.pm, network/ethernet.pm, network/isdn.pm: debugging,
- profile coding, isdn 128 debugging
-
-2001/08/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/i386/busybox: try a busybox with better globbing under the SHELL
-
-2001/08/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/de.po: Updates to German file by Peer Dunker <peer46@gmx.net>
-
- * share/po/vi.po: updated Vietnamese file
-
-2001/08/06 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm: kernel_arch removed
-
- * fsedit.pm (@suggestions_mntpoints): remove /root (tx2gc)
-
- * interactive_gtk.pm, interactive_newt.pm: cleanup, functions already
- defined in interactive
-
-2001/08/06 yduret
-
- * tinyfirewall.pm: use MDK::Common;
- use network::netconnect;
-
- * standalone/drakgw: use MDK::Common;
- use network::netconnect; and update functions call from netconnect
-
-2001/08/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eo.po: updated Esperanto file
-
-2001/08/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_auto_install.pm: switch to gtk install when
- interactiveSteps is defined
-
-2001/08/05 tkamppeter
-
- * printer.pm, printerdrake.pm: Automatic installation and start of the
- desired printer spooler
-
-2001/08/04 Pixel <pixel@mandrakesoft.com>
-
- * share/list: add tune2fs enabling switching from ext2 to ext3
-
- * fs.pm, fsedit.pm, partition_table.pm: add ext3 support
-
- * diskdrake.pm: add ext3 support
- (Type): handle lossless switch from ext2 to ext3
-
- * pkgs.pm: make perl_checker happy
-
- * c/stuff.xs.pm, c/Makefile.PL: add is_ext3
-
- * common.pm: moved arch() and alike to MDK::Common::System
-
-2001/08/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (choosePackages): simplify, fix
- setSelectedFromCompssList not called in
- expert even the first_time (especially nasty for auto_installs)
-
- * fs.pm, partition_table.pm, fsedit.pm: add ext3 support
-
- * diskdrake.pm: add ext3 support
- (Type): handle lossless switch from ext2 to ext3
-
- * install_steps_gtk.pm: add the feather feature, but do not enable it
-
- * interactive_gtk.pm (ask_browse_tree_info_refW): s/wait_msg/wait_message/
- (wait_msg doesn't
- exist anywhere, it must be a fpons typo)
-
- * pkgs.pm: make perl_checker happy
-
- * c/stuff.xs.pm, c/Makefile.PL: add is_ext3
-
- * bootloader.pm: as when lilo is selected, we don't try to install grub,
- just create the
- config file in case it may be useful
-
- * common.pm: moved arch() and alike to MDK::Common::System
-
- * partition_table_raw.pm: add yaboot detection
-
- * install_any.pm, share/rpmsrate: create a new flags "X" selected by
- default, contain what X related packages
- which were in "SYSTEM"
-
-2001/08/04 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (choosePackages): simplify, fix
- setSelectedFromCompssList not called in
- expert even the first_time (especially nasty for auto_installs)
-
- * install_steps_gtk.pm: add the feather feature, but do not enable it
-
- * bootloader.pm: as when lilo is selected, we don't try to install grub,
- just create the
- config file in case it may be useful
-
- * interactive_gtk.pm (ask_browse_tree_info_refW): s/wait_msg/wait_message/
- (wait_msg doesn't
- exist anywhere, it must be a fpons typo)
-
- * share/rpmsrate, install_any.pm: create a new flags "X" selected by
- default, contain what X related packages
- which were in "SYSTEM"
-
-2001/08/03 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor, network/tools.pm, network/netconnect.pm,
- network/isdn.pm: debugging, 128Kb/s ISDN
-
- * Makefile.drakxtools, Makefile: added network pms
-
-2001/08/03 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm: typo fix
- replace isJfs/isXfs/... with isThisFs("jfs"
-
- * install_any.pm: replace isJfs/isXfs/... with isThisFs("jfs"
- update_userkderc is now called update_gnomekderc
-
- * Makefile: better po skipping
-
- * commands.pm (sync): (re-?)add
-
- * fs.pm, install_steps_interactive.pm, diskdrake.pm, bootloader.pm:
- replace isJfs/isXfs/... with isThisFs("jfs"
-
- * fsedit.pm (check_mntpoint): /root should remain within the root
- filesystem
-
- * install_steps.pm (choosePartitionsToFormat): toFormatUnsure=1 for /usr
- update_userkderc is now called update_gnomekderc
-
-2001/08/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/adsl.c:
- - fix problem of clashing user/pass between adsl and ftp/http in case
- of automatic installs
- - update doc on automatic install parameters (doc/TECH-INFOS)
-
- * mdk-stage1/doc/TECH-INFOS:
- - small update
- - fix problem of clashing user/pass between adsl and ftp/http in case
- of automatic installs
- - update doc on automatic install parameters (doc/TECH-INFOS)
-
-2001/08/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
-2001/08/02 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm, services.pm, install_interactive.pm,
- network/netconnect.pm, install_any.pm, Xconfigurator.pm: instead of
- testing if ref($in) or ref($o) contains /gtk/, test if interactive_gtk
- is in ISA of the object
-
- * partition_table.pm, fsedit.pm, diskdrake.pm: JFS support
-
-2001/08/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/adsl.c:
- - fix problem of clashing user/pass between adsl and ftp/http in case
- of automatic installs
- - update doc on automatic install parameters (doc/TECH-INFOS)
-
- * mdk-stage1/doc/TECH-INFOS:
- - small update
- - fix problem of clashing user/pass between adsl and ftp/http in case
- of automatic installs
- - update doc on automatic install parameters (doc/TECH-INFOS)
-
-2001/08/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
-2001/08/02 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: instead of testing if ref($in) or ref($o) contains
- /gtk/, test if interactive_gtk is in ISA of the object
- add jfs support
-
- * install_steps_interactive.pm, services.pm, install_interactive.pm,
- network/netconnect.pm, Xconfigurator.pm: instead of testing if ref($in)
- or ref($o) contains /gtk/, test if interactive_gtk is in ISA of the
- object
-
- * partition_table.pm: JFS support
- add jfs support
-
- * fsedit.pm, diskdrake.pm: JFS support
-
- * tools/ntp_servers.pl, timezone.pm: update ntp servers list
-
- * fs.pm, share/list: add jfs support
-
-2001/08/02 Pixel <pixel@mandrakesoft.com>
-
- * tools/ntp_servers.pl, timezone.pm: update ntp servers list
-
- * fs.pm, share/list, partition_table.pm, install_any.pm: add jfs support
-
-2001/08/01 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: write_on_text writes in blue instead of black
-
- * network/isdn.pm: typo
- added de-installation before installateion
-
- * network/netconnect.pm: translation correction
-
-2001/08/01 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, fsedit.pm: handle auto_allocate_raids for
- auto_installs
-
- * raid.pm (new): now works with a list of partitions
-
-2001/08/01 tkamppeter
-
- * printer.pm: Fixed bug in recognizing the printer ID in the Foomatic
- overview.
-
-2001/08/01 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: write_on_text writes in blue instead of black
-
- * network/isdn.pm: typo
- added de-installation before installateion
-
- * network/netconnect.pm: translation correction
-
-2001/08/01 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, fsedit.pm: handle auto_allocate_raids for
- auto_installs
-
- * raid.pm (new): now works with a list of partitions
-
-2001/07/31 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: added splash screen between different
- configurations. Added splash wizard mode
- added intro step for each configuration type.
-
- * network/tools.pm: corrected ask_connect_now
-
- * my_gtk.pm: added write_on pixmap : a function to write text on pixma,
- using fonts.
-
- * network/ethernet.pm: added intro step for each configuration type.
-
-2001/07/31 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_steps_interactive.pm: after copying the auto install floppy,
- sync in case you shall remove the
- floppy right after the LED switches off yet the kernel decides to not
- flush
- everything
-
- * modules.pm, mdk-stage1/modules_descr.h: have "catc" driver for usbnet
- installs
-
- * bootloader.pm: load msdos and vfat before mkbootdisk (now using syslinux
- so..)
-
-2001/07/31 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (translate): empty string translation is an empty string
-
- * install_gtk.pm (test_mouse): s/my (.*) = 0 if 0/my $1 if 0/
-
- * share/rpmsrate: add cpio
- lower gurpmi (5->4)
-
- * share/gen_locales.sh, share/locales-skeleton.tar.bz2: chineese locale
- support
- better handling of locales
-
- * Makefile.drakxtools (install): s/cp -rf/cp -rfL/ (-L = --dereference,
- aka always follow symbolic links)
-
- * install_steps_gtk.pm (installPackages): make $show_advertising a global
- state (for Vincent Meyer)
-
- * share/Makefile, Makefile: better handling of locales
-
- * install_steps_auto_install.pm: remove bad prototype
-
-2001/07/30 dam's <damien@mandrakesoft.com>
-
- * network/ethernet.pm: added cable internet connection selection
- added internet connection selection in case of multiple configurations
-
- * network/netconnect.pm: corrected ask_connect_now behaviour
- corrected ask_connect_now
- debug
- added internet connection selection in case of multiple configurations
-
- * network/adsl.pm, network/tools.pm, network/modem.pm, network/isdn.pm:
- corrected ask_connect_now
- added internet connection selection in case of multiple configurations
-
-2001/07/30 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (getDeps): ensure "depslist.ordered has not same package as
- hdlist files"
- occurs when the hdlists are in fact not available
-
- * share/locales.tar.bz2.ppc, share/locales.tar.bz2,
- share/locales.tar.bz2.sparc, share/.cvsignore, share/gen_locales.sh,
- share/locales-skeleton.tar.bz2: automatic handling of locales.tar.bz2
- based on installed glibc
-
- * printer.pm, printerdrake.pm: use MDK::Common
- i wonder why it was included and Till used an older version without
- merging?
-
- * resize_fat/main.pm: switch to MDK::Common (i wonder why it was not done
- yet)
-
- * share/rpmsrate: raise rxvt (4->5)
- lower rpmdrake & harddrake (5->4)
- remove rootfiles (unneeded)
-
- * Makefile: use -excludeMDK::Common::Globals for perl_checker
- automatic handling of locales.tar.bz2 based on installed glibc
-
-2001/07/30 tkamppeter
-
- * printer.pm, printerdrake.pm: In beginners mode one chooses only the
- printer, not the driver (default driver)
-
-2001/07/30 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm: debug
- added internet connection selection in case of multiple configurations
-
- * network/adsl.pm, network/tools.pm, network/modem.pm, network/isdn.pm:
- added internet connection selection in case of multiple configurations
-
- * network/ethernet.pm: added cable internet connection selection
- added internet connection selection in case of multiple configurations
-
-2001/07/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/tools.c, mdk-stage1/stage1.c, mdk-stage1/config-stage1.h:
- have a memory limit also for Rescue (different one)
-
-2001/07/30 Pixel <pixel@mandrakesoft.com>
-
- * printer.pm, printerdrake.pm: use MDK::Common
- i wonder why it was included and Till used an older version without
- merging?
-
- * resize_fat/main.pm: switch to MDK::Common (i wonder why it was not done
- yet)
-
- * share/rpmsrate: raise rxvt (4->5)
- lower rpmdrake & harddrake (5->4)
- remove rootfiles (unneeded)
-
- * pkgs.pm (getDeps): ensure "depslist.ordered has not same package as
- hdlist files"
- occurs when the hdlists are in fact not available
-
- * Makefile: use -excludeMDK::Common::Globals for perl_checker
- automatic handling of locales.tar.bz2 based on installed glibc
-
- * share/locales.tar.bz2.ppc, share/locales.tar.bz2,
- share/locales.tar.bz2.sparc, share/.cvsignore, share/gen_locales.sh,
- share/locales-skeleton.tar.bz2: automatic handling of locales.tar.bz2
- based on installed glibc
-
-2001/07/28 tkamppeter
-
- * printer.pm, printerdrake.pm: Support for PPD files of PostScript
- printers (when CUPS is used)
-
-2001/07/27 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: fixed undeselectable group when 'Other' sub-tree
- is seen as a package.
-
- * interactive_gtk.pm: allow ask_browse_tree_info_refW to return 0 on
- cancel (previously always 1).
- added a before leaving code to clean added reference (else it seems to
- bahave
- strangely on changing steps).
- fixed wrong reference to added icons to ask_browse_tree_info_refW.
-
- * services.pm: allow cancel on services which do not change anything.
-
- * install_steps_interactive.pm: changed warn dialog to okcancel dialog
- when asking user to insert Boot floppy
- used or Update Modules floppy (die may cause to rerun install else).
-
-2001/07/27 gbeauchesne
-
- * install_steps_gtk.pm:
- - install_steps_gtk.pm (launchX) : create /var/log, if not existent,
- for
- XFree86.log
-
-2001/07/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules.c: allow to escape from Update Modules if you don't
- want to insert an ext2 floppy
- Disk -> Floppy for Update Modules disk
-
-2001/07/27 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * share/locales.tar.bz2.ppc, keyboard.pm, help.pm, partition_table.pm,
- Xconfigurator.pm: last of sync with PPC beta mods
-
-2001/07/27 tkamppeter
-
- * standalone/printerdrake, printer.pm, printerdrake.pm: Printerdrake
- changed to use Foomatic, driver options, spooler change
-
-2001/07/26 dam's <damien@mandrakesoft.com>
-
- * network/isdn.pm: added firmware loading/configuration
- not loading the module at detection.
-
- * standalone/draknet: MDK::common correction
-
- * modules.pm: added default option id="HiSax" to isdn module
-
-2001/07/26 fcrozat
-
- * share/po/fr.po: Fix spelling of 'molette'
-
-2001/07/26 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: added blank and updatemodules options to DrakX.
-
- * bootloader.pm: added prioritary kernel entry 'default' as the kernel
- typically copied from a
- modified blank.img file with a kernel (no initrd.img necessary to
- build).
- This kernel takes precedance over any other kernel.
-
- * install_steps_interactive.pm: really fixes Diskette with Floppy.
- fix typo as Diskette to Floppy.
- add support for new modules load as described by GG.
-
- * install_steps.pm: fixed some silly typo and tiny bugs.
- fixed typo as Diskette to Floppy.
- add support for modified blank.img floppy and Update Modules floppy.
- In first case copy kernel to /boot/vmlinuz-default to be taken into
- account by
- bootloader suggestion method.
- In second case, check installed kernel and update any modules listed in
- the
- Update Modules floppy.
-
-2001/07/26 gbeauchesne
-
- * bootloader.pm:
- - Don't set "lba32" on ia64
-
-2001/07/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.h, mdk-stage1/modules.c: pass
- "--blank" to DrakX when module loading is disabled
- - add "changedisk" feature
- - add "updatemodules" feature
-
- * mdk-stage1/tools.c, mdk-stage1/doc/UPDATEMODULES, mdk-stage1/stage1.h:
- - add "changedisk" feature
- - add "updatemodules" feature
-
- * mdk-stage1/probing.c: silently load usb controllers
-
-2001/07/25 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: fixed new network organization
-
- * standalone/net_monitor: updated. Profile handling.
-
- * network/isdn_consts.pm: updated ISDN detection. Added firmware handling
- and drivers other than hisax
-
-2001/07/25 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed no test (or die test) to void package read on depslist
- (allowed to keep
- package indexing good on multi-arch).
- cleaned code to examine depslist.ordered and packages list.
-
- * rescue/make_rescue_img: fixed to use perl-MDK-Common.
-
- * tools/syncrpms: fixed still missing rpmtools:: before a version_compare
- ...
-
-2001/07/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules_descr.h: small typo
-
- * mdk-stage1/init.c, mdk-stage1/newt-frontend.c: Use Yahve quoting
-
-2001/07/25 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile (install): build mo's
-
- * commands: move to MDK::Common, bool->to_bool
-
- * common.pm: do not export sync, keep it in common (esp. so that it
- doesn't conflict with my_gtk::sync
- (removeXiBSuffix): add TB (tera)
-
- * share/po/i18n_compssUsers, rescue/make_rescue_img: use MDK::Common
-
- * share/verify_modules.pl: new common syntax
-
- * Makefile:
- - temporary hack to have at least good UTF-8 based locales (otherwise
- rpmlib segfaults)
- - touch share/po/*.po, so that they are not rebuilded (pablo takes
- care of them)
-
- * share/list: add MDK::Common::Globals
-
- * partition_table_sun.pm, install2.pm, partition_table.pm, commands.pm,
- install_steps.pm, partition_table_raw.pm, partition_table_mac.pm: do not
- export sync, keep it in common (esp. so that it doesn't conflict with
- my_gtk::sync
-
-2001/07/25 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mdk-stage1/modules_descr.h: add decriptions for integrated Apple
- Network/SCSI hardware
-
-2001/07/24 dam's <damien@mandrakesoft.com>
-
- * network/isdn_consts.pm, network/netconnect.pm, network/ethernet.pm:
- corrected speed fax + PCI, updated configuration
-
-2001/07/24 daouda
-
- * bootlook.pm: better runlevel handling -> persistent level choice
-
-2001/07/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated pot file
-
-2001/07/24 Pixel <pixel@mandrakesoft.com>
-
- * commands.pm: move to MDK::Common, bool->to_bool
- fix syntax
- removed/renamed unused/seldom-used functions
- generalize the use of chomp_ as the functional alternative to chomp (and
- works on lists)
-
- * swap.pm: temporary hack to have at least good UTF-8 based locales
- (otherwise rpmlib segfaults)
- move to MDK::Common, bool->to_bool
-
- * unused/scsi.pm, standalone/draknet: generalize the use of chomp_ as the
- functional alternative to chomp (and works on lists)
-
- * globals.pm, perl2fcalls:
- - globals is now MDK::Common::Globals
- - perl2fcalls is now /usr/bin/perl_checker
-
- * install_steps_gtk.pm: move to MDK::Common, bool->to_bool
- move to MDK::Common, bool->to_bool
- removed/renamed unused/seldom-used functions
-
- * common.pm: move to MDK::Common, bool->to_bool
- cleanup (remove unused stuff and dangerous prototypes)
- removed/renamed unused/seldom-used functions
- generalize the use of chomp_ as the functional alternative to chomp (and
- works on lists)
-
- * network/tools.pm, network/adsl.pm, network/netconnect.pm,
- network/ethernet.pm, network/isdn.pm, network/modem.pm:
- - globals is now MDK::Common::Globals
- - perl2fcalls is now /usr/bin/perl_checker
- move to MDK::Common, bool->to_bool
-
- * partition_table_dos.pm, partition_table_empty.pm, my_gtk.pm, modparm.pm,
- standalone/keyboarddrake, install2.pm, raid.pm, crypto.pm,
- partition_table_mac.pm, standalone/mousedrake, devices.pm,
- install_steps.pm, resize_fat/main.pm, help.pm, install_interactive.pm,
- install_steps_stdio.pm, loopback.pm, resize_fat/any.pm,
- standalone/drakboot, pkgs.pm, keyboard.pm, Xconfigurator.pm, fs.pm,
- interactive_gtk.pm, standalone/drakxservices, fsedit.pm,
- network/network.pm, interactive_stdio.pm, diskdrake.pm, modules.pm,
- resize_fat/directory.pm, standalone/net_monitor,
- install_steps_auto_install.pm, partition_table_sun.pm, proxy.pm,
- lang.pm, partition_table_bsd.pm, tinyfirewall.pm, standalone/draksec,
- standalone/drakxconf, resize_fat/info_sector.pm,
- standalone/adduserdrake, sbus_probing/main.pm, printer.pm,
- partition_table_raw.pm, install_steps_interactive.pm, install_gtk.pm,
- Xconfigurator_consts.pm, resize_fat/boot_sector.pm, partition_table.pm,
- standalone/livedrake, standalone/drakgw, mouse.pm, lvm.pm,
- interactive.pm, share/list, interactive_newt.pm, install_steps_newt.pm,
- bootloader.pm: move to MDK::Common, bool->to_bool
-
- * services.pm, printerdrake.pm: move to MDK::Common, bool->to_bool
- removed/renamed unused/seldom-used functions
-
- * standalone/diskdrake, install_any.pm, any.pm, Xconfig.pm, timezone.pm,
- detect_devices.pm, bootlook.pm: move to MDK::Common, bool->to_bool
- generalize the use of chomp_ as the functional alternative to chomp (and
- works on lists)
-
- * Makefile: temporary hack to have at least good UTF-8 based locales
- (otherwise rpmlib segfaults)
- move to MDK::Common, bool->to_bool
- move to MDK::Common, bool->to_bool
-
-2001/07/23 dam's <damien@mandrakesoft.com>
-
- * modules.pm, network/tools.pm, network/isdn_consts.pm,
- network/netconnect.pm, network/isdn.pm: isdn now works with isdn-light.
- Only 64kb/s and still some debuf stuff to be fixed.
-
-2001/07/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/sk.po: updated Slovak and Croatian files
-
-2001/07/23 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: cleanup
-
- * c/stuff.xs.pm, Makefile.drakxtools, standalone.pm, common.pm, Makefile,
- tools/make_mdkinst_stage2, lang.pm, share/po/Makefile,
- share/po/.cvsignore: do not use the po's directly. Use mo's through
- gettext
-
-2001/07/22 dam's <damien@mandrakesoft.com>
-
- * network/netconnect.pm, network/isdn.pm: updated isdn config, moved
- isdn_data from netconnect_const to isdn_const
- big work on isdn. Not finished
-
- * modules.pm, standalone/net_monitor, network/tools.pm, detect_devices.pm:
- big work on isdn. Not finished
-
- * network/netconnect_consts.pm, network/isdn_consts.pm: updated isdn
- config, moved isdn_data from netconnect_const to isdn_const
-
-2001/07/20 François Pons <fpons@mandrakesoft.com>
-
- * docs/README.pxe: initial release, dhcpd and tftpd only.
-
-2001/07/20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/el.po: updated Greek file
-
-2001/07/20 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile: externalize the pm 2 pm_.c in fake_c.pl
-
- * lang.pm: fix
- (load_po): enhance readability
-
- * share/po/fake_c.pl: cleanup
- externalize the pm 2 pm_.c in fake_c.pl
-
- * common.pm (translate): basic plural forms handling (not finished)
-
- * help.pm: fix missing ``"''
-
- * bootloader.pm: fix
- (install_lilo): order fat partitions first
-
-2001/07/19 dam's <damien@mandrakesoft.com>
-
- * share/themes.rc, share/logo-mandrake.png, share/themes-mdk.rc,
- share/help.png: new color
-
- * network/netconnect.pm: correct bug. thanx to the little stagiaire.
-
-2001/07/19 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: updated with new
- graphic logo for 8.1
-
-2001/07/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/fi.po, share/po/DrakX.pot, share/po/es.po,
- share/po/eo.po, share/po/fr.po, share/po/wa.po, share/po/da.po,
- share/po/de.po, share/po/el.po, share/po/et.po, share/po/hu.po,
- share/po/eu.po: updated Croatian file
-
-2001/07/19 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: updated with new
- graphic logo for 8.1
-
- * Xconfigurator.pm: fixed problable freeze on pci probe.
-
-2001/07/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/fi.po, share/po/DrakX.pot, share/po/es.po,
- share/po/eo.po, share/po/fr.po, share/po/wa.po, share/po/da.po,
- share/po/de.po, share/po/el.po, share/po/et.po, share/po/hu.po,
- share/po/eu.po: updated Croatian file
-
-2001/07/19 Pixel <pixel@mandrakesoft.com>
-
- * globals.pm: no strict 'refs' instead of 'vars'
-
- * services.pm: rename ask_install_gtk in ask_install, ask_install is now
- ask_install_simple (obsolete)
-
- * install_steps_auto_install.pm: fix exit install in graphical
- auto_install's
-
-2001/07/19 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_auto_install.pm, install_steps_newt.pm, install2.pm: based
- on Michael Brown <mbrown@fensystems.co.uk> patch:
- - enables graphical steps in auto_installs for more than gtk
- - various cleanup
-
- * globals.pm: no strict 'refs' instead of 'vars'
-
- * services.pm: rename ask_install_gtk in ask_install, ask_install is now
- ask_install_simple (obsolete)
-
-2001/07/18 mbadaire
-
- * modules.pm, install_any.pm, bootloader.pm: IA64 adaptation
-
-2001/07/18 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * modules.pm, install_steps.pm, install_steps_interactive.pm,
- tools/serial_probe/serial.c, detect_devices.pm, partition_table_mac.pm,
- diskdrake.pm: roll back some changes from PPC beta - OldWorld vs
- NewWorld bootloader
- modem detection on ttyS0, new sound module in 2.4.4
-
-2001/07/17 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: disabled Frame buffer for all S3 cards (hangs with XF4
- and S3 ViRGE on reboot
- with Aurora).
-
- * Xconfigurator.pm: cleaned and added S3 Inc in the list to disable test
- for these card.
-
-2001/07/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: removed references to XFree86-ISO8859-{2,9} packages (no
- more used)
-
- * keyboard.pm: small keyboard changes
-
-2001/07/13 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/po/fr.po: update
-
-2001/07/12 François Pons <fpons@mandrakesoft.com>
-
- * fs.pm: fixed wrong examination of fsck return code (exit code 1 says
- fsck succeeded in
- fixing partition and now is ok).
-
- * run_program.pm: changed exit code of failed exec in rooted to 128
- instead of 1 (may clash with
- exit code of fsck else).
-
- * any.pm: fixed bug for writing in /etc/sysconfig/desktop file.
-
-2001/07/12 François Pons <fpons@mandrakesoft.com>
-
- * interactive.pm: added ask_browse_tree_info and ask_browse_tree_info_refW
- (default).
-
- * services.pm: reworked to use new service layout for install.
-
- * install_steps_gtk.pm: use common code for tree with info dialog
- (individual package selection).
-
- * fs.pm: fixed wrong examination of fsck return code (exit code 1 says
- fsck succeeded in
- fixing partition and now is ok).
-
- * interactive_gtk.pm: merging common code for individual package selection
- and service to create
- ask_browse_tree_info_refW, added featrures for group icon always
- up-to-date
- (take some memory but not too much, not used if flat model).
-
- * run_program.pm: changed exit code of failed exec in rooted to 128
- instead of 1 (may clash with
- exit code of fsck else).
-
- * any.pm: fixed bug for writing in /etc/sysconfig/desktop file.
-
-2001/07/10 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mdk-stage1/init.c, mdk-stage1/Makefile.common: minor mods for PPC build,
- define TIOCSCTTY, Makefile mods
-
-2001/07/09 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added multiple tries if a transaction of only one package
- fails.
-
- * install_any.pm: added LDAP support for authentication.
-
- * install_steps_interactive.pm: added LDAP support for password
- authentication, updated root password window look.
-
- * bootloader.pm: fixed compilation error.
- removed compilation error, the resolution is not quite good and may be
- reworked :-)
-
- * help.pm: updated root password help.
-
-2001/07/09 mbadaire
-
- * bootloader.pm: modify lilo.conf to elilo.conf if arch ia64
-
- * common.pm: Add IA64 support
-
-2001/07/08 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (suggest): replace "is ia64" with "is not ia64" so that
- boot partition is
- set correctly again
-
-2001/07/08 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (suggest): replace "is ia64" with "is not ia64" so that
- boot partition is
- set correctly again
-
-2001/07/06 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed selected_leaves. change algorithm as previous one can
- still causes dead
- lock and may not reproduce correct list. take care of choice that need
- to be
- examined before else another package may be chosen if choice is not
- satisfied
- when selecting packages.
-
- * install_any.pm: change all 8 space into a tabulation, this is simple and
- may change visual
- aspect but it gives correct output and filesize by 40%.
-
-2001/07/06 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed selected_leaves. change algorithm as previous one can
- still causes dead
- lock and may not reproduce correct list. take care of choice that need
- to be
- examined before else another package may be chosen if choice is not
- satisfied
- when selecting packages.
-
- * install_any.pm: change all 8 space into a tabulation, this is simple and
- may change visual
- aspect but it gives correct output and filesize by 40%.
-
-2001/07/06 Pixel <pixel@mandrakesoft.com>
-
- * tools/ntp_servers.pl: some workarounds
-
-2001/07/06 Pixel <pixel@mandrakesoft.com>
-
- * tools/ntp_servers.pl: some workarounds
-
-2001/07/05 François Pons <fpons@mandrakesoft.com>
-
- * keyboard.pm: added DISABLE_WINDOWS_KEY in /etc/sysconfig/keyboard if a
- laptop is detected.
-
-2001/07/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules_descr.h: add usb net descriptions
-
-2001/07/05 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm (file2part): created
-
- * any.pm: ia64 bootloader configuration adaptations
-
- * bootloader.pm: typo fix
- ia64 bootloader configuration adaptations
-
-2001/07/04 dam's <damien@mandrakesoft.com>
-
- * globals.pm: added error handling
-
- * network/netconnect.pm, network/ethernet.pm: modularized. It compiles,
- runs, and works for some stuff.
- modularization continuated
- updated CVS:
- ----------------------------------------------------------------------
- uses the fantastic global module.
- corrected
-
- * standalone/draknet: corrected
-
- * network/tools.pm, network/adsl.pm: modularized. It compiles, runs, and
- works for some stuff.
- updated CVS:
- ----------------------------------------------------------------------
- uses the fantastic global module.
- corrected
-
- * network/network.pm: modularized. It compiles, runs, and works for some
- stuff.
- modularization continuated
-
- * network/isdn.pm, network/modem.pm: modularized. It compiles, runs, and
- works for some stuff.
- updated CVS:
- ----------------------------------------------------------------------
- uses the fantastic global module.
-
- * docs/net_object_class.fig: updated doc
-
-2001/07/04 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added missing last Card read from Cards+ file.
- allow S3 card to have VideoRam uncommented, fix 86c368 video driver that
- seems
- needing VideoRam too.
- fixed need of video ram if 86c368 and S3 ViRGE.
-
- * install_any.pm: another too wide string truncated to 80 chars.
- make auto_inst.cfg file no longer than 80 chars wide.
-
- * install_steps_interactive.pm: added back timezone settings (thanks
- FredC).
-
-2001/07/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/adsl.c: nonsense to exit if interface is not "eth.*"
-
- * mdk-stage1/newt-frontend.c: very nice things happen when you hardcode
- arrays to a too small value
-
- * docs/HACKING: update -d in order to get all the directories...
-
-2001/07/04 mbadaire
-
- * tools/ia64/elilo.efi, tools/specific_arch, share/list.ia64,
- tools/ia64/e2fsck.shared: Ia64 Adaptation
-
- * install_gtk.pm, share/list.i386, common.pm, share/list.ppc, share/list,
- share/list.alpha, install_steps_gtk.pm, share/list.sparc: Ia64
- adaptation
-
-2001/07/04 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (selected_leaves): fix dead-loop
- (selected_leaves): make it work with loops (eg: mandrake_desk loops with
- control-center resulting on none of them being a leaf)
-
- * perl2fcalls: check exclude_uses before reporting bad use of "use"
- exclude module globals from use's to look at
-
- * globals.pm (import): yet another fix
- fix a pb when init is called before another import
- typo correction
- enhanced: shared values are grouped together based on a name
- module to share constant values between modules
-
- * fsedit.pm: add /boot/efi in suggestions for ia64
-
- * install_interactive.pm, install_steps.pm: fix typo
- verify a /boot/efi partition exists
-
- * Makefile, install_any.pm, share/list.ppc, share/list.alpha, share/list,
- share/list.sparc: remove busybox as default shell. Only use it as the
- interactive shell on tty2
-
-2001/07/03 dam's <damien@mandrakesoft.com>
-
- * network/adsl.pm, network/netconnect_consts.pm, network/tools.pm,
- network/modem.pm, network/netconnect.pm, network/isdn.pm: network
- subsystem now compiles. Enjoy
-
- * docs/net_object_class.fig: documentation about net modules structure
-
-2001/07/03 François Pons <fpons@mandrakesoft.com>
-
- * network/netconnect.pm: fix another dam's sucks
- fix dam's sucks
-
- * network/netconnect_consts.pm, Makefile.config: fix dam's sucks
-
- * standalone/XFdrake: expert is allowed to choose frame buffer.
-
- * install_steps_interactive.pm: added loadSavePackagesOnFloppy to manage
- package selection file used by
- auto_install too from packages tree directly on floppies.
-
- * share/floppy.png: updated size to 16x22 to be more aligned.
- for loading/saving packages selection.
-
- * install_any.pm: modified g_default_packages to be used from package tree
- save on floppy.
-
- * install_steps_gtk.pm: added Load/Save on floppy.
- added improve choice of package, well not very usefull but asked by
- higher
- people :-)
-
-2001/07/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/rp-pppoe/gui/html/props-basic.png,
- mdk-stage1/rp-pppoe/gui/html/props-options.png,
- mdk-stage1/rp-pppoe/gui/html/props-advanced.png,
- mdk-stage1/rp-pppoe/gui/html/mainwin-busy.png,
- mdk-stage1/rp-pppoe/gui/html/mainwin-nonroot.png,
- mdk-stage1/rp-pppoe/gui/html/mainwin.png,
- mdk-stage1/rp-pppoe/gui/html/props-nic.png: plop
-
- * modules.pm, mdk-stage1/probing.h, mdk-stage1/.cvsignore,
- mdk-stage1/usb-resource/Makefile,
- mdk-stage1/usb-resource/update-usb-ids.pl, mdk-stage1/Makefile,
- mdk-stage1/usb-resource/.cvsignore, mdk-stage1/probing.c: add support
- for install from USB Network Adapters
-
-2001/07/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/es.po,
- share/po/fr.po, share/po/sr.po, share/po/de.po, share/po/el.po,
- share/po/et.po, share/po/sk.po, share/po/tr.po, share/po/eu.po,
- share/po/ru.po, share/po/sl.po, share/po/vi.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/wa.po, share/po/da.po,
- share/po/sv.po, share/po/zh_TW.Big5.po: updated Danish file
-
-2001/07/03 Pixel <pixel@mandrakesoft.com>
-
- * timezone.pm (configureTimezone): propose a list of NTP servers
- (ntp_server): fix
- add ntp handling
-
- * fs.pm (mount): fix fsck.ext2'ing
- (mount): add fsck.ext2 before ext2-mounting
-
- * share/themes/DarkMarble-gloom2.png: re-adding with -kb
- re-adding with -kb
-
- * pixmaps/user.png: re-adding with -kb
- removing for re-adding with -kb
- re-adding with -kb
- removing for re-adding with -kb
-
- * share/themes/blueHeart-button4.png, share/reload.png,
- share/themes/focus.png, share/themes/DarkMarble-button3_in.png,
- share/logo-mandrake.png, share/themes/marble3d-check1.png,
- share/themes/blueHeart-button_def.png, share/rpm-semiselected.png,
- share/logo-mandrake-Desktop.png, share/themes/marble3d-check2.png,
- share/rpm-installed.png, share/themes/marble3d-button1.png,
- share/logo-mandrake_sav.png, share/themes/mdk-button1.png,
- share/themes/DarkMarble-check_off.png, pixmaps/harddrive.png,
- share/themes/marble3d-button_def.png, share/themes/marble3d-button2.png,
- share/help_sav.png, share/themes/DarkMarble-button3_out_prelight.png,
- pixmaps/services.png, pixmaps/bootdisk.png, share/rpm-selected.png,
- share/themes/marble3d-button4.png, pixmaps/bootloader.png,
- share/themes/DarkMarble-button3_out.png, share/logo-mandrake_trans.png,
- share/themes/mdk-button4.png, pixmaps/printer.png, share/rpm-base.png,
- share/logo-mandrake2.png, share/themes/blueHeart-brown_bg1.png,
- share/themes/marble3d-bg1.png, pixmaps/security.png, share/ftin.png,
- pixmaps/rootpasswd.png, share/help.png,
- share/themes/DarkMarble-check_on.png,
- share/themes/blueHeart-button1.png, pixmaps/keyboard.png,
- pixmaps/default.png, share/themes/blueHeart-button2.png, pixmaps/X.png,
- share/themes/DarkMarble-button3_in_prelight.png, share/ftout.png,
- pixmaps/mouse.png, share/rpm-unselected.png: re-adding with -kb
- removing for re-adding with -kb
-
- * install_any.pm, install_steps.pm: add ntp handling
-
- * tools/addchangelog.pl: reverted the last erroneous modif
- re-adding with -kb
-
- * tools/ntp_servers.pl: get a formatted list of NTP servers from an
- authorised source
-
- * install_steps_interactive.pm (doPartitionDisks): better error message
- when no root partition is found
- (configureTimezone): propose a list of NTP servers
- add ntp handling
-
- * docs/comparisons: re-adding with -kb
-
-2001/07/02 dam's <damien@mandrakesoft.com>
-
- * install_steps_interactive.pm: new network sources reorganizationCVS:
- ----------------------------------------------------------------------
-
- * share/list: added modinfo
-
- * modparm.pm: syntax correction
-
- * network/netconnect_consts.pm, network.pm, standalone/draknet,
- network/tools.pm, netconnect.pm, network/netconnect.pm,
- network/ethernet.pm, network/isdn.pm, network/adsl.pm,
- network/network.pm, network/modem.pm, netconnect_consts.pm: new network
- sources reorganization
-
-2001/07/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: update po files
-
-2001/07/02 Pixel <pixel@mandrakesoft.com>
-
- * crypto.pm: remove buggy prototype
-
- * share/po/Makefile: yet even better i18n strings extraction
- - fix to add some missing messages
- - add more verif
-
- * c/stuff.xs.pm: use size_t instead of int where it should
-
- * Xconfigurator.pm (write_XF86Config): fix fpons sucks (multi wacoms in
- XF3)
-
- * share/po/b_dump_strings.pm: high level i18n messages getting. only
- partial stuff. Used only for verification
-
- * perl2fcalls: add handling of using pkg::func when func is provided by
- pkg2 use'd by pkg
-
-2001/06/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po: updated Indonesian file
-
-2001/06/25 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm: switch from llseek to lseek64
-
-2001/06/23 siegel
-
- * share/po/de.po: new german version
-
-2001/06/22 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: take care of enterprise kernel if installed.
-
- * install_any.pm: automagically install kernel-enterprise if memory is
- greater than 800MB.
-
-2001/06/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: unfuzzyise
-
-2001/06/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, tinyfirewall.pm,
- share/po/tr.po, share/po/eu.po, share/po/az.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, help.pm, share/po/zh_TW.Big5.po,
- share/po/it.po, share/po/id.po, install_steps_interactive.pm,
- share/po/pl.po, share/po/no.po, share/po/fi.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- install_steps_gtk.pm, share/po/sk.po, share/po/lt.po, share/po/ar.po,
- share/po/sl.po, bootlook.pm, share/po/vi.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- install_steps_newt.pm, share/po/af.po: s/Linux-Mandrake/Mandrake Linux/
-
-2001/06/21 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added minimal support for rpmtools >= 3.0
-
-2001/06/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: generate_automatic_stage1_params: listize
- use busybox for the shell of stage2
-
- * mdk-stage1/Makefile: defaults to not spawn shell
-
- * mdk-stage1/hack: kloug
-
- * Makefile, tools/i386/busybox, share/list.ppc, share/list,
- share/list.alpha, share/aliases: use busybox for the shell of stage2
-
-2001/06/21 Pixel <pixel@mandrakesoft.com>
-
- * docs/README, rescue/tree/etc/issue: s/Linux-Mandrake/Mandrake Linux/
- s/linux-mandrake/mandrakesoft/
- (hand made, no i18n messages done)
- s/Linux-Mandrake/Mandrake Linux/
- s/linux-mandrake/mandrakesoft/
- (hand made, no i18n messages done)
-
- * genmodparm: remove duplicate, look in gi/tools
-
- * standalone/printerdrake, install2, docs/HACKING, tools/genmodparm,
- mdk-stage1/config-stage1.h, ChangeLog, resize_fat/README,
- standalone/diskdrake, standalone/XFdrake, rescue/tree/etc/rc.sysinit,
- mdk-stage1/init.c, tools/mailchangelog.pl, detect_devices.pm,
- mdk-stage1/doc/README, resize_fat/main.pm, tools/cvslog2changelog.pl,
- bootloader.pm: s/Linux-Mandrake/Mandrake Linux/
- s/linux-mandrake/mandrakesoft/
- (hand made, no i18n messages done)
-
- * mdk-stage1/make_boot_img: remove GG sux
- s/Linux-Mandrake/Mandrake Linux/
- s/linux-mandrake/mandrakesoft/
- (hand made, no i18n messages done)
-
-2001/06/11 dam's <damien@mandrakesoft.com>
-
- * proxy.pm: updated
- typoCVS:
- ----------------------------------------------------------------------
- proxy
-
- * my_gtk.pm: added gtkset_layout
-
- * standalone/drakproxy: corrected CVS:
- ----------------------------------------------------------------------
- updated
- perlised
-
- * interactive.pm: no icon if wizard
-
-2001/06/11 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: added some bigger memory range.
-
- * Xconfigurator.pm: fix missing newline on /etc/X11/glx.conf when
- modifying mga_dma = 0
- really fix the Matrox G200 PCI card acceleration using XF3, by disabling
- DMA on
- /etc/X11/glx.conf
- added magic probe of resolution found, if the probed resolution seems
- strange
- according to memory available, it try to let the user select the right
- resolution and depth.
-
- * install_steps.pm, printer.pm: applied patches given for printer
- configuration bug reported by David Eastcott.
-
-2001/06/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: have PPP drivers in net_raw rather than in net
- add PPP modules for 'net' drivers
-
- * rescue/tree/etc/rc.sysinit: minor changes
-
- * rescue/tree/etc/inittab, rescue/tree/sbin/fakeshutdown: umount as much
- as possible before rebooting the rescue
-
- * mdk-stage1/ppp/pppd/magic.c, mdk-stage1/ppp/pppd/md5.c,
- mdk-stage1/ppp/pppd/utils.c, mdk-stage1/ppp/pppd/pathnames.h,
- mdk-stage1/ppp/pppd/options.c, mdk-stage1/ppp/pppd/main.c,
- mdk-stage1/ppp/pppd/multilink.c, mdk-stage1/ppp/pppd/auth.c: have adsl
- pppoe installation available
- Initial revision
- import initial ppp sources
-
- * mdk-stage1/dhcp.c: change location of error message when no reply
- received
-
- * mdk-stage1/rp-pppoe/man/pppoe-relay.8,
- mdk-stage1/rp-pppoe/configs/firewall-masq,
- mdk-stage1/rp-pppoe/gui/html/props-nic.png,
- mdk-stage1/rp-pppoe/src/pppoe-sniff.c,
- mdk-stage1/rp-pppoe/configs/firewall-standalone,
- mdk-stage1/rp-pppoe/gui/html/tkpppoe.html,
- mdk-stage1/rp-pppoe/doc/KERNEL-MODE-PPPOE, mdk-stage1/rp-pppoe/go-gui,
- mdk-stage1/rp-pppoe/gui/tkpppoe.in, mdk-stage1/rp-pppoe/man/adsl-stop.8,
- mdk-stage1/rp-pppoe/scripts/adsl-start.in,
- mdk-stage1/rp-pppoe/man/pppoe-sniff.8, mdk-stage1/rp-pppoe/go,
- mdk-stage1/rp-pppoe/man/pppoe.8,
- mdk-stage1/rp-pppoe/gui/html/mainwin-nonroot.png,
- mdk-stage1/rp-pppoe/gui/tkpppoe.1, mdk-stage1/rp-pppoe/src/Makefile.in,
- mdk-stage1/rp-pppoe/src/pppoe.c, mdk-stage1/rp-pppoe/src/pppoe-server.c,
- mdk-stage1/rp-pppoe/src/pppoe.h, mdk-stage1/rp-pppoe/gui/wrapper.c,
- mdk-stage1/rp-pppoe/man/pppoe-server.8,
- mdk-stage1/rp-pppoe/configs/pppoe.conf,
- mdk-stage1/rp-pppoe/gui/html/props-advanced.png,
- mdk-stage1/rp-pppoe/src/common.c, mdk-stage1/rp-pppoe/src/install-sh,
- mdk-stage1/rp-pppoe/doc/LICENSE, mdk-stage1/rp-pppoe/src/configure,
- mdk-stage1/rp-pppoe/src/config.h.in, mdk-stage1/rp-pppoe/src/relay.c,
- mdk-stage1/rp-pppoe/src/discovery.c, mdk-stage1/rp-pppoe/src/if.c,
- mdk-stage1/rp-pppoe/doc/CHANGES, mdk-stage1/rp-pppoe/src/relay.h,
- mdk-stage1/rp-pppoe/scripts/adsl-init.in,
- mdk-stage1/rp-pppoe/rp-pppoe.spec,
- mdk-stage1/rp-pppoe/scripts/adsl-connect.in,
- mdk-stage1/rp-pppoe/man/pppoe.conf.5,
- mdk-stage1/rp-pppoe/scripts/adsl-init-turbolinux.in,
- mdk-stage1/rp-pppoe/man/adsl-start.8,
- mdk-stage1/rp-pppoe/gui/html/mainwin.png,
- mdk-stage1/rp-pppoe/rp-pppoe-gui.spec,
- mdk-stage1/rp-pppoe/gui/html/props-basic.png,
- mdk-stage1/rp-pppoe/man/adsl-status.8,
- mdk-stage1/rp-pppoe/configs/pppoe-server-options,
- mdk-stage1/rp-pppoe/man/adsl-connect.8,
- mdk-stage1/rp-pppoe/scripts/adsl-setup.in,
- mdk-stage1/rp-pppoe/scripts/adsl-stop.in,
- mdk-stage1/rp-pppoe/gui/Makefile.in, mdk-stage1/rp-pppoe/src/debug.c,
- mdk-stage1/rp-pppoe/doc/PROBLEMS, mdk-stage1/rp-pppoe/src/ppp.c,
- mdk-stage1/rp-pppoe/README,
- mdk-stage1/rp-pppoe/gui/html/mainwin-busy.png,
- mdk-stage1/rp-pppoe/gui/pppoe-wrapper.1,
- mdk-stage1/rp-pppoe/scripts/adsl-status,
- mdk-stage1/rp-pppoe/man/adsl-setup.8,
- mdk-stage1/rp-pppoe/gui/html/props-options.png,
- mdk-stage1/rp-pppoe/src/configure.in,
- mdk-stage1/rp-pppoe/configs/pap-secrets, mdk-stage1/rp-pppoe/src/md5.c,
- mdk-stage1/rp-pppoe/scripts/adsl-init-suse.in,
- mdk-stage1/rp-pppoe/src/md5.h, mdk-stage1/rp-pppoe/src/plugin.c,
- mdk-stage1/rp-pppoe/doc/HOW-TO-CONNECT: Initial revision
- import initial sources from rp-pppoe v3.0
-
- * mdk-stage1/Makefile: change handling of .depend in Makefile
- have adsl pppoe installation available
-
- * mdk-stage1/newt-frontend.c: axalon sucks, we can have NEWT_FLAG_PASSWORD
- that will show us '**' for passwords
-
- * mdk-stage1/ppp/pppd/.cvsignore, mdk-stage1/ppp/.cvsignore,
- mdk-stage1/ppp/pppd/Makefile, mdk-stage1/rp-pppoe/src/.cvsignore,
- mdk-stage1/rp-pppoe/src/config.h, mdk-stage1/adsl.c,
- mdk-stage1/rp-pppoe/.cvsignore, mdk-stage1/rp-pppoe/src/Makefile,
- mdk-stage1/make_boot_img: have adsl pppoe installation available
-
- * detect_devices.pm, install_any.pm, raid.pm, fsedit.pm: include patch to
- autodetect raid arrays (still needs a kernel that implements the
- ioctl..)
-
- * tools/Makefile: perl 5.6.1 now
-
- * mdk-stage1/stage1.c, mdk-stage1/tools.c: do not set root=/dev/ram3 from
- my code anymore, expect the bootloader to set the parameter correctly
-
- * mdk-stage1/ppp/scripts/ip-up.local.add, mdk-stage1/ppp/scripts/README,
- mdk-stage1/ppp/solaris/Makefile.sol2,
- mdk-stage1/ppp/svr4/ppp_comp.Master, mdk-stage1/ppp/sample/ip-down,
- mdk-stage1/ppp/solaris/Makefile.sol2-64,
- mdk-stage1/ppp/include/net/ppp_defs.h,
- mdk-stage1/ppp/pppstats/Makefile.sunos4,
- mdk-stage1/ppp/chat/Makefile.sol2, mdk-stage1/ppp/pppd/sys-linux.c,
- mdk-stage1/ppp/pppd/ipxcp.c, mdk-stage1/ppp/pppd/ipxcp.h,
- mdk-stage1/ppp/pppdump/deflate.c, mdk-stage1/ppp/pppd/Makefile.linux,
- mdk-stage1/ppp/pppd/upap.c, mdk-stage1/ppp/modules/deflate.c,
- mdk-stage1/ppp/README.sunos4, mdk-stage1/ppp/pppdump/Makefile.sol2,
- mdk-stage1/ppp/configure, mdk-stage1/ppp/pppd/upap.h,
- mdk-stage1/ppp/svr4/ppp_mod.c, mdk-stage1/ppp/pppstats/Makefile.sol2,
- mdk-stage1/ppp/pppd/ipv6cp.c, mdk-stage1/ppp/scripts/options-ssh-loc,
- mdk-stage1/ppp/pppd/plugins/Makefile.sol2, mdk-stage1/ppp/pppd/ipv6cp.h,
- mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.vt.c,
- mdk-stage1/ppp/solaris/ppp_ahdlc_mod.c,
- mdk-stage1/ppp/sunos4/if_ppp_vdcmd.c,
- mdk-stage1/ppp/solaris/ppp_ahdlc.c, mdk-stage1/ppp/pppd/magic.h,
- mdk-stage1/ppp/svr4/ppp_comp_mod.c,
- mdk-stage1/ppp/include/linux/if_ppp.h, mdk-stage1/ppp/pppd/eui64.c,
- mdk-stage1/ppp/scripts/secure-card, mdk-stage1/ppp/scripts/redialer,
- mdk-stage1/ppp/modules/bsd-comp.c, mdk-stage1/ppp/pppd/eui64.h,
- mdk-stage1/ppp/sunos4/ppp_vdcmd.c, mdk-stage1/ppp/modules/ppp_mod.h,
- mdk-stage1/ppp/pppd/md5.h, mdk-stage1/ppp/pppd/chap_ms.c,
- mdk-stage1/ppp/pppd/chap_ms.h, mdk-stage1/ppp/etc.ppp/pap-secrets,
- mdk-stage1/ppp/solaris/Makefile.top, mdk-stage1/ppp/chat/chat.8,
- mdk-stage1/ppp/svr4/Makefile.sol2-64, mdk-stage1/ppp/svr4/Makefile.sol2,
- mdk-stage1/ppp/include/net/ppp-comp.h, mdk-stage1/ppp/sunos4/Makefile,
- mdk-stage1/ppp/PLUGINS, mdk-stage1/ppp/pppdump/Makefile.sunos4,
- mdk-stage1/ppp/sample/ip-up, mdk-stage1/ppp/sample/options.ttyXX,
- mdk-stage1/ppp/scripts/options-rsh-rem, mdk-stage1/ppp/pppd/fsm.c,
- mdk-stage1/ppp/chat/chat.c, mdk-stage1/ppp/scripts/ppp-on-rsh,
- mdk-stage1/ppp/pppd/fsm.h, mdk-stage1/ppp/pppd/tdb.c,
- mdk-stage1/ppp/pppd/patchlevel.h, mdk-stage1/ppp/pppstats/pppstats.8,
- mdk-stage1/ppp/svr4/ppp.conf, mdk-stage1/ppp/pppd/tdb.h,
- mdk-stage1/ppp/pppd/demand.c, mdk-stage1/ppp/include/net/if_ppp.h,
- mdk-stage1/ppp/solaris/Makedefs, mdk-stage1/ppp/modules/if_ppp.c,
- mdk-stage1/ppp/include/net/slcompress.h, mdk-stage1/ppp/sunos4/Makedefs,
- mdk-stage1/ppp/pppd/sys-linux.c.wtmp,
- mdk-stage1/ppp/include/linux/if_pppvar.h,
- mdk-stage1/ppp/solaris/ppp_comp.c, mdk-stage1/ppp/chat/Makefile.linux,
- mdk-stage1/ppp/README.cbcp, mdk-stage1/ppp/pppd/ppp.pam,
- mdk-stage1/ppp/solaris/ppp_comp_mod.c, mdk-stage1/ppp/Changes-2.3,
- mdk-stage1/ppp/sample/options, mdk-stage1/ppp/pppstats/pppstats.c,
- mdk-stage1/ppp/sunos4/ppp_comp_vdcmd.c,
- mdk-stage1/ppp/pppdump/Makefile.linux.pppdump-Makefile,
- mdk-stage1/ppp/README.MSCHAP80, mdk-stage1/ppp/pppdump/pppdump.8,
- mdk-stage1/ppp/sunos4/Makefile.top, mdk-stage1/ppp/include/net/pppio.h,
- mdk-stage1/ppp/pppd/ipcp.c, mdk-stage1/ppp/FAQ,
- mdk-stage1/ppp/pppd/ipcp.h, mdk-stage1/ppp/pppd/sys-sunos4.c,
- mdk-stage1/ppp/modules/ppp_comp.c, mdk-stage1/ppp/README.sol2,
- mdk-stage1/ppp/modules/vjcompress.c, mdk-stage1/ppp/scripts/ppp-on-ssh,
- mdk-stage1/ppp/svr4/ppp_ahdlc_mod.c, mdk-stage1/ppp/sunos4/ppp.INSTALL,
- mdk-stage1/ppp/modules/ppp.c, mdk-stage1/ppp/pppdump/pppdump.c,
- mdk-stage1/ppp/pppd/plugins/passprompt.c,
- mdk-stage1/ppp/pppdump/Makefile.linux, mdk-stage1/ppp/pppd/lcp.c,
- mdk-stage1/ppp/pppd/lcp.h, mdk-stage1/ppp/scripts/chat-callback,
- mdk-stage1/ppp/chat/Makefile.sunos4, mdk-stage1/ppp/SETUP,
- mdk-stage1/ppp/pppd/Makefile.sol2,
- mdk-stage1/ppp/pppd/plugins/minconn.c,
- mdk-stage1/ppp/etc.ppp/options.options,
- mdk-stage1/ppp/pppdump/Makefile.linux.makeopt,
- mdk-stage1/ppp/svr4/ppp.Node, mdk-stage1/ppp/scripts/options-ssh-rem,
- mdk-stage1/ppp/solaris/ppp.c, mdk-stage1/ppp/svr4/ppp.System,
- mdk-stage1/ppp/etc.ppp/chap-secrets,
- mdk-stage1/ppp/pppstats/Makefile.linux,
- mdk-stage1/ppp/sample/pap-secrets,
- mdk-stage1/ppp/pppd/Makefile.linux.make, mdk-stage1/ppp/pppd/pppd.8,
- mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.8,
- mdk-stage1/ppp/pppd/Makefile.sunos4, mdk-stage1/ppp/scripts/ppp-on,
- mdk-stage1/ppp/include/linux/ppp_defs.h,
- mdk-stage1/ppp/scripts/chatchat/chatchat.c,
- mdk-stage1/ppp/scripts/chatchat/README,
- mdk-stage1/ppp/modules/ppp_ahdlc.c, mdk-stage1/ppp/svr4/ppp.Master,
- mdk-stage1/ppp/svr4/Makedefs,
- mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.gtk.c,
- mdk-stage1/ppp/svr4/ppp_ahdl.System, mdk-stage1/ppp/pppd/pppd.h,
- mdk-stage1/ppp/scripts/ppp-off, mdk-stage1/ppp/solaris/Makedefs.sol2,
- mdk-stage1/ppp/common/zlib.c, mdk-stage1/ppp/scripts/options-rsh-loc,
- mdk-stage1/ppp/common/zlib.h, mdk-stage1/ppp/solaris/ppp_mod.c,
- mdk-stage1/ppp/contrib/pppgetpass/Makefile.linux,
- mdk-stage1/ppp/solaris/ppp_mod.h, mdk-stage1/ppp/scripts/ppp-on-dialer,
- mdk-stage1/ppp/pppd/sys-solaris.c, mdk-stage1/ppp/README.linux,
- mdk-stage1/ppp/sample/auth-down, mdk-stage1/ppp/svr4/ppp_ahdl.Master,
- mdk-stage1/ppp/pppdump/zlib.c, mdk-stage1/ppp/include/pcap-int.h,
- mdk-stage1/ppp/pppdump/zlib.h, mdk-stage1/ppp/pppd/ccp.c,
- mdk-stage1/ppp/chat/Makefile.linux.makeopt, mdk-stage1/ppp/pppd/ccp.h,
- mdk-stage1/ppp/pppd/Makefile.linux.makeopt,
- mdk-stage1/ppp/include/net/vjcompress.h, mdk-stage1/ppp/pppd/cbcp.c,
- mdk-stage1/ppp/contrib/pppgetpass/pppgetpass.sh,
- mdk-stage1/ppp/pppd/cbcp.h, mdk-stage1/ppp/scripts/ip-down.local.add,
- mdk-stage1/ppp/pppd/tty.c, mdk-stage1/ppp/include/linux/ppp-comp.h,
- mdk-stage1/ppp/sample/auth-up, mdk-stage1/ppp/sunos4/ppp_ahdlc_vdcmd.c,
- mdk-stage1/ppp/pppd/pppd.h.wtmp, mdk-stage1/ppp/solaris/ppp.conf,
- mdk-stage1/ppp/pppd/chap.c, mdk-stage1/ppp/pppd/chap.h,
- mdk-stage1/ppp/scripts/callback, mdk-stage1/ppp/linux/Makefile.top,
- mdk-stage1/ppp/svr4/ppp_comp.System, mdk-stage1/ppp/pppd/md4.c,
- mdk-stage1/ppp/svr4/Makedefs.sol2, mdk-stage1/ppp/pppdump/bsd-comp.c,
- mdk-stage1/ppp/README, mdk-stage1/ppp/pppd/md4.h,
- mdk-stage1/ppp/etc.ppp/options, mdk-stage1/ppp/svr4/Makefile.top,
- mdk-stage1/ppp/svr4/Makefile.svr4,
- mdk-stage1/ppp/pppd/plugins/Makefile.linux,
- mdk-stage1/ppp/pppdump/ppp-comp.h: Initial revision
- import initial ppp sources
-
-2001/06/11 odin
-
- * standalone/drakproxy: first import of drakproxy
-
-2001/06/11 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): don't check /usr/bin/urpmi, better check
- /usr/sbin/urpmi.update
-
- * commands.pm (grep_): add a missing semi-colon
-
- * share/compssUsers: remove NIS which is handled by DrakX (titi sucks)
-
-2001/06/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/guessmounts, rescue/make_rescue_img, rescue/tree/etc/rc.sysinit,
- rescue/Makefile:
- - add 'guessmounts' that mimics RH's detecting of partitions when
- rescue starts
-
-2001/06/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/az.po: updated Azeri file
-
- * share/po/ru.po, share/po/DrakX.pot: updated Russian file
-
-2001/06/10 Pixel <pixel@mandrakesoft.com>
-
- * rescue/guessmounts: pixelization (tested!)
-
- * install_any.pm (g_auto_install): more comments in auto_inst.cfg file
-
-2001/06/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/list.i386: rescuept is in /sbin now
-
- * share/list: rescuept in /sbin now
-
-2001/06/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: don't wait on upping lo interface
-
- * mdk-stage1/modules.c: fix minor bug detecting when modules are present
-
- * mdk-stage1/dietlibc/include/stdlib.h, mdk-stage1/dietlibc/lib/random.c:
- i need working random suite for ppp with dietlibc
-
- * mdk-stage1/stage1.c: exit when exec fails after fork, i don't want two
- stage1 processes!
-
-2001/06/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po: updated Polish file
-
-2001/06/05 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (mount): notail in any case
-
- * tools/i386/netboot/menu.lst.example, tools/i386/netboot/menu.lst,
- tools/i386/netboot/.cvsignore: menu.lst is now a local file created from
- the example
-
- * share/list, rescue/list.i386, rescue/list: switch to perl 5.6.1
-
- * Makefile: fix
-
-2001/06/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/ar.po, share/po/sl.po,
- share/po/vi.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated Russian file
-
-2001/06/01 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: use -FULL postfix for common .c files targetting
- stage1-full
-
- * mdk-stage1/stage1.c: minor fix
-
- * mdk-stage1/newt/textbox.c: don't modify newt code to fix dietlibc bugs,
- i want to link against glibc too
-
- * mdk-stage1/dietlibc/include/stdlib.h, mdk-stage1/dietlibc/lib/strncat.c:
-
- - have strncat behave the same way as in glibc
- - declare that we're using the DIETLIBC in include/stdlib.h, so I can
- change my mind in "dns.c" to handle broken glibc which is not capable of
- doing name resolution with a static binary
-
- * mdk-stage1/dns.c, mdk-stage1/dns.h, mdk-stage1/adsl.c,
- mdk-stage1/adsl.h, mdk-stage1/nfsmount.c, mdk-stage1/network.c,
- mdk-stage1/url.c, mdk-stage1/network.h:
- - first draft of adsl support
- - get back some code for supporting broken glibc unable to resolve
- when linked statically
-
- * mdk-stage1/dietlibc/dietfeatures.h, mdk-stage1/dietlibc/lib/tcflush.c,
- mdk-stage1/dietlibc/lib/cfgetospeed.c, mdk-stage1/dietlibc/lib/speed.c,
- mdk-stage1/dietlibc/lib/tcsetattr.c,
- mdk-stage1/dietlibc/include/termios.h,
- mdk-stage1/dietlibc/include/netdb.h,
- mdk-stage1/dietlibc/libshell/glob.c: slight modifs to get ppp and pppoe
- stuff compile better
-
-2001/05/31 daouda
-
- * bootlook.pm: add runlevel chooser feature
-
-2001/05/31 Pixel <pixel@mandrakesoft.com>
-
- * rescue/make_rescue_img: check presence of files from list and list.ARCH
-
- * Makefile (get_needed_files): exit with error message if files from
- share/list (and
- share/list.ARCH) are missing
-
- * install2.pm: hide step formatPartitions when upgrading
-
-2001/05/30 mbadaire
-
- * mdk-stage1/stage1.c, mdk-stage1/slang/slmalloc.c,
- mdk-stage1/slang/Makefile, mdk-stage1/Makefile.common,
- mdk-stage1/insmod-modutils/obj/Makefile,
- mdk-stage1/insmod-modutils/Makefile, mdk-stage1/bzlib/Makefile,
- mdk-stage1/init-libc-headers.h, mdk-stage1/newt/Makefile,
- mdk-stage1/Makefile, mdk-stage1/insmod-modutils/util/Makefile,
- mdk-stage1/mar/Makefile, mdk-stage1/newt/windows.c:
- - allow build on ia64
- - have CFLAGS centralized in Makefile.common (should help ports such
- as alpha)
- - better looking sub makefiles
-
-2001/05/30 Pixel <pixel@mandrakesoft.com>
-
- * Makefile.drakxtools (install): ensure pm's in subdirs don't have
- /use(diagnostics|vars|strict)/
-
-2001/05/29 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: added fix from Michael Brown to handle pipe in queue
- name for lpr.
-
-2001/05/29 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * share/compssUsers: add NIS client to network clients
-
-2001/05/29 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: added fix from Michael Brown to handle pipe in queue
- name for lpr.
-
-2001/05/28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/newt-frontend.c: use Axalon patch to hide passwords (highly
- rewritten..)
-
-2001/05/25 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * rescue/list.ppc, bootloader.pm: add hfs support to rescue - PPC, fix
- bootstrap creation, formatting sequence
-
- * install_steps_interactive.pm: fix bootstrap information screen back to
- orig with missing ":" - PPC
- add hfs support to rescue - PPC, fix bootstrap creation, formatting
- sequence
-
-2001/05/25 siegel
-
- * share/po/de.po: updated time
- moved to UTF-8
-
-2001/05/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
-2001/05/24 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (g_auto_install): autoExitInstall set if not replay (was
- the opposite)
-
-2001/05/23 Pixel <pixel@mandrakesoft.com>
-
- * rescue/list: add scd0...
-
-2001/05/22 siegel
-
- * share/po/de.po: updates
-
-2001/05/21 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * tools/ppc/mkhybrid-1.12b5.4-x86, tools/ppc/mkINSTALLCD: enable creation
- of PPC boot CD on x86 platform
-
-2001/05/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c:
- - better detect when IP is not good
- - error_msg when netmask seems invalid
- - don't log too much `guessing netmask'
-
- * mdk-stage1/probing.c: be sure to print pci vendor and id with 4 digits
- each
-
-2001/05/17 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed parted that ask for confirmation if partition
- table is not right (MAXDATA
- for example), this cause parted to ignore warning.
- added blank space between partition windows and linux to help resolving
- above case.
- fixed hole in partitionning (need testing), use fdisk to get disk
- geometry and
- create partition that matches cylinder boundaries (no more
- approximation).
- make sure to create all partitions including /home.
-
-2001/05/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/modules.c: add log for modules aliasing of SCSI drivers
- don't write nonsense code to separate frontend from stage1,
- but rather, try to do some clever things
-
- * mdk-stage1/probing.c: unify user notification of network and scsi
- devices that make load of drivers
- don't write nonsense code to separate frontend from stage1,
- but rather, try to do some clever things
-
- * mdk-stage1/stage1.c, mdk-stage1/frontend.h, mdk-stage1/stage1.h,
- mdk-stage1/tools.c, mdk-stage1/stdio-frontend.c, mdk-stage1/cdrom.c,
- mdk-stage1/Makefile, mdk-stage1/dhcp.c, mdk-stage1/newt-frontend.c,
- mdk-stage1/disk.c, mdk-stage1/network.c: don't write nonsense code to
- separate frontend from stage1,
- but rather, try to do some clever things
-
- * mdk-stage1/frontend-common.c: plop
-
-2001/05/16 dam's <damien@mandrakesoft.com>
-
- * pixmaps/bootloader.png, pixmaps/user.png, pixmaps/security.png,
- pixmaps/rootpasswd.png, pixmaps/harddrive.png, pixmaps/keyboard.png,
- pixmaps/default.png, pixmaps/X.png, pixmaps/mouse.png,
- pixmaps/bootdisk.png, pixmaps/services.png: added icons
-
- * standalone/printerdrake, standalone/keyboarddrake, standalone/drakboot,
- standalone/draksec, standalone/drakxservices, standalone/drakgw,
- standalone/XFdrake, standalone/adduserdrake: added icon management
-
- * my_gtk.pm, interactive.pm: icons management
-
- * install2.pm: added icons management
-
- * standalone/draknet: added icon managment
-
- * pixmaps/printer.png: added icon
-
-2001/05/16 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: added support for /var creation, and more specific
- package selection for server.
- Include option support by VERSION file.
-
-2001/05/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/HACKING, mdk-stage1/frontend.h,
- mdk-stage1/TECH-INFOS, mdk-stage1/WHY-DIETLIBC, mdk-stage1/stage1.h,
- mdk-stage1/stdio-frontend.c, mdk-stage1/Makefile, mdk-stage1/README,
- mdk-stage1/newt-frontend.c: have a 100% independence between UI stuff
- and code from stage1
-
-2001/05/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po, share/po/de.po, share/po/DrakX.pot, share/po/tr.po:
- updated Turkish file
-
-2001/05/16 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile: fix yet again DrakX.pot making
-
- * partition_table.pm: re-add reiserfs as it should
- add xfs
-
-2001/05/15 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: added missing Aurora, added icewm-light that may be
- usefull.
-
-2001/05/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: libresolv deprecated in GLIBC
- have stage1-full with pcmcia also compile with dietlibc, cool!
-
- * mdk-stage1/network.c: fix guess netmask
- configure_net_device is only used internally
-
- * mdk-stage1/modules.c, mdk-stage1/modules.h: better modules handling
- interface (use of enum rather than guessing single numbers..)
-
- * mdk-stage1/newt-frontend.c: allow wait_message calls to be multi-lines
-
- * mdk-stage1/pcmcia/cardmgr.c: have stage1-full with pcmcia also compile
- with dietlibc, cool!
- - build glibc and dietlibc targets
- - bzero string buffer before sscanf call (dietlibc implementation)
- - verify returns of ioperm so that I can use it in test mode
-
- * mdk-stage1/dietlibc/include/sys/file.h,
- mdk-stage1/dietlibc/include/sys/io.h,
- mdk-stage1/dietlibc/syscalls.s/ioperm.S: have stage1-full with pcmcia
- also compile with dietlibc, cool!
-
- * mdk-stage1/stage1.c: a bit of size reduction plus some language change
- blurk
-
- * mdk-stage1/WHY-DIETLIBC: advocate dietlibc
-
- * mdk-stage1/dietlibc/lib/vsscanf.c: import vsscanf fix from author
-
- * mdk-stage1/disk.c: bzero string buffer before sscanf call, security for
- dietlibc implementation
-
- * mdk-stage1/network.h: configure_net_device is only used internally
-
- * mdk-stage1/pcmcia/Makefile, mdk-stage1/pcmcia/pcmcia_probe.c:
- - build glibc and dietlibc targets
- - bzero string buffer before sscanf call (dietlibc implementation)
- - verify returns of ioperm so that I can use it in test mode
-
- * standalone/drakgw: full path for iptables
-
- * mdk-stage1/probing.c: allow wait_message calls to be multi-lines
- nicer layout for PCI detection messages
- better modules handling interface (use of enum rather than guessing
- single numbers..)
-
-2001/05/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po, share/po/ar.po: Updated Turkish file
-
- * share/keyboards.tar.bz2: Added north-african keyboard
-
- * keyboard.pm: added arabic azerty keyboard
-
-2001/05/15 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile: fix messages to i18n extracting
-
-2001/05/14 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * fs.pm: s|mkxfs|mkfs.xfs|;
-
-2001/05/14 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/nfsmount.c: use new gethostby* interface
-
- * mdk-stage1/stage1-data/stage1-with-busybox.tar.bz2: add stage1-data
- which provides the busybox
-
- * mdk-stage1/network.c: Have the wait_message() with the sleep()
- - complies to gethostby functions
- - add sleep(2) so that net intf is really up before operation
- - more logs
- - FTP: don't try to close control connection with data socket, erhm
- :-(
- - debug netmask guessing, with stdio-frontend
-
- * mdk-stage1/Makefile: i can compile slang and newt with dietlibc now
- every targets build with dietlibc
-
- * mdk-stage1/make_boot_img: use busybox for my debugging purpose
-
- * mdk-stage1/tools.c: no need to poll() for data at beginning of
- load_ramdisk_fd, it was a fix of another problem (bug with file stdio
- operations with sockets in dietlibc)
-
- * mdk-stage1/dietlibc/Makefile: build this new dietlibc
- import new version of dietlibc
-
- * mdk-stage1/dns.c, mdk-stage1/dns.h: now use gethostby* functions
- provided by dietlibc
-
- * mdk-stage1/url.c: use poll() rather than select(), smaller code size
-
- * mdk-stage1/stage1.c: we don't use this sucking sash no more
- we now use `busybox' compiled with the marvellous dietlibc, which
- provides no less than 73 usefull binaries
-
- * mdk-stage1/dietlibc/alpha/semop.S, mdk-stage1/dietlibc/lib/sendmsg.c,
- mdk-stage1/dietlibc/alpha/shmget.S, mdk-stage1/dietlibc/lib/clearerr.c,
- mdk-stage1/dietlibc/include/sys/ipc.h,
- mdk-stage1/dietlibc/alpha/sendmsg.S,
- mdk-stage1/dietlibc/lib/tcgetpgrp.c, mdk-stage1/dietlibc/lib/fwrite.c,
- mdk-stage1/dietlibc/sparc/__testandset.S,
- mdk-stage1/dietlibc/syscalls.s/open.S,
- mdk-stage1/dietlibc/alpha/semget.S, mdk-stage1/dietlibc/dietstdarg.h,
- mdk-stage1/dietlibc/syscalls.s/sched_get_priority_max.S,
- mdk-stage1/dietlibc/lib/nop.c, mdk-stage1/dietlibc/start.h,
- mdk-stage1/dietlibc/include/sys/syscall.h,
- mdk-stage1/dietlibc/alpha/accept.S, mdk-stage1/dietlibc/lib/sigjmp.c,
- mdk-stage1/dietlibc/syscalls.s/ptrace.s,
- mdk-stage1/dietlibc/lib/isprint.c,
- mdk-stage1/dietlibc/syscalls.s/dietstat.S,
- mdk-stage1/dietlibc/alpha/shutdown.S, mdk-stage1/dietlibc/lib/sendto.c,
- mdk-stage1/dietlibc/sparc/shmat.c, mdk-stage1/dietlibc/include/time.h,
- mdk-stage1/dietlibc/lib/stat_convert.c, mdk-stage1/dietlibc/lib/send.c,
- mdk-stage1/dietlibc/lib/isxdigit.c, mdk-stage1/dietlibc/alpha/waitpid.S,
- mdk-stage1/dietlibc/lib/atexit.c, mdk-stage1/dietlibc/lib/readdir.c,
- mdk-stage1/dietlibc/include/sys/sem.h,
- mdk-stage1/dietlibc/syscalls.s/query_module.S,
- mdk-stage1/dietlibc/lib/strchr.c,
- mdk-stage1/dietlibc/syscalls.s/dietfstat64.S,
- mdk-stage1/dietlibc/syscalls.s/lstat64.S,
- mdk-stage1/dietlibc/i386/setjmp.S, mdk-stage1/dietlibc/lib/alloc.c,
- mdk-stage1/dietlibc/lib/perror.c,
- mdk-stage1/dietlibc/include/sys/socket.h,
- mdk-stage1/dietlibc/lib/creat64.c, mdk-stage1/dietlibc/lib/closedir.c,
- mdk-stage1/dietlibc/sparc/pipe.S, mdk-stage1/dietlibc/lib/msgrcv.c,
- mdk-stage1/dietlibc/include/utmp.h,
- mdk-stage1/dietlibc/syscalls.s/sendfile.S,
- mdk-stage1/dietlibc/syscalls.s/nice.S,
- mdk-stage1/dietlibc/syscalls.s/sigprocmask.S,
- mdk-stage1/dietlibc/syscalls.s/select.S,
- mdk-stage1/dietlibc/include/sys/mtio.h,
- mdk-stage1/dietlibc/i386/strchr.S, mdk-stage1/dietlibc/alpha/divl.S,
- mdk-stage1/dietlibc/syscalls.s/sched_rr_get_interval.S,
- mdk-stage1/dietlibc/lib/__telldir.c,
- mdk-stage1/dietlibc/i386/__testandset.S,
- mdk-stage1/dietlibc/lib/remove.c,
- mdk-stage1/dietlibc/syscalls.s/sched_get_priority_min.S,
- mdk-stage1/dietlibc/lib/fputc.c, mdk-stage1/dietlibc/lib/msgctl.c,
- mdk-stage1/dietlibc/alpha/clone.S, mdk-stage1/dietlibc/lib/connect.c,
- mdk-stage1/dietlibc/include/sys/un.h,
- mdk-stage1/dietlibc/alpha/connect.S,
- mdk-stage1/dietlibc/include/termios.h,
- mdk-stage1/dietlibc/lib/sigfillset.c,
- mdk-stage1/dietlibc/lib/sigismember.c,
- mdk-stage1/dietlibc/syscalls.s/dietstat64.S,
- mdk-stage1/dietlibc/i386/start.S, mdk-stage1/dietlibc/lib/shmget.c,
- mdk-stage1/dietlibc/lib/strtok.c, mdk-stage1/dietlibc/lib/fclose.c,
- mdk-stage1/dietlibc/lib/tcsetpgrp.c,
- mdk-stage1/dietlibc/sparc/Makefile.add,
- mdk-stage1/dietlibc/include/sys/shm.h, mdk-stage1/dietlibc/alpha/send.S,
- mdk-stage1/dietlibc/i386/__longjmp.S, mdk-stage1/dietlibc/lib/recvmsg.c,
- mdk-stage1/dietlibc/include/inttypes.h,
- mdk-stage1/dietlibc/syscalls.s/sched_getscheduler.S,
- mdk-stage1/dietlibc/lib/semget.c, mdk-stage1/dietlibc/lib/open64.c,
- mdk-stage1/dietlibc/alpha/recvmsg.S,
- mdk-stage1/dietlibc/syscalls.s/fork.S,
- mdk-stage1/dietlibc/lib/strcasecmp.c, mdk-stage1/dietlibc/lib/htonl.c,
- mdk-stage1/dietlibc/lib/accept.c, mdk-stage1/dietlibc/alpha/shmat.S,
- mdk-stage1/dietlibc/include/features.h,
- mdk-stage1/dietlibc/include/syslog.h, mdk-stage1/dietlibc/lib/isascii.c,
- mdk-stage1/dietlibc/syscalls.s/writev.S,
- mdk-stage1/dietlibc/lib/fputs.c,
- mdk-stage1/dietlibc/alpha/sigprocmask.S,
- mdk-stage1/dietlibc/lib/ntohs.c, mdk-stage1/dietlibc/include/sys/uio.h,
- mdk-stage1/dietlibc/syscalls.s/nanosleep.S,
- mdk-stage1/dietlibc/syscalls.s/creat.S,
- mdk-stage1/dietlibc/include/sys/sysinfo.h,
- mdk-stage1/dietlibc/lib/atof.c, mdk-stage1/dietlibc/alpha/msgsnd.S,
- mdk-stage1/dietlibc/lib/vsprintf.c, mdk-stage1/dietlibc/lib/toupper.c,
- mdk-stage1/dietlibc/lib/strlcpy.3, mdk-stage1/dietlibc/lib/sigaddset.c,
- mdk-stage1/dietlibc/i386/select.S, mdk-stage1/dietlibc/i386/unified.S,
- mdk-stage1/dietlibc/include/dirent.h,
- mdk-stage1/dietlibc/include/getopt.h, mdk-stage1/dietlibc/lib/seekdir.c,
- mdk-stage1/dietlibc/include/net/route.h,
- mdk-stage1/dietlibc/syscalls.s/exit.S,
- mdk-stage1/dietlibc/include/pthread.h,
- mdk-stage1/dietlibc/lib/sprintf.c, mdk-stage1/dietlibc/alpha/msgget.S,
- mdk-stage1/dietlibc/include/limits.h, mdk-stage1/dietlibc/lib/qsort.c,
- mdk-stage1/dietlibc/lib/execvp.c,
- mdk-stage1/dietlibc/syscalls.s/__reboot.S,
- mdk-stage1/dietlibc/lib/stdin.c,
- mdk-stage1/dietlibc/syscalls.s/getitimer.S,
- mdk-stage1/dietlibc/include/grp.h, mdk-stage1/dietlibc/lib/usleep.c,
- mdk-stage1/dietlibc/lib/lstat.c, mdk-stage1/dietlibc/sparc/setjmp.S,
- mdk-stage1/dietlibc/sparc/fork.S,
- mdk-stage1/dietlibc/syscalls.s/__pread.S,
- mdk-stage1/dietlibc/include/sys/poll.h,
- mdk-stage1/dietlibc/syscalls.s/personality.S,
- mdk-stage1/dietlibc/lib/lseek64.c, mdk-stage1/dietlibc/include/setjmp.h,
- mdk-stage1/dietlibc/lib/recv.c, mdk-stage1/dietlibc/include/string.h,
- mdk-stage1/dietlibc/include/sys/time.h, mdk-stage1/dietlibc/lib/fstat.c,
- mdk-stage1/dietlibc/lib/memcmp.c, mdk-stage1/dietlibc/lib/isupper.c,
- mdk-stage1/dietlibc/include/sys/param.h,
- mdk-stage1/dietlibc/syscalls.s/__getpagesize.S,
- mdk-stage1/dietlibc/lib/exec_lib.c, mdk-stage1/dietlibc/alpha/shmdt.S,
- mdk-stage1/dietlibc/include/dlfcn.h, mdk-stage1/dietlibc/lib/isdigit.c,
- mdk-stage1/dietlibc/lib/fdopen.c, mdk-stage1/dietlibc/lib/exec_lib.h,
- mdk-stage1/dietlibc/lib/__lxstat.c, mdk-stage1/dietlibc/alpha/remq.S,
- mdk-stage1/dietlibc/include/sys/kd.h,
- mdk-stage1/dietlibc/syscalls.s/read.S, mdk-stage1/dietlibc/lib/fopen.c,
- mdk-stage1/dietlibc/syscalls.s/sched_yield.S,
- mdk-stage1/dietlibc/include/sys/mman.h,
- mdk-stage1/dietlibc/lib/__readdir.c,
- mdk-stage1/dietlibc/lib/cfgetospeed.c,
- mdk-stage1/dietlibc/lib/__dtostr.c, mdk-stage1/dietlibc/lib/execv.c,
- mdk-stage1/dietlibc/alpha/reml.S,
- mdk-stage1/dietlibc/syscalls.s/fcntl.S,
- mdk-stage1/dietlibc/include/errno.h, mdk-stage1/dietlibc/lib/ferror.c,
- mdk-stage1/dietlibc/syscalls.s/ipc.S,
- mdk-stage1/dietlibc/syscalls.s/mlockall.S,
- mdk-stage1/dietlibc/lib/fgetc.c, mdk-stage1/dietlibc/lib/strtoull.c,
- mdk-stage1/dietlibc/include/sys/msg.h,
- mdk-stage1/dietlibc/syscalls.s/sigsuspend.S,
- mdk-stage1/dietlibc/lib/isgraph.c, mdk-stage1/dietlibc/lib/vsscanf.c,
- mdk-stage1/dietlibc/lib/ftell.c, mdk-stage1/dietlibc/include/unistd.h,
- mdk-stage1/dietlibc/lib/msgsnd.c, mdk-stage1/dietlibc/lib/semop.c,
- mdk-stage1/dietlibc/include/net/if_arp.h,
- mdk-stage1/dietlibc/lib/execlp.c,
- mdk-stage1/dietlibc/syscalls.s/stat64.S,
- mdk-stage1/dietlibc/dietfeatures.h, mdk-stage1/dietlibc/dietstdio.h,
- mdk-stage1/dietlibc/lib/feof.c, mdk-stage1/dietlibc/lib/opendir.c,
- mdk-stage1/dietlibc/syscalls.s/fstat64.S,
- mdk-stage1/dietlibc/syscalls.s/sched_setparam.S,
- mdk-stage1/dietlibc/include/sys/reboot.h,
- mdk-stage1/dietlibc/lib/sigdelset.c, mdk-stage1/dietlibc/lib/execl.c,
- mdk-stage1/dietlibc/include/sys/sendfile.h,
- mdk-stage1/dietlibc/include/sys/syslog.h,
- mdk-stage1/dietlibc/syscalls.s/iopl.S, mdk-stage1/dietlibc/lib/msgget.c,
- mdk-stage1/dietlibc/syscalls.s/sched_getparam.S,
- mdk-stage1/dietlibc/lib/vsnprintf.c,
- mdk-stage1/dietlibc/include/signal.h,
- mdk-stage1/dietlibc/syscalls.s/pause.S,
- mdk-stage1/dietlibc/include/arpa/inet.h,
- mdk-stage1/dietlibc/include/sys/wait.h,
- mdk-stage1/dietlibc/alpha/time.S, mdk-stage1/dietlibc/lib/ttyname.c,
- mdk-stage1/dietlibc/lib/__lstat64.c, mdk-stage1/dietlibc/lib/__stat64.c,
- mdk-stage1/dietlibc/alpha/recv.S, mdk-stage1/dietlibc/lib/fgets.c,
- mdk-stage1/dietlibc/lib/strncat.c, mdk-stage1/dietlibc/lib/__lltostr.c,
- mdk-stage1/dietlibc/lib/__ltostr.c,
- mdk-stage1/dietlibc/sparc/__longjmp.S, mdk-stage1/dietlibc/lib/puts.c,
- mdk-stage1/dietlibc/lib/rand.c, mdk-stage1/dietlibc/syscalls.s/fsync.S,
- mdk-stage1/dietlibc/include/fnmatch.h, mdk-stage1/dietlibc/lib/fflush.c,
- mdk-stage1/dietlibc/lib/htons.c,
- mdk-stage1/dietlibc/syscalls.s/sigaltstack.S,
- mdk-stage1/dietlibc/include/sys/resource.h,
- mdk-stage1/dietlibc/lib/__stat64_cvt.c,
- mdk-stage1/dietlibc/lib/localtime.c,
- mdk-stage1/dietlibc/alpha/seteuid.c,
- mdk-stage1/dietlibc/syscalls.s/stime.S,
- mdk-stage1/dietlibc/include/resolv.h, mdk-stage1/dietlibc/lib/__xstat.c,
- mdk-stage1/dietlibc/ppc/Makefile.add,
- mdk-stage1/dietlibc/sparc/unified.S, mdk-stage1/dietlibc/lib/bsearch.c,
- mdk-stage1/dietlibc/include/net/if.h,
- mdk-stage1/dietlibc/include/shadow.h,
- mdk-stage1/dietlibc/lib/__rewinddir.c,
- mdk-stage1/dietlibc/include/daemon.h, mdk-stage1/dietlibc/lib/mkfifo.c,
- mdk-stage1/dietlibc/include/paths.h, mdk-stage1/dietlibc/include/pwd.h,
- mdk-stage1/dietlibc/lib/strrchr.c, mdk-stage1/dietlibc/lib/__seekdir.c,
- mdk-stage1/dietlibc/syscalls.h, mdk-stage1/dietlibc/alpha/shmctl.S,
- mdk-stage1/dietlibc/lib/fdglue.c, mdk-stage1/dietlibc/lib/fseek.c,
- mdk-stage1/dietlibc/include/regex.h,
- mdk-stage1/dietlibc/include/sys/ptrace.h,
- mdk-stage1/dietlibc/lib/tcdrain.c,
- mdk-stage1/dietlibc/syscalls.s/lstat.S,
- mdk-stage1/dietlibc/alpha/semctl.S, mdk-stage1/dietlibc/lib/recvfrom.c,
- mdk-stage1/dietlibc/lib/random.c,
- mdk-stage1/dietlibc/syscalls.s/times.S,
- mdk-stage1/dietlibc/lib/getpgrp.c, mdk-stage1/dietlibc/lib/cfmakeraw.c,
- mdk-stage1/dietlibc/lib/stat.c, mdk-stage1/dietlibc/syscalls.s/write.S,
- mdk-stage1/dietlibc/syscalls.s/dietlstat64.S,
- mdk-stage1/dietlibc/ppc/__testandset.S,
- mdk-stage1/dietlibc/include/mntent.h,
- mdk-stage1/dietlibc/include/sys/file.h,
- mdk-stage1/dietlibc/syscalls.s/fstat.S,
- mdk-stage1/dietlibc/syscalls.s/llseek.S,
- mdk-stage1/dietlibc/lib/strsep.c,
- mdk-stage1/dietlibc/include/sys/stat.h,
- mdk-stage1/dietlibc/syscalls.s/munlockall.S,
- mdk-stage1/dietlibc/syscalls.s/setpriority.S,
- mdk-stage1/dietlibc/include/assert.h,
- mdk-stage1/dietlibc/include/strings.h,
- mdk-stage1/dietlibc/include/alloca.h, mdk-stage1/dietlibc/lib/gmtime.c,
- mdk-stage1/dietlibc/lib/shmat.c, mdk-stage1/dietlibc/lib/__isnan.c,
- mdk-stage1/dietlibc/ppc/__longjmp.S,
- mdk-stage1/dietlibc/lib/__closedir.c,
- mdk-stage1/dietlibc/include/sys/signal.h,
- mdk-stage1/dietlibc/lib/rewinddir.c, mdk-stage1/dietlibc/lib/stdout.c,
- mdk-stage1/dietlibc/lib/vfprintf.c, mdk-stage1/dietlibc/.cvsignore,
- mdk-stage1/dietlibc/lib/telldir.c, mdk-stage1/dietlibc/include/glob.h,
- mdk-stage1/dietlibc/lib/tm_conv.c,
- mdk-stage1/dietlibc/syscalls.s/reboot.S,
- mdk-stage1/dietlibc/syscalls.s/sched_setscheduler.S,
- mdk-stage1/dietlibc/syscalls.s/umount2.S,
- mdk-stage1/dietlibc/syscalls.s/readv.S,
- mdk-stage1/dietlibc/lib/__fxstat.c,
- mdk-stage1/dietlibc/include/sys/select.h,
- mdk-stage1/dietlibc/syscalls.s/syslog.S,
- mdk-stage1/dietlibc/syscalls.s/sysinfo.S,
- mdk-stage1/dietlibc/lib/fprintf.c,
- mdk-stage1/dietlibc/include/sys/cdefs.h, mdk-stage1/dietlibc/README,
- mdk-stage1/dietlibc/lib/fread.c, mdk-stage1/dietlibc/lib/getpwnam.c,
- mdk-stage1/dietlibc/syscalls.s/getcwd.S,
- mdk-stage1/dietlibc/lib/getservent.c, mdk-stage1/dietlibc/lib/tolower.c,
- mdk-stage1/dietlibc/diet.c, mdk-stage1/dietlibc/alpha/recvfrom.S,
- mdk-stage1/dietlibc/include/elf.h, mdk-stage1/dietlibc/alpha/sendto.S,
- mdk-stage1/dietlibc/lib/fileno.c, mdk-stage1/dietlibc/i386/clone.S,
- mdk-stage1/dietlibc/lib/__opendir.c,
- mdk-stage1/dietlibc/include/sched.h, mdk-stage1/dietlibc/alpha/__time.c,
- mdk-stage1/dietlibc/lib/ispunct.c, mdk-stage1/dietlibc/lib/printf.c,
- mdk-stage1/dietlibc/lib/strtod.c, mdk-stage1/dietlibc/lib/strncasecmp.c,
- mdk-stage1/dietlibc/lib/__getcwd.c,
- mdk-stage1/dietlibc/include/netinet/in.h,
- mdk-stage1/dietlibc/lib/shmctl.c,
- mdk-stage1/dietlibc/syscalls.s/dietlstat.S,
- mdk-stage1/dietlibc/include/arpa/nameser.h,
- mdk-stage1/dietlibc/lib/assert_fail.c, mdk-stage1/dietlibc/lib/semctl.c,
- mdk-stage1/dietlibc/lib/shmdt.c, mdk-stage1/dietlibc/lib/shutdown.c,
- mdk-stage1/dietlibc/lib/setpgrp.c, mdk-stage1/dietlibc/alpha/msgrcv.S,
- mdk-stage1/dietlibc/lib/stderr.c,
- mdk-stage1/dietlibc/syscalls.s/close.S,
- mdk-stage1/dietlibc/syscalls.s/dietfstat.S,
- mdk-stage1/dietlibc/include/locale.h,
- mdk-stage1/dietlibc/syscalls.s/getpriority.S,
- mdk-stage1/dietlibc/lib/__fstat64.c, mdk-stage1/dietlibc/lib/isalpha.c,
- mdk-stage1/dietlibc/lib/reboot.c, mdk-stage1/dietlibc/lib/isspace.c,
- mdk-stage1/dietlibc/include/sys/mount.h,
- mdk-stage1/dietlibc/lib/creat.c, mdk-stage1/dietlibc/syscalls.s/lseek.S,
- mdk-stage1/dietlibc/sparc/clone.S, mdk-stage1/dietlibc/dietwarning.h,
- mdk-stage1/dietlibc/lib/islower.c,
- mdk-stage1/dietlibc/alpha/Makefile.add, mdk-stage1/dietlibc/lib/abort.c,
- mdk-stage1/dietlibc/alpha/msgctl.S, mdk-stage1/dietlibc/lib/isalnum.c,
- mdk-stage1/dietlibc/include/ctype.h,
- mdk-stage1/dietlibc/include/netdb.h,
- mdk-stage1/dietlibc/include/memory.h, mdk-stage1/dietlibc/lib/iscntrl.c,
- mdk-stage1/dietlibc/i386/Makefile.add, mdk-stage1/dietlibc/lib/getopt.c,
- mdk-stage1/dietlibc/syscalls.s/waitpid.S,
- mdk-stage1/dietlibc/lib/strtoul.c,
- mdk-stage1/dietlibc/syscalls.s/stat.S,
- mdk-stage1/dietlibc/syscalls.s/sysctl.S: import new version of dietlibc
-
- * mdk-stage1/insmod-busybox/busybox.h: fix conflicts with dietlibc headers
-
- * mdk-stage1/dietlibc/include/stdio.h,
- mdk-stage1/dietlibc/include/stdlib.h,
- mdk-stage1/dietlibc/include/math.h,
- mdk-stage1/dietlibc/include/sys/times.h: have slang and newt compile
- with dietlibc
- import new version of dietlibc
-
- * mdk-stage1/Makefile.common: new dietlibc binaries location
-
- * mdk-stage1/newt-frontend.c: i can compile slang and newt with dietlibc
- now
-
- * mdk-stage1/dietlibc/lib/abs.c: have slang and newt compile with dietlibc
-
- * mdk-stage1/dhcp.c: Have the wait_message() with the sleep()
- - add a sleep(2) after ioctl ifupping so that further operation can
- work normally
- - more logs
-
-2001/05/14 kjx
-
- * share/po/zh_CN.GB2312.po: process untranslated
-
-2001/05/14 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm, fsedit.pm, partition_table.pm, install_any.pm: basic xfs handling
-
-2001/05/11 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: fixed missing package which may be selected on
- hardware during real install.
-
- * rescue/tree/etc/oem: added support to change boot entries when invoking
- oem script.
- fixed missing SCSI support and driver module loading.
- fixed missing speficic packages not installed on HW detected.
-
-2001/05/08 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: VBox -> HBox in Embedded mode
-
- * standalone/mousedrake: code cleaned and debugged
- added mouse test. Ugly
-
-2001/05/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stdio-frontend.c: fix minor stuff
- re-include correct layout for [] choices, in a smaller way than before
-
- * mdk-stage1/tools.c: minor fix
- needs to poll() for available data before loading ramdisk because ftp
- transfers would fail in some situations
-
- * mdk-stage1/init.c: new maxim
-
- * mdk-stage1/config-stage1.h: adjust COMPRESSION_RATIO so that last star
- is printed when last blocks of file are read
-
- * mdk-stage1/dhcp.c: use poll() rather than select() to win some bytesCVS:
- ----------------------------------------------------------------------
-
-2001/05/08 siegel
-
- * share/po/de.po: fixed plenty ugly typos
-
-2001/05/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po: updated Brazilian file
-
-2001/05/07 yduret
-
- * docs/README.devel: fix one typo
-
- * any.pm, bootloader.pm: updated install_lilo() according to new lilo
- package
- (/boot/lilo-{menu,graphic,text})
-
-2001/05/06 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad output and bad adsl script
-
-2001/05/06 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install2.pm: workaround for msec hang on PPC
-
-2001/05/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: KDE+SOUND -> 4 xmms-arts
-
-2001/05/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * mdk-stage1/mar/mar-extract-only.c: text size micro-opt
-
-2001/05/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: KDE+SOUND -> 4 xmms-arts
-
-2001/05/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * c/smp.c, keyboard.pm, Xconfigurator.pm: force XF4 in expert too for PPC,
- don't run xmodmap, PPC SMP routine placeholder
-
-2001/05/04 Thierry Vignaud <tvignaud@mandrakesoft.com>
-
- * mdk-stage1/mar/mar-extract-only.c: text size micro-opt
-
-2001/04/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stdio-frontend.c: nicer layout for progressbar and
- statusreport, when update_progression
- Provide some description of the drivers
-
- * docs/HACKING: fix
- pserver -> ext
-
- * mdk-stage1/tools.c, mdk-stage1/Makefile, mdk-stage1/tools.h,
- mdk-stage1/newt-frontend.c, mdk-stage1/modules_descr.h,
- mdk-stage1/modules.c: Provide some description of the drivers
-
-2001/04/30 Pixel <pixel@mandrakesoft.com>
-
- * docs/README: s/gi.tar.bz2/DrakX-*.src.rpm/
-
- * docs/advocacy: fuck'em all
-
-2001/04/26 François Pons <fpons@mandrakesoft.com>
-
- * docs/README.devel, docs/README: added some more comments for DrakX code
- source and usage.
-
-2001/04/25 François Pons <fpons@mandrakesoft.com>
-
- * tools/oem-prepare: fixed use of VERSION file to find language.
- prepare a oem disk to be used by moving all files that will not be
- installed by oem (oem-master disk preparation).
-
- * rescue/tree/etc/closurepkgs, rescue/tree/etc/part_and_bootloader: fixed
- usage of free space on disk, added NVIDIA packages to install.
-
- * rescue/tree/etc/oem-server: added missing VERSION file.
- fixed usage of free space on disk, added NVIDIA packages to install.
-
- * rescue/tree/etc/oem: added missing autologin package.
- added option to enable oem mode.
- added missing VERSION file.
- fixed usage of free space on disk, added NVIDIA packages to install.
-
-2001/04/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: version is labelled "cooker"
-
-2001/04/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * tools/serial_probe/serial.c, tools/serial_probe/serial_probe.c:
- integrate fg's fixes for includes
-
-2001/04/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * rescue/list.sparc, rescue/list.i386, rescue/list.ppc, rescue/list.alpha,
- rescue/list: move /sbin/sfdisk to list.arch, update both list.ppc
-
-2001/04/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: fix bug that trashes the network config of stage1
- during stage2, when no DNS is provided
-
-2001/04/18 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: last corrections
-
- * standalone/draknet, netconnect.pm: last corrections
- corrected internet connection test, and parameters editing
-
- * install_steps_gtk.pm: corrected cursor on details
-
-2001/04/18 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: * put am-utils and autofs in NETWORKING_FILE
- * drakprofile in level 1
- * swapped tkinter and python-devel
- * vnc-server in NETWORKING_REMOTE_ACCESS_SERVER
- * vnc-SVGALIB in level 2
-
-2001/04/17 dam's <damien@mandrakesoft.com>
-
- * standalone/mousedrake: fixed embedded
-
- * bootlook.pm: chmoded autologin
-
-2001/04/17 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: restored grub as everything seems fine.
-
- * rescue/tree/etc/oem-server: fixed swap size instead of inst size for
- swap gap.
- make sure kernel will be selected.
-
- * rescue/tree/etc/oem: fixed swap size instead of inst size for swap gap.
- make sure kernel is selected.
-
- * install_steps_interactive.pm: fixed missing mouse update in summary.
-
-2001/04/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: fix 75dpi-fonts bug with MAKEDEV
-
-2001/04/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * standalone/draknet: fixed typo
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/vi.po, share/po/br.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: Updated Basque file
-
-2001/04/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setRootPassword): better ensure
- 'broadcast' insteaf of overriding
- (setRootPassword): set NIS to broadcast when NIS asked. Empty NIS still
- means no NIS
-
- * any.pm (setupBootloader): remove a warning
-
-2001/04/17 warly
-
- * share/rpmsrate: put MAKEDEV at end of line
-
-2001/04/17 dam's <damien@mandrakesoft.com>
-
- * standalone/mousedrake: fixed embedded
-
- * bootlook.pm: chmoded autologin
-
-2001/04/17 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: restored grub as everything seems fine.
-
- * rescue/tree/etc/oem: fixed swap size instead of inst size for swap gap.
- make sure kernel is selected.
- fixed parted problem.
-
- * rescue/tree/etc/oem-server: fixed swap size instead of inst size for
- swap gap.
- make sure kernel will be selected.
-
- * install_steps_interactive.pm: fixed missing mouse update in summary.
-
-2001/04/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/vi.po, share/po/br.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: Updated Basque file
-
-2001/04/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setRootPassword): better ensure
- 'broadcast' insteaf of overriding
- (setRootPassword): set NIS to broadcast when NIS asked. Empty NIS still
- means no NIS
-
- * any.pm (setupBootloader): remove a warning
-
-2001/04/17 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: chmoded autologin
-
-2001/04/17 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed swap size instead of inst size for swap gap.
- make sure kernel is selected.
- fixed parted problem.
-
- * rescue/tree/etc/oem-server: fixed swap size instead of inst size for
- swap gap.
- make sure kernel will be selected.
-
-2001/04/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setRootPassword): better ensure
- 'broadcast' insteaf of overriding
- (setRootPassword): set NIS to broadcast when NIS asked. Empty NIS still
- means no NIS
-
- * any.pm (setupBootloader): remove a warning
-
-2001/04/17 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: chmoded autologin
-
-2001/04/17 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed swap size instead of inst size for swap gap.
- make sure kernel is selected.
- fixed parted problem.
-
- * rescue/tree/etc/oem-server: fixed swap size instead of inst size for
- swap gap.
- make sure kernel will be selected.
-
-2001/04/17 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setRootPassword): set NIS to broadcast
- when NIS asked. Empty NIS still means no NIS
-
- * any.pm (setupBootloader): remove a warning
-
-2001/04/16 dam's <damien@mandrakesoft.com>
-
- * any.pm: removed Grub if Embedded
-
-2001/04/16 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: minor bug.
-
- * any.pm: removed Grub if Embedded
-
-2001/04/16 dam's <damien@mandrakesoft.com>
-
- * standalone/net_monitor: updated
- updated
-
- * network.pm: dhcpd -> dhcpcd
-
- * Xconfigurator.pm: added nice monitor.png
-
- * netconnect.pm: minor bug.
- dhcpd -> dhcpcd
-
- * standalone/draknet: updated
-
- * pixmaps/hori.png, pixmaps/colors.png, pixmaps/wiz_default_left.png,
- pixmaps/tradi.png, pixmaps/categ.png, pixmaps/wiz_default_up.png,
- pixmaps/verti.png, pixmaps/wiz_firewall.png, pixmaps/monitor.png,
- pixmaps/monitor-1280.png, pixmaps/monitor-1024.png, pixmaps/net_c.png,
- pixmaps/wiz_draknet.png, pixmaps/gmon.png, pixmaps/monitor-800.png,
- pixmaps/net_d.png, pixmaps/eth_card_mini.png, pixmaps/wiz_drakgw.png,
- pixmaps/monitor-640.png, pixmaps/colors8.png, pixmaps/colors16.png: plop
- removed for readd in kb
-
- * my_gtk.pm: corrected typo
- added grey fix for contreol-center
-
-2001/04/16 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: added missing rio500 in closure.
- finally fixed menu by generating /etc/rpm/macros file.
- added missing LF.
- now fixed menu problems.
- try another fix for RPM_INSTALL_LANG as first fr_FR:fr instead of
- fr:fr_FR.
- really disable server.
- maybe fixed RPM_INSTALL_LANG (from "fr" to "fr:fr_FR" for french).
- fixed to avoid nasty message in wrong places.
- moved warning message around.
- fixed wrong LOCALES"...".
- fixed lang weirdness, fixed minimal size of / partition to be more
- confortable,
- fixed default language for starting DrakX after.
-
- * Xconfig.pm: fixed standalone error for wacom weirdness.
- fixed HASH() in /etc/X11/XF86Config*.
-
- * fs.pm: restored not neccessary to load reiserfs for formating.
- loading reiserfs module before formatting.
-
-2001/04/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * pixmaps/monitor-800.png, pixmaps/monitor-1024.png,
- pixmaps/monitor-640.png, pixmaps/monitor-1280.png: add nice shots for
- XFdrake
-
- * mdk-stage1/TECH-INFOS: update doc
-
- * share/po/fr.po: fix minor thing
-
-2001/04/16 Pixel <pixel@mandrakesoft.com>
-
- * share/compssUsers: remove BURNER from Utilities
-
-2001/04/16 warly
-
- * share/rpmsrate: lower portsentry
-
-2001/04/16 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: added nice monitor.png
-
- * standalone/net_monitor: updated
-
- * pixmaps/hori.png, pixmaps/colors.png, pixmaps/wiz_default_left.png,
- pixmaps/tradi.png, pixmaps/categ.png, pixmaps/wiz_default_up.png,
- pixmaps/verti.png, pixmaps/wiz_firewall.png, pixmaps/monitor.png,
- pixmaps/monitor-1280.png, pixmaps/monitor-1024.png, pixmaps/net_c.png,
- pixmaps/wiz_draknet.png, pixmaps/gmon.png, pixmaps/monitor-800.png,
- pixmaps/net_d.png, pixmaps/eth_card_mini.png, pixmaps/wiz_drakgw.png,
- pixmaps/monitor-640.png, pixmaps/colors8.png, pixmaps/colors16.png: plop
- removed for readd in kb
-
- * my_gtk.pm: corrected typo
- added grey fix for contreol-center
-
-2001/04/16 François Pons <fpons@mandrakesoft.com>
-
- * Xconfig.pm: fixed standalone error for wacom weirdness.
- fixed HASH() in /etc/X11/XF86Config*.
-
- * rescue/tree/etc/oem: maybe fixed RPM_INSTALL_LANG (from "fr" to
- "fr:fr_FR" for french).
- fixed to avoid nasty message in wrong places.
- moved warning message around.
- fixed wrong LOCALES"...".
- fixed lang weirdness, fixed minimal size of / partition to be more
- confortable,
- fixed default language for starting DrakX after.
-
-2001/04/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * pixmaps/monitor-800.png, pixmaps/monitor-1024.png,
- pixmaps/monitor-640.png, pixmaps/monitor-1280.png: add nice shots for
- XFdrake
-
-2001/04/16 Pixel <pixel@mandrakesoft.com>
-
- * share/compssUsers: remove BURNER from Utilities
-
-2001/04/16 warly
-
- * share/rpmsrate: lower portsentry
-
-2001/04/16 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: bugfix
- added update thread
- corrected bad install package.
- updated expert mode
-
- * network.pm, install_steps.pm: corrected bad install package.
-
- * Xconfigurator.pm: added nice monitor.png
-
- * tinyfirewall.pm: corrected package installation
-
- * standalone/net_monitor: updated
-
- * pixmaps/hori.png, pixmaps/colors.png, pixmaps/wiz_default_left.png,
- pixmaps/tradi.png, pixmaps/categ.png, pixmaps/wiz_default_up.png,
- pixmaps/verti.png, pixmaps/wiz_firewall.png, pixmaps/monitor.png,
- pixmaps/monitor-1280.png, pixmaps/monitor-1024.png, pixmaps/net_c.png,
- pixmaps/wiz_draknet.png, pixmaps/gmon.png, pixmaps/monitor-800.png,
- pixmaps/net_d.png, pixmaps/eth_card_mini.png, pixmaps/wiz_drakgw.png,
- pixmaps/monitor-640.png, pixmaps/colors8.png, pixmaps/colors16.png: plop
- removed for readd in kb
-
- * my_gtk.pm: corrected typo
- added grey fix for contreol-center
-
- * netconnect.pm: debug
- corrected bad install package.
-
-2001/04/16 François Pons <fpons@mandrakesoft.com>
-
- * Xconfig.pm: fixed standalone error for wacom weirdness.
- fixed HASH() in /etc/X11/XF86Config*.
-
- * rescue/tree/etc/oem: maybe fixed RPM_INSTALL_LANG (from "fr" to
- "fr:fr_FR" for french).
- fixed to avoid nasty message in wrong places.
- moved warning message around.
- fixed wrong LOCALES"...".
- fixed lang weirdness, fixed minimal size of / partition to be more
- confortable,
- fixed default language for starting DrakX after.
-
-2001/04/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * pixmaps/monitor-800.png, pixmaps/monitor-1024.png,
- pixmaps/monitor-640.png, pixmaps/monitor-1280.png: add nice shots for
- XFdrake
-
-2001/04/16 Pixel <pixel@mandrakesoft.com>
-
- * share/compssUsers: remove BURNER from Utilities
-
- * install_any.pm (g_auto_install): do not take 'mkbootdisk'
-
-2001/04/16 warly
-
- * share/rpmsrate: lower portsentry
-
-2001/04/15 fabman
-
- * share/po/es.po: updates
-
-2001/04/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix minor typo
-
-2001/04/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/gl.po: updated Galician file
-
-2001/04/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (reallyChooseGroups): translate path (eg:
- Workstation, Server) to make gg happy
-
-2001/04/15 fabman
-
- * share/po/es.po: updates
-
-2001/04/15 fcrozat
-
- * share/rpmsrate: Add mozilla-mail and mozilla-irc to correct categories
-
-2001/04/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fix minor typo
-
-2001/04/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po, share/po/ko.po: Updated Swedish and Korean files
-
-2001/04/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (reallyChooseGroups): translate path (eg:
- Workstation, Server) to make gg happy
-
- * printerdrake.pm (main): restore the "Ok" button for the queues
- manipulation
-
- * any.pm (write_passwd_user): fix use of local
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): add an eval
- around "require log" to keep perl from going totally mad (getting things
- like v18.843.482 required--this is only v5.6.0)
-
-2001/04/15 yduret
-
- * bootlook.pm: bug fix: if cancel pressed in lilo/grub choice => return to
- mcc normally
- fix layout & size
-
-2001/04/14 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected isdn detect display
-
- * standalone/net_monitor, standalone/draknet: wait 10 sec, instead of 7
-
-2001/04/14 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: changed priority level from 2 to 4 for rate
- selection of packages.
-
- * pkgs.pm: fixed absurd mismatch of use of <=> and cmp on versionCompare.
-
-2001/04/14 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (naughtyServers): add apache
-
- * install_gtk.pm (createXconf): ensure the mouse device is created (mainly
- for auto_inst)
-
- * install_steps_interactive.pm (exitInstall): fix bad i18n of Replay
- button (thx2submarine)
-
-2001/04/14 warly
-
- * share/rpmsrate: lower viavoicemenu to 1 to avoid error message for
- powerpack boxes without ViaVoice
-
-2001/04/14 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: changed priority level from 2 to 4 for rate
- selection of packages.
-
- * pkgs.pm: fixed absurd mismatch of use of <=> and cmp on versionCompare.
-
-2001/04/14 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (load_po): s/!isStandalone/isInstall/ (mainly for XFdrake's
- test)
-
- * Xconfigurator.pm (use vars): fix stew sux
- (testFinalConfig): nicer stderr handling
-
- * interactive_gtk.pm, interactive_newt.pm (exit): fix the exit code
-
-2001/04/14 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed to gzip synthesis file.
- safe guard generation of synthesis file.
- fixed umask on urpmi list file and generate synthesis file for each
- hdlist.
-
- * pkgs.pm: fixed absurd mismatch of use of <=> and cmp on versionCompare.
-
-2001/04/14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (configureX): fix link /etc/gtk (to
- /mnt/etc/gtk) instead of /etc/gtkrc
-
- * any.pm (autologin): spurious messages of chksession -> dave nul
-
- * interactive_newt.pm (exit): fix the exit code
- (wait_message_endW): don't log "none stacked wait-messages" (as a lot of
- them exist...)
- (waitbox): remove spurious '0' in wait_messages
-
- * lang.pm (load_po): s/!isStandalone/isInstall/ (mainly for XFdrake's
- test)
-
- * Xconfigurator.pm (use vars): fix stew sux
- (testFinalConfig): nicer stderr handling
-
- * interactive_gtk.pm (exit): fix the exit code
-
-2001/04/14 warly
-
- * share/compssUsers, share/list, share/rpmsrate: add icons in compssUser
- and list
-
-2001/04/14 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed to gzip synthesis file.
- safe guard generation of synthesis file.
- fixed umask on urpmi list file and generate synthesis file for each
- hdlist.
-
-2001/04/14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (configureX): fix link /etc/gtk (to
- /mnt/etc/gtk) instead of /etc/gtkrc
-
- * any.pm (autologin): spurious messages of chksession -> dave nul
-
- * interactive_newt.pm (exit): fix the exit code
- (wait_message_endW): don't log "none stacked wait-messages" (as a lot of
- them exist...)
- (waitbox): remove spurious '0' in wait_messages
-
- * lang.pm (load_po): s/!isStandalone/isInstall/ (mainly for XFdrake's
- test)
-
- * Xconfigurator.pm (use vars): fix stew sux
- (testFinalConfig): nicer stderr handling
-
- * interactive_gtk.pm (exit): fix the exit code
-
-2001/04/14 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator_consts.pm, mouse.pm, Xconfigurator.pm: updates to X, mouse
- setup for PPC
-
-2001/04/14 warly
-
- * share/compssUsers, share/list, share/rpmsrate: add icons in compssUser
- and list
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * Xconfigurator.pm: corrected
- updated
- updated message
-
- * standalone/draknet: message corrected
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: avoid locking cdrom for oem (compssUsers file still
- opened).
-
-2001/04/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: Updated Norwegian file
- Updated po files
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/vi.po, share/po/br.po,
- share/po/gl.po, share/po/ca.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: Updated po files
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (main): reverse message
-
- * install_steps_gtk.pm (installPackages): hide Details button sooner
- (installPackages): do not show button "Details" when no advertising
-
- * Xconfigurator_consts.pm: do not set XkbVariant "winkeys" for
- ru(winkeys), it is redondant
-
- * interactive_gtk.pm (ask_from_entries_refW): set_default_size width 250
-
- * any.pm (ask_users): do not have an empty icon. better not ask for icon
- if no icon
-
-2001/04/13 siegel
-
- * share/po/de.po: updates
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * Xconfigurator.pm: corrected
- updated
- updated message
-
- * standalone/draknet: message corrected
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: avoid locking cdrom for oem (compssUsers file still
- opened).
-
- * install_steps_gtk.pm: avoid illegal modulus zero if no advertizing is
- available.
- fixed very old typo not encountered before;
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (main): reverse message
-
- * install_steps_gtk.pm (installPackages): hide Details button sooner
- (installPackages): do not show button "Details" when no advertising
-
- * Xconfigurator_consts.pm: do not set XkbVariant "winkeys" for
- ru(winkeys), it is redondant
-
- * interactive_gtk.pm (ask_from_entries_refW): set_default_size width 250
-
- * any.pm (ask_users): do not have an empty icon. better not ask for icon
- if no icon
-
-2001/04/13 warly
-
- * share/compssUsers: add ssh server in Network Computer Server
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * Xconfigurator.pm: corrected
- updated
- updated message
-
- * standalone/draknet: message corrected
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid illegal modulus zero if no advertizing is
- available.
- fixed very old typo not encountered before;
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (backtrace): created
-
- * install_steps_interactive.pm (addUser): remove the setting of
- $o->{autologin}, now done in any::autologin
-
- * install_steps_gtk.pm (installPackages): hide Details button sooner
- (installPackages): do not show button "Details" when no advertising
-
- * install2.pm (miscellaneous): add setting KEYBOARD=yes in
- /etc/sysconfig/usb as asked by Lord Chmou
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): log the empty
- list instead of dying (for 8.0 only, should be switched back to die)
- (ask_from_listf): display the backtrace when empty list
-
- * any.pm (ask_users): add the empty icon
- (autologin): fix
-
-2001/04/13 warly
-
- * share/compssUsers: add ssh server in Network Computer Server
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: updated
- updated message
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * standalone/draknet: message corrected
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid illegal modulus zero if no advertizing is
- available.
- fixed very old typo not encountered before;
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (backtrace): created
-
- * install_steps_interactive.pm (addUser): remove the setting of
- $o->{autologin}, now done in any::autologin
-
- * install2.pm (miscellaneous): add setting KEYBOARD=yes in
- /etc/sysconfig/usb as asked by Lord Chmou
-
- * install_steps_gtk.pm (installPackages): do not show button "Details"
- when no advertising
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): log the empty
- list instead of dying (for 8.0 only, should be switched back to die)
- (ask_from_listf): display the backtrace when empty list
-
- * any.pm (ask_users): add the empty icon
- (autologin): fix
-
-2001/04/13 warly
-
- * share/compssUsers: add ssh server in Network Computer Server
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: updated
- updated message
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * standalone/draknet: message corrected
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid illegal modulus zero if no advertizing is
- available.
- fixed very old typo not encountered before;
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (backtrace): created
-
- * install_steps_interactive.pm (addUser): remove the setting of
- $o->{autologin}, now done in any::autologin
-
- * install2.pm (miscellaneous): add setting KEYBOARD=yes in
- /etc/sysconfig/usb as asked by Lord Chmou
-
- * install_steps_gtk.pm (installPackages): do not show button "Details"
- when no advertising
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): log the empty
- list instead of dying (for 8.0 only, should be switched back to die)
- (ask_from_listf): display the backtrace when empty list
-
- * any.pm (ask_users): add the empty icon
- (autologin): fix
-
-2001/04/13 warly
-
- * share/compssUsers: add ssh server in Network Computer Server
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: updated
- updated message
-
- * standalone/draknet: message corrected
- updated
-
- * netconnect.pm: net_cnx_up/down xritten in neuneu
-
- * bootlook.pm: embedded = 0 -> local
-
-2001/04/13 fabman
-
- * share/po/es.po: synchro with EN
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: avoid illegal modulus zero if no advertizing is
- available.
- fixed very old typo not encountered before;
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (backtrace): created
-
- * install_steps_interactive.pm (addUser): remove the setting of
- $o->{autologin}, now done in any::autologin
-
- * install2.pm (miscellaneous): add setting KEYBOARD=yes in
- /etc/sysconfig/usb as asked by Lord Chmou
-
- * install_steps_gtk.pm (installPackages): do not show button "Details"
- when no advertising
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): log the empty
- list instead of dying (for 8.0 only, should be switched back to die)
- (ask_from_listf): display the backtrace when empty list
-
- * any.pm (ask_users): add the empty icon
- (autologin): fix
-
-2001/04/13 warly
-
- * share/compssUsers: add ssh server in Network Computer Server
- add DATABASES to Database
- add icons for server
-
-2001/04/13 dam's <damien@mandrakesoft.com>
-
- * network.pm: updated wireless configuration
-
- * netconnect.pm: corrected loop in isdn + other things
-
- * bootlook.pm: embedded = 0 -> local
-
- * standalone/draknet: updated
- added delete event
-
-2001/04/13 François Pons <fpons@mandrakesoft.com>
-
- * netconnect.pm: fixed syntax error :-)
-
- * install_steps.pm, install_steps_gtk.pm: added conditional update-menus
- if package are installed.
-
- * install_steps_interactive.pm: added conditional update-menus if package
- are installed.
- make sure update-menus is called after installing cups related packages.
-
-2001/04/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/fr.po, share/po/sv.po, share/po/hu.po: Updated
- Croatian and Swedish files
-
- * share/po/sl.po, share/po/cy.po, share/po/ca.po, share/po/ga.po,
- share/po/is.po, share/po/cs.po: Removed po files with too low leve lof
- translating ( < 60% )
- so they are not included on final CD
-
-2001/04/13 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (backtrace): created
-
- * install_steps_interactive.pm (addUser): remove the setting of
- $o->{autologin}, now done in any::autologin
-
- * bootlook.pm: don't use Locale::GetText, use DrakX's i18n
-
- * install2.pm (miscellaneous): add setting KEYBOARD=yes in
- /etc/sysconfig/usb as asked by Lord Chmou
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): log the empty
- list instead of dying (for 8.0 only, should be switched back to die)
- (ask_from_listf): display the backtrace when empty list
-
- * my_gtk.pm (new): make dams happy
-
- * any.pm (ask_users): add the empty icon
- (autologin): fix
-
-2001/04/13 warly
-
- * share/compssUsers: add DATABASES to Database
- add icons for server
-
-2001/04/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: remove unnecessary redhat history code
-
-2001/04/12 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed wrong kernel version extraction (typically for
- upgrade).
-
- * install_steps_interactive.pm: removed Cancel of Summary.
- fixed ask printer configuration.
-
- * detect_devices.pm: fix Hewlett-Packard to HP in case.
-
- * standalone/printerdrake: never ask to configure a printer in standalone.
-
- * printerdrake.pm: automatically add a queue if nothing exists.
- fixed ask to configure a printer.
-
- * interactive.pm: removed strict die on empty list.
-
- * live_install2: added some gtk and gdk_imlib missing variables.
-
- * live_install: removed gtk variable for data, moved to second script.
-
- * modules.pm, commands.pm, lang.pm, pkgs.pm, keyboard.pm: fixed log of
- packdrake.
-
-2001/04/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: remove unneeded #define
-
- * standalone/drakgw: add some rule so later on tinyfirewall will not
- prevent everything from working
-
- * share/po/fr.po: minor fix
- write some ppc translations
-
-2001/04/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: Updated Italian file
-
-2001/04/12 Pixel <pixel@mandrakesoft.com>
-
- * printer.pm: use run_program and remove "require run_program"s
-
- * my_gtk.pm (main): only accept X (gdk) events key_press, key_release and
- exposure (so
- that not to receive motion_notify which would generate focus_out in
- non-interesting cases)
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): fix the test
- for empty lists
- (ask_from_entries_refH_powered_normalize):
- - when not_edit and empty list, die.
- - when not_edit and single element list, don't display that entry.
-
- * lang.pm (pack_langs): set RPM_INSTALL_LANG for package "menu"
-
- * modules.pm (configure_pcmcia): better handling for not running cardmgr
- many times
- (configure_pcmcia): always run cardmgr so that it is run even if stage1
- did create a /var/run/stab. This is just a try :-/
-
-2001/04/12 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: if neuneu but explicited clicked, don't skip
- corrected pcmcia driver
-
-2001/04/12 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: removed Cancel of Summary.
- fixed ask printer configuration.
-
- * common.pm: improved bestMatchSentence2.
-
- * detect_devices.pm: fix Hewlett-Packard to HP in case.
-
- * standalone/printerdrake: never ask to configure a printer in standalone.
-
- * printerdrake.pm: automatically add a queue if nothing exists.
- fixed ask to configure a printer.
-
- * interactive.pm: removed strict die on empty list.
-
- * modules.pm, commands.pm, lang.pm, keyboard.pm, pkgs.pm: fixed log of
- packdrake.
-
-2001/04/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: add some rule so later on tinyfirewall will not
- prevent everything from working
-
- * share/po/fr.po: write some ppc translations
- un-dadouize a problem
-
-2001/04/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: Updated Italian file
-
-2001/04/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): fix no advertising with less
- than 20MB of packages
-
- * interactive.pm (ask_from_entries_refH_powered_normalize):
- - when not_edit and empty list, die.
- - when not_edit and single element list, don't display that entry.
-
- * install_steps_interactive.pm (configureX): fix for X test at install
- with exotic fonts
-
- * lang.pm (pack_langs): set RPM_INSTALL_LANG for package "menu"
-
- * modules.pm (configure_pcmcia): better handling for not running cardmgr
- many times
- (configure_pcmcia): always run cardmgr so that it is run even if stage1
- did create a /var/run/stab. This is just a try :-/
-
-2001/04/12 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: corrected typo
- added use bootloader
-
- * standalone/net_monitor: typo
-
- * netconnect.pm: if neuneu but explicited clicked, don't skip
- corrected pcmcia driver
- corrected typo
-
- * lang.pm: pixel sux
-
- * network.pm, standalone/draknet: corrected network connection
-
- * my_gtk.pm: corrected set_modal
-
-2001/04/12 fabman
-
- * share/po/es.po: updated spanish .po files
-
-2001/04/12 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: removed Cancel of Summary.
- fixed ask printer configuration.
-
- * common.pm: improved bestMatchSentence2.
-
- * detect_devices.pm: fix Hewlett-Packard to HP in case.
-
- * standalone/printerdrake: never ask to configure a printer in standalone.
-
- * printerdrake.pm: automatically add a queue if nothing exists.
- fixed ask to configure a printer.
-
- * modules.pm, commands.pm, lang.pm, keyboard.pm, pkgs.pm: fixed log of
- packdrake.
-
-2001/04/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: un-dadouize a problem
- sync
-
-2001/04/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sp.po, share/po/fi.po, share/po/DrakX.pot,
- share/po/zh_CN.GB2312.po, share/po/es.po, share/po/fr.po,
- share/po/sr.po, share/po/de.po, share/po/el.po, share/po/et.po,
- share/po/sk.po, share/po/eu.po, share/po/sl.po, share/po/vi.po,
- share/po/ko.po, share/po/eo.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/da.po, share/po/is.po, share/po/zh_TW.Big5.po,
- share/po/id.po: Updated Chinese file
-
- * share/po/it.po: Updated Italian file
- Updated Chinese file
-
-2001/04/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): fix no advertising with less
- than 20MB of packages
-
- * interactive.pm (ask_from_entries_refH_powered_normalize):
- - when not_edit and empty list, die.
- - when not_edit and single element list, don't display that entry.
-
- * install_steps_interactive.pm (configureX): fix for X test at install
- with exotic fonts
-
- * lang.pm (pack_langs): set RPM_INSTALL_LANG for package "menu"
-
- * modules.pm (configure_pcmcia): better handling for not running cardmgr
- many times
- (configure_pcmcia): always run cardmgr so that it is run even if stage1
- did create a /var/run/stab. This is just a try :-/
-
-2001/04/12 siegel
-
- * share/po/de.po: new german version
-
-2001/04/12 yduret
-
- * bootlook.pm: added some stuff
-
-2001/04/11 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: no setmodal 0 if wizard
-
-2001/04/12 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: corrected typo
- added use bootloader
-
- * netconnect.pm: corrected typo
-
-2001/04/12 fabman
-
- * share/po/es.po: updated spanish .po files
-
-2001/04/12 siegel
-
- * share/po/de.po: new german version
-
-2001/04/11 dam's <damien@mandrakesoft.com>
-
- * share/themes-mdk.rc: tooltips
-
- * netconnect.pm: updated
-
- * my_gtk.pm: no setmodal 0 if wizard
-
-2001/04/11 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (reallyChooseGroups): relook
-
- * install_steps_interactive.pm (chooseGroups): warn if chosen size is too
- big
-
- * share/compssUsers: adapt for new profile choosing layout
-
-2001/04/11 yduret
-
- * bootlook.pm: bug fix in autologin
-
-2001/04/11 dam's <damien@mandrakesoft.com>
-
- * share/themes-mdk.rc: tooltips
-
- * bootlook.pm: updated
- corrected
-
- * tinyfirewall.pm: installation of package : not at the same place
-
- * netconnect.pm: updated
- added driver for pcmcia, corrected eth conf for pppoe
-
-2001/04/11 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: added missing LD_LOADER for calling rpm.
-
- * printerdrake.pm: fixed probe on kernel 2.4.
- make printer devices more accurate.
- removed limitation to only one port probed
-
- * pkgs.pm: added missing use of LD_LOADER for starting parsehdlist on
- upgrade.
-
- * detect_devices.pm: avoid need of shell for live upgrade on serial_probe
- (removed 2>/dev/null which
- is not necessary).
- fixed printer probe (usb and parallel).
-
- * mouse.pm: fix wacom usb tablet
-
- * standalone/printerdrake: added missing take into account of
- /etc/modules.conf
-
- * lang.pm: added missing LD_LOADER reference and remove old code
- commented.
-
-2001/04/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: unfuzzyize
- sync with new msg in services.pm and compssUsers
- sync with pablo update
- fixes of translations
- write the shitload of untranslated and fuzzy msg
-
- * standalone/tinyfirewall: i18n title
-
- * services.pm: have many more services tooltipped from here so we can get
- translations afterwards
-
- * share/compssUsers: fix typos of rpmsrate groups
-
- * standalone/drakgw: kosmetik
- do i18n for title also
-
-2001/04/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: Added reference to netscape-chinese_big5 file
-
- * share/po/DrakX.pot, share/po/wa.po: Updated Walloon file
- Updated po files
- Updated Slovak, Walloon and Polish files
-
- * share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/de.po,
- share/po/ko.po, share/po/ja.po, share/po/is.po, share/po/zh_TW.Big5.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/zh_CN.GB2312.po, share/po/sk.po, share/po/vi.po,
- share/po/ca.po, share/po/cs.po: Updated po files
- Updated Slovak, Walloon and Polish files
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/ga.po,
- share/po/sr.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/cy.po, share/po/nl.po, share/po/sv.po, share/po/hu.po,
- share/po/no.po, share/po/th.po, share/po/el.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/af.po: Updated po files
-
-2001/04/11 Pixel <pixel@mandrakesoft.com>
-
- * run_program.pm (rooted): don't call install_any::check_prog if rooted
-
- * standalone/drakboot: make it work (why was bootloader::install
- commented?)
-
- * share/compssUsers: adapt for new profile choosing layout
-
- * Makefile: take cardmgr-*
-
- * install_steps_interactive.pm (chooseGroups): warn if chosen size is too
- big
- translate the ``path'' in profile selection
-
- * share/po/i18n_compssUsers: relooking
-
- * any.pm (setupBootloader): translate the bootloaders to use
- (setupBootloader): nicer look&feel
-
- * install_any.pm (fsck_option): add a closing ``"'' so that strings to
- i18n extraction works
- (fsck_option): add a closing ``"'' so that strings to i18n extraction
- works
- (check_prog): make it work
-
- * install_steps_gtk.pm (reallyChooseGroups): relook
- (installPackages): pressing "Details" gives you more detailed info
- (reallyChooseGroups): start relooking
- (installPackages): don't display advertising if less 20MB of packages
- translate the ``path'' in profile selection
-
-2001/04/11 warly
-
- * share/compssUsers: Add descr for servers
-
-2001/04/11 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: make printer devices more accurate.
- removed limitation to only one port probed
-
- * mouse.pm: fix wacom usb tablet
-
- * standalone/printerdrake: added missing take into account of
- /etc/modules.conf
-
- * detect_devices.pm: fixed printer probe (usb and parallel).
-
-2001/04/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * services.pm: have many more services tooltipped from here so we can get
- translations afterwards
-
- * share/po/fr.po: write the shitload of untranslated and fuzzy msg
-
- * share/compssUsers: fix typos of rpmsrate groups
-
-2001/04/11 Pixel <pixel@mandrakesoft.com>
-
- * run_program.pm (rooted): don't call install_any::check_prog if rooted
-
- * diskdrake.pm (More): fix exception relaunching
-
- * install_any.pm (check_prog): make it work
-
- * any.pm (setupBootloader): nicer look&feel
-
- * standalone/drakboot: make it work (why was bootloader::install
- commented?)
-
- * Makefile: take cardmgr-*
-
-2001/04/11 fabman
-
- * share/po/es.po: updated spanish .po file
-
-2001/04/11 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: make printer devices more accurate.
- removed limitation to only one port probed
-
- * mouse.pm: fix wacom usb tablet
-
- * standalone/printerdrake: added missing take into account of
- /etc/modules.conf
-
- * detect_devices.pm: fixed printer probe (usb and parallel).
-
-2001/04/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: write the shitload of untranslated and fuzzy msg
-
-2001/04/11 Pixel <pixel@mandrakesoft.com>
-
- * tools/make_mdkinst_stage2: to lighten mdkinst_stage2:
- - completly remove po's (will be getFile'd)
- - remove LVM progs, resize_reiserfs, big fonts (will be getFile'd)
-
- * standalone/drakboot: make it work (why was bootloader::install
- commented?)
-
- * share/aliases: add rmmod -> insmod_
-
- * lang.pm (get_x_fontset): special cases for some big (size) fonts
-
- * Makefile: take cardmgr-*
-
- * install_any.pm (check_prog): make it work
- (check_prog): if a prog isn't available, try to fetch it via getFile
- (remove_bigseldom_used): created, purpose: remove unneeded stuff on
- stage2
- to allow a getAndSaveFile.
- (getAndSaveFile): if only one arg is given, assume the name is the same
-
- * standalone/XFdrake: fix bug for running xfs
-
- * any.pm (setupBootloader): nicer look&feel
-
- * diskdrake.pm (More): fix exception relaunching
- check resize_reiserfs is there or get it
-
- * run_program.pm (rooted): don't call install_any::check_prog if rooted
- in install, call install_any::check_prog to allow shadow progs which are
- fetched when needed via getFile
-
- * share/list: remove rmmod (is now a symlink)
-
-2001/04/11 siegel
-
- * share/po/de.po: updated german version
-
-2001/04/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po: Updated Catalan file
-
-2001/04/10 Pixel <pixel@mandrakesoft.com>
-
- * Makefile:
- - fix wiz_*.png removing
- - fix copying cardmgr* which included cardmgr.o
-
-2001/04/11 Pixel <pixel@mandrakesoft.com>
-
- * tools/make_mdkinst_stage2: to lighten mdkinst_stage2:
- - completly remove po's (will be getFile'd)
- - remove LVM progs, resize_reiserfs, big fonts (will be getFile'd)
-
- * standalone/XFdrake: fix bug for running xfs
-
- * diskdrake.pm: check resize_reiserfs is there or get it
-
- * share/aliases: add rmmod -> insmod_
-
- * install_any.pm (check_prog): if a prog isn't available, try to fetch it
- via getFile
- (remove_bigseldom_used): created, purpose: remove unneeded stuff on
- stage2
- to allow a getAndSaveFile.
- (getAndSaveFile): if only one arg is given, assume the name is the same
-
- * share/list: remove rmmod (is now a symlink)
-
- * run_program.pm: in install, call install_any::check_prog to allow shadow
- progs which are
- fetched when needed via getFile
-
- * lang.pm (get_x_fontset): special cases for some big (size) fonts
-
-2001/04/10 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad network restart
-
- * my_gtk.pm: corrected bad font
-
- * network.pm: get rid of ifcfg-
- minor correction
-
-2001/04/10 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed selection of CDs.
-
- * devices.pm: added input/event class of devices (necessary for usb wacom
- at install)
-
-2001/04/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/mkinitrd_helper/mkinitrd_helper.c,
- mdk-stage1/mkinitrd_helper/Makefile:
- - honour quiet mode at boot time
- - fake modprobe to shut up kmod
-
- * bootlook.pm: do not use french in i18n'ed msg yvounet!!
-
- * standalone/drakgw: add INTERFACE param in sysconfig parameter for smooth
- interoperation with bastille-firewall
-
-2001/04/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: Updated Czech file
- Updated po files
-
- * share/po/ko.po, share/po/ja.po, share/po/id.po, share/po/vi.po: Updated
- Indonesian, Japanese, Korean and Vietnamese files
- Updated po files
-
- * share/po/DrakX.pot, share/po/wa.po, share/po/fi.po: Added a missing
- translatable string
- Updated po files
-
- * share/po/ca.po: Updated Catalan file
- Updated po files
-
- * share/locales.tar.bz2: Added missing file for Vietnamese
-
- * share/po/bg.po: Updated Bulgarian file
- Updated po files
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/es.po,
- share/po/fr.po, share/po/ga.po, share/po/sr.po, share/po/de.po,
- share/po/et.po, share/po/tr.po, share/po/eu.po, share/po/az.po,
- share/po/ru.po, share/po/pt_BR.po, share/po/hr.po, share/po/cy.po,
- share/po/nl.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/pl.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/da.po, share/po/af.po: Updated po files
-
-2001/04/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm: use gtkset_tip (so that no tip is set when tip eq
- '')
- (create_boxradio): handle double_click
- (ask_from_entries_refW): use radio boxes instead of list/clist if small
- number
- of choices
- (create_ctree): handle single click on node opens the node
-
- * my_gtk.pm: create and use gtkset_tip
- (_create_window): XSetInputFocus done only on expose_event of the
- topmost window
- (new): ensure only one modal
-
- * Xconfigurator.pm (main): have an "Ok" button to leave
-
- * install_steps_gtk.pm: use gtkset_tip
- (choosePackagesTree): fix "Show automatically selected packages"
- create and use gtkset_tip
-
- * Makefile:
- - fix wiz_*.png removing
- - fix copying cardmgr* which included cardmgr.o
-
-2001/04/10 warly
-
- * share/rpmsrate: add viavoicemenu_{us,gr,fe}
-
-2001/04/10 yduret
-
- * bootlook.pm: grub/lilo mode
-
-2001/04/10 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad network restart
-
- * my_gtk.pm: corrected bad font
-
- * network.pm: get rid of ifcfg-
- minor correction
-
-2001/04/09 dam's <damien@mandrakesoft.com>
-
- * tinyfirewall.pm: typo
-
-2001/04/09 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Create): check for 40MB instead of 32MB for min reiserfs
- size as the check is done before rounding.
-
- * bootloader.pm (install_grub): altconfigfile only if /boot is not
- reiserfs :-/
-
- * tools/make_mdkinst_stage2: fix the stage2 too big (was keeping too many
- modules.cz)
-
- * install_any.pm (setPackages): also have SOUND set in compssUsersChoice
- based on pciusbtable
-
- * share/compssUsers, share/rpmsrate:
- - SOUND is now a flag
- - AUDIO is the group
-
-2001/04/09 siegel
-
- * tinyfirewall.pm: i18n fixes
-
-2001/04/09 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixes of grub installation using hd.img
- fix the fix for loopback mounting of hd.img.
-
- * Xconfigurator.pm: fixed always 8bpp for autoDefaultDepth.
-
- * pkgs.pm: changed transaction error management this way: if a transaction
- fails, DrakX
- tries to make as many transaction as there are package that have failed
- to be
- installed (this means one transaction of only one package). This help
- installing
- most package that are correct (as a transaction that failed cause all
- remaining
- package to be not installed).
-
-2001/04/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: 8.0rc -> 8.0
-
- * rescue/tree/etc/oem: fix english thanks to Kevin
-
- * standalone/drakgw: do not die when an initscript returns non-0
- (initscripts too buggy)
-
-2001/04/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/gl.po, share/po/ca.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated Danish file
-
- * any.pm: changed ISO_8859-1 TO ISO-8859-1
-
-2001/04/09 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm, install_steps.pm, any.pm: create to_utf8 from po strings,
- use it for kdm message
-
- * diskdrake.pm (Create): check for 40MB instead of 32MB for min reiserfs
- size as the check is done before rounding.
-
- * bootloader.pm (install_grub): altconfigfile only if /boot is not
- reiserfs :-/
-
- * tools/make_mdkinst_stage2: fix the stage2 too big (was keeping too many
- modules.cz)
-
- * install2.pm (main): sets umask (seems like default one is no more 022,
- kernel change?)
-
- * Xconfigurator_consts.pm, Xconfig.pm, Xconfigurator.pm: handle XkbModel
- (especially for abnt2 (br))
-
- * install_any.pm (setPackages): also have SOUND set in compssUsersChoice
- based on pciusbtable
-
- * share/compssUsers, share/rpmsrate:
- - SOUND is now a flag
- - AUDIO is the group
-
- * lang.pm (load_po): sets $lang::charset to the charset used in the po
-
-2001/04/09 siegel
-
- * share/po/de.po: fixes
-
- * Xconfigurator.pm: fixed i18n bug
-
-2001/04/09 yduret
-
- * standalone/tinyfirewall: button policy (thx gc)
-
- * standalone/drakgw: deyvounification : remove some un-useful comments in
- code
-
-2001/04/09 dam's <damien@mandrakesoft.com>
-
- * tinyfirewall.pm: corrected
-
- * standalone.pm: install function now returns the return value of the
- system.
-
- * netconnect.pm: corrected buggy cable
- removed buggy modem screen repetition
-
-2001/04/09 François Pons <fpons@mandrakesoft.com>
-
- * standalone/mousedrake: fixed mousedrake (with interactive.pm fixes
- applied).
- fixed cancel support.
- added conditional restart of gpm on mouse configuration change.
-
- * fs.pm: removed notail option for reiserfs.
-
- * standalone/keyboarddrake: fixed exit on cancel (should cause trouble in
- DrakConf only).
-
- * install_any.pm: added missing package to copy.
-
- * rescue/tree/etc/oem: fixes of grub installation using hd.img
- fix the fix for loopback mounting of hd.img.
- fixed hd.img access right.
- make kernel22 installed for every oem install...
- moved some package to closure instead of installed.
- added some missing packages.
- added nolock option for nfsmount.
- added missing package to copy.
-
-2001/04/09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: fix Traktopel Maxim thanks to Kevin Lawton
-
- * mdk-stage1/Makefile: 8.0beta -> 8.0rc
-
- * standalone/drakgw: fix for when there is an already existing rc.firewall
- complies with old format of drakgw so that upgrades will work
-
- * rescue/tree/etc/oem: fix english thanks to Kevin
-
-2001/04/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * any.pm: changed ISO_8859-1 TO ISO-8859-1
-
-2001/04/09 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm, install_steps.pm, any.pm: create to_utf8 from po strings,
- use it for kdm message
-
- * interactive.pm (ask_from_treelistf): make it behaves correctly when
- "cancel" is clicked
-
- * Xconfigurator_consts.pm, Xconfig.pm, Xconfigurator.pm: handle XkbModel
- (especially for abnt2 (br))
-
- * install2.pm (main): sets umask (seems like default one is no more 022,
- kernel change?)
- (main): log the umask
-
- * devices.pm (entry): add hd[ijkl]*
-
- * bootloader.pm (install_lilo): better handling of map-drive (there's not
- always only 2 disks!)
-
- * lang.pm (load_po): sets $lang::charset to the charset used in the po
-
-2001/04/09 siegel
-
- * share/po/de.po: fixes
-
-2001/04/09 yduret
-
- * standalone/drakboot: added lilo/grub
-
- * bootlook.pm: added lilo/grub mode
-
-2001/04/09 dam's <damien@mandrakesoft.com>
-
- * modules.pm: removed use install_any
-
- * tinyfirewall.pm: corrected
-
- * netconnect.pm: corrected buggy cable
- removed buggy modem screen repetition
- corrected bad bug when creating new profile
-
- * standalone.pm: install function now returns the return value of the
- system.
-
- * Makefile: removed install_any
-
-2001/04/09 François Pons <fpons@mandrakesoft.com>
-
- * standalone/mousedrake: fixed mousedrake (with interactive.pm fixes
- applied).
- fixed cancel support.
- added conditional restart of gpm on mouse configuration change.
-
- * rescue/tree/etc/oem: fixed hd.img access right.
- make kernel22 installed for every oem install...
- moved some package to closure instead of installed.
- added some missing packages.
- added nolock option for nfsmount.
- added missing package to copy.
-
- * fs.pm: removed notail option for reiserfs.
-
- * standalone/keyboarddrake: fixed exit on cancel (should cause trouble in
- DrakConf only).
-
- * printer.pm: added Till patch for printer (raw queue and PostScript
- queue).
-
- * install_any.pm: added missing package to copy.
-
-2001/04/09 kjx
-
- * share/po/zh_CN.GB2312.po: translate before 8.0 release
-
-2001/04/09 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): log the umask
-
- * interactive.pm (ask_from_treelistf): make it behaves correctly when
- "cancel" is clicked
-
- * devices.pm (entry): add hd[ijkl]*
-
- * bootloader.pm (install_lilo): better handling of map-drive (there's not
- always only 2 disks!)
-
-2001/04/09 yduret
-
- * bootlook.pm: fix, added lilo/grub frame
- fixed till bug
-
-2001/04/08 dam's <damien@mandrakesoft.com>
-
- * rescue/tree/etc/oem, rescue/tree/etc/closurepkgs, install_any.pm: get
- rid of kisdn
-
- * tinyfirewall.pm: updated
- added package installation
-
- * netconnect.pm: get rid of kisdn
- updated
- no more askwarn in wizard mode
- updated
-
- * standalone/tinyfirewall, standalone/drakgw, my_gtk.pm,
- netconnect_consts.pm: updated
-
- * standalone/net_monitor: removed Data::Dumper
- typo
-
- * standalone/draknet: updated
- typo
- corrected bad isdn field
-
-2001/04/08 daouda
-
- * share/rpmsrate: increase quanta weight .
-
-2001/04/08 fabman
-
- * share/po/es.po: updated spanish .po files
-
-2001/04/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: correct my mistakes on removing some modules from stage1 and
- stage2 (-> remove only from stage1)
-
-2001/04/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/compssUsers.desktop, standalone/draknet: Fixed some english typos
-
- * standalone/net_monitor, netconnect.pm: Some English changes
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Fixed some english typos
- Updated pot file and various po files
-
-2001/04/08 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (write): remove debugging info :-(
-
- * bootloader.pm (suggest): add option "quiet" to the kernel in fb
- (requested by chmou)
-
- * install_steps.pm (afterInstallPackages): remove setting of kde charset
- in kdeglobals (kde is a grown-up now)
-
-2001/04/08 siegel
-
- * share/po/de.po: new german version
- updates
-
-2001/04/07 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: typo
- typo
- net_monitor incorporation
-
- * standalone/net_monitor, Makefile.config: net_monitor incorporation
-
-2001/04/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po: updated Croatian files
-
- * share/po/wa.po, share/po/sr.po, share/po/sp.po, share/po/DrakX.pot,
- share/po/ko.po, share/po/it.po: Updated Korean, Italian, Serbian and
- Walloon files
-
-2001/04/07 warly
-
- * share/compssUsers: PCL-CVS release v2_9_9
- Repository : :ext:warly@cvs.mandrakesoft.com:/home/cvs/cooker
- Working directory: /home/warly/local/share/mdk/gi/perl-install/share/
- In directory .:
- Modified compssUsers
- In directory po:
- patched Up-To-Date po/DrakX.pot
- patched Up-To-Date po/ca.po
- patched Up-To-Date po/de.po
- patched Up-To-Date po/hr.po
- patched Up-To-Date po/id.po
- patched Up-To-Date po/it.po
- patched Up-To-Date po/ja.po
- patched Up-To-Date po/ko.po
- patched Up-To-Date po/sp.po
- patched Up-To-Date po/sr.po
- patched Up-To-Date po/vi.po
- patched Up-To-Date po/wa.po
-
- --------------------- End ---------------------
- -- last cmd: cvs -f update -d -P --
-
- * share/rpmsrate: PCL-CVS release v2_9_9
- Repository : :ext:warly@cvs.mandrakesoft.com:/home/cvs/cooker
- Working directory: /home/warly/local/share/mdk/gi/perl-install/share/
- In directory .:
- Modified rpmsrate
-
- --------------------- End ---------------------
- -- last cmd: cvs -f update -d -P --
-
-2001/04/06 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed absence of /boot in install CD for oem stuff.
-
-2001/04/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: use jeff's suggestions to remove some old stuff
- Sun Happy Meal only for Sparc
-
- * mdk-stage1/stdio-frontend.c, mdk-stage1/probing.c, mdk-stage1/modules.c:
-
- - do not print warning when we are in AUTOMATIC and insmod failed
- because of file-not-found in mar file (raid cards, etc)
- - print "please include msg from Alt-F3" for this warning message to
- ease further support
- - print pci entry of cards found in te logs
-
- * mdk-stage1/mkinitrd_helper/mkinitrd_helper.c,
- mdk-stage1/mkinitrd_helper/Makefile: steal raid_autorun from rh
-
-2001/04/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po, share/po/id.po: Updated Catalan and Indonesian files
-
- * share/po/ja.po, share/po/vi.po: Updated Japanese and Vietnamese files
-
-2001/04/06 siegel
-
- * share/po/de.po: updates
-
-2001/04/06 yduret
-
- * standalone/drakgw: swap cancel/configure button
-
-2001/04/06 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet2: dead code
-
- * standalone/net_monitor: updated
-
- * netconnect.pm: be quiet
-
-2001/04/06 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed absence of /boot in install CD for oem stuff.
- fixed if label does not exists and grub refuse to read.
-
- * install_steps_interactive.pm: fixed typo for cups checking of
- installation.
- fixed "No printer" after configuring cups for remove server.
- added log for CD medium chosen par user.
-
- * pkgs.pm: added killing on child process of transaction that have been
- detached (typically
- with pid > transaction_pid and parent is 1).
-
-2001/04/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw:
- - correct yvounetification in i18n stuff
- - remove some remaining debugging printings
- - add a bit more of explanations when starting drakgw in wizard mode
-
- * modules.pm: re integrate some TR net cards
-
- * mdk-stage1/stdio-frontend.c, mdk-stage1/probing.c, mdk-stage1/modules.c:
-
- - do not print warning when we are in AUTOMATIC and insmod failed
- because of file-not-found in mar file (raid cards, etc)
- - print "please include msg from Alt-F3" for this warning message to
- ease further support
- - print pci entry of cards found in te logs
-
-2001/04/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated Thai file
- Updated pot file
-
-2001/04/06 yduret
-
- * standalone/drakgw: swap cancel/configure button
-
-2001/04/06 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: addde tk like routines
-
- * netconnect.pm: be quiet
- correctedInternetAccessTye and ADSLType
-
- * Makefile: iCorrected missing file install_any.pm. pixel sux.
-
- * standalone/draknet2: dead code
-
- * standalone/net_monitor: updated
- updated
- updated
- updated
- updated
- added
-
- * pixmaps/net_d.png, pixmaps/net_c.png: added
-
- * share/logo-mandrake.png: new icon
-
-2001/04/06 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: fixed if label does not exists and grub refuse to
- read.
-
- * install_steps_interactive.pm: fixed typo for cups checking of
- installation.
- fixed "No printer" after configuring cups for remove server.
- added log for CD medium chosen par user.
-
- * pkgs.pm: added killing on child process of transaction that have been
- detached (typically
- with pid > transaction_pid and parent is 1).
-
-2001/04/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated Thai file
- Updated pot file
-
-2001/04/06 Pixel <pixel@mandrakesoft.com>
-
- * tools/make_mdkinst_stage2: instead of removing modules.cz-2.2*, remove
- every modules.cz except the
- biggest one
-
- * install_steps.pm, fs.pm, install2.pm: create install_any::write_fstab
- and use it
-
- * install_any.pm: add write_fstab
- create install_any::write_fstab and use it
-
-2001/04/06 yduret
-
- * bootlook.pm: minor fix
-
- * standalone/drakgw: recoded a embedded && gtk mode
-
-2001/04/05 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (fs_options): created (gets codepage and iocharset)
-
- * common.pm (if_): better logging of the error
-
-2001/04/06 Pixel <pixel@mandrakesoft.com>
-
- * tools/make_mdkinst_stage2: instead of removing modules.cz-2.2*, remove
- every modules.cz except the
- biggest one
-
- * install_steps.pm, fs.pm, install2.pm: create install_any::write_fstab
- and use it
-
- * install_any.pm: add write_fstab
- create install_any::write_fstab and use it
-
-2001/04/05 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakboot:
- - fix getting result of fsedit::hds
- - cleanup
-
- * lang.pm (fs_options): created (gets codepage and iocharset)
-
- * common.pm (if_): better logging of the error
- (getVarsFromSh): fix for AA="" inspired by chmou the Great (but the
- Great
- what?)
-
- * bootloader.pm (install_grub): small fix
- (install_lilo): fix lilo's dumbness (when lilo warns about not the first
- drive, it usually fails)
-
- * diskdrake.pm (More): created, asks for supermount, rescue pt, reload.
-
- * install_steps_interactive.pm (addUser): default autologin to first user
- in beginner
-
-2001/04/05 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (autologin): fix
- ask for autologin
-
- * install_steps_interactive.pm: ask for autologin
- (generateAutoInstFloppy): do not use $o->{pcmcia} to know if pcmcia.img
- was used. Better have a look at /proc/cmdline
-
- * bootloader.pm (install_lilo): fix lilo's dumbness (when lilo warns about
- not the first drive, it usually fails)
-
- * pkgs.pm, share/rpmsrate:
- - s/PCI/HW/
- - add rio500
-
- * install_any.pm (kernelVersion): fix enormous stupid typo
-
- * common.pm (getVarsFromSh): fix for AA="" inspired by chmou the Great
- (but the Great
- what?)
-
- * install_steps.pm (exitInstall): oups, report_bug is no more in
- commands::
-
- * diskdrake.pm (More): created, asks for supermount, rescue pt, reload.
-
-2001/04/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (choosePackagesTree): invert the meaning of 'Show
- automatically selected
- packages' to go along with the new description
-
- * Xconfigurator.pm (write_XF86Config): try to have $_ interpreted
- (otherwise you get things like ``InputDevice "Stylus$_" "AlwaysCore"'')
-
- * install_any.pm (kernelVersion): fix enormous stupid typo
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
- * install_steps.pm (exitInstall): oups, report_bug is no more in
- commands::
- (configureXBefore): fix the xkb verification (was broken for things like
- ``de(nodeadkeys)'')
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
- * any.pm: ask for autologin
-
- * fs.pm (format_reiserfs): quietly format reiserfs
-
- * commands.pm:
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
- * install_steps_interactive.pm: ask for autologin
- (generateAutoInstFloppy): do not use $o->{pcmcia} to know if pcmcia.img
- was used. Better have a look at /proc/cmdline
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
- * share/rpmsrate:
- - add ldetect
- - the default Aurora chose is the categorizing one
-
-2001/04/05 siegel
-
- * share/po/de.po: fixed typo
-
-2001/04/05 yduret
-
- * bootlook.pm: fix pablo mess
- install autolgin just if we want to autolog :)
-
-2001/04/05 dam's <damien@mandrakesoft.com>
-
- * ChangeLog, bootloader.pm: readded passwd. Must verify that it's secure
- vs msec.
-
- * my_gtk.pm: added gtksize
-
-2001/04/05 fcrozat
-
- * share/rpmsrate: No longer propose nautilus-mozilla (required by
- nautilus)
- propose nautilus-trilobite (for Eazel services)
-
-2001/04/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (choosePackagesTree): invert the meaning of 'Show
- automatically selected
- packages' to go along with the new description
-
- * commands.pm, install_steps_interactive.pm, install_any.pm:
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
- * fs.pm (format_reiserfs): quietly format reiserfs
-
- * Xconfigurator.pm (write_XF86Config): try to have $_ interpreted
- (otherwise you get things like ``InputDevice "Stylus$_" "AlwaysCore"'')
-
- * share/rpmsrate:
- - add ldetect
- - the default Aurora chose is the categorizing one
-
- * install_steps.pm (configureXBefore): fix the xkb verification (was
- broken for things like ``de(nodeadkeys)'')
- - move report_bug in install_any
- - g_auto_install generates the auto_inst.cfg string without output'ing
- it
-
-2001/04/05 siegel
-
- * share/po/de.po: fixed typo
-
-2001/04/05 yduret
-
- * bootlook.pm: fix pablo mess
- install autolgin just if we want to autolog :)
-
-2001/04/04 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: added SCANNER and PHOTO groups
-
-2001/04/04 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: make sure to insmod parport_probe alone as it is not
- available in 2.4 kernel and
- this this not a problem (silent error).
- added complete callback to check queue name under cups does contains
- only letters, numerics or underscore.
-
- * install_steps_interactive.pm: fixed printer description in summary.
-
- * install2.pm: added selectPackagesToUpgrade the first time choosePackages
- is called.
-
- * Xconfigurator.pm: removed limitation to 24 bits for SiS card, make sure
- to remove 32 bits depth
- for such card.
-
- * detect_devices.pm: fixed parport probe for printer under 2.4 kernel.
-
- * diskdrake.pm: fixed adding 1 to size for resize2fs, causing a corruption
- some times.
-
- * printer.pm: added die on error of lpadmin.
-
- * install_any.pm: fixed multiple wait message (looking+finding packages)
-
-2001/04/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po, share/po/az.po: Updated Azeri and Slovak files
-
-2001/04/04 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (tv): add ultracam & usbvideo
- (@skip_modules_on_stage1): kaweth and pegasus doesn't work on stage1, so
- skip them
- (@skip_modules_on_stage1): kaweth and pegasus doesn't work on stage1, so
- skip them
-
- * install_any.pm (kernelVersion): cleanup
-
-2001/04/04 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_any.pm: kernelVersion mods for PPC
-
-2001/04/04 daouda
-
- * share/rpmsrate: add gatos for ati tv card .
-
-2001/04/04 Frederic Lepied <flepied@mandrakesoft.com>
-
- * share/rpmsrate: added SCANNER and PHOTO groups
-
-2001/04/04 François Pons <fpons@mandrakesoft.com>
-
- * live_install: unset locale environment for safety
-
- * detect_devices.pm: added missing LD_LOADER reference for /bin/dmesg
- (needed for live upgrade so
- that error message are not printed)
-
- * diskdrake.pm: fixed adding 1 to size for resize2fs, causing a corruption
- some times.
-
- * install_steps_gtk.pm: fixed to use SHARE_PATH instead of /usr/share
-
- * any.pm, netconnect.pm: use SHARE_PATH instead of /usr/share
-
- * install2.pm: added selectPackagesToUpgrade the first time choosePackages
- is called.
-
- * install_any.pm: fixed multiple wait message (looking+finding packages)
-
-2001/04/04 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (setPackages): better handling for tv, photo and scanner
-
- * modules.pm (@skip_modules_on_stage1): kaweth and pegasus doesn't work on
- stage1, so skip them
- - add photo, tv and scanner
- - add pegasus and kaweth modules
-
-2001/04/04 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: typo
-
-2001/04/04 daouda
-
- * share/rpmsrate: add gatos for ati tv card .
- reput klyx but in lower weight (2)
- removed klyx from rpmsrate (bad idea according to pixel )
- add klyx in install "Office KDE"
-
-2001/04/04 François Pons <fpons@mandrakesoft.com>
-
- * live_install: unset locale environment for safety
-
- * detect_devices.pm: added missing LD_LOADER reference for /bin/dmesg
- (needed for live upgrade so
- that error message are not printed)
-
- * install_steps_gtk.pm: fixed to use SHARE_PATH instead of /usr/share
-
- * any.pm, netconnect.pm: use SHARE_PATH instead of /usr/share
-
- * install2.pm: added selectPackagesToUpgrade the first time choosePackages
- is called.
-
- * install_steps.pm: disable frame buffer for Matrox cards.
-
- * install_any.pm: fixed multiple wait message (looking+finding packages)
-
-2001/04/04 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (setPackages): better handling for tv, photo and scanner
-
- * modules.pm (@skip_modules_on_stage1): kaweth and pegasus doesn't work on
- stage1, so skip them
- - add photo, tv and scanner
- - add pegasus and kaweth modules
-
- * share/compssUsers: remove TV (it is a hardware flag)
-
-2001/04/03 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: keep mount point configuration trhough multi-passes of
- diskdrake and others.
-
- * Xconfigurator.pm: prefer XF3 for SiS card.
-
-2001/04/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sr.po, share/po/sp.po, share/po/ko.po: Updated Korean file
-
-2001/04/03 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: do not use isSpecial which should only be used on
- partitions
- (main): do not have loopback pseudo hd in hds out of diskdrake
-
- * modules.pm (load_raw): add the require install_any
-
- * share/rpmsrate: restore Aurora (i really don't understand what i've done
- with flag AURORA a month ago) to a simple behaviour
-
- * install_steps_interactive.pm (choosePackages): do not make a special
- case for upgrades (was: select the
- min size, which was on contradiction with profile selection)
-
- * fs.pm (real_format_part): give "-v 1" to mkreiserfs if kernel is 2.2
-
- * standalone/mousedrake: fix horrible error (using an undefined $o)
-
- * share/list: add back mkreiserfs
-
- * standalone/XFdrake: don't start xfs if skiptest
-
- * fsedit.pm (get_fstab): restore loopback::loopbacks because hds contains
- only true
- hard drives (not pseudo one like raid, loopback and lvm)
-
- * bootloader.pm (suggest): trap strange error. Should not really fix the
- pb
-
- * install_steps.pm (setupBootloaderBefore): nicer Aurora presence
- detetection
-
- * lang.pm (charset): fix for chineese which have charset in the name
-
- * Makefile: no more special case for mkreiserfs (can be done via -v 1)
-
- * install_steps_gtk.pm (choosePackagesTree): better name than "Automatic
- dependencies"
-
- * install_any.pm (setPackages): don't preselect profiles in upgrade
- (setPackages): handle Flag:<theflag>
- (setPackages): install kernel22 if install kernel is a 2.2
-
- * lvm.pm (get_lvs): remove the setting of flag isFormatted which was wrong
- (didn't
- propose to format it)
- protect the loading of module lvm-mod
-
-2001/04/03 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_steps_interactive.pm, mouse.pm: PPC keyboard/mouse button
- emulation
-
-2001/04/03 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: a lot of bugfixs
- corrected bad flag test
- corrected bad priority
-
- * standalone/draknet: typo
- bug fixes
- removed debugging messages and Data::Dumper
- corrected bad flag test
-
-2001/04/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po, share/po/DrakX.pot: Updated Vietnamese file
-
-2001/04/03 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (load_raw): add the require install_any
-
- * share/rpmsrate: restore Aurora (i really don't understand what i've done
- with flag AURORA a month ago) to a simple behaviour
-
- * lang.pm (charset): fix for chineese which have charset in the name
-
- * install_steps.pm (setupBootloaderBefore): nicer Aurora presence
- detetection
-
- * Makefile: no more special case for mkreiserfs (can be done via -v 1)
-
- * install_steps_interactive.pm (choosePackages): do not make a special
- case for upgrades (was: select the
- min size, which was on contradiction with profile selection)
-
- * fs.pm (real_format_part): give "-v 1" to mkreiserfs if kernel is 2.2
-
- * install_steps_gtk.pm (choosePackagesTree): better name than "Automatic
- dependencies"
-
- * install_any.pm (setPackages): don't preselect profiles in upgrade
- (setPackages): handle Flag:<theflag>
- (setPackages): install kernel22 if install kernel is a 2.2
-
- * share/list: add back mkreiserfs
-
- * standalone/XFdrake: don't start xfs if skiptest
-
- * lvm.pm (get_lvs): remove the setting of flag isFormatted which was wrong
- (didn't
- propose to format it)
- protect the loading of module lvm-mod
-
-2001/04/02 dam's <damien@mandrakesoft.com>
-
- * modules.pm: corrected petite's mistake
-
- * netconnect.pm: protecting against non existent files
-
-2001/04/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/make_boot_img, mdk-stage1/.cvsignore: fix
- comply to all.kernels policy
-
- * tools/make_mdkinst_stage2: fix remove of alternate cz modules
-
-2001/04/02 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/cs.po: Updated Czech file
-
- * lang.pm: codepage option to mount requires only numeric values, eg "437"
- and not "cp437"
- Changed accordingly in the lists
-
- * share/rpmsrate: Install latin2 Postscript fonts for latin2 locales,
- install fonts-ttf-thai for Thai locale
-
-2001/04/02 Pixel <pixel@mandrakesoft.com>
-
- * c/Makefile: small cleanup for pcmcia_probe.c
-
- * tools/Makefile (install): s/-r/-rf/
-
- * install_any.pm (setPackages): s/reiserfs-utils/reiserfsprogs/
- (setPackages): install imwheel if nbuttons > 3
-
- * c/Makefile.PL: small cleanup for pcmcia_probe.c
- don't use pcmcia_probe.o from stage1, better compile it here, otherwise
- perl-install require mdk-stage1 to do compiled => circular dependency
-
- * Makefile: ignore dams or at least dams errors
-
- * c/.cvsignore: add pcmcia_probe.c
-
-2001/04/02 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/make_rescue_img: fix pixelization (aka take advantage of
- all.kernels/.main)
-
-2001/04/02 Pixel <pixel@mandrakesoft.com>
-
- * tools/Makefile (install): s/-r/-rf/
-
-2001/03/30 Pixel <pixel@mandrakesoft.com>
-
- * tools/Makefile (install): fix the globbing for packdrake.pm and
- rpmtools.pm
-
-2001/03/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/drvinst: test for "Card:" and not install, some videoboards are
- not reported as DISPLAY_VGA :-(
-
- * tools/make_mdkinst_stage2, docs/HACKING, rescue/make_rescue_img,
- mdk-stage1/pci-resource/update-pci-ids.pl, docs/README: support more
- than one boot kernel :-)
-
- * rescue/list.i386: add reiserfsck
-
-2001/03/29 dam's <damien@mandrakesoft.com>
-
- * tinyfirewall.pm: bad message at the end if kernel2.4
-
- * netconnect.pm: added missing Device in Ethx when saving/loading
-
- * standalone/draknet: translation
-
-2001/03/28 dam's <damien@mandrakesoft.com>
-
- * standalone/tinyfirewall: typo
-
- * interactive_gtk.pm: corrected pixel shit if embedded
-
- * standalone/draksec: embedded mode
-
- * standalone/draknet: corrected gtkpng in gtkwpm
- added translation
-
- * bootlook.pm: cute button box
-
- * tinyfirewall.pm: workaround to make it work if kernel 2.4
-
-2001/03/28 fcrozat
-
- * share/rpmsrate: gmc is back in standard GNOME install, for people with
- existing home
-
-2001/03/28 François Pons <fpons@mandrakesoft.com>
-
- * standalone/mousedrake, mouse.pm, standalone/XFdrake: fixed for
- standalone XFdrake and mousedrake (multi-mouse and
- correct probe (USB)).
-
- * Xconfig.pm: re-fix mouse fix.
- fixed wrong mouse probe.
- fixed for standalone XFdrake and mousedrake (multi-mouse and
- correct probe (USB)).
-
- * Xconfigurator.pm: restore multi mouse support for XF3.
-
-2001/03/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/ca.po, share/po/tr.po: Updated Catalan, Danish,
- Finnish, Croatian and Turkish files
-
- * share/po/sk.po, share/po/ko.po: Updated Finnish, Korean and Slovak files
-
- * share/po/az.po: Updated Azeri and Danish files
-
- * share/po/fi.po: Updated Catalan, Danish, Finnish, Croatian and Turkish
- files
- Updated Finnish, Korean and Slovak files
-
- * share/po/da.po: Updated Catalan, Danish, Finnish, Croatian and Turkish
- files
- Updated Azeri and Danish files
-
-2001/03/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: add fstab in the log
-
- * interactive_gtk.pm: better default_size setting
-
- * commands.pm: fix typo
- add fstab in the log
-
- * install_gtk.pm (test_mouse): ensure the test mouse is not too big
-
-2001/03/28 warly
-
- * share/rpmsrate: add some commercial apps
-
-2001/03/27 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: added kill USR2 before main
-
- * share/help.png: changed help button
-
- * share/help.xpm: changed help
-
- * tinyfirewall.pm: workaround to make it xork.
-
-2001/03/27 François Pons <fpons@mandrakesoft.com>
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: update boot image.
-
- * Xconfigurator.pm: fixed mouse support for XF3, only one mouse supported
- currently.
-
-2001/03/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/nfsmount.c: force 8192 bytes for nfs transfers
-
-2001/03/27 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/i18n_compssUsers, share/po/vi.po, share/po/fi.po,
- share/po/br.po, share/po/DrakX.pot, share/po/ko.po, share/po/ja.po,
- share/po/wa.po, share/po/de.po, share/po/id.po: Updated Vietnamese,
- Indonesian, Japanese, Korean and Walloon files
- changed i18n_compssUsers to make "path" i18n'able
-
-2001/03/27 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: warnAboutNaughtyServers
- (setPackages): default profiles selection to GNOME, KDE, CONFIG
-
- * install_steps_interactive.pm: warnAboutNaughtyServers
- (summary): fix displaying of printer configured
-
- * pkgs.pm: warnAboutNaughtyServers
-
- * install_steps_gtk.pm (installPackages): catch the no png file exception
- (in case warly is dumb again)
-
- * my_gtk.pm: try to fix displaying in draksec
- (create_box_with_title): save the box_size in field "box_size"
-
- * install2.pm, any.pm: remove use of Bastille. get back to the good state
- we had :)
-
- * interactive_gtk.pm: try to fix displaying in draksec
-
- * share/rpmsrate: move back Bastille-Curses-module to CONFIG
- - cleanup LOCALES"zh_*": when there is LOCALES"zh_*", there is
- LOCALES"zh"
- - raise WindowMaker
- - add xfce
- - am-utils is a server
- - raise some stuff in CONFIG to have stuff there
- - remove drakxtools from CONFIG (DrakConf requires drakxtools)
- - DrakConf from 5 to 4
-
- * lang.pm (langsLANGUAGE): give the list of languages
-
-2001/03/27 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_steps_interactive.pm: change verbage on bootloader warning
-
-2001/03/27 siegel
-
- * share/po/de.po: minor typo-fixes
-
-2001/03/27 dam's <damien@mandrakesoft.com>
-
- * share/help.png: changed help button
-
- * share/help.xpm: changed help
-
-2001/03/27 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm, pkgs.pm: fixed too early erasing of old rpmlib db. now
- postponed at end of install
- and only if rpm-4.0 or above has been installed.
-
- * mdk-stage1/init-data/msgboot-graphicallogo.img.bz2: update boot image.
-
- * Xconfigurator_consts.pm, mouse.pm, Xconfigurator.pm, Xconfig.pm: added
- support for two mice (laptop). The second mice is generally PS/2 as
- probe can says it is present.
-
-2001/03/27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/nfsmount.c: force 8192 bytes for nfs transfers
-
-2001/03/27 Pixel <pixel@mandrakesoft.com>
-
- * any.pm, install2.pm: remove use of Bastille. get back to the good state
- we had :)
-
- * install_any.pm: warnAboutNaughtyServers
- (setPackages): default profiles selection to GNOME, KDE, CONFIG
-
- * share/rpmsrate: move back Bastille-Curses-module to CONFIG
- - cleanup LOCALES"zh_*": when there is LOCALES"zh_*", there is
- LOCALES"zh"
- - raise WindowMaker
- - add xfce
- - am-utils is a server
- - raise some stuff in CONFIG to have stuff there
- - remove drakxtools from CONFIG (DrakConf requires drakxtools)
- - DrakConf from 5 to 4
-
- * install_steps_interactive.pm: warnAboutNaughtyServers
- (summary): fix displaying of printer configured
-
- * lang.pm (langsLANGUAGE): give the list of languages
-
- * pkgs.pm: warnAboutNaughtyServers
-
- * install_steps_gtk.pm (installPackages): catch the no png file exception
- (in case warly is dumb again)
-
-2001/03/27 siegel
-
- * share/po/i18n_compssUsers: i18n group names
-
- * share/po/de.po: minor typo-fixes
- new german version
-
-2001/03/26 daouda
-
- * share/rpmsrate: add mandrake_desk and rootfiles to SYSTEM (rpmsrate)
-
-2001/03/26 fcrozat
-
- * share/rpmsrate: Install xscreensaver when installing GNOME
-
-2001/03/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: first attempt at pixelization of code (till's cups
- patches)
-
-2001/03/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/hr.po, share/po/wa.po: Updated Croatian, vietnamese and Walloon
- files
-
- * share/po/vi.po: Updated Croatian, vietnamese and Walloon files
- Updated Portuguese, Swedish and Thai files
-
- * share/po/pt.po, share/po/th.po, share/po/es.po, share/po/de.po,
- share/po/sv.po: Updated Portuguese, Swedish and Thai files
-
-2001/03/25 Pixel <pixel@mandrakesoft.com>
-
- * http.pm (getFile): verify the return value of the server. If not 200
- (aka Ok),
- return undef
-
- * install_steps_interactive.pm (configurePrinter): add Mesa-common for xpp
- and libqtcups2 for kups in
- pkg_install_if_requires_satisfied
-
-2001/03/25 siegel
-
- * share/po/de.po: new german version
-
-2001/03/25 fabman
-
- * share/po/es.po: updated spanish .po file
-
-2001/03/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po: Updated Korean file
-
- * share/po/sv.po: Updated Swedish file
-
-2001/03/25 Pixel <pixel@mandrakesoft.com>
-
- * http.pm (getFile): verify the return value of the server. If not 200
- (aka Ok),
- return undef
-
- * install_steps_interactive.pm (configurePrinter): add Mesa-common for xpp
- and libqtcups2 for kups in
- pkg_install_if_requires_satisfied
-
- * any.pm (ask_users): fix dead-loop
-
- * bootloader.pm (suggest): add entry for nt
-
-2001/03/25 siegel
-
- * share/po/de.po: new german version
-
-2001/03/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/vi.po: Updated Vietnamese file
-
-2001/03/24 Pixel <pixel@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: remove the "use common" which
- is unneeded (and "member" of merge2pcitable
- was clashing)
-
- * any.pm (ask_users): when "Done" is pressed, do "Accept User" if a user
- is given.
-
- * install_steps.pm (addUser): disable_user_view (in kdm/gdm) if no users
-
- * install_any.pm (disable_user_view): created, takes care of gdm too
- (taken from msec)
-
- * mouse.pm (detect): fix francois... uh, no too hard. easier to fix
- francois's bugs ;pp
-
- * timezone.pm (%l2t): fix for fuzzyChoice
-
- * share/keyboards.tar.bz2:
- - readding with -kb
- - fixing permissions on xmodmap.kr
- remove before adding again with -kb
-
- * modules.pm: have natsemi in network.img
-
-2001/03/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated Azeri file
-
-2001/03/24 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm (detect): fix francois... uh, no too hard. easier to fix
- francois's bugs ;pp
-
- * timezone.pm (%l2t): fix for fuzzyChoice
-
- * modules.pm:
- - add missing modules (now in sync with pcitable)
- - add 'media' class
- - cleanup
-
-2001/03/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Updated Azeri file
-
-2001/03/24 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (copy_advertising): fix escaping $f causing perl to
- segfault :-(
- (copy_advertising): handle i18n'ed advertising
-
- * pkgs.pm: cleanup
-
- * modules.pm:
- - add missing modules (now in sync with pcitable)
- - add 'media' class
- - cleanup
-
-2001/03/24 dam's <damien@mandrakesoft.com>
-
- * tinyfirewall.pm: corrected bad exited. reincorporated some ugly code,
- need fixing
-
-2001/03/24 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (copy_advertising): handle i18n'ed advertising
-
- * modules.pm (read_stage1_conf): cleanup parport stuff obsolote in kernel
- 2.4
-
-2001/03/23 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed screen id for Device to be present whenever the
- same BusID is used.
- added multiple tablet support (wacom), moved usb probe for mouse and
- tablet
- at the beginning.
-
- * printerdrake.pm: Do not ask to configure a printer if standalone,
- previously only for embended.
-
- * Xconfig.pm: fixed typo for wacom.
- added multiple tablet support (wacom), moved usb probe for mouse and
- tablet
- at the beginning.
-
- * mouse.pm, detect_devices.pm, install_steps_gtk.pm, install2.pm: added
- multiple tablet support (wacom), moved usb probe for mouse and tablet
- at the beginning.
-
-2001/03/23 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_listf_no_check): fix the fix fix fix
- (ask_from_listf_no_check): fix the fix fix
-
- * common.pm (formatError): created
-
- * network.pm (configureNetworkIntf): gray "IP address" and "Netmask" in
- DHCP/BOOTP
-
- * diskdrake.pm (try): format the error (no more "at line ...")
- (Add2LVM): "new" was not i18n'ed
-
- * install_steps_interactive.pm (exitInstall): no "cancel" button
-
- * partition_table.pm: add Empty to bad_types
-
- * fsedit.pm (change_type): When changing a partition type from ext2fs to
- Linux RAID
- (or LVM), the mount point should be removed.
-
-2001/03/23 siegel
-
- * share/po/de.po: new german version
-
-2001/03/23 dam's <damien@mandrakesoft.com>
-
- * tinyfirewall.pm: corrected bad translation
- correctedd typo
- updated
- code cleaning
- tinyfirewall now works.
-
- * Makefile.config: added tinyfirewall
-
- * any.pm, mouse.pm: added /dev/modem in modem list selection
-
- * standalone/drakxconf: added tinyfirewall entry
-
- * standalone/tinyfirewall: added update code
- updated wrapper to launch tinyfirewall in embedded mode
-
- * netconnect.pm: added /dev/modem in modem list selection
- netconnect doesn't write the file 1
-
-2001/03/23 fcrozat
-
- * share/rpmsrate: nautilus-mozilla and xalf are installed by default in
- GNOME
- gmc is not installed by default in GNOME
- gabber gaim are moved to instant messaging
- gcombust in moved to GNOME CD burner
- gtm is installed by GNOME/File transfer
- mozilla is installed by default as www browser
- galeon is installed by default as www browser for GNOME
-
-2001/03/23 François Pons <fpons@mandrakesoft.com>
-
- * tools/syncrpms: added size-stamp test to copy identical file in version,
- release.
-
- * Xconfig.pm: fixed typo for wacom.
- added multiple tablet support (wacom), moved usb probe for mouse and
- tablet
- at the beginning.
-
- * Xconfigurator.pm: added multiple tablet support (wacom), moved usb probe
- for mouse and tablet
- at the beginning.
- fixed wrong usage of Screen keyword in Device section, should be present
- and
- reseted for any multi head card with only one BusID.
-
- * mouse.pm, detect_devices.pm, install_steps_gtk.pm, install2.pm: added
- multiple tablet support (wacom), moved usb probe for mouse and tablet
- at the beginning.
-
-2001/03/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po, share/po/de.po, share/po/fi.po: Added Vietnamese file
- Updated Finnish file
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/et.po, share/po/tr.po, share/po/eu.po, share/po/az.po,
- share/po/ru.po, share/po/pt_BR.po, share/po/hr.po, share/po/ko.po,
- share/po/cy.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/vi.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: Added Vietnamese file
-
-2001/03/23 Pixel <pixel@mandrakesoft.com>
-
- * any.pm: ifix the dams stuff
-
- * install_steps_interactive.pm (exitInstall): no "cancel" button
-
- * share/po/i18n_compssUsers: fix for better compliance with po format
-
- * netconnect.pm: ifix the dams stuff
- cleanup and enable gzip'ed isdn.db
-
- * Makefile: gzip ldetect-lst files
-
- * modules.pm: add i810_audio (still need a script to add missing one and
- keep in sync)
-
- * bootloader.pm (suggest_floppy): don't add an entry for non-fd0 drives
-
- * interactive.pm (ask_from_listf_no_check): fix the fix fix fix
- (ask_from_listf_no_check): fix the fix fix
- (ask_from_listf_no_check): fix the bad fix
-
- * common.pm (formatError): created
- (openFileMaybeCompressed, catMaybeCompressed): added
- (getVarsFromSh): take care of comments
-
- * network.pm (configureNetworkIntf): gray "IP address" and "Netmask" in
- DHCP/BOOTP
-
- * partition_table.pm: add Empty to bad_types
-
- * mouse.pm (detect): never probe psaux (workaround for kernel/xfree bug)
-
- * fsedit.pm (change_type): When changing a partition type from ext2fs to
- Linux RAID
- (or LVM), the mount point should be removed.
-
- * detect_devices.pm (isUSBFDUDrive, usbfdus): removed, doesn't scale
- (isFloppyOrHD): floppy type is 'fd', not 'floppy'
- (stringlist): nicer (a la new lspcidrake)
-
- * Xconfigurator.pm: enable use of gzip'ed Cards+, CardsNames and
- MonitorsDB
-
- * diskdrake.pm (try): format the error (no more "at line ...")
- (Add2LVM): "new" was not i18n'ed
-
-2001/03/23 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mouse.pm, bootloader.pm: mods to create/move image, to /export for PPC,
- use vmlinux for PPC
- prepend of_dev to initrd stanza in yaboot.conf
- add 1-button mouse for PPC
-
-2001/03/23 siegel
-
- * share/po/de.po: new german version
-
-2001/03/22 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * tools/i386/netboot/stage1.rtl8139, tools/i386/netboot/stage2.rtl8139:
- Add 8139 grub stage.
-
-2001/03/22 dam's <damien@mandrakesoft.com>
-
- * bootlook.pm: corrected mapn
-
- * standalone/draknet: removed use Data::Dumper
-
- * netconnect.pm: removed mail informat oin
- comment update
-
- * tinyfirewall.pm: removed use Data::Dumper
- working on tinyfirewall
-
-2001/03/22 fabman
-
- * share/po/es.po: changed "swap" for "intercambio" in the spanish .po
- files
- updated DrakX, menudrake and urpmi es.po files
-
-2001/03/22 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed wrong access to undefined value promoted to
- empty array reference.
-
-2001/03/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/probing.c, mdk-stage1/tools.h:
- - fix detection of more than 3 scsi attached devices
- - cleaner code for cmp of ptr against static strings
-
-2001/03/22 Pixel <pixel@mandrakesoft.com>
-
- * standalone/mousedrake: remove test ugliness of dams
-
- * c/Makefile.PL: no pcmcia_probe in drakxtools
-
- * modules.pm (load_thiskind): indent as it should be
-
- * install_steps_interactive.pm (generateAutoInstFloppy): fix the message
- which was uptodate only for
- sparc :-(
-
- * Xconfigurator.pm: no need for "use Data::Dumper;"
-
-2001/03/22 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * modules.pm: no imm,ppa PPC, scan mesh,mac53c94 scsi only, pmac should
- have been mace
-
-2001/03/22 yduret
-
- * bootlook.pm: mapn works tx dams
- nmap
- added mapn fun to reduce code.. testing it
- added install of rpm
- xpm png files
-
- * pixmaps/hori.png, pixmaps/gmon.png, pixmaps/tradi.png, pixmaps/hori.xpm,
- pixmaps/verti.png, pixmaps/gmon.xpm, pixmaps/tradi.xpm,
- pixmaps/verti.xpm: convert xpm to png
-
-2001/03/21 dam's <damien@mandrakesoft.com>
-
- * standalone/tinyfirewall, tinyfirewall.pm: new tinyfirewall conf tool
-
- * netconnect.pm: corrected /etc/sysconfig/network-scripts/net_up.* bug
-
-2001/03/21 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm: added pci id reference.
-
- * c/stuff.xs.pm: added support for pci id extraction.
-
- * Xconfigurator.pm: fixed wrong XFree4 version reference.
- fixed null string in monitor identifier.
- added multi-head support in XFdrake.
-
-2001/03/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: honour embedded mode
-
- * share/compssUsers: move NETWORKING_FILE (contains stuff for nfs
- mounting..) from Internet
- Station to Network Computer
-
-2001/03/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/pt.po, share/po/DrakX.pot, share/po/es.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/de.po,
- share/po/et.po, share/po/tr.po, share/po/eu.po, share/po/ru.po,
- share/po/pt_BR.po, share/po/hr.po, share/po/ko.po, share/po/cy.po,
- share/po/nl.po, share/po/ja.po, share/po/wa.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/lt.po, share/po/sl.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/da.po, share/po/cs.po, share/po/af.po: Updated
- Croatian and Serbian files
-
- * share/po/sp.po, share/po/sr.po: Updated Serbian files
- Updated Croatian and Serbian files
-
- * share/po/az.po: Updated Azeri file
- Updated Croatian and Serbian files
-
- * share/po/sk.po: Updated Azeri and Slovak files
- Updated Croatian and Serbian files
-
- * lang.pm: Added fields to charsets table holding info for mount
- (iocharset and
- codepage mount options)
-
-2001/03/21 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (g_default_packages): nice warning if mount in vfat fails
-
- * share/rpmsrate: move webmin to CONFIG
- remove ipchains and iptables, raise gfcc
-
- * docs/README: add cvs howto
-
- * install_steps_interactive.pm (summary): fix
-
- * detect_devices.pm: old code
-
- * bootloader.pm (install_lilo): ensure labels don't contain spaces, lilo
- doesn't like them
- (add_kernel): cleanup
- (suggest): make it work with kernel22-secure and no kernel22
-
- * modules.pm (when_load): move the alias sound to when_load, don't check
- ppc as it
- could be used for non-ppc
- (load_thiskind): fix pb causing imm,ppa,usb-storage to be tested for
- every
- load_thiskind, not only scsi one
-
- * c/stuff.xs.pm (from_utf8): as pablo said...
-
-2001/03/21 siegel
-
- * share/po/de.po: new german version
- new german version
-
-2001/03/20 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (@drivers_by_category): if_ization
- (load_thiskind): cleanup
-
-2001/03/21 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (add_kernel): cleanup
- (suggest): make it work with kernel22-secure and no kernel22
-
- * share/rpmsrate: remove ipchains and iptables, raise gfcc
-
-2001/03/20 dam's <damien@mandrakesoft.com>
-
- * interactive.pm: no wizard if warning
-
-2001/03/20 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: fix pcmcia functions only on x86
- - create install_any::unselectMostPackages
- - use it instead of pkgs::unselectAllPackages (otherwise
- default_packages ends up non-selected)
-
- * modules.pm (@drivers_by_category): if_ization
- (load_thiskind): cleanup
-
- * any.pm, install2.pm, share/rpmsrate: use bastille backend
-
- * c/stuff.xs.pm, c/Makefile.PL: fix pcmcia functions only on x86
-
- * install_steps.pm, install_any.pm:
- - create install_any::unselectMostPackages
- - use it instead of pkgs::unselectAllPackages (otherwise
- default_packages ends up non-selected)
-
-2001/03/20 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * modules.pm, install_steps_interactive.pm, any.pm: make_boot_img: add
- routine for - PPC
- any.pm: double "Append" entry in expert mode for yaboot.conf - PPC
- install_steps_interactive: setup dmasound - PPC
- modules.pm: load Mac hardware modules - PPC
-
-2001/03/20 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bug in reading resolv.conf, and changed chmod
- for net_cnx_*
-
- * interactive.pm: no wizard if warning
-
- * standalone/draknet: added update after {dis}connecting
-
-2001/03/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * diskdrake.pm: fix formatting of raid
-
-2001/03/20 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: use bastille backend
- - add nautilus
-
- * install_steps_interactive.pm: fix pcmcia functions only on x86
- - create install_any::unselectMostPackages
- - use it instead of pkgs::unselectAllPackages (otherwise
- default_packages ends up non-selected)
- (setupSCSI): don't pcmcia_probe if testing
- - tellAboutProprietaryModules moved to setupSCSI
- - miscellaneous step re-enabled, called Security
- - pcmcia_probe moved to setupSCSI, skipped in noauto
-
- * any.pm: use bastille backend
-
- * install2.pm: use bastille backend
- - tellAboutProprietaryModules moved to setupSCSI
- - miscellaneous step re-enabled, called Security
- - pcmcia_probe moved to setupSCSI, skipped in noauto
- have pcmcia_probe in stage2 (for non pcmcia.img, stage1 doesn't give the
- parameter any more)
-
- * netconnect.pm (modem_detect_backend): cleanup
-
- * c/stuff.xs.pm, c/Makefile.PL: fix pcmcia functions only on x86
- have pcmcia_probe in stage2 (for non pcmcia.img, stage1 doesn't give the
- parameter any more)
-
- * Makefile: install cardmgr
-
- * install_any.pm:
- - create install_any::unselectMostPackages
- - use it instead of pkgs::unselectAllPackages (otherwise
- default_packages ends up non-selected)
- (setPackages): install usbd in case of usb
-
- * install_steps.pm:
- - create install_any::unselectMostPackages
- - use it instead of pkgs::unselectAllPackages (otherwise
- default_packages ends up non-selected)
-
-2001/03/20 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * any.pm, netconnect.pm, detect_devices.pm: any.pm: enable module load PPC
- detect_devices.pm: forgot to remove commented code after test
- netconnect.pm: load macserial module for PPC
-
-2001/03/20 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet, netconnect.pm: improved connection windows, and
- loading / saving of /etc/sysconfig/network-scripot/netècnx*
-
-2001/03/20 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate:
- - add nautilus
-
- * install_any.pm (setPackages): install usbd in case of usb
-
- * Makefile: install cardmgr
-
-2001/03/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * fsedit.pm: fix loopback appearing twice in format partition
-
- * diskdrake.pm: fix "loopback" name of loopback tab in diskdrake
-
-2001/03/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po: updated korean file
- Updated po files
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: Updated po files
-
-2001/03/19 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (computeGroupSize): fix hacks, better hacks
- (saveCompssUsers): fix
-
- * install_steps_interactive.pm (chooseGroups):
- - make the computed size work
- - unselectAll when a profile is unselected
-
- * interactive_gtk.pm (ask_from_entries_refW): better sizing in case of
- scrolls
-
-2001/03/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mdk-stage1/stage1.c: stage1.c: fix for rescue image PPC
-
-2001/03/19 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: corrected graphical layout for newbies
-
- * netconnect.pm: added net_cnx_{up, down} save
-
-2001/03/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ko.po: updated korean file
- Updated po files
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: Updated po files
-
-2001/03/19 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (computeGroupSize): fix hacks, better hacks
- (saveCompssUsers): fix
-
- * share/rpmsrate:
- - add rxvt-CJK
- - exchange xterm and rxvt
- - move bc from SCIENCES to SYSTEM
-
- * interactive_newt.pm (ask_from_entries_refW):
- - ensure the width is less than $width - 7 (in french and 80x25, the
- treelist was too big)
- - if term is very big, use 10 lines instead of 5
- - if no button is asked, but one in any case otherwise it's buggy
-
- * install_steps_interactive.pm (chooseGroups):
- - make the computed size work
- - unselectAll when a profile is unselected
-
- * interactive.pm (ask_from_listf_no_check): fix fix
- (ask_from_listf_no_check): fix the filtering of exceptions
-
-2001/03/19 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * mdk-stage1/stage1.c: stage1.c: fix for rescue image PPC
-
-2001/03/18 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/lomount.h, mdk-stage1/lomount.c, mdk-stage1/disk.c: fix for
- hd-install when you provide a not valid ISO (cd #2 for example)
-
- * mdk-stage1/frontend.h, mdk-stage1/minilibc.h, mdk-stage1/stage1.h,
- mdk-stage1/log.h: use some help with __attribute__
-
-2001/03/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/tree/etc/rc.sysinit: load sr_mod and sd_mod at startup
-
- * mdk-stage1/Makefile.mkinitrd_helper, mdk-stage1/.cvsignore: sync
-
- * mdk-stage1/stdio-frontend.c: handle left and right arrow keys, in
- editing ask_from_entries in stdio mode
-
- * mdk-stage1/pci-resource/Makefile: do not use marfiles for deps
-
-2001/03/17 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (write_langs): in case of empty %_install_langs, don't write it
-
- * install_steps.pm (pkg_install_if_requires_satisfied): better logging
-
- * share/rpmsrate: add gpm & evolution
-
-2001/03/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/insmod-busybox/utility.c: fix insmod calling realloc(0,0) to
- work with dietlibc
-
- * mdk-stage1/insmod-busybox/Makefile: also build standalone insmod-DIET
- for testing purposes..
-
- * mdk-stage1/mkinitrd_helper/Makefile: bump version to 1.0.1 for new
- mkinitrd package release
-
- * mdk-stage1/stdio-frontend.c: handle left and right arrow keys, in
- editing ask_from_entries in stdio mode
-
-2001/03/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sv.po: updated Swedish file
-
- * share/keyboards.tar.bz2: Added a Korean keyboard, fixed bug in Japanese
- keyboard
-
- * keyboard.pm: Added choice of Korean keyboard
-
-2001/03/17 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (write_langs): in case of empty %_install_langs, don't write it
-
- * install_steps.pm (pkg_install_if_requires_satisfied): better logging
-
- * share/rpmsrate: add gpm & evolution
-
-2001/03/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/Makefile: refine deps
-
- * mdk-stage1/mkinitrd_helper/mkinitrd_helper.c, mdk-stage1/Makefile,
- mdk-stage1/mkinitrd_helper/Makefile: write down mkinitrd_helper
-
- * mdk-stage1/insmod-busybox/insmod.c: force load
-
-2001/03/16 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (setPackages): set flag "TV" when bttv hardware is there
-
- * share/compssUsers, share/rpmsrate: move out TV from VIDEO
-
- * diskdrake.pm (Type): fix the code verifying size >32 for reiserfs
-
- * modules.pm (write_conf): better logging
-
- * c/stuff.xs.pm: add from_utf8
-
- * c/stuff.pm (headerGetEntry): use from_utf8 on group, summary and
- description
-
-2001/03/16 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * tools/ppc/magic, tools/ppc/mkhybrid-1.12b5.4, tools/ppc/convert,
- tools/ppc/yaboot, tools/ppc/mapping: gi/tools/ppc/convert, magic,
- mapping, mkhybrid-1.12b5.4, yaboot - re-add - my bad
- gi/tools/ppc/convert, magic, mapping, mkhybrid-1.12b5.4, yaboot -
- remove/re-add - did not use -kb switch - thx Pixel
-
-2001/03/15 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: SiS card are no more prefered for XF3.
- added standalone support to prefer XF3 or XF4 to
- keep current used server version.
-
- * standalone/XFdrake: remove duplicate begin label.
- take care of existing configuration.
-
-2001/03/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: skip dc395x_trm on stage1
- dc395x_trm is back in 2.4
-
- * share/compssUsers: try to enhance
-
-2001/03/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/az.po: updated Azeri file
-
-2001/03/15 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator_consts.pm, Xconfigurator.pm: andre@node1583e.a2000.nl says
- this is not needed anymore :)
-
-2001/03/15 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * tools/ppc/magic, tools/ppc/convert, tools/ppc/iboot,
- tools/ppc/mkINSTALLCD, tools/ppc/mkhybrid-1.12b5.4, tools/ppc/yaboot,
- tools/ppc/mapping: gi/tools/ppc/convert, magic, mapping, mkINSTALLCD,
- mkhybrid-1.12b5.4, yaboot: create PPC CD
-
- * install_steps_interactive.pm, detect_devices.pm, bootloader.pm:
- bootloader.pm, detect_devices.pm, install_steps_interactive.pm: changed
- temporary file read/write per Pixel
-
- * Xconfigurator.pm: force 1024x768 on Powerbook
-
- * tools/ppc/README: README: README for creating PPC boot CD
-
-2001/03/14 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: changed label + profile before types..
-
-2001/03/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po,
- share/po/i18n_compssUsers, share/po/DrakX.pot, share/po/es.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/Changelog, share/po/sk.po,
- share/po/lt.po, share/po/sl.po, share/po/br.po, share/po/ca.po,
- share/po/gl.po, share/po/lv.po, share/po/uk.po, share/po/eo.po,
- share/po/ro.po, share/po/da.po, share/po/cs.po, share/po/af.po:
- corrected the script and updated po files
-
-2001/03/14 Pixel <pixel@mandrakesoft.com>
-
- * share/compssUsers: keep only one Development entry
-
- * install_steps_gtk.pm, pkgs.pm: fix the compssUsers interpretation
-
- * bootlook.pm: fix for perl2fcalls
-
- * install_steps_interactive.pm (chooseGroups): disable the size display as
- it is wrong (for the beta2)
-
-2001/03/14 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps_gtk.pm,
- partition_table_mac.pm, bootloader.pm: fix bootstrap partition
- creation/tracking
- allow Xpmac to launch in 2 modes based on cmdline
-
-2001/03/14 siegel
-
- * share/po/de.po: new german version
-
-2001/03/14 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: changed label + profile before types..
-
-2001/03/14 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed unselect management of choice, propagate unselection
- correctly to all
- packages requiring unselected package.
-
- * install_any.pm: use LD_LOADER when invoking parshedlist.
-
-2001/03/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po, share/po/nl.po: updated Norwegian file
-
- * share/locales.tar.bz2, share/gconv.tar.bz2, share/list,
- share/fonts.tar.bz2: new fonts and locale files
-
- * share/po/ko.po: Fixed email of Korean translator
- updated Korean file
-
- * install_steps_interactive.pm, install_gtk.pm, lang.pm, keyboard.pm:
- completed language list
- completed language->keyboard guessing list
- aesthetic changes to an English message (removed \n and let gtk+
- do the formatting, it is nicer)
-
- * share/po/az.po: Updated Azeri file
-
-2001/03/14 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: fix the compssUsers interpretation
- (readCompssUsers): change the key of compssUsers, added "label"
- (computeGroupSize): fix bug
- (computeGroupSize): fix logging
-
- * share/gconv.tar.bz2: moved to share/list
-
- * bootlook.pm: fix for perl2fcalls
-
- * share/rpmsrate: CLIENT & SERVER is prohibited
-
- * timezone.pm:
- - add many timezones
- - defaults to GMT
- - verifier added
-
- * install_steps_gtk.pm: fix the compssUsers interpretation
- (choosePackagesTree): fix
-
- * common.pm (bestMatchSentence, bestMatchSentence2): in wantarray, return
- the number
- of matched words/characters
-
- * share/compssUsers: keep only one Development entry
- CLIENT & SERVER is prohibited
-
- * install_steps_interactive.pm (chooseGroups): disable the size display as
- it is wrong (for the beta2)
- (chooseGroups): add path for seperating groups, use "label" for the
- group text
-
- * Makefile: remove gconv
-
-2001/03/13 siegel
-
- * share/po/de.po: Fixed typos.
-
-2001/03/13 siegel
-
- * share/po/de.po: Fixed typos.
-
-2001/03/13 dam's <damien@mandrakesoft.com>
-
- * share/help.png: changed
-
-2001/03/13 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm, install_steps_gtk.pm: compss is deprecated. use compssUsers
- for the tree
-
- * standalone/drakgw: pixelization
-
- * share/rpmsrate: HDF can't be at the beginning of the line or it will be
- taken as a flag
- moved icewm to SYSTEM with !KDE !GNOME
-
- * pkgs.pm: compss is deprecated. use compssUsers for the tree
- (readCompssUsers): get the "path"
-
- * install_steps.pm: compss is deprecated. use compssUsers for the tree
- renamef created and used
-
- * detect_devices.pm (burners): don't use cdroms() which return scdX for
- ide burners, and
- isBurner don't use the same technique. so use get() and grep for type
- "cdrom"
-
- * install_any.pm: compss is deprecated. use compssUsers for the tree
- (setPackages): set {compssUsersChoice}{PCMCIA} if hasPCMCIA
- renamef created and used
-
- * install_steps_interactive.pm: compss is deprecated. use compssUsers for
- the tree
- (chooseGroups): fix to get back the icons
- (chooseGroups): size computed should work
-
- * common.pm: renamef created and used
-
-2001/03/13 siegel
-
- * share/po/de.po: new german translation
-
-2001/03/13 warly
-
- * share/compssUsers: fix {W,w}orkstation
- remove ^Server and ^Development
-
-2001/03/13 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakgw: pixelization
-
- * install_steps_interactive.pm (chooseGroups): size computed should work
-
- * share/rpmsrate: moved icewm to SYSTEM with !KDE !GNOME
-
- * install_steps.pm, common.pm, install_any.pm: renamef created and used
-
-2001/03/12 dam's <damien@mandrakesoft.com>
-
- * Makefile: removed wizard pixmap from install
-
- * pixmaps/wiz_internet.png, pixmaps/wiz_internet_left.png: updated
- added pixmap for wizard
-
- * my_gtk.pm: new wizard layout, with pixmaps.
- added ugly workaround for ugly Hseparator
-
- * share/step-red.png, share/step-orange.png, share/step-orange-click.png,
- share/step-green-click.png, share/step-green.png, share/step-red-on.png,
- share/step-orange-on.png, share/step-green-on.png,
- share/step-green_s.png, share/step-red-click.png: removing bad png
- files...
-
- * share/help.png: new help button. blah
-
- * install_any.pm: typo
-
- * pixmaps/wiz_default_left.png, pixmaps/wiz_default_up.png: updated
-
- * netconnect.pm: corrected askokcancel -> askyesorno
-
- * interactive.pm: corrected bad okcanel in wizard mode
-
- * install_steps_interactive.pm: added $::isInstall
-
- * share/logo-mandrake_trans.png: new logo for other themes
-
- * services.pm: removed use Data::Dumper
- corrected bug in display
-
-2001/03/12 François Pons <fpons@mandrakesoft.com>
-
- * modules.pm, lang.pm, commands.pm, detect_devices.pm, pkgs.pm,
- live_install2: fixed live update between GLIBC 2.1 and GLIBC 2.2. should
- work for other
- combination but not tested. fixed locale usage and gtk environment
- interaction (added LOCPATH, GCONV_PATH and GTK_EXE_PREFIX).
- created LD_LOADER environment variable to keep track of right ELF loader
- to be used for the GLIBC used by the live update. added internal PATH
- to LD_LIBRARY_PATH as ELF loader only check this one and not PATH.
-
-2001/03/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw:
- - make it work as a wizard
- - make it work with iptables (kernel-2.4)
-
- * modules.pm: reflect Jeff Garzik's answers to my questions on kernel@
-
-2001/03/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/DrakX.pot, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/bg.po, share/po/de.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/br.po, share/po/ca.po,
- share/po/cy.po, share/po/uk.po, share/po/wa.po, share/po/da.po,
- share/po/cs.po, share/po/zh_TW.Big5.po, share/po/af.po: Updated Basque
- file
-
-2001/03/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (afterInstallPackages): save the compssUsers flattened
- for rpmdrake
-
- * install_steps_interactive.pm (summary): remove 'clicked' (labels are
- used)
- put everything in %compssUsers, use field flags for the flags :)
-
- * pkgs.pm (computeGroupSize): log what is found
- (saveCompssUsers): make it work
- (readCompssUsers): clean-up
- (saveCompssUsers): created
- put everything in %compssUsers, use field flags for the flags :)
- (computeGroupSize): created
-
- * share/rpmsrate: lower Zope (anyway Zope is not in main)
-
- * fsedit.pm (hds): search for existing lvm in @hds *and* @lvms
-
- * commands.pm (loadkeys): created
-
- * install_any.pm (setPackages): don't readCompssUsers with $o->{packages}
- (setPackages): kernel-secure doesn't exist anymore, use kernel22-secure.
- don't use kernel-secure as a kernel-smp.
- put everything in %compssUsers, use field flags for the flags :)
- (setPackages): set compssUsersChoice "3D" if 3D enabled graphic card
-
- * interactive_gtk.pm (ask_from_entries_refW): add $set for "label" entries
- add "label" type
-
- * share/compssUsers: change the path format
-
- * detect_devices.pm (get_mac_model): fix for perl2fcalls
-
- * interactive.pm: add "label" type
-
-2001/03/12 warly
-
- * share/compssUsers: add some NETWORKING_* that were empty
- dispach some DEVELOPMENT and SERVER to more appropriate groups
- added path
-
- * share/rpmsrate: add some NETWORKING_* that were empty
- dispach some DEVELOPMENT and SERVER to more appropriate groups
-
-2001/03/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ftp.pm: do not retry on 550 file unavailable
-
-2001/03/12 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (setPackages): set compssUsersChoice "3D" if 3D enabled
- graphic card
-
-2001/03/11 dam's <damien@mandrakesoft.com>
-
- * services.pm: no more restart button
-
-2001/03/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * ftp.pm: do not retry on 550 file unavailable
-
-2001/03/11 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (summary): fix clicked empty handler
-
- * share/rpmsrate:
- - lower tftp-server
- - a lot of modifs (thanks to Prana)
-
-2001/03/10 dam's <damien@mandrakesoft.com>
-
- * standalone/drakxservices: embedded mode
-
- * my_gtk.pm: added gtkset_border_width
- typo again
- typo
- added gtkmove
- added gtkset_modal and gtkappenditems
-
- * services.pm: fixed big bug.
- imajor improvement.
- improved.
-
-2001/03/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated Korean file
-
-2001/03/09 dam's <damien@mandrakesoft.com>
-
- * standalone/drakxconf: added harddrake
-
- * my_gtk.pm: applied gtkradio
- created create_boxradio
- in wizard mode : list -> radio buttons
- added gtkradio
-
- * bootlook.pm: workaround for the graphical layout.
-
- * install_steps_gtk.pm: applied gtkradio
- created create_boxradio
- in wizard mode : list -> radio buttons
-
- * printerdrake.pm: if embedded -> no first question
-
- * interactive_gtk.pm: added tooltips to create_boxradio
- applied gtkradio
- created create_boxradio
- in wizard mode : list -> radio buttons
-
-2001/03/09 Pixel <pixel@mandrakesoft.com>
-
- * share/rpmsrate: a hell lot of modifications, mostly cleanup of
- DEVELOPEMENT
-
-2001/03/09 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: keyboard mapping for PPC
-
- * detect_devices.pm: routine to detect MacIntosh model code
-
-2001/03/09 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm: added gtkradio
-
- * standalone/draknet: changed graphical layout, expert mode
-
-2001/03/09 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (read_rpmsrate): handle the special case of packages requiring
- locales-*,
- adding the flag LOCALES"*" for them
-
- * install_steps_interactive.pm (choosePackages): moved the log to
- install2::choosePackages (to have it in
- auto_installs too)
-
- * install_any.pm (setPackages): set compssUsersChoice LOCALES"*"
-
- * install2.pm (choosePackages): log groups choosen
-
- * share/rpmsrate: a hell lot of modifications, mostly cleanup of
- DEVELOPEMENT
- - chineese packages
- - move Aurora's to AURORA (DrakX take care of Aurora)
-
- * install_steps_gtk.pm (remove_advertising): created
-
-2001/03/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: workaround kernel-2.4 bug with /dev/log
-
-2001/03/08 Pixel <pixel@mandrakesoft.com>
-
- * verify_c: fix the regexp
-
- * detect_devices.pm (floppies): load module "floppy" before probing
-
-2001/03/08 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: applied if__
-
-2001/03/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: workaround kernel-2.4 bug with /dev/log
-
-2001/03/08 Pixel <pixel@mandrakesoft.com>
-
- * verify_c: fix the regexp
-
- * share/rpmsrate: add i18n'ed packages
-
- * detect_devices.pm (floppies): load module "floppy" before probing
-
-2001/03/08 dam's <damien@mandrakesoft.com>
-
- * common.pm: added if__
-
- * netconnect.pm: applied if__
-
-2001/03/08 François Pons <fpons@mandrakesoft.com>
-
- * diskdrake.pm: avoid using e2fsck, else it abort by checking partition
- size (which differs).
- fix resize ext2 by using resize2fs.
-
- * pkgs.pm: changed choice of package for selection.
-
- * share/list: added resize2fs and dumpe2fs, removed ext2resize which is
- replaced.
-
-2001/03/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dhcp.c: do not segfault in dhcp stuff, when af_packet is not
- honoured by kernel
-
-2001/03/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
-2001/03/08 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: advertising modifs
- (setPackages): use burners instead of IDEburners
-
- * bootloader.pm: cleanup
-
- * interactive.pm (ask_from_listf_no_check): catch wizcancel and return
- undef
-
- * fs.pm (write_fstab): change again for 'none' checking the mount point
- (write_fstab): special case for device ``none'' (which can be mounted
- twice or more :)
-
- * my_gtk.pm (_create_window): on delete_event, destroy the window and
- raise wizcancel
-
- * share/po/fr.po: fix bad translation
-
- * share/rpmsrate: add i18n'ed packages
- raise kdebase
-
- * install2.pm, install_steps.pm, install_steps_gtk.pm: advertising modifs
-
- * detect_devices.pm: cleanup
- (isBurner): use syslog to detect scsi burners
-
-2001/03/08 Stew Benedict <sbenedict@mandrakesoft.com>
-
- * install_steps_gtk.pm: encourage Xpmac to run in at least 16bpp
-
- * partition_table_mac.pm: fixed variable referencing - thx Pixel
-
-2001/03/08 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad pci number -> string
-
-2001/03/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bg.po, share/po/sr.po, share/po/sp.po, share/po/ca.po: updated
- Bulgarian, Catalan and Serbian files
-
-2001/03/08 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (dev2grub): better error reporting
-
- * tools/cvslog2changelog.pl (%users): add stew
-
- * install_steps.pm (setupBootloaderBefore): aurora stupid renaming fix
-
- * share/rpmsrate: raise kdebase
- xcdroast is the best cd burner ui, raise it above others
- lower some EDITORS
- raise vim-X11
- lower xrn, raise pan
-
- * install_any.pm (setPackages): use burners instead of IDEburners
- (setPackages): at least set BURNER for ide burners
-
- * any.pm: cleanup
-
- * install_steps_interactive.pm, install2.pm: re-add miscellaneous step,
- but always hidden (aka automatic)
-
- * detect_devices.pm (isBurner): use syslog to detect scsi burners
-
- * fs.pm (write_fstab): special case for device ``none'' (which can be
- mounted
- twice or more :)
-
- * tools/i386/netboot/stage2.3c90x, tools/i386/netboot/grub: new versions
- (without mem=)
-
-2001/03/08 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad pci number -> string
-
-2001/03/08 Pixel <pixel@mandrakesoft.com>
-
- * tools/i386/netboot/stage2.3c90x, tools/i386/netboot/grub: new versions
- (without mem=)
-
-2001/03/07 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected default focus after detection
- don't test adsl if net install
-
-2001/03/07 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (add_alias): remove the alias block-major-11 as it's
- overriding the
- default alias to sr_mod, and is uneeded with scsi_hostadapter being
- added
- to /etc/modules.conf
-
- * share/rpmsrate: lower heartbeat
-
-2001/03/07 sbenedict
-
- * help.pm: * perl-install/help.pm - typo in yaboot help
-
- * any.pm: * perl-install/any.pm - fixed two $l vs. @l references -
- bootloader menu, need image/boot in rec mode PPC
- CVl:
- ----------------------------------------------------------------------
-
- * devices.pm: * perl-install/devices.pm - add adbmouse
-
-2001/03/07 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: not use common anymore, uses gtkpng, cosmetic chages
-
-2001/03/07 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm, bootloader.pm: fixed support for other kernel for
- bootloader entries.
- automatically add 2.2 entries for kernel22 (manage hack-kernel too).
-
- * Xconfigurator.pm: remove 32 bit depth for S3 Trio3D card.
-
- * pkgs.pm: added support for killing all child process of a transaction,
- necessary to be
- able to umount cdrom and eject it correctly.
-
-2001/03/07 Pixel <pixel@mandrakesoft.com>
-
- * share/fonts.tar.bz2: use gb16fs instead of gb16st
-
- * modules.pm (add_alias): remove the alias block-major-11 as it's
- overriding the
- default alias to sr_mod, and is uneeded with scsi_hostadapter being
- added
- to /etc/modules.conf
-
- * share/rpmsrate: lower heartbeat
- lower Mesa's rate
-
- * install2.pm (main): save $@ in $err so that it's not modified before
- being used
-
- * share/locales.tar.bz2: remove ending '/' in symlinks not pleasing
- packdrake
-
- * standalone/drakboot: make it please perl2fcalls
-
-2001/03/07 sbenedict
-
- * bootloader.pm, Xconfigurator.pm: * perl-install/Xconfigurator.pm - force
- XF4 for PPC in recommended mode
- * perl-install/bootloader.pm - rework get_of_dev to work in live install
-
- * install_steps_interactive.pm, any.pm, partition_table_mac.pm: *
- perl-install/any.pm - change in partition_table_mac'xxx syntax
- * perl-install/install_steps_interactive.pm - change in
- partition_table_mac'xxx syntax
-
- * perl-install/partition_table_mac.pm - change in
- partition_table_mac'xxx syntax
-
-2001/03/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/fr.po: Fixed French typos reported by tester
-
-2001/03/07 Pixel <pixel@mandrakesoft.com>
-
- * share/fonts.tar.bz2: use gb16fs instead of gb16st
-
- * fsedit.pm: fix typo
-
- * install2.pm (main): save $@ in $err so that it's not modified before
- being used
-
- * share/rpmsrate: lower Mesa's rate
-
- * standalone/drakboot: make it please perl2fcalls
-
-2001/03/06 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected bad %intf while savung
- don't ask configuration if expert
- now detecting adsl
-
- * standalone/draknet: remmoved 'quiting appli' screen
-
-2001/03/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: fix save of automatic stage1 info for static network
-
- * mdk-stage1/init.c: do not display from syslog msg's from RPM telling
- that it
- installed/removed some pkg's
-
- * mdk-stage1/Makefile: fix includes for init
-
-2001/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, help.pm, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/id.po, share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, standalone/draknet,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/uk.po, share/po/eo.po, share/po/ro.po, share/po/da.po,
- share/po/cs.po, share/po/af.po: corrected some typos, Updated Japanese
- file
-
-2001/03/06 Pixel <pixel@mandrakesoft.com>
-
- * perl2fcalls:
- - small fix for bootlook.pm
- - don't display reused
-
- * detect_devices.pm (stringlist): if no text description, display ids
-
- * install_steps_interactive.pm (generateAutoInstFloppy): comment old code
- (summary): fixes
- (setupSCSI): cleanup
- (summary): display sound/tv/isdn cards found
-
- * fsedit.pm (check_mntpoint): don't allow LVM on / or /boot
- (@suggestions_mntpoints): add /boot
-
- * install_any.pm: hack to make perl2fcalls happy
- (getHds): fix for no hd detected in newbie installs
- (setPackages): s/snd-slot/sound-slot/
-
- * install_steps_auto_install.pm (@graphical_steps): add
- beforeInstallPackages so that advertisings are there
-
- * install2.pm (setupSCSI): remove autoSCSI, cleanup
-
- * http.pm, ftp.pm: don't use install_any
-
- * modules.pm: add cciss
-
- * partition_table.pm (add): create 3 primaries before creating an extended
- if DAC960 (/dev/rd/*)
- (add): max number of parts for rd, ida and cciss
-
-2001/03/06 yduret
-
- * bootlook.pm: pixelisation
-
-2001/03/06 dam's <damien@mandrakesoft.com>
-
- * install2.pm: corrected bad file search
- corrected intf setting
-
- * standalone/draknet: added enable/disable networking button.
-
- * standalone/drakxconf: updated to be launched frome DrakConf if no
- DISPLAY
-
- * netconnect.pm: now detecting adsl
- typo
- better load_conf
-
- * Xconfigurator.pm: cleaned png displaying
-
- * common.pm: setinhash -> set_in_hash
- added setinhash
-
- * fs.pm: typo
- use set_in_hash
-
-2001/03/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/cdrom.c: enable probing of all the CDROM drives in automatic
- mode
-
- * mdk-stage1/Makefile: fix includes for init
-
-2001/03/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: corrected some typos, Updated Japanese file
- updated Lithuanian file
-
- * help.pm, standalone/draknet: corrected some typos, Updated Japanese file
-
-2001/03/06 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, any.pm, Xconfigurator.pm: move inittab modifying to
- any::runlevel
-
- * partition_table.pm (add): max number of parts for rd, ida and cciss
-
- * fs.pm, netconnect.pm, common.pm: set_in_hash is now put_in_hash
-
- * diskdrake.pm (Create): pixelization
-
- * fsedit.pm (hds): pixelization
-
- * install_steps_auto_install.pm (@graphical_steps): add
- beforeInstallPackages so that advertisings are there
-
- * modules.pm: add cciss
-
- * install2.pm (main): remove unloading vfat (not needed anymore with
- mdk-stage1)
-
-2001/03/05 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: $mouse->{device} is set if it doesn't exists.
-
- * Makefile: added pixmaps copying
-
-2001/03/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * netconnect.pm, bootlook.pm, help.pm: fixed English typos
-
-2001/03/05 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (generateAutoInstFloppy): use
- generate_automatic_stage1_params
-
- * c/stuff.xs.pm, my_gtk.pm: XSetInputFocus now done in perl-GTK
-
- * install_any.pm (generate_automatic_stage1_params): replace
- generate_ks_cfg
-
-2001/03/05 dam's <damien@mandrakesoft.com>
-
- * Makefile: added pixmaps copying
-
- * standalone/draknet: required gtk only if needed, added redirection to
- newt if needed
-
- * netconnect.pm: $mouse->{device} is set if it doesn't exists.
- corrected short circuit if network install
- corrected bad end message,
- added copying of resolv.conf & modules.conf
-
- * install2.pm: moved askrootpasswd and adduser before network conf
-
- * network.pm: removed old NS0 fetching. /etc/resolv.conf is read in
- install2.pm now
- removed setdefaultroute and sethostname
-
-2001/03/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: Updated Latvian, Belarussian and Spanish files
-
-2001/03/05 Pixel <pixel@mandrakesoft.com>
-
- * lvm.pm (lv_create): fix typo
-
- * bootloader.pm: add use devices
- (install_grub): ensure the translated messages are not too big the hard
- way
-
- * install_any.pm (generate_automatic_stage1_params): replace
- generate_ks_cfg
- (install_urpmi): have "use hdlist ..." in any case
-
- * my_gtk.pm: XSetInputFocus now done in perl-GTK
- (_create_window): don't care about c::XSetInputFocus not existing
-
- * any.pm (setupBootloader): pixelization
- (setupBootloader): fix call to get_append
-
- * interactive.pm (vnew): cleanup
-
- * common.pm (salt): cleanup
-
- * install_steps_interactive.pm (generateAutoInstFloppy): use
- generate_automatic_stage1_params
-
- * c/stuff.xs.pm: XSetInputFocus now done in perl-GTK
-
- * c/Makefile.PL: compile fix
-
- * diskdrake.pm (create_buttons4partitions_): fix for displaying LVM
-
- * Xconfigurator.pm (xtest): use external xtest if standalone
-
- * install2.pm (main): remove unloading vfat (not needed anymore with
- mdk-stage1)
-
-2001/03/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- diskdrake.pm, share/po/af.po: updated po files
-
-2001/03/04 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Add2LVM): fix bug (causing empty list), make cancel work
-
- * share/rpmsrate:
- - remove autologin
- - move X11R6-contrib to DEVELOPEMENT and lower rate
-
-2001/03/04 stew <sbenedict@mandrakesoft.com>
-
- * any.pm - changes to enable yaboot configuration for PPC
-
- * diskdrake.pm, fs.pm, partition_table.pm isBootstrap -> isAppleBootstrap
-
- * install_steps_interactive.pm - auto-add Apple Bootstrap - PPC
-
-2001/03/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, fsedit.pm, lvm.pm, standalone/diskdrake,
- install_interactive.pm, install2.pm: small fixes for LVM
-
- * diskdrake.pm: don't default the LVM name to 'pp' ;pp
- small fixes for LVM
-
-2001/03/03 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: small fixes for LVM
- (doPartitionDisksAfter): small adaptation for LVMs
- use run_or_die
-
- * fsedit.pm: small fixes for LVM
- (hds): detect LVMs and return them
- (add): handling of LVMs
- (@partitions_signatures): add new magic of reiserfs
-
- * bootloader.pm: use run_or_die
-
- * run_program.pm (run_or_die, rooted_or_die): created
-
- * install_steps_interactive.pm: cleanup
-
- * install_any.pm (getHds): handle LVMs. $o->{lvms} contain them
- (setPackages): ask for installation of package lvm when needed
- (suggest_mount_points, find_root_parts): take $fstab as arg instead of
- $hds
-
- * install2.pm: small fixes for LVM
- (formatPartitions): call vgscan if needed when / is mounted
-
- * devices.pm (make): better caller in error
-
- * share/list: add progs for LVM handling
-
- * install_interactive.pm: small fixes for LVM
-
- * diskdrake.pm: small fixes for LVM
- - addition of drive to notebook cleaned
- - various clean-up
- - handling of LVMs
-
- * standalone/diskdrake: small fixes for LVM
- small adaptation
-
- * lvm.pm: small fixes for LVM
- creation
-
- * partition_table.pm: add isLVMBased
-
-2001/03/02 stew <sbenedict@mandrakesoft.com>
-
- * commands.pm - fdisk locks up machine on report_bug - replace with pdisk PPC
-
- * install_steps.pm - no bootfloppy, added yaboot.conf - PPC
-
- * install_interactive.pm - pdisk vs. fdisk - PPC
-
- * bootloader.pm - added code to create yaboot.conf, run ybin - vmlinux vs. vmlinuz
-
-2001/03/02 stew <sbenedict@mandrakesoft.com>
-
- * c/smp.c -stanza for PPC
-
- * detect_devices.pm - added code for MO devices
-
- * help.pm - help information for yaboot - PPC
-
- * partition_table.pm - PPC mods
-
- * partition_table_mac.pm - PPC mods
-
- * modules.pm - PPC mods - parallel port not used
-
- * diskdrake.pm - PPC mods - display like pdisk
-
- * install2.pm - PPC mod - no bootdisk
-
- * fs.pm - bootstrap partition - PPC
-
-2001/02/27 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: pop up a dialog to quit X when accepting
- configuration
-
-2001/02/27 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_raw.pm (@MBR_signatures): add yet another grub signature
-
- * devices.pm (entry): add fd0H1440 and fd1H1440
-
- * bootloader.pm (mkbootdisk): fix for mkbootdisk using fd0H1440. Must be
- created
-
-2001/02/26 dam's <damien@mandrakesoft.com>
-
- * Makefile.drakxtools, pixmaps/hori.xpm, pixmaps/tradi.xpm,
- pixmaps/eth_card_mini.xpm, pixmaps/verti.xpm: new pixmap policy
-
- * Makefile: typo
- new pixmap policy
-
- * bootlook.pm: typo
- new pixmap policy
- need to be merged with bootloader
-
- * standalone/draknet: reincluded Gtk + init Gtk
- thiskind -> thiskind_backend
- new pixmap policy
-
- * standalone/drakboot: short-circuit to bootlook for the moment.
-
-2001/02/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po,
- share/po/i18n_compssUsers, share/po/DrakX.pot, share/po/es.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: Fixed i18n_compssUsers
- script to produce a correct pot file
- Updated Estonian and Walloon files
-
- * bootlook.pm: changed I_() to _() so xgettext cna find the translatable
- strings
-
-2001/02/26 Pixel <pixel@mandrakesoft.com>
-
- * standalone/drakgw: pixelization
-
- * install_steps.pm: remove unneeded "use install_interactive"
-
- * install_steps_gtk.pm (copy_advertising): fix changing for
- advertising_images
-
-2001/02/26 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: should correct bad resolv.conf when swithcinf in
- standalone embedded mode. Not Certified
- fixed standalone edition
- corrected wizard mode.
-
- * Makefile.drakxtools, Makefile, pixmaps/eth_card_mini.xpm: new pixmap
- policy
-
- * standalone/draknet: new pixmap policy
- fixed standalone edition
-
- * bootlook.pm: need to be merged with bootloader
-
- * interactive_gtk.pm: if wizard, show the button
-
- * standalone/drakboot: short-circuit to bootlook for the moment.
-
-2001/02/26 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (if_): fix for use in scalar context
-
- * install_steps_interactive.pm (summary): translate mouse description
-
- * install_steps.pm: remove unneeded "use install_interactive"
-
- * install_steps_gtk.pm (copy_advertising): fix changing for
- advertising_images
-
-2001/02/26 warly
-
- * share/compssUsers, share/rpmsrate: remove some packages
-
-2001/02/26 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm: if wizard, show the button
-
- * netconnect.pm: corrected wizard mode.
-
-2001/02/26 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (if_): fix for use in scalar context
-
- * install_steps_interactive.pm (summary): translate mouse description
-
-2001/02/25 dam's <damien@mandrakesoft.com>
-
- * share/logo-mandrake-Firewall.xpm, share/logo-mandrake.xpm: changed logo.
-
- * netconnect.pm: profile handling.
- profile handling
- corrected wizard.
-
- * standalone/draknet: profile handling.
- profile handling
-
- * install_steps_interactive.pm: updated
-
-2001/02/25 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): move the load_deps before all the loadO's
-
- * install_any.pm (g_auto_install): have formatMountPartitions graphical if
- $graphical
-
- * install_steps_interactive.pm (generateAutoInstFloppy): use "timeout 1"
- for replay
-
- * interactive_gtk.pm (ask_from_entries_refW): ensure "advanced" lists
- center the chosen value
-
-2001/02/24 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, install2.pm: move writing to config files from
- install2::selectKeyboard to install_steps
-
- * share/list, Makefile, tools/i386/mkreiserfs: for now, have mkreiserfs in
- the CVS since the current cooker version is too recent
-
- * commands.pm (more): handle 'q' to quit
-
-2001/02/24 Pixel <pixel@mandrakesoft.com>
-
- * c/Makefile (stuff): fix the fix's fix :'-(
-
- * detect_devices.pm (pci_probe): fix to clean the log
-
- * install_steps_interactive.pm (setRootPassword): NIS server must be
- editable
-
-2001/02/23 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (g_auto_install): handle $replay flag. It means a 'not
- fully automated install'.
-
- * install_steps_auto_install.pm (@graphical_steps): specify which step
- should be interactive
-
- * c/Makefile (stuff.xs): exporting C_RPM and C_DRAKX is needed
-
- * install_steps.pm (afterInstallPackages): no kdm UserView in NIS
- (configurePrinter): if_'ization
-
- * install_steps_interactive.pm (exitInstall): ask wether Replay or
- Automated
- (generateAutoInstFloppy): handle $replay flag. It means a 'not fully
- automated install'.
- (summary): nicer mouse name
-
-2001/02/23 dam's <damien@mandrakesoft.com>
-
- * network.pm, standalone/draknet, netconnect.pm, my_gtk.pm: new wizard
- layout, no use gtk in draknet, minor bugfixes
-
-2001/02/23 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: added accessor the rpmsrate data of packages.
- avoid rebuilding the database for oem, rpm db is assumed to be fine.
-
- * rescue/make_rescue_img: removed kernel_reread program.
-
- * rescue/tree/etc/oem: removed server from selection.
- added mutli CD support to OEM (NFS/DVD transparent)
- fixed selection of package now select much more than before.
- fixed root partition size set to the minimum.
-
-2001/02/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/rpmsrate: move xterm to SYSTEM
-
-2001/02/23 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: move the 'use my_gtk' in 'require my_gtk' and only if
- needed
-
- * install_steps_auto_install.pm (@graphical_steps): specify which step
- should be interactive
-
- * c/stuff.xs.pm: hack for macroporcessing in term.h
- use C_DRAKX
-
- * install_steps.pm (afterInstallPackages): no kdm UserView in NIS
- (configurePrinter): if_'ization
-
- * share/rpmsrate: add packages installed on demand by DrakX. they are
- specifically flagged
- or flagged 'INSTALL'
-
- * perl2fcalls: handling of ``package''->import(``what to import'')
-
- * interactive.pm (vnew): use /usr/X11R6/bin/xtest instead of c::Xtest
-
- * Makefile (tar-drakxtools): C_RPM and C_DRAKX set to 0
-
- * install_any.pm (g_auto_install): handle $replay flag. It means a 'not
- fully automated install'.
-
- * c/Makefile.PL: use C_DRAKX
-
- * pkgs.pm (setSelectedFromCompssList): fix the fix
-
- * c/Makefile (stuff.xs): exporting C_RPM and C_DRAKX is needed
- add setting C_DRAKX to 1 by default
-
- * install_steps_interactive.pm (exitInstall): ask wether Replay or
- Automated
- (generateAutoInstFloppy): handle $replay flag. It means a 'not fully
- automated install'.
- (summary): nicer mouse name
-
-2001/02/23 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_entries_refW): double clicking on list
- means 'Ok'
-
- * pkgs.pm (setSelectedFromCompssList): fix sillyness
-
-2001/02/22 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corected infinite loop
-
-2001/02/22 François Pons <fpons@mandrakesoft.com>
-
- * rescue/tree/etc/oem: minor cleanup to edit partition size more easily.
- brand new version written in perl, support repartitionning on the fly of
- the
- hard disk and resize of already present FAT partition.
-
- * rescue/list.i386, rescue/list, rescue/Makefile: make rescue build a bit
- more cleaner (added dependancy).
- added missing file for rescue to enable new oem install.
-
-2001/02/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/insmod-modutils/include/elf_hppa64.h,
- mdk-stage1/insmod-modutils/util/alias.h,
- mdk-stage1/insmod-modutils/util/xstrcat.c,
- mdk-stage1/insmod-modutils/util/gzfiles.c,
- mdk-stage1/insmod-modutils/include/elf_arm.h,
- mdk-stage1/insmod-modutils/util/sys_qm.c,
- mdk-stage1/insmod-modutils/util/modstat.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc.c,
- mdk-stage1/insmod-modutils/include/elf_m68k.h,
- mdk-stage1/insmod-modutils/Makefile,
- mdk-stage1/insmod-modutils/util/xstrdup.c,
- mdk-stage1/insmod-modutils/obj/obj_arm.c,
- mdk-stage1/insmod-modutils/obj/obj_m68k.c,
- mdk-stage1/insmod-modutils/obj/obj_hppa64.c,
- mdk-stage1/insmod-modutils/include/elf_sparc64.h,
- mdk-stage1/insmod-modutils/util/sys_dm.c,
- mdk-stage1/insmod-modutils/include/elf_s390.h,
- mdk-stage1/insmod-modutils/obj/obj_s390.c,
- mdk-stage1/insmod-modutils/util/xmalloc.c,
- mdk-stage1/insmod-modutils/util/xsystem.c, mdk-stage1/insmod.h,
- mdk-stage1/insmod-modutils/util/xftw.c,
- mdk-stage1/insmod-modutils/include/elf_i386.h,
- mdk-stage1/insmod-modutils/util/sys_gks.c,
- mdk-stage1/insmod-modutils/util/snap_shot.c,
- mdk-stage1/insmod-modutils/obj/obj_i386.c, mdk-stage1/modules.c,
- mdk-stage1/stage1.c, mdk-stage1/insmod-modutils/include/obj.h,
- mdk-stage1/insmod-modutils/include/elf_ppc.h,
- mdk-stage1/insmod-modutils/obj/obj_reloc.c,
- mdk-stage1/insmod-modutils/include/elf_sparc.h,
- mdk-stage1/insmod-modutils/util/sys_nim.c,
- mdk-stage1/insmod-modutils/obj/obj_ppc.c, mdk-stage1/Makefile,
- mdk-stage1/insmod-modutils/include/elf_hppa.h,
- mdk-stage1/insmod-busybox/insmod.c,
- mdk-stage1/insmod-modutils/util/meta_expand.c,
- mdk-stage1/insmod-modutils/util/arch64.c,
- mdk-stage1/insmod-modutils/obj/obj_load.c,
- mdk-stage1/insmod-modutils/obj/obj_hppa.c,
- mdk-stage1/insmod-busybox/insmod.h,
- mdk-stage1/insmod-modutils/include/elf_ia64.h,
- mdk-stage1/insmod-modutils/obj/obj_ia64.c,
- mdk-stage1/insmod-modutils/obj/obj_sparc64.c,
- mdk-stage1/insmod-modutils/include/elf_mips.h,
- mdk-stage1/insmod-modutils/include/module.h,
- mdk-stage1/insmod-modutils/obj/obj_mips.c,
- mdk-stage1/insmod-modutils/util/sys_cm.c,
- mdk-stage1/insmod-modutils/obj/obj_alpha.c,
- mdk-stage1/insmod-modutils/include/kerneld.h,
- mdk-stage1/insmod-modutils/util/xrealloc.c,
- mdk-stage1/insmod-modutils/obj/Makefile,
- mdk-stage1/insmod-modutils/insmod-frontend.c,
- mdk-stage1/insmod-modutils/obj/obj_common.c,
- mdk-stage1/insmod-modutils/include/modstat.h,
- mdk-stage1/insmod-modutils/util/Makefile,
- mdk-stage1/insmod-modutils/include/config.h,
- mdk-stage1/insmod-modutils/util/logger.c,
- mdk-stage1/insmod-modutils/obj/obj_kallsyms.c,
- mdk-stage1/Makefile.common, mdk-stage1/insmod-modutils/include/util.h,
- mdk-stage1/insmod-modutils/util/config.c,
- mdk-stage1/insmod-modutils/include/version.h,
- mdk-stage1/insmod-modutils/include/kallsyms.h,
- mdk-stage1/insmod-modutils/include/elf_alpha.h,
- mdk-stage1/insmod-modutils/util/sys_oim.c,
- mdk-stage1/insmod-modutils/insmod.c: use modutils for non Intel arch's
-
-2001/02/22 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (write_fstab): clean-up, $fstab takes precedence over @to_add, but
- not
- over existing /etc/fstab. Fix some stupid stuff
-
- * modules.pm, commands.pm: call /usr/bin/insmod_ with full path
-
- * install2.pm (main): don't set a special $remote_path PATH for
- postInstallNonRooted
- (otherwise install's modprobe is not used, and you can't "modprobe
- vfat",
- even if "/usr/bin/modprobe vfat" doesn't work because insmod_ is not
- found.
-
- * my_gtk.pm (create_box_with_title): disallow focusing on text if it is
- non-scrolled
-
-2001/02/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/include/stdlib.h, mdk-stage1/minilibc.c,
- mdk-stage1/init-libc-headers.h,
- mdk-stage1/dietlibc/include/sys/select.h, mdk-stage1/Makefile,
- mdk-stage1/init.c, mdk-stage1/minilibc.h,
- mdk-stage1/dietlibc/include/unistd.h,
- mdk-stage1/dietlibc/include/sys/socket.h,
- mdk-stage1/dietlibc/include/signal.h: have "init" compiled against
- dietlibc (rather than glibc) on non-Intel arch's
-
-2001/02/22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_auto_install.pm: $graphical is now a module variable. Can
- be changed from everywhere
-
- * fs.pm (write_fstab): clean-up, $fstab takes precedence over @to_add, but
- not
- over existing /etc/fstab. Fix some stupid stuff
-
- * modules.pm, commands.pm: call /usr/bin/insmod_ with full path
-
- * install2.pm (main): don't set a special $remote_path PATH for
- postInstallNonRooted
- (otherwise install's modprobe is not used, and you can't "modprobe
- vfat",
- even if "/usr/bin/modprobe vfat" doesn't work because insmod_ is not
- found.
-
- * my_gtk.pm (create_box_with_title): disallow focusing on text if it is
- non-scrolled
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): fix setting
- type to 'list' in
- case of format. should be only set if type is unset
- (ask_from_entries_refH_powered_normalize): if list+format then type is
- 'list', combo not accepted (hacky?)
-
- * interactive_gtk.pm (ask_from_entries_refW): if no button wanted, don't
- call create_okcancel
-
-2001/02/22 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): if list+format
- then type is
- 'list', combo not accepted (hacky?)
-
- * install_steps_auto_install.pm: $graphical is now a module variable. Can
- be changed from everywhere
-
- * interactive_gtk.pm (ask_from_entries_refW): if no button wanted, don't
- call create_okcancel
-
-2001/02/21 dam's <damien@mandrakesoft.com>
-
- * network.pm, netconnect.pm: netconnect recode, wizard compatible.
- network.pm modified for wizard. Still need work for ask_yesorno,
- ask_okcancel. +debugging of course
-
- * standalone/draknet: updated (don't remember what)
-
-2001/02/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/tools.c, mdk-stage1/Makefile,
- mdk-stage1/dietlibc/lib/vprintf.c, mdk-stage1/dietlibc/lib/vfprintf.c,
- mdk-stage1/minilibc.h, mdk-stage1/minilibc.c,
- mdk-stage1/init-libc-headers.h:
- - fix "init" on ppc (do not use minilibc on non-i386 arch's)
- - fix segfault of dietlibc-linked apps (broken va_stuff in dietlibc)
- - cleanup of "init"
-
- * mdk-stage1/init.c:
- - fix "init" on ppc (do not use minilibc on non-i386 arch's)
- - fix segfault of dietlibc-linked apps (broken va_stuff in dietlibc)
- - cleanup of "init"
- fix up syslog logging stuff
-
-2001/02/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (generateAutoInstFloppy): removed
-
- * install_any.pm (g_auto_install): use selected_leaves for
- default_packages to reduce the
- list of packages (aka cleanup auto_inst.cfg)
- (g_default_packages): created
-
- * install_steps_interactive.pm (exitInstall): add generateAutoInstFloppy
- and g_default_packages calls in
- advanced
-
- * netconnect.pm, partition_table.pm, fsedit.pm: cleanup Data::Dumper use
-
- * pkgs.pm (selected_leaves): created
-
- * install2.pm (main): do postInstallNonRooted before postInstall (so that
- 'modprobe
- vfat' can be done in postInstallNonRooted and used in postInstall)
- - move the loadO of patch/defcfg after loading modules.dep
- - generateAutoInstFloppy is no more a step
- - removed use Data::Dumper
-
-2001/02/21 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * share/rpmsrate: Add iputils to SYSTEM.
-
-2001/02/21 dam's <damien@mandrakesoft.com>
-
- * docs/wizard.doc: putain de doc de merde pout petite qui est trop débile
-
- * interactive.pm, my_gtk.pm: corrected wizard mode.
-
-2001/02/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/TECH-INFOS: sync doc with disk automatic installs
-
- * mdk-stage1/disk.c: add support for automatic (ex-kickstart) in disk
- installs
-
-2001/02/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2001/02/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (generateAutoInstFloppy): removed
-
- * install_any.pm (g_auto_install): use selected_leaves for
- default_packages to reduce the
- list of packages (aka cleanup auto_inst.cfg)
- (g_default_packages): created
-
- * install_steps_interactive.pm (exitInstall): add generateAutoInstFloppy
- and g_default_packages calls in
- advanced
-
- * netconnect.pm, partition_table.pm, fsedit.pm: cleanup Data::Dumper use
-
- * pkgs.pm (selected_leaves): created
-
- * install2.pm (main): do postInstallNonRooted before postInstall (so that
- 'modprobe
- vfat' can be done in postInstallNonRooted and used in postInstall)
- - move the loadO of patch/defcfg after loading modules.dep
- - generateAutoInstFloppy is no more a step
- - removed use Data::Dumper
-
-2001/02/20 Pixel <pixel@mandrakesoft.com>
-
- * printerdrake.pm: fix typo
-
- * install_steps.pm, install_steps_gtk.pm, install_any.pm: better
- advertising support
-
-2001/02/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/url.h, mdk-stage1/url.c, mdk-stage1/network.c: for HTTP
- installs, make use of Content-Length when available, to display
- progressbar
-
-2001/02/20 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: various
- - pcmcia_config.patch now in tools (no more in install which is
- removed)
- - copy xpm's (until step icons work with png's)
- - transform group icons in pngs
-
- * modules.pm, class_discard.pm, my_gtk.pm, Xconfigurator.pm: various
-
- * tools/pcmcia_config.patch: pcmcia_config.patch now here
-
- * printerdrake.pm: fix typo
-
- * install_any.pm, install_steps.pm, install_steps_gtk.pm: better
- advertising support
-
-2001/02/20 warly
-
- * share/compssUsers, share/rpmsrate, share/compssList: update rpmsrate
-
-2001/02/20 François Pons <fpons@mandrakesoft.com>
-
- * c/stuff.xs.pm, live_install, pkgs.pm, live_install2: added RPMRC_FILE
- env variable to choose rpmrc file for rpmlib used
- by DrakX, neccessary for live update from a 7.2 or older.
- Check that if something goes wrong with rebuilddb, avoid removing
- old rpm-3 db files.
- Make sure live_install can start from top directory too.
-
-2001/02/20 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: various
- - pcmcia_config.patch now in tools (no more in install which is
- removed)
- - copy xpm's (until step icons work with png's)
- - transform group icons in pngs
-
- * modules.pm, class_discard.pm: various
-
- * tools/pcmcia_config.patch: pcmcia_config.patch now here
-
- * my_gtk.pm, Xconfigurator.pm: various
- major move. now ask_from_list returns false when canceled (it doesn't
- die 'ask_from_list canceled' anymore)
-
- * interactive_gtk.pm, standalone/mousedrake, install_steps_interactive.pm,
- netconnect.pm, standalone/keyboarddrake, install2.pm, interactive.pm,
- any.pm, printerdrake.pm, diskdrake.pm: major move. now ask_from_list
- returns false when canceled (it doesn't die 'ask_from_list canceled'
- anymore)
-
-2001/02/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c: try to print errno's stuff when symlink to
- /tmp/stage2 failed
-
- * mdk-stage1/dhcp.c: ARP_MAX_RETRIES: s/5/4
-
-2001/02/19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated Estonian file
-
-2001/02/19 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_listf_no_check): die 'ask_from_list cancel' on
- cancel
-
- * my_gtk.pm (create_packtable): don't use attach_raw anymore (was a
- sillyme)
-
-2001/02/18 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: typo
- make fbastok happy about button placement.
- little improvements.
-
-2001/02/16 dam's <damien@mandrakesoft.com>
-
- * install_gtk.pm: corrected xpm mask
-
- * network.pm: wireless eth support corrected.
-
- * share/step-red.xpm, share/step-orange.xpm, share/step-orange-click.xpm,
- share/step-green-click.xpm, share/step-green.xpm, share/step-red-on.xpm,
- share/step-orange-on.xpm, share/step-green-on.xpm,
- share/step-red-click.xpm: re added these xpm files against display mask
- pb.
-
-2001/02/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/init.c: better ansi colors
-
- * mdk-stage1/dhcp.c: comply with glibc-2.2.2 more strict headers
-
- * mdk-stage1/stdio-frontend.c: display more nicely when there is a long
- list to choose from (1, 2 or 4 columns)
-
-2001/02/15 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/TECH-INFOS, mdk-stage1/README: update doc
-
-2001/02/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/az.po: updated Azeri file
-
-2001/02/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): fix i_images
-
- * fsedit.pm (suggestions_mntpoint): fix
-
-2001/02/15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): fix i_images
- (installPackages): traktolpilization and advertising
-
- * Makefile (get_needed_files): copy png files instead of xpm's
-
- * fsedit.pm (suggestions_mntpoint): fix
-
- * my_gtk.pm (gtkcreate_png): add error message, syntax cleanup
-
- * share/list: add GdkImlib stuff
-
- * perl2fcalls: add Gtk::Gdk::ImlibImage
-
- * install2.pm (main): set SHARE_PATH to /export/Mandrake/mdkinst/usr/share
- if it exists
-
-2001/02/15 dam's <damien@mandrakesoft.com>
-
- * my_gtk.pm, any.pm, install_gtk.pm, install_steps_interactive.pm,
- install_steps_gtk.pm, interactive_gtk.pm: added png support. Need to
- test the faces2xpm stuff.
-
- * share/step-orange-click.xpm, share/rpm-selected.xpm,
- share/step-green-click.xpm, share/step-green.xpm, share/rpm-base.xpm,
- share/ftin.xpm, share/step-orange-on.xpm, share/ftout.xpm,
- share/step-red-click.xpm, share/step-green-on.xpm,
- share/rpm-unselected.xpm, share/step-red.xpm, share/step-orange.xpm,
- share/reload.xpm, share/rpm-semiselected.xpm,
- share/logo-mandrake-Desktop.xpm, share/rpm-installed.xpm,
- share/step-red-on.xpm: removed, png are used instead.
-
- * standalone/draknet: updated internet and added eth conf
-
- * share/help.xpm, share/logo-mandrake.xpm: removed, png are used instead.
- added png images
-
- * share/step-red.png, share/step-orange.png, share/reload.png,
- share/logo-mandrake.png, share/rpm-semiselected.png,
- share/logo-mandrake-Desktop.png, share/rpm-installed.png,
- share/logo-mandrake_sav.png, share/step-red-on.png, share/help_sav.png,
- share/rpm-selected.png, share/step-orange-click.png,
- share/step-green-click.png, share/step-green.png, share/rpm-base.png,
- share/logo-mandrake2.png, share/ftin.png, share/help.png,
- share/step-orange-on.png, share/step-green-on.png, share/ftout.png,
- share/step-red-click.png, share/step-green_s.png, share/themes-mdk.rc,
- share/rpm-unselected.png: added png images
-
-2001/02/15 Pixel <pixel@mandrakesoft.com>
-
- * Makefile (get_needed_files): copy png files instead of xpm's
-
- * install2.pm (main): set SHARE_PATH to /export/Mandrake/mdkinst/usr/share
- if it exists
- (selectKeyboard): give clicked as parameter
-
- * my_gtk.pm (gtkcreate_png): add error message, syntax cleanup
-
- * fsedit.pm (suggestions_mntpoint): fix typo
-
- * share/list: add GdkImlib stuff
-
- * perl2fcalls: add Gtk::Gdk::ImlibImage
-
- * install_steps_interactive.pm (summary): better message for i18n
-
- * install_steps_gtk.pm (installPackages): traktolpilization and
- advertising
-
-2001/02/14 dam's <damien@mandrakesoft.com>
-
- * network.pm, standalone/draknet: wireless updated
-
- * share/help.xpm, share/themes-mdk.rc, share/logo-mandrake.xpm: valentin
- theme :)
-
-2001/02/14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (afterInstallPackages): add user in group usb
-
-2001/02/14 dam's <damien@mandrakesoft.com>
-
- * share/themes-mdk.rc: valentin theme :)
- added drawing theme section
-
- * network.pm: wireless updated
- updated wireless eth support
-
- * standalone/draknet: wireless updated
-
- * share/help.xpm, share/logo-mandrake.xpm: valentin theme :)
-
-2001/02/13 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: network con initiated in draknet.
- netconnect improvement.
- typo
-
- * network.pm: typo
- corrected domainname setting
-
- * standalone/draknet: network con initiated in draknet.
- netconnect improvement.
-
-2001/02/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/frontend.h, mdk-stage1/network.h,
- mdk-stage1/stdio-frontend.c, mdk-stage1/dhcp.c, mdk-stage1/automatic.c,
- mdk-stage1/newt-frontend.c, mdk-stage1/automatic.h, mdk-stage1/disk.c,
- mdk-stage1/network.c: write down Magic Callback (tm) for static ip stuff
-
- * mdk-stage1/modules.c: ask for modules parameters everytime in expert
- mode, to avoid wrong autodetections in certain cases
- - better log of nfs mount errors
- - don't insmod modules already present (important for bzip2 slowness)
-
- * mdk-stage1/cdrom.c: better error msg thx to mcdtg
-
- * mdk-stage1/mount.c, mdk-stage1/nfsmount.c:
- - better log of nfs mount errors
- - don't insmod modules already present (important for bzip2 slowness)
-
- * mdk-stage1/stage1.c, mdk-stage1/init.c: use exit code 66 for rescue
- better console messages at startup
-
-2001/02/13 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: profile handling updated
-
- * network.pm: typo
- corrected domainname setting
-
- * netconnect.pm: finished load_conf
-
-2001/02/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/make_rescue_img, rescue/list: include libs for hostname resolving
-
- * mdk-stage1/stage1.c, mdk-stage1/init.c: better console messages at
- startup
-
- * mdk-stage1/tools.c:
- - save /etc/resolv.conf for rescue
-
-2001/02/13 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectKeyboard): can be automatic only in
- non-expert
-
- * any.pm: md5 now done via crypt
-
- * install_steps.pm (exitInstall): catch exception of output report.bug
- (for gc)
-
-2001/02/13 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectKeyboard): can be automatic only in
- non-expert
-
- * tools/cvslog2changelog.pl: fix for gc & fpons
- fix for fredl broken CVS
-
- * any.pm: md5 now done via crypt
-
- * install_steps.pm (exitInstall): catch exception of output report.bug
- (for gc)
-
-2001/02/13 dam's <damien@mandrakesoft.com>
-
- * network.pm: experimental wireless eth support. Not tested
-
-2001/02/13 Pixel <pixel@mandrakesoft.com>
-
- * tools/cvslog2changelog.pl: fix for gc & fpons
- fix for fredl broken CVS
-
- * c/stuff.xs.pm, c/Makefile.PL, c/md5.h, c/md5_crypt.c, c/md5.c: md5 can
- be done via crypt of glibc, so remove all this
-
-2001/02/13 dam's <damien@mandrakesoft.com>
-
- * any.pm: merging difference
-
- * netconnect.pm: corrected profile handling
-
- * network.pm: experimental wireless eth support. Not tested
-
-2001/02/12 Pixel <pixel@mandrakesoft.com>
-
- * tools/addchangelog.pl: log more than mdk-stage1 and perl-install (added
- docs, rescue, tools)
-
-2001/02/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/probing.c: do not close un unbound socket!!
-
- * c/stuff.xs.pm: close socket everytime in hasNetDevice
-
- * mdk-stage1/Makefile: tag it 8.0beta instead of 8.0, to avoid future
- potential confusions
-
- * modules.pm: re include some network modules
-
-2001/02/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * rescue/list: fix vi trouble
- - add lspci, lspcidrake, vim-minimal
- - better /etc/issue
- - better PS1
- - write embryonic tool (installation of detected drivers according to
- pci cards)
-
- * rescue/aliases, rescue/tree/etc/issue: fix vi trouble
-
- * rescue/list.i386, rescue/make_rescue_img, rescue/drvinst:
- - add lspci, lspcidrake, vim-minimal
- - better /etc/issue
- - better PS1
- - write embryonic tool (installation of detected drivers according to
- pci cards)
-
-2001/02/12 Pixel <pixel@mandrakesoft.com>
-
- * rescue/drvinst: pixelization
-
- * docs/README: fix doc about Mandrake/base/compss
-
- * install_steps_gtk.pm (choosePackagesTree): non first choice packages are
- in "Other".
-
- * install_interactive.pm, any.pm, fsedit.pm, diskdrake.pm: auto_allocate
- partitions choice modified. diskdrake in expert asks what kind
- of auto_allocation is wanted, others choose 'simple' in
- %fsedit::suggestions
-
- * install2.pm: auto_allocate partitions choice modified. diskdrake in
- expert asks what kind
- of auto_allocation is wanted, others choose 'simple' in
- %fsedit::suggestions
- (main): gc has done it again! /tmp/conf.modules is now
- /etc/modules.conf,
- so load both to keep compatibility.
-
- * my_gtk.pm: cleanup (remove ask_from_list and _ask_from_list)
-
- * interactive_gtk.pm (ask_from_entries_refW): use
- $common->{advanced_label}
- (create_ctree): add keyboard shortcuts
- (create_clist): moveto only if row_is_visible
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): advanced_label
- defaults to
- _("Advanced")
-
- * tools/addchangelog.pl: log more than mdk-stage1 and perl-install (added
- docs, rescue, tools)
-
- * install_steps_interactive.pm (configurePrinter): cleanup,
- pkg_install_if_requires_satisfied('xpp',
- 'kups') only if a printer is configured (for the case when _("Would you
- like to configure a printer?") is answered no)
-
- * rescue/tree/etc/rc.sysinit: add floppy module for 2.4
-
-2001/02/10 Pixel <pixel@mandrakesoft.com>
-
- * standalone/draknet, standalone/XFdrake: corrected pkgs_install given
-
- * install_any.pm: add preConfigureTimezone
- add step summary. remove steps configureTimezone and configurePrinter
-
- * install_interactive.pm: cleanup
-
- * standalone/keyboarddrake, share/keymaps_generate, keyboard.pm:
- - lang2keyboards handle keyboard percentages
- - xmodmaps now named keyboards
-
- * install_steps_interactive.pm: add step summary. remove steps
- configureTimezone and configurePrinter, modify selectKeyboard
-
- * install2.pm, timezone.pm, install_steps.pm: add step summary. remove
- steps configureTimezone and configurePrinter
-
- * netconnect.pm: corrected back $install call
-
-2001/02/10 Pixel <pixel@mandrakesoft.com>
-
- * standalone/keyboarddrake, share/keymaps_generate, keyboard.pm:
- - lang2keyboards handle keyboard percentages
- - xmodmaps now named keyboards
-
- * install_steps_interactive.pm: add step summary. remove steps
- configureTimezone and configurePrinter, modify selectKeyboard
-
- * standalone/draknet, standalone/XFdrake: corrected pkgs_install given
-
- * install_any.pm: add preConfigureTimezone
- add step summary. remove steps configureTimezone and configurePrinter
-
- * install2.pm, timezone.pm, install_steps.pm: add step summary. remove
- steps configureTimezone and configurePrinter
-
- * install_interactive.pm: cleanup
-
- * netconnect.pm: corrected back $install call
-
-2001/02/09 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm, install2.pm,
- timezone.pm: configureTimezone doesn't take parameter
- /etc/sysconfig/clock
-
-2001/02/09 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm, interactive.pm, interactive_newt.pm: add button
- handling, quite weird behaviour though cuz of newt sillyness
-
- * install2.pm: configureTimezone doesn't take parameter
- /etc/sysconfig/clock
- (main): have compatibility with old stage1 (rhimage -> image)
- (formatPartitions):
- s|etc/sysconfig/consoletrans|etc/sysconfig/console/consoletrans|
- as it should now be (see lang.pm 1.143)
-
- * install_steps.pm, install_steps_interactive.pm, timezone.pm:
- configureTimezone doesn't take parameter /etc/sysconfig/clock
-
-2001/02/09 siegel
-
- * share/po/de.po: new german version
-
-2001/02/08 dam's <damien@mandrakesoft.com>
-
- * standalone/drakgw: implemented or updated embedded mode
- added embedded and (ugly) wizard mode.
-
- * standalone/printerdrake, standalone/mousedrake, standalone/diskdrake,
- standalone/keyboarddrake: implemented or updated embedded mode
-
- * standalone/draknet: implemented or updated embedded mode
- added embedded mode
-
- * standalone/XFdrake: implemented or updated embedded mode
- corrected compilation bug.
-
- * standalone/drakboot: implemented or updated embedded mode
- updated embedded mode. Should work, not tested in real world
-
- * netconnect.pm: removed testing wizard instruction
-
-2001/02/08 François Pons <fpons@mandrakesoft.com>
-
- * ftp.pm: fixed wrong URLPREFIX formation if no user given.
-
- * standalone/XFdrake: fix the previous changelog wich was wrong (bad
- spelling),
- added a char in comment to allow a new release (thanks to pixel :-)
- make sure SHARE_PATH is set.
- fixed SHARE_PATH to make sure it is setted.
-
- * Xconfigurator.pm: added DRI experimental support (sis, radeon). Prefer
- XF3 for SiS card.
-
- * pkgs.pm: fixed problem for updating hdlist after going back to partition
- step.
-
-2001/02/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/tools.c, mdk-stage1/config-stage1.h, mdk-stage1/network.c:
- better memory detection (from wonderful drakx)
-
-2001/02/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated Norwegian file
-
-2001/02/08 Pixel <pixel@mandrakesoft.com>
-
- * common.pm (availableRamMB): cleanup
-
- * standalone.pm, standalone/XFdrake: make sure SHARE_PATH is set now in
- standalone
-
-2001/02/07 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed unknown package ARRAY... and locales selection
- according to langs.
-
- * modules.pm: fixed module name without text for SCSI configuration
- dialog, add log.
-
-2001/02/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/probing.h, mdk-stage1/stage1.h,
- mdk-stage1/tools.c, mdk-stage1/automatic.c, mdk-stage1/init.c,
- mdk-stage1/probing.c, mdk-stage1/automatic.h, mdk-stage1/modules.c,
- mdk-stage1/network.c:
- - use description of network cards when you have to select between
- interfaces; has accuracy even in the case of multiple interface for a
- given kernel module
- - write down a small "shell" to change parameters on the fly (needs
- compile option SPAWN_INTERACTIVE)
-
-2001/02/07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): better fix for getting
- max install size.
- (choosePackages): call setSelectedFromCompssList with empty
- compssUsersChoice meaning max
-
- * common.pm (formatXiB): more precise for cases like 1_234_000 -> 1.2GB
-
-2001/02/07 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixed unknown package ARRAY... and locales selection
- according to langs.
-
-2001/02/07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): better fix for getting
- max install size.
- (choosePackages): call setSelectedFromCompssList with empty
- compssUsersChoice meaning max
-
- * common.pm (formatXiB): more precise for cases like 1_234_000 -> 1.2GB
-
-2001/02/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: tag VERSION as 8.0 since stage2 graphics now show
- 8.0
-
- * mdk-stage1/network.c: don't reverse hostname lookup if dhcp already gave
- hostname+domain
-
-2001/02/07 Pixel <pixel@mandrakesoft.com>
-
- * share/logo-mandrake.xpm: xpm files should be xpm, not pngs :-(
-
- * detect_devices.pm (hasPCMCIA): created (check for /proc/pcmcia)
-
- * install_steps_interactive.pm (miscellaneous): remove asking about
- numlock and hd optimizations,
- deprecates it (aka don't do anything)
-
- * Xconfigurator.pm (main): don't need isLaptop anymore, use
- detect_devices::hasPCMCIA
-
- * bootloader.pm (suggest): read CLEAN_TMP from sysconfig/system, default
- value of memsize
- if given
- (install): save CLEAN_TMP in sysconfig/system
- (get_append, add_append): get or set an append value
- (has_profiles, set_profiles): get or add an entry office for profiles,
- also add prof=Home in
- the default entry
-
- * any.pm (setupBootloader): take care of profiles and memsize
- (facesnames): only display icons capitalized. This goes along the new
- mandrake_desk where capitalized named faces are the new one. [a-z].*
- icons
- being only kept for compatibility. (in case no capitalized icons
- available
- display everything (compatibility with old mandrake_desk)
-
- * standalone/draknet, standalone/XFdrake: don't pass isLaptop
-
- * install_steps.pm (setupBootloaderBefore, miscellaneousBefore): remove
- taking care of
- profiles and memsize. Now in any & bootloader
- (miscellaneousBefore): CLEAN_TMP is now in $o->{bootloader}, not in
- $o->{miscellaneous} anymore
-
- * install_gtk.pm (create_help_window, create_logo_window): use gtkxpm
-
- * netconnect.pm: remove the $isLaptop unused from a hell lot of functions
-
- * install2.pm (@installSteps): remove miscellaneous
- (main): don't remove pcmcia modules anymore (not there anymore), remove
- /sbin/stage1
-
-2001/02/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: tag VERSION as 8.0 since stage2 graphics now show
- 8.0
-
- * mdk-stage1/network.c: don't reverse hostname lookup if dhcp already gave
- hostname+domain
-
-2001/02/07 Pixel <pixel@mandrakesoft.com>
-
- * share/logo-mandrake.xpm: xpm files should be xpm, not pngs :-(
-
- * detect_devices.pm (hasPCMCIA): created (check for /proc/pcmcia)
-
- * install_steps_interactive.pm (miscellaneous): remove asking about
- numlock and hd optimizations,
- deprecates it (aka don't do anything)
-
- * Xconfigurator.pm (main): don't need isLaptop anymore, use
- detect_devices::hasPCMCIA
-
- * bootloader.pm (suggest): read CLEAN_TMP from sysconfig/system, default
- value of memsize
- if given
- (install): save CLEAN_TMP in sysconfig/system
- (get_append, add_append): get or set an append value
- (has_profiles, set_profiles): get or add an entry office for profiles,
- also add prof=Home in
- the default entry
-
- * any.pm (setupBootloader): take care of profiles and memsize
- (facesnames): only display icons capitalized. This goes along the new
- mandrake_desk where capitalized named faces are the new one. [a-z].*
- icons
- being only kept for compatibility. (in case no capitalized icons
- available
- display everything (compatibility with old mandrake_desk)
-
- * standalone/draknet, standalone/XFdrake: don't pass isLaptop
-
- * install_steps.pm (setupBootloaderBefore, miscellaneousBefore): remove
- taking care of
- profiles and memsize. Now in any & bootloader
- (miscellaneousBefore): CLEAN_TMP is now in $o->{bootloader}, not in
- $o->{miscellaneous} anymore
-
- * install_gtk.pm (create_help_window, create_logo_window): use gtkxpm
-
- * netconnect.pm: remove the $isLaptop unused from a hell lot of functions
-
- * install2.pm (@installSteps): remove miscellaneous
- (main): don't remove pcmcia modules anymore (not there anymore), remove
- /sbin/stage1
-
-2001/02/07 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * share/rpmsrate: Add usbd to SYSTEM.
-
-2001/02/07 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: updated wizard mode, intro and other stuff
-
- * interactive_gtk.pm, interactive.pm, my_gtk.pm: updated wizard mode
-
- * share/logo-mandrake.xpm: new logo
-
-2001/02/07 François Pons <fpons@mandrakesoft.com>
-
- * http.pm, ftp.pm, pkgs.pm: now fully fixed ftp connection (and http too)
- caused by forked DrakX
- with latent ftp connection.
-
-2001/02/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile: tag VERSION as 8.0 since stage2 graphics now show
- 8.0
-
- * mdk-stage1/network.c: don't reverse hostname lookup if dhcp already gave
- hostname+domain
-
-2001/02/07 Pixel <pixel@mandrakesoft.com>
-
- * share/logo-mandrake.xpm: xpm files should be xpm, not pngs :-(
-
- * detect_devices.pm (hasPCMCIA): created (check for /proc/pcmcia)
-
- * install_steps_interactive.pm (miscellaneous): remove asking about
- numlock and hd optimizations,
- deprecates it (aka don't do anything)
-
- * Xconfigurator.pm (main): don't need isLaptop anymore, use
- detect_devices::hasPCMCIA
-
- * bootloader.pm (suggest): read CLEAN_TMP from sysconfig/system, default
- value of memsize
- if given
- (install): save CLEAN_TMP in sysconfig/system
- (get_append, add_append): get or set an append value
- (has_profiles, set_profiles): get or add an entry office for profiles,
- also add prof=Home in
- the default entry
-
- * any.pm (setupBootloader): take care of profiles and memsize
- (facesnames): only display icons capitalized. This goes along the new
- mandrake_desk where capitalized named faces are the new one. [a-z].*
- icons
- being only kept for compatibility. (in case no capitalized icons
- available
- display everything (compatibility with old mandrake_desk)
-
- * standalone/draknet, standalone/XFdrake: don't pass isLaptop
-
- * install_steps.pm (setupBootloaderBefore, miscellaneousBefore): remove
- taking care of
- profiles and memsize. Now in any & bootloader
- (miscellaneousBefore): CLEAN_TMP is now in $o->{bootloader}, not in
- $o->{miscellaneous} anymore
-
- * install_gtk.pm (create_help_window, create_logo_window): use gtkxpm
-
- * netconnect.pm: remove the $isLaptop unused from a hell lot of functions
-
- * install2.pm (@installSteps): remove miscellaneous
- (main): don't remove pcmcia modules anymore (not there anymore), remove
- /sbin/stage1
-
-2001/02/07 siegel
-
- * share/po/de.po: new german version
-
-2001/02/06 François Pons <fpons@mandrakesoft.com>
-
- * ftp.pm: reworked ftp behaviour a bit for cooperative connection (avoid
- opening
- and closing connection too fast for each transaction). There seems
- to be some problem for retrieving twice a package, this cause huge pause
- between each transaction, the best is to avoid them so ?
-
-2001/02/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/tools.c, mdk-stage1/stdio-frontend.c, mdk-stage1/stage1.c,
- mdk-stage1/init.c, mdk-stage1/newt-frontend.c, mdk-stage1/network.c,
- mdk-stage1/modules.c, mdk-stage1/disk.c:
- - slighty change the message when exiting successfully from install,
- to not mess with abnormal termination
- - get back dialog for hostname and domain in case of unable to guess
- domain
- - try to resolve DNS if self-ip can't resolve, to guess domain
- - remember entries so that when there is a problem you don't have to
- re-enter everything (ncurses sucking stuff in case of stdio-frontend..)
- - use larger buffer for list_directory since in /dev there can be
- *many* files
-
-2001/02/05 dam's <damien@mandrakesoft.com>
-
- * Makefile.drakxtools, Makefile: added wizard.rc handling in Makfiles.
-
- * standalone/draknet: added infos recovering.
-
- * netconnect.pm: added load_conf() to recover saved infos from conffile.
-
-2001/02/05 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: removed abusive white char.
- updated to use urpmi new format (change fakemedium to better label)
- fixed frame buffer usage if not enabled (installation of Aurora)
- clean up and remove unused code.
-
- * ftp.pm: rebuild URLPREFIX as stage1 does not provide it anymore.
-
- * pkgs.pm: updated to use urpmi new format (change fakemedium to better
- label)
-
- * Xconfigurator.pm: Removed Device3Dfx as it is no more.
-
- * install_steps.pm: fixed frame buffer usage if not enabled (installation
- of Aurora)
- clean up and remove unused code.
-
-2001/02/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/list: updated list of gconv modules
-
-2001/02/05 Pixel <pixel@mandrakesoft.com>
-
- * commands.pm (head_tail): fix usage
-
- * interactive_gtk.pm (create_ctree): node_moveto done only if
- node_is_visible is not full
-
-2001/02/04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/mar/mar-frontend.c: fix bug when creating marfiles with
- file-not-found in args
-
-2001/02/04 Pixel <pixel@mandrakesoft.com>
-
- * interactive_newt.pm: fix adaptation to the terminal size, should now
- work in 80x25
-
- * Xconfigurator.pm (monitorConfiguration): better handling of auto_install
-
- * install_steps_interactive.pm (choosePackages): don't call
- chooseSizeToInstall even with experts
-
- * install_steps_gtk.pm (charsetChanged): re-create steps window
-
-2001/02/03 dam's <damien@mandrakesoft.com>
-
- * modules.pm, standalone/draknet, netconnect.pm: corrected module.conf
- update, net conf saving, and no wizard by default.
-
-2001/02/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2001/02/03 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (monitorConfiguration): ease use of {X}{type} in
- auto_installs
-
- * install_steps_gtk.pm (charsetChanged): created, takes care of setting to
- the right charset the windows
-
- * install_steps_interactive.pm (selectLanguage): call charsetChanged
-
- * share/rpmsrate: fix ``LOCALES "zh_CN"'' with ``LOCALES"zh_CN"''
- move ftp to SYSTEM so that it is installed
-
- * Makefile: install cardmgr
-
- * modules.pm (configure_pcmcia): cleanup
-
-2001/02/03 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (monitorConfiguration): ease use of {X}{type} in
- auto_installs
-
- * install_steps_gtk.pm (charsetChanged): created, takes care of setting to
- the right charset the windows
-
- * install_steps_interactive.pm (selectLanguage): call charsetChanged
-
- * share/rpmsrate: fix ``LOCALES "zh_CN"'' with ``LOCALES"zh_CN"''
- move ftp to SYSTEM so that it is installed
-
- * Makefile: install cardmgr
-
- * modules.pm (configure_pcmcia): cleanup
-
-2001/02/02 dam's <damien@mandrakesoft.com>
-
- * share/wizard.rc: added rc file for wizard mode
-
-2001/02/02 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (monitorConfiguration): better default for DDC probe
- fails and
- auto_install and not provided any info about the monitor
-
- * my_gtk.pm (gtkcreate_xpm): error handling with error message
-
- * share/rpmsrate: all GNOME and KDE moved out of GRAPHICAL_DESKTOP
-
- * install_steps.pm (configureXBefore): set XKB_IN_USE=no if !$has_xkb in
- /etc/sysconfig/i18n
-
- * mdk-stage1/disk.c (try_with_device): bloody guillaume changed
- /tmp/hdimage to /tmp/disk without even
- telling, changing it back as i don't see any good reason for the move.
-
- * install_any.pm (setPackages): in auto_installs, default to all groups
- chosen, unless
- compssUsersChoice exist. Won't change anything unless compssListLevel is
- used of course
-
- * Xconfigurator_consts.pm: add low_default_monitor for default of
- auto_installs
-
- * interactive_gtk.pm (ask_from_entries_refW): use gtkxpm
-
- * Makefile, partition_table.pm, pkgs.pm, partition_table_raw.pm,
- diskdrake.pm: using the new formatXiB
-
- * detect_devices.pm (getCompaqSmartArray): adapted getCompaqSmartArray to
- the fact that kernel
- 2.4 uses /proc/driver/array instead of /proc/array. Also adapted the
- regexp now that ida/c0d0p? is no more at the beginning of the line.
- (get): cleanup, remove hasIDE hasSCSI...
-
- * common.pm (formatXiB): created, format a number in human readable format
-
-2001/02/02 Pixel <pixel@mandrakesoft.com>
-
- * mdk-stage1/disk.c (try_with_device): bloody guillaume changed
- /tmp/hdimage to /tmp/disk without even
- telling, changing it back as i don't see any good reason for the move.
-
-2001/02/02 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm, standalone/draknet, netconnect.pm, my_gtk.pm,
- standalone/diskdrake: recoded wizard mode
- corrected some stuff.
- trying not to break draknet for cooker snapshot
-
-2001/02/02 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (monitorConfiguration): better default for DDC probe
- fails and
- auto_install and not provided any info about the monitor
-
- * install_any.pm (setPackages): in auto_installs, default to all groups
- chosen, unless
- compssUsersChoice exist. Won't change anything unless compssListLevel is
- used of course
-
- * share/locales.tar.bz2: yet another LC_NUMERIC, seems like the previous i
- chose was glibc-2.1 :-(
- this one en_US and seems all right!
-
- * Xconfigurator_consts.pm: add low_default_monitor for default of
- auto_installs
-
- * Makefile, partition_table.pm, pkgs.pm, partition_table_raw.pm,
- diskdrake.pm: using the new formatXiB
-
- * install_steps.pm (configureXBefore): set XKB_IN_USE=no if !$has_xkb in
- /etc/sysconfig/i18n
-
- * common.pm (formatXiB): created, format a number in human readable format
-
- * mdk-stage1/disk.c (try_with_device): bloody guillaume changed
- /tmp/hdimage to /tmp/disk without even
- telling, changing it back as i don't see any good reason for the move.
-
-2001/02/01 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: new draknet snapshot. Still unuseable
-
- * interactive_gtk.pm, netconnect.pm, my_gtk.pm: updated embedded mode in
- install.
-
-2001/01/31 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: corected translation and conflict.
-
-2001/01/31 François Pons <fpons@mandrakesoft.com>
-
- * modules.pm: added missing die if modprobe failed on live upgrade.
-
- * pkgs.pm: added rpmrebuilddb directory cleaning before, remove old rpm
- file
- if everything has been successfull.
-
- * install_steps.pm: changed to clean selection for non expert as used for
- group selection
- because it is not cleaned, need better solution TODO.
-
-2001/01/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * standalone/draknet: Fixed English typos (in English you DON'T PUT SPACES
- BEFORE COLON (:);
- and it is "Profile" and not "Profil")
- CV:
- ----------------------------------------------------------------------
-
-2001/01/31 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackagesTree): created, simple
- ask_many_from_list to choose
- individual packages
- (choosePackages): log for debug
- (choosePackages): don't ask to install in beginner. Max is chosen
- (setRootPassword): help not based on installClass being server or not
- (selectInstallClass): remove installClass choice (was
- normal/devel/server)
- (chooseGroups): fix for individual package selection flag
-
- * netconnect.pm (get_net_device): more cleanup syntax
- (get_net_device): cleanup syntax
-
- * install_steps.pm (selectLanguage): warning for debug
- (miscellaneousBefore): don't use installClass to decide to use
- supermount
- or not. Choice is done on $::corporate. Can't say "no supermount in
- server
- installs" anymore
- (selectInstallClass): emptied
- (setupSCSI): don't configure PCMCIA if there is no PCMCIA
-
- * install_any.pm (g_auto_install): installClass removed
- (setPackages): do not preselect compssUsers entries
-
- * install2.pm (main): don't set installClass=normal meta_class desktop
- (deprecated)
- (miscellaneous): TYPE= removed (was installClass)
- (selectInstallClass): don't set $o->{partitions}. diskdrake will have to
- ask in a set of possibilities
- ($o): replace fclass by fbeginner and fexpert
- ($o): default security level to 2 since it can't be based on
- installClass (deprecated)
-
- * install_steps_gtk.pm: restore window size for time being
-
- * pkgs.pm (psUpdateHdlistsDeps): also copy rpmsrate
-
- * Xconfigurator.pm (main): better error message for auto_install failing
-
- * interactive.pm (ask_many_from_list): fix sorting
-
- * any.pm (set_autologin): log to ensure AUTOLOGIN is not badly set by
- drakx. Still
- need finding the guilty
-
-2001/01/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: more kbd corrections
- fixed soem keybopard values
-
-2001/01/31 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackagesTree): created, simple
- ask_many_from_list to choose
- individual packages
- (choosePackages): log for debug
- (choosePackages): don't ask to install in beginner. Max is chosen
- (setRootPassword): help not based on installClass being server or not
- (selectInstallClass): remove installClass choice (was
- normal/devel/server)
- (chooseGroups): fix for individual package selection flag
-
- * install_steps.pm (selectLanguage): warning for debug
- (miscellaneousBefore): don't use installClass to decide to use
- supermount
- or not. Choice is done on $::corporate. Can't say "no supermount in
- server
- installs" anymore
- (selectInstallClass): emptied
- (setupSCSI): don't configure PCMCIA if there is no PCMCIA
-
- * install_any.pm (g_auto_install): installClass removed
- (setPackages): do not preselect compssUsers entries
-
- * install2.pm (main): don't set installClass=normal meta_class desktop
- (deprecated)
- (miscellaneous): TYPE= removed (was installClass)
- (selectInstallClass): don't set $o->{partitions}. diskdrake will have to
- ask in a set of possibilities
- ($o): replace fclass by fbeginner and fexpert
- ($o): default security level to 2 since it can't be based on
- installClass (deprecated)
-
- * install_steps_gtk.pm: restore window size for time being
-
- * pkgs.pm (psUpdateHdlistsDeps): also copy rpmsrate
-
- * Xconfigurator.pm (main): better error message for auto_install failing
-
- * interactive.pm (ask_many_from_list): fix sorting
-
- * any.pm (set_autologin): log to ensure AUTOLOGIN is not badly set by
- drakx. Still
- need finding the guilty
-
-2001/01/30 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: new draknet. unstable
-
- * netconnect.pm: updated
- debugged network card configuration after pixelisation.
-
-2001/01/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stdio-frontend.c, mdk-stage1/newt-frontend.c: prevent from
- trying to set progressbar to more than 100% (rescue is more compressed
- than drakx)
-
- * share/rpmsrate: add ldetect to config stuff I want to have on all
- installs (lspcidrake)
-
-2001/01/30 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm, netconnect.pm, install_interactive.pm:
- adapt format functions given to ask_from_listf. $_ is no more set
-
- * mouse.pm (detect): replace commands::modprobe by modules::load as it
- should (or??)
-
- * perl2etags: adapt to new etags (emacs 21) format
-
- * raid.pm (make): replace commands::modprobe by modules::load as it should
- (or??)
-
- * perl2fcalls (@exclude_calls): add Eth as dam's use it quite a lot in his
- regexps
-
- * share/locales.tar.bz2: misc/LC_NUMERIC tells to use "," as number
- separator instead of ".".
- The sheer result is:
- "0.6" * 10 gives 0
- "0,6" * 10 gives 6
-
- So i have overwritten misc/LC_NUMERIC with
- /usr/share/locale/en/LC_NUMERIC and
- it works nicely now :)
-
-2001/01/29 dam's <damien@mandrakesoft.com>
-
- * standalone/drakboot: corrected typo
-
-2001/01/29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm:
- - deprecate "hdreiser.img" since we have room for "reiserfs.o" in
- "hd.img"
- - following deprecation of "other.img", reintegrate big modules in
- relevant boot disks
-
-2001/01/29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, share/po/et.po: updated Estonian file
-
-2001/01/29 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (getCompaqSmartArray): /proc/array/ida0 can contain
- more than one ida/c0d0p*
-
-2001/01/28 dam's <damien@mandrakesoft.com>
-
- * share/help.xpm, network.pm, ChangeLog, netconnect.pm: updated
-
-2001/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): fixed horrible
- bug causing reiserfs partitions
- not to be displayed/asked for formatting. The default value being used.
-
- * any.pm (get_autologin): adapt to new format of sysconfig/desktop
-
-2001/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): fixed horrible
- bug causing reiserfs partitions
- not to be displayed/asked for formatting. The default value being used.
-
- * any.pm (get_autologin): adapt to new format of sysconfig/desktop
-
-2001/01/28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): fixed horrible
- bug causing reiserfs partitions
- not to be displayed/asked for formatting. The default value being used.
-
- * any.pm (get_autologin): adapt to new format of sysconfig/desktop
-
-2001/01/28 siegel
-
- * share/po/de.po: new german version
-
-2001/01/26 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm: updated embedded mode
-
- * standalone/drakboot: added embedded mode
-
-2001/01/26 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/include/stdio.h: adjust include files to compile
- bzlib
-
- * mdk-stage1/stage1.c: restore passing of pcmcia info to stage2
-
- * mdk-stage1/bzlib/compress.c, mdk-stage1/bzlib/bzlib.c,
- mdk-stage1/bzlib/randtable.c, mdk-stage1/bzlib/huffman.c,
- mdk-stage1/modules.c, mdk-stage1/bzlib/crctable.c,
- mdk-stage1/bzlib/decompress.c, mdk-stage1/bzlib/Makefile,
- mdk-stage1/bzlib/bzlib_private.h, mdk-stage1/tools.c,
- mdk-stage1/Makefile, mdk-stage1/bzlib/blocksort.c:
- - use bzlib instead of zlib to reduce overall size
- - take home my own bzlib code to (1) reduce code size with good
- compile options (2) make it compile and link against dietlibc
-
- * mdk-stage1/mar/mar-extract-only.c, mdk-stage1/mar/mar-extract-only.h,
- mdk-stage1/mar/mar-frontend.c, mdk-stage1/mar/mar.h,
- mdk-stage1/mar/Makefile: mar now uses bzlib, no more zlib
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: comply to new "mar -l" format
-
-2001/01/26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): prepare for advertising...
-
- * interactive_newt.pm (ask_from_entries_refW): major rework for new
- format, still need work
- (ask_from_entries_refW): use NEWT_FLAG_PASSWORD (aka 1<<11) instead of
- NEWT_FLAG_HIDDEN
- (myTextbox): wrap the text if needed
- (myTextbox): use a vertical scrollbar if needed
-
- * Newt/Newt.xs (newtFormAddGrid): new name for
- newtGridAddComponentsToForm, swap
- parameters for much better understanding
- (newtListboxGetCurrent): returns a SV (together with
- newtListboxAddEntry)
- (newtListboxAddEntry): data is now a SV
-
-2001/01/26 siegel
-
- * share/po/de.po: .
-
-2001/01/26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): prepare for advertising...
-
- * interactive_newt.pm (ask_from_entries_refW): major rework for new
- format, still need work
- (ask_from_entries_refW): use NEWT_FLAG_PASSWORD (aka 1<<11) instead of
- NEWT_FLAG_HIDDEN
- (myTextbox): wrap the text if needed
- (myTextbox): use a vertical scrollbar if needed
-
- * Newt/Newt.xs (newtFormAddGrid): new name for
- newtGridAddComponentsToForm, swap
- parameters for much better understanding
- (newtListboxGetCurrent): returns a SV (together with
- newtListboxAddEntry)
- (newtListboxAddEntry): data is now a SV
-
-2001/01/26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (installPackages): prepare for advertising...
-
- * interactive_newt.pm (ask_from_entries_refW): major rework for new
- format, still need work
- (ask_from_entries_refW): use NEWT_FLAG_PASSWORD (aka 1<<11) instead of
- NEWT_FLAG_HIDDEN
- (myTextbox): wrap the text if needed
- (myTextbox): use a vertical scrollbar if needed
-
- * Newt/Newt.xs (newtFormAddGrid): new name for
- newtGridAddComponentsToForm, swap
- parameters for much better understanding
- (newtListboxGetCurrent): returns a SV (together with
- newtListboxAddEntry)
- (newtListboxAddEntry): data is now a SV
-
-2001/01/25 dam's <damien@mandrakesoft.com>
-
- * install2.pm: disable steps 'packages choice', 'configure X', and
- 'configure' 'printer'
-
- * install_steps_interactive.pm: don't oblige user addition
-
- * network.pm: display ethernet module
-
- * netconnect.pm: network informations filled into
- $prefix/var/lib/naat/configuration
-
-2001/01/25 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1-data/stage1.tar.bz2: restore symlink /sbin/sh ->
- /usr/bin/sh for stage2
-
- * mdk-stage1/probing.h: better tightness of probing stuff
-
- * mdk-stage1/probing.c: better tightness of probing stuff
- print warning message when insmod of PCI-detected device fails
-
- * mdk-stage1/stage1.c:
- - mdk-stage1: now linux-2.4 uses floppy.o to access floppy drives
- - remove fat/vfat modules from some boot floppies now that we don't
- need it anymore
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: re-integrate autoprobe of
- tulip network cards, kernel-2.4 has strange way to classify some of its
- net modules..
-
-2001/01/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: Waw, italian translator is very fast :)
- updated Indonesian and Italian fiels
-
- * share/po/id.po: updated Indonesian and Italian fiels
-
- * share/locales.tar.bz2: added iso9 locale definitions
-
- * lang.pm: fixed LANGUAGE for mk locale
-
-2001/01/25 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (spawnShell): fix error message
-
-2001/01/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1-data/stage1.tar.bz2:
- - clean up deprecated symlinks (insmod, rmmod, cardmgr)
- - remove unecessary device files
-
- * mdk-stage1/pcmcia/cardmgr.c, mdk-stage1/pcmcia/lex_config.c,
- mdk-stage1/pcmcia/vg468.h, mdk-stage1/pcmcia/cardmgr.h,
- mdk-stage1/pcmcia/bulkmem.h, mdk-stage1/pcmcia/i82365.h,
- mdk-stage1/pcmcia/cirrus.h, mdk-stage1/pcmcia/driver_ops.h,
- mdk-stage1/pcmcia/config.h, mdk-stage1/pcmcia/version.h,
- mdk-stage1/pcmcia/cistpl.h, mdk-stage1/stage1.c,
- mdk-stage1/pcmcia_config.patch, mdk-stage1/pcmcia/cs.h,
- mdk-stage1/pcmcia/Makefile, mdk-stage1/pcmcia/ds.h,
- mdk-stage1/pcmcia/pcmcia.h, mdk-stage1/pcmcia/cs_types.h,
- mdk-stage1/pcmcia/yacc_config.c, mdk-stage1/Makefile,
- mdk-stage1/pcmcia/tcic.h, mdk-stage1/pcmcia/yacc_config.h,
- mdk-stage1/pcmcia/pcmcia_probe.c: stage1: add pcmcia
-
-2001/01/24 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm (%types): s|Compaq|Compaq/HP| per request of fpitoun
-
- * install_steps.pm (afterInstallPackages): cleanup
-
- * interactive.pm: better documentation of ask_from_entries_refH features
- (entry)
-
-2001/01/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1-data/stage1.tar.bz2:
- - clean up deprecated symlinks (insmod, rmmod, cardmgr)
- - remove unecessary device files
-
- * mdk-stage1/pcmcia/cardmgr.c, mdk-stage1/pcmcia/lex_config.c,
- mdk-stage1/pcmcia/vg468.h, mdk-stage1/pcmcia/cardmgr.h,
- mdk-stage1/pcmcia/bulkmem.h, mdk-stage1/pcmcia/i82365.h,
- mdk-stage1/pcmcia/cirrus.h, mdk-stage1/pcmcia/driver_ops.h,
- mdk-stage1/pcmcia/config.h, mdk-stage1/pcmcia/version.h,
- mdk-stage1/pcmcia/cistpl.h, mdk-stage1/stage1.c,
- mdk-stage1/pcmcia_config.patch, mdk-stage1/pcmcia/cs.h,
- mdk-stage1/pcmcia/Makefile, mdk-stage1/pcmcia/ds.h,
- mdk-stage1/pcmcia/pcmcia.h, mdk-stage1/pcmcia/cs_types.h,
- mdk-stage1/pcmcia/yacc_config.c, mdk-stage1/Makefile,
- mdk-stage1/pcmcia/tcic.h, mdk-stage1/pcmcia/yacc_config.h,
- mdk-stage1/pcmcia/pcmcia_probe.c: stage1: add pcmcia
-
-2001/01/24 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm (%types): s|Compaq|Compaq/HP| per request of fpitoun
-
- * install_steps.pm (afterInstallPackages): cleanup
-
- * interactive.pm: better documentation of ask_from_entries_refH features
- (entry)
-
-2001/01/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated Greek file
-
-2001/01/22 dam's <damien@mandrakesoft.com>
-
- * install_steps_interactive.pm, netconnect.pm: corrected slide bar, and
- added network conf save in /root/networking.tmp
-
-2001/01/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/network.c: add automatic support in choice of NET device, in
- case of multiple NET devices
- consistent dot-terminated error messages, consistent no-dot log messages
- re-put Netmask input per default (void entry -> automatic guess)
-
- * mdk-stage1/stage1.c, mdk-stage1/dhcp.c, mdk-stage1/modules.c: consistent
- dot-terminated error messages, consistent no-dot log messages
-
-2001/01/22 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/id.po: updated Indonesian file
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/es.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/ko.po,
- share/po/cy.po, share/po/nl.po, share/po/ja.po, share/po/sv.po,
- share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po,
- share/po/pl.po, netconnect.pm, share/po/no.po, share/po/fi.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated po files
-
- * share/po/wa.po: updated po files
- updated pot file
-
- * install2.pm, lang.pm: fixed the places where console fonts and related
- files are put under
- /etc/sysconfig to the places really used by console-tools
-
- * share/po/DrakX.pot: updated pot file
-
- * share/po/hr.po: updated po files
- updated Croatian file
-
-2001/01/22 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (read_rpmsrate): if $packages is undef, ignore it. That way,
- read_rpmsrate
- can be called standalone.
-
- * network.pm, install_steps_interactive.pm, netconnect.pm, my_gtk.pm,
- install_interactive.pm, install2.pm, partition_table.pm, install_any.pm,
- any.pm, printerdrake.pm, Xconfigurator.pm, diskdrake.pm: $::beginner is
- deprecated, replaced by !$::expert
-
-2001/01/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/url.c, mdk-stage1/network.c: allow providing void password in
- network/ftp installs
-
-2001/01/21 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (create_ctree): fix case with formatted list
-
-2001/01/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/nfsmount.c: fix remaining perror's
-
- * mdk-stage1/url.c, mdk-stage1/network.c: allow providing void password in
- network/ftp installs
-
-2001/01/21 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (create_ctree): fix case with formatted list
-
-2001/01/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/stage1.c, mdk-stage1/nfsmount.c: fix remaining perror's
-
-2001/01/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po, share/po/da.po: updated Danish and Brazilian files
-
-2001/01/21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/nfsmount.c: fix remaining perror's
-
- * mdk-stage1/stage1.c: fix remaining perror's
- - better msg in fatal errors
- - do not include code to spawn a shell for releases
-
-2001/01/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po, share/po/da.po: updated Danish and Brazilian files
-
-2001/01/21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectMouse): use ask_from_treelist_
-
- * interactive.pm (ask_from_treelist_): created, split with the separator,
- call translate on
- words, then re-join.
-
-2001/01/19 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: fixes for CD not changeable.
-
- * install_steps_interactive.pm: fixed unselect group and inoperant
- individual package selection.
- removed expert mode and install class.
-
-2001/01/18 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: fixed obligation of relative large install, now
- minimum is lesser.
-
- * install_steps_gtk.pm: make sure no ratio above 1 can occur, still need
- to see why as it happens
- on install-abort-choices-install or
- install-abort-choices-fs-format(none)-choices-install
-
- * live_install: update live install to match /tmp/image instead of
- /tmp/rhimage.
-
-2001/01/17 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm, install_any.pm: fixes with /tmp/rhimage and
- /tmp/image.
-
- * pkgs.pm: update to use new header file format in hdlist (added arch) but
- depslist has not it...
-
- * install2.pm: fixes with /tmp/rhimage and /tmp/image
-
-2001/01/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/bg.po: updated bulgarian file
-
-2001/01/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/url.c: use strrchr instead of doing it by hand
-
- * mdk-stage1/insmod-busybox/busybox.h,
- mdk-stage1/insmod-busybox/utility.c, mdk-stage1/insmod-busybox/insmod.c:
-
- - replace remaining perror's with log_perror's
- - little code cleanup
-
- * mdk-stage1/stage1-data/stage1.tar.bz2,
- mdk-stage1/stage1-data/stage1-with-sash.tar.bz2: add /dev/fd0
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.h, mdk-stage1/tools.c,
- mdk-stage1/tools.h, mdk-stage1/disk.c, mdk-stage1/modules.c:
- - add load of third party modules in Expert mode (PS rulz)
-
-2001/01/12 siegel
-
- * share/po/de.po: updates
-
-2001/01/12 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed addUser for invocation of
- any::ask_users.
- fixed bad invocation of installation of X server.
-
-2001/01/12 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/cdrom.c: add more memory carefulness with CDROM install
- - add wait_message for initializing of CDROM's (it can be long when
- it's SCSI)
- - print CDROM drive names (model) in dialogs
-
- * mdk-stage1/mount.c, mdk-stage1/lomount.c, mdk-stage1/disk.c:
- - fix behaviour with bad ISO images (DISK installs)
- - better dialogs for DISK installs
-
-2001/01/12 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: make lang list in format for tree-selector
-
-2001/01/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/disk.c: fix failing umount for DISK installs in some failing
- loopback situations
- act nicely when no partitions are found on some disk
-
- * mdk-stage1/modules.h: polish generic blank.img situation (no modules
- and/or modules.dep available)
-
- * mdk-stage1/lomount.c: fix failing umount for DISK installs in some
- failing loopback situations
- better log messages
- continue anyway when insmod'ing of modules fail (for blank.img)
-
- * mdk-stage1/probing.c: close some fd's
-
- * mdk-stage1/stage1.c, mdk-stage1/modules.c: polish generic blank.img
- situation (no modules and/or modules.dep available)
- continue anyway when insmod'ing of modules fail (for blank.img)
-
-2001/01/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/Makefile, mdk-stage1/disk.c:
- - add DISK install from ISO image file
- - add FTP
- - add HTTP
- - use single place for mountpoints and static directories
-
- * mdk-stage1/hack, mdk-stage1/lomount.c, mdk-stage1/lomount.h:
- - add DISK install from ISO image file
-
- * mdk-stage1/stage1.c, mdk-stage1/config-stage1.h, mdk-stage1/stage1.h,
- mdk-stage1/tools.c, mdk-stage1/stdio-frontend.c, mdk-stage1/cdrom.c,
- mdk-stage1/tools.h, mdk-stage1/newt-frontend.c, mdk-stage1/network.c:
- - add FTP
- - add HTTP
- - use single place for mountpoints and static directories
-
- * mdk-stage1/insmod-busybox/Config.h: tweak config
-
-2001/01/11 Pixel <pixel@mandrakesoft.com>
-
- * standalone/adduserdrake: adduserdrake may handles autologin
-
- * install_steps.pm (addUser): set autologin
-
- * install2.pm (addUser): moved setAuthentication to install_steps::addUser
-
- * install_steps_interactive.pm (addUser): fix
-
-2001/01/11 dam's <damien@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm, ChangeLog,
- netconnect.pm: updated
-
-2001/01/11 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/pci-resource/update-pci-ids.pl: remove nasty messages when
- mar or marfiles not available to perform consistency check
-
-2001/01/11 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (configureX): call directly $o->pkg_install, no need to
- add 'XFree86-' at the beginning
- (addUser): use any::write_passwd_user
- (setRootPassword): use any::write_passwd_user
- (configureX): fix bad $install given to Xconfigurator::main
-
- * any.pm (write_passwd_user): add or update an entry in /etc/passwd
- (ask_users): created, interactively ask users to add (used in
- adduserdrake and install)
- (allocUsers, addUsers): changed the prototype
- (setupBootloader): grep out fat partitions for the "Boot device"
- propositions (people are too stupid)
-
- * my_gtk.pm (main): third argument is a function to call before leaving in
- case of
- "cancel" clicked.
-
- * interactive_gtk.pm (create_ctree): fix default value selecting failing
- (in case of "format")
- (ask_from_entries_refW): apply "format" on label when icon is missing
- for iconlist
- (ask_from_entries_refW): handle "canceled" callback. Permits to overrule
- the cancel.
-
- * install_any.pm (g_auto_install): deep copy of $o->{users} because we're
- modifying it
-
- * install_steps_interactive.pm (addUser): use any::ask_users
-
- * standalone/adduserdrake: use any::ask_users
-
- * Xconfig.pm (getinfoFromDDC): removed devices::make("/dev/zero") (now in
- install2::main)
-
- * install2.pm (main): move devices::make("/dev/zero") needed by ddcxinfos
- here
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): "canceled"
- callback defaults
- to "sub { 0 }"
-
-2001/01/11 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_entries_refW): apply "format" on label when
- icon is missing for iconlist
- (ask_from_entries_refW): handle "canceled" callback. Permits to overrule
- the cancel.
-
- * install_steps.pm (configureX): call directly $o->pkg_install, no need to
- add 'XFree86-' at
- the beginning
- (addUser): use any::write_passwd_user
- (setRootPassword): use any::write_passwd_user
- (configureX): fix bad $install given to Xconfigurator::main
-
- * any.pm (write_passwd_user): add or update an entry in /etc/passwd
- (ask_users): created, interactively ask users to add (used in
- adduserdrake
- and install)
- (allocUsers, addUsers): changed the prototype
- (setupBootloader): grep out fat partitions for the "Boot device"
- propositions (people are too stupid)
-
- * my_gtk.pm (main): third argument is a function to call before leaving in
- case of
- "cancel" clicked.
-
- * install_any.pm (g_auto_install): deep copy of $o->{users} because we're
- modifying it
-
- * install_steps_interactive.pm (addUser): use any::ask_users
-
- * standalone/adduserdrake: use any::ask_users
-
- * Xconfig.pm (getinfoFromDDC): removed devices::make("/dev/zero") (now in
- install2::main)
-
- * install2.pm (main): move devices::make("/dev/zero") needed by ddcxinfos
- here
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): "canceled"
- callback defaults
- to "sub { 0 }"
-
-2001/01/11 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (autologin): moved to package any
-
- * interactive_gtk.pm (ask_from_entries_refW): apply "format" on label when
- icon is missing for iconlist
- (ask_from_entries_refW): handle "canceled" callback. Permits to overrule
- the cancel.
-
- * install_steps.pm (configureX): call directly $o->pkg_install, no need to
- add 'XFree86-' at
- the beginning
- (addUser): use any::write_passwd_user
- (setRootPassword): use any::write_passwd_user
- (configureX): fix bad $install given to Xconfigurator::main
-
- * any.pm (write_passwd_user): add or update an entry in /etc/passwd
- (ask_users): created, interactively ask users to add (used in
- adduserdrake
- and install)
- (allocUsers, addUsers): changed the prototype
- (setupBootloader): grep out fat partitions for the "Boot device"
- propositions (people are too stupid)
-
- * my_gtk.pm (main): third argument is a function to call before leaving in
- case of
- "cancel" clicked.
-
- * install_any.pm (g_auto_install): deep copy of $o->{users} because we're
- modifying it
-
- * Makefile.config (STANDALONEPMS): remove netdrake (which is deprecated)
-
- * install_steps_interactive.pm (addUser): use any::ask_users
-
- * standalone/adduserdrake: use any::ask_users
-
- * Xconfig.pm (getinfoFromDDC): removed devices::make("/dev/zero") (now in
- install2::main)
-
- * install2.pm (main): move devices::make("/dev/zero") needed by ddcxinfos
- here
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): "canceled"
- callback defaults
- to "sub { 0 }"
-
-2001/01/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * mdk-stage1/dietlibc/dietfeatures.h: tweak dietlibc config to get minimal
- size
-
- * mdk-stage1/dietlibc/lib/vsscanf.c, mdk-stage1/dietlibc/lib/ttyname.c:
- remove warnings from compile
-
-2001/01/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_entries_refW): add handling of 'changed'
- callback on clist/list/ctree
-
- * install_steps.pm (addUser): use any::pack_passwd
- (setRootPassword): use any::unpack_passwd and any::pack_passwd
-
- * Xconfigurator.pm (cardConfiguration): adapt for $install which is
- generic
- (autologin): use $install which is now generic
-
- * install_steps_interactive.pm (selectLanguage): many_languages choice
- moved there as advanced
-
- * my_gtk.pm (create_packtable): yet another try to have something nice :)
- !! uses Gtk::Table::attach_raw which is available in
- perl-GTK-0.7004-6mdk !!
- (create_box_with_title): with the size given to set_usize for the scroll
- containing the text widget in case of long text. and don't let the
- scroll
- grow.
- (gtktext_insert): remove adding an ending "\n" (no more needed?)
-
- * any.pm (setAutologin): cleanup
- (pack_passwd, unpack_passwd): created
-
-2001/01/10 dam's <damien@mandrakesoft.com>
-
- * install_steps_interactive.pm: corrected last message . firewall
-
-2001/01/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: fix modules.pm for modules to be skept in stage1 (ppa, imm,
- parport*, plip)
-
-2001/01/10 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_entries_refW): add handling of 'changed'
- callback on clist/list/ctree
-
- * install_steps.pm (addUser): use any::pack_passwd
- (setRootPassword): use any::unpack_passwd and any::pack_passwd
-
- * my_gtk.pm (create_packtable): yet another try to have something nice :)
- !! uses Gtk::Table::attach_raw which is available in
- perl-GTK-0.7004-6mdk !!
- (create_box_with_title): with the size given to set_usize for the scroll
- containing the text widget in case of long text. and don't let the
- scroll
- grow.
- (gtktext_insert): remove adding an ending "\n" (no more needed?)
-
- * any.pm (setAutologin): cleanup
- (pack_passwd, unpack_passwd): created
-
- * Xconfigurator.pm (cardConfiguration): adapt for $install which is
- generic
- (autologin): use $install which is now generic
-
- * install_steps_interactive.pm (selectLanguage): many_languages choice
- moved there as advanced
-
- * standalone/printerdrake, standalone/keyboarddrake, standalone/draknet2,
- standalone/livedrake, standalone/drakboot, standalone/draksec,
- standalone/netdrake, standalone/mousedrake, standalone/drakgw,
- standalone/drakxservices, standalone.pm, standalone/draknet,
- standalone/XFdrake, standalone/diskdrake, standalone/adduserdrake,
- standalone/drakxconf: use standalone and standalone::pkgs_install
-
-2001/01/09 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (drakx_version): nicer (4gc)
-
- * install2.pm (main): log::l the drakx_version
-
- * my_gtk.pm (create_packtable): no_expand option added
-
- * interactive.pm (ask_from_entries_refH_powered_normalize): field
- "disabled" added,
- "advanced_messages" added
-
- * lang.pm (langs): created (transform the $o->{langs} hash ref in a list)
- (pack_langs): use lang::langs
-
- * install_steps.pm (selectLanguage): $o->{langs} is now a ref so
- initialize as such
-
- * Makefile (get_needed_files): generate /usr/share/VERSION which contains
- the version
- of ChangeLog (which is updated at each upload)
-
- * install_steps_interactive.pm (choosePartitionsToFormat): handle "check
- for bad blocks" as advanced
- (setRootPassword): remove choosing non-md5 or non-shadow passwords.
-
- * install_any.pm (setPackages): use lang::langs instead of using
- $o->{langs} as a array ref (it is not so anymore)
- (spawnShell): print the drakx_version
-
-2001/01/08 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm: fixes
- (ask_from_treelistf, ask_from_treelist): now use ask_from_entries_refH
- (ask_from_entries_refH_powered): remove "1;" (was there for debugging)
-
- * interactive_gtk.pm: fixes
- (ask_from_treelistW): removed
- (create_ctree): created, used for ``type => treelist'' entries
-
- * my_gtk.pm: fixes
-
- * ChangeLog: New snapshot uploaded
-
-2001/01/07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sr.po, share/po/sp.po, share/po/no.po, share/po/cs.po: updated
- Czech, Norwegian and Serbian files
-
-2001/01/07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm: update code for new ask_from_entries_refH
- which doesn't handle optional ok/cancel names in arg 1.
- must be handled via ask_from_entries_refH_powered
- (selectLanguage, selectKeyboard): use ask_from_entries_refH instead of
- ask_from_listf_, it enables the use of advanced
-
- * any.pm, printerdrake.pm: update code for new ask_from_entries_refH which
- doesn't handle optional ok/cancel names in arg 1.
- must be handled via ask_from_entries_refH_powered
-
- * interactive.pm: update code for new ask_from_entries_refH which doesn't
- handle optional ok/cancel names in arg 1.
- must be handled via ask_from_entries_refH_powered
- (ask_from_listf_no_check): replaces ask_from_list_no_check
- (ask_from_entries_refH_powered): sorts the list if needed or wanted
-
- * partition_table_raw.pm (test_for_bad_drives): created
- - ugly stuff needed mainly for Western Digital IDE drives
- - try writing what we've just read, yells if it fails
- - testing on last sector of head #0 (unused in 99% cases)
-
- * ftp.pm (getFile): make it work (it used to dead-loop when getFile'ing an
- non-existent
- file, stressing the ftp server :-/ )
- for the moment, just release cdrom.img, hd.img and hdreiser.img
- others should should come...
-
- * install_steps.pm: for the moment, just release cdrom.img, hd.img and
- hdreiser.img
- others should should come...
-
- * interactive_gtk.pm (ask_from_listW): removed
- (create_list): calls "format" on list elems before prompting them
- (create_clist): created
- (ask_from_entries_refW): calls create_clist in case of list with no help
-
- * install_steps_gtk.pm (installPackages): autoflush stdout before beeping
- (installPackages): don't take into account the time when prompting the
- user
-
- * common.pm (may_apply): added
-
- * install_any.pm (getHds): test_for_bad_drives called on hard drives
- (getHds): ensure $o->{hds} is not set until the hard drives are checked
-
-2001/01/06 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm (setup): don't xmodmap if DISPLAY is unset
-
- * ChangeLog: New snapshot uploaded
- New snapshot uploaded
-
-2001/01/06 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm (setup): don't xmodmap if DISPLAY is unset
-
- * ChangeLog: New snapshot uploaded
-
-2001/01/06 Pixel <pixel@mandrakesoft.com>
-
- * keyboard.pm (setup): don't xmodmap if DISPLAY is unset
-
- * standalone/rpmdrake: deprecated (and has been for a long time now)
-
- * network.pm, install_steps_interactive.pm, netconnect.pm,
- install_interactive.pm, standalone/adduserdrake, any.pm,
- Makefile.config, printerdrake.pm, Xconfigurator.pm, diskdrake.pm:
- ask_from_entries_refH parameter format has changed so change all
- accesses to it.
-
-2001/01/05 François Pons <fpons@mandrakesoft.com>
-
- * lang.pm, keyboard.pm: forget _exit in child process after a fork of
- DrakX
- removed need of packdrake binary
-
- * Xconfigurator.pm: use of SHARE_PATH for MonitorsDB, Cards+, CardsNames
-
- * live_install2: cleanup to keep libperl.so but the right one
-
- * live_install: no more copy of files on live system, now use environment
- variable by DrakX cleanup
-
- * perl2fcalls: added packdrake call (via new but incomplete) and package
-
- * install_any.pm, commands.pm, pkgs.pm: removed need of packdrake binary
-
- * netconnect.pm: fixed syntax error
-
- * modules.pm: eval insmoding ide-cd (just in case)
- removed need of packdrake binary
-
-2001/01/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ja.po, share/po/ca.po, share/po/az.po: updated Azeri, Catalan
- and Japanese files
-
-2001/01/05 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm: help cperl-mode
-
- * interactive_gtk.pm, network.pm, install_steps_interactive.pm, my_gtk.pm,
- interactive.pm, printerdrake.pm, Xconfigurator.pm, diskdrake.pm: move to
- new ask_from's:
- - ask_from_entries_ref is deprecated, use ask_from_entries_refH
- - ask_from_list now calls ask_from_entries_refH_powered
- still not done:
- - ask_from_treelist should use ask_from_entries_refH_powered,
- and lists with no help should use CList (List is bad)
- - keyboard and mouse binding is still rough
- - enhance the look
-
- * keyboard.pm: add the percentage of each keyboard types (as a comment for
- now)
-
-2001/01/04 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: cleaned... everything should be buggy.
-
-2001/01/04 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed some old $p->{file} by new $p->[$FILE]
- code cleanup and fixes for lilo not upgrade
-
-2001/01/04 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * install_any.pm: fixed the functions doing the lists of languages
-
- * lang.pm: fixed the functions doing the lists of languages
- The list of languages now has complete locale names insted of just
- language
- code (that is needed to differentiate zh_CN and zh_TW among others)
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/az.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated Brazilian file
-
- * share/po/eu.po: updated Basque file
- updated Brazilian file
-
-2001/01/04 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: some pixelization using the new if_
-
- * install_steps_interactive.pm (setRootPassword): fix pixelization
- keep $o->{langs} unpacked to simplify things
- if_ pixelization
-
- * common.pm (%EXPORT_TAGS): add if_ in "common" exported tags
- (if_): created. Use it to replace things like
- ($::expert ? $val : ()) by if_($::expert, $val)
-
- * keyboard.pm: nl keyboard is not used, so defaults to us_intl
-
- * lang.pm, install_steps.pm, pkgs.pm, install_any.pm: keep $o->{langs}
- unpacked to simplify things
-
- * netconnect.pm: quite a few clean-up (and buggying)
-
-2001/01/03 dam's <damien@mandrakesoft.com>
-
- * install_steps_interactive.pm: admin user removed before beeing added
-
- * netconnect.pm: corrected typo
- LAN is configured with default value if firewall
-
-2001/01/03 François Pons <fpons@mandrakesoft.com>
-
- * diskdrake.pm: fixed invocation of change_type by clicking on legend
- unless expert
-
- * install2.pm: fixed usage with testing
-
- * install_steps.pm: fixed some other services to start in case something
- gets wrong,
- this fixes some deadlock on upgrade from 7.0.
- fixed usage with testing
-
- * partition_table.pm: fixed overlapping partitions between one extended
- and one regular primary.
- should be accepted (log printed instead of error) as diskdrake allow
- their
- creation in expert.
-
-2001/01/03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: add checks of dependencies on marfiles
- fix a couple of broken dependencies in modules.pm
-
-2001/01/03 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, share/locales.tar.bz2: locales in glibc 2.2 format
-
-2001/01/03 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): move the setting of PATH and spawnShell *after*
- setting $prefix
-
-2000/12/31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/rpmsrate: added a few locales dependences
-
-2000/12/29 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (addUser): typo fix
-
- * ChangeLog: New snapshot uploaded
-
- * ftp.pm (getFile): recall getFile after rewindGetFile
-
-2000/12/29 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (addUser): typo fix
-
- * ftp.pm (getFile): recall getFile after rewindGetFile
-
-2000/12/28 Pixel <pixel@mandrakesoft.com>
-
- * Makefile: now /usr/lib/X11 is a relative symlink to please mirrors and
- jako
-
-2000/12/26 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * keyboard.pm: Add the very ghost option REMOVE_MOD_META_L.
-
-2000/12/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated Lithuanian file
-
-2000/12/22 dam's <damien@mandrakesoft.com>
-
- * install_steps.pm, install_steps_interactive.pm: corrected admin user
- setting for firewall install.
-
-2000/12/22 François Pons <fpons@mandrakesoft.com>
-
- * modules.pm: fixed load_multi on live.
- added back all removed module with the new great mdk-stage1 of gégé.
-
-2000/12/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * modules.pm: make them work with kernel-2.4 by disabling non existent
- modules
-
-2000/12/22 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm, install2.pm: commit symlink /tmp/image /tmp/rhimage
-
-2000/12/21 Pixel <pixel@mandrakesoft.com>
-
- * ChangeLog: New snapshot uploaded
-
-2000/12/21 dam's <damien@mandrakesoft.com>
-
- * install2.pm: firewall : automatic class set when firewall (beginner=0)
-
- * install_steps_interactive.pm: if firewall, admin password obliged
-
- * install_steps.pm: added setAdminpassword (a little bit redundant, sorry)
-
- * any.pm: corrected module stuff.. Thanx to pixel
-
-2000/12/20 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (selectMouse): unsure the device exists
-
- * unused/christmas-karaoke.patch: handle isa cards
-
-2000/12/19 Pixel <pixel@mandrakesoft.com>
-
- * ChangeLog: New snapshot uploaded
- New snapshot uploaded
-
-2000/12/19 dam's <damien@mandrakesoft.com>
-
- * standalone/pixmaps/logo1.xpm, standalone/pixmaps/px3.xpm,
- standalone/pixmaps/draknet4.xpm, standalone/pixmaps/draknet1.xpm,
- standalone/pixmaps/modem.xpm, standalone/pixmaps/logo2.xpm,
- standalone/pixmaps/util6.gif, standalone/pixmaps/unknown.xpm,
- standalone/pixmaps/drakgw.xpm, standalone/pixmaps/px4.xpm,
- standalone/pixmaps/draknet5.xpm, standalone/pixmaps/px1.xpm,
- standalone/pixmaps/draknet2.xpm, standalone/pixmaps/logo3.xpm,
- standalone/pixmaps/util7.gif, standalone/pixmaps/port.xpm,
- standalone/pixmaps/draknet.xpm, standalone/pixmaps/ethernet.xpm,
- standalone/pixmaps/isdn.xpm, standalone/pixmaps/px2.xpm,
- standalone/pixmaps/draknet3.xpm: added control-center.
-
-2000/12/19 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: when loading /snd-card-/ module, load snd-pcm-oss
-
- * unused/christmas-karaoke.patch: Happy Christmas :)
-
- * install_any.pm: spawnShell: set DISPLAY, just in case :)
-
- * install2.pm: set PATH before doing spawnShell
-
- * Makefile: /usr/lib/X11 now exists on non-sparc (was only for sparc)
-
- * ChangeLog: New snapshot uploaded
-
-2000/12/18 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm: added embedded support for control-center
- corrected embedded support.
- new control center and related
-
- * netconnect.pm: corrected typo
- corrected typo
-
- * standalone/drakxservices, standalone/control-center, ChangeLog,
- standalone/XFdrake, standalone/draknet2, standalone/adduserdrake,
- standalone/drakboot: new control center and related
-
- * install_gtk.pm: added firewall support
-
- * install2.pm: included firewall handling
- changed firewall comportement
-
- * install_steps_interactive.pm: changed firewall comportement
-
- * modules.pm: corrected bad mergeinconf
-
-2000/12/18 Pixel <pixel@mandrakesoft.com>
-
- * Makefile, share/keymaps_generate: tar and bzip2 is cfj/xfj and no more
- cfI/xfI
- remove isdndb.net
-
-2000/12/19 dam's <damien@mandrakesoft.com>
-
- * standalone/pixmaps/logo1.xpm, standalone/pixmaps/px3.xpm,
- standalone/pixmaps/draknet4.xpm, standalone/pixmaps/draknet1.xpm,
- standalone/pixmaps/modem.xpm, standalone/pixmaps/logo2.xpm,
- standalone/pixmaps/util6.gif, standalone/pixmaps/unknown.xpm,
- standalone/pixmaps/drakgw.xpm, standalone/pixmaps/px4.xpm,
- standalone/pixmaps/draknet5.xpm, standalone/pixmaps/px1.xpm,
- standalone/pixmaps/draknet2.xpm, standalone/pixmaps/logo3.xpm,
- standalone/pixmaps/util7.gif, standalone/pixmaps/port.xpm,
- standalone/pixmaps/draknet.xpm, standalone/pixmaps/ethernet.xpm,
- standalone/pixmaps/isdn.xpm, standalone/pixmaps/px2.xpm,
- standalone/pixmaps/draknet3.xpm: added control-center.
-
-2000/12/19 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: when loading /snd-card-/ module, load snd-pcm-oss
-
- * unused/christmas-karaoke.patch: Happy Christmas :)
-
- * install_any.pm: spawnShell: set DISPLAY, just in case :)
-
- * install2.pm: set PATH before doing spawnShell
-
- * Makefile: /usr/lib/X11 now exists on non-sparc (was only for sparc)
-
-2000/12/18 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm: added embedded support for control-center
- corrected embedded support.
- new control center and related
-
- * netconnect.pm: corrected typo
- corrected typo
-
- * standalone/drakxservices, standalone/control-center, ChangeLog,
- standalone/XFdrake, standalone/draknet2, standalone/adduserdrake,
- standalone/drakboot: new control center and related
-
- * install_gtk.pm: added firewall support
-
- * install2.pm: included firewall handling
- changed firewall comportement
-
- * install_steps_interactive.pm: changed firewall comportement
-
- * modules.pm: corrected bad mergeinconf
-
-2000/12/18 Pixel <pixel@mandrakesoft.com>
-
- * Makefile, share/keymaps_generate: tar and bzip2 is cfj/xfj and no more
- cfI/xfI
- remove isdndb.net
-
-2000/12/16 Pixel <pixel@mandrakesoft.com>
-
- * standalone/mousedrake, standalone/drakgw: use ldetect-lst
-
- * Makefile.drakxtools: fix daminetsex
- use ldetect-lst
- pci_probing now done by libldetect
- config files moved in package ldetect-lst
-
- * share/list: use ldetect-lst
- pci_probing now done by libldetect
- config files moved in package ldetect-lst
-
- * any.pm: fix daminetsex
-
- * modules.pm, live_install, install2.pm, standalone/lspcidrake, pkgs.pm,
- mouse.pm: use ldetect-lst for usb => now auto detects mice types :)
-
- * c/stuff.xs.pm, detect_devices.pm: use ldetect-lst for usb => now auto
- detects mice types :)
- use ldetect-lst
- pci_probing now done by libldetect
- config files moved in package ldetect-lst
-
- * Makefile.config: fix daminetsex
- use ldetect-lst
-
- * Makefile: use ldetect-lst for usb => now auto detects mice types :)
- use ldetect-lst
-
- * netconnect.pm, share/CardsNames, c/Makefile.PL, Xconfigurator_new.pm,
- Xconfigurator.pm, share/Cards+, share/MonitorsDB, share/isdndb.net,
- share/Cards2CardsNames: pci_probing now done by libldetect
- config files moved in package ldetect-lst
-
-2000/12/15 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: Cards+ and CardsNames are moved to ldetect-lst
-
- * install_steps.pm: clean all unneeded stuff
-
-2000/12/14 dam's <damien@mandrakesoft.com>
-
- * any_new.pm, netconnect_new.pm: preparing for big jump.
-
- * netconnect.pm: Big jump. The *_new.pm are replaced by *.pm
- Everything should work, but you better test :)
-
- * standalone/control-center: big improvement and cosmetic changes
- a lot of improvement. Is able to launch multiples soft passing in
- arguments.
- new file. Its location should change soon.
-
- * any.pm: Big jump. The *_new.pm are replaced by *.pm
- Everything should work, but you better test :)
- corrected typo.
-
-2000/12/14 Pixel <pixel@mandrakesoft.com>
-
- * share/compssList: obsoleted by rpmsrate
-
- * share/rpmsrate: obsoletes compssList
-
- * share/compssUsers, install_steps.pm, install_steps_interactive.pm,
- Makefile, install_steps_gtk.pm, install2.pm, pkgs.pm, install_any.pm:
- move from compssList to rpmsrate
-
- * Newt/Newt.xs: cleanup (use of alloca to pass parameters)
-
-2000/12/13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/it.po: updated Italian file
-
-2000/12/12 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: typo + if firewall, don't display 'disable network'
-
- * standalone/draknet2: new version... still working on it
-
- * ChangeLog: commit
-
- * share/themes-mdk-Firewall.rc: added firewall theme
-
- * modules.pm: my fault, corrected renaud's patch incorporation
-
- * share/logo-mandrake-Firewall.xpm: new logo
-
-2000/12/12 François Pons <fpons@mandrakesoft.com>
-
- * share/list: added packdrake.pm as packdrake has been splited.
-
- * pkgs.pm: fixed versionCompare to always return number. added checking of
- version to
- select obsoletes on upgrade.
-
-2000/12/11 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: Radeon uses 3D now.
-
- * lang.pm: fixed write_langs for upgrade.
- i18n sucking fixes.
-
- * Xconfigurator.pm: Radeon uses 3D hw accel theoritically now.
-
-2000/12/09 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: Added configuration of Vietnamese input server
-
-2000/12/09 Pixel <pixel@mandrakesoft.com>
-
- * standalone/adduserdrake: remove debugging code
-
- * install2.pm (selectInstallClass): give $clicked to selectInstallClass
-
- * interactive_newt.pm (ask_from_entries_refW): reset all hidden entries to
- null in case of error
- on hidden entry cuz newt doesn't display null entries, disturbing
-
- * install_steps_interactive.pm (formatMountPartitions): the format
- partition dialog created at first use,
- so that it doesn't appear if no partitions are formatted.
- (selectInstallClass): ensure expert choice is kept if it was prechosen
- (selectInstallClass): if expert pre-chosen, ensure expert is kept
-
- * interactive_gtk.pm, install_steps.pm: small renicing
-
-2000/12/08 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed bug in list of packages provided by another one.
-
-2000/12/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po, share/po/no.po, share/po/DrakX.pot, share/po/es.po,
- share/po/fr.po, share/po/wa.po, share/po/da.po, share/po/de.po,
- share/po/az.po, share/po/tr.po: updated Brazilian file
-
-2000/12/08 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): warn if VERSION file doesn't exist
- (formatPartitions): call rotate_logs after mounting the partitions
-
- * mouse.pm (write_conf): fix to make make test_pms happy
-
- * install_steps.pm (exitInstall): save the report.bug in /root/report.bug
-
- * any.pm (rotate_logs): created, rotates ddebug.log and install.log in
- /root
-
- * ftp.pm (new): retry in case of ftp connection/login
-
- * commands.pm: report_bug: created, returns a string
-
-2000/12/07 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: corrected ADSL connection choice.
- corrected typo
-
-2000/12/06 dam's <damien@mandrakesoft.com>
-
- * install2.pm: erare humanum es
- firewall begins to infect the install :).
- new meta_class.
-
- * share/logo-mandrake-Firewall.xpm: aded logo for firewall
-
- * install_gtk.pm: corrected errors
- left pixmap centered if firewall
- improved the firewall theme.
- errare humanum es
- firewall infects the install.
- The logo is changed if firewall.
-
-2000/12/06 Pixel <pixel@mandrakesoft.com>
-
- * standalone/keyboarddrake: add possibility to use keyboarddrake
- non-interactive (aka give the keyboard as
- first parameter)
-
- * lang.pm, install_steps.pm, install_steps_interactive.pm, install2.pm,
- install_any.pm: adapt to the fact that RPM_INSTALL_LANG is obsoloted.
- Now rpm uses %_install_langs in /etc/rpm/macros
-
-2000/12/05 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: final fixes to versionCompare to make sure no deadlock can
- occurs.
-
- * Xconfigurator.pm: restored Matrox G200/G400 hw 3d accel configuration.
-
-2000/12/05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pt_BR.po, share/po/pl.po, share/po/da.po, share/po/fi.po,
- share/po/es.po: updated several pofiles
-
-2000/12/04 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: use isCdNotEjectable.
-
- * common.pm: added function isCdNotEjectable.
-
- * share/Cards+: SiS620 card are said to be unsupported by XF4.
-
- * pkgs.pm: load only one hdlist in memory if CD is not ejectable (low
- memory).
- fixed compareVersion for deadlock. removed silly CODE print on deporder
- problems.
-
- * Xconfigurator.pm: add Options sw_cursor for SiS 6326 in XF3 mode.
-
-2000/12/03 dam's <damien@mandrakesoft.com>
-
- * mouse.pm: incorporated cmodifications in the firewall branch
-
- * netconnect.pm: netconnect_new > netconnect.pm
-
- * netconnect_consts.pm: incorporated in the firewall branch.
-
- * standalone/draknet2: incoporated in the firewall branch
-
- * any_new.pm: any_new > any, so we remove it now.
-
- * netconnect_new.pm: netconnect_new > netconnect, so we remove it now.
- incorporated in the firewall branch
-
- * modules.pm: incorporated modifications to the firewall branch. Hope they
- won't break anything...
-
-2000/12/02 dam's <damien@mandrakesoft.com>
-
- * share/po/az.po: correction in firewall incorporated
-
- * ChangeLog: first attempt ro build the firewall install
-
- * standalone/mousedrake: incorporated in the firewall branch
-
- * share/po/ru.po, share/po/no.po, share/po/sk.po: correction incorporated
- in the firewall branch
-
-2000/11/28 dam's <damien@mandrakesoft.com>
-
- * modules.pm: included reno's patches. Now should work without kudzu.
- branch to build the firewall install.
-
- * standalone/pixmaps/port.xpm, standalone/pixmaps/.xvpics/px4.xpm,
- standalone/pixmaps/ethernet.xpm, standalone/pixmaps/.xvpics/px1.xpm,
- standalone/pixmaps/px2.xpm, standalone/pixmaps/unknown.xpm,
- standalone/pixmaps/.xvpics/px3.xpm, standalone/pixmaps/px4.xpm,
- standalone/pixmaps/px1.xpm, standalone/pixmaps/.xvpics/px2.xpm,
- standalone/pixmaps/px3.xpm, standalone/pixmaps/modem.xpm,
- standalone/pixmaps/isdn.xpm: Initial revision
- branch to build the firewall install.
-
- * partition_table_dos.pm, share/po/bg.po, share/po/sr.po,
- share/template.in/cdrom.kdelnk.in,
- share/template.in/cdrom.fsdev.kdelnk.in, share/po/hr.po, c/silo.c,
- Makefile, share/consolefonts/lat0-sun16,
- share/themes/DarkMarble-check_off.png,
- share/themes/marble3d-button_def.png, share/locales.tar.bz2.sparc,
- do_resize_fat, share/po/wa.po, share/po/is.po,
- share/themes/DarkMarble-button3_out_prelight.png, resize_fat/main.pm,
- class_discard.pm, .cvsignore, share/step-orange.xpm, share/reload.xpm,
- install_interactive.pm, c/README, Xconfig.pm, share/themes.rc,
- share/themes/marble3d-bg1.png, perl2fcalls, share/themes-blackwhite.rc,
- share/themes-blueHeart.rc, pkgs.pm, keyboard.pm,
- share/rpm-installed.xpm, share/po/gl.po, share/po/lv.po,
- standalone/icons/ftout.xpm, Makefile.drakxtools, http.pm,
- share/step-green-click.xpm, partition_table_sun.pm,
- share/themes/focus.png, share/keymaps_generate, lang.pm, verify_c,
- share/po/.cvsignore, share/ftin.xpm, standalone/draksec,
- resize_fat/info_sector.pm, share/compssUsers, share/step-orange-on.xpm,
- Makefile.config, share/list.sparc, share/po/hu.po, run_program.pm,
- share/themes/marble3d-button4.png, share/rpm-unselected.xpm,
- share/list.i386, netconnect.pm, share/themes/DarkMarble-button3_out.png,
- c/md5_crypt.c, share/themes/mdk-toggle_on.png, partition_table.pm,
- standalone/livedrake, share/diskdrake.rc,
- share/themes/DarkMarble-check_on.png, standalone/draknet,
- share/po/br.po, Newt/typemap, share/themes/blueHeart-button2.png,
- share/po/ro.po, share/list, share/po/cs.po, share/po/be.po,
- share/po/sp.po, share/step-orange-click.xpm, modparm.pm,
- share/step-green.xpm, share/rpm-base.xpm,
- share/themes/marble3d-check1.png, crypto.pm, share/po/eu.po,
- share/themes/marble3d-button1.png, c/stuff.pm, install_steps.pm,
- share/Cards2CardsNames, Newt/Makefile.PL,
- share/themes/mdk-Desktop-bg.png, netconnect_consts.pm, share/po/id.po,
- share/themes/mdk-check_on.png, share/po/fi.po, share/po/sk.po,
- standalone/icons/findf.xpm, share/po/lt.po,
- share/themes/mdk-check_off.png, fs.pm, c/.cvsignore,
- share/themes/mdk-toggle_off.png, share/po/ca.po, timezone.pm,
- detect_devices.pm, share/consolefonts/ruscii_8x16, diskdrake.pm,
- standalone/icons/reload.xpm, share/rpm-selected.xpm, resize_fat/io.pm,
- Newt/Newt.xs, Newt/.cvsignore, install2, share/po/pt_BR.po,
- share/themes-marble3d.rc, resize_fat/fat.pm, sbus_probing/main.pm,
- share/template.in/floppy.fsdev.kdelnk.in, printer.pm, share/po/it.po,
- resize_fat/.cvsignore, install_steps_interactive.pm,
- share/themes/mdk-button4.png, live_install, standalone/draknet2,
- any_new.pm, share/list.alpha, share/rpm-semiselected.xpm, c.pm,
- share/logo-mandrake-Desktop.xpm, printerdrake.pm, network.pm,
- share/step-red-on.xpm, share/themes-mdk.rc, share/po/validate.pl,
- swap.pm, share/themes/blueHeart-button4.png, standalone/keyboarddrake,
- g_auto_install, share/po/es.po, standalone/lspcidrake, share/po/de.po,
- partition_table_mac.pm, standalone/mousedrake, devices.pm,
- share/po/ru.po, resize_fat/c_rewritten.xs, share/po/cy.po,
- share/themes/mdk-button1.png, netconnect_new.pm, install_any.pm,
- share/po/nl.po, share/aliases, share/keyboards.tar.bz2, share/po/sv.po,
- Newt/Av_CharPtrPtr.c, c/stuff.xs.pm, share/themes-DarkMarble.rc,
- share/step-red.xpm, Newt/Av_CharPtrPtr.h, c/smp.c,
- share/po/zh_CN.GB2312.po, commands.pm, standalone/icons/find.xpm,
- perl2etags, share/po/Changelog, standalone/drakboot,
- resize_fat/dir_entry.pm, share/fonts.tar.bz2, share/install.rc,
- share/themes/blueHeart-button1.png, share/Cards+, share/po/uk.po,
- share/MonitorsDB, share/template.in/Dos_.kdelnk.in,
- standalone/printerdrake, services.pm, share/kmap2bkmap,
- share/themes/blueHeart-button_def.png, share/po/az.po, share/po/tr.po,
- common.pm, getpkgs_deps, standalone/drakxconf, share/ftout.xpm,
- install_gtk.pm, Xconfigurator_consts.pm, share/consolefonts/lat2-sun16,
- share/po/no.po, resize_fat/boot_sector.pm, share/CardsNames,
- c/Makefile.PL, share/themes-mdk-Desktop.rc,
- share/themes/blueHeart-brown_bg1.png, share/logo-mandrake.xpm,
- share/consolefonts/Cyr_a8x16, standalone/netdrake, standalone/drakgw,
- share/po/sl.po, standalone/rpmdrake, share/makedev.sh,
- share/themes/DarkMarble-button3_in_prelight.png, share/themes-blue.rc,
- install_steps_newt.pm, resize_fat/Makefile.PL, partition_table_empty.pm,
- my_gtk.pm, share/po/i18n_compssUsers, install2.pm, share/compssList,
- share/po/fr.po, share/themes/DarkMarble-button3_in.png,
- standalone/icons/ftin.xpm, share/modparm.lst, raid.pm,
- standalone/diskdrake, share/po/ko.po,
- share/template.in/zip.fsdev.kdelnk.in, share/compssUsers.desktop,
- share/po/ja.po, any.pm, share/isdndb.net,
- share/template.in/floppy.kdelnk.in, share/step-green-on.xpm,
- share/step-red-click.xpm, share/po/Makefile, help.pm,
- share/po/zh_TW.Big5.po, c/sbus.c, genmodparm, share/po/pl.po,
- share/themes-savane.rc, install_steps_stdio.pm, share/po/th.po,
- loopback.pm, resize_fat/any.pm, share/po/el.po, install_steps_gtk.pm,
- Newt/Newt.pm, Xconfigurator.pm, interactive_gtk.pm,
- standalone/drakxservices, resize_fat/Makefile, fsedit.pm,
- interactive_stdio.pm, live_install2, resize_fat/directory.pm,
- share/po/pt.po, install_steps_auto_install.pm, share/po/DrakX.pot,
- share/themes/mdk-bg.png, share/list.ppc, share/po/ga.po, share/po/et.po,
- share/keymaps.tar.bz2, partition_table_bsd.pm, c/md5.c, share/help.xpm,
- share/themes/marble3d-check2.png, ftp.pm, c/md5.h,
- standalone/adduserdrake, share/themes/marble3d-button2.png,
- partition_table_raw.pm, share/template.in/zip.kdelnk.in,
- share/locales.tar.bz2, standalone/icons/fileopen.xpm,
- share/template.in/kppprc.in, ChangeLog, resize_fat/README, mouse.pm,
- commands, standalone/XFdrake, share/gconv.tar.bz2, share/po/eo.po,
- interactive.pm, log.pm, share/themes/DarkMarble-gloom2.png,
- interactive_newt.pm, share/po/da.po, resize_fat/c_rewritten.pm,
- bootloader.pm, share/po/af.po: branch to build the firewall install.
-
-2000/11/28 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: change upgrade section for keyboard.
-
- * install_steps_gtk.pm: extended chooseSizeToInstall.
-
- * install_steps.pm: updated comment.
-
- * pkgs.pm: fixed misuse of map with values returing list which are indexed
- afterward.
-
- * install_any.pm: removed some more logs.
-
- * keyboard.pm: keep track of unknown keyboard (for upgrade)
-
- * install_steps_interactive.pm: modified def_mark to 59 (gl hw
- acceleration level) and upgrade use this level
- for newbies so.
- make sure a recommended upgrade get the minimum and a little more (80).
- choose default size according to a default mark (currently 49).
-
-2000/11/27 dam's <damien@mandrakesoft.com>
-
- * netconnect_consts.pm: added isdn Gazel card 10b5 1151
-
-2000/11/27 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm (@bad_types): list of the different type of extended
- partitions
- (important_types): remove @bad_types from important_types
-
-2000/11/25 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ru.po: updated Russian file
-
-2000/11/24 dam's <damien@mandrakesoft.com>
-
- * mouse.pm: doc + split
-
- * netconnect_new.pm: added depmod after having writed modules.conf
-
- * standalone/mousedrake: splited
-
-2000/11/24 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: avoid .la files for selection.
-
- * install_steps.pm: added missing portmap.
-
-2000/11/23 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet2: progressbar.
-
-2000/11/23 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps_gtk.pm: updated with
- structural change of pkgs.
-
- * install_any.pm: removed some ugly logs.
- updated with structural change of pkgs.
-
- * install_steps.pm: added tempory fix for initscripts %post.
- updated with structural change of pkgs.
-
- * pkgs.pm: synced versionCompare() with rpmtools-2.1-4mdk.
- removed ugly log on transaction.
- added special case to avoid counting kernels space when upgrading
- as these package are not upgraded (just installed).
- Memory usage optimization, change structure of storing
- package informations. lot of fork to make sure of
- freeing memory by perl (no free on used hashes or arrays
- usable by other than perl), now upgrade takes as much as
- install which takes at least 0.5Mb less than before.
-
-2000/11/23 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: put all tina stuff to weight 0
-
-2000/11/21 François Pons <fpons@mandrakesoft.com>
-
- * Xconfig.pm: added more subtil upgrade from /etc/X11/XF86Config* files,
- keep
- wacom entries.
-
- * Xconfigurator.pm: upgrade for XF86Config, take care of resolution and
- depth wanted.
-
- * install_steps.pm: always try to get default from /etc/X11/XF86Config
- removing logs.
-
- * pkgs.pm: cosmetic changes for upgrade, removing some logs.
-
- * install_steps_interactive.pm: removed code to ask if take care of
- /etc/X11/XF86Config* files.
- added wait message during rebuild of rpm database as it takes some time.
-
- * Xconfigurator_new.pm: WARNING
-
-2000/11/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/az.po: updated Azeri file
-
-2000/11/20 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: clean up as today filelist is no more.
- use parsehdlist from rpmtools-2.1-3mdk or above instead of
- perl code from DrakX forking to simulate a filelist server.
- this increase performance by 100 to 150% on selection of
- packages to upgrade.
-
- * share/list: added parsehdlist.
-
- * c/stuff.xs.pm: removed logs.
-
-2000/11/20 Pixel <pixel@mandrakesoft.com>
-
- * share/Cards+: add radeon
-
- * install_steps_auto_install.pm (exitInstall): fix message
-
- * install_steps.pm (afterInstallPackages): moved the
- writeandclean_ldsoconf here
-
- * fsedit.pm: add /var/ftp and /var/www in the list of propose mount-points
-
-2000/11/17 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * install_any.pm: add openuniverse to the list of gl apps
-
-2000/11/16 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: corrected isdn_get_{list, info}
-
-2000/11/16 François Pons <fpons@mandrakesoft.com>
-
- * share/list: include /usr/lib/rpm/macros else rpmlib gets crazy :-)
-
- * modules.pm: tempory version for current glibc, a lot of module have been
- removed due to
- problem of stage1 increase in size when compiled with glibc-2.2 and
- current
- modutils.
-
- * c/Makefile.PL: updated with rpmlib 4.
-
- * c/stuff.xs.pm: completed something that seems to work almost correctly
- at the first look
- with rpmlib 4.
-
-2000/11/16 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: add netscape-german, thx to florin
- isdn4k-utils gets same weight as isdn4net, thx to Florin
-
-2000/11/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po: updated Norwegian file
-
- * share/po/sk.po: updated Slovak file
-
-2000/11/15 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: added isdn_get_list and isdn_get_info
- calls modules::write_conf to fill the modules.conf.
-
- * Xconfigurator_new.pm: added to fork frontends backends. Not operationnal
- at all for now.
-
- * modules.pm: when loading a new module, add an alias for it, even in
- standalone mode.
-
-2000/11/15 François Pons <fpons@mandrakesoft.com>
-
- * c/stuff.xs.pm: updated for rpm 4.
-
- * pkgs.pm: rpmdepOrder again (for new TAGp)
-
-2000/11/15 Pixel <pixel@mandrakesoft.com>
-
- * c/Makefile.PL: add librpmio
-
- * c/stuff.xs.pm: workaround for kernel-headers not in sync with glibc
- (dev_t)
-
-2000/11/14 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: better structure for the ethx-driver.
- added call to add_alias and write_conf
-
- * standalone/draknet2: updated
-
-2000/11/14 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: removed foreach (<... which are eating memory
- fork install on upgrade for searching trhough filelist, this saves
- about 20Mb of memory before rpmlib transaction are started so its is
- more than 2 times faster for upgrading a system, sorry it was
- effectively
- a machine two overloaded that makes the upgrade slower.
- make rpmlib not to check size as DrakX should do it.
- added special cases for selection of packages according to files, avoid
- all kde-i18n packages if their locales-$lang is not selected, avoid
- a -devel package if only one files is updated (typical for fixes on
- package by moving files around).
-
- deactivated rpmdepOrder as it should be done directly in
- depslist.ordered
- file.
-
- fixed obsoletes which never run correctly, even if almost no package are
- selected explicitely this way.
-
- added log during selection of packages to upgrade to keep a track of
- what DrakX is doing.
-
- * modules.pm, network.pm, netconnect.pm, common.pm, modparm.pm,
- Xconfig.pm, commands.pm, lang.pm, fsedit.pm, detect_devices.pm,
- printer.pm, Xconfigurator.pm: removed foreach (<... which are eating
- memory
-
-2000/11/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/da.po: updated Danish file
-
-2000/11/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: Integrate Till's patches for better work with Cups.
-
-2000/11/12 Pixel <pixel@mandrakesoft.com>
-
- * standalone/mousedrake: fix for bug #1350
- (mousedrake dies with: Undefined subroutine &mouse::serial_ports_names)
-
- * pkgs.pm (psUpdateHdlistsDeps): fixed an ugly typo (uses .cz2 for .cz and
- .cz22 for
- .cz2) that makes for than one CD install breaks :-(
-
-2000/11/11 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/az.po, share/po/ru.po, share/po/pt_BR.po,
- share/po/hr.po, share/po/ko.po, share/po/cy.po, share/po/nl.po,
- share/po/ja.po, share/po/wa.po, share/po/sv.po, share/po/is.po,
- share/po/hu.po, share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po,
- share/po/pl.po, share/po/fi.po, share/po/no.po,
- share/po/zh_CN.GB2312.po, share/po/th.po, share/po/el.po,
- share/po/sk.po, share/po/lt.po, share/po/sl.po, share/po/br.po,
- share/po/ca.po, share/po/gl.po, share/po/lv.po, share/po/uk.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
-2000/11/10 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet2: draknet2 : new version of draknet, post-install
- only, uses only libDrakX backend, beautyfull
-
- * netconnect_new.pm: completed adsl_conf_backend
- corrected conf_network_card_backend : return interface and module
- separately
- splitted pppconfig.
-
-2000/11/10 François Pons <fpons@mandrakesoft.com>
-
- * share/po/fr.po: typo fixing
-
- * printerdrake.pm: fixed wrong case for managing IP for remove CUPS server
- updated typo for remote CUPS server configuration dialog
-
-2000/11/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/sk.po, share/po/lv.po: updated Latvian and Slovak files
-
- * share/po/wa.po, share/po/da.po: updated Danish and Walloon files
-
-2000/11/10 Pixel <pixel@mandrakesoft.com>
-
- * c/stuff.xs.pm: initIMPS2 move where it should be (in non-C_RPM dependent
- section)
-
-2000/11/09 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: added handling for 2 ethernet cards with the same module
-
-2000/11/09 François Pons <fpons@mandrakesoft.com>
-
- * share/po/fr.po: add some missing translation (mainly printer for CUPS
- remote config)
-
- * printer.pm: make sure to restart cups when cupsd.conf is modified.
-
- * printerdrake.pm: fixed modification of BrowsePoll on a existing file.
-
-2000/11/08 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: updated
-
-2000/11/08 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: make sure class discarding do not destroy result
-
- * pkgs.pm: added new function for selected or installed accessor on pkg
- make sure package already installed for oem are marked as selected, as
- some
- code refer to this state to perform some actions (install_urpmi)
-
- * install_steps.pm: fixed for urpmi again;
-
- * printerdrake.pm: add management of BrowsePoll <ip>:<port> in
- /etc/cups/cupsd.conf
-
- * printer.pm: add minimal management of /etc/cups/cupsd.conf
-
-2000/11/08 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/MonitorsDB: Fixed Samsung SyncMaster 3Ne (bug #1136)
-
-2000/11/08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/es.po: updated Spanish file
-
-2000/11/07 dam's <damien@mandrakesoft.com>
-
- * mouse.pm: now there are 8 ttyS* available for configuration. Used for
- internal modem configuration that uses ttyS* > 3
-
- * netconnect_new.pm: ttyS0 -> ttyS7 available for configuration
- some doc
-
-2000/11/07 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixed text for card prefered in XFree 3.3 (RIVA128).
-
- * install_steps_interactive.pm: use of install_any::boot_medium to avoid
- listing medium used for boot
-
- * install_any.pm: use of $boot_medium where the boot medium is used
- (default 1)
-
-2000/11/07 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/Cards+: fix tseng server for ET4000 W32i, W32p thanks to
- <sileryti@mail.com>
-
-2000/11/07 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): in oem, configureX automatic
- (main): $::oem is now global :-( (needed in install_steps.pm)
-
- * install_steps.pm (afterInstallPackages): give medium 'cdrom' to
- install_urpmi in case of $::oem
-
-2000/11/06 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: backend/frontend fork complete
-
- * any_new.pm: load_thiskind changed to load_thiskind_backend, the wait
- function is passed by argument
-
- * network.pm: configureNetwork2 commented.
-
-2000/11/06 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: created function for examining already installed package on
- install (oem).
-
- * install2.pm: add a flag to allow by default formating /
-
- * install_steps.pm: conditionnal format of / and use already installed
- packages if any on install.
-
-2000/11/06 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/MonitorsDB: added Hitachi CM753 contributed by Adam Julius
- <ajulius@yahoo.com>
-
-2000/11/06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/ru.po, share/po/uk.po: updated pot file
- GRUB/LILO/SILO messages *must* be in ascii only. Changed cyrillic to
- ascii transliteration for them
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/es.po,
- share/po/fr.po, share/po/bg.po, share/po/ga.po, share/po/sr.po,
- share/po/de.po, share/po/et.po, share/po/tr.po, share/po/eu.po,
- share/po/az.po, share/po/pt_BR.po, share/po/hr.po, share/po/ko.po,
- share/po/cy.po, share/po/nl.po, share/po/ja.po, share/po/wa.po,
- share/po/sv.po, share/po/is.po, share/po/hu.po, share/po/zh_TW.Big5.po,
- share/po/it.po, share/po/id.po, share/po/pl.po, share/po/fi.po,
- share/po/no.po, share/po/zh_CN.GB2312.po, share/po/th.po,
- share/po/el.po, share/po/sk.po, share/po/lt.po, share/po/sl.po,
- share/po/br.po, share/po/ca.po, share/po/gl.po, share/po/lv.po,
- share/po/eo.po, share/po/ro.po, share/po/da.po, share/po/cs.po,
- share/po/af.po: updated pot file
-
- * keyboard.pm, ChangeLog: added the 3 kbd layouts for CZ and SK kbds
-
-2000/11/06 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (formatPartitions): formatMountPartitions done even in
- upgrade
- (main): set $o->{partitioning}{use_existing_root} in oem
-
- * install_steps.pm (doPartitionDisksAfter): remove the mount_all which is
- plain dumb
- (doPartitionDisksAfter): fs::mount_all moved here
- (doPartitionDisks): use $o->{partitioning}{use_existing_root}
-
- * install_any.pm (use_root_part): fs::mount_all really removed
- (use_root_part): fs::mount_all removed
-
- * install_steps_interactive.pm (choosePartitionsToFormat): don't propose
- already mounted partitions
- (installCrypto): nicer layout
-
-2000/11/05 dam's <damien@mandrakesoft.com>
-
- * mouse.pm: changed 'IntelliMouse label' to 'Generic PS2 Wheel Mouse'
-
-2000/11/05 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/MonitorsDB: added LG StudioWorks520Si contributed by Yves Maniette
- <yves@maniette.com>
-
-2000/11/01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/eo.po: updated Esperanto file
-
-2000/10/31 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: continuing forking frontend - backend. adsl ist
- nearly finished
-
- * any_new.pm: added this file to fork frontends and backends in any.pm
-
-2000/10/30 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: heartbeat pixel wonderful un chien vaut mieux que deux
- tu damsera
-
-2000/10/30 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/wa.po: updated Walloon file
-
- * share/keyboards.tar.bz2: updated keyboards
-
-2000/10/30 Pixel <pixel@mandrakesoft.com>
-
- * lang.pm (load_po): backslash @ in po strings, otherwise the eval fails
-
-2000/10/28 dam's <damien@mandrakesoft.com>
-
- * netconnect_new.pm: new version of draknet. Splited frontends - backends
-
-2000/10/28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/tr.po: updated Turkish file
-
-2000/10/27 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: remove the noising rpm output command line when loging
- installed rpm
- size (only usefull for live_update and just for conveniance).
-
- * pkgs.pm: Make sure $meta_class is defined in readCompsUsers (for HTTP
- hack)
- before reading a compssUsers file.
-
- * live_install: add VERSION in list of file that have to be symlinked.
-
- * common.pm: list_skels returns list of existing directory and writeable.
-
- * live_install2: Make sure to remove font path in /tmp/drakx before
- exiting.
-
-2000/10/26 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/DrakX.pot, share/po/tr.po, share/po/it.po: updated Italian and
- Turkish files
-
-2000/10/24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: fortune-mod gets 10/0/10 on request from egil
-
-2000/10/24 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/pl.po: updated Polish file
-
-2000/10/23 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/ca.po: updated Catalan file
-
-2000/10/23 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm, ChangeLog, diskdrake.pm: added some carriage returns
- to please jl :)
-
- * detect_devices.pm (floppies, probeall): add require "modules" as it
- should be
-
- * install_interactive.pm (partitionWizardSolutions): add "require
- resize_fat::main" as it should be
-
-2000/10/22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: linuxconf-gui got -1/-1/-1 while gnome-linuxconf has
- 74/0/74
-
-2000/10/21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/uk.po, share/po/tr.po, share/po/az.po: updated Azeri, Turkish
- and Ukrainian files
-
-2000/10/20 fabman
-
- * share/po/es.po: updated
-
-2000/10/20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: ntp to -1/-1/-1
-
-2000/10/19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: put all packages requiring kde1-compat to 0 except
- kisdn-free
- aumix now gets a high weight (79) because it's required to save the
- mixer
- settings at shutdown
-
-2000/10/19 Pixel <pixel@mandrakesoft.com>
-
- * share/locales.tar.bz2: fix symlink zh_CN.GB2312 (was zh_CN.G23212)
-
-2000/10/19 tlb
-
- * share/po/da.po: 100%, Troels Liebe Bentsen.
-
-2000/10/18 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/az.po: Added AZeri file
-
- * share/po/no.po: updated Norwegian file
-
-2000/10/17 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm, netconnect.pm, netconnect_consts.pm: removed unused
- code in ineractive_gtk
- added some isdn card in pcitable
- corrected typos, and made ISA isdn work
-
-2000/10/17 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/lv.po: updated Latvian file
-
-2000/10/16 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/be.po, share/po/sp.po, share/po/pt.po, share/po/DrakX.pot,
- share/po/es.po, share/po/fr.po, share/po/bg.po, share/po/ga.po,
- share/po/sr.po, share/po/de.po, share/po/et.po, share/po/tr.po,
- share/po/eu.po, share/po/ru.po, share/po/pt_BR.po, share/po/hr.po,
- share/po/ko.po, share/po/cy.po, share/po/nl.po, share/po/ja.po,
- share/po/wa.po, share/po/sv.po, share/po/is.po, share/po/hu.po,
- share/po/zh_TW.Big5.po, share/po/it.po, share/po/id.po, share/po/pl.po,
- share/po/fi.po, share/po/no.po, share/po/zh_CN.GB2312.po,
- share/po/th.po, share/po/el.po, share/po/sk.po, share/po/lt.po,
- share/po/sl.po, share/po/br.po, share/po/ca.po, share/po/gl.po,
- share/po/lv.po, share/po/uk.po, share/po/eo.po, share/po/ro.po,
- share/po/da.po, share/po/cs.po, share/po/af.po: updated pot file
-
- * standalone/keyboarddrake, keyboard.pm, ChangeLog: corrected BackSpace
- setting
-
-2000/10/16 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (cdroms): fix the setting of scdX for ide burners
-
- * share/compssList: sympa is -1 except for server
-
- * keyboard.pm (write): small pixelization (neater now)
-
- * install_steps.pm (installPackages): don't run ldconfig in g_auto_install
-
-2000/10/15 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/nl.po: updated Dutch file
-
-2000/10/14 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm, keyboard.pm: small fix for Swedish locale
-
- * share/po/DrakX.pot, share/po/es.po, share/po/bg.po, share/po/fr.po,
- share/po/wa.po, share/po/de.po: updated Bulgarian file
-
-2000/10/13 François Pons <fpons@mandrakesoft.com>
-
- * partition_table_empty.pm: empty partition table as assumed only if the
- MBR is really composed of only null chars.
-
-2000/10/13 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: added viavoicemenu
-
-2000/10/12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (ask_mntpoint_s): dqs
-
-2000/10/11 Pixel <pixel@mandrakesoft.com>
-
- * .cvsignore: ignore flog files
-
- * install2.pm (main): test
-
- * ChangeLog: qsdqsd
-
- * install_steps_interactive.pm: * (selectKeyboard): set default
- $o->{langs} to $o->{lang}
-
-2000/10/10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw, ChangeLog: make only one call to urpmi in order to
- install all the needed rpm's
-
-2000/10/10 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/po/no.po, share/po/es.po: updated Norwegian file
-
- * share/po/pl.po: updated Polish file
-
- * share/po/zh_CN.GB2312.po, share/po/zh_TW.Big5.po: updated Chinese file
-
-2000/10/10 tlb
-
- * share/po/da.po: 99%.
-
-2000-10-10 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: make only one call to urpmi in order
- to install all the needed rpm's
-
-2000-10-10 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-10 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm: increase $::VERSION
-
-2000-10-09 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: update after Dam's new messages in netconnect
-
-2000-10-09 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-09 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (kdeicons_postinstall): remove the handling of
- doc desktop icons. see dadou
-
-2000-10-09 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssUsers: new list (with icons)
-
- * share/list: add icons for compssUsers
-
-2000-10-09 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: added wait message
-
-2000-10-09 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-09 Pixel <pixel@mandrakesoft.com>
-
- * share/themes-*.rc: change the fg[INSENSITIVE] entry
-
-2000-10-09 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: added tuxracer in OpenGL games to install if an
- accelerated card has been found.
-
-2000-10-09 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (main): asking connection after writing start/stop scripts.
- (adsl_conf): if during install, don't use chkconfig, make the
- links directly for the adsl init script.
-
-2000-10-09 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-09 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (afterInstallPackages): UserView in kdmrc is
- now true by default. So put false if security >= 3 instead of
- removing it.
-
-2000-10-09 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: default speed of modem set to 115200.
-
- * fs.pm: fixed format of RAID partition.
-
- * install_interactive.pm: take into account RAID partitions for
- searching / partition.
-
-2000-10-09 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-09 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (selectKeyboard): don't assume $o->{langs} is set
- (selectLanguage): don't set $o->{langs} (so that you can go back
- and it works)
-
- * common.pm (round_up, round_down): ensure number is an integer
-
- * install_steps_interactive.pm (chooseGroups): take into account
- the min_level to compute the size
-
-2000-10-08 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): move the
- computing of max_size before calling chooseGroups (not the one for
- desktop meta_class)
- (chooseGroups): compute the size of Miscellaneous
-
-2000-10-07 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-07 Pixel <pixel@mandrakesoft.com>
-
- * share/compssList: don't install locales-* even in 'all' install
- (those files are usefull if RPM_INSTALL_LANG doesn't include that
- lang)
-
-2000-10-07 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-07 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (install): log the gonna be installed packages (-> be
- able to track not installed packages that should have been
- installed)
-
-2000-10-06 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-06 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (pppConfig): the domain used for kppp is copied in resolv.conf
- (intro): connection detection improved : now use "ifconfig | grep interface"
- (pppConfig): corrected cnx_up/down
-
-2000-10-06 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-06 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (afterInstallPackages): don't fail if
- kdeglobals file is not there
-
- * share/compssUsers.desktop: fix icons
-
- * detect_devices.pm (cdroms): fix for scsi cdrom drives
-
- * pci_probing/pcitable: put cs46xx instead of snd-card-cs461x
- (dixit jeff)
-
- * diskdrake.pm (Resize): comment ext2&reiserfs resizing for the
- moment
-
-2000-10-06 Frederic Lepied <flepied@mandrakesoft.com>
-
- * Xconfigurator.pm (write_XF86Config): added mode of wacom devices
-
-2000-10-06 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (ask_connect_now): connection is now tested.
-
-2000-10-06 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps_gtk.pm: updated
- license.
-
- * Xconfigurator.pm: removed Matrox G200/G400 3D acceleration by
- DRI, use only Mesa with Utah GLX, fixed autologin for avoiding
- drakres and no wm available, moved Riva128 card from experimental
- to stable, fixed presentations of text.
-
- * pci_probing/pcitable: fixed Cirrus Logic sound card.
-
-2000-10-06 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-06 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: fixed bad call to hasUsb...
-
- * share/Cards+: fixed wrong use of SiS card with 4.0.1, only keep
- 530, 620 and 6326 with XFree 4.0.1.
-
-2000-10-06 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-06 Pixel <pixel@mandrakesoft.com>
-
- * share/list: remove /usr/X11R6/lib/X11/Cards, not needed anymore
-
- * install_steps.pm (afterInstallPackages): put the Charset in
- kdeglobals, otherwise kde uses charset iso8859-1 :(
-
- * lang.pm (charset): created
-
- * common.pm (update_userkderc): fix it, change the argument
- passing
-
-2000-10-05 Pixel <pixel@mandrakesoft.com>
-
- * share/compssList: raise kde-i18n-*, should be installed whenever
- kdebase is installed
-
- * pci_probing/pcitable: integrate patch from viet (concerns
- sym53c8xx cards)
-
- * share/compssUsers: use "documentation" as the database icon
-
- * install_steps_interactive.pm (chooseGroups): fix to accept icons
- not in the format "*_section.xpm"
-
- * install2.pm (miscellaneous): put yes/no in sysconfig/usb entries
-
-2000-10-05 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (adsl_conf): updated pppoe conf.
- (main): added $netc->{minus_one} to avoid to count dhcp configured
- eth when asking to share the connection.
- (adsl-pppoe): improvement. Should work now.
- (miscellaneous): corrected chmod 755 to 744 for connections scripts
-
- * netconnect.pm (main): network is stopped then started, instead
- of restarted.
-
-2000-10-05 François Pons <fpons@mandrakesoft.com>
-
- * live_install: added icons (this fixes the yellow on white
- tooltips problem).
-
- * install_any.pm: added ghostscript-utils in the list of packages
- to copy when changing CD.
-
- * printerdrake.pm: install ghostscript-utils if a lexmark printer
- is selected on cups.
-
-2000-10-05 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-05 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (loadO): look for auto_inst.cfg in /, not in
- /Mandrake/base
-
-2000-10-05 François Pons <fpons@mandrakesoft.com>
-
- * netconnect.pm: fixed syntax error.
-
- * share/po/i18n_compssUsers: simplified version and fixed
- dependancies to pkgs.pm (for building drakxtools).
-
-2000-10-04 François Pons <fpons@mandrakesoft.com>
-
- * install_gtk.pm: removed 80 pixel on height for live upgrade.
-
- * install_steps.pm: do not set keyboard when live upgrade after
- setting the language.
-
- * install_steps_gtk.pm: fixed the trying to start a X server on
- live.
-
-2000-10-04 Pixel <pixel@mandrakesoft.com>
-
- * share/po/i18n_compssUsers: fake module ``c'' so that no need to
- build DrakX to use i18n_compssUsers
-
- * install_steps_interactive.pm (selectLanguage): update license
-
- * install_steps_gtk.pm (installPackages): add second license for
- shitty soft (commercial one)
-
-2000-10-04 dam's <damien@mandrakesoft.com>
-
- * draknet (netconnect.pm and network.pm): various translations
- corrected, network is restarted, buttons connect/disconnect
- debugged.
-
-2000-10-04 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-04 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (main): kill prefdm instead of autologin
-
- * install_any.pm (find_root_parts): don't use
- suggest_mount_points, it couldn't do what we wanted
- (guess_mount_point): created, contains the common stuff between
- suggest_mount_points and find_root_parts
-
-2000-10-04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: fix some failing/untranslated i18n messages
-
- * share/po/fr.po: write translations according to drakgw
-
-2000-10-04 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: removed bad card for 3D Rage Pro.
-
- * install_any.pm: removed Aurora for SiS card, add more case for
- detecting right cdrom for live upgrade, fixed wrong list of
- packages for laptops.
-
- * c/stuff.xs.pm: added time interval of 200ms between update of
- progression bar of install, make sure the last step is seen.
-
-2000-10-04 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-04 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (when_load): stricter regexp for $type is scsi or not
- (so that scsi_mod with is scsi_raw doesn't get an alias
- scsi_hostadapter)
-
- * detect_devices.pm (isLS120Drive): extend the regexp to include
- "Caleb Technology - 144MB FDD UHD Floppy"
-
- * detect_devices.pm (burners, IDEburners): reworked, renamed, now
- works!
- * c/stuff.xs.pm (isBurner): created
-
- * modules.pm (load_ide): make sure ide-cd is loaded!
-
- * install_steps_interactive.pm (chooseGroups): the label and help
- are now translated (at least will be), so use the translations
-
-2000-10-03 Pixel <pixel@mandrakesoft.com>
-
- * share/po/Makefile (DrakX.pot): added the to-be-translated from
- compssUsers
- * share/po/i18n_compssUsers: read the compssUsers's and output the
- to-be-translated in po format
-
- * log.pm (l): log to STDERR instead of STDOUT
-
- * install_any.pm (loadO): use first floppy drive available (won't
- help much though, as stage1 doesn't follow this...)
-
-2000-10-03 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-03 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (autologin): don't propose autologin in
- security > 3
-
- * common.pm (availableRamMB): HACK HACK if i810 and memsize,
- returns 127
-
- * bootloader.pm (suggest): don't use grub if more than 800MB
-
-2000-10-04 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/validate.pl: create this tool
-
- * share/po/fr.po: fix many typos
-
- * share/po/fr.po: make compssUsers translation
-
-2000-10-03 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator_consts.pm: changed resolution allocation.
-
- * fs.pm: removed no more used log.
-
- * install2.pm: add exit button if live upgrade.
-
- * install_any.pm: increased minimal available size to 65Mb.
-
- * install_steps.pm, standalone/printerdrake: fixed cups to CUPS
- for mode.
-
- * printerdrake.pm: fixed not_edit for lpr mode of printerdrake.
-
- * share/Cards+: fixed Savage2000 entry.
-
-2000-10-03 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-03 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: updated bad card with Rage Mobility card.
-
- * live_install: added test of root user, abort if not root.
-
-2000-10-03 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/po/fr.po: fixed bug #518 and fixed other misc errors
-
-2000-10-03 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-10-02 François Pons <fpons@mandrakesoft.com>
-
- * diskdrake.pm (Resize): fix to make ext2resizing work a little
- better
-
- * install_steps.pm: fixed installation of urpmi configuration.
-
- * detect_devices.pm: updated comment about UltraDMA66/100
- management.
-
- * modules.pm: updated comment about UltraDMA66/100 management.
-
- * diskdrake.pm: adding a cylinder for the minimum of the resize
- and if there is nothing to do for resize, simply return.
-
- * install_any.pm: added missing require pkgs.
-
-2000-10-02 Pixel <pixel@mandrakesoft.com>
-
- * many files: remove many lnx4win special cases which are not
- needed anymore
-
- * any.pm (addUsers): grpuser output goes to Mr Dave
-
- * bootloader.pm (install_lilo): change the default color of menu
-
- * install_steps_interactive.pm (choosePackages): add 300MB choice
- in desktop
-
- * mouse.pm (fullnames): fix i18n fix
-
- * install_steps.pm (miscellaneous): don't add ide2=0x... for
- ultra66 (otherwise chmouel is not happy, so is hdc being hde)
-
- * Xconfigurator.pm (main): add handling of icewm logout
-
- * c/stuff.xs.pm: changed the stepping of "Progressing installing package"
-
-2000-10-02 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (main): infos are written only when needed.
- * netconnect.pm (intro): connection checking now works.
-
-2000-10-02 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * pci_probing/pcitable: s|snd-card-via686a|via82cxxx_audio|; like
- jeff request.
-
-2000-09-30 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-30 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm: a LOT of bugs fixed. draknet is now completely
- brok^H^H^H^Hfrozen.
-
-2000-09-29 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-29 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (adsl_conf): dhcp should better work.
-
- * network.pm (configureNetwork): remove connection script if a
- gateway is given.
-
- * common.pm (setVarsInShMode): created. chmod the file with
- permissions passed in argument.
-
-2000-09-29 François Pons <fpons@mandrakesoft.com>
-
- * modules.pm (load): fixed when standalone, use modprobe.
-
- * pkgs.pm: added preference for wu-ftpd.
-
- * detect_devices.pm: added code to proble USB printer.
-
- * printer.pm: fixed missing PRINTER=yes on CUPS configuration for
- USB printer.
-
- * install_steps.pm: removed possibilty to add an user in urpmi
- group (jloup).
-
- * install_steps_interactive.pm: log if CD not ejectable.
-
-2000-09-29 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: sync with latest packages
-
- * install_steps_interactive.pm (selectLanguage($)): s/42/43/ in
- MandrakeSoft physical address
-
-2000-09-29 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-29 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (intro): detection of internet
- configuration/connexion state.
-
- * network.pm (write_resolv_conf): better "ppp temp nameserver" in resolv.conf
-
-2000-09-28 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (load_thiskind): add read_already_loaded cuz of
- pcmcia
-
-2000-09-28 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: add nasty DrakSync and DrakProfile with 50 0 50
-
-2000-09-28 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): the minimum is 25
- in beginner, not 10
-
- * pkgs.pm (readCompssUsers): fix reading description
-
- * install_steps.pm (afterInstallPackages): remove the code to
- handle RPM-GPG-KEYS
-
-2000-09-28 dam's <damien@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_list_with_helpW): no more theme
- parsing, no more draknet.rc
-
- * netconnect.pm (read_net_conf): no adsl tree anymore.
-
- * netconnect.pm: drakgw called if enough card are installed.
-
- * netconnect.pm: minor bugs correction.
-
-2000-09-28 François Pons <fpons@mandrakesoft.com>
-
- * Makefile.config: added livedrake for drakxtools.
- * diskdrake.pm: use corrected partition size when resizing a dos
- partition (like the others).
- * install_any.pm: no more pnm2ppa packages and others in package
- to copy when changing CD.
- * live_install: exec live_install2 instead.
- * live_install2: contains post live upgrade stuff now.
- * printerdrake.pm: protect set_help() usage by if $::isInstall,
- removed reference to package pnm2ppa and others.
- * standalone/livedrake: initial release for drakxtools.
-
-2000-09-28 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-28 Pixel <pixel@mandrakesoft.com>
-
- * install_interactive.pm (partitionWizardSolutions): fix the limit
- cases for lnx4win
-
- * share/po/Makefile ($(PMSCFILES)): fix the DrakX.pot generation
-
-2000-09-27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): set $size2install
- to $availableC in desktop install, as it should be
-
- * install2.pm (choosePackages): remove the code for removing kdesu
- in high security...
-
- * install_steps_interactive.pm (createBootdisk): format more
- nicely the text
-
- * install_steps_gtk.pm (installPackages): add 10 seconds to have a
- better estimation
-
- * install_steps_interactive.pm (chooseGroups): now returns a boolean
- (choosePackages): use chooseGroups return value to redo
- choosePackages
-
- * install_steps_gtk.pm (selectMouse): if mouse type is none, then
- don't test!
-
- * Xconfigurator.pm (monitorConfiguration): rename Unlisted to Custom
-
- * various: replace all Rescue by Update
-
- * pkgs.pm (readCompssUsers): read description for groups
-
- * install_steps_interactive.pm (chooseGroups): add description for
- groups
-
-2000-09-27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssUsers.desktop: added description
-
- * share/compssUsers: added description
-
- * share/compssUsers.desktop: added icon support, reordered,
- renamed
-
- * share/compssUsers: reordered, renamed
-
-2000-09-27 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectLanguage): intregrate
- license again
-
- * pkgs.pm (readCompssUsers): reads compssUsers.meta_class
-
- * diskdrake.pm (Create): replace ``ne "i386"'' by ``!~ /i.86/''
- (as should be)
-
- * install_steps_gtk.pm (selectInstallClass1): if @$l (list of
- install classes) contains only one element, call
- install_steps_interactive::selectInstallClass1
-
- * install_steps_interactive.pm (choosePartitionsToFormat): fix for
- "no partitions selected to format"
-
- * my_gtk.pm (_create_window): alt-e now *toggles* expert/newbie
-
-2000-09-27 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * share/compssList: more for gnupg, -11 for sucking things,
- changed compss-groups to be less than 70.
-
- * share/compssUsers: modified compssUsers with Warly, added
- compssUsers.desktop, simplified for KD (now uses Graphical
- Desktop/KDE instead of listing all relevant packages)
-
-2000-09-27 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (get_info_adsl_providers, read_adsl_providers):
- Created. adsl provider tree.
- (set_net_conf): better informations storing.
-
- * my_gtk.pm (new): windows are always centered if standalone.
-
-2000-09-27 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added option "sw_cursor" for S3 Trio3D. fixed
- 3D hw acceleration for i815 (VideoRam). prefer XF3 for all
- NeoMagic cards.
- * install_gtk.pm: re-enabled themes on live upgrade but without
- modifying background image.
- * install_steps_gtk.pm: fixed missing help.
- * live_install: lot of fixes to enable DrakX font, keep upgraded
- system clean (libperl.so which allows graphical login).
- * pkgs.pm: added function allowedToUpgrade to filter kernel
- package.
-
-2000-09-27 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (configureX): if `clicked' don't go
- to auto mode
-
- * Xconfigurator.pm (monitorConfiguration): fix the translated
- 'Generic' which is not so (and must not be so) anymore
-
-2000-09-26 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm: remove all Unskip code
-
- * my_gtk.pm (_create_window): add shortcut alt-e to switch to
- expert
-
- * Xconfigurator.pm (resolutionsConfiguration): fix for setting
- legal resolution
-
- * install_steps_interactive.pm (selectLanguage): use formatAlaTeX
- on the license
-
-2000-09-26 François Pons <fpons@mandrakesoft.com>
-
- * fs.pm: added mounting of swap partition when mounting them
- all (this can help :-)
- * pkgs.pm: fixed correction size code to make (really) a true
- bijection between corrected and rpm size.
-
-2000-09-26 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectLanguage): integrate the
- license (temporary one)
-
- * modules.pm (write_conf): fix the /etc/modules generation
-
- * interactive_gtk.pm (ask_many_from_listW): if more than 5 entries
- in icon format, use scrollbar. In non-icon format, use scrollbar
- for more than 11 entries.
-
- * commands.pm (bug): add ddcxinfos
-
- * pci_probing/pcitable: replace tulip by de4x5 for 2104x cards
-
-2000-09-26 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added more 3D Rage Pro card for 3D
- acceleration with Utah-GLX (Rage Mobility, Rage XC/XL),
- modified identification for checking acceleration.
- * install_any.pm: added automatic installation (up 60) for
- OpenGL games if a graphic card MAY BE accelerated.
- * live_install: fixed perl idioms in pure shell script and added
- packdrake symlink if not already installed.
- * share/compssList: changed level to -1 for all needing 3D hw
- acceleration packages.
-
-2000-09-26 dam's <damien@mandrakesoft.com>
-
- * network.pm (write_resolv_conf): write temp dns line to be used
- with new initscripts package. Use to set dns live.
-
-2000-09-26 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-26 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm (read): catch exception if fullname2mouse fails (eg:
- old FULLNAME format)
-
-2000-09-25 Pixel <pixel@mandrakesoft.com>
-
- * share/MonitorsDB: merge with latest redhat MonitorsDB
-
- * pci_probing/pcitable: major merge with latest redhat pcitable
-
- * share/Cards+: added "Intel 815", renamed "Rage 128 (generic)" to
- "Rage 128", added "Rage 128 Mobility"
-
- * install_any.pm (getAvailableSpace): keep 10% of free space on
- big partitions
-
- * Xconfigurator.pm (readMonitorsDB): don't translate Generic
- (otherwise, only a part is translated, see MonitorsDB for the
- non-translated part)
-
- * interactive.pm (ask_many_from_list): fix sorting
-
- * install_gtk.pm (test_mouse): smaller box to fit in 640x480
-
- * install_steps.pm (afterInstallPackages, beforeInstallPackages):
- RPM-GPG-KEYS is copied before installing packages
-
- * pkgs.pm (readCompssUsers): handle icons in compssUsers
-
- * common.pm (truncate_list): ensure the list is not too big
-
- * install_steps_gtk.pm (choosePackagesTree): restrict the list to
- 20 elements if it is too big (use truncate_list)
-
-2000-09-25 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: add Video mode for entry.
- * fs.pm: updated for live upgrade.
- * install2.pm: dropped unuseful steps filtering.
- * install_any.pm: fixed wrong Device3Dfx package name and clean
- postinstall rpms directory on upgrade before filling it.
- * install_gtk.pm: removed window restrictions of live upgrade.
- * install_steps.pm: fixed initrd symlink following in case of
- upgrade.
- * install_steps_gtk.pm, install_steps_interactive.pm: keep always
- upgrade on live upgrade.
- * modules.pm: may fixed pcmcia lost driver (typically on network).
- * pkgs.pm: fixed (uggly?) usage of floating perl data on perl
- script :-)
- * printer.pm: back to "Generic PostScript" for default printer (jloup).
- * printerdrake.pm: make sure an expert can choose among available
- devices.
-
-2000-09-25 dam's <damien@mandrakesoft.com>
-
- * network.pm (write_resolv_conf): write '# ppp temp entry adsl' in
- /etc/resolv.conf if needed.
-
- * netconnect.pm : adsl connection does'nt need any dns anymore.
-
- * netconnect.pm (read_net_conf): created. draknet now stores and
- reload the config.
-
- * netconnect.pm (main): if the user is french and uses french
- keyboard, don't ask his country.
-
-2000-09-25 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: added 8139too
-
- * share/Cards+: GeForce2 DDR is handled by driver "nv"
-
- * Xconfigurator.pm (main): in killall X for Xdrakres, also killall
- kdm/xdm/gdm/autologin :)
-
-2000-09-25 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-25 dam's <damien@mandrakesoft.com>
-
- * network.pm (configureNetwork): Warn user if he already
- configured the interface.
-
-2000-09-24 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (mergein_conf): created. call read_conf, fills
- %modules::conf and set $modules::scsi
-
-2000-09-24 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw (fatal_quit($)): add log of reason of fatal_quit
-
-2000-09-24 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-24 Pixel <pixel@mandrakesoft.com>
-
- * commands.pm (bug): use first floppy drive instead of fd0 hard
- coded (nice for LS120's)
-
- * install_steps_gtk.pm (selectMouse): if device changed, do the
- test
- * standalone/mousedrake: fix for serial mice
- * install_steps_interactive.pm (selectMouse): fix for serial mice
-
-2000-09-23 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (conf_network_card): now displays the modules of
- detected ethernet cards.
-
-2000-09-22 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (main): calls drakegw.
- * netconnect.pm (get_net_device): fixed
-
-2000-09-22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw:
- - added logs
- - added verbose mode
- - fixed wrong stopping of named in other languages than english
-
- * netconnect.pm (get_net_device): try to fix it..
-
-2000-09-22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectKeyboard,
- choosePartitionsToFormat, chooseCD, installCrypto): use new ask_many_from_list
- ():
-
- * interactive.pm (ask_many_from_list): now only ask_many_from_list
- exists, obsoleting ask_many_from_list_ref and
- ask_many_from_list_with_help. More flexible and nicer
- * interactive_newt.pm (ask_many_from_listW): adapted to new
- calling type
- * interactive_gtk.pm (ask_many_from_listW): adapted to new calling
- type, handle 'shadow' and 'icon2f'
-
-2000-09-22 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): if /lnx4win/i in VERSION, set $o->{lnx4win}
-
- * Xconfigurator.pm (cardConfiguration): fix setting 4MB of meg for
- i810
- (testFinalConfig): i810 is a verybad_card, aka can't test anything
- on it :-(
- (main): fork to background and stay there while waiting for the WM
- to exit
- (testFinalConfig): update the backgroung image path
-
- * interactive_gtk.pm (exit): flush X before leaving (otherwise the
- mousecursor is not restored)
-
- * run_program.pm (rooted): don't redirect the stdout and stderr to
- ddebug.log if not $::isInstall
-
- * log.pm (l): log on stdout/stderr if !isInstall and !isStandalone
-
- * modules.pm (load_raw): redirect stderr to tty5
-
- * install2.pm (main): set variable $::isInstall
-
-2000-09-22 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-22 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/drakgw: now includes information from netconnect to
- ignore the interface used for Internet connection
-
-2000-09-22 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm (selectInstallClass1): pixel's typo.
-
- * netconnect.pm (get_net_device): added get_net_device to know
- which interface has been used to configure the internet connection.
- (conf_network_card): ask to restart network if dhcp too.
- (main): enable dialing when modem.
-
- * network.pm (configureNetworkIntf): changed label to warn people
- about already configured eth cards.
-
-2000-09-22 François Pons <fpons@mandrakesoft.com>
-
- * install_gtk.pm: added Desktop themes.
- * share/themes-mdk-Desktop.rc, share/themes/mdk-Desktop-bg.png:
- initial release.
- * install2.pm: moved back to all steps for live upgrade.
- * install_gtk.pm: select right logo if desktop.
- * install_steps_interactive, install_steps_gtk.pm: avoid asking if
- upgrade for a live upgrade.
-
-2000-09-22 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm: add some call to log_sizes to log the
- installed size
-
- * install_steps_gtk.pm (installPackages): beep before changeMedium
-
-2000-09-21 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_listf): try to call the f translation
- function on the default value with the index
-
- * install_steps.pm (afterInstallPackages): make the gpg code work,
- changed the call to
- "gpg --fast-import --homedir /etc/rpm /root/tmp/RPM-GPG-KEYS"
-
- * detect_devices.pm: cleanup and removed unused code
-
-2000-09-21 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * detect_devices.pm (getNet()): really remove plip in standalone
-
-2000-09-21 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm, netconnect.pm: changed NETWORKING reference
- from false to no.
- * printer.pm: changed timeout from 30 to 60.
- * printerdrake.pm: added wait message when waiting for cups to
- start.
- * pci_probing/pcitable: added erwan VIA Rhine board.
- * network.pm: added DHCP_HOSTNAME reference.
-
-2000-09-21 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-21 Pixel <pixel@mandrakesoft.com>
-
- * standalone/keyboarddrake: fix for XF4
-
- * Xconfigurator.pm (write_XF86Config): comment the omit
- xfree86-dga
-
- * install_steps.pm (afterInstallPackages): configure GPG public
- keyring with mandrake key
-
- * standalone/mousedrake: updated/fixed for new mouse handling
-
- * install2.pm (main): update for handling oem installs
-
- * many files: relGetFile cleanup, updated calls to getFile and
- getAndSaveFile accordingly
-
- * Xconfigurator.pm (testFinalConfig): new XFdrake-image-test.jpg
-
- * detect_devices.pm (@netdevices): plip removed in standalone,
- otherwise plip is always there (because of kmod)
-
- * install_steps_interactive.pm (choosePartitionsToFormat): replace
- the die "cancel" by die "already displayed", so that no error is
- displayed.
-
- * pci_probing/pcitable: replace some rtl8139 by 8139too, added
- cards DELTA8139 and ADDTRON8139 (for jeff)
-
- * Xconfigurator.pm (show_info): also show the colordepth and
- resolution. don't show server if none, show XF4 driver if there's
- one.
- (main): change the "Forget the changes" to "Keep the changes?"
- with displaying the current configuration.
-
-2000-09-21 François Pons <fpons@mandrakesoft.com>
-
- * printer.pm: changed "PostScript" ppd default description to "Raw
- queue (no filtering)", asked by Till.
- * Xconfigurator.pm: add log of what user select for 3D hw
- acceleration.
- * share/compssList: changed XFree86-glide-module to -2 because the
- level is the same for XFree86-Glide* which may have multiple
- different version installed due to dependancies of the first one.
-
-2000-09-21 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (conf_network_card): added check when dhcp. Cable connection
- should now work.
-
-2000-09-21 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (exitInstall): call $o->exit if
- "Some steps are not completed"
-
-2000-09-20 Pixel <pixel@mandrakesoft.com>
-
- * bootloader.pm (install_loadlin_config_sys,
- install_loadlin_desktop): extracted from install_loadlin, do not
- call them anymore (remove it?)
- (suggest): put grub in lnx4win install
-
- * common.pm (availableRamMB): fixed (round to a multiple of 4)
-
-2000-09-20 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (get_info_isdn_providers & read_isdn_providers):
- read file in /usr/share and $prefix/usr/share
- (isdn_write_config): corrected file to be sh compliant.
- (isdn_write_config): added default route settings for isdn.
-
-2000-09-20 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-20 Pixel <pixel@mandrakesoft.com>
-
- * pci_probing/pcitable: replace es1371 by snd-card-ens1371
-
-2000-09-20 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm (autologin): for urpmi, added `--best-output' and suspend/resume
-
-2000-09-20 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * standalone/printerdrake: for urpmi, added `--best-output' and suspend/resume
-
- * standalone/XFdrake: for urpmi, added `--best-output' and suspend/resume
-
-2000-09-20 dam's <damien@mandrakesoft.com>
-
- * standalone/draknet: used new package install function.
-
-2000-09-20 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (isFloppyOrHD): detects wether a device is a
- floppy or not based on its size (for scsi floppy)
-
- * Xconfigurator.pm (testFinalConfig): check if "server" OR
- "driver" field is set (otherwise XF4 only card won't pass)
-
- * bootloader.pm (suggest): fix for ``installing the last cooker
- from kenobi:/I on an smp machine i don't get anymore an entry for
- linux-up'' (c chmouel)
-
-2000-09-20 dam's <damien@mandrakesoft.com>
-
- * netconnect.pm (read_isdn_providers): corrected typo ($_ -> $_[0])
-
-2000-09-20 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-19 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (get_pcmcia_devices): fix (especially, now ethernet
- should be detected)
-
- * lang.pm (get_langs): created, gives rpm install langs
- * install_any.pm (setPackages): give langs::get_langs() to
- readCompssList
- * pkgs.pm (readCompssList): don't use RPM_INSTALL_LANG, use given
- $langs instead. This fixes the RPM_INSTALL_LANG=all install.
-
-2000-09-19 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * netconnect.pm: make dhcp-client, pump and such not translatable.
- Those are program names and should therefore not be translated,
- that only confuses translators
-
-2000-09-19 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm (autologin): corrected @users definition and
- passwd cat.
-
-2000-09-19 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-19 Pixel <pixel@mandrakesoft.com>
-
- * many files: changed some access to get_root to get_root_
-
- * install_steps_interactive.pm (choosePackages): added code for
- desktop meta_class install type
-
- * install_steps_gtk.pm (selectMouse): cleanup, give parameter
- emulate3buttons to setMouseLive
- * c/stuff.xs.pm (setMouseLive): add argument emulate3buttons
-
-2000-09-19 Guillaume Cottenceau <gc@mandrakesoft.com>
-
- * interactive*.pm: changed `suspend' and `resume' to behave as expected,
- added `enter_console' and `leave_console'
-
-2000-09-19 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-19 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (miscellaneous): replaced LITTLE_FRIED_OIGNONS by
- META_CLASS
-
- * Xconfigurator.pm (cardConfiguration): when ddcxinfos gives false
- result (not enough VideoRam), also remove the found resolutions
- * Xconfigurator.pm (main): remove the automatic searching of
- resolutions
- * Xconfigurator.pm (resolutionsConfiguration): cleanup, remove the
- automatic searching of resolutions.
-
- * mouse.pm (fullnames): changed the `_' in `[' before Other
- (nicer, uh?)
-
- * install2.pm (selectMouse): changed clicked to !first_time
-
-2000-09-19 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-19 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (testFinalConfig): remove the bloody prototype
-
-2000-09-19 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-18 Dam's <damien@mandrakesoft.com>
-
- * Xconfigurator (autologin): do it eve, if newbie. Autologin is
- now in separated function.
-
-2000-09-18 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (testFinalConfig): don't skip the test in auto
- if called via "Test again"
- * Xconfigurator.pm (resolutionsConfiguration): ensure all depth
- are bounded
-
- * bootloader.pm (suggest): don't put "linux-nonfb" if "linux" is
- classic and no-fb
-
- * fsedit.pm (check_mntpoint): add a check for /etc /lib... which
- must not be mount points. Also check that /home, /tmp and /usr are
- on trueFS
-
- * interactive.pm (ask_from_entries_ref): add bounding of "val" in
- case of type "range". die if min > max.
-
-2000-09-18 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-18 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): nicer
- partition/device display
-
- * partition_table_raw.pm (zero_MBR): add on the fly require of the
- good partition_table_$type
-
- * detect_devices.pm (cdroms): fix (yet again) the scd$nb device
- assignment to ide burners
-
- * install_steps.pm (afterInstallPackages): comment out a part of
- the icons mess messing
-
- * Xconfigurator.pm (cardConfiguration): move Unlisted to
- Other/Unlisted
- * share/CardsNames: updated (for Voodoo5)
-
- * install_steps_gtk.pm (selectMouse): fix the test to know wether
- the guy has changed the mouse type (to know wether to test the
- mouse or not)
-
- * install_steps_interactive.pm (selectLanguage): add the license
-
- * install_steps_interactive.pm (choosePackages): have the
- "Recommended" size be the default
- (in the choice Minimum/Recommanded/Complete)
-
- * diskdrake.pm (Type): fix a typo
-
- * install_steps.pm (doPartitionDisksAfter): mark partition as
- mounted
-
-2000-09-17 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-17 Pixel <pixel@mandrakesoft.com>
-
- * install/pcmcia_config.patch: cleaned
-
- * diskdrake.pm (Create, Type): have type field not_editable
-
- * tools/make_mdkinst_stage2: use TMPDIR if available
-
-2000-09-16 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): move
- the setting of toFormat before asking for bad blocks, seems to fix
- things?? weird :-/
-
- * network.pm (miscellaneousNetwork): fix the setting of focus on
- error (tx2Thomas Poindessous :)
-
- * install_steps_interactive.pm (configurePrinter): changed
- "Cancel" to "None" (for Thomas Poindessous :)
-
- * printer.pm (poll_ppd_base): max polling time raised from 10s to
- 30s (for Till)
-
- * install_steps.pm (ask_mntpoint_s): don't force partition type to
- be ext2 (at least if it's a known fs) (for Warly)
-
-2000-09-15 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-15 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (set_help): save the help message displayed
- in $o->{current_help}
- * install_gtk.pm (create_big_help): display $o->{current_help}
-
- * mouse.pm: reworked quite a lot. Now sorts/categorize nicely the mice.
- * install_steps_interactive.pm (selectMouse): adapted for reworked mouse.pm
- * install2.pm (selectMouse): adapted for mouse::read now returning
- an hash ref
-
- * detect_devices.pm (hasMousePS2): remove hasMouseMacUSB, do it in
- one function (now takes the device in the parameter)
-
- * interactive.pm (ask_from_treelistf): added (just like
- ask_from_listf, but with a tree)
-
- * Xconfigurator.pm: the reference is now nbuttons to
- know wether to put Emulate3Buttons or ZAxisMapping.
- * Xconfigurator.pm (cardConfiguration): install Glide_V3-DRI on
- Banshee too.
-
- * Xconfig.pm: guess nbuttons based on Emulate3Buttons and
- ZAxisMapping.
-
- * common.pm (availableRamMB): replace availableRam, now use the
- size of /proc/kcore (what else to find the real ramsize?)
-
- * common.pm (cat__): created
-
- * install2.pm (main): add field meta_class in $o. Can be
- 'desktop', in case option desktop is given, or if /desktop/i is
- found in /VERSION
-
- * install_steps.pm (miscellaneous): for lnx4win, always have
- 'mem=' (so that the initrd is visible by both windows
-
- * install2.pm (main): add option "desktop"
-
- * install_any.pm (generate_ks_cfg): fix for new(?) $o->{intf} format
-
- * install_interactive.pm (partitionWizardSolutions):
- use only TrueFS for existing_part
- (partitionWizard): have only "loopback" for lnx4win
-
- * pci_probing/pcitable: associate Voodoo5 with Voodoo5
-
- * share/Cards+: add Voodoo5
-
- * bootloader.pm (suggest): add entry linux-nonfb (called linux-up
- for smp)
-
-2000-09-14 DrakX <install@mandrakesoft.com>
-
- * snapshot uploaded
-
-2000-09-12 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm, mouse.pm: moved probing serial port before to
- detect a wacom tablet (even if a PS/2 or USB mouse is found).
- * help.pm: corrected reference to previous version of LM (jloup).
- * install2.pm: removed duplicate code for getting network
- configuration, using network module.
- * netconnect.pm: intf is now a hash and no more an array.
- * network.pm: changed nature of intf to hash from array, reworked
- write_resolv_conf function to keep old code in comment but only
- when not used anymore (to make it easier by hand modification).
- * printer.pm: SOCKET accessible to expert only (jloup).
- * printerdrake.pm: local port only available for expert if a
- printer has been detected (jloup).
-
-2000-09-11 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: reorganized choices of 3D optimizations, added
- experimental support for expert users.
- * install_steps_interactive.pm: removed question to keep XF3.
-
-2000-09-05 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: removed all previous URI specific mode and
- added socket and expert URI general mode.
- * printer.pm: fixed bugs, start lo interface before cups.
-
-2000-09-04 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: added pnm2ppa and lm110 support in cups
- configuration. probe for printer device (parallel) and try to
- install usb for printer.
- * printer.pm: removed local printer configuration for cups (keep
- only local configuration using URI).
-
-2000-09-01 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: fixes to configure XF86Config-4 when XFree-3.3
- is installed, make 16bits by default on 3D hardware acceleration,
- fixed selection of hardware for hardware acceleration.
- * install_steps.pm: add cups for printer configuration, used for
- auto_install. added new function to add packages only if requires
- are already satisfied.
- * standalone/printerdrake: updated.
-
-2000-08-31 dam's <damien@mandrakesoft.com>
-
- * moved many things to network.pm and any.pm
- * everything should be broken now.
-
-2000-08-31 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: removed printer default config (now obsoleted).
- * install_steps_interactive.pm: add cups support.
- * printerdrake.pm: add cups support.
- * printer.pm: add cups support.
-
-2000-08-31 Frederic Lepied <flepied@mandrakesoft.com>
-
- * install_any.pm (setPackages): install the right glide module
- according to the Voodoo card detected.
-
- * Xconfigurator.pm (write_XF86Config): ZAxisMapping for XF 4.
- (autoDefaultDepth): default depth to 16 for Voodoo cards except
- for Voodo5 ones.
-
-2000-08-29 dam's <damien@mandrakesoft.com>
-
- * moved pppConfig in netconnect.pm and any.pm
- * moved miscellaneousNetwork in any
- * modem configuration is now useable in standalone mode.
-
-2000-08-29 David BAUDENS <baudens@mandrakesoft.com>
-
- * install_steps_interactive.pm: change Small/Normal/Full ->
- Minimum/Recommanded/Complete (aka make FredB happy)
-
-2000-08-28 dam's <damien@mandrakesoft.com>
-
- * draknet (netconnect): renamed drakfuck -> draknet. standard ADSL
- and french alcatel ADSL implemented.
- * Xconfigurator.pm (autologin) : use of the new autologin system.
-
-2000-08-24 François Pons <fpons@mandrakesoft.com>
-
- * ../update_kernel*: changed reference from extract_archive to
- packadrake.
- * Makefile*: added live_install and live_install2.
- * Xconfigurator.pm: updated Mach64 acceleration to only 3D Rage
- Pro AGP card type, commented SiS and S3ViRGE support by GLX.
- * commands.pm, keyboard.pm, lang.pm, pkgs.pm, list, tools/*:
- updated to use packdrake now.
- * install2.pm, install_steps.pm, install_steps_gtk, Makefile*:
- manage live upgrade.
- * modules.pm: use standard modprobe command for load in live
- upgrade.
- * netconnect.pm: added minimal modification for being compilable.
- * rescue/list: added packdrake and sfdisk.
- * live_install, live_install2: live upgrade of package.
-
-2000-08-22 dam's <damien@mandrakesoft.com>
-
- * drakfuck (netconnect):finished isdn PCI/ISA card implemetation
- * added isdndb.net: providers database
-
-2000-08-20 dam's <damien@mandrakesoft.com>
-
- * moved Netconnect.pm to netconnect.pm
- * moved DrakFuck to drakfuck
-
-2000-08-18 Pixel <pixel@mandrakesoft.com>
-
- * share/Cards+: for i810, force VideoRam
-
-2000-08-18 dam's <damien@mandrakesoft.com>
-
- * modules.pm: added isdn type in @drivers_by_category. corrected
- load_thiskind (thx pixel) : it's not unsafe anymore
- * Netconnect.pm: just display PCI isdn card recognized.
-
-2000-08-17 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm: many cleanup. moved some functions to common,
- any or install_interactive (newly created)
-
-2000-08-16 dam's <damien@mandrakesoft.com>
-
- * install_steps_interactive.pm(configureNetwork): added call to
- isdn configuration
- * added standalone/DrakFuck: standalone entry point to configure
- internet connexion.
- * added Netconnect.pm: internet connexion functions.
-
-2000-08-11 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectInstallClass): yet a bigger
- warning so that people don't choose expert installs. Also set the
- focus on "Custom" by default.
-
- * install_steps_interactive.pm (doPartitionDisks): created, calls
- the wizard.
- * install_steps.pm (doPartitionDisksBefore,
- doPartitionDisksAfter): created (was mainly in
- install2::doPartitionDisks)
- * install2.pm (doPartitionDisks): much cleanup
- * install_any.pm (partitionWizard): working state (still rough)
-
-2000-08-08 Pixel <pixel@mandrakesoft.com>
-
- * standalone/rpmdrake (AddMedia): fix the ftp addmedia, fix the
- cdrom addmedia
-
-2000-08-07 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Resize):
- * install_steps_gtk.pm (doPartitionDisks): remove the
- before_leaving ensuring the filehandle is closed
- * resize_fat/main.pm (DESTROY): use a better solution for ensuring
- the filehandle is closed
-
-2000-08-07 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added SiS6326 in the list of chipset that
- needVideoRam, reported on ml.
- * install_steps.pm: fixed auto install of printer.
-
-2000-08-06 Pixel <pixel@mandrakesoft.com>
-
- * interactive.pm (ask_from_listf): created this GREAT function
- that should have been created a long time ago.
- * any.pm, install_any.pm, install_steps_gtk.pm,
- install_steps_interactive.pm: a lot of rewrite to use the new
- ask_from_listf, a lot of nice cleanup!
-
- * fs.pm (df): created, returns the free space of the part. Save it
- in $part->{free}
-
- * install_steps_gtk.pm (doPartitionDisks): ensure the closing of
- the device in case of error
- * resize_fat/main.pm (new): ensure the closing of the device in
- case of error
-
- * install_any.pm (partitionWizard): the great partitioning wizard
- is created. Not finished yet (nor called from anywhere)
-
- * install_steps.pm (doPartitionDisksLnx4win): created function out
- of doPartitionDisks
-
- * install_steps_gtk.pm (installPackages): removed the displaying
- of size to install (people are bothered cuz not the same size)
-
-2000-08-06 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm (create_steps_window): use drawing area
- instead of button. Implemented all steps events.
-
-2000-08-05 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm (detect): test a hack for usb mouse via hub
- (sparhawk@enteract.com)
-
- * fsedit.pm (undo): force isDirty and needKernelReread only if hd
- hasBeenDirty, otherwise believe the flag saved
- * partition_table.pm (write): flag hd as hasBeenDirty
-
- * install2.pm: a few renaming of methods so that the step names
- correspond to install2 function and install_steps* methods (eg:
- configureX & setupXfree unified to configureX)
-
-2000-08-04 dam's <damien@mandrakesoft.com>
-
- * any.pm (setAutoLogin): added this method to write xdm-config
- * Xconfigurator.pm: clenead autologin code and use of above method
-
-2000-08-04 Pixel <pixel@mandrakesoft.com>
-
- * pkgs.pm (setSelectedFromCompssList): save $nb to able to restore
- it in case of max_size reached. only purpose is the log!
-
- * install_steps_interactive.pm (choosePackages): in newbie, ask
- between Small/Medium/Full install
- * install_steps_interactive.pm (choosePackages): in expert, have
- the min_mark be 0 instead of 1
-
- * common.pm (find_index): added this nice function
-
- * install_any.pm (getAvailableSpace_mounted): use common::df
- * loopback.pm (getFree): use common::df
- * commands.pm (df): use common::df
- * common.pm (df): added
-
- * diskdrake.pm (Resize)): add resizing of reiserfs
- * share/list.i386: add resize_reiserfs
-
-
-2000-08-02 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm : autologin is functionall. When wmsession.d is
- more up to date, I'll add the list of wm to launch at boot. It
- writes in /etc/X11/xdm/xdm-config.
-
-2000-08-01 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (miscellaneous): modify as chmouel want (aka, ""
- instead of "no" for MOUSE and KEYBOARD in sysconfig/usb)
-
- * services.pm: separation between interaction and action.
- * install_steps.pm (servicesConfig): the job is now done here
- * install_steps_interactive.pm (servicesConfig): only the asking
- part
-
-2000-08-01 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed the below fixe, now ok.
- * Xconfigurator.pm: fixed a bug for using default card flags
- setting, add support for GeForce DDR for both 3.3 and 4.0.
- * pci_probing/pcitable: fixed NV15 (GeForce2) card entry, now use
- XFree 3.3 as unsupported in XFree 4.0.
- * share/Cards+: added "NVIDIA GeForce2 DDR (generic)".
-
-2000-07-31 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: fixed provided package with choice in deps used with a
- base package, complicated but kernel-fb or similar can be
- unselected now.
-
-2000-07-27 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: changed expert message to ask
- using XFree 3.3 instead of XFree 4.0 used by default (server).
- * Xconfigurator.pm: make sure only one server is installed,
- default to XFree 4.0 if supported unless XFree 3.3 accept
- 3D acceleration and not XFree 4.0, ask user in such case.
- * pci_probing/pcitable: added Intel 815 pci ids.
-
-2000-07-26 dam's <damien@mandrakesoft.com>
-
- * install_steps_gtk.pm: applied new LN stars, logo title and help
- logo. improved steps appearences.
- * modified share/step-*.xpm
- * added share/help.xpm
- * updated ../HACKING to ling help logo.
-
-2000-07-21 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: enable 3D acceleration configuration with
- XFree86, use /usr/X11R6/lib/modules/glx-3.so for X version 3
- Utah-GLX accelerated module.
-
-2000-07-20 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: use {miscellaneous}{autologuser} instead of
- {miscellaneous}{autologuser} + {miscellaneous}{autologing}.
- * move some README content to ../HACKING
-
-2000-07-19 dam's <damien@mandrakesoft.com>
-
- * Xconfigurator.pm: added autologin boxes.
- result is in {miscellaneous}{autologin} and in
- {miscellaneous}{autologuser}
-
-2000-07-19 François Pons <fpons@mandrakesoft.com>
-
- * any.pm: added default root to existing root device when adding
- an entry in bootloader.
- * bootloader.pm: avoid duplicating entry (floppy and old-floppy)
- when they are identical.
- manage hackkernel by suggest an entry by default if installed.
- * install_steps.pm: reworked symlink closure for bootloader
- to keep previous configuration.
-
-2000-07-11 François Pons <fpons@mandrakesoft.com>
-
- * bootloader.pm: merged lilo.pm and silo.pm inside bootloader.pm,
- this include a configure_entry from silo.pm to build a initrd if
- used.
- * share/compssList: added kde2 packages.
- * share/compssUsers: added kde2 group, renamed kde to kde1 group
- specific.
-
-2000-07-07 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm (choosePackages): always execute setPackage to copy
- hdlist* and depslist files (support mixed partitionDisks and
- choosePackages).
- * install_any.pm (setPackages): avoid clearing upgrade flag.
- * install_steps.pm (choosePackages): use $first_time to avoid
- reselection of packages according to compssList.
- * install_steps_interactive (choosePackages): use $first_time and
- $individual to avoid reselection of packages according if user go
- back to step choosePackages.
- * pkgs.pm: added psUpdateHdlistsDeps to restore hdlist* and
- depslist files in /var/lib/urpmi.
- * diskdrake.pm: fixed uneditable combo for Mount point action.
-
-2000-06-23 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: better approach for Sun* server in newbie.
- * fs.pm: added romfs support for mount.
- * fsedit.pm: changed auto allocation for partitions for sparc*.
- * install2.pm: restored bootdisk creation and auto install boot
- disk creation for sparc*.
- * install_any.pm: changed vfat to romfs when mounting kickstart
- floppy on sparc*.
- * install_steps.pm: avoid proposing formating sunos partition.
- * install_steps_interactive.pm: boot disk for sparc* and support for
- installation of SILO on /boot partition (sparc*).
- * install_steps_newt.pm: removed cylinder 0 bug warning.
- * interactive.pm: fixed typo for not_edit set to 1 by default.
- * partition_table.pm: fixed get_holes on sparc* where a whole disk
- partition caused problems.
- * partition_table_sun.pm: removed cylinder 0 bug as found in mke2fs.
- * silo.pm: handle /boot partition, install silo.conf in /boot and
- make a symlink from /etc.
- * share/list.sparc: added losetup and genromfs for boot disk creation.
-
-2000-06-21 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * lang.pm: changed the way console font data is written; not all
- of the [0], [1], [2] values must defined, so three cases must be used.
- Also added a variable $CHARSET for /etc/sysconfig/i18n; it can then
- be used by console-tools to load the proper compose table
-
-2000-06-20 François Pons <fpons@mandrakesoft.com>
-
- * c/sbus.c: added some functions for silo.c integration.
- * c/silo.c: initial release including write in prom, and translation
- of disk name from openprom to linux, rh version modified.
- * silo.pm: added write in prom, support of sunos boot from silo.
- * partition_table.pm: added support for ufs partition like windows one.
- * install_steps_interactive.pm: added other entries in silo.
- * install_steps.pm: support sunos partition.
- * install_any.pm: automatically mount sunos partition with diskdrake.
- * fsedit.pm: added /mnt/sunos suggested mount point.
- * fs.pm: added ufs support for mount.
-
-2000-06-19 François Pons <fpons@mandrakesoft.com>
-
- * crypto.pm: modified for getting sparc crypto file for sparc*.
- * modules.pm: make sure to load sd_mod when needed.
- * pci_probing/main.pm: always use loaw_endian in pci structs.
- * pci_probing/translate-pcitable.pl: added arch specific module name
- translation.
-
-2000-06-16 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (write_conf): rename conf.modules to modules.conf if
- needed. Outputs to modules.conf
-
- * detect_devices.pm (cdroms): fix using scd0 for ide-burners when
- already a scsi cdrom drive
-
-2000-06-13 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * pkgs.pm: added 'acon' requirement for all right-to-left languages
-
-2000-06-07 François Pons <fpons@mandrakesoft.com>
-
- * diskdrake.pm: added SunOS partition as blue for diskdrake.
- * install_steps_interactive.pm: make sure of no division by zero may
- happen.
- * install_steps_newt.pm: added WARNING for fdisk on sparc*.
- * modules.pm: make sure of loading sd_mod module after any scsi module.
- * sbus_probing/main.pm: insmod openprom before trying sbus probing.
- * pkgs.pm: corrected by use of parabolic solution for size approximation.
- * silo.pm: try with "silo -p 2 -t" if "silo -t" has failed due to bad probe.
-
-2000-06-05 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * install_steps.pm,lang.pm: added load_console_font, to load the
- proper console fonts (text mode install is not very useful otherwise)
-
-2000-06-03 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Create): don't accept less than 32MB part for reiserfs
- * diskdrake.pm (Type): don't accept less than 32MB part for reiserfs
-
-2000-06-01 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/fonts.tar.bz2: replaced the Korean 16pt fonts by a 12pt font;
- it fits better with the other fonts. Added a 'README' file with
- some comments and the required copyright notice
-
-2000-05-29 François Pons <fpons@mandrakesoft.com>
-
- * Xconfigurator.pm: added support for SBUS card autodetection.
- * commands.pm: added lssbus to list SBUS devices detected.
- * detect_devices.pm: removed alpha restriction on USB.
- * install_steps_interactive.pm: added SBUS support.
- * c/sbus.c: initial revision, core SBUS support (inspired from kudzu).
- * c/stuff.xs.pm: added wrapper for sbus.c interface.
- * sbus_probing/main.pm: initial revision (inspired from kudzu).
-
-2000-05-27 Adam Lebsack <adam@mandrakesoft.com>
-
- * share/list.ppc: various PPC modifications, for HFS
- * partition_table_mac.pm: bug fixes
- * partition_table.pm: various HFS fixes, isHiddenMacPart()
- * diskdrake.pm: added HFS to top buttons when run on PPC
- * keyboard.pm: fixed name of mac-fr2-ext keymap
- * install_steps_gtk.pm: added Xpmac server support for PPC.
- * install_steps_interactive.pm: disallow hardware configuration on PPC for
- now. All drivers should be in the kernel. setup_this_kind().
- * fsedit.pm: fixed verify_hds for PPC, /proc/partitions will never match
- our partition table read. Added PPC grep condition for PPC in get_visible_fstab.
- * fs.pm: fix argument for HFS formatting.
- * Makefile: special installation of PPC files.
-
-2000-05-25 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-
- * standalone/drakboot: Don't display Configure-/LILO/GRUB/ on
- alpha|sparc.
-
-2000-05-25 François Pons <fpons@mandrakesoft.com>
-
- * silo.pm: added configure_entry to try creating an initrd for an image
- entry in bootloader. fixed wrong usage of run_programm::rooted with 2>.
- * commands.pm: fixed insmod command to take modules64.cz* on sparc*
- * install2.pm: removed create boot disk and create auto install disk on
- sparc*. force writing of /etc/conf.modules for step setupBootloader.
- * install_steps.pm: fixed upgrade for sparc* and disable supermount for sparc*.
- * install_steps_interactive.pm: added missing $prefix for glob_. call
- configure_entry in setupSILO. fixed cancel or None entry on setupBootloader.
- * modules.pm: updated alias for sparc*.
- * any.pm: fixed proprable wrong test for setupBootloader in beginner at
- the very beginning.
- * printer.pm: fixed typo.
- * Xconfigurator.pm: avoid testing if using a Sun* server, added depth and
- resolution for these server too.
-
-2000-05-24 François Pons <fpons@mandrakesoft.com>
-
- * partition_tabel.pm: fixed wrong detection of DOS partition on sparc*.
- * partition_table_sun.pm: fixed a bug when reading partition table
- with unused partition in the middle of the table.
-
-2000-05-23 François Pons <fpons@mandrakesoft.com>
-
- * common.pm: update arch to take into account sparc and sparc64. added
- better_arch and compat_arch function.
- * silo.pm: fixed adding new kernel automatically.
- * install2.pm: removed create boot disk stuff for sparc*.
- * install_steps.pm: added initrd generation for alpha. added ldconfig
- at end of installation. removed /usr/bin/dumpkeys existence test on
- sparc*, should be added in the future.
- * install_steps_interactive.pm: removed supermount for sparc*.
- * install_steps_gtk.pm: added /dev/kbd device creation and permedia2
- support for sparc*. removed screen limit of 1024x768.
- * detect_devices.pm: fixed problem on machine with really no IDE interface.
- * modules.pm: added support for 32 and 64 bit architectures on sparc*.
- * install_any.pm: fixed getAvailableSpace_mounted if /usr is not a separate
- partition.
- * pkgs.pm: added support for multi-arch rpm file (need for sparc*),
- fixed correctSize and invCorrectSize to take back a linear approximation
- above 9Gb approximatively. removed ftp rewind as broken currently.
- * keyboard.pm: fixed bad list of available keyboard (broke sparc*), fixed
- globing (removed) against existing '*'.
- * partition_table.pm: removed support for non SUN partition table, as it
- may freeze the kernel or may be blanked?
- * Xconfigurator.pm: take Sun24 server by default on sparc*, add support
- for permedia2 card (3DLabs server).
- * share/list.sparc: added perl-5.6.0 for sparc*, fixed for sparc*.
- * Makefile: added support for modules and modules64 for sparc*.
- * c/stuff.xs.pm: added kernel_arch function for getting the current true
- architecture provided by the kernel (uname -m).
-
-2000-05-09 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (kdeicons_postinstall): the URL link to doc must
- be $lang/index.html, not only $lang.
-
- * standalone/mousedrake: add handling of XF86Config-4
-
- * any.pm (setupBootloader): fix bug (was adding 2 glob_'s)
-
-2000-05-08 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): move the touch of some files here to please linuxconf
-
- * install2.pm (miscellaneous): s/KBD/KEYBOARD/
-
- * lilo.pm (install_grub): don't keep symlinks for reiserfs
- * lilo.pm (suggest): allow grub everytime now (not only if !reiserfs)
-
- * install_any.pm (getHds): default mount point for windobe in
- lowercased for StartOffice(!)
-
-2000-05-08 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/keyboards.tar.bz2: Fixed Brazilian keyboard (.br); added
- Iranian (.ir), Arabic (.ar) and new Lithuanian (.lt_new) keyboards
- * keyboard.pm: Added new Lithuanian keyboard and changed the
- string for brazilian ABNT-2 to state more clearly its ABNT nature
- (it is not a standard PC keyboard; it uses some different keycodes)
-
-2000-05-07 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (choosePackages): return availableCorrected
- instead of available
-
- * pkgs.pm (correctSize): add 18MB for full multi-cd (many hdlist's)
-
- * modules.pm (text2driver): same as text2lang below
- * keyboard.pm (text2keyboard): same as text2lang below
- * lang.pm (text2lang): replace the while (... each) by a foreach
- (keys) (because each is dangerous if loop is exited)
-
- * install_steps_interactive.pm (selectKeyboard): better handling
- of multiple langs question.
-
- * ftp.pm (new): Timeout set to 60 (seconds), was default (120)
-
- * install_steps_interactive.pm (setup_thiskind): remove ide-*
- from modules displayed as loaded.
-
-2000-05-06 Pixel <pixel@mandrakesoft.com>
-
- * fsedit.pm (check_mntpoint): verify that standard mntpoints (/
- /usr) are not on not trueFS
-
- * any.pm (setupBootloader): add $prefix for the 2 glob_'s
-
-2000-05-07 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * share/keyboards.tar.bz2: added Ukrainian keyboard xmodmap.ua
-
-2000-05-06 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * printerdrake.pm: fixed English error
-
-2000-05-05 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm (monitorConfiguration): remove the special case
- for fbdev.
-
- * install_steps_interactive.pm (setup_thiskind): replace return by
- next in case load_module fails.
-
- * install_steps_gtk.pm (selectInstallClass1): translate Install/Upgrade
-
- * Xconfigurator.pm (cardConfiguration): force xf4 for rage 128's
- * Xconfigurator.pm (testFinalConfig): force $bad_card for xf4
-
- * pkgs.pm (correctSize): updated for 7.1
-
- * install_any.pm (getAvailableSpace): move the removing of
- $minAvailableSize here.
-
-2000-05-04 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (configurePrinter): give clicked to printerConfig
-
- * interactive.pm (ask_from_entries_ref): set default val if not_edit
-
- * interactive_newt.pm (ask_from_entries_refW): remove setting of
- default val. Now done in interactive::ask_from_entries_ref
-
- * interactive_gtk.pm (ask_from_entries_refW): handle empty value
-
- * modules.pm (read_already_loaded): ensure that already loaded
- modules are put in %loaded.
- * modules.pm (load_ide): add loading if ide-probe-mod (for new kernel)
-
- * lilo.pm (install_lilo): truncate label's to 15 chars
-
- * install_any.pm (generate_ks_cfg): fix missing space
- * install_any.pm (generate_ks_cfg): fix bug for nfs comand
-
- * install2.pm: get rid of autoformat
- * install_steps.pm (choosePartitionsToFormat): get rid of autoformat
-
-2000-05-03 Pixel <pixel@mandrakesoft.com>
-
- * any.pm (setupBootloader): replace ask_many_from_list by
- ask_from_list for bootloader choice
-
- * services.pm (drakxservices): stop immediately service if removed
-
- * install_steps.pm (configureNetwork): replaced dhcpxd by dhcpcd
- * install_steps.pm (afterInstallPackages): touch some files to
- please linuxconf
-
-2000-05-03 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: updated min size, fixed kppprc generation.
- * install_any.pm: make sure postinstall-rpm is here before
- erasing (avoid error on reboot only).
-
-2000-05-02 Pixel <pixel@mandrakesoft.com>
-
- * raid.pm (format_part): don't call raid::make if part is already
- formatted (as raidstop fails)
-
- * Xconfigurator_consts.pm: Rage128 and 3dfx are not available any
- more
-
- * install_steps_interactive.pm (setup_thiskind): make insmod'ing
- fail a simple warning.
-
- * Xconfigurator.pm (readMonitorsDB): adapt to new MonitorsDB
- * share/MonitorsDB: take new one from RedHat
-
- * standalone/drakboot: added kfloppy
-
- * g_auto_install: add $dir/lib to LD_LIBRARY_PATH (it was silly
- not to have it)
-
-2000-05-01 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setRootPassword): remove
- NIS_server, use NIS instead
- * install_any.pm (setAuthentication): remove NIS_server, use NIS instead
-
- * standalone/rpmdrake (AddMedia): hdlist.cz2 instead of hdlist
-
-2000-04-28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps.pm (afterInstallPackages): fix yet another bug for
- ttf from windobe handling
-
- * install_steps_interactive.pm (selectInstallClass): hide beginner
- mode in corporate. Display special help.
-
-2000-04-29 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * my_gtk.pm: added call to Gtk->init; that makes 16 bit locales
- text to be properly aligned (reported by Craig Chang
- <craig_chang@taipei.siscomm.com.tw>)
- * common.pm: now that po handling is correct, I changed the order
- of reading variables so that it follows the standards ($LANGUAGE first)
- * share/fonts.tar.bz2, lang.pm: added an 8pt font for cp1251
-
-2000-04-28 François Pons <fpons@mandrakesoft.com>
-
- * install_steps*.pm: added support for selection of package during
- upgrade the same way it is done for installation. added check of
- minimal size, abort else (at least let the user know about :-)
- fixed crypto if no network interface available.
- * install2.pm: fixed problem during upgrade that lost network
- configuration.
-
-2000-04-28 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (load_raw): don't call commands::insmod, do it in
- place. Merge with load_multi
-
- * install_steps.pm (afterInstallPackages): fix windobe ttfonts
- symlinking
-
- * Xconfigurator.pm (cardConfiguration): load module agpgart for
- i810
-
- * install_any.pm (getHds): changed the mount point setting for
- windows partitions as device_windobe is not unique
-
-2000-04-27 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (create_steps_window): changed to adapt to
- new hidden format
-
- * install2.pm (@installSteps): changed the way hidden is handled.
- Now it is a true perl expression (great power now)
-
- * install_steps_gtk.pm (selectInstallClass1): update steps window
- before asking normal/devel/server. Nicer!
-
- * install_steps_interactive.pm (configureNetwork): when "Cancel"
- pressed at network interface configuration do not skip all
- configuration.
-
-2000-04-26 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm (pppConfig): modified a lot, removed template
- file for ifcfg and chat file.
-
-2000-04-26 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (choosePackagesTree): use a fix width for
- the tree column (so that the checkbox are always visible without
- scrolling)
-
- * standalone/drakboot: drakfloppy and gfloppy are X only, no need
- to propose them in console
-
- * install_any.pm (relGetFile): added auto_inst to files to get
- from Mandrake/base
-
- * install2.pm (main): changed auto_inst behaviour
-
- * standalone/adduserdrake: fix a bug (s/$o/$in/g)
-
- * interactive_newt.pm (ask_from_entries_refW): now handling
- complete/changed/focus_out callbacks (at least more than before)
-
- * Newt/Newt.xs: added rough callback handling
-
-2000-04-25 François Pons <fpons@mandrakesoft.com>
-
- * printerdrake.pm: added support for PPA more easily, allow
- printers entry using ppa driver event if pnm2ppa not installed,
- install it if neccessary after.
- * network.pm, install_steps.pm, install_steps_interactive.pm:
- added support for stoping a network interface, usefull for ppp0 to
- avoid using it too long.
- * install_steps.pm: fixed missing local on pap_secrets file.
-
-2000-04-25 Pixel <pixel@mandrakesoft.com>
-
- * lilo.pm (install): moved the generation of the keytable here. It
- is used by both lilo & grub (lilo is not always installed as was
- assumed)
-
- * common.pm (formatAlaTeX): remove bounding spaces
-
- * pkgs.pm (setSelectedFromCompssList): remove the hack for min
- mark 25 in beginner
- * install_steps_interactive.pm (choosePackages): set $min_mark to
- 25 in beginner
-
-2000-04-24 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (setupXfree): add a yesorno
- question for choosing between XF4 and XF3 in expert
-
- * install_steps_gtk.pm (choosePackagesTree): enlarge the tree window
-
- * install_any.pm (update_userkderc): make sure uid and gid are kept
-
- * diskdrake.pm (Create): add Extended_0x85 as a choice for expert
-
- * partition_table.pm (add_extended): handle a 3rd arg,
- $extended_type to tell which kind of extended partition is wanted
- * partition_table.pm (adjust_main_extended): in non-expert,
- automatically set extended to linux-extended if there's only
- linux-type partitions.
-
-2000-04-22 Pablo Saratxaga <pablo@madrakesoft.com>
-
- * install_steps_interactive.pm: s/Mb/MB/ as 'b' is symbol for bit
- and not for byte. RAM is expressed in megabytes -> MB
-
-2000-04-19 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: fixed crazy mutli CD manipulation.
- * printer.pm: fixed wrong prototype of print_pages.
- * install2.pm: set version to 7.1 for crypto stuff.
- * crypto.pm: commented ackbar crypto site.
-
-2000-04-17 Pixel <pixel@mandrakesoft.com>
-
- * lilo.pm (suggest): in failsafe, runlevel ASKRUNLEVEL (handled by
- linuxconf)
-
-2000-04-14 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePartitionsToFormat): don't
- ask about checking bad blocks for reiserfs, cuz not handled
-
- * fs.pm (mount): reiserfs handling
- * fs.pm (format_reiserfs): added
- * fs.pm (write_fstab): add option "notail" for reiserfs if
- the partition holds the kernel (/boot or /)
-
- * partition_table.pm (isTrueFS): added, replaces most occurences
- of isExt2
-
-2000-04-12 François Pons <fpons@mandrakesoft.com>
-
- * install2.pm: force installation step if package have been
- selected on step choose packages.
- * install_any.pm: protected against die in perl (setstep or
- theme_changed).
-
-2000-04-11 François Pons <fpons@mandrakesoft.com>
-
- * resize_fat: added some limits verification.
- * interactive_gtk.pm: corrected swap of arg with help adding.
-
-2000-04-10 François Pons <fpons@mandrakesoft.com>
-
- * interactive_gtk.pm, my_gtk.pm: added tooltips for ask_from_list,
- which is used by printerdrake only. drops key bindings.
-
-2000-04-07 François Pons <fpons@mandrakesoft.com>
-
- * tools/serial_probe: obsoleting pnp_serial which is now replaced
- by this one, taken from kudzu, really faster and probe all serial
- devices at one time. modified to probe correctly modem :-)
- * mouse.pm: updated to use serial_probe interface of
- detect_devices.pm.
- * detect_devices.pm: modified to use serial_probe, cache probed
- devices to avoid reprobing.
-
-2000-04-06 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm, install_steps.pm: added support
- for peerdns options of ppp, so removed dns address unless expert.
-
-2000-04-05 François Pons <fpons@mandrakesoft.com>
-
- * crypto.pm, install_steps_interactive.pm, install2.pm,
- install_steps.pm: added crypto stuff to support hdlist-crypto.cz2
- and depslist-crypto. dependancies are not supported but with a
- simpler format of depslist file where closure are not done and
- only package name are used for dependancies.
- * pkgs.pm: added better support for multi CD manipulation,
- including selection and refus.
-
-2000-04-04 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm: modified selection packages from compssList by
- incremental selection, much more quickly.
- added selected medium for selecting a package.
- * install_any.pm: refused media hash transfered to selected value
- of media table.
- @needToCopy list should only have package of default medium.
-
-2000-04-03 Pixel <pixel@mandrakesoft.com>
-
- * fs.pm (format_ext2): add options "-b 1024 -O none" for alpha
-
-2000-03-31 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_gtk.pm: made changeMedium sub modification
- permanent.
- * pkgs.pm: modified upgrade to avoid use of header.
-
-2000-03-31 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: some more choices for PPC keyboards
-
-2000-03-30 François Pons <fpons@mandrakesoft.com>
-
- * install2pm: added eval around loading af_packet and postinstall
- copy of RPMS.
- * devices.pm: added /dev/kdb for SPARC.
- * install_any.pm: modified multi CD management, postinstall copy
- of RPMS.
- * install_steps_gtk.pm: added support for Xsun server for SPARC.
- * install_steps_interactive.pm: added multi CD dialog box for
- selecting CD available. Serialized ethernet configuration and ppp
- configuration.
- * pkgs.pm: added check for infinite recursion for bad depslist.
- * printer.pm: better test for reparse of printerdb.
- * Xconfigurator.pm: added support for Xsun server for SPARC.
-
-2000-03-30 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (choosePackagesTree): enhance tree selection
-
-2000-03-29 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (wait_messageW): add some padding (nicer)
-
- * install_steps_interactive.pm (generateAutoInstFloppy): created,
- creates a floppy for auto installs.
-
- * install_any.pm (generate_ks_cfg): created, generates stage1
- ks.cfg file
-
- * share/po/DrakX.pot: added special comment for grub entry
-
-2000-03-28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (selectKeyboard): sort langs for
- many-lang install
-
- * mouse.pm (write): add WHEEL telling if a wheel mouse is there
-
-2000-03-28 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: added entries for all three Armenian keyboards
-
-2000-03-26 Pixel <pixel@mandrakesoft.com>
-
- * install_any.pm (install_urpmi): full support for multi-hdlist's
-
- * pkgs.pm (extractHeaders): look for hdlist in /tmp instead of
- $prefix/var/lib/urpmi
- * pkgs.pm (psUsingHdlists): put hdlist's in /var/lib/urpmi with a
- fake name. Access via /tmp/$hdlist is given for non-fake name
-
- * detect_devices.pm (hasHPT): return undef if no htp (silly me :-/)
-
-2000-03-25 Pixel <pixel@mandrakesoft.com>
-
- * lilo.pm: updated to the new format of entries. It was an hash.
- Now the key is field kernel_or_dev, and entries is an array.
-
- (get): added, it returns the entry using a kernel
- (needed because entries is no more a hash)
-
- * install_steps_interactive.pm (setupLILO): adapted to the new format
-
- * Xconfigurator.pm (write_XF86Config): basic XF86Config-4 handling
-
- * fsedit.pm (suggest_part): if suggested part contains a field
- "hd", ensure the partition is created on this hard drive
-
- * install2.pm (main): before leaving installation, remove
- /var/lib/urpmi if urpmi not installed
-
- * diskdrake.pm (Resize): ext2resize to size $part->{size} instead
- of $size
-
-2000-03-24 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (hasHPT): added. Now nice handling of hpt366
- (ultra66) without rebooting and making special floppy :)
-
- * lilo.pm (install_grub): much better grub configuration (better
- than lilo's :pp)
-
- * install_steps.pm (setupBootloaderBefore): remove entry floppy
- for security > 3
-
-2000-03-23 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (selectMouse): added, takes care of telling
- the X server if the user changed the mouse type. Only done if
- a serial mouse is chosen.
-
- * install_steps_newt.pm (doPartitionDisks): add a call to
-
- * mouse.pm (write): added "device=" in etc/sysconfig/mouse for
- devfs (it looses the symlink /dev/mouse)
-
-2000-03-22 Pixel <pixel@mandrakesoft.com>
-
- * pci_probing/pcitable: replace Server:Rage128 by proper XFree entry
-
-2000-03-20 François Pons <fpons@mandrakesoft.com>
-
- * detect_devices.pm, fs.pm, install_any.pm: added supports for
- LS-120 floppy drive and icons on desktop of KDE (untested).
- * printer.pm, printerdrake.pm: added supports for PPA interface in
- new rhs-printfilters, always enable "Print text as postscript"
- option for such printers.
-
-2000-03-20 Pablo Saratxaga <pablo@mandrakesoft.com>
-
- * keyboard.pm: changed XKB name for Swedish keyboard
- changed XKB names for Russian and German keyboards
- added a choice for "Croatian" keyboard
- * share/compss{,List}: added various new locales-*, ispell-*
- and netscape-* files. changed ppa to pnm2ppa.
-
-2000-03-17 François Pons <fpons@mandrakesoft.com>
-
- * install_steps.pm: added setup for all configured queue.
- * install_steps_interactive.pm: modified for retrieving packages
- or current configuration.
- * printer.pm: correction, tested retrieve of printer
- configuration without printtool comments in printcap file: added
- update of entry according to gsdriver used (untested again).
- * printerdrake.pm: better handling of cancel, manage of multiple
- queue definition together (as lp|My printer).
-
-2000-03-16 François Pons <fpons@mandrakesoft.com>
-
- * install_steps_interactive.pm: moved in printerdrake.pm the test
- of printer usage.
- * printerdrake.pm: heavy modification to handle multiple queue,
- corrected some bugs too, added much more features as printtool.
- * printer.pm: added more features for filter, allow printer to be
- retrieved without help of printtool id in printcap file (untested).
-
-2000-03-14 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Loopback): handling of the file loopback: test
- existence of the file and take its size.
-
-2000-03-14 François Pons <fpons@mandrakesoft.com>
-
- * install_any.pm: corrected for duplicate file on other CD.
-
-2000-03-13 Pixel <pixel@mandrakesoft.com>
-
- * detect_devices.pm (floppies): don't return hash but the device name
-
-2000-03-13 François Pons <fpons@mandrakesoft.com>
-
- * pkgs.pm, install_any.pm: small correction for multiple media
- installation.
- * tools/syncrpms: added for handling synchronisation of multiple source
- rpm directories (and multiple target), include cleaning.
- * tools/closurepkgs: tools to get rpm that may be installed by DrakX
- after normal packages installation (printer, network, X11...), may
- be used to duplicate on other CD some important stuff of the first
- one.
-
-2000-03-12 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_interactive.pm (choosePackages): compute the
- max_size very simply (sum of all package sizes), otherwise too costly
-
- * pkgs.pm (install): call cleanHeaders at the end
- * pkgs.pm (cleanHeaders): created
-
- * install2.pm (miscellaneous): /etc/msec/init.sh is now
- /usr/sbin/msec (yoann thanks for not telling :pp)
-
- * pkgs.pm (install): remove the $prefix of mountpoints for not
- enough room to install error message
-
-2000-03-11 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm (_create_window): add callback on focus to
- ensure_focus. The result is no more 3 focus states with 2 buttons.
-
- * interactive_gtk.pm (ask_from_treelistW): better keyboard handling
-
- * raid.pm (make): check the result of mkraid. Suggest raidtools
- are missing in standalone diskdrake
-
- * devices.pm (set_loop): created, searches for an available
- loopback and sets the file to it
-
- * lilo.pm (dev2grub): fixed a missing slash
-
- * interactive_gtk.pm (wait_message_nextW): do not update if same
- message, otherwise silly gtk won't do anything and we'll wait
- forever :(
-
-2000-03-10 François Pons <fpons@mandrakesoft.com>
-
- * *.pm: heavy modification to take into account multiple media
- installation.
-
-2000-03-10 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (@install_classes): cleanup, no more i18n (is now in
- install_steps_interactive), remove old entries
-
-2000-03-09 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (write_conf): don't add alias block-major-11 in every case
- * modules.pm (add_alias): special case oss (post-installs modprobe snd-pcm-oss)
-
- * fs.pm (format_*): move the @options before the device
-
- * loopback.pm: created, added a lot of stuff for loopback in
- diskdrake.pm, fs.pm...
-
-2000-03-08 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm: %type2fs replaced ox402 by 0x402
-
- * detect_devices.pm (cdroms): fix "scd" (should be "scd0")
-
- * install_any.pm (install_urpmi): update for new hdlist.cz2
-
-2000-03-07 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (ask_from_treelistW): s/focus_row/set_focus_row/
-
- * install_steps_interactive.pm (addUser): force add a normal user
- for security 4
-
-2000-03-05 Pixel <pixel@mandrakesoft.com>
-
- * my_gtk.pm (_ask_from_list): replace focus_row with set_focus_row
- (tis the Gtk-Perl 0.7002 was of doing)
-
-2000-03-04 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (write_conf): add ide-floppy to the modprobes of
- post-install supermount
-
-2000-03-03 Pixel <pixel@mandrakesoft.com>
-
- * commands.pm (ps): add RSS to ps command
-
-2000-03-02 Adam Lebsack <adam@mandrakesoft.com>
-
- * mouse.pm: added mac mouse detection to mouse::detect.
- * detect_devices.pm: added a routine to probe /dev/usbmouse on macs.
-
-2000-03-01 François Pons <fpons@mandrakesoft.com>
-
- * *.pm: heavy modification to take into account smaller
- transaction during installation.
- still a lot of test to perform, no provides updated currently and
- building of hdlist.cz2 and depslist.ordered need old files...
- nothing done for hdlist.gz during post installation, but
- hdlist.cz2 is already copied in /var/lib/urpmi [and is used during
- installation of packages as extract_archive need a true file].
-
-2000-03-01 Pixel <pixel@mandrakesoft.com>
-
- * lilo.pm (install_grub): creation
-
- * network.pm (write_interface_conf): ONBOOT = !pcmcia
-
- * install_steps_gtk.pm (new): more intelligent SIGCHLD handler
-
-2000-02-29 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm: moved common network stuff from "net" to "network"
- (modules like nfs lockd...)
-
- * fs.pm (write_fstab): moved the sort to the right place
-
- * services.pm (drakxservices): chkconfig --list is i18n'ed :(
- set LANGUAGE=C before
-
- * partition_table_raw.pm (get_geometry): geom{cylinders} must not
- be a decimal value :)
-
- * install_steps_gtk.pm (create_logo_window): set_name logo for
- logo window
- * share/install.rc: force disabling of background image theme
-
- * install_steps_gtk.pm (enteringStep): add step information for
- console 1
-
- * any.pm (addKdmIcon): new function
- * install_steps.pm (addUser): handle field icon
- * install_steps_interactive.pm (addUser): add choice of kdm icon
- * standalone/adduserdrake: add choice of kdm icon
-
- * diskdrake.pm (ask_all_data...): change for easier i18n
-
- * install_steps.pm (miscellaneous): add CLEAN_TMP handling
- (need cleaning?)
- * install_steps_interactive.pm (miscellaneous): add CLEAN_TMP
- option in expert
- * install2.pm (miscellaneous): add CLEAN_TMP option for
- /etc/sysconfig/system
-
- * install_steps_interactive.pm (miscellaneous): forbidden
- useSupermount if high security.
-
- * mouse.pm (detect): fix bug (ttyS instead of ttyS0)
-
-2000-02-28 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (createXconf): do not use "Generic VGA" for
- svga and accel. SVGA also wants 16 bpp. added ugly modeline for
- 800x600.
-
- * partition_table_raw.pm (get_geometry): when the
- HDIO_GET_IDENTITY fails, defaults to what GETGEO gave
-
- * install2.pm (main): use modules::load_multi to increase boot
- start time
-
- * modules.pm (load_multi): added this function for loading many
- modules at once.
-
- * install_steps_gtk.pm (new): increase time before timeout
-
- * detect_devices.pm (cdroms): change the device associated with
- ide-burners (hdX -> scdX). Problem is how to know the X in scdX :(
-
- * modules.pm (write_conf): sort scsi_hostadapter's
-
-2000-02-27 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): load ide-probe and the like in 'prereq' type
- so no aliases are added to conf.modules
-
-2000-02-25 Pixel <pixel@mandrakesoft.com>
-
- * devices.pm (make): small code cleanup
-
- * partition_table_raw.pm (adjustEnd): more explicit error message
-
- * fsedit.pm (allocatePartitions): fix a bug (size was getting too
- big after each allocation) making adjustEnd cry
-
-2000-02-24 Pixel <pixel@mandrakesoft.com>
-
- * interactive_gtk.pm (new): added the "new" method to initialize
- windowheight for isStandalone
-
- * install_steps_gtk.pm (new): returns undef in case no X server
- works
-
- * install2.pm (main): moved the ejectCdrom from install_steps::END
- to here
- * install2.pm (main): fix the $SIG{SEGV} handler
- * install2.pm (main): added a "try again" in text install if the
- "new" fails
-
- * install_steps_interactive.pm (createBootdisk): fix an error for
- non fdX choice of floppy drive
-
- * install_steps_interactive.pm (setup_thiskind): remove the
- "defined @l"
-
-2000-02-23 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (%suggestedPartitions): remove any /boot entries
- * install2.pm (selectInstallClass): removed the special code to
- /boot entries from suggestedPartitions for on non-intel (and it
- was buggy :)
- * fsedit.pm (@suggestions): remove the /boot entry
- * fsedit.pm (check_mntpoint): remove the 1024 cylinder check
- * fsedit.pm (suggest_part): remove the 1024 cylinder special case
-
- * install_steps_interactive.pm (setupLILO): replace linear option
- by lba32
-
- * lilo.pm (suggest): add lba32 by default
-
- * install_steps_interactive.pm (load_thiskind): moved the HPT
- stuff to install_any::ultra66 and call it.
- Add sound card configuration (3 lines :)
-
- * my_gtk.pm and interactive_gtk: resize the list and tree based on
- root window size
-
- * install_steps_gtk: $width and $height goes $::rootwidth and
- $::rootheight, also other dimensions goes global (main::)
-
- * commands.pm (strings): replace the typo \{$n,} by {$n,}
-
-2000-02-23 François Pons <fpons@mandrakesoft.com>
-
- * build_archive, extract_archive: changed format of TOC to speed
- up extraction of archive, now 5 to 6 times faster to read TOC :-)
-
-2000-02-22 Pixel <pixel@mandrakesoft.com>
-
- * Xconfigurator.pm: load "Cards" database only to translate NAME
- to fields. Added file CardsNames created from Cards using
- share/Cards2CardsNames. Kind of list of normalized NAMEs
-
- * MonitorsDB: replace the ` ' separator for vendor by `|'
-
- * install_steps_interactive.pm (timeConfig): use ask_from_treelist
-
- * interactive_gtk.pm (ask_from_treelist): creation of
- ask_from_treelist. Usage is just the same as ask_from_list with
- one more argument (the separator eg: |, /)
-
-2000-02-21 François Pons <fpons@mandrakesoft.com>
-
- * diskdrake.pm: fixed deadlock while trying to create partition
- when available space is equal or less than 2 cylinders. fixed
- Create action on corrupted partition by removing stalling window.
- Blocked partition table writing if there are error by forcing user
- to correct partition table.
- * partition_table.pm: fixed typo in verifyParts with cdie, added
- verifyParts on Resize action.
-
-2000-02-21 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (create_big_help): display the help in full
- screen
-
- * my_gtk.pm (_create_window): add big help on F1
-
- * common.pm (add2hash): now returns the first parameter
-
- * mouse.pm (detect): really defaults to serial mouse
-
- * interactive.pm: add ask_many_from_list_with_help and
- ask_many_from_list_with_help_ref
-
- * services.pm: creation, it handles what was in
- standalone/drakxservices
-
-2000-02-18 Pixel <pixel@mandrakesoft.com>
-
- * install_steps_gtk.pm (createXconf): added /dev/ (X wants
- "/dev/psaux" and not "psaux")
-
- * diskdrake.pm (Create): show start sector even for non-expert on
- non-i386
-
-2000-02-16 Pixel <pixel@mandrakesoft.com>
-
- * mouse.pm (detect): add defaults to serial mouse
-
- * install_steps_gtk.pm (createXconf): remove the defaults to
- serial mouse
-
-2000-02-15 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm: "After %s partition %s," inlined otherwise does
- not please pablo and translators...
-
-2000-02-14 Pixel <pixel@mandrakesoft.com>
-
- * diskdrake.pm (Create): hide start sector choice for non-expert
-
-2000-02-11 Pixel <pixel@mandrakesoft.com>
-
- * partition_table_raw.pm (get_geometry): do not use the cylinder
- number given by HDIO_GETGEO cuz limited to 16bits. Compute using
- the total_sectors using HDIO_GET_IDENTITY
-
- * c/stuff.xs.pm: added total_sectors (gives the number of sector
- of a drive)
-
- * modules.pm (load): ignore error in loading prereq's
-
- * modules.pm (@drivers_by_category): rcpci instead of rcpci45,
- z85230 added
-
- * commands.pm (mount): add modules::load_deps otherwise the
- fs::mount won't succeed insmoding vfat if needed
-
-2000-02-11 François Pons <fpons@mandrakesoft.com>
-
- * fixed diskdrake to handle limit case when creating and resizing
- partition table, address size limit and start sector limit.
-
-2000-02-11 Pixel <pixel@mandrakesoft.com>
-
- * install2.pm (main): add a callback on SEGV
- -> message printed
- -> that way, ENDs are called (otherwise skipped)
-
- * install_steps_interactive.pm (setup_thiskind): handles the undef
- value returned by load_thiskind
-
- * install_steps_interactive.pm (exitInstall): do not call
- install_steps::exitInstall
-
- * install_steps (exitInstall): removed
- * install_steps (END): added (it does ejectCdrom)
-
- * install_steps_interactive.pm (load_thiskind): returns undef if
- error loading a module
-
- * fs.pm (format_part): changed the prototype from $;$@ to $;@
- otherwise, @options always have a value (mostly undef) and mkdosfs
- fails (with "mkdosfs", "/dev/hdXX", undef, "-F", 32)
-
- * install_steps_interactive.pm (setup_thiskind):
- add a $auto_probe_pci that overrules $o->{auto_probe_pci}
- (that way no pci probe the second time)
-
-2000-02-10 François Pons <fpons@mandrakesoft.com>
-
- * heavy modification of build_archive and extract_archive to manage
- a TOC directly in archive file, handle bzip2 or gzip compression,
- extract_archive can extract multiple files a time, with minimal
- invocation of uncompress program and follow symlink and expand
- directory contents.
- * use build_archive/extract_archive for locales.
- * fixed a min/max in install_steps_gtk for Resize/Create partition.
- * fixed adjustEnd with dos partition table, take care of magic 63
- sectors at beginning of partitions, a more solid method should be
- used for that.
-
-2000-02-10 Pixel <pixel@mandrakesoft.com>
-
- * modules.pm (load_thiskind): skip modules "unknown" and "ignore"
-
-2000-02-09 Pixel <pixel@mandrakesoft.com>
-
- * partition_table.pm (add): cdie if maximum number of partitions
- handled by linux is reached
-
- * Xconfigurator.pm (chooseResolutionsGtk): display the graphic
- card or server found
-
- * install_any.pm (relGetFile): for mdkinst files, take care not to
- have a double '/' (see debbugs #591)
-
- * install_steps_interactive.pm (configureNetwork):
- purpose: add ability to configure both modem and lan
- clean up the behaviour
-
- * fs.pm (write_fstab):
- purpose: sort the fstab per mount point (cuz /usr must be before /usr/local)
- also: rewrite of the part writing the fstab.
diff --git a/perl-install/Makefile b/perl-install/Makefile
deleted file mode 100644
index 50944f882..000000000
--- a/perl-install/Makefile
+++ /dev/null
@@ -1,218 +0,0 @@
-PACKAGE=drakxtools
-PKGVERSION:=$(shell rpm -q --qf '%{VERSION}\n' --specfile $(PACKAGE).spec|head -n 1)
-RELEASE:=$(shell rpm -q --qf '%{RELEASE}\n' --specfile $(PACKAGE).spec|head -n 1)
-TAG := $(shell echo "V$(PKGVERSION)_$(RELEASE)" | tr -- '-.' '__')
-
-include ../Makefile.config
-include Makefile.config
-
-POFILES = $(shell ls share/po/*.po)
-MOFILES = $(POFILES:%.po=%.mo)
-DISTFILES = *.pm $(PMS_DIRS) Makefile Makefile.config drakxtools.spec serial_probe share/po share/diskdrake.rc $(STANDALONEPMS) standalone/icons standalone/man/C/* pixmaps pixmaps/langs standalone/interactive_http rpcinfo-flushed.c share/rpmsrate standalone/convert standalone/finish-install.xsetup standalone/service_harddrake.sh
-OTHERS = $(OTHERDIRS) $(OTHERFILES)
-OTHERDIRS = tools/serial_probe
-OTHERFILES = tools/rpcinfo-flushed.c
-
-STAGE1 = ../mdk-stage1
-
-USE_PCMCIA := n
-ifeq ($(ARCH),i386)
-USE_PCMCIA := y
-endif
-ifeq ($(ARCH),x86_64)
-USE_PCMCIA := y
-endif
-
-.PHONY: all $(DIRS) install clean stage2 full_stage2
-
-all: list_modules.pm TAGS $(DIRS)
-
-up:
- (cd ..; cvs up;cd -;make localsrpm;up /home/tv/rpm/SRPMS/drakxtools-$(PKGVERSION)-$(RELEASE:).src.rpm)
-
-
-xs: $(DIRS)
-
-list_modules.pm:
- ln -sf ../kernel/list_modules.pm
-
-TAGS: $(ALLPMS)
- @etags -o - $^ /usr/lib/perl5/*/*/MDK/Common/*.pm | ./perl2etags > $@
-
-clean:
- for i in $(DIRS) share/po; do $(MAKE) -C $$i clean; done;:
- rm -rf auto ../drakxtools.tar.bz2 *.bak
- find . -name "*~" -o -name ".#*" -o -name "TAGS" -o -name "*.old" | xargs rm -f
-
-check_pms_encoding:
- @for i in $(ALLPMS); do charset=ascii; grep -q 'use utf8' $$i && charset=utf8; iconv -f $$charset -t $$charset $$i >/dev/null || { echo "bad $$charset character in $$i"; exit 1; }; done
-
-check: check_pms_encoding
- perl -I. -Mlang -e 'lang::check'
-
-check2:
- perl -I. -Mkeyboard -e 'keyboard::check'
-
-localcopy: clean
- rm -rf standalone/pixmaps
- $(MAKE) -C ../tools clean || :
- cd .. ; rm -rf $(PACKAGE)-$(PKGVERSION) ; cp -af perl-install $(PACKAGE)-$(PKGVERSION) ; cp -af $(OTHERS) $(PACKAGE)-$(PKGVERSION)
- cd .. ; rm -f $(PACKAGE)-$(PKGVERSION)/c/probe.c; cp -a mdk-stage1/{log.h,pcmcia_/{probe.c,*.h}} $(PACKAGE)-$(PKGVERSION)/c/
- cd
- @make nuke_perl
-
-
-$(DIRS):
- install -d auto
- $(MAKE) -C $@
-
-test_pms:
- perl_checker install2.pm install_steps_gtk.pm install_steps_stdio.pm partition_table/*.pm standalone/{harddrake2,diskdrake,draksec}
-
-test_pms_all:
- perl_checker $(shell echo $(ALLPMS) | perl -pe 's!(printer|share/advertising)\S+!!g')
-
-%.mo: %.po
- msgfmt -o $@ $<
-
-install_pms: $(DIRS)
- [ -d $(DEST) ] || $(MISC_DEST)/mdkinst_stage2_tool $(STAGE2_DEST)
-
- for i in `perl -ne 's/sub (\w+?)_?(\(\))? {.*/$$1/ and print' commands.pm` sync; do ln -sf commands $(DEST)/usr/bin/$$i; done
-
- install -d $(DESTREP4PMS)
- find $(DESTREP4PMS) -name "*.pm.gz" | xargs rm -f
- for i in $(PMS); do \
- dest=$(DESTREP4PMS)/`dirname $$i`; \
- install -d $$dest; \
- perl -ne 'print' $$i > $(DESTREP4PMS)/$$i; \
- perl -pe 's/#[-+].*//; $$_ = "\n" if (/^=(head|begin)/ .. /^=cut/) || /use (diagnostics|strict|vars|warnings)/' $$i > $(DESTREP4PMS)/$$i; \
- done
-
- rm -f $(DESTREP4PMS)/{bootlook,tinyfirewall}.pm
-
- cp share/*.rc $(DESTREP4PMS)
- chmod a+x $(DESTREP4PMS)/install2
- chmod a+x $(DESTREP4PMS)/commands
-
-mo_files : $(MOFILES)
-
-get_needed_files: $(DIRS) mo_files
- REP4PMS=$(REP4PMS) ../tools/install-xml-file-list share/list.xml $(DEST)
-
- mv -f $(DEST)/usr/{lib,X11R6/lib}/*.so* $(DEST)/lib
- ../tools/simplify-drakx-modules $(DEST)/usr/*/*/*/utf8_heavy.pl
-
- cp -f $(STAGE1)/init-stage2 $(DEST)/etc/init
-
- cat share/symlinks `../tools/specific_arch share/symlinks` > $(DEST)/usr/share/symlinks
-
- perl -I. -Mlang -e 'symlink "UTF-8", "$(DEST)/usr/share/locale/$$_" foreach lang::list_langs()'
-
- perl -ane 'symlink "$$F[1]", "$(DEST)$$F[0]"' share/aliases
-ifeq (ia64,$(ARCH))
- ln -sf bash $(DEST)/bin/sh
-else
- ln -sf ash $(DEST)/bin/sh
-endif
-
- mkfontdir $(DEST)/usr/X11R6/lib/X11/fonts
- fc-cache -f $(DEST)/usr/X11R6/lib/X11/fonts
-
- for i in `ls ../kernel/all.kernels`; do cp -f ../kernel/all.kernels/$$i/modules.cz $(DEST)/lib/modules.cz-$$i; done
- ls ../kernel/all.kernels | grep '^2' > $(STAGE2_DEST)/mdkinst.kernels
-
- $(MAKE) -C share/po install SUDO= NAME=libDrakX LOCALEDIR=$(DEST)/usr/share/locale_special
-# POFILES to disable for installation:
-# be,fur: too few messages translated;
-# ta: font problem
- rm -rf $(DEST)/usr/share/locale_special/{be,fur,ta}
-
-ifeq (y,$(USE_PCMCIA))
- install -s /sbin/cardmgr $(DEST)/sbin
- cp -a /etc/pcmcia $(DEST)/etc
- ../tools/patch_pcmcia_config.pl $(DEST)/etc/pcmcia/config ../kernel/all.kernels/`cat ../kernel/RPMS/.main`/modules.dep
-endif
-
- install -d $(MEDIA_INFO_DEST)
- grep ChangeLog CVS/Entries > $(STAGE2_DEST)/VERSION
-
- cd share ; cp compssUsers.pl* rpmsrate $(MEDIA_INFO_DEST)
- clean-rpmsrate $(MEDIA_INFO_DEST)/rpmsrate $(MAIN_RPMS_DIR)
-
-full_stage2:
- $(MAKE) stage2
- $(MAKE) clp
-
-clp:
- $(MISC_DEST)/mdkinst_stage2_tool $(STAGE2_DEST)
-
-stage2:
- if [ `id -u` = 0 ]; then rm -rf $(DEST); else $(SUDO) rm -rf $(DEST); fi
- mkdir -p $(DEST)
- $(MAKE) get_needed_files
- $(MAKE) install_pms
-
-# rules to build a test rpm
-
-localrpm: localdist buildrpm
-
-localsrpm: spec_test localdist buildsrpm
-
-srpm: spec_test cvstag localsrpm
-
-localdist: cleandist localcopy tar
-
-cleandist:
- rm -rf ../$(PACKAGE)-$(PKGVERSION) ../$(PACKAGE)-$(PKGVERSION).tar.bz2
-
-spec_test:
- @if [[ -z "$(PKGVERSION)" ]]; then echo "unable to get spec version"; exit 3;fi
- @if [[ -z "$(RELEASE)" ]]; then echo "unable to get spec release"; exit 2;fi
-
-tar:
- cd ../$(PACKAGE)-$(PKGVERSION) && perl -pi -e 's/^all: help/all:/' share/po/Makefile
- cd ../$(PACKAGE)-$(PKGVERSION) && rm -rf install* pkgs.pm help.pm ftp.pm http.pm crypto.pm t.pm debug.log `find -name CVS`
- cd ../$(PACKAGE)-$(PKGVERSION) && mv -f Makefile.drakxtools Makefile
- cd ../$(PACKAGE)-$(PKGVERSION) && rm -f list_modules.pm && cp -f ../kernel/list_modules.pm .
- cd ..; tar cfj $(PACKAGE)-$(PKGVERSION).tar.bz2 $(patsubst %,$(PACKAGE)-$(PKGVERSION)/%,$(DISTFILES))
- cd ..; rm -rf $(PACKAGE)-$(PKGVERSION)
-
-buildrpm:
- rpm -ta ../$(PACKAGE)-$(PKGVERSION).tar.bz2
-
-buildsrpm:
- rpm -ts --nodeps ../$(PACKAGE)-$(PKGVERSION).tar.bz2
-
-# rules to build a distributable rpm
-
-rpm: cvstag dist buildrpm
-
-slowsrpm: spec_test cvstag dist buildsrpm
-
-dist: cleandist export tar
-
-export:
- cd ..; cvs export -d $(PACKAGE)-$(PKGVERSION) -r $(TAG) $(PACKAGE)
- cd ../$(PACKAGE)-$(PKGVERSION) && rm -rf $(OTHERDIRS) && set -x && for f in $(OTHERDIRS); do cvs -d `cat ../CVS/Root` export -r $(TAG) -d `basename $$f` gi/$$f; done
- cd ..; set -x && for f in $(OTHERFILES); do cvs -d `cat ../CVS/Root` export -r $(TAG) -d $(PACKAGE)-$(PKGVERSION) gi/$$f; done
- @make nuke_perl
-
-cvstag:
- cvs tag $(CVSTAGOPT) $(TAG)
- cd ..; cvs tag $(CVSTAGOPT) $(TAG) $(OTHERS)
-
-nuke_perl:
- find ../$(PACKAGE)-$(PKGVERSION) -name '*.pm' | xargs ../tools/simplify-drakx-modules
- find ../$(PACKAGE)-$(PKGVERSION)/standalone -type f | xargs ../tools/simplify-drakx-modules
-
-dont_run_directly_stage2:
- [ -d $(DEST) ] || $(MISC_DEST)/mdkinst_stage2_tool $(STAGE2_DEST)
- echo -e '#!/bin/sh\n\nexec /usr/bin/busybox sh' > $(DEST)/usr/bin/runinstall2.sh
- chmod a+x $(DEST)/usr/bin/runinstall2.sh
- ln -sf runinstall2.sh $(DEST)/usr/bin/runinstall2
-
-trace_stage2:
- [ -d $(DEST) ] || $(MISC_DEST)/mdkinst_stage2_tool $(STAGE2_DEST)
- f=`perldoc -l Devel::Trace`; install -m 644 -D $$f $(DEST)$$f
- perl -pi -e 's|(#!/usr/bin/perl).*|$$1 -d:Trace|' $(DEST)/usr/bin/runinstall2
diff --git a/perl-install/Makefile.config b/perl-install/Makefile.config
deleted file mode 100644
index 940ac2d32..000000000
--- a/perl-install/Makefile.config
+++ /dev/null
@@ -1,21 +0,0 @@
-# -*- Makefile -*-
-VERSION = 2.2.10-BOOT
-SUDO = sudo
-TMPDIR = /tmp
-SO_FILES = c/blib/arch/auto/c/c.so
-PMS_DIRS = Newt Xconfig c xf86misc diskdrake harddrake interactive modules network partition_table printer resize_fat sbus_probing security fs
-PMS = *.pm $(PMS_DIRS:%=%/*.pm) commands install2
-STANDALONEPMS_ = XFdrake adduserdrake autosetupprintqueues diskdrake drakTermServ drakautoinst drakauth drakbackup drakboot drakbug drakbug_report drakclock drakconnect drakedm drakfirewall drakfloppy drakfont drakgw drakhelp drakperm drakproxy drakpxe drakroam draksec draksound draksplash drakupdate_fstab drakups drakvpn drakxservices drakxtv fileshareset harddrake2 finish-install keyboarddrake listsupportedprinters localedrake logdrake lsnetdrake mousedrake net_applet net_monitor printerdrake scannerdrake service_harddrake service_harddrake_confirm bootloader-config
-
-STANDALONEPMS = $(STANDALONEPMS_:%=standalone/%)
-ALLPMS = $(PMS) $(STANDALONEPMS) share/advertising/*.pl share/compssUsers.pl*
-REP4PMS = /usr/bin/perl-install
-ROOTDEST = /export
-DEST = $(STAGE2_LIVE)
-DESTREP4PMS = $(DEST)$(REP4PMS)
-PERL = perl
-LOCALFILES = $(patsubst %, ../tools/%,serial_probe/serial_probe xhost+)
-DIRS = c Newt resize_fat xf86misc #po
-CFLAGS = -Wall
-override CFLAGS += -pipe
-
diff --git a/perl-install/Makefile.drakxtools b/perl-install/Makefile.drakxtools
deleted file mode 100644
index 7f4b25bd8..000000000
--- a/perl-install/Makefile.drakxtools
+++ /dev/null
@@ -1,85 +0,0 @@
-# -*- Makefile -*-
-include Makefile.config
-
-INLIBDEST_DIRS = Newt c resize_fat xf86misc sbus_probing
-HAVEINST_DIRS = share/po standalone/interactive_http
-DIRS = $(INLIBDEST_DIRS) $(HAVEINST_DIRS) harddrake printer serial_probe
-NAME = libDrakX
-PREFIX =
-LIBDIR = $(PREFIX)/usr/lib
-MENUDIR= $(LIBDEST)/menu
-DATADIR = $(PREFIX)/usr/share
-ICONSDIR= $(DATADIR)/icons
-BINDEST = $(PREFIX)/usr/bin
-SBINDEST = $(PREFIX)/usr/sbin
-ETCDEST = $(PREFIX)/etc/gtk
-BINX11DEST = $(PREFIX)/usr/X11R6/bin
-LIBX11DEST = $(PREFIX)/usr/X11R6/lib/X11
-LIBDEST = $(LIBDIR)/$(NAME)
-PIXDIR = $(DATADIR)/$(NAME)/pixmaps
-INITDIR = $(PREFIX)/etc/rc.d/init.d
-.PHONY: $(DIRS)
-
-all: rpcinfo-flushed $(DIRS)
-
-$(DIRS):
- install -d auto
- rm -f share/po/DrakX.pot # force rebuild of po's
- [ ! -e $@/Makefile ] || $(MAKE) -C $@
-
-install:
- mkdir -p $(BINDEST) $(ETCDEST) $(SBINDEST) $(DATADIR)/{harddrake,pixmaps,icons/{large,mini},autostart} $(BINX11DEST) $(LIBX11DEST) $(PIXDIR) $(INITDIR) $(MENUDIR)
- install -d $(INLIBDEST_DIRS:%=$(LIBDEST)/%)
- install $(STANDALONEPMS) standalone/service_harddrake.sh standalone/convert $(SBINDEST)
- install -s rpcinfo-flushed serial_probe/serial_probe $(SBINDEST)
- ln -s ../../$(patsubst $(PREFIX)/usr%,%,$(SBINDEST))/XFdrake $(BINX11DEST)/Xdrakres
- ln -s fileshareset $(SBINDEST)/filesharelist
- mv -f $(SBINDEST)/lsnetdrake $(BINDEST)
- mv -f $(SBINDEST)/drakbug $(BINDEST)
- mv -f $(SBINDEST)/drakhelp $(BINDEST)
- mv -f $(SBINDEST)/localedrake $(BINDEST)
- mv -f $(SBINDEST)/net_applet $(BINDEST)
-
- install -m 644 *.pm $(LIBDEST)
- for i in $(PMS_DIRS); do install -d $(LIBDEST)/$$i ; install -m 644 $$i/*.pm $(LIBDEST)/$$i/;done
- install -m 644 pixmaps/*.* $(PIXDIR)
- install -m 644 share/diskdrake.rc $(DATADIR)/$(NAME)
-
- install -d $(PREFIX)/etc/security
- echo 'RESTRICT=yes' > $(PREFIX)/etc/security/fileshare.conf
-
- install -D standalone/finish-install.xsetup $(PREFIX)/etc/X11/xsetup.d/finish-install.xsetup
- install -d $(PREFIX)/etc/sysconfig
- echo 'FINISH_INSTALL=yes' > $(PREFIX)/etc/sysconfig/finish-install
-
- for i in $(HAVEINST_DIRS); do \
- $(MAKE) -C $$i install PREFIX=$(PREFIX) SUDO= DATADIR=$(DATADIR) NAME=$(NAME) ; \
- done
-
- find auto -follow -name .exists -o -name "*.bs" | xargs rm -f
- cp -rfL auto standalone/icons $(LIBDEST)
- mv $(LIBDEST)/icons/harddrake2/menu/harddrake-menu32.png $(ICONSDIR)/harddrake.png
- mv $(LIBDEST)/icons/harddrake2/menu/harddrake-menu48.png $(ICONSDIR)/large/harddrake.png
- mv $(LIBDEST)/icons/harddrake2/menu/harddrake-menu16.png $(ICONSDIR)/mini/harddrake.png
- mv $(LIBDEST)/icons/localedrake-32.png $(ICONSDIR)/localedrake.png
- mv $(LIBDEST)/icons/localedrake-48.png $(ICONSDIR)/large/localedrake.png
- mv $(LIBDEST)/icons/localedrake-16.png $(ICONSDIR)/mini/localedrake.png
- rmdir $(LIBDEST)/icons/harddrake2/menu
- mv $(LIBDEST)/icons/harddrake2/ $(DATADIR)/pixmaps/
- mv $(SBINDEST)/service_harddrake.sh $(INITDIR)/harddrake
- install share/rpmsrate $(DATADIR)/harddrake/
- mv $(SBINDEST)/convert $(DATADIR)/harddrake
- mv $(SBINDEST)/service_harddrake $(DATADIR)/harddrake/
- ln -s {XFdrake,$(SBINDEST)/drakx11}
- ln -s {diskdrake,$(SBINDEST)/drakdisk}
- ln -s {drakclock,$(SBINDEST)/clock.pl}
- ln -s {harddrake2,$(SBINDEST)/drakhardware}
- ln -s {keyboarddrake,$(SBINDEST)/drakkeyboard}
- ln -s {localedrake,$(BINDEST)/draklocale}
- ln -s {logdrake,$(SBINDEST)/draklog}
- ln -s {mousedrake,$(SBINDEST)/drakmouse}
- ln -s {net_monitor,$(SBINDEST)/draknet_monitor}
- ln -s {printerdrake,$(SBINDEST)/drakprinter}
- ln -s {scannerdrake,$(SBINDEST)/drakscanner}
- mkdir -p $(PREFIX)/usr/share/man/man{5,8}
- for i in 5 8; do install -m 644 standalone/man/C/man$$i/* $(PREFIX)/usr/share/man/man$$i; done
diff --git a/perl-install/Newt/.cvsignore b/perl-install/Newt/.cvsignore
deleted file mode 100644
index 25fe4e1c1..000000000
--- a/perl-install/Newt/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-Newt.bs
-Newt.c
-pm_to_blib
-blib
-Makefile_c
diff --git a/perl-install/Newt/Av_CharPtrPtr.c b/perl-install/Newt/Av_CharPtrPtr.c
deleted file mode 100644
index f28fa6315..000000000
--- a/perl-install/Newt/Av_CharPtrPtr.c
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include "Av_CharPtrPtr.h" /* XS_*_charPtrPtr() */
-#ifdef __cplusplus
-}
-#endif
-
-
-/* Used by the INPUT typemap for char**.
- * Will convert a Perl AV* (containing strings) to a C char**.
- */
-char **
-XS_unpack_charPtrPtr( rv )
-SV *rv;
-{
- AV *av;
- SV **ssv;
- char **s;
- int avlen;
- int x;
-
- if( SvROK( rv ) && (SvTYPE(SvRV(rv)) == SVt_PVAV) )
- av = (AV*)SvRV(rv);
- else {
- warn("XS_unpack_charPtrPtr: rv was not an AV ref");
- return( (char**)NULL );
- }
-
- /* is it empty? */
- avlen = av_len(av);
- if( avlen < 0 ){
- warn("XS_unpack_charPtrPtr: array was empty");
- return( (char**)NULL );
- }
-
- /* av_len+2 == number of strings, plus 1 for an end-of-array sentinel.
- */
- s = (char **)safemalloc( sizeof(char*) * (avlen + 2) );
- if( s == NULL ){
- warn("XS_unpack_charPtrPtr: unable to malloc char**");
- return( (char**)NULL );
- }
- for( x = 0; x <= avlen; ++x ){
- ssv = av_fetch( av, x, 0 );
- if( ssv != NULL ){
- if( SvPOK( *ssv ) ){
- s[x] = (char *)safemalloc( SvCUR(*ssv) + 1 );
- if( s[x] == NULL )
- warn("XS_unpack_charPtrPtr: unable to malloc char*");
- else
- strcpy( s[x], SvPV( *ssv, PL_na ) );
- }
- else
- warn("XS_unpack_charPtrPtr: array elem %d was not a string.", x );
- }
- else
- s[x] = (char*)NULL;
- }
- s[x] = (char*)NULL; /* sentinel */
- return( s );
-}
-
-/* Used by the OUTPUT typemap for char**.
- * Will convert a C char** to a Perl AV*.
- */
-void
-XS_pack_charPtrPtr( st, s )
-SV *st;
-char **s;
-{
- AV *av = newAV();
- SV *sv;
- char **c;
-
- for( c = s; *c != NULL; ++c ){
- sv = newSVpv( *c, 0 );
- av_push( av, sv );
- }
- sv = newSVrv( st, NULL ); /* upgrade stack SV to an RV */
- SvREFCNT_dec( sv ); /* discard */
- SvRV( st ) = (SV*)av; /* make stack RV point at our AV */
-}
-
-
-/* cleanup the temporary char** from XS_unpack_charPtrPtr */
-void
-XS_release_charPtrPtr(s)
-char **s;
-{
- char **c;
- for( c = s; *c != NULL; ++c )
- safefree( *c );
- safefree( s );
-}
-
diff --git a/perl-install/Newt/Av_CharPtrPtr.h b/perl-install/Newt/Av_CharPtrPtr.h
deleted file mode 100644
index 765f1a731..000000000
--- a/perl-install/Newt/Av_CharPtrPtr.h
+++ /dev/null
@@ -1,4 +0,0 @@
-char ** XS_unpack_charPtrPtr _(( SV *rv ));
-void XS_pack_charPtrPtr _(( SV *st, char **s ));
-void XS_release_charPtrPtr _(( char **s ));
-
diff --git a/perl-install/Newt/Makefile b/perl-install/Newt/Makefile
deleted file mode 100644
index 613ca8a1c..000000000
--- a/perl-install/Newt/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-.PHONY: clean
-
-Newt: %: %.xs
- test -e Makefile_c || perl Makefile.PL
- $(MAKE) -f Makefile_c LD_RUN_PATH= || $(MAKE) -f Makefile_c LD_RUN_PATH=
- rm -f ../auto/Newt ; ln -s ../Newt/blib/arch/auto/Newt ../auto
-
-clean:
- test ! -e Makefile_c || $(MAKE) -f Makefile_c clean
- rm -f *~ *.o
diff --git a/perl-install/Newt/Makefile.PL b/perl-install/Newt/Makefile.PL
deleted file mode 100644
index 6378a8f31..000000000
--- a/perl-install/Newt/Makefile.PL
+++ /dev/null
@@ -1,13 +0,0 @@
-use ExtUtils::MakeMaker;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
-
-WriteMakefile(
- 'NAME' => 'Newt',
- 'OBJECT' => 'Av_CharPtrPtr.o Newt.o',
- 'MAKEFILE' => 'Makefile_c',
- 'OPTIMIZE' => '-Os',
- 'VERSION_FROM' => 'Newt.pm', # finds $VERSION
- 'LIBS' => ['-lnewt -lslang'],
- 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
-);
diff --git a/perl-install/Newt/Newt.pm b/perl-install/Newt/Newt.pm
deleted file mode 100644
index 1a93f02a0..000000000
--- a/perl-install/Newt/Newt.pm
+++ /dev/null
@@ -1,20 +0,0 @@
-package Newt; # $Id$
-
-use strict;
-use vars qw($VERSION @ISA);
-use DynaLoader;
-
-use vars qw($VERSION @ISA);
-@ISA = qw(DynaLoader);
-$VERSION = '0.01';
-Newt->bootstrap($VERSION);
-
-package Newt::Component;
-
-our @ISA = qw(); # help perl_checker
-
-package Newt::Grid;
-
-our @ISA = qw(); # help perl_checker
-
-1;
diff --git a/perl-install/Newt/Newt.xs b/perl-install/Newt/Newt.xs
deleted file mode 100644
index 7b2317cc7..000000000
--- a/perl-install/Newt/Newt.xs
+++ /dev/null
@@ -1,498 +0,0 @@
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-#include <newt.h>
-#include <slang/slang.h>
-
-static void suspend() {
- newtSuspend();
- raise(SIGTSTP);
- newtResume();
-}
-
-static void componentCallback(newtComponent co, void *data) {
- dSP;
- PUSHMARK(SP);
- perl_call_sv((SV *) data, G_DISCARD);
-}
-
-
-typedef newtComponent Newt__Component;
-typedef newtGrid Newt__Grid;
-
-
-MODULE = Newt PACKAGE = Newt PREFIX = newt
-
-PROTOTYPES: DISABLE
-
-
-void
-DESTROY()
- CODE:
- {
- newtFinished();
- }
-
-int
-newtInit(setlocale)
- int setlocale
- CODE:
- SLsmg_Setlocale = setlocale;
- newtInit();
-
-int
-newtFinished()
-
-void
-newtCls()
-
-void
-newtSuspend()
-
-void
-newtResume()
-
-int
-newtCenteredWindow(width,height,title)
- int width;
- int height;
- const char * title;
-
-void
-newtPopWindow()
-
-void
-newtRefresh()
-
-void
-newtPushHelpLine(text)
- const char * text;
-
-void
-newtDrawRootText(row,col,text)
- int row;
- int col;
- const char * text;
-
-void
-newtGetScreenSize()
- PPCODE:
-{
- int cols, rows;
- newtGetScreenSize(&cols, &rows);
- PUSHs(sv_2mortal(newSViv(cols)));
- PUSHs(sv_2mortal(newSViv(rows)));
-}
-
-void
-newtSetSuspendCallback()
- CODE:
- {
- newtSetSuspendCallback(suspend, NULL);
- }
-
-
-void
-newtWinMessage(title,buttonText,text)
- char * title;
- char * buttonText;
- char * text;
-
-int
-newtWinChoice(title,button1,button2,text)
- char * title;
- char * button1;
- char * button2;
- char * text;
-
-int
-newtWinTernary(title,button1,button2,button3,message)
- char * title;
- char * button1;
- char * button2;
- char * button3;
- char * message;
-
-MODULE = Newt PACKAGE = Newt::Component PREFIX = newt
-
-void
-addCallback(co, callback)
- Newt::Component co;
- SV *callback;
- CODE:
- newtComponentAddCallback(co, componentCallback, callback);
-
-Newt::Component
-newtCompactButton(text)
- const char * text;
- CODE:
- RETVAL = newtCompactButton(-1, -1, text);
- OUTPUT:
- RETVAL
-
-Newt::Component
-newtButton(text)
- const char * text;
- CODE:
- RETVAL = newtButton(-1, -1, text);
- OUTPUT:
- RETVAL
-
-Newt::Component
-newtCheckbox(text,defValue,seq)
- const char * text;
- char *defValue;
- const char * seq;
- CODE:
- RETVAL = newtCheckbox(-1, -1, text, defValue[0], seq, NULL);
- OUTPUT:
- RETVAL
-
-int
-newtCheckboxGetValue(co)
- Newt::Component co;
-
-void
-newtCheckboxSetValue(co, value)
- Newt::Component co;
- char *value;
- CODE:
- newtCheckboxSetValue(co, value[0]);
-
-Newt::Component
-newtLabel(text)
- const char * text;
-CODE:
- RETVAL = newtLabel(-1, -1, text);
-OUTPUT:
- RETVAL
-
-void
-newtLabelSetText(co,text)
- Newt::Component co;
- const char * text;
-
-Newt::Component
-newtVerticalScrollbar(height,normalColorset,thumbColorset)
- int height;
- int normalColorset;
- int thumbColorset;
-CODE:
- RETVAL = newtVerticalScrollbar(-1, -1, height,normalColorset,thumbColorset);
-OUTPUT:
- RETVAL
-
-void
-newtScrollbarSet(co,where,total)
- Newt::Component co;
- int where;
- int total;
-
-Newt::Component
-newtListbox(height,flags)
- int height;
- int flags;
-CODE:
- RETVAL = newtListbox(-1, -1, height, flags);
-OUTPUT:
- RETVAL
-
-SV *
-newtListboxGetCurrent(co)
- Newt::Component co;
-CODE:
- RETVAL = SvREFCNT_inc(newtListboxGetCurrent(co));
-OUTPUT:
- RETVAL
-
-
-void
-newtListboxSetCurrent(co,indice)
- Newt::Component co;
- int indice;
-
-void
-newtListboxSetWidth(co,width)
- Newt::Component co;
- int width;
-
-int
-newtListboxAddEntry(co,text,data)
- Newt::Component co;
- const char * text;
- SV * data;
-CODE:
- RETVAL = newtListboxAddEntry(co, text, data);
-OUTPUT:
- RETVAL
-
-
-Newt::Component
-newtTree(height,want_scroll)
- int height;
- int want_scroll;
- CODE:
- RETVAL = newtCheckboxTree(-1,-1,height, (want_scroll ? NEWT_FLAG_SCROLL : 0) | NEWT_CHECKBOXTREE_HIDE_BOX);
- OUTPUT:
- RETVAL
-
-int
-newtTreeAdd(co,text,data,parents)
- Newt::Component co;
- const char * text;
- int data;
- SV * parents;
- CODE:
- {
- int l[10];
- int i;
- AV *av = (AV*) SvRV(parents);
- for (i = 0; i <= av_len(av); i++) l[i] = SvIV(*av_fetch(av, i, 0));
- l[i++] = NEWT_ARG_APPEND;
- l[i] = NEWT_ARG_LAST;
- RETVAL = newtCheckboxTreeAddArray(co, text, (void *) data, 0, l);
- }
- OUTPUT:
- RETVAL
-
-void
-newtTreeSetCurrent(co, data)
- Newt::Component co;
- int data;
- CODE:
- newtCheckboxTreeSetCurrent(co, (void *) data);
-
-void
-newtTreeSetWidth(co,width)
- Newt::Component co;
- int width;
- CODE:
- newtCheckboxTreeSetWidth(co, width);
-
-int
-newtTreeGetCurrent(co)
- Newt::Component co;
-CODE:
- RETVAL = (int) newtCheckboxTreeGetCurrent(co);
-OUTPUT:
- RETVAL
-
-
-Newt::Component
-newtTextbox(left,top,width,height,want_scroll)
- int left;
- int top;
- int width;
- int height;
- int want_scroll;
- CODE:
- RETVAL = newtTextbox(left,top,width,height, (want_scroll ? NEWT_FLAG_SCROLL : 0) | NEWT_FLAG_WRAP);
- OUTPUT:
- RETVAL
-
-void
-newtTextboxSetText(co,text)
- Newt::Component co;
- const char * text;
-
-void
-newtTextboxSetHeight(co,height)
- Newt::Component co;
- int height;
-
-int
-newtTextboxGetNumLines(co)
- Newt::Component co;
-
-char *
-newtReflowText(text,width,flexDown,flexUp,actualWidth,actualHeight)
- char * text;
- int width;
- int flexDown;
- int flexUp;
- int * actualWidth;
- int * actualHeight;
-
-Newt::Component
-newtForm(vertBar,help,flags)
- Newt::Component vertBar;
- char * help;
- int flags;
-
-void
-newtFormSetSize(co)
- Newt::Component co;
-
-Newt::Component
-newtFormGetCurrent(co)
- Newt::Component co;
-
-void
-newtFormSetBackground(co,color)
- Newt::Component co;
- int color;
-
-void
-newtFormSetCurrent(co,subco)
- Newt::Component co;
- Newt::Component subco;
-
-void
-newtFormAddComponent(form,co)
- Newt::Component form;
- Newt::Component co;
-
-void
-newtFormAddGrid(form,grid,recurse)
- Newt::Component form;
- Newt::Grid grid;
- int recurse;
- CODE:
- newtGridAddComponentsToForm(grid,form,recurse);
-
-void
-newtFormSetHeight(co,height)
- Newt::Component co;
- int height;
-
-void
-newtFormSetWidth(co,width)
- Newt::Component co;
- int width;
-
-Newt::Component
-newtRunForm(form)
- Newt::Component form;
-
-void
-newtDrawForm(form)
- Newt::Component form;
-
-Newt::Component
-newtEntry(initialValue,width,flag)
- const char * initialValue;
- int width;
- int flag;
- CODE:
- {
- const char *result;
- RETVAL = newtEntry(-1, -1, initialValue,width,&result,flag);
- }
- OUTPUT:
- RETVAL
-
-void
-newtEntrySet(co,value,cursorAtEnd)
- Newt::Component co;
- const char * value;
- int cursorAtEnd;
-
-char *
-newtEntryGetValue(co)
- Newt::Component co;
-
-void
-newtFormDestroy(form)
- Newt::Component form;
-
-MODULE = Newt PACKAGE = Newt::Grid PREFIX = newt
-
-Newt::Grid
-newtCreateGrid(cols,rows)
- int cols;
- int rows;
-
-Newt::Grid
-HCloseStacked3(c1, c2, c3)
- Newt::Component c1;
- Newt::Component c2;
- Newt::Component c3;
- CODE:
- {
- RETVAL = newtGridHCloseStacked(NEWT_GRID_COMPONENT, c1, NEWT_GRID_COMPONENT, c2, NEWT_GRID_COMPONENT, c3);
- }
-OUTPUT:
-RETVAL
-
-
-Newt::Grid
-newtGridBasicWindow(text,middle,buttons)
- Newt::Component text;
- Newt::Grid middle;
- Newt::Grid buttons;
-
-
-Newt::Grid
-newtGridSimpleWindow(text,middle,buttons)
- Newt::Component text;
- Newt::Component middle;
- Newt::Grid buttons;
-
-void
-newtGridSetField(grid,col,row,type,val,padLeft,padTop,padRight,padBottom,anchor,flags)
- Newt::Grid grid;
- int col;
- int row;
- enum newtGridElement type;
- void * val;
- int padLeft;
- int padTop;
- int padRight;
- int padBottom;
- int anchor;
- int flags;
-
-
-void
-newtGridFree(grid,recurse)
- Newt::Grid grid;
- int recurse;
-
-void
-newtGridPlace(grid,left,top)
- Newt::Grid grid;
- int left;
- int top;
-
-void
-newtGridGetSize(grid)
- Newt::Grid grid;
- PPCODE:
-{
- int width;
- int height;
- newtGridGetSize(grid, &width, &height);
- PUSHs(sv_2mortal(newSViv(width)));
- PUSHs(sv_2mortal(newSViv(height)));
-}
-
-void
-newtGridWrappedWindow(grid,title)
- Newt::Grid grid;
- char * title;
-
-Newt::Grid
-newtButtonBar(button1, ...)
- char * button1;
- PPCODE:
- {
- static newtComponent p[11];
- int i;
- EXTEND(SP, items + 1);
-#define a(i) (char *)SvPV(ST(i),PL_na)
- PUSHs(sv_setref_pv(sv_newmortal(), "Newt::Grid",
- newtButtonBar(items > 0 ? a( 0) : NULL, items > 0 ? &p[ 0] : NULL,
- items > 1 ? a( 1) : NULL, items > 1 ? &p[ 1] : NULL,
- items > 2 ? a( 2) : NULL, items > 2 ? &p[ 2] : NULL,
- items > 3 ? a( 3) : NULL, items > 3 ? &p[ 3] : NULL,
- items > 4 ? a( 4) : NULL, items > 4 ? &p[ 4] : NULL,
- items > 5 ? a( 5) : NULL, items > 5 ? &p[ 5] : NULL,
- items > 6 ? a( 6) : NULL, items > 6 ? &p[ 6] : NULL,
- items > 7 ? a( 7) : NULL, items > 7 ? &p[ 7] : NULL,
- items > 8 ? a( 8) : NULL, items > 8 ? &p[ 8] : NULL,
- items > 9 ? a( 9) : NULL, items > 9 ? &p[ 9] : NULL,
- items > 10 ? a(10) : NULL, items > 10 ? &p[10] : NULL,
- NULL)));
-#undef a
- for (i = 0; i < items; i++) PUSHs(sv_setref_pv(sv_newmortal(), "Newt::Component", p[i]));
- }
diff --git a/perl-install/Newt/typemap b/perl-install/Newt/typemap
deleted file mode 100644
index 5aaa2f668..000000000
--- a/perl-install/Newt/typemap
+++ /dev/null
@@ -1,25 +0,0 @@
-TYPEMAP
-
-const char * T_PV
-const void * T_PV
-int * T_PV
-void ** T_PACKED
-
-enum newtFlagsSense T_IV
-enum newtGridElement T_IV
-SV ** T_SV
-
-Newt::Component NewtComponent
-Newt::Grid NewtGrid
-
-INPUT
-NewtComponent
- $var = ($type) SvIV((SV*)SvRV($arg))
-NewtGrid
- $var = ($type) SvIV((SV*)SvRV($arg))
-
-OUTPUT
-NewtComponent
- sv_setref_pv($arg, "Newt::Component", (void*) $var);
-NewtGrid
- sv_setref_pv($arg, "Newt::Grid", (void*) $var);
diff --git a/perl-install/Xconfig/FILES b/perl-install/Xconfig/FILES
deleted file mode 100644
index f6352dedf..000000000
--- a/perl-install/Xconfig/FILES
+++ /dev/null
@@ -1,6 +0,0 @@
-
-parse --- xfree ---- default ------------------ main
- \--- card -------------------/ test
- \-- monitor ---------------/ various
- \- screen ---------------/ proprietary
- \ resolution_and_depth-/
diff --git a/perl-install/Xconfig/card.pm b/perl-install/Xconfig/card.pm
deleted file mode 100644
index 46249de4f..000000000
--- a/perl-install/Xconfig/card.pm
+++ /dev/null
@@ -1,607 +0,0 @@
-package Xconfig::card; # $Id$
-
-use diagnostics;
-use strict;
-
-use detect_devices;
-use modules;
-use common;
-use log;
-
-
-my %VideoRams = (
- 256 => N_("256 kB"),
- 512 => N_("512 kB"),
- 1024 => N_("1 MB"),
- 2048 => N_("2 MB"),
- 4096 => N_("4 MB"),
- 8192 => N_("8 MB"),
- 16384 => N_("16 MB"),
- 32768 => N_("32 MB"),
- 65536 => N_("64 MB or more"),
-);
-
-my $lib = arch() =~ /x86_64/ ? "lib64" : "lib";
-
-my @xfree4_Drivers = ((arch() =~ /^sparc/ ? qw(sunbw2 suncg14 suncg3 suncg6 sunffb sunleo suntcx) :
- qw(apm ark chips cirrus cyrix glide i128 i740 i810 imstt
- mga neomagic newport nv rendition r128 radeon vesa
- s3 s3virge savage siliconmotion sis tdfx tga trident tseng vmware)),
- qw(ati glint vga fbdev));
-
-sub from_raw_X {
- my ($raw_X) = @_;
-
- my $device = $raw_X->get_device or die "no card configured";
-
- my $card = {
- use_DRI_GLX => eval { any { /dri/ } $raw_X->get_modules },
- %$device,
- };
- add_to_card__using_Cards($card, $card->{BoardName});
- $card;
-}
-
-sub to_raw_X {
- my ($card, $raw_X) = @_;
-
- my @cards = ($card, @{$card->{cards} || []});
-
- foreach (@cards) {
- #- Specific ATI fglrx driver default options
- if ($_->{Driver} eq 'fglrx') {
- # $default_ATI_fglrx_config need to be move in proprietary ?
- $_->{raw_LINES} ||= default_ATI_fglrx_config();
- }
- if (arch() =~ /ppc/ && ($_->{Driver} eq 'r128' || $_->{Driver} eq 'radeon')) {
- $_->{UseFBDev} = 1;
- }
- }
-
- $raw_X->set_devices(@cards);
-
- $raw_X->get_ServerLayout->{Xinerama} = { commented => !$card->{Xinerama}, Option => 1 }
- if defined $card->{Xinerama};
-
- $raw_X->set_load_module('glx', !$card->{DRI_GLX_SPECIAL} && $card->{Driver2} ne 'fglrx'); #- glx for everyone, except proprietary nvidia
- $raw_X->set_load_module('dri', $card->{use_DRI_GLX} && !$card->{DRI_GLX_SPECIAL});
-
- # This loads the NVIDIA GLX extension module.
- # IT IS IMPORTANT TO KEEP NAME AS FULL PATH TO libglx.so ELSE
- # IT WILL LOAD XFree86 glx module and the server will crash.
- $raw_X->set_load_module("/usr/X11R6/$lib/modules/extensions/libglx.so", $card->{DRI_GLX_SPECIAL});
- if ($card->{Driver2} ne 'nvidia') {
- $raw_X->set_load_module("/usr/X11R6/$lib/modules/extensions/libglx.a", 1);
- }
-
- $raw_X->remove_Section('DRI');
-
- $raw_X->remove_load_module('v4l') if $card->{use_DRI_GLX} && $card->{Driver} eq 'r128';
-}
-
-sub default_ATI_fglrx_config() { our $default_ATI_fglrx_config }
-
-sub probe() {
-#-for Pixel tests
-#- my @c = { driver => 'Card:Matrox Millennium G400 DualHead', description => 'Matrox|Millennium G400 Dual HeadCard' };
- my @c = detect_devices::matching_driver__regexp('^(Card|Server|Driver):');
-
- my @cards = map {
- my @l = $_->{description} =~ /(.*?)\|(.*)/;
- my $card = {
- description => $_->{description},
- VendorName => $l[0], BoardName => $l[1],
- BusID => "PCI:$_->{pci_bus}:$_->{pci_device}:$_->{pci_function}",
- };
- if ($_->{driver} =~ /Card:(.*)/) { $card->{BoardName} = $1; add_to_card__using_Cards($card, $1) }
- elsif ($_->{driver} =~ /Driver:(.*)/) { $card->{Driver} = $1 }
- else { internal_error() }
-
- $card;
- } @c;
-
- if (@cards >= 2 && $cards[0]{card_name} eq $cards[1]{card_name} && $cards[0]{card_name} eq 'Intel 830') {
- shift @cards;
- }
- #- take a default on sparc if nothing has been found.
- if (arch() =~ /^sparc/ && !@cards) {
- log::l("Using probe with /proc/fb as nothing has been found!");
- my $s = cat_("/proc/fb");
- @cards = { server => $s =~ /Mach64/ ? "Mach64" : $s =~ /Permedia2/ ? "3DLabs" : "Sun24" };
- }
-
- #- disabling MULTI_HEAD when not available
- foreach (@cards) {
- $_->{MULTI_HEAD} && $_->{card_name} =~ /G[24]00/ or next;
- if ($ENV{MATROX_HAL}) {
- $_->{need_MATROX_HAL} = 1;
- } else {
- delete $_->{MULTI_HEAD};
- }
- }
-
- #- in case of only one cards, remove all BusID reference, this will avoid
- #- need of change of it if the card is moved.
- #- on many PPC machines, card is on-board, BusID is important, leave?
- if (@cards == 1 && !$cards[0]{MULTI_HEAD} && arch() !~ /ppc/) {
- delete $cards[0]{BusID};
- }
-
- @cards;
-}
-
-sub card_config__not_listed {
- my ($in, $card, $options) = @_;
-
- my $vendors_regexp = join '|', map { quotemeta } (
- '3Dlabs',
- 'AOpen', 'ASUS', 'ATI', 'Ark Logic', 'Avance Logic',
- 'Cardex', 'Chaintech', 'Chips & Technologies', 'Cirrus Logic', 'Compaq', 'Creative Labs',
- 'Dell', 'Diamond', 'Digital',
- 'ET', 'Elsa',
- 'Genoa', 'Guillemot', 'Hercules', 'Intel', 'Leadtek',
- 'Matrox', 'Miro', 'NVIDIA', 'NeoMagic', 'Number Nine',
- 'Oak', 'Orchid',
- 'RIVA', 'Rendition Verite',
- 'S3', 'Silicon Motion', 'STB', 'SiS', 'Sun',
- 'Toshiba', 'Trident',
- 'VideoLogic',
- );
- my $cards = readCardsDB("$ENV{SHARE_PATH}/ldetect-lst/Cards+");
-
- my @xf4 = grep { $options->{allowFB} || $_ ne 'fbdev' } @xfree4_Drivers;
- my @list = (
- (map { 'Vendor|' . $_ } keys %$cards),
- (map { 'Xorg|' . $_ } @xf4),
- );
-
- my $r = exists $cards->{$card->{BoardName}} ? "Vendor|$card->{BoardName}" : 'Xorg|vesa';
- $in->ask_from_({ title => N("X server"),
- messages => N("Choose an X server"),
- interactive_help_id => 'configureX_card_list',
- },
- [ { val => \$r, separator => '|', list => \@list, sort => 1,
- format => sub { $_[0] =~ /^Vendor\|($vendors_regexp)\s*-?(.*)/ ? "Vendor|$1|$2" :
- $_[0] =~ /^Vendor\|(.*)/ ? "Vendor|Other|$1" : $_[0] } } ]) or return;
-
- log::explanations("Xconfig::card: $r manually chosen");
-
- $r eq "Vendor|$card->{BoardName}" and return 1; #- it is unchanged, do not modify $card
-
- my ($kind, $s) = $r =~ /(.*?)\|(.*)/;
-
- %$card = ();
- if ($kind eq 'Vendor') {
- add_to_card__using_Cards($card, $s);
- } else {
- $card->{Driver} = $s;
- }
- $card->{manually_chosen} = 1;
- 1;
-}
-
-sub multi_head_choose {
- my ($in, $auto, @cards) = @_;
-
- my @choices = multi_head_choices('', @cards);
-
- my $tc = $choices[0];
- if ($auto) {
- @choices == 1 or return;
- } else {
- $tc = $in->ask_from_listf(N("Multi-head configuration"),
- N("Your system supports multiple head configuration.
-What do you want to do?"), sub { $_[0]{text} }, \@choices) or return;
- }
- $tc->{code} or die internal_error();
- return $tc->{code}();
-}
-
-sub configure_auto_install {
- my ($raw_X, $do_pkgs, $old_X, $options) = @_;
-
- my $card = $old_X->{card} || {};
-
- if ($card->{card_name}) {
- #- try to get info from given card_name
- add_to_card__using_Cards($card, $card->{card_name});
- if (!$card->{Driver}) {
- log::l("bad card_name $card->{card_name}, using probe");
- undef $card->{card_name};
- }
- }
-
- if (!$card->{Driver}) {
- my @cards = probe();
- my ($choice) = multi_head_choices($old_X->{Xinerama}, @cards);
- $card = $choice ? $choice->{code}() : do {
- log::explanations('no graphic card probed, try providing one using $o->{card}{Driver} or $o->{card}{card_name}. Defaulting...');
- { Driver => $options->{allowFB} ? 'fbdev' : 'vesa' };
- };
- }
-
- my ($glx_choice) = xfree_and_glx_choices($card);
- log::explanations("Using $glx_choice->{text}");
- $glx_choice->{code}();
- set_glx_restrictions($card);
-
- install_server($card, $options, $do_pkgs);
- if ($card->{needVideoRam} && !$card->{VideoRam}) {
- $card->{VideoRam} = $options->{VideoRam_probed} || 4096;
- log::explanations("argh, I need to know VideoRam! Taking " . ($options->{probed_VideoRam} ? "the probed" : "a default") . " value: VideoRam = $card->{VideoRam}");
- }
- to_raw_X($card, $raw_X);
- $card;
-}
-
-sub configure {
- my ($in, $raw_X, $do_pkgs, $auto, $options) = @_;
-
- my @cards = probe();
- @cards or @cards = {};
-
- if (!$cards[0]{Driver}) {
- if ($options->{allowFB}) {
- $cards[0]{Driver} = 'fbdev';
- } elsif ($auto) {
- log::explanations("Xconfig::card: auto failed (unknown card and no allowFB)");
- return 0;
- }
- }
- if (!$auto) {
- card_config__not_listed:
- card_config__not_listed($in, $cards[0], $options) or return;
- }
-
- my $card = multi_head_choose($in, $auto, @cards) or return;
-
- xfree_and_glx_choose($in, $card, $auto) or return;
-
- eval { install_server($card, $options, $do_pkgs) };
- if ($@) {
- $in->ask_warn('', N("Can not install Xorg package: %s", $@));
- goto card_config__not_listed;
- }
-
- if ($card->{needVideoRam} && !$card->{VideoRam}) {
- if ($auto) {
- log::explanations("Xconfig::card: auto failed (needVideoRam)");
- return;
- }
- $card->{VideoRam} = (find { $_ <= $options->{VideoRam_probed} } reverse ikeys %VideoRams) || 4096;
- $in->ask_from('', N("Select the memory size of your graphics card"),
- [ { val => \$card->{VideoRam},
- type => 'list',
- list => [ ikeys %VideoRams ],
- format => sub { translate($VideoRams{$_[0]}) },
- not_edit => !$::expert } ]) or return;
- }
-
- to_raw_X($card, $raw_X);
- $card;
-}
-
-sub install_server {
- my ($card, $options, $do_pkgs) = @_;
-
- my $prog = "$::prefix/usr/X11R6/bin/Xorg";
-
- my @packages;
- push @packages, 'xorg-x11-server' if ! -x $prog;
-
- #- additional packages to install according available card.
- #- add XFree86-libs-DRI here if using DRI (future split of XFree86 TODO)
- if ($card->{use_DRI_GLX}) {
- push @packages, 'Glide_V5' if $card->{card_name} eq 'Voodoo5 (generic)';
- push @packages, 'Glide_V3-DRI' if member($card->{card_name}, 'Voodoo3 (generic)', 'Voodoo Banshee (generic)');
- push @packages, 'xorg-x11-glide-module' if $card->{card_name} =~ /Voodoo/;
- }
-
- if ($options->{freedriver}) {
- delete $card->{Driver2};
- }
-
- my %proprietary_Driver2 = (
- nvidia => [ 'nvidia-kernel', 'nvidia' ], #- using NVIDIA driver (TNT, TN2 and GeForce cards only).
- fglrx => [ 'ati-kernel', 'ati' ], #- using ATI fglrx driver (Radeon, Fire GL cards only).
- );
- if (my $rpms_needed = $proprietary_Driver2{$card->{Driver2}}) {
- if (my $proprietary_packages = $do_pkgs->check_kernel_module_packages($rpms_needed->[0], $rpms_needed->[1])) {
- push @packages, @$proprietary_packages;
- }
- }
-
- $do_pkgs->install(@packages) if @packages;
- -x $prog or die "server not available (should be in $prog)";
-
- #- make sure everything is correct at this point, packages have really been installed
- #- and driver and GLX extension is present.
- if ($card->{Driver2} eq 'nvidia' &&
- -e "$::prefix/usr/X11R6/$lib/modules/drivers/nvidia_drv.o" &&
- -l "$::prefix/usr/X11R6/$lib/modules/extensions/libglx.so") {
- log::explanations("Using specific NVIDIA driver and GLX extensions");
- $card->{Driver} = 'nvidia';
- $card->{DRI_GLX_SPECIAL} = 1;
- $card->{Options}{IgnoreEDID} = 1;
- }
- if ($card->{Driver2} eq 'fglrx' &&
- -e "$::prefix/usr/X11R6/$lib/modules/dri/fglrx_dri.so" &&
- -e "$::prefix/usr/X11R6/$lib/modules/drivers/fglrx_drv.o") {
- log::explanations("Using specific ATI fglrx and DRI drivers");
- $card->{Driver} = 'fglrx';
- }
-
- libgl_config($card->{Driver});
-
- if ($card->{need_MATROX_HAL}) {
- require Xconfig::proprietary;
- Xconfig::proprietary::install_matrox_hal($::prefix);
- }
-}
-
-sub xfree_and_glx_choose {
- my ($in, $card, $auto) = @_;
-
- my @choices = xfree_and_glx_choices($card);
-
- my $tc =
- $auto ? $choices[0] :
- $in->ask_from_listf_raw({ title => N("Xorg configuration"),
- messages => formatAlaTeX(join("\n\n\n", (grep { $_ } map { $_->{more_messages} } @choices),
- N("Which configuration of Xorg do you want to have?"))),
- interactive_help_id => 'configureX_xfree_and_glx',
- },
- sub { $_[0]{text} }, \@choices) or return;
- log::explanations("Using $tc->{text}");
- $tc->{code}();
- set_glx_restrictions($card);
- 1;
-}
-
-sub multi_head_choices {
- my ($want_Xinerama, @cards) = @_;
- my @choices;
-
- my $has_multi_head = @cards > 1 || @cards && $cards[0]{MULTI_HEAD} > 1;
- my $disable_multi_head = any {
- $_->{Driver} or log::explanations("found card $_->{description} not supported by XF4, disabling multi-head support");
- !$_->{Driver};
- } @cards;
-
- if ($has_multi_head && !$disable_multi_head) {
- my $configure_multi_head = sub {
-
- #- special case for multi head card using only one BusID.
- @cards = map {
- map_index { { Screen => $::i, %$_ } } ($_) x ($_->{MULTI_HEAD} || 1);
- } @cards;
-
- my $card = shift @cards; #- assume good default.
- $card->{cards} = \@cards;
- $card->{Xinerama} = $_[0];
- $card;
- };
- my $independent = { text => N("Configure all heads independently"), code => sub { $configure_multi_head->('') } };
- my $xinerama = { text => N("Use Xinerama extension"), code => sub { $configure_multi_head->(1) } };
- push @choices, $want_Xinerama ? ($xinerama, $independent) : ($independent, $xinerama);
- }
-
- foreach my $c (@cards) {
- push @choices, { text => N("Configure only card \"%s\"%s", $c->{description}, $c->{BusID} && " ($c->{BusID})"),
- code => sub { $c } };
- }
- @choices;
-}
-
-#- Xorg version available, it would be better to parse available package and get version from it.
-sub xorg_version() { '6.8.2' }
-
-sub xfree_and_glx_choices {
- my ($card) = @_;
-
- my @choices = if_($card->{Driver}, { text => N("Xorg %s", xorg_version()), code => sub {} });
-
- #- no GLX with Xinerama
- return @choices if $card->{Xinerama};
-
- #- ask the expert or any user on second pass user to enable or not hardware acceleration support.
- if ($card->{DRI_GLX}) {
- unshift @choices, { text => N("Xorg %s with 3D hardware acceleration", xorg_version()),
- code => sub { $card->{use_DRI_GLX} = 1 },
- more_messages => N("Your card can have 3D hardware acceleration support with Xorg %s.", xorg_version()),
- };
- }
-
- #- an expert user may want to try to use an EXPERIMENTAL 3D acceleration.
- if ($card->{DRI_GLX_EXPERIMENTAL} && $::expert) {
- push @choices, { text => N("Xorg %s with EXPERIMENTAL 3D hardware acceleration", xorg_version()),
- code => sub { $card->{use_DRI_GLX} = 1 },
- more_messages => N("Your card can have 3D hardware acceleration support with Xorg %s,
-NOTE THIS IS EXPERIMENTAL SUPPORT AND MAY FREEZE YOUR COMPUTER.", xorg_version()),
- };
- }
- @choices;
-}
-
-sub set_glx_restrictions {
- my ($card) = @_;
-
- #- 3D acceleration configuration for XFree 4 using DRI, this is enabled by default
- #- but for some there is a need to specify VideoRam (else it will not run).
- if ($card->{use_DRI_GLX}) {
- $card->{needVideoRam} = 1 if $card->{description} =~ /Matrox.* G[245][05]0/;
- ($card->{needVideoRam}, $card->{VideoRam}) = (1, 16384)
- if member($card->{card_name}, 'Intel 810', 'Intel 815');
-
- #- hack for ATI Rage 128 card using a bttv or peripheral with PCI bus mastering exchange
- #- AND using DRI at the same time.
- if (member($card->{card_name}, 'ATI Rage 128', 'ATI Rage 128 TVout', 'ATI Rage 128 Mobility')) {
- $card->{Options}{UseCCEFor2D} = bool2text(modules::probe_category('multimedia/tv'));
- }
- }
-
- #- check for Matrox G200 PCI cards, disable AGP in such cases, causes black screen else.
- if (member($card->{card_name}, 'Matrox Millennium 200', 'Matrox Millennium 200', 'Matrox Mystique') && $card->{description} !~ /AGP/) {
- log::explanations("disabling AGP mode for Matrox card, as it seems to be a PCI card");
- log::explanations("this is only used for XFree 3.3.6, see /etc/X11/glx.conf");
- substInFile { s/^\s*#*\s*mga_dma\s*=\s*\d+\s*$/mga_dma = 0\n/ } "$::prefix/etc/X11/glx.conf";
- }
-}
-
-sub libgl_config {
- my ($Driver) = @_;
-
- my $dir = "$::prefix/etc/ld.so.conf.d/";
-
- my %driver_to_libgl_config = (
- nvidia => '.conf.nvidia',
- fglrx => '.conf.ati',
- );
- my $need_to_run_ldconfig;
- my $link = "$dir/GL.conf";
- if (my $file = $driver_to_libgl_config{$Driver}) {
- if (-e "$dir/$file" && readlink($link) ne $file) {
- symlinkf($file, "$dir/GL.conf");
- $need_to_run_ldconfig = 1;
- log::explanations("ldconfig will be run because the GL library was enabled");
- }
- } elsif (-e $link) {
- eval { rm_rf($link) };
- $need_to_run_ldconfig = 2;
- log::explanations("ldconfig will be run because the GL library was disabled");
-
- }
- system("/sbin/ldconfig") if $::isStandalone && $need_to_run_ldconfig;
-}
-
-sub add_to_card__using_Cards {
- my ($card, $name) = @_;
- my $cards = readCardsDB("$ENV{SHARE_PATH}/ldetect-lst/Cards+");
- add2hash($card, $cards->{$name});
- $card->{BoardName} = $card->{card_name};
-
- $card;
-}
-
-#- needed for bad cards not restoring cleanly framebuffer, according to which version of Xorg are used.
-sub check_bad_card {
- my ($card) = @_;
- my $bad_card = $card->{BAD_FB_RESTORE};
- $bad_card ||= $card->{Driver} eq 'i810' || $card->{Driver} eq 'fbdev';
- $bad_card ||= member($card->{Driver}, 'nvidia', 'vmware') if !$::isStandalone; #- avoid testing during install at any price.
-
- log::explanations("the graphics card does not like X in framebuffer") if $bad_card;
-
- !$bad_card;
-}
-
-sub readCardsDB {
- my ($file) = @_;
- my ($card, %cards);
-
- my $F = openFileMaybeCompressed($file);
-
- my $lineno = 0;
- my ($cmd, $val);
- my $fs = {
- NAME => sub {
- $cards{$card->{card_name}} = $card if $card;
- $card = { card_name => $val };
- },
- SEE => sub {
- my $c = $cards{$val} or die "Error in database, invalid reference $val at line $lineno";
- add2hash($card, $c);
- },
- LINE => sub { $val =~ s/^\s*//; $card->{raw_LINES} .= "$val\n" },
- CHIPSET => sub { $card->{Chipset} = $val },
- DRIVER => sub { $card->{Driver} = $val },
- DRIVER2 => sub { $card->{Driver2} = $val },
- NEEDVIDEORAM => sub { $card->{needVideoRam} = 1 },
- DRI_GLX => sub { $card->{DRI_GLX} = 1 if $card->{Driver} },
- DRI_GLX_EXPERIMENTAL => sub { $card->{DRI_GLX_EXPERIMENTAL} = 1 if $card->{Driver} },
- MULTI_HEAD => sub { $card->{MULTI_HEAD} = $val if $card->{Driver} },
- BAD_FB_RESTORE => sub { $card->{BAD_FB_RESTORE} = 1 },
- FB_TVOUT => sub { $card->{FB_TVOUT} = 1 },
- UNSUPPORTED => sub { delete $card->{Driver} },
-
- COMMENT => sub {},
- };
-
- local $_;
- while (<$F>) { $lineno++;
- s/\s+$//;
- /^#/ and next;
- /^$/ and next;
- /^END/ and do { $cards{$card->{card_name}} = $card if $card; last };
-
- ($cmd, $val) = /(\S+)\s*(.*)/ or next;
-
- my $f = $fs->{$cmd};
-
- $f ? $f->() : log::l("unknown line $lineno ($_)");
- }
- \%cards;
-}
-
-our $default_ATI_fglrx_config = <<'END';
-# === disable PnP Monitor ===
-#Option "NoDDC"
-# === disable/enable XAA/DRI ===
-Option "no_accel" "no"
-Option "no_dri" "no"
-# === FireGL DDX driver module specific settings ===
-# === Screen Management ===
-Option "DesktopSetup" "0x00000000"
-Option "MonitorLayout" "AUTO, AUTO"
-Option "IgnoreEDID" "off"
-Option "HSync2" "unspecified"
-Option "VRefresh2" "unspecified"
-Option "ScreenOverlap" "0"
-# === TV-out Management ===
-Option "NoTV" "yes"
-Option "TVStandard" "NTSC-M"
-Option "TVHSizeAdj" "0"
-Option "TVVSizeAdj" "0"
-Option "TVHPosAdj" "0"
-Option "TVVPosAdj" "0"
-Option "TVHStartAdj" "0"
-Option "TVColorAdj" "0"
-Option "GammaCorrectionI" "0x00000000"
-Option "GammaCorrectionII" "0x00000000"
-# === OpenGL specific profiles/settings ===
-Option "Capabilities" "0x00000000"
-# === Video Overlay for the Xv extension ===
-Option "VideoOverlay" "on"
-# === OpenGL Overlay ===
-# Note: When OpenGL Overlay is enabled, Video Overlay
-# will be disabled automatically
-Option "OpenGLOverlay" "off"
-Option "CenterMode" "off"
-# === QBS Support ===
-Option "Stereo" "off"
-Option "StereoSyncEnable" "1"
-# === Misc Options ===
-Option "UseFastTLS" "0"
-Option "BlockSignalsOnLock" "on"
-Option "UseInternalAGPGART" "no"
-Option "ForceGenericCPU" "no"
-# === FSAA ===
-Option "FSAAScale" "1"
-Option "FSAADisableGamma" "no"
-Option "FSAACustomizeMSPos" "no"
-Option "FSAAMSPosX0" "0.000000"
-Option "FSAAMSPosY0" "0.000000"
-Option "FSAAMSPosX1" "0.000000"
-Option "FSAAMSPosY1" "0.000000"
-Option "FSAAMSPosX2" "0.000000"
-Option "FSAAMSPosY2" "0.000000"
-Option "FSAAMSPosX3" "0.000000"
-Option "FSAAMSPosY3" "0.000000"
-Option "FSAAMSPosX4" "0.000000"
-Option "FSAAMSPosY4" "0.000000"
-Option "FSAAMSPosX5" "0.000000"
-Option "FSAAMSPosY5" "0.000000"
-END
-
-1;
-
diff --git a/perl-install/Xconfig/default.pm b/perl-install/Xconfig/default.pm
deleted file mode 100644
index f41fccaf7..000000000
--- a/perl-install/Xconfig/default.pm
+++ /dev/null
@@ -1,44 +0,0 @@
-package Xconfig::default; # $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::xfree;
-use keyboard;
-use common;
-use mouse;
-
-
-sub configure {
- my ($do_pkgs, $o_keyboard, $o_mouse) = @_;
-
- my $keyboard = $o_keyboard || keyboard::read();
- my $mouse = $o_mouse || do {
- my $mouse = mouse::read();
- add2hash($mouse, mouse::detect(modules::any_conf->read)) if !$::noauto;
- $mouse;
- };
-
- my $raw_X = Xconfig::xfree->empty_config;
-
- $raw_X->add_load_module($_) foreach qw(dbe v4l extmod type1 freetype);
-
- config_keyboard($raw_X, $keyboard);
- config_mouse($raw_X, $do_pkgs, $mouse);
-
- $raw_X;
-}
-
-sub config_mouse {
- my ($raw_X, $do_pkgs, $mouse) = @_;
- mouse::set_xfree_conf($mouse, $raw_X);
- mouse::various_xfree_conf($do_pkgs, $mouse);
-}
-
-sub config_keyboard {
- my ($raw_X, $keyboard) = @_;
- $raw_X->set_keyboard(keyboard::keyboard2full_xkb($keyboard));
-}
-
-1;
-
diff --git a/perl-install/Xconfig/main.pm b/perl-install/Xconfig/main.pm
deleted file mode 100644
index 724dc111f..000000000
--- a/perl-install/Xconfig/main.pm
+++ /dev/null
@@ -1,252 +0,0 @@
-package Xconfig::main; # $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::monitor;
-use Xconfig::card;
-use Xconfig::resolution_and_depth;
-use Xconfig::various;
-use Xconfig::screen;
-use Xconfig::test;
-use common;
-use any;
-
-
-sub configure_monitor {
- my ($in) = @_;
-
- my ($raw_X, $before) = Xconfig::xfree->read_and_prepare_write;
- Xconfig::monitor::configure($in, $raw_X, int($raw_X->get_devices)) or return;
- if ($raw_X->prepare_write ne $before) {
- $raw_X->write;
- 'need_restart';
- } else {
- '';
- }
-}
-
-sub configure_resolution {
- my ($in) = @_;
-
- my ($raw_X, $before) = Xconfig::xfree->read_and_prepare_write;
- my $X = {
- card => Xconfig::card::from_raw_X($raw_X),
- monitors => [ $raw_X->get_monitors ],
- };
- $X->{resolution} = Xconfig::resolution_and_depth::configure($in, $raw_X, $X->{card}, $X->{monitors}) or return;
- if ($raw_X->prepare_write ne $before) {
- &write($raw_X, $X);
- } else {
- '';
- }
-}
-
-
-sub configure_everything_auto_install {
- my ($raw_X, $do_pkgs, $old_X, $options) = @_;
- my $X = {};
- $X->{monitors} = Xconfig::monitor::configure_auto_install($raw_X, $old_X) or return;
- $options->{VideoRam_probed} = $X->{monitors}[0]{VideoRam_probed};
- $X->{card} = Xconfig::card::configure_auto_install($raw_X, $do_pkgs, $old_X, $options) or return;
- Xconfig::screen::configure($raw_X) or return;
- $X->{resolution} = Xconfig::resolution_and_depth::configure_auto_install($raw_X, $X->{card}, $X->{monitors}, $old_X);
-
- my $action = &write($raw_X, $X);
-
- Xconfig::various::runlevel(exists $old_X->{xdm} && !$old_X->{xdm} ? 3 : 5);
-
- $action;
-}
-
-sub configure_everything {
- my ($in, $raw_X, $do_pkgs, $auto, $options) = @_;
- my $X = {};
- my $ok = 1;
-
- my $probed_info = Xconfig::monitor::probe($raw_X->get_Driver);
- $options->{VideoRam_probed} = $probed_info->{VideoRam_probed};
- $ok &&= $X->{card} = Xconfig::card::configure($in, $raw_X, $do_pkgs, $auto, $options);
- $ok &&= $X->{monitors} = Xconfig::monitor::configure($in, $raw_X, int($raw_X->get_devices), $probed_info, $auto);
- $ok &&= Xconfig::screen::configure($raw_X);
- $ok &&= $X->{resolution} = Xconfig::resolution_and_depth::configure($in, $raw_X, $X->{card}, $X->{monitors}, $auto);
- $ok &&= Xconfig::test::test($in, $raw_X, $X->{card}, '', 'skip_badcard') if !$auto;
-
- if (!$ok) {
- return if $auto;
- ($ok) = configure_chooser_raw($in, $raw_X, $do_pkgs, $options, $X, 1);
- }
- $X->{various} ||= Xconfig::various::various($in, $X->{card}, $options, $auto);
-
- may_write($in, $raw_X, $X, $ok);
-}
-
-sub configure_chooser_raw {
- my ($in, $raw_X, $do_pkgs, $options, $X, $b_modified) = @_;
-
- my %texts;
-
- my $update_texts = sub {
- $texts{card} = $X->{card} && $X->{card}{BoardName} || N("Custom");
- $texts{monitors} = $X->{monitors} && $X->{monitors}[0]{ModelName} || N("Custom");
- $texts{resolution} = Xconfig::resolution_and_depth::to_string($X->{resolution});
-
- $texts{$_} =~ s/(.{20}).*/$1.../ foreach keys %texts; #- ensure not too long
- };
- $update_texts->();
-
- my $may_set = sub {
- my ($field, $val) = @_;
- if ($val) {
- $X->{$field} = $val;
- $X->{"modified_$field"} = 1;
- $b_modified = 1;
- $update_texts->();
-
- if (member($field, 'card', 'monitors')) {
- Xconfig::screen::configure($raw_X);
- $raw_X->set_resolution($X->{resolution}) if $X->{resolution};
- }
- }
- };
-
- my $ok;
- $in->ask_from_({ interactive_help_id => 'configureX_chooser',
- if_($::isStandalone, ok => N("Quit")) },
- [
- { label => N("Graphic Card"), val => \$texts{card}, clicked => sub {
- $may_set->('card', Xconfig::card::configure($in, $raw_X, $do_pkgs, 0, $options));
- } },
- { label => N("Monitor"), val => \$texts{monitors}, clicked => sub {
- $may_set->('monitors', Xconfig::monitor::configure($in, $raw_X, int($raw_X->get_devices)));
- } },
- { label => N("Resolution"), val => \$texts{resolution}, disabled => sub { !$X->{card} || !$X->{monitors} },
- clicked => sub {
- $may_set->('resolution', Xconfig::resolution_and_depth::configure($in, $raw_X, $X->{card}, $X->{monitors}));
- } },
- if_(Xconfig::card::check_bad_card($X->{card}) || $::isStandalone,
- { val => N("Test"), disabled => sub { !$X->{card} || !$X->{monitors} },
- clicked => sub {
- $ok = Xconfig::test::test($in, $raw_X, $X->{card}, 'auto', 0);
- } },
- ),
- { val => N("Options"), clicked => sub {
- Xconfig::various::various($in, $X->{card}, $options);
- $X->{various} = 'done';
- } },
- ]);
- $ok, $b_modified;
-}
-
-sub configure_chooser {
- my ($in, $raw_X, $do_pkgs, $options) = @_;
-
- my $X = {
- card => scalar eval { Xconfig::card::from_raw_X($raw_X) },
- monitors => [ $raw_X->get_monitors ],
- resolution => scalar eval { $raw_X->get_resolution },
- };
- my $before = $raw_X->prepare_write;
- my ($ok) = configure_chooser_raw($in, $raw_X, $do_pkgs, $options, $X);
-
- if ($raw_X->prepare_write ne $before) {
- may_write($in, $raw_X, $X, $ok);
- } else {
- '';
- }
-}
-
-sub configure_everything_or_configure_chooser {
- my ($in, $options, $auto, $o_keyboard, $o_mouse) = @_;
-
- my $raw_X = eval { Xconfig::xfree->read };
- my $err = $@ && formatError($@);
- $err ||= check_valid($raw_X) if $raw_X && @$raw_X; #- that's ok if config is empty
- if ($err) {
- log::l("ERROR: bad X config file (error: $err)");
- $in->ask_okcancel('',
- N("Your Xorg configuration file is broken, we will ignore it.")) or return;
- $raw_X = [];
- }
-
- my $rc = 'ok';
- if (is_empty_array_ref($raw_X)) {
- $raw_X = Xconfig::default::configure($in->do_pkgs, $o_keyboard, $o_mouse);
- $rc = Xconfig::main::configure_everything($in, $raw_X, $in->do_pkgs, $auto, $options);
- } elsif (!$auto) {
- $rc = Xconfig::main::configure_chooser($in, $raw_X, $in->do_pkgs, $options);
- }
- $rc && $raw_X, $rc;
-}
-
-
-sub may_write {
- my ($in, $raw_X, $X, $ok) = @_;
-
- $ok ||= $in->ask_yesorno('', N("Keep the changes?
-The current configuration is:
-
-%s", Xconfig::various::info($raw_X, $X->{card})), 1);
-
- $ok && &write($raw_X, $X);
-}
-
-sub write {
- my ($raw_X, $X) = @_;
- export_to_install_X($X) if $::isInstall;
- $raw_X->write;
- Xconfig::various::check_XF86Config_symlink();
- symlinkf "../../usr/X11R6/bin/Xorg", "$::prefix/etc/X11/X";
- if ($X->{resolution}{bios}) {
- Xconfig::various::setupFB($X->{resolution}{bios});
- 'need_reboot';
- } else {
- 'need_restart';
- }
-}
-
-
-sub export_to_install_X {
- my ($X) = @_;
-
- $::o->{X}{resolution_wanted} = $X->{resolution}{X};
- $::o->{X}{default_depth} = $X->{resolution}{Depth};
- $::o->{X}{bios_vga_mode} = $X->{resolution}{bios};
- $::o->{X}{monitors} = $X->{monitors} if $X->{monitors}[0]{manually_chosen} && $X->{monitors}[0]{vendor} ne "Plug'n Play";
- $::o->{X}{card} = $X->{card} if $X->{card}{manually_chosen};
- $::o->{X}{Xinerama} = 1 if $X->{card}{Xinerama};
-}
-
-sub check_valid {
- my ($raw_X) = @_;
-
- my %sections = map {
- my @l = $raw_X->get_Sections($_) or return "missing section $_";
- $_ => \@l;
- } qw(Files InputDevice Monitor Device Screen ServerLayout);
-
- $sections{Files}[0]{FontPath} or return "missing FontPath";
-
- '';
-}
-
-#- most usefull XFree86-4.0.1 server options. Default values is the first ones.
-our @options_serverflags = (
- 'DontZap' => [ "Off", "On" ],
- 'DontZoom' => [ "Off", "On" ],
- 'DisableVidModeExtension' => [ "Off", "On" ],
- 'AllowNonLocalXvidtune' => [ "Off", "On" ],
- 'DisableModInDev' => [ "Off", "On" ],
- 'AllowNonLocalModInDev' => [ "Off", "On" ],
- 'AllowMouseOpenFail' => [ "False", "True" ],
- 'VTSysReq' => [ "Off", "On" ],
- 'BlankTime' => [ "10", "5", "3", "15", "30" ],
- 'StandByTime' => [ "20", "10", "6", "30", "60" ],
- 'SuspendTime' => [ "30", "15", "9", "45", "90" ],
- 'OffTime' => [ "40", "20", "12", "60", "120" ],
- 'Pixmap' => [ "32", "24" ],
- 'PC98' => [ "auto-detected", "False", "True" ],
- 'NoPM' => [ "False", "True" ],
-);
-
-1;
diff --git a/perl-install/Xconfig/monitor.pm b/perl-install/Xconfig/monitor.pm
deleted file mode 100644
index 251f384c8..000000000
--- a/perl-install/Xconfig/monitor.pm
+++ /dev/null
@@ -1,277 +0,0 @@
-package Xconfig::monitor; #- $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::xfree;
-use detect_devices;
-use common;
-use any;
-use log;
-
-
-sub good_default_monitor() {
- is_xbox() ? 'Generic|640x480 @ 60 Hz' :
- arch() =~ /ppc/ ?
- (detect_devices::get_mac_model() =~ /^iBook/ ? 'Apple|iBook 800x600' : 'Apple|iMac/PowerBook 1024x768') :
- (detect_devices::isLaptop() ? 'Generic|Flat Panel 1024x768' : 'Generic|1024x768 @ 70 Hz');
-}
-
-my @VertRefresh_ranges = ("50-70", "50-90", "50-100", "40-150");
-
-my @HorizSync_ranges = (
- "31.5",
- "31.5-35.1",
- "31.5-37.9",
- "31.5-48.5",
- "31.5-57.0",
- "31.5-64.3",
- "31.5-79.0",
- "31.5-82.0",
- "31.5-88.0",
- "31.5-94.0",
-);
-
-sub configure {
- my ($in, $raw_X, $nb_monitors, $o_probed_info, $b_auto) = @_;
-
- my $monitors = [ $raw_X->get_or_new_monitors($nb_monitors) ];
- if ($o_probed_info) {
- put_in_hash($monitors->[0], $o_probed_info);
- }
- my $head_nb = 1;
- foreach my $monitor (@$monitors) {
- choose($in, $monitor, @$monitors > 1 ? $head_nb++ : 0, $raw_X->get_Driver, $b_auto) or return;
- }
- $raw_X->set_monitors(@$monitors);
- $monitors;
-}
-
-sub configure_auto_install {
- my ($raw_X, $old_X) = @_;
-
- if ($old_X->{monitor}) {
- #- keep compatibility
- $old_X->{monitor}{VertRefresh} = $old_X->{monitor}{vsyncrange};
- $old_X->{monitor}{HorizSync} = $old_X->{monitor}{hsyncrange};
-
- #- new name
- $old_X->{monitors} = [ delete $old_X->{monitor} ];
- }
-
- my $monitors = [ $raw_X->get_or_new_monitors($old_X->{monitors} ? int @{$old_X->{monitors}} : 1) ];
- mapn {
- my ($monitor, $auto_install_monitor) = @_;
- put_in_hash($monitor, $auto_install_monitor);
- configure_automatic($monitor);
- } $monitors, $old_X->{monitors} if $old_X->{monitors};
-
- if (!is_valid($monitors->[0])) {
- put_in_hash($monitors->[0], probe($old_X->{card}{Driver}));
- }
-
- foreach my $monitor (@$monitors) {
- if (!is_valid($monitor)) {
- good_default_monitor() =~ /(.*)\|(.*)/ or internal_error("bad good_default_monitor");
- put_in_hash($monitor, { VendorName => $1, ModelName => $2 });
- configure_automatic($monitor) or internal_error("good_default_monitor (" . good_default_monitor() . ") is unknown in MonitorsDB");
- }
- }
- $raw_X->set_monitors(@$monitors);
- $monitors;
-}
-
-sub choose {
- my ($in, $monitor, $head_nb, $card_Driver, $b_auto) = @_;
-
- my $ok = is_valid($monitor);
- if ($b_auto) {
- log::l("Xconfig::monitor: auto failed") if !$ok;
- return $ok;
- }
-
- my %h_monitors = map { ("$_->{VendorName}|$_->{ModelName}" => $_) } monitors_db();
-
- ask_monitor:
- my $merged_name = do {
- if ($monitor->{VendorName} eq "Plug'n Play") {
- $monitor->{VendorName};
- } else {
- my $merged_name = $monitor->{VendorName} . '|' . $monitor->{ModelName};
-
- if (!exists $h_monitors{$merged_name}) {
- $merged_name = is_valid($monitor) ? 'Custom' : good_default_monitor();
- } else {
- $merged_name;
- }
- }
- };
-
- $in->ask_from_({ title => N("Monitor"),
- messages => $head_nb ? N("Choose a monitor for head #%d", $head_nb) : N("Choose a monitor"),
- interactive_help_id => 'configureX_monitor'
- },
- [ { val => \$merged_name, separator => '|',
- list => ['Custom', "Plug'n Play", sort keys %h_monitors],
- format => sub { $_[0] eq 'Custom' ? N("Custom") :
- $_[0] eq "Plug'n Play" ? N("Plug'n Play") . ($monitor->{VendorName} eq "Plug'n Play" ? " ($monitor->{ModelName})" : '') :
- $_[0] =~ /^Generic\|(.*)/ ? N("Generic") . "|$1" :
- N("Vendor") . "|$_[0]" },
- sort => 0 } ]) or return;
-
- if ($merged_name eq "Plug'n Play") {
- local $::noauto = 0; #- hey, you asked for plug'n play, so i do probe!
- delete @$monitor{'VendorName', 'ModelName', 'EISA_ID'};
- if ($head_nb <= 1) {
- if (my $probed_info = probe($card_Driver)) {
- put_in_hash($monitor, $probed_info);
- } else {
- $in->ask_warn('', N("Plug'n Play probing failed. Please select the correct monitor"));
- goto ask_monitor;
- }
- } else {
- $monitor->{VendorName} = "Plug'n Play";
- }
- } elsif ($merged_name eq 'Custom') {
- $in->ask_from('',
-N("The two critical parameters are the vertical refresh rate, which is the rate
-at which the whole screen is refreshed, and most importantly the horizontal
-sync rate, which is the rate at which scanlines are displayed.
-
-It is VERY IMPORTANT that you do not specify a monitor type with a sync range
-that is beyond the capabilities of your monitor: you may damage your monitor.
- If in doubt, choose a conservative setting."),
- [ { val => \$monitor->{HorizSync}, list => \@HorizSync_ranges, label => N("Horizontal refresh rate"), not_edit => 0 },
- { val => \$monitor->{VertRefresh}, list => \@VertRefresh_ranges, label => N("Vertical refresh rate"), not_edit => 0 } ]) or goto &choose;
- delete @$monitor{'VendorName', 'ModelName', 'EISA_ID'};
- } else {
- put_in_hash($monitor, $h_monitors{$merged_name});
- }
- $monitor->{manually_chosen} = 1;
- 1;
-}
-
-sub configure_automatic {
- my ($monitor) = @_;
-
- if ($monitor->{EISA_ID}) {
- log::l("EISA_ID: $monitor->{EISA_ID}");
- if (my $mon = find { lc($_->{EISA_ID}) eq $monitor->{EISA_ID} } monitors_db()) {
- add2hash($monitor, $mon);
- log::l("EISA_ID corresponds to: $monitor->{ModelName}");
- } elsif (!is_valid($monitor)) {
- log::l("unknown EISA_ID and partial DDC probe, so unknown monitor");
- delete @$monitor{'VendorName', 'ModelName', 'EISA_ID'};
- }
- } elsif ($monitor->{VendorName}) {
- if (my $mon = find { $_->{VendorName} eq $monitor->{VendorName} && $_->{ModelName} eq $monitor->{ModelName} } monitors_db()) {
- put_in_hash($monitor, $mon);
- }
- }
- is_valid($monitor);
-}
-
-sub is_valid {
- my ($monitor) = @_;
- $monitor->{HorizSync} && $monitor->{VertRefresh};
-}
-
-sub probe {
- my ($o_card_Driver) = @_;
- probe_DDC() || probe_DMI() || probe_using_X($o_card_Driver);
-}
-
-sub probe_DDC() {
- my ($edid, $vbe) = any::monitor_full_edid() or return;
- my $monitor = eval($edid);
-
- if ($vbe =~ /Memory: (\d+)k/) {
- $monitor->{VideoRam_probed} = $1;
- }
- $monitor->{ModeLine} = Xconfig::xfree::default_ModeLine();
- my $detailed_timings = $monitor->{detailed_timings} || [];
- foreach (grep { !$_->{bad_ratio} } @$detailed_timings) {
- my $ratio = $_->{horizontal_active} / $_->{vertical_active};
-
- if (abs($ratio - 4 / 3) < 0.01) {
- #- we don't want the 4/3 modelines otherwise they conflict with the Xorg builtin vesamodes
- } else {
- unshift @{$monitor->{ModeLine}},
- { val => $_->{ModeLine}, pre_comment => $_->{ModeLine_comment} . "\n" };
- }
-
- if (@$detailed_timings == 1) {
- #- should we care about {has_preferred_timing} ?
- $monitor->{preferred_resolution} = { X => $_->{horizontal_active}, Y => $_->{vertical_active} };
- }
- }
-
- if ($monitor->{EISA_ID}) {
- $monitor->{VendorName} = "Plug'n Play";
- $monitor->{ModelName} = $monitor->{monitor_name};
- }
- configure_automatic($monitor) or return;
- $monitor;
-}
-
-sub probe_using_X {
- my ($card_Driver) = @_;
-
- detect_devices::isLaptop() or return;
-
- $card_Driver ||= do {
- require Xconfig::card;
- my @cards = Xconfig::card::probe();
- $cards[0]{Driver};
- } or return;
-
- my $resolution = run_program::rooted_get_stdout($::prefix, 'monitor-probe-using-X', $card_Driver) or return;
- generic_flat_panel(chomp_($resolution));
-}
-
-sub probe_DMI() {
- my ($res) = my @res = uniq(map { if_($_->{driver} =~ /^Resolution:(.*)/, $1) } detect_devices::probeall()) or return;
- if (@res > 1) {
- log::l("oops, more than one resolution from DMI and pci probe: ", join(' ', @res));
- }
- generic_flat_panel($res);
-}
-
-sub generic_flat_panel {
- my ($resolution) = @_;
- my ($X, $Y) = $resolution =~ /(\d+)x(\d+)/ or log::l("bad resolution $resolution"), return;
- {
- VendorName => 'Generic',
- ModelName => "Flat Panel $resolution",
- HorizSync => '31.5-100', VertRefresh => '60',
- preferred_resolution => { X => $X, Y => $Y },
- };
-}
-
-my $monitors_db;
-sub monitors_db() {
- $monitors_db ||= readMonitorsDB("$ENV{SHARE_PATH}/ldetect-lst/MonitorsDB");
- @$monitors_db;
-}
-sub readMonitorsDB {
- my ($file) = @_;
-
- my @monitors_db;
- my $F = openFileMaybeCompressed($file);
- local $_;
- my $lineno = 0; while (<$F>) {
- $lineno++;
- s/\s+$//;
- /^#/ and next;
- /^$/ and next;
-
- my @fields = qw(VendorName ModelName EISA_ID HorizSync VertRefresh dpms);
- my %l; @l{@fields} = split /\s*;\s*/;
- push @monitors_db, \%l;
- }
- \@monitors_db;
-}
-
-
-1;
-
diff --git a/perl-install/Xconfig/parse.pm b/perl-install/Xconfig/parse.pm
deleted file mode 100644
index 609534b54..000000000
--- a/perl-install/Xconfig/parse.pm
+++ /dev/null
@@ -1,205 +0,0 @@
-package Xconfig::parse; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-
-sub read_XF86Config {
- my ($file) = @_;
- my $raw_X = raw_from_file($file);
- from_raw(@$raw_X);
- $raw_X;
-}
-
-sub prepare_write_XF86Config {
- my ($raw_X) = @_;
- map { raw_to_string(before_to_string({ %$_ }, 0)) } @$raw_X;
-}
-
-sub write_XF86Config {
- my ($raw_X, $file) = @_;
- my @blocks = prepare_write_XF86Config($raw_X);
- @blocks ? output($file, @blocks) : unlink $file;
-}
-
-sub read_XF86Config_from_string {
- my ($s) = @_;
- my $raw_X = raw_from_file('-', [ split "\n", $s ]);
- from_raw(@$raw_X);
- $raw_X;
-}
-
-#-###############################################################################
-#- raw reading/saving
-#-###############################################################################
-sub raw_from_file { #- internal
- my ($file, $o_lines) = @_;
- my $raw_X = [];
-
- my $lines = $o_lines || [ cat_($file) ];
- my $line;
-
- my ($comment, $obj, @objs);
-
- my $attach_comment = sub {
- $obj || @objs or warn "$file:$line: can not attach comment\n";
- if ($comment) {
- $comment =~ s/\n+$/\n/;
- ($obj || $objs[0])->{$_[0] . '_comment'} = $comment;
- $comment = '';
- }
- };
-
- foreach (@$lines) {
- $line++;
- s/^\s*//; s/\s*$//;
-
- if (/^$/) {
- $comment .= "\n" if $comment;
- next;
- } elsif (@objs ? m/^#\W/ || /^#$/ : /^#/) {
- s/^#\s+/# /;
- $comment .= "$_\n";
- next;
- }
-
- if (/^Section\s+"(.*)"/i) {
- die "$file:$line: missing EndSection\n" if @objs;
- my $e = { name => $1, l => [], kind => 'Section' };
- push @$raw_X, $e;
- unshift @objs, $e; $obj = '';
- $attach_comment->('pre');
- } elsif (/^Subsection\s+"(.*)"/i) {
- die "$file:$line: missing EndSubsection\n" if @objs && $objs[0]{kind} eq 'Subsection';
- die "$file:$line: not in Section\n" if !@objs || $objs[0]{kind} ne 'Section';
- my $e = { name => $1, l => [], kind => 'Subsection' };
- push @{$objs[0]{l}}, $e;
- unshift @objs, $e; $obj = '';
- $attach_comment->('pre');
- } elsif (/^EndSection/i) {
- die "$file:$line: not in Section\n" if !@objs || $objs[0]{kind} ne 'Section';
- $attach_comment->('post');
- shift @objs; $obj = '';
- } elsif (/^EndSubsection/i) {
- die "$file:$line: not in Subsection\n" if !@objs || $objs[0]{kind} ne 'Subsection';
- $attach_comment->('post');
- shift @objs; $obj = '';
- } else {
- die "$file:$line: not in Section\n" if !@objs;
-
- my $commented = s/^#//;
-
- my $comment_on_line;
- s/(\s*#.*)/$comment_on_line = $1; ''/e;
-
- if (/^$/) {
- die "$file:$line: weird";
- }
-
- (my $name, my $Option, $_) =
- /^Option\s*"(.*?)"(.*)/ ? ($1, 1, $2) : /^(\S+)(.*)/ ? ($1, 0, $2) : internal_error($_);
- my ($val) = /(\S.*)/;
-
- my %e = (Option => $Option, commented => $commented, comment_on_line => $comment_on_line, pre_comment => $comment);
- $comment = '';
- $obj = { name => $name, val => $val };
- $e{$_} and $obj->{$_} = $e{$_} foreach keys %e;
-
- push @{$objs[0]{l}}, $obj;
- }
- }
- $raw_X;
-}
-
-sub raw_to_string {
- my ($e, $b_want_spacing) = @_;
- my $s = do {
- if ($e->{l}) {
- my $inside = join('', map_index { raw_to_string($_, $::i) } @{$e->{l}});
- $inside .= $e->{post_comment} || '';
- $inside =~ s/^/ /mg;
- qq(\n$e->{kind} "$e->{name}"\n) . $inside . "End$e->{kind}";
- } else {
- ($e->{commented} ? '#' : '') .
- ($e->{Option} ? qq(Option "$e->{name}") : $e->{name}) .
- (defined $e->{val} ? ($e->{Option} && $e->{val} !~ /^"/ ? qq( "$e->{val}") : qq( $e->{val})) : '');
- }
- };
- ($e->{pre_comment} ? ($b_want_spacing ? "\n" : '') . $e->{pre_comment} : '') . $s . ($e->{comment_on_line} || '') . "\n" . (!$e->{l} && $e->{post_comment} || '');
-}
-
-#-###############################################################################
-#- refine the data structure for easier use
-#-###############################################################################
-my %kind_names = (
- Pointer => [ qw(Protocol Device Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ],
- Mouse => [ qw(DeviceName Protocol Device AlwaysCore Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ], # Subsection in XInput
- Keyboard => [ qw(Protocol Driver XkbModel XkbLayout XkbDisable) ],
- Monitor => [ qw(Identifier VendorName ModelName HorizSync VertRefresh) ],
- Device => [ qw(Identifier VendorName BoardName Chipset Driver VideoRam Screen BusID DPMS power_saver) ],
- Display => [ qw(Depth Modes Virtual) ], # Subsection in Device
- Screen => [ qw(Identifier Driver Device Monitor DefaultColorDepth) ],
- InputDevice => [ qw(Identifier Driver Protocol Device Type Mode XkbModel XkbLayout XkbDisable Emulate3Buttons Emulate3Timeout EmulateWheel EmulateWheelButton) ],
- WacomCursor => [ qw(Port) ], #-\
- WacomStylus => [ qw(Port) ], #--> Port must be first
- WacomEraser => [ qw(Port) ], #-/
- ServerLayout => [ qw(Identifier) ],
-);
-my @want_string = qw(Identifier DeviceName VendorName ModelName BoardName Driver Device Chipset Monitor Protocol XkbModel XkbLayout XkbOptions XkbCompat Load BusID);
-
-%kind_names = map_each { lc $::a => [ map { lc } @$::b ] } %kind_names;
-@want_string = map { lc } @want_string;
-
-sub from_raw {
- sub from_raw__rec {
- my ($current, $e) = @_;
- if ($e->{l}) {
- from_raw($e);
- push @{$current->{l}{$e->{name}}}, $e;
- } else {
- if (member(lc $e->{name}, @want_string)) {
- $e->{val} =~ s/^"(.*)"$/$1/ or warn "$e->{name} $e->{val} has no quote\n";
- }
-
- if (member(lc $e->{name}, @{$kind_names{lc $current->{name}} || []})) {
- if ($current->{l}{$e->{name}} && !$current->{l}{$e->{name}}{commented}) {
- warn "skipping conflicting line for $e->{name} in $current->{name}\n" if !$e->{commented};
- } else {
- $current->{l}{$e->{name}} = $e;
- }
- } else {
- push @{$current->{l}{$e->{name}}}, $e;
- }
- }
- delete $e->{name};
- }
-
- foreach my $e (@_) {
- ($e->{l}, my $l) = ({}, $e->{l});
- from_raw__rec($e, $_) foreach @$l;
-
- delete $e->{kind};
- }
-}
-
-sub before_to_string {
- my ($e, $depth) = @_;
-
- if ($e->{l}) {
- $e->{kind} = $depth ? 'Subsection' : 'Section';
-
- my %rated = map_index { $_ => $::i + 1 } @{$kind_names{lc $e->{name}} || []};
- my @sorted = sort { ($rated{lc $a} || 99) <=> ($rated{lc $b} || 99) } keys %{$e->{l}};
- $e->{l} = [ map {
- my $name = $_;
- map {
- before_to_string({ name => $name, %$_ }, $depth+1);
- } deref_array($e->{l}{$name});
- } @sorted ];
- } elsif (member(lc $e->{name}, @want_string)) {
- $e->{val} = qq("$e->{val}");
- }
- $e;
-}
diff --git a/perl-install/Xconfig/proprietary.pm b/perl-install/Xconfig/proprietary.pm
deleted file mode 100644
index ed196deb7..000000000
--- a/perl-install/Xconfig/proprietary.pm
+++ /dev/null
@@ -1,35 +0,0 @@
-package Xconfig::proprietary; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-
-sub install_matrox_hal {
- my ($prefix) = @_;
- my $tmpdir = "$prefix/root/tmp";
-
- my $tar = "mgadrivers-2.0.tgz";
- my $dir_in_tar = "mgadrivers";
- my $dest_dir = "$prefix/usr/X11R6/lib/modules/drivers";
-
- #- already installed
- return if -e "$dest_dir/mga_hal_drv.o" || $::testing;
-
- system("wget -O $tmpdir/$tar ftp://ftp.matrox.com/pub/mga/archive/linux/2002/$tar") if !-e "$tmpdir/$tar";
- system("tar xzC $tmpdir -f $tmpdir/$tar");
-
- my $src_dir = "$tmpdir/$dir_in_tar/xfree86/4.2.1/drivers";
- foreach (all($src_dir)) {
- my $src = "$src_dir/$_";
- my $dest = "$dest_dir/$_";
- rename $dest, "$dest.non_hal";
- cp_af($src, $dest_dir);
- }
- rm_rf("$tmpdir/$tar");
- rm_rf("$tmpdir/$dir_in_tar");
-}
-
-1;
-
diff --git a/perl-install/Xconfig/resolution_and_depth.pm b/perl-install/Xconfig/resolution_and_depth.pm
deleted file mode 100644
index 7179186ec..000000000
--- a/perl-install/Xconfig/resolution_and_depth.pm
+++ /dev/null
@@ -1,385 +0,0 @@
-package Xconfig::resolution_and_depth; # $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::card;
-use Xconfig::monitor;
-use common;
-
-
-our %depth2text = (
- 8 => N_("256 colors (8 bits)"),
- 15 => N_("32 thousand colors (15 bits)"),
- 16 => N_("65 thousand colors (16 bits)"),
- 24 => N_("16 million colors (24 bits)"),
-);
-our @depths_available = ikeys(%depth2text);
-
-my @bios_vga_modes = (
- { bios => 769, X => 640, Y => 480, Depth => 8 },
- { bios => 771, X => 800, Y => 600, Depth => 8 },
- { bios => 773, X => 1024, Y => 768, Depth => 8 },
- { bios => 775, X => 1280, Y => 1024, Depth => 8 },
- { bios => 777, X => 1600, Y => 1200, Depth => 8 },
- { bios => 784, X => 640, Y => 480, Depth => 15 },
- { bios => 787, X => 800, Y => 600, Depth => 15 },
- { bios => 790, X => 1024, Y => 768, Depth => 15 },
- { bios => 793, X => 1280, Y => 1024, Depth => 15 },
- { bios => 796, X => 1600, Y => 1200, Depth => 15 },
- { bios => 785, X => 640, Y => 480, Depth => 16 },
- { bios => 788, X => 800, Y => 600, Depth => 16 },
- { bios => 791, X => 1024, Y => 768, Depth => 16 },
- { bios => 794, X => 1280, Y => 1024, Depth => 16 },
- { bios => 797, X => 1600, Y => 1200, Depth => 16 },
-);
-
-sub from_bios {
- my ($bios) = @_;
- find { $_->{bios} == $bios } @bios_vga_modes;
-}
-
-sub bios_vga_modes() { @bios_vga_modes }
-
-sub size2default_resolution {
- my ($size) = @_; #- size in inch
-
- if (arch() =~ /ppc/) {
- require detect_devices;
- return "1024x768" if detect_devices::get_mac_model() =~ /^PowerBook|^iMac/;
- } elsif (is_xbox()) {
- return "640x480";
- }
-
- my %monitorSize2resolution = (
- 13 => "640x480",
- 14 => "800x600",
- 15 => "800x600",
- 16 => "1024x768",
- 17 => "1024x768",
- 18 => "1024x768",
- 19 => "1280x1024",
- 20 => "1280x1024",
- 21 => "1600x1200",
- 22 => "1600x1200",
- );
- $monitorSize2resolution{round($size)} || ($size < 13 ? "640x480" : "1600x1200");
-}
-
-sub to_string {
- my ($resolution) = @_;
- $resolution or return '';
-
- $resolution->{X} ? sprintf("%sx%s %dbpp", @$resolution{'X', 'Y', 'Depth'}) : 'frame-buffer';
-}
-
-sub allowed {
- my ($card) = @_;
-
- my ($prefered_depth, @resolution_and_depth);
-
- if ($card->{Driver} eq 'fbdev') {
- @resolution_and_depth = grep { $_->{Depth} == 16 } @bios_vga_modes;
- } else {
- my @depths;
- if ($card->{Driver} eq 'fglrx') {
- @depths = 24;
- } elsif ($card->{BoardName} eq 'RIVA128') {
- @depths = qw(8 15 24);
- } elsif ($card->{use_DRI_GLX}) {
- $prefered_depth = 16;
- @depths = (16, 24);
- } else {
- @depths = our @depths_available;
- }
- my @resolutions = @Xconfig::xfree::resolutions;
-
- push @resolution_and_depth,
- map {
- my $Depth = $_;
- map { m/(\d+)x(\d+)/ && { X => $1, Y => $2, Depth => $Depth } } @resolutions;
- } @depths;
- }
- $prefered_depth, @resolution_and_depth;
-}
-
-# ($card->{VideoRam} || ($card->{server} eq 'FBDev' ? 2048 : 32768))
-sub filter_using_VideoRam {
- my ($VideoRam, @resolutions) = @_;
- my $mem = 1024 * $VideoRam;
- grep { $_->{X} * $_->{Y} * $_->{Depth}/8 <= $mem } @resolutions;
-
-}
-sub filter_using_HorizSync_VertRefresh {
- my ($HorizSync, $VertRefresh, @resolutions) = @_;
- my $max_hsync = 1000 * max(split(/[,-]/, $HorizSync));
- my ($min_vsync, $max_vsync) = (min(split(/[,-]/, $VertRefresh)), max(split(/[,-]/, $VertRefresh)));
-
- #- enforce at least 60Hz, if max_vsync > 100 (ie don't do it on LCDs which are ok with low vsync)
- $min_vsync = max(60, $min_vsync) if $max_vsync > 100;
-
- #- computing with {Y} which is active sync instead of total sync, but that's ok
- grep { $max_hsync / $_->{Y} > $min_vsync } @resolutions;
-}
-
-sub choose {
- my ($in, $default_resolution, @resolutions) = @_;
-
- my $resolution = $default_resolution || {};
- $in->ask_from(N("Resolutions"), "",
- [ {
- val => \$resolution, type => 'list', sort => 0,
- list => [ sort { $a->{X} <=> $b->{X} } @resolutions ],
- format => \&to_string,
- } ]) or return;
- $resolution;
-}
-
-
-sub choices {
- my ($_raw_X, $resolution_wanted, $card, $monitors) = @_;
- $resolution_wanted ||= {};
-
- my ($prefered_depth, @resolutions) = allowed($card);
-
- @resolutions = filter_using_HorizSync_VertRefresh($monitors->[0]{HorizSync}, $monitors->[0]{VertRefresh}, @resolutions) if $monitors->[0]{HorizSync};
- @resolutions = filter_using_VideoRam($card->{VideoRam}, @resolutions) if $card->{VideoRam};
-
- #- sort it, so we can take the first one when we want the "best"
- @resolutions = sort { $b->{X} <=> $a->{X} || $b->{Y} <=> $a->{Y} || $b->{Depth} <=> $a->{Depth} } @resolutions;
-
- if ($resolution_wanted->{X} && !$resolution_wanted->{Y}) {
- #- assuming ratio 4/3
- $resolution_wanted->{Y} = round($resolution_wanted->{X} * 3 / 4);
- } elsif (!$resolution_wanted->{X}) {
- if ($monitors->[0]{preferred_resolution}) {
- put_in_hash($resolution_wanted, $monitors->[0]{preferred_resolution});
- } elsif ($monitors->[0]{ModelName} =~ /^Flat Panel (\d+)x(\d+)$/) {
- put_in_hash($resolution_wanted, { X => $1, Y => $2 });
- } else {
- my ($X, $Y) = split('x', size2default_resolution($monitors->[0]{diagonal_size} * 1.08 || 14));
- put_in_hash($resolution_wanted, { X => $X, Y => $Y });
- }
- }
- my @matching = grep { $_->{X} eq $resolution_wanted->{X} && $_->{Y} eq $resolution_wanted->{Y} } @resolutions;
- if (!@matching) {
- #- hard choice :-(
- #- first trying the greater resolution with same ratio
- my $ratio = $resolution_wanted->{X} / $resolution_wanted->{Y};
- @matching = grep { abs($ratio - $_->{X} / $_->{Y}) < 0.01 } @resolutions;
- }
- if (!@matching) {
- #- really hard choice :'-(
- #- take the first available resolution <= the wanted resolution
- @matching = grep { $_->{X} < $resolution_wanted->{X} } @resolutions;
- }
- if (!@matching) {
- @matching = @resolutions;
- }
-
- my $default_resolution;
- foreach my $Depth ($resolution_wanted->{Depth}, $prefered_depth) {
- $Depth and $default_resolution ||= find { $_->{Depth} eq $Depth } @matching;
- }
- $default_resolution ||= $matching[0];
-
- $default_resolution, @resolutions;
-}
-
-sub configure {
- my ($in, $raw_X, $card, $monitors, $b_auto) = @_;
-
- my ($default_resolution, @resolutions) = choices($raw_X, $raw_X->get_resolution, $card, $monitors);
-
- if ($b_auto) {
- #- use $default_resolution
- if ($card->{Driver} eq 'fglrx') {
- $default_resolution = first(find { $default_resolution->{Y} eq $_->{Y} && $_->{Depth} == 24 }
- $default_resolution, @resolutions);
- $default_resolution ||= first(find { $_->{Depth} == 24 } $default_resolution, @resolutions);
- }
- } elsif ($in->isa('interactive::gtk')) {
- $default_resolution = choose_gtk($in, $card, $default_resolution, @resolutions) or return;
- } else {
- $default_resolution = choose($in, $default_resolution, @resolutions) or return;
- }
- set_resolution($raw_X, $default_resolution);
-
- $default_resolution;
-}
-
-sub configure_auto_install {
- my ($raw_X, $card, $monitors, $old_X) = @_;
-
- my $resolution_wanted = do {
- my ($X, $Y) = split('x', $old_X->{resolution_wanted});
- { X => $X, Y => $Y, Depth => $old_X->{default_depth} };
- };
-
- my ($default_resolution) = choices($raw_X, $resolution_wanted, $card, $monitors);
- $default_resolution or die "you selected an unusable depth";
-
- set_resolution($raw_X, $default_resolution);
-
- $default_resolution;
-}
-
-sub set_resolution {
- my ($raw_X, $resolution) = @_;
- $raw_X->set_resolution($resolution);
- set_default_background($resolution);
-}
-sub set_default_background {
- my ($resolution) = @_;
-
- my $ratio = $resolution->{X} / $resolution->{Y};
- my $dir = "$::prefix/usr/share/mdk/backgrounds";
- my @l =
- sort {
- $a->[1] <=> $b->[1] || $b->[2] <=> $a->[2] || $a->[1] <=> $b->[1];
- } map {
- if (my ($X, $Y) = /^Mandrivalinux-(\d+)x(\d+).png$/) {
- [
- $_,
- int(abs($ratio - $X / $Y) * 100), #- we want the nearest ratio (precision .01)
- $X >= $resolution->{X}, #- then we don't want a resolution smaller
- abs($X - $resolution->{X}), #- the nearest resolution
- ];
- } else { () }
- } all($dir);
-
- symlinkf $l[0][0], "$dir/default.png";
-}
-
-sub resolution2ratio {
- my ($resolution, $b_non_strict) = @_;
- my $res = $resolution->{X} . 'x' . $resolution->{Y};
- $res eq '1280x1024' && $b_non_strict ? '4/3' : $Xconfig::xfree::resolution2ratio{$res};
-}
-
-sub choose_gtk {
- my ($in, $card, $default_resolution, @resolutions) = @_;
-
- $_->{ratio} ||= resolution2ratio($_) foreach @resolutions;
-
- my $chosen_Depth = $default_resolution->{Depth};
- my $chosen_res = { X => $default_resolution->{X} || 1024, Y => $default_resolution->{Y} };
- my $chosen_ratio = resolution2ratio($chosen_res, 'non-strict') || '4/3';
-
- my $filter_on_ratio = sub {
- grep {
- !$chosen_ratio
- || $_->{ratio} eq $chosen_ratio
- || $chosen_ratio eq '4/3' && "$_->{X}x$_->{Y}" eq '1280x1024';
- } @_;
- };
- my $filter_on_Depth = sub {
- grep { $_->{Depth} == $chosen_Depth } @_;
- };
- my $filter_on_res = sub {
- grep { $_->{X} == $chosen_res->{X} && $_->{Y} == $chosen_res->{Y} } @_;
- };
- #- $chosen_res must be one of @resolutions, so that it has a correct {ratio} field
- $chosen_res = first($filter_on_res->(@resolutions)) || $resolutions[0];
-
- require ugtk2;
- mygtk2->import;
- ugtk2->import(qw(:create :helpers :wrappers));
- my $W = ugtk2->new(N("Resolution"), modal => 1);
-
- my %monitor_images_x_res = do {
- my @l = qw(640 800 1024 1152 1280 1400 1600 1920 2048);
- my %h = map { $_ => ugtk2::_find_imgfile("monitor-$_.png") } @l;
-
- #- for the other, use the biggest smaller
- foreach my $x_res (uniq map { $_->{X} } @resolutions) {
- my $x_res_ = max(grep { $_ <= $x_res } @l);
- $h{$x_res} ||= $h{$x_res_} || $h{640};
- }
- %h;
- };
-
- my $res2text = sub { "$_[0]{X}x$_[0]{Y}" . ($chosen_ratio || $_[0]{ratio} =~ /other/ ? '' : " ($_[0]{ratio})") };
- my @matching_ratio;
- my $proposed_resolutions = [];
- my $set_proposed_resolutions = sub {
- my ($suggested_res) = @_;
- @matching_ratio = $filter_on_ratio->(@resolutions);
- gtkval_modify(\$proposed_resolutions, [
- (reverse uniq_ { $res2text->($_) } @matching_ratio),
- if_($chosen_ratio, { text => N_("Other") }),
- ]);
- if (!$filter_on_res->(@matching_ratio)) {
- my $res = $suggested_res || find { $_->{X} == $chosen_res->{X} } @matching_ratio;
- gtkval_modify(\$chosen_res, $res || $matching_ratio[0]);
- }
- };
- $set_proposed_resolutions->();
-
- my $depth_combo = gtknew('ComboBox', width => 220,
- text_ref => \$chosen_Depth,
- format => sub { translate($depth2text{$_[0]}) },
- list => [ uniq(reverse map { $_->{Depth} } @resolutions) ],
- changed => sub {
- my @matching_Depth = $filter_on_Depth->(@matching_ratio);
- if (!$filter_on_res->(@matching_Depth)) {
- gtkval_modify(\$chosen_res, $matching_Depth[0]);
- }
- });
- my $previous_res = $chosen_res;
- my $res_combo = gtknew('ComboBox',
- text_ref => \$chosen_res,
- format => sub { $_[0]{text} ? translate($_[0]{text}) : &$res2text },
- list_ref => \$proposed_resolutions,
- changed => sub {
- if ($chosen_res->{text}) {
- undef $chosen_ratio;
- $set_proposed_resolutions->($previous_res);
- } else {
- my @matching_res = $filter_on_res->(@matching_ratio);
- if (!$filter_on_Depth->(@matching_res)) {
- gtkval_modify(\$chosen_Depth, $matching_res[0]{Depth});
- }
- $previous_res = $chosen_res;
- }
- });
- my $pix_colors = gtknew('Image',
- file_ref => \$chosen_Depth,
- format => sub {
- $_[0] >= 24 ? "colors.png" : $_[0] >= 15 ? "colors16.png" : "colors8.png";
- });
- my $pixmap_mo = gtknew('Image',
- file_ref => \$chosen_res,
- format => sub {
- $monitor_images_x_res{$_[0]{X}} or internal_error("no image for resolution $chosen_res->{X}");
- });
-
- my $help_sub = $in->interactive_help_sub_display_id('configureX_resolution');
- gtkadd($W->{window},
- gtkpack_($W->create_box_with_title(N("Choose the resolution and the color depth"),
- if_($card->{BoardName}, "(" . N("Graphics card: %s", $card->{BoardName}) . ")"),
- ),
- 1, '',
- 0, $pixmap_mo,
- 0, gtknew('HBox', children => [
- 1, '',
- 0, gtknew('Table', col_spacings => 5, row_spacings => 5,
- children => [
- [ $res_combo, gtknew('Label', text => "") ],
- [ $depth_combo, gtknew('Frame', shadow_type => 'etched_out', child => $pix_colors) ],
- ]),
- 1, '',
- ]),
- 1, '',
- 0, gtkadd($W->create_okcancel(N("Ok"), N("Cancel"), '', if_($help_sub, [ N("Help"), $help_sub, 1 ]))),
- ));
- $W->{ok}->grab_focus;
-
- $W->main or return;
-
- find { $_->{X} == $chosen_res->{X} &&
- $_->{Y} == $chosen_res->{Y} &&
- $_->{Depth} == $chosen_Depth } @resolutions;
-}
-
-1;
diff --git a/perl-install/Xconfig/screen.pm b/perl-install/Xconfig/screen.pm
deleted file mode 100644
index e0a3ebd64..000000000
--- a/perl-install/Xconfig/screen.pm
+++ /dev/null
@@ -1,29 +0,0 @@
-package Xconfig::screen; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-
-sub configure {
- my ($raw_X) = @_;
-
- my @devices = $raw_X->get_devices;
- my @monitors = $raw_X->get_monitors;
-
- if (@monitors < @devices) {
- $raw_X->set_monitors(@monitors, ({}) x (@devices - @monitors));
- @monitors = $raw_X->get_monitors;
- }
-
- my @sections = mapn {
- my ($device, $monitor) = @_;
- { Device => $device->{Identifier}, Monitor => $monitor->{Identifier} };
- } \@devices, \@monitors;
-
- $raw_X->set_screens(@sections);
- 1;
-}
-
-1;
diff --git a/perl-install/Xconfig/test.pm b/perl-install/Xconfig/test.pm
deleted file mode 100644
index 524530bef..000000000
--- a/perl-install/Xconfig/test.pm
+++ /dev/null
@@ -1,140 +0,0 @@
-package Xconfig::test; # $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::card;
-use run_program;
-use common;
-use log;
-
-
-my $tmpconfig = "/tmp/Xconfig";
-
-
-sub xtest {
- my ($display) = @_;
- eval {
- require xf86misc::main;
- xf86misc::main::Xtest($display);
- };
-}
-
-sub test {
- my ($in, $raw_X, $card, $auto, $skip_badcard) = @_;
-
- my $bad_card = !Xconfig::card::check_bad_card($card);
- return 1 if $skip_badcard && $bad_card;
-
- if ($bad_card || !$auto) {
- $in->ask_yesorno(N("Test of the configuration"),
- N("Do you want to test the configuration?") . ($bad_card ? "\n" . N("Warning: testing this graphic card may freeze your computer") : ''),
- !$bad_card) or return 1;
- }
-
- unlink "$::prefix/tmp/.X9-lock";
-
- #- create a link from the non-prefixed /tmp/.X11-unix/X9 to the prefixed one
- #- that way, you can talk to :9 without doing a chroot
- #- but take care of non X11 install :-)
- if (-d "/tmp/.X11-unix") {
- symlinkf "$::prefix/tmp/.X11-unix/X9", "/tmp/.X11-unix/X9" if $::prefix;
- } else {
- symlinkf "$::prefix/tmp/.X11-unix", "/tmp/.X11-unix" if $::prefix;
- }
-
- #- ensure xfs is running
- fuzzy_pidofs(qr/\bxfs\b/) or do { run_program::rooted($::prefix, "/etc/rc.d/init.d/xfs", $_) foreach 'stop', 'start' };
- fuzzy_pidofs(qr/\bxfs\b/) or die "xfs is not running";
-
- my $f = $::testing ? $tmpconfig : "/etc/X11/XF86Config.test";
- $raw_X->write("$::prefix/$f");
-
- my $f_err = common::secured_file($::prefix . ($ENV{TMPDIR} || "$ENV{HOME}/tmp") . '/.drakx.Xoutput');
-
- my $pid;
- unless ($pid = fork()) {
- system("xauth add :9 . `mcookie`");
- open STDERR, ">$f_err";
- chroot $::prefix if $::prefix;
- exec 'Xorg', '-xf86config', $f, ":9" or c::_exit(0);
- }
-
- do { sleep 1 } until xtest(":9") || waitpid($pid, c::WNOHANG());
-
- my $_b = before_leaving { unlink $f_err };
-
- my $warn_error = sub {
- my ($error_msg) = @_;
- $in->ask_warn('', [ N("An error occurred:\n%s\nTry to change some parameters", $error_msg) ]);
- };
-
- if (!xtest(":9")) {
- open(my $F, $f_err);
-
- local $_;
- i: while (<$F>) {
- if (/^\(EE\)/ && !/Disabling/ || /^Fatal\b/) {
- my @msg = !/error/ && $_;
- local $_;
- while (<$F>) {
- /reporting a problem/ and last;
- $warn_error->(join('', @msg, $_));
- return 0;
- }
- }
- }
- }
-
- open(my $F, "|perl 2>/dev/null");
- printf $F q(
- use lib qw(%s);
- BEGIN { $::no_ugtk_init = 1 }
- require lang;
- require ugtk2; #- help perl_checker
- ugtk2->import(qw(:wrappers :helpers)); #- help perl_checker
- use interactive::gtk;
- use run_program;
- use common;
-
- $::prefix = "%s";
-
- lang::bindtextdomain();
-
- $ENV{DISPLAY} = ":9";
- Gtk2->init;
-
- gtkset_background(200 * 257, 210 * 257, 210 * 257);
- my $text = Gtk2::Label->new;
- my $time = 12;
- Glib::Timeout->add(1000, sub {
- $text->set(sprintf(translate("%s"), $time));
- $time-- or Gtk2->main_quit;
- 1;
- });
-
- eval { #- eval it so that missing pixmap will not break the test completely
- my $root = gtkroot();
- my $gc = Gtk2::Gdk::GC->new($root);
- my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file("$::prefix/usr/share/mdk/xfdrake/xfdrake-test-card.png");
- my ($w, $h) = ($pixbuf->get_width, $pixbuf->get_height);
- my $pixmap = Gtk2::Gdk::Pixmap->new($root, $w, $h, $root->get_depth);
- $pixbuf->render_to_drawable($pixmap, $gc, 0, 0, 0, 0, $w, $h, 'none', 0, 0);
- $root->set_back_pixmap($pixmap, 0);
- $root->clear;
- };
-
- my $in = interactive::gtk->new;
- $in->exit($in->ask_yesorno('', [ translate("%s"), $text ], 0) ? 0 : 222);
- ), join(' ', @INC), $::prefix, N_("Leaving in %d seconds"), N_("Is this the correct setting?");
- my $rc = close $F;
- my $err = $?;
-
- $rc || $err == 222 << 8 or $warn_error->('');
-
- unlink "$::prefix/$f", "$::prefix/$f-4";
- unlink "/tmp/.X11-unix/X9" if $::prefix;
- kill 2, $pid;
-
- $rc;
-}
diff --git a/perl-install/Xconfig/various.pm b/perl-install/Xconfig/various.pm
deleted file mode 100644
index 6a8a93551..000000000
--- a/perl-install/Xconfig/various.pm
+++ /dev/null
@@ -1,175 +0,0 @@
-package Xconfig::various; # $Id$
-
-use diagnostics;
-use strict;
-
-use Xconfig::card;
-use Xconfig::default;
-use Xconfig::resolution_and_depth;
-use common;
-
-
-sub to_string {
- my ($raw_X) = @_;
-
- $raw_X->is_fbdev ? 'frame-buffer' : Xconfig::resolution_and_depth::to_string($raw_X->get_resolution);
-}
-
-sub info {
- my ($raw_X, $card) = @_;
- my $info;
- my $xf_ver = Xconfig::card::xorg_version();
- my $title = $card->{use_DRI_GLX} ? N("Xorg %s with 3D hardware acceleration", $xf_ver) :
- N("Xorg %s", $xf_ver);
- my $keyboard = eval { $raw_X->get_keyboard } || {};
- my @monitors = eval { $raw_X->get_monitors };
- my $device = eval { $raw_X->get_device } || {};
- my $mouse = eval { first($raw_X->get_mice) } || {};
-
- $info .= N("Keyboard layout: %s\n", $keyboard->{XkbLayout});
- $info .= N("Mouse type: %s\n", $mouse->{Protocol});
- $info .= N("Mouse device: %s\n", $mouse->{Device}) if $::expert;
- foreach my $monitor (@monitors) {
- $info .= N("Monitor: %s\n", $monitor->{ModelName});
- $info .= N("Monitor HorizSync: %s\n", $monitor->{HorizSync}) if $::expert;
- $info .= N("Monitor VertRefresh: %s\n", $monitor->{VertRefresh}) if $::expert;
- }
- $info .= N("Graphics card: %s\n", $device->{VendorName} . ' ' . $device->{BoardName});
- $info .= N("Graphics memory: %s kB\n", $device->{VideoRam}) if $device->{VideoRam};
- if (my $resolution = eval { $raw_X->get_resolution }) {
- $info .= N("Color depth: %s\n", translate($Xconfig::resolution_and_depth::depth2text{$resolution->{Depth}}));
- $info .= N("Resolution: %s\n", join('x', @$resolution{'X', 'Y'}));
- }
- $info .= N("Xorg driver: %s\n", $device->{Driver}) if $device->{Driver};
- "$title\n\n$info";
-}
-
-sub various {
- my ($in, $card, $options, $b_auto) = @_;
-
- tvout($in, $card, $options) if !$b_auto;
- choose_xdm($in, $b_auto);
- 1;
-}
-
-sub runlevel {
- my ($o_runlevel) = @_;
- my $f = "$::prefix/etc/inittab";
- -r $f or log::l("missing inittab!!!"), return;
- if ($o_runlevel) {
- substInFile { s/^id:\d:initdefault:\s*$/id:$o_runlevel:initdefault:\n/ } $f if !$::testing;
- } else {
- cat_($f) =~ /^id:(\d):initdefault:\s*$/m && $1;
- }
-}
-
-sub choose_xdm {
- my ($in, $b_auto) = @_;
- my $xdm = $::isStandalone ? runlevel() == 5 : 1;
-
- if (!$b_auto) {
- $xdm = $in->ask_yesorno_({
- title => N("Graphical interface at startup"),
- messages =>
-N("I can setup your computer to automatically start the graphical interface (Xorg) upon booting.
-Would you like Xorg to start when you reboot?"),
- interactive_help_id => 'configureXxdm',
- }, $xdm);
- }
- runlevel($xdm ? 5 : 3);
-}
-
-sub tvout {
- my ($in, $card, $options) = @_;
-
- $card->{FB_TVOUT} && $options->{allowFB} or return;
-
- $in->ask_yesorno('', N("Your graphic card seems to have a TV-OUT connector.
-It can be configured to work using frame-buffer.
-
-For this you have to plug your graphic card to your TV before booting your computer.
-Then choose the \"TVout\" entry in the bootloader
-
-Do you have this feature?")) or return;
-
- #- rough default value (rationale: http://download.nvidia.com/XFree86_40/1.0-2960/README.txt)
- require timezone;
- my $norm = timezone::read()->{timezone} =~ /America/ ? 'NTSC' : 'PAL';
-
- $norm = $in->ask_from_list('', N("What norm is your TV using?"), [ 'NTSC', 'PAL' ], $norm) or return;
-
- configure_FB_TVOUT($in->do_pkgs, { norm => $norm });
-}
-
-sub configure_FB_TVOUT {
- my ($do_pkgs, $use_FB_TVOUT) = @_;
-
- my $raw_X = Xconfig::default::configure($do_pkgs);
- return if is_empty_array_ref($raw_X);
-
- $raw_X->set_monitors({ HorizSync => '30-50', VertRefresh => ($use_FB_TVOUT->{norm} eq 'NTSC' ? 60 : 50),
- ModeLine => [
- { val => '"640x480" 29.50 640 675 678 944 480 530 535 625', pre_comment => "# PAL\n" },
- { val => '"800x600" 36.00 800 818 820 960 600 653 655 750' },
- { val => '"640x480" 28.195793 640 656 658 784 480 520 525 600', pre_comment => "# NTSC\n" },
- { val => '"800x600" 38.769241 800 812 814 880 600 646 649 735' },
- ] });
- $raw_X->set_devices({ Driver => 'fbdev' });
-
- my ($device) = $raw_X->get_devices;
- my ($monitor) = $raw_X->get_monitors;
- $raw_X->set_screens({ Device => $device->{Identifier}, Monitor => $monitor->{Identifier} });
-
- my $Screen = $raw_X->get_default_screen;
- $Screen->{Display} = [ map { { l => { Depth => { val => $_ } } } } 8, 16 ];
-
- $raw_X->write("$::prefix/etc/X11/XF86Config.tvout");
-
- check_XF86Config_symlink();
-
- {
- require bootloader;
- require fsedit;
- require detect_devices;
- my $all_hds = $::isInstall ? $::o->{all_hds} : fsedit::get_hds();
- my $bootloader = $::isInstall ? $::o->{bootloader} : bootloader::read($all_hds);
-
- if (my $tvout = bootloader::duplicate_kernel_entry($bootloader, 'TVout')) {
- $tvout->{append} .= " XFree=tvout";
- bootloader::install($bootloader, $all_hds);
- }
- }
-}
-
-sub check_XF86Config_symlink() {
- my $f = "$::prefix/etc/X11/XF86Config";
- if (!-l $f && -e "$f.tvout") {
- rename $f, "$f.standard";
- symlink "XF86Config.standard", $f;
- }
-}
-
-sub setupFB {
- my ($bios_vga_mode) = @_;
-
- require bootloader;
- my ($bootloader, $all_hds);
-
- if ($::isInstall) {
- ($bootloader, $all_hds) = ($::o->{bootloader}, $::o->{all_hds});
- } else {
- $all_hds = fsedit::get_hds();
- fs::get_info_from_fstab($all_hds);
-
- $bootloader = bootloader::read($all_hds) or return;
- }
-
- foreach (@{$bootloader->{entries}}) {
- $_->{vga} = $bios_vga_mode if $_->{vga}; #- replace existing vga= with
- }
-
- bootloader::action($bootloader, 'write', $all_hds);
- bootloader::action($bootloader, 'when_config_changed');
-}
-
-1;
diff --git a/perl-install/Xconfig/xfree.pm b/perl-install/Xconfig/xfree.pm
deleted file mode 100644
index da6799b6a..000000000
--- a/perl-install/Xconfig/xfree.pm
+++ /dev/null
@@ -1,720 +0,0 @@
-package Xconfig::xfree; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use Xconfig::parse;
-
-#- mostly internal only
-sub new {
- my ($class, $val) = @_;
- bless $val, $class;
-}
-
-sub _conf_files() {
- map { "$::prefix/etc/X11/$_" } 'xorg.conf', 'XF86Config-4', 'XF86Config';
-}
-
-################################################################################
-# I/O ##########################################################################
-################################################################################
-sub read_and_prepare_write {
- my ($class) = @_;
- my $file = find { -f $_ } _conf_files();
- my $raw_X = $class->new(Xconfig::parse::read_XF86Config($file));
- my $before = $raw_X->prepare_write;
-
- if (my ($Keyboard) = $raw_X->get_InputDevices('Keyboard')) {
- $Keyboard->{Driver}{val} = 'keyboard';
- }
-
- #- ugly hack to fix empty ModeLine lines, XFdrake seems to generate some, but where???
- #- at least this allows fixing the pb by re-running XFdrake
- foreach ($raw_X->get_Sections('Monitor')) {
- my $l = $_->{ModeLine} or next;
- @$l = grep { $_->{val} } @$l;
- }
-
- $raw_X, $before;
-}
-sub read {
- my ($class) = @_;
- first(read_and_prepare_write($class));
-}
-sub write {
- my ($raw_X, $o_file) = @_;
- my $file = $o_file || first(_conf_files());
- if (!$o_file) {
- foreach (_conf_files()) {
- if (-l $_) {
- unlink $_;
- } else {
- renamef($_, "$_.old"); #- there will not be any XF86Config nor XF86Config-4 anymore, we want this!
- }
- }
- #- keep it for old programs still using this name
- symlink basename($file), "$::prefix/etc/X11/XF86Config";
- }
- Xconfig::parse::write_XF86Config($raw_X, $file);
-}
-sub prepare_write {
- my ($raw_X) = @_;
- join('', Xconfig::parse::prepare_write_XF86Config($raw_X));
-}
-sub empty_config {
- my ($class) = @_;
- $class->new(Xconfig::parse::read_XF86Config_from_string(our $default_header));
-}
-
-################################################################################
-# keyboard #####################################################################
-################################################################################
-my @keyboard_fields = qw(XkbLayout XkbModel XkbDisable XkbOptions XkbCompat);
-sub get_keyboard {
- my ($raw_X) = @_;
- my $raw_kbd = first(map { $raw_X->get_InputDevices($_) } 'keyboard', 'kbd') or die "no keyboard section";
- raw_export_section($raw_kbd, \@keyboard_fields);
-}
-sub set_keyboard {
- my ($raw_X, $kbd) = @_;
- my $raw_kbd = first(map { $raw_X->get_InputDevices($_) } 'keyboard', 'kbd') || _new_keyboard_section($raw_X);
- raw_import_section($raw_kbd, $kbd);
- _set_Option('keyboard', $raw_kbd, keys %$kbd);
-}
-sub _new_keyboard_section {
- my ($raw_X) = @_;
- my $raw_kbd = { Identifier => { val => 'Keyboard1' }, Driver => { val => 'keyboard' } };
- $raw_X->add_Section('InputDevice', $raw_kbd);
-
- my $layout = get_ServerLayout($raw_X)->{InputDevice} ||= [];
- push @$layout, { val => '"Keyboard1" "CoreKeyboard"' };
-
- $raw_kbd;
-}
-
-
-################################################################################
-# mouse ########################################################################
-################################################################################
-#- example: { Protocol => 'IMPS/2', Device => '/dev/psaux', Emulate3Buttons => undef, Emulate3Timeout => 50, ZAxisMapping => [ '4 5', '6 7' ] }
-my @mouse_fields = qw(Protocol Device ZAxisMapping Emulate3Buttons Emulate3Timeout); #-);
-sub get_mice {
- my ($raw_X) = @_;
- my @raw_mice = $raw_X->get_InputDevices('mouse');
- map { raw_export_section($_, \@mouse_fields) } @raw_mice;
-}
-sub set_mice {
- my ($raw_X, @mice) = @_;
- my @raw_mice = _new_mouse_sections($raw_X, int @mice);
- mapn {
- my ($raw_mouse, $mouse) = @_;
- raw_import_section($raw_mouse, $mouse);
- _set_Option('mouse', $raw_mouse, keys %$mouse);
- } \@raw_mice, \@mice;
-}
-sub _new_mouse_sections {
- my ($raw_X, $nb_new) = @_;
- $raw_X->remove_InputDevices('mouse');
-
- my $layout = get_ServerLayout($raw_X)->{InputDevice} ||= [];
- @$layout = grep { $_->{val} !~ /^"Mouse/ } @$layout;
-
- $nb_new or return;
-
- my @l = map {
- my $h = { Identifier => { val => "Mouse$_" }, Driver => { val => 'mouse' } };
- $raw_X->add_Section('InputDevice', $h);
- } (1 .. $nb_new);
-
- push @$layout, { val => qq("Mouse1" "CorePointer") };
- push @$layout, { val => qq("Mouse$_" "SendCoreEvents") } foreach 2 .. $nb_new;
-
- @l;
-}
-
-
-################################################################################
-# resolution ###################################################################
-################################################################################
-sub get_resolution {
- my ($raw_X, $o_Screen) = @_;
- my $Screen = $o_Screen || $raw_X->get_default_screen or return {};
-
- my $depth = val($Screen->{DefaultColorDepth});
- my $Display = find { !$depth || val($_->{l}{Depth}) eq $depth } @{$Screen->{Display} || []} or return {};
- $Display->{l}{Virtual} && val($Display->{l}{Virtual}) =~ /(\d+)\s+(\d+)/ or
- val($Display->{l}{Modes}) =~ /(\d+)x(\d+)/ or return {};
- { X => $1, Y => $2, Depth => val($Display->{l}{Depth}) };
-}
-sub set_resolution {
- my ($raw_X, $resolution, $o_Screen_) = @_;
-
- foreach my $Screen ($o_Screen_ ? $o_Screen_ : $raw_X->get_Sections('Screen')) {
- $Screen ||= $raw_X->get_default_screen or internal_error('no screen');
-
- my $Mode_name = (any { $_->{l}{Modes} } @{$Screen->{Display} || []}) ? 'Modes' : 'Virtual';
- my $Mode = sprintf($Mode_name eq 'Modes' ? '"%dx%d"' : '%d %d', @$resolution{'X', 'Y'});
-
- $Screen->{DefaultColorDepth} = { val => $resolution->{Depth} eq '32' ? 24 : $resolution->{Depth} };
- $Screen->{Display} = [ map {
- { l => { Depth => { val => $_ }, $Mode_name => { val => $Mode } } };
- } 8, 15, 16, 24 ];
- }
- add_gtf_ModeLines($raw_X, $resolution);
-}
-
-
-################################################################################
-# device #######################################################################
-################################################################################
-my @device_fields = qw(VendorName BoardName Driver VideoRam Screen BusID); #-);
-sub get_device {
- my ($raw_X) = @_;
- first(get_devices($raw_X));
-}
-sub get_devices {
- my ($raw_X) = @_;
- my @raw_devices = $raw_X->get_Sections('Device');
- map {
- my $raw_device = $_;
- my $device = raw_export_section($raw_device, [ 'Identifier', @device_fields ]);
- $device->{Options} = raw_export_section($raw_device, [ grep { (deref_array($raw_device->{$_}))[0]->{Option} } keys %$raw_device ]);
- $device;
- } @raw_devices;
-}
-sub set_devices {
- my ($raw_X, @devices) = @_;
- my @raw_devices = _new_device_sections($raw_X, int @devices);
- mapn {
- my ($raw_device, $device) = @_;
- my %Options = %{$device->{Options} || {}};
- raw_import_section($raw_device, $device, \@device_fields);
- raw_import_section($raw_device, \%Options);
- $_->{Option} = 1 foreach map { deref_array($raw_device->{$_}) } keys %Options;
- $raw_device->{''} = [ { post_comment => $device->{raw_LINES} } ] if $device->{raw_LINES};
- } \@raw_devices, \@devices;
-}
-sub _new_device_sections {
- my ($raw_X, $nb_new) = @_;
- $raw_X->remove_Section('Device');
- map { $raw_X->add_Section('Device', { Identifier => { val => "device$_" }, DPMS => { Option => 1 } }) } (1 .. $nb_new);
-}
-sub get_Driver {
- my ($raw_X) = @_;
- my $card = eval { $raw_X->get_device };
- $card && $card->{Driver};
-}
-
-################################################################################
-# wacoms #######################################################################
-################################################################################
-sub set_wacoms {
- my ($raw_X, @wacoms) = @_;
- $raw_X->remove_InputDevices('wacom');
-
- my $layout = get_ServerLayout($raw_X)->{InputDevice} ||= [];
- @$layout = grep { $_->{val} !~ /^"(Stylus|Eraser|Cursor)/ } @$layout;
-
- @wacoms or return;
-
- my %Modes = (Stylus => 'Absolute', Eraser => 'Absolute', Cursor => 'Relative');
-
- each_index {
- my $wacom = $_;
- foreach (keys %Modes) {
- my $identifier = $_ . ($::i + 1);
- my $h = { Identifier => { val => $identifier },
- Driver => { val => 'wacom' },
- Type => { val => lc $_, Option => 1 },
- Device => { val => $wacom->{Device}, Option => 1 },
- Mode => { val => $Modes{$_}, Option => 1 },
- if_($wacom->{USB}, USB => { Option => 1 })
- };
- $raw_X->add_Section('InputDevice', $h);
- push @$layout, { val => qq("$identifier" "AlwaysCore") };
- }
- } @wacoms;
-}
-
-
-################################################################################
-# synaptics ####################################################################
-################################################################################
-sub set_synaptics {
- my ($raw_X, @synaptics) = @_;
- $raw_X->remove_InputDevices('synaptics');
-
- my $layout = get_ServerLayout($raw_X)->{InputDevice} ||= [];
- @$layout = grep { $_->{val} !~ /^"SynapticsMouse/ } @$layout;
-
- @synaptics or return;
- add_load_module($raw_X, "synaptics");
-
- each_index {
- my $synaptics_mouse = $_;
- my $identifier = "SynapticsMouse" . ($::i + 1);
- my $pointer_type = $synaptics_mouse->{Primary} ? "CorePointer" : "AlwaysCore";
- my $h = {
- Identifier => { val => $identifier },
- Driver => { val => "synaptics" },
- };
- my %opts = (
- Device => $synaptics_mouse->{Device},
- Protocol => $synaptics_mouse->{Protocol},
- $synaptics_mouse->{ALPS} ? (
- #- from /usr/share/doc/synaptics-0.14.0/README.alps
- #- and http://qa.mandrakesoft.com/show_bug.cgi?id=14512
- LeftEdge => 120,
- RightEdge => 830,
- TopEdge => 120,
- BottomEdge => 650,
- FingerLow => 14,
- FingerHigh => 15,
- MaxTapTime => 180,
- MaxTapMove => 110,
- EmulateMidButtonTime => 75,
- VertScrollDelta => 20,
- HorizScrollDelta => 20,
- MinSpeed => '0.8',
- MaxSpeed => '1.00',
- AccelFactor => '0.015',
- EdgeMotionMinSpeed => 200,
- EdgeMotionMaxSpeed => 200,
- UpDownScrolling => 1,
- CircularScrolling => 1,
- CircScrollDelta => '0.1',
- CircScrollTrigger => 2,
- UpDownScrolling => 0,
- ) : (
- #- from /usr/share/doc/synaptics-0.14.0/INSTALL
- LeftEdge => 1700,
- RightEdge => 5300,
- TopEdge => 1700,
- BottomEdge => 4200,
- FingerLow => 25,
- FingerHigh => 30,
- MaxTapTime => 180,
- MaxTapMove => 220,
- VertScrollDelta => 100,
- MinSpeed => '0.09',
- MaxSpeed => '0.18',
- AccelFactor => '0.0015',
- ),
- SHMConfig => "on",
- );
- while (my ($k, $v) = each %opts) {
- $h->{$k} = { val => $v, Option => 1 };
- }
- $raw_X->add_Section('InputDevice', $h);
- push @$layout, { val => qq("$identifier" "$pointer_type") };
- } @synaptics;
-}
-
-
-################################################################################
-# monitor ######################################################################
-################################################################################
-my @monitor_fields = qw(VendorName ModelName HorizSync VertRefresh);
-sub get_monitors {
- my ($raw_X) = @_;
- my @raw_monitors = $raw_X->get_Sections('Monitor');
- map {
- my $h = raw_export_section($_, [ 'Identifier', @monitor_fields ]);
- $h->{ModeLine} = $_->{ModeLine};
- $h;
- } @raw_monitors;
-}
-sub set_monitors {
- my ($raw_X, @monitors) = @_;
- my @raw_monitors = _new_monitor_sections($raw_X, int @monitors);
- mapn {
- my ($raw_monitor, $monitor) = @_;
- raw_import_section($raw_monitor, $monitor, \@monitor_fields);
- $raw_monitor->{ModeLine} = $monitor->{ModeLine};
- } \@raw_monitors, \@monitors;
-}
-sub get_or_new_monitors {
- my ($raw_X, $nb_new) = @_;
- my @monitors = $raw_X->get_monitors;
-
- #- ensure we have exactly $nb_new monitors;
- if ($nb_new > @monitors) {
- @monitors, ({}) x ($nb_new - @monitors);
- } else {
- splice(@monitors, 0, $nb_new);
- }
-}
-sub _new_monitor_sections {
- my ($raw_X, $nb_new) = @_;
- $raw_X->remove_Section('Monitor');
- map { $raw_X->add_Section('Monitor', { Identifier => { val => "monitor$_" }, ModeLine => default_ModeLine() }) } (1 .. $nb_new);
-}
-sub default_ModeLine() {
- ModeLine_from_string(qq(Section "Monitor"\n) . (our $default_ModeLine) . qq(EndSection\n));
-}
-
-sub add_gtf_ModeLines {
- my ($raw_X, $resolution) = @_;
-
- my $banner = 'modeline generated by gtf(1) [handled by XFdrake]';
- my $res = $resolution->{X} . 'x' . $resolution->{Y};
- my @to_add;
- if ($res ne '1280x1024' &&
- ($res eq '1400x1050' || $res eq '1152x864' || $Xconfig::xfree::resolution2ratio{$res} ne '4/3')) {
- @to_add = map {
- my $s = run_program::rooted_get_stdout($::prefix, 'gtf', $resolution->{X}, $resolution->{Y}, $_);
- if (my ($name, $val) = $s =~ /ModeLine\s*"(.*)"(.*)/i) {
- chomp $val;
- $name =~ s/\.00//; #- nicer that way
- { val => qq("${name}"$val), pre_comment => "# $banner\n" };
- } else { () }
- } reverse(sort_numbers(@Xconfig::xfree::vfreqs));
- }
-
- $raw_X->set_monitors(map {
- @{$_->{ModeLine}} = (
- (grep { index($_->{pre_comment}, $banner) == -1 } @{$_->{ModeLine}}),
- @to_add,
- );
- $_;
- } $raw_X->get_monitors);
-
- 1;
-}
-
-
-################################################################################
-# screens ######################################################################
-################################################################################
-sub get_default_screen {
- my ($raw_X) = @_;
- my @l = $raw_X->get_Sections('Screen');
- (find { $_->{Identifier} && val($_->{Identifier}) eq 'screen1' ||
- $_->{Driver} && val($_->{Driver}) =~ /svga|accel/ } @l) || $l[0];
-}
-sub set_screens {
- my ($raw_X, @screens) = @_;
- my @raw_screens = _new_screen_sections($raw_X, int @screens);
- mapn {
- my ($raw_screen, $screen) = @_;
- raw_import_section($raw_screen, $screen);
- } \@raw_screens, \@screens;
-}
-sub _new_screen_sections {
- my ($raw_X, $nb_new) = @_;
- $raw_X->remove_Section('Screen');
- my @l = map { $raw_X->add_Section('Screen', { Identifier => { val => "screen$_" } }) } (1 .. $nb_new);
-
- get_ServerLayout($raw_X)->{Screen} = [
- { val => qq("screen1") },
- map { { val => sprintf('"screen%d" RightOf "screen%d"', $_, $_ - 1) } } (2 .. $nb_new)
- ];
- @l;
-}
-sub is_fbdev {
- my ($raw_X, $o_Screen) = @_;
-
- my $Screen = $o_Screen || $raw_X->get_default_screen or return;
-
- my $Device = $raw_X->get_Section_by_Identifier('Device', val($Screen->{Device})) or internal_error("no device named $Screen->{Device}");
- val($Device->{Driver}) eq 'fbdev';
-}
-
-
-
-
-################################################################################
-# modules ######################################################################
-################################################################################
-sub get_modules {
- my ($raw_X) = @_;
- my $raw_Module = $raw_X->get_Section('Module') or return;
- my $Module = raw_export_section($raw_Module, ['Load']);
- @{$Module->{Load} || []};
-}
-sub add_load_module {
- my ($raw_X, $module) = @_;
- my $raw_Module = $raw_X->get_Section('Module') || $raw_X->add_Section('Module', {});
-
- my %load_modules_comment = (
- dbe => 'Double-Buffering Extension',
- v4l => 'Video for Linux',
- dri => 'direct rendering',
- glx => '3D layer',
- 'glx-3.so' => '3D layer',
- );
- my $comment = $load_modules_comment{$module};
- push @{$raw_Module->{Load}}, { val => $module,
- comment_on_line => $comment && " # $comment",
- } if !member($module, $raw_X->get_modules);
-}
-sub remove_load_module {
- my ($raw_X, $module) = @_;
- my $raw_Module = $raw_X->get_Section('Module') or return;
- if (my @l = grep { $_->{val} ne $module } @{$raw_Module->{Load}}) {
- $raw_Module->{Load} = \@l;
- } else {
- $raw_X->remove_Section('Module');
- }
-}
-sub set_load_module {
- my ($raw_X, $module, $bool) = @_;
- $bool ? add_load_module($raw_X, $module) : remove_load_module($raw_X, $module);
-}
-
-
-#-##############################################################################
-#- helpers
-#-##############################################################################
-sub _set_Option {
- my ($category, $node, @names) = @_;
-
- if (member($category, 'keyboard', 'mouse')) {
- #- everything we export is an Option
- $_->{Option} = 1 foreach map { deref_array($node->{$_}) } @names;
- }
-}
-
-sub get_InputDevices {
- my ($raw_X, $Driver) = @_;
- $raw_X->get_Sections('InputDevice', sub { val($_[0]{Driver}) eq $Driver });
-}
-sub remove_InputDevices {
- my ($raw_X, $Driver) = @_;
- $raw_X->remove_Section('InputDevice', sub { val($_[0]{Driver}) ne $Driver });
-}
-
-sub get_ServerLayout {
- my ($raw_X) = @_;
- $raw_X->get_Section('ServerLayout') ||
- $raw_X->add_Section('ServerLayout', { Identifier => { val => 'layout1' } });
-}
-
-#-##############################################################################
-#- helpers
-#-##############################################################################
-sub raw_export_section {
- my ($section, $fields) = @_;
-
- my $export_name = sub {
- my ($name) = @_;
- my $h = $section->{$name} or return;
-
- my @l = map { if_(!$_->{commented}, $_->{val}) } deref_array($h) or return;
- $name => (ref($h) eq 'ARRAY' ? \@l : $l[0]);
- };
-
- my %h = map { $export_name->($_) } @$fields;
- \%h;
-}
-
-sub raw_import_section {
- my ($section, $h, $o_fields) = @_;
- foreach ($o_fields ? grep { exists $h->{$_} } @$o_fields : keys %$h) {
- my @l = map { ref($_) eq 'HASH' ? $_ : { val => $_ } } deref_array($h->{$_});
- $section->{$_} = (ref($h->{$_}) eq 'ARRAY' ? \@l : $l[0]);
- }
-}
-
-sub add_Section {
- my ($raw_X, $Section, $h) = @_;
- my @suggested_ordering = qw(Files ServerFlags Module DRI Keyboard Pointer XInput InputDevice Monitor Device Screen ServerLayout);
- my %order = map_index { { lc($_) => $::i } } @suggested_ordering;
- my $e = { name => $Section, l => $h };
- my $added;
- @$raw_X = map {
- if ($order{lc $_->{name}} > $order{lc $Section} && !$added) {
- $added = 1;
- ($e, $_);
- } else { $_ }
- } @$raw_X;
- push @$raw_X, $e if !$added;
- $h;
-}
-sub remove_Section {
- my ($raw_X, $Section, $o_when) = @_;
- @$raw_X = grep { $_->{name} ne $Section || $o_when && $o_when->($_->{l}) } @$raw_X;
- $raw_X;
-}
-sub get_Sections {
- my ($raw_X, $Section, $o_when) = @_;
- map { if_(lc($_->{name}) eq lc($Section) && (!$o_when || $o_when->($_->{l})), $_->{l}) } @$raw_X;
-}
-sub get_Section {
- my ($raw_X, $Section, $o_when) = @_;
- my @l = get_Sections($raw_X, $Section, $o_when);
- @l > 1 and log::l("Xconfig: found more than one Section $Section");
- $l[0];
-}
-sub get_Section_by_Identifier {
- my ($raw_X, $Section, $Identifier) = @_;
- my @l = get_Sections($raw_X, $Section, sub { val($_[0]{Identifier}) eq $Identifier });
- @l > 1 and die "more than one Section $Section has Identifier $Identifier";
- $l[0];
-}
-
-sub val {
- my ($ref) = @_;
- $ref && $ref->{val};
-}
-
-
-sub ModeLine_from_string {
- my ($s) = @_;
- my $raw_X_for_ModeLine = Xconfig::parse::read_XF86Config_from_string($s);
- get_Section($raw_X_for_ModeLine, 'Monitor')->{ModeLine};
-}
-
-
-
-# http://home.comcast.net/~igpl/Aspect.html
-# movies http://www.technosound.co.uk/nav.php?pageid=hcg_widescreen
-
-# www.dell.com/downloads/global/vectors/2003_cvt.pdf
-# file vesamodes in Xorg is DMT Standard Display Modes
-
-# http://www.vesa.org/Public
-# http://www.vesa.org/Public/EEDIDguideV1.pdf
-
-#- http://www.vesa.org/Public/CVT
-our @CVT_ratios = qw(4/3 16/9 16/10 5/4 15/9 3/2);
-our @CVT_vfreqs = qw(50 60 75 85); # and also 60Hz "reduced blanking" in CVT
-
-our @vfreqs = (@CVT_vfreqs, qw(100 120));
-
-our %ratio2resolutions = (
-
- # first all the CVT_ratios
-
- # 1.25
- '5/4' => [ qw(640x512 720x576 1280x1024 1800x1440) ],
- # SXGA=1280x1024
-
- # 1.33
- '4/3' => [
- qw(320x240 480x360 640x480 800x600 832x624
- 1024x768 1152x864 1280x960 1400x1050
- 1600x1200 1920x1440 2048x1536),
- ], # VGA=640x480, SVGA=800x600, XGA=1024x768, SXGA+=1400x1050, UXGA=1600x1200, QXGA=2048x1536
-
- # 1.5
- '3/2' => [ qw(360x240 720x480 1152x768) ],
-
- # 1.6
- '16/10' => [ qw(1280x800 1440x900 1600x1000 1680x1050 1920x1200) ],
- # WSXGA+=1680x1050, WUXGA=1920x1200
-
- # 1.67
- '15/9' => [ qw(1280x768) ],
- # WXGA=1280x768 or ??? (should be 1366x768)
-
- # 1.78
- '16/9' => [ qw(1280x720 1600x900 1920x1080) ],
-
-
- # now more weird things
-
- # 1.32
- # '192/145' => [ qw(1152x870) ],
-
- # 1.42
- # '17/12' => [ qw(544x384) ] ,
-
- # 1.56
- # '25/16' => [ qw(1600x1024) ], # WSXGA
-
- # 1.775
- # '71/15' => [ qw(852x480) ],
-
- N_("_:weird aspect ratio\nother") => [
- # 2.13 = 32/15
- qw(1024x480 1280x600), # VAIO
-
- # 2.67 = 8/3
- qw(2048x768 2560x960 3200x1200),
-
- # 4.0 = 4/1
- qw(3072x768 3456x864 3840x960 4800x1200),
-
- # ?? 352x288
- ],
-);
-
-our %resolution2ratio = map_each { map { $_ => $::a } @$::b } %ratio2resolutions;
-our @resolutions = map_each { @$::b } %ratio2resolutions;
-
-foreach my $ratio (keys %ratio2resolutions) {
- if ($ratio =~ m!^(\d+)/(\d+)$!) {
- my $eval = $2 / $1;
- foreach (@{$ratio2resolutions{$ratio}}) {
- my ($x, $y) = /(\d+)x(\d+)/;
- my $y2 = round($x * $eval);
- $y == $y2 or die "bad resolution $_ for ratio $ratio, it should be $x x $y2\n";
- }
- }
-}
-
-our $default_header = <<'END';
-# File generated by XFdrake.
-
-# **********************************************************************
-# Refer to the XF86Config man page for details about the format of
-# this file.
-# **********************************************************************
-
-Section "Files"
- # Multiple FontPath entries are allowed (they are concatenated together)
- # By default, Mandrake 6.0 and later now use a font server independent of
- # the X server to render fonts.
- FontPath "unix/:-1"
-EndSection
-
-Section "ServerFlags"
- #DontZap # disable <Crtl><Alt><BS> (server abort)
- #DontZoom # disable <Crtl><Alt><KP_+>/<KP_-> (resolution switching)
- AllowMouseOpenFail # allows the server to start up even if the mouse does not work
-END
-
-$default_header .= <<'END_XBOX' if is_xbox();
- Option "PciProbe1" "false"
- Option "PciProbe2" "false"
- Option "PciForceConfig1" "false"
- Option "PciForceConfig2" "false"
- Option "PciOsConfig" "true"
-END_XBOX
-
-$default_header .= <<'END';
-EndSection
-END
-
-our $default_ModeLine = arch() =~ /ppc/ ? <<'END_PPC' : <<'END';
- # Apple iMac modes
- ModeLine "1024x768" 78.525 1024 1049 1145 1312 768 769 772 800 +hsync +vsync
- ModeLine "800x600" 62.357 800 821 901 1040 600 601 604 632 +hsync +vsync
- ModeLine "640x480" 49.886 640 661 725 832 480 481 484 514 +hsync +vsync
- # Apple monitors tend to do 832x624
- ModeLine "832x624" 57 832 876 940 1152 624 625 628 667 -hsync -vsync
- # Apple PowerBook G3
- ModeLine "800x600" 100 800 816 824 840 600 616 624 640 -hsync -vsync
- # Apple TI Powerbook
- ModeLine "1152x768" 78.741 1152 1173 1269 1440 768 769 772 800 +vsync +vsync
- # Pismo Firewire G3
- ModeLine "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
- # iBook2
- ModeLine "1024x768" 65 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
- # 17" Apple Studio Display
- ModeLine "1024x768" 112.62 1024 1076 1248 1420 768 768 780 808 +hsync +vsync
- # HiRes Apple Studio Display
- ModeLine "1280x1024" 135 1280 1288 1392 1664 1024 1027 1030 1064
- # Another variation
- ModeLine "1280x1024" 134.989 1280 1317 1429 1688 1024 1025 1028 1066 +hsync +vsync
-END_PPC
- # TV fullscreen mode or DVD fullscreen output.
- # 768x576 @ 79 Hz, 50 kHz hsync
- ModeLine "768x576" 50.00 768 832 846 1000 576 590 595 630
- # 768x576 @ 100 Hz, 61.6 kHz hsync
- ModeLine "768x576" 63.07 768 800 960 1024 576 578 590 616
-END
-
-1;
diff --git a/perl-install/any.pm b/perl-install/any.pm
deleted file mode 100644
index e7a972a0e..000000000
--- a/perl-install/any.pm
+++ /dev/null
@@ -1,1104 +0,0 @@
-package any; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use detect_devices;
-use partition_table;
-use fs::type;
-use lang;
-use run_program;
-use keyboard;
-use devices;
-use modules;
-use log;
-use fs;
-use c;
-
-sub facesdir() {
- "$::prefix/usr/share/mdk/faces/";
-}
-sub face2png {
- my ($face) = @_;
- facesdir() . $face . ".png";
-}
-sub facesnames() {
- my $dir = facesdir();
- my @l = grep { /^[A-Z]/ } all($dir);
- map { if_(/(.*)\.png/, $1) } (@l ? @l : all($dir));
-}
-
-sub addKdmIcon {
- my ($user, $icon) = @_;
- my $dest = "$::prefix/usr/share/faces/$user.png";
- eval { cp_af(facesdir() . $icon . ".png", $dest) } if $icon;
-}
-
-sub alloc_user_faces {
- my ($users) = @_;
- my @m = my @l = facesnames();
- foreach (grep { !$_->{icon} || $_->{icon} eq "automagic" } @$users) {
- $_->{auto_icon} = splice(@m, rand(@m), 1); #- known biased (see cookbook for better)
- log::l("auto_icon is $_->{auto_icon}");
- @m = @l unless @m;
- }
-}
-
-sub create_user {
- my ($u, $isMD5) = @_;
-
- my @existing = stat("$::prefix/home/$u->{name}");
-
- if (!getpwnam($u->{name})) {
- my $uid = $u->{uid} || $existing[4];
- if ($uid && getpwuid($uid)) {
- undef $uid; #- suggested uid already in use
- }
- my $gid = $u->{gid} || $existing[5] || int getgrnam($u->{name});
- if ($gid) {
- if (getgrgid($gid)) {
- undef $gid if getgrgid($gid) ne $u->{name};
- } else {
- run_program::rooted($::prefix, 'groupadd', '-g', $gid, $u->{name});
- }
- }
- require authentication;
- run_program::raw({ root => $::prefix, sensitive_arguments => 1 },
- 'adduser',
- '-p', authentication::user_crypted_passwd($u, $isMD5),
- if_($uid, '-u', $uid), if_($gid, '-g', $gid),
- if_($u->{realname}, '-c', $u->{realname}),
- if_($u->{home}, '-d', $u->{home}),
- if_($u->{shell}, '-s', $u->{shell}),
- $u->{name});
- }
-
- my (undef, undef, $uid, $gid, undef, undef, undef, $home) = getpwnam($u->{name});
-
- if (@existing && $::isInstall && ($uid != $existing[4] || $gid != $existing[5])) {
- log::l("chown'ing $home from $existing[4].$existing[5] to $uid.$gid");
- require commands;
- eval { commands::chown_("-r", "$uid.$gid", "$::prefix$home") };
- }
-}
-
-sub add_users {
- my ($users, $authentication) = @_;
-
- alloc_user_faces($users);
-
- foreach (@$users) {
- create_user($_, $authentication->{md5});
- run_program::rooted($::prefix, "usermod", "-G", join(",", @{$_->{groups}}), $_->{name}) if !is_empty_array_ref($_->{groups});
- addKdmIcon($_->{name}, delete $_->{auto_icon} || $_->{icon});
- }
-}
-
-sub hdInstallPath() {
- my $tail = first(readlink("/tmp/image") =~ m|^(?:/tmp/)?hdimage/*(.*)|);
- my $head = first(readlink("/tmp/hdimage") =~ m|$::prefix(.*)|);
- log::l("search HD install path, tail=$tail, head=$head, tail defined=" . to_bool(defined $tail));
- defined $tail && ($head ? "$head/$tail" : "/mnt/hd/$tail");
-}
-
-sub install_acpi_pkgs {
- my ($do_pkgs, $b) = @_;
-
- my $acpi = bootloader::get_append_with_key($b, 'acpi');
- if (!member($acpi, 'off', 'ht')) {
- $do_pkgs->install('acpi', 'acpid') if !(-x "$::prefix/usr/bin/acpi" && -x "$::prefix/usr/sbin/acpid");
- }
-}
-
-sub setupBootloader {
- my ($in, $b, $all_hds, $fstab, $security) = @_;
-
- require bootloader;
- general:
- {
- local $::Wizard_no_previous = 1 if $::isStandalone;
- setupBootloader__general($in, $b, $all_hds, $fstab, $security) or return 0;
- }
- setupBootloader__boot_bios_drive($in, $b, $all_hds->{hds}) or goto general;
- {
- local $::Wizard_finished = 1 if $::isStandalone;
- setupBootloader__entries($in, $b, $all_hds, $fstab) or goto general;
- }
- 1;
-}
-
-sub installBootloader {
- my ($in, $b, $all_hds) = @_;
- return if is_xbox();
- install_acpi_pkgs($in->do_pkgs, $b);
-
- eval { run_program::rooted($::prefix, 'echo | lilo -u') } if $::isInstall && !$::o->{isUpgrade} && -e "$::prefix/etc/lilo.conf" && glob("$::prefix/boot/boot.*");
-
- retry:
- eval {
- my $_w = $in->wait_message(N("Please wait"), N("Bootloader installation in progress"));
- bootloader::install($b, $all_hds);
- };
-
- if (my $err = $@) {
- $err =~ /wizcancel/ and return;
- $err =~ s/^\w+ failed// or die;
- $err = formatError($err);
- while ($err =~ s/^Warning:.*//m) {}
- if (my ($dev) = $err =~ /^Reference:\s+disk\s+"(.*?)".*^Is the above disk an NT boot disk?/ms) {
- if ($in->ask_yesorno('',
-formatAlaTeX(N("LILO wants to assign a new Volume ID to drive %s. However, changing
-the Volume ID of a Windows NT, 2000, or XP boot disk is a fatal Windows error.
-This caution does not apply to Windows 95 or 98, or to NT data disks.
-
-Assign a new Volume ID?", $dev)))) {
- $b->{force_lilo_answer} = 'n';
- } else {
- $b->{'static-bios-codes'} = 1;
- }
- goto retry;
- } else {
- $in->ask_warn('', [ N("Installation of bootloader failed. The following error occurred:"), $err ]);
- return;
- }
- } elsif (arch() =~ /ppc/) {
- if (detect_devices::get_mac_model() !~ /IBM/) {
- my $of_boot = bootloader::dev2yaboot($b->{boot});
- $in->ask_warn('', N("You may need to change your Open Firmware boot-device to\n enable the bootloader. If you do not see the bootloader prompt at\n reboot, hold down Command-Option-O-F at reboot and enter:\n setenv boot-device %s,\\\\:tbxi\n Then type: shut-down\nAt your next boot you should see the bootloader prompt.", $of_boot));
- }
- }
- 1;
-}
-
-
-sub setupBootloader_simple {
- my ($in, $b, $all_hds, $fstab, $security) = @_;
- my $hds = $all_hds->{hds};
-
- require bootloader;
- my $mixed_kind_of_disks = bootloader::mixed_kind_of_disks($hds);
- #- full expert questions when there is 2 kind of disks
- #- it would need a semi_auto asking on which drive the bios boots...
-
- $mixed_kind_of_disks || $b->{bootUnsafe} || arch() =~ /ppc/ or return 1; #- default is good enough
-
- if (!$mixed_kind_of_disks && arch() !~ /ia64/) {
- setupBootloader__mbr_or_not($in, $b, $hds, $fstab) or return 0;
- } else {
- general:
- setupBootloader__general($in, $b, $all_hds, $fstab, $security) or return 0;
- }
- setupBootloader__boot_bios_drive($in, $b, $hds) or goto general;
- 1;
-}
-
-
-sub setupBootloader__boot_bios_drive {
- my ($in, $b, $hds) = @_;
-
- bootloader::mixed_kind_of_disks($hds) &&
- $b->{boot} =~ /\d$/ && #- on a partition
- is_empty_hash_ref($b->{bios}) && #- some bios mapping already there
- arch() !~ /ppc/ or return 1;
-
- log::l("mixed_kind_of_disks");
- my $hd = $in->ask_from_listf('', N("You decided to install the bootloader on a partition.
-This implies you already have a bootloader on the hard drive you boot (eg: System Commander).
-
-On which drive are you booting?"), \&partition_table::description, $hds) or return 0;
- log::l("mixed_kind_of_disks chosen $hd->{device}");
- $b->{first_hd_device} = "/dev/$hd->{device}";
- 1;
-}
-
-sub setupBootloader__mbr_or_not {
- my ($in, $b, $hds, $fstab) = @_;
-
- if (arch() =~ /ppc/) {
- if (defined $partition_table::mac::bootstrap_part) {
- $b->{boot} = $partition_table::mac::bootstrap_part;
- log::l("set bootstrap to $b->{boot}");
- } else {
- die "no bootstrap partition - yaboot.conf creation failed";
- }
- } else {
- my $floppy = detect_devices::floppy();
-
- my @l = (
- [ N("First sector of drive (MBR)") => '/dev/' . $hds->[0]{device} ],
- [ N("First sector of the root partition") => '/dev/' . fs::get::root($fstab, 'boot')->{device} ],
- if_($floppy,
- [ N("On Floppy") => "/dev/$floppy" ],
- ),
- [ N("Skip") => '' ],
- );
-
- my $default = find { $_->[1] eq $b->{boot} } @l;
- $in->ask_from_({ title => N("LILO/grub Installation"),
- messages => N("Where do you want to install the bootloader?"),
- interactive_help_id => 'setupBootloaderBeginner',
- },
- [ { val => \$default, list => \@l, format => sub { $_[0][0] }, type => 'list' } ]);
- my $new_boot = $default->[1] or return;
-
- #- remove bios mapping if the user changed the boot device
- delete $b->{bios} if $new_boot ne $b->{boot};
- $b->{boot} = $new_boot;
- }
- 1;
-}
-
-sub setupBootloader__general {
- my ($in, $b, $all_hds, $fstab, $security) = @_;
-
- return if is_xbox();
- my @method_choices = bootloader::method_choices($fstab);
- my $prev_force_acpi = my $force_acpi = bootloader::get_append_with_key($b, 'acpi') !~ /off|ht/;
- my $prev_force_noapic = my $force_noapic = bootloader::get_append_simple($b, 'noapic');
- my $prev_force_nolapic = my $force_nolapic = bootloader::get_append_simple($b, 'nolapic');
- my $memsize = bootloader::get_append_memsize($b);
- my $prev_clean_tmp = my $clean_tmp = any { $_->{mntpoint} eq '/tmp' } @{$all_hds->{special} ||= []};
- my $prev_boot = $b->{boot};
-
- $b->{password2} ||= $b->{password} ||= '';
- $::Wizard_title = N("Boot Style Configuration");
- if (arch() !~ /ppc/) {
- $in->ask_from_({ messages => N("Bootloader main options"),
- interactive_help_id => 'setupBootloader',
- callbacks => {
- complete => sub {
- !$memsize || $memsize =~ /^\d+K$/ || $memsize =~ s/^(\d+)M?$/$1M/i or $in->ask_warn('', N("Give the ram size in MB")), return 1;
- #- $security > 4 && length($b->{password}) < 6 and $in->ask_warn('', N("At this level of security, a password (and a good one) in lilo is requested")), return 1;
- $b->{restricted} && !$b->{password} and $in->ask_warn('', N("Option ``Restrict command line options'' is of no use without a password")), return 1;
- $b->{password} eq $b->{password2} or !$b->{restricted} or $in->ask_warn('', [ N("The passwords do not match"), N("Please try again") ]), return 1;
- 0;
- },
- },
- }, [
- { label => N("Bootloader to use"), val => \$b->{method}, list => \@method_choices, format => \&bootloader::method2text },
- if_(arch() !~ /ia64/,
- { label => N("Boot device"), val => \$b->{boot}, list => [ map { "/dev/$_->{device}" } bootloader::allowed_boot_parts($b, $all_hds) ], not_edit => !$::expert },
- ),
- { label => N("Delay before booting default image"), val => \$b->{timeout} },
- { text => N("Enable ACPI"), val => \$force_acpi, type => 'bool' },
- if_(!$force_nolapic,
- { text => N("Force no APIC"), val => \$force_noapic, type => 'bool' },
- ),
- { text => N("Force No Local APIC"), val => \$force_nolapic, type => 'bool' },
- if_($security >= 4 || $b->{password} || $b->{restricted},
- { label => N("Password"), val => \$b->{password}, hidden => 1 },
- { label => N("Password (again)"), val => \$b->{password2}, hidden => 1 },
- { text => N("Restrict command line options"), val => \$b->{restricted}, type => "bool", text => N("restrict") },
- ),
- { text => N("Clean /tmp at each boot"), val => \$clean_tmp, type => 'bool', advanced => 1 },
- { label => N("Precise RAM size if needed (found %d MB)", availableRamMB()), val => \$memsize, advanced => 1 },
- ]) or return 0;
- } else {
- $b->{boot} = $partition_table::mac::bootstrap_part;
- $in->ask_from_({ messages => N("Bootloader main options"),
- interactive_help_id => 'setupYabootGeneral',
- }, [
- { label => N("Bootloader to use"), val => \$b->{method}, list => \@method_choices, format => \&bootloader::method2text },
- { label => N("Init Message"), val => \$b->{'init-message'} },
- { label => N("Boot device"), val => \$b->{boot}, list => [ map { "/dev/$_" } (map { $_->{device} } (grep { isAppleBootstrap($_) } @$fstab)) ], not_edit => !$::expert },
- { label => N("Open Firmware Delay"), val => \$b->{delay} },
- { label => N("Kernel Boot Timeout"), val => \$b->{timeout} },
- { label => N("Enable CD Boot?"), val => \$b->{enablecdboot}, type => "bool" },
- { label => N("Enable OF Boot?"), val => \$b->{enableofboot}, type => "bool" },
- { label => N("Default OS?"), val => \$b->{defaultos}, list => [ 'linux', 'macos', 'macosx', 'darwin' ] },
- ]) or return 0;
- }
-
- #- remove bios mapping if the user changed the boot device
- delete $b->{bios} if $b->{boot} ne $prev_boot;
-
- if ($b->{boot} =~ m!/dev/md\d+$!) {
- $b->{'raid-extra-boot'} = 'mbr';
- } else {
- delete $b->{'raid-extra-boot'} if $b->{'raid-extra-boot'} eq 'mbr';
- }
-
- if ($b->{method} eq 'grub') {
- $in->do_pkgs->ensure_binary_is_installed('grub', "grub", 1) or return 0;
- }
-
- bootloader::set_append_memsize($b, $memsize);
- if ($prev_force_acpi != $force_acpi) {
- bootloader::set_append_with_key($b, acpi => ($force_acpi ? '' : 'ht'));
- }
- if ($prev_force_noapic != $force_noapic) {
- ($force_noapic ? \&bootloader::set_append_simple : \&bootloader::remove_append_simple)->($b, 'noapic');
- }
- if ($prev_force_nolapic != $force_nolapic) {
- ($force_nolapic ? \&bootloader::set_append_simple : \&bootloader::remove_append_simple)->($b, 'nolapic');
- }
-
- if ($prev_clean_tmp != $clean_tmp) {
- if ($clean_tmp && !fs::get::has_mntpoint('/tmp', $all_hds)) {
- push @{$all_hds->{special}}, { device => 'none', mntpoint => '/tmp', fs_type => 'tmpfs' };
- } else {
- @{$all_hds->{special}} = grep { $_->{mntpoint} ne '/tmp' } @{$all_hds->{special}};
- }
- }
- 1;
-}
-
-sub setupBootloader__entries {
- my ($in, $b, $_all_hds, $fstab) = @_;
-
- require Xconfig::resolution_and_depth;
-
- my $Modify = sub {
- require network::netconnect; #- to list network profiles
- my ($e) = @_;
- my $default = my $old_default = $e->{label} eq $b->{default};
- my $vga = Xconfig::resolution_and_depth::from_bios($e->{vga});
- my ($append, $netprofile) = bootloader::get_append_netprofile($e);
-
- my @l;
- if ($e->{type} eq "image") {
- @l = (
-{ label => N("Image"), val => \$e->{kernel_or_dev}, list => [ map { "/boot/$_" } bootloader::installed_vmlinuz() ], not_edit => 0 },
-{ label => N("Root"), val => \$e->{root}, list => [ map { "/dev/$_->{device}" } @$fstab ], not_edit => !$::expert },
-{ label => N("Append"), val => \$append },
- if_(arch() !~ /ppc|ia64/,
-{ label => N("Video mode"), val => \$vga, list => [ '', Xconfig::resolution_and_depth::bios_vga_modes() ], format => \&Xconfig::resolution_and_depth::to_string, advanced => 1 },
-),
-{ label => N("Initrd"), val => \$e->{initrd}, list => [ map { if_(/^initrd/, "/boot/$_") } all("$::prefix/boot") ], not_edit => 0, advanced => 1 },
-{ label => N("Network profile"), val => \$netprofile, list => [ sort(uniq('', $netprofile, network::netconnect::get_profiles())) ], advanced => 1 },
- );
- } else {
- @l = (
-{ label => N("Root"), val => \$e->{kernel_or_dev}, list => [ map { "/dev/$_->{device}" } @$fstab, detect_devices::floppies() ], not_edit => !$::expert },
- );
- }
- if (arch() !~ /ppc/) {
- @l = (
- { label => N("Label"), val => \$e->{label} },
- @l,
- { text => N("Default"), val => \$default, type => 'bool' },
- );
- } else {
- unshift @l, { label => N("Label"), val => \$e->{label}, list => ['macos', 'macosx', 'darwin'] };
- if ($e->{type} eq "image") {
- @l = ({ label => N("Label"), val => \$e->{label} },
- $::expert ? @l[1..4] : (@l[1..2], { label => N("Append"), val => \$append }),
- if_($::expert, { label => N("Initrd-size"), val => \$e->{initrdsize}, list => [ '', '4096', '8192', '16384', '24576' ] }),
- if_($::expert, $l[5]),
- { label => N("NoVideo"), val => \$e->{novideo}, type => 'bool' },
- { text => N("Default"), val => \$default, type => 'bool' }
- );
- }
- }
-
- $in->ask_from_(
- {
- interactive_help_id => arch() =~ /ppc/ ? 'setupYabootAddEntry' : 'setupBootloaderAddEntry',
- callbacks => {
- complete => sub {
- $e->{label} or $in->ask_warn('', N("Empty label not allowed")), return 1;
- $e->{kernel_or_dev} or $in->ask_warn('', $e->{type} eq 'image' ? N("You must specify a kernel image") : N("You must specify a root partition")), return 1;
- member(lc $e->{label}, map { lc $_->{label} } grep { $_ != $e } @{$b->{entries}}) and $in->ask_warn('', N("This label is already used")), return 1;
- 0;
- } } }, \@l) or return;
-
- $b->{default} = $old_default || $default ? $default && $e->{label} : $b->{default};
- $e->{vga} = ref($vga) ? $vga->{bios} : $vga;
- bootloader::set_append_netprofile($e, $append, $netprofile);
- bootloader::configure_entry($e); #- hack to make sure initrd file are built.
- 1;
- };
-
- my $Add = sub {
- my @labels = map { $_->{label} } @{$b->{entries}};
- my ($e, $prefix);
- if ($in->ask_from_list_('', N("Which type of entry do you want to add?"),
- [ N_("Linux"), arch() =~ /sparc/ ? N_("Other OS (SunOS...)") : arch() =~ /ppc/ ?
- N_("Other OS (MacOS...)") : N_("Other OS (Windows...)") ]
- ) eq "Linux") {
- $e = { type => 'image',
- root => '/dev/' . fs::get::root($fstab)->{device}, #- assume a good default.
- };
- $prefix = "linux";
- } else {
- $e = { type => 'other' };
- $prefix = arch() =~ /sparc/ ? "sunos" : arch() =~ /ppc/ ? "macos" : "windows";
- }
- $e->{label} = $prefix;
- for (my $nb = 0; member($e->{label}, @labels); $nb++) {
- $e->{label} = "$prefix-$nb";
- }
- $Modify->($e) or return;
- bootloader::add_entry($b, $e);
- $e;
- };
-
- my $Remove = sub {
- my ($e) = @_;
- delete $b->{default} if $b->{default} eq $e->{label};
- @{$b->{entries}} = grep { $_ != $e } @{$b->{entries}};
- 1;
- };
-
- my @prev_entries = @{$b->{entries}};
- if ($in->ask_from__add_modify_remove('',
-N("Here are the entries on your boot menu so far.
-You can create additional entries or change the existing ones."), [ {
- format => sub {
- my ($e) = @_;
- ref($e) ?
- "$e->{label} ($e->{kernel_or_dev})" . ($b->{default} eq $e->{label} && " *") :
- translate($e);
- }, list => $b->{entries},
- } ], Add => $Add, Modify => $Modify, Remove => $Remove)) {
- 1;
- } else {
- @{$b->{entries}} = @prev_entries;
- '';
- }
-}
-
-sub get_autologin() {
- my %desktop = getVarsFromSh("$::prefix/etc/sysconfig/desktop");
- my $desktop = $desktop{DESKTOP} || 'KDE';
- my $autologin = do {
- if (($desktop{DISPLAYMANAGER} || $desktop) eq 'GNOME') {
- my %conf = read_gnomekderc("$::prefix/etc/X11/gdm/gdm.conf", 'daemon');
- text2bool($conf{AutomaticLoginEnable}) && $conf{AutomaticLogin};
- } else { # KDM / MdkKDM
- my %conf = read_gnomekderc("$::prefix/usr/share/config/kdm/kdmrc", 'X-:0-Core');
- text2bool($conf{AutoLoginEnable}) && $conf{AutoLoginUser};
- }
- };
- { autologin => $autologin, desktop => $desktop };
-}
-
-sub set_autologin {
- my ($o_user, $o_wm) = @_;
- log::l("set_autologin $o_user $o_wm");
- my $autologin = bool2text($o_user);
-
- #- Configure KDM / MDKKDM
- eval { update_gnomekderc("$::prefix/usr/share/config/kdm/kdmrc", 'X-:0-Core' => (
- AutoLoginEnable => $autologin,
- AutoLoginUser => $o_user,
- )) };
-
- #- Configure GDM
- eval { update_gnomekderc("$::prefix/etc/X11/gdm/gdm.conf", daemon => (
- AutomaticLoginEnable => $autologin,
- AutomaticLogin => $o_user,
- )) };
-
- my $xdm_autologin_cfg = "$::prefix/etc/sysconfig/autologin";
- if (member($o_wm, 'KDE', 'GNOME')) {
- unlink $xdm_autologin_cfg;
- } else {
- setVarsInShMode($xdm_autologin_cfg, 0644,
- { USER => $o_user, AUTOLOGIN => bool2yesno($o_user), EXEC => '/usr/X11R6/bin/startx.autologin' });
- }
-
- if ($o_user) {
- my $home = (getpwnam($o_user))[7];
- set_window_manager($home, $o_wm);
- }
-}
-sub set_window_manager {
- my ($home, $wm) = @_;
- log::l("set_window_manager $home $wm");
- my $p_home = "$::prefix$home";
-
- #- for KDM/GDM
- my $wm_number = sessions_with_order()->{$wm} || '';
- update_gnomekderc("$p_home/.dmrc", 'Desktop', Session => "$wm_number$wm");
- my $user = find { $home eq $_->[7] } list_passwd();
- chown($user->[2], $user->[3], "$p_home/.dmrc");
-
- #- for startx/autologin
- {
- my %l = getVarsFromSh("$p_home/.desktop");
- $l{DESKTOP} = $wm;
- setVarsInSh("$p_home/.desktop", \%l);
- }
-}
-
-sub rotate_log {
- my ($f) = @_;
- if (-e $f) {
- my $i = 1;
- for (; -e "$f$i" || -e "$f$i.gz"; $i++) {}
- rename $f, "$f$i";
- }
-}
-sub rotate_logs {
- my ($prefix) = @_;
- rotate_log("$prefix/root/drakx/$_") foreach qw(ddebug.log install.log);
-}
-
-sub writeandclean_ldsoconf {
- my ($prefix) = @_;
- my $file = "$prefix/etc/ld.so.conf";
- my @l = chomp_(cat_($file));
-
- my @default = ('/lib', '/usr/lib'); #- no need to have /lib and /usr/lib in ld.so.conf
- my @suggest = ('/usr/X11R6/lib', '/usr/lib/qt3/lib'); #- needed for upgrade where package renaming can cause this to disappear
-
- if (arch() =~ /x86_64/) {
- push @default, map { $_, $_ . '64' } @default;
- push @suggest, map { $_, $_ . '64' } @suggest;
- }
- push @l, grep { -d "$::prefix$_" } @suggest;
- @l = difference2(\@l, \@default);
-
- output($file, map { "$_\n" } uniq(@l));
-}
-
-sub shells() {
- grep { -x "$::prefix$_" } chomp_(cat_("$::prefix/etc/shells"));
-}
-
-sub inspect {
- my ($part, $o_prefix, $b_rw) = @_;
-
- isMountableRW($part) || !$b_rw && isOtherAvailableFS($part) or return;
-
- my $dir = $::isInstall ? "/tmp/inspect_tmp_dir" : "/root/.inspect_tmp_dir";
-
- if ($part->{isMounted}) {
- $dir = ($o_prefix || '') . $part->{mntpoint};
- } elsif ($part->{notFormatted} && !$part->{isFormatted}) {
- $dir = '';
- } else {
- mkdir $dir, 0700;
- eval { fs::mount(devices::make($part->{device}), $dir, $part->{fs_type}, !$b_rw) };
- $@ and return;
- }
- my $h = before_leaving {
- if (!$part->{isMounted} && $dir) {
- fs::umount($dir);
- unlink($dir);
- }
- };
- $h->{dir} = $dir;
- $h;
-}
-
-sub ask_user_one {
- my ($in, $users, $security, $u, %options) = @_;
-
- my @icons = facesnames();
-
- my %high_security_groups = (
- xgrp => N("access to X programs"),
- rpm => N("access to rpm tools"),
- wheel => N("allow \"su\""),
- adm => N("access to administrative files"),
- ntools => N("access to network tools"),
- ctools => N("access to compilation tools"),
- );
-
- $u->{password2} ||= $u->{password} ||= '';
- $u->{shell} ||= '/bin/bash';
- my $names = @$users ? N("(already added %s)", join(", ", map { $_->{realname} || $_->{name} } @$users)) : '';
-
- my %groups;
- my $verif = sub {
- $u->{password} eq $u->{password2} or $in->ask_warn('', [ N("The passwords do not match"), N("Please try again") ]), return 1,2;
- $security > 3 && length($u->{password}) < 6 and $in->ask_warn('', N("This password is too simple")), return 1,2;
- $u->{name} or $in->ask_warn('', N("Please give a user name")), return 1,0;
- $u->{name} =~ /^[a-z]+?[a-z0-9_-]*?$/ or $in->ask_warn('', N("The user name must contain only lower cased letters, numbers, `-' and `_'")), return 1,0;
- length($u->{name}) <= 32 or $in->ask_warn('', N("The user name is too long")), return 1,0;
- member($u->{name}, 'root', map { $_->{name} } @$users) and $in->ask_warn('', N("This user name has already been added")), return 1,0;
- return 0;
- };
- my $ret = $in->ask_from_(
- { title => N("Add user"),
- messages => N("Enter a user\n%s", $options{additional_msg} || $names),
- interactive_help_id => 'addUser',
- focus_first => 1,
- if_(!$::isInstall, ok => N("Done")),
- cancel => $options{noaccept} ? '' : N("Accept user"),
- callbacks => {
- focus_out => sub {
- if ($_[0] eq '0') {
- $u->{name} ||= lc first($u->{realname} =~ /([a-zA-Z0-9_-]+)/);
- }
- },
- complete => sub { $u->{name} ? &$verif : 0 },
- canceled => $verif,
- ok_disabled => sub { $security >= 4 && !@$users || $options{needauser} && !$u->{name} },
- } }, [
- { label => N("Real name"), val => \$u->{realname} },
- { label => N("Login name"), val => \$u->{name} },
- { label => N("Password"),val => \$u->{password}, hidden => 1 },
- { label => N("Password (again)"), val => \$u->{password2}, hidden => 1 },
- { label => N("Shell"), val => \$u->{shell}, list => [ shells() ], not_edit => !$::expert, advanced => 1 },
- if_($security <= 3 && !$options{noicons} && @icons,
- { label => N("Icon"), val => \ ($u->{icon} ||= 'default'), list => \@icons, icon2f => \&face2png, format => \&translate },
- ),
- if_($security > 3,
- map {
- { label => $_, val => \$groups{$_}, text => $high_security_groups{$_}, type => 'bool' };
- } keys %high_security_groups,
- ),
- ],
- );
- $u->{groups} = [ grep { $groups{$_} } keys %groups ];
-
- push @$users, $u if $u->{name};
-
- return $ret;
-}
-
-sub ask_users {
- my ($in, $users, $security, $suggested_names) = @_;
-
- while (1) {
- my $u = {};
- $u->{name} = shift @$suggested_names;
- ask_user_one($in, $users, $security, $u) and return;
- }
-}
-
-sub sessions() {
- split(' ', run_program::rooted_get_stdout($::prefix, '/usr/sbin/chksession', '-l'));
-}
-sub sessions_with_order() {
- my %h = map { /(.*)=(.*)/ } split(' ', run_program::rooted_get_stdout($::prefix, '/usr/sbin/chksession', '-L'));
- \%h;
-}
-
-sub autologin {
- my ($o, $in) = @_;
-
- my @wm = sessions();
- my @users = map { $_->{name} } @{$o->{users} || []};
-
- if (member('KDE', @wm) && @users == 1 && $o->{meta_class} eq 'desktop') {
- $o->{desktop} = 'KDE';
- $o->{autologin} = $users[0];
- } elsif (@wm > 1 && @users && !$o->{authentication}{NIS} && $o->{security} <= 2) {
- my $use_autologin = bool2yesno(@users == 1);
-
- $in->ask_from_(
- { title => N("Autologin"),
- messages => N("I can set up your computer to automatically log on one user.") },
- [ { label => N("Do you want to use this feature?"), val => \$use_autologin, type => 'list', list => [ N_("Yes"), N("No") ],
- format => sub { translate($_[0]) }, gtk => { use_boxradio => 1 } },
- { label => N("Choose the default user:"), val => \$o->{autologin}, list => \@users, disabled => sub { !$use_autologin } },
- { label => N("Choose the window manager to run:"), val => \$o->{desktop}, list => \@wm, disabled => sub { !$use_autologin } } ]
- );
- $use_autologin = to_bool($use_autologin);
- delete $o->{autologin} if !$use_autologin;
- } else {
- delete $o->{autologin};
- }
-}
-
-
-sub selectLanguage {
- my ($in, $lang, $o_langs_) = @_;
-
- my $common = { messages => N("Please choose a language to use."),
- title => N("Language choice"),
- interactive_help_id => 'selectLanguage' };
-
- if ($::isInstall) {
- my $langs = $o_langs_ || {};
- my $using_images = $in->isa('interactive::gtk') && !$in->{vga16};
-
- my %name2l = map { lang::l2name($_) => $_ } lang::list_langs();
- my $listval2val = sub { $_[0] =~ /\|(.*)/ ? $1 : $_[0] };
-
- #- since gtk version will use images (function image2f) we need to sort differently
- my $sort_func = $using_images ? \&lang::l2transliterated : \&lang::l2name;
- my @langs = sort { $sort_func->($a) cmp $sort_func->($b) } lang::list_langs();
- if (@langs > 15) {
- my $add_location = sub {
- my ($l) = @_;
- map { "$_|$l" } lang::l2location($l);
- };
- @langs = map { $add_location->($_) } @langs;
-
- #- to create the default value, use the first location for that value :/
- $lang = first($add_location->($lang));
- }
-
- my $last_utf8 = $in->{locale}{utf8};
- add2hash($common, { cancel => '',
- advanced_messages => formatAlaTeX(N("Mandriva Linux can support multiple languages. Select
-the languages you would like to install. They will be available
-when your installation is complete and you restart your system.")),
- advanced_state => 1,
- callbacks => { advanced => sub { $langs->{$listval2val->($lang)} = 1 },
- changed => sub {
- if ($last_utf8 == $in->{locale}{utf8}) {
- $last_utf8 = $in->{locale}{utf8} = lang::utf8_should_be_needed({ lang => $listval2val->($lang), langs => $langs });
- } else {
- $last_utf8 = -1; #- disable auto utf8 once touched
- }
- } } });
-
- $in->ask_from_($common,
- [ { val => \$lang, separator => '|',
- if_($using_images, image2f => sub { $name2l{$_[0]} =~ /^[a-z]/ ? ('', "langs/lang-$name2l{$_[0]}") : $_[0] }),
- format => sub { $_[0] =~ /(.*\|)(.*)/ ? $1 . lang::l2name($2) : lang::l2name($_[0]) },
- list => \@langs, sort => 0 },
- if_($o_langs_ && !$::move,
- { val => \$in->{locale}{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 },
- { val => \$langs->{all}, type => 'bool', text => N("All languages"), advanced => 1 },
- map {
- { val => \$langs->{$_->[0]}, type => 'bool', disabled => sub { $langs->{all} },
- text => $_->[1], advanced => 1,
- image => "langs/lang-$_->[0]",
- };
- } sort { $a->[1] cmp $b->[1] } map { [ $_, $sort_func->($_) ] } lang::list_langs())
- ]) or return;
- $langs->{$listval2val->($lang)} = 1;
- $langs->{$_} or delete $langs->{$_} foreach keys %$langs; #- clean hash
-
- #- convert to the default locale for asked language
- $listval2val->($lang);
-
- } else {
- my @langs = sort { lang::l2name($a) cmp lang::l2name($b) } lang::list_langs(exclude_non_installed => 1);
- die 'one lang only' if @langs == 1;
- $in->ask_from_($common,
- [ { val => \$lang, type => 'list',
- format => sub { lang::l2name($_[0]) }, list => \@langs },
- { val => \$in->{locale}{utf8}, type => 'bool', text => N("Use Unicode by default"), advanced => 1 },
- ]) or return;
- $lang;
- }
-}
-
-sub selectCountry {
- my ($in, $locale) = @_;
-
- my $country = $locale->{country};
- my @countries = lang::list_countries(exclude_non_installed => !$::isInstall);
- my @best = uniq map {
- my $h = lang::analyse_locale_name($_);
- if_($h->{main} eq lang::locale_to_main_locale($locale->{lang}) && $h->{country},
- $h->{country});
- } @lang::locales;
- @best == 1 and @best = ();
-
- my ($other, $ext_country);
- member($country, @best) or ($ext_country, $country) = ($country, $ext_country);
- $in->ask_from_(
- { title => N("Country / Region"),
- messages => N("Please choose your country."),
- interactive_help_id => 'selectCountry',
- if_(@best, advanced_messages => N("Here is the full list of available countries")),
- advanced_label => @best ? N("Other Countries") : N("Advanced"),
- advanced_state => $ext_country && scalar(@best),
- callbacks => { changed => sub { $_[0] != 2 and $other = $_[0] == 1 } },
- },
- [ if_(@best, { val => \$country, type => 'list', format => \&lang::c2name,
- list => \@best, sort => 1 }),
- { val => \$ext_country, type => 'list', format => \&lang::c2name,
- list => [ @countries ], advanced => scalar(@best) },
- { val => \$locale->{IM}, type => 'combo', label => N("Input method:"), sort => 0,
- list => [ N_("None"), sort(lang::get_ims()) ], format => sub { uc(translate($_[0])) },
- advanced => !$locale->{IM} || $locale->{IM} eq 'None',
- },
- ]) or return;
-
- $locale->{country} = $other || !@best ? $ext_country : $country;
-}
-
-sub set_login_serial_console {
- my ($port, $speed) = @_;
-
- my $line = "s$port:12345:respawn:/sbin/getty ttyS$port DT$speed ansi\n";
- substInFile { s/^s$port:.*//; $_ = $line if eof } "$::prefix/etc/inittab";
-}
-
-sub report_bug {
- my (@other) = @_;
-
- sub header { "
-********************************************************************************
-* $_[0]
-********************************************************************************";
- }
-
- join '', map { chomp; "$_\n" }
- header("lspci"), detect_devices::stringlist(),
- header("pci_devices"), cat_("/proc/bus/pci/devices"),
- header("dmidecode"), `$ENV{LD_LOADER} dmidecode`,
- header("fdisk"), arch() =~ /ppc/ ? `$ENV{LD_LOADER} pdisk -l` : `$ENV{LD_LOADER} fdisk -l`,
- header("scsi"), cat_("/proc/scsi/scsi"),
- header("/sys/bus/scsi/devices"), `ls -l /sys/bus/scsi/devices`,
- header("lsmod"), cat_("/proc/modules"),
- header("cmdline"), cat_("/proc/cmdline"),
- header("pcmcia: stab"), cat_("$::prefix/var/lib/pcmcia/stab") || cat_("$::prefix/var/run/stab"),
- header("usb"), cat_("/proc/bus/usb/devices"),
- header("partitions"), cat_("/proc/partitions"),
- header("cpuinfo"), cat_("/proc/cpuinfo"),
- header("syslog"), cat_("/tmp/syslog") || cat_("$::prefix/var/log/syslog"),
- header("monitor_full_edid"), monitor_full_edid(),
- header("stage1.log"), cat_("/tmp/stage1.log") || cat_("$::prefix/root/drakx/stage1.log"),
- header("ddebug.log"), cat_("/tmp/ddebug.log") || cat_("$::prefix/root/drakx/ddebug.log"),
- header("install.log"), cat_("$::prefix/root/drakx/install.log"),
- header("fstab"), cat_("$::prefix/etc/fstab"),
- header("modules.conf"), cat_("$::prefix/etc/modules.conf"),
- header("lilo.conf"), cat_("$::prefix/etc/lilo.conf"),
- header("menu.lst"), cat_("$::prefix/boot/grub/menu.lst"),
- header("XF86Config"), cat_("$::prefix/etc/X11/XF86Config"),
- header("/etc/modules"), cat_("$::prefix/etc/modules"),
- header("sysconfig/i18n"), cat_("$::prefix/etc/sysconfig/i18n"),
- map_index { even($::i) ? header($_) : $_ } @other;
-}
-
-sub devfssymlinkf {
- my ($if_struct, $of) = @_;
- my $if = $if_struct->{device};
-
- my $devfs_if = $if_struct->{devfs_device};
- $devfs_if ||= devices::to_devfs($if);
- $devfs_if ||= $if;
-
- #- example: $of is mouse, $if is usbmouse, $devfs_if is input/mouse0
-
- output_p("$::prefix/etc/devfs/conf.d/$of.conf",
-"REGISTER ^$devfs_if\$ CFUNCTION GLOBAL mksymlink $devfs_if $of
-UNREGISTER ^$devfs_if\$ CFUNCTION GLOBAL unlink $of
-");
-
- output_p("$::prefix/etc/devfs/conf.d/$if.conf",
-"REGISTER ^$devfs_if\$ CFUNCTION GLOBAL mksymlink $devfs_if $if
-UNREGISTER ^$devfs_if\$ CFUNCTION GLOBAL unlink $if
-") if $devfs_if ne $if && $if !~ /^hd[a-z]/ && $if !~ /^sr/ && $if !~ /^sd[a-z]/;
-
- output_p("$::prefix/etc/udev/rules.d/$of.rules", qq(KERNEL="$if", SYMLINK="$of"\n));
-
- #- when creating a symlink on the system, use devfs name if devfs is mounted
- symlinkf($devfs_if, "$::prefix/dev/$if") if $devfs_if ne $if && detect_devices::dev_is_devfs();
- symlinkf($if, "$::prefix/dev/$of");
-}
-sub devfs_rawdevice {
- my ($if_struct, $of) = @_;
-
- my $devfs_if = $if_struct->{devfs_device};
- $devfs_if ||= devices::to_devfs($if_struct->{device});
- $devfs_if ||= $if_struct->{device};
-
- output_p("$::prefix/etc/devfs/conf.d/$of.conf",
-"REGISTER ^$devfs_if\$ EXECUTE /etc/dynamic/scripts/rawdevice.script add /dev/$devfs_if /dev/$of
-UNREGISTER ^$devfs_if\$ EXECUTE /etc/dynamic/scripts/rawdevice.script del /dev/$of
-");
-}
-
-sub fix_broken_alternatives {
- my ($force_default) = @_;
- #- fix bad update-alternatives that may occurs after upgrade (and sometimes for install too).
- -d "$::prefix/etc/alternatives" or return;
-
- foreach (all("$::prefix/etc/alternatives")) {
- if ($force_default) {
- log::l("setting alternative $_");
- } else {
- next if run_program::rooted($::prefix, 'test', '-e', "/etc/alternatives/$_");
- log::l("fixing broken alternative $_");
- }
- run_program::rooted($::prefix, 'update-alternatives', '--auto', $_);
- }
-}
-
-
-sub fileshare_config {
- my ($in, $type) = @_; #- $type is 'nfs', 'smb' or ''
-
- my $file = '/etc/security/fileshare.conf';
- my %conf = getVarsFromSh($file);
-
- my @l = (N_("No sharing"), N_("Allow all users"), N_("Custom"));
- my $restrict = exists $conf{RESTRICT} ? text2bool($conf{RESTRICT}) : 1;
-
- my $r = $in->ask_from_list_('fileshare',
-N("Would you like to allow users to share some of their directories?
-Allowing this will permit users to simply click on \"Share\" in konqueror and nautilus.
-
-\"Custom\" permit a per-user granularity.
-"),
- \@l, $l[$restrict ? (getgrnam('fileshare') ? 2 : 0) : 1]) or return;
- $restrict = $r ne $l[1];
- my $custom = $r eq $l[2];
- if ($r ne $l[0]) {
- require services;
- my %types = (
- nfs => [ 'nfs-utils', 'nfs',
- N("NFS: the traditional Unix file sharing system, with less support on Mac and Windows.")
- ],
- smb => [ 'samba-server', 'smb',
- N("SMB: a file sharing system used by Windows, Mac OS X and many modern Linux systems.")
- ],
- );
- my %l;
- if ($type) {
- %l = ($type => 1);
- } else {
- %l = map_each { $::a => services::starts_on_boot($::b->[1]) } %types;
- $in->ask_from_({ messages => N("You can export using NFS or SMB. Please select which you would like to use."),
- callbacks => { ok_disabled => sub { !any { $_ } values %l } },
- },
- [ map { { text => $types{$_}[2], val => \$l{$_}, type => 'bool' } } keys %l ]) or return;
- }
- foreach (keys %types) {
- my ($pkg, $service, $_descr) = @{$types{$_}};
- my $file = "/etc/init.d/$service";
- if ($l{$_}) {
- $in->do_pkgs->ensure_is_installed($pkg, $file) or return;
- services::start($service);
- services::start_service_on_boot($service);
- } elsif (-e $file) {
- services::stop($service);
- services::do_not_start_service_on_boot($service);
- }
- }
- }
- $conf{RESTRICT} = bool2yesno($restrict);
- setVarsInSh($file, \%conf);
-
- if ($custom) {
- run_program::rooted($::prefix, 'groupadd', '-r', 'fileshare');
- if ($in->ask_from_no_check(
- {
- -e '/usr/sbin/userdrake' ? (ok => N("Launch userdrake"), cancel => N("Close")) : (cancel => ''),
- messages =>
-N("The per-user sharing uses the group \"fileshare\".
-You can use userdrake to add a user to this group.")
- }, [])) {
- run_program::run('userdrake');
- }
- }
-}
-
-sub monitor_full_edid() {
- return if $::noauto;
-
- devices::make('zero');
- my ($vbe, $edid);
- run_program::raw({ timeout => 20 }, 'monitor-edid', '>', \$edid, '2>', \$vbe, '-v', '--perl');
- if ($::isInstall) {
- foreach (['edid', \$edid], ['vbe', \$vbe]) {
- my ($name, $val) = @$_;
- if (-e "/tmp/$name") {
- my $old = cat_("/tmp/$name");
- if (length($$val) < length($old)) {
- log::l("new $name is worse, keeping the previous one");
- $$val = $old;
- } elsif (length($$val) > length($old)) {
- log::l("new $name is better, dropping the previous one");
- }
- }
- output("/tmp/$name", $$val);
- }
- }
- ($edid, $vbe);
-}
-
-sub running_window_manager() {
- my @window_managers = qw(kwin gnome-session icewm wmaker afterstep fvwm fvwm2 fvwm95 mwm twm enlightenment xfce blackbox sawfish olvwm fluxbox);
-
- foreach (@window_managers) {
- my @pids = fuzzy_pidofs(qr/\b$_\b/) or next;
- return wantarray() ? ($_, @pids) : $_;
- }
- undef;
-}
-
-sub ask_window_manager_to_logout {
- my ($wm) = @_;
-
- my %h = (
- 'kwin' => "dcop kdesktop default logout",
- 'gnome-session' => "gnome-session-save --kill",
- 'icewm' => "killall -QUIT icewm",
- );
- my $cmd = $h{$wm} or return;
- if ($wm eq 'gnome-session') {
- #- NB: consolehelper does not destroy $HOME whereas kdesu does
- #- for gnome, we use consolehelper, so below works
- $ENV{ICEAUTHORITY} ||= "$ENV{HOME}/.ICEauthority";
- } elsif ($wm eq 'kwin' && $> == 0) {
- #- we can not use dcop when we are root
- $cmd = "su $ENV{USER} -c '$cmd'";
- }
- system($cmd);
- 1;
-}
-
-sub ask_window_manager_to_logout_then_do {
- my ($wm, $pid, $action) = @_;
- if (fork()) {
- any::ask_window_manager_to_logout($wm);
- return;
- }
-
- open STDIN, "</dev/zero";
- open STDOUT, ">/dev/null";
- open STDERR, ">&STDERR";
- c::setsid();
- exec 'perl', '-e', q(
- my ($wm, $pid, $action) = @ARGV;
- my $nb;
- for ($nb = 30; $nb && -e "/proc/$pid"; $nb--) { sleep 1 }
- system($action) if $nb;
- ), $wm, $pid, $action;
-}
-
-sub alloc_raw_device {
- my ($prefix, $device) = @_;
- my $used = 0;
- my $raw_dev;
- substInFile {
- $used = max($used, $1) if m|^\s*/dev/raw/raw(\d+)|;
- if (eof) {
- $raw_dev = "raw/raw" . ($used + 1);
- $_ .= "/dev/$raw_dev /dev/$device\n";
- }
- } "$prefix/etc/sysconfig/rawdevices";
- $raw_dev;
-}
-
-sub config_dvd {
- my ($prefix, $have_devfsd) = @_;
-
- #- can not have both a devfs and a non-devfs config
- #- the /etc/sysconfig/rawdevices solution gives errors with devfs
-
- my @dvds = grep { detect_devices::isDvdDrive($_) } detect_devices::cdroms() or return;
-
- log::l("configuring DVD: " . join(" ", map { $_->{device} } @dvds));
- #- create /dev/dvd symlink
- each_index {
- devfssymlinkf($_, 'dvd' . ($::i ? $::i + 1 : ''));
- devfs_rawdevice($_, 'rdvd' . ($::i ? $::i + 1 : '')) if $have_devfsd;
- } @dvds;
-
- if (!$have_devfsd) {
- my $raw_dev = alloc_raw_device($prefix, 'dvd');
- symlink($raw_dev, "$prefix/dev/rdvd");
- }
-}
-
-sub config_mtools {
- my ($prefix) = @_;
- my $file = "$prefix/etc/mtools.conf";
- -e $file or return;
-
- my ($f1, $f2) = detect_devices::floppies_dev();
- substInFile {
- s|drive a: file="(.*?)"|drive a: file="/dev/$f1"|;
- s|drive b: file="(.*?)"|drive b: file="/dev/$f2"| if $f2;
- } $file;
-}
-
-1;
diff --git a/perl-install/authentication.pm b/perl-install/authentication.pm
deleted file mode 100644
index 11716b539..000000000
--- a/perl-install/authentication.pm
+++ /dev/null
@@ -1,680 +0,0 @@
-package authentication; # $Id$
-
-use common;
-use any;
-
-sub kinds {
- my $no_para = @_ == 0;
- my ($do_pkgs, $meta_class) = @_;
- my $allow_SmartCard = $no_para || $do_pkgs->is_available('castella-pam');
- my $allow_AD = $no_para || $meta_class =~ /corporate/;
- (
- 'local',
- 'LDAP',
- 'NIS',
- if_($allow_SmartCard, 'SmartCard'),
- 'winbind',
- if_($allow_AD, 'AD', 'SMBKRB'),
- );
-}
-
-sub kind2name {
- my ($kind) = @_;
- # Keep the following strings in sync with kind2description ones!!!
- ${{ local => N("Local file"),
- LDAP => N("LDAP"),
- NIS => N("NIS"),
- SmartCard => N("Smart Card"),
- winbind => N("Windows Domain"),
- AD => N("Active Directory with SFU"),
- SMBKRB => N("Active Directory with Winbind") }}{$kind};
-}
-
-my %kind2pam_kind = (
- local => [],
- SmartCard => ['castella'],
- LDAP => ['ldap'],
- NIS => [],
- AD => ['krb5'],
- winbind => ['winbind'],
- SMBKRB => ['winbind'],
-);
-
-my %kind2nsswitch = (
- local => [],
- SmartCard => [],
- LDAP => ['ldap'],
- NIS => ['nis'],
- AD => ['ldap'],
- winbind => ['winbind'],
- SMBKRB => ['winbind'],
-);
-
-sub kind2description {
- my (@kinds) = @_;
- my %kind2description = (
- local => [ N("Local file:"), N("Use local for all authentication and information user tell in local file"), ],
- LDAP => [ N("LDAP:"), N("Tells your computer to use LDAP for some or all authentication. LDAP consolidates certain types of information within your organization."), ],
- NIS => [ N("NIS:"), N("Allows you to run a group of computers in the same Network Information Service domain with a common password and group file."), ],
- winbind => [ N("Windows Domain:"), N("Winbind allows the system to retrieve information and authenticate users in a Windows domain."), ],
- AD => [ N("Active Directory with SFU:"), N("Kerberos is a secure system for providing network authentication services."), ],
- SMBKRB => [ N("Active Directory with Winbind:"), N("Kerberos is a secure system for providing network authentication services.") ],
- );
- join('', map { $_ ? qq($_->[0]\n$_->[1]\n\n) : '' } map { $kind2description{$_} } @kinds);
-}
-sub to_kind {
- my ($authentication) = @_;
- (find { exists $authentication->{$_} } kinds()) || 'local';
-}
-
-sub domain_to_ldap_domain {
- my ($domain) = @_;
- join(',', map { "dc=$_" } split /\./, $domain);
-}
-
-sub ask_parameters {
- my ($in, $netc, $authentication, $kind) = @_;
-
- #- keep only this authentication kind
- foreach (kinds()) {
- delete $authentication->{$_} if $_ ne $kind;
- }
-
- if ($kind eq 'LDAP') {
- $netc->{LDAPDOMAIN} ||= domain_to_ldap_domain($netc->{DOMAINNAME});
- $in->ask_from('',
- N("Authentication LDAP"),
- [ { label => N("LDAP Base dn"), val => \$netc->{LDAPDOMAIN} },
- { label => N("LDAP Server"), val => \$authentication->{LDAP_server} },
- ]) or return;
- } elsif ($kind eq 'AD') {
-
- $authentication->{AD_domain} ||= $netc->{DOMAINNAME};
- $authentication->{AD_users_db} ||= 'cn=users,' . domain_to_ldap_domain($authentication->{AD_domain});
-
- $in->do_pkgs->install(qw(perl-Net-DNS));
-
- my @srvs = query_srv_names($authentication->{AD_domain});
- $authentication->{AD_server} ||= $srvs[0] if @srvs;
-
- my %sub_kinds = my @sub_kinds = (
- simple => N("simple"),
- tls => N("TLS"),
- ssl => N("SSL"),
- kerberos => N("security layout (SASL/Kerberos)"),
- );
-
- my $AD_user = $authentication->{AD_user} =~ /(.*)\@\Q$authentication->{AD_domain}\E$/ ? $1 : $authentication->{AD_user};
- my $anonymous = $AD_user;
-
- $in->ask_from('',
- N("Authentication Active Directory"),
- [ { label => N("Domain"), val => \$authentication->{AD_domain} },
- #{ label => N("Server"), val => \$authentication->{AD_server} },
- { label => N("Server"), type => 'combo', val => \$authentication->{AD_server}, list => \@srvs , not_edit => 0 },
- { label => N("LDAP users database"), val => \$authentication->{AD_users_db} },
- { label => N("Use Anonymous BIND "), val => \$anonymous, type => 'bool' },
- { label => N("LDAP user allowed to browse the Active Directory"), val => \$AD_user, disabled => sub { $anonymous } },
- { label => N("Password for user"), val => \$authentication->{AD_password}, disabled => sub { $anonymous } },
- { label => N("Encryption"), val => \$authentication->{sub_kind}, list => [ map { $_->[0] } group_by2(@sub_kinds) ], format => sub { $sub_kinds{$_[0]} } },
- ]) or return;
- $authentication->{AD_user} = !$AD_user || $authentication->{sub_kind} eq 'anonymous' ? '' :
- $AD_user =~ /@/ ? $AD_user : "$AD_user\@$authentication->{AD_domain}";
- $authentication->{AD_password} = '' if !$authentication->{AD_user};
-
-
- } elsif ($kind eq 'NIS') {
- $authentication->{NIS_server} ||= 'broadcast';
- $netc->{NISDOMAIN} ||= $netc->{DOMAINNAME};
- $in->ask_from('',
- N("Authentication NIS"),
- [ { label => N("NIS Domain"), val => \$netc->{NISDOMAIN} },
- { label => N("NIS Server"), val => \$authentication->{NIS_server}, list => ["broadcast"], not_edit => 0 },
- ]) or return;
- } elsif ($kind eq 'winbind' || $kind eq 'SMBKRB') {
- #- maybe we should browse the network like diskdrake --smb and get the 'doze server names in a list
- #- but networking is not setup yet necessarily
- $in->ask_warn('', N("For this to work for a W2K PDC, you will probably need to have the admin run: C:\\>net localgroup \"Pre-Windows 2000 Compatible Access\" everyone /add and reboot the server.
-You will also need the username/password of a Domain Admin to join the machine to the Windows(TM) domain.
-If networking is not yet enabled, Drakx will attempt to join the domain after the network setup step.
-Should this setup fail for some reason and domain authentication is not working, run 'smbpasswd -j DOMAIN -U USER%%PASSWORD' using your Windows(tm) Domain, and Admin Username/Password, after system boot.
-The command 'wbinfo -t' will test whether your authentication secrets are good."))
- if $kind eq 'winbind';
-
- $authentication->{AD_domain} ||= $netc->{DOMAINNAME} if $kind eq 'SMBKRB';
- $authentication->{AD_users_idmap} ||= 'ou=idmap,' . domain_to_ldap_domain($authentication->{AD_domain}) if $kind eq 'SMBKRB';
- $netc->{WINDOMAIN} ||= $netc->{DOMAINNAME};
- my $anonymous;
- $in->ask_from('',
- $kind eq 'SMBKRB' ? N("Authentication Active Directory") : N("Authentication Windows Domain"),
- [ if_($kind eq 'SMBKRB',
- { label => N("Domain"), val => \$authentication->{AD_domain} }
- ),
- { label => N("Windows Domain"), val => \$netc->{WINDOMAIN} },
- { label => N("Domain Admin User Name"), val => \$authentication->{winuser} },
- { label => N("Domain Admin Password"), val => \$authentication->{winpass}, hidden => 1 },
- { label => N("Use Idmap for store UID/SID "), val => \$anonymous, type => 'bool' },
- { label => N("Default Idmap "), val => \$authentication->{AD_users_idmap}, disabled => sub { $anonymous } },
- ]) or return;
- }
- $authentication->{$kind} ||= 1;
- 1;
-}
-
-sub ask_root_password_and_authentication {
- my ($in, $netc, $superuser, $authentication, $meta_class, $security) = @_;
-
- my $kind = to_kind($authentication);
- my @kinds = authentication::kinds($in->do_pkgs, $meta_class);
-
- $in->ask_from_({
- title => N("Set administrator (root) password and network authentication methods"),
- messages => N("Set administrator (root) password"),
- advanced_label => N("Authentication method"),
- advanced_messages => kind2description(@kinds),
- interactive_help_id => "setRootPassword",
- cancel => ($security <= 2 ?
- #-PO: keep this short or else the buttons will not fit in the window
- N("No password") : ''),
- focus_first => 1,
- callbacks => {
- complete => sub {
- $superuser->{password} eq $superuser->{password2} or $in->ask_warn('', [ N("The passwords do not match"), N("Please try again") ]), return 1,0;
- length $superuser->{password} < 2 * $security
- and $in->ask_warn('', N("This password is too short (it must be at least %d characters long)", 2 * $security)), return 1,0;
- return 0;
- } } }, [
-{ label => N("Password"), val => \$superuser->{password}, hidden => 1 },
-{ label => N("Password (again)"), val => \$superuser->{password2}, hidden => 1 },
-{ label => N("Authentication"), val => \$kind, type => 'list', list => \@kinds, format => \&authentication::kind2name, advanced => 1 },
- ]) or delete $superuser->{password};
-
- ask_parameters($in, $netc, $authentication, $kind) or goto &ask_root_password_and_authentication;
-}
-
-
-sub get() {
- my $system_auth = cat_("/etc/pam.d/system-auth");
- { md5 => $system_auth =~ /md5/, shadow => $system_auth =~ /shadow/ };
-}
-
-sub set {
- my ($in, $netc, $authentication, $o_when_network_is_up) = @_;
-
- my $when_network_is_up = $o_when_network_is_up || sub { my ($f) = @_; $f->() };
-
- enable_shadow() if $authentication->{shadow};
-
- my $kind = authentication::to_kind($authentication);
-
- log::l("authentication::set $kind");
-
- my $pam_modules = $kind2pam_kind{$kind} or log::l("kind2pam_kind does not know $kind");
- $pam_modules ||= [];
- sshd_config_UsePAM(@$pam_modules > 0);
- set_pam_authentication(@$pam_modules);
-
- my $nsswitch = $kind2nsswitch{$kind} or log::l("kind2nsswitch does not know $kind");
- $nsswitch ||= [];
- set_nsswitch_priority(@$nsswitch);
-
- if ($kind eq 'local') {
- } elsif ($kind eq 'SmartCard') {
- $in->do_pkgs->install('castella-pam');
- } elsif ($kind eq 'LDAP') {
- $in->do_pkgs->install(qw(openldap-clients nss_ldap pam_ldap autofs));
-
- my $domain = $netc->{LDAPDOMAIN} || do {
- my $s = run_program::rooted_get_stdout($::prefix, 'ldapsearch', '-x', '-h', $authentication->{LDAP_server}, '-b', '', '-s', 'base', '+');
- first($s =~ /namingContexts: (.+)/);
- } or log::l("no ldap domain found on server $authentication->{LDAP_server}"), return;
-
- update_ldap_conf(
- host => $authentication->{LDAP_server},
- base => $domain,
- nss_base_shadow => $domain . "?sub",
- nss_base_passwd => $domain . "?sub",
- nss_base_group => $domain . "?sub",
- );
- } elsif ($kind eq 'AD') {
- $in->do_pkgs->install(qw(nss_ldap pam_krb5 libsasl2-plug-gssapi));
- my $port = "389";
-
- my $ssl = {
- anonymous => 'off',
- simple => 'off',
- tls => 'start_tls',
- ssl => 'on',
- kerberos => 'off',
- }->{$authentication->{sub_kind}};
-
- if ($ssl eq 'on') {
- $port = '636';
- }
-
-
-
- update_ldap_conf(
- host => $authentication->{AD_server},
- base => domain_to_ldap_domain($authentication->{AD_domain}),
- nss_base_shadow => "$authentication->{AD_users_db}?sub",
- nss_base_passwd => "$authentication->{AD_users_db}?sub",
- nss_base_group => "$authentication->{AD_users_db}?sub",
-
- ssl => $ssl,
- sasl_mech => $authentication->{sub_kind} eq 'kerberos' ? 'GSSAPI' : '',
- port => $port,
-
- binddn => $authentication->{AD_user},
- bindpw => $authentication->{AD_password},
-
- (map_each { "nss_map_objectclass_$::a" => $::b }
- posixAccount => 'User',
- shadowAccount => 'User',
- posixGroup => 'Group',
- ),
-
-
- scope => 'sub',
- pam_login_attribute => 'sAMAccountName',
- pam_filter => 'objectclass=User',
- pam_password => 'ad',
-
-
- (map_each { "nss_map_attribute_$::a" => $::b }
- uid => 'sAMAccountName',
- uidNumber => 'msSFU30UidNumber',
- gidNumber => 'msSFU30GidNumber',
- cn => 'sAMAccountName',
- uniqueMember => 'member',
- userPassword => 'msSFU30Password',
- homeDirectory => 'msSFU30HomeDirectory',
- loginShell => 'msSFU30LoginShell',
- gecos => 'name',
- ),
- );
-
- configure_krb5_for_AD($authentication);
-
- } elsif ($kind eq 'NIS') {
- $in->do_pkgs->install(qw(ypbind autofs));
- my $domain = $netc->{NISDOMAIN};
- $domain || $authentication->{NIS_server} ne "broadcast" or die N("Can not use broadcast with no NIS domain");
- my $t = $domain ? "domain $domain" . ($authentication->{NIS_server} ne "broadcast" && " server") : "ypserver";
- substInFile {
- $_ = "#~$_" unless /^#/;
- $_ .= "$t $authentication->{NIS_server}\n" if eof;
- } "$::prefix/etc/yp.conf";
-
- #- no need to modify system-auth for nis
-
- $when_network_is_up->(sub {
- run_program::rooted($::prefix, 'nisdomainname', $domain);
- run_program::rooted($::prefix, 'service', 'ypbind', 'restart');
- }) if !$::isInstall; #- TODO: also do it during install since nis can be useful to resolve domain names. Not done because 9.2-RC
-# } elsif ($kind eq 'winbind' || $kind eq 'AD' && $authentication->{subkind} eq 'winbind') {
-
-# }) if !$::isInstall;
-#- TODO: also do it during install since nis can be useful to resolve domain names. Not done because 9.2-RC
- } elsif ($kind eq 'winbind') {
-
- my $domain = uc $netc->{WINDOMAIN};
-
- $in->do_pkgs->install('samba-winbind');
-
- require network::smb;
- network::smb::write_smb_conf($domain);
- run_program::rooted($::prefix, "chkconfig", "--level", "35", "winbind", "on");
- mkdir_p("$::prefix/home/$domain");
- run_program::rooted($::prefix, 'service', 'smb', 'restart');
- run_program::rooted($::prefix, 'service', 'winbind', 'restart');
-
- #- defer running smbpassword until the network is up
-
- $when_network_is_up->(sub {
- run_program::rooted($::prefix, 'net', 'join', $domain, '-U', $authentication->{winuser} . '%' . $authentication->{winpass});
- });
- } elsif ($kind eq 'SMBKRB') {
- $authentication->{AD_server} ||= 'ads.' . $authentication->{AD_domain};
- my $domain = uc $netc->{WINDOMAIN};
- my $realm = $authentication->{AD_domain};
-
- configure_krb5_for_AD($authentication);
- $in->do_pkgs->install('samba-winbind', 'pam_krb5', 'samba-server', 'samba-client');
-
- require network::smb;
- network::smb::write_smb_ads_conf($domain,$realm);
- run_program::rooted($::prefix, "chkconfig", "--level", "35", "winbind", "on");
- mkdir_p("$::prefix/home/$domain");
- run_program::rooted($::prefix, 'net', 'time', 'set', '-S', $authentication->{AD_server});
- run_program::rooted($::prefix, 'service', 'smb', 'restart');
- run_program::rooted($::prefix, 'service', 'winbind', 'restart');
-
- $when_network_is_up->(sub {
- run_program::rooted($::prefix, 'net', 'ads', 'join', '-U', $authentication->{winuser} . '%' . $authentication->{winpass});
- });
- }
-}
-
-
-sub pam_modules() {
- 'pam_ldap', 'pam_castella', 'pam_winbind', 'pam_krb5', 'pam_mkhomedir';
-}
-sub pam_module_from_path {
- $_[0] && $_[0] =~ m|(/lib/security/)?(pam_.*)\.so| && $2;
-}
-sub pam_module_to_path {
- "$_[0].so";
-}
-sub pam_format_line {
- my ($type, $control, $module, @para) = @_;
- sprintf("%-11s %-13s %s\n", $type, $control, join(' ', pam_module_to_path($module), @para));
-}
-
-sub get_raw_pam_authentication() {
- my %before_deny;
- foreach (cat_("$::prefix/etc/pam.d/system-auth")) {
- my ($type, $control, $module, @para) = split;
- if ($module = pam_module_from_path($module)) {
- $before_deny{$type}{$module} = \@para if $control eq 'sufficient' && member($module, pam_modules());
- }
- }
- \%before_deny;
-}
-
-sub set_pam_authentication {
- my (@authentication_kinds) = @_;
-
- my %special = (
- auth => \@authentication_kinds,
- account => [ difference2(\@authentication_kinds, [ 'castella' ]) ],
- password => [ intersection(\@authentication_kinds, [ 'ldap', 'krb5' ]) ],
- );
- my %before_first = (
- session =>
- intersection(\@authentication_kinds, [ 'winbind', 'krb5', 'ldap' ])
- ? pam_format_line('session', 'optional', 'pam_mkhomedir', 'skel=/etc/skel/', 'umask=0022') :
- member('castella', @authentication_kinds)
- ? pam_format_line('session', 'optional', 'pam_castella') : '',
- );
- my %after_deny = (
- session => member('krb5', @authentication_kinds) ? pam_format_line('session', 'optional', 'pam_krb5') : '',
- );
-
- substInFile {
- my ($type, $control, $module, @para) = split;
- if ($module = pam_module_from_path($module)) {
- if (member($module, pam_modules())) {
- #- first removing previous config
- $_ = '';
- }
- if ($module eq 'pam_unix' && $special{$type}) {
- my @para_for_last =
- $type eq 'auth' ? qw(likeauth nullok use_first_pass) :
- $type eq 'account' ? qw(use_first_pass) : @{[]};
- @para = difference2(\@para, \@para_for_last);
-
- my ($before_noask, $ask) = partition { $_ eq 'castella' } @{$special{$type}};
- my ($before, $after) = partition { $_ eq 'krb5' } @$ask;
-
- if (!@$ask) {
- @para_for_last = grep { $_ ne 'use_first_pass' } @para_for_last;
- }
-
- my @l = ((map { [ "pam_$_" ] } @$before_noask, @$before),
- [ 'pam_unix', @para ],
- (map { [ "pam_$_" ] } @$after),
- );
- push @{$l[-1]}, @para_for_last;
- $_ = join('', map { pam_format_line($type, 'sufficient', @$_) } @l);
-
- if ($control eq 'required') {
- #- ensure a pam_deny line is there
- ($control, $module, @para) = ('required', 'pam_deny');
- $_ .= pam_format_line($type, $control, $module);
- }
- }
- if (my $s = delete $before_first{$type}) {
- $_ = $s . $_;
- }
- if ($control eq 'required' && member($module, 'pam_deny', 'pam_unix')) {
- if (my $s = delete $after_deny{$type}) {
- $_ .= $s;
- }
- }
- }
- } "$::prefix/etc/pam.d/system-auth";
-}
-
-sub get_pam_authentication_kinds() {
- my $before_deny = get_raw_pam_authentication();
- map { s/pam_//; $_ } keys %{$before_deny->{auth}};
-}
-
-sub set_nsswitch_priority {
- my (@kinds) = @_;
- my @known = qw(nis ldap winbind);
- substInFile {
- if (my ($database, $l) = /^(\s*(?:passwd|shadow|group|automount):\s*)(.*)/) {
- my @l = difference2([ split(' ', $l) ], \@known);
- $_ = $database . join(' ', uniq('files', @kinds, @l)) . "\n";
- }
- } "$::prefix/etc/nsswitch.conf";
-}
-
-my $special_ldap_cmds = join('|', 'nss_map_attribute', 'nss_map_objectclass');
-sub _after_read_ldap_line {
- my ($s) = @_;
- $s =~ s/\b($special_ldap_cmds)\s*/$1 . '_'/e;
- $s;
-}
-sub _pre_write_ldap_line {
- my ($s) = @_;
- $s =~ s/\b($special_ldap_cmds)_/$1 . ' '/e;
- $s;
-}
-
-sub read_ldap_conf() {
- my %conf = map {
- s/^\s*#.*//;
- if_(_after_read_ldap_line($_) =~ /(\S+)\s+(.*)/, $1 => $2);
- } cat_("$::prefix/etc/ldap.conf");
- \%conf;
-}
-
-sub update_ldap_conf {
- my (%conf) = @_;
-
- substInFile {
- my ($cmd) = _after_read_ldap_line($_) =~ /^\s*#?\s*(\w+)\s/;
- if ($cmd && exists $conf{$cmd}) {
- my $val = $conf{$cmd};
- $conf{$cmd} = '';
- $_ = $val ? _pre_write_ldap_line("$cmd $val\n") : /^\s*#/ ? $_ : "#$_";
- }
- if (eof) {
- foreach my $cmd (keys %conf) {
- my $val = $conf{$cmd} or next;
- $_ .= _pre_write_ldap_line("$cmd $val\n");
- }
- }
- } "$::prefix/etc/ldap.conf";
-}
-
-sub configure_krb5_for_AD {
- my ($authentication) = @_;
-
- my $uc_domain = uc $authentication->{AD_domain};
- my $krb5_conf_file = "$::prefix/etc/krb5.conf";
-
- krb5_conf_update($krb5_conf_file,
- libdefaults => (
- default_realm => $uc_domain,
- dns_lookup_realm => $authentication->{AD_server} ? 'false' : 'true',
- dns_lookup_kdc => $authentication->{AD_server} ? 'false' : 'true',
- ));
-
- my @sections = (
- realms => <<EOF,
- $uc_domain = {
- kdc = $authentication->{AD_server}:88
- admin_server = $authentication->{AD_server}:749
- default_domain = $authentication->{AD_domain}
- }
-EOF
- domain_realm => <<EOF,
- .$authentication->{AD_domain} = $uc_domain
-EOF
- kdc => <<'EOF',
- profile = /etc/kerberos/krb5kdc/kdc.conf
-EOF
- pam => <<'EOF',
- debug = false
- ticket_lifetime = 36000
- renew_lifetime = 36000
- forwardable = true
- krb4_convert = false
-EOF
- login => <<'EOF',
- krb4_convert = false
- krb4_get_tickets = false
-EOF
- );
- foreach (group_by2(@sections)) {
- my ($section, $txt) = @$_;
- krb5_conf_overwrite_category($krb5_conf_file, $section => $authentication->{AD_server} ? $txt : '');
- }
-}
-
-sub krb5_conf_overwrite_category {
- my ($file, $category, $new_val) = @_;
-
- my $done;
- substInFile {
- if (my $i = /^\s*\[\Q$category\E\]/i ... /^\[/) {
- if ($new_val) {
- if ($i == 1) {
- $_ .= $new_val;
- $done = 1;
- } elsif ($i =~ /E/) {
- $_ = "\n$_";
- } else {
- $_ = '';
- }
- } else {
- $_ = '' if $i !~ /E/;
- }
- }
- #- if category has not been found above.
- if (eof && $new_val && !$done) {
- $_ .= "\n[$category]\n$new_val";
- }
- } $file;
-}
-
-sub krb5_conf_update {
- my ($file, $category, %subst_) = @_;
-
- my %subst = map { lc($_) => [ $_, $subst_{$_} ] } keys %subst_;
-
- my $s;
- foreach (MDK::Common::File::cat_($file), "[NOCATEGORY]\n") {
- if (my $i = /^\s*\[\Q$category\E\]/i ... /^\[/) {
- if ($i =~ /E/) { #- for last line of category
- chomp $s; $s .= "\n";
- $s .= " $_->[0] = $_->[1]\n" foreach values %subst;
- %subst = ();
- } elsif (/^\s*([^=]*?)\s*=/) {
- if (my $e = delete $subst{lc($1)}) {
- $_ = " $1 = $e->[1]\n";
- }
- }
- }
- $s .= $_ if !/^\Q[NOCATEGORY]/;
- }
-
- #- if category has not been found above.
- if (keys %subst) {
- chomp $s;
- $s .= "\n[$category]\n";
- $s .= " $_->[0] = $_->[1]\n" foreach values %subst;
- }
-
- MDK::Common::File::output($file, $s);
-
-}
-
-sub sshd_config_UsePAM {
- my ($UsePAM) = @_;
- my $sshd = "$::prefix/etc/ssh/sshd_config";
- -e $sshd or return;
-
- my $val = "UsePAM " . bool2yesno($UsePAM);
- substInFile {
- $val = '' if s/^#?UsePAM.*/$val/;
- $_ .= "$val\n" if eof && $val;
- } $sshd;
-}
-
-sub query_srv_names {
- my ($domain) = @_;
-
- eval { require Net::DNS; 1 } or return;
- my $res = Net::DNS::Resolver->new;
- my $query = $res->query("_ldap._tcp.$domain", 'srv') or return;
- map { $_->target } $query->answer;
-}
-
-sub enable_shadow() {
- run_program::rooted($::prefix, "pwconv") or log::l("pwconv failed");
- run_program::rooted($::prefix, "grpconv") or log::l("grpconv failed");
-}
-
-sub user_crypted_passwd {
- my ($u, $isMD5) = @_;
- if ($u->{password}) {
- crypt($u->{password}, $isMD5 ? '$1$' . salt(8) : salt(2));
- } else {
- $u->{pw} || '';
- }
-}
-
-sub set_root_passwd {
- my ($superuser, $authentication) = @_;
- $superuser->{name} = 'root';
- write_passwd_user($superuser, $authentication->{md5});
- delete $superuser->{name};
-}
-
-sub write_passwd_user {
- my ($u, $isMD5) = @_;
-
- $u->{pw} = user_crypted_passwd($u, $isMD5);
- $u->{shell} ||= '/bin/bash';
-
- substInFile {
- my $l = unpack_passwd($_);
- if ($l->{name} eq $u->{name}) {
- add2hash_($u, $l);
- $_ = pack_passwd($u);
- $u = {};
- }
- if (eof && $u->{name}) {
- $_ .= pack_passwd($u);
- }
- } "$::prefix/etc/passwd";
-}
-
-my @etc_pass_fields = qw(name pw uid gid realname home shell);
-sub unpack_passwd {
- my ($l) = @_;
- my %l; @l{@etc_pass_fields} = split ':', chomp_($l);
- \%l;
-}
-sub pack_passwd {
- my ($l) = @_;
- join(':', @$l{@etc_pass_fields}) . "\n";
-}
-
-1;
-
diff --git a/perl-install/bootloader.pm b/perl-install/bootloader.pm
deleted file mode 100644
index dea939d0e..000000000
--- a/perl-install/bootloader.pm
+++ /dev/null
@@ -1,1442 +0,0 @@
-package bootloader; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(%vga_modes);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use partition_table;
-use fs::type;
-use fs::get;
-use log;
-use any;
-use devices;
-use loopback;
-use detect_devices;
-use partition_table::raw;
-use run_program;
-use modules;
-
-
-#-#####################################################################################
-#- Functions
-#-#####################################################################################
-my $vmlinuz_regexp = 'vmlinuz|win4lin';
-my $decompose_vmlinuz_name = qr/((?:$vmlinuz_regexp).*?)-(\d+\.\d+.*)/;
-
-sub expand_vmlinuz_symlink {
- my ($vmlinuz) = @_;
- my $f = $::prefix . ($vmlinuz =~ m!^/! ? $vmlinuz : "/boot/$vmlinuz");
- -l $f ? readlink($f) : $vmlinuz;
-}
-
-sub installed_vmlinuz_raw() { grep { /^($vmlinuz_regexp)/ } all("$::prefix/boot") }
-sub installed_vmlinuz() { grep { ! -l "$::prefix/boot/$_" } installed_vmlinuz_raw() }
-sub vmlinuz2version {
- my ($vmlinuz) = @_;
- expand_vmlinuz_symlink($vmlinuz) =~ /$decompose_vmlinuz_name/ && $2;
-}
-sub vmlinuz2basename {
- my ($vmlinuz) = @_;
- expand_vmlinuz_symlink($vmlinuz) =~ /$decompose_vmlinuz_name/ && $1;
-}
-sub basename2initrd_basename {
- my ($basename) = @_;
- $basename =~ s!vmlinuz-?!!; #- here we do not use $vmlinuz_regexp since we explictly want to keep all that is not "vmlinuz"
- 'initrd' . ($basename ? "-$basename" : '');
-}
-sub kernel_str2vmlinuz_long {
- my ($kernel) = @_;
- $kernel->{basename} . '-' . $kernel->{version};
-}
-sub kernel_str2initrd_long {
- my ($kernel) = @_;
- basename2initrd_basename($kernel->{basename}) . '-' . $kernel->{version} . '.img';
-}
-sub kernel_str2vmlinuz_short {
- my ($kernel) = @_;
- if ($kernel->{use_long_name}) {
- kernel_str2vmlinuz_long($kernel);
- } else {
- my $ext = $kernel->{ext} ? "-$kernel->{ext}" : '';
- $kernel->{basename} . $ext;
- }
-}
-sub kernel_str2initrd_short {
- my ($kernel) = @_;
- if ($kernel->{use_long_name}) {
- kernel_str2initrd_long($kernel);
- } else {
- my $ext = $kernel->{ext} ? "-$kernel->{ext}" : '';
- basename2initrd_basename($kernel->{basename}) . $ext . '.img';
- }
-}
-
-sub vmlinuz2kernel_str {
- my ($vmlinuz) = @_;
- my ($basename, $version) = expand_vmlinuz_symlink($vmlinuz) =~ /$decompose_vmlinuz_name/ or return;
- {
- basename => $basename,
- version => $version,
- $version =~ /(.*mdk)-?(.*)/ ? (ext => $2, version_no_ext => $1) : (version_no_ext => $version),
- };
-}
-sub kernel_str2label {
- my ($kernel, $o_use_long_name) = @_;
- my $base = $kernel->{basename} eq 'vmlinuz' ? 'linux' : $kernel->{basename};
- $o_use_long_name || $kernel->{use_long_name} ?
- sanitize_ver("$base-$kernel->{version}") :
- $kernel->{ext} ? "$base-$kernel->{ext}" : $base;
-}
-
-sub get {
- my ($vmlinuz, $bootloader) = @_;
- $_->{kernel_or_dev} && $_->{kernel_or_dev} eq $vmlinuz and return $_ foreach @{$bootloader->{entries}};
- undef;
-}
-sub get_label {
- my ($label, $bootloader) = @_;
- $_->{label} && lc(make_label_lilo_compatible($_->{label})) eq lc(make_label_lilo_compatible($label)) and return $_ foreach @{$bootloader->{entries}};
- undef;
-}
-
-sub mkinitrd {
- my ($kernel_version, $entry) = @_;
-
- my $initrd = $entry->{initrd};
- $::testing || -e "$::prefix/$initrd" and return 1;
-
- my $loop_boot = loopback::prepare_boot();
-
- modules::load('loop');
- my @options = (
- "-v", "-f", $initrd, "--ifneeded", $kernel_version,
- if_($entry->{initrd_options}, split(' ', $entry->{initrd_options})),
- );
- if (!run_program::rooted($::prefix, 'mkinitrd', @options)) {
- unlink("$::prefix/$initrd");
- die "mkinitrd failed:\n(mkinitrd @options))";
- }
- add_boot_splash($entry->{initrd}, $entry->{vga});
-
- loopback::save_boot($loop_boot);
-
- -e "$::prefix/$initrd";
-}
-
-sub remove_boot_splash {
- my ($initrd) = @_;
- run_program::rooted($::prefix, '/usr/share/bootsplash/scripts/remove-boot-splash', $initrd);
-}
-sub add_boot_splash {
- my ($initrd, $vga) = @_;
-
- $vga or return;
-
- require Xconfig::resolution_and_depth;
- if (my $res = Xconfig::resolution_and_depth::from_bios($vga)) {
- run_program::rooted($::prefix, '/usr/share/bootsplash/scripts/make-boot-splash', $initrd, $res->{X});
- } else {
- log::l("unknown vga bios mode $vga");
- }
-}
-
-sub read {
- my ($all_hds) = @_;
- my $fstab = [ fs::get::fstab($all_hds) ];
- foreach my $main_method (main_method_choices()) {
- my $f = $bootloader::{"read_$main_method"} or die "unknown bootloader method $main_method (read)";
- my $bootloader = $f->($fstab);
-
- my @devs = $bootloader->{boot};
- if ($bootloader->{'raid-extra-boot'} =~ /mbr/ &&
- (my $md = fs::get::device2part($bootloader->{boot}, $all_hds->{raids}))) {
- @devs = map { $_->{rootDevice} } @{$md->{disks}};
- } elsif ($bootloader->{'raid-extra-boot'} =~ m!/dev/!) {
- @devs = split(',', $bootloader->{'raid-extra-boot'});
- }
-
- my ($type) = map {
- if (m!/fd\d+$!) {
- warn "not checking the method on floppy, assuming $main_method is right\n";
- $main_method;
- } elsif ($main_method eq 'yaboot') {
- #- not checking on ppc, there's only yaboot anyway :)
- $main_method;
- } elsif ($main_method eq 'cromwell') {
- #- XBox
- $main_method;
- } elsif (my $type = partition_table::raw::typeOfMBR($_)) {
- warn "typeOfMBR $type on $_ for method $main_method\n" if $ENV{DEBUG};
- $type;
- } else { () }
- } @devs;
-
- if ($type eq $main_method) {
- my @prefered_entries = map { get_label($_, $bootloader) } $bootloader->{default}, 'linux';
-
- if (my $default = find { $_ && $_->{type} eq 'image' } (@prefered_entries, @{$bootloader->{entries}})) {
- $bootloader->{default_vga} = $default->{vga};
- $bootloader->{perImageAppend} ||= $default->{append};
- log::l("perImageAppend is now $bootloader->{perImageAppend}");
- }
- return $bootloader;
- }
- }
-}
-
-sub read_grub {
- my ($fstab) = @_;
- my $global = 1;
- my ($e, %b);
-
- my $grub2dev = read_grub_device_map();
-
- my $menu_lst_file = "$::prefix/boot/grub/menu.lst";
- -e $menu_lst_file or return;
-
- foreach (cat_($menu_lst_file)) {
- chomp;
- s/^\s*//; s/\s*$//;
- next if /^#/ || /^$/;
- my ($keyword, $v) = split(' ', $_, 2) or
- warn qq(unknown line in /boot/grub/menu.lst: "$_"\n), next;
-
- if ($keyword eq 'title') {
- push @{$b{entries}}, $e = { label => $v };
- $global = 0;
- } elsif ($global) {
- $b{$keyword} = $v eq '' ? 1 : grub2file($v, $grub2dev, $fstab);
- } else {
- if ($keyword eq 'kernel') {
- $e->{type} = 'image';
- (my $kernel, $e->{append}) = split(' ', $v, 2);
- $e->{root} = $1 if $e->{append} =~ s/root=(\S*)\s*//;
- $e->{kernel_or_dev} = grub2file($kernel, $grub2dev, $fstab);
- } elsif ($keyword eq 'root') {
- $e->{type} = 'other';
- if ($v !~ /,/) {
- $e->{unsafe} = 1;
- }
- $e->{kernel_or_dev} = grub2dev($v, $grub2dev);
- $e->{append} = "";
- } elsif ($keyword eq 'initrd') {
- $e->{initrd} = grub2file($v, $grub2dev, $fstab);
- } elsif ($keyword eq 'map') {
- $e->{mapdrive}{$2} = $1 if $v =~ m/\((.*)\) \((.*)\)/;
- }
- }
- }
- foreach (cat_("$::prefix/boot/grub/install.sh")) {
- $b{boot} = grub2dev($1, $grub2dev) if /\s+d\s+(\(.*?\))/;
- }
-
- #- sanitize
- foreach (@{$b{entries}}) {
- my ($vga, $other) = partition { /^vga=/ } split(' ', $_->{append});
- if (@$vga) {
- $_->{vga} = $vga->[0] =~ /vga=(.*)/ && $1;
- $_->{append} = join(' ', @$other);
- }
- }
-
- $b{nowarn} = 1;
- # handle broken installkernel -r:
- if (@{$b{entries}}) {
- $b{default} = min($b{default}, scalar(@{$b{entries}}) - 1);
- $b{default} = $b{entries}[$b{default}]{label};
- }
- $b{method} = 'grub';
-
- \%b;
-}
-
-sub yaboot2dev {
- my ($of_path) = @_;
- find { dev2yaboot($_) eq $of_path } map { "/dev/$_->{dev}" } devices::read_proc_partitions_raw();
-}
-
-# assumes file is in /boot
-# to do: use yaboot2dev for files as well
-#- example of of_path: /pci@f4000000/ata-6@d/disk@0:3,/initrd-2.6.8.1-8mdk.img
-sub yaboot2file {
- my ($of_path) = @_;
-
- if ($of_path =~ /,/) {
- "$::prefix/boot/" . basename($of_path);
- } else {
- yaboot2dev($of_path);
- }
-}
-
-sub read_cromwell() {
- my %b;
- $b{method} = 'cromwell';
- \%b;
-}
-sub read_yaboot() { &read_lilo }
-sub read_lilo() {
- my $file = sprintf("$::prefix/etc/%s.conf", arch() =~ /ppc/ ? 'yaboot' : 'lilo');
- my $global = 1;
- my ($e, $v);
- my %b;
- -e $file or return;
- foreach (cat_($file)) {
- next if /^\s*#/ || /^\s*$/;
- ($_, $v) = /^\s*([^=\s]+)\s*(?:=\s*(.*?))?\s*$/ or log::l("unknown line in $file: $_"), next;
-
- if (/^(?:image|other|macos|macosx|bsd|darwin)$/) {
- $v = yaboot2file($v) if arch() =~ /ppc/;
- push @{$b{entries}}, $e = { type => $_, kernel_or_dev => $v };
- $global = 0;
- } elsif ($global) {
- if ($_ eq 'disk' && $v =~ /(\S+)\s+bios\s*=\s*(\S+)/) {
- $b{bios}{$1} = $2;
- } elsif ($_ eq 'bios') {
- $b{bios}{$b{disk}} = $v;
- } elsif ($_ eq 'init-message') {
- $v =~ s/\\n//g;
- $v =~ s/"//g;
- $b{'init-message'} = $v;
- } else {
- $b{$_} = $v eq '' ? 1 : $v;
- }
- } else {
- if ((/map-drive/ .. /to/) && /to/) {
- $e->{mapdrive}{$e->{'map-drive'}} = $v;
- } else {
- if (arch() =~ /ppc/ && $_ eq 'initrd') {
- $v = yaboot2file($v);
- }
- $e->{$_} = $v || 1 if !member($_, 'read-only');
- }
- }
- }
-
- sub remove_quotes_and_spaces {
- local ($_) = @_;
- s/^\s*//; s/\s*$//;
- s/^"(.*?)"$/$1/;
- s/^\s*//; s/\s*$//; #- do it again for append=" foo"
- $_;
- }
-
- $_->{append} = remove_quotes_and_spaces($_->{append}) foreach \%b, @{$b{entries}};
- $_->{label} = remove_quotes_and_spaces($_->{label}) foreach @{$b{entries}};
- $b{default} = remove_quotes_and_spaces($b{default}) if $b{default};
- if (arch() =~ /ppc/) {
- $b{method} = 'yaboot';
- } else {
- delete $b{timeout} unless $b{prompt};
- $b{timeout} = $b{timeout} / 10 if $b{timeout};
- $b{method} = 'lilo-' . (member($b{install}, 'text', 'menu', 'graphic') ? $b{install} : 'graphic');
- delete $b{message};
- }
-
- #- cleanup duplicate labels & bad entries (in case file is corrupted)
- my %seen;
- @{$b{entries}} =
- grep { !$seen{$_->{label}}++ }
- grep { $_->{type} ne 'image' || -e "$::prefix$_->{kernel_or_dev}" } @{$b{entries}};
-
- \%b;
-}
-
-sub suggest_onmbr {
- my ($hd) = @_;
-
- my ($onmbr, $unsafe) = (1, 1);
-
- if (my $type = partition_table::raw::typeOfMBR($hd->{device})) {
- if (member($type, qw(dos dummy empty))) {
- $unsafe = 0;
- } elsif (!member($type, qw(lilo grub))) {
- $onmbr = 0;
- }
- log::l("bootloader::suggest_onmbr: type $type, onmbr $onmbr, unsafe $unsafe");
- }
- ($onmbr, $unsafe);
-}
-
-sub allowed_boot_parts {
- my ($bootloader, $all_hds) = @_;
- (
- @{$all_hds->{hds}},
- if_($bootloader->{method} =~ /lilo/,
- grep { $_->{level} eq '1' } @{$all_hds->{raids}}
- ),
- (grep { !isFat_or_NTFS($_) } fs::get::hds_fstab(@{$all_hds->{hds}})),
- detect_devices::floppies(),
- );
-}
-
-sub same_entries {
- my ($a, $b) = @_;
-
- foreach (uniq(keys %$a, keys %$b)) {
- if (member($_, 'label', 'append', 'mapdrive')) {
- next;
- } else {
- next if $a->{$_} eq $b->{$_};
-
- my ($inode_a, $inode_b) = map { (stat "$::prefix$_")[1] } ($a->{$_}, $b->{$_});
- next if $inode_a && $inode_b && $inode_a == $inode_b;
- }
-
- log::l("entries $a->{label} do not have same $_: $a->{$_} ne $b->{$_}");
- return;
- }
- 1;
-}
-
-sub add_entry {
- my ($bootloader, $v) = @_;
-
- my $to_add = $v;
- my $label = $v->{label};
- for (my $i = 0; $i < 10;) {
- my $conflicting = get_label($label, $bootloader);
-
- $to_add->{label} = $label;
-
- if ($conflicting) {
- #- replacing $conflicting with $to_add
- @{$bootloader->{entries}} = map { $_ == $conflicting ? $to_add : $_ } @{$bootloader->{entries}};
- } else {
- #- we have found an unused label
- push @{$bootloader->{entries}}, $to_add;
- }
-
- if (!$conflicting || same_entries($conflicting, $to_add)) {
- log::l("current labels: " . join(" ", map { $_->{label} } @{$bootloader->{entries}}));
- return $v;
- }
- $to_add = $conflicting;
-
- if ($to_add->{label} eq 'linux') {
- expand_entry_symlinks($bootloader, $to_add);
- $label = kernel_str2label(vmlinuz2kernel_str($to_add->{kernel_or_dev}), 'use_long_name');
- } else {
- $label =~ s/^alt\d*_//;
- $label = 'alt' . ($i++ ? $i : '') . "_$label";
- }
- }
- die 'add_entry';
-}
-
-sub expand_entry_symlinks {
- my ($bootloader, $entry) = @_;
-
- foreach my $kind ('kernel_or_dev', 'initrd') {
- my $old_long_name = $bootloader->{old_long_names} && $bootloader->{old_long_names}{$entry->{$kind}} or next;
-
- #- replace all the {$kind} using this symlink to the real file
- log::l("replacing $entry->{$kind} with $old_long_name for bootloader label $entry->{label}");
- $entry->{$kind} = $old_long_name;
- }
-}
-
-sub _do_the_symlink {
- my ($bootloader, $link, $long_name) = @_;
-
- my $existing_link = readlink("$::prefix$link");
- if ($existing_link && $existing_link eq $long_name) {
- #- nothing to do :)
- return;
- }
-
- #- the symlink is going to change!
- #- replace all the {$kind} using this symlink to the real file
- my $old_long_name = $existing_link =~ m!^/! ? $existing_link : "/boot/$existing_link";
- if (-e "$::prefix$old_long_name") {
- $bootloader->{old_long_names}{$link} = $old_long_name;
- } else {
- log::l("ERROR: $link points to $old_long_name which does not exist");
- }
-
- #- changing the symlink
- symlinkf($long_name, "$::prefix$link")
- or cp_af("$::prefix/boot/$long_name", "$::prefix$link");
-}
-
-sub add_kernel {
- my ($bootloader, $kernel_str, $v, $b_nolink, $b_no_initrd) = @_;
-
- add2hash($v,
- {
- type => 'image',
- label => kernel_str2label($kernel_str),
- });
-
- #- normalize append and handle special options
- {
- my ($simple, $dict) = unpack_append("$bootloader->{perImageAppend} $v->{append}");
- if (-e "$::prefix/sbin/udev" && $kernel_str->{version} =~ /(2\.\d+\.\d+)/ && c::rpmvercmp($1, '2.6.8') >= 0) {
- log::l("it is a recent kernel, so we remove any existing devfs= kernel option to enable udev");
- @$dict = grep { $_->[0] ne 'devfs' } @$dict;
- }
- $v->{append} = pack_append($simple, $dict);
- }
-
- #- new versions of yaboot do not handle symlinks
- $b_nolink ||= arch() =~ /ppc/;
-
- $b_nolink ||= $kernel_str->{use_long_name};
-
- my $vmlinuz_long = kernel_str2vmlinuz_long($kernel_str);
- $v->{kernel_or_dev} = "/boot/$vmlinuz_long";
- -e "$::prefix$v->{kernel_or_dev}" or log::l("unable to find kernel image $::prefix$v->{kernel_or_dev}"), return;
- if (!$b_nolink) {
- $v->{kernel_or_dev} = '/boot/' . kernel_str2vmlinuz_short($kernel_str);
- _do_the_symlink($bootloader, $v->{kernel_or_dev}, $vmlinuz_long);
- }
- log::l("adding $v->{kernel_or_dev}");
-
- if (!$b_no_initrd) {
- my $initrd_long = kernel_str2initrd_long($kernel_str);
- $v->{initrd} = "/boot/$initrd_long";
- mkinitrd($kernel_str->{version}, $v) or undef $v->{initrd};
- if ($v->{initrd} && !$b_nolink) {
- $v->{initrd} = '/boot/' . kernel_str2initrd_short($kernel_str);
- _do_the_symlink($bootloader, $v->{initrd}, $initrd_long);
- }
- }
-
- add_entry($bootloader, $v);
-}
-
-sub duplicate_kernel_entry {
- my ($bootloader, $new_label) = @_;
-
- get_label($new_label, $bootloader) and return;
-
- my $entry = { %{ get_label('linux', $bootloader) }, label => $new_label };
- add_entry($bootloader, $entry);
-}
-
-my $uniq_dict_appends = join('|', qw(devfs acpi pci resume PROFILE XFree));
-
-sub unpack_append {
- my ($s) = @_;
- my @l = split(' ', $s);
- [ grep { !/=/ } @l ], [ map { if_(/(.*?)=(.*)/, [$1, $2]) } @l ];
-}
-sub pack_append {
- my ($simple, $dict) = @_;
-
- #- normalize
- $simple = [ reverse(uniq(reverse @$simple)) ];
- $dict = [ reverse(uniq_ {
- my ($k, $v) = @$_;
- $k =~ /^($uniq_dict_appends)$/ ? $k : "$k=$v";
- } reverse @$dict) ];
-
- join(' ', @$simple, map { "$_->[0]=$_->[1]" } @$dict);
-}
-
-sub normalize_append {
- my ($s) = @_;
- my ($simple, $dict) = unpack_append($s);
- pack_append($simple, $dict);
-}
-
-sub modify_append {
- my ($b, $f) = @_;
-
- my @l = grep { $_->{type} eq 'image' && !($::isStandalone && $_->{label} eq 'failsafe') } @{$b->{entries}};
-
- foreach (\$b->{perImageAppend}, map { \$_->{append} } @l) {
- my ($simple, $dict) = unpack_append($$_);
- $f->($simple, $dict);
- $$_ = pack_append($simple, $dict);
- log::l("modify_append: $$_");
- }
-}
-
-sub append__mem_is_memsize { $_[0] =~ /^\d+[kM]?$/i }
-
-sub get_append_simple {
- my ($b, $key) = @_;
- my ($simple, $_dict) = unpack_append($b->{perImageAppend});
- member($key, @$simple);
-}
-sub get_append_with_key {
- my ($b, $key) = @_;
- my ($_simple, $dict) = unpack_append($b->{perImageAppend});
- my @l = map { $_->[1] } grep { $_->[0] eq $key } @$dict;
-
- log::l("more than one $key in $b->{perImageAppend}") if @l > 1;
- $l[0];
-}
-sub remove_append_simple {
- my ($b, $key) = @_;
- modify_append($b, sub {
- my ($simple, $_dict) = @_;
- @$simple = grep { $_ ne $key } @$simple;
- });
-}
-sub set_append_with_key {
- my ($b, $key, $val) = @_;
-
- modify_append($b, sub {
- my ($_simple, $dict) = @_;
-
- if ($val eq '') {
- @$dict = grep { $_->[0] ne $key } @$dict;
- } else {
- push @$dict, [ $key, $val ];
- }
- });
-}
-sub set_append_simple {
- my ($b, $key) = @_;
-
- modify_append($b, sub {
- my ($simple, $_dict) = @_;
- @$simple = uniq(@$simple, $key);
- });
-}
-sub may_append_with_key {
- my ($b, $key, $val) = @_;
- set_append_with_key($b, $key, $val) if !get_append_with_key($b, $key);
-}
-
-sub get_append_memsize {
- my ($b) = @_;
- my ($_simple, $dict) = unpack_append($b->{perImageAppend});
- my $e = find { $_->[0] eq 'mem' && append__mem_is_memsize($_->[1]) } @$dict;
- $e && $e->[1];
-}
-
-sub set_append_memsize {
- my ($b, $memsize) = @_;
-
- modify_append($b, sub {
- my ($_simple, $dict) = @_;
-
- @$dict = grep { $_->[0] ne 'mem' || !append__mem_is_memsize($_->[1]) } @$dict;
- push @$dict, [ mem => $memsize ] if $memsize;
- });
-}
-
-sub get_append_netprofile {
- my ($e) = @_;
- my ($simple, $dict) = unpack_append($e->{append});
- my ($p, $dict_) = partition { $_->[0] eq 'PROFILE' } @$dict;
- pack_append($simple, $dict_), $p->[0][1];
-}
-sub set_append_netprofile {
- my ($e, $append, $profile) = @_;
- my ($simple, $dict) = unpack_append($append);
- push @$dict, [ 'PROFILE', $profile ] if $profile;
- $e->{append} = pack_append($simple, $dict);
-}
-
-sub configure_entry {
- my ($entry) = @_;
- $entry->{type} eq 'image' or return;
-
- if (my $kernel_str = vmlinuz2kernel_str($entry->{kernel_or_dev})) {
- $entry->{initrd} ||= '/boot/' . kernel_str2initrd_short($kernel_str);
- mkinitrd($kernel_str->{version}, $entry) or undef $entry->{initrd};
- }
-}
-
-sub get_kernels_and_labels_before_kernel_remove {
- my ($to_remove_kernel) = @_;
- my @kernels = grep { $_ ne $to_remove_kernel } installed_vmlinuz();
- map { kernel_str2label($_) => $_ } get_kernel_labels(\@kernels);
-}
-
-sub get_kernels_and_labels {
- my ($b_prefer_24) = @_;
- get_kernel_labels([ installed_vmlinuz() ], $b_prefer_24);
-}
-
-sub get_kernel_labels {
- my ($kernels, $b_prefer_24) = @_;
-
- my @kernels_str =
- sort { c::rpmvercmp($b->{version_no_ext}, $a->{version_no_ext}) }
- grep { -d "$::prefix/lib/modules/$_->{version}" }
- map { vmlinuz2kernel_str($_) } @$kernels;
-
- if ($b_prefer_24) {
- my ($kernel_24, $other) = partition { $_->{ext} eq '' && $_->{version} =~ /^\Q2.4/ } @kernels_str;
- @kernels_str = (@$kernel_24, @$other);
- }
-
- $kernels_str[0]{ext} = '';
-
- my %labels;
- foreach (@kernels_str) {
- if ($labels{$_->{ext}}) {
- $_->{use_long_name} = 1;
- } else {
- $labels{$_->{ext}} = 1;
- }
- }
- @kernels_str;
-}
-
-# sanitize_ver: long function when it could be shorter but we are sure
-# to catch everything and can be readable if we want to
-# add new scheme name.
-# DUPLICATED from /usr/share/loader/common.pm
-sub sanitize_ver {
- my ($string) = @_;
-
- my ($name, $main_version, undef, $extraversion, $rest) =
- $string =~ m!^(.*?-)(\d+(?:\.\d+)*)(-((?:pre|rc)\d+))?(.*)$!;
-
- if (my ($mdkver, $cpu, $nproc, $mem) = $rest =~ m|-(.+)-(.+)-(.+)-(.+)|) {
- $rest = "$cpu$nproc$mem-$mdkver";
- }
- $name = '' if $name eq 'linux-';
-
- my $return = "$name$main_version$extraversion$rest";
-
- $return =~ s|\.||g;
- $return =~ s|mdk||;
- $return =~ s|64GB|64G|;
- $return =~ s|4GB|4G|;
- $return =~ s|secure|sec|;
- $return =~ s|enterprise|ent|;
-
- $return;
-}
-
-sub suggest {
- my ($bootloader, $all_hds, %options) = @_;
- my $fstab = [ fs::get::fstab($all_hds) ];
- my $root_part = fs::get::root($fstab);
- my $root = '/dev/' . (isLoopback($root_part) ? 'loop7' : $root_part->{device});
- my $boot = fs::get::root($fstab, 'boot')->{device};
- #- PPC xfs module requires enlarged initrd
- my $xfsroot = $root_part->{fs_type} eq 'xfs';
-
- my ($onmbr, $unsafe) = $bootloader->{crushMbr} ? (1, 0) : suggest_onmbr($all_hds->{hds}[0]);
- add2hash_($bootloader, arch() =~ /ppc/ ?
- {
- defaultos => "linux",
- entries => [],
- 'init-message' => "Welcome to Mandriva Linux!",
- delay => 30, #- OpenFirmware delay
- timeout => 50,
- enableofboot => 1,
- enablecdboot => 1,
- if_(detect_devices::get_mac_model() =~ /IBM/,
- boot => "/dev/sda1",
- ),
- xfsroot => $xfsroot,
- } :
- {
- bootUnsafe => $unsafe,
- entries => [],
- timeout => $onmbr && 10,
- nowarn => 1,
- if_(arch() !~ /ia64/,
- boot => "/dev/" . ($onmbr ? $all_hds->{hds}[0]{device} : $boot),
- map => "/boot/map",
- color => 'black/cyan yellow/cyan',
- ),
- });
-
- if (!$bootloader->{message} || $bootloader->{message} eq "1") {
- my $msg_en =
-#-PO: these messages will be displayed at boot time in the BIOS, use only ASCII (7bit)
-N_("Welcome to the operating system chooser!
-
-Choose an operating system from the list above or
-wait for default boot.
-
-");
- my $msg = translate($msg_en);
- #- use the english version if more than 20% of 8bits chars
- $msg = $msg_en if int(grep { $_ & 0x80 } unpack "c*", $msg) / length($msg) > 0.2;
- $bootloader->{message} = $msg;
- }
-
- add2hash_($bootloader, { memsize => $1 }) if cat_("/proc/cmdline") =~ /\bmem=(\d+[KkMm]?)(?:\s.*)?$/;
- if (my ($s, $port, $speed) = cat_("/proc/cmdline") =~ /console=(ttyS(\d),(\d+)\S*)/) {
- log::l("serial console $s $port $speed");
- set_append_with_key($bootloader, console => $s);
- any::set_login_serial_console($port, $speed);
- }
-
- my @kernels = get_kernels_and_labels() or die "no kernel installed";
-
- foreach my $kernel (@kernels) {
- my $e = add_kernel($bootloader, $kernel,
- {
- root => $root,
- if_($options{vga_fb} && $kernel->{ext} eq '', vga => $options{vga_fb}), #- using framebuffer
- if_($options{vga_fb} && $options{quiet}, append => "splash=silent"),
- });
-
- if ($options{vga_fb} && $e->{label} eq 'linux') {
- add_kernel($bootloader, $kernel, { root => $root, label => 'linux-nonfb' });
- }
- }
-
- #- remove existing libsafe, do not care if the previous one was modified by the user?
- @{$bootloader->{entries}} = grep { $_->{label} ne 'failsafe' } @{$bootloader->{entries}};
-
- add_kernel($bootloader, $kernels[0],
- { root => $root, label => 'failsafe', append => 'devfs=nomount failsafe' });
-
- if (arch() =~ /ppc/) {
- #- if we identified a MacOS partition earlier - add it
- if (defined $partition_table::mac::macos_part) {
- add_entry($bootloader,
- {
- type => "macos",
- kernel_or_dev => $partition_table::mac::macos_part
- });
- }
- } elsif (arch() !~ /ia64/) {
- #- search for dos (or windows) boot partition. Do not look in extended partitions!
- my @windows_boot_parts =
- grep { isFat_or_NTFS($_) && member(fs::type::fs_type_from_magic($_), 'vfat', 'ntfs') }
- map { @{$_->{primary}{normal}} } @{$all_hds->{hds}};
- each_index {
- add_entry($bootloader,
- {
- type => 'other',
- kernel_or_dev => "/dev/$_->{device}",
- label => 'windows' . ($::i || ''),
- table => "/dev/$_->{rootDevice}"
- });
- } @windows_boot_parts;
- }
-
- my @preferred = map { "linux-$_" } 'p3-smp-64GB', 'secure', 'enterprise', 'smp', 'i686-up-4GB';
- if (my $preferred = find { get_label($_, $bootloader) } @preferred) {
- $bootloader->{default} ||= $preferred;
- }
- $bootloader->{default} ||= "linux";
- $bootloader->{method} ||= first(method_choices($fstab));
-}
-
-sub detect_main_method {
- my ($all_hds) = @_;
- my $bootloader = &read($all_hds);
- $bootloader && main_method($bootloader->{method});
-}
-
-sub main_method {
- my ($method) = @_;
- $method =~ /(\w+)/ && $1;
-}
-
-sub config_files() {
- my %files = (
- lilo => '/etc/lilo.conf',
- grub => '/boot/grub/menu.lst',
- grub_install => '/boot/grub/install.sh',
- );
-
- map_each {
- my $content = cat_("$::prefix/$::b");
- { main_method => main_method($::a), name => $::a, file => $::b, content => $content };
- } %files;
-}
-
-sub method2text {
- my ($method) = @_;
- +{
- 'lilo-graphic' => N("LILO with graphical menu"),
- 'lilo-menu' => N("LILO with text menu"),
- 'grub' => N("Grub"),
- 'yaboot' => N("Yaboot"),
- }->{$method};
-}
-
-sub method_choices_raw {
- my ($b_prefix_mounted) = @_;
- is_xbox() ? 'cromwell' :
- arch() =~ /ppc/ ? 'yaboot' :
- arch() =~ /ia64/ ? 'lilo' :
- (
- if_(!$b_prefix_mounted || whereis_binary('lilo', $::prefix),
- 'lilo-graphic', 'lilo-menu'),
- if_(!$b_prefix_mounted || whereis_binary('grub', $::prefix),
- 'grub'),
- );
-}
-sub method_choices {
- my ($fstab) = @_;
- my $root_part = fs::get::root($fstab);
-
- grep {
- !(/lilo/ && isLoopback($root_part))
- && !(/lilo-graphic/ && detect_devices::matching_desc__regexp('ProSavageDDR'))
- && !(/grub/ && isRAID($root_part));
- } method_choices_raw(1);
-}
-sub main_method_choices {
- my ($b_prefix_mounted) = @_;
- uniq(map { main_method($_) } method_choices_raw($b_prefix_mounted));
-}
-sub configured_main_methods() {
- my @bad_main_methods = map { if_(!$_->{content}, $_->{main_method}) } config_files();
- difference2([ main_method_choices(1) ], \@bad_main_methods);
-}
-
-sub keytable {
- my ($f) = @_;
- $f or return;
-
- if ($f !~ /\.klt$/) {
- my $file = "/boot/$f.klt";
- run_program::rooted($::prefix, "keytab-lilo.pl", ">", $file, $f) or return;
- $f = $file;
- }
- -r "$::prefix/$f" && $f;
-}
-
-
-sub create_link_source() {
- #- we simply do it for all kernels :)
- #- so this can be used in %post of kernel and also of kernel-source
- foreach (all("$::prefix/usr/src")) {
- my ($version) = /^linux-(\d+\.\d+.*)/ or next;
- foreach (glob("$::prefix/lib/modules/$version*")) {
- -d $_ or next;
- log::l("creating symlink $_/build");
- symlink "/usr/src/linux-$version", "$_/build";
- }
- }
-}
-
-sub dev2yaboot {
- my ($dev) = @_;
-
- devices::make("$::prefix$dev"); #- create it in the chroot
-
- my $of_dev;
- run_program::rooted_or_die($::prefix, "/usr/sbin/ofpath", ">", \$of_dev, $dev);
- chomp($of_dev);
- log::l("OF Device: $of_dev");
- $of_dev;
-}
-
-sub check_enough_space() {
- my $e = "$::prefix/boot/.enough_space";
- output $e, 1; -s $e or die N("not enough room in /boot");
- unlink $e;
-}
-
-sub write_yaboot {
- my ($bootloader, $all_hds) = @_;
-
- my $fstab = [ fs::get::fstab($all_hds) ];
-
- my $file2yaboot = sub {
- my ($part, $file) = fs::get::file2part($fstab, $_[0]);
- dev2yaboot('/dev/' . $part->{device}) . "," . $file;
- };
-
- #- do not write yaboot.conf for old-world macs
- my $mac_type = detect_devices::get_mac_model();
- return if $mac_type =~ /Power Macintosh/;
-
- $bootloader->{prompt} ||= $bootloader->{timeout};
-
- if ($bootloader->{message}) {
- eval { output("$::prefix/boot/message", $bootloader->{message}) }
- or $bootloader->{message} = 0;
- }
-
- my @conf;
-
- if (!get_label($bootloader->{default}, $bootloader)) {
- log::l("default bootloader entry $bootloader->{default} is invalid, choose another one");
- $bootloader->{default} = $bootloader->{entries}[0]{label};
- }
- push @conf, "# yaboot.conf - generated by DrakX/drakboot";
- push @conf, "# WARNING: do not forget to run ybin after modifying this file\n";
- push @conf, "default=" . make_label_lilo_compatible($bootloader->{default}) if $bootloader->{default};
- push @conf, sprintf('init-message="\n%s\n"', $bootloader->{'init-message'}) if $bootloader->{'init-message'};
-
- if ($bootloader->{boot}) {
- push @conf, "boot=$bootloader->{boot}";
- push @conf, "ofboot=" . dev2yaboot($bootloader->{boot}) if $mac_type !~ /IBM/;
- } else {
- die "no bootstrap partition defined.";
- }
-
- push @conf, map { "$_=$bootloader->{$_}" } grep { $bootloader->{$_} } (qw(delay timeout), if_($mac_type !~ /IBM/, 'defaultos'));
- push @conf, "install=/usr/lib/yaboot/yaboot";
- if ($mac_type =~ /IBM/) {
- push @conf, 'nonvram';
- } else {
- push @conf, 'magicboot=/usr/lib/yaboot/ofboot';
- push @conf, grep { $bootloader->{$_} } qw(enablecdboot enableofboot);
- }
- foreach my $entry (@{$bootloader->{entries}}) {
-
- if ($entry->{type} eq "image") {
- push @conf, "$entry->{type}=" . $file2yaboot->($entry->{kernel_or_dev});
- my @entry_conf;
- push @entry_conf, "label=" . make_label_lilo_compatible($entry->{label});
- push @entry_conf, "root=$entry->{root}";
- push @entry_conf, "initrd=" . $file2yaboot->($entry->{initrd}) if $entry->{initrd};
- #- xfs module on PPC requires larger initrd - say 6MB?
- push @entry_conf, "initrd-size=6144" if $bootloader->{xfsroot};
- push @entry_conf, qq(append=" $entry->{append}") if $entry->{append};
- push @entry_conf, $entry->{'read-write'} ? "read-write" : "read-only";
- push @conf, map { "\t$_" } @entry_conf;
- } else {
- my $of_dev = dev2yaboot($entry->{kernel_or_dev});
- push @conf, "$entry->{type}=$of_dev";
- }
- }
- my $f = "$::prefix/etc/yaboot.conf";
- log::l("writing yaboot config to $f");
- renamef($f, "$f.old");
- output($f, map { "$_\n" } @conf);
-}
-
-sub install_yaboot {
- my ($bootloader, $all_hds) = @_;
- log::l("Installing boot loader...");
- write_yaboot($bootloader, $all_hds);
- when_config_changed_yaboot($bootloader);
-}
-sub when_config_changed_yaboot {
- my ($bootloader) = @_;
- $::testing and return;
- if (defined $install_steps_interactive::new_bootstrap) {
- run_program::run("hformat", $bootloader->{boot}) or die "hformat failed";
- }
- my $error;
- run_program::rooted($::prefix, "/usr/sbin/ybin", "2>", \$error) or die "ybin failed: $error";
-}
-
-sub install_cromwell {
- my ($_bootloader, $_all_hds) = @_;
- log::l("XBox/Cromwell - nothing to install...");
-}
-sub write_cromwell {
- my ($_bootloader, $_all_hds) = @_;
- log::l("XBox/Cromwell - nothing to write...");
-}
-sub when_config_changed_cromwell {
- my ($_bootloader) = @_;
- log::l("XBox/Cromwell - nothing to do...");
-}
-
-sub make_label_lilo_compatible {
- my ($label) = @_;
- $label = substr($label, 0, 31); #- lilo does not handle more than 31 char long labels
- $label =~ s/ /_/g; #- lilo does not support blank character in image names, labels or aliases
- qq("$label");
-}
-
-sub write_lilo {
- my ($bootloader, $all_hds) = @_;
- $bootloader->{prompt} ||= $bootloader->{timeout};
-
- my $file2fullname = sub {
- my ($file) = @_;
- if (arch() =~ /ia64/) {
- my $fstab = [ fs::get::fstab($all_hds) ];
- (my $part, $file) = fs::get::file2part($fstab, $file);
- my %hds = map_index { $_ => "hd$::i" } map { $_->{device} }
- sort {
- my ($a_is_fat, $b_is_fat) = ($a->{fs_type} eq 'vfat', $b->{fs_type} eq 'vfat');
- $a_is_fat <=> $b_is_fat || $a->{device} cmp $b->{device};
- } @$fstab;
- $hds{$part->{device}} . ":" . $file;
- } else {
- $file;
- }
- };
-
- my @sorted_hds = sort_hds_according_to_bios($bootloader, $all_hds);
-
- if (is_empty_hash_ref($bootloader->{bios} ||= {}) && $all_hds->{hds}[0] != $sorted_hds[0]) {
- log::l("Since we're booting on $sorted_hds[0]{device}, make it bios=0x80");
- $bootloader->{bios} = { "/dev/$sorted_hds[0]{device}" => '0x80' };
- }
-
- my @conf;
-
- #- normalize: RESTRICTED is only valid if PASSWORD is set
- delete $bootloader->{restricted} if !$bootloader->{password};
- foreach my $entry (@{$bootloader->{entries}}) {
- delete $entry->{restricted} if !$entry->{password} && !$bootloader->{password};
- }
-
- if (!get_label($bootloader->{default}, $bootloader)) {
- log::l("default bootloader entry $bootloader->{default} is invalid, choose another one");
- $bootloader->{default} = $bootloader->{entries}[0]{label};
- }
- push @conf, "# File generated by DrakX/drakboot";
- push @conf, "# WARNING: do not forget to run lilo after modifying this file\n";
- push @conf, "default=" . make_label_lilo_compatible($bootloader->{default}) if $bootloader->{default};
- push @conf, map { "$_=$bootloader->{$_}" } grep { $bootloader->{$_} } qw(boot root map install vga keytable raid-extra-boot);
- push @conf, grep { $bootloader->{$_} } qw(linear geometric compact prompt nowarn restricted static-bios-codes);
- push @conf, qq(append="$bootloader->{append}") if $bootloader->{append};
- push @conf, "password=" . $bootloader->{password} if $bootloader->{password}; #- also done by msec
- push @conf, "timeout=" . round(10 * $bootloader->{timeout}) if $bootloader->{timeout};
- push @conf, "serial=" . $1 if get_append_with_key($bootloader, 'console') =~ /ttyS(.*)/;
-
- push @conf, "message=/boot/message" if arch() !~ /ia64/;
- push @conf, "menu-scheme=wb:bw:wb:bw" if arch() !~ /ia64/;
-
- push @conf, "ignore-table" if any { $_->{unsafe} && $_->{table} } @{$bootloader->{entries}};
-
- push @conf, map_each { "disk=$::a bios=$::b" } %{$bootloader->{bios}};
-
- foreach my $entry (@{$bootloader->{entries}}) {
- push @conf, "$entry->{type}=" . $file2fullname->($entry->{kernel_or_dev});
- my @entry_conf;
- push @entry_conf, "label=" . make_label_lilo_compatible($entry->{label});
-
- if ($entry->{type} eq "image") {
- push @entry_conf, "root=$entry->{root}" if $entry->{root};
- push @entry_conf, "initrd=" . $file2fullname->($entry->{initrd}) if $entry->{initrd};
- push @entry_conf, qq(append="$entry->{append}") if $entry->{append};
- push @entry_conf, "vga=$entry->{vga}" if $entry->{vga};
- push @entry_conf, $entry->{'read-write'} ? "read-write" : "read-only";
- push @entry_conf, grep { $entry->{$_} } qw(optional);
- } else {
- delete $entry->{unsafe} if $entry->{table}; #- we can't have both
- push @entry_conf, map { "$_=$entry->{$_}" } grep { $entry->{$_} } qw(table boot-as);
- push @entry_conf, grep { $entry->{$_} } qw(unsafe master-boot);
-
- if ($entry->{table}) {
- #- hum, things like table=c: are needed for some os2 cases,
- #- in that case $hd below is undef
- my $hd = fs::get::device2part($entry->{table}, $all_hds->{hds});
- if ($hd && $hd != $sorted_hds[0]) {
- #- boot off the nth drive, so reverse the BIOS maps
- my $nb = sprintf("0x%x", 0x80 + (find_index { $hd == $_ } @sorted_hds));
- $entry->{mapdrive} ||= { '0x80' => $nb, $nb => '0x80' };
- }
- }
- if ($entry->{mapdrive}) {
- push @entry_conf, map_each { "map-drive=$::a", " to=$::b" } %{$entry->{mapdrive}};
- }
- }
- push @entry_conf, "password=$entry->{password}" if $entry->{password};
- push @entry_conf, "restricted" if $entry->{restricted};
-
- push @conf, map { "\t$_" } @entry_conf;
- }
- my $f = arch() =~ /ia64/ ? "$::prefix/boot/efi/elilo.conf" : "$::prefix/etc/lilo.conf";
-
- log::l("writing lilo config to $f");
- renamef($f, "$f.old");
- output_with_perm($f, $bootloader->{password} ? 0600 : 0644, map { "$_\n" } @conf);
-}
-
-sub install_lilo {
- my ($bootloader, $all_hds) = @_;
-
- if (my ($install) = $bootloader->{method} =~ /lilo-(text|menu)/) {
- $bootloader->{install} = $install;
- } else {
- delete $bootloader->{install};
- }
- output("$::prefix/boot/message-text", $bootloader->{message}) if $bootloader->{message};
- symlinkf "message-" . ($bootloader->{method} ne 'lilo-graphic' ? 'text' : 'graphic'), "$::prefix/boot/message";
-
- write_lilo($bootloader, $all_hds);
-
- when_config_changed_lilo($bootloader);
-
- configure_kdm_BootManager('Lilo');
-}
-
-sub install_raw_lilo {
- my ($o_force_answer) = @_;
-
- my $error;
- my $answer = $o_force_answer || '';
- run_program::rooted($::prefix, "echo $answer | lilo", '2>', \$error) or die "lilo failed: $error";
-}
-
-sub when_config_changed_lilo {
- my ($bootloader) = @_;
- if (!$::testing && arch() !~ /ia64/ && $bootloader->{method} =~ /lilo/) {
- log::l("Installing boot loader on $bootloader->{boot}...");
- install_raw_lilo($bootloader->{force_lilo_answer});
- }
-}
-
-#- NB: ide is lower than scsi, this is important for sort_hds_according_to_bios()
-sub hd2bios_kind {
- my ($hd) = @_;
- lc(join('_', $hd->{bus}, $hd->{host}));
-}
-
-sub mixed_kind_of_disks {
- my ($hds) = @_;
- (uniq_ { hd2bios_kind($_) } @$hds) > 1;
-}
-
-sub sort_hds_according_to_bios {
- my ($bootloader, $all_hds) = @_;
- my $boot_hd = fs::get::device2part($bootloader->{first_hd_device} || $bootloader->{boot}, $all_hds->{hds}); #- $boot_hd is undefined when installing on floppy
- my $boot_kind = $boot_hd && hd2bios_kind($boot_hd);
-
- my $translate = sub {
- my ($hd) = @_;
- my $kind = hd2bios_kind($hd);
- $boot_hd ? ($hd == $boot_hd ? 0 : $kind eq $boot_kind ? 1 : 2) . "_$kind" : $kind;
- };
- sort { $translate->($a) cmp $translate->($b) } @{$all_hds->{hds}};
-}
-
-sub device_string2grub {
- my ($dev, $legacy_floppies, $sorted_hds) = @_;
- if (my $device = fs::get::device2part($dev, [ @$sorted_hds, fs::get::hds_fstab(@$sorted_hds) ])) {
- device2grub($device, $sorted_hds);
- } elsif (my $floppy = fs::get::device2part($dev, $legacy_floppies)) {
- my $bios = find_index { $floppy eq $_ } @$legacy_floppies;
- "(fd$bios)";
- } else {
- internal_error("unknown device $dev");
- }
-}
-sub device2grub {
- my ($device, $sorted_hds) = @_;
- my ($hd, $part_nb) =
- $device->{rootDevice} ?
- (fs::get::device2part($device->{rootDevice}, $sorted_hds), $device->{device} =~ /(\d+)$/) :
- $device;
- my $bios = find_index { $hd eq $_ } @$sorted_hds;
- my $part_string = defined $part_nb ? ',' . ($part_nb - 1) : '';
- "(hd$bios$part_string)";
-}
-
-sub read_grub_device_map() {
- my %grub2dev = map { m!\((.*)\) /dev/(.*)$! } cat_("$::prefix/boot/grub/device.map");
- \%grub2dev;
-}
-sub write_grub_device_map {
- my ($legacy_floppies, $sorted_hds) = @_;
- my $f = "$::prefix/boot/grub/device.map";
- renamef($f, "$f.old");
- output($f,
- (map_index { "(fd$::i) /dev/$_->{device}\n" } @$legacy_floppies),
- (map_index { "(hd$::i) /dev/$_->{device}\n" } @$sorted_hds));
-}
-
-sub grub2dev_and_file {
- my ($grub_file, $grub2dev, $o_block_device) = @_;
- my ($grub_dev, $rel_file) = $grub_file =~ m!\((.*?)\)/?(.*)! or return;
- my ($hd, $part) = split(',', $grub_dev);
- $part = $o_block_device ? '' : defined $part && $part + 1; #- grub wants "(hdX,Y)" where lilo just want "hdY+1"
- my $device = '/dev/' . $grub2dev->{$hd} . $part;
- $device, $rel_file;
-}
-sub grub2dev {
- my ($grub_file, $grub2dev, $o_block_device) = @_;
- first(grub2dev_and_file($grub_file, $grub2dev, $o_block_device));
-}
-
-# replace dummy "(hdX,Y)" in "(hdX,Y)/boot/vmlinuz..." by appropriate path if needed
-sub grub2file {
- my ($grub_file, $grub2dev, $fstab) = @_;
- if (my ($device, $rel_file) = grub2dev_and_file($grub_file, $grub2dev)) {
- if (my $part = fs::get::device2part($device, $fstab)) {
- my $mntpoint = $part->{mntpoint} || '';
- ($mntpoint eq '/' ? '' : $mntpoint) . '/' . $rel_file;
- } else {
- log::l("ERROR: unknown device $device (computed from $grub_file)");
- $grub_file;
- }
- } else {
- $grub_file;
- }
-}
-
-sub write_grub {
- my ($bootloader, $all_hds) = @_;
-
- my $fstab = [ fs::get::fstab($all_hds) ];
- my @legacy_floppies = detect_devices::floppies();
- my @sorted_hds = sort_hds_according_to_bios($bootloader, $all_hds);
- write_grub_device_map(\@legacy_floppies, \@sorted_hds);
-
- if (get_append_with_key($bootloader, 'console') =~ /ttyS(\d),(\d+)/) {
- $bootloader->{serial} ||= "--unit=$1 --speed=$2";
- $bootloader->{terminal} ||= "--timeout=" . ($bootloader->{timeout} || 0) . " console serial";
- }
-
- my $file2grub = sub {
- my ($file) = @_;
- if ($file =~ m!^\(.*\)/!) {
- $file; #- it's already in grub format
- } else {
- my ($part, $rel_file) = fs::get::file2part($fstab, $_[0], 'keep_simple_symlinks');
- device2grub($part, \@sorted_hds) . $rel_file;
- }
- };
- {
- my @conf;
-
- push @conf, map { "$_ $bootloader->{$_}" } grep { $bootloader->{$_} } qw(timeout color serial terminal);
- push @conf, map { $_ . ' ' . $file2grub->($bootloader->{$_}) } grep { $bootloader->{$_} } qw(splashimage);
-
- eval {
- push @conf, "default " . (find_index { $_->{label} eq $bootloader->{default} } @{$bootloader->{entries}});
- };
-
- foreach (@{$bootloader->{entries}}) {
- my $title = "\ntitle $_->{label}";
-
- if ($_->{type} eq "image") {
- my $vga = $_->{vga} || $bootloader->{vga};
- push @conf, $title,
- join(' ', 'kernel', $file2grub->($_->{kernel_or_dev}),
- if_($_->{root}, $_->{root} =~ /loop7/ ? "root=707" : "root=$_->{root}"), #- special to workaround bug in kernel (see #ifdef CONFIG_BLK_DEV_LOOP)
- $_->{append},
- if_($_->{'read-write'}, 'rw'),
- if_($vga && $vga ne "normal", "vga=$vga"));
- push @conf, "initrd " . $file2grub->($_->{initrd}) if $_->{initrd};
- } else {
- my $dev = eval { device_string2grub($_->{kernel_or_dev}, \@legacy_floppies, \@sorted_hds) };
- if (!$dev) {
- log::l("dropping bad entry $_->{label} for unknown device $_->{kernel_or_dev}");
- next;
- }
- push @conf, $title, "root $dev";
-
- if ($_->{table}) {
- if (my $hd = fs::get::device2part($_->{table}, \@sorted_hds)) {
- if (my $bios = find_index { $hd eq $_ } @sorted_hds) {
- #- boot off the nth drive, so reverse the BIOS maps
- my $nb = sprintf("0x%x", 0x80 + $bios);
- $_->{mapdrive} ||= { '0x80' => $nb, $nb => '0x80' };
- }
- }
- }
- if ($_->{mapdrive}) {
- push @conf, map_each { "map ($::b) ($::a)" } %{$_->{mapdrive}};
- push @conf, "makeactive";
- }
- push @conf, "chainloader +1";
- }
- }
- my $f = "$::prefix/boot/grub/menu.lst";
- log::l("writing grub config to $f");
- renamef($f, "$f.old");
- output($f, map { "$_\n" } @conf);
- }
- {
- my $f = "$::prefix/boot/grub/install.sh";
- my $dev = device_string2grub($bootloader->{boot}, \@legacy_floppies, \@sorted_hds);
- my ($stage1, $stage2, $menu_lst) = map { $file2grub->("/boot/grub/$_") } qw(stage1 stage2 menu.lst);
- renamef($f, "$f.old");
- output_with_perm("$::prefix/boot/grub/install.sh", 0755,
-"grub --device-map=/boot/grub/device.map --batch <<EOF
-install $stage1 d $dev $stage2 p $menu_lst
-quit
-EOF
-");
- }
-
- check_enough_space();
-}
-
-sub configure_kdm_BootManager {
- my ($name) = @_;
- eval { update_gnomekderc("$::prefix/usr/share/config/kdm/kdmrc", 'Shutdown' => (
- BootManager => $name
- )) };
-}
-
-sub install_grub {
- my ($bootloader, $all_hds) = @_;
-
- write_grub($bootloader, $all_hds);
-
- install_raw_grub() if !$::testing;
-
- configure_kdm_BootManager('Grub');
-}
-sub install_raw_grub() {
- log::l("Installing boot loader...");
- my $error;
- run_program::rooted($::prefix, "sh", '/boot/grub/install.sh', "2>", \$error) or die "grub failed: $error";
-}
-
-sub when_config_changed_grub {
- my ($_bootloader) = @_;
- #- do not do anything
-}
-
-sub action {
- my ($bootloader, $action, @para) = @_;
-
- my $main_method = main_method($bootloader->{method});
- my $f = $bootloader::{$action . '_' . $main_method} or die "unknown bootloader method $bootloader->{method} ($action)";
- $f->($bootloader, @para);
-}
-
-sub install {
- my ($bootloader, $all_hds) = @_;
-
- if (my $part = fs::get::device2part($bootloader->{boot}, [ fs::get::fstab($all_hds) ])) {
- die N("You can not install the bootloader on a %s partition\n", $part->{fs_type})
- if $part->{fs_type} eq 'xfs';
- }
- $bootloader->{keytable} = keytable($bootloader->{keytable});
- action($bootloader, 'install', $all_hds);
-}
-
-sub update_for_renumbered_partitions {
- my ($in, $renumbering, $all_hds) = @_;
-
- my @configs = grep { $_->{content} } config_files();
- $_->{new} = $_->{orig} = $_->{content} foreach @configs;
-
- my @sorted_hds; {
- my $grub2dev = read_grub_device_map();
- map_each {
- $sorted_hds[$1] = fs::get::device2part($::b, $all_hds->{hds}) if $::a =~ /hd(\d+)/;
- } %$grub2dev;
- }
-
- foreach (@$renumbering) {
- my ($old, $new) = @$_;
- log::l("renaming $old -> $new");
- $_->{new} =~ s/\b$old/$new/g foreach @configs;
-
- any { $_->{name} eq 'grub' } @configs or next;
-
- my ($old_grub, $new_grub) = map { device_string2grub($_, [], \@sorted_hds) } $old, $new;
- log::l("renaming $old_grub -> $new_grub");
- $_->{new} =~ s/\Q$old_grub/$new_grub/g foreach @configs;
- }
-
- my @changed_configs = grep { $_->{orig} ne $_->{new} } @configs or return 1; # no need to update
-
- $in->ask_okcancel('', N("Your bootloader configuration must be updated because partition has been renumbered")) or return;
-
- foreach (@changed_configs) {
- renamef("$::prefix/$_->{file}", "$::prefix/$_->{file}.old");
- output("$::prefix/$_->{file}", $_->{new});
- }
-
- my $main_method = detect_main_method($all_hds);
- my @needed = map {
- $_ eq 'grub' ? 'grub_install' : $_;
- } $main_method ? $main_method : ('lilo', 'grub');
-
- if (intersection(\@needed, [ map { $_->{name} } @changed_configs ])) {
- $in->ask_warn('', N("The bootloader can not be installed correctly. You have to boot rescue and choose \"%s\"",
- N("Re-install Boot Loader")));
- }
- 1;
-}
-
-1;
diff --git a/perl-install/bootsplash.pm b/perl-install/bootsplash.pm
deleted file mode 100644
index 46c84c72e..000000000
--- a/perl-install/bootsplash.pm
+++ /dev/null
@@ -1,207 +0,0 @@
-package bootsplash;
-
-use common;
-use Xconfig::resolution_and_depth;
-use vars qw(@ISA %EXPORT_TAGS);
-
-@ISA = qw(Exporter);
-%EXPORT_TAGS = (drawing => [qw(rectangle2xywh xywh2rectangle distance farthest nearest)]);
-@EXPORT_OK = map { @$_ } values %EXPORT_TAGS;
-
-my $themes_dir = "$::prefix/usr/share/bootsplash/themes";
-my $themes_config_dir = "$::prefix/etc/bootsplash/themes";
-my $sysconfig_file = "$::prefix/etc/sysconfig/bootsplash";
-my $bootsplash_scripts = "$::prefix/usr/share/bootsplash/scripts";
-my $default_theme = 'Mandrivalinux';
-our $default_thumbnail = '/usr/share/libDrakX/pixmaps/nosplash_thumb.png';
-our @resolutions = uniq(map { "$_->{X}x$_->{Y}" } Xconfig::resolution_and_depth::bios_vga_modes());
-
-sub get_framebuffer_resolution {
- require bootloader;
- require fsedit;
- my $bootloader = bootloader::read(fsedit::get_hds());
- my $x_res = Xconfig::resolution_and_depth::from_bios($bootloader->{default_vga});
- $x_res ?
- ($x_res->{X} . 'x' . $x_res->{Y}, 1) :
- (first(@resolutions), 0);
-}
-
-sub themes_read_sysconfig {
- my ($res) = @_;
- my %theme = (
- name => $default_theme,
- enabled => 1,
- keep_logo => 1
- );
- if (-r $sysconfig_file) {
- local $_;
- foreach (cat_($sysconfig_file)) {
- /^SPLASH=no/ and $theme{enabled} = 0;
- /^THEME=(.*)/ && -f theme_get_image_for_resolution($1, $res) and $theme{name} = $1;
- /^LOGO_CONSOLE=(.*)/ and $theme{keep_logo} = $1 ne "no";
- }
- }
- \%theme;
-}
-
-sub theme_get_image_for_resolution {
- my ($theme, $res) = @_;
- $themes_dir . '/' . $theme . '/images/bootsplash-' . $res . ".jpg";
-}
-
-sub theme_get_config_for_resolution {
- my ($theme, $res) = @_;
- $themes_config_dir . '/' . $theme . '/config/bootsplash-' . $res . ".cfg";
-}
-
-sub theme_exists_for_resolution {
- my ($theme, $res) = @_;
- -f theme_get_image_for_resolution($theme, $res) && -f theme_get_config_for_resolution($theme, $res);
-}
-
-sub themes_list() {
- grep { !/^\./ && -d $themes_dir } sort(all($themes_dir));
-}
-
-sub themes_list_for_resolution {
- my ($res) = @_;
- grep { theme_exists_for_resolution($_, $res) } themes_list();
-}
-
-sub switch {
- my ($theme) = @_;
- if ($::testing) {
- print "enabling bootsplash theme $theme\n";
- } else {
- #- theme scripts will update SPLASH value in sysconfig file
- system($bootsplash_scripts . '/switch-themes', $theme);
- }
-}
-
-sub remove() {
- if ($::testing) {
- print "disabling bootsplash theme\n";
- } else {
- system($bootsplash_scripts . '/remove-theme');
- }
-}
-
-sub set_logo_console {
- my ($keep_logo) = @_;
- my $logo_console = $keep_logo ? 'theme' : 'no';
- substInFile { s/^LOGO_CONSOLE=.*/LOGO_CONSOLE=$logo_console/ } $sysconfig_file;
-}
-
-sub create_path {
- my ($file) = @_;
- require File::Basename;
- my $dir = File::Basename::dirname($file);
- -d $dir or mkdir_p($dir);
-}
-
-sub theme_set_image_for_resolution {
- my ($name, $res, $source_image) = @_;
- my $dest_image = theme_get_image_for_resolution($name, $res);
- create_path($dest_image);
- #- Append an exclamation point to the geometry to force the image size to exactly the size you specify.
- system('convert', '-geometry', $res . '!', $source_image, $dest_image);
- system($bootsplash_scripts . '/rewritejpeg', $dest_image);
-}
-
-sub theme_read_config_for_resolution {
- my ($theme, $res) = @_;
- +{ getVarsFromSh(theme_get_config_for_resolution($theme, $res)) };
-}
-
-sub theme_write_config_for_resolution {
- my ($name, $res, $conf) = @_;
-
- my $config = theme_get_config_for_resolution($name, $res);
- create_path($config);
- my $jpeg = theme_get_image_for_resolution($name, $res);
- output($config,
- qq(# This is the configuration file for the $res bootsplash picture
-# this file is necessary to specify the coordinates of the text box on the
-# splash screen.
-
-# config file version
-version=3
-
-# should the picture be displayed?
-state=1
-
-# fgcolor is the text forground color.
-# bgcolor is the text background (i.e. transparent) color.
-fgcolor=7
-bgcolor=0
-
-# (tx, ty) are the (x, y) coordinates of the text window in pixels.
-# tw/th is the width/height of the text window in pixels.
-tx=$conf->{tx}
-ty=$conf->{ty}
-tw=$conf->{tw}
-th=$conf->{th}
-
-# name of the picture file (full path recommended)
-jpeg=$jpeg
-silentjpeg=$jpeg
-
-progress_enable=1
-
-overpaintok=1
-
-LOGO_CONSOLE=$conf->{LOGO_CONSOLE}
-));
-}
-
-sub rectangle2xywh {
- my ($rect) = @_;
-
- my $x = min($rect->[0]{X} , $rect->[1]{X});
- my $y = min($rect->[0]{Y} , $rect->[1]{Y});
- my $w = abs($rect->[0]{X} - $rect->[1]{X});
- my $h = abs($rect->[0]{Y} - $rect->[1]{Y});
- ($x, $y, $w, $h);
-}
-
-sub xywh2rectangle {
- my ($x, $y, $w, $h) = @_;
- [ { X => $x, Y => $y }, { X => $x+$w, Y => $y+$w } ];
-}
-
-sub distance {
- my ($p1, $p2) = @_;
- sqr($p1->{X} - $p2->{X}) + sqr($p1->{Y} - $p2->{Y});
-}
-
-sub farthest {
- my ($point, @others) = @_;
- my $i = 0;
- my $dist = 0;
- my $farthest;
- foreach (@others) {
- my $d = distance($point, $_);
- if ($d >= $dist) {
- $dist = $d;
- $farthest = $_;
- }
- }
- $farthest;
-}
-
-sub nearest {
- my ($point, @others) = @_;
- my $i = 0;
- my $dist;
- my $nearest;
- foreach (@others) {
- my $d = distance($point, $_);
- if (! defined $dist || $d < $dist) {
- $dist = $d;
- $nearest = $_;
- }
- }
- $nearest;
-}
-
-1;
diff --git a/perl-install/c.pm b/perl-install/c.pm
deleted file mode 100644
index f1904ebc4..000000000
--- a/perl-install/c.pm
+++ /dev/null
@@ -1,19 +0,0 @@
-package c; # $Id$
-
-use vars qw($AUTOLOAD);
-
-use c::stuff;
-use MDK::Common;
-
-sub AUTOLOAD() {
- $AUTOLOAD =~ /::(.*)/ or return;
- my @l = eval { &{$c::stuff::{$1}} };
- if (my $err = $@) {
- $err =~ /Undefined subroutine &main::/ ?
- die("can not find function $AUTOLOAD\n" . backtrace()) :
- die($err);
- }
- wantarray() ? @l : $l[0];
-}
-
-1;
diff --git a/perl-install/c/.cvsignore b/perl-install/c/.cvsignore
deleted file mode 100644
index 665b57e54..000000000
--- a/perl-install/c/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-Makefile
-Makefile_c
-stuff.c
-stuff.bs
-pm_to_blib
-Makefile_c.old
-blib
-stuff.xs
-pcmcia_probe.c
diff --git a/perl-install/c/Makefile b/perl-install/c/Makefile
deleted file mode 100644
index 0d09a8919..000000000
--- a/perl-install/c/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-.PHONY: clean
-
-MAKEIT = $(MAKE) -f Makefile_c LD_RUN_PATH=
-
-stuff: %: %.xs
- test -e Makefile_c || perl Makefile.PL
- $(MAKEIT) || $(MAKEIT)
- rm -f ../auto/c ; ln -s ../c/blib/arch/auto ../auto/c
-
-clean:
- test ! -e Makefile_c || $(MAKE) -f Makefile_c clean
- rm -f *~ *.o stuff.xs probe.c
-
-stuff.xs: %: %.pl
- rm -f $@
- perl $< > $@
- chmod a-w $@
diff --git a/perl-install/c/Makefile.PL b/perl-install/c/Makefile.PL
deleted file mode 100644
index 46960e36d..000000000
--- a/perl-install/c/Makefile.PL
+++ /dev/null
@@ -1,25 +0,0 @@
-use MDK::Common;
-use ExtUtils::MakeMaker;
-use Config;
-# See lib/ExtUtils/MakeMaker.pm for details of how to influence
-# the contents of the Makefile that is written.
-
-my $lib = arch() =~ /x86_64/ ? 'lib64' : 'lib';
-
-my $libs = '-lldetect -lext2fs';
-$libs .= ' -lrpm -lrpmdb -lrpmio -lpopt -lz';
-
-my $pcmcia_dir = $Config{archname} =~ /i.86/ ? '../../mdk-stage1/pcmcia_' : '';
-
-symlink "$pcmcia_dir/probe.c", "probe.c" if $pcmcia_dir;
-
-WriteMakefile(
- 'NAME' => 'stuff',
- 'OPTIMIZE' => '-Os',
- 'MAKEFILE' => 'Makefile_c',
- 'OBJECT' => "stuff.o smp.o sbus.o silo.o smp-dmi.o" . ($pcmcia_dir && " probe.o"),
- 'VERSION_FROM' => 'stuff.pm', # finds $VERSION
- 'LIBS' => [$libs], # e.g., '-lm'
- 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING'
- 'INC' => "-I/usr/include/rpm " . ($pcmcia_dir && " -I$pcmcia_dir -I$pcmcia_dir/.."),
-);
diff --git a/perl-install/c/README b/perl-install/c/README
deleted file mode 100644
index b5ad1224f..000000000
--- a/perl-install/c/README
+++ /dev/null
@@ -1,3 +0,0 @@
-md5.c, md5_crypt.c and md5.h are taken from pam (dir modules/pam_pwdb)
-
-smp.c is taken from RedHat's install
diff --git a/perl-install/c/sbus.c b/perl-install/c/sbus.c
deleted file mode 100644
index 85d44fa79..000000000
--- a/perl-install/c/sbus.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* This file is inspired from source code of kudzu from Red Hat, Inc.
- * It has been modified to keep only "what is needed" in C, the prom_walk
- * has been rewritten in perl for convenience :-)
- *
- * Copyright notice from original version.
- * sbus.c: Probe for Sun SBUS and UPA framebuffers using OpenPROM,
- * SBUS SCSI and Ethernet cards and SBUS or EBUS audio chips.
- *
- * Copyright (C) 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz)
- * (C) 1999 Red Hat, Inc.
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *
- */
-
-#ifdef __sparc__
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <asm/openpromio.h>
-
-static char *promdev = "/dev/openprom";
-static int promfd = -1;
-static int prom_current_node;
-#define MAX_PROP 128
-#define MAX_VAL (4096-128-4)
-static char buf[4096];
-#define DECL_OP(size) struct openpromio *op = (struct openpromio *)buf; op->oprom_size = (size)
-
-int prom_open()
-{
- int prom_root_node;
-
- if (promfd == -1) {
- promfd = open(promdev, O_RDONLY);
- if (promfd == -1)
- return 0;
- }
- prom_root_node = prom_getsibling(0);
- if (!prom_root_node) {
- close(promfd);
- promfd = -1;
- return 0;
- }
- return prom_root_node;
-}
-
-void prom_close()
-{
- if (promfd != -1) {
- close(promfd);
- promfd = -1;
- }
-}
-
-int prom_getsibling(int node)
-{
- DECL_OP(sizeof(int));
-
- if (node == -1) return 0;
- *(int *)op->oprom_array = node;
- if (ioctl (promfd, OPROMNEXT, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-int prom_getchild(int node)
-{
- DECL_OP(sizeof(int));
-
- if (!node || node == -1) return 0;
- *(int *)op->oprom_array = node;
- if (ioctl (promfd, OPROMCHILD, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-char *prom_getopt(char *var, int *lenp)
-{
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, var);
- if (ioctl (promfd, OPROMGETOPT, op) < 0)
- return 0;
- if (lenp) *lenp = op->oprom_size;
- return op->oprom_array;
-}
-
-void prom_setopt(char *var, char *value) {
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, var);
- strcpy (op->oprom_array + strlen (var) + 1, value);
- ioctl (promfd, OPROMSETOPT, op);
-}
-
-char *prom_getproperty(char *prop, int *lenp)
-{
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, prop);
- if (ioctl (promfd, OPROMGETPROP, op) < 0)
- return 0;
- if (lenp) *lenp = op->oprom_size;
- return op->oprom_array;
-}
-
-int prom_getbool(char *prop)
-{
- DECL_OP(0);
-
- *(int *)op->oprom_array = 0;
- for (;;) {
- op->oprom_size = MAX_PROP;
- if (ioctl(promfd, OPROMNXTPROP, op) < 0)
- return 0;
- if (!op->oprom_size)
- return 0;
- if (!strcmp (op->oprom_array, prop))
- return 1;
- }
-}
-
-int prom_pci2node(int bus, int devfn) {
- DECL_OP(2*sizeof(int));
-
- ((int *)op->oprom_array)[0] = bus;
- ((int *)op->oprom_array)[1] = devfn;
- if (ioctl (promfd, OPROMPCI2NODE, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-#else
-int prom_open() { return 0; }
-void prom_close() {}
-int prom_getsibling(int node) { return 0; }
-int prom_getchild(int node) { return 0; }
-char *prom_getopt(char *var, int *lenp) { return 0; /* NULL */ }
-void prom_setopt(char *var, char *value) {}
-char *prom_getproperty(char *prop, int *lenp) { return 0; /* NULL */ }
-int prom_getbool(char *prop) { return 0; }
-int prom_pci2node(int bus, int devfn) { return 0; }
-#endif /* __sparc__ */
diff --git a/perl-install/c/silo.c b/perl-install/c/silo.c
deleted file mode 100644
index 2fd621f4e..000000000
--- a/perl-install/c/silo.c
+++ /dev/null
@@ -1,817 +0,0 @@
-/* silo.c: Conversions between SCSI and IDE disk names
- * and OpenPROM fully qualified paths.
- *
- * Modified for DrakX light integration.
- * Copyright (C) 1999, 2000 Jakub Jelinek <jakub@redhat.com>
- *
- * This software may be freely redistributed under the terms of the GNU
- * public license.
- *
- * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#ifdef __sparc__
-
-#define _GNU_SOURCE
-#include <fcntl.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <asm/openpromio.h>
-#include <ctype.h>
-#include <dirent.h>
-#include <errno.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-
-#ifndef OPROMSETCUR
-#define OPROMSETCUR 0x20004FF0
-#define OPROMPCI2NODE 0x20004FF1
-#define OPROMPATH2NODE 0x20004FF2
-#endif
-
-static int hasaliases;
-static char *promdev = "/dev/openprom";
-static int promfd;
-static char sd_targets[10] = "31204567";
-static int p1275 = 0;
-static int prom_root_node, prom_current_node;
-static int promvers;
-static void (*prom_walk_callback)(int node);
-static char prom_path[1024];
-#define MAX_PROP 128
-#define MAX_VAL (4096-128-4)
-static char buf[4096];
-static char regstr[40];
-#define DECL_OP(size) struct openpromio *op = (struct openpromio *)buf; op->oprom_size = (size)
-
-static int
-prom_setcur(int node) {
- DECL_OP(sizeof(int));
-
- if (node == -1) return 0;
- *(int *)op->oprom_array = node;
- if (ioctl (promfd, OPROMSETCUR, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-static int
-prom_getsibling(int node) {
- DECL_OP(sizeof(int));
-
- if (node == -1) return 0;
- *(int *)op->oprom_array = node;
- if (ioctl (promfd, OPROMNEXT, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-static int
-prom_getchild(int node) {
- DECL_OP(sizeof(int));
-
- if (!node || node == -1) return 0;
- *(int *)op->oprom_array = node;
- if (ioctl (promfd, OPROMCHILD, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-static char *
-prom_getproperty(char *prop, int *lenp) {
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, prop);
- if (ioctl (promfd, OPROMGETPROP, op) < 0)
- return 0;
- if (lenp) *lenp = op->oprom_size;
- return op->oprom_array;
-}
-
-static char *
-prom_getopt(char *var, int *lenp) {
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, var);
- if (ioctl (promfd, OPROMGETOPT, op) < 0)
- return 0;
- if (lenp) *lenp = op->oprom_size;
- return op->oprom_array;
-}
-
-static void
-prom_setopt(char *var, char *value) {
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, var);
- strcpy (op->oprom_array + strlen (var) + 1, value);
- ioctl (promfd, OPROMSETOPT, op);
-}
-
-static int
-prom_getbool(char *prop) {
- DECL_OP(0);
-
- *(int *)op->oprom_array = 0;
- for (;;) {
- op->oprom_size = MAX_PROP;
- if (ioctl(promfd, OPROMNXTPROP, op) < 0)
- return 0;
- if (!op->oprom_size)
- return 0;
- if (!strcmp (op->oprom_array, prop))
- return 1;
- }
-}
-
-static int
-prom_pci2node(int bus, int devfn) {
- DECL_OP(2*sizeof(int));
-
- ((int *)op->oprom_array)[0] = bus;
- ((int *)op->oprom_array)[1] = devfn;
- if (ioctl (promfd, OPROMPCI2NODE, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-static int
-prom_path2node(char *path) {
- DECL_OP(MAX_VAL);
-
- strcpy (op->oprom_array, path);
- if (ioctl (promfd, OPROMPATH2NODE, op) < 0)
- return 0;
- prom_current_node = *(int *)op->oprom_array;
- return *(int *)op->oprom_array;
-}
-
-#define PW_TYPE_SBUS 1
-#define PW_TYPE_PCI 2
-#define PW_TYPE_EBUS 3
-
-static void
-prom_walk(char *path, int parent, int node, int type) {
- int nextnode;
- int len, ntype = type;
- char *prop;
-
- prop = prom_getproperty("name", &len);
- if (prop && len > 0) {
- if ((!strcmp(prop, "sbus") || !strcmp(prop, "sbi")) && !type)
- ntype = PW_TYPE_SBUS;
- else if (!strcmp(prop, "ebus") && type == PW_TYPE_PCI)
- ntype = PW_TYPE_EBUS;
- else if (!strcmp(prop, "pci") && !type)
- ntype = PW_TYPE_PCI;
- }
- *path = '/';
- strcpy (path + 1, prop);
- prop = prom_getproperty("reg", &len);
- if (prop && len >= 4) {
- unsigned int *reg = (unsigned int *)prop;
- int cnt = 0;
- if (!p1275 || (type == PW_TYPE_SBUS))
- sprintf (regstr, "@%x,%x", reg[0], reg[1]);
- else if (type == PW_TYPE_PCI) {
- if ((reg[0] >> 8) & 7)
- sprintf (regstr, "@%x,%x", (reg[0] >> 11) & 0x1f, (reg[0] >> 8) & 7);
- else
- sprintf (regstr, "@%x", (reg[0] >> 11) & 0x1f);
- } else if (len == 4)
- sprintf (regstr, "@%x", reg[0]);
- else {
- unsigned int regs[2];
-
- /* Things get more complicated on UPA. If upa-portid exists,
- then address is @upa-portid,second-int-in-reg, otherwise
- it is @first-int-in-reg/16,second-int-in-reg (well, probably
- upa-portid always exists, but just to be safe). */
- memcpy (regs, reg, sizeof(regs));
- prop = prom_getproperty("upa-portid", &len);
- if (prop && len == 4) {
- reg = (unsigned int *)prop;
- sprintf (regstr, "@%x,%x", reg[0], regs[1]);
- } else
- sprintf (regstr, "@%x,%x", regs[0] >> 4, regs[1]);
- }
- for (nextnode = prom_getchild(parent); nextnode; nextnode = prom_getsibling(nextnode)) {
- prop = prom_getproperty("name", &len);
- if (prop && len > 0 && !strcmp (path + 1, prop))
- cnt++;
- }
- if (cnt > 1)
- strcat (path, regstr);
- }
-
- prom_walk_callback(node);
-
- nextnode = prom_getchild(node);
- if (nextnode)
- prom_walk(strchr (path, 0), node, nextnode, ntype);
- nextnode = prom_getsibling(node);
- if (nextnode)
- prom_walk(path, parent, nextnode, type);
-}
-
-static int
-prom_init(int mode) {
- struct utsname u;
-
- promfd = open(promdev, mode);
- if (promfd == -1)
- return -1;
- prom_root_node = prom_getsibling(0);
- if (!prom_root_node)
- return -1;
-
- if (!uname (&u) && !strcmp (u.machine, "sparc64"))
- p1275 = 1;
- return 0;
-}
-
-#define SDSK_TYPE_IDE 1
-#define SDSK_TYPE_SD 2
-#define SDSK_TYPE_PLN 3
-#define SDSK_TYPE_FC 4
-
-static struct sdsk_disk {
- unsigned int prom_node;
- unsigned int type, host, hi, mid, lo;
- unsigned char *prom_name;
-} *hd = NULL, *sd = NULL;
-static int hdlen, sdlen;
-
-static void
-scan_walk_callback(int node) {
- int nextnode;
- char *prop;
- int len, disk;
- static int v0ctrl = 0;
-
- for (disk = 0; disk < hdlen + sdlen; disk++) {
- if (hd[disk].prom_node == node) {
- switch (hd[disk].type) {
- case SDSK_TYPE_IDE:
- for (nextnode = prom_getchild(node); nextnode; nextnode = prom_getsibling(nextnode)) {
- prop = prom_getproperty("name", &len);
- if (prop && len > 0 && (!strcmp (prop, "ata") || !strcmp (prop, "disk")))
- break;
- }
- if (!nextnode)
- continue;
- if (prop[0] == 'a')
- sprintf (prop, "/ata@%x,0/cmdk@%x,0", hd[disk].hi, hd[disk].lo);
- else
- sprintf (prop, "/disk@%x,0", hd[disk].hi * 2 + hd[disk].lo);
- break;
- case SDSK_TYPE_SD:
- for (nextnode = prom_getchild(node); nextnode; nextnode = prom_getsibling(nextnode)) {
- prop = prom_getproperty("compatible", &len);
- if (prop && len > 0 && !strcmp (prop, "sd"))
- break;
- prop = prom_getproperty("name", &len);
- if (prop && len > 0 && (!strcmp (prop, "sd") || !strcmp (prop, "disk")))
- break;
- }
- if (!nextnode || hd[disk].hi)
- continue;
- if (promvers) {
- char name[1024];
- prop = prom_getproperty("name", &len);
- if (prop && len > 0)
- strcpy (name, prop);
- else
- strcpy (name, "sd");
- if (!prop)
- prop = ((struct openpromio *)buf)->oprom_array;
- sprintf (prop, "/%s@%x,%x", name, hd[disk].mid, hd[disk].lo);
- } else {
- int i;
- for (i = 0; sd_targets[i]; i++)
- if (sd_targets[i] == '0' + hd[disk].mid)
- break;
- if (!sd_targets[i])
- i = hd[disk].mid;
- sprintf (prop, "sd(%d,%d,", v0ctrl, i);
- }
- break;
- case SDSK_TYPE_PLN:
- prop = ((struct openpromio *)buf)->oprom_array;
- sprintf (prop, "/SUNW,pln@%x,%x/SUNW,ssd@%x,%x",
- hd[disk].lo & 0xf0000000, hd[disk].lo & 0xffffff,
- hd[disk].hi, hd[disk].mid);
- break;
- case SDSK_TYPE_FC:
- prop = ((struct openpromio *)buf)->oprom_array;
- sprintf (prop, "/sf@0,0/ssd@w%08x%08x,%x", hd[disk].hi, hd[disk].mid, hd[disk].lo);
- break;
- default:
- continue;
- }
- hd[disk].prom_name = malloc (strlen (prom_path) + strlen(prop) + 3);
- if (!hd[disk].prom_name)
- continue;
- if (promvers)
- strcpy (hd[disk].prom_name, prom_path);
- else
- hd[disk].prom_name[0] = '\0';
- strcat (hd[disk].prom_name, prop);
- }
- }
- v0ctrl++;
-}
-
-static int
-scan_ide(void) {
- DIR * dir;
- char path[80];
- char buffer[512];
- int fd, i, disk;
- struct dirent * ent;
- int pci_bus, pci_devfn;
-
- if (access("/proc/ide", R_OK)) return 0;
-
- if (!(dir = opendir("/proc/ide"))) {
- return 1;
- }
-
- while ((ent = readdir(dir))) {
- if (ent->d_name[0] == 'h' && ent->d_name[1] == 'd' &&
- ent->d_name[2] >= 'a' && ent->d_name[2] <= 'z' &&
- ent->d_name[3] == '\0') {
- disk = ent->d_name[2] - 'a';
- if (disk >= hdlen) {
- hd = (struct sdsk_disk *)realloc(hd, ((disk&~3)+4)*sizeof(struct sdsk_disk));
- memset (hd + hdlen, 0, ((disk&~3)+4-hdlen)*sizeof(struct sdsk_disk));
- hdlen = (disk&~3)+4;
- }
- for (i = (disk & ~3); i <= (disk | 3); i++) {
- if (hd[i].type)
- break;
- }
- if (i > (disk | 3)) {
- sprintf(path, "/proc/ide/%s", ent->d_name);
- if (readlink(path, buffer, 512) < 5)
- continue;
- if (strncmp(buffer, "ide", 3) ||
- !isdigit(buffer[3]) ||
- buffer[4] != '/')
- continue;
- buffer[4] = 0;
- sprintf(path, "/proc/ide/%s/config", buffer);
- if ((fd = open(path, O_RDONLY)) < 0)
- continue;
- i = read(fd, buffer, 50);
- close(fd);
- if (i < 50) continue;
- if (sscanf (buffer, "pci bus %x device %x ",
- &pci_bus, &pci_devfn) != 2)
- continue;
- hd[disk].prom_node = prom_pci2node (pci_bus, pci_devfn);
- } else
- hd[disk].prom_node = hd[i].prom_node;
- hd[disk].type = SDSK_TYPE_IDE;
- hd[disk].hi = (disk & 2) >> 1;
- hd[disk].lo = (disk & 1);
- }
- }
-
- closedir(dir);
-
- return 0;
-}
-
-static int
-scan_scsi(void) {
- FILE *f;
- DIR * dir, *dirhba;
- struct dirent * ent, *enthba;
- struct stat st;
- char * p, * q;
- char buf[512];
- char path[128];
- int disk = 0;
- int host, channel, id, lun;
- int prom_node, pci_bus, pci_devfn;
-
- if (access("/proc/scsi/scsi", R_OK)) {
- return 0;
- }
-
- f = fopen("/proc/scsi/scsi", "r");
- if (f == NULL) return 1;
-
- if (fgets(buf, sizeof(buf), f) == NULL) {
- fclose(f);
- return 1;
- }
- if (!strcmp(buf, "Attached devices: none\n")) {
- fclose(f);
- return 0;
- }
-
- while (fgets(buf, sizeof(buf), f) != NULL) {
- if (sscanf(buf, "Host: scsi%d Channel: %d Id: %d Lun: %d\n",
- &host, &channel, &id, &lun) != 4)
- break;
- if (fgets(buf, sizeof(buf), f) == NULL)
- break;
- if (strncmp(buf, " Vendor:", 9))
- break;
- if (fgets(buf, sizeof(buf), f) == NULL)
- break;
- if (strncmp(buf, " Type: ", 10))
- break;
- if (!strncmp(buf+10, "Direct-Access", 13)) {
- if (disk >= sdlen) {
- hd = (struct sdsk_disk *)
- realloc(hd, (hdlen+(disk&~3)+4)*sizeof(struct sdsk_disk));
- sd = hd + hdlen;
- memset (sd + sdlen, 0,
- ((disk&~3)+4-sdlen)*sizeof(struct sdsk_disk));
- sdlen = (disk&~3)+4;
- }
- sd[disk].type = SDSK_TYPE_SD;
- sd[disk].host = host;
- sd[disk].hi = channel;
- sd[disk].mid = id;
- sd[disk].lo = lun;
- disk++;
- }
- }
- fclose (f);
-
- if (!(dir = opendir("/proc/scsi"))) {
- if (!hdlen && hd) {
- free(hd);
- hd = NULL;
- }
- sd = NULL;
- sdlen = 0;
- return 1;
- }
-
- while ((ent = readdir(dir))) {
- if (!strcmp (ent->d_name, "scsi") || ent->d_name[0] == '.')
- continue;
- sprintf (path, "/proc/scsi/%s", ent->d_name);
- if (stat (path, &st) < 0 || !S_ISDIR (st.st_mode))
- continue;
- if (!(dirhba = opendir(path)))
- continue;
-
- while ((enthba = readdir(dirhba))) {
- if (enthba->d_name[0] == '.')
- continue;
- host = atoi(enthba->d_name);
- sprintf (path, "/proc/scsi/%s/%s", ent->d_name, enthba->d_name);
- f = fopen (path, "r");
- if (f == NULL) continue;
-
- if (!strcmp (ent->d_name, "esp") ||
- !strcmp (ent->d_name, "qlogicpti") ||
- !strcmp (ent->d_name, "fcal"))
- p = "PROM node";
- else if (!strcmp (ent->d_name, "pluto"))
- p = "serial ";
- else
- p = "PCI bus";
- while (fgets (buf, sizeof(buf), f) != NULL) {
- q = strstr (buf, p);
- if (q == NULL) continue;
- prom_node = 0;
- switch (p[1]) {
- case 'R':
- if (sscanf (q, "PROM node %x", &prom_node) == 1)
- q = NULL;
- break;
- case 'e':
- if (sscanf (q, "serial 000000%x %*dx%*d on soc%*d port %x PROM node %x",
- &id, &lun, &prom_node) == 3 &&
- lun >= 10 && lun <= 11) {
- q = NULL;
- }
- break;
- case 'C':
- if (sscanf (q, "PCI bus %x device %x", &pci_bus, &pci_devfn) == 2) {
- q = NULL;
- prom_node = prom_pci2node (pci_bus, pci_devfn);
- }
- break;
- }
- if (q == NULL) {
- for (disk = 0; disk < sdlen; disk++)
- if (sd[disk].host == host && sd[disk].type) {
- sd[disk].prom_node = prom_node;
- if (p[1] == 'e') {
- sd[disk].type = SDSK_TYPE_PLN;
- sd[disk].lo = (lun << 28) | id;
- } else if (!strcmp (ent->d_name, "fcal"))
- sd[disk].type = SDSK_TYPE_FC;
- }
- }
- }
- if (!strcmp (ent->d_name, "fcal")) {
- while (fgets (buf, sizeof(buf), f) != NULL) {
- unsigned long long ll;
- if (sscanf (buf, " [AL-PA: %*x, Id: %d, Port WWN: %Lx, Node WWN: ", &id, &ll) == 2) {
- for (disk = 0; disk < sdlen; disk++)
- if (sd[disk].host == host && sd[disk].mid == id) {
- sd[disk].hi = ll >> 32;
- sd[disk].mid = ll;
- }
- }
- }
- }
- fclose(f);
- }
- closedir(dirhba);
- }
- closedir(dir);
- return 0;
-}
-
-static int get_prom_ver(void)
-{
- FILE *f = fopen ("/proc/cpuinfo","r");
- int ver = 0;
- char buffer[1024];
- char *p;
-
- if (f) {
- while (fgets (buffer, 1024, f)) {
- if (!strncmp (buffer, "promlib", 7)) {
- p = strstr (buffer, "Version ");
- if (p) {
- p += 8;
- if (*p == '0' || (*p >= '2' && *p <= '3')) {
- ver = *p - '0';
- }
- }
- break;
- }
- }
- fclose(f);
- }
- if (!ver) {
- int len;
- p = prom_getopt("sd-targets", &len);
- if (p && len > 0 && len <= 8)
- strcpy(sd_targets, p);
- }
- return ver;
-}
-
-static void check_aliases(void) {
- int nextnode, len;
- char *prop;
- hasaliases = 0;
- for (nextnode = prom_getchild(prom_root_node); nextnode; nextnode = prom_getsibling(nextnode)) {
- prop = prom_getproperty("name", &len);
- if (prop && len > 0 && !strcmp (prop, "aliases"))
- hasaliases = 1;
- }
-}
-
-char *prom_root_name = NULL;
-
-static void get_root_name(void) {
- int len;
- char *prop;
-
- prom_getsibling(0);
- prop = prom_getproperty("name", &len);
- if (prop && len > 0)
- prom_root_name = strdup(prop);
-}
-
-int init_sbusdisk(void) {
- if (prom_init(O_RDONLY))
- return -1;
- promvers = get_prom_ver();
- check_aliases();
- get_root_name();
- scan_ide();
- scan_scsi();
- prom_walk_callback = scan_walk_callback;
- prom_walk(prom_path, prom_root_node, prom_getchild (prom_root_node), 0);
- close(promfd);
- return 0;
-}
-
-void set_prom_vars(char *linuxAlias, char *bootDevice) {
- int len;
- int aliasDone = 0;
- if (prom_init(O_RDWR))
- return;
- if (linuxAlias && hasaliases) {
- char *use_nvramrc;
- char nvramrc[2048];
- char *p, *q, *r, *s;
- int enabled = -1;
- int count;
-
- use_nvramrc = prom_getopt ("use-nvramrc?", &len);
- if (len > 0) {
- if (!strcasecmp (use_nvramrc, "false"))
- enabled = 0;
- else if (!strcasecmp (use_nvramrc, "true"))
- enabled = 1;
- }
- if (enabled != -1) {
- p = prom_getopt ("nvramrc", &len);
- if (p) {
- memcpy (nvramrc, p, len);
- nvramrc [len] = 0;
- q = nvramrc;
- for (;;) {
- /* If there is already `devalias linux /some/ugly/prom/path'
- make sure we fully understand that and remove it. */
- if (!strncmp (q, "devalias", 8) && (q[8] == ' ' || q[8] == '\t')) {
- for (r = q + 9; *r == ' ' || *r == '\t'; r++);
- if (!strncmp (r, "linux", 5)) {
- for (s = r + 5; *s && *s != ' ' && *s != '\t'; s++);
- if (!*s) break;
- if (s == r + 5 ||
- (r[5] == '#' && r[6] >= '0' && r[6] <= '9' &&
- (s == r + 7 ||
- (r[7] >= '0' && r[7] <= '9' && s == r + 8)))) {
- for (r = s + 1; *r == ' ' || *r == '\t'; r++);
- for (; *r && *r != ' ' && *r != '\t' && *r != '\n'; r++);
- for (; *r == ' ' || *r == '\t'; r++);
- if (*r == '\n') {
- r++;
- memmove (q, r, strlen(r) + 1);
- continue;
- }
- }
- }
- }
- q = strchr (q, '\n');
- if (!q) break;
- q++;
- }
- len = strlen (nvramrc);
- if (len && nvramrc [len-1] != '\n')
- nvramrc [len++] = '\n';
- p = nvramrc + len;
- p = stpcpy (p, "devalias linux ");
- r = linuxAlias;
- q = strchr (r, ';');
- count = 1;
- while (q) {
- memcpy (p, r, q - r);
- p += q - r;
- sprintf (p, "\ndevalias linux#%d ", count++);
- p = strchr (p, 0);
- r = q + 1;
- q = strchr (r, ';');
- }
- p = stpcpy (p, r);
- *p++ = '\n';
- *p = 0;
- prom_setopt ("nvramrc", nvramrc);
- if (!enabled)
- prom_setopt ("use-nvramrc?", "true");
- aliasDone = 1;
- }
- }
- }
- if (bootDevice) {
- char *p;
- if (aliasDone)
- bootDevice = "linux";
- p = prom_getopt ("boot-device", &len);
- if (p) {
- prom_setopt ("boot-device", bootDevice);
- prom_setopt ("boot-file", "");
- } else {
- p = prom_getopt ("boot-from", &len);
- if (p)
- prom_setopt ("boot-from", bootDevice);
- }
- }
- close(promfd);
-}
-
-#ifdef STANDALONE_SILO
-
-int main(void) {
- int i;
-
- init_sbusdisk();
- set_prom_vars ("/sbus@1f,0/espdma/esp/sd@1,0:c;/sbus@1f,0/espdma/esp/sd@1,0:g;/sbus@1f,0/espdma/esp/sd@1,0:h", "linux");
- printf ("prom root name `%s'\n", prom_root_name);
- for (i = 0; i < hdlen; i++) {
- if (hd[i].type)
- printf ("hd%c %x %d %d %d\n", i + 'a', hd[i].prom_node,
- hd[i].hi, hd[i].mid, hd[i].lo);
- if (hd[i].prom_name) printf ("%s\n", hd[i].prom_name);
- }
- for (i = 0; i < sdlen; i++) {
- if (sd[i].type) {
- if (i < 26)
- printf ("sd%c %x %d %d %d\n", i + 'a', sd[i].prom_node,
- sd[i].hi, sd[i].mid, sd[i].lo);
- else
- printf ("sd%c%c %x %d %d %d\n", (i / 26) + 'a' - 1, (i % 26) + 'a', sd[i].prom_node,
- sd[i].hi, sd[i].mid, sd[i].lo);
- }
- if (sd[i].prom_name) printf ("%s\n", sd[i].prom_name);
- }
- exit(0);
-}
-
-#else
-
-void
-initSilo ()
-{
- return init_sbusdisk();
-}
-
-char *
-disk2PromPath (unsigned char *disk)
-{
- static unsigned char prompath[1024];
- int diskno = -1, part;
-
- if (disk[0] == 'h' && disk[1] == 'd' && disk[2] >= 'a' && disk[2] <= 'z') {
- diskno = disk[2] - 'a';
- disk += 3;
- } else if (disk[0] == 's' && disk[1] == 'd' && disk[2] >= 'a' && disk[2] <= 'z') {
- if (disk[3] >= 'a' && disk[3] <= 'z') {
- diskno = (disk[2] - 'a' + 1) * 26 + (disk[3] - 'a');
- disk += 4;
- } else {
- diskno = disk[2] - 'a';
- disk += 3;
- }
- if (diskno >= 128)
- diskno = -1;
- else
- diskno += hdlen;
- }
- if (diskno == -1)
- part = -1;
- else if (!disk[0])
- part = 3;
- else {
- part = atoi (disk);
- if (part <= 0 || part > 8) part = -1;
- }
- if (diskno < 0 || part == -1 ||
- diskno >= hdlen + sdlen || !hd[diskno].prom_name) {
- return NULL;
- }
- if (!promvers)
- sprintf (prompath, "%s%d)", hd[diskno].prom_name, part ? part - 1 : 2);
- else {
- if (part)
- sprintf (prompath, "%s:%c", hd[diskno].prom_name, part + 'a' - 1);
- else
- strcpy (prompath, hd[diskno].prom_name);
- }
- return prompath;
-}
-
-int
-hasAliases (void)
-{
- return hasaliases;
-}
-
-char *
-promRootName (void)
-{
- return prom_root_name ? prom_root_name : "";
-}
-
-void
-setPromVars (char *linuxAlias, char *bootDevice)
-{
- if (linuxAlias && !*linuxAlias) linuxAlias = NULL;
- if (bootDevice && !*bootDevice) bootDevice = NULL;
- set_prom_vars (linuxAlias, bootDevice);
-}
-
-#endif
-
-#else
-void initSilo() {}
-char *disk2PromPath(unsigned char *disk) { return 0; /* NULL */ }
-int hasAliases(void) { return 0; }
-char *promRootName(void) { return 0; /* NULL */ }
-void setPromVars(char *linuxAlias, char *bootDevice) {}
-#endif /* __sparc__ */
diff --git a/perl-install/c/smp-dmi.c b/perl-install/c/smp-dmi.c
deleted file mode 100644
index 241d8f464..000000000
--- a/perl-install/c/smp-dmi.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * CPU detetion based on DMI decode rev 1.2
- *
- * (C) 2003 Nicolas Planel <nplanel@mandrakesoft.com>
- *
- * Licensed under the GNU Public license. If you want to use it in with
- * another license just ask.
- */
-
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <stdlib.h>
-
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned int u32;
-
-static void
-dump_raw_data(void *data, unsigned int length)
-{
- unsigned char buffer1[80], buffer2[80], *b1, *b2, c;
- unsigned char *p = data;
- unsigned long column=0;
- unsigned int length_printed = 0;
- const unsigned char maxcolumn = 16;
- while (length_printed < length) {
- b1 = buffer1;
- b2 = buffer2;
- for (column = 0;
- column < maxcolumn && length_printed < length;
- column ++) {
- b1 += sprintf(b1, "%02x ",(unsigned int) *p);
- if (*p < 32 || *p > 126) c = '.';
- else c = *p;
- b2 += sprintf(b2, "%c", c);
- p++;
- length_printed++;
- }
- /* pad out the line */
- for (; column < maxcolumn; column++)
- {
- b1 += sprintf(b1, " ");
- b2 += sprintf(b2, " ");
- }
-
- printf("%s\t%s\n", buffer1, buffer2);
- }
-}
-
-
-
-struct dmi_header
-{
- u8 type;
- u8 length;
- u16 handle;
-};
-
-static char *dmi_string(struct dmi_header *dm, u8 s)
-{
- u8 *bp=(u8 *)dm;
- if (!s) return "";
-
- bp+=dm->length;
- while(s>1)
- {
- bp+=strlen(bp);
- bp++;
- s--;
- }
- return bp;
-}
-
-static char *dmi_processor_type(u8 code)
-{
- static char *processor_type[]={
- "",
- "Other",
- "Unknown",
- "Central Processor",
- "Math Processor",
- "DSP Processor",
- "Video Processor"
- };
-
- if(code == 0xFF)
- return "Other";
-
- if (code > 0xA1)
- return "";
- return processor_type[code];
-}
-
-static char *dmi_processor_family(u8 code)
-{
- static char *processor_family[]={
- "",
- "Other",
- "Unknown",
- "8086",
- "80286",
- "Intel386 processor",
- "Intel486 processor",
- "8087",
- "80287",
- "80387",
- "80487",
- "Pentium processor Family",
- "Pentium Pro processor",
- "Pentium II processor",
- "Pentium processor with MMX technology",
- "Celeron processor",
- "Pentium II Xeon processor",
- "Pentium III processor",
- "M1 Family",
- "M1","M1","M1","M1","M1","M1", /* 13h - 18h */
- "K5 Family",
- "K5","K5","K5","K5","K5","K5", /* 1Ah - 1Fh */
- "Power PC Family",
- "Power PC 601",
- "Power PC 603",
- "Power PC 603+",
- "Power PC 604",
- };
-
- if(code == 0xFF)
- return "Other";
-
- if (code > 0x24)
- return "";
- return processor_family[code];
-}
-
-typedef int (*dmi_decode)(u8 * data);
-
-static int decode_handle(int fd, u32 base, int len, int num, dmi_decode decode)
-{
- u8 *buf = malloc(len);
- struct dmi_header *dm;
- u8 *data;
- int i = 0;
- int ret = 0;
-
- if (lseek(fd, (long)base, 0) == -1) {
- perror("dmi: lseek");
- return;
- }
- if (read(fd, buf, len)!=len) {
- perror("dmi: read");
- return;
- }
- data = buf;
- while(i<num && data+sizeof(struct dmi_header)<=buf+len)
- {
- u8 *next;
- struct dmi_header *dm = (struct dmi_header *)data;
-
- /* look for the next handle */
- next=data+dm->length;
- while(next-buf+1<len && (next[0]!=0 || next[1]!=0))
- next++;
- next+=2;
- if(next-buf<=len)
- ret += decode(data);
- else {
- ret = 0; /* TRUNCATED */
- break;
- }
- data=next;
- i++;
- }
- free(buf);
- return ret;
-}
-
-static int dmi_detect(dmi_decode decode) {
- unsigned char buf[20];
- int fd = open("/dev/mem", O_RDONLY);
- long fp = 0xE0000L;
- int ret = 0;
-
- if (fd == -1) {
- perror("/dev/mem");
- exit(1);
- }
- if (lseek(fd, fp, 0) == -1) {
- perror("seek");
- exit(1);
- }
-
- while (fp < 0xFFFFF)
- {
- if (read(fd, buf, 16) != 16)
- perror("read");
-
- if (memcmp(buf, "_DMI_", 5) == 0) {
- u16 num = buf[13]<<8|buf[12];
- u16 len = buf[7]<<8|buf[6];
- u32 base = buf[11]<<24|buf[10]<<16|buf[9]<<8|buf[8];
-
- ret = decode_handle(fd, base, len, num, decode);
- break;
- }
- fp += 16;
- }
- close(fd);
- return ret;
-}
-
-static int processor(u8 *data) {
- struct dmi_header *dm = (struct dmi_header *)data;
-
- if((dm->type == 4) && /*"Central Processor"*/(data[5] == 3)) {
- if(/*Processor Manufacturer*/data[7] != 0)
- return 1;
- }
- return 0;
-}
-
-static int memory_in_MB_type6(u8 *data)
-{
- struct dmi_header *dm;
-
- int dmi_memory_module_size(u8 code) {
- /* 3.3.7.2 */
- switch(code&0x7F) {
- case 0x7D: /* Not Determinable */
- case 0x7E: /* Disabled */
- case 0x7F: /* Not Installed */
- break;
- default:
- return 1<<(code&0x7F);
- }
- return 0;
- }
-
- dm = (struct dmi_header *)data;
-
- if ((dm->type == 6) && (dm->length >= 0xC))
- return dmi_memory_module_size(data[0x0A]); /* Enabled Size */
-
- return 0;
-}
-
-static int memory_in_MB_type17(u8 *data)
-{
- struct dmi_header *dm;
-
- int form_factor_check(u8 code) {
- /* 3.3.18.1 */
- static const char form_factor[]={
- 0, /* "Other", */ /* 0x01 */
- 0, /* "Unknown", */
- 1, /* "SIMM", */
- 1, /* "SIP", */
- 0, /* "Chip", */
- 1, /* "DIP", */
- 0, /* "ZIP", */
- 0, /* "Proprietary Card", */
- 1, /* "DIMM", */
- 0, /* "TSOP", */
- 0, /* "Row Of Chips", */
- 1, /* "RIMM", */
- 1, /* "SODIMM", */
- 1, /* "SRIMM" *//* 0x0E */
- };
-
- if(code>=0x01 && code<=0x0E)
- return form_factor[code-0x01];
- return 0; /* out of spec */
- }
- int dmi_memory_device_size(u16 code) {
- int mult = 1;
-
- if (code == 0 || code == 0xFFFF)
- return 0;
- if (code & 0x8000) /* code is in KB */
- mult = 1024;
- return (code & 0x7FFF) * mult;
- }
-
- dm = (struct dmi_header *)data;
-
- if ((dm->type == 17) && (dm->length >= 0x15)) {
- if (form_factor_check(data[0x0E]))
- return dmi_memory_device_size((data[0x0D] << 8) + data[0x0C]);
- }
-
- return 0;
-}
-
-int intelDetectSMP(void) {
- return dmi_detect(processor) > 1;
-}
-
-int dmiDetectMemory(void) {
- int s1 = dmi_detect(memory_in_MB_type6);
- int s2 = dmi_detect(memory_in_MB_type17);
- return s1 > s2 ? s1 : s2;
-}
diff --git a/perl-install/c/smp-test.c b/perl-install/c/smp-test.c
deleted file mode 100644
index f644449b8..000000000
--- a/perl-install/c/smp-test.c
+++ /dev/null
@@ -1,6 +0,0 @@
-main() {
- if (detectSMP())
- printf("has smp\n");
- else
- printf("no smp\n");
-}
diff --git a/perl-install/c/smp.c b/perl-install/c/smp.c
deleted file mode 100644
index 886321e06..000000000
--- a/perl-install/c/smp.c
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
-[_Anarchy_(alan@lightning.swansea.uk.linux.org)] you should do one check
- though - if the board seems to be SMP and the CPU in /proc/cpuinfo is non
- intel dont install an SMP kernel - thats a dual pentium board with a cyrix
- or similar single cpu in it
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <errno.h>
-
-#ifdef __alpha__
-int alphaDetectSMP(void)
-{
- int issmp = 0;
- FILE *f;
-
- f = fopen("/proc/cpuinfo", "r");
- if (f) {
- char buff[1024];
-
- while (fgets (buff, 1024, f) != NULL) {
- if (!strncmp (buff, "cpus detected\t\t: ", 17)) {
- if (strtoul (buff + 17, NULL, 0) > 1)
- issmp = 1;
- break;
- }
- }
- fclose(f);
- } else
- return -1;
-
- return issmp;
-}
-#endif /* __alpha__ */
-
-#ifdef __sparc__
-int sparcDetectSMP(void)
-{
- int issmp = 0;
- FILE *f;
-
- f = fopen("/proc/cpuinfo", "r");
- if (f) {
- char buff[1024];
-
- while (fgets (buff, 1024, f) != NULL) {
- if (!strncmp (buff, "ncpus probed\t: ", 15)) {
- if (strtoul (buff + 15, NULL, 0) > 1)
- issmp = 1;
- break;
- }
- }
- fclose(f);
- } else
- return -1;
-
- return issmp;
-}
-#endif /* __sparc__ */
-
-/* just a placeholder for now - don't have an SMP machine
- need something in place to build - s.benedict */
-
-#ifdef __powerpc__
-int ppcDetectSMP(void)
-{
- int issmp = 0;
- FILE *f;
-
- f = fopen("/proc/cpuinfo", "r");
- if (f) {
- char buff[1024];
-
- while (fgets (buff, 1024, f) != NULL) {
- if (!strncmp (buff, "ncpus active\t: ", 15)) {
- if (strtoul (buff + 15, NULL, 0) > 1)
- issmp = 1;
- break;
- }
- }
- fclose(f);
- } else
- return -1;
-
- return issmp;
-}
-#endif /* __powerpc__ */
-
-#if defined(__i386__) || defined(__x86_64__)
-/*
- * Copyright (c) 1996, by Steve Passe
- * 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.
- * 2. The name of the developer may NOT be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
- *
- * $Id$
- */
-
-/*
- * mptable.c
- */
-
-#define VMAJOR 2
-#define VMINOR 0
-#define VDELTA 12
-
-/*
- * this will cause the raw mp table to be dumped to /tmp/mpdump
- *
-#define RAW_DUMP
- */
-
-#define MP_SIG 0x5f504d5f /* _MP_ */
-#define EXTENDED_PROCESSING_READY
-#define OEM_PROCESSING_READY_NOT
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#define LINUX 1
-#if LINUX
-typedef unsigned int vm_offset_t;
-#else
-#include <machine/types.h>
-#endif
-
-typedef unsigned char u8;
-typedef unsigned short u16;
-typedef unsigned int u32;
-typedef vm_offset_t addr_t;
-
-/* EBDA is @ 40:0e in real-mode terms */
-#define EBDA_POINTER 0x040e /* location of EBDA pointer */
-
-/* CMOS 'top of mem' is @ 40:13 in real-mode terms */
-#define TOPOFMEM_POINTER 0x0413 /* BIOS: base memory size */
-
-#define DEFAULT_TOPOFMEM 0xa0000
-
-#define BIOS_BASE 0xf0000
-#define BIOS_BASE2 0xe0000
-#define BIOS_SIZE 0x10000
-#define ONE_KBYTE 1024
-
-#define GROPE_AREA1 0x80000
-#define GROPE_AREA2 0x90000
-#define GROPE_SIZE 0x10000
-
-/* MP Floating Pointer Structure */
-typedef struct MPFPS {
- char signature[ 4 ];
- addr_t pap;
- u8 length;
- u8 spec_rev;
- u8 checksum;
- u8 mpfb1;
- u8 mpfb2;
- u8 mpfb3;
- u8 mpfb4;
- u8 mpfb5;
-} mpfps_t;
-
-/* MP Configuration Table Header */
-typedef struct MPCTH {
- char signature[ 4 ];
- u16 base_table_length;
- u8 spec_rev;
- u8 checksum;
- u8 oem_id[ 8 ];
- u8 product_id[ 12 ];
- addr_t oem_table_pointer;
- u16 oem_table_size;
- u16 entry_count;
- addr_t apic_address;
- u16 extended_table_length;
- u8 extended_table_checksum;
- u8 reserved;
-} mpcth_t;
-
-typedef struct PROCENTRY {
- u8 type;
- u8 apicID;
- u8 apicVersion;
- u8 cpuFlags;
- u32 cpuSignature;
- u32 featureFlags;
- u32 reserved1;
- u32 reserved2;
-} ProcEntry;
-
-#define PROCENTRY_FLAG_EN 0x01
-
-static void seekEntry( vm_offset_t addr );
-static void apic_probe( vm_offset_t* paddr, int* where );
-static void readEntry( void* entry, int size );
-
-/* global data */
-static int pfd; /* physical /dev/mem fd */
-static int verbose = 0;
-static int grope = 0;
-
-static int
-readType()
-{
- u_char type;
-
- if ( read( pfd, &type, sizeof( u_char ) ) != sizeof( u_char ) ) {
- perror( "type read" );
- fprintf( stderr, "\npfd: %d", pfd );
- fflush( stderr );
- exit( 1 );
- }
-
- if ( lseek( pfd, -1, SEEK_CUR ) < 0 ) {
- perror( "type seek" );
- exit( 1 );
- }
-
- return (int)type;
-}
-
-extern int intelDetectSMP(void);
-
-// old detection
-static int intelDetectSMP_mptable(void)
-{
- vm_offset_t paddr;
- int where;
- mpfps_t mpfps;
- int rc = 0;
- int ncpus = 0;
-
- /* open physical memory for access to MP structures */
- if ( (pfd = open( "/dev/mem", O_RDONLY )) < 0 ) {
- return 0;
- }
-
- /* probe for MP structures */
- apic_probe( &paddr, &where );
- if ( where <= 0 )
- return 0;
-
- seekEntry( paddr );
- readEntry( &mpfps, sizeof( mpfps_t ) );
-
- if (mpfps.mpfb1)
- /* old style */
- rc = 1;
- else {
- /* go to the config table */
- mpcth_t cth;
- int count, i;
-
- paddr = mpfps.pap;
- seekEntry( paddr );
- readEntry( &cth, sizeof( cth ) );
- /* if we don't have any entries, the kernel sure
- won't be able to set up mp. Needs at least one entry
- for smp kernel */
- if (cth.entry_count <= 1) {
- close (pfd);
- return 0;
- }
- count = cth.entry_count;
- for (i = 0; i < count; i++) {
- if ( readType() == 0 ) {
- ProcEntry entry;
- readEntry( &entry, sizeof( entry ) );
- if (entry.cpuFlags & PROCENTRY_FLAG_EN)
- ncpus++;
- }
- }
- if (ncpus > 1)
- rc = 1;
- }
-
- close (pfd);
- return rc;
-}
-
-/*
- * set PHYSICAL address of MP floating pointer structure
- */
-#define NEXT(X) ((X) += 4)
-static void
-apic_probe( vm_offset_t* paddr, int* where )
-{
- /*
- * c rewrite of apic_probe() by Jack F. Vogel
- */
-
- int x;
- u_short segment;
- vm_offset_t target;
- u_int buffer[ BIOS_SIZE / sizeof( int ) ];
-
- if ( verbose )
- printf( "\n" );
-
- /* search Extended Bios Data Area, if present */
- if ( verbose )
- printf( " looking for EBDA pointer @ 0x%04x, ", EBDA_POINTER );
- seekEntry( (vm_offset_t)EBDA_POINTER );
- readEntry( &segment, 2 );
- if ( segment ) { /* search EBDA */
- target = (vm_offset_t)segment << 4;
- if ( verbose )
- printf( "found, searching EBDA @ 0x%08x\n", target );
- seekEntry( target );
- readEntry( buffer, ONE_KBYTE );
-
- for ( x = 0; x < ONE_KBYTE / sizeof ( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 1;
- *paddr = (x * sizeof( unsigned int )) + target;
- return;
- }
- }
- }
- else {
- if ( verbose )
- printf( "NOT found\n" );
- }
-
- /* read CMOS for real top of mem */
- seekEntry( (vm_offset_t)TOPOFMEM_POINTER );
- readEntry( &segment, 2 );
- --segment; /* less ONE_KBYTE */
- target = segment * 1024;
- if ( verbose )
- printf( " searching CMOS 'top of mem' @ 0x%08x (%dK)\n",
- target, segment );
- seekEntry( target );
- readEntry( buffer, ONE_KBYTE );
-
- for ( x = 0; x < ONE_KBYTE / sizeof ( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 2;
- *paddr = (x * sizeof( unsigned int )) + target;
- return;
- }
- }
-
- /* we don't necessarily believe CMOS, check base of the last 1K of 640K */
- if ( target != (DEFAULT_TOPOFMEM - 1024)) {
- target = (DEFAULT_TOPOFMEM - 1024);
- if ( verbose )
- printf( " searching default 'top of mem' @ 0x%08x (%dK)\n",
- target, (target / 1024) );
- seekEntry( target );
- readEntry( buffer, ONE_KBYTE );
-
- for ( x = 0; x < ONE_KBYTE / sizeof ( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 3;
- *paddr = (x * sizeof( unsigned int )) + target;
- return;
- }
- }
- }
-
- /* search the BIOS */
- if ( verbose )
- printf( " searching BIOS @ 0x%08x\n", BIOS_BASE );
- seekEntry( BIOS_BASE );
- readEntry( buffer, BIOS_SIZE );
-
- for ( x = 0; x < BIOS_SIZE / sizeof( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 4;
- *paddr = (x * sizeof( unsigned int )) + BIOS_BASE;
- return;
- }
- }
-
- /* search the extended BIOS */
- if ( verbose )
- printf( " searching extended BIOS @ 0x%08x\n", BIOS_BASE2 );
- seekEntry( BIOS_BASE2 );
- readEntry( buffer, BIOS_SIZE );
-
- for ( x = 0; x < BIOS_SIZE / sizeof( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 5;
- *paddr = (x * sizeof( unsigned int )) + BIOS_BASE2;
- return;
- }
- }
-
- if ( grope ) {
- /* search additional memory */
- target = GROPE_AREA1;
- if ( verbose )
- printf( " groping memory @ 0x%08x\n", target );
- seekEntry( target );
- readEntry( buffer, GROPE_SIZE );
-
- for ( x = 0; x < GROPE_SIZE / sizeof( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 6;
- *paddr = (x * sizeof( unsigned int )) + GROPE_AREA1;
- return;
- }
- }
-
- target = GROPE_AREA2;
- if ( verbose )
- printf( " groping memory @ 0x%08x\n", target );
- seekEntry( target );
- readEntry( buffer, GROPE_SIZE );
-
- for ( x = 0; x < GROPE_SIZE / sizeof( unsigned int ); NEXT(x) ) {
- if ( buffer[ x ] == MP_SIG ) {
- *where = 7;
- *paddr = (x * sizeof( unsigned int )) + GROPE_AREA2;
- return;
- }
- }
- }
-
- *where = 0;
- *paddr = (vm_offset_t)0;
-}
-
-
-/*
- *
- */
-static void
-seekEntry( vm_offset_t addr )
-{
- if ( lseek( pfd, (off_t)addr, SEEK_SET ) < 0 ) {
- return;
- perror( "/dev/mem seek" );
- exit( 1 );
- }
-}
-
-
-/*
- *
- */
-static void
-readEntry( void* entry, int size )
-{
- if ( read( pfd, entry, size ) != size ) {
- return;
- perror( "readEntry" );
- exit( 1 );
- }
-}
-
-
-#endif /* __i386__ */
-
-int detectSMP(void)
-{
- static int isSMP = -1;
-
- if (isSMP != -1)
- return isSMP;
-
-#ifdef __i386__
- return isSMP = intelDetectSMP() || intelDetectSMP_mptable();
-#elif __sparc__
- return isSMP = sparcDetectSMP();
-#elif __alpha__
- return isSMP = alphaDetectSMP();
-#elif __powerpc__
- return isSMP = ppcDetectSMP();
-#elif __ia64__
- /* TODO: Update to check against /proc/pal/cpuX */
- return isSMP = 1;
-#elif __x86_64__
- return isSMP = intelDetectSMP() || intelDetectSMP_mptable();
-#else
- #error unknown architecture
-#endif
-}
-
-#if TEST
-int main() {
- if (detectSMP())
- printf("has smp\n");
- else
- printf("no smp\n");
-}
-#endif
diff --git a/perl-install/c/smp.h b/perl-install/c/smp.h
deleted file mode 100644
index 3255cc489..000000000
--- a/perl-install/c/smp.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef SMP_H
-#define SMP_H
-
-int detectSMP(void);
-
-#endif /* SMP_H */
diff --git a/perl-install/c/stuff.pm b/perl-install/c/stuff.pm
deleted file mode 100644
index 405f896cd..000000000
--- a/perl-install/c/stuff.pm
+++ /dev/null
@@ -1,17 +0,0 @@
-package c::stuff; # $Id$
-
-use strict;
-use vars qw($VERSION @ISA);
-
-require DynaLoader;
-
-@ISA = qw(DynaLoader);
-$VERSION = '0.01';
-# perl_checker: EXPORT-ALL
-
-c::stuff->bootstrap($VERSION);
-
-sub from_utf8 { iconv($_[0], "utf-8", standard_charset()) }
-sub to_utf8 { iconv($_[0], standard_charset(), "utf-8") }
-
-1;
diff --git a/perl-install/c/stuff.xs.pl b/perl-install/c/stuff.xs.pl
deleted file mode 100644
index a162dfe6e..000000000
--- a/perl-install/c/stuff.xs.pl
+++ /dev/null
@@ -1,817 +0,0 @@
-use Config;
-
-print '
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/* workaround for glibc and kernel header files not in sync */
-#define dev_t dev_t
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <syslog.h>
-#include <fcntl.h>
-#include <resolv.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <sys/mount.h>
-#undef __USE_MISC
-#include <linux/wireless.h>
-#include <linux/keyboard.h>
-#include <linux/kd.h>
-#include <linux/hdreg.h>
-#include <linux/vt.h>
-#include <linux/fd.h>
-#include <linux/cdrom.h>
-#include <linux/loop.h>
-#include <linux/blkpg.h>
-#include <linux/iso_fs.h>
-#include <net/if.h>
-#include <net/route.h>
-#include <netinet/in.h>
-#include <linux/sockios.h>
-
-// for ethtool structs:
-typedef unsigned long long u64;
-typedef __uint32_t u32;
-typedef __uint16_t u16;
-typedef __uint8_t u8;
-
-#include <linux/ethtool.h>
-
-/* for is_ext3 */
-#include <ext2fs/ext2_fs.h>
-#include <ext2fs/ext2fs.h>
-
-// for UPS on USB:
-# define HID_MAX_USAGES 1024
-#include <linux/hiddev.h>
-
-#include <libldetect.h>
-
-#include <langinfo.h>
-#include <string.h>
-#include <iconv.h>
-
-#include <libintl.h>
-
-#define SECTORSIZE 512
-
-char *prom_getopt();
-void prom_setopt();
-char *prom_getproperty();
-char *disk2PromPath();
-char *promRootName();
-
-';
-
-$Config{archname} =~ /i.86/ and print '
-char *pcmcia_probe(void);
-';
-
-print '
-#undef Fflush
-#undef Mkdir
-#undef Stat
-#include <rpm/rpmlib.h>
-#include <rpm/rpmio.h>
-
-void rpmError_callback_empty(void) {}
-
-int rpmError_callback_data;
-void rpmError_callback(void) {
- if (rpmErrorCode() != RPMERR_UNLINK && rpmErrorCode() != RPMERR_RMDIR) {
- write(rpmError_callback_data, rpmErrorString(), strlen(rpmErrorString()));
- }
-}
-
-';
-
-print '
-
-void log_message(const char * s, ...) {
- va_list args;
- va_list args_copy;
- FILE * logtty = fopen("/dev/tty3", "w");
- if (!logtty)
- return;
- fprintf(logtty, "* ");
- va_start(args, s);
- vfprintf(logtty, s, args);
- fprintf(logtty, "\n");
- fclose(logtty);
- va_end(args);
-
- logtty = fopen("/tmp/ddebug.log", "a");
- if (!logtty)
- return;
- fprintf(logtty, "* ");
- va_copy(args_copy, args);
- va_start(args_copy, s);
- vfprintf(logtty, s, args_copy);
- fprintf(logtty, "\n");
- fclose(logtty);
- va_end(args_copy);
-}
-
-';
-
-print '
-
-SV * iconv_(char* s, char* from_charset, char* to_charset) {
- iconv_t cd = iconv_open(to_charset, from_charset);
- char* retval = s;
- if (cd != (iconv_t) (-1)) {
- size_t s_len = strlen(retval);
- /* the maximum expansion when converting happens when converting
- tscii to utf-8; each tscii char can become up to 4 unicode chars
- and each one of those unicode chars can be 3 bytes long */
- char *buf = alloca(4 * 3 * s_len);
- {
- char *ptr = buf;
- size_t ptr_len = 4 * 3 * s_len;
- if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
- *ptr = 0;
- retval = buf;
- }
- }
- iconv_close(cd);
- }
- return newSVpv(retval, 0);
-}
-
-int length_of_space_padded(char *str, int len) {
- while (len >= 0 && str[len-1] == \' \')
- --len;
- return len;
-}
-
-MODULE = c::stuff PACKAGE = c::stuff
-
-';
-
-$Config{archname} =~ /i.86/ and print '
-char *
-pcmcia_probe()
-';
-
-print '
-char *
-dgettext(domainname, msgid)
- char * domainname
- char * msgid
-
-int
-del_partition(hd, part_number)
- int hd
- int part_number
- CODE:
- {
- struct blkpg_partition p = { 0, 0, part_number, "", "" };
- struct blkpg_ioctl_arg s = { BLKPG_DEL_PARTITION, 0, sizeof(struct blkpg_partition), (void *) &p };
- RETVAL = ioctl(hd, BLKPG, &s) == 0;
- }
- OUTPUT:
- RETVAL
-
-int
-add_partition(hd, part_number, start_sector, size_sector)
- int hd
- int part_number
- unsigned long start_sector
- unsigned long size_sector
- CODE:
- {
- long long start = (long long) start_sector * 512;
- long long size = (long long) size_sector * 512;
- struct blkpg_partition p = { start, size, part_number, "", "" };
- struct blkpg_ioctl_arg s = { BLKPG_ADD_PARTITION, 0, sizeof(struct blkpg_partition), (void *) &p };
- RETVAL = ioctl(hd, BLKPG, &s) == 0;
- }
- OUTPUT:
- RETVAL
-
-int
-is_secure_file(filename)
- char * filename
- CODE:
- {
- int fd;
- unlink(filename); /* in case it exists and we manage to remove it */
- RETVAL = (fd = open(filename, O_RDWR | O_CREAT | O_EXCL, 0600)) != -1;
- if (RETVAL) close(fd);
- }
- OUTPUT:
- RETVAL
-
-int
-is_ext3(device_name)
- char * device_name
- CODE:
- {
- ext2_filsys fs;
- int retval = ext2fs_open (device_name, 0, 0, 0, unix_io_manager, &fs);
- if (retval) {
- RETVAL = 0;
- } else {
- RETVAL = fs->super->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL;
- ext2fs_close(fs);
- }
- }
- OUTPUT:
- RETVAL
-
-char *
-get_ext2_label(device_name)
- char * device_name
- CODE:
- {
- ext2_filsys fs;
- int retval = ext2fs_open (device_name, 0, 0, 0, unix_io_manager, &fs);
- if (retval) {
- RETVAL = 0;
- } else {
- RETVAL = fs->super->s_volume_name;
- ext2fs_close(fs);
- }
- }
- OUTPUT:
- RETVAL
-
-void
-setlocale()
- CODE:
- setlocale(LC_ALL, "");
- setlocale(LC_NUMERIC, "C"); /* otherwise eval "1.5" returns 1 in fr_FR for example */
-
-char *
-bindtextdomain(domainname, dirname)
- char * domainname
- char * dirname
-
-char *
-bind_textdomain_codeset(domainname, codeset)
- char * domainname
- char * codeset
-
-int
-lseek_sector(fd, sector, offset)
- int fd
- long sector
- long offset
- CODE:
- RETVAL = lseek64(fd, (off64_t) sector * SECTORSIZE + offset, SEEK_SET) >= 0;
- OUTPUT:
- RETVAL
-
-int
-isBurner(fd)
- int fd
- CODE:
- RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_CD_RW;
- OUTPUT:
- RETVAL
-
-int
-isDvdDrive(fd)
- int fd
- CODE:
- RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_DVD;
- OUTPUT:
- RETVAL
-
-char *
-floppy_info(name)
- char * name
- CODE:
- int fd = open(name, O_RDONLY | O_NONBLOCK);
- RETVAL = NULL;
- if (fd != -1) {
- char drivtyp[17];
- if (ioctl(fd, FDGETDRVTYP, (void *)drivtyp) == 0) {
- struct floppy_drive_struct ds;
- if (ioctl(fd, FDPOLLDRVSTAT, &ds) == 0 && ds.track >= 0)
- RETVAL = drivtyp;
- }
- close(fd);
- }
- OUTPUT:
- RETVAL
-
-unsigned int
-total_sectors(fd)
- int fd
- CODE:
- {
- long s;
- RETVAL = ioctl(fd, BLKGETSIZE, &s) == 0 ? s : 0;
- }
- OUTPUT:
- RETVAL
-
-void
-unlimit_core()
- CODE:
- {
- struct rlimit rlim = { RLIM_INFINITY, RLIM_INFINITY };
- setrlimit(RLIMIT_CORE, &rlim);
- }
-
-int
-getlimit_core()
- CODE:
- {
- struct rlimit rlim;
- getrlimit(RLIMIT_CORE, &rlim);
- RETVAL = rlim.rlim_cur;
- }
- OUTPUT:
- RETVAL
-
-void
-openlog(ident)
- char *ident
- CODE:
- openlog(ident, 0, 0);
-
-void
-closelog()
-
-void
-syslog(priority, mesg)
- int priority
- char *mesg
- CODE:
- syslog(priority, mesg);
-
-void
-setsid()
-
-void
-_exit(status)
- int status
-
-void
-usleep(microseconds)
- unsigned long microseconds
-
-int
-detectSMP()
-
-int
-dmiDetectMemory()
-
-void
-pci_probe()
- PPCODE:
- //proc_pci_path = "/tmp/pci";
- struct pciusb_entries entries = pci_probe();
- char buf[2048];
- int i;
-
- EXTEND(SP, entries.nb);
- for (i = 0; i < entries.nb; i++) {
- struct pciusb_entry *e = &entries.entries[i];
- snprintf(buf, sizeof(buf), "%04x\t%04x\t%04x\t%04x\t%d\t%d\t%d\t%s\t%s\t%s",
- e->vendor, e->device, e->subvendor, e->subdevice, e->pci_bus, e->pci_device, e->pci_function,
- pci_class2text(e->class_), e->module ? e->module : "unknown", e->text);
- PUSHs(sv_2mortal(newSVpv(buf, 0)));
- }
- pciusb_free(&entries);
-
-void
-usb_probe()
- PPCODE:
- struct pciusb_entries entries = usb_probe();
- char buf[2048];
- int i;
-
- EXTEND(SP, entries.nb);
- for (i = 0; i < entries.nb; i++) {
- struct pciusb_entry *e = &entries.entries[i];
- struct usb_class_text class_text = usb_class2text(e->class_);
- snprintf(buf, sizeof(buf), "%04x\t%04x\t%s|%s|%s\t%s\t%s\t%d\t%d",
- e->vendor, e->device, class_text.usb_class_text, class_text.usb_sub_text, class_text.usb_prot_text, e->module ? e->module : "unknown", e->text, e->pci_bus, e->pci_device);
- PUSHs(sv_2mortal(newSVpv(buf, 0)));
- }
- pciusb_free(&entries);
-
-void
-dmi_probe()
- PPCODE:
- //dmidecode_file = "/usr/share/ldetect-lst/dmidecode.Laptop.Dell-Latitude-C810";
- //dmidecode_file = "../../soft/ldetect-lst/test/dmidecode.Laptop.Sony-Vaio-GRX316MP";
-
- struct dmi_entries entries = dmi_probe();
- char buf[2048];
- int i;
-
- EXTEND(SP, entries.nb);
- for (i = 0; i < entries.nb; i++) {
- snprintf(buf, sizeof(buf), "%s\t%s",
- entries.entries[i].module, entries.entries[i].constraints);
- PUSHs(sv_2mortal(newSVpv(buf, 0)));
- }
- dmi_entries_free(entries);
-
-
-unsigned int
-getpagesize()
-
-
-char*
-get_usb_ups_name(int fd)
- CODE:
- /* from nut/drivers/hidups.c::upsdrv_initups() : */
- char name[256];
- ioctl(fd, HIDIOCGNAME(sizeof(name)), name);
- RETVAL=name;
- ioctl(fd, HIDIOCINITREPORT, 0);
- OUTPUT:
- RETVAL
-
-
-
-int
-hasNetDevice(device)
- char * device
- CODE:
- struct ifreq req;
- int s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s == -1) { RETVAL = 0; return; }
-
- strncpy(req.ifr_name, device, IFNAMSIZ);
-
- RETVAL = ioctl(s, SIOCGIFFLAGS, &req) == 0;
- close(s);
- OUTPUT:
- RETVAL
-
-
-int
-isNetDeviceWirelessAware(device)
- char * device
- CODE:
- struct iwreq ifr;
-
- int s = socket(AF_INET, SOCK_DGRAM, 0);
-
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, device, IFNAMSIZ);
- RETVAL = ioctl(s, SIOCGIWNAME, &ifr) != -1;
- close(s);
- OUTPUT:
- RETVAL
-
-
-int enable_net_device(device)
- char * device
- CODE:
- struct ifreq ifr;
- int err;
- int s = socket(AF_INET, SOCK_DGRAM, 0);
-
- strncpy(ifr.ifr_name, device, IFNAMSIZ);
- err = ioctl(s, SIOCGIFFLAGS, &ifr);
- if (!err && !(ifr.ifr_flags & IFF_UP)) {
- ifr.ifr_flags |= IFF_UP;
- err = ioctl(s, SIOCSIFFLAGS, &ifr);
- }
- if (err)
- perror("SIOCSIFFLAGS");
- RETVAL = err;
- OUTPUT:
- RETVAL
-
-void
-get_netdevices()
- PPCODE:
- struct ifconf ifc;
- struct ifreq *ifr;
- int i;
- int numreqs = 10;
-
- int s = socket(AF_INET, SOCK_DGRAM, 0);
-
- ifc.ifc_buf = NULL;
- for (;;) {
- ifc.ifc_len = sizeof(struct ifreq) * numreqs;
- ifc.ifc_buf = realloc(ifc.ifc_buf, ifc.ifc_len);
-
- if (ioctl(s, SIOCGIFCONF, &ifc) < 0) {
- perror("SIOCGIFCONF");
- return;
- }
- if (ifc.ifc_len == sizeof(struct ifreq) * numreqs) {
- /* assume it overflowed and try again */
- numreqs += 10;
- continue;
- }
- break;
- }
- if (ifc.ifc_len) {
- ifr = ifc.ifc_req;
- EXTEND(sp, ifc.ifc_len);
- for (i=0; i < ifc.ifc_len; i+= sizeof(struct ifreq)) {
- PUSHs(sv_2mortal(newSVpv(ifr->ifr_name, 0)));
- ifr++;
- }
- }
-
- close(s);
-
-
-char*
-getNetDriver(char* device)
- ALIAS:
- getHwIDs = 1
- CODE:
- struct ifreq ifr;
- struct ethtool_drvinfo drvinfo;
- int s = socket(AF_INET, SOCK_DGRAM, 0);
-
- memset(&ifr, 0, sizeof(ifr));
- strncpy(ifr.ifr_name, device, IFNAMSIZ);
-
- drvinfo.cmd = ETHTOOL_GDRVINFO;
- ifr.ifr_data = (caddr_t) &drvinfo;
-
- if (ioctl(s, SIOCETHTOOL, &ifr) != -1) {
- switch (ix) {
- case 0:
- RETVAL = strdup(drvinfo.driver);
- break;
- case 1:
- RETVAL = strdup(drvinfo.bus_info);
- break;
- }
- } else { perror("SIOCETHTOOL"); RETVAL = strdup(""); }
- OUTPUT:
- RETVAL
-
-
-int
-addDefaultRoute(gateway)
- char *gateway
- CODE:
- struct rtentry route;
- struct sockaddr_in addr;
- int s = socket(AF_INET, SOCK_DGRAM, 0);
- if (s == -1) { RETVAL = 0; return; }
-
- memset(&route, 0, sizeof(route));
-
- addr.sin_family = AF_INET;
- addr.sin_port = 0;
- inet_aton(gateway, &addr.sin_addr);
- memcpy(&route.rt_gateway, &addr, sizeof(addr));
-
- addr.sin_addr.s_addr = INADDR_ANY;
- memcpy(&route.rt_dst, &addr, sizeof(addr));
- memcpy(&route.rt_genmask, &addr, sizeof(addr));
-
- route.rt_flags = RTF_UP | RTF_GATEWAY;
- route.rt_metric = 0;
-
- RETVAL = !ioctl(s, SIOCADDRT, &route);
- OUTPUT:
- RETVAL
-
-
-char*
-get_hw_address(const char* ifname)
- CODE:
- int s;
- struct ifreq ifr;
- unsigned char *a;
- char *res;
- s = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
- if (s < 0) {
- perror("socket");
- RETVAL = NULL;
- return;
- }
- strncpy((char*) &ifr.ifr_name, ifname, IFNAMSIZ);
- if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) {
- perror("ioctl(SIOCGIFHWADDR)");
- RETVAL = NULL;
- return;
- }
- a = ifr.ifr_hwaddr.sa_data;
- asprintf(&res, "%02x:%02x:%02x:%02x:%02x:%02x", a[0],a[1],a[2],a[3],a[4],a[5]);
- RETVAL= res;
- OUTPUT:
- RETVAL
-
-
-
-char *
-kernel_version()
- CODE:
- struct utsname u;
- if (uname(&u) == 0) RETVAL = u.release; else RETVAL = NULL;
- OUTPUT:
- RETVAL
-
-int
-prom_open()
-
-void
-prom_close()
-
-int
-prom_getsibling(node)
- int node
-
-int
-prom_getchild(node)
- int node
-
-void
-prom_getopt(key)
- char *key
- PPCODE:
- int lenp = 0;
- char *value = NULL;
- value = prom_getopt(key, &lenp);
- EXTEND(sp, 1);
- if (value != NULL) {
- PUSHs(sv_2mortal(newSVpv(value, 0)));
- } else {
- PUSHs(&PL_sv_undef);
- }
-
-void
-prom_setopt(key, value)
- char *key
- char *value
-
-void
-prom_getproperty(key)
- char *key
- PPCODE:
- int lenp = 0;
- char *value = NULL;
- value = prom_getproperty(key, &lenp);
- EXTEND(sp, 1);
- if (value != NULL) {
- PUSHs(sv_2mortal(newSVpv(value, lenp)));
- } else {
- PUSHs(&PL_sv_undef);
- }
-
-void
-prom_getstring(key)
- char *key
- PPCODE:
- int lenp = 0;
- char *value = NULL;
- value = prom_getproperty(key, &lenp);
- EXTEND(sp, 1);
- if (value != NULL) {
- PUSHs(sv_2mortal(newSVpv(value, 0)));
- } else {
- PUSHs(&PL_sv_undef);
- }
-
-int
-prom_getbool(key)
- char *key
-
-void
-initSilo()
-
-char *
-disk2PromPath(disk)
- unsigned char *disk
-
-int
-hasAliases()
-
-char *
-promRootName()
-
-void
-setPromVars(linuxAlias, bootDevice)
- char *linuxAlias
- char *bootDevice
-
-SV *
-iconv(s, from_charset, to_charset)
- char *s
- char *from_charset
- char *to_charset
- CODE:
- RETVAL = iconv_(s, from_charset, to_charset);
- OUTPUT:
- RETVAL
-
-int
-is_tagged_utf8(s)
- SV *s
- CODE:
- RETVAL = SvUTF8(s);
- OUTPUT:
- RETVAL
-
-void
-set_tagged_utf8(s)
- SV *s
- CODE:
- SvUTF8_on(s);
-
-void
-upgrade_utf8(s)
- SV *s
- CODE:
- sv_utf8_upgrade(s);
-
-void
-unset_tagged_utf8(s)
- SV *s
- CODE:
- SvUTF8_off(s);
-
-char *
-standard_charset()
- CODE:
- RETVAL = nl_langinfo(CODESET);
- OUTPUT:
- RETVAL
-
-void
-get_iso_volume_ids(int fd)
- INIT:
- struct iso_primary_descriptor voldesc;
- PPCODE:
- lseek(fd, 16 * ISOFS_BLOCK_SIZE, SEEK_SET);
- if (read(fd, &voldesc, sizeof(struct iso_primary_descriptor)) == sizeof(struct iso_primary_descriptor)) {
- if (voldesc.type[0] == ISO_VD_PRIMARY && !strncmp(voldesc.id, ISO_STANDARD_ID, sizeof(voldesc.id))) {
- XPUSHs(sv_2mortal(newSVpv(voldesc.volume_id, length_of_space_padded(voldesc.volume_id, sizeof(voldesc.volume_id)))));
- XPUSHs(sv_2mortal(newSVpv(voldesc.application_id, length_of_space_padded(voldesc.application_id, sizeof(voldesc.application_id)))));
- }
- }
-
-';
-
-print '
-const char *
-rpmErrorString()
-
-void
-rpmSetVeryVerbose()
- CODE:
- rpmSetVerbosity(RPMMESS_DEBUG);
-
-void
-rpmErrorSetCallback(fd)
- int fd
- CODE:
- rpmError_callback_data = fd;
- rpmErrorSetCallback(rpmError_callback);
-
-int
-rpmvercmp(char *a, char *b);
-';
-
-@macros = (
- [ qw(int S_IFCHR S_IFBLK S_IFIFO KDSKBENT KT_SPEC K_NOSUCHMAP NR_KEYS MAX_NR_KEYMAPS BLKRRPART TIOCSCTTY
- HDIO_GETGEO BLKGETSIZE LOOP_GET_STATUS HIDIOCAPPLICATION
- MS_MGC_VAL MS_RDONLY O_NONBLOCK F_SETFL F_GETFL O_CREAT SECTORSIZE WNOHANG
- VT_ACTIVATE VT_WAITACTIVE VT_GETSTATE CDROM_LOCKDOOR CDROMEJECT CDROM_DRIVE_STATUS CDS_DISC_OK
- LOG_WARNING LOG_INFO LOG_LOCAL1
- ) ],
-);
-
-$\= "\n";
-print;
-
-foreach (@macros) {
- my ($type, @l) = @$_;
- foreach (@l) {
- print<< "END"
-$type
-$_()
- CODE:
- RETVAL = $_;
-
- OUTPUT:
- RETVAL
-
-END
-
- }
-}
-print '
-
-PROTOTYPES: DISABLE
-';
-
diff --git a/perl-install/class_discard.pm b/perl-install/class_discard.pm
deleted file mode 100644
index 6ca677e9d..000000000
--- a/perl-install/class_discard.pm
+++ /dev/null
@@ -1,11 +0,0 @@
-package class_discard; # $Id$
-
-use log;
-
-sub new { bless {}, "class_discard" }
-
-sub AUTOLOAD {
- log::l("class_discard: $AUTOLOAD called at ", caller, ", params ", join(', ', @_));
-}
-
-1;
diff --git a/perl-install/commands b/perl-install/commands
deleted file mode 100755
index f08fbb95c..000000000
--- a/perl-install/commands
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/perl
-
-use diagnostics;
-use strict;
-
-use lib qw(/usr/bin/perl-install .);
-use common;
-use commands;
-
-$::isInstall = 1;
-$::prefix = '/mnt';
-my $progname = basename($0);
-
-eval {
- # hack as some functions are defined by perl... so chmod -> chmod_
- &{$commands::{$progname} || $commands::{$progname . "_"} || \&err}(@ARGV), exit 0;
-};
-die formatError($@) . "\n";
-
-sub err { die "$0: unknown program (unimplemented)\n" }
diff --git a/perl-install/commands.pm b/perl-install/commands.pm
deleted file mode 100644
index 43dcbeca6..000000000
--- a/perl-install/commands.pm
+++ /dev/null
@@ -1,500 +0,0 @@
-package commands; # $Id$
-
-#-########################################################################
-#- This file implement many common shell commands:
-#- true, false, cat, which, dirname, basename, rmdir, lsmod, grep, tr,
-#- mount, umount, mkdir, mknod, ln, rm, chmod, chown, swapon,
-#- swapoff, ls, cp, ps, dd, head, tail, strings, hexdump, more, insmod,
-#- modprobe, route, df, kill, lspci, lssbus, dmesg, sort, du,
-#-########################################################################
-
-use diagnostics;
-use strict;
-use vars qw($printable_chars *ROUTE *DF *PS);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use MDK::Common::System;
-use common;
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub getopts {
- my $o = shift;
- my @r = map { '' } (@_ = split //, $_[0]);
- while (1) {
- local $_ = $o->[0];
- $_ && /^-/ or return @r;
- for (my $i = 0; $i < @_; $i++) { /$_[$i]/ and $r[$i] = $_[$i] }
- shift @$o;
- }
- @r;
-}
-
-sub true() { exit 0 }
-sub false() { exit 1 }
-sub cat { @ARGV = @_; print while <> }
-sub dirname_ { print dirname(@_), "\n" }
-sub basename_ { print basename(@_), "\n" }
-sub rmdir_ { foreach (@_) { rmdir $_ or die "rmdir: can not remove $_\n" } }
-sub lsmod() { print "Module Size Used by\n"; cat("/proc/modules") }
-sub which {
- ARG: foreach (@_) { foreach my $c (split /:/, $ENV{PATH}) { -x "$c/$_" and print("$c/$_\n"), next ARG } }
-}
-
-sub grep_ {
- my ($h, $v, $i) = getopts(\@_, qw(hvi));
- @_ == 0 || $h and die "usage: grep <regexp> [files...]\n";
- my $r = shift;
- $r = qr/$r/i if $i;
- @ARGV = @_; (/$r/ xor $v) and print while <>;
-}
-
-sub tr_ {
- my ($s, $c, $d) = getopts(\@_, qw(s c d));
- @_ >= 1 + (!$d || $s) or die "usage: tr [-c] [-s [-d]] <set1> <set2> [files...]\n or tr [-c] -d <set1> [files...]\n";
- my $set1 = shift;
- my $set2; !$d || $s and $set2 = shift;
- @ARGV = @_;
- eval "(tr/$set1/$set2/$s$d$c, print) while <>";
-}
-
-sub mount {
- @_ or return cat("/proc/mounts");
- my ($t, $r) = getopts(\@_, qw(tr));
- my $fs = $t && shift;
-
- @_ == 2 or die "usage: mount [-r] [-t <fs>] <device> <dir>\n",
- " (use -r for readonly)\n",
- " (if /dev/ is left off the device name, a temporary node will be created)\n";
-
- my ($dev, $where) = @_;
- $fs ||= $dev =~ /:/ ? "nfs" :
- $dev =~ /fd/ ? "vfat" : "ext2";
-
- require fs;
- require modules;
- modules::load_dependencies("/modules/modules.dep");
- fs::mount($dev, $where, $fs, $r);
-}
-
-sub umount {
- @_ == 1 or die "umount expects a single argument\n";
-
- require fs;
- fs::umount($_[0]);
-}
-
-sub mkdir_ {
- my ($_rec) = getopts(\@_, qw(p));
- mkdir_p($_) foreach @_;
-}
-
-
-sub mknod {
- if (@_ == 1) {
- require devices;
- eval { devices::make($_[0]) }; $@ and die "mknod: failed to create $_[0]\n";
- } elsif (@_ == 4) {
- require c;
- my $mode = ${{ "b" => c::S_IFBLK(), "c" => c::S_IFCHR() }}{$_[1]} or die "unknown node type $_[1]\n";
- syscall_('mknod', my $_a = $_[0], $mode | 0600, makedev($_[2], $_[3])) or die "mknod failed: $!\n";
- } else { die "usage: mknod <path> [b|c] <major> <minor> or mknod <path>\n" }
-}
-
-sub ln {
- my ($force, $soft) = getopts(\@_, qw(fs));
- @_ >= 1 or die "usage: ln [-s] [-f] <source> [<dest>]\n";
-
- my ($source, $dest) = @_;
- $dest ||= basename($source);
-
- $force and unlink $dest;
-
- ($soft ? symlink($source, $dest) : link($source, $dest)) or die "ln failed: $!\n";
-}
-
-sub rm {
- my ($rec, undef) = getopts(\@_, qw(rf));
-
- my $rm; $rm = sub {
- foreach (@_) {
- if (!-l $_ && -d $_) {
- $rec or die "$_ is a directory\n";
- &$rm(glob_($_));
- rmdir $_ or die "can not remove directory $_: $!\n";
- } else { unlink $_ or die "rm of $_ failed: $!\n" }
- }
- };
- &$rm(@_);
-}
-
-sub chmod_ {
- @_ >= 2 or die "usage: chmod <mode> <files>\n";
-
- my $mode = shift;
- $mode =~ /^[0-7]+$/ or die "illegal mode $mode\n";
-
- foreach (@_) { chmod oct($mode), $_ or die "chmod failed $_: $!\n" }
-}
-
-sub chown_ {
- my ($rec, undef) = getopts(\@_, qw(r));
- local $_ = shift or die "usage: chown [-r] name[.group] <files>\n";
-
- my ($name, $group) = (split('\.'), $_);
-
- my ($uid, $gid) = (getpwnam($name) || $name, getgrnam($group) || $group);
-
- my $chown; $chown = sub {
- foreach (@_) {
- chown $uid, $gid, $_ or die "chown of file $_ failed: $!\n";
- -d $_ && $rec and &$chown(glob_($_));
- }
- };
- &$chown(@_);
-}
-
-sub swapon {
- @_ == 1 or die "swapon <file>\n";
- require fs;
- fs::swapon($_[0]);
-}
-sub swapoff {
- @_ == 1 or die "swapoff <file>\n";
- require fs;
- fs::swapoff($_[0]);
-}
-
-sub uncpio {
- @_ and die "uncpio reads from stdin\n";
-
-# cpioInstallArchive(gzdopen(0, "r"), NULL, 0, NULL, NULL, &fail);
-}
-
-
-sub rights {
- my $r = '-' x 9;
- my @rights = (qw(x w r x w r x w r), ['t', 0], ['s', 3], ['s', 6]);
- for (my $i = 0; $i < @rights; $i++) {
- if (vec(pack("S", $_[0]), $i, 1)) {
- my ($val, $place) = $i >= 9 ? @{$rights[$i]} : ($rights[$i], $i);
- my $old = \substr($r, 8 - $place, 1);
- $$old = $$old eq '-' && $i >= 9 ? uc $val : $val;
- }
- }
- my @types = split //, "_pc_d_b_-_l_s";
- $types[($_[0] >> 12) & 0xf] . $r;
-}
-
-sub displaySize {
- my $m = $_[0] >> 12;
- $m == 4 || $m == 8 || $m == 10;
-}
-
-sub ls {
- my ($l, $h) = getopts(\@_, qw(lh));
- $h and die "usage: ls [-l] <files...>\n";
-
- @_ or @_ = '.';
- @_ == 1 && -d $_[0] and @_ = glob_($_[0]);
- foreach (sort @_) {
- if ($l) {
- my @s = lstat or warn("can not stat file $_\n"), next;
- formline(
-"@<<<<<<<<< @<<<<<<< @<<<<<<< @>>>>>>>> @>>>>>>>>>>>>>>> @*\n",
- rights($s[2]), getpwuid $s[4] || $s[4], getgrgid $s[5] || $s[5],
- displaySize($s[2]) ? $s[7] : join(", ", unmakedev($s[6])),
- scalar localtime $s[9], -l $_ ? "$_ -> " . readlink $_ : $_);
- print $^A; $^A = '';
- } else { print "$_\n" }
- }
-}
-sub cp {
- @_ >= 2 or die "usage: cp <sources> <dest>\n(this cp does -Rfl by default)\n";
- cp_af(@_);
-}
-
-sub ps {
- @_ and die "usage: ps\n";
- my ($pid, $rss, $cpu, $cmd);
- my ($uptime) = split ' ', first(cat_("/proc/uptime"));
- my $hertz = 100;
-
- require c;
- my $page = c::getpagesize() / 1024;
-
- open PS, ">&STDOUT"; #- PS must be not be localised otherwise the "format PS" fails
- format PS_TOP =
- PID RSS %CPU CMD
-.
- format PS =
-@>>>> @>>>> @>>> @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-$pid, $rss, $cpu, $cmd
-.
- foreach (sort { $a <=> $b } grep { /\d+/ } all('/proc')) {
- $pid = $_;
- my @l = split(' ', cat_("/proc/$pid/stat"));
- $cpu = sprintf "%2.1f", max(0, min(99, ($l[13] + $l[14]) * 100 / $hertz / ($uptime - $l[21] / $hertz)));
- $rss = (split ' ', cat_("/proc/$pid/stat"))[23] * $page;
- ($cmd = cat_("/proc/$pid/cmdline")) =~ s/\0/ /g;
- $cmd ||= (split ' ', (cat_("/proc/$pid/stat"))[0])[1];
- write PS;
- }
-}
-
-
-sub dd {
- my $u = "usage: dd [-h] [-p] [if=<file>] [of=<file>] [bs=<number>] [count=<number>]\n";
- my ($help, $percent) = getopts(\@_, qw(hp));
- die $u if $help;
- my %h = (if => *STDIN, of => *STDOUT, bs => 512, count => undef);
- foreach (@_) {
- /(.*?)=(.*)/ && exists $h{$1} or die $u;
- $h{$1} = $2;
- }
- local (*IF, *OF); my ($tmp, $nb, $read);
- ref($h{if}) eq 'GLOB' ? (*IF = $h{if}) : sysopen(IF, $h{if}, 0) || die "error: can not open file $h{if}\n";
- ref($h{of}) eq 'GLOB' ? (*OF = $h{of}) : sysopen(OF, $h{of}, 0x41) || die "error: can not open file $h{of}\n";
-
- $h{bs} = removeXiBSuffix($h{bs});
-
- for ($nb = 0; !$h{count} || $nb < $h{count}; $nb++) {
- printf "\r%02.1d%%", 100 * $nb / $h{count} if $h{count} && $percent;
- $read = sysread(IF, $tmp, $h{bs}) or ($h{count} ? die "error: can not read block $nb\n" : last);
- syswrite(OF, $tmp) or die "error: can not write block $nb\n";
- $read < $h{bs} and $read = 1, last;
- }
- print STDERR "\r$nb+$read records in\n";
- print STDERR "$nb+$read records out\n";
-}
-
-sub head_tail {
- my ($h, $n) = getopts(\@_, qw(hn));
- $h || @_ < to_bool($n) and die "usage: $0 [-h] [-n lines] [<file>]\n";
- $n = $n ? shift : 10;
- my $fh; @_ ? open($fh, $_[0]) || die "error: can not open file $_[0]\n" : ($fh = *STDIN);
-
- if ($0 eq 'head') {
- local $_;
- while (<$fh>) { $n-- or return; print }
- } else {
- @_ = ();
- local $_;
- while (<$fh>) { push @_, $_; @_ > $n and shift }
- print @_;
- }
-}
-sub head { $0 = 'head'; &head_tail }
-sub tail { $0 = 'tail'; &head_tail }
-
-sub strings {
- my ($h, $o, $n) = getopts(\@_, qw(hon));
- $h and die "usage: strings [-o] [-n min-length] [<files>]\n";
- $n = $n ? shift : 4;
- $/ = "\0"; @ARGV = @_; my $l = 0;
- local $_;
- while (<>) {
- while (/[$printable_chars]{$n,}/og) {
- printf "%07d ", ($l + length $') if $o;
- print "$&\n";
- }
- $l += length;
- } continue { $l = 0 if eof }
-}
-
-sub hexdump {
- my $i = 0; $/ = \16; @ARGV = @_;
- local $_;
- while (<>) {
- printf "%08lX ", $i; $i += 16;
- print join(" ", (map { sprintf "%02X", $_ } unpack("C*", $_)),
- (s/[^$printable_chars]/./og, $_)[1]), "\n";
- }
-}
-
-sub more {
- @ARGV = @_;
- require devices;
- my $tty = devices::make('tty');
- my $n = 0;
- open(my $IN, $tty) or die "can not open $tty\n";
- local $_;
- while (<>) {
- if (++$n == 25) {
- my $v = <$IN>;
- $v =~ /^q/ and exit 0;
- $n = 0;
- }
- print;
- }
-}
-
-sub insmod {
- my ($h) = getopts(\@_, qw(h));
- $h || @_ == 0 and die "usage: insmod <module> [options]\n";
- my $f = shift;
-
- require run_program;
- require modules;
-
- if (! -r $f) {
- my $name = basename($f);
- $name =~ s/\.k?o$//;
- ($f) = modules::extract_modules('/tmp', $name);
- }
- if (! -r $f) {
- die "can not find module $f\n";
- }
- run_program::run(["insmod_", "insmod"], "-f", $f, @_) or die("insmod $f failed");
- unlink $f;
-}
-
-sub modprobe {
- my ($h) = getopts(\@_, qw(h));
- $h || @_ == 0 and die "usage: modprobe <module> [options]\n";
- my $name = shift;
- require modules;
- modules::load_dependencies("/modules/modules.dep");
- modules::load_with_options([ $name ], { $name => join(' ', @_) });
-}
-
-sub route {
- @_ == 0 or die "usage: route\nsorry, no modification handled\n";
- my ($titles, @l) = cat_("/proc/net/route");
- my @titles = split ' ', $titles;
- my %l;
- open ROUTE, ">&STDOUT"; #- ROUTE must be not be localised otherwise the "format ROUTE" fails
- format ROUTE_TOP =
-Destination Gateway Mask Iface
-.
- format ROUTE =
-@<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<<<<<< @<<<<<<<
-$l{Destination}, $l{Gateway}, $l{Mask}, $l{Iface}
-.
- foreach (@l) {
- /^\s*$/ and next;
- @l{@titles} = split;
- $_ = join ".", reverse map { hex $_ } unpack "a2a2a2a2", $_ foreach @l{qw(Destination Gateway Mask)};
- $l{Destination} = 'default' if $l{Destination} eq "0.0.0.0";
- $l{Gateway} = '*' if $l{Gateway} eq "0.0.0.0";
- write ROUTE;
- }
-}
-
-sub df {
- my ($h) = getopts(\@_, qw(h));
- my ($dev, $size, $free, $used, $use, $mntpoint);
- open DF, ">&STDOUT"; #- DF must be not be localised otherwise the "format DF" fails
- format DF_TOP =
-Filesystem Size Used Avail Use Mounted on
-.
- format DF =
-@<<<<<<<<<<<<<<<< @>>>>>>> @>>>>>>> @>>>>>>> @>>>>>% @<<<<<<<<<<<<<<<<<<<<<<<<<
-$dev, $size, $used, $free, $use, $mntpoint
-.
- my %h;
- foreach (cat_("/proc/mounts"), cat_("/etc/mtab")) {
- ($dev, $mntpoint) = split;
- $h{$dev} = $mntpoint;
- }
- foreach (sort keys %h) {
- $dev = $_;
- ($size, $free) = MDK::Common::System::df($mntpoint = $h{$dev});
- $size or next;
-
- $use = int(100 * ($size - $free) / $size);
- $used = $size - $free;
- if ($h) {
- $used = int($used / 1024 . "M");
- $size = int($size / 1024 . "M");
- $free = int($free / 1024 . "M");
- }
- write DF if $size;
- }
-}
-
-sub kill {
- my $signal = 15;
- @_ or die "usage: kill [-<signal>] pids\n";
- $signal = (shift, $1)[1] if $_[0] =~ /^-(.*)/;
- kill $signal, @_ or die "kill failed: $!\n";
-}
-
-sub lspci() { lspcidrake() }
-sub lspcidrake() {
- require detect_devices;
- print join "\n", detect_devices::stringlist(), '';
-}
-*lssbus = \&lspci;
-
-sub dmesg() { print cat_("/tmp/syslog") }
-
-sub sort {
- my ($n, $h) = getopts(\@_, qw(nh));
- $h and die "usage: sort [-n] [<file>]\n";
- my $fh; @_ ? open($fh, $_[0]) || die "error: can not open file $_[0]\n" : ($fh = *STDIN);
- if ($n) {
- print(sort { $a <=> $b } <$fh>);
- } else {
- print(sort <$fh>);
- }
-}
-
-sub du {
- my ($s, $h) = getopts(\@_, qw(sh));
- $h || !$s and die "usage: du -s [<directories>]\n";
-
- my $f; $f = sub {
- my ($e) = @_;
- my $s = (lstat($e))[12];
- $s += sum(map { &$f($_) } glob_("$e/*")) if !-l _ && -d _;
- $s;
- };
- print &$f($_) >> 1, "\t$_\n" foreach @_ ? @_ : glob_("*");
-}
-
-sub install_cpio($$;@) {
- my ($dir, $name, @more) = @_;
-
- return "$dir/$name" if -e "$dir/$name";
-
- my $cpio = "$dir.cpio.bz2";
- -e $cpio or return;
-
- eval { rm("-r", $dir) };
- mkdir $dir, 0755;
- require run_program;
-
- my $more = join " ", map { $_ && "$_ $_/*" } @more;
- run_program::run("cd $dir ; $ENV{LD_LOADER} bzip2 -cd $cpio | $ENV{LD_LOADER} cpio -id $name $name/* $more");
-
- "$dir/$name";
-}
-
-sub bug {
- my ($h) = getopts(\@_, "h");
- $h and die "usage: bug\nput file report.bug on fat formatted floppy\n";
-
- require detect_devices;
- mount devices::make(detect_devices::floppy()), "/fd0";
-
- require install_any;
- output("/fd0/report.bug", install_any::report_bug());
- umount "/fd0";
- common::sync();
-}
-
-sub loadkeys {
- my ($h) = getopts(\@_, "h");
- $h || @_ != 1 and die "usage: loadkeys <keyboard>\n";
-
- require keyboard;
- keyboard::setup({ KEYBOARD => $_[0] });
-}
-
-sub sync() { common::sync() }
-
-1;
diff --git a/perl-install/common.pm b/perl-install/common.pm
deleted file mode 100644
index 15da3a2c5..000000000
--- a/perl-install/common.pm
+++ /dev/null
@@ -1,308 +0,0 @@
-package common; # $Id$
-
-use MDK::Common;
-use MDK::Common::System;
-use diagnostics;
-use strict;
-use run_program;
-use vars qw(@ISA @EXPORT $SECTORSIZE);
-
-@ISA = qw(Exporter);
-# no need to export ``_''
-@EXPORT = qw($SECTORSIZE N N_ check_for_xserver files_exist formatTime formatXiB is_xbox makedev mandrake_release removeXiBSuffix require_root_capability salt setVirtual set_alternative set_l10n_sort set_permissions translate unmakedev untranslate);
-
-# perl_checker: RE-EXPORT-ALL
-push @EXPORT, @MDK::Common::EXPORT;
-
-
-$::prefix ||= ""; # no warning
-
-#-#####################################################################################
-#- Globals
-#-#####################################################################################
-our $SECTORSIZE = 512;
-
-#-#####################################################################################
-#- Functions
-#-#####################################################################################
-
-
-sub sprintf_fixutf8 {
- my $need_upgrade;
- $need_upgrade |= to_bool(c::is_tagged_utf8($_)) + 1 foreach @_;
- if ($need_upgrade == 3) { c::upgrade_utf8($_) foreach @_ }
- sprintf shift, @_;
-}
-
-sub N {
- $::one_message_has_been_translated ||= join(':', (caller(0))[1,2]); #- see ugtk2.pm
- my $s = shift @_; my $t = translate($s);
- sprintf_fixutf8 $t, @_;
-}
-sub N_ { $_[0] }
-
-
-sub salt {
- my ($nb) = @_;
- require devices;
- open(my $F, devices::make("random")) or die "missing random";
- my $s; read $F, $s, $nb;
- $s = pack("b8" x $nb, unpack "b6" x $nb, $s);
- $s =~ tr|\0-\x3f|0-9a-zA-Z./|;
- $s;
-}
-
-sub makedev { ($_[0] << 8) | $_[1] }
-sub unmakedev { $_[0] >> 8, $_[0] & 0xff }
-
-sub translate_real {
- my ($s) = @_;
- $s or return '';
- foreach (@::textdomains, 'libDrakX') {
- my $s2 = c::dgettext($_, $s);
- return $s2 if $s ne $s2;
- }
- $s;
-}
-
-sub translate {
- my $s = translate_real(@_);
- $::need_utf8_i18n and c::set_tagged_utf8($s);
-
- #- translation with context, kde-like
- $s =~ s/^_:.*\n//;
- $s;
-}
-
-
-sub untranslate {
- my $s = shift || return;
- foreach (@_) { translate($_) eq $s and return $_ }
- die "untranslate failed";
-}
-
-#- This is needed because text printed by Gtk2 will always be encoded
-#- in UTF-8;
-#- we first check if LC_ALL is defined, because if it is, changing
-#- only LC_COLLATE will have no effect.
-sub set_l10n_sort() {
- my $collation_locale = $ENV{LC_ALL};
- if (!$collation_locale) {
- require POSIX;
- $collation_locale = POSIX::setlocale(POSIX::LC_COLLATE());
- $collation_locale =~ /UTF-8/ or POSIX::setlocale(POSIX::LC_COLLATE(), "$collation_locale.UTF-8");
- }
-}
-
-
-BEGIN { undef *availableRamMB }
-sub availableRamMB() {
- my $s = MDK::Common::System::availableRamMB();
- #- HACK HACK: if i810 and memsize
- require detect_devices;
- return $s - 1 if $s == 128 && detect_devices::matching_driver__regexp('^Card:Intel 810$');
- $s;
-}
-
-sub setVirtual {
- my ($vt_number) = @_;
- my $vt = '';
- sysopen(my $C, "/dev/console", 2) or die "failed to open /dev/console: $!";
- ioctl($C, c::VT_GETSTATE(), $vt) &&
- ioctl($C, c::VT_ACTIVATE(), $vt_number) &&
- ioctl($C, c::VT_WAITACTIVE(), $vt_number) or die "setVirtual failed";
- unpack "S", $vt;
-}
-
-sub nonblock {
- my ($F) = @_;
- fcntl($F, c::F_SETFL(), fcntl($F, c::F_GETFL(), 0) | c::O_NONBLOCK());
-}
-
-sub removeXiBSuffix {
- local $_ = shift;
-
- /(\d+)\s*kB?$/i and return $1 * 1024;
- /(\d+)\s*MB?$/i and return $1 * 1024 * 1024;
- /(\d+)\s*GB?$/i and return $1 * 1024 * 1024 * 1024;
- /(\d+)\s*TB?$/i and return $1 * 1024 * 1024 * 1024 * 1024;
- $_;
-}
-sub formatXiB {
- my ($newnb, $o_newbase) = @_;
- my $newbase = $o_newbase || 1;
- my ($nb, $base);
- my $decr = sub {
- ($nb, $base) = ($newnb, $newbase);
- $base >= 1024 ? ($newbase = $base / 1024) : ($newnb = $nb / 1024);
- };
- foreach ('', N("KB"), N("MB"), N("GB")) {
- $decr->();
- if ($newnb < 1 && $newnb * $newbase < 1) {
- my $v = $nb * $base;
- my $s = $v < 10 && int(10 * $v - 10 * int($v));
- return int($v) . ($s ? ".$s" : '') . $_;
- }
- }
- int($newnb * $newbase) . N("TB");
-}
-
-sub formatTime {
- my ($s, $m, $h) = gmtime($_[0]);
- if ($h) {
- sprintf "%02d:%02d", $h, $m;
- } elsif ($m > 1) {
- N("%d minutes", $m);
- } elsif ($m == 1) {
- N("1 minute");
- } else {
- N("%d seconds", $s);
- }
-}
-
-sub expand_symlinks_but_simple {
- my ($f) = @_;
- my $link = readlink($f);
- my $f2 = expand_symlinks($f);
- if ($link && $link !~ m|/|) {
- # put back the last simple symlink
- $f2 =~ s|\Q$link\E$|basename($f)|e;
- }
- $f2;
-}
-
-sub sync { &MDK::Common::System::sync }
-
-BEGIN { undef *formatError }
-sub formatError {
- my ($err) = @_;
- ref($err) eq 'SCALAR' and $err = $$err;
- log::l("error: $err");
- &MDK::Common::String::formatError($err);
-}
-
-# Group the list by n. Returns a reference of lists of length n
-sub group_n_lm {
- my $n = shift;
- my @l;
- push @l, [ splice(@_, 0, $n) ] while @_;
- @l;
-}
-
-sub join_lines {
- my @l;
- my $s;
- foreach (@_) {
- if (/^\s/) {
- $s .= $_;
- } else {
- push @l, $s if $s;
- $s = $_;
- }
- }
- @l, if_($s, $s);
-}
-
-
-sub set_alternative {
- my ($command, $executable) = @_;
-
- #- check the existance of $executable as an alternative for $command
- #- (is this needed???)
- run_program::rooted_get_stdout($::prefix, 'update-alternatives', '--display', $command) =~ /^\Q$executable /m or return;
-
- #- this does not handle relative symlink, but neither does update-alternatives ;p
- symlinkf $executable, "$::prefix/etc/alternatives/$command";
-}
-
-sub files_exist { and_(map { -f "$::prefix$_" } @_) }
-
-sub secured_file {
- my ($f) = @_;
- c::is_secure_file($f) or die "can not ensure a safe $f";
- $f;
-}
-
-sub set_permissions {
- my ($file, $perms, $o_owner, $o_group) = @_;
- # We only need to set the permissions during installation to be able to
- # print test pages. After installation the devfsd daemon does the business
- # automatically.
- return 1 unless $::isInstall;
- if ($o_owner && $o_group) {
- run_program::rooted($::prefix, "/bin/chown", "$o_owner.$o_group", $file)
- or die "Could not start chown!";
- } elsif ($o_owner) {
- run_program::rooted($::prefix, "/bin/chown", $o_owner, $file)
- or die "Could not start chown!";
- } elsif ($o_group) {
- run_program::rooted($::prefix, "/bin/chgrp", $o_group, $file)
- or die "Could not start chgrp!";
- }
- run_program::rooted($::prefix, "/bin/chmod", $perms, $file)
- or die "Could not start chmod!";
-}
-
-sub release_file {
- my ($o_dir) = @_;
- find { -r "$o_dir$_" } map { "/etc/$_" } 'mandrakelinux-release', 'mandrake-release', 'release', 'redhat-release';
-}
-
-sub mandrake_release {
- my ($o_dir) = @_;
- my $f = release_file($o_dir);
- $f && chomp_(cat_("$o_dir$f"));
-}
-
-sub require_root_capability() {
- return if $::testing || !$>; # we're already root
- if (check_for_xserver()) {
- if (fuzzy_pidofs(qr/\bkwin\b/) > 0) {
- exec("kdesu", "--ignorebutton", "-c", "$0 @ARGV") or die N("kdesu missing");
- }
- }
- exec { 'consolehelper' } $0, @ARGV or die N("consolehelper missing");
-
- # still not root ?
- die "you must be root to run this program" if $>;
-}
-
-sub check_for_xserver() {
- if (!defined $::xtest) {
- $::xtest = 0;
- eval {
- require xf86misc::main;
- $::xtest = xf86misc::main::Xtest($ENV{DISPLAY});
- } if $ENV{DISPLAY};
- }
- return $::xtest;
-}
-
-sub is_xbox() {
- require detect_devices;
- any { $_->{vendor} == 0x10de && $_->{id} == 0x02a5 } detect_devices::pci_probe();
-}
-
-#- special unpack
-#- - returning an array refs for each element like "s10"
-#- - handling things like s10* at the end of the format
-sub unpack_with_refs {
- my ($format, $s) = @_;
- my $initial_format = $format;
- my @r;
- while ($format =~ s/\s*(\w(\d*))(\*?)\s*//) {
- my ($sub_format, $nb, $many) = ($1, $2, $3);
- $many && $format and internal_error("bad * in the middle of format in $initial_format");
-
- my $done = $many && !length($s);
- while (!$done) {
- my @l = unpack("$sub_format a*", $s);
- $s = pop @l;
- push @r, $nb ? \@l : @l;
- $done = !$many || !length($s);
- }
- }
- @r;
-}
-
-1;
diff --git a/perl-install/crypto.pm b/perl-install/crypto.pm
deleted file mode 100644
index c07556f9f..000000000
--- a/perl-install/crypto.pm
+++ /dev/null
@@ -1,802 +0,0 @@
-package crypto; # $Id$
-
-use diagnostics;
-use strict;
-
-use vars qw(%url2land %land2tzs %static_mirrors %mirrors);
-
-use MDK::Common::System;
-use common;
-use log;
-use ftp;
-
-%url2land = (
- at => N("Austria"),
- au => N("Australia"),
- be => N("Belgium"),
- br => N("Brazil"),
- ca => N("Canada"),
- ch => N("Switzerland"),
- cr => N("Costa Rica"),
- cz => N("Czech Republic"),
- de => N("Germany"),
- dk => N("Denmark"),
- ee => N("Estonia"),
- es => N("Spain"),
- fi => N("Finland"),
- fr => N("France"),
- gr => N("Greece"),
- hu => N("Hungary"),
- ie => N("Ireland"),
- il => N("Israel"),
- it => N("Italy"),
- jp => N("Japan"),
- nl => N("Netherlands"),
- no => N("Norway"),
- nz => N("New Zealand"),
- pl => N("Poland"),
- pt => N("Portugal"),
- ru => N("Russia"),
- se => N("Sweden"),
- sk => N("Slovakia"),
- th => N("Thailand"),
- tw => N("Taiwan"),
- za => N("South Africa"),
- );
-
-%land2tzs = (
- N("Australia") => [ 'Australia/Sydney' ],
- N("Austria") => [ 'Europe/Vienna', 'Europe/Brussels', 'Europe/Berlin' ],
- N("Belgium") => [ 'Europe/Brussels', 'Europe/Paris', 'Europe/Berlin' ],
- N("Brazil") => [ 'Brazil/East' ],
- N("Canada") => [ 'Canada/Atlantic', 'Canada/Eastern' ],
- N("Czech Republic") => [ 'Europe/Prague', 'Europe/Berlin' ],
- N("Denmark") => [ 'Europe/Copenhagen', 'Europe/Berlin' ],
- N("Estonia") => [ 'Europe/Tallinn', 'Europe/Helsinki' ],
- N("Finland") => [ 'Europe/Helsinki', 'Europe/Tallinn' ],
- N("France") => [ 'Europe/Paris', 'Europe/Brussels', 'Europe/Berlin' ],
- N("Germany") => [ 'Europe/Berlin', 'Europe/Prague' ],
- N("Greece") => [ 'Europe/Athens', 'Europe/Prague' ],
- N("Hungary") => [ 'Europe/Budapest' ],
- N("Ireland") => [ 'Europe/Dublin', 'Europe/London' ],
- N("Israel") => [ 'Asia/Tel_Aviv' ],
- N("Italy") => [ 'Europe/Rome', 'Europe/Brussels', 'Europe/Paris' ],
- N("Japan") => [ 'Asia/Tokyo', 'Asia/Seoul' ],
- N("Netherlands") => [ 'Europe/Amsterdam', 'Europe/Brussels', 'Europe/Berlin' ],
- N("New Zealand") => [ 'Pacific/Auckland' ],
- N("Norway") => [ 'Europe/Oslo', 'Europe/Stockholm' ],
- N("Poland") => [ 'Europe/Warsaw' ],
- N("Portugal") => [ 'Europe/Lisbon', 'Europe/Madrid' ],
- N("Russia") => [ 'Europe/Moscow', ],
- N("Slovakia") => [ 'Europe/Bratislava' ],
- N("South Africa") => [ 'Africa/Johannesburg' ],
- N("Spain") => [ 'Europe/Madrid', 'Europe/Lisbon' ],
- N("Sweden") => [ 'Europe/Stockholm', 'Europe/Oslo' ],
- N("Switzerland") => [ 'Europe/Zurich', 'Europe/Berlin', 'Europe/Brussels' ],
- N("Taiwan") => [ 'Asia/Taipei', 'Asia/Seoul' ],
- N("Thailand") => [ 'Asia/Bangkok', 'Asia/Seoul' ],
- N("United States") => [ 'America/New_York', 'Canada/Atlantic', 'Asia/Tokyo', 'Australia/Sydney', 'Europe/Paris' ],
- );
-
-%static_mirrors = (
-# "ackbar" => [ "Ackbar", "/updates", "a", "a" ],
- );
-
-%mirrors = ();
-
-sub mirror2text { $mirrors{$_[0]} && $mirrors{$_[0]}[0] . '|' . $_[0] }
-sub mirrors {
- my ($o_distro_type, $o_use_local_list) = @_;
-
- unless (keys %mirrors) {
- my $f;
- if ($o_use_local_list) {
- $f = \*DATA;
- } else {
- #- contact the following URL to retrieve the list of mirrors.
- require http;
- $f = http::getFile("http://www.mandrivalinux.com/mirrorsfull.list");
- }
-
- local $SIG{ALRM} = sub { die "timeout" };
- $o_use_local_list or alarm 60;
- my $distro_type = $o_distro_type || 'updates';
- my $sub_dir = $distro_type =~ /cooker|community/ ? '' : '/' . version() . '/main_updates';
- foreach (<$f>) {
- my ($arch, $url, $dir) = m|$distro_type([^:]*):ftp://([^/]*)(/\S*)| or next;
- MDK::Common::System::compat_arch($arch) or next;
- my $land = N("United States");
- foreach (keys %url2land) {
- my $qu = quotemeta $_;
- $url =~ /\.$qu(?:\..*)?$/ and $land = $url2land{$_};
- }
- $mirrors{$url} = [ $land, $dir . $sub_dir ];
- }
- unless ($o_use_local_list) {
- http::getFile('/XXX'); #- close connection.
- alarm 0;
- }
-
- #- now add static mirror (in case of something wrong happened above).
- add2hash(\%mirrors, \%static_mirrors);
- }
- keys %mirrors;
-}
-
-sub bestMirror {
- my ($string, $o_distro_type) = @_;
- my %mirror2value;
-
- foreach my $url (mirrors($o_distro_type)) {
- my $value = 0;
- my $cvalue = mirrors($o_distro_type);
-
- $mirror2value{$url} ||= 1 + $cvalue;
- foreach (@{$land2tzs{$mirrors{$url}[0]} || []}) {
- $_ eq $string and $mirror2value{$url} > $value and $mirror2value{$url} = $value;
- (split '/')[0] eq (split '/', $string)[0] and $mirror2value{$url} > $cvalue and $mirror2value{$url} = $cvalue;
- ++$value;
- }
- }
- my $min_value = min(values %mirror2value);
-
- my @possible = (grep { $mirror2value{$_} == $min_value } keys %mirror2value) x 2; #- increase probability
- push @possible, grep { $mirror2value{$_} == 1 + $min_value } keys %mirror2value;
-
- $possible[rand @possible];
-}
-
-#- hack to retrieve Mandrivaalinux version...
-sub version() {
- require pkgs;
- my $pkg = pkgs::packageByName($::o->{packages}, 'mandrakelinux-release');
- $pkg && $pkg->version || '9.1'; #- safe but dangerous ;-)
-}
-
-sub dir { $mirrors{$_[0]}[1] }
-sub ftp($) { ftp::new($_[0], dir($_[0])) }
-
-sub getFile {
- my ($file, $o_host) = @_;
- my $host = $o_host || $crypto::host;
- my $dir = dir($host);
- log::l("getting crypto file $file on directory $dir with login $mirrors{$host}[2]");
- my ($ftp, $retr) = ftp::new($host, $dir,
- if_($mirrors{$host}[2], $mirrors{$host}[2]),
- if_($mirrors{$host}[3], $mirrors{$host}[3])
- );
- $$retr->close if $$retr;
- $$retr = $ftp->retr($file) or ftp::rewindGetFile();
- $$retr ||= $ftp->retr($file);
-}
-
-sub getPackages {
- my ($packages, $mirror) = @_;
-
- $crypto::host = $mirror;
-
- #- get pubkey file first as we cannot handle 2 files opened simultaneously.
- my $pubkey;
- eval {
- my $fpubkey = getFile("media_info/pubkey", $mirror);
- $pubkey = [ $packages->parse_armored_file($fpubkey) ];
- };
-
- #- check first if there is something to get...
- my $fhdlist = getFile("media_info/hdlist.cz", $mirror);
- unless ($fhdlist) {
- log::l("no updates available, bailing out");
- return;
- }
-
- #- extract hdlist of crypto, then depslist.
- require pkgs;
- my $update_medium = pkgs::psUsingHdlist('ftp', $packages, "hdlist-updates.cz", "1u", "",
- "Updates for Mandriva Linux " . version(), 1, $fhdlist, $pubkey);
- if ($update_medium) {
- log::l("read updates hdlist");
- #- keep in mind where is the URL prefix used according to mirror (for install_any::install_urpmi).
- $update_medium->{prefix} = "ftp://$mirror" . dir($mirror);
- #- (re-)enable the medium to allow install of package,
- #- make it an update medium (for install_any::install_urpmi).
- $update_medium->{selected} = 1;
- $update_medium->{update} = 1;
-
- $install_any::global_ftp_prefix = [ $mirror, dir($mirror) ]; #- host, dir (for install_any::getFile)
-
- #- search for packages to update.
- $packages->{rpmdb} ||= pkgs::rpmDbOpen();
- pkgs::selectPackagesToUpgrade($packages, $update_medium);
- }
- return $update_medium;
-}
-
-sub get {
- my ($mirror, $dir, @files) = @_;
- foreach (@files) {
- log::l("crypto: downloading $_");
- ftp($mirror)->get($_, "$dir/$_");
- }
- int @files;
-}
-
-1;
-
-#- mirror list, hardcoded here to be used in mini-cds (ftp suppl. media)
-__DATA__
-communityi586:ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mandrake/devel/community/i586/media/main
-communityi586:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrake-devel/community/i586/media/main
-communityi586:ftp://ftp.lip6.fr/pub/linux/distributions/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrake/devel/community/i586/media/main
-communityi586:ftp://ftp.proxad.net/pub/Distributions_Linux/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.tugraz.at/mirror/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.uninett.no/pub/unix/Linux/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://jungle.metalab.unc.edu/pub/Linux/distributions/mandrake/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://mandrake.contactel.cz/Mandrakelinux/devel/community/i586/media/main
-communityi586:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake-devel/community/i586/media/main
-communityi586:rsync://ftp.sunet.se::Mandrakelinux/devel/community/i586/media/main
-communityi586:rsync://mirrors.usc.edu::mandrakelinux/devel/community/i586/media/main
-cookerppc:ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mandrake/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.club-internet.fr/pub/unix/linux/distributions/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrake-devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrake/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.proxad.net/pub/Distributions_Linux/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.tugraz.at/mirror/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://ftp.uninett.no/pub/unix/Linux/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://mandrake.contactel.cz/Mandrakelinux/devel/cooker/ppc/media/main
-cookerppc:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake-devel/cooker/ppc/media/main
-updatesppc:ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mandrake/official/updates/ppc
-updatesppc:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.club-internet.fr/pub/unix/linux/distributions/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.esat.net/pub/linux/mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.ikoula.com/pub/ftp.mandrake-linux.com/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrake/updates/ppc
-updatesppc:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.pcds.ch/pub/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.proxad.net/pub/Distributions_Linux/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.ps.pl/mirrors/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.tugraz.at/mirror/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.uninett.no/pub/unix/Linux/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://ftp.vat.tu-dresden.de/pub/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://jungle.metalab.unc.edu/pub/Linux/distributions/mandrake/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://linux.cdpa.nsysu.edu.tw/pub/mandrake/updates/ppc
-updatesppc:ftp://mandrake.contactel.cz/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://mandrake.mirrors.pair.com/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://mirrors.secsup.org/pub/linux/mandrake/Mandrakelinux/official/updates/ppc
-updatesppc:ftp://spirit.profinet.sk/mirrors/Mandrake/updates/ppc
-updatesppc:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake/updates/ppc
-updatesppc:ftp://updates.roma2.infn.it/linux/updates/mandrake/ppc
-updatesppc:rsync://ftp.sunet.se::Mandrakelinux/official/updates/ppc
-updatesppc:rsync://mirrors.usc.edu::mandrakelinux/official/updates/ppc
-cookerx86_64:ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/mandrake/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.club-internet.fr/pub/unix/linux/distributions/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrake-devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrake/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.proxad.net/pub/Distributions_Linux/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.tugraz.at/mirror/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://ftp.uninett.no/pub/unix/Linux/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/devel/cooker/x86_64/media/main
-cookerx86_64:ftp://mandrake.contactel.cz/Mandrakelinux/devel/cooker/x86_64/media/main
-cookeri586:ftp://anorien.csc.warwick.ac.uk/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://bo.mirror.garr.it/pub/mirrors/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://fr2.rpmfind.net/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.ale.org/pub/mirrors/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.aso.ee/pub/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.belnet.be/packages/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.bylinux.net/pub/mirror/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.cica.es/pub/Linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.ciril.fr/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.cise.ufl.edu/pub/mirrors/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.cs.ucr.edu/pub/mirrors/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.esat.net/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.fh-wolfenbuettel.de/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.fi.muni.cz/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.free.fr/mirrors/ftp.mandrake-linux.com/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.gtlib.cc.gatech.edu/pub/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.heanet.ie/pub/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.icm.edu.pl/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.int-evry.fr/pub/linux/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.kddlabs.co.jp/Linux/packages/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.linux.cz/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.lip6.fr/pub/linux/distributions/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.mandrake.ikoula.com/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.mirrorservice.org/pub/Mandrake_Linux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.nara.wide.ad.jp/pub/Linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.ndlug.nd.edu/pub/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.neva.ru/Linux-Distrib/Mandrake/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.ntua.gr/pub/linux/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.phys.ttu.edu/pub/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.physics.auth.gr/pub/mirrors/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.planetmirror.com/pub/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.prew.hu/pub/Linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.ps.pl/mirrors/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.rediris.es/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.riken.go.jp/pub/Linux/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.sun.ac.za/pub/linux/mandrake/pub/Linux/distributions/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.sunsite.org.uk/package/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.tu-chemnitz.de/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.tuniv.szczecin.pl/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.uasw.edu/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.uio.no/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.uni-wuppertal.de/pub/linux/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.uninett.no/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp.vat.tu-dresden.de/pub/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://ftp3.mandrake.sk/mirrors/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://helios.dii.utk.edu/pub/linux/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://mandrake.contactel.cz/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mandrake.mirrors.pair.com/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mdk.linux.org.tw/pub/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.aca.oakland.edu/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.averse.net/pub/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.cs.wisc.edu/pub/mirrors/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.fis.unb.br/pub/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.pacific.net.au/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.switch.ch/mirror/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirror.usu.edu/mirrors/Mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://mirrors.secsup.org/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirrors.usc.edu/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://mirrors.xmission.com/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://ramses.wh2.tu-dresden.de/pub/mirrors/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://raven.cslab.vt.edu/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://sunsite.cnlab-switch.ch/mirror/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://sunsite.mff.cuni.cz/OS/Linux/Dist/Mandrake/mandrake/devel/cooker/i586/media/main
-cookeri586:ftp://tux.cprm.net/pub/Mandrake/devel/cooker/i586/media/main
-cookeri586:http://anorien.csc.warwick.ac.uk/mirrors/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://fr2.rpmfind.net/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://ftp.ale.org/pub/mirrors/mandrake/devel/cooker/i586/media/main
-cookeri586:http://ftp.heanet.ie/pub/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://ftp.nluug.nl/ftp/pub/os/Linux/distr/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://ftp.rediris.es/pub/linux/distributions/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://ftp.riken.go.jp/Linux/mandrake/devel/cooker/i586/media/main
-cookeri586:http://ftp.surfnet.nl/ftp/pub/os/Linux/distr/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://gulus.usherbrooke.ca/pub/distro/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://mandrake.mirrors.pair.com/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://mirror.hamakor.org.il/pub/mirrors/mandrake/devel/cooker/i586/media/main
-cookeri586:http://mirror.pacific.net.au/linux/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:http://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://carroll.cac.psu.edu/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://ftp.fi.muni.cz/pub/linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://ftp.join.uni-muenster.de/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://ftp.nluug.nl/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://ftp.riken.go.jp/mandrake/devel/cooker/i586/media/main
-cookeri586:rsync://ftp.surfnet.nl/Mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://mirror.umr.edu/mandrake/devel/cooker/i586/media/main
-cookeri586:rsync://rsync.mirrorservice.org/sunsite.uio.no/pub/unix/Linux/mandrakelinux/devel/cooker/i586/media/main
-cookeri586:rsync://rsync.uni-bayreuth.de/Mandrakelinux/devel/cooker/i586/media/main
-updatesi586:ftp://anorien.csc.warwick.ac.uk/Mandrakelinux/official/updates
-updatesi586:ftp://bo.mirror.garr.it/pub/mirrors/Mandrake/official/updates
-updatesi586:ftp://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://chronos.iut-bm.univ-fcomte.fr/pub/linux/distributions/Mandrake/official/updates
-updatesi586:ftp://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/updates
-updatesi586:ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ale.org/pub/mirrors/mandrake/official/updates
-updatesi586:ftp://ftp.aso.ee/pub/Mandrake/official/updates
-updatesi586:ftp://ftp.belnet.be/packages/mandrakelinux/official/updates
-updatesi586:ftp://ftp.cica.es/pub/Linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ciril.fr/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.cise.ufl.edu/pub/mirrors/mandrake/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.cru.fr/pub/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.cs.ucr.edu/pub/mirrors/mandrakelinux/official/updates
-updatesi586:ftp://ftp.cse.buffalo.edu/pub/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ens-cachan.fr/pub/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.esat.net/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.fh-wolfenbuettel.de/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.free.fr/mirrors/ftp.mandrake-linux.com/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.fsn.hu/pub/linux/distributions/mandrake/official/updates
-updatesi586:ftp://ftp.gtlib.cc.gatech.edu/pub/mandrake/official/updates
-updatesi586:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.iasi.roedu.net/mirrors/ftp.mandrake.com/official/updates
-updatesi586:ftp://ftp.icm.edu.pl/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.int-evry.fr/pub/linux/mandrake/official/updates
-updatesi586:ftp://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/official/updates
-updatesi586:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://ftp.kddlabs.co.jp/Linux/packages/Mandrake/official/updates
-updatesi586:ftp://ftp.linux.cz/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.lip6.fr/pub/linux/distributions/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.mandrake.ikoula.com/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/updates
-updatesi586:ftp://ftp.mirrorservice.org/pub/Mandrake_Linux/official/updates
-updatesi586:ftp://ftp.mki.fh-duesseldorf.de/Mirror/Mandrake/official/updates
-updatesi586:ftp://ftp.nara.wide.ad.jp/pub/Linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ndlug.nd.edu/pub/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.nectec.or.th/pub/linux-distributions/Mandrake/official/updates
-updatesi586:ftp://ftp.neva.ru/Linux-Distrib/Mandrake/mandrakelinux/official/updates
-updatesi586:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ntua.gr/pub/linux/mandrake/official/updates
-updatesi586:ftp://ftp.phys.ttu.edu/pub/mandrakelinux/official/updates
-updatesi586:ftp://ftp.physics.auth.gr/pub/mirrors/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.prew.hu/pub/Linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.ps.pl/mirrors/mandrake/official/updates
-updatesi586:ftp://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://ftp.riken.go.jp/pub/Linux/mandrake/official/updates
-updatesi586:ftp://ftp.song.fi/pub/mirrors/Mandrake-linux/official/updates
-updatesi586:ftp://ftp.sun.ac.za/pub/linux/mandrake/pub/Linux/distributions/official/updates
-updatesi586:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://ftp.sunsite.org.uk/package/mandrakelinux/official/updates
-updatesi586:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.task.gda.pl/pub/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.tuniv.szczecin.pl/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://ftp.uasw.edu/linux/mandrakelinux/official/updates
-updatesi586:ftp://ftp.uio.no/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.unicamp.br/pub/mandrakelinux/official/updates
-updatesi586:ftp://ftp.uninett.no/linux/Mandrakelinux/official/updates
-updatesi586:ftp://ftp.univ-lille1.fr/pub/os/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://ftp.uvsq.fr/pub/mandrake/official/updates
-updatesi586:ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/updates
-updatesi586:ftp://ftp.vat.tu-dresden.de/pub/Mandrakelinux/official/updates
-updatesi586:ftp://ftp3.mandrake.sk/mirrors/Mandrakelinux/official/updates
-updatesi586:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/updates
-updatesi586:ftp://helios.dii.utk.edu/pub/linux/Mandrake/official/updates
-updatesi586:ftp://mandrake.contactel.cz/Mandrakelinux/official/updates
-updatesi586:ftp://mandrake.mirrors.pair.com/Mandrakelinux/official/updates
-updatesi586:ftp://mdk.linux.org.tw/pub/mandrakelinux/official/updates
-updatesi586:ftp://mirror.aca.oakland.edu/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://mirror.averse.net/pub/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.cs.wisc.edu/pub/mirrors/linux/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.fis.unb.br/pub/linux/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.inspire.net.nz/mandrake//official/updates
-updatesi586:ftp://mirror.pacific.net.au/linux/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.switch.ch/mirror/mandrake/official/updates
-updatesi586:ftp://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/updates
-updatesi586:ftp://mirror.usu.edu/mirrors/Mandrake/official/updates
-updatesi586:ftp://mirrors.dotsrc.org/mandrake/official/updates
-updatesi586:ftp://mirrors.ptd.net/mandrake/official/updates
-updatesi586:ftp://mirrors.secsup.org/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://mirrors.usc.edu/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:ftp://mirrors.xmission.com/mandrake/official/updates
-updatesi586:ftp://ramses.wh2.tu-dresden.de/pub/mirrors/mandrake/official/updates
-updatesi586:ftp://raven.cslab.vt.edu/pub/linux/mandrakelinux/official/updates
-updatesi586:ftp://sunsite.cnlab-switch.ch/mirror/mandrake/official/updates
-updatesi586:ftp://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/updates
-updatesi586:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake/official/updates
-updatesi586:ftp://sunsite.mff.cuni.cz/OS/Linux/Dist/Mandrake/mandrake/official/updates
-updatesi586:ftp://tux.cprm.net/pub/Mandrake/official/updates
-updatesi586:http://anorien.csc.warwick.ac.uk/mirrors/Mandrakelinux/official/updates
-updatesi586:http://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/updates
-updatesi586:http://fr2.rpmfind.net/linux/Mandrakelinux/official/updates
-updatesi586:http://ftp.ale.org/pub/mirrors/mandrake/official/updates
-updatesi586:http://ftp.club-internet.fr/pub/linux/Mandrakelinux/official/updates
-updatesi586:http://ftp.esat.net/pub/linux/mandrakelinux/official/updates
-updatesi586:http://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates
-updatesi586:http://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/updates
-updatesi586:http://ftp.iasi.roedu.net/mirrors/ftp.mandrake.com/official/updates
-updatesi586:http://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/updates
-updatesi586:http://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/official/updates
-updatesi586:http://ftp.kddlabs.co.jp/Linux/distributions/Mandrake/official/updates
-updatesi586:http://ftp.nluug.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/updates
-updatesi586:http://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/updates
-updatesi586:http://ftp.riken.go.jp/Linux/mandrake/official/updates
-updatesi586:http://ftp.sun.ac.za/ftp/mirrorsites/mandrakelinux/official/updates
-updatesi586:http://ftp.surfnet.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/updates
-updatesi586:http://ftpdem.ubi.pt/mandrake/official/updates
-updatesi586:http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/updates
-updatesi586:http://gulus.usherbrooke.ca/pub/distro/Mandrakelinux/official/updates
-updatesi586:http://klid.dk/homeftp/mandrakelinux/official/updates
-updatesi586:http://mandrake.mirrors.pair.com/Mandrakelinux/official/updates
-updatesi586:http://mirror.averse.net/pub/Mandrakelinux/official/updates
-updatesi586:http://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/updates
-updatesi586:http://mirror.hamakor.org.il/pub/mirrors/mandrake/official/updates
-updatesi586:http://mirror.pacific.net.au/linux/Mandrakelinux/official/updates
-updatesi586:http://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/updates
-updatesi586:http://mirror.usu.edu/mirrors/Mandrake/official/updates
-updatesi586:http://mirrors.dotsrc.org/mandrake/official/updates
-updatesi586:http://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/updates
-updatesi586:http://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/updates
-updatesi586:http://www.gtlib.cc.gatech.edu/pub/mandrake/official/updates
-updatesi586:http://www.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/updates
-updatesi586:http://www.sunsite.org.uk/package/mandrakelinux/official/updates
-updatesi586:rsync://carroll.cac.psu.edu/mandrakelinux/official/updates
-updatesi586:rsync://distro.ibiblio.org/distros/mandrake/Mandrakelinux/official/updates
-updatesi586:rsync://ftp.esat.net/ftp/pub/linux/mandrakelinux/official/updates
-updatesi586:rsync://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates
-updatesi586:rsync://ftp.iasi.roedu.net/mandrake.com/official/updates
-updatesi586:rsync://ftp.join.uni-muenster.de/mandrakelinux/official/updates
-updatesi586:rsync://ftp.nluug.nl/Mandrakelinux/official/updates
-updatesi586:rsync://ftp.riken.go.jp/mandrake/official/updates
-updatesi586:rsync://ftp.surfnet.nl/Mandrakelinux/official/updates
-updatesi586:rsync://mirror.umr.edu/mandrake/official/updates
-updatesi586:rsync://rsync.gtlib.cc.gatech.edu/mandrake/official/updates
-updatesi586:rsync://rsync.mirrorservice.org/sunsite.uio.no/pub/unix/Linux/mandrakelinux/official/updates
-updatesi586:rsync://rsync.uni-bayreuth.de/Mandrakelinux/official/updates
-officiali586:ftp://anorien.csc.warwick.ac.uk/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://bo.mirror.garr.it/pub/mirrors/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://chronos.iut-bm.univ-fcomte.fr/pub/linux/distributions/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ale.org/pub/mirrors/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.aso.ee/pub/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.belnet.be/packages/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.cica.es/pub/Linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ciril.fr/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.cru.fr/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.cs.ucr.edu/pub/mirrors/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.cse.buffalo.edu/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ens-cachan.fr/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.esat.net/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.fh-giessen.de/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.fh-wolfenbuettel.de/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.free.fr/mirrors/ftp.mandrake-linux.com/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.fsn.hu/pub/linux/distributions/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.gtlib.cc.gatech.edu/pub/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.iasi.roedu.net/mirrors/ftp.mandrake.com/official/10.1/i586/media/main/
-officiali586:ftp://ftp.icm.edu.pl/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.informatik.hu-berlin.de/pub/Linux/Distributions/Mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.int-evry.fr/pub/linux/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.kddlabs.co.jp/Linux/packages/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.linux.cz/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.lip6.fr/pub/linux/distributions/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.mandrake.ikoula.com/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/10.1/i586/media/main/
-officiali586:ftp://ftp.mirrorservice.org/pub/Mandrake_Linux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.mki.fh-duesseldorf.de/Mirror/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.nara.wide.ad.jp/pub/Linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ndlug.nd.edu/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.neva.ru/Linux-Distrib/Mandrake/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ntua.gr/pub/linux/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.phys.ttu.edu/pub/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.physics.auth.gr/pub/mirrors/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.prew.hu/pub/Linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.ps.pl/mirrors/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.riken.go.jp/pub/Linux/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.song.fi/pub/mirrors/Mandrake-linux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.sun.ac.za/pub/linux/mandrake/pub/Linux/distributions/official/10.1/i586/media/main/
-officiali586:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.sunsite.org.uk/package/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.tuniv.szczecin.pl/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.u-strasbg.fr/pub/linux/distributions/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uasw.edu/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uio.no/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uni-wuppertal.de/pub/linux/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.unicamp.br/pub/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uninett.no/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uvsq.fr/pub/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ftp.vat.tu-dresden.de/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://linux.ntcu.net/dists/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://linux.ups-tlse.fr/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mandrake.contactel.cz/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mandrake.mirrors.pair.com/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mdk.linux.org.tw/pub/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.averse.net/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.cs.wisc.edu/pub/mirrors/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.fis.unb.br/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.inspire.net.nz/mandrake//official/10.1/i586/media/main/
-officiali586:ftp://mirror.pacific.net.au/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.switch.ch/mirror/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirror.usu.edu/mirrors/Mandrake/official/10.1/i586/media/main/
-officiali586:ftp://mirrors.dotsrc.org/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://mirrors.ptd.net/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://mirrors.secsup.org/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://mirrors.xmission.com/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://ramses.wh2.tu-dresden.de/pub/mirrors/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://sunsite.cnlab-switch.ch/mirror/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake/official/10.1/i586/media/main/
-officiali586:ftp://sunsite.mff.cuni.cz/OS/Linux/Dist/Mandrake/mandrake/official/10.1/i586/media/main/
-officiali586:http://anorien.csc.warwick.ac.uk/mirrors/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://fr2.rpmfind.net/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.ale.org/pub/mirrors/mandrake/official/10.1/i586/media/main/
-officiali586:http://ftp.club-internet.fr/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.esat.net/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.iasi.roedu.net/mirrors/ftp.mandrake.com/official/10.1/i586/media/main/
-officiali586:http://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.kddlabs.co.jp/Linux/distributions/Mandrake/official/10.1/i586/media/main/
-officiali586:http://ftp.nluug.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.riken.go.jp/Linux/mandrake/official/10.1/i586/media/main/
-officiali586:http://ftp.sun.ac.za/ftp/mirrorsites/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://ftp.surfnet.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://gulus.usherbrooke.ca/pub/distro/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://klid.dk/homeftp/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mandrake.mirrors.pair.com/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mirror.averse.net/pub/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mirror.hamakor.org.il/pub/mirrors/mandrake/official/10.1/i586/media/main/
-officiali586:http://mirror.pacific.net.au/linux/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://mirror.usu.edu/mirrors/Mandrake/official/10.1/i586/media/main/
-officiali586:http://mirrors.dotsrc.org/mandrake/official/10.1/i586/media/main/
-officiali586:http://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:http://www.gtlib.cc.gatech.edu/pub/mandrake/official/10.1/i586/media/main/
-officiali586:http://www.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/10.1/i586/media/main/
-officiali586:http://www.sunsite.org.uk/package/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://carroll.cac.psu.edu/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://distro.ibiblio.org/distros/mandrake/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://ftp.esat.net/ftp/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://ftp.iasi.roedu.net/mandrake.com/official/10.1/i586/media/main/
-officiali586:rsync://ftp.join.uni-muenster.de/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://ftp.nluug.nl/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://ftp.riken.go.jp/mandrake/official/10.1/i586/media/main/
-officiali586:rsync://ftp.surfnet.nl/Mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://mirror.umr.edu/mandrake/official/10.1/i586/media/main/
-officiali586:rsync://rsync.gtlib.cc.gatech.edu/mandrake/official/10.1/i586/media/main/
-officiali586:rsync://rsync.mirrorservice.org/sunsite.uio.no/pub/unix/Linux/mandrakelinux/official/10.1/i586/media/main/
-officiali586:rsync://rsync.uni-bayreuth.de/Mandrakelinux/official/10.1/i586/media/main/
-updatesx86_64:ftp://anorien.csc.warwick.ac.uk/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://bo.mirror.garr.it/pub/mirrors/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://carroll.cac.psu.edu/pub/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.ale.org/pub/mirrors/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.aso.ee/pub/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.belnet.be/packages/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.cica.es/pub/Linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.ciril.fr/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.cru.fr/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.cs.ucr.edu/pub/mirrors/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.cse.buffalo.edu/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.ens-cachan.fr/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.esat.net/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.fh-wolfenbuettel.de/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.free.fr/mirrors/ftp.mandrake-linux.com/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.fsn.hu/pub/linux/distributions/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.gtlib.cc.gatech.edu/pub/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.gwdg.de/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.icm.edu.pl/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.join.uni-muenster.de/pub/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.kddlabs.co.jp/Linux/packages/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.linux.cz/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.lip6.fr/pub/linux/distributions/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.mandrake.ikoula.com/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/updates/x86_64
-updatesx86_64:ftp://ftp.mirrorservice.org/pub/Mandrake_Linux/official/updates/x86_64
-updatesx86_64:ftp://ftp.nara.wide.ad.jp/pub/Linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.ndlug.nd.edu/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.nectec.or.th/pub/linux-distributions/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.nluug.nl/pub/os/Linux/distr/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.phys.ttu.edu/pub/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.physics.auth.gr/pub/mirrors/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.ps.pl/mirrors/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.riken.go.jp/pub/Linux/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.sunet.se/pub/Linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.sunsite.org.uk/package/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.surfnet.nl/pub/os/Linux/distr/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.task.gda.pl/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.tuniv.szczecin.pl/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.uasw.edu/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.uio.no/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.uni-bayreuth.de/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.uninett.no/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.univ-lille1.fr/pub/os/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://ftp.uwsg.indiana.edu/linux/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ftp.vat.tu-dresden.de/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://helios.dii.utk.edu/pub/linux/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://mandrake.contactel.cz/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mandrake.mirrors.pair.com/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mdk.linux.org.tw/pub/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.averse.net/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.cs.wisc.edu/pub/mirrors/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.fis.unb.br/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.inspire.net.nz/mandrake//official/updates/x86_64
-updatesx86_64:ftp://mirror.pacific.net.au/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.switch.ch/mirror/mandrake/official/updates/x86_64
-updatesx86_64:ftp://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirror.usu.edu/mirrors/Mandrake/official/updates/x86_64
-updatesx86_64:ftp://mirrors.dotsrc.org/mandrake/official/updates/x86_64
-updatesx86_64:ftp://mirrors.ptd.net/mandrake/official/updates/x86_64
-updatesx86_64:ftp://mirrors.secsup.org/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirrors.usc.edu/pub/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://mirrors.xmission.com/mandrake/official/updates/x86_64
-updatesx86_64:ftp://ramses.wh2.tu-dresden.de/pub/mirrors/mandrake/official/updates/x86_64
-updatesx86_64:ftp://raven.cslab.vt.edu/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://sunsite.cnlab-switch.ch/mirror/mandrake/official/updates/x86_64
-updatesx86_64:ftp://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/mandrake/official/updates/x86_64
-updatesx86_64:ftp://sunsite.mff.cuni.cz/OS/Linux/Dist/Mandrake/mandrake/official/updates/x86_64
-updatesx86_64:http://anorien.csc.warwick.ac.uk/mirrors/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://distro.ibiblio.org/pub/Linux/distributions/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://fr2.rpmfind.net/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.ale.org/pub/mirrors/mandrake/official/updates/x86_64
-updatesx86_64:http://ftp.club-internet.fr/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.esat.net/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.heanet.ie/pub/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.isu.edu.tw/pub/Linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.isu.net.sa/pub/mirrors/ftp.mandrake.com/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.kddlabs.co.jp/Linux/distributions/Mandrake/official/updates/x86_64
-updatesx86_64:http://ftp.nluug.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.rediris.es/pub/linux/distributions/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://ftp.riken.go.jp/Linux/mandrake/official/updates/x86_64
-updatesx86_64:http://ftp.surfnet.nl/ftp/pub/os/Linux/distr/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://gd.tuwien.ac.at/pub/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://gulus.usherbrooke.ca/pub/distro/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://klid.dk/homeftp/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mandrake.mirrors.pair.com/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mirror.averse.net/pub/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mirror.etf.bg.ac.yu/distributions/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mirror.pacific.net.au/linux/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mirror.umr.edu/pub/linux/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:http://mirror.usu.edu/mirrors/Mandrake/official/updates/x86_64
-updatesx86_64:http://mirrors.dotsrc.org/mandrake/official/updates/x86_64
-updatesx86_64:http://sunsite.icm.edu.pl/pub/Linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://wftp.tu-chemnitz.de/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:http://www.gtlib.cc.gatech.edu/pub/mandrake/official/updates/x86_64
-updatesx86_64:http://www.mirror.ac.uk/sites/sunsite.uio.no/ftp/linux/mdl/official/updates/x86_64
-updatesx86_64:http://www.sunsite.org.uk/package/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://carroll.cac.psu.edu/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://distro.ibiblio.org/distros/mandrake/Mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://ftp.esat.net/ftp/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://ftp.fi.muni.cz/pub/linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://ftp.join.uni-muenster.de/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://ftp.nluug.nl/Mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://ftp.riken.go.jp/mandrake/official/updates/x86_64
-updatesx86_64:rsync://ftp.surfnet.nl/Mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://mirror.umr.edu/mandrake/official/updates/x86_64
-updatesx86_64:rsync://rsync.gtlib.cc.gatech.edu/mandrake/official/updates/x86_64
-updatesx86_64:rsync://rsync.mirrorservice.org/sunsite.uio.no/pub/unix/Linux/mandrakelinux/official/updates/x86_64
-updatesx86_64:rsync://rsync.uni-bayreuth.de/Mandrakelinux/official/updates/x86_64
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
deleted file mode 100644
index e689ff7e5..000000000
--- a/perl-install/detect_devices.pm
+++ /dev/null
@@ -1,1005 +0,0 @@
-package detect_devices; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw($pcitable_addons $usbtable_addons);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use log;
-use common;
-use devices;
-use run_program;
-use modules;
-use c;
-
-#-#####################################################################################
-#- Globals
-#-#####################################################################################
-my %serialprobe;
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub dev_is_devfs() { -e "/dev/.devfsd" } #- no $::prefix, returns false during install and that's nice :)
-
-
-sub get() {
- #- Detect the default BIOS boot harddrive is kind of tricky. We may have IDE,
- #- SCSI and RAID devices on the same machine. From what I see so far, the default
- #- BIOS boot harddrive will be
- #- 1. The first IDE device if IDE exists. Or
- #- 2. The first SCSI device if SCSI exists. Or
- #- 3. The first RAID device if RAID exists.
-
- getIDE(), getSCSI(), getDAC960(), getCompaqSmartArray(), getATARAID();
-}
-sub hds() { grep { may_be_a_hd($_) } get() }
-sub tapes() { grep { $_->{media_type} eq 'tape' } get() }
-sub cdroms() { grep { $_->{media_type} eq 'cdrom' } get() }
-sub burners() { grep { isBurner($_) } cdroms() }
-sub dvdroms() { grep { isDvdDrive($_) } cdroms() }
-sub raw_zips() { grep { member($_->{media_type}, 'fd', 'hd') && isZipDrive($_) } get() }
-#-sub jazzs { grep { member($_->{media_type}, 'fd', 'hd') && isJazzDrive($_) } get() }
-sub ls120s() { grep { member($_->{media_type}, 'fd', 'hd') && isLS120Drive($_) } get() }
-sub zips() {
- map {
- $_->{device} .= 4;
- $_->{devfs_device} = $_->{devfs_prefix} . '/part4';
- $_;
- } raw_zips();
-}
-
-sub floppies() {
- require modules;
- my @fds;
- eval { modules::load("floppy") if $::isInstall };
- if (!is_xbox()) {
- @fds = map {
- my $info = (!dev_is_devfs() || -e "/dev/fd$_") && c::floppy_info(devices::make("fd$_"));
- if_($info && $info ne '(null)', { device => "fd$_", devfs_device => "floppy/$_", media_type => 'fd', info => $info });
- } qw(0 1);
- }
-
- my @ide = ls120s() and eval { modules::load("ide-floppy") };
-
- eval { modules::load("usb-storage") } if usbStorage();
- my @scsi = grep { $_->{media_type} eq 'fd' } getSCSI();
- @ide, @scsi, @fds;
-}
-sub floppies_dev() { map { $_->{device} } floppies() }
-sub floppy() { first(floppies_dev()) }
-#- example ls120, model = "LS-120 SLIM 02 UHD Floppy"
-
-sub removables() {
- floppies(), cdroms(), zips();
-}
-
-sub get_sys_cdrom_info {
- my (@drives) = @_;
-
- my @drives_order;
- foreach (cat_("/proc/sys/dev/cdrom/info")) {
- my ($t, $l) = split ':';
- my @l;
- @l = split(' ', $l) if $l;
- if ($t eq 'drive name') {
- @drives_order = map {
- my $dev = $_;
- find { $_->{device} eq $dev } @drives;
- } @l;
- } else {
- my $capacity;
- if ($t eq 'Can write CD-R') {
- $capacity = 'burner';
- } elsif ($t eq 'Can read DVD') {
- $capacity = 'DVD';
- }
- if ($capacity) {
- each_index {
- ($drives_order[$::i] || {})->{capacity} .= "$capacity " if $_;
- } @l;
- }
- }
- }
-}
-
-sub get_usb_storage_info_24 {
- my (@l) = @_;
-
- my %usbs = map {
- my $s = cat_(glob_("$_/*"));
- my ($host) = $s =~ /^\s*Host scsi(\d+):/m; #-#
- my ($vendor_name) = $s =~ /^\s*Vendor: (.*)/m;
- my ($vendor, $id) = $s =~ /^\s*GUID: (....)(....)/m;
- if_(defined $host, $host => { vendor_name => $vendor_name, usb_vendor => hex $vendor, usb_id => hex $id });
- } glob_('/proc/scsi/usb-storage-*') or return;
-
- #- only the entries matching the following conditions can be usb-storage devices
- @l = grep { $_->{channel} == 0 && $_->{id} == 0 && $_->{lun} == 0 } @l;
- my %l; push @{$l{$_->{host}}}, $_ foreach @l;
-
- foreach my $host (keys %usbs) {
- my @choices = @{$l{$host} || []} or log::l("weird, host$host from /proc/scsi/usb-storage-*/* is not in /proc/scsi/scsi"), next;
- if (@choices > 1) {
- @choices = grep { $_->{info} =~ /^\Q$usbs{$host}{vendor_name}/ } @choices;
- @choices or log::l("weird, can not find the good entry host$host from /proc/scsi/usb-storage-*/* in /proc/scsi/scsi"), next;
- @choices == 1 or log::l("argh, can not determine the good entry host$host from /proc/scsi/usb-storage-*/* in /proc/scsi/scsi"), next;
- }
- add2hash($choices[0], $usbs{$host});
- }
- complete_usb_storage_info(@l);
-
- @l;
-}
-
-sub complete_usb_storage_info {
- my (@l) = @_;
-
- my @usb = grep { exists $_->{usb_vendor} } @l;
-
- foreach my $usb (usb_probe()) {
- if (my $e = find { $_->{usb_vendor} == $usb->{vendor} && $_->{usb_id} == $usb->{id} } @usb) {
- $e->{"usb_$_"} = $usb->{$_} foreach keys %$usb;
- }
- }
-}
-
-sub get_devfs_devices {
- my (@l) = @_;
-
- my %h = (cdrom => 'cd', hd => 'disc');
-
- foreach (@l) {
- $_->{devfs_prefix} = sprintf('scsi/host%d/bus%d/target%d/lun%d', $_->{host}, $_->{channel}, $_->{id}, $_->{lun})
- if $_->{bus} eq 'SCSI';
-
- my $t = $h{$_->{media_type}} or next;
- $_->{devfs_device} = $_->{devfs_prefix} . '/' . $t;
- }
-}
-
-sub isBurner {
- my ($e) = @_;
- $e->{capacity} =~ /burner/ and return 1;
-
- #- do not work for SCSI
- my $f = tryOpen($e->{device}); #- SCSI burner are not detected this way.
- $f && c::isBurner(fileno($f));
-}
-sub isDvdDrive {
- my ($e) = @_;
- $e->{capacity} =~ /DVD/ || $e->{info} =~ /DVD/ and return 1;
-
- #- do not work for SCSI
- my $f = tryOpen($e->{device});
- $f && c::isDvdDrive(fileno($f));
-}
-sub isZipDrive { $_[0]{info} =~ /ZIP\s+\d+/ } #- accept ZIP 100, untested for bigger ZIP drive.
-sub isJazzDrive { $_[0]{info} =~ /\bJAZZ?\b/i } #- accept "iomega jaz 1GB"
-sub isLS120Drive { $_[0]{info} =~ /LS-?120|144MB/ }
-sub isRemovableUsb { begins_with($_[0]{usb_media_type} || '', 'Mass Storage') && usb2removable($_[0]) }
-sub isKeyUsb { begins_with($_[0]{usb_media_type} || '', 'Mass Storage') && $_[0]{media_type} eq 'hd' }
-sub isFloppyUsb { $_[0]{usb_driver} && $_[0]{usb_driver} eq 'Removable:floppy' }
-sub may_be_a_hd {
- my ($e) = @_;
- $e->{media_type} eq 'hd' && !(
- isZipDrive($e)
- || isLS120Drive($e)
- || begins_with($e->{usb_media_type} || '', 'Mass Storage|Floppy (UFI)')
- );
-}
-
-sub get_scsi_driver {
- my (@l) = @_;
- my %host2driver = map { if_(m!.*/(.*)/(.*)!, $2, $1) } glob("/proc/scsi/*/*");
- foreach (@l) {
- if (my $driver = $host2driver{$_->{host}}) {
- $_->{driver} = $driver;
- }
- }
-}
-
-sub getSCSI_24() {
- my $err = sub { log::l("ERROR: unexpected line in /proc/scsi/scsi: $_[0]") };
-
- my ($first, @l) = common::join_lines(cat_("/proc/scsi/scsi")) or return;
- $first =~ /^Attached devices:/ or $err->($first);
-
- @l = map_index {
- my ($host, $channel, $id, $lun) = m/^Host: scsi(\d+) Channel: (\d+) Id: (\d+) Lun: (\d+)/ or $err->($_);
- my ($vendor, $model) = /^\s*Vendor:\s*(.*?)\s+Model:\s*(.*?)\s+Rev:/m or $err->($_);
- my ($type) = /^\s*Type:\s*(.*)/m or $err->($_);
- { info => "$vendor $model", host => $host, channel => $channel, id => $id, lun => $lun,
- device => "sg$::i", raw_type => $type, bus => 'SCSI' };
- } @l;
-
- get_usb_storage_info_24(@l);
-
- each_index {
- my $dev = "sd" . chr($::i + ord('a'));
- put_in_hash $_, { device => $dev, media_type => isFloppyUsb($_) ? 'fd' : 'hd' };
- } grep { $_->{raw_type} =~ /Direct-Access|Optical Device/ } @l;
-
- each_index {
- put_in_hash $_, { device => "st$::i", media_type => 'tape' };
- } grep { $_->{raw_type} =~ /Sequential-Access/ } @l;
-
- each_index {
- put_in_hash $_, { device => "sr$::i", media_type => 'cdrom' };
- } grep { $_->{raw_type} =~ /CD-ROM|WORM/ } @l;
-
- # Old hp scanners report themselves as "Processor"s
- # (see linux/include/scsi/scsi.h and sans-find-scanner.1)
- each_index {
- put_in_hash $_, { media_type => 'scanner' };
- } grep { $_->{raw_type} =~ /Scanner/ || $_->{raw_type} =~ /Processor / } @l;
-
- delete $_->{raw_type} foreach @l;
-
- get_devfs_devices(@l);
- get_sys_cdrom_info(@l);
- get_scsi_driver(@l);
- @l;
-}
-
-sub getSCSI_26() {
- my $dev_dir = '/sys/bus/scsi/devices';
-
- my @scsi_types = (
- "Direct-Access",
- "Sequential-Access",
- "Printer",
- "Processor",
- "WORM",
- "CD-ROM",
- "Scanner",
- "Optical Device",
- "Medium Changer",
- "Communications",
- );
-
- my @l = map {
- my ($host, $channel, $id, $lun) = split ':' or log::l("bad entry in $dev_dir: $_"), next;
-
- my $dir = "$dev_dir/$_";
- my $get = sub {
- my $s = cat_("$dir/$_[0]");
- $s =~ s/\s+$//;
- $s;
- };
-
- my $usb_dir = readlink("$dir/block/device") =~ m!/usb! && "$dir/block/device/../../..";
- my $get_usb = sub { chomp_(cat_("$usb_dir/$_[0]")) };
-
- my ($device) = readlink("$dir/block") =~ m!/block/(.*)!;
-
- my $media_type = ${{ st => 'tape', sr => 'cdrom', sd => 'hd' }}{substr($device, 0, 2)};
- # Old hp scanners report themselves as "Processor"s
- # (see linux/include/scsi/scsi.h and sans-find-scanner.1)
- my $raw_type = $scsi_types[$get->('type')];
- $media_type ||= 'scanner' if $raw_type =~ /Scanner|Processor/;
-
- { info => $get->('vendor') . ' ' . $get->('model'), host => $host, channel => $channel, id => $id, lun => $lun,
- bus => 'SCSI', media_type => $media_type, device => $device,
- $usb_dir ? (
- usb_vendor => hex($get_usb->('idVendor')), usb_id => hex($get_usb->('idProduct')),
- ) : (),
- };
- } all($dev_dir);
-
- @l = sort { $a->{host} <=> $b->{host} || $a->{channel} <=> $b->{channel} || $a->{id} <=> $b->{id} || $a->{lun} <=> $b->{lun} } @l;
-
- complete_usb_storage_info(@l);
-
- foreach (@l) {
- $_->{media_type} = 'fd' if $_->{media_type} eq 'hd' && isFloppyUsb($_);
- }
-
- get_devfs_devices(@l);
- get_sys_cdrom_info(@l);
- get_scsi_driver(@l);
- @l;
-}
-sub getSCSI() { c::kernel_version() =~ /^\Q2.6/ ? getSCSI_26() : getSCSI_24() }
-
-
-my %eide_hds = (
- "ASUS" => "Asus",
- "CD-ROM CDU" => "Sony",
- "CD-ROM Drive/F5D" => "ASUSTeK",
- "Compaq" => "Compaq",
- "CONNER" => "Conner Peripherals",
- "IBM" => "IBM",
- "FUJITSU" => "Fujitsu",
- "HITACHI" => "Hitachi",
- "Lite-On" => "Lite-On Technology Corp.",
- "LITE-ON" => "Lite-On Technology Corp.",
- "LTN" => "Lite-On Technology Corp.",
- "IOMEGA" => "Iomega",
- "MAXTOR" => "Maxtor",
- "Maxtor" => "Maxtor",
- "Micropolis" => "Micropolis",
- "Pioneer" => "Pioneer",
- "PLEXTOR" => "Plextor",
- "QUANTUM" => "Quantum",
- "SAMSUNG" => "Samsung",
- "Seagate " => "Seagate Technology",
- "ST3" => "Seagate Technology",
- "TEAC" => "Teac",
- "TOSHIBA" => "Toshiba",
- "WDC" => "Western Digital Corp.",
-);
-
-
-sub getIDE() {
- my @idi;
-
- #- what about a system with absolutely no IDE on it, like some sparc machine.
- -e "/proc/ide" or return ();
-
- #- Great. 2.2 kernel, things are much easier and less error prone.
- foreach my $d (sort @{[glob_('/proc/ide/hd*')]}) {
- cat_("$d/driver") =~ /ide-scsi/ and next; #- already appears in /proc/scsi/scsi
- my $t = chomp_(cat_("$d/media"));
- my $type = ${{ disk => 'hd', cdrom => 'cdrom', tape => 'tape', floppy => 'fd' }}{$t} or next;
- my $info = chomp_(cat_("$d/model")) || "(none)";
-
- my $num = ord(($d =~ /(.)$/)[0]) - ord 'a';
- my ($vendor, $model) = map {
- if_($info =~ /^$_(-|\s)*(.*)/, $eide_hds{$_}, $2);
- } keys %eide_hds;
-
- my $host = $num;
- ($host, my $id) = divide($host, 2);
- ($host, my $channel) = divide($host, 2);
- my $devfs_prefix = sprintf('ide/host%d/bus%d/target%d/lun0', $host, $channel, $id);
-
- push @idi, { media_type => $type, device => basename($d),
- devfs_prefix => $devfs_prefix,
- info => $info, host => $host, channel => $channel, id => $id, bus => 'ide',
- if_($vendor, Vendor => $vendor), if_($model, Model => $model) };
- }
- get_devfs_devices(@idi);
- get_sys_cdrom_info(@idi);
- @idi;
-}
-
-sub block_devices() {
- -d '/sys/block'
- ? map { s|!|/|; $_ } all('/sys/block')
- : map { $_->{dev} } devices::read_proc_partitions_raw();
-}
-
-sub getCompaqSmartArray() {
- my (@idi, $f);
-
- foreach ('array/ida', 'cpqarray/ida', 'cciss/cciss') {
- my $prefix = "/proc/driver/$_"; #- kernel 2.4 places it here
- $prefix = "/proc/$_" if !-e "${prefix}0"; #- kernel 2.2
-
- my ($name) = m|/(.*)|;
- for (my $i = 0; -r ($f = "${prefix}$i"); $i++) {
- my @raw_devices = cat_($f) =~ m|^\s*($name/.*?):|gm;
- @raw_devices or @raw_devices = grep { m!^$name/! } block_devices();
-
- foreach my $raw_device (@raw_devices) {
- my $device = -d "/dev/$raw_device" ? "$raw_device/disc" : $raw_device;
- push @idi, { device => $device, prefix => $raw_device . 'p',
- info => "Compaq RAID logical disk",
- media_type => 'hd', bus => $name };
- }
- }
- }
- @idi;
-}
-
-sub getDAC960() {
- my %idi;
-
- #- We are looking for lines of this format:DAC960#0:
- #- /dev/rd/c0d0: RAID-7, Online, 17928192 blocks, Write Thru0123456790123456789012
- foreach (syslog()) {
- my ($device, $info) = m|/dev/(rd/.*?): (.*?),| or next;
- $idi{$device} = { info => $info, media_type => 'hd', device => $device, prefix => $device . 'p', bus => 'dac960' };
- }
- values %idi;
-}
-
-sub getATARAID() {
- my %l;
- foreach (syslog()) {
- my ($device) = m|^\s*(ataraid/d\d+):| or next;
- $l{$device} = { info => 'ATARAID block device', media_type => 'hd', device => $device, prefix => $device . 'p', bus => 'ataraid' };
- log::l("ATARAID: $device");
- }
- values %l;
-}
-
-
-# cpu_name : arch() =~ /^alpha/ ? "cpu " :
-# arch() =~ /^ppc/ ? "processor" : "vendor_id"
-
-# cpu_model : arch() =~ /^alpha/ ? "cpu model" :
-# arch() =~ /^ppc/ ? "cpu " : "model name"
-
-# cpu_freq = arch() =~ /^alpha/ ? "cycle frequency [Hz]" :
-# arch() =~ /^ppc/ ? "clock" : "cpu MHz"
-
-sub getCPUs() {
- my (@cpus, $cpu);
- foreach (cat_("/proc/cpuinfo")) {
- if (/^processor/) { # ix86 specific
- push @cpus, $cpu if $cpu;
- $cpu = {};
- }
- $cpu->{$1} = $2 if /^([^\t]+).*:\s(.*)$/;
- $cpu->{processor}++ if $1 eq "processor";
- }
- push @cpus, $cpu;
- @cpus;
-}
-
-sub getSoundDevices() {
- modules::probe_category('multimedia/sound');
-}
-
-sub isTVcard { member($_[0]{driver}, qw(bttv saa7134)) }
-
-sub getTVcards() { modules::probe_category('multimedia/tv') }
-
-sub getInputDevices() {
- my (@devices, $device);
- foreach (cat_('/proc/bus/input/devices')) {
- if (/^I:/) {
- push @devices, $device if $device;
- $device = {};
- $device->{vendor} = $1 if /Vendor=([0-9a-f]+)/;
- $device->{id} = $1 if /Product=([0-9a-f]+)/;
- }
- $device->{description} = "|$1" if /N: Name="(.*)"/;
- $device->{driver} = $1 if /H: Handlers=(\w+)/;
- if (/P: Phys=(.*)/) {
- $device->{location} = $1;
- $device->{bus} = 'isa' if $device->{location} =~ /^isa/;
- $device->{bus} = 'usb' if $device->{location} =~ /^usb/i;
- }
- }
- push @devices, $device if $device;
- @devices;
-}
-
-sub getSynapticsTouchpads() {
- grep {
- member($_->{description}, "|SynPS/2 Synaptics TouchPad", "|AlpsPS/2 ALPS TouchPad");
- } getInputDevices();
-}
-
-sub getSerialModem {
- my ($modules_conf, $o_mouse) = @_;
- my $mouse = $o_mouse || {};
- $mouse->{device} = readlink "/dev/mouse";
- my $serdev = arch() =~ /ppc/ ? "macserial" : "serial";
- eval { modules::load($serdev) };
-
- my @modems;
-
- probeSerialDevices();
- foreach my $port (map { "ttyS$_" } (0..7)) {
- next if $mouse->{device} =~ /$port/;
- my $device = "/dev/$port";
- next if !-e $device || !hasModem($device);
- $serialprobe{$device}{device} = $device;
- push @modems, $serialprobe{$device};
- }
- my @devs = pcmcia_probe();
- foreach my $modem (@modems) {
- #- add an alias for macserial on PPC
- $modules_conf->set_alias('serial', $serdev) if arch() =~ /ppc/ && $modem->{device};
- foreach (@devs) { $_->{type} =~ /serial/ and $modem->{device} = $_->{device} }
- }
- @modems;
-}
-
-sub getModem {
- my ($modules_conf) = @_;
- getSerialModem($modules_conf, {}), matching_driver__regexp('www\.linmodems\.org'),
- matching_driver(list_modules::category2modules('network/modem'), list_modules::category2modules('network/slmodem'));
-}
-
-sub getSpeedtouch() {
- grep { $_->{description} eq 'Alcatel|USB ADSL Modem (Speed Touch)' } probeall();
-}
-
-sub getBewan() {
- matching_desc__regexp('Bewan Systems\|.*ADSL|BEWAN ADSL USB|\[Unicorn\]');
-}
-sub getSagem() {
- matching_driver('eagle-usb');
-}
-
-# generate from the following from eci driver sources:
-# perl -e 'while (<>) { print qq("$1$2",\n"$3$4",\n) if /\b([a-z\d]*)\s*([a-z\d]*)\s*([a-z\d]*)\s*([a-z\d]*)$/ }' <modems.db|sort|uniq
-sub getECI() {
- my @ids = (
- "05090801",
- "05472131",
- "06590915",
- "071dac81",
- "08ea00c9",
- "09150001",
- "09150002",
- "091500ca",
- "091500e7",
- "09150101",
- "09150102",
- "09150204",
- "09150206",
- "09150802",
- "09150916",
- "09158000",
- "09158001",
- "0915ac82",
- "0baf00e6",
- "0e600100",
- "0e600101",
- "0fe88000",
- "16900203",
- "16900205",
- );
- grep { member(sprintf("%04x%04x%04x%04x", $_->{vendor}, $_->{id}, $_->{subvendor}, $_->{subid}), @ids) } usb_probe();
-}
-
-sub is_lan_interface {
- # we want LAN like interfaces here (eg: ath|br|eth|fddi|plip|ra|tr|usb|wifi|wlan).
- # there's also bnep%d for bluetooth, bcp%d...
- # we do this by blacklisting the following interfaces:
- # - sit0 which is *always* created by net/ipv6/sit.c, thus is always created since net.agent loads ipv6 module
- # - ippp|isdn|plip|ppp (initscripts suggest that isdn%d can be created but kernel sources claim not)
- # ippp%d are created by drivers/isdn/i4l/isdn_ppp.c
- # plip%d are created by drivers/net/plip.c
- # ppp%d are created by drivers/net/ppp_generic.c
- # - wifi%d are created by 3rdparty/hostap/hostap_hw.c (pseudo statistics devices, #14523)
- #
- # we need both detection schemes since:
- # - get_netdevices() use the SIOCGIFCONF ioctl that does not list interfaces that are down
- # - /proc/net/dev does not list VLAN and IP aliased interfaces
-
- $_[0] !~ /^(?:lo|ippp|isdn|plip|ppp|sit0|wifi)/;
-}
-
-sub is_wireless_interface {
- my ($interface) = @_;
- #- some wireless drivers don't always support the SIOCGIWNAME ioctl
- #- ralink devices need to be up to support it
- #- wlan-ng (prism2_*) need some special tweaks to support it
- #- use sysfs as fallback to detect wireless interfaces,
- #- i.e interfaces for which get_wireless_stats() is available
- c::isNetDeviceWirelessAware($interface) || -e "/sys/class/net/$interface/wireless";
-}
-
-sub get_sysfs_device_id_map {
- my ($dev_path) = @_;
- my $is_usb = -f "$dev_path/bInterfaceNumber";
- $is_usb ?
- { id => '../idProduct', vendor => '../idVendor' } :
- { id => "device", subid => "subsystem_device", vendor => "vendor", subvendor => "subsystem_vendor" };
-}
-
-sub getNet() {
- grep { is_lan_interface($_) }
- uniq(
- (map { if_(/^\s*([A-Za-z0-9:\.]*):/, $1) } cat_("/proc/net/dev")),
- c::get_netdevices(),
- );
- }
-
-#sub getISDN() {
-# mapgrep(sub {member (($_[0] =~ /\s*(\w*):/), @netdevices), $1 }, split(/\n/, cat_("/proc/net/dev")));
-#}
-
-sub getUPS() {
- my @usb_devices = map { ($_->{name} = $_->{description}) =~ s/.*\|//; $_ } grep { $_->{description} !~ /GamePad|IR Combo Device|Joystick|SideWinder/ } usb_probe();
-
- # MGE serial PnP devices:
- (map {
- $_->{port} = $_->{DEVICE};
- $_->{bus} = "Serial";
- $_->{driver} = "mge-utalk" if $_->{MODEL} =~ /0001/;
- $_->{driver} = "mge-shut" if $_->{MODEL} =~ /0002/;
- $_->{media_type} = 'UPS';
- $_->{description} = "MGE UPS SYSTEMS|UPS - Uninterruptible Power Supply" if $_->{MODEL} =~ /000[12]/;
- $_;
- } grep { $_->{DESCRIPTION} =~ /MGE UPS/ } values %serialprobe),
- # USB UPSs;
- (grep { $_->{driver} = 'hidups' if $_->{driver} eq 'usbhid'; $_->{description} =~ /American Power Conversion\|Back-UPS/ } @usb_devices),
- (map {
- $_->{port} = "auto";
- $_->{media_type} = 'UPS';
- $_->{driver} = 'newhidups';
- $_;
- } grep { $_->{driver} =~ /ups$/ && $_->{description} !~ /American Power Conversion\|Back-UPS/ } @usb_devices);
-}
-
-$pcitable_addons = <<'EOF';
-# add here lines conforming the pcitable format (0xXXXX\t0xXXXX\t"\w+"\t".*")
-EOF
-
-$usbtable_addons = <<'EOF';
-# add here lines conforming the usbtable format (0xXXXX\t0xXXXX\t"\w+"\t".*")
-EOF
-
-sub install_addons {
- my ($prefix) = @_;
-
- #- this test means install_addons can only be called after ldetect-lst has been installed.
- if (-d "$prefix/usr/share/ldetect-lst") {
- my $update = 0;
- foreach ([ 'pcitable.d', $pcitable_addons ], [ 'usbtable.d', $usbtable_addons ]) {
- my ($dir, $str) = @$_;
- -d "$prefix/usr/share/ldetect-lst/$dir" && $str =~ /^[^#]/m and $update = 1 and
- output "$prefix/usr/share/ldetect-lst/$dir/95drakx.lst", $str;
- }
- $update and run_program::rooted($prefix, "/usr/sbin/update-ldetect-lst");
- }
-}
-
-sub add_addons {
- my ($addons, @l) = @_;
-
- foreach (split "\n", $addons) {
- /^\s/ and die qq(bad detect_devices::probeall_addons line "$_");
- s/^#.*//;
- s/"(.*?)"/$1/g;
- next if /^$/;
- my ($vendor, $id, $driver, $description) = split("\t", $_, 4) or die qq(bad detect_devices::probeall_addons line "$_");
- foreach (@l) {
- $_->{vendor} == hex $vendor && $_->{id} == hex $id or next;
- put_in_hash($_, { driver => $driver, description => $description });
- }
- }
- @l;
-}
-
-sub pci_probe() {
- add_addons($pcitable_addons, map {
- my %l;
- @l{qw(vendor id subvendor subid pci_bus pci_device pci_function media_type driver description)} = split "\t";
- $l{$_} = hex $l{$_} foreach qw(vendor id subvendor subid);
- $l{bus} = 'PCI';
- \%l;
- } c::pci_probe());
-}
-
-sub usb_probe() {
- -e "/proc/bus/usb/devices" or return;
-
- add_addons($usbtable_addons, map {
- my %l;
- @l{qw(vendor id media_type driver description pci_bus pci_device)} = split "\t";
- $l{media_type} = join('|', grep { $_ ne '(null)' } split('\|', $l{media_type}));
- $l{$_} = hex $l{$_} foreach qw(vendor id);
- $l{bus} = 'USB';
- \%l;
- } c::usb_probe());
-}
-
-sub firewire_probe() {
- my $dev_dir = '/sys/bus/ieee1394/devices';
- my @l = map {
- my $dir = "$dev_dir/$_";
- my $get = sub { chomp_(cat_($_[0])) };
- {
- version => hex($get->("$dir/../vendor_id")),
- specifier_id => hex($get->("$dir/specifier_id")),
- specifier_version => hex($get->("$dir/version")),
- bus => 'Firewire',
- };
- } grep { -f "$dev_dir/$_/specifier_id" } all($dev_dir);
-
- my $e;
- foreach (cat_('/proc/bus/ieee1394/devices')) {
- if (m!Vendor/Model ID: (.*) \[(\w+)\] / (.*) \[(\w+)\]!) {
- push @l, $e = {
- vendor => hex($2), id => hex($4),
- description => join('|', $1, $3),
- bus => 'Firewire',
- };
- } elsif (/Software Specifier ID: (\w+)/) {
- $e->{specifier_id} = hex $1;
- } elsif (/Software Version: (\w+)/) {
- $e->{specifier_version} = hex $1;
- }
- }
-
- foreach (@l) {
- if ($_->{specifier_id} == 0x00609e && $_->{specifier_version} == 0x010483) {
- add2hash($_, { driver => 'sbp2', description => "Generic Firewire Storage Controller" });
- } elsif ($_->{specifier_id} == 0x00005e && $_->{specifier_version} == 0x000001) {
- add2hash($_, { driver => 'eth1394', description => "IEEE 1394 IPv4 Driver (IPv4-over-1394 as per RFC 2734)" });
- }
- }
- @l;
-}
-
-sub pcmcia_controller_probe() {
- require list_modules;
- my @modules = list_modules::category2modules('bus/pcmcia');
- grep { member($_->{driver}, @modules) } probeall();
-}
-
-sub real_pcmcia_probe() {
- return if $::testing;
-
- c::pcmcia_probe() || first(map { $_->{driver} } pcmcia_controller_probe());
-}
-
-sub pcmcia_probe() {
- -e '/var/run/stab' || -e '/var/lib/pcmcia/stab' or return ();
-
- my (@devs, $desc);
- foreach (cat_('/var/run/stab'), cat_('/var/lib/pcmcia/stab')) {
- if (/^Socket\s+\d+:\s+(.*)/) {
- $desc = $1;
- } else {
- my (undef, $type, $module, undef, $device) = split;
- push @devs, { description => $desc, driver => $module, type => $type, device => $device };
- }
- }
- @devs;
-}
-
-my $dmi_probe;
-sub dmi_probe() {
- $dmi_probe ||= [ map {
- /(.*?)\t(.*)/ && { bus => 'DMI', driver => $1, description => $2 };
- } c::dmi_probe() ];
- @$dmi_probe;
-}
-
-# pcmcia_probe provides field "device", used in network.pm
-# => probeall with $probe_type is unsafe
-sub probeall() {
- return if $::noauto;
-
- require sbus_probing::main;
- pci_probe(), usb_probe(), firewire_probe(), pcmcia_probe(), sbus_probing::main::probe(), dmi_probe();
-}
-sub matching_desc__regexp {
- my ($regexp) = @_;
- grep { $_->{description} =~ /$regexp/i } probeall();
-}
-sub matching_driver__regexp {
- my ($regexp) = @_;
- grep { $_->{driver} =~ /$regexp/i } probeall();
-}
-
-sub matching_driver {
- my (@list) = @_;
- grep { member($_->{driver}, @list) } probeall();
-}
-
-sub stringlist() {
- map {
- sprintf("%-16s: %s%s%s",
- $_->{driver} || 'unknown',
- $_->{description} eq '(null)' ? sprintf("Vendor=0x%04x Device=0x%04x", $_->{vendor}, $_->{id}) : $_->{description},
- $_->{media_type} ? sprintf(" [%s]", $_->{media_type}) : '',
- $_->{subid} && $_->{subid} != 0xffff ? sprintf(" SubVendor=0x%04x SubDevice=0x%04x", $_->{subvendor}, $_->{subid}) : '',
- );
- } probeall();
-}
-
-sub tryOpen($) {
- my $F;
- sysopen($F, devices::make($_[0]), c::O_NONBLOCK()) && $F;
-}
-
-sub tryWrite($) {
- my $F;
- sysopen($F, devices::make($_[0]), 1 | c::O_NONBLOCK()) && $F;
-}
-
-sub syslog() {
- -r "/tmp/syslog" and return map { /<\d+>(.*)/ } cat_("/tmp/syslog");
- my $LD_LOADER = $ENV{LD_LOADER} || "";
- `$LD_LOADER /bin/dmesg`;
-}
-
-sub get_mac_model() {
- my $mac_model = cat_("/proc/device-tree/model") || die "Can not open /proc/device-tree/model";
- log::l("Mac model: $mac_model");
- $mac_model;
-}
-
-sub get_mac_generation() {
- cat_('/proc/cpuinfo') =~ /^pmac-generation\s*:\s*(.*)/m ? $1 : "Unknown Generation";
-}
-
-sub hasSMP() {
- return if $::testing;
- c::detectSMP() || any { /\bProcessor #(\d+)\s+(\S*)/ && $1 > 0 && $2 ne 'invalid' } syslog();
-}
-sub hasPCMCIA() { $::o->{pcmcia} } #- because /proc/pcmcia seems not to be present on 2.4 at least (or use /var/run/stab)
-
-my (@dmis, $dmidecode_already_runned);
-
-# we return a list b/c several DMIs have the same name:
-sub dmidecode() {
- return @dmis if $dmidecode_already_runned;
-
- foreach (run_program::get_stdout('dmidecode')) {
- if (/^\t\t(.*)/) {
- $dmis[-1]{string} .= "$1\n";
- $dmis[-1]{$1} = $2 if /^\t\t(.*): (.*)$/;
- } elsif (my ($s) = /^\t(.*)/) {
- next if $s =~ /^DMI type /;
- $s =~ s/ Information$//;
- push @dmis, { name => $s };
- }
- }
- $dmidecode_already_runned = 1;
- @dmis;
-}
-sub dmidecode_category {
- my ($cat) = @_;
- my @l = find { $_->{name} eq $cat } dmidecode();
- wantarray() ? @l : $l[0] || {};
-}
-
-sub computer_info() {
- my $Chassis = dmidecode_category('Chassis')->{Type} =~ /(\S+)/ && $1;
-
- my $date = dmidecode_category('BIOS')->{'Release Date'} || '';
- my $BIOS_Year = $date =~ m!(\d{4})! && $1 ||
- $date =~ m!\d\d/\d\d/(\d\d)! && "20$1";
-
- +{
- isLaptop => member($Chassis, 'Portable', 'Laptop', 'Notebook', 'Hand Held', 'Sub Notebook', 'Docking Station'),
- if_($BIOS_Year, BIOS_Year => $BIOS_Year),
- };
-}
-
-#- try to detect a laptop, we assume pcmcia service is an indication of a laptop or
-#- the following regexp to match graphics card apparently only used for such systems.
-sub isLaptop() {
- arch() =~ /ppc/ ?
- get_mac_model() =~ /Book/ :
- computer_info()->{isLaptop}
- || (matching_desc__regexp('C&T.*655[45]\d') || matching_desc__regexp('C&T.*68554') ||
- matching_desc__regexp('Neomagic.*Magic(Media|Graph)') ||
- matching_desc__regexp('ViRGE.MX') || matching_desc__regexp('S3.*Savage.*[IM]X') ||
- matching_desc__regexp('ATI.*(Mobility|LT)'))
- || cat_('/proc/cpuinfo') =~ /\bmobile\b/i;
-}
-
-sub BIGMEM() {
- arch() !~ /x86_64|ia64/ && $> == 0 && c::dmiDetectMemory() > 4 * 1024;
-}
-
-sub is_i586() {
- my $cpuinfo = cat_('/proc/cpuinfo');
- $cpuinfo =~ /^cpu family\s*:\s*(\d+)/m && $1 < 6 ||
- !has_cpu_flag('cmov');
-}
-sub has_cpu_flag {
- my ($flag) = @_;
- cat_('/proc/cpuinfo') =~ /^flags.*\b$flag\b/m;
-}
-
-sub matching_type {
- my ($type) = @_;
- if ($type =~ /laptop/i) {
- return isLaptop();
- } elsif ($type =~ /wireless/i) {
- return any { is_wireless_interface($_) } getNet();
- }
-}
-
-sub usbMice() { grep { $_->{media_type} =~ /\|Mouse/ && $_->{driver} !~ /wacom/ ||
- $_->{driver} =~ /Mouse:USB/ } usb_probe() }
-sub usbWacom() { grep { $_->{driver} =~ /wacom/ } usb_probe() }
-sub usbKeyboards() { grep { $_->{media_type} =~ /\|Keyboard/ } usb_probe() }
-sub usbStorage() { grep { $_->{media_type} =~ /Mass Storage\|/ } usb_probe() }
-sub has_mesh() { find { /mesh/ } all_files_rec("/proc/device-tree") }
-sub has_53c94() { find { /53c94/ } all_files_rec("/proc/device-tree") }
-
-sub usbKeyboard2country_code {
- my ($usb_kbd) = @_;
- my ($F, $tmp);
- sysopen($F, sprintf("/proc/bus/usb/%03d/%03d", $usb_kbd->{pci_bus}, $usb_kbd->{pci_device}), 0) and
- sysseek $F, 0x28, 0 and
- sysread $F, $tmp, 1 and
- unpack("C", $tmp);
-}
-
-sub probeSerialDevices() {
- require list_modules;
- require modules;
- modules::append_to_modules_loaded_at_startup_for_all_kernels(modules::load_category($::o->{modules_conf}, 'various/serial'));
- foreach (0..3) {
- #- make sure the device are created before probing,
- devices::make("/dev/ttyS$_");
- #- and make sure the device is a real terminal (major is 4).
- int((stat "/dev/ttyS$_")[6]/256) == 4 or $serialprobe{"/dev/ttyS$_"} = undef;
- }
-
- #- for device already probed, we can safely (assuming device are
- #- not moved during install :-)
- #- include /dev/mouse device if using an X server.
- mkdir_p("/var/lock");
- -l "/dev/mouse" and $serialprobe{"/dev/" . readlink "/dev/mouse"} = undef;
- foreach (keys %serialprobe) { m|^/dev/(.*)| and touch "/var/lock/LCK..$1" }
-
- print STDERR "Please wait while probing serial ports...\n";
- #- start probing all serial ports... really faster than before ...
- #- ... but still take some time :-)
- my %current;
- foreach (run_program::get_stdout('serial_probe')) {
- if (/^\s*$/) {
- $serialprobe{$current{DEVICE}} = { %current } if $current{DEVICE};
- %current = ();
- } elsif (/^([^=]+)=(.*?)\s*$/) {
- $current{$1} = $2;
- }
- }
-
- foreach (values %serialprobe) {
- $_->{DESCRIPTION} =~ /modem/i and $_->{CLASS} = 'MODEM'; #- hack to make sure a modem is detected.
- $_->{DESCRIPTION} =~ /olitec/i and $_->{CLASS} = 'MODEM'; #- hack to make sure such modem gets detected.
- log::l("probed $_->{DESCRIPTION} of class $_->{CLASS} on device $_->{DEVICE}");
- }
-}
-
-sub probeSerial($) { $serialprobe{$_[0]} }
-
-sub hasModem($) {
- $serialprobe{$_[0]} && $serialprobe{$_[0]}{CLASS} eq 'MODEM' && $serialprobe{$_[0]}{DESCRIPTION};
-}
-
-sub hasMousePS2 {
- my $t; sysread(tryOpen($_[0]) || return, $t, 256) != 1 || $t ne "\xFE";
-}
-
-sub usb_description2removable {
- local ($_) = @_;
- return 'camera' if /\bcamera\b/i;
- return 'memory_card' if /\bmemory\s?stick\b/i || /\bcompact\s?flash\b/i || /\bsmart\s?media\b/i;
- return 'memory_card' if /DiskOnKey/i || /IBM-DMDM/i;
- return 'zip' if /\bzip\s?(100|250|750)/i;
- return 'floppy' if /\bLS-?120\b/i;
- return;
-}
-
-sub usb2removable {
- my ($e) = @_;
- $e->{usb_driver} or return;
-
- if ($e->{usb_driver} =~ /Removable:(.*)/) {
- return $1;
- } elsif (my $name = usb_description2removable($e->{usb_description})) {
- return $name;
- }
- undef;
-}
-
-sub suggest_mount_point {
- my ($e) = @_;
-
- my $name = $e->{media_type};
- if (member($e->{media_type}, 'hd', 'fd')) {
- if (exists $e->{usb_driver}) {
- $name = usb2removable($e) || 'removable';
- } elsif (isZipDrive($e)) {
- $name = 'zip';
- } elsif ($e->{media_type} eq 'fd') {
- $name = 'floppy';
- } else {
- log::l("suggest_mount_point: do not know what to with hd $e->{device}");
- }
- }
- $name;
-}
-
-1;
diff --git a/perl-install/devices.pm b/perl-install/devices.pm
deleted file mode 100644
index 513c1714a..000000000
--- a/perl-install/devices.pm
+++ /dev/null
@@ -1,277 +0,0 @@
-package devices; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use run_program;
-use log;
-use c;
-
-sub size {
- my ($dev) = @_;
- sysopen(my $F, $dev, 0) or log::l("open $dev: $!"), return 0;
-
- my $valid_offset = sub { sysseek($F, $_[0], 0) && sysread($F, my $_a, 1) };
-
- #- first try getting the size nicely
- if (my $size = c::total_sectors(fileno $F)) {
- return $size * $common::SECTORSIZE;
- }
-
- #- sad it did not work, well searching the size using the dichotomy algorithm!
- my $low = 0;
- my ($high, $mid);
-
- #- first find n where 2^n < size <= 2^n+1
- for ($high = 1; $high > 0 && $valid_offset->($high); $high *= 2) { $low = $high }
-
- while ($low < $high - 1) {
- $mid = int(($low + $high) / 2);
- $valid_offset->($mid) ? $low : $high = $mid;
- }
- $low + 1;
-}
-
-sub del_loop {
- my ($dev) = @_;
- run_program::run("losetup", "-d", $dev);
-}
-sub find_free_loop() {
- foreach (0..255) {
- my $dev = make("loop$_");
- sysopen(my $F, $dev, 2) or next;
- !ioctl($F, c::LOOP_GET_STATUS(), my $_tmp) && $! == 6 or next; #- 6 == ENXIO
- return $dev;
- }
- die "no free loop found";
-}
-sub set_loop {
- my ($file, $o_encrypt_key, $o_encryption) = @_;
- eval { modules::load('loop') };
- my $dev = find_free_loop();
-
- if ($o_encrypt_key && $o_encryption) {
- eval { modules::load('cryptoloop', arch() =~ /i.86/ ? 'aes-i586' : 'aes') };
- my $cmd = "losetup -p 0 -e $o_encryption $dev $file";
- log::l("calling $cmd");
- open(my $F, "|$cmd");
- print $F $o_encrypt_key;
- close $F or die "losetup failed";
- } else {
- run_program::run("losetup", $dev, $file) or return;
- }
- $dev;
-}
-
-sub find_clp_loop {
- my ($name) = @_;
- foreach (0..255) {
- my $dev = make("loop$_");
- my ($file) = `losetup $dev 2>/dev/null` =~ m!\((.*?)\)! or return;
- $file =~ s!^/sysroot/!/!;
- basename($file) eq $name and return $dev, $file;
- }
- undef;
-}
-
-sub init_device_mapper() {
- eval { modules::load('dm-mod') };
- make('urandom');
- my $control = '/dev/mapper/control';
- if (! -e $control) {
- my ($major) = cat_('/proc/devices') =~ /(\d+) misc$/m or return;
- my ($minor) = cat_('/proc/misc') =~ /(\d+) device-mapper$/m or return;
- mkdir_p(dirname($control));
- syscall_('mknod', $control, c::S_IFCHR() | 0600, makedev($major, $minor)) or die "mknod $control failed: $!";
- }
-}
-
-sub entry {
- my ($type, $major, $minor);
- local ($_) = @_;
-
- if (/^0x([\da-f]{3,4})$/i) {
- $type = c::S_IFBLK();
- ($major, $minor) = unmakedev(hex $1);
- } elsif (/^sd(.)(\d{0,2})/) {
- $type = c::S_IFBLK();
- $major = 8;
- $minor = 16 * (ord($1) - ord('a')) + ($2 || 0);
- } elsif (/^hd(.)(\d{0,2})/) {
- $type = c::S_IFBLK();
- ($major, $minor) =
- @{ ${{'a' => [3, 0], 'b' => [3, 64],
- 'c' => [22,0], 'd' => [22,64],
- 'e' => [33,0], 'f' => [33,64],
- 'g' => [34,0], 'h' => [34,64],
- 'i' => [56,0], 'j' => [56,64],
- 'k' => [57,0], 'l' => [57,64],
- 'm' => [88,0], 'n' => [88,64],
- 'o' => [89,0], 'p' => [89,64],
- 'q' => [90,0], 'r' => [90,64],
- 's' => [91,0], 't' => [91,64],
- }}{$1} or internal_error("unknown device $_") };
- $minor += $2 || 0;
- } elsif (/^ram(.*)/) {
- $type = c::S_IFBLK();
- $major = 1;
- $minor = $1 eq '' ? 1 : $1;
- } elsif (m|^rd/c(\d+)d(\d+)(p(\d+))?|) {
- # dac 960 "rd/cXdXXpX"
- $type = c::S_IFBLK();
- $major = 48 + $1;
- $minor = 8 * $2 + $4;
- } elsif (m,(ida|cciss)/c(\d+)d(\d+)(?:p(\d+))?,) {
- # Compaq Smart Array "ida/c0d0{p1}"
- $type = c::S_IFBLK();
- $major = ($1 eq 'ida' ? 72 : 104) + $2;
- $minor = 16 * $3 + ($4 || 0);
- } elsif (m,(ataraid)/d(\d+)(?:p(\d+))?,) {
- # ATA raid "ataraid/d0{p1}"
- $type = c::S_IFBLK();
- $major = 114;
- $minor = 16 * $1 + ($2 || 0);
- } elsif (/(.*?)(\d+)$/) {
- ($type, $major, $minor) =
- @{ ${{"fd" => [ c::S_IFBLK(), 2, 0 ],
- "hidbp-mse-" => [ c::S_IFCHR(), 10, 32 ],
- "lp" => [ c::S_IFCHR(), 6, 0 ],
- "usb/lp" => [ c::S_IFCHR(), 180, 0 ],
- "input/event" => [ c::S_IFCHR(), 13, 64 ],
- "loop" => [ c::S_IFBLK(), 7, 0 ],
- "md" => [ c::S_IFBLK(), 9, 0 ],
- "nst" => [ c::S_IFCHR(), 9, 128 ],
- "sr" => [ c::S_IFBLK(), 11, 0 ],
- "ttyS" => [ c::S_IFCHR(), 4, 64 ],
- "ubd/" => [ c::S_IFBLK(), 98, 0 ],
- }}{$1} };
- $minor += $2;
- }
- unless ($type) {
- ($type, $major, $minor) =
- @{ ${{"aztcd" => [ c::S_IFBLK(), 29, 0 ],
- "bpcd" => [ c::S_IFBLK(), 41, 0 ],
- "cdu31a" => [ c::S_IFBLK(), 15, 0 ],
- "cdu535" => [ c::S_IFBLK(), 24, 0 ],
- "cm206cd" => [ c::S_IFBLK(), 32, 0 ],
- "gscd" => [ c::S_IFBLK(), 16, 0 ],
- "mcd" => [ c::S_IFBLK(), 23, 0 ],
- "mcdx" => [ c::S_IFBLK(), 20, 0 ],
- "mem" => [ c::S_IFCHR(), 1, 1 ],
- "optcd" => [ c::S_IFBLK(), 17, 0 ],
- "kbd" => [ c::S_IFCHR(), 11, 0 ],
- "psaux" => [ c::S_IFCHR(), 10, 1 ],
- "atibm" => [ c::S_IFCHR(), 10, 3 ],
- "random" => [ c::S_IFCHR(), 1, 8 ],
- "urandom" => [ c::S_IFCHR(), 1, 9 ],
- "sbpcd" => [ c::S_IFBLK(), 25, 0 ],
- "sjcd" => [ c::S_IFBLK(), 18, 0 ],
- "tty" => [ c::S_IFCHR(), 5, 0 ],
- "input/mice"
- => [ c::S_IFCHR(), 13, 63 ],
- "usbmouse" => [ c::S_IFCHR(), 13, 63 ], #- aka /dev/input/mice
- "adbmouse" => [ c::S_IFCHR(), 10, 10 ], #- PPC
- "vcsa" => [ c::S_IFCHR(), 7, 128 ],
- "zero" => [ c::S_IFCHR(), 1, 5 ],
- "null" => [ c::S_IFCHR(), 1, 3 ],
- }}{$_} or internal_error("unknown device $_") };
- }
- ($type, $major, $minor);
-}
-
-
-sub make($) {
- local $_ = my $file = $_[0];
-
- if (m!^(.*/dev)/(.*)!) {
- $_ = $2;
- } else {
- $file =~ m|^/| && -e $file or $file = "/dev/$_";
- }
- -e $file and return $file; #- assume nobody takes fun at creating files named as device
-
- my ($type, $major, $minor) = entry($_);
-
- if ($file =~ m|/dev/| && -e '/dev/.devfsd') {
- #- argh, creating devices is no good with devfs...
- #- return the file even if the device file does not exist
- #- the caller will fail or not, better compatibility than raising an exception here
- return $file;
- }
-
- #- make a directory for this inode if needed.
- mkdir_p(dirname($file));
-
- syscall_('mknod', $file, $type | 0600, makedev($major, $minor)) or die "mknod failed (dev $_): $!";
-
- $file;
-}
-
-
-#- only isomorphic entries are allowed,
-#- i.e. entries which can go devfs -> normal and normal -> devfs
-my %to_devfs = (
- psaux => 'misc/psaux',
- usbmouse => 'input/mice',
-);
-my %to_devfs_prefix = (
- ttyS => 'tts/',
-);
-
-sub to_devfs {
- my ($dev) = @_;
- if (my $r = $to_devfs{$dev}) {
- return $r;
- } elsif ($dev =~ /(.*?)(\d+)$/) {
- my $r = $to_devfs_prefix{$1};
- return "$r$2" if $r;
- }
- readlink("/dev/" . $dev);
-}
-
-sub read_proc_partitions_raw() {
- my (undef, undef, @all) = cat_("/proc/partitions");
- grep {
- $_->{size} != 1 && # skip main extended partition
- $_->{size} != 0x3fffffff; # skip cdroms (otherwise stops cd-audios)
- } map {
- my %l;
- @l{qw(major minor size dev)} = split;
- \%l;
- } @all;
-}
-
-sub from_devfs {
- my ($dev) = @_;
- my %from_devfs = reverse %to_devfs;
- if (my $r = $from_devfs{$dev}) {
- return $r;
- } elsif ($dev =~ /(.*?)(\d+)$/) {
- my %from_devfs_prefix = reverse %to_devfs_prefix;
- my $r = $from_devfs_prefix{$1};
- return "$r$2" if $r;
- }
- $dev = "/dev/" . $dev;
- if (-e $dev) {
- my ($major, $minor) = unmakedev((stat($dev))[6]);
- my $r = find { $_->{major} == $major && $_->{minor} == $minor } read_proc_partitions_raw();
- $r and return $r->{dev};
- }
- undef;
-}
-
-sub simple_partition_scan {
- my ($part) = @_;
- $part->{device} =~ /([hs]d[a-z])(\d+)$/;
-}
-sub part_number {
- my ($part) = @_;
- (simple_partition_scan($part))[1];
-}
-sub part_prefix {
- my ($part) = @_;
- (simple_partition_scan($part))[0];
-}
-
-1;
diff --git a/perl-install/diskdrake/dav.pm b/perl-install/diskdrake/dav.pm
deleted file mode 100644
index 1229d5f3f..000000000
--- a/perl-install/diskdrake/dav.pm
+++ /dev/null
@@ -1,115 +0,0 @@
-package diskdrake::dav; # $Id$
-
-use diagnostics;
-use strict;
-use diskdrake::interactive;
-use common;
-
-sub main {
- my ($in, $all_hds) = @_;
- my $davs = $all_hds->{davs};
-
- $in->do_pkgs->ensure_binary_is_installed('davfs', 'mount.davfs') or return;
-
- my $quit;
- do {
- $in->ask_from_({ ok => '', messages => formatAlaTeX(
-N("WebDAV is a protocol that allows you to mount a web server's directory
-locally, and treat it like a local filesystem (provided the web server is
-configured as a WebDAV server). If you would like to add WebDAV mount
-points, select \"New\".")) },
- [
- (map {
- my $dav = $_;
- { label => $dav->{device}, val => $dav->{mntpoint}, clicked_may_quit => sub { config($in, $dav, $all_hds); 1 } } } @$davs),
- { val => N("New"), clicked_may_quit => sub { create($in, $all_hds); 1 } },
- { val => N("Quit"), clicked_may_quit => sub { $quit = 1 } },
- ]);
- } until $quit;
-
- diskdrake::interactive::Done($in, $all_hds);
-}
-
-sub create {
- my ($in, $all_hds) = @_;
-
- my $dav = { fs_type => 'davfs' };
- ask_server($in, $dav, $all_hds) or return;
- push @{$all_hds->{davs}}, $dav;
- config($in, $dav, $all_hds);
-}
-
-sub config {
- my ($in, $dav_, $all_hds) = @_;
-
- my $dav = { %$dav_ }; #- working on a local copy so that "Cancel" works
-
- my $action;
- while ($action ne 'Done') {
- my %actions = my @actions = actions($dav);
- $action = $in->ask_from_list_('', format_dav_info($dav),
- [ map { $_->[0] } group_by2 @actions ], 'Done') or return;
- $actions{$action}->($in, $dav, $all_hds);
- }
- %$dav_ = %$dav; #- applying
-}
-
-sub actions {
- my ($dav) = @_;
-
- (
- if_($dav && $dav->{isMounted}, N_("Unmount") => sub { try('Unmount', @_) }),
- if_($dav && $dav->{mntpoint} && !$dav->{isMounted}, N_("Mount") => sub { try('Mount', @_) }),
- N_("Server") => \&ask_server,
- N_("Mount point") => \&mount_point,
- N_("Options") => \&options,
- N_("Done") => sub {},
- );
-}
-
-sub try {
- my ($name, $in, $dav) = @_;
- my $f = $diskdrake::interactive::{$name} or die "unknown function $name";
- eval { $f->($in, {}, $dav) };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
-}
-
-sub ask_server {
- my ($in, $dav, $_all_hds) = @_;
-
- my $server = $dav->{device};
- $in->ask_from_({ messages => N("Please enter the WebDAV server URL"),
- focus_first => 1,
- callbacks => {
- complete => sub {
- $server =~ m!https?://! or $in->ask_warn('', N("The URL must begin with http:// or https://")), return 1;
- 0;
- },
- } },
- [ { val => \$server } ]) or return;
- $dav->{device} = $server;
-}
-
-sub options {
- my ($in, $dav, $all_hds) = @_;
- diskdrake::interactive::Options($in, {}, $dav, $all_hds);
-}
-sub mount_point {
- my ($in, $dav, $all_hds) = @_;
- my $proposition = $dav->{device} =~ /(\w+)/ ? "/mnt/$1" : "/mnt/dav";
- diskdrake::interactive::Mount_point_raw_hd($in, $dav, $all_hds, $proposition);
-}
-
-sub format_dav_info {
- my ($dav) = @_;
-
- my $info = '';
- $info .= N("Server: ") . "$dav->{device}\n" if $dav->{device};
- $info .= N("Mount point: ") . "$dav->{mntpoint}\n" if $dav->{mntpoint};
- $info .= N("Options: %s", $dav->{options}) if $dav->{options};
- $info;
-}
-
-1;
diff --git a/perl-install/diskdrake/diskdrake.html b/perl-install/diskdrake/diskdrake.html
deleted file mode 100644
index cba732084..000000000
--- a/perl-install/diskdrake/diskdrake.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
- <head>
- <title>DiskDrake</title>
- </head>
- <body bgcolor="#ffffff">
-
-<center>
-<table width=80% border=0 cellpadding=10 cellspacing=10>
-<tr>
-<td bgcolor=#ffffff>
-
- <p>
- <img src="images/diskdrake1-def.jpg" alt="diskdrake logo" width=400 height=100>
- <p>
-
- <H2>I- What's it?</H2>
-
- The purpose of the DiskDrake project is to make easier the hard disk
- partitionning. It is graphical, simple and powerful. The license is
- the GPL (General Public License).
- <BR>
- Different skill levels will be available (newbie, advanced user, expert).
- <BR>
- It's written entirely in Perl and Perl/Gtk. It uses resize_fat which is
- a perl rewrite of the work of Andrew Clausen (libresize).
- <P>
- DiskDrake is a project from Mandrakesoft, the company behind the popular
- <a href="http://www.linux-mandrake.com">Linux-Mandrake</a>
- operating-system.
- <P>
- A <A href="http://www.eatel.net/~john/diskdrake/faq.html">FAQ</A> is in construction.
-
- <H2>II - What's available now</H2>
-
- DiskDrake should be usable now...
-
- it can:
- <UL>
- <LI> create partitions
- <LI> delete partitions
- <LI> change type of partition
- <LI> format partitions
- <LI> assign a mount point (<IMG SRC="/images/updated.gif" ALT="updated"><SMALL>(21/07/99)</SMALL> propose a list
- of classic mount points and verify the mount point is valid)
- <LI> mount partitions
- <LI> resize fat partitions
- <LI> resize partitions (when not caring loosing its data)
- <LI> clear partition table
- <LI> auto allocation (usefull for install)
- <LI> write fstab
- </UL>
-
-with nice contextual menu (shortcuts available, but dangerous as all actions are
-available, whereas with the contextual menu these actions are hidden. This will
-change)
-
- <P><IMG SRC="/images/updated.gif" ALT="updated"><SMALL>(25/07/99)</SMALL>
- A new Expert button appear now. It toggles between
- expert and normal mode. Some changes in information displayed:
- <UL>
- <LI> when you click (or focus) the drive tab (eg: hda), you get
- information about your drive: size, geometry
- (cylinders/sectors/heads number), type (eg: IBM DDRS-39130D), and bus/id.
- In normal mode you have only the size.
- <LI> the windows drive letter (eg: C: D: ...)
- <LI> the `start sector' information from normal mode, it still appears in
- expert mode
- <LI> the start&end cylinder of each partition is now displayed in expert
- mode
- <LI> the type is displayed numerically in expert mode
- </UL>
-
- <P><IMG SRC="/images/updated.gif" ALT="updated"><SMALL>(25/07/99)</SMALL>
- The mount point in the `Create' window and `Change type' window is now a
- combo box. It lets you choose between classical mount points (/ /usr /var
- ...) but with already allocated mount points removed.
-
- <H2>III - Actual developpment</H2>
-
- We need people!!!
-
- <UL>
- <LI><B>Tests</B> and remove bugs (no known yet :)
- <LI>integrate ext2resize (which has been release in version 1.0.0 <IMG
- SRC="/images/updated.gif" ALT="updated"><SMALL>(26/07/99)</SMALL>)
- <LI>add possibility to move partition without loosing data (by copying all
- data) <IMG SRC="/images/updated.gif" ALT="updated">
- <LI>Improve the look
- <LI>Add a text-only version
- <LI>Help text, tutorial...
- <LI>Internationalization
- <LI>Add some features...
- <LI>Packaging (rpm, deb, slp...)
- </UL>
-
- <H2>IV- ScreenShot</H2>
-
- Warning: features was the main focus, so don't be too hard :)
-
- <P>
- <CENTER><IMG SRC="1.gif"></IMG></CENTER>
- <CENTER>DiskDrake main interface</CENTER>
-
- <BR>
- <CENTER><IMG SRC="3.gif"></IMG></CENTER>
- <CENTER>create dialog box</CENTER>
-
- <H2>V - Contacts</H2>
-
- A Mailing List has been created to allow developpers to discuss about DiskDrake.<BR>
-
- <P>
- Send a mail to: <A HREF="mailto:sympa@linux-mandrake.com">sympa@linux-mandrake.com</A>
-
- <BR>Put in the subject: subscribe diskdrake
- <BR>When you're subscribed, send your messages to: <A HREF="mailto:diskdrake@linux-mandrake.com">diskdrake@linux-mandrake.com</A>
-
- <P>Otherwise you can contact directly the <A HREF="mailto:pixel@linux-mandrake.com">project leader</A>.
-
- <H2>VI - Download</H2>
-
- Warning: You must have <a href="http://www.perl.com/CPAN/modules/by-module/Gtk/Gtk-Perl-0.5121.tar.gz">Gtk-Perl</a>.
- You can get the rpm from the <a href="http://linux-mandrake.com/cooker/">Cooker</a> distribution.
-
- <P>You also need perl version 5.00503 or better
-
- <P> Here you can find the plain tgz or a rpm:
- <a href="ftp://ftp.phys.ttu.edu/pub/mandrake-devel/contrib/others/diskdrake/">diskdrake</a> (Other mirrors in <a href="http://linux-mandrake.com/cooker/">Cooker</a>)
-
-</td>
-</tr>
-</table>
-<p>
-<a href="/en/fpowerpack.php3"><img src="/images/mandrake6.0-loop.gif" width=468 height=60 alt="Mandrake 6.0 PowerPack"></a>
-</center>
- </body>
- <address><a href="mailto:pixel@linux-mandrake.com"></a></address>
-</html>
diff --git a/perl-install/diskdrake/hd_gtk.pm b/perl-install/diskdrake/hd_gtk.pm
deleted file mode 100644
index 036bfff85..000000000
--- a/perl-install/diskdrake/hd_gtk.pm
+++ /dev/null
@@ -1,394 +0,0 @@
-package diskdrake::hd_gtk; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use ugtk2 qw(:helpers :wrappers :create);
-use partition_table;
-use fs::type;
-use detect_devices;
-use diskdrake::interactive;
-use run_program;
-use loopback;
-use devices;
-use raid;
-use any;
-use log;
-use fsedit;
-
-my ($width, $height, $minwidth) = (400, 50, 5);
-my ($all_hds, $in, $do_force_reload, $current_kind, $current_entry, $update_all);
-my ($w, @notebook, $done_button);
-
-=begin
-
-
-=head1 SYNOPSYS
-
-struct {
- string name # which is displayed in tab of the notebook
- bool no_auto # wether the kind can disappear after creation
- string type # one of { 'hd', 'raid', 'lvm', 'loopback', 'removable', 'nfs', 'smb' }
- hd | hd_lvm | part_raid[] | part_loopback[] | raw_hd[] val
-
- #
- widget main_box
- widget display_box
- widget action_box
- widget info_box
-} current_kind
-
-part current_entry
-
-notebook current_kind[]
-
-=cut
-
-sub main {
- ($in, $all_hds, my $nowizard, $do_force_reload, my $interactive_help) = @_;
-
- @notebook = ();
-
- local $in->{grab} = 1;
-
- $w = ugtk2->new('DiskDrake');
- $::main_window = $w->{real_window} if !$::isEmbedded && !$::isInstall;
- my $rc = "/usr/share/libDrakX/diskdrake.rc";
- -r $rc or $rc = dirname(__FILE__) . "/../diskdrake.rc";
- -r $rc or $rc = dirname(__FILE__) . "/../share/diskdrake.rc";
- Gtk2::Rc->parse($rc);
-
- # TODO
-# is_empty_array_ref($all_hds->{raids}) or raid::stopAll;
-# updateLoopback();
-
- gtkadd($w->{window},
- gtkpack_(Gtk2::VBox->new(0,7),
- 0, filesystems_button_box(),
- 1, (my $notebook_widget = Gtk2::Notebook->new),
- 0, (my $per_kind_action_box = Gtk2::HBox->new(0,0)),
- 0, (my $general_action_box = Gtk2::HBox->new(0,0)),
- ),
- );
- my $lock;
- $update_all = sub {
- $lock and return;
- $lock = 1;
- partition_table::assign_device_numbers($_) foreach fs::get::hds($all_hds);
- create_automatic_notebooks($notebook_widget);
- general_action_box($general_action_box, $nowizard, $interactive_help);
- per_kind_action_box($per_kind_action_box, $current_kind);
- current_kind_changed($in, $current_kind);
- current_entry_changed($current_kind, $current_entry);
- $lock = 0;
- };
- create_automatic_notebooks($notebook_widget);
-
- $notebook_widget->signal_connect(switch_page => sub {
- $current_kind = $notebook[$_[2]];
- $current_entry = '';
- $update_all->();
- });
- $w->sync;
- $done_button->grab_focus;
- $in->ask_okcancel(N("Read carefully!"), N("Please make a backup of your data first"), 1) or return
- if $::isStandalone;
- $in->ask_warn('',
-N("If you plan to use aboot, be careful to leave a free space (2048 sectors is enough)
-at the beginning of the disk")) if arch() eq 'alpha' && !$::isEmbedded;
-
- $w->main;
-}
-
-sub try {
- my ($name, @args) = @_;
- my $f = $diskdrake::interactive::{$name} or die "unknown function $name";
- try_($name, \&$f, @args);
-}
-sub try_ {
- my ($name, $f, @args) = @_;
-
- fsedit::undo_prepare($all_hds) if $name ne 'Undo';
-
- my $v = eval { $f->($in, @args, $all_hds) };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
- if ($v eq 'force_reload') {
- $all_hds = $do_force_reload->();
- }
-
- $current_entry = '' if !diskdrake::interactive::is_part_existing($current_entry, $all_hds);
- $update_all->();
-
- Gtk2->main_quit if $v && member($name, 'Done', 'Wizard');
-}
-
-################################################################################
-# generic: helpers
-################################################################################
-sub add_kind2notebook {
- my ($notebook_widget, $kind) = @_;
- die if $kind->{main_box};
-
- $kind->{display_box} = gtkset_size_request(Gtk2::HBox->new(0,0), $width, $height);
- $kind->{action_box} = gtkset_size_request(Gtk2::VBox->new(0,0), $::isStandalone ? 165 : 150, $::isEmbedded ? 150 : 180);
- $kind->{info_box} = Gtk2::VBox->new(0,0);
- $kind->{main_box} =
- gtkpack_(Gtk2::VBox->new(0,7),
- 0, $kind->{display_box},
- 1, gtkpack_(Gtk2::HBox->new(0,7),
- 0, $kind->{action_box},
- 1, $kind->{info_box}));
- ugtk2::add2notebook($notebook_widget, $kind->{name}, $kind->{main_box});
- push @notebook, $kind;
- $kind;
-}
-
-sub general_action_box {
- my ($box, $nowizard, $interactive_help) = @_;
- $_->destroy foreach $box->get_children;
-
- gtkadd($box, gtksignal_connect(Gtk2::Button->new(N("Help")), clicked => $interactive_help)) if $interactive_help;
-
- my @actions = (if_($::isInstall && !$nowizard, N_("Wizard")),
- diskdrake::interactive::general_possible_actions($in, $all_hds),
- N_("Done"));
- foreach my $s (@actions) {
- my $button = Gtk2::Button->new(translate($s));
- $done_button = $button if $s eq 'Done';
- gtkadd($box, gtksignal_connect($button, clicked => sub { try($s) }));
- }
-}
-sub per_kind_action_box {
- my ($box, $kind) = @_;
- $_->destroy foreach $box->get_children;
-
- $kind->{type} =~ /hd|lvm/ or return;
-
- foreach my $s (diskdrake::interactive::hd_possible_actions($in, kind2hd($kind), $all_hds)) {
- gtkadd($box,
- gtksignal_connect(Gtk2::Button->new(translate($s)),
- clicked => sub { try($s, kind2hd($kind)) }));
- }
-}
-sub per_entry_action_box {
- my ($box, $kind, $entry) = @_;
- $_->destroy foreach $box->get_children;
-
- if ($entry) {
- my @buttons = map {
- my $s = $_;
- my $w = Gtk2::Button->new(translate($s));
- $w->signal_connect(clicked => sub { try($s, kind2hd($kind), $entry) });
- $w;
- } diskdrake::interactive::part_possible_actions($in, kind2hd($kind), $entry, $all_hds);
-
- gtkadd($box, gtkadd(Gtk2::Frame->new(N("Choose action")),
- create_scrolled_window(gtkpack__(Gtk2::VBox->new(0,0), @buttons)))) if @buttons;
- } else {
- my $txt = !$::isStandalone && fsedit::is_one_big_fat_or_NT($all_hds->{hds}) ?
-N("You have one big Microsoft Windows partition.
-I suggest you first resize that partition
-(click on it, then click on \"Resize\")") : N("Please click on a partition");
- gtkpack($box, gtktext_insert(Gtk2::TextView->new, $txt));
- }
-}
-
-sub per_entry_info_box {
- my ($box, $kind, $entry) = @_;
- $_->destroy foreach $box->get_children;
- my $info;
- if ($entry) {
- $info = diskdrake::interactive::format_part_info(kind2hd($kind), $entry);
- } elsif ($kind->{type} =~ /hd|lvm/) {
- $info = diskdrake::interactive::format_hd_info($kind->{val});
- }
- gtkpack($box, gtkadd(Gtk2::Frame->new(N("Details")), gtkset_justify(Gtk2::Label->new($info), 'left')));
-}
-
-sub current_kind_changed {
- my ($_in, $kind) = @_;
-
- $_->destroy foreach $kind->{display_box}->get_children;
-
- my $v = $kind->{val};
- my @parts =
- $kind->{type} eq 'raid' ? grep { $_ } @$v :
- $kind->{type} eq 'loopback' ? @$v : fs::get::hds_fstab_and_holes($v);
- my $totalsectors =
- $kind->{type} =~ /raid|loopback/ ? sum(map { $_->{size} } @parts) : $v->{totalsectors};
- create_buttons4partitions($kind, $totalsectors, @parts);
-}
-
-sub current_entry_changed {
- my ($kind, $entry) = @_;
- $current_entry = $entry;
- if ($kind) {
- per_entry_action_box($kind->{action_box}, $kind, $entry);
- per_entry_info_box($kind->{info_box}, $kind, $entry);
- }
-}
-
-sub create_automatic_notebooks {
- my ($notebook_widget) = @_;
-
- $_->{marked} = 0 foreach @notebook;
- my $may_add = sub {
- my ($kind) = @_;
- my @l = grep { $kind->{val} == $_->{val} } @notebook;
- @l > 1 and log::l("weird: create_automatic_notebooks");
- $kind = $l[0] || add_kind2notebook($notebook_widget, $kind);
- $kind->{marked} = 1;
- };
- $may_add->(hd2kind($_)) foreach @{$all_hds->{hds}};
- $may_add->(lvm2kind($_)) foreach @{$all_hds->{lvms}};
- $may_add->(raid2kind()) if @{$all_hds->{raids}};
- $may_add->(loopback2kind()) if @{$all_hds->{loopbacks}};
-
- @notebook = grep_index {
- my $b = $_->{marked} or $notebook_widget->remove_page($::i);
- $b;
- } @notebook;
- @notebook or die N("No hard drives found");
-}
-
-################################################################################
-# parts: helpers
-################################################################################
-sub create_buttons4partitions {
- my ($kind, $totalsectors, @parts) = @_;
-
- $width = max($width, 0.9 * second($w->{window}->window->get_size)) if $w->{window}->window;
-
- my $ratio = $totalsectors ? ($width - @parts * $minwidth) / $totalsectors : 1;
- while (1) {
- my $totalwidth = sum(map { $_->{size} * $ratio + $minwidth } @parts);
- $totalwidth <= $width and last;
- $ratio /= $totalwidth / $width * 1.1;
- }
-
- my $current_button;
- my $set_current_button = sub {
- my ($w) = @_;
- $current_button->set_active(0) if $current_button;
- ($current_button = $w)->set_active(1);
- };
-
- foreach my $entry (@parts) {
- my $w = Gtk2::ToggleButton->new_with_label($entry->{mntpoint} || '') or die '';
- $w->signal_connect(clicked => sub {
- $current_button != $w or return;
- current_entry_changed($kind, $entry);
- $set_current_button->($w);
- });
- $w->signal_connect(key_press_event => sub {
- my (undef, $event) = @_;
- member('control-mask', @{$event->state}) && $w == $current_button or return;
- my $c = chr $event->keyval;
-
- foreach my $s (diskdrake::interactive::part_possible_actions($in, kind2hd($kind), $entry, $all_hds)) {
- ${{
- Create => 'c', Delete => 'd', Format => 'f',
- Loopback => 'l', Resize => 'r', Type => 't',
- Mount => 'M', Unmount => 'u', 'Mount point' => 'm',
- 'Add to LVM' => 'L', 'Remove from LVM' => 'L',
- 'Add to RAID' => 'R', 'Remove from RAID' => 'R',
- }}{$s} eq $c or next;
-
- try($s, kind2hd($kind), $entry);
- last;
- }
- });
- $w->set_name("PART_" . fs::type::part2type_name($entry));
- $w->set_size_request($entry->{size} * $ratio + $minwidth, 0);
- gtkpack__($kind->{display_box}, $w);
- if ($current_entry && fsedit::are_same_partitions($current_entry, $entry)) {
- $set_current_button->($w);
- $w->grab_focus;
- }
- }
-}
-
-
-################################################################################
-# disks: helpers
-################################################################################
-sub current_hd() {
- $current_kind->{type} eq 'hd' or die 'current_hd called but $current_kind is not an hd';
- $current_kind->{val};
-}
-sub current_part() {
- current_hd();
- $current_entry;
-}
-
-sub kind2hd {
- my ($kind) = @_;
- $kind->{type} =~ /hd|lvm/ ? $kind->{val} : {};
-}
-
-sub hd2kind {
- my ($hd) = @_;
- { type => 'hd', name => $hd->{device}, val => $hd };
-}
-
-sub filesystems_button_box() {
- my @types = (N_("Ext2"), N_("Journalised FS"), N_("Swap"), arch() =~ /sparc/ ? N_("SunOS") : arch() eq "ppc" ? N_("HFS") : N_("Windows"),
- N_("Other"), N_("Empty"));
- my %name2fs_type = (Ext2 => 'ext2', 'Journalised FS' => 'ext3', Swap => 'swap', Other => 'other', "Windows" => 'vfat', HFS => 'hfs');
-
- gtkpack(Gtk2::HBox->new(0,0),
- N("Filesystem types:"),
- map { my $w = Gtk2::Button->new(translate($_));
- my $t = $name2fs_type{$_};
- $w->signal_connect(clicked => sub { try_('', \&createOrChangeType, $t, current_hd(), current_part()) });
- $w->can_focus(0);
- $w->set_name($_);
- $w;
- } @types);
-}
-
-sub createOrChangeType {
- my ($in, $fs_type, $hd, $part, $all_hds) = @_;
-
- $part ||= !fs::get::hds_fstab($hd) &&
- { pt_type => 0, start => 1, size => $hd->{totalsectors} - 1 };
- $part or return;
- if ($fs_type eq 'other') {
- $in->ask_warn('', N("Use ``%s'' instead", isEmpty($part) ? N("Create") : N("Type")));
- } elsif (!$fs_type) {
- $in->ask_warn('', N("Use ``%s'' instead", N("Delete"))) if !isEmpty($part);
- } elsif (isEmpty($part)) {
- fs::type::set_fs_type($part, $fs_type);
- diskdrake::interactive::Create($in, $hd, $part, $all_hds);
- } else {
- return if $fs_type eq $part->{fs_type};
- $in->ask_warn('', isBusy($part) ? N("Use ``Unmount'' first") : N("Use ``%s'' instead", N("Type")));
- }
-}
-
-################################################################################
-# lvms: helpers
-################################################################################
-sub lvm2kind {
- my ($lvm) = @_;
- { type => 'lvm', name => $lvm->{VG_name}, val => $lvm };
-}
-
-################################################################################
-# raids: helpers
-################################################################################
-sub raid2kind() {
- { type => 'raid', name => 'raid', val => $all_hds->{raids} };
-}
-
-################################################################################
-# loopbacks: helpers
-################################################################################
-sub loopback2kind() {
- { type => 'loopback', name => 'loopback', val => $all_hds->{loopbacks} };
-}
-
-1;
diff --git a/perl-install/diskdrake/interactive.pm b/perl-install/diskdrake/interactive.pm
deleted file mode 100644
index 404dd9c79..000000000
--- a/perl-install/diskdrake/interactive.pm
+++ /dev/null
@@ -1,1318 +0,0 @@
-package diskdrake::interactive; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use fs::type;
-use partition_table;
-use partition_table::raw;
-use detect_devices;
-use run_program;
-use loopback;
-use devices;
-use fsedit;
-use raid;
-use any;
-use log;
-
-
-=begin
-
-=head1 SYNOPSYS
-
-struct part {
- int active # one of { 0 | 0x80 } x86 only, primary only
- int start # in sectors
- int size # in sectors
- int pt_type # 0x82, 0x83, 0x6 ...
- string fs_type # 'ext2', 'nfs', ...
-
- int part_number # 1 for hda1...
- string device # 'hda5', 'sdc1' ...
- string devfs_device # 'ide/host0/bus0/target0/lun0/part5', ...
- string prefer_devfs_name # should the {devfs_device} or the {device} be used in fstab
- string device_LABEL # volume label. LABEL=xxx can be used in fstab instead of
- bool prefer_device_LABEL # should the {device_LABEL} or the {device} be used in fstab
- bool faked_device # false if {device} is a real device, true for nfs/smb/dav/none devices. If the field does not exist, we do not know
-
- string rootDevice # 'sda', 'hdc' ... (can also be a VG_name)
- string real_mntpoint # directly on real /, '/tmp/hdimage' ...
- string mntpoint # '/', '/usr' ...
- string options # 'defaults', 'noauto'
- string device_windobe # 'C', 'D' ...
- string encrypt_key # [0-9A-Za-z./]{20,}
- string comment # comment to have in fstab
- string volume_label #
-
- bool is_removable # is the partition on a removable drive
- bool isMounted
-
- bool isFormatted
- bool notFormatted
- # isFormatted means the device is formatted
- # !isFormatted && notFormatted means the device is not formatted
- # !isFormatted && !notFormatted means we do not know which state we're in
-
- string raid # for partitions of type isRawRAID and which isPartOfRAID, the raid device
- string lvm # partition used as a PV for the VG with {lvm} as VG_name #-#
- loopback loopback[] # loopback living on this partition
-
- # internal
- string real_device # '/dev/loop0', '/dev/loop1' ...
-
- # internal CHS (Cylinder/Head/Sector)
- int start_cyl, start_head, start_sec, end_cyl, end_head, end_sec,
-}
-
-struct part_allocate inherits part {
- int maxsize # in sectors (alike "size")
- int ratio #
- string hd # 'hda', 'hdc'
- string parts # for creating raid partitions. eg: 'foo bar' where 'foo' and 'bar' are mntpoint
-}
-
-struct part_raid inherits part {
- string chunk-size # in KiB, usually '64'
- string level # one of { 0, 1, 4, 5, 'linear' }
- string UUID
-
- part disks[]
-
- # invalid: active, start, rootDevice, device_windobe?, CHS
-}
-
-struct part_loopback inherits part {
- string loopback_file # absolute file name which is relative to the partition
- part loopback_device # where the loopback file live
-
- # device is special here: it is the absolute filename of the loopback file.
-
- # invalid: active, start, rootDevice, device_windobe, CHS
-}
-
-struct part_lvm inherits part {
- # invalid: active, start, device_windobe, CHS
- string lv_name
-}
-
-
-struct partition_table_elem {
- part normal[] #
- part extended # the main/next extended
- part raw[4] # primary partitions
-}
-
-struct geom {
- int heads
- int sectors
- int cylinders
- int totalcylinders # for SUN, forget it
- int start # always 0, forget it
-}
-
-struct hd {
- int totalsectors # size in sectors
- string device # 'hda', 'sdc' ...
- string device_alias # 'cdrom', 'floppy' ...
- string media_type # one of { 'hd', 'cdrom', 'fd', 'tape' }
- string capacity # contain of the strings of { 'burner', 'DVD' }
- string info # name of the hd, eg: 'QUANTUM ATLAS IV 9 WLS'
-
- bool readonly # is it allowed to modify the partition table
- bool getting_rid_of_readonly_allowed # is it forbidden to write because the partition table is badly handled, or is it because we MUST not change the partition table
- bool isDirty # does it need to be written to the disk
- list will_tell_kernel # list of actions to tell to the kernel so that it knows the new partition table
- bool hasBeenDirty # for undo
- bool rebootNeeded # happens when a kernel reread failed
- list partitionsRenumbered # happens when you
- # - remove an extended partition which is not the last one
- # - add an extended partition which is the first extended partition
- list allPartitionsRenumbered # used to update bootloader configuration
- int bus, id
-
- partition_table_elem primary
- partition_table_elem extended[]
-
- geom geom
-
- # internal
- string prefix # for some RAID arrays device=>c0d0 and prefix=>c0d0p
- string file # '/dev/hda' ...
-}
-
-struct hd_lvm inherits hd {
- int PE_size # block size (granularity, similar to cylinder size on x86)
- string VG_name # VG name
-
- part_lvm disks[]
-
- # invalid: bus, id, extended, geom
-}
-
-struct raw_hd inherits hd {
- string fs_type # 'ext2', 'nfs', ...
- string mntpoint # '/', '/usr' ...
- string options # 'defaults', 'noauto'
-
- # invalid: isDirty, will_tell_kernel, hasBeenDirty, rebootNeeded, primary, extended
-}
-
-struct all_hds {
- hd hds[]
- hd_lvm lvms[]
- part_raid raids[]
- part_loopback loopbacks[]
- raw_hd raw_hds[]
- raw_hd nfss[]
- raw_hd smbs[]
- raw_hd davs[]
- raw_hd special[]
-
- # internal: if fstab_to_string($all_hds) eq current_fstab then no need to save
- string current_fstab
-}
-
-
-=cut
-
-
-sub main {
- my ($in, $all_hds, $_nowizard, $do_force_reload, $_interactive_help) = @_;
-
- if ($in->isa('interactive::gtk')) {
- require diskdrake::hd_gtk;
- goto &diskdrake::hd_gtk::main;
- }
-
- my ($current_part, $current_hd);
-
- while (1) {
- my $choose_txt = $current_part ? N_("Choose another partition") : N_("Choose a partition");
- my $parts_and_holes = [ fs::get::fstab_and_holes($all_hds) ];
- my $choose_part = sub {
- $current_part = $in->ask_from_listf('diskdrake', translate($choose_txt),
- sub {
- my $hd = fs::get::part2hd($_[0] || return, $all_hds);
- format_part_info_short($hd, $_[0]);
- }, $parts_and_holes, $current_part) || return;
- $current_hd = fs::get::part2hd($current_part, $all_hds);
- };
-
- $choose_part->() if !$current_part;
- return if !$current_part;
-
- my %actions = my @actions = (
- if_($current_part,
- (map { my $s = $_; $_ => sub { $diskdrake::interactive::{$s}($in, $current_hd, $current_part, $all_hds) } } part_possible_actions($in, $current_hd, $current_part, $all_hds)),
- '____________________________' => sub {},
- ),
- if_(@$parts_and_holes > 1, $choose_txt => $choose_part),
- if_($current_hd,
- (map { my $s = $_; $_ => sub { $diskdrake::interactive::{$s}($in, $current_hd, $all_hds) } } hd_possible_actions_interactive($in, $current_hd, $all_hds)),
- ),
- (map { my $s = $_; $_ => sub { $diskdrake::interactive::{$s}($in, $all_hds) } } general_possible_actions($in, $all_hds)),
- );
- my ($actions) = list2kv(@actions);
- my $a;
- if ($current_part) {
- $in->ask_from_({
- cancel => N("Exit"),
- title => 'diskdrake',
- messages => format_part_info($current_hd, $current_part),
- },
- [ { val => \$a, list => $actions, format => \&translate, type => 'list', sort => 0, gtk => { use_boxradio => 0 } } ]) or last;
- my $v = eval { $actions{$a}() };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
- if ($v eq 'force_reload') {
- $all_hds = $do_force_reload->();
- }
- $current_hd = $current_part = '' if !is_part_existing($current_part, $all_hds);
- } else {
- $choose_part->();
- }
- partition_table::assign_device_numbers($_) foreach fs::get::hds($all_hds);
- }
- return if eval { Done($in, $all_hds) };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
- goto &main;
-}
-
-
-
-
-################################################################################
-# general actions
-################################################################################
-sub general_possible_actions {
- my ($_in, $_all_hds) = @_;
- N_("Undo"), ($::expert ? N_("Toggle to normal mode") : N_("Toggle to expert mode"));
-}
-
-
-sub Undo {
- my ($_in, $all_hds) = @_;
- fsedit::undo($all_hds);
-}
-
-sub Wizard {
- $::o->{wizard} = 1;
- goto &Done;
-}
-
-sub Done {
- my ($in, $all_hds) = @_;
- eval { raid::verify($all_hds->{raids}) };
- if (my $err = $@) {
- $::expert or die;
- $in->ask_okcancel('', [ formatError($err), N("Continue anyway?") ]) or return;
- }
- if (my $part = find { $_->{mntpoint} && !maybeFormatted($_) } fs::get::fstab($all_hds)) {
- $in->ask_okcancel('', N("You should format partition %s.
-Otherwise no entry for mount point %s will be written in fstab.
-Quit anyway?", $part->{device}, $part->{mntpoint})) or return if $::isStandalone;
- }
- foreach (@{$all_hds->{hds}}) {
- if (!write_partitions($in, $_, 'skip_check_rebootNeeded')) {
- return if !$::isStandalone;
- $in->ask_yesorno(N("Quit without saving"), N("Quit without writing the partition table?"), 1) or return;
- }
- }
- if (!$::isInstall) {
- my $new = fs::fstab_to_string($all_hds);
- if ($new ne $all_hds->{current_fstab} && $in->ask_yesorno('', N("Do you want to save /etc/fstab modifications"), 1)) {
- $all_hds->{current_fstab} = $new;
- fs::write_fstab($all_hds);
- }
- update_bootloader_for_renumbered_partitions($in, $all_hds);
-
- if (any { $_->{rebootNeeded} } @{$all_hds->{hds}}) {
- $in->ask_warn('', N("You need to reboot for the partition table modifications to take place"));
- tell_wm_and_reboot();
- }
- }
- 1;
-}
-
-################################################################################
-# per-hd actions
-################################################################################
-sub hd_possible_actions {
- my ($_in, $hd, $_all_hds) = @_;
- (
- if_(!$hd->{readonly} || $hd->{getting_rid_of_readonly_allowed}, N_("Clear all")),
- if_(!$hd->{readonly} && $::isInstall, N_("Auto allocate")),
- N_("More"),
- );
-}
-sub hd_possible_actions_interactive {
- my ($_in, $_hd, $_all_hds) = @_;
- &hd_possible_actions, N_("Hard drive information");
-}
-
-sub Clear_all {
- my ($in, $hd, $all_hds) = @_;
- return if is_xbox(); #- do not let them wipe the OS
- my @parts = partition_table::get_normal_parts($hd);
- foreach (@parts) {
- RemoveFromLVM($in, $hd, $_, $all_hds) if isPartOfLVM($_);
- RemoveFromRAID($in, $hd, $_, $all_hds) if isPartOfRAID($_);
- }
- if (isLVM($hd)) {
- lvm::lv_delete($hd, $_) foreach @parts;
- } else {
- $hd->{readonly} = 0; #- give a way out of readonly-ness. only allowed when getting_rid_of_readonly_allowed
- $hd->{getting_rid_of_readonly_allowed} = 0;
- partition_table::raw::zero_MBR_and_dirty($hd);
- }
-}
-
-sub Auto_allocate {
- my ($in, $hd, $all_hds) = @_;
- my $suggestions = partitions_suggestions($in) or return;
-
- my %all_hds_ = %$all_hds;
- $all_hds_{hds} = [ sort { $a == $hd ? -1 : 1 } @{$all_hds->{hds}} ];
-
- eval { fsedit::auto_allocate(\%all_hds_, $suggestions) };
- if ($@) {
- $@ =~ /partition table already full/ or die;
-
- $in->ask_warn("", [
- N("All primary partitions are used"),
- N("I can not add any more partitions"),
- N("To have more partitions, please delete one to be able to create an extended partition"),
- ]);
- }
-}
-
-sub More {
- my ($in, $hd) = @_;
-
- my %automounting = (
- 0 => N("No supermount"),
- 1 => N("Supermount"),
- magicdev => N("Supermount except for CDROM drives"),
- );
-
- my $r;
- $in->ask_from('', '',
- [
- { val => N("Save partition table"), clicked_may_quit => sub { SaveInFile($in, $hd); 1 } },
- { val => N("Restore partition table"), clicked_may_quit => sub { ReadFromFile($in, $hd); 1 } },
- { val => N("Rescue partition table"), clicked_may_quit => sub { Rescuept($in, $hd); 1 } },
- if_($::isInstall,
- { val => N("Reload partition table"), clicked_may_quit => sub { $r = 'force_reload'; 1 } }),
- if_($::isInstall || 1,
- { label => N("Removable media automounting"), val => \$::o->{useSupermount},
- format => sub { $automounting{$_[0]} },
- list => [ 0, 'magicdev', 1 ], advanced => 1 },
- ),
- ],
- ) && $r;
-}
-
-sub ReadFromFile {
- my ($in, $hd) = @_;
-
- my ($h, $file, $fh);
- if ($::isStandalone) {
- $file = $in->ask_filename({ title => N("Select file") }) or return;
- } else {
- undef $h; #- help perl_checker
- my $name = $hd->{device}; $name =~ s!/!_!g;
- ($h, $fh) = install_any::media_browser($in, '', "part_$name") or return;
- }
-
- eval {
- catch_cdie { partition_table::load($hd, $file || $fh) }
- sub {
- $@ =~ /bad totalsectors/ or return;
- $in->ask_yesorno('',
-N("The backup partition table has not the same size
-Still continue?"), 0);
- };
- };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
-}
-
-sub SaveInFile {
- my ($in, $hd) = @_;
-
- my ($h, $file) = ('', '');
- if ($::isStandalone) {
- $file = $in->ask_filename({ save => 1, title => N("Select file") }) or return;
- } else {
- undef $h; #- help perl_checker
- my $name = $hd->{device}; $name =~ s!/!_!g;
- ($h, $file) = install_any::media_browser($in, 'save', "part_$name") or return;
- }
-
- eval { partition_table::save($hd, $file) };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
-}
-
-sub Rescuept {
- my ($in, $hd) = @_;
- my $_w = $in->wait_message('', N("Trying to rescue partition table"));
- fsedit::rescuept($hd);
-}
-
-sub Hd_info {
- my ($in, $hd) = @_;
- $in->ask_warn('', [ N("Detailed information"), format_hd_info($hd) ]);
-}
-
-################################################################################
-# per-part actions
-################################################################################
-
-sub part_possible_actions {
- my ($_in, $hd, $part, $all_hds) = @_;
- $part or return;
-
- my %actions = my @l = (
- N_("Mount point") => '$part->{real_mntpoint} || (!isBusy && !isSwap && !isNonMountable)',
- N_("Type") => '!isBusy && $::expert && (!readonly || $part->{pt_type} == 0x83)',
- N_("Options") => '$::expert',
- N_("Resize") => '!isBusy && !readonly && !isSpecial || isLVM($hd) && LVM_resizable',
- N_("Format") => '!isBusy && !readonly && ($::expert || $::isStandalone)',
- N_("Mount") => '!isBusy && (hasMntpoint || isSwap) && maybeFormatted && ($::expert || $::isStandalone)',
- N_("Add to RAID") => '!isBusy && isRawRAID && (!isSpecial || isRAID)',
- N_("Add to LVM") => '!isBusy && isRawLVM',
- N_("Unmount") => '!$part->{real_mntpoint} && isMounted',
- N_("Delete") => '!isBusy && !readonly',
- N_("Remove from RAID") => 'isPartOfRAID',
- N_("Remove from LVM") => 'isPartOfLVM',
- N_("Modify RAID") => 'canModifyRAID',
- N_("Use for loopback") => '!$part->{real_mntpoint} && isMountableRW && !isSpecial && hasMntpoint && $::expert',
- );
- my ($actions_names) = list2kv(@l);
- my $_all_hds = $all_hds; #- help perl_checker know the $all_hds *is* used in the macro below
- my %macros = (
- readonly => '$hd->{readonly}',
- hasMntpoint => '$part->{mntpoint}',
- isPrimary => 'isPrimary($part, $hd)',
- LVM_resizable => '$part->{fs_type} eq "reiserfs" || (isMounted ? $part->{fs_type} eq "xfs" : $part->{fs_type} eq "ext3")',
- canModifyRAID => 'isPartOfRAID($part) && !isMounted(fs::get::device2part($part->{raid}, $all_hds->{raids}))',
- );
- if (isEmpty($part)) {
- if_(!$hd->{readonly}, N_("Create"));
- } elsif ($part->{pt_type} == 0xbf) {
- #- XBox OS partitions, do not allow anything
- return;
- } else {
- grep {
- my $cond = $actions{$_};
- while (my ($k, $v) = each %macros) {
- $cond =~ s/$k/qq(($v))/e;
- }
- $cond =~ s/(^|[^:\$]) \b ([a-z]\w{3,}) \b ($|[\s&\)])/$1 . $2 . '($part)' . $3/exg;
- eval $cond;
- } @$actions_names;
- }
-}
-
-#- in case someone use diskdrake only to create partitions,
-#- ie without assigning a mount point,
-#- do not suggest mount points anymore
-my $do_suggest_mount_point = 1;
-
-sub Create {
- my ($in, $hd, $part, $all_hds) = @_;
- my ($def_start, $def_size, $max) = ($part->{start}, $part->{size}, $part->{start} + $part->{size});
-
- $part->{maxsize} = $part->{size}; $part->{size} = 0;
- if (fsedit::suggest_part($part, $all_hds)) {
- $part->{mntpoint} = '' if !$do_suggest_mount_point;
- } else {
- $part->{size} = $part->{maxsize};
- fs::type::suggest_fs_type($part, 'ext3');
- }
- if (isLVM($hd)) {
- lvm::suggest_lv_name($hd, $part);
- }
-
- #- update adjustment for start and size, take into account the minimum partition size
- #- including one less sector for start due to a capacity to increase the adjustement by
- #- one.
- my ($primaryOrExtended, $migrate_files);
- my $type_name = fs::type::part2type_name($part);
- my $mb_size = $part->{size} >> 11;
- my $has_startsector = ($::expert || arch() !~ /i.86/) && !isLVM($hd);
-
- $in->ask_from(N("Create a new partition"), '',
- [
- if_($has_startsector,
- { label => N("Start sector: "), val => \$part->{start}, min => $def_start, max => ($max - min_partition_size($hd)), type => 'range' },
- ),
- { label => N("Size in MB: "), val => \$mb_size, min => min_partition_size($hd) >> 11, max => $def_size >> 11, type => 'range' },
- { label => N("Filesystem type: "), val => \$type_name, list => [ fs::type::type_names() ], sort => 0 },
- { label => N("Mount point: "), val => \$part->{mntpoint}, list => [ fsedit::suggestions_mntpoint($all_hds), '' ],
- disabled => sub { my $p = fs::type::type_name2subpart($type_name); isSwap($p) || isNonMountable($p) }, type => 'combo', not_edit => 0,
- },
- if_($::expert && $hd->hasExtended,
- { label => N("Preference: "), val => \$primaryOrExtended, list => [ '', "Extended", "Primary", if_($::expert, "Extended_0x85") ] },
- ),
- if_($::expert && isLVM($hd),
- { label => N("Logical volume name "), val => \$part->{lv_name}, list => [ qw(root swap usr home var), '' ], sort => 0, not_edit => 0 },
- ),
- ], changed => sub {
- if ($part->{start} + ($mb_size << 11) > $max) {
- if ($_[0] == 0) {
- # Start sector changed => restricting Size
- $mb_size = ($max - $part->{start}) >> 11;
- } else {
- # Size changed => restricting Start sector
- $part->{start} = $max - ($mb_size << 11);
- }
- }
- }, complete => sub {
- $part->{size} = from_Mb($mb_size, min_partition_size($hd), $max - $part->{start}); #- need this to be able to get back the approximation of using MB
- put_in_hash($part, fs::type::type_name2subpart($type_name));
- $do_suggest_mount_point = 0 if !$part->{mntpoint};
- $part->{mntpoint} = '' if isNonMountable($part);
- $part->{mntpoint} = 'swap' if isSwap($part);
- fs::mount_options::set_default($part, ignore_is_removable => 1);
-
- check($in, $hd, $part, $all_hds) or return 1;
- $migrate_files = need_migration($in, $part->{mntpoint}) or return 1;
-
- my $seen;
- eval {
- catch_cdie { fsedit::add($hd, $part, $all_hds, { force => 1, primaryOrExtended => $primaryOrExtended }) }
- sub { $seen = 1; $in->ask_okcancel('', formatError($@)) };
- };
- if (my $err = $@) {
- if ($err =~ /raw_add/ && $hd->hasExtended && !$hd->{primary}{extended}) {
- $in->ask_warn(N("Error"), N("You can not create a new partition
-(since you reached the maximal number of primary partitions).
-First remove a primary partition and create an extended partition."));
- return 0;
- } else {
- $in->ask_warn(N("Error"), formatError($err)) if !$seen;
- return 1;
- }
- }
- 0;
- },
- ) or return;
-
- warn_if_renumbered($in, $hd);
-
- if ($migrate_files eq 'migrate') {
- format_($in, $hd, $part, $all_hds) or return;
- migrate_files($in, $hd, $part);
- fs::mount_part($part);
- }
-}
-
-sub Delete {
- my ($in, $hd, $part, $all_hds) = @_;
- if (isRAID($part)) {
- raid::delete($all_hds->{raids}, $part);
- } elsif (isLVM($hd)) {
- lvm::lv_delete($hd, $part);
- } elsif (isLoopback($part)) {
- my $f = "$part->{loopback_device}{mntpoint}$part->{loopback_file}";
- if (-e $f && $in->ask_yesorno('', N("Remove the loopback file?"))) {
- unlink $f;
- }
- my $l = $part->{loopback_device}{loopback};
- @$l = grep { $_ != $part } @$l;
- delete $part->{loopback_device}{loopback} if @$l == 0;
- fsedit::recompute_loopbacks($all_hds);
- } else {
- if (arch() =~ /ppc/) {
- undef $partition_table::mac::bootstrap_part if isAppleBootstrap($part) && ($part->{device} = $partition_table::mac::bootstrap_part);
- }
- partition_table::remove($hd, $part);
- warn_if_renumbered($in, $hd);
- }
-}
-
-sub Type {
- my ($in, $hd, $part) = @_;
-
- my $warn = sub { ask_alldatawillbelost($in, $part, N_("After changing type of partition %s, all data on this partition will be lost")) };
-
- #- for ext2, warn after choosing as ext2->ext3 can be achieved without loosing any data :)
- $part->{fs_type} eq 'ext2' or $warn->() or return;
-
- my @types = fs::type::type_names();
-
- #- when readonly, Type() is allowed only when changing {fs_type} but not {pt_type}
- #- eg: switching between ext2, ext3, reiserfs...
- @types = grep { fs::type::type_name2pt_type($_) == $part->{pt_type} } @types if $hd->{readonly};
-
- my $type_name = fs::type::part2type_name($part);
- $in->ask_from_({ title => N("Change partition type"),
- messages => N("Which filesystem do you want?"),
- focus_first => 1,
- },
- [ { label => N("Type"), val => \$type_name, list => \@types, sort => 0, not_edit => !$::expert } ]) or return;
-
- my $type = $type_name && fs::type::type_name2subpart($type_name);
-
- if (member($type->{fs_type}, 'ext2', 'ext3')) {
- my $_w = $in->wait_message('', N("Switching from ext2 to ext3"));
- if (run_program::run("tune2fs", "-j", devices::make($part->{device}))) {
- put_in_hash($part, $type);
- set_isFormatted($part, 1); #- assume that if tune2fs works, partition is formatted
-
- #- disable the fsck (do not do it together with -j in case -j fails?)
- fs::format::disable_forced_fsck($part->{device});
- return;
- }
- }
- #- either we switch to non-ext3 or switching losslessly to ext3 failed
- $part->{fs_type} ne 'ext2' or $warn->() or return;
-
- if (defined $type) {
- check_type($in, $type, $hd, $part) and fsedit::change_type($type, $hd, $part);
- }
-}
-
-sub Mount_point {
- my ($in, $hd, $part, $all_hds) = @_;
-
- my $migrate_files;
- my $mntpoint = $part->{mntpoint} || do {
- my $part_ = { %$part };
- if (fsedit::suggest_part($part_, $all_hds)) {
- fs::get::has_mntpoint('/', $all_hds) || $part_->{mntpoint} eq '/boot' ? $part_->{mntpoint} : '/';
- } else { '' }
- };
- $in->ask_from_({ messages =>
- isLoopback($part) ? N("Where do you want to mount the loopback file %s?", $part->{loopback_file}) :
- N("Where do you want to mount device %s?", $part->{device}),
- focus_first => 1,
- callbacks => {
- complete => sub {
- !isPartOfLoopback($part) || $mntpoint or $in->ask_warn('',
-N("Can not unset mount point as this partition is used for loop back.
-Remove the loopback first")), return 1;
- $part->{mntpoint} eq $mntpoint || check_mntpoint($in, $mntpoint, $part, $all_hds) or return 1;
- $migrate_files = need_migration($in, $mntpoint) or return 1;
- 0;
- } },
- },
- [ { label => N("Mount point"), val => \$mntpoint,
- list => [ uniq(if_($mntpoint, $mntpoint), fsedit::suggestions_mntpoint($all_hds), '') ],
- not_edit => 0 } ],
- ) or return;
- $part->{mntpoint} = $mntpoint;
-
- if ($migrate_files eq 'migrate') {
- format_($in, $hd, $part, $all_hds) or return;
- migrate_files($in, $hd, $part);
- fs::mount_part($part);
- }
-}
-sub Mount_point_raw_hd {
- my ($in, $part, $all_hds, @propositions) = @_;
-
- my $mntpoint = $part->{mntpoint} || shift @propositions;
- $in->ask_from(
- '',
- N("Where do you want to mount %s?", $part->{device}),
- [ { label => N("Mount point"), val => \$mntpoint,
- list => [ if_($mntpoint, $mntpoint), '', @propositions ],
- not_edit => 0 } ],
- complete => sub {
- $part->{mntpoint} eq $mntpoint || check_mntpoint($in, $mntpoint, $part, $all_hds) or return 1;
- 0;
- }
- ) or return;
- $part->{mntpoint} = $mntpoint;
-}
-
-sub Resize {
- my ($in, $hd, $part) = @_;
- my (%nice_resize, $block_count, $free_block, $block_size);
- my ($min, $max) = (min_partition_size($hd), partition_table::next_start($hd, $part) - $part->{start});
-
- if (maybeFormatted($part)) {
- # here we may have a non-formatted or a formatted partition
- # -> doing as if it was formatted
-
- if ($part->{fs_type} eq 'vfat') {
- write_partitions($in, $hd) or return;
- #- try to resize without losing data
- my $_w = $in->wait_message(N("Resizing"), N("Computing FAT filesystem bounds"));
-
- require resize_fat::main;
- $nice_resize{fat} = resize_fat::main->new($part->{device}, devices::make($part->{device}));
- $min = max($min, $nice_resize{fat}->min_size);
- $max = min($max, $nice_resize{fat}->max_size);
- } elsif (member($part->{fs_type}, 'ext2', 'ext3')) {
- write_partitions($in, $hd) or return;
- my $dev = devices::make($part->{device});
- my $r = run_program::get_stdout('dumpe2fs', $dev);
- $r =~ /Block count:\s*(\d+)/ and $block_count = $1;
- $r =~ /Free blocks:\s*(\d+)/ and $free_block = $1;
- $r =~ /Block size:\s*(\d+)/ and $block_size = $1;
- log::l("dumpe2fs $nice_resize{ext2} gives: Block_count=$block_count, Free_blocks=$free_block, Block_size=$block_size");
- if ($block_count && $free_block && $block_size) {
- $min = max($min, ($block_count - $free_block) * ($block_size / 512));
- $nice_resize{ext2} = $dev;
- }
- } elsif ($part->{fs_type} eq 'ntfs') {
- write_partitions($in, $hd) or return;
- require diskdrake::resize_ntfs;
- diskdrake::resize_ntfs::check_prog($in) or return;
- $nice_resize{ntfs} = diskdrake::resize_ntfs->new($part->{device}, devices::make($part->{device}));
- $min = $nice_resize{ntfs}->min_size or delete $nice_resize{ntfs};
- } elsif ($part->{fs_type} eq 'reiserfs') {
- write_partitions($in, $hd) or return;
- if ($part->{isMounted}) {
- $nice_resize{reiserfs} = 1;
- $min = $part->{size}; #- ensure the user can only increase
- } elsif (defined(my $free = fs::df($part))) {
- $nice_resize{reiserfs} = 1;
- $min = max($min, $part->{size} - $free);
- }
- } elsif ($part->{fs_type} eq 'xfs' && isLVM($hd) && $::isStandalone && $part->{isMounted}) {
- $min = $part->{size}; #- ensure the user can only increase
- $nice_resize{xfs} = 1;
- }
- #- make sure that even after normalizing the size to cylinder boundaries, the minimun will be saved,
- #- this save at least a cylinder (less than 8Mb).
- $min += partition_table::raw::cylinder_size($hd);
- $min >= $max and return $in->ask_warn('', N("This partition is not resizeable"));
-
- #- for these, we have tools to resize partition table
- #- without losing data (or at least we hope so :-)
- if (%nice_resize) {
- ask_alldatamaybelost($in, $part, N_("All data on this partition should be backed-up")) or return;
- } else {
- ask_alldatawillbelost($in, $part, N_("After resizing partition %s, all data on this partition will be lost")) or return;
- }
- }
-
- my $mb_size = $part->{size} >> 11;
- $in->ask_from(N("Resize"), N("Choose the new size"), [
- { label => N("New size in MB: "), val => \$mb_size, min => $min >> 11, max => $max >> 11, type => 'range' },
- ]) or return;
-
-
- my $size = from_Mb($mb_size, $min, $max);
- $part->{size} == $size and return;
-
- my $oldsize = $part->{size};
- $part->{size} = $size;
- $hd->adjustEnd($part);
-
- undef $@;
- my $_b = before_leaving { $@ and $part->{size} = $oldsize };
-
- my $adjust = sub {
- my ($write_partitions) = @_;
-
- if (isLVM($hd)) {
- lvm::lv_resize($part, $oldsize);
- } else {
- partition_table::will_tell_kernel($hd, resize => $part);
- partition_table::adjust_local_extended($hd, $part);
- partition_table::adjust_main_extended($hd);
- write_partitions($in, $hd) or return if $write_partitions && %nice_resize;
- }
- 1;
- };
-
- $adjust->(1) or return if $size > $oldsize;
-
- my $wait = $in->wait_message(N("Resizing"), '');
-
- if ($nice_resize{fat}) {
- local *log::l = sub { $wait->set(join(' ', @_)) };
- $nice_resize{fat}->resize($part->{size});
- } elsif ($nice_resize{ext2}) {
- my $s = int($part->{size} / ($block_size / 512));
- log::l("resize2fs $nice_resize{ext2} to size $s in block of $block_size bytes");
- run_program::run("resize2fs", "-pf", $nice_resize{ext2}, $s);
- } elsif ($nice_resize{ntfs}) {
- log::l("ntfs resize to $part->{size} sectors");
- $nice_resize{ntfs}->resize($part->{size});
- $wait = undef;
- $in->ask_warn('', N("To ensure data integrity after resizing the partition(s),
-filesystem checks will be run on your next boot into Windows(TM)"));
- } elsif ($nice_resize{reiserfs}) {
- log::l("reiser resize to $part->{size} sectors");
- run_program::run('resize_reiserfs', '-f', '-q', '-s' . int($part->{size}/2) . 'K', devices::make($part->{device}));
- } elsif ($nice_resize{xfs}) {
- #- happens only with mounted LVM, see above
- run_program::run("xfs_growfs", $part->{mntpoint});
- }
-
- if (%nice_resize) {
- set_isFormatted($part, 1);
- } else {
- set_isFormatted($part, 0);
- partition_table::verifyParts($hd);
- $part->{mntpoint} = '' if isNonMountable($part); #- mainly for ntfs, which we can not format
- }
-
- $adjust->(0) if $size < $oldsize;
-}
-sub Format {
- my ($in, $hd, $part, $all_hds) = @_;
- format_($in, $hd, $part, $all_hds);
-}
-sub Mount {
- my ($in, $hd, $part) = @_;
- write_partitions($in, $hd) or return;
- my $w;
- fs::mount_part($part, $::prefix, 0, sub {
- my ($msg) = @_;
- $w ||= $in->wait_message('', $msg);
- $w->set($msg);
- });
-}
-sub Add2RAID {
- my ($in, $_hd, $part, $all_hds) = @_;
- my $raids = $all_hds->{raids};
-
- my $md_part = $in->ask_from_listf('', N("Choose an existing RAID to add to"),
- sub { ref($_[0]) ? $_[0]{device} : $_[0] },
- [ @$raids, N_("new") ]) or return;
-
- if (ref($md_part)) {
- raid::add($md_part, $part);
- } else {
- raid::check_prog($in) or return;
- my $md_part = raid::new($raids, disks => [ $part ]);
- modifyRAID($in, $raids, $md_part) or return raid::delete($raids, $md_part);
- }
-}
-sub Add2LVM {
- my ($in, $hd, $part, $all_hds) = @_;
- my $lvms = $all_hds->{lvms};
- write_partitions($in, $_) or return foreach isRAID($part) ? @{$all_hds->{hds}} : $hd;
-
- my $lvm = $in->ask_from_listf_('', N("Choose an existing LVM to add to"),
- sub { ref($_[0]) ? $_[0]{VG_name} : $_[0] },
- [ @$lvms, N_("new") ]) or return;
- require lvm;
- if (!ref $lvm) {
- # create new lvm
- my $name = $in->ask_from_entry('', N("LVM name?")) or return;
- $lvm = new lvm($name);
- push @$lvms, $lvm;
- }
- raid::make($all_hds->{raids}, $part) if isRAID($part);
- $part->{lvm} = $lvm->{VG_name};
- push @{$lvm->{disks}}, $part;
- delete $part->{mntpoint};
-
- lvm::check($in) if $::isStandalone;
- lvm::vg_add($part);
- lvm::update_size($lvm);
-}
-sub Unmount {
- my ($_in, $_hd, $part) = @_;
- fs::umount_part($part);
-}
-sub RemoveFromRAID {
- my ($_in, $_hd, $part, $all_hds) = @_;
- raid::removeDisk($all_hds->{raids}, $part);
-}
-sub RemoveFromLVM {
- my ($_in, $_hd, $part, $all_hds) = @_;
- isPartOfLVM($part) or die;
- my ($lvm, $other_lvms) = partition { $_->{VG_name} eq $part->{lvm} } @{$all_hds->{lvms}};
- lvm::vg_destroy($lvm->[0]);
- $all_hds->{lvms} = $other_lvms;
-}
-sub ModifyRAID {
- my ($in, $_hd, $part, $all_hds) = @_;
- modifyRAID($in, $all_hds->{raids}, fs::get::device2part($part->{raid}, $all_hds->{raids}));
-}
-sub Loopback {
- my ($in, $hd, $real_part, $all_hds) = @_;
-
- write_partitions($in, $hd) or return;
-
- my $handle = any::inspect($real_part) or $in->ask_warn('', N("This partition can not be used for loopback")), return;
-
- my ($min, $max) = (1, loopback::getFree($handle->{dir}, $real_part));
- $max = min($max, 1 << (31 - 9)) if $real_part->{fs_type} eq 'vfat'; #- FAT does not handle file size bigger than 2GB
- my $part = { maxsize => $max, size => 0, loopback_device => $real_part, notFormatted => 1 };
- if (!fsedit::suggest_part($part, $all_hds)) {
- $part->{size} = $part->{maxsize};
- fs::type::suggest_fs_type($part, 'ext3');
- }
- delete $part->{mntpoint}; # we do not want the suggested mntpoint
-
- my $type_name = fs::type::part2type_name($part);
- my $mb_size = $part->{size} >> 11;
- $in->ask_from(N("Loopback"), '', [
- { label => N("Loopback file name: "), val => \$part->{loopback_file} },
- { label => N("Size in MB: "), val => \$mb_size, min => $min >> 11, max => $max >> 11, type => 'range' },
- { label => N("Filesystem type: "), val => \$type_name, list => [ fs::type::type_names() ], not_edit => !$::expert, sort => 0 },
- ],
- complete => sub {
- $part->{loopback_file} or $in->ask_warn('', N("Give a file name")), return 1, 0;
- $part->{loopback_file} =~ s|^([^/])|/$1|;
- if (my $size = loopback::verifFile($handle->{dir}, $part->{loopback_file}, $real_part)) {
- $size == -1 and $in->ask_warn('', N("File is already used by another loopback, choose another one")), return 1, 0;
- $in->ask_yesorno('', N("File already exists. Use it?")) or return 1, 0;
- delete $part->{notFormatted};
- $part->{size} = divide($size, 512);
- } else {
- $part->{size} = from_Mb($mb_size, $min, $max);
- }
- 0;
- }) or return;
- put_in_hash($part, fs::type::type_name2subpart($type_name));
- push @{$real_part->{loopback}}, $part;
- fsedit::recompute_loopbacks($all_hds);
-}
-
-sub Options {
- my ($in, $hd, $part, $all_hds) = @_;
-
- my @simple_options = qw(user noauto supermount username= password=);
-
- my (undef, $user_implies) = fs::mount_options::list();
- my ($options, $unknown) = fs::mount_options::unpack($part);
- my %help = fs::mount_options::help();
-
- my $prev_user = $options->{user};
- $in->ask_from(N("Mount options"),
- '',
- [
- (map {
- { label => $_, text => scalar warp_text(formatAlaTeX($help{$_})), val => \$options->{$_}, hidden => scalar(/password/),
- advanced => !$part->{rootDevice} && !member($_, @simple_options), if_(!/=$/, type => 'bool') };
- } keys %$options),
- { label => N("Various"), val => \$unknown, advanced => 1 },
- ],
- changed => sub {
- if ($prev_user != $options->{user}) {
- $prev_user = $options->{user};
- $options->{$_} = $options->{user} foreach @$user_implies;
- }
- if ($options->{encrypted}) {
- # modify $part->{options} for the check
- local $part->{options};
- fs::mount_options::pack($part, $options, $unknown);
- if (!check($in, $hd, $part, $all_hds)) {
- $options->{encrypted} = 0;
- } elsif (!$part->{encrypt_key} && !isSwap($part)) {
- if (my ($encrypt_key, $encrypt_algo) = choose_encrypt_key($in, $options)) {
- $options->{'encryption='} = $encrypt_algo;
- $part->{encrypt_key} = $encrypt_key;
- } else {
- $options->{encrypted} = 0;
- }
- }
- } else {
- delete $options->{'encryption='};
- delete $part->{encrypt_key};
- }
- },
- ) or return;
-
- fs::mount_options::pack($part, $options, $unknown);
- 1;
-}
-
-
-{
- no strict;
- *{'Toggle to normal mode'} = sub() { $::expert = 0 };
- *{'Toggle to expert mode'} = sub() { $::expert = 1 };
- *{'Clear all'} = \&Clear_all;
- *{'Auto allocate'} = \&Auto_allocate;
- *{'Mount point'} = \&Mount_point;
- *{'Modify RAID'} = \&ModifyRAID;
- *{'Add to RAID'} = \&Add2RAID;
- *{'Remove from RAID'} = \&RemoveFromRAID;
- *{'Add to LVM'} = \&Add2LVM;
- *{'Remove from LVM'} = \&RemoveFromLVM;
- *{'Use for loopback'} = \&Loopback;
- *{'Hard drive information'} = \&Hd_info;
-}
-
-
-################################################################################
-# helpers
-################################################################################
-
-sub is_part_existing {
- my ($part, $all_hds) = @_;
- $part && any { fsedit::are_same_partitions($part, $_) } fs::get::fstab_and_holes($all_hds);
-}
-
-sub modifyRAID {
- my ($in, $raids, $md_part) = @_;
- my $new_device = $md_part->{device};
- $in->ask_from('', '',
- [
-{ label => N("device"), val => \$new_device, list => [ $md_part->{device}, raid::free_mds($raids) ], sort => 0 },
-{ label => N("level"), val => \$md_part->{level}, list => [ qw(0 1 4 5 linear) ] },
-{ label => N("chunk size in KiB"), val => \$md_part->{'chunk-size'} },
- ],
- ) or return;
- raid::change_device($md_part, $new_device);
- raid::updateSize($md_part); # changing the raid level changes the size available
- 1;
-}
-
-
-sub ask_alldatamaybelost {
- my ($in, $part, $msg) = @_;
-
- maybeFormatted($part) or return 1;
-
- #- here we may have a non-formatted or a formatted partition
- #- -> doing as if it was formatted
- $in->ask_okcancel(N("Read carefully!"),
- [ N("Be careful: this operation is dangerous."), sprintf(translate($msg), $part->{device}) ], 1);
-}
-sub ask_alldatawillbelost {
- my ($in, $part, $msg) = @_;
-
- maybeFormatted($part) or return 1;
-
- #- here we may have a non-formatted or a formatted partition
- #- -> doing as if it was formatted
- $in->ask_okcancel(N("Read carefully!"), sprintf(translate($msg), $part->{device}), 1);
-}
-
-sub partitions_suggestions {
- my ($in) = @_;
- my $t = $::expert ?
- $in->ask_from_list_('', N("What type of partitioning?"), [ keys %fsedit::suggestions ]) :
- 'simple';
- $fsedit::suggestions{$t};
-}
-
-sub check_type {
- my ($in, $type, $hd, $part) = @_;
- eval { fs::type::check($type->{fs_type}, $hd, $part) };
- if (my $err = $@) {
- $in->ask_warn('', formatError($err));
- return;
- }
- if ($::isStandalone && $type->{fs_type}) {
- fs::format::check_package_is_installed($in->do_pkgs, $type->{fs_type}) or return;
- }
- 1;
-}
-sub check_mntpoint {
- my ($in, $mntpoint, $part, $all_hds) = @_;
- my $seen;
- eval {
- catch_cdie { fsedit::check_mntpoint($mntpoint, $part, $all_hds) }
- sub { $seen = 1; $in->ask_okcancel('', formatError($@)) };
- };
- if (my $err = $@) {
- $in->ask_warn('', formatError($err)) if !$seen;
- return;
- }
- 1;
-}
-sub check {
- my ($in, $hd, $part, $all_hds) = @_;
- check_type($in, $part, $hd, $part) &&
- check_mntpoint($in, $part->{mntpoint}, $part, $all_hds);
-}
-
-sub check_rebootNeeded {
- my ($_in, $hd) = @_;
- $hd->{rebootNeeded} and die N("You'll need to reboot before the modification can take place");
-}
-
-sub write_partitions {
- my ($in, $hd, $b_skip_check_rebootNeeded) = @_;
- check_rebootNeeded($in, $hd) if !$b_skip_check_rebootNeeded;
- $hd->{isDirty} or return 1;
- isLVM($hd) and return 1;
-
- $in->ask_okcancel(N("Read carefully!"), N("Partition table of drive %s is going to be written to disk!", $hd->{device}), 1) or return;
- partition_table::write($hd) if !$::testing;
- check_rebootNeeded($in, $hd) if !$b_skip_check_rebootNeeded;
- 1;
-}
-
-sub unmount {
- my ($_hd, $part) = @_;
- fs::umount_part($part);
-}
-sub format_ {
- my ($in, $hd, $part, $all_hds) = @_;
- write_partitions($in, $_) or return foreach isRAID($part) ? @{$all_hds->{hds}} : $hd;
- ask_alldatawillbelost($in, $part, N_("After formatting partition %s, all data on this partition will be lost")) or return;
- if ($::isStandalone) {
- fs::format::check_package_is_installed($in->do_pkgs, $part->{fs_type}) or return;
- }
- $part->{isFormatted} = 0; #- force format;
- my ($_w, $wait_message) = fs::format::wait_message($in);
- fs::format::part($all_hds->{raids}, $part, $::prefix, $wait_message);
- 1;
-}
-
-sub need_migration {
- my ($in, $mntpoint) = @_;
-
- my @l = grep { $_ ne "lost+found" } all($mntpoint);
- if (@l && $::isStandalone) {
- my $choice;
- my @choices = (N_("Move files to the new partition"), N_("Hide files"));
- $in->ask_from('', N("Directory %s already contains data\n(%s)", $mntpoint, formatList(5, @l)),
- [ { val => \$choice, list => \@choices, type => 'list' } ]) or return;
- $choice eq $choices[0] ? 'migrate' : 'hide';
- } else {
- 'hide';
- }
-}
-
-sub migrate_files {
- my ($in, $_hd, $part) = @_;
-
- my $wait = $in->wait_message('', N("Moving files to the new partition"));
- my $handle = any::inspect($part, '', 'rw');
- my @l = glob_("$part->{mntpoint}/*");
- foreach (@l) {
- $wait->set(N("Copying %s", $_));
- system("cp", "-a", $_, $handle->{dir}) == 0 or die "copying failed";
- }
- foreach (@l) {
- $wait->set(N("Removing %s", $_));
- system("rm", "-rf", $_) == 0 or die "removing files failed";
- }
-}
-
-sub warn_if_renumbered {
- my ($in, $hd) = @_;
- my $l = delete $hd->{partitionsRenumbered};
- return if is_empty_array_ref($l);
-
- push @{$hd->{allPartitionsRenumbered}}, @$l;
-
- my @l = map {
- my ($old, $new) = @$_;
- N("partition %s is now known as %s", $old, $new) } @$l;
- $in->ask_warn('', join("\n", N("Partitions have been renumbered: "), @l));
-}
-
-#- unit of $mb is mega bytes, min and max are in sectors, this
-#- function is used to convert back to sectors count the size of
-#- a partition ($mb) given from the interface (on Resize or Create).
-#- modified to take into account a true bounding with min and max.
-sub from_Mb {
- my ($mb, $min, $max) = @_;
- $mb <= $min >> 11 and return $min;
- $mb >= $max >> 11 and return $max;
- $mb * 2048;
-}
-
-sub format_part_info {
- my ($hd, $part) = @_;
-
- my $info = '';
-
- $info .= N("Mount point: ") . "$part->{mntpoint}\n" if $part->{mntpoint};
- $info .= N("Device: ") . "$part->{device}\n" if $part->{device} && !isLoopback($part);
- $info .= N("Devfs name: ") . "$part->{devfs_device}\n" if $part->{devfs_device} && $::expert;
- $info .= N("Volume label: ") . "$part->{device_LABEL}\n" if $part->{device_LABEL} && $::expert;
- $info .= N("DOS drive letter: %s (just a guess)\n", $part->{device_windobe}) if $part->{device_windobe};
- if (arch() eq "ppc") {
- my $pType = $part->{pType};
- $pType =~ s/[^A-Za-z0-9_]//g;
- $info .= N("Type: ") . $pType . ($::expert ? sprintf " (0x%x)", $part->{pt_type} : '') . "\n";
- if (defined $part->{pName}) {
- my $pName = $part->{pName};
- $pName =~ s/[^A-Za-z0-9_]//g;
- $info .= N("Name: ") . $pName . "\n";
- }
- } elsif (isEmpty($part)) {
- $info .= N("Empty") . "\n";
- } else {
- $info .= N("Type: ") . (fs::type::part2type_name($part) || $part->{fs_type}) . ($::expert ? sprintf " (0x%x)", $part->{pt_type} : '') . "\n";
- }
- $info .= N("Start: sector %s\n", $part->{start}) if $::expert && !isSpecial($part) && !isLVM($hd);
- $info .= N("Size: %s", formatXiB($part->{size}, 512));
- $info .= sprintf " (%s%%)", int 100 * $part->{size} / $hd->{totalsectors} if $hd->{totalsectors};
- $info .= N(", %s sectors", $part->{size}) if $::expert;
- $info .= "\n";
- $info .= N("Cylinder %d to %d\n", $part->{start} / $hd->cylinder_size, ($part->{start} + $part->{size} - 1) / $hd->cylinder_size) if ($::expert || isEmpty($part)) && !isSpecial($part) && !isLVM($hd);
- $info .= N("Number of logical extents: %d\n", $part->{size} / $hd->cylinder_size) if $::expert && isLVM($hd);
- $info .= N("Formatted\n") if $part->{isFormatted};
- $info .= N("Not formatted\n") if !$part->{isFormatted} && $part->{notFormatted};
- $info .= N("Mounted\n") if $part->{isMounted};
- $info .= N("RAID %s\n", $part->{raid}) if isPartOfRAID($part);
- $info .= sprintf "LVM %s\n", $part->{lvm} if isPartOfLVM($part);
- $info .= N("Loopback file(s):\n %s\n", join(", ", map { $_->{loopback_file} } @{$part->{loopback}})) if isPartOfLoopback($part);
- $info .= N("Partition booted by default\n (for MS-DOS boot, not for lilo)\n") if $part->{active} && $::expert;
- if (isRAID($part)) {
- $info .= N("Level %s\n", $part->{level});
- $info .= N("Chunk size %d KiB\n", $part->{'chunk-size'});
- $info .= N("RAID-disks %s\n", join ", ", map { $_->{device} } @{$part->{disks}});
- } elsif (isLoopback($part)) {
- $info .= N("Loopback file name: %s", $part->{loopback_file});
- }
- if (isApple($part)) {
- $info .= N("\nChances are, this partition is\na Driver partition. You should\nprobably leave it alone.\n");
- }
- if (isAppleBootstrap($part)) {
- $info .= N("\nThis special Bootstrap\npartition is for\ndual-booting your system.\n");
- }
- # restrict the length of the lines
- $info =~ s/(.{60}).*/$1.../mg;
- $info;
-}
-
-sub format_part_info_short {
- my ($hd, $part) = @_;
- isEmpty($part) ? format_part_info($hd, $part) : partition_table::description($part);
-}
-
-sub format_hd_info {
- my ($hd) = @_;
-
- my $info = '';
- $info .= N("Device: ") . "$hd->{device}\n";
- $info .= N("Read-only") . "\n" if $hd->{readonly};
- $info .= N("Size: %s\n", formatXiB($hd->{totalsectors}, 512)) if $hd->{totalsectors};
- $info .= N("Geometry: %s cylinders, %s heads, %s sectors\n", $hd->{geom}{cylinders}, $hd->{geom}{heads}, $hd->{geom}{sectors}) if $::expert && $hd->{geom};
- $info .= N("Info: ") . ($hd->{info} || $hd->{media_type}) . "\n" if $::expert && ($hd->{info} || $hd->{media_type});
- $info .= N("LVM-disks %s\n", join ", ", map { $_->{device} } @{$hd->{disks}}) if isLVM($hd) && $hd->{disks};
- $info .= N("Partition table type: %s\n", $1) if $::expert && ref($hd) =~ /_([^_]+)$/;
- $info .= N("on channel %d id %d\n", $hd->{channel}, $hd->{id}) if $::expert && exists $hd->{channel};
- $info;
-}
-
-sub format_raw_hd_info {
- my ($raw_hd) = @_;
-
- my $info = '';
- $info .= N("Mount point: ") . "$raw_hd->{mntpoint}\n" if $raw_hd->{mntpoint};
- $info .= format_hd_info($raw_hd);
- if (!isEmpty($raw_hd)) {
- $info .= N("Type: ") . (fs::type::part2type_name($raw_hd) || $raw_hd->{fs_type}) . "\n";
- }
- if (my $s = $raw_hd->{options}) {
- $s =~ s/password=([^\s,]*)/'password=' . ('x' x length($1))/e;
- $info .= N("Options: %s", $s);
- }
- $info;
-}
-
-#- get the minimal size of partition in sectors to help diskdrake on
-#- limit cases, include a cylinder + start of a eventually following
-#- logical partition.
-sub min_partition_size { $_[0]->cylinder_size + 2*$_[0]{geom}{sectors} }
-
-
-sub choose_encrypt_key {
- my ($in, $options) = @_;
-
- my ($encrypt_key, $encrypt_key2);
- my @algorithms = map { "AES$_" } 128, 196, 256, 512, 1024, 2048;
- my $encrypt_algo = $options->{'encryption='} || "AES128";
-
- $in->ask_from_(
- {
- title => N("Filesystem encryption key"),
- messages => N("Choose your filesystem encryption key"),
- callbacks => {
- complete => sub {
- length $encrypt_key < 6 and $in->ask_warn('', N("This encryption key is too simple (must be at least %d characters long)", 6)), return 1,0;
- $encrypt_key eq $encrypt_key2 or $in->ask_warn('', [ N("The encryption keys do not match"), N("Please try again") ]), return 1,1;
- return 0;
- } } }, [
-{ label => N("Encryption key"), val => \$encrypt_key, hidden => 1 },
-{ label => N("Encryption key (again)"), val => \$encrypt_key2, hidden => 1 },
-{ label => N("Encryption algorithm"), type => 'list', val => \$encrypt_algo, list => \@algorithms }
- ]) && ($encrypt_key, $encrypt_algo);
-}
-
-
-sub tell_wm_and_reboot() {
- my ($wm, $pid) = any::running_window_manager();
-
- if (!$wm) {
- system('reboot');
- } else {
- any::ask_window_manager_to_logout_then_do($wm, $pid, 'reboot');
- }
-}
-
-sub update_bootloader_for_renumbered_partitions {
- my ($in, $all_hds) = @_;
- my @renumbering = map { @{$_->{allPartitionsRenumbered} || []} } @{$all_hds->{hds}} or return;
-
- require bootloader;
- bootloader::update_for_renumbered_partitions($in, \@renumbering, $all_hds);
-}
diff --git a/perl-install/diskdrake/removable.pm b/perl-install/diskdrake/removable.pm
deleted file mode 100644
index 14eb26772..000000000
--- a/perl-install/diskdrake/removable.pm
+++ /dev/null
@@ -1,52 +0,0 @@
-package diskdrake::removable; # $Id$
-
-use diagnostics;
-use strict;
-use diskdrake::interactive;
-use common;
-use fs;
-
-sub main {
- my ($in, $all_hds, $raw_hd) = @_;
- my %actions = my @actions = actions();
- my $action;
- while ($action ne 'Done') {
- $action = $in->ask_from_list_('',
- diskdrake::interactive::format_raw_hd_info($raw_hd),
- [ map { $_->[0] } group_by2 @actions ], 'Done') or return;
- $actions{$action}->($in, $raw_hd, $all_hds);
- }
-}
-
-sub actions() {
- (
- N_("Mount point") => \&mount_point,
- N_("Options") => \&options,
- N_("Type") => \&type,
- N_("Done") => \&done,
- );
-}
-
-sub done {
- my ($in, $_raw_hd, $all_hds) = @_;
- diskdrake::interactive::Done($in, $all_hds);
-}
-sub options {
- my ($in, $raw_hd, $all_hds) = @_;
- diskdrake::interactive::Options($in, {}, $raw_hd, $all_hds);
-}
-sub mount_point {
- my ($in, $raw_hd, $all_hds) = @_;
- diskdrake::interactive::Mount_point_raw_hd($in, $raw_hd, $all_hds, "/mnt/$raw_hd->{device}");
-}
-sub type {
- my ($in, $raw_hd) = @_;
- my @fs = ('auto', fs::auto_fs());
- my $fs_type = $raw_hd->{fs_type};
- $in->ask_from(N("Change type"),
- N("Which filesystem do you want?"),
- [ { label => N("Type"), val => \$fs_type, list => [@fs], not_edit => !$::expert } ]) or return;
- $raw_hd->{fs_type} = $fs_type;
-}
-
-1;
diff --git a/perl-install/diskdrake/resize_ntfs.pm b/perl-install/diskdrake/resize_ntfs.pm
deleted file mode 100644
index 5af20f273..000000000
--- a/perl-install/diskdrake/resize_ntfs.pm
+++ /dev/null
@@ -1,35 +0,0 @@
-package diskdrake::resize_ntfs;
-
-use diagnostics;
-use strict;
-
-use run_program;
-use common;
-
-
-sub new {
- my ($type, $_device, $dev) = @_;
- bless { dev => $dev }, $type;
-}
-
-sub check_prog {
- my ($in) = @_;
- $::isInstall || $in->do_pkgs->ensure_binary_is_installed('ntfsprogs', 'ntfsresize');
-}
-
-sub min_size {
- my ($o) = @_;
- my $r;
- run_program::run('ntfsresize', '>', \$r, '-f', '-i', $o->{dev}) or die "ntfsresize failed:\n$r\n";
- $r =~ /minimal size: (\d+) KiB/ && $1 * 2;
-}
-
-sub resize {
- my ($o, $size) = @_;
- my @l = ('-ff', '-s' . int($size / 2) . 'ki', $o->{dev});
- my $r;
- run_program::run('ntfsresize', '>', \$r, '-n', @l) or die "ntfsresize failed: $r\n";
- run_program::run('ntfsresize', '>', \$r, @l) or die "ntfsresize failed: $r\n";
-}
-
-1;
diff --git a/perl-install/diskdrake/smbnfs_gtk.pm b/perl-install/diskdrake/smbnfs_gtk.pm
deleted file mode 100644
index 69c9517a6..000000000
--- a/perl-install/diskdrake/smbnfs_gtk.pm
+++ /dev/null
@@ -1,270 +0,0 @@
-package diskdrake::smbnfs_gtk; # $Id$
-
-use diagnostics;
-use strict;
-
-use any;
-use fs::get;
-use diskdrake::interactive;
-use common;
-use interactive;
-use network::smb;
-use network::nfs;
-use ugtk2 qw(:helpers :wrappers :create);
-
-my ($all_hds, $in, $tree_model, $current_entry, $current_leaf, %icons);
-
-sub main {
- ($in, $all_hds, my $type) = @_;
- my ($kind) = $type eq 'smb' ? smb2kind() : nfs2kind();
- $kind->check($in) or return;
-
- my $w = ugtk2->new('DiskDrake');
-
- add_smbnfs($w->{window}, $kind);
- $w->{rwindow}->set_default_size(400, 300) if $w->{rwindow}->can('set_default_size');
- $w->{window}->show_all;
- $w->main;
-}
-
-################################################################################
-# nfs/smb: helpers
-################################################################################
-sub try {
- my ($kind, $name, @args) = @_;
- my $f = $diskdrake::interactive::{$name} or die "unknown function $name";
- try_($kind, $name, \&$f, @args);
-}
-sub try_ {
- my ($kind, $name, $f, @args) = @_;
- eval { $f->($in, @args, $all_hds) };
- if (my $err = $@) {
- $in->ask_warn(N("Error"), formatError($err));
- }
- update($kind);
- Gtk2->main_quit if member($name, 'Cancel', 'Done');
-}
-
-sub raw_hd_options {
- my ($in, $raw_hd) = @_;
- diskdrake::interactive::Options($in, {}, $raw_hd, fs::get::empty_all_hds());
-}
-sub raw_hd_mount_point {
- my ($in, $raw_hd) = @_;
- my ($default) = $raw_hd->{device} =~ m|([^/]+)$|;
- $default =~ s/\s+/-/g;
- diskdrake::interactive::Mount_point_raw_hd($in, $raw_hd, $all_hds, "/mnt/$default");
-}
-
-sub per_entry_info_box {
- my ($box, $kind, $entry) = @_;
- my $info = $entry ? diskdrake::interactive::format_raw_hd_info($entry) : '';
- $kind->{per_entry_info_box}->destroy if $kind->{per_entry_info_box};
- gtkpack($box, $kind->{per_entry_info_box} = gtkadd(Gtk2::Frame->new(N("Details")), gtkset_justify(Gtk2::Label->new($info), 'left')));
-}
-
-sub per_entry_action_box {
- my ($box, $kind, $entry) = @_;
- $_->destroy foreach $box->get_children;
-
- my @buttons;
-
- push @buttons, map {
- my $s = $_;
- gtksignal_connect(Gtk2::Button->new(translate($s)), clicked => sub { try($kind, $s, {}, $entry) });
- } (if_($entry->{isMounted}, N_("Unmount")),
- if_($entry->{mntpoint} && !$entry->{isMounted}, N_("Mount"))) if $entry;
-
- my @l = (
- if_($entry, N_("Mount point") => \&raw_hd_mount_point),
- if_($entry && $entry->{mntpoint}, N_("Options") => \&raw_hd_options),
- N_("Cancel") => sub {},
- N_("Done") => \&done,
- );
- push @buttons, map {
- my ($txt, $f) = @$_;
- $f ? gtksignal_connect(Gtk2::Button->new(translate($txt)), clicked => sub { try_($kind, $txt, $f, $entry) })
- : Gtk2::Label->new("");
- } group_by2(@l);
-
- gtkadd($box, gtkpack(Gtk2::HBox->new(0,0), @buttons));
-}
-
-sub done {
- my ($in) = @_;
- diskdrake::interactive::Done($in, $all_hds);
-}
-
-sub export_icon {
- my ($entry) = @_;
- $entry ||= {};
- $icons{$entry->{isMounted} ? 'mounted' : $entry->{mntpoint} ? 'has_mntpoint' : 'default'};
-}
-
-sub update {
- my ($kind) = @_;
- per_entry_action_box($kind->{action_box}, $kind, $current_entry);
- per_entry_info_box($kind->{info_box}, $kind, $current_entry);
- $tree_model->set($current_leaf, 0 => export_icon($current_entry)) if $current_entry;
-}
-
-sub find_fstab_entry {
- my ($kind, $e, $b_add_or_not) = @_;
-
- my $fs_entry = $kind->to_fstab_entry($e);
-
- if (my $fs_entry_ = find { $fs_entry->{device} eq $_->{device} } @{$kind->{val}}) {
- $fs_entry_;
- } elsif ($b_add_or_not) {
- push @{$kind->{val}}, $fs_entry;
- $fs_entry;
- } else {
- undef;
- }
-}
-
-sub import_tree {
- my ($kind, $info_box) = @_;
- my (%servers_displayed, %wservers, %wexports);
-
- $tree_model = Gtk2::TreeStore->new("Gtk2::Gdk::Pixbuf", "Glib::String");
- my $tree = Gtk2::TreeView->new_with_model($tree_model);
- $tree->get_selection->set_mode('browse');
-
- my $col = Gtk2::TreeViewColumn->new;
- $col->pack_start(my $pixrender = Gtk2::CellRendererPixbuf->new, 0);
- $col->add_attribute($pixrender, 'pixbuf', 0);
- $col->pack_start(my $texrender = Gtk2::CellRendererText->new, 1);
- $col->add_attribute($texrender, 'text', 1);
- $tree->append_column($col);
-
- $tree->set_headers_visible(0);
-
- foreach ('default', 'server', 'has_mntpoint', 'mounted') {
- $icons{$_} = gtkcreate_pixbuf("smbnfs_$_");
- }
-
- my $add_server = sub {
- my ($server) = @_;
- my $name = $server->{name} || $server->{ip};
- $servers_displayed{$name} ||= do {
- my $w = $tree_model->append_set(undef, [ 0 => $icons{server}, 1 => $name ]);
- $wservers{$tree_model->get_path_str($w)} = $server;
- $w;
- };
- };
-
- my $find_exports; $find_exports = sub {
- my ($server) = @_;
- my @l = eval { $kind->find_exports($server) };
- return @l if !$@;
-
- if ($server->{username}) {
- $in->ask_warn('', N("Can not login using username %s (bad password?)", $server->{username}));
- network::smb::remove_bad_credentials($server);
- } else {
- if (my @l = network::smb::authentications_available($server)) {
- my $user = $in->ask_from_list_(N("Domain Authentication Required"),
- N("Which username"), [ @l, N_("Another one") ]) or return;
- if ($user ne 'Another one') {
- network::smb::read_credentials($server, $user);
- goto $find_exports;
- }
- }
- }
-
- if ($in->ask_from(N("Domain Authentication Required"),
- N("Please enter your username, password and domain name to access this host."),
- [
- { label => N("Username"), val => \$server->{username} },
- { label => N("Password"), val => \$server->{password}, hidden => 1 },
- { label => N("Domain"), val => \$server->{domain} },
- ])) {
- goto $find_exports;
- } else {
- delete $server->{username};
- ();
- }
- };
-
- my $add_exports = sub {
- my ($node) = @_;
-
- my $path = $tree_model->get_path($node);
- $tree->expand_row($path, 0);
-
- foreach ($find_exports->($wservers{$tree_model->get_path_str($node)} || return)) { #- can not die here since insert_node provoque a tree_select_row before the %wservers is filled
- my $s = $kind->to_string($_);
- my $w = $tree_model->append_set($node, [ 0 => export_icon(find_fstab_entry($kind, $_)),
- 1 => $s ]);
- $wexports{$tree_model->get_path_str($w)} = $_;
- }
- };
-
- {
- my $search = Gtk2::Button->new(N("Search servers"));
- gtkpack__($info_box,
- gtksignal_connect($search,
- clicked => sub {
- $add_server->($_) foreach sort { $a->{name} cmp $b->{name} } $kind->find_servers;
- $search->set_label(N("Search new servers"));
- }));
- }
-
- foreach (uniq(map { ($kind->from_dev($_->{device}))[0] } @{$kind->{val}})) {
- my $node = $add_server->({ name => $_ });
- $add_exports->($node);
- }
-
- $tree->get_selection->signal_connect(changed => sub {
- my ($_model, $curr) = $_[0]->get_selected;
- $curr or return;
-
- if ($tree_model->iter_parent($curr)) {
- $current_leaf = $curr;
- $current_entry = find_fstab_entry($kind, $wexports{$tree_model->get_path_str($curr)} || die(''), 'add');
- } else {
- if (!$tree_model->iter_has_child($curr)) {
- gtkset_mousecursor_wait($tree->window);
- ugtk2::flush();
- $add_exports->($curr);
- gtkset_mousecursor_normal($tree->window);
- }
- $current_entry = undef;
- }
- update($kind);
- });
- $tree;
-}
-
-sub add_smbnfs {
- my ($widget, $kind) = @_;
- die if $kind->{main_box};
-
- $kind->{info_box} = Gtk2::VBox->new(0,0);
- $kind->{display_box} = create_scrolled_window(import_tree($kind, $kind->{info_box}));
- $kind->{action_box} = Gtk2::HBox->new(0,0);
- $kind->{main_box} =
- gtkpack_(Gtk2::VBox->new(0,7),
- 1, gtkpack(Gtk2::HBox->new(0,7),
- gtkset_size_request($kind->{display_box}, 200, 0),
- $kind->{info_box}),
- 0, $kind->{action_box},
- );
-
- $widget->add($kind->{main_box});
- $current_entry = undef;
- update($kind);
- $kind;
-}
-
-sub nfs2kind() {
- network::nfs->new({ type => 'nfs', name => 'NFS', val => $all_hds->{nfss}, no_auto => 1 });
-}
-
-sub smb2kind() {
- network::smb->new({ type => 'smb', name => 'Samba', val => $all_hds->{smbs}, no_auto => 1 });
-}
-
-
-1;
diff --git a/perl-install/do_pkgs.pm b/perl-install/do_pkgs.pm
deleted file mode 100644
index f8ed44028..000000000
--- a/perl-install/do_pkgs.pm
+++ /dev/null
@@ -1,238 +0,0 @@
-package do_pkgs; # $Id$
-
-sub do_pkgs {
- my ($in) = @_;
- ($::isInstall ? 'do_pkgs_during_install' : 'do_pkgs_standalone')->new($in);
-}
-
-################################################################################
-package do_pkgs_common;
-use common;
-
-sub ensure_is_installed {
- my ($do, $pkg, $o_file, $b_auto) = @_;
-
- if (! $o_file || ! -e "$::prefix$o_file") {
- $do->in->ask_okcancel('', N("The package %s needs to be installed. Do you want to install it?", $pkg), 1)
- or return if !$b_auto;
- $do->install($pkg) or return;
- }
- if ($o_file && ! -e "$::prefix$o_file") {
- $do->in->ask_warn('', N("Mandatory package %s is missing", $pkg));
- return;
- }
- 1;
-}
-
-sub ensure_binary_is_installed {
- my ($do, $pkg, $binary, $b_auto) = @_;
-
- if (!whereis_binary($binary, $::prefix)) {
- $do->in->ask_okcancel('', N("The package %s needs to be installed. Do you want to install it?", $pkg), 1)
- or return if !$b_auto;
- $do->install($pkg) or return;
- }
- if (!whereis_binary($binary, $::prefix)) {
- $do->in->ask_warn('', N("Mandatory package %s is missing", $pkg));
- return;
- }
- 1;
-}
-
-sub ensure_is_installed_if_available {
- my ($do, $pkg, $file) = @_;
- if (-e "$::prefix$file" || $::testing) {
- 1;
- } else {
- $do->what_provides($pkg) && $do->install($pkg);
- }
-}
-
-sub is_available {
- my ($do, $name) = @_;
- $do->are_available($name);
-}
-
-sub is_installed {
- my ($do, $name) = @_;
- $do->are_installed($name);
-}
-
-sub check_kernel_module_packages {
- my ($do, $base_name, $o_ext_name) = @_;
-
- require bootloader;
- my ($short_name) = $base_name =~ /^(.*)-kernel$/;
- my @rpms = $do->are_available("dkms-$short_name",
- map {
- $base_name . '-' . bootloader::vmlinuz2version($_);
- } bootloader::installed_vmlinuz());
- my @ext = $o_ext_name ? $do->are_available($o_ext_name) : ();
-
- log::l("found kernel module packages $_") foreach @rpms, @ext;
-
- #- we want at least a kernel package and the ext package if specified
- @rpms && (!$o_ext_name || @ext) && [ @rpms, @ext ];
-}
-
-################################################################################
-package do_pkgs_during_install;
-use run_program;
-use common;
-
-our @ISA = qw(do_pkgs_common);
-
-sub new {
- my ($type, $in) = @_;
- require pkgs;
- bless { in => $in, o => $::o }, $type;
-}
-
-sub in {
- my ($do) = @_;
- $do->{in};
-}
-
-sub install {
- my ($do, @l) = @_;
- log::l("do_pkgs_during_install::install");
- if ($::testing || $::globetrotter) {
- log::l("i would install packages " . join(' ', @l));
- return 1;
- } else {
- $do->{o}->pkg_install(@l);
- }
-}
-
-sub what_provides {
- my ($do, $name) = @_;
- map { $_->name } pkgs::packagesProviding($do->{o}{packages}, $name);
-}
-
-sub are_available {
- my ($do, @pkgs) = @_;
- grep { pkgs::packageByName($do->{o}{packages}, $_) } @pkgs;
-}
-
-sub are_installed {
- my ($do, @l) = @_;
- grep {
- my $p = pkgs::packageByName($do->{o}{packages}, $_);
- $p && $p->flag_available;
- } @l;
-}
-
-sub remove {
- my ($do, @l) = @_;
-
- @l = grep {
- my $p = pkgs::packageByName($do->{o}{packages}, $_);
- pkgs::unselectPackage($do->{o}{packages}, $p) if $p;
- $p;
- } @l;
- run_program::rooted($::prefix, 'rpm', '-e', @l);
-}
-
-sub remove_nodeps {
- my ($do, @l) = @_;
-
- @l = grep {
- my $p = pkgs::packageByName($do->{o}{packages}, $_);
- if ($p) {
- $p->set_flag_requested(0);
- $p->set_flag_required(0);
- }
- $p;
- } @l;
- run_program::rooted($::prefix, 'rpm', '-e', '--nodeps', @l);
-}
-
-################################################################################
-package do_pkgs_standalone;
-use run_program;
-use common;
-use log;
-
-our @ISA = qw(do_pkgs_common);
-
-sub new {
- my ($type, $o_in) = @_;
- bless { in => $o_in }, $type;
-}
-
-sub in {
- my ($do) = @_;
- $do->{in} ||= do {
- require interactive;
- interactive->vnew;
- };
- $do->{in};
-}
-
-sub install {
- my ($do, @l) = @_;
-
- return 1 if listlength(are_installed($do, @l)) == @l;
-
- if ($::testing) {
- log::l("i would install packages " . join(' ', @l));
- return 1;
- }
-
- my $_wait = $do->in->wait_message('', N("Installing packages..."));
- $do->in->suspend;
- log::explanations("installed packages @l");
- #- --expect-install added in urpmi 4.6.11
- my $ret = system('urpmi', '--allow-medium-change', '--auto', '--no-verify-rpm', '--gui', '--expect-install', @l) == 0;
- $do->in->resume;
- $ret;
-}
-
-sub are_available {
- my ($_do, @pkgs) = @_;
- my %pkgs = map { $_ => 1 } @pkgs;
-
- eval {
- local *_;
- require urpm;
- my $urpm = urpm->new;
- $urpm->read_config(nocheck_access => 1);
- foreach (grep { !$_->{ignore} } @{$urpm->{media} || []}) {
- $urpm->parse_synthesis("$urpm->{statedir}/synthesis.$_->{hdlist}");
- }
- map { $_->name } grep { $pkgs{$_->name} } @{$urpm->{depslist} || []};
- };
-
-}
-
-sub what_provides {
- my ($_do, $name) = @_;
- split('\|', chomp_(run_program::get_stdout('urpmq', $name)));
-}
-
-sub is_installed {
- my ($do, $name) = @_;
- are_installed($do, $name);
-}
-
-sub are_installed {
- my ($_do, @l) = @_;
- my @l2;
- run_program::run('/bin/rpm', '>', \@l2, '-q', '--qf', "%{name}\n", @l); #- do not care about the return value
- intersection(\@l, [ chomp_(@l2) ]); #- can not return directly @l2 since it contains things like "package xxx is not installed"
-}
-
-sub remove {
- my ($do, @l) = @_;
- my $_wait = $do->in->wait_message('', N("Removing packages..."));
- $do->in->suspend;
- log::explanations("removed packages @l");
- my $ret = system('rpm', '-e', @l) == 0;
- $do->in->resume;
- $ret;
-}
-
-sub remove_nodeps {
- my ($do, @l) = @_;
- remove($do, '--nodeps', @l) == 0;
-}
diff --git a/perl-install/drakxtools.spec b/perl-install/drakxtools.spec
deleted file mode 100644
index f33f5650c..000000000
--- a/perl-install/drakxtools.spec
+++ /dev/null
@@ -1,5784 +0,0 @@
-Summary: The drakxtools (XFdrake, diskdrake, keyboarddrake, mousedrake...)
-Name: drakxtools
-Version: 10.3
-Release: 0.17mdk
-Url: http://www.mandrivalinux.com/en/drakx.php3
-Source0: %name-%version.tar.bz2
-License: GPL
-Group: System/Configuration/Other
-Requires: %{name}-newt = %version-%release, perl-Gtk2 >= 1.072-1mdk, perl-Glib >= 1.072-1mdk, /usr/X11R6/bin/xtest, font-tools, usermode >= 1.63-5mdk, perl-MDK-Common >= 1.1.18-1mdk, mandrake-doc-common >= 9.2-5mdk
-Requires: foomatic-db-engine
-Requires: drakconf-icons
-Conflicts: drakconf < 10.1-0.6mdk
-Conflicts: rpmdrake < 2.1-29mdk
-Conflicts: mandrake_doc-drakxtools-en < 9.2, mandrake_doc-drakxtools-es < 9.2, mandrake_doc-drakxtools-fr < 9.2
-Conflicts: bootloader-utils < 1.8-4mdk, bootsplash < 2.1.7-1mdk
-BuildRequires: gettext, gtk+2-devel, ldetect-devel >= 0.5.3-1mdk, ncurses-devel, newt-devel, perl-devel >= 1:5.8.0-20mdk, libext2fs-devel, perl-MDK-Common-devel >= 1.1.8-3mdk
-BuildRequires: rpm-devel
-BuildRoot: %_tmppath/%name-buildroot
-Provides: draksec
-Obsoletes: draksec
-%define _requires_exceptions perl(Net::FTP)\\|perl(Time::localtime)\\|perl(URPM)
-
-%package newt
-Summary: The drakxtools (XFdrake, diskdrake, keyboarddrake, mousedrake...)
-Group: System/Configuration/Other
-Requires: perl-base >= 2:5.8.6-1mdk, urpmi >= 4.6.13, modutils >= 2.3.11, usermode-consoleonly >= 1.44-4mdk, msec >= 0.38-5mdk
-Requires: %{name}-backend = %version-%release
-Requires: monitor-edid
-Requires: netprofile
-Obsoletes: diskdrake kbdconfig mouseconfig printtool setuptool drakfloppy
-Provides: diskdrake, kbdconfig mouseconfig printtool setuptool, drakfloppy = %version-%release
-Provides: perl(Newt::Newt)
-Provides: perl(network::isdn_consts)
-
-%package backend
-Summary: Drakxtools libraries and background tools
-Group: System/Configuration/Other
-Requires: ldetect-lst >= 0.1.71
-Requires: dmidecode
-Conflicts: drakxtools-newt < 10-51mdk
-
-
-%package http
-Summary: The drakxtools via http
-Group: System/Configuration/Other
-Requires: %{name}-newt = %version-%release, perl-Net_SSLeay >= 1.22-1mdk, perl-Authen-PAM >= 0.14-1mdk, perl-CGI >= 2.91-1mdk
-PreReq: rpm-helper
-
-%package -n drakx-finish-install
-Summary: First boot configuration
-Group: System/Configuration/Other
-Requires: %{name} = %version-%release
-
-%package -n harddrake
-Summary: Main Hardware Configuration/Information Tool
-Group: System/Configuration/Hardware
-Requires: %{name}-newt = %version-%release
-Requires: hwdb-clients
-Obsoletes: kudzu, kudzu-devel, libdetect0, libdetect0-devel, libdetect-lst, libdetect-lst-devel, detect, detect-lst
-Provides: kudzu, kudzu-devel, libdetect0, libdetect0-devel, libdetect-lst, libdetect-lst-devel, detect, detect-lst
-Prereq: rpm-helper
-
-%package -n harddrake-ui
-Summary: Main Hardware Configuration/Information Tool
-Group: System/Configuration/Hardware
-Requires: %name = %version-%release
-Requires: sane-backends
-
-%description
-Contains many Mandrivalinux applications simplifying users and
-administrators life on a Mandrivalinux machine. Nearly all of
-them work both under XFree (graphical environment) and in console
-(text environment), allowing easy distant work.
-
-drakbug: interactive bug report tool
-
-drakbug_report: help find bugs in DrakX
-
-drakclock: date & time configurator
-
-drakfloppy: boot disk creator
-
-drakfont: import fonts in the system
-
-draklog: show extracted information from the system logs
-
-draknet_monitor: connection monitoring
-
-drakperm: msec GUI (permissions configurator)
-
-drakprinter: detect and configure your printer
-
-draksec: security options managment / msec frontend
-
-draksplash: bootsplash themes creation
-
-drakTermServ: terminal server configurator
-
-listsupportedprinters: list printers
-
-net_applet: applet to check network connection
-
-%description backend
-See package %name
-
-%description newt
-Contains many Mandrivalinux applications simplifying users and
-administrators life on a Mandrivalinux machine. Nearly all of
-them work both under XFree (graphical environment) and in console
-(text environment), allowing easy distant work.
-
-adduserdrake: help you adding a user
-
-diskdrake: DiskDrake makes hard disk partitioning easier. It is
-graphical, simple and powerful. Different skill levels are available
-(newbie, advanced user, expert). It's written entirely in Perl and
-Perl/Gtk. It uses resize_fat which is a perl rewrite of the work of
-Andrew Clausen (libresize).
-
-drakauth: configure authentification (LDAP/NIS/...)
-
-drakautoinst: help you configure an automatic installation replay
-
-drakbackup: backup and restore your system
-
-drakboot: configures your boot configuration (Lilo/GRUB,
-Bootsplash, X, autologin)
-
-drakconnect: LAN/Internet connection configuration. It handles
-ethernet, ISDN, DSL, cable, modem.
-
-drakfirewall: simple firewall configurator
-
-drakgw: internet connection sharing
-
-drakkeyboard: configure your keyboard (both console and X)
-
-draklocale: language configurator, available both for root
-(system wide) and users (user only)
-
-drakmouse: autodetect and configure your mouse
-
-drakproxy: proxies configuration
-
-drakscanner: scanner configurator
-
-draksound: sound card configuration
-
-drakx11: menu-driven program which walks you through setting up
-your X server; it autodetects both monitor and video card if
-possible
-
-drakxservices: SysV services and daemons configurator
-
-drakxtv: auto configure tv card for xawtv grabber
-
-lsnetdrake: display available nfs and smb shares
-
-lspcidrake: display your pci information, *and* the corresponding
-kernel module
-
-%description http
-This add the capability to be runned behind a web server to the drakx tools.
-See package %name
-
-
-%description -n drakx-finish-install
-For OEM-like duplications, it allows at first boot:
-- network configuration
-- creating users
-- setting root password
-- choosing authentication
-
-
-%description -n harddrake
-The harddrake service is a hardware probing tool run at system boot
-time to determine what hardware has been added or removed from the
-system.
-It then offer to run needed config tool to update the OS
-configuration.
-
-
-%description -n harddrake-ui
-This is the main configuration tool for hardware that calls all the
-other configuration tools.
-It offers a nice GUI that show the hardware configuration splitted by
-hardware classes.
-
-
-%prep
-%setup -q
-
-%build
-%make CFLAGS="$RPM_OPT_FLAGS"
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-%make PREFIX=$RPM_BUILD_ROOT install
-mkdir -p $RPM_BUILD_ROOT/{%_initrddir,%_sysconfdir/{X11/xinit.d,sysconfig/harddrake2}}
-touch $RPM_BUILD_ROOT/etc/sysconfig/harddrake2/previous_hw
-
-dirs1="usr/lib/libDrakX usr/share/libDrakX"
-(cd $RPM_BUILD_ROOT ; find $dirs1 usr/bin usr/sbin ! -type d -printf "/%%p\n")|egrep -v 'bin/.*harddrake' > %{name}.list
-(cd $RPM_BUILD_ROOT ; find $dirs1 -type d -printf "%%%%dir /%%p\n") >> %{name}.list
-
-perl -ni -e '/activefw\.pm|clock|drak(backup|bug|clock|floppy|font|log|net_monitor|perm|printer|sec|splash|TermServ)|gtk|icons|logdrake|net_applet|net_monitor|pixmaps|printer|roam|xf86misc|\.png$/ ? print STDERR $_ : print' %{name}.list 2> %{name}-gtk.list
-perl -ni -e '/http/ ? print STDERR $_ : print' %{name}.list 2> %{name}-http.list
-perl -ni -e 'm!lib/libDrakX|bootloader-config|fileshare|lsnetdrake|drakupdate_fstab|rpcinfo|serial_probe! && !/newt/i ? print STDERR $_ : print' %{name}.list 2> %{name}-backend.list
-
-#mdk menu entry
-mkdir -p $RPM_BUILD_ROOT/%_menudir
-
-cat > $RPM_BUILD_ROOT%_menudir/drakxtools-newt <<EOF
-?package(drakxtools-newt): \
- needs="X11" \
- section="System/Configuration/Other" \
- title="LocaleDrake (System)" \
- longtitle="System wide language configurator" \
- command="/usr/bin/drakconf --start-with=Localization" \
- icon="localedrake.png"
-
-?package(drakxtools-newt): \
- needs="X11" \
- section="System/Configuration/Other" \
- title="LocaleDrake (User)" \
- longtitle="Language configurator" \
- command="/usr/bin/localedrake" \
- icon="localedrake.png"
-
-EOF
-
-cat > $RPM_BUILD_ROOT%_menudir/harddrake-ui <<EOF
-?package(harddrake-ui):\
- needs="X11"\
- section="Configuration/Hardware"\
- title="HardDrake"\
- longtitle="Hardware Central Configuration/information tool"\
- command="/usr/sbin/harddrake2"\
- icon="harddrake.png"
-EOF
-
-cat > $RPM_BUILD_ROOT%_menudir/net_applet <<EOF
-?package(drakxtools):\
- needs="X11"\
- section="System/Monitoring"\
- title="NetApplet"\
- longtitle="Network monitoring applet"\
- command="/usr/bin/net_applet --force"\
- icon="/usr/share/libDrakX/pixmaps/connected.png"
-EOF
-
-cat > $RPM_BUILD_ROOT%_sysconfdir/X11/xinit.d/harddrake2 <<EOF
-#!/bin/sh
-exec /usr/share/harddrake/service_harddrake X11
-EOF
-
-cat > $RPM_BUILD_ROOT%_sysconfdir/X11/xinit.d/net_applet <<EOF
-#!/bin/sh
-DESKTOP=\$1
-case \$DESKTOP in
- KDE|GNOME|IceWM|Fluxbox|XFce4) exec /usr/bin/net_applet;;
-esac
-EOF
-
-mv $RPM_BUILD_ROOT%_sbindir/service_harddrake_confirm $RPM_BUILD_ROOT%_datadir/harddrake/confirm
-
-chmod +x $RPM_BUILD_ROOT{%_datadir/harddrake/*,%_sysconfdir/X11/xinit.d/{harddrake2,net_applet}}
-# temporary fix until we reenable this feature
-rm -f $RPM_BUILD_ROOT%_sysconfdir/X11/xinit.d/harddrake2
-
-%find_lang libDrakX
-cat libDrakX.lang >> %name.list
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-%update_menus
-[[ ! -e %_sbindir/kbdconfig ]] && %__ln_s -f keyboarddrake %_sbindir/kbdconfig
-[[ ! -e %_sbindir/mouseconfig ]] && %__ln_s -f mousedrake %_sbindir/mouseconfig
-[[ ! -e %_bindir/printtool ]] && %__ln_s -f ../sbin/printerdrake %_bindir/printtool
-:
-
-%postun
-%clean_menus
-for i in %_sbindir/kbdconfig %_sbindir/mouseconfig %_bindir/printtool;do
- [[ -L $i ]] && %__rm -f $i
-done
-:
-
-%post http
-%_post_service drakxtools_http
-
-%preun http
-%_preun_service drakxtools_http
-
-%post newt
-%update_menus
-
-%postun newt
-%clean_menus
-
-%post -n harddrake-ui
-%update_menus
-
-%postun -n harddrake-ui
-%clean_menus
-
-%post -n harddrake
-%_post_service harddrake
-
-%preun -n harddrake
-%_preun_service harddrake
-
-%postun -n harddrake
-file /etc/sysconfig/harddrake2/previous_hw | fgrep -q perl && %_datadir/harddrake/convert || :
-
-%files backend -f %{name}-backend.list
-%defattr(-,root,root)
-%config(noreplace) /etc/security/fileshare.conf
-%attr(4755,root,root) %_sbindir/fileshareset
-
-%files newt -f %name.list
-%defattr(-,root,root)
-%_menudir/drakxtools-newt
-%doc diskdrake/diskdrake.html
-%_iconsdir/localedrake.png
-%_iconsdir/large/localedrake.png
-%_iconsdir/mini/localedrake.png
-%_mandir/*/*
-
-%files -f %{name}-gtk.list
-%defattr(-,root,root)
-/usr/X11R6/bin/*
-%_sysconfdir/X11/xinit.d/net_applet
-%_menudir/net_applet
-
-%files -n harddrake
-%defattr(-,root,root)
-%config(noreplace) %_initrddir/harddrake
-%dir /etc/sysconfig/harddrake2/
-%config(noreplace) /etc/sysconfig/harddrake2/previous_hw
-%dir %_datadir/harddrake/
-%_datadir/harddrake/*
-#%_sysconfdir/X11/xinit.d/harddrake2
-
-%files -n harddrake-ui
-%defattr(-,root,root)
-%dir /etc/sysconfig/harddrake2/
-%_sbindir/harddrake2
-%_datadir/pixmaps/harddrake2
-%_menudir/harddrake-ui
-%_iconsdir/large/harddrake.png
-%_iconsdir/mini/harddrake.png
-%_iconsdir/harddrake.png
-
-%files -n drakx-finish-install
-%defattr(-,root,root)
-%config(noreplace) %_sysconfdir/sysconfig/finish-install
-%_sysconfdir/X11/xsetup.d/finish-install.xsetup
-%_sbindir/finish-install
-
-%files http -f %{name}-http.list
-%defattr(-,root,root)
-%dir %_sysconfdir/drakxtools_http
-%config(noreplace) %_sysconfdir/pam.d/miniserv
-%config(noreplace) %_sysconfdir/init.d/drakxtools_http
-%config(noreplace) %_sysconfdir/drakxtools_http/conf
-%config(noreplace) %_sysconfdir/drakxtools_http/authorised_progs
-%config(noreplace) %_sysconfdir/logrotate.d/drakxtools-http
-
-%changelog
-* Tue May 24 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.17mdk
-- drakgw (blino):
- o wizardify
- o allow not to enable DNS, dhcpd and proxy servers
- o allow not to enable CUPS broadcast
- o use network interfaces instead of network addresses in CUPS
- configuration
-- harddrake: use mousedrake to configure tablets & touchscreens
-
-* Sun May 22 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.16mdk
-- interactive layer: fix canceling managment in text mode
-- XFdrake: only run ldconfig if needed (aka only if GL config was
- altered), thus speeding up auto-config of X in harddrake service
-- fix joystick detection (pixel, #16099)
-
-* Thu May 19 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.15mdk
-- drakconnect, harddrake: detect all ADSL modems of each kind
-- harddrake GUI:
- o detect yet more webcams and USB audio devices
- o DVB support:
- * list DVB cards in their own category
- * install needed packages for DVB
- o list tablets and touchscreens in their own category
- o fix detecting joysticks
- o really list ATM devices
-- harddrake service: install/remove DVB drivers if needed
-
-* Thu May 19 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.14mdk
-- interactive layer: handle canceling wizards in text mode
-- hardware support:
- o detect more webcams
- o detect more ADSL USB modems (needs further drakconnect work)
-- harddrake:
- o create new categories for USB audio, ATM, Bluetooth, WAN, and radio devices
- o split joysticks category into real joystick and gameport controller ones
-- localedrake: clarify "other countries" vs "advanced" label depending if the
- language is spoken in several countries and if the language needs an IM method
-
-* Tue May 17 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.13mdk
-- drakboot (blino):
- o add the "Create new theme" button back
- o allow to choose between "text only", "verbose" and "silent"
- bootsplash modes
-- drakconnect (blino):
- o use iwpriv for WPA with rt2x00 drivers (since they don't support
- wpa_supplicant)
- o keep # and * characters in phone number (#16031)
-- drakroam:
- o fix perms on /etc/wlandetect.conf (#16020)
- o really write waproamd config files (blino)
-
-* Mon May 16 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.12mdk
-- fix GtkTextView wrapper
-- drakups: do not detect MS joystick as UPS (#15930)
-
-* Thu May 12 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.11mdk
-- diskdrake: default to "Custom" when group fileshare exists (pixel, #15917)
-- drakbackup (stew):
- o drop webdav support (can be mounted as a normal net filesystem
- these days)
- o remove translation on "tape" media selection (#15437)
- o rework .backupignore handling (#12352)
-- drakconnect: netconnect.pm: reorder drakconnect first screen (blino)
-- drakups: fix detecting Wingman gamepad as UPS (#15750)
-- harddrake: ensure wait message is centered on mcc
-- harddrake service: fix PCMCIA breakage (#15742)
-- fix serial controllers detection (#15457)
-
-* Tue May 10 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.10mdk
-- draksplash (blino):
- o improved layout (separate window for image previews, notebook to
- split silent/verbose/console settings)
- o update scale factors when the theme name is changed too
- o use default jpeg image path in config file for both silent and
- verbose images
- o force the exact image size when writing a theme
- o write bootsplash v3 configuration files (progress bar still
- missing)
- o allow to modify progress bar and console box by dragging the mouse
- o really get default vga mode
- o shrink preview window on resolution change
- o handle both silent and verbose images
-- localedrake (UTUMI Hirosi):
- o add support for iiimf
- o do not install anymore uim-anthy for japanese users
-
-* Wed May 4 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.9mdk
-- diskdrake (pixel):
- o fix displaying number of logical extents
- o allow resizing ext3 LV if not mounted
- o allow resizing reiserfs LV even if not mounted
-- drakbackup (stew):
- o clarify quota message, optional delete old backups (#15066)
- o optional mail "From" address (#15293)
- o fix automagic addition of /root to backups when not desired
-- drakconnect (blino):
- o ask wireless settings before boot protocol selection
- o remove useless warning in install, we never override configuration (#10827)
-- draksplash (blino):
- o fix theme creation
- o preview theme in real time, cleanups
- o use default values for scale settings
- o draw a cross inside the text box
-- drakTermServ (stew):
- o update for new etherboot
- o predict NBI disk space usage and check
- o catch failed NBI creation (#13902)
- o catch failed dhcpd.conf creation (#13943)
- o misc small bug fixes
-
-* Mon May 2 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.8mdk
-- ensure most sub dialogs reuse the icon of their main window
-- drakboot: improve layout
-- drakconnect: fix USB devices detection for ndiswrapper (blino)
-- harddrake: fix SATA & hw RAID detection (detect them pior to detecting PATA)
-
-* Fri Apr 29 2005 Thierry Vignaud <tvignaud@mandriva.com> 10.3-0.7mdk
-- drakconnect (blino):
- o don't write /etc/ppp/options anymore, adjust options in peer files
- o display VPI/VCI values in decimal
- o configure pppoe connections in a ppp peer file
-- drakroam (blino):
- o do not write blank ESSID
- o exit and warn when no wireless interface is found (#15244)
-- drakups: do not detect IR devices as UPSes (#15495)
-- XFdrake: if one prefer using "Modes" instead of "Virtual", keep it
- as is (pixel)
-
-* Mon Apr 25 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.6mdk
-- drakconnect (blino):
- o fix WPA key (#15621)
- o allow to disable WPA even if no key is used
- o handle errors in wireless packages installation
-- drakroam: fix Signal Quality parsing (blino)
-
-* Thu Apr 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.5mdk
-- mandrakesoft is now mandriva
-
-* Thu Apr 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.4mdk
-- drakconnect: basic tokenring support
-
-* Thu Apr 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.3mdk
-- drakbackup, drakfont, draksplash: switch to gtk+-2.6's new file selector
-- drakbackup, drakroam: fix layout
-- drakfont: filter file list so that only fonts are displayed
-
-* Wed Apr 20 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.2mdk
-- drakconnect (blino):
- o merge wireless steps and move advanced settings in advanced mode (#15501)
- o configure wpa driver in drakconnect, wpa_supplicant init script is dropped
- o fix default wireless mode to be "Managed" instead of "Secondary"
- o really use given encryption key
- o improve ndiswrapper driver configuration (allow to select driver,
- device and many errors handling)
- o fix fallback sysfs if ethtool failled
- o do not write zeroed MAC addresses in iftab, it confuses ifrename
- o do not crash if modprobe fails
- o unload ndiswrapper first so that the newly installed .inf files
- will be read
- o allow to choose the wireless encryption mode between "None", "Open
- WEP", "Restricted WEP" and "WPA Pre-Shared Key"
-- drakfirewall: fix automatic net interface detection (blino)
-- drakroam: fix SSID listing (blino)
-- keyboardrake: update keyboard list for next xorg-x11 (pablo)
-- mousedrake (blino):
- o preselect synaptics touchpad if no external mouse is present
- o better detection for touchpad
- o append evdev in modprobe.preload if a touchpad is detected
- o always configure an universal mouse so that USB mices can be hotplugged
- o always set synaptics touchpad as secondary and don't list them in
- mousedrake
-- net_applet: increase network check timeout to lower the load (blino)
-- XFdrake: suggest 1280x1024 instead of 1280x960 which causes pbs (pixel)
-
-* Fri Apr 15 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.3-0.1mdk
-- drakbackup: fix direct-to-tape backup/restore issues (stew, #15293)
-- drakconnect (blino):
- o use sysfs as fallback to detect wireless interfaces (eg:
- rt2x00/prism2_*)
- o allow to modify METRIC settings in the wizard
- o fix displaying wifi data in manage interface
-
-* Tue Apr 12 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-24mdk
-- drakconnect: fix connection establishment (rafael)
-
-* Mon Apr 11 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-23mdk
-- drakconnect (blino):
- o fix error reporting for ndiswrapper package installation (#15373)
- o handle spaces in ndiswrapper drivers path
-- XFdrake (pixel):
- o fix empty ModeLine lines
- o 1152x864 needs more modelines than the poor 1152x864@75Hz builtin
- xorg (#11698)
-
-* Fri Apr 8 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-22mdk
-- drakconnect: always restart slmodem, even if it was already
- installed (blino)
-- harddrake: fix harddrake crash with USB/PCI DSL modems (blino, #15034)
-
-* Thu Apr 7 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-21mdk
-- drakconnect (blino):
- o fix support for fix h[cs]f modems
- o create correct /dev/modem && install correct package for HCF modems
-- drakroam (blino):
- o don't truncate default gateway (#15247)
- o hide roaming frame by default
-- net_applet (blino):
- o really allow users to start connection without having to type the
- root password
- o fix refresh
-
-* Tue Apr 5 2005 Olivier Blin <oblin@mandrakesoft.com> 10.2-20mdk
-- mousedrake: really apply specific ALPS touchpad settings (#14510)
-- drakconnect:
- o install dkms packages if found
- o support more slmodems
-- net_monitor: improve wifi detection
-- drakroam:
- o do not crash if no essid is selected (partially fix #15244)
- o hide unavailable features, add close button
-- drakboot (Pixel): apply patch from bugzilla #15216, adding support for
- "password=..." and "restricted" at per-entry level (thanks to jarfil)
-- misc charset fixes (Pixel, Pablo)
-
-* Mon Apr 4 2005 Olivier Blin <oblin@mandrakesoft.com> 10.2-19mdk
-- drakconnect:
- o only switch up wireless devices during detection
- o do not reupload firmware for eagle-usb modems if already done
- o disconnect internet interface before trying to connect
-- mousedrake: configure wacom devices with synaptics touchpads too
-- printerdrake (Till):
- o Fixed bug #4319: Printer options cannot be set after renaming the
- printer or changing the connection type
- o Fixed bug of PostScript printers with manufacturer-supplied PPD
- cannot be renamed at all
- o Fixed bug of print queue being deleted when renaming fails
- o Fixed bug of printerdrake trying to open a message window when
- non-interactive queue generation fails
- o Fixed pre-definition of $printer->{ARGS}, this bug made printerdrake
- crashing sometimes
-- diskdrake (Pixel): add /usr/local and /opt to suggestions_mntpoints
-
-* Fri Apr 1 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-18mdk
-- drakconnect: enable ethernet interfaces during detection, thus
- fixing Ralink wireless detection (blino)
-- harddrake: fix crash
-- mousedrake: configure wacom devices with synaptics touchpads too
- (blino)
-
-* Thu Mar 31 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-17mdk
-- drakconnect: do not use ifplugd for wireless cards (and don't allow
- to enable it) (blino)
-- drakfirewall: make it usable (pixel, #15116)
-- drakups: do not detect USB joystics as UPSes (#15131)
-- harddrake:
- o do not try to install packages that are not availlable (#15106)
- o do no try to install too generic hw packages (#15101)
- o do not detect USB joystics as UPSes (#15102)
-- localedrake: do not try to logout wm (pixel, #15087)
-
-* Wed Mar 30 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-16mdk
-- drakconnect (blino):
- o fix speedtouch microcode url (#15095)
- o fix sagem modem config
- o try to use the country specific CMV for sagem modems
-- harddrake:
- o list hardware RAID controllers in their own section (so that they do not
- appear in the unknown one)
- o ensure we detect all known SATA controllers and all known sound cards
- o fix optical mice detection (#15082)
-- net_applet: really load network configuration at start (blino)
-- printerdrake: do not mis-detect some USB keyboards as printers (till)
-
-* Tue Mar 29 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-15mdk
-- drakconnect (blino):
- o fix eaglectrl path (#15033)
- o detect more Bewan devices
- o fix support for sagem modems not using pppoa
-- harddrake: add an option in harddrake to probe imm/ppa (pixel,
- #12560)
-- localedrake:
- o fix russian size (pixel, #14988)
- o "unicode" checkbox is visible only in expert mode
-- fix tools' crash when drakconf is not installing (#13392)
-
-* Fri Mar 25 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-14mdk
-- drakroam:
- o do not crash (blino)
- o fix translations
-- net_applet (blino):
- o ask for root password if needed when setting a new profile
- o force refresh if asked by user from the menu
-
-* Thu Mar 24 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-13mdk
-- banners: make banner be RTL aware (aka follow language direction and
- display itself mirrored for RTL languages) (#11910)
-- diskdrake (pixel):
- o ensure we use/propose a free md when creating a new one
- o after "mdadm --assemble" there can be some inactivate mds busying
- devices, stopping them
-- drakconnect (blino):
- o make Bewan PCI modems work again
- o add support for modems using pppoatm (e.g. SpeedTouch) and ISP
- using RFC 1483 Routed VC MUX (e.g. Free Degroupe)
-
-* Wed Mar 23 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-12mdk
-- XFdrake: fix probing on neomagic (pixel)
-- harddrake: package rpmsrate so that installing hw packages works
-
-* Tue Mar 22 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-11mdk
-- drakconnect: do not list wifi* interfaces (blino, #14523)
-- harddrake2: install packages needed for hw support
-- keyboarddrake: run dmidecode only once we acquired root capabilities
- (pixel, #13619)
-
-* Mon Mar 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-10mdk
-- drakboot: enhance yaboot macos entry handling (cjw, #14642)
-- drakconnect: disable network hotplug for the via-velocity driver
- (#14763)
-- drakups:
- o fix driver for APC UPSes for auto USB probing
- o set extra parameters if present
-- net_applet (blino):
- o force start from menu (#14858)
- o don't modify autostart config file value if started with --force
-- XFdrake (blino):
- o use new recommended settings for synaptics-0.14.0
- o use specific Synaptics settings for ALPS devices (#14512)
-
-* Fri Mar 18 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-9mdk
-- drakTermServ: detect all NIC that're know to drakconnect
-- drakups: fix device path when manually adding an UPS (#12290)
-- logdrake: fix explanation mode only displaying last line (#14368)
-
-* Fri Mar 18 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-8mdk
-- diskdrake (pixel):
- o fix remove on LVM in newt interface (#14254)
- o remove the lvm if destroying it succeeds (#14249)
-- drakboot: handle grub file names that do not correspond to a mounted
- filesystem (pixel, #14410)
-- drakconnect: remove other mac address occurrences in iftab (blino)
-- drakTermServ (stew):
- o lose the "system" calls
- o use pxe.include now
-- drakperm:
- o do not ignore groups with empty password field (#14777)
- o better looking GUI: span groups & users on several columns (up to 3)
-- localedrake: always warn the user to logout, even if we can't help
- (pixel, #14403)
-
-* Thu Mar 17 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-7mdk
-- drakconnect:
- o fix localized sorting (#14634)
- o manage interface (blino):
- * allow to modify non configured devices
- * really detect wireless devices
-- harddrake: fix adsl devices detection (blino, #14747)
-- logdrake: fix save dialog (blino)
-- printerdrake: fix queue name auto-generation, it sometimes hanged in
- an endless loop (till, #14426, #14525, #14563)
-- XFdrake (pixel):
- o instead of having xorg.conf symlinked to XF86Config, do the
- contrary
- o use monitor-probe-using-X
- o remove the "ratio" combo and have the resolutions from current
- ratio by default and allow "Other" to see all others
-
-* Wed Mar 16 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-6mdk
-- drakboot: fix dropping line macos in yaboot.conf (pixel, #14642)
-- drakconnect (blino):
- o allow to display multiple instances of the similar adsl devices
- o fix unicorn packages installation
-- interactive layer: fix some nasty bug
-- localekdrake:
- o preserve utf-8 setting (#12308)
- o properly set UTF-8 for HAL mount options if needed (#13833)
- o enable to enable/disable utf-8
- o install scim-input-pad when switching IM for japanese
- o ensure there's never a "previous" button on first step (even when
- stepping back)
-- printerdrake: fix setting of default printer on daemon-less CUPS
- client (till, #13940)
-- XFdrake: probe DDC, then fallbacks on DMI
-
-* Tue Mar 15 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-5mdk
-- diskdrake: add support for XBox (stew, pixel)
-- drakboot: don't die when we have no entries in grub menu.lst (pixel)
-- drakconnect (blino):
- o allow not to set gateway device (#14633)
- o fix and force CMVs symlink creation for eagle-usb
-- drakfirewall: allow connections from local net to firewall (blino,
- #14586)
-- XFdrake (pixel):
- o for 1400x1050, put the resolutions (60 and 75Hz are already in
- extramodes, but they are GTF modelines, we can overrule them)
- o don't add modelines for 1280x1024, they are already in standard
- vesamodes (builtin Xorg)
- o when adding gtf modelines, sort them with high frequencies first
- (since Xorg prefer the first matching modeline (!))
-
-* Thu Mar 10 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-4mdk
-- harddrake2: enable to upload the hardware list
-- XFdrake:
- o fix crash when called from hwdb-clients
- o skip the 4/3 detailed_timings otherwise they conflict with the
- Xorg builtin vesamodes (pixel)
-- drakconnect (blino):
- o use a higher timeout for modem dialing (#10814)
- o make wpa_supplicant.conf readable by root only
-
-* Wed Mar 9 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-3mdk
-- drakconnect:
- o workaround buggy sk98lin kernel driver (#14163)
- o write selected dhcp client in ifcfg files (blino)
-- draksec: fix setting null values (#14364)
-
-* Tue Mar 8 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-2mdk
-- drakconnect (oblin):
- o scan hidden ssid
- o manage interface:
- * handle more DHCP options
- * move DHCP settings in a notebook page
-- XFdrake: choose a 4/3 resolution by default (pixel)
-- XBox support (stew)
-
-* Mon Mar 7 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-1mdk
-- diskdrake: allow live resizing of reiserfs on lvm (pixel)
-- drakboot: fix detecting yaboot (pixel)
-- drakconnet (blino):
- o configure CMV for sagem modems
- o delete gateway:
- * if reconfiguring the gateway interface to dhcp
- * if gateway device is invalid (#11761)
- * if needed when configuring DSL devices (#13978)
- o manage interface:
- * detect all ethernet interfaces
- * allow to modify DHCP settings
-- localedrake: let's be able to setup gcin (funda wang)
-- printerdrake: detect if the user has manually edited
- /etc/cups/client.conf (till)
-- XFdrake: still improving monitors support (pixel)
-
-* Wed Mar 2 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.35mdk
-- drakboot (pixel):
- o fix corrupted "Precise RAM size" field (#13874)
- o handle boot-as and master-boot (#13846)
-- drakconnect: workaround buggy kernel (#12609)
-- net_applet: refresh every second, and do not reread network conf on
- each refresh (blino, #11467)
-- printerdrake (till):
- o add possibility to add a remote LPD printer in beginner's mode (#13734)
- o fix incorrect display of accentuated characters in PPD options
- also for boolean options (#13928)
- o let detected LPD printer model be shown in a pop-up window and not
- in the add printer wizard
- o let detected socket printer model be shown if the IP/port was
- manually entered
- o fix selection of test pages
- o ensure that recommended driver is preselected in expert mode, even
- if the recommended driver is a manufacturer-supplied PPD with
- language tag
-- ugtk2 layer: misc fixes
-- XFdrake (pixel):
- o add a ratio choice, and restrict the resolutions to this choice
- o add 1280x600 for VAIO PCG-C1M (#5192)
- o fix section with only comments
- o "keyboard" InputDevice can also be called "kbd"
- o do not only add modelines not defined in xorg, otherwise xorg will
- prefer the modelines we provide (eg: it will use 1024x768@50
- whereas it could have used 1024x768@60)
-- configure iocharset and codepage option for hal (pixel, #13833)
-
-* Tue Mar 1 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.34mdk
-- diskdrake: allow to choose encryption algorithm (blino, #13472)
-- drakhelp, drakbug: use www-browser (daouda)
-- printerdrake: fix "add printer" wizard chen embedded in the MCC (#13929)
-- XFdrake: further monitor fixes (pixel)
-
-* Tue Mar 1 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.33mdk
-- drakconnect: enhance "wrong network mask format" message (blino, #10712)
-- drakTermServ: sort list of nbis (stew, #13998)
-- keyboardrake: set compose key as "rwin" if not set (pablo)
-- XFdrake (pixel):
- o replaced by use monitor-edid instead of ddcxinfos
- o add many resolutions
- o set the "Monitor preferred modeline" from EDID in xorg.conf
- o handle lower than 640 resolutions
- o set better resolution
-
-* Mon Feb 28 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.32mdk
-- drakboot: make sure /boot/grub/install.sh is 755 (pixel)
-- drakconnect (blino):
- o allow to alter DHCP timeout (# 11435)
- o add support for PEERDNS, PEERYP and PEERNTPD (#9982)
- o workaround broken ethtool from hostap drivers (#13979)
- o handle USERCTL settings for modems too
-- net_applet (blino):
- o add menu entry (#11898)
- o netprofile support (#12094)
- o allow to select watched interface
-- printerdrake: let country and not language decide about default
- paper size (till)
-
-* Fri Feb 25 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.31mdk
-- drakconnect (blino):
- o allow users to start the connection (#12837)
- o pre-detect modem device
-- keyboarddrake: new default keyboard is "us" for Chinese (pablo)
-- printerdrake: driver "oki4w" was renamed to "oki4drv" (till)
-
-* Fri Feb 25 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.30mdk
-- drakconnect :allow to select "unlisted" provider in adsl provider
- list (blino)
-- drakfont: fix uninstalling fonts (#9324)
-- drakproxy: do not update kde config file if kde isn't installed (blino)
-
-* Thu Feb 24 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.29mdk
-- drakconnect:
- o add norwegian ADSL providers (Eskild Hustvedt)
- o remove all non-digit characters in phone number (blino, #10813)
- o minimal WPA support (blino)
-- drakxtv: scan TV channels for TV cards that do not require any
- driver configuration (#13865)
-- drakups:
- o fix crash due to latest perl-Libconf
- o fix reading UPS db
-- net_applet: fix name of mcc tool (blino & me, #13896)
-- printerdrake:
- o enable to alter options of a not set up non-Foomatic queu
- o fix accentuated characters in PPDs not correctly reproduced in the
- printer options dialog
-- GUI layers:
- o fix displaying "Advanced" instead of "Basic" in advanced_state by
- default (pixel, #13944)
- o force to open file selector as a modal window (rafael, #13942)
-
-* Tue Feb 22 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.28mdk
-- drakfont: allow to select multiple files (blino)
-- localedrake:
- o adapt to new uim splitting (UTUMI Hirosi)
- o adapt to new scim packages splitting (Funda Wang)
- o fix koi8-u font size (Funda Wang, #13809)
-- keyboardrake: handle lb locale (pablo)
-- printerdrake: if a printer is set up with HPLIP and has still an old
- HPOJ configuration, it will be automatically removed (till)
-- scannerdrake (till):
- o display unsupported scanners as such in the scanners list (#12049)
- o load kernel modules (and make them loaded on boot) if specified in
- ScannerDB
- o tell user if his scanner requires manual editing of config files
- to work (the appropriate scanner models are marked in ScannerDB)
-
-* Wed Feb 16 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.27mdk
-- drakboot: make it more robust (pixel)
-- drakproxy: set up KDE too (blino)
-- harddrake: list usb mice that are not listed in usbtable (#13575)
-- interactive layer: use the new gtk+ file chooser (pixel)
-- keyboarddrake: make keyboard layout more user friendly
-- printerdrake (till):
- o force only ASCII letters, numbers, and underscores being used in
- print queue names
- o wait for CUPS being ready before querying the printer states for
- the printer list in the main window
-- reduce drakxtools-backend's requires (pixel)
-
-* Mon Feb 14 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.26mdk
-- draksound, service_harddrake: handle more sound cards
-- localedrake: alter font settings for zh_CN and zh_TW (funda wang)
-- printerdrake (till):
- o allow HPLIP setup also when setting up the print queue manually
- o fix undetection of network printers without DNS hostname entry
- o longer timeouts for "ping", as some network printers were missed
-- service_harddrake: handle removal of cards (#7049)
-
-* Fri Feb 11 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.25mdk
-- harddrake service: fix removing PCMCIA controller
-- hardware support: detect & load modules for RNG (crypto hw)
-
-* Thu Feb 10 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.24mdk
-- drakxtv:
- o only offer to configure tv cards that (may) need to be configured
- o do not complain about no tv cards when there're but they do not
- require any configuration beyond loading proper module (#7443,
- #11270, ...)
-- harddrake:
- o detect more webcams
- o do not detect speakers as keyboards
-- printerdrake: misc fixes (till)
-
-* Thu Feb 10 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.23mdk
-- printerdrake (till):
- o add automatic setup of HP printers with HPLIP
- o fixes for embedded mode
-- drakconnect:
- o add support for ACP (Mwave) modems
- o fix stepping back from lan interface step with ndiswrapper
- o fix ndiswrapper installing
-- interactive layer: fix selecting a file (eg: ndiswrapper's drivers)
-- hardware support:
- o detect & load modules for:
- * toshiba driver for some laptops
- * some multiport serial cards
- * DVB
- * joysticks
- o add support for multiple different AGP controllers
- o handle a few more special serial port cards
-
-* Wed Feb 9 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.22mdk
-- localedrake: switch arabic font for KDE from "Roya" to "Terafik"
- that supports ascii glyphs (pablo)
-- ugtk2: API changes for rpmdrake (rafael)
-
-* Wed Feb 9 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.21mdk
-- drakboot: fix ACPI checkbox (pixel, #13335)
-- drakkeyboard: synchronized keyboards with X11 (pablo)
-- harddrake service: prevent adding spurious empty lines at end of
- /etc/hotplub/blacklist on stop
-- printerdrake: updates
-
-* Tue Feb 8 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.20mdk
-- drakconnect (blino):
- o add basic ndiswrapper support
- o select manual adsl connection type if the network interface was
- static
- o add missing protocol for Free and Telecom Italia in ISB DB
-- drakproxy: support gnome proxy (blino)
-- printerdrake (till):
- o adapt to new printer drivers packages
- o limit automatically generated print queue names to 12 characters
- and warn user if he manually enters longer names (which will make
- the printer unaccessible for some Windows clients) (#12674).
-- allow upper case letters in users' real names (rafael)
-- net_applet: automatically start in fluxbox and XFce4 too (blino)
-
-* Fri Feb 4 2005 Olivier Blin <blino@mandrake.org> 10.2-0.19mdk
-- drakconnect: add bpalogin support for cable connections
-
-* Thu Feb 3 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.18mdk
-- drakconnect: fix CAPI kernel drivers installation (blino)
-- drakfirewall: port 445 is used for Samba (w/o NetBios) (blino)
-
-* Fri Jan 28 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.17mdk
-- diskdrake: fix autocheck flag in /etc/fstab for / (pixel, #13283)
-- drakbackup: Wizard, System Backup configuration problems (stew, #13235)
-- harddrake service:
- o fix PCMCIA autoconfig
- o make --force force harddrake to reconfigure everything
-
-* Wed Jan 26 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.16mdk
-- diskdrake: use the new option auto=dev instead of auto=yes when
- configuring mdadm (pixel)
-- drakTermServ (stew):
- o drop quasi-pxe setup in dhcp.conf as we can use real pxe now
- o portmap check, dhcpd.conf.pxe.include (#13138 & #13139)
-- package installation: use the new --gui option to urpmi for the
- drakxtools to ask for media change (rafael)
-- mygtk2 related fixes (pixel)
-
-* Fri Jan 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.15mdk
-- fix mygtk2 for drakloop (pixel)
-- printerdrake: fix main loop (daouda)
-
-* Fri Jan 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.14mdk
-- drakconnect: update ISP db (baud)
-- harddrake: fix pcmcia controllers detection
-
-* Fri Jan 21 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.13mdk
-- keyboarddrake: minimal XkbModel support (pixel)
-- diskdrake (pixel):
- o don't write /etc/mdadm.conf when no raid
- o use option "auto=yes" in mdadm.conf to ensure mdadm will create
- /dev/mdX devices when needed
-- printerdrake:
- o fix subdialogs when embedded in mcc
- o fix banner's title by initializing l10n domains before ugtk2
-
-* Wed Jan 19 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.12mdk
-- diskdrake: progress bar when formatting ext3 (pixel)
-- drakauth: fix switching back nsswitch.conf to local authentication
- (pixel, #13024)
-- drakbackup: custom cron configuration (stew, #13056)
-- drakboot: do not create a maping table when uneeded (#12307)
-- drakconnect: fix bug introduced by mygtk2 (pixel)
-- drakfirewall: fix ethernet card detection (pixel, #12996)
-- harddrake2: fix crash on opening help windows
-- interactive layer: separate alignement for basic and advanced
- entries (pixel)
-- XFdrake (pixel):
- o when reading an existing X config file, ensure it is not too bad,
- otherwise propose to start from scratch (#8548)
- o set up framebuffer in standalone mode too
- o for fbdev, advise to reboot instead of restarting X server
-
-* Wed Jan 12 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.11mdk
-- harddrake2: display the menubar and the banner when embedded
-
-* Wed Jan 12 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.10mdk
-- drakbackup, drakTermServ: silent install of terminal-server (urpmi
- --X is deprecated) (rafael)
-- localedrake (Funda Wang):
- o install scim-chewing for zh locale
- o fix font setting for zh_CN
-- printerdrake: show banner when embedded
-- write in lilo.conf the global root= (pixel, #12312)
-
-* Thu Jan 6 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.9mdk
-- diskdrake: display a progress bar while formating (pixel)
-- localedrake: fix UIM config b/c of new UIM-0.4.5
-
-* Wed Jan 5 2005 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.8mdk
-- drakauth: "Administrator (root)" is more user-friendly than "root"
-- drakbackup (stew):
- o directories with spaces Mandrakeclub
- o perms on tarballs too (#12861)
-- drakconnect: update ADSL ISPs list (baud)
-- drakfirewall: "Samba server" is better named "Windows Files Sharing
- (SMB)" (pixel, #10585)
-- draksound, harddrake service: handle a couple of new ALSA drivers
-- handle handle spaces in SMB username (pixel)
-- keyboardrake: handle various new keyboard layouts (pablo)
-- localedrake: do not localize console in japanese (Funda Wang)
-- remove codepage= option for fs types which don't handle it (eg:
- ntfs) (pixel)
-
-* Thu Dec 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.7mdk
-- detect more floppies when dmidecode is supported (pixel)
-- drakconnect:
- o do not crash when configuring a modem
- o fix NETMASK autofilling
-- localedrake: do not localize console when using jp (Funda Wang)
-- XFdrake: make "XFdrake --auto" fully automatic (pixel)
-
-* Wed Dec 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.6mdk
-- handle more PCMCIA/CardBus cards
-- do not try to load floppy module if there's no floppy drive (#8211)
-- drakTermServ: misc GUI enhancements (pixel, stew)
-- harddrake service: configure PCMCIA host controller if needed
-- new package drakx-finish-install (pixel)
-- new mygtk2 layer
-
-* Fri Nov 26 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.5mdk
-- diskdrake: handle common geometry XXX/240/63 is quite common thus
- fixing yet another infamous "XP doesn't boot" (though it should
- already be fixed via EDD) (pixel)
-- XFdrake: don't write X config when there is none (otherwise we write
- a partial and broken X config)
-
-* Thu Nov 25 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.4mdk
-- diskdrake: more intelligent sort of fstab to handle loopback files
- or bind directory (pixel, bug anthil #1198)
-- drakboot: detect on lilo on floppy (pixel, #12213)
-- drakconnect: in "ADSL provider" step, reset the protocol on provider
- switch
-- draksound: handle new sound drivers from kernel-tmb and kernel-multimedia
-- drakupdate_fstab: fix /dev//dev/foobar in /etc/fstab (pixel, #12224)
-- harddrake service:
- o fix setting scsi and usb probell in live CD (thus fixing
- mousedrake --auto with USB mice on live CD)
- o do not die if sound never was configured (aka on first boot from a
- live CD)
-
-* Wed Nov 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.3mdk
-- bootloader: let be kernel-i686-up-64GB aware (pixel)
-- diskdrake: LVM/DM/MD fixes (pixel)
-- drakupdate_fstab: use the right encoding when creating an entry for
- /etc/fstab (pixel, #12387)
-- PPC fixes (Christiaan Welvaart, pixel)
-- service_harddrake: on startup, redo ethX aliases
-
-* Fri Nov 12 2004 Rafael Garcia-Suarez <rgarciasuarez@mandrakesoft.com> 10.2-0.2mdk
-- Rebuild for new perl
-- drakauth (pixel):
- o correctly restore pam.d/system-auth when setting "local" authentication
- o no use_first_pass on "auth sufficient pam_unix.so" line for pam_castella
-- localedrake: switch zh_CN to GBK (Funda Wang)
-- logdrake: speed it up
-
-* Wed Nov 10 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.2-0.1mdk
-- drakauth: add SmartCard authentication (pixel)
-- drakbackup: advise user about anacron (stew, anthill #1134)
-- drakconnect:
- o add support for Philips Semiconductors DSL card (blino)
- o security fix: let ifcfg files be readable only by root when a WEP
- key is set (blino, #12177)
- o update/add ADSL ISP entries (baud)
-- drakTermServ (stew):
- o create cfg dir if needed
- o use xorg.conf
- o touch /etc/dhcpd.conf.etherboot.kernel if missing
- o ignore vmnet for broadcast address
- o start reworking PXE support.
-- harddrake2: display more information about memory
-- localedrake: fix configuring fcitx IM (Funda Wang)
-- XFdrake: do not detect smartcards (pixel)
-
-* Thu Oct 28 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-27mdk
-- bootloader: run grub chrooted (gwenole)
-- diskdrake:
- o show older partition types (eg: ntfs) on x86_64 (gwenole)
- o newly created raids must have a fs_type (pixel)
-- drakconnect:
- o add support for freebox v4 ADSL modem with USB link
- o show correct strings for freebox and n9box ADSL modems
-- drakups: fix again MGE USB UPSes
-
-* Tue Oct 12 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-26mdk
-- bootloader-config: in grub menu.lst, keep previous "serial ..." and
- "terminal ..." lines (pixel, #12054)
-- drakconnect:
- o fix crash in delete wizard
- o workaround more buggy drivers that returns a bogus driver name for
- the GDRVINFO command of the ETHTOOL ioctl
-
-* Mon Oct 11 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-25mdk
-- drakconnect: workaround buggy prism2_usb that returns a bogus driver
- name for the GDRVINFO command of the ETHTOOL ioctl
-
-* Mon Oct 11 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-24mdk
-- drakconnect (blino):
- o delete wizard: remove /etc/sysconfig/network-scripts/ethX files
- o ADSL configuration:
- * remove /etc/sysconfig/network-scripts/ethX files that may have
- been created by sagem scripts
- * don't write ifcfg-ppp0 for static/dhcp connections
-
-* Fri Oct 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-23mdk
-- drakconnect:
- o fix encapsulation for chinese ISPs (Funda Wang, #10965)
- o fix H[CS]F modems configuration (adapt to new kernel packages
- names)
- o start slmodemd when installing it (thus preventing the average
- user to have to restart his machine in order to get a working
- connection)
- o try /dev/ttyS14 too for serial modems (ie internal PCI modems that
- don't need any driver but export a serial port instead)
-
-* Fri Oct 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-22mdk
-- bootloader-config: on a recent kernel, remove any existing devfs=
- kernel option in order to enable udev (pixel)
-- drakconnect: add chinese ISPs (Funda Wang, #10965)
-- XFdrake: fix parsing fully commented Section (pixel)
-
-* Wed Oct 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-21mdk
-- bootloader-config: fix installing kernel-2.6.8.1-12.1mdk (pixel)
-- drakups: fix brown paper bug in USB detection
-
-* Tue Oct 5 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-20mdk
-- drakups:
- o fix port for MGE's USB UPSes
- o fix drivers for MGE UPSes
- o fix installing nut
- o add support for "American Power Conversion" UPSes
- o restart upsd daemon once nut config is written
- o write config in pure wizard mode
- o when manual adding an UPS:
- * fix reading driver DB
- * fix reading driver from the list
-- diskdrake: do not fail with c0d0p* devices (pixel)
-- drakconnect: applying changes can be quite time expensive,
- especially with ppp and wifi connections thus let's show a "wait"
- message
-- drakfont: fix closing import dialog (#11052)
-
-* Tue Oct 5 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-19mdk
-- drakconnect:
- o ADSL DB (baud):
- * add a few new ADSL ISPs
- * fix wrong VCI which wasn't in hexa for brazililan Velox/Telemar ISP
- o manage interface (blino:
- * recompute NETWORK and BROADCAST fiels
- * use both type and device name in non-ethernet interfaces list
- * do not crash if BOOTPROTO is empty, use 'none' by default (#11899)
-
-* Mon Oct 4 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-18mdk
-- drakconnect: do not lose GATEWAYDEV if it is a non wireless one and
- a static wireless card is configured (and vice versa) (blino)
-
-* Mon Oct 4 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-17mdk
-- 64-bit fixes (gwenole)
-- drakconnect: write wlan-ng config files for prism2 drivers (blino)
-- harddrake service:
- o do not disable glx when switching from nvidia driver to nv
- (indirect support, #11285)
- o do not fail when hw db is corrupted
-
-* Mon Oct 4 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-16mdk
-- drakconnect (blino):
- o only write TYPE field in ifcfg files for xDSL connection
- o do not lose ONBOOT setting for manual/DHCP DSL connections
- o fix the "IP %s address is usually reserved" warning
- o sagem modems:
- * fix again DHCP/static connections with sagem
- * write static IP in eagle-usb.conf if needed
- * load specific modules/programs before config is written
- * do not reset IP address when configuring
- * automatically guess gateway for static connections
-
-* Fri Oct 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-15mdk
-- fix serial UPS detection
-
-* Fri Oct 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-14mdk
-- mousedrake, harddrake service: do not crash with touchpads (blino)
-- harddrake service: on stop, blacklist snd-usb-audio (#8004)
-
-* Fri Oct 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-13mdk
-- diskdrake: don't die when device-mapper is missing (eg on 2.4
- kernel) (pixel, #11834)
-- drakconnect : call the scripts in
- /etc/sysconfig/network-scripts/hostname.d like the network scripts
- are doing when changing the hostname (fredl)
-- drakups:
- o add --wizard option in order to directly run the wizard
- o do not show banner when embedded
-- harddrake:
- o list tablets with mice
- o fix UPS devices listed in both "UPS" and "unknown" classes
- o provide more data on UPS
-- localedrake:
- o set KDE in m17n emvironment if needed
- o split its menu entry in two (one for user config, one for system
- embedded in mcc)
-
-* Thu Sep 30 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-12mdk
-- disable the new gtk smart search which display an entry box (pixel)
-- preload nvram on laptops
-- print translated usage message (#5657)
-- bootloader-config, drakboot: add raid-extra-boot=mbr when installing
- on mdX (pixel, #11699)
-- diskdrake (pixel):
- o fix LVM2 support
- o fix "Illegal division by zero" when installing lilo (#11738)
- o skip unopenable devices when looking for device geometry
-- drakperm: list users rather than groups when requested for (anthill #1161)
-- drakroam: specify device to iwconfig when applying settings (blino,
- #11279)
-- localedrake:
- o fix KDE font names to match currently shiped Xfs font names (pablo)
- o fix setting fonts at install time
-- drakconnect (blino):
- o all linmodems (including Hsf and Hcf ones) are now supported with
- 2.6 kernels
- o ask to connect for modem/isdn connections again
- o better default connection detection
- o check if IP address is already used for static interfaces
- o handle madwifi (fredl)
- o try to detect default connection in adsl > isdn > modem > ethernet
- order
-- drakups: really fix refreshing UPS list when adding a new UPS though
- the add wizard
-- harddrake: list all mice and keyboards (thus lowering unknown
- hardware in hwdb-clients)
-- mousedrake, XFdrake: use input/mice instead of psaux for synaptics
- touchpads with 2.6 kernels (blino, #11771)
-- net_applet (blino):
- o do not destroy/re-create menu if state hasn't changed, or else the
- menu may disappear without any reason
- o fix again running processes detection
-- net_monitor (blino):
- o fix start/stop
- o check every 5 seconds (instead of 20) for new or disconnected
- interfaces (#11780)
-- printerdrake: misc fixes (pixel)
-- XFdrake: use driver "keyboard" instead of "Keyboard" (fix Xorg-6.8
- support) (pixel)
-
-* Fri Sep 24 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-11mdk
-- handle aes-i586 instead of aes (pixel, #11588)
-- bootloader-config: fix typos in usage (pixel)
-- diskdrake (pixel):
- o get geometry from EDD
- o don't add /dev/pts line in fstab anymore (already done in initrd
- and by udev)
- o log more explanations
- o remove every PVs when destroying a VG (#11579)
- o handle renamed devices (eg: hde->hda or hda->sda)
- o silently ignore encrypted filesystems with no encrypt_key
-- drakconnect (blino):
- o zeroconf:
- * really enable zeroconf if zeroconf is requested
- * write blank zeroconf hostname if zeroconf is disabled
- * fix disabling zeroconf
- * do not disable not installed (prevent warnings in console)
- * zcip isn't a service,
- * stop tmdns service if zeroconf is disabled,
- o move "Start at boot" step for lan-like adsl/cable connections
- o do not disable ifplugd support for wireless cards
- o do not let speedtouch-start launch connection
- o fix installing kernel packages for winmodems
- o fix /dev/modem symlink on ttySL0 (#8947 again)
- o use avmadsl option for capi cards to use settings generated by
- drdsl
- o PPPoA: fix reseting vpi and vci if vpi equals zero
- o ADSL provider DB: rename "Télé2 128k " as "Télé2"
-- drakupdate_fstab: allow SYNC=no option in /etc/sysconfig/dynamic
- (blino)
-- drakups:
- o refresh UPS list when adding a new UPS though the add wizard
- o fix automatically detect/add an UPS
- o default to automatic detection
-- localedrake:
- o add support for SKIM IM
- o install x-unikey when switching to vietnamese
- o always use "Sazanami Gothic" font in japanese
-- mousedrake: prevent a broken X configuration to break mouse
- configuration (pixel)
-- net_monitor: remove connection time timer if connection fails (#11590)
-- XFdrake: allow ignoring X config file when it contains errors (pixel)
-
-* Fri Sep 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-10mdk
-- drakbackup: use radio buttons in media selection (wildman)
-- drakconnect (blino):
- o better looking description list in drivers list (me)
- o remove the "speedtch off" alias (fix mdk10.0 upgrade)
- o don't write aliases for pcmcia cards, thus fixing the pcmcia
- service startup
- o stop capi service before new config is written so that capiinit
- can unload the old driver
- o make isdn over capi work again
- o do not ask which driver to use when only capidrv is supported
- o install unicorn-kernel package for Bewan modems if available
- o add "Unlisted - edit manually" entry in modem provider list (#11549)
-- harddrake service (blino):
- o probe firewire and pcmcia network devices too
- o update iftab when new ethernet devices are detected
-
-* Wed Sep 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-9mdk
-- drakconnect:
- o don't create empty pppoe.conf if the package isn't installed
- o load modules and run start programs
-- bootloader-config: fix crash when when removing some break entries (pixel)
-- keyboarddrake, XFdrake: better turkish support (pablo)
-
-* Tue Sep 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-8mdk
-- localedrake: offer to select IM if language has one preselected
- (eg: CJKV, else option is only availlable in advanced mode)
-- harddrake service: adapt to new nvidia driver location
-
-* Tue Sep 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-7mdk
-- add man pages for drakbackup and drakconnect
-- drakauth: misc fixes (stew)
-- drakconnect:
- o misc cleanups (blino)
- o setup slmodem (blino)
- o workaround buggy eth1394 that returns a bogus driver name for the
- GDRVINFO command of the ETHTOOL ioctl (so that we set a
- sensible name for firewire network adapters in GUIes)
-
-* Tue Sep 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-6mdk
-- drakconnect: install firmware if needed for CAPI devices (blino)
-- harddrake:
- o detect not yet supported ethernet cards too
- o detect more bridges and the like
-- scannerdrake: try harder not to detect non scanner USB devices (#7057)
-
-* Tue Sep 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-5mdk
-- drakbackup:
- o fix crashes in CD/Tape setup (stew)
- o fix wizard's UI behavior (Nicolas Adenis-Lamarre)
-- drakconnect (blino):
- o handle CAPI drivers
- o add support for xDSL over CAPI (eg: AVM cards)
- o fix pppoe configuration
-- draksec: move help from tooltips into separate page (#9894)
-- scannerdrake: fix "dynamic()" in scannerdrake to do not contain
- anything interactive (till)
-
-* Mon Sep 13 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-4mdk
-- drakbug_report: fix crash
-- XFdrake: adapt to new proprietary package naming (pixel)
-
-* Fri Sep 10 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-3mdk
-- net_applet (blino):
- o fix crash on connect/disconnect (#11389)
- o refresh status on every 5 second
-
-* Fri Sep 10 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-2mdk
-- description
- o split drakxtools description in drakxtools and drakxtools-newt
- o describe missing tools
- o sanitize tool names
-- drakconnect: do not ask twice if network should be started on boot
- for ADSL modem (blino)
-- keyboarddrake, XFdrake (pablo):
- o fix compose:rwin
- o fix some keyboard layout on xorg in order to match to match x.org
-
-* Fri Sep 10 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-1mdk
-- fix console UIs (pixel)
-- drakboot: do not kill the whole bootsplash wizard when embedded (blino)
-- drakconnect: fix cnx status in "internet" interface (blino)
-- harddrake service: autoconfigure mice if needed
-- localedrake: fix ENC setting when IM is disabled
-
-* Thu Sep 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.27mdk
-- localedrake:
- o really reset IM on language switch
- o set ENC and locale specific stuff even when IM is disabled
- o fix thai IM
-
-* Thu Sep 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.26mdk
-- bootloader-config: handle raid-extra-boot (pixel, #11350)
-- drakboot: handles more cases where lilo wants to assign a new Volume
- ID (pixel)
-- localedrake:
- o install miniChinput when configuring chinput
- o fix miniChinput configuration for Singapore
- o handle languages with default IM w/o any configured IM (aka keep
- "none" user choice) but default to per locale default IM when
- switching between locales
- o fix configuration of IM when altering depending on encoding (eg:
- miniChinput)
-
-* Thu Sep 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.25mdk
-- bootloader-config (pixel):
- o fix regexp to work with "linux-2.6.8.1-10mdk"
- o handle lilo "static-bios-codes" option
- o prevent LILO from reading from tty
- o only expand symlinks when renaming "linux" into the kernel version
- based label (eg: "2681-10")
-- drakboot:
- o ensure ~/.dmrc is owned by user else GDM complains about
- o handles the lilo case where it wants to assign a new Volume ID (pixel)
-- drakconnect:
- o ignore rpm's backups (#10816)
- o always update iftab when config is written (blino)
- o detect slamr, slusb and ltmodem modules for modems (fredl)
-- drakupdate_fstab: handle options in any order (fix harddrake service
- regarding amove media as well as regarding cdroms, burners and dvds)
-- harddrake service: log which tools are runned
-
-* Wed Sep 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.24mdk
-- drakboot (blino, #11282):
- o update splash when removed too
- o use Mandrakelinux theme by default
- o don't give theme name to remove-theme
-- drakconnect: fix empty "manage interface" (blino, #11287)
-- drakperm: fix freeze (#11274)
-- harddrake service: fix X11 autoconfiguration
-
-* Tue Sep 7 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.23mdk
-- bootloader-config: take care of symlink based bootloader entries (pixel)
-- diskdrake (pixel):
- o ignore first line of /proc/swaps
- o partially handle /udev/xxx device names in fstab
- o ignore rootfs "device"
- o don't warn for loopback files
-- drakbug: fix --report and --incident (daouda)
-- drakconnect (blino):
- o "delete network interface" wizard:
- * use long device names
- * be aware of internet service -> regular ifcfg files
- o misc fixes (especially regarding sagem ADSL modems)
-- harddrake service: really autoconf TV cards
-- more synaptics fixes (blino)
-- use "users" options for removable devices (so that users can unmount
- them if the devices were mounted by root) (blino)
-
-* Mon Sep 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.22mdk
-- diskdrake (pixel):
- o detect linux software raid magic
- o detect LVM2
- o misc fixes
- o fix displaying "mdmd0" instead of "md0"
-- drakboot: ensure we do not enable autologin w/o any user
-- drakconnect (blino):
- o fix detection in 2.4 kernel for net devices with high traffic
- o only complain about kernel-2.4.x for h[cs]f modems
- o fix kppp config reread
- o read kppp config when user dir is configured
- o use /dev/modem if no modem was detected (do not crash when we edit
- a connection whose modem is unplugged)
-- harddrake service: everything should be done automagically now
-- localedrake:
- o list specific packages to install for japanese when using SCIM
- o install scim-m17n as well for generic SCIM configuration (more
- input methods)
- o log more explanations
- o set QT_IM_MODULE too since it's needed by Qt-immodule-20040819
- (UTUMI Hirosi)
- o disable translations on console for kn, pa, ug too (pablo)
-
-* Mon Sep 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.21mdk
-- misc GUI enhancements
-- diskdrake: be more failsafe with half broken existing raids (pixel)
-- drakconnect: fix crashes (#11100)
-- harddrake service: really add module for storage controllers, AGP
- controllers, TV cards
-- mousedrake, XFdrake: fix synaptics configuration (blino)
-
-* Fri Sep 3 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.20mdk
-- detect more devices
-- misc GUI cleanups
-- netconnect: support DHCP and static for sagem devices (blino)
-
-* Thu Sep 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.19mdk
-- add icons to most tools' windows
-- drakboot: do not crash if default autologin or default desktop
- doesn't exist (blino)
-- drakupdate_fstab: do not use supermount by default for removable
- devices (blino)
-- localedrake:
- o enable SCIM for Amharic language
- o fix missing banner title
-- net_applet: tell when internet connection is not configured (blino)
-- printerdrake: misc enhancements (till)
-- service_harddrake: add modules to conf files if a tv card is detected (blino)
-
-* Tue Aug 31 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.18mdk
-- drakclock (warly):
- o check if the ntpdate command succeed or not
- o do not perform a date command when we use ntpdate
- o fix hour setting though mouse on the clock
- o make the hour tick shorter
- o repaint the calendar (especially when the day changed)
-- drakconnect:
- o fix crashes (#11100)
- o misc fixes (blino)
-- drakfirewall: use the loc zone in sharewall policy only if the loc
- interface exists (florin, #10539)
-- harddrake2:
- o add UPS class (fredl)
- o be more enable friendly regarding themes (eg font size properly
- adapt to theme changes)
-- net_applet: make it start again
-
-* Mon Aug 30 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.17mdk
-- drakclock: fix layout so that NTP frame is not badly cut on small
- resolution (#10971)
-- net_applet:
- o allow to connect/disconnect from net_applet
- o launch net_monitor once
- o launch net_monitor in background
-- printerdrake:
- o add column to show whether the printers are enabled or disabled to
- the list of available print queues in the main window
- o add command to the edit-printer window to enable and disable print
- queues
- o fix managment of "--expert" command line option
-
-* Sun Aug 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.16mdk
-- drakconnect: add metric support according to connection type (blino)
-- drakroam (Austin):
- o fix "Add" button behavior
- o don't show channel 0 for auto mode
- o move DHCP column to left for better sizing
-- drakupdate_fstab: do not mount and add/delete in fstab when many
- partitions (blino, #11005)
-- logdrake: fix displaying only last parsed file
-- printerdrake (till):
- o add support for daemon-less CUPS client
- o fix graying out of buttons/menu entries in the main window
- o fix unrecognized local queues when the spooler daemon is not
- running during printerdrake startup
-- XFdrake: fix crash on resolution change
-
-* Fri Aug 27 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.15mdk
-- GUI cleanups:
- o drakboot: fix canceling first step
- o localedrake: let's look & behave like a wizard (fix cancel on
- country choice)
-- drakconnect: detect Intel & ATI PCI modems
-- localedrake: really install proper packages depending on (locale,
- input method) tuple (and not just those depending on IM)
-- XFdrake: add dell D800 specific modeline and resolution (Olivier
- Thauvin)
-
-* Thu Aug 26 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.14mdk
-- fix ddcprobe for other archictectures
-- drakconnect: restart network for non ethernet adsl devices (blino)
-- harddrake service:
- o add --force parameter (#9613)
- o do run configurator
- o restore bootsplash (blino)
-- printerdrake: prepare support for daemonless CUPS client (till)
-- XFdrake: fix synaptics configuration (blino)
-
-* Wed Aug 25 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.13mdk
-- fix modules conf parsing (blino)
-- ddcxinfos: extensive rewrite and cleanups to use the new int10
- interface and a last-resort means to get VBE/EDID information from
- special -BOOT kernel during early boot (gwenole)
-- drakconnect (blino):
- o add Siol (the bigest ADSL provider in Slovenia) in ADSL providers
- DB (Gregor Pirnaver)
- o allow multiple aliases per host
- o always add an hostname alias and add it on the loopback device
- (#10345)
- o do not ask the user to do an inifinite looping in MCC ...
- o prevent recognize ppp0 as both modem and adsl (#10772)
-- drakroam: fix crash when config directory does not exist (#10935)
-- listsupportedprinters (till): introduce it for auto-generation of
- Mandrakelinux hardware support DB
-- localedrake:
- o fix country selection (blino, #10938)
- o install proper packages depending on (locale, input method) tuple
-- mousedrake, XFdrake (blino):
- o synaptics touchpad support
- o fix wacom support
-- printerdrake:
- o fix crash
- o handle print queues with the "lbp660" and "ml85p" drivers (which
- directly communicate with the printer instead of sending the
- output to a CUPS backend) (till)
- o prevent queues using "lbp660" and "ml85p" from opening message
- windows when the print queues are auto-generated by
- dynamic/hotplug (till)
- o if the user gets an error/warning message during setup of a
- lbp660/ml85p queue, he is automatically put back to the previous
- step in the add-printer wizard (till)
- o do not embedd warning messages in the add-printer wizard, as they
- have no "Previous" button (till)
-
-* Mon Aug 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.12mdk
-- really fix drakxtools build for ppc & sparc
-- use sysfs to detect firewire devices thus fixing eth1394 detection
- (blino)
-- drakconnect (blino):
- o ensure iftab is always up-to-date
- o fix spurious ifcfg-ippp0 creation
-- net_monitor (blino):
- o do not assume internet isn't configured if obsoleted cnx scripts
- do not exist
- o fix connect button sensitivity
- o watch connection time, not disconnection time
-- printerdrake:
- o added fully automatic, non-interactive, X-less print queue set up
- by the "autosetupprintqueues" command, preferrably to be started
- by hotplug
- o fix file check for package installation
- o fix problem of Brother laser printer on parallel port not showing
- its name in auto-detection result.
- o let printer name, description, location be entered after
- determining the model in the add printer wizard
- o let default print queue name be derived from the model instead of
- being "Printer", "Printer1", ...
- o simplify print queue name generation in non-interactive printer
- setup
- o fix "Previous" button in the test page step of the add printer
- wizard
-- XFdrake: do not set DRI mode anymore which is not needed anymore
- with latest PAM
-
-* Thu Aug 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.11mdk
-- drakconnect: use mac_ieee1394 descriptor in iftab for firewire links
- (WIP) (oblin)
-- fix drakxtools build for ppc & sparc
-- keyboarddrake: fix it not modifying xkb (pixel)
-- printerdrake:
- o fix crash
- o prevent potential crashes (blino)
- o do not ignore some internal errors (blino)
- o fix unloaded "usblp" kernel module before local printer
- auto-detection (blino)
- o do not install anymore gimpprint (included in gimp2_0) (till)
- o do not configure GIMP and OpenOffice.org which were patched so
- that they do not need anymore to be configured regarding print
- queues (till)
- o text fix for scanners in HP's multi-function devices (till)
-- service_harddrake: check usb controllers on boot (oblin, #9613)
-
-* Wed Aug 18 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.10mdk
-- drakconnect (oblin):
- o do not write 'ifcfg-Manually load a driver' file
- o fix sagem pty in pppd config
- o prevent boot from timeoutingforever if modem can't be synchronized
-- localedrake: fix default IM setting when switching language (#10831)
-- net_applet: fix tooltip's messages
-- harddrake: add a PCMCIA controllers class
-
-* Tue Aug 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.9mdk
-- drakboot:
- o install acpi and acpid if needed (pixel, #10760)
- o allow to choose net profile in advanced mode (oblin)
- o enable to allow to choose a video mode if boot is not graphical
- while configuring bootsplash (oblin)
-- drakbug: better wrapping
-- drakconnect (oblin):
- o do not use noipdefault pppd option for pptp connections
- o fix pppoe with sagem ADSL modem
- o write MAC addresses into /etc/iftab
- o pppoe/pptp fixes
-- drakroam: support multiple roaming daemons support (oblin)
-- drakupdate_fstab: fix adding usb medias (oblin, #10399)
-- drakvpn: do not assume drakvpn is already configured if the tunnel
- file is made of comments only (oblin)
-- localedrake: handle turkmen and tatar (pablo)
-- net_monitor:
- o let's be more l10n-friendly
- o fix default connection time (Fabrice FACORAT)
-- XFdrake (pixel):
- o do not use XF86Config-4 anymore
- o handle /etc/X11/xorg.conf
-- typo fixes (#10713, ...)
-
-* Wed Aug 11 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.8mdk
-- bootloader-config: log command on mkinitrd faillure
-- drakbug (olivier):
- o update product list and fix case (bugzilla is case sensitive)
- o fix product, component and version for bugzilla
- o fix bugzilla url
-- drakhelp (daouda):
- o use webclient-kde instead of konqueror
- o add epiphany browser
-- drakroam:
- o initial import of wlandetect version, from Austin Action
-- mousedrake, diskdrake: create /etc/udev/conf.d/xxx.conf as well as
- devfsd rules (pixel)
-- net_monitor:
- o add a horizontal separator in stats to prevent visual disguts
- between supposed non aligned labels
- o fix looking aka vertical alignment of labels (Fabrice FACORAT, #10300)
- o fix resizing (Fabrice FACORAT, #10300)
-- XFdrake: s/XFree/Xorg/ (pixel)
-
-* Mon Aug 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.7mdk
-- diskdrake: switch from raidtools to mdadm (pixel)
-- drakboot: sort themes, users and WMs lists
-- drakupdate_fstab: do not complain about ips in /etc/fstab (pixel)
-- localedrake:
- o changed default font for gb2312 (Funda Wang)
- o rename the "More" button as "Other Countries" (pixel)
-- net_applet:
- o do not die when gateway canot be guessed (Joe Bolin)
- o fix status toolip
- o allow multiple instances, but only one per user (Joe Bolin)
-
-* Fri Aug 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.6mdk
-- add a 6px border around scrolled TextViews (Fabrice FACORAT, #10561)
-- drakbackup: fix crash when selecting an entry in pull down menus
-- localedrake:
- o fix configuring IM
- o fix x-unikey support (Larry Nguyen)
-
-* Fri Aug 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.5mdk
-- drakclock: if ntp is used, get the new time before updating the
- hwclock (Emmanuel Blindauer, #10537)
-- drakconnect (oblin):
- o install kdenetwork-kppp-provider when configuring a modem
- o fix external ISDN modem configuration (Anthill #1033)
- o use ifup/ifdown rather than restarting the network service for
- ADSL & ISDN
-- draksound:
- o add support for ALSA on PPC and SPARC
- o update sound drivers list
- o map dmasound_pmac <=> snd-powermac (Christiaan Welvaart)
-- fix autologin somewhat (pixel)
-- localedrake:
- o add x-unikey support for Vietnamese
- o switch korean to scim-hangul IM by default
-- update ppc support (Christiaan Welvaart, pixel)
-- XFdrake: replaced XFree86 and XFree with Xorg (pixel, #10531)
-
-* Wed Aug 4 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.4mdk
-- don't set /etc/sysconfig/desktop anymore, configure ~/.wmrc,
- ~/.gnome2/gdm and ~/.desktop instead (pixel)
-
-* Tue Aug 3 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.3mdk
-- bootloader-config (pixel):
- o try to keep the order of kernel options
- o don't allow unknown kernel names to mess everything
- o handle win4lin kernels
-- draksec: sanitize GUI:
- o upcase fields values
- o fix spacing issues
-- localedrake:
- o fix current IM setting reading
- o reset IM setting when switching to a new IM
- o support nabi input method too
-- net_applet: automatic launch for KDE, GNOME and IceWM (daouda)
-- misc typo fixes
-- diskdrake: fix LMV resizing (anthill #994) (pixel)
-- service_harddrake: fix nuking x.org config on 2.4.x <-> 2.6.x kernel
- switch (#10487) (pixel)
-
-* Fri Jul 30 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.2mdk
-- drakbackup (stew):
- o fixes Anthill #1009 and #1010 (DVD recording, disk quota)
- o direct-to-tape enahancement
-- drakconnect:
- o do not restart the network service if ethernet modem
- o only restart network for ADSL if we use an ethernet modem
- o fix sagem ADLS modem support (olivier)
-- draksec: sync with msec-0.44
-- draksplash:
- o do not crash when the image format is unknown
- o fix preview refresh
-- localedrake:
- o enable to choose input method in advanced mode
- o support im-ja input method too
-- service_harddrake: do not offer to configure mouse if we've already
- automatically reconfigure it b/c of 2.4.x vs 2.6.x switch
-
-* Thu Jul 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10.1-0.1mdk
-- diskdrake: fix Compaq Smart Array support (pixel)
-- drakauth: misc (vincent)
-- drakbackup, drakTermServ: fix crashes on append_set (stew)
-- drakbug: (daouda)
- o scroll down text while typing
- o many cleanups
- o stable releases are 'Official' and 'Community'
-- explanations: only log succesfull renamings
-- harddrake GUI: do not automatically configure removable media but
- use diskdrake
-- modules: read modutils or module-init-tools config depending on
- which kernel is run (pixel)
-- net_monitor: save/restore options
-
-* Wed Jul 21 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-57mdk
-- drakauth (vincent):
- o restart services if needed
- o describe authentification kinds
- o modify nss_path one to sub config winbind for AD
-- drakconnect: misc bug fixes (olivier)
-- localedrake: fix xmodifiers setting which is broken since
- perl-MDK-Common-1.1.13-1mdk
-- net_monitor:
- o fix GraphicalContext memory leak (olivier)
- o translate connection type (Fabrice Facorat)
- o fix spacing (from Fabrice Facorat, #10300)
-
-* Mon Jul 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-56mdk
-- bootloader-config (pixel):
- o save prior boot loader config file (#10072)
- o don't unset prompt when timeout is undefined (and don't care when
- timeout is 0)
- o also add long name when adding add short name
-- net_monitor:
- o add a border spacing of 5 pixel (Fabrice Facorat, #10299)
- o disable the connect button if up interface is found (there is
- currently no reliable way to find the gateway interface)
- (olivier blin)
- o use ifup/ifdown to connect/disconnect (olivier blin)
- o no need to be root to monitor connection (olivier blin)
-- drakconnect (olivier blin):
- o make connection status check work as non root
- o do not write wireless encryption key if empty
- o use blacklist too for adsl connections
-
-* Sat Jul 17 2004 Daouda LO <daouda@mandrakesoft.com> 10-55mdk
-- remove historical consolehelper files (pam.d and console.apps)
-
-* Thu Jul 15 2004 Olivier Blin <blino@mandrake.org> 10-54mdk
-- drakboot: use bootloader and Xconfig instead of detect-resolution
-- net_applet:
- o use drakconnect to configure network
- o use 'ip route show' to find the gateway device when no GATEWAYDEV
- is defined
-- drakauth: add "Active Directory" through winbind (pixel)
-- bootloader-config: fix installation on floppy (#10260) (pixel)
-- drakedm: typo fix (lost -> lose) (rvojta)
-
-* Thu Jul 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-53mdk
-- bootloader-config (pixel):
- o nicer "usage: ..."
- o add actions "add-entry" and "remove-entry"
- o add option --label
- o add option --chainload
- o rename --vmlinuz to --image
- o remove unneeded spaces in append=" foo"
- o handles "optional" in LILO
-- drakbackup: fixes for Anthill #927 & #929 (filenames with spaces,
- .backupignore, gui behavior)
-- drakboot: update bootsplash even if framebuffer was disabled (oblin)
-- XFdrake: add 1024x480 (pixel, #5192)
-- redo modules managment (prepare for reading either modprobe.conf or
- modules.conf based on the running kernel version) (pixel)
-- fix build with new glibc
-
-* Mon Jul 5 2004 Pixel <pixel@mandrakesoft.com> 10-53mdk
-- drakxtools-backend needs ldetect-lst (for complete_usb_storage_info())
-
-* Mon Jul 5 2004 Pixel <pixel@mandrakesoft.com> 10-52mdk
-- ensure proper upgrade: explictly tell urpmi that old drakxtools-newt
- conflicts with drakxtools-backend
-- drakauth: more features (vincent guardiola)
-- drakconnect: pptp support (#6515) (olivier blin)
-- localedrake: configure menu-method's language too so that altering
- language is done for KDE menu entries too (instead of just programs'
- messages) (Thierry Vignaud)
-
-* Thu Jul 1 2004 Pixel <pixel@mandrakesoft.com> 10-51mdk
-- create package drakxtools-backend
-- bootloader configuration: misc fixes (pixel)
-- XFdrake: fix typo causing multiple "Keyboard" entries in XF86Config
- (pixel, #10163)
-
-* Thu Jul 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-50mdk
-- drakupdate_fstab (oblin): fix moving mount point (#6982, #10175)
-- drakauth: for Active Directory, allow: Kerberos, SSL/TLS, simple and
- anonymous (pixel)
-- net_monitor (oblin):
- o always display a speed label for transmitted graph
- o allow the user to use different scales for received and
- transmitted (#10177)
- o always draw an arrow next to transmitted amount
-
-* Tue Jun 29 2004 Pixel <pixel@mandrakesoft.com> 10-49mdk
-- add bootloader-config (used by bootloader-utils and bootsplash scripts)
-- drakboot (pixel):
- o major backend rewrite b/c of code sharing with new installkernel
- o when adding a new kernel, have a nicer new name for conflicting
- entry
- o when modifying kernel parameters in all entries, skip the
- "failsafe" entry (#10143)
- o when modifying a symlink, ensure we also use the long name for the
- old symlink in the existing entries
-- drakconnect (Olivier Blin):
- o never disable "DHCP host name" entry box, it shouldn't be linked
- with "Assign host name from DHCP address" checkbox (#2759, #9981)
- o unblacklist sis900 since its link beat detection works with latest
- kernels
-- draksound: remove unneeded "above" lines in modules::write_conf
- (Olivier Blin) (#8288)
-- ugtk2 layer: catch missing wizard pixmap, otherwise we end up with
- unshown windows and error messages can't pop up (pixel)
-- don't require mkbootdisk
-
-* Wed Jun 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-48mdk
-- drakboot (oblin):
- o ask for bootloader choice when framebuffer isn't configured (#9925)
- o do not update bootsplash in autologin wizard
-- drakclock: be mouse wheel aware (oblin, #9926)
-- drakconnect (olivier blin):
- o blacklists the sis900 driver (#9233) for network hotplugging
- o properly handle ascii WEP keys (#9884)
- o rephrase zeroconf dialog (cybercfo)
-- drakxtv: fix tv driver not loaded on boot (oblin, #9112)
-- localedrake: new default IM for CKJ
- o set up SCIM for chinese
- o set uo SCIM+UIM for japanese
-- mousedrake: load usbhid instead of hid is now named (pixel, svetljo)
-- XFdrake (pixel):
- o better auto monitor config
- o sync with bootsplash's detect-resolution
-
-* Tue Jun 22 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-47mdk
-- add net_applet (daouda)
-- drakconnect: update ADSL ISP database (baud <baud123@tuxfamily.org>):
- o default to pppoa method whenever encapsulation is 6 (PPPoA VCmux),
- o default to pppoe method whenever encapsulation is 1 (PPPoE LLC)
- o add new ISP entries : Belgium ADSL Office, Brasil (4 ISP),
- Bulgaria ISDN/POTS, Greece, Switzerland BlueWin / Swisscom Telecom
- Italia/Office Users, Turboline Austria Telstra,
-- harddrake2: do not display version number in title bar
-- shorewall configuration: accept from fw to loc (florin)
-
-* Mon Jun 21 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-46mdk
-- harddrake service:
- o do not uselessy fork shells
- o faster auto mouse reconfiguration on major kernel switch
- o fix logs of newly added hardware
- o fix mouse autoconfiguration done on every boot instead of on 2.4.x/2.6.x
- switches
- o handle newly added wireless network card (broken since early 2004/02)
- o log error when we cannot run the config tool or when it isn't executable
- o only log about nv <-> nvidia swtich only if we do have to perform it
-- harddrake GUI:
- o display media type for mass storage devices
- o enhanced data for mice and hard disks
- o fix undisplayed fields
- o show disk ID if we cannot guess its vendor string from it
- o show splited vendor and description fields for USB hard disks too
- o really ensure that "identification" section is displayed first
-
-* Fri Jun 18 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-45mdk
-- authentication: more LDAP work (pixel)
-- drakbackup: fix .backupignore issue (stew)
-- drakupdate_fstab: add support for floppies
-- harddrake service:
- o mouse: autoreconfigure it when switching between 2.4.x and 2.6.x kernels
- o network: automatic config with DHCP of new cards
- o removable media: automatically config
- o x11:
- * do not automatically swtich from nv to nvidia driver (b/c the
- nvidia driver is buggy on some machines)
- * automatic configuration of new card
- o only stop the boot progress bar if we've a non automatic tool to run
-- harddrake GUI:
- o show more data on SCSI disks
- o do not display USB disks in both harddisks and unknown sections
- o fix cpu and SCSI hd help
- o show right driver for USB devices (from /proc/bus/usb/devices)
- o enhanced help
- o show detailled data on bus connection
-- interactive layer: display "cancel" button instead of "previous" in
- wizards' first step
-
-* Mon Jun 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-44mdk
-- diskdrake: fix hde devfs link (pixel)
-- drakconnect: start to make strings more helpfull
-- drakperm: enable drag 'n drop (only when looking at customized settings)
-- draksec: do not show empty pages in notebook if security level is not set
-- draksplash: make it work again...
-- harddrake2:
- o do not list usb hard disk as unknown (fix doble entries)
- o fix misdetection of nvidia nforce ethernet cards (broken since forcedeth
- replaced nvnet on 2004-01-21 in MDK10's ldetect-lst)
- o ethernet card detection: only rely on driver for matching ethernet cards,
- thus preventing mislisting of other/unwanted devices and enableing to catch
- ldetect/ldetect-lst/detect_devices bugs where some devices are *not* seen by
- drakx and drakconnect.
- o display more data about hard disks (geometry, number of primary/extended
- partitions)
-
-* Wed Jun 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-43mdk
-- drakauth: add "Active Directory" authentication (WIP) (pixel)
-- drakbackup: (stew)
- o deal with kernel ring buffer that is flooded with msgs for tape
- device detection (#9877)
- o GUI fixes
- o enforce binary ftp transfers
-- drakconnect: (poulpy)
- o switch ONBOOT to on/off for isdn and adsl connections
- o new way to specify how to up connection for pppoe(xDSL) and
- others(ADSL)
- o rename /etc/ppp/peers/adsl as /etc/ppp/peers/ppp0 as we now use
- ifup-ppp for adsl, it will look for ppp0
-- drakservices: add descriptions for NFS and SMB (#9940) (pixel)
-- harddrake service: run it earlier (aka before network service)
-- XFdrake: add resolution 1920x1200 called WUXGA (used by Dell Laptops
- Inspiron 8500, 8600 and Latitude D800) (#6795) (pixel)
-- XFdrake, drakedm: switch to x.org (pixel)
-
-* Tue Jun 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-42mdk
-- handle the nfs/smb service disabled (Olivier Blin)
-- drakconnect:
- o handle interface w/o ip addresses
- o make LAN wizard more user friendly: move "manual choice" after
- detected interfaces
- o detect again ethernet interfaces that are down (got broken in 10-38mdk)
-- drakboot:
- o do not write partial GRUB config file (thus garbaging previous config) if an
- error occured
- o fix "two windows appears on canceling after an exception" bug
-
-* Fri May 28 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-41mdk
-- drakconnect:
- o fix protocol switching from manual to DHCP when stepping back in
- wizard
- o read VLAN and IP aliased interfaces config too
-- drakbackup: fix typo in tape restore (Federico Belvisi).
-
-* Fri May 28 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-40mdk
-- drakconnect:
- o blacklist loopback interface in new detection scheme
- o switch from internet service to regular ifcfg files (poulpy) (WIP)
- o fallback on sysfs in order to get driver and card description when
- ethtool is not supported (eg: ipw2100 driver for intel centrino)
-
-* Thu May 27 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-39mdk
-- diskdrake (pixel):
- o allow /home on nfs (#7460)
- o disable package instead of removing nfs-utils or samba-server
- (when "diskdrake --fileshare" disables a export kind) (#9804)
-
-* Thu May 27 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-38mdk
-- detect aliased network interfaces too
-- drakfirewall: handle BitTorrent (robert vojta)
-- keyboardrake (pablo):
- o support more keyboards
- o Nepali uses devanagari script
-- localedrake: handle Latgalian language (pablo)
-- net_monitor: ignore sit0
-- switch Japanese input method to "uim" (pablo)
-
-* Tue May 25 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-37mdk
-- drakbackup: fix dropped .txt files when running mkisofs (stew)
- (Anthill #799)
-- drakconnect (#9669):
- o prevent identification mismatch on ethtool results
- o fix card name lookup when driver does not support GDRVINFO command
- from ETHTOOL ioctl and there's only one card managed by this
- driver
-- switch from deprecated OptionMenu into new ComboBox widget
-
-* Mon May 24 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-36mdk
-- ugtk2:: still provide compat stuff for OptionMenu widget (#9826)
-- drakTermServ: add /etc/modprobe* mount points for client hardware
- config (stew)
-
-* Wed May 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-35mdk
-- authentication:
- o fix winbind configuration and do the same for LDAP
- and NIS (vincent guardiola, pixel)
- o install autofs for nis authentication (florin & fcrozat)
-- diskdrake: handle LABEL=foobar in /etc/fstab (pixel)
- (ex2/3 only for now, no xfs)
-- drakclock: do saner check for ntp package (Robert Vojta)
-- drakconnect:
- o fix speedtouch ADSL model (using kernel mode) (poulpy)
- o better LAN vs wireless filtering by using SIOCGIWNAME ioctl)
- o handle ipw2100 wireless driver
- o do not offer to set DOMAINNAME2 since it is never saved nor read
- (#9580)
- o kill "speedtouch and ISDN only work under 2.4 kernel" warnings
- (poulpy)
-- drakfirewall: open more ports for samba
-- harddrake service: do not run XFdrake in automatic mode
-- misc cleanups & bug fixes (pixel)
-- scannerdrake: fix firmware installation (till)
-- XFdrake (pixel):
- o can now configure monitors on heads > 1
- o do not succeed automatic configuration (not auto_install) when
- there is many cards (as requested by Joe Bolin)
- o speed-up monitor choosing dialog when {VendorName} is undef
- o vmware doesn't like 24bpp (#9755)
- o defaults to the greatest depth rather than 24
-- do not prefer devfs names when reading /proc/mounts (which uses
- devfs names) (pixel)
-- ugtk2 layer: transparently replace obsolete OptionMenu widget by the
- new ComboBox widget
-
-* Tue May 4 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-34mdk
-- drakconnect:
- o fix last step of interface destruction wizard
- o wizard: take ISDN protocol into account for people outside Europe
- to use it (poulpy)
-- drakupdate_fstab: fix adding twice an entry in fstab, one with the
- old name, one with the devfs name (pixel)
-- XFdrake: kill XFree86 3.x support (pixel)
-
-* Fri Apr 30 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-33mdk
-- create ~/tmp if needed when running a program
-- device managment: fix sdX <=> scsi devices mapping (especially for
- USB devices) (pixel)
-- drakclock: time is displayed as HH:MM:SS with RTL languages
-- drakconnect (poulpy):
- o manage interface: more gui layout fixes
- o try harder to locate firmware on windows partition (#3793)
- o no need to up ippp0 in net_cnx_up, it's been up'ed at startup
-- harddrake gui: list SATA controllers in their own category (anthill
- #741)
-- harddrake service: log removed/added hw
-- localedrake: use utf8 if any of the languages chosen is utf8, not
- only the main one (pixel)
-
-* Fri Apr 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-32mdk
-- diskdrake, XFdrake: make --auto really not interactive
-- drakconnect:
- o wizard: fix ISDN support (poulpy)
- o manage interface: smoother layout
-- drakxtv:
- o fix brown paper bag bug regarding tv cards detection
- o sync card and tuner lists with 2.6.6-rc2
-- harddrake GUI: split USB sontrollers and ports
- o new data structure
-- harddrake service: autoconfigure X11, sound and removable media
-- log more actions regarding modules managment in explanations
-
-* Tue Apr 20 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-31mdk
-- drakbackup: some drives don't return "ATIP info from disk" (stew)
-- drakclock: check /etc/init.d/ntpd instead of /etc/ntp.conf for ntp
- installation (daouda)
-- drakfont: fix font importing (#9423) (dam's)
-- drakconnect (manage interface): fix insensitive IPADDR, NETMASK and
- GATEWAY fields by default are not sensitive by default in DHCP
- (broken by #8498 fix) (poulpyà
-
-* Thu Apr 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-30mdk
-- fix inverted translations in french catalog (#8217)
-- fix drakxtools postuninstall script
-- drakbackup (stew):
- o remove config-info (will be in a man page)
- o reuse more code from ugtk2 layer regarding cursors managment
- o combine/rework restore code
-- drakTermServ (stew):
- o do not move existing dhcpd.conf
- o add an include for terminal-server instead
-- drakups: update to new libconf-0.32 API (dam's)
-- harddrake service: log nv<=>nvidia switches
-- localedrake: set default font to use in KDE for devanagari and
- malayalam scripts
-- ugtk2: fix faillure with perl-Gtk+-1.04x (#9411)
-
-* Mon Mar 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-29mdk
-- harddrake service: skip nv/nvidia test when there's no nvidia card
-
-* Mon Mar 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-28mdk
-- harddrake service: fix disabling nvidia driver (#9300)
-
-* Fri Mar 26 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-27mdk
-- drakconnect:
- o fix some bugs in ISDN configuration
- o warn than speedtouch only works with 2.4.x kernels for now
- o fix "manage interface" that broke speedtouch configuration
- o blacklist b44 for ifplugd
-- drakboot blacklist again Savage gfx cards, they're broken again with
- lilo
-
-* Wed Mar 24 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-26mdk
-- diskdrake: tag removable medias as noauto in fstab file (pixel, #9076)
-- drakboot: add nolapic support option (planel)
-- drakclock (Robert Vojta, #9141):
- o display current timezone
- o sort servers
-- drakclock, drakperm: GUI fixes (Robert Vojta: #9141, #9153)
-- drakconnect:
- o complain louder about supported kernels for ISDN cards
- o enable to delete ADSL and ISDN connections
- o do not complain anymore about kernel when using bewan adsl modems
- since they works now with 2.6.x kernels
- o do write drakconnect config file when there's only one configured
- interface (#8998)
- o fix speedtouch support: use kernel mode on 2.6.x kernels
-- drakgw: fix drakgw removing MII_NOT_SUPPORTED parameter from ifcfg
-- drakTermServ: fix button layout
-- drakxtv:
- o read current configuration (Scott Mazur)
- o fix setting options for bttv instead of saa7134 (#5612)
- o fix saa7134 detection (#5612)
- o fix wiping out /etc/modules.conf (Scott Mazur)
- o default canada-cable to NTSC (Scott Mazur)
- o handle tv cards managed by cx88 and saa7134 (#9112)
- o use right device (#3193)
- o offer to set the user to config (#3193)
- o sync with 2.6.3-4mdk
-- firewall: do not write the REDIRECT squid rules if one has only one
- NIC connected to the net zone (florin)
-- harddrake service: switch between nv and nvidia driver if commercial driver
- isn't installed
-- keyboarddrake: az, tr and tr_f needs XkbOptions 'caps:shift' (pixel)
-- logdrake: fix non first searches (#9115)
-
-* Fri Mar 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-25mdk
-- add missing icons for localedrake menu entry (dadou)
-- diskdrake: fix compaq smart array support (pixel, #9029)
-- drakboot: reread current bootsplash config (olivier blin, #8888)
-- drakconnect:
- o always offer to restart adsl connections
- o fix bewan adsl modem support by providing an ad-how
- /etc/ppp/options
- o only warn about the fact we need 2.4.x kernel
- * when we're under 2.6.x
- * for bewan modem (not for other adsl modems) and pci rtc modems
- o only kill pppoa for sagem modem (fix bewan modem shutdown)
-- draksound: install alsa-utils if needed (#6288)
-- include drakups again
-
-* Wed Mar 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-24mdk
-- set window icon
-- diskdrake: (pixel)
- o fix "xp does not boot anymore" (#7302, #7959, #8891)
- o add --change-geometry=<device>=[<cylinders>,]<heads>,<sectors>
- option in order to allow forcing the geometry used in the partition
- table. This allows helping poor Windows booting using old int13
- function 2. This should work when Windows has not been resized.
-- drakclock: fix server lookup (#8846)
-- drakconnect:
- o do not pass eth interface and user to adsl-start, they're already
- provided in pppoe.conf (#2004)
- o fix pci modem support
- o fix SmartLink modem managment (#8959)
- o really fix modem symlink (#7967)
- o try harder to get a name (in wizard) and information (in manage
- interface) for cards whose driver do not support ethtool ioctl
- o update wanadoo dns servers ip addresses
- o wizard:
- * bewan support
- * fix adsl stop on pppoa links
- * preselect pppoa for bewan modems
- * for ADSL Bewan, ISDN and PCI modems, warn that only 2.4.x
- kernels are supported
- * only show encapsulation parameter for sagem modem
- o "internet access" window:
- * enable to alter hostname
- * do not offer to alter domain name since this is achievable
- through FQDN
-- drakfont: make subdialogs be transcient for main window when not
- embedded
-- drakedm: fix dm restart
-- draksound (olivier blin, #8501):
- o do not alter oss<->alsa drivers mapping table
- o when current driver doesn't match current sound card, list
- alternatives for both current driver and the default driver
-- drakTermServ: fix misnamed inittab (stew)
-- drakupdate_fstab: choose wether to use supermount is now based on
- variable SUPERMOUNT in /etc/sysconfig/dynamic (pixel)
-- harddrake2:
- o show module for system bridges if it's not unknown (aka not
- managed by kernel core)
- o update icons
-- localedrake: list Filipino, Low-Saxon and Kyrgyz (pablo)
-- logdrake: fix wizard
-- service_harddrake:
- o remove /etc/asound.state *before* restarting sound service
- o add agpgart modules to modprobe.preload if needed
-
-* Mon Mar 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-23mdk
-- drakbackup: (stew)
- o install extra packages when using wizard too
- o report error on key transfer in GUI if needed
-- drakboot:
- o list yes/no for autologin in a more intuitive way, that is yes is
- grouped with user and wm pull down menus (robert.vojta@qcm.cz,
- anthill #390)
- o always generate a precise entry using the precise version and
- remove the linux-2.4 or linux-2.6 (but keep the "linux" entry)
- (pixel)
-- drakclock: make the ntpdate after stopping the ntpd (manu@agat.net,
- #8141)
-- drakfont: make "install" button be insensitive when there's no
- selected fonts
-- drakconnect:
- o fix misdetection of some network cards (aka do not try to match a
- physical device when SIOCETHTOOL ioctl is not supported) (#8010)
- o fix missing quotes around wireless encryption key (#8887)
- o wizard:
- * do not list anymore wireless cards in LAN connection, only in
- wireless connections
- * fix unlisted ADSL modems when there's no network card (#8611)
- * handle orinoco_pci and orinoco_plx driven card as wireless ones
- * skip "start on boot" step for LAN (already managed by network
- scripts)
- * write ether conf later on QA request
- o renew "internet access" window:
- * sanitize buttons layout (#8637)
- * sanitize fields layout
- * fix config reading/writing
- * fix connection status (#7800)
- * fix unlisted first dns server
- o manage interface:
- * do not write IPADDR, NETMASK and NETWORK fields in ifcfg-ethX
- when using DHCP (fix writing "no ip"/"no netmask" in config file)
- * default protocol is dhcp (fix fields checking when an interface
- isn't yet configured)
- * fix gateway setting (#6527)
-- drakfirewall, drakgw: add ppp+ and ippp+ at the interfaces list
- (florin) (#8419)
-- localedrake: always define KDM fonts dependending on encoding
- (pablo, #8714)
-- logdrake: fix explanations in mcc that got broken by #8412 speedup
-- printerdrake: install "scanner-gui" instead of "xsane" when it sets
- up an HP multi-function device (till)
-- scannerdrake: install "scanner-gui" instead of "xsane", so that
- scanning GUI actually used can be determined by the system
- environment (till)
-
-* Thu Mar 11 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-22mdk
-- fix imm & ppa managment on kernel 2.6 (pixel)
-- no entry in fstab for zips (now cleanly done by hotplug) (pixel)
-- drakbackup (stew):
- o fix crash on first wizard run (#8654)
- o deal with mixture of formats on restore
- o do not save host passwd when user requests not to (#8700)
- o fix issue with first incremental pass not using base as
- comparison
- o support for plain tar (#8676)
-- drakconnect wizard:
- o start to handle bewan ADSL modems
- o port old ISDN wizard upon new wizard layer
-- drakfirewall, drakgw: network card name rather than just ethX in device list
- (florin and me)
-- drakgw (florin):
- o add some tests for the REDIRECT squid rules
- o fix previous button on first step (anthill #386)
- o fix "sharing already configured" #8669 (florin)
- o fix the proxy REDIRECT shorewall rule,
- o fix the disable, enable functions
- o fix the shorewall interfaces configuration
- o really enable the proxy squid
-- draksplash: make it works again
-- drakTermServ (stew):
- o add gdm user if needed
- o autologin warning
- o copy server X keyboard config to client
- o default kernel version
- o default thin client setup
- o do not destroy "fat" client inittab
- o use std banner
-- drakgw: fix previous button on first step (anthill #387)
-- harddrake2: fix ISDN cards detection
-- keyboardrake: list jp106 keyboard too (pablo)
-- logdrake: searching speedup (#8412)
-- printerdrake (till):
- o let URIs listed by "lpinfo -v" be shown in the dialog for entering
- a URI manually
- o make first dialog be somewhat clearer
-- XFdrake: catch exception (#8726) (pixel)
-
-* Wed Mar 3 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-21mdk
-- drakconnect: add australia in adsl providers db (#5056)
-- support cryptoloop and aes when using encryption on kernel 2.6 (pixel)
-
-* Wed Mar 3 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-20mdk
-- drakbackup: use preferred conf file read/write method (stew)
-- drakconnect: hide dns settings by default when using dhcp
-- drakupdate_fstab (pixel):
- o fix device removal
- o log calls
-- printerdrake: fix HPOJ configuration when manually setting up a
- device (till)
-
-* Tue Mar 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-19mdk
-- fix doble ISDN detection (#6535)
-- drakconnect: fix modem symlink (#7967)
-- drakboot --boot is now a wizard
-- printerdrake: fix missing "default settings" option in the printer
- options dialog (till)
-
-* Tue Mar 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-18mdk
-- drakboot (pixel):
- o if the default bootloader entry is invalid, choose another one
- o remove "VT8751 [ProSavageDDR P4M266] VGA Controller" (0x5333,
- 0x8d04) from graphical lilo blacklist (#8133)
-- drakconnect:
- o fix pci modem type matching
- o list pump in dhcp clients list (synced with ifup one)
- o preselect first availlable dhcp client (according to ifup priority
- list)
-
-* Tue Mar 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-17mdk
-- logdrake mail alert: fix crash due to icon renaming
-
-* Mon Mar 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-16mdk
-- adduserdrake: default to "man" icon (pixel)
-- drakconnect manage interface: fix bootproto filling (#8498)
-- harddrake2: update icons
-- printerdrake (till):
- o do not configure the GIMP-Print plug-in on more than 50 users (#6423)
- o fix no "ptal:/..." in manual device URI list (#8483)
-- scannerdrake (till): fix firmware not found by "gt68xx" SANE backend
- (#7242)
-
-* Mon Mar 1 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-15mdk
-- left align labels
-- drakfirewall: remove the masq zone and add policies, rules only if
- there is an interface in loc (florin)
-- draksec:
- o sanitize main explanation text
- o prevent pull-down menus to fill availlable space in packtables
-- printerdrake (till):
- o fix HPOJ config
- o support new HP multi-function devices
- o better Lexmark X125 printer support
-
-* Fri Feb 27 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-14mdk
-- drakautoinst: support two-floppies boot style for replay_install
- disk as well (gc)
-- drakbackup: fix tape backup/restore (#8284) (stew)
-- drakconnect: fix crash on manually choosing modem again
-- printerdrake: better layout for about dialog box (dadou)
-
-* Thu Feb 26 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-13mdk
-- drakconnect wizard:
- o never delete up/down scripts
- o only write internet service if start at boot requested
-- banners: prevent shadow to be darker on theme switches
-
-* Thu Feb 26 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-12mdk
-- drakbackup: use ATAPI:/dev/hdX for both 2.4/2.6 compatibility (stew)
-- drakconnect wizard:
- o do not ask for apply settings since most just have been written
- o only write ether config for lan...
- o install needed packages for pppoa, pppoe, pptp
-- drakTermServ (stew):
- o really filter symlinked kernels. nohup the dm restart
- o don't let any kernel symlinks be visible for making NBIs
-- harddrake-ui package: requires sane-backends so that scanner
- detection works smoothly (#8305)
-- localedrake: use xim by default for CJK languages for which we don't
- ship good enough native gtk2 input methods (pablo)
-
-* Wed Feb 25 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-11mdk
-- harddrake service:
- o look at sound cards changes on bootstrapping
- o when sound card is added/removed, delete current sound levels so
- that sound service reset it to sg sane
-
-* Wed Feb 25 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-10mdk
-- drakbackup: rework CD recording for ATA device setup (stew)
-- drakconnect manage interface (poulpy):
- o modem configuration has been completed
- o write /root/.kde/share/config/kppprc for any local change
-
-* Tue Feb 24 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-9mdk
-- drakconnect: alter both /etc/analog/adiusbadsl.conf and
- /etc/eagle-usb/eagle-usb.conf when configuring sagemXXX
-
-* Tue Feb 24 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-8mdk
-- drakconnect wizard:
- o ethernet: fix module lookup for pcmcia cards
- o adsl ISP db (Benoit Audouard):
- * set default protocol to pppoa for various ISPs
- * update 9telecom entry
- * add encapsulation method for "tiscali 512k.fr"
- * fix wrongly inverted encapsulation methods for "Free" isp cnx
- offers
-- drakTermServ (stew):
- o mknbi-set always wants a kernel version now
- o deal with conflicts with msec > 3 and exporting / (use
- no_root_squash).
- o always pass a kernel to mkinitrd-net (#8216)
- o add --restart option for terminal-server.
-- printerdrake, scannerdrake: misc gui fixes (till)
-- printerdrake (till):
- o give clear warning/error messages if a package installation fails
- o let printer model in first-time dialog also be shown if there is
- no description field in the device ID of the printer
-- scannerdrake: ask user before installing packages (till)
-
-* Mon Feb 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-7mdk
-- drakconnect
- o add wizard:
- * always write up/down scripts
- * only write initscript when starting at boot was choosen
- * write ethX aliases and ifup/ifdown scripts when configuring a LAN
- connection
- o remove wizard:
- * when no network configuration is configured, just report it
- * only list configured interfaces when offering to delete them
- * keep ethX aliases b/c in order to prevent ethX be renumbered on
- next boot
- * down the network interface when deleting it
-
-* Mon Feb 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-6mdk
-- drakconnect: fix sagem8xx && speedtouch adsl modem scripts
-
-* Mon Feb 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-5mdk
-- drakconnect: write vci and vpi parameters in decimal base when
- configuring speedtouch
-
-* Mon Feb 23 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-4mdk
-- drakbackup (stew):
- o verify user has selected a cron interval and media (#8138)
- o tweak wizard setup
-- drakconnect:
- o misc santizing in manual module loading
- o adsl provider db: fix vci number for Belgium and France (poulpy)
- o wizard:
- * modem:
- + enable one to manually choose the serial port to use while
- configuring modem
- + really default to dynamic dns, gateway and ip (really fix #7705)
- + do not overwrite current kppp settings with provider db ones
- but on provider switch
- * adsl: prevent having to choose between '' and 'adsl' connections
- * ethernet: enable one to manually load a driver like expert mode
- in old pre-10.0 wizard
- o manage interface:
- * modem:
- + read kppp authentication method
- + handle new PAP/CHAP method
- * ethernet:
- + handle and translate BOOTPROTO
- + do not complain about gateway format when it's not set
- * fix untranslated strings
-
-* Fri Feb 20 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-3mdk
-- drakconnect: fix empty vci/vpi paremeters when speetouch firmware
- wasn't provided
-- logdrake: fix title when run from mcc (#8111)
-
-* Fri Feb 20 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-2mdk
-- drakboot/diskdrake updates regarding partition renumbering (pixel)
-- drakconnect:
- o do not overwrite provider vpi/vci settings (poulpy)
- o detect more sagem 8xx modems
- o enable to refuse network restarting
- o add "Free non degroupe 1024/256" in adsl provider db
-- drakperm: fix "current" checkbox vs "group" and "user" pull-down
- menus
-- localedrake: better uim support (pablo)
-- modules configuration: fix some agpgart aliases issues regarding
- 2.4.x/2.6.x kernels (pixel)
-
-* Fri Feb 20 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-1mdk
-- drakconnect: fix writing modules aliases (fix broken speedtouch)
-- drakbackup: use Gnome icon order (stew)
-
-* Thu Feb 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.21mdk
-- drakboot: fix theme displaying under console (Olivier Blin)
-- drakconnect: since no PCMCIA cards support link status notification,
- ifplugd should be disabled for all pcmcia cards by default (#8031)
-- XFdrake: kill spurious icons (pixel)
-- fix some wrapping (pixel)
-- do not use global scrolled window but many local scrolled windows
- instead (pixel)
-- fix uim-xim input method (pablo)
-
-* Thu Feb 19 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.20mdk
-- fix broken "advanced" and "help" buttons (pixel)
-- switch japanese from kinput2 to uim input method
-- fix file dialog when embedded (#7984) (pixel)
-- drakbackup (stew):
- o fix issue with multisession CDs (Anthill #349)
- o encourage user to finish configuring media before leaving wizard.
-- drakvpn (florin):
- o add plenty of help files, add anonymous support for sainfo
- o add quite much help explanations
- o add anonymous support in sainfo
-- harddrake2: sanitize buttons layout when embedded
-
-* Wed Feb 18 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.19mdk
-- diskdrake: type 0x17 can be ntfs
-- drakbackup: rework backupignore behavior (Anthill #306) (stew)
-- drakconnect
- o wizard:
- * do not use ifplugd on wireless connections by default
- * fix "network needs to be restarted" step
- * do not overwrite current wireless parameters with default
- values
- * tag some wireless options as advanced ones
- o manage interface:
- * update adsl (poulpy)
- * sanitize buttons layout
-
-* Tue Feb 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.18mdk
-- new default icon for wizards banner
-- drakconnect
- o wizard:
- * handle atmel_cs wireless driver
- * sort lan protocols
- o manage interface: update (poulpy)
-- drakvpn: one can now start from scratch with ipsec.conf (florin)
-- enforce gnome button order everywhere
-- harddrake: really fix doble blanked ISDN detection
-- mousedrake (pixel):
- o detection defaults on automatic choices
- o fix mouse detection on kernel 2.4
-- printerdrake: fix problem that not used parallel ports were detected
- as printers (till)
-
-* Tue Feb 17 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.17mdk
-- drakboot: remove bad entries after reading existing conf file (pixel)
-- drakclock: let's look better when embedded
-- drakconnect:
- o wizard:
- * explain about DNS (#7908)
- * fix automatically found "...2" dns when network is done
- o manage interface: check gateway entry (poulpy)
-- drakfont: new banner style
-- drakvpn:
- o fix drakvpn logic when translated
- o fix steps skiped b/c of translations
- o start to sanitize gui (more user friendly labels, pull-down menus, ...)
- o fix the ";" mark in the "Security Policies" section (florin)
-- interactive layer: don't have a scroll inside a scroll which causes
- display pbs (#7433) (pixel)
-- printerdrake (till):
- o recognize parallel printers also when they miss the
- "CLASS:PRINTER;" in their device ID string (ex: Brother HL-720,
- bug #7753)
- o warn when there's no network access
- o remove printer list button when there's no network also in expert
- mode.
-
-* Sun Feb 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.16mdk
-- fix harddrake crash (#7897)
-- printerdrake (till):
- o handle weird printer ID strings, as the one of the Brother HL-720
- with empty manufacturer and description fields (#7753).
- o recognize also "SN:" as serial number field in printer ID string
- (HP PhotoSmart 7760, bug #6534).
- o load the "usblp" module instead of the "printer" one on kernel
- 2.6.x
-
-* Sat Feb 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.15mdk
-- drakbackup: (stew)
- o FTP restore failure feedback
- o allow multiple catalog/file restore selection
-- drakconnect:
- o fix automatically found "...2" dns server
- o fix crash on canceling "already configured net device"
- configuration (#7679)
- o by default do not start connection at boot for modems (#7705)
- o prevent displaying dummy empty fields in text mode (#7593)
-- harddrake:
- o fix ISDN detection (#6535)
- o prevent detecting twice the same devices (#4906)
- o workaround sane-find-scanner detecting too much usb scanners
-- center popup windows (pixel)
-- don't have a wait_message above another empty wait_message when
- probing hardware (pixel)
-- add support for embedding rpmdrake
-
-* Fri Feb 13 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.14mdk
-- drakboot: better grub support, esp. when /boot is a separate
- partition (pixel)
-- diskdrake: reconfigure boot loader on partition renumbering
-- wizards: add relief around trees and lists
-
-* Fri Feb 13 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.13mdk
-- all tools: new banner style
-- add drakvpn (florin)
-- drakbackup: fix crash on file search, failure to report ftp error
- (stew)
-- drakconnect:
- o wizard:
- * fix wireless network interfaces detection
- * ask isp for ip and gateway by default (#7705)
- o manage interface: (poulpy)
- * fix adsl/eth confusion
- * fix apply button
-- harddrake service: only probe for local printers
-- harddrake2:
- o remove statusbar on interface team request
- o do not force black color for fields values which badly conflict
- with inverted accessibility themes
-- fix module dependancies problem because of 2.4/2.6 mappings, better
- support 2.4 and 2.6 alltogether by keeping 2.4 names in modules.conf
- (gc)
-- XFdrake: handle packages not found (#7786)
-
-* Thu Feb 12 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.12mdk
-- drakconnect:
- o preselect right protocol for ethernet though connections
- o only offer to connect now for ppp connections
- o fix module retrieving when configuring an adsl connection over
- ethernet
-- authentication: (pixel)
- o install ldap packages *before* doing ldapsearch
- o pam*.so modules do not have /lib/security/ prefix anymore
-
-* Thu Feb 12 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.11mdk
-- drakconnect wizard:
- o fix choosing dhcp as adsl protocol
- o do not allow to step forward if no network card was found
- (workaround #7672)
-- keyboardrake: support 2.6.x kernel (pixel)
-- drakbackup: misc changes (stew)
-- draksec: fix unable to save checks when config file is empty
-- harddrake: support more webcams
-
-* Tue Feb 10 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.10mdk
-- fix poped dialogs when embedded (#7246) (pixel)
-- drakbackup/drakTermServ: misc updates (stew)
-
-* Mon Feb 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.9mdk
-- drakconnect wizard:
- o fix unability to select gateway (#7585)
- o detect athX interfaces too (#7531)
-- drakfont: fix crash on option toggling (#7248)
-
-* Mon Feb 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.8mdk
-- drakconnect wizard:
- o blacklist forcedeth for network hotplug (#7389)
- o fix ethernet devices description matching
- o fix unwritten ethernet interface config
- o fix empty list in "multiple internet_connexions" step
-- fix vendor/description for some Lite-On drives
-- ugtk2 layer: fix some layout (spurious space at window bottom)
- (pixel)
-
-* Sun Feb 8 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.7mdk
-- drakx11: make XFdrake startup be instantenous for non nv|ati cards
-- drakTermServ: add PXE image support (Venantius Kumar)
-
-* Fri Feb 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.6mdk
-- move drakbug, drakclock, drakperm, draksec, drakTermServ,
- net_monitor in drakxtools since they require ugtk2 (#7413)
-- workaround gtk+ bug #133489 (behaviour on click when in scrolled
- window) (pixel)
-- drakboot: do not try anymore to set global video mode and compat
- option
-- drakfirewall: handle ip ranges (#7172) (pixel)
-- draksound: advertize alsaconf too since sndconfig failled for cards
- only managed by ALSA (#7456)
-- logdrake: do not fail when disabling twice the alert mail cron
-- mousedrake: allow changing protocol in standalone (pixel)
-
-* Fri Feb 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.5mdk
-- fix embedded apps
-
-* Fri Feb 6 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.4mdk
-- print --help on stdout rather than stderr (gc according to gnu std)
-- diskdrake: (pixel)
- o fix lvm support when devfs is not mounted
- o fix lvm extent sizing (fix illegal division by 0)
- o fix getting the output of pvs vgs lvs commands
- o fix get_lvs() (and use lvs instead of vgdisplay)
- o don't display start sector and cylinders used for LVs
- o display "Number of logical extents" of LVs
-- drakbackup: provide more detailed info on files backed
- up/ignored. (Anthill #306) (stew)
-- drakboot: write fstab for /tmp using tmpfs when "clean /tmp" is
- chosen (pixel)
-- drakboot, drakconnect: fix some layouts
-- drakconnect wizard:
- o fix pcmcia card config (#7401, #7431)
- o fix wireless settings (#7432, faillure to set parameters)
- o split wireless step into two steps since there way too much
- options
-- draktermserv: fix user list in mdkkdm (stew)
-- harddrake: fix module parameters with kernel-2.6.x
-- keyboardrake, localedrake: fix some locales (pablo)
-- mousedrake: use protocol "ExplorerPS/2" instead of "auto" for kernel
- 2.6 (pixel)
-- XFdrake: (pixel)
- o do not test X config under vmware (#5346)
- o allow 24bpp for DRI (since all drivers now support it)
-
-* Mon Feb 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.3mdk
-- drakconnect wizard:
- o support more wireless cards
- o split out "wireless connection" configuration out of "lan
- connections" path
-- logdrake: (arnaud)
- o make cron script be able to use either local smtp server or a
- remote one
- o add "remove cron entry" on arnaud request
-
-* Mon Feb 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.2mdk
-- draconnect: preselect pppoa for speetouch again
-
-* Mon Feb 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 10-0.1mdk
-- harddrake: fix adsl modem detection
-- draksound: handle new aureal drivers
-- do not user ide-scsi emulation for ide ZIPs (pixel)
-- do no ide-scsi emulation for cd burners with kernel-2.6.x (pixel)
-
-* Mon Feb 2 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-28mdk
-- drakconnect:
- o enable to set hostname even when using DHCP (#7230)
- o handle not loaded drivers (#7273)
-
-* Fri Jan 30 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-27mdk
-- drakconnect:
- o wizard:
- * fix configuring unconfigured eth interfaces
- * ignore spurious .directory entries when loading kppp provider db
- * do not offer to select dhcp client for static interfaces
- o manage: only show gateway for eth devices (poulpy)
-- diskdrake (pixel):
- o fix overflows at 4GB when adding partitions
- o tell kernel to remove the extended partition
- o replace iocharset= with nls= for ntfs in /etc/fstab
-
-* Thu Jan 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-26mdk
-- drakconnect: use somewhat nicer interfaces name (eg: "eth0: 3com
- 905") in manage interface (poulpy)
-- drakTermServ: configure clients with defined IPs to set hostname so
- gnome works (stew)
-- fix accentued characters with fr and ru locales (pablo)
-
-* Thu Jan 29 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-25mdk
-- drakconnect:
- o wizard:
- * fix ethernet network card list
- * fix interface config file writing
- * fix DHCP client installation
- * fix static/dhcp step branching
- o manage interface: (poulpy)
- * fix modem login fetching
- * use somewhat nicer interfaces name (eg: ethernet0 rather than
- eth0)
- * fix adsl loading and saving
-- draksec:
- o add help for newly introduced MAIL_EMPTY_CONTENT item
- o notify that shell timeout is in seconds
- o fix parsing of default values for multi argument msec functions
-- net_monitor: do not force switch to last page on network interface
- reload
-
-* Wed Jan 28 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-23mdk
-- drakbackup: (stew)
- o another cron issue reported on Anthill
- o fix broken sys, other restore
-- drakconnect:
- o new drakconnect wizard:
- * remaining issues: isdn and zeroconf config, bewan modem, isapnp
- cards, X11 behavior on name change
- * provider database for modem and adsl connections
- * renewed steps
- * show device name rather than ethX
- * modem:
- + handle CHAP/PAP
- + enable to use dynamic ip/dns/gateway
- * adsl:
- + update for eagle package replacing adiusb
- + detect eci modems and explain why we cannot handle them
- o manage part: update (poulpy)
-- draksound: fix unwriten sound aliases when configuring not yet
- configured cards (#6988)
-- printerdrake: kill stupid userdrake dependancy (gc)
-- ugtk2 / interactive layers:
- o make trees and lists take all availlable space
- o pack/align checkboxes to left
- o rework window sizing: size all windows and add a scrollbar for the
- whole window if needed (not just around advanced settings) (pixel)
-- misc fixes for 2.6.x kernels (gc, pixel & planel)
-
-* Tue Jan 20 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-22mdk
-- drakboot: add a warning telling to run lilo after modifying
- lilo.conf (#6924)
-- drakconnect: enhanced "manage" part (poulpy)
-- drakfirewall: add icmp support and "Echo request (ping)" choice
- (pixel)
-- drakgw: transparent proxy support (florin)
-- more kernel 2.6.x support (pixel)
-- fix subdialogs when embedded (#6899)
-
-* Thu Jan 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-21mdk
-- prevent spurious top windows to appears when embedded in mcc
-
-* Thu Jan 15 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-20mdk
-- diskdrake:
- o more lvm2 support (pixel / Luca Berra)
- o update partition reread on kernel side and rebooting if needed (pixel)
-- drakboot:
- o boot loader config: do not complain on canceling
- o graphical boot theme config:
- * handle grub too (bootsplash being independant of boot loader)
- * fix layout when embedded
-- drakconnect: update manage interfaces (poulpy)
-- drakTermServ: first time wizard (stew)
-
-* Wed Jan 14 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-19mdk
-- diskdrake: updated lvm2 support (pixel)
-- drakboot: boot theme configuration is back (warly)
-- drakboot, drakclock, drakconnect, drakfloppy, drakfont, drakperm,
- draksec: sanitize buttons bar
-- drakedm: fix dm list
-- printerdrake: sort printer models list
-
-* Mon Jan 12 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-18mdk
-- drakedm: when offering to restart dm, offer yes/no as choice rather
- than ok/cancel (#6810)
-- drakdisk: sanitize buttons when working on mount points (smb,
- webdav, ...)
-- drakfloppy: handle both kernel 2.4.x and 2.6.x (before size field
- was not properly when switching between threes b/c we looked for
- module.ko instead of module.o.gz and the like)
-- drakfont: renew GUI through subdialogs
-- localedrake: update languages list (pablo)
-- printerdrake: do not push anymore help menu at right
-
-* Mon Jan 12 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-17mdk
-- drakfirewall: allow a range of ports (anthill bug #267) (pixel)
-- drakfont:
- o fix unstalling fonts
- o sanitize application options, about, font import and font removeal
- layouts
-- fix behavior when embedded in interactive layer:
- o prevent subwindows being too small
- o prevent subwindows breaking when canceled
-- run_program layer: don't print refs in log when output is redirected
- (blino)
-- wizards layer: only complain if a problem actually happened
-- drakconnect:
- o first snapshot of new manage wizard (poulpy)
- o "delete network interface" wizard:
- * show a finish button on last step
- * exit once delete interface wizard has ended instead of then
- running the std add wizard...
- * list ppp interfaces too
-
-* Fri Jan 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-16mdk
-- support newer gtk2 bindings
-- fix drakboot --boot embedding
-- fix logdrake wizard when embedded
-
-* Fri Jan 9 2004 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-15mdk
-- alias scannerdrake => drakscanner
-- drakauth: integrate chkauth (which is now deprecated) (pixel)
-- drakbackup: (stew)
- o DVD+RW support,
- o fix bogus cron message
-- drakboot:
- o split it into bootloader and autologin configuration
- o drop no more handled keytable line in grub config file (pixel)
- o simplify lilo boot message. Not mentioning the timeout parameter
- (#5429) (pixel)
- o remove /boot/grub/messages and don't use the i18n command which
- are obsolete since grub doesn't handle it anymore (pixel)
-- drakconnect: fix sagem800 configuration (poulpy)
-- drakdisk: basic lvm2 support (pixel)
-- drakfloppy must not be in drakxtools-newt, must now require mkbootdisk
- (which is not installed by default anymore)
-- drakperm: do not discard 0 when perms are 0xx like
-- drakTermServ: support new etherboot floppy image syntax and file
- locations (stew)
-- drakxservices: fix descriptions (#1704) (pixel)
-- enable other packages to override libDrakx translations with those
- from their own domains
-- handle /etc/modprobe.preload
-- harddrake: detect megaraid controllers as scsi ones
-- harddrake service:
- o for removable devices, we've to remove/add them one by one, so
- when several devices of the same class are removed/added, we ask
- if we should handle them several time.
- o let ask confirmation once per class instead (olivier blin, #6649)
- o do no ask several times the kernel to switch into verbose mode
- (olivier blin)
- o really display which devices were removed
-- misc cleanups
-- tool layout:
- o add a separator below buttons
- o really pack the two button sets at edges
- o try to have a better layout when embedded: let's have only one
- scrollbar that scroll the whole window
-
-* Tue Dec 30 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.3-14mdk
-- ugtk2.pm: fix ask_dir dialog (#6152)
-
-* Mon Dec 22 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-13mdk
-- do not show useless "ignore" button when requesting root password
- through kdesu
-- drakperm: keep changes when switching view moed
-- drakclock:
- o prevent one to open zillions of sub dialogs
- o reuse std dialogs
- o remove stock icons
-- fix buttons layouts and text wrapping in in drakboot, drakfloppy and
- drakperm
-- logdrake's mail alert wizard:
- o properly handle faillure
- o accept local user names as well as emails
-- printerdrake, harddrake2: push help menu at right
-- scannerdrake: (till)
- o add upload firmware feature
- o configure non-root access to parallel port scanners automatically.
-
-* Tue Dec 9 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-12mdk
-- net_monitor:
- o properly handle multiple interfaces (each one having its own pixmap)
- o make it fit when embedded
- o kill icons on button
- o kill profile managment (duplicated features already availlable
- within mcc)
-- drakconnect:
- o split in multiples pieces
- o move profile support into mcc
- o fix writing spurious "WIRELESS_NWID=HASH(0x8e93758)" in ifcfg-<intf>
- o add "delete an interface" wizard
-- draksound: handle new snd-bt87x driver
-
-* Fri Nov 28 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-11mdk
-- improve buttons layout in interactive written tools
-- drakconnect:
- o fix sagem configuration
- o do not silently ignore internal errors
-- drakgw:
- o make --testing somewhat more useful
- o log more explanations
- o really support embedding
-- wizards: do not show up anymore banners when embeeded
-
-* Tue Nov 25 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-10mdk
-- detect serial MGE ups
-- drakconnect:
- o fix #5664: list ppp0 for modem and adsl connections too and ippp0
- too for isdn ones
- o fix #6184: read back "Connection Name" and "Domain Name" fields
- when configuring modem
- o fix adsl configuration steps that were hidden
- o configure all isdn cards, not only the first one
- o fix "kid exited -1" warnings
- o handle zaurus connected through USB cables resulting in usbnet
- driver creating usbX interfaces
-- mousedrake: default to "PS/2|Automatic" for ps/2 mice (automagically
- use IMPS/2 when needed)
-- XFdrake: misc fixes
-
-* Wed Nov 19 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-9mdk
-- resync serial_probe with kudzu
-- fix some untranslated strings
-
-* Mon Nov 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-8mdk
-- rebuild for reupload
-
-* Sat Nov 15 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-7mdk
-- fix links
-
-* Fri Nov 14 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-6mdk
-- drakconnect: fix speedtouch start/stop scripts when firmware is
- already there or when firmware installation is canceled
-- harddrake2: do not show module if unknow for system bridges since
- it's normal
-- harddrake service: remove net aliases if needed
-- move clock.pl from mcc into drakxtools package
-- provide drakclock, drakdisk, drakhardware, drakkeyboard, draklocale,
- draklog, drakmouse, draknet_monitor, drakprinter, drakx11 new names
-- XFdrake: choose a not-to-bad default when X auto config fails in
- auto install
-
-* Sat Nov 8 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-5mdk
-- drakconnect:
- o fix lan always marked as detected even when no detection was performed or
- when there's no ethernet devices
- o list acx100_pci as a wireless network cards driver so that one can
- set wireless parameters for it (#6312)
-- harddrake2:
- o do not display "unknown module" in red for modems known to not
- need any module (#3047)
- o enumerate cpus from 1 instead of 0 (#4704)
- o typo fix #6134: (JAZ drives are nothing to do with jazz music)
-
-* Fri Nov 7 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-4mdk
-- drakconnect:
- o mcc view: fix network interfaces list update (really remove from
- the Gtk+ list lost interfaces)
- o prevent droping wireless parameters for modules not listed in
- wireless modules list
- o more usb wireless detection fix
-
-* Thu Nov 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-3mdk
-- drakconnect:
- o fix wireless cards detection (#3690, #4181, #5143, #5814, ...)
- o always list sagem_dhcp in list, showing it only in expert mode is
- confusing
-- drakconnect/localedrake: fix a few unstranslated strings
-
-* Wed Nov 5 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-2mdk
-- drakbackup: enable bz2 compression option (stew)
-- drakconnect: detect again unconfigured network interfaces
-
-* Tue Nov 4 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.3-1mdk
-- overall misc cleanups
-- diskdrake: check both nfs servers version 2 and version 3, and
- remove duplicates (bug #6055) (pixel)
-- drakconnect:
- o fix going back in some places (isdn, ...)
- o fix #6159: fix detection when a local name server is faking the
- connection because of its cache by checking at least a packet is
- ack-ed
- o translate a few strings (part of #5670)
- o handle more than 4 ethernet cards
-- drakconnect, drakfirewall, drakgw: show up a combo box with detected
- network interfaces (but still let the user manually type it sg like
- ppp0 if needed) instead of letting the user guessing the network
- interface
-- drakfont: support getting fonts from samba (Salane KIng)
-- harddrake:
- o show isdn & adsl adapters too (adsl adapters were previously
- classed as modems)
- o use drakconnect to configure modems
-- drakfirewall: translate services names
-- "mail alert" wizard from logdrake:
- o save options into /etc/sysconfig/mail_alert instead of hardcoding
- them in the cron task and restore them when configuring it again
- o ensure services are always listed in the same order
- o send the mail only if there's really sg to warn about (aka do not
- sent empty mails)
- o generate perl_checker compliant cron tasks
-- translations: updates, breakages
-
-* Tue Nov 4 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-19mdk
-- drakboot: disable lun detections for ide burners
-- drakconnect:
- o fix empty fields in expert mode
- o fix anthill bug #50: ensure /etc/ppp/pap-secrets is not world
- readable since it contains password/user mapping for dialup
-- net_monitor: handle multiple network interfaces
-
-* Mon Oct 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-18mdk
-- drakconnect:
- o do not blacklist anymore bcm4400 for network hotplugging
- o support ISDN usb adapters
-- drakperm:
- o force user|group|other rights order in edit dialog
- o one was able to alter system rules in memory wheareas this is not
- supported since they're enforced by msec.
- disable "ok" button for system rules to prevent confusion.
-- harddrake service: workaround anthill bug #18 (do not overwrite sound
- aliases when no hardware change occured)
-- misc amd64 fixes (gwenole)
-- net_monitor:
- o fix connection status detection
- o fix profile managment switch
-
-* Thu Oct 16 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-17mdk
-- drakbackup: all users overrides individual selection in wizard
- (#5916) (stew)
-- drakconnect:
- o fix #425, #1881: wireless adapters settings were lost when
- altering network configuration when not from wizard mode
- o when steping back in wizard, do not overwrite first card
- parameters with last one's (#3276)
- o fix expert mode (lost checkboxes states when "expert mode" option
- is checked)
- o blacklist bcm4400 for network hotplugging
-- drakfont:
- o fix ttf conversion (#5088)
- o log more explanations
-- draksec: fix unsaved security administrator setting (#6103)
-- misc chinese fixes (arnaud, pablo)
-- printerdrake: fix lpd call (pablo)
-- translations updates (pablo)
-- misc amd64 fixes (gwenole)
-
-* Fri Sep 19 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-16mdk
-- drakconnect: fix #5825 (hostname set as ARRAY(0x...))
-
-* Thu Sep 18 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-15mdk
-- drakboot: (pixel)
- o fix switching from grub to lilo
- o fix drakboot crashing once bootloader has been altered in text
- mode
-- printerdrake: further fix cups configuration (till)
-- update translations
-
-* Wed Sep 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-14mdk
-- printerdrake: fix cups configuration regarding commented out rules
-
-* Wed Sep 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-13mdk
-- diskdrake: (pixel)
- o fix writting wrong types in fstab
- o fix handling of mount points with underscoresb (#5728)
- o do not check current partition for already used mount point
-- drakauth : fix NIS managment (#5668) (pixel)
-- drakhelp: load online drakbug help (daouda)
-- draksound: (#5403)
- o make sure to use OptionMenu instead of Combo boxes
- o move help into a tooltip
-- upate translations
-
-* Tue Sep 16 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-12mdk
-- diskdrake: (pixel)
- o fix growing ext2/ext3 partitions
- o handle beos partitions with filesystem befs (#5523)
-- drakbackup:
- o use hd as default daemon media (stew)
- o fix translation issues (Arpad Biro)
- o fix user cron misbehavior (Keld Jørn Simonsen)
-- drakTermServ:
- o fix translation issues (Arpad Biro)
- o fix help text format (stew)
-- drakboot: when "Back" is pressed, restore the list of entries in
- bootloader (#5680) (pixel)
-- drakbug: add support for bug submission about stable releases into
- anthill (stew)
-- drakconnect: (poulpy)
- o fix adsl support regarding ppoe.conf (#5674)
- o fix speedtouch (#5056)
-- draksound:
- o do not overwrite current driver if it's a viable driver for the
- current sound card (#5488)
- o show the current driver too (being preselected) so that users do
- not get confused
-- drakupdate_fstab: fix supermount handling (pixel)
-- fix hidden or cutted buttons (#1919, #2364, #2705, #3667, ...)
-- fix expert mode resulting in advanced setting being displayed by
- default but label still being "advanced" instead of "basic" (#4353)
-- harddrake service: switch to verbose mode when using bootsplash
- (warly)
-- localedrake: fix chinese input (#4408)
-- printerdrake: (till)
- o fix LIDIL devices management
- o really handle PSC 1xxx and OfficeJet 4xxx
- o added support for user-mode-only HPOJ devices (HP PSC 1xxx and
- OfficeJet 4xxx) (#5641)
-- standalone tools: speedup startup by invoking "rpm -qa" only once (fpons)
-- XFdrake:
- o use 24bit for fglrx in automatic mode (fpons)
- o prevent lost Xauth access (pixel)
- o fix logout from gnome (pixel)
- o fix not translated test page (pixel)
-
-* Thu Sep 11 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-11mdk
-- drakboot: misc fixes (pixel, fpons)
-- drakconnect:
- o do not set hostname if there's a dynamic interface
- o fix firmware loading (poulpy)
- o fix profiles with spaces in name (#5586)
-- drakfont: fix faillure to install fonts (#5571)
-- drakfirewall: make it work with dialup connexion (#4424) (florin)
-- drakgw: fix canceling info steps (florin)
-- harddrake2:
- o fix freeze while configuring modules (infamous #4136)
- o warn about no module parameters instead of not showing the dialog
-- localedrake: configure kdmrc too (pixel)
-- logdrake: always display the log domain names in the same order
-- printerdrake: help making printerdrake icon bar be shorter (#5282)
-- update wizard banners (davod beidebs)
-- XFdrake: handle ati drivers (nplanel, fpons)
-
-* Tue Sep 9 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-10mdk
-- disdrake: fix userdrake not runnable (#5447) (pixel)
-- drakboot:
- o fix too small kernels window width (#5040)
- o fix too big main window
-- drakconnect:
- o when no profile is set, use default one (poulpy)
- o add support for sagem dhcp (francois)
-- drakperm: do not complain about saving on view change
-- drakxtv: install xawtv if needed (#5130)
-- logdrake: fix infinite entries (#5448)
-- printerdrake: fix options saving (#5423) (till)
-
-* Mon Sep 8 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-9mdk
-- drakfont: fix not being able to select directories (#4964)
-- drakconnect:
- o fix profiles managment (poulpy & tv)
- o fix firmware loading (#5307, poulpy)
-- fix net_monitor not working as root
-- printerdrake:
- o use new help scheme (daouda)
- o reread database when switching between normal and expert mode
- (till)
-- scannerdrake: complain if saned could not be installed
-- XFdrake: use OptionMenu's rather than Combo's (more consistent gui
- and better behavior when embedded)
-
-* Sun Sep 7 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-8mdk
-- localedrake: configuration fixes (gc)
-- drakgw: fix #2120 & #2405 (florin)
-- drakconnect: (poulpy)
- o workaround messed up ppp0 configration
- o fix profiles
-
-* Thu Sep 4 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-7mdk
-- diskdrake: fix #5204 (pixel)
-- drakbackup: fix untranslatable strings, ... (stew)
-- drakconnect:
- o fix #5242: loop on winmodem connection if no windomem but winmodem
- is selected
- o offer to select modem device
-- fix buildrequires for 64bits ports
-- fix lsnetdrake on AMD64 (gwenole)
-
-* Sun Aug 31 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-6mdk
- - drakboot: default parameters are those of the default target (pixel)
- - drakedm: in non expert mode, only display the list of *installed* display
- managers
- - drakfloppy, drakconnect: fix more dialogs height
- - fix requires
-
-* Thu Aug 28 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-5mdk
-- drakhelp: add support for contextual help (daouda)
-- explanations are back (pixel)
-- fix autologin for xdm (pixel)
-- drakconnect:
- o fix dialogs height
- o fix #4372 (poulpy)
- o profiles are back
-- printerdrake: new GUI (till)
-
-* Wed Aug 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-4mdk
-- drakconnect:
- o non wizard gui
- * fix hostname setting
- * set hostname at the same time we apply dns changes (on apply
- button press)
- o both wizard and non wizard modes: (poulpy)
- * fix #4363
- * fix speedtouch firmware file name
-- drakxtv: resync with kernel's bttv
-- printerdrake: misc fixes (till)
-
-* Tue Aug 26 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-3mdk
-- drakconnect (non wizard gui):
- o add --skip-wizard option to get into non wizard mode
- o hide profile in "internet config" dialog if profiles are disabled
- o "Configure hostname..." button: offer to configure DNS too
- o only allow to run one wizard at once
- o reload the configuration once the wizard exited
- o prevent one to do concurrent config changes from the gui while the
- wizard is run
- o only write conf & install packages on exit if something really has
- been altered so that we do not write the config twice if the
- "apply" button was already pressed
-
-* Tue Aug 26 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-2mdk
-- diskdrake: (pixel)
- o fix WebDAV configuration embedding (#4703)
- o use fs=ext2:vfat or fs=udf:iso9600 for supermount-ng
-- printerdrake: misc fixes (till)
-- service_harddrake: prevent depmod to be runned everytime
-- XFdrake: more fixes for multilayout keyboards
-
-* Mon Aug 25 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-1mdk
-- drakfloppy: make it CJK aware
-- drakTermServ: add /etc/modules for local hardware config (stew)
-- fix #4579: drakconnect not working on console (poulpy)
-- printerdrake: misc fixes (till)
-
-* Sat Aug 23 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.35mdk
-- drakperm:
- o add new rules at top
- o always display editable rules before non editable ones
- o disable up button when selected rule is the first one
- o disable down button when selected rule is the latest one or when
- next rule is non editable
- o fix moving up/down rules
- o fix no saving if we've sort rules
-
-* Sat Aug 23 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.34mdk
-- disdrake: explain why ntfs resizing had failled (pixel)
-- drakbackup: (stew)
- o fix crash on file select of "Other" finish custom cron
- configuration
- o normal users can now do cron backups
-- drakconnect:
- o fix no detection in expert mode
- o better firmware load from floppy managment (poulpy)
- o fix pppoa use for speedtouch USB (poulpy)
-- drakfirewall: add samba in services list
-- drakperm: make security level menu be more understandable & usuable
-- draksec: translate default value in help tooltips too
-- fix CJK wrapping in more places (#3670 and the like)
-- make interactive button order be the same as gtk dialogs one and our
- dialogs but only in standalone mode
-- misc fixes from pixel
-
-* Thu Aug 21 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.33mdk
-- fix CJK wrapping in interactive tools (#4642)
-- remove ugly border around standalone tools
-- wizards: increase height to prevent some hidden or cutted buttons
-- diskdrake: fix small unallocated area at the end of the drive
- (pixel)
-- drakconnect: (poulpy)
- o allow user to copy firmware from a floppy
- o fix another back step
- o fix wrong url
-- drakxtv: only offer to configure xawtv if bttv was configured
-- XFdrake: fix #3976 (francois)
-- update keyboards list & translations (pablo)
-
-* Tue Aug 19 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.32mdk
-- pci hardware discovery: do full-probe by default
-- show advanced options by default if --expert was passed or if expect
- checkbox was checked (#4353)
-- drakconnect: fix internet reconnection (poulpy)
-
-* Tue Aug 19 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.31mdk
-- drakbackup: user definable crontab entry (stew)
-
-- drakconnect:
- o fix up/down interface detection (poulpy)
- o fix some more previous buttons in drakconnect wizard mode
- o fix crash on interface enabling/disabling
- o fix lan changes (#4088)
-
-- drakfloppy:
- o fix long-standing broken mkbootdisk call bug
- o sort modules and directories in treeview
- o save the options & modules list on exit and them restore it on
- load
- o try to be more user friendly:
- * if no error, display a success message, then exit
- * on error, instead of displaying the raw exit code that has no
- meaning for the end user, display in red the log message of mkbootdisk
- * remove insane expert button and so called expert frame
-
-- drakpxe: match new pxe dhcp.conf configuration file (francois)
-
-- harddrake2:
- o display the right fields description when no device is selected
- o make dialogs be modals and transcient
-
-- diskdrake: (pixel)
- o fix lvm managment(#4239)
- o fix underscores being underlines (#4678)
- o fix interaction with mcc
-
-- fix misc issues with shadow passwords and package managment
- (francois/pixel)
-* Sun Aug 17 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.2-0.30mdk
-
-- drakconnect mcc:
- - allow hostname change
- - dhcp to static fixes
-
-* Tue Aug 12 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.2-0.29mdk
-- drakconnect: fix message (#4564)
-- drakbackup: (stew)
- o fix #4381
- o search for files to restore
- o fix looping in catalog restore
- o gui enhancements (fabrice facorat)
- o deal with users that are deleted from the system (#4541)
-- drakxtools depends on gurpmi
-- lot of misc bug fixes
-
-* Thu Aug 7 2003 Pixel <pixel@mandrakesoft.com> 9.2-0.28mdk
-- drakxservices: xinetd services have a special treatment
-- localedrake: fix the "zh_TW with country China" case
-- no more stock icons
-
-* Mon Aug 4 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.2-0.27mdk
-- ugtk2.pm:
- - revert "use checkboxes instead of icons"
- - fix not possible to select with mouse anymore (rpmdrake etc)
-
-* Mon Aug 4 2003 Pixel <pixel@mandrakesoft.com> 9.2-0.26mdk
-- various fixes
-- clean tarball with no Makefile_c (thanks to Christiaan Welvaart)
-
-* Sat Aug 2 2003 Pixel <pixel@mandrakesoft.com> 9.2-0.25mdk
-- drakauth first appearance
-- diskdrake --nfs and --smb:
- o instead of removing the "Search servers" button when the search is over,
- keep it to allow searching for new servers
- (the label is changed from "Search servers" to "Search new servers") (bug #4297)
-- XFdrake
- o use something like """Virtual 1280 960""" instead of """Modes "1280x960" "1024x768" "800x600" "640x480""""
- o fix test dialog box
-- drakbackup (various changes)
-- drakboot
- o allow to choose /dev/fd0 for the boot device
-
-* Thu Jul 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.24mdk
-- drakbug:
- o use option menus instead of combos
- o use std button layout
-- drakconnect:
- o double click on ethernet interface list lines run lan config
- dialog
- o remove nonsense expert button
-- drakperm: fix crash on adding new permission
-- harddrake: fix #4258
-- mousedrake: use std button layout
-- ugtk2:
- o add infrastucture for rpmlint toggle (semi-selected state mis-functionnal)
- o restore mouse selection
-
-* Thu Jul 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.23mdk
-- drakperm:
- o main window:
- * "ok" button should exit after having saved the preferences
- * localize levels in option menu
- o preferences dialog :
- * fix preferences saving on exit
- * fix tips
-- draksec:
- o restore help for msec checks
- o enhanced help in tooltips
-
-* Thu Jul 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.22mdk
-- drakautoinst, drakper, draksound, and many other tools: use option
- menus instead of combo boxes when the user is selecting from a fixed
- set of options
-- drakboot: hide non working splash stuff
-- drakperm:
- o sanitize gui (upcased labels, understandable labels, ...)
- o settings dialog:
- * localize all fields
- * add tips for all check boxes
- * use std button layout
- * use stock icons
- o rules toolbar: use stock icons
-- net_monitor: fix crash on profile change due to netconnect api
- change
-
-* Wed Jul 23 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.21mdk
-- drakbackup: misc fixes (stew)
-- drakboot: directly configure gdm & kdm
-- drakconnect: fix #4050
-- drakfont: fix #1679 & #3673
-- drakgw:
- o fix not being able to step backward
- o fix canceling resulting in broken dhcp config
- o make --testing option being usefull
-- drakhelp: fix no help for de/it/ru locales (daouda)
-
-* Tue Jul 22 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.20mdk
-- drakconnect: fix "lan config" dialog where fields were not filled
-- draksec: vertically align OptionMenus
-
-* Mon Jul 21 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.19mdk
-- diskdrake, drakconnect: add an help button in standalone mode
-- draksec
- o describe all security levels
- o make it clear that security admin is not a security level
- o colorize security levels names
- o do not offer to set syadmin when reports are disabled
- o fix infamous "when embedded draksec can be enlarged but never shrink back"
- o make 1st tab title somewhat clearer
-- harddrake2: workaround buggy gtk+-2.x that do not enable wrapping textviews when
- realized
-- renew drakconnect wizard gui (2/x):
- o make previous button always be availlable when configuring lan
- o keep user changes when going back to main connection types menu
- o do not loop if one refuse to save changes, just skip the save step
- o fix final success message
- o really translate type connection to be translated
- o try to get more space on screen
- o dhcp host name cannot be set if one want to get it from dhcp server
-
-* Sat Jul 19 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.18mdk
-- draksec:
- o sort functions & checks when writing configuration
- o really fix config load
-
-* Fri Jul 18 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.17mdk
-- draksec:
- o fix preferences loading & saving
- o sort again functions & checks
-
-* Thu Jul 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.16mdk
-- do not exit the whole application when one destroy a dialog
-- drop gtk+1 requires
-- renew drakconnect gui (1/x):
- o embedded mode:
- * remove ugly icon
- * fix internet gateway buttons layout
- * smaller dialogs
- * correctly align fields in "lan configuration" dialog
- * run wizard in background (no more main window freeze until
- wizard exit)
- o wizard mode:
- * proxy configuration step: do not go back two steps back on
- "previous" click, but only one back
- * properly use checkboxes (do not put extra labels before when
- checkbox's label is empty)
-- wizard mode:
- o stock items in wizards for previous/next
- o do not force permanent center of wizard windows, which is not
- user-friendly
- o always use s/TextView/Label/
-
-* Tue Jul 15 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.15mdk
-- drakbackup, drakperm: fix button layout
-- drakboot, drakfloppy: use option menus rather than non editable
- combo
-- drakboot:
- o grey theme config instead of hiding it
- o describe user and desktop lists
-- drakfloppy: grey remove button if no module to remove in modules
- list
-- draksec: wrap labels
-- fix interactive apps on X11 (eg diskdrake)
-- fix error and warning dialogs
-- logdrake: ensure we got a valied email in "email alert"
-- printerdrake: make printerdrake runable
-- xfdrake: make it use stock items too
-
-* Mon Jul 14 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.14mdk
-- drakboot: fix /etc/lilo.conf generation when reading grub config by setting
- valid "boot=" parameter
-- drakconnect, drakfloppy: make checkboxes out of ugly "expert <-> normal modes"
- buttons (saner gui)
-- drakconnect:
- o kill duplicated code, share it with drakfloppy and others
- o renew GUI:
- * make sub windows be modal, centered on parent and trancient dialogs
- instead of toplevel windows
- * fix "Internet connection configuration" dialog
- * fix layout of main window:
- + pack together expert mode toggle and wizard button
- + merge wizard label and button
-- drakfloppy:
- o fix warning on menu building
- o fix module browsing after gtk2-perl-xs switch
- o support new 2.5.x kernels' kbuild
- o fix old brown paper bug (mdk8.2/9.0 :-() not passing extra selected modules
- to mkinitrd
- o fix unable to pick a module again after having removed it from selection
- o renew GUI:
- * window with enabled expert options is too big when embedded: let's move
- expert options into a sub dialog
- * use stock dialogs
-- draksec:
- o translate msec options' default values
- o display descriptions rather than raw function names
-- drakTermserv: fix entry filling
-- logdrake: fix crash when called from net_monitor
-- net_monitor: switch from gtk+-1.2.x to gtk+-2.2.x (fix #3998 btw)
-- sanitize guis, especially button layouts:
- o use std layout (ButtonBoxes) for buttons everywhere
- o use stock items everywhere
- o let interactive apps using stock items on x11 and old drak translated items
- in other backends
- o pack buttons always in the same order and places
- o use OptionMenu instead of Combo Boxes when the user is selecting from a
- fixed set of options
-
-* Thu Jul 10 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.13mdk
-- drakfloppy: one cannot edit output buffer
-- drakperm: fix crash when moving lines around sorted columns
-- draksec: more stock icons
-- logdrake: fixes
-
-* Thu Jul 10 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.12mdk
-- drakboot, drakfont: use stock button
-- drakconnect, drakfloppy: grey widgest instead of hiding them when
- not in expert mode
-- drakconnect, draksec: fix crash
-- drakbackup: misc fixes (stew)
-
-* Wed Jul 9 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.11mdk
-- more work on new perl binding for gtk+-2, especially for drakbug and
- rpmdrake
-
-* Wed Jul 9 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.10mdk
-- switch from gtk2-perl to gtk2-perl-xs
-- a few more stock items
-
-* Sun Jul 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.9mdk
-- increase gui coherency of drakxtools vs other gtk+ apps: use stock icons
-- drakbackup: (stew)
- o show units for hard-drive allocation
- o add "View Configuration" 1st screen.
- o honor user defined limits for backup disk consumption
- o log last backup and to enable view last backup log
- o fix gui crash on restore. (Keld Jorn Simonsen/Cooker list)
-- drakconnect, drakfloppy, drakperm: let columns be sortable
-- drakconnect (isdn): virtual interface ippp0 is started at boot
- (dam's)
-- harddrake2: colorize help
-- keyboard managment: added various new keyboard layouts (pablo)
-
-* Tue Jul 1 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.8mdk
-- drakbackup: try to better fit gui when embedded (fix #4111) (stew)
-- drakTermServ: enable local client hardware configuration (stew)
-- harddrake2: let gui behave better when embedded
-- ugtk2: locales setting fix for rpmdrake (gc)
-
-* Tue Jun 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.7mdk
-- drakboot: more work on grub conf reread
-- drakedm: fix crash on service restart
-- drakfont: fix crash when trying to remove empty font list (#1944)
-
-* Tue Jun 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.6mdk
-- autoinstall: (pixel)
- o fix regarding LVMs
- o support encrypted partitions
-- draconnect: misc fixes (poulpy)
-- drakboot: reread grub config file if grub is the current boot loader
- (#3965)
-- diskdrake: fix for nfs mount points (pixel)
-- drakgw: reread current network conf (florin) (#468)
-- i18n fixes (#3647 and co)
-- mousedrake: add mouse test in non-embedded mode (#2049) (gc)
-
-* Tue May 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.5mdk
-- keyboardrake: resync with XFree86-4.3 (pablo)
-
-* Tue May 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.4mdk
-- drakconnect: fix #3628 (ensure 644 perms on /etc/resolv.conf)
-
-* Wed May 21 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.3mdk
-- drakbackup: fixes regarding file names in differntial mode (stew)
-- drakboot, drakconnect, harddrake2, printerdrake: misc cleaning
-- drakconnect:
- o workaround #3341 (display "Bad ip" instead of a blank field if we
- failled to parse the ip)
- o fix #853 (check ip) (poulpy)
-- printerdrake: fix #1342 (english rephrasing)
-- requires: fix #3485
-
-* Tue May 20 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.2mdk
-- printerdrake: misc bug fixes
-- drakconnect: fix #763, #2336 (ethX aliases on network card changes)
- (poulpy)
-
-* Tue May 20 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.2-0.1mdk
-- drakconnect: fix #2530 (extraneous vindow on wizard error) (poulpy)
-- drakedm: fix #1743 (offer to restart the dm service)
-- drakfont: fix #3960 (divide by zero execption)
-- draksec: fix #3616 (draksec discarding changes)
-- my_gtk: fix #3952 (non working drakcronat)
-
-* Fri May 16 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-38mdk
-- drakboot:
- o do not install both lilo and grub when grub is choosen
- o further fix #2826: replace spaces by underscores in labels
- o further fix #3560: update main bootloader label after the
- bootloader switch
- o raise a wait message window so that the user can figure out what
- occurs (lilo installation being quite long)
-- harddrake: localize drive capabilites (aka burning, dvd managment, ...)
-- drakconnect: fix #852: add a step to warn user before writing
- settings (poulpy)
-
-* Thu May 15 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-37mdk
-- drakfont: fix #1352 (do not add font directory with dummy messages)
-- harddrake2: fix #3487 (invalid charset in help windows)
-- drakconnect: fix "isdn modem choice step is skipped" bug (poulpy)
-
-* Mon May 12 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-36mdk
-- drakboot:
- o do not loop on console (part of #3560) (pixel)
- o do not log localized messages
- o if the bootsplash is missing, just go back to main config window
-
-* Wed Apr 30 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-35mdk
-- draksec: fix #3618 (let one pick any security level)
-- harddrake service: display all removed devices
-
-* Tue Apr 29 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-34mdk
-- drakedm: fix #3701 (return back to the display managers menu if one
- cancel the installation of the required packages)
-- drakfont: empty the font queue when step back (poulpy)
-
-* Thu Apr 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-33mdk
-- fix provides
-
-* Wed Apr 23 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-32mdk
-- translation snapshot
-
-* Mon Apr 7 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-31mdk
-- harddrake gui: fix menu entry description
-- drakbtoot: fix #2826 (aka crash when one enter space in lilo label)
-- ugtk2: fix #3633
-- drakconnect:
- o fix #1675: swap the text and button widgets
- o typo fix (dam's)
-- new perl_checker compliance (pixel)
-- xfdrake: better keyboard managment (pixel)
-- update translations (pablo)
-- build fix for 64bits arch (gwenole)
-
-* Fri Apr 4 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-30mdk
-- fix drakfloppy crash on boot floppy creation
-- ugtk2.pm: fix slight pb with gtktext_insert (#3633) (gc)
-
-* Fri Mar 28 2003 Pixel <pixel@mandrakesoft.com> 9.1-29mdk
-- use ServerFlags DontVTSwitch for i845, i865 and i85x
-
-* Mon Mar 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-28mdk
-- drakconnect: add support for ltpmodem
-
-* Fri Mar 21 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-27mdk
-- harddrake service: increase default timeout from 5 to 25 seconds
-
-* Sun Mar 16 2003 Warly <warly@mandrakesoft.com> 9.1-26mdk
-- do a correct cvs up of all gi before (me sux)
-
-* Sat Mar 15 2003 Warly <warly@mandrakesoft.com> 9.1-25mdk
-- fix drakperm fatal error in editable mode
-
-* Fri Mar 14 2003 Pixel <pixel@mandrakesoft.com> 9.1-24mdk
-- fix XFdrake handling NVidia proprietary drivers
-
-* Thu Mar 13 2003 Till Kamppeter <till@mandrakesoft.com> 9.1-23mdk
-- printerdrake: Fixed bug #417: '$' character in printer URI was not
- correctly handled.
-- Desktop group simplification (francois).
-- Translation updates (pablo, fabian).
-
-* Thu Mar 13 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-22mdk
-- drakboot/drakx: fix #3161 (ensure right permissions on
- /etc/sysconfig/autologin for bad root umask case)
-- enable smooth sound configuration update from mdk9.0 (new unified
- via sound driver) and from mdk8.x
-- scannerdrake detection fixes (till)
-- drakTermServ: Fix IP pool range (stew)
-
-* Wed Mar 12 2003 Pixel <pixel@mandrakesoft.com> 9.1-21mdk
-- diskdrake: have a default mount point for newly added removables
-- drakupdate_fstab: allow --del to remove fd0 & fd1
-
-* Wed Mar 12 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-20mdk
-- drakedm: install dm if needed
-- harddrake service: handle multiple remvable devices in the same hw
- class (eg: 2+ cd burners or 2+ dvd drives or 2 floppies, ...)
-- drakgw: really use the chosen net_connect interface (florin)
-- drakbackup: gtk2 port fixes (stew)
-- drakboot: fix #3048 (pixel)
-
-* Tue Mar 11 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-19mdk
-- ugtk2: fix still seldom happening #1445 (clicking two times too
- fast) (gc)
-- drakxservices: fix embedding and packing in standalone mode (tv)
-- localedrake: add menu entry (fix #1461) (tv)
-- draksec: fix wait messages displaying (label was not displayed) in
- both standalone and embedded modes (tv)
-- printerdrake fixes (till)
-- translation updates
-
-* Fri Mar 7 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.1-18mdk
-- ugtk2.pm: fix rpmdrake dumping core when multiple searchs in some
- sorting modes (#2899)
-- network/adsl.pm: one small logical fix (fpons)
-
-* Thu Mar 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-17mdk
-- draksplash:
- o fix #1766
- o do not crash when browsing (#1947)
- o do not crash on color selection
-- avoid virtual ethX to be reconfigured by drakconnect (francois)
-
-* Thu Mar 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-16mdk
-- draksound: fix #1929
-- moved code of XFdrake NVIDIA support to generic in standalone. (francois)
-
-* Thu Mar 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-15mdk
-- fix infamous #2672
-- let draksec fit in 800x600
-- harddrake: fix detection of mod_quickcam's webcams
-- scannerdrake: do not detect mod_quickcam's webcams as scanners
-- logdrake:
- o do not update the text buffer when filling it
- o show the wait message also when searching while embedded (else the
- user will be confused and will wonder why logdrake is freezed
-- fix drakwizard ("next" button being packed too far) (pixel)
-
-* Wed Mar 5 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.1-14mdk
-- localedrake: fix behaviour when only one lang is available (clicking
- on "cancel" on the country selection didn't cancel it)
-- drakconnect: fixes in isdn configuration (flepied)
-- drakperm (tv):
- o fix #1776
- o fix small memory leak (tree iterators)
- o restore edit dialog on doble click
-- logdrake: restore "pre gtk+-2 port" search behavior (tv)
- o empty log buffer on search startup
- o freeze buffer while searching
- o scroll down the log buffer on filling
-- localedrake: don't categorize langs, for better looking (since
- most people will have very few of them) (gc)
-- fixed wizard mode not taken into account for drakconnect in
- drakconf. (francois)
-- fixed expert mode in drakconnect for dhcp for cleaning
- variables. (francois)
-- fixed not to use invalid ethX. (francois)
-
-* Mon Mar 3 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-13mdk
-- drakboot: fix #2091, #2480
-
-* Mon Mar 3 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-12mdk
-- drakperm: fix rules saving
-- printerdrake: various fixes (till)
-
-* Fri Feb 28 2003 Guillaume Cottenceau <gc@mandrakesoft.com> 9.1-11mdk
-- drakconnect is no more supporting profiles. (francois)
-- drakconnect support for sagem Fast 800 used by free.fr (francois)
-- drakconnect support for ltmodem. (francois)
-
-* Thu Feb 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-10mdk
-- harddrake service:
- o offer to configure cdrom/dvd/burners/floppies/
- and the like mount points
- o configure firewire controllers
-- diskdrake fixes (pixel)
-- drakconnect fixes (francois)
-
-* Thu Feb 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-9mdk
-- drakconnect:
- o fix lan configuration window filling
- o fix net configuration window sizing
-- drakperm: make it fit better in both embedded and non embedded modes
-- drakgw: fix embedding
-- logdrake: fix scrolling for embedded explanations
-- mousedrake: fix embedding (gc)
-
-* Thu Feb 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-8mdk
-- drakfloppy gtk+2 port
-- drakboot:
- o cleanups
- o disable autologin settings when autologin is disabled
- o make embedded app look better
-- harddrake2:
- o fix #1858 (usb adsl speed touch modem misdetection)
- o provides "options" and "help" pull down menu when embedded
- o detect firewire controllers
-- drakedm: strip empty lines
-- lot of network fixes (francois)
-- drakbackup gtk+2 port fixes: #1753, #1754, #1933, #2159 (stew)
-
-* Tue Feb 25 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-7mdk
-- drakfloppy:
- o fix #1761
- o only list physically present floppies
-- harddrake gui:
- o better support for zip devices
- o removable devices cleanups
- o display dvd/burning capacities
-- harddrake service:
- o do not flash the screen if nothing has to be configured
- o removable devices cleanups
-- fix #1802 (pixel)
-
-* Mon Feb 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-6mdk
-- fix logdrake's mail alerts (services alert, don't crash)
-- drakperm: fix #1771, non editable combo1
-- drakfloppy: fix #1760
-- drakxservices: fix #502
-
-* Mon Feb 24 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-5mdk
-- clean up tools embeddeding in the mcc
- o make it hard to freeze the mcc
- o make tools loo better when embedded (no embedded wait messages,
- ...)
-- harddrake2:
- o add "/dev" to devfs paths
- o do not offer to configure module when there's no module or when
- driver is an url or a graphic server
- o fix embedding
-
-* Fri Feb 21 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-4mdk
-- drakconnect fixes
-
-* Thu Feb 20 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-3mdk
-- drakboot: fix #1922
-- drakgw, drakboot: remove gtk+ warnings
-- harddrake2: fix latest l10n bugs
-- disdkrake fixes (pixel)
-- drakconnect: dhcp fix (poulpy)
-- printerdrake fix (pixel)
-
-* Thu Feb 20 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-2mdk
-- logdrake: fix #1829
-- translation updates
-- scannerdrake:fix embedding
-- drakxtv: workaround a drakx bug which don't always add bttv to
- /etc/modules (fix #)
-- printerdrake:
- o fix embedding
- o hide the icon when embedded to get more space
- o various improvements (till)
-- drakfont: fc-cache enhancement (pablo)
-- drakTermServ: fix #1774, #1775 (stew)
-- newt bindind: better trees managment on console (pixel)
-- diskdrake fixes (pixel)
-- xfdrake: log failure sources (pixel)
-
-* Tue Feb 18 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-1mdk
-- fix "nothing to edit" in drakperm (#1769)
-- fix draksec help
-- drakedm: fix badly generated config file by 3rd party progs
-- i18n fixes (pablo, gc)
-- scannerdrake updates (till)
-- diskdrake fixes: raid, ... (pixel)
-- printerdrake fixes (till)
-- drakconnect fix (poulpy)
-
-* Mon Feb 17 2003 Till Kamppeter <till@mandrakesoft.com> 9.1-0.34mdk
-- Fixed automatic print queue generation for HP DeskJet 990C.
-
-* Mon Feb 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.33mdk
-- fix wizard mode (pixel)
-
-* Mon Feb 17 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.32mdk
-- harddrake: fix #1718
-- translation snapshot
-
-* Sun Feb 16 2003 Till Kamppeter <till@mandrakesoft.com> 9.1-0.31mdk
-- Various fixes/improvements on printerdrake:
- o Restructured function "main()"
- o Auto-generation of print queues during installation
- o Support for unknown printers in auto-detection and auto-generation of
- print queues
- o Fixed display of printer help pages
- o Fixed determination of default printer
-
-* Fri Feb 14 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.30mdk
-- drakperm fixes
-- drakfont fixes
-
-* Thu Feb 13 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.29mdk
-- fix gc breakage
-
-* Thu Feb 13 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.28mdk
-- vastly improved scannerdrake (till):
- o fixed scsi/usb/parrallel scanners detection
- o new known scanners
- o support scanners with multiple ports
- o better configuration files
- o fix "SnapScan" <-> "snapscan" bug
- o fix "HP scanners had no manufacturer field"
-- drakxservices fixes (pixel)
-
-* Wed Feb 12 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.27mdk
-- fix embedded drakconnect:
- o no crash on expert "configure" buttons
- o better behaviour when buttons are hidden/showx
-- harddrake/draksound: card list update
-- pixel:
- o diskdrake:
- * discrimate hpfs and ntfs
- * more precise message when formatting / fsck'ing / mounting
- partitions
- * hide passwords for smb mount points
- o XFdrake: fix #707
-- drakperm: first gtk+2 port fixes, still more to come (pouly & me)
-- fix drakbug help (daouda)
-- drakconnect fixes (frederic lepied)
-- updated translations (pablo)
-
-* Fri Feb 7 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.26mdk
-- drakconnect : dhcp & zeroconf fixes
-- drakfont : full Gtk2
-
-* Thu Feb 6 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.25mdk
-- drakconnect fixes
-
-* Thu Feb 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.24mdk
-- fix drakfloppy
-- diskdrake: s/fat/windows/ because of ntfs
-- poulpy:
- o drakfont updates
- o drakconnect fixes
-- translation updates (pablo & co)
-- add drakedm to choose display manager
-- drakhelp: install help on demand (deush)
-- harddrake2: fix for rtl languages
-
-* Wed Feb 5 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.23mdk
-- draksec cleanups
-- fix harddrake2 embedding in mcc
-- update translations (pablo)
-
-* Tue Feb 4 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.22mdk
-- add support for adiusbadsl 1.0.2 (fponsinet)
-- faster draksec shutdown
-
-* Mon Feb 3 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.21mdk
-- draksec:
- o gui look nicer
- o add help for check cron
- o fix "first notebook page do not show up"
- o do not be listed in drakxtools-http
- o faster startup
-- sanitize draxktools-http service script
-- diskdrake: ntfs resizing bug fixes (pixel)
-
-* Fri Jan 31 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.20mdk
-- drakconnect: add more zeroconf support
-
-* Thu Jan 30 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.19mdk
-- printerdrake: fixes for new foomatic
-- requires a recent enought perl-GTK2
-- harddrake2:
- o fix misdetection of nvnet part of nvforce2 chips
- o move nforce system controllers in bridge class (which is renamed
- "bridges and system controllers")
- o mark class names as being translatable
-- logdrake works again in both embedded and non embedded cases
-- translation updates, add Tajiki (pablo)
-- interactive: add support for trees on console (pixel)
-- diskdrake: ntfs resizing support (pixel) (acked by ntfsresize author)
-
-* Wed Jan 29 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.18mdk
-- fix locales managment for non interactive tools (aka pure gtk+ tools)
-- harddrake2:
- o restore cd/dvd burners detection
- o fix doble detection of pci modems
- o don't display vendor & description when we don't have them for ata disks
- o fix ghost modem detection
- o logdrake is embeddable again
-
-* Tue Jan 28 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.17mdk
-- drakfont updates (poulpy):
- o fix progress bar,
- o about box,
- o ugly border when embedded.
-- printerdrake: various fixes for local printer (till)
-- small fix in drakgw (florin)
-
-* Mon Jan 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.16mdk
-- fix wait messages (gc)
-- vietnamese translation update
-
-* Mon Jan 27 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.15mdk
-- diskdrake:
- o make sub window be modal
- o fix text mode (pixel)
-- drakconnect:
- o don't log actions not done
- o fix modem detection (poulpy)
- o cleanups (poulpy, pixel)
-- draksound: remove last source of "unlisted driver" because of hand
- edited /etc/modules.conf
-- drakxtv: add test mode
-- fix encoding conversions for non latin1 (gc)
-- harddrake2:
- o use new help system
- o make sub window be modal
- o configure sound slots on bootstrapping
-- logdrake:
- o don't display "wait while parsing" window when embedded in mcc
- o log all drakx tools (not only the first one)
-- mousedrake: cleanups (pixel, gc)
-- printerdrake: updates for new foomatic (till)
-- requires old perl-gtk for drakfloppy and net_monitor which works
- again
-- translation updates (pablo)
-- xfdrake: various fixes (pixel)
-
-* Fri Jan 24 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.14mdk
-- drakconnect :
- o get back serial modem detection
-
-* Thu Jan 23 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.13mdk
-- fix standalone apps error on --help
-- many enhancements to draksound:
- o no more unlisted message
- o "how to debug sound problem" window
- o offer to pick any driver if no detected sound card (for eg isa
- card owners) or if no alternative driver
- o handle proprietary drivers
- o fix unchrooted chkconfig call
-- draksec: display help in tooltips
-- drakconnect :
- o cleaning (poulpy, me)
- o zeroconf support (poulpy)
-- big interactive cleanup for drakx and focus handling (pixel)
-- boot floppy fixes (pixel)
-- diskdrake: don't display twice the same mount point (pixel)
-- keyboardrake:
- o cleanups (pixel)
- o update supported keyboard layouts ... (pablo)
-- xfdrake: (pixel)
- o cleanups
- o don't use anymore qiv to render background while testing X config
-- add drakpxe (francois)
-- printerdrake:
- o updates (till)
- o fix chrooted services (me)
-- translation updates (many people)
-- mousedrake: fix scrolling test (gc)
-- ugtk2: fix some (small) memory leaks (gc)
-- ppc updates (stew)
-- english sentences proofreading (pablo, stew)
-- fix gtk+-2 port of mousedrake (me),
-
-* Fri Jan 17 2003 Damien Chaumette <dchaumette@mandrakesoft.com> 9.1-0.12mdk
-- drakconnect :
- o little dhcp behavior rework
- o fix /etc/hosts localdomain
-
-* Thu Jan 16 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.11mdk
-- snapshot
-
-* Thu Jan 09 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.10mdk
-- draksound : fix and update driver list
-- printerdrake: fix staroffice/ooffice configuration (till)
-
-* Tue Jan 07 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.9mdk
-- fix wizards
-
-* Tue Jan 7 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.8mdk
-- update french translation
-- harddrake: treat usb hubs as usb controllers
-- logdrake: set it non editable
-- printerdrake:
- o simplify gimp-print configuration
- o let it work
-- various cleanups (pixel)
-- standalone tools: first help system bits (deush)
-
-* Mon Jan 6 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.7mdk
-- printerdrake fixes
-
-* Thu Jan 2 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.6mdk
-- embedding fixes
-- wizard fixes
-- fix permissions setting
-- internals cleanups
-- drakconnect & printerdrake fixes
-- gtk+-2 fixes
-- faster xfdrake startup
-- translations update
-- fix redefinition warnings
-
-* Mon Dec 30 2002 Stefan van der Eijk <stefan@eijk.nu> 9.1-0.5mdk
-- BuildRequires: perl-MDK-Common-devel
-
-* Thu Dec 19 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.4mdk
-- gtk+2 snapshot
-
-* Wed Dec 04 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.3mdk
-- snapshot for mcc
-
-* Mon Nov 18 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.2mdk
-- more printerdrake redesign
-- more perl_checker fixes
-- standalone : provide a common cli options/help manager
-- logdrake : use my_gtk to transparently handle embedding and ease future gtk2 port
-- kill dead code
-
-* Fri Nov 15 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-0.1mdk
-- bump version
-- add missing printer/ directory
-- typo fix in drakxtv
-
-* Thu Nov 14 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.12-1mdk
-- printerdrake cleanups
-- various perl lifting
-- harddrake:
- o display floppy driver type as well as mouse type & network printer port
- o fix vendor/model spliting for eide disks when there's neither
- space nor separator
- o v4l card lists : resync with latest bttv & saa7134 drivers
-
-* Mon Nov 11 2002 Pixel <pixel@mandrakesoft.com> 1.1.11-3mdk
-- bug fix (most drakxtools)
-
-* Sun Nov 10 2002 Pixel <pixel@mandrakesoft.com> 1.1.11-2mdk
-- bug fix (printerdrake, netconnect)
-
-* Thu Nov 7 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.11-1mdk
-- harddrake:
- o only display "selected" fields, skip other (aka only display
- fields we described)
- o print name and value of skipped fields on console
- o only display help topics related to currently displayed fields in
- right "information" frame
- o if no device selected, display a message explaining the help dialog
- o don't display modem when there're none
- o describe most cpu fields
- o simplify the coloring logic
-
-- detect_devices :
- o getModem() : simplify
- o getCPUs() : fix cpu fields parsing
-
-* Wed Nov 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.10-4mdk
-- s/_(/N(/
-
-* Tue Nov 05 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.10-3mdk
-- rebuild for newt
-
-* Mon Nov 4 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.10-2mdk
-- snapshot
-
-* Wed Oct 16 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.10-1mdk
-- harddrake :
- o try to discriminate webcams from video cards
- o fix not displayed unknow devices
-- detection engin :
- o update eide vendors list
- o detect cpus
- o adsl work (damien)
-- drakbug:
- o make ui faster
- o fix displayed result when the package isn't installed
-- drakTermServ : fixes (stew)
-- smb updates (stew)
-- fix broken danish translations (wrong unicode encoding) (pablo)
-- update other translations by the way (pablo)
-
-* Fri Sep 20 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-53mdk
-- remove useless warnings from harddrake
-
-* Fri Sep 20 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-52mdk
-- fix draksec
-
-* Fri Sep 20 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-51mdk
-- printerdrake: various fixes (till)
-- drabug:
- o fix spurious '1' file creation
- o don't print error messages when a program isn't found
-
-* Tue Sep 17 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-50mdk
-- draksec:
- o add ignore option to pull-down list
- o remove not anymore used libsafe option
- o save items
- o reread already set item
-
-* Tue Sep 17 2002 Warly <warly@mandrakesoft.com> 1.1.9-49mdk
-- printerdrake fix for webfetch
-
-* Mon Sep 16 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-48mdk
-- fix die wizcancel in non wizard mode (dams sucks?)
-
-* Sat Sep 14 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-47mdk
-- fix printerdrake network scanning for printers/print servers hangs
- on with firewalled machines (till)
-- fix printerdrake curl dependancy break urpmi (till)
-- obsoletes drakfloppy (daouda)
-
-* Thu Sep 12 2002 Damien Chaumette <dchaumette@mandrakesoft.com> 1.1.9-46mdk
-- fix broken net_monitor
-
-* Thu Sep 12 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-45mdk
-- try to fix drakgw & drakfirewall thx to pixel and florin
-- fix drakfloppy and logdrake (tv)
-
-* Wed Sep 11 2002 Damien Chaumette <dchaumette@mandrakesoft.com> 1.1.9-44mdk
-- drakconnect :
- o fix RTC, ISDN detection
- o fix pcmcia cards detection / module list
- o check DNS and Gateway IPs
-
-* Mon Sep 9 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-43mdk
-- move back draksec to drakxtools
-- harddrake:
- o don't pollute sbin namespace with one shot scripts
- o add run wrapper script for harddrake service
- o disable ?dm part
-- draksound:
- o really display default driver
- o wait message while switching
-- update translations
-
-* Sat Sep 7 2002 Daouda LO <daouda@mandrakesoft.com> 1.1.9-42mdk
-- cvs up before packaging (fix messy drakboot conf).
-
-* Fri Sep 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-41mdk
-- fix harddrake service, run non essential checks after dm start
-
-* Fri Sep 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-40mdk
-- harddrake:
- o fix usb mouse detection
- o list --test in -h|--help
- o enhanced draksound :
- * blacklist cs46xx and cs4281 drivers : we won't unload these
- drivers since they're know to oopses the kernel but just warn
- the user
- * chroot aware - can be used in drakx
- * workaround alsaconf's aliases
- * add an help button that describe ALSA and OSS
- * display current driver, its type (OSS or ALSA), and the default
- driver for the card
- * if there's no (usb|pci) sound card, print a note about sndconfig
- for isa pnp cards
-
-* Fri Sep 06 2002 David BAUDENS <baudens@mandrakesoft.com> 1.1.9-39mdk
-- Re-add old obsolete Aurora's images needed by drakboot (this is stupid)
-
-* Fri Sep 06 2002 David BAUDENS <baudens@mandrakesoft.com> 1.1.9-38mdk
-- Update mdk_logo.png
-- Update drakbackup icons
-
-* Fri Sep 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-37mdk
-- drakperm, drakbackup: fix embedded mode
-
-* Fri Sep 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-36mdk
-- gtkicons_labels_widget() :
- o add support for mcc' big icon animation
- o cleanups
- o simplify notebook redrawing vs flick/icon_aligment
-
-* Thu Sep 5 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-35mdk
-- Update banners (David Baudens)
-- my_gtk snapshot for rpmdrake (gc)
-
-* Wed Sep 4 2002 Stew Benedict <sbenedict@mandrakesoft.com> 1.1.9-34mdk
-- add perl-Expect requires for drakbackup (now enabled)
-
-* Wed Sep 4 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-33mdk
-- harddrake: fix scrolling tree
-
-* Wed Sep 4 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-32mdk
-- embbed drakbackup
-
-* Wed Sep 4 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-31mdk
-- snapshot for gtktext_insert with color/font capabilities (rpmdrake)
-
-* Tue Sep 3 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-30mdk
-- ugtk:
- o better fix for glib warning that don't make drakx feel mad
- o make icons more transparent when selected in mcc
-
-* Mon Sep 2 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-29mdk
-- harddrake:
- o use new icons
- o add menu icon
-- mcc: ensure all binaries're there
-- ugtk: remove all glib warnings
-
-* Mon Sep 2 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-28mdk
-- tinyfirewall is now drakfirewall (daouda)
-
-* Fri Aug 30 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-27mdk
-- ugtk: add alpha blendering support for mcc's icons through pixbufs
- o readd gdkpixbuf support
- o ensure imlib is used by default to load files, not gdk-pixbuf
- o compose_with_back(): load a png icon into a pixbuf and call
- compose_pixbufs with background pixbuf
- o compose_pixbufs(): render transparent icon onto background into a
- new pixbuf
- o merge gtkcreate_png_pixbuf() from gdk-pixbuf-0-branch : load an
- icon into a pixbuf
- gdk-pixbuf-0-branch also uses it to simplify a lot of code
- o gtkicons_labels_widget() :
- * add a new background pixbuf parameter that'll be composited with icons
- * render icons with alpha blender in right area
- * kill imlib_counter
- * kill imlib usage for
- * kill dead code (was dead since i fixed mcc memory leaks)
-- fix init-script-without-chkconfig-{post,preun}
-
-* Thu Aug 29 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-26mdk
-- harddrake:
- o quit button really work in embedded mode
- o move so called eide raid controllers from unknown to ata
- controllers
-- logdrake: add a scrollbar when embedded in mcc
-
-* Thu Aug 29 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-25mdk
-- snapshot (drakupdate_fstab --auto feature (pixel), logdrake don't
- display too much information in explanations to save space for what's
- useful)
-
-* Thu Aug 29 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-24mdk
-- snapshot for display_info availability in ask_browse for rpmdrake
-
-* Thu Aug 29 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-23mdk
-- drakupdate_fstab first appearance
-
-* Wed Aug 28 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-22mdk
-- harddrake: don't display the menu bar in embedded mode, but a "quit"
- button
-
-* Tue Aug 27 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-21mdk
-- drakconnect fixes (damien)
-
-* Fri Aug 23 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-20mdk
-- draksound: display right message ("no alternative") when no
- alternative rather than "no known module"
-- fixes for multiple NIC boxes (florin)
-
-* Fri Aug 23 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-19mdk
-- draksound: use right sound slot
-
-* Fri Aug 23 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-18mdk
-- ugtk: fix most mcc memory leaks (pending ones seems related to perl-gtk)
-- tinyfirewall: misc fixes (pixel)
-
-* Fri Aug 23 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-17mdk
-- snapshot (including new tinyfirewall)
-
-* Thu Aug 22 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-16mdk
-- snapshot (for rpmdrake)
-
-* Wed Aug 21 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-15mdk
-- add draksound
-- mousedrake: default usbmouse link to input/mice rather than
- input/mouse0, thus giving support for multiple mouse, wacom tables,
- ...
-
-* Wed Aug 21 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-14mdk
-- fix dangling waiting watch mousecursor (well, please test!)
-- adding draksplash (nathan)
-
-* Mon Aug 19 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-13mdk
-- snapshot (including better XFdrake)
-
-* Wed Aug 14 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-12mdk
-- snapshot (fix diskdrake making a hell of fstab)
-
-* Tue Aug 13 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-11mdk
-- snapshot (including "diskdrake --dav")
-
-* Mon Aug 12 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-10mdk
-- snapshot (various bug fixes including no-floppy-box-segfault)
-
-* Fri Aug 9 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-9mdk
-- harddrake:
- o module configuration window:
- * read current options
- * don't display ranges, we cannot really know when a range
- is needed and so display them in wrong cases
- * read & parse modules.conf only when configuring the module,
- not on each click in the tree
- * don't display ranges, we cannot really know when a range is needed
- and so display them in wrong cases (kill code, enable us to simplify
- modparm::parameters after
-
-* Fri Aug 9 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-8mdk
-- snapshot
-
-* Tue Aug 6 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-7mdk
-- harddrake, scannerdrake: add scsi scanner detection support
-- harddrake: detect external modems
-
-* Tue Aug 6 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-6mdk
-- rebuild for perl thread-multi
-
-* Mon Aug 5 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-5mdk
-- snapshot for rpmdrake
-
-* Fri Aug 2 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-4mdk
-- have interactive::gtk::exit in my_gtk so that my_gtk apps can call
- it and then fix the problem of clock mouse cursor on exit
-
-* Thu Aug 1 2002 Pixel <pixel@mandrakesoft.com> 1.1.9-3mdk
-- keyboarddrake now handles choosing toggle key (XkbOptions)
-
-* Thu Aug 1 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.9-2mdk
-- remove obsoleted drakconf
-- various fixes
-- [ugtk::gtkcreate_png] suppress all gtk warnings
-- updated vietnamese translation (pablo)
-- [interactive::gtk] fix many warnings when {icon} is not given (pixel)
-
-* Thu Aug 1 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.9-1mdk
-- integrate patches in my_gtk and ugtk for new rpmdrake:
- - [ugtk] add "gtkentry" so that we can create an entry and set
- initial value in one call
- - [my_gtk::main] don't set the events, to fix keyboard focus
- problem in entries when embedded
- - [my_gtk::_create_window] add $::noBorder, to not have a frame
- in the main window, so that it's possible to end up with
- windows with no border
- - [my_gtk] add ask_dir which is a ask_file with only the dir list
- - [my_gtk] add ask_browse_tree_info to the export tags, and:
- - add support for parents with no leaves, so that then we can
- partially build the trees (for speedup)
- - add "delete_all" and "delete_category" callbacks
- - use Gtk::CList::clear when removing all the nodes, much
- speedup
-- Titi, harddrake :
- o workaround for the busy mouse cursor set by
- gtkset_mousecursor_wait() in my_gtk::destroy
- o remove debugging prints
- o cleanups
- - drakx: various cleanups
-
-* Thu Aug 1 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-16mdk
-- my_gtk:
- o splitup it into my_gtk and ugtk as done by dams
- o resync with dams
- o increase the icon blinkage from 50ms to 100ms
-- harddrake:
- o use new embedded managment
-
-* Thu Aug 1 2002 Pixel <pixel@mandrakesoft.com> 1.1.8-15mdk
-- harddrake (titi):
- o add embedded mode for drakconf
- o print less gtk warnings
- o module configuration window
-- fix mousedrake
-- fix XFdrake in embedded
-- enhance XFdrake
-- don't require detect-lst (titi)
-- printerdrake work in progress (till)
-
-* Wed Jul 31 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-14mdk
-- harddrake:
- o fix pcmcia network card detection (unknown => ethernet)
- o fix scsi detection :
- * fix SCSI controllers detection (unknown => scsi controllers)
- * fix misdetection of scsi devices as scsi host adapter
- * fix double scsi devices detection (both unknown and real
- category)
-- updated translations
-- fix mousedrake (pixel)
-- drakbug, drakbackup: spell/i18n fixes (pixel, me)
-- xfdrake: fixes (pixel)
-- new draksex (stew)
-- diskdrake: (pixel)
- o fix LVM on RAID
- o explain the pb when maximal number of primary partitions is reached
-
-* Mon Jul 29 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-13mdk
-- harddrake:
- o service: fix config file conversion
- o harddrake::ui :
- * s/channel/Channel/
- * bus_id is for usb devices too
- * remove obsolete fields info and name
- * add nbuttons, device, old_device descriptions
-- updated XFdrake (gtk resolution chooser work, i810 fixes, ...) (pixel)
-- remove "Requires: groff" (nobody know why it's there) (Pixel)
-- updated translations (nl/id/vi)
-- standalone/logdrake: (deush)
- o don't display services that are not installed
- o word wrap string correctly
- o cleanup
-- bootloader.pm: (pixel)
- o let the bootloader::mkinitrd error be seen by the GUI
- o fix dying when mkinitrd doesn't create an initrd
-- interactive.pm: error messages fixes (pixel)
-- diskdrake: add 0x35 partition table id meaning JFS (under OS/2)
- (thank to Mika Laitio)
-- printerdrake: first step of automatic HP multi-function device
- configuration with HPOJ 0.9. (till)
-- drakTermServ (stew)
- o Check for/install terminal-server and friends.
- o More intelligent error message when mkisofs fails.
- o Cleanup code for use strict.
- o Fix crash when no backup dhcpd.conf.
-- drakbackup: (stew)
- o Numerous GUI crash fixes, oddities.
- o Install needed packages.
- o Fix email, daemon modes.
- o Add rsync, webdav, cd, tape capabilities.
- o Consolidate net method setup screens.
- o Add CD device capability query.
-
-* Thu Jul 25 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-12mdk
-- simplify harddrake service:
- o we don't need to set media_type, we don't use it
- o mouse and mass storage media use the same key, let merge their
- code path
- o merge timeout and cancel cases
-
-- harddrake::data : only do one probeall here (there's still many in
- detect_devices, probing caching should go there)
-
-- harddrake:ui :
- o add a fields data structure:
- * put together field translation and field description
- * this enable to get rid of %reverse_fields usage & creation
- * this ensure all field names & translations are marked
- translatables for gettext
- * move $wait declaration around its usage and explicit its
- destruction
- * remove usb debugging message needed to trace the null
- description bug i fixed in ldetect
- * simplify the device fields rendering "because of" the
- above
- * simplify the help window creation/display/destruction
- (only one statement left)
- o explicitely call interactive->exit
- o remove all "no signal to disconnect" gtk+ warnings
-
-
-* Thu Jul 25 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-11mdk
-- rebuild against new libldetect (fix (null) descriptions)
-- new XFdrake (pixel)
-- harddrake:
- o devfs names
- o scanner support;
- * don't account scanners as unknown devices
- * split scannerdrake:val into vendor and description
- * don't display bogus "val:%HASH"
-- updated translations (fr, pl)
-- tools can be runned on console again
-
-* Tue Jul 23 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-10mdk
-- harddrake :
- o remove - between vendor and model for ibm eide disks
- o network devices are configurable again now
-- draksec : typo fix (deush)
-
-* Tue Jul 23 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-9mdk
-- harddrake :
- o don't show "cancel" button in about and help windows
- o service: convert config file from plain perl to Storable binary
- file (faster startup)
-- general reorganization cleanup:
- o move interactive_* into interactive::*
- o move partition_table_* into partition_table::*
-- XFdrake: more cleanups (pixel)
-
-* Sun Jul 21 2002 Pixel <pixel@mandrakesoft.com> 1.1.8-8mdk
-- new snapshot (beware of XFdrake)
-
-* Thu Jul 18 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-7mdk
-- remove last draknet reference in harddrake::ui
-- disable diagnostics and strict mode
-
-* Thu Jul 18 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-6mdk
-- able to restart WindowMaker if needed
-- draknet is dead; vival el drakconnect
-- devices managment:
- o no need to write /etc/sysconfig/harddrake2/previous_hw in
- %%post since harddrake2 service doesn't configure anything if
- previous config was empty
- o fix usb mac mouse detection
- o move scsi/ata controllers, burners, dvd, ... from
- unknown/others into their own"non configurable" sections
- o fix problems with usb-interface
-- XFdrake: big cleanup
-- general cleanups
-- translation updates
-
-* Thu Jul 11 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-5mdk
-- drakx :
- o code enhancement: increase coherency around the whole drakx
- code regarding devices
- o decrease the debug verbosity
-- harddrake2 :
- o i18n:
- * move $version out of translatable strings
- o ui:
- * increase default main window size
- * put back the hw tree root
- * eide devices: split info between vendor and model strings
-- spec :
- o fix parrallel build
- o list and describe all gui tools from drakxtools
-
-* Wed Jul 10 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-4mdk
-- fix perl depandancy
-
-* Tue Jul 09 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-3mdk
-- harddrake2:
- o no need to 'use strict' in "binary" => remove warnings
- o fix boot freeze on hw change: initscript was running us with
- stdout redirected to /dev/null; just use a small sh wrapper to
- fix it
- o harddrake::bttv: only log in standalone mode
- o display channel of eide devices
-
-- spec:
- o reorder entries in description
- o list all entries in first line of description
- o fix post: add start argument
-
-* Mon Jul 08 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-2mdk
-- spec :
- o enhance descriptions
- o various spec clean
- o harddrake :
- * obsoletes/provides libdetect-lst, libdetect-lst-devel, detect,
- detect-lst, kudzu-devel
- * split package between harddrake and harddrake-ui to minimize
- the harddrake service dependancies
- * add missing /etc/sysconfig/harddrake2
-- harddrake2 :
- o cache detect_devices::probeall(1) so that hw probe is run once
- o hw configuration :
- * eide devices: split up info field into vendor and model fields
- o ui:
- * enhanced help
- * mice:
- - s/nbuttons/Number of buttons/
- - delete qw(MOUSETYPE XMOUSETYPE unsafe)
- * complete help
- * center the main window
- * remove drakx decorations
- * don't display "run config tool" button if no configurator
- availlable
- o logic:
- * skip configuration on firt run
- * don't restart harddrake on install
- * skip hw classes without configurator (which'll have a
- configurator after porting updfstab)
- o service :
- * only do the job at startup
- * add "please wait" message
- * really don't cry when no previous config
-
-* Mon Jul 08 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.8-1mdk
-- snapshot
-- new entries:
- o harddrake2 : new hardware detection && configuration tool
- o drakbugreport: bug reporting tool a la Kde (not working!)
- o drakTermServ : configuration tool for diskless stations.
-- updated programs :
- o drakxtv: if runned by root, offer to configure bttv for most tv cards
- o disdrake:
- * enhanced raid & lvm support,
- * check if programs (ie jfsprogs) are installed
- * cleanups
- o Xconfigurator: bug fix
-- general : better supermout support, use new libldetect, various bug fixes
-
-* Tue Jun 18 2002 Frederic Lepied <flepied@mandrakesoft.com> 1.1.7-99mdk
-- added new draksec from Christian and a new way to build the packages (make rpm)
-
-* Mon Apr 15 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.7-98mdk
-- snapshot
-- add drakxtv description
-- drakxtv : now auto guess the country and the freq table
-
-* Fri Mar 15 2002 dam's <damien@mandrakesoft.com> 1.1.7-97mdk
-- snapshot. final release 1
-
-* Tue Mar 12 2002 dam's <damien@mandrakesoft.com> 1.1.7-96mdk
-- added onboot options foreach network cards
-- resolv.conf and domain name bug fixed
-
-* Tue Mar 12 2002 dam's <damien@mandrakesoft.com> 1.1.7-95mdk
-- included drakproxy
-- corrected various timeout (net_monitor, internet connection tests)
-- snapshot
-
-* Mon Mar 11 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-94mdk
-- various
-
-* Fri Mar 8 2002 dam's <damien@mandrakesoft.com> 1.1.7-93mdk
-- drakfont GUI corrected
-- new drakproxy
-
-* Fri Mar 08 2002 François Pons <fpons@mandrakesoft.com> 1.1.7-92mdk
-- fixes for NVIDIA drivers support in XFdrake.
-
-* Thu Mar 7 2002 dam's <damien@mandrakesoft.com> 1.1.7-91mdk
-- lot of bugfixes
-- (dams)
- * standalone/net_monitor: make gc happy
- * modparm.pm, share/po/fr.po: corrected
- * standalone/draknet: corrected network/internet restart when already
- connected
- * standalone/drakfont: corrected bad system command
- * standalone/drakautoinst: corrected HASH and ARRAY label
-- (gc)
- * standalone/drakgw:
- - call net_monitor to disable internet connection before
- network-restart
- - user return value when status'ing the
- initscripts rather than grepping their text output
-- (pixel)
- * standalone/fileshareset (nfs_exports::update_server): ensure portmap
- is running
-
-* Wed Mar 6 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-90mdk
-- corrected font in wizard (dams)
-- localedrake: (pixel)
- * fix dummy entries in .i18n for chineese
- * take sysconfig/i18n into account when no .i18n
- * when called by kcontrol with --apply, don't modify kde config files,
- kcontrol takes care of it more nicely
-- diskdrake: translate actions in text mode (pixel)
-- drakxtv fixed (titi)
-
-* Sun Mar 3 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-89mdk
-- (gtkicons_labels_widget): pass the widget instead of directly passing the font
- (for drakconf)
-
-* Sun Mar 3 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-88mdk
-- (gtkicons_labels_widget): pass the style instead of directly passing the font
- (for drakconf)
-
-* Fri Mar 1 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-87mdk
-- new snapshot (including a modified localedrake)
-
-* Thu Feb 28 2002 dam's <damien@mandrakesoft.com> 1.1.7-86mdk
-- corrected modinfo path. isa modules options should now work.
-
-* Thu Feb 28 2002 dam's <damien@mandrakesoft.com> 1.1.7-85mdk
-- corrected spec so that net_monitor.real get included too.
-
-* Thu Feb 28 2002 dam's <damien@mandrakesoft.com> 1.1.7-84mdk
-- snapshot
-
-* Wed Feb 27 2002 dam's <damien@mandrakesoft.com> 1.1.7-83mdk
-- snapshot
-
-* Tue Feb 26 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-82mdk
-- move XFdrake to drakxtools from drakxtools-newt
-(otherwise it doesn't work, since it needs perl-GTK & xtest)
-
-* Tue Feb 26 2002 dam's <damien@mandrakesoft.com> 1.1.7-81mdk
-- added groff require
-
-* Tue Feb 26 2002 dam's <damien@mandrakesoft.com> 1.1.7-80mdk
-- isa card modules correction. Should work in post install
-- drakfont correction
-
-* Sat Feb 23 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-79mdk
-- require latest perl-MDK-Common
-- corrected icon paths (thanks to garrick)
-- don't create devices when /dev is devfs mounted (thanks to Andrej Borsenkow)
-
-* Fri Feb 22 2002 dam's <damien@mandrakesoft.com> 1.1.7-78mdk
-- corrected icon paths
-
-* Thu Feb 21 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-77mdk
-- now we can live without kdesu ; and drakxtools-newt only requires
- usermode-consoleonly
-
-* Tue Feb 19 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-76mdk
-- fix diskdrake --nfs & --smb
-
-* Tue Feb 19 2002 dam's <damien@mandrakesoft.com> 1.1.7-75mdk
-- required specific version of perl MDK Common
-
-* Tue Feb 19 2002 dam's <damien@mandrakesoft.com> 1.1.7-74mdk
-- various things not described by the last packager
-- new png/wpm search policy in my_gtk
-
-* Mon Feb 18 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-73mdk
-- snapshot
-
-* Sat Feb 16 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-72mdk
-- localedrake now handles KDE
-- diskdrake now handles XFS on LVM live resizing (growing only)
-
-* Fri Feb 15 2002 dam's <damien@mandrakesoft.com> 1.1.7-71mdk
-- snapshot
-
-* Thu Feb 14 2002 dam's <damien@mandrakesoft.com> 1.1.7-70mdk
-- snapshot
-
-* Mon Feb 11 2002 dam's <damien@mandrakesoft.com> 1.1.7-69mdk
-- fixed bad stuff.so in drakxtools
-
-* Fri Feb 8 2002 dam's <damien@mandrakesoft.com> 1.1.7-68mdk
-- new gfx
-- various fix
-- major printerdrake updates
-
-* Thu Feb 07 2002 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.7-67mdk
-- add drakxtv
-
-* Thu Feb 7 2002 dam's <damien@mandrakesoft.com> 1.1.7-66mdk
-- new package, various wizard, mygtk, disdrake improvment.
-
-* Wed Feb 6 2002 dam's <damien@mandrakesoft.com> 1.1.7-65mdk
-- logdrake updates
-- wizard fix
-
-* Tue Jan 29 2002 dam's <damien@mandrakesoft.com> 1.1.7-64mdk
-- last mygtk, drakbackup...
-- disdrake fixed
-- snapshot
-
-* Sun Jan 27 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-63mdk
-- cleanup drakxtools-newt (move all gtk stuff to drakxtools)
-- reworked and split diskdrake
-- add logdrake
-
-* Fri Jan 25 2002 dam's <damien@mandrakesoft.com> 1.1.7-62mdk
-- bug corrections, improvements
-- new advertising engine
-- new gtkicons_labels_widget
-
-* Tue Jan 22 2002 dam's <damien@mandrakesoft.com> 1.1.7-61mdk
-- new gtkicons_labels_widget for new mcc.
-
-* Fri Jan 18 2002 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-60mdk
-- first support for 'Explanations'
-
-* Fri Jan 18 2002 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-59mdk
-- Drakbackup without unstable options for qa.
-- DrakFont update warning message (qa).
-
-* Wed Jan 16 2002 Pixel <pixel@mandrakesoft.com> 1.1.7-58mdk
-- ensure lsnetdrake is included
-
-* Tue Jan 15 2002 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-57mdk
-- Drakbackup daemon, backend mode (-show-conf -daemon -debug -help -version) and report mail corrections.
-- DrakFont gi and progress bar problems.
-
-* Tue Jan 14 2002 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-56mdk
-- New drakbackup version, ftp backup work, new pixmaps.
-- DrakFont with new pixmaps.
-
-* Mon Jan 14 2002 Stefan van der Eijk <stefan@eijk.nu> 1.1.7-55mdk
-- BuildRequires
-
-* Fri Jan 11 2002 dam's <damien@mandrakesoft.com> 1.1.7-54mdk
-- snapshot
-
-* Wed Jan 9 2002 dam's <damien@mandrakesoft.com> 1.1.7-53mdk
-- snapshot
-- new code in my_gtk
-
-* Tue Jan 8 2002 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-52mdk
-- New drakbackup version, incremental backup and restore should work.
-
-* Sat Dec 22 2001 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-51mdk
-- fix conflicts in drakbackup cvs version.
-
-* Sat Dec 22 2001 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-50mdk
-- new drakbackup version.
-
-* Mon Dec 10 2001 Sebastien Dupont <sdupont@mandrakesoft.com> 1.1.7-49mdk
-- fix drakfont path problem.
-- new version of drakbakup
-
-* Wed Dec 5 2001 dam's <damien@mandrakesoft.com> 1.1.7-48mdk
-- corrected syntax error
-
-* Tue Dec 4 2001 dam's <damien@mandrakesoft.com> 1.1.7-47mdk
-- avoid network test freeze
-- added drackbackup
-- snapshot
-
-* Fri Nov 30 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-46mdk
-- add diskdrake --fileshare
-
-* Thu Nov 29 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-45mdk
-- new diskdrake including fileshareset/filesharelist stuff
-
-* Mon Nov 26 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-44mdk
-- use the CVS, not my devel (instable) version
-
-* Fri Nov 23 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-43mdk
-- any.pm fixed
-
-* Mon Nov 19 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.7-42mdk
-- scannerdrake update to add dynamic support
-
-* Mon Nov 12 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.7-41mdk
-- scannerdrake update with new fat ScannerDB
-
-* Mon Nov 5 2001 dam's <damien@mandrakesoft.com> 1.1.7-40mdk
-- corrected typo in drakautoinst
-
-* Fri Nov 2 2001 dam's <damien@mandrakesoft.com> 1.1.7-39mdk
-- release
-
-* Fri Oct 26 2001 dam's <damien@mandrakesoft.com> 1.1.7-38mdk
-- drakautoinst & drakfont updated
-
-* Thu Oct 25 2001 dam's <damien@mandrakesoft.com> 1.1.7-37mdk
-- big improvement on drakautoinst
-- draknet : connection script updated
-
-* Thu Oct 18 2001 dam's <damien@mandrakesoft.com> 1.1.7-36mdk
-- draknet/net_monitor corrected
-- corrected bad stuff.so
-
-* Tue Oct 16 2001 dam's <damien@mandrakesoft.com> 1.1.7-35mdk
-- make rplint happier
-
-* Wed Oct 10 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.7-34mdk
-- snapshot with scanner stuff
-
-* Mon Sep 24 2001 dam's <damien@mandrakesoft.com> 1.1.7-33mdk
-- snapshot
-
-* Mon Sep 24 2001 dam's <damien@mandrakesoft.com> 1.1.7-32mdk
-- Last translations.
-
-* Mon Sep 24 2001 dam's <damien@mandrakesoft.com> 1.1.7-31mdk
-- snapshot. draknet bugfix.
-
-* Sun Sep 23 2001 dam's <damien@mandrakesoft.com> 1.1.7-30mdk
-- snapshot. Included last printer and draknet corrections.
-
-* Fri Sep 21 2001 dam's <damien@mandrakesoft.com> 1.1.7-29mdk
-- typo in adsl.pm, Xconfigurator fix.
-
-* Thu Sep 20 2001 dam's <damien@mandrakesoft.com> 1.1.7-28mdk
-- snapshot. draknet works now.
-
-* Wed Sep 19 2001 dam's <damien@mandrakesoft.com> 1.1.7-27mdk
-- snapshot
-
-* Mon Sep 17 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-26mdk
-- snapshot
-
-* Mon Sep 17 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-25mdk
-- snapshot
-
-* Sat Sep 15 2001 dam's <damien@mandrakesoft.com> 1.1.7-24mdk
-- snapshot with printer, draknet & install fixes
-
-* Fri Sep 14 2001 François Pons <fpons@mandrakesoft.com> 1.1.7-23mdk
-- snapshot with latest XFdrake fixes.
-
-* Fri Sep 14 2001 dam's <damien@mandrakesoft.com> 1.1.7-22mdk
-- snapshot
-
-* Thu Sep 13 2001 François Pons <fpons@mandrakesoft.com> 1.1.7-21mdk
-- fix Xinerama for Matrox cards (restore XFree86 4.1.0 without DRI).
-- removed Modeline 1024x768 in 97.6 Hz which troubles XF4 a lot.
-
-* Thu Sep 13 2001 François Pons <fpons@mandrakesoft.com> 1.1.7-20mdk
-- snapshot with XFdrake fixes (G550 support, no DRI with Xinerama,
- no XFree86 3.3.6 proposed wiht dual head).
-
-* Wed Sep 12 2001 dam's <damien@mandrakesoft.com> 1.1.7-19mdk
-- snapshot
-
-* Wed Sep 12 2001 dam's <damien@mandrakesoft.com> 1.1.7-18mdk
-- snapshot.
-
-* Mon Sep 10 2001 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-17mdk
-- remove dependency on "perl" since pixel added Data::Dumper in perl-base
-
-* Mon Sep 10 2001 dam's <damien@mandrakesoft.com> 1.1.7-16mdk
-- new snapshot, bug corrections.
-
-* Thu Sep 6 2001 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-15mdk
-- drakgw should be working now
-
-* Tue Sep 04 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.7-14mdk
-- snaphsot, better interaction with mcc (diskdrake printerdrake).
-
-* Tue Sep 4 2001 dam's <damien@mandrakesoft.com> 1.1.7-13mdk
-- snapshot.
-
-* Thu Aug 30 2001 dam's <damien@mandrakesoft.com> 1.1.7-12mdk
-- snapshot. locales corected, nicer wizards.
-
-* Thu Aug 30 2001 François Pons <fpons@mandrakesoft.com> 1.1.7-11mdk
-- new snapshot, mousedrake fixes again.
-
-* Wed Aug 29 2001 François Pons <fpons@mandrakesoft.com> 1.1.7-10mdk
-- new snapshot, mousedrake fixes.
-
-* Fri Aug 24 2001 dam's <damien@mandrakesoft.com> 1.1.7-9mdk
-- snapshot for 8.1 beta2.
-
-* Fri Aug 24 2001 dam's <damien@mandrakesoft.com> 1.1.7-8mdk
-- bugfix.
-- new snapshot. mousedrake experimental.
-
-* Thu Aug 23 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.7-7mdk
-- fix drakboot bug
-- macros to fix some rpmlint warnings
-
-* Wed Aug 22 2001 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-6mdk
-- put a require on "perl" which is needed for Data::Dumper in drakautoinst
-
-* Wed Aug 22 2001 dam's <damien@mandrakesoft.com> 1.1.7-5mdk
-- snapshot. draknet improvments, bug fixes.
-
-* Mon Aug 20 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-4mdk
-- new fstab munching code
-
-* Sat Aug 18 2001 Pixel <pixel@mandrakesoft.com> 1.1.7-3mdk
-- new diskdrake (with interactive version => newt)
-- drakxtools-http fix
-
-* Tue Aug 14 2001 dam's <damien@mandrakesoft.com> 1.1.7-2mdk
-- added doc (it's a shame...)
-
-* Tue Aug 14 2001 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.7-1mdk
-- add drakautoinst
-
-* Mon Aug 13 2001 dam's <damien@mandrakesoft.com> 1.1.6-3mdk
-- snapshot
-
-* Tue Aug 7 2001 dam's <damien@mandrakesoft.com> 1.1.6-2mdk
-- added draknet_splash pixmap
-
-* Tue Aug 7 2001 Pixel <pixel@mandrakesoft.com> 1.1.6-1mdk
-- add drakxtools_http
-
-* Fri Aug 3 2001 dam's <damien@mandrakesoft.com> 1.1.5-106mdk
-- added network/*.pm
-
-* Tue Jul 31 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-105mdk
-- add require perl-MDK-Common
-- fix for cp -rf (fuck FreeBSD (c))
-
-* Tue Jul 31 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-104mdk
-- fix my error: %%files with 2 times "-f <file>" doesn't work :-(
-
-* Mon Jul 30 2001 dam's <damien@mandrakesoft.com> 1.1.5-103mdk
-- updated with cooker install.
-- added require on XFree86-75dpi-fonts
-- merged with pixel specfile to handle mo.
-
-* Mon May 7 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-102mdk
-- updated bootloader.pm according to new lilo package (lilo-{menu,graphic,text})
-
-* Wed Apr 25 2001 François Pons <fpons@mandrakesoft.com> 1.1.5-101mdk
-- updated with oem update for DrakX.
-- minor bug correction on printerdrake.
-- added minor features to XFdrake.
-
-* Wed Apr 18 2001 dam's <damien@mandrakesoft.com> 1.1.5-100mdk
-- added require on usermode.
-- added source 2 and 3.
-- snapshot. netconnect corrections. final package
-
-* Tue Apr 17 2001 dam's <damien@mandrakesoft.com> 1.1.5-99mdk
-- snapshot. mousedrake corrected. RC6
-
-* Tue Apr 17 2001 dam's <damien@mandrakesoft.com> 1.1.5-98mdk
-- snapshot. autologin corrected. RC5
-
-* Tue Apr 17 2001 dam's <damien@mandrakesoft.com> 1.1.5-97mdk
-- snapshot. RC4
-
-* Tue Apr 17 2001 dam's <damien@mandrakesoft.com> 1.1.5-96mdk
-- snapshot. RC3
-
-* Mon Apr 16 2001 dam's <damien@mandrakesoft.com> 1.1.5-95mdk
-- snapshot. RC2
-
-* Mon Apr 16 2001 dam's <damien@mandrakesoft.com> 1.1.5-94mdk
-- snapshot. RC
-
-* Mon Apr 16 2001 dam's <damien@mandrakesoft.com> 1.1.5-93mdk
-- draknet and tinyfirewall fixes
-
-* Sun Apr 15 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-92mdk
-- bootlook fix & layout
-
-* Fri Apr 13 2001 dam's <damien@mandrakesoft.com> 1.1.5-91mdk
-- snapshot
-
-* Fri Apr 13 2001 dam's <damien@mandrakesoft.com> 1.1.5-90mdk
-- snapshot
-
-* Thu Apr 12 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-89mdk
-- snapshot
-
-* Thu Apr 12 2001 dam's <damien@mandrakesoft.com> 1.1.5-88mdk
-- snapshot. pcmcia network corrected
-
-* Thu Apr 12 2001 dam's <damien@mandrakesoft.com> 1.1.5-87mdk
-- snapshot. Better network configuration
-
-* Thu Apr 12 2001 dam's <damien@mandrakesoft.com> 1.1.5-86mdk
-- snapshot.
-
-* Wed Apr 11 2001 François Pons <fpons@mandrakesoft.com> 1.1.5-85mdk
-- really fix printerdrake and snap.
-
-* Wed Apr 11 2001 François Pons <fpons@mandrakesoft.com> 1.1.5-84mdk
-- fix printerdrake and snap.
-
-* Tue Apr 10 2001 dam's <damien@mandrakesoft.com> 1.1.5-83mdk
-- bug correction.
-
-* Mon Apr 9 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-82mdk
-- snap as always
-
-* Mon Apr 9 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-81mdk
-- snaphshot again and again
-
-* Mon Apr 9 2001 dam's <damien@mandrakesoft.com> 1.1.5-80mdk
-- snapshot. bug fix
-
-* Sun Apr 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-79mdk
-- snapshot. bug fix.
-
-* Sun Apr 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-78mdk
-- added require on XFree86-100dpi-fonts
-- various debugging
-- new tinyfirewall
-
-* Sun Apr 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-77mdk
-- snapshot
-- net_monitor added.
-
-* Fri Apr 6 2001 dam's <damien@mandrakesoft.com> 1.1.5-76mdk
-- corrected compilation error.
-
-* Fri Apr 6 2001 yves <yduret@mandrakesoft.com> 1.1.5-75mdk
-- snapshot : drakgw updated, boot config fix
-
-* Thu Apr 5 2001 dam's <damien@mandrakesoft.com> 1.1.5-74mdk
-- snapshot.
-
-* Mon Apr 2 2001 dam's <damien@mandrakesoft.com> 1.1.5-73mdk
-- snapshot.
-
-* Mon Apr 2 2001 dam's <damien@mandrakesoft.com> 1.1.5-72mdk
-- snapshot, typo fixs.
-
-* Fri Mar 30 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-71mdk
-- snapshot & fixes
-
-* Fri Mar 30 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-70mdk
-- snapshot : boot coonfig updated
-
-* Thu Mar 29 2001 dam's <damien@mandrakesoft.com> 1.1.5-69mdk
-- snapshot
-
-* Thu Mar 29 2001 dam's <damien@mandrakesoft.com> 1.1.5-68mdk
-- snapshot.
-
-* Thu Mar 29 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-67mdk
-- new snapshot (XFdrake should be working)
-
-* Wed Mar 28 2001 dam's <damien@mandrakesoft.com> 1.1.5-66mdk
-- corrected tinyfirewall last step
-
-* Wed Mar 28 2001 François Pons <fpons@mandrakesoft.com> 1.1.5-65mdk
-- fixed wrong generation of second mouse support
-
-* Wed Mar 28 2001 François Pons <fpons@mandrakesoft.com> 1.1.5-64mdk
-- fixed multi-mouse support for XF3
-- fixed XFdrake (read old config file before so probe overwrite)
-
-* Wed Mar 28 2001 dam's <damien@mandrakesoft.com> 1.1.5-63mdk
-- added draksec embedded mode
-- corrected tinyfirewall for 2.4 kernels
-- corrected bad translations in draknet
-
-* Tue Mar 27 2001 dam's <damien@mandrakesoft.com> 1.1.5-62mdk
-- idem.
-
-* Sat Mar 24 2001 dam's <damien@mandrakesoft.com> 1.1.5-61mdk
-- corrected tinyfirewall
-
-* Fri Mar 23 2001 dam's <damien@mandrakesoft.com> 1.1.5-60mdk
-- snapshot
-- corrected require.
-
-* Fri Mar 23 2001 dam's <damien@mandrakesoft.com> 1.1.5-59mdk
-- added ldetect in require.
-- tinyfirewall included.
-
-* Thu Mar 22 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-58mdk
-- updated drakboot, new snapshot
-
-* Thu Mar 22 2001 dam's <damien@mandrakesoft.com> 1.1.5-57mdk
-- draknet without mail conf, new snapshot.
-
-* Thu Mar 22 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-56mdk
-- new version that will work with perl-base (at least XFdrake)
-
-* Thu Mar 22 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-55mdk
-- require perl-base not perl, it should be enough
-
-* Thu Mar 22 2001 dam's <damien@mandrakesoft.com> 1.1.5-54mdk
-- first release with tinyfirewall. Not stable.
-- corrected gmon pb, I suck.
-
-* Tue Mar 20 2001 dam's <damien@mandrakesoft.com> 1.1.5-53mdk
-- corrected bad links.
-
-* Tue Mar 20 2001 dam's <damien@mandrakesoft.com> 1.1.5-52mdk
-- no crash anymore.
-
-* Tue Mar 20 2001 dam's <damien@mandrakesoft.com> 1.1.5-51mdk
-- updated draknet. new snapshot.
-
-* Wed Mar 14 2001 dam's <damien@mandrakesoft.com> 1.1.5-50mdk
-- some minor label improvements.
-
-* Tue Mar 13 2001 Yves Duret <yduret@mandrakesoft.com> 1.1.5-49mdk
-- updated bootlook
-- macros
-
-* Mon Mar 12 2001 dam's <damien@mandrakesoft.com> 1.1.5-48mdk
-- correted wizard pixmaps name
-
-* Mon Mar 12 2001 dam's <damien@mandrakesoft.com> 1.1.5-47mdk
-- new and shinny drakxservices
-
-* Tue Mar 6 2001 dam's <damien@mandrakesoft.com> 1.1.5-46mdk
-- XFdrake works + other improvements
-
-* Thu Mar 1 2001 dam's <damien@mandrakesoft.com> 1.1.5-45mdk
-- updated embedded mode.
-
-* Wed Feb 28 2001 dam's <damien@mandrakesoft.com> 1.1.5-44mdk
-- XFdrake : new look.
-- draknet : some corrections.
-- install : some improvements
-
-* Mon Feb 26 2001 dam's <damien@mandrakesoft.com> 1.1.5-43mdk
-- corrected draknet, and some other stuff
-
-* Mon Feb 26 2001 dam's <damien@mandrakesoft.com> 1.1.5-42mdk
-- new draknet, with wizard and profiles.
-- drakboot short-circuited.
-- new pixmaps policy.
-
-* Fri Feb 23 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-41mdk
-- require perl-GTK-GdkImlib, fix XFdrake and draknet with no perl-GTK
-
-* Fri Feb 23 2001 Pixel <pixel@mandrakesoft.com> 1.1.5-40mdk
-- split in drakxtools and drakxtools-newt
-
-* Thu Feb 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-39mdk
-- install() and SHAR_PATH bug fixed in standalone.pm
-
-* Thu Feb 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-38mdk
-- bug fix.
-
-* Thu Feb 8 2001 dam's <damien@mandrakesoft.com> 1.1.5-37mdk
-- bug correction inclusion.
-
-* Wed Feb 7 2001 dam's <damien@mandrakesoft.com> 1.1.5-36mdk
-- snapshot. Included embedded mode (for control-center), and wizard mode.
-
-* Mon Dec 18 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-35mdk
-- new version (lspcidrake not here anymore, requires ldetect-lst => don't
-include pcitable/... anymore)
-
-
-* Tue Nov 14 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-34mdk
-- snapshot
-- get rid of the rpmlib dependency
-
-* Sat Oct 21 2000 dam's <damien@mandrakesoft.com> 1.1.5-33mdk
-- RC1_fixed tagged cvs version.
-- Video cards handling enhanced
-- isa isdn-cards and non detected isdn pci-cards spported.
-
-* Thu Oct 19 2000 dam's <damien@mandrakesoft.com> 1.1.5-32mdk
-- snapshot.
-
-* Mon Oct 9 2000 dam's <damien@mandrakesoft.com> 1.1.5-31mdk
-- snapshot.
-
-* Fri Oct 6 2000 dam's <damien@mandrakesoft.com> 1.1.5-30mdk
-- snapshot.
-
-* Fri Oct 6 2000 dam's <damien@mandrakesoft.com> 1.1.5-29.1mdk
-- snapshot. not fully stable.
-
-* Thu Oct 5 2000 dam's <damien@mandrakesoft.com> 1.1.5-29mdk
-- snapshot.
-
-* Thu Oct 05 2000 François Pons <fpons@mandrakesoft.com> 1.1.5-28mdk
-- snapshot.
-
-* Tue Oct 03 2000 François Pons <fpons@mandrakesoft.com> 1.1.5-27mdk
-- snapshot.
-
-* Sun Oct 1 2000 dam's <damien@mandrakesoft.com> 1.1.5-26mdk
-- snapshot.
-
-* Sat Sep 30 2000 dam's <damien@mandrakesoft.com> 1.1.5-25mdk
-- snapshot.
-
-* Sat Sep 30 2000 dam's <damien@mandrakesoft.com> 1.1.5-24mdk
-- snapshot. draknet frozen.
-
-* Fri Sep 29 2000 dam's <damien@mandrakesoft.com> 1.1.5-23mdk
-- snapshot.
-
-* Thu Sep 28 2000 dam's <damien@mandrakesoft.com> 1.1.5-22mdk
-- modified spec.
-- snapshot
-- liveupdate
-
-* Wed Sep 27 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-21mdk
-- snapshot
-
-* Tue Sep 26 2000 dam's <damien@mandrakesoft.com> 1.1.5-20mdk
-- snapshot
-
-* Mon Sep 25 2000 dam's <damien@mandrakesoft.com> 1.1.5-19mdk
-- snapshot.
-
-* Fri Sep 22 2000 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.5-18mdk
-- new snapshot
-- remove BuildRequires kudzu-devel, I suck bigtime..
-
-* Thu Sep 21 2000 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.5-17mdk
-- new snapshot
-- BuildRequires kudzu-devel since ddcprobe/ddcxinfos.c uses /usr/include/vbe.h
-
-* Wed Sep 20 2000 dam's <damien@mandrakesoft.com> 1.1.5-16mdk
-- cvs snapshot. See changelog file
-
-* Wed Sep 20 2000 dam's <damien@mandrakesoft.com> 1.1.5-15mdk
-- cvs snapshot. See changelog file
-
-* Fri Sep 15 2000 dam's <damien@mandrakesoft.com> 1.1.5-14mdk
-- cvs snapshot.
-- draknet : better dsl configuration.
-
-* Thu Sep 14 2000 dam's <damien@mandrakesoft.com> 1.1.5-13mdk
-- cvs snapshot.
-- draknet : wizard mode. isdn_db.txt moved to /usr/share. No makedev.sh any more
-
-* Mon Sep 11 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-12mdk
-- add handling for gnome and kde2 in Xdrakres
-
-* Thu Sep 7 2000 dam's <damien@mandrakesoft.com> 1.1.5-11mdk
-- corrected draknet launch error.
-
-* Thu Sep 7 2000 dam's <damien@mandrakesoft.com> 1.1.5-10mdk
-- ISDN connection should work. test it!
-
-* Tue Sep 5 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-9mdk
-- setAutologin fixed in XFdrake
-
-* Tue Sep 5 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-8mdk
-- adduserdrake fixed
-
-* Sat Sep 2 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-7mdk
-- fix some typos in standalone/keyboarddrake
-- add require perl
-
-* Sat Sep 2 2000 Pixel <pixel@mandrakesoft.com> 1.1.5-6mdk
-- add %%lang tags
-
-* Tue Aug 29 2000 dam's <damien@mandrakesoft.com> 1.1.5-5mdk
-- draknet : isa cards better recognized.
-
-* Mon Aug 28 2000 dam's <damien@mandrakesoft.com> 1.1.5-4mdk
-- corrected draknet. Please test it!
-
-* Sun Aug 27 2000 dam's <damien@mandrakesoft.com> 1.1.5-3mdk
-- Added draknet in standalone
-
-* Fri Aug 18 2000 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.5-2mdk
-- add requires to modutils >= 2.3.11 because drakgw is reading
- /etc/modules.conf which has been introduced in 2.3.11
-
-* Fri Aug 18 2000 Guillaume Cottenceau <gc@mandrakesoft.com> 1.1.5-1mdk
-- added `drakgw' in standalone (Internet Connection Sharing tool)
-
-* Fri Aug 11 2000 Pixel <pixel@mandrakesoft.com> 1.1.4-3mdk
-- new snapshot
-
-* Thu Aug 10 2000 Pixel <pixel@mandrakesoft.com> 1.1.4-2mdk
-- add noreplace for diskdrake.rc
-
-* Thu Aug 10 2000 Pixel <pixel@mandrakesoft.com> 1.1.4-1mdk
-- new snapshot
-
-* Mon Aug 07 2000 Frederic Lepied <flepied@mandrakesoft.com> 1.1.3-2mdk
-- automatically added BuildRequires
-
-* Fri Jul 21 2000 Pixel <pixel@mandrakesoft.com> 1.1.3-1mdk
-- new version, BM
-
-* Wed Jul 05 2000 Thierry Vignaud <tvignaud@mandrakesoft.com> 1.1.2-2mdk
-- build against new libbz2
-
-* Mon Jun 26 2000 Pixel <pixel@mandrakesoft.com> 1.1.2-1mdk
-- new version
-
-* Tue Jun 13 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-13mdk
-- hopefully fix XFdrake and DDR nvidia cards (silly xfree that is)
-
-* Mon Jun 5 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-12mdk
-- fix sbus missing
-
-* Sat Jun 3 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-10mdk
-- fix draksec calling init.sh instead of msec
-
-* Thu May 25 2000 Chmouel Boudjnah <chmouel@mandrakesoft.com> 1.1.1-9mdk
-- Don't display x86 stuff on drakboot when we are on others arch.
-
-* Thu May 25 2000 François Pons <fpons@mandrakesoft.com> 1.1.1-8mdk
-- update with first version for sparc and sparc64.
-- fix for printer configuration for SAMBA and NCP (security issue).
-
-* Tue May 9 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-7mdk
-- many small fixes (bis)
-
-* Tue May 2 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-6mdk
-- many small fixes
-
-* Wed Apr 26 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-5mdk
-- new version (fix in adduserdrake, enhance interactive_newt)
-
-* Wed Apr 19 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-4mdk
-- llseek works, not lseek64 :( (need more testing)
-
-* Wed Apr 19 2000 François Pons <fpons@mandrakesoft.com> 1.1.1-3mdk
-- updated with CVS of DrakX.
-
-* Fri Mar 31 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-2mdk
-- obsoletes setuptool, link setuptool to drakxconf
-
-* Fri Mar 31 2000 Pixel <pixel@mandrakesoft.com> 1.1.1-1mdk
-- new version (added drakboot for lilo/grub, XFdrake -xf4 for XFree4)
-
-* Sat Mar 25 2000 Pixel <pixel@mandrakesoft.com> 1.1-1mdk
-- new group
-- new version
-
-* Wed Jan 12 2000 François PONS <fpons@mandrakesoft.com>
-- complete update with DrakX, small fixe on printerdrake again.
-
-* Wed Jan 12 2000 François PONS <fpons@mandrakesoft.com>
-- corrected missing generic postscript and text driver for
- printderdrake.
-
-* Wed Jan 12 2000 François PONS <fpons@mandrakesoft.com>
-- corrected bad resolution setting in printerdrake.
-
-* Wed Jan 12 2000 François PONS <fpons@mandrakesoft.com>
-- fixed print on STDOUT in printerdrake.
-- corrected printerdrake against not available drivers in gs.
-
-* Mon Jan 10 2000 Pixel <pixel@mandrakesoft.com>
-- new version (bis)
-- printerdrake install rhs-printfilters via urpmi if needed
-
-* Fri Jan 07 2000 François PONS <fpons@mandrakesoft.com>
-- updated XFdrake and PrinterDrake.
-
-* Fri Jan 7 2000 Pixel <pixel@mandrakesoft.com>
-- fixed a bug causing no i18n for rpmdrake
-- add require urpmi
-
-* Thu Jan 6 2000 Pixel <pixel@mandrakesoft.com>
-- fix an error case in XFdrake
-
-* Tue Jan 4 2000 Pixel <pixel@mandrakesoft.com>
-- adduserdrake accept user names on command line
-- minor fixes
-
-* Fri Dec 31 1999 Pixel <pixel@mandrakesoft.com>
-- 32mdk
-
-* Wed Dec 29 1999 Pixel <pixel@mandrakesoft.com>
-- make rpmlint happier
-- minor fixes
-
-* Mon Dec 27 1999 Pixel <pixel@mandrakesoft.com>
-- better XFdrake and minor fixes
-
-* Fri Dec 24 1999 Pixel <pixel@mandrakesoft.com>
-- new version (better adduserdrake and more)
-- add /usr/bin/* (for lspcidrake)
-
-* Wed Dec 22 1999 Pixel <pixel@mandrakesoft.com>
-- do not try display :0 if DISPLAY is unset
-
-* Mon Dec 20 1999 Pixel <pixel@mandrakesoft.com>
-- fixed a bug in drakxservices
-- XFdrake now install XFree86 and XFree86-75dpi-fonts if needed
-- XFdrake now calls /etc/rc.d/init.d/xfs start if needed
-- minor fix
-
-* Sat Dec 18 1999 Pixel <pixel@mandrakesoft.com>
-- added kpackage's icons for rpmdrake
-
-* Thu Dec 16 1999 Pixel <pixel@mandrakesoft.com>
-- bzip2 .po's
-- mount /proc in XFdrake to avoid freeze when called by kudzu
-- added Xdrakres
-
-* Thu Dec 16 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- Remove the netdrake ghost.
-
-* Thu Dec 16 1999 Pixel <pixel@mandrakesoft.com>
-- fix draksec
-- many changes in libDrakX
-
-* Sat Dec 11 1999 Pixel <pixel@mandrakesoft.com>
-- adduserdrake added and some more
-
-* Thu Dec 9 1999 Pixel <pixel@linux-mandrake.com>
-- added drakxconf, drakxservices
-- handle non root via kdesu if X
-- warning go to syslog
-
-* Wed Dec 8 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
-- Add %post and %postun to link redhat tools to our tools.
-- Obsoletes: Xconfigurator mouseconfig kbdconfig printtool
-- A lots of changes/fix.
-
-* Thu Dec 2 1999 Pixel <pixel@linux-mandrake.com>
-- keyboarddrake added, and many changes
-- fixed typos
-
-* Fri Nov 26 1999 Pixel <pixel@linux-mandrake.com>
-- new version (printerdrake) (did i say lspcidrake was there too?)
-
-* Wed Nov 24 1999 Pixel <pixel@linux-mandrake.com>
-- new version
-- fixed *.o bundled in the %source
-
-* Sun Nov 21 1999 Pixel <pixel@mandrakesoft.com>
-- removed %config for diskdrake.rc (should i?)
-- removed xtest from the requires
-- added %config for diskdrake.rc (should i?)
-- strip .so and ddcxinfos (nice rpmlint :)
-
-* Sat Nov 20 1999 Pixel <pixel@mandrakesoft.com>
-- added MonitorsDB to %files (silly me:-!)
-
-* Thu Nov 18 1999 Pixel <pixel@mandrakesoft.com>
-- precised the required version for perl-GTK
-
-* Thu Nov 18 1999 Pixel <pixel@mandrakesoft.com>
-- First version
-
-
-# end of file
diff --git a/perl-install/fs.pm b/perl-install/fs.pm
deleted file mode 100644
index 1d16a3e9c..000000000
--- a/perl-install/fs.pm
+++ /dev/null
@@ -1,676 +0,0 @@
-package fs; # $Id$
-
-use diagnostics;
-use strict;
-
-use MDK::Common::System;
-use MDK::Common::Various;
-use common;
-use log;
-use devices;
-use fs::type;
-use fs::get;
-use fs::format;
-use fs::mount_options;
-use run_program;
-use detect_devices;
-use modules;
-use fsedit;
-use loopback;
-
-
-sub read_fstab {
- my ($prefix, $file, @reading_options) = @_;
-
- if (member('keep_default', @reading_options)) {
- push @reading_options, 'freq_passno', 'keep_devfs_name', 'keep_device_LABEL';
- }
-
- my %comments;
- my $comment;
- my @l = grep {
- if (/^Filename\s*Type\s*Size/) {
- 0; #- when reading /proc/swaps
- } elsif (/^\s*#/) {
- $comment .= chomp_($_) . "\n";
- 0;
- } else {
- $comments{$_} = $comment if $comment;
- $comment = '';
- 1;
- }
- } cat_("$prefix$file");
-
- #- attach comments at the end of fstab to the previous line
- $comments{$l[-1]} = $comment if $comment;
-
- map {
- my ($dev, $mntpoint, $fs_type, $options, $freq, $passno) = split;
- my $comment = $comments{$_};
-
- $options = 'defaults' if $options eq 'rw'; # clean-up for mtab read
-
- if ($fs_type eq 'supermount') {
- # normalize this bloody supermount
- $options = join(",", 'supermount', grep {
- if (/fs=(.*)/) {
- $fs_type = $1;
- 0;
- } elsif (/dev=(.*)/) {
- $dev = $1;
- 0;
- } elsif ($_ eq '--') {
- 0;
- } else {
- 1;
- }
- } split(',', $options));
- } elsif ($fs_type eq 'smb') {
- # prefering type "smbfs" over "smb"
- $fs_type = 'smbfs';
- }
- s/\\040/ /g foreach $mntpoint, $dev, $options;
-
- my $h = {
- mntpoint => $mntpoint, fs_type => $fs_type,
- options => $options, comment => $comment,
- if_(member('keep_freq_passno', @reading_options), freq => $freq, passno => $passno),
- };
-
- put_in_hash($h, subpart_from_wild_device_name($dev));
-
- if ($h->{device_LABEL} && member('keep_device_LABEL', @reading_options)) {
- $h->{prefer_device_LABEL} = 1;
- } elsif ($h->{devfs_device} && member('keep_devfs_name', @reading_options)) {
- $h->{prefer_devfs_name} = 1;
- }
-
- if ($h->{options} =~ /credentials=/ && !member('verbatim_credentials', @reading_options)) {
- require network::smb;
- #- remove credentials=file with username=foo,password=bar,domain=zoo
- #- the other way is done in fstab_to_string
- my ($options, $unknown) = fs::mount_options::unpack($h);
- my $file = delete $options->{'credentials='};
- my $credentials = network::smb::read_credentials_raw($file);
- if ($credentials->{username}) {
- $options->{"$_="} = $credentials->{$_} foreach qw(username password domain);
- fs::mount_options::pack($h, $options, $unknown);
- }
- }
-
- $h;
- } @l;
-}
-
-sub merge_fstabs {
- my ($loose, $fstab, @l) = @_;
-
- foreach my $p (@$fstab) {
- my ($l1, $l2) = partition { fsedit::is_same_hd($_, $p) } @l;
- my ($p2) = @$l1 or next;
- @l = @$l2;
-
- $p->{mntpoint} = $p2->{mntpoint} if delete $p->{unsafeMntpoint};
-
- $p->{fs_type} = $p2->{fs_type} if $p2->{fs_type} && !$loose;
- $p->{options} = $p2->{options} if $p2->{options} && !$loose;
- #- important to get isMounted property else DrakX may try to mount already mounted partitions :-(
- add2hash($p, $p2);
- $p->{device_alias} ||= $p2->{device_alias} || $p2->{device} if $p->{device} ne $p2->{device} && $p2->{device} !~ m|/|;
-
- $p->{fs_type} && $p2->{fs_type} && $p->{fs_type} ne $p2->{fs_type}
- && $p->{fs_type} ne 'auto' && $p2->{fs_type} ne 'auto' and
- log::l("err, fstab and partition table do not agree for $p->{device} type: $p->{fs_type} vs $p2->{fs_type}");
- }
- @l;
-}
-
-sub analyze_wild_device_name {
- my ($dev) = @_;
-
- if ($dev =~ m!^/u?dev/(.*)!) {
- 'dev', $dev;
- } elsif ($dev !~ m!^/! && (-e "/dev/$dev" || -e "$::prefix/dev/$dev")) {
- 'dev', "/dev/$dev";
- } elsif ($dev =~ /^LABEL=(.*)/) {
- 'label', $1;
- } elsif ($dev eq 'none' || $dev eq 'rootfs') {
- 'virtual';
- } elsif ($dev =~ m!^(\S+):/\w!) {
- 'nfs';
- } elsif ($dev =~ m!^//\w!) {
- 'smb';
- } elsif ($dev =~ m!^http://!) {
- 'dav';
- }
-}
-
-sub subpart_from_wild_device_name {
- my ($dev) = @_;
-
- my $part = { device => $dev, faked_device => 1 }; #- default
-
- if (my ($kind, $val) = analyze_wild_device_name($dev)) {
- if ($kind eq 'label') {
- $part->{device_LABEL} = $val;
- } elsif ($kind eq 'dev') {
- my %part = (faked_device => 0);
- if (my $rdev = (stat "$::prefix$dev")[6]) {
- ($part{major}, $part{minor}) = unmakedev($rdev);
- }
-
- my $symlink = readlink("$::prefix$dev");
- $dev =~ s!/u?dev/!!;
-
- if ($symlink && $symlink =~ m|^[^/]+$|) {
- $part{device_alias} = $dev;
- $dev = $symlink;
- }
-
- if (my (undef, $part_number) = $dev =~ m!/(disc|part(\d+))$!) {
- $part{part_number} = $part_number if $part_number;
- $part{devfs_device} = $dev;
- } else {
- my $part_number = devices::part_number(\%part);
- $part{part_number} = $part_number if $part_number;
- }
- $part{device} = $dev;
- return \%part;
- }
- } else {
- if ($dev =~ m!^/! && -f "$::prefix$dev") {
- #- it must be a loopback file or directory to bind
- } else {
- log::l("part_from_wild_device_name: unknown device $dev");
- }
- }
- $part;
-}
-
-sub part2wild_device_name {
- my ($prefix, $part) = @_;
-
- if ($part->{prefer_device_LABEL}) {
- 'LABEL=' . $part->{device_LABEL};
- } elsif ($part->{prefer_devfs_name}) {
- "/dev/$part->{devfs_device}";
- } elsif ($part->{device_alias}) {
- "/dev/$part->{device_alias}";
- } else {
- my $faked_device = exists $part->{faked_device} ?
- $part->{faked_device} :
- do {
- #- in case $part has been created without using subpart_from_wild_device_name()
- my ($kind) = analyze_wild_device_name($part->{device});
- $kind ? $kind ne 'dev' : $part->{device} =~ m!^/!;
- };
- if ($faked_device) {
- $part->{device};
- } elsif ($part->{device} =~ m!^/dev/!) {
- log::l("ERROR: i have a full device $part->{device}, this should not happen. use subpart_from_wild_device_name() instead of creating bad part data-structures!");
- $part->{device};
- } else {
- my $dev = "/dev/$part->{device}";
- eval { devices::make("$prefix$dev") };
- $dev;
- }
- }
-}
-
-sub add2all_hds {
- my ($all_hds, @l) = @_;
-
- @l = merge_fstabs('', [ fs::get::really_all_fstab($all_hds) ], @l);
-
- foreach (@l) {
- my $s =
- $_->{fs_type} eq 'nfs' ? 'nfss' :
- $_->{fs_type} eq 'smbfs' ? 'smbs' :
- $_->{fs_type} eq 'davfs' ? 'davs' :
- isTrueLocalFS($_) || isSwap($_) || isOtherAvailableFS($_) ? '' :
- 'special';
- push @{$all_hds->{$s}}, $_ if $s;
- }
-}
-
-sub get_major_minor {
- eval {
- my (undef, $major, $minor) = devices::entry($_->{device});
- ($_->{major}, $_->{minor}) = ($major, $minor);
- } foreach @_;
-}
-
-sub merge_info_from_mtab {
- my ($fstab) = @_;
-
- my @l1 = map { my $l = $_;
- my $h = fs::type::fs_type2subpart('swap');
- $h->{$_} = $l->{$_} foreach qw(device major minor);
- $h;
- } read_fstab('', '/proc/swaps');
-
- my @l2 = map { read_fstab('', $_) } '/etc/mtab', '/proc/mounts';
-
- foreach (@l1, @l2) {
- log::l("found mounted partition on $_->{device} with $_->{mntpoint}");
- if ($::isInstall && $_->{mntpoint} =~ m!/tmp/(image|hdimage)!) {
- $_->{real_mntpoint} = delete $_->{mntpoint};
- if ($_->{real_mntpoint} eq '/tmp/hdimage') {
- log::l("found hdimage on $_->{device}");
- $_->{mntpoint} = "/mnt/hd"; #- remap for hd install.
- }
- }
- $_->{isMounted} = 1;
- set_isFormatted($_, 1);
- delete $_->{options};
- }
- merge_fstabs('loose', $fstab, @l1, @l2);
-}
-
-# - when using "$loose", it does not merge in type&options from the fstab
-sub merge_info_from_fstab {
- my ($fstab, $prefix, $uniq, $loose) = @_;
-
- my @l = grep {
- if ($uniq) {
- my $part = fs::get::mntpoint2part($_->{mntpoint}, $fstab);
- !$part || fsedit::is_same_hd($part, $_); #- keep it only if it is the mountpoint AND the same device
- } else {
- 1;
- }
- } read_fstab($prefix, '/etc/fstab', 'keep_default');
-
- merge_fstabs($loose, $fstab, @l);
-}
-
-sub get_info_from_fstab {
- my ($all_hds) = @_;
- my @l = read_fstab($::prefix, '/etc/fstab', 'keep_default');
- add2all_hds($all_hds, @l);
-}
-
-sub prepare_write_fstab {
- my ($fstab, $o_prefix, $b_keep_smb_credentials) = @_;
- $o_prefix ||= '';
-
- my %new;
- my @smb_credentials;
- my @l = map {
- my $device =
- isLoopback($_) ?
- ($_->{mntpoint} eq '/' ? "/initrd/loopfs" : $_->{loopback_device}{mntpoint}) . $_->{loopback_file} :
- part2wild_device_name($o_prefix, $_);
-
- my $real_mntpoint = $_->{mntpoint} || ${{ '/tmp/hdimage' => '/mnt/hd' }}{$_->{real_mntpoint}};
- mkdir_p("$o_prefix$real_mntpoint") if $real_mntpoint =~ m|^/|;
- my $mntpoint = loopback::carryRootLoopback($_) ? '/initrd/loopfs' : $real_mntpoint;
-
- my ($freq, $passno) =
- exists $_->{freq} ?
- ($_->{freq}, $_->{passno}) :
- isTrueLocalFS($_) && $_->{options} !~ /encryption=/ && (!$_->{is_removable} || member($_->{mntpoint}, fs::type::directories_needed_to_boot())) ?
- (1, $_->{mntpoint} eq '/' ? 1 : loopback::carryRootLoopback($_) ? 0 : 2) :
- (0, 0);
-
- if (($device eq 'none' || !$new{$device}) && ($mntpoint eq 'swap' || !$new{$mntpoint})) {
- #- keep in mind the new line for fstab.
- $new{$device} = 1;
- $new{$mntpoint} = 1;
-
- my $options = $_->{options};
-
- if ($_->{fs_type} eq 'smbfs' && $options =~ /password=/ && !$b_keep_smb_credentials) {
- require network::smb;
- if (my ($opts, $smb_credentials) = network::smb::fstab_entry_to_credentials($_)) {
- $options = $opts;
- push @smb_credentials, $smb_credentials;
- }
- }
-
- my $fs_type = $_->{fs_type} || 'auto';
-
- s/ /\\040/g foreach $mntpoint, $device, $options;
-
- # handle bloody supermount special case
- if ($options =~ /supermount/) {
- my @l = grep { $_ ne 'supermount' } split(',', $options);
- my ($l1, $l2) = partition { member($_, 'ro', 'exec') } @l;
- $options = join(",", "dev=$device", "fs=$fs_type", @$l1, if_(@$l2, '--', @$l2));
- ($device, $fs_type) = ('none', 'supermount');
- } else {
- #- if we were using supermount, the type could be something like ext2:vfat
- #- but this can not be done without supermount, so switching to "auto"
- $fs_type = 'auto' if $fs_type =~ /:/;
- }
-
- my $file_dep = $options =~ /\b(loop|bind)\b/ ? $device : '';
-
- [ $file_dep, $mntpoint, $_->{comment} . join(' ', $device, $mntpoint, $fs_type, $options || 'defaults', $freq, $passno) . "\n" ];
- } else {
- ();
- }
- } grep { $_->{device} && ($_->{mntpoint} || $_->{real_mntpoint}) && $_->{fs_type} && ($_->{isFormatted} || !$_->{notFormatted}) } @$fstab;
-
- sub sort_it {
- my (@l) = @_;
-
- if (my $file_based = find { $_->[0] } @l) {
- my ($before, $other) = partition { $file_based->[0] =~ /^\Q$_->[1]/ } @l;
- $file_based->[0] = ''; #- all dependencies are now in before
- if (@$other && @$before) {
- sort_it(@$before), sort_it(@$other);
- } else {
- sort_it(@l);
- }
- } else {
- sort { $a->[1] cmp $b->[1] } @l;
- }
- }
- @l = sort_it(@l);
-
- join('', map { $_->[2] } @l), \@smb_credentials;
-}
-
-sub fstab_to_string {
- my ($all_hds, $o_prefix) = @_;
- my $fstab = [ fs::get::really_all_fstab($all_hds), @{$all_hds->{special}} ];
- my ($s, undef) = prepare_write_fstab($fstab, $o_prefix, 'keep_smb_credentials');
- $s;
-}
-
-sub write_fstab {
- my ($all_hds, $o_prefix) = @_;
- log::l("writing $o_prefix/etc/fstab");
- my $fstab = [ fs::get::really_all_fstab($all_hds), @{$all_hds->{special}} ];
- my ($s, $smb_credentials) = prepare_write_fstab($fstab, $o_prefix, '');
- output("$o_prefix/etc/fstab", $s);
- network::smb::save_credentials($_) foreach @$smb_credentials;
-}
-
-sub auto_fs() {
- grep { chop; $_ && !/nodev/ } cat_("/etc/filesystems");
-}
-
-sub set_removable_mntpoints {
- my ($all_hds) = @_;
-
- my %names;
- foreach (@{$all_hds->{raw_hds}}) {
- my $name = detect_devices::suggest_mount_point($_) or next;
- $name eq 'zip' and next;
-
- my $s = ++$names{$name};
- $_->{mntpoint} ||= "/mnt/$name" . ($s == 1 ? '' : $s);
- }
-}
-
-sub get_raw_hds {
- my ($prefix, $all_hds) = @_;
-
- push @{$all_hds->{raw_hds}}, detect_devices::removables();
- $_->{is_removable} = 1 foreach @{$all_hds->{raw_hds}};
-
- get_major_minor(@{$all_hds->{raw_hds}});
-
- my @fstab = read_fstab($prefix, '/etc/fstab', 'keep_default');
- $all_hds->{nfss} = [ grep { $_->{fs_type} eq 'nfs' } @fstab ];
- $all_hds->{smbs} = [ grep { $_->{fs_type} eq 'smbfs' } @fstab ];
- $all_hds->{davs} = [ grep { $_->{fs_type} eq 'davfs' } @fstab ];
- $all_hds->{special} = [
- (grep { $_->{fs_type} eq 'tmpfs' } @fstab),
- { device => 'none', mntpoint => '/proc', fs_type => 'proc' },
- ];
-}
-
-
-################################################################################
-# mounting functions
-################################################################################
-sub set_loop {
- my ($part) = @_;
- $part->{real_device} ||= devices::set_loop(devices::make($part->{device}), $part->{encrypt_key}, $part->{options} =~ /encryption=(\w+)/);
-}
-
-sub swapon {
- my ($dev) = @_;
- log::l("swapon called with $dev");
- syscall_('swapon', devices::make($dev), 0) or die "swapon($dev) failed: $!";
-}
-
-sub swapoff {
- my ($dev) = @_;
- syscall_('swapoff', devices::make($dev)) or die "swapoff($dev) failed: $!";
-}
-
-sub formatMount_part {
- my ($part, $raids, $fstab, $prefix, $wait_message) = @_;
-
- if (isLoopback($part)) {
- formatMount_part($part->{loopback_device}, $raids, $fstab, $prefix, $wait_message);
- }
- if (my $p = fs::get::up_mount_point($part->{mntpoint}, $fstab)) {
- formatMount_part($p, $raids, $fstab, $prefix, $wait_message) unless loopback::carryRootLoopback($part);
- }
- if ($part->{toFormat}) {
- fs::format::part($raids, $part, $prefix, $wait_message);
- }
- mount_part($part, $prefix, 0, $wait_message);
-}
-
-sub formatMount_all {
- my ($raids, $fstab, $prefix, $wait_message) = @_;
- formatMount_part($_, $raids, $fstab, $prefix, $wait_message)
- foreach sort { isLoopback($a) ? 1 : isSwap($a) ? -1 : 0 } grep { $_->{mntpoint} } @$fstab;
-
- #- ensure the link is there
- loopback::carryRootCreateSymlink($_, $prefix) foreach @$fstab;
-
- #- for fun :)
- #- that way, when install exits via ctrl-c, it gives hand to partition
- eval {
- my ($_type, $major, $minor) = devices::entry(fs::get::root($fstab)->{device});
- output "/proc/sys/kernel/real-root-dev", makedev($major, $minor);
- };
-}
-
-sub mount {
- my ($dev, $where, $fs, $b_rdonly, $o_options, $o_wait_message) = @_;
- log::l("mounting $dev on $where as type $fs, options $o_options");
-
- -d $where or mkdir_p($where);
-
- $fs or log::l("not mounting $dev partition"), return;
-
- my @fs_modules = qw(ext3 hfs jfs ntfs romfs reiserfs ufs xfs vfat);
-
- if (member($fs, 'smb', 'smbfs', 'nfs', 'davfs') && $::isStandalone || $::move) {
- $o_wait_message->(N("Mounting partition %s", $dev)) if $o_wait_message;
- system('mount', '-t', $fs, $dev, $where, if_($o_options, '-o', $o_options)) == 0 or die N("mounting partition %s in directory %s failed", $dev, $where);
- } else {
- my @types = ('ext2', 'proc', 'sysfs', 'usbfs', 'usbdevfs', 'iso9660', 'devfs', 'devpts', @fs_modules);
-
- member($fs, @types) or log::l("skipping mounting $dev partition ($fs)"), return;
-
- $where =~ s|/$||;
-
- my $flag = c::MS_MGC_VAL();
- $flag |= c::MS_RDONLY() if $b_rdonly;
- my $mount_opt = "";
-
- if ($fs eq 'vfat') {
- $mount_opt = 'check=relaxed';
- } elsif ($fs eq 'reiserfs') {
- #- could be better if we knew if there is a /boot or not
- #- without knowing it, / is forced to be mounted with notail
- # if $where =~ m|/(boot)?$|;
- $mount_opt = 'notail'; #- notail in any case
- } elsif ($fs eq 'jfs' && !$b_rdonly) {
- $o_wait_message->(N("Checking %s", $dev)) if $o_wait_message;
- #- needed if the system is dirty otherwise mounting read-write simply fails
- run_program::raw({ timeout => 60 * 60 }, "fsck.jfs", $dev) or do {
- my $err = $?;
- die "fsck.jfs failed" if $err & 0xfc00;
- };
- } elsif ($fs eq 'ext2' && !$b_rdonly) {
- $o_wait_message->(N("Checking %s", $dev)) if $o_wait_message;
- foreach ('-a', '-y') {
- run_program::raw({ timeout => 60 * 60 }, "fsck.ext2", $_, $dev);
- my $err = $?;
- if ($err & 0x0100) {
- log::l("fsck corrected partition $dev");
- }
- if ($err & 0xfeff) {
- my $txt = sprintf("fsck failed on %s with exit code %d or signal %d", $dev, $err >> 8, $err & 255);
- $_ eq '-y' ? die($txt) : cdie($txt);
- } else {
- last;
- }
- }
- }
- if (member($fs, @fs_modules)) {
- eval { modules::load($fs) };
- } elsif ($fs eq 'iso9660') {
- eval { modules::load('isofs') };
- }
- log::l("calling mount($dev, $where, $fs, $flag, $mount_opt)");
- $o_wait_message->(N("Mounting partition %s", $dev)) if $o_wait_message;
- syscall_('mount', $dev, $where, $fs, $flag, $mount_opt) or die N("mounting partition %s in directory %s failed", $dev, $where) . " ($!)";
-
- eval { #- fail silently, /etc may be read-only
- append_to_file("/etc/mtab", "$dev $where $fs defaults 0 0\n");
- };
- }
-}
-
-#- takes the mount point to umount (can also be the device)
-sub umount {
- my ($mntpoint) = @_;
- $mntpoint =~ s|/$||;
- log::l("calling umount($mntpoint)");
-
- syscall_('umount2', $mntpoint, 0) or do {
- kill 15, fuzzy_pidofs('^fam\b');
- syscall_('umount2', $mntpoint, 0) or die N("error unmounting %s: %s", $mntpoint, $!);
- };
-
- substInFile { $_ = '' if /(^|\s)$mntpoint\s/ } '/etc/mtab'; #- do not care about error, if we can not read, we will not manage to write... (and mess mtab)
-}
-
-sub mount_part {
- my ($part, $o_prefix, $b_rdonly, $o_wait_message) = @_;
-
- #- root carrier's link can not be mounted
- loopback::carryRootCreateSymlink($part, $o_prefix);
-
- log::l("isMounted=$part->{isMounted}, real_mntpoint=$part->{real_mntpoint}, mntpoint=$part->{mntpoint}");
- if ($part->{isMounted} && $part->{real_mntpoint} && $part->{mntpoint}) {
- log::l("remounting partition on $o_prefix$part->{mntpoint} instead of $part->{real_mntpoint}");
- if ($::isInstall) { #- ensure partition will not be busy.
- require install_any;
- install_any::getFile('XXX');
- }
- eval {
- umount($part->{real_mntpoint});
- rmdir $part->{real_mntpoint};
- symlinkf "$o_prefix$part->{mntpoint}", $part->{real_mntpoint};
- delete $part->{real_mntpoint};
- $part->{isMounted} = 0;
- };
- }
-
- return if $part->{isMounted};
-
- unless ($::testing) {
- if (isSwap($part)) {
- $o_wait_message->(N("Enabling swap partition %s", $part->{device})) if $o_wait_message;
- swapon($part->{device});
- } else {
- $part->{mntpoint} or die "missing mount point for partition $part->{device}";
-
- my $mntpoint = ($o_prefix || '') . $part->{mntpoint};
- if (isLoopback($part) || $part->{encrypt_key}) {
- set_loop($part);
- } elsif ($part->{options} =~ /encrypted/) {
- log::l("skip mounting $part->{device} since we do not have the encrypt_key");
- return;
- } elsif (loopback::carryRootLoopback($part)) {
- $mntpoint = "/initrd/loopfs";
- }
- my $dev = $part->{real_device} || part2wild_device_name('', $part);
- mount($dev, $mntpoint, $part->{fs_type}, $b_rdonly, $part->{options}, $o_wait_message);
- rmdir "$mntpoint/lost+found";
- }
- }
- $part->{isMounted} = 1;
- set_isFormatted($part, 1); #- assume that if mount works, partition is formatted
-}
-
-sub umount_part {
- my ($part, $o_prefix) = @_;
-
- $part->{isMounted} || $part->{real_mntpoint} or return;
-
- unless ($::testing) {
- if (isSwap($part)) {
- swapoff($part->{device});
- } elsif (loopback::carryRootLoopback($part)) {
- umount("/initrd/loopfs");
- } else {
- umount(($o_prefix || '') . $part->{mntpoint} || devices::make($part->{device}));
- devices::del_loop(delete $part->{real_device}) if $part->{real_device};
- }
- }
- $part->{isMounted} = 0;
-}
-
-sub umount_all($;$) {
- my ($fstab, $prefix) = @_;
-
- log::l("unmounting all filesystems");
-
- foreach (sort { $b->{mntpoint} cmp $a->{mntpoint} } @$fstab) {
- $_->{mntpoint} and umount_part($_, $prefix);
- }
-}
-
-################################################################################
-# various functions
-################################################################################
-sub df {
- my ($part, $o_prefix) = @_;
- my $dir = "/tmp/tmp_fs_df";
-
- return $part->{free} if exists $part->{free};
-
- if ($part->{isMounted}) {
- $dir = ($o_prefix || '') . $part->{mntpoint};
- } elsif ($part->{notFormatted} && !$part->{isFormatted}) {
- return; #- will not even try!
- } else {
- mkdir_p($dir);
- eval { mount(devices::make($part->{device}), $dir, $part->{fs_type}, 'readonly') };
- if ($@) {
- set_isFormatted($part, 0);
- unlink $dir;
- return;
- }
- }
- my (undef, $free) = MDK::Common::System::df($dir);
-
- if (!$part->{isMounted}) {
- umount($dir);
- unlink($dir);
- }
-
- $part->{free} = 2 * $free if defined $free;
- $part->{free};
-}
-
-sub mount_usbfs {
- my ($prefix) = @_;
-
- my $fs = cat_('/proc/filesystems') =~ /usbfs/ ? 'usbfs' : 'usbdevfs';
- mount('none', "$prefix/proc/bus/usb", $fs);
-}
-
-1;
diff --git a/perl-install/fs/format.pm b/perl-install/fs/format.pm
deleted file mode 100644
index 1b7b977cd..000000000
--- a/perl-install/fs/format.pm
+++ /dev/null
@@ -1,151 +0,0 @@
-package fs::format; # $Id$
-
-use diagnostics;
-use strict;
-
-use run_program;
-use common;
-use fs::type;
-use log;
-
-my %cmds = (
- ext2 => [ 'e2fsprogs', 'mke2fs', '-F' ],
- ext3 => [ 'e2fsprogs', 'mke2fs', '-F', '-j' ],
- reiserfs => [ 'reiserfsprogs', 'mkreiserfs', '-ff' ],
- xfs => [ 'xfsprogs', 'mkfs.xfs', '-f', '-q' ],
- jfs => [ 'jfsprogs', 'mkfs.jfs', '-f' ],
- hfs => [ 'hfsutils', 'hformat' ],
- dos => [ 'dosfstools', 'mkdosfs' ],
- vfat => [ 'dosfstools', 'mkdosfs', '-F', '32' ],
- swap => [ 'util-linux', 'mkswap' ],
-);
-
-sub package_needed_for_partition_type {
- my ($part) = @_;
- my $l = $cmds{$part->{fs_type}} or return;
- $l->[0];
-}
-
-sub known_type {
- my ($part) = @_;
- to_bool($cmds{$part->{fs_type}});
-}
-
-sub check_package_is_installed {
- my ($do_pkgs, $fs_type) = @_;
-
- my ($pkg, $binary) = @{$cmds{$fs_type} || return};
- $do_pkgs->ensure_binary_is_installed($pkg, $binary);
-}
-
-sub part {
- my ($raids, $part, $prefix, $wait_message) = @_;
- if (isRAID($part)) {
- $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message;
- require raid;
- raid::format_part($raids, $part);
- } elsif (isLoopback($part)) {
- $wait_message->(N("Creating and formatting file %s", $part->{loopback_file})) if $wait_message;
- loopback::format_part($part, $prefix);
- } else {
- $wait_message->(N("Formatting partition %s", $part->{device})) if $wait_message;
- part_raw($part, $wait_message);
- }
-}
-
-sub part_raw {
- my ($part, $wait_message) = @_;
-
- $part->{isFormatted} and return;
-
- if ($part->{encrypt_key}) {
- require fs;
- fs::set_loop($part);
- }
-
- my $dev = $part->{real_device} || $part->{device};
-
- my @options = if_($part->{toFormatCheck}, "-c");
- log::l("formatting device $dev (type $part->{fs_type})");
-
- my $fs_type = $part->{fs_type};
-
- if ($fs_type eq 'ext2' || $fs_type eq 'ext3') {
- push @options, "-m", "0" if $part->{mntpoint} =~ m|^/home|;
- } elsif (isDos($part)) {
- $fs_type = 'dos';
- } elsif ($fs_type eq 'hfs') {
- push @options, '-l', "Untitled";
- } elsif (isAppleBootstrap($part)) {
- push @options, '-l', 'bootstrap';
- }
-
- my ($_pkg, $cmd, @first_options) = @{$cmds{$fs_type} || die N("I do not know how to format %s in type %s", $part->{device}, $part->{fs_type})};
-
- my @args = ($cmd, @first_options, @options, devices::make($dev));
-
- if ($cmd eq 'mke2fs' && $wait_message) {
- mke2fs($wait_message, @args) or die N("%s formatting of %s failed", $fs_type, $dev);
- } else {
- run_program::raw({ timeout => 60 * 60 }, @args) or die N("%s formatting of %s failed", $fs_type, $dev);
- }
-
- if ($fs_type eq 'ext3') {
- disable_forced_fsck($dev);
- }
-
- set_isFormatted($part, 1);
-}
-
-sub mke2fs {
- my ($wait_message, @args) = @_;
-
- open(my $F, "@args |");
-
- local $/ = "\b";
- local $_;
- while (<$F>) {
- #- even if it still takes some time when format is over, we don't want the progress bar to stay at 85%
- $wait_message->('', $1, $2) if m!^\s*(\d+)/(\d+)\b!;
- }
- return close($F);
-}
-
-sub disable_forced_fsck {
- my ($dev) = @_;
- run_program::run("tune2fs", "-c0", "-i0", devices::make($dev));
-}
-
-sub wait_message {
- my ($in) = @_;
-
- my ($w, $progress, $last_msg, $displayed);
- my $on_expose = sub { $displayed = 1; 0 }; #- declared here to workaround perl limitation
- $w, sub {
- my ($msg, $current, $total) = @_;
- if ($msg) {
- $last_msg = $msg;
- if (!$w) {
- $progress = Gtk2::ProgressBar->new if $in->isa('interactive::gtk');
- $w = $in->wait_message('', [ '', if_($progress, $progress) ]);
- if ($progress) {
- #- don't show by default, only if we are given progress information
- $progress->hide;
- $progress->signal_connect(expose_event => $on_expose);
- }
- }
- $w->set($msg);
- } elsif ($total) {
- if ($progress) {
- $progress->set_fraction($current / $total);
- $progress->show;
- $displayed = 0;
- mygtk2::flush() while !$displayed;
- } else {
- $w->set([ $last_msg, "$current / $total" ]);
- }
- }
- };
-}
-
-1;
diff --git a/perl-install/fs/get.pm b/perl-install/fs/get.pm
deleted file mode 100644
index 6b982c1e9..000000000
--- a/perl-install/fs/get.pm
+++ /dev/null
@@ -1,128 +0,0 @@
-package fs::get; # $Id$
-
-use diagnostics;
-use strict;
-
-use partition_table;
-use fs::type;
-use fs;
-use common;
-use log;
-
-sub empty_all_hds() {
- { hds => [], lvms => [], raids => [], loopbacks => [], raw_hds => [], nfss => [], smbs => [], davs => [], special => [] };
-}
-sub fstab {
- my ($all_hds) = @_;
- my @parts = map { partition_table::get_normal_parts($_) } hds($all_hds);
- @parts, @{$all_hds->{raids}}, @{$all_hds->{loopbacks}};
-}
-sub really_all_fstab {
- my ($all_hds) = @_;
- my @l = fstab($all_hds);
- @l, @{$all_hds->{raw_hds}}, @{$all_hds->{nfss}}, @{$all_hds->{smbs}}, @{$all_hds->{davs}};
-}
-
-sub fstab_and_holes {
- my ($all_hds) = @_;
- hds_fstab_and_holes(hds($all_hds)), @{$all_hds->{raids}}, @{$all_hds->{loopbacks}};
-}
-
-sub holes {
- my ($all_hds) = @_;
- grep { isEmpty($_) } fstab_and_holes($all_hds);
-}
-sub hds_holes {
- grep { isEmpty($_) } hds_fstab_and_holes(@_);
-}
-sub free_space {
- my ($all_hds) = @_;
- sum map { $_->{size} } holes($all_hds);
-}
-sub hds_free_space {
- sum map { $_->{size} } hds_holes(@_);
-}
-
-sub hds {
- my ($all_hds) = @_;
- (@{$all_hds->{hds}}, @{$all_hds->{lvms}});
-}
-
-#- get all normal partition including special ones as found on sparc.
-sub hds_fstab {
- map { partition_table::get_normal_parts($_) } @_;
-}
-
-sub hds_fstab_and_holes {
- map {
- if (isLVM($_)) {
- my @parts = partition_table::get_normal_parts($_);
- my $free = $_->{totalsectors} - sum map { $_->{size} } @parts;
- my $free_part = { start => 0, size => $free, pt_type => 0, rootDevice => $_->{VG_name} };
- @parts, if_($free >= $_->cylinder_size, $free_part);
- } else {
- partition_table::get_normal_parts_and_holes($_);
- }
- } @_;
-}
-
-
-sub device2part {
- my ($dev, $fstab) = @_;
- my $subpart = fs::subpart_from_wild_device_name($dev);
- my $part = find { fsedit::is_same_hd($subpart, $_) } @$fstab;
- log::l("fs::get::device2part: unknown device <<$dev>>") if !$part;
- $part;
-}
-
-sub part2hd {
- my ($part, $all_hds) = @_;
- my $hd = find { $part->{rootDevice} eq ($_->{device} || $_->{VG_name}) } hds($all_hds);
- $hd;
-}
-
-sub file2part {
- my ($fstab, $file, $b_keep_simple_symlinks) = @_;
- my $part;
-
- $file = $b_keep_simple_symlinks ? common::expand_symlinks_but_simple("$::prefix$file") : expand_symlinks("$::prefix$file");
- unless ($file =~ s/^$::prefix//) {
- my $part = find { loopback::carryRootLoopback($_) } @$fstab or die;
- log::l("found $part->{mntpoint}");
- $file =~ s|/initrd/loopfs|$part->{mntpoint}|;
- }
- foreach (@$fstab) {
- my $m = $_->{mntpoint};
- $part = $_ if
- $file =~ /^\Q$m/ &&
- (!$part || length $part->{mntpoint} < length $m);
- }
- $part or die "file2part: not found $file";
- $file =~ s|$part->{mntpoint}/?|/|;
- ($part, $file);
-}
-
-sub mntpoint2part {
- my ($mntpoint, $fstab) = @_;
- find { $mntpoint eq $_->{mntpoint} } @$fstab;
-}
-sub has_mntpoint {
- my ($mntpoint, $all_hds) = @_;
- mntpoint2part($mntpoint, [ really_all_fstab($all_hds) ]);
-}
-sub root_ {
- my ($fstab, $o_boot) = @_;
- $o_boot && mntpoint2part("/boot", $fstab) || mntpoint2part("/", $fstab);
-}
-sub root { &root_ || {} }
-
-sub up_mount_point {
- my ($mntpoint, $fstab) = @_;
- while (1) {
- $mntpoint = dirname($mntpoint);
- $mntpoint ne "." or return;
- $_->{mntpoint} eq $mntpoint and return $_ foreach @$fstab;
- }
-}
-
-1;
diff --git a/perl-install/fs/mount_options.pm b/perl-install/fs/mount_options.pm
deleted file mode 100644
index f59a083f7..000000000
--- a/perl-install/fs/mount_options.pm
+++ /dev/null
@@ -1,263 +0,0 @@
-package fs::mount_options; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use fs::type;
-use log;
-
-sub list() {
- my %non_defaults = (
- sync => 'async', noatime => 'atime', noauto => 'auto', ro => 'rw',
- user => 'nouser', nodev => 'dev', noexec => 'exec', nosuid => 'suid',
- );
- my @user_implies = qw(noexec nodev nosuid);
- \%non_defaults, \@user_implies;
-}
-
-sub unpack {
- my ($part) = @_;
- my $packed_options = $part->{options};
-
- my ($non_defaults, $user_implies) = list();
-
- my @auto_fs = fs::auto_fs();
- my %per_fs = (
- iso9660 => [ qw(unhide) ],
- vfat => [ qw(umask=0 umask=0022) ],
- ntfs => [ qw(umask=0 umask=0022) ],
- nfs => [ qw(rsize=8192 wsize=8192) ],
- smbfs => [ qw(username= password=) ],
- davfs => [ qw(username= password= uid= gid=) ],
- reiserfs => [ 'notail' ],
- );
- push @{$per_fs{$_}}, 'usrquota', 'grpquota' foreach 'ext2', 'ext3', 'xfs';
-
- while (my ($fs, $l) = each %per_fs) {
- $part->{fs_type} eq $fs || $part->{fs_type} eq 'auto' && member($fs, @auto_fs) or next;
- $non_defaults->{$_} = 1 foreach @$l;
- }
-
- $non_defaults->{encrypted} = 1 if !$part->{isFormatted} || isSwap($part);
-
- $non_defaults->{supermount} = 1 if $part->{fs_type} =~ /:/ || member($part->{fs_type}, 'auto', @auto_fs);
-
- my $defaults = { reverse %$non_defaults };
- my %options = map { $_ => '' } keys %$non_defaults;
- my @unknown;
- foreach (split(",", $packed_options)) {
- if ($_ eq 'user') {
- $options{$_} = 1 foreach 'user', @$user_implies;
- } elsif (exists $non_defaults->{$_}) {
- $options{$_} = 1;
- } elsif ($defaults->{$_}) {
- $options{$defaults->{$_}} = 0;
- } elsif (/(.*?=)(.*)/) {
- $options{$1} = $2;
- } else {
- push @unknown, $_;
- }
- }
- # merge those, for cleaner help
- $options{'rsize=8192,wsize=8192'} = delete $options{'rsize=8192'} && delete $options{'wsize=8192'}
- if exists $options{'rsize=8192'};
-
- my $unknown = join(",", @unknown);
- \%options, $unknown;
-}
-
-sub pack_ {
- my ($_part, $options, $unknown) = @_;
-
- my ($non_defaults, $user_implies) = list();
- my @l;
-
- my @umasks = map {
- if (/^umask=/) {
- my $v = delete $options->{$_};
- /^umask=(.+)/ ? if_($v, $1) : $v;
- } else { () }
- } keys %$options;
- if (@umasks) {
- push @l, 'umask=' . min(@umasks);
- }
-
- if (delete $options->{user}) {
- push @l, 'user';
- foreach (@$user_implies) {
- if (!delete $options->{$_}) {
- # overriding
- $options->{$non_defaults->{$_}} = 1;
- }
- }
- }
- push @l, map_each { if_($::b, $::a =~ /=$/ ? "$::a$::b" : $::a) } %$options;
- push @l, $unknown;
-
- join(",", uniq(grep { $_ } @l));
-}
-sub pack {
- my ($part, $options, $unknown) = @_;
- $part->{options} = pack_($part, $options, $unknown);
- noreturn();
-}
-
-# update me on each util-linux new release:
-sub help() {
- (
-
- 'grpquota' => '',
-
- 'noatime' => N("Do not update inode access times on this file system
-(e.g, for faster access on the news spool to speed up news servers)."),
-
- 'noauto' => N("Can only be mounted explicitly (i.e.,
-the -a option will not cause the file system to be mounted)."),
-
- 'nodev' => N("Do not interpret character or block special devices on the file system."),
-
- 'noexec' => N("Do not allow execution of any binaries on the mounted
-file system. This option might be useful for a server that has file systems
-containing binaries for architectures other than its own."),
-
- 'nosuid' => N("Do not allow set-user-identifier or set-group-identifier
-bits to take effect. (This seems safe, but is in fact rather unsafe if you
-have suidperl(1) installed.)"),
-
- 'ro' => N("Mount the file system read-only."),
-
- 'sync' => N("All I/O to the file system should be done synchronously."),
-
- 'supermount' => '',
-
- 'user' => N("Allow an ordinary user to mount the file system. The
-name of the mounting user is written to mtab so that he can unmount the file
-system again. This option implies the options noexec, nosuid, and nodev
-(unless overridden by subsequent options, as in the option line
-user,exec,dev,suid )."),
-
- 'usrquota' => '',
-
- 'umask=0' => N("Give write access to ordinary users"),
-
- 'umask=0022' => N("Give read-only access to ordinary users"),
- );
-}
-
-
-sub rationalize {
- my ($part) = @_;
-
- my ($options, $unknown) = &unpack($part);
-
- if ($part->{fs_type} ne 'reiserfs') {
- $options->{notail} = 0;
- }
- if (!fs::type::can_be_one_of_those_fs_types($part, 'vfat', 'smbfs', 'iso9660', 'udf')) {
- delete $options->{'codepage='};
- }
- if (member($part->{mntpoint}, fs::type::directories_needed_to_boot())) {
- foreach (qw(users user noauto supermount)) {
- if ($options->{$_}) {
- $options->{$_} = 0;
- $options->{$_} = 0 foreach qw(nodev noexec nosuid);
- }
- }
- }
-
- &pack($part, $options, $unknown);
-}
-
-sub set_default {
- my ($part, %opts) = @_;
- #- opts are: useSupermount security iocharset codepage ignore_is_removable
-
- my ($options, $unknown) = &unpack($part);
-
- if (!$opts{ignore_is_removable} && $part->{is_removable}
- && !member($part->{mntpoint}, fs::type::directories_needed_to_boot())
- && (!$part->{fs_type} || $part->{fs_type} eq 'auto' || $part->{fs_type} =~ /:/)) {
- $options->{supermount} = $opts{useSupermount} && !($opts{useSupermount} eq 'magicdev' && $part->{media_type} eq 'cdrom');
- $part->{fs_type} = !$options->{supermount} ? 'auto' :
- $part->{media_type} eq 'cdrom' ? 'udf:iso9660' : 'ext2:vfat';
- $options->{sync} = 1 if $part->{media_type} ne 'cdrom';
- }
-
- if ($part->{media_type} eq 'cdrom') {
- $options->{ro} = 1;
- }
-
- if ($part->{media_type} eq 'fd') {
- # slow device so do not loose time, write now!
- $options->{sync} = 1;
- }
-
- if (isTrueFS($part)) {
- #- noatime on laptops (do not wake up the hd)
- #- Do not update inode access times on this
- #- file system (e.g, for faster access on the
- #- news spool to speed up news servers).
- $options->{noatime} = detect_devices::isLaptop();
- }
- if ($part->{fs_type} eq 'nfs') {
- put_in_hash($options, {
- nosuid => 1, 'rsize=8192,wsize=8192' => 1, soft => 1,
- });
- }
- if ($part->{fs_type} eq 'smbfs') {
- add2hash($options, { 'username=' => '%' }) if !$options->{'credentials='};
- }
- if (fs::type::can_be_this_fs_type($part, 'vfat')) {
-
- put_in_hash($options, {
- users => 1, noexec => 0,
- }) if $part->{is_removable};
-
- put_in_hash($options, {
- 'umask=0' => $opts{security} < 3, 'umask=0022' => $opts{security} < 4,
- 'iocharset=' => $opts{iocharset}, 'codepage=' => $opts{codepage},
- });
- }
- if ($part->{fs_type} eq 'ntfs') {
- put_in_hash($options, { ro => 1, 'nls=' => $opts{iocharset},
- 'umask=0' => $opts{security} < 3, 'umask=0022' => $opts{security} < 4,
- });
- }
- if (fs::type::can_be_this_fs_type($part, 'iso9660')) {
- put_in_hash($options, { user => 1, noexec => 0, 'iocharset=' => $opts{iocharset} });
- }
- if ($part->{fs_type} eq 'reiserfs') {
- $options->{notail} = 1;
- }
- if (isLoopback($part) && !isSwap($part)) { #- no need for loop option for swap files
- $options->{loop} = 1;
- }
-
- # rationalize: no need for user
- if ($options->{autofs} || $options->{supermount}) {
- $options->{users} = $options->{user} = 0;
- }
-
- if ($options->{user} || $options->{users}) {
- # have noauto when we have user
- $options->{noauto} = 1;
- # ensure security (user_implies - noexec as noexec is not a security matter)
- $options->{$_} = 1 foreach 'nodev', 'nosuid';
- }
-
- &pack($part, $options, $unknown);
-
- rationalize($part);
-}
-
-sub set_all_default {
- my ($all_hds, %opts) = @_;
- #- opts are: useSupermount security iocharset codepage
-
- foreach my $part (fs::get::really_all_fstab($all_hds)) {
- set_default($part, %opts);
- }
-}
-
-1;
diff --git a/perl-install/fs/type.pm b/perl-install/fs/type.pm
deleted file mode 100644
index 5fcc7facc..000000000
--- a/perl-install/fs/type.pm
+++ /dev/null
@@ -1,378 +0,0 @@
-package fs::type; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(
- isEmpty isExtended isTrueLocalFS isTrueFS isDos isSwap isOtherAvailableFS isRawLVM isRawRAID isRAID isLVM isMountableRW isNonMountable isPartOfLVM isPartOfRAID isPartOfLoopback isLoopback isMounted isBusy isSpecial isApple isAppleBootstrap isWholedisk isHiddenMacPart isFat_or_NTFS
- maybeFormatted set_isFormatted
-);
-
-
-my (%type_name2pt_type, %type_name2fs_type, %fs_type2pt_type, %pt_type2fs_type, %type_names);
-
-{
- my @list_types = (
- important => [
- 0x82 => 'swap', 'Linux swap',
- 0x83 => 'ext2', 'Linux native',
- 0x83 => 'ext3', 'Journalised FS: ext3',
- 0x83 => 'reiserfs', 'Journalised FS: ReiserFS',
-if_(arch() =~ /ppc|i.86|ia64|x86_64/,
- 0x83 => 'xfs', 'Journalised FS: XFS',
-),
-if_(arch() =~ /ppc|i.86/,
- 0x83 => 'jfs', 'Journalised FS: JFS',
-),
-if_(arch() =~ /i.86|ia64|x86_64/,
- 0x0b => 'vfat', 'FAT32',
-),
-if_(arch() =~ /ppc/,
- 0x401 => '', 'Apple Bootstrap',
- 0x402 => 'hfs', 'Apple HFS Partition',
- 0x41 => '', 'PPC PReP Boot',
-),
- ],
-
- less_important => [
- 0x8e => '', 'Linux Logical Volume Manager',
- 0xfd => '', 'Linux RAID',
- ],
-
- special => [
- 0x0 => '', 'Empty',
- 0x05 => '', 'Extended',
- 0x0f => '', 'W95 Extended (LBA)',
- 0x85 => '', 'Linux extended',
- ],
-
- backward_compatibility => [
- 0x183 => 'reiserfs', 'reiserfs (deprecated)',
- 0x283 => 'xfs', 'xfs (deprecated)',
- 0x383 => 'jfs', 'jfs (deprecated)',
- 0x483 => 'ext3', 'ext3 (deprecated)',
- ],
-
- other => [
- if_(arch() =~ /^ia64/,
- 0x100 => '', 'Various',
-), if_(arch() =~ /^ppc/,
- 0x401 => 'apple', 'Apple Partition',
-), if_(arch() =~ /^sparc/,
- 0x01 => 'ufs', 'SunOS boot',
- 0x02 => 'ufs', 'SunOS root',
- 0x03 => '', 'SunOS swap',
- 0x04 => 'ufs', 'SunOS usr',
- 0x05 => '', 'Whole disk',
- 0x06 => 'ufs', 'SunOS stand',
- 0x07 => 'ufs', 'SunOS var',
- 0x08 => 'ufs', 'SunOS home',
-), if_(arch() =~ /^i.86|x86_64/,
- 0x01 => 'vfat', 'FAT12',
- 0x02 => '', 'XENIX root',
- 0x03 => '', 'XENIX usr',
- 0x04 => 'vfat', 'FAT16 <32M',
- 0x06 => 'vfat', 'FAT16',
- 0x07 => (arch() =~ /^ppc/ ? 'hpfs' : 'ntfs'), 'NTFS (or HPFS)',
- 0x08 => '', 'AIX',
-),
- 0x09 => '', 'AIX bootable',
- 0x0a => '', 'OS/2 Boot Manager',
- 0x0c => 'vfat', 'W95 FAT32 (LBA)',
- 0x0e => 'vfat', 'W95 FAT16 (LBA)',
- 0x10 => '', 'OPUS',
- 0x11 => '', 'Hidden FAT12',
- 0x12 => '', 'Compaq diagnostics',
- 0x14 => '', 'Hidden FAT16 <32M',
- 0x16 => '', 'Hidden FAT16',
- 0x17 => 'ntfs', 'Hidden HPFS/NTFS',
- 0x18 => '', 'AST SmartSleep',
- 0x1b => 'vfat', 'Hidden W95 FAT32',
- 0x1c => 'vfat', 'Hidden W95 FAT32 (LBA)',
- 0x1e => 'vfat', 'Hidden W95 FAT16 (LBA)',
- 0x24 => '', 'NEC DOS',
- 0x39 => '', 'Plan 9',
- 0x3c => '', 'PartitionMagic recovery',
- 0x40 => '', 'Venix 80286',
-if_(arch() !~ /ppc/,
- 0x41 => '', 'PPC PReP Boot',
-),
- 0x42 => '', 'SFS',
- 0x4d => '', 'QNX4.x',
- 0x4e => '', 'QNX4.x 2nd part',
- 0x4f => '', 'QNX4.x 3rd part',
- 0x50 => '', 'OnTrack DM',
- 0x51 => '', 'OnTrack DM6 Aux1',
- 0x52 => '', 'CP/M',
- 0x53 => '', 'OnTrack DM6 Aux3',
- 0x54 => '', 'OnTrackDM6',
- 0x55 => '', 'EZ-Drive',
- 0x56 => '', 'Golden Bow',
- 0x5c => '', 'Priam Edisk',
- 0x61 => '', 'SpeedStor',
- 0x63 => '', 'GNU HURD or SysV',
- 0x64 => '', 'Novell Netware 286',
- 0x65 => '', 'Novell Netware 386',
- 0x70 => '', 'DiskSecure Multi-Boot',
- 0x75 => '', 'PC/IX',
- 0x80 => '', 'Old Minix',
- 0x81 => '', 'Minix / old Linux',
- 0x84 => '', 'OS/2 hidden C: drive',
- 0x86 => '', 'NTFS volume set',
- 0x87 => '', 'NTFS volume set ',
- 0x93 => '', 'Amoeba',
- 0x94 => '', 'Amoeba BBT',
- 0x9f => '', 'BSD/OS',
- 0xa0 => '', 'IBM Thinkpad hibernation',
- 0xa5 => '', 'FreeBSD',
- 0xa6 => '', 'OpenBSD',
- 0xa7 => '', 'NeXTSTEP',
- 0xa8 => '', 'Darwin UFS',
- 0xa9 => '', 'NetBSD',
- 0xab => '', 'Darwin boot',
- 0xb7 => '', 'BSDI fs',
- 0xb8 => '', 'BSDI swap',
- 0xbb => '', 'Boot Wizard hidden',
- 0xbe => '', 'Solaris boot',
- 0xbf => '', 'Microsoft XBox OS Partitions',
- 0xc1 => '', 'DRDOS/sec (FAT-12)',
- 0xc4 => '', 'DRDOS/sec (FAT-16 < 32M)',
- 0xc6 => '', 'DRDOS/sec (FAT-16)',
- 0xc7 => '', 'Syrinx',
- 0xda => '', 'Non-FS data',
- 0xdb => '', 'CP/M / CTOS / ...',
- 0xde => '', 'Dell Utility',
- 0xdf => '', 'BootIt',
- 0xe1 => '', 'SpeedStor (FAT-12)',
- 0xe3 => '', 'DOS R/O',
- 0xe4 => '', 'SpeedStor (FAT-16)',
- 0xeb => 'befs', 'BeOS fs',
- 0xee => '', 'EFI GPT',
- 0xef => 'vfat', 'EFI (FAT-12/16/32)',
- 0xf0 => '', 'Linux/PA-RISC boot',
- 0xf4 => '', 'SpeedStor (large part.)',
- 0xf2 => '', 'DOS secondary',
- 0xfe => '', 'LANstep',
- 0xff => '', 'BBT',
- ],
- );
-
- foreach (group_by2(@list_types)) {
- my ($name, $l) = @$_;
- for (my $i = 0; defined $l->[$i]; $i += 3) {
- my $pt_type = $l->[$i];
- my $fs_type = $l->[$i + 1];
- my $type_name = $l->[$i + 2];
- !exists $type_name2fs_type{$type_name} or internal_error("'$type_name' is not unique");
- $type_name2fs_type{$type_name} = $fs_type;
- $type_name2pt_type{$type_name} = $pt_type;
-
- $fs_type2pt_type{$fs_type} ||= $pt_type;
- $pt_type2fs_type{$pt_type} ||= $fs_type;
- push @{$type_names{$name}}, $type_name;
- }
- }
-}
-
-
-sub type_names() {
- my @l = @{$type_names{important}};
- push @l, @{$type_names{less_important}}, sort @{$type_names{other}} if $::expert;
- @l;
-}
-
-sub type_name2subpart {
- my ($name) = @_;
- exists $type_name2fs_type{$name} &&
- { fs_type => $type_name2fs_type{$name}, pt_type => $type_name2pt_type{$name} };
-}
-
-sub part2type_name {
- my ($part) = @_;
- my @names = keys %type_name2fs_type;
-
- my $pt_type = defined $part->{pt_type} ? $part->{pt_type} : $part->{fs_type} && $fs_type2pt_type{$part->{fs_type}};
- if (defined $pt_type) {
- @names = grep { $pt_type eq $type_name2pt_type{$_} } @names;
- }
- if (my $fs_type = $part->{fs_type} || $part->{pt_type} && $pt_type2fs_type{$part->{pt_type}}) {
- @names = grep { $fs_type eq $type_name2fs_type{$_} } @names;
- }
- if (@names > 1) {
- log::l("ERROR: (part2type_name) multiple match for $part->{pt_type} $part->{fs_type}");
- }
- first(@names);
-}
-sub type_name2pt_type {
- local ($_) = @_;
- /0x(.*)/ ? hex $1 : $type_name2pt_type{$_} || $_;
-}
-
-
-sub pt_type2subpart {
- my ($pt_type) = @_;
- my $fs_type = $pt_type2fs_type{$pt_type};
- { pt_type => $pt_type, if_($fs_type, fs_type => $fs_type) };
-}
-sub fs_type2subpart {
- my ($fs_type) = @_;
- my $pt_type = $fs_type2pt_type{$fs_type};
- { fs_type => $fs_type, if_($pt_type, pt_type => $pt_type) };
-}
-sub set_fs_type {
- my ($part, $fs_type) = @_;
- put_in_hash($part, fs_type2subpart($fs_type));
-}
-sub set_pt_type {
- my ($part, $pt_type) = @_;
- put_in_hash($part, pt_type2subpart($pt_type));
-}
-sub suggest_fs_type {
- my ($part, $fs_type) = @_;
- set_fs_type($part, $fs_type) if !$part->{pt_type} && !$part->{fs_type};
-}
-sub set_type_subpart {
- my ($part, $subpart) = @_;
- if (exists $subpart->{pt_type} && exists $subpart->{fs_type}) {
- $part->{fs_type} = $subpart->{fs_type};
- $part->{pt_type} = $subpart->{pt_type};
- } elsif (exists $subpart->{pt_type}) {
- set_pt_type($part, $subpart->{pt_type});
- } elsif (exists $subpart->{fs_type}) {
- set_fs_type($part, $subpart->{fs_type});
- } else {
- log::l("ERROR: (set_type_subpart) subpart has no type");
- }
-}
-
-
-my @partitions_signatures = (
- (map { [ 'Linux Logical Volume Manager', 0x200 * $_ + 0x18, "LVM2" ] } 0 .. 3),
- [ 'Linux Logical Volume Manager', 0, "HM\1\0" ],
- [ 'ext2', 0x438, "\x53\xEF" ],
- [ 'reiserfs', 0x10034, "ReIsErFs" ],
- [ 'reiserfs', 0x10034, "ReIsEr2Fs" ],
- [ 'xfs', 0, 'XFSB', 0x200, 'XAGF', 0x400, 'XAGI' ],
- [ 'jfs', 0x8000, 'JFS1' ],
- [ 'swap', 4086, "SWAP-SPACE" ],
- [ 'swap', 4086, "SWAPSPACE2" ],
- [ 'ntfs', 0x1FE, "\x55\xAA", 0x3, "NTFS" ],
- [ 'FAT32', 0x1FE, "\x55\xAA", 0x52, "FAT32" ],
-if_(arch() !~ /^sparc/,
- [ 'FAT16', 0x1FE, "\x55\xAA", 0x36, "FAT" ],
- [ 'iso9660', 0x8001, "CD001" ],
-),
-);
-
-sub fs_type_from_magic {
- my ($part) = @_;
- if (exists $part->{fs_type_from_magic}) {
- $part->{fs_type_from_magic};
- } else {
- my $type = type_subpart_from_magic($part);
- $type && $type->{fs_type};
- }
-}
-
-sub type_subpart_from_magic {
- my ($part) = @_;
- my $dev = devices::make($part->{device});
-
- my $check_md = sub {
- my ($F) = @_;
- my $MD_RESERVED_SECTORS = 128;
- my $sector = round_down($part->{size}, $MD_RESERVED_SECTORS) - $MD_RESERVED_SECTORS; #- MD_NEW_SIZE_SECTORS($part->{size})
- if (c::lseek_sector(fileno $F, $sector, 0)) {
- my $tmp;
- my $signature = "\xfc\x4e\x2b\xa9";
- sysread($F, $tmp, length $signature);
- $tmp eq $signature and return "Linux RAID";
- }
- '';
- };
- my $t = typeFromMagic($dev,
- if_($part->{size}, $check_md),
- @partitions_signatures) or return;
-
- my $p = type_name2subpart($t) || fs_type2subpart($t) || internal_error("unknown name/fs $t");
- if ($p->{fs_type} eq 'ext2') {
- #- there is no magic to differentiate ext3 and ext2. Using libext2fs
- #- to check if it has a journal
- $p->{fs_type} = 'ext3' if c::is_ext3($dev);
- }
- $part->{fs_type_from_magic} = $p->{fs_type};
- $p;
-}
-
-sub true_local_fs_types() { qw(ext3 ext2 reiserfs xfs jfs) }
-
-sub isEmpty { !$_[0]{fs_type} && $_[0]{pt_type} == 0 }
-sub isEfi { arch() =~ /ia64/ && $_[0]{pt_type} == 0xef }
-sub isWholedisk { arch() =~ /^sparc/ && $_[0]{pt_type} == 5 }
-sub isExtended { arch() !~ /^sparc/ && ($_[0]{pt_type} == 5 || $_[0]{pt_type} == 0xf || $_[0]{pt_type} == 0x85) }
-sub isRawLVM { $_[0]{pt_type} == 0x8e }
-sub isRawRAID { $_[0]{pt_type} == 0xfd }
-sub isSwap { $_[0]{fs_type} eq 'swap' }
-sub isDos { arch() !~ /^sparc/ && ${{ 1 => 1, 4 => 1, 6 => 1 }}{$_[0]{pt_type}} }
-sub isFat_or_NTFS { member($_[0]{fs_type}, 'vfat', 'ntfs') }
-sub isApple { $_[0]{pt_type} == 0x401 && defined $_[0]{isDriver} }
-sub isAppleBootstrap { $_[0]{pt_type} == 0x401 && defined $_[0]{isBoot} }
-sub isHiddenMacPart { defined $_[0]{isMap} }
-
-sub isTrueFS { isTrueLocalFS($_[0]) || member($_[0]{fs_type}, qw(nfs)) }
-sub isTrueLocalFS { member($_[0]{fs_type}, true_local_fs_types()) }
-
-sub isOtherAvailableFS { isEfi($_[0]) || isFat_or_NTFS($_[0]) || member($_[0]{fs_type}, 'ufs', 'hfs', 'iso9660') } #- other OS that linux can access its filesystem
-sub isMountableRW { (isTrueFS($_[0]) || isOtherAvailableFS($_[0])) && $_[0]{fs_type} ne 'ntfs' }
-sub isNonMountable {
- my ($part) = @_;
- isRawRAID($part) || isRawLVM($part) || $part->{fs_type} eq 'ntfs' && !$part->{isFormatted} && $part->{notFormatted};
-}
-
-sub isPartOfLVM { defined $_[0]{lvm} }
-sub isPartOfRAID { defined $_[0]{raid} }
-sub isPartOfLoopback { defined $_[0]{loopback} }
-sub isRAID { $_[0]{device} =~ /^md/ }
-sub isUBD { $_[0]{device} =~ /^ubd/ } #- should be always true during an $::uml_install
-sub isLVM { $_[0]{VG_name} || $_[0]{lv_name} }
-sub isLoopback { defined $_[0]{loopback_file} }
-sub isMounted { $_[0]{isMounted} }
-sub isBusy { isMounted($_[0]) || isPartOfRAID($_[0]) || isPartOfLVM($_[0]) || isPartOfLoopback($_[0]) }
-sub isSpecial { isRAID($_[0]) || isLVM($_[0]) || isLoopback($_[0]) || isUBD($_[0]) }
-
-sub can_be_this_fs_type {
- my ($part, $fs_type) = @_;
- can_be_one_of_those_fs_types($part, $fs_type);
-}
-sub can_be_one_of_those_fs_types {
- my ($part, @fs_types) = @_;
- $part->{fs_type} or return;
- $part->{fs_type} eq 'auto' || listlength(intersection(\@fs_types, [ split(':', $part->{fs_type}) ]));
-}
-
-sub maybeFormatted {
- my ($part) = @_;
- $part->{isFormatted} || !$part->{notFormatted} && !$part->{bad_fs_type_magic};
-}
-sub set_isFormatted {
- my ($part, $val) = @_;
- $part->{isFormatted} = $val;
- $part->{notFormatted} = !$val;
- delete $part->{bad_fs_type_magic};
- delete $part->{fs_type_from_magic};
-}
-
-#- do this before modifying $part->{fs_type}
-sub check {
- my ($fs_type, $_hd, $part) = @_;
- $fs_type eq "jfs" && $part->{size} < 16 << 11 and die N("You can not use JFS for partitions smaller than 16MB");
- $fs_type eq "reiserfs" && $part->{size} < 32 << 11 and die N("You can not use ReiserFS for partitions smaller than 32MB");
-}
-
-sub directories_needed_to_boot() {
- qw(/ /usr /var /boot /tmp);
-}
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
deleted file mode 100644
index 6f28ff6fe..000000000
--- a/perl-install/fsedit.pm
+++ /dev/null
@@ -1,638 +0,0 @@
-package fsedit; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(%suggestions);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use partition_table;
-use partition_table::raw;
-use fs::type;
-use detect_devices;
-use devices;
-use loopback;
-use log;
-use fs;
-
-%suggestions = (
- N_("simple") => [
- { mntpoint => "/", size => 300 << 11, fs_type => 'ext3', ratio => 5, maxsize => 6000 << 11 },
- { mntpoint => "swap", size => 64 << 11, fs_type => 'swap', ratio => 1, maxsize => 1100 << 11 },
- { mntpoint => "/home", size => 300 << 11, fs_type => 'ext3', ratio => 3 },
- ], N_("with /usr") => [
- { mntpoint => "/", size => 250 << 11, fs_type => 'ext3', ratio => 1, maxsize => 2000 << 11 },
- { mntpoint => "swap", size => 64 << 11, fs_type => 'swap', ratio => 1, maxsize => 1100 << 11 },
- { mntpoint => "/usr", size => 300 << 11, fs_type => 'ext3', ratio => 4, maxsize => 4000 << 11 },
- { mntpoint => "/home", size => 100 << 11, fs_type => 'ext3', ratio => 3 },
- ], N_("server") => [
- { mntpoint => "/", size => 150 << 11, fs_type => 'ext3', ratio => 1, maxsize => 800 << 11 },
- { mntpoint => "swap", size => 64 << 11, fs_type => 'swap', ratio => 2, maxsize => 1600 << 11 },
- { mntpoint => "/usr", size => 300 << 11, fs_type => 'ext3', ratio => 4, maxsize => 4000 << 11 },
- { mntpoint => "/var", size => 200 << 11, fs_type => 'ext3', ratio => 3 },
- { mntpoint => "/home", size => 150 << 11, fs_type => 'ext3', ratio => 3 },
- { mntpoint => "/tmp", size => 150 << 11, fs_type => 'ext3', ratio => 2, maxsize => 1000 << 11 },
- ],
-);
-foreach (values %suggestions) {
- if (arch() =~ /ia64/) {
- @$_ = ({ mntpoint => "/boot/efi", size => 50 << 11, pt_type => 0xef, ratio => 1, maxsize => 150 << 11 }, @$_);
- }
-}
-
-my @suggestions_mntpoints = (
- "/var/ftp", "/var/www", "/boot", '/usr/local', '/opt',
- arch() =~ /sparc/ ? "/mnt/sunos" : arch() =~ /ppc/ ? "/mnt/macos" : "/mnt/windows",
-);
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub recompute_loopbacks {
- my ($all_hds) = @_;
- my @fstab = fs::get::fstab($all_hds);
- @{$all_hds->{loopbacks}} = map { isPartOfLoopback($_) ? @{$_->{loopback}} : () } @fstab;
-}
-
-sub raids {
- my ($hds) = @_;
-
- my @parts = fs::get::hds_fstab(@$hds);
-
- my @l = grep { isRawRAID($_) } @parts or return [];
-
- log::l("looking for raids in " . join(' ', map { $_->{device} } @l));
-
- require raid;
- raid::detect_during_install(@l) if $::isInstall;
- raid::get_existing(@l);
-}
-
-sub lvms {
- my ($all_hds) = @_;
- my @pvs = grep { isRawLVM($_) } fs::get::fstab($all_hds) or return;
-
- log::l("looking for vgs in " . join(' ', map { $_->{device} } @pvs));
-
- #- otherwise vgscan will not find them
- devices::make($_->{device}) foreach @pvs;
- require lvm;
-
- my @lvms;
- foreach (@pvs) {
- my $name = lvm::get_vg($_) or next;
- my $lvm = find { $_->{VG_name} eq $name } @lvms;
- if (!$lvm) {
- $lvm = new lvm($name);
- lvm::update_size($lvm);
- lvm::get_lvs($lvm);
- push @lvms, $lvm;
- }
- $_->{lvm} = $name;
- push @{$lvm->{disks}}, $_;
- }
- @lvms;
-}
-
-sub get_hds {
- my ($o_flags, $o_in) = @_;
- my $flags = $o_flags || {};
- $flags->{readonly} && ($flags->{clearall} || $flags->{clear}) and die "conflicting flags readonly and clear/clearall";
-
- my @drives = detect_devices::hds();
-
- foreach my $hd (@drives) {
- $hd->{file} = devices::make($hd->{device});
- $hd->{prefix} ||= $hd->{device};
- }
-
- @drives = partition_table::raw::get_geometries(@drives);
-
- my (@hds, @raw_hds);
- foreach my $hd (@drives) {
- $hd->{readonly} = $flags->{readonly};
-
- eval { partition_table::raw::test_for_bad_drives($hd) if !$flags->{no_bad_drives} };
- if (my $err = $@) {
- if ($err =~ /write error:/) {
- $hd->{readonly} = 1;
- } elsif ($err =~ /read error:/) {
- next;
- } else {
- $o_in and $o_in->ask_warn('', $err);
- next;
- }
- }
-
- if ($flags->{clearall} || member($hd->{device}, @{$flags->{clear} || []})) {
- partition_table::raw::zero_MBR_and_dirty($hd);
- } else {
- my $handle_die_and_cdie = sub {
- if ($hd->{readonly}) {
- log::l("using /proc/partitions since diskdrake failed :(");
- use_proc_partitions($hd);
- 1;
- } elsif (my $type = fs::type::type_subpart_from_magic($hd)) {
- #- non partitioned drive?
- if (exists $hd->{usb_description} && $type->{fs_type}) {
- #- USB keys
- put_in_hash($hd, $type);
- push @raw_hds, $hd;
- $hd = '';
- 1;
- } elsif ($type->{pt_type} == 0x8e) {
- #- LVM on full disk
- my $part = { size => $hd->{totalsectors}, device => $hd->{device}, %$type };
- bless $hd, 'partition_table::raw';
- $hd->{readonly} = $hd->{getting_rid_of_readonly_allowed} = 1;
- $hd->{primary}{normal} = [ $part ];
- 1;
- } else {
- 0;
- }
- } else {
- 0;
- }
- };
- my $handled;
- eval {
- catch_cdie {
- partition_table::read($hd);
- if (listlength(partition_table::get_normal_parts($hd)) == 0) {
- $handled = 1 if $handle_die_and_cdie->();
- } else {
- compare_with_proc_partitions($hd) if $::isInstall;
- }
- } sub {
- my $err = $@;
- if ($handle_die_and_cdie->()) {
- $handled = 1;
- 0; #- do not continue, transform cdie into die
- } else {
- !$o_in || $o_in->ask_okcancel('', formatError($err));
- }
- };
- };
- if (my $err = $@) {
- if ($handled) {
- #- already handled in cdie handler above
- } elsif ($handle_die_and_cdie->()) {
- } elsif ($o_in && $o_in->ask_yesorno(N("Error"),
-N("I can not read the partition table of device %s, it's too corrupted for me :(
-I can try to go on, erasing over bad partitions (ALL DATA will be lost!).
-The other solution is to not allow DrakX to modify the partition table.
-(the error is %s)
-
-Do you agree to lose all the partitions?
-", $hd->{device}, formatError($err)))) {
- partition_table::raw::zero_MBR($hd);
- } else {
- #- using it readonly
- log::l("using /proc/partitions since diskdrake failed :(");
- use_proc_partitions($hd);
- }
- }
- $hd or next;
-
- member($_->{device}, @{$flags->{clear} || []}) and partition_table::remove($hd, $_)
- foreach partition_table::get_normal_parts($hd);
- }
-
- my @parts = partition_table::get_normal_parts($hd);
-
- # checking the magic of the filesystem, do not rely on pt_type
- foreach (grep { member($_->{fs_type}, 'vfat', 'ntfs', 'ext2') || $_->{pt_type} == 0x100 } @parts) {
- if (my $type = fs::type::type_subpart_from_magic($_)) {
- if ($type->{fs_type}) {
- #- keep {pt_type}
- $_->{fs_type} = $type->{fs_type};
- } else {
- put_in_hash($_, $type);
- }
- } else {
- $_->{bad_fs_type_magic} = 1;
- }
- }
-
- foreach (@parts) {
- my $label =
- member($_->{fs_type}, qw(ext2 ext3)) ?
- c::get_ext2_label(devices::make($_->{device})) :
- '';
- $_->{device_LABEL} = $label if $label;
- }
-
- if ($hd->{usb_media_type}) {
- $_->{is_removable} = 1 foreach @parts;
- }
-
- push @hds, $hd;
- }
-
- #- detect raids before LVM allowing LVM on raid
- my $raids = raids(\@hds);
- my $all_hds = { %{ fs::get::empty_all_hds() }, hds => \@hds, raw_hds => \@raw_hds, lvms => [], raids => $raids };
-
- $all_hds->{lvms} = [ lvms($all_hds) ];
-
- fs::get_major_minor(fs::get::fstab($all_hds));
-
- $all_hds;
-}
-
-sub read_proc_partitions {
- my ($hds) = @_;
-
- my @all = devices::read_proc_partitions_raw();
- my ($parts, $disks) = partition { $_->{dev} =~ /\d$/ && $_->{dev} !~ /^(sr|scd)/ } @all;
-
- my $devfs_like = any { $_->{dev} =~ m|/disc$| } @$disks;
-
- my %devfs2normal = map {
- my (undef, $major, $minor) = devices::entry($_->{device});
- my $disk = find { $_->{major} == $major && $_->{minor} == $minor } @$disks;
- $disk->{dev} => $_->{device};
- } @$hds;
-
- my $prev_part;
- foreach my $part (@$parts) {
- my $dev;
- if ($devfs_like) {
- $dev = -e "/dev/$part->{dev}" ? $part->{dev} : sprintf("0x%x%02x", $part->{major}, $part->{minor});
- $part->{rootDevice} = $devfs2normal{dirname($part->{dev}) . '/disc'};
- } else {
- $dev = $part->{dev};
- if (my $hd = find { $part->{dev} =~ /^\Q$_->{device}\E./ } @$hds) {
- put_in_hash($part, partition_table::hd2minimal_part($hd));
- }
- }
- undef $prev_part if $prev_part && ($prev_part->{rootDevice} || '') ne ($part->{rootDevice} || '');
-
- $part->{device} = $dev;
- $part->{size} *= 2; # from KB to sectors
- $part->{start} = $prev_part ? $prev_part->{start} + $prev_part->{size} : 0;
- put_in_hash($part, fs::type::type_subpart_from_magic($part));
- $prev_part = $part;
- delete $part->{dev}; # cleanup
- }
- @$parts;
-}
-
-sub is_same_hd {
- my ($hd1, $hd2) = @_;
- if ($hd1->{major} && $hd2->{major}) {
- $hd1->{major} == $hd2->{major} && $hd1->{minor} == $hd2->{minor};
- } elsif (my ($s1) = $hd1->{device} =~ m|https?://(.+?)/*$|) {
- my ($s2) = $hd2->{device} =~ m|https?://(.+?)/*$|;
- $s1 eq $s2;
- } else {
- $hd1->{devfs_device} && $hd2->{devfs_device} && $hd1->{devfs_device} eq $hd2->{devfs_device}
- || $hd1->{device_LABEL} && $hd2->{device_LABEL} && $hd1->{device_LABEL} eq $hd2->{device_LABEL}
- || $hd1->{device} && $hd2->{device} && $hd1->{device} eq $hd2->{device};
- }
-}
-
-#- are_same_partitions() do not look at the device name since things may have changed
-sub are_same_partitions {
- my ($part1, $part2) = @_;
- foreach ('start', 'size', 'pt_type', 'fs_type', 'rootDevice') {
- $part1->{$_} eq $part2->{$_} or return 0;
- }
- 1;
-}
-
-sub is_one_big_fat_or_NT {
- my ($hds) = @_;
- @$hds == 1 or return 0;
-
- my @l = fs::get::hds_fstab(@$hds);
- @l == 1 && isFat_or_NTFS($l[0]) && fs::get::hds_free_space(@$hds) < 10 << 11;
-}
-
-
-sub computeSize {
- my ($part, $best, $all_hds, $suggestions) = @_;
- my $max = $part->{maxsize} || $part->{size};
- return min($max, $best->{size}) unless $best->{ratio};
-
- my $free_space = fs::get::free_space($all_hds);
- my @l = my @L = grep {
- if ($free_space >= $_->{size}) {
- $free_space -= $_->{size};
- 1;
- } else { 0 } } @$suggestions;
-
- my $cylinder_size_maxsize_adjusted;
- my $tot_ratios = 0;
- while (1) {
- my $old_free_space = $free_space;
- my $old_tot_ratios = $tot_ratios;
-
- $tot_ratios = sum(map { $_->{ratio} } @l);
- last if $tot_ratios == $old_tot_ratios;
-
- @l = grep {
- if ($_->{ratio} && $_->{maxsize} && $tot_ratios &&
- $_->{size} + $_->{ratio} / $tot_ratios * $old_free_space >= $_->{maxsize}) {
- return min($max, $best->{maxsize}) if $best->{mntpoint} eq $_->{mntpoint};
- $free_space -= $_->{maxsize} - $_->{size};
- if (!$cylinder_size_maxsize_adjusted++) {
- eval { $free_space += fs::get::part2hd($part, $all_hds)->cylinder_size - 1 };
- }
- 0;
- } else {
- $_->{ratio};
- }
- } @l;
- }
- my $size = int min($max, $best->{size} + $free_space * ($tot_ratios && $best->{ratio} / $tot_ratios));
- #- verify other entry can fill the hole
- (any { $_->{size} < $max - $size } @L) ? $size : $max;
-}
-
-sub suggest_part {
- my ($part, $all_hds, $o_suggestions) = @_;
- my $suggestions = $o_suggestions || $suggestions{server} || $suggestions{simple};
-
- #- suggestions now use {fs_type}, but still keep compatibility
- foreach (@$suggestions) {
- fs::type::set_pt_type($_, $_->{pt_type}) if !exists $_->{fs_type};
- }
-
- my $has_swap = any { isSwap($_) } fs::get::fstab($all_hds);
-
- my @local_suggestions =
- grep { !fs::get::has_mntpoint($_->{mntpoint}, $all_hds) || isSwap($_) && !$has_swap }
- grep { !$_->{hd} || $_->{hd} eq $part->{rootDevice} }
- @$suggestions;
-
- my ($best) =
- grep { !$_->{maxsize} || $part->{size} <= $_->{maxsize} }
- grep { $_->{size} <= ($part->{maxsize} || $part->{size}) }
- grep { !$part->{fs_type} || $part->{fs_type} eq $_->{fs_type} || isTrueFS($part) && isTrueFS($_) }
- @local_suggestions;
-
- defined $best or return 0; #- sorry no suggestion :(
-
- $part->{mntpoint} = $best->{mntpoint};
- fs::type::set_type_subpart($part, $best) if !isTrueFS($best) || !isTrueFS($part);
- $part->{size} = computeSize($part, $best, $all_hds, \@local_suggestions);
- foreach ('options', 'lv_name', 'encrypt_key') {
- $part->{$_} = $best->{$_} if $best->{$_};
- }
- 1;
-}
-
-sub suggestions_mntpoint {
- my ($all_hds) = @_;
- sort grep { !/swap/ && !fs::get::has_mntpoint($_, $all_hds) }
- (@suggestions_mntpoints, map { $_->{mntpoint} } @{$suggestions{server} || $suggestions{simple}});
-}
-
-#- you can do this before modifying $part->{mntpoint}
-#- so $part->{mntpoint} should not be used here, use $mntpoint instead
-sub check_mntpoint {
- my ($mntpoint, $part, $all_hds) = @_;
-
- $mntpoint eq '' || isSwap($part) || isNonMountable($part) and return 0;
- $mntpoint =~ m|^/| or die N("Mount points must begin with a leading /");
- $mntpoint =~ m|[\x7f-\xff]| and cdie N("Mount points should contain only alphanumerical characters");
- fs::get::mntpoint2part($mntpoint, [ grep { $_ ne $part } fs::get::really_all_fstab($all_hds) ]) and die N("There is already a partition with mount point %s\n", $mntpoint);
-
- cdie N("You've selected a software RAID partition as root (/).
-No bootloader is able to handle this without a /boot partition.
-Please be sure to add a /boot partition") if $mntpoint eq "/" && isRAID($part) && !fs::get::has_mntpoint("/boot", $all_hds);
- die N("You can not use a LVM Logical Volume for mount point %s", $mntpoint)
- if $mntpoint eq '/boot' && isLVM($part);
- cdie N("You've selected a LVM Logical Volume as root (/).
-The bootloader is not able to handle this without a /boot partition.
-Please be sure to add a /boot partition") if $mntpoint eq "/" && isLVM($part) && !fs::get::has_mntpoint("/boot", $all_hds);
- cdie N("You may not be able to install lilo (since lilo does not handle a LV on multiple PVs)")
- if 0; # arch() =~ /i.86/ && $mntpoint eq '/' && isLVM($hd) && @{$hd->{disks} || []} > 1;
-
- cdie N("This directory should remain within the root filesystem")
- if member($mntpoint, qw(/root));
- die N("This directory should remain within the root filesystem")
- if member($mntpoint, qw(/bin /dev /etc /lib /sbin /mnt));
- die N("You need a true filesystem (ext2/ext3, reiserfs, xfs, or jfs) for this mount point\n")
- if !isTrueLocalFS($part) && $mntpoint eq '/';
- die N("You need a true filesystem (ext2/ext3, reiserfs, xfs, or jfs) for this mount point\n")
- if !isTrueFS($part) && member($mntpoint, fs::type::directories_needed_to_boot());
- die N("You can not use an encrypted file system for mount point %s", $mntpoint)
- if $part->{options} =~ /encrypted/ && member($mntpoint, qw(/ /usr /var /boot));
-
- local $part->{mntpoint} = $mntpoint;
- loopback::check_circular_mounts($part, $all_hds);
-}
-
-sub add {
- my ($hd, $part, $all_hds, $options) = @_;
-
- isSwap($part) ?
- ($part->{mntpoint} = 'swap') :
- $options->{force} || check_mntpoint($part->{mntpoint}, $part, $all_hds);
-
- delete $part->{maxsize};
-
- if (isLVM($hd)) {
- lvm::lv_create($hd, $part);
- } else {
- partition_table::add($hd, $part, $options->{primaryOrExtended});
- }
-}
-
-sub allocatePartitions {
- my ($all_hds, $to_add) = @_;
-
- foreach my $part_ (fs::get::holes($all_hds)) {
- my ($start, $size, $dev) = @$part_{"start", "size", "rootDevice"};
- my $part;
- while (suggest_part($part = { start => $start, size => 0, maxsize => $size, rootDevice => $dev },
- $all_hds, $to_add)) {
- my $hd = fs::get::part2hd($part, $all_hds);
- add($hd, $part, $all_hds, {});
- $size -= $part->{size} + $part->{start} - $start;
- $start = $part->{start} + $part->{size};
- }
- }
-}
-
-sub auto_allocate {
- my ($all_hds, $o_suggestions) = @_;
- my $before = listlength(fs::get::fstab($all_hds));
-
- my $suggestions = $o_suggestions || $suggestions{simple};
- allocatePartitions($all_hds, $suggestions);
-
- if ($o_suggestions) {
- auto_allocate_raids($all_hds, $suggestions);
- if (auto_allocate_vgs($all_hds, $suggestions)) {
- #- allocatePartitions needs to be called twice, once for allocating PVs, once for allocating LVs
- my @vgs = map { $_->{VG_name} } @{$all_hds->{lvms}};
- my @suggested_lvs = grep { member($_->{hd}, @vgs) } @$suggestions;
- allocatePartitions($all_hds, \@suggested_lvs);
- }
- }
-
- partition_table::assign_device_numbers($_) foreach @{$all_hds->{hds}};
-
- if ($before == listlength(fs::get::fstab($all_hds))) {
- # find out why auto_allocate failed
- if (any { !fs::get::has_mntpoint($_->{mntpoint}, $all_hds) } @$suggestions) {
- die N("Not enough free space for auto-allocating");
- } else {
- die N("Nothing to do");
- }
- }
-}
-
-sub auto_allocate_raids {
- my ($all_hds, $suggestions) = @_;
-
- my @raids = grep { isRawRAID($_) } fs::get::fstab($all_hds) or return;
-
- require raid;
- my @mds = grep { $_->{hd} =~ /md/ } @$suggestions;
- foreach my $md (@mds) {
- my @raids_ = grep { !$md->{parts} || $md->{parts} =~ /\Q$_->{mntpoint}/ } @raids;
- @raids = difference2(\@raids, \@raids_);
-
- my %h = %$md;
- delete @h{'hd', 'parts'}; # keeping mntpoint, level, chunk-size, fs_type/pt_type
- $h{disks} = \@raids_;
-
- my $part = raid::new($all_hds->{raids}, %h);
-
- raid::updateSize($part);
- push @raids, $part; #- we can build raid over raid
- }
-}
-
-sub auto_allocate_vgs {
- my ($all_hds, $suggestions) = @_;
-
- my @pvs = grep { isRawLVM($_) } fs::get::fstab($all_hds) or return 0;
-
- my @vgs = grep { $_->{VG_name} } @$suggestions or return 0;
-
- partition_table::write($_) foreach @{$all_hds->{hds}};
-
- require lvm;
-
- foreach my $vg (@vgs) {
- my $lvm = new lvm($vg->{VG_name});
- push @{$all_hds->{lvms}}, $lvm;
-
- my @pvs_ = grep { !$vg->{parts} || $vg->{parts} =~ /\Q$_->{mntpoint}/ } @pvs;
- @pvs = difference2(\@pvs, \@pvs_);
-
- foreach my $part (@pvs_) {
- raid::make($all_hds->{raids}, $part) if isRAID($part);
- $part->{lvm} = $lvm->{VG_name};
- delete $part->{mntpoint};
- lvm::vg_add($part);
- push @{$lvm->{disks}}, $part;
- }
- lvm::update_size($lvm);
- }
- 1;
-}
-
-sub undo_prepare {
- my ($all_hds) = @_;
- require Data::Dumper;
- $Data::Dumper::Purity = 1;
- foreach (@{$all_hds->{hds}}) {
- my @h = @$_{@partition_table::fields2save};
- push @{$_->{undo}}, Data::Dumper->Dump([\@h], ['$h']);
- }
-}
-sub undo {
- my ($all_hds) = @_;
- foreach (@{$all_hds->{hds}}) {
- my $code = pop @{$_->{undo}} or next;
- my $h; eval $code;
- @$_{@partition_table::fields2save} = @$h;
-
- if ($_->{hasBeenDirty}) {
- partition_table::will_tell_kernel($_, 'force_reboot'); #- next action needing write_partitions will force it. We can not do it now since more undo may occur, and we must not needReboot now
- }
- }
-
-}
-
-sub change_type {
- my ($type, $hd, $part) = @_;
- $type->{pt_type} != $part->{pt_type} || $type->{fs_type} ne $part->{fs_type} or return;
- fs::type::check($type->{fs_type}, $hd, $part);
- $hd->{isDirty} = 1;
- $part->{mntpoint} = '' if isSwap($part) && $part->{mntpoint} eq "swap";
- $part->{mntpoint} = '' if isRawLVM($type) || isRawRAID($type);
- set_isFormatted($part, 0);
- fs::type::set_type_subpart($part, $type);
- fs::mount_options::rationalize($part);
- 1;
-}
-
-sub rescuept($) {
- my ($hd) = @_;
- my ($ext, @hd);
-
- my $dev = devices::make($hd->{device});
- open(my $F, "rescuept $dev|");
- local $_;
- while (<$F>) {
- my ($st, $si, $id) = /start=\s*(\d+),\s*size=\s*(\d+),\s*Id=\s*(\d+)/ or next;
- my $part = { start => $st, size => $si };
- fs::type::set_pt_type($part, hex($id));
- if (isExtended($part)) {
- $ext = $part;
- } else {
- push @hd, $part;
- }
- }
- close $F or die "rescuept failed";
-
- partition_table::raw::zero_MBR($hd);
- foreach (@hd) {
- my $b = partition_table::verifyInside($_, $ext);
- if ($b) {
- $_->{start}--;
- $_->{size}++;
- }
- local $_->{notFormatted};
-
- partition_table::add($hd, $_, ($b ? 'Extended' : 'Primary'), 1);
- }
-}
-
-sub compare_with_proc_partitions {
- my ($hd) = @_;
-
- my @l1 = partition_table::get_normal_parts($hd);
- my @l2 = grep { $_->{rootDevice} eq $hd->{device} } read_proc_partitions([$hd]);
-
- #- /proc/partitions includes partition with type "empty" and a non-null size
- #- so add them for comparison
- my ($len1, $len2) = (int(@l1) + $hd->{primary}{nb_special_empty}, int(@l2));
-
- if ($len1 != $len2 && arch() ne 'ppc') {
- die sprintf(
- "/proc/partitions does not agree with drakx %d != %d:\n%s\n", $len1, $len2,
- "/proc/partitions: " . join(", ", map { "$_->{device} ($_->{rootDevice})" } @l2));
- }
- $len2;
-}
-
-sub use_proc_partitions {
- my ($hd) = @_;
-
- partition_table::raw::zero_MBR($hd);
- $hd->{readonly} = 1;
- $hd->{getting_rid_of_readonly_allowed} = 1;
- $hd->{primary} = { normal => [ grep { $_->{rootDevice} eq $hd->{device} } read_proc_partitions([$hd]) ] };
-}
-
-1;
diff --git a/perl-install/ftp.pm b/perl-install/ftp.pm
deleted file mode 100644
index f94af31ea..000000000
--- a/perl-install/ftp.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-package ftp; # $Id$
-
-use Net::FTP;
-
-use network::network;
-use log;
-
-my %hosts;
-
-1;
-
-sub fromEnv() {
- #- now URLPREFIX is generated from what is given by mdk-stage1 which is only this 4 variables.
- $ENV{URLPREFIX} = "ftp://" . ($ENV{LOGIN} && ($ENV{LOGIN} . ($ENV{PASSWORD} && ":$ENV{PASSWORD}") . '@')) .
- "$ENV{HOST}/$ENV{PREFIX}";
- @ENV{qw(HOST PREFIX LOGIN PASSWORD)};
-}
-
-sub new {
- my ($host, $prefix, $o_login, $o_password) = @_;
- my @l = do { if ($hosts{"$host$prefix"}) {
- @{$hosts{"$host$prefix"}};
- } else {
- my %options = (Passive => 1, Timeout => 60, Port => 21);
- $options{Firewall} = $ENV{PROXY} if $ENV{PROXY};
- $options{Port} = $ENV{PROXYPORT} if $ENV{PROXYPORT};
- unless ($o_login) {
- $o_login = 'anonymous';
- $o_password = '-drakx@';
- }
-
- my $ftp;
- foreach (1..10) {
- $ftp = Net::FTP->new(resolv($host), %options) or die "Can't resolv hostname '$host'\n";
- $ftp && $ftp->login($o_login, $o_password) and last;
-
- log::l("ftp login failed, sleeping before trying again");
- sleep 5 * $_;
- }
- $ftp or die "unable to open ftp connection to $host\n";
- $ftp->binary;
- $ftp->cwd($prefix);
-
- my @l = ($ftp, \ (my $_retr));
- $hosts{"$host$prefix"} = \@l;
- @l;
- } };
- wantarray() ? @l : $l[0];
-}
-
-sub getFile {
- my ($f, @para) = @_;
- $f eq 'XXX' and rewindGetFile(), return; #- special case to force closing connection.
- foreach (1..3) {
- my ($ftp, $retr) = new(@para ? @para : fromEnv());
- eval { $$retr->close if $$retr };
- $@ and rewindGetFile(); #- in case Timeout got us on "->close"
- $$retr = $ftp->retr($f) and return $$retr;
- $ftp->code == 550 and log::l("FTP: 550 file unavailable"), return;
- rewindGetFile();
- log::l("ftp get failed, sleeping before trying again");
- sleep 1;
- }
-}
-
-#-sub closeFiles() {
-#- #- close any existing connections
-#- foreach (values %hosts) {
-#- my $retr = $_->[1] if ref $_;
-#- $$retr->close if $$retr;
-#- undef $$retr;
-#- }
-#-}
-
-sub rewindGetFile() {
- #- close any existing connection.
- foreach (values %hosts) {
- my ($ftp, $retr) = @{$_ || []};
- #- do not let Timeout kill us!
- eval { $$retr->close } if $$retr;
- eval { $ftp->close } if $ftp;
- }
-
- #- make sure to reconnect to server.
- %hosts = ();
-}
diff --git a/perl-install/handle_configs.pm b/perl-install/handle_configs.pm
deleted file mode 100644
index 7d6e5c6e9..000000000
--- a/perl-install/handle_configs.pm
+++ /dev/null
@@ -1,160 +0,0 @@
-package handle_configs;
-
-# $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-sub searchstr {
- # Preceed all characters which are special characters in regexps with
- # a backslash, so that the returned string used in a regexp searches
- # a literal occurence of the original string. White space is replaced
- # by "\s+"
- # "quotemeta()" does not serve for this, as it also quotes some regular
- # characters, as the space
- my ($s) = @_;
- $s =~ s!([\\/\(\)\[\]\{\}\|\.\$\@\%\*\?#\+\-])!\\$1!g;
- return $s;
-}
-
-sub read_directives {
- # Read one or more occurences of a directive
- my ($lines_ptr, $directive) = @_;
-
- my $searchdirective = searchstr($directive);
- # do not use if_() below because it slow down printerdrake
- # to the point one can believe in process freeze:
- map { (/^\s*$searchdirective\s+(\S.*)$/ ? chomp_($1) : ()) } @$lines_ptr;
-}
-
-sub read_unique_directive {
-
- # Read a directive, if the directive appears more than once, use
- # the last occurence and remove all the others, if it does not
- # occur, return the default value
-
- my ($lines_ptr, $directive, $default) = @_;
-
- if ((my @d = read_directives($lines_ptr, $directive)) > 0) {
- my $value = $d[-1];
- set_directive($lines_ptr, "$directive $value");
- return $value;
- } else {
- return $default;
- }
-}
-
-sub insert_directive {
-
- # Insert a directive only if it is not already there
-
- my ($lines_ptr, $directive) = @_;
-
- my $searchdirective = searchstr($directive);
- (/^\s*$searchdirective$/ and return 0) foreach @$lines_ptr;
- push @$lines_ptr, "$directive\n";
- return 1;
-}
-
-sub remove_directive {
-
- # Remove a directive
-
- my ($lines_ptr, $directive) = @_;
-
- my $success = 0;
- my $searchdirective = searchstr($directive);
- (/^\s*$searchdirective/ and $_ = "" and $success = 1)
- foreach @$lines_ptr;
- return $success;
-}
-
-sub comment_directive {
-
- # Comment out a directive
-
- my ($lines_ptr, $directive, $exactmatch) = @_;
-
- my $success = 0;
- my $searchdirective = searchstr($directive);
- $searchdirective .= ".*" if !$exactmatch;
- (s/^\s*($searchdirective)$/#$1/ and $success = 1)
- foreach @$lines_ptr;
- return $success;
-}
-
-sub replace_directive {
-
- # Replace a directive, if it appears more than once, remove
- # the additional occurences.
-
- my ($lines_ptr, $olddirective, $newdirective) = @_;
-
- my $success = 0;
- $newdirective = "$newdirective\n";
- my $searcholddirective = searchstr($olddirective);
- (/^\s*$searcholddirective/ and $_ = $newdirective and
- $success = 1 and $newdirective = "") foreach @$lines_ptr;
- return $success;
-}
-
-
-sub move_directive_to_version_commented_out {
-
- # If there is a version of the directive "commentedout" which is
- # commented out, the directive "directive" will be moved in its place.
-
- my ($lines_ptr, $commentedout, $directive, $exactmatch) = @_;
-
- my $success = 0;
- my $searchcommentedout = searchstr($commentedout);
- $searchcommentedout .= ".*" if !$exactmatch;
- (/^\s*#$searchcommentedout$/ and
- $success = 1 and last) foreach @$lines_ptr;
- if ($success) {
- remove_directive($lines_ptr, $directive);
- (s/^\s*#($searchcommentedout)$/$directive/ and
- $success = 1 and last) foreach @$lines_ptr;
- }
- return $success;
-}
-
-sub set_directive {
-
- # Set a directive, replace the old definition or a commented definition
-
- my ($lines_ptr, $directive, $full_line) = @_;
-
- my $olddirective = $directive;
- if (!$full_line) {
- $olddirective =~ s/^\s*(\S+)\s+.*$/$1/s;
- $olddirective ||= $directive;
- }
-
- my $success = (replace_directive($lines_ptr, $olddirective,
- $directive) ||
- insert_directive($lines_ptr, $directive));
- if ($success) {
- move_directive_to_version_commented_out($lines_ptr, $directive,
- $directive, 1);
- }
- return $success;
-}
-
-sub add_directive {
-
- # Add a directive, replace a commented definition
-
- my ($lines_ptr, $directive) = @_;
-
- my $success = insert_directive($lines_ptr, $directive);
- if ($success) {
- move_directive_to_version_commented_out($lines_ptr, $directive,
- $directive, 1);
- }
- return $success;
-}
-
-1;
diff --git a/perl-install/harddrake/TODO b/perl-install/harddrake/TODO
deleted file mode 100644
index b09b8ee5e..000000000
--- a/perl-install/harddrake/TODO
+++ /dev/null
@@ -1,169 +0,0 @@
--*- outline -*-
-
-* drakxtools
-** drakxtools* need XF-{75,100}fonts that requires XFree86
-
-* Harddrake TODO:
-** ui
-*** more usb mice infos
-*** enable the user to force a module (isa, isapnp, ...)
-*** print "(not loaded)" if module isn't loaded
-*** add bus_position to make unique id in ui (check it does not confuse hw service)
-*** cdrom (must be done by diskdrake):
-**** ide-scsi / ide-cd switch (humm, the future (aka 2.6.x kernel) is ide-cd only)
-*** use fbgtk+2 when booting on fbcon for smoother GUI => interactive::fbgtk
-*** help:
-**** print fields in black and their description in blue as for information fields
-*** check there's at least one config option before showing the "condigure module" button
-*** s/module/driver/ ?
-** fixes
-*** configure at boot-time (hw hooks shared by both harddrake & drakx ?):
- all /etc/modules aliases
-**** usb-interfaces (or rewrite usb service in perl for speed)
-**** switch nvidia/nv in /etc/X11/XF86Config
- if [[ -e /lib/modules/`uname -r`/kernel/drivers/video/NVdriver ]]; then
- perl -pi -e 's!Driver "nv.*"!Driver "nvidia"!g;s!#HARDDRAKE (Load.*glx)!\1!g' /etc/X11/XF86Config-4
- else
- perl -pi -e 's!Driver "nv.*"!Driver "nv"!g;s!(Load.*glx)!#HARDDRAKE \1!g' /etc/X11/XF86Config-4
- fi
-*** non needed stuff to run X must be posponed after X11 startup
-**** eg: scanner/audio/printer/floppy/cdrom/tape/tv/webcam/joystick/ ...
-** packaging : separate version for harddrake & drakxtool
-** configurators
-*** new cd burner: offer to install cdrecord and one of its gui frontends
-*** new dvd driver : offer to install xine||mplayer
-*** draksound :
-**** add a dialog so that the user choose its wavetable.
-**** list all availables drivers, defaulting to first alternative, prepending old one with '*'
-**** add 'ALSA/OSS': tag to modules list
-** detect engine:
-*** detect isapnp devices
-*** set more field for fscking 0x0000:0x0000 usb controllers
-
-** move all drakx tools into just a small one-liner that uses real <tool>.pm
- so that harddrake and mcc reduces their memory usage pattern and
- be faster (the next fast step will be to use perl6/parrot)
-
- drawback : this would level down quite a lot the global mcc/harddrake robustness
-
-** check there're enough parameters in module config
-** for to send a message for unknown hardware to install@mandrakesoft.com
-
- Subject: [UNKNOW HARDWARE] or a new other ml
- -> do you konw how to configure it under linux ?
- -> description
-
-
-* ####################################################################
-* ####################################################################
-
-* / no hope / useless :
-** enable a string to be passed as detector; in that case, do ourself the =~
-** alter detect_devices in order to only probe one time
-** detect *ALL* mouses if more than one (mousedrake?)
-
-** deeper data structure in Mandrake 9.2 ?
-
- "Mass storage" => (Floppy,
- Disk,
- Cdrom,
- Tape)
-
- "Network" => (Ethernetcard,
- Modem,
- Isdn)
- "Multimedia" => (Videocard,
- Tvcard,
- Soundcard,
- Webcam)
- "System" => (Bridge,
- Cpu,
- Memory)
-
-
- "Publishing" => (Printer,
- Scanner)
-
- "Pointing" => (Mouse,
- Joystick)
-
- "Buses" => (Ideinterface,
- Scsiinterface,
- Usbinterface,
- );
-
- "Unknown/Others",
-
-* ####################################################################
-
-* Suggestions
-** various
-Subject: Re: [Cooker] Optional ALSA Support for SB Live!
-From: Fabrice FACORAT <f.faber@netcourrier.com>
-To: cooker@linux-mandrake.com
-In-Reply-To: <m2ofhvtpaq.fsf@vador.mandrakesoft.com>
-References: <20020311051222.47DC087CA5@yavin.mandrax.org>
- <m2ofhvtpaq.fsf@vador.mandrakesoft.com>
-Date: 11 Mar 2002 11:12:31 +0100
-Message-Id: <1015841551.3895.31.camel@bastard.localdomain>
-
-Le lun 11/03/2002 à 10:41, Thierry Vignaud a écrit :
-
-> > In Mandrake 8.1 rerunning Harddrake post-setup would switch over
-> > to ALSA (which supports MIDI synth), however in 8.2 the only way to
-> > get ALSA support is to manually edit the modules.conf file. This
-> > would be disasterous for someone who isn't familar with
-> > modules.conf, but had been instructed on the mandrake-expert/newbie
-> > lists (as many had been) to simply rerun Harddrake on the sound card
-> > to get ALSA (and hence MIDI synth support).
->
-> give me the result of lspcidrake -f -v so that i switch your card
-> from oss to alsa.
-
-no please.
-just one month ago you switch SBLive from Alsa to OSS ( cause drakX
-set it as OSS and harddrake as Alsa ).
-There were also a discussion concerning the fact that Alsa doesn't
-support emu-tools and so all available options.
-Last but not least, several peoples report pbs with Alsa ( is sound is
-too high you have disturbances ). So someone is going to ask you for
-OSS as it want to use some features os SBLive, etc ...
-
-To my mind the best way for this ( but too late for 8.2 ) will be to
-have a tool called soundrake. Thanks to this tools, you choose at the
-beginning if you want to use OSS or alsa and then try to correctly
-configure your sound card. This tool should be able to work in
-embended mo in harddrake or harddrake2 ( infos concerning this so long
-awaiting harddrake 2 ? ).
-
-In order to make this tool be a perfect tool, it should be able to
-advice user concerning the advantage and the disadvantage of each
-driver ( indeed alsa sometimes is better than OSS as it support full
-duplex and wave mixing on more sound cards ).
-It's also disturbing is harddrake set alsa by default and XrakX set
-OSS by default as sometimes by lanching harddrake ( just to see what
-happen ) you lose ( or seems to lose ) your sound card ( mute mixer )
-
-For example :
-+ launch harddrake
-+ use autodetection : yes/no
-+ if auto detects enable, it detects a SBLive.
-+ explanations text concerning the fact that :
- if I use OSS I will be able to use sounds effects, live drive and
-others things ( AC-3 passthrough ) thanks to the emu10k1-tools packages
-( available on CD sets and installable via Software Manager )
- if I use Alsa, I won't be able to use emu10k1-tools but at the
-contrary I will be able to use midi software as alsa module support midi
-+ ask user which one he wants to use : OSS / Alsa ?
-+ set the sound card drivers and modules.conf according to user wishes
-+ <mode= dream> if I select OSS, installed emu10k1-tools and provide a
-GUI to configure them </mode = dream>
-+ <mode= dream> if I select Alsa unmute at least PCM and Vol or display
-a warning saying that by default Alsa mute everything ( configure alsa
-service so that it save mixer settings )
-+ test the sound ( mandrake sound theme )
-+ do you hear something ?
-+ yes -> your sound card have been properly set.
-+ if no -> try the others drivers set or send lspcidrake -v to
-somebody@somewhere.org to check for support for your sound card
-+ Do you ahave another sound card ?
diff --git a/perl-install/harddrake/autoconf.pm b/perl-install/harddrake/autoconf.pm
deleted file mode 100644
index 061d738af..000000000
--- a/perl-install/harddrake/autoconf.pm
+++ /dev/null
@@ -1,46 +0,0 @@
-package harddrake::autoconf;
-
-use common;
-use any;
-
-sub xconf {
- my ($modules_conf, $o) = @_;
-
- log::l('automatic XFree configuration');
-
- require Xconfig::default;
- $o->{raw_X} = Xconfig::default::configure(do_pkgs_standalone->new);
-
- require Xconfig::main;
- require do_pkgs;
- Xconfig::main::configure_everything_auto_install($o->{raw_X}, do_pkgs_standalone->new, {}, { allowFB => 1 });
-
- modules::load_category($modules_conf, 'various/agpgart');
-}
-
-sub network_conf {
- my ($obj) = @_;
- require network::network;
- network::network::easy_dhcp($obj->{modules_conf}, $obj->{netc}, $obj->{intf}) and $obj->{netcnx}{type} = 'lan';
-}
-
-sub mouse_conf {
- my ($modules_conf) = @_;
- require do_pkgs;
- require mouse;
- mouse::write_conf(do_pkgs_standalone->new, $modules_conf, mouse::detect($modules_conf), 1);
-}
-
-sub pcmcia {
- my ($pcic) = @_;
-
- #- should be set after installing the package above otherwise the file will be renamed.
- setVarsInSh("$::prefix/etc/sysconfig/pcmcia", {
- PCMCIA => bool2yesno($pcic),
- PCIC => $pcic,
- PCIC_OPTS => "",
- CORE_OPTS => "",
- });
-}
-
-1;
diff --git a/perl-install/harddrake/check_snd.pl b/perl-install/harddrake/check_snd.pl
deleted file mode 100755
index dfa007b80..000000000
--- a/perl-install/harddrake/check_snd.pl
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use lib qw(/usr/lib/libDrakX);
-
-use common;
-use harddrake::sound;
-use list_modules;
-
-
-my @listed_modules = @{$list_modules::l{multimedia}{sound}};
-my @drivers = (keys %harddrake::sound::oss2alsa, keys %harddrake::sound::alsa2oss);
-my @alternatives = uniq map { @{$_} } values %harddrake::sound::oss2alsa, values %harddrake::sound::alsa2oss;
-
-# check harddrake::sound's data structures're coherent
-print "unknown alternative drivers : [", join(', ', difference2(\@alternatives, \@drivers)), "]\n";
-
-# check that list_modules and harddrake::sound are synced
-print "non real sound modules (submodules, tv, usb, ...) : [", join(', ', difference2(\@drivers, \@listed_modules)), "]\n";
-print "forgotten sound modules : [", join(', ', difference2(\@listed_modules, \@drivers)), "]\n";
diff --git a/perl-install/harddrake/data.pm b/perl-install/harddrake/data.pm
deleted file mode 100644
index 2e3506bae..000000000
--- a/perl-install/harddrake/data.pm
+++ /dev/null
@@ -1,538 +0,0 @@
-package harddrake::data;
-
-use strict;
-use detect_devices;
-use common;
-use modules;
-
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(version tree);
-our ($version, $sbindir, $bindir) = ("10", "/usr/sbin", "/usr/bin");
-
-my @devices = detect_devices::probeall();
-
-# Update me each time you handle one more devices class (aka configurator)
-sub unknown() {
- grep { $_->{media_type} !~ /BRIDGE|class\|Mouse|DISPLAY|Hub|MEMORY_RAM|MULTIMEDIA_(VIDEO|AUDIO|OTHER)|NETWORK|Printer|SERIAL_(USB|SMBUS)|STORAGE_(IDE|OTHER|SCSI)|SYSTEM_OTHER|tape|UPS/
- && !member($_->{driver}, qw(cpia_usb cyber2000fb forcedeth ibmcam megaraid mod_quickcam nvnet ohci1394 ov511 ov518_decomp scanner ultracam usbvideo usbvision))
- && $_->{driver} !~ /^ISDN|Mouse:USB|Removable:zip|class\|Mouse|sata|www.linmodems.org/
- && $_->{type} ne 'network'
- && $_->{description} !~ /Alcatel|ADSL Modem/;
- } @devices;
-}
-
-my @alrd_dected;
-sub f {
- my @devs = grep { !member(pciusb_id($_), @alrd_dected) } @_;
- push @alrd_dected, map { pciusb_id($_) } @devs;
- @devs;
-}
-
-
-# tree format ("CLASS_ID", "type", "type_icon", configurator, detect_sub)
-# NEVER, NEVER alter CLASS_ID or you'll see harddrake2 service detect changes
-# in hw configuration ... :-(
-
-# FIXME: add translated items
-
-sub is_removable { $_[0] =~ /FLOPPY|ZIP|DVDROM|CDROM|BURNER/ }
-
-sub set_removable_configurator {
- my ($class, $device) = @_;
- return "/usr/sbin/diskdrake --removable=$device->{device}" if is_removable($class);
- }
-
-sub set_removable_auto_configurator {
- my ($class, $device) = @_;
- return "/usr/sbin/drakupdate_fstab --no-flag --auto --add $device->{device}" if is_removable($class);
-}
-
-sub set_removable_remover {
- my ($class, $device) = @_;
- return "/usr/sbin/drakupdate_fstab --no-flag --del $device->{device}" if is_removable($class);
-}
-
-my $modules_conf = modules::any_conf->read;
-
-# Format is (HW class ID, l18n class name, icon, config tool , is_to_be_detected_on_boot)
-our @tree =
- (
- {
- class => "FLOPPY",
- string => N("Floppy"),
- icon => "floppy.png",
- configurator => "",
- detector => \&detect_devices::floppies,
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "ZIP",
- string => N("Zip"),
- icon => "floppy.png",
- configurator => "",
- detector => sub {
- my ($options) = @_;
- if ($options->{PARALLEL_ZIP_DETECTION}) {
- modules::load_parallel_zip($modules_conf) and $modules_conf->write;
- }
- detect_devices::zips();
- },
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "HARDDISK",
- string => N("Hard Disk"),
- icon => "harddisk.png",
- configurator => "$sbindir/diskdrake",
- detector => sub { f(detect_devices::hds()) },
- checked_on_boot => 0,
- },
-
- {
- class => "CDROM",
- string => N("CDROM"),
- icon => "cd.png",
- configurator => "",
- detector => sub { grep { !(detect_devices::isBurner($_) || detect_devices::isDvdDrive($_)) } &detect_devices::cdroms },
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "BURNER",
- string => N("CD/DVD burners"),
- icon => "cd.png",
- configurator => "",
- detector => \&detect_devices::burners,
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "DVDROM",
- string => N("DVD-ROM"),
- icon => "cd.png",
- configurator => "",
- detector => sub { grep { ! detect_devices::isBurner($_) } detect_devices::dvdroms() },
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "TAPE",
- string => N("Tape"),
- icon => "tape.png",
- configurator => "",
- detector => \&detect_devices::tapes,
- checked_on_boot => 0,
- },
-
- {
- class => "VIDEO",
- string => N("Videocard"),
- icon => "video.png",
- configurator => "$sbindir/XFdrake",
- configurator_auto => "$sbindir/XFdrake",
- detector => sub { f(grep { $_->{driver} =~ /^(Card|Server):/ || $_->{media_type} =~ /DISPLAY_VGA/ } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "DVB",
- string => N("DVB card"),
- icon => "tv.png",
- detector => sub { f(modules::probe_category('multimedia/dvb')) },
- checked_on_boot => 1,
- },
-
- {
- class => "TV",
- string => N("Tvcard"),
- icon => "tv.png",
- configurator => "/usr/bin/XawTV",
- detector => sub { f(grep { $_->{media_type} =~ /MULTIMEDIA_VIDEO/ && $_->{bus} eq 'PCI' || $_->{driver} eq 'usbvision' } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "MULTIMEDIA_OTHER",
- string => N("Other MultiMedia devices"),
- icon => "multimedia.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /MULTIMEDIA_OTHER/ } @devices) },
- checked_on_boot => 0,
- },
-
- {
- class => "AUDIO",
- string => N("Soundcard"),
- icon => "sound.png",
- configurator => "$sbindir/draksound",
- detector => sub {
- require list_modules;
- my @modules = list_modules::category2modules('multimedia/sound');
- f(grep { $_->{media_type} =~ /MULTIMEDIA_AUDIO/ || member($_->{driver}, @modules) } @devices);
- },
- checked_on_boot => 1,
- },
-
- {
- class => "WEBCAM",
- string => N("Webcam"),
- icon => "webcam.png",
- configurator => "",
- detector => sub {
- require list_modules;
- my @modules = list_modules::category2modules('multimedia/webcam');
- f(grep { $_->{media_type} =~ /MULTIMEDIA_VIDEO/ && $_->{bus} ne 'PCI' || member($_->{driver}, @modules) } @devices);
- },
- # managed by hotplug:
- checked_on_boot => 0,
- },
-
- {
- class => "CPU",
- string => N("Processors"),
- icon => "cpu.png",
- configurator => "",
- detector => sub { detect_devices::getCPUs() },
- # maybe should we install schedutils?
- checked_on_boot => 0,
- },
-
- {
- class => "ISDN",
- string => N("ISDN adapters"),
- icon => "modem.png",
- configurator => "$sbindir/drakconnect",
- detector => sub { require network::isdn; my $isdn = network::isdn::detect_backend($modules_conf); if_(@$isdn, f(@$isdn)) },
- # we do not check these b/c this need user interaction (auth, ...):
- checked_on_boot => 0,
- },
-
-
- {
- class => "USB_AUDIO",
- string => N("USB sound devices"),
- icon => "sound.png",
- configurator => "",
- detector => sub { f(modules::probe_category('multimedia/usb_sound')) },
- checked_on_boot => 0,
- },
-
- {
- class => "RADIO",
- string => N("Radio cards"),
- icon => "tv.png",
- configurator => "",
- detector => sub { f(modules::probe_category('multimedia/radio')) },
- checked_on_boot => 0,
- },
-
- {
- class => "ATM",
- string => N("ATM network cards"),
- icon => "hw_network.png",
- configurator => "",
- detector => sub { f(modules::probe_category('network/atm')) },
- checked_on_boot => 0,
- },
-
- {
- class => "WAN",
- string => N("WAN network cards"),
- icon => "hw_network.png",
- configurator => "",
- detector => sub { f(modules::probe_category('network/wan')) },
- checked_on_boot => 0,
- },
-
- {
- class => "BLUETOOTH",
- string => N("Bluetooth devices"),
- icon => "hw_network.png",
- configurator => "",
- detector => sub { f(modules::probe_category('bus/bluetooth')) },
- checked_on_boot => 0,
- },
-
- {
- class => "ETHERNET",
- string => N("Ethernetcard"),
- icon => "hw_network.png",
- configurator => "$sbindir/drakconnect",
- detector => sub {
- require list_modules;
- require network::ethernet;
- my @net_modules = list_modules::category2modules(list_modules::ethernet_categories());
- f(grep {
- $_->{media_type} && $_->{media_type} =~ /^NETWORK/
- || $_->{type} && $_->{type} eq 'network'
- || member($_->{driver}, @net_modules);
- } @devices);
- },
- checked_on_boot => 1,
- },
-
- {
- class => "MODEM",
- string => N("Modem"),
- icon => "modem.png",
- configurator => "$sbindir/drakconnect",
- detector => sub { detect_devices::getModem($modules_conf) },
- # we do not check these b/c this need user interaction (auth, ...):
- checked_on_boot => 0,
- },
-
- {
- class => "ADSL",
- string => N("ADSL adapters"),
- icon => "modem.png",
- configurator => "$sbindir/drakconnect",
- detector => sub {
- require network::adsl;
- my $a = network::adsl::adsl_detect();
- $a ? f(map { @$_ } grep { defined($_) } values %$a) : ();
- },
- # we do not check these b/c this need user interaction (auth, ...):
- checked_on_boot => 0,
- },
-
- {
- class => "MEMORY",
- string => N("Memory"),
- icon => "memory.png",
- configurator => "",
- detector => sub { grep { member($_->{name}, 'Cache', 'Memory Module') } detect_devices::dmidecode() },
- checked_on_boot => 0,
- },
-
- {
- class => "AGP",
- string => N("AGP controllers"),
- icon => "memory.png",
- configurator => "",
- detector => sub { f(modules::probe_category('various/agpgart')) },
- checked_on_boot => 1,
- },
-
- {
- class => "PRINTER",
- string => N("Printer"),
- icon => "hw_printer.png",
- configurator => "$sbindir/printerdrake",
- detector => sub { require printer::detect; printer::detect::local_detect() },
- # we do not check these b/c this need user interaction (auth, ...):
- checked_on_boot => 0,
- },
-
-
-
- {
- class => "GAMEPORT",
- string =>
- #-PO: these are joysticks controllers:
- N("Game port controllers"),
- icon => "joystick.png",
- configurator => "",
- detector => sub { f(modules::probe_category('multimedia/gameport')) },
- checked_on_boot => 0,
- },
-
- {
- class => "JOYSTICK",
- string => N("Joystick"),
- icon => "joystick.png",
- configurator => "",
- detector => sub { f(modules::probe_category('input/joystick')), f(grep { $_->{description} =~ /Joystick/ } @devices) },
- checked_on_boot => 0,
- },
-
-
- {
- class => "SATA_STORAGE",
- string => N("SATA controllers"),
- icon => "ide_hd.png",
- configurator => "",
- detector => sub { f(modules::probe_category('disk/sata')) },
- checked_on_boot => 1,
- },
-
- {
- class => "RAID_STORAGE",
- string => N("RAID controllers"),
- icon => "ide_hd.png",
- configurator => "",
- detector => sub { f(modules::probe_category('disk/hardware_raid')) },
- checked_on_boot => 1,
- },
-
- {
- class => "ATA_STORAGE",
- string => N("(E)IDE/ATA controllers"),
- icon => "ide_hd.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /STORAGE_(IDE|OTHER)/ } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "FIREWIRE_CONTROLLER",
- string => N("Firewire controllers"),
- icon => "usb.png",
- configurator => "",
- detector => sub { f(grep { $_->{driver} =~ /ohci1394/ } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "PCMCIA_CONTROLLER",
- string => N("PCMCIA controllers"),
- icon => "scsi.png",
- configurator => "",
- detector => sub { f(detect_devices::pcmcia_controller_probe()) },
- checked_on_boot => 1,
- },
-
- {
- class => "SCSI_CONTROLLER",
- string => N("SCSI controllers"),
- icon => "scsi.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /STORAGE_SCSI/ } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "USB_CONTROLLER",
- string => N("USB controllers"),
- icon => "usb.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} eq 'SERIAL_USB' } @devices) },
- checked_on_boot => 1,
- },
-
- {
- class => "USB_HUB",
- string => N("USB ports"),
- icon => "usb.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /Hub/ } @devices) },
- checked_on_boot => 0,
- },
-
- {
- class => "SMB_CONTROLLER",
- string => N("SMBus controllers"),
- icon => "usb.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /SERIAL_SMBUS/ } @devices) },
- checked_on_boot => 0,
- },
-
- {
- class => "BRIDGE",
- string => N("Bridges and system controllers"),
- icon => "memory.png",
- configurator => "",
- detector => sub { f(grep { $_->{media_type} =~ /BRIDGE|MEMORY_RAM|SYSTEM_OTHER/ } @devices) },
- checked_on_boot => 0,
- },
-
- {
- class => "KEYBOARD",
- string => N("Keyboard"),
- icon => "usb.png",
- configurator => "$sbindir/keyboardrake",
- detector => sub {
- f(grep { $_->{description} =~ /Keyboard/i } @devices),
- # USB devices are filtered out since we already catch them through probeall():
- grep { $_->{bus} ne 'usb' && $_->{driver} eq 'kbd' && $_->{description} !~ /PC Speaker/ } detect_devices::getInputDevices();
- },
- checked_on_boot => 0,
- },
-
- {
- class => "MISC_INPUT",
- string => N("Tablet and touchscreen"),
- icon => "hw_mouse.png",
- detector => sub { f(modules::probe_category('input/tablet'), modules::probe_category('input/touchscreen')) },
- configurator => "$sbindir/mousedrake",
- checked_on_boot => 0,
- },
-
- {
- class => "MOUSE",
- string => N("Mouse"),
- icon => "hw_mouse.png",
- configurator => "$sbindir/mousedrake",
- detector => sub {
- f(grep { $_->{driver} =~ /^Mouse:|^Tablet:/ || $_->{media_type} =~ /class\|Mouse/ } @devices),
- # USB devices are filtered out since we already catch them through probeall():
- grep { $_->{bus} ne 'usb' && $_->{driver} =~ /mouse/ } detect_devices::getInputDevices();
- },
- checked_on_boot => 1,
- automatic => 1,
- },
-
- {
- class => "UPS",
- string => N("UPS"),
- icon => "ups.png",
- configurator => "$sbindir/drakups",
- detector => sub { f(detect_devices::getUPS()) },
- checked_on_boot => 0,
- },
-
- {
- class => "SCANNER",
- string => N("Scanner"),
- icon => "scanner.png",
- configurator => "$sbindir/scannerdrake",
- detector => sub {
- require scanner; f(scanner::detect()) },
- checked_on_boot => 0,
- },
-
- {
- class => "UNKNOWN",
- string => N("Unknown/Others"),
- icon => "unknown.png",
- configurator => "",
- detector => sub { f(unknown()) },
- checked_on_boot => 0,
- },
-
- );
-
-sub pciusb_id {
- my ($dev) = @_;
- my %alt = (
- bus => 'usb_bus',
- description => 'usb_description',
- id => 'usb_id',
- pci_bus => 'usb_pci_bus',
- pci_device => 'usb_pci_device',
- vendor => 'usb_vendor',
- );
- join(':', map { $dev->{$alt{$_}} || $dev->{$_} } qw(bus pci_bus pci_device vendor id subvendor subid description));
-}
-
-
-sub custom_id {
- my ($device, $str) = @_;
- return if !ref($device);
- defined($device->{device}) ? $device->{device} :
- (defined($device->{processor}) ?
- N("cpu # ") . $device->{processor} . ": " . $device->{'model name'} :
- $device->{"Socket Designation"} ?
- "$device->{name} (" . $device->{"Socket Designation"} . ")" :
- $device->{name} ? $device->{name} :
- (defined($device->{description}) ? $device->{description} : $str));
-}
-
-1;
diff --git a/perl-install/harddrake/sound.pm b/perl-install/harddrake/sound.pm
deleted file mode 100644
index e1651f23c..000000000
--- a/perl-install/harddrake/sound.pm
+++ /dev/null
@@ -1,368 +0,0 @@
-package harddrake::sound;
-# lists filled with Danny Tholen help, enhanced by Thierry Vignaud
-#
-# No ALSA for OSS's
-# o isa cards: msnd_pinnacle, pas2,
-# o pci cards: ad1889, sam9407
-# No OSS for ALSA's
-# o pci cards: snd-als4000, snd-es968, snd-hdsp
-# o isa cards: snd-azt2320, snd-cs4231, snd-cs4236,
-# snd-dt0197h, snd-korg1212, snd-rme32
-# o pcmcia cards: snd-vxp440 snd-vxpocket
-
-# TODO:
-# o ensure sound is not user (either dsp/midi/sequencer/mixer)
-# o fix sound/alsa services
-
-use strict;
-use common;
-use interactive;
-use run_program;
-use modules;
-use list_modules;
-use detect_devices;
-use log;
-
-
-our %alsa2oss =
- (
- if_(arch() =~ /ppc/, "snd-powermac" => [ "dmasound_pmac" ]),
- if_(arch() =~ /sparc/,
- "snd-sun-amd7930" => [ "unknown" ],
- "snd-sun-cs4231" => [ "unknown" ],
- "snd-sun-dbri" => [ "unknown" ],
- ),
- "snd-ad1816a" => [ "ad1816" ], # isa
- "snd-ad1848" => [ "ad1848", "pss" ], # isa
- "snd-ali5451" => [ "trident" ],
- "snd-als100" => [ "sb" ], # isa
- "snd-als4000" => [ "unknown" ],
- "snd-atiixp" => [ "unknown" ],
- "snd-au8810" => [ "unknown" ],
- "snd-au8820" => [ "unknown" ],
- "snd-au8830" => [ "unknown" ],
- "snd-audigyls" => [ "unknown" ], # pci, renamed as snd-ca0106
- "snd-azt2320" => [ "unknown" ], # isa
- "snd-azt3328" => [ "unknown" ], # isa
- "snd-azx" => [ "unknown" ],
- "snd-bt87x" => [ "btaudio" ],
- "snd-ca0106" => [ "unknown" ], # pci
- "snd-cmi8330" => [ "sb" ], # isa
- "snd-cmipci" => [ "cmpci" ],
- "snd-cs4231" => [ "unknown" ], # isa
- "snd-cs4232" => [ "cs4232" ], # isa
- "snd-cs4236" => [ "ad1848" ], # isa
- "snd-cs4281" => [ "cs4281" ],
- "snd-cs46xx" => [ "cs46xx" ],
- "snd-darla20" => [ "unknown" ],
- "snd-darla24" => [ "unknown" ],
- "snd-dt0197h" => [ "unknown" ], # isa
- "snd-dt019x" => [ "unknown" ], # isa
- "snd-emu10k1" => [ "audigy", "emu10k1" ],
- "snd-emu10k1x" => [ "unknown" ],
- "snd-ens1370" => [ "es1370" ],
- "snd-ens1371" => [ "es1371" ],
- "snd-es1688" => [ "sb" ], # isa
- "snd-es18xx" => [ "sb" ], # isa
- "snd-es1938" => [ "esssolo1" ],
- "snd-es1968" => [ "maestro" ], # isa
- "snd-es968" => [ "sb" ],
- "snd-fm801" => [ "forte" ],
- "snd-gina20" => [ "unknown" ],
- "snd-gina24" => [ "unknown" ],
- "snd-gina3g" => [ "unknown" ],
- "snd-gusclassic" => [ "gus" ], # isa
- "snd-gusextreme" => [ "gus" ], # isa
- "snd-gusmax" => [ "gus" ], # isa
- "snd-hda-intelp" => [ "unknown" ],
- "snd-hdspm" => [ "unknown" ],
- "snd-hdsp" => [ "unknown" ],
- "snd-ice1712" => [ "unknown" ], # isa
- "snd-ice1724" => [ "unknown" ], # isa
- "snd-indi" => [ "unknown" ], # pci
- "snd-indigo" => [ "unknown" ], # pci
- "snd-indigodj" => [ "unknown" ], # pci
- "snd-indigoio" => [ "unknown" ], # pci
- "snd-intel8x0" => [ "ali5455", "i810_audio", "nvaudio" ],
- "snd-interwave" => [ "gus" ], # isa
- "snd-interwave-stb" => [ "unknown" ], # isa
- "snd-korg1212" => [ "unknown" ], # isa
- "snd-layla20" => [ "unknown" ],
- "snd-layla24" => [ "unknown" ],
- "snd-layla3g" => [ "unknown" ],
- "snd-maestro3" => [ "maestro3" ],
- "snd-mia" => [ "unknown" ],
- "snd-mixart" => [ "unknown" ],
- "snd-mona" => [ "unknown" ],
- "snd-mpu401" => [ "mpu401" ],
- "snd-nm256" => [ "nm256_audio" ],
- "snd-opl3sa2" => [ "opl3", "opl3sa", "opl3sa2" ], # isa
- "snd-opti92x-ad1848" => [ "unknown" ], # isa
- "snd-opti92x-cs4231" => [ "unknown" ], # isa
- "snd-opti93x" => [ "mad16" ],
- "snd-pcxhr" => [ "unknown" ], # pci
- "snd-rme32" => [ "unknown" ], # isa
- "snd-rme96" => [ "rme96xx" ], # pci
- "snd-rme9652" => [ "rme96xx" ], # pci
- "snd-sb16" => ["sscape", "sb"],
- "snd-sb8" => [ "sb" ],
- "snd-sbawe" => [ "awe_wave" ],
- "snd-sgalaxy" => [ "sgalaxy" ], # isa
- "snd-sonicvibes" => [ "sonicvibes" ],
- "snd-sscape" => [ "sscape" ], # isa
- "snd-trident" => [ "trident" ],
- "snd-usb-audio" => [ "audio" ], # usb
- "snd-via82xx" => [ "via82cxxx_audio" ],
- "snd-vx222" => [ "unknown" ],
- "snd-vxp440" => [ "unknown" ], # pcmcia
- "snd-vxpocket" => [ "unknown" ], # pcmcia
- "snd-wavefront" => [ "wavefront" ], # isa
- "snd-ymfpci" => [ "ymfpci" ],
- );
-
-
-our %oss2alsa =
- (
- if_(arch() =~ /ppc/, "dmasound_pmac" => [ "snd-powermac" ]),
- "ad1816" => [ "snd-ad1816a" ],
- "ad1848" => [ "snd-ad1848", "snd-cs4236" ],
- "ad1889" => [ "unknown" ],
- "ali5455" => [ "snd-intel8x0" ],
- "audigy" => [ "snd-emu10k1" ],
- "audio" => [ "snd-usb-audio" ], # usb
- "awe_wave" => [ "snd-sbawe" ],
- "btaudio" => [ "snd-bt87x" ],
- "cmpci" => [ "snd-cmipci" ],
- "cs4232" => [ "snd-cs4232" ],
- "cs4281" => [ "snd-cs4281" ],
- "cs46xx" => [ "snd-cs46xx" ],
- "emu10k1" => [ "snd-emu10k1" ],
- "es1370" => [ "snd-ens1370" ],
- "es1371" => [ "snd-ens1371" ],
- "esssolo1" => [ "snd-es1938" ],
- "forte" => [ "snd-fm801" ],
- "gus" => ["snd-interwave", "snd-gusclassic", "snd-gusmax", "snd-gusextreme"],
- "i810_audio" => [ "snd-intel8x0" ],
- "ice1712" => [ "snd-ice1712" ],
- "mad16" => [ "snd-opti93x" ],
- "maestro" => [ "snd-es1968" ],
- "maestro3" => [ "snd-maestro3" ],
- "mpu401" => [ "snd-mpu401" ],
- "msnd_pinnacle" => [ "unknown" ],
- "nm256_audio" => [ "snd-nm256" ],
- "nvaudio" => [ "snd-intel8x0" ],
- "opl3" => [ "snd-opl3sa2" ],
- "opl3sa" => [ "snd-opl3sa2" ],
- "opl3sa2" => [ "snd-opl3sa2" ],
- "pas2" => [ "unknown" ],
- "pss" => [ "snd-ad1848" ],
- "rme96xx" => [ "snd-rme96", "snd-rme9652" ],
- "sam9407" => [ "unknown" ],
- "sb" => [ "snd-als100", "snd-cmi8330", "snd-es1688", "snd-es18xx", "snd-es968", "snd-sb8", "snd-sb16" ],
- "sgalaxy" => [ "snd-sgalaxy" ],
- "sonicvibes" => [ "snd-sonicvibes" ],
- "sscape" => [ "snd-sb16", "snd-sscape" ],
- "trident" => [ "snd-ali5451", "snd-trident" ],
- "via82cxxx_audio" => [ "snd-via82xx" ],
- "wavefront" => [ "snd-wavefront" ],
- "ymfpci" => [ "snd-ymfpci" ],
- );
-
-my @blacklist = qw(cs46xx cs4281);
-my $blacklisted = 0;
-
-sub rooted { run_program::rooted($::prefix, @_) }
-
-sub unload { modules::unload(@_) if $::isStandalone || $blacklisted }
-
-sub load {
- my ($modules_conf, $name) = @_;
- modules::load_and_configure($modules_conf, $name) if $::isStandalone || $blacklisted;
-}
-
-sub get_alternative {
- my ($driver) = @_;
- $alsa2oss{$driver} || $oss2alsa{$driver};
-}
-
-sub do_switch {
- my ($in, $modules_conf, $old_driver, $new_driver, $index) = @_;
- return if $old_driver eq $new_driver;
- my $_wait = $in->wait_message(N("Please wait"), N("Please Wait... Applying the configuration"));
- log::explanations("removing old $old_driver\n");
- if ($::isStandalone) {
- rooted("service sound stop") unless $blacklisted;
- rooted("service alsa stop") if $old_driver =~ /^snd-/ && !$blacklisted;
- unload($old_driver); # run_program("/sbin/modprobe -r $driver"); # just in case ...
- }
- $modules_conf->remove_module($old_driver);
- $modules_conf->set_sound_slot("sound-slot-$index", $new_driver);
- $modules_conf->write;
- if ($new_driver =~ /^snd-/) { # new driver is an alsa one
- $in->do_pkgs->ensure_binary_is_installed('alsa-utils', 'alsactl');
- rooted("service alsa start") if $::isStandalone && !$blacklisted;
- rooted("/sbin/chkconfig --add alsa") if $::isStandalone;
- load($modules_conf, $new_driver) if $::isStandalone; # service alsa is buggy
- } else { rooted("/sbin/chkconfig --del alsa") }
- log::explanations("loading new $new_driver\n");
- rooted("/sbin/chkconfig --add sound"); # just in case ...
- rooted("service sound start") if $::isStandalone && !$blacklisted;
-}
-
-sub switch {
- my ($in, $modules_conf, $device) = @_;
- my $driver = $device->{current_driver} || $device->{driver};
-
- foreach (@blacklist) { $blacklisted = 1 if $driver eq $_ }
- my @alternative = @{get_alternative($driver)};
- unless ($driver eq $device->{driver} || member($device->{driver}, @alternative)) {
- push @alternative, @{get_alternative($device->{driver})}, $device->{driver};
- }
- if (@alternative) {
- my $new_driver = $driver;
- push @alternative, $driver;
- my %des = modules::category2modules_and_description('multimedia/sound');
-
- if ($new_driver eq 'unknown') {
- $in->ask_from(N("No alternative driver"),
- N("There's no known OSS/ALSA alternative driver for your sound card (%s) which currently uses \"%s\"",
- $device->{description}, $driver),
- [
- get_any_driver_entry($in, $modules_conf, $driver, $device),
- ]
- );
- } elsif ($in->ask_from_({ title => N("Sound configuration"),
- messages =>
- N("Here you can select an alternative driver (either OSS or ALSA) for your sound card (%s).",
- $device->{description}) .
- #-PO: here the first %s is either "OSS" or "ALSA",
- #-PO: the second %s is the name of the current driver
- #-PO: and the third %s is the name of the default driver
- N("\n\nYour card currently use the %s\"%s\" driver (default driver for your card is \"%s\")", ($driver =~ /^snd-/ ? "ALSA " : "OSS "), $driver, $device->{driver}),
- interactive_help => sub {
- N("OSS (Open Sound System) was the first sound API. It's an OS independent sound API (it's available on most UNIX(tm) systems) but it's a very basic and limited API.
-What's more, OSS drivers all reinvent the wheel.
-
-ALSA (Advanced Linux Sound Architecture) is a modularized architecture which
-supports quite a large range of ISA, USB and PCI cards.\n
-It also provides a much higher API than OSS.\n
-To use alsa, one can either use:
-- the old compatibility OSS api
-- the new ALSA api that provides many enhanced features but requires using the ALSA library.
-");
- },
- },
- [
- {
- label => N("Driver:"), val => \$new_driver, list => \@alternative, default => $new_driver, sort =>1,
- help => join("\n\n", map { qq("$_": ) . $des{$_} } @alternative),
- allow_empty_list => 1,
- },
- {
- val => N("Trouble shooting"), disabled => sub {},
- clicked => sub { &trouble($in) }
- },
- get_any_driver_entry($in, $modules_conf, $driver, $device),
- ]))
- {
- return if $new_driver eq $device->{current_driver};
- log::explanations("switching audio driver from '" . $device->{current_driver} . "' to '$new_driver'\n");
- $in->ask_warn(N("Warning"), N("The old \"%s\" driver is blacklisted.\n
-It has been reported to oops the kernel on unloading.\n
-The new \"%s\" driver will only be used on next bootstrap.", $device->{current_driver}, $new_driver)) if $blacklisted;
- do_switch($in, $modules_conf, $device->{current_driver}, $new_driver, $device->{sound_slot_index});
- $device->{current_driver} = $new_driver;
- }
- } elsif ($driver =~ /^Bad:/) {
- $driver =~ s/^Bad://;
- $in->ask_warn(N("No open source driver"),
- N("There's no free driver for your sound card (%s), but there's a proprietary driver at \"%s\".",
- $device->{description}, $driver));
- } elsif ($driver eq "unknown") {
- $in->ask_from(N("No known driver"),
- N("There's no known driver for your sound card (%s)",
- $device->{description}),
- [ get_any_driver_entry($in, $modules_conf, $driver, $device) ]);
- } else {
- $in->ask_warn(N("Unknown driver"),
- N("Error: The \"%s\" driver for your sound card is unlisted",
- $driver));
- }
- end:
-}
-
-sub config {
- my ($in, $modules_conf, $device) = @_;
- switch($in, $modules_conf, $device);
-}
-
-
-sub trouble {
- my ($in) = @_;
- $in->ask_warn(N("Sound trouble shooting"),
- formatAlaTeX(
- #-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("The classic bug sound tester is to run the following commands:
-
-
-- \"lspcidrake -v | fgrep AUDIO\" will tell you which driver your card uses
-by default
-
-- \"grep sound-slot /etc/modules.conf\" will tell you what driver it
-currently uses
-
-- \"/sbin/lsmod\" will enable you to check if its module (driver) is
-loaded or not
-
-- \"/sbin/chkconfig --list sound\" and \"/sbin/chkconfig --list alsa\" will
-tell you if sound and alsa services're configured to be run on
-initlevel 3
-
-- \"aumix -q\" will tell you if the sound volume is muted or not
-
-- \"/sbin/fuser -v /dev/dsp\" will tell which program uses the sound card.
-")));
-}
-
-sub get_any_driver_entry {
- my ($in, $modules_conf, $driver, $device) = @_;
- return () if $::isInstall;
- +{
- val => N("Let me pick any driver"), disabled => sub {},
- clicked => sub {
- my $old_driver = $driver;
- if ($in->ask_from(N("Choosing an arbitrary driver"),
- formatAlaTeX(
- #-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("If you really think that you know which driver is the right one for your card
-you can pick one in the above list.
-
-The current driver for your \"%s\" sound card is \"%s\" ", $device->{description}, $driver)),
- [
- { label => N("Driver:"), val => \$driver, list => [ category2modules("multimedia/sound") ], type => 'combo', default => $driver, sort =>1, separator => '|' },
- ]
- )) {
- do_switch($in, $modules_conf, $old_driver, $driver, $device->{sound_slot_index});
- goto end;
- }
- }
- };
-}
-
-
-sub configure_sound_slots {
- my ($modules_conf) = @_;
- my $altered = 0;
- each_index {
- my $default_driver = $modules_conf->get_alias("sound-slot-$::i");
- if (!member($default_driver, @{get_alternative($_->{driver})}, $_->{driver})) {
- $altered ||= $default_driver;
- $modules_conf->set_sound_slot("sound-slot-$::i", $_->{driver});
- $modules_conf->set_options($_->{driver}, "xbox=1") if $_->{driver} eq "snd-intel8x0" && is_xbox();
- }
- } detect_devices::getSoundDevices();
- $modules_conf->write if $altered && $::isStandalone;
-}
-
-
-1;
diff --git a/perl-install/harddrake/v4l.pm b/perl-install/harddrake/v4l.pm
deleted file mode 100644
index aa005b664..000000000
--- a/perl-install/harddrake/v4l.pm
+++ /dev/null
@@ -1,338 +0,0 @@
-package harddrake::v4l;
-
-use strict;
-
-use common;
-use interactive;
-use detect_devices;
-use lang;
-use log;
-use modules;
-
-# please update me on bttv update :
-
-my $default = N("Auto-detect");
-# TODO: split %tuners_lst in per driver perl source files that get transformed in Storable files
-my %tuners_lst =
- (
- -1 => $default,
- 0 => "Temic|PAL (4002 FH5)",
- 1 => "Philips|PAL_I (FI1246 and compatibles)",
- 2 => "Philips|NTSC (FI1236, FM1236 and compatibles)",
- 3 => "Philips|(SECAM+PAL_BG) (FI1216MF, FM1216MF, FR1216MF)",
- 4 => "NoTuner",
- 5 => "Philips|PAL_BG (FI1216 and compatibles)",
- 6 => "Temic|NTSC (4032 FY5)",
- 7 => "Temic|PAL_I (4062 FY5)",
- 8 => "Temic|NTSC (4036 FY5)",
- 9 => "Alps|HSBH1",
- 10 => "Alps|TSBE1",
- 11 => "Alps|TSBB5",
- 12 => "Alps|TSBE5",
- 13 => "Alps|TSBC5",
- 14 => "Temic|PAL_BG (4006FH5)",
- 15 => "Alps|TSCH6",
- 16 => "Temic|PAL_DK (4016 FY5)",
- 17 => "Philips|NTSC_M (MK2)",
- 18 => "Temic|PAL_I (4066 FY5)",
- 19 => "Temic|PAL* auto (4006 FN5)",
- 20 => "Temic|PAL_BG (4009 FR5) or PAL_I (4069 FR5)",
- 21 => "Temic|NTSC (4039 FR5)",
- 22 => "Temic|PAL/SECAM multi (4046 FM5)",
- 23 => "Philips|PAL_DK (FI1256 and compatibles)",
- 24 => "Philips|PAL/SECAM multi (FQ1216ME)",
- 25 => "LG|PAL_I+FM (TAPC-I001D)",
- 26 => "LG|PAL_I (TAPC-I701D)",
- 27 => "LG|NTSC+FM (TPI8NSR01F)",
- 28 => "LG|PAL_BG+FM (TPI8PSB01D)",
- 29 => "LG|PAL_BG (TPI8PSB11D)",
- 30 => "Temic|PAL* auto + FM (4009 FN5)",
- 31 => "SHARP|NTSC_JP (2U5JF5540)",
- 32 => "Samsung|PAL TCPM9091PD27",
- 33 => "MT20xx universal",
- 34 => "Temic|PAL_BG (4106 FH5)",
- 35 => "Temic|PAL_DK/SECAM_L (4012 FY5)",
- 36 => "Temic|NTSC (4136 FY5)",
- 37 => "LG|PAL (newer TAPC series)",
- 38 => "Philips|PAL/SECAM multi (FM1216ME)",
- 39 => "LG|NTSC (newer TAPC series)",
- 40 => "HITACHI V7-J180AT",
- 41 => "Philips|PAL_MK (FI1216 MK)",
- 42 => "Philips|1236D ATSC/NTSC daul in",
- 43 => "Philips|NTSC MK3 (FM1236MK3 or FM1236/F)",
- 44 => "Philips|4 in 1 (ATI TV Wonder Pro/Conexant)",
- 45 => "Microtune|4049 FM5",
-
- );
-
-# Tweaked from Cardlist
-my $cards_lst = {
- 'bttv' => {
- $default => -1,
- N("Unknown|Generic") => 0,
- "M|Miro|PCTV" => 1,
- "H|Hauppauge|bt848" => 2,
- "S|STB|Hauppauge 878" => 3,
- "I|Intel|Create and Share PCI (bttv type 4)" => 4,
- "I|Intel|Smart Video Recorder III (bttv type 4)" => 4,
- "D|Diamond|DTV2000" => 5,
- "A|AVerMedia|TVPhone" => 6,
- "M|MATRIX-Vision|MV-Delta" => 7,
- "L|Lifeview|FlyVideo II (Bt848) LR26" => 8,
- "G|Guillemot|MAXI TV Video PCI2 LR26" => 27,
- "G|Genius/Kye|Video Wonder Pro II (848 or 878)" => 8,
- "I|IMS/IXmicro|TurboTV" => 9,
- "H|Hauppauge|bt878" => 10,
- "M|Miro|PCTV pro" => 11,
- "A|ADS Technologies|Channel Surfer TV (bt848)" => 12,
- "A|AVerMedia|TVCapture 98" => 13,
- "A|Aimslab|Video Highway Xtreme (VHX)" => 14,
- "Z|Zoltrix|TV-Max" => 15,
- "P|Prolink|Pixelview PlayTV (bt878)" => 16,
- "L|Leadtek|WinView 601" => 17,
- "A|AVEC|Intercapture" => 18,
- "L|Lifeview|FlyKit LR38 Bt848 (capture only)" => 19,
- "L|Lifeview|FlyVideo II EZ" => 19,
- "C|CEI|Raffles Card" => 20,
- "L|Lifeview|FlyVideo 98" => 21,
- "L|Lucky Star|Image World ConferenceTV LR50" => 21,
- "A|Askey|CPH050" => 22,
- "P|Phoebe Micro|Tv Master + FM" => 22,
- "M|Modular|Technology MM205 PCTV (bt878)" => 23,
- "A|Askey|CPH06X (bt878)" => 24,
- "G|Guillemot|Maxi TV Video 3" => 24,
- "A|Askey|CPH05X (bt878)" => 24,
- N("Unknown|CPH05X (bt878) [many vendors]") => 24,
- N("Unknown|CPH06X (bt878) [many vendors]") => 24,
- "T|Terratec|Terra TV+ Version 1.0 (Bt848)" => 25,
- "Vobis|TV-Boostar" => 25,
- "T|Terratec|TV-Boostar" => 25,
- "H|Hauppauge|WinCam newer (bt878)" => 26,
- "L|Lifeview|FlyVideo 98" => 27,
- "G|Guillemot|MAXI TV Video PCI2 LR50" => 27,
- "T|Terratec|TerraTV+" => 28,
- "I|Imagenation|PXC200" => 29,
- "L|Lifeview|FlyVideo 98 LR50" => 30,
- "Formac|iProTV" => 31,
- "Formac|iProTV I (bt848)" => 31,
- "I|Intel|Create and Share PCI (bttv type 32)" => 32,
- "I|Intel|Smart Video Recorder III (bttv type 32)" => 32,
- "T|Terratec|TerraTValue" => 33,
- "L|Leadtek|WinFast TV 2000" => 34,
- "L|Leadtek|WinFast VC 100" => 35,
- "L|Lifeview|FlyVideo 98 LR50" => 35,
- "C|Chronos|Video Shuttle II" => 35,
- "L|Lifeview|FlyVideo 98FM LR50" => 36,
- "T|Typhoon|TView TV/FM Tuner" => 36,
- "P|Prolink|PixelView PlayTV pro" => 37,
- "P|Prolink|PixelView PlayTV Theater" => 37,
- "A|Askey|CPH06X TView99" => 38,
- "P|Pinnacle|PCTV Studio/Rave" => 39,
- "S|STB|STB2 TV PCI FM, P/N 6000704" => 40,
- "A|AVerMedia|TVPhone 98" => 41,
- "P|ProVideo|PV951" => 42,
- "L|Little|OnAir TV" => 43,
- "S|Sigma|TVII-FM" => 44,
- "M|MATRIX-Vision|MV-Delta 2" => 45,
- "Z|Zoltrix|Genie TV/FM" => 46,
- "T|Terratec|TV/Radio+" => 47,
- "A|Askey|CPH03x" => 48,
- "D|Dynalink|Magic TView" => 48,
- "I|IODATA|GV-BCTV3/PCI" => 49,
- "P|Prolink|PixelView PlayTV PAK" => 50,
- "L|Lenco|MXTV-9578 CP" => 50,
- "P|Prolink|PV-BT878P+4E" => 50,
- "L|Lenco|MXTV-9578CP (Bt878)" => 50,
- "E|Eagle|Wireless Capricorn2 (bt878A)" => 51,
- "P|Pinnacle|PCTV Studio Pro" => 52,
- "T|Typhoon|KNC1 TV Station RDS" => 53,
- "T|Typhoon|TV Tuner RDS (black package)" => 53,
- "T|Typhoon|TView RDS + FM Stereo" => 53,
- "L|Lifeview|FlyVideo 2000" => 54,
- "L|Lifeview|FlyVideo A2" => 54,
- "L|Lifetec|LT 9415 TV [LR90]" => 54,
- "A|Askey|CPH031" => 55,
- "L|Lenco|MXR-9571 (Bt848)" => 55,
- "Bestbuy|Easy TV" => 55,
- "L|Lifeview|FlyVideo 98FM LR50" => 56,
- "G|GrandTec|Grand Video Capture (Bt848)" => 57,
- "A|Askey|CPH060" => 58,
- "P|Phoebe Micro|TV Master Only (No FM)" => 58,
- "A|Askey|CPH03x TV Capturer" => 59,
- "M|Modular|Technology MM100 PCTV" => 60,
- "A|AG|Electronics GMV1" => 61,
- "A|Askey|CPH061" => 62,
- "Bestbuy|Easy TV (bt878)" => 62,
- "L|Lifetec|LT9306" => 62,
- "M|Medion|MD9306" => 62,
- "A|ATI|TV-Wonder" => 63,
- "A|ATI|TV-Wonder VE" => 64,
- "L|Lifeview|FlyVideo 2000S LR90" => 65,
- "T|Terratec|TValueRadio" => 66,
- "I|IODATA|GV-BCTV4/PCI" => 67,
- "3Dfx|VoodooTV FM (Euro)" => 68,
- "3Dfx|VoodooTV 200 (USA)" => 68,
- "A|Active|Imaging AIMMS" => 69,
- "P|Prolink|Pixelview PV-BT878P+ (Rev.4C)" => 70,
- "L|Lifeview|FlyVideo 98EZ (capture only) LR51" => 71,
-# "G|Genius/Kye|Video Wonder/Genius Internet Video Kit" => 71,
- "P|Prolink|Pixelview PV-BT878P+ (Rev.9B) (PlayTV Pro rev.9B FM+NICAM)" => 72,
- "T|Typhoon|TV Tuner Pal BG (blue package)" => 72,
- "S|Sensoray|311" => 73,
- "RemoteVision|MX (RV605)" => 74,
- "P|Powercolor|MTV878" => 75,
- "P|Powercolor|MTV878R" => 75,
- "P|Powercolor|MTV878F" => 75,
- "C|Canopus|WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)" => 76,
- "G|GrandTec|Multi Capture Card (Bt878)" => 77,
- "Jetway|TV/Capture JW-TV878-FBK" => 78,
- "Kworld|KW-TV878RF" => 78,
- "D|DSP Design|TCVIDEO" => 79,
- "H|Hauppauge|WinTV PVR" => 80,
- "G|GV-BCTV5/PCI" => 81,
- "O|Osprey|100/150 (878)" => 82,
- "O|Osprey|100/150 (848)" => 83,
- "O|Osprey|101 (848)" => 84,
- "O|Osprey|101/151" => 85,
- "O|Osprey|101/151 w/ svid" => 86,
- "O|Osprey|200/201/250/251" => 87,
- "O|Osprey|200/250" => 88,
- "O|Osprey|210/220" => 89,
- "O|Osprey|500" => 90,
- "O|Osprey|540" => 91,
- "O|Osprey|2000" => 92,
- "I|IDS|Eagle" => 93,
- "P|Pinnacle|PCTV Sat" => 94,
- "Formac|ProTV II (bt878)" => 95,
- "M|MachTV" => 96,
- "E|Euresys|Picolo" => 97,
- "P|ProVideo|PV150" => 98,
- "A|AD-TVK503" => 99,
- "H|Hercules|Smart TV Stereo" => 100,
- "P|Pace|TV & Radio Card" => 101,
- "I|IVC-200" => 102,
- "G|Grand X-Guard / Trust 814PCI" => 103,
- "N|Nebula Electronics|DigiTV" => 104,
- "P|ProVideo|PV143" => 105,
- "P|PHYTEC|VD-009-X1 MiniDIN (bt878)" => 106,
- "P|PHYTEC|VD-009-X1 Combi (bt878)" => 107,
- "P|PHYTEC|VD-009 MiniDIN (bt878)" => 108,
- "P|PHYTEC|VD-009 Combi (bt878)" => 109,
- "I|IVC-100" => 110,
- "I|IVC-120G" => 111,
- "P|pcHDTV HD-2000 TV" => 112,
- "T|Twinhan DST + clones" => 113,
- "L|Leadtek|Winfast VC100" => 114,
- "T|Teppro|TEV-560/InterVision IV-560" => 115,
- "S|SIMUS|GVC1100" => 116,
- "N|NGS|NGSTV+" => 117,
- "L|LMLBT4" => 118,
- "T|Tekram|M205 PRO" => 119,
- "C|Conceptronic|CONTVFMi" => 120,
-
- },
- 'saa7134' => {
- N("Unknown|Generic") => 0,
- "Proteus|Pro [philips reference design]" => 1,
- "LifeView|FlyVIDEO3000" => 2,
- "LifeView|FlyVIDEO2000" => 3,
- "EMPRESS" => 4,
- "SKNet|Monster TV" => 5,
- "Tevion|MD 9717" => 6,
- "KNC|One TV-Station RDS" => 7,
- "Terratec|Cinergy 400 TV" => 8,
- "Medion|5044" => 9,
- "Kworld/KuroutoShikou SAA7130-TVPCI" => 10,
- "Terratec|Cinergy 600 TV" => 11,
- "Medion|7134" => 12,
- "ELSA|EX-VISION 300TV" => 13,
- "ELSA|EX-VISION 500TV" => 14,
- "ASUS|TV-FM 7134" => 15,
- "AOPEN|VA1000 POWER" => 16,
- "10MOONS PCI TV CAPTURE CARD" => 17,
- "BMK|MPEX No Tuner" => 18,
- "Compro VideoMate TV" => 19,
- "Matrox|CronosPlus" => 20,
- "Medion|2819" => 21,
- "BMK|MPEX Tuner" => 22,
- "Medion|2819 / AverMedia M156" => 23,
- "AVerMedia|M156" => 23,
- "BMK|MPEX Tuner alternative" => 24,
- "ASUS|TV-FM 7133" => 25,
- "Pinnacle|PCTV Stereo (saa7134)" => 26,
- "Manli|MuchTV M-TV002" => 27,
- "Manli|MuchTV M-TV001" => 28,
- "Nagase Sangyo TransGear 3000TV" => 29,
- "Elitegroup|ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)" => 30,
- "Elitegroup|ECS TVP3XP FM1236 Tuner Card (NTSC,FM)" => 31,
- "AVACS|SmartTV" => 32,
- "AVerMedia|DVD EZMaker" => 33,
- }
-};
-
-my %pll_lst =
- (
- -1 => N("Default"),
- 0 => "do not use pll",
- 1 => "28 Mhz Crystal (X)",
- 2 => "35 Mhz Crystal"
- );
-
-sub config {
- my ($in, $modules_conf, $driver) = @_;
-
- my $min_gbuffers = 2;
- my $max_gbuffers = 32;
-
- my %conf = (gbuffers => 4, card => $default, tuner => -1, radio => 0, pll => -1);
-
- my %cards_list = %{$cards_lst->{$driver}};
- my %rvs_cards_list = reverse %cards_list;
-
- # get the existing options (if there are any)
- my $current = $modules_conf->get_options($driver);
-
- foreach (split(/\s+/,$current)) {
- $conf{$1} = $2 if /^(gbuffers|tuner|radio|pll)=(.+)/;
- $conf{$1} = $rvs_cards_list{$2} if /^(card)=(.+)/;
- }
-
- #Sanity checks on defaults
- $conf{gbuffers} = max($min_gbuffers, $conf{gbuffers});
- $conf{gbuffers} = min($max_gbuffers, $conf{gbuffers});
- $conf{card} = $default if !defined $cards_list{$conf{card}};
- $conf{tuner} = -1 if !defined $tuners_lst{$conf{tuner}};
- $conf{pll} = -1 if !defined $pll_lst{$conf{tuner}};
- $conf{radio} = 0 if $conf{radio} !~ /(0|1)/;
-
-
- if ($in->ask_from("BTTV configuration", N("For most modern TV cards, the bttv module of the GNU/Linux kernel just auto-detect the rights parameters.
-If your card is misdetected, you can force the right tuner and card types here. Just select your tv card parameters if needed."),
- [
- { label => N("Card model:"), val => \$conf{card}, list => [ keys %cards_list ], type => 'combo', default => -1, sort =>1, separator => '|' },
- { label => N("Tuner type:"), val => \$conf{tuner}, list => [keys %tuners_lst], format => sub { $tuners_lst{$_[0]} }, sort => 1, separator => '|' },
- { label => N("Number of capture buffers:"), val => \$conf{gbuffers}, min => $min_gbuffers, max => $max_gbuffers, sort => 1, default => 0, type => 'range', advanced => 1, help => N("number of capture buffers for mmap'ed capture") },
- if_($driver eq 'bttv',
- { label => N("PLL setting:"), val => \$conf{pll}, list => [keys %pll_lst], format => sub { $pll_lst{$_[0]} }, sort => 1, default => 0, advanced =>1 },
- { label => N("Radio support:"), val => \$conf{radio}, type => "bool", text => N("enable radio support") }),
- ]
- ))
- {
- $conf{card} = $cards_list{$conf{card}};
-
- my $options =
- 'radio=' . ($conf{radio} ? 1 : 0) . ' ' .
- join(' ', map { if_($conf{$_} ne -1, "$_=$conf{$_}") } qw(card pll tuner gbuffers));
- if ($options) {
- log::l(qq([harddrake::v4l] set "$options" options for $driver));
-# log::explanations("modified file /etc/modules.conf ($options)") if $::isStandalone;
- $modules_conf->set_options($driver, $options);
- }
- return 1;
- }
- return 0;
-}
-
-
-
-1;
diff --git a/perl-install/help.pm b/perl-install/help.pm
deleted file mode 100644
index 5642e2350..000000000
--- a/perl-install/help.pm
+++ /dev/null
@@ -1,870 +0,0 @@
-package help;
-use common;
-
-1;
-
-# IMPORTANT: Do not edit this File - It is automatically generated
-# from the manuals !!!
-# Write a mail to <documentation@mandriva.com> if
-# you want it changed.
-sub acceptLicense() {
- N("Before continuing, you should carefully read the terms of the license. It
-covers the entire Mandriva Linux distribution. If you agree with all the
-terms it contains, check the \"%s\" box. If not, clicking on the \"%s\"
-button will reboot your computer.", N("Accept"), N("Quit"));
-}
-sub addUser() {
- N("GNU/Linux is a multi-user system which means each user can have his or her
-own preferences, own files and so on. But unlike \"root\", who is the
-system administrator, the users you add at this point will not be authorized
-to change anything except their own files and their own configurations,
-protecting the system from unintentional or malicious changes which could
-impact on the system as a whole. You'll have to create at least one regular
-user for yourself -- this is the account which you should use for routine,
-day-to-day usage. Although it's very easy to log in as \"root\" to do
-anything and everything, it may also be very dangerous! A very simple
-mistake could mean that your system will not work any more. If you make a
-serious mistake as a regular user, the worst that can happen is that you'll
-lose some information, but you will not affect the entire system.
-
-The first field asks you for a real name. Of course, this is not mandatory
--- you can actually enter whatever you like. DrakX will use the first word
-you type in this field and copy it to the \"%s\" one, which is the name
-this user will enter to log onto the system. If you like, you may override
-the default and change the user name. The next step is to enter a password.
-From a security point of view, a non-privileged (regular) user password is
-not as crucial as the \"root\" password, but that's no reason to neglect it
-by making it blank or too simple: after all, your files could be the ones
-at risk.
-
-Once you click on \"%s\", you can add other users. Add a user for each one
-of your friends, your father, your sister, etc. Click \"%s\" when you're
-finished adding users.
-
-Clicking the \"%s\" button allows you to change the default \"shell\" for
-that user (bash by default).
-
-When you're finished adding users, you'll be asked to choose a user who
-will be automatically logged into the system when the computer boots up. If
-you're interested in that feature (and do not care much about local
-security), choose the desired user and window manager, then click on
-\"%s\". If you're not interested in this feature, uncheck the \"%s\" box.", N("User name"), N("Accept user"), N("Next"), N("Advanced"), N("Next"), N("Do you want to use this feature?"));
-}
-sub ask_mntpoint_s() {
- N("Listed here are the existing Linux partitions detected on your hard drive.
-You can keep the choices made by the wizard, since they are good for most
-common installations. If you make any changes, you must at least define a
-root partition (\"/\"). Do not choose too small a partition or you will not
-be able to install enough software. If you want to store your data on a
-separate partition, you will also need to create a \"/home\" partition
-(only possible if you have more than one Linux partition available).
-
-Each partition is listed as follows: \"Name\", \"Capacity\".
-
-\"Name\" is structured: \"hard drive type\", \"hard drive number\",
-\"partition number\" (for example, \"hda1\").
-
-\"Hard drive type\" is \"hd\" if your hard drive is an IDE hard drive and
-\"sd\" if it is a SCSI hard drive.
-
-\"Hard drive number\" is always a letter after \"hd\" or \"sd\". For IDE
-hard drives:
-
- * \"a\" means \"master hard drive on the primary IDE controller\";
-
- * \"b\" means \"slave hard drive on the primary IDE controller\";
-
- * \"c\" means \"master hard drive on the secondary IDE controller\";
-
- * \"d\" means \"slave hard drive on the secondary IDE controller\".
-
-With SCSI hard drives, an \"a\" means \"lowest SCSI ID\", a \"b\" means
-\"second lowest SCSI ID\", etc.");
-}
-sub chooseCd() {
- N("The Mandriva Linux installation is distributed on several CD-ROMs. If a
-selected package is located on another CD-ROM, DrakX will eject the current
-CD and ask you to insert the required one. If you do not have the requested
-CD at hand, just click on \"%s\", the corresponding packages will not be
-installed.", N("Cancel"));
-}
-sub choosePackages() {
- N("It's now time to specify which programs you wish to install on your system.
-There are thousands of packages available for Mandriva Linux, and to make it
-simpler to manage, they have been placed into groups of similar
-applications.
-
-Mandriva Linux sorts package groups in four categories. You can mix and
-match applications from the various categories, so a ``Workstation''
-installation can still have applications from the ``Server'' category
-installed.
-
- * \"%s\": if you plan to use your machine as a workstation, select one or
-more of the groups in the workstation category.
-
- * \"%s\": if you plan on using your machine for programming, select the
-appropriate groups from that category. The special \"LSB\" group will
-configure your system so that it complies as much as possible with the
-Linux Standard Base specifications.
-
- Selecting the \"LSB\" group will also install the \"2.4\" kernel series,
-instead of the default \"2.6\" one. This is to ensure 100%%-LSB compliance
-of the system. However, if you do not select the \"LSB\" group you will
-still have a system which is nearly 100%% LSB-compliant.
-
- * \"%s\": if your machine is intended to be a server, select which of the
-more common services you wish to install on your machine.
-
- * \"%s\": this is where you will choose your preferred graphical
-environment. At least one must be selected if you want to have a graphical
-interface available.
-
-Moving the mouse cursor over a group name will display a short explanatory
-text about that group.
-
-You can check the \"%s\" box, which is useful if you're familiar with the
-packages being offered or if you want to have total control over what will
-be installed.
-
-If you start the installation in \"%s\" mode, you can deselect all groups
-and prevent the installation of any new packages. This is useful for
-repairing or updating an existing system.
-
-If you deselect all groups when performing a regular installation (as
-opposed to an upgrade), a dialog will pop up suggesting different options
-for a minimal installation:
-
- * \"%s\": install the minimum number of packages possible to have a
-working graphical desktop.
-
- * \"%s\": installs the base system plus basic utilities and their
-documentation. This installation is suitable for setting up a server.
-
- * \"%s\": will install the absolute minimum number of packages necessary
-to get a working Linux system. With this installation you will only have a
-command-line interface. The total size of this installation is about 65
-megabytes.", N("Workstation"), N("Development"), N("Server"), N("Graphical Environment"), N("Individual package selection"), N("Upgrade"), N("With X"), N("With basic documentation"), N("Truly minimal install"));
-}
-sub choosePackagesTree() {
- N("If you choose to install packages individually, the installer will present
-a tree containing all packages classified by groups and subgroups. While
-browsing the tree, you can select entire groups, subgroups, or individual
-packages.
-
-Whenever you select a package on the tree, a description will appear on the
-right to let you know the purpose of that package.
-
-!! If a server package has been selected, either because you specifically
-chose the individual package or because it was part of a group of packages,
-you'll be asked to confirm that you really want those servers to be
-installed. By default Mandriva Linux will automatically start any installed
-services at boot time. Even if they are safe and have no known issues at
-the time the distribution was shipped, it is entirely possible that
-security holes were discovered after this version of Mandriva Linux was
-finalized. If you do not know what a particular service is supposed to do or
-why it's being installed, then click \"%s\". Clicking \"%s\" will install
-the listed services and they will be started automatically at boot time. !!
-
-The \"%s\" option is used to disable the warning dialog which appears
-whenever the installer automatically selects a package to resolve a
-dependency issue. Some packages depend on others and the installation of
-one particular package may require the installation of another package. The
-installer can determine which packages are required to satisfy a dependency
-to successfully complete the installation.
-
-The tiny floppy disk icon at the bottom of the list allows you to load a
-package list created during a previous installation. This is useful if you
-have a number of machines that you wish to configure identically. Clicking
-on this icon will ask you to insert the floppy disk created at the end of
-another installation. See the second tip of the last step on how to create
-such a floppy.", N("No"), N("Yes"), N("Automatic dependencies"));
-}
-sub configurePrinter() {
- N("\"%s\": clicking on the \"%s\" button will open the printer configuration
-wizard. Consult the corresponding chapter of the ``Starter Guide'' for more
-information on how to set up a new printer. The interface presented in our
-manual is similar to the one used during installation.", N("Printer"), N("Configure"));
-}
-sub configureServices() {
- N("This dialog is used to select which services you wish to start at boot
-time.
-
-DrakX will list all services available on the current installation. Review
-each one of them carefully and uncheck those which are not needed at boot
-time.
-
-A short explanatory text will be displayed about a service when it is
-selected. However, if you're not sure whether a service is useful or not,
-it is safer to leave the default behavior.
-
-!! At this stage, be very careful if you intend to use your machine as a
-server: you probably do not want to start any services which you do not need.
-Please remember that some services can be dangerous if they're enabled on a
-server. In general, select only those services you really need. !!");
-}
-sub configureTimezoneGMT() {
- N("GNU/Linux manages time in GMT (Greenwich Mean Time) and translates it to
-local time according to the time zone you selected. If the clock on your
-motherboard is set to local time, you may deactivate this by unselecting
-\"%s\", which will let GNU/Linux know that the system clock and the
-hardware clock are in the same time zone. This is useful when the machine
-also hosts another operating system.
-
-The \"%s\" option will automatically regulate the system clock by
-connecting to a remote time server on the Internet. For this feature to
-work, you must have a working Internet connection. We recommend that you
-choose a time server located near you. This option actually installs a time
-server which can be used by other machines on your local network as well.", N("Hardware clock set to GMT"), N("Automatic time synchronization"));
-}
-sub configureX_card_list() {
- N("Graphic Card
-
- The installer will normally automatically detect and configure the
-graphic card installed on your machine. If this is not correct, you can
-choose from this list the card you actually have installed.
-
- In the situation where different servers are available for your card,
-with or without 3D acceleration, you're asked to choose the server which
-best suits your needs.");
-}
-sub configureX_chooser() {
- N("X (for X Window System) is the heart of the GNU/Linux graphical interface
-on which all the graphical environments (KDE, GNOME, AfterStep,
-WindowMaker, etc.) bundled with Mandriva Linux rely upon.
-
-You'll see a list of different parameters to change to get an optimal
-graphical display.
-
-Graphic Card
-
- The installer will normally automatically detect and configure the
-graphic card installed on your machine. If this is not correct, you can
-choose from this list the card you actually have installed.
-
- In the situation where different servers are available for your card,
-with or without 3D acceleration, you're asked to choose the server which
-best suits your needs.
-
-
-
-Monitor
-
- Normally the installer will automatically detect and configure the
-monitor connected to your machine. If it is not correct, you can choose
-from this list the monitor which is connected to your computer.
-
-
-
-Resolution
-
- Here you can choose the resolutions and color depths available for your
-graphics hardware. Choose the one which best suits your needs (you will be
-able to make changes after the installation). A sample of the chosen
-configuration is shown in the monitor picture.
-
-
-
-Test
-
- Depending on your hardware, this entry might not appear.
-
- The system will try to open a graphical screen at the desired
-resolution. If you see the test message during the test and answer \"%s\",
-then DrakX will proceed to the next step. If you do not see it, then it
-means that some part of the auto-detected configuration was incorrect and
-the test will automatically end after 12 seconds and return you to the
-menu. Change settings until you get a correct graphical display.
-
-
-
-Options
-
- This steps allows you to choose whether you want your machine to
-automatically switch to a graphical interface at boot. Obviously, you may
-want to check \"%s\" if your machine is to act as a server, or if you were
-not successful in getting the display configured.", N("Yes"), N("No"));
-}
-sub configureX_monitor() {
- N("Monitor
-
- Normally the installer will automatically detect and configure the
-monitor connected to your machine. If it is not correct, you can choose
-from this list the monitor which is connected to your computer.");
-}
-sub configureX_resolution() {
- N("Resolution
-
- Here you can choose the resolutions and color depths available for your
-graphics hardware. Choose the one which best suits your needs (you will be
-able to make changes after the installation). A sample of the chosen
-configuration is shown in the monitor picture.");
-}
-sub configureX_xfree_and_glx() {
- N("In the situation where different servers are available for your card, with
-or without 3D acceleration, you're asked to choose the server which best
-suits your needs.");
-}
-sub configureXxdm() {
- N("Options
-
- This steps allows you to choose whether you want your machine to
-automatically switch to a graphical interface at boot. Obviously, you may
-want to check \"%s\" if your machine is to act as a server, or if you were
-not successful in getting the display configured.", N("No"));
-}
-sub doPartitionDisks() {
- N("You now need to decide where you want to install the Mandriva Linux
-operating system on your hard drive. If your hard drive is empty or if an
-existing operating system is using all the available space you will have to
-partition the drive. Basically, partitioning a hard drive means to
-logically divide it to create the space needed to install your new
-Mandriva Linux system.
-
-Because the process of partitioning a hard drive is usually irreversible
-and can lead to data losses, partitioning can be intimidating and stressful
-for the inexperienced user. Fortunately, DrakX includes a wizard which
-simplifies this process. Before continuing with this step, read through the
-rest of this section and above all, take your time.
-
-Depending on the configuration of your hard drive, several options are
-available:
-
- * \"%s\". This option will perform an automatic partitioning of your blank
-drive(s). If you use this option there will be no further prompts.
-
- * \"%s\". The wizard has detected one or more existing Linux partitions on
-your hard drive. If you want to use them, choose this option. You will then
-be asked to choose the mount points associated with each of the partitions.
-The legacy mount points are selected by default, and for the most part it's
-a good idea to keep them.
-
- * \"%s\". If Microsoft Windows is installed on your hard drive and takes
-all the space available on it, you will have to create free space for
-GNU/Linux. To do so, you can delete your Microsoft Windows partition and
-data (see ``Erase entire disk'' solution) or resize your Microsoft Windows
-FAT or NTFS partition. Resizing can be performed without the loss of any
-data, provided you've previously defragmented the Windows partition.
-Backing up your data is strongly recommended. Using this option is
-recommended if you want to use both Mandriva Linux and Microsoft Windows on
-the same computer.
-
- Before choosing this option, please understand that after this
-procedure, the size of your Microsoft Windows partition will be smaller
-than when you started. You'll have less free space under Microsoft Windows
-to store your data or to install new software.
-
- * \"%s\". If you want to delete all data and all partitions present on
-your hard drive and replace them with your new Mandriva Linux system, choose
-this option. Be careful, because you will not be able to undo this operation
-after you confirm.
-
- !! If you choose this option, all data on your disk will be deleted. !!
-
- * \"%s\". This option appears when the hard drive is entirely taken by
-Microsoft Windows. Choosing this option will simply erase everything on the
-drive and begin fresh, partitioning everything from scratch.
-
- !! If you choose this option, all data on your disk will be lost. !!
-
- * \"%s\". Choose this option if you want to manually partition your hard
-drive. Be careful -- it is a powerful but dangerous choice and you can very
-easily lose all your data. That's why this option is really only
-recommended if you have done something like this before and have some
-experience. For more instructions on how to use the DiskDrake utility,
-refer to the ``Managing Your Partitions'' section in the ``Starter Guide''.", N("Use free space"), N("Use existing partition"), N("Use the free space on the Windows partition"), N("Erase entire disk"), N("Remove Windows"), N("Custom disk partitioning"));
-}
-sub exitInstall() {
- N("There you are. Installation is now complete and your GNU/Linux system is
-ready to be used. Just click on \"%s\" to reboot the system. Do not forget
-to remove the installation media (CD-ROM or floppy). The first thing you
-should see after your computer has finished doing its hardware tests is the
-boot-loader menu, giving you the choice of which operating system to start.
-
-The \"%s\" button shows two more buttons to:
-
- * \"%s\": enables you to create an installation floppy disk which will
-automatically perform a whole installation without the help of an operator,
-similar to the installation you've just configured.
-
- Note that two different options are available after clicking on that
-button:
-
- * \"%s\". This is a partially automated installation. The partitioning
-step is the only interactive procedure.
-
- * \"%s\". Fully automated installation: the hard disk is completely
-rewritten, all data is lost.
-
- This feature is very handy when installing on a number of similar
-machines. See the Auto install section on our web site for more
-information.
-
- * \"%s\"(*): saves a list of the packages selected in this installation.
-To use this selection with another installation, insert the floppy and
-start the installation. At the prompt, press the [F1] key, type >>linux
-defcfg=\"floppy\"<< and press the [Enter] key.
-
-(*) You need a FAT-formatted floppy. To create one under GNU/Linux, type
-\"mformat a:\", or \"fdformat /dev/fd0\" followed by \"mkfs.vfat
-/dev/fd0\".", N("Reboot"), N("Advanced"), N("Generate auto-install floppy"), N("Replay"), N("Automated"), N("Save packages selection"));
-}
-sub formatPartitions() {
- N("If you chose to reuse some legacy GNU/Linux partitions, you may wish to
-reformat some of them and erase any data they contain. To do so, please
-select those partitions as well.
-
-Please note that it's not necessary to reformat all pre-existing
-partitions. You must reformat the partitions containing the operating
-system (such as \"/\", \"/usr\" or \"/var\") but you do not have to reformat
-partitions containing data that you wish to keep (typically \"/home\").
-
-Please be careful when selecting partitions. After the formatting is
-completed, all data on the selected partitions will be deleted and you
-will not be able to recover it.
-
-Click on \"%s\" when you're ready to format the partitions.
-
-Click on \"%s\" if you want to choose another partition for your new
-Mandriva Linux operating system installation.
-
-Click on \"%s\" if you wish to select partitions which will be checked for
-bad blocks on the disk.", N("Next"), N("Previous"), N("Advanced"));
-}
-sub installUpdates() {
- N("By the time you install Mandriva Linux, it's likely that some packages will
-have been updated since the initial release. Bugs may have been fixed,
-security issues resolved. To allow you to benefit from these updates,
-you're now able to download them from the Internet. Check \"%s\" if you
-have a working Internet connection, or \"%s\" if you prefer to install
-updated packages later.
-
-Choosing \"%s\" will display a list of web locations from which updates can
-be retrieved. You should choose one near to you. A package-selection tree
-will appear: review the selection, and press \"%s\" to retrieve and install
-the selected package(s), or \"%s\" to abort.", N("Yes"), N("No"), N("Yes"), N("Install"), N("Cancel"));
-}
-sub miscellaneous() {
- N("At this point, DrakX will allow you to choose the security level you desire
-for your machine. As a rule of thumb, the security level should be set
-higher if the machine is to contain crucial data, or if it's to be directly
-exposed to the Internet. The trade-off that a higher security level is
-generally obtained at the expense of ease of use.
-
-If you do not know what to choose, keep the default option. You'll be able
-to change it later with the draksec tool, which is part of Mandriva Linux
-Control Center.
-
-Fill the \"%s\" field with the e-mail address of the person responsible for
-security. Security messages will be sent to that address.", N("Security Administrator"));
-}
-sub partition_with_diskdrake() {
- N("At this point, you need to choose which partition(s) will be used for the
-installation of your Mandriva Linux system. If partitions have already been
-defined, either from a previous installation of GNU/Linux or by another
-partitioning tool, you can use existing partitions. Otherwise, hard drive
-partitions must be defined.
-
-To create partitions, you must first select a hard drive. You can select
-the disk for partitioning by clicking on ``hda'' for the first IDE drive,
-``hdb'' for the second, ``sda'' for the first SCSI drive and so on.
-
-To partition the selected hard drive, you can use these options:
-
- * \"%s\": this option deletes all partitions on the selected hard drive
-
- * \"%s\": this option enables you to automatically create ext3 and swap
-partitions in the free space of your hard drive
-
-\"%s\": gives access to additional features:
-
- * \"%s\": saves the partition table to a floppy. Useful for later
-partition-table recovery if necessary. It is strongly recommended that you
-perform this step.
-
- * \"%s\": allows you to restore a previously saved partition table from a
-floppy disk.
-
- * \"%s\": if your partition table is damaged, you can try to recover it
-using this option. Please be careful and remember that it does not always
-work.
-
- * \"%s\": discards all changes and reloads the partition table that was
-originally on the hard drive.
-
- * \"%s\": un-checking this option will force users to manually mount and
-unmount removable media such as floppies and CD-ROMs.
-
- * \"%s\": use this option if you wish to use a wizard to partition your
-hard drive. This is recommended if you do not have a good understanding of
-partitioning.
-
- * \"%s\": use this option to cancel your changes.
-
- * \"%s\": allows additional actions on partitions (type, options, format)
-and gives more information about the hard drive.
-
- * \"%s\": when you are finished partitioning your hard drive, this will
-save your changes back to disk.
-
-When defining the size of a partition, you can finely set the partition
-size by using the Arrow keys of your keyboard.
-
-Note: you can reach any option using the keyboard. Navigate through the
-partitions using [Tab] and the [Up/Down] arrows.
-
-When a partition is selected, you can use:
-
- * Ctrl-c to create a new partition (when an empty partition is selected)
-
- * Ctrl-d to delete a partition
-
- * Ctrl-m to set the mount point
-
-To get information about the different file system types available, please
-read the ext2FS chapter from the ``Reference Manual''.
-
-If you are installing on a PPC machine, you will want to create a small HFS
-``bootstrap'' partition of at least 1MB which will be used by the yaboot
-bootloader. If you opt to make the partition a bit larger, say 50MB, you
-may find it a useful place to store a spare kernel and ramdisk images for
-emergency boot situations.", N("Clear all"), N("Auto allocate"), N("More"), N("Save partition table"), N("Restore partition table"), N("Rescue partition table"), N("Reload partition table"), N("Removable media auto-mounting"), N("Wizard"), N("Undo"), N("Toggle between normal/expert mode"), N("Done"));
-}
-sub resizeFATChoose() {
- N("More than one Microsoft partition has been detected on your hard drive.
-Please choose the one which you want to resize in order to install your new
-Mandriva Linux operating system.
-
-Each partition is listed as follows: \"Linux name\", \"Windows name\"
-\"Capacity\".
-
-\"Linux name\" is structured: \"hard drive type\", \"hard drive number\",
-\"partition number\" (for example, \"hda1\").
-
-\"Hard drive type\" is \"hd\" if your hard dive is an IDE hard drive and
-\"sd\" if it is a SCSI hard drive.
-
-\"Hard drive number\" is always a letter after \"hd\" or \"sd\". With IDE
-hard drives:
-
- * \"a\" means \"master hard drive on the primary IDE controller\";
-
- * \"b\" means \"slave hard drive on the primary IDE controller\";
-
- * \"c\" means \"master hard drive on the secondary IDE controller\";
-
- * \"d\" means \"slave hard drive on the secondary IDE controller\".
-
-With SCSI hard drives, an \"a\" means \"lowest SCSI ID\", a \"b\" means
-\"second lowest SCSI ID\", etc.
-
-\"Windows name\" is the letter of your hard drive under Windows (the first
-disk or partition is called \"C:\").");
-}
-sub selectCountry() {
- N("\"%s\": check the current country selection. If you're not in this country,
-click on the \"%s\" button and choose another. If your country is not in the
-list shown, click on the \"%s\" button to get the complete country list.", N("Country / Region"), N("Configure"), N("More"));
-}
-sub selectInstallClass() {
- N("This step is activated only if an existing GNU/Linux partition has been
-found on your machine.
-
-DrakX now needs to know if you want to perform a new installation or an
-upgrade of an existing Mandriva Linux system:
-
- * \"%s\". For the most part, this completely wipes out the old system.
-However, depending on your partitioning scheme, you can prevent some of
-your existing data (notably \"home\" directories) from being over-written.
-If you wish to change how your hard drives are partitioned, or to change
-the file system, you should use this option.
-
- * \"%s\". This installation class allows you to update the packages
-currently installed on your Mandriva Linux system. Your current partitioning
-scheme and user data will not be altered. Most of the other configuration
-steps remain available and are similar to a standard installation.
-
-Using the ``Upgrade'' option should work fine on Mandriva Linux systems
-running version \"8.1\" or later. Performing an upgrade on versions prior
-to Mandriva Linux version \"8.1\" is not recommended.", N("Install"), N("Upgrade"));
-}
-sub selectKeyboard() {
- N("Depending on the language you chose (), DrakX will automatically select a
-particular type of keyboard configuration. Check that the selection suits
-you or choose another keyboard layout.
-
-Also, you may not have a keyboard which corresponds exactly to your
-language: for example, if you are an English-speaking Swiss native, you may
-have a Swiss keyboard. Or if you speak English and are located in Quebec,
-you may find yourself in the same situation where your native language and
-country-set keyboard do not match. In either case, this installation step
-will allow you to select an appropriate keyboard from a list.
-
-Click on the \"%s\" button to be shown a list of supported keyboards.
-
-If you choose a keyboard layout based on a non-Latin alphabet, the next
-dialog will allow you to choose the key binding which will switch the
-keyboard between the Latin and non-Latin layouts.", N("More"));
-}
-sub selectLanguage() {
- N("The first step is to choose your preferred language.
-
-Your choice of preferred language will affect the installer, the
-documentation, and the system in general. First select the region you're
-located in, then the language you speak.
-
-Clicking on the \"%s\" button will allow you to select other languages to
-be installed on your workstation, thereby installing the language-specific
-files for system documentation and applications. For example, if Spanish
-users are to use your machine, select English as the default language in
-the tree view and \"%s\" in the Advanced section.
-
-About UTF-8 (unicode) support: Unicode is a new character encoding meant to
-cover all existing languages. However full support for it in GNU/Linux is
-still under development. For that reason, Mandriva Linux's use of UTF-8 will
-depend on the user's choices:
-
- * If you choose a language with a strong legacy encoding (latin1
-languages, Russian, Japanese, Chinese, Korean, Thai, Greek, Turkish, most
-iso-8859-2 languages), the legacy encoding will be used by default;
-
- * Other languages will use unicode by default;
-
- * If two or more languages are required, and those languages are not using
-the same encoding, then unicode will be used for the whole system;
-
- * Finally, unicode can also be forced for use throughout the system at a
-user's request by selecting the \"%s\" option independently of which
-languages were been chosen.
-
-Note that you're not limited to choosing a single additional language. You
-may choose several, or even install them all by selecting the \"%s\" box.
-Selecting support for a language means translations, fonts, spell checkers,
-etc. will also be installed for that language.
-
-To switch between the various languages installed on your system, you can
-launch the \"localedrake\" command as \"root\" to change the language used
-by the entire system. Running the command as a regular user will only
-change the language settings for that particular user.", N("Advanced"), N("Espanol"), N("Use Unicode by default"), N("All languages"));
-}
-sub selectMouse() {
- N("Usually, DrakX has no problems detecting the number of buttons on your
-mouse. If it does, it assumes you have a two-button mouse and will
-configure it for third-button emulation. The third-button mouse button of a
-two-button mouse can be obtained by simultaneously clicking the left and
-right mouse buttons. DrakX will automatically know whether your mouse uses
-a PS/2, serial or USB interface.
-
-If you have a 3-button mouse without a wheel, you can choose a \"%s\"
-mouse. DrakX will then configure your mouse so that you can simulate the
-wheel with it: to do so, press the middle button and move your mouse
-pointer up and down.
-
-If for some reason you wish to specify a different type of mouse, select it
-from the list provided.
-
-You can select the \"%s\" entry to chose a ``generic'' mouse type which
-will work with nearly all mice.
-
-If you choose a mouse other than the default one, a test screen will be
-displayed. Use the buttons and wheel to verify that the settings are
-correct and that the mouse is working correctly. If the mouse is not
-working well, press the space bar or [Return] key to cancel the test and
-you will be returned to the mouse list.
-
-Occasionally wheel mice are not detected automatically, so you will need to
-select your mouse from a list. Be sure to select the one corresponding to
-the port that your mouse is attached to. After selecting a mouse and
-pressing the \"%s\" button, a mouse image will be displayed on-screen.
-Scroll the mouse wheel to ensure that it is activating correctly. As you
-scroll your mouse wheel, you will see the on-screen scroll wheel moving.
-Test the buttons and check that the mouse pointer moves on-screen as you
-move your mouse about.", N("with Wheel emulation"), N("Universal | Any PS/2 & USB mice"), N("Next"));
-}
-sub selectSerialPort() {
- N("Please select the correct port. For example, the \"COM1\" port under
-Windows is named \"ttyS0\" under GNU/Linux.");
-}
-sub setRootPassword() {
- N("This is the most crucial decision point for the security of your GNU/Linux
-system: you must enter the \"root\" password. \"Root\" is the system
-administrator and is the only user authorized to make updates, add users,
-change the overall system configuration, and so on. In short, \"root\" can
-do everything! That's why you must choose a password which is difficult to
-guess: DrakX will tell you if the password you chose is too simple. As you
-can see, you're not forced to enter a password, but we strongly advise
-against this. GNU/Linux is just as prone to operator error as any other
-operating system. Since \"root\" can overcome all limitations and
-unintentionally erase all data on partitions by carelessly accessing the
-partitions themselves, it is important that it be difficult to become
-\"root\".
-
-The password should be a mixture of alphanumeric characters and at least 8
-characters long. Never write down the \"root\" password -- it makes it far
-too easy to compromise your system.
-
-One caveat: do not make the password too long or too complicated because you
-must be able to remember it!
-
-The password will not be displayed on screen as you type it. To reduce the
-chance of a blind typing error you'll need to enter the password twice. If
-you do happen to make the same typing error twice, you'll have to use this
-``incorrect'' password the first time you'll try to connect as \"root\".
-
-If you want an authentication server to control access to your computer,
-click on the \"%s\" button.
-
-If your network uses either LDAP, NIS, or PDC Windows Domain authentication
-services, select the appropriate one for \"%s\". If you do not know which
-one to use, you should ask your network administrator.
-
-If you happen to have problems with remembering passwords, or if your
-computer will never be connected to the Internet and you absolutely trust
-everybody who uses your computer, you can choose to have \"%s\".", N("Advanced"), N("authentication"), N("No password"));
-}
-sub setupBootloaderBeginner() {
- N("A boot loader is a little program which is started by the computer at boot
-time. It's responsible for starting up the whole system. Normally, the boot
-loader installation is totally automated. DrakX will analyze the disk boot
-sector and act according to what it finds there:
-
- * if a Windows boot sector is found, it will replace it with a GRUB/LILO
-boot sector. This way you'll be able to load either GNU/Linux or any other
-OS installed on your machine.
-
- * if a GRUB or LILO boot sector is found, it'll replace it with a new one.
-
-If DrakX can not determine where to place the boot sector, it'll ask you
-where it should place it. Generally, the \"%s\" is the safest place.
-Choosing \"%s\" will not install any boot loader. Use this option only if you
-know what you're doing.", N("First sector of drive (MBR)"), N("Skip"));
-}
-sub setupDefaultSpooler() {
- N("Now, it's time to select a printing system for your computer. Other
-operating systems may offer you one, but Mandriva Linux offers two. Each of
-the printing systems is best suited to particular types of configuration.
-
- * \"%s\" -- which is an acronym for ``print, do not queue'', is the choice
-if you have a direct connection to your printer, you want to be able to
-panic out of printer jams, and you do not have networked printers. (\"%s\"
-will handle only very simple network cases and is somewhat slow when used
-within networks.) It's recommended that you use \"pdq\" if this is your
-first experience with GNU/Linux.
-
- * \"%s\" stands for `` Common Unix Printing System'' and is an excellent
-choice for printing to your local printer or to one halfway around the
-planet. It's simple to configure and can act as a server or a client for
-the ancient \"lpd\" printing system, so it's compatible with older
-operating systems which may still need print services. While quite
-powerful, the basic setup is almost as easy as \"pdq\". If you need to
-emulate a \"lpd\" server, make sure you turn on the \"cups-lpd\" daemon.
-\"%s\" includes graphical front-ends for printing or choosing printer
-options and for managing the printer.
-
-If you make a choice now, and later find that you do not like your printing
-system you may change it by running PrinterDrake from the Mandriva Linux
-Control Center and clicking on the \"%s\" button.", N("pdq"), N("pdq"), N("CUPS"), N("CUPS"), N("Expert"));
-}
-sub setupSCSI() {
- N("DrakX will first detect any IDE devices present in your computer. It will
-also scan for one or more PCI SCSI cards on your system. If a SCSI card is
-found, DrakX will automatically install the appropriate driver.
-
-Because hardware detection is not foolproof, DrakX may fail in detecting
-your hard drives. If so, you'll have to specify your hardware by hand.
-
-If you had to manually specify your PCI SCSI adapter, DrakX will ask if you
-want to configure options for it. You should allow DrakX to probe the
-hardware for the card-specific options which are needed to initialize the
-adapter. Most of the time, DrakX will get through this step without any
-issues.
-
-If DrakX is not able to probe for the options to automatically determine
-which parameters need to be passed to the hardware, you'll need to manually
-configure the driver.");
-}
-sub sound_config() {
- N("\"%s\": if a sound card is detected on your system, it'll be displayed
-here. If you notice the sound card is not the one actually present on your
-system, you can click on the button and choose a different driver.", N("Sound card"));
-}
-sub summary() {
- N("As a review, DrakX will present a summary of information it has gathered
-about your system. Depending on the hardware installed on your machine, you
-may have some or all of the following entries. Each entry is made up of the
-hardware item to be configured, followed by a quick summary of the current
-configuration. Click on the corresponding \"%s\" button to make the change.
-
- * \"%s\": check the current keyboard map configuration and change it if
-necessary.
-
- * \"%s\": check the current country selection. If you're not in this
-country, click on the \"%s\" button and choose another. If your country
-is not in the list shown, click on the \"%s\" button to get the complete
-country list.
-
- * \"%s\": by default, DrakX deduces your time zone based on the country
-you have chosen. You can click on the \"%s\" button here if this is not
-correct.
-
- * \"%s\": verify the current mouse configuration and click on the button
-to change it if necessary.
-
- * \"%s\": clicking on the \"%s\" button will open the printer
-configuration wizard. Consult the corresponding chapter of the ``Starter
-Guide'' for more information on how to set up a new printer. The interface
-presented in our manual is similar to the one used during installation.
-
- * \"%s\": if a sound card is detected on your system, it'll be displayed
-here. If you notice the sound card is not the one actually present on your
-system, you can click on the button and choose a different driver.
-
- * \"%s\": if you have a TV card, this is where information about its
-configuration will be displayed. If you have a TV card and it is not
-detected, click on \"%s\" to try to configure it manually.
-
- * \"%s\": you can click on \"%s\" to change the parameters associated with
-the card if you feel the configuration is wrong.
-
- * \"%s\": by default, DrakX configures your graphical interface in
-\"800x600\" or \"1024x768\" resolution. If that does not suit you, click on
-\"%s\" to reconfigure your graphical interface.
-
- * \"%s\": if you wish to configure your Internet or local network access,
-you can do so now. Refer to the printed documentation or use the
-Mandriva Linux Control Center after the installation has finished to benefit
-from full in-line help.
-
- * \"%s\": allows to configure HTTP and FTP proxy addresses if the machine
-you're installing on is to be located behind a proxy server.
-
- * \"%s\": this entry allows you to redefine the security level as set in a
-previous step ().
-
- * \"%s\": if you plan to connect your machine to the Internet, it's a good
-idea to protect yourself from intrusions by setting up a firewall. Consult
-the corresponding section of the ``Starter Guide'' for details about
-firewall settings.
-
- * \"%s\": if you wish to change your bootloader configuration, click this
-button. This should be reserved to advanced users. Refer to the printed
-documentation or the in-line help about bootloader configuration in the
-Mandriva Linux Control Center.
-
- * \"%s\": through this entry you can fine tune which services will be run
-on your machine. If you plan to use this machine as a server it's a good
-idea to review this setup.", N("Configure"), N("Keyboard"), N("Country / Region"), N("Configure"), N("More"), N("Timezone"), N("Configure"), N("Mouse"), N("Printer"), N("Configure"), N("Sound card"), N("TV card"), N("Configure"), N("ISDN card"), N("Configure"), N("Graphical Interface"), N("Configure"), N("Network"), N("Proxies"), N("Security Level"), N("Firewall"), N("Bootloader"), N("Services"));
-}
-sub takeOverHdChoose() {
- N("Choose the hard drive you want to erase in order to install your new
-Mandriva Linux partition. Be careful, all data on this drive will be lost
-and will not be recoverable!");
-}
-sub takeOverHdConfirm() {
- N("Click on \"%s\" if you want to delete all data and partitions present on
-this hard drive. Be careful, after clicking on \"%s\", you will not be able
-to recover any data and partitions present on this hard drive, including
-any Windows data.
-
-Click on \"%s\" to quit this operation without losing data and partitions
-present on this hard drive.", N("Next ->"), N("Next ->"), N("<- Previous"));
-}
diff --git a/perl-install/http.pm b/perl-install/http.pm
deleted file mode 100644
index dec3773a8..000000000
--- a/perl-install/http.pm
+++ /dev/null
@@ -1,50 +0,0 @@
-package http; # $Id$
-
-use IO::Socket;
-use network::network;
-
-my $sock;
-
-sub getFile {
- local ($^W) = 0;
-
- my ($url) = @_;
- $sock->close if $sock;
- $url =~ m|/XXX$| and return; #- force closing connection.
-
- # can be used for ftp urls (with http proxy)
- my ($host, $port, $path) = $url =~ m,^(?:http|ftp)://([^/:]+)(?::(\d+))?(/\S*)?$,;
- defined $host or return undef;
-
- my $use_http_proxy = $ENV{PROXY} && $ENV{PROXYPORT};
-
- $sock = IO::Socket::INET->new(PeerAddr => $use_http_proxy ? $ENV{PROXY} : $host,
- PeerPort => $use_http_proxy ? $ENV{PROXYPORT} : $port || 80,
- Proto => 'tcp',
- Timeout => 60) or die "can not connect $@";
- $sock->autoflush;
- print $sock join("\015\012" =>
- "GET " . ($use_http_proxy ? $url : $path) . " HTTP/1.0",
- "Host: $host" . ($port && ":$port"),
- "User-Agent: DrakX/vivelinuxabaszindozs",
- "", "");
-
- #- skip until empty line
- my $now = 0;
- my ($last, $buf, $tmp);
- my $read = sub { sysread($sock, $buf, 1) or die ''; $tmp .= $buf };
- do {
- $last = $now;
- &$read; &$read if $buf =~ /\015/;
- $now = $buf =~ /\012/;
- } until $now && $last;
-
- if ($tmp =~ /^(.*\b(\d+)\b.*)/ && $2 == 200) {
- $sock;
- } else {
- log::l("HTTP error: $1");
- undef;
- }
-}
-
-1;
diff --git a/perl-install/install2 b/perl-install/install2
deleted file mode 100755
index bcea68225..000000000
--- a/perl-install/install2
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-#- PERL_INSTALL_TEST is used to launch stage2 in debug mode
-
-#- Mandrake Graphic Install $Id$
-#- Copyright (C) 1999/2000 Mandrakesoft (pixel@mandrakesoft.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 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-use diagnostics;
-use strict;
-
-BEGIN {
- #- for testing purpose
- (my $f = __FILE__) =~ s|install2$|list_modules.pm|;
- -e $f or symlink '../kernel/list_modules.pm', $f;
-}
-
-use lib qw(/usr/bin/perl-install .);
-use install2;
-
-$::testing = $ENV{PERL_INSTALL_TEST};
-$::isStandalone = 0;
-
-install2::main(@ARGV);
-
-c::_exit(0);
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
deleted file mode 100644
index 3bcde1464..000000000
--- a/perl-install/install2.pm
+++ /dev/null
@@ -1,679 +0,0 @@
-package install2; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw($o $version);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use steps;
-use common;
-use install_any qw(:all);
-use install_steps;
-use install_any;
-use lang;
-use keyboard;
-use mouse;
-use devices;
-use partition_table;
-use modules;
-use detect_devices;
-use run_program;
-use any;
-use log;
-use fs;
-
-
-#-#######################################################################################
-#-$O
-#-the big struct which contain, well everything (globals + the interactive methods ...)
-#-if you want to do a kickstart file, you just have to add all the required fields (see for example
-#-the variable $default)
-#-#######################################################################################
-$o = $::o = {
-# bootloader => { linear => 0, message => 1, timeout => 5, restricted => 0 },
-#- packages => [ qw() ],
- partitioning => { clearall => 0, eraseBadPartitions => 0, auto_allocate => 0 }, #-, readonly => 0 },
- authentication => { md5 => 1, shadow => 1 },
- locale => { lang => 'en_US' },
-#- isUpgrade => 0,
- toRemove => [],
- toSave => [],
-#- simple_themes => 1,
-
- timezone => {
-#- timezone => "Europe/Paris",
-#- UTC => 1,
- },
-#- superuser => { password => 'a', shell => '/bin/bash', realname => 'God' },
-#- user => { name => 'foo', password => 'bar', home => '/home/foo', shell => '/bin/bash', realname => 'really, it is foo' },
-
-#- keyboard => 'de',
-#- display => "192.168.1.19:1",
- steps => \%steps::installSteps,
- orderedSteps => \@steps::orderedInstallSteps,
-
-#- for the list of fields available for user and superuser, see @etc_pass_fields in install_steps.pm
-#- intf => { eth0 => { DEVICE => "eth0", IPADDR => '1.2.3.4', NETMASK => '255.255.255.128' } },
-
- netc => {},
- intf => {},
-
-#-step : the current one
-#-prefix
-#-mouse
-#-keyboard
-#-netc
-#-methods
-#-packages compss
-#-printer haveone entry(cf printer.pm)
-
-};
-
-
-sub installStepsCall {
- my ($o, $auto, $fun, @args) = @_;
- $fun = "install_steps::$fun" if $auto;
- $o->$fun(@args);
-}
-
-#-######################################################################################
-#- Steps Functions
-#- each step function are called with two arguments : clicked(because if you are a
-#- beginner you can force the the step) and the entered number
-#-######################################################################################
-
-#------------------------------------------------------------------------------
-sub selectLanguage {
- my ($_clicked, $ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'selectLanguage', $ent_number == 1);
-}
-
-sub acceptLicense {
- my ($_clicked, $_ent_number, $auto) = @_;
- installStepsCall($o, $auto, 'acceptLicense');
-}
-
-#------------------------------------------------------------------------------
-sub selectMouse {
- my ($clicked, $ent_number, $auto) = @_;
-
- require pkgs;
- my $first_time = $ent_number == 1;
-
- installStepsCall($o, $auto, 'selectMouse', !$first_time || $clicked);
-
- addToBeDone { mouse::write($o->do_pkgs, $o->{mouse}) if !$o->{isUpgrade} || $clicked } 'installPackages';
-}
-
-#------------------------------------------------------------------------------
-sub setupSCSI {
- my ($clicked, $_ent_number, $auto) = @_;
-
- if (!$::testing && !$::uml_install) {
- -d '/lib/modules/' . c::kernel_version() ||
- -s modules::cz_file() or die N("Can not access kernel modules corresponding to your kernel (file %s is missing), this generally means your boot floppy in not in sync with the Installation medium (please create a newer boot floppy)", modules::cz_file());
- }
-
- installStepsCall($o, $auto, 'setupSCSI', $clicked);
-}
-
-#------------------------------------------------------------------------------
-sub selectKeyboard {
- my ($clicked, $_ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'selectKeyboard', $clicked);
-
- #- read keyboard ASAP (so that summary displays ok)
- addToBeDone {
- $o->{keyboard}{unsafe} or return;
- if (my $keyboard = keyboard::read()) {
- $o->{keyboard} = $keyboard;
- }
- } 'formatPartitions';
-}
-
-#------------------------------------------------------------------------------
-sub selectInstallClass {
- my ($clicked, $_ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'selectInstallClass', $clicked);
-
- if ($o->{isUpgrade}) {
- @{$o->{orderedSteps}} = uniq(map {
- $_ eq 'selectInstallClass' ? ($_, 'doPartitionDisks', 'formatPartitions') : $_;
- } @{$o->{orderedSteps}});
- }
-}
-
-#------------------------------------------------------------------------------
-sub doPartitionDisks {
- my ($_clicked, $_ent_number, $auto) = @_;
- $o->{steps}{formatPartitions}{done} = 0;
- installStepsCall($o, $auto, 'doPartitionDisksBefore');
- installStepsCall($o, $auto, 'doPartitionDisks');
- installStepsCall($o, $auto, 'doPartitionDisksAfter');
-}
-
-sub formatPartitions {
- my ($_clicked, $_ent_number, $auto) = @_;
-
- $o->{steps}{choosePackages}{done} = 0;
- installStepsCall($o, $auto, 'choosePartitionsToFormat', $o->{fstab}) if !$o->{isUpgrade};
- my $want_root_formated = fs::get::root($o->{fstab})->{toFormat};
- if ($want_root_formated) {
- foreach ('/usr') {
- my $part = fs::get::mntpoint2part($_, $o->{fstab}) or next;
- $part->{toFormat} or die N("You must also format %s", $_);
- }
- }
- installStepsCall($o, $auto, 'formatMountPartitions', $o->{fstab}) if !$::testing;
-
- if ($want_root_formated) {
- #- we formatted /, ensure /var/lib/rpm is cleaned otherwise bad things can happen
- #- (especially when /var is *not* formatted)
- eval { rm_rf("$o->{prefix}/var/lib/rpm") };
- }
-
- mkdir "$o->{prefix}/$_", 0755 foreach
- qw(dev etc etc/profile.d etc/rpm etc/sysconfig etc/sysconfig/console
- etc/sysconfig/network-scripts etc/sysconfig/console/consolefonts
- etc/sysconfig/console/consoletrans
- home mnt tmp var var/tmp var/lib var/lib/rpm var/lib/urpmi);
- mkdir "$o->{prefix}/$_", 0700 foreach qw(root root/tmp root/drakx);
-
- devices::make("$o->{prefix}/dev/null");
- chmod 0666, "$o->{prefix}/dev/null";
-
- eval { fs::mount('none', "$o->{prefix}/proc", 'proc') };
- eval { fs::mount('none', "$o->{prefix}/sys", 'sysfs') };
- eval { fs::mount_usbfs($o->{prefix}) };
-
- install_any::screenshot_dir__and_move();
- install_any::move_clp_to_disk();
-
- any::rotate_logs($o->{prefix});
-
- if (any { $_->{usb_media_type} && any { $_->{mntpoint} } partition_table::get_normal_parts($_) } @{$o->{all_hds}{hds}}) {
- log::l("we use a usb-storage based drive, so keep it as a normal scsi_hostadapter");
- } else {
- log::l("we do not need usb-storage for booting system, rely on hotplug");
- #- when usb-storage is in scsi_hostadapter,
- #- hotplug + scsimon do not load sd_mod/sr_mod when needed
- #- (eg: when plugging a usb key)
- $o->{modules_conf}->remove_probeall('scsi_hostadapter', 'usb-storage');
- }
-
- require raid;
- raid::prepare_prefixed($o->{all_hds}{raids});
-
- #- needed by lilo
- if (my @vgs = map { $_->{VG_name} } @{$o->{all_hds}{lvms}}) {
- cp_af("/dev/$_", "$::prefix/dev") foreach 'mapper', @vgs;
- }
-}
-
-#------------------------------------------------------------------------------
-sub choosePackages {
- my ($_clicked, $ent_number, $auto) = @_;
- require pkgs;
-
- #- always setPackages as it may have to copy hdlist and synthesis files.
- installStepsCall($o, $auto, 'setPackages', $o->{isUpgrade} && $ent_number == 1);
- installStepsCall($o, $auto, 'choosePackages', $o->{packages}, $o->{compssUsers}, $ent_number == 1);
- my @flags = map_each { if_($::b, $::a) } %{$o->{rpmsrate_flags_chosen}};
- log::l("rpmsrate_flags_chosen's: ", join(' ', sort @flags));
-
- #- check pre-condition that basesystem package must be selected.
- pkgs::packageByName($o->{packages}, 'basesystem')->flag_available or die "basesystem package not selected";
-
- #- check if there are packages that need installation.
- $o->{steps}{installPackages}{done} = 0 if $o->{steps}{installPackages}{done} && pkgs::packagesToInstall($o->{packages}) > 0;
-}
-
-#------------------------------------------------------------------------------
-sub installPackages {
- my ($_clicked, $ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'readBootloaderConfigBeforeInstall') if $ent_number == 1;
-
- installStepsCall($o, $auto, 'beforeInstallPackages');
- installStepsCall($o, $auto, 'installPackages');
- installStepsCall($o, $auto, 'afterInstallPackages');
-}
-#------------------------------------------------------------------------------
-sub miscellaneous {
- my ($clicked, $_ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'miscellaneousBefore', $clicked);
- installStepsCall($o, $auto, 'miscellaneous', $clicked);
- installStepsCall($o, $auto, 'miscellaneousAfter', $clicked);
-}
-
-#------------------------------------------------------------------------------
-sub summary {
- my ($_clicked, $ent_number, $auto) = @_;
- installStepsCall($o, $auto, 'summaryBefore');
- installStepsCall($o, $auto, 'summary', $ent_number == 1);
- installStepsCall($o, $auto, 'summaryAfter');
-}
-#------------------------------------------------------------------------------
-sub configureNetwork {
- my ($_clicked, $_ent_number, $auto) = @_;
- #- get current configuration of network device.
- require network::network;
- eval { network::network::read_all_conf($o->{prefix}, $o->{netc}, $o->{intf}) };
- installStepsCall($o, $auto, 'configureNetwork') if !$o->{isUpgrade};
-}
-#------------------------------------------------------------------------------
-sub installUpdates {
- my ($_clicked, $_ent_number, $auto) = @_;
- installStepsCall($o, $auto, 'installUpdates') if $o->{meta_class} ne 'firewall';
-}
-#------------------------------------------------------------------------------
-sub configureServices {
- my ($clicked, $_ent_number, $auto) = @_;
- installStepsCall($o, $auto, 'configureServices', $clicked);
-}
-#------------------------------------------------------------------------------
-sub setRootPassword {
- my ($clicked, $_ent_number, $auto) = @_;
- return if $o->{isUpgrade};
-
- installStepsCall($o, $auto, 'setRootPassword', $clicked);
-}
-#------------------------------------------------------------------------------
-sub addUser {
- my ($clicked, $_ent_number, $auto) = @_;
-
- installStepsCall($o, $auto, 'addUser', $clicked) if !$o->{isUpgrade};
-}
-
-#------------------------------------------------------------------------------
-sub setupBootloader {
- my ($_clicked, $ent_number, $auto) = @_;
- return if $::uml_install;
-
- $o->{modules_conf}->write;
-
- installStepsCall($o, $auto, 'setupBootloaderBefore') if $ent_number == 1;
- installStepsCall($o, $auto, 'setupBootloader', $ent_number);
-
- eval { install_any::set_security($o) };
-}
-#------------------------------------------------------------------------------
-sub configureX {
- my ($_clicked, $_ent_number, $auto) = @_;
-
- #- done here and also at the end of install2.pm, just in case...
- install_any::write_fstab($o);
- $o->{modules_conf}->write;
-
- require pkgs;
- installStepsCall($o, $auto, 'configureX') if !$::testing && eval { pkgs::packageByName($o->{packages}, 'xorg-x11')->flag_installed } && !$o->{X}{disabled};
-}
-#------------------------------------------------------------------------------
-sub exitInstall {
- my ($_clicked, $_xent_number, $auto) = @_;
- installStepsCall($o, $auto, 'exitInstall', getNextStep($::o) eq 'exitInstall');
-}
-
-sub start_i810fb() {
- # keep the result otherwise monitor-edid does not return good results afterwards
- eval { any::monitor_full_edid() };
-
- my ($vga) = cat_('/proc/cmdline') =~ /vga=(\S+)/;
- return if !$vga || listlength(cat_('/proc/fb'));
-
- my %vga_to_xres = (0x311 => '640', 0x314 => '800', 0x317 => '1024');
- my $xres = $vga_to_xres{$vga} || '800';
-
- log::l("trying to load i810fb module with xres <$xres> (vga was <$vga>)");
- eval { modules::load('intel-agp') };
- eval {
- my $opt = "xres=$xres hsync1=32 hsync2=48 vsync1=50 vsync2=70 vram=2 bpp=16 accel=1 mtrr=1"; #- this sucking i810fb does not accept floating point numbers in hsync!
- modules::load_with_options([ 'i810fb' ], { i810fb => $opt });
- };
-}
-
-
-#-######################################################################################
-#- MAIN
-#-######################################################################################
-sub main {
- $SIG{SEGV} = sub {
- my $msg = "segmentation fault: seems like memory is missing as the install crashes"; log::l($msg);
- $o->ask_warn('', $msg);
- setVirtual(1);
- require install_steps_auto_install;
- install_steps_auto_install_non_interactive::errorInStep($o, $msg);
- };
- $ENV{PERL_BADLANG} = 1;
- $ENV{LD_ASSUME_KERNEL} = '2.4.1';
- delete $ENV{TERMINFO};
- umask 022;
-
- $::isInstall = 1;
- $::isWizard = 1;
- $::no_ugtk_init = 1;
- $::expert = 0;
-
-#- c::unlimit_core() unless $::testing;
-
- my ($cfg, $patch, @auto);
- my %cmdline = map {
- my ($n, $v) = split /=/;
- $n => $v || 1;
- } split ' ', cat_("/proc/cmdline");
-
- my $opt; foreach (@_) {
- if (/^--?(.*)/) {
- $cmdline{$opt} = 1 if $opt;
- $opt = $1;
- } else {
- $cmdline{$opt} = $_ if $opt;
- $opt = '';
- }
- } $cmdline{$opt} = 1 if $opt;
-
- #- from stage1
- put_in_hash(\%ENV, { getVarsFromSh('/tmp/env') });
- exists $ENV{$_} and $cmdline{lc($_)} = $ENV{$_} foreach qw(METHOD PCMCIA KICKSTART);
-
- map_each {
- my ($n, $v) = @_;
- my $f = ${{
- lang => sub { $o->{locale}{lang} = $v },
- flang => sub { $o->{locale}{lang} = $v; push @auto, 'selectLanguage' },
- method => sub { $o->{method} = $v },
- pcmcia => sub { $o->{pcmcia} = $v },
- vga16 => sub { $o->{vga16} = $v },
- vga => sub { $o->{vga} = $v },
- step => sub { $o->{steps}{first} = $v },
- meta_class => sub { $o->{meta_class} = $v },
- freedriver => sub { $o->{freedriver} = $v },
- no_bad_drives => sub { $o->{partitioning}{no_bad_drives} = 1 },
- readonly => sub { $o->{partitioning}{readonly} = $v ne "0" },
- display => sub { $o->{display} = $v },
- askdisplay => sub { print "Please enter the X11 display to perform the install on ? "; $o->{display} = chomp_(scalar(<STDIN>)) },
- security => sub { $o->{security} = $v },
- noauto => sub { $::noauto = 1 },
- testing => sub { $::testing = 1 },
- patch => sub { $patch = 1 },
- defcfg => sub { $cfg = $v },
- newt => sub { $o->{interactive} = "newt" },
- text => sub { $o->{interactive} = "newt" },
- stdio => sub { $o->{interactive} = "stdio" },
- kickstart => sub { $::auto_install = $v },
- uml_install => sub { $::uml_install = 1 },
- auto_install => sub { $::auto_install = $v },
- simple_themes => sub { $o->{simple_themes} = 1 },
- theme => sub { $o->{theme} = $v },
- doc => sub { $o->{doc} = 1 }, #- will be used to know that we're running for the doc team,
- #- e.g. we want screenshots with a good B&W contrast
- useless_thing_accepted => sub { $o->{useless_thing_accepted} = 1 },
- alawindows => sub { $o->{security} = 0; $o->{partitioning}{clearall} = 1; $o->{bootloader}{crushMbr} = 1 },
- fdisk => sub { $o->{partitioning}{fdisk} = 1 },
- nomouseprobe => sub { $o->{nomouseprobe} = $v },
- updatemodules => sub { $o->{updatemodules} = 1 },
- move => sub { $::move = 1 },
- globetrotter => sub { $::move = 1; $::globetrotter = 1 },
- suppl => sub { $o->{supplmedia} = 1 },
- askmedia => sub { $o->{askmedia} = 1 },
- }}{lc $n}; &$f if $f;
- } %cmdline;
-
- if ($::testing) {
- $ENV{SHARE_PATH} ||= "/export/install/stage2/live/usr/share";
- $ENV{SHARE_PATH} = "/usr/share" if !-e $ENV{SHARE_PATH};
- } else {
- $ENV{SHARE_PATH} ||= "/usr/share";
- }
-
- undef $::auto_install if $cfg;
- if (!$::testing) {
- unlink $_ foreach "/modules/modules.mar", "/sbin/stage1";
- }
-
- log::openLog(($::testing || $o->{localInstall}) && 'debug.log');
- log::l("second stage install running (", install_any::drakx_version(), ")");
-
- eval { output('/proc/sys/kernel/modprobe', "\n") } if !$::testing; #- disable kmod, otherwise we get a different behaviour in kernel vs kernel-BOOT
- eval { fs::mount('none', '/sys', 'sysfs', 1) };
-
- if ($::move) {
- require move;
- move::init($o);
- }
-
- cp_f(glob('/stage1/tmp/*'), '/tmp');
-
- #- free up stage1 memory
- eval { fs::umount($_) } foreach qw(/stage1/proc/bus/usb /stage1/proc /stage1);
-
- $o->{prefix} = $::prefix = $::testing ? "/tmp/test-perl-install" : $::move ? "" : "/mnt";
- mkdir $o->{prefix}, 0755;
-
- #- make sure we do not pick up any gunk from the outside world
- my $remote_path = "$o->{prefix}/sbin:$o->{prefix}/bin:$o->{prefix}/usr/sbin:$o->{prefix}/usr/bin:$o->{prefix}/usr/X11R6/bin";
- $ENV{PATH} = "/usr/bin:/bin:/sbin:/usr/sbin:/usr/X11R6/bin:$remote_path";
-
- eval { spawnShell() };
-
- modules::load_dependencies(($::testing ? ".." : "") . "/modules/modules.dep");
- require modules::any_conf;
- require modules::modules_conf;
- $o->{modules_conf} = modules::modules_conf::read(modules::any_conf::vnew(), '/tmp/modules.conf');
- modules::read_already_loaded($o->{modules_conf});
-
- #- done before auto_install is called to allow the -IP feature on auto_install file name
- if (-e '/tmp/network') {
- require network::network;
- #- get stage1 network configuration if any.
- log::l('found /tmp/network');
- $o->{netc} ||= {};
- add2hash($o->{netc}, network::network::read_conf('/tmp/network'));
- if (my ($file) = glob_('/tmp/ifcfg-*')) {
- log::l("found network config file $file");
- my $l = network::network::read_interface_conf($file);
- $o->{intf}{$l->{DEVICE}} ||= $l;
- }
- if (-e '/etc/resolv.conf') {
- my $file = '/etc/resolv.conf';
- log::l("found network config file $file");
- add2hash($o->{netc}, network::network::read_resolv_conf($file));
- }
- }
-
- #- done after module dependencies are loaded for "vfat depends on fat"
- if ($::auto_install) {
- if ($::auto_install =~ /-IP(\.pl)?$/) {
- my ($ip) = cat_('/tmp/stage1.log') =~ /configuring device (?!lo)\S+ ip: (\S+)/;
- my $normalized_ip = join('', map { sprintf "%02X", $_ } split('\.', $ip));
- $::auto_install =~ s/-IP(\.pl)?$/-$normalized_ip$1/;
- }
- require install_steps_auto_install;
- eval { $o = $::o = install_any::loadO($o, $::auto_install) };
- if ($@) {
- if ($o->{useless_thing_accepted}) { #- Pixel's hack to be able to fail through
- log::l("error using auto_install, continuing");
- undef $::auto_install;
- } else {
- install_steps_auto_install_non_interactive::errorInStep($o, "Error using auto_install\n" . formatError($@));
- }
- } else {
- log::l("auto install config file loaded successfully");
-
- #- normalize for people not using our special scheme
- foreach (@{$o->{manualFstab} || []}) {
- $_->{device} =~ s!^/dev/!!;
- }
- }
- }
- $o->{interactive} ||= 'gtk' if !$::auto_install;
-
- if ($o->{interactive} eq "gtk" && availableMemory() < 22 * 1024) {
- log::l("switching to newt install cuz not enough memory");
- $o->{interactive} = "newt";
- }
-
- if (my ($s) = cat_("/proc/cmdline") =~ /brltty=(\S*)/) {
- my ($driver, $device, $table) = split(',', $s);
- $table = "text.$table.tbl" if $table !~ /\.tbl$/;
- log::l("brltty option $driver $device $table");
- $o->{brltty} = { driver => $driver, device => $device, table => $table };
- $o->{interactive} = 'newt';
- $o->{nomouseprobe} = 1;
- }
-
- # perl_checker: require install_steps_gtk
- # perl_checker: require install_steps_newt
- # perl_checker: require install_steps_stdio
- require "install_steps_$o->{interactive}.pm" if $o->{interactive};
-
- #- needed before accessing floppy (in case of usb floppy)
- modules::load_category($o->{modules_conf}, 'bus/usb');
-
- #- oem patch should be read before to still allow patch or defcfg.
- eval { $o = $::o = install_any::loadO($o, "install/patch-oem.pl"); log::l("successfully read oem patch") };
- #- patch should be read after defcfg in order to take precedance.
- eval { $o = $::o = install_any::loadO($o, $cfg); log::l("successfully read default configuration: $cfg") } if $cfg;
- eval { $o = $::o = install_any::loadO($o, "patch"); log::l("successfully read patch") } if $patch;
-
- eval { modules::load("af_packet") };
-
- require harddrake::sound;
- harddrake::sound::configure_sound_slots($o->{modules_conf});
-
- #- need to be after oo-izing $o
- if ($o->{brltty}) {
- symlink "/tmp/stage2/$_", $_ foreach "/etc/brltty";
- eval { modules::load("serial") };
- devices::make($_) foreach $o->{brltty}{device} ? $o->{brltty}{device} : qw(ttyS0 ttyS1);
- devices::make("vcsa");
- run_program::run("brltty");
- }
-
- #- needed very early for install_steps_gtk
- if (!$::testing) {
- eval { $o->{mouse} = mouse::detect($o->{modules_conf}) } if !$o->{mouse} && !$o->{nomouseprobe};
- mouse::load_modules($o->{mouse});
- }
-
- $o->{locale}{lang} = lang::set($o->{locale}) if $o->{locale}{lang} ne 'en_US' && !$::move; #- mainly for defcfg
-
- start_i810fb();
-
- $o->{allowFB} = listlength(cat_("/proc/fb"));
-
- if (!$::move && !$::testing && !$o->{meta_class}) {
- my $VERSION = cat__(install_any::getFile("VERSION")) or do { print "VERSION file missing\n"; sleep 5 };
- my @classes = qw(powerpackplus powerpack desktop download server firewall);
- if (my $meta_class = find { $VERSION =~ /$_/i } @classes) {
- $o->{meta_class} = $meta_class;
- }
- $o->{distro_type} = 'community' if $VERSION =~ /community/i;
- $o->{distro_type} = 'cooker' if $VERSION =~ /cooker/i;
- }
- $o->{meta_class} eq 'discovery' and $o->{meta_class} = 'desktop';
- $o->{meta_class} eq 'powerpackplus' and $o->{meta_class} = 'server';
-
- log::l("meta_class $o->{meta_class}");
-
- foreach (@auto) {
- my $s = $o->{steps}{/::(.*)/ ? $1 : $_} or next;
- $s->{auto} = $s->{hidden} = 1;
- }
-
- my $o_;
- while (1) {
- $o_ = $::auto_install ?
- install_steps_auto_install->new($o) :
- $o->{interactive} eq "stdio" ?
- install_steps_stdio->new($o) :
- $o->{interactive} eq "newt" ?
- install_steps_newt->new($o) :
- $o->{interactive} eq "gtk" ?
- install_steps_gtk->new($o) :
- die "unknown install type";
- $o_ and last;
-
- $o->{interactive} = "newt";
- require install_steps_newt;
- }
- $::o = $o = $o_;
-
- eval { output('/proc/splash', "verbose\n") };
-
- #-the main cycle
- my $clicked = 0;
- MAIN: for ($o->{step} = $o->{steps}{first};; $o->{step} = getNextStep($o)) {
- $o->{steps}{$o->{step}}{entered}++;
- $o->enteringStep($o->{step});
- eval {
- &{$install2::{$o->{step}}}($clicked || $o->{steps}{$o->{step}}{noauto},
- $o->{steps}{$o->{step}}{entered},
- $clicked ? 0 : $o->{steps}{$o->{step}}{auto});
- };
- my $err = $@;
- $o->kill_action;
- $clicked = 0;
- if ($err) {
- local $_ = $err;
- $o->kill_action;
- if (!/^already displayed/) {
- eval { $o->errorInStep($_) };
- $o->{steps}{$o->{step}}{auto} = 0;
- $err = $@;
- $err and next;
- }
- $o->{step} = $o->{steps}{$o->{step}}{onError};
- next MAIN unless $o->{steps}{$o->{step}}{reachable}; #- sanity check: avoid a step not reachable on error.
- redo MAIN;
- }
- $o->{steps}{$o->{step}}{done} = 1;
- $o->leavingStep($o->{step});
-
- last if $o->{step} eq 'exitInstall';
- }
- unlink install_any::clp_on_disk();
- install_any::clean_postinstall_rpms();
- install_any::log_sizes($o);
- install_any::remove_advertising($o);
- install_any::write_fstab($o);
- $o->{modules_conf}->write;
- detect_devices::install_addons($o->{prefix});
-
- #- mainly for auto_install's
- #- do not use run_program::xxx because it does not leave stdin/stdout unchanged
- system("bash", "-c", $o->{postInstallNonRooted}) if $o->{postInstallNonRooted};
- system("chroot", $o->{prefix}, "bash", "-c", $o->{postInstall}) if $o->{postInstall};
-
- install_any::ejectCdrom();
-
- #- to ensure linuxconf does not cry against those files being in the future
- foreach ('/etc/modules.conf', '/etc/crontab', '/etc/sysconfig/mouse', '/etc/sysconfig/network', '/etc/X11/fs/config') {
- my $now = time() - 24 * 60 * 60;
- utime $now, $now, "$o->{prefix}/$_";
- }
- install_any::killCardServices();
-
- #- make sure failed upgrade will not hurt too much.
- install_steps::cleanIfFailedUpgrade($o);
-
- -e "$o->{prefix}/usr/sbin/urpmi.update" or eval { rm_rf("$o->{prefix}/var/lib/urpmi") };
-
- #- copy latest log files
- eval { cp_af("/tmp/$_", "$o->{prefix}/root/drakx") foreach qw(ddebug.log stage1.log) };
-
- #- ala pixel? :-) [fpons]
- common::sync(); common::sync();
-
- log::l("installation complete, leaving");
- log::l("files still open by install2: ", readlink($_)) foreach glob_("/proc/self/fd/*");
- print "\n" x 80;
-}
-
-1;
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
deleted file mode 100644
index dec369cdc..000000000
--- a/perl-install/install_any.pm
+++ /dev/null
@@ -1,1869 +0,0 @@
-package install_any; # $Id$
-
-use strict;
-
-our @ISA = qw(Exporter);
-our %EXPORT_TAGS = (
- all => [ qw(getNextStep spawnShell addToBeDone) ],
-);
-our @EXPORT_OK = map { @$_ } values %EXPORT_TAGS;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use MDK::Common::System;
-use common;
-use run_program;
-use fs::type;
-use fs::format;
-use partition_table;
-use devices;
-use fsedit;
-use modules;
-use detect_devices;
-use lang;
-use any;
-use log;
-
-#- boot medium (the first medium to take into account).
-our $boot_medium = 1;
-our $current_medium = $boot_medium;
-our $asked_medium = $boot_medium;
-our @advertising_images;
-
-#- current ftp root (for getFile) ­- XXX must store this per media
-our $global_ftp_prefix;
-
-sub drakx_version() {
- $::move ? sprintf "DrakX-move v%s", cat_('/usr/bin/stage2/move.pm') =~ /move\.pm,v (\S+ \S+ \S+)/
- : sprintf "DrakX v%s built %s", $::testing ? ('TEST', scalar gmtime()) : (split('/', cat__(getFile("install/stage2/VERSION"))))[2,3];
-}
-
-#-######################################################################################
-#- Media change variables&functions
-#-######################################################################################
-my $postinstall_rpms = '';
-my $cdrom;
-my %iso_images;
-
-sub mountCdrom {
- my ($mountpoint, $o_cdrom) = @_;
- $o_cdrom = $cdrom if !defined $o_cdrom;
- eval { fs::mount($o_cdrom, $mountpoint, "iso9660", 'readonly') };
-}
-
-sub useMedium($) {
- #- before ejecting the first CD, there are some files to copy!
- #- does nothing if the function has already been called.
- $_[0] > 1 and method_allows_medium_change($::o->{method}) and setup_postinstall_rpms($::prefix, $::o->{packages});
-
- $asked_medium eq $_[0] or log::l("selecting new medium '$_[0]'");
- $asked_medium = $_[0];
-}
-sub changeMedium($$) {
- my ($method, $medium_name) = @_;
- log::l("change to medium $medium_name for method $method (refused by default)");
- 0;
-}
-sub relGetFile($) {
- local $_ = $_[0];
- if (my ($arch) = m|\.([^\.]*)\.rpm$|) {
- $_ = "$::o->{packages}{mediums}{$asked_medium}{rpmsdir}/$_";
- s/%{ARCH}/$arch/g;
- s,^/+,,g;
- }
- $_;
-}
-sub askChangeMedium($$) {
- my ($method, $medium_name) = @_;
- my $allow;
- do {
- local $::o->{method} = $method = 'cdrom' if $medium_name =~ /^\d+s$/; #- Suppl CD
- eval { $allow = changeMedium($method, $medium_name) };
- } while $@; #- really it is not allowed to die in changeMedium!!! or install will core with rpmlib!!!
- log::l($allow ? "accepting medium $medium_name" : "refusing medium $medium_name");
- $allow;
-}
-
-#- guess the CD number from a media description.
-#- XXX lots of heuristics here, must design this properly
-sub getCDNumber {
- my ($description) = @_;
- (my $cd) = $description =~ /\b(?:CD|DVD) ?(\d+)\b/i;
- if (!$cd) { #- test for single unnumbered DVD
- $cd = 1 if $description =~ /\bDVD\b/i;
- }
- if (!$cd) { #- test for mini-ISO
- $cd = 1 if $description =~ /\bmini.?cd\b/i;
- }
- #- don't mix suppl. cds with regular ones
- if ($description =~ /suppl/i) { $cd += 100 }
- $cd;
-}
-
-sub method_is_from_ISO_images($) {
- my ($method) = @_;
- $method eq "disk-iso" || $method eq "nfs-iso";
-}
-sub method_allows_medium_change($) {
- my ($method) = @_;
- $method eq "cdrom" || method_is_from_ISO_images($method);
-}
-
-sub look_for_ISO_images() {
- $iso_images{media} = [];
-
- ($iso_images{loopdev}, $iso_images{mountpoint}) = cat_("/proc/mounts") =~ m|(/dev/loop\d+)\s+(/tmp/image) iso9660| or return;
-
- my $get_iso_ids = sub {
- my ($F) = @_;
- my ($vol_id, $app_id) = c::get_iso_volume_ids(fileno $F);
- #- the ISO volume names must end in -Disc\d+ if they are belong (!) to a set
- my ($cd_set) = $vol_id =~ /^(.*)-disc\d+$/i;
- #- else use the full volume name as CD set identifier
- $cd_set ||= $vol_id;
- { cd_set => $cd_set, app_id => $app_id };
- };
-
- sysopen(my $F, $iso_images{loopdev}, 0) or return;
- put_in_hash(\%iso_images, $get_iso_ids->($F));
-
- my $iso_dir = $ENV{ISOPATH};
- #- strip old root and remove iso file from path if present
- $iso_dir =~ s!^/sysroot!!; $iso_dir =~ s![^/]*\.iso$!!;
-
- foreach my $iso_file (glob("$iso_dir/*.iso")) {
- my $iso_dev = devices::set_loop($iso_file) or return;
- if (sysopen($F, $iso_dev, 0)) {
- my $iso_ids = $get_iso_ids->($F);
- push @{$iso_images{media}}, { file => $iso_file, %$iso_ids };
- close($F); #- needed to delete loop device
- }
- devices::del_loop($iso_dev);
- }
- 1;
-}
-
-sub find_ISO_image_labelled($) {
- %iso_images or look_for_ISO_images() or return;
- my ($iso_label) = @_;
- find { $_->{app_id} eq $iso_label && $_->{cd_set} eq $iso_images{cd_set} } @{$iso_images{media}};
-}
-
-sub changeIso($) {
- my ($iso_label) = @_;
- my $iso_info = find_ISO_image_labelled($iso_label) or return;
-
- eval { fs::umount($iso_images{mountpoint}) };
- $@ and warnAboutFilesStillOpen();
- devices::del_loop($iso_images{loopdev});
-
- $iso_images{loopdev} = devices::set_loop($iso_info->{file});
- eval {
- fs::mount($iso_images{loopdev}, $iso_images{mountpoint}, "iso9660", 'readonly');
- log::l("using ISO image '$iso_label'");
- 1;
- };
-}
-
-sub errorOpeningFile($) {
- my ($file) = @_;
- $file eq 'XXX' and return; #- special case to force closing file after rpmlib transaction.
- $current_medium eq $asked_medium and log::l("errorOpeningFile $file"), return; #- nothing to do in such case.
- $::o->{packages}{mediums}{$asked_medium}{selected} or return; #- not selected means no need to worry about.
- my $current_method = $::o->{packages}{mediums}{$asked_medium}{method} || $::o->{method};
-
- my $max = 32; #- always refuse after $max tries.
- if ($current_method eq "cdrom") {
- cat_("/proc/mounts") =~ m,(/dev/\S+)\s+(/mnt/cdrom|/tmp/image),
- and ($cdrom, my $mountpoint) = ($1, $2);
- return unless $cdrom;
- ejectCdrom($cdrom, $mountpoint);
- while ($max > 0 && askChangeMedium($current_method, $asked_medium)) {
- $current_medium = $asked_medium;
- mountCdrom("/tmp/image");
- my $getFile = getFile($file);
- $getFile && @advertising_images and copy_advertising($::o);
- $getFile and return $getFile;
- $current_medium = 'unknown'; #- do not know what CD is inserted now.
- ejectCdrom($cdrom, $mountpoint);
- --$max;
- }
- } else {
- while ($max > 0 && askChangeMedium($current_method, $asked_medium)) {
- $current_medium = $asked_medium;
- my $getFile = getFile($file); $getFile and return $getFile;
- $current_medium = 'unknown'; #- do not know what CD image has been copied.
- --$max;
- }
- }
-
- #- Do not unselect supplementary CDs.
- return if $asked_medium =~ /^\d+s$/;
-
- #- keep in mind the asked medium has been refused on this way.
- #- this means it is no more selected.
- $::o->{packages}{mediums}{$asked_medium}{selected} = undef;
-
- #- on cancel, we can expect the current medium to be undefined too,
- #- this enables remounting if selecting a package back.
- $current_medium = 'unknown';
-
- return;
-}
-sub getFile {
- my ($f, $o_method, $o_altroot) = @_;
- my $current_method = ($asked_medium ? $::o->{packages}{mediums}{$asked_medium}{method} : '') || $::o->{method};
- log::l("getFile $f:$o_method ($asked_medium:$current_method)");
- my $rel = relGetFile($f);
- do {
- if ($f =~ m|^http://|) {
- require http;
- http::getFile($f);
- } elsif ($o_method =~ /crypto|update/i) {
- require crypto;
- crypto::getFile($f);
- } elsif ($current_method eq "ftp") {
- require ftp;
- ftp::getFile($rel, @{ $::o->{packages}{mediums}{$asked_medium}{ftp_prefix} || $global_ftp_prefix || [] });
- } elsif ($current_method eq "http") {
- require http;
- http::getFile(($ENV{URLPREFIX} || $o_altroot) . "/$rel");
- } else {
- #- try to open the file, but examine if it is present in the repository,
- #- this allows handling changing a media when some of the files on the
- #- first CD have been copied to other to avoid media change...
- my $f2 = "$postinstall_rpms/$f";
- $o_altroot ||= '/tmp/image';
- $f2 = "$o_altroot/$rel" if $rel !~ m,^/, && (!$postinstall_rpms || !-e $f2);
- my $F; open($F, $f2) ? $F : do { $f2 !~ /XXX/ and log::l("Can not open $f2: $!"); undef };
- }
- } || errorOpeningFile($f);
-}
-
-sub getLocalFile {
- my ($file) = @_;
- my $F;
- open($F, $file) ? $F : do { log::l("Can not open $file: $!"); undef };
-}
-
-sub getAndSaveFile {
- my ($file, $local) = @_ == 1 ? ("install/stage2/live$_[0]", $_[0]) : @_;
- local $/ = \ (16 * 1024);
- my $f = ref($file) ? $file : getFile($file) or return;
- open(my $F, ">$local") or log::l("getAndSaveFile(opening $local): $!"), return;
- local $_;
- while (<$f>) { syswrite($F, $_) or die("getAndSaveFile($local): $!") }
- 1;
-}
-
-
-#-######################################################################################
-#- Post installation RPMS from cdrom only, functions
-#-######################################################################################
-sub setup_postinstall_rpms($$) {
- my ($prefix, $packages) = @_;
-
- $postinstall_rpms and return;
- $postinstall_rpms = "$prefix/usr/postinstall-rpm";
-
- require pkgs;
-
- log::l("postinstall rpms directory set to $postinstall_rpms");
- clean_postinstall_rpms(); #- make sure in case of previous upgrade problem.
- mkdir_p($postinstall_rpms);
-
- my %toCopy;
- #- compute closure of package that may be copied, use INSTALL category
- #- in rpmsrate.
- $packages->{rpmdb} ||= pkgs::rpmDbOpen();
- foreach (@{$packages->{needToCopy} || []}) {
- my $p = pkgs::packageByName($packages, $_) or next;
- pkgs::selectPackage($packages, $p, 0, \%toCopy);
- }
- delete $packages->{rpmdb};
-
- my @toCopy = grep { $_ && !$_->flag_selected } map { $packages->{depslist}[$_] } keys %toCopy;
-
- #- extract headers of package, this is necessary for getting
- #- the complete filename of each package.
- #- copy the package files in the postinstall RPMS directory.
- #- last arg is default medium '' known as the CD#1.
- #- cp_af does not handle correctly a missing file.
- eval { cp_af((grep { -r $_ } map { "/tmp/image/" . relGetFile($_->filename) } @toCopy), $postinstall_rpms) };
-
- log::l("copying Auto Install Floppy");
- getAndSaveInstallFloppies($::o, $postinstall_rpms, 'auto_install');
-}
-
-sub clean_postinstall_rpms() {
- $postinstall_rpms and -d $postinstall_rpms and rm_rf($postinstall_rpms);
-}
-
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub getNextStep {
- my ($o) = @_;
- find { !$o->{steps}{$_}{done} && $o->{steps}{$_}{reachable} } @{$o->{orderedSteps}};
-}
-
-sub dont_run_directly_stage2() {
- readlink("/usr/bin/runinstall2") eq "runinstall2.sh";
-}
-
-sub spawnShell() {
- return if $::o->{localInstall} || $::testing || dont_run_directly_stage2();
-
- if (my $shellpid = fork()) {
- output('/var/run/drakx_shell.pid', $shellpid);
- return;
- }
-
- $ENV{DISPLAY} ||= ":0"; #- why not :pp
-
- local *F;
- sysopen F, "/dev/tty2", 2 or log::l("cannot open /dev/tty2 -- no shell will be provided: $!"), goto cant_spawn;
-
- open STDIN, "<&F" or goto cant_spawn;
- open STDOUT, ">&F" or goto cant_spawn;
- open STDERR, ">&F" or goto cant_spawn;
- close F;
-
- print drakx_version(), "\n";
-
- c::setsid();
-
- ioctl(STDIN, c::TIOCSCTTY(), 0) or warn "could not set new controlling tty: $!";
-
- my @args; -e '/etc/bashrc' and @args = qw(--rcfile /etc/bashrc);
- foreach (qw(/bin/bash /usr/bin/busybox /bin/sh)) {
- -x $_ or next;
- my $program_name = /busybox/ ? "/bin/sh" : $_; #- since perl_checker is too dumb
- exec { $_ } $program_name, @args or log::l("exec of $_ failed: $!");
- }
-
- log::l("cannot open any shell");
-cant_spawn:
- c::_exit(1);
-}
-
-sub getAvailableSpace {
- my ($o) = @_;
-
- #- make sure of this place to be available for installation, this could help a lot.
- #- currently doing a very small install use 36Mb of postinstall-rpm, but installing
- #- these packages may eat up to 90Mb (of course not all the server may be installed!).
- #- 65mb may be a good choice to avoid almost all problem of insuficient space left...
- my $minAvailableSize = 65 * sqr(1024);
-
- my $n = !$::testing && getAvailableSpace_mounted($o->{prefix}) ||
- getAvailableSpace_raw($o->{fstab}) * 512 / 1.07;
- $n - max(0.1 * $n, $minAvailableSize);
-}
-
-sub getAvailableSpace_mounted {
- my ($prefix) = @_;
- my $dir = -d "$prefix/usr" ? "$prefix/usr" : $prefix;
- my (undef, $free) = MDK::Common::System::df($dir) or return;
- log::l("getAvailableSpace_mounted $free KB");
- $free * 1024 || 1;
-}
-sub getAvailableSpace_raw {
- my ($fstab) = @_;
-
- do { $_->{mntpoint} eq '/usr' and return $_->{size} } foreach @$fstab;
- do { $_->{mntpoint} eq '/' and return $_->{size} } foreach @$fstab;
-
- if ($::testing) {
- my $nb = 450;
- log::l("taking ${nb}MB for testing");
- return $nb << 11;
- }
- die "missing root partition";
-}
-
-sub preConfigureTimezone {
- my ($o) = @_;
- require timezone;
-
- #- can not be done in install cuz' timeconfig %post creates funny things
- add2hash($o->{timezone}, timezone::read()) if $o->{isUpgrade};
-
- $o->{timezone}{timezone} ||= timezone::bestTimezone($o->{locale}{country});
-
- my $utc = every { !isFat_or_NTFS($_) } @{$o->{fstab}};
- my $ntp = timezone::ntp_server();
- add2hash_($o->{timezone}, { UTC => $utc, ntp => $ntp });
-}
-
-sub ask_if_suppl_media {
- my ($o) = @_;
- our $suppl_already_asked;
- my $msg = $suppl_already_asked
- ? N("Do you have further supplementary media?")
- : formatAlaTeX(
-#-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("The following media have been found and will be used during install: %s.
-
-
-Do you have a supplementary installation media to configure?",
- join ", ", uniq(sort {
- (my $x) = $a =~ /CD(\d+)/;
- (my $y) = $b =~ /CD(\d+)/;
- $x && $y ? $x <=> $y : $a cmp $b;
- } map { $_->{descr} } values %{$o->{packages}{mediums}})));
- $o->ask_from(
- '', $msg,
- [ {
- val => \my $suppl,
- list => [ N_("None"), N_("CD-ROM"), N_("Network (http)"), N_("Network (ftp)") ],
- type => 'list',
- format => \&translate,
- } ],
- );
- $suppl_already_asked = 1;
- return $suppl;
-}
-
-#- if the supplementary media is networked, but not the main one, network
-#- support must be installed and network started.
-sub prep_net_suppl_media {
- return if our $net_suppl_media_configured;
- $net_suppl_media_configured = 1;
- my ($o) = @_;
- #- install basesystem now
- $::o->do_pkgs->ensure_is_installed('basesystem', undef, 1);
- #- from install_steps_interactive:
- local $::expert = $::expert;
- require network::netconnect;
- network::netconnect::main($o->{netcnx} ||= {}, $o, $o->{modules_conf}, $o->{netc}, $o->{mouse}, $o->{intf}, 0, 1);
- require install_interactive;
- install_interactive::upNetwork($o);
- sleep(3);
-}
-
-sub remountCD1 {
- my ($o, $cdrom) = @_;
- openCdromTray($cdrom);
- $o->ask_warn('', N("Insert the CD 1 again"));
- mountCdrom("/tmp/image", $cdrom);
- log::l($@) if $@;
- $asked_medium = 1;
-}
-
-sub selectSupplMedia {
- my ($o, $suppl_method) = @_;
- #- ask whether there are supplementary media
- my $prev_asked_medium = $asked_medium;
- if ($suppl_method && (my $suppl = ask_if_suppl_media($o)) ne 'None') {
- #- translate to method name
- $suppl_method = {
- 'CD-ROM' => 'cdrom',
- 'Network (http)' => 'http',
- 'Network (ftp)' => 'ftp',
- }->{$suppl};
- #- by convention, the media names for suppl. CDs match /^\d+s$/
- my $medium_name = $suppl_method eq 'cdrom'
- ? (max(map { $_->{medium} =~ /^(\d+)s$/ ? $1 : 0 } values %{$o->{packages}{mediums}}) + 1) . "s"
- : int(keys %{$o->{packages}{mediums}}) + 1;
- #- configure network if needed
- prep_net_suppl_media($o) if !scalar keys %{$o->{intf}} && $suppl_method !~ /^(?:cdrom|disk)/;
- local $::isWizard = 0;
- my $main_method = $o->{method};
- local $o->{method} = $suppl_method;
- if ($suppl_method eq 'cdrom') {
- (my $cdromdev) = detect_devices::cdroms();
- $o->ask_warn('', N("No device found")), return 'error' if !$cdromdev;
- $cdrom = $cdromdev->{device};
- $cdrom =~ m,^/, or $cdrom = "/dev/$cdrom";
- devices::make($cdrom);
- ejectCdrom($cdrom);
- if ($o->ask_okcancel('', N("Insert the CD"), 1)) {
- #- mount suppl CD in /mnt/cdrom to avoid umounting /tmp/image
- mountCdrom("/mnt/cdrom", $cdrom);
- if ($@) {
- log::l($@);
- $o->ask_warn('', N("Unable to mount CD-ROM"));
- return 'error';
- }
- useMedium($medium_name);
-
- #- probe for an hdlists file and then look for all hdlists listed herein
- eval {
- pkgs::psUsingHdlists($o, $suppl_method, "/mnt/cdrom", $o->{packages}, $medium_name, sub {
- my ($supplmedium) = @_;
- $supplmedium->{issuppl} = 1;
- });
- };
- log::l("psUsingHdlists failed: $@") if $@;
-
- #- copy latest compssUsers.pl and rpmsrate somewhere locally
- getAndSaveFile("/mnt/cdrom/media/media_info/compssUsers.pl", "/tmp/compssUsers.pl");
- getAndSaveFile("/mnt/cdrom/media/media_info/rpmsrate", "/tmp/rpmsrate");
-
- #- umount supplementary CD. Will re-ask for it later
- getFile("XXX"); #- close still opened filehandles
- log::l("Umounting suppl. CD, back to medium 1");
- eval { fs::umount("/mnt/cdrom") };
- #- re-mount CD 1 if this was a cdrom install
- $main_method eq 'cdrom' and remountCD1($o, $cdrom);
- } else {
- $main_method eq 'cdrom' and remountCD1($o, $cdrom);
- return 'error';
- }
- } else {
- my $url;
- local $global_ftp_prefix;
- if ($suppl_method eq 'ftp') { #- mirrors are ftp only (currently)
- $url = $o->askSupplMirror(N("URL of the mirror?")) or return 'error';
- $url =~ m!^ftp://(?:(.*?)(?::(.*?))?\@)?([^/]+)/(.*)!
- and $global_ftp_prefix = [ $3, $4, $1, $2 ]; #- for getFile
- } else {
- $url = $o->ask_from_entry('', N("URL of the mirror?")) or return 'error';
- $url =~ s!/+\z!!;
- }
- useMedium($medium_name);
- require http if $suppl_method eq 'http';
- require ftp if $suppl_method eq 'ftp';
- #- first, try to find an hdlists file
- eval { pkgs::psUsingHdlists($o, $suppl_method, $url, $o->{packages}, $medium_name, \&setup_suppl_medium) };
- if ($@) {
- log::l("psUsingHdlists failed: $@");
- } else {
- #- copy latest compssUsers.pl and rpmsrate somewhere locally
- if ($suppl_method eq 'ftp') {
- getAndSaveFile("media/media_info/compssUsers.pl", "/tmp/compssUsers.pl");
- getAndSaveFile("media/media_info/rpmsrate", "/tmp/rpmsrate");
- } else {
- getAndSaveFile("$url/media/media_info/compssUsers.pl", "/tmp/compssUsers.pl");
- getAndSaveFile("$url/media/media_info/rpmsrate", "/tmp/rpmsrate");
- }
- useMedium($prev_asked_medium); #- back to main medium
- return $suppl_method;
- }
- #- then probe for an hdlist.cz
- my $f = eval {
- if ($suppl_method eq 'http') {
- http::getFile("$url/media_info/hdlist.cz");
- } elsif ($suppl_method eq 'ftp') {
- getFile("media_info/hdlist.cz");
- } else { undef }
- };
- if (!defined $f) {
- log::l($@) if $@;
- #- no hdlist found
- $o->ask_warn('', N("Can't find a package list file on this mirror. Make sure the location is correct."));
- useMedium($prev_asked_medium);
- return 'error';
- }
- my $supplmedium = pkgs::psUsingHdlist(
- $suppl_method,
- $o->{packages},
- "hdlist$medium_name.cz", #- hdlist
- $medium_name,
- '', #- rpmsdir
- "Supplementary media $medium_name", #- description
- 1, # selected
- $f,
- );
- close $f;
- if ($supplmedium) {
- log::l("read suppl hdlist (via $suppl_method)");
- setup_suppl_medium($supplmedium, $url, $suppl_method);
- } else {
- log::l("no suppl hdlist");
- $suppl_method = 'error';
- }
- }
- } else {
- $suppl_method = '';
- }
- useMedium($prev_asked_medium); #- back to main medium
- return $suppl_method;
-}
-
-sub setup_suppl_medium {
- my ($supplmedium, $url, $suppl_method) = @_;
- $supplmedium->{prefix} = $url; #- for install_urpmi
- if ($suppl_method eq 'ftp') {
- $url =~ m!^ftp://(?:(.*?)(?::(.*?))?\@)?([^/]+)/(.*)!
- and $supplmedium->{ftp_prefix} = [ $3, $4, $1, $2 ]; #- for getFile
- }
- $supplmedium->{selected} = 1;
- $supplmedium->{method} = $suppl_method;
- $supplmedium->{with_hdlist} = 'media_info/hdlist.cz'; #- for install_urpmi
- $supplmedium->{issuppl} = 1; #- remember it's a suppl medium
-}
-
-sub _media_rank {
- my ($x) = @_;
- my ($y, $s) = $x =~ /(\d+)(s?)\)\.cz/;
- $s and $y += 100;
- $y;
-}
-
-sub load_rate_files {
- my ($o) = @_;
- #- must be done after getProvides
- #- if there is a supplementary media, the rpmsrate/compssUsers are overridable
- pkgs::read_rpmsrate(
- $o->{packages},
- $o->{rpmsrate_flags_chosen},
- -e "/tmp/rpmsrate" ? getLocalFile("/tmp/rpmsrate") : getFile("media/media_info/rpmsrate")
- );
- ($o->{compssUsers}, $o->{gtk_display_compssUsers}) = pkgs::readCompssUsers(
- -e '/tmp/compssUsers.pl' ? '/tmp/compssUsers.pl' : 'media/media_info/compssUsers.pl'
- );
- defined $o->{compssUsers} or die "Can't read compssUsers.pl file, aborting installation\n";
-}
-
-sub setPackages {
- my ($o, $rebuild_needed) = @_;
-
- require pkgs;
- if (!$o->{packages} || is_empty_array_ref($o->{packages}{depslist})) {
- ($o->{packages}, my $suppl_method, my $copy_rpms_on_disk) = pkgs::psUsingHdlists($o, $o->{method});
-
- 1 while $suppl_method = $o->selectSupplMedia($suppl_method);
-
- #- open rpm db according to right mode needed.
- $o->{packages}{rpmdb} ||= pkgs::rpmDbOpen($rebuild_needed);
-
- #- always try to select basic kernel (else on upgrade, kernel will never be updated provided a kernel is already
- #- installed and provides what is necessary).
- pkgs::selectPackage($o->{packages},
- pkgs::bestKernelPackage($o->{packages}) || die("missing kernel package"), 1);
-
- pkgs::selectPackage($o->{packages},
- pkgs::packageByName($o->{packages}, 'basesystem') || die("missing basesystem package"), 1);
-
- my $rpmsrate_flags_was_chosen = $o->{rpmsrate_flags_chosen};
-
- put_in_hash($o->{rpmsrate_flags_chosen} ||= {}, rpmsrate_always_flags($o)); #- must be done before pkgs::read_rpmsrate()
- load_rate_files($o);
-
- copy_rpms_on_disk($o) if $copy_rpms_on_disk;
-
- set_rpmsrate_default_category_flags($o, $rpmsrate_flags_was_chosen);
-
- push @{$o->{default_packages}}, default_packages($o);
- select_default_packages($o);
- } else {
- #- this has to be done to make sure necessary files for urpmi are
- #- present.
- pkgs::psUpdateHdlistsDeps($o->{packages});
-
- #- open rpm db (always without rebuilding db, it should be false at this point).
- $o->{packages}{rpmdb} ||= pkgs::rpmDbOpen();
- }
-}
-
-sub count_files {
- my ($dir) = @_;
- -d $dir or return 0;
- opendir my $dh, $dir or return 0;
- my @list = grep { !/^\.\.?$/ } readdir $dh;
- closedir $dh;
- my $c = 0;
- foreach my $n (@list) {
- my $p = "$dir/$n";
- if (-d $p) { $c += count_files($p) } else { ++$c }
- }
- $c;
-}
-
-sub cp_with_progress {
- my $wait_message = shift;
- my $current = shift;
- my $total = shift;
- my $dest = pop @_;
- @_ or return;
- @_ == 1 || -d $dest or die "cp: copying multiple files, but last argument ($dest) is not a directory\n";
-
- foreach my $src (@_) {
- my $dest = $dest;
- -d $dest and $dest .= '/' . basename($src);
-
- unlink $dest;
-
- if (-l $src) {
- unless (symlink(readlink($src) || die("readlink failed: $!"), $dest)) {
- warn "symlink: can't create symlink $dest: $!\n";
- }
- } elsif (-d $src) {
- -d $dest or mkdir $dest, (stat($src))[2] or die "mkdir: can't create directory $dest: $!\n";
- cp_with_progress($wait_message, $current, $total, glob_($src), $dest);
- } else {
- open(my $F, $src) or die "can't open $src for reading: $!\n";
- open(my $G, ">", $dest) or die "can't cp to file $dest: $!\n";
- local $/ = \4096;
- local $_; while (<$F>) { print $G $_ }
- chmod((stat($src))[2], $dest);
- $wait_message->('', ++$current, $total);
- }
- }
- 1;
-}
-
-sub copy_rpms_on_disk {
- my ($o) = @_;
- mkdir "$o->{prefix}/$_", 0755 foreach qw(var var/ftp var/ftp/pub var/ftp/pub/Mandrivalinux var/ftp/pub/Mandrivalinux/media);
- local *changeMedium = sub {
- my ($method, $medium) = @_;
- my $name = pkgs::mediumDescr($o->{packages}, $medium);
- if (method_allows_medium_change($method)) {
- my $r;
- if ($method =~ /-iso$/) {
- $r = install_any::changeIso($name);
- } else {
- cat_("/proc/mounts") =~ m,(/dev/\S+)\s+(/mnt/cdrom|/tmp/image),
- and ($cdrom, my $mountpoint) = ($1, $2);
- ejectCdrom($cdrom, $mountpoint);
- $r = $o->ask_okcancel('', N("Change your Cd-Rom!
-Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when done.", $name), 1);
- }
- return $r;
- } else {
- return 1;
- }
- };
- foreach my $k (pkgs::allMediums($o->{packages})) {
- my $m = $o->{packages}{mediums}{$k};
- #- don't copy rpms of supplementary media
- next if $m->{issuppl};#- && $m->{medium} !~ /^\d+s$/; XXX handle suppl CDs
- my ($wait_w, $wait_message) = fs::format::wait_message($o); #- nb, this is only called when interactive
- $wait_message->(N("Copying in progress") . "\n($m->{descr})"); #- XXX to be translated
- if ($k != $current_medium) {
- my $cd_k = getCDNumber($m->{descr});
- my $cd_cur = getCDNumber($o->{packages}{mediums}{$current_medium}{descr});
- $cd_k ne $cd_cur and do {
- askChangeMedium($o->{method}, $k)
- or next;
- mountCdrom("/tmp/image", $cdrom) if $o->{method} eq 'cdrom';
- } while !-d "/tmp/image/$m->{rpmsdir}";
- $current_medium = $k;
- }
- log::l("copying /tmp/image/$m->{rpmsdir} to $o->{prefix}/var/ftp/pub/Mandrivalinux/media");
- my $total = count_files("/tmp/image/$m->{rpmsdir}");
- log::l("($total files)");
- eval {
- cp_with_progress($wait_message, 0, $total, "/tmp/image/$m->{rpmsdir}", "$o->{prefix}/var/ftp/pub/Mandrivalinux/media");
- };
- log::l($@) if $@;
- $m->{prefix} = "$o->{prefix}/var/ftp/pub/Mandrivalinux";
- $m->{method} = 'disk';
- $m->{with_hdlist} = 'media_info/hdlist.cz'; #- for install_urpmi
- undef $wait_w;
- }
- ejectCdrom() if $o->{method} eq "cdrom";
- #- now the install will continue as 'disk'
- $o->{method} = 'disk';
- #- shoud be enough to fool errorOpeningFile
- $current_medium = 1;
- our $copied_rpms_on_disk = 1;
-}
-
-sub set_rpmsrate_default_category_flags {
- my ($o, $rpmsrate_flags_was_chosen) = @_;
-
- #- if no cleaning needed, populate by default, clean is used for second or more call to this function.
- if ($::auto_install && ($o->{rpmsrate_flags_chosen} || {})->{CAT_ALL}) {
- $o->{rpmsrate_flags_chosen}{"CAT_$_"} = 1 foreach map { @{$_->{flags}} } @{$o->{compssUsers}};
- }
- if (!$rpmsrate_flags_was_chosen && !$o->{isUpgrade}) {
- #- use default selection seen in compssUsers directly.
- $_->{selected} = $_->{default_selected} foreach @{$o->{compssUsers}};
- set_rpmsrate_category_flags($o, $o->{compssUsers});
- }
-}
-
-sub set_rpmsrate_category_flags {
- my ($o, $compssUsers) = @_;
-
- $o->{rpmsrate_flags_chosen}{$_} = 0 foreach grep { /^CAT_/ } keys %{$o->{rpmsrate_flags_chosen}};
- $o->{rpmsrate_flags_chosen}{"CAT_$_"} = 1 foreach map { @{$_->{flags}} } grep { $_->{selected} } @$compssUsers;
- $o->{rpmsrate_flags_chosen}{CAT_SYSTEM} = 1;
-}
-
-
-sub rpmsrate_always_flags {
- my ($o) = @_;
-
- my $rpmsrate_flags_chosen = {};
- $rpmsrate_flags_chosen->{uc($_)} = 1 foreach grep { modules::probe_category("multimedia/$_") } modules::sub_categories('multimedia');
- $rpmsrate_flags_chosen->{uc($_)} = 1 foreach map { $_->{driver} =~ /Flag:(.*)/ } detect_devices::probeall();
- $rpmsrate_flags_chosen->{DOCS} = !$o->{excludedocs};
- $rpmsrate_flags_chosen->{UTF8} = $o->{locale}{utf8};
- $rpmsrate_flags_chosen->{BURNER} = 1 if detect_devices::burners();
- $rpmsrate_flags_chosen->{DVD} = 1 if detect_devices::dvdroms();
- $rpmsrate_flags_chosen->{USB} = 1 if $o->{modules_conf}->get_probeall("usb-interface");
- $rpmsrate_flags_chosen->{PCMCIA} = 1 if detect_devices::hasPCMCIA();
- $rpmsrate_flags_chosen->{HIGH_SECURITY} = 1 if $o->{security} > 3;
- $rpmsrate_flags_chosen->{BIGMEM} = 1 if detect_devices::BIGMEM();
- $rpmsrate_flags_chosen->{SMP} = 1 if detect_devices::hasSMP();
- $rpmsrate_flags_chosen->{CDCOM} = 1 if any { $_->{descr} =~ /commercial/i } values %{$o->{packages}{mediums}};
- $rpmsrate_flags_chosen->{TV} = 1 if detect_devices::getTVcards();
- $rpmsrate_flags_chosen->{'3D'} = 1 if
- detect_devices::matching_desc__regexp('Matrox.* G[245][05]0') ||
- detect_devices::matching_desc__regexp('Rage X[CL]') ||
- detect_devices::matching_desc__regexp('3D Rage (?:LT|Pro)') ||
- detect_devices::matching_desc__regexp('Voodoo [35]') ||
- detect_devices::matching_desc__regexp('Voodoo Banshee') ||
- detect_devices::matching_desc__regexp('8281[05].* CGC') ||
- detect_devices::matching_desc__regexp('Rage 128') ||
- detect_devices::matching_desc__regexp('Radeon ') || #- all Radeon card are now 3D with 4.3.0
- detect_devices::matching_desc__regexp('[nN]Vidia.*T[nN]T2') || #- TNT2 cards
- detect_devices::matching_desc__regexp('[nN][vV]idia.*NV[56]') ||
- detect_devices::matching_desc__regexp('[nN][vV]idia.*Vanta') ||
- detect_devices::matching_desc__regexp('[nN][vV]idia.*[gG]e[fF]orce') || #- GeForce cards
- detect_devices::matching_desc__regexp('[nN][vV]idia.*NV1[15]') ||
- detect_devices::matching_desc__regexp('[nN][vV]idia.*Quadro');
-
- foreach (lang::langsLANGUAGE($o->{locale}{langs})) {
- $rpmsrate_flags_chosen->{qq(LOCALES"$_")} = 1;
- }
- $rpmsrate_flags_chosen->{'CHARSET"' . lang::l2charset($o->{locale}{lang}) . '"'} = 1;
-
- $rpmsrate_flags_chosen;
-}
-
-sub default_packages {
- my ($o) = @_;
- my @l;
-
- push @l, "brltty" if cat_("/proc/cmdline") =~ /brltty=/;
- push @l, "nfs-utils-clients" if $o->{method} eq "nfs";
- push @l, "numlock" if $o->{miscellaneous}{numlock};
- push @l, "mdadm" if !is_empty_array_ref($o->{all_hds}{raids});
- push @l, "lvm2" if !is_empty_array_ref($o->{all_hds}{lvms});
- push @l, "alsa", "alsa-utils" if any { $o->{modules_conf}->get_alias("sound-slot-$_") =~ /^snd-/ } 0 .. 4;
- push @l, map { if_($_->{driver} =~ /^Pkg:(.*)/, $1) } detect_devices::probeall();
-
- my $dmi_BIOS = detect_devices::dmidecode_category('BIOS');
- my $dmi_Base_Board = detect_devices::dmidecode_category('Base Board');
- if ($dmi_BIOS->{Vendor} eq 'COMPAL' && $dmi_BIOS->{Characteristics} =~ /Function key-initiated network boot is supported/
- || $dmi_Base_Board->{Manufacturer} =~ /^ACER/ && $dmi_Base_Board->{'Product Name'} =~ /TravelMate 610/) {
- modules::append_to_modules_loaded_at_startup_for_all_kernels('acerhk');
- }
-
- push @l, "grub" if isLoopback(fs::get::root($o->{fstab}));
- push @l, uniq(grep { $_ } map { fs::format::package_needed_for_partition_type($_) } @{$o->{fstab}});
-
- my @locale_pkgs = map { pkgs::packagesProviding($o->{packages}, 'locales-' . $_) } lang::langsLANGUAGE($o->{locale}{langs});
- unshift @l, uniq(map { $_->name } @locale_pkgs);
-
- @l;
-}
-
-sub select_default_packages {
- my ($o) = @_;
- pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, $_) || next) foreach @{$o->{default_packages}};
-}
-
-sub unselectMostPackages {
- my ($o) = @_;
- pkgs::unselectAllPackages($o->{packages});
- select_default_packages($o);
-}
-
-sub warnAboutNaughtyServers {
- my ($o) = @_;
- my @naughtyServers = pkgs::naughtyServers($o->{packages}) or return 1;
- my $r = $o->ask_from_list_('',
-formatAlaTeX(
- #-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("You have selected the following server(s): %s
-
-
-These servers are activated by default. They do not have any known security
-issues, but some new ones could be found. In that case, you must make sure
-to upgrade as soon as possible.
-
-
-Do you really want to install these servers?
-", join(", ", @naughtyServers))), [ N_("Yes"), N_("No") ], 'Yes') or return;
- if ($r ne 'Yes') {
- log::l("unselecting naughty servers");
- pkgs::unselectPackage($o->{packages}, pkgs::packageByName($o->{packages}, $_)) foreach @naughtyServers;
- }
- 1;
-}
-
-sub warnAboutRemovedPackages {
- my ($o, $packages) = @_;
- my @removedPackages = keys %{$packages->{state}{ask_remove} || {}} or return;
- if (!$o->ask_yesorno('',
-formatAlaTeX(
- #-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("The following packages will be removed to allow upgrading your system: %s
-
-
-Do you really want to remove these packages?
-", join(", ", @removedPackages))), 1)) {
- $packages->{state}{ask_remove} = {};
- }
-}
-
-sub addToBeDone(&$) {
- my ($f, $step) = @_;
-
- return &$f() if $::o->{steps}{$step}{done};
-
- push @{$::o->{steps}{$step}{toBeDone}}, $f;
-}
-
-sub set_authentication {
- my ($o) = @_;
-
- my $when_network_is_up = sub {
- my ($f) = @_;
- #- defer running xxx - no network yet
- addToBeDone {
- require install_steps;
- install_steps::upNetwork($o, 'pppAvoided');
- $f->();
- } 'configureNetwork';
- };
- require authentication;
- authentication::set($o, $o->{netc}, $o->{authentication} ||= {}, $when_network_is_up);
-}
-
-sub killCardServices() {
- my $pid = chomp_(cat_("/tmp/cardmgr.pid"));
- $pid and kill(15, $pid); #- send SIGTERM
-}
-
-sub unlockCdrom() {
- my $cdrom = cat_("/proc/mounts") =~ m!(/dev/\S+)\s+(?:/mnt/cdrom|/tmp/image)! && $1 or return;
- eval { ioctl(detect_devices::tryOpen($cdrom), c::CDROM_LOCKDOOR(), 0) };
- $@ and log::l("unlock cdrom ($cdrom) failed: $@");
-}
-
-sub openCdromTray {
- my ($cdrom) = @_;
- eval { ioctl(detect_devices::tryOpen($cdrom), c::CDROMEJECT(), 1) };
- $@ and log::l("ejection failed: $@");
-}
-
-sub ejectCdrom {
- my ($o_cdrom, $o_mountpoint) = @_;
- getFile("XXX"); #- close still opened filehandle
- my $cdrom;
- my $mounts = cat_("/proc/mounts");
- if ($o_mountpoint) {
- $cdrom = $o_cdrom || $mounts =~ m!(/dev/\S+)\s+(/mnt/cdrom|/tmp/image)! && $1;
- } else {
- my $mntpt;
- if ($o_cdrom) {
- $cdrom = $mounts =~ m!((?:/dev/)?$o_cdrom)\s+(/mnt/cdrom|/tmp/image)! && $1;
- $mntpt = $2;
- } else {
- $cdrom = $mounts =~ m!(/dev/\S+)\s+(/mnt/cdrom|/tmp/image)! && $1;
- $mntpt = $2;
- }
- $o_mountpoint ||= $cdrom ? $mntpt || '/tmp/image' : '';
- }
- $cdrom ||= $o_cdrom;
-
- #- umount BEFORE opening the cdrom device otherwise the umount will
- #- D state if the cdrom is already removed
- $o_mountpoint and eval { fs::umount($o_mountpoint) };
- $@ and warnAboutFilesStillOpen();
- return if is_xbox();
- openCdromTray($cdrom);
-}
-
-sub warnAboutFilesStillOpen() {
- log::l("files still open: ", readlink($_)) foreach map { glob_("$_/fd/*") } glob_("/proc/*");
-}
-
-sub install_urpmi {
- my ($method, $packages, $mediums) = @_;
-
- my $hdInstallPath = any::hdInstallPath();
-
- #- rare case where urpmi cannot be installed (no hd install path).
- our $copied_rpms_on_disk;
- $method eq 'disk' && !$hdInstallPath && !$copied_rpms_on_disk and return;
-
- log::l("install_urpmi $method");
- #- clean to avoid opening twice the rpm db.
- delete $packages->{rpmdb};
-
- #- import pubkey in rpmdb.
- my $db = pkgs::rpmDbOpenForInstall();
- $packages->parse_pubkeys(db => $db);
- foreach my $medium (values %$mediums) {
- $packages->import_needed_pubkeys($medium->{pubkey}, db => $db, callback => sub {
- my (undef, undef, $_k, $id, $imported) = @_;
- if ($id) {
- log::l(($imported ? "imported" : "found") . " key=$id for medium $medium->{descr}");
- $medium->{key_ids}{$id} = undef;
- }
- });
- }
-
- my @cfg;
- foreach (sort { $a->{medium} <=> $b->{medium} } values %$mediums) {
- my $name = $_->{fakemedium};
- if ($_->{ignored} || $_->{selected}) {
- my $curmethod = $_->{method} || $::o->{method};
- my $dir = (($copied_rpms_on_disk ? "/var/ftp/pub/Mandrivalinux" : '')
- || $_->{prefix} || ${{ nfs => "file://mnt/nfs",
- disk => "file:/" . $hdInstallPath,
- ftp => $ENV{URLPREFIX},
- http => $ENV{URLPREFIX},
- cdrom => "removable://mnt/cdrom" }}{$curmethod} ||
- #- for live_update or live_install script.
- readlink("/tmp/image/media") =~ m,^(/.*)/media/*$, && "removable:/$1") . "/$_->{rpmsdir}";
- #- use list file only if visible password or macro.
- my $need_list = $dir =~ m,^(?:[^:]*://[^/:\@]*:[^/:\@]+\@|.*%{),; #- }
-
- my $removable_device;
-
- if ($curmethod eq 'disk-iso') {
- my $p = find { $_->{real_mntpoint} eq '/tmp/hdimage' } @{$::o->{fstab}} or
- log::l("unable to find ISO image mountpoint, not adding urpmi media"), next;
- my $iso_info = find_ISO_image_labelled($_->{descr}) or
- log::l("unable to find ISO image labelled $name, not adding urpmi media"), next;
- my ($iso_path) = $iso_info->{file} =~ m,^/tmp/hdimage/+(.*), or
- log::l("unable to find ISO image file name ($iso_info->{file}), not adding urpmi media"), next;
- my $dest = "/mnt/inst_iso";
- $dir = "removable:/$dest/$_->{rpmsdir}";
- -d "$::prefix$dest" or mkdir_p("$::prefix$dest");
- #- FIXME: don't use /mnt/hd but really try to find the mount point
- $removable_device = ($p->{mntpoint} || "/mnt/hd") . "/$iso_path";
- } elsif ($curmethod eq 'cdrom') {
- $removable_device = '/dev/cdrom';
- my $p; $p = fs::get::mntpoint2part("/tmp/image", $::o->{fstab})
- and $removable_device = $p->{device};
- $_->{static} = 1;
- }
-
- #- build a list file if needed.
- if ($need_list) {
- my $mask = umask 077;
- open(my $LIST, ">$::prefix/var/lib/urpmi/list.$name") or log::l("failed to write list.$name");
- umask $mask;
-
- #- build list file using internal data, synthesis file should exist.
- if ($_->{end} > $_->{start}) {
- #- WARNING this method of build only works because synthesis (or hdlist)
- #- has been read.
- foreach (@{$packages->{depslist}}[$_->{start} .. $_->{end}]) {
- my $arch = $_->arch;
- my $ldir = $dir;
- $ldir =~ s|/([^/]*)%{ARCH}|/./$1$arch|; $ldir =~ s|%{ARCH}|$arch|g;
- print $LIST "$ldir/" . $_->filename . "\n";
- }
- } else {
- #- need to use another method here to build list file.
- open(my $F, "parsehdlist '$::prefix/var/lib/urpmi/hdlist.$name.cz' |");
- local $_;
- while (<$F>) {
- my ($arch) = /\.([^\.]+)\.rpm$/;
- my $ldir = $dir;
- $ldir =~ s|/([^/]*)%{ARCH}|/./$1$arch|; $ldir =~ s|%{ARCH}|$arch|g;
- print $LIST "$ldir/$_";
- }
- close $F;
- }
- close $LIST;
- }
-
- #- build a names file
- if (open my $F, ">", "$::prefix/var/lib/urpmi/names.$name") {
- if (defined $_->{start} && defined $_->{end}) {
- foreach ($_->{start} .. $_->{end}) {
- print $F $packages->{depslist}[$_]->name . "\n";
- }
- }
- close $F;
- }
-
- #- build synthesis file if there are still not existing (ie not copied from mirror).
- if (-s "$::prefix/var/lib/urpmi/synthesis.hdlist.$name.cz" <= 32) {
- unlink "$::prefix/var/lib/urpmi/synthesis.hdlist.$name.cz";
- run_program::rooted($::prefix, "parsehdlist", ">", "/var/lib/urpmi/synthesis.hdlist.$name",
- "--synthesis", "/var/lib/urpmi/hdlist.$name.cz");
- run_program::rooted($::prefix, "gzip", "-S", ".cz", "/var/lib/urpmi/synthesis.hdlist.$name");
- }
-
- my ($qname, $qdir) = ($name, $dir);
- $qname =~ s/(\s)/\\$1/g; $qdir =~ s/(\s)/\\$1/g;
-
- #- compute correctly reference to media/media_info
- my $with;
- if ($_->{update}) {
- $with = "media_info/hdlist.cz";
- } elsif ($_->{with_hdlist}) {
- $with = $_->{with_hdlist};
- } else {
- $with = $_->{rpmsdir};
- $with =~ s|/[^/]*%{ARCH}.*||;
- $with =~ s|/+|/|g; $with =~ s|/$||; $with =~ s|[^/]||g; $with =~ s!/!../!g;
- $with .= "../media/media_info/$_->{hdlist}";
- }
-
- #- output new urpmi.cfg format here.
- push @cfg, "$qname " . ($need_list ? "" : $qdir) . " {
- hdlist: hdlist.$name.cz
- with_hdlist: $with" . ($need_list ? "
- list: list.$name" : "") . (keys(%{$_->{key_ids}}) ? "
- key-ids: " . join(',', keys(%{$_->{key_ids}})) : "") . (defined $removable_device && "
- removable: $removable_device") . ($_->{update} ? "
- update" : "") . ($_->{static} ? "
- static" : "") . "
-}
-
-";
- } else {
- #- remove not selected media by removing hdlist and synthesis files copied.
- log::l("removing media $name");
- unlink "$::prefix/var/lib/urpmi/hdlist.$name.cz";
- unlink "$::prefix/var/lib/urpmi/synthesis.hdlist.$name.cz";
- }
- }
- #- touch a MD5SUM file and write config file
- eval { output("$::prefix/var/lib/urpmi/MD5SUM", '') };
- eval { output "$::prefix/etc/urpmi/urpmi.cfg", @cfg };
-}
-
-
-#-###############################################################################
-#- kde stuff
-#-###############################################################################
-sub kderc_largedisplay {
- my ($prefix) = @_;
-
- update_gnomekderc($_, 'KDE',
- Contrast => 7,
- kfmIconStyle => "Large",
- kpanelIconStyle => "Normal", #- to change to Large when icons looks better
- KDEIconStyle => "Large") foreach list_skels($prefix, '.kderc');
-
- substInFile {
- s/^(GridWidth)=85/$1=100/;
- s/^(GridHeight)=70/$1=75/;
- } $_ foreach list_skels($prefix, '.kde/share/config/kfmrc');
-}
-
-sub kdemove_desktop_file {
- my ($prefix) = @_;
- my @toMove = qw(doc.kdelnk news.kdelnk updates.kdelnk home.kdelnk printer.kdelnk floppy.kdelnk cdrom.kdelnk FLOPPY.kdelnk CDROM.kdelnk);
-
- #- remove any existing save in Trash of each user and
- #- move appropriate file there after an upgrade.
- foreach my $dir (grep { -d $_ } list_skels($prefix, 'Desktop')) {
- renamef("$dir/$_", "$dir/Trash/$_")
- foreach grep { -e "$dir/$_" } @toMove, grep { /\.rpmorig$/ } all($dir);
- }
-}
-
-
-#-###############################################################################
-#- auto_install stuff
-#-###############################################################################
-sub auto_inst_file() { "$::prefix/root/drakx/auto_inst.cfg.pl" }
-
-sub report_bug() {
- any::report_bug('auto_inst' => g_auto_install('', 1));
-}
-
-sub g_auto_install {
- my ($b_replay, $b_respect_privacy) = @_;
- my $o = {};
-
- require pkgs;
- $o->{default_packages} = pkgs::selected_leaves($::o->{packages});
-
- my @fields = qw(mntpoint fs_type size);
- $o->{partitions} = [ map {
- my %l; @l{@fields} = @$_{@fields}; \%l;
- } grep {
- $_->{mntpoint} && fs::format::known_type($_);
- } @{$::o->{fstab}} ];
-
- exists $::o->{$_} and $o->{$_} = $::o->{$_} foreach qw(locale authentication mouse netc timezone superuser intf keyboard users partitioning isUpgrade manualFstab nomouseprobe crypto security security_user libsafe netcnx useSupermount autoExitInstall X services postInstall postInstallNonRooted); #- TODO modules bootloader
-
- $o->{printer} = $::o->{printer} if $::o->{printer};
-
- local $o->{partitioning}{auto_allocate} = !$b_replay;
- $o->{autoExitInstall} = !$b_replay;
- $o->{interactiveSteps} = [ 'doPartitionDisks', 'formatPartitions' ] if $b_replay;
-
- #- deep copy because we're modifying it below
- $o->{users} = $b_respect_privacy ? [] : [ @{$o->{users} || []} ];
-
- my @user_info_to_remove = (
- if_($b_respect_privacy, qw(realname pw)),
- qw(oldu oldg password password2),
- );
- $_ = { %{$_ || {}} }, delete @$_{@user_info_to_remove} foreach $o->{superuser}, @{$o->{users} || []};
-
- if ($b_respect_privacy && $o->{netcnx}) {
- if (my $type = $o->{netcnx}{type}) {
- my @netcnx_type_to_remove = qw(passwd passwd2 login phone_in phone_out);
- $_ = { %{$_ || {}} }, delete @$_{@netcnx_type_to_remove} foreach $o->{netcnx}{$type};
- }
- }
- my $warn_privacy = $b_respect_privacy ? "!! This file has been simplified to respect privacy when reporting problems.
-# You should use /root/drakx/auto_inst.cfg.pl instead !!\n#" : '';
-
- require Data::Dumper;
- my $str = join('',
-"#!/usr/bin/perl -cw
-# $warn_privacy
-# You should check the syntax of this file before using it in an auto-install.
-# You can do this with 'perl -cw auto_inst.cfg.pl' or by executing this file
-# (note the '#!/usr/bin/perl -cw' on the first line).
-", Data::Dumper->Dump([$o], ['$o']), "\0");
- $str =~ s/ {8}/\t/g; #- replace all 8 space char by only one tabulation, this reduces file size so much :-)
- $str;
-}
-
-sub getAndSaveInstallFloppies {
- my ($o, $dest_dir, $name) = @_;
-
- if ($postinstall_rpms && -d $postinstall_rpms && -r "$postinstall_rpms/auto_install.img") {
- log::l("getAndSaveInstallFloppies: using file saved as $postinstall_rpms/auto_install.img");
- cp_af("$postinstall_rpms/auto_install.img", "$dest_dir/$name.img");
- "$dest_dir/$name.img";
- } else {
- my $image = cat_("/proc/cmdline") =~ /pcmcia/ ? "pcmcia" :
- arch() =~ /ia64|ppc/ ? "all" : #- we only use all.img there
- ${{ disk => 'hd_grub', 'disk-iso' => 'hd_grub', cdrom => 'cdrom', ftp => 'network', nfs => 'network', http => 'network' }}{$o->{method}};
- my $have_drivers = $image eq 'network';
- $image .= arch() =~ /sparc64/ && "64"; #- for sparc64 there are a specific set of image.
-
- if ($have_drivers) {
- getAndSaveFile("install/images/${image}_drivers.img", "$dest_dir/${name}_drivers.img") or log::l("failed to write Install Floppy (${image}_drivers.img) to $dest_dir/${name}_drivers.img"), return;
- }
- getAndSaveFile("install/images/$image.img", "$dest_dir/$name.img") or log::l("failed to write Install Floppy ($image.img) to $dest_dir/$name.img"), return;
-
- "$dest_dir/$name.img", if_($have_drivers, "$dest_dir/${name}_drivers.img");
- }
-}
-
-sub getAndSaveAutoInstallFloppies {
- my ($o, $replay) = @_;
- my $name = ($replay ? 'replay' : 'auto') . '_install';
- my $dest_dir = "$o->{prefix}/root/drakx";
-
- eval { modules::load('loop') };
-
- if (arch() =~ /ia64/) {
- #- nothing yet
- } else {
- my $mountdir = "$o->{prefix}/root/aif-mount"; -d $mountdir or mkdir $mountdir, 0755;
- my $param = 'kickstart=floppy ' . generate_automatic_stage1_params($o);
-
- my @imgs = getAndSaveInstallFloppies($o, $dest_dir, $name) or return;
-
- foreach my $img (@imgs) {
- my $dev = devices::set_loop($img) or log::l("couldn't set loopback device"), return;
- find { eval { fs::mount($dev, $mountdir, $_, 0); 1 } } qw(ext2 vfat) or return;
-
- if (-e "$mountdir/menu.lst") {
- # hd_grub boot disk is different than others
- substInFile {
- s/^(\s*timeout.*)/timeout 1/;
- s/\bautomatic=method:disk/$param/;
- } "$mountdir/menu.lst";
- } elsif (-e "$mountdir/syslinux.cfg") {
- #- make room first
- unlink "$mountdir/help.msg", "$mountdir/boot.msg";
-
- substInFile {
- s/timeout.*/$replay ? 'timeout 1' : ''/e;
- s/^(\s*append)/$1 $param/;
- } "$mountdir/syslinux.cfg";
-
- output "$mountdir/boot.msg", $replay ? '' : "\n0c" .
-"!! If you press enter, an auto-install is going to start.
- All data on this computer is going to be lost,
- including any Windows partitions !!
-" . "07\n";
- }
-
- if (@imgs == 1 || $img =~ /drivers/) {
- local $o->{partitioning}{clearall} = !$replay;
- eval { output("$mountdir/auto_inst.cfg", g_auto_install($replay)) };
- $@ and log::l("Warning: <", formatError($@), ">");
- }
-
- fs::umount($mountdir);
- devices::del_loop($dev);
- }
- rmdir $mountdir;
- @imgs;
- }
-}
-
-
-sub g_default_packages {
- my ($o) = @_;
-
- my ($_h, $file) = media_browser($o, 'save', 'package_list.pl') or return;
-
- require Data::Dumper;
- my $str = Data::Dumper->Dump([ { default_packages => pkgs::selected_leaves($o->{packages}) } ], ['$o']);
- $str =~ s/ {8}/\t/g;
- output($file,
- "# You should always check the syntax with 'perl -cw auto_inst.cfg.pl'\n" .
- "# before testing. To use it, boot with ``linux defcfg=floppy''\n" .
- $str . "\0");
-}
-
-sub loadO {
- my ($O, $f) = @_; $f ||= auto_inst_file();
- my $o;
- if ($f =~ /^(floppy|patch)$/) {
- my $f = $f eq "floppy" ? 'auto_inst.cfg' : "patch";
- unless ($::testing) {
- my $dev = devices::make(detect_devices::floppy());
- foreach my $fs (arch() =~ /sparc/ ? 'romfs' : ('ext2', 'vfat')) {
- eval { fs::mount($dev, '/mnt', $fs, 'readonly'); 1 } and goto mount_ok;
- }
- die "Could not mount floppy [$dev]";
- mount_ok:
- $f = "/mnt/$f";
- }
- -e $f or $f .= '.pl';
-
- my $_b = before_leaving {
- fs::umount("/mnt") unless $::testing;
- modules::unload(qw(vfat fat));
- };
- $o = loadO($O, $f);
- } else {
- my $fh;
- if (ref $f) {
- $fh = $f;
- } else {
- -e "$f.pl" and $f .= ".pl" unless -e $f;
-
- if (-e $f) { open $fh, $f } else { $fh = getFile($f) or die N("Error reading file %s", $f) }
- }
- {
- local $/ = "\0";
- no strict;
- eval <$fh>;
- close $fh;
- $@ and die;
- }
- $O and add2hash_($o ||= {}, $O);
- }
- $O and bless $o, ref $O;
-
- #- handle backward compatibility for things that changed
- foreach (@{$o->{partitions} || []}, @{$o->{manualFstab} || []}) {
- if (my $type = delete $_->{type}) {
- if ($type =~ /^(0x)?(\d*)$/) {
- fs::type::set_pt_type($_, $type);
- } else {
- fs::type::set_fs_type($_, $type);
- }
- }
- }
- #- {rpmsrate_flags_chosen} was called {compssUsersChoice}
- if (my $rpmsrate_flags_chosen = delete $o->{compssUsersChoice}) {
- $o->{rpmsrate_flags_chosen} = $rpmsrate_flags_chosen;
- }
- #- compssUsers flags are now named CAT_XXX
- if ($o->{rpmsrate_flags_chosen} &&
- ! any { /^CAT_/ } keys %{$o->{rpmsrate_flags_chosen}}) {
- #- we don't really know if this is needed for compatibility, but it won't hurt :)
- foreach (keys %{$o->{rpmsrate_flags_chosen}}) {
- $o->{rpmsrate_flags_chosen}{"CAT_$_"} = $o->{rpmsrate_flags_chosen}{$_};
- }
- #- it used to be always selected
- $o->{rpmsrate_flags_chosen}{CAT_SYSTEM} = 1;
- }
-
- $o;
-}
-
-sub generate_automatic_stage1_params {
- my ($o) = @_;
-
- my $method = $o->{method};
- my @ks;
-
- if ($o->{method} eq 'http') {
- $ENV{URLPREFIX} =~ m!(http|ftp)://([^/:]+)(.*)! or die;
- $method = $1; #- in stage1, FTP via HTTP proxy is available through FTP config, not HTTP
- @ks = (server => $2, directory => $3);
- } elsif ($o->{method} eq 'ftp') {
- @ks = (server => $ENV{HOST}, directory => $ENV{PREFIX}, user => $ENV{LOGIN}, pass => $ENV{PASSWORD});
- } elsif ($o->{method} eq 'nfs') {
- cat_("/proc/mounts") =~ m|(\S+):(\S+)\s+/tmp/nfsimage| or internal_error("can not find nfsimage");
- @ks = (server => $1, directory => $2);
- }
- @ks = (method => $method, @ks);
-
- if (member($o->{method}, qw(http ftp nfs))) {
- if ($ENV{PROXY}) {
- push @ks, proxy_host => $ENV{PROXY}, proxy_port => $ENV{PROXYPORT};
- }
- my ($intf) = values %{$o->{intf}};
- push @ks, interface => $intf->{DEVICE};
- if ($intf->{BOOTPROTO} eq 'dhcp') {
- push @ks, network => 'dhcp';
- } else {
- push @ks, network => 'static', ip => $intf->{IPADDR}, netmask => $intf->{NETMASK}, gateway => $o->{netc}{GATEWAY};
- require network::network;
- if (my @dnss = network::network::dnsServers($o->{netc})) {
- push @ks, dns => $dnss[0];
- }
- }
- }
-
- #- sync it with ../mdk-stage1/automatic.c
- my %aliases = (method => 'met', network => 'netw', interface => 'int', gateway => 'gat', netmask => 'netm',
- adsluser => 'adslu', adslpass => 'adslp', hostname => 'hos', domain => 'dom', server => 'ser',
- directory => 'dir', user => 'use', pass => 'pas', disk => 'dis', partition => 'par');
-
- 'automatic=' . join(',', map { ($aliases{$_->[0]} || $_->[0]) . ':' . $_->[1] } group_by2(@ks));
-}
-
-sub guess_mount_point {
- my ($part, $prefix, $user) = @_;
-
- my %l = (
- '/' => 'etc/fstab',
- '/boot' => 'vmlinuz',
- '/tmp' => '.X11-unix',
- '/usr' => 'X11R6',
- '/var' => 'catman',
- );
-
- my $handle = any::inspect($part, $prefix) or return;
- my $d = $handle->{dir};
- my $mnt = find { -e "$d/$l{$_}" } keys %l;
- $mnt ||= (stat("$d/.bashrc"))[4] ? '/root' : '/home/user' . ++$$user if -e "$d/.bashrc";
- $mnt ||= (any { -d $_ && (stat($_))[4] >= 500 && -e "$_/.bashrc" } glob_($d)) ? '/home' : '';
- ($mnt, $handle);
-}
-
-sub suggest_mount_points {
- my ($fstab, $prefix, $uniq) = @_;
-
- my $user;
- foreach my $part (grep { isTrueFS($_) } @$fstab) {
- $part->{mntpoint} && !$part->{unsafeMntpoint} and next; #- if already found via an fstab
-
- my ($mnt, $handle) = guess_mount_point($part, $prefix, \$user) or next;
-
- next if $uniq && fs::get::mntpoint2part($mnt, $fstab);
- $part->{mntpoint} = $mnt; delete $part->{unsafeMntpoint};
-
- #- try to find other mount points via fstab
- fs::merge_info_from_fstab($fstab, $handle->{dir}, $uniq, 'loose') if $mnt eq '/';
- }
- $_->{mntpoint} and log::l("suggest_mount_points: $_->{device} -> $_->{mntpoint}") foreach @$fstab;
-}
-
-sub find_root_parts {
- my ($fstab, $prefix) = @_;
- map {
- my $handle = any::inspect($_, $prefix);
- if (my $f = $handle && common::release_file($handle->{dir})) {
- my $s = cat_("$handle->{dir}$f");
- chomp($s);
- $s =~ s/\s+for\s+\S+//;
- log::l("find_root_parts found $_->{device}: $s");
- { release => $s, part => $_, release_file => $f };
- } else { () }
- } @$fstab;
-}
-
-sub migrate_device_names {
- my ($all_hds, $from_fstab, $new_root, $root_from_fstab, $o_in) = @_;
-
- log::l("warning: fstab says root partition is $root_from_fstab->{device}, whereas we were reading fstab from $new_root->{device}");
- my ($old_prefix, $old_part_number) = devices::simple_partition_scan($root_from_fstab);
- my ($new_prefix, $new_part_number) = devices::simple_partition_scan($new_root);
-
- if ($old_part_number != $new_part_number) {
- log::l("argh, $root_from_fstab->{device} and $old_part_number->{device} are not the same partition number");
- return;
- }
-
- log::l("replacing $old_prefix with $new_prefix");
-
- my %h;
- foreach (@$from_fstab) {
- if ($_->{device} =~ s!^\Q$old_prefix!$new_prefix!) {
- #- this is simple to handle, nothing more to do
- } elsif ($_->{part_number}) {
- my $device_prefix = devices::part_prefix($_);
- push @{$h{$device_prefix}}, $_;
- } else {
- #- hopefully this does not need anything special
- }
- }
- my @from_fstab_per_hds = values %h or return;
-
-
- my @current_hds = grep { $new_root->{rootDevice} ne $_->{device} } fs::get::hds($all_hds);
-
- found_one:
- @from_fstab_per_hds or return;
-
- foreach my $from_fstab_per_hd (@from_fstab_per_hds) {
- my ($matching, $other) = partition {
- my $hd = $_;
- every {
- my $wanted = $_;
- my $part = find { $_->{part_number} eq $wanted->{part_number} } partition_table::get_normal_parts($hd);
- $part && $part->{fs_type} && fs::type::can_be_this_fs_type($wanted, $part->{fs_type});
- } @$from_fstab_per_hd;
- } @current_hds;
- @$matching == 1 or next;
-
- my ($hd) = @$matching;
- @current_hds = @$other;
- @from_fstab_per_hds = grep { $_ != $from_fstab_per_hd } @from_fstab_per_hds;
-
- log::l("$hd->{device} nicely corresponds to " . join(' ', map { $_->{device} } @$from_fstab_per_hd));
- foreach (@$from_fstab_per_hd) {
- partition_table::compute_device_name($_, $hd);
- }
- goto found_one;
- }
-
- #- we can not find one and only one matching hd
- my @from_fstab_not_handled = map { @$_ } @from_fstab_per_hds;
- log::l("we still do not know what to do with: " . join(' ', map { $_->{device} } @from_fstab_not_handled));
-
-
- if (!$o_in) {
- die 'still have';
- log::l("well, ignoring them!");
- return;
- }
-
- my $propositions_valid = every {
- my $wanted = $_;
- my @parts = grep { $_->{part_number} eq $wanted->{part_number}
- && $_->{fs_type} && fs::type::can_be_this_fs_type($wanted, $_->{fs_type}) } fs::get::hds_fstab(@current_hds);
- $wanted->{propositions} = \@parts;
- @parts > 0;
- } @from_fstab_not_handled;
-
- $o_in->ask_from('',
- N("The following disk(s) were renamed:"),
- [ map {
- { label => N("%s (previously named as %s)", $_->{mntpoint}, $_->{device}),
- val => \$_->{device}, format => sub { $_[0] && $_->{device} },
- list => [ '',
- $propositions_valid ? @{$_->{propositions}} :
- fs::get::hds_fstab(@current_hds) ] };
- } @from_fstab_not_handled ]);
-}
-
-sub use_root_part {
- my ($all_hds, $part, $o_in) = @_;
- my $migrate_device_names;
- {
- my $handle = any::inspect($part, $::prefix) or die;
-
- my @from_fstab = fs::read_fstab($handle->{dir}, '/etc/fstab', 'keep_default');
-
- my $root_from_fstab = fs::get::root_(\@from_fstab);
- if (!fsedit::is_same_hd($root_from_fstab, $part)) {
- $migrate_device_names = 1;
- log::l("from_fstab contained: $_->{device} $_->{mntpoint}") foreach @from_fstab;
- migrate_device_names($all_hds, \@from_fstab, $part, $root_from_fstab, $o_in);
- log::l("from_fstab now contains: $_->{device} $_->{mntpoint}") foreach @from_fstab;
- }
- fs::add2all_hds($all_hds, @from_fstab);
- log::l("fstab is now: $_->{device} $_->{mntpoint}") foreach fs::get::fstab($all_hds);
- }
- isSwap($_) and $_->{mntpoint} = 'swap' foreach fs::get::really_all_fstab($all_hds); #- use all available swap.
- $migrate_device_names;
-}
-
-sub getHds {
- my ($o, $o_in) = @_;
-
- getHds:
- my $all_hds = fsedit::get_hds($o->{partitioning}, $o_in);
- my $hds = $all_hds->{hds};
-
- if (is_empty_array_ref($hds) && !$::move) { #- no way
- die N("An error occurred - no valid devices were found on which to create new filesystems. Please check your hardware for the cause of this problem");
- }
-
- #- try to figure out if the same number of hds is available, use them if ok.
- @{$o->{all_hds}{hds} || []} == @$hds and return 1;
-
- fs::get_raw_hds('', $all_hds);
- fs::add2all_hds($all_hds, @{$o->{manualFstab}});
-
- $o->{all_hds} = $all_hds;
- $o->{fstab} = [ fs::get::really_all_fstab($all_hds) ];
- fs::merge_info_from_mtab($o->{fstab});
-
- my @win = grep { isFat_or_NTFS($_) && maybeFormatted($_) && !$_->{is_removable} } @{$o->{fstab}};
- log::l("win parts: ", join ",", map { $_->{device} } @win) if @win;
- if (@win == 1) {
- #- Suggest /boot/efi on ia64.
- $win[0]{mntpoint} = arch() =~ /ia64/ ? "/boot/efi" : "/mnt/windows";
- } else {
- my %w; foreach (@win) {
- my $v = $w{$_->{device_windobe}}++;
- $_->{mntpoint} = $_->{unsafeMntpoint} = "/mnt/win_" . lc($_->{device_windobe}) . ($v ? $v+1 : ''); #- lc cuz of StartOffice(!) cf dadou
- }
- }
-
- my @sunos = grep { $_->{pt_type} == 2 } @{$o->{fstab}}; #- take only into account root partitions.
- if (@sunos) {
- my $v = '';
- map { $_->{mntpoint} = $_->{unsafeMntpoint} = "/mnt/sunos" . ($v && ++$v) } @sunos;
- }
- #- a good job is to mount SunOS root partition, and to use mount point described here in /etc/vfstab.
-
- 1;
-}
-
-my %media_browser;
-sub media_browser {
- my ($in, $save, $o_suggested_name) = @_;
-
- my %media_type2text = (
- fd => N("Floppy"),
- hd => N("Hard Disk"),
- cdrom => N("CDROM"),
- );
- my @network_protocols = (if_(!$save, N_("HTTP")), N_("FTP"), N_("NFS"));
-
- my $to_text = sub {
- my ($hd) = @_;
- ($media_type2text{$hd->{media_type}} || $hd->{media_type}) . ': ' . partition_table::description($hd);
- };
-
- ask_media:
- my $all_hds = fsedit::get_hds({}, $in);
- fs::get_raw_hds('', $all_hds);
-
- my @raw_hds = grep { !$save || $_->{media_type} ne 'cdrom' } @{$all_hds->{raw_hds}};
- my @dev_and_text = group_by2(
- (map { $_ => $to_text->($_) } @raw_hds),
- (map {
- my $hd = $to_text->($_);
- map { $_ => join('\1', $hd, partition_table::description($_)) } grep { isTrueFS($_) || isOtherAvailableFS($_) } fs::get::hds_fstab($_);
- } fs::get::hds($all_hds)),
- if_(member($::o->{method}, qw(ftp http nfs)) || install_steps::hasNetwork($::o),
- map { $_ => join('\1', N("Network"), translate($_)) } @network_protocols),
- );
-
- $in->ask_from_({
- messages => N("Please choose a media"),
- }, [
- { val => \$media_browser{dev}, separator => '\1', list => [ map { $_->[1] } @dev_and_text ] },
- ]) or return;
-
- my $dev = (find { $_->[1] eq $media_browser{dev} } @dev_and_text)->[0];
-
- if (member($dev, @network_protocols)) {
- install_interactive::upNetwork($::o);
- if ($dev eq 'HTTP') {
- require http;
- $media_browser{network} ||= 'http://';
- } else {
- $in->ask_warn('', 'todo');
- goto ask_media;
- }
- while (1) {
- $in->ask_from('', 'URL', [
- { val => \$media_browser{network} }
- ]) or last;
-
- if ($dev eq 'HTTP') {
- my $fh = http::getFile($media_browser{network});
- $fh and return '', $fh;
- }
- }
- } else {
- if (!$dev->{fs_type} || $dev->{fs_type} eq 'auto' || $dev->{fs_type} =~ /:/) {
- if (my $p = fs::type::type_subpart_from_magic($dev)) {
- add2hash($p, $dev);
- $dev = $p;
- } else {
- $in->ask_warn(N("Error"), N("Bad media %s", partition_table::description($dev)));
- goto ask_media;
- }
- }
- my $file;
- if (my $h = any::inspect($dev, $::prefix, $save)) {
- while (1) {
- $file = $in->ask_filename({ save => $save,
- directory => $h->{dir},
- if_($o_suggested_name, file => "$h->{dir}/$o_suggested_name"),
- }) or last;
- if (-e $file && $save) {
- $in->ask_yesorno('', N("File already exists. Overwrite it?")) or next;
- }
- if ($save) {
- return $h, $file;
- } else {
- my $fh;
- open($fh, $file) and return $h, $fh;
- }
- }
- undef $h; #- help perl
- } else {
- $in->ask_warn(N("Error"), formatError($@));
- }
- goto ask_media;
- }
-}
-
-sub log_sizes {
- my ($o) = @_;
- my @df = MDK::Common::System::df($o->{prefix});
- log::l(sprintf "Installed: %s(df), %s(rpm)",
- formatXiB($df[0] - $df[1], 1024),
- formatXiB(sum(run_program::rooted_get_stdout($o->{prefix}, 'rpm', '-qa', '--queryformat', '%{size}\n')))) if -x "$o->{prefix}/bin/rpm";
-}
-
-sub X_options_from_o {
- my ($o) = @_;
- {
- freedriver => $o->{freedriver},
- allowFB => $o->{allowFB},
- };
-}
-
-sub screenshot_dir__and_move() {
- my ($dir1, $dir2) = ("$::prefix/root", '/tmp');
- if (-e $dir1) {
- if (-e "$dir2/DrakX-screenshots") {
- cp_af("$dir2/DrakX-screenshots", $dir1);
- rm_rf("$dir2/DrakX-screenshots");
- }
- $dir1;
- } else {
- $dir2;
- }
-}
-
-sub take_screenshot {
- my ($in) = @_;
- my $dir = screenshot_dir__and_move() . '/DrakX-screenshots';
- my $warn;
- if (!-e $dir) {
- mkdir $dir or $in->ask_warn('', N("Can not make screenshots before partitioning")), return;
- $warn = 1;
- }
- my $nb = 1;
- $nb++ while -e "$dir/$nb.png";
- system("fb2png /dev/fb0 $dir/$nb.png 0");
-
- $in->ask_warn('', N("Screenshots will be available after install in %s", "/root/DrakX-screenshots")) if $warn;
-}
-
-sub copy_advertising {
- my ($o) = @_;
-
- return if $::rootwidth < 800;
-
- my $f;
- my $source_dir = "install/extra/advertising";
- foreach ("." . $o->{locale}{lang}, "." . substr($o->{locale}{lang},0,2), '') {
- $f = getFile("$source_dir$_/list") or next;
- $source_dir = "$source_dir$_";
- }
- if (my @files = <$f>) {
- my $dir = "$o->{prefix}/tmp/drakx-images";
- mkdir $dir;
- unlink glob_("$dir/*");
- foreach (@files) {
- chomp;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/\.png/.pl/;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/\.pl/_icon.png/;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/_icon\.png/.png/;
- }
- @advertising_images = map { "$dir/$_" } @files;
- }
-}
-
-sub remove_advertising {
- my ($o) = @_;
- eval { rm_rf("$o->{prefix}/tmp/drakx-images") };
- @advertising_images = ();
-}
-
-sub disable_user_view() {
- substInFile { s/^UserView=.*/UserView=true/ } "$::prefix/usr/share/config/kdm/kdmrc";
- substInFile { s/^Browser=.*/Browser=0/ } "$::prefix/etc/X11/gdm/gdm.conf";
-}
-
-sub set_security {
- my ($o) = @_;
- {
- local $ENV{DRAKX_PASSWORD} = $o->{bootloader}{password};
- local $ENV{DURING_INSTALL} = 1;
- security::level::set($o->{security});
- }
- require security::various;
- security::various::config_libsafe($::prefix, $o->{libsafe});
- security::various::config_security_user($::prefix, $o->{security_user});
-}
-
-sub write_fstab {
- my ($o) = @_;
- fs::write_fstab($o->{all_hds}, $o->{prefix}) if !$o->{isUpgrade} || $o->{migrate_device_names};
-}
-
-my $clp_name = 'mdkinst.clp';
-sub clp_on_disk() { "$::prefix/tmp/$clp_name" }
-
-sub move_clp_to_disk() {
- return if -e clp_on_disk();
-
- my ($loop, $current_clp) = devices::find_clp_loop($clp_name) or return;
- log::l("move_clp_to_disk: copying $current_clp to ", clp_on_disk());
- cp_af($current_clp, clp_on_disk());
- run_program::run('losetup', '-r', $loop, clp_on_disk());
-
- #- in $current_clp eq "/tmp/$clp_name"
- unlink "/tmp/$clp_name";
-}
-
-#-###############################################################################
-#- pcmcia various
-#-###############################################################################
-sub configure_pcmcia {
- my ($modules_conf, $pcic) = @_;
-
- #- try to setup pcmcia if cardmgr is not running.
- my $running if 0;
- return if $running;
- $running = 1;
-
- log::l("i try to configure pcmcia services");
-
- symlink "/tmp/stage2/$_", $_ foreach "/etc/pcmcia";
-
- #- ds is an alias for pcmcia in recent 2.6 kernels
- #- but we don't have modules.alias in install, so try to load both
- eval { modules::load('pcmcia', $pcic, 'ds', 'pcmcia') };
-
- #- run cardmgr in foreground while it is configuring the card.
- run_program::run("cardmgr", "-f", "-m", "/modules");
- sleep(3);
-
- #- make sure to be aware of loaded module by cardmgr.
- modules::read_already_loaded($modules_conf);
-}
-
-
-1;
diff --git a/perl-install/install_gtk.pm b/perl-install/install_gtk.pm
deleted file mode 100644
index ca0d8ba6a..000000000
--- a/perl-install/install_gtk.pm
+++ /dev/null
@@ -1,312 +0,0 @@
-package install_gtk; # $Id$
-
-use diagnostics;
-use strict;
-
-use ugtk2;
-use mygtk2;
-use common;
-use lang;
-use devices;
-
-#-#####################################################################################
-#-INTERN CONSTANT
-#-#####################################################################################
-
-#- if we're running for the doc team, we want screenshots with
-#- a good B&W contrast: we'll override values of our theme
-my $theme_overriding_for_doc = q(style "galaxy-default"
-{
- base[SELECTED] = "#E0E0FF"
- base[ACTIVE] = "#E0E0FF"
- base[PRELIGHT] = "#E0E0FF"
- bg[SELECTED] = "#E0E0FF"
- bg[ACTIVE] = "#E0E0FF"
- bg[PRELIGHT] = "#E0E0FF"
- text[ACTIVE] = "#000000"
- text[PRELIGHT] = "#000000"
- text[SELECTED] = "#000000"
- fg[SELECTED] = "#000000"
-}
-
-style "white-on-blue"
-{
- base[NORMAL] = { 0.93, 0.93, 0.93 }
- bg[NORMAL] = { 0.93, 0.93, 0.93 }
-
- text[NORMAL] = "#000000"
- fg[NORMAL] = "#000000"
-}
-
-style "background"
-{
- bg[NORMAL] = { 0.93, 0.93, 0.93 }
-}
-
-style "background-logo"
-{
- bg[NORMAL] = { 0.70, 0.70, 0.70 }
-}
-widget "*logo*" style "background-logo"
-
-);
-
-#------------------------------------------------------------------------------
-sub load_rc {
- my ($o, $name) = @_;
-
- my $f = $name;
- -r $name or $f = find { -r $_ } map { "$_/themes-$name.rc" } ("share", $ENV{SHARE_PATH}, dirname(__FILE__));
- if ($f) {
- Gtk2::Rc->parse_string($o->{doc} ? $theme_overriding_for_doc : scalar cat_($f));
- }
-
- if ($::move) {
- #- override selection color since we will not do inverse-video on the text when it's images
- Gtk2::Rc->parse_string(q(
-style "galaxy-default"
-{
- base[ACTIVE] = "#CECECE"
- base[SELECTED] = "#CECECE"
- text[ACTIVE] = "#000000"
- text[PRELIGHT] = "#000000"
- text[SELECTED] = "#000000"
-}
-));
- }
-}
-
-#------------------------------------------------------------------------------
-sub load_font {
- my ($o) = @_;
-
- if (lang::text_direction_rtl()) {
- Gtk2::Widget->set_default_direction('rtl');
- my ($x, $y) = $::WizardWindow->get_position;
- my ($width) = $::WizardWindow->get_size;
- $::WizardWindow->move($::rootwidth - $width - $x, $y);
- }
-
- Gtk2::Rc->parse_string(q(
-style "default-font"
-{
- font_name = ") . lang::l2pango_font($o->{locale}{lang}) . q("
-}
-widget "*" style "default-font"
-
-));
-}
-
-#------------------------------------------------------------------------------
-sub default_theme {
- my ($o) = @_;
- $::move ? '' :
- $o->{simple_themes} || $o->{vga16} ? 'blue' : 'galaxy';
-}
-
-sub install_theme {
- my ($o) = @_;
-
- load_rc($o, $o->{theme} ||= default_theme($o));
- load_font($o);
-
- if (!$::move) {
- my $win = gtknew('Window', widget_name => 'background');
- $win->realize;
- mygtk2::set_root_window_background_with_gc($win->style->bg_gc('normal'));
- }
-}
-
-#------------------------------------------------------------------------------
-my %steps;
-sub create_steps_window {
- my ($o) = @_;
-
- return if $::stepswidth == 0;
-
- $o->{steps_window} and $o->{steps_window}->destroy;
-
- $steps{$_} ||= gtknew('Pixbuf', file => "steps_$_") foreach qw(on off);
- my $category = sub {
- gtknew('HBox', children_tight => [
- gtknew('Label', text => $_[0], widget_name => 'Step-categories')
- ]);
- };
-
- my @l = $category->(N("System installation"));
- foreach (grep { !eval $o->{steps}{$_}{hidden} } @{$o->{orderedSteps}}) {
- if ($_ eq 'setRootPassword') {
- push @l, '', $category->(N("System configuration"));
- }
- my $img = gtknew('Image', file => 'steps_off.png');
- $steps{steps}{$_}{img} = $img;
- push @l, gtknew('HBox', spacing => 7, children_tight => [ '', '', $img, translate($o->{steps}{$_}{text}) ]);
- }
-
- my $offset = 20;
- $o->{steps_window} =
- gtknew('Window', width => ($::stepswidth - $offset), widget_name => 'Steps',
- position => [ lang::text_direction_rtl() ? $::rootwidth - $::stepswidth : $offset, 150 ],
- child => gtknew('VBox', spacing => 6, children_tight => \@l));
- $o->{steps_window}->show;
-}
-
-sub update_steps_position {
- my ($o) = @_;
- return if !$steps{steps};
- my $last_step;
- foreach (@{$o->{orderedSteps}}) {
- exists $steps{steps}{$_} or next;
- if ($o->{steps}{$_}{entered} && !$o->{steps}{$_}{done}) {
- $steps{steps}{$_}{img}->set_from_pixbuf($steps{on});
- $last_step and $steps{steps}{$last_step}{img}->set_from_pixbuf($steps{off});
- return;
- }
- $last_step = $_;
- }
-}
-
-#------------------------------------------------------------------------------
-sub create_logo_window {
- my ($o) = @_;
-
- return if $::logowidth == 0 || $::move;
-
- mygtk2::may_destroy($o->{logo_window});
-
- my $file = $o->{meta_class} eq 'firewall' ? "logo-mandrake-Firewall.png" : "logo-mandrake.png";
-
- $o->{logo_window} =
- gtknew('Window',
- width => $::logowidth, height => $::logoheight,
- widget_name => 'logo',
- child => gtknew('Image', file => $file),
- );
- $o->{logo_window}->show;
-}
-
-#------------------------------------------------------------------------------
-sub init_gtk {
- my ($o) = @_;
-
- symlink("/tmp/stage2/etc/$_", "/etc/$_") foreach qw(gtk-2.0 pango fonts);
-
- if ($o->{vga16}) {
- #- inactivate antialias in VGA16 because it makes fonts look worse
- output('/tmp/fonts.conf',
-q(<fontconfig>
-<include>/etc/fonts/fonts.conf</include>
-<match target="font"><edit name="antialias"><bool>false</bool></edit></match>
-</fontconfig>
-));
- $ENV{FONTCONFIG_FILE} = '/tmp/fonts.conf';
- }
-
- Gtk2->init;
- Gtk2->set_locale;
-}
-
-#------------------------------------------------------------------------------
-sub init_sizes() {
- ($::rootwidth, $::rootheight) = (Gtk2::Gdk->screen_width, Gtk2::Gdk->screen_height);
- $::stepswidth = $::rootwidth <= 640 ? 0 : 200 if !$::move;
- ($::logowidth, $::logoheight) = $::rootwidth <= 640 ? (0, 0) : (500, 40);
- ($::windowwidth, $::windowheight) = ($::rootwidth - $::stepswidth, $::rootheight - $::helpheight - $::logoheight);
- ($::real_windowwidth, $::real_windowheight) = (576, 418);
- $::move and $::windowwidth -= 100;
-}
-
-sub handle_unsafe_mouse {
- my ($o, $window) = @_;
-
- $o->{mouse}{unsafe} or return;
-
- $window->add_events('pointer-motion-mask');
- my $signal; $signal = $window->signal_connect(motion_notify_event => sub {
- delete $o->{mouse}{unsafe};
- log::l("unsetting unsafe mouse");
- $window->signal_handler_disconnect($signal);
- });
-}
-
-sub special_shortcuts {
- my (undef, $event) = @_;
- my $d = ${{ $Gtk2::Gdk::Keysyms{F2} => 'screenshot', $Gtk2::Gdk::Keysyms{Delete} => 'restart' }}{$event->keyval};
- if ($d eq 'screenshot') {
- install_any::take_screenshot($::o);
- } elsif ($d eq 'restart' && member('control-mask', @{$event->state}) && member('mod1-mask', @{$event->state})) {
- log::l("restarting install");
- ugtk2->exit(0x35);
- }
- 0;
-}
-
-#------------------------------------------------------------------------------
-sub createXconf {
- my ($file, $mouse_type, $mouse_dev, $_wacom_dev, $Driver) = @_;
-
- symlinkf(devices::make($mouse_dev), "/dev/mouse") if $mouse_dev ne 'none';
-
- #- needed for imlib to start on 8-bit depth visual.
- symlink("/tmp/stage2/etc/imrc", "/etc/imrc");
- symlink("/tmp/stage2/etc/im_palette.pal", "/etc/im_palette.pal");
-
- #- remove "error opening security policy file" warning
- symlink("/tmp/stage2/etc/X11", "/etc/X11");
-
-if ($Driver) {
- output($file, sprintf(<<'END', ($::globetrotter ? "" : 'Option "XkbDisable"'), $mouse_type, $Driver, $Driver eq 'fbdev' ? '"default"' : '"800x600" "640x480"'));
-Section "Files"
- FontPath "/usr/X11R6/lib/X11/fonts:unscaled"
-EndSection
-
-Section "InputDevice"
- Identifier "Keyboard"
- Driver "keyboard"
- %s
- Option "XkbModel" "pc105"
- Option "XkbLayout" ""
-EndSection
-
-Section "InputDevice"
- Identifier "Mouse"
- Driver "mouse"
- Option "Protocol" "%s"
- Option "Device" "/dev/mouse"
- Option "ZAxisMapping" "4 5"
-EndSection
-
-Section "Monitor"
- Identifier "monitor"
- HorizSync 31.5-35.5
- VertRefresh 50-70
-EndSection
-
-Section "Device"
- Identifier "device"
- Driver "%s"
-EndSection
-
-Section "Screen"
- Identifier "screen"
- Device "device"
- Monitor "monitor"
- DefaultColorDepth 16
- Subsection "Display"
- Depth 16
- Modes %s
- EndSubsection
-EndSection
-
-Section "ServerLayout"
- Identifier "layout"
- Screen "screen"
- InputDevice "Mouse" "CorePointer"
- InputDevice "Keyboard" "CoreKeyboard"
-EndSection
-
-END
- }
-}
-
-1;
diff --git a/perl-install/install_interactive.pm b/perl-install/install_interactive.pm
deleted file mode 100644
index 8cc936d3d..000000000
--- a/perl-install/install_interactive.pm
+++ /dev/null
@@ -1,299 +0,0 @@
-package install_interactive; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use partition_table;
-use partition_table::raw;
-use fs::type;
-use detect_devices;
-use install_steps;
-use install_any;
-use devices;
-use fsedit;
-use log;
-
-
-sub tellAboutProprietaryModules {
- my ($o) = @_;
- my @l = grep { $_ } map { $_->{driver} =~ /^Bad:(.*)/ && $1 } detect_devices::probeall();
- $o->ask_warn('', formatAlaTeX(
-N("Some hardware on your computer needs ``proprietary'' drivers to work.
-You can find some information about them at: %s", join(", ", @l)))) if @l;
-}
-
-#- unit of $mb is mega bytes, min and max are in sectors, this
-#- function is used to convert back to sectors count the size of
-#- a partition ($mb) given from the interface (on Resize or Create).
-#- modified to take into account a true bounding with min and max.
-sub from_Mb {
- my ($mb, $min, $max) = @_;
- $mb <= $min >> 11 and return $min;
- $mb >= $max >> 11 and return $max;
- $mb * 2048;
-}
-
-sub partition_with_diskdrake {
- my ($o, $all_hds, $nowizard) = @_;
- my $ok;
-
- do {
- $ok = 1;
- my $do_force_reload = sub {
- $o->{all_hds} = fs::get::empty_all_hds();
- install_any::getHds($o, $o);
- $all_hds = $o->{all_hds};
- $o->{all_hds};
- };
- require diskdrake::interactive;
- {
- local $::expert = $::expert;
- diskdrake::interactive::main($o, $all_hds, $nowizard, $do_force_reload, $o->interactive_help_sub_display_id('partition_with_diskdrake'));
- }
- if (delete $o->{wizard}) {
- partitionWizard($o, 'nodiskdrake') or redo;
- return 1;
- }
- my @fstab = fs::get::fstab($all_hds);
-
- unless (fs::get::root_(\@fstab)) {
- $ok = 0;
- $o->ask_okcancel('', N("You must have a root partition.
-For this, create a partition (or click on an existing one).
-Then choose action ``Mount point'' and set it to `/'"), 1) or return;
- }
- if (!any { isSwap($_) } @fstab) {
- $ok &&= $o->ask_okcancel('', N("You do not have a swap partition.\n\nContinue anyway?"));
- }
- if (arch() =~ /ia64/ && !fs::get::has_mntpoint("/boot/efi", $all_hds)) {
- $o->ask_warn('', N("You must have a FAT partition mounted in /boot/efi"));
- $ok = '';
- }
- } until $ok;
- 1;
-}
-
-sub partitionWizardSolutions {
- my ($o, $all_hds) = @_;
- my $hds = $all_hds->{hds};
- my $fstab = [ fs::get::fstab($all_hds) ];
- my @wizlog;
- my (%solutions);
-
- my $min_linux = 400 << 11;
- my $max_linux = 2000 << 11;
- my $min_swap = 50 << 11;
- my $max_swap = 300 << 11;
- my $min_freewin = 100 << 11;
-
- # each solution is a [ score, text, function ], where the function retunrs true if succeeded
-
- my @hds_rw = grep { !$_->{readonly} } @$hds;
- my @hds_can_add = grep { $_->can_raw_add } @hds_rw;
- if (fs::get::hds_free_space(@hds_can_add) > $min_linux) {
- $solutions{free_space} = [ 20, N("Use free space"), sub { fsedit::auto_allocate($all_hds, $o->{partitions}); 1 } ];
- } else {
- push @wizlog, N("Not enough free space to allocate new partitions") . ": " .
- (@hds_can_add ?
- fs::get::hds_free_space(@hds_can_add) . " < $min_linux" :
- "no harddrive on which partitions can be added");
- }
-
- if (my @truefs = grep { isTrueLocalFS($_) } @$fstab) {
- #- value twice the ext2 partitions
- $solutions{existing_part} = [ 6 + @truefs + @$fstab, N("Use existing partitions"), sub { $o->ask_mntpoint_s($fstab) } ];
- } else {
- push @wizlog, N("There is no existing partition to use");
- }
-
- my @fats = grep { $_->{fs_type} eq 'vfat' } @$fstab;
- fs::df($_) foreach @fats;
- if (my @ok_forloopback = sort { $b->{free} <=> $a->{free} } grep { $_->{free} > $min_linux + $min_swap + $min_freewin } @fats) {
- $solutions{loopback} =
- [ -10 - @fats, N("Use the Windows partition for loopback"),
- sub {
- my ($s_root, $s_swap);
- my $part = $o->ask_from_listf('', N("Which partition do you want to use for Linux4Win?"), \&partition_table::description, \@ok_forloopback) or return;
- $max_swap = $min_swap + 1 if $part->{free} - $max_swap < $min_linux;
- $o->ask_from('', N("Choose the sizes"), [
- { label => N("Root partition size in MB: "), val => \$s_root, min => $min_linux >> 11, max => min($part->{free} - $max_swap, $max_linux) >> 11, type => 'range' },
- { label => N("Swap partition size in MB: "), val => \$s_swap, min => $min_swap >> 11, max => $max_swap >> 11, type => 'range' },
- ]) or return;
- push @{$part->{loopback}},
- { fs_type => 'ext3', loopback_file => '/lnx4win/linuxsys.img', mntpoint => '/', size => $s_root << 11, loopback_device => $part, notFormatted => 1 },
- { fs_type => 'swap', loopback_file => '/lnx4win/swapfile', mntpoint => 'swap', size => $s_swap << 11, loopback_device => $part, notFormatted => 1 };
- fsedit::recompute_loopbacks($all_hds);
- 1;
- } ];
- } else {
- push @wizlog, N("There is no FAT partition to use as loopback (or not enough space left)") .
- (@fats ? "\nFAT partitions:" . join('', map { "\n $_->{device} $_->{free} (" . ($min_linux + $min_swap + $min_freewin) . ")" } @fats) : '');
- }
-
-
- if (my @ok_for_resize_fat = grep { isFat_or_NTFS($_) && !fs::get::part2hd($_, $all_hds)->{readonly} } @$fstab) {
- $solutions{resize_fat} =
- [ 6 - @ok_for_resize_fat, N("Use the free space on the Windows partition"),
- sub {
- my $part = $o->ask_from_listf_raw({ messages => N("Which partition do you want to resize?"),
- interactive_help_id => 'resizeFATChoose',
- }, \&partition_table::description, \@ok_for_resize_fat) or return;
- my $hd = fs::get::part2hd($part, $all_hds);
- my $resize_fat = eval {
- my $pkg = $part->{fs_type} eq 'vfat' ? do {
- require resize_fat::main;
- 'resize_fat::main';
- } : do {
- require diskdrake::resize_ntfs;
- 'diskdrake::resize_ntfs';
- };
- $pkg->new($part->{device}, devices::make($part->{device}));
- };
- $@ and die N("The FAT resizer is unable to handle your partition,
-the following error occurred: %s", formatError($@));
- my $min_win = do {
- my $_w = $o->wait_message(N("Resizing"), N("Computing the size of the Windows partition"));
- $resize_fat->min_size;
- };
- #- make sure that even after normalizing the size to cylinder boundaries, the minimun will be saved,
- #- this save at least a cylinder (less than 8Mb).
- $min_win += partition_table::raw::cylinder_size($hd);
-
- $part->{size} > $min_linux + $min_swap + $min_freewin + $min_win or die N("Your Windows partition is too fragmented. Please reboot your computer under Windows, run the ``defrag'' utility, then restart the Mandriva Linux installation.");
- $o->ask_okcancel('', formatAlaTeX(
- #-PO: keep the double empty lines between sections, this is formatted a la LaTeX
- N("WARNING!
-
-DrakX will now resize your Windows partition. Be careful: this
-operation is dangerous. If you have not already done so, you
-first need to exit the installation, run \"chkdsk c:\" from a
-Command Prompt under Windows (beware, running graphical program
-\"scandisk\" is not enough, be sure to use \"chkdsk\" in a
-Command Prompt!), optionally run defrag, then restart the
-installation. You should also backup your data.
-When sure, press Ok."))) or return;
-
- my $mb_size = $part->{size} >> 11;
- $o->ask_from('', N("Which size do you want to keep for Windows on"), [
- { label => N("partition %s", partition_table::description($part)), val => \$mb_size, min => $min_win >> 11, max => ($part->{size} - $min_linux - $min_swap) >> 11, type => 'range' },
- ]) or return;
-
- my $oldsize = $part->{size};
- $part->{size} = from_Mb($mb_size, $min_win, $part->{size});
-
- $hd->adjustEnd($part);
-
- eval {
- my $_w = $o->wait_message(N("Resizing"), N("Resizing Windows partition"));
- $resize_fat->resize($part->{size});
- };
- if (my $err = $@) {
- $part->{size} = $oldsize;
- die N("FAT resizing failed: %s", formatError($err));
- }
-
- $o->ask_warn('', N("To ensure data integrity after resizing the partition(s),
-filesystem checks will be run on your next boot into Windows(TM)")) if $part->{fs_type} ne 'vfat';
-
- set_isFormatted($part, 1);
- partition_table::will_tell_kernel($hd, resize => $part); #- down-sizing, write_partitions is not needed
- partition_table::adjust_local_extended($hd, $part);
- partition_table::adjust_main_extended($hd);
-
- fsedit::auto_allocate($all_hds, $o->{partitions});
- 1;
- } ];
- } else {
- push @wizlog, N("There is no FAT partition to resize (or not enough space left)");
- }
-
- if (@$fstab && @hds_rw) {
- $solutions{wipe_drive} =
- [ 10, fsedit::is_one_big_fat_or_NT($hds) ? N("Remove Windows(TM)") : N("Erase entire disk"),
- sub {
- my $hd = $o->ask_from_listf_raw({ messages => N("You have more than one hard drive, which one do you install linux on?"),
- interactive_help_id => 'takeOverHdChoose',
- },
- \&partition_table::description, \@hds_rw) or return;
- $o->ask_okcancel_({ messages => N("ALL existing partitions and their data will be lost on drive %s", partition_table::description($hd)),
- interactive_help_id => 'takeOverHdConfirm' }) or return;
- partition_table::raw::zero_MBR($hd);
- fsedit::auto_allocate($all_hds, $o->{partitions});
- 1;
- } ];
- }
-
- if (@hds_rw) {
- $solutions{diskdrake} = [ 0, N("Custom disk partitioning"), sub { partition_with_diskdrake($o, $all_hds, 'nowizard') } ];
- }
-
- $solutions{fdisk} =
- [ -10, N("Use fdisk"), sub {
- $o->enter_console;
- foreach (@$hds) {
- print "\n" x 10, N("You can now partition %s.
-When you are done, do not forget to save using `w'", partition_table::description($_));
- print "\n\n";
- my $pid = 0;
- if (arch() =~ /ppc/) {
- $pid = fork() or exec "pdisk", devices::make($_->{device});
- } else {
- $pid = fork() or exec "fdisk", devices::make($_->{device});
- }
- waitpid($pid, 0);
- }
- $o->leave_console;
- 0;
- } ] if $o->{partitioning}{fdisk};
-
- log::l("partitioning wizard log:\n", (map { ">>wizlog>>$_\n" } @wizlog));
- %solutions;
-}
-
-sub partitionWizard {
- my ($o, $b_nodiskdrake) = @_;
-
- my %solutions = partitionWizardSolutions($o, $o->{all_hds});
-
- delete $solutions{diskdrake} if $b_nodiskdrake;
-
- my @solutions = sort { $b->[0] <=> $a->[0] } values %solutions;
-
- my $level = $::expert ? -9999 : 0;
- my @sol = grep { $_->[0] >= $level } @solutions;
-
- log::l('' . "solutions found: " . join('', map { $_->[1] } @sol) .
- " (all solutions found: " . join('', map { $_->[1] } @solutions) . ")");
-
- @solutions = @sol if @sol > 1;
- log::l("solutions: ", int @solutions);
- @solutions or $o->ask_warn('', N("I can not find any room for installing")), die 'already displayed';
-
- log::l('HERE: ', join(',', map { $_->[1] } @solutions));
- my $sol;
- $o->ask_from_({ messages => N("The DrakX Partitioning wizard found the following solutions:"),
- interactive_help_id => 'doPartitionDisks',
- },
- [ { val => \$sol, list => \@solutions, format => sub { $_[0][1] }, type => 'list' } ]);
- log::l("partitionWizard calling solution $sol->[1]");
- my $ok = eval { $sol->[2]->() };
- $@ and $o->ask_warn('', N("Partitioning failed: %s", formatError($@)));
- $ok or goto &partitionWizard;
- 1;
-}
-
-sub upNetwork {
- my ($o, $b_pppAvoided) = @_;
- my $_w = $o->wait_message('', N("Bringing up the network"));
- install_steps::upNetwork($o, $b_pppAvoided);
-}
-sub downNetwork {
- my ($o, $b_pppOnly) = @_;
- my $_w = $o->wait_message('', N("Bringing down the network"));
- install_steps::downNetwork($o, $b_pppOnly);
-}
-
-
-
-1;
diff --git a/perl-install/install_messages.pm b/perl-install/install_messages.pm
deleted file mode 100644
index ae69b8d43..000000000
--- a/perl-install/install_messages.pm
+++ /dev/null
@@ -1,147 +0,0 @@
-package install_messages; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-
-sub main_license() {
-#-PO: keep the double empty lines between sections, this is formatted a la LaTeX
-N("Introduction
-
-The operating system and the different components available in the Mandriva Linux distribution
-shall be called the \"Software Products\" hereafter. The Software Products include, but are not
-restricted to, the set of programs, methods, rules and documentation related to the operating
-system and the different components of the Mandriva Linux distribution.
-
-
-1. License Agreement
-
-Please read this document carefully. This document is a license agreement between you and
-Mandriva S.A. which applies to the Software Products.
-By installing, duplicating or using the Software Products in any manner, you explicitly
-accept and fully agree to conform to the terms and conditions of this License.
-If you disagree with any portion of the License, you are not allowed to install, duplicate or use
-the Software Products.
-Any attempt to install, duplicate or use the Software Products in a manner which does not comply
-with the terms and conditions of this License is void and will terminate your rights under this
-License. Upon termination of the License, you must immediately destroy all copies of the
-Software Products.
-
-
-2. Limited Warranty
-
-The Software Products and attached documentation are provided \"as is\", with no warranty, to the
-extent permitted by law.
-Mandriva S.A. will, in no circumstances and to the extent permitted by law, be liable for any special,
-incidental, direct or indirect damages whatsoever (including without limitation damages for loss of
-business, interruption of business, financial loss, legal fees and penalties resulting from a court
-judgment, or any other consequential loss) arising out of the use or inability to use the Software
-Products, even if Mandriva S.A. has been advised of the possibility or occurrence of such
-damages.
-
-LIMITED LIABILITY LINKED TO POSSESSING OR USING PROHIBITED SOFTWARE IN SOME COUNTRIES
-
-To the extent permitted by law, Mandriva S.A. or its distributors will, in no circumstances, be
-liable for any special, incidental, direct or indirect damages whatsoever (including without
-limitation damages for loss of business, interruption of business, financial loss, legal fees
-and penalties resulting from a court judgment, or any other consequential loss) arising out
-of the possession and use of software components or arising out of downloading software components
-from one of Mandriva Linux sites which are prohibited or restricted in some countries by local laws.
-This limited liability applies to, but is not restricted to, the strong cryptography components
-included in the Software Products.
-
-
-3. The GPL License and Related Licenses
-
-The Software Products consist of components created by different persons or entities. Most
-of these components are governed under the terms and conditions of the GNU General Public
-Licence, hereafter called \"GPL\", or of similar licenses. Most of these licenses allow you to use,
-duplicate, adapt or redistribute the components which they cover. Please read carefully the terms
-and conditions of the license agreement for each component before using any component. Any question
-on a component license should be addressed to the component author and not to Mandriva.
-The programs developed by Mandriva S.A. are governed by the GPL License. Documentation written
-by Mandriva S.A. is governed by a specific license. Please refer to the documentation for
-further details.
-
-
-4. Intellectual Property Rights
-
-All rights to the components of the Software Products belong to their respective authors and are
-protected by intellectual property and copyright laws applicable to software programs.
-Mandriva S.A. reserves its rights to modify or adapt the Software Products, as a whole or in
-parts, by all means and for all purposes.
-\"Mandriva\", \"Mandriva Linux\" and associated logos are trademarks of Mandriva S.A.
-
-
-5. Governing Laws
-
-If any portion of this agreement is held void, illegal or inapplicable by a court judgment, this
-portion is excluded from this contract. You remain bound by the other applicable sections of the
-agreement.
-The terms and conditions of this License are governed by the Laws of France.
-All disputes on the terms of this license will preferably be settled out of court. As a last
-resort, the dispute will be referred to the appropriate Courts of Law of Paris - France.
-For any question on this document, please contact Mandriva S.A.
-");
-}
-
-sub warning_about_patents() {
-N("Warning: Free Software may not necessarily be patent free, and some Free
-Software included may be covered by patents in your country. For example, the
-MP3 decoders included may require a licence for further usage (see
-http://www.mp3licensing.com for more details). If you are unsure if a patent
-may be applicable to you, check your local laws.");
-}
-sub com_license() {
-#-PO: keep the double empty lines between sections, this is formatted a la LaTeX
-N("
-Warning
-
-Please read carefully the terms below. If you disagree with any
-portion, you are not allowed to install the next CD media. Press 'Refuse'
-to continue the installation without using these media.
-
-
-Some components contained in the next CD media are not governed
-by the GPL License or similar agreements. Each such component is then
-governed by the terms and conditions of its own specific license.
-Please read carefully and comply with such specific licenses before
-you use or redistribute the said components.
-Such licenses will in general prevent the transfer, duplication
-(except for backup purposes), redistribution, reverse engineering,
-de-assembly, de-compilation or modification of the component.
-Any breach of agreement will immediately terminate your rights under
-the specific license. Unless the specific license terms grant you such
-rights, you usually cannot install the programs on more than one
-system, or adapt it to be used on a network. In doubt, please contact
-directly the distributor or editor of the component.
-Transfer to third parties or copying of such components including the
-documentation is usually forbidden.
-
-
-All rights to the components of the next CD media belong to their
-respective authors and are protected by intellectual property and
-copyright laws applicable to software programs.
-");
-}
-
-sub install_completed() {
-#-PO: keep the double empty lines between sections, this is formatted a la LaTeX
-N("Congratulations, installation is complete.
-Remove the boot media and press return to reboot.
-
-
-For information on fixes which are available for this release of Mandriva Linux,
-consult the Errata available from:
-
-
-%s
-
-
-Information on configuring your system is available in the post
-install chapter of the Official Mandriva Linux User's Guide.",
-N("http://www.mandrivalinux.com/en/errata.php3"));
-}
-
-1;
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
deleted file mode 100644
index 55bfd897d..000000000
--- a/perl-install/install_steps.pm
+++ /dev/null
@@ -1,1054 +0,0 @@
-package install_steps; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@filesToSaveForUpgrade @filesNewerToUseAfterUpgrade);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use install_any qw(:all);
-use partition_table;
-use detect_devices;
-use fs::type;
-use modules;
-use run_program;
-use lang;
-use keyboard;
-use fsedit;
-use loopback;
-use do_pkgs;
-use pkgs;
-use any;
-use log;
-
-our @ISA = qw(do_pkgs);
-
-@filesToSaveForUpgrade = qw(
-/etc/ld.so.conf /etc/fstab /etc/hosts /etc/conf.modules /etc/modules.conf
-);
-
-@filesNewerToUseAfterUpgrade = qw(
-/etc/profile
-);
-
-#-######################################################################################
-#- OO Stuff
-#-######################################################################################
-sub new($$) {
- my ($type, $o) = @_;
-
- bless $o, ref($type) || $type;
- return $o;
-}
-
-sub charsetChanged {
- my ($_o) = @_;
-}
-
-#-######################################################################################
-#- In/Out Steps Functions
-#-######################################################################################
-sub enteringStep {
- my ($_o, $step) = @_;
- log::l("starting step `$step'");
-}
-sub leavingStep {
- my ($o, $step) = @_;
- log::l("step `$step' finished");
-
- if (-d "$o->{prefix}/root/drakx") {
- eval { cp_af("/tmp/ddebug.log", "$o->{prefix}/root/drakx") };
- output(install_any::auto_inst_file(), install_any::g_auto_install(1));
- }
-
- foreach my $s (@{$o->{orderedSteps}}) {
- #- the reachability property must be recomputed each time to take
- #- into account failed step.
- next if $o->{steps}{$s}{done} && !$o->{steps}{$s}{redoable};
-
- my $reachable = 1;
- if (my $needs = $o->{steps}{$s}{needs}) {
- my @l = ref($needs) ? @$needs : $needs;
- $reachable = min(map { $o->{steps}{$_}{done} || 0 } @l);
- }
- $o->{steps}{$s}{reachable} = 1 if $reachable;
- }
- $o->{steps}{$step}{reachable} = $o->{steps}{$step}{redoable};
-
- while (my $f = shift @{$o->{steps}{$step}{toBeDone} || []}) {
- eval { &$f() };
- $o->ask_warn(N("Error"), [
-N("An error occurred, but I do not know how to handle it nicely.
-Continue at your own risk."), formatError($@) ]) if $@;
- }
-}
-
-sub errorInStep {
- my ($_o, $err) = @_;
- print "error :(\n";
- print "$err\n\n";
- c::_exit(1);
-}
-sub kill_action {}
-
-#-######################################################################################
-#- Steps Functions
-#-######################################################################################
-#------------------------------------------------------------------------------
-sub selectLanguage {
- my ($o) = @_;
-
- #- for auto_install compatibility with old $o->{lang}
- $o->{locale} = lang::system_locales_to_ourlocale($o->{lang}, $o->{lang}) if $o->{lang};
- $o->{locale}{langs} ||= { $o->{locale}{lang} => 1 };
-
- if (!exists $o->{locale}{country}) {
- my $h = lang::analyse_locale_name(lang::l2locale($o->{locale}{lang}));
- $o->{locale}{country} = $h->{country} if $h->{country};
- $o->{locale}{IM} = lang::get_default_im($o->{locale}{lang});
- }
-
- lang::set($o->{locale}, !$o->isa('interactive::gtk'));
- add2hash_($o->{locale}, { utf8 => lang::utf8_should_be_needed($o->{locale}) });
-
- log::l("selectLanguage: pack_langs: ", lang::pack_langs($o->{locale}{langs}), " utf8-flag: ", to_bool($o->{locale}{utf8}));
-
- #- for auto_install compatibility with old $o->{keyboard} containing directly $o->{keyboard}{KEYBOARD}
- $o->{keyboard} = { KEYBOARD => $o->{keyboard} } if $o->{keyboard} && !ref($o->{keyboard});
-
- if (!$o->{keyboard} || $o->{keyboard}{unsafe}) {
- $o->{keyboard} = keyboard::from_usb() || keyboard::lang2keyboard($o->{locale}{lang});
- $o->{keyboard}{unsafe} = 1;
- keyboard::setup($o->{keyboard});
- }
-
- $o->charsetChanged;
-
- addToBeDone {
- lang::write_langs($o->{locale}{langs});
- } 'formatPartitions';
- addToBeDone {
- lang::write($o->{locale});
- } 'installPackages';
-}
-#------------------------------------------------------------------------------
-sub selectKeyboard {
- my ($o) = @_;
- $o->{keyboard}{KBCHARSET} = lang::l2charset($o->{locale}{lang});
- keyboard::setup($o->{keyboard});
-
- addToBeDone {
- keyboard::write($o->{keyboard});
- } 'installPackages' if !$o->{isUpgrade} || !$o->{keyboard}{unsafe};
-
- if ($o->{raw_X}) {
- require Xconfig::default;
- Xconfig::default::config_keyboard($o->{raw_X}, $o->{keyboard});
- $o->{raw_X}->write;
- }
-}
-#------------------------------------------------------------------------------
-sub acceptLicense {}
-
-#------------------------------------------------------------------------------
-sub setupSCSI {
- my ($o) = @_;
- install_any::configure_pcmcia($o->{modules_conf}, $o->{pcmcia}) if $o->{pcmcia};
- modules::load(modules::category2modules('disk/cdrom'));
- modules::load_category($o->{modules_conf}, 'bus/firewire');
- modules::load_category($o->{modules_conf}, 'disk/ide|scsi|hardware_raid|sata|firewire');
-
- install_any::getHds($o);
-}
-
-#------------------------------------------------------------------------------
-sub selectInstallClass {
- my ($o) = @_;
-
- if ($o->{partitioning}{use_existing_root} || $o->{isUpgrade}) {
- # either one root is defined (and all is ok), or we take the first one we find
- my $p = fs::get::root_($o->{fstab}) || (first(install_any::find_root_parts($o->{fstab}, $o->{prefix})) || die)->{part};
- $o->{migrate_device_names} = install_any::use_root_part($o->{all_hds}, $p);
- }
-}
-
-#------------------------------------------------------------------------------
-sub doPartitionDisksBefore {
- my ($o) = @_;
- eval {
- eval { fs::umount("$o->{prefix}/sys") };
- eval { fs::umount("$o->{prefix}/proc/bus/usb") };
- eval { fs::umount("$o->{prefix}/proc") };
- eval { fs::umount_all($o->{fstab}, $o->{prefix}) };
- eval { sleep 1; fs::umount_all($o->{fstab}, $o->{prefix}) } if $@; #- HACK
- } if $o->{fstab} && !$::testing;
-}
-
-#------------------------------------------------------------------------------
-sub doPartitionDisksAfter {
- my ($o) = @_;
-
- if (!$::testing) {
- my $hds = $o->{all_hds}{hds};
- partition_table::write($_) foreach @$hds;
- $_->{rebootNeeded} and $o->rebootNeeded foreach @$hds;
- }
-
- fs::set_removable_mntpoints($o->{all_hds});
- fs::mount_options::set_all_default($o->{all_hds}, %$o, lang::fs_options($o->{locale}))
- if !$o->{isUpgrade};
-
- $o->{fstab} = [ fs::get::fstab($o->{all_hds}) ];
- fs::get::root_($o->{fstab}) or die "Oops, no root partition";
-
- if (arch() =~ /ppc/ && detect_devices::get_mac_generation() =~ /NewWorld/) {
- die "Need bootstrap partition to boot system!" if !(defined $partition_table::mac::bootstrap_part);
- }
-
- if (arch() =~ /ia64/ && !fs::get::has_mntpoint("/boot/efi", $o->{all_hds})) {
- die N("You must have a FAT partition mounted in /boot/efi");
- }
-
- if ($o->{partitioning}{use_existing_root}) {
- #- ensure those partitions are mounted so that they are not proposed in choosePartitionsToFormat
- fs::mount_part($_, $o->{prefix}) foreach sort { $a->{mntpoint} cmp $b->{mntpoint} }
- grep { $_->{mntpoint} && maybeFormatted($_) } @{$o->{fstab}};
- }
-
- cat_("/proc/mounts") =~ m|(\S+)\s+/tmp/nfsimage| &&
- !any { $_->{mntpoint} eq "/mnt/nfs" } @{$o->{all_hds}{nfss}} and
- push @{$o->{all_hds}{nfss}}, { fs_type => 'nfs', mntpoint => "/mnt/nfs", device => $1, options => "noauto,ro,nosuid,soft,rsize=8192,wsize=8192" };
-}
-
-#------------------------------------------------------------------------------
-sub doPartitionDisks {
- my ($o) = @_;
-
- if ($o->{partitioning}{auto_allocate}) {
- catch_cdie { fsedit::auto_allocate($o->{all_hds}, $o->{partitions}) } sub { 1 };
- }
-}
-
-#------------------------------------------------------------------------------
-
-sub ask_mntpoint_s {#-}}}
- my ($_o, $fstab) = @_;
-
- #- TODO: set the mntpoints
-
- my %m; foreach (@$fstab) {
- my $m = $_->{mntpoint};
-
- $m && $m =~ m!^/! or next; #- there may be a lot of swaps or "none"
-
- $m{$m} and die N("Duplicate mount point %s", $m);
- $m{$m} = 1;
-
- #- in case the type does not correspond, force it to ext3
- fs::type::set_fs_type($_, 'ext3') if !isTrueFS($_) && !isOtherAvailableFS($_);
- }
- 1;
-}
-
-
-sub rebootNeeded($) {
- my ($_o) = @_;
- log::l("Rebooting...");
- c::_exit(0);
-}
-
-sub choosePartitionsToFormat($$) {
- my ($_o, $fstab) = @_;
-
- foreach (@$fstab) {
- $_->{mntpoint} = "swap" if isSwap($_);
- $_->{mntpoint} or next;
-
- add2hash_($_, { toFormat => $_->{notFormatted} }) if $_->{fs_type}; #- eg: do not set toFormat for isRawRAID (0xfd)
- $_->{toFormatUnsure} ||= member($_->{mntpoint}, '/', '/usr');
-
- if (!$_->{toFormat}) {
- my $fs_type = fs::type::fs_type_from_magic($_);
- if (!$fs_type || $fs_type ne $_->{fs_type}) {
- log::l("setting toFormatUnsure for $_->{device} because <$_->{fs_type}> ne <$fs_type>");
- $_->{toFormatUnsure} = 1;
- }
- }
- }
-}
-
-sub formatMountPartitions {
- my ($o) = @_;
- fs::formatMount_all($o->{all_hds}{raids}, $o->{fstab}, $o->{prefix}, undef);
-}
-
-#------------------------------------------------------------------------------
-sub setPackages {
- my ($o, $rebuild_needed) = @_;
-
- install_any::setPackages($o, $rebuild_needed);
- pkgs::selectPackagesAlreadyInstalled($o->{packages});
- $rebuild_needed and pkgs::selectPackagesToUpgrade($o->{packages});
-}
-
-sub deselectFoundMedia {
- my (undef, $hdlists) = @_;
- return ($hdlists, 0);
-}
-
-sub selectSupplMedia { '' }
-sub askSupplMirror { '' }
-
-sub choosePackages {
- my ($o, $packages, $_compssUsers, $first_time) = @_;
-
- #- now for upgrade, package that must be upgraded are
- #- selected first, after is used the same scheme as install.
-
- #- make sure we kept some space left for available else the system may
- #- not be able to start (xfs at least).
- my $available = install_any::getAvailableSpace($o);
- my $availableCorrected = pkgs::invCorrectSize($available / sqr(1024)) * sqr(1024);
- log::l(sprintf "available size %s (corrected %s)", formatXiB($available), formatXiB($availableCorrected));
-
- add2hash_($o, { compssListLevel => 5 }) if !$::auto_install;
-
- #- avoid destroying user selection of packages but only
- #- for expert, as they may have done individual selection before.
- if ($first_time || !$::expert) {
- exists $o->{compssListLevel}
- and pkgs::setSelectedFromCompssList($packages, $o->{rpmsrate_flags_chosen}, $o->{compssListLevel}, $availableCorrected);
- }
- $availableCorrected;
-}
-
-sub upgrading_redhat() {
- #- remove weird config files that bother Xconfig::* too much
- unlink "$::prefix/etc/X11/XF86Config";
- unlink "$::prefix/etc/X11/XF86Config-4";
-
- sub prefering_mdk {
- my ($lpkg, $rpkg_ver, $c) = @_;
- my $lpkg_ver = $lpkg->version . '-' . $lpkg->release;
- log::l($lpkg->name . ' ' . ': prefering ' . ($c == 1 ? "$lpkg_ver over $rpkg_ver" : "$rpkg_ver over $lpkg_ver"));
- }
-
- my $old_compare_pkg = \&URPM::Package::compare_pkg;
- undef *URPM::Package::compare_pkg;
- *URPM::Package::compare_pkg = sub {
- my ($lpkg, $rpkg) = @_;
- my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg->release =~ /mdk$/ ? 1 : 0);
- if ($c) {
- prefering_mdk($lpkg, $rpkg->version . '-' . $rpkg->release, $c);
- $c;
- } else {
- &$old_compare_pkg;
- }
- };
-
- my $old_compare = \&URPM::Package::compare;
- undef *URPM::Package::compare;
- *URPM::Package::compare = sub {
- my ($lpkg, $rpkg_ver) = @_;
- my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg_ver =~ /mdk$/ ? 1 : 0);
- if ($c) {
- prefering_mdk($lpkg, $rpkg_ver, $c);
- return $c;
- }
- &$old_compare;
- };
-}
-
-sub beforeInstallPackages {
- my ($o) = @_;
-
- #- save these files in case of upgrade failure.
- if ($o->{isUpgrade}) {
- foreach (@filesToSaveForUpgrade) {
- unlink "$o->{prefix}/$_.mdkgisave";
- if (-e "$o->{prefix}/$_") {
- eval { cp_af("$o->{prefix}/$_", "$o->{prefix}/$_.mdkgisave") };
- }
- }
- foreach (@filesNewerToUseAfterUpgrade) {
- unlink "$o->{prefix}/$_.rpmnew";
- }
- }
-
- #- mainly for upgrading redhat packages, but it can help other
- my @should_not_be_dirs = qw(/usr/X11R6/lib/X11/xkb /usr/share/locale/zh_TW/LC_TIME /usr/include/GL);
- my @should_be_dirs = qw(/etc/X11/xkb);
- my @to_remove = (
- (grep { !-l $_ && -d $_ } map { "$::prefix$_" } @should_not_be_dirs),
- (grep { -l $_ || !-d $_ && -e $_ } map { "$::prefix$_" } @should_be_dirs),
- );
- rm_rf(@to_remove);
-
- if ($o->{isUpgrade} eq 'redhat') {
- upgrading_redhat();
- }
-
- #- some packages need such files for proper installation.
- install_any::write_fstab($o);
-
- require network::network;
- network::network::add2hosts("$o->{prefix}/etc/hosts", "localhost", "127.0.0.1");
-
- log::l("setting excludedocs to $o->{excludedocs}");
- substInFile { s/%_excludedocs.*//; $_ .= "%_excludedocs yes\n" if eof && $o->{excludedocs} } "$o->{prefix}/etc/rpm/macros";
-
- #- add oem theme if the files exists.
- mkdir_p("$o->{prefix}/usr/share");
- install_any::getAndSaveFile("install/oem-theme.rpm", "$o->{prefix}/usr/share/oem-theme.rpm");
-}
-
-#- returns number of packages installed, 0 if none were selected.
-sub pkg_install {
- my ($o, @l) = @_;
- log::l("selecting packages " . join(" ", @l));
- require pkgs;
- if ($::testing) {
- log::l(qq(selecting package "$_")) foreach @l;
- } else {
- $o->{packages}{rpmdb} ||= pkgs::rpmDbOpen();
- pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, $_) || die "$_ rpm not found") foreach @l;
- }
- my @toInstall = pkgs::packagesToInstall($o->{packages});
- if (@toInstall) {
- log::l("installing packages");
- $o->installPackages;
- } else {
- log::l("all packages selected are already installed, nothing to do");
- 0;
- }
-}
-
-sub pkg_install_if_requires_satisfied {
- my ($o, @l) = @_;
- require pkgs;
- $o->{packages}{rpmdb} ||= pkgs::rpmDbOpen();
- foreach (@l) {
- my %newSelection;
- my $pkg = pkgs::packageByName($o->{packages}, $_) || die "$_ rpm not found";
- pkgs::selectPackage($o->{packages}, $pkg, 0, \%newSelection);
- if (scalar(keys %newSelection) == 1) {
- pkgs::selectPackage($o->{packages}, $pkg);
- } else {
- log::l("pkg_install_if_requires_satisfied: not selecting $_ because of ", join(", ", keys %newSelection));
- }
- }
- $o->installPackages;
-}
-
-sub installPackages($$) { #- complete REWORK, TODO and TOCHECK!
- my ($o) = @_;
- my $packages = $o->{packages};
-
- if (%{$packages->{state}{ask_remove} || {}}) {
- log::l("removing : ", join ', ', keys %{$packages->{state}{ask_remove}});
- pkgs::remove([ keys %{$packages->{state}{ask_remove}} ], $packages);
- }
-
- #- small transaction will be built based on this selection and depslist.
- my @toInstall = pkgs::packagesToInstall($packages);
-
- my $time = time();
- $ENV{DURING_INSTALL} = 1;
- pkgs::install($o->{isUpgrade}, \@toInstall, $packages);
-
- any::writeandclean_ldsoconf($o->{prefix});
- delete $ENV{DURING_INSTALL};
- run_program::rooted_or_die($o->{prefix}, 'ldconfig');
-
- eval {
- run_program::rooted($o->{prefix}, 'gdk-pixbuf-query-loaders', '>', '/etc/gtk-2.0/gdk-pixbuf.loaders.' . (arch() =~ /64/ ? 'lib64' : 'lib'));
- run_program::rooted($o->{prefix}, 'gtk-query-immodules-2.0', '>', '/etc/gtk-2.0/gtk.immodules.' . (arch() =~ /64/ ? 'lib64' : 'lib'));
- run_program::rooted($o->{prefix}, 'pango-querymodules-' . (arch() =~ /64/ ? '64' : '32'), '>', '/etc/pango/' . (arch() =~ /i.86/ ? 'i386' : arch()) . '/pango.modules');
- };
-
- log::l("Install took: ", formatTimeRaw(time() - $time));
- install_any::log_sizes($o);
- scalar(@toInstall); #- return number of packages installed.
-}
-
-sub afterInstallPackages($) {
- my ($o) = @_;
-
- die N("Some important packages did not get installed properly.
-Either your cdrom drive or your cdrom is defective.
-Check the cdrom on an installed computer using \"rpm -qpl media/main/*.rpm\"
-") if any { m|read failed: Input/output error| } cat_("$o->{prefix}/root/drakx/install.log");
-
- if (arch() !~ /^sparc/) { #- TODO restore it as may be needed for sparc
- -x "$o->{prefix}/usr/bin/dumpkeys" or $::testing or die
-"Some important packages did not get installed properly.
-
-Please switch to console 2 (using ctrl-alt-f2)
-and look at the log file /tmp/ddebug.log
-
-Consoles 1,3,4,7 may also contain interesting information";
- }
-
- #- why not? cuz weather is nice today :-) [pixel]
- common::sync(); common::sync();
-
- #- generate /etc/lvmtab needed for rc.sysinit
- run_program::rooted($o->{prefix}, 'lvm2', 'vgscan') if -e '/etc/lvmtab';
-
- #- configure PCMCIA services if needed.
- require harddrake::autoconf;
- harddrake::autoconf::pcmcia($o->{pcmcia});
-
- #- for mandrake_firstime
- touch "$o->{prefix}/var/lock/TMP_1ST";
-
- any::config_dvd($o->{prefix}, 0);
- any::config_mtools($o->{prefix});
-
- #- make sure wins is disabled in /etc/nsswitch.conf
- #- else if eth0 is not existing, glibc segfaults.
- substInFile { s/\s*wins// if /^\s*hosts\s*:/ } "$o->{prefix}/etc/nsswitch.conf";
-
- #- make sure some services have been enabled (or a catastrophic restart will occur).
- #- these are normally base package post install scripts or important services to start.
- run_program::rooted($o->{prefix}, "chkconfig", "--add", $_) foreach
- qw(random netfs network rawdevices sound kheader keytable syslog crond portmap);
-
- if ($o->{mouse}{device} =~ /ttyS/) {
- log::l("disabling gpm for serial mice (does not get along nicely with X)");
- run_program::rooted($o->{prefix}, "chkconfig", "--del", "gpm");
- }
-
- #- install urpmi before as rpmdb will be opened, this will cause problem with update-menus.
- $o->install_urpmi;
-
- #- update menu scheme before calling update menus if desktop mode.
- if ($o->{meta_class} eq 'desktop') {
- run_program::rooted($o->{prefix}, "touch", "/etc/menu/do-not-create-menu-link");
- run_program::rooted($o->{prefix}, "touch", "/etc/menu/enable_simplified");
- } elsif (!$o->{isUpgrade}) {
- run_program::rooted($o->{prefix}, "touch", "/etc/menu/do-not-create-menu-link");
- }
-
- if ($o->{pcmcia}) {
- substInFile { s/.*(TaskBarShowAPMStatus).*/$1=1/ } "$o->{prefix}/usr/lib/X11/icewm/preferences";
- eval { cp_af("$o->{prefix}/usr/share/applnk/System/kapm.kdelnk",
- "$o->{prefix}/etc/skel/Desktop/Autostart/kapm.kdelnk") };
- }
-
- if ($o->{brltty}) {
- output("$o->{prefix}/etc/brltty.conf", <<EOF);
-braille-driver $o->{brltty}{driver}
-braille-device $o->{brltty}{device}
-text-table $o->{brltty}{table}
-EOF
- }
-
-
- install_any::disable_user_view() if $o->{security} >= 3 || $o->{authentication}{NIS};
- run_program::rooted($o->{prefix}, "kdeDesktopCleanup");
-
- foreach (list_skels($o->{prefix}, '.kde/share/config/kfmrc')) {
- my $found;
- substInFile {
- $found ||= /KFM Misc Defaults/;
- $_ .=
-"[KFM Misc Defaults]
-GridWidth=85
-GridHeight=70
-" if eof && !$found;
- } $_;
- }
-
- #- move some file after an upgrade that may be seriously annoying.
- #- and rename saved files to .mdkgiorig.
- if ($o->{isUpgrade}) {
- my $pkg = pkgs::packageByName($o->{packages}, 'rpm');
- $pkg && ($pkg->flag_selected || $pkg->flag_installed) && $pkg->compare(">= 4.0") and pkgs::cleanOldRpmDb();
-
- log::l("moving previous desktop files that have been updated to Trash of each user");
- install_any::kdemove_desktop_file($o->{prefix});
-
- foreach (@filesToSaveForUpgrade) {
- renamef("$o->{prefix}/$_.mdkgisave", "$o->{prefix}/$_.mdkgiorig")
- if -e "$o->{prefix}$_.mdkgisave";
- }
-
- foreach (@filesNewerToUseAfterUpgrade) {
- if (-e "$o->{prefix}/$_.rpmnew" && -e "$o->{prefix}/$_") {
- renamef("$o->{prefix}/$_", "$o->{prefix}/$_.mdkgiorig");
- renamef("$o->{prefix}/$_.rpmnew", "$o->{prefix}/$_");
- }
- }
- }
-
- any::fix_broken_alternatives($o->{isUpgrade} eq 'redhat');
-
- #- update theme directly from a package (simplest).
- if (-s "$o->{prefix}/usr/share/oem-theme.rpm") {
- run_program::rooted($o->{prefix}, "rpm", "-U", "/usr/share/oem-theme.rpm");
- unlink "/usr/share/oem-theme.rpm";
- }
-
- #- call update-menus at the end of package installation
- push @{$o->{waitpids}}, run_program::raw({ root => $o->{prefix}, detach => 1 }, "update-menus", "-n");
-
- if ($o->{updatemodules}) {
- $o->updatemodules($ENV{THIRDPARTY_DEVICE}, $ENV{THIRDPARTY_DIR});
- }
-}
-
-sub install_urpmi {
- my ($o) = @_;
-
- my $pkg = pkgs::packageByName($o->{packages}, 'urpmi');
- if ($pkg && ($pkg->flag_selected || $pkg->flag_installed)) {
- install_any::install_urpmi($o->{method},
- $o->{packages},
- $o->{packages}{mediums});
- pkgs::saveCompssUsers($o->{packages}, $o->{compssUsers});
- }
-}
-
-sub updatemodules {
- my ($_o, $dev, $rel_dir) = @_;
- return if $::testing;
-
- $dev = devices::make($dev) or log::l("updatemodules: bad device $dev"), return;
-
- my $mount_dir = '/updatemodules';
- find {
- eval { fs::mount($dev, $mount_dir, $_, 0); 1 };
- } 'ext2', 'vfat' or log::l("updatemodules: can't mount $dev"), return;
-
- my $dir = "$mount_dir$rel_dir";
- foreach my $kernel_version (all("$::prefix/lib/modules")) {
- log::l("examining updated modules for kernel $kernel_version");
- -d "$dir/$kernel_version" or next;
- log::l("found updatable modules");
- run_program::run("cd $dir/$kernel_version ; find -type f | cpio -pdu $::prefix/lib/modules/$kernel_version");
- run_program::rooted($::prefix, 'depmod', '-a', '-F', "/boot/System.map-$kernel_version", $kernel_version);
- }
-
- my $category;
- foreach (cat_("$dir/to_load")) {
- chomp;
- if (/^#/) {
- ($category) = $1 if /\[list_modules: (.*?)\]/;
- } elsif ($category) {
- log::l("adding $_ to $category\n");
- my $r = \%list_modules::l;
- $r = $r->{$_} foreach split('/', $category);
- push @$r, $_;
-
- $category = '';
- }
- }
-
- fs::umount($mount_dir);
-}
-
-#------------------------------------------------------------------------------
-sub selectMouse($) {
- my ($_o) = @_;
-}
-
-#------------------------------------------------------------------------------
-sub configureNetwork {
- my ($o) = @_;
- require network::network;
- network::network::configureNetwork2($o, $o->{modules_conf}, $o->{prefix}, $o->{netc}, $o->{intf});
- if ($o->{method} =~ /ftp|http|nfs/) {
- $o->{netcnx}{type} = 'lan';
- $o->{netcnx}{$_} = $o->{netc}{$_} foreach qw(NET_DEVICE NET_INTERFACE);
- }
-
- configure_firewall($o) if !$o->{isUpgrade};
-}
-
-sub configure_firewall {
- my ($o) = @_;
-
- if (!exists $o->{firewall_ports} && $o->{security} >= 3) {
- require network::drakfirewall;
- $o->{firewall_ports} = network::drakfirewall::default_ports($o->do_pkgs);
- }
- if ($o->{firewall_ports}) {
- require network::drakfirewall;
- network::drakfirewall::set_ports($o->do_pkgs, 0, $o->{firewall_ports});
- }
-}
-
-#------------------------------------------------------------------------------
-sub installUpdates {
- my ($o) = @_;
- my $u = $o->{updates} or return; $u->{updates} or return;
-
- upNetwork($o);
- require crypto;
- crypto::getPackages($o->{packages}, $u->{mirror}) and
- $o->pkg_install(@{$u->{packages} || []});
-
- #- re-install urpmi with update security medium.
- $o->install_urpmi;
-}
-
-sub summaryBefore {}
-
-sub summary {
- my ($o) = @_;
- configureTimezone($o);
- configurePrinter($o) if $o->{printer} && $o->{printer}{SPOOLER};
-}
-
-sub summaryAfter {
- my ($_o) = @_;
-}
-
-#------------------------------------------------------------------------------
-sub configureTimezone {
- my ($o) = @_;
- install_any::preConfigureTimezone($o);
-
- $o->pkg_install('ntp') if $o->{timezone}{ntp};
-
- require timezone;
- timezone::write($o->{timezone});
-}
-
-#------------------------------------------------------------------------------
-sub configureServices {
- my ($o) = @_;
- if ($o->{services}) {
- require services;
- services::doit($o, $o->{services});
- }
-}
-#------------------------------------------------------------------------------
-sub configurePrinter {
- my ($o) = @_;
- eval {
- $o->do_pkgs->install('foomatic-filters', 'foomatic-db-engine', 'foomatic-db', 'foomatic-db-hpijs', 'gutenprint-foomatic', 'postscript-ppds', 'printer-utils', 'printer-filters', 'printer-testpages',
- if_($o->do_pkgs->is_installed('gimp'), 'gutenprint-gimp2'));
- };
- if ($@ =~ /rpm not found/) {
- log::l("ERROR: $@");
- if ($o->{printer}) {
- require printer::printerdrake;
- printer::printerdrake::final_cleanup($o->{printer});
- }
- return;
- }
-
- require printer::main;
- eval { add2hash($o->{printer} ||= {}, printer::main::getinfo($o->{prefix})) }; #- get existing configuration.
-
- require printer::printerdrake;
- printer::printerdrake::install_spooler($o->{printer}, $o->{security}, $o->do_pkgs);
-
- foreach (values %{$o->{printer}{configured} || {}}) {
- log::l("configuring printer queue " . $_->{queuedata}{queue} || $_->{QUEUE});
- #- when copy is so adulee (sorry french taste :-)
- #- and when there are some configuration in one place and in another place...
- $o->{printer}{currentqueue} = {};
- printer::main::copy_printer_params($_->{queuedata}, $o->{printer}{currentqueue});
- printer::main::copy_printer_params($_, $o->{printer});
- #- setup all configured queues, which is not the case interactively where
- #- only the working queue is setup on configuration.
- printer::main::configure_queue($o->{printer});
- }
-}
-
-#------------------------------------------------------------------------------
-sub setRootPassword {
- my ($o) = @_;
- $o->{superuser} ||= {};
- require authentication;
- authentication::set_root_passwd($o->{superuser}, $o->{authentication});
- install_any::set_authentication($o);
-}
-
-#------------------------------------------------------------------------------
-
-sub addUser {
- my ($o) = @_;
- my $users = $o->{users} ||= [];
-
- if ($::prefix) {
- #- getpwnam, getgrnam, getgrid works
- symlinkf("$::prefix/etc/passwd", '/etc/passwd');
- symlinkf("$::prefix/etc/group", '/etc/group');
- }
-
- any::add_users($users, $o->{authentication});
-
- if ($o->{autologin}) {
- $o->{desktop} ||= first(any::sessions());
- $o->pkg_install("autologin") if !member($o->{desktop}, 'KDE', 'GNOME');
- }
- any::set_autologin($o->{autologin}, $o->{desktop});
-
- install_any::disable_user_view() if @$users == ();
-}
-
-#------------------------------------------------------------------------------
-sub readBootloaderConfigBeforeInstall {
- my ($o) = @_;
-
- require bootloader;
- add2hash($o->{bootloader} ||= {}, bootloader::read($o->{all_hds}));
-
- $o->{bootloader}{bootUnsafe} = 0 if $o->{bootloader}{boot}; #- when upgrading, do not ask where to install the bootloader (mbr vs boot partition)
-}
-
-sub setupBootloaderBefore {
- my ($o) = @_;
-
- require bootloader;
-
- #- remove previous ide-scsi lines
- bootloader::modify_append($o->{bootloader}, sub {
- my ($_simple, $dict) = @_;
- @$dict = grep { $_->[1] ne 'ide-scsi' } @$dict;
- });
-
- if ($o->{miscellaneous}{HDPARM}) {
- bootloader::set_append_with_key($o->{bootloader}, $_, 'autotune') foreach grep { /ide/ } all("/proc/ide");
- }
- if (cat_("/proc/cmdline") =~ /mem=nopentium/) {
- bootloader::set_append_with_key($o->{bootloader}, mem => 'nopentium');
- }
- if (cat_("/proc/cmdline") =~ /\b(pci)=(\S+)/) {
- bootloader::set_append_with_key($o->{bootloader}, $1, $2);
- }
- if (my ($acpi) = cat_("/proc/cmdline") =~ /\bacpi=(\w+)/) {
- if ($acpi eq 'ht') {
- #- the user is using the default, which may not be the best
- my $year = detect_devices::computer_info()->{BIOS_Year};
- if (detect_devices::isLaptop() && $year >= 2002) {
- log::l("forcing ACPI on a laptop with recent bios ($year)");
- $acpi = '';
- }
- }
- bootloader::set_append_with_key($o->{bootloader}, acpi => $acpi);
- }
- if (cat_("/proc/cmdline") =~ /\bnoapic/) {
- bootloader::set_append_simple($o->{bootloader}, 'noapic');
- }
- my ($MemTotal) = cat_("/proc/meminfo") =~ /^MemTotal:\s*(\d+)/m;
- if (my ($biggest_swap) = sort { $b->{size} <=> $a->{size} } grep { isSwap($_) } @{$o->{fstab}}) {
- log::l("MemTotal: $MemTotal < ", $biggest_swap->{size} / 2);
- if ($MemTotal < $biggest_swap->{size} / 2) {
- bootloader::set_append_with_key($o->{bootloader}, resume => devices::make($biggest_swap->{device}));
- }
- }
-
- #- check for valid fb mode to enable a default boot with frame buffer.
- my $vga = $o->{allowFB} && (!detect_devices::matching_desc__regexp('3D Rage LT') &&
- !detect_devices::matching_desc__regexp('Rage Mobility [PL]') &&
- !detect_devices::matching_desc__regexp('i740') &&
- !detect_devices::matching_desc__regexp('Matrox') &&
- !detect_devices::matching_desc__regexp('Tseng.*ET6\d00') &&
- !detect_devices::matching_desc__regexp('SiS.*SG86C2.5') &&
- !detect_devices::matching_desc__regexp('SiS.*559[78]') &&
- !detect_devices::matching_desc__regexp('SiS.*300') &&
- !detect_devices::matching_desc__regexp('SiS.*540') &&
- !detect_devices::matching_desc__regexp('SiS.*6C?326') &&
- !detect_devices::matching_desc__regexp('SiS.*6C?236') &&
- !detect_devices::matching_desc__regexp('Voodoo [35]|Voodoo Banshee') && #- 3d acceleration seems to bug in fb mode
- !detect_devices::matching_desc__regexp('828[14][05].* CGC') #- i810 & i845 now have FB support during install but we disable it afterwards
- );
- my $force_vga = $o->{allowFB} && (detect_devices::matching_desc__regexp('SiS.*630') || #- SiS 630 need frame buffer.
- detect_devices::matching_desc__regexp('GeForce.*Integrated') #- needed for fbdev driver (hack).
- );
-
- #- propose the default fb mode for kernel fb, if aurora or bootsplash is installed.
- my $need_fb = do {
- my $p = pkgs::packageByName($o->{packages}, 'bootsplash');
- $p && $p->flag_installed;
- };
- bootloader::suggest($o->{bootloader}, $o->{all_hds},
- vga_fb => ($force_vga || $vga && $need_fb) && $o->{vga},
- quiet => $o->{meta_class} ne 'server');
-
- $o->{bootloader}{keytable} ||= keyboard::keyboard2kmap($o->{keyboard});
-}
-
-sub setupBootloader {
- my ($o) = @_;
-
- any::install_acpi_pkgs($o->do_pkgs, $o->{bootloader});
-
- require bootloader;
- bootloader::install($o->{bootloader}, $o->{all_hds});
-}
-
-#------------------------------------------------------------------------------
-sub configureXBefore {
- my ($o) = @_;
-
- #- keep this here if the package has to be updated.
- $o->pkg_install("xorg-x11");
-}
-sub configureX {
- my ($o) = @_;
- configureXBefore($o);
-
- require Xconfig::default;
- $o->{raw_X} = Xconfig::default::configure($o->do_pkgs, $o->{keyboard}, $o->{mouse});
-
- require Xconfig::main;
- Xconfig::main::configure_everything_auto_install($o->{raw_X}, $o->do_pkgs, $o->{X}, install_any::X_options_from_o($o));
- configureXAfter($o);
-}
-sub configureXAfter {
- my ($o) = @_;
- if ($o->{X}{default_depth} >= 16 && $o->{X}{resolution_wanted} >= 1024) {
- log::l("setting large icon style for kde");
- install_any::kderc_largedisplay($o->{prefix});
- }
-}
-
-#------------------------------------------------------------------------------
-sub miscellaneousBefore {
- my ($o) = @_;
-
- my %s = getVarsFromSh("$o->{prefix}/etc/sysconfig/system");
- $o->{miscellaneous}{HDPARM} = $s{HDPARM} if exists $s{HDPARM};
- require security::level;
- require security::various;
- $o->{security} ||= security::level::get();
- $o->{security_user} ||= security::various::config_security_user($o->{prefix});
- $o->{libsafe} ||= security::various::config_libsafe($o->{prefix});
-
- log::l("security $o->{security}");
-
- add2hash_($o->{miscellaneous} ||= {}, { numlock => !detect_devices::isLaptop() });
-}
-sub miscellaneous {
- my ($_o) = @_;
- #- keep some given parameters
- #-TODO
-}
-sub miscellaneousAfter {
- my ($o) = @_;
- add2hash_ $o, { useSupermount => $o->{security} < 4 ? 'magicdev' : 0 };
-
- $ENV{SECURE_LEVEL} = $o->{security}; #- deprecated with chkconfig 1.3.4-2mdk, uses /etc/sysconfig/msec
-
- addToBeDone {
- setVarsInSh("$o->{prefix}/etc/sysconfig/system", {
- CLASS => $::expert && 'expert' || 'beginner',
- SECURITY => $o->{security},
- META_CLASS => $o->{meta_class} || 'PowerPack',
- });
- substInFile { s/KEYBOARD_AT_BOOT=.*/KEYBOARD_AT_BOOT=yes/ } "$o->{prefix}/etc/sysconfig/usb" if detect_devices::usbKeyboards();
-
- } 'installPackages';
-}
-
-#------------------------------------------------------------------------------
-sub exitInstall {
- my ($o) = @_;
- eval {
- my $report = '/root/drakx/report.bug';
- unlink "$::prefix$report", "$::prefix$report.gz";
- output "$::prefix$report", install_any::report_bug();
- run_program::rooted($::prefix, 'gzip', $report);
- };
- install_any::getAndSaveAutoInstallFloppies($o, 1) if arch() !~ /^ppc/;
- eval { output "$o->{prefix}/root/drakx/README", "This directory contains several installation-related files,
-mostly log files (very useful if you ever report a bug!).
-
-Beware that some Mandriva Linux tools rely on the contents of some
-of these files... so remove any file from here at your own
-risk!
-" };
- #- wait for remaining processes.
- foreach (@{$o->{waitpids}}) {
- waitpid $_, 0;
- log::l("pid $_ returned $?");
- }
- install_any::ejectCdrom();
- install_any::log_sizes($o);
-}
-
-#------------------------------------------------------------------------------
-sub hasNetwork {
- my ($o) = @_;
- $o->{netcnx}{type} && $o->{netc}{NETWORKING} ne 'no' and return 1;
- log::l("no network seems to be configured for internet ($o->{netcnx}{type},$o->{netc}{NETWORKING})");
- 0;
-}
-
-#------------------------------------------------------------------------------
-sub upNetwork {
- my ($o, $b_pppAvoided) = @_;
-
- #- do not destroy this file if prefix is '' or even '/' (could it happens ?).
- if (length($o->{prefix}) > 1) {
- -f "$o->{prefix}/etc/$_" && symlinkf("$o->{prefix}/etc/$_", "/etc/$_") foreach qw(resolv.conf protocols services);
- }
- member($o->{method}, qw(ftp http nfs)) and return 1;
- $o->{modules_conf}->write;
- if (hasNetwork($o)) {
- if ($o->{netcnx}{type} =~ /adsl|lan|cable/) {
- log::l("starting network ($o->{netcnx}{type})");
- require network::netconnect;
- network::netconnect::start_internet($o);
- return 1;
- } elsif (!$b_pppAvoided) {
- log::l("starting network (ppp: $o->{netcnx}{type})");
- eval { modules::load(qw(serial ppp bsd_comp ppp_deflate)) };
- run_program::rooted($o->{prefix}, "/etc/rc.d/init.d/syslog", "start");
- require network::netconnect;
- network::netconnect::start_internet($o);
- return 1;
- } else {
- log::l(qq(not starting network (b/c ppp avoided and type is "$o->{netcnx}{type})"));
- }
- }
- $::testing;
-}
-
-#------------------------------------------------------------------------------
-sub downNetwork {
- my ($o, $costlyOnly) = @_;
-
- $o->{method} eq "ftp" || $o->{method} eq "http" || $o->{method} eq "nfs" and return 1;
- $o->{modules_conf}->write;
- if (hasNetwork($o)) {
- if (!$costlyOnly) {
- require network::netconnect;
- network::netconnect::stop_internet($o);
- return 1;
- } elsif ($o->{netc}{type} !~ /adsl|lan|cable/) {
- require network::netconnect;
- network::netconnect::stop_internet($o);
- run_program::rooted($o->{prefix}, "/etc/rc.d/init.d/syslog", "stop");
- eval { modules::unload(qw(ppp_deflate bsd_comp ppp serial)) };
- return 1;
- }
- }
- $::testing;
-}
-
-#------------------------------------------------------------------------------
-sub cleanIfFailedUpgrade($) {
- my ($o) = @_;
-
- #- if an upgrade has failed, there should be .mdkgisave files around.
- if ($o->{isUpgrade}) {
- foreach (@filesToSaveForUpgrade) {
- if (-e "$o->{prefix}/$_" && -e "$o->{prefix}/$_.mdkgisave") {
- rename "$o->{prefix}/$_", "$o->{prefix}/$_.mdkginew"; #- keep new files around in case !
- rename "$o->{prefix}/$_.mdkgisave", "$o->{prefix}/$_";
- }
- }
- }
-}
-
-
-1;
diff --git a/perl-install/install_steps_auto_install.pm b/perl-install/install_steps_auto_install.pm
deleted file mode 100644
index 0933518cf..000000000
--- a/perl-install/install_steps_auto_install.pm
+++ /dev/null
@@ -1,122 +0,0 @@
-package install_steps_auto_install; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA $graphical @graphical_steps);
-
-@ISA = qw(install_steps);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use install_steps;
-
-sub new {
- my ($type, $o) = @_;
-
- # Handle legacy options
- $o->{interactive} ||= 'gtk' if $graphical || !is_empty_array_ref($o->{interactiveSteps});
- push @{$o->{interactiveSteps}}, qw(installPackages exitInstall configureNetwork), @graphical_steps;
-
- if ($o->{interactive}) {
- my $interactiveClass = "install_steps_$o->{interactive}";
- require "$interactiveClass.pm";
-
- @ISA = ($interactiveClass, @ISA);
-
- foreach my $f (@{$o->{orderedSteps}}) {
- my $auto_name = member($f, @{$o->{interactiveSteps}}) ? 'noauto' : 'auto';
- $o->{steps}{$f}{$auto_name} = 1;
- }
-
- goto &{$::{$interactiveClass . "::"}{new}};
- } else {
- @ISA = ('install_steps_auto_install_non_interactive', @ISA);
- (bless {}, ref($type) || $type)->install_steps::new($o);
- }
-}
-
-sub configureNetwork {
- my ($o) = @_;
- log::l("install_steps_auto_install::configureNetwork");
- modules::load_category($o->{modules_conf}, 'network/main|gigabit|usb');
- goto &install_steps::configureNetwork;
-}
-
-sub exitInstall {
- my ($o, $alldone) = @_;
- return if $o->{autoExitInstall};
-
- if ($o->{interactive}) {
- $o->SUPER::exitInstall($alldone);
- } else {
- install_steps::exitInstall($o);
- print "\a";
- print "Auto installation complete (the postInstall is not done yet though)\n";
- print "Press <Enter> to reboot\n";
- <STDIN>;
- }
-}
-
-
-#-######################################################################################
-#- install_steps_auto_install_non_interactive package
-#-######################################################################################
-package install_steps_auto_install_non_interactive;
-
-use install_steps;
-use lang;
-use modules;
-use common;
-use log;
-
-sub enteringStep {
- my ($o, $step) = @_;
- my ($s, $t) = (N_("Entering step `%s'\n"), $o->{steps}{$step}{text});
- ($s, $t) = (translate($s), translate($t)) if $ENV{LANG} !~ /ja|ko|zh/;
- print sprintf($s, $t);
- $o->install_steps::enteringStep($step);
-}
-
-sub rebootNeeded {
- my ($o) = @_;
- errorInStep($o, <<EOF);
-While partitioning, the partition table re-read failed, needing a reboot
-This is plain wrong for an auto_install
-EOF
-}
-
-sub ask_warn {
- log::l(ref($_[1]) ? join " ", @{$_[1]} : $_[1]);
-}
-
-sub wait_message {
- my ($_o, $_title, $_message) = @_;
-}
-
-sub charsetChanged {
- my ($o) = @_;
- lang::load_console_font($o->{locale});
-}
-
-sub errorInStep {
- my ($_o, $err) = @_;
- print "error :(\n";
- print "$err\n\n";
- print "switch to console f2 for a shell\n";
- print "Press <Enter> to reboot\n";
- <STDIN>;
- c::_exit(0);
-}
-
-
-#-######################################################################################
-#- Steps Functions
-#-######################################################################################
-sub installPackages {
- my ($o, $packages) = @_;
- catch_cdie { $o->install_steps::installPackages($packages) } sub { print formatError($@), "\n"; 1 };
-}
-
-1;
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
deleted file mode 100644
index 762581b38..000000000
--- a/perl-install/install_steps_gtk.pm
+++ /dev/null
@@ -1,711 +0,0 @@
-package install_steps_gtk; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(install_steps_interactive interactive::gtk);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use pkgs;
-use install_steps_interactive;
-use interactive::gtk;
-use xf86misc::main;
-use common;
-use mygtk2;
-use ugtk2 qw(:helpers :wrappers :create);
-use devices;
-use modules;
-use install_gtk;
-use install_any;
-use mouse;
-use help;
-use log;
-
-#-######################################################################################
-#- In/Out Steps Functions
-#-######################################################################################
-sub new($$) {
- my ($type, $o) = @_;
-
- $ENV{DISPLAY} ||= $o->{display} || ":0";
- my $wanted_DISPLAY = $::testing && -x '/usr/X11R6/bin/Xnest' ? ':9' : $ENV{DISPLAY};
-
- if ($ENV{DISPLAY} =~ /^:\d/ && !$::testing || $ENV{DISPLAY} ne $wanted_DISPLAY) { #- is the display local or distant?
- my $f = "/tmp/Xconf";
- if (!$::testing) {
- devices::make("/dev/kbd");
- }
- my $launchX = sub {
- my ($server, $Driver) = @_;
-
- mkdir '/var/log' if !-d '/var/log';
-
- my @options = $wanted_DISPLAY;
- if ($server eq 'Xnest') {
- push @options, '-ac', '-geometry', $o->{vga} || ($o->{vga16} ? '640x480' : '800x600');
- } elsif ($::globetrotter || !$::move) {
- install_gtk::createXconf($f, @{$o->{mouse}}{"XMOUSETYPE", "device"}, $o->{mouse}{wacom}[0], $Driver);
-
- push @options, if_(!$::globetrotter, '-kb'), '-allowMouseOpenFail', '-xf86config', $f if arch() !~ /^sparc/;
- push @options, 'tty7', '-dpms', '-s', '240';
-
- #- old weird servers: Xsun
- push @options, '-fp', '/usr/X11R6/lib/X11/fonts:unscaled' if $server =~ /Xsun/;
- }
-
- if (!fork()) {
- c::setsid();
- exec $server, @options or c::_exit(1);
- }
-
- #- wait for the server to start
- foreach (1..5) {
- sleep 1;
- last if fuzzy_pidofs(qr/\b$server\b/);
- log::l("$server still not running, trying again");
- }
- my $nb;
- foreach (1..60) {
- log::l("waiting for the server to start ($_ $nb)");
- log::l("Server died"), return 0 if !fuzzy_pidofs(qr/\b$server\b/);
- $nb++ if xf86misc::main::Xtest($wanted_DISPLAY);
- if ($nb > 2) { #- one succeeded test is not enough :-(
- log::l("AFAIK X server is up");
- return 1;
- }
- sleep 1;
- }
- log::l("Timeout!!");
- 0;
- };
- my @servers = qw(Driver:fbdev); #-)
- if ($::testing) {
- @servers = 'Xnest';
- } elsif (arch() eq "alpha") {
- require Xconfig::card;
- my ($card) = Xconfig::card::probe();
- Xconfig::card::add_to_card__using_Cards($card, $card->{type}) if $card && $card->{type};
- @servers = $card->{server} || "TGA";
- #-@servers = qw(SVGA 3DLabs TGA)
- } elsif (arch() =~ /^sparc/) {
- local $_ = cat_("/proc/fb");
- if (/Mach64/) {
- @servers = qw(Mach64);
- } elsif (/Permedia2/) {
- @servers = qw(3DLabs);
- } else {
- @servers = qw(Xsun24);
- }
- } elsif (arch() =~ /ia64/) {
- require Xconfig::card;
- my ($card) = Xconfig::card::probe();
- @servers = map { if_($_, "Driver:$_") } $card && $card->{Driver}, 'fbdev';
- }
-
- if (($::move || $::globetrotter) && !$::testing) {
- require move;
- require run_program;
- move::automatic_xconf($o);
- run_program::run('/sbin/service', 'xfs', 'start');
- @servers = $::globetrotter ? qw(Driver:fbdev) : qw(X_move);
- }
-
- foreach (@servers) {
- log::l("Trying with server $_");
- my ($prog, $Driver) = /Driver:(.*)/ ? ('Xorg', $1) : /Xsun|Xnest|^X_move$/ ? $_ : "XF86_$_";
- if (/FB/i) {
- !$o->{vga16} && $o->{allowFB} or next;
-
- $o->{allowFB} = &$launchX($prog, $Driver) #- keep in mind FB is used.
- and goto OK;
- } else {
- $o->{vga16} = 1 if /VGA16/;
- &$launchX($prog, $Driver) and goto OK;
- }
- $::move and print("can not launch graphical mode :(\n"), c::_exit(1);
- }
- return undef;
- }
- OK:
- $ENV{DISPLAY} = $wanted_DISPLAY;
- run_program::run('xset', 'm', '1/8', '1') if is_xbox();
- install_gtk::init_gtk($o);
- install_gtk::init_sizes();
- install_gtk::install_theme($o);
- install_gtk::create_logo_window($o);
- install_gtk::create_steps_window($o);
-
- $ugtk2::grab = 1;
-
- $o = (bless {}, ref($type) || $type)->SUPER::new($o);
- $o->interactive::gtk::new;
- $o;
-}
-
-sub enteringStep {
- my ($o, $step) = @_;
-
- printf "Entering step `%s'\n", $o->{steps}{$step}{text};
- $o->SUPER::enteringStep($step);
- install_gtk::update_steps_position($o);
-}
-sub leavingStep {
- my ($o, $step) = @_;
- $o->SUPER::leavingStep($step);
-}
-
-
-sub charsetChanged {
- my ($o) = @_;
- Gtk2->set_locale;
- install_gtk::load_font($o);
- install_gtk::create_steps_window($o);
-}
-
-#-######################################################################################
-#- Steps Functions
-#-######################################################################################
-sub selectLanguage {
- my ($o, $first_time) = @_;
- $o->SUPER::selectLanguage;
-
- $o->ask_warn('',
-formatAlaTeX(N("Your system is low on resources. You may have some problem installing
-Mandriva Linux. If that occurs, you can try a text install instead. For this,
-press `F1' when booting on CDROM, then enter `text'."))) if $first_time && availableRamMB() < 70; # 70MB
-
-}
-
-#------------------------------------------------------------------------------
-sub selectMouse {
- my ($o, $force) = @_;
- my %old = %{$o->{mouse}};
- $o->SUPER::selectMouse($force) or return;
- my $mouse = $o->{mouse};
- $mouse->{type} eq 'none' ||
- $old{type} eq $mouse->{type} &&
- $old{name} eq $mouse->{name} &&
- $old{device} eq $mouse->{device} && !$force and return;
-
- while (1) {
- my $x_protocol_changed = mouse::change_mouse_live($mouse, \%old);
- mouse::test_mouse_install($mouse, $x_protocol_changed) and return;
-
- %old = %$mouse;
- $o->SUPER::selectMouse(1);
- $mouse = $o->{mouse};
- }
-}
-
-sub reallyChooseGroups {
- my ($o, $size_to_display, $individual, $_compssUsers) = @_;
-
- my $w = ugtk2->new('');
- my $w_size = gtknew('Label', text => &$size_to_display);
-
- my $entry = sub {
- my ($e) = @_;
-
- gtknew('CheckButton',
- text => translate($e->{label}),
- tip => translate($e->{descr}),
- active_ref => \$e->{selected},
- toggled => sub {
- gtkset($w_size, text => &$size_to_display);
- });
- };
- #- when restarting this step, it might be necessary to reload the compssUsers.pl (bug 11558). kludgy.
- if (!ref $o->{gtk_display_compssUsers}) { install_any::load_rate_files($o) }
- ugtk2::gtkadd($w->{window},
- gtkpack_($w->create_box_with_title(N("Package Group Selection")),
- 1, $o->{gtk_display_compssUsers}->($entry),
- 1, '',
- 0, gtknew('HBox', children_loose => [
- gtknew('Button', text => N("Help"), clicked => $o->interactive_help_sub_display_id('choosePackages')),
- $w_size,
- if_($individual,
- gtknew('CheckButton', text => N("Individual package selection"), active_ref => $individual),
- ),
- gtknew('Button', text => N("Next"), clicked => sub { Gtk2->main_quit }),
- ]),
- ),
- );
- $w->main;
- 1;
-}
-
-sub choosePackagesTree {
- my ($o, $packages, $o_limit_medium) = @_;
-
- my $available = install_any::getAvailableSpace($o);
- my $availableCorrected = pkgs::invCorrectSize($available / sqr(1024)) * sqr(1024);
-
- my $common;
- $common = { get_status => sub {
- my $size = pkgs::selectedSize($packages);
- N("Total size: %d / %d MB", pkgs::correctSize($size / sqr(1024)), $available / sqr(1024));
- },
- node_state => sub {
- my $p = pkgs::packageByName($packages, $_[0]) or return;
- pkgs::packageMedium($packages, $p)->{selected} or return;
- $p->arch eq 'src' and return;
- $p->flag_base and return 'base';
- $p->flag_installed && !$p->flag_upgrade and return 'installed';
- $p->flag_selected and return 'selected';
- return 'unselected';
- },
- build_tree => sub {
- my ($add_node, $flat) = @_;
- if ($flat) {
- foreach (sort map { $_->name }
- grep { !$o_limit_medium || pkgs::packageMedium($packages, $_) == $o_limit_medium }
- grep { $_ && $_->arch ne 'src' }
- @{$packages->{depslist}}) {
- $add_node->($_, undef);
- }
- } else {
- foreach my $root (@{$o->{compssUsers}}) {
- my (@firstchoice, @others);
- my %fl = map { ("CAT_$_" => 1) } @{$root->{flags}};
- foreach my $p (@{$packages->{depslist}}) {
- !$o_limit_medium || pkgs::packageMedium($packages, $p) == $o_limit_medium or next;
- my @flags = $p->rflags;
- next if !($p->rate && any { any { !/^!/ && $fl{$_} } split('\|\|') } @flags);
- $p->rate >= 3 ?
- push(@firstchoice, $p->name) :
- push(@others, $p->name);
- }
- my $root2 = translate($root->{path}) . '|' . translate($root->{label});
- $add_node->($_, $root2) foreach sort @firstchoice;
- $add_node->($_, $root2 . '|' . N("Other")) foreach sort @others;
- }
- }
- },
- get_info => sub {
- my $p = pkgs::packageByName($packages, $_[0]) or return '';
- pkgs::extractHeaders([$p], $packages->{mediums});
-
- my $imp = translate($pkgs::compssListDesc{$p->flag_base ? 5 : $p->rate});
-
- my $tag = { 'foreground' => 'royalblue3' };
- $@ ? N("Bad package") :
- [ [ N("Name: "), $tag ], [ $p->name . "\n" ],
- [ N("Version: "), $tag ], [ $p->version . '-' . $p->release . "\n" ],
- [ N("Size: "), $tag ], [ N("%d KB\n", $p->size / 1024) ],
- if_($imp, [ N("Importance: "), $tag ], [ "$imp\n" ]),
- [ "\n" ], [ formatLines(c::from_utf8($p->description)) ] ];
- },
- toggle_nodes => sub {
- my $set_state = shift @_;
- my $isSelection = 0;
- my %l = map { my $p = pkgs::packageByName($packages, $_);
- $isSelection ||= !$p->flag_selected;
- $p->id => 1 } @_;
- my $state = $packages->{state} ||= {};
- my @l = $isSelection ? $packages->resolve_requested($packages->{rpmdb}, $state, \%l,
- callback_choices => \&pkgs::packageCallbackChoices) :
- $packages->disable_selected($packages->{rpmdb}, $state,
- map { $packages->{depslist}[$_] } keys %l);
- my $size = pkgs::selectedSize($packages);
- my $error;
-
- if (!@l) {
- #- no package can be selected or unselected.
- my @ask_unselect = grep { $state->{rejected}{$_}{backtrack} &&
- exists $l{$packages->search($_, strict_fullname => 1)->id} }
- keys %{$state->{rejected} || {}};
- #- extend to closure (to given more detailed and not absurd reason).
- my %ask_unselect;
- while (@ask_unselect > keys %ask_unselect) {
- @ask_unselect{@ask_unselect} = ();
- foreach (keys %ask_unselect) {
- foreach (keys %{$state->{rejected}{$_}{backtrack}{closure} || {}}) {
- next if exists $ask_unselect{$_};
- push @ask_unselect, $_;
- }
- }
- }
- $error = [ N("You can not select/unselect this package"),
- formatList(20, map { my $rb = $state->{rejected}{$_}{backtrack};
- my @froms = keys %{$rb->{closure} || {}};
- my @unsatisfied = @{$rb->{unsatisfied} || []};
- my $s = join ", ", ((map { N("due to missing %s", $_) } @froms),
- (map { N("due to unsatisfied %s", $_) } @unsatisfied),
- $rb->{promote} && !$rb->{keep} ? N("trying to promote %s", join(", ", @{$rb->{promote}})) : @{[]},
- $rb->{keep} ? N("in order to keep %s", join(", ", @{$rb->{keep}})) : @{[]},
- );
- $_ . ($s ? " ($s)" : '');
- } sort @ask_unselect) ];
- } elsif (pkgs::correctSize($size / sqr(1024)) > $available / sqr(1024)) {
- $error = N("You can not select this package as there is not enough space left to install it");
- } elsif (@l > @_ && $common->{state}{auto_deps}) {
- $o->ask_okcancel('', [ $isSelection ?
- N("The following packages are going to be installed") :
- N("The following packages are going to be removed"),
- formatList(20, sort(map { $_->name } @l)) ], 1) or $error = ''; #- defined
- }
- if (defined $error) {
- $o->ask_warn('', $error) if $error;
- #- disable selection (or unselection).
- $isSelection ? $packages->disable_selected($packages->{rpmdb}, $state, @l) :
- $packages->resolve_requested($packages->{rpmdb}, $state, { map { $_->id => 1 } @l });
- } else {
- #- keep the changes, update visible state.
- foreach (@l) {
- $set_state->($_->name, $_->flag_selected ? 'selected' : 'unselected');
- }
- }
- },
- grep_allowed_to_toggle => sub {
- grep { my $p = pkgs::packageByName($packages, $_); $p && !$p->flag_base } @_;
- },
- grep_unselected => sub {
- grep { !pkgs::packageByName($packages, $_)->flag_selected } @_;
- },
- check_interactive_to_toggle => sub {
- my $p = pkgs::packageByName($packages, $_[0]) or return;
- if ($p->flag_base) {
- $o->ask_warn('', N("This is a mandatory package, it can not be unselected"));
- } elsif ($p->flag_installed && !$p->flag_upgrade) {
- $o->ask_warn('', N("You can not unselect this package. It is already installed"));
- } elsif ($p->flag_selected && $p->flag_installed) {
- if ($::expert) {
- $o->ask_yesorno('', N("This package must be upgraded.\nAre you sure you want to deselect it?")) or return;
- return 1;
- } else {
- $o->ask_warn('', N("You can not unselect this package. It must be upgraded"));
- }
- } else { return 1 }
- return;
- },
- auto_deps => N("Show automatically selected packages"),
- interactive_help_id => 'choosePackagesTree',
- ok => N("Install"),
- cancel => N("Previous"),
- icons => [ { icon => 'floppy',
- help => N("Load/Save selection"),
- wait_message => N("Updating package selection"),
- code => sub { $o->loadSavePackagesOnFloppy($packages); 1 },
- },
- if_(0,
- { icon => 'feather',
- help => N("Minimal install"),
- code => sub {
-
- install_any::unselectMostPackages($o);
- pkgs::setSelectedFromCompssList($packages, { SYSTEM => 1 }, 4, $availableCorrected);
- 1;
- } }),
- ],
- state => {
- auto_deps => 1,
- flat => $o_limit_medium,
- },
- };
-
- $o->ask_browse_tree_info('', N("Choose the packages you want to install"), $common);
-}
-
-#------------------------------------------------------------------------------
-sub beforeInstallPackages {
- my ($o) = @_;
- $o->SUPER::beforeInstallPackages;
- install_any::copy_advertising($o);
-}
-
-#------------------------------------------------------------------------------
-sub installPackages {
- my ($o, $packages) = @_;
-
- my ($current_total_size, $last_size, $nb, $total_size, $start_time, $last_dtime, $_trans_progress_total);
-
- my $w = ugtk2->new(N("Installing"));
- $w->sync;
- my $text = gtknew('Label');
- my ($advertising, $change_time, $i);
- my $show_advertising if 0;
- $show_advertising = to_bool(@install_any::advertising_images) if !defined $show_advertising;
-
- my ($msg, $msg_time_remaining) = map { gtknew('Label', text => $_) } '', N("Estimating");
- my ($progress, $progress_total) = map { Gtk2::ProgressBar->new } (1..2);
- ugtk2::gtkadd($w->{window}, my $box = gtknew('VBox', spacing => 10));
-
- my $advertize = sub {
- my ($update) = @_;
- @install_any::advertising_images or return;
- foreach ($msg, $progress, $text) {
- $show_advertising ? $_->hide : $_->show;
- }
-
- gtkdestroy($advertising) if $advertising;
- if ($show_advertising && $update) {
- $change_time = time();
- my $f = $install_any::advertising_images[$i++ % @install_any::advertising_images];
- log::l("advertising $f");
- my $pl = $f; $pl =~ s/\.png$/.pl/;
- my $icon_name = $f; $icon_name =~ s/\.png$/_icon.png/;
- my ($draw_text, $width, $height, $border, $y_start, @text);
- -e $pl and $draw_text = 1;
- eval(cat_($pl)) if $draw_text;
- my $pix = gtkcreate_pixbuf($f);
- my $darea = gtknew('DrawingArea');
- gtkpack($box, $advertising = !$draw_text ?
- gtkcreate_img($f) :
- gtkset($darea, width => $width, height => $height, expose_event => sub {
- my (undef, undef, $dx, $dy) = $darea->allocation->values;
- $darea->window->draw_rectangle($darea->style->bg_gc('active'), 1, 0, 0, $dx, $dy);
- $pix->render_to_drawable($darea->window, $darea->style->bg_gc('normal'), 0, 0,
- ($dx-$width)/2, 0, $width, $height, 'none', 0, 0);
-
- my @lines = wrap_paragraph([ @text ], $darea, $border, $width);
- foreach my $line (@lines) {
- my $layout = $darea->create_pango_layout($line->{text});
- my $draw_lay = sub {
- my ($gc, $decx) = @_;
- $darea->window->draw_layout($gc, $line->{'x'} + $decx, $y_start + $line->{'y'}, $layout);
- };
- $draw_lay->($darea->style->black_gc, 0);
- $line->{options}{bold} and $draw_lay->($darea->style->black_gc, 1);
- }
- }));
- } else {
- $advertising = undef;
- }
- };
-
- my $cancel = gtknew('Button', text => N("Cancel"), clicked => sub { $pkgs::cancel_install = 1 });
- my $details = gtknew('Button', text_ref => \$show_advertising,
- format => sub { $show_advertising ? N("Details") : N("No details") },
- clicked => sub {
- gtkval_modify(\$show_advertising, !$show_advertising);
- $advertize->('update');
- });
-
- $box->pack_end(gtkshow(gtknew('VBox', spacing => 5, children_loose => [
- $msg, $progress,
- gtknew('Table', children => [ [ N("Time remaining "), $msg_time_remaining ] ]),
- $text,
- $progress_total,
- gtknew('HButtonBox', children_loose => [ $cancel, $details ]),
- ])), 0, 1, 0);
- $details->hide if !@install_any::advertising_images;
- $w->sync;
- gtkset($msg, text => N("Please wait, preparing installation..."));
- foreach ($cancel, $details) {
- gtkset_mousecursor_normal($_->window);
- }
-
- $advertize->(0);
-
- my $oldInstallCallback = \&pkgs::installCallback;
- local *pkgs::installCallback = sub {
- my ($data, $type, $id, $subtype, $amount, $total) = @_;
- if ($type eq 'user' && $subtype eq 'install') {
- #- $amount and $total are used to return number of package and total size.
- $nb = $amount;
- $total_size = $total; $current_total_size = 0;
- $start_time = time();
- gtkset($msg, text => N("%d packages", $nb));
- $w->flush;
- } elsif ($type eq 'inst' && $subtype eq 'start') {
- $progress->set_fraction(0);
- my $p = $data->{depslist}[$id];
- gtkset($msg, text => N("Installing package %s", $p->name));
- $current_total_size += $last_size;
- $last_size = $p->size;
- gtkset($text, text => (split /\n/, c::from_utf8($p->summary))[0] || '');
- $advertize->(1) if $show_advertising && $total_size > 20_000_000 && time() - $change_time > 20;
- $w->flush;
- } elsif ($type eq 'inst' && $subtype eq 'progress') {
- $progress->set_fraction($total ? $amount / $total : 0);
-
- my $dtime = time() - $start_time;
- my $ratio =
- $total_size == 0 ? 0 :
- pkgs::size2time($current_total_size + $amount, $total_size) / pkgs::size2time($total_size, $total_size);
- $ratio >= 1 and $ratio = 1;
- my $total_time = $ratio ? $dtime / $ratio : time();
-
- $progress_total->set_fraction($ratio);
- if ($dtime != $last_dtime && $current_total_size > 80_000_000) {
- gtkset($msg_time_remaining, text => formatTime(10 * round(max($total_time - $dtime, 0) / 10) + 10));
- $last_dtime = $dtime;
- }
- $w->flush;
- } else { goto $oldInstallCallback }
- };
- #- the modification is not local as the box should be living for other package installation.
- undef *install_any::changeMedium;
- *install_any::changeMedium = sub {
- my ($method, $medium) = @_;
-
- #- if not using a cdrom medium or an iso image, always abort.
- return if !install_any::method_allows_medium_change($method);
-
- my $name = pkgs::mediumDescr($o->{packages}, $medium);
- local $| = 1; print "\a";
- my $time = time();
- my $r = $name !~ /commercial/i || ($o->{useless_thing_accepted2} ||= $o->ask_from_list_('', formatAlaTeX(install_messages::com_license()), [ N_("Accept"), N_("Refuse") ], "Accept") eq "Accept");
- if ($method =~ /-iso$/) {
- $r = install_any::changeIso($name);
- } else {
- $r &&= $o->ask_okcancel('', N("Change your Cd-Rom!
-Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when done.
-If you do not have it, press Cancel to avoid installation from this Cd-Rom.", $name), 1);
- }
- #- add the elapsed time (otherwise the predicted time will be rubbish)
- $start_time += time() - $time;
- return $r;
- };
- my $install_result;
- catch_cdie { $install_result = $o->install_steps::installPackages($packages) }
- sub {
- log::l("catch_cdie: $@");
- my $time = time();
- if ($@ =~ /^error ordering package list: (.*)/) {
- $o->ask_yesorno('', [
-N("There was an error ordering packages:"), $1, N("Go on anyway?") ], 1) and return 1;
- ${$_[0]} = "already displayed";
- } elsif ($@ =~ /^error installing package list: (.*)/) {
- $o->ask_yesorno('', [
-N("There was an error installing packages:"), $1, N("Go on anyway?") ], 1) and return 1;
- ${$_[0]} = "already displayed";
- }
- $w->destroy;
- #- add the elapsed time (otherwise the predicted time will be rubbish)
- $start_time += time() - $time;
- 0;
- };
- if ($pkgs::cancel_install) {
- $pkgs::cancel_install = 0;
- die 'already displayed';
- }
- $w->destroy;
- $install_result;
-}
-
-sub summary_prompt {
- my ($o, $l, $check_complete) = @_;
-
- my $w = ugtk2->new('');
-
- my $set_entry_labels;
- my @table;
- my $group;
- foreach my $e (@$l) {
- if ($group ne $e->{group}) {
- $group = $e->{group};
- push @table, [ gtknew('HBox', children_tight => [ $group ]), '' ];
- }
- $e->{widget} = gtknew('WrappedLabel', width => $::real_windowwidth * 0.72);
-
- push @table, [], [ gtknew('HBox', spacing => 30, children_tight => [ '', $e->{widget} ]),
- gtknew('Button', text => N("Configure"), clicked => sub {
- $w->{rwindow}->hide;
- $e->{clicked}();
- $w->{rwindow}->show;
- $set_entry_labels->();
- }) ];
- }
-
- $set_entry_labels = sub {
- foreach (@$l) {
- my $t = $_->{val}() || '<span foreground="red">' . N("not configured") . '</span>';
- $t =~ s/&/&amp;/g;
- gtkset($_->{widget}, text_markup => $_->{label} . ' - ' . $t);
- }
- };
- $set_entry_labels->();
-
- my $help_sub = $o->interactive_help_sub_display_id('summary');
-
- ugtk2::gtkadd($w->{window},
- gtknew('VBox', spacing => 5, children => [
- 1, gtknew('ScrolledWindow', child => gtknew('Table', mcc => 1, children => \@table)),
- 0, $w->create_okcancel(undef, '', '', if_($help_sub, [ N("Help"), $help_sub, 1 ]))
- ]));
-
- $w->main($check_complete);
-}
-
-sub deselectFoundMedia {
- #- group by CD
- my ($o, $hdlists, $mediumsize) = @_;
- my %cdlist;
- my @hdlist2;
- my @corresp;
- my $i = 0;
- my $totalsize = 0;
- foreach (@$hdlists) {
- my $cd = install_any::getCDNumber($_->[3]);
- if (!$cd || !@{$cdlist{$cd} || []}) {
- push @hdlist2, $_;
- $corresp[$i] = [ $i ];
- } else {
- $corresp[$i] = [];
- push @{$corresp[$cdlist{$cd}[0]]}, $i;
- }
- if ($cd) {
- $cdlist{$cd} ||= [];
- push @{$cdlist{$cd}}, $i;
- }
- $totalsize >= 0 and $totalsize += $mediumsize->{$_->[0]};
- ++$i;
- }
- $totalsize ||= -1; #- don't check size, total medium size unknown
- my @selection = (1) x @hdlist2;
- my $copy_rpms_on_disk = 0;
- my $ask_copy_rpms_on_disk = $o->{method} !~ /iso/i;
- #- check available size for copying rpms from infos in hdlists file
- if ($ask_copy_rpms_on_disk && $totalsize >= 0) {
- my $availvar = install_any::getAvailableSpace_mounted("$::prefix/var");
- $availvar /= 1024 * 1024; #- Mo
- log::l("totalsize=$totalsize, avail on $::prefix/var=$availvar");
- $ask_copy_rpms_on_disk = $totalsize < $availvar * 0.6;
- }
- if ($ask_copy_rpms_on_disk) {
- #- don't be afraid, cleanup old RPMs if upgrade
- eval { rm_rf("$::prefix/var/ftp/pub/Mandrivalinux", "$::prefix/var/ftp/pub/Mandrivalinux") if $o->{isUpgrade} };
- my $w = ugtk2->new("");
- $i = -1;
- $w->sync;
- ugtk2::gtkadd(
- $w->{window},
- gtkpack(
- Gtk2::VBox->new(0, 5),
- Gtk2::WrappedLabel->new(N("The following installation media have been found.
-If you want to skip some of them, you can unselect them now.")),
- (map {
- ++$i;
- my $b = gtknew('CheckButton', text => $_->[3], active_ref => \$selection[$i]);
- $b->set_sensitive(0) unless $i;
- $b;
- } @hdlist2),
- gtknew('HSeparator'),
- Gtk2::WrappedLabel->new(N("You have the option to copy the contents of the CDs onto the hard drive before installation.
-It will then continue from the hard drive and the packages will remain available once the system is fully installed.")),
- gtknew('CheckButton', text => N("Copy whole CDs"), active_ref => \$copy_rpms_on_disk),
- gtknew('HSeparator'),
- gtknew('HBox', children_tight => [
- gtknew('Button', text => N("Next"), clicked => sub { Gtk2->main_quit }),
- ]),
- ),
- );
- $w->main;
- }
- $i = -1;
- my $l = [ grep { $selection[++$i] } @hdlist2 ];
- my @l2; $i = 0;
- foreach my $c (@$l) {
- ++$i while $hdlists->[$i][3] ne $c->[3];
- push @l2, $hdlists->[$_] foreach @{$corresp[$i]};
- }
- log::l("keeping media " . join ',', map { $_->[1] } @l2);
- $o->{mediumsize} = $totalsize;
- (\@l2, $copy_rpms_on_disk);
-}
-
-1;
diff --git a/perl-install/install_steps_interactive.pm b/perl-install/install_steps_interactive.pm
deleted file mode 100644
index f2a420239..000000000
--- a/perl-install/install_steps_interactive.pm
+++ /dev/null
@@ -1,1344 +0,0 @@
-package install_steps_interactive; # $Id$
-
-
-use strict;
-use vars qw(@ISA $new_bootstrap);
-
-@ISA = qw(install_steps);
-
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use partition_table;
-use fs::type;
-use install_steps;
-use install_interactive;
-use install_any;
-use install_messages;
-use detect_devices;
-use run_program;
-use devices;
-use fsedit;
-use loopback;
-use mouse;
-use modules;
-use modules::interactive;
-use lang;
-use keyboard;
-use any;
-use log;
-
-#-######################################################################################
-#- In/Out Steps Functions
-#-######################################################################################
-sub errorInStep {
- my ($o, $err) = @_;
- $o->ask_warn(N("Error"), [ N("An error occurred"), formatError($err) ]);
-}
-
-sub kill_action {
- my ($o) = @_;
- $o->kill;
-}
-
-#-######################################################################################
-#- Steps Functions
-#-######################################################################################
-#------------------------------------------------------------------------------
-sub selectLanguage {
- my ($o) = @_;
-
- $o->{locale}{lang} = any::selectLanguage($o, $o->{locale}{lang}, $o->{locale}{langs} ||= {});
- install_steps::selectLanguage($o);
-
- if ($o->isa('interactive::gtk')) {
- $o->ask_warn('', formatAlaTeX(
-"If you see this message it is because you chose a language for
-which DrakX does not include a translation yet; however the fact
-that it is listed means there is some support for it anyway.
-
-That is, once GNU/Linux will be installed, you will be able to at
-least read and write in that language; and possibly more (various
-fonts, spell checkers, various programs translated etc. that
-varies from language to language).")) if $o->{locale}{lang} !~ /^en/ && !lang::load_mo();
- } else {
- #- no need to have this in po since it is never translated
- $o->ask_warn('', "The characters of your language can not be displayed in console,
-so the messages will be displayed in english during installation") if $ENV{LANGUAGE} eq 'C';
- }
-}
-
-sub acceptLicense {
- my ($o) = @_;
-
- $o->{release_notes} = join("\n\n", map {
- my $f = install_any::getFile($_);
- $f && cat__($f);
- } 'release-notes.txt', 'release-notes.' . arch() . '.txt');
-
- return if $o->{useless_thing_accepted};
-
- my $r = $::testing ? 'Accept' : 'Refuse';
-
- $o->ask_from_({ title => N("License agreement"),
- cancel => N("Quit"),
- messages => formatAlaTeX(install_messages::main_license() . "\n\n\n" . install_messages::warning_about_patents()),
- interactive_help_id => 'acceptLicense',
- more_buttons => [ [ N("Release Notes"), sub { $o->ask_warn(N("Release Notes"), $o->{release_notes}) }, 1 ] ],
- callbacks => { ok_disabled => sub { $r eq 'Refuse' } },
- },
- [ { list => [ N_("Accept"), N_("Refuse") ], val => \$r, type => 'list', format => sub { translate($_[0]) } } ])
- or do {
- if ($::globetrotter) {
- system("killall XFree86");
- exec("/sbin/reboot");
- }
- install_any::ejectCdrom();
- $o->exit;
- };
-}
-
-#------------------------------------------------------------------------------
-sub selectKeyboard {
- my ($o, $clicked) = @_;
-
- my $from_usb = keyboard::from_usb();
- my $l = keyboard::lang2keyboards(lang::langs($o->{locale}{langs}));
-
- if ($::expert || $clicked || !($from_usb || @$l && $l->[0][1] >= 90) || listlength(lang::langs($o->{locale}{langs})) > 1) {
- add2hash($o->{keyboard}, $from_usb);
- my @best = uniq($from_usb ? $from_usb->{KEYBOARD} : (), (map { $_->[0] } @$l), 'us_intl');
-
- my $format = sub { translate(keyboard::KEYBOARD2text($_[0])) };
- my $other;
- my $ext_keyboard = my $KEYBOARD = $o->{keyboard}{KEYBOARD};
- $o->ask_from_(
- { title => N("Keyboard"),
- messages => N("Please choose your keyboard layout."),
- interactive_help_id => 'selectKeyboard',
- advanced_messages => N("Here is the full list of available keyboards"),
- advanced_label => N("More"),
- callbacks => { changed => sub { $other = $_[0] == 1 } },
- },
- [ if_(@best > 1, { val => \$KEYBOARD, type => 'list', format => $format, sort => 1,
- list => [ @best ] }),
- { val => \$ext_keyboard, type => 'list', format => $format,
- list => [ difference2([ keyboard::KEYBOARDs() ], \@best) ], advanced => @best > 1 }
- ]);
- $o->{keyboard}{KEYBOARD} = @best <= 1 || $other ? $ext_keyboard : $KEYBOARD;
- delete $o->{keyboard}{unsafe};
- }
- keyboard::group_toggle_choose($o, $o->{keyboard}) or goto &selectKeyboard;
- install_steps::selectKeyboard($o);
-}
-
-#------------------------------------------------------------------------------
-sub selectInstallClass {
- my ($o) = @_;
-
- if (my @l = install_any::find_root_parts($o->{fstab}, $o->{prefix})) {
- log::l("proposing to upgrade partitions " . join(" ", map { $_->{part}{device} } @l));
-
- my @releases = uniq(map { $_->{release} } @l);
- if (@releases != @l) {
- #- same release name so adding the device to differentiate them:
- $_->{release} .= " ($_->{part}{device})" foreach @l;
- }
-
- my $p;
- $o->ask_from_({ title => N("Install/Upgrade"),
- messages => N("Is this an install or an upgrade?"),
- interactive_help_id => 'selectInstallClass',
- },
- [ { val => \$p,
- list => [ @l, N_("Install") ],
- type => 'list',
- format => sub { ref($_[0]) ? N("Upgrade %s", $_[0]{release}) : translate($_[0]) }
- } ]);
- if (ref $p) {
- my $part = $p->{part};
- log::l("choosing to upgrade partition $part->{device}");
- $o->{migrate_device_names} = install_any::use_root_part($o->{all_hds}, $part, $o);
- foreach (grep { $_->{mntpoint} } @{$o->{fstab}}) {
- my ($options, $_unknown) = fs::mount_options::unpack($_);
- $options->{encrypted} or next;
- $o->ask_from_({ focus_first => 1 },
- [ { label => N("Encryption key for %s", $_->{mntpoint}),
- hidden => 1, val => \$_->{encrypt_key} } ]);
- }
- $o->{isUpgrade} = $p->{release_file} =~ /redhat/ ? 'redhat' : 'mandrake';
- }
- }
-}
-
-#------------------------------------------------------------------------------
-sub selectMouse {
- my ($o, $force) = @_;
-
- $force ||= $o->{mouse}{unsafe};
-
- if ($force) {
- my $prev = $o->{mouse}{type} . '|' . $o->{mouse}{name};
-
- $o->ask_from_({ messages => N("Please choose your type of mouse."),
- interactive_help_id => 'selectMouse',
- },
- [ { list => [ mouse::fullnames() ], separator => '|', val => \$prev, format => sub { join('|', map { translate($_) } split('\|', $_[0])) } } ]);
- $o->{mouse} = mouse::fullname2mouse($prev);
- }
-
- if ($force && $o->{mouse}{type} eq 'serial') {
- $o->{mouse}{device} =
- $o->ask_from_listf_raw({ title => N("Mouse Port"),
- messages => N("Please choose which serial port your mouse is connected to."),
- interactive_help_id => 'selectSerialPort',
- },
- \&mouse::serial_port2text,
- [ mouse::serial_ports() ]) or return &selectMouse;
- }
- if (arch() =~ /ppc/ && $o->{mouse}{nbuttons} == 1) {
- #- set a sane default F11/F12
- $o->{mouse}{button2_key} = 87;
- $o->{mouse}{button3_key} = 88;
- $o->ask_from('', N("Buttons emulation"),
- [
- { label => N("Button 2 Emulation"), val => \$o->{mouse}{button2_key}, list => [ mouse::ppc_one_button_keys() ], format => \&mouse::ppc_one_button_key2text },
- { label => N("Button 3 Emulation"), val => \$o->{mouse}{button3_key}, list => [ mouse::ppc_one_button_keys() ], format => \&mouse::ppc_one_button_key2text },
- ]) or return;
- }
-
- if ($o->{mouse}{device} eq "usbmouse") {
- modules::interactive::load_category($o, $o->{modules_conf}, 'bus/usb', 1, 1);
- eval {
- devices::make("usbmouse");
- modules::load(qw(hid mousedev usbmouse));
- };
- }
-
- $o->SUPER::selectMouse;
- 1;
-}
-#------------------------------------------------------------------------------
-sub setupSCSI {
- my ($o) = @_;
-
- if (!$::noauto && arch() =~ /i.86/) {
- if ($o->{pcmcia} ||= detect_devices::real_pcmcia_probe()) {
- my $w = $o->wait_message(N("PCMCIA"), N("Configuring PCMCIA cards..."));
- my $results = install_any::configure_pcmcia($o->{modules_conf}, $o->{pcmcia});
- undef $w;
- $results and $o->ask_warn('', $results);
- }
- }
- {
- my $_w = $o->wait_message(N("IDE"), N("Configuring IDE"));
- modules::load(modules::category2modules('disk/cdrom'));
- }
- modules::interactive::load_category($o, $o->{modules_conf}, 'bus/firewire', 1);
-
- my $have_non_scsi = detect_devices::hds(); #- at_least_one scsi device if we have no disks
- modules::interactive::load_category($o, $o->{modules_conf}, 'disk/ide|scsi|hardware_raid|sata|firewire', 1, !$have_non_scsi);
- modules::interactive::load_category($o, $o->{modules_conf}, 'disk/ide|scsi|hardware_raid|sata|firewire') if !detect_devices::hds(); #- we really want a disk!
-
- install_interactive::tellAboutProprietaryModules($o);
-
- install_any::getHds($o, $o);
-}
-
-sub ask_mntpoint_s { #- }{}
- my ($o, $fstab) = @_;
-
- my @fstab = grep { isTrueFS($_) } @$fstab;
- @fstab = grep { isSwap($_) } @$fstab if @fstab == 0;
- @fstab = @$fstab if @fstab == 0;
- die N("No partition available") if @fstab == 0;
-
- {
- my $_w = $o->wait_message('', N("Scanning partitions to find mount points"));
- install_any::suggest_mount_points($fstab, $o->{prefix}, 'uniq');
- log::l("default mntpoint $_->{mntpoint} $_->{device}") foreach @fstab;
- }
- if (@fstab == 1) {
- $fstab[0]{mntpoint} = '/';
- } else {
- $o->ask_from_({ messages => N("Choose the mount points"),
- interactive_help_id => 'ask_mntpoint_s',
- callbacks => {
- complete => sub {
- require diskdrake::interactive;
- eval { 1, find_index {
- !diskdrake::interactive::check_mntpoint($o, $_->{mntpoint}, $_, $o->{all_hds});
- } @fstab };
- },
- },
- },
- [ map {
- {
- label => partition_table::description($_),
- val => \$_->{mntpoint},
- not_edit => 0,
- list => [ '', fsedit::suggestions_mntpoint(fs::get::empty_all_hds()) ],
- };
- } @fstab ]) or return;
- }
- $o->SUPER::ask_mntpoint_s($fstab);
-}
-
-#------------------------------------------------------------------------------
-sub doPartitionDisks {
- my ($o) = @_;
-
- if (arch() =~ /ppc/) {
- my $generation = detect_devices::get_mac_generation();
- if ($generation =~ /NewWorld/) {
- #- mac partition table
- if (defined $partition_table::mac::bootstrap_part) {
- #- do not do anything if we've got the bootstrap setup
- #- otherwise, go ahead and create one somewhere in the drive free space
- } else {
- my $freepart = $partition_table::mac::freepart;
- if ($freepart && $freepart->{size} >= 1) {
- log::l("creating bootstrap partition on drive /dev/$freepart->{hd}{device}, block $freepart->{start}");
- $partition_table::mac::bootstrap_part = $freepart->{part};
- log::l("bootstrap now at $partition_table::mac::bootstrap_part");
- my $p = { start => $freepart->{start}, size => 1 << 11, mntpoint => '' };
- fs::type::set_pt_type($p, 0x401);
- fsedit::add($freepart->{hd}, $p, $o->{all_hds}, { force => 1, primaryOrExtended => 'Primary' });
- $new_bootstrap = 1;
-
- } else {
- $o->ask_warn('', N("No free space for 1MB bootstrap! Install will continue, but to boot your system, you'll need to create the bootstrap partition in DiskDrake"));
- }
- }
- } elsif ($generation =~ /IBM/) {
- #- dos partition table
- $o->ask_warn('', N("You'll need to create a PPC PReP Boot bootstrap! Install will continue, but to boot your system, you'll need to create the bootstrap partition in DiskDrake"));
- }
- }
-
- if (!$o->{isUpgrade}) {
- install_interactive::partitionWizard($o);
- }
-}
-
-#------------------------------------------------------------------------------
-sub rebootNeeded {
- my ($o) = @_;
- $o->ask_warn('', N("You need to reboot for the partition table modifications to take place"));
-
- install_steps::rebootNeeded($o);
-}
-
-#------------------------------------------------------------------------------
-sub choosePartitionsToFormat {
- my ($o, $fstab) = @_;
-
- $o->SUPER::choosePartitionsToFormat($fstab);
-
- my @l = grep { !$_->{isMounted} && $_->{mntpoint} &&
- (!isSwap($_) || $::expert) &&
- (!isFat_or_NTFS($_) || $_->{notFormatted} || $::expert) &&
- (!isOtherAvailableFS($_) || $::expert || $_->{toFormat});
- } @$fstab;
- $_->{toFormat} = 1 foreach grep { isSwap($_) && !$::expert } @$fstab;
-
- return if @l == 0 || !$::expert && every { $_->{toFormat} } @l;
-
- #- keep it temporary until the guy has accepted
- $_->{toFormatTmp} = $_->{toFormat} || $_->{toFormatUnsure} foreach @l;
-
- $o->ask_from_(
- { messages => N("Choose the partitions you want to format"),
- interactive_help_id => 'formatPartitions',
- advanced_messages => N("Check bad blocks?"),
- },
- [ map {
- my $e = $_;
- ({
- text => partition_table::description($e), type => 'bool',
- val => \$e->{toFormatTmp}
- }, if_(!isLoopback($_) && !member($_->{fs_type}, 'reiserfs', 'xfs', 'jfs'), {
- text => partition_table::description($e), type => 'bool', advanced => 1,
- disabled => sub { !$e->{toFormatTmp} },
- val => \$e->{toFormatCheck}
- })) } @l ]
- ) or die 'already displayed';
- #- ok now we can really set toFormat
- foreach (@l) {
- $_->{toFormat} = delete $_->{toFormatTmp};
- set_isFormatted($_, 0);
- }
-}
-
-
-sub formatMountPartitions {
- my ($o, $_fstab) = @_;
- my ($w, $wait_message) = fs::format::wait_message($o);
- catch_cdie {
- fs::formatMount_all($o->{all_hds}{raids}, $o->{fstab}, $o->{prefix}, $wait_message);
- } sub {
- $@ =~ /fsck failed on (\S+)/ or return;
- $o->ask_yesorno('', N("Failed to check filesystem %s. Do you want to repair the errors? (beware, you can lose data)", $1), 1);
- };
- undef $w; #- help perl (otherwise wait_message stays forever in newt)
- die N("Not enough swap space to fulfill installation, please add some") if availableMemory() < 40 * 1024;
-}
-
-#------------------------------------------------------------------------------
-sub setPackages {
- my ($o, $rebuild_needed) = @_;
-
- my $w = $o->wait_message('', $rebuild_needed ? N("Looking for available packages and rebuilding rpm database...") :
- N("Looking for available packages..."));
- install_any::setPackages($o, $rebuild_needed);
-
- $w->set(N("Looking at packages already installed..."));
- pkgs::selectPackagesAlreadyInstalled($o->{packages});
-
- if ($rebuild_needed) {
- $w->set(N("Finding packages to upgrade..."));
- pkgs::selectPackagesToUpgrade($o->{packages});
- }
-}
-
-sub mirror2text { $crypto::mirrors{$_[0]} ? $crypto::mirrors{$_[0]}[0] . '|' . $_[0] : "-|URL" }
-sub askSupplMirror {
- my ($o, $message) = @_;
- my $u = $o->{updates} ||= {};
- require crypto;
- my @mirrors = do {
- #- Direct the user to the community mirror tree for an install from a mini-iso
- $o->{distro_type} ||= 'community';
- #- get the list of mirrors locally, to avoid weird bugs with making an
- #- http request before ftp at this point of the install
- crypto::mirrors($o->{distro_type}, 1);
- };
- push @mirrors, '-';
- $o->ask_from_(
- {
- messages => N("Choose a mirror from which to get the packages"),
- cancel => N("Cancel"),
- },
- [ { separator => '|',
- format => \&mirror2text,
- list => \@mirrors,
- val => \$u->{mirror},
- }, ],
- ) or $u->{mirror} = '';
- delete $o->{updates};
- if ($u->{mirror} eq '-') {
- return $o->ask_from_entry('', $message) || '';
- }
- my $url = "ftp://$u->{mirror}$crypto::mirrors{$u->{mirror}}[1]";
- $url =~ s!/(?:media/)?main/?\z!!;
- log::l("mirror chosen [$url]");
- return $url;
-}
-
-sub selectSupplMedia {
- my ($o, $suppl_method) = @_;
- install_any::selectSupplMedia($o, $suppl_method);
-}
-#------------------------------------------------------------------------------
-sub choosePackages {
- my ($o, $packages, $compssUsers, $_first_time) = @_;
-
- #- this is done at the very beginning to take into account
- #- selection of CD by user if using a cdrom.
- $o->chooseCD($packages) if install_any::method_allows_medium_change($o->{method});
-
- my $w = $o->wait_message('', N("Looking for available packages..."));
- my $availableC = &install_steps::choosePackages;
- my $individual;
-
- require pkgs;
-
- my $min_size = pkgs::selectedSize($packages);
- undef $w;
- if ($min_size >= $availableC) {
- $o->ask_warn('', N("Your system does not have enough space left for installation or upgrade (%d > %d)",
- $min_size, $availableC));
- install_steps::rebootNeeded($o);
- }
-
- my $min_mark = 4;
-
- chooseGroups:
- $o->chooseGroups($packages, $compssUsers, $min_mark, \$individual) if !$o->{isUpgrade} && $o->{meta_class} ne 'desktop';
-
- ($o->{packages_}{ind}) =
- pkgs::setSelectedFromCompssList($packages, $o->{rpmsrate_flags_chosen}, $min_mark, $availableC);
-
- $o->choosePackagesTree($packages) or goto chooseGroups if $individual;
-
- install_any::warnAboutRemovedPackages($o, $o->{packages});
- install_any::warnAboutNaughtyServers($o) or goto chooseGroups if !$o->{isUpgrade} && $o->{meta_class} ne 'firewall';
-}
-
-sub choosePackagesTree {
- my ($o, $packages, $o_limit_to_medium) = @_;
-
- $o->ask_many_from_list('', N("Choose the packages you want to install"),
- {
- list => [ grep { !$o_limit_to_medium || pkgs::packageMedium($packages, $_) == $o_limit_to_medium }
- @{$packages->{depslist}} ],
- value => \&URPM::Package::flag_selected,
- label => \&URPM::Package::name,
- sort => 1,
- });
-}
-sub loadSavePackagesOnFloppy {
- my ($o, $packages) = @_;
- $o->ask_from('',
-N("Please choose load or save package selection.
-The format is the same as auto_install generated files."),
- [ { val => \ (my $choice), list => [ N_("Load"), N_("Save") ], format => \&translate, type => 'list' } ]) or return;
-
- if ($choice eq 'Load') {
- while (1) {
- log::l("load package selection");
- my ($_h, $fh) = install_any::media_browser($o, '', 'package_list.pl') or return;
- my $O = eval { install_any::loadO(undef, $fh) };
- if ($@) {
- $o->ask_okcancel('', N("Bad file")) or return;
- } else {
- install_any::unselectMostPackages($o);
- foreach (@{$O->{default_packages} || []}) {
- my $pkg = pkgs::packageByName($packages, $_);
- pkgs::selectPackage($packages, $pkg) if $pkg;
- }
- return 1;
- }
- }
- } else {
- log::l("save package selection");
- install_any::g_default_packages($o);
- }
-}
-sub chooseGroups {
- my ($o, $packages, $compssUsers, $min_level, $individual) = @_;
-
- #- for all groups available, determine package which belongs to each one.
- #- this will enable getting the size of each groups more quickly due to
- #- limitation of current implementation.
- #- use an empty state for each one (no flag update should be propagated).
-
- my $b = pkgs::saveSelected($packages);
- install_any::unselectMostPackages($o);
- pkgs::setSelectedFromCompssList($packages, { CAT_SYSTEM => 1 }, $min_level, 0);
- my $system_size = pkgs::selectedSize($packages);
- my ($sizes, $pkgs) = pkgs::computeGroupSize($packages, $min_level);
- pkgs::restoreSelected($b);
- log::l("system_size: $system_size");
-
- my %stable_flags = grep_each { $::b } %{$o->{rpmsrate_flags_chosen}};
- delete $stable_flags{"CAT_$_"} foreach map { @{$_->{flags}} } @{$o->{compssUsers}};
-
- my $compute_size = sub {
- my %pkgs;
- my %flags = %stable_flags; @flags{@_} = ();
- my $total_size;
- A: while (my ($k, $size) = each %$sizes) {
- Or: foreach (split "\t", $k) {
- foreach (split "&&") {
- exists $flags{$_} or next Or;
- }
- $total_size += $size;
- $pkgs{$_} = 1 foreach @{$pkgs->{$k}};
- next A;
- }
- }
- log::l("computed size $total_size (flags " . join(' ', keys %flags) . ")");
- log::l("chooseGroups: ", join(" ", sort keys %pkgs));
-
- int $total_size;
- };
-
- my ($size, $unselect_all);
- my $available_size = install_any::getAvailableSpace($o) / sqr(1024);
- my $size_to_display = sub {
- my $lsize = $system_size + $compute_size->(map { "CAT_$_" } map { @{$_->{flags}} } grep { $_->{selected} } @$compssUsers);
-
- #- if a profile is deselected, deselect everything (easier than deselecting the profile packages)
- $unselect_all ||= $size > $lsize;
- $size = $lsize;
- N("Total size: %d / %d MB", pkgs::correctSize($size / sqr(1024)), $available_size);
- };
-
- while (1) {
- if ($available_size < 200) {
- # too small to choose anything. Defaulting to no group chosen
- $_->{selected} = 0 foreach @$compssUsers;
- last;
- }
-
- $o->reallyChooseGroups($size_to_display, $individual, $compssUsers) or return;
-
- last if $::testing || pkgs::correctSize($size / sqr(1024)) < $available_size || every { !$_->{selected} } @$compssUsers;
-
- $o->ask_warn('', N("Selected size is larger than available space"));
- }
- install_any::set_rpmsrate_category_flags($o, $compssUsers);
-
- log::l("compssUsersChoice selected: ", join(', ', map { qq("$_->{path}|$_->{label}") } grep { $_->{selected} } @$compssUsers));
-
- #- do not try to deselect package (by default no groups are selected).
- if (!$o->{isUpgrade}) {
- install_any::unselectMostPackages($o) if $unselect_all;
- }
- #- if no group have been chosen, ask for using base system only, or no X, or normal.
- if (!$o->{isUpgrade} && !any { $_->{selected} } @$compssUsers) {
- my $docs = !$o->{excludedocs};
- my $minimal;
-
- $o->ask_from(N("Type of install"),
- N("You have not selected any group of packages.
-Please choose the minimal installation you want:"),
- [
- { val => \$o->{rpmsrate_flags_chosen}{CAT_X}, type => 'bool', text => N("With X"), disabled => sub { $minimal } },
- { val => \$docs, type => 'bool', text => N("With basic documentation (recommended!)"), disabled => sub { $minimal } },
- { val => \$minimal, type => 'bool', text => N("Truly minimal install (especially no urpmi)") },
- ],
- changed => sub { $o->{rpmsrate_flags_chosen}{CAT_X} = $docs = 0 if $minimal },
- ) or return &chooseGroups;
-
- if ($minimal) {
- $o->{rpmsrate_flags_chosen}{CAT_X} = $docs = 0; #- redo it in "changed" was not called
- $o->{rpmsrate_flags_chosen}{CAT_SYSTEM} = 0;
- }
- $o->{excludedocs} = !$docs;
-
- install_any::unselectMostPackages($o);
- }
- 1;
-}
-
-sub reallyChooseGroups {
- my ($o, $size_to_display, $individual, $compssUsers) = @_;
-
- my $size_text = &$size_to_display;
-
- my ($path, $all);
- $o->ask_from_({ messages => N("Package Group Selection"),
- interactive_help_id => 'choosePackages',
- callbacks => { changed => sub { $size_text = &$size_to_display } },
- }, [
- { val => \$size_text, type => 'label' }, {},
- (map {
- my $old = $path;
- $path = $_->{path};
- if_($old ne $path, { val => translate($path) }),
- {
- val => \$_->{selected},
- type => 'bool',
- disabled => sub { $all },
- text => translate($_->{label}),
- help => translate($_->{descr}),
- };
- } @$compssUsers),
- if_($o->{meta_class} eq 'desktop', { text => N("All"), val => \$all, type => 'bool' }),
- if_($individual, { text => N("Individual package selection"), val => $individual, advanced => 1, type => 'bool' }),
- ]);
-
- if ($all) {
- $_->{selected} = 1 foreach @$compssUsers;
- }
- 1;
-}
-
-sub chooseCD {
- my ($o, $packages) = @_;
- my @mediums = grep { $_ != $install_any::boot_medium } pkgs::allMediums($packages);
- my @mediumsDescr;
- my %mediumsDescr;
-
- #- the boot medium is already selected.
- $mediumsDescr{pkgs::mediumDescr($packages, $install_any::boot_medium)} = 1;
-
- #- build mediumDescr according to mediums, this avoid asking multiple times
- #- all the medium grouped together on only one CD.
- foreach (@mediums) {
- my $descr = pkgs::mediumDescr($packages, $_);
- $packages->{mediums}{$_}{ignored} and next;
- exists $mediumsDescr{$descr} or push @mediumsDescr, $descr;
- $mediumsDescr{$descr} ||= $packages->{mediums}{$_}{selected};
- }
-
- if (install_any::method_is_from_ISO_images($o->{method})) {
- $mediumsDescr{$_} = install_any::method_is_from_ISO_images($packages->{mediums}{$_}{method})
- ? to_bool(install_any::find_ISO_image_labelled($_)) : 1
- foreach @mediumsDescr;
- } elsif ($o->{method} eq "cdrom") {
- #- if no other medium available or a poor beginner, we are choosing for him!
- #- note first CD is always selected and should not be unselected!
- return if @mediumsDescr == () || !$::expert;
-
- # $o->set_help('chooseCD');
- $o->ask_many_from_list('',
-N("If you have all the CDs in the list below, click Ok.
-If you have none of those CDs, click Cancel.
-If only some CDs are missing, unselect them, then click Ok."),
- {
- list => \@mediumsDescr,
- label => sub { N("Cd-Rom labeled \"%s\"", $_[0]) },
- val => sub { \$mediumsDescr{$_[0]} },
- }) or do {
- $mediumsDescr{$_} = 0 foreach @mediumsDescr; #- force unselection of other CDs.
- };
- }
-
- #- restore true selection of medium (which may have been grouped together)
- foreach (@mediums) {
- my $descr = pkgs::mediumDescr($packages, $_);
- $packages->{mediums}{$_}{ignored} and next;
- $packages->{mediums}{$_}{selected} = $mediumsDescr{$descr};
- log::l("select status of medium $_ is $packages->{mediums}{$_}{selected}");
- }
-}
-
-#------------------------------------------------------------------------------
-sub installPackages {
- my ($o, $packages) = @_;
- my ($current, $total) = (0, 0);
-
- my $w = $o->wait_message(N("Installing"), N("Preparing installation"));
-
- my $old = \&pkgs::installCallback;
- local *pkgs::installCallback = sub {
- my ($data, $type, $id, $subtype, $_amount, $total_) = @_;
- if ($type eq 'user' && $subtype eq 'install') {
- $total = $total_;
- } elsif ($type eq 'inst' && $subtype eq 'start') {
- my $p = $data->{depslist}[$id];
- $w->set(N("Installing package %s\n%d%%", $p->name, $total && 100 * $current / $total));
- $current += $p->size;
- } else { goto $old }
- };
-
- #- the modification is not local as the box should be living for other package installation.
- #- BEWARE this is somewhat duplicated (but not exactly from gtk code).
- undef *install_any::changeMedium;
- *install_any::changeMedium = sub {
- my ($method, $medium) = @_;
-
- #- if not using a cdrom medium or an iso image, always abort.
- return if !install_any::method_allows_medium_change($method);
-
- my $name = pkgs::mediumDescr($o->{packages}, $medium);
- local $| = 1; print "\a";
- my $r = $name !~ /commercial/i || ($o->{useless_thing_accepted2} ||= $o->ask_from_list_('', formatAlaTeX(install_messages::com_license()), [ N_("Accept"), N_("Refuse") ], "Accept") eq "Accept");
- if ($method =~ /-iso$/) {
- $r = install_any::changeIso($name);
- } else {
- $r &&= $o->ask_okcancel('', N("Change your Cd-Rom!
-Please insert the Cd-Rom labelled \"%s\" in your drive and press Ok when done.
-If you do not have it, press Cancel to avoid installation from this Cd-Rom.", $name), 1);
- }
- return $r;
- };
- my $install_result;
- catch_cdie { $install_result = $o->install_steps::installPackages($packages) }
- sub {
- if ($@ =~ /^error ordering package list: (.*)/) {
- $o->ask_yesorno('', [
-N("There was an error ordering packages:"), $1, N("Go on anyway?") ], 1) and return 1;
- ${$_[0]} = "already displayed";
- } elsif ($@ =~ /^error installing package list: (.*)/) {
- $o->ask_yesorno('', [
-N("There was an error installing packages:"), $1, N("Go on anyway?") ], 1) and return 1;
- ${$_[0]} = "already displayed";
- }
- 0;
- };
- if ($pkgs::cancel_install) {
- $pkgs::cancel_install = 0;
- die "setstep choosePackages\n";
- }
- $install_result;
-}
-
-sub afterInstallPackages($) {
- my ($o) = @_;
- my $_w = $o->wait_message('', N("Post-install configuration"));
- $o->SUPER::afterInstallPackages;
-}
-
-sub updatemodules {
- my ($o, $dev, $rel_dir) = @_;
-
- $o->ask_okcancel('', N("Please ensure the Update Modules media is in drive %s", $dev), 1) or return;
- $o->SUPER::updatemodules($dev, $rel_dir);
-}
-
-#------------------------------------------------------------------------------
-sub configureNetwork {
- my ($o) = @_;
- require network::ethernet;
- modules::load_category($o->{modules_conf}, list_modules::ethernet_categories());
-
- if ($o->{meta_class} eq 'firewall') {
- require network::netconnect;
- network::netconnect::main($o->{netcnx} ||= {}, $o, $o->{modules_conf}, $o->{netc}, $o->{mouse}, $o->{intf}, 0, 1);
- } else {
- require network::network;
- network::network::easy_dhcp($o->{modules_conf}, $o->{netc}, $o->{intf}) and $o->{netcnx}{type} = 'lan';
- $o->SUPER::configureNetwork;
- }
-}
-
-#------------------------------------------------------------------------------
-sub installUpdates {
- my ($o) = @_;
- my $u = $o->{updates} ||= {};
-
- $o->hasNetwork or return;
-
- if (is_empty_hash_ref($u)) {
- $o->ask_yesorno_({ messages => formatAlaTeX(
-N("You now have the opportunity to download updated packages. These packages
-have been updated after the distribution was released. They may
-contain security or bug fixes.
-
-To download these packages, you will need to have a working Internet
-connection.
-
-Do you want to install the updates?")),
- interactive_help_id => 'installUpdates',
- }) or return;
- }
-
- #- bring all interface up for installing crypto packages.
- install_interactive::upNetwork($o);
-
- #- update medium available and working.
- my $update_medium;
- do {
- require crypto;
- eval {
- my @mirrors = do {
- my $_w = $o->wait_message('', N("Contacting Mandriva Linux web site to get the list of available mirrors..."));
- crypto::mirrors($o->{distro_type});
- };
- #- if no mirror have been found, use current time zone and propose among available.
- $u->{mirror} ||= crypto::bestMirror($o->{timezone}{timezone}, $o->{distro_type});
- $o->ask_from_({ messages => N("Choose a mirror from which to get the packages"),
- cancel => N("Cancel"),
- }, [ { separator => '|',
- format => \&crypto::mirror2text,
- list => \@mirrors,
- val => \$u->{mirror},
- },
- ],
- ) or $u->{mirror} = '';
- };
- return if $@ || !$u->{mirror};
-
- eval {
- if ($u->{mirror}) {
- my $_w = $o->wait_message('', N("Contacting the mirror to get the list of available packages..."));
- $update_medium = crypto::getPackages($o->{packages}, $u->{mirror});
- }
- };
- } while $@ || !$update_medium && $o->ask_yesorno('', N("Unable to contact mirror %s", $u->{mirror}) . ($@ ? " :\n$@" : "") . "\n\n" . N("Would you like to try again?"));
-
- if ($update_medium) {
- if ($o->choosePackagesTree($o->{packages}, $update_medium)) {
- $o->{isUpgrade} = 1; #- now force upgrade mode, else update will be installed instead of upgraded.
- $o->pkg_install;
- } else {
- #- make sure to not try to install the packages (which are automatically selected by getPackage above).
- #- this is possible by deselecting the medium (which can be re-selected above).
- delete $update_medium->{selected};
- }
- #- update urpmi even, because there is an hdlist available and everything is good,
- #- this will allow user to update the medium but update his machine later.
- $o->install_urpmi;
- }
-
- #- stop interface using ppp only. FIXME REALLY TOCHECK isdn (costly network) ?
- # FIXME damien install_interactive::downNetwork($o, 'pppOnly');
-}
-
-
-#------------------------------------------------------------------------------
-sub configureTimezone {
- my ($o, $clicked) = @_;
-
- require timezone;
- $o->{timezone}{timezone} = $o->ask_from_treelist('', N("Which is your timezone?"), '/', [ timezone::getTimeZones() ], $o->{timezone}{timezone}) || return;
-
- my $ntp = to_bool($o->{timezone}{ntp});
- $o->ask_from_({ interactive_help_id => 'configureTimezoneGMT' }, [
- { text => N("Hardware clock set to GMT"), val => \$o->{timezone}{UTC}, type => 'bool' },
- { text => N("Automatic time synchronization (using NTP)"), val => \$ntp, type => 'bool' },
- ]) or goto &configureTimezone
- if $::expert || $clicked;
- if ($ntp) {
- my $servers = timezone::ntp_servers();
- $o->{timezone}{ntp} ||= 'pool.ntp.org';
-
- $o->ask_from_({},
- [ { label => N("NTP Server"), val => \$o->{timezone}{ntp}, list => [ keys %$servers ], not_edit => 0,
- format => sub { $servers->{$_[0]} ? "$servers->{$_[0]} ($_[0])" : $_[0] } } ]
- ) or goto &configureTimezone;
- } else {
- $o->{timezone}{ntp} = '';
- }
- install_steps::configureTimezone($o);
- 1;
-}
-
-#------------------------------------------------------------------------------
-sub configureServices {
- my ($o, $clicked) = @_;
- require services;
- $o->{services} = services::ask($o) if $::expert || $clicked;
- install_steps::configureServices($o);
-}
-
-
-sub summaryBefore {
- my ($o) = @_;
-
- #- auto-detection
- $o->configurePrinter(0);
- install_any::preConfigureTimezone($o);
- #- get back network configuration.
- require network::network;
- eval {
- network::network::read_all_conf($o->{prefix}, $o->{netc} ||= {}, $o->{intf} ||= {}, $o->{netcnx} ||= {});
- };
- log::l("summaryBefore: network configuration: ", formatError($@)) if $@;
-}
-
-sub summary_prompt {
- my ($o, $l, $check_complete) = @_;
-
- foreach (@$l) {
- my $val = $_->{val};
- ($_->{format}, $_->{val}) = (sub { $val->() || N("not configured") }, '');
- }
-
- $o->ask_from_({
- messages => N("Summary"),
- interactive_help_id => 'summary',
- cancel => '',
- callbacks => { complete => sub { !$check_complete->() } },
- }, $l);
-}
-
-sub summary {
- my ($o) = @_;
-
- my @l;
-
- push @l, {
- group => N("System"),
- label => N("Keyboard"),
- val => sub { $o->{keyboard} && translate(keyboard::keyboard2text($o->{keyboard})) },
- clicked => sub { $o->selectKeyboard(1) },
- };
-
- my $timezone_manually_set;
- push @l, {
- group => N("System"),
- label => N("Country / Region"),
- val => sub { lang::c2name($o->{locale}{country}) },
- clicked => sub {
- any::selectCountry($o, $o->{locale}) or return;
-
- my $pkg_locale = lang::locale_to_main_locale(lang::getlocale_for_country($o->{locale}{lang}, $o->{locale}{country}));
- my @pkgs = pkgs::packagesProviding($o->{packages}, "locales-$pkg_locale");
- $o->pkg_install(map { $_->name } @pkgs) if @pkgs;
-
- lang::write($o->{locale});
- if (!$timezone_manually_set) {
- delete $o->{timezone};
- install_any::preConfigureTimezone($o); #- now we can precise the timezone thanks to the country
- }
- },
- };
- push @l, {
- group => N("System"),
- label => N("Timezone"),
- val => sub { $o->{timezone}{timezone} },
- clicked => sub { $timezone_manually_set = $o->configureTimezone(1) || $timezone_manually_set },
- };
-
- push @l, {
- group => N("System"),
- label => N("Mouse"),
- val => sub { translate($o->{mouse}{type}) . ' ' . translate($o->{mouse}{name}) },
- clicked => sub { $o->selectMouse(1); mouse::write($o->do_pkgs, $o->{mouse}) },
- };
-
- push @l, {
- group => N("Hardware"),
- label => N("Printer"),
- val => sub {
- if (is_empty_hash_ref($o->{printer}{configured})) {
- require pkgs;
- my $p = pkgs::packageByName($o->{packages}, 'cups');
- $p && $p->flag_installed ? N("Remote CUPS server") : N("No printer");
- } elsif (defined($o->{printer}{configured}{$o->{printer}{DEFAULT}}) &&
- (my $p = find { $_ && ($_->{make} || $_->{model}) }
- $o->{printer}{configured}{$o->{printer}{DEFAULT}}{queuedata})) {
- "$p->{make} $p->{model}";
- } elsif ($p = find { $_ && ($_->{make} || $_->{model}) }
- map { $_->{queuedata} } (values %{$o->{printer}{configured}})) {
- "$p->{make} $p->{model}";
- } else {
- N("Remote CUPS server"); #- fall back in case of something wrong.
- }
- },
- clicked => sub { $o->configurePrinter(1) },
- };
-
- my @sound_cards = detect_devices::getSoundDevices();
-
- my $sound_index = 0;
- foreach my $device (@sound_cards) {
- $device->{sound_slot_index} = $sound_index;
- push @l, {
- group => N("Hardware"),
- label => N("Sound card"),
- val => sub {
- $device->{driver} && modules::module2description($device->{driver}) || $device->{description};
- },
- clicked => sub {
- require harddrake::sound;
- harddrake::sound::config($o, $o->{modules_conf}, $device);
- },
- };
- $sound_index++;
- }
-
- if (!@sound_cards && ($o->{rpmsrate_flags_chosen}{CAT_GAMES} || $o->{rpmsrate_flags_chosen}{CAT_AUDIO})) {
- #- if no sound card are detected AND the user selected things needing a sound card,
- #- propose a special case for ISA cards
- push @l, {
- group => N("Hardware"),
- label => N("Sound card"),
- val => sub {},
- clicked => sub {
- if ($o->ask_yesorno('', N("Do you have an ISA sound card?"))) {
- $o->do_pkgs->install(qw(alsa-utils sndconfig));
- $o->ask_warn('', N("Run \"alsaconf\" or \"sndconfig\" after installation to configure your sound card"));
- } else {
- $o->ask_warn('', N("No sound card detected. Try \"harddrake\" after installation"));
- }
- },
- };
- }
-
- foreach my $tv (detect_devices::getTVcards()) {
- push @l, {
- group => N("Hardware"),
- label => N("TV card"),
- val => sub { $tv->{description} },
- clicked => sub {
- require harddrake::v4l;
- harddrake::v4l::config($o, $o->{modules_conf}, $tv->{driver});
- }
- };
- }
-
- push @l, {
- group => N("Hardware"),
- label => N("Graphical interface"),
- val => sub { $o->{raw_X} ? Xconfig::various::to_string($o->{raw_X}) : '' },
- clicked => sub { configureX($o, 'expert') },
- };
-
- push @l, {
- group => N("Network & Internet"),
- label => N("Network"),
- val => sub { $o->{netcnx}{type} },
- clicked => sub {
- local $::expert = $::expert;
- require network::netconnect;
- network::netconnect::main($o->{netcnx} ||= {}, $o, $o->{modules_conf}, $o->{netc}, $o->{mouse}, $o->{intf}, 0, 1);
- #- in case netcnx type is not updated.
- require network::network;
- network::network::probe_netcnx_type($o->{prefix}, $o->{netc}, $o->{intf}, $o->{netcnx});
- },
- };
-
- $::o->{miscellaneous} ||= {};
- push @l, {
- group => N("Network & Internet"),
- label => N("Proxies"),
- val => sub { $::o->{miscellaneous}{http_proxy} || $::o->{miscellaneous}{ftp_proxy} ? N("configured") : N("not configured") },
- clicked => sub {
- require network::network;
- network::network::miscellaneous_choose($o, $::o->{miscellaneous});
- network::network::proxy_configure($::o->{miscellaneous}) if !$::testing;
- },
- };
-
- push @l, {
- group => N("Security"),
- label => N("Security Level"),
- val => sub {
- require security::level;
- security::level::to_string($o->{security});
- },
- clicked => sub {
- require security::level;
- security::level::level_choose($o, \$o->{security}, \$o->{libsafe}, \$o->{security_user})
- and install_any::set_security($o);
- },
- };
-
- push @l, {
- group => N("Security"),
- label => N("Firewall"),
- val => sub {
- require network::shorewall;
- my $shorewall = network::shorewall::read();
- $shorewall && !$shorewall->{disabled} ? N("activated") : N("disabled");
- },
- clicked => sub {
- require network::drakfirewall;
- if (my @rc = network::drakfirewall::main($o, $o->{security} <= 3)) {
- $o->{firewall_ports} = !$rc[0] && $rc[1];
- }
- },
- } if detect_devices::getNet();
-
- push @l, {
- group => N("Boot"),
- label => N("Bootloader"),
- val => sub {
- #-PO: example: lilo-graphic on /dev/hda1
- N("%s on %s", $o->{bootloader}{method}, $o->{bootloader}{boot});
- },
- clicked => sub {
- any::setupBootloader($o, $o->{bootloader}, $o->{all_hds}, $o->{fstab}, $o->{security}) or return;
- any::installBootloader($o, $o->{bootloader}, $o->{all_hds});
- },
- };
-
- push @l, {
- group => N("System"),
- label => N("Services"),
- val => sub {
- require services;
- my ($l, $activated) = services::services();
- N("Services: %d activated for %d registered", int(@$activated), int(@$l));
- },
- clicked => sub {
- require services;
- $o->{services} = services::ask($o) and services::doit($o, $o->{services});
- },
- };
-
- my $check_complete = sub {
- $o->{raw_X} || !$::testing && !pkgs::packageByName($o->{packages}, 'xorg-x11')->flag_installed ||
- $o->ask_yesorno('', N("You have not configured X. Are you sure you really want this?"));
- };
-
- $o->summary_prompt(\@l, $check_complete);
-
- if ($o->{printer}) {
- #- Clean up $o->{printer} so that the records for an auto-installation
- #- contain only the important stuff
- require printer::printerdrake;
- printer::printerdrake::final_cleanup($o->{printer});
- }
- install_steps::configureTimezone($o) if !$timezone_manually_set; #- do not forget it.
-}
-
-#------------------------------------------------------------------------------
-sub configurePrinter {
- my ($o, $clicked) = @_;
-
- require printer::main;
- require printer::printerdrake;
- require printer::detect;
-
- #- $clicked = 0: Preparation of "Summary" step, check whether there are
- #- are local printers. Continue for automatically setting up print
- #- queues if so, return otherwise
- #- $clicked = 1: User clicked "Configure" button in "Summary", enter
- #- Printerdrake for manual configuration
- my $go_on = $clicked ? 2 : $o && printer::detect::local_detect();
- $go_on-- or return;
-
- #- install packages needed for printer::getinfo()
- $::testing or $o->do_pkgs->install('foomatic-db-engine');
-
- #- take default configuration, this include choosing the right spooler
- #- currently used by the system.
- my $printer = $o->{printer} ||= {};
- eval { add2hash($printer, printer::main::getinfo($o->{prefix})) };
-
- $printer->{PAPERSIZE} = $o->{locale}{country} eq 'US' || $o->{locale}{country} eq 'CA' ? 'Letter' : 'A4';
- printer::printerdrake::main($printer, $o->{security}, $o, $clicked, sub { install_interactive::upNetwork($o, 'pppAvoided') });
-
-}
-
-#------------------------------------------------------------------------------
-sub setRootPassword {
- my ($o, $clicked) = @_;
- my $sup = $o->{superuser} ||= {};
- $sup->{password2} ||= $sup->{password} ||= "";
-
- if ($o->{security} >= 1 || $clicked) {
- require authentication;
- authentication::ask_root_password_and_authentication($o, $o->{netc}, $sup, $o->{authentication} ||= {}, $o->{meta_class}, $o->{security});
- }
- install_steps::setRootPassword($o);
-}
-
-#------------------------------------------------------------------------------
-#-addUser
-#------------------------------------------------------------------------------
-sub addUser {
- my ($o, $clicked) = @_;
- $o->{users} ||= [];
-
- if ($o->{security} < 1) {
- push @{$o->{users}}, { password => 'mandrake', realname => 'default', icon => 'automagic' }
- if !member('mandrake', map { $_->{name} } @{$o->{users}});
- }
- if ($o->{security} >= 1 || $clicked) {
- my @suggested_names = @{$o->{users}} ? () : grep { !/lost\+found/ } all("$::prefix/home");
- any::ask_users($o, $o->{users}, $o->{security}, \@suggested_names);
- }
- add2hash($o, any::get_autologin());
- any::autologin($o, $o);
-
- install_steps::addUser($o);
-}
-
-#------------------------------------------------------------------------------
-sub setupBootloaderBefore {
- my ($o) = @_;
- my $_w = $o->wait_message('', N("Preparing bootloader..."));
- $o->SUPER::setupBootloaderBefore;
-}
-
-#------------------------------------------------------------------------------
-sub setupBootloader {
- my ($o, $ent_number) = @_;
- if (arch() =~ /ppc/) {
- if (detect_devices::get_mac_generation() !~ /NewWorld/ &&
- detect_devices::get_mac_model() !~ /IBM/) {
- $o->ask_warn('', N("You appear to have an OldWorld or Unknown machine, the yaboot bootloader will not work for you. The install will continue, but you'll need to use BootX or some other means to boot your machine. The kernel argument for the root fs is: root=%s", '/dev/' . fs::get::root_($o->{fstab})->{device}));
- log::l("OldWorld or Unknown Machine - no yaboot setup");
- return;
- }
- }
- if (arch() =~ /^alpha/) {
- $o->ask_yesorno('', N("Do you want to use aboot?"), 1) or return;
- catch_cdie { $o->SUPER::setupBootloader } sub {
- $o->ask_yesorno('',
-N("Error installing aboot,
-try to force installation even if that destroys the first partition?"));
- };
- } else {
- if ($ent_number == 1) {
- any::setupBootloader_simple($o, $o->{bootloader}, $o->{all_hds}, $o->{fstab}, $o->{security}) or return;
- } else {
- any::setupBootloader($o, $o->{bootloader}, $o->{all_hds}, $o->{fstab}, $o->{security}) or return;
- }
- any::installBootloader($o, $o->{bootloader}, $o->{all_hds}) or die "already displayed";
- }
-}
-
-sub miscellaneous {
- my ($o, $_clicked) = @_;
-
- if ($o->{meta_class} ne 'desktop' && $o->{meta_class} ne 'firewall' && !$o->{isUpgrade}) {
- require security::level;
- security::level::level_choose($o, \$o->{security}, \$o->{libsafe}, \$o->{security_user});
-
- if ($o->{security} > 2 && find { $_->{fs_type} eq 'vfat' } @{$o->{fstab}}) {
- $o->ask_okcancel('', N("In this security level, access to the files in the Windows partition is restricted to the administrator."))
- or goto &miscellaneous;
- }
- }
-
- install_steps::miscellaneous($o);
-}
-
-#------------------------------------------------------------------------------
-sub configureX {
- my ($o, $expert) = @_;
-
- install_steps::configureXBefore($o);
- symlink "$o->{prefix}/etc/gtk", "/etc/gtk";
-
- require Xconfig::main;
- my ($raw_X) = Xconfig::main::configure_everything_or_configure_chooser($o, install_any::X_options_from_o($o), !$expert, $o->{keyboard}, $o->{mouse});
- if ($raw_X) {
- $o->{raw_X} = $raw_X;
- install_steps::configureXAfter($o);
- }
-}
-
-#------------------------------------------------------------------------------
-sub generateAutoInstFloppy {
- my ($o, $replay) = @_;
- my @imgs = install_any::getAndSaveAutoInstallFloppies($o, $replay) or return;
-
- my $floppy = detect_devices::floppy();
- $o->ask_okcancel('', N("Insert a blank floppy in drive %s", $floppy), 1) or return;
-
- my $i;
- foreach (@imgs) {
- if ($i++) {
- $o->ask_okcancel('', N("Please insert another floppy for drivers disk"), 1) or return;
- }
- my $_w = $o->wait_message('', N("Creating auto install floppy..."));
- require commands;
- commands::dd("if=$_", 'of=' . devices::make($floppy));
- common::sync();
- }
-}
-
-#------------------------------------------------------------------------------
-sub exitInstall {
- my ($o, $alldone) = @_;
-
- return $o->{step} = '' if !$alldone && !$o->ask_yesorno('',
-N("Some steps are not completed.
-
-Do you really want to quit now?"), 0);
-
- install_steps::exitInstall($o);
-
- $o->exit unless $alldone;
-
- $o->ask_from_no_check(
- {
- messages => formatAlaTeX(install_messages::install_completed()),
- interactive_help_id => 'exitInstall',
- ok => N("Reboot"),
- },
- [
- if_(arch() !~ /^ppc/,
- { val => \ (my $_t1 = N("Generate auto install floppy")), clicked => sub {
- my $t = $o->ask_from_list_('',
-N("The auto install can be fully automated if wanted,
-in that case it will take over the hard drive!!
-(this is meant for installing on another box).
-
-You may prefer to replay the installation.
-"), [ N_("Replay"), N_("Automated") ]);
- $t and $o->generateAutoInstFloppy($t eq 'Replay');
- }, advanced => 1 }),
- { val => \ (my $_t2 = N("Save packages selection")), clicked => sub { install_any::g_default_packages($o) }, advanced => 1 },
- ]
- ) if $alldone;
-}
-
-
-#-######################################################################################
-#- Misc Steps Functions
-#-######################################################################################
-
-1;
diff --git a/perl-install/install_steps_newt.pm b/perl-install/install_steps_newt.pm
deleted file mode 100644
index 203a1933c..000000000
--- a/perl-install/install_steps_newt.pm
+++ /dev/null
@@ -1,56 +0,0 @@
-package install_steps_newt; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(install_steps_interactive interactive::newt);
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use install_steps_interactive;
-use interactive::newt;
-use install_any;
-use devices;
-use lang;
-use common;
-
-sub banner {
- my $banner = translate(N_("Mandriva Linux Installation %s"));
- my $l = first(Newt::GetScreenSize()) - length($banner) - length($_[0]) + 1;
- Newt::DrawRootText(0, 0, sprintf($banner, ' ' x $l . $_[0]));
- Newt::Refresh();
-}
-
-sub new {
- my ($type, $o) = @_;
-
- interactive::newt->new;
-
- banner('');
- Newt::PushHelpLine(
- #-PO: This string must fit in a 80-char wide text screen
- N(" <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen "));
-
- (bless {}, ref($type) || $type)->SUPER::new($o);
-}
-
-sub charsetChanged {
- my ($o) = @_;
- lang::load_console_font($o->{locale});
-}
-
-sub enteringStep {
- my ($o, $step) = @_;
- $o->SUPER::enteringStep($step);
- banner(translate($o->{steps}{$step}{text}));
-}
-
-sub exitInstall {
- &install_steps_interactive::exitInstall;
- interactive::newt::end();
-}
-
-1;
-
diff --git a/perl-install/install_steps_stdio.pm b/perl-install/install_steps_stdio.pm
deleted file mode 100644
index ac9408b3c..000000000
--- a/perl-install/install_steps_stdio.pm
+++ /dev/null
@@ -1,36 +0,0 @@
-package install_steps_stdio; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(install_steps_interactive interactive::stdio);
-
-use common;
-use interactive::stdio;
-use install_steps_interactive;
-use lang;
-
-sub new($$) {
- my ($type, $o) = @_;
-
- (bless {}, ref($type) || $type)->SUPER::new($o);
-}
-
-sub charsetChanged {
- my ($o) = @_;
- lang::load_console_font($o->{locale});
-}
-
-sub enteringStep {
- my ($o, $step) = @_;
- print N("Entering step `%s'\n", translate($o->{steps}{$step}{text}));
- $o->SUPER::enteringStep($step);
-}
-sub leavingStep {
- my ($o, $step) = @_;
- $o->SUPER::leavingStep($step);
- print "--------\n";
-}
-
-1;
diff --git a/perl-install/interactive.pm b/perl-install/interactive.pm
deleted file mode 100644
index f4b95ae9d..000000000
--- a/perl-install/interactive.pm
+++ /dev/null
@@ -1,531 +0,0 @@
-package interactive; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use MDK::Common::Func;
-use common;
-use do_pkgs;
-
-#- minimal example using interactive:
-#
-#- > use lib qw(/usr/lib/libDrakX);
-#- > use interactive;
-#- > my $in = interactive->vnew;
-#- > $in->ask_okcancel('title', 'question');
-#- > $in->exit;
-
-#- ask_from_ takes global options ($common):
-#- title => window title
-#- messages => message displayed in the upper part of the window
-#- advanced_messages => message displayed when "Advanced" is pressed
-#- ok => force the name of the "Ok"/"Next" button
-#- cancel => force the name of the "Cancel"/"Previous" button
-#- advanced_label => force the name of the "Advanced" button
-#- advanced_label_close => force the name of the "Basic" button
-#- advanced_state => if set to 1, force the "Advanced" part of the dialog to be opened initially
-#- focus_cancel => force focus on the "Cancel" button
-#- focus_first => force focus on the first entry
-#- callbacks => functions called when something happen: complete canceled advanced changed focus_out ok_disabled
-
-#- ask_from_ takes a list of entries with fields:
-#- val => reference to the value
-#- label => description
-#- icon => icon to put before the description
-#- help => tooltip
-#- advanced => wether it is shown in by default or only in advanced mode
-#- disabled => function returning wether it should be disabled (grayed)
-#- gtk => gtk preferences
-#- type =>
-#- button => (with clicked or clicked_may_quit)
-#- (type defaults to button if clicked or clicked_may_quit is there)
-#- (val need not be a reference) (if clicked_may_quit return true, it's as if "Ok" was pressed)
-#- label => (val need not be a reference) (type defaults to label if val is not a reference)
-#- bool (with "text" or "image" (which overrides text) giving an image filename)
-#- range (with min, max)
-#- combo (with list, not_edit, format)
-#- list (with list, icon2f (aka icon), separator (aka tree), format (aka pre_format function),
-#- help can be a hash or a function,
-#- tree_expanded boolean telling wether the tree should be wide open by default
-#- quit_if_double_click boolean
-#- allow_empty_list disables the special cases for 0 and 1 element lists
-#- image2f is a subroutine which takes a value of the list as parameter, and returns an array (text, image_file_name))
-#- entry (the default) (with hidden)
-#
-#- heritate from this class and you'll get all made interactivity for same steps.
-#- for this you need to provide
-#- - ask_from_listW(o, title, messages, arrayref, default) returns one string of arrayref
-#-
-#- where
-#- - o is the object
-#- - title is a string
-#- - messages is an refarray of strings
-#- - default is an optional string (default is in arrayref)
-#- - arrayref is an arrayref of strings
-#- - arrayref2 contains booleans telling the default state,
-#-
-#- ask_from_list and ask_from_list_ are wrappers around ask_from_biglist and ask_from_smalllist
-#-
-#- ask_from_list_ just translate arrayref before calling ask_from_list and untranslate the result
-#-
-#- ask_from_listW should handle differently small lists and big ones.
-#-
-
-
-#-######################################################################################
-#- OO Stuff
-#-######################################################################################
-our @ISA = qw(do_pkgs);
-
-sub new($) {
- my ($type) = @_;
-
- bless {}, ref($type) || $type;
-}
-
-sub vnew {
- my ($_type, $o_su, $o_icon) = @_;
- my $su = $o_su eq "su";
- if ($ENV{INTERACTIVE_HTTP}) {
- require interactive::http;
- return interactive::http->new;
- }
- require c;
- if ($su) {
- $ENV{PATH} = "/sbin:/usr/sbin:$ENV{PATH}";
- $su = '' if $::testing || $ENV{TESTING};
- }
- require_root_capability() if $su;
- if (check_for_xserver()) {
- eval { require interactive::gtk };
- if (!$@) {
- my $o = interactive::gtk->new;
- if ($o_icon && $o_icon ne 'default' && !$::isWizard) { $o->{icon} = $o_icon } else { undef $o->{icon} }
- return $o;
- } elsif ($::testing) {
- die;
- }
- }
-
- require 'log.pm'; #- "require log" causes some pb, perl thinking that "log" is the log() function
- undef *log::l;
- *log::l = sub {}; # otherwise, it will bother us :(
- require interactive::newt;
- interactive::newt->new;
-}
-
-sub enter_console {}
-sub leave_console {}
-sub suspend {}
-sub resume {}
-sub end {}
-sub exit {
- if ($::isStandalone) {
- require standalone;
- standalone::exit($_[0]);
- } else {
- exit($_[0]);
- }
-}
-
-#-######################################################################################
-#- Interactive functions
-#-######################################################################################
-sub ask_warn {
- my ($o, $title, $message) = @_;
- ask_warn_($o, { title => $title, messages => $message });
-}
-sub ask_yesorno {
- my ($o, $title, $message, $b_def) = @_;
- ask_yesorno_($o, { title => $title, messages => $message }, $b_def);
-}
-sub ask_okcancel {
- my ($o, $title, $message, $b_def) = @_;
- ask_okcancel_($o, { title => $title, messages => $message }, $b_def);
-}
-
-sub ask_warn_ {
- my ($o, $common) = @_;
- ask_from_listf_raw_no_check($o, $common, undef, [ $o->ok ]);
-}
-
-sub ask_yesorno_ {
- my ($o, $common, $b_def) = @_;
- $common->{cancel} = '';
- ask_from_listf_raw($o, $common, sub { translate($_[0]) }, [ N_("Yes"), N_("No") ], $b_def ? "Yes" : "No") eq "Yes";
-}
-
-sub ask_okcancel_ {
- my ($o, $common, $b_def) = @_;
-
- if ($::isWizard) {
- $::no_separator = 1;
- $common->{focus_cancel} = !$b_def;
- ask_from_no_check($o, $common, []);
- } else {
- ask_from_listf_raw($o, $common, sub { translate($_[0]) }, [ $o->ok, $o->cancel ], $b_def ? $o->ok : "Cancel") eq $o->ok;
- }
-}
-
-sub ask_filename {
- my ($o, $common) = @_;
- $common->{want_a_dir} = 0;
- $o->ask_fileW($common);
-}
-
-sub ask_directory {
- my ($o, $common) = @_;
- $common->{want_a_dir} = 1;
- $o->ask_fileW($common);
-}
-
-#- predecated
-sub ask_file {
- my ($o, $title, $o_dir) = @_;
- $o->ask_fileW({ title => $title, want_a_dir => 0, directory => $o_dir });
-}
-
-sub ask_fileW {
- my ($o, $common) = @_;
- $o->ask_from_entry($common->{title}, $common->{message} || N("Choose a file"));
-}
-
-sub ask_from_list {
- my ($o, $title, $message, $l, $o_def) = @_;
- ask_from_listf($o, $title, $message, undef, $l, $o_def);
-}
-
-sub ask_from_list_ {
- my ($o, $title, $message, $l, $o_def) = @_;
- ask_from_listf($o, $title, $message, sub { translate($_[0]) }, $l, $o_def);
-}
-
-sub ask_from_listf_ {
- my ($o, $title, $message, $f, $l, $o_def) = @_;
- ask_from_listf($o, $title, $message, sub { translate($f->(@_)) }, $l, $o_def);
-}
-sub ask_from_listf {
- my ($o, $title, $message, $f, $l, $o_def) = @_;
- ask_from_listf_raw($o, { title => $title, messages => $message }, $f, $l, $o_def);
-}
-sub ask_from_listf_raw {
- my ($_o, $_common, $_f, $l, $_o_def) = @_;
- @$l == 0 and die "ask_from_list: empty list\n" . backtrace();
- @$l == 1 and return $l->[0];
- goto &ask_from_listf_raw_no_check;
-}
-
-sub ask_from_listf_raw_no_check {
- my ($o, $common, $f, $l, $o_def) = @_;
-
- if (@$l <= ($::isWizard ? 1 : 2)) {
- my ($ok, $cancel) = map { $_ && may_apply($f, $_) } @$l;
- if (length "$ok$cancel" < 70) {
- my $ret = eval {
- put_in_hash($common, { ok => $ok,
- if_($cancel, cancel => $cancel, focus_cancel => $o_def eq $l->[1]) });
- ask_from_no_check($o, $common, []) ? $l->[0] : $l->[1];
- };
- die if $@ && $@ !~ /^wizcancel/;
- return $@ ? undef : $ret;
- }
- }
- ask_from_no_check($o, $common, [ { val => \$o_def, type => 'list', list => $l, format => $f } ]) && $o_def;
-}
-
-sub ask_from_treelist {
- my ($o, $title, $message, $separator, $l, $o_def) = @_;
- ask_from_treelistf($o, $title, $message, $separator, undef, $l, $o_def);
-}
-sub ask_from_treelist_ {
- my ($o, $title, $message, $separator, $l, $o_def) = @_;
- my $transl = sub { join '|', map { translate($_) } split(quotemeta($separator), $_[0]) };
- ask_from_treelistf($o, $title, $message, $separator, $transl, $l, $o_def);
-}
-sub ask_from_treelistf {
- my ($o, $title, $message, $separator, $f, $l, $o_def) = @_;
- ask_from($o, $title, $message, [ { val => \$o_def, separator => $separator, list => $l, format => $f, sort => 1 } ]) or return;
- $o_def;
-}
-
-sub ask_many_from_list {
- my ($o, $title, $message, @l) = @_;
- @l = grep { @{$_->{list}} } @l or return '';
- foreach my $h (@l) {
- $h->{e}{$_} = {
- text => may_apply($h->{label}, $_),
- val => $h->{val} ? $h->{val}->($_) : do {
- my $i =
- $h->{value} ? $h->{value}->($_) :
- $h->{values} ? member($_, @{$h->{values}}) : 0;
- \$i;
- },
- type => 'bool',
- help => may_apply($h->{help}, $_, ''),
- icon => may_apply($h->{icon2f}, $_, ''),
- } foreach @{$h->{list}};
- if ($h->{sort}) {
- $h->{list} = [ sort { $h->{e}{$a}{text} cmp $h->{e}{$b}{text} } @{$h->{list}} ];
- }
- }
- $o->ask_from($title, $message, [ map { my $h = $_; map { $h->{e}{$_} } @{$h->{list}} } @l ]) or return;
-
- @l = map {
- my $h = $_;
- [ grep { ${$h->{e}{$_}{val}} } @{$h->{list}} ];
- } @l;
- wantarray() ? @l : $l[0];
-}
-
-sub ask_from_entry {
- my ($o, $title, $message, %callback) = @_;
- first(ask_from_entries($o, $title, $message, [''], %callback));
-}
-sub ask_from_entries {
- my ($o, $title, $message, $l, %callback) = @_;
-
- my @l = map { my $i = ''; { label => $_, val => \$i } } @$l;
-
- $o->ask_from_({ title => $title, messages => $message, callbacks => \%callback,
- focus_first => 1 }, \@l) or return;
- map { ${$_->{val}} } @l;
-}
-
-sub ask_from__add_modify_remove {
- my ($o, $title, $message, $l, %callback) = @_;
- die "ask_from__add_modify_remove only handles one item" if @$l != 1;
-
- $callback{$_} or internal_error("missing callback $_") foreach qw(Add Modify Remove);
-
- if ($o->can('ask_from__add_modify_removeW')) {
- $o->ask_from__add_modify_removeW($title, $message, $l, %callback);
- } else {
- my $e = $l->[0];
- my $chosen_element;
- put_in_hash($e, { allow_empty_list => 1, val => \$chosen_element, type => 'list' });
-
- while (1) {
- my $continue;
- my @l = (@$l,
- map { my $s = $_; { val => translate($_), clicked_may_quit => sub {
- my $r = $callback{$s}->($chosen_element);
- defined $r or return;
- $continue = 1;
- } } }
- N_("Add"), if_(@{$e->{list}} > 0, N_("Modify"), N_("Remove")));
- $o->ask_from_({ title => $title, messages => $message, callbacks => \%callback }, \@l) or return;
- return 1 if !$continue;
- }
- }
-}
-
-
-#- can get a hash of callback: focus_out changed and complete
-#- moreove if you pass a hash with a field list -> combo
-#- if you pass a hash with a field hidden -> emulate stty -echo
-sub ask_from {
- my ($o, $title, $message, $l, %callback) = @_;
- ask_from_($o, { title => $title, messages => $message, callbacks => \%callback }, $l);
-}
-
-
-sub ask_from_normalize {
- my ($o, $common, $l) = @_;
-
- ref($l) eq 'ARRAY' or internal_error('ask_from_normalize');
- foreach my $e (@$l) {
- if (my $li = $e->{list}) {
- ref($e->{val}) =~ /SCALAR|REF/ or internal_error($e->{val} ? "field {val} must be a reference (it is $e->{val})" : "field {val} is mandatory"); #-#
- if ($e->{sort} || @$li > 10 && !exists $e->{sort}) {
- my @l2 = map { may_apply($e->{format}, $_) } @$li;
- my @places = sort { $l2[$a] cmp $l2[$b] } 0 .. $#l2;
- $e->{list} = $li = [ map { $li->[$_] } @places ];
- }
- $e->{type} = 'iconlist' if $e->{icon2f};
- $e->{type} = 'treelist' if $e->{separator};
- add2hash_($e, { not_edit => 1 });
- $e->{type} ||= 'combo';
-
- if (!$e->{not_edit}) {
- die q(when using "not_edit" you must use strings, not a data structure) if ref(${$e->{val}}) || any { ref $_ } @$li;
- }
- if ($e->{type} ne 'combo' || $e->{not_edit}) {
- ${$e->{val}} = $li->[0] if !member(may_apply($e->{format}, ${$e->{val}}), map { may_apply($e->{format}, $_) } @$li);
- }
- } elsif ($e->{type} eq 'range') {
- $e->{min} <= $e->{max} or die "bad range min $e->{min} > max $e->{max} (called from " . join(':', caller()) . ")";
- ${$e->{val}} = max($e->{min}, min(${$e->{val}}, $e->{max}));
- } elsif ($e->{type} eq 'button' || $e->{clicked} || $e->{clicked_may_quit}) {
- $e->{type} = 'button';
- $e->{clicked_may_quit} ||= $e->{clicked} ? sub { $e->{clicked}(); 0 } : sub {};
- $e->{val} = \ (my $_v = $e->{val}) if !ref($e->{val});
- } elsif ($e->{type} eq 'label' || !ref($e->{val})) {
- $e->{type} = 'label';
- $e->{val} = \ (my $_v = $e->{val}) if !ref($e->{val});
- } else {
- $e->{type} ||= 'entry';
- }
- $e->{disabled} ||= sub { 0 };
- }
-
- #- do not display empty lists and one element lists
- @$l = grep {
- if ($_->{list} && $_->{not_edit} && !$_->{allow_empty_list}) {
- if (!@{$_->{list}}) {
- eval {
- require 'log.pm'; #- "require log" causes some pb, perl thinking that "log" is the log() function
- log::l("ask_from_normalize: empty list for $_->{label}\n" . backtrace());
- };
- }
- @{$_->{list}} > 1;
- } else {
- 1;
- }
- } @$l;
-
- if (!$common->{title} && $::isStandalone) {
- ($common->{title} = $0) =~ s|.*/||;
- }
- $common->{interactive_help} ||= $o->{interactive_help};
- $common->{interactive_help} ||= $common->{interactive_help_id} && $o->interactive_help_sub_get_id($common->{interactive_help_id});
- $common->{advanced_label} ||= N("Advanced");
- $common->{advanced_label_close} ||= N("Basic");
- $common->{$_} = $common->{$_} ? [ deref($common->{$_}) ] : [] foreach qw(messages advanced_messages);
- add2hash_($common->{callbacks} ||= {}, { changed => sub {}, focus_out => sub {}, complete => sub { 0 }, canceled => sub { 0 }, advanced => sub {} });
-}
-
-sub ask_from_ {
- my ($o, $common, $l) = @_;
- ask_from_normalize($o, $common, $l);
- @$l or return 1;
- $common->{cancel} = '' if !defined wantarray();
- ask_from_real($o, $common, $l);
-}
-sub ask_from_no_check {
- my ($o, $common, $l) = @_;
- ask_from_normalize($o, $common, $l);
- $common->{cancel} = '' if !defined wantarray();
- my ($l1, $l2) = partition { !$_->{advanced} } @$l;
- $o->ask_fromW($common, $l1, $l2);
-}
-sub ask_from_real {
- my ($o, $common, $l) = @_;
- my ($l1, $l2) = partition { !$_->{advanced} } @$l;
- my $v = $o->ask_fromW($common, $l1, $l2);
-
- foreach my $e (@$l1, @$l2) {
- if ($e->{type} eq 'range') {
- ${$e->{val}} = max($e->{min}, min(${$e->{val}}, $e->{max}));
- }
- }
-
- %$common = ();
- $v;
-}
-
-
-sub ask_browse_tree_info {
- my ($o, $title, $message, $common) = @_;
- $common->{interactive_help} ||= $common->{interactive_help_id} && $o->interactive_help_sub_get_id($common->{interactive_help_id});
- add2hash_($common, { ok => $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next")) : N("Ok"),
- cancel => $::isWizard ? N("Previous") : N("Cancel") });
- add2hash_($common, { title => $title, message => $message });
- add2hash_($common, { grep_allowed_to_toggle => sub { @_ },
- grep_unselected => sub { grep { $common->{node_state}($_) eq 'unselected' } @_ },
- check_interactive_to_toggle => sub { 1 },
- toggle_nodes => sub {
- my ($set_state, @nodes) = @_;
- my $new_state = !$common->{grep_unselected}($nodes[0]) ? 'selected' : 'unselected';
- $set_state->($_, $new_state) foreach @nodes;
- },
- });
- $o->ask_browse_tree_info_refW($common);
-}
-sub ask_browse_tree_info_refW { #- default definition, do not use with too many items (memory consuming)
- my ($o, $common) = @_;
- my ($l, $v, $h) = ([], [], {});
- $common->{build_tree}(sub {
- my ($node) = $common->{grep_allowed_to_toggle}(@_);
- if (my $state = $node && $common->{node_state}($node)) {
- push @$l, $node;
- $state eq 'selected' and push @$v, $node;
- $h->{$node} = $state eq 'selected';
- }
- }, 'flat');
- add2hash_($common, { list => $l, #- TODO interactivity of toggle is missing
- values => $v,
- help => sub { $common->{get_info}($_[0]) },
- });
- my ($new_v) = $o->ask_many_from_list($common->{title}, $common->{message}, $common) or return;
- $common->{toggle_nodes}(sub {}, grep { ! delete $h->{$_} } @$new_v);
- $common->{toggle_nodes}(sub {}, grep { $h->{$_} } keys %$h);
- 1;
-}
-
-sub wait_message {
- my ($o, $title, $message, $b_temp) = @_;
-
- my $w = $o->wait_messageW($title, [ N("Please wait"), deref($message) ]);
- push @tempory::objects, $w if $b_temp;
- my $b = before_leaving { $o->wait_message_endW($w) };
-
- #- enable access through set
- MDK::Common::Func::add_f4before_leaving(sub { $o->wait_message_nextW([ deref($_[1]) ], $w) }, $b, 'set');
- $b;
-}
-
-sub kill() {}
-
-
-
-sub helper_separator_tree_to_tree {
- my ($separator, $list, $formatted_list) = @_;
- my $sep = quotemeta $separator;
- my $tree = {};
-
- each_index {
- my @l = split $sep;
- my $leaf = pop @l;
- my $node = $tree;
- foreach (@l) {
- $node = $node->{$_} ||= do {
- my $r = {};
- push @{$node->{_order_}}, $_;
- $r;
- };
- }
- push @{$node->{_leaves_}}, [ $leaf, $list->[$::i] ];
- ();
- } @$formatted_list;
-
- $tree;
-}
-
-
-sub interactive_help_has_id {
- my ($_o, $id) = @_;
- exists $help::{$id};
-}
-
-sub interactive_help_get_id {
- my ($_o, @l) = @_;
- @l = map {
- join("\n\n", map { s/\n/ /mg; $_ } split("\n\n", translate($help::{$_}->())));
- } grep { exists $help::{$_} } @l;
- join("\n\n\n", @l);
-}
-
-sub interactive_help_sub_get_id {
- my ($o, $id) = @_;
- $o->interactive_help_has_id($id) && sub { $o->interactive_help_get_id($id) };
-}
-
-sub interactive_help_sub_display_id {
- my ($o, $id) = @_;
- $o->interactive_help_has_id($id) && sub { $o->ask_warn(N("Help"), $o->interactive_help_get_id($id)) };
-}
-
-1;
diff --git a/perl-install/interactive/gtk.pm b/perl-install/interactive/gtk.pm
deleted file mode 100644
index b62696eb9..000000000
--- a/perl-install/interactive/gtk.pm
+++ /dev/null
@@ -1,774 +0,0 @@
-package interactive::gtk; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(interactive);
-
-use interactive;
-use common;
-use mygtk2;
-use ugtk2 qw(:helpers :wrappers :create);
-use Gtk2::Gdk::Keysyms;
-
-my $forgetTime = 1000; #- in milli-seconds
-
-sub new {
- ($::windowwidth, $::windowheight) = gtkroot()->get_size if !$::isInstall;
- goto &interactive::new;
-}
-sub enter_console { my ($o) = @_; $o->{suspended} = common::setVirtual(1) }
-sub leave_console { my ($o) = @_; common::setVirtual(delete $o->{suspended}) }
-
-sub exit { ugtk2::exit(@_) }
-
-sub ask_fileW {
- my ($in, $common) = @_;
-
- my $w = ugtk2::create_file_selector(%$common);
-
- my $file;
- $w->main(sub {
- $file = $w->{chooser}->get_filename;
- my $err = ugtk2::file_selected_check($common->{save}, $common->{want_a_dir}, $file);
- $err and $in->ask_warn('', $err);
- !$err;
- }) && $file;
-}
-
-sub create_boxradio {
- my ($e, $may_go_to_next, $changed, $double_click) = @_;
-
- my $boxradio = gtkshow(gtkpack2__(Gtk2::VBox->new(0, 0),
- my @radios = gtkradio('', @{$e->{formatted_list}})));
- my $tips = Gtk2::Tooltips->new;
- mapn {
- my ($txt, $w) = @_;
- $w->signal_connect(button_press_event => $double_click) if $double_click;
-
- $w->signal_connect(key_press_event => sub {
- &$may_go_to_next;
- });
- $w->signal_connect(clicked => sub {
- ${$e->{val}} = $txt;
- &$changed;
- });
- if ($e->{help}) {
- gtkset_tip($tips, $w,
- ref($e->{help}) eq 'HASH' ? $e->{help}{$txt} :
- ref($e->{help}) eq 'CODE' ? $e->{help}($txt) : $e->{help});
- }
- } $e->{list}, \@radios;
-
- $boxradio, sub {
- my ($v, $full_struct) = @_;
- mapn {
- $_[0]->set_active($_[1] eq $v);
- $full_struct->{focus_w} = $_[0] if $_[1] eq $v;
- } \@radios, $e->{list};
- }, $radios[0];
-}
-
-sub create_treeview_list {
- my ($e, $may_go_to_next, $changed, $double_click) = @_;
- my $curr;
-
- my $list = Gtk2::ListStore->new("Glib::String");
- my $list_tv = Gtk2::TreeView->new_with_model($list);
- $list_tv->set_headers_visible(0);
- $list_tv->get_selection->set_mode('browse');
- my $textcolumn = Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 0);
- $list_tv->append_column($textcolumn);
-
- my $select = sub {
- $list_tv->set_cursor($_[0], undef, 0);
- $list_tv->scroll_to_cell($_[0], undef, 1, 0.5, 0);
- };
-
- my ($starting_word, $start_reg) = ('', '^');
- my $timeout;
- $list_tv->set_enable_search(0);
- $list_tv->signal_connect(key_press_event => sub {
- my ($_w, $event) = @_;
- my $c = chr($event->keyval & 0xff);
-
- Glib::Source->remove($timeout) if $timeout; $timeout = '';
-
- if ($event->keyval >= 0x100) {
- &$may_go_to_next if member($event->keyval, ($Gtk2::Gdk::Keysyms{Return}, $Gtk2::Gdk::Keysyms{KP_Enter}));
- $starting_word = '' if !member($event->keyval, ($Gtk2::Gdk::Keysyms{Control_L}, $Gtk2::Gdk::Keysyms{Control_R}));
- } else {
- if (member('control-mask', @{$event->state})) {
- $c eq 's' or return 1;
- $start_reg and $start_reg = '', return 1;
- $curr++;
- } else {
- &$may_go_to_next if $c eq ' ';
-
- $curr++ if $starting_word eq '' || $starting_word eq $c;
- $starting_word .= $c unless $starting_word eq $c;
- }
- my @l = @{$e->{formatted_list}};
- my $word = quotemeta $starting_word;
- my $j; for ($j = 0; $j < @l; $j++) {
- $l[($j + $curr) % @l] =~ /$start_reg$word/i and last;
- }
- if ($j == @l) {
- $starting_word = '';
- } else {
- $select->(Gtk2::TreePath->new_from_string(($j + $curr) % @l));
- }
-
- $timeout = Glib::Timeout->add($forgetTime, sub { $timeout = $starting_word = ''; 0 });
- }
- 0;
- });
- $list_tv->show;
-
- $list->append_set([ 0 => $_ ]) foreach @{$e->{formatted_list}};
-
- $list_tv->get_selection->signal_connect(changed => sub {
- my ($model, $iter) = $_[0]->get_selected;
- $model && $iter or return;
- my $row = $model->get_path_str($iter);
- ${$e->{val}} = $e->{list}[$curr = $row];
- &$changed;
- });
- $list_tv->signal_connect(button_press_event => $double_click) if $double_click;
-
- $list_tv, sub {
- my ($v) = @_;
- eval {
- my $nb = find_index { $_ eq $v } @{$e->{list}};
- my ($old_path) = $list_tv->get_cursor;
- if (!$old_path || $nb != $old_path->to_string) {
- $select->(Gtk2::TreePath->new_from_string($nb));
- }
- undef $old_path if $old_path;
- };
- };
-}
-
-sub create_treeview_tree {
- my ($e, $may_go_to_next, $changed, $double_click, $tree_expanded) = @_;
-
- $tree_expanded = to_bool($tree_expanded); #- to reduce "Use of uninitialized value", especially when debugging
-
- my $sep = quotemeta $e->{separator};
- my $tree_model = Gtk2::TreeStore->new("Glib::String", "Gtk2::Gdk::Pixbuf", "Glib::String");
- my $tree = Gtk2::TreeView->new_with_model($tree_model);
- $tree->get_selection->set_mode('browse');
- $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 0));
- $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererPixbuf->new, 'pixbuf' => 1));
- $tree->append_column(Gtk2::TreeViewColumn->new_with_attributes(undef, Gtk2::CellRendererText->new, 'text' => 2));
- $tree->set_headers_visible(0);
-
- my ($build_value, $clean_image);
- if (exists $e->{image2f}) {
- my $to_unref;
- $build_value = sub {
- my ($text, $image) = $e->{image2f}->($_[0]);
- [ $text ? (0 => $text) : @{[]},
- $image ? (1 => $to_unref = gtkcreate_pixbuf($image)) : @{[]} ];
- };
- $clean_image = sub { undef $to_unref };
- } else {
- $build_value = sub { [ 0 => $_[0] ] };
- $clean_image = sub {};
- }
-
- my (%wtree, %wleaves, $size, $selected_via_click);
- my $parent; $parent = sub {
- if (my $w = $wtree{"$_[0]$e->{separator}"}) { return $w }
- my $s = '';
- foreach (split $sep, $_[0]) {
- $wtree{"$s$_$e->{separator}"} ||=
- $tree_model->append_set($s ? $parent->($s) : undef, $build_value->($_));
- $clean_image->();
- $size++ if !$s;
- $s .= "$_$e->{separator}";
- }
- $wtree{$s};
- };
-
- #- do some precomputing to not slowdown selection change and key press
- my (%precomp, @ordered_keys);
- mapn {
- my ($root, $leaf) = $_[0] =~ /(.*)$sep(.+)/ ? ($1, $2) : ('', $_[0]);
- my $iter = $tree_model->append_set($parent->($root), $build_value->($leaf));
- $clean_image->();
- my $pathstr = $tree_model->get_path_str($iter);
- $precomp{$pathstr} = { value => $leaf, fullvalue => $_[0], listvalue => $_[1] };
- push @ordered_keys, $pathstr;
- $wleaves{$_[0]} = $pathstr;
- } $e->{formatted_list}, $e->{list};
- undef $_ foreach values %wtree;
- undef %wtree;
-
- my $select = sub {
- my ($path_str) = @_;
- $tree->expand_to_path(Gtk2::TreePath->new_from_string($path_str));
- my $path = Gtk2::TreePath->new_from_string($path_str);
- $tree->set_cursor($path, undef, 0);
- gtkflush(); #- workaround gtk2 bug not honouring centering on the given row if node was closed
- $tree->scroll_to_cell($path, undef, 1, 0.5, 0);
- };
-
- my $curr = $tree_model->get_iter_first; #- default value
- $tree->expand_all if $tree_expanded;
-
- $tree->get_selection->signal_connect(changed => sub {
- my ($model, $iter) = $_[0]->get_selected;
- $model && $iter or return;
- undef $curr if ref $curr;
- my $path = $tree_model->get_path($curr = $iter);
- if (!$tree_model->iter_has_child($iter)) {
- ${$e->{val}} = $precomp{$path->to_string}{listvalue};
- &$changed;
- } else {
- $tree->expand_row($path, 0) if $selected_via_click;
- }
- });
- my ($starting_word, $start_reg) = ('', "^");
- my $timeout;
-
- my $toggle = sub {
- if ($tree_model->iter_has_child($curr)) {
- $tree->toggle_expansion($tree_model->get_path($curr), 0);
-
- } else {
- &$may_go_to_next;
- }
- };
-
- $tree->set_enable_search(0);
- $tree->signal_connect(key_press_event => sub {
- my ($_w, $event) = @_;
- $selected_via_click = 0;
- my $c = chr($event->keyval & 0xff);
- $curr or return 0;
- Glib::Source->remove($timeout) if $timeout; $timeout = '';
-
- if ($event->keyval >= 0x100) {
- &$toggle if member($event->keyval, ($Gtk2::Gdk::Keysyms{Return}, $Gtk2::Gdk::Keysyms{KP_Enter}));
- $starting_word = '' if !member($event->keyval, ($Gtk2::Gdk::Keysyms{Control_L}, $Gtk2::Gdk::Keysyms{Control_R}));
- } else {
- my $next;
- if (member('control-mask', @{$event->state})) {
- $c eq "s" or return 1;
- $start_reg and $start_reg = '', return 0;
- $next = 1;
- } else {
- &$toggle if $c eq ' ';
- $next = 1 if $starting_word eq '' || $starting_word eq $c;
- $starting_word .= $c unless $starting_word eq $c;
- }
- my $word = quotemeta $starting_word;
- my ($after, $best);
-
- my $currpath = $tree_model->get_path_str($curr);
- foreach my $v (@ordered_keys) {
- $next &&= !$after;
- $after ||= $v eq $currpath;
- if ($precomp{$v}{value} =~ /$start_reg$word/i) {
- if ($after && !$next) {
- ($best, $after) = ($v, 0);
- } else {
- $best ||= $v;
- }
- }
- }
-
- if (defined $best) {
- $select->($best);
- } else {
- $starting_word = '';
- }
-
- $timeout = Glib::Timeout->add($forgetTime, sub { $timeout = $starting_word = ''; 0 });
- }
- 0;
- });
- $tree->signal_connect(button_press_event => sub {
- $selected_via_click = 1;
- &$double_click if $curr && !$tree_model->iter_has_child($curr) && $double_click;
- });
-
- $tree, sub {
- my $v = may_apply($e->{format}, $_[0]);
- my ($model, $iter) = $tree->get_selection->get_selected;
- $select->($wleaves{$v} || return) if !$model || $wleaves{$v} ne $model->get_path_str($iter);
- undef $iter if ref $iter;
- };
-}
-
-sub create_list {
- my ($e, $may_go_to_next, $changed, $double_click) = @_;
- my $l = $e->{list};
- my $list = Gtk2::List->new;
- $list->set_selection_mode('browse');
-
- my $select = sub {
- $list->select_item($_[0]);
- };
-
- my $tips = Gtk2::Tooltips->new;
- each_index {
- my $item = Gtk2::ListItem->new(may_apply($e->{format}, $_));
- $item->signal_connect(key_press_event => sub {
- my ($_w, $event) = @_;
- my $c = chr($event->keyval & 0xff);
- &$may_go_to_next if $event->keyval < 0x100 ? $c eq ' ' : $c eq "\r" || $c eq "\x8d";
- 0;
- });
- $list->append_items(gtkshow($item));
- if ($e->{help}) {
- gtkset_tip($tips, $item,
- ref($e->{help}) eq 'HASH' ? $e->{help}{$_} :
- ref($e->{help}) eq 'CODE' ? $e->{help}($_) : $e->{help});
- }
- $item->grab_focus if ${$e->{val}} && $_ eq ${$e->{val}};
- } @$l;
-
- #- signal_connect'ed after append_items otherwise it is called and destroys the default value
- $list->signal_connect(select_child => sub {
- my ($_w, $row) = @_;
- ${$e->{val}} = $l->[$list->child_position($row)];
- &$changed;
- });
- $list->signal_connect(button_press_event => $double_click) if $double_click;
-
- $list, sub {
- my ($v) = @_;
- eval {
- $select->(find_index { $_ eq $v } @$l);
- };
- };
-}
-
-#- $actions is a ref list of $action
-#- $action is a { kind => $kind, action => sub { ... }, button => Gtk2::Button->new(...) }
-#- where $kind is one of '', 'modify', 'remove', 'add'
-sub add_modify_remove_action {
- my ($button, $buttons, $e, $treelist) = @_;
-
- if (member($button->{kind}, 'modify', 'remove')) {
- @{$e->{list}} or return;
- }
- my $r = $button->{action}->(${$e->{val}});
- defined $r or return;
-
- if ($button->{kind} eq 'add') {
- ${$e->{val}} = $r;
- } elsif ($button->{kind} eq 'remove') {
- ${$e->{val}} = $e->{list}[0];
- }
- ugtk2::gtk_set_treelist($treelist, [ map { may_apply($e->{format}, $_) } @{$e->{list}} ]);
-
- add_modify_remove_sensitive($buttons, $e);
- 1;
-}
-
-sub add_modify_remove_sensitive {
- my ($buttons, $e) = @_;
- $_->{button}->set_sensitive(@{$e->{list}} != ()) foreach
- grep { member($_->{kind}, 'modify', 'remove') } @$buttons;
-}
-
-sub ask_fromW {
- my ($o, $common, $l, $l2) = @_;
- my $ignore = 0; #-to handle recursivity
-
- my $mainw = ugtk2->new($common->{title}, %$o, modal => 1, if__($::main_window, transient => $::main_window));
-
- #-the widgets
- my (@widgets, @widgets_always, @widgets_advanced, $advanced);
- my $tooltips = Gtk2::Tooltips->new;
- my $ok_clicked = sub {
- !$mainw->{ok} || $mainw->{ok}->get_property('sensitive') or return;
- $mainw->{retval} = 1;
- Gtk2->main_quit;
- };
- my $set_all = sub {
- $ignore = 1;
- $_->{set}->(${$_->{e}{val}}, $_) foreach @widgets_always, @widgets_advanced;
- $_->{real_w}->set_sensitive(!$_->{e}{disabled}()) foreach @widgets_always, @widgets_advanced;
- $mainw->{ok}->set_sensitive(!$common->{callbacks}{ok_disabled}()) if $common->{callbacks}{ok_disabled};
- $ignore = 0;
- };
- my $get_all = sub {
- ${$_->{e}{val}} = $_->{get}->() foreach @widgets_always, @widgets_advanced;
- };
- my $update = sub {
- my ($f) = @_;
- return if $ignore;
- $get_all->();
- $f->();
- $set_all->();
- };
-
- my @label_sizegrp = map { Gtk2::SizeGroup->new('horizontal') } 0 .. 1;
- my @realw_sizegrp = map { Gtk2::SizeGroup->new('horizontal') } 0 .. 1;
-
- my $create_widget = sub {
- my ($e, $ind) = @_;
-
- my $may_go_to_next = sub {
- my (undef, $event) = @_;
- if (!$event || ($event->keyval & 0x7f) == 0xd) {
- if ($ind == $#widgets) {
- @widgets == 1 ? $ok_clicked->() : $mainw->{ok}->grab_focus;
- } else {
- $widgets[$ind+1]{focus_w}->grab_focus;
- }
- return 1; #- prevent an action on the just grabbed focus
- }
- };
- my $changed = sub { $update->(sub { $common->{callbacks}{changed}($ind) }) };
-
- my ($w, $real_w, $focus_w, $set, $get, $grow);
- if ($e->{type} eq 'iconlist') {
- $w = Gtk2::Button->new;
- $set = sub {
- gtkdestroy($e->{icon});
- my $f = $e->{icon2f}->($_[0]);
- $e->{icon} = -e $f ?
- gtkcreate_img($f) :
- Gtk2::WrappedLabel->new(may_apply($e->{format}, $_[0]));
- $w->add(gtkshow($e->{icon}));
- };
- $w->signal_connect(clicked => sub {
- $set->(${$e->{val}} = next_val_in_array(${$e->{val}}, $e->{list}));
- $changed->();
- });
- $real_w = gtkpack_(Gtk2::HBox->new(0,10), 1, Gtk2::HBox->new(0,0), 0, $w, 1, Gtk2::HBox->new(0,0));
- } elsif ($e->{type} eq 'bool') {
- if ($e->{image}) {
- $w = ugtk2::gtkadd(Gtk2::CheckButton->new, gtkshow(gtkcreate_img($e->{image})));
- } else {
-#- warn "\"text\" member should have been used instead of \"label\" one at:\n", common::backtrace(), "\n" if $e->{label} && !$e->{text};
- $w = Gtk2::CheckButton->new_with_label($e->{text});
- }
- $w->signal_connect(clicked => $changed);
- $set = sub { $w->set_active($_[0]) };
- $get = sub { $w->get_active };
- } elsif ($e->{type} eq 'label') {
- $w = Gtk2::WrappedLabel->new(${$e->{val}});
- $set = sub { $w->set($_[0]) };
- } elsif ($e->{type} eq 'button') {
- $w = Gtk2::Button->new_with_label('');
- $w->signal_connect(clicked => sub {
- $get_all->();
- $mainw->{rwindow}->hide;
- if (my $v = $e->{clicked_may_quit}()) {
- $mainw->{retval} = $v;
- Gtk2->main_quit;
- }
- $mainw->{rwindow}->show;
- $set_all->();
- });
- $set = sub { $w->child->set_label(may_apply($e->{format}, $_[0])) };
- } elsif ($e->{type} eq 'range') {
- my $want_scale = !$::expert;
- my $adj = Gtk2::Adjustment->new(${$e->{val}}, $e->{min}, $e->{max} + ($want_scale ? 1 : 0), 1, ($e->{max} - $e->{min}) / 10, 1);
- $adj->signal_connect(value_changed => $changed);
- $w = $want_scale ? Gtk2::HScale->new($adj) : Gtk2::SpinButton->new($adj, 10, 0);
- $w->set_size_request($want_scale ? 200 : 100, -1);
- $w->set_digits(0);
- $w->signal_connect(key_press_event => $may_go_to_next);
- $set = sub { $adj->set_value($_[0]) };
- $get = sub { $adj->get_value };
- } elsif ($e->{type} =~ /list/) {
-
- $e->{formatted_list} = [ map { may_apply($e->{format}, $_) } @{$e->{list}} ];
-
- if (my $actions = $e->{add_modify_remove}) {
- my @buttons = map {
- { kind => lc $_, action => $actions->{$_}, button => Gtk2::Button->new(translate($_)) };
- } N_("Add"), N_("Modify"), N_("Remove");
- my $modify = find { $_->{kind} eq 'modify' } @buttons;
-
- my $do_action = sub {
- my ($button) = @_;
- add_modify_remove_action($button, \@buttons, $e, $w) and $changed->();
- };
-
- ($w, $set, $focus_w) = create_treeview_list($e, $may_go_to_next, $changed,
- sub { $do_action->($modify) if $_[1]->type =~ /^2/ });
- $e->{saved_default_val} = ${$e->{val}};
-
- foreach my $button (@buttons) {
- $button->{button}->signal_connect(clicked => sub { $do_action->($button) });
- }
- add_modify_remove_sensitive(\@buttons, $e);
-
- $real_w = gtkpack_(Gtk2::HBox->new(0,0),
- 1, create_scrolled_window($w),
- 0, gtkpack__(Gtk2::VBox->new(0,0), map { $_->{button} } @buttons));
- $grow = 1;
- } else {
-
- my $quit_if_double_click =
- #- i'm the only one, double click means accepting
- @$l == 1 || $e->{quit_if_double_click} ?
- sub { $_[1]->type =~ /^2/ && $ok_clicked->() } : '';
-
- my @para = ($e, $may_go_to_next, $changed, $quit_if_double_click);
- my $use_boxradio = exists $e->{gtk}{use_boxradio} ? $e->{gtk}{use_boxradio} : @{$e->{list}} <= 8;
-
- if ($e->{help}) {
- #- used only when needed, as key bindings are dropped by List (ListStore does not seems to accepts Tooltips).
- ($w, $set, $focus_w) = $use_boxradio ? create_boxradio(@para) : create_list(@para);
- } elsif ($e->{type} eq 'treelist') {
- ($w, $set) = create_treeview_tree(@para, $e->{tree_expanded});
- $e->{saved_default_val} = ${$e->{val}}; #- during realization, signals will mess up the default val :(
- } else {
- if ($use_boxradio) {
- ($w, $set, $focus_w) = create_boxradio(@para);
- } else {
- ($w, $set, $focus_w) = create_treeview_list(@para);
- $e->{saved_default_val} = ${$e->{val}};
- }
- }
- if (@{$e->{list}} > 10) {
- $real_w = create_scrolled_window($w);
- $grow = 1;
- }
- }
- } else {
- if ($e->{type} eq "combo") {
-
- my @formatted_list = map { may_apply($e->{format}, $_) } @{$e->{list}};
-
- my @l = sort { $b <=> $a } map { length } @formatted_list;
- my $width = $l[@l / 16]; # take the third octile (think quartile)
-
- if ($e->{not_edit} && $width < 160) { #- ComboBoxes do not have an horizontal scroll-bar. This can cause havoc for long strings (eg: diskdrake Create dialog box in expert mode)
- $w = Gtk2::ComboBox->new_text;
- } else {
- $w = Gtk2::Combo->new;
- $w->set_use_arrows_always(1);
- $w->entry->set_editable(!$e->{not_edit});
- $w->disable_activate;
- }
-
- $w->set_popdown_strings(@formatted_list);
- $w->set_text(ref($e->{val}) ? may_apply($e->{format}, ${$e->{val}}) : $formatted_list[0]) if $w->isa('Gtk2::ComboBox');
- ($real_w, $w) = ($w, $w->entry);
-
- #- FIXME workaround gtk suckiness (set_text generates two 'change' signals, one when removing the whole, one for inserting the replacement..)
- my $idle;
- $w->signal_connect(changed => sub {
- $idle ||= Glib::Idle->add(sub { undef $idle; $changed->(); 0 });
- });
-
- $set = sub {
- my $s = may_apply($e->{format}, $_[0]);
- $w->set_text($s) if $s ne $w->get_text && $_[0] ne $w->get_text;
- };
- $get = sub {
- my $s = $w->get_text;
- my $i = eval { find_index { $s eq $_ } @formatted_list };
- defined $i ? $e->{list}[$i] : $s;
- };
- } else {
- $w = Gtk2::Entry->new;
- $w->signal_connect(changed => $changed);
- $w->signal_connect(focus_in_event => sub { $w->select_region(0, -1) });
- $w->signal_connect(focus_out_event => sub { $w->select_region(0, 0) });
- $set = sub { $w->set_text($_[0]) if $_[0] ne $w->get_text };
- $get = sub { $w->get_text };
- }
- $w->signal_connect(key_press_event => $may_go_to_next);
- $w->set_visibility(0) if $e->{hidden};
- }
- $w->signal_connect(focus_out_event => sub {
- $update->(sub { $common->{callbacks}{focus_out}($ind) });
- });
- $tooltips->set_tip($w, $e->{help}) if $e->{help} && !ref($e->{help});
-
- $real_w ||= $w;
- $real_w = gtkpack_(Gtk2::HBox->new,
- if_($e->{icon}, 0, eval { gtkcreate_img($e->{icon}) }),
- 0, gtkadd_widget($label_sizegrp[$e->{advanced} ? 1 : 0], $e->{label}),
- 1, gtkadd_widget($realw_sizegrp[$e->{advanced} ? 1 : 0], $real_w),
- ) if !$real_w->isa("Gtk2::CheckButton") || $e->{icon} || $e->{label};
-
- { e => $e, w => $w, real_w => $real_w, focus_w => $focus_w || $w,
- get => $get || sub { ${$e->{val}} }, set => $set || sub {}, grow => $grow };
- };
- @widgets_always = map_index { $create_widget->($_, $::i) } @$l;
- @widgets_advanced = map_index { $create_widget->($_, $::i + @$l) } @$l2;
-
- $mainw->{box_allow_grow} = 1;
- my $pack = create_box_with_title($mainw, @{$common->{messages}});
- mygtk2::set_main_window_size($mainw->{rwindow}) if $mainw->{pop_it} && (@$l || $mainw->{box_size} == 200);
-
- my @before_widgets_advanced = (
- (map { { grow => 0, real_w => Gtk2::WrappedLabel->new($_) } } @{$common->{advanced_messages}}),
- { grow => 0, real_w => Gtk2::HSeparator->new },
- );
-
- my $first_time = 1;
- my $set_advanced = sub {
- ($advanced) = @_;
- $update->($common->{callbacks}{advanced}) if $advanced && !$first_time;
- foreach (@before_widgets_advanced, @widgets_advanced) {
- my $w = $_->{embed_scroll} || $_->{real_w};
- $advanced ? $w->show : $w->hide;
- }
- @widgets = (@widgets_always, if_($advanced, @widgets_advanced));
- $first_time = 0;
- $set_all->(); #- must be done when showing advanced lists (to center selected value)
- };
- if ($::expert && @$l2) {
- $common->{advanced_state} = 1;
- }
- my $advanced_button = [ $common->{advanced_state} ? $common->{advanced_label_close} : $common->{advanced_label},
- sub {
- my ($w) = @_;
- $set_advanced->(!$advanced);
- $w->child->set_label($advanced ? $common->{advanced_label_close} : $common->{advanced_label});
- } ];
-
- my @more_buttons = (
- if_($common->{interactive_help},
- [ N("Help"), sub {
- my $message = $common->{interactive_help}->() or return;
- $o->ask_warn(N("Help"), $message);
- }, 1 ]),
- if_($common->{more_buttons}, @{$common->{more_buttons}}),
- );
- my $buttons_pack = ($common->{ok} || !exists $common->{ok}) && $mainw->create_okcancel($common->{ok}, $common->{cancel}, '', @more_buttons, if_(@$l2, $advanced_button));
-
- my @widgets_to_pack;
- foreach my $l (\@widgets_always, if_(@widgets_advanced, [ @before_widgets_advanced, @widgets_advanced ])) {
- my @grouped;
- my $add_grouped = sub {
- if (@grouped == 0) {
- } elsif (@grouped == 1) {
- push @widgets_to_pack, 0 => $grouped[0]{real_w};
- } else {
- my $scroll = create_scrolled_window(gtkpack__(Gtk2::VBox->new(0,0), map { $_->{real_w} } @grouped),
- [ 'automatic', 'automatic' ], 'none');
- $_->{embed_scroll} = $scroll foreach @grouped;
- push @widgets_to_pack, 1 => $scroll;
- }
- @grouped = ();
- };
- foreach (@$l) {
- if ($_->{grow}) {
- $add_grouped->();
- push @widgets_to_pack, 1 => $_->{real_w};
- } else {
- push @grouped, $_;
- }
- }
- $add_grouped->();
- }
-
- gtkpack_($pack, @widgets_to_pack);
-
- if ($buttons_pack) {
- $pack->pack_end(gtkshow($buttons_pack), 0, 0, 0);
- }
- ugtk2::gtkadd($mainw->{window}, $pack);
- $set_advanced->($common->{advanced_state});
-
- my $widget_to_focus =
- $common->{focus_cancel} ? $mainw->{cancel} :
- @widgets && ($common->{focus_first} || !$mainw->{ok} || @widgets == 1 && member(ref($widgets[0]{focus_w}), "Gtk2::TreeView", "Gtk2::RadioButton")) ?
- $widgets[0]{focus_w} :
- $mainw->{ok};
- $widget_to_focus->grab_focus if $widget_to_focus;
-
- my $check = sub {
- my ($f) = @_;
- sub {
- $get_all->();
- my ($error, $focus) = $f->();
-
- if ($error) {
- $set_all->();
- if (my $to_focus = $widgets[$focus || 0]) {
- $to_focus->{focus_w}->grab_focus;
- } else {
- log::l("ERROR: bad entry number given to focus " . backtrace());
- }
- }
- !$error;
- };
- };
-
- $_->{set}->($_->{e}{saved_default_val} || next) foreach @widgets_always, @widgets_advanced;
- $mainw->main(map { $check->($common->{callbacks}{$_}) } 'complete', 'canceled');
-}
-
-
-sub ask_browse_tree_info_refW {
- my ($o, $common) = @_;
- add2hash($common, { wait_message => sub { $o->wait_message(@_) } });
- ugtk2::ask_browse_tree_info($common);
-}
-
-
-sub ask_from__add_modify_removeW {
- my ($o, $title, $message, $l, %callback) = @_;
-
- my $e = $l->[0];
- my $chosen_element;
- put_in_hash($e, { allow_empty_list => 1, gtk => { use_boxradio => 0 }, sort => 0,
- val => \$chosen_element, type => 'list', add_modify_remove => \%callback });
-
- $o->ask_from($title, $message, $l, %callback);
-}
-
-sub wait_messageW {
- my ($_o, $title, $messages) = @_;
-
- my $to_modify;
- my @l = map { ref $_ ? (0, $_) : (1, $to_modify = Gtk2::Label->new(scalar warp_text($_))) } @$messages;
- $l[0] = 0; #- force first one
-
- my $Window = gtknew('MagicWindow',
- title => $title,
- pop_it => !$::isInstall,
- modal => 1,
- if__($::main_window, transient_for => $::main_window),
- child => gtknew('VBox', padding => 4, border_width => 10, children => \@l),
- );
- $Window->signal_connect(expose_event => sub { $Window->{displayed} = 1; 0 });
- $Window->{wait_messageW} = $to_modify;
- mygtk2::sync($Window) while !$Window->{displayed};
- $Window;
-}
-sub wait_message_nextW {
- my ($_o, $messages, $Window) = @_;
- my $msg = warp_text(join "\n", @$messages);
- return if $msg eq $Window->{wait_messageW}->get_text; #- needed otherwise no expose_event :(
- $Window->{displayed} = 0;
- $Window->{wait_messageW}->set($msg);
- mygtk2::sync($Window) while !$Window->{displayed};
-}
-sub wait_message_endW {
- my ($_o, $Window) = @_;
- mygtk2::may_destroy($Window);
- mygtk2::flush();
-}
-
-sub kill {
- my ($_o) = @_;
- $_->destroy foreach $::WizardTable ? $::WizardTable->get_children : (), @tempory::objects;
- @tempory::objects = ();
-}
-
-sub ok {
- N("Ok");
-}
-
-sub cancel {
- N("Cancel");
-}
-
-1;
diff --git a/perl-install/interactive/http.pm b/perl-install/interactive/http.pm
deleted file mode 100644
index 6825ee007..000000000
--- a/perl-install/interactive/http.pm
+++ /dev/null
@@ -1,164 +0,0 @@
-package interactive::http; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(interactive);
-
-use CGI;
-use interactive;
-use common;
-use log;
-
-my $script_name = $ENV{INTERACTIVE_HTTP};
-my $no_header;
-my $pipe_r = "/tmp/interactive_http_r";
-my $pipe_w = "/tmp/interactive_http_w";
-
-sub open_stdout() {
- open STDOUT, ">$pipe_w" or die;
- $| = 1;
- print CGI::header();
- $no_header = 1;
-}
-
-# cont_stdout must be called after open_stdout and before the first print
-sub cont_stdout {
- my ($o_title) = @_;
- print CGI::start_html('-title' => $o_title) if $no_header;
- $no_header = 0;
-}
-
-sub new_uid() {
- my ($s, $ms) = gettimeofday();
- $s * 256 + $ms % 256;
-}
-
-sub new {
- open_stdout();
- bless {}, $_[0];
-}
-
-sub end {
- -e $pipe_r or return; # do not run this twice
- my $q = CGI->new;
- cont_stdout("Exit");
- print "It's done, thanks for playing", $q->end_html;
- close STDOUT;
- unlink $pipe_r, $pipe_w;
-}
-sub exit { end(); exit($_[1]) }
-END { end() }
-
-sub ask_fromW {
- my ($o, $common, $l, $_l2) = @_;
-
- redisplay:
- my $uid = new_uid();
- my $q = CGI->new;
- $q->param(state => 'next_step');
- $q->param(uid => $uid);
- cont_stdout($common->{title});
-
-# print $q->img({ -src => "/icons/$o->{icon}" }) if $o->{icon};
- print @{$common->{messages}};
- print $q->start_form('-name' => 'form', '-action' => $script_name, '-method' => 'post');
-
- print "<table>\n";
-
- each_index {
- my $e = $_;
-
- print "<tr><td>$e->{label}</td><td>\n";
-
- $e->{type} = 'list' if $e->{type} =~ /(icon|tree)list/;
-
- #- combo does not exist, fallback to a sensible default
- $e->{type} = $e->{not_edit} ? 'list' : 'entry' if $e->{type} eq 'combo';
-
- if ($e->{type} eq 'bool') {
- print $q->checkbox('-name' => "w$::i", '-checked' => ${$e->{val}} && 'on', '-label' => $e->{text} || " ");
- } elsif ($e->{type} eq 'button') {
- print "nobuttonyet";
- } elsif ($e->{type} =~ /list/) {
- my %t;
- $t{$_} = may_apply($e->{format}, $_) foreach @{$e->{list}};
-
- print $q->scrolling_list('-name' => "w$::i",
- '-values' => $e->{list},
- '-default' => [ ${$e->{val}} ],
- '-size' => 5, '-multiple' => '', '-labels' => \%t);
- } else {
- print $e->{hidden} ?
- $q->password_field('-name' => "w$::i", '-default' => ${$e->{val}}) :
- $q->textfield('-name' => "w$::i", '-default' => ${$e->{val}});
- }
-
- print "</td></tr>\n";
- } @$l;
-
- print "</table>\n";
- print $q->p;
- print $q->submit('-name' => 'ok_submit', '-value' => $common->{ok} || N("Ok"));
- print $q->submit('-name' => 'cancel_submit', '-value' => $common->{cancel} || N("Cancel")) if $common->{cancel} || !exists $common->{ok};
- print $q->hidden('state'), $q->hidden('uid');
- print $q->end_form, $q->end_html;
-
- close STDOUT; # page terminated
-
- while (1) {
- open(my $F, "<$pipe_r") or die;
- $q = CGI->new($F);
- $q->param('force_exit_dead_prog') and $o->exit;
- last if $q->param('uid') == $uid;
-
- open_stdout(); # re-open for writing
- cont_stdout(N("Error"));
- print $q->h1(N("Error")), $q->p("Sorry, you can not go back");
- goto redisplay;
- }
- each_index {
- my $e = $_;
- my $v = $q->param("w$::i");
- if ($e->{type} eq 'bool') {
- $v = $v eq 'on';
- }
- ${$e->{val}} = $v;
- } @$l;
-
- open_stdout(); # re-open for writing
- $q->param('ok_submit');
-}
-
-sub p {
- print "\n" . CGI::br($_) foreach @_;
-}
-
-sub wait_messageW {
- my ($_o, $_title, $messages) = @_;
- cont_stdout();
- print "\n" . CGI::p();
- p(@$messages);
-}
-
-sub wait_message_nextW {
- my ($_o, $messages, $_w) = @_;
- p(@$messages);
-}
-sub wait_message_endW {
- my ($_o, $_w) = @_;
- p(N("Done"));
- print "\n" . CGI::p();
-}
-
-sub ok {
- N("Ok");
-}
-
-sub cancel {
- N("Cancel");
-}
-
-
-1;
diff --git a/perl-install/interactive/newt.pm b/perl-install/interactive/newt.pm
deleted file mode 100644
index 5b6c02005..000000000
--- a/perl-install/interactive/newt.pm
+++ /dev/null
@@ -1,431 +0,0 @@
-package interactive::newt; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(interactive);
-
-use interactive;
-use common;
-use log;
-use Newt::Newt; #- !! provides Newt and not Newt::Newt
-
-my ($width, $height) = (80, 25);
-my @wait_messages;
-
-sub new {
- if ($::isInstall) {
- system('unicode_start'); #- do not use run_program, we must do it on current console
- {
- local $ENV{LC_CTYPE} = "en_US.UTF-8";
- Newt::Init(1);
- }
- c::setlocale();
- } else {
- Newt::Init(0);
- }
- Newt::Cls();
- Newt::SetSuspendCallback();
- ($width, $height) = Newt::GetScreenSize();
- open STDERR, ">/dev/null" if $::isStandalone && !$::testing;
- bless {}, $_[0];
-}
-
-sub enter_console { Newt::Suspend() }
-sub leave_console { Newt::Resume() }
-sub suspend { Newt::Suspend() }
-sub resume { Newt::Resume() }
-sub end { Newt::Finished() }
-sub exit { end(); exit($_[1]) }
-END { end() }
-
-sub messages {
- my ($width, @messages) = @_;
- warp_text(join("\n", @messages), $width - 9);
-}
-
-sub myTextbox {
- my ($allow_scroll, $free_height, @messages) = @_;
-
- my @l = messages($width, @messages);
- my $h = min($free_height - 13, int @l);
-
- my $want_scroll;
- if ($h < @l) {
- if ($allow_scroll) {
- $want_scroll = 1;
- } else {
- # remove the text, no other way!
- @l = @l[0 .. $h-1];
- }
- }
-
- my $mess = Newt::Component::Textbox(1, 0, my $w = max(map { length } @l) + 1, $h, $want_scroll);
- $mess->TextboxSetText(join("\n", @l));
- $mess, $w + 1, $h;
-}
-
-sub separator {
- my $blank = Newt::Component::Form(\undef, '', 0);
- $blank->FormSetWidth($_[0]);
- $blank->FormSetHeight($_[1]);
- $blank;
-}
-sub checkval { $_[0] && $_[0] ne ' ' ? '*' : ' ' }
-
-sub ask_fromW {
- my ($o, $common, $l, $l2) = @_;
-
- if (@$l == 1 && $l->[0]{list} && @{$l->[0]{list}} == 2 && listlength(map { split "\n" } @{$common->{messages}}) > 20) {
- #- special ugly case, esp. for license agreement
- my $e = $l->[0];
- my $ok_disabled = $common->{callbacks} && delete $common->{callbacks}{ok_disabled};
- ($common->{ok}, $common->{cancel}) = map { may_apply($e->{format}, $_) } @{$e->{list}};
- do {
- ${$e->{val}} = ask_fromW_real($o, $common, [], $l2) ? $e->{list}[0] : $e->{list}[1];
- } while $ok_disabled && $ok_disabled->();
- 1;
- } elsif ((any { $_->{type} ne 'button' } @$l) || @$l < 5) {
- &ask_fromW_real;
- } else {
- $common->{cancel} = N("Do") if $common->{cancel} eq '';
- my $r;
- do {
- my @choices = map {
- my $s = simplify_string(may_apply($_->{format}, ${$_->{val}}));
- $s = "$_->{label}: $s" if $_->{label};
- { label => $s, clicked_may_quit => $_->{clicked_may_quit} };
- } @$l;
- #- replace many buttons with a list
- my $new_l = [ { val => \$r, type => 'list', list => \@choices, format => sub { $_[0]{label} }, sort => 0 } ];
- ask_fromW_real($o, $common, $new_l, $l2) and return;
- } until $r->{clicked_may_quit}->();
- 1;
- }
-}
-
-sub ask_fromW_real {
- my ($o, $common, $l, $l2) = @_;
- my $ignore; #-to handle recursivity
- my $old_focus = -2;
-
- my @l = $common->{advanced_state} ? @$l2 : @$l;
- my @messages = (@{$common->{messages}}, if_($common->{advanced_state}, @{$common->{advanced_messages}}));
-
- #-the widgets
- my (@widgets, $total_size, $has_scroll);
-
- my $label_width;
- my $get_label_width = sub {
- $label_width ||= max(map { length($_->{label}) } @l);
- };
-
- my $set_all = sub {
- $ignore = 1;
- $_->{set}->(${$_->{e}{val}}) foreach @widgets;
-# $_->{w}->set_sensitive(!$_->{e}{disabled}()) foreach @widgets;
- $ignore = 0;
- };
- my $get_all = sub {
- ${$_->{e}{val}} = $_->{get}->() foreach @widgets;
- };
- my $create_widget = sub {
- my ($e, $ind) = @_;
-
- $e->{type} = 'list' if $e->{type} =~ /iconlist/;
-
- #- combo does not exist, fallback to a sensible default
- $e->{type} = $e->{not_edit} ? 'list' : 'entry' if $e->{type} eq 'combo';
-
- my $changed = sub {
- return if $ignore;
- return $old_focus++ if $old_focus == -2; #- handle special first case
- $get_all->();
-
- #- TODO: this is very rough :(
- $common->{callbacks}{$old_focus == $ind ? 'changed' : 'focus_out'}->($ind);
-
- $set_all->();
- $old_focus = $ind;
- };
-
- my ($w, $real_w, $set, $get, $expand, $size, $invalid_choice, $extra_text);
- if ($e->{type} eq 'bool') {
- my $subwidth = $width - $get_label_width->() - 9;
- my @text = messages($subwidth, $e->{text} || '');
- $size = @text;
- $w = Newt::Component::Checkbox(shift(@text), checkval(${$e->{val}}), " *");
- if (@text) {
- $extra_text = Newt::Component::Textbox(-1, -1, $subwidth, $size - 1, 0);
- $extra_text->TextboxSetText(join("\n", @text));
- }
- $set = sub { $w->CheckboxSetValue(checkval($_[0])) };
- $get = sub { $w->CheckboxGetValue == ord '*' };
- } elsif ($e->{type} eq 'button') {
- $w = Newt::Component::Button(simplify_string(may_apply($e->{format}, ${$e->{val}})));
- } elsif ($e->{type} eq 'treelist') {
- $e->{formatted_list} = [ map { may_apply($e->{format}, $_) } @{$e->{list}} ];
- my $data_tree = interactive::helper_separator_tree_to_tree($e->{separator}, $e->{list}, $e->{formatted_list});
-
- my $count; $count = sub {
- my ($t) = @_;
- 1 + ($t->{_leaves_} ? int @{$t->{_leaves_}} : 0)
- + ($t->{_order_} ? sum(map { $count->($t->{$_}) } @{$t->{_order_}}) : 0);
- };
- $size = $count->($data_tree);
-
- my $prefered_size = @l == 1 && $height > 30 ? 10 : 5;
- my $scroll;
- if ($size > $prefered_size && !$o->{no_individual_scroll}) {
- $has_scroll = $scroll = 1;
- $size = $prefered_size;
- }
-
- $w = Newt::Component::Tree($size, $scroll);
-
- my $wi;
- my $add_item = sub {
- my ($text, $index, $parents) = @_;
- $text = simplify_string($text, $width - 10);
- $wi = max($wi, length($text) + 3 * @$parents + 4);
- $w->TreeAdd($text, $index, $parents);
- };
-
- my @data = '';
- my $populate; $populate = sub {
- my ($node, $parents) = @_;
- if (my $l = $node->{_order_}) {
- each_index {
- $add_item->($_, 0, $parents);
- $populate->($node->{$_}, [ @$parents, $::i ]);
- } @$l;
- }
- if (my $l = $node->{_leaves_}) {
- foreach (@$l) {
- my ($leaf, $data) = @$_;
- $add_item->($leaf, int(@data), $parents);
- push @data, $data;
- }
- }
- };
- $populate->($data_tree, []);
-
- $w->TreeSetWidth($wi + 1);
- $get = sub {
- my $i = $w->TreeGetCurrent;
- $invalid_choice = $i == 0;
- $data[$i];
- };
- $set = sub {
- my ($data) = @_;
- eval {
- my $i = find_index { $_ eq $data } @data;
- $w->TreeSetCurrent($i);
- } if $data;
- 1;
- };
- } elsif ($e->{type} =~ /list/) {
- $size = @{$e->{list}};
- my $prefered_size = @l == 1 && $height > 30 ? 10 : 5;
- my $scroll;
- if ($size > $prefered_size && !$o->{no_individual_scroll}) {
- $has_scroll = $scroll = 1;
- $size = $prefered_size;
- }
-
- $w = Newt::Component::Listbox($size, $scroll ? 1 << 2 : 0); #- NEWT_FLAG_SCROLL
-
- my @l = map {
- my $t = simplify_string(may_apply($e->{format}, $_), $width - 10);
- $w->ListboxAddEntry($t, $_);
- $t;
- } @{$e->{list}};
-
- $w->ListboxSetWidth(max(map { length($_) } @l) + 3); # 3 added for the scrollbar (?)
- $get = sub { $w->ListboxGetCurrent };
- $set = sub {
- my ($val) = @_;
- each_index {
- $w->ListboxSetCurrent($::i) if $val eq $_;
- } @{$e->{list}};
- };
- } else {
- $w = Newt::Component::Entry('', 20, ($e->{hidden} && 1 << 11) | (1 << 2));
- $get = sub { $w->EntryGetValue };
- $set = sub { $w->EntrySet($_[0], 1) };
- }
- $total_size += $size || 1;
-
- #- !! callbacks must be kept otherwise perl will free them !!
- #- (better handling of addCallback needed)
-
- { e => $e, w => $w, real_w => $real_w || $w, expand => $expand, callback => $changed,
- get => $get || sub { ${$e->{val}} }, set => $set || sub {},
- extra_text => $extra_text, invalid_choice => \$invalid_choice };
- };
- @widgets = map_index { $create_widget->($_, $::i) } @l;
-
- $_->{w}->addCallback($_->{callback}) foreach @widgets;
-
- $set_all->();
-
- my $grid = Newt::Grid::CreateGrid(3, max(1, sum(map { $_->{extra_text} ? 2 : 1 } @widgets)));
- my $i;
- foreach (@widgets) {
- $grid->GridSetField(0, $i, 1, ${Newt::Component::Label($_->{e}{label})}, 0, 0, 1, 0, 1, 0);
- $grid->GridSetField(1, $i, 1, ${$_->{real_w}}, 0, 0, 0, 0, 1, 0);
- $i++;
- if ($_->{extra_text}) {
- $grid->GridSetField(0, $i, 1, ${Newt::Component::Label('')}, 0, 0, 1, 0, 1, 0);
- $grid->GridSetField(1, $i, 1, ${$_->{extra_text}}, 0, 0, 0, 0, 1, 0);
- $i++;
- }
- }
-
- my $listg = do {
- my $wanted_header_height = min(8, listlength(messages($width, @messages)));
- my $height_avail = $height - $wanted_header_height - 13;
- #- use a scrolled window if there is a lot of checkboxes (aka
- #- ask_many_from_list) or a lot of widgets in general (aka
- #- options of a native PostScript printer in printerdrake)
- #- !! works badly together with list's (lists are one widget, so a
- #- big list window will not switch to scrollbar mode) :-(
- if (@l > 3 && $total_size > $height_avail) {
- $grid->GridPlace(1, 1); #- Uh?? otherwise the size allocated is bad
- if ($has_scroll) {
- #- trying again with no_individual_scroll set
- $o->{no_individual_scroll} and internal_error('no_individual_scroll already set, argh...');
- $o->{no_individual_scroll} = 1;
- goto &ask_fromW_real; #- same player shoot again!
- }
- $has_scroll = 1;
- $total_size = $height_avail;
-
- my $scroll = Newt::Component::VerticalScrollbar($height_avail, 9, 10); # 9=NEWT_COLORSET_CHECKBOX, 10=NEWT_COLORSET_ACTCHECKBOX
- my $subf = $scroll->Form('', 0);
- $subf->FormSetHeight($height_avail);
- $subf->FormAddGrid($grid, 0);
- Newt::Grid::HCloseStacked3($subf, separator(1, $height_avail-1), $scroll);
- } else {
- $grid;
- }
- };
-
- my ($ok, $cancel) = ($common->{ok}, $common->{cancel});
- my ($need_to_die);
- if (!defined $cancel && !defined $ok) {
- $cancel = $::isWizard && !$::Wizard_no_previous ? N("Previous") : N("Cancel") ;
- $need_to_die = 1 if !($::isWizard && !$::Wizard_no_previous);
- }
- $ok ||= $::isWizard ? ($::Wizard_finished ? N("Finish") : N("Next")) : N("Ok");
-
- my @okcancel = grep { $_ } $ok, $cancel;
- @okcancel = reverse(@okcancel) if $::isWizard;
- my @buttons_text = (if_(@$l2, $common->{advanced_state} ? $common->{advanced_label_close} : $common->{advanced_label}), @okcancel);
- my ($buttonbar, @buttons) = Newt::Grid::ButtonBar(map { simplify_string($_) } @buttons_text);
- my $advanced_button = @$l2 && shift @buttons;
- @buttons = reverse(@buttons) if $::isWizard;
- my ($ok_button, $cancel_button) = @buttons;
-
- my $form = Newt::Component::Form(\undef, '', 0);
- my $window = Newt::Grid::GridBasicWindow(first(myTextbox(!$has_scroll, $height - $total_size, @messages)), $listg, $buttonbar);
- $window->GridWrappedWindow($common->{title} || '');
- $form->FormAddGrid($window, 1);
-
- my $check = sub {
- my ($f) = @_;
-
- my ($error, $_focus) = $f->();
-
- if ($error) {
- $set_all->();
- }
- !$error;
- };
-
- my ($blocked, $canceled);
- while (1) {
- my $r = $form->RunForm;
-
- $get_all->();
-
- if ($advanced_button && $$r == $$advanced_button) {
- invbool(\$common->{advanced_state});
- $form->FormDestroy;
- Newt::PopWindow();
- return &ask_fromW_real;
- }
-
- $canceled = $cancel_button && $$r == $$cancel_button;
-
- next if !$canceled && any { ${$_->{invalid_choice}} } @widgets;
-
- $blocked =
- $$r == $$ok_button &&
- $common->{callbacks}{ok_disabled} &&
- do { $common->{callbacks}{ok_disabled}() };
-
- if (my $button = find { $$r == ${$_->{w}} } @widgets) {
- my $v = $button->{e}{clicked_may_quit}();
- $form->FormDestroy;
- Newt::PopWindow();
- return $v || &ask_fromW;
- }
- last if !$blocked && $check->($common->{callbacks}{$canceled ? 'canceled' : 'complete'});
- }
-
- $form->FormDestroy;
- Newt::PopWindow();
- die 'wizcancel' if $need_to_die && $canceled;
- !$canceled;
-}
-
-
-sub waitbox {
- my ($title, $messages) = @_;
- my ($t, $w, $h) = myTextbox(1, $height, @$messages);
- my $f = Newt::Component::Form(\undef, '', 0);
- Newt::CenteredWindow($w, $h, $title);
- $f->FormAddComponent($t);
- $f->DrawForm;
- Newt::Refresh();
- $f->FormDestroy;
- push @wait_messages, $f;
- $f;
-}
-
-
-sub wait_messageW {
- my ($_o, $title, $messages) = @_;
- { form => waitbox($title, $messages), title => $title };
-}
-
-sub wait_message_nextW {
- my ($o, $messages, $w) = @_;
- $o->wait_message_endW($w);
- $o->wait_messageW($w->{title}, $messages);
-}
-sub wait_message_endW {
- my ($_o, $_w) = @_;
- my $_wait = pop @wait_messages;
-# log::l("interactive_newt does not handle none stacked wait-messages") if $w->{form} != $wait;
- Newt::PopWindow();
-}
-
-sub simplify_string {
- my ($s, $o_width) = @_;
- $s =~ s/\n/ /g;
- $s = substr($s, 0, $o_width || 40); #- truncate if too long
- $s;
-}
-
-sub ok {
- N("Ok");
-}
-
-sub cancel {
- N("Cancel");
-}
-
-1;
diff --git a/perl-install/interactive/stdio.pm b/perl-install/interactive/stdio.pm
deleted file mode 100644
index 553f3fec5..000000000
--- a/perl-install/interactive/stdio.pm
+++ /dev/null
@@ -1,180 +0,0 @@
-package interactive::stdio; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(interactive);
-
-use interactive;
-use common;
-
-$| = 1;
-
-sub readln() {
- my $l = <STDIN>;
- chomp $l;
- $l;
-}
-
-sub check_it {
- my ($i, $n) = @_;
- $i =~ /^\s*\d+\s*$/ && 1 <= $i && $i <= $n;
-}
-
-sub good_choice {
- my ($def_s, $max) = @_;
- my $i;
- do {
- defined $i and print N("Bad choice, try again\n");
- print N("Your choice? (default %s) ", $def_s);
- $i = readln();
- } until !$i || check_it($i, $max);
- $i;
-}
-
-sub ask_fromW {
- my ($_o, $common, $l, $_l2) = @_;
-
- add2hash_($common, { ok => N("Ok"), cancel => N("Cancel") }) if !exists $common->{ok};
-
-ask_fromW_begin:
-
- my $already_entries = 0;
- my $predo_widget = sub {
- my ($e) = @_;
-
- $e->{type} = 'list' if $e->{type} =~ /(icon|tree)list/;
- #- combo does not exist, fallback to a sensible default
- $e->{type} = $e->{not_edit} ? 'list' : 'entry' if $e->{type} eq 'combo';
-
- if ($e->{type} eq 'entry') {
- my $t = "\t$e->{label} $e->{text}\n";
- if ($already_entries) {
- length($already_entries) > 1 and print N("Entries you'll have to fill:\n%s", $already_entries);
- $already_entries = 1;
- print $t;
- } else {
- $already_entries = $t;
- }
- }
- };
-
- my @labels;
- my $format_label = sub { my ($e) = @_; return sprintf("`%s' %s %s\n", ${$e->{val}}, $e->{label}, $e->{text}) };
- my $do_widget = sub {
- my ($e, $ind) = @_;
-
- if ($e->{type} eq 'bool') {
- print "$e->{text} $e->{label}\n";
- print N("Your choice? (0/1, default `%s') ", ${$e->{val}} || '0');
- my $i = readln();
- if ($i) {
- to_bool($i) != to_bool(${$e->{val}}) and $common->{callbacks}{changed}->($ind);
- ${$e->{val}} = $i;
- }
- } elsif ($e->{type} =~ /list/) {
- $e->{text} || $e->{label} and print "=> $e->{label} $e->{text}\n";
- my $n = 0; my $size = 0;
- foreach (@{$e->{list}}) {
- $n++;
- my $t = "$n: " . may_apply($e->{format}, $_) . "\t";
- if ($size + length($t) >= 80) {
- print "\n";
- $size = 0;
- }
- print $t;
- $size += length($t);
- }
- print "\n";
- my $i = good_choice(may_apply($e->{format}, ${$e->{val}}), $n);
- print "Setting to <", $i ? ${$e->{list}}[$i-1] : ${$e->{val}}, ">\n";
- $i and ${$e->{val}} = ${$e->{list}}[$i-1], $common->{callbacks}{changed}->($ind);
- } elsif ($e->{type} eq 'button') {
- print N("Button `%s': %s", $e->{label}, may_apply($e->{format}, ${$e->{val}})), " $e->{text}\n";
- print N("Do you want to click on this button?");
- my $i = readln();
- $i && $i !~ /^n/i and $e->{clicked_may_quit}(), $common->{callbacks}{changed}->($ind);
- } elsif ($e->{type} eq 'label') {
- my $t = $format_label->($e);
- push @labels, $t;
- print $t;
- } elsif ($e->{type} eq 'entry') {
- print "$e->{label} $e->{text}\n";
- print N("Your choice? (default `%s'%s) ", ${$e->{val}}, ${$e->{val}} ? N(" enter `void' for void entry") : '');
- my $i = readln();
- ${$e->{val}} = $i || ${$e->{val}};
- ${$e->{val}} = '' if ${$e->{val}} eq 'void';
- print "Setting to <", ${$e->{val}}, ">\n";
- $i and $common->{callbacks}{changed}->($ind);
- } else {
- printf "UNSUPPORTED WIDGET TYPE (type <%s> label <%s> text <%s> val <%s>\n", $e->{type}, $e->{label}, $e->{text}, ${$e->{val}};
- }
- };
-
- print "* ";
- $common->{title} and print "$common->{title}\n";
- print(map { "$_\n" } @{$common->{messages}});
-
- $predo_widget->($_) foreach @$l;
- if (listlength(@$l) > 30) {
- my $ll = listlength(@$l);
- print N("=> There are many things to choose from (%s).\n", $ll);
-ask_fromW_handle_verylonglist:
- print
-N("Please choose the first number of the 10-range you wish to edit,
-or just hit Enter to proceed.
-Your choice? ");
- my $i = readln();
- if (check_it($i, $ll)) {
- each_index { $do_widget->($_, $::i) } grep_index { $::i >= $i-1 && $::i < $i+9 } @$l;
- goto ask_fromW_handle_verylonglist;
- }
- } else {
- each_index { $do_widget->($_, $::i) } @$l;
- }
-
- my $lab;
- each_index { $labels[$::i] && (($lab = $format_label->($_)) ne $labels[$::i]) and print N("=> Notice, a label changed:\n%s", $lab) }
- grep { $_->{type} eq 'label' } @$l;
-
- my $i;
- if (listlength(@$l) != 1 || $common->{ok} ne N("Ok") || $common->{cancel} ne N("Cancel")) {
- print "[1] ", $common->{ok} || N("Ok");
- $common->{cancel} and print " [2] $common->{cancel}";
- @$l and print " [9] ", N("Re-submit");
- print "\n";
- do {
- defined $i and print N("Bad choice, try again\n");
- print N("Your choice? (default %s) ", $common->{focus_cancel} ? $common->{cancel} : $common->{ok});
- $i = readln() || ($common->{focus_cancel} ? "2" : "1");
- } until check_it($i, 9);
- $i == 9 and goto ask_fromW_begin;
- } else {
- $i = 1;
- }
- my ($callback_error) = $common->{callbacks}{$i == 2 ? 'canceled' : 'complete'}->();
- $callback_error and goto ask_fromW_begin;
- return $i != 2;
-}
-
-sub wait_messageW {
- my ($_o, $_title, $message) = @_;
- print join "\n", @$message;
-}
-sub wait_message_nextW {
- my $m = join "\n", @{$_[1]};
- print "\r$m", ' ' x (60 - length $m);
-}
-sub wait_message_endW { print "\nDone\n" }
-
-sub ok {
- N("Ok");
-}
-
-sub cancel {
- N("Cancel");
-}
-
-1;
-
diff --git a/perl-install/keyboard.pm b/perl-install/keyboard.pm
deleted file mode 100644
index 5332a62fa..000000000
--- a/perl-install/keyboard.pm
+++ /dev/null
@@ -1,674 +0,0 @@
-package keyboard; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use detect_devices;
-use run_program;
-use lang;
-use log;
-use c;
-
-
-#-######################################################################################
-#- Globals
-#-######################################################################################
-my $KMAP_MAGIC = 0x8B39C07F;
-
-#- a best guess of the keyboard layout, based on the choosen locale
-#- beware only the first 5 characters of the locale are used
-our %lang2keyboard =
-(
- 'af' => 'us_intl',
- 'am' => 'us:90',
- 'ar' => 'ar:90',
- 'as' => 'ben:90 ben2:80 us_intl:5',
- 'az' => 'az:90 tr_q:10 us_intl:5',
-'az_IR' => 'ir:90',
- 'be' => 'by:90 ru:50 ru_yawerty:40',
-# 'ber' => 'tifinagh:80 tifinagh_p:70',
- 'ber' => 'tifinagh_p:90',
- 'bg' => 'bg_phonetic:60 bg:50',
- 'bn' => 'ben:90 ben2:80 dev:20 us_intl:5',
- 'bo' => 'dz',
- 'br' => 'fr:90',
- 'bs' => 'bs:90',
- 'ca' => 'es:90 fr:15',
- 'chr' => 'chr:80 us:60 us_intl:60',
- 'cs' => 'cz_qwerty:70 cz:50',
- 'cy' => 'uk:90',
- 'da' => 'dk:90',
- 'de' => 'de_nodeadkeys:70 de:50 be:50 ch_de:50',
- 'dz' => 'dz',
- 'el' => 'gr:90',
- 'en' => 'us:89 us_intl:50 qc:50 uk:50',
-'en_IE' => 'ie:80 uk:70 dvorak_gb:10',
-'en_US' => 'us:90 us_intl:50 dvorak:10',
-'en_GB' => 'uk:89 us:60 us_intl:50 dvorak_gb:10',
- 'eo' => 'us_intl:89 dvorak_eo:30 dvorak:10',
- 'es' => 'es:85 la:80 us_intl:50',
- 'et' => 'ee:90',
- 'eu' => 'es:90 fr:15',
- 'fa' => 'ir:90',
- 'fi' => 'fi:90',
- 'fo' => 'fo:80 is:70 dk:60',
- 'fr' => 'fr:89 qc:85 be:85 ch_fr:70 dvorak_fr:20',
- 'fur' => 'it:90',
- 'ga' => 'ie:80 uk:70 dvorak_gb:10',
- 'gd' => 'uk:80 ie:70 dvorak_gb:10',
- 'gl' => 'es:90',
- 'gn' => 'la:85 es:80 us_intl:50',
- 'gu' => 'guj:90',
- 'gv' => 'uk:80 ie:70',
- 'he' => 'il:90 il_phonetic:10',
- 'hi' => 'dev:90',
- 'hr' => 'hr:90 si:50',
- 'hu' => 'hu:90',
- 'hy' => 'am:90 am_old:10 am_phonetic:5',
- 'ia' => 'us:90 us_intl:20',
- 'id' => 'us:90 us_intl:20',
- 'is' => 'is:90',
- 'it' => 'it:90 ch_fr:50 ch_de:50',
- 'iu' => 'iu:90',
- 'ja' => 'jp:90 us:50 us_intl:20',
- 'ka' => 'ge_la:90 ge_ru:50',
- 'kl' => 'dk:80 us_intl:30',
- 'kn' => 'kan:90',
- 'ko' => 'kr:90 us:60',
- 'ku' => 'tr_q:90 tr_f:30',
-'ku_IQ' => 'ku:90',
- 'kw' => 'uk:80 ie:70',
- 'ky' => 'ky:90 ru_yawerty:40',
- 'lb' => 'ch_fr:89 be:85 us_intl:70 fr:60 dvorak_fr:20',
- 'li' => 'us_intl:80 be:70 nl:10 us:5',
- 'lo' => 'lao:90',
- 'lt' => 'lt:80 lt_new:70 lt_b:60 lt_p:50',
- 'ltg' => 'lv:90 lt:40 lt_new:30 lt_b:20 lt_p:10 ee:5',
- 'lv' => 'lv:90 lt:40 lt_new:30 lt_b:20 lt_p:10 ee:5',
- 'mi' => 'us_intl:90 uk:20 us:10',
- 'mk' => 'mk:90',
- 'ml' => 'mal:90',
- 'mn' => 'mng:90 ru:20 ru_yawerty:5',
- 'mr' => 'dev:90',
- 'ms' => 'us:90 us_intl:20',
- 'mt' => 'mt:90 mt_us:35 us_intl:10',
- 'my' => 'mm:90',
- 'nb' => 'no:90 dvorak_no:10',
- 'nds' => 'de_nodeadkeys:70 de:50 us_intl:40 nl:10 us:5',
- 'ne' => 'dev:90',
- 'nl' => 'us_intl:80 be:70 nl:10 us:5',
- 'nn' => 'no:90 dvorak_no:10',
- 'no' => 'no:90 dvorak_no:10', # for compatiblity only
- 'oc' => 'fr:90',
- 'or' => 'ori:90',
- 'pa' => 'gur:90',
- 'ph' => 'us:90 us_intl:20',
- 'pl' => 'pl:90 pl2:60 dvorak_pl:10',
- 'pp' => 'br:80 la:20 pt:10 us_intl:30',
- 'ps' => 'ps:80 sd:60',
-'pt_BR' => 'br:90 la:20 pt:10 us_intl:30',
- 'pt' => 'pt:90',
- 'ro' => 'ro2:80 ro:40 us_intl:10',
- 'ru' => 'ru:85 ru_yawerty:80 ua:50',
- 'sc' => 'it:90',
- 'sd' => 'sd:80 ar:20',
- 'se' => 'sapmi:70 sapmi_sefi:50',
- 'sh' => 'yu:80',
- 'sk' => 'sk_qwerty:80 sk:70',
- 'sl' => 'si:90 hr:50',
- 'sq' => 'al:90',
- 'sr' => 'sr:80',
- 'ss' => 'us_intl',
- 'st' => 'us_intl',
- 'sv' => 'se:90 fi:30 dvorak_se:10',
- 'ta' => 'tscii:80 tml:20',
- 'te' => 'tel:90',
- 'tg' => 'tj:90 ru_yawerty:40',
- 'th' => 'th:80 th_pat:50 th_tis:60',
- 'tk' => 'tk:80 tr_q:50 tr_f:40',
- 'tl' => 'us:90 us_intl:20',
- 'tr' => 'tr_q:90 tr_f:30',
- 'tt' => 'ru:50 ru_yawerty:40',
- 'uk' => 'ua:90 ru:50 ru_yawerty:40',
- 'ur' => 'ur:80 sd:60 ar:20',
- 'uz' => 'uz:80 ru_yawerty:40',
- 'uz\@Cyrl' => 'uz:80 ru_yawerty:40',
- 'uz\@Latn' => 'us:80 uz:80',
- 've' => 'us_intl',
- 'vi' => 'vn:80 us:70 us_intl:60',
- 'wa' => 'be:90 fr:5',
- 'xh' => 'us_intl',
- 'yi' => 'il_phonetic:90 il:10 us_intl:10',
-'zh_CN' => 'us',
-'zh_TW' => 'us',
- 'zu' => 'us_intl',
-);
-
-# USB kbd table
-# The numeric values are the bCountryCode field (5th byte) of HID descriptor
-# NOTE: we do not trust when the layout is declared as US layout (0x21)
-# as most manufacturers just use that value when selling physical devices
-# with different layouts printed on the keys.
-my @usb2keyboard =
-(
- qw(SKIP ar_SKIP be ca_SKIP qc cz dk fi fr de gr il hu us_intl it jp),
-#- 0x10
- qw(kr la nl no ir pl pt ru sk es se ch_de ch_de ch_de tw_SKIP tr_q),
-#- 0x20
- qw(uk us_SKIP yu tr_f),
-#- higher codes not attribued as of 2002-02
-);
-
-#- key = extension for Xmodmap file, [0] = description of the keyboard,
-#- [1] = name for loadkeys, [2] = name for XKB, [3] = "1" if it is
-#- a multigroup layout (eg: one with latin/non-latin letters)
-my %keyboards = (
-arch() =~ /^sparc/ ? (
- "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "sunt5-cz-us", "cz", 0 ],
- "de" => [ N_("_: keyboard\nGerman"), "sunt5-de-latin1", "de", 0 ],
- "dvorak" => [ N_("_: keyboard\nDvorak"), "sundvorak", "dvorak",0 ],
- "es" => [ N_("_: keyboard\nSpanish"), "sunt5-es", "es", 0 ],
- "fi" => [ N_("_: keyboard\nFinnish"), "sunt5-fi-latin1", "fi", 0 ],
- "fr" => [ N_("_: keyboard\nFrench"), "sunt5-fr-latin1", "fr", 0 ],
- "no" => [ N_("_: keyboard\nNorwegian"), "sunt4-no-latin1", "no", 0 ],
- "pl" => [ N_("_: keyboard\nPolish"), "sun-pl-altgraph", "pl", 0 ],
- "ru" => [ N_("_: keyboard\nRussian"), "sunt5-ru", "ru", 1 ],
-# TODO: check the console map
- "se" => [ N_("_: keyboard\nSwedish"), "sunt5-fi-latin1", "se", 0 ],
- "uk" => [ N_("UK keyboard"), "sunt5-uk", "gb", 0 ],
- "us" => [ N_("US keyboard"), "sunkeymap", "us", 0 ],
-) : (
- "al" => [ N_("_: keyboard\nAlbanian"), "al", "al", 0 ],
- "am_old" => [ N_("_: keyboard\nArmenian (old)"), "am_old", "am(old)", 1 ],
- "am" => [ N_("_: keyboard\nArmenian (typewriter)"), "am-armscii8", "am", 1 ],
- "am_phonetic" => [ N_("_: keyboard\nArmenian (phonetic)"), "am_phonetic", "am(phonetic)",1 ],
- "ar" => [ N_("_: keyboard\nArabic"), "us", "ar(digits)", 1 ],
- "az" => [ N_("_: keyboard\nAzerbaidjani (latin)"), "az", "az", 0 ],
- "be" => [ N_("_: keyboard\nBelgian"), "be2-latin1", "be", 0 ],
- "ben" => [ N_("_: keyboard\nBengali (Inscript-layout)"), "us", "ben", 1 ],
- "ben2" => [ N_("_: keyboard\nBengali (Probhat)"), "us", "ben(probhat)", 1 ],
-"bg_phonetic" => [ N_("_: keyboard\nBulgarian (phonetic)"), "bg", "bg(phonetic)", 1 ],
- "bg" => [ N_("_: keyboard\nBulgarian (BDS)"), "bg", "bg", 1 ],
- "br" => [ N_("_: keyboard\nBrazilian (ABNT-2)"), "br-abnt2", "br", 0 ],
- "bs" => [ N_("_: keyboard\nBosnian"), "croat", "bs", 0 ],
- "by" => [ N_("_: keyboard\nBelarusian"), "by-cp1251", "by", 1 ],
-# old XKB layout
- "ch_de" => [ N_("_: keyboard\nSwiss (German layout)"), "sg-latin1", "de_CH", 0 ],
-# old XKB layout
- "ch_fr" => [ N_("_: keyboard\nSwiss (French layout)"), "fr_CH-latin1", "fr_CH", 0 ],
-# TODO: console map
- "chr" => [ N_("_: keyboard\nCherokee syllabics"), "us", "chr", 1 ],
- "cz" => [ N_("_: keyboard\nCzech (QWERTZ)"), "cz", "cz", 0 ],
- "cz_qwerty" => [ N_("_: keyboard\nCzech (QWERTY)"), "cz-lat2", "cz_qwerty", 0 ],
- "de" => [ N_("_: keyboard\nGerman"), "de-latin1", "de", 0 ],
- "de_nodeadkeys" => [ N_("_: keyboard\nGerman (no dead keys)"), "de-latin1-nodeadkeys", "de(nodeadkeys)", 0 ],
- "dev" => [ N_("_: keyboard\nDevanagari"), "us", "dev", 0 ],
- "dk" => [ N_("_: keyboard\nDanish"), "dk-latin1", "dk", 0 ],
- "dvorak" => [ N_("_: keyboard\nDvorak (US)"), "pc-dvorak-latin1", "dvorak", 0 ],
-# TODO: console map
- "dvorak_eo" => [ N_("_: keyboard\nDvorak (Esperanto)"), "us", "dvorak(eo)", 0 ],
-# TODO: console map
- "dvorak_fr" => [ N_("_: keyboard\nDvorak (French)"), "us", "dvorak(fr)", 0 ],
-# TODO: console map
- "dvorak_gb" => [ N_("_: keyboard\nDvorak (UK)"), "pc-dvorak-latin1", "dvorak(gb)", 0 ],
- "dvorak_no" => [ N_("_: keyboard\nDvorak (Norwegian)"), "no-dvorak", "dvorak(no)", 0 ],
-# TODO: console map
- "dvorak_pl" => [ N_("_: keyboard\nDvorak (Polish)"), "us", "dvorak(pl)", 0 ],
- "dvorak_se" => [ N_("_: keyboard\nDvorak (Swedish)"), "se-dvorak", "dvorak(se)", 0 ],
- "dz" => [ N_("_: keyboard\nDzongkha/Tibetan"), "us", "dz", 1 ],
- "ee" => [ N_("_: keyboard\nEstonian"), "ee-latin9", "ee", 0 ],
- "es" => [ N_("_: keyboard\nSpanish"), "es-latin1", "es", 0 ],
- "fi" => [ N_("_: keyboard\nFinnish"), "fi-latin1", "fi", 0 ],
-# there used to be a "fo" layout in XFree86...
- "fo" => [ N_("_: keyboard\nFaroese"), "is", "is", 0 ],
- "fr" => [ N_("_: keyboard\nFrench"), "fr-latin1", "fr", 0 ],
- "ge_ru" => [N_("_: keyboard\nGeorgian (\"Russian\" layout)"), "ge_ru-georgian_academy", "ge_ru",1],
- "ge_la" => [N_("_: keyboard\nGeorgian (\"Latin\" layout)"), "ge_la-georgian_academy", "ge_la",1],
- "gr" => [ N_("_: keyboard\nGreek"), "gr-8859_7", "el(extended)", 1 ],
- "gr_pl" => [ N_("_: keyboard\nGreek (polytonic)"), "gr-8859_7", "el(polytonic)", 1 ],
- "guj" => [ N_("_: keyboard\nGujarati"), "us", "guj", 1 ],
- "gur" => [ N_("_: keyboard\nGurmukhi"), "us", "gur", 1 ],
- "hr" => [ N_("_: keyboard\nCroatian"), "croat", "hr", 0 ],
- "hu" => [ N_("_: keyboard\nHungarian"), "hu-latin2", "hu", 0 ],
- "ie" => [ N_("_: keyboard\nIrish"), "uk", "ie", 0 ],
- "il" => [ N_("_: keyboard\nIsraeli"), "il-8859_8", "il", 1 ],
- "il_phonetic" => [ N_("_: keyboard\nIsraeli (phonetic)"), "hebrew", "il_phonetic", 1 ],
- "ir" => [ N_("_: keyboard\nIranian"), "ir-isiri_3342", "ir", 1 ],
- "is" => [ N_("_: keyboard\nIcelandic"), "is-latin1", "is", 0 ],
- "it" => [ N_("_: keyboard\nItalian"), "it-latin1", "it", 0 ],
- "iu" => [ N_("_: keyboard\nInuktitut"), "us", "iu", 1 ],
-# old XKB layout
-# Japanese keyboard is dual latin/kana; but telling it here shows a
-# message to choose the switching key that is misleading, as input methods
-# are not automatically enabled when typing in kana
- "jp" => [ N_("_: keyboard\nJapanese 106 keys"), "jp106", "jp", 0 ],
- "kan" => [ N_("_: keyboard\nKannada"), "us", "kan", 1 ],
-# There is no XKB korean file yet; but using xmodmap one disables
-# some functionality; "us" used for XKB until this is fixed
- "kr" => [ N_("_: keyboard\nKorean"), "us", "us", 1 ],
-# TODO: console map
- "ku" => [ N_("_: keyboard\nKurdish (arabic script)"), "us", "ku", 1 ],
- "ky" => [ N_("_: keyboard\nKyrgyz"), "ky", "ky", 1 ],
- "la" => [ N_("_: keyboard\nLatin American"), "la-latin1", "la", 0 ],
-# TODO: console map
- "lao" => [ N_("_: keyboard\nLaotian"), "us", "lo", 1 ],
- "lt" => [ N_("_: keyboard\nLithuanian AZERTY (old)"), "lt-latin7", "lt(lt_a)", 0 ],
-#- TODO: write a console kbd map for lt_new
- "lt_new" => [ N_("_: keyboard\nLithuanian AZERTY (new)"), "lt-latin7", "lt(lt_std)", 0 ],
- "lt_b" => [ N_("_: keyboard\nLithuanian \"number row\" QWERTY"), "ltb-latin7", "lt(lt_us)", 1 ],
- "lt_p" => [ N_("_: keyboard\nLithuanian \"phonetic\" QWERTY"), "ltp-latin7", "lt(phonetic)", 0 ],
- "lv" => [ N_("_: keyboard\nLatvian"), "lv-latin7", "lv", 0 ],
- "mal" => [ N_("_: keyboard\nMalayalam"), "us", "ml(mlplusnum)", 1 ],
- "mk" => [ N_("_: keyboard\nMacedonian"), "mk", "mk", 1 ],
- "mm" => [ N_("_: keyboard\nMyanmar (Burmese)"), "us", "mm", 1 ],
- "mng" => [ N_("_: keyboard\nMongolian (cyrillic)"), "us", "mng", 1 ],
- "mt" => [ N_("_: keyboard\nMaltese (UK)"), "uk", "mt", 0 ],
- "mt_us" => [ N_("_: keyboard\nMaltese (US)"), "us", "mt_us", 0 ],
- "nl" => [ N_("_: keyboard\nDutch"), "nl-latin1", "nl", 0 ],
- "no" => [ N_("_: keyboard\nNorwegian"), "no-latin1", "no", 0 ],
- "ori" => [ N_("_: keyboard\nOriya"), "us", "ori", 1 ],
- "pl" => [ N_("_: keyboard\nPolish (qwerty layout)"), "pl", "pl", 0 ],
- "pl2" => [ N_("_: keyboard\nPolish (qwertz layout)"), "pl-latin2", "pl2", 0 ],
-# TODO: console map
- "ps" => [ N_("_: keyboard\nPashto"), "us", "ps", 1 ],
- "pt" => [ N_("_: keyboard\nPortuguese"), "pt-latin1", "pt", 0 ],
-# old XKB layout; change "ca_enhanced" -> "ca" once we ship new XKB
- "qc" => [ N_("_: keyboard\nCanadian (Quebec)"), "qc-latin1", "ca_enhanced", 0 ],
-#- TODO: write a console kbd map for ro2
- "ro2" => [ N_("_: keyboard\nRomanian (qwertz)"), "ro2", "ro", 0 ],
- "ro" => [ N_("_: keyboard\nRomanian (qwerty)"), "ro", "ro(us_ro)", 0 ],
- "ru" => [ N_("_: keyboard\nRussian"), "ru4", "ru(winkeys)", 1 ],
- "ru_yawerty" => [ N_("_: keyboard\nRussian (phonetic)"), "ru-yawerty", "ru(phonetic)", 1 ],
- "sapmi" => [ N_("_: keyboard\nSaami (norwegian)"), "no-latin1", "sapmi", 0 ],
- "sapmi_sefi" => [ N_("_: keyboard\nSaami (swedish/finnish)"), "se-latin1", "sapmi(sefi)", 0 ],
-# TODO: console map
- "sd" => [ N_("_: keyboard\nSindhi"), "us", "sd", 1 ],
- "se" => [ N_("_: keyboard\nSwedish"), "se-latin1", "se", 0 ],
- "si" => [ N_("_: keyboard\nSlovenian"), "slovene", "si", 0 ],
-# TODO: console map
- "sin" => [ N_("_: keyboard\nSinhala"), "us", "sin", 1 ],
- "sk" => [ N_("_: keyboard\nSlovakian (QWERTZ)"), "sk-qwertz", "sk", 0 ],
- "sk_qwerty" => [ N_("_: keyboard\nSlovakian (QWERTY)"), "sk-qwerty", "sk_qwerty", 0 ],
-# TODO: console map
- "sr" => [ N_("_: keyboard\nSerbian (cyrillic)"), "sr", "yu,sr", 1 ],
- "syr" => [ N_("_: keyboard\nSyriac"), "us", "syr", 1 ],
- "syr_p" => [ N_("_: keyboard\nSyriac (phonetic)"), "us", "syr_phonetic", 1 ],
- "tel" => [ N_("_: keyboard\nTelugu"), "us", "tel", 1 ],
-# no console kbd that I'm aware of
- "tml" => [ N_("_: keyboard\nTamil (ISCII-layout)"), "us", "tml(INSCRIPT)", 1 ],
- "tscii" => [ N_("_: keyboard\nTamil (Typewriter-layout)"), "us", "tml(UNI)", 1 ],
- "th" => [ N_("_: keyboard\nThai (Kedmanee)"), "th", "th", 1 ],
- "th_tis" => [ N_("_: keyboard\nThai (TIS-820)"), "th", "th_tis", 1 ],
-# TODO: console map
- "th_pat" => [ N_("_: keyboard\nThai (Pattachote)"), "us", "th_pat", 1 ],
-# TODO: console map
-# NOTE: we define a triple layout here
- "tifinagh" => [ N_("_: keyboard\nTifinagh (moroccan layout) (+latin/arabic)"), "fr", "fr,tifinagh,ar(azerty)", 1 ],
- "tifinagh_p" => [ N_("_: keyboard\nTifinagh (phonetic) (+latin/arabic)"), "fr", "fr,tifinagh(phonetic),ar(azerty)", 1 ],
-# TODO: console map
- "tj" => [ N_("_: keyboard\nTajik"), "ru4", "tj", 1 ],
-# TODO: console map
- "tk" => [ N_("_: keyboard\nTurkmen"), "us", "tk", 0 ],
- "tr_f" => [ N_("_: keyboard\nTurkish (traditional \"F\" model)"), "trf", "tr(tr_f)", 0 ],
- "tr_q" => [ N_("_: keyboard\nTurkish (modern \"Q\" model)"), "tr_q-latin5", "tr", 0 ],
-#-"tw => [ N_("_: keyboard\nChineses bopomofo"), "tw", "tw", 1 ],
- "ua" => [ N_("_: keyboard\nUkrainian"), "ua", "ua", 1 ],
- "uk" => [ N_("UK keyboard"), "uk", "gb", 0 ],
-# TODO: console map
- "ur" => [ N_("_: keyboard\nUrdu keyboard"), "us", "ur", 1 ],
- "us" => [ N_("US keyboard"), "us", "en_US", 0 ],
- "us_intl" => [ N_("US keyboard (international)"), "us-latin1", "us_intl", 0 ],
- "uz" => [ N_("_: keyboard\nUzbek (cyrillic)"), "uz.uni", "uz", 1 ],
-# old XKB layout
- "vn" => [ N_("_: keyboard\nVietnamese \"numeric row\" QWERTY"), "vn-tcvn", "vn(toggle)", 0 ],
- "yu" => [ N_("_: keyboard\nYugoslavian (latin)"), "sr", "yu", 0 ],
-),
-);
-
-#- list of possible choices for the key combinations to toggle XKB groups
-#- (eg in X86Config file: XkbOptions "grp:toggle")
-my %grp_toggles = (
- toggle => N_("Right Alt key"),
- shift_toggle => N_("Both Shift keys simultaneously"),
- ctrl_shift_toggle => N_("Control and Shift keys simultaneously"),
- caps_toggle => N_("CapsLock key"),
- shift_caps_toggle => N_("Shift and CapsLock keys simultaneously"),
- ctrl_alt_toggle => N_("Ctrl and Alt keys simultaneously"),
- alt_shift_toggle => N_("Alt and Shift keys simultaneously"),
- menu_toggle => N_("\"Menu\" key"),
- lwin_toggle => N_("Left \"Windows\" key"),
- rwin_toggle => N_("Right \"Windows\" key"),
- ctrls_toggle => N_("Both Control keys simultaneously"),
- alts_toggle => N_("Both Alt keys simultaneously"),
- lshift_toggle => N_("Left Shift key"),
- rshift_toggle => N_("Right Shift key"),
- lalt_toggle => N_("Left Alt key"),
- lctrl_toggle => N_("Left Control key"),
- rctrl_toggle => N_("Right Control key"),
-);
-
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub KEYBOARDs() { keys %keyboards }
-sub KEYBOARD2text { $keyboards{$_[0]} && $keyboards{$_[0]}[0] }
-sub keyboards() { map { { KEYBOARD => $_ } } keys %keyboards }
-sub keyboard2one {
- my ($keyboard, $nb) = @_;
- ref $keyboard or is_xbox() ? return undef : internal_error();
- my $l = $keyboards{$keyboard->{KEYBOARD}} or return;
- $l->[$nb];
-}
-sub keyboard2text { keyboard2one($_[0], 0) }
-sub keyboard2kmap { keyboard2one($_[0], 1) }
-sub keyboard2xkb { keyboard2one($_[0], 2) }
-
-sub xkb_models() {
- my $models = parse_xkb_rules()->{model};
- [ map { $_->[0] } @$models ], { map { @$_ } @$models };
-}
-
-sub grp_toggles {
- my ($keyboard) = @_;
- keyboard2one($keyboard, 3) or return;
- \%grp_toggles;
-}
-
-sub group_toggle_choose {
- my ($in, $keyboard) = @_;
-
- if (my $grp_toggles = keyboard::grp_toggles($keyboard)) {
- my $GRP_TOGGLE = $keyboard->{GRP_TOGGLE} || 'caps_toggle';
- $GRP_TOGGLE = $in->ask_from_listf('', N("Here you can choose the key or key combination that will
-allow switching between the different keyboard layouts
-(eg: latin and non latin)"), sub { translate($grp_toggles->{$_[0]}) }, [ sort keys %$grp_toggles ], $GRP_TOGGLE) or return;
-
- $GRP_TOGGLE ne 'rctrl_toggle' and $in->ask_warn(N("Warning"), formatAlaTeX(
-N("This setting will be activated after the installation.
-During installation, you will need to use the Right Control
-key to switch between the different keyboard layouts.")));
- log::l("GRP_TOGGLE: $GRP_TOGGLE");
- $keyboard->{GRP_TOGGLE} = $GRP_TOGGLE;
- } else {
- $keyboard->{GRP_TOGGLE} = '';
- }
- 1;
-}
-
-sub loadkeys_files {
- my ($err) = @_;
- my $archkbd = arch() =~ /^sparc/ ? "sun" : arch() =~ /i.86/ ? "i386" : arch() =~ /ppc/ ? "mac" : arch();
- my $p = "/usr/lib/kbd/keymaps/$archkbd";
- my $post = ".kmap.gz";
- my %trans = ("cz-latin2" => "cz-lat2");
- my %find_file;
- foreach my $dir (all($p)) {
- $find_file{$dir} = '';
- foreach (all("$p/$dir")) {
- $find_file{$_} and $err->("file $_ is both in $find_file{$_} and $dir") if $err;
- $find_file{$_} = "$p/$dir/$_";
- }
- }
- my (@l, %l);
- foreach (values %keyboards) {
- local $_ = $trans{$_->[1]} || $_->[1];
- my $l = $find_file{"$_$post"} || $find_file{first(/(..)/) . $post};
- if ($l) {
- push @l, $l;
- foreach (`zgrep include $l | grep "^include"`) {
- /include\s+"(.*)"/ or die "bad line $_";
- @l{grep { -e $_ } ("$p/$1.inc.gz")} = ();
- }
- } else {
- $err->("invalid loadkeys keytable $_") if $err;
- }
- }
- uniq(@l, keys %l, grep { -e $_ } map { "$p/$_.inc.gz" } qw(compose euro windowkeys linux-keys-bare));
-}
-
-sub unpack_keyboards {
- my ($k) = @_; $k or return;
- [ grep {
- my $b = $keyboards{$_->[0]};
- $b or log::l("bad keyboard $_->[0] in %keyboard::lang2keyboard");
- $b;
- } map { [ split ':' ] } split ' ', $k ];
-}
-sub lang2keyboards {
- my @li = sort { $b->[1] <=> $a->[1] } map { @$_ } map {
- my $h = lang::analyse_locale_name($_);
- #- example: pt_BR and pt
- my @l = (if_($h->{country}, $h->{main} . '_' . $h->{country}), $h->{main});
- my $k = find { $_ } map { $lang2keyboard{$_} } @l;
- unpack_keyboards($k) || [ [ ($keyboards{$_} ? $_ : "us") => 100 ] ];
- } @_;
- \@li;
-}
-sub lang2keyboard {
- my ($l) = @_;
-
- my $kb = lang2keyboards($l)->[0][0];
- { KEYBOARD => $keyboards{$kb} ? $kb : 'us' }; #- handle incorrect keyboard mapping to us.
-}
-
-sub from_usb() {
- return if $::noauto;
- my ($usb_kbd) = detect_devices::usbKeyboards() or return;
- my $country_code = detect_devices::usbKeyboard2country_code($usb_kbd) or return;
- my $keyboard = $usb2keyboard[$country_code];
- $keyboard !~ /SKIP/ && { KEYBOARD => $keyboard };
-}
-
-sub load {
- my ($keymap) = @_;
- return if $::testing;
-
- my ($magic, $tables_given, @tables) = common::unpack_with_refs('I' .
- 'i' . c::MAX_NR_KEYMAPS() .
- 's' . c::NR_KEYS() . '*',
- $keymap);
- $magic != $KMAP_MAGIC and die "failed to read kmap magic";
-
- sysopen(my $F, "/dev/console", 2) or die "failed to open /dev/console: $!";
-
- my $i_tables = 0;
- each_index {
- my $table_index = $::i;
- if (!$_) {
- #- deallocate table
- ioctl($F, c::KDSKBENT(), pack("CCS", $table_index, 0, c::K_NOSUCHMAP())) or log::l("removing table $table_index failed: $!");
- } else {
- each_index {
- ioctl($F, c::KDSKBENT(), pack("CCS", $table_index, $::i, $_)) or log::l("keymap ioctl failed ($table_index $::i $_): $!");
- } @{$tables[$i_tables++]};
- }
- } @$tables_given;
-}
-
-sub parse_xkb_rules() {
- my $cat;
- my %l;
- my $lst_file = "$::prefix/usr/X11R6/lib/X11/xkb/rules/xorg.lst";
- foreach (cat_($lst_file)) {
- next if m!^\s*//! || m!^\s*$!;
- chomp;
- if (/^\!\s*(\S+)$/) {
- $cat = $1;
- } elsif (/^\s*(\w\S*)\s+(.*)/) {
- push @{$l{$cat}}, [ $1, $2 ];
- } else {
- log::l("parse_xkb_rules:$lst_file: bad line $_");
- }
- }
- \%l;
-}
-
-sub keyboard2full_xkb {
- my ($keyboard) = @_;
-
- my $XkbLayout = keyboard2xkb($keyboard) or return { XkbDisable => '' };
-
- my $XkbModel = $keyboard->{XkbModel} ||
- (arch() =~ /sparc/ ? 'sun' :
- $XkbLayout eq 'jp' ? 'jp106' :
- $XkbLayout eq 'br' ? 'abnt2' : 'pc105');
-
- {
- XkbLayout =>
- $XkbLayout =~ /,/ ? $XkbLayout :
- join(',', if_($keyboard->{GRP_TOGGLE}, 'us'), $XkbLayout),
- XkbModel => $XkbModel,
- XkbOptions => join(',',
- if_($keyboard->{GRP_TOGGLE},
- "grp:$keyboard->{GRP_TOGGLE}",
- 'grp_led:scroll'),
- if_($keyboard->{GRP_TOGGLE} ne 'rwin_toggle', 'compose:rwin'),
- ),
- };
-}
-
-sub xmodmap_file {
- my ($keyboard) = @_;
- my $KEYBOARD = $keyboard->{KEYBOARD};
- my $f = "$ENV{SHARE_PATH}/xmodmap/xmodmap.$KEYBOARD";
- if (! -e $f) {
- eval {
- require packdrake;
- my $packer = new packdrake("$ENV{SHARE_PATH}/xmodmap.cz2", quiet => 1);
- $packer->extract_archive("/tmp", "xmodmap.$KEYBOARD");
- };
- $f = "/tmp/xmodmap.$KEYBOARD";
- }
- -e $f && $f;
-}
-
-sub setxkbmap {
- my ($keyboard) = @_;
- my $xkb = keyboard::keyboard2full_xkb($keyboard) or return;
- run_program::run('setxkbmap', '-option', '') if $xkb->{XkbOptions}; #- need re-initialised other toggles are cumulated
- run_program::run('setxkbmap', $xkb->{XkbLayout}, '-model' => $xkb->{XkbModel}, '-option' => $xkb->{XkbOptions} || '', '-compat' => $xkb->{XkbCompat} || '');
-}
-
-sub setup {
- my ($keyboard) = @_;
-
- return if arch() =~ /^sparc/;
-
- #- Xpmac does not map keys quite right
- if (arch() =~ /ppc/ && !$::testing && $ENV{DISPLAY}) {
- log::l("Fixing Mac keyboard");
- run_program::run('xmodmap', "-e", "keycode 59 = BackSpace");
- run_program::run('xmodmap', "-e", "keycode 131 = Shift_R");
- run_program::run('xmodmap', "-e", "add shift = Shift_R");
- return;
- }
-
- my $kmap = keyboard2kmap($keyboard) or return;
-
- log::l("loading keymap $kmap");
- if (-e (my $f = "$ENV{SHARE_PATH}/keymaps/$kmap.bkmap")) {
- load(scalar cat_($f));
- } elsif (-e (my $packed_kmaps = "$ENV{SHARE_PATH}/keymaps.cz2")) {
- my $kid = bg_command->new(sub {
- eval {
- require packdrake;
- my $packer = new packdrake($packed_kmaps, quiet => 1);
- $packer->extract_archive(undef, "$kmap.bkmap");
- };
- });
- local $/ = undef;
- eval { my $fd = $kid->{fd}; load(join('', <$fd>)) };
- } elsif (-x '/bin/loadkeys') {
- run_program::run('loadkeys', $kmap);
- } else {
- log::l("ERROR: can not load keymap");
- }
-
- if (-x "/usr/X11R6/bin/setxkbmap") {
- setxkbmap($keyboard);
- } else {
- my $f = xmodmap_file($keyboard);
- eval { run_program::run('xmodmap', $f) } if $f && !$::testing && $ENV{DISPLAY};
- }
-}
-
-sub write {
- my ($keyboard) = @_;
- log::l("keyboard::write $keyboard->{KEYBOARD}");
-
- $keyboard = { %$keyboard };
- delete $keyboard->{unsafe};
- $keyboard->{KEYTABLE} = keyboard2kmap($keyboard);
-
- setVarsInSh("$::prefix/etc/sysconfig/keyboard", $keyboard);
- if (arch() =~ /ppc/) {
- my $s = "dev.mac_hid.keyboard_sends_linux_keycodes = 1\n";
- substInFile {
- $_ = '' if /^\Qdev.mac_hid.keyboard_sends_linux_keycodes/;
- $_ .= $s if eof;
- } "$::prefix/etc/sysctl.conf";
- } else {
- run_program::rooted($::prefix, 'dumpkeys', '>', '/etc/sysconfig/console/default.kmap') or log::l("dumpkeys failed");
- }
-}
-
-sub read() {
- my %keyboard = getVarsFromSh("$::prefix/etc/sysconfig/keyboard") or return;
- if (!$keyboard{KEYBOARD}) {
- add2hash(\%keyboard, grep { keyboard2kmap($_) eq $keyboard{KEYTABLE} } keyboards());
- }
- $keyboard{DISABLE_WINDOWS_KEY} = bool2yesno(detect_devices::isLaptop());
-
- keyboard2text(\%keyboard) ? \%keyboard : {};
-}
-
-sub check() {
- $^W = 0;
-
- my $not_ok = 0;
- my $warn = sub {
- print STDERR "$_[0]\n";
- };
- my $err = sub {
- &$warn;
- $not_ok = 1;
- };
-
- if (my @l = grep { is_empty_array_ref(lang2keyboards($_)) } lang::list_langs()) {
- $warn->("no keyboard for langs " . join(" ", @l));
- }
- foreach my $lang (lang::list_langs()) {
- my $l = lang2keyboards($lang);
- foreach (@$l) {
- 0 <= $_->[1] && $_->[1] <= 100 or $err->("invalid value $_->[1] in $lang2keyboard{$lang} for $lang in \%lang2keyboard keyboard.pm");
- $keyboards{$_->[0]} or $err->("invalid keyboard $_->[0] in $lang2keyboard{$lang} for $lang in \%lang2keyboard keyboard.pm");
- }
- }
- /SKIP/ || $keyboards{$_} or $err->("invalid keyboard $_ in \@usb2keyboard keyboard.pm") foreach @usb2keyboard;
- $usb2keyboard[0x21] eq 'us_SKIP' or $err->('@usb2keyboard is badly modified, 0x21 is not us keyboard');
-
- my @xkb_groups = map { if_(/grp:(\S+)/, $1) } cat_('/usr/lib/X11/xkb/rules/xfree86.lst');
- $err->("invalid xkb group toggle '$_' in \%grp_toggles") foreach difference2([ keys %grp_toggles ], \@xkb_groups);
- $warn->("unused xkb group toggle '$_'") foreach grep { !/switch/ } difference2(\@xkb_groups, [ keys %grp_toggles ]);
-
- my @xkb_layouts = (#- (map { (split)[0] } grep { /^! layout/ .. /^\s*$/ } cat_('/usr/lib/X11/xkb/rules/xfree86.lst')),
- all('/usr/lib/X11/xkb/symbols'),
- (map { (split)[2] } cat_('/usr/lib/X11/xkb/symbols.dir')));
- $err->("invalid xkb layout $_") foreach difference2([ map { keyboard2xkb($_) } keyboards() ], \@xkb_layouts);
-
- my @kmaps_available = map { if_(m|.*/(.*)\.bkmap|, $1) } `tar tfj share/keymaps.tar.bz2`;
- my @kmaps_wanted = map { keyboard2kmap($_) } keyboards();
- $err->("missing KEYTABLE $_ (either share/keymaps.tar.bz2 need updating or $_ is bad)") foreach difference2(\@kmaps_wanted, \@kmaps_available);
- $err->("unused KEYTABLE $_ (update share/keymaps.tar.bz2 using share/keymaps_generate)") foreach difference2(\@kmaps_available, \@kmaps_wanted);
-
- loadkeys_files($err);
-
- exit($not_ok);
-}
-
-1;
diff --git a/perl-install/lang.pm b/perl-install/lang.pm
deleted file mode 100644
index cf54cd29d..000000000
--- a/perl-install/lang.pm
+++ /dev/null
@@ -1,1363 +0,0 @@
-package lang; # $Id$
-
-use diagnostics;
-use strict;
-use common;
-use utf8;
-use log;
-
-#- key: lang name (locale name for some (~5) special cases needing
-#- extra distinctions)
-#- [0]: lang name in english
-#- [1]: transliterated locale name in the locale name (used for sorting)
-#- [2]: default locale name to use for that language if there is not
-#- an existing locale for the combination language+country choosen
-#- [3]: geographic groups that this language belongs to (for displaying
-#- in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,
-#- 4=Oceania&Pacific, 5=America (if you wonder, it's the order
-#- used in the olympic flag)
-#- [4]: special value for LANGUAGE variable (if different of the default
-#- of 'll_CC:ll_DD:ll' (ll_CC: locale (if exist) resulting of the
-#- combination of chosen lang (ll) and country (CC), ll_DD: the
-#- default locale shown here (field [2]) and ll: the language (the key))
-our %langs = (
-'af' => [ 'Afrikaans', 'Afrikaans', 'af_ZA', ' 3 ', 'iso-8859-1' ],
-'am' => [ 'Amharic', 'ZZ emarNa', 'am_ET', ' 3 ', 'utf_ethi' ],
-'ar' => [ 'Arabic', 'AA Arabic', 'ar_EG', ' 23 ', 'utf_ar' ],
-'as' => [ 'Assamese', 'ZZ Assamese', 'as_IN', ' 2 ', 'utf_beng' ],
-'az' => [ 'Azeri (Latin)', 'Azerbaycanca', 'az_AZ', ' 2 ', 'utf_az' ],
-'be' => [ 'Belarussian', 'Belaruskaya', 'be_BY', '1 ', 'utf_cyr1' ],
-#- ber_MA not yet done, using fr_FR locale instead
-'ber' => [ 'Berber', 'ZZ Tamazight', 'fr_FR', ' 3 ', 'utf_tfng', 'ber:fr' ],
-'bg' => [ 'Bulgarian', 'Blgarski', 'bg_BG', '1 ', 'cp1251' ],
-'bn' => [ 'Bengali', 'ZZ Bengali', 'bn_BD', ' 2 ', 'utf_beng' ],
-'br' => [ 'Breton', 'Brezhoneg', 'br_FR', '1 ', 'iso-8859-15', 'br:fr_FR:fr' ],
-'bs' => [ 'Bosnian', 'Bosanski', 'bs_BA', '1 ', 'iso-8859-2' ],
-'ca' => [ 'Catalan', 'Catala', 'ca_ES', '1 ', 'iso-8859-15', 'ca:es_ES:es' ],
-'cs' => [ 'Czech', 'Cestina', 'cs_CZ', '1 ', 'iso-8859-2' ],
-'cy' => [ 'Welsh', 'Cymraeg', 'cy_GB', '1 ', 'utf_lat8', 'cy:en_GB:en' ],
-'da' => [ 'Danish', 'Dansk', 'da_DK', '1 ', 'iso-8859-15' ],
-'de' => [ 'German', 'Deutsch', 'de_DE', '1 ', 'iso-8859-15' ],
-#-'dz' => [ 'Buthanese', 'ZZ Dzhonka', 'dz_BT', ' 2 ', 'unicode' ],
-'el' => [ 'Greek', 'Ellynika', 'el_GR', '1 ', 'iso-8859-7' ],
-'en_GB' => [ 'English', 'English', 'en_GB', '12345', 'iso-8859-15' ],
-'en_US' => [ 'English (American)', 'English (American)', 'en_US', ' 5', 'C' ],
-'en_IE' => [ 'English (Ireland)', 'English (Ireland)', 'en_IE', '1 ', 'iso-8859-15', 'en_IE:en_GB:en' ],
-'eo' => [ 'Esperanto', 'Esperanto', 'eo_XX', '12345', 'unicode' ],
-'es' => [ 'Spanish', 'Espanol', 'es_ES', '1 3 5', 'iso-8859-15' ],
-'et' => [ 'Estonian', 'Eesti', 'et_EE', '1 ', 'iso-8859-15' ],
-'eu' => [ 'Euskara (Basque)', 'Euskara', 'eu_ES', '1 ', 'utf_lat1' ],
-'fa' => [ 'Farsi (Iranian)', 'AA Farsi', 'fa_IR', ' 2 ', 'utf_ar' ],
-'fi' => [ 'Finnish (Suomi)', 'Suomi', 'fi_FI', '1 ', 'iso-8859-15' ],
-'fo' => [ 'Faroese', 'Foroyskt', 'fo_FO', '1 ', 'utf_lat1' ],
-'fr' => [ 'French', 'Francais', 'fr_FR', '1 345', 'iso-8859-15' ],
-'fur' => [ 'Furlan', 'Furlan', 'fur_IT', '1 ', 'utf_lat1', 'fur:it_IT:it' ],
-'fy' => [ 'Frisian', 'Frysk', 'fy_NL', '1 ', 'utf_lat1' ],
-'ga' => [ 'Gaelic (Irish)', 'Gaeilge', 'ga_IE', '1 ', 'utf_lat1', 'ga:en_IE:en_GB:en' ],
-#'gd' => [ 'Gaelic (Scottish)', 'Gaidhlig', 'gd_GB', '1 ', 'utf_lat8', 'gd:en_GB:en' ],
-'gl' => [ 'Galician', 'Galego', 'gl_ES', '1 ', 'iso-8859-15', 'gl:es_ES:es:pt:pt_BR' ],
-#- gn_PY not yet done, using es_PY locale instead
-'gn' => [ 'Guarani', 'Avane-e', 'es_PY', ' 5', 'utf_lat1', 'gn:es_PY:es' ],
-'gu' => [ 'Gujarati', 'ZZ Gujarati', 'gu_IN', ' 2 ', 'unicode' ],
-#'gv' => [ 'Gaelic (Manx)', 'Gaelg', 'gv_GB', '1 ', 'utf_lat8', 'gv:en_GB:en' ],
-'he' => [ 'Hebrew', 'AA Ivrit', 'he_IL', ' 2 ', 'utf_he' ],
-'hi' => [ 'Hindi', 'ZZ Hindi', 'hi_IN', ' 2 ', 'utf_deva' ],
-'hr' => [ 'Croatian', 'Hrvatski', 'hr_HR', '1 ', 'iso-8859-2' ],
-'hu' => [ 'Hungarian', 'Magyar', 'hu_HU', '1 ', 'iso-8859-2' ],
-'hy' => [ 'Armenian', 'ZZ Armenian', 'hy_AM', ' 2 ', 'utf_armn' ],
-# locale not done yet
-#'ia' => [ 'Interlingua', 'Interlingua', 'ia_XX', '1 5', 'utf_lat1' ],
-'id' => [ 'Indonesian', 'Bahasa Indonesia', 'id_ID', ' 2 ', 'utf_lat1' ],
-'is' => [ 'Icelandic', 'Islenska', 'is_IS', '1 ', 'iso-8859-1' ],
-'it' => [ 'Italian', 'Italiano', 'it_IT', '1 ', 'iso-8859-15' ],
-'iu' => [ 'Inuktitut', 'ZZ Inuktitut', 'iu_CA', ' 5', 'utf_iu' ],
-'ja' => [ 'Japanese', 'ZZ Nihongo', 'ja_JP', ' 2 ', 'jisx0208' ],
-'ka' => [ 'Georgian', 'ZZ Georgian', 'ka_GE', ' 2 ', 'utf_geor' ],
-'kl' => [ 'Greenlandic (inuit)', 'Kalaallisut', 'kl_GL', ' 5', 'utf_lat1' ],
-'km' => [ 'Khmer', 'ZZ Khmer', 'km_KH', ' 2 ', 'utf_khmr' ],
-'kn' => [ 'Kannada', 'ZZ Kannada', 'kn_IN', ' 2 ', 'utf_knda' ],
-'ko' => [ 'Korean', 'ZZ Korea', 'ko_KR', ' 2 ', 'ksc5601' ],
-'ku' => [ 'Kurdish', 'Kurdi', 'ku_TR', ' 2 ', 'utf_lat5' ],
-#-'kw' => [ 'Cornish', 'Kernewek', 'kw_GB', '1 ', 'utf_lat8', 'kw:en_GB:en' ],
-'ky' => [ 'Kyrgyz', 'Kyrgyz', 'ky_KG', ' 2 ', 'utf_cyr2' ],
-#- lb_LU not yet done, using de_LU locale instead
-'lb' => [ 'Luxembourgish', 'Letzebuergesch', 'de_LU', '1 ', 'utf_lat1', 'lb:de_LU' ],
-'li' => [ 'Limbourgish', 'Limburgs', 'li_NL', '1 ', 'utf_lat1' ],
-'lo' => [ 'Laotian', 'Laotian', 'lo_LA', ' 2 ', 'utf_laoo' ],
-'lt' => [ 'Lithuanian', 'Lietuviskai', 'lt_LT', '1 ', 'iso-8859-13' ],
-#- ltg_LV locale not done yet, using lv_LV for now
-#- "ltg" is not a standard lang code, ISO-639 code was refused;
-#- LTG_LV should be used instead (uppercase is for non-standard
-#- langcodes, as defined by locale naming standard
-'ltg' => [ 'Latgalian', 'Latgalisu', 'lv_LV', '1 ', 'iso-8859-13', 'ltg:LTG:lv' ],
-'lv' => [ 'Latvian', 'Latviesu', 'lv_LV', '1 ', 'iso-8859-13' ],
-'mi' => [ 'Maori', 'Maori', 'mi_NZ', ' 4 ', 'unicode' ],
-'mk' => [ 'Macedonian', 'Makedonski', 'mk_MK', '1 ', 'utf_cyr1' ],
-'ml' => [ 'Malayalam', 'ZZ Malayalam', 'ml_IN', ' 2 ', 'utf_mlym' ],
-'mn' => [ 'Mongolian', 'Mongol', 'mn_MN', ' 2 ', 'utf_cyr2' ],
-'mr' => [ 'Marathi', 'ZZ Marathi', 'mr_IN', ' 2 ', 'utf_deva' ],
-'ms' => [ 'Malay', 'Bahasa Melayu', 'ms_MY', ' 2 ', 'utf_lat1' ],
-'mt' => [ 'Maltese', 'Maltin', 'mt_MT', '1 3 ', 'unicode' ],
-'nb' => [ 'Norwegian Bokmaal', 'Norsk, Bokmal', 'nb_NO', '1 ', 'iso-8859-1', 'nb:no' ],
-'nds' => [ 'Low Saxon', 'Platduutsch', 'nds_DE', '1 ', 'utf_lat1', 'nds_DE:nds' ],
-'ne' => [ 'Nepali', 'ZZ Nepali', 'ne_NP', ' 2 ', 'unicode' ],
-'nl' => [ 'Dutch', 'Nederlands', 'nl_NL', '1 ', 'iso-8859-15' ],
-'nn' => [ 'Norwegian Nynorsk', 'Norsk, Nynorsk', 'nn_NO', '1 ', 'iso-8859-1', 'nn:no@nynorsk:no_NY:no:nb' ],
-'oc' => [ 'Occitan', 'Occitan', 'oc_FR', '1 ', 'utf_lat1', 'oc:fr_FR:fr' ],
-'pa_IN' => [ 'Punjabi (gurmukhi)', 'ZZ Punjabi', 'pa_IN', ' 2 ', 'utf_guru' ],
-#- 'tl' in priority position for now, as 'fil' is not much used.
-#- Monolingual window managers will not see the menus otherwise
-#- "ph_PH" should change to "fil_PH" in the future ("ph" is not
-#- standard lang code, "fil" is standard)
-'ph' => [ 'Filipino', 'Filipino', 'ph_PH', ' 2 ', 'utf_lat1', 'tl:fil' ],
-'pl' => [ 'Polish', 'Polski', 'pl_PL', '1 ', 'iso-8859-2' ],
-'pt' => [ 'Portuguese', 'Portugues', 'pt_PT', '1 3 ', 'iso-8859-15', 'pt_PT:pt:pt_BR' ],
-'pt_BR' => [ 'Portuguese Brazil', 'Portugues do Brasil', 'pt_BR', ' 5', 'iso-8859-1', 'pt_BR:pt_PT:pt' ],
-#- qu_PE not yet done, using es_PE locale instead
-'qu' => [ 'Quichua', 'Runa Simi', 'es_PE', ' 5', 'utf_lat1', 'qu:es_PE:es' ],
-'ro' => [ 'Romanian', 'Romana', 'ro_RO', '1 ', 'iso-8859-2' ],
-'ru' => [ 'Russian', 'Russkij', 'ru_RU', '12 ', 'koi8-u' ],
-'sc' => [ 'Sardinian', 'Sardu', 'sc_IT', '1 ', 'utf_lat1', 'sc:it_IT:it' ],
-'se' => [ 'Saami', 'Samegiella', 'se_NO', '1 ', 'unicode' ],
-'sk' => [ 'Slovak', 'Slovencina', 'sk_SK', '1 ', 'iso-8859-2' ],
-'sl' => [ 'Slovenian', 'Slovenscina', 'sl_SI', '1 ', 'iso-8859-2' ],
-'sq' => [ 'Albanian', 'Shqip', 'sq_AL', '1 ', 'iso-8859-1' ],
-'sr' => [ 'Serbian Cyrillic', 'Srpska', 'sr_CS', '1 ', 'utf_cyr1', 'sp:sr' ],
-#- "sh" comes first, because otherwise, due to the way glibc does language
-#- fallback, if "sr@Latn" is not there but a "sr" (whichs uses cyrillic)
-#- is there, "sh" will never be used.
-'sr@Latn' => [ 'Serbian Latin', 'Srpska', 'sr_CS', '1 ', 'unicode', 'sh:sr@Latn' ],
-#- ss_ZA not yet done, using en_ZA locale instead
-'ss' => [ 'Swati', 'SiSwati', 'en_ZA', ' 3 ', 'utf_lat1', 'ss:en_ZA' ],
-'st' => [ 'Sotho', 'Sesotho', 'st_ZA', ' 3 ', 'utf_lat1', 'st:nso:en_ZA' ],
-'sv' => [ 'Swedish', 'Svenska', 'sv_SE', '1 ', 'iso-8859-1' ],
-'ta' => [ 'Tamil', 'ZZ Tamil', 'ta_IN', ' 2 ', 'utf_taml' ],
-'te' => [ 'Telugu', 'ZZ Telugu', 'te_IN', ' 2 ', 'unicode' ],
-'tg' => [ 'Tajik', 'Tojiki', 'tg_TJ', ' 2 ', 'utf_cyr2' ],
-'th' => [ 'Thai', 'ZZ Thai', 'th_TH', ' 2 ', 'tis620' ],
-'tk' => [ 'Turkmen', 'Turkmence', 'tk_TM', ' 2 ', 'utf_az' ],
-'tr' => [ 'Turkish', 'Turkce', 'tr_TR', '12 ', 'iso-8859-9' ],
-'tt' => [ 'Tatar', 'Tatarca', 'tt_RU', ' 2 ', 'utf_lat5' ],
-#- ug_CN locale not done yet, using ar_EG locale instead
-'ug' => [ 'Uyghur', 'AA Uyghur', 'ar_EG', ' 2 ', 'utf_ar', 'ug' ],
-'uk' => [ 'Ukrainian', 'Ukrayinska', 'uk_UA', '1 ', 'koi8-u' ],
-'ur' => [ 'Urdu', 'AA Urdu', 'ur_PK', ' 2 ', 'utf_ar' ],
-'uz@Latn' => [ 'Uzbek (latin)', 'Ozbekcha', 'uz_UZ', ' 2 ', 'utf_cyr2', 'uz@Latn:uz' ],
-'uz' => [ 'Uzbek (cyrillic)', 'Ozbekcha', 'uz_UZ', ' 2 ', 'utf_cyr2', 'uz@Cyrl:uz' ],
-#- ve_ZA not yet done, using en_ZA locale instead
-'ve' => [ 'Venda', 'Venda', 'en_ZA', ' 3 ', 'utf_lat1', 've:ven:en_ZA' ],
-'vi' => [ 'Vietnamese', 'Tieng Viet', 'vi_VN', ' 2 ', 'utf_vi' ],
-'wa' => [ 'Walon', 'Walon', 'wa_BE', '1 ', 'utf_lat1', 'wa:fr_BE:fr' ],
-#- locale not done yet
-#'wen' => [ 'Sorbian', 'XX Sorbian', 'wen_XX', '1 ', 'utf_lat1' ],
-'xh' => [ 'Xhosa', 'IsiXhosa', 'xh_ZA', ' 3 ', 'utf_lat1', 'xh:en_ZA' ],
-'yi' => [ 'Yiddish', 'AA Yidish', 'yi_US', '1 ', 'utf_he' ],
-'zh_CN' => [ 'Chinese Simplified', 'ZZ ZhongWen', 'zh_CN', ' 2 ', 'gb2312', 'zh_CN.GBK:zh_CN.GB2312:zh_CN:zh' ],
-'zh_TW' => [ 'Chinese Traditional', 'ZZ ZhongWen', 'zh_TW', ' 2 ', 'Big5', 'zh_TW.Big5:zh_TW:zh_HK:zh' ],
-'zu' => [ 'Zulu', 'IsiZulu', 'zu_ZA', ' 3 ', 'utf_lat1', 'xh:en_ZA' ],
-);
-sub l2name { exists $langs{$_[0]} && $langs{$_[0]}[0] }
-sub l2transliterated { exists $langs{$_[0]} && $langs{$_[0]}[1] }
-sub l2locale { exists $langs{$_[0]} && $langs{$_[0]}[2] }
-sub l2location {
- my %geo = (1 => 'Europe', 2 => 'Asia', 3 => 'Africa', 4 => 'Oceania/Pacific', 5 => 'America');
- map { if_($langs{$_[0]}[3] =~ $_, $geo{$_}) } 1..5;
-}
-sub l2charset { exists $langs{$_[0]} && $langs{$_[0]}[4] }
-sub l2language { exists $langs{$_[0]} && $langs{$_[0]}[5] }
-sub list_langs {
- my (%options) = @_;
- my @l = keys %langs;
- $options{exclude_non_installed} ? grep { -e "/usr/share/locale/" . l2locale($_) . "/LC_CTYPE" } @l : @l;
-}
-
-sub text_direction_rtl() {
-#-PO: the string "default:LTR" can be translated *ONLY* as "default:LTR"
-#-PO: or as "default:RTL", depending if your language is written from
-#-PO: left to right, or from right to left; any other string is wrong.
- N("default:LTR") eq "default:RTL";
-}
-
-
-#- key: country name (that should be YY in xx_YY locale)
-#- [0]: country name in natural language
-#- [1]: default locale for that country
-#- [2]: geographic groups that this country belongs to (for displaying
-#- in the menu grouped in smaller lists), 1=Europe, 2=Asia, 3=Africa,
-#- 4=Oceania&Pacific, 5=America (if you wonder, it's the order
-#- used in the olympic flag)
-#-
-#- Note: for countries for which a glibc locale do not exist (yet) I tried to
-#- put a locale that makes sense; and a '#' at the end of the line to show
-#- the locale is not the "correct" one. 'en_US' is used when no good choice
-#- is available.
-my %countries = (
-'AD' => [ N_("Andorra"), 'ca_ES', '1' ], #
-'AE' => [ N_("United Arab Emirates"), 'ar_AE', '2' ],
-'AF' => [ N_("Afghanistan"), 'en_US', '2' ], #
-'AG' => [ N_("Antigua and Barbuda"), 'en_US', '5' ], #
-'AI' => [ N_("Anguilla"), 'en_US', '5' ], #
-'AL' => [ N_("Albania"), 'sq_AL', '1' ],
-'AM' => [ N_("Armenia"), 'hy_AM', '2' ],
-'AN' => [ N_("Netherlands Antilles"), 'en_US', '5' ], #
-'AO' => [ N_("Angola"), 'pt_PT', '3' ], #
-'AQ' => [ N_("Antarctica"), 'en_US', '4' ], #
-'AR' => [ N_("Argentina"), 'es_AR', '5' ],
-'AS' => [ N_("American Samoa"), 'en_US', '4' ], #
-'AT' => [ N_("Austria"), 'de_AT', '1' ],
-'AU' => [ N_("Australia"), 'en_AU', '4' ],
-'AW' => [ N_("Aruba"), 'en_US', '5' ], #
-'AZ' => [ N_("Azerbaijan"), 'az_AZ', '1' ],
-'BA' => [ N_("Bosnia and Herzegovina"), 'bs_BA', '1' ],
-'BB' => [ N_("Barbados"), 'en_US', '5' ], #
-'BD' => [ N_("Bangladesh"), 'bn_BD', '2' ],
-'BE' => [ N_("Belgium"), 'fr_BE', '1' ],
-'BF' => [ N_("Burkina Faso"), 'en_US', '3' ], #
-'BG' => [ N_("Bulgaria"), 'bg_BG', '1' ],
-'BH' => [ N_("Bahrain"), 'ar_BH', '2' ],
-'BI' => [ N_("Burundi"), 'en_US', '3' ], #
-'BJ' => [ N_("Benin"), 'fr_FR', '3' ], #
-'BM' => [ N_("Bermuda"), 'en_US', '5' ], #
-'BN' => [ N_("Brunei Darussalam"), 'ar_EG', '2' ], #
-'BO' => [ N_("Bolivia"), 'es_BO', '5' ],
-'BR' => [ N_("Brazil"), 'pt_BR', '5' ],
-'BS' => [ N_("Bahamas"), 'en_US', '5' ], #
-'BT' => [ N_("Bhutan"), 'en_IN', '2' ], # dz_BT
-'BV' => [ N_("Bouvet Island"), 'en_US', '3' ], #
-'BW' => [ N_("Botswana"), 'en_BW', '3' ],
-'BY' => [ N_("Belarus"), 'be_BY', '1' ],
-'BZ' => [ N_("Belize"), 'en_US', '5' ], #
-'CA' => [ N_("Canada"), 'en_CA', '5' ],
-'CC' => [ N_("Cocos (Keeling) Islands"), 'en_US', '4' ], #
-'CD' => [ N_("Congo (Kinshasa)"), 'fr_FR', '3' ], #
-'CF' => [ N_("Central African Republic"), 'fr_FR', '3' ], #
-'CG' => [ N_("Congo (Brazzaville)"), 'fr_FR', '3' ], #
-'CH' => [ N_("Switzerland"), 'de_CH', '1' ],
-'CI' => [ N_("Cote d'Ivoire"), 'fr_FR', '3' ], #
-'CK' => [ N_("Cook Islands"), 'en_US', '4' ], #
-'CL' => [ N_("Chile"), 'es_CL', '5' ],
-'CM' => [ N_("Cameroon"), 'fr_FR', '3' ], #
-'CN' => [ N_("China"), 'zh_CN', '2' ],
-'CO' => [ N_("Colombia"), 'es_CO', '5' ],
-'CR' => [ N_("Costa Rica"), 'es_CR', '5' ],
-'CS' => [ N_("Serbia & Montenegro"), 'sr_CS', '1' ],
-'CU' => [ N_("Cuba"), 'es_DO', '5' ], #
-'CV' => [ N_("Cape Verde"), 'pt_PT', '3' ], #
-'CX' => [ N_("Christmas Island"), 'en_US', '4' ], #
-'CY' => [ N_("Cyprus"), 'en_US', '1' ], #
-'CZ' => [ N_("Czech Republic"), 'cs_CZ', '2' ],
-'DE' => [ N_("Germany"), 'de_DE', '1' ],
-'DJ' => [ N_("Djibouti"), 'en_US', '3' ], #
-'DK' => [ N_("Denmark"), 'da_DK', '1' ],
-'DM' => [ N_("Dominica"), 'en_US', '5' ], #
-'DO' => [ N_("Dominican Republic"), 'es_DO', '5' ],
-'DZ' => [ N_("Algeria"), 'ar_DZ', '3' ],
-'EC' => [ N_("Ecuador"), 'es_EC', '5' ],
-'EE' => [ N_("Estonia"), 'et_EE', '1' ],
-'EG' => [ N_("Egypt"), 'ar_EG', '3' ],
-'EH' => [ N_("Western Sahara"), 'ar_MA', '3' ], #
-'ER' => [ N_("Eritrea"), 'ti_ER', '3' ],
-'ES' => [ N_("Spain"), 'es_ES', '1' ],
-'ET' => [ N_("Ethiopia"), 'am_ET', '3' ],
-'FI' => [ N_("Finland"), 'fi_FI', '1' ],
-'FJ' => [ N_("Fiji"), 'en_US', '4' ], #
-'FK' => [ N_("Falkland Islands (Malvinas)"), 'en_GB', '5' ], #
-'FM' => [ N_("Micronesia"), 'en_US', '4' ], #
-'FO' => [ N_("Faroe Islands"), 'fo_FO', '1' ],
-'FR' => [ N_("France"), 'fr_FR', '1' ],
-'GA' => [ N_("Gabon"), 'fr_FR', '3' ], #
-'GB' => [ N_("United Kingdom"), 'en_GB', '1' ],
-'GD' => [ N_("Grenada"), 'en_US', '5' ], #
-'GE' => [ N_("Georgia"), 'ka_GE', '2' ],
-'GF' => [ N_("French Guiana"), 'fr_FR', '5' ], #
-'GH' => [ N_("Ghana"), 'en_GB', '3' ], #
-'GI' => [ N_("Gibraltar"), 'en_GB', '1' ], #
-'GL' => [ N_("Greenland"), 'kl_GL', '5' ],
-'GM' => [ N_("Gambia"), 'en_US', '3' ], #
-'GN' => [ N_("Guinea"), 'en_US', '3' ], #
-'GP' => [ N_("Guadeloupe"), 'fr_FR', '5' ], #
-'GQ' => [ N_("Equatorial Guinea"), 'en_US', '3' ], #
-'GR' => [ N_("Greece"), 'el_GR', '1' ],
-'GS' => [ N_("South Georgia and the South Sandwich Islands"), 'en_US', '4' ], #
-'GT' => [ N_("Guatemala"), 'es_GT', '5' ],
-'GU' => [ N_("Guam"), 'en_US', '4' ], #
-'GW' => [ N_("Guinea-Bissau"), 'pt_PT', '3' ], #
-'GY' => [ N_("Guyana"), 'en_US', '5' ], #
-'HK' => [ N_("Hong Kong SAR (China)"), 'zh_HK', '2' ],
-'HM' => [ N_("Heard and McDonald Islands"), 'en_US', '4' ], #
-'HN' => [ N_("Honduras"), 'es_HN', '5' ],
-'HR' => [ N_("Croatia"), 'hr_HR', '1' ],
-'HT' => [ N_("Haiti"), 'fr_FR', '5' ], #
-'HU' => [ N_("Hungary"), 'hu_HU', '1' ],
-'ID' => [ N_("Indonesia"), 'id_ID', '2' ],
-'IE' => [ N_("Ireland"), 'en_IE', '1' ],
-'IL' => [ N_("Israel"), 'he_IL', '2' ],
-'IN' => [ N_("India"), 'hi_IN', '2' ],
-'IO' => [ N_("British Indian Ocean Territory"), 'en_GB', '2' ], #
-'IQ' => [ N_("Iraq"), 'ar_IQ', '2' ],
-'IR' => [ N_("Iran"), 'fa_IR', '2' ],
-'IS' => [ N_("Iceland"), 'is_IS', '1' ],
-'IT' => [ N_("Italy"), 'it_IT', '1' ],
-'JM' => [ N_("Jamaica"), 'en_US', '5' ], #
-'JO' => [ N_("Jordan"), 'ar_JO', '2' ],
-'JP' => [ N_("Japan"), 'ja_JP', '2' ],
-'KE' => [ N_("Kenya"), 'en_ZW', '3' ], #
-'KG' => [ N_("Kyrgyzstan"), 'ky_KG', '2' ],
-'KH' => [ N_("Cambodia"), 'km_KH', '2' ],
-'KI' => [ N_("Kiribati"), 'en_US', '3' ], #
-'KM' => [ N_("Comoros"), 'en_US', '2' ], #
-'KN' => [ N_("Saint Kitts and Nevis"), 'en_US', '5' ], #
-'KP' => [ N_("Korea (North)"), 'ko_KR', '2' ], #
-'KR' => [ N_("Korea"), 'ko_KR', '2' ],
-'KW' => [ N_("Kuwait"), 'ar_KW', '2' ],
-'KY' => [ N_("Cayman Islands"), 'en_US', '5' ], #
-'KZ' => [ N_("Kazakhstan"), 'ru_RU', '2' ], #
-'LA' => [ N_("Laos"), 'lo_LA', '2' ],
-'LB' => [ N_("Lebanon"), 'ar_LB', '2' ],
-'LC' => [ N_("Saint Lucia"), 'en_US', '5' ], #
-'LI' => [ N_("Liechtenstein"), 'de_CH', '1' ], #
-'LK' => [ N_("Sri Lanka"), 'en_IN', '2' ], #
-'LR' => [ N_("Liberia"), 'en_US', '3' ], #
-'LS' => [ N_("Lesotho"), 'en_BW', '3' ], #
-'LT' => [ N_("Lithuania"), 'lt_LT', '1' ],
-'LU' => [ N_("Luxembourg"), 'de_LU', '1' ], # lb_LU
-'LV' => [ N_("Latvia"), 'lv_LV', '1' ],
-'LY' => [ N_("Libya"), 'ar_LY', '3' ],
-'MA' => [ N_("Morocco"), 'ar_MA', '3' ],
-'MC' => [ N_("Monaco"), 'fr_FR', '1' ], #
-'MD' => [ N_("Moldova"), 'ro_RO', '1' ], #
-'MG' => [ N_("Madagascar"), 'fr_FR', '3' ], #
-'MH' => [ N_("Marshall Islands"), 'en_US', '4' ], #
-'MK' => [ N_("Macedonia"), 'mk_MK', '1' ],
-'ML' => [ N_("Mali"), 'en_US', '3' ], #
-'MM' => [ N_("Myanmar"), 'en_US', '2' ], #
-'MN' => [ N_("Mongolia"), 'mn_MN', '2' ],
-'MP' => [ N_("Northern Mariana Islands"), 'en_US', '2' ], #
-'MQ' => [ N_("Martinique"), 'fr_FR', '5' ], #
-'MR' => [ N_("Mauritania"), 'en_US', '3' ], #
-'MS' => [ N_("Montserrat"), 'en_US', '5' ], #
-'MT' => [ N_("Malta"), 'mt_MT', '1' ],
-'MU' => [ N_("Mauritius"), 'en_US', '3' ], #
-'MV' => [ N_("Maldives"), 'en_US', '4' ], #
-'MW' => [ N_("Malawi"), 'en_US', '3' ], #
-'MX' => [ N_("Mexico"), 'es_MX', '5' ],
-'MY' => [ N_("Malaysia"), 'ms_MY', '2' ],
-'MZ' => [ N_("Mozambique"), 'pt_PT', '3' ], #
-'NA' => [ N_("Namibia"), 'en_US', '3' ], #
-'NC' => [ N_("New Caledonia"), 'fr_FR', '4' ], #
-'NE' => [ N_("Niger"), 'en_US', '3' ], #
-'NF' => [ N_("Norfolk Island"), 'en_GB', '4' ], #
-'NG' => [ N_("Nigeria"), 'en_US', '3' ], #
-'NI' => [ N_("Nicaragua"), 'es_NI', '5' ],
-'NL' => [ N_("Netherlands"), 'nl_NL', '1' ],
-'NO' => [ N_("Norway"), 'nb_NO', '1' ],
-'NP' => [ N_("Nepal"), 'ne_NP', '2' ],
-'NR' => [ N_("Nauru"), 'en_US', '4' ], #
-'NU' => [ N_("Niue"), 'en_US', '4' ], #
-'NZ' => [ N_("New Zealand"), 'en_NZ', '4' ],
-'OM' => [ N_("Oman"), 'ar_OM', '2' ],
-'PA' => [ N_("Panama"), 'es_PA', '5' ],
-'PE' => [ N_("Peru"), 'es_PE', '5' ],
-'PF' => [ N_("French Polynesia"), 'fr_FR', '4' ], #
-'PG' => [ N_("Papua New Guinea"), 'en_NZ', '4' ], #
-'PH' => [ N_("Philippines"), 'ph_PH', '2' ],
-'PK' => [ N_("Pakistan"), 'ur_PK', '2' ],
-'PL' => [ N_("Poland"), 'pl_PL', '1' ],
-'PM' => [ N_("Saint Pierre and Miquelon"), 'fr_CA', '5' ], #
-'PN' => [ N_("Pitcairn"), 'en_US', '4' ], #
-'PR' => [ N_("Puerto Rico"), 'es_PR', '5' ],
-'PS' => [ N_("Palestine"), 'ar_JO', '2' ], #
-'PT' => [ N_("Portugal"), 'pt_PT', '1' ],
-'PY' => [ N_("Paraguay"), 'es_PY', '5' ],
-'PW' => [ N_("Palau"), 'en_US', '2' ], #
-'QA' => [ N_("Qatar"), 'ar_QA', '2' ],
-'RE' => [ N_("Reunion"), 'fr_FR', '2' ], #
-'RO' => [ N_("Romania"), 'ro_RO', '1' ],
-'RU' => [ N_("Russia"), 'ru_RU', '1' ],
-'RW' => [ N_("Rwanda"), 'fr_FR', '3' ], # rw_RW
-'SA' => [ N_("Saudi Arabia"), 'ar_SA', '2' ],
-'SB' => [ N_("Solomon Islands"), 'en_US', '4' ], #
-'SC' => [ N_("Seychelles"), 'en_US', '4' ], #
-'SD' => [ N_("Sudan"), 'ar_SD', '5' ],
-'SE' => [ N_("Sweden"), 'sv_SE', '1' ],
-'SG' => [ N_("Singapore"), 'en_SG', '2' ],
-'SH' => [ N_("Saint Helena"), 'en_GB', '5' ], #
-'SI' => [ N_("Slovenia"), 'sl_SI', '1' ],
-'SJ' => [ N_("Svalbard and Jan Mayen Islands"), 'en_US', '1' ], #
-'SK' => [ N_("Slovakia"), 'sk_SK', '1' ],
-'SL' => [ N_("Sierra Leone"), 'en_US', '3' ], #
-'SM' => [ N_("San Marino"), 'it_IT', '1' ], #
-'SN' => [ N_("Senegal"), 'fr_FR', '3' ], #
-'SO' => [ N_("Somalia"), 'en_US', '3' ], # so_SO
-'SR' => [ N_("Suriname"), 'nl_NL', '5' ], #
-'ST' => [ N_("Sao Tome and Principe"), 'en_US', '5' ], #
-'SV' => [ N_("El Salvador"), 'es_SV', '5' ],
-'SY' => [ N_("Syria"), 'ar_SY', '2' ],
-'SZ' => [ N_("Swaziland"), 'en_BW', '3' ], #
-'TC' => [ N_("Turks and Caicos Islands"), 'en_US', '5' ], #
-'TD' => [ N_("Chad"), 'en_US', '3' ], #
-'TF' => [ N_("French Southern Territories"), 'fr_FR', '4' ], #
-'TG' => [ N_("Togo"), 'fr_FR', '3' ], #
-'TH' => [ N_("Thailand"), 'th_TH', '2' ],
-'TJ' => [ N_("Tajikistan"), 'tg_TJ', '2' ],
-'TK' => [ N_("Tokelau"), 'en_US', '4' ], #
-'TL' => [ N_("East Timor"), 'pt_PT', '4' ], #
-'TM' => [ N_("Turkmenistan"), 'tk_TM', '2' ],
-'TN' => [ N_("Tunisia"), 'ar_TN', '5' ],
-'TO' => [ N_("Tonga"), 'en_US', '3' ], #
-'TR' => [ N_("Turkey"), 'tr_TR', '2' ],
-'TT' => [ N_("Trinidad and Tobago"), 'en_US', '5' ], #
-'TV' => [ N_("Tuvalu"), 'en_US', '4' ], #
-'TW' => [ N_("Taiwan"), 'zh_TW', '2' ],
-'TZ' => [ N_("Tanzania"), 'en_US', '3' ], #
-'UA' => [ N_("Ukraine"), 'uk_UA', '1' ],
-'UG' => [ N_("Uganda"), 'en_US', '3' ], # lug_UG
-'UM' => [ N_("United States Minor Outlying Islands"), 'en_US', '5' ], #
-'US' => [ N_("United States"), 'en_US', '5' ],
-'UY' => [ N_("Uruguay"), 'es_UY', '5' ],
-'UZ' => [ N_("Uzbekistan"), 'uz_UZ', '2' ],
-'VA' => [ N_("Vatican"), 'it_IT', '1' ], #
-'VC' => [ N_("Saint Vincent and the Grenadines"), 'en_US', '5' ],
-'VE' => [ N_("Venezuela"), 'es_VE', '5' ],
-'VG' => [ N_("Virgin Islands (British)"), 'en_GB', '5' ], #
-'VI' => [ N_("Virgin Islands (U.S.)"), 'en_US', '5' ], #
-'VN' => [ N_("Vietnam"), 'vi_VN', '2' ],
-'VU' => [ N_("Vanuatu"), 'en_US', '4' ], #
-'WF' => [ N_("Wallis and Futuna"), 'fr_FR', '4' ], #
-'WS' => [ N_("Samoa"), 'en_US', '4' ], #
-'YE' => [ N_("Yemen"), 'ar_YE', '2' ],
-'YT' => [ N_("Mayotte"), 'fr_FR', '3' ], #
-'ZA' => [ N_("South Africa"), 'en_ZA', '5' ],
-'ZM' => [ N_("Zambia"), 'en_US', '3' ], #
-'ZW' => [ N_("Zimbabwe"), 'en_ZW', '5' ],
-);
-sub c2name { exists $countries{$_[0]} && translate($countries{$_[0]}[0]) }
-sub c2locale { exists $countries{$_[0]} && $countries{$_[0]}[1] }
-sub list_countries {
- my (%options) = @_;
- my @l = keys %countries;
- $options{exclude_non_installed} ? grep { -e "/usr/share/locale/" . c2locale($_) . "/LC_CTYPE" } @l : @l;
-}
-
-#- this list is built with the following command on the compile cluster:
-#- rpm -qpl /RPMS/locales-* | grep LC_CTYPE | cut -d'/' -f5 | grep '_' | grep -v '\.' | sort | tr '\n' ' ' ; echo
-our @locales = qw(af_ZA am_ET an_ES ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as_IN az_AZ be_BY bg_BG bn_BD bn_IN br_FR bs_BA ca_ES cs_CZ cy_GB da_DK de_AT de_BE de_CH de_DE de_LU el_GR en_AU en_BE en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NZ en_PH en_SG en_US en_ZA en_ZW eo_XX es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et_EE eu_ES fa_IR fi_FI fo_FO fr_BE fr_CA fr_CH fr_FR fr_LU fur_IT fy_DE fy_NL ga_IE gd_GB gez_ER gez_ER@abegede gez_ET gez_ET@abegede gl_ES gu_IN gv_GB he_IL hi_IN hr_HR hu_HU hy_AM id_ID ik_CA is_IS it_CH it_IT iu_CA ja_JP ka_GE kl_GL km_KH kn_IN ko_KR ku_TR kw_GB ky_KG li_BE li_NL lo_LA lt_LT lv_LV mi_NZ mk_MK ml_IN mn_MN mr_IN ms_MY mt_MT nb_NO nds_DE nds_DE@traditional nds_NL ne_NP nl_BE nl_NL nn_NO no_NO oc_FR om_ET om_KE pa_IN ph_PH pl_PL pt_BR pt_PT ro_RO ru_RU ru_UA sc_IT se_NO sid_ET sk_SK sl_SI sq_AL sr_CS sr_CS@Latn sr_YU sr_YU@Latn st_ZA sv_FI sv_SE sw_XX ta_IN te_IN tg_TJ th_TH ti_ER ti_ET tig_ER tk_TM tl_PH tr_TR tt_RU uk_UA ur_PK uz_UZ uz_UZ@Cyrl uz_UZ@Latn vi_VN wa_BE xh_ZA yi_US zh_CN zh_HK zh_SG zh_TW zu_ZA);
-
-sub standard_locale {
- my ($lang, $country, $prefer_lang) = @_;
- member("${lang}_${country}", @locales) and return "${lang}_${country}";
- $prefer_lang && member($lang, @locales) and return $lang;
- my $main_locale = locale_to_main_locale($lang);
- if ($main_locale ne $lang) {
- standard_locale($main_locale, $country, $prefer_lang);
- }
- '';
-}
-
-sub fix_variant {
- my ($locale) = @_;
- #- uz@Cyrl_UZ -> uz_UZ@Cyrl
- $locale =~ s/(.*)(\@\w+)(_.*)/$1$3$2/;
- $locale;
-}
-
-sub analyse_locale_name {
- my ($locale) = @_;
- $locale =~ /^(.*?) (?:_(.*?))? (?:\.(.*?))? (?:\@(.*?))? $/x &&
- { main => $1, country => $2, charset => $3, variant => $4 };
-}
-
-sub locale_to_main_locale {
- my ($locale) = @_;
- lc(analyse_locale_name($locale)->{main});
-}
-
-sub getlocale_for_lang {
- my ($lang, $country, $o_utf8) = @_;
- fix_variant((standard_locale($lang, $country, 'prefer_lang') || l2locale($lang)) . ($o_utf8 ? '.UTF-8' : ''));
-}
-
-sub getlocale_for_country {
- my ($lang, $country, $o_utf8) = @_;
- fix_variant((standard_locale($lang, $country, '') || c2locale($country)) . ($o_utf8 ? '.UTF-8' : ''));
-}
-
-sub getLANGUAGE {
- my ($lang, $o_country, $o_utf8) = @_;
- l2language($lang) || join(':', uniq(getlocale_for_lang($lang, $o_country, $o_utf8),
- $lang,
- locale_to_main_locale($lang)));
-}
-
-#-------------------------------------------------------------
-#
-# IM configuration hash tables
-#
-# in order to configure an IM, one has to:
-# - put generic configuration in %IM_config
-# - put locale specific configuration in %IM_XIM_program
-
-
-# This set XIM_PROGRAM field for IM that needs a different value
-# depending on locale:
-my %IM_XIM_program =
- (
- chinput => {
- 'zh_CN' => 'chinput -gb',
- 'zh_CN.UTF-8' => 'chinput -gb',
- 'zh_HK' => 'chinput -big5',
- 'zh_HK.UTF-8' => 'chinput -big5',
- 'en_SG' => 'chinput -gb',
- 'en_SG.UTF-8' => 'chinput -gb',
- 'zh_TW' => 'chinput -big5',
- 'zh_TW.UTF-8' => 'chinput -big5',
- },
- xcin => {
- 'zh_TW' => 'xcin'
- },
- );
-
-# This set generic IM fields.
-#
-#- XMODIFIERS is the environnement variable used by the X11 XIM protocol
-#- it is of the form XIMODIFIERS="@im=foo"
-#- XIM is used by some programs, it usually is the like XIMODIFIERS
-#- with the "@im=" part stripped
-#- GTK_IM_MODULE the module to use for Gtk programs ("xim" to use an X11
-#- XIM server; or a a native gtk module if exists)
-#- XIM_PROGRAM the program to run (usually the same as XIM value, but
-#- in some cases different, particularly if parameters are needed;
-#- If it is locale dependent it should be defined in %IM_XIM_program)
-my %IM_config =
- (
- ami => {
- XIM => 'Ami',
- #- NOTE: there are several possible versions of ami, for the different
- #- desktops (kde, gnome, etc). So XIM_PROGRAM is not defined; it will
- #- be the xinitrc script, XIM section, that will choose the right one
- #- XIM_PROGRAM => 'ami',
- XMODIFIERS => '@im=Ami',
- GTK_IM_MODULE => 'xim',
- },
- chinput => {
- GTK_IM_MODULE => 'xim',
- XIM => 'chinput',
- # bogus entry overwriten by %IM_XIM_program, just for read()
- XIM_PROGRAM => 'chinput',
- XMODIFIERS => '@im=Chinput',
- },
- fcitx => {
- XIM => 'fcitx',
- XIM_PROGRAM => 'fcitx',
- XMODIFIERS => '@im=fcitx',
- },
- gcin => {
- GTK_IM_MODULE => 'gcin',
- XIM => 'gcin',
- XIM_PROGRAM => 'gcin',
- XMODIFIERS => '@im=gcin',
- },
- iiimf => {
- GTK_IM_MODULE => 'iiim',
- XIM => 'iiimx',
- XIM_PROGRAM => 'iiimx',
- XMODIFIERS => '@im=iiimx',
- },
- 'im-ja' => {
- GTK_IM_MODULE => 'im-ja',
- XIM => 'im-ja-xim-server',
- XIM_PROGRAM => 'im-ja-xim-server',
- XMODIFIERS => '@im=im-ja-xim-server',
- },
-
- kinput2 => {
- XIM => 'kinput2',
- XIM_PROGRAM => 'kinput2',
- XMODIFIERS => '@im=kinput2',
- },
- nabi => {
- GTK_IM_MODULE => 'xim',
- XIM => 'nabi',
- XIM_PROGRAM => 'nabi',
- XMODIFIERS => '@im=nabi',
- },
-
- scim => {
- GTK_IM_MODULE => 'scim',
- XIM_PROGRAM => 'scim -d',
- XMODIFIERS => '@im=SCIM',
- },
- skim => {
- GTK_IM_MODULE => 'scim',
- XIM_PROGRAM => 'skim -d',
- XMODIFIERS => '@im=SCIM',
- },
- uim => {
- GTK_IM_MODULE => 'uim',
- XIM => 'uim',
- XIM_PROGRAM => 'uim-xim',
- XMODIFIERS => '@im=uim',
- },
- xcin => {
- XIM => 'xcin',
- XIM_PROGRAM => 'xcin',
- XMODIFIERS => '@im=xcin-zh_TW',
- GTK_IM_MODULE => 'xim',
- },
- 'x-unikey' => {
- GTK_IM_MODULE => 'xim',
- XMODIFIERS => '@im=unikey'
- },
-);
-
-sub get_ims() { keys %IM_config }
-
-
-
-#-------------------------------------------------------------
-#
-# Locale configuration regarding encoding/IM
-
-#- ENC is used by some versions or rxvt
-my %locale2encoding = (
- 'ja_JP' => 'eucj',
- 'ko_KR' => 'kr',
- 'zh_CN' => 'gb',
- # zh_SG zh_HK were reported as missing by make check:
- 'zh_HK' => 'big5',
- 'zh_SG' => 'gb',
- 'zh_TW' => 'big5',
- );
-
-my %IM_locale_specific_config = (
- #-XFree86 has an internal XIM for Thai that enables syntax checking etc.
- #-'Passthroug' is no check at all, 'BasicCheck' accepts bad sequences
- #-and convert them to right ones, 'Strict' refuses bad sequences
- 'th_TH' => {
- XIM_PROGRAM => '/bin/true', #- it's an internal module
- XMODIFIERS => '"@im=BasicCheck"',
- },
- );
-
-my %default_im;
-
-sub get_default_im {
- my ($lang) = @_;
- $default_im{$lang}{IM};
-}
-
-sub set_default_im {
- my ($im, @langs) = @_;
- foreach (@langs) {
- $default_im{$_}{IM} = $im foreach $_, analyse_locale_name($_)->{main};
- }
-}
-
-set_default_im('x-unikey', qw(vi_VN vi_VN.TCVN vi_VN.UTF-8 vi_VN.VISCII));
-# CJK default input methods:
-set_default_im('scim', qw(am ja_JP ja_JP.UTF-8 ko_KR ko_KR.UTF-8 zh_CN zh_CN.UTF-8 zh_HK zh_HK.UTF-8 zh_SG zh_SG.UTF-8 zh_TW zh_TW.UTF-8));
-
-# keep the following list in sync with share/rpmsrate:
-my %IM2packages = (
- 'chinput' => { generic => [ 'miniChinput' ] },
- 'iiimf' => {
- generic => [ qw(iiimf-engines-unit) ],
- am => [ qw(iiimf-engines-unit) ],
- ja => [ qw(iiimf-engines-canna) ],
- ko => [ qw(iiimf-engines-sun-korea) ],
- zh => [ qw(iiimf-engines-sun-chinese) ],
- },
- 'scim' => {
- generic => [ qw(scim scim-m17n scim-tables) ],
- am => [ qw(scim scim-tables ) ],
- ja => [ qw(scim-anthy scim-input-pad) ],
- ko => [ qw(scim-hangul) ],
- zh => [ qw(scim-pinyin scim-tables scim-chewing) ],
- },
- 'scim+uim' => { generic => [ qw(scim-uim) ] },
- 'uim' => { generic => [ qw(uim-gtk uim-anthy) ] },
- 'vi' => { generic => [ 'x-unikey' ] },
- );
-
-sub IM2packages {
- my ($locale) = @_;
- my $im = $locale->{IM};
- return if $im eq "None";
- my $lang = analyse_locale_name($locale->{lang})->{main};
- my $packages = $IM2packages{$im}{$lang} || $IM2packages{$im}{generic};
- return $packages ? @$packages : $im;
-}
-
-#- [0]: console font name
-#- [1]: sfm map for console font (if needed)
-#- [2]: acm file for console font (none if utf8)
-#- [3]: iocharset param for mount (utf8 if utf8)
-#- [4]: codepage parameter for mount (none if utf8)
-my %charsets = (
-#- chinese needs special console driver for text mode
-"Big5" => [ undef, undef, undef, "big5", "950" ],
-"gb2312" => [ undef, undef, undef, "gb2312", "936" ],
-"gbk" => [ undef, undef, undef, "gb2312", "936" ],
-"C" => [ "lat0-16", undef, "iso15", "iso8859-1", "850" ],
-"iso-8859-1" => [ "lat1-16", undef, "iso01", "iso8859-1", "850" ],
-"iso-8859-2" => [ "lat2-sun16", undef, "iso02", "iso8859-2", "852" ],
-"iso-8859-5" => [ "UniCyr_8x16", undef, "iso05", "iso8859-5", "866" ],
-"iso-8859-7" => [ "iso07.f16", undef, "iso07", "iso8859-7", "869" ],
-"iso-8859-9" => [ "lat5u-16", undef, "iso09", "iso8859-9", "857" ],
-"iso-8859-13" => [ "tlat7", undef, "iso13", "iso8859-13", "775" ],
-"iso-8859-15" => [ "lat0-16", undef, "iso15", "iso8859-15", "850" ],
-#- japanese needs special console driver for text mode [kon2]
-"jisx0208" => [ undef, undef, "trivial.trans", "euc-jp", "932" ],
-"koi8-r" => [ "UniCyr_8x16", undef, "koi8-r", "koi8-r", "866" ],
-"koi8-u" => [ "UniCyr_8x16", undef, "koi8-u", "koi8-u", "866" ],
-"cp1251" => [ "UniCyr_8x16", undef, "cp1251", "cp1251", "866" ],
-#- korean needs special console driver for text mode
-"ksc5601" => [ undef, undef, undef, "euc-kr", "949" ],
-#- I have no console font for Thai...
-"tis620" => [ undef, undef, "trivial.trans", "tis-620", "874" ],
-# UTF-8 encodings here; they differ in the console font mainly.
-"utf_ar" => [ "iso06.f16", undef, undef, "utf8", undef ],
-"utf_armn" => [ "arm8", undef, undef, "utf8", undef ],
-"utf_az" => [ "tiso09e", undef, undef, "utf8", undef ],
-"utf_beng" => [ undef, undef, undef, "utf8", undef ],
-"utf_cyr1" => [ "UniCyr_8x16", undef, undef, "utf8", undef ],
-"utf_cyr2" => [ "koi8-k", undef, undef, "utf8", undef ],
-"utf_deva" => [ undef, undef, undef, "utf8", undef ],
-"utf_ethi" => [ "Agafari-16", undef, undef, "utf8", undef ],
-"utf_geor" => [ "t_geors", undef, undef, "utf8", undef ],
-"utf_guru" => [ undef, undef, undef, "utf8", undef ],
-"utf_he" => [ "iso08.f16", undef, undef, "utf8", undef ],
-"utf_iu" => [ undef, undef, undef, "utf8", undef ],
-"utf_khmr" => [ undef, undef, undef, "utf8", undef ],
-"utf_knda" => [ undef, undef, undef, "utf8", undef ],
-"utf_laoo" => [ undef, undef, undef, "utf8", undef ],
-"utf_lat1" => [ "lat0-16", undef, undef, "utf8", undef ],
-"utf_lat5" => [ "lat5u-16", undef, undef, "utf8", undef ],
-"utf_lat8" => [ "iso14.f16", undef, undef, "utf8", undef ],
-"utf_mlym" => [ undef, undef, undef, "utf8", undef ],
-"utf_taml" => [ "tamil", undef, undef, "utf8", undef ],
-# console font still to do
-"utf_tfng" => [ undef, undef, undef, "utf8", undef ],
-"utf_vi" => [ "tcvn8x16", undef, undef, "utf8", undef ],
-# default for utf-8 encodings
-"unicode" => [ "LatArCyrHeb-16", undef, undef, "utf8", undef ],
-);
-
-#- for special cases not handled magically
-my %charset2kde_charset = (
- gb2312 => 'gb2312.1980-0',
- gbk => 'gb2312.1980-0',
- jisx0208 => 'jisx0208.1983-0',
- ksc5601 => 'ksc5601.1987-0',
- Big5 => 'big5-0',
- cp1251 => 'microsoft-cp1251',
- utf8 => 'iso10646-1',
- tis620 => 'tis620-0',
-);
-
-my @during_install__lang_having_their_LC_CTYPE = qw(ja ko ta);
-
-
-#- -------------------
-
-sub l2console_font {
- my ($locale, $during_install) = @_;
- my $c = $charsets{l2charset($locale->{lang}) || return} or return;
- my ($name, $sfm, $acm) = @$c;
- undef $acm if $locale->{utf8} && !$during_install;
- ($name, $sfm, $acm);
-}
-
-sub get_kde_lang {
- my ($locale, $o_default) = @_;
-
- #- get it using
- #- echo C $(rpm -qp --qf "%{name}\n" /RPMS/kde-i18n-* | sed 's/kde-i18n-//')
- my @valid_kde_langs = qw(C
-af ar az be bg bn br bs ca cs cy da de el en_GB eo es et eu fa fi fo fr ga gl he hi hr hsb hu id is it ja ko ku lo lt lv mi mk mn ms mt nb nds nl nn nso oc pl pt pt_BR ro ru se sk sl sr ss sv ta tg th tr uk uz ven vi wa wen xh zh_CN zh_TW zu);
- my %valid_kde_langs; @valid_kde_langs{@valid_kde_langs} = ();
-
- my $valid_lang = sub {
- my ($lang) = @_;
- #- fast & dirty solution to ensure bad entries do not happen
- my %fixlangs = (en => 'C', en_US => 'C',
- 'sr@Latn' => 'sr',
- st => 'nso', ve => 'ven',
- zh_CN => 'zh_CN', zh_SG => 'zh_CN', zh_TW => 'zh_TW', zh_HK => 'zh_TW');
- exists $fixlangs{$lang} ? $fixlangs{$lang} :
- exists $valid_kde_langs{$lang} ? $lang :
- exists $valid_kde_langs{locale_to_main_locale($lang)} ? locale_to_main_locale($lang) : '';
- };
-
- my $r;
- $r ||= $valid_lang->($locale->{lang});
- $r ||= find { $valid_lang->($_) } split(':', getlocale_for_lang($locale->{lang}, $locale->{country}));
- $r || $o_default || 'C';
-}
-
-sub charset2kde_charset {
- my ($charset, $o_default) = @_;
- my $iocharset = ($charsets{$charset} || [])->[3];
-
- my @valid_kde_charsets = qw(big5-0 gb2312.1980-0 iso10646-1 iso8859-1 iso8859-4 iso8859-6 iso8859-8 iso8859-13 iso8859-14 iso8859-15 iso8859-2 iso8859-3 iso8859-5 iso8859-7 iso8859-9 koi8-r koi8-u ksc5601.1987-0 jisx0208.1983-0 microsoft-cp1251 tis620-0);
- my %valid_kde_charsets; @valid_kde_charsets{@valid_kde_charsets} = ();
-
- my $valid_charset = sub {
- my ($charset) = @_;
- #- fast & dirty solution to ensure bad entries do not happen
- exists $valid_kde_charsets{$charset} && $charset;
- };
-
- my $r;
- $r ||= $valid_charset->($charset2kde_charset{$charset});
- $r ||= $valid_charset->($charset2kde_charset{$iocharset});
- $r ||= $valid_charset->($iocharset);
- $r || $o_default || 'iso10646-1';
-}
-
-#- font+size for different charsets; the field [0] is the default,
-#- others are overrridens for fixed(1), toolbar(2), menu(3) and taskbar(4)
-my %charset2kde_font = (
- 'C' => [ "Sans,10", "Monospace,10" ],
- 'iso-8859-1' => [ "Sans,10", "Monospace,10" ],
- 'iso-8859-2' => [ "Sans,10", "Monospace,10" ],
- 'iso-8859-7' => [ "Helvetica,12", "courier,10", "Helvetica,11" ],
- 'iso-8859-9' => [ "Sans,10", "Monospace,10" ],
- 'iso-8859-15' => [ "Sans,10", "Monospace,10" ],
- 'iso-8859-13' => [ "Sans,10", "Monospace,10" ],
- 'jisx0208' => [ "Sazanami Gothic,13" ],
- 'ksc5601' => [ "Baekmuk Gulim,16" ],
- 'gb2312' => [ "Nimbus Sans L,10", "Monospace,10" ],
- 'Big5' => [ "Nimbus Sans L,10", "Monospace,10" ],
- 'tis620' => [ "Norasi,16", "Norasi,15" ],
- 'koi8-u' => [ "Nimbus Sans L,10", "Monospace,10" ],
- 'utf_ar' => [ "Terafik,14", "Courier New,13", "Terafik,13" ],
- 'utf_az' => [ "Nimbus Sans L,12", "Nimbus Mono L,10", "Nimbus Sans L,11" ],
- 'utf_he' => [ "Nachlieli CLM,13", "Miriam Mono CLM,10", "Nachlieli CLM,11" ],
-#-'utf_iu' => [ "????,14", ],
- 'utf_vi' => [ "Nimbus Sans L,12", "Nimbus Mono L,10", "Nimbus Sans L,11" ],
- #- script based
- 'utf_armn' => [ "Artsounk,12", "Monospace,10", "Artsounk,11" ],
- 'utf_beng' => [ "Mukti Narrow,14", "Mitra Mono,12", "Mukti Narrow,14" ],
- 'utf_deva' => [ "Raghindi,14", ],
- 'utf_ethi' => [ "GF Zemen Unicode,15" ],
- 'utf_guru' => [ "Lohit Punjab,14", ],
-#-'utf_khmr' => [ "????,14", ],
- 'utf_knda' => [ "Sampige,14", ],
- 'utf_lat1' => [ "Sans,10", "Monospace,10" ],
- 'utf_lat5' => [ "Sans,10", "Monospace,10" ],
- 'utf_lat8' => [ "Sans,10", "Monospace,10" ],
- 'utf_mlym' => [ "malayalam,14", ],
- 'utf_taml' => [ "TSCu_Paranar,14", "Tsc_avarangalfxd,10", "TSCu_Paranar,12", ],
- 'utf_tfng' => [ "Hapax Berbère,14", ],
- #- the following should be changed to better defaults when better fonts
- #- get available
- 'utf_geor' => [ "ClearlyU,15" ],
- 'utf_laoo' => [ "ClearlyU,15" ],
- 'default' => [ "Sans,12", "Monospace,10", "Sans,11" ],
-);
-
-sub charset2kde_font {
- my ($charset, $type) = @_;
-
- my $font = $charset2kde_font{$charset} || $charset2kde_font{default};
- my $r = $font->[$type] || $font->[0];
-
- #- the format is "font-name,size,-1,5,0,0,0,0,0,0" I have no idea of the
- #- meaning of that "5"...
- "$r,-1,5,0,0,0,0,0,0";
-}
-
-# this define pango name fonts (like "NimbusSans L") depending
-# on the "charset" defined by language array. This allows to selecting
-# an appropriate font for each language for the installer only.
-my %charset2pango_font = (
- 'tis620' => "Norasi 17",
- 'utf_ar' => "Roya 14",
- 'utf_armn' => "Artsounk 14",
- 'utf_cyr2' => "Nimbus Sans L 12",
- 'utf_geor' => "Sans 14",
- 'utf_he' => "Sans 12",
- 'utf_laoo' => "Sans 14",
- 'utf_taml' => "TSCu_Paranar 14",
- 'utf_vi' => "Sans 14",
- 'iso-8859-7' => "Kerkis 14",
- 'jisx0208' => "Sans 14",
- #- Nimbus Sans L is missing some chars used by some cyrillic languages,
- #- but tose have not yet DrakX translations; it also misses vietnamese
- #- latin chars; all other latin and cyrillic are covered.
- 'default' => "Sans 12"
-);
-
-sub charset2pango_font {
- my ($charset) = @_;
-
- $charset2pango_font{exists $charset2pango_font{$charset} ? $charset : 'default'};
-}
-
-sub l2pango_font {
- my ($lang) = @_;
-
- my $charset = l2charset($lang) or log::l("no charset found for lang $lang!"), return;
- my $font = charset2pango_font($charset);
- log::l("lang:$lang charset:$charset font:$font sfm:$charsets{$charset}[0]");
-
- return $font;
-}
-
-sub set {
- my ($locale, $b_translate_for_console) = @_;
-
- if ($::move) {
- move::handleI18NClp($locale->{lang});
- put_in_hash(\%ENV, i18n_env($locale));
- return;
- }
-
- my $lang = $locale->{lang};
- exists $langs{$lang} or log::l("lang::set: trying to set to $lang but I do not know it!"), return;
-
- #- set all LC_* variables to a unique locale ("C"), and only redefine
- #- LC_COLLATE (for sorting) and LANGUAGE (for the po files)
- $ENV{$_} = 'C' foreach qw(LC_NUMERIC LC_TIME LC_MONETARY LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION);
-
- $ENV{LC_CTYPE} = $lang;
- $ENV{LC_MESSAGES} = $lang;
- $ENV{LC_COLLATE} = $lang;
- $ENV{LANG} = $lang;
-
- if ($b_translate_for_console && $lang =~ /^(ko|ja|zh|th)/) {
- log::l("not translating in console");
- $ENV{LANGUAGE} = 'C';
- } else {
- $ENV{LANGUAGE} = getLANGUAGE($lang);
- }
- load_mo();
- $lang;
-}
-
-sub langs {
- my ($l) = @_;
- $l->{all} ? list_langs() : grep { $l->{$_} } keys %$l;
-}
-
-sub langsLANGUAGE {
- my ($l, $o_c) = @_;
- uniq(map { split ':', getLANGUAGE($_, $o_c) } langs($l));
-}
-
-sub utf8_should_be_needed {
- my ($locale) = @_;
- my @l = uniq(grep { $_ ne 'C' } map { l2charset($_) } langs($locale->{langs}));
- @l > 1 || any { /utf|unicode/ } @l;
-}
-
-sub pack_langs {
- my ($l) = @_;
- my $s = $l->{all} ? 'all' : join ':', uniq(map { getLANGUAGE($_) } langs($l));
- $s;
-}
-
-sub system_locales_to_ourlocale {
- my ($locale_lang, $locale_country) = @_;
- my $locale = {};
- my $h = analyse_locale_name($locale_lang);
- my $locale_lang_no_encoding = join('_', $h->{main}, if_($h->{country}, $h->{country}));
- $locale->{lang} = member($locale_lang_no_encoding, list_langs()) ?
- $locale_lang_no_encoding : #- special lang's such as en_US pt_BR
- $h->{main};
- $locale->{lang} .= '@' . $h->{variant} if $h->{variant};
- $locale->{country} = analyse_locale_name($locale_country)->{country};
- $locale->{utf8} = $h->{charset} && $h->{charset} eq 'UTF-8';
- #- safe fallbacks
- $locale->{lang} ||= 'en_US';
- $locale->{country} ||= 'US';
- $locale;
-}
-
-sub read {
- my ($b_user_only) = @_;
- my ($f1, $f2) = ("$::prefix$ENV{HOME}/.i18n", "$::prefix/etc/sysconfig/i18n");
- my %h = getVarsFromSh($b_user_only && -e $f1 ? $f1 : $f2);
- my $locale = system_locales_to_ourlocale($h{LC_MESSAGES} || 'en_US', $h{LC_MONETARY} || 'en_US');
-
- if ($h{XIM_PROGRAM}) {
- $locale->{IM} = find { $IM_config{$_}{XIM_PROGRAM} eq $h{XIM_PROGRAM} } keys %IM_config;
- $locale->{IM} ||= find { member($h{XIM_PROGRAM}, values %{$IM_XIM_program{$_}}) } keys %IM_XIM_program;
- }
- $locale;
-}
-
-sub write_langs {
- my ($langs) = @_;
- my $s = pack_langs($langs);
- symlink "$::prefix/etc/rpm", "/etc/rpm" if $::prefix;
- require URPM;
- URPM::add_macro("_install_langs $s");
- substInFile { s/%_install_langs.*//; $_ .= "%_install_langs $s\n" if eof && $s } "$::prefix/etc/rpm/macros";
-}
-
-sub i18n_env {
- my ($locale) = @_;
-
- my $locale_lang = getlocale_for_lang($locale->{lang}, $locale->{country}, $locale->{utf8});
- my $locale_country = getlocale_for_country($locale->{lang}, $locale->{country}, $locale->{utf8});
-
- my $h = {
- XKB_IN_USE => '',
- (map { $_ => $locale_lang } qw(LANG LC_COLLATE LC_CTYPE LC_MESSAGES LC_TIME)),
- LANGUAGE => getLANGUAGE($locale->{lang}, $locale->{country}, $locale->{utf8}),
- (map { $_ => $locale_country } qw(LC_NUMERIC LC_MONETARY LC_ADDRESS LC_MEASUREMENT LC_NAME LC_PAPER LC_IDENTIFICATION LC_TELEPHONE))
- };
-
- log::l("lang::write: lang:$locale->{lang} country:$locale->{country} locale|lang:$locale_lang locale|country:$locale_country language:$h->{LANGUAGE}");
-
- $h;
-}
-
-sub write {
- my ($locale, $b_user_only, $b_dont_touch_kde_files) = @_;
-
- $locale && $locale->{lang} or return;
-
- my $h = i18n_env($locale);
-
- my ($name, $sfm, $acm) = l2console_font($locale, 0);
- if ($name && !$b_user_only) {
- my $p = "$::prefix/usr/lib/kbd";
- if ($name) {
- eval {
- log::explanations(qq(Set system font to "$name"));
- my $font = "$p/consolefonts/$name.psf";
- $font .= ".gz" if ! -e $font;
- cp_af($font, "$::prefix/etc/sysconfig/console/consolefonts");
- add2hash $h, { SYSFONT => $name };
- };
- $@ and log::explanations("missing console font $name");
- }
- if ($sfm) {
- eval {
- log::explanations(qq(Set screen font map (Unicode mapping table) to "$name"));
- cp_af(glob_("$p/consoletrans/$sfm*"), "$::prefix/etc/sysconfig/console/consoletrans");
- add2hash $h, { UNIMAP => $sfm };
- };
- $@ and log::explanations("missing console unimap file $sfm");
- }
- if ($acm) {
- eval {
- log::explanations(qq(Set application-charset map (Unicode mapping table) to "$name"));
- cp_af(glob_("$p/consoletrans/$acm*"), "$::prefix/etc/sysconfig/console/consoletrans");
- add2hash $h, { SYSFONTACM => $acm };
- };
- $@ and log::explanations("missing console acm file $acm");
- }
-
- }
-
- add2hash($h, $IM_locale_specific_config{$h->{LANG}});
- $h->{ENC} = $locale2encoding{$h->{LANG}};
- $h->{ENC} = 'utf8' if member($h->{LANG}, qw(ja_JP.UTF-8 ko_KR.UTF-8 zh_CN.UTF-8 zh_HK.UTF-8 zh_SG.UTF-8 zh_TW.UTF-8));
-
- my $im = $locale->{IM};
- if ($im && $im ne 'None') {
- log::explanations(qq(Configuring "$im" IM));
- delete @$h{qw(GTK_IM_MODULE QT_IM_MODULE XIM XIM_PROGRAM XMODIFIERS)};
- add2hash($h, { XIM_PROGRAM => $IM_XIM_program{$im}{$h->{LC_NAME}} });
-
- add2hash($h, $IM_config{$locale->{IM}});
- $h->{QT_IM_MODULE} = $h->{GTK_IM_MODULE} if $h->{GTK_IM_MODULE};
- my @packages = IM2packages($locale);
- if (@packages && $b_user_only) {
- require interactive;
- interactive->vnew->ask_warn(N("Warning"),
- N("You should install the following packages: %s",
- join(
- #-PO: the following is used to combine packages names. eg: "initscripts, harddrake, yudit"
- N(", "),
- @packages,
- ),
- )
- );
- } elsif (@packages) {
- log::explanations("Installing IM packages: ", join(', ', @packages));
- do_pkgs_standalone->new->install(@packages);
- }
- }
-
- #- deactivate translations on console for most CJK, RTL and complex languages
- if (member($locale->{lang}, qw(ar bn fa he hi ja kn ko pa_IN ug ur yi zh_TW zh_CN))) {
- #- CONSOLE_NOT_LOCALIZED if defined to yes, disables translations on console
- #- it is needed for languages not supported by the linux console
- log::explanations(qq(Disabling tranlsation on console since "$locale->{lang}" is not supported by the console));
- add2hash($h, { CONSOLE_NOT_LOCALIZED => 'yes' });
- }
-
- my $file = $b_user_only ? "$ENV{HOME}/.i18n" : '/etc/sysconfig/i18n';
- log::explanations(qq(Setting l10n configuration in "$file"));
- setVarsInSh($::prefix . $file, $h);
-
- if (!$b_user_only) {
- log::explanations("Set default menu language");
- substInFile {
- s!^function lang\b.*!function lang()="$h->{LANG}"!g;
- } "$::prefix/etc/menu-methods/lang.h" if !$b_user_only;
- }
-
- configure_hal($locale) if !$b_user_only;
-
- my $charset = l2charset($locale->{lang});
- my $qtglobals = $b_user_only ? "$ENV{HOME}/.qt/qtrc" : "$::prefix/etc/qtrc";
- update_gnomekderc($qtglobals, General => (
- font => charset2kde_font($charset, 0),
- ));
-
- eval {
- my $confdir = $::prefix . ($b_user_only ? "$ENV{HOME}/.kde" : '/usr') . '/share/config';
-
- -d $confdir or die 'not configuring kde config files since it is not installed/used';
-
- configure_kdeglobals($locale, $confdir);
-
- my %qt_xim = (zh => 'Over The Spot', ko => 'On The Spot', ja => 'On The Spot');
- if ($b_user_only && (my $qt_xim = $qt_xim{locale_to_main_locale($locale->{lang})})) {
- log::explanations(qq(Setting XIM input style to "$qt_xim"));
- update_gnomekderc("$ENV{HOME}/.qt/qtrc", General => (XIMInputStyle => $qt_xim));
- }
-
- if (!$b_user_only) {
- my $kde_charset = charset2kde_charset(l2charset($locale->{lang}));
- my $welcome = c::to_utf8(N("Welcome to %s", '%n'));
- log::explanations(qq(Configuring KDM/MdkKDM));
- substInFile {
- s/^(GreetString)=.*/$1=$welcome/;
- s/^(Language)=.*/$1=$locale->{lang}/;
- if (!member($kde_charset, 'iso8859-1', 'iso8859-15')) {
- #- do not keep the default for those
- my $font_list = $charset2kde_font{l2charset($locale->{lang})} || $charset2kde_font{default};
- my $font_small = $font_list->[0];
- my $font_huge = $font_small;
- $font_huge =~ s/(.*?),\d+/$1,24/;
- s/^(StdFont)=.*/$1=$font_small,5,$kde_charset,50,0/;
- s/^(FailFont)=.*/$1=$font_small,5,$kde_charset,75,0/;
- s/^(GreetFont)=.*/$1=$font_huge,5,$kde_charset,50,0/;
- }
- } "$::prefix/usr/share/config/kdm/kdmrc";
- }
-
- } if !$b_dont_touch_kde_files;
-}
-
-sub configure_hal {
- my ($locale) = @_;
- my $option = sub {
- my ($cat, $val) = @_;
- qq(\t\t<merge key="$cat.policy.mount_option.$val" type="bool">true</merge>);
- };
- my %options = (fs_options($locale), utf8 => 1);
- my %known_options = (
- auto => [ 'iocharset', 'codepage' ],
- vfat => [ 'iocharset', 'codepage' ],
- msdos => [ 'iocharset', 'codepage' ],
- ntfs => [ 'iocharset', 'utf8' ],
- cdrom => [ 'iocharset', 'codepage', 'utf8' ],
- );
- my $options = sub {
- my ($cat, $name) = @_;
- join("\n", map {
- $option->($cat, $_ eq 'utf8' ? $_ : "$_=$options{$_}");
- } grep { $options{$_} } @{$known_options{$name}});
- };
- my $options_per_fs = join('', map {
- my $s = $options->('volume', $_);
- $s && sprintf(<<'EOF', $_, $s);
- <match key="volume.fstype" string="%s">
-%s
- </match>
-EOF
- } 'auto', 'vfat', 'msdos', 'ntfs');
-
- output_p("$::prefix/usr/share/hal/fdi/30osvendor/locale-policy.fdi",
- sprintf(<<'EOF', $options_per_fs, $options->('storage', 'cdrom')));
-<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
-
-<deviceinfo version="0.2">
-
- <device>
- <match key="block.is_volume" bool="true">
- <match key="volume.fsusage" string="filesystem">
-
-%s
- </match>
- </match>
-
- <match key="storage.drive_type" string="cdrom">
-%s
- </match>
- </device>
-
-</deviceinfo>
-EOF
-}
-
-sub configure_kdeglobals {
- my ($locale, $confdir) = @_;
- my $kdeglobals = "$confdir/kdeglobals";
-
- my $charset = l2charset($locale->{lang});
- my $kde_charset = charset2kde_charset($charset);
- my ($prev_kde_charset) = cat_($kdeglobals) =~ /^Charset=(.*)/mi;
-
- mkdir_p($confdir);
-
- my $lang = get_kde_lang($locale);
- log::explanations("Configuring KDE regarding charset ($kde_charset), language ($lang) and country ($locale->{country})");
- update_gnomekderc($kdeglobals, Locale => (
- Charset => $kde_charset,
- Country => lc($locale->{country}),
- Language => getLANGUAGE($locale->{lang}, $locale->{country}, $locale->{utf8}),
- ));
-
- if ($prev_kde_charset ne $kde_charset) {
- log::explanations("Configuring KDE regarding fonts");
- update_gnomekderc($kdeglobals, WM => (
- activeFont => charset2kde_font($charset,0),
- ));
- update_gnomekderc($kdeglobals, General => (
- fixed => charset2kde_font($charset, 1),
- font => charset2kde_font($charset, 0),
- menuFont => charset2kde_font($charset, 3),
- taskbarFont => charset2kde_font($charset, 4),
- toolBarFont => charset2kde_font($charset, 2),
- ));
- update_gnomekderc("$confdir/konquerorrc", FMSettings => (
- StandardFont => charset2kde_font($charset, 0),
- ));
- update_gnomekderc("$confdir/kdesktoprc", FMSettings => (
- StandardFont => charset2kde_font($charset, 0),
- ));
- }
-}
-
-sub bindtextdomain() {
- #- if $::prefix is set, search for libDrakX.mo in locale_special
- #- NB: not using $::isInstall to make it work more easily at install and standalone
- my $localedir = "$ENV{SHARE_PATH}/locale" . ($::prefix ? "_special" : '');
-
- c::setlocale();
- c::bind_textdomain_codeset('libDrakX', 'UTF-8');
- $::need_utf8_i18n = 1;
- c::bindtextdomain('libDrakX', $localedir);
-
- $localedir;
-}
-
-sub load_mo {
- my ($o_lang) = @_;
-
- my $localedir = bindtextdomain();
- my $suffix = 'LC_MESSAGES/libDrakX.mo';
-
- $o_lang ||= $ENV{LANGUAGE} || $ENV{LC_ALL} || $ENV{LC_MESSAGES} || $ENV{LANG};
-
- my @possible_langs = map { { name => $_, mofile => "$localedir/$_/$suffix" } } split ':', $o_lang;
-
- -s $_->{mofile} and return $_->{name} foreach @possible_langs;
-
- '';
-}
-
-
-#- used in Makefile during "make get_needed_files"
-sub console_font_files() {
- map { -e $_ ? $_ : "$_.gz" }
- (map { "/usr/lib/kbd/consolefonts/$_.psf" } uniq grep { $_ } map { $_->[0] } values %charsets),
- (map { -e $_ ? $_ : "$_.sfm" } map { "/usr/lib/kbd/consoletrans/$_" } uniq grep { $_ } map { $_->[1] } values %charsets),
- (map { -e $_ ? $_ : "$_.acm" } map { "/usr/lib/kbd/consoletrans/$_" } uniq grep { $_ } map { $_->[2] } values %charsets);
-}
-
-sub load_console_font {
- my ($locale) = @_;
- my ($name, $sfm, $acm) = l2console_font($locale, 1);
-
- require run_program;
- run_program::run(if_($ENV{LD_LOADER}, $ENV{LD_LOADER}),
- 'consolechars', '-v', '-f', $name || 'lat0-16',
- if_($sfm, '-u', $sfm), if_($acm, '-m', $acm));
-}
-
-sub fs_options {
- my ($locale) = @_;
- if ($locale->{utf8}) {
- (iocharset => 'utf8', codepage => undef);
- } else {
- my $c = $charsets{l2charset($locale->{lang}) || return} or return;
- my ($iocharset, $codepage) = @$c[3..4];
- (iocharset => $iocharset, codepage => $codepage);
- }
-}
-
-sub during_install__l2charset {
- my ($lang) = @_;
- return if member($lang, @during_install__lang_having_their_LC_CTYPE);
-
- my ($c) = l2charset($lang) or die "bad lang $lang\n";
- $c = 'UTF-8' if member($c, 'tis620', 'C', 'unicode');
- $c = 'UTF-8' if $c =~ /koi8-/;
- $c = 'UTF-8' if $c =~ /iso-8859/;
- $c = 'UTF-8' if $c =~ /cp125/;
- $c = 'UTF-8' if $c =~ /utf_/;
- uc($c);
-}
-
-sub check() {
- $^W = 0;
- my ($warnings, $errors) = (0, 0);
- my $warn = sub {
- my ($msg, $b_is_error) = @_;
- if ($b_is_error) {
- print STDERR "\tErrors:\n" if !$errors++;
- } else {
- print STDERR "\tWarnings:\n" if !$warnings++;
- }
- print STDERR "$msg\n";
- };
- my $err = sub { $warn->($_[0], 'error') };
-
- my @wanted_charsets = uniq map { l2charset($_) } list_langs();
- $warn->("unused charset $_ (given in \%charsets, but not used in \%langs)") foreach difference2([ keys %charsets ], \@wanted_charsets);
-
- $warn->("unused entry $_ in \%xim") foreach grep { !/UTF-8/ } difference2([ keys %IM_locale_specific_config ], [ map { l2locale($_) } list_langs() ]);
-
- #- consolefonts are checked during build via console_font_files()
-
- if (my @l = difference2([ 'default', keys %charsets ], [ keys %charset2kde_font ])) {
- $warn->("no kde font for charset " . join(" ", @l));
- }
-
- if (my @l = grep { get_kde_lang({ lang => $_, country => 'US' }, 'err') eq 'err' } list_langs()) {
- $warn->("no KDE lang for langs " . join(" ", @l));
- }
- if (my @l = grep { charset2kde_charset($_, 'err') eq 'err' } keys %charsets) {
- $warn->("no KDE charset for charsets " . join(" ", @l));
- }
-
- $warn->("no country corresponding to default locale $_->[1] of lang $_->[0]")
- foreach grep { $_->[1] =~ /.._(..)/ && !exists $countries{$1} } map { [ $_, l2locale($_) ] } list_langs();
-
- $err->("invalid charset $_ ($_ does not exist in \%charsets)") foreach difference2(\@wanted_charsets, [ keys %charsets ]);
- $err->("invalid charset $_ in \%charset2kde_font ($_ does not exist in \%charsets)") foreach difference2([ keys %charset2kde_font ], [ 'default', keys %charsets ]);
-
- $err->("default locale $_->[1] of lang $_->[0] is not listed in \@locales")
- foreach grep { !member($_->[1], @locales) } map { [ $_, l2locale($_) ] } list_langs();
-
- $err->("lang image for lang $_->[0] is missing (file $_->[1])")
- foreach grep { !(-e $_->[1]) } map { [ $_, "pixmaps/langs/lang-$_.png" ] } list_langs();
-
- $err->("default locale $_->[1] of country $_->[0] is not listed in \@locales")
- foreach grep { !member($_->[1], @locales) } map { [ $_, c2locale($_) ] } list_countries();
-
-
- exit($errors ? 1 : 0);
-}
-
-1;
diff --git a/perl-install/log.pm b/perl-install/log.pm
deleted file mode 100644
index da3c56037..000000000
--- a/perl-install/log.pm
+++ /dev/null
@@ -1,63 +0,0 @@
-package log; # $Id$
-
-use diagnostics;
-use strict;
-
-use c;
-
-my ($LOG, $LOG2);
-
-#-#####################################################################################
-#- Globals
-#-#####################################################################################
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub F() { $LOG }
-
-sub l {
- $LOG or openLog();
- if ($::testing) {
- print STDERR @_, "\n";
- } elsif ($LOG) {
- print $LOG "* ", @_, "\n";
- print $LOG2 "* ", @_, "\n" if $LOG2;
- } elsif ($::isStandalone) {
- c::syslog(c::LOG_WARNING(), join("", @_));
- } else {
- print STDERR @_, "\n";
- }
-}
-
-sub openLog {
- my ($o_file) = @_;
-
- if ($o_file) { #- useLocal
- open $LOG, "> $o_file";
- } elsif ($::isInstall) {
- open $LOG, "> /dev/tty3";
- open $LOG2, ">> /tmp/ddebug.log";
- }
- select((select($LOG), $| = 1)[0]) if $LOG;
- select((select($LOG2), $| = 1)[0]) if $LOG2;
-}
-
-sub closeLog() {
- if ($LOG) {
- close $LOG;
- close $LOG2;
- } elsif ($::isStandalone) {
- c::closelog();
- }
-}
-
-sub explanations {
- if ($::isStandalone) {
- c::syslog(c::LOG_INFO()|c::LOG_LOCAL1(), "@_");
- } else {
- l(@_);
- }
-}
-
-1;
diff --git a/perl-install/loopback.pm b/perl-install/loopback.pm
deleted file mode 100644
index 96e542ab8..000000000
--- a/perl-install/loopback.pm
+++ /dev/null
@@ -1,126 +0,0 @@
-package loopback; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use MDK::Common::System;
-use common;
-use fs::type;
-use fs;
-use log;
-
-
-sub carryRootLoopback {
- my ($part) = @_;
- $_->{mntpoint} eq '/' and return 1 foreach @{$part->{loopback} || []};
- 0;
-}
-
-sub check_circular_mounts {
- my ($part, $all_hds) = @_;
-
- my $fstab = [ fs::get::fstab($all_hds), $part ]; # no pb if $part is already in $all_hds
-
- my $base_mntpoint = $part->{mntpoint};
- my $check; $check = sub {
- my ($part, @seen) = @_;
- push @seen, $part->{mntpoint} || return;
- @seen > 1 && $part->{mntpoint} eq $base_mntpoint and die N("Circular mounts %s\n", join(", ", @seen));
- if (my $part = fs::get::up_mount_point($part->{mntpoint}, $fstab)) {
- #- '/' carrier is a special case, it will be mounted first
- $check->($part, @seen) if !carryRootLoopback($part);
- }
- if (isLoopback($part)) {
- $check->($part->{loopback_device}, @seen);
- }
- };
- $check->($part) if !($base_mntpoint eq '/' && isLoopback($part)); #- '/' is a special case, no loop check
-}
-
-sub carryRootCreateSymlink {
- my ($part, $prefix) = @_;
-
- carryRootLoopback($part) or return;
-
- my $mntpoint = "$prefix$part->{mntpoint}";
- unless (-e $mntpoint) {
- eval { mkdir_p(dirname($mntpoint)) };
- #- do non-relative link for install, should be changed to relative link before rebooting
- symlink "/initrd/loopfs", $mntpoint;
-
- mkdir_p("/initrd/loopfs/lnx4win/boot");
- symlink "/initrd/loopfs/lnx4win/boot", "$prefix/boot";
- }
- #- indicate kernel to keep initrd
- mkdir_p("$prefix/initrd");
-}
-
-
-sub format_part {
- my ($part, $prefix) = @_;
- fs::mount_part($part->{loopback_device}, $prefix);
- create($part, $prefix);
- fs::format::part_raw($part, undef);
-}
-
-sub create {
- my ($part, $prefix) = @_;
- my $f = $part->{device} = "$prefix$part->{loopback_device}{mntpoint}$part->{loopback_file}";
- return if -e $f;
-
- eval { mkdir_p(dirname($f)) };
-
- log::l("creating loopback file $f ($part->{size} sectors)");
-
- my $block_size = 128;
- my $s = "\0" x (512 * $block_size);
- sysopen(my $F, $f, 2 | c::O_CREAT()) or die "failed to create loopback file";
- for (my $i = 0; $i < $part->{size}; $i += $block_size) {
- syswrite $F, $s or die "failed to create loopback file";
- }
-}
-
-sub getFree {
- my ($dir, $part) = @_;
- my $freespace = $dir ?
- 2 * (MDK::Common::System::df($dir))[1] : #- df in KiB
- $part->{size};
-
- $freespace - sum map { $_->{size} } @{$part->{loopback} || []};
-}
-
-#- returns the size of the loopback file if it already exists
-#- returns -1 is the loopback file can not be used
-sub verifFile {
- my ($dir, $file, $part) = @_;
- -e "$dir$file" and return -s "$dir$file";
-
- $_->{loopback_file} eq $file and return -1 foreach @{$part->{loopback} || []};
-
- undef;
-}
-
-sub prepare_boot() {
- my $r = readlink "$::prefix/boot";
- unlink "$::prefix/boot";
- mkdir_p("$::prefix/boot");
- [$r, $::prefix];
-}
-
-sub save_boot {
- my ($loop_boot, $prefix) = @{$_[0]};
-
- $loop_boot or return;
-
- my @files = glob_("$prefix/boot/*");
- cp_af(@files, $loop_boot) if @files;
- rm_rf("$prefix/boot");
- symlink $loop_boot, "$prefix/boot";
-}
-
-
-1;
-
diff --git a/perl-install/lvm.pm b/perl-install/lvm.pm
deleted file mode 100644
index 6f9ac2a20..000000000
--- a/perl-install/lvm.pm
+++ /dev/null
@@ -1,155 +0,0 @@
-package lvm; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use modules;
-use devices;
-use fs::type;
-use run_program;
-
-#- for partition_table_xxx emulation
-sub new {
- my ($class, $name) = @_;
- $name =~ s/\W/_/g;
- $name = substr($name, 0, 63); # max length must be < NAME_LEN / 2 where NAME_LEN is 128
- bless { disks => [], VG_name => $name }, $class;
-}
-sub hasExtended { 0 }
-sub adjustStart {}
-sub adjustEnd {}
-sub write {}
-sub cylinder_size {
- my ($hd) = @_;
- $hd->{extent_size};
-}
-
-init() or log::l("lvm::init failed");
-
-sub init() {
- devices::init_device_mapper();
- if ($::isInstall) {
- run_program::run('lvm2', 'vgscan');
- run_program::run('lvm2', 'vgchange', '-a', 'y');
- }
- 1;
-}
-
-sub lvm_cmd {
- if (my $r = run_program::run('lvm2', @_)) {
- $r;
- } else {
- $? >> 8 == 98 or return;
-
- #- sometimes, it needs running vgscan again, doing so:
- run_program::run('lvm2', 'vgscan');
- run_program::run('lvm2', @_);
- }
-}
-sub lvm_cmd_or_die {
- my ($prog, @para) = @_;
- lvm_cmd($prog, @para) or die "$prog failed\n";
-}
-
-sub check {
- my ($in) = @_;
-
- $in->do_pkgs->ensure_binary_is_installed('lvm2', 'lvm2') or return;
- init();
- 1;
-}
-
-sub get_vg {
- my ($part) = @_;
- my $dev = expand_symlinks(devices::make($part->{device}));
- run_program::get_stdout('lvm2', 'pvs', '--noheadings', '-o', 'vg_name', $dev) =~ /(\S+)/ && $1;
-}
-
-sub update_size {
- my ($lvm) = @_;
- $lvm->{extent_size} = to_int(run_program::get_stdout('lvm2', 'vgs', '--noheadings', '--nosuffix', '--units', 's', '-o', 'vg_extent_size', $lvm->{VG_name}));
- $lvm->{totalsectors} = to_int(run_program::get_stdout('lvm2', 'vgs', '--noheadings', '--nosuffix', '--units', 's', '-o', 'vg_size', $lvm->{VG_name}));
-}
-
-sub get_lv_size {
- my ($lvm_device) = @_;
- to_int(run_program::get_stdout('lvm2', 'lvs', '--noheadings', '--nosuffix', '--units', 's', '-o', 'lv_size', "/dev/$lvm_device"));
-}
-
-sub get_lvs {
- my ($lvm) = @_;
- my @l = run_program::get_stdout('lvm2', 'lvs', '--noheadings', '--nosuffix', '--units', 's', '-o', 'lv_name', $lvm->{VG_name}) =~ /(\S+)/g;
- $lvm->{primary}{normal} =
- [
- map {
- my $device = "$lvm->{VG_name}/$_";
- my $fs_type = -e "/dev/$device" && fs::type::fs_type_from_magic({ device => $device });
-
- { device => $device,
- lv_name => $_,
- rootDevice => $lvm->{VG_name},
- fs_type => $fs_type || 'ext2',
- size => get_lv_size($device) };
- } @l
- ];
-}
-
-sub vg_add {
- my ($part) = @_;
- my $dev = expand_symlinks(devices::make($part->{device}));
- lvm_cmd_or_die('pvcreate', '-y', '-ff', $dev);
- my $prog = lvm_cmd('vgs', $part->{lvm}) ? 'vgextend' : 'vgcreate';
- lvm_cmd_or_die($prog, $part->{lvm}, $dev);
-}
-
-sub vg_destroy {
- my ($lvm) = @_;
-
- is_empty_array_ref($lvm->{primary}{normal}) or die N("Remove the logical volumes first\n");
- lvm_cmd('vgchange', '-a', 'n', $lvm->{VG_name});
- lvm_cmd_or_die('vgremove', $lvm->{VG_name});
- foreach (@{$lvm->{disks}}) {
- lvm_cmd_or_die('pvremove', devices::make($_->{device}));
- delete $_->{lvm};
- set_isFormatted($_, 0);
- }
-}
-
-sub lv_delete {
- my ($lvm, $lv) = @_;
-
- lvm_cmd_or_die('lvremove', '-f', "/dev/$lv->{device}");
-
- my $list = $lvm->{primary}{normal};
- @$list = grep { $_ != $lv } @$list;
-}
-
-sub suggest_lv_name {
- my ($lvm, $lv) = @_;
- my $list = $lvm->{primary}{normal} ||= [];
- $lv->{lv_name} ||= 1 + max(map { if_($_->{device} =~ /(\d+)$/, $1) } @$list);
-}
-
-sub lv_create {
- my ($lvm, $lv) = @_;
- suggest_lv_name($lvm, $lv);
- $lv->{device} = "$lvm->{VG_name}/$lv->{lv_name}";
- lvm_cmd_or_die('lvcreate', '--size', int($lv->{size} / 2) . 'k', '-n', $lv->{lv_name}, $lvm->{VG_name});
- $lv->{size} = get_lv_size($lv->{device}); #- the created size is smaller than asked size
- set_isFormatted($lv, 0);
- my $list = $lvm->{primary}{normal} ||= [];
- push @$list, $lv;
-}
-
-sub lv_resize {
- my ($lv, $oldsize) = @_;
- lvm_cmd_or_die($oldsize > $lv->{size} ? ('lvreduce', '-f') : 'lvextend',
- '--size', int($lv->{size} / 2) . 'k', "/dev/$lv->{device}");
- $lv->{size} = get_lv_size($lv->{device}); #- the resized partition may not be the exact asked size
-}
-
-1;
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
deleted file mode 100644
index 8f50b78e1..000000000
--- a/perl-install/modules.pm
+++ /dev/null
@@ -1,329 +0,0 @@
-package modules; # $Id$
-
-use strict;
-
-use common;
-use detect_devices;
-use run_program;
-use log;
-use list_modules;
-use modules::any_conf;
-
-sub modules_descriptions() {
- my $f = '/lib/modules/' . c::kernel_version() . '/modules.description';
- -e $f or $f = '/lib/modules.description';
- map { /(\S+)\s+(.*)/ } cat_($f);
-}
-
-sub module2description { +{ modules_descriptions() }->{$_[0]} }
-
-sub category2modules_and_description {
- my ($categories) = @_;
- my %modules_descriptions = modules_descriptions();
- map { $_ => $modules_descriptions{$_} } category2modules($categories);
-}
-
-my %mappings_24_26 = (
- "usb-ohci" => "ohci-hcd",
- "usb-uhci" => "uhci-hcd",
- "uhci" => "uhci-hcd",
- "printer" => "usblp",
- "bcm4400" => "b44",
- "3c559" => "3c359",
- "3c90x" => "3c59x",
- "dc395x_trm" => "dc395x",
-);
-my %mappings_26_24 = reverse %mappings_24_26;
-$mappings_26_24{'uhci-hcd'} = 'usb-uhci';
-
-sub mapping_24_26 {
- my ($modname) = @_;
- $mappings_24_26{$modname} || $modname;
-}
-sub mapping_26_24 {
- my ($modname) = @_;
- $mappings_26_24{$modname} || $modname;
-}
-
-sub cond_mapping_24_26 {
- my ($modname) = @_;
- c::kernel_version() =~ /^\Q2.6/ && $mappings_24_26{$modname} || $modname;
-}
-
-#-###############################################################################
-#- module loading
-#-###############################################################################
-# handles dependencies
-sub load_raw {
- my ($l, $h_options) = @_;
- if ($::testing) {
- log::l("i would load module $_ ($h_options->{$_})") foreach @$l;
- } elsif ($::isInstall && !$::move) {
- load_raw_install($l, $h_options);
- } else {
- run_program::run('/sbin/modprobe', $_, split(' ', $h_options->{$_}))
- or !run_program::run('/sbin/modprobe', '-n', $_) #- ignore missing modules
- or die "insmod'ing module $_ failed" foreach @$l;
- }
- sleep 2 if any { /^(usb-storage|mousedev|printer)$/ } @$l;
-}
-sub load_with_options {
- my ($l, $h_options) = @_;
-
- my @l = map {
- dependencies_closure(cond_mapping_24_26($_));
- } @$l;
-
- @l = remove_loaded_modules(@l) or return;
-
- load_raw(\@l, $h_options);
-}
-sub load {
- my (@l) = @_;
- load_with_options(\@l, {});
-}
-
-# eg: load_and_configure($modules_conf, 'vfat', 'reiserfs', [ ne2k => 'io=0xXXX', 'dma=5' ])
-sub load_and_configure {
- my ($conf, $module, $o_options) = @_;
-
- my $category = module2category($module) || '';
- my $network_devices = $category =~ m!network/(main|gigabit|usb|wireless)! && [ detect_devices::getNet() ];
-
- my @l = remove_loaded_modules(dependencies_closure(cond_mapping_24_26($module)));
- load_raw(\@l, { $module => $o_options });
-
- if ($network_devices) {
- $conf->set_alias($_, $module) foreach difference2([ detect_devices::getNet() ], $network_devices);
- }
-
- if (c::kernel_version() =~ /^\Q2.6/ && member($module, 'imm', 'ppa')
- && ! -d "/proc/sys/dev/parport/parport0/devices/$module") {
- log::l("$module loaded but is not useful, removing");
- unload($module);
- return;
- }
-
- $conf->set_options($module, $o_options) if $o_options;
-
- when_load($conf, $module);
-}
-
-sub unload {
- if ($::testing) {
- log::l("rmmod $_") foreach @_;
- } else {
- run_program::run("rmmod", $_) foreach @_;
- }
-}
-
-sub load_category {
- my ($conf, $category, $o_wait_message) = @_;
-
- my @try_modules = (
- if_($category =~ /scsi/,
- if_(detect_devices::usbStorage(), 'usb-storage'),
- ),
- arch() =~ /ppc/ ? (
- if_($category =~ /scsi/,
- if_(detect_devices::has_mesh(), 'mesh'),
- if_(detect_devices::has_53c94(), 'mac53c94'),
- ),
- if_($category =~ /net/, 'bmac', 'gmac', 'mace', 'airport'),
- ) : (),
- );
- grep {
- $o_wait_message->($_->{description}, $_->{driver}) if $o_wait_message;
- eval { load_and_configure($conf, $_->{driver}, $_->{options}) };
- $_->{error} = $@;
-
- $_->{try} = 1 if member($_->{driver}, 'hptraid', 'ohci1394'); #- do not warn when this fails
-
- !($_->{error} && $_->{try});
- } probe_category($category),
- map { { driver => $_, description => $_, try => 1 } } @try_modules;
-}
-
-sub load_parallel_zip {
- my ($conf) = @_;
-
- arch() !~ /ppc/ or return;
-
- eval { modules::load('parport_pc') };
- grep {
- eval { modules::load_and_configure($conf, $_); 1 };
- } 'imm', 'ppa';
-}
-
-sub probe_category {
- my ($category) = @_;
-
- my @modules = category2modules($category);
-
- if_($category =~ /sound/ && arch() =~ /ppc/ && detect_devices::get_mac_model() !~ /IBM/,
- { driver => 'snd-powermac', description => 'Macintosh built-in' },
- ),
- grep {
- if ($category eq 'network/isdn') {
- my $b = $_->{driver} =~ /ISDN:([^,]*),?([^,]*)(?:,firmware=(.*))?/;
- if ($b) {
- $_->{driver} = $1;
- $_->{type} = $2;
- $_->{type} =~ s/type=//;
- $_->{firmware} = $3;
- $_->{driver} eq "hisax" and $_->{options} .= " id=HiSax";
- }
- $b;
- } else {
- member($_->{driver}, @modules);
- }
- } detect_devices::probeall();
-}
-
-
-#-###############################################################################
-#- modules.conf functions
-#-###############################################################################
-sub write_preload_conf {
- my ($conf) = @_;
- my @l;
- push @l, 'scsi_hostadapter' if $conf->get_probeall('scsi_hostadapter');
- push @l, intersection([ list_modules::category2modules('multimedia/dvb'), list_modules::category2modules('multimedia/tv') ],
- [ map { $_->{driver} } detect_devices::probeall() ]);
- push @l, map { if_($_->{driver} =~ /^Module:(.*)/, $1) } detect_devices::probeall();
- push @l, 'nvram' if detect_devices::isLaptop();
- push @l, map { $_->{driver} } probe_category('various/laptop');
- push @l, map { $_->{driver} } probe_category('input/joystick');
- push @l, map { $_->{driver} } probe_category('various/crypto');
- push @l, 'padlock' if cat_("/proc/cpuinfo") =~ /rng_en/;
- push @l, 'evdev' if detect_devices::getSynapticsTouchpads();
- my @l_26 = @l;
- push @l_26, map { $_->{driver} } probe_category('various/agpgart');
- append_to_modules_loaded_at_startup("$::prefix/etc/modules", @l);
- append_to_modules_loaded_at_startup("$::prefix/etc/modprobe.preload", @l_26);
-}
-
-sub append_to_modules_loaded_at_startup_for_all_kernels {
- append_to_modules_loaded_at_startup($_, @_) foreach "$::prefix/etc/modules", "$::prefix/etc/modprobe.preload";
-}
-
-sub append_to_modules_loaded_at_startup {
- my ($file, @l) = @_;
- my $l = join '|', map { '^\s*' . $_ . '\s*$' } @l;
- log::l("to put in $file ", join(", ", @l));
-
- substInFile {
- $_ = '' if $l && /$l/;
- $_ .= join '', map { "$_\n" } @l if eof;
- } $file;
-}
-
-
-#-###############################################################################
-#- internal functions
-#-###############################################################################
-sub loaded_modules() {
- map { /(\S+)/ } cat_("/proc/modules");
-}
-sub remove_loaded_modules {
- my (@l) = @_;
- difference2([ uniq(@l) ], [ map { my $s = $_; $s =~ s/_/-/g; $s, $_ } loaded_modules() ]);
-}
-
-sub read_already_loaded {
- my ($conf) = @_;
- when_load($conf, $_) foreach reverse loaded_modules();
-}
-
-my $module_extension = c::kernel_version() =~ /^\Q2.4/ ? 'o' : 'ko';
-
-sub name2file {
- my ($name) = @_;
- "$name.$module_extension";
-}
-
-sub when_load {
- my ($conf, $name) = @_;
-
- if (my $category = module2category($name)) {
- when_load_category($conf, $name, $category);
- }
-
- if (my $above = $conf->get_above($name)) {
- load($above); #- eg: for snd-pcm-oss set by set_sound_slot()
- }
-}
-
-sub when_load_category {
- my ($conf, $name, $category) = @_;
-
- if ($category =~ m,disk/(ide|scsi|hardware_raid|sata|usb|firewire),) {
- $conf->add_probeall('scsi_hostadapter', $name);
- eval { load('sd_mod') };
- } elsif ($category eq 'bus/usb') {
- $conf->add_probeall('usb-interface', $name);
- -f '/proc/bus/usb/devices' or eval {
- require fs; fs::mount_usbfs('');
- #- ensure keyboard is working, the kernel must do the job the BIOS was doing
- sleep 4;
- load("usbkbd", "keybdev") if detect_devices::usbKeyboards();
- };
- } elsif ($category eq 'bus/firewire') {
- $conf->set_alias('ieee1394-controller', $name);
- } elsif ($category =~ /sound/) {
- my $sound_alias = find { /^sound-slot-[0-9]+$/ && $conf->get_alias($_) eq $name } $conf->modules;
- $sound_alias ||= 'sound-slot-0';
- $conf->set_sound_slot($sound_alias, $name);
- }
-}
-
-#-###############################################################################
-#- isInstall functions
-#-###############################################################################
-sub cz_file() {
- "/lib/modules" . (arch() eq 'sparc64' && "64") . ".cz-" . c::kernel_version();
-}
-
-sub extract_modules {
- my ($dir, @modules) = @_;
- my $cz = cz_file();
- if (!-e $cz && !$::uml_install) {
- unlink $_ foreach glob_("/lib/modules*.cz*");
- require install_any;
- install_any::getAndSaveFile("install/stage2/live$cz", $cz) or die "failed to get modules $cz: $!";
- }
- eval {
- require packdrake;
- my $packer = new packdrake($cz, quiet => 1);
- $packer->extract_archive($dir, map { name2file($_) } @modules) if @modules;
- map { $dir . '/' . name2file($_) } @modules;
- };
-}
-
-sub load_raw_install {
- my ($l, $options) = @_;
-
- extract_modules('/tmp', @$l);
- my @failed = grep {
- my $m = '/tmp/' . name2file($_);
- if (-e $m) {
- my $stdout;
- my $rc = run_program::run(["insmod_", "insmod"], '2>', \$stdout, $m, split(' ', $options->{$_}));
- log::l(chomp_($stdout)) if $stdout;
- if ($rc) {
- unlink $m;
- '';
- } else {
- 'error';
- }
- } else {
- log::l("missing module $_");
- 'error';
- }
- } @$l;
-
- die "insmod'ing module " . join(", ", @failed) . " failed" if @failed;
-
-}
-
-1;
diff --git a/perl-install/modules/any_conf.pm b/perl-install/modules/any_conf.pm
deleted file mode 100644
index c6174fd81..000000000
--- a/perl-install/modules/any_conf.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-package modules::any_conf; # $Id$
-
-use log;
-use common;
-
-
-sub vnew {
- if (c::kernel_version() =~ /^\Q2.6/) {
- require modules::modprobe_conf;
- modules::modprobe_conf->new;
- } else {
- require modules::modules_conf;
- modules::modules_conf->new;
- }
-}
-
-
-sub new {
- my ($type) = @_;
- bless {}, ref($type) || $type;
-}
-
-sub modules {
- my ($conf) = @_;
- keys %$conf;
-}
-
-sub get_alias {
- my ($conf, $alias) = @_;
- $conf->{$alias}{alias};
-}
-sub get_options {
- my ($conf, $module) = @_;
- $module = $conf->mapping($module);
- $conf->{$module}{options};
-}
-sub set_options {
- my ($conf, $module, $new_option) = @_;
- $module = $conf->mapping($module);
- log::explanations(qq(set option "$new_option" for module "$module"));
- $conf->{$module}{options} = $new_option;
-}
-sub get_parameters {
- my ($conf, $module) = @_;
- $module = $conf->mapping($module);
- map { if_(/(.*)=(.*)/, $1 => $2) } split(' ', $conf->get_options($module));
-}
-
-sub get_probeall {
- my ($conf, $alias) = @_;
- $conf->{$alias}{probeall};
-}
-sub _set_probeall {
- my ($conf, $alias, $modules) = @_;
- $conf->{$alias}{probeall} = $modules;
- log::explanations("setting probeall $alias to $modules");
-}
-sub add_probeall {
- my ($conf, $alias, $module) = @_;
- $module = $conf->mapping($module);
- my $modules = join(' ', uniq(split(' ', $conf->{$alias}{probeall}), $module));
- _set_probeall($conf, $alias, $modules);
-}
-sub remove_probeall {
- my ($conf, $alias, $module) = @_;
- $module = $conf->mapping($module);
- my $modules = join(' ', grep { $_ ne $module } split(' ', $conf->{$alias}{probeall}));
- _set_probeall($conf, $alias, $modules);
-}
-
-sub set_alias {
- my ($conf, $alias, $module) = @_;
- $module =~ /ignore/ and return;
- $module = $conf->mapping($module);
- /\Q$alias/ && $conf->{$_}{alias} && $conf->{$_}{alias} eq $module and return $_ foreach keys %$conf;
- log::explanations("adding alias $alias to $module");
- $conf->{$alias}{alias} = $module;
- $alias;
-}
-
-
-sub remove_alias {
- my ($conf, $name) = @_;
- log::explanations(qq(removing alias "$name"));
- $conf->remove_alias_regexp("^$name\$");
-}
-
-sub remove_alias_regexp {
- my ($conf, $aliased) = @_;
- log::explanations(qq(removing all aliases that match "$aliased"));
- foreach (keys %$conf) {
- delete $conf->{$_}{alias} if /$aliased/;
- }
-}
-
-sub remove_alias_regexp_byname {
- my ($conf, $name) = @_;
- log::explanations(qq(removing all aliases which names match "$name"));
- foreach (keys %$conf) {
- delete $conf->{$_} if /$name/;
- }
-}
-
-sub remove_module {
- my ($conf, $module) = @_;
- $module = $conf->mapping($module);
- substInFile {
- undef $_ if /^$module/;
- } $_ foreach "$::prefix/etc/modules", "$::prefix/etc/modprobe.preload";
-
- $conf->remove_alias($module);
- log::explanations("removing module $module");
- delete $conf->{$module};
- 0;
-}
-
-sub set_sound_slot {
- my ($conf, $alias, $module) = @_;
- $module = $conf->mapping($module);
- if (my $old = $conf->get_alias($alias)) {
- $conf->set_above($old, undef);
- }
- $conf->set_alias($alias, $module);
- $conf->set_above($module, 'snd-pcm-oss') if $module =~ /^snd-/;
-}
-
-
-sub read {
- my (undef, $o_file) = @_;
-
- my $conf = modules::any_conf::vnew();
- $conf->read($o_file);
-}
-
-sub write {
- my ($conf, $o_file) = @_;
- my $file = $o_file || $::prefix . $conf->file;
-
- my %written;
-
- #- Substitute new config (if config has changed)
- substInFile {
- my ($type, $module, $val) = split(' ', chomp_($_), 3);
- if ($type eq 'post-install' && $module eq 'supermount') {
- #- remove the post-install supermount stuff.
- $_ = '';
- } elsif (member($type, $conf->handled_fields)) {
- my $new_val = $conf->{$module}{$type};
- if (!$new_val) {
- $_ = '';
- } elsif ($new_val ne $val) {
- $_ = "$type $module $new_val\n";
- }
- }
- $written{$module}{$type} = 1;
- } $file;
-
- my $to_add;
- while (my ($module, $h) = each %$conf) {
- while (my ($type, $v) = each %$h) {
- if ($v && !$written{$module}{$type}) {
- $to_add .= "$type $module $v\n";
- }
- }
- }
- append_to_file($file, $to_add);
-
- modules::write_preload_conf($conf);
-}
-
-
-
-
-################################################################################
-sub read_handled {
- my ($conf, $o_file) = @_;
- my $file = $o_file || $::prefix . $conf->file;
- my $raw_conf = modules::any_conf::read_raw($file);
-
- foreach my $module (keys %$raw_conf) {
- my $raw = $raw_conf->{$module};
- my $keep = $conf->{$module} = {};
- foreach ($conf->handled_fields) {
- $keep->{$_} = $raw->{$_} if $raw->{$_};
- }
- }
-
- $conf;
-}
-
-sub read_raw {
- my ($file) = @_;
- my %c;
-
- foreach (cat_($file)) {
- next if /^\s*#/;
- s/#.*$//;
- s/\s+$//;
-
- s/\b(snd-card-)/snd-/g;
- s/\b(snd-via686|snd-via8233)\b/snd-via82xx/g;
-
- my ($type, $module, $val) = split(' ', $_, 3) or next;
-
- $c{$module}{$type} = $val;
- }
-
- #- NB: not copying alias options to the module anymore, hopefully not useful :)
-
- \%c;
-}
-
-1;
diff --git a/perl-install/modules/interactive.pm b/perl-install/modules/interactive.pm
deleted file mode 100644
index fb4bcfda2..000000000
--- a/perl-install/modules/interactive.pm
+++ /dev/null
@@ -1,162 +0,0 @@
-package modules::interactive;
-use interactive;
-use modules;
-use common;
-
-sub config_window {
- my ($in, $data) = @_;
- require modules;
- my $modules_conf = modules::any_conf->read;
- my %conf = $modules_conf->get_parameters($data->{driver});
- require modules::parameters;
- my @l;
- foreach (modules::parameters::parameters($data->{driver})) {
- my ($name, $format, $description) = @$_;
- push @l, { label => $name, help => join("\n", $description, if_(c::kernel_version() !~ /^\Q2.6/, "[$format]")),
- val => \$conf{$name}, allow_empty_list => 1 };
- }
- # BUG: once we've released mdk9.2 and unfreeze cooker, morph this
- # into a proper error dialog with a nice error message (but
- # for now we cannot due to string freeze :-()
- @l = { label => N("Parameters"), help => "", val => N("NONE"), allow_empty_list => 1 } if !@l;
- if ($in->ask_from(N("Module configuration"), N("You can configure each parameter of the module here."), \@l)) {
- my $options = join(' ', map { if_($conf{$_}, "$_=$conf{$_}") } keys %conf);
- if ($options) {
- $modules_conf->set_options($data->{driver}, $options);
- $modules_conf->write;
- }
- }
-}
-
-sub load_category {
- my ($in, $modules_conf, $category, $b_auto, $b_at_least_one) = @_;
-
- my @l;
- {
- my $w;
- my $wait_message = sub { undef $w; $w = wait_load_module($in, $category, @_) };
- @l = modules::load_category($modules_conf, $category, $wait_message);
- undef $w; #- help perl_checker
- }
- if (my @err = grep { $_ } map { $_->{error} } @l) {
- my $return = $in->ask_warn('', join("\n", @err));
- $in->exit(1) if !defined($return);
- }
- return @l if $b_auto && (@l || !$b_at_least_one);
-
- @l = map { $_->{description} } @l;
-
- if ($b_at_least_one && !@l) {
- @l = load_category__prompt($in, $modules_conf, $category) or return;
- }
-
- load_category__prompt_for_more($in, $modules_conf, $category, @l);
-}
-
-sub load_category__prompt_for_more {
- my ($in, $modules_conf, $category, @l) = @_;
-
- (my $msg_type = $category) =~ s/\|.*//;
-
- while (1) {
- my $msg = @l ?
- [ N("Found %s interfaces", join(", ", map { qq("$_") } @l)),
- N("Do you have another one?") ] :
- N("Do you have any %s interfaces?", $msg_type);
-
- my $r = 'No';
- $in->ask_from_({ messages => $msg,
- if_($category =~ m!disk/.*(ide|sata|scsi|hardware_raid|usb|firewire)!, interactive_help_id => 'setupSCSI'),
- },
- [ { list => [ N_("Yes"), N_("No"), N_("See hardware info") ], val => \$r, type => 'list', format => \&translate } ]);
- if ($r eq "No") { return @l }
- if ($r eq "Yes") {
- push @l, load_category__prompt($in, $modules_conf, $category) || next;
- } else {
- $in->ask_warn('', join("\n", detect_devices::stringlist()));
- }
- }
-}
-
-my %category2text = (
- 'bus/usb' => N_("Installing driver for USB controller"),
- 'bus/firewire' => N_("Installing driver for firewire controller %s"),
- 'disk/ide|scsi|hardware_raid|sata|firewire' => N_("Installing driver for hard drive controller %s"),
- list_modules::ethernet_categories() => N_("Installing driver for ethernet controller %s"),
-);
-
-sub wait_load_module {
- my ($in, $category, $text, $module) = @_;
- my $msg = do {
- if (my $t = $category2text{$category}) {
- sprintf(translate($t), $text);
- } else {
- #-PO: the first %s is the card type (scsi, network, sound,...)
- #-PO: the second is the vendor+model name
- N("Installing driver for %s card %s", $category, $text);
- }
- };
- $in->wait_message('', [ $msg, if_($::expert, N("(module %s)", $module)) ]);
-}
-
-sub load_module__ask_options {
- my ($in, $module_descr, $parameters) = @_;
-
- my @parameters = map { [ @$_[0, 1, 2] ] } @$parameters;
-
- if (@parameters) {
- $in->ask_from('',
- N("You may now provide options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr),
- [ map { { label => $_->[0] . ($_->[1] ? " ($_->[1])" : ''), help => $_->[2], val => \$_->[3] } } @parameters ],
- ) or return;
- join(' ', map { if_($_->[3], "$_->[0]=$_->[3]") } @parameters);
- } else {
- my $s = $in->ask_from_entry('',
-N("You may now provide options to module %s.
-Options are in format ``name=value name2=value2 ...''.
-For instance, ``io=0x300 irq=7''", $module_descr), N("Module options:")) or return;
- $s;
- }
-}
-
-sub load_category__prompt {
- my ($in, $modules_conf, $category) = @_;
-
- (my $msg_type = $category) =~ s/\|.*//;
-
- my %available_modules = map_each { my $dsc = $::b; $dsc =~ s/\s+/ /g; $::a => $dsc ? "$::a ($dsc)" : $::a } modules::category2modules_and_description($category);
- my $module = $in->ask_from_listf('',
-#-PO: the %s is the driver type (scsi, network, sound,...)
- N("Which %s driver should I try?", $msg_type),
- sub { $available_modules{$_[0]} },
- [ keys %available_modules ]) or return;
- my $module_descr = $available_modules{$module};
-
- my $options;
- require modules::parameters;
- my @parameters = modules::parameters::parameters($module);
- if (@parameters && $in->ask_from_list_('',
-formatAlaTeX(N("In some cases, the %s driver needs to have extra information to work
-properly, although it normally works fine without them. Would you like to specify
-extra options for it or allow the driver to probe your machine for the
-information it needs? Occasionally, probing will hang a computer, but it should
-not cause any damage.", $module_descr)), [ N_("Autoprobe"), N_("Specify options") ], 'Autoprobe') ne 'Autoprobe') {
- $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
- }
- while (1) {
- eval {
- my $_w = wait_load_module($in, $category, $module_descr, $module);
- log::l("user asked for loading module $module (type $category, desc $module_descr)");
- modules::load_and_configure($modules_conf, $module, $options);
- };
- return $module_descr if !$@;
-
- $in->ask_yesorno('',
-N("Loading module %s failed.
-Do you want to try again with other parameters?", $module_descr), 1) or return;
-
- $options = load_module__ask_options($in, $module_descr, \@parameters) or return;
- }
-}
-
-1;
diff --git a/perl-install/modules/modprobe_conf.pm b/perl-install/modules/modprobe_conf.pm
deleted file mode 100644
index b2a57717d..000000000
--- a/perl-install/modules/modprobe_conf.pm
+++ /dev/null
@@ -1,163 +0,0 @@
-package modules::modprobe_conf; # $Id$
-
-use log;
-use common;
-
-our @ISA = qw(modules::any_conf);
-
-
-sub file { '/etc/modprobe.conf' }
-sub handled_fields { qw(alias options install remove) }
-
-sub mapping {
- my ($_conf, @modules) = @_;
- my @l = map { modules::mapping_24_26($_) } @modules;
- wantarray() ? @l : $l[0];
-}
-
-sub get_above {
- my ($conf, $module) = @_;
- $module = $conf->mapping($module);
-
- my (undef, $after) = parse_non_virtual($module, $conf->{$module}{install}) or return;
- my ($l, $_other_cmds) = partition_modprobes($after);
- join(' ', @$l);
-}
-sub set_above {
- my ($conf, $module, $o_modules) = @_;
- $module = $conf->mapping($module);
- my @modules = $conf->mapping(split(' ', $o_modules || ''));
-
- { #- first add to "install" command
- my ($before, $after) = parse_non_virtual($module, $conf->{$module}{install});
- my ($_previous_modules, $other_cmds) = partition_modprobes($after || '');
- $after = join('; ', @$other_cmds, map { "/sbin/modprobe $_" } @modules);
- $conf->{$module}{install} = unparse_non_virtual($module, '--ignore-install', $before, $after);
- }
- { #- then to "remove" command
- my ($before, $after) = parse_non_virtual($module, $conf->{$module}{remove});
- my ($_previous_modules, $other_cmds) = partition_modprobes($before || '');
- $before = join('; ', @$other_cmds, map { "/sbin/modprobe -r $_" } @modules);
- $conf->{$module}{remove} = unparse_non_virtual($module, '-r --ignore-remove', $before, $after);
- }
-}
-
-sub create_from_old() {
- #- use module-init-tools script
- run_program::rooted($::prefix, "/sbin/generate-modprobe.conf", ">", file());
-}
-
-sub read {
- my ($type, $o_file) = @_;
-
- my $file = $o_file || do {
- my $f = $::prefix . file();
- if (!-e $f && -e "$::prefix/etc/modules.conf") {
- create_from_old();
- }
- $f;
- };
-
- my $conf = modules::any_conf::read_handled($type, $file);
-
- extract_probeall_field($conf);
-
- $conf;
-}
-
-sub write {
- my ($conf, $o_file) = @_;
-
- remove_probeall_field($conf);
-
- my $_b = before_leaving { extract_probeall_field($conf) };
-
- modules::any_conf::write($conf, $o_file);
-}
-
-
-
-################################################################################
-sub remove_braces {
- my ($s) = @_;
- $s =~ s/^\s*\{\s*(.*)\s*;\s*\}\s*$/$1/;
- $s;
-}
-
-sub parse_non_virtual {
- my ($module, $s) = @_;
- my ($before, $options, $after) =
- $s =~ m!^(?:(.*);)?
- \s*(?:/sbin/)?modprobe\s+(-\S+\s+)*\Q$module\E
- \s*(?:&&\s*(.*))?$!x
- or return;
- $options =~ /--ignore-(install|remove)\b/ or return;
-
- ($before, $after) = map { remove_braces($_ || '') } $before, $after;
- $after =~ s!\s*;\s*/bin/true$!!;
-
- $before, $after;
-}
-
-sub unparse_non_virtual {
- my ($module, $mode, $before, $after) = @_;
- ($before ? "$before; " : '')
- . "/sbin/modprobe --first-time $mode $module"
- . ($after ? " && { $after; /bin/true; }" : '');
-}
-
-sub partition_modprobes {
- my ($s) = @_;
-
- my (@modprobes, @other_cmds);
- my @l = split(/\s*;\s*/, $s);
- foreach (@l) {
- if (m!^(?:/sbin/)?modprobe\s+(?:-r\s+)?(\S+)$!) {
- push @modprobes, $1;
- } else {
- push @other_cmds, $1;
- }
- }
- \@modprobes, \@other_cmds;
-}
-
-sub parse_for_probeall {
- my ($module, $s) = @_;
-
- parse_non_virtual($module, $s) and return;
- if ($s =~ /[{&|]/) {
- log::l("weird install line in modprobe.conf for $module: $s");
- return;
- }
- $s ne '/bin/true' or return; #- we have "alias $module off" here
-
- $s =~ s!\s*;\s*/bin/true$!!;
-
- my ($l, $other_cmds) = partition_modprobes($s);
-
- @$other_cmds ? undef : $l;
-}
-
-sub extract_probeall_field {
- my ($conf) = @_;
-
- foreach my $module (keys %$conf) {
- $conf->{$module}{install} or next;
- my $l = parse_for_probeall($module, $conf->{$module}{install}) or next;
-
- $conf->{$module}{probeall} = join(' ', @$l);
- delete $conf->{$module}{install};
- }
-}
-
-sub remove_probeall_field {
- my ($conf) = @_;
-
- foreach my $module (keys %$conf) {
- my $modules = delete $conf->{$module}{probeall} or next;
-
- $conf->{$module}{install} = join('; ', (map { "/sbin/modprobe $_" } split(' ', $modules)), '/bin/true');
- }
-}
-
-1;
diff --git a/perl-install/modules/modules_conf.pm b/perl-install/modules/modules_conf.pm
deleted file mode 100644
index afcf08b35..000000000
--- a/perl-install/modules/modules_conf.pm
+++ /dev/null
@@ -1,70 +0,0 @@
-package modules::modules_conf; # $Id$
-
-use log;
-use common;
-
-our @ISA = qw(modules::any_conf);
-
-
-sub file { '/etc/modules.conf' }
-sub handled_fields { qw(alias above options probeall) }
-
-sub mapping {
- my ($_conf, @modules) = @_;
- my @l = map { modules::mapping_26_24($_) } @modules;
- wantarray() ? @l : $l[0];
-}
-
-sub get_above {
- my ($conf, $module) = @_;
- $module = $conf->mapping($module);
-
- $conf->{$module} && $conf->{$module}{above};
-}
-sub set_above {
- my ($conf, $module, $o_modules) = @_;
- $module = $conf->mapping($module);
-
- if ($o_modules) {
- my $modules = join(' ', $conf->mapping(split(' ', $o_modules)));
- $conf->{$module}{above} = $modules;
- } else {
- delete $conf->{$module}{above};
- }
-}
-
-sub read {
- my ($type, $o_file) = @_;
-
- my $conf = modules::any_conf::read_handled($type, $o_file);
-
- #- convert old aliases to new probeall
- foreach my $name ('scsi_hostadapter', 'usb-interface') {
- my @old_aliases =
- map { $_->[0] } sort { $a->[1] <=> $b->[1] }
- map { if_(/^$name(\d*)/ && $conf->{$_}{alias}, [ $_, $1 || 0 ]) } keys %$conf;
- foreach my $alias (@old_aliases) {
- $conf->add_probeall($name, delete $conf->{$alias}{alias});
- }
- }
-
- $conf;
-}
-
-sub write {
- my ($conf, $o_file) = @_;
- my $file = $o_file || do {
- my $f = $::prefix . file();
- rename "$::prefix/etc/conf.modules", $f; #- make the switch to new name if needed
- $f;
- };
-
- modules::any_conf::write($conf, $file);
-
- if ($::isInstall) {
- require modules::modprobe_conf;
- modules::modprobe_conf::create_from_old();
- }
-}
-
-1;
diff --git a/perl-install/modules/parameters.pm b/perl-install/modules/parameters.pm
deleted file mode 100644
index fa8fcfae7..000000000
--- a/perl-install/modules/parameters.pm
+++ /dev/null
@@ -1,60 +0,0 @@
-package modules::parameters; # $Id$
-
-use diagnostics;
-use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use modules;
-
-
-sub parameters {
- my ($module) = @_;
-
- if (!$::isStandalone && !$::testing) {
- ($module) = modules::extract_modules('/tmp', $module);
- }
-
- my @parameters;
- foreach (common::join_lines(run_program::get_stdout('modinfo', '-p', $module))) {
- chomp;
- next if /^warning:/;
- (my $name, $_) = /(\w+)(?::|\s+)(.*)/s or warn "modules::parameters::get_options_name($module): unknown line\n";
- if (c::kernel_version() =~ /^\Q2.6/) {
- push @parameters, [ $name, '', $_ ];
- next;
- }
-
- my $c_types = 'int|string|short|byte|char|long';
- my ($is_a_number, $description, $min, $max) = (0, '', 1, 1);
- if (/^($c_types) array \(min = (\d+), max = (\d+)\),?\s*(.*)/s) {
- $_ = $4;
- #- seems like "char" are buggy entries
- ($is_a_number, $min, $max) = ($1 ne 'string', $2, $3) if $1 ne 'char';
- } elsif (/^($c_types),?\s*(.*)/s) {
- $_ = $2;
- #- here "char" really are size-limited strings, modinfo does not display the size limit (but since we do not care about it, it does not matter :)
- $is_a_number = $1 ne 'string' if $1 ne 'char';
- } else {
- #- for things like "no format character" or "unknown format character"
- }
- if (/^description "(.*)",?\s*/s) {
- ($description, $_) = ($1, $2);
- }
- #- print "STILL HAVE ($_)\n" if $_;
-
- my $format = $min == 1 && $max == 1 ?
- ($is_a_number ? N("a number") : '') :
- $min == $max ?
- ($is_a_number ? N("%d comma separated numbers", $min) : N("%d comma separated strings", $min)) :
- $min == 1 ?
- ($is_a_number ? N("comma separated numbers") : N("comma separated strings")) :
- ''; #- too weird and buggy, do not display it
- push @parameters, [ $name, $format, $description ];
- }
- @parameters;
-}
-
-1;
diff --git a/perl-install/mouse.pm b/perl-install/mouse.pm
deleted file mode 100644
index f11fcc3d5..000000000
--- a/perl-install/mouse.pm
+++ /dev/null
@@ -1,641 +0,0 @@
-package mouse; # $Id$
-
-#use diagnostics;
-#use strict;
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-use common;
-use modules;
-use detect_devices;
-use run_program;
-use devices;
-use modules;
-use any;
-use log;
-
-my @mouses_fields = qw(nbuttons MOUSETYPE XMOUSETYPE name EMULATEWHEEL);
-
-my %mice =
- arch() =~ /^sparc/ ?
-(
- 'sunmouse' =>
- [ [ 'sunmouse' ],
- [ [ 3, 'sun', 'sun', N_("Sun - Mouse") ]
- ] ]
-) :
-(
- 'PS/2' =>
- [ [ 'psaux' ],
- [ [ 2, 'ps/2', 'PS/2', N_("Standard") ],
- [ 5, 'ps/2', 'MouseManPlusPS/2', N_("Logitech MouseMan+") ],
- [ 5, 'imps2', 'IMPS/2', N_("Generic PS2 Wheel Mouse") ],
- [ 5, 'ps/2', 'GlidePointPS/2', N_("GlidePoint") ],
- if_(c::kernel_version() !~ /^\Q2.6/,
- [ 5, 'imps2', 'auto', N_("Automatic") ]
- ),
- '',
- [ 5, 'ps/2', 'ThinkingMousePS/2', N_("Kensington Thinking Mouse") ],
- [ 5, 'netmouse', 'NetMousePS/2', N_("Genius NetMouse") ],
- [ 5, 'netmouse', 'NetScrollPS/2', N_("Genius NetScroll") ],
- [ 7, 'ps/2', 'ExplorerPS/2', N_("Microsoft Explorer") ],
- ] ],
-
- 'USB' =>
- [ [ 'usbmouse' ],
- [ [ 1, 'ps/2', 'IMPS/2', N_("1 button") ],
- [ 2, 'ps/2', 'IMPS/2', N_("Generic 2 Button Mouse") ],
- [ 3, 'ps/2', 'IMPS/2', N_("Generic") ],
- [ 3, 'ps/2', 'IMPS/2', N_("Generic 3 Button Mouse with Wheel emulation"), 'wheel' ],
- [ 5, 'ps/2', 'IMPS/2', N_("Wheel") ],
- [ 7, 'ps/2', 'ExplorerPS/2', N_("Microsoft Explorer") ],
- ] ],
-
- N_("serial") =>
- [ [ map { "ttyS$_" } 0..3 ],
- [ [ 2, 'Microsoft', 'Microsoft', N_("Generic 2 Button Mouse") ],
- [ 3, 'Microsoft', 'Microsoft', N_("Generic 3 Button Mouse") ],
- [ 3, 'Microsoft', 'Microsoft', N_("Generic 3 Button Mouse with Wheel emulation"), 'wheel' ],
- [ 5, 'ms3', 'IntelliMouse', N_("Microsoft IntelliMouse") ],
- [ 3, 'MouseMan', 'MouseMan', N_("Logitech MouseMan") ],
- [ 3, 'MouseMan', 'MouseMan', N_("Logitech MouseMan with Wheel emulation"), 'wheel' ],
- [ 2, 'MouseSystems', 'MouseSystems', N_("Mouse Systems") ],
- '',
- [ 3, 'logim', 'MouseMan', N_("Logitech CC Series") ],
- [ 3, 'logim', 'MouseMan', N_("Logitech CC Series with Wheel emulation"), 'wheel' ],
- [ 5, 'pnp', 'IntelliMouse', N_("Logitech MouseMan+/FirstMouse+") ],
- [ 5, 'ms3', 'IntelliMouse', N_("Genius NetMouse") ],
- [ 2, 'MMSeries', 'MMSeries', N_("MM Series") ],
- [ 2, 'MMHitTab', 'MMHittab', N_("MM HitTablet") ],
- [ 3, 'Logitech', 'Logitech', N_("Logitech Mouse (serial, old C7 type)") ],
- [ 3, 'Logitech', 'Logitech', N_("Logitech Mouse (serial, old C7 type) with Wheel emulation"), 'wheel' ],
- [ 3, 'Microsoft', 'ThinkingMouse', N_("Kensington Thinking Mouse") ],
- [ 3, 'Microsoft', 'ThinkingMouse', N_("Kensington Thinking Mouse with Wheel emulation"), 'wheel' ],
- ] ],
-
- N_("busmouse") =>
- [ [ arch() eq 'ppc' ? 'adbmouse' : ('atibm', 'inportbm', 'logibm') ],
- [ if_(arch() eq 'ppc', [ 1, 'Busmouse', 'BusMouse', N_("1 button") ]),
- [ 2, 'Busmouse', 'BusMouse', N_("2 buttons") ],
- [ 3, 'Busmouse', 'BusMouse', N_("3 buttons") ],
- [ 3, 'Busmouse', 'BusMouse', N_("3 buttons with Wheel emulation"), 'wheel' ],
- ] ],
-
- if_(c::kernel_version() =~ /^\Q2.6/,
- N_("Universal") =>
- [ [ 'input/mice' ],
- [ [ 7, 'ps/2', 'ExplorerPS/2', N_("Any PS/2 & USB mice") ],
- if_(is_xbox(), [ 5, 'ps/2', 'IMPS/2', N_("Microsoft Xbox Controller S") ]),
- ] ],
- ),
-
- N_("none") =>
- [ [ 'none' ],
- [ [ 0, 'none', 'Microsoft', N_("No mouse") ],
- ] ],
-);
-
-
-sub xmouse2xId {
- #- xmousetypes must be sorted as found in /usr/include/X11/extensions/xf86misc.h
- #- so that first mean "0", etc
- my @xmousetypes = (
- "Microsoft",
- "MouseSystems",
- "MMSeries",
- "Logitech",
- "BusMouse", #MouseMan,
- "Logitech",
- "PS/2",
- "MMHittab",
- "GlidePoint",
- "IntelliMouse",
- "ThinkingMouse",
- "IMPS/2",
- "ThinkingMousePS/2",
- "MouseManPlusPS/2",
- "GlidePointPS/2",
- "NetMousePS/2",
- "NetScrollPS/2",
- "SysMouse",
- "Auto",
- "AceCad",
- "ExplorerPS/2",
- "USB",
- );
- my ($id) = @_;
- $id = 'BusMouse' if $id eq 'MouseMan';
- $id = 'IMPS/2' if $id eq 'ExplorerPS/2' && $::isInstall;
- eval { find_index { $_ eq $id } @xmousetypes } || 0;
-}
-
-my %mouse_btn_keymap = (
- 0 => "NONE",
- 67 => "F9",
- 68 => "F10",
- 87 => "F11",
- 88 => "F12",
- 85 => "F13",
- 89 => "F14",
- 90 => "F15",
- 56 => "L-Option/Alt",
- 125 => "L-Command (Apple)",
- 98 => "Num: /",
- 55 => "Num: *",
- 117 => "Num: =",
- 96 => "Enter",
-);
-sub ppc_one_button_keys() { keys %mouse_btn_keymap }
-sub ppc_one_button_key2text { $mouse_btn_keymap{$_[0]} }
-
-sub raw2mouse {
- my ($type, $raw) = @_;
- $raw or return;
-
- my %l; @l{@mouses_fields} = @$raw;
- +{ %l, type => $type };
-}
-
-sub fullnames() {
- map_each {
- my $type = $::a;
- grep { $_ } map {
- if ($_) {
- my $l = raw2mouse($type, $_);
- "$type|$l->{name}";
- } else {
- $type .= "|[" . N("Other") . "]";
- '';
- }
- } @{$::b->[1]};
- } %mice;
-}
-
-sub fullname2mouse {
- my ($fname, %opts) = @_;
- my ($type, @l) = split '\|', $fname;
- my $name = pop @l;
- search:
- $opts{device} ||= $mice{$type}[0][0];
- foreach (@{$mice{$type}[1]}) {
- my $l = raw2mouse($type, $_);
- $name eq $l->{name} and return { %$l, %opts };
- }
- if ($name eq '1 Button' || $name eq '1 button') {
- $name = "Generic 2 Button Mouse";
- goto search;
- }
- die "$fname not found ($type, $name)";
-}
-
-sub serial_ports() { map { "ttyS$_" } 0..7 }
-sub serial_port2text {
- $_[0] =~ /ttyS(\d+)/ ? "$_[0] / COM" . ($1 + 1) : $_[0];
-}
-
-sub read() {
- my %mouse = getVarsFromSh "$::prefix/etc/sysconfig/mouse";
- eval { add2hash_(\%mouse, fullname2mouse($mouse{FULLNAME})) };
- $mouse{nbuttons} ||= $mouse{XEMU3} eq "yes" ? 2 : $mouse{WHEEL} eq "yes" ? 5 : 3;
- \%mouse;
-}
-
-sub write {
- my ($do_pkgs, $mouse) = @_;
- local $mouse->{FULLNAME} = qq("$mouse->{type}|$mouse->{name}"); #-"
- local $mouse->{XEMU3} = bool2yesno($mouse->{nbuttons} < 3);
- local $mouse->{WHEEL} = bool2yesno($mouse->{nbuttons} > 3);
- setVarsInSh("$::prefix/etc/sysconfig/mouse", $mouse, qw(MOUSETYPE XMOUSETYPE FULLNAME XEMU3 WHEEL device));
- any::devfssymlinkf($mouse, 'mouse');
-
- #- we should be using input/mice directly instead of usbmouse, but legacy...
- symlinkf 'input/mice', "$::prefix/dev/usbmouse" if $mouse->{device} eq "usbmouse";
-
- any::devfssymlinkf($mouse->{auxmouse}, 'mouse1') if $mouse->{auxmouse};
-
-
- various_xfree_conf($do_pkgs, $mouse);
-
- if (arch() =~ /ppc/) {
- my $s = join('',
- "dev.mac_hid.mouse_button_emulation = " . to_bool($mouse->{button2_key} || $mouse->{button3_key}) . "\n",
- if_($mouse->{button2_key}, "dev.mac_hid.mouse_button2_keycode = $mouse->{button2_key}\n"),
- if_($mouse->{button3_key}, "dev.mac_hid.mouse_button3_keycode = $mouse->{button3_key}\n"),
- );
- substInFile {
- $_ = '' if /^\Qdev.mac_hid.mouse_button/;
- $_ .= $s if eof;
- } "$::prefix/etc/sysctl.conf";
- }
-}
-
-sub probe_wacom_devices {
- my ($modules_conf) = @_;
-
- $modules_conf->get_probeall("usb-interface") or return;
- my (@l) = detect_devices::usbWacom() or return;
-
- log::l("found usb wacom $_->{driver} $_->{description} ($_->{type})") foreach @l;
- my @wacom = eval {
- modules::load("wacom", "evdev");
- grep { detect_devices::tryOpen($_) } map_index { "input/event$::i" } @l;
- };
- @wacom or eval { modules::unload("evdev", "wacom") };
- @wacom;
-}
-
-sub detect_serial() {
- my ($t, $mouse, @wacom);
-
- #- Whouah! probing all devices from ttyS0 to ttyS3 once a time!
- detect_devices::probeSerialDevices();
-
- #- check new probing methods keep everything used here intact!
- foreach (0..3) {
- $t = detect_devices::probeSerial("/dev/ttyS$_") or next;
- if ($t->{CLASS} eq 'MOUSE') {
- $t->{MFG} ||= $t->{MANUFACTURER};
-
- $mouse = fullname2mouse("serial|Microsoft IntelliMouse") if $t->{MFG} eq 'MSH' && $t->{MODEL} eq '0001';
- $mouse = fullname2mouse("serial|Logitech MouseMan") if $t->{MFG} eq 'LGI' && $t->{MODEL} =~ /^80/;
- $mouse = fullname2mouse("serial|Genius NetMouse") if $t->{MFG} eq 'KYE' && $t->{MODEL} eq '0003';
-
- $mouse ||= fullname2mouse("serial|Generic 2 Button Mouse"); #- generic by default.
- $mouse->{device} = "ttyS$_";
- last;
- } elsif ($t->{CLASS} eq "PEN" || $t->{MANUFACTURER} eq "WAC") {
- push @wacom, "ttyS$_";
- }
- }
- $mouse, @wacom;
-}
-
-sub detect {
- my ($modules_conf) = @_;
-
- # let more USB tablets and touchscreens magically work at install time
- # through /dev/input/mice multiplexing:
- modules::probe_category('input/tablet');
- modules::probe_category('input/touchscreen');
-
- if (arch() =~ /^sparc/) {
- return fullname2mouse("sunmouse|Sun - Mouse");
- }
- if (arch() eq "ppc") {
- return fullname2mouse(detect_devices::hasMousePS2("usbmouse") ?
- "USB|1 button" :
- # No need to search for an ADB mouse. If I did, the PPC kernel would
- # find one whether or not I had one installed! So.. default to it.
- "busmouse|1 button");
- }
-
- my @wacom = probe_wacom_devices($modules_conf);
-
- if (c::kernel_version() =~ /^\Q2.6/) {
- $modules_conf->get_probeall("usb-interface") and eval { modules::load('usbhid') };
- if (cat_('/proc/bus/input/devices') =~ /^H: Handlers=mouse/m) {
- if (is_xbox()) {
- return fullname2mouse('Universal|Microsoft Xbox Controller S');
- }
- my $univ_mouse = fullname2mouse('Universal|Any PS/2 & USB mice', wacom => \@wacom);
- if (my ($synaptics_touchpad) = detect_devices::getSynapticsTouchpads()) {
- $univ_mouse->{auxmouse} = {
- name => N_("Synaptics Touchpad"),
- device => 'input/mice',
- XMOUSETYPE => 'auto-dev',
- ALPS => $synaptics_touchpad->{description} =~ /ALPS/,
- };
- }
- return $univ_mouse;
- }
- } else {
- my $ps2_mouse = detect_devices::hasMousePS2("psaux") && fullname2mouse("PS/2|Automatic", unsafe => 0);
-
- #- workaround for some special case were mouse is openable 1/2.
- if (!$ps2_mouse) {
- $ps2_mouse = detect_devices::hasMousePS2("psaux") && fullname2mouse("PS/2|Automatic", unsafe => 0);
- $ps2_mouse and detect_devices::hasMousePS2("psaux"); #- fake another open in order for XFree to see the mouse.
- }
-
- if ($modules_conf->get_probeall("usb-interface")) {
- sleep 2;
- if (my (@l) = detect_devices::usbMice()) {
- log::l(join('', "found usb mouse $_->{driver} $_->{description} (", if_($_->{type}, $_->{type}), ")")) foreach @l;
- if (eval { modules::load(qw(hid mousedev usbmouse)); detect_devices::tryOpen("usbmouse") }) {
- return fullname2mouse($l[0]{driver} =~ /Mouse:(.*)/ ? $1 : "USB|Wheel",
- if_($ps2_mouse, auxmouse => $ps2_mouse), #- for laptop, we kept the PS/2 as secondary (symbolic).
- wacom => \@wacom);
-
- }
- eval { modules::unload(qw(usbmouse mousedev hid)) };
- }
- } else {
- log::l("no usb interface found for mice");
- }
- if ($ps2_mouse) {
- return { wacom => \@wacom, %$ps2_mouse };
- }
- }
-
- #- probe serial device to make sure a wacom has been detected.
- eval { modules::load("serial") };
- my ($serial_mouse, @serial_wacom) = detect_serial(); push @wacom, @serial_wacom;
- if ($serial_mouse) {
- { wacom => \@wacom, %$serial_mouse };
- } elsif (@wacom) {
- #- in case only a wacom has been found, assume an inexistant mouse (necessary).
- fullname2mouse('none|No mouse', wacom => \@wacom);
- } elsif (c::kernel_version() =~ /^\Q2.6/) {
- fullname2mouse('Universal|Any PS/2 & USB mice', unsafe => 1);
- } else {
- fullname2mouse("PS/2|Automatic", unsafe => 1);
- }
-}
-
-sub load_modules {
- my ($mouse) = @_;
- my @l;
- for ($mouse->{type}) {
- /serial/ and @l = qw(serial);
- /USB/ and @l = qw(hid mousedev usbmouse);
- }
- foreach (@{$mouse->{wacom}}) {
- /ttyS/ and push @l, qw(serial);
- /event/ and push @l, qw(wacom evdev);
- }
- if ($mouse->{auxmouse} && $mouse->{auxmouse}{name} eq N_("Synaptics Touchpad")) {
- push @l, qw(evdev);
- }
- eval { modules::load(@l) };
-}
-
-sub set_xfree_conf {
- my ($mouse, $xfree_conf, $b_keep_auxmouse_unchanged) = @_;
-
- my ($synaptics, $mouse_) = partition { $_->{name} eq N_("Synaptics Touchpad") } ($mouse, if_($mouse->{auxmouse}, $mouse->{auxmouse}));
- my @mice = map {
- {
- Protocol => $_->{XMOUSETYPE},
- Device => "/dev/mouse",
- if_($_->{nbuttons} > 3, ZAxisMapping => [ $_->{nbuttons} > 5 ? '6 7' : '4 5' ]),
- if_($_->{nbuttons} < 3, Emulate3Buttons => undef, Emulate3Timeout => 50),
- if_($_->{EMULATEWHEEL}, Emulate3Buttons => undef, Emulate3Timeout => 50, EmulateWheel => undef, EmulateWheelButton => 2),
- };
- } @$mouse_;
-
- if (!$mouse->{auxmouse} && $b_keep_auxmouse_unchanged) {
- my (undef, @l) = $xfree_conf->get_mice;
- push @mice, @l;
- }
-
- $xfree_conf->set_mice(@mice);
-
- if (my @wacoms = @{$mouse->{wacom} || []}) {
- $xfree_conf->set_wacoms(map { { Device => "/dev/$_", USB => m|input/event| } } @wacoms);
- }
-
- $synaptics and $xfree_conf->set_synaptics(map { {
- Device => "/dev/$_->{device}",
- Protocol => $_->{XMOUSETYPE},
- Primary => 0,
- ALPS => $_->{ALPS},
- } } @$synaptics);
-}
-
-sub various_xfree_conf {
- my ($do_pkgs, $mouse) = @_;
-
- {
- my $f = "$::prefix/etc/X11/xinit.d/mouse_buttons";
- if ($mouse->{nbuttons} <= 5) {
- unlink($f);
- } else {
- output_with_perm($f, 0755, "xmodmap -e 'pointer = 1 2 3 6 7 4 5'\n");
- }
- }
- {
- my $f = "$::prefix/etc/X11/xinit.d/auxmouse_buttons";
- if (!$mouse->{auxmouse} || $mouse->{auxmouse}{nbuttons} <= 5) {
- unlink($f);
- } else {
- $do_pkgs->install('xinput');
- output_with_perm($f, 0755, "xinput set-button-map Mouse2 1 2 3 6 7 4 5\n");
- }
- }
- {
- my $f = "$::prefix/etc/X11/xinit.d/xpad";
- if ($mouse->{name} !~ /^Microsoft Xbox Controller/) {
- unlink($f);
- } else {
- output_with_perm($f, 0755, "xset m 1/8 1\n");
- }
- }
-
- if (member(N_("Synaptics Touchpad"), $mouse->{name}, $mouse->{auxmouse} && $mouse->{auxmouse}{name})) {
- $do_pkgs->install("synaptics");
- }
-}
-
-#- write_conf : write the mouse infos into the Xconfig files.
-#- input :
-#- $mouse : the hashtable containing the informations
-#- $mouse input
-#- $mouse->{nbuttons} : number of buttons : integer
-#- $mouse->{device} : device of the mouse : string : ex 'psaux'
-#- $mouse->{XMOUSETYPE} : type of the mouse for gpm : string : ex 'PS/2'
-#- $mouse->{type} : type (generic ?) of the mouse : string : ex 'PS/2'
-#- $mouse->{name} : name of the mouse : string : ex 'Standard'
-#- $mouse->{MOUSETYPE} : type of the mouse : string : ex "ps/2"
-#- $mouse->{XEMU3} : emulate 3rd button : string : 'yes' or 'no'
-sub write_conf {
- my ($do_pkgs, $modules_conf, $mouse, $b_keep_auxmouse_unchanged) = @_;
-
- &write($do_pkgs, $mouse);
- $modules_conf->write if $mouse->{device} eq "usbmouse" && !$::testing;
-
- eval {
- require Xconfig::xfree;
- my $xfree_conf = Xconfig::xfree->read;
- set_xfree_conf($mouse, $xfree_conf, $b_keep_auxmouse_unchanged);
- $xfree_conf->write;
- };
-}
-
-sub change_mouse_live {
- my ($mouse, $old) = @_;
-
- my $xId = xmouse2xId($mouse->{XMOUSETYPE});
- $old->{device} ne $mouse->{device} || $xId != xmouse2xId($old->{XMOUSETYPE}) or return;
-
- log::l("telling X server to use another mouse ($mouse->{XMOUSETYPE}, $xId)");
- eval { modules::load('serial') } if $mouse->{device} =~ /ttyS/;
-
- if (!$::testing) {
- devices::make($mouse->{device});
- symlinkf($mouse->{device}, "/dev/mouse");
- eval {
- require xf86misc::main;
- xf86misc::main::setMouseLive($ENV{DISPLAY}, $xId, $mouse->{nbuttons} < 3);
- };
- }
- 1;
-}
-
-sub test_mouse_install {
- my ($mouse, $x_protocol_changed) = @_;
- require ugtk2;
- ugtk2->import(qw(:wrappers :create));
- my $w = ugtk2->new('', disallow_big_help => 1);
- my $darea = Gtk2::DrawingArea->new;
- $darea->set_events([ 'button_press_mask', 'button_release_mask' ]); #$darea must be unrealized.
- gtkadd($w->{window},
- gtkpack(my $vbox_grab = Gtk2::VBox->new(0, 0),
- $darea,
- gtkset_sensitive(create_okcancel($w, undef, undef, 'edge'), 1)
- ),
- );
- test_mouse($mouse, $darea, $x_protocol_changed);
- $w->sync; # HACK
- Gtk2::Gdk->pointer_grab($vbox_grab->window, 1, 'pointer_motion_mask', $vbox_grab->window, undef, 0);
- my $r = $w->main;
- Gtk2::Gdk->pointer_ungrab(0);
- $r;
-}
-
-sub test_mouse_standalone {
- my ($mouse, $hbox) = @_;
- require ugtk2;
- ugtk2->import(qw(:wrappers));
- my $darea = Gtk2::DrawingArea->new;
- $darea->set_events([ 'button_press_mask', 'button_release_mask' ]); #$darea must be unrealized.
- gtkpack($hbox, gtkpack(gtkset_border_width(Gtk2::VBox->new(0, 10), 10), $darea));
- test_mouse($mouse, $darea);
-}
-
-sub test_mouse {
- my ($mouse, $darea, $b_x_protocol_changed) = @_;
-
- require ugtk2;
- ugtk2->import(qw(:wrappers));
- my $suffix = $mouse->{nbuttons} <= 2 ? '2b' : $mouse->{nbuttons} == 3 ? '3b' : '3b+';
- my %offsets = (mouse_2b_right => [ 93, 0 ], mouse_3b_right => [ 117, 0 ],
- mouse_2b_middle => [ 82, 80 ], mouse_3b_middle => [ 68, 0 ], 'mouse_3b+_middle' => [ 85, 67 ]);
- my %image_files = (
- mouse => "mouse_$suffix",
- left => 'mouse_' . ($suffix eq '3b+' ? '3b' : $suffix) . '_left',
- right => 'mouse_' . ($suffix eq '3b+' ? '3b' : $suffix) . '_right',
- if_($mouse->{nbuttons} > 2, middle => 'mouse_' . $suffix . '_middle'),
- up => 'arrow_up',
- down => 'arrow_down');
- my %images = map { $_ => ugtk2::gtkcreate_pixbuf("$image_files{$_}.png") } keys %image_files;
- my $width = $images{mouse}->get_width;
- my $height = round_up(min($images{mouse}->get_height, $::windowheight - 150), 6);
-
- my $draw_text = sub {
- my ($t, $y) = @_;
- my $layout = $darea->create_pango_layout($t);
- my ($w) = $layout->get_pixel_size;
- $darea->window->draw_layout($darea->style->black_gc,
- ($darea->allocation->width-$w)/2,
- ($darea->allocation->height-$height)/2 + $y,
- $layout);
- };
- my $draw_pixbuf = sub {
- my ($p, $x, $y, $w, $h) = @_;
- $w = $p->get_width;
- $h = $p->get_height;
- $p->render_to_drawable($darea->window, $darea->style->bg_gc('normal'), 0, 0,
- ($darea->allocation->width-$width)/2 + $x, ($darea->allocation->height-$height)/2 + $y,
- $w, $h, 'none', 0, 0);
- };
- my $draw_by_name = sub {
- my ($name) = @_;
- my $file = $image_files{$name};
- my ($x, $y) = @{$offsets{$file} || [ 0, 0 ]};
- $draw_pixbuf->($images{$name}, $x, $y);
- };
- my $drawarea = sub {
- $draw_by_name->('mouse');
- if ($::isInstall || 1) {
- $draw_text->(N("Please test the mouse"), 200);
- if ($b_x_protocol_changed && $mouse->{nbuttons} > 3 && $mouse->{device} eq 'psaux' && member($mouse->{XMOUSETYPE}, 'IMPS/2', 'ExplorerPS/2')) {
- $draw_text->(N("To activate the mouse,"), 240);
- $draw_text->(N("MOVE YOUR WHEEL!"), 260);
- }
- }
- };
-
- my $timeout;
- my $paintButton = sub {
- my ($nb) = @_;
- $timeout or $drawarea->();
- if ($nb == 0) {
- $draw_by_name->('left');
- } elsif ($nb == 2) {
- $draw_by_name->('right');
- } elsif ($nb == 1) {
- if ($mouse->{nbuttons} >= 3) {
- $draw_by_name->('middle');
- } else {
- my ($x, $y) = @{$offsets{mouse_2b_middle}};
- $darea->window->draw_arc($darea->style->black_gc,
- 1, ($darea->allocation->width-$width)/2 + $x, ($darea->allocation->height-$height)/2 + $y, 20, 25,
- 0, 360 * 64);
- }
- } elsif ($mouse->{nbuttons} > 3) {
- my ($x, $y) = @{$offsets{$image_files{middle}}};
- if ($nb == 3) {
- $draw_pixbuf->($images{up}, $x+6, $y-10);
- } elsif ($nb == 4) {
- $draw_pixbuf->($images{down}, $x+6, $y + $images{middle}->get_height + 2);
- }
- $draw_by_name->('middle');
- $timeout and Glib::Source->remove($timeout);
- $timeout = Glib::Timeout->add(100, sub { $drawarea->(); $timeout = 0; 0 });
- }
- };
-
- $darea->signal_connect(button_press_event => sub { $paintButton->($_[1]->button - 1) });
- $darea->signal_connect(scroll_event => sub { $paintButton->($_[1]->direction eq 'up' ? 3 : 4) });
- $darea->signal_connect(button_release_event => $drawarea);
- $darea->signal_connect(expose_event => $drawarea);
- $darea->set_size_request($width, $height);
-}
-
-
-=begin
-
-=head1 NAME
-
-mouse - Perl functions to handle mice
-
-=head1 SYNOPSYS
-
- require modules;
- require mouse;
- mouse::detect(modules::any_conf->read);
-
-=head1 DESCRIPTION
-
-C<mouse> is a perl module used by mousedrake to detect and configure the mouse.
-
-=head1 COPYRIGHT
-
-Copyright (C) 2000-2002 Mandriva <tvignaud@mandrakesoft.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 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-=cut
diff --git a/perl-install/mygtk2.pm b/perl-install/mygtk2.pm
deleted file mode 100644
index 65221d0b2..000000000
--- a/perl-install/mygtk2.pm
+++ /dev/null
@@ -1,910 +0,0 @@
-package mygtk2;
-
-use diagnostics;
-use strict;
-use lang;
-
-our @ISA = qw(Exporter);
-our @EXPORT = qw(gtknew gtkset gtkadd gtkval_register gtkval_modify);
-
-use c;
-use log;
-use common;
-
-use Gtk2;
-use Gtk2::Gdk::Keysyms;
-
-unless ($::no_ugtk_init) {
- !check_for_xserver() and print("Cannot be run in console mode.\n"), c::_exit(0);
- $::one_message_has_been_translated and warn("N() was called from $::one_message_has_been_translated BEFORE gtk2 initialisation, replace it with a N_() AND a translate() later.\n"), c::_exit(1);
-
- Gtk2->init;
- c::bind_textdomain_codeset($_, 'UTF8') foreach 'libDrakX', @::textdomains;
- $::need_utf8_i18n = 1;
-}
-Gtk2->croak_execeptions if (!$::no_ugtk_init || $::isInstall) && 0.95 < $Gtk2::VERSION;
-
-
-
-sub gtknew {
- my $class = shift;
- if (@_ % 2 != 0) {
- internal_error("gtknew $class: bad options @_");
- }
- if (my $r = find { ref $_->[0] } group_by2(@_)) {
- internal_error("gtknew $class: $r should be a string in @_");
- }
- my %opts = @_;
- _gtk(undef, $class, 'gtknew', \%opts);
-}
-
-sub gtkset {
- my $w = shift;
- my $class = ref($w);
- if (@_ % 2 != 0) {
- internal_error("gtkset $class: bad options @_");
- }
- if (my $r = find { ref $_->[0] } group_by2(@_)) {
- internal_error("gtkset $class: $r should be a string in @_");
- }
- my %opts = @_;
-
- $class =~ s/^(Gtk2|Gtk2::Gdk|mygtk2)::// or internal_error("gtkset unknown class $class");
-
- _gtk($w, $class, 'gtkset', \%opts);
-}
-
-sub gtkadd {
- my $w = shift;
- my $class = ref($w);
- if (@_ % 2 != 0) {
- internal_error("gtkadd $class: bad options @_");
- }
- if (my $r = find { ref $_->[0] } group_by2(@_)) {
- internal_error("gtkadd $class: $r should be a string in @_");
- }
- my %opts = @_;
- $class =~ s/^(Gtk2|Gtk2::Gdk|mygtk2)::// or internal_error("gtkadd unknown class $class");
-
- _gtk($w, $class, 'gtkadd', \%opts);
-}
-
-
-my %refs;
-
-sub gtkval_register {
- my ($w, $ref, $sub) = @_;
- push @{$w->{_ref}}, $ref;
- $w->signal_connect(destroy => sub {
- @{$refs{$ref}} = grep { $_->[1] != $w } @{$refs{$ref}};
- delete $refs{$ref} if !@{$refs{$ref}};
- });
- push @{$refs{$ref}}, [ $sub, $w ];
-}
-sub gtkval_modify {
- my ($ref, $val, @to_skip) = @_;
- my $prev = '' . $ref;
- $$ref = $val;
- if ($prev ne '' . $ref) {
- internal_error();
- }
- foreach (@{$refs{$ref} || []}) {
- my ($f, @para) = @$_;
- $f->(@para) if !member($f, @to_skip);
- }
-}
-
-my $global_tooltips;
-
-sub _gtk {
- my ($w, $class, $action, $opts) = @_;
-
- if (my $f = $mygtk2::{"_gtk__$class"}) {
- $w = $f->($w, $opts, $class, $action);
- } else {
- internal_error("$action $class: unknown class");
- }
-
- $w->set_size_request(delete $opts->{width} || -1, delete $opts->{height} || -1) if exists $opts->{width} || exists $opts->{height};
- if (my $position = delete $opts->{position}) {
- $w->move($position->[0], $position->[1]);
- }
- $w->set_name(delete $opts->{widget_name}) if exists $opts->{widget_name};
- $w->can_focus(delete $opts->{can_focus}) if exists $opts->{can_focus};
- $w->can_default(delete $opts->{can_default}) if exists $opts->{can_default};
- $w->grab_focus if delete $opts->{grab_focus};
- (delete $opts->{size_group})->add_widget($w) if $opts->{size_group};
- if (my $tip = delete $opts->{tip}) {
- $global_tooltips ||= Gtk2::Tooltips->new;
- $global_tooltips->set_tip($w, $tip);
- }
-
- if (%$opts && !$opts->{allow_unknown_options}) {
- internal_error("$action $class: unknown option(s) " . join(', ', keys %$opts));
- }
- $w;
-}
-
-
-sub _gtk__Button { &_gtk_any_Button }
-sub _gtk__ToggleButton { &_gtk_any_Button }
-sub _gtk__CheckButton { &_gtk_any_Button }
-sub _gtk_any_Button {
- my ($w, $opts, $class) = @_;
-
- if (!$w) {
- if (!$opts->{image}) {
- add2hash_($opts, { mnemonic => 1 });
- }
- $w = $opts->{image} ? "Gtk2::$class"->new :
- delete $opts->{mnemonic} ? "Gtk2::$class"->new_with_mnemonic(delete $opts->{text} || '') :
- "Gtk2::$class"->new_with_label(delete $opts->{text} || '');
-
- $w->{format} = delete $opts->{format} if exists $opts->{format};
- }
-
- if (my $image = delete $opts->{image}) {
- $w->add($image);
- $image->show;
- }
- $w->set_sensitive(delete $opts->{sensitive}) if exists $opts->{sensitive};
- $w->set_relief(delete $opts->{relief}) if exists $opts->{relief};
-
- if (my $text_ref = delete $opts->{text_ref}) {
- my $set = sub {
- eval { $w->set_label(may_apply($w->{format}, $$text_ref)) };
- };
- gtkval_register($w, $text_ref, $set);
- $set->();
- } elsif (exists $opts->{text}) {
- $w->set_label(delete $opts->{text});
- }
-
- if ($class eq 'Button') {
- $w->signal_connect(clicked => delete $opts->{clicked}) if exists $opts->{clicked};
- } else {
- if (my $active_ref = delete $opts->{active_ref}) {
- my $set = sub { $w->set_active($$active_ref) };
- $w->signal_connect(toggled => sub {
- gtkval_modify($active_ref, $w->get_active, $set);
- });
- gtkval_register($w, $active_ref, $set);
- gtkval_register($w, $active_ref, delete $opts->{toggled}) if exists $opts->{toggled};
- $set->();
- } else {
- $w->set_active(delete $opts->{active}) if exists $opts->{active};
- $w->signal_connect(toggled => delete $opts->{toggled}) if exists $opts->{toggled};
- }
- }
- $w;
-}
-
-sub _gtk__CheckMenuItem {
- my ($w, $opts, $class) = @_;
-
- if (!$w) {
- add2hash_($opts, { mnemonic => 1 });
-
- $w = $opts->{image} || !exists $opts->{text} ? "Gtk2::$class"->new :
- delete $opts->{mnemonic} ? "Gtk2::$class"->new_with_label(delete $opts->{text}) :
- "Gtk2::$class"->new_with_mnemonic(delete $opts->{text});
- }
-
- $w->set_active(delete $opts->{active}) if exists $opts->{active};
- $w->signal_connect(toggled => delete $opts->{toggled}) if exists $opts->{toggled};
- $w;
-}
-
-sub _gtk___SpinButton {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $opts->{adjustment} ||= do {
- add2hash_($opts, { step_increment => 1, page_increment => 5, page_size => 1, value => delete $opts->{lower} });
- Gtk2::Adjustment->new(delete $opts->{value}, delete $opts->{lower}, delete $opts->{upper}, delete $opts->{step_increment}, delete $opts->{page_increment}, delete $opts->{page_size});
- };
- $w = Gtk2::SpinButton->new(delete $opts->{adjustment}, delete $opts->{climb_rate} || 0, delete $opts->{digits} || 0);
- }
-
- $w->signal_connect(value_changed => delete $opts->{value_changed}) if exists $opts->{value_changed};
- $w;
-}
-
-sub _gtk__HScale {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $opts->{adjustment} ||= do {
- add2hash_($opts, { step_increment => 1, page_increment => 5, page_size => 1, value => delete $opts->{lower} });
- Gtk2::Adjustment->new(delete $opts->{value}, delete $opts->{lower}, (delete $opts->{upper}) + 1, delete $opts->{step_increment}, delete $opts->{page_increment}, delete $opts->{page_size});
- };
- $w = Gtk2::HScale->new(delete $opts->{adjustment});
- }
-
- $w->signal_connect(value_changed => delete $opts->{value_changed}) if exists $opts->{value_changed};
- $w;
-}
-
-sub _gtk__VSeparator { &_gtk_any_simple }
-sub _gtk__HSeparator { &_gtk_any_simple }
-sub _gtk__Calendar { &_gtk_any_simple }
-
-sub _gtk__DrawingArea {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $w = Gtk2::DrawingArea->new;
- }
- $w->signal_connect(expose_event => delete $opts->{expose_event}) if exists $opts->{expose_event};
- $w;
-}
-
-sub _gtk__Pixbuf {
- my ($w, $opts) = @_;
-
- if (!$w) {
- my $name = delete $opts->{file} or internal_error("missing file");
- my $file = _find_imgfile($name) or internal_error("can not find $name");
- $w = Gtk2::Gdk::Pixbuf->new_from_file($file);
- }
- $w;
-}
-
-sub _gtk__Image {
- my ($w, $opts, $class) = @_;
-
- if (!$w) {
- $w = "Gtk2::$class"->new;
- $w->{format} = delete $opts->{format} if exists $opts->{format};
- }
-
- if (my $name = delete $opts->{file}) {
- my $file = _find_imgfile(may_apply($w->{format}, $name)) or internal_error("can not find $name");
- $w->set_from_file($file);
- } elsif (my $file_ref = delete $opts->{file_ref}) {
- my $set = sub {
- my $file = _find_imgfile(may_apply($w->{format}, $$file_ref)) or internal_error("can not find $$file_ref");
- $w->set_from_file($file);
- };
- gtkval_register($w, $file_ref, $set);
- $set->();
- }
- $w;
-}
-
-sub _gtk__WrappedLabel {
- my ($w, $opts) = @_;
-
- $opts->{line_wrap} = 1;
- _gtk__Label($w, $opts);
-}
-
-sub _gtk__Label {
- my ($w, $opts) = @_;
-
- if ($w) {
- $w->set_text(delete $opts->{text}) if exists $opts->{text};
- } else {
- $w = exists $opts->{text} ? Gtk2::Label->new(delete $opts->{text}) : Gtk2::Label->new;
- $w->set_justify(delete $opts->{justify}) if exists $opts->{justify};
- $w->set_line_wrap(delete $opts->{line_wrap}) if exists $opts->{line_wrap};
- $w->set_alignment(@{delete $opts->{alignment}}) if exists $opts->{alignment};
- $w->modify_font(Gtk2::Pango::FontDescription->from_string(delete $opts->{font})) if exists $opts->{font};
- }
-
- $w->set_markup(delete $opts->{text_markup}) if exists $opts->{text_markup};
- $w;
-}
-
-sub _gtk__Entry {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $w = Gtk2::Entry->new;
- $w->set_editable(delete $opts->{editable}) if exists $opts->{editable};
- }
-
- $w->set_text(delete $opts->{text}) if exists $opts->{text};
- $w->signal_connect(key_press_event => delete $opts->{key_press_event}) if exists $opts->{key_press_event};
- $w;
-}
-
-sub _gtk__TextView {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $w = Gtk2::TextView->new;
- $w->set_editable(delete $opts->{editable}) if exists $opts->{editable};
- $w->set_wrap_mode(delete $opts->{wrap_mode}) if exists $opts->{wrap_mode};
- $w->set_cursor_visible(delete $opts->{cursor_visible}) if exists $opts->{cursor_visible};
- }
-
- _text_insert($w, delete $opts->{text}) if exists $opts->{text};
- $w;
-}
-
-sub _gtk__ComboBox {
- my ($w, $opts, $_class, $action) = @_;
-
- if (!$w) {
- $w = Gtk2::ComboBox->new_text;
- $w->{format} = delete $opts->{format} if exists $opts->{format};
-
- }
- my $set_list = sub {
- $w->{formatted_list} = $w->{format} ? [ map { $w->{format}($_) } @{$w->{list}} ] : $w->{list};
- $w->get_model->clear;
- $w->append_text($_) foreach @{$w->{formatted_list}};
- };
- if (my $list_ref = delete $opts->{list_ref}) {
- !$opts->{list} or internal_error("both list and list_ref");
- my $set = sub {
- $w->{list} = $$list_ref;
- $set_list->();
- };
- gtkval_register($w, $list_ref, $set);
- $set->();
- } elsif (exists $opts->{list}) {
- $w->{list} = delete $opts->{list};
- $set_list->();
- }
-
- if ($action eq 'gtknew') {
- if (my $text_ref = delete $opts->{text_ref}) {
- my $set = sub {
- my $val = may_apply($w->{format}, $$text_ref);
- eval { $w->set_active(find_index { $_ eq $val } @{$w->{formatted_list}}) };
- };
- $w->signal_connect(changed => sub {
- gtkval_modify($text_ref, $w->{list}[$w->get_active], $set);
- });
- gtkval_register($w, $text_ref, $set);
- gtkval_register($w, $text_ref, delete $opts->{changed}) if exists $opts->{changed};
- $set->();
- } else {
- my $val = delete $opts->{text};
- eval { $w->set_active(find_index { $_ eq $val } @{$w->{formatted_list}}) } if defined $val;
- $w->signal_connect(changed => delete $opts->{changed}) if exists $opts->{changed};
- }
- }
- $w;
-}
-
-sub _gtk__ScrolledWindow {
- my ($w, $opts, $_class, $action) = @_;
-
- if (!$w) {
- $w = Gtk2::ScrolledWindow->new(undef, undef);
- $w->set_policy(delete $opts->{h_policy} || 'automatic', delete $opts->{v_policy} || 'automatic');
- }
-
- if (my $child = delete $opts->{child}) {
- if (member(ref($child), qw(Gtk2::Layout Gtk2::Text Gtk2::TextView Gtk2::TreeView))) {
- $w->add($child);
- } else {
- $w->add_with_viewport($child);
- }
- $child->set_focus_vadjustment($w->get_vadjustment) if $child->can('set_focus_vadjustment');
- $child->set_left_margin(6) if ref($child) =~ /Gtk2::TextView/;
- $child->show;
-
- $w->child->set_shadow_type(delete $opts->{shadow_type}) if exists $opts->{shadow_type};
-
- if ($action eq 'gtknew' && ref($child) =~ /Gtk2::TextView|Gtk2::TreeView/) {
- $w = gtknew('Frame', shadow_type => 'in', child => $w);
- }
- }
- $w;
-}
-
-sub _gtk__Frame {
- my ($w, $opts) = @_;
-
- if ($w) {
- $w->set_label(delete $opts->{text}) if exists $opts->{text};
- } else {
- $w = Gtk2::Frame->new(delete $opts->{text});
- $w->set_border_width(delete $opts->{border_width}) if exists $opts->{border_width};
- $w->set_shadow_type(delete $opts->{shadow_type}) if exists $opts->{shadow_type};
- }
-
- if (my $child = delete $opts->{child}) {
- $w->add($child);
- $child->show;
- }
- $w;
-}
-
-sub _gtk__Window { &_gtk_any_Window }
-sub _gtk__Dialog { &_gtk_any_Window }
-sub _gtk__Plug { &_gtk_any_Window }
-sub _gtk_any_Window {
- my ($w, $opts, $class) = @_;
-
- if (!$w) {
- if ($class eq 'Window') {
- $w = "Gtk2::$class"->new(delete $opts->{type} || 'toplevel');
- } elsif ($class eq 'Plug') {
- $opts->{socket_id} or internal_error("can not create a Plug without a socket_id");
- $w = "Gtk2::$class"->new(delete $opts->{socket_id});
- } else {
- $w = "Gtk2::$class"->new;
- }
-
- $w->set_modal(delete $opts->{modal}) if exists $opts->{modal};
- $w->set_transient_for(delete $opts->{transient_for}) if exists $opts->{transient_for};
- $w->set_border_width(delete $opts->{border_width}) if exists $opts->{border_width};
- $w->set_shadow_type(delete $opts->{shadow_type}) if exists $opts->{shadow_type};
- $w->set_position(delete $opts->{position_policy}) if exists $opts->{position_policy};
- my $icon_no_error = $opts->{icon_no_error};
- if (my $name = delete $opts->{icon} || delete $opts->{icon_no_error}) {
- if (my $f = _find_imgfile($name)) {
- $w->set_icon(gtknew('Pixbuf', file => $f));
- } elsif (!$icon_no_error) {
- internal_error("can not find $name");
- }
- }
- }
- $w->set_title(delete $opts->{title}) if exists $opts->{title};
-
- if (my $child = delete $opts->{child}) {
- $w->add($child);
- $child->show;
- }
- $w;
-}
-
-sub _gtk__MagicWindow {
- my ($w, $opts) = @_;
-
- my $pop_it = delete $opts->{pop_it} || !$::isWizard && !$::isEmbedded || $::WizardTable && do {
- #- do not take into account the wizard banner
- any { !$_->isa('Gtk2::DrawingArea') && $_->visible } $::WizardTable->get_children;
- };
-
- my $sub_child = delete $opts->{child} or internal_error("missing child");
-
- if ($pop_it) {
- $opts->{child} = $::isInstall ?
- gtknew('Frame', shadow_type => 'out',
- child => gtknew('Frame', shadow_type => 'none', border_width => 3, child => $sub_child)) :
- $sub_child;
-
- $w = _create_Window($opts);
- } else {
- if (!$::WizardWindow) {
-
- my $banner;
- if (!$::isEmbedded && !$::isInstall && $::Wizard_title) {
- $banner = Gtk2::Banner->new($opts->{icon_no_error}, $::Wizard_title) or log::l("ERROR: missing wizard banner");
- }
- $::WizardTable = gtknew('VBox', if_($banner, children_tight => [ $banner ]));
-
- if ($::isEmbedded) {
- add2hash($opts, {
- socket_id => $::XID,
- child => $::WizardTable,
- });
- $::Plug = $::WizardWindow = _gtk(undef, 'Plug', 'gtknew', $opts);
- sync($::WizardWindow);
- } else {
- add2hash($opts, {
- child => gtknew('Frame', shadow_type => 'out', child => $::WizardTable),
- });
- $::WizardWindow = _create_Window($opts);
- }
- } else {
- %$opts = ();
- }
-
- set_main_window_size($::WizardWindow);
- $sub_child->set_border_width(10);
-
- $w = $::WizardWindow;
- gtkadd($::WizardTable, children_loose => [ $sub_child ]);
- }
- bless { real_window => $w, child => $sub_child, pop_it => $pop_it }, 'mygtk2::MagicWindow';
-}
-
-sub _gtk__FileSelection {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $w = Gtk2::FileSelection->new(delete $opts->{title} || '');
- gtkset($w->ok_button, %{delete $opts->{ok_button}}) if exists $opts->{ok_button};
- gtkset($w->cancel_button, %{delete $opts->{cancel_button}}) if exists $opts->{cancel_button};
- }
- $w;
-}
-
-sub _gtk__FileChooser {
- my ($w, $opts) = @_;
-
- #- no nice way to have a {file_ref} on a FileChooser since selection_changed only works for browsing, not file/folder creation
-
- if (!$w) {
- my $action = delete $opts->{action} || internal_error("missing action for FileChooser");
- $w = Gtk2::FileChooserWidget->new($action);
-
- my $file = $opts->{file} && delete $opts->{file};
-
- if (my $dir = delete $opts->{directory} || $file && dirname($file)) {
- $w->set_current_folder($dir);
- }
- if ($file) {
- my $meth = $action =~ /save|create/ ? 'set_current_name' : 'set_filename';
- $w->$meth($file);
- }
- }
- $w;
-}
-
-sub _gtk__VBox { &_gtk_any_Box }
-sub _gtk__HBox { &_gtk_any_Box }
-sub _gtk_any_Box {
- my ($w, $opts, $class, $action) = @_;
-
- if (!$w) {
- $w = "Gtk2::$class"->new(0,0);
- $w->set_homogeneous(delete $opts->{homogenous}) if exists $opts->{homogenous};
- $w->set_spacing(delete $opts->{spacing}) if exists $opts->{spacing};
- $w->set_border_width(delete $opts->{border_width}) if exists $opts->{border_width};
- } elsif ($action eq 'gtkset') {
- $_->destroy foreach $w->get_children;
- }
-
- _gtknew_handle_children($w, $opts);
- $w;
-}
-
-sub _gtk__VButtonBox { &_gtk_any_ButtonBox }
-sub _gtk__HButtonBox { &_gtk_any_ButtonBox }
-sub _gtk_any_ButtonBox {
- my ($w, $opts, $class, $action) = @_;
-
- if (!$w) {
- $w = "Gtk2::$class"->new;
- $w->set_layout(delete $opts->{layout} || 'spread');
- } elsif ($action eq 'gtkset') {
- $_->destroy foreach $w->get_children;
- }
-
- _gtknew_handle_children($w, $opts);
- $w;
-}
-
-sub _gtk__Notebook {
- my ($w, $opts) = @_;
-
- if (!$w) {
- $w = Gtk2::Notebook->new;
- $w->set_property('show-tabs', delete $opts->{show_tabs}) if exists $opts->{show_tabs};
- $w->set_property('show-border', delete $opts->{show_border}) if exists $opts->{show_border};
- }
-
- if (exists $opts->{children}) {
- foreach (group_by2(@{delete $opts->{children}})) {
- my ($title, $page) = @$_;
- $w->append_page($page, $title);
- $page->show;
- $title->show;
- }
- }
- $w;
-}
-
-sub _gtk__Table {
- my ($w, $opts) = @_;
-
- if (!$w) {
- add2hash_($opts, { xpadding => 5, ypadding => 0, border_width => $::isInstall ? 3 : 10 });
-
- $w = Gtk2::Table->new(0, 0, delete $opts->{homogeneous} || 0);
- $w->set_col_spacings(delete $opts->{col_spacings} || 0);
- $w->set_row_spacings(delete $opts->{row_spacings} || 0);
- $w->set_border_width(delete $opts->{border_width});
- $w->{$_} = delete $opts->{$_} foreach 'xpadding', 'ypadding', 'mcc';
- }
-
- each_index {
- my ($i, $l) = ($::i, $_);
- each_index {
- my $j = $::i;
- if ($_) {
- ref $_ or $_ = Gtk2::WrappedLabel->new($_);
- $j != $#$l && !$w->{mcc} ?
- $w->attach($_, $j, $j + 1, $i, $i + 1,
- 'fill', 'fill', $w->{xpadding}, $w->{ypadding}) :
- $w->attach($_, $j, $j + 1, $i, $i + 1,
- ['expand', 'fill'], ref($_) eq 'Gtk2::ScrolledWindow' || $_->get_data('must_grow') ? ['expand', 'fill'] : [], 0, 0);
- $_->show;
- }
- } @$l;
- } @{delete $opts->{children} || []};
-
- $w;
-}
-
-sub _gtk_any_simple {
- my ($w, $_opts, $class) = @_;
-
- $w ||= "Gtk2::$class"->new;
-}
-
-sub _gtknew_handle_children {
- my ($w, $opts) = @_;
-
- my @child = exists $opts->{children_tight} ? map { [ 0, $_ ] } @{delete $opts->{children_tight}} :
- exists $opts->{children_loose} ? map { [ 1, $_ ] } @{delete $opts->{children_loose}} :
- exists $opts->{children} ? group_by2(@{delete $opts->{children}}) : ();
-
- my $padding = delete $opts->{padding};
-
- foreach (@child) {
- my ($fill, $child) = @$_;
- $fill eq '0' || $fill eq '1' or internal_error("odd {children} parameter must be 0 or 1 (got $fill)");
- ref $child or $child = Gtk2::WrappedLabel->new($child);
- $w->pack_start($child, $fill, $fill, $padding || 0);
- $child->show;
- }
-}
-
-#- this magic function redirects method calls:
-#- * default is to redirect them to the {child}
-#- * if the {child} doesn't handle the method, we try with the {real_window}
-#- (eg : add_accel_group set_position set_default_size
-#- * a few methods are handled specially
-my %for_real_window = map { $_ => 1 } qw(show_all size_request);
-sub mygtk2::MagicWindow::AUTOLOAD {
- my ($w, @args) = @_;
-
- my ($meth) = $mygtk2::MagicWindow::AUTOLOAD =~ /mygtk2::MagicWindow::(.*)/;
-
- my ($s1, $s2) = $meth eq 'show'
- ? ('real_window', 'child') :
- $meth eq 'get' && $args[0] eq 'window-position' ||
- $w->{pop_it} && ($meth eq 'destroy' || $meth eq 'hide') ||
- $for_real_window{$meth} ||
- !$w->{child}->can($meth)
- ? 'real_window'
- : 'child';
-
-#- warn "mygtk2::MagicWindow::$meth", first($w =~ /HASH(.*)/), " on $s1 (@args)\n";
-
- $w->{$s2}->$meth(@args) if $s2;
- $w->{$s1}->$meth(@args);
-}
-
-sub _create_Window {
- my ($opts) = @_;
-
- my $no_Window_Manager = !$::isStandalone;
-
- add2hash($opts, {
- if_(!$::isInstall && !$::isWizard, border_width => 5),
-
- #- policy: during install, we need a special code to handle the weird centering, see below
- position_policy => $::isInstall ? 'none' : $no_Window_Manager ? 'center-always' : 'center-on-parent',
-
- if_($::isInstall, position => [
- $::rootwidth - ($::windowwidth + $::real_windowwidth) / 2,
- $::logoheight + ($::windowheight - $::real_windowheight) / 2,
- ]),
- });
- my $w = _gtk(undef, 'Window', 'gtknew', $opts);
-
- #- when the window is closed using the window manager "X" button (or alt-f4)
- $w->signal_connect(delete_event => sub {
- if ($::isWizard) {
- $w->destroy;
- die 'wizcancel';
- } else {
- Gtk2->main_quit;
- }
- });
-
- if ($no_Window_Manager) {
- _force_keyboard_focus($w);
- }
-
- if ($::isInstall) {
- require install_gtk; #- for perl_checker
- install_gtk::handle_unsafe_mouse($::o, $w);
- $w->signal_connect(key_press_event => \&install_gtk::special_shortcuts);
-
- #- force center at a weird position, this can't be handled by position_policy
- #- because center-on-parent is a window manager hint, and we don't have a WM
- my ($wi, $he);
- $w->signal_connect(size_allocate => sub {
- my (undef, $event) = @_;
- my @w_size = $event->values;
- return if $w_size[2] == $wi && $w_size[3] == $he; #BUG
- (undef, undef, $wi, $he) = @w_size;
-
- $w->move(max(0, $::rootwidth - ($::windowwidth + $wi) / 2),
- max(0, $::logoheight + ($::windowheight - $he) / 2));
- });
- #- without this, the focus is broken during install, though this is not needed during X test, why??
- $w->show;
- }
-
- $w;
-}
-
-my $current_window;
-sub _force_keyboard_focus {
- my ($w) = @_;
-
- sub _XSetInputFocus {
- my ($w) = @_;
- if ($current_window == $w) {
- $w->window->XSetInputFocus;
- } else {
- log::l("not XSetInputFocus since already done and not on top");
- }
- 0;
- }
-
- #- force keyboard focus instead of mouse focus
- my $previous_current_window = $current_window;
- $current_window = $w;
- $w->signal_connect(expose_event => \&_XSetInputFocus);
- $w->signal_connect(destroy => sub { $current_window = $previous_current_window });
-}
-
-sub _find_imgfile {
- my ($name) = @_;
-
- if ($name =~ m|/| && -f $name) {
- $name;
- } else {
- foreach my $path (_icon_paths()) {
- foreach ('', '.png', '.xpm') {
- my $file = "$path/$name$_";
- -f $file and return $file;
- }
- }
- }
-}
-
-# _text_insert() can be used with any of choose one of theses styles:
-# - no tags:
-# _text_insert($textview, "My text..");
-# - anonymous tags:
-# _text_insert($textview, [ [ 'first text', { 'foreground' => 'blue', 'background' => 'green', ... } ],
-# [ 'second text' ],
-# [ 'third', { 'font' => 'Serif 15', ... } ],
-# ... ]);
-# - named tags:
-# $textview->{tags} = {
-# 'blue_green' => { 'foreground' => 'blue', 'background' => 'green', ... },
-# 'big_font' => { 'font' => 'Serif 35', ... },
-# }
-# _text_insert($textview, [ [ 'first text', 'blue_green' ],
-# [ 'second', 'big_font' ],
-# ... ]);
-# - mixed anonymous and named tags:
-# $textview->{tags} = {
-# 'blue_green' => { 'foreground' => 'blue', 'background' => 'green', ... },
-# 'big_font' => { 'font' => 'Serif 35', ... },
-# }
-# _text_insert($textview, [ [ 'first text', 'blue_green' ],
-# [ 'second text' ],
-# [ 'third', 'big_font' ],
-# [ 'fourth', { 'font' => 'Serif 15', ... } ],
-# ... ]);
-sub _text_insert {
- my ($textview, $t, %opts) = @_;
- my $buffer = $textview->get_buffer;
- $buffer->{tags} ||= {};
- $buffer->{gtk_tags} ||= {};
- my $gtk_tags = $buffer->{gtk_tags};
- my $tags = $buffer->{tags};
- if (ref($t) eq 'ARRAY') {
- $opts{append} or $buffer->set_text('');
- foreach my $token (@$t) {
- my ($item, $tag) = @$token;
- my $iter1 = $buffer->get_end_iter;
- if ($item =~ /^Gtk2::Gdk::Pixbuf/) {
- $buffer->insert_pixbuf($iter1, $item);
- next;
- }
- if ($tag) {
- if (ref($tag)) {
- # use anonymous tags
- $buffer->insert_with_tags($iter1, $item, $buffer->create_tag(undef, %$tag));
- } else {
- # fast text insertion:
- # since in some contexts (eg: localedrake, rpmdrake), we use quite a lot of identical tags,
- # it's much more efficient and less memory pressure to use named tags
- $gtk_tags->{$tag} ||= $buffer->create_tag($tag, %{$tags->{$token->[1]}});
- $buffer->insert_with_tags($iter1, $item, $gtk_tags->{$tag});
- }
- } else {
- $buffer->insert($iter1, $item);
- }
- }
- } else {
- if ($opts{append}) {
- $buffer->insert($buffer->get_end_iter, $t);
- } else {
- $buffer->set_text($t);
- }
- }
- #- the following line is needed to move the cursor to the beginning, so that if the
- #- textview has a scrollbar, it will not scroll to the bottom when focusing (#3633)
- $buffer->place_cursor($buffer->get_start_iter);
- $textview->set_wrap_mode($opts{wrap_mode} || 'word');
- $textview->set_editable($opts{editable} || 0);
- $textview->set_cursor_visible($opts{visible} || 0);
- $textview;
-}
-
-sub set_main_window_size {
- my ($window) = @_;
- my ($width, $height) = $::isInstall ? ($::real_windowwidth, $::real_windowheight) : $::isWizard ? (540, 360) : (600, 400);
- $window->set_size_request($width, $height);
-}
-
-my @icon_paths;
-sub add_icon_path { push @icon_paths, @_ }
-sub _icon_paths() {
- (@icon_paths, (exists $ENV{SHARE_PATH} ? ($ENV{SHARE_PATH}, "$ENV{SHARE_PATH}/icons", "$ENV{SHARE_PATH}/libDrakX/pixmaps") : ()),
- "/usr/lib/libDrakX/icons", "pixmaps", 'standalone/icons', '/usr/share/rpmdrake/icons');
-}
-
-sub main {
- my ($window, $o_verif) = @_;
- my $destroyed;
- $window->signal_connect(destroy => sub { $destroyed = 1 });
- $window->show;
- do { Gtk2->main } while (!$destroyed && $o_verif && !$o_verif->());
- may_destroy($window);
- flush();
-}
-
-sub sync {
- my ($window) = @_;
- $window->show;
- flush();
-}
-
-sub flush() {
- Gtk2->main_iteration while Gtk2->events_pending;
-}
-
-sub may_destroy {
- my ($w) = @_;
- $w->destroy if $w;
-}
-
-sub root_window() {
- my $root if 0;
- $root ||= Gtk2::Gdk->get_default_root_window;
-}
-
-sub rgb2color {
- my ($r, $g, $b) = @_;
- my $color = Gtk2::Gdk::Color->new($r, $g, $b);
- root_window()->get_colormap->rgb_find_color($color);
- $color;
-}
-
-sub set_root_window_background {
- my ($r, $g, $b) = @_;
- my $root = root_window();
- my $gc = Gtk2::Gdk::GC->new($root);
- my $color = rgb2color($r, $g, $b);
- $gc->set_rgb_fg_color($color);
- set_root_window_background_with_gc($gc);
-}
-
-sub set_root_window_background_with_gc {
- my ($gc) = @_;
- my $root = root_window();
- my ($w, $h) = $root->get_size;
- $root->set_background($gc->get_values->{foreground});
- $root->draw_rectangle($gc, 1, 0, 0, $w, $h);
-}
-
-1;
diff --git a/perl-install/network/activefw.pm b/perl-install/network/activefw.pm
deleted file mode 100644
index 5ddd696d2..000000000
--- a/perl-install/network/activefw.pm
+++ /dev/null
@@ -1,151 +0,0 @@
-package activefw;
-
-use Net::DBus;
-use Net::DBus::Binding::Watch;
-use Gtk2::Helper;
-use POSIX qw(strftime);
-use Socket;
-
-sub new {
- my ($type, $filter) = @_;
-
- my $bus = Net::DBus->system;
- my $con = $bus->{connection};
-
- $con->add_filter($filter);
- $con->add_match("type='signal',interface='com.mandrakesoft.activefirewall'");
-
- set_DBus_watch($con);
- $con->dispatch;
-
- my $o = bless {
- bus => $bus,
- daemon => $daemon
- }, $type;
-
- $o->find_daemon;
-
- $o;
-}
-
-sub find_daemon {
- my ($o) = @_;
- my $service = $o->{bus}->get_service("com.mandrakesoft.activefirewall.daemon");
- $o->{daemon} = $service->get_object("/com/mandrakesoft/activefirewall", "com.mandrakesoft.activefirewall.daemon");
-}
-
-sub set_DBus_watch {
- my ($con) = @_;
- $con->set_watch_callbacks(sub {
- my ($con, $watch) = @_;
- my $flags = $watch->get_flags;
- if ($flags & &Net::DBus::Binding::Watch::READABLE) {
- Gtk2::Helper->add_watch($watch->get_fileno, 'in', sub {
- $watch->handle(&Net::DBus::Binding::Watch::READABLE);
- $con->dispatch;
- 1;
- });
- }
- #- do nothing for WRITABLE watch, we dispatch when needed
- }, undef, undef); #- do nothing when watch is disabled or toggled yet
-}
-
-sub dispatch {
- my ($o) = @_;
- $o->{bus}{connection}->dispatch;
-}
-
-sub call_method {
- my ($o, $method, @args) = @_;
- my @ret;
- eval {
- @ret = $o->{daemon}->$method(@args);
- };
- if ($@) {
- print "($method) exception: $@\n";
- $o->dispatch;
- return;
- }
- @ret;
-}
-
-sub blacklist {
- my ($o, $seq, $blacklist) = @_;
- $o->call_method('Blacklist',
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $seq),
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $blacklist));
-}
-
-sub unblacklist {
- my ($o, $addr) = @_;
- $o->call_method('UnBlacklist',
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
-}
-
-sub whitelist {
- my ($o, $addr) = @_;
- $o->call_method('Whitelist',
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
-}
-
-sub unwhitelist {
- my ($o, $addr) = @_;
- $o->call_method('UnWhitelist',
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $addr));
-}
-
-sub get_interactive {
- my ($o) = @_;
- $o->call_method('GetMode');
-}
-
-sub set_interactive {
- my ($o, $mode) = @_;
- $o->call_method('SetMode',
- Net::DBus::Binding::Value->new(&Net::DBus::Binding::Message::TYPE_UINT32, $mode));
-}
-
-sub get_reports {
- my ($o) = @_;
- $o->call_method('GetReports');
-}
-
-sub get_blacklist {
- my ($o) = @_;
- $o->call_method('GetBlacklist');
-}
-
-sub get_whitelist {
- my ($o) = @_;
- $o->call_method('GetWhitelist');
-}
-
-sub format_date {
- my ($timestamp) = @_;
- strftime("%c", localtime($timestamp));
-}
-
-sub get_service {
- my ($port) = @_;
- getservbyport($port, undef) || $port;
-}
-
-sub get_ip_address {
- my ($addr) = @_;
- inet_ntoa(pack('N', $addr));
-}
-
-sub resolve_address {
- my ($ip_addr) = @_;
- #- try to resolve address, timeout after 2 seconds
- my $hostname;
- eval {
- local $SIG{ALRM} = sub { die "ALARM" };
- alarm 2;
- $hostname = gethostbyaddr(inet_aton($ip_addr), AF_INET);
- alarm 0;
- };
- $hostname || $ip_addr;
-}
-
-1;
diff --git a/perl-install/network/adsl.pm b/perl-install/network/adsl.pm
deleted file mode 100644
index d12627387..000000000
--- a/perl-install/network/adsl.pm
+++ /dev/null
@@ -1,388 +0,0 @@
-package network::adsl; # $Id$
-
-use common;
-use run_program;
-use network::tools;
-use network::ethernet;
-use modules;
-use vars qw(@ISA @EXPORT);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(adsl_conf_backend);
-
-
-sub get_wizard {
- my ($wiz) = @_;
- my $netc = $wiz->{var}{netc};
-
- my %l = (
- 'pppoe' => N("use PPPoE"),
- 'pptp' => N("use PPTP"),
- 'dhcp' => N("use DHCP"),
- 'speedtouch' => N("Alcatel Speedtouch USB") . if_($netc->{autodetect}{adsl}{speedtouch}, N(" - detected")),
- 'sagem' => N("Sagem (using PPPoA) USB") . if_($netc->{autodetect}{adsl}{sagem}, N(" - detected")),
- 'sagem_dhcp' => N("Sagem (using DHCP) USB") . if_($netc->{autodetect}{adsl}{sagem}, N(" - detected")),
- # 'eci' => N("ECI Hi-Focus"), # this one needs eci agreement
- );
-
- $wiz->{var}{adsl} = {
- connection_list => \%l,
- type => "",
- };
- add2hash($wiz->{pages},
- {
- adsl_old => {
- name => N("Connect to the Internet") . "\n\n" .
- N("The most common way to connect with adsl is pppoe.
-Some connections use PPTP, a few use DHCP.
-If you do not know, choose 'use PPPoE'"),
- data => [
- {
- label => N("ADSL connection type:"), val => \$wiz->{var}{adsl}{type}, list => [ sort values %l ] },
- ],
- pre => sub {
- $wiz->{var}{adsl}{type} = $l{sagem}; # debug
- $wiz->{var}{adsl}{type} ||= find { $netc->{autodetect}{adsl}{$_} } keys %l;
- print qq(\n\ntype is "$wiz->{var}{adsl}{type}"\n\n);
- },
- post => sub {
- $wiz->{var}{adsl}{type} = find { $l{$_} eq $wiz->{var}{adsl}{type} } keys %l;
- my $adsl = $wiz->{var}{adsl}{connection};
- my $type = $wiz->{var}{adsl}{type};
- my $netcnx = $wiz->{var}{netcnx};
- $netcnx->{type} = "adsl_$type";
-
- $netcnx->{"adsl_$type"} = {};
- $netcnx->{"adsl_$type"}{vpivci} = '' if $type =~ /eci|speedtouch/;
- return 'ethernet' if $type eq 'dhcp';
- adsl_probe_info($adsl, $netc, $type);
- # my ($adsl, $netc, $intf, $adsl_type) = @_;
- # ask_info2($adsl, $netc);
- return "hw_account";
- },
- },
- });
-}
-
-sub adsl_probe_info {
- my ($adsl, $netc, $adsl_type, $o_adsl_modem) = @_;
- my $pppoe_file = "$::prefix/etc/ppp/pppoe.conf";
- my %pppoe_conf; %pppoe_conf = getVarsFromSh($pppoe_file) if (! defined $adsl_type || $adsl_type eq 'pppoe') && -f $pppoe_file;
- my $login = $pppoe_conf{USER};
- foreach (qw(/etc/ppp/peers/ppp0 /etc/ppp/options /etc/ppp/options.adsl)) {
- ($login) = map { if_(/^user\s+"([^"]+)"/, $1) } cat_("$::prefix/$_") if !$login && -r "$::prefix/$_";
- }
- my $passwd = passwd_by_login($login);
- if (!$netc->{vpi} && !$netc->{vci} && member($o_adsl_modem, qw(eci speedtouch))) {
- ($netc->{vpi}, $netc->{vci}) =
- (map { if_(/^.*-vpi\s+(\d+)\s+-vci\s+(\d+)/, map { sprintf("%x", $_) } $1, $2) } cat_("$::prefix/etc/ppp/peers/ppp0"));
- }
- $pppoe_conf{DNS1} ||= '';
- $pppoe_conf{DNS2} ||= '';
- add2hash($netc, { dnsServer2 => $pppoe_conf{DNS1}, dnsServer3 => $pppoe_conf{DNS2}, DOMAINNAME2 => '' });
- add2hash($adsl, { login => $login, passwd => $passwd, passwd2 => '' });
-}
-
-sub adsl_detect() {
- require list_modules;
- require detect_devices;
- my @modules = list_modules::category2modules('network/usb_dsl');
- # return an hash compatible with what drakconnect expect us to return:
- my %compat = (
- 'speedtch' => 'speedtouch',
- 'eagle-usb' => 'sagem',
- );
-
- return {
- bewan => [ detect_devices::getBewan() ],
- eci => [ detect_devices::getECI() ],
- map { $compat{$_} || $_ => [ detect_devices::matching_driver($_) ] } @modules,
- };
-}
-
-sub sagem_set_parameters {
- my ($netc) = @_;
- my %l = map { $_ => sprintf("%08s", $netc->{$_}) } qw(vci vpi Encapsulation);
- foreach my $cfg_file (qw(/etc/analog/adiusbadsl.conf /etc/eagle-usb/eagle-usb.conf)) {
- substInFile {
- s/Linetype=.*\n/Linetype=0000000A\n/; #- use CMVs
- s/VCI=.*\n/VCI=$l{vci}\n/;
- s/VPI=.*\n/VPI=$l{vpi}\n/;
- s/Encapsulation=.*\n/Encapsulation=$l{Encapsulation}\n/;
- s/STATIC_IP=.*\n//;
- s!</eaglectrl>!STATIC_IP=$netc->{static_ip}\n</eaglectrl>! if $netc->{static_ip};
- #- TODO: add ISP info, $netc->{provider_id}
- } "$::prefix$cfg_file";
- }
- #- create CMV symlinks for both POTS and ISDN lines
- foreach my $type (qw(p i)) {
- my $cmv;
- my ($country) = $netc->{provider_id} =~ /^([a-zA-Z]+)\d+$/;
- #- try to find a CMV for this specific ISP
- $cmv = "$::prefix/etc/eagle-usb/CMVe${type}$netc->{provider_id}.txt" if $netc->{provider_id};
- #- if not found, try to found a CMV for the country
- -f $cmv or $cmv = "$::prefix/etc/eagle-usb/CMVe${type}${country}.txt";
- #- fallback on the generic CMV if no other matched
- -f $cmv or $cmv = "$::prefix/etc/eagle-usb/CMVe${type}WO.txt";
- symlinkf($cmv, "$::prefix/etc/eagle-usb/CMVe${type}.txt");
- }
- #- remove this otherwise eaglectrl won't start
- unlink("$::prefix/etc/eagle-usb/eagle-usb_must_be_configured");
-}
-
-sub adsl_conf_backend {
- my ($in, $modules_conf, $adsl, $netc, $intf, $adsl_device, $adsl_type, $o_netcnx) = @_;
- # FIXME: should not be needed:
- defined $o_netcnx and $netc->{adsltype} = $o_netcnx->{type};
- $netc->{adsltype} ||= "adsl_$adsl_type";
- $adsl_type eq 'pptp' and $adsl_device = 'pptp_modem';
- $adsl_type eq 'capi' and $adsl_device = 'capi_modem';
- my $bewan_module;
- $bewan_module = $o_netcnx->{bus} eq 'PCI' ? 'unicorn_pci_atm' : 'unicorn_usb_atm' if $adsl_device eq "bewan";
-
- # all supported modems came with their own pppoa module, so no need for "plugin pppoatm.so"
- my %modems =
- (
- bewan =>
- {
- start => qq(
-modprobe pppoatm
-# ActivationMode=1
-modprobe $bewan_module
-# wait for the modem to be set up:
-sleep 10
-),
- stop => qq(modprobe -r $bewan_module),
- plugin => {
- pppoa => "pppoatm.so " . join('.', hex($netc->{vpi}), hex($netc->{vci}))
- },
- ppp_options => qq(
-default-asyncmap
-hide-password
-noaccomp
-nobsdcomp
-nodeflate
-novj novjccomp
-lcp-echo-interval 20
-lcp-echo-failure 3
-sync
-),
- },
-
- speedtouch =>
- {
- modules => [ qw(speedtch) ],
- start => '/usr/bin/speedtouch-start --nocall',
- overide_script => 1,
- server => {
- pppoa => qq("/usr/sbin/pppoa3 -c")
- },
- plugin => {
- pppoa => "pppoatm.so " . join('.', hex($netc->{vpi}), hex($netc->{vci})),
- },
- ppp_options => qq(
-sync
-noaccomp),
- aliases => [
- ['char-major-108', 'ppp_generic'],
- ['tty-ldisc-3', 'ppp_async'],
- ['tty-ldisc-13', 'n_hdlc'],
- ['tty-ldisc-14', 'ppp_synctty'],
- ['ppp-compress-21', 'bsd_comp'],
- ['ppp-compress-24', 'ppp_deflate'],
- ['ppp-compress-26', 'ppp_deflate']
- ],
- },
-
- sagem =>
- {
- modules => [ qw(eagle-usb) ],
- start => 'grep -qs eagle-usb /var/run/usb/* || /sbin/eaglectrl -d',
- stop => "/usr/bin/killall pppoa",
- get_intf => '/sbin/eaglectrl -i',
- server => {
- pppoa => q("/sbin/fctStartAdsl -t 1 -i"),
- },
- ppp_options => qq(
-mru 1492
-mtu 1492
-nobsdcomp
-nodeflate
-noaccomp -am
-novjccomp),
- aliases => [
- ['char-major-108', 'ppp_generic'],
- ['tty-ldisc-3', 'ppp_async'],
- ['tty-ldisc-13', 'n_hdlc'],
- ['tty-ldisc-14', 'ppp_synctty']
- ],
- },
-
- eci =>
- {
- start => '/usr/bin/startmodem',
- server => {
- pppoe => qq("/usr/bin/pppoeci -v 1 -vpi $netc->{vpi} -vci $netc->{vci}"),
- },
- ppp_options => qq(
-noipdefault
-sync
-noaccomp
-linkname eciadsl
-lcp-echo-interval 0)
- },
-
- pptp_modem =>
- {
- server => {
- pptp => qq("/usr/sbin/pptp 10.0.0.138 --nolaunchpppd"),
- },
- },
-
- capi_modem =>
- {
- ppp_options => qq(
-connect /bin/true
-ipcp-accept-remote
-ipcp-accept-local
-
-sync
-noauth
-lcp-echo-interval 5
-lcp-echo-failure 3
-lcp-max-configure 50
-lcp-max-terminate 2
-
-noccp
-noipx
-mru 1492
-mtu 1492),
- plugin => {
- capi => qq(capiplugin.so
-avmadsl)
- },
- },
- );
-
- my %generic =
- (
- pppoe =>
- {
- server => '"pppoe -I ' . ($modems{$adsl_device}{get_intf} ? "`$modems{$adsl_device}{get_intf}`" : $netc->{NET_DEVICE}) . '"',
- ppp_options => qq(default-asyncmap
-mru 1492
-mtu 1492
-noaccomp
-noccp
-nobsdcomp
-novjccomp
-nodeflate
-lcp-echo-interval 20
-lcp-echo-failure 3
-),
- }
- );
-
- if ($adsl_type =~ /^pp|^capi$/) {
- mkdir_p("$::prefix/etc/ppp");
- $in->do_pkgs->install('ppp') if !$>;
- my %packages = (
- pppoa => [ qw(ppp-pppoatm) ],
- pppoe => [ qw(ppp-pppoe rp-pppoe) ],
- pptp => [ qw(pptp-linux) ],
- capi => [ qw(isdn4k-utils) ], #- capi4linux service
- );
- $in->do_pkgs->install(@{$packages{$adsl_type}}) if !$>;
-
- my $pty_option =
- exists $modems{$adsl_device}{server}{$adsl_type} ? "pty $modems{$adsl_device}{server}{$adsl_type}" :
- exists $generic{$adsl_type}{server} ? "pty $generic{$adsl_type}{server}" :
- "";
- my $plugin = exists $modems{$adsl_device}{plugin}{$adsl_type} && "plugin $modems{$adsl_device}{plugin}{$adsl_type}";
- my $noipdefault = $adsl_type eq 'pptp' ? '' : 'noipdefault';
- my $ppp_options =
- exists $modems{$adsl_device}{ppp_options} ? $modems{$adsl_device}{ppp_options} :
- exists $generic{$adsl_type}{ppp_options} ? $generic{$adsl_type}{ppp_options} :
- "";
- output("$::prefix/etc/ppp/peers/ppp0",
-qq(lock
-persist
-noauth
-usepeerdns
-defaultroute
-$noipdefault
-$ppp_options
-kdebug 1
-nopcomp
-noccp
-novj
-holdoff 4
-maxfail 25
-$pty_option
-$plugin
-user "$adsl->{login}"
-));
-
- write_secret_backend($adsl->{login}, $adsl->{passwd});
-
- if ($netc->{NET_DEVICE} =~ /^eth/) {
- my $net_device = $netc->{NET_DEVICE};
- $intf->{$net_device} = {
- DEVICE => $net_device,
- BOOTPROTO => 'none',
- NETMASK => '255.255.255.0',
- NETWORK => '10.0.0.0',
- BROADCAST => '10.0.0.255',
- ONBOOT => 'yes',
- };
- }
- }
-
- #- FIXME: ppp0 and ippp0 are hardcoded
- my $metric = network::tools::get_default_metric("adsl"); #- FIXME, do not override if already set
- output_with_perm("$::prefix/etc/sysconfig/network-scripts/ifcfg-ppp0", 0705, qq(DEVICE=ppp0
-ONBOOT=no
-TYPE=ADSL
-METRIC=$metric
-)) unless member($adsl_type, qw(manual dhcp));
-
- #- remove file used with sagem for dhcp/static connections
- unlink("$::prefix/etc/sysconfig/network-scripts/ifcfg-sagem");
-
- #- set vpi, vci and encapsulation parameters for sagem
- if ($adsl_device eq 'sagem') {
- $netc->{static_ip} = $intf->{sagem}{IPADDR} if $adsl_type eq 'manual';
- sagem_set_parameters($netc);
- }
-
- #- set aliases
- if (exists $modems{$adsl_device}{aliases}) {
- $modules_conf->set_alias($_->[0], $_->[1]) foreach @{$modems{$adsl_device}{aliases}};
- $::isStandalone and $modules_conf->write;
- }
- #- remove the "speedtch off" alias that was written by Mandrakelinux 10.0
- $adsl_device eq 'speedtouch' and $modules_conf->remove_alias('speedtch');
-
- if ($adsl_type eq "capi") {
- require network::isdn;
- network::isdn::setup_capi_conf($adsl->{capi});
- services::stop("isdn4linux");
- services::do_not_start_service_on_boot("isdn4linux");
- services::start_service_on_boot("capi4linux");
- services::start("capi4linux");
-
- #- install and run drdsl for dsl connections, once capi driver is loaded
- $in->do_pkgs->ensure_is_installed_if_available("drdsl", "/usr/sbin/drdsl");
- run_program::rooted($::prefix, "/usr/sbin/drdsl");
- }
-
- #- load modules and run modem-specific start programs
- #- useful during install, or in case the packages have been installed after the device has been plugged
- my @modules = (@{$modems{$adsl_device}{modules}}, map { $_->[1] } @{$modems{$adsl_device}{aliases}});
- @modules or @modules = qw(ppp_synctty ppp_async ppp_generic n_hdlc); #- required for pppoe/pptp connections
- @modules && eval { modules::load(@modules) }
- or log::l("failed to load " . join(',', @modules), " modules: $@");
- $modems{$adsl_device}{start} and run_program::rooted($::prefix, $modems{$adsl_device}{start});
-}
-
-1;
diff --git a/perl-install/network/adsl_consts.pm b/perl-install/network/adsl_consts.pm
deleted file mode 100644
index 93b6dba33..000000000
--- a/perl-install/network/adsl_consts.pm
+++ /dev/null
@@ -1,969 +0,0 @@
-package network::adsl_consts; # $Id$
-
-# This should probably be splitted out into ldetect-lst as some provider db
-
-use vars qw(@ISA @EXPORT);
-use common;
-use utf8;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(@adsl_data);
-
-# Originally from :
-# http://www.eagle-usb.org/article.php3?id_article=23
-# http://www.sagem.com/web-modems/download/support-fast1000-fr.htm
-# http://perso.wanadoo.fr/michel-m/protocolesfai.htm
-
-our %adsl_data = (
- ## format chosen is the following :
- # country|provider => { VPI, VCI_hexa, ... } all parameters
- # country is automagically translated into LANG with N function
- # provider is kept "as-is", not translated
- # provider_id is used by eagleconfig to identify an ISP (I use ISO_3166-1)
- # see http://en.wikipedia.org/wiki/ISO_3166-1
- # url_tech : technical URL providing info about ISP
- # vpi : virtual path identifier
- # vci : virtual channel identifier (in hexa below !!)
- # Encapsulation:
- # 1=PPPoE LLC, 2=PPPoE VCmux (never used ?)
- # 3=RFC1483/2684 Routed IP LLC,
- # 4=RFC1483/2684 Routed IP (IPoA VCmux)
- # 5 RFC2364 PPPoA LLC,
- # 6 RFC2364 PPPoA VCmux
- # see http://faq.eagle-usb.org/wakka.php?wiki=AdslDescription
- # dns are provided for when !usepeerdns in peers config file
- # dnsServer2 dnsServer3 : main DNS
- # dnsServers_text : string with any valid DNS (when more than 2)
- # DOMAINNAME2 : used for search key in /etc/resolv.conf
- # method : PPPoA, pppoe, static or dhcp
- # methods_all : all methods for connection with this ISP (when more than 1)
- # modem : model of modem provided by ISP or tested with ISP
- # please forward updates to http://forum.eagle-usb.org
- # try to order alphabetically by country (in English) / ISP (local language)
-
- N("Algeria") . "|Wanadoo" =>
- {
- provider_id => 'DZ01',
- vpi => 0,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- dnsServer2 => '82.101.136.29',
- dnsServer3 => '82.101.136.206',
- },
-
- N("Argentina") . "|Speedy" =>
- {
- provider_id => 'AR01',
- vpi => 1,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- dnsServer2 => '200.51.254.238',
- dnsServer3 => '200.51.209.22',
- },
-
- N("Austria") . "|Any" =>
- {
- provider_id => 'AT00',
- vpi => 8,
- vci => 30,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Austria") . "|AON" =>
- {
- provider_id => 'AT01',
- vpi => 1,
- vci => 20,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Austria") . "|Telstra" =>
- {
- provider_id => 'AT02',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Belgium") . "|ADSL Office" =>
- {
- provider_id => 'BE04',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("Belgium") . "|Tiscali BE" =>
- {
- provider_id => 'BE01',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- method => 'pppoa',
- dnsServer2 => '212.35.2.1',
- dnsServer3 => '212.35.2.2',
- DOMAINNAME2 => 'tiscali.be',
- },
-
- N("Belgium") . "|Belgacom" =>
- {
- provider_id => 'BE03',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Belgium") . "|Turboline" =>
- {
- provider_id => 'BE02',
- vpi => 8,
- vci => 23,
- Encapsulation => 5,
- method => 'pppoa',
- },
-
- N("Brazil") . "|Speedy/Telefonica" =>
- {
- provider_id => 'BR01',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- dnsServer2 => '200.204.0.10',
- dnsServer3 => '200.204.0.138',
- },
-
- N("Brazil") . "|Velox/Telemar" =>
- {
- provider_id => 'BR02',
- vpi => 0,
- vci => 21,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Brazil") . "|Turbo/Brasil Telecom" =>
- {
- provider_id => 'BR03',
- vpi => 0,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Brazil") . "|Rio Grande do Sul (RS)" =>
- {
- provider_id => 'BR04',
- vpi => 1,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Bulgaria") . "|BTK ISDN" =>
- {
- provider_id => 'BG02',
- vpi => 1,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Bulgaria") . "|BTK POTS" =>
- {
- provider_id => 'BG01',
- vpi => 0,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Beijing" =>
- {
- provider_id => 'CN01',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Changchun" =>
- {
- provider_id => 'CN02',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Harbin" =>
- {
- provider_id => 'CN03',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Jilin" =>
- {
- provider_id => 'CN04',
- vpi => 0,
- vci => 27,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Lanzhou" =>
- {
- provider_id => 'CN05',
- vpi => 0,
- vci => 20,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Tianjin" =>
- {
- provider_id => 'CN06',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Xi'an" =>
- {
- provider_id => 'CN07',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Chongqing" =>
- {
- provider_id => 'CN08',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Fujian" =>
- {
- provider_id => 'CN09',
- vpi => 0,
- vci => 0xc8,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Guangxi" =>
- {
- provider_id => 'CN10',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Guangzhou" =>
- {
- provider_id => 'CN11',
- vpi => 8,
- vci => 20,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Hangzhou" =>
- {
- provider_id => 'CN12',
- vpi => 0,
- vci => 20,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Netcom|Hunan" =>
- {
- provider_id => 'CN13',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Nanjing" =>
- {
- provider_id => 'CN14',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Shanghai" =>
- {
- provider_id => 'CN15',
- vpi => 8,
- vci => 51,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Shenzhen" =>
- {
- provider_id => 'CN16',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Urumqi" =>
- {
- provider_id => 'CN17',
- vpi => 0,
- vci => 20,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Wuhan" =>
- {
- provider_id => 'CN18',
- vpi => 0,
- vci => 20,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Yunnan" =>
- {
- provider_id => 'CN19',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("China") . "|China Telecom|Zhuhai" =>
- {
- provider_id => 'CN20',
- vpi => 0,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("Czech Republic") . "|Cesky Telecom" =>
- {
- provider_id => 'CZ01',
- url_tech => 'http://www.telecom.cz/domacnosti/internet/pristupove_sluzby/broadband/vse_o_kz_a_moznostech_instalace.php',
- vpi => 8,
- vci => 48,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Denmark") . "|Any" =>
- {
- provider_id => 'DK01',
- vpi => 0,
- vci => 65,
- method => 'pppoe',
- Encapsulation => 3,
- },
-
- N("Finland") . "|Sonera" =>
- {
- provider_id => 'FI01',
- vpi => 0,
- vci => 64,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("France") . "|Free non dégroupé 512/128 & 1024/128" =>
- {
- provider_id => 'FR01',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '213.228.0.23',
- dnsServer3 => '212.27.32.176',
- method => 'pppoa',
- DOMAINNAME2 => 'free.fr',
- },
-
- N("France") . "|Free dégroupé 1024/256 (mini)" =>
- {
- provider_id => 'FR04',
- vpi => 8,
- vci => 24,
- Encapsulation => 4,
- dnsServer2 => '213.228.0.23',
- dnsServer3 => '212.27.32.176',
- method => 'dhcp',
- DOMAINNAME2 => 'free.fr',
- },
-
- N("France") . "|n9uf tel9com 512 & dégroupé 1024" =>
- {
- provider_id => 'FR05',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '212.30.93.108',
- dnsServer3 => '212.203.124.146',
- method => 'pppoa',
- },
-
- N("France") . "|Cegetel non dégroupé 512 IP/ADSL et dégroupé" =>
- {
- provider_id => 'FR08',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '212.94.174.85',
- dnsServer3 => '212.94.174.86',
- method => 'pppoa',
- },
-
- N("France") . "|Club-Internet" =>
- {
- provider_id => 'FR06',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '194.117.200.10',
- dnsServer3 => '194.117.200.15',
- method => 'pppoa',
- DOMAINNAME2 => 'club-internet.fr',
- },
-
- N("France") . "|Wanadoo" =>
- {
- provider_id => 'FR09',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '80.10.246.2',
- dnsServer3 => '80.10.246.129',
- method => 'pppoa',
- DOMAINNAME2 => 'wanadoo.fr',
- },
-
- N("France") . "|Télé2" =>
- {
- provider_id => 'FR02',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '212.151.136.242',
- dnsServer3 => '130.244.127.162',
- method => 'pppoa',
- },
-
- N("France") . "|Tiscali.fr 128k" =>
- {
- provider_id => 'FR03',
- vpi => 8,
- vci => 23,
- Encapsulation => 5,
- dnsServer2 => '213.36.80.1',
- dnsServer3 => '213.36.80.2',
- method => 'pppoa',
- },
-
- N("France") . "|Tiscali.fr 512k" =>
- {
- provider_id => 'FR07',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '213.36.80.1',
- dnsServer3 => '213.36.80.2',
- method => 'pppoa',
- },
-
- N("Germany") . "|Deutsche Telekom (DT)" =>
- {
- provider_id => 'DE01',
- vpi => 1,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Germany") . "|1&1" =>
- {
- provider_id => 'DE02',
- vpi => 1,
- vci => 20,
- Encapsulation => 1,
- dnsServer2 => '195.20.224.234',
- dnsServer3 => '194.25.2.129',
- method => 'pppoe',
- },
-
- N("Greece") . "|Any" =>
- {
- provider_id => 'GR01',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Hungary") . "|Matav" =>
- {
- provider_id => 'HU01',
- vpi => 1,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Ireland") . "|Any" =>
- {
- provider_id => 'IE01',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Israel") . "|Bezeq" =>
- {
- provider_id => 'IL01',
- vpi => 8,
- vci => 30,
- Encapsulation => 6,
- dnsServer2 => '192.115.106.10',
- dnsServer3 => '192.115.106.11',
- method => 'pppoa',
- },
-
- N("Italy") . "|Libero.it" =>
- {
- provider_id => 'IT04',
- url_tech => 'http://internet.libero.it/assistenza/adsl/installazione_ass.phtml',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '193.70.192.25',
- dnsServer3 => '193.70.152.25',
- method => 'pppoa',
- },
-
- N("Italy") . "|Telecom Italia" =>
- {
- provider_id => 'IT01',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '195.20.224.234',
- dnsServer3 => '194.25.2.129',
- method => 'pppoa',
- },
-
- N("Italy") . "|Telecom Italia/Office Users (ADSL Smart X)" =>
- {
- provider_id => 'IT02',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'manual',
- },
-
- N("Italy") . "|Tiscali.it, Alice" =>
- {
- provider_id => 'IT03',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '195.20.224.234',
- dnsServer3 => '194.25.2.129',
- method => 'pppoa',
- },
-
- N("Lithuania") . "|Lietuvos Telekomas" =>
- {
- provider_id => 'LT01',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Morocco") . "|Maroc Telecom" =>
- {
- provider_id => 'MA01',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '212.217.0.1',
- dnsServer3 => '212.217.0.12',
- method => 'pppoa',
- },
-
- N("Netherlands") . "|KPN" =>
- {
- provider_id => 'NL01',
- vpi => 8,
- vci => 30,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Netherlands") . "|Eager Telecom" =>
- {
- provider_id => 'NL02',
- vpi => 0,
- vci => 21,
- Encapsulation => 3,
- method => 'dhcp',
- },
-
- N("Netherlands") . "|Tiscali" =>
- {
- provider_id => 'NL03',
- vpi => 0,
- vci => 22,
- Encapsulation => 3,
- method => 'dhcp',
- },
-
- N("Netherlands") . "|Versatel" =>
- {
- provider_id => 'NL04',
- vpi => 0,
- vci => 20,
- Encapsulation => 3,
- method => 'dhcp',
- },
-
- N("Norway") . "|Bluecom" =>
- {
- method => 'dhcp',
- },
-
- N("Norway") . "|Firstmile" =>
- {
- method => 'dhcp',
- },
-
- N("Norway") . "|NextGenTel" =>
- {
- method => 'dhcp',
- },
-
- N("Norway") . "|SSC" =>
- {
- method => 'dhcp',
- },
-
- N("Norway") . "|Tele2" =>
- {
- method => 'dhcp',
- },
-
- N("Norway") . "|Telenor ADSL" =>
- {
- method => 'PPPoE',
- },
-
- N("Norway") . "|Tiscali" =>
- {
- vpi => 8,
- vci => 35,
- method => 'dhcp',
- },
-
- N("Poland") . "|Telekomunikacja Polska (TPSA/neostrada)" =>
- {
- provider_id => 'PL01',
- vpi => 0,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '194.204.152.34',
- dnsServer3 => '217.98.63.164',
- method => 'pppoa',
- },
-
- N("Poland") . "|Netia neostrada" =>
- {
- provider_id => 'PL02',
- url_tech => 'http://www.netia.pl/?o=d&s=210',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- dnsServer2 => '195.114.181.130',
- dnsServer3 => '195.114.161.61',
- method => 'pppoe',
- },
-
- N("Portugal") . "|PT" =>
- {
- provider_id => 'PT01',
- vpi => 0,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Russia") . "|MTU-Intel" =>
- {
- provider_id => 'RU01',
- url_tech => 'http://stream.ru/s-requirements',
- vpi => 1,
- vci => 50,
- Encapsulation => 1,
- dnsServer2 => '212.188.4.10',
- dnsServer3 => '195.34.32.116',
- method => 'pppoe',
- },
-
- N("Slovenia") . "|SiOL" =>
- {
- provider_id => 'SL01',
- vpi => 1,
- vci => 20,
- method => 'pppoe',
- Encapsulation => 1,
- dnsServer2 => '193.189.160.11',
- dnsServer3 => '193.189.160.12',
- DOMAINNAME2 => 'siol.net',
- },
-
- N("Spain") . "|Telefónica IP dinámica" =>
- {
- provider_id => 'ES01',
- vpi => 8,
- vci => 20,
- Encapsulation => 1,
- dnsServer2 => '80.58.32.33',
- dnsServer3 => '80.58.0.97',
- method => 'pppoe',
- },
-
- N("Spain") . "|Telefónica ip fija" =>
- {
- provider_id => 'ES02',
- vpi => 8,
- vci => 20,
- Encapsulation => 3,
- method => 'static',
- dnsServer2 => '80.58.32.33',
- dnsServer3 => '80.58.0.97',
- },
-
- N("Spain") . "|Wanadoo/Eresmas Retevision" =>
- {
- provider_id => 'ES03',
- vpi => 8,
- vci => 23,
- Encapsulation => 6,
- dnsServer2 => '80.58.0.33',
- dnsServer3 => '80.58.32.97',
- method => 'pppoa',
- },
-
- N("Spain") . "|Wanadoo PPPoE" =>
- {
- provider_id => 'ES04',
- vpi => 8,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Spain") . "|Wanadoo ip fija" =>
- {
- provider_id => 'ES05',
- vpi => 8,
- vci => 20,
- Encapsulation => 3,
- method => 'static',
- },
-
- N("Spain") . "|Tiscali" =>
- {
- provider_id => 'ES06',
- vpi => 1,
- vci => 20,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Spain") . "|Arrakis" =>
- {
- provider_id => 'ES07',
- vpi => 0,
- vci => 23,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Spain") . "|Auna" =>
- {
- provider_id => 'ES08',
- vpi => 0,
- vci => 23,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Spain") . "|Communitel" =>
- {
- provider_id => 'ES09',
- vpi => 0,
- vci => 21,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Spain") . "|Euskatel" =>
- {
- provider_id => 'ES10',
- vpi => 8,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Spain") . "|Uni2" =>
- {
- provider_id => 'ES11',
- vpi => 1,
- vci => 21,
- Encapsulation => 6,
- method => 'pppoa',
- },
-
- N("Spain") . "|Ya.com PPPoE" =>
- {
- provider_id => 'ES12',
- vpi => 8,
- vci => 20,
- Encapsulation => 1,
- method => 'pppoe',
- },
-
- N("Spain") . "|Ya.com static" =>
- {
- provider_id => 'ES13',
- vpi => 8,
- vci => 20,
- Encapsulation => 3,
- method => 'static',
- },
-
- N("Sweden") . "|Telia" =>
- {
- provider_id => 'SE01',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("Switzerland") . "|Any" =>
- {
- provider_id => 'CH01',
- vpi => 8,
- vci => 23,
- Encapsulation => 3,
- method => 'pppoe',
- },
-
- N("Switzerland") . "|BlueWin / Swisscom" =>
- {
- provider_id => 'CH02',
- vpi => 8,
- vci => 23,
- Encapsulation => 5,
- dnsServer2 => '195.186.4.108',
- dnsServer3 => '195.186.4.109',
- method => 'pppoa',
- },
-
- N("Switzerland") . "|Tiscali.ch" =>
- {
- provider_id => 'CH03',
- vpi => 8,
- vci => 23,
- Encapsulation => 1,
- method => 'pppoa',
- },
-
- N("Thailand") . "|Asianet" =>
- {
- provider_id => 'TH01',
- vpi => 0,
- vci => 64,
- Encapsulation => 1,
- dnsServer2 => '203.144.225.242',
- dnsServer3 => '203.144.225.72',
- method => 'pppoe',
- },
-
- N("Tunisia") . "|Planet.tn" =>
- {
- provider_id => 'TH01',
- url_tech => 'http://www.planet.tn/',
- vpi => 0,
- vci => 23,
- Encapsulation => 5,
- dnsServer2 => '193.95.93.77',
- dnsServer3 => '193.95.66.10',
- method => 'pppoe',
- },
-
- N("United Arab Emirates") . "|Etisalat" =>
- {
- provider_id => 'AE01',
- vpi => 0,
- vci => 32,
- Encapsulation => 5,
- dnsServer2 => '213.42.20.20',
- dnsServer3 => '195.229.241.222',
- method => 'pppoa',
- },
-
- N("United Kingdom") . "|Tiscali UK " =>
- {
- provider_id => 'UK01',
- vpi => 0,
- vci => 26,
- Encapsulation => 6,
- dnsServer2 => '212.74.112.66',
- dnsServer3 => '212.74.112.67',
- method => 'pppoa',
- },
-
- N("United Kingdom") . "|British Telecom " =>
- {
- provider_id => 'UK02',
- vpi => 0,
- vci => 26,
- Encapsulation => 6,
- dnsServer2 => '194.74.65.69',
- dnsServer3 => '194.72.9.38',
- method => 'pppoa',
- },
-
- );
-
-
-1;
diff --git a/perl-install/network/dhcpd.pm b/perl-install/network/dhcpd.pm
deleted file mode 100644
index d91df441f..000000000
--- a/perl-install/network/dhcpd.pm
+++ /dev/null
@@ -1,51 +0,0 @@
-package network::dhcpd;
-
-use strict;
-use common;
-use network::network;
-
-my $sysconf_dhcpd = "$::prefix/etc/sysconfig/dhcpd";
-my $dhcpd_conf_file = "$::prefix/etc/dhcpd.conf";
-my $update_dhcp = "/usr/sbin/update_dhcp.pl";
-
-sub read_dhcpd_conf {
- my ($o_file) = @_;
- my $s = cat_($o_file || $dhcpd_conf_file);
- { option_routers => [ $s =~ /^\s*option routers\s+(\S+);/mg ],
- subnet_mask => [ if_($s =~ /^\s*option subnet-mask\s+(.*);/mg, split(' ', $1)) ],
- domain_name => [ if_($s =~ /^\s*option domain-name\s+"(.*)";/mg, split(' ', $1)) ],
- domain_name_servers => [ if_($s =~ /^\s*option domain-name-servers\s+(.*);/m, split(' ', $1)) ],
- dynamic_bootp => [ if_($s =~ /^\s*range dynamic-bootp\s+\S+\.(\d+)\s+\S+\.(\d+)\s*;/m, split(' ', $1)) ],
- default_lease_time => [ if_($s =~ /^\s*default-lease-time\s+(.*);/m, split(' ', $1)) ],
- max_lease_time => [ if_($s =~ /^\s*max-lease-time\s+(.*);/m, split(' ', $1)) ] };
-}
-
-sub write_dhcpd_conf {
- my ($dhcpd_conf, $device) = @_;
-
- my ($lan) = $dhcpd_conf->{option_routers}[0] =~ /^(.*)\.\d+$/;
- log::explanations("Configuring a DHCP server on $lan.0");
-
- renamef($dhcpd_conf_file, "$dhcpd_conf_file.old");
- output($dhcpd_conf_file, qq(subnet $lan.0 netmask $dhcpd_conf->{subnet_mask}[0] {
- # default gateway
- option routers $dhcpd_conf->{option_routers}[0];
- option subnet-mask $dhcpd_conf->{subnet_mask}[0];
-
- option domain-name "$dhcpd_conf->{domain_name}[0]";
- option domain-name-servers $dhcpd_conf->{domain_name_servers}[0];
-
- range dynamic-bootp $lan.$dhcpd_conf->{dynamic_bootp}[0] $lan.$dhcpd_conf->{dynamic_bootp}[1];
- default-lease-time $dhcpd_conf->{default_lease_time}[0];
- max-lease-time $dhcpd_conf->{max_lease_time}[0];
-}
-));
-
- #- put the interface for the dhcp server in the sysconfig-dhcp config, for the /etc/init.d script of dhcpd
- log::explanations("Update network interfaces list for dhcpd server");
- substInFile { s/^INTERFACES\n//; $_ .= qq(INTERFACES="$device"\n) if eof } $sysconf_dhcpd if !$::testing;
- run_program::rooted($::prefix, $update_dhcp);
-}
-
-
-1;
diff --git a/perl-install/network/drakfirewall.pm b/perl-install/network/drakfirewall.pm
deleted file mode 100644
index bc66408fa..000000000
--- a/perl-install/network/drakfirewall.pm
+++ /dev/null
@@ -1,216 +0,0 @@
-package network::drakfirewall; # $Id$
-
-use strict;
-use diagnostics;
-
-use network::shorewall;
-use common;
-
-my @all_servers =
-(
- {
- name => N_("Web Server"),
- pkg => 'apache apache-mod_perl boa',
- ports => '80/tcp 443/tcp',
- },
- {
- name => N_("Domain Name Server"),
- pkg => 'bind',
- ports => '53/tcp 53/udp',
- },
- {
- name => N_("SSH server"),
- pkg => 'openssh-server',
- ports => '22/tcp',
- },
- {
- name => N_("FTP server"),
- pkg => 'ftp-server-krb5 wu-ftpd proftpd pure-ftpd',
- ports => '20/tcp 21/tcp',
- },
- {
- name => N_("Mail Server"),
- pkg => 'sendmail postfix qmail',
- ports => '25/tcp',
- },
- {
- name => N_("POP and IMAP Server"),
- pkg => 'imap courier-imap-pop',
- ports => '109/tcp 110/tcp 143/tcp',
- },
- {
- name => N_("Telnet server"),
- pkg => 'telnet-server-krb5',
- ports => '23/tcp',
- hide => 1,
- },
- {
- name => N_("Windows Files Sharing (SMB)"),
- pkg => 'samba-server',
- ports => '137/tcp 137/udp 138/tcp 138/udp 139/tcp 139/udp 445/tcp 445/udp 1024:1100/tcp 1024:1100/udp',
- hide => 1,
- },
- {
- name => N_("CUPS server"),
- pkg => 'cups',
- ports => '631/tcp 631/udp',
- hide => 1,
- },
- {
- name => N_("Echo request (ping)"),
- ports => '8/icmp',
- force_default_selection => 0,
- },
- {
- name => N_("BitTorrent"),
- ports => '6881:6999/tcp',
- hide => 1,
- pkg => 'bittorrent bittorrent-shadowsclient',
- },
-);
-
-sub port2server {
- my ($port) = @_;
- find {
- any { $port eq $_ } split(' ', $_->{ports});
- } @all_servers;
-}
-
-sub check_ports_syntax {
- my ($ports) = @_;
- foreach (split ' ', $ports) {
- my ($nb, $range, $nb2) = m!^(\d+)(:(\d+))?/(tcp|udp|icmp)$! or return $_;
- foreach my $port ($nb, if_($range, $nb2)) {
- 1 <= $port && $port <= 65535 or return $_;
- }
- $nb < $nb2 or return $_ if $range;
- }
- '';
-}
-
-sub to_ports {
- my ($servers, $unlisted) = @_;
- join(' ', (map { $_->{ports} } @$servers), if_($unlisted, $unlisted));
-}
-
-sub from_ports {
- my ($ports) = @_;
-
- my @l;
- my @unlisted;
- foreach (split ' ', $ports) {
- if (my $s = port2server($_)) {
- push @l, $s;
- } else {
- push @unlisted, $_;
- }
- }
- [ uniq(@l) ], join(' ', @unlisted);
-}
-
-sub default_from_pkgs {
- my ($do_pkgs) = @_;
- my @pkgs = $do_pkgs->are_installed(map { split ' ', $_->{pkg} } @all_servers);
- [ grep {
- my $s = $_;
- exists $s->{force_default_selection} ?
- $s->{force_default_selection} :
- any { member($_, @pkgs) } split(' ', $s->{pkg});
- } @all_servers ];
-}
-
-sub default_ports {
- my ($do_pkgs) = @_;
- to_ports(default_from_pkgs($do_pkgs), '');
-}
-
-sub get_ports() {
- my $shorewall = network::shorewall::read() or return;
- $shorewall->{ports};
-}
-
-sub set_ports {
- my ($do_pkgs, $disabled, $ports, $o_in) = @_;
-
- my $shorewall = network::shorewall::read($o_in) or return;
-
- if (!$disabled || -x "$::prefix/sbin/shorewall") {
- $do_pkgs->ensure_binary_is_installed('shorewall', 'shorewall', $::isInstall) or return;
-
- $shorewall->{disabled} = $disabled;
- $shorewall->{ports} = $ports;
- log::l($disabled ? "disabling shorewall" : "configuring shorewall to allow ports: $ports");
- network::shorewall::write($shorewall);
- }
-}
-
-sub get_conf {
- my ($in, $disabled, $o_ports) = @_;
-
- my $possible_servers = default_from_pkgs($in->do_pkgs);
- $_->{hide} = 0 foreach @$possible_servers;
-
- if ($o_ports) {
- $disabled, from_ports($o_ports);
- } elsif (my $shorewall = network::shorewall::read()) {
- $shorewall->{disabled}, from_ports($shorewall->{ports});
- } else {
- $in->ask_okcancel('', N("drakfirewall configurator
-
-This configures a personal firewall for this Mandriva Linux machine.
-For a powerful and dedicated firewall solution, please look to the
-specialized Mandriva Security Firewall distribution."), 1) or return;
-
- $in->ask_okcancel('', N("drakfirewall configurator
-
-Make sure you have configured your Network/Internet access with
-drakconnect before going any further."), 1) or return;
-
- $disabled, $possible_servers, '';
- }
-}
-
-sub choose {
- my ($in, $disabled, $servers, $unlisted) = @_;
-
- $_->{on} = 0 foreach @all_servers;
- $_->{on} = 1 foreach @$servers;
- my @l = grep { $_->{on} || !$_->{hide} } @all_servers;
-
- $in->ask_from_({
- messages => N("Which services would you like to allow the Internet to connect to?"),
- advanced_messages => N("You can enter miscellaneous ports.
-Valid examples are: 139/tcp 139/udp 600:610/tcp 600:610/udp.
-Have a look at /etc/services for information."),
- callbacks => {
- complete => sub {
- if (my $invalid_port = check_ports_syntax($unlisted)) {
- $in->ask_warn('', N("Invalid port given: %s.
-The proper format is \"port/tcp\" or \"port/udp\",
-where port is between 1 and 65535.
-
-You can also give a range of ports (eg: 24300:24350/udp)", $invalid_port));
- return 1;
- }
- },
- } },
- [
- { text => N("Everything (no firewall)"), val => \$disabled, type => 'bool' },
- (map { { text => translate($_->{name}), val => \$_->{on}, type => 'bool', disabled => sub { $disabled } } } @l),
- { label => N("Other ports"), val => \$unlisted, advanced => 1, disabled => sub { $disabled } }
- ]) or return;
-
- $disabled, to_ports([ grep { $_->{on} } @l ], $unlisted);
-}
-
-sub main {
- my ($in, $disabled) = @_;
-
- ($disabled, my $servers, my $unlisted) = get_conf($in, $disabled) or return;
-
- ($disabled, my $ports) = choose($in, $disabled, $servers, $unlisted) or return;
-
- set_ports($in->do_pkgs, $disabled, $ports, $in) or return;
-
- ($disabled, $ports);
-}
diff --git a/perl-install/network/ethernet.pm b/perl-install/network/ethernet.pm
deleted file mode 100644
index 35e22308b..000000000
--- a/perl-install/network/ethernet.pm
+++ /dev/null
@@ -1,161 +0,0 @@
-package network::ethernet; # $Id$
-
-use c;
-use network::network;
-use modules;
-use modules::interactive;
-use detect_devices;
-use common;
-use run_program;
-use network::tools;
-
-our @dhcp_clients = qw(dhclient dhcpcd pump dhcpxd);
-
-sub install_dhcp_client {
- my ($in, $ethntf) = @_;
- my %packages = (
- "dhclient" => "dhcp-client",
- );
- my $client = $ethntf->{DHCP_CLIENT};
- #- use default dhcp client if none is provided
- $client ||= $dhcp_clients[0];
- $client = $packages{$client} if exists $packages{$client};
- $in->do_pkgs->install($client);
-}
-
-sub write_ether_conf {
- my ($in, $modules_conf, $netcnx, $netc, $intf) = @_;
- configureNetwork2($in, $modules_conf, $::prefix, $netc, $intf);
- $netc->{NETWORKING} = "yes";
- if ($netc->{GATEWAY} || any { $_->{BOOTPROTO} =~ /dhcp/ } values %$intf) {
- $netcnx->{type} = 'lan';
- $netcnx->{NET_DEVICE} = $netc->{NET_DEVICE} = '';
- $netcnx->{NET_INTERFACE} = 'lan'; #$netc->{NET_INTERFACE};
- }
- $::isStandalone and $modules_conf->write;
- 1;
-}
-
-
-sub mapIntfToDevice {
- my ($interface) = @_;
- my $hw_addr = c::getHwIDs($interface);
- return {} if $hw_addr =~ /^usb/;
- my ($bus, $slot, $func) = map { hex($_) } ($hw_addr =~ /([0-9a-f]+):([0-9a-f]+)\.([0-9a-f]+)/);
- $hw_addr && (every { defined $_ } $bus, $slot, $func) ?
- grep { $_->{pci_bus} == $bus && $_->{pci_device} == $slot && $_->{pci_function} == $func } detect_devices::probeall() : {};
-}
-
-
-# return list of [ intf_name, module, device_description ] tuples such as:
-# [ "eth0", "3c59x", "3Com Corporation|3c905C-TX [Fast Etherlink]" ]
-#
-# this function try several method in order to get interface's driver and description in order to support both:
-# - hotplug managed devices (USB, firewire)
-# - special interfaces (IP aliasing, VLAN)
-sub get_eth_cards {
- my ($modules_conf) = @_;
- my @all_cards = detect_devices::getNet();
-
- my @devs = detect_devices::pcmcia_probe();
- my $saved_driver;
- # compute device description and return (interface, driver, description) tuples:
- return map {
- my $interface = $_;
- my $description;
- # 1) get interface's driver through ETHTOOL ioctl:
- my ($a, $detected_through_ethtool);
- $a = c::getNetDriver($interface);
- if ($a) {
- $detected_through_ethtool = 1;
- } else {
- # 2) get interface's driver through module aliases:
- $a = $modules_conf->get_alias($interface);
- }
-
- # workaround buggy drivers that returns a bogus driver name for the GDRVINFO command of the ETHTOOL ioctl:
- my %fixes = (
- "p80211_prism2_cs" => 'prism2_cs',
- "p80211_prism2_pci" => 'prism2_pci',
- "p80211_prism2_usb" => 'prism2_usb',
- "ip1394" => "eth1394",
- "DL2K" => "dl2k",
- "hostap" => undef, #- should be either "hostap_plx", "hostap_pci" or "hostap_cs"
- );
- $a = $fixes{$a} if exists $fixes{$a};
-
- # 3) try to match a PCMCIA device for device description:
- if (my $b = find { $_->{device} eq $interface } @devs) { # PCMCIA case
- $a = $b->{driver};
- $description = $b->{description};
- } else {
- # 4) try to lookup a device by hardware address for device description:
- # maybe should have we try sysfs first for robustness?
- ($description) = (mapIntfToDevice($interface))[0]->{description};
- }
- # 5) try to match a device through sysfs for driver & device description:
- # (eg: ipw2100 driver for intel centrino do not support ETHTOOL)
- if (!$description) {
- my $drv = readlink("/sys/class/net/$interface/driver");
- if ($drv && $drv =~ s!.*/!!) {
- $a = $drv unless $detected_through_ethtool;
- my %l;
- my $dev_path = "/sys/class/net/$interface/device";
- my $sysfs_fields = detect_devices::get_sysfs_device_id_map($dev_path);
- $l{$_} = hex(chomp_(cat_("$dev_path/" . $sysfs_fields->{$_}))) foreach keys %$sysfs_fields;
- my @cards = grep { my $dev = $_; every { $dev->{$_} eq $l{$_} } keys %l } detect_devices::probeall();
- $description = $cards[0]{description} if @cards == 1;
- }
- }
- # 6) try to match a device by driver for device description:
- # (eg: madwifi, ndiswrapper, ...)
- if (!$description) {
- my @cards = grep { $_->{driver} eq ($a || $saved_driver) } detect_devices::probeall();
- $description = $cards[0]{description} if @cards == 1;
- }
- $a and $saved_driver = $a; # handle multiple cards managed by the same driver
- [ $interface, $saved_driver, if_($description, $description) ];
- } @all_cards;
-}
-
-sub get_eth_cards_names {
- my (@all_cards) = @_;
- map { $_->[0] => join(': ', $_->[0], $_->[2]) } @all_cards;
-}
-
-#- returns (link_type, mac_address)
-sub get_eth_card_mac_address {
- my ($intf) = @_;
- `LC_ALL= LANG= $::prefix/sbin/ip -o link show $intf 2>/dev/null` =~ m|.*link/(\S+)\s([0-9a-z:]+)\s|;
-}
-
-#- write interfaces MAC address in iftab
-sub update_iftab() {
- foreach my $intf (detect_devices::getNet()) {
- my ($link_type, $mac_address) = get_eth_card_mac_address($intf) or next;
- #- do not write zeroed MAC addresses in iftab, it confuses ifrename
- $mac_address =~ /^[0:]+$/ and next;
- my $descriptor = ${{ ether => 'mac', ieee1394 => 'mac_ieee1394' }}{$link_type} or next;
- substInFile {
- s/^$intf\s+.*\n//;
- s/^.*\s+$mac_address\n//;
- $_ .= qq($intf\t$descriptor $mac_address\n) if eof;
- } "$::prefix/etc/iftab";
- }
-}
-
-# automatic net aliases configuration
-sub configure_eth_aliases {
- my ($modules_conf) = @_;
- my @pcmcia_interfaces = map { $_->{device} } detect_devices::pcmcia_probe();
- foreach my $card (get_eth_cards($modules_conf)) {
- if (member($card->[0], @pcmcia_interfaces)) {
- #- do not write aliases for pcmcia cards, or cardmgr will not be loaded
- $modules_conf->remove_alias($card->[0]);
- } else {
- $modules_conf->set_alias($card->[0], $card->[1]);
- }
- }
-}
-
-1;
diff --git a/perl-install/network/ipsec.pm b/perl-install/network/ipsec.pm
deleted file mode 100644
index c0ee6e2fb..000000000
--- a/perl-install/network/ipsec.pm
+++ /dev/null
@@ -1,801 +0,0 @@
-package network::ipsec;
-
-
-
-use detect_devices;
-use network::netconnect;
-use run_program;
-use common;
-use log;
-use Data::Dumper;
-
-#- debugg functions ----------
-sub recreate_ipsec_conf {
- my ($ipsec, $kernel_version) = @_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- print "$ipsec->{$key1}\n" if ! $ipsec->{$key1}{1};
- foreach my $key2 (ikeys %{$ipsec->{$key1}}) {
- if ($ipsec->{$key1}{$key2}[0] =~ m/^#/) {
- print "\t$ipsec->{$key1}{$key2}[0]\n";
- } elsif ($ipsec->{$key1}{$key2}[0] =~ m/(conn|config|version)/) {
- print "$ipsec->{$key1}{$key2}[0] $ipsec->{$key1}{$key2}[1]\n";
- } else {
- print "\t$ipsec->{$key1}{$key2}[0]=$ipsec->{$key1}{$key2}[1]\n";
- };
- }
- }
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (! $ipsec->{$key1}{command}) {
- print "$ipsec->{$key1}\n";
- } else {
- print $ipsec->{$key1}{command} . " " .
- $ipsec->{$key1}{src_range} . " " .
- $ipsec->{$key1}{dst_range} . " " .
- $ipsec->{$key1}{upperspec} . " " .
- $ipsec->{$key1}{flag} . " " .
- $ipsec->{$key1}{direction} . " " .
- $ipsec->{$key1}{ipsec} . "\n\t" .
- $ipsec->{$key1}{protocol} . "/" .
- $ipsec->{$key1}{mode} . "/" .
- $ipsec->{$key1}{src_dest} . "/" .
- $ipsec->{$key1}{level} . ";\n"
- };
- }
- }
-}
-
-sub recreate_racoon_conf {
- my ($racoon) = @_;
- my $in_a_section = "n";
- my $in_a_proposal_section = "n";
- foreach my $key1 (ikeys %$racoon) {
- if ($in_a_proposal_section eq "y") {
- print "\t}\n}\n$racoon->{$key1}\n" if ! $racoon->{$key1}{1};
- } elsif ($in_a_section eq "y") {
- print "}\n$racoon->{$key1}\n" if ! $racoon->{$key1}{1};
- } else {
- print "$racoon->{$key1}\n" if ! $racoon->{$key1}{1};
- };
- $in_a_section = "n";
- $in_a_proposal_section = "n";
- foreach my $key2 (ikeys %{$racoon->{$key1}}) {
- if ($racoon->{$key1}{$key2}[0] =~ /^path/) {
- print "$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1] $racoon->{$key1}{$key2}[2];\n";
- } elsif ($racoon->{$key1}{$key2}[0] =~ /^remote/) {
- $in_a_section = "y";
- $in_a_proposal_section = "n";
- print "$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1] {\n";
- } elsif ($racoon->{$key1}{$key2}[0] =~ /^sainfo/) {
- $in_a_section = "y";
- $in_a_proposal_section = "n";
- if ($racoon->{$key1}{$key2}[2] && $racoon->{$key1}{$key2}[5]) {
- print "$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1] $racoon->{$key1}{$key2}[2] $racoon->{$key1}{$key2}[3] $racoon->{$key1}{$key2}[4] $racoon->{$key1}{$key2}[5] $racoon->{$key1}{$key2}[6] {\n";
- } else {
- print "$racoon->{$key1}{$key2}[0] anonymous {\n";
- }
- } elsif ($racoon->{$key1}{$key2}[0] =~ /^proposal /) {
- $in_a_proposal_section = "y";
- print "\t$racoon->{$key1}{$key2}[0] {\n";
- } elsif ($in_a_section eq "y" && $racoon->{$key1}{$key2}[0] =~ /^certificate_type/) {
- print "\t$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1] $racoon->{$key1}{$key2}[2] $racoon->{$key1}{$key2}[3];\n";
- } elsif ($in_a_section eq "y" && $racoon->{$key1}{$key2}[0] =~ /^#/) {
- print "\t$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1]\n";
- } elsif ($in_a_section eq "y") {
- print "\t$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1];\n";
- } elsif ($in_a_proposal_section eq "y" && $racoon->{$key1}{$key2}[0] =~ /^#/) {
- print "\t\t$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1]\n";
- } elsif ($in_a_proposal_section eq "y") {
- print "\t\t$racoon->{$key1}{$key2}[0] $racoon->{$key1}{$key2}[1];\n";
- }
- }
- }
-
-print "}\n";
-}
-
-sub recreate_ipsec_conf1_k24 {
- my ($ipsec) = @_;
- foreach my $key1 (ikeys %$ipsec) {
- print "$key1-->$ipsec->{$key1}\n" if ! $ipsec->{$key1}{1};
- foreach my $key2 (ikeys %{$ipsec->{$key1}}) {
- if ($ipsec->{$key1}{$key2}[0] =~ m/^#/) {
- print "\t$key2-->$ipsec->{$key1}{$key2}[0]\n";
- } elsif ($ipsec->{$key1}{$key2}[0] =~ m/(conn|config|version)/) {
- print "$key1-->$key2-->$ipsec->{$key1}{$key2}[0] $ipsec->{$key1}{$key2}[1]\n";
- } else {
- print "\t$key2-->$ipsec->{$key1}{$key2}[0]=$ipsec->{$key1}{$key2}[1]\n";
- };
- }
- }
-}
-#- end of debug functions --------
-
-sub sys { system(@_) == 0 or log::l("[drakvpn] Warning, sys failed for $_[0]") }
-
-sub start_daemons () {
- return if $::testing;
- log::explanations("Starting daemons");
- if (-e "/etc/rc.d/init.d/ipsec") {
- system("/etc/rc.d/init.d/ipsec status >/dev/null") == 0 and sys("/etc/rc.d/init.d/ipsec stop");
- sys("/etc/rc.d/init.d/$_ start >/dev/null"), sys("/sbin/chkconfig --level 345 $_ on") foreach 'ipsec';
- } else {
-
- };
- sys("/etc/rc.d/init.d/$_ start >/dev/null"), sys("/sbin/chkconfig --level 345 $_ on") foreach 'shorewall';
-}
-
-sub stop_daemons () {
- return if $::testing;
- log::explanations("Stopping daemons");
- if (-e "/etc/rc.d/init.d/ipsec") {
- foreach (qw(ipsec)) {
- system("/etc/rc.d/init.d/$_ status >/dev/null 2>/dev/null") == 0 and sys("/etc/rc.d/init.d/$_ stop");
- };
- sys("/sbin/chkconfig --level 345 $_ off") && -e "/etc/rc.d/init.d/$_" foreach 'ipsec';
- };
- system("/etc/rc.d/init.d/shorewall status >/dev/null 2>/dev/null") == 0 and sys("/etc/rc.d/init.d/shorewall stop >/dev/null");
-
-}
-
-sub set_config_file {
- my ($file, @l) = @_;
-
- my $done;
- substInFile {
- if (!$done && (/^#LAST LINE/ || eof)) {
- $_ = join('', map { join("\t", @$_) . "\n" } @l) . $_;
- $done = 1;
- } else {
- $_ = '' if /^[^#]/;
- }
- } "$::prefix/$file";
-}
-
-sub get_config_file {
- my ($file) = @_;
- map { [ split ' ' ] } grep { !/^#/ } cat_("$::prefix/$file");
-}
-
-
-#-------------------------------------------------------------------
-#---------------------- configure racoon_conf -----------------------
-#-------------------------------------------------------------------
-
-sub read_racoon_conf {
- my ($racoon_conf) = @_;
- my %conf;
- my $nb = 0; #total number
- my $i = 0; #nb within a section
- my $in_a_section = "n";
- my @line1;
- my $line = "";
- local $_;
- open(my $LIST, "< $racoon_conf");
- while (<$LIST>) {
- chomp($_);
- $line = $_;
- $in_a_section = "n" if $line =~ /}/ && $line !~ /^#/;
- $line =~ s/^\s+|\s*;|\s*{//g if $line !~ /^#/;
- $line =~ /(.*)#(.*)/ if $line !~ /^#/; #- define before and after comment
-# print "--line-->$line\n";
- my $data_part = $1;
- my $comment_part = "#".$2;
- if ($data_part) {
- $data_part =~ s/,//g;
-# print "@@".$data_part."->".$comment_part."\n";
- @line1 = split /\s+/,$data_part;
- @line1 = (@line1, $comment_part) if $comment_part;
- } else {
- @line1 = split /\s+/,$line;
- }
- if (!$line && $in_a_section eq "n") {
- $nb++;
- put_in_hash(\%conf, { $nb => $line });
- $in_a_section = "n";
- } elsif (!$line && $in_a_section eq "y") {
- put_in_hash($conf{$nb} ||= {}, { $i => [ '' ] });
- $i++;
- } elsif ($line =~ /^path/) {
- $i=1;
- $nb++;
- put_in_hash($conf{$nb} ||= {}, { $i => [@line1] });
- $in_a_section = "n";
- $i++;
- } elsif ($line =~ /^#|^{|^}/) {
- if ($in_a_section eq "y") {
- put_in_hash($conf{$nb} ||= {}, { $i => [$line] });
- $i++;
- } else {
- $nb++;
- put_in_hash(\%conf, { $nb => $line });
- $in_a_section = "n";
- };
- } elsif ($line =~ /^sainfo|^remote|^listen|^timer|^padding/ && $in_a_section eq "n") {
- $i=1;
- $nb++;
- put_in_hash($conf{$nb} ||= {}, { $i => [@line1] });
- $in_a_section = "y";
- $i++;
- } elsif ($line eq "proposal" && $in_a_section eq "y") {
- $i=1;
- $nb++;
- put_in_hash($conf{$nb} ||= {}, { $i => [@line1] });
- $in_a_section = "y";
- $i++;
- } else {
- put_in_hash($conf{$nb} ||= {}, { $i => [@line1] });
- $i++;
- };
- };
-
-\%conf;
-}
-
-sub display_racoon_conf {
- my ($racoon) = @_;
- my $display = "";
- my $prefix_to_simple_line = "";
- my $pt;
- foreach my $key1 (ikeys %$racoon) {
- if (!$racoon->{$key1}{1}) {
- $display .= $prefix_to_simple_line . $racoon->{$key1} . "\n";
- $prefix_to_simple_line = "";
- } else {
- foreach my $key2 (ikeys %{$racoon->{$key1}}) {
- if ($key2 > 1) {
- $pt = $racoon->{$key1}{$key2-1}[0];
- } else {
- $pt = $racoon->{$key1}{1}[0];
- };
- my $t = $racoon->{$key1}{1}[0];
- my $f = $racoon->{$key1}{$key2}[0];
- my $list_length = scalar @{$racoon->{$key1}{$key2}};
- my $already_read = 0;
- my $line = "";
-
- if ($racoon->{$key1}{$key2}[0] eq "sainfo" && !$racoon->{$key1}{$key2}[2]) {
- $line = "sainfo anonymous";
- } else {
- for (my $i = 0; $i <= $list_length-1; $i++) {
-
- my $c = $racoon->{$key1}{$key2}[$i];
- my $n = $racoon->{$key1}{$key2}[$i+1];
-
- if ($c =~ /^path|^log|^timer|^listen|^padding|^remote|^proposal|^sainfo/) {
- $line .= "$c ";
- } elsif ($i == $list_length-2 && $n =~ /^#/) {
- $line .= "$c; ";
- } elsif ($i == $list_length-1) {
- if ($f =~ /^#|^$|^timer|^listen|^padding|^remote|^proposal\s+|^sainfo/) {
- $line .= $c;
- } elsif ($c =~ /^#/) {
- $line .= "\t$c";
- } else {
- $line .= "$c;";
- }
- } else {
- $line .= "$c ";
- }
-
- $already_read = 1;
- }
- }
-
- if ($f =~ /^timer|^listen|^padding|^remote|^sainfo/) {
- $line .= " {";
- $prefix_to_simple_line = "";
- } elsif ($f eq "proposal") {
- $line = "\t" . $line . " {";
- } elsif ($t eq "proposal") {
- $line = "\t\t" . $line if $line ne "proposal";
- $prefix_to_simple_line = "\t";
- } else {
- $line = "\t" . $line if $t !~ /^path|^log/;
- $prefix_to_simple_line = "";
- }
- $display .= "$line\n";
- }
- }
- }
-
-$display;
-
-}
-
-sub write_racoon_conf {
- my ($racoon_conf, $racoon) = @_;
- my $display = "";
- my $prefix_to_simple_line = "";
- my $pt;
- foreach my $key1 (ikeys %$racoon) {
- if (!$racoon->{$key1}{1}) {
- $display .= $prefix_to_simple_line . $racoon->{$key1} . "\n";
- $prefix_to_simple_line = "";
- } else {
- foreach my $key2 (ikeys %{$racoon->{$key1}}) {
- if ($key2 > 1) {
- $pt = $racoon->{$key1}{$key2-1}[0];
- } else {
- $pt = $racoon->{$key1}{1}[0];
- };
- my $t = $racoon->{$key1}{1}[0];
- my $f = $racoon->{$key1}{$key2}[0];
- my $list_length = scalar @{$racoon->{$key1}{$key2}};
- my $already_read = 0;
- my $line = "";
-
- if ($racoon->{$key1}{$key2}[0] eq "sainfo" && !$racoon->{$key1}{$key2}[2]) {
- $line = "sainfo anonymous";
- } else {
- for (my $i = 0; $i <= $list_length-1; $i++) {
-
- my $c = $racoon->{$key1}{$key2}[$i];
- my $n = $racoon->{$key1}{$key2}[$i+1];
-
- if ($c =~ /^path|^log|^timer|^listen|^padding|^remote|^proposal|^sainfo/) {
- $line .= "$c ";
- } elsif ($i == $list_length-2 && $n =~ /^#/) {
- $line .= "$c; ";
- } elsif ($i == $list_length-1) {
- if ($f =~ /^#|^$|^timer|^listen|^padding|^remote|^proposal\s+|^sainfo/) {
- $line .= $c;
- } elsif ($c =~ /^#/) {
- $line .= "\t$c";
- } else {
- $line .= "$c;";
- }
- } else {
- $line .= "$c ";
- }
-
- $already_read = 1;
- }
- }
-
- if ($f =~ /^timer|^listen|^padding|^remote|^sainfo/) {
- $line .= " {";
- $prefix_to_simple_line = "";
- } elsif ($f eq "proposal") {
- $line = "\t" . $line . " {";
- } elsif ($t eq "proposal") {
- $line = "\t\t" . $line if $line ne "proposal";
- $prefix_to_simple_line = "\t";
- } else {
- $line = "\t" . $line if $t !~ /^path|^log/;
- $prefix_to_simple_line = "";
- }
- $display .= "$line\n";
- }
- }
- }
-
-open(my $ADD, "> $racoon_conf") or die "Can not open the $racoon_conf file for writing";
- print $ADD "$display\n";
-
-}
-
-sub get_section_names_racoon_conf {
- my ($racoon) = @_;
- my @section_names;
-
- foreach my $key1 (ikeys %$racoon) {
- if (!$racoon->{$key1}{1}) {
- next;
- } else {
- my $list_length = scalar @{$racoon->{$key1}{1}};
- my $section_title = "";
- my $separator = "";
- for (my $i = 0; $i <= $list_length-1; $i++) {
- my $s = $racoon->{$key1}{1}[$i];
- if ($s !~ /^#|^proposal/) {
- $section_title .= $separator . $s;
- $separator = " ";
- };
- }
- push(@section_names, $section_title) if $section_title ne "";
- }
- }
-
- @section_names;
-
-}
-
-sub add_section_racoon_conf {
- my ($new_section, $racoon) = @_;
- put_in_hash($racoon, { max(keys %$racoon) + 1 => '' });
- put_in_hash($racoon, { max(keys %$racoon) + 1 => $new_section });
- put_in_hash($racoon, { max(keys %$racoon) + 1 => '}' }) if $new_section->{1}[0] !~ /^path|^remote/;
- put_in_hash($racoon, { max(keys %$racoon) + 1 => '' }) if $new_section->{1}[0] =~ /^proposal/;
- put_in_hash($racoon, { max(keys %$racoon) + 1 => '}' }) if $new_section->{1}[0] =~ /^proposal/;
-}
-
-sub matched_section_key_number_racoon_conf {
- my ($section_name, $racoon) = @_;
- foreach my $key1 (ikeys %$racoon) {
- if (!$racoon->{$key1}{1}) {
- next;
- } else {
- my $list_length = scalar @{$racoon->{$key1}{1}};
- my $section_title = "";
- my $separator = "";
- for (my $i = 0; $i <= $list_length-1; $i++) {
- my $s = $racoon->{$key1}{1}[$i];
- if ($s !~ /^#|^proposal/) {
- $section_title .= $separator . $s;
- $separator = " ";
- };
- };
- if ($section_title eq $section_name) {
- return $key1;
- };
- }
- }
-
-}
-
-sub already_existing_section_racoon_conf {
- my ($section_name, $racoon, $racoon_conf) = @_;
- if (-e $racoon_conf) {
- foreach my $key1 (ikeys %$racoon) {
- if (!$racoon->{$key1}{1}) {
- next;
- } elsif (find {
- my $list_length = scalar @{$racoon->{$key1}{1}};
- my $section_title = "";
- my $separator = "";
- for (my $i = 0; $i <= $list_length-1; $i++) {
- my $s = $racoon->{$key1}{1}[$i];
- if ($s !~ /^#|^proposal/) {
- $section_title .= $separator . $s;
- $separator = " ";
- };
- }
-
- $section_title eq $section_name;
-
- } ikeys %{$racoon->{$key1}}) {
-
- return "already existing";
- }
- }
- }
-
-}
-
-sub remove_section_racoon_conf {
- my ($section_name, $racoon, $k) = @_;
- if ($section_name =~ /^remote/) {
-
- delete $racoon->{$k} if $k > 1 && !$racoon->{$k-1};
- my $closing_curly_bracket = 0;
- while ($closing_curly_bracket < 2) {
- print "-->$k\n";
- $closing_curly_bracket++ if $racoon->{$k} eq "}";
- delete $racoon->{$k};
- $k++;
- }
-
- } elsif ($section_name =~ /^path/) {
-
- delete $racoon->{$k};
- delete $racoon->{$k+1} if $racoon->{$k+1}{1} eq "";
-
- } else {
-
- delete $racoon->{$k};
- delete $racoon->{$k+1} if $racoon->{$k+1}{1} eq "";
- delete $racoon->{$k+2} if $racoon->{$k+2}{1} eq ""; #- remove assoc }
-
- }
-
-}
-
-#-------------------------------------------------------------------
-#---------------------- configure ipsec_conf -----------------------
-#-------------------------------------------------------------------
-
-sub read_ipsec_conf {
- my ($ipsec_conf, $kernel_version) = @_;
- my %conf;
- my $nb = 0; #total number
- my $i = 0; #nb within a connexion
- my $in_a_conn = "n";
- my $line = "";
- my @line1;
- local $_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- open(my $LIST, "< $ipsec_conf"); #or die "Can not open the $ipsec_conf file for reading";
- while (<$LIST>) {
- chomp($_);
- $line = $_;
- $line =~ s/^\s+//;
- if (!$line) {
- $nb++;
- put_in_hash(\%conf, { $nb => $line });
- $in_a_conn = "n";
- } elsif ($line =~ /^#/) {
- if ($in_a_conn eq "y") {
- put_in_hash($conf{$nb} ||= {}, { $i => [$line] });
- $i++;
- } else {
- $nb++;
- put_in_hash(\%conf, { $nb => $line });
- $in_a_conn = "n";
- };
- } elsif ($line =~ /^conn|^config|^version/ && $in_a_conn eq "n") {
- @line1 = split /\s+/,$line;
- $i=1;
- $nb++;
- put_in_hash($conf{$nb} ||= {}, { $i => [$line1[0], $line1[1]] });
- $in_a_conn = "y" if $line !~ /^version/;
- $i++;
- } elsif ($line =~ /^conn|^config|^version/ && $in_a_conn eq "y") {
- @line1 = split /\s+/,$line;
- $i=1;
- $nb++;
- put_in_hash($conf{$nb} ||= {}, { $i => [$line1[0], $line1[1]] });
- $i++;
- } else {
- @line1 = split /=/,$line;
- put_in_hash($conf{$nb} ||= {}, { $i => [$line1[0], $line1[1]] });
- $i++;
- };
- };
-
- } else {
- #- kernel 2.6 part -------------------------------
- my @mylist;
- my $myline = "";
- open(my $LIST, "< $ipsec_conf"); #or die "Can not open the $ipsec_conf file for reading";
- while (<$LIST>) {
- chomp($_);
- $myline = $_;
- $myline =~ s/^\s+//;
- $myline =~ s/;$//;
- if ($myline =~ /^spdadd/) {
- @mylist = split /\s+/,$myline;
- $in_a_conn = "y";
- $nb++;
- next;
- } elsif ($in_a_conn eq "y") {
- @mylist = (@mylist, split '\s+|/',$myline);
- put_in_hash(\%conf, { $nb => { command => $mylist[0],
- src_range => $mylist[1],
- dst_range => $mylist[2],
- upperspec => $mylist[3],
- flag => $mylist[4],
- direction => $mylist[5],
- ipsec => $mylist[6],
- protocol => $mylist[7],
- mode => $mylist[8],
- src_dest => $mylist[9],
- level => $mylist[10] } });
- $in_a_conn = "n";
- } else {
- $nb++;
- put_in_hash(\%conf, { $nb => $myline });
- };
- };
-
- };
-
- \%conf;
-}
-
-sub write_ipsec_conf {
- my ($ipsec_conf, $ipsec, $kernel_version) = @_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- open(my $ADD, "> $ipsec_conf") or die "Can not open the $ipsec_conf file for writing";
- foreach my $key1 (ikeys %$ipsec) {
- print $ADD "$ipsec->{$key1}\n" if ! $ipsec->{$key1}{1};
- foreach my $key2 (ikeys %{$ipsec->{$key1}}) {
- if ($ipsec->{$key1}{$key2}[0] =~ m/^#/) {
- print $ADD "\t$ipsec->{$key1}{$key2}[0]\n";
- } elsif ($ipsec->{$key1}{$key2}[0] =~ m/(^conn|^config|^version)/) {
- print $ADD "$ipsec->{$key1}{$key2}[0] $ipsec->{$key1}{$key2}[1]\n";
- } else {
- print $ADD "\t$ipsec->{$key1}{$key2}[0]=$ipsec->{$key1}{$key2}[1]\n" if $ipsec->{$key1}{$key2}[0] && $ipsec->{$key1}{$key2}[1];
- };
- }
- }
- } else {
- #- kernel 2.6 part -------------------------------
- my $display = "";
- foreach my $key1 (ikeys %$ipsec) {
- if (! $ipsec->{$key1}{command}) {
- $display .= "$ipsec->{$key1}\n";
- } else {
- $display .= $ipsec->{$key1}{command} . " " .
- $ipsec->{$key1}{src_range} . " " .
- $ipsec->{$key1}{dst_range} . " " .
- $ipsec->{$key1}{upperspec} . " " .
- $ipsec->{$key1}{flag} . " " .
- $ipsec->{$key1}{direction} . " " .
- $ipsec->{$key1}{ipsec} . "\n\t" .
- $ipsec->{$key1}{protocol} . "/" .
- $ipsec->{$key1}{mode} . "/" .
- $ipsec->{$key1}{src_dest} . "/" .
- $ipsec->{$key1}{level} . ";\n"
- };
- }
- open(my $ADD, "> $ipsec_conf") or die "Can not open the $ipsec_conf file for writing";
- print $ADD $display;
- }
-}
-
-sub display_ipsec_conf {
- my ($ipsec, $kernel_version) = @_;
- my $display = "";
-
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- $display .= "$ipsec->{$key1}\n" if ! $ipsec->{$key1}{1};
- foreach my $key2 (ikeys %{$ipsec->{$key1}}) {
- if ($ipsec->{$key1}{$key2}[0] =~ m/^#/) {
- $display .= "\t$ipsec->{$key1}{$key2}[0]\n";
- } elsif ($ipsec->{$key1}{$key2}[0] =~ m/(^conn|^config|^version)/) {
- $display .= "$ipsec->{$key1}{$key2}[0] $ipsec->{$key1}{$key2}[1]\n";
- } else {
- $display .= "\t$ipsec->{$key1}{$key2}[0]=$ipsec->{$key1}{$key2}[1]\n";
- };
- }
- }
-
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (! $ipsec->{$key1}{command}) {
- $display .= "$ipsec->{$key1}\n";
- } else {
- $display .= $ipsec->{$key1}{command} . " " .
- $ipsec->{$key1}{src_range} . " " .
- $ipsec->{$key1}{dst_range} . " " .
- $ipsec->{$key1}{upperspec} . " " .
- $ipsec->{$key1}{flag} . " " .
- $ipsec->{$key1}{direction} . " " .
- $ipsec->{$key1}{ipsec} . "\n\t" .
- $ipsec->{$key1}{protocol} . "/" .
- $ipsec->{$key1}{mode} . "/" .
- $ipsec->{$key1}{src_dest} . "/" .
- $ipsec->{$key1}{level} . ";\n";
- }
- }
-
- }
-
- $display;
-
-}
-
-sub get_section_names_ipsec_conf {
- my ($ipsec, $kernel_version) = @_;
- my @section_names;
-
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- foreach my $key2 (ikeys %{$ipsec->{$key1}}) {
- if ($ipsec->{$key1}{$key2}[0] =~ m/(^conn|^config|^version)/) {
- push(@section_names, "$ipsec->{$key1}{$key2}[0] $ipsec->{$key1}{$key2}[1]");
- };
- }
- }
-
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if ($ipsec->{$key1}{command} =~ m/(^spdadd)/) {
- push(@section_names, "$ipsec->{$key1}{src_range} $ipsec->{$key1}{dst_range}");
- };
- }
- }
-
- @section_names;
-
-}
-
-sub remove_section_ipsec_conf {
- my ($section_name, $ipsec, $kernel_version) = @_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = $ipsec->{$key1}{$_}[0];
- $s !~ /^#/ && $s =~ m/(^conn|^config|^version)/ &&
- $section_name eq "$s $ipsec->{$key1}{$_}[1]";
- } ikeys %{$ipsec->{$key1}}) {
- delete $ipsec->{$key1};
- }
- }
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = "$ipsec->{$key1}{src_range} $ipsec->{$key1}{dst_range}";
- $s !~ /^#/ && $ipsec->{$key1}{src_range} && $section_name eq $s;
- } ikeys %{$ipsec->{$key1}}) {
- delete $ipsec->{$key1-1};
- delete $ipsec->{$key1};
- }
- }
- }
-}
-
-sub add_section_ipsec_conf {
- my ($new_section, $ipsec) = @_;
- put_in_hash($ipsec, { max(keys %$ipsec) + 1 => '' });
- put_in_hash($ipsec, { max(keys %$ipsec) + 1 => $new_section });
-}
-
-sub already_existing_section_ipsec_conf {
- my ($section_name, $ipsec, $kernel_version) = @_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = $ipsec->{$key1}{$_}[0];
- $s !~ /^#/ && $s =~ m/(^conn|^config|^version)/ &&
- $section_name eq "$s $ipsec->{$key1}{$_}[1]";
- } ikeys %{$ipsec->{$key1}}) {
- return "already existing";
- }
- }
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = "$ipsec->{$key1}{src_range} $ipsec->{$key1}{dst_range}";
- $s !~ /^#/ && $ipsec->{$key1}{src_range} &&
- $section_name eq $s;
- } ikeys %{$ipsec->{$key1}}) {
- return "already existing";
- }
- }
- };
- return "no";
-}
-
-#- returns the reference to the dynamical list for editing
-sub dynamic_list {
- my ($number, $ipsec) = @_;
- my @list = map { { label => $ipsec->{$number}{$_}[0] . "=",
- val => \$ipsec->{$number}{$_}[1] } } ikeys %{$ipsec->{$number}};
-
- @list;
-}
-
-#- returns the hash key number of $section_name
-sub matched_section_key_number_ipsec_conf {
- my ($section_name, $ipsec, $kernel_version) = @_;
- if ($kernel_version < 2.5) {
- #- kernel 2.4 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = $ipsec->{$key1}{$_}[0];
- $s !~ /^#/ && $s =~ m/(^conn|^config|^version)/ &&
- $section_name eq "$s $ipsec->{$key1}{$_}[1]";
- } ikeys %{$ipsec->{$key1}}) {
- return $key1;
- }
- }
- } else {
- #- kernel 2.6 part -------------------------------
- foreach my $key1 (ikeys %$ipsec) {
- if (find {
- my $s = "$ipsec->{$key1}{src_range} $ipsec->{$key1}{dst_range}";
- $s !~ /^#/ && $ipsec->{$key1}{src_range} &&
- $section_name eq $s;
- } ikeys %{$ipsec->{$key1}}) {
- return $key1;
- }
- }
- }
-}
-1
diff --git a/perl-install/network/isdn.pm b/perl-install/network/isdn.pm
deleted file mode 100644
index a7dcaa77f..000000000
--- a/perl-install/network/isdn.pm
+++ /dev/null
@@ -1,200 +0,0 @@
-package network::isdn; # $Id$
-
-use strict;
-use network::isdn_consts;
-use common;
-use any;
-use modules;
-use run_program;
-use log;
-use network::tools;
-use MDK::Common::Globals "network", qw($in);
-use MDK::Common::File;
-use services;
-
-
-sub write_config {
- my ($isdn) = @_;
- $in->do_pkgs->install('isdn4net', if_($isdn->{speed} =~ /128/, 'ibod'), 'isdn4k-utils');
-
- output_with_perm("$::prefix/etc/isdn/profile/link/myisp", 0600,
- qq(
-I4L_USERNAME="$isdn->{login}"
-I4L_SYSNAME=""
-I4L_LOCALMSN="$isdn->{phone_in}"
-I4L_REMOTE_OUT="$isdn->{phone_out}"
-I4L_DIALMODE="$isdn->{dialing_mode}"
-) . if_($isdn->{speed} =~ /128/, 'SLAVE="ippp1"
-'));
- output "$::prefix/etc/isdn/profile/card/mycard",
- qq(
-I4L_MODULE="$isdn->{driver}"
-I4L_TYPE="$isdn->{type}"
-I4L_IRQ="$isdn->{irq}"
-I4L_MEMBASE="$isdn->{mem}"
-I4L_PORT="$isdn->{io}"
-I4L_IO0="$isdn->{io0}"
-I4L_IO1="$isdn->{io1}"
-I4L_ID="HiSax"
-I4L_FIRMWARE="$isdn->{firmware}"
-I4L_PROTOCOL="$isdn->{protocol}"
-);
-
- output "$::prefix/etc/ppp/ioptions",
- "lock
-usepeerdns
-defaultroute
-";
-
- services::stop("isdn4linux"); #- to be stopped before capi is loaded
- if ($isdn->{driver} eq "capidrv") {
- setup_capi_conf(get_capi_card($isdn));
- services::start_service_on_boot("capi4linux");
- services::start("capi4linux");
- } else {
- services::stop("capi4linux");
- services::do_not_start_service_on_boot("capi4linux");
- }
- services::start_service_on_boot("isdn4linux");
- services::start("isdn4linux");
-
- write_secret_backend($isdn->{login}, $isdn->{passwd});
-
- 1;
-}
-
-
-sub setup_capi_conf {
- my ($capi_card) = @_;
-
- $in->do_pkgs->ensure_is_installed('isdn4k-utils', "/etc/rc.d/init.d/capi4linux"); #- capi4linux service
- is_module_installed($capi_card->{driver}) or $in->do_pkgs->install(@{$capi_card->{packages}});
- if ($capi_card->{firmware} && ! -f "$::prefix/usr/lib/isdn/$capi_card->{firmware}") {
- $in->do_pkgs->install("$capi_card->{driver}-firmware");
- }
-
- #- stop capi4linux before new config is written so that it can unload the driver
- services::stop("capi4linux");
-
- my $capi_conf;
- my $firmware = $capi_card->{firmware} || '-';
- if ($capi_card->{driver} eq "fcclassic") {
- $capi_conf = "fcclassic - - 0x300 5 - -\n# adjust IRQ and IO !! ^^^^^ ^^^\n";
- } elsif ($capi_card->{driver} eq "fcpnp") {
- $capi_conf = "fcpnp - - 0x300 5 - -\n# adjust IRQ and IO !! ^^^^^ ^^^\n";
- } else {
- $capi_conf = "$capi_card->{driver} $firmware - - - - -\n";
- }
- output("$::prefix/etc/capi.conf", $capi_conf);
-}
-
-sub read_config {
- my ($isdn) = @_;
-
- my %match = (I4L_USERNAME => 'login',
- I4L_LOCALMSN => 'phone_in',
- I4L_REMOTE_OUT => 'phone_out',
- I4L_DIALMODE => 'dialing_mode',
- I4L_MODULE => 'driver',
- I4L_TYPE => 'type',
- I4L_IRQ => 'irq',
- I4L_MEMBASE => 'mem',
- I4L_PORT => 'io',
- I4L_IO0 => 'io0',
- I4L_IO1 => 'io1',
- I4L_FIRMWARE => 'firmware');
- foreach ('link/myisp', 'card/mycard') {
- my %conf = getVarsFromSh("$::prefix/etc/isdn/profile/$_");
- foreach (keys %conf) {
- $isdn->{$match{$_}} = $conf{$_} if $match{$_} && $conf{$_};
- }
- }
-
- $isdn->{passwd} = network::tools::passwd_by_login($isdn->{login});
- #$isdn->{description} = '';
- #$isdn->{vendor} = '';
- #$isdn->{passwd2} = '';
-}
-
-my $file = "$ENV{SHARE_PATH}/ldetect-lst/isdn.db";
-$file = "$::prefix$file" if !-e $file;
-
-sub get_info_providers_backend {
- my ($isdn, $_netc, $name) = @_;
- $name eq N("Unlisted - edit manually") and return;
- foreach (catMaybeCompressed($file)) {
- chop;
- my ($name_, $phone, $real, $dns1, $dns2) = split '=>';
- if ($name eq $name_) {
- @$isdn{qw(user_name phone_out DOMAINNAME2 dnsServer3 dnsServer2)} =
- ((split(/\|/, $name_))[2], $phone, $real, $dns1, $dns2);
- }
- }
-}
-
-sub read_providers_backend() { map { /(.*?)=>/ } catMaybeCompressed($file) }
-
-
-sub detect_backend {
- my ($modules_conf) = @_;
- my @isdn;
- require detect_devices;
- each_index {
- my $c = $_;
- my $isdn = { map { $_ => $c->{$_} } qw(description vendor id driver card_type type) };
- $isdn->{intf_id} = $::i;
- $isdn->{$_} = sprintf("%0x", $isdn->{$_}) foreach 'vendor', 'id';
- $isdn->{card_type} = $c->{bus} eq 'USB' ? 'usb' : 'pci';
- $isdn->{description} =~ s/.*\|//;
-# $c->{options} !~ /id=HiSax/ && $isdn->{driver} eq "hisax" and $c->{options} .= " id=HiSax";
- if ($c->{options} !~ /protocol=/ && $isdn->{protocol} =~ /\d/) {
- $modules_conf->set_options($c->{driver}, $c->{options} . " protocol=" . $isdn->{protocol});
- }
- $c->{options} =~ /protocol=(\d)/ and $isdn->{protocol} = $1;
- push @isdn, $isdn;
- } modules::probe_category('network/isdn');
- \@isdn;
-}
-
-sub get_cards_by_type {
- my ($isdn_type) = @_;
- grep { $_->{card} eq $isdn_type } @isdndata;
-}
-
-
-sub get_cards() {
- my %buses = (
- isa => N("ISA / PCMCIA") . "/" . N("I do not know"),
- pci => N("PCI"),
- usb => N("USB"),
- );
- # pmcia alias (we should really split up pcmcia from isa in isdn db):
- $buses{pcmcia} = $buses{isa};
-
- map { $buses{$_->{card}} . "|" . $_->{description} => $_ } @isdndata;
-}
-
-
-sub is_module_installed {
- my ($driver) = @_;
- find { m!/\Q$driver\E\.k?o! } cat_($::prefix . '/lib/modules/' . c::kernel_version() . '/modules.dep');
-}
-
-
-sub get_capi_card {
- my ($isdn) = @_;
-
- my $capi_card = find {
- hex($isdn->{vendor}) == $_->{vendor} && hex($isdn->{id}) == $_->{id};
- } @isdn_capi or return;
-
- #- check if the capi driver is available
- unless (is_module_installed($capi_card->{driver}) || ($capi_card->{packages} = $in->do_pkgs->check_kernel_module_packages("$capi_card->{driver}-kernel"))) {
- log::explanations("a capi driver ($capi_card->{driver}) exists to replace $isdn->{driver}, but it is not installed and no packages provide it");
- return;
- }
-
- $capi_card;
-}
-
-1;
diff --git a/perl-install/network/isdn_consts.pm b/perl-install/network/isdn_consts.pm
deleted file mode 100644
index a828a9385..000000000
--- a/perl-install/network/isdn_consts.pm
+++ /dev/null
@@ -1,452 +0,0 @@
-package network::isdn_consts; # $Id$
-use vars qw(@ISA @EXPORT);
-@ISA = qw(Exporter);
-@EXPORT = qw(@isdndata @isdn_capi);
-
-our @isdndata =
- (
- { description => "Teles|16.0", #1 irq, mem, io
- driver => 'hisax',
- type => '1',
- irq => '5',
- mem => '0xd000',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Teles|8.0", #2 irq, mem
- driver => 'hisax',
- type => '2',
- irq => '9',
- mem => '0xd800',
- card => 'isa',
- },
- { description => "Teles|16.3 (ISA non PnP)", #3 irq, io
- driver => 'hisax',
- type => '3',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Teles|16.3c (ISA PnP)", #14 irq, io
- driver => 'hisax',
- type => '14',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Creatix/Teles|Generic (ISA PnP)", #4 irq, io0 (ISAC), io1 (HSCX)
- driver => 'hisax',
- type => '4',
- irq => '5',
- io0 => '0x0000',
- io1 => '0x0000',
- card => 'isa',
- },
- { description => "Teles|generic", #21 no parameter
- driver => 'hisax',
- type => '21',
- card => 'pci',
- },
- { description => "Teles|16.3 (PCMCIA)", #8 irq, io
- driver => 'hisax',
- type => '8',
- irq => '',
- io => '0x',
- card => 'isa',
- },
- { description => "Teles|S0Box", #25 irq, io (of the used lpt port)
- driver => 'hisax',
- type => '25',
- irq => '7',
- io => '0x378',
- card => 'isa',
- },
- { description => "ELSA|PCC/PCF cards", #6 io or nothing for autodetect (the io is required only if you have n>1 ELSA|card)
- driver => 'hisax',
- type => '6',
- io => "",
- card => 'isa',
- },
- { description => "ELSA|Quickstep 1000", #7 irq, io (from isapnp setup)
- driver => 'hisax',
- type => '7',
- irq => '5',
- io => '0x300',
- card => 'isa',
- },
- { description => "ELSA|Quickstep 1000", #18 no parameter
- driver => 'hisax',
- type => '18',
- card => 'pci',
- },
- { description => "ELSA|Quickstep 3000", #18 no parameter
- driver => 'hisax',
- type => '18',
- card => 'pci',
- },
- { description => "ELSA|generic (PCMCIA)", #10 irq, io (set with card manager)
- driver => 'hisax',
- type => '10',
- irq => '',
- io => '0x',
- card => 'isa',
- },
- { description => "ELSA|MicroLink (PCMCIA)", #10 irq, io (set with card manager)
- driver => 'elsa_cs',
- card => 'isa',
- },
- { description => "ITK|ix1-micro Rev.2", #9 irq, io
- driver => 'hisax',
- type => '9',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Eicon.Diehl|Diva (ISA PnP)", #11 irq, io
- driver => 'hisax',
- type => '11',
- irq => '9',
- io => '0x180',
- card => 'isa',
- },
- { description => "Eicon.Diehl|Diva 20", #11 no parameter
- driver => 'hisax',
- type => '11',
- card => 'pci',
- },
- { description => "Eicon.Diehl|Diva 20PRO", #11 no parameter
- driver => 'hisax',
- type => '11',
- card => 'pci',
- },
- { description => "Eicon.Diehl|Diva 20_U", #11 no parameter
- driver => 'hisax',
- type => '11',
- card => 'pci',
- },
- { description => "Eicon.Diehl|Diva 20PRO_U", #11 no parameter
- driver => 'hisax',
- type => '11',
- card => 'pci',
- },
- { description => "ASUS|COM ISDNLink", #12 irq, io (from isapnp setup)
- driver => 'hisax',
- type => '12',
- irq => '5',
- io => '0x200',
- card => 'isa',
- },
- { description => "ASUS|COM ISDNLink",
- driver => 'hisax',
- type => '35',
- card => 'pci',
- },
- { description => "DynaLink|Any",
- driver => 'hisax',
- type => '12',
- card => 'pci',
- },
- { description => "DynaLink|IS64PH, ASUSCOM", #36
- driver => 'hisax',
- type => '36',
- card => 'pci',
- },
- { description => "HFC|2BS0 based cards", #13 irq, io
- driver => 'hisax',
- type => '13',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "HFC|2BDS0", #35 none
- driver => 'hisax',
- type => '35',
- card => 'pci',
- },
- { description => "HFC|2BDS0 S+, SP (PCMCIA)", #37 irq,io (pcmcia must be set with cardmgr)
- driver => 'hisax',
- type => '37',
- card => 'isa',
- },
- { description => "Sedlbauer|Speed Card", #15 irq, io
- driver => 'hisax',
- type => '15',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Sedlbauer|PC/104", #15 irq, io
- driver => 'hisax',
- type => '15',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Sedlbauer|Speed Card", #15 no parameter
- driver => 'hisax',
- type => '15',
- card => 'pci',
- },
- { description => "Sedlbauer|Speed Star (PCMCIA)", #22 irq, io (set with card manager)
- driver => 'sedlbauer_cs',
- card => 'isa',
- },
- { description => "Sedlbauer|Speed Fax+ (ISA Pnp)", #28 irq, io (from isapnp setup)
- driver => 'hisax',
- type => '28',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- firmware => '/usr/lib/isdn/ISAR.BIN',
- },
- { description => "Sedlbauer|Speed Fax+", #28 no parameter
- driver => 'hisax',
- type => '28',
- card => 'pci',
- firmware => '/usr/lib/isdn/ISAR.BIN',
- },
- { description => "USR|Sportster internal", #16 irq, io
- driver => 'hisax',
- type => '16',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Generic|MIC card", #17 irq, io
- driver => 'hisax',
- type => '17',
- irq => '9',
- io => '0xd80',
- card => 'isa',
- },
- { description => "Compaq|ISDN S0 card", #19 irq, io0, io1, io (from isapnp setup io=IO2)
- driver => 'hisax',
- type => '19',
- irq => '5',
- io => '0x0000',
- io0 => '0x0000',
- io1 => '0x0000',
- card => 'isa',
- },
- { description => "Generic|NETjet card", #20 no parameter
- driver => 'hisax',
- type => '20',
- card => 'pci',
- },
- { description => "Dr. Neuhaus|Niccy (ISA PnP)", #24 irq, io0, io1 (from isapnp setup)
- driver => 'hisax',
- type => '24',
- irq => '5',
- io0 => '0x0000',
- io1 => '0x0000',
- card => 'isa',
- },
- { description => "Dr. Neuhaus|Niccy", ##24 no parameter
- driver => 'hisax',
- type => '24',
- card => 'pci',
- },
- { description => "AVM|A1 (Fritz) (ISA non PnP)", #5 irq, io
- driver => 'hisax',
- type => '5',
- irq => '10',
- io => '0x300',
- card => 'isa',
- },
- { description => "AVM|ISA Pnp generic", #27 irq, io (from isapnp setup)
- driver => 'hisax',
- type => '27',
- irq => '5',
- io => '0x300',
- card => 'isa',
- },
- { description => "AVM|A1 (Fritz) (PCMCIA)", #26 irq, io (set with card manager)
- driver => 'hisax',
- type => '26',
- irq => '',
- card => 'isa',
- },
- { description => "AVM|PCI (Fritz!)", #27 no parameter
- driver => 'hisax',
- type => '27',
- card => 'pci',
- },
- { description => "AVM|B1",
- driver => 'b1pci',
- card => 'pci',
- },
- { description => "Siemens|I-Surf 1.0 (ISA Pnp)", #29 irq, io, memory (from isapnp setup)
- driver => 'hisax',
- type => '29',
- irq => '9',
- io => '0xd80',
- mem => '0xd000',
- card => 'isa',
- },
- { description => "ACER|P10 (ISA Pnp)", #30 irq, io (from isapnp setup)
- driver => 'hisax',
- type => '30',
- irq => '5',
- io => '0x300',
- card => 'isa',
- },
- { description => "HST|Saphir (ISA Pnp)", #31 irq, io
- driver => 'hisax',
- type => '31',
- irq => '5',
- io => '0x300',
- card => 'isa',
- },
- { description => "Telekom|A4T", #32 none
- driver => 'hisax',
- type => '32',
- card => 'pci',
- },
- { description => "Scitel|Quadro", #33 subcontroller (4*S0, subctrl 1...4)
- driver => 'hisax',
- type => '33',
- card => 'pci',
- },
- { description => "Gazel|ISDN cards", #34 irq,io
- driver => 'hisax',
- type => '34',
- irq => '5',
- io => '0x300',
- card => 'isa',
- },
- { description => "Gazel|Gazel ISDN cards", #34 none
- driver => 'hisax',
- type => '34',
- card => 'pci',
- },
- { description => "Winbond|W6692 and Winbond based cards", #36 none
- driver => 'hisax',
- type => '36',
- card => 'pci',
- },
- { description => "BeWAN|R834",
- driver => 'hisax_st5481',
- type => '99',
- card => 'usb',
- },
- { description => "Gazel|128",
- driver => 'hisax_st5481',
- type => '99',
- card => 'usb',
- },
- );
-
-#- cards than can be used with capi drivers
-our @isdn_capi =
- (
- {
- vendor => 0x1131,
- id => 0x5402,
- description => 'AVM Audiovisuelles|Fritz DSL ISDN/DSL Adapter',
- bus => 'PCI',
- driver => 'fcdsl',
- firmware => 'fdslbase.bin'
- },
- {
- vendor => 0x1244,
- id => 0x0a00,
- description => 'AVM Audiovisuelles|A1 ISDN Adapter [Fritz] CAPI',
- bus => 'PCI',
- driver => 'fcpci'
- },
- {
- vendor => 0x1244,
- id => 0x0e00,
- description => 'AVM Audiovisuelles|A1 ISDN Adapter [Fritz] CAPI',
- bus => 'PCI',
- driver => 'fcpci'
- },
- {
- vendor => 0x1244,
- id => 0x0f00,
- description => 'AVM Audiovisuelles|Fritz DSL ISDN/DSL Adapter',
- bus => 'PCI',
- driver => 'fcdsl',
- firmware => 'fdslbase.bin'
- },
- {
- vendor => 0x1244,
- id => 0x2700,
- description => 'AVM Audiovisuelles|Fritz!Card DSL SL',
- bus => 'PCI',
- driver => 'fcdslsl',
- firmware => 'fdssbase.bin'
- },
- {
- vendor => 0x1244,
- id => 0x2900,
- description => 'AVM Audiovisuelles|Fritz DSL Ver. 2.0',
- bus => 'PCI',
- driver => 'fcdsl2',
- firmware => 'fds2base.bin'
- },
- {
- vendor => 0x057c,
- id => 0x0c00,
- description => 'AVM GmbH|FritzCard USB ISDN TA',
- bus => 'USB',
- driver => 'fcusb'
- },
- {
- vendor => 0x057c,
- id => 0x1000,
- description => 'AVM GmbH|FritzCard USB 2 Ver. 2.0 ISDN TA',
- bus => 'USB',
- driver => 'fcusb2',
- firmware => 'fus2base.frm'
- },
- {
- vendor => 0x057c,
- id => 0x1900,
- description => 'AVM GmbH|FritzCard USB 2 Ver. 3.0 ISDN TA',
- bus => 'USB',
- driver => 'fcusb2',
- firmware => 'fus3base.frm'
- },
- {
- vendor => 0x057c,
- id => 0x2000,
- description => 'AVM GmbH|Fritz X USB ISDN TA',
- bus => 'USB',
- driver => 'fxusb'
- },
- {
- vendor => 0x057c,
- id => 0x2300,
- description => 'AVM GmbH|FtitzCard USB DSL ISDN TA/ DSL Modem',
- bus => 'USB',
- driver => 'fcdslusb',
- firmware => 'fdsubase.frm'
- },
- {
- vendor => 0x057c,
- id => 0x2800,
- description => 'AVM GmbH|Fritz X USB OEM ISDN TA',
- bus => 'USB',
- driver => 'fxusb_CZ'
- },
- {
- vendor => 0x057c,
- id => 0x3000,
- description => 'AVM GmbH|FtitzCard USB DSL SL USB',
- bus => 'USB',
- driver => 'fcdslusba',
- firmware => 'fdlabase.frm'
- },
- {
- vendor => 0x057c,
- id => 0x3500,
- description => 'AVM GmbH|FtitzCard USB DSL SL USB Analog',
- bus => 'USB',
- driver => 'fcdslslusb',
- firmware => 'fdlubase.frm',
- },
- );
-
-
-1;
diff --git a/perl-install/network/modem.pm b/perl-install/network/modem.pm
deleted file mode 100644
index 6359069eb..000000000
--- a/perl-install/network/modem.pm
+++ /dev/null
@@ -1,243 +0,0 @@
-package network::modem; # $Id$
-
-use strict;
-use common;
-use any;
-use modules;
-use detect_devices;
-use mouse;
-use network::tools;
-
-sub first_modem {
- my ($netc) = @_;
- return "/mnt/root" if $::isInstall;
- first(grep { $_->{device} =~ m!^/dev! } values %{$netc->{autodetect}{modem}});
-}
-
-sub get_user_home() {
- my $home;
- if ($ENV{USER} ne "root") {
- #- kdesu case
- my $user = find { $_->[0] eq $ENV{USER} } list_passwd();
- $home = $user->[7] if $user;
- }
- $home ||= $ENV{HOME}; #- consolehelper case
- $home;
-}
-
-sub ppp_read_conf {
- my ($netcnx, $netc) = @_;
- my $modem = $netcnx->{$netcnx->{type}} ||= {};
- if (my $detected_modem = first_modem($netc)) {
- $modem->{device} ||= $detected_modem->{device};
- }
- $modem->{device} ||= '/dev/modem';
- my %l = getVarsFromSh(get_user_home() . "/.kde/share/config/kppprc");
- add2hash(\%l, getVarsFromSh("$::prefix/usr/share/config/kppprc"));
- $l{Authentication} = 4 if $l{Authentication} !~ /\d/;
- $modem->{$_} ||= $l{$_} foreach qw(Authentication Gateway IPAddr SubnetMask);
- $modem->{connection} ||= $l{Name};
- $modem->{domain} ||= $l{Domain};
- ($modem->{dns1}, $modem->{dns2}) = split(',', $l{DNS});
-
- foreach (cat_("/etc/sysconfig/network-scripts/chat-ppp0")) {
- /.*ATDT([\d#*]*)/ and $modem->{phone} ||= $1;
- }
- foreach (cat_("/etc/sysconfig/network-scripts/ifcfg-ppp0")) {
- /NAME=(['"]?)(.*)\1/ and $modem->{login} ||= $2;
- /^METRIC=(.*)/ and $modem->{METRIC} = $1;
- }
- $modem->{login} ||= $l{Username};
- my $secret = network::tools::read_secret_backend();
- foreach (@$secret) {
- $modem->{passwd} ||= $_->{passwd} if $_->{login} eq $modem->{login};
- }
- #my $secret = network::tools::read_secret_backend();
- #my @cnx_list = map { $_->{server} } @$secret;
- $modem->{$_} ||= '' foreach qw(connection phone login passwd auth domain dns1 dns2);
- $modem->{auto_gateway} ||= defined $modem->{Gateway} && $modem->{Gateway} ne '0.0.0.0' ? N("Manual") : N("Automatic");
- $modem->{auto_ip} ||= defined $modem->{IPAddr} && $modem->{IPAddr} ne '0.0.0.0' ? N("Manual") : N("Automatic");
- $modem->{auto_dns} ||= $modem->{dns1} || $modem->{dns2} ? N("Manual") : N("Automatic");
-
- $modem;
-}
-
-#-----modem conf
-sub ppp_configure {
- my ($in, $modem) = @_;
- $modem or return;
- $in->do_pkgs->install('ppp') if !$::testing;
- $in->do_pkgs->install('kdenetwork-kppp') if !$::testing && $in->do_pkgs->is_installed('kdebase');
-
- if ($modem->{device} ne "/dev/modem") {
- my $dev = $modem->{device};
- $dev =~ s!^/dev/!!;
- any::devfssymlinkf({ device => $dev }, 'modem');
- #- add a specific udev script in addition to the udev rules file
- #- (ttySL0 is a symlink, udev will not be called when it's created)
- my $udev_conf = "$::prefix/etc/udev/conf.d/modem.conf";
- output_p($udev_conf, "ln -sf $dev /dev/modem\n");
- chmod 0755, $udev_conf;
- }
-
- my %toreplace = map { $_ => $modem->{$_} } qw(Authentication AutoName connection dns1 dns2 domain IPAddr login passwd phone SubnetMask);
- $toreplace{phone} =~ s/[^\d#*]//g;
- if ($modem->{auto_dns} ne N("Automatic")) {
- $toreplace{dnsserver} = join ',', map { $modem->{$_} } "dns1", "dns2";
- $toreplace{dnsserver} .= $toreplace{dnsserver} && ',';
- }
-
- #- using peerdns or dns1,dns2 avoid writing a /etc/resolv.conf file.
- $toreplace{peerdns} = "yes";
-
- $toreplace{connection} ||= 'DialupConnection';
- $toreplace{domain} ||= 'localdomain';
- $toreplace{intf} ||= 'ppp0';
- $toreplace{papname} = $toreplace{login} if member($modem->{Authentication}, 1, 3, 4);
-
- # handle static/dynamic settings:
- if ($modem->{auto_ip} eq N("Automatic")) {
- $toreplace{$_} = '0.0.0.0' foreach qw(IPAddr SubnetMask);
- } else {
- $toreplace{$_} = $modem->{$_} foreach qw(IPAddr SubnetMask);
- }
- $toreplace{Gateway} = $modem->{auto_gateway} eq N("Automatic") ? '0.0.0.0' : $modem->{Gateway};
-
- $toreplace{METRIC} = defined($modem->{METRIC}) ? $modem->{METRIC} : network::tools::get_default_metric("modem");
-
- #- build ifcfg-ppp0.
- my $various = <<END;
-DEVICE="$toreplace{intf}"
-ONBOOT="no"
-USERCTL="no"
-MODEMPORT="/dev/modem"
-LINESPEED="115200"
-PERSIST="yes"
-DEFABORT="yes"
-DEBUG="yes"
-INITSTRING="ATZ"
-DEFROUTE="yes"
-HARDFLOWCTL="yes"
-ESCAPECHARS="no"
-PPPOPTIONS=""
-PAPNAME="$toreplace{papname}"
-REMIP=""
-NETMASK=""
-IPADDR=""
-MRU=""
-MTU=""
-DISCONNECTTIMEOUT="5"
-RETRYTIMEOUT="60"
-BOOTPROTO="none"
-PEERDNS="$toreplace{peerdns}"
-METRIC=$toreplace{METRIC}
-END
- output("$::prefix/etc/sysconfig/network-scripts/ifcfg-ppp0",
- $various,
- if_($modem->{auto_dns} ne N("Automatic"), map { qq(DNS$_=$toreplace{"dns$_"}\n) } grep { $toreplace{"dns$_"} } 1..2));
-
- #- build chat-ppp0.
- my @chat = <<END;
-'ABORT' 'BUSY'
-'ABORT' 'ERROR'
-'ABORT' 'NO CARRIER'
-'ABORT' 'NO DIALTONE'
-'ABORT' 'Invalid Login'
-'ABORT' 'Login incorrect'
-'' 'ATZ'
-END
- if ($modem->{special_command}) {
- push @chat, <<END;
-'OK' '$modem->{special_command}'
-END
- }
- push @chat, <<END;
-'OK' 'ATDT$toreplace{phone}'
-'TIMEOUT' '120'
-'CONNECT' ''
-END
- if (member($modem->{Authentication}, 0, 2)) {
- push @chat, <<END;
-'ogin:--ogin:' '$toreplace{login}'
-'ord:' '$toreplace{passwd}'
-END
- }
- push @chat, <<END;
-'TIMEOUT' '5'
-'~--' ''
-END
- my $chat_file = "$::prefix/etc/sysconfig/network-scripts/chat-ppp0";
- output_with_perm($chat_file, 0600, @chat);
-
- write_secret_backend($toreplace{login}, $toreplace{passwd});
-
- #- install kppprc file according to used configuration.
- mkdir_p("$::prefix/usr/share/config");
-
- $toreplace{$_->[0]} = $modem->{$_->[0]} || $_->[1] foreach [ 'Timeout', 60 ], [ 'UseLockFile', 1 ], [ 'Enter', 'CR' ], [ 'Volume', 0 ],
- [ 'BusyWait', 0 ], [ 'FlowControl', 'CRTSCTS' ], [ 'Speed', 115200 ];
- output($modem->{kppprc} || "$::prefix/usr/share/config/kppprc", c::to_utf8(<<END));
-# KDE Config File
-
-[Account0]
-ExDNSDisabled=0
-AutoName=$toreplace{AutoName}
-ScriptArguments=
-AccountingEnabled=0
-DialString=ATDT
-Phonenumber=$toreplace{phone}
-IPAddr=$toreplace{IPAddr}
-Domain=$toreplace{domain}
-Name=$toreplace{connection}
-VolumeAccountingEnabled=0
-pppdArguments=
-Password=$toreplace{passwd}
-BeforeDisconnect=
-Command=
-ScriptCommands=
-Authentication=$toreplace{Authentication}
-DNS=$toreplace{dnsserver}
-SubnetMask=$toreplace{SubnetMask}
-AccountingFile=
-DefaultRoute=1
-Username=$toreplace{login}
-Gateway=$toreplace{Gateway}
-StorePassword=1
-DisconnectCommand=
-
-[Modem]
-BusyWait=$toreplace{BusyWait}
-Enter=$toreplace{Enter}
-FlowControl=$toreplace{FlowControl}
-Volume=$toreplace{Volume}
-Timeout=$toreplace{Timeout}
-UseCDLine=0
-UseLockFile=$toreplace{UseLockFile}
-Device=/dev/modem
-Speed=$toreplace{Speed}
-
-[Graph]
-InBytes=0,0,255
-Text=0,0,0
-Background=255,255,255
-Enabled=true
-OutBytes=255,0,0
-
-[General]
-QuitOnDisconnect=0
-ShowLogWindow=0
-DisconnectOnXServerExit=1
-DefaultAccount=$toreplace{connection}
-iconifyOnConnect=1
-Hint_QuickHelp=0
-AutomaticRedial=0
-PPPDebug=0
-NumberOfAccounts=1
-ShowClock=1
-DockIntoPanel=0
-pppdTimeout=30
-END
- network::network::proxy_configure($::o->{miscellaneous});
-}
-
-1;
diff --git a/perl-install/network/ndiswrapper.pm b/perl-install/network/ndiswrapper.pm
deleted file mode 100644
index 8bbc731c9..000000000
--- a/perl-install/network/ndiswrapper.pm
+++ /dev/null
@@ -1,108 +0,0 @@
-package network::ndiswrapper;
-
-use strict;
-use common;
-use modules;
-use detect_devices;
-
-my $ndiswrapper_prefix = "$::prefix/etc/ndiswrapper";
-
-sub installed_drivers() {
- grep { -d "$ndiswrapper_prefix/$_" } all($ndiswrapper_prefix);
-}
-
-sub present_devices {
- my ($driver) = @_;
- my @supported_devices;
- foreach (all("$ndiswrapper_prefix/$driver")) {
- my ($ids) = /^([0-9A-Z]{4}:[0-9A-Z]{4})\.[05]\.conf$/;
- $ids and push @supported_devices, $ids;
- }
- grep { member(uc(sprintf("%04x:%04x", $_->{vendor}, $_->{id})), @supported_devices) } detect_devices::probeall();
-}
-
-sub get_devices {
- my ($in, $driver) = @_;
- my @devices = present_devices($driver);
- @devices or $in->ask_warn(N("Error"), N("No device supporting the %s ndiswrapper driver is present!", $driver));
- @devices;
-}
-
-sub ask_driver {
- my ($in) = @_;
- if (my $inf_file = $in->ask_file(N("Please select the Windows driver (.inf file)"), "/mnt/cdrom")) {
- my $driver = basename(lc($inf_file));
- $driver =~ s/\.inf$//;
-
- #- first uninstall the driver if present, may solve issues if it is corrupted
- -d "$ndiswrapper_prefix/$driver" and system('ndiswrapper', '-e', $driver);
-
- unless (system('ndiswrapper', '-i', $inf_file) == 0) {
- $in->ask_warn(N("Error"), N("Unable to install the %s ndiswrapper driver!", $driver));
- return undef;
- }
-
- return $driver;
- }
- undef;
-}
-
-sub find_matching_devices {
- my ($device) = @_;
- my $net_path = '/sys/class/net';
- my @devices;
-
- foreach my $interface (all($net_path)) {
- my $dev_path = "$net_path/$interface/device";
- -l $dev_path or next;
- my $is_usb = -f "$dev_path/bInterfaceNumber";
- my $map = detect_devices::get_sysfs_device_id_map($dev_path);
- if (every { hex(chomp_(cat_("$dev_path/" . $map->{$_}))) eq $device->{$_} } keys %$map) {
- my $driver = readlink("$net_path/$interface/driver");
- $driver =~ s!.*/!!;
- push @devices, [ $interface, $driver ];
- }
- }
-
- @devices;
-}
-
-sub find_conflicting_devices {
- my ($device) = @_;
- grep { $_->[1] ne "ndiswrapper" } find_matching_devices($device);
-}
-
-sub find_interface {
- my ($device) = @_;
- my $dev = find { $_->[1] eq "ndiswrapper" } find_matching_devices($device);
- $dev->[0];
-}
-
-sub setup_device {
- my ($in, $device) = @_;
-
- #- unload ndiswrapper first so that the newly installed .inf files will be read
- eval { modules::unload("ndiswrapper") };
- eval { modules::load("ndiswrapper") };
-
- if ($@) {
- $in->ask_warn(N("Error"), N("Unable to load the ndiswrapper module!"));
- return;
- }
-
- my @conflicts = find_conflicting_devices($device);
- if (@conflicts) {
- $in->ask_yesorno(N("Warning"), N("The selected device has already been configured with the %s driver.
-Do you really want to use a ndiswrapper driver ?", $conflicts[0][1])) or return;
- }
-
- my $interface = find_interface($device);
- unless ($interface) {
- $in->ask_warn(N("Error"), N("Unable to find the ndiswrapper interface!"));
- return;
- }
-
- $interface;
-}
-
-1;
diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm
deleted file mode 100644
index d50b51453..000000000
--- a/perl-install/network/netconnect.pm
+++ /dev/null
@@ -1,1700 +0,0 @@
-package network::netconnect; # $Id$
-
-use strict;
-use common;
-use log;
-use detect_devices;
-use list_modules;
-use run_program;
-use modules;
-use any;
-use fs;
-use mouse;
-use network::network;
-use network::tools;
-use MDK::Common::Globals "network", qw($in);
-
-sub detect {
- my ($modules_conf, $auto_detect, $o_class) = @_;
- my %l = (
- isdn => sub {
- require network::isdn;
- $auto_detect->{isdn} = network::isdn::detect_backend($modules_conf);
- },
- lan => sub { # ethernet
- require network::ethernet;
- modules::load_category($modules_conf, list_modules::ethernet_categories());
- $auto_detect->{lan} = { map { $_->[0] => $_->[1] } network::ethernet::get_eth_cards($modules_conf) };
- },
- adsl => sub {
- require network::adsl;
- $auto_detect->{adsl} = network::adsl::adsl_detect();
- },
- modem => sub {
- $auto_detect->{modem} = { map { $_->{description} || "$_->{MANUFACTURER}|$_->{DESCRIPTION} ($_->{device})" => $_ } detect_devices::getModem($modules_conf) };
- },
- );
- $l{$_}->() foreach $o_class || keys %l;
- return;
-}
-
-sub init_globals {
- my ($in) = @_;
- MDK::Common::Globals::init(in => $in);
-}
-
-sub detect_timezone() {
- my %tmz2country = (
- 'Europe/Paris' => N("France"),
- 'Europe/Amsterdam' => N("Netherlands"),
- 'Europe/Rome' => N("Italy"),
- 'Europe/Brussels' => N("Belgium"),
- 'America/New_York' => N("United States"),
- 'Europe/London' => N("United Kingdom")
- );
- my %tm_parse = MDK::Common::System::getVarsFromSh("$::prefix/etc/sysconfig/clock");
- my @country;
- foreach (keys %tmz2country) {
- if ($_ eq $tm_parse{ZONE}) {
- unshift @country, $tmz2country{$_};
- } else { push @country, $tmz2country{$_} }
- }
- \@country;
-}
-
-# load sub category's wizard pages into main wizard data structure
-sub get_subwizard {
- my ($wiz, $type) = @_;
- my %net_conf_callbacks = (adsl => sub { require network::adsl; &network::adsl::get_wizard },
- #cable => sub { require network::ethernet; &network::ethernet::get_wizard },
- #isdn => sub { require network::isdn; &network::isdn::get_wizard },
- #lan => sub { require network::ethernet; &network::ethernet::get_wizard },
- #modem => sub { require network::modem; &network::modem::get_wizard },
- );
- $net_conf_callbacks{$type}->($wiz);
-}
-
-# configuring all network devices
-sub real_main {
- my ($netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_;
- my $netc = $o_netc ||= {};
- my $mouse = $o_mouse ||= {};
- my $intf = $o_intf ||= {};
- my $first_time = $o_first_time || 0;
- my ($network_configured, $cnx_type, $type, @all_cards, %eth_intf, %all_eth_intf);
- my (%connections, @connection_list);
- my ($modem, $modem_name, $modem_conf_read, $modem_dyn_dns, $modem_dyn_ip);
- my $cable_no_auth;
- my ($adsl_type, @adsl_devices, $adsl_failed, $adsl_answer, %adsl_cards, %adsl_data, $adsl_data, $adsl_provider, $adsl_old_provider, $adsl_vpi, $adsl_vci);
- my ($ntf_name, $gateway_ex, $up, $need_restart_network);
- my ($isdn, $isdn_name, $isdn_type, %isdn_cards, @isdn_dial_methods);
- my $my_isdn = join('', N("Manual choice"), " (", N("Internal ISDN card"), ")");
- my (@ndiswrapper_drivers, $ndiswrapper_driver, $ndiswrapper_device);
- my ($is_wireless, $wireless_enc_mode, $wireless_enc_key, $need_rt2x00_iwpriv);
- my ($dvb_adapter, $dvb_ad, $dvb_net, $dvb_pid);
- my ($module, $auto_ip, $protocol, $onboot, $needhostname, $peerdns, $peeryp, $peerntpd, $hotplug, $track_network_id); # lan config
- my $success = 1;
- my $ethntf = {};
- my $db_path = "/usr/share/apps/kppp/Provider";
- my (%countries, @isp, $country, $provider, $old_provider);
- my $config = {};
- eval(cat_("$::prefix/etc/sysconfig/drakconnect"));
-
- my %l10n_lan_protocols = (
- static => N("Manual configuration"),
- dhcp => N("Automatic IP (BOOTP/DHCP)"),
- if_(0,
- dhcp_zeroconf => N("Automatic IP (BOOTP/DHCP/Zeroconf)"),
- )
- );
- my $_w = N("Protocol for the rest of the world");
- my %isdn_protocols = (
- 2 => N("European protocol (EDSS1)"),
- 3 => N("Protocol for the rest of the world\nNo D-Channel (leased lines)"),
- );
-
- network::tools::remove_initscript();
-
- init_globals($in);
-
- read_net_conf($netcnx, $netc, $intf);
-
- $netc->{autodetect} = {};
-
- my $lan_detect = sub {
- detect($modules_conf, $netc->{autodetect}, 'lan');
- require network::ethernet;
- modules::interactive::load_category($in, $modules_conf, list_modules::ethernet_categories(), !$::expert, 0);
- @all_cards = network::ethernet::get_eth_cards($modules_conf);
- %all_eth_intf = network::ethernet::get_eth_cards_names(@all_cards); #- needed not to loose GATEWAYDEV
- %eth_intf = map { $_->[0] => join(': ', $_->[0], $_->[2]) }
- grep { to_bool($is_wireless) == detect_devices::is_wireless_interface($_->[0]) } @all_cards;
- };
-
- my $is_dvb_interface = sub { $_[0]{DEVICE} =~ /^dvb\d+_\d+/ };
-
- my $find_lan_module = sub {
- if (my $dev = find { $_->{device} eq $ethntf->{DEVICE} } detect_devices::pcmcia_probe()) { # PCMCIA case
- $module = $dev->{driver};
- } elsif ($dev = find { $_->[0] eq $ethntf->{DEVICE} } @all_cards) {
- $module = $dev->[1];
- } elsif ($is_dvb_interface->($ethntf)) {
- $module = $dvb_adapter->{driver};
- } else { $module = "" }
- };
-
- my $is_hotplug_blacklisted = sub {
- bool2yesno(member($module, qw(b44 forcedeth madwifi_pci via-velocity)) ||
- $is_wireless ||
- find { $_->{device} eq $ntf_name } detect_devices::pcmcia_probe());
- };
-
- my %adsl_descriptions = (
- speedtouch => N("Alcatel speedtouch USB modem"),
- sagem => N("Sagem USB modem"),
- bewan => N("Bewan modem"),
- eci => N("ECI Hi-Focus modem"), # this one needs eci agreement
- );
-
- my %adsl_types = (
- dhcp => N("Dynamic Host Configuration Protocol (DHCP)"),
- manual => N("Manual TCP/IP configuration"),
- pptp => N("Point to Point Tunneling Protocol (PPTP)"),
- pppoe => N("PPP over Ethernet (PPPoE)"),
- pppoa => N("PPP over ATM (PPPoA)"),
- capi => N("DSL over CAPI"),
- );
-
- my %encapsulations = (
- 1 => N("Bridged Ethernet LLC"),
- 2 => N("Bridged Ethernet VC"),
- 3 => N("Routed IP LLC"),
- 4 => N("Routed IP VC"),
- 5 => N("PPPoA LLC"),
- 6 => N("PPPoA VC"),
- );
-
- my %ppp_auth_methods = (
- 0 => N("Script-based"),
- 1 => N("PAP"),
- 2 => N("Terminal-based"),
- 3 => N("CHAP"),
- 4 => N("PAP/CHAP"),
- );
-
- my %wireless_enc_modes = (
- none => N("None"),
- open => N("Open WEP"),
- restricted => N("Restricted WEP"),
- 'wpa-psk' => N("WPA Pre-Shared Key"),
- );
-
- my $offer_to_connect = sub {
- return "ask_connect_now" if $netc->{internet_cnx_choice} eq 'adsl' && !member($adsl_type, qw(manual dhcp));
- return "ask_connect_now" if member($netc->{internet_cnx_choice}, qw(modem isdn isdn_external));
- return "end";
- };
-
- my $after_lan_intf_selection = sub { $is_wireless ? 'wireless' : 'lan_protocol' };
-
- my $after_start_on_boot_step = sub {
- if ($netc->{internet_cnx_choice} && exists $netc->{internet_cnx}{$netc->{internet_cnx_choice}}) {
- $netcnx->{type} = $netc->{internet_cnx}{$netc->{internet_cnx_choice}}{type};
- } else {
- undef $netc->{NET_DEVICE};
- }
- if ($netcnx->{type} eq 'adsl' && member($adsl_type, qw(manual dhcp)) && member($ntf_name, qw(sagem speedtouch))) {
- #- we may need to write sagem specific parameters and load corresponding modules/programs (sagem/speedtouch)
- network::adsl::adsl_conf_backend($in, $modules_conf, $netcnx, $netc, $intf, $ntf_name, $adsl_type, $netcnx);
- }
- network::network::configureNetwork2($in, $modules_conf, $::prefix, $netc, $intf);
- $network_configured = 1;
- return "restart" if $need_restart_network && !$::isInstall && !$::expert;
- return $offer_to_connect->();
- };
-
- my $goto_start_on_boot_ifneeded = sub {
- return $after_start_on_boot_step->() if $netcnx->{type} eq "lan";
- return "isdn_dial_on_boot" if $netcnx->{type} =~ /isdn/;
- return "network_on_boot";
- };
-
- my $save_cnx = sub {
- if (keys %$config) {
- require Data::Dumper;
- output("$::prefix/etc/sysconfig/drakconnect", Data::Dumper->Dump([ $config ], [ '$p' ]));
- }
- return "allow_user_ctl";
- };
-
- my $handle_multiple_cnx = sub {
- $need_restart_network = member($netcnx->{type}, qw(cable lan)) || $netcnx->{type} eq 'adsl' && member($adsl_type, qw(manual dhcp));
- my $nb = keys %{$netc->{internet_cnx}};
- if (1 < $nb) {
- return "multiple_internet_cnx";
- } else {
- $netc->{internet_cnx_choice} = $nb == 1 ? (keys %{$netc->{internet_cnx}})[0] : $netcnx->{type};
- return $save_cnx->();
- }
- };
-
- my $delete_gateway_settings = sub {
- my ($device) = @_;
- #- delete gateway settings if gateway device is invalid or matches the reconfigured device
- if (!$netc->{GATEWAYDEV} || !exists $eth_intf{$netc->{GATEWAYDEV}} || $netc->{GATEWAYDEV} eq $device) {
- delete $netc->{GATEWAY};
- delete $netc->{GATEWAYDEV};
- }
- };
-
- my $ndiswrapper_do_device_selection = sub {
- $ntf_name = network::ndiswrapper::setup_device($in, $ndiswrapper_device);
- unless ($ntf_name) {
- undef $ndiswrapper_device;
- return;
- }
-
- #- redetect interfaces (so that the ndiswrapper module can be detected)
- $lan_detect->();
-
- $ethntf = $intf->{$ntf_name} ||= { DEVICE => $ntf_name };
-
- 1;
- };
-
- my $ndiswrapper_do_driver_selection = sub {
- my @devices = network::ndiswrapper::get_devices($in, $ndiswrapper_driver);
-
- if (!@devices) {
- undef $ndiswrapper_driver;
- return;
- } elsif (@devices == 1) {
- #- only one device matches installed driver
- $ndiswrapper_device = $devices[0];
- return $ndiswrapper_do_device_selection->();
- }
-
- 1;
- };
-
- my $ndiswrapper_next_step = sub {
- return $ndiswrapper_device ? $after_lan_intf_selection->() :
- $ndiswrapper_driver ? 'ndiswrapper_select_device' :
- 'ndiswrapper_select_driver';
- };
-
- use locale;
- set_l10n_sort();
-
- # main wizard:
- my $wiz;
- $wiz =
- {
- defaultimage => "drakconnect.png",
- name => N("Network & Internet Configuration"),
- pages => {
- welcome =>
- {
- pre => sub {
- # keep b/c of translations in case they can be reused somewhere else:
- my @_a = (N("(detected on port %s)", 'toto'),
- #-PO: here, "(detected)" string will be appended to eg "ADSL connection"
- N("(detected %s)", 'toto'), N("(detected)"));
- my @connections = (
- [ N("LAN connection"), "lan" ],
- [ N("Wireless connection"), "lan" ],
- [ N("ADSL connection"), "adsl" ],
- [ N("Cable connection"), "cable" ],
- [ N("ISDN connection"), "isdn" ],
- [ N("Modem connection"), "modem" ],
- [ N("DVB connection"), "dvb" ],
- );
-
- foreach (@connections) {
- my ($string, $type) = @$_;
- $connections{$string} = $type;
- }
- @connection_list = { val => \$cnx_type, type => 'list', list => [ map { $_->[0] } @connections ], };
- },
- if_(!$::isInstall, no_back => 1),
- name => N("Choose the connection you want to configure"),
- interactive_help_id => 'configureNetwork',
- data => \@connection_list,
- post => sub {
- $is_wireless = $cnx_type eq N("Wireless connection");
- #- why read again the net_conf here?
- read_net_conf($netcnx, $netc, $intf) if $::isInstall; # :-(
- $type = $netcnx->{type} = $connections{$cnx_type};
- return $type;
- },
- },
-
- prepare_detection =>
- {
- name => N("We are now going to configure the %s connection.\n\n\nPress \"%s\" to continue.",
- translate($type), N("Next")),
- post => $handle_multiple_cnx,
- },
-
-
- hw_account =>
- {
- name => N("Connection Configuration") . "\n\n" .
- N("Please fill or check the field below"),
- data => sub {
- [
- (map {
- my ($dstruct, $field, $item) = @$_;
- $item->{val} = \$dstruct->{$field};
- if__(exists $dstruct->{$field}, $item);
- } ([ $netcnx, "irq", { label => N("Card IRQ") } ],
- [ $netcnx, "mem", { label => N("Card mem (DMA)") } ],
- [ $netcnx, "io", { label => N("Card IO") } ],
- [ $netcnx, "io0", { label => N("Card IO_0") } ],
- [ $netcnx, "io1", { label => N("Card IO_1") } ],
- [ $isdn, "phone_in", { label => N("Your personal phone number") } ],
- [ $netc, "DOMAINNAME2", { label => N("Provider name (ex provider.net)") } ],
- [ $isdn, "phone_out", { label => N("Provider phone number") } ],
- [ $netc, "dnsServer2", { label => N("Provider DNS 1 (optional)") } ],
- [ $netc, "dnsServer3", { label => N("Provider DNS 2 (optional)") } ],
- [ $isdn, "dialing_mode", { label => N("Dialing mode"), list => ["auto", "manual"] } ],
- [ $isdn, "speed", { label => N("Connection speed"), list => ["64 Kb/s", "128 Kb/s"] } ],
- [ $netcnx, "huptimeout", { label => N("Connection timeout (in sec)") } ], #unused?
- )
- ),
- ({ label => N("Account Login (user name)"), val => \$isdn->{login} },
- { label => N("Account Password"), val => \$isdn->{passwd}, hidden => 1 },
- )
- ];
- },
- post => sub {
- network::isdn::write_config($isdn);
- $netc->{$_} = 'ippp0' foreach 'NET_DEVICE', 'NET_INTERFACE';
- $handle_multiple_cnx->();
- },
- },
-
- cable =>
- {
- pre => sub {
- $cable_no_auth = sub { $netc->{bpalogin} eq N("None") };
- },
- name => N("Cable: account options"),
- data => sub {
- [
- { label => N("Authentication"), type => "list", val => \$netc->{bpalogin}, list => [ N("None"), N("Use BPALogin (needed for Telstra)") ] },
- { label => N("Account Login (user name)"), val => \$netcnx->{login}, disabled => $cable_no_auth },
- { label => N("Account Password"), val => \$netcnx->{passwd}, hidden => 1, disabled => $cable_no_auth },
- ];
- },
- post => sub {
- if ($cable_no_auth->()) {
- if (-f "$::prefix/etc/rc.d/init.d/bpalogin") {
- require services;
- services::stop("bpalogin");
- services::do_not_start_service_on_boot("bpalogin");
- }
- } else {
- if ($in->do_pkgs->install("bpalogin")) {
- substInFile {
- s/username\s+.*\n/username $netcnx->{login}\n/;
- s/password\s+.*\n/password $netcnx->{passwd}\n/;
- } "$::prefix/etc/bpalogin.conf";
- require services;
- services::start_service_on_boot("bpalogin");
- services::restart("bpalogin");
- }
- }
- $auto_ip = 1;
- return "lan";
- }
- },
-
- isdn =>
- {
- pre=> sub {
- detect($modules_conf, $netc->{autodetect}, 'isdn');
- %isdn_cards = map { $_->{description} => $_ } @{$netc->{autodetect}{isdn}};
- },
- name => N("Select the network interface to configure:"),
- data => sub {
- [ { label => N("Net Device"), type => "list", val => \$isdn_name, allow_empty_list => 1,
- list => [ $my_isdn, N("External ISDN modem"), keys %isdn_cards ] } ];
- },
- post => sub {
- # !intern_pci:
- # data => [ { val => \$isdn_type, type => "list", list => [ , ], } ],
- # post => sub {
- if ($isdn_name eq $my_isdn) {
- return "isdn_ask";
- } elsif ($isdn_name eq N("External ISDN modem")) {
- detect($modules_conf, $netc->{autodetect}, 'modem');
- $netcnx->{type} = $netc->{isdntype} = 'isdn_external';
- $netcnx->{isdn_external}{device} = network::modem::first_modem($netc);
- network::isdn::read_config($netcnx->{isdn_external});
- #- FIXME: seems to be specific to ZyXEL Adapter Omni.net/TA 128/Elite 2846i
- #- it does not even work with TA 128 modems
- #- http://bugs.mandrakelinux.com/query.php?bug=1033
- $netcnx->{isdn_external}{special_command} = 'AT&F&O2B40';
- require network::modem;
- $modem = $netcnx->{isdn_external};
- return "modem";
- }
-
- $netc->{isdntype} = 'isdn_internal';
- # FIXME: some of these should be taken from isdn db
- $netcnx->{isdn_internal} = $isdn = { map { $_ => $isdn_cards{$isdn_name}{$_} } qw(description vendor id card_type driver type mem io io0 io1 irq firmware) };
-
- if ($isdn->{id}) {
- log::explanations("found isdn card : $isdn->{description}; vendor : $isdn->{vendor}; id : $isdn->{id}; driver : $isdn->{driver}\n");
- $isdn->{description} =~ s/\|/ -- /;
- }
-
- network::isdn::read_config($isdn);
- $isdn->{driver} = $isdn_cards{$isdn_name}{driver}; #- do not let config overwrite default driver
-
- #- let the user choose hisax or capidrv if both are available
- $isdn->{driver} ne "capidrv" && network::isdn::get_capi_card($isdn) and return "isdn_driver";
- return "isdn_protocol";
- },
- },
-
-
- isdn_ask =>
- {
- pre => sub {
- %isdn_cards = network::isdn::get_cards();
- },
- name => N("Select a device!"),
- data => sub { [ { label => N("Net Device"), val => \$isdn_name, type => 'list', separator => '|', list => [ keys %isdn_cards ], allow_empty_list => 1 } ] },
- pre2 => sub {
- my ($label) = @_;
-
- #- ISDN card already detected
- goto isdn_ask_step_3;
-
- isdn_ask_step_1:
- my $e = $in->ask_from_list_(N("ISDN Configuration"),
- $label . "\n" . N("What kind of card do you have?"),
- [ N_("ISA / PCMCIA"), N_("PCI"), N_("USB"), N_("I do not know") ]
- ) or return;
- isdn_ask_step_1b:
- if ($e =~ /PCI/) {
- $isdn->{card_type} = 'pci';
- } elsif ($e =~ /USB/) {
- $isdn->{card_type} = 'usb';
- } else {
- $in->ask_from_list_(N("ISDN Configuration"),
- N("
-If you have an ISA card, the values on the next screen should be right.\n
-If you have a PCMCIA card, you have to know the \"irq\" and \"io\" of your card.
-"),
- [ N_("Continue"), N_("Abort") ]) eq 'Continue' or goto isdn_ask_step_1;
- $isdn->{card_type} = 'isa';
- }
-
- isdn_ask_step_2:
- $e = $in->ask_from_listf(N("ISDN Configuration"),
- N("Which of the following is your ISDN card?"),
- sub { $_[0]{description} },
- [ network::isdn::get_cards_by_type($isdn->{card_type}) ]) or goto($isdn->{card_type} =~ /usb|pci/ ? 'isdn_ask_step_1' : 'isdn_ask_step_1b');
- $e->{$_} and $isdn->{$_} = $e->{$_} foreach qw(driver type mem io io0 io1 irq firmware);
-
- },
- post => sub {
- $netcnx->{isdn_internal} = $isdn = $isdn_cards{$isdn_name};
- return "isdn_protocol";
- }
- },
-
-
- isdn_driver =>
- {
- pre => sub {
- $isdn_name = "capidrv";
- },
- name => N("A CAPI driver is available for this modem. This CAPI driver can offer more capabilities than the free driver (like sending faxes). Which driver do you want to use?"),
- data => sub { [
- { label => N("Driver"), type => "list", val => \$isdn_name,
- list => [ $isdn->{driver}, "capidrv" ] }
- ] },
- post => sub {
- $isdn->{driver} = $isdn_name;
- return "isdn_protocol";
- }
- },
-
-
- isdn_protocol =>
- {
- name => N("ISDN Configuration") . "\n\n" . N("Which protocol do you want to use?"),
- data => [
- { label => N("Protocol"), type => "list", val => \$isdn_type,
- list => [ keys %isdn_protocols ], format => sub { $isdn_protocols{$_[0]} } }
- ],
- post => sub {
- $isdn->{protocol} = $isdn_type;
- return "isdn_db";
- }
- },
-
-
- isdn_db =>
- {
- name => N("ISDN Configuration") . "\n\n" . N("Select your provider.\nIf it is not listed, choose Unlisted."),
- data => sub {
- [ { label => N("Provider:"), type => "list", val => \$provider, separator => '|',
- list => [ N("Unlisted - edit manually"), network::isdn::read_providers_backend() ] } ];
- },
- post => sub {
- network::isdn::get_info_providers_backend($isdn, $netc, $provider);
- $isdn->{huptimeout} = 180;
- $isdn->{$_} ||= '' foreach qw(phone_in phone_out dialing_mode login passwd passwd2 idl speed);
- add2hash($netc, { dnsServer2 => '', dnsServer3 => '', DOMAINNAME2 => '' });
- return "hw_account";
- },
- },
-
-
- no_supported_winmodem =>
- {
- name => N("Warning") . "\n\n" . N("Your modem is not supported by the system.
-Take a look at http://www.linmodems.org"),
- end => 1,
- },
-
-
- modem =>
- {
- pre => sub {
- require network::modem;
- detect($modules_conf, $netc->{autodetect}, 'modem');
- },
- name => N("Select the modem to configure:"),
- data => sub {
- [ { label => N("Modem"), type => "list", val => \$modem_name, allow_empty_list => 1,
- list => [ keys %{$netc->{autodetect}{modem}}, N("Manual choice") ], } ];
- },
- post => sub {
- $modem ||= $netcnx->{modem} ||= {};
- return 'choose_serial_port' if $modem_name eq N("Manual choice");
- $ntf_name = $netc->{autodetect}{modem}{$modem_name}{device} || $netc->{autodetect}{modem}{$modem_name}{description};
-
- return "ppp_provider" if $ntf_name =~ m!^/dev/!;
- return "choose_serial_port" if !$ntf_name;
-
- my $type;
-
- my %pkgs2path = (
- hcfpcimodem => "/usr/sbin/hcfpciconfig",
- hsfmodem => "/usr/sbin/hsfconfig",
- ltmodem => "/etc/devfs/conf.d/ltmodem.conf",
- slmodem => "/usr/sbin/slmodemd",
- );
-
- my %devices = (
- hcfpcimodem => '/dev/ttySHSF0',
- hsfmodem => '/dev/ttySHSF0',
- ltmodem => '/dev/ttyS14',
- slmodem => '/dev/ttySL0',
- );
-
- if (my $driver = $netc->{autodetect}{modem}{$modem_name}{driver}) {
- $driver =~ /^Hcf:/ and $type = "hcfpcimodem";
- $driver =~ /^Hsf:/ and $type = "hsfmodem";
- $driver =~ /^LT:/ and $type = "ltmodem";
- #- we may need a better agreement to use list_modules::category2modules('network/slmodem')
- member($driver, list_modules::category2modules('network/slmodem')) and $type = "slmodem";
- if ($type && (my $packages = $in->do_pkgs->check_kernel_module_packages("$type-kernel", if_(! -f $pkgs2path{$type}, $type)))) {
- $in->do_pkgs->install(@$packages);
- # start slmodemd when installing it (thus preventing the average user to have to restart
- # his machine in order to get a working connection):
- system("service slmodemd start") if $::isStandalone && $type eq 'slmodem';
- $modem->{device} = $devices{$type} || '/dev/modem';
- return "ppp_provider";
- }
- }
-
- return "no_supported_winmodem";
- },
- },
-
- choose_serial_port =>
- {
- pre => sub {
- $modem->{device} ||= readlink "$::prefix/dev/modem";
- },
- name => N("Please choose which serial port your modem is connected to."),
- interactive_help_id => 'selectSerialPort',
- data => sub {
- [ { val => \$modem->{device}, format => \&mouse::serial_port2text, type => "list",
- list => [ grep { $_ ne $o_mouse->{device} } (mouse::serial_ports(), grep { -e $_ } '/dev/modem', '/dev/ttySL0', '/dev/ttyS14',) ] } ];
- },
- post => sub {
- $ntf_name = $modem->{device};
- return 'ppp_provider';
- },
- },
-
-
- ppp_provider =>
- {
- pre => sub {
- network::modem::ppp_read_conf($netcnx, $netc) if !$modem_conf_read;
- $modem_conf_read = 1;
- $in->do_pkgs->ensure_is_installed('kdenetwork-kppp-provider', $db_path);
- my $p_db_path = "$::prefix$db_path";
- @isp = map {
- my $country = $_;
- map {
- s!$p_db_path/$country!!;
- s/%([0-9]{3})/chr(int($1))/eg;
- $countries{$country} ||= translate($country);
- join('', $countries{$country}, $_);
- } grep { !/.directory$/ } glob_("$p_db_path/$country/*");
- } map { s!$p_db_path/!!o; s!_! !g; $_ } glob_("$p_db_path/*");
- $old_provider = $provider;
- },
- name => N("Select your provider:"),
- data => sub {
- [ { label => N("Provider:"), type => "list", val => \$provider, separator => '/',
- list => [ N("Unlisted - edit manually"), @isp ] } ];
- },
- post => sub {
- if ($provider ne N("Unlisted - edit manually")) {
- ($country, $provider) = split('/', $provider);
- $country = { reverse %countries }->{$country};
- my %l = getVarsFromSh("$::prefix$db_path/$country/$provider");
- if (defined $old_provider && $old_provider ne $provider) {
- $modem->{connection} = $l{Name};
- $modem->{phone} = $l{Phonenumber};
- $modem->{$_} = $l{$_} foreach qw(Authentication AutoName Domain Gateway IPAddr SubnetMask);
- ($modem->{dns1}, $modem->{dns2}) = split(',', $l{DNS});
- }
- }
- return "ppp_account";
- },
- },
-
-
- ppp_account =>
- {
- name => N("Dialup: account options"),
- data => sub {
- [
- { label => N("Connection name"), val => \$modem->{connection} },
- { label => N("Phone number"), val => \$modem->{phone} },
- { label => N("Login ID"), val => \$modem->{login} },
- { label => N("Password"), val => \$modem->{passwd}, hidden => 1 },
- { label => N("Authentication"), val => \$modem->{Authentication},
- list => [ sort keys %ppp_auth_methods ], format => sub { $ppp_auth_methods{$_[0]} } },
- ];
- },
- next => "ppp_ip",
- },
-
-
- ppp_ip =>
- {
- pre => sub {
- $modem_dyn_ip = sub { $modem->{auto_ip} eq N("Automatic") };
- },
- name => N("Dialup: IP parameters"),
- data => sub {
- [
- { label => N("IP parameters"), type => "list", val => \$modem->{auto_ip}, list => [ N("Automatic"), N("Manual") ] },
- { label => N("IP address"), val => \$modem->{IPAddr}, disabled => $modem_dyn_ip },
- { label => N("Subnet mask"), val => \$modem->{SubnetMask}, disabled => $modem_dyn_ip },
- ];
- },
- next => "ppp_dns",
- },
-
-
- ppp_dns =>
- {
- pre => sub {
- $modem_dyn_dns = sub { $modem->{auto_dns} eq N("Automatic") };
- },
- name => N("Dialup: DNS parameters"),
- data => sub {
- [
- { label => N("DNS"), type => "list", val => \$modem->{auto_dns}, list => [ N("Automatic"), N("Manual") ] },
- { label => N("Domain name"), val => \$modem->{domain}, disabled => $modem_dyn_dns },
- { label => N("First DNS Server (optional)"), val => \$modem->{dns1}, disabled => $modem_dyn_dns },
- { label => N("Second DNS Server (optional)"), val => \$modem->{dns2}, disabled => $modem_dyn_dns },
- { text => N("Set hostname from IP"), val => \$modem->{AutoName}, type => 'bool', disabled => $modem_dyn_dns },
- ];
- },
- next => "ppp_gateway",
- },
-
-
- ppp_gateway =>
- {
- name => N("Dialup: IP parameters"),
- data => sub {
- [
- { label => N("Gateway"), type => "list", val => \$modem->{auto_gateway}, list => [ N("Automatic"), N("Manual") ] },
- { label => N("Gateway IP address"), val => \$modem->{Gateway},
- disabled => sub { $modem->{auto_gateway} eq N("Automatic") } },
- ];
- },
- post => sub {
- network::modem::ppp_configure($in, $modem);
- $netc->{$_} = 'ppp0' foreach 'NET_DEVICE', 'NET_INTERFACE';
- $handle_multiple_cnx->();
- },
- },
-
-
- adsl =>
- {
- pre => sub {
- get_subwizard($wiz, 'adsl');
- $lan_detect->();
- @adsl_devices = keys %eth_intf;
-
- detect($modules_conf, $netc->{autodetect}, 'adsl');
- %adsl_cards = ();
- foreach my $modem_type (keys %{$netc->{autodetect}{adsl}}) {
- foreach my $modem (@{$netc->{autodetect}{adsl}{$modem_type}}) {
- my $name = join(': ', $adsl_descriptions{$modem_type}, $modem->{description});
- $adsl_cards{$name} = [ $modem_type, $modem ];
- }
- }
- push @adsl_devices, keys %adsl_cards;
-
- detect($modules_conf, $netc->{autodetect}, 'isdn');
- if (my @isdn_modems = @{$netc->{autodetect}{isdn}}) {
- require network::isdn;
- %isdn_cards = map { $_->{description} => $_ } grep { $_->{driver} =~ /dsl/i } map { network::isdn::get_capi_card($_) } @isdn_modems;
- push @adsl_devices, keys %isdn_cards;
- }
- },
- name => N("ADSL configuration") . "\n\n" . N("Select the network interface to configure:"),
- data => [ { label => N("Net Device"), type => "list", val => \$ntf_name, allow_empty_list => 1,
- list => \@adsl_devices, format => sub { $eth_intf{$_[0]} || $_[0] } } ],
- post => sub {
- my %packages = (
- 'eci' => [ 'eciadsl', 'missing' ],
- 'sagem' => [ 'eagle-usb', "/sbin/eaglectrl" ],
- 'speedtouch' => [ 'speedtouch', "/usr/sbin/modem_run" ],
- );
- return 'adsl_unsupported_eci' if $ntf_name eq 'eci';
- if (exists $adsl_cards{$ntf_name}) {
- my $modem;
- ($ntf_name, $modem) = @{$adsl_cards{$ntf_name}};
- # FIXME: check that the package installation succeeds, else retry or abort
- $in->do_pkgs->ensure_is_installed(@{$packages{$ntf_name}}) if $packages{$ntf_name};
- if ($ntf_name eq 'speedtouch') {
- $in->do_pkgs->ensure_is_installed_if_available('speedtouch_mgmt', "/usr/share/speedtouch/mgmt.o");
- return 'adsl_speedtouch_firmware' if ! -e "$::prefix/usr/share/speedtouch/mgmt.o";
- }
- $netcnx->{bus} = $modem->{bus} if $ntf_name eq 'bewan';
- if ($ntf_name eq 'bewan' && !$::testing) {
- if (my $unicorn_packages = $in->do_pkgs->check_kernel_module_packages('unicorn-kernel', 'unicorn')) {
- $in->do_pkgs->install(@$unicorn_packages);
- }
- }
- }
- if (exists($isdn_cards{$ntf_name})) {
- require network::isdn;
- $netcnx->{capi} = $isdn_cards{$ntf_name};
- $adsl_type = "capi";
- return 'adsl_account';
- }
- return 'adsl_provider';
- },
- },
-
-
- adsl_provider =>
- {
- pre => sub {
- require network::adsl_consts;
- %adsl_data = %network::adsl_consts::adsl_data;
- $adsl_old_provider = $adsl_provider;
- },
- name => N("Please choose your ADSL provider"),
- data => sub {
- [ { label => N("Provider:"), type => "list", val => \$adsl_provider, separator => '|',
- list => [ sort(N("Unlisted - edit manually"), keys %adsl_data) ], sort => 0 } ];
- },
- post => sub {
- $adsl_type = 'pppoa' if member($ntf_name, qw(bewan speedtouch));
- if ($adsl_provider ne N("Unlisted - edit manually")) {
- $adsl_data = $adsl_data{$adsl_provider};
- if ($adsl_provider ne $adsl_old_provider) {
- $netc->{$_} = $adsl_data->{$_} foreach qw(DOMAINNAME2 Encapsulation vpi vci provider_id);
- $adsl_type = $adsl_data->{method};
- }
- }
- return 'adsl_protocol';
- },
- },
-
-
- adsl_speedtouch_firmware =>
- {
- name => N("You need the Alcatel microcode.
-You can provide it now via a floppy or your windows partition,
-or skip and do it later."),
- data => [ { label => "", val => \$adsl_answer, type => "list",
- list => [ N("Use a floppy"), N("Use my Windows partition"), N("Do it later") ], }
- ],
- post => sub {
- my $destination = "$::prefix/usr/share/speedtouch/";
- my ($file, $source, $mounted);
- if ($adsl_answer eq N("Use a floppy")) {
- $mounted = 1;
- $file = 'mgmt.o';
- ($source, $adsl_failed) = network::tools::use_floppy($in, $file);
- } elsif ($adsl_answer eq N("Use my Windows partition")) {
- ($source, $adsl_failed) = network::tools::use_windows($file = 'alcaudsl.sys');
- }
- return "adsl_no_firmawre" if $adsl_answer eq N("Do it later");
-
- my $_b = $mounted && before_leaving { fs::umount('/mnt') };
- if (!$adsl_failed) {
- if (-e "$source/$file") {
- cp_af("$source/$file", $destination) if !$::testing;
- } else {
- $adsl_failed = N("Firmware copy failed, file %s not found", $file);
- }
- }
- log::explanations($adsl_failed || "Firmware copy $file in $destination succeeded");
- -e "$destination/alcaudsl.sys" and rename "$destination/alcaudsl.sys", "$destination/mgmt.o";
-
- # kept translations b/c we may want to reuse it later:
- my $_msg = N("Firmware copy succeeded");
- return $adsl_failed ? 'adsl_copy_firmware_failled' : 'adsl_provider';
- },
- },
-
-
- adsl_copy_firmware_failled =>
- {
- name => sub { $adsl_failed },
- next => 'adsl_provider',
- },
-
-
- "adsl_no_firmawre" =>
- {
- name => N("You need the Alcatel microcode.
-Download it at:
-%s
-and copy the mgmt.o in /usr/share/speedtouch", 'http://www.speedtouch.com/supuser.htm'),
- next => "adsl_provider",
- },
-
-
- adsl_protocol =>
- {
- pre => sub {
- # preselect right protocol for ethernet though connections:
- if (!exists $adsl_descriptions{$ntf_name}) {
- $ethntf = $intf->{$ntf_name} ||= { DEVICE => $ntf_name };
- $adsl_type ||= $ethntf->{BOOTPROTO} || "dhcp";
- #- FIXME: use static instead of manual as key in %adsl_types
- $adsl_type = "manual" if $adsl_type eq "static";
- #- pppoa shouldn't be selected by default for ethernet devices, fallback on pppoe
- $adsl_type = "pppoe" if $adsl_type eq "pppoa";
- }
- },
- name => N("Connect to the Internet") . "\n\n" .
- N("The most common way to connect with adsl is pppoe.
-Some connections use PPTP, a few use DHCP.
-If you do not know, choose 'use PPPoE'"),
- data => [
- { text => N("ADSL connection type:"), val => \$adsl_type, type => "list",
- list => [ sort { $adsl_types{$a} cmp $adsl_types{$b} } keys %adsl_types ],
- format => sub { $adsl_types{$_[0]} },
- },
- ],
- post => sub {
- my $real_interface = $ntf_name;
- $netcnx->{type} = 'adsl';
- # blacklist bogus driver, enable ifplugd support else:
- $find_lan_module->();
- $ethntf->{MII_NOT_SUPPORTED} ||= $is_hotplug_blacklisted->();
- if ($ntf_name eq "sagem" && member($adsl_type, qw(manual dhcp))) {
- #- "fctStartAdsl -i" builds ifcfg-ethX from ifcfg-sagem and echoes ethX
- #- it auto-detects dhcp/static modes thanks to encapsulation setting
- $ethntf = $intf->{sagem} ||= {};
- $ethntf->{DEVICE} = "`/usr/sbin/fctStartAdsl -i`";
- $ethntf->{MII_NOT_SUPPORTED} = "yes";
- }
- if ($ntf_name eq "speedtouch" && member($adsl_type, qw(manual dhcp))) {
- #- use ATMARP with the atm0 interface
- $real_interface = "atm0";
- $ethntf = $intf->{$real_interface} ||= {};
- $ethntf->{DEVICE} = $real_interface;
- $ethntf->{ATM_ADDR} = undef;
- $ethntf->{MII_NOT_SUPPORTED} = "yes";
- }
- #- delete gateway settings if gateway device is invalid or if reconfiguring the gateway interface
- exists $intf->{$real_interface} and $delete_gateway_settings->($real_interface);
- # process static/dhcp ethernet devices:
- if (exists($intf->{$real_interface}) && member($adsl_type, qw(manual dhcp))) {
- $ethntf->{TYPE} = "ADSL";
- $auto_ip = $adsl_type eq 'dhcp';
- return 'lan_intf';
- }
- return 'adsl_account';
- },
- },
-
-
- adsl_account =>
- {
- pre => sub {
- network::adsl::adsl_probe_info($netcnx, $netc, $adsl_type, $ntf_name);
- $netc->{NET_DEVICE} = member($adsl_type, 'pppoe', 'pptp') ? $ntf_name : 'ppp0';
- $netc->{NET_INTERFACE} = 'ppp0';
- ($adsl_vpi, $adsl_vci) = map { hex($_) } @$netc{'vpi', 'vci'};
- },
- name => N("Connection Configuration") . "\n\n" .
- N("Please fill or check the field below"),
- data => sub {
- [
- if_(0, { label => N("Provider name (ex provider.net)"), val => \$netc->{DOMAINNAME2} }),
- { label => N("First DNS Server (optional)"), val => \$netc->{dnsServer2} },
- { label => N("Second DNS Server (optional)"), val => \$netc->{dnsServer3} },
- { label => N("Account Login (user name)"), val => \$netcnx->{login} },
- { label => N("Account Password"), val => \$netcnx->{passwd}, hidden => 1 },
- if_($adsl_type ne "capi",
- { label => N("Virtual Path ID (VPI):"), val => \$adsl_vpi, advanced => 1 },
- { label => N("Virtual Circuit ID (VCI):"), val => \$adsl_vci, advanced => 1 }
- ),
- if_($ntf_name eq "sagem",
- { label => N("Encapsulation:"), val => \$netc->{Encapsulation}, list => [ keys %encapsulations ],
- format => sub { $encapsulations{$_[0]} }, advanced => 1,
- },
- ),
- ];
- },
- post => sub {
- #- update ATM_ADDR for ATMARP connections
- exists $ethntf->{ATM_ADDR} and $ethntf->{ATM_ADDR} = join('.', $adsl_vpi, $adsl_vci);
- #- convert VPI/VCI back to hex
- @$netc{'vpi', 'vci'} = map { sprintf("%x", $_) } ($adsl_vpi, $adsl_vci);
-
- $netc->{internet_cnx_choice} = 'adsl';
- network::adsl::adsl_conf_backend($in, $modules_conf, $netcnx, $netc, $intf, $ntf_name, $adsl_type, $netcnx); #FIXME
- $config->{adsl} = { kind => $ntf_name, protocol => $adsl_type };
- $handle_multiple_cnx->();
- },
- },
-
-
- adsl_unsupported_eci =>
- {
- name => N("The ECI Hi-Focus modem cannot be supported due to binary driver distribution problem.
-
-You can find a driver on http://eciadsl.flashtux.org/"),
- end => 1,
- },
-
-
- lan =>
- {
- pre => $lan_detect,
- name => N("Select the network interface to configure:"),
- data => sub {
- [ { label => N("Net Device"), type => "list", val => \$ntf_name, list => [ (sort keys %eth_intf), N_("Manually load a driver"), if_($is_wireless, N_("Use a Windows driver (with ndiswrapper)")) ],
- allow_empty_list => 1, format => sub { translate($eth_intf{$_[0]} || $_[0]) } } ];
- },
- complete => sub {
- if ($ntf_name eq "Use a Windows driver (with ndiswrapper)") {
- require network::ndiswrapper;
- unless ($in->do_pkgs->ensure_is_installed('ndiswrapper', '/usr/sbin/ndiswrapper')) {
- $in->ask_warn(N("Error"), N("Could not install the %s package!", 'ndiswrapper'));
- return 1;
- }
- undef $ndiswrapper_driver;
- undef $ndiswrapper_device;
- unless (network::ndiswrapper::installed_drivers()) {
- $ndiswrapper_driver = network::ndiswrapper::ask_driver($in) or return 1;
- return !$ndiswrapper_do_driver_selection->();
- }
- }
- 0;
- },
- post => sub {
- if ($ntf_name eq "Manually load a driver") {
- modules::interactive::load_category__prompt($in, $modules_conf, list_modules::ethernet_categories());
- return 'lan';
- } elsif ($ntf_name eq "Use a Windows driver (with ndiswrapper)") {
- return $ndiswrapper_next_step->();
- }
- $ethntf = $intf->{$ntf_name} ||= { DEVICE => $ntf_name };
- return $after_lan_intf_selection->();
- },
- },
-
-
- lan_protocol =>
- {
- pre => sub {
- $find_lan_module->();
- my $intf_type = member($module, list_modules::category2modules('network/gigabit')) ? "ethernet_gigabit" : "ethernet";
- defined($ethntf->{METRIC}) or $ethntf->{METRIC} = network::tools::get_default_metric($intf_type);
-
- $protocol = $l10n_lan_protocols{defined $auto_ip ? ($auto_ip ? 'dhcp' : 'static') : $ethntf->{BOOTPROTO}} || 0;
- },
- name => sub {
- my $_msg = N("Zeroconf hostname resolution");
- N("Configuring network device %s (driver %s)", $ethntf->{DEVICE}, $module) . "\n\n" .
- N("The following protocols can be used to configure a LAN connection. Please choose the one you want to use");
- },
- data => sub {
- [ { val => \$protocol, type => "list", list => [ sort values %l10n_lan_protocols ] } ];
- },
- post => sub {
- $auto_ip = $protocol ne $l10n_lan_protocols{static} || 0;
- return 'lan_intf';
- },
- },
-
-
- # FIXME: is_install: no return for each card "last step" because of manual popping
- # better construct an hash of { current_netintf => next_step } which next_step = last_card ? next_eth_step : next_card ?
- lan_intf =>
- {
- pre => sub {
- $onboot = $ethntf->{ONBOOT} ? $ethntf->{ONBOOT} =~ /yes/ : bool2yesno(!member($ethntf->{DEVICE},
- map { $_->{device} } detect_devices::pcmcia_probe()));
- $needhostname = $ethntf->{NEEDHOSTNAME} !~ /no/;
- $peerdns = $ethntf->{PEERDNS} !~ /no/;
- $peeryp = $ethntf->{PEERYP} =~ /yes/;
- $peerntpd = $ethntf->{PEERNTPD} =~ /yes/;
- # blacklist bogus driver, enable ifplugd support else:
- $ethntf->{MII_NOT_SUPPORTED} ||= $is_hotplug_blacklisted->();
- $hotplug = !text2bool($ethntf->{MII_NOT_SUPPORTED});
- $track_network_id = $::isStandalone && $ethntf->{HWADDR} || detect_devices::isLaptop();
- delete $ethntf->{TYPE} if $netcnx->{type} ne 'adsl' || !member($adsl_type, qw(manual dhcp));
- $ethntf->{DHCP_CLIENT} ||= (find { -x "$::prefix/sbin/$_" } qw(dhclient dhcpcd pump dhcpxd));
- },
- name => sub { join('',
- N("Configuring network device %s (driver %s)", $ethntf->{DEVICE}, $module),
- if_(!$auto_ip, "\n\n" . N("Please enter the IP configuration for this machine.
-Each item should be entered as an IP address in dotted-decimal
-notation (for example, 1.2.3.4).")),
- ) },
- data => sub {
- [ $auto_ip ?
- (
- { text => N("Assign host name from DHCP address"), val => \$needhostname, type => "bool" },
- { label => N("DHCP host name"), val => \$ethntf->{DHCP_HOSTNAME} },
- )
- :
- (
- { label => N("IP address"), val => \$ethntf->{IPADDR}, disabled => sub { $auto_ip } },
- { label => N("Netmask"), val => \$ethntf->{NETMASK}, disabled => sub { $auto_ip } },
- ),
- { text => N("Track network card id (useful for laptops)"), val => \$track_network_id, type => "bool" },
- if_(!$is_wireless,
- { text => N("Network Hotplugging"), val => \$hotplug, type => "bool" }),
- if_($netcnx->{type} eq "lan",
- { text => N("Start at boot"), val => \$onboot, type => "bool" },
- ),
- { label => N("Metric"), val => \$ethntf->{METRIC}, advanced => 1 },
- if_($auto_ip,
- { label => N("DHCP client"), val => \$ethntf->{DHCP_CLIENT},
- list => \@network::ethernet::dhcp_clients, advanced => 1 },
- { label => N("DHCP timeout (in seconds)"), val => \$ethntf->{DHCP_TIMEOUT}, advanced => 1 },
- { text => N("Get DNS servers from DHCP"), val => \$peerdns, type => "bool", advanced => 1 },
- { text => N("Get YP servers from DHCP"), val => \$peeryp, type => "bool", advanced => 1 },
- { text => N("Get NTPD servers from DHCP"), val => \$peerntpd, type => "bool", advanced => 1 },
- ),
- ];
- },
- complete => sub {
- $ethntf->{BOOTPROTO} = $auto_ip ? "dhcp" : "static";
- $netc->{DHCP} = $auto_ip;
- return 0 if $auto_ip;
- if (!is_ip($ethntf->{IPADDR})) {
- $in->ask_warn(N("Error"), N("IP address should be in format 1.2.3.4"));
- return 1, 0;
- }
- if (!is_ip($ethntf->{NETMASK})) {
- $in->ask_warn(N("Error"), N("Netmask should be in format 255.255.224.0"));
- return 1, 1;
- }
- if (is_ip_forbidden($ethntf->{IPADDR})) {
- $in->ask_warn(N("Error"), N("Warning: IP address %s is usually reserved!", $ethntf->{IPADDR}));
- return 1, 0;
- }
- #- test if IP address is already used (do not test for sagem DSL devices since it may use many ifcfg files)
- if ($ntf_name ne "sagem" && find { $_->{DEVICE} ne $ethntf->{DEVICE} && $_->{IPADDR} eq $ethntf->{IPADDR} } values %$intf) {
- $in->ask_warn(N("Error"), N("%s already in use\n", $ethntf->{IPADDR}));
- return 1, 0;
- }
- },
- focus_out => sub {
- $ethntf->{NETMASK} ||= netmask($ethntf->{IPADDR}) unless $ethntf->{NETMASK};
- },
- post => sub {
- $ethntf->{ONBOOT} = bool2yesno($onboot);
- $ethntf->{NEEDHOSTNAME} = bool2yesno($needhostname);
- $ethntf->{PEERDNS} = bool2yesno($peerdns);
- $ethntf->{PEERYP} = bool2yesno($peeryp);
- $ethntf->{PEERNTPD} = bool2yesno($peerntpd);
- $ethntf->{MII_NOT_SUPPORTED} = bool2yesno(!$hotplug);
- $ethntf->{HWADDR} = $track_network_id or delete $ethntf->{HWADDR};
- #- FIXME: special case for sagem where $ethntf->{DEVICE} is the result of a command
- #- we can't always use $ntf_name because of some USB DSL modems
- $netc->{$_} = $ntf_name eq "sagem" ? "sagem" : $ethntf->{DEVICE} foreach qw(NET_DEVICE NET_INTERFACE);
- if ($auto_ip) {
- #- delete gateway settings if gateway device is invalid or if reconfiguring the gateway interface to dhcp
- $delete_gateway_settings->($ntf_name);
- }
- return "static_hostname";
- },
- },
-
- ndiswrapper_select_driver =>
- {
- pre => sub {
- @ndiswrapper_drivers = network::ndiswrapper::installed_drivers();
- $ndiswrapper_driver ||= first(@ndiswrapper_drivers);
- },
- data => sub {
- [ { label => N("Choose an ndiswrapper driver"), type => "list", val => \$ndiswrapper_driver, allow_empty_list => 1,
- list => [ undef, @ndiswrapper_drivers ],
- format => sub { defined $_[0] ? N("Use the ndiswrapper driver %s", $_[0]) : N("Install a new driver") } } ];
- },
- complete => sub {
- $ndiswrapper_driver ||= network::ndiswrapper::ask_driver($in) or return 1;
- !$ndiswrapper_do_driver_selection->();
- },
- post => $ndiswrapper_next_step,
- },
-
- ndiswrapper_select_device =>
- {
- data => sub {
- [ { label => N("Select a device:"), type => "list", val => \$ndiswrapper_device, allow_empty_list => 1,
- list => [ network::ndiswrapper::present_devices($ndiswrapper_driver) ],
- format => sub { $_[0]{description} } } ];
- },
- complete => sub {
- !$ndiswrapper_do_device_selection->();
- },
- post => $ndiswrapper_next_step,
- },
-
- wireless =>
- {
- pre => sub {
- require network::wireless;
- $ethntf->{wireless_eth} = 1;
- $netc->{wireless_eth} = 1;
- $ethntf->{WIRELESS_MODE} ||= "Managed";
- $ethntf->{WIRELESS_ESSID} ||= "any";
- ($wireless_enc_key, my $restricted) = network::wireless::get_wep_key_from_iwconfig($ethntf->{WIRELESS_ENC_KEY});
- $wireless_enc_mode =
- $ethntf->{WIRELESS_WPA_DRIVER} || $ethntf->{WIRELESS_IWPRIV} =~ /WPAPSK/ ? 'wpa-psk' :
- !$wireless_enc_key ? 'none' :
- $restricted ? 'restricted' :
- 'open';
- $find_lan_module->();
- $need_rt2x00_iwpriv = member($module, "rt2400", "rt2500");
- },
- name => N("Please enter the wireless parameters for this card:"),
- data => sub {
- [
- { label => N("Operating Mode"), val => \$ethntf->{WIRELESS_MODE},
- list => [ N_("Ad-hoc"), N_("Managed"), N_("Master"), N_("Repeater"), N_("Secondary"), N_("Auto") ],
- format => \&translate },
- { label => N("Network name (ESSID)"), val => \$ethntf->{WIRELESS_ESSID} },
- { label => N("Network ID"), val => \$ethntf->{WIRELESS_NWID}, advanced => 1 },
- { label => N("Operating frequency"), val => \$ethntf->{WIRELESS_FREQ}, advanced => 1 },
- { label => N("Sensitivity threshold"), val => \$ethntf->{WIRELESS_SENS}, advanced => 1 },
- { label => N("Bitrate (in b/s)"), val => \$ethntf->{WIRELESS_RATE}, advanced => 1 },
- { label => N("Encryption mode"), val => \$wireless_enc_mode,
- list => [ sort { $wireless_enc_modes{$a} cmp $wireless_enc_modes{$b} } keys %wireless_enc_modes ],
- format => sub { $wireless_enc_modes{$_[0]} } },
- { label => N("Encryption key"), val => \$wireless_enc_key, disabled => sub { $wireless_enc_mode eq 'none' } },
- { label => N("RTS/CTS"), val => \$ethntf->{WIRELESS_RTS}, advanced => 1,
- help => N("RTS/CTS adds a handshake before each packet transmission to make sure that the
-channel is clear. This adds overhead, but increase performance in case of hidden
-nodes or large number of active nodes. This parameter sets the size of the
-smallest packet for which the node sends RTS, a value equal to the maximum
-packet size disable the scheme. You may also set this parameter to auto, fixed
-or off.")
- },
- { label => N("Fragmentation"), val => \$ethntf->{WIRELESS_FRAG}, advanced => 1 },
- { label => N("Iwconfig command extra arguments"), val => \$ethntf->{WIRELESS_IWCONFIG}, advanced => 1,
- help => N("Here, one can configure some extra wireless parameters such as:
-ap, channel, commit, enc, power, retry, sens, txpower (nick is already set as the hostname).
-
-See iwconfig(8) man page for further information."),
- },
- { label =>
- #-PO: split the "xyz command extra argument" translated string into two lines if it's bigger than the english one
- N("Iwspy command extra arguments"), val => \$ethntf->{WIRELESS_IWSPY}, advanced => 1,
- help => N("Iwspy is used to set a list of addresses in a wireless network
-interface and to read back quality of link information for each of those.
-
-This information is the same as the one available in /proc/net/wireless :
-quality of the link, signal strength and noise level.
-
-See iwpspy(8) man page for further information."),
- },
- if_(!$need_rt2x00_iwpriv,
- { label => N("Iwpriv command extra arguments"), val => \$ethntf->{WIRELESS_IWPRIV}, advanced => 1,
- help => N("Iwpriv enable to set up optionals (private) parameters of a wireless network
-interface.
-
-Iwpriv deals with parameters and setting specific to each driver (as opposed to
-iwconfig which deals with generic ones).
-
-In theory, the documentation of each device driver should indicate how to use
-those interface specific commands and their effect.
-
-See iwpriv(8) man page for further information."),
- })
- ];
- },
- complete => sub {
- if ($ethntf->{WIRELESS_FREQ} && $ethntf->{WIRELESS_FREQ} !~ /[0-9.]*[kGM]/) {
- $in->ask_warn(N("Error"), N("Freq should have the suffix k, M or G (for example, \"2.46G\" for 2.46 GHz frequency), or add enough '0' (zeroes)."));
- return 1, 6;
- }
- if ($ethntf->{WIRELESS_RATE} && $ethntf->{WIRELESS_RATE} !~ /[0-9.]*[kGM]/) {
- $in->ask_warn(N("Error"), N("Rate should have the suffix k, M or G (for example, \"11M\" for 11M), or add enough '0' (zeroes)."));
- return 1, 8;
- }
- if (network::wireless::wlan_ng_needed($module) && !$in->do_pkgs->ensure_is_installed('prism2-utils', '/sbin/wlanctl-ng')) {
- $in->ask_warn(N("Error"), N("Could not install the %s package!", 'prism2-utils'));
- return 1;
- }
- if ($wireless_enc_mode eq 'wpa-psk' && !$need_rt2x00_iwpriv && !$in->do_pkgs->ensure_is_installed('wpa_supplicant', '/usr/sbin/wpa_supplicant')) {
- $in->ask_warn(N("Error"), N("Could not install the %s package!", 'wpa_supplicant'));
- return 1;
- }
- },
- post => sub {
- delete $ethntf->{WIRELESS_ENC_KEY};
- delete $ethntf->{WIRELESS_WPA_DRIVER};
- if ($wireless_enc_mode ne 'none') {
- #- keep the key even for WPA, so that drakconnect remembers it
- $ethntf->{WIRELESS_ENC_KEY} = network::wireless::convert_wep_key_for_iwconfig($wireless_enc_key, $wireless_enc_mode eq 'restricted');
- }
- if ($need_rt2x00_iwpriv) {
- #- use iwpriv for WPA with rt2x00 drivers, they don't plan to support wpa_supplicant
- $ethntf->{WIRELESS_IWPRIV} = $wireless_enc_mode eq 'wpa-psk' && qq(set AuthMode=WPAPSK
-set EncrypType=TKIP
-set WPAPSK="$wireless_enc_key"
-set TxRate=0);
- } else {
- if ($wireless_enc_mode eq 'wpa-psk') {
- $ethntf->{WIRELESS_WPA_DRIVER} = network::wireless::wpa_supplicant_get_driver($module);
- network::wireless::wpa_supplicant_configure($ethntf->{WIRELESS_ESSID}, $wireless_enc_key);
- }
- }
- network::wireless::wlan_ng_needed($module) and network::wireless::wlan_ng_configure($ethntf->{WIRELESS_ESSID}, $wireless_enc_key, $ethntf->{DEVICE}, $module);
- return "lan_protocol";
- },
- },
-
-
- dvb =>
- {
- name => N("DVB configuration") . "\n\n" . N("Select the network interface to configure:"),
- data => [ { label => N("DVB Adapter"), type => "list", val => \$dvb_adapter, allow_empty_list => 1,
- list => [ modules::probe_category("multimedia/dvb") ], format => sub { $_[0]{description} } } ],
- next => "dvb_adapter",
- },
-
-
- dvb_adapter =>
- {
- pre => sub {
- use Fcntl qw(O_RDWR O_NONBLOCK);
- my $previous_ethntf = find { $is_dvb_interface->($_) } values %$intf;
- $dvb_ad = $previous_ethntf->{DVB_ADAPTER_ID};
- $dvb_net = $previous_ethntf->{DVB_NETWORK_DEMUX};
- $dvb_pid = $previous_ethntf->{DVB_NETWORK_PID};
- if (my $device = find { sysopen(undef, $_, O_RDWR | O_NONBLOCK) } glob("/dev/dvb/adapter*/net*")) {
- ($dvb_ad, $dvb_net) = $device =~ m,/dev/dvb/adapter(\d+)/net(\d+),;
- }
- },
- name => N("DVB adapter settings"),
- data => sub {
- [
- { label => N("Adapter card"), val => \$dvb_ad },
- { label => N("Net demux"), val => \$dvb_net },
- { label => N("PID"), val => \$dvb_pid },
- ];
- },
- post => sub {
- $ntf_name = 'dvb' . $dvb_ad . '_' . $dvb_net;
- $ethntf = $intf->{$ntf_name} ||= {};
- $ethntf->{DEVICE} = $ntf_name;
- $ethntf->{DVB_ADAPTER_ID} = qq("$dvb_ad");
- $ethntf->{DVB_NETWORK_DEMUX} = qq("$dvb_net");
- $ethntf->{DVB_NETWORK_PID} = qq("$dvb_pid");
- return "lan_protocol";
- },
- },
-
- static_hostname =>
- {
- pre => sub {
- if ($ethntf->{IPADDR}) {
- $netc->{dnsServer} ||= dns($ethntf->{IPADDR});
- $gateway_ex = gateway($ethntf->{IPADDR});
- # $netc->{GATEWAY} ||= gateway($ethntf->{IPADDR});
- if ($ntf_name eq "sagem") {
- my @sagem_ip = split(/\./, $ethntf->{IPADDR});
- $sagem_ip[3] = 254;
- $netc->{GATEWAY} = join(".", @sagem_ip);
- }
- }
- },
- name => N("Please enter your host name.
-Your host name should be a fully-qualified host name,
-such as ``mybox.mylab.myco.com''.
-You may also enter the IP address of the gateway if you have one.") .
- " " . # better looking text (to be merged into texts since some languages (eg: ja) doesn't need it
-N("Last but not least you can also type in your DNS server IP addresses."),
- data => sub {
- [ { label => $auto_ip ? N("Host name (optional)") : N("Host name"), val => \$netc->{HOSTNAME} },
- if_(!$auto_ip,
- { label => N("DNS server 1"), val => \$netc->{dnsServer} },
- { label => N("DNS server 2"), val => \$netc->{dnsServer2} },
- { label => N("DNS server 3"), val => \$netc->{dnsServer3} },
- { label => N("Search domain"), val => \$netc->{DOMAINNAME},
- help => N("By default search domain will be set from the fully-qualified host name") },
- { label => N("Gateway (e.g. %s)", $gateway_ex), val => \$netc->{GATEWAY} },
- if_(@all_cards > 1,
- { label => N("Gateway device"), val => \$netc->{GATEWAYDEV}, list => [ N_("None"), sort keys %all_eth_intf ],
- format => sub { $all_eth_intf{$_[0]} || translate($_[0]) } },
- ),
- ),
- ];
- },
- complete => sub {
- foreach my $dns (qw(dnsServer dnsServer2 dnsServer3)) {
- if ($netc->{$dns} && !is_ip($netc->{$dns})) {
- $in->ask_warn(N("Error"), N("DNS server address should be in format 1.2.3.4"));
- return 1;
- }
- }
- if ($netc->{GATEWAY} && !is_ip($netc->{GATEWAY})) {
- $in->ask_warn(N("Error"), N("Gateway address should be in format 1.2.3.4"));
- return 1;
- }
- },
- post => sub {
- $netc->{GATEWAYDEV} eq "None" and delete $netc->{GATEWAYDEV};
- return "zeroconf";
- }
- },
-
-
- zeroconf =>
- {
- name => N("If desired, enter a Zeroconf hostname.
-This is the name your machine will use to advertise any of
-its shared resources that are not managed by the network.
-It is not necessary on most networks."),
- data => [ { label => N("Zeroconf Host name"), val => \$netc->{ZEROCONF_HOSTNAME} } ],
- complete => sub {
- if ($netc->{ZEROCONF_HOSTNAME} =~ /\./) {
- $in->ask_warn(N("Error"), N("Zeroconf host name must not contain a ."));
- return 1;
- }
- },
- post => $handle_multiple_cnx,
- },
-
-
- multiple_internet_cnx =>
- {
- name => N("You have configured multiple ways to connect to the Internet.\nChoose the one you want to use.\n\n") . if_(!$::isStandalone, "You may want to configure some profiles after the installation, in the Mandriva Control Center"),
- data => sub {
- [ { label => N("Internet connection"), val => \$netc->{internet_cnx_choice},
- list => [ keys %{$netc->{internet_cnx}} ] } ];
- },
- post => $save_cnx,
- },
-
-
- apply_settings =>
- {
- name => N("Configuration is complete, do you want to apply settings?"),
- type => "yesorno",
- },
-
-
- allow_user_ctl =>
- {
- name => N("Do you want to allow users to start the connection?"),
- type => "yesorno",
- default => sub { bool2yesno(text2bool($intf->{$netc->{NET_INTERFACE}}{USERCTL})) },
- post => sub {
- my ($res) = @_;
- $res = bool2yesno($res);
- $intf->{$netc->{NET_INTERFACE}}{USERCTL} = $res;
- my $ifcfg_file = "$::prefix/etc/sysconfig/network-scripts/ifcfg-$netc->{NET_INTERFACE}";
- -f $ifcfg_file and substInFile { s/^USERCTL.*\n//; $_ .= qq(USERCTL=$res\n) if eof } $ifcfg_file;
- return $goto_start_on_boot_ifneeded->();
- },
- },
-
-
- network_on_boot =>
- {
- pre => sub {
- # condition is :
- member($netc->{internet_cnx_choice}, ('adsl', 'isdn')); # and $netc->{at_boot} = $in->ask_yesorno(N("Network Configuration Wizard"), N("Do you want to start the connection at boot?"));
- },
- name => N("Do you want to start the connection at boot?"),
- type => "yesorno",
- default => sub { ($type eq 'modem' ? 'no' : 'yes') },
- post => sub {
- my ($res) = @_;
- $netc->{at_boot} = $res;
- $res = bool2yesno($res);
- $ethntf->{ONBOOT} = $res if $netcnx->{type} eq 'adsl' && member($adsl_type, qw(manual dhcp));
- my $ifcfg_file = "$::prefix/etc/sysconfig/network-scripts/ifcfg-$netc->{NET_INTERFACE}";
- -f $ifcfg_file and substInFile { s/^ONBOOT.*\n//; $_ .= qq(ONBOOT=$res\n) if eof } $ifcfg_file;
- return $after_start_on_boot_step->();
- },
- },
-
-
- isdn_dial_on_boot =>
- {
- pre => sub {
- $intf->{ippp0} ||= { DEVICE => "ippp0" }; # we want the ifcfg-ippp0 file to be written
- @isdn_dial_methods = ({ name => N("Automatically at boot"),
- ONBOOT => 1, DIAL_ON_IFUP => 1 },
- { name => N("By using Net Applet in the system tray"),
- ONBOOT => 0, DIAL_ON_IFUP => 1 },
- { name => N("Manually (the interface would still be activated at boot)"),
- ONBOOT => 1, DIAL_ON_IFUP => 0 });
- my $method = find {
- $_->{ONBOOT} eq text2bool($intf->{ippp0}{ONBOOT}) &&
- $_->{DIAL_ON_IFUP} eq text2bool($intf->{ippp0}{DIAL_ON_IFUP});
- } @isdn_dial_methods;
- #- use net_applet by default
- $isdn->{dial_method} = $method->{name} || $isdn_dial_methods[1]{name};
- },
- name => N("How do you want to dial this connection?"),
- data => sub {
- [ { type => "list", val => \$isdn->{dial_method}, list => [ map { $_->{name} } @isdn_dial_methods ] } ];
- },
- post => sub {
- my $method = find { $_->{name} eq $isdn->{dial_method} } @isdn_dial_methods;
- $intf->{ippp0}{$_} = bool2yesno($method->{$_}) foreach qw(ONBOOT DIAL_ON_IFUP);
- return $after_start_on_boot_step->();
- },
- },
-
-
- restart =>
- {
- name => N("The network needs to be restarted. Do you want to restart it?"),
- type => "yesorno",
- post => sub {
- my ($a) = @_;
- network::ethernet::write_ether_conf($in, $modules_conf, $netcnx, $netc, $intf) if $netcnx->{type} eq 'lan';
- if ($a && !$::testing && !run_program::rooted($::prefix, "/etc/rc.d/init.d/network restart")) {
- $success = 0;
- $in->ask_okcancel(N("Network Configuration"),
- N("A problem occurred while restarting the network: \n\n%s", `/etc/rc.d/init.d/network restart`), 0);
- }
- return $offer_to_connect->();
- },
- },
-
-
- ask_connect_now =>
- {
- name => N("Do you want to try to connect to the Internet now?"),
- type => "yesorno",
- post => sub {
- my ($a) = @_;
- my $type = $netc->{internet_cnx_choice};
- $up = 1;
- if ($a) {
- # local $::isWizard = 0;
- my $_w = $in->wait_message('', N("Testing your connection..."), 1);
- disconnect_backend($netc);
- sleep 1;
- connect_backend($netc);
- my $s = 30;
- $type =~ /modem/ and $s = 50;
- $type =~ /adsl/ and $s = 35;
- $type =~ /isdn/ and $s = 20;
- sleep $s;
- $up = connected();
- }
- $success = $up;
- return $a ? "disconnect" : "end";
- }
- },
-
-
- disconnect =>
- {
- name => sub {
- $up ? N("The system is now connected to the Internet.") .
- if_($::isInstall, N("For security reasons, it will be disconnected now.")) :
- N("The system does not seem to be connected to the Internet.
-Try to reconfigure your connection.");
- },
- no_back => 1,
- end => 1,
- post => sub {
- $::isInstall and disconnect_backend($netc);
- return "end";
- },
- },
-
-
- end =>
- {
- name => sub {
- return $success ? join('', N("Congratulations, the network and Internet configuration is finished.
-
-"), if_($::isStandalone && $in->isa('interactive::gtk'),
- N("After this is done, we recommend that you restart your X environment to avoid any hostname-related problems."))) :
- N("Problems occurred during configuration.
-Test your connection via net_monitor or mcc. If your connection does not work, you might want to relaunch the configuration.");
- },
- end => 1,
- },
- },
- };
-
- my $use_wizard = 1;
- if ($::isInstall) {
- if ($first_time && $in->{method} =~ /^(ftp|http|nfs)$/) {
- local $::isWizard;
- !$::expert && !$o_noauto || $in->ask_okcancel(N("Network Configuration"),
- N("Because you are doing a network installation, your network is already configured.
-Click on Ok to keep your configuration, or cancel to reconfigure your Internet & Network connection.
-"), 1)
- and do {
- $netcnx->{type} = 'lan';
- $netc->{$_} = 'eth0' foreach qw(NET_DEVICE NET_INTERFACE);
- $use_wizard = 0;
- };
- }
- }
-
- if ($use_wizard) {
- require wizards;
- $wiz->{var} = {
- netc => $netc,
- mouse => $mouse,
- intf => $intf,
- };
- wizards->new->process($wiz, $in);
- }
-
- # install needed packages:
- $network_configured or network::network::configureNetwork2($in, $modules_conf, $::prefix, $netc, $intf);
-
- $netcnx->{$_} = $netc->{$_} foreach qw(NET_DEVICE NET_INTERFACE);
- $netcnx->{type} =~ /adsl/ or run_program::rooted($::prefix, "/chkconfig --del adsl 2> /dev/null");
-}
-
-sub main {
- my ($netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) = @_;
- eval { real_main($netcnx, $in, $modules_conf, $o_netc, $o_mouse, $o_intf, $o_first_time, $o_noauto) };
- my $err = $@;
- if ($err) { # && $in->isa('interactive::gtk')
- $err =~ /wizcancel/ and $in->exit(0);
-
- local $::isEmbedded = 0; # to prevent sub window embedding
- local $::isWizard = 0 if !$::isInstall; # to prevent sub window embedding
- #err_dialog(N("Error"), N("An unexpected error has happened:\n%s", $err));
- $in->ask_warn(N("Error"), N("An unexpected error has happened:\n%s", $err));
- }
-}
-
-sub set_profile {
- my ($netcnx) = @_;
- system('/sbin/set-netprofile', $netcnx->{PROFILE});
- log::explanations(qq(Switching to "$netcnx->{PROFILE}" profile));
-}
-
-sub save_profile {
- my ($netcnx) = @_;
- system('/sbin/save-netprofile', $netcnx->{PROFILE});
- log::explanations(qq(Saving "$netcnx->{PROFILE}" profile));
-}
-
-sub del_profile {
- my ($profile) = @_;
- return if !$profile || $profile eq "default";
- rm_rf("$::prefix/etc/netprofile/profiles/$profile");
- log::explanations(qq(Deleting "$profile" profile));
-}
-
-sub add_profile {
- my ($netcnx, $profile) = @_;
- return if !$profile || $profile eq "default" || member($profile, get_profiles());
- system('/sbin/clone-netprofile', $netcnx->{PROFILE}, $profile);
- log::explanations(qq("Creating "$profile" profile));
-}
-
-sub get_profiles() {
- map { if_(m!([^/]*)/$!, $1) } glob("$::prefix/etc/netprofile/profiles/*/");
-}
-
-sub read_net_conf {
- my ($netcnx, $netc, $intf) = @_;
- my $current = { getVarsFromSh("$::prefix/etc/netprofile/current") };
-
- $netcnx->{PROFILE} = $current->{PROFILE} || 'default';
- network::network::read_all_conf($::prefix, $netc, $intf, $netcnx);
-
- foreach ('NET_DEVICE', 'NET_INTERFACE') {
- $netc->{$_} = $netcnx->{$_} if $netcnx->{$_};
- }
- $netcnx->{$netcnx->{type}} ||= {} if $netcnx->{type};
-}
-
-sub start_internet {
- my ($o) = @_;
- init_globals($o);
- #- give a chance for module to be loaded using kernel-BOOT modules...
- $::isStandalone or modules::load_category($o->{modules_conf}, 'network/*');
- connect_backend($o->{netc});
-}
-
-sub stop_internet {
- my ($o) = @_;
- init_globals($o);
- disconnect_backend($o->{netc});
-}
-
-1;
-
-=head1 network::netconnect::detect()
-
-=head2 example of usage
-
-use lib qw(/usr/lib/libDrakX);
-use network::netconnect;
-use Data::Dumper;
-
-use class_discard;
-
-local $in = class_discard->new;
-
-network::netconnect::init_globals($in);
-my %i;
-network::netconnect::detect($modules_conf, \%i);
-print Dumper(\%i),"\n";
-
-=cut
diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm
deleted file mode 100644
index 5f90dcdaa..000000000
--- a/perl-install/network/network.pm
+++ /dev/null
@@ -1,529 +0,0 @@
-package network::network; # $Id$wir
-
-#-######################################################################################
-#- misc imports
-#-######################################################################################
-
-use strict;
-
-use Socket;
-use common;
-use detect_devices;
-use run_program;
-use network::tools;
-use any;
-use vars qw(@ISA @EXPORT);
-use log;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(add2hosts addDefaultRoute configureNetwork2 dns dnsServers findIntf gateway guessHostname is_ip is_ip_forbidden masked_ip netmask read_all_conf read_conf read_interface_conf read_resolv_conf resolv sethostname write_conf write_resolv_conf);
-
-#-######################################################################################
-#- Functions
-#-######################################################################################
-sub read_conf {
- my ($file) = @_;
- +{ getVarsFromSh($file) };
-}
-
-sub read_resolv_conf_raw {
- my ($o_file) = @_;
- my $s = cat_($o_file || "$::prefix/etc/resolv.conf");
- { nameserver => [ $s =~ /^\s*nameserver\s+(\S+)/mg ],
- search => [ if_($s =~ /^\s*search\s+(.*)/m, split(' ', $1)) ] };
-}
-
-sub read_resolv_conf {
- my ($o_file) = @_;
- my $resolv_conf = read_resolv_conf_raw($o_file);
- +{
- (mapn { $_[0] => $_[1] } [ qw(dnsServer dnsServer2 dnsServer3) ], $resolv_conf->{nameserver}),
- (mapn { $_[0] => $_[1] } [ qw(DOMAINNAME DOMAINNAME2 DOMAINNAME3) ], $resolv_conf->{search}),
- };
-}
-
-sub read_interface_conf {
- my ($file) = @_;
- my %intf = getVarsFromSh($file);
-
- $intf{BOOTPROTO} ||= 'static';
- $intf{isPtp} = $intf{NETWORK} eq '255.255.255.255';
- $intf{isUp} = 1;
- \%intf;
-}
-
-sub read_tmdns_conf() {
- my $file = "$::prefix/etc/tmdns.conf";
- cat_($file) =~ /^\s*hostname\s*=\s*(\w+)/m && { ZEROCONF_HOSTNAME => $1 };
-}
-
-sub write_conf {
- my ($netc) = @_;
- my $file = "$::prefix/etc/sysconfig/network";
-
- if ($netc->{HOSTNAME} && $netc->{HOSTNAME} =~ /\.(.+)$/) {
- $netc->{DOMAINNAME} = $1;
- }
- $netc->{NETWORKING} = 'yes';
-
- setVarsInSh($file, $netc, qw(HOSTNAME NETWORKING GATEWAY GATEWAYDEV NISDOMAIN));
-}
-
-sub write_zeroconf {
- my ($file, $zhostname) = @_;
- eval { substInFile { s/^\s*(hostname)\s*=.*/$1 = $zhostname/ } $file };
-}
-
-sub write_resolv_conf {
- my ($file, $netc) = @_;
-
- my %new = (
- search => [ grep { $_ } uniq(@$netc{'DOMAINNAME', 'DOMAINNAME2', 'DOMAINNAME3'}) ],
- nameserver => [ grep { $_ } uniq(@$netc{'dnsServer', 'dnsServer2', 'dnsServer3'}) ],
- );
-
- my (%prev, @unknown);
- foreach (cat_($file)) {
- s/\s+$//;
- s/^[#\s]*//;
-
- if (my ($key, $val) = /^(search|nameserver)\s+(.*)$/) {
- push @{$prev{$key}}, $val;
- } elsif (/^ppp temp entry$/) {
- } elsif (/\S/) {
- push @unknown, $_;
- }
- }
- unlink $file if -l $file; #- workaround situation when /etc/resolv.conf is an absolute link to /etc/ppp/resolv.conf or whatever
-
- if (@{$new{search}} || @{$new{nameserver}}) {
- $prev{$_} = [ difference2($prev{$_} || [], $new{$_}) ] foreach keys %new;
-
- my @search = do {
- my @new = if_(@{$new{search}}, "search " . join(' ', @{$new{search}}) . "\n");
- my @old = if_(@{$prev{search}}, "# search " . join(' ', @{$prev{search}}) . "\n");
- @new, @old;
- };
- my @nameserver = do {
- my @new = map { "nameserver $_\n" } @{$new{nameserver}};
- my @old = map { "# nameserver $_\n" } @{$prev{nameserver}};
- @new, @old;
- };
- output_with_perm($file, 0644, @search, @nameserver, (map { "# $_\n" } @unknown), "\n# ppp temp entry\n");
-
- #-res_init(); # reinit the resolver so DNS changes take affect
- 1;
- } else {
- log::explanations("neither domain name nor dns server are configured");
- 0;
- }
-}
-
-sub update_broadcast_and_network {
- my ($intf) = @_;
- my @ip = split '\.', $intf->{IPADDR};
- my @mask = split '\.', $intf->{NETMASK};
- $intf->{BROADCAST} = join('.', mapn { int($_[0]) | ((~int($_[1])) & 255) } \@ip, \@mask);
- $intf->{NETWORK} = join('.', mapn { int($_[0]) & $_[1] } \@ip, \@mask);
-}
-
-sub write_interface_conf {
- my ($file, $intf, $_netc, $_prefix) = @_;
-
- require network::ethernet;
- my (undef, $mac_address) = network::ethernet::get_eth_card_mac_address($intf->{DEVICE});
- $intf->{HWADDR} &&= $mac_address; #- set HWADDR to MAC address if required
-
- update_broadcast_and_network($intf);
- $intf->{ONBOOT} ||= bool2yesno(!member($intf->{DEVICE}, map { $_->{device} } detect_devices::pcmcia_probe()));
-
- defined($intf->{METRIC}) or $intf->{METRIC} = network::tools::get_default_metric(network::tools::get_interface_type($intf)),
- $intf->{BOOTPROTO} =~ s/dhcp.*/dhcp/;
-
- setVarsInSh($file, $intf, qw(DEVICE BOOTPROTO IPADDR NETMASK NETWORK BROADCAST ONBOOT HWADDR METRIC MII_NOT_SUPPORTED TYPE USERCTL ATM_ADDR),
- qw(WIRELESS_MODE WIRELESS_ESSID WIRELESS_NWID WIRELESS_FREQ WIRELESS_SENS WIRELESS_RATE WIRELESS_ENC_KEY WIRELESS_RTS WIRELESS_FRAG WIRELESS_IWCONFIG WIRELESS_IWSPY WIRELESS_IWPRIV WIRELESS_WPA_DRIVER),
- qw(DVB_ADAPTER_ID DVB_NETWORK_DEMUX DVB_NETWORK_PID),
- if_($intf->{BOOTPROTO} eq "dhcp", qw(DHCP_CLIENT DHCP_HOSTNAME NEEDHOSTNAME PEERDNS PEERYP PEERNTPD DHCP_TIMEOUT)),
- if_($intf->{DEVICE} =~ /^ippp\d+$/, qw(DIAL_ON_IFUP))
- );
- substInFile { s/^DEVICE='(`.*`)'/DEVICE=$1/g } $file; #- remove quotes if DEVICE is the result of a command
-
- chmod $intf->{WIRELESS_ENC_KEY} ? 0700 : 0755, $file; #- hide WEP key for non-root users
- log::explanations("written $intf->{DEVICE} interface configuration in $file");
-}
-
-sub add2hosts {
- my ($file, $hostname, @ips) = @_;
- my ($sub_hostname) = $hostname =~ /(.*?)\./;
-
- my %l;
- foreach (cat_($file)) {
- my ($ip, $aliases) = /^\s*(\S+)\s+(\S+.*)$/ or next;
- push @{$l{$ip}}, difference2([ split /\s+/, $aliases ], [ $hostname, $sub_hostname ]);
- } cat_($file);
-
- push @{$l{$_}}, $hostname, if_($sub_hostname, $sub_hostname) foreach grep { $_ } @ips;
-
- log::explanations("writing host information to $file");
- output($file, map { "$_\t\t" . join(" ", @{$l{$_}}) . "\n" } keys %l);
-}
-
-# The interface/gateway needs to be configured before this will work!
-sub guessHostname {
- my ($_prefix, $netc, $intf) = @_;
-
- $intf->{isUp} && dnsServers($netc) or return 0;
- $netc->{HOSTNAME} && $netc->{DOMAINNAME} and return 1;
-
- write_resolv_conf("$::prefix/etc/resolv.conf", $netc);
-
- my $name = gethostbyaddr(Socket::inet_aton($intf->{IPADDR}), Socket::AF_INET()) or log::explanations("reverse name lookup failed"), return 0;
-
- log::explanations("reverse name lookup worked");
-
- add2hash($netc, { HOSTNAME => $name });
- 1;
-}
-
-sub addDefaultRoute {
- my ($netc) = @_;
- c::addDefaultRoute($netc->{GATEWAY}) if $netc->{GATEWAY};
-}
-
-sub sethostname {
- my ($netc) = @_;
- my $text;
- syscall_("sethostname", $netc->{HOSTNAME}, length $netc->{HOSTNAME}) ? ($text="set sethostname to $netc->{HOSTNAME}") : ($text="sethostname failed: $!");
- log::explanations($text);
-
- if (!$::isInstall) {
- run_program::run("/usr/bin/run-parts", "--arg", $netc->{HOSTNAME}, "/etc/sysconfig/network-scripts/hostname.d");
- }
-}
-
-sub resolv($) {
- my ($name) = @_;
- is_ip($name) and return $name;
- my $a = join(".", unpack "C4", (gethostbyname $name)[4]);
- #-log::explanations("resolved $name in $a");
- $a;
-}
-
-sub dnsServers {
- my ($netc) = @_;
- my %used_dns; @used_dns{$netc->{dnsServer}, $netc->{dnsServer2}, $netc->{dnsServer3}} = (1, 2, 3);
- sort { $used_dns{$a} <=> $used_dns{$b} } grep { $_ } keys %used_dns;
-}
-
-sub findIntf {
- my ($intf, $device) = @_;
- $intf->{$device}{DEVICE} = undef;
- $intf->{$device};
-}
-
-my $ip_regexp = qr/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
-
-sub is_ip {
- my ($ip) = @_;
- my @fields = $ip =~ $ip_regexp or return;
- every { 0 <= $_ && $_ <= 255 } @fields or return;
- @fields;
-}
-
-sub ip_compare {
- my ($ip1, $ip2) = @_;
- my (@ip1_fields) = $ip1 =~ $ip_regexp;
- my (@ip2_fields) = $ip2 =~ $ip_regexp;
-
- every { $ip1_fields[$_] eq $ip2_fields[$_] } (0 .. 3);
-}
-
-sub is_ip_forbidden {
- my ($ip) = @_;
- my @forbidden = ('127.0.0.1', '255.255.255.255');
-
- any { ip_compare($ip, $_) } @forbidden;
-}
-
-sub is_domain_name {
- my ($name) = @_;
- my @fields = split /\./, $name;
- $name !~ /\.$/ && @fields > 0 && @fields == grep { /^[[:alnum:]](?:[\-[:alnum:]]{0,61}[[:alnum:]])?$/ } @fields;
-}
-
-sub netmask {
- my ($ip) = @_;
- return "255.255.255.0" unless is_ip($ip);
- $ip =~ $ip_regexp or warn "IP_regexp failed\n" and return "255.255.255.0";
- if ($1 >= 1 && $1 < 127) {
- "255.0.0.0"; #-1.0.0.0 to 127.0.0.0
- } elsif ($1 >= 128 && $1 <= 191) {
- "255.255.0.0"; #-128.0.0.0 to 191.255.0.0
- } elsif ($1 >= 192 && $1 <= 223) {
- "255.255.255.0";
- } else {
- "255.255.255.255"; #-experimental classes
- }
-}
-
-sub masked_ip {
- my ($ip) = @_;
- my @ip = is_ip($ip) or return '';
- my @mask = netmask($ip) =~ $ip_regexp;
- for (my $i = 0; $i < @ip; $i++) {
- $ip[$i] &= int $mask[$i];
- }
- join(".", @ip);
-}
-
-sub dns {
- my ($ip) = @_;
- my @masked = masked_ip($ip) =~ $ip_regexp;
- $masked[3] = 2;
- join(".", @masked);
-
-}
-
-sub gateway {
- my ($ip) = @_;
- my @masked = masked_ip($ip) =~ $ip_regexp;
- $masked[3] = 1;
- join(".", @masked);
-}
-
-sub miscellaneous_choose {
- my ($in, $u) = @_;
-
- $in->ask_from('',
- N("Proxies configuration"),
- [ { label => N("HTTP proxy"), val => \$u->{http_proxy} },
- { label => N("FTP proxy"), val => \$u->{ftp_proxy} },
- ],
- complete => sub {
- $u->{http_proxy} =~ m,^($|http://), or $in->ask_warn('', N("Proxy should be http://...")), return 1,0;
- $u->{ftp_proxy} =~ m,^($|ftp://|http://), or $in->ask_warn('', N("URL should begin with 'ftp:' or 'http:'")), return 1,1;
- 0;
- }
- ) or return;
- 1;
-}
-
-sub proxy_configure {
- my ($u) = @_;
- setExportedVarsInSh("$::prefix/etc/profile.d/proxy.sh", $u, qw(http_proxy ftp_proxy));
- chmod 0755, "$::prefix/etc/profile.d/proxy.sh";
- setExportedVarsInCsh("$::prefix/etc/profile.d/proxy.csh", $u, qw(http_proxy ftp_proxy));
- chmod 0755, "$::prefix/etc/profile.d/proxy.csh";
-
- #- KDE proxy settings
- my $kde_config_dir = "$::prefix/usr/share/config";
- my $kde_config_file = "$kde_config_dir/kioslaverc";
- if (-d $kde_config_dir) {
- update_gnomekderc($kde_config_file,
- undef,
- PersistentProxyConnection => "false"
- );
- update_gnomekderc($kde_config_file,
- "Proxy Settings",
- AuthMode => 0,
- ProxyType => $u->{http_proxy} || $u->{ftp_proxy} ? 4 : 0,
- ftpProxy => "ftp_proxy",
- httpProxy => "http_proxy",
- httpsProxy => "http_proxy"
- );
- }
-
- #- Gnome proxy settings
- if (-d "$::prefix/etc/gconf/2/") {
- my $defaults_dir = "/etc/gconf/gconf.xml.local-defaults";
- my $p_defaults_dir = "$::prefix$defaults_dir";
- my $p_defaults_path = "$::prefix/etc/gconf/2/local-defaults.path";
- -r $p_defaults_path or output_with_perm($p_defaults_path, 0755, qq(
-# System local settings
-xml:readonly:$defaults_dir
-));
- -d $p_defaults_dir or mkdir $p_defaults_dir, 0755;
-
- my $use_alternate_proxy;
- my $gconf_set = sub {
- my ($key, $type, $value) = @_;
- #- gconftool-2 is available since /etc/gconf/2/ exists
- system("gconftool-2", "--config-source=xml::$p_defaults_dir", "--direct", "--set", "--type=$type", $key, $value);
- };
-
- #- http proxy
- if (my ($user, $password, $host, $port) = $u->{http_proxy} =~ m,^http://(?:([^:\@]+)(?::([^:\@]+))?\@)?([^\:]+)(?::(\d+))?$,) {
- $port ||= 80;
- $gconf_set->("/system/http_proxy/use_http_proxy", "bool", 1);
- $gconf_set->("/system/http_proxy/host", "string", $host);
- $gconf_set->("/system/http_proxy/port", "int", $port);
- $gconf_set->("/system/http_proxy/use_authentication", "bool", to_bool($user));
- $user and $gconf_set->("/system/http_proxy/authentication_user", "string", $user);
- $password and $gconf_set->("/system/http_proxy/authentication_password", "string", $password);
-
- #- https proxy (ssl)
- $gconf_set->("/system/proxy/secure_host", "string", $host);
- $gconf_set->("/system/proxy/secure_port", "int", $port);
- $use_alternate_proxy = 1;
- } else {
- $gconf_set->("/system/http_proxy/use_http_proxy", "bool", 0);
- #- clear the ssl host so that it isn't used if the manual proxy is activated for ftp
- $gconf_set->("/system/proxy/secure_host", "string", "");
- }
-
- #- ftp proxy
- if (my ($host, $port) = $u->{ftp_proxy} =~ m,^(?:http|ftp)://(?:[^:\@]+(?::[^:\@]+)?\@)?([^\:]+)(?::(\d+))?$,) {
- $port ||= 21;
- $gconf_set->("/system/proxy/mode", "string", "manual");
- $gconf_set->("/system/proxy/ftp_host", "string", $host);
- $gconf_set->("/system/proxy/ftp_port", "int", $port);
- $use_alternate_proxy = 1;
- } else {
- #- clear the ftp host so that it isn't used if the manual proxy is activated for ssl
- $gconf_set->("/system/proxy/ftp_host", "string", "");
- }
-
- #- set proxy mode to manual if either https or ftp is used
- $gconf_set->("/system/proxy/mode", "string", $use_alternate_proxy ? "manual" : "none");
-
- #- make gconf daemons reload their settings
- system("killall -s HUP gconfd-2");
- }
-}
-
-sub read_all_conf {
- my ($_prefix, $netc, $intf, $o_netcnx) = @_;
- $netc ||= {}; $intf ||= {};
- my $netcnx = $o_netcnx || {};
- add2hash($netc, read_conf("$::prefix/etc/sysconfig/network")) if -r "$::prefix/etc/sysconfig/network";
- add2hash($netc, read_resolv_conf());
- add2hash($netc, read_tmdns_conf());
- foreach (all("$::prefix/etc/sysconfig/network-scripts")) {
- my ($device) = /^ifcfg-([A-Za-z0-9.:_-]+)$/;
- next if $device =~ /.rpmnew$|.rpmsave$/;
- if ($device && $device ne 'lo') {
- my $intf = findIntf($intf, $device);
- add2hash($intf, { getVarsFromSh("$::prefix/etc/sysconfig/network-scripts/$_") });
- $intf->{DEVICE} ||= $device;
- }
- }
- if (my $default_intf = network::tools::get_default_gateway_interface($netc, $intf)) {
- $netcnx->{type} ||= network::tools::get_interface_type($intf->{$default_intf});
- }
-}
-
-#- FIXME: this is buggy, use network::tools::get_default_gateway_interface
-sub probe_netcnx_type {
- my ($_prefix, $_netc, $intf, $netcnx) = @_;
- #- try to probe $netcnx->{type} which is used almost everywhere.
- unless ($netcnx->{type}) {
- #- ugly hack to determine network type (avoid saying not configured in summary).
- -e "$::prefix/etc/ppp/peers/adsl" and $netcnx->{type} ||= 'adsl'; # enough ?
- -e "$::prefix/etc/ppp/ioptions1B" || -e "$::prefix/etc/ppp/ioptions2B" and $netcnx->{type} ||= 'isdn'; # enough ?
- $intf->{ppp0} and $netcnx->{type} ||= 'modem';
- $intf->{eth0} and $netcnx->{type} ||= 'lan';
- }
-}
-
-sub easy_dhcp {
- my ($modules_conf, $netc, $intf) = @_;
-
- return if text2bool($netc->{NETWORKING});
-
- require modules;
- require network::ethernet;
- modules::load_category($modules_conf, list_modules::ethernet_categories());
- my @all_dev = sort map { $_->[0] } network::ethernet::get_eth_cards($modules_conf);
-
- #- only for a single ethernet network card
- my @ether_dev = grep { /^eth[0-9]+$/ && `LC_ALL= LANG= $::prefix/sbin/ip -o link show $_ 2>/dev/null` =~ m|\slink/ether\s| } @all_dev;
- @ether_dev == 1 or return;
-
- my $dhcp_intf = $ether_dev[0];
- log::explanations("easy_dhcp: found $dhcp_intf");
-
- put_in_hash($netc, {
- NETWORKING => "yes",
- DHCP => "yes",
- NET_DEVICE => $dhcp_intf,
- NET_INTERFACE => $dhcp_intf,
- });
- $intf->{$dhcp_intf} ||= {};
- put_in_hash($intf->{$dhcp_intf}, {
- DEVICE => $dhcp_intf,
- BOOTPROTO => 'dhcp',
- NETMASK => '255.255.255.0',
- ONBOOT => 'yes'
- });
- 1;
-}
-
-#- configureNetwork2 : configure the network interfaces.
-#- input
-#- $prefix
-#- $netc
-#- $intf
-#- $netc input
-#- NETWORKING : networking flag : string : "yes" by default
-#- FORWARD_IPV4 : forward IP flag : string : "false" by default
-#- HOSTNAME : hostname : string : "localhost.localdomain" by default
-#- DOMAINNAME : domainname : string : $netc->{HOSTNAME} =~ /\.(.*)/ by default
-#- DOMAINNAME2 : well it's another domainname : have to look further why we used 2
-#- The following are facultatives
-#- DHCP_HOSTNAME : If you have a dhcp and want to set the hostname
-#- GATEWAY : gateway
-#- GATEWAYDEV : gateway interface
-#- NISDOMAIN : nis domain
-#- $netc->{dnsServer} : dns server 1
-#- $netc->{dnsServer2} : dns server 2
-#- $netc->{dnsServer3} : dns server 3 : note that we uses the dns1 for the LAN, and the 2 others for the internet conx
-#- $intf input: for each $device (for example ethx)
-#- $intf->{$device}{IPADDR} : IP address
-#- $intf->{$device}{NETMASK} : netmask
-#- $intf->{$device}{DEVICE} : DEVICE = $device
-#- $intf->{$device}{BOOTPROTO} : boot prototype : "bootp" or "dhcp" or "pump" or ...
-sub configureNetwork2 {
- my ($in, $modules_conf, $_prefix, $netc, $intf) = @_;
- my $etc = "$::prefix/etc";
- if (!$::testing) {
- require network::ethernet;
- network::ethernet::update_iftab();
- network::ethernet::configure_eth_aliases($modules_conf);
-
- $netc->{wireless_eth} and $in->do_pkgs->ensure_binary_is_installed('wireless-tools', 'iwconfig', 'auto');
- write_conf($netc);
- write_resolv_conf("$etc/resolv.conf", $netc) unless $netc->{DHCP};
- if ($::isInstall && ! -e "/etc/resolv.conf") {
- #- symlink resolv.conf in install root too so that updates and suppl media can be added
- symlink "$etc/resolv.conf", "/etc/resolv.conf";
- }
- foreach (grep { !/^ppp\d+/ } keys %$intf) {
- unlink("$etc/sysconfig/network-scripts/$_");
- write_interface_conf("$etc/sysconfig/network-scripts/ifcfg-$_", $intf->{$_}, $netc, $::prefix);
- $intf->{$_}{BOOTPROTO} eq "dhcp" and network::ethernet::install_dhcp_client($in, $intf->{$_});
- }
- add2hosts("$etc/hosts", $netc->{HOSTNAME}, "127.0.0.1") if $netc->{HOSTNAME};
- add2hosts("$etc/hosts", "localhost", "127.0.0.1");
-
- if ($netc->{ZEROCONF_HOSTNAME}) {
- $in->do_pkgs->ensure_binary_is_installed('tmdns', 'tmdns', 'auto') if !$in->do_pkgs->is_installed('bind');
- $in->do_pkgs->ensure_binary_is_installed('zcip', 'zcip', 'auto');
- write_zeroconf("$etc/tmdns.conf", $netc->{ZEROCONF_HOSTNAME});
- require services;
- services::start_service_on_boot("tmdns");
- services::restart("tmdns");
- } else {
- #- disable zeroconf
- require services;
- #- write blank hostname so that drakconnect does not assume zeroconf is enabled
- -f "$etc/tmdns.conf" and write_zeroconf("$etc/tmdns.conf", '');
- if (-f "$etc/rc.d/init.d/tmdns") {
- services::stop("tmdns");
- services::do_not_start_service_on_boot("tmdns");
- }
- }
- any { $_->{BOOTPROTO} =~ /^(pump|bootp)$/ } values %$intf and $in->do_pkgs->install('pump');
- }
-}
-
-1;
diff --git a/perl-install/network/nfs.pm b/perl-install/network/nfs.pm
deleted file mode 100644
index 37dd954e5..000000000
--- a/perl-install/network/nfs.pm
+++ /dev/null
@@ -1,69 +0,0 @@
-package network::nfs; # $Id$
-
-use strict;
-use diagnostics;
-
-use common;
-use network::network;
-use network::smbnfs;
-use log;
-
-our @ISA = 'network::smbnfs';
-
-sub to_fstab_entry {
- my ($class, $e) = @_;
- $class->to_fstab_entry_raw($e, 'nfs');
-}
-sub comment_to_string {
- my ($_class, $comment) = @_;
- member($comment, qw(* 0.0.0.0/0.0.0.0 (everyone))) ? '' : $comment;
-}
-sub from_dev {
- my ($_class, $dev) = @_;
- $dev =~ m|(.*?):(.*)|;
-}
-sub to_dev_raw {
- my ($_class, $server, $name) = @_;
- $server . ':' . $name;
-}
-
-sub check {
- my ($_class, $in) = @_;
- $in->do_pkgs->ensure_binary_is_installed('nfs-utils-clients', 'showmount') or return;
- system('/etc/init.d/portmap start') if system('/etc/init.d/portmap status') != 0;
- 1;
-}
-
-sub find_servers {
- open(my $F2, "rpcinfo-flushed -b mountd 2 |");
- open(my $F3, "rpcinfo-flushed -b mountd 3 |");
-
- common::nonblock($F2);
- common::nonblock($F3);
- my $domain = chomp_(`domainname`);
- my ($s, %servers);
- my $quit;
- while (!$quit) {
- $quit = 1;
- sleep 1;
- while ($s = <$F2> || <$F3>) {
- $quit = 0;
- my ($ip, $name) = $s =~ /(\S+)\s+(\S+)/ or log::explanations("bad line in rpcinfo output"), next;
- $name =~ s/\.$//;
- $name =~ s/\Q.$domain\E$//;
- $servers{$ip} ||= { ip => $ip, if_($name ne '(unknown)', name => $name) };
- }
- }
- values %servers;
-}
-
-sub find_exports {
- my ($_class, $server) = @_;
-
- my @l;
- run_program::raw({ timeout => 1 }, "showmount", '>', \@l, "--no-headers", "-e", $server->{ip} || $server->{name});
-
- map { if_(/(\S+(\s*\S+)*)\s+(\S+)/, { name => $1, comment => $3, server => $server }) } @l;
-}
-
-1;
diff --git a/perl-install/network/shorewall.pm b/perl-install/network/shorewall.pm
deleted file mode 100644
index 82d3c5ec0..000000000
--- a/perl-install/network/shorewall.pm
+++ /dev/null
@@ -1,146 +0,0 @@
-package network::shorewall; # $Id$
-
-
-
-
-use detect_devices;
-use network::netconnect;
-use network::ethernet;
-use network::network;
-use run_program;
-use common;
-use log;
-
-
-sub check_iptables {
- my ($in) = @_;
-
- my $existing_config = -f "$::prefix/etc/sysconfig/iptables";
- $existing_config ||= $::isStandalone && do {
- system('modprobe iptable_nat');
- -x '/sbin/iptables' && listlength(`/sbin/iptables -t nat -nL`) > 8;
- };
-}
-
-sub set_config_file {
- my ($file, @l) = @_;
-
- my $done;
- substInFile {
- if (!$done && (/^#LAST LINE/ || eof)) {
- $_ = join('', map { join("\t", @$_) . "\n" } @l) . $_;
- $done = 1;
- } else {
- $_ = '' if /^[^#]/;
- }
- } "$::prefix/etc/shorewall/$file";
-}
-
-sub get_config_file {
- my ($file) = @_;
- map { [ split ' ' ] } grep { !/^#/ } cat_("$::prefix/etc/shorewall/$file");
-}
-
-sub get_ifcfg_interface() {
- my $netcnx = {};
- my $netc = {};
- my $intf = {};
- network::netconnect::read_net_conf($netcnx, $netc, $intf);
- network::tools::get_default_gateway_interface($netc, $intf);
-}
-
-sub get_shorewall_interface() {
- my $default_dev = get_ifcfg_interface();
- $default_dev =~ /^ippp/ && "ippp+" ||
- $default_dev =~ /^ppp/ && "ppp+" ||
- $default_dev;
-}
-
-sub ask_shorewall_interface {
- my ($in, $interface) = @_;
- my $modules_conf = modules::any_conf->read;
- my @all_cards = network::ethernet::get_eth_cards($modules_conf);
- my %net_devices = network::ethernet::get_eth_cards_names(@all_cards);
- put_in_hash(\%net_devices, { 'ppp+' => 'ppp+', 'ippp+' => 'ippp+' });
-
- $in->ask_from('',
- N("Please enter the name of the interface connected to the internet.
-
-Examples:
- ppp+ for modem or DSL connections,
- eth0, or eth1 for cable connection,
- ippp+ for a isdn connection.
-"),
- [ { label => N("Net Device"), val => \$interface, list => [ sort keys %net_devices ], format => sub { $net_devices{$_[0]} || $_[0] }, not_edit => 0 } ]);
- $interface;
-}
-
-sub read_default_interfaces {
- my ($conf, $o_in) = @_;
- my $interface = get_shorewall_interface();
- $o_in and $interface = ask_shorewall_interface($o_in, $interface);
- $conf->{net_interface} = $interface;
- $conf->{loc_interface} = [ grep { $_ ne $interface } detect_devices::getNet() ];
-}
-
-sub read {
- my ($o_in) = @_;
- my %conf = (disabled => !glob_("$::prefix/etc/rc3.d/S*shorewall"),
- ports => join(' ', map {
- my $e = $_;
- map { "$_/$e->[3]" } split(',', $e->[4]);
- } grep { $_->[0] eq 'ACCEPT' && $_->[1] eq 'net' } get_config_file('rules'))
- );
-
- if (my ($e) = get_config_file('masq')) {
- $conf{masquerade}{subnet} = $e->[1] if $e->[1];
- }
- read_default_interfaces(\%conf, $o_in);
- $conf{net_interface} && \%conf;
-}
-
-sub write {
- my ($conf) = @_;
- my $default_intf = get_ifcfg_interface();
- my $use_pptp = $default_intf =~ /^ppp/ && cat_("$::prefix/etc/ppp/peers/$default_intf") =~ /pptp/;
- my $squid_port = network::network::read_squid_conf()->{http_port}[0];
-
- my %ports_by_proto;
- foreach (split ' ', $conf->{ports}) {
- m!^(\d+(:\d+)?)/(udp|tcp|icmp)$! or die "bad port $_\n";
- push @{$ports_by_proto{$3}}, $1;
- }
-
- set_config_file("zones",
- [ 'net', 'Net', 'Internet zone' ],
- if_($conf->{loc_interface}[0], [ 'loc', 'Local', 'Local' ]),
- );
- set_config_file('interfaces',
- [ 'net', $conf->{net_interface}, 'detect' ],
- (map { [ 'loc', $_, 'detect' ] } @{$conf->{loc_interface} || []}),
- );
- set_config_file('policy',
- if_($conf->{loc_interface}[0], [ 'loc', 'net', 'ACCEPT' ], [ 'loc', 'fw', 'ACCEPT' ], [ 'fw', 'loc', 'ACCEPT' ]),
- [ 'fw', 'net', 'ACCEPT' ],
- [ 'net', 'all', 'DROP', 'info' ],
- [ 'all', 'all', 'REJECT', 'info' ],
- );
- set_config_file('rules',
- if_($use_pptp, [ 'ACCEPT', 'fw', 'loc:10.0.0.138', 'tcp', '1723' ]),
- if_($use_pptp, [ 'ACCEPT', 'fw', 'loc:10.0.0.138', 'gre' ]),
- (map {
- map_each { [ 'ACCEPT', $_, 'fw', $::a, join(',', @$::b), '-' ] } %ports_by_proto;
- } ('net', if_($conf->{loc_interface}[0], 'loc'))),
- );
- if (cat_("/etc/shorewall/rules") !~ /^\s*REDIRECT\s*loc\s*$squid_port\s+(\S+)/mg && $squid_port && -f "/var/run/squid.pid" && grep { /Loc/i } cat_("/etc/shorewall/zones")) {
- substInFile {
- s/#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/REDIRECT\tloc\t$squid_port\ttcp\twww\t-\nACCEPT\tfw\tnet\ttcp\twww\n#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE/;
- } "/etc/shorewall/rules";
-}
- set_config_file('masq', if_($conf->{masquerade}, [ $conf->{net_interface}, $conf->{masquerade}{subnet} ]));
-
- services::set_status('shorewall', !$conf->{disabled}, $::isInstall);
-}
-
-1;
-
diff --git a/perl-install/network/smb.pm b/perl-install/network/smb.pm
deleted file mode 100644
index ef98f6945..000000000
--- a/perl-install/network/smb.pm
+++ /dev/null
@@ -1,217 +0,0 @@
-package network::smb; # $Id$
-
-use strict;
-use diagnostics;
-
-use common;
-use fs;
-use network::network;
-use network::smbnfs;
-
-
-our @ISA = 'network::smbnfs';
-
-sub to_fstab_entry {
- my ($class, $e) = @_;
- my $part = $class->to_fstab_entry_raw($e, 'smbfs');
- if ($e->{server}{username}) {
- my ($options, $unknown) = fs::mount_options::unpack($part);
- $options->{"$_="} = $e->{server}{$_} foreach qw(username password domain);
- fs::mount_options::pack($part, $options, $unknown);
- }
- $part;
-}
-sub from_dev {
- my ($_class, $dev) = @_;
- $dev =~ m|//(.*?)/(.*)|;
-}
-sub to_dev_raw {
- my ($_class, $server, $name) = @_;
- '//' . $server . '/' . $name;
-}
-
-sub check {
- my ($_class, $in) = @_;
- $in->do_pkgs->ensure_binary_is_installed('samba-client', 'nmblookup');
-}
-
-sub smbclient {
- my ($server) = @_;
- my $name = $server->{name} || $server->{ip};
- my $ip = $server->{ip} ? "-I $server->{ip}" : '';
- my $group = $server->{group} ? qq( -W "$server->{group}") : '';
-
- my $U = $server->{username} ? sprintf("%s/%s%%%s", @$server{'domain', 'username', 'password'}) : '%';
- my %h;
- foreach (`smbclient -g -U "$U" -L "$name" $ip$group 2>/dev/null`) {
- if (my ($type, $v1, $v2) = /(.*)\|(.*)\|(.*)/) {
- push @{$h{$type}}, [ $v1, $v2 ];
- } elsif (/^Error returning browse list/) {
- push @{$h{Error}}, $_;
- }
- }
- \%h;
-}
-
-sub find_servers {
- my (undef, @l) = `nmblookup "*"`;
- s/\s.*\n// foreach @l;
- my @servers = grep { network::network::is_ip($_) } @l;
- my %servers;
- $servers{$_}{ip} = $_ foreach @servers;
- my ($ip, $browse);
- foreach (`nmblookup -A @servers`) {
- my $nb = /^Looking up status of (\S+)/ .. /^$/ or next;
- if ($nb == 1) {
- $ip = $1;
- } elsif (/<00>/) {
- $servers{$ip}{/<GROUP>/ ? 'group' : 'name'} ||= lc first(/(\S+)/);
- } elsif (/__MSBROWSE__/) {
- $browse ||= $servers{$ip};
- }
- }
- if ($browse) {
- my %l;
- my $workgroups = smbclient($browse)->{Workgroup} || [];
- foreach (@$workgroups) {
- my ($group, $name) = map { lc($_) } @$_;
-
- # already done
- next if any { $group eq $_->{group} } values %servers;
-
- $l{$name} = $group;
- }
- if (my @l = keys %l) {
- foreach (`nmblookup @l`) {
- $servers{$1} = { name => $2, group => $l{$2} } if /(\S+)\s+([^<]+)<00>/;
- }
- }
- }
- values %servers;
-}
-
-sub find_exports {
- my ($_class, $server) = @_;
- my @l;
-
- my $browse = smbclient($server);
- if (my $err = find { /NT_STATUS_/ } @{$browse->{Error} || []}) {
- die $err;
- }
- foreach (@{$browse->{Disk} || []}) {
- my ($name, $comment) = @$_;
- push @l, { name => $name, type => 'Disk', comment => $comment, server => $server }
- if $name !~ /\$$/ && $name !~ /netlogon|NETLOGON|SYSVOL/;
- }
- @l;
-}
-
-sub authentications_available {
- my ($server) = @_;
- map { if_(/^auth.\Q$server->{name}.\E(.*)/, $1) } all("/etc/samba");
-}
-
-sub to_credentials {
- my ($server_name, $username) = @_;
- $username or die 'to_credentials';
- "/etc/samba/auth.$server_name.$username";
-}
-
-sub fstab_entry_to_credentials {
- my ($part) = @_;
-
- my ($server_name) = network::smb->from_dev($part->{device}) or return;
-
- my ($options, $unknown) = fs::mount_options::unpack($part);
- $options->{'username='} && $options->{'password='} or return;
- my %h = map { $_ => delete $options->{"$_="} } qw(username domain password);
- $h{file} = $options->{'credentials='} = to_credentials($server_name, $h{username});
- fs::mount_options::pack_($part, $options, $unknown), \%h;
-}
-
-sub remove_bad_credentials {
- my ($server) = @_;
- unlink to_credentials($server->{name}, $server->{username});
-}
-
-sub save_credentials {
- my ($credentials) = @_;
- my $file = $credentials->{file};
- output_with_perm("$::prefix$file", 0640, map { "$_ = $credentials->{$_}\n" } qw(username domain password));
-}
-
-
-sub read_credentials_raw {
- my ($file) = @_;
- my %h = map { /(.*?)\s*=\s*(.*)/ } cat_("$::prefix$file");
- \%h;
-}
-
-sub read_credentials {
- my ($server, $username) = @_;
- put_in_hash($server, read_credentials_raw(to_credentials($server->{name}, $username)));
-}
-
-
-sub write_smb_conf {
- my ($domain) = @_;
-
- #- was going to just have a canned config in samba-winbind
- #- and replace the domain, but sylvestre/buchan did not bless it yet
-
- my $f = "$::prefix/etc/samba/smb.conf";
- rename $f, "$f.orig";
- output($f, "
-[global]
- workgroup = $domain
- server string = Samba Server %v
- security = domain
- encrypt passwords = Yes
- password server = *
- log file = /var/log/samba/log.%m
- max log size = 50
- socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
- unix charset = ISO8859-15
- os level = 18
- local master = No
- dns proxy = No
- idmap uid = 10000-20000
- idmap gid = 10000-20000
- winbind separator = +
- template homedir = /home/%D/%U
- template shell = /bin/bash
- winbind use default domain = yes
-");
-}
-
-sub write_smb_ads_conf {
- my ($domain, $realm) = @_;
-
- #- was going to just have a canned config in samba-winbind
- #- and replace the domain, but sylvestre/buchan did not bless it yet
-
- my $f = "$::prefix/etc/samba/smb.conf";
- rename $f, "$f.orig";
- output($f, "
-[global]
- workgroup = $domain
- realm = $realm
- server string = Samba Member %v
- security = ads
- encrypt passwords = Yes
- password server = *
- log file = /var/log/samba/log.%m
- max log size = 50
- socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
- os level = 18
- local master = No
- dns proxy = No
- winbind uid = 10000-20000
- winbind gid = 10000-20000
- winbind separator = +
- template homedir = /home/%D/%U
- template shell = /bin/bash
- winbind use default domain = yes
-");
-}
-1;
diff --git a/perl-install/network/smbnfs.pm b/perl-install/network/smbnfs.pm
deleted file mode 100644
index c38903028..000000000
--- a/perl-install/network/smbnfs.pm
+++ /dev/null
@@ -1,45 +0,0 @@
-package network::smbnfs; # $Id$
-
-use strict;
-use diagnostics;
-
-use fs;
-
-
-sub new {
- my ($class, $o_v) = @_;
- bless($o_v || {}, $class);
-}
-
-sub server_to_string {
- my ($_class, $server) = @_;
- $server->{name} || $server->{ip};
-}
-sub comment_to_string {
- my ($_class, $comment) = @_;
- $comment;
-}
-sub to_dev {
- my ($class, $e) = @_;
- $class->to_dev_raw($class->server_to_string($e->{server}), $e->{name} || $e->{ip});
-}
-sub to_string {
- my ($class, $e) = @_;
- my $comment = $class->comment_to_string($e->{comment});
- ($e->{name} || $e->{ip}) . ($comment ? " ($comment)" : '');
-}
-
-sub to_fullstring {
- my ($class, $e) = @_;
- my $comment = $class->comment_to_string($e->{comment});
- $class->to_dev($e) . ($comment ? " ($comment)" : '');
-}
-sub to_fstab_entry_raw {
- my ($class, $e, $fs_type) = @_;
- my $fs_entry = { device => $class->to_dev($e), fs_type => $fs_type };
- fs::mount_options::set_default($fs_entry);
- $fs_entry;
-}
-
-1;
-
diff --git a/perl-install/network/squid.pm b/perl-install/network/squid.pm
deleted file mode 100644
index 7ca60d2b6..000000000
--- a/perl-install/network/squid.pm
+++ /dev/null
@@ -1,73 +0,0 @@
-package network::squid;
-
-use strict;
-use common;
-
-our $squid_conf_file = "$::prefix/etc/squid/squid.conf";
-
-sub read_squid_conf {
- my ($o_file) = @_;
- my $s = cat_($o_file || $squid_conf_file);
- { http_port => [ $s =~ /^\s*http_port\s+(.*)/mg ],
- cache_size => [ if_($s =~ /^\s*cache_dir diskd\s+(.*)/mg, split(' ', $1)) ],
- admin_mail => [ if_($s =~ /^\s*err_html_text\s+(.*)/mg, split(' ', $1)) ] };
-}
-
-sub write_squid_conf {
- my ($squid_conf, $intf, $internal_domain_name) = @_;
-
- renamef($squid_conf_file, "$squid_conf_file.old");
- output($squid_conf_file, qq(
-http_port $squid_conf->{http_port}[0]
-hierarchy_stoplist cgi-bin ?
-acl QUERY urlpath_regex cgi-bin \\?
-no_cache deny QUERY
-cache_dir diskd /var/spool/squid $squid_conf->{cache_size}[1] 16 256
-cache_store_log none
-auth_param basic children 5
-auth_param basic realm Squid proxy-caching web server
-auth_param basic credentialsttl 2 hours
-refresh_pattern ^ftp: 1440 20% 10080
-refresh_pattern ^gopher: 1440 0% 1440
-refresh_pattern . 0 20% 4320
-half_closed_clients off
-acl all src 0.0.0.0/0.0.0.0
-acl manager proto cache_object
-acl localhost src 127.0.0.1/255.255.255.255
-acl to_localhost dst 127.0.0.0/8
-acl SSL_ports port 443 563
-acl Safe_ports port 80 # http
-acl Safe_ports port 21 # ftp
-acl Safe_ports port 443 563 # https, snews
-acl Safe_ports port 70 # gopher
-acl Safe_ports port 210 # wais
-acl Safe_ports port 1025-65535 # unregistered ports
-acl Safe_ports port 280 # http-mgmt
-acl Safe_ports port 488 # gss-http
-acl Safe_ports port 591 # filemaker
-acl Safe_ports port 777 # multiling http
-acl CONNECT method CONNECT
-http_access allow manager localhost
-http_access deny manager
-http_access deny !Safe_ports
-http_access deny CONNECT !SSL_ports
-http_access deny to_localhost
-acl mynetwork src $intf->{NETWORK}/$intf->{NETMASK}
-http_access allow mynetwork
-http_access allow localhost
-http_reply_access allow all
-icp_access allow all
-visible_hostname $squid_conf->{visible_hostname}[0]
-httpd_accel_host virtual
-httpd_accel_with_proxy on
-httpd_accel_uses_host_header on
-append_domain .$internal_domain_name
-err_html_text $squid_conf->{admin_mail}[0]
-deny_info ERR_CUSTOM_ACCESS_DENIED all
-memory_pools off
-coredump_dir /var/spool/squid
-ie_refresh on
-)) if !$::testing;
-}
-
-1;
diff --git a/perl-install/network/test.pm b/perl-install/network/test.pm
deleted file mode 100644
index 2ba8538c6..000000000
--- a/perl-install/network/test.pm
+++ /dev/null
@@ -1,158 +0,0 @@
-package network::test; # $Id$
-
-use strict;
-use MDK::Common;
-use run_program;
-use Socket;
-
-sub new {
- my ($class, $o_hostname) = @_;
- bless {
- hostname => $o_hostname || "www.mandriva.com"
- }, $class;
-}
-
-#- launch synchronous test, will hang until the test finishes
-sub test_synchronous {
- my ($o) = @_;
- ($o->{address}, $o->{ping}) = resolve_and_ping($o->{hostname});
- $o->{done} = 1;
-}
-
-#- launch asynchronous test, will not hang
-sub start {
- my ($o) = @_;
- $o->{done} = 0;
- $o->{kid} = bg_command->new(sub {
- my ($address, $ping) = resolve_and_ping($o->{hostname});
- print "$address|$ping\n";
- });
-}
-
-#- abort asynchronous test
-sub abort {
- my ($o) = @_;
- if ($o->{kid}) {
- kill -9, $o->{kid}{pid};
- undef $o->{kid};
- }
-}
-
-#- returns a true value if the test is finished, usefull for asynchronous tests
-sub is_done {
- my ($o) = @_;
- $o->update_status;
- to_bool($o->{done});
-}
-
-#- return a true value if the connection works (hostname resolution and ping)
-sub is_connected {
- my ($o) = @_;
- to_bool(defined($o->{hostname}) && defined($o->{ping}));
-}
-
-#- get hostname used in test for resolution and ping
-sub get_hostname {
- my ($o) = @_;
- $o->{hostname};
-}
-
-#- get resolved address (if any) of given hostname
-sub get_address {
- my ($o) = @_;
- $o->{address};
-}
-
-#- get ping (if any) to given hostname
-sub get_ping {
- my ($o) = @_;
- $o->{ping};
-}
-
-sub resolve_and_ping {
- my ($hostname) = @_;
- require Net::Ping;
- require Time::HiRes;
- my $p;
- if ($>) {
- $p = Net::Ping->new('tcp');
- # Try connecting to the www port instead of the echo port
- $p->{port_num} = getservbyname('http', 'tcp');
- } else {
- $p = Net::Ping->new('icmp');
- }
- $p->hires; #- get ping as float
- #- default timeout is 5 seconds
- my ($ret, $ping, $address) = $p->ping($hostname, 5);
- if ($ret) {
- return $address, $ping;
- } elsif (defined($ret)) {
- return $address;
- }
-}
-
-sub update_status {
- my ($o) = @_;
- if ($o->{kid}) {
- my $fd = $o->{kid}{fd};
- fcntl($fd, c::F_SETFL(), c::O_NONBLOCK()) or die "can not fcntl F_SETFL: $!";
- local $| = 1;
- if (defined(my $output = <$fd>)) {
- ($o->{address}, $o->{ping}) = $output =~ /^([\d\.]+)\|([\d\.,]+)*$/;
- $o->{done} = 1;
- undef $o->{kid};
- }
- }
-}
-
-1;
-
-=head1 network::test
-
-=head2 Test synchronously
-
-#- resolve and get ping to hostname from command line if given, else to www.mandriva.com
-use lib qw(/usr/lib/libDrakX);
-use network::test;
-
-my $net_test = network::test->new($ARGV[0]);
-$net_test->test_synchronous;
-
-my $is_connected = $net_test->is_connected;
-my $hostname = $net_test->get_hostname;
-my $address = $net_test->get_address;
-my $ping = $net_test->get_ping;
-
-print "connected: $is_connected
-host: $hostname
-resolved host: $address
-ping to host: $ping
-";
-
-=head2 Test asynchronously
-
-#- resolve and get ping to hostname from command line if given, else to Mandriva
-#- prints a "." every 10 miliseconds during connection test
-use lib qw(/usr/lib/libDrakX);
-use network::test;
-
-my $net_test = network::test->new($ARGV[0]);
-$net_test->start;
-
-do {
- print ".\n";
- select(undef, undef, undef, 0.01);
-} while !$net_test->is_done;
-
-my $is_connected = $net_test->is_connected;
-my $hostname = $net_test->get_hostname;
-my $address = $net_test->get_address;
-my $ping = $net_test->get_ping;
-
-print "connected: $is_connected
-host: $hostname
-resolved host: $address
-ping to host: $ping
-";
-
-=cut
diff --git a/perl-install/network/tools.pm b/perl-install/network/tools.pm
deleted file mode 100644
index 6ba1d9886..000000000
--- a/perl-install/network/tools.pm
+++ /dev/null
@@ -1,273 +0,0 @@
-package network::tools; # $Id$
-
-use strict;
-use common;
-use run_program;
-use fsedit;
-use c;
-use vars qw(@ISA @EXPORT @EXPORT_OK);
-use MDK::Common::System qw(getVarsFromSh);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(connect_backend connected connected_bg disconnect_backend is_dynamic_ip passwd_by_login read_secret_backend test_connected remove_initscript write_secret_backend start_interface stop_interface);
-
-sub write_secret_backend {
- my ($a, $b) = @_;
- foreach my $i ("$::prefix/etc/ppp/pap-secrets", "$::prefix/etc/ppp/chap-secrets") {
- substInFile { s/^'$a'.*\n//; $_ .= "\n'$a' * '$b' * \n" if eof } $i;
- #- restore access right to secrets file, just in case.
- chmod 0600, $i;
- }
-}
-
-sub unquotify {
- my ($word) = @_;
- $$word =~ s/^(['"]?)(.*)\1$/$2/;
-}
-
-sub read_secret_backend() {
- my $conf = [];
- foreach my $i ("pap-secrets", "chap-secrets") {
- foreach (cat_("$::prefix/etc/ppp/$i")) {
- my ($login, $server, $passwd) = split(' ');
- if ($login && $passwd) {
- unquotify \$passwd;
- unquotify \$login;
- unquotify \$server;
- push @$conf, {login => $login,
- passwd => $passwd,
- server => $server };
- }
- }
- }
- $conf;
-}
-
-sub passwd_by_login {
- my ($login) = @_;
-
- unquotify \$login;
- my $secret = read_secret_backend();
- foreach (@$secret) {
- return $_->{passwd} if $_->{login} eq $login;
- }
-}
-
-sub connect_backend {
- my ($netc) = @_;
- run_program::raw({ detach => 1, root => $::prefix }, "/sbin/ifup", $netc->{NET_INTERFACE});
-}
-
-sub disconnect_backend {
- my ($netc) = @_;
- run_program::raw({ detach => 1, root => $::prefix }, "/sbin/ifdown", $netc->{NET_INTERFACE});
-}
-
-sub bg_command_as_root {
- my ($name, @args) = @_;
- #- FIXME: duplicate code from common::require_root_capability
- if (check_for_xserver() && fuzzy_pidofs(qr/\bkwin\b/) > 0) {
- run_program::raw({ detach => 1 }, "kdesu", "--ignorebutton", "-c", "$name @args");
- } else {
- run_program::raw({ detach => 1 }, [ 'consolehelper', $name ], @args);
- }
-}
-
-sub user_run_interface_command {
- my ($command, $intf) = @_;
- if (system("/usr/sbin/usernetctl $intf report") == 0) {
- run_program::raw({ detach => 1 }, $command, $intf);
- } else {
- bg_command_as_root($command, $intf);
- }
-}
-
-sub start_interface {
- my ($intf) = @_;
- user_run_interface_command('/sbin/ifup', $intf);
-}
-
-sub stop_interface {
- my ($intf) = @_;
- user_run_interface_command('/sbin/ifdown', $intf);
-}
-
-sub connected() { gethostbyname("mandrakesoft.com") ? 1 : 0 }
-
-# request a ref on a bg_connect and a ref on a scalar
-sub connected_bg__raw {
- my ($kid_pipe, $status) = @_;
- local $| = 1;
- if (ref($kid_pipe) && ref($$kid_pipe)) {
- my $fd = $$kid_pipe->{fd};
- fcntl($fd, c::F_SETFL(), c::O_NONBLOCK()) or die "can not fcntl F_SETFL: $!";
- my $a = <$fd>;
- $$status = $a if defined $a;
- } else { $$kid_pipe = check_link_beat() }
-}
-
-my $kid_pipe;
-sub connected_bg {
- my ($status) = @_;
- connected_bg__raw(\$kid_pipe, $status);
-}
-
-# test if connected;
-# cmd = 0 : ask current status
-# return : 0 : not connected; 1 : connected; -1 : no test ever done; -2 : test in progress
-# cmd = 1 : start new connection test
-# return : -2
-# cmd = 2 : cancel current test
-# return : nothing
-# cmd = 3 : return current status even if a test is in progress
-my $kid_pipe_connect;
-my $current_connection_status;
-
-sub test_connected {
- local $| = 1;
- my ($cmd) = @_;
-
- $current_connection_status = -1 if !defined $current_connection_status;
-
- if ($cmd == 0) {
- connected_bg__raw(\$kid_pipe_connect, \$current_connection_status);
- } elsif ($cmd == 1) {
- if ($current_connection_status != -2) {
- $current_connection_status = -2;
- $kid_pipe_connect = check_link_beat();
- }
- } elsif ($cmd == 2) {
- if (defined($kid_pipe_connect)) {
- kill -9, $kid_pipe_connect->{pid};
- undef $kid_pipe_connect;
- }
- }
- return $current_connection_status;
-}
-
-sub check_link_beat() {
- bg_command->new(sub {
- require Net::Ping;
- my $p;
- if ($>) {
- $p = Net::Ping->new("tcp");
- # Try connecting to the www port instead of the echo port
- $p->{port_num} = getservbyname("http", "tcp");
- } else {
- $p = Net::Ping->new("icmp");
- }
- print $p->ping("www.mandriva.com") ? 1 : 0;
- });
-}
-
-sub remove_initscript() {
- $::testing and return;
- if (-e "$::prefix/etc/rc.d/init.d/internet") {
- run_program::rooted($::prefix, "/sbin/chkconfig", "--del", "internet");
- rm_rf("$::prefix/etc/rc.d/init.d/internet");
- log::explanations("Removed internet service");
- }
-}
-
-sub use_windows {
- my ($file) = @_;
- my $all_hds = fsedit::get_hds();
- fs::get_info_from_fstab($all_hds);
- if (my $part = find { $_->{device_windobe} eq 'C' } fs::get::fstab($all_hds)) {
- my $source = find { -d $_ && -r "$_/$file" } map { "$part->{mntpoint}/$_" } qw(windows/system winnt/system windows/system32/drivers winnt/system32/drivers);
- log::explanations("Seek in $source to find firmware");
- $source;
- } else {
- my $failed = N("No partition available");
- log::explanations($failed);
- undef, $failed;
- }
-}
-
-sub use_floppy {
- my ($in, $file) = @_;
- my $floppy = detect_devices::floppy();
- $in->ask_okcancel(N("Insert floppy"),
- N("Insert a FAT formatted floppy in drive %s with %s in root directory and press %s", $floppy, $file, N("Next"))) or return;
- if (eval { fs::mount(devices::make($floppy), '/mnt', 'vfat', 'readonly'); 1 }) {
- log::explanations("Mounting floppy device $floppy in /mnt");
- '/mnt';
- } else {
- my $failed = N("Floppy access error, unable to mount device %s", $floppy);
- log::explanations($failed);
- undef, $failed;
- }
-}
-
-
-sub is_dynamic_ip {
- my ($intf) = @_;
- any { $_->{BOOTPROTO} !~ /^(none|static|)$/ } values %$intf;
-}
-
-sub is_dynamic_host {
- my ($intf) = @_;
- any { defined $_->{DHCP_HOSTNAME} } values %$intf;
-}
-
-#- returns interface whose IP address matchs given IP address, according to its network mask
-sub find_matching_interface {
- my ($intf, $address) = @_;
- my @ip = split '\.', $address;
- find {
- my @intf_ip = split '\.', $intf->{$_}{IPADDR} or return;
- my @mask = split '\.', $intf->{$_}{NETMASK} or return;
- every { $_ } mapn { ($_[0] & $_[2]) == ($_[1] & $_[2]) } \@intf_ip, \@ip, \@mask;
- } sort keys %$intf;
-}
-
-#- returns gateway interface if found
-sub get_default_gateway_interface {
- my ($netc, $intf) = @_;
- my @intfs = sort keys %$intf;
- `$::prefix/sbin/ip route show` =~ /^default.*\s+dev\s+(\S+)/m && $1 ||
- $netc->{GATEWAYDEV} ||
- $netc->{GATEWAY} && find_matching_interface($intf, $netc->{GATEWAY}) ||
- (find { get_interface_type($intf->{$_}) eq 'adsl' } @intfs) ||
- (find { get_interface_type($intf->{$_}) eq 'isdn' && text2bool($intf->{$_}{DIAL_ON_IFUP}) } @intfs) ||
- (find { get_interface_type($intf->{$_}) eq 'modem' } @intfs) ||
- (find { get_interface_type($intf->{$_}) eq 'wifi' && $intf->{$_}{BOOTPROTO} eq 'dhcp' } @intfs) ||
- (find { get_interface_type($intf->{$_}) eq 'ethernet' && $intf->{$_}{BOOTPROTO} eq 'dhcp' } @intfs);
-}
-
-sub get_interface_status {
- my ($gw_intf) = @_;
- my @routes = `$::prefix/sbin/ip route show`;
- my $is_up = any { /\s+dev\s+$gw_intf(?:\s+|$)/ } @routes;
- my ($gw_address) = join('', @routes) =~ /^default\s+via\s+(\S+).*\s+dev\s+$gw_intf(?:\s+|$)/m;
- return $is_up, $gw_address;
-}
-
-#- returns (gateway_interface, interface is up, gateway address, dns server address)
-sub get_internet_connection {
- my ($netc, $intf, $o_gw_intf) = @_;
- my $gw_intf = $o_gw_intf || get_default_gateway_interface($netc, $intf) or return;
- return $gw_intf, get_interface_status($gw_intf), $netc->{dnsServer};
-}
-
-sub get_interface_type {
- my ($interface) = @_;
- require detect_devices;
- member($interface->{TYPE}, "xDSL", "ADSL") && "adsl" ||
- $interface->{DEVICE} =~ /^ippp/ && "isdn" ||
- $interface->{DEVICE} =~ /^ppp/ && "modem" ||
- (detect_devices::is_wireless_interface($interface->{DEVICE}) || exists $interface->{WIRELESS_MODE}) && "wifi" ||
- detect_devices::is_lan_interface($interface->{DEVICE}) && "ethernet" ||
- "unknown";
-}
-
-sub get_default_metric {
- my ($type) = @_;
- my @known_types = ("ethernet_gigabit", "ethernet", "adsl", "wifi", "isdn", "modem", "unknown");
- my $idx;
- eval { $idx = find_index { $type eq $_ } @known_types };
- $idx = @known_types if $@;
- $idx * 10;
-}
-
-1;
diff --git a/perl-install/network/wireless.pm b/perl-install/network/wireless.pm
deleted file mode 100644
index d6cf9a6d6..000000000
--- a/perl-install/network/wireless.pm
+++ /dev/null
@@ -1,174 +0,0 @@
-package network::wireless;
-
-use strict;
-use common;
-
-sub convert_wep_key_for_iwconfig {
- #- 5 or 13 characters, consider the key as ASCII and prepend "s:"
- #- else consider the key as hexadecimal, do not strip dashes
- #- always quote the key as string
- my ($real_key, $restricted) = @_;
- my $key = member(length($real_key), (5, 13)) ? "s:$real_key" : $real_key;
- $restricted ? "restricted $key" : "open $key";
-}
-
-sub get_wep_key_from_iwconfig {
- #- strip "s:" if the key is 5 or 13 characters (ASCII)
- #- else the key as hexadecimal, do not modify
- my ($key) = @_;
- $key =~ s/^s:// if member(length($key), (7,15));
- my ($mode, $real_key) = $key =~ /^(?:(open|restricted)\s+)?(.*)$/;
- ($real_key, $mode eq 'restricted');
-}
-
-sub convert_key_for_wpa_supplicant {
- my ($key) = @_;
- if ($key =~ /^([[:xdigit:]]{4}[\:-])+[[:xdigit:]]{2,}$/) {
- $key =~ s/[\:-]//g;
- return lc($key);
- } else {
- return qq("$key");
- }
-}
-
-sub wlan_ng_needed {
- my ($module) = @_;
- $module =~ /^prism2_/;
-}
-
-#- FIXME: to be improved (quotes, comments) and moved in common files
-sub wlan_ng_update_vars {
- my ($file, $vars) = @_;
- substInFile {
- while (my ($key, $value) = each(%$vars)) {
- s/^#?\Q$key\E=(?:"[^#]*"|[^#\s]*)(\s*#.*)?/$key=$value$1/ and delete $vars->{$key};
- }
- $_ .= join('', map { "$_=$vars->{$_}\n" } keys %$vars) if eof;
- } $file;
-}
-
-sub wlan_ng_configure {
- my ($essid, $key, $device, $module) = @_;
- my $wlan_conf_file = "$::prefix/etc/wlan/wlan.conf";
- my @wlan_devices = split(/ /, (cat_($wlan_conf_file) =~ /^WLAN_DEVICES="(.*)"/m)[0]);
- push @wlan_devices, $device unless member($device, @wlan_devices);
- #- enable device and make it use the choosen ESSID
- wlan_ng_update_vars($wlan_conf_file,
- {
- WLAN_DEVICES => qq("@wlan_devices"),
- "SSID_$device" => qq("$essid"),
- "ENABLE_$device" => "y"
- });
-
- my $wlan_ssid_file = "$::prefix/etc/wlan/wlancfg-$essid";
- #- copy default settings for this ESSID if config file does not exist
- -f $wlan_ssid_file or cp_f("$::prefix/etc/wlan/wlancfg-DEFAULT", $wlan_ssid_file);
-
- #- enable/disable encryption
- wlan_ng_update_vars($wlan_ssid_file,
- {
- (map { $_ => $key ? "true" : "false" } qw(lnxreq_hostWEPEncrypt lnxreq_hostWEPDecrypt dot11PrivacyInvoked dot11ExcludeUnencrypted)),
- AuthType => $key ? qq("sharedkey") : qq("opensystem"),
- if_($key,
- dot11WEPDefaultKeyID => 0,
- dot11WEPDefaultKey0 => qq("$key")
- )
- });
- #- hide settings for non-root users
- chmod 0600, $wlan_conf_file;
- chmod 0600, $wlan_ssid_file;
-
- #- apply settings on wlan interface
- require services;
- services::restart($module eq 'prism2_cs' ? 'pcmcia' : 'wlan');
-}
-
-sub wpa_supplicant_get_driver {
- my ($module) = @_;
- $module =~ /^hostap_/ ? "hostap" :
- $module eq "prism54" ? "prism54" :
- $module =~ /^ath_/ ? "madwifi" :
- $module =~ /^at76c50|atmel_/ ? "atmel" :
- $module eq "ndiswrapper" ? "ndiswrapper" :
- $module =~ /^ipw2[12]00$/ ? "ipw" :
- "wext";
-}
-
-sub wpa_supplicant_configure {
- my ($essid, $key) = @_;
- wpa_supplicant_add_network({
- ssid => qq("$essid"),
- psk => convert_key_for_wpa_supplicant($key),
- scan_ssid => 1,
- });
-}
-
-sub wpa_supplicant_add_network {
- my ($new_network) = @_;
- my $wpa_supplicant_conf = "$::prefix/etc/wpa_supplicant.conf";
- my $s;
- my %network;
- foreach (cat_($wpa_supplicant_conf)) {
- if (%network) {
- #- in a "network = {}" block
- if (/^\s*(\w+)=(.*?)(\s*#.*)?$/) {
- push @{$network{entries}}, { key => $1, value => $2, comment => $3 };
- $1 eq 'ssid' and $network{ssid} = $2;
- } elsif (/^\}/) {
- #- end of network block, write it
- $s .= "network={$network{comment}\n";
- my $update = $network{ssid} eq $new_network->{ssid};
- foreach (@{$network{entries}}) {
- my $key = $_->{key};
- if ($update) {
- #- do not write entry if not provided in the new network
- exists $new_network->{$key} or next;
- #- update value from the new network
- $_->{value} = delete $new_network->{$key};
- }
- if ($key) {
- $s .= " $key=$_->{value}$_->{comment}\n";
- } else {
- $s .= " $_->{comment}\n";
- }
- }
- if ($update) {
- while (my ($key, $value) = each(%$new_network)) {
- $s .= " $key=$value\n";
- }
- }
- $s .= "}\n";
- undef %network;
- $update and undef $new_network;
- } else {
- #- unrecognized, keep it anyway
- push @{$network{entries}}, { comment => $_ };
- }
- } else {
- if (/^\s*network={(.*)/) {
- #- beginning of a new network block
- $network{comment} = $1;
- } else {
- #- keep other options, comments
- $s .= $_;
- }
- }
- }
- if ($new_network) {
- #- network wasn't found, write it
- $s .= "\nnetwork={\n";
- #- write ssid first
- if (my $ssid = delete $new_network->{ssid}) {
- $s .= " ssid=$ssid\n";
- }
- while (my ($key, $value) = each(%$new_network)) {
- $s .= " $key=$value\n";
- }
- $s .= "}\n";
- }
- output($wpa_supplicant_conf, $s);
- #- hide keys for non-root users
- chmod 0600, $wpa_supplicant_conf;
-}
-
-1;
diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm
deleted file mode 100644
index f6fe086c0..000000000
--- a/perl-install/partition_table.pm
+++ /dev/null
@@ -1,636 +0,0 @@
-package partition_table; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use fs::type;
-use partition_table::raw;
-use detect_devices;
-use log;
-
-our @fields2save = qw(primary extended totalsectors isDirty will_tell_kernel);
-
-
-sub hd2minimal_part {
- my ($hd) = @_;
- {
- rootDevice => $hd->{device},
- if_($hd->{usb_media_type}, is_removable => 1),
- };
-}
-
-#- works for both hard drives and partitions ;p
-sub description {
- my ($hd) = @_;
- my $win = $hd->{device_windobe};
-
- sprintf "%s%s (%s)",
- $hd->{device},
- $win && " [$win:]",
- join(', ',
- grep { $_ }
- formatXiB($hd->{totalsectors} || $hd->{size}, 512),
- $hd->{info}, $hd->{mntpoint}, $hd->{fs_type});
-}
-
-sub isPrimary {
- my ($part, $hd) = @_;
- foreach (@{$hd->{primary}{raw}}) { $part eq $_ and return 1 }
- 0;
-}
-
-sub adjustStartAndEnd {
- my ($hd, $part) = @_;
-
- $hd->adjustStart($part);
- $hd->adjustEnd($part);
-}
-
-sub verifyNotOverlap {
- my ($a, $b) = @_;
- $a->{start} + $a->{size} <= $b->{start} || $b->{start} + $b->{size} <= $a->{start};
-}
-sub verifyInside {
- my ($a, $b) = @_;
- $b->{start} <= $a->{start} && $a->{start} + $a->{size} <= $b->{start} + $b->{size};
-}
-
-sub verifyParts_ {
- foreach my $i (@_) {
- foreach (@_) {
- next if !$i || !$_ || $i == $_ || isWholedisk($i) || isExtended($i); #- avoid testing twice for simplicity :-)
- if (isWholedisk($_)) {
- verifyInside($i, $_) or
- cdie sprintf("partition sector #$i->{start} (%s) is not inside whole disk (%s)!",
- formatXiB($i->{size}, 512), formatXiB($_->{size}, 512));
- } elsif (isExtended($_)) {
- verifyNotOverlap($i, $_) or
- log::l(sprintf("warning partition sector #$i->{start} (%s) is overlapping with extended partition!",
- formatXiB($i->{size}, 512))); #- only warning for this one is acceptable
- } else {
- verifyNotOverlap($i, $_) or
- cdie sprintf("partitions sector #$i->{start} (%s) and sector #$_->{start} (%s) are overlapping!",
- formatXiB($i->{size}, 512), formatXiB($_->{size}, 512));
- }
- }
- }
-}
-sub verifyParts {
- my ($hd) = @_;
- verifyParts_(get_normal_parts($hd));
-}
-sub verifyPrimary {
- my ($pt) = @_;
- $_->{start} > 0 || arch() =~ /^sparc/ || die "partition must NOT start at sector 0" foreach @{$pt->{normal}};
- verifyParts_(@{$pt->{normal}}, $pt->{extended});
-}
-
-sub compute_device_name {
- my ($part, $hd) = @_;
- $part->{device} = $hd->{prefix} . $part->{part_number};
- $part->{devfs_device} = $hd->{devfs_prefix} . '/part' . $part->{part_number};
-}
-
-sub assign_device_numbers {
- my ($hd) = @_;
-
- my $i = 1;
- my $start = 1;
-
- #- on PPC we need to assign device numbers to the holes too - big FUN!
- #- not if it's an IBM machine using a DOS partition table though
- if (arch() =~ /ppc/ && detect_devices::get_mac_model() !~ /^IBM/) {
- #- first sort the normal parts
- $hd->{primary}{normal} = [ sort { $a->{start} <=> $b->{start} } @{$hd->{primary}{normal}} ];
-
- #- now loop through them, assigning partition numbers - reserve one for the holes
- foreach (@{$hd->{primary}{normal}}) {
- if ($_->{start} > $start) {
- log::l("PPC: found a hole on $hd->{prefix} before $_->{start}, skipping device...");
- $i++;
- }
- $_->{part_number} = $i;
- compute_device_name($_, $hd);
- $start = $_->{start} + $_->{size};
- $i++;
- }
- } else {
- foreach (@{$hd->{primary}{raw}}) {
- $_->{part_number} = $i;
- compute_device_name($_, $hd);
- $i++;
- }
- foreach (map { $_->{normal} } @{$hd->{extended} || []}) {
- my $dev = $hd->{prefix} . $i;
- my $renumbered = $_->{device} && $dev ne $_->{device};
- if ($renumbered) {
- require fs;
- eval { fs::umount_part($_) }; #- at least try to umount it
- will_tell_kernel($hd, del => $_, 'delay_del');
- push @{$hd->{partitionsRenumbered}}, [ $_->{device}, $dev ];
- }
- $_->{part_number} = $i;
- compute_device_name($_, $hd);
- if ($renumbered) {
- will_tell_kernel($hd, add => $_, 'delay_add');
- }
- $i++;
- }
- }
-
- #- try to figure what the windobe drive letter could be!
- #
- #- first verify there's at least one primary dos partition, otherwise it
- #- means it is a secondary disk and all will be false :(
- #-
- my ($c, @others) = grep { isFat_or_NTFS($_) } @{$hd->{primary}{normal}};
-
- $i = ord 'C';
- $c->{device_windobe} = chr($i++) if $c;
- $_->{device_windobe} = chr($i++) foreach grep { isFat_or_NTFS($_) } map { $_->{normal} } @{$hd->{extended}};
- $_->{device_windobe} = chr($i++) foreach @others;
-}
-
-sub remove_empty_extended {
- my ($hd) = @_;
- my $last = $hd->{primary}{extended} or return;
- @{$hd->{extended}} = grep {
- if ($_->{normal}) {
- $last = $_;
- } else {
- %{$last->{extended}} = $_->{extended} ? %{$_->{extended}} : ();
- }
- $_->{normal};
- } @{$hd->{extended}};
- adjust_main_extended($hd);
-}
-
-sub adjust_main_extended {
- my ($hd) = @_;
-
- if (!is_empty_array_ref $hd->{extended}) {
- my ($l, @l) = @{$hd->{extended}};
-
- # the first is a special case, must recompute its real size
- my $start = round_down($l->{normal}{start} - 1, $hd->{geom}{sectors});
- my $end = $l->{normal}{start} + $l->{normal}{size};
- my $only_linux = 1; my $has_win_lba = 0;
- foreach (map { $_->{normal} } $l, @l) {
- $start = min($start, $_->{start});
- $end = max($end, $_->{start} + $_->{size});
- $only_linux &&= isTrueLocalFS($_) || isSwap($_);
- $has_win_lba ||= $_->{pt_type} == 0xc || $_->{pt_type} == 0xe;
- }
- $l->{start} = $hd->{primary}{extended}{start} = $start;
- $l->{size} = $hd->{primary}{extended}{size} = $end - $start;
- }
- if (!@{$hd->{extended} || []} && $hd->{primary}{extended}) {
- will_tell_kernel($hd, del => $hd->{primary}{extended});
- %{$hd->{primary}{extended}} = (); #- modify the raw entry
- delete $hd->{primary}{extended};
- }
- verifyParts($hd); #- verify everything is all right
-}
-
-sub adjust_local_extended {
- my ($hd, $part) = @_;
-
- my $extended = find { $_->{normal} == $part } @{$hd->{extended} || []} or return;
- $extended->{size} = $part->{size} + $part->{start} - $extended->{start};
-
- #- must write it there too because values are not shared
- my $prev = find { $_->{extended}{start} == $extended->{start} } @{$hd->{extended} || []} or return;
- $prev->{extended}{size} = $part->{size} + $part->{start} - $prev->{extended}{start};
-}
-
-sub get_normal_parts {
- my ($hd) = @_;
-
- @{$hd->{primary}{normal} || []}, map { $_->{normal} } @{$hd->{extended} || []};
-}
-
-sub get_normal_parts_and_holes {
- my ($hd) = @_;
- my ($start, $last) = ($hd->first_usable_sector, $hd->last_usable_sector);
-
- ref($hd) or print("get_normal_parts_and_holes: bad hd" . backtrace(), "\n");
-
- my $minimal_hole = put_in_hash({ pt_type => 0 }, hd2minimal_part($hd));
-
- my @l = map {
- my $current = $start;
- $start = $_->{start} + $_->{size};
- my $hole = { start => $current, size => $_->{start} - $current, %$minimal_hole };
- put_in_hash($hole, hd2minimal_part($hd));
- $hole, $_;
- } sort { $a->{start} <=> $b->{start} } grep { !isWholedisk($_) } get_normal_parts($hd);
-
- push @l, { start => $start, size => $last - $start, %$minimal_hole };
- grep { !isEmpty($_) || $_->{size} >= $hd->cylinder_size } @l;
-}
-
-sub read_one($$) {
- my ($hd, $sector) = @_;
- my ($pt, $info);
-
- #- it can be safely considered that the first sector is used to probe the partition table
- #- but other sectors (typically for extended partition ones) have to match this type!
- if (!$sector) {
- my @parttype = (
- if_(arch() =~ /^ia64/, 'gpt'),
- arch() =~ /^sparc/ ? ('sun', 'bsd') : ('dos', 'bsd', 'sun', 'mac'),
- );
- foreach ('empty', @parttype, 'unknown') {
- /unknown/ and die "unknown partition table format on disk " . $hd->{file};
- eval {
- # perl_checker: require partition_table::bsd
- # perl_checker: require partition_table::dos
- # perl_checker: require partition_table::empty
- # perl_checker: require partition_table::gpt
- # perl_checker: require partition_table::mac
- # perl_checker: require partition_table::sun
- require "partition_table/$_.pm";
- bless $hd, "partition_table::$_";
- ($pt, $info) = $hd->read($sector);
- log::l("found a $_ partition table on $hd->{file} at sector $sector");
- };
- $@ or last;
- }
- } else {
- #- keep current blessed object for that, this means it is neccessary to read sector 0 before.
- ($pt, $info) = $hd->read($sector);
- }
-
- my @extended = $hd->hasExtended ? grep { isExtended($_) } @$pt : ();
- my @normal = grep { $_->{size} && !isEmpty($_) && !isExtended($_) } @$pt;
- my $nb_special_empty = int(grep { $_->{size} && isEmpty($_) } @$pt);
-
- @extended > 1 and die "more than one extended partition";
-
- put_in_hash($_, hd2minimal_part($hd)) foreach @normal, @extended;
- { raw => $pt, extended => $extended[0], normal => \@normal, info => $info, nb_special_empty => $nb_special_empty };
-}
-
-sub read {
- my ($hd) = @_;
- my $pt = read_one($hd, 0) or return 0;
- $hd->{primary} = $pt;
- undef $hd->{extended};
- verifyPrimary($pt);
- eval {
- my $need_removing_empty_extended;
- if ($pt->{extended}) {
- read_extended($hd, $pt->{extended}, \$need_removing_empty_extended) or return 0;
- }
- if ($need_removing_empty_extended) {
- #- special case when hda5 is empty, it must be skipped
- #- (windows XP generates such partition tables)
- remove_empty_extended($hd); #- includes adjust_main_extended
- }
-
- };
- die "extended partition: $@" if $@;
-
- assign_device_numbers($hd);
- remove_empty_extended($hd);
-
- $hd->set_best_geometry_for_the_partition_table;
- 1;
-}
-
-sub read_extended {
- my ($hd, $extended, $need_removing_empty_extended) = @_;
-
- my $pt = read_one($hd, $extended->{start}) or return 0;
- $pt = { %$extended, %$pt };
-
- push @{$hd->{extended}}, $pt;
- @{$hd->{extended}} > 100 and die "oops, seems like we're looping here :( (or you have more than 100 extended partitions!)";
-
- if (@{$pt->{normal}} == 0) {
- $$need_removing_empty_extended = 1;
- delete $pt->{normal};
- print "need_removing_empty_extended\n";
- } elsif (@{$pt->{normal}} > 1) {
- die "more than one normal partition in extended partition";
- } else {
- $pt->{normal} = $pt->{normal}[0];
- #- in case of extended partitions, the start sector is local to the partition or to the first extended_part!
- $pt->{normal}{start} += $pt->{start};
-
- #- the following verification can broke an existing partition table that is
- #- correctly read by fdisk or cfdisk. maybe the extended partition can be
- #- recomputed to get correct size.
- if (!verifyInside($pt->{normal}, $extended)) {
- $extended->{size} = $pt->{normal}{start} + $pt->{normal}{size};
- verifyInside($pt->{normal}, $extended) or die "partition $pt->{normal}{device} is not inside its extended partition";
- }
- }
-
- if ($pt->{extended}) {
- $pt->{extended}{start} += $hd->{primary}{extended}{start};
- return read_extended($hd, $pt->{extended}, $need_removing_empty_extended);
- } else {
- 1;
- }
-}
-
-sub will_tell_kernel {
- my ($hd, $action, $o_part, $o_delay) = @_;
-
- if ($action eq 'resize') {
- will_tell_kernel($hd, del => $o_part);
- will_tell_kernel($hd, add => $o_part);
- } else {
- my $part_number;
- if ($o_part) {
- ($part_number) = $o_part->{device} =~ /(\d+)$/ or
- #- do not die, it occurs when we zero_MBR_and_dirty a raw_lvm_PV
- log::l("ERROR: will_tell_kernel bad device " . description($o_part)), return;
- }
-
- my @para =
- $action eq 'force_reboot' ? () :
- $action eq 'add' ? ($part_number, $o_part->{start}, $o_part->{size}) :
- $action eq 'del' ? $part_number :
- internal_error("unknown action $action");
-
- push @{$hd->{'will_tell_kernel' . ($o_delay || '')} ||= []}, [ $action, @para ];
- }
- if (!$o_delay) {
- foreach my $delay ('delay_del', 'delay_add') {
- my $l = delete $hd->{"will_tell_kernel$delay"} or next;
- push @{$hd->{will_tell_kernel} ||= []}, @$l;
- }
- }
- $hd->{isDirty} = 1;
-}
-
-sub tell_kernel {
- my ($hd, $tell_kernel) = @_;
-
- my $F = partition_table::raw::openit($hd);
-
- my $force_reboot = any { $_->[0] eq 'force_reboot' } @$tell_kernel;
- if (!$force_reboot) {
- foreach (@$tell_kernel) {
- my ($action, $part_number, $o_start, $o_size) = @$_;
-
- if ($action eq 'add') {
- $force_reboot ||= !c::add_partition(fileno $F, $part_number, $o_start, $o_size);
- } elsif ($action eq 'del') {
- $force_reboot ||= !c::del_partition(fileno $F, $part_number);
- }
- log::l("tell kernel $action ($hd->{device} $part_number $o_start $o_size), rebootNeeded is now " . bool2text($hd->{rebootNeeded}));
- }
- }
- if ($force_reboot) {
- my @magic_parts = grep { $_->{isMounted} && $_->{real_mntpoint} } get_normal_parts($hd);
- foreach (@magic_parts) {
- syscall_('umount', $_->{real_mntpoint}) or log::l(N("error unmounting %s: %s", $_->{real_mntpoint}, $!));
- }
- $hd->{rebootNeeded} = !ioctl($F, c::BLKRRPART(), 0);
- log::l("tell kernel force_reboot ($hd->{device}), rebootNeeded is now $hd->{rebootNeeded}.");
-
- foreach (@magic_parts) {
- syscall_('mount', $_->{real_mntpoint}, $_->{fs_type}, c::MS_MGC_VAL()) or log::l(N("mount failed: ") . $!);
- }
- }
-}
-
-# write the partition table
-sub write {
- my ($hd) = @_;
- $hd->{isDirty} or return;
- $hd->{readonly} and die "a read-only partition table should not be dirty!";
-
- #- set first primary partition active if no primary partitions are marked as active.
- if (my @l = @{$hd->{primary}{raw}}) {
- foreach (@l) {
- $_->{local_start} = $_->{start};
- $_->{active} ||= 0;
- }
- $l[0]{active} = 0x80 if !any { $_->{active} } @l;
- }
-
- #- last chance for verification, this make sure if an error is detected,
- #- it will never be writed back on partition table.
- verifyParts($hd);
-
- $hd->write(0, $hd->{primary}{raw}, $hd->{primary}{info}) or die "writing of partition table failed";
-
- #- should be fixed but a extended exist with no real extended partition, that blanks mbr!
- if (arch() !~ /^sparc/) {
- foreach (@{$hd->{extended}}) {
- # in case of extended partitions, the start sector must be local to the partition
- $_->{normal}{local_start} = $_->{normal}{start} - $_->{start};
- $_->{extended} and $_->{extended}{local_start} = $_->{extended}{start} - $hd->{primary}{extended}{start};
-
- $hd->write($_->{start}, $_->{raw}) or die "writing of partition table failed";
- }
- }
- $hd->{isDirty} = 0;
- $hd->{hasBeenDirty} = 1; #- used in undo (to know if undo should believe isDirty or not)
-
- if (my $tell_kernel = delete $hd->{will_tell_kernel}) {
- tell_kernel($hd, $tell_kernel);
- }
-}
-
-sub active {
- my ($hd, $part) = @_;
-
- $_->{active} = 0 foreach @{$hd->{primary}{normal}};
- $part->{active} = 0x80;
- $hd->{isDirty} = 1;
-}
-
-
-# remove a normal partition from hard drive hd
-sub remove {
- my ($hd, $part) = @_;
- my $i;
-
- #- first search it in the primary partitions
- $i = 0; foreach (@{$hd->{primary}{normal}}) {
- if ($_ eq $part) {
- will_tell_kernel($hd, del => $_);
-
- splice(@{$hd->{primary}{normal}}, $i, 1);
- %$_ = (); #- blank it
-
- $hd->raw_removed($hd->{primary}{raw});
- return 1;
- }
- $i++;
- }
-
- my ($first, $second, $third) = map { $_->{normal} } @{$hd->{extended} || []};
- if ($third && $first eq $part) {
- die "Can not handle removing hda5 when hda6 is not the second partition" if $second->{start} > $third->{start};
- }
-
- #- otherwise search it in extended partitions
- foreach (@{$hd->{extended} || []}) {
- $_->{normal} eq $part or next;
-
- delete $_->{normal}; #- remove it
- remove_empty_extended($hd);
- assign_device_numbers($hd);
-
- will_tell_kernel($hd, del => $part);
- return 1;
- }
- 0;
-}
-
-# create of partition at starting at `start', of size `size' and of type `pt_type' (nice comment, uh?)
-sub add_primary {
- my ($hd, $part) = @_;
-
- {
- local $hd->{primary}{normal}; #- save it to fake an addition of $part, that way add_primary do not modify $hd if it fails
- push @{$hd->{primary}{normal}}, $part;
- adjust_main_extended($hd); #- verify
- $hd->raw_add($hd->{primary}{raw}, $part);
- }
- push @{$hd->{primary}{normal}}, $part; #- really do it
-}
-
-sub add_extended {
- arch() =~ /^sparc|ppc/ and die N("Extended partition not supported on this platform");
-
- my ($hd, $part, $extended_type) = @_;
- $extended_type =~ s/Extended_?//;
-
- my $e = $hd->{primary}{extended};
-
- if ($e && !verifyInside($part, $e)) {
- #-die "sorry, can not add outside the main extended partition" unless $::unsafe;
- my $end = $e->{start} + $e->{size};
- my $start = min($e->{start}, $part->{start});
- $end = max($end, $part->{start} + $part->{size}) - $start;
-
- { #- faking a resizing of the main extended partition to test for problems
- local $e->{start} = $start;
- local $e->{size} = $end - $start;
- eval { verifyPrimary($hd->{primary}) };
- $@ and die
-N("You have a hole in your partition table but I can not use it.
-The only solution is to move your primary partitions to have the hole next to the extended partitions.");
- }
- }
-
- if ($e && $part->{start} < $e->{start}) {
- my $l = first(@{$hd->{extended}});
-
- #- the first is a special case, must recompute its real size
- $l->{start} = round_down($l->{normal}{start} - 1, $hd->cylinder_size);
- $l->{size} = $l->{normal}{start} + $l->{normal}{size} - $l->{start};
- my $ext = { %$l };
- unshift @{$hd->{extended}}, { pt_type => 5, raw => [ $part, $ext, {}, {} ], normal => $part, extended => $ext };
- #- size will be autocalculated :)
- } else {
- my ($ext, $ext_size) = is_empty_array_ref($hd->{extended}) ?
- ($hd->{primary}, -1) : #- -1 size will be computed by adjust_main_extended
- (top(@{$hd->{extended}}), $part->{size});
- my %ext = (pt_type => $extended_type || 5, start => $part->{start}, size => $ext_size);
-
- $hd->raw_add($ext->{raw}, \%ext);
- $ext->{extended} = \%ext;
- push @{$hd->{extended}}, { %ext, raw => [ $part, {}, {}, {} ], normal => $part };
- }
- $part->{start}++; $part->{size}--; #- let it start after the extended partition sector
- adjustStartAndEnd($hd, $part);
-
- adjust_main_extended($hd);
-}
-
-sub add {
- my ($hd, $part, $b_primaryOrExtended, $b_forceNoAdjust) = @_;
-
- get_normal_parts($hd) >= ($hd->{device} =~ /^rd/ ? 7 : $hd->{device} =~ /^(sd|ida|cciss|ataraid)/ ? 15 : 63) and cdie "maximum number of partitions handled by linux reached";
-
- set_isFormatted($part, 0);
- put_in_hash($part, hd2minimal_part($hd));
- $part->{start} ||= 1 if arch() !~ /^sparc/; #- starting at sector 0 is not allowed
- adjustStartAndEnd($hd, $part) unless $b_forceNoAdjust;
-
- my $nb_primaries = $hd->{device} =~ /^rd/ ? 3 : 1;
-
- if (arch() =~ /^sparc|ppc/ ||
- $b_primaryOrExtended eq 'Primary' ||
- $b_primaryOrExtended !~ /Extended/ && @{$hd->{primary}{normal} || []} < $nb_primaries) {
- eval { add_primary($hd, $part) };
- goto success if !$@;
- }
- if ($hd->hasExtended) {
- eval { add_extended($hd, $part, $b_primaryOrExtended) };
- goto success if !$@;
- }
- {
- add_primary($hd, $part);
- }
- success:
- assign_device_numbers($hd);
- will_tell_kernel($hd, add => $part);
-}
-
-# search for the next partition
-sub next {
- my ($hd, $part) = @_;
-
- first(
- sort { $a->{start} <=> $b->{start} }
- grep { $_->{start} >= $part->{start} + $part->{size} }
- get_normal_parts($hd)
- );
-}
-sub next_start {
- my ($hd, $part) = @_;
- my $next = &next($hd, $part);
- $next ? $next->{start} : $hd->{totalsectors};
-}
-
-sub load {
- my ($hd, $file, $b_force) = @_;
-
- my $F;
- if (ref $file) {
- $F = $file;
- } else {
- open($F, $file) or die N("Error reading file %s", $file);
- }
-
- my $h;
- {
- local $/ = "\0";
- eval <$F>;
- }
- $@ and die N("Restoring from file %s failed: %s", $file, $@);
-
- ref($h) eq 'ARRAY' or die N("Bad backup file");
-
- my %h; @h{@fields2save} = @$h;
-
- $h{totalsectors} == $hd->{totalsectors} or $b_force or cdie "bad totalsectors";
-
- #- unsure we do not modify totalsectors
- local $hd->{totalsectors};
-
- @$hd{@fields2save} = @$h;
-
- delete @$_{qw(isMounted isFormatted notFormatted toFormat toFormatUnsure)} foreach get_normal_parts($hd);
- will_tell_kernel($hd, 'force_reboot'); #- just like undo, do not force write_partitions so that user can see the new partition table but can still discard it
-}
-
-sub save {
- my ($hd, $file) = @_;
- my @h = @$hd{@fields2save};
- require Data::Dumper;
- eval { output($file, Data::Dumper->Dump([\@h], ['$h']), "\0") }
- or die N("Error writing to file %s", $file);
-}
-
-1;
diff --git a/perl-install/partition_table/bsd.pm b/perl-install/partition_table/bsd.pm
deleted file mode 100644
index 0e2421c25..000000000
--- a/perl-install/partition_table/bsd.pm
+++ /dev/null
@@ -1,147 +0,0 @@
-package partition_table::bsd; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use partition_table::raw;
-use partition_table;
-use c;
-
-#- very bad and rough handling :(
-my %pt_typeToDos = (
- 8 => 0x83,
- 1 => 0x82,
-);
-my %pt_typeFromDos = reverse %pt_typeToDos;
-
-my ($main_format, $main_fields) = list2kv(
- I => 'magic',
- S => 'type',
- S => 'subtype',
- a16 => 'typename',
- a16 => 'packname',
- I => 'secsize',
- I => 'nsectors',
- I => 'ntracks',
- I => 'ncylinders',
- I => 'secpercyl',
- I => 'secprtunit',
- S => 'sparespertrack',
- S => 'sparespercyl',
- I => 'acylinders',
- S => 'rpm',
- S => 'interleave',
- S => 'trackskew',
- S => 'cylskew',
- I => 'headswitch',
- I => 'trkseek',
- I => 'flags',
- a20 => 'drivedata',
- a20 => 'spare',
- I => 'magic2',
- S => 'checksum',
- S => 'npartitions',
- I => 'bbsize',
- I => 'sbsize',
- a128 => 'partitions',
- a236 => 'blank',
-);
-$main_format = join '', @$main_format;
-
-my @fields = qw(size start fsize pt_type frag cpg);
-my $format = "I I I C C S";
-my $magic = 0x82564557;
-my $nb_primary = 8;
-my $offset = 0x40;
-
-sub read($$) {
- my ($hd, $sector) = @_;
- my $tmp;
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed";
-
- sysread $F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector";
- my %info; @info{@$main_fields} = unpack $main_format, $tmp;
-
- #- TODO verify checksum
-
- my $size = psizeof($format);
- my @pt = map {
- my %h; @h{@fields} = unpack $format, $_;
- fs::type::set_pt_type(\%h, $pt_typeToDos{$h{pt_type}} || $h{pt_type});
- \%h;
- } $info{partitions} =~ /(.{$size})/g;
-
- #- check magic number
- $info{magic} == $magic or die "bad magic number on disk $hd->{device}";
- $info{magic2} == $magic or die "bad magic number on disk $hd->{device}";
-
- [ @pt ], \%info;
-}
-
-# write the partition table (and extended ones)
-# for each entry, it uses fields: start, size, pt_type, active
-sub write($$$;$) {
- my ($hd, $sector, $pt, $info) = @_;
-
- #- handle testing for writing partition table on file only!
- my $F;
- if ($::testing) {
- my $file = "/tmp/partition_table_$hd->{device}";
- open $F, ">$file" or die "error opening test file $file";
- } else {
- $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno($F), $sector, $offset) or return 0;
- }
-
- #- TODO compute checksum
-
- $info->{npartitions} = $nb_primary; #- is it ok?
-
- @$pt == $nb_primary or die "partition table does not have $nb_primary entries";
- $info->{partitions} = join '', map {
- local $_->{pt_type} = $pt_typeFromDos{$_->{pt_type}} || $_->{pt_type};
- pack $format, @$_{@fields};
- } @$pt;
-
- syswrite $F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0;
- 1;
-}
-
-sub info {
- my ($hd) = @_;
- my $dtype_scsi = 4; #- taken from fdisk, removed unused one,
- my $dtype_ST506 = 6; #- see fdisk for more
-
- {
- magic => $magic,
- magic2 => $magic,
- dtype => $hd->{device} =~ /^sd/ ? $dtype_scsi : $dtype_ST506,
- secsize => $common::SECTORSIZE,
- ncylinders => $hd->{geom}{cylinders},
- secpercyl => $hd->cylinder_size,
- secprtunit => $hd->{geom}{totalsectors},
- rpm => 3600,
- interleave => 1,
- trackskew => 0,
- cylskew => 0,
- headswitch => 0,
- trkseek => 0,
- bbsize => 8192, #- size of boot area, with label
- sbsize => 8192, #- max size of fs superblock
- };
-}
-
-sub clear_raw {
- my ($hd) = @_;
- { raw => [ ({}) x $nb_primary ], info => info($hd) };
-}
-
-sub first_usable_sector { 2048 }
-
-1;
diff --git a/perl-install/partition_table/dos.pm b/perl-install/partition_table/dos.pm
deleted file mode 100644
index 8d8109723..000000000
--- a/perl-install/partition_table/dos.pm
+++ /dev/null
@@ -1,250 +0,0 @@
-package partition_table::dos; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use partition_table::raw;
-use partition_table;
-use c;
-
-my @fields = qw(active start_head start_sec start_cyl pt_type end_head end_sec end_cyl start size);
-my $format = "C8 V2";
-my $magic = "\x55\xAA";
-my $nb_primary = 4;
-
-my $offset = $common::SECTORSIZE - length($magic) - $nb_primary * common::psizeof($format);
-
-sub hasExtended { 1 }
-
-sub geometry_to_string {
- my ($geom) = @_;
- "$geom->{cylinders}/$geom->{heads}/$geom->{sectors}";
-}
-
-sub last_usable_sector {
- my ($hd) = @_;
- #- do not use totalsectors, see gi/docs/Partition-ends-after-end-of-disk.txt for more
- $hd->{geom}{sectors} * $hd->{geom}{heads} * $hd->{geom}{cylinders};
-}
-
-sub get_rawCHS {
- my ($part) = @_;
-
- exists $part->{start_cyl} or internal_error("get_rawCHS $part->{device}");
-
- [ $part->{start_cyl}, $part->{start_head}, $part->{start_sec} ],
- [ $part->{end_cyl}, $part->{end_head}, $part->{end_sec} ];
-}
-sub set_rawCHS {
- my ($part, $raw_chs_start, $raw_chs_end) = @_;
- ($part->{start_cyl}, $part->{start_head}, $part->{start_sec}) = @$raw_chs_start;
- ($part->{end_cyl}, $part->{end_head}, $part->{end_sec}) = @$raw_chs_end;
-}
-
-sub compute_CHS {
- my ($hd, $part) = @_;
- my ($chs_start, $chs_end) = CHS_from_part_linear($hd->{geom}, $part);
- set_rawCHS($part, $chs_start ? CHS2rawCHS($hd->{geom}, $chs_start) : [0,0,0],
- $chs_end ? CHS2rawCHS($hd->{geom}, $chs_end) : [0,0,0]);
-}
-
-sub CHS_from_part_rawCHS {
- my ($part) = @_;
-
- $part->{start} || $part->{pt_type} or return;
-
- my ($raw_chs_start, $raw_chs_end) = get_rawCHS($part);
- rawCHS2CHS($raw_chs_start), rawCHS2CHS($raw_chs_end);
-}
-
-sub CHS_from_part_linear {
- my ($geom, $part) = @_;
-
- $part->{start} || $part->{pt_type} or return;
-
- sector2CHS($geom, $part->{start}), sector2CHS($geom, $part->{start} + $part->{size} - 1);
-}
-
-sub rawCHS2CHS {
- my ($chs) = @_;
- my ($c, $h, $s) = @$chs;
- [ $c | (($s & 0xc0) << 2), $h, ($s & 0x3f) - 1 ];
-}
-
-sub CHS2rawCHS {
- my ($geom, $chs) = @_;
- my ($c, $h, $s) = @$chs;
- if ($c > 1023) {
- #- no way to have a #cylinder >= 1024
- $c = 1023;
- $h = $geom->{heads} - 1;
- $s = $geom->{sectors} - 1;
- }
- [ $c & 0xff, $h, ($s + 1) | (($c >> 2) & 0xc0) ];
-}
-
-# returns (cylinder, head, sector)
-sub sector2CHS {
- my ($geom, $start) = @_;
- my ($s, $h);
- ($start, $s) = divide($start, $geom->{sectors});
- ($start, $h) = divide($start, $geom->{heads});
- [ $start, $h, $s ];
-}
-
-sub is_geometry_valid_for_the_partition_table {
- my ($hd, $geom, $no_log) = @_;
-
- every {
- my ($chs_start_v1, $chs_end_v1) = map { join(',', @$_) } CHS_from_part_rawCHS($_) or next;
- my ($chs_start_v2, $chs_end_v2) = map { join(',', @$_) } map { [ min($_->[0], 1023), $_->[1], $_->[2] ] } CHS_from_part_linear($geom, $_);
- if (!$no_log) {
- $chs_start_v1 eq $chs_start_v2 or log::l("check_geometry_using_the_partition_table failed for ($_->{device}, $_->{start}): $chs_start_v1 vs $chs_start_v2 with geometry " . geometry_to_string($geom));
- $chs_end_v1 eq $chs_end_v2 or log::l("check_geometry_using_the_partition_table failed for ($_->{device}, " . ($_->{start} + $_->{size} - 1) . "): $chs_end_v1 vs $chs_end_v2 with geometry " . geometry_to_string($geom));
- }
- $chs_start_v1 eq $chs_start_v2 && $chs_end_v1 eq $chs_end_v2;
- } @{$hd->{primary}{normal} || []};
-}
-
-#- from parted, thanks!
-my @valid_nb_sectors = (63, 61, 48, 32, 16);
-my @valid_nb_heads = (255, 240, 192, 128, 96, 64, 61, 32, 17, 16);
-
-sub guess_geometry_from_partition_table {
- my ($hd) = @_;
-
- my @chss = map { CHS_from_part_rawCHS($_) } @{$hd->{primary}{normal} || []} or return { empty => 1 };
- my ($nb_heads, $nb_sectors) = (max(map { $_->[1] } @chss) + 1, max(map { $_->[2] } @chss) + 1);
- my $geom = { sectors => $nb_sectors, heads => $nb_heads };
- partition_table::raw::compute_nb_cylinders($geom, $hd->{totalsectors});
- log::l("guess_geometry_from_partition_table $hd->{device}: " . geometry_to_string($geom));
-
- member($geom->{sectors}, @valid_nb_sectors) or return { invalid => 1 };
- $geom;
-}
-
-sub geometry_from_edd {
- my ($hd, $edd_dir) = @_;
-
- my $sectors = cat_("$edd_dir/legacy_sectors_per_track") or return;
- my $heads = cat_("$edd_dir/legacy_max_head") or return;
-
- my $geom = { sectors => 0 + $sectors, heads => 1 + $heads, from_edd => 1 };
- is_geometry_valid_for_the_partition_table($hd, $geom, 0) or return;
- partition_table::raw::compute_nb_cylinders($geom, $hd->{totalsectors});
-
- log::l("geometry_from_edd $hd->{device} $hd->{volume_id}: " . geometry_to_string($geom));
-
- $geom;
-}
-
-
-sub try_every_geometry {
- my ($hd) = @_;
-
- my $geom = {};
- foreach (@valid_nb_sectors) {
- $geom->{sectors} = $_;
- foreach (@valid_nb_heads) {
- $geom->{heads} = $_;
- if (is_geometry_valid_for_the_partition_table($hd, $geom, 1)) {
- partition_table::raw::compute_nb_cylinders($geom, $hd->{totalsectors});
- log::l("try_every_geometry $hd->{device}: found " . geometry_to_string($geom));
- return $geom;
- }
- }
- }
- log::l("$hd->{device}: argh! no geometry exists for this partition table");
- undef;
-}
-
-sub set_best_geometry_for_the_partition_table {
- my ($hd) = @_;
-
- my $guessed_geom = guess_geometry_from_partition_table($hd);
- if ($guessed_geom->{empty}) {
- log::l("$hd->{device}: would need looking at BIOS info to find out geometry") if !$hd->{geom}{from_edd};
- return;
- }
- my $default_ok = is_geometry_valid_for_the_partition_table($hd, $hd->{geom}, 0);
- if ($guessed_geom->{invalid}) {
- log::l("$hd->{device}: no valid geometry guessed from partition table");
- $default_ok and return;
- $guessed_geom = try_every_geometry($hd) or return;
- }
-
- if ($guessed_geom->{heads} == $hd->{geom}{heads} && $guessed_geom->{sectors} == $hd->{geom}{sectors}) {
- # cool!
- } else {
- my $guessed_ok = is_geometry_valid_for_the_partition_table($hd, $guessed_geom, 0);
- if ($default_ok && $guessed_ok) {
- #- oh my!?
- log::l("$hd->{device}: both guessed and default are valid??? " . geometry_to_string($hd->{geom}) . " vs " . geometry_to_string($guessed_geom));
- } elsif ($default_ok) {
- log::l("$hd->{device}: keeping default geometry " . geometry_to_string($hd->{geom}));
- } elsif ($guessed_ok) {
- log::l("$hd->{device}: using guessed geometry " . geometry_to_string($guessed_geom) . " instead of " . geometry_to_string($hd->{geom}));
- put_in_hash($hd->{geom}, $guessed_geom);
- } else {
- log::l("$hd->{device}: argh! no valid geometry found");
- }
- }
-}
-
-sub read {
- my ($hd, $sector) = @_;
- my $tmp;
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed";
-
- my @pt = map {
- sysread $F, $tmp, psizeof($format) or die "error while reading partition table in sector $sector";
- my %h;
- @h{@fields} = unpack $format, $tmp;
- fs::type::set_pt_type(\%h, $h{pt_type});
- \%h;
- } (1..$nb_primary);
-
- #- check magic number
- sysread $F, $tmp, length $magic or die "error reading magic number on disk $hd->{device}";
- $tmp eq $magic or die "bad magic number on disk $hd->{device}";
-
- [ @pt ];
-}
-
-# write the partition table (and extended ones)
-# for each entry, it uses fields: start, size, pt_type, active
-sub write {
- my ($hd, $sector, $pt) = @_;
-
- log::l("partition::dos::write $hd->{device}");
-
- #- handle testing for writing partition table on file only!
- my $F;
- if ($::testing) {
- my $file = "/tmp/partition_table_$hd->{device}";
- open $F, ">$file" or die "error opening test file $file";
- } else {
- $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno($F), $sector, $offset) or return 0;
- }
-
- @$pt == $nb_primary or die "partition table does not have $nb_primary entries";
- foreach (@$pt) {
- compute_CHS($hd, $_);
- local $_->{start} = $_->{local_start} || 0;
- $_->{active} ||= 0; $_->{pt_type} ||= 0; $_->{size} ||= 0; #- for no warning
- syswrite $F, pack($format, @$_{@fields}), psizeof($format) or return 0;
- }
- syswrite $F, $magic, length $magic or return 0;
- 1;
-}
-
-sub clear_raw { { raw => [ ({}) x $nb_primary ] } }
-
-1;
diff --git a/perl-install/partition_table/empty.pm b/perl-install/partition_table/empty.pm
deleted file mode 100644
index b34b9210c..000000000
--- a/perl-install/partition_table/empty.pm
+++ /dev/null
@@ -1,36 +0,0 @@
-package partition_table::empty; # $Id$
-
-#- this is a mainly dummy partition table. If we find it's empty, we just call -
-#- zero_MBR which will take care of bless'ing us to the partition table type best
-#- suited
-
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use partition_table::raw;
-use partition_table;
-use c;
-
-
-sub read($$) {
- my ($hd, $sector) = @_;
- my $tmp;
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- c::lseek_sector(fileno($F), $sector, 0) or die "reading of partition in sector $sector failed";
-
- #- check magic number
- sysread $F, $tmp, 1024 or die "error reading magic number on disk $hd->{device}";
- $tmp eq substr($tmp, 0, 1) x 1024 or die "bad magic number on disk $hd->{device}";
-
- partition_table::raw::zero_MBR($hd);
-
- $hd->{primary}{raw}, $hd->{primary}{info};
-}
-
-1;
diff --git a/perl-install/partition_table/gpt.pm b/perl-install/partition_table/gpt.pm
deleted file mode 100644
index d5c05e8de..000000000
--- a/perl-install/partition_table/gpt.pm
+++ /dev/null
@@ -1,263 +0,0 @@
-package partition_table::gpt; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use partition_table::raw;
-use partition_table::dos;
-use partition_table;
-use c;
-
-my %gpt_types = (
- 0x00 => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
- 0x82 => "\x6d\xfd\x57\x06\xab\xa4\xc4\x43\x84\xe5\x09\x33\xc8\x4b\x4f\x4f",
- 0x83 => "\xA2\xA0\xD0\xEB\xE5\xB9\x33\x44\x87\xC0\x68\xB6\xB7\x26\x99\xC7",
- 0x8e => "\x79\xd3\xd6\xe6\x07\xf5\xc2\x44\xa2\x3c\x23\x8f\x2a\x3d\xf9\x28",
- 0xfd => "\x0f\x88\x9d\xa1\xfc\x05\x3b\x4d\xa0\x06\x74\x3f\x0f\x84\x91\x1e",
- 0xef => "\x28\x73\x2A\xC1\x1F\xF8\xd2\x11\xBA\x4B\x00\xA0\xC9\x3E\xC9\x3B",
- # legacy_partition_table => "\x41\xEE\x4D\x02\xE7\x33\xd3\x11\x9D\x69\x00\x08\xC7\x81\xF3\x9F"
- # PARTITION_MSFT_RESERVED_GUID "\x16\xE3\xC9\xE3\x5C\x0B\xB8\x4D\x81\x7D\xF9\x2D\xF0\x02\x15\xAE"
- #PARTITION_RESERVED_GUID "\x39\x33\xa6\x8d\x07\x00\xc0\x60\xc4\x36\x08\x3a\xc8\x23\x09\x08"
-);
-
-my $current_revision = 0x00010200;
-my ($main_format, $main_fields) = list2kv(
- a8 => 'magic',
- V => 'revision',
- V => 'headerSize',
- V => 'headerCRC32',
- a4 => 'blank1',
- Q => 'myLBA',
- Q => 'alternateLBA',
- Q => 'firstUsableLBA',
- Q => 'lastUsableLBA',
- a16 => 'guid',
- Q => 'partitionEntriesLBA',
- V => 'nbPartitions',
- V => 'partitionEntrySize',
- V => 'partitionEntriesCRC32',
-);
-
-my ($partitionEntry_format, $partitionEntry_fields) = list2kv(
- a16 => 'gpt_type',
- a16 => 'guid',
- Q => 'start',
- Q => 'ending',
- a8 => 'efi_attributes',
- a72 => 'name',
-);
-
-my ($guid_format, $guid_fields) = list2kv(
- N => 'time_low',
- n => 'time_mid',
- n => 'time_hi_and_version',
- n => 'clock_seq',
- a6 => 'node',
-);
-
-$_ = join('', @$_) foreach $main_format, $partitionEntry_format, $guid_format;
-
-my $magic = "EFI PART";
-
-sub generate_guid() {
- my $tmp;
- open(my $F, devices::make("random")) or die "Could not open /dev/random for GUID generation";
- read $F, $tmp, psizeof($guid_format);
-
- my %guid; @guid{@$guid_fields} = unpack $guid_format, $tmp;
- $guid{clock_seq} = ($guid{clock_seq} & 0x3fff) | 0x8000;
- $guid{time_hi_and_version} = ($guid{time_hi_and_version} & 0x0fff) | 0x4000;
- pack($guid_format, @guid{@$guid_fields});
-}
-
-sub crc32 {
- my ($buffer) = @_;
-
- my $crc = 0xFFFFFFFF;
- foreach (unpack "C*", $buffer) {
- my $subcrc = ($crc ^ $_) & 0xFF;
- for (my $j = 8; $j > 0; $j--) {
- my $b = $subcrc & 1;
- $subcrc = ($subcrc >> 1) & 0x7FFFFFFF;
- $subcrc = $subcrc ^ 0xEDB88320 if $b;
- }
- $crc = ($crc >> 8) ^ $subcrc;
- }
- $crc ^ 0xFFFFFFFF;
-}
-
-sub compute_headerCRC32 {
- my ($info) = @_;
- local $info->{headerCRC32} = 0;
- crc32(pack($main_format, @$info{@$main_fields}));
-}
-
-sub read_header {
- my ($sector, $F) = @_;
- my $tmp;
-
- c::lseek_sector(fileno($F), $sector, 0) or die "reading of partition in sector $sector failed";
-
- sysread $F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector";
- my %info; @info{@$main_fields} = unpack $main_format, $tmp;
-
- $info{magic} eq $magic or die "bad magic number";
- $info{myLBA} == $sector or die "myLBA is not the same";
- $info{headerSize} == psizeof($main_format) or die "bad partition table header size";
- $info{partitionEntrySize} == psizeof($partitionEntry_format) or die "bad partitionEntrySize";
- $info{revision} <= $current_revision or log::l("oops, this is a new GPT revision ($info{revision} > $current_revision)");
-
- $info{headerCRC32} == compute_headerCRC32(\%info) or die "bad partition table checksum";
- \%info;
-}
-
-sub read_partitionEntries {
- my ($info, $F) = @_;
- my $tmp;
-
- c::lseek_sector(fileno($F), $info->{partitionEntriesLBA}, 0) or die "can not seek to sector partitionEntriesLBA";
- sysread $F, $tmp, psizeof($partitionEntry_format) * $info->{nbPartitions} or die "error while reading partition table in sector $info->{partitionEntriesLBA}";
- $info->{partitionEntriesCRC32} == crc32($tmp) or die "bad partition entries checksum";
-
- c::lseek_sector(fileno($F), $info->{partitionEntriesLBA}, 0) or die "can not seek to sector partitionEntriesLBA";
- my %gpt_types_rev = reverse %gpt_types;
- my @pt =
- map {
- sysread $F, $tmp, psizeof($partitionEntry_format) or die "error while reading partition table in sector $info->{partitionEntriesLBA}";
- my %h; @h{@$partitionEntry_fields} = unpack $partitionEntry_format, $tmp;
- $h{size} = $h{ending} - $h{start} + 1;
- my $pt_type = $gpt_types_rev{$h{gpt_type}};
- fs::type::set_pt_type(\%h, defined $pt_type ? $pt_type : 0x100);
- \%h;
- } (1 .. $info->{nbPartitions});
- \@pt;
-}
-
-sub read {
- my ($hd, $sector) = @_;
-
- my $l = partition_table::dos::read($hd, $sector);
- my @l = grep { $_->{size} && $_->{pt_type} && !partition_table::isExtended($_) } @$l;
- @l == 1 or die "bad PMBR";
- $l[0]{pt_type} == 0xee or die "bad PMBR";
- my $myLBA = $l[0]{start};
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- my $info1 = eval { read_header($myLBA, $F) };
- my $info2 = eval { read_header($info1->{alternateLBA} || $l[0]{start} + $l[0]{size} - 1, $F) }; #- what about using $hd->{totalsectors} ???
- my $info = $info1 || { %$info2, myLBA => $info2->{alternateLBA}, alternateLBA => $info2->{myLBA}, partitionEntriesLBA => $info2->{alternateLBA} + 1 } or die;
- my $pt = $info1 && $info2 ?
- eval { $info1 && read_partitionEntries($info1, $F) } || read_partitionEntries($info2, $F) :
- read_partitionEntries($info, $F);
- $hd->raw_removed($pt);
-
- $pt, $info;
-}
-
-# write the partition table (and extended ones)
-# for each entry, it uses fields: start, size, pt_type, active
-sub write {
- my ($hd, $sector, $pt, $info) = @_;
-
- foreach (@$pt) {
- $_->{ending} = $_->{start} + $_->{size} - 1;
- $_->{guid} ||= generate_guid();
- $_->{gpt_type} = $gpt_types{$_->{pt_type}} || $_->{gpt_type} || $gpt_types{0x83};
- }
- my $partitionEntries = join('', map {
- pack($partitionEntry_format, @$_{@$partitionEntry_fields});
- } (@$pt, ({}) x ($info->{nbPartitions} - @$pt)));
-
- $info->{partitionEntriesCRC32} = crc32($partitionEntries);
- $info->{headerCRC32} = compute_headerCRC32($info);
-
- my $info2 = { %$info,
- myLBA => $info->{alternateLBA}, alternateLBA => $info->{myLBA},
- partitionEntriesLBA => $info->{alternateLBA} - psizeof($partitionEntry_format) * $info->{nbPartitions} / 512,
- };
- $info2->{headerCRC32} = compute_headerCRC32($info2);
-
- {
- # write the PMBR
- my $pmbr = partition_table::dos::clear_raw();
- $pmbr->{raw}[0] = { pt_type => 0xee, local_start => $info->{myLBA}, size => $info->{alternateLBA} - $info->{myLBA} + 1 };
- partition_table::dos::write($hd, $sector, $pmbr->{raw});
- }
-
- my $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing";
-
- c::lseek_sector(fileno($F), $info->{myLBA}, 0) or return 0;
- #- pad with 0's
- syswrite $F, pack($main_format, @$info{@$main_fields}) . "\0" x 512, 512 or return 0;
-
- c::lseek_sector(fileno($F), $info->{alternateLBA}, 0) or return 0;
- #- pad with 0's
- syswrite $F, pack($main_format, @$info2{@$main_fields}) . "\0" x 512, 512 or return 0;
-
- c::lseek_sector(fileno($F), $info->{partitionEntriesLBA}, 0) or return 0;
- syswrite $F, $partitionEntries or return 0;
-
- c::lseek_sector(fileno($F), $info2->{partitionEntriesLBA}, 0) or return 0;
- syswrite $F, $partitionEntries or return 0;
-
- common::sync();
- 1;
-}
-
-sub raw_removed {
- my ($_hd, $raw) = @_;
- @$raw = grep { $_->{size} && $_->{pt_type} } @$raw;
-}
-sub can_raw_add {
- my ($hd) = @_;
- @{$hd->{primary}{raw}} < $hd->{primary}{info}{nbPartitions};
-}
-sub raw_add {
- my ($hd, $raw, $part) = @_;
- $hd->can_raw_add or die "raw_add: partition table already full";
- push @$raw, $part;
-}
-
-sub adjustStart {}
-sub adjustEnd {}
-
-sub first_usable_sector {
- my ($hd) = @_;
- $hd->{primary}{info}{firstUsableLBA};
-}
-sub last_usable_sector {
- my ($hd) = @_;
- $hd->{primary}{info}{lastUsableLBA} + 1;
-}
-
-sub info {
- my ($hd) = @_;
- my $nb_sect = 32;
-
- #- build a default suitable partition table,
- #- checksum will be built when writing on disk.
- {
- magic => $magic,
- revision => $current_revision,
- headerSize => psizeof($main_format),
- myLBA => 1,
- alternateLBA => $hd->{totalsectors} - 1,
- firstUsableLBA => $nb_sect + 2,
- lastUsableLBA => $hd->{totalsectors} - $nb_sect - 2,
- guid => generate_guid(),
- partitionEntriesLBA => 2,
- nbPartitions => $nb_sect * 512 / psizeof($partitionEntry_format),
- partitionEntrySize => psizeof($partitionEntry_format),
- };
-}
-
-sub clear_raw {
- my ($hd) = @_;
- { raw => [], info => info($hd) };
-}
-
-1;
diff --git a/perl-install/partition_table/mac.pm b/perl-install/partition_table/mac.pm
deleted file mode 100644
index fc0310b74..000000000
--- a/perl-install/partition_table/mac.pm
+++ /dev/null
@@ -1,393 +0,0 @@
-package partition_table::mac; # $Id$
-
-use diagnostics;
-#use strict; - fixed other PPC code to comply, but program bails on empty partition table - sbenedict
-use vars qw(@ISA $freepart $bootstrap_part $macos_part);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use fs::type;
-use partition_table::raw;
-use partition_table;
-use c;
-
-my %_typeToDos = (
- "Apple_partition_map" => 0x401,
- "Apple_Bootstrap" => 0x401,
- "Apple_Driver43" => 0x401,
- "Apple_Driver_IOKit" => 0x401,
- "Apple_Patches" => 0x401,
- "Apple_HFS" => 0x402,
- "Apple_UNIX_SVR2" => 0x83,
- "Apple_UNIX_SVR2" => 0x183,
- "Apple_UNIX_SVR2" => 0x283,
- "Apple_UNIX_SVR2" => 0x383,
- "Apple_UNIX_SVR2" => 0x483,
- "Apple_Free" => 0x0,
-);
-
-
-my ($bz_format, $bz_fields) = list2kv(
- n => 'bzSig',
- n => 'bzBlkSize',
- N => 'bzBlkCnt',
- n => 'bzDevType',
- n => 'bzDevID',
- N => 'bzReserved',
- n => 'bzDrvrCnt',
-);
-$bz_format = join '', @$bz_format;
-
-
-my ($dd_format, $dd_fields) = list2kv(
- N => 'ddBlock',
- n => 'ddSize',
- n => 'ddType',
-);
-$dd_format = join '', @$dd_format;
-
-
-my ($p_format, $p_fields) = list2kv(
- n => 'pSig',
- n => 'pSigPad',
- N => 'pMapEntry',
- N => 'pPBlockStart',
- N => 'pPBlocks',
-
- a32 => 'pName',
- a32 => 'pType',
-
- N => 'pLBlockStart',
- N => 'pLBlocks',
- N => 'pFlags',
- N => 'pBootBlock',
- N => 'pBootBytes',
-
- N => 'pAddrs1',
- N => 'pAddrs2',
- N => 'pAddrs3',
- N => 'pAddrs4',
- N => 'pChecksum',
-
- a16 => 'pProcID',
- a128 => 'pBootArgs',
- a248 => 'pReserved',
-);
-$p_format = join '', @$p_format;
-
-my $magic = 0x4552;
-my $pmagic = 0x504D;
-
-sub first_usable_sector { 1 }
-
-sub adjustStart($$) {
- my ($hd, $part) = @_;
- my $end = $part->{start} + $part->{size};
- my $partmap_end = $hd->{primary}{raw}[0]{size};
-
- if ($part->{start} <= $partmap_end) {
- $part->{start} = $partmap_end + 1;
- $part->{size} = $end - $part->{start};
- }
-}
-
-sub adjustEnd($$) {
- my ($_hd, $_part) = @_;
-}
-
-sub read($$) {
- my ($hd, $sector) = @_;
- my $tmp;
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- c::lseek_sector(fileno($F), $sector, 0) or die "reading of partition in sector $sector failed";
-
- sysread $F, $tmp, psizeof($bz_format) or die "error while reading bz (Block Zero) in sector $sector";
- my %info; @info{@$bz_fields} = unpack $bz_format, $tmp;
-
- foreach (1 .. $info{bzDrvrCnt}) {
- sysread $F, $tmp, psizeof($dd_format) or die "error while reading driver data in sector $sector";
- my %dd; @dd{@$dd_fields} = unpack $dd_format, $tmp;
- push @{$info{ddMap}}, \%dd;
- }
-
- #- check magic number
- $info{bzSig} == $magic or die "bad magic number on disk $hd->{device}";
-
- my $numparts;
- c::lseek_sector(fileno($F), $sector, 516) or die "reading of partition in sector $sector failed";
- sysread $F, $tmp, 4 or die "error while reading partition info in sector $sector";
- $numparts = unpack "N", $tmp;
-
- my $partmapsize;
- c::lseek_sector(fileno($F), $sector, 524) or die "reading of partition in sector $sector failed";
- sysread $F, $tmp, 4 or die "error while reading partition info in sector $sector";
- $partmapsize = ((unpack "N", $tmp) * $info{bzBlkSize}) / psizeof($p_format);
-
- c::lseek_sector(fileno($F), $sector, 512) or die "reading of partition in sector $sector failed";
-
- my @pt;
- for (my $i = 0; $i < $partmapsize; $i++) {
- my $part;
- sysread $F, $part, psizeof($p_format) or die "error while reading partition info in sector $sector";
-
- push @pt, map {
- my %h; @h{@$p_fields} = unpack $p_format, $part;
- if ($i < $numparts && $h{pSig} eq $pmagic) {
-
- $h{size} = ($h{pPBlocks} * $info{bzBlkSize}) / 512;
- $h{start} = ($h{pPBlockStart} * $info{bzBlkSize}) / 512;
-
- if ($h{pType} =~ /^Apple_UNIX_SVR2/i) {
- $h{fs_type} = $h{pName} =~ /swap/i ? 'swap' : 'ext2';
- } elsif ($h{pType} =~ /^Apple_Free/i) {
- #- need to locate a 1MB partition to setup a bootstrap on
- if ($freepart && $freepart->{size} >= 1) {
- #- already found a suitable partition
- } else {
- $freepart = { start => $h{start}, size => $h{size}/2048, hd => $hd, part => "/dev/$hd->{device}" . ($i+1) };
- log::l("free apple partition found on drive /dev/$freepart->{hd}{device}, block $freepart->{start}, size $freepart->{size}");
- }
- $h{pt_type} = 0x0;
- $h{pName} = 'Extra';
- } elsif ($h{pType} =~ /^Apple_HFS/i) {
- fs::type::set_pt_type(\%h, 0x402);
- if (defined $macos_part) {
- #- swag at identifying MacOS - 1st HFS partition
- } else {
- $macos_part = "/dev/" . $hd->{device} . ($i+1);
- log::l("found MacOS at partition $macos_part");
- }
- } elsif ($h{pType} =~ /^Apple_Partition_Map/i) {
- $h{pt_type} = 0x401;
- $h{isMap} = 1;
- } elsif ($h{pType} =~ /^Apple_Bootstrap/i) {
- $h{pt_type} = 0x401;
- $h{isBoot} = 1;
- if (defined $bootstrap_part) {
- #found a bootstrap already - use it, but log the find
- log::l("found another apple bootstrap at partition /dev/$hd->{device}" . ($i+1));
- } else {
- $bootstrap_part = "/dev/" . $hd->{device} . ($i+1);
- log::l("found apple bootstrap at partition $bootstrap_part");
- }
- } else {
- $h{pt_type} = 0x401;
- $h{isDriver} = 1;
- }
-
- # Let's see if this partition is a driver.
- foreach (@{$info{ddMap}}) {
- $_->{ddBlock} == $h{pPBlockStart} and $h{isDriver} = 1;
- }
-
- }
- \%h;
- } [ $part ];
- }
-
- [ @pt ], \%info;
-}
-
-sub write($$$;$) {
- my ($hd, $sector, $pt, $info) = @_;
-
- #- handle testing for writing partition table on file only!
- my $F;
- if ($::testing) {
- my $file = "/tmp/partition_table_$hd->{device}";
- open $F, ">$file" or die "error opening test file $file";
- } else {
- $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno($F), $sector, 0) or return 0;
- }
-
- # Find the partition map.
- my @partstowrite;
- my $part = $pt->[0];
- defined $part->{isMap} or die "the first partition is not the partition map";
- push @partstowrite, $part;
-
- # Now go thru the partitions, sort and fill gaps.
- my $last;
- while ($part) {
- $last = $part;
- $part = &partition_table::next($hd, $part);
- $part or last;
-
- if ($last->{start} + $last->{size} < $part->{start}) {
- #There is a gap between partitions. Fill it and move on.
- push @partstowrite, {
- pt_type => 0x0,
- start => $last->{start} + $last->{size},
- size => $part->{start} - ($last->{start} + $last->{size}),
- };
- }
- push @partstowrite, $part;
- }
-
- # now, fill a gap at the end if there is one.
- if ($last->{start} + $last->{size} < $hd->{totalsectors}) {
- push @partstowrite, {
- pt_type => 0x0,
- start => $last->{start} + $last->{size},
- size => $hd->{totalsectors} - ($last->{start} + $last->{size}),
- };
- }
-
- # Since we did not create any new drivers, let's try and match up our driver records with out partitons and see if any are missing.
- $info->{bzDrvrCnt} = 0;
- my @ddstowrite;
- foreach my $dd (@{$info->{ddMap}}) {
- foreach (@partstowrite) {
- if ($dd->{ddBlock} == $_->{pPBlockStart}) {
- push @ddstowrite, $dd;
- $info->{bzDrvrCnt}++;
- last;
- }
- }
- }
-
- # Now let's write our first block.
- syswrite $F, pack($bz_format, @$info{@$bz_fields}), psizeof($bz_format) or return 0;
-
- # ...and now the driver information.
- foreach (@ddstowrite) {
- syswrite $F, pack($dd_format, @$_{@$dd_fields}), psizeof($dd_format) or return 0;
- }
- # zero the rest of the data in the first block.
- foreach (1 .. (494 - ((@ddstowrite) * 8))) {
- syswrite $F, "\0", 1 or return 0;
- }
- #c::lseek_sector(fileno($F), $sector, 512) or return 0;
- # Now, we iterate thru the partstowrite and write them.
- foreach (@partstowrite) {
- if (!defined $_->{pSig}) {
- # The values we need to write to disk are not defined. Let's make them up.
- $_->{pSig} = $pmagic;
- $_->{pSigPad} = 0;
- $_->{pPBlockStart} = ($_->{start} * 512) / $info->{bzBlkSize};
- $_->{pPBlocks} = ($_->{size} * 512) / $info->{bzBlkSize};
- $_->{pLBlockStart} = 0;
- $_->{pLBlocks} = $_->{pPBlocks};
- $_->{pBootBlock} = 0;
- $_->{pBootBytes} = 0;
- $_->{pAddrs1} = 0;
- $_->{pAddrs2} = 0;
- $_->{pAddrs3} = 0;
- $_->{pAddrs4} = 0;
- $_->{pChecksum} = 0;
- $_->{pProcID} = "\0";
- $_->{pBootArgs} = "\0";
- $_->{pReserved} = "\0";
-
- if ($_->{pt_type} == 0x402) {
- $_->{pType} = "Apple_HFS";
- $_->{pName} = "MacOS";
- $_->{pFlags} = 0x4000037F;
- } elsif ($_->{pt_type} == 0x401 && $_->{start} == 1) {
- $_->{pType} = "Apple_Partition_Map";
- $_->{pName} = "Apple";
- $_->{pFlags} = 0x33;
- } elsif ($_->{pt_type} == 0x401) {
- $_->{pType} = "Apple_Bootstrap";
- $_->{pName} = "bootstrap";
- $_->{pFlags} = 0x33;
- $_->{isBoot} = 1;
- log::l("writing a bootstrap at /dev/$_->{device}");
- $install_steps_interactive::new_bootstrap = 1 if !(defined $partition_table::mac::bootstrap_part);
- $bootstrap_part = "/dev/" . $_->{device};
- } elsif (isSwap($_)) {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "swap";
- $_->{pFlags} = 0x33;
- } elsif ($_->{fs_type} eq 'ext2') {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "Linux Native";
- $_->{pFlags} = 0x33;
- } elsif ($_->{fs_type} eq 'reiserfs') {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "Linux ReiserFS";
- $_->{pFlags} = 0x33;
- } elsif ($_->{fs_type} eq 'xfs') {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "Linux XFS";
- $_->{pFlags} = 0x33;
- } elsif ($_->{fs_type} eq 'jfs') {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "Linux JFS";
- $_->{pFlags} = 0x33;
- } elsif ($_->{fs_type} eq 'ext3') {
- $_->{pType} = "Apple_UNIX_SVR2";
- $_->{pName} = "Linux ext3";
- $_->{pFlags} = 0x33;
- } elsif ($_->{pt_type} == 0x0) {
- $_->{pType} = "Apple_Free";
- $_->{pName} = "Extra";
- $_->{pFlags} = 0x31;
- }
- }
- $_->{pMapEntry} = @partstowrite;
- syswrite $F, pack($p_format, @$_{@$p_fields}), psizeof($p_format) or return 0;
- }
-
- common::sync();
-
- 1;
-}
-
-sub info {
- my ($hd) = @_;
-
- # - Build the first block of the drive.
-
- my $info = {
- bzSig => $magic,
- bzBlkSize => 512,
- bzBlkCnt => $hd->{totalsectors},
- bzDevType => 0,
- bzDevID => 0,
- bzReserved => 0,
- bzDrvrCnt => 0,
- };
-
- $info;
-}
-
-sub clear_raw {
- my ($hd) = @_;
- my @oldraw = @{$hd->{primary}{raw}};
- my $pt = { raw => [ ({}) x 63 ], info => info($hd) };
-
- #- handle special case for partition 1 which is the partition map.
- $pt->{raw}[0] = {
- pt_type => 0x401,
- start => 1,
- size => 63,
- isMap => 1,
- };
-# $pt->{raw}[1] = {
-# pt_type => 0x0,
-# start => 64,
-# size => $hd->{totalsectors} - 64,
-# isMap => 0,
-# };
- push @{$pt->{normal}}, $pt->{raw}[0];
-# push @{$pt->{normal}}, $pt->{raw}[1];
-
- #- Recover any Apple Drivers, if any.
- my $i = 1;
- foreach (@oldraw) {
- if (defined $_->{isDriver}) {
- $pt->{raw}[$i] = $_;
- push @{$pt->{normal}}, $pt->{raw}[$i];
- $i++;
- }
- }
- @{$pt->{info}{ddMap}} = @{$hd->{primary}{info}{ddMap}};
-
- $pt;
-}
-
-1;
diff --git a/perl-install/partition_table/raw.pm b/perl-install/partition_table/raw.pm
deleted file mode 100644
index c290258f5..000000000
--- a/perl-install/partition_table/raw.pm
+++ /dev/null
@@ -1,254 +0,0 @@
-package partition_table::raw; # $Id$
-
-use diagnostics;
-use strict;
-
-use common;
-use devices;
-use detect_devices;
-use log;
-use c;
-
-my @MBR_signatures = (
-if_(arch() =~ /ppc/,
- (map { [ 'yaboot', 0, "PM", 0x200 * $_ + 0x10, "bootstrap\0" ] } 0 .. 61), #- "PM" is a Partition Map
- [ 'yaboot', 0x400, "BD", 0x424, "\011bootstrap" ], #- "BD" is a HFS filesystem
-),
- [ 'empty', 0, "\0\0\0\0" ],
- [ 'grub', 0, "\xEBG", 0x17d, "stage1 \0" ],
- [ 'grub', 0, "\xEBH", 0x17e, "stage1 \0" ],
- [ 'grub', 0, "\xEBH", 0x18a, "stage1 \0" ],
- [ 'grub', 0, "\xEBH", 0x181, "GRUB \0" ],
- [ 'lilo', 0x2, "LILO" ],
- [ 'lilo', 0x6, "LILO" ],
- [ 'lilo', 0x6 + 0x40, "LILO" ], #- when relocated in lilo's bsect_update(), variable "space" on paragraph boundary gives 0x40
- [ 'grub', 0x6, "GRUB" ],
- [ 'osbs', 0x2, "OSBS" ], #- http://www.prz.tu-berlin.de/~wolf/os-bs.html
- [ 'pqmagic', 0xef, "PQV" ],
- [ 'BootStar', 0x130, "BootStar:" ],
- [ 'DocsBoot', 0x148, 'DocsBoot' ],
- [ 'system_commander', 0x1ad, "SYSCMNDRSYS" ],
- [ 'Be Os', 0x24, 'Boot Manager' ],
- [ 'os2', 0, "\xFA\xB8\x30\x00", 0xfA, "OS/2" ],
- [ 'TimO', 0, 'IBM Thinkpad hibernation partition' ],
- [ 'dos', 0xa0, "\x25\x03\x4E\x02\xCD\x13" ],
- [ 'dos', 0xa0, "\x00\xB4\x08\xCD\x13\x72" ], #- nt2k's
- [ 'dos', 0x60, "\xBB\x00\x7C\xB8\x01\x02\x57\xCD\x13\x5F\x73\x0C\x33\xC0\xCD\x13" ], #- nt's
- [ 'dos', 0x70, "\x0C\x33\xC0\xCD\x13\x4F\x75\xED\xBE\xA3" ],
- [ 'freebsd', 0xC0, "\x00\x30\xE4\xCD\x16\xCD\x19\xBB\x07\x00\xB4" ],
- [ 'freebsd', 0x160, "\x6A\x10\x89\xE6\x48\x80\xCC\x40\xCD\x13" ],
- [ 'dummy', 0xAC, "\x0E\xB3\x07\x56\xCD\x10\x5E\xEB" ], #- caldera?
- [ 'ranish', 0x100, "\x6A\x10\xB4\x42\x8B\xF4\xCD\x13\x8B\xE5\x73" ],
- [ 'os2', 0x1c2, "\x0A" ],
- [ 'Acronis', 0, "\xE8\x12\x01" ],
-);
-
-sub typeOfMBR($) { typeFromMagic(devices::make($_[0]), @MBR_signatures) }
-sub typeOfMBR_($) { typeFromMagic($_[0], @MBR_signatures) }
-
-sub hasExtended { 0 }
-sub set_best_geometry_for_the_partition_table {}
-
-sub cylinder_size($) {
- my ($hd) = @_;
- $hd->{geom}{sectors} * $hd->{geom}{heads};
-}
-sub first_usable_sector { 1 }
-sub last_usable_sector {
- my ($hd) = @_;
- $hd->{totalsectors};
-}
-
-#- default method for starting a partition, only head size or twice
-#- is allowed for starting a partition after a cylinder boundarie.
-sub adjustStart($$) {
- my ($hd, $part) = @_;
- my $end = $part->{start} + $part->{size};
-
- $part->{start} = round_up($part->{start},
- $part->{start} % cylinder_size($hd) < 2 * $hd->{geom}{sectors} ?
- $hd->{geom}{sectors} : cylinder_size($hd));
- $part->{size} = $end - $part->{start};
- $part->{size} > 0 or die "adjustStart get a too small partition to handle correctly";
-}
-#- adjusting end to match a cylinder boundary, two methods are used and must
-#- match at the end, else something is wrong and nothing will be done on
-#- partition table.
-#- $end2 is computed by removing 2 (or only 1 if only 2 heads on drive) groups
-#- of sectors, this is necessary to handle extended partition where logical
-#- partition start after 1 (or 2 accepted) groups of sectors (typically 63).
-#- $end is floating (is not on cylinder boudary) so we have to choice a good
-#- candidate, $end1 or $end2 should always be good except $end1 for small
-#- partition size.
-sub adjustEnd($$) {
- my ($hd, $part) = @_;
- my $end = $part->{start} + $part->{size};
- $end > $hd->{geom}{cylinders} * cylinder_size($hd) && $end <= $hd->{totalsectors} and return;
- my $end1 = round_down($end, cylinder_size($hd));
- my $end2 = round_up($end - ($hd->{geom}{heads} > 2 ? 2 : 1) * $hd->{geom}{sectors}, cylinder_size($hd));
- $end2 <= $hd->{geom}{cylinders} * cylinder_size($hd) or die "adjustEnd go beyond end of device geometry ($end2 > $hd->{totalsectors})";
- $part->{size} = ($end1 - $part->{start} > cylinder_size($hd) ? $end1 : $end2) - $part->{start};
- $part->{size} > 0 or internal_error("adjustEnd get a too small partition to handle correctly");
-}
-
-sub compute_nb_cylinders {
- my ($geom, $totalsectors) = @_;
- $geom->{cylinders} = int $totalsectors / $geom->{heads} / $geom->{sectors};
-}
-
-sub keep_non_duplicates {
- my %l;
- $l{$_->[0]}++ foreach @_;
- map { @$_ } grep { $l{$_->[0]} == 1 } @_;
-}
-
-sub get_geometries {
- my (@hds) = @_;
-
- @hds = grep {
- if (my $h = get_geometry($_->{file})) {
- add2hash_($_, $h);
- 1;
- } else {
- log::l("An error occurred while getting the geometry of block device $_->{file}: $!");
- 0;
- }
- } @hds;
-
- my %id2hd = keep_non_duplicates(map {
- my $F = openit($_) or log::l("failed to open device $_->{device}");
- my $tmp;
- if ($F && c::lseek_sector(fileno($F), 0, 0x1b8) && sysread($F, $tmp, 4)) {
- [ sprintf('0x%08x', unpack('V', $tmp)), $_ ];
- } else {
- ();
- }
- } @hds);
-
-
- my %id2edd = keep_non_duplicates(map { [ chomp_(cat_("$_/mbr_signature")), $_ ] } glob("/sys/firmware/edd/int13_dev*"));
-
- log::l("id2hd: " . join(' ', map_each { "$::a=>$::b->{device}" } %id2hd));
- log::l("id2edd: " . join(' ', map_each { "$::a=>$::b" } %id2edd));
-
- foreach my $id (keys %id2hd) {
- my $hd = $id2hd{$id};
- $hd->{volume_id} = $id;
-
- if (my $edd_dir = $id2edd{$id}) {
- $hd->{bios_from_edd} = $1 if $edd_dir =~ /int13_dev(.*)/;
-
- require partition_table::dos;
- my $geom = partition_table::dos::geometry_from_edd($hd, $edd_dir);
- $hd->{geom} = $geom if $geom;
- }
- }
-
- @hds;
-}
-
-sub get_geometry {
- my ($dev) = @_;
- my $g = "";
-
- sysopen(my $F, $dev, 0) or return;
- ioctl($F, c::HDIO_GETGEO(), $g) or return;
- my %geom; @geom{qw(heads sectors cylinders start)} = unpack "CCSL", $g;
- $geom{totalcylinders} = $geom{cylinders};
-
- my $total;
- #- $geom{cylinders} is no good (only a ushort, that means less than 2^16 => at best 512MB)
- if ($total = c::total_sectors(fileno $F)) {
- compute_nb_cylinders(\%geom, $total);
- } else {
- $total = $geom{heads} * $geom{sectors} * $geom{cylinders};
- }
-
- { geom => \%geom, totalsectors => $total };
-}
-
-sub openit {
- my ($hd, $o_mode) = @_;
- my $F; sysopen($F, $hd->{file}, $o_mode || 0) && $F;
-}
-
-sub raw_removed {
- my ($_hd, $_raw) = @_;
-}
-sub can_raw_add {
- my ($hd) = @_;
- $_->{size} || $_->{pt_type} or return 1 foreach @{$hd->{primary}{raw}};
- 0;
-}
-sub raw_add {
- my ($_hd, $raw, $part) = @_;
-
- foreach (@$raw) {
- $_->{size} || $_->{pt_type} and next;
- $_ = $part;
- return;
- }
- die "raw_add: partition table already full";
-}
-
-sub default_type {
- my $type = arch() =~ /ia64/ ? 'gpt' : arch() eq "alpha" ? "bsd" : arch() =~ /^sparc/ ? "sun" : arch() eq "ppc" ? "mac" : "dos";
- #- override standard mac type on PPC for IBM machines to dos
- $type = "dos" if arch() =~ /ppc/ && detect_devices::get_mac_model() =~ /^IBM/;
- require "partition_table/$type.pm";
- "partition_table::$type";
-}
-
-sub zero_MBR {
- my ($hd) = @_;
- #- force the standard partition type for the architecture
- bless $hd, default_type();
- $hd->{primary} = $hd->clear_raw;
- delete $hd->{extended};
- if (is_xbox()) {
- my $part = { start => 1, size => 15632048, pt_type => 0x0bf, isFormatted => 1 };
- partition_table::dos::compute_CHS($hd, $part);
- $hd->{primary}{raw}[0] = $part;
- }
-}
-
-sub zero_MBR_and_dirty {
- my ($hd) = @_;
- my @parts = (partition_table::get_normal_parts($hd), if_($hd->{primary}{extended}, $hd->{primary}{extended}));
- partition_table::will_tell_kernel($hd, del => $_) foreach @parts;
- zero_MBR($hd);
-}
-
-#- ugly stuff needed mainly for Western Digital IDE drives
-#- try writing what we've just read, yells if it fails
-#- testing on last sector of head #0 (unused in 99% cases)
-#-
-#- return false if the device can not be written to (especially for Smartmedia)
-sub test_for_bad_drives {
- my ($hd) = @_;
-
- log::l("test_for_bad_drives($hd->{file})");
- my $sector = $hd->{geom}{sectors} - 1;
-
- sub error { die "$_[0] error: $_[1]" }
-
- my $F = openit($hd, $::testing ? 0 : 2) or error(openit($hd) ? 'write' : 'read', "can not open device");
-
- my $seek = sub {
- c::lseek_sector(fileno($F), $sector, 0) or error('read', "seeking to sector $sector failed");
- };
- my $tmp;
-
- &$seek; sysread $F, $tmp, $SECTORSIZE or error('read', "can not even read ($!)");
- return if $hd->{readonly} || $::testing;
- &$seek; syswrite $F, $tmp or error('write', "can not even write ($!)");
-
- my $tmp2;
- &$seek; sysread $F, $tmp2, $SECTORSIZE or die "test_for_bad_drives: can not even read again ($!)";
- $tmp eq $tmp2 or die
-N("Something bad is happening on your drive.
-A test to check the integrity of data has failed.
-It means writing anything on the disk will end up with random, corrupted data.");
-}
-
-1;
diff --git a/perl-install/partition_table/sun.pm b/perl-install/partition_table/sun.pm
deleted file mode 100644
index 54e734ca8..000000000
--- a/perl-install/partition_table/sun.pm
+++ /dev/null
@@ -1,202 +0,0 @@
-package partition_table::sun; # $Id$
-
-use diagnostics;
-use strict;
-use vars qw(@ISA);
-
-@ISA = qw(partition_table::raw);
-
-use common;
-use partition_table::raw;
-use partition_table;
-use fs::type;
-use c;
-
-my ($main_format, $main_fields) = list2kv(
- a128 => 'info',
- a14 => 'spare0',
- a32 => 'infos',
- a246 => 'spare1',
- n => 'rspeed',
- n => 'pcylcount',
- n => 'sparecyl',
- a4 => 'spare2',
- n => 'ilfact',
- n => 'ncyl',
- n => 'nacyl',
- n => 'ntrks',
- n => 'nsect',
- a4 => 'spare3',
- a64 => 'partitions',
- n => 'magic',
- n => 'csum',
-);
-$main_format = join '', @$main_format;
-
-my ($fields1, $fields2) = ([ qw(pt_type flags) ], [ qw(start_cylinder size) ]);
-my ($format1, $format2) = ("xCxC", "N2");
-my $magic = 0xDABE;
-my $nb_primary = 8;
-my $offset = 0;
-
-sub adjustStart($$) {
- my ($hd, $part) = @_;
- my $end = $part->{start} + $part->{size};
-
- #- since partition must always start on cylinders boundaries on sparc,
- #- note that if start sector is on the first cylinder, it is adjusted
- #- to 0 and it is valid, cylinder 0 bug is from bad define for sparc
- #- compilation of mke2fs combined with a blind kernel...
- $part->{start} = round_down($part->{start}, $hd->cylinder_size);
- $part->{size} = $end - $part->{start};
- $part->{size} = $hd->cylinder_size if $part->{size} <= 0;
-}
-sub adjustEnd($$) {
- my ($hd, $part) = @_;
- my $end = $part->{start} + $part->{size};
- my $end2 = round_up($end, $hd->cylinder_size);
- $end2 = $hd->{geom}{cylinders} * $hd->cylinder_size if $end2 > $hd->{geom}{cylinders} * $hd->cylinder_size;
- $part->{size} = $end2 - $part->{start};
-}
-
-#- compute crc checksum used for Sun Label partition, expect
-#- $tmp to be the 512 bytes buffer to be read/written to MBR.
-sub compute_crc($) {
- my ($tmp) = @_;
- my @l2b = unpack "n256", $tmp;
- my $crc = 0;
-
- $crc ^= $_ foreach @l2b;
-
- $crc;
-}
-
-sub read($$) {
- my ($hd, $sector) = @_;
- my $tmp;
-
- my $F = partition_table::raw::openit($hd) or die "failed to open device";
- c::lseek_sector(fileno($F), $sector, $offset) or die "reading of partition in sector $sector failed";
-
- sysread $F, $tmp, psizeof($main_format) or die "error while reading partition table in sector $sector";
- my %info; @info{@$main_fields} = unpack $main_format, $tmp;
-
- #- check magic number
- $info{magic} == $magic or die "bad magic number on disk $hd->{device}";
-
- #- check crc, csum contains the crc so result should be 0.
- compute_crc($tmp) == 0 or die "bad checksum";
-
- @{$hd->{geom}}{qw(cylinders heads sectors)} = @info{qw(ncyl ntrks nsect)};
-
- my @pt;
- my @infos_up = unpack $format1 x $nb_primary, $info{infos};
- my @partitions_up = unpack $format2 x $nb_primary, $info{partitions};
- foreach (0..$nb_primary-1) {
- my $h = { flag => $infos_up[1 + 2 * $_],
- start_cylinder => $partitions_up[2 * $_], size => $partitions_up[1 + 2 * $_] };
- fs::type::set_pt_type($h, $infos_up[2 * $_]);
- $h->{start} = $sector + $h->{start_cylinder} * $hd->cylinder_size;
- $h->{pt_type} && $h->{size} or $h->{$_} = 0 foreach keys %$h;
- push @pt, $h;
- }
-
-#- this code is completely broken by null char inside strings, it gets completely crazy :-)
-# my @pt = mapn {
-# my %h;
-# @h{@$fields1} = unpack $format1, $_[0];
-# @h{@$fields2} = unpack $format2, $_[1];
-# $h{start} = $sector + $h{start_cylinder} * $hd->cylinder_size();
-# $h{pt_type} && $h{size} or $h{$_} = 0 foreach keys %h;
-# \%h;
-# } [ grep { $_ } split /(.{$size1})/o, $info{infos} ], [ grep { $_ } split /(.{$size2})/o, $info{partitions} ];
-
- [ @pt ], \%info;
-}
-
-# write the partition table (and extended ones)
-# for each entry, it uses fields: start, size, pt_type, active
-sub write($$$;$) {
- my ($hd, $sector, $pt, $info) = @_;
-# my ($csize, $wdsize) = (0, 0);
-
- #- handle testing for writing partition table on file only!
- my $F;
- if ($::testing) {
- my $file = "/tmp/partition_table_$hd->{device}";
- open $F, ">$file" or die "error opening test file $file";
- } else {
- $F = partition_table::raw::openit($hd, 2) or die "error opening device $hd->{device} for writing";
- c::lseek_sector(fileno($F), $sector, $offset) or return 0;
- }
-
- ($info->{infos}, $info->{partitions}) = map { join '', @$_ } list2kv map {
- $_->{start} % $hd->cylinder_size == 0 or die "partition not at beginning of cylinder";
-# $csize += $_->{size} if $_->{pt_type} != 5;
-# $wdsize += $_->{size} if $_->{pt_type} == 5;
- $_->{flags} |= 0x10 if $_->{mntpoint} eq '/';
- $_->{flags} |= 0x01 if !isSwap($_);
- local $_->{start_cylinder} = $_->{start} / $hd->cylinder_size - $sector;
- pack($format1, @$_{@$fields1}), pack($format2, @$_{@$fields2});
- } @$pt;
-# $csize == $wdsize or die "partitions are not using whole disk space";
-
- #- compute the checksum by building the buffer to write and call compute_crc.
- #- set csum to 0 so compute_crc will give the right csum value.
- $info->{csum} = 0;
- $info->{csum} = compute_crc(pack($main_format, @$info{@$main_fields}));
-
- syswrite $F, pack($main_format, @$info{@$main_fields}), psizeof($main_format) or return 0;
-
- common::sync();
-
- 1;
-}
-
-sub info {
- my ($hd) = @_;
-
- #- take care of reduction of the number of cylinders, avoid loop of reduction!
- unless ($hd->{geom}{totalcylinders} > $hd->{geom}{cylinders}) {
- $hd->{geom}{totalcylinders} = $hd->{geom}{cylinders};
- $hd->{geom}{cylinders} -= 2;
-
- #- rebuild some constants according to number of cylinders.
- $hd->{totalsectors} = $hd->{geom}{heads} * $hd->{geom}{sectors} * $hd->{geom}{cylinders};
- }
-
- #- build a default suitable partition table,
- #- checksum will be built when writing on disk.
- #- note third partition is ALWAYS of type Whole disk.
- my $info = {
- info => "DiskDrake partition table",
- rspeed => 5400,
- pcylcount => $hd->{geom}{totalcylinders},
- sparecyl => 0,
- ilfact => 1,
- ncyl => $hd->{geom}{cylinders},
- nacyl => $hd->{geom}{totalcylinders} - $hd->{geom}{cylinders},
- ntrks => $hd->{geom}{heads},
- nsect => $hd->{geom}{sectors},
- magic => $magic,
- };
-
- $info;
-}
-
-sub clear_raw {
- my ($hd) = @_;
- my $pt = { raw => [ ({}) x $nb_primary ], info => info($hd) };
-
- #- handle special case for partition 2 which is whole disk.
- $pt->{raw}[2] = {
- pt_type => 5, #- the whole disk type.
- flags => 0,
- start_cylinder => 0,
- size => $hd->{geom}{cylinders} * $hd->cylinder_size,
- };
-
- $pt;
-}
-
-1;
diff --git a/perl-install/patch/9.1/hp.diff b/perl-install/patch/9.1/hp.diff
deleted file mode 100644
index befdf71f6..000000000
--- a/perl-install/patch/9.1/hp.diff
+++ /dev/null
@@ -1,137 +0,0 @@
-Index: install_steps_interactive.pm
-===================================================================
-RCS file: /cooker/gi/perl-install/install_steps_interactive.pm,v
-retrieving revision 1.810
-retrieving revision 1.812
-diff -u -p -r1.810 -r1.812
---- install_steps_interactive.pm 12 Mar 2003 15:34:46 -0000 1.810
-+++ install_steps_interactive.pm 20 Mar 2003 10:12:38 -0000 1.812
-@@ -1006,6 +1006,9 @@ sub summary {
- local $::expert = $::expert;
- require network::netconnect;
- network::netconnect::main($o->{prefix}, $o->{netcnx} ||= {}, $o->{netc}, $o->{mouse}, $o, $o->{intf}, 0, 0, 1);
-+ #- in case netcnx type is not updated.
-+ require network::network;
-+ network::network::probe_netcnx_type($o->{prefix}, $o->{netc}, $o->{intf}, $o->{netcnx});
- },
- b
- };
-
-Index: lang.pm
-===================================================================
-RCS file: /cooker/gi/perl-install/lang.pm,v
-retrieving revision 1.309
-retrieving revision 1.312
-diff -u -p -r1.309 -r1.312
---- lang.pm 11 Mar 2003 23:35:36 -0000 1.309
-+++ lang.pm 19 Mar 2003 17:06:18 -0000 1.312
-@@ -229,7 +229,7 @@ my %countries = (
- 'GU' => [ N_("Guam"), 'en_US', '4' ], #
- 'GW' => [ N_("Guinea-Bissau"), 'pt_PT', '3' ], #
- 'GY' => [ N_("Guyana"), 'en_US', '5' ], #
--'HK' => [ N_("Hong Kong"), 'zh_HK', '2' ],
-+'HK' => [ N_("China") . ' (' . N_("Hong Kong") . ')', 'zh_HK', '2' ],
- 'HM' => [ N_("Heard and McDonald Islands"), 'en_US', '4' ], #
- 'HN' => [ N_("Honduras"), 'es_HN', '5' ],
- 'HR' => [ N_("Croatia"), 'hr_HR', '1' ],
-@@ -742,6 +742,9 @@ sub l2pango_font {
-
- sub set {
- my ($lang, $translate_for_console) = @_;
-+
-+ #- disable Arabic in install as no (free) fonts are available.
-+ $lang eq 'ar' and $lang='en_US';
-
- exists $langs{$lang} or log::l("lang::set: trying to set to $lang but I don't know it!"), return;
-
-Index: standalone/service_harddrake
-===================================================================
-RCS file: /cooker/gi/perl-install/standalone/service_harddrake,v
-retrieving revision 1.34
-diff -u -p -r1.34 service_harddrake
---- standalone/service_harddrake 12 Mar 2003 10:55:35 -0000 1.34
-+++ standalone/service_harddrake 21 Mar 2003 16:06:52 -0000
-@@ -13,7 +13,7 @@ use modules;
- use Storable qw(store retrieve);
-
- my $invert_do_it = $ARGV[0] eq 'X11' ? 1 : 0;
--my ($hw_sysconfdir, $timeout) = ("/etc/sysconfig/harddrake2", $invert_do_it ? 600 : 5);
-+my ($hw_sysconfdir, $timeout) = ("/etc/sysconfig/harddrake2", $invert_do_it ? 600 : 25);
- my $last_boot_config = $hw_sysconfdir."/previous_hw";
-
- $last_boot_config .= '_X11' if $invert_do_it;
-Index: drakxtools.spec
-===================================================================
-RCS file: /cooker/gi/perl-install/drakxtools.spec,v
-retrieving revision 1.247
-diff -u -p -r1.247 drakxtools.spec
---- drakxtools.spec 16 Mar 2003 15:30:56 -0000 1.247
-+++ drakxtools.spec 21 Mar 2003 16:17:22 -0000
-@@ -1,7 +1,7 @@
- Summary: The drakxtools (XFdrake, diskdrake, keyboarddrake, mousedrake...)
- Name: drakxtools
- Version: 9.1
--Release: 26mdk
-+Release: 27mdk
- Url: http://www.mandrakelinux.com/en/drakx.php2
- Source0: %name-%version.tar.bz2
- License: GPL
-@@ -303,6 +303,9 @@ file /etc/sysconfig/harddrake2/previous_
- %config(noreplace) %_sysconfdir/logrotate.d/drakxtools-http
-
- %changelog
-+* Fri Mar 21 2003 Thierry Vignaud <tvignaud@mandrakesoft.com> 9.1-27mdk
-+- harddrake service: increase default timeout from 5 to 25 seconds
-+
- * Sun Mar 16 2003 Warly <warly@mandrakesoft.com> 9.1-25mdk
- - do a correct cvs up of all gi before (me sux)
-
-Index: install_steps_interactive.pm
-===================================================================
-RCS file: /cooker/gi/perl-install/install_steps_interactive.pm,v
-retrieving revision 1.810
-diff -u -p -r1.810 install_steps_interactive.pm
---- install_steps_interactive.pm 12 Mar 2003 15:34:46 -0000 1.810
-+++ install_steps_interactive.pm 21 Mar 2003 16:11:09 -0000
-@@ -894,7 +894,7 @@ sub summary {
- my $timezone_manually_set;
- push @l, {
- group => N("System"),
-- label => N("Country"),
-+ label => N("Country") . N(" / Region"),
- val => sub { lang::c2name($o->{locale}{country}) },
- clicked => sub {
- any::selectCountry($o, $o->{locale}) or return;
-Index: any.pm
-===================================================================
-RCS file: /cooker/gi/perl-install/any.pm,v
-retrieving revision 1.340
-diff -u -p -r1.340 any.pm
---- any.pm 13 Mar 2003 10:42:51 -0000 1.340
-+++ any.pm 21 Mar 2003 16:11:09 -0000
-@@ -688,7 +688,7 @@ sub selectCountry {
- my ($other, $ext_country);
- member($country, @best) or ($ext_country, $country) = ($country, $ext_country);
- $o->ask_from_(
-- { title => N("Country"),
-+ { title => N("Country") . N(" / Region"),
- messages => N("Please choose your country."),
- interactive_help_id => 'selectCountry',
- advanced_messages => N("Here is the full list of available countries"),
-Index: lang.pm
-===================================================================
-RCS file: /cooker/gi/perl-install/lang.pm,v
-retrieving revision 1.312
-diff -u -r1.312 lang.pm
---- lang.pm 19 Mar 2003 17:06:18 -0000 1.312
-+++ lang.pm 28 Mar 2003 15:24:41 -0000
-@@ -23,7 +23,8 @@
- my %langs = (
- 'af' => [ 'Afrikaans', 'Afrikaans', 'af_ZA', ' 3 ', 'iso-8859-1' ],
- 'am' => [ 'Amharic', 'ZZ emarNa', 'am_ET', ' 3 ', 'utf_am' ],
--'ar' => [ 'Arabic', 'AA Arabic', 'ar_EG', ' 23 ', 'utf_ar' ],
-+#- doesn't work well after install
-+#'ar' => [ 'Arabic', 'AA Arabic', 'ar_EG', ' 23 ', 'utf_ar' ],
- 'az' => [ 'Azeri (Latin)', 'Azerbaycanca', 'az_AZ', ' 2 ', 'utf_az' ],
- 'be' => [ 'Belarussian', 'Belaruskaya', 'be_BY', '1 ', 'cp1251' ],
- 'bg' => [ 'Bulgarian', 'Blgarski', 'bg_BG', '1 ', 'cp1251' ],
diff --git a/perl-install/patch/9.1/patch-detectSMP-K6.pl b/perl-install/patch/9.1/patch-detectSMP-K6.pl
deleted file mode 100644
index acf5821f6..000000000
--- a/perl-install/patch/9.1/patch-detectSMP-K6.pl
+++ /dev/null
@@ -1,5 +0,0 @@
-use detect_devices;
-package detect_devices;
-
-undef *hasSMP;
-*hasSMP = sub { 0 };
diff --git a/perl-install/patch/9.1/patch-loopback.pl b/perl-install/patch/9.1/patch-loopback.pl
deleted file mode 100644
index d0f4185b3..000000000
--- a/perl-install/patch/9.1/patch-loopback.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-use bootloader;
-package bootloader;
-log::l("PATCHING: fixing 9.1 aes.o missing in initrd for / on loopback");
-
-*mkinitrd = sub {
- my ($kernelVersion, $initrdImage) = @_;
-
- my $loop_boot = loopback::prepare_boot();
-
- modules::load('loop');
- if (!run_program::rooted($::prefix, "mkinitrd", "--with=aes", "-v", "-f", $initrdImage, "--ifneeded", $kernelVersion)) {
- unlink("$::prefix/$initrdImage");
- die "mkinitrd failed";
- }
- loopback::save_boot($loop_boot);
-
- -e "$::prefix/$initrdImage";
-};
diff --git a/perl-install/patch/patch-9.0-auto-inst-network-config.pl b/perl-install/patch/patch-9.0-auto-inst-network-config.pl
deleted file mode 100644
index f7cdc95ce..000000000
--- a/perl-install/patch/patch-9.0-auto-inst-network-config.pl
+++ /dev/null
@@ -1,8 +0,0 @@
-package install_steps;
-log::l("fixing network module probe & configuration in interactive auto_install");
-my $old_configureNetwork = \&configureNetwork;
-undef *configureNetwork;
-*configureNetwork = sub {
- modules::load_category('network/main|usb');
- &$old_configureNetwork;
-};
diff --git a/perl-install/patch/patch-IMPS2.pl b/perl-install/patch/patch-IMPS2.pl
deleted file mode 100644
index 488b6ac11..000000000
--- a/perl-install/patch/patch-IMPS2.pl
+++ /dev/null
@@ -1,9 +0,0 @@
-use install_gtk;
-package install_gtk;
-
-my $old_createXconf = \&createXconf;
-undef *createXconf;
-*createXconf = sub {
- symlink 'mouse', '/dev/cdrom';
- &$old_createXconf;
-}
diff --git a/perl-install/patch/patch-da.pl b/perl-install/patch/patch-da.pl
deleted file mode 100644
index 63a9f76d5..000000000
--- a/perl-install/patch/patch-da.pl
+++ /dev/null
@@ -1,6 +0,0 @@
-use common;
-
-log::l("PATCHING: installing mo");
-my $dir = '/usr/share/locale_special/da/LC_MESSAGES';
-mkdir_p($dir);
-system("gzip -dc /mnt/da_mo.gz > $dir/libDrakX.mo");
diff --git a/perl-install/patch/patch-nforce.pl b/perl-install/patch/patch-nforce.pl
deleted file mode 100644
index 35587ec75..000000000
--- a/perl-install/patch/patch-nforce.pl
+++ /dev/null
@@ -1,35 +0,0 @@
-use install_steps;
-use common;
-
-package install_steps;
-
-my $old_afterInstallPackages = \&afterInstallPackages;
-undef *afterInstallPackages;
-*afterInstallPackages = sub {
- &$old_afterInstallPackages;
-
- my ($o) = @_;
-
- # workaround nforce stuff.
- #
- # modules.pm uses /lib/modules/VERSION/modules*map to know which
- # sound drivers to use : this'll cause i810_audio to override
- # nvaudio since it exports the nvforce audio pci ids
- #
- # the right solution is to :
- #
- # - remove the nforce ids from i810_audio until the oss driver got
- # fixes implemented in alsa driver for nforce (snd-intel8x0.o)
- #
- # - ask nvidia to declare which pci ids they use and export them
- # for depmod :
- # MODULE_DEVICE_TABLE (pci, <name_of_the struct pci_device_id variable>);
-
- #- try to workaround nforce stuff.
- foreach (keys %{$o->{packages}{provides}{kernel}}) {
- my $p = $o->{packages}{depslist}[$_];
- my ($ext, $version, $release) = $p->name =~ /^kernel-([^\d\-]*)-?([^\-]*)\.([^\-\.]*)$/ or next;
- -s "$o->{prefix}/lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz" and
- run_program::rooted($o->{prefix}, "cp -f /lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz /lib/modules/$version-$release$ext/kernel/drivers/sound/i810_audio.o.gz");
- }
-};
diff --git a/perl-install/patch/patch-oem-9.0.pl b/perl-install/patch/patch-oem-9.0.pl
deleted file mode 100644
index 60c7422fe..000000000
--- a/perl-install/patch/patch-oem-9.0.pl
+++ /dev/null
@@ -1,52 +0,0 @@
-use install_steps;
-package install_steps;
-
-my $old_afterInstallPackages = \&afterInstallPackages;
-undef *afterInstallPackages;
-*afterInstallPackages = sub {
- &$old_afterInstallPackages;
-
- my ($o) = @_;
-
- #- update oem lilo image if it exists.
- if (-s "$o->{prefix}/boot/oem-message-graphic") {
- rename "$o->{prefix}/boot/message-graphic", "$o->{prefix}/boot/message-graphic.mdkgiorig";
- rename "$o->{prefix}/boot/oem-message-graphic", "$o->{prefix}/boot/message-graphic";
- }
-
- #- update background image if it exists for common environment.
- if (-s "$o->{prefix}/usr/share/mdk/oem-background.png") {
- if (-e "$o->{prefix}/usr/share/mdk/backgrounds/default.png") {
- rename "$o->{prefix}/usr/share/mdk/backgrounds/default.png",
- "$o->{prefix}/usr/share/mdk/backgrounds/default.png.mdkgiorig";
- rename "$o->{prefix}/usr/share/mdk/oem-background.png", "$o->{prefix}/usr/share/mdk/backgrounds/default.png";
- } else {
- #- KDE desktop background.
- if (-e "$o->{prefix}/usr/share/config/kdesktoprc") {
- update_gnomekderc("$o->{prefix}/usr/share/config/kdesktoprc", "Desktop0",
- MultiWallpaperMode => "NoMulti",
- Wallpaper => "/usr/share/mdk/oem-background.png",
- WallpaperMode => "Scaled",
- );
- }
- #- GNOME desktop background.
- if (-e "$o->{prefix}/etc/gnome/config/Background") {
- update_gnomekderc("$o->{prefix}/etc/gnome/config/Background", "Default",
- wallpaper => "/usr/share/mdk/oem-background.png",
- wallpaperAlign => "3",
- );
- }
- }
- }
-
- #- try to workaround nforce stuff.
- foreach (keys %{$o->{packages}{provides}{kernel}}) {
- my $p = $o->{packages}{depslist}[$_];
- my ($ext, $version, $release) = $p->name =~ /^kernel-([^\d\-]*)-?([^\-]*)\.([^\-\.]*)$/ or next;
- -s "$o->{prefix}/lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz" and
- run_program::rooted($o->{prefix}, "cp -f /lib/modules/$version-$release$ext/kernel/drivers/sound/nvaudio.o.gz /lib/modules/$version-$release$ext/kernel/drivers/sound/i810_audio.o.gz");
- }
-
- #- try to check if pcitable and others have been built correctly.
- -e "$o->{prefix}/usr/share/ldetect-lst/pcitable" or run_program::rooted($o->{prefix}, "/usr/sbin/update-ldetect-lst");
-};
diff --git a/perl-install/patch/patch-oem-hp.pl b/perl-install/patch/patch-oem-hp.pl
deleted file mode 100644
index 0a5b0b51e..000000000
--- a/perl-install/patch/patch-oem-hp.pl
+++ /dev/null
@@ -1,323 +0,0 @@
-use modules;
-package modules;
-my $old_load_raw = \&load_raw;
-undef *load_raw;
-*load_raw = sub {
- &$old_load_raw;
-
- my @l = map { my ($i, @i) = @$_; [ $i, \@i ] } grep { $_->[0] !~ /ignore/ } @_;
- foreach (@l) {
- if ($_->[0] eq 'ehci-hcd') {
- add_alias('usb-interface1', $_->[0]);
- }
- }
-
- if (get_alias("usb-interface") || get_alias("usb-interface1")) {
- unless (-e "/proc/bus/usb/devices") {
- require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs');
- #- ensure keyboard is working, the kernel must do the job the BIOS was doing
- sleep 4;
- load_multi("usbkbd", "keybdev") if detect_devices::usbKeyboards();
- }
- }
-};
-
-my $old_load = \&load;
-undef *load;
-*load = sub {
- &$old_load;
-
- #- hack to get back usb-interface (even if already loaded by stage1)
- #- NOTE load_multi is not used for that so not overloaded to fix that too.
- if ($_[0] =~ /usb-[uo]hci/ && !get_alias("usb-interface")) {
- add_alias('usb-interface', $_[0]);
- } elsif ($_[0] eq 'ehci-hcd' && !get_alias("usb-interface1")) {
- add_alias('usb-interface1', $_[0]);
- }
-
- if (get_alias("usb-interface") || get_alias("usb-interface1")) {
- unless (-e "/proc/bus/usb/devices") {
- require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs');
- #- ensure keyboard is working, the kernel must do the job the BIOS was doing
- sleep 4;
- load_multi("usbkbd", "keybdev") if detect_devices::usbKeyboards();
- }
- }
-};
-
-#- ensure it is loaded using this patch.
-$::noauto or modules::load_thiskind("usb");
-sleep 2;
-
-use install_steps;
-package install_steps;
-
-my $old_beforeInstallPackages = \&beforeInstallPackages;
-undef *beforeInstallPackages;
-*beforeInstallPackages = sub {
- &$old_beforeInstallPackages;
-
- my ($o) = @_;
- mkdir "$o->{prefix}$_" foreach qw(/boot /usr /usr/share /usr/share/mdk);
- install_any::getAndSaveFile("Mandrake/base/oem-message-graphic", "$o->{prefix}/boot/oem-message-graphic");
- install_any::getAndSaveFile("Mandrake/base/oem-background.png", "$o->{prefix}/usr/share/mdk/oem-background.png");
-};
-
-my $old_afterInstallPackages = \&afterInstallPackages;
-undef *afterInstallPackages;
-*afterInstallPackages = sub {
- &$old_afterInstallPackages;
-
- my ($o) = @_;
-
- #- lilo image.
- rename "$o->{prefix}/boot/lilo-graphic/message", "$o->{prefix}/boot/lilo-graphic/message.orig";
- system "chroot", $o->{prefix}, "cp", "-f", "/boot/oem-message-graphic", "/boot/lilo-graphic/message";
-
- #- KDE desktop background.
- if (-e "$o->{prefix}/usr/share/config/kdesktoprc") {
- update_gnomekderc("$o->{prefix}/usr/share/config/kdesktoprc", "Desktop0",
- MultiWallpaperMode => "NoMulti",
- Wallpaper => "/usr/share/mdk/oem-background.png",
- WallpaperMode => "Scaled",
- );
- }
- #- GNOME desktop background.
- if (-e "$o->{prefix}/etc/gnome/config/Background") {
- update_gnomekderc("$o->{prefix}/etc/gnome/config/Background", "Default",
- wallpaper => "/usr/share/mdk/oem-background.png",
- wallpaperAlign => "3",
- );
- }
-
- #- make sure no error can be forwarded, test staroffice installed and OpenOffice.org,
- #- remove the first if the second is installed.
- eval {
- if (!$o->{isUpgrade} && -e "$o->{prefix}/usr/lib/openoffice/program/soffice.bin" && grep { -e "$o->{prefix}/usr/lib/office60_$_/program/soffice.bin" } qw(de en es fr it)) {
- require run_program;
- log::l("removing OpenOffice.org as staroffice is installed");
- run_program::rooted($o->{prefix}, "rpm", "-e", "OpenOffice.org");
- }
- };
-};
-
-use install_any;
-package install_any;
-
-undef *copy_advertising;
-*copy_advertising = sub {
- my ($o) = @_;
-
- return if $::rootwidth < 800;
-
- my $f;
- my $source_dir = "Mandrake/share/advertising";
- foreach ("." . $o->{lang}, "." . substr($o->{lang},0,2), '') {
- $f = getFile("$source_dir$_/list") or next;
- $source_dir = "$source_dir$_";
- }
- if (my @files = <$f>) {
- my $dir = "$o->{prefix}/tmp/drakx-images";
- mkdir $dir;
- unlink glob_("$dir/*");
- foreach (@files) {
- chomp;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/\.png/\.pl/;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/\.pl/_icon\.png/;
- getAndSaveFile("$source_dir/$_", "$dir/$_");
- s/_icon\.png/\.png/;
- }
- @advertising_images = map { $_ && -e "$dir/$_" ? ("$dir/$_") : () } @files;
- }
-};
-
-#undef *allowNVIDIA_rpms;
-#*allowNVIDIA_rpms = sub {
-# my ($packages) = @_;
-# require pkgs;
-# if (pkgs::packageByName($packages, "NVIDIA_GLX")) {
-# #- at this point, we can allow using NVIDIA 3D acceleration packages.
-# my @rpms;
-# foreach (keys %{$packages->{names}}) {
-# my ($ext, $version, $release) = /kernel[^-]*(-smp|-enterprise|-secure)?(?:-(\d.*?)\.(\d+\.\d+mdk))?$/ or next;
-# my $p = pkgs::packageByName($packages, $_);
-# pkgs::packageSelectedOrInstalled($p) or next;
-# $version or ($version, $release) = (pkgs::packageVersion($p), pkgs::packageRelease($p));
-# my $name = "NVIDIA_kernel-$version-$release$ext";
-# pkgs::packageByName($packages, $name) or return;
-# push @rpms, $name;
-# }
-# @rpms > 0 or return;
-# return [ @rpms, "NVIDIA_GLX" ];
-# }
-#};
-
-use detect_devices;
-package detect_devices;
-
-undef *usbMice;
-*usbMice = sub { grep { ($_->{media_type} =~ /\|Mouse/ || $_->{driver} =~ /Mouse:USB/) &&
- $_->{driver} !~ /Tablet:wacom/} usb_probe() };
-
-use Xconfigurator;
-package Xconfigurator;
-
-undef *cardConfigurationAuto;
-*cardConfigurationAuto = sub {
- my @cards;
- if (my @c = grep { $_->{driver} =~ /(Card|Server):/ } detect_devices::probeall()) {
- @c >= 2 && $c[0]{description} eq $c[1]{description} && $c[0]{description} =~ /82830 CGC/ and shift @c;
- foreach my $i (0..$#c) {
- local $_ = $c[$i]->{driver};
- my $card = { identifier => ($c[$i]{description} . (@c > 1 && " $i")) };
- $card->{type} = $1 if /Card:(.*)/;
- $card->{server} = $1 if /Server:(.*)/;
- $card->{driver} = $1 if /Driver:(.*)/;
- $card->{flags}{needVideoRam} = /86c368|S3 Inc|Tseng.*ET6\d00/;
- $card->{busid} = "PCI:$c[$i]{pci_bus}:$c[$i]{pci_device}:$c[$i]{pci_function}";
- push @{$card->{lines}}, @{$lines{$card->{identifier}} || []};
- push @cards, $card;
- }
- }
- #- take a default on sparc if nothing has been found.
- if (arch() =~ /^sparc/ && !@cards) {
- log::l("Using probe with /proc/fb as nothing has been found!");
- local $_ = cat_("/proc/fb");
- if (/Mach64/) { push @cards, { server => "Mach64" } }
- elsif (/Permedia2/) { push @cards, { server => "3DLabs" } }
- else { push @cards, { server => "Sun24" } }
- }
- #- special case for dual head card using only one busid.
- @cards = map { my $dup = $_->{identifier} =~ /MGA G[45]50/ ? 2 : 1;
- if ($dup > 1) {
- my @result;
- my $orig = $_;
- foreach (1..$dup) {
- my $card = {};
- add2hash($card, $orig);
- push @result, $card;
- }
- @result;
- } else {
- ($_);
- }
- } @cards;
- #- make sure no type are already used, duplicate both screen
- #- and rename type (because used as id).
- if (@cards > 1) {
- my $card = 1;
- foreach (@cards) {
- updateCardAccordingName($_, $_->{type}) if $_->{type};
- $_->{type} = "$_->{type} $card";
- $card++;
- }
- }
- #- in case of only one cards, remove all busid reference, this will avoid
- #- need of change of it if the card is moved.
- #- on many PPC machines, card is on-board, busid is important, leave?
- @cards == 1 and delete $cards[0]{busid} if arch() !~ /ppc/;
- @cards;
-};
-
-use mouse;
-package mouse;
-undef *detect;
-*detect = sub {
- if (arch() =~ /^sparc/) {
- return fullname2mouse("sunmouse|Sun - Mouse");
- }
- if (arch() eq "ppc") {
- return fullname2mouse(detect_devices::hasMousePS2("usbmouse") ?
- "USB|1 button" :
- #- No need to search for an ADB mouse. If I did, the PPC kernel would
- #- find one whether or not I had one installed! So.. default to it.
- "busmouse|1 button");
- }
-
- my @wacom;
- my $fast_mouse_probe = sub {
- my $auxmouse = detect_devices::hasMousePS2("psaux") && fullname2mouse("PS/2|Standard", unsafe => 1);
-
- if (modules::get_alias("usb-interface")) {
- if (my (@l) = detect_devices::usbMice()) {
- log::l("found usb mouse $_->{driver} $_->{description} ($_->{type})") foreach @l;
- eval { modules::load($_) foreach qw(hid mousedev usbmouse) };
- if (!$@ && detect_devices::tryOpen("usbmouse")) {
- my $mouse = fullname2mouse($l[0]{driver} =~ /Mouse:(.*)/ ? $1 : "USB|Generic");
- $auxmouse and $mouse->{auxmouse} = $auxmouse; #- for laptop, we kept the PS/2 as secondary (symbolic).
- return $mouse;
- }
- eval { modules::unload($_) foreach qw(usbmouse mousedev hid) };
- }
- }
- $auxmouse;
- };
-
- if (modules::get_alias("usb-interface")) {
- my $keep_mouse;
- if (my (@l) = detect_devices::usbWacom()) {
- log::l("found usb wacom $_->{driver} $_->{description} ($_->{type})") foreach @l;
- eval { modules::load("wacom"); modules::load("evdev"); };
- unless ($@) {
- foreach (0..$#l) {
- detect_devices::tryOpen("input/event$_") and $keep_mouse = 1, push @wacom, "input/event$_";
- }
- }
- $keep_mouse or eval { modules::unload("evdev"); modules::unload("wacom"); };
- }
- }
-
- #- at this level, not all possible mice are detected so avoid invoking serial_probe
- #- which takes a while for its probe.
- if ($::isStandalone) {
- my $mouse = $fast_mouse_probe->();
- $mouse and return ($mouse, @wacom);
- }
-
- #- probe serial device to make sure a wacom has been detected.
- eval { modules::load("serial") };
- my ($r, @serial_wacom) = mouseconfig(); push @wacom, @serial_wacom;
-
- if (!$::isStandalone) {
- my $mouse = $fast_mouse_probe->();
- $r && $mouse and $r->{auxmouse} = $mouse; #- we kept the auxilliary mouse as PS/2.
- $r and return ($r, @wacom);
- $mouse and return ($mouse, @wacom);
- } else {
- $r and return ($r, @wacom);
- }
-
- #- in case only a wacom has been found, assume an inexistant mouse (necessary).
- @wacom and return { CLASS => 'MOUSE',
- nbuttons => 2,
- device => "nothing",
- MOUSETYPE => "Microsoft",
- XMOUSETYPE => "Microsoft"}, @wacom;
-
- if (!modules::get_alias("usb-interface") && detect_devices::is_a_recent_computer() && $::isInstall && !$::noauto) {
- #- special case for non detected usb interface on a box with no mouse.
- #- we *must* find out if there really is no usb, otherwise the box may
- #- not be accessible via the keyboard (if the keyboard is USB)
- #- the only way to know this is to make a full pci probe
- modules::load_thiskind("usb", '', 'unsafe');
- if (my $mouse = $fast_mouse_probe->()) {
- return $mouse;
- }
- }
-
- if (modules::get_alias("usb-interface")) {
- eval { modules::load($_) foreach qw(hid mousedev usbmouse) };
- sleep 1;
- if (!$@ && detect_devices::tryOpen("usbmouse")) {
- #- defaults to generic USB mouse on usbmouse.
- log::l("defaulting to usb generic mouse");
- return fullname2mouse("USB|Generic", unsafe => 1);
- }
- }
-
- #- defaults to generic serial mouse on ttyS0.
- #- Oops? using return let return a hash ref, if not using it, it return a list directly :-)
- return fullname2mouse("serial|Generic 2 Button Mouse", unsafe => 1);
-};
diff --git a/perl-install/patch/patch-raidtab.pl b/perl-install/patch/patch-raidtab.pl
deleted file mode 100644
index de03a1b2a..000000000
--- a/perl-install/patch/patch-raidtab.pl
+++ /dev/null
@@ -1,37 +0,0 @@
-use detect_devices;
-package detect_devices;
-log::l("PATCHING");
-
-*raidAutoStartRaidtab = sub {
- my (@parts) = @_;
- log::l("patched raidAutoStartRaidtab");
- $::isInstall or return;
- require raid;
- #- faking a raidtab, it seems to be working :-)))
- #- (choosing any inactive md)
- raid::inactivate_all();
- foreach (@parts) {
- my ($nb) = grep { !raid::is_active("md$_") } 0..7;
- output("/tmp/raidtab", "raiddev /dev/md$nb\n device " . devices::make($_->{device}) . "\n");
- run_program::run('raidstart', '-c', "/tmp/raidtab", devices::make("md$nb"));
- }
- unlink "/tmp/raidtab";
-};
-
-use raid;
-package raid;
-
-*prepare_prefixed = sub {
- my ($raids, $prefix) = @_;
-
- log::l("patched prepare_prefixed");
-
- $raids or return;
-
- &write($raids, "/etc/raidtab") if ! -e "/etc/raidtab";
-
- eval { cp_af("/etc/raidtab", "$prefix/etc/raidtab") };
- foreach (grep { $_ } @$raids) {
- devices::make("$prefix/dev/$_->{device}") foreach @{$_->{disks}};
- }
-};
diff --git a/perl-install/patch/patch-rh9-mdk10.pl b/perl-install/patch/patch-rh9-mdk10.pl
deleted file mode 100644
index a56c9497b..000000000
--- a/perl-install/patch/patch-rh9-mdk10.pl
+++ /dev/null
@@ -1,116 +0,0 @@
-
-warn "PATCHING\n";
-log::l("PATCHING\n");
-
-use install_any;
-
-undef *find_root_parts;
-*find_root_parts = sub {
- my ($fstab, $prefix) = @_;
- map {
- my $handle = any::inspect($_, $prefix);
- my $s = $handle && cat_("$handle->{dir}/etc/redhat-release");
- if ($s) {
- chomp($s);
- $s =~ s/\s+for\s+\S+//;
- log::l("find_root_parts found $_->{device}: $s");
- { release => $s, part => $_ };
- } else { () }
- } @$fstab;
-};
-
-
-use pkgs;
-package pkgs;
-
-my $old_compare_pkg = \&URPM::Package::compare_pkg;
-undef *URPM::Package::compare_pkg;
-*URPM::Package::compare_pkg = sub {
- my ($lpkg, $rpkg) = @_;
- my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg->release =~ /mdk$/ ? 1 : 0);
- if ($c) {
- my $lpkg_ver = $lpkg->version . '-' . $lpkg->release;
- my $rpkg_ver = $rpkg->version . '-' . $rpkg->release;
- log::l($lpkg->name . ' ' . $rpkg->name . ': prefering ' . ($c == 1 ? "$lpkg_ver over $rpkg_ver" : "$rpkg_ver over $lpkg_ver"));
- return $c;
- }
- &$old_compare_pkg;
-};
-
-my $old_compare = \&URPM::Package::compare;
-undef *URPM::Package::compare;
-*URPM::Package::compare = sub {
- my ($lpkg, $rpkg_ver) = @_;
- my $c = ($lpkg->release =~ /mdk$/ ? 1 : 0) - ($rpkg_ver =~ /mdk$/ ? 1 : 0);
- if ($c) {
- my $lpkg_ver = $lpkg->version . '-' . $lpkg->release;
- log::l($lpkg->name . ' ' . ': prefering ' . ($c == 1 ? "$lpkg_ver over $rpkg_ver" : "$rpkg_ver over $lpkg_ver"));
- return $c;
- }
- &$old_compare;
-};
-
-use install2;
-package install2;
-my $old_choosePackages = \&choosePackages;
-undef *choosePackages;
-*choosePackages = sub {
- my @should_not_be_dirs = qw(/usr/X11R6/lib/X11/xkb /usr/share/locale/zh_TW/LC_TIME /usr/include/GL);
- my @should_be_dirs = qw(/etc/X11/xkb);
- foreach (@should_not_be_dirs) {
- my $f = "$::prefix$_";
- rm_rf($f) if !-l $f && -d $f;
- }
- foreach (@should_be_dirs) {
- my $f = "$::prefix$_";
- rm_rf($f) if -l $f || !-d $f;
- }
- unlink "$::prefix/etc/X11/XF86Config";
- unlink "$::prefix/etc/X11/XF86Config-4";
-
- &$old_choosePackages;
-};
-
-use fs;
-package fs;
-
-my $old = \&read_fstab;
-undef *read_fstab;
-*read_fstab = sub {
- my @l = &$old;
-
- my %label2device = map {
- my $dev = devices::make($_->{device});
- if (my ($label) = `tune2fs -l $dev 2>/dev/null` =~ /volume name:\s*(\S+)/) {
- log::l("device $_->{device} has label $label");
- $label => $_->{device};
- } else {
- ();
- }
- } fsedit::read_proc_partitions([]);
-
- foreach (@l) {
- my ($label) = ($_->{device_LABEL} || $_->{device}) =~ /^LABEL=(.*)/ or next;
- if ($label2device{$label}) {
- $_->{device} = $label2device{$label};
- } else {
- log::l("can't find label $label");
- }
- }
-
- @l;
-};
-
-use any;
-package any;
-
-undef *fix_broken_alternatives;
-*fix_broken_alternatives = {
- #- fix bad update-alternatives that may occurs after upgrade (and sometimes for install too).
- -d "$::prefix/etc/alternatives" or return;
-
- foreach (all("$::prefix/etc/alternatives")) {
- log::l("setting alternative $_");
- run_program::rooted($::prefix, 'update-alternatives', '--auto', $_);
- }
-};
diff --git a/perl-install/patch/patch-stage2-updatemodules.pl b/perl-install/patch/patch-stage2-updatemodules.pl
deleted file mode 100644
index a62e83e46..000000000
--- a/perl-install/patch/patch-stage2-updatemodules.pl
+++ /dev/null
@@ -1,12 +0,0 @@
-# put this file in install/patch.pl, and boot with auto_install=install/patch.pl
-# put modules in install/modules and list them below
-
-my @modules = map { "install/modules/$_.ko" } 'tg3';
-
-foreach my $remote (@modules) {
- my $local = '/tmp/' . basename($remote);
-
- install_any::getAndSaveFile($remote, $local);
-
- run_program::run(["/usr/bin/insmod_", "insmod"], "-f", $local);
-}
diff --git a/perl-install/patch/rpmsrate.oem-9.0-openoffice b/perl-install/patch/rpmsrate.oem-9.0-openoffice
deleted file mode 100644
index a8d40cd0f..000000000
--- a/perl-install/patch/rpmsrate.oem-9.0-openoffice
+++ /dev/null
@@ -1,551 +0,0 @@
-LSB
- 5 lsb
-
-GRAPHICAL_DESKTOP
- 4 WindowMaker icewm
- 3 Epplets WMRack blackbox enlightenment ethemes icepref
- wmakerconf xlockmore xfce
- 2 wmnet
- 1 lesstif-mwm xbanner
-
-GNOME
- 5 gnome-panel nautilus gnome-control-center metacity gnome-terminal yelp
- nautilus-gtkhtml
- 4 gnome-tiles gdm gnome-applets gnome-user-docs gtk-themes file-roller
- gnome-network gnome-utils xlockmore gtk-engines2
- gnome-vfs-extras gconf-editor
- 3 gnome-pilot
- 2 bug-buddy
-
-KDE
- 5 kdebase kdebase-nsplugins
- 5 kde-i18n-af kde-i18n-az kde-i18n-bg kde-i18n-ca kde-i18n-cs kde-i18n-da kde-i18n-de kde-i18n-el kde-i18n-en_GB kde-i18n-eo kde-i18n-es kde-i18n-et kde-i18n-fi kde-i18n-fr kde-i18n-he kde-i18n-hu kde-i18n-is kde-i18n-it kde-i18n-ja kde-i18n-ko kde-i18n-lt kde-i18n-lv kde-i18n-nl kde-i18n-no kde-i18n-no_NY kde-i18n-pl kde-i18n-pt kde-i18n-pt_BR kde-i18n-ro kde-i18n-ru kde-i18n-sk kde-i18n-sl kde-i18n-sr kde-i18n-sv kde-i18n-ta kde-i18n-th kde-i18n-tr kde-i18n-uk kde-i18n-zh_CN.GB2312 kde-i18n-zh_TW.Big5
- 4 kdeaddutils kdeadmin kdegraphics kdemultimedia kdenetwork krozat
- kdepim kdetoys kdeutils quanta
-
- 2 kdesdk kdoc
-
-VIDEO
- 4 xine-ui xine-oss xine-xv powerdvd RealPlayer
- 3 nist xanim xmms-smpeg xmovie
- 2 mtv mtv-fullscreen-extension
- 1 bcast mpeg2_movie
-TV
- 4 zapping xawtv gatos
- 4 KDE kwintv
-
-OFFICE
- 4 staroffice-de staroffice-en staroffice-es staroffice-fr staroffice-it
- acroread acroread-nppdf
- OpenOffice.org OpenOffice.org-l10n-ca OpenOffice.org-l10n-cs OpenOffice.org-l10n-da OpenOffice.org-l10n-de OpenOffice.org-l10n-el OpenOffice.org-l10n-en OpenOffice.org-l10n-es OpenOffice.org-l10n-fr OpenOffice.org-l10n-it OpenOffice.org-l10n-ja OpenOffice.org-l10n-ko OpenOffice.org-l10n-nl OpenOffice.org-l10n-pl OpenOffice.org-l10n-pt OpenOffice.org-l10n-ru OpenOffice.org-l10n-sv OpenOffice.org-l10n-tr
- 4 cbb gaddr xpdf moneydance
- 3 wv ical pyDict
- 2 units lyx
- GNOME
- 4 gnome-pim gnome-pim-conduits gnumeric mrproject
- 3 dia gnome-pilot-conduits Guppi
- 2 ggv gnucash
- KDE
- 3 koffice
- 3 koffice-i18n-az koffice-i18n-bg koffice-i18n-cs koffice-i18n-da koffice-i18n-de koffice-i18n-en_GB koffice-i18n-eo koffice-i18n-es koffice-i18n-et koffice-i18n-fr koffice-i18n-hu koffice-i18n-it koffice-i18n-ja koffice-i18n-lt koffice-i18n-mt koffice-i18n-nl koffice-i18n-no koffice-i18n-no_NY koffice-i18n-pl koffice-i18n-pt koffice-i18n-pt_BR koffice-i18n-ro koffice-i18n-ru koffice-i18n-sk koffice-i18n-sl koffice-i18n-sv koffice-i18n-ta koffice-i18n-tr koffice-i18n-uk
- 2 klyx
-
-SOUND
- 5 sox
- 4 aumix
- 4 KDE xmms-arts
-
-AUDIO
- 4 grip xmms xmms-skins
- 4 GNOME gnome-audio gnome-media
- 4 KDE kdelibs-sound
- 4 3D xmms-mesa
- 3 cdp cdparanoia cdrecord-cdda2wav space_sounds timidity-instruments xmms-esd
- xmms-kjofol-skins xmms-more-vis-plugins
- 3 GNOME gnome-audio-extra
- 2 mokmod mp3info mpg123 playmidi playmidi-X11 xmms-mikmod
-
- 4 HW"Rio 500" rio500 grio500
-
-ACCESSIBILITY
- 2 gtkeyboard
-
-PUBLISHING
- 5 enscript ghostscript-module-X
- 4 ghostscript-utils gv psutils texinfo nlpr
- 2 latex2html jadetex tetex-afm tetex-dvips tetex-latex tetex-xdvi tetex-latex-arab tetex-latex-heb docbook-dtd31-sgml
- 2 BOOKS tetex-doc
- 1 docbook-style-dsssl openjade sgml-tools ghostscript-module-SVGALIB cttex
- 1 BOOKS docbook-style-dsssl-doc
-
- 5 CUPS
- cups-drivers xpp
- 5 CUPS || LPR foomatic
- 1 CUPS hpoj
-
-SHELLS
- 3 zsh
- 3 BOOKS bash-doc zsh-doc
- 2 eshell pdksh tcsh
- 1 bash1
-
-SCIENCES
- 5 3D openuniverse
- 4 gnuplot gtkgraphh
- 3 xlispstat HDF
- 2 mathplot octave
- 1 xoscope
-
-EDITORS
- 4 emacs-X11
- 3 GXedit vim-X11 yudit
- 2 nedit cooledit emacs-tramp joe emacs-leim jed-xjed xemacs xemacs-extras xemacs-info
- 1 auctex emacs-el jed xemacs-el emacs-nox xwpe xwpe-X11
- GNOME
- 4 gedit
-
-TEXT_TOOLS
- 5 words
- 4 groff patch recode rgrep
- 4 ispell-af ispell-br ispell-ca ispell-cs ispell-da ispell-de ispell-el ispell-en ispell-eo ispell-es ispell-fi ispell-fr ispell-ga ispell-gd ispell-gv ispell-id ispell-it ispell-nl ispell-no ispell-pl ispell-pt ispell-pt_BR ispell-ro ispell-ru ispell-sk ispell-sl ispell-sv
- 3 ed
- 2 groff-gxditview lout
- BOOKS
- 3 gawk-doc
- 1 lout-doc
-
-COMMUNICATIONS
- 4 efax
- 3 jpilot pilot-link
- 2 hylafax-server hylafax-client dip
- 2 lrzsz mgetty mgetty-contrib mgetty-sendfax mgetty-viewfax mgetty-voice minicom
- 1 jpilot-Mail jpilot-syncmal statserial tkbabel
-
-TERMINALS
- 5 open xterm
- 4 screen kon2
- 3 Eterm vlock
- 1 aterm x3270
-
- 4 KDE ktelnet
- 4 GNOME gnome-telnet
- 4 LOCALES"ja" kterm
-
-NETWORKING_CHAT
- 3 talk ytalk
-NETWORKING_CHAT_SERVER
- 4 jabber
- 3 talk-server
-
-NETWORKING_FILE_TRANSFER
- 5 lftp mirrordir rsync
- 4 gftp rdist
- 3 fmirror ncftp tftp
- 3 GNOME dpsftp
- 2 uucp
-
-NETWORKING_FILE_TRANSFER_SERVER
- 4 proftpd bwbserver_linux
- 2 wu-ftpd anonftp
-
-NETWORKING_LDAP_SERVER
- 4 openldap directory_administrator
-
-NETWORKING_INSTANT_MESSAGING
- 4 licq
- 3 everybuddy licq-console licq-rms
- GNOME
- 5 aspell-br aspell-ca aspell-cs aspell-da aspell-de aspell-de_CH aspell-en aspell-en_CA aspell-en_GB aspell-eo aspell-es aspell-fr aspell-it aspell-nl aspell-no aspell-pl aspell-sv
- 4 gnomeicu gabber gaim
- 3 gtk+licq
-
-NETWORKING_IRC
- 3 BitchX mozilla-irc
- 3 GNOME xchat
- 2 irssi
- 1 eggdrop
-
-NETWORKING_FIREWALLING_SERVER
- 5 iproute2 routed iptables
- 3 prelude
- 1 portsentry
-
-NETWORKING_GROUPWARE_SERVER
- 4 phpgroupware bwbserver_linux
-
-NETWORKING_MAIL
- 5 mailx metamail
- 4 faces mozilla-mail evolution
- 3 fetchmail urlview mutt
- 3 !GNOME !KDE xmailbox
- 2 FaxMail comsat elm faces-xface
- 1 exmh sylpheed fetchmail-daemon fetchmailconf
-NETWORKING_MAIL_SERVER
- 5 postfix
- 4 mailman
-
-NETWORKING_NEWS
- 5 GNOME pan
- 2 slrn tin trn
- 1 slrn-pull xrn
-NETWORKING_NEWS_SERVER
- 4 inn
- 3 inews
-
-NETWORKING_OTHER
- 2 finger fwhois ucd-snmp-utils htdig macutils
-NETWORKING_OTHER_SERVER
- 3 dhcp-server gated timed ntp
-
- 3 intimed mcserv nscd imap pidentd
- rdate bootparamd
- cleanfeed ucd-snmp leafnode
- cvsweb nut-server
- XFree86-Xvfb XFree86-Xnest
- 2 heartbeat diald finger-server mars-nwe
-
-NIS
- 5 ypbind
-NIS_SERVER
- 5 ypserv
-
-NETWORKING_REMOTE_ACCESS
- 5 openssh-clients telnet telnet-client-krb5
- KDE lisa
- 4 traceroute rfbdrake
- 3 vnc
- 2 rsh
- 2 BOOKS vnc-doc
-NETWORKING_REMOTE_ACCESS_SERVER
- 5 openssh-server
- 4 rfbdrake
- 2 vnc-server
- 1 telnet-server-krb5 rsh-server
-
-NETWORKING_DNS
- 4 bind-utils
-NETWORKING_DNS_SERVER
- 5 bind
- 4 caching-nameserver
- 1 nslint
-
-NETWORKING_FILE
- 4 samba-client nfs-utils-clients
- 2 arkeia-gui arkeia-client arkeia-arkc
- 2 GNOME gnomba gtm
- 2 autofs
- 1 am-utils
-NETWORKING_FILE_SERVER
- 5 nfs-utils
- 4 samba-server bwbserver_linux
- 3 BOOKS samba-doc
- 2 arkeia-server samba-winbind
- 3 squid squidGuard
-
-NETWORKING_WWW
- 3 lynx
- 4 !LOCALES"eu" netscape-communicator netscape-plugins
- 4 wget links mozilla Flashplayer crossover-plugin-demo j2re
- 4 GNOME
- screem
- !LOCALES"eu" galeon
- 3 plugger opera bluefish
-NETWORKING_WWW_SERVER
- 5 apache apache-mod_perl mod_ssl mod_php
- 4 apache-suexec
- bwbserver_linux
- 4 BOOKS apache-manual
- 3 php-dba_gdbm_db2 php-gd php-imap php-ldap php-manual php-mysql php-oracle
- php-pgsql php-readline php mod_sxnet auth_ldap HTML-Embperl
- 2 ApacheJServ
- 1 Zope Zope-core Zope-pcgi Zope-zserver
-
-GRAPHICS
- 4 ImageMagick giftrans gimp gphoto gphoto2 qiv ac3d
- 3 gimp-data-extras gqview sketch xwpick xli
- 2 gif2png gimp-perl xpcd xfig xpcd-gimp gd-utils cameleo
- 1 libgr-progs libungif-progs qcad transfig xpaint xmorph
- 1 3D Mesa-demos
- GNOME
- 4 gnome-iconedit
- 3 ee
-
-ARCHIVING
- 5 dump ncompress sharutils unzip
- 4 gtkzip zip
- 3 unarj unstuff mt-st
- 2 taper
- 1 lha
- GNOME
- 4 gnozip
- 3 gtktalog
-
-BURNER
- 5 mkisofs cdrecord
- 4 GNOME gnome-toaster gcombust
- 4 X xcdroast
- 2 X eroaster
- DEVELOPMENT
- 3 cdrecord-devel
-
-SCANNER
- 5 sane-frontends
- 4 gimp
- 4 xsane
-
-PHOTO
- 4 gphoto gphoto2
- 3 gnomemeeting openmcu
-
-DATABASES
- 5 postgresql
- 3 MySQL-client MySQL-shared
- DATABASES_SERVER
- 4 postgresql-server
- 3 MySQL
- 3 postgresql-perl postgresql-python
- 2 postgresql-jdbc postgresql-tk postgresql-odbc postgresql-tcl postgresql-test
- DEVELOPMENT
- 4 perl-Mysql
- 3 postgresql-devel
- 1 MySQL-bench MySQL-devel
-
-GAMES
- 4 sin-demo
- 4 clanbomber freeciv lbreakout2 toppler frozen-bubble
- 3 shogo-demo
- 3 cxhextris rocksndiamonds powermanga mures methane
- 2 Maelstrom pingus ltris penguin-command pysol xtrojka bunnies xpilot trophy xboard xgammon xkobo xpat2 xpuzzles xsoldier xfishtank
- 1 7colors xrally fortune-mod nil
- GNOME
- 4 gnome-games
- 3 gnome-chess
- 2 3D gtulpas
- 1 gtkgo
- DEVELOPMENT
- 2 gnomes-games-devel
- KDE
- 4 kdegames
- DEVELOPMENT
- 2 kdegames-devel
- 3D
- 4 csmash armagetron
- !HW"Riva.*128" chromium tuxracer
-
- 3 !HW"Riva.*128" !HW"Rage X[CL]" !HW"Rage Mobility (?:P\/M|L) " !HW"3D Rage (?:LT|Pro)"
- bzflag
-
-DEVELOPMENT
- 5 autoconf automake m4 make
- 3 autoconf2.5
- 1 tmake pmake pmake-customs
-
- 3 libtool binutils ltrace gdb gcc
- 2 gperf cdecl cproto indent ElectricFence
- 1 egcs glibc-profile xxgdb
-
- 4 gcc-c++ libstdc++5-devel libstdc++-devel
- 2 libsigc++-examples
- 1 egcs-c++
-
- 3 bison flex
- 2 byacc
-
- 2 doxygen C++2LaTeX
-
- 3 jikes kaffe
- 1 gcc-java
-
- 5 cvs rcs
- 2 diffstat tkcvs
-
- 3 swig
-
- 4 python veepee tkinter
- 3 libpython2.2-devel python-devel python-imaging pygtk-glarea pygtk pygtk-libglade rpm-python
-
- 4 perl perl-Term-Readline-Gnu perl-libnet perl-libwww-perl perl-devel
- 3 perl-DBI perl-Digest-MD5 perl-IO-stringy perl-PDL perl-Parse-RecDescent
- perl-GTK-GLArea perl-Tk perlftlib eperl perl-URI perl-DB_File
- perl-Data-ShowTable perl-HTML-Parser perl-HTML-SimpleParse perl-MIME-Base64
- perl-MIME-tools perl-MP3-Info perl-MailTools perl-Msgcat
-
- 4 rpm-build
- 3 rpmlint rpm-devel
- 3 kernel-source
-
- 2 gcc-g77 nasm dev86
- 1 gcc-objc
-
- 2 teyjus gprolog ocaml umb-scheme mawk guile clisp SmallEiffel p2c
- ghc ghc-prof happy haskell-GTK haskell-GTK-devel hugs98 mercury swi-prolog
- ruby-extensions ruby-gtk ruby
-
- 4 gettext-devel
-
- BOOKS
- 2 pam-doc python-docs slang-doc kernel-doc nasm-doc qt2-doc ruby-doc lkmpg
-
- KDE
- 3 kdevelop
- 3 kdebase-devel kdegraphics-devel kdelibs-devel kdelibs-sound-devel
- kdemultimedia-devel kdenetwork-devel
- 1 kdesupport-devel kdeaddutils-devel koffice-devel
-
- GNOME
- 4 perl-GTK-Glade perl-GTK-Gnome
- 3 memprof glade gnome-guile pygnome libgnomeui2_0-devel gnome-guile-devel
- gnome-pim-devel gob
- 2 pygnome-applet pygnome-capplet pygnome-libglade rep-gtk-gnome
- libgnomemm-1.2_9-devel gnomemm-devel libgnome-pilot1-devel gnome-pilot-devel glademm
- 1 gnucash-devel rep-gtk-libglade
-
- DEVELOPMENT_OTHER
- 2 ImageMagick-devel Mesa-common-devel libXaw3d7-devel Xaw3d-devel detect-devel
- libgd2-devel gd-devel p2c-devel libgmp3-devel gmp-devel libguile9-devel guile-devel libgr-devel libjpeg62-devel libjpeg-devel libpng3-devel libpng-devel
- libtermcap2-devel libtermcap-devel libtiff3-devel libtiff-devel libungif4-devel libungif-devel libxml2-devel libxml-devel
- linuxconf-devel libslang1-devel slang-devel sox-devel zlib1-devel zlib-devel XFree86-devel dev86-devel
- libgdk-pixbuf2-devel gdk-pixbuf-devel libgimp1.2_1-devel gimp-devel libgpm1-devel gpm-devel kudzu-devel libghttp1-devel libghttp-devel libgtop2.0_0-devel libgtop-devel
- libmikmod2-devel libmikmod-devel librep9-devel librep-devel libunicode-devel popt-devel pwdb-devel t1lib1-devel t1lib-devel
- ucd-snmp-devel mpeg_lib-devel WindowMaker-devel aalib-devel libadns1-devel adns-devel
- alsa-lib-devel audiofile-devel libcups1-devel cups-devel e2fsprogs-devel egcs-objc-devel
- libg-wrap2-devel g-wrap-devel gkrellm-devel ibtk libPropList-devel licq-devel openldap-devel
- libparted1.6-devel parted-devel pciutils-devel pilot-link-devel svgalib-devel
- recode-devel libaspell10-devel aspell-devel cracklib-devel faces-devel fnlib-devel
- freetype-devel libgtk+mdk0.1_6-devel gtk+mdk-devel libgtkglarea5-devel gtkglarea-devel XFree86-static-libs imap-devel
- php-devel libpth14-devel pth-devel libsane1-devel sane-devel swig-devel xdelta-devel isapnptools-devel
- libpango1.0_0-devel pango-devel readline-devel
-
-MONITORING
- 5 procinfo psacct
- 5 PCMCIA apmd
- 4 lsof swatch tcpdump traceroute
- 3 iplog arpwatch lslk nmap nmap-frontend procps-X11 xcpustate xsysinfo
- 2 cfengine gkrellm gps rusers mon xosview 3D xtraceroute
- 1 logcheck bonnie
- GNOME
- 4 gnome-system-monitor
-
-FILE_TOOLS
- 5 file gnupg mkxauth mtools slocate
- 4 symlinks
- 3 dosfstools draksync mc tree
- 2 git gentoo sfm xwc FileRunner
- 1 xdelta
-
-WEBMIN
- 3 webmin
-
-WIZARDS
- 5 drakwizard
-
-CONFIG
- 4 linuxconf linuxconf-lang-cs linuxconf-lang-de linuxconf-lang-es linuxconf-lang-fi linuxconf-lang-fr linuxconf-lang-hu linuxconf-lang-it linuxconf-lang-ko linuxconf-lang-no linuxconf-lang-pt linuxconf-lang-ro linuxconf-lang-sk linuxconf-lang-sv linuxconf-lang-zh
- 4 X gnome-linuxconf
- 3 ipvsadm quota usernet nut
- 2 gfcc control-panel adjtimex isicom xinput timeconfig samba-swat
- 1 ipxutils
-
-BOOKS
- 3 mandrake_doc-de mandrake_doc-en mandrake_doc-es mandrake_doc-fr mandrake_doc-it mandrake_doc-ru
-
-X
- 5 XFree86 rxvt XFree86-75dpi-fonts urw-fonts
- 5 icewm-light
-
- 4 vim-enhanced
- 4 gurpmi rpmdrake drakconf userdrake fonts-ttf-decoratives fonts-ttf-west_european
- mandrake-mime menudrake mandrake_desk
- mdkonline drakfirsttime gtk-engines bootsplash
- 4 LOCALES"ja" || LOCALES"ko" || LOCALES"zh" rxvt-CJK
-
- 3 XFree86-100dpi-fonts draksync drakprofile
- 3 USB usbview
- 2 LOCALES"ja" || LOCALES"ko" || LOCALES"zh" jmcce
- 2 tksysv imlib-cfgeditor
- 1 DrakeLogo Mesa xtoolwait X11R6-contrib
-
- GNOME
- 3 gnorpm
-
- 5 xcin Chinput xa+cv xvnkb FreeWnn ami kinput2-wnn4
-
- 2 app-defaults-be app-defaults-cs app-defaults-ga app-defaults-ru app-defaults-th app-defaults-uk
-
- 5 CHARSET"iso-8859-13" fonts-type1-baltic
- LOCALES"ru" || LOCALES"uk" XFree86-cyrillic-fonts
- LOCALES"he" fonts-hebrew-elmar
- LOCALES"hy" fonts-ttf-armenian
- LOCALES"ja" fonts-ttf-japanese
- LOCALES"ko" fonts-ttf-korean
- LOCALES"ta" fonts-ttf-tscii fonts-bitmap-tscii
- LOCALES"th" fonts-ttf-thai
- LOCALES"zh_CN" || LOCALES"zh" fonts-ttf-gb2312
- LOCALES"zh_TW" || LOCALES"zh" taipeifonts fonts-ttf-big5
-
-DOCS
- 5 man info man-pages
-
-SYSTEM
- 5 at MAKEDEV eject ldetect devfsd
- locales iputils urpmi cpio msec tmpwatch
-
- 5 HIGH_SECURITY libsafe kernel-secure-2.4.19.16mdk kernel-secure
- 5 BIGMEM kernel-enterprise-2.4.19.16mdk kernel-enterprise
- 5 SMP kernel-smp-2.4.19.16mdk kernel-smp
- 5 PCMCIA pcmcia-cs
- 5 USB hotplug
-
- 5 HW"nForce.*(?:Audio|Network)"
- NVIDIA_nforce-2.4.19-16mdk
- BIGMEM NVIDIA_nforce-2.4.19-16mdk-enterprise
-
- 4 ftp-client-krb5 gpm hexedit strace sudo grub procmail gnupg
-
- 3 bc
- 2 sndconfig kernel-utils acpid adns audiofile freeswan awesfx fbset vlan-utils
- 1 fdutils genromfs mailcap pinfo
-
- BOOKS
- 5 man-pages-cs man-pages-da man-pages-de man-pages-es man-pages-fr man-pages-hu man-pages-id man-pages-it man-pages-ja man-pages-ko man-pages-pl man-pages-ru man-pages-zh
- 3 grub-doc lilo-doc
- howto-html-de howto-html-el howto-html-en howto-html-es howto-html-fr howto-html-hr howto-html-hu howto-html-id howto-html-it howto-html-ja howto-html-ko howto-html-nl howto-html-pl howto-html-ro howto-html-sl howto-html-sv howto-html-zh
-
- 4 NIS yp-tools
- 3 PCMCIA irda-utils
- 3 USB usbutils
-
- 4 LOCALES"ar" || LOCALES"fa" || LOCALES"he" || LOCALES"yi" acon
- 3 LOCALES"zh" zh-autoconvert
-
-EMULATORS
- 3 wine
- 2 BasiliskII-jit
- 1 BasiliskII
- 2 xdosemu
- 1 xmame xmess
-
-INSTALL
- NOCOPY
- 5 kernel-2.4.19.16mdk kernel-2.4.19.16mdk kernel kernel-smp-2.4.19.16mdk kernel-smp-2.4.19.16mdk kernel-smp kernel-enterprise-2.4.19.16mdk kernel-enterprise-2.4.19.16mdk kernel-enterprise
- raidtools lvm reiserfsprogs jfsprogs xfsprogs
- alsa alsa-utils
- 4 XFree86
-
- 5 pptp-adsl dhcpcd dhcpxd dhcp-client isdn4net isdn-light isdn4k-utils ibod rp-pppoe pump wireless-tools speedtouch
- ppp nfs-utils-clients
- autologin ntp cups-drivers samba ncpfs hpoj ucd-snmp libptal0
- libhpojip0 libsnmp0 xojpanel libsane-hpoj0
- ipchains shorewall iptables printer-utils rlpr samba-client
- xpp pdq printer-testpages nmap scli net-tools
- cups lpr foomatic gimpprint
- nc sndconfig
- ImageMagick ghostscript printer-filters mpage a2ps ppdfilt libppd1 gpr groff libgimpprint1 numlock curl
- sane-backends sane-frontends xsane xsane-gimp mtools mtoolsfm
- hotplug dev ypbind speedtouch_mgmt
- 4 XFree86-server XFree86-FBDev
-# 4 XFree86-SVGA XFree86-server XFree86-Mach64 XFree86-FBDev
-# XFree86-glide-module Device3Dfx Glide_V3-DRI Glide_V5 Mesa
-# 3 XFree86-S3 XFree86-S3V XFree86-VGA16
-# 2 XFree86-8514 XFree86-AGX XFree86-I128 XFree86-Mach32 XFree86-Mach8 XFree86-Mono XFree86-P9000 XFree86-W32
-# 1 XFree86-3DLabs XFree86-Sun XFree86-SunMono XFree86-Sun24
diff --git a/perl-install/patch/rpmsrate.oem-9.0-staroffice b/perl-install/patch/rpmsrate.oem-9.0-staroffice
deleted file mode 100644
index 179e19d06..000000000
--- a/perl-install/patch/rpmsrate.oem-9.0-staroffice
+++ /dev/null
@@ -1,552 +0,0 @@
-LSB
- 5 lsb
-
-GRAPHICAL_DESKTOP
- 4 icewm
- 3 WindowMaker
- 3 Epplets WMRack blackbox enlightenment ethemes icepref
- wmakerconf xlockmore xfce
- 2 wmnet
- 1 lesstif-mwm xbanner
-
-GNOME
- 5 gnome-panel nautilus gnome-control-center metacity gnome-terminal yelp
- nautilus-gtkhtml
- 4 gnome-tiles gdm gnome-applets gnome-user-docs gtk-themes file-roller
- gnome-network gnome-utils xlockmore gtk-engines2
- gnome-vfs-extras gconf-editor
- 3 gnome-pilot
- 2 bug-buddy
-
-KDE
- 5 kdebase kdebase-nsplugins
- 5 kde-i18n-af kde-i18n-az kde-i18n-bg kde-i18n-ca kde-i18n-cs kde-i18n-da kde-i18n-de kde-i18n-el kde-i18n-en_GB kde-i18n-eo kde-i18n-es kde-i18n-et kde-i18n-fi kde-i18n-fr kde-i18n-he kde-i18n-hu kde-i18n-is kde-i18n-it kde-i18n-ja kde-i18n-ko kde-i18n-lt kde-i18n-lv kde-i18n-nl kde-i18n-no kde-i18n-no_NY kde-i18n-pl kde-i18n-pt kde-i18n-pt_BR kde-i18n-ro kde-i18n-ru kde-i18n-sk kde-i18n-sl kde-i18n-sr kde-i18n-sv kde-i18n-ta kde-i18n-th kde-i18n-tr kde-i18n-uk kde-i18n-zh_CN.GB2312 kde-i18n-zh_TW.Big5
- 4 kdeaddutils kdeadmin kdegraphics kdemultimedia kdenetwork krozat
- kdepim kdetoys kdeutils quanta
-
- 2 kdesdk kdoc
-
-VIDEO
- 4 xine-ui xine-oss xine-xv powerdvd RealPlayer
- 3 nist xanim xmms-smpeg xmovie
- 2 mtv mtv-fullscreen-extension
- 1 bcast mpeg2_movie
-TV
- 4 zapping xawtv gatos
- 4 KDE kwintv
-
-OFFICE
- 4 staroffice-de staroffice-en staroffice-es staroffice-fr staroffice-it
- acroread acroread-nppdf
- 3 OpenOffice.org OpenOffice.org-l10n-ca OpenOffice.org-l10n-cs OpenOffice.org-l10n-da OpenOffice.org-l10n-de OpenOffice.org-l10n-el OpenOffice.org-l10n-en OpenOffice.org-l10n-es OpenOffice.org-l10n-fr OpenOffice.org-l10n-it OpenOffice.org-l10n-ja OpenOffice.org-l10n-ko OpenOffice.org-l10n-nl OpenOffice.org-l10n-pl OpenOffice.org-l10n-pt OpenOffice.org-l10n-ru OpenOffice.org-l10n-sv OpenOffice.org-l10n-tr
- 4 cbb gaddr xpdf moneydance
- 3 wv ical pyDict
- 2 units lyx
- GNOME
- 4 gnome-pim gnome-pim-conduits gnumeric mrproject
- 3 dia gnome-pilot-conduits Guppi
- 2 ggv gnucash
- KDE
- 3 koffice
- 3 koffice-i18n-az koffice-i18n-bg koffice-i18n-cs koffice-i18n-da koffice-i18n-de koffice-i18n-en_GB koffice-i18n-eo koffice-i18n-es koffice-i18n-et koffice-i18n-fr koffice-i18n-hu koffice-i18n-it koffice-i18n-ja koffice-i18n-lt koffice-i18n-mt koffice-i18n-nl koffice-i18n-no koffice-i18n-no_NY koffice-i18n-pl koffice-i18n-pt koffice-i18n-pt_BR koffice-i18n-ro koffice-i18n-ru koffice-i18n-sk koffice-i18n-sl koffice-i18n-sv koffice-i18n-ta koffice-i18n-tr koffice-i18n-uk
- 2 klyx
-
-SOUND
- 5 sox
- 4 aumix
- 4 KDE xmms-arts
-
-AUDIO
- 4 grip xmms xmms-skins
- 4 GNOME gnome-audio gnome-media
- 4 KDE kdelibs-sound
- 4 3D xmms-mesa
- 3 cdp cdparanoia cdrecord-cdda2wav space_sounds timidity-instruments xmms-esd
- xmms-kjofol-skins xmms-more-vis-plugins
- 3 GNOME gnome-audio-extra
- 2 mokmod mp3info mpg123 playmidi playmidi-X11 xmms-mikmod
-
- 4 HW"Rio 500" rio500 grio500
-
-ACCESSIBILITY
- 2 gtkeyboard
-
-PUBLISHING
- 5 enscript ghostscript-module-X
- 4 ghostscript-utils gv psutils texinfo nlpr
- 2 latex2html jadetex tetex-afm tetex-dvips tetex-latex tetex-xdvi tetex-latex-arab tetex-latex-heb docbook-dtd31-sgml
- 2 BOOKS tetex-doc
- 1 docbook-style-dsssl openjade sgml-tools ghostscript-module-SVGALIB cttex
- 1 BOOKS docbook-style-dsssl-doc
-
- 5 CUPS
- cups-drivers xpp
- 5 CUPS || LPR foomatic
- 1 CUPS hpoj
-
-SHELLS
- 3 zsh
- 3 BOOKS bash-doc zsh-doc
- 2 eshell pdksh tcsh
- 1 bash1
-
-SCIENCES
- 5 3D openuniverse
- 4 gnuplot gtkgraphh
- 3 xlispstat HDF
- 2 mathplot octave
- 1 xoscope
-
-EDITORS
- 4 emacs-X11
- 3 GXedit vim-X11 yudit
- 2 nedit cooledit emacs-tramp joe emacs-leim jed-xjed xemacs xemacs-extras xemacs-info
- 1 auctex emacs-el jed xemacs-el emacs-nox xwpe xwpe-X11
- GNOME
- 4 gedit
-
-TEXT_TOOLS
- 5 words
- 4 groff patch recode rgrep
- 4 ispell-af ispell-br ispell-ca ispell-cs ispell-da ispell-de ispell-el ispell-en ispell-eo ispell-es ispell-fi ispell-fr ispell-ga ispell-gd ispell-gv ispell-id ispell-it ispell-nl ispell-no ispell-pl ispell-pt ispell-pt_BR ispell-ro ispell-ru ispell-sk ispell-sl ispell-sv
- 3 ed
- 2 groff-gxditview lout
- BOOKS
- 3 gawk-doc
- 1 lout-doc
-
-COMMUNICATIONS
- 4 efax
- 3 jpilot pilot-link
- 2 hylafax-server hylafax-client dip
- 2 lrzsz mgetty mgetty-contrib mgetty-sendfax mgetty-viewfax mgetty-voice minicom
- 1 jpilot-Mail jpilot-syncmal statserial tkbabel
-
-TERMINALS
- 5 open xterm
- 4 screen kon2
- 3 Eterm vlock
- 1 aterm x3270
-
- 4 KDE ktelnet
- 4 GNOME gnome-telnet
- 4 LOCALES"ja" kterm
-
-NETWORKING_CHAT
- 3 talk ytalk
-NETWORKING_CHAT_SERVER
- 4 jabber
- 3 talk-server
-
-NETWORKING_FILE_TRANSFER
- 5 lftp mirrordir rsync
- 4 gftp rdist
- 3 fmirror ncftp tftp
- 3 GNOME dpsftp
- 2 uucp
-
-NETWORKING_FILE_TRANSFER_SERVER
- 4 proftpd bwbserver_linux
- 2 wu-ftpd anonftp
-
-NETWORKING_LDAP_SERVER
- 4 openldap directory_administrator
-
-NETWORKING_INSTANT_MESSAGING
- 4 licq
- 3 everybuddy licq-console licq-rms
- GNOME
- 5 aspell-br aspell-ca aspell-cs aspell-da aspell-de aspell-de_CH aspell-en aspell-en_CA aspell-en_GB aspell-eo aspell-es aspell-fr aspell-it aspell-nl aspell-no aspell-pl aspell-sv
- 4 gnomeicu gabber gaim
- 3 gtk+licq
-
-NETWORKING_IRC
- 3 BitchX mozilla-irc
- 3 GNOME xchat
- 2 irssi
- 1 eggdrop
-
-NETWORKING_FIREWALLING_SERVER
- 5 iproute2 routed iptables
- 3 prelude
- 1 portsentry
-
-NETWORKING_GROUPWARE_SERVER
- 4 phpgroupware bwbserver_linux
-
-NETWORKING_MAIL
- 5 mailx metamail
- 4 faces mozilla-mail evolution
- 3 fetchmail urlview mutt
- 3 !GNOME !KDE xmailbox
- 2 FaxMail comsat elm faces-xface
- 1 exmh sylpheed fetchmail-daemon fetchmailconf
-NETWORKING_MAIL_SERVER
- 5 postfix
- 4 mailman
-
-NETWORKING_NEWS
- 5 GNOME pan
- 2 slrn tin trn
- 1 slrn-pull xrn
-NETWORKING_NEWS_SERVER
- 4 inn
- 3 inews
-
-NETWORKING_OTHER
- 2 finger fwhois ucd-snmp-utils htdig macutils
-NETWORKING_OTHER_SERVER
- 3 dhcp-server gated timed ntp
-
- 3 intimed mcserv nscd imap pidentd
- rdate bootparamd
- cleanfeed ucd-snmp leafnode
- cvsweb nut-server
- XFree86-Xvfb XFree86-Xnest
- 2 heartbeat diald finger-server mars-nwe
-
-NIS
- 5 ypbind
-NIS_SERVER
- 5 ypserv
-
-NETWORKING_REMOTE_ACCESS
- 5 openssh-clients telnet telnet-client-krb5
- KDE lisa
- 4 traceroute rfbdrake
- 3 vnc
- 2 rsh
- 2 BOOKS vnc-doc
-NETWORKING_REMOTE_ACCESS_SERVER
- 5 openssh-server
- 4 rfbdrake
- 2 vnc-server
- 1 telnet-server-krb5 rsh-server
-
-NETWORKING_DNS
- 4 bind-utils
-NETWORKING_DNS_SERVER
- 5 bind
- 4 caching-nameserver
- 1 nslint
-
-NETWORKING_FILE
- 4 samba-client nfs-utils-clients
- 2 arkeia-gui arkeia-client arkeia-arkc
- 2 GNOME gnomba gtm
- 2 autofs
- 1 am-utils
-NETWORKING_FILE_SERVER
- 5 nfs-utils
- 4 samba-server bwbserver_linux
- 3 BOOKS samba-doc
- 2 arkeia-server samba-winbind
- 3 squid squidGuard
-
-NETWORKING_WWW
- 3 lynx
- 4 !LOCALES"eu" netscape-communicator netscape-plugins
- 4 wget links mozilla Flashplayer crossover-plugin-demo j2re
- 4 GNOME
- screem
- !LOCALES"eu" galeon
- 3 plugger opera bluefish
-NETWORKING_WWW_SERVER
- 5 apache apache-mod_perl mod_ssl mod_php
- 4 apache-suexec
- bwbserver_linux
- 4 BOOKS apache-manual
- 3 php-dba_gdbm_db2 php-gd php-imap php-ldap php-manual php-mysql php-oracle
- php-pgsql php-readline php mod_sxnet auth_ldap HTML-Embperl
- 2 ApacheJServ
- 1 Zope Zope-core Zope-pcgi Zope-zserver
-
-GRAPHICS
- 4 ImageMagick giftrans gimp gphoto gphoto2 qiv ac3d
- 3 gimp-data-extras gqview sketch xwpick xli
- 2 gif2png gimp-perl xpcd xfig xpcd-gimp gd-utils cameleo
- 1 libgr-progs libungif-progs qcad transfig xpaint xmorph
- 1 3D Mesa-demos
- GNOME
- 4 gnome-iconedit
- 3 ee
-
-ARCHIVING
- 5 dump ncompress sharutils unzip
- 4 gtkzip zip
- 3 unarj unstuff mt-st
- 2 taper
- 1 lha
- GNOME
- 4 gnozip
- 3 gtktalog
-
-BURNER
- 5 mkisofs cdrecord
- 4 GNOME gnome-toaster gcombust
- 4 X xcdroast
- 2 X eroaster
- DEVELOPMENT
- 3 cdrecord-devel
-
-SCANNER
- 5 sane-frontends
- 4 gimp
- 4 xsane
-
-PHOTO
- 4 gphoto gphoto2
- 3 gnomemeeting openmcu
-
-DATABASES
- 5 postgresql
- 3 MySQL-client MySQL-shared
- DATABASES_SERVER
- 4 postgresql-server
- 3 MySQL
- 3 postgresql-perl postgresql-python
- 2 postgresql-jdbc postgresql-tk postgresql-odbc postgresql-tcl postgresql-test
- DEVELOPMENT
- 4 perl-Mysql
- 3 postgresql-devel
- 1 MySQL-bench MySQL-devel
-
-GAMES
- 4 sin-demo
- 3 clanbomber freeciv lbreakout2 toppler frozen-bubble
- 3 shogo-demo
- 3 cxhextris rocksndiamonds powermanga mures methane
- 2 Maelstrom pingus ltris penguin-command pysol xtrojka bunnies xpilot trophy xboard xgammon xkobo xpat2 xpuzzles xsoldier xfishtank
- 1 7colors xrally fortune-mod nil
- GNOME
- 3 gnome-games
- 3 gnome-chess
- 2 3D gtulpas
- 1 gtkgo
- DEVELOPMENT
- 2 gnomes-games-devel
- KDE
- 3 kdegames
- DEVELOPMENT
- 2 kdegames-devel
- 3D
- 3 csmash armagetron
- !HW"Riva.*128" chromium tuxracer
-
- 3 !HW"Riva.*128" !HW"Rage X[CL]" !HW"Rage Mobility (?:P\/M|L) " !HW"3D Rage (?:LT|Pro)"
- bzflag
-
-DEVELOPMENT
- 3 autoconf automake m4 make
- 3 autoconf2.5
- 1 tmake pmake pmake-customs
-
- 3 libtool binutils ltrace gdb gcc
- 2 gperf cdecl cproto indent ElectricFence
- 1 egcs glibc-profile xxgdb
-
- 3 gcc-c++ libstdc++5-devel libstdc++-devel
- 2 libsigc++-examples
- 1 egcs-c++
-
- 3 bison flex
- 2 byacc
-
- 2 doxygen C++2LaTeX
-
- 3 jikes kaffe
- 1 gcc-java
-
- 3 cvs rcs
- 2 diffstat tkcvs
-
- 3 swig
-
- 3 python veepee tkinter
- 3 libpython2.2-devel python-devel python-imaging pygtk-glarea pygtk pygtk-libglade rpm-python
-
- 4 perl perl-Term-Readline-Gnu perl-libnet perl-libwww-perl perl-devel
- 3 perl-DBI perl-Digest-MD5 perl-IO-stringy perl-PDL perl-Parse-RecDescent
- perl-GTK-GLArea perl-Tk perlftlib eperl perl-URI perl-DB_File
- perl-Data-ShowTable perl-HTML-Parser perl-HTML-SimpleParse perl-MIME-Base64
- perl-MIME-tools perl-MP3-Info perl-MailTools perl-Msgcat
-
- 3 rpm-build
- 3 rpmlint rpm-devel
- 3 kernel-source
-
- 2 gcc-g77 nasm dev86
- 1 gcc-objc
-
- 2 teyjus gprolog ocaml umb-scheme mawk guile clisp SmallEiffel p2c
- ghc ghc-prof happy haskell-GTK haskell-GTK-devel hugs98 mercury swi-prolog
- ruby-extensions ruby-gtk ruby
-
- 3 gettext-devel
-
- BOOKS
- 2 pam-doc python-docs slang-doc kernel-doc nasm-doc qt2-doc ruby-doc lkmpg
-
- KDE
- 3 kdevelop
- 3 kdebase-devel kdegraphics-devel kdelibs-devel kdelibs-sound-devel
- kdemultimedia-devel kdenetwork-devel
- 1 kdesupport-devel kdeaddutils-devel koffice-devel
-
- GNOME
- 4 perl-GTK-Glade perl-GTK-Gnome
- 3 memprof glade gnome-guile pygnome libgnomeui2_0-devel gnome-guile-devel
- gnome-pim-devel gob
- 2 pygnome-applet pygnome-capplet pygnome-libglade rep-gtk-gnome
- libgnomemm-1.2_9-devel gnomemm-devel libgnome-pilot1-devel gnome-pilot-devel glademm
- 1 gnucash-devel rep-gtk-libglade
-
- DEVELOPMENT_OTHER
- 2 ImageMagick-devel Mesa-common-devel libXaw3d7-devel Xaw3d-devel detect-devel
- libgd2-devel gd-devel p2c-devel libgmp3-devel gmp-devel libguile9-devel guile-devel libgr-devel libjpeg62-devel libjpeg-devel libpng3-devel libpng-devel
- libtermcap2-devel libtermcap-devel libtiff3-devel libtiff-devel libungif4-devel libungif-devel libxml2-devel libxml-devel
- linuxconf-devel libslang1-devel slang-devel sox-devel zlib1-devel zlib-devel XFree86-devel dev86-devel
- libgdk-pixbuf2-devel gdk-pixbuf-devel libgimp1.2_1-devel gimp-devel libgpm1-devel gpm-devel kudzu-devel libghttp1-devel libghttp-devel libgtop2.0_0-devel libgtop-devel
- libmikmod2-devel libmikmod-devel librep9-devel librep-devel libunicode-devel popt-devel pwdb-devel t1lib1-devel t1lib-devel
- ucd-snmp-devel mpeg_lib-devel WindowMaker-devel aalib-devel libadns1-devel adns-devel
- alsa-lib-devel audiofile-devel libcups1-devel cups-devel e2fsprogs-devel egcs-objc-devel
- libg-wrap2-devel g-wrap-devel gkrellm-devel ibtk libPropList-devel licq-devel openldap-devel
- libparted1.6-devel parted-devel pciutils-devel pilot-link-devel svgalib-devel
- recode-devel libaspell10-devel aspell-devel cracklib-devel faces-devel fnlib-devel
- freetype-devel libgtk+mdk0.1_6-devel gtk+mdk-devel libgtkglarea5-devel gtkglarea-devel XFree86-static-libs imap-devel
- php-devel libpth14-devel pth-devel libsane1-devel sane-devel swig-devel xdelta-devel isapnptools-devel
- libpango1.0_0-devel pango-devel readline-devel
-
-MONITORING
- 5 procinfo psacct
- 5 PCMCIA apmd
- 4 lsof swatch tcpdump traceroute
- 3 iplog arpwatch lslk nmap nmap-frontend procps-X11 xcpustate xsysinfo
- 2 cfengine gkrellm gps rusers mon xosview 3D xtraceroute
- 1 logcheck bonnie
- GNOME
- 4 gnome-system-monitor
-
-FILE_TOOLS
- 5 file gnupg mkxauth mtools slocate
- 4 symlinks
- 3 dosfstools draksync mc tree
- 2 git gentoo sfm xwc FileRunner
- 1 xdelta
-
-WEBMIN
- 3 webmin
-
-WIZARDS
- 5 drakwizard
-
-CONFIG
- 4 linuxconf linuxconf-lang-cs linuxconf-lang-de linuxconf-lang-es linuxconf-lang-fi linuxconf-lang-fr linuxconf-lang-hu linuxconf-lang-it linuxconf-lang-ko linuxconf-lang-no linuxconf-lang-pt linuxconf-lang-ro linuxconf-lang-sk linuxconf-lang-sv linuxconf-lang-zh
- 4 X gnome-linuxconf
- 3 ipvsadm quota usernet nut
- 2 gfcc control-panel adjtimex isicom xinput timeconfig samba-swat
- 1 ipxutils
-
-BOOKS
- 3 mandrake_doc-de mandrake_doc-en mandrake_doc-es mandrake_doc-fr mandrake_doc-it mandrake_doc-ru
-
-X
- 5 XFree86 rxvt XFree86-75dpi-fonts urw-fonts
- 5 icewm-light
-
- 4 vim-enhanced
- 4 gurpmi rpmdrake drakconf userdrake fonts-ttf-decoratives fonts-ttf-west_european
- mandrake-mime menudrake mandrake_desk
- mdkonline drakfirsttime gtk-engines bootsplash
- 4 LOCALES"ja" || LOCALES"ko" || LOCALES"zh" rxvt-CJK
-
- 3 XFree86-100dpi-fonts draksync drakprofile
- 3 USB usbview
- 2 LOCALES"ja" || LOCALES"ko" || LOCALES"zh" jmcce
- 2 tksysv imlib-cfgeditor
- 1 DrakeLogo Mesa xtoolwait X11R6-contrib
-
- GNOME
- 3 gnorpm
-
- 5 xcin Chinput xa+cv xvnkb FreeWnn ami kinput2-wnn4
-
- 2 app-defaults-be app-defaults-cs app-defaults-ga app-defaults-ru app-defaults-th app-defaults-uk
-
- 5 CHARSET"iso-8859-13" fonts-type1-baltic
- LOCALES"ru" || LOCALES"uk" XFree86-cyrillic-fonts
- LOCALES"he" fonts-hebrew-elmar
- LOCALES"hy" fonts-ttf-armenian
- LOCALES"ja" fonts-ttf-japanese
- LOCALES"ko" fonts-ttf-korean
- LOCALES"ta" fonts-ttf-tscii fonts-bitmap-tscii
- LOCALES"th" fonts-ttf-thai
- LOCALES"zh_CN" || LOCALES"zh" fonts-ttf-gb2312
- LOCALES"zh_TW" || LOCALES"zh" taipeifonts fonts-ttf-big5
-
-DOCS
- 5 man info man-pages
-
-SYSTEM
- 5 at MAKEDEV eject ldetect devfsd
- locales iputils urpmi cpio msec tmpwatch
-
- 5 HIGH_SECURITY libsafe kernel-secure-2.4.19.16mdk kernel-secure
- 5 BIGMEM kernel-enterprise-2.4.19.16mdk kernel-enterprise
- 5 SMP kernel-smp-2.4.19.16mdk kernel-smp
- 5 PCMCIA pcmcia-cs
- 5 USB hotplug
-
- 5 HW"nForce.*(?:Audio|Network)"
- NVIDIA_nforce-2.4.19-16mdk
- BIGMEM NVIDIA_nforce-2.4.19-16mdk-enterprise
-
- 4 ftp-client-krb5 gpm hexedit strace sudo grub procmail gnupg
-
- 3 bc
- 2 sndconfig kernel-utils acpid adns audiofile freeswan awesfx fbset vlan-utils
- 1 fdutils genromfs mailcap pinfo
-
- BOOKS
- 5 man-pages-cs man-pages-da man-pages-de man-pages-es man-pages-fr man-pages-hu man-pages-id man-pages-it man-pages-ja man-pages-ko man-pages-pl man-pages-ru man-pages-zh
- 3 grub-doc lilo-doc
- howto-html-de howto-html-el howto-html-en howto-html-es howto-html-fr howto-html-hr howto-html-hu howto-html-id howto-html-it howto-html-ja howto-html-ko howto-html-nl howto-html-pl howto-html-ro howto-html-sl howto-html-sv howto-html-zh
-
- 4 NIS yp-tools
- 3 PCMCIA irda-utils
- 3 USB usbutils
-
- 4 LOCALES"ar" || LOCALES"fa" || LOCALES"he" || LOCALES"yi" acon
- 3 LOCALES"zh" zh-autoconvert
-
-EMULATORS
- 3 wine
- 2 BasiliskII-jit
- 1 BasiliskII
- 2 xdosemu
- 1 xmame xmess
-
-INSTALL
- NOCOPY
- 5 kernel-2.4.19.16mdk kernel-2.4.19.16mdk kernel kernel-smp-2.4.19.16mdk kernel-smp-2.4.19.16mdk kernel-smp kernel-enterprise-2.4.19.16mdk kernel-enterprise-2.4.19.16mdk kernel-enterprise
- raidtools lvm reiserfsprogs jfsprogs xfsprogs
- alsa alsa-utils
- 4 XFree86
-
- 5 pptp-adsl dhcpcd dhcpxd dhcp-client isdn4net isdn-light isdn4k-utils ibod rp-pppoe pump wireless-tools speedtouch
- ppp nfs-utils-clients
- autologin ntp cups-drivers samba ncpfs hpoj ucd-snmp libptal0
- libhpojip0 libsnmp0 xojpanel libsane-hpoj0
- ipchains shorewall iptables printer-utils rlpr samba-client
- xpp pdq printer-testpages nmap scli net-tools
- cups lpr foomatic gimpprint
- nc sndconfig
- ImageMagick ghostscript printer-filters mpage a2ps ppdfilt libppd1 gpr groff libgimpprint1 numlock curl
- sane-backends sane-frontends xsane xsane-gimp mtools mtoolsfm
- hotplug dev ypbind speedtouch_mgmt
- 4 XFree86-server XFree86-FBDev
-# 4 XFree86-SVGA XFree86-server XFree86-Mach64 XFree86-FBDev
-# XFree86-glide-module Device3Dfx Glide_V3-DRI Glide_V5 Mesa
-# 3 XFree86-S3 XFree86-S3V XFree86-VGA16
-# 2 XFree86-8514 XFree86-AGX XFree86-I128 XFree86-Mach32 XFree86-Mach8 XFree86-Mono XFree86-P9000 XFree86-W32
-# 1 XFree86-3DLabs XFree86-Sun XFree86-SunMono XFree86-Sun24
diff --git a/perl-install/perl2etags b/perl-install/perl2etags
deleted file mode 100755
index 6eed722c0..000000000
--- a/perl-install/perl2etags
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/perl -p
-
-if (/^ / ... !/^ /) {
- ($package) = /(.*).pm,/;
- $package =~ s|/|::|g;
-}
-
-s/(\x7F)(sub\s+)?(\w+)(\([^)]*\))?/$1${package}::$3/;
diff --git a/perl-install/pixmaps/X.png b/perl-install/pixmaps/X.png
deleted file mode 100644
index 251e6d29a..000000000
--- a/perl-install/pixmaps/X.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/about-printerdrake.png b/perl-install/pixmaps/about-printerdrake.png
deleted file mode 100644
index ebab96dfe..000000000
--- a/perl-install/pixmaps/about-printerdrake.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/arrow_down.png b/perl-install/pixmaps/arrow_down.png
deleted file mode 100644
index 256dee04e..000000000
--- a/perl-install/pixmaps/arrow_down.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/arrow_up.png b/perl-install/pixmaps/arrow_up.png
deleted file mode 100644
index fd2408b23..000000000
--- a/perl-install/pixmaps/arrow_up.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/colors.png b/perl-install/pixmaps/colors.png
deleted file mode 100644
index 8de1929b4..000000000
--- a/perl-install/pixmaps/colors.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/colors16.png b/perl-install/pixmaps/colors16.png
deleted file mode 100644
index 9663c6140..000000000
--- a/perl-install/pixmaps/colors16.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/colors8.png b/perl-install/pixmaps/colors8.png
deleted file mode 100644
index 904517e2f..000000000
--- a/perl-install/pixmaps/colors8.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/connected.png b/perl-install/pixmaps/connected.png
deleted file mode 100755
index 3fc98ceb9..000000000
--- a/perl-install/pixmaps/connected.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/cups_config.png b/perl-install/pixmaps/cups_config.png
deleted file mode 100644
index a8409abd0..000000000
--- a/perl-install/pixmaps/cups_config.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/default.png b/perl-install/pixmaps/default.png
deleted file mode 100644
index c96abec09..000000000
--- a/perl-install/pixmaps/default.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/disconnected.png b/perl-install/pixmaps/disconnected.png
deleted file mode 100644
index 1c0509048..000000000
--- a/perl-install/pixmaps/disconnected.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/eth_card_mini.png b/perl-install/pixmaps/eth_card_mini.png
deleted file mode 100644
index 44f516168..000000000
--- a/perl-install/pixmaps/eth_card_mini.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/help.png b/perl-install/pixmaps/help.png
deleted file mode 100644
index aee3f0556..000000000
--- a/perl-install/pixmaps/help.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/ic82-systemeplus-40.png b/perl-install/pixmaps/ic82-systemeplus-40.png
deleted file mode 100644
index 35673c6a1..000000000
--- a/perl-install/pixmaps/ic82-systemeplus-40.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/ic82-tape-40.png b/perl-install/pixmaps/ic82-tape-40.png
deleted file mode 100644
index d42585c1b..000000000
--- a/perl-install/pixmaps/ic82-tape-40.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-af.png b/perl-install/pixmaps/langs/lang-af.png
deleted file mode 100644
index 08a6a6212..000000000
--- a/perl-install/pixmaps/langs/lang-af.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-am.png b/perl-install/pixmaps/langs/lang-am.png
deleted file mode 100644
index ee9f7ae92..000000000
--- a/perl-install/pixmaps/langs/lang-am.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ar.png b/perl-install/pixmaps/langs/lang-ar.png
deleted file mode 100644
index e4abc7176..000000000
--- a/perl-install/pixmaps/langs/lang-ar.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-as.png b/perl-install/pixmaps/langs/lang-as.png
deleted file mode 100644
index 4f4c6d640..000000000
--- a/perl-install/pixmaps/langs/lang-as.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-az.png b/perl-install/pixmaps/langs/lang-az.png
deleted file mode 100644
index 9aef0bb54..000000000
--- a/perl-install/pixmaps/langs/lang-az.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-be.png b/perl-install/pixmaps/langs/lang-be.png
deleted file mode 100644
index e9cbbbad8..000000000
--- a/perl-install/pixmaps/langs/lang-be.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ber.png b/perl-install/pixmaps/langs/lang-ber.png
deleted file mode 100644
index 758f87d27..000000000
--- a/perl-install/pixmaps/langs/lang-ber.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-bg.png b/perl-install/pixmaps/langs/lang-bg.png
deleted file mode 100644
index d815d9f5c..000000000
--- a/perl-install/pixmaps/langs/lang-bg.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-bn.png b/perl-install/pixmaps/langs/lang-bn.png
deleted file mode 100644
index 1fed9d2c4..000000000
--- a/perl-install/pixmaps/langs/lang-bn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-br.png b/perl-install/pixmaps/langs/lang-br.png
deleted file mode 100644
index 51b8a87de..000000000
--- a/perl-install/pixmaps/langs/lang-br.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-bs.png b/perl-install/pixmaps/langs/lang-bs.png
deleted file mode 100644
index df795a31f..000000000
--- a/perl-install/pixmaps/langs/lang-bs.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ca.png b/perl-install/pixmaps/langs/lang-ca.png
deleted file mode 100644
index 8609cba11..000000000
--- a/perl-install/pixmaps/langs/lang-ca.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-chr.png b/perl-install/pixmaps/langs/lang-chr.png
deleted file mode 100644
index b93621609..000000000
--- a/perl-install/pixmaps/langs/lang-chr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-cs.png b/perl-install/pixmaps/langs/lang-cs.png
deleted file mode 100644
index a9606348c..000000000
--- a/perl-install/pixmaps/langs/lang-cs.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-csb.png b/perl-install/pixmaps/langs/lang-csb.png
deleted file mode 100644
index 897f65a02..000000000
--- a/perl-install/pixmaps/langs/lang-csb.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-cy.png b/perl-install/pixmaps/langs/lang-cy.png
deleted file mode 100644
index b62fd955c..000000000
--- a/perl-install/pixmaps/langs/lang-cy.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-da.png b/perl-install/pixmaps/langs/lang-da.png
deleted file mode 100644
index 5e0e36fb0..000000000
--- a/perl-install/pixmaps/langs/lang-da.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-de.png b/perl-install/pixmaps/langs/lang-de.png
deleted file mode 100644
index d9bedadc0..000000000
--- a/perl-install/pixmaps/langs/lang-de.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-el.png b/perl-install/pixmaps/langs/lang-el.png
deleted file mode 100644
index 62b1bba08..000000000
--- a/perl-install/pixmaps/langs/lang-el.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-en_GB.png b/perl-install/pixmaps/langs/lang-en_GB.png
deleted file mode 100644
index 15ee5fa24..000000000
--- a/perl-install/pixmaps/langs/lang-en_GB.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-en_IE.png b/perl-install/pixmaps/langs/lang-en_IE.png
deleted file mode 100644
index fabe38773..000000000
--- a/perl-install/pixmaps/langs/lang-en_IE.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-en_US.png b/perl-install/pixmaps/langs/lang-en_US.png
deleted file mode 100644
index 974c3283e..000000000
--- a/perl-install/pixmaps/langs/lang-en_US.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-eo.png b/perl-install/pixmaps/langs/lang-eo.png
deleted file mode 100644
index 063942f3a..000000000
--- a/perl-install/pixmaps/langs/lang-eo.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-es.png b/perl-install/pixmaps/langs/lang-es.png
deleted file mode 100644
index e08d98f13..000000000
--- a/perl-install/pixmaps/langs/lang-es.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-et.png b/perl-install/pixmaps/langs/lang-et.png
deleted file mode 100644
index a93082949..000000000
--- a/perl-install/pixmaps/langs/lang-et.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-eu.png b/perl-install/pixmaps/langs/lang-eu.png
deleted file mode 100644
index 024bc1bff..000000000
--- a/perl-install/pixmaps/langs/lang-eu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fa.png b/perl-install/pixmaps/langs/lang-fa.png
deleted file mode 100644
index 2edc3e2c0..000000000
--- a/perl-install/pixmaps/langs/lang-fa.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fi.png b/perl-install/pixmaps/langs/lang-fi.png
deleted file mode 100644
index 20c6b4654..000000000
--- a/perl-install/pixmaps/langs/lang-fi.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fo.png b/perl-install/pixmaps/langs/lang-fo.png
deleted file mode 100644
index 8b3dc056e..000000000
--- a/perl-install/pixmaps/langs/lang-fo.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fr.png b/perl-install/pixmaps/langs/lang-fr.png
deleted file mode 100644
index f871e3e5b..000000000
--- a/perl-install/pixmaps/langs/lang-fr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fur.png b/perl-install/pixmaps/langs/lang-fur.png
deleted file mode 100644
index 426f94c54..000000000
--- a/perl-install/pixmaps/langs/lang-fur.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-fy.png b/perl-install/pixmaps/langs/lang-fy.png
deleted file mode 100644
index 6a09f98cc..000000000
--- a/perl-install/pixmaps/langs/lang-fy.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ga.png b/perl-install/pixmaps/langs/lang-ga.png
deleted file mode 100644
index af049dab0..000000000
--- a/perl-install/pixmaps/langs/lang-ga.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-gd.png b/perl-install/pixmaps/langs/lang-gd.png
deleted file mode 100644
index 01ebf64bb..000000000
--- a/perl-install/pixmaps/langs/lang-gd.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-gl.png b/perl-install/pixmaps/langs/lang-gl.png
deleted file mode 100644
index dacb6b91b..000000000
--- a/perl-install/pixmaps/langs/lang-gl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-gn.png b/perl-install/pixmaps/langs/lang-gn.png
deleted file mode 100644
index 93c58a779..000000000
--- a/perl-install/pixmaps/langs/lang-gn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-gu.png b/perl-install/pixmaps/langs/lang-gu.png
deleted file mode 100644
index 10685a0fe..000000000
--- a/perl-install/pixmaps/langs/lang-gu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-gv.png b/perl-install/pixmaps/langs/lang-gv.png
deleted file mode 100644
index 76e2c242a..000000000
--- a/perl-install/pixmaps/langs/lang-gv.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ha.png b/perl-install/pixmaps/langs/lang-ha.png
deleted file mode 100644
index e84e1b191..000000000
--- a/perl-install/pixmaps/langs/lang-ha.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-he.png b/perl-install/pixmaps/langs/lang-he.png
deleted file mode 100644
index a3a43a179..000000000
--- a/perl-install/pixmaps/langs/lang-he.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-hi.png b/perl-install/pixmaps/langs/lang-hi.png
deleted file mode 100644
index 3749905da..000000000
--- a/perl-install/pixmaps/langs/lang-hi.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-hr.png b/perl-install/pixmaps/langs/lang-hr.png
deleted file mode 100644
index 42add5cf5..000000000
--- a/perl-install/pixmaps/langs/lang-hr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-hu.png b/perl-install/pixmaps/langs/lang-hu.png
deleted file mode 100644
index baa0be79a..000000000
--- a/perl-install/pixmaps/langs/lang-hu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-hy.png b/perl-install/pixmaps/langs/lang-hy.png
deleted file mode 100644
index 969a0f0ec..000000000
--- a/perl-install/pixmaps/langs/lang-hy.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ia.png b/perl-install/pixmaps/langs/lang-ia.png
deleted file mode 100644
index ee4d1b2bd..000000000
--- a/perl-install/pixmaps/langs/lang-ia.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-id.png b/perl-install/pixmaps/langs/lang-id.png
deleted file mode 100644
index a31b4f3ee..000000000
--- a/perl-install/pixmaps/langs/lang-id.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ik.png b/perl-install/pixmaps/langs/lang-ik.png
deleted file mode 100644
index 1fad276d8..000000000
--- a/perl-install/pixmaps/langs/lang-ik.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-is.png b/perl-install/pixmaps/langs/lang-is.png
deleted file mode 100644
index ea7aea4d2..000000000
--- a/perl-install/pixmaps/langs/lang-is.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-it.png b/perl-install/pixmaps/langs/lang-it.png
deleted file mode 100644
index 123c65155..000000000
--- a/perl-install/pixmaps/langs/lang-it.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-iu.png b/perl-install/pixmaps/langs/lang-iu.png
deleted file mode 100644
index eef7f3184..000000000
--- a/perl-install/pixmaps/langs/lang-iu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ja.png b/perl-install/pixmaps/langs/lang-ja.png
deleted file mode 100644
index 7c521e108..000000000
--- a/perl-install/pixmaps/langs/lang-ja.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ka.png b/perl-install/pixmaps/langs/lang-ka.png
deleted file mode 100644
index 56157f8bc..000000000
--- a/perl-install/pixmaps/langs/lang-ka.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-kk.png b/perl-install/pixmaps/langs/lang-kk.png
deleted file mode 100644
index 008c6182d..000000000
--- a/perl-install/pixmaps/langs/lang-kk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-kl.png b/perl-install/pixmaps/langs/lang-kl.png
deleted file mode 100644
index fc471261b..000000000
--- a/perl-install/pixmaps/langs/lang-kl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-km.png b/perl-install/pixmaps/langs/lang-km.png
deleted file mode 100644
index 20836b561..000000000
--- a/perl-install/pixmaps/langs/lang-km.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-kn.png b/perl-install/pixmaps/langs/lang-kn.png
deleted file mode 100644
index 6cf704799..000000000
--- a/perl-install/pixmaps/langs/lang-kn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ko.png b/perl-install/pixmaps/langs/lang-ko.png
deleted file mode 100644
index 8dd6c5529..000000000
--- a/perl-install/pixmaps/langs/lang-ko.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ks.png b/perl-install/pixmaps/langs/lang-ks.png
deleted file mode 100644
index edbe86c72..000000000
--- a/perl-install/pixmaps/langs/lang-ks.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ks@Arab.png b/perl-install/pixmaps/langs/lang-ks@Arab.png
deleted file mode 100644
index c3eba40ca..000000000
--- a/perl-install/pixmaps/langs/lang-ks@Arab.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ku.png b/perl-install/pixmaps/langs/lang-ku.png
deleted file mode 100644
index c776e1321..000000000
--- a/perl-install/pixmaps/langs/lang-ku.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-kw.png b/perl-install/pixmaps/langs/lang-kw.png
deleted file mode 100644
index 2e1fa3edf..000000000
--- a/perl-install/pixmaps/langs/lang-kw.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ky.png b/perl-install/pixmaps/langs/lang-ky.png
deleted file mode 100644
index 72924a206..000000000
--- a/perl-install/pixmaps/langs/lang-ky.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-lb.png b/perl-install/pixmaps/langs/lang-lb.png
deleted file mode 100644
index ba1b6c01e..000000000
--- a/perl-install/pixmaps/langs/lang-lb.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-lg.png b/perl-install/pixmaps/langs/lang-lg.png
deleted file mode 100644
index 2e67836e0..000000000
--- a/perl-install/pixmaps/langs/lang-lg.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-li.png b/perl-install/pixmaps/langs/lang-li.png
deleted file mode 100644
index 77f36a985..000000000
--- a/perl-install/pixmaps/langs/lang-li.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-lo.png b/perl-install/pixmaps/langs/lang-lo.png
deleted file mode 100644
index c8ac6c880..000000000
--- a/perl-install/pixmaps/langs/lang-lo.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-lt.png b/perl-install/pixmaps/langs/lang-lt.png
deleted file mode 100644
index 9869002a2..000000000
--- a/perl-install/pixmaps/langs/lang-lt.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ltg.png b/perl-install/pixmaps/langs/lang-ltg.png
deleted file mode 100644
index 2cd1c8227..000000000
--- a/perl-install/pixmaps/langs/lang-ltg.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-lv.png b/perl-install/pixmaps/langs/lang-lv.png
deleted file mode 100644
index b73a804bc..000000000
--- a/perl-install/pixmaps/langs/lang-lv.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-mi.png b/perl-install/pixmaps/langs/lang-mi.png
deleted file mode 100644
index 1d0658497..000000000
--- a/perl-install/pixmaps/langs/lang-mi.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-mk.png b/perl-install/pixmaps/langs/lang-mk.png
deleted file mode 100644
index ef82b87d3..000000000
--- a/perl-install/pixmaps/langs/lang-mk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ml.png b/perl-install/pixmaps/langs/lang-ml.png
deleted file mode 100644
index b1d933a1e..000000000
--- a/perl-install/pixmaps/langs/lang-ml.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-mn.png b/perl-install/pixmaps/langs/lang-mn.png
deleted file mode 100644
index 18af73e27..000000000
--- a/perl-install/pixmaps/langs/lang-mn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-mr.png b/perl-install/pixmaps/langs/lang-mr.png
deleted file mode 100644
index 8181f89bf..000000000
--- a/perl-install/pixmaps/langs/lang-mr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ms.png b/perl-install/pixmaps/langs/lang-ms.png
deleted file mode 100644
index 2d40e300f..000000000
--- a/perl-install/pixmaps/langs/lang-ms.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-mt.png b/perl-install/pixmaps/langs/lang-mt.png
deleted file mode 100644
index c75d1413d..000000000
--- a/perl-install/pixmaps/langs/lang-mt.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-nb.png b/perl-install/pixmaps/langs/lang-nb.png
deleted file mode 100644
index ebd4d42d3..000000000
--- a/perl-install/pixmaps/langs/lang-nb.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-nds.png b/perl-install/pixmaps/langs/lang-nds.png
deleted file mode 100644
index 39e0583c7..000000000
--- a/perl-install/pixmaps/langs/lang-nds.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ne.png b/perl-install/pixmaps/langs/lang-ne.png
deleted file mode 100644
index 695c8b8e2..000000000
--- a/perl-install/pixmaps/langs/lang-ne.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-nl.png b/perl-install/pixmaps/langs/lang-nl.png
deleted file mode 100644
index 014adbe98..000000000
--- a/perl-install/pixmaps/langs/lang-nl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-nn.png b/perl-install/pixmaps/langs/lang-nn.png
deleted file mode 100644
index 771d08a94..000000000
--- a/perl-install/pixmaps/langs/lang-nn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-no.png b/perl-install/pixmaps/langs/lang-no.png
deleted file mode 100644
index ebd4d42d3..000000000
--- a/perl-install/pixmaps/langs/lang-no.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-oc.png b/perl-install/pixmaps/langs/lang-oc.png
deleted file mode 100644
index f4efa6dd3..000000000
--- a/perl-install/pixmaps/langs/lang-oc.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-pa.png b/perl-install/pixmaps/langs/lang-pa.png
deleted file mode 100644
index c1945c3da..000000000
--- a/perl-install/pixmaps/langs/lang-pa.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-pa_IN.png b/perl-install/pixmaps/langs/lang-pa_IN.png
deleted file mode 100644
index c1945c3da..000000000
--- a/perl-install/pixmaps/langs/lang-pa_IN.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ph.png b/perl-install/pixmaps/langs/lang-ph.png
deleted file mode 100644
index 78a7bd614..000000000
--- a/perl-install/pixmaps/langs/lang-ph.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-pl.png b/perl-install/pixmaps/langs/lang-pl.png
deleted file mode 100644
index d525067b3..000000000
--- a/perl-install/pixmaps/langs/lang-pl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ps.png b/perl-install/pixmaps/langs/lang-ps.png
deleted file mode 100644
index a4db7252c..000000000
--- a/perl-install/pixmaps/langs/lang-ps.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-pt.png b/perl-install/pixmaps/langs/lang-pt.png
deleted file mode 100644
index 60643675d..000000000
--- a/perl-install/pixmaps/langs/lang-pt.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-pt_BR.png b/perl-install/pixmaps/langs/lang-pt_BR.png
deleted file mode 100644
index 41c955b8e..000000000
--- a/perl-install/pixmaps/langs/lang-pt_BR.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-qu.png b/perl-install/pixmaps/langs/lang-qu.png
deleted file mode 100644
index 53e233cdb..000000000
--- a/perl-install/pixmaps/langs/lang-qu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ro.png b/perl-install/pixmaps/langs/lang-ro.png
deleted file mode 100644
index 0483ff00a..000000000
--- a/perl-install/pixmaps/langs/lang-ro.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ru.png b/perl-install/pixmaps/langs/lang-ru.png
deleted file mode 100644
index 50bfb23d2..000000000
--- a/perl-install/pixmaps/langs/lang-ru.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sc.png b/perl-install/pixmaps/langs/lang-sc.png
deleted file mode 100644
index e4dda5f79..000000000
--- a/perl-install/pixmaps/langs/lang-sc.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-se.png b/perl-install/pixmaps/langs/lang-se.png
deleted file mode 100644
index 92b76282c..000000000
--- a/perl-install/pixmaps/langs/lang-se.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sh.png b/perl-install/pixmaps/langs/lang-sh.png
deleted file mode 100644
index 05fc8b034..000000000
--- a/perl-install/pixmaps/langs/lang-sh.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sk.png b/perl-install/pixmaps/langs/lang-sk.png
deleted file mode 100644
index 9e939c857..000000000
--- a/perl-install/pixmaps/langs/lang-sk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sl.png b/perl-install/pixmaps/langs/lang-sl.png
deleted file mode 100644
index fc5657a97..000000000
--- a/perl-install/pixmaps/langs/lang-sl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-so.png b/perl-install/pixmaps/langs/lang-so.png
deleted file mode 100644
index b6649980a..000000000
--- a/perl-install/pixmaps/langs/lang-so.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sq.png b/perl-install/pixmaps/langs/lang-sq.png
deleted file mode 100644
index f6c2d2f0e..000000000
--- a/perl-install/pixmaps/langs/lang-sq.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sr.png b/perl-install/pixmaps/langs/lang-sr.png
deleted file mode 100644
index 5b822b402..000000000
--- a/perl-install/pixmaps/langs/lang-sr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sr@Latn.png b/perl-install/pixmaps/langs/lang-sr@Latn.png
deleted file mode 100644
index 05fc8b034..000000000
--- a/perl-install/pixmaps/langs/lang-sr@Latn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ss.png b/perl-install/pixmaps/langs/lang-ss.png
deleted file mode 100644
index ed1da073c..000000000
--- a/perl-install/pixmaps/langs/lang-ss.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-st.png b/perl-install/pixmaps/langs/lang-st.png
deleted file mode 100644
index 3f4c3a022..000000000
--- a/perl-install/pixmaps/langs/lang-st.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sv.png b/perl-install/pixmaps/langs/lang-sv.png
deleted file mode 100644
index 21822dbf8..000000000
--- a/perl-install/pixmaps/langs/lang-sv.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-sw.png b/perl-install/pixmaps/langs/lang-sw.png
deleted file mode 100644
index 690b07c0c..000000000
--- a/perl-install/pixmaps/langs/lang-sw.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ta.png b/perl-install/pixmaps/langs/lang-ta.png
deleted file mode 100644
index c603ea0de..000000000
--- a/perl-install/pixmaps/langs/lang-ta.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-te.png b/perl-install/pixmaps/langs/lang-te.png
deleted file mode 100644
index a263d449d..000000000
--- a/perl-install/pixmaps/langs/lang-te.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-tg.png b/perl-install/pixmaps/langs/lang-tg.png
deleted file mode 100644
index f537f85ad..000000000
--- a/perl-install/pixmaps/langs/lang-tg.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-th.png b/perl-install/pixmaps/langs/lang-th.png
deleted file mode 100644
index 75c913c73..000000000
--- a/perl-install/pixmaps/langs/lang-th.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-tk.png b/perl-install/pixmaps/langs/lang-tk.png
deleted file mode 100644
index d95c94774..000000000
--- a/perl-install/pixmaps/langs/lang-tk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-tr.png b/perl-install/pixmaps/langs/lang-tr.png
deleted file mode 100644
index a6c266603..000000000
--- a/perl-install/pixmaps/langs/lang-tr.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-tt.png b/perl-install/pixmaps/langs/lang-tt.png
deleted file mode 100644
index f643f18cd..000000000
--- a/perl-install/pixmaps/langs/lang-tt.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-tt@Cyrl.png b/perl-install/pixmaps/langs/lang-tt@Cyrl.png
deleted file mode 100644
index 5d8ab2669..000000000
--- a/perl-install/pixmaps/langs/lang-tt@Cyrl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ug.png b/perl-install/pixmaps/langs/lang-ug.png
deleted file mode 100644
index 36033a501..000000000
--- a/perl-install/pixmaps/langs/lang-ug.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-uk.png b/perl-install/pixmaps/langs/lang-uk.png
deleted file mode 100644
index cee670ee3..000000000
--- a/perl-install/pixmaps/langs/lang-uk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ur.png b/perl-install/pixmaps/langs/lang-ur.png
deleted file mode 100644
index 0a395fd04..000000000
--- a/perl-install/pixmaps/langs/lang-ur.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-uz.png b/perl-install/pixmaps/langs/lang-uz.png
deleted file mode 100644
index d32d0ffea..000000000
--- a/perl-install/pixmaps/langs/lang-uz.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-uz@Cyrl.png b/perl-install/pixmaps/langs/lang-uz@Cyrl.png
deleted file mode 100644
index d32d0ffea..000000000
--- a/perl-install/pixmaps/langs/lang-uz@Cyrl.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-uz@Latn.png b/perl-install/pixmaps/langs/lang-uz@Latn.png
deleted file mode 100644
index e9761e7d5..000000000
--- a/perl-install/pixmaps/langs/lang-uz@Latn.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-ve.png b/perl-install/pixmaps/langs/lang-ve.png
deleted file mode 100644
index ac0233033..000000000
--- a/perl-install/pixmaps/langs/lang-ve.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-vi.png b/perl-install/pixmaps/langs/lang-vi.png
deleted file mode 100644
index eaa8fe477..000000000
--- a/perl-install/pixmaps/langs/lang-vi.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-wa.png b/perl-install/pixmaps/langs/lang-wa.png
deleted file mode 100644
index 176976de8..000000000
--- a/perl-install/pixmaps/langs/lang-wa.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-xh.png b/perl-install/pixmaps/langs/lang-xh.png
deleted file mode 100644
index d31040a18..000000000
--- a/perl-install/pixmaps/langs/lang-xh.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-yi.png b/perl-install/pixmaps/langs/lang-yi.png
deleted file mode 100644
index 729b7e166..000000000
--- a/perl-install/pixmaps/langs/lang-yi.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-zh_CN.png b/perl-install/pixmaps/langs/lang-zh_CN.png
deleted file mode 100644
index b8eff030a..000000000
--- a/perl-install/pixmaps/langs/lang-zh_CN.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-zh_TW.png b/perl-install/pixmaps/langs/lang-zh_TW.png
deleted file mode 100644
index bbfdc8fe8..000000000
--- a/perl-install/pixmaps/langs/lang-zh_TW.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/langs/lang-zu.png b/perl-install/pixmaps/langs/lang-zu.png
deleted file mode 100644
index b44493b50..000000000
--- a/perl-install/pixmaps/langs/lang-zu.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1024.png b/perl-install/pixmaps/monitor-1024.png
deleted file mode 100644
index 8dee9c29c..000000000
--- a/perl-install/pixmaps/monitor-1024.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1152.png b/perl-install/pixmaps/monitor-1152.png
deleted file mode 100644
index 95380098b..000000000
--- a/perl-install/pixmaps/monitor-1152.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1280.png b/perl-install/pixmaps/monitor-1280.png
deleted file mode 100644
index 24bdf631b..000000000
--- a/perl-install/pixmaps/monitor-1280.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1400.png b/perl-install/pixmaps/monitor-1400.png
deleted file mode 100644
index 6b6cd8dfc..000000000
--- a/perl-install/pixmaps/monitor-1400.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1600.png b/perl-install/pixmaps/monitor-1600.png
deleted file mode 100644
index 3016b0590..000000000
--- a/perl-install/pixmaps/monitor-1600.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-1920.png b/perl-install/pixmaps/monitor-1920.png
deleted file mode 100644
index 844d378c4..000000000
--- a/perl-install/pixmaps/monitor-1920.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-2048.png b/perl-install/pixmaps/monitor-2048.png
deleted file mode 100644
index eb208663c..000000000
--- a/perl-install/pixmaps/monitor-2048.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-640.png b/perl-install/pixmaps/monitor-640.png
deleted file mode 100644
index 5ee916c84..000000000
--- a/perl-install/pixmaps/monitor-640.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor-800.png b/perl-install/pixmaps/monitor-800.png
deleted file mode 100644
index dc2e3a915..000000000
--- a/perl-install/pixmaps/monitor-800.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/monitor.png b/perl-install/pixmaps/monitor.png
deleted file mode 100644
index 097c022bd..000000000
--- a/perl-install/pixmaps/monitor.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_2b.png b/perl-install/pixmaps/mouse_2b.png
deleted file mode 100644
index 5df9cf38a..000000000
--- a/perl-install/pixmaps/mouse_2b.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_2b_left.png b/perl-install/pixmaps/mouse_2b_left.png
deleted file mode 100644
index 9844cbc3e..000000000
--- a/perl-install/pixmaps/mouse_2b_left.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_2b_right.png b/perl-install/pixmaps/mouse_2b_right.png
deleted file mode 100644
index d1bea0424..000000000
--- a/perl-install/pixmaps/mouse_2b_right.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b+.png b/perl-install/pixmaps/mouse_3b+.png
deleted file mode 100644
index 964ba5c15..000000000
--- a/perl-install/pixmaps/mouse_3b+.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b+_middle.png b/perl-install/pixmaps/mouse_3b+_middle.png
deleted file mode 100644
index 7b7547318..000000000
--- a/perl-install/pixmaps/mouse_3b+_middle.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b.png b/perl-install/pixmaps/mouse_3b.png
deleted file mode 100644
index c2a9585ba..000000000
--- a/perl-install/pixmaps/mouse_3b.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b_left.png b/perl-install/pixmaps/mouse_3b_left.png
deleted file mode 100644
index 4115a3f8c..000000000
--- a/perl-install/pixmaps/mouse_3b_left.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b_middle.png b/perl-install/pixmaps/mouse_3b_middle.png
deleted file mode 100644
index c2c99f1f7..000000000
--- a/perl-install/pixmaps/mouse_3b_middle.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/mouse_3b_right.png b/perl-install/pixmaps/mouse_3b_right.png
deleted file mode 100644
index f7a04d530..000000000
--- a/perl-install/pixmaps/mouse_3b_right.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/nosplash_thumb.png b/perl-install/pixmaps/nosplash_thumb.png
deleted file mode 100644
index 9fb25693d..000000000
--- a/perl-install/pixmaps/nosplash_thumb.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printer-mdk.png b/perl-install/pixmaps/printer-mdk.png
deleted file mode 100644
index 9399efd02..000000000
--- a/perl-install/pixmaps/printer-mdk.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printer_add.png b/perl-install/pixmaps/printer_add.png
deleted file mode 100644
index c221193e0..000000000
--- a/perl-install/pixmaps/printer_add.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printer_conf.png b/perl-install/pixmaps/printer_conf.png
deleted file mode 100644
index f07042b28..000000000
--- a/perl-install/pixmaps/printer_conf.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printer_default.png b/perl-install/pixmaps/printer_default.png
deleted file mode 100644
index 9c732f7f6..000000000
--- a/perl-install/pixmaps/printer_default.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printer_del.png b/perl-install/pixmaps/printer_del.png
deleted file mode 100644
index d80786d50..000000000
--- a/perl-install/pixmaps/printer_del.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/printerdrake.png b/perl-install/pixmaps/printerdrake.png
deleted file mode 100644
index 87c198972..000000000
--- a/perl-install/pixmaps/printerdrake.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/quit.png b/perl-install/pixmaps/quit.png
deleted file mode 100644
index 7e4e1e1d5..000000000
--- a/perl-install/pixmaps/quit.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/redhat-config-users.png b/perl-install/pixmaps/redhat-config-users.png
deleted file mode 100644
index 09d075da5..000000000
--- a/perl-install/pixmaps/redhat-config-users.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/refresh.png b/perl-install/pixmaps/refresh.png
deleted file mode 100644
index d34b58088..000000000
--- a/perl-install/pixmaps/refresh.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/selected.png b/perl-install/pixmaps/selected.png
deleted file mode 100644
index 49b225b93..000000000
--- a/perl-install/pixmaps/selected.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/slpash-drakeprint-2.png b/perl-install/pixmaps/slpash-drakeprint-2.png
deleted file mode 100644
index ebab96dfe..000000000
--- a/perl-install/pixmaps/slpash-drakeprint-2.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/steps_off.png b/perl-install/pixmaps/steps_off.png
deleted file mode 100644
index 66d4235a9..000000000
--- a/perl-install/pixmaps/steps_off.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/steps_on.png b/perl-install/pixmaps/steps_on.png
deleted file mode 100644
index 21872e396..000000000
--- a/perl-install/pixmaps/steps_on.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/stock_cancel.xpm b/perl-install/pixmaps/stock_cancel.xpm
deleted file mode 100644
index 75466c7a6..000000000
--- a/perl-install/pixmaps/stock_cancel.xpm
+++ /dev/null
@@ -1,93 +0,0 @@
-/* XPM */
-static char * stock_cancel_xpm[] = {
-"24 24 66 1",
-" c None",
-". c #000000",
-"+ c #010101",
-"@ c #040404",
-"# c #DD8D7D",
-"$ c #D05F49",
-"% c #C16E5E",
-"& c #AD4632",
-"* c #080403",
-"= c #D3634E",
-"- c #C95641",
-"; c #C64D37",
-"> c #D9705B",
-", c #C24129",
-"' c #962E1C",
-") c #100401",
-"! c #C34C36",
-"~ c #C03B22",
-"{ c #BF3B22",
-"] c #C44D36",
-"^ c #D66F5B",
-"/ c #B93B24",
-"( c #922C1B",
-"_ c #BE3B22",
-": c #CA6D5B",
-"< c #B83E27",
-"[ c #822617",
-"} c #BD3B22",
-"| c #BC3B22",
-"1 c #B23821",
-"2 c #B06354",
-"3 c #C2462F",
-"4 c #822618",
-"5 c #BB3B22",
-"6 c #BA3B22",
-"7 c #B73922",
-"8 c #B45B4A",
-"9 c #CE523A",
-"0 c #992F1D",
-"a c #BA3A22",
-"b c #C84E37",
-"c c #B63922",
-"d c #CE6653",
-"e c #BD3C24",
-"f c #D17F70",
-"g c #BE3F27",
-"h c #B63D26",
-"i c #B43922",
-"j c #CB7868",
-"k c #BD3F28",
-"l c #922F1E",
-"m c #C24D36",
-"n c #B03720",
-"o c #96311E",
-"p c #B43A23",
-"q c #CC7261",
-"r c #B93A22",
-"s c #A23A26",
-"t c #CD7261",
-"u c #BD3D25",
-"v c #98311E",
-"w c #C23B22",
-"x c #AD3620",
-"y c #912F1E",
-"z c #94301E",
-"A c #A13521",
-" ",
-" ",
-" ",
-" ",
-" .. +@ ",
-" .#$. .%&* ",
-" .=-;. .>,') ",
-" .!~{]. .^/(. ",
-" .!__!. .:<[. ",
-" .!}|1..234. ",
-" .!567890. ",
-" .!aabc. ",
-" .deaa1. ",
-" .fgh765i. ",
-" .jkl..m|}n. ",
-" .j/o. .!__p. ",
-" .qr'. .]{~s. ",
-" .tuv. .;wx. ",
-" .yz. .bA. ",
-" .. .. ",
-" ",
-" ",
-" ",
-" "};
diff --git a/perl-install/pixmaps/stock_exit.xpm b/perl-install/pixmaps/stock_exit.xpm
deleted file mode 100644
index 7f9daf14b..000000000
--- a/perl-install/pixmaps/stock_exit.xpm
+++ /dev/null
@@ -1,167 +0,0 @@
-/* XPM */
-static char * stock_exit_xpm[] = {
-"24 24 140 2",
-" c None",
-". c #000000",
-"+ c #D6D6D4",
-"@ c #BDBDBC",
-"# c #A8A8A4",
-"$ c #92928F",
-"% c #727370",
-"& c #61615E",
-"* c #20201F",
-"= c #F1F1EF",
-"- c #E6E6E4",
-"; c #DADAD7",
-"> c #CFCFCD",
-", c #C4C4C1",
-"' c #A8A8A5",
-") c #767674",
-"! c #777774",
-"~ c #1E1E1D",
-"{ c #B9B9B7",
-"] c #AEAEAC",
-"^ c #8F8F8D",
-"/ c #262626",
-"( c #414140",
-"_ c #E9836C",
-": c #DEDEDC",
-"< c #C5C5C2",
-"[ c #636362",
-"} c #040504",
-"| c #040604",
-"1 c #050705",
-"2 c #E87B62",
-"3 c #E67056",
-"4 c #D5D5D3",
-"5 c #DBDBD8",
-"6 c #D0D0CE",
-"7 c #080A07",
-"8 c #0A0C09",
-"9 c #0A0D09",
-"0 c #0B0E0A",
-"a c #F0B0A1",
-"b c #EB8D77",
-"c c #DF421E",
-"d c #E97E66",
-"e c #CBCBC8",
-"f c #0C0F0B",
-"g c #0F130D",
-"h c #10140E",
-"i c #11150F",
-"j c #EFA392",
-"k c #BFBFBD",
-"l c #5D5D5C",
-"m c #10150F",
-"n c #141912",
-"o c #161C14",
-"p c #171D15",
-"q c #B7B7B4",
-"r c #0C0C0C",
-"s c #192017",
-"t c #1C2319",
-"u c #1D241A",
-"v c #CD8484",
-"w c #990000",
-"x c #701616",
-"y c #A6A6A5",
-"z c #181E16",
-"A c #1E261B",
-"B c #212A1E",
-"C c #222B1F",
-"D c #4F0000",
-"E c #AEAEAB",
-"F c #1D261B",
-"G c #242E21",
-"H c #273224",
-"I c #283325",
-"J c #580000",
-"K c #B5B5B3",
-"L c #293426",
-"M c #2D3929",
-"N c #2E3A2A",
-"O c #7C4343",
-"P c #6A0000",
-"Q c #720000",
-"R c #BDBDBB",
-"S c #232C20",
-"T c #2A3526",
-"U c #303C2B",
-"V c #33402E",
-"W c #C5C5C3",
-"X c #1E261C",
-"Y c #303D2C",
-"Z c #374532",
-"` c #394834",
-" . c #500000",
-".. c #CDCDCB",
-"+. c #1B2319",
-"@. c #253022",
-"#. c #303E2D",
-"$. c #394934",
-"%. c #3D4E38",
-"&. c #9D9D9B",
-"*. c #565655",
-"=. c #2C3828",
-"-. c #40503A",
-";. c #43553E",
-">. c #BABAB7",
-",. c #777776",
-"'. c #323830",
-"). c #232C1F",
-"!. c #313E2D",
-"~. c #3B4A36",
-"{. c #43553D",
-"]. c #485B42",
-"^. c #4A5E44",
-"/. c #F0F0EE",
-"(. c #E5E5E3",
-"_. c #C6C6C3",
-":. c #ACACAB",
-"<. c #8B8B8A",
-"[. c #32392F",
-"}. c #2C3728",
-"|. c #3F503A",
-"1. c #465840",
-"2. c #4B5E44",
-"3. c #4E6347",
-"4. c #506549",
-"5. c #DADAD8",
-"6. c #7A7D78",
-"7. c #333C30",
-"8. c #475A41",
-"9. c #4F6348",
-"0. c #53694C",
-"a. c #566C4E",
-"b. c #576D4F",
-"c. c #91968F",
-"d. c #3B4736",
-"e. c #42543C",
-"f. c #51674A",
-"g. c #586F50",
-"h. c #5B7353",
-"i. c #5C7454",
-" ",
-" . . . . . . . . . . . . . . . . ",
-" . + @ # $ % & & & * . . . . . . ",
-" . = - ; > , ' ) ! ~ . . . . . . ",
-" . . = - ; > , { ] ^ / . . . . . . ",
-" . . . = - ; > , { { { ( . . . . . . ",
-" . _ . : - ; > < { { { [ } | 1 1 1 . ",
-". . . . . . 2 3 . 4 5 6 < { { { [ 7 8 9 0 0 . ",
-". a 2 2 2 2 b c d . e 6 < { { { [ f g h i i . ",
-". j c c c c c c c 3 . k < { l { [ m n o p p . ",
-". j c c c c c c c c 3 . q { l r [ n s t u u . ",
-". v w w w w w w w w w x . y r { [ z A B C C . ",
-". v w w w w w w w w D . E { { { [ F G H I I . ",
-". v w w w w w w w J . K < { { { [ C L M N N . ",
-". O P P P P Q w J . R 6 < { { { [ S T U V V . ",
-". . . . . . Q J . W 5 6 < { { { [ X H Y Z ` . ",
-" . .. ..- 5 6 < { { { [ +.@.#.$.%.. ",
-" . . . = - 5 6 < { ] &.*.B =.Z -.;.. ",
-" . . = - 5 6 >.&.,.'.).!.~.{.].^.. ",
-" . /.(._.:.<.[.}.Z |.1.2.3.4.4.. ",
-" . 5.k 6.7.Z -.8.9.0.a.a.b.b.b.. ",
-" . c.d.e.^.f.g.h.i.i.i.i.i.i.i.. ",
-" . . . . . . . . . . . . . . . . ",
-" "};
diff --git a/perl-install/pixmaps/stock_left.xpm b/perl-install/pixmaps/stock_left.xpm
deleted file mode 100644
index 0cc2c6fd2..000000000
--- a/perl-install/pixmaps/stock_left.xpm
+++ /dev/null
@@ -1,70 +0,0 @@
-/* XPM */
-static char * stock_left_xpm[] = {
-"24 24 43 1",
-" c None",
-". c #000000",
-"+ c #B9D0B9",
-"@ c #CDDECB",
-"# c #B6C7B6",
-"$ c #B1C9B0",
-"% c #B3C4B3",
-"& c #B4CBB2",
-"* c #B5CEB5",
-"= c #B7CCB5",
-"- c #B9CEB7",
-"; c #BAD1BA",
-"> c #BBCFBA",
-", c #BBD0B9",
-"' c #B2C9B0",
-") c #7EAB78",
-"! c #AAC7A8",
-"~ c #B3CAB1",
-"{ c #B0C9B0",
-"] c #B0C9AE",
-"^ c #AEC7AC",
-"/ c #AAC5A8",
-"( c #A9C4A7",
-"_ c #698267",
-": c #2D2D2D",
-"< c #CFDFCC",
-"[ c #ADC8AB",
-"} c #B0C7AE",
-"| c #ADC6AB",
-"1 c #678C63",
-"2 c #9BAD9A",
-"3 c #85AE81",
-"4 c #87AF84",
-"5 c #87B083",
-"6 c #88AF84",
-"7 c #88B085",
-"8 c #86AF82",
-"9 c #547150",
-"0 c #3C5235",
-"a c #5B7950",
-"b c #4A6342",
-"c c #3B5035",
-"d c #415639",
-" ",
-" ",
-" ",
-" . ",
-" .. ",
-" .+. ",
-" .@#. ",
-" .@$%........ ",
-" .@&*=-;->,'). ",
-" .@!~{]^///^(_. ",
-" :<[}||[!^^}^[1. ",
-" .23444445645789. ",
-" .0aaaaaaaaaaab. ",
-" .0aaaaaaaaaab. ",
-" .0aabccccccd. ",
-" .0ab........ ",
-" .0b. ",
-" .b. ",
-" .. ",
-" . ",
-" ",
-" ",
-" ",
-" "};
diff --git a/perl-install/pixmaps/stock_ok.xpm b/perl-install/pixmaps/stock_ok.xpm
deleted file mode 100644
index e7f50776d..000000000
--- a/perl-install/pixmaps/stock_ok.xpm
+++ /dev/null
@@ -1,77 +0,0 @@
-/* XPM */
-static char * stock_ok_xpm[] = {
-"24 24 50 1",
-" c None",
-". c #000000",
-"+ c #86A6C2",
-"@ c #86A8B7",
-"# c #97B3CE",
-"$ c #477198",
-"% c #779DC0",
-"& c #8FAECA",
-"* c #779DBF",
-"= c #C1D2E2",
-"- c #32516D",
-"; c #A9C0D6",
-"> c #628DB5",
-", c #A4BDD5",
-"' c #355674",
-") c #D7E2EC",
-"! c #A3BCD4",
-"~ c #5987B2",
-"{ c #5886B1",
-"] c #B2C7DB",
-"^ c #8BABC9",
-"/ c #7299BD",
-"( c #3C6081",
-"_ c #7A9FC1",
-": c #769CBF",
-"< c #5483AF",
-"[ c #1C2D3D",
-"} c #638EB6",
-"| c #ADC3D8",
-"1 c #42698D",
-"2 c #48739B",
-"3 c #6690B7",
-"4 c #7DA1C2",
-"5 c #BACDDF",
-"6 c #8CACC9",
-"7 c #4E7DA9",
-"8 c #263C51",
-"9 c #5D8AB4",
-"0 c #5785B0",
-"a c #5584B0",
-"b c #4F7EAA",
-"c c #426A8F",
-"d c #4C79A3",
-"e c #49749C",
-"f c #294158",
-"g c #406689",
-"h c #47729A",
-"i c #3D6284",
-"j c #33526E",
-"k c #1B2B3A",
-" ",
-" ",
-" ",
-" .. ",
-" .+@. ",
-" .#$. ",
-" .%&. ",
-" .#$. ",
-" .*&. ",
-" .=-. ",
-" .;>. ",
-" . .,'. ",
-" .). .!~. ",
-" .{]. .^/(. ",
-" ._:. .]<[. ",
-" .%}..|}1. ",
-" .2345678. ",
-" .90abc. ",
-" .bdef. ",
-" .ghi. ",
-" .jk. ",
-" .. ",
-" ",
-" "};
diff --git a/perl-install/pixmaps/stock_right.xpm b/perl-install/pixmaps/stock_right.xpm
deleted file mode 100644
index a683dd8dc..000000000
--- a/perl-install/pixmaps/stock_right.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * stock_right_xpm[] = {
-"24 24 41 1",
-" c None",
-". c #000000",
-"+ c #8CA782",
-"@ c #B1CDAE",
-"# c #77A16E",
-"$ c #B4CEB1",
-"% c #ACC8A9",
-"& c #709867",
-"* c #C1D6BD",
-"= c #BDD3B8",
-"- c #BFD4BB",
-"; c #C2D7BE",
-"> c #B0CAAD",
-", c #B2CBB0",
-"' c #AAC7A8",
-") c #0F1308",
-"! c #AEC5A8",
-"~ c #AEC8AD",
-"{ c #ABC7A8",
-"] c #AAC6A7",
-"^ c #A8C6A5",
-"/ c #ADC8AD",
-"( c #A8C7A8",
-"_ c #A5C4A3",
-": c #7F9F76",
-"< c #A6BFA0",
-"[ c #ABC7AA",
-"} c #A7C5A4",
-"| c #A9C7A6",
-"1 c #AFC8AD",
-"2 c #A4C3A2",
-"3 c #6B9060",
-"4 c #778E6F",
-"5 c #698D60",
-"6 c #6B9063",
-"7 c #445B2C",
-"8 c #6B8661",
-"9 c #5B7950",
-"0 c #6C8562",
-"a c #65815C",
-"b c #506B46",
-" ",
-" ",
-" ",
-" . ",
-" .. ",
-" .+. ",
-" .@#. ",
-" ........$%&. ",
-" .*=-;;;;>,'&) ",
-" .!~{{{]^'/(_:. ",
-" .<[^}^|{%'{123. ",
-" .45666666666657. ",
-" .8999999999997. ",
-" .099999999997. ",
-" .abbbbbb9997. ",
-" ........b97. ",
-" .b7. ",
-" .7. ",
-" .. ",
-" . ",
-" ",
-" ",
-" ",
-" "};
diff --git a/perl-install/pixmaps/unselected.png b/perl-install/pixmaps/unselected.png
deleted file mode 100644
index 689a4eb01..000000000
--- a/perl-install/pixmaps/unselected.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pixmaps/warning.png b/perl-install/pixmaps/warning.png
deleted file mode 100644
index c2da47819..000000000
--- a/perl-install/pixmaps/warning.png
+++ /dev/null
Binary files differ
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
deleted file mode 100644
index 8106be9e5..000000000
--- a/perl-install/pkgs.pm
+++ /dev/null
@@ -1,1460 +0,0 @@
-package pkgs; # $Id$
-
-use strict;
-
-use MDK::Common::System;
-use URPM;
-use URPM::Resolve;
-use URPM::Signature;
-use common;
-use install_any;
-use run_program;
-use detect_devices;
-use log;
-use fs;
-use loopback;
-use c;
-
-
-our %preferred = map { $_ => undef } qw(lilo perl-base gstreamer-oss openjade ctags glibc curl sane-backends postfix mdkkdm gcc gcc-cpp gcc-c++ proftpd ghostscript-X vim-minimal kernel db1 db2 libxpm4 zlib1 libncurses5 harddrake cups apache);
-
-#- lower bound on the left ( aka 90 means [90-100[ )
-our %compssListDesc = (
- 5 => N_("must have"),
- 4 => N_("important"),
- 3 => N_("very nice"),
- 2 => N_("nice"),
- 1 => N_("maybe"),
-);
-
-#- constant for small transaction.
-our $limitMinTrans = 13;
-
-
-#- package to ignore, typically in Application CD. OBSOLETED ?
-my %ignoreBadPkg = (
- 'civctp-demo' => 1,
- 'eus-demo' => 1,
- 'myth2-demo' => 1,
- 'heretic2-demo' => 1,
- 'heroes3-demo' => 1,
- 'rt2-demo' => 1,
- );
-
-sub packageMedium {
- my ($packages, $p) = @_; $p or die "invalid package from\n" . backtrace();
- foreach (values %{$packages->{mediums}}) {
- defined $_->{start} && defined $_->{end} or next;
- $p->id >= $_->{start} && $p->id <= $_->{end} and return $_;
- }
- return {};
-}
-
-sub cleanHeaders() {
- rm_rf("$::prefix/tmp/headers") if -e "$::prefix/tmp/headers";
-}
-
-#- get all headers from an hdlist file.
-sub extractHeaders {
- my ($pkgs, $media) = @_;
- my %medium2pkgs;
-
- cleanHeaders();
-
- foreach (@$pkgs) {
- foreach my $medium (values %$media) {
- $_->id >= $medium->{start} && $_->id <= $medium->{end} or next;
- push @{$medium2pkgs{$medium->{medium}} ||= []}, $_;
- }
- }
-
- foreach (keys %medium2pkgs) {
- my $medium = $media->{$_};
-
- eval {
- require packdrake;
- my $packer = new packdrake("/tmp/$medium->{hdlist}", quiet => 1);
- $packer->extract_archive("$::prefix/tmp/headers", map { $_->header_filename } @{$medium2pkgs{$_}});
- };
- }
-
- foreach (@$pkgs) {
- my $f = "$::prefix/tmp/headers/" . $_->header_filename;
- $_->update_header($f) or log::l("unable to open header file $f"), next;
- log::l("read header file $f");
- }
-}
-
-sub isSupplCDMedium($) {
- my ($medium) = @_;
- $medium->{method} eq 'cdrom' && $medium->{medium} =~ /^\d+s$/;
-}
-
-#- TODO BEFORE TODO
-#- size and correction size functions for packages.
-my $B = 1.20873;
-my $C = 4.98663; #- does not take hdlist's into account as getAvailableSpace will do it.
-sub correctSize { $B * $_[0] + $C }
-sub invCorrectSize { ($_[0] - $C) / $B }
-
-sub selectedSize {
- my ($packages) = @_;
- my $size = 0;
- my %skip;
- #- take care of packages selected...
- foreach (@{$packages->{depslist}}) {
- if ($_->flag_selected) {
- $size += $_->size;
- #- if a package is obsoleted with the same name it should
- #- have been selected, so a selected new package obsoletes
- #- all the old package.
- exists $skip{$_->name} and next; $skip{$_->name} = undef;
- $size -= $packages->{sizes}{$_->name};
- }
- }
- #- but remove size of package being obsoleted or removed.
- foreach (keys %{$packages->{state}{rejected}}) {
- my ($name) = /(.*)-[^\-]*-[^\-]*$/ or next;
- exists $skip{$name} and next; $skip{$name} = undef;
- $size -= $packages->{sizes}{$name};
- }
- $size;
-}
-sub correctedSelectedSize { correctSize(selectedSize($_[0]) / sqr(1024)) }
-
-sub size2time {
- my ($x, $max) = @_;
- my $A = 7e-07;
- my $limit = min($max * 3 / 4, 9e8);
- if ($x < $limit) {
- $A * $x;
- } else {
- $x -= $limit;
- my $B = 6e-16;
- my $C = 15e-07;
- $B * $x ** 2 + $C * $x + $A * $limit;
- }
-}
-
-
-sub packagesProviding {
- my ($packages, $name) = @_;
- map { $packages->{depslist}[$_] } keys %{$packages->{provides}{$name} || {}};
-}
-
-#- searching and grouping methods.
-#- package is a reference to list that contains
-#- a hash to search by name and
-#- a list to search by id.
-sub packageByName {
- my ($packages, $name) = @_;
- #- search package with given name and compatible with current architecture.
- #- take the best one found (most up-to-date).
- my @packages;
- foreach my $pkg (packagesProviding($packages, $name)) {
- $pkg->is_arch_compat or next;
- $pkg->name eq $name or next;
- push @packages, $pkg;
- }
- my $best;
- foreach (@packages) {
- if ($best && $best != $_) {
- $_->compare_pkg($best) > 0 and $best = $_;
- } else {
- $best = $_;
- }
- }
- $best or log::l("unknown package `$name'");
- $best;
-}
-sub packageById {
- my ($packages, $id) = @_;
- my $pkg = $packages->{depslist}[$id]; #- do not log as id unsupported are still in depslist.
- $pkg->is_arch_compat && $pkg;
-}
-
-sub analyse_kernel_name {
- my $kernels = join('|', map { "-$_" }
- '(p3|i586|i686)-(up|smp)-(1GB|4GB|64GB)',
- qw(enterprise secure smp multimedia multimedia-smp xbox),
- );
- my @l = $_[0] =~ /kernel[^\-]*($kernels)?(-([^\-]+))?$/ or return;
- $l[0], $l[-1];
-}
-
-sub packages2kernels {
- my ($packages) = @_;
-
- map {
- if (my ($ext, $version) = analyse_kernel_name($_->name)) {
- { pkg => $_, ext => $ext, version => $version };
- } else {
- log::l("ERROR: unknown package " . $_->name . " providing kernel");
- ();
- }
- } packagesProviding($packages, 'kernel');
-}
-
-sub bestKernelPackage {
- my ($packages) = @_;
-
- my @kernels = packages2kernels($packages) or internal_error('no kernel available');
- my ($version_BOOT) = c::kernel_version() =~ /^(\d+\.\d+)/;
- if (my @l = grep { $_->{version} =~ /\Q$version_BOOT/ } @kernels) {
- #- favour versions corresponding to current BOOT version
- @kernels = @l;
- }
- my @prefered_exts =
- is_xbox() ? '-xbox' :
- detect_devices::is_i586() ? '-i586-up-1GB' :
- !detect_devices::has_cpu_flag('pae') ? ('-i686-up-4GB', '-i586-up-1GB') :
- detect_devices::hasSMP() ? '-smp' :
- '';
- foreach my $prefered_ext (@prefered_exts, '') {
- if (my @l = grep { $_->{ext} eq $prefered_ext } @kernels) {
- @kernels = @l;
- }
- }
-
- log::l("bestKernelPackage (" . join(':', @prefered_exts) . "): " . join(' ', map { $_->{pkg}->name } @kernels) . (@kernels > 1 ? ' (choosing the first)' : ''));
- $preferred{'kernel-source-' . $kernels[0]{version}} = undef;
- $kernels[0]{pkg};
-}
-
-sub packagesOfMedium {
- my ($packages, $medium) = @_;
- defined $medium->{start} && defined $medium->{end} ? @{$packages->{depslist}}[$medium->{start} .. $medium->{end}] : ();
-}
-sub packagesToInstall {
- my ($packages) = @_;
- my @packages;
- foreach (values %{$packages->{mediums}}) {
- $_->{selected} or next;
- log::l("examining packagesToInstall of medium $_->{descr}");
- push @packages, grep { $_->flag_selected } packagesOfMedium($packages, $_);
- }
- log::l("found " . scalar(@packages) . " packages to install");
- @packages;
-}
-
-sub allMediums {
- my ($packages) = @_;
- sort {
- #- put supplementary media at the end
- my @x = ($a, $b);
- foreach (@x) { /(\d+)s/ and $_ = 100 + $1 }
- $x[0] <=> $x[1];
- } keys %{$packages->{mediums}};
-}
-
-sub mediumDescr {
- my ($packages, $medium_name) = @_;
- $packages->{mediums}{$medium_name}{descr};
-}
-
-sub packageRequest {
- my ($packages, $pkg) = @_;
-
- #- check if the same or better version is installed,
- #- do not select in such case.
- $pkg && ($pkg->flag_upgrade || !$pkg->flag_installed) or return;
-
- #- check for medium selection, if the medium has not been
- #- selected, the package cannot be selected.
- foreach (values %{$packages->{mediums}}) {
- !$_->{selected} && $pkg->id >= $_->{start} && $pkg->id <= $_->{end} and return;
- }
-
- return { $pkg->id => 1 };
-}
-
-sub packageCallbackChoices {
- my ($urpm, $_db, $state, $choices) = @_;
- if (my $prefer = find { $_->arch ne 'src' && exists $preferred{$_->name} } @$choices) {
- $prefer;
- } else {
- my @l = grep {
- #- or even if a package requires a specific locales which
- #- is already selected.
- find {
- /locales-/ && do {
- my $p = packageByName($urpm, $_);
- $p && $p->flag_available;
- };
- } $_->requires_nosense;
- } @$choices;
- if (!@l) {
- push @l, $choices->[0];
- log::l("packageCallbackChoices: default choice from ", join(",", map { $urpm->{depslist}[$_]->name } keys %{$state->{selected}}), " in ", join(",", map { $_->name } @$choices));
- }
- #-log::l("packageCallbackChoices: chosen " . join(" ", map { $_->name } @l));
- @l;
- }
-}
-
-#- selection, unselection of package.
-sub selectPackage {
- my ($packages, $pkg, $b_base, $o_otherOnly) = @_;
-
- #- select package and dependancies, o_otherOnly may be a reference
- #- to a hash to indicate package that will strictly be selected
- #- when value is true, may be selected when value is false (this
- #- is only used for unselection, not selection)
- my $state = $packages->{state} ||= {};
-
- my @l = $packages->resolve_requested($packages->{rpmdb}, $state, packageRequest($packages, $pkg) || {},
- callback_choices => \&packageCallbackChoices);
-
- if ($b_base || $o_otherOnly) {
- foreach (@l) {
- $b_base and $_->set_flag_base;
- $o_otherOnly and $o_otherOnly->{$_->id} = $_->flag_requested;
- }
- $o_otherOnly and $packages->disable_selected($packages->{rpmdb}, $state, @l);
- }
- 1;
-}
-
-sub unselectPackage($$;$) {
- my ($packages, $pkg, $o_otherOnly) = @_;
-
- #- base package are not unselectable,
- #- and already unselected package are no more unselectable.
- $pkg->flag_base and return;
- $pkg->flag_selected or return;
-
- my $state = $packages->{state} ||= {};
- log::l("removing selection on package " . $pkg->fullname);
- my @l = $packages->disable_selected($packages->{rpmdb}, $state, $pkg);
- log::l(" removed selection on package " . $pkg->fullname . "gives " . join(',', map { scalar $_->fullname } @l));
- if ($o_otherOnly) {
- foreach (@l) {
- $o_otherOnly->{$_->id} = undef;
- }
- log::l(" reselecting removed selection...");
- $packages->resolve_requested($packages->{rpmdb}, $state, $o_otherOnly, callback_choices => \&packageCallbackChoices);
- log::l(" done");
- }
- 1;
-}
-sub setPackageSelection($$$) {
- my ($packages, $pkg, $value) = @_;
- $value ? selectPackage($packages, $pkg) : unselectPackage($packages, $pkg);
-}
-
-sub unselectAllPackages($) {
- my ($packages) = @_;
- my %keep_selected;
- log::l("unselecting all packages...");
- foreach (@{$packages->{depslist}}) {
- if ($_->flag_base || $_->flag_installed && $_->flag_selected) {
- #- keep track of package that should be kept selected.
- $keep_selected{$_->id} = $_;
- log::l("...keeping " . $_->fullname);
- } else {
- #- deselect all packages except base or packages that need to be upgraded.
- $_->set_flag_required(0);
- $_->set_flag_requested(0);
- }
- }
- #- clean staten, in order to start with a brand new set...
- $packages->{state} = {};
- $packages->resolve_requested($packages->{rpmdb}, $packages->{state}, \%keep_selected,
- callback_choices => \&packageCallbackChoices);
-}
-
-sub urpmidir() {
- my $v = "$::prefix/var/lib/urpmi";
- -l $v && !-e _ and unlink $v and mkdir $v, 0755; #- dangling symlink
- -w $v ? $v : '/tmp';
-}
-
-sub psUpdateHdlistsDeps {
- my ($packages) = @_;
- my $need_copy = 0;
- my $urpmidir = urpmidir();
-
- #- check if current configuration is still up-to-date and do not need to be updated.
- foreach (values %{$packages->{mediums}}) {
- $_->{selected} || $_->{ignored} or next;
- my $hdlistf = "$urpmidir/hdlist.$_->{fakemedium}.cz" . ($_->{hdlist} =~ /\.cz2/ && "2");
- my $synthesisf = "$urpmidir/synthesis.hdlist.$_->{fakemedium}.cz" . ($_->{hdlist} =~ /\.cz2/ && "2");
- if (-s $hdlistf != $_->{hdlist_size}) {
- install_any::getAndSaveFile("media/media_info/$_->{hdlist}", $hdlistf) or die "no $_->{hdlist} found";
- symlinkf $hdlistf, "/tmp/$_->{hdlist}";
- ++$need_copy;
- chown 0, 0, $hdlistf;
- }
- if (-s $synthesisf != $_->{synthesis_hdlist_size}) {
- install_any::getAndSaveFile("media/media_info/synthesis.$_->{hdlist}", $synthesisf);
- if (-s $synthesisf > 0) { chown 0, 0, $synthesisf } else { unlink $synthesisf }
- }
- }
-
- if ($need_copy) {
- #- this is necessary for urpmi.
- install_any::getAndSaveFile("media/media_info/$_", "$urpmidir/$_") && chown 0, 0, "$urpmidir/$_" foreach qw(rpmsrate);
- }
-}
-
-sub psUsingHdlists {
- my ($o, $method, $o_hdlistsprefix, $o_packages, $o_initialmedium, $o_callback) = @_;
- my $is_ftp = $o_hdlistsprefix =~ /^ftp:/;
- my $listf = install_any::getFile($o_hdlistsprefix && !$is_ftp ? "$o_hdlistsprefix/media/media_info/hdlists" : 'media/media_info/hdlists')
- or die "no hdlists found";
- my ($suppl_CDs, $deselectionAllowed) = ($o->{supplmedia} || 0, $o->{askmedia} || 0);
- if (!$o_packages) {
- $o_packages = new URPM;
- #- add additional fields used by DrakX.
- @$o_packages{qw(count mediums)} = (0, {});
- }
-
- #- parse hdlists file.
- my $medium_name = $o_initialmedium || 1;
- my (@hdlists, %mediumsize);
- foreach (<$listf>) {
- chomp;
- s/\s*#.*$//;
- /^\s*$/ and next;
- #- we'll ask afterwards for supplementary CDs, if the hdlists file contains
- #- a line that begins with "suppl"
- if (/^suppl/) { $suppl_CDs = 1; next }
- #- if the hdlists contains a line "askmedia", deletion of media found
- #- in this hdlist is allowed
- if (/^askmedia/) { $deselectionAllowed = 1; next }
- my $cdsuppl = index($medium_name, 's') >= 0;
- my ($noauto, $hdlist, $rpmsdir, $descr, $size) = m/^\s*(noauto:)?(hdlist\S*\.cz2?)\s+(\S+)\s*([^(]*)(\(.+\))?$/
- or die qq(invalid hdlist description "$_" in hdlists file);
- $descr =~ s/\s+$//;
- push @hdlists, [ $hdlist, $medium_name, $rpmsdir, $descr, !$noauto,
- #- hdlist path, suppl CDs are mounted on /mnt/cdrom :
- $o_hdlistsprefix ? ($is_ftp ? "media/media_info/$hdlist" : "$o_hdlistsprefix/media/media_info/$hdlist") : undef,
- ];
- if ($size) {
- ($mediumsize{$hdlist}) = $size =~ /(\d+)/; #- XXX assume Mo
- } else {
- $mediumsize{$hdlist} = 0;
- }
- $cdsuppl ? ($medium_name = ($medium_name + 1) . 's') : ++$medium_name;
- }
- my $copy_rpms_on_disk = 0;
- if ($deselectionAllowed && !defined $o_initialmedium) {
- (my $finalhdlists, $copy_rpms_on_disk) = $o->deselectFoundMedia(\@hdlists, \%mediumsize);
- @hdlists = @$finalhdlists;
- }
-
- foreach my $h (@hdlists) {
- #- make sure the first medium is always selected!
- #- by default select all image.
- my $supplmedium = psUsingHdlist($method, $o_packages, @$h);
- $o_callback and $o_callback->($supplmedium, $o_hdlistsprefix, $method);
- }
-
- log::l("psUsingHdlists read " . int(@{$o_packages->{depslist}}) .
- " headers on " . int(keys %{$o_packages->{mediums}}) . " hdlists");
-
- return $o_packages, $suppl_CDs, $copy_rpms_on_disk;
-}
-
-sub psUsingHdlist {
- my ($method, $packages, $hdlist, $medium_name, $rpmsdir, $descr, $selected, $o_fhdlist, $o_pubkey, $o_nocopy) = @_;
- my $fakemedium = "$descr ($method$medium_name)";
- my $urpmidir = urpmidir();
- log::l("trying to read $hdlist for medium $medium_name");
-
- my $m = { hdlist => $hdlist,
- method => $method,
- medium => $medium_name,
- rpmsdir => $rpmsdir, #- where is RPMS directory.
- descr => $descr,
- fakemedium => $fakemedium,
- selected => $selected, #- default value is only CD1, it is really the minimal.
- ignored => !$selected, #- keep track of ignored medium by DrakX.
- pubkey => [], #- all pubkey block here
- };
-
- #- copy hdlist file directly to urpmi directory, this will be used
- #- for getting header of package during installation or after by urpmi.
- my $newf = "$urpmidir/hdlist.$fakemedium.cz" . ($hdlist =~ /\.cz2/ && "2");
- unless ($o_nocopy) {
- my $w_wait;
- $w_wait = $::o->wait_message(N("Please wait"), N("Downloading file %s...", $hdlist)) if $::o->{method} =~ /^(?:ftp|http|nfs)$/;
- -e $newf and do { unlink $newf or die "cannot remove $newf: $!" };
- install_any::getAndSaveFile($o_fhdlist || "media/media_info/$hdlist", $newf) or do { unlink $newf; die "no $hdlist found" };
- $m->{hdlist_size} = -s $newf; #- keep track of size for post-check.
- symlinkf $newf, "/tmp/$hdlist";
- undef $w_wait;
- }
-
- my $newsf = "$urpmidir/synthesis.hdlist.$fakemedium.cz" . ($hdlist =~ /\.cz2/ && "2");
- #- if $o_fhdlist is a filehandle, it's preferable not to try to find the associated synthesis.
- if (!$o_nocopy && !ref $o_fhdlist) {
- #- copy existing synthesis file too.
- my $synth;
- if ($o_fhdlist) {
- $synth = $o_fhdlist;
- $synth =~ s/hdlist/synthesis.hdlist/ or $synth = undef;
- }
- $synth ||= "media/media_info/synthesis.$hdlist";
- install_any::getAndSaveFile($synth, $newsf);
- $m->{synthesis_hdlist_size} = -s $newsf; #- keep track of size for post-check.
- -s $newsf > 0 or unlink $newsf;
- }
-
- chown 0, 0, $newf, $newsf;
-
- #- get all keys corresponding in the right pubkey file,
- #- they will be added in rpmdb later if not found.
- if (!$o_fhdlist || $o_pubkey) {
- $m->{pubkey} = $o_pubkey;
- unless ($m->{pubkey}) {
- my $pubkey = install_any::getFile("media/media_info/pubkey" . ($hdlist =~ /hdlist(\S*)\.cz2?/ && $1));
- $m->{pubkey} = [ $packages->parse_armored_file($pubkey) ];
- }
- }
-
- #- integrate medium in media list, only here to avoid download error (update) to be propagated.
- $packages->{mediums}{$medium_name} = $m;
-
- #- parse synthesis (if available) of directly hdlist (with packing).
- if ($m->{ignored}) {
- log::l("ignoring packages in $hdlist");
- } else {
- my $nb_suppl_pkg_skipped = 0;
- my $callback = sub {
- my (undef, $p) = @_;
- our %uniq_pkg_seen;
- if ($uniq_pkg_seen{$p->fullname}++) {
- log::l("skipping " . scalar $p->fullname);
- ++$nb_suppl_pkg_skipped;
- return 0;
- } else {
- return 1;
- }
- };
- if (-s $newsf) {
- ($m->{start}, $m->{end}) = $packages->parse_synthesis($newsf, callback => $callback);
- } elsif (-s $newf) {
- ($m->{start}, $m->{end}) = $packages->parse_hdlist($newf, callback => $callback);
- } else {
- delete $packages->{mediums}{$medium_name};
- unlink $newf;
- $o_fhdlist or unlink $newsf;
- die "fatal: no hdlist nor synthesis to read for $fakemedium";
- }
- $m->{start} > $m->{end} and do { delete $packages->{mediums}{$medium_name};
- unlink $newf;
- $o_fhdlist or unlink $newsf;
- die "fatal: nothing read in hdlist or synthesis for $fakemedium" };
- log::l("read " . ($m->{end} - $m->{start} + 1) . " packages in $hdlist, $nb_suppl_pkg_skipped skipped");
- }
- $m;
-}
-
-sub read_rpmsrate_raw {
- my ($f) = @_;
- my $line_nb = 0;
- my $fatal_error;
- my (%flags, %rates, @need_to_copy);
- my (@l);
- local $_;
- while (<$f>) {
- $line_nb++;
- /\t/ and die "tabulations not allowed at line $line_nb\n";
- s/#.*//; # comments
-
- my ($indent, $data) = /(\s*)(.*)/;
- next if !$data; # skip empty lines
-
- @l = grep { $_->[0] < length $indent } @l;
-
- my @m = @l ? @{$l[-1][1]} : ();
- my ($t, $flag, @l2);
- while ($data =~
- /^((
- [1-5]
- |
- (?: (?: !\s*)? [0-9A-Z_]+(?:".*?")?)
- (?: \s*\|\|\s* (?: !\s*)? [0-9A-Z_]+(?:".*?")?)*
- )
- (?:\s+|$)
- )(.*)/x) { #@")) {
- ($t, $flag, $data) = ($1,$2,$3);
- while ($flag =~ s,^\s*(("[^"]*"|[^"\s]*)*)\s+,$1,) {}
- push @m, $flag;
- push @l2, [ length $indent, [ @m ] ];
- $indent .= $t;
- }
- if ($data) {
- # has packages on same line
- my ($rates, $flags) = partition { /^\d$/ } @m;
- my ($rate) = @$rates or die sprintf qq(missing rate for "%s" at line %d (flags are %s)\n), $data, $line_nb, join('&&', @m);
- foreach my $name (split ' ', $data) {
- if (member('INSTALL', @$flags)) {
- push @need_to_copy, $name if !member('NOCOPY', @$flags);
- next; #- do not need to put INSTALL flag for a package.
- }
- if (member('PRINTER', @$flags)) {
- push @need_to_copy, $name;
- }
- my @new_flags = @$flags;
- if (my $previous = $flags{$name}) {
- my @common = intersection($flags, $previous);
- my @diff1 = difference2($flags, \@common);
- my @diff2 = difference2($previous, \@common);
- if (!@diff1 || !@diff2) {
- @new_flags = @common;
- } elsif (@diff1 == 1 && @diff2 == 1) {
- @new_flags = (@common, join('||', $diff1[0], $diff2[0]));
- } else {
- log::l("can not handle complicate flags for packages appearing twice ($name)");
- $fatal_error++;
- }
- log::l("package $name appearing twice with different rates ($rate != " . $rates{$name} . ")") if $rate != $rates{$name};
- }
- $rates{$name} = $rate;
- $flags{$name} = \@new_flags;
- }
- push @l, @l2;
- } else {
- push @l, [ $l2[0][0], $l2[-1][1] ];
- }
- }
- $fatal_error and die "$fatal_error fatal errors in rpmsrate";
- \%rates, \%flags, \@need_to_copy;
-}
-
-sub read_rpmsrate {
- my ($packages, $rpmsrate_flags_chosen, $f) = @_;
-
- my ($rates, $flags, $need_to_copy) = read_rpmsrate_raw($f);
-
- foreach (keys %$flags) {
- my $p = packageByName($packages, $_) or next;
- my @flags = (@{$flags->{$_}}, map { if_(/locales-(.*)/, qq(LOCALES"$1")) } $p->requires_nosense);
-
- @flags = map {
- my ($user_flags, $known_flags) = partition { /^!?CAT_/ } split('\|\|', $_);
- my $ok = find {
- my $inv = s/^!//;
- $inv xor do {
- if (my ($p) = /^HW"(.*)"/) {
- detect_devices::matching_desc__regexp($p);
- } elsif (($p) = /^HW_CAT"(.*)"/) {
- modules::probe_category($p);
- } elsif (($p) = /^DRIVER"(.*)"/) {
- detect_devices::matching_driver__regexp($p);
- } elsif (($p) = /^TYPE"(.*)"/) {
- detect_devices::matching_type($p);
- } else {
- $rpmsrate_flags_chosen->{$_};
- }
- };
- } @$known_flags;
- $ok ? 'TRUE' : @$user_flags ? join('||', @$user_flags) : 'FALSE';
- } @flags;
-
- $p->set_rate($rates->{$_});
- $p->set_rflags(member('FALSE', @flags) ? 'FALSE' : @flags);
- }
- push @{$packages->{needToCopy} ||= []}, @$need_to_copy;
-}
-
-sub readCompssUsers {
- my ($file) = @_;
-
- my $f = -e $file ? install_any::getLocalFile($file) : install_any::getFile($file)
- or do { log::l("can not find $file: $!"); return (undef, undef) };
- my ($compssUsers, $gtk_display_compssUsers) = eval join('', <$f>);
- if ($@) {
- log::l("ERROR: bad $file: $@");
- } else {
- log::l("compssUsers.pl got: ", join(', ', map { qq("$_->{path}|$_->{label}") } @$compssUsers));
- }
- ($compssUsers, $gtk_display_compssUsers);
-}
-
-sub saveCompssUsers {
- my ($packages, $compssUsers) = @_;
- my $flat;
- foreach (@$compssUsers) {
- my %fl = map { ("CAT_$_" => 1) } @{$_->{flags}};
- $flat .= "$_->{label} [icon=xxx] [path=$_->{path}]\n";
- foreach my $p (@{$packages->{depslist}}) {
- my @flags = $p->rflags;
- if ($p->rate && any { any { !/^!/ && $fl{$_} } split('\|\|') } @flags) {
- $flat .= sprintf "\t%d %s\n", $p->rate, $p->name;
- }
- }
- }
- my $urpmidir = urpmidir();
- output "$urpmidir/compssUsers.flat", $flat;
-}
-
-sub setSelectedFromCompssList {
- my ($packages, $rpmsrate_flags_chosen, $min_level, $max_size) = @_;
- $rpmsrate_flags_chosen->{TRUE} = 1; #- ensure TRUE is set
- my $nb = selectedSize($packages);
- foreach my $p (sort { $b->rate <=> $a->rate } @{$packages->{depslist}}) {
- my @flags = $p->rflags;
- next if
- !$p->rate || $p->rate < $min_level ||
- any { !any { /^!(.*)/ ? !$rpmsrate_flags_chosen->{$1} : $rpmsrate_flags_chosen->{$_} } split('\|\|') } @flags;
-
- #- determine the packages that will be selected when
- #- selecting $p. the packages are not selected.
- my $state = $packages->{state} ||= {};
-
- my @l = $packages->resolve_requested($packages->{rpmdb}, $state, packageRequest($packages, $p) || {},
- callback_choices => \&packageCallbackChoices);
-
- #- this enable an incremental total size.
- my $old_nb = $nb;
- foreach (@l) {
- $nb += $_->size;
- }
- if ($max_size && $nb > $max_size) {
- $nb = $old_nb;
- $min_level = $p->rate;
- $packages->disable_selected($packages->{rpmdb}, $state, @l);
- last;
- }
- }
- my @flags = map_each { if_($::b, $::a) } %$rpmsrate_flags_chosen;
- log::l("setSelectedFromCompssList: reached size ", formatXiB($nb), ", up to indice $min_level (less than ", formatXiB($max_size), ") for flags ", join(' ', sort @flags));
- log::l("setSelectedFromCompssList: ", join(" ", sort map { $_->name } grep { $_->flag_selected } @{$packages->{depslist}}));
- $min_level;
-}
-
-#- usefull to know the size it would take for a given min_level/max_size
-#- just saves the selected packages, call setSelectedFromCompssList and restores the selected packages
-sub saveSelected {
- my ($packages) = @_;
- my $state = delete $packages->{state};
- my @l = @{$packages->{depslist}};
- my @flags = map { ($_->flag_requested && 1) + ($_->flag_required && 2) + ($_->flag_upgrade && 4) } @l;
- [ $packages, $state, \@l, \@flags ];
-}
-sub restoreSelected {
- my ($packages, $state, $l, $flags) = @{$_[0]};
- $packages->{state} = $state;
- mapn { my ($pkg, $flag) = @_;
- $pkg->set_flag_requested($flag & 1);
- $pkg->set_flag_required($flag & 2);
- $pkg->set_flag_upgrade($flag & 4);
- } $l, $flags;
-}
-
-sub computeGroupSize {
- my ($packages, $min_level) = @_;
-
- sub inside {
- my ($l1, $l2) = @_;
- my $i = 0;
- return if @$l1 > @$l2;
- foreach (@$l1) {
- my $c;
- while ($c = $l2->[$i++] cmp $_) {
- return if $c == 1 || $i > @$l2;
- }
- }
- 1;
- }
-
- sub or_ify {
- my ($first, @other) = @_;
- my @l = split('\|\|', $first);
- foreach (@other) {
- @l = map {
- my $n = $_;
- map { "$_&&$n" } @l;
- } split('\|\|');
- }
- @l;
- }
- my %or_ify_cache;
- my $or_ify_cached = sub {
- $or_ify_cache{$_[0]} ||= join("\t", or_ify(split("\t", $_[0])));
- };
- sub or_clean {
- my ($flags) = @_;
- my @l = split("\t", $flags);
- @l = map { [ sort split('&&') ] } @l;
- my @r;
- B: while (@l) {
- my $e = shift @l;
- foreach (@r, @l) {
- inside($_, $e) and next B;
- }
- push @r, $e;
- }
- join("\t", map { join('&&', @$_) } @r);
- }
- my (%group, %memo, $slowpart_counter);
-
- log::l("pkgs::computeGroupSize");
- my $time = time();
-
- my %pkgs_with_same_rflags;
- foreach (@{$packages->{depslist}}) {
- next if !$_->rate || $_->rate < $min_level || $_->flag_available;
- my $flags = join("\t", $_->rflags);
- next if $flags eq 'FALSE';
- push @{$pkgs_with_same_rflags{$flags}}, $_;
- }
-
- foreach my $raw_flags (keys %pkgs_with_same_rflags) {
- my $flags = $or_ify_cached->($raw_flags);
- my @pkgs = @{$pkgs_with_same_rflags{$raw_flags}};
-
- #- determine the packages that will be selected when selecting $p.
- #- make a fast selection (but potentially erroneous).
- #- installed and upgrade flags must have been computed (see compute_installed_flags).
- my %newSelection;
-
- my @l2 = map { $_->id } @pkgs;
- my $id;
-
- while (defined($id = shift @l2)) {
- exists $newSelection{$id} and next;
- $newSelection{$id} = undef;
-
- my $pkg = $packages->{depslist}[$id];
- foreach ($pkg->requires_nosense) {
- my @choices = keys %{$packages->{provides}{$_} || {}};
- if (@choices <= 1) {
- push @l2, @choices;
- } elsif (! find { exists $newSelection{$_} } @choices) {
- my ($candidate_id, $prefer_id);
- foreach (@choices) {
- ++$slowpart_counter;
- my $ppkg = $packages->{depslist}[$_] or next;
- $ppkg->flag_available and $prefer_id = $candidate_id = undef, last;
- exists $preferred{$ppkg->name} and $prefer_id = $_;
- $ppkg->name =~ /kernel-\d/ and $prefer_id ||= $_;
- foreach my $l ($ppkg->requires_nosense) {
- /locales-/ or next;
- my $pppkg = packageByName($packages, $l) or next;
- $pppkg->flag_available and $prefer_id ||= $_;
- }
- $candidate_id = $_;
- }
- if (defined $prefer_id || defined $candidate_id) {
- push @l2, defined $prefer_id ? $prefer_id : $candidate_id;
- }
- }
- }
- }
-
- foreach (keys %newSelection) {
- my $p = $packages->{depslist}[$_] or next;
- next if $p->flag_selected; #- always installed (accounted in system_size)
- my $s = $group{$p->name} || $or_ify_cached->(join("\t", $p->rflags));
- my $m = "$flags\t$s";
- $group{$p->name} = ($memo{$m} ||= or_clean($m));
- }
- }
- my (%sizes, %pkgs);
- while (my ($k, $v) = each %group) {
- my $pkg = packageByName($packages, $k) or next;
- push @{$pkgs{$v}}, $k;
- $sizes{$v} += $pkg->size - $packages->{sizes}{$pkg->name};
- }
- log::l("pkgs::computeGroupSize took: ", formatTimeRaw(time() - $time));
- log::l(sprintf "%s %dMB %s", $_, $sizes{$_} / sqr(1024), join(',', @{$pkgs{$_}})) foreach keys %sizes;
- \%sizes, \%pkgs;
-}
-
-
-sub openInstallLog() {
-
- my $f = "$::prefix/root/drakx/install.log";
- open(my $LOG, ">> $f") ? log::l("opened $f") : log::l("Failed to open $f. No install log will be kept."); #-#
- CORE::select((CORE::select($LOG), $| = 1)[0]);
- c::rpmErrorSetCallback(fileno $LOG);
-#- c::rpmSetVeryVerbose();
- $LOG;
-}
-
-sub rpmDbOpen {
- my ($o_rebuild_needed) = @_;
-
- if ($o_rebuild_needed) {
- if (my $pid = fork()) {
- waitpid $pid, 0;
- $? & 0xff00 and die "rebuilding of rpm database failed";
- } else {
- log::l("rebuilding rpm database");
- my $rebuilddb_dir = "$::prefix/var/lib/rpmrebuilddb.$$";
- -d $rebuilddb_dir and log::l("removing stale directory $rebuilddb_dir"), rm_rf($rebuilddb_dir);
-
- URPM::DB::rebuild($::prefix) or log::l("rebuilding of rpm database failed: " . c::rpmErrorString()), c::_exit(2);
-
- c::_exit(0);
- }
- }
-
- my $db;
- if ($db = URPM::DB::open($::prefix)) {
- log::l("opened rpm database for examining existing packages");
- } else {
- log::l("unable to open rpm database, using empty rpm db emulation");
- $db = new URPM;
- }
-
- $db;
-}
-
-sub rpmDbOpenForInstall() {
-
- #- there is a bug in rpm 4.2 where all operations for accessing rpmdb files are not
- #- always done using prefix, we need to setup a symlink in /var/lib/rpm for that ...
- if (! -d '/var/lib/rpm') {
- mkdir_p('/var/lib');
- symlinkf "$::prefix/var/lib/rpm", "/var/lib/rpm";
- }
-
- my $db = URPM::DB::open($::prefix, 1);
- $db and log::l("opened rpmdb for writing in $::prefix");
- $db;
-}
-
-sub cleanOldRpmDb() {
- my $failed;
-
- foreach (qw(Basenames Conflictname Group Name Packages Providename Requirename Triggername)) {
- -s "$::prefix/var/lib/rpm/$_" or $failed = 'failed';
- }
- #- rebuilding has been successfull, so remove old rpm database if any.
- #- once we have checked the rpm4 db file are present and not null, in case
- #- of doubt, avoid removing them...
- unless ($failed) {
- log::l("rebuilding rpm database completed successfully");
- foreach (qw(conflictsindex.rpm fileindex.rpm groupindex.rpm nameindex.rpm packages.rpm
- providesindex.rpm requiredby.rpm triggerindex.rpm)) {
- -e "$::prefix/var/lib/rpm/$_" or next;
- log::l("removing old rpm file $_");
- rm_rf("$::prefix/var/lib/rpm/$_");
- }
- }
-}
-
-sub selectPackagesAlreadyInstalled {
- my ($packages) = @_;
-
- log::l("computing installed flags and size of installed packages");
- $packages->{sizes} = $packages->compute_installed_flags($packages->{rpmdb});
-}
-
-sub selectPackagesToUpgrade {
- my ($packages, $o_medium) = @_;
-
- #- check before that if medium is given, it should be valid.
- $o_medium && (! defined $o_medium->{start} || ! defined $o_medium->{end}) and return;
-
- log::l("selecting packages to upgrade");
-
- my $state = $packages->{state} ||= {};
- $state->{selected} = {};
-
- my %selection;
- $packages->request_packages_to_upgrade($packages->{rpmdb}, $state, \%selection,
- requested => undef,
- $o_medium ? (start => $o_medium->{start}, end => $o_medium->{end}) : (),
- );
- log::l("resolving dependencies...");
- $packages->resolve_requested($packages->{rpmdb}, $state, \%selection,
- callback_choices => \&packageCallbackChoices);
- log::l("...done");
-}
-
-sub allowedToUpgrade { $_[0] !~ /^(kernel|kernel22|kernel2.2|kernel-secure|kernel-smp|kernel-linus|kernel-linus2.2|hackkernel|kernel-enterprise)$/ }
-
-sub supplCDMountPoint() { $::o->{mainmethod} eq 'cdrom' ? "/tmp/image" : "/mnt/cdrom" }
-
-sub installTransactionClosure {
- my ($packages, $id2pkg) = @_;
- my ($id, %closure, @l, $medium, $min_id, $max_id);
-
- @l = sort { $a <=> $b } keys %$id2pkg;
-
- #- search first usable medium (sorted by medium ordering).
- foreach (sort { $a->{start} <=> $b->{start} } values %{$packages->{mediums}}) {
- unless ($_->{selected}) {
- #- this medium is not selected, but we have to make sure no package are left
- #- in $id2pkg.
- if (defined $_->{start} && defined $_->{end}) {
- foreach ($_->{start} .. $_->{end}) {
- delete $id2pkg->{$_};
- }
- @l = sort { $a <=> $b } keys %$id2pkg;
- }
- #- anyway, examine the next one.
- next;
- }
- if ($l[0] <= $_->{end}) {
- #- we have a candidate medium, it could be the right one containing
- #- the first package of @l...
- $l[0] >= $_->{start} and $medium = $_, last;
- #- ... but it could be necessary to find the first
- #- medium containing package of @l.
- foreach my $id (@l) {
- $id >= $_->{start} && $id <= $_->{end} and $medium = $_, last;
- }
- $medium and last;
- }
- }
- $medium or return (); #- no more medium usable -> end of installation by returning empty list.
- ($min_id, $max_id) = ($medium->{start}, $medium->{end});
-
- #- Supplementary CD : switch temporarily to "cdrom" method
- my $suppl_CD = isSupplCDMedium($medium);
- $::o->{mainmethod} = $::o->{method};
- local $::o->{method} = do {
- my $cdrom;
- cat_("/proc/mounts") =~ m,(/dev/\S+)\s+(?:/mnt/cdrom|/tmp/image), and $cdrom = $1;
- if (!defined $cdrom) {
- (my $cdromdev) = detect_devices::cdroms();
- $cdrom = $cdromdev->{device};
- log::l("cdrom redetected at $cdrom");
- devices::make($cdrom);
- install_any::ejectCdrom($cdrom) if $::o->{method} eq 'cdrom';
- install_any::mountCdrom(supplCDMountPoint(), $cdrom);
- } else { log::l("cdrom already found at $cdrom") }
- 'cdrom';
- } if $suppl_CD;
- #- it is sure at least one package will be installed according to medium chosen.
- install_any::useMedium($medium->{medium});
- if (install_any::method_allows_medium_change($medium->{method})) {
- my $pkg = $packages->{depslist}[$l[0]];
-
- #- force changeCD callback to be called from main process.
- install_any::getFile($pkg->filename, $::o->{method}, $suppl_CD ? supplCDMountPoint() : undef);
- #- close opened handle above.
- install_any::getFile('XXX');
- }
-
- while (defined($id = shift @l)) {
- my @l2 = $id;
-
- while (defined($id = shift @l2)) {
- exists $closure{$id} and next;
- $id >= $min_id && $id <= $max_id or next;
- $closure{$id} = undef;
-
- my $pkg = $packages->{depslist}[$id];
- foreach ($pkg->requires_nosense) {
- foreach (keys %{$packages->{provides}{$_} || {}}) {
- if ($id2pkg->{$_}) {
- push @l2, $_;
- last;
- }
- }
- }
- }
-
- keys %closure >= $limitMinTrans and last;
- }
-
- map { delete $id2pkg->{$_} } grep { $id2pkg->{$_} } sort { $a <=> $b } keys %closure;
-}
-
-sub installCallback {
-# my $msg = shift;
-# log::l($msg .": ". join(',', @_));
-}
-
-sub install {
- my ($isUpgrade, $toInstall, $packages) = @_;
- my %packages;
-
- delete $packages->{rpmdb}; #- make sure rpmdb is closed before.
-
- return if !@$toInstall;
-
- #- for root loopback'ed /boot
- my $loop_boot = loopback::prepare_boot();
-
- #- first stage to extract some important informations
- #- about the packages selected. this is used to select
- #- one or many transaction.
- my ($total, $nb);
- foreach my $pkg (@$toInstall) {
- $packages{$pkg->id} = $pkg;
- $nb++;
- $total += to_int($pkg->size); #- do not correct for upgrade!
- }
-
- log::l("pkgs::install $::prefix");
- log::l("pkgs::install the following: ", join(" ", map { $_->name } values %packages));
-
- URPM::read_config_files();
- my $LOG = openInstallLog();
-
- #- do not modify/translate the message used with installCallback since
- #- these are keys during progressing installation, or change in other
- #- place (install_steps_gtk.pm,...).
- installCallback($packages, 'user', undef, 'install', $nb, $total);
-
- do {
- my @transToInstall = installTransactionClosure($packages, \%packages);
- $nb = values %packages;
-
- #- added to exit typically after last media unselected.
- if ($nb == 0 && scalar(@transToInstall) == 0) {
- cleanHeaders();
-
- loopback::save_boot($loop_boot);
- return;
- }
-
- #- extract headers for parent as they are used by callback.
- extractHeaders(\@transToInstall, $packages->{mediums});
-
- my ($retry_pkg, $retry_count);
- while ($retry_pkg || @transToInstall) {
- local (*INPUT, *OUTPUT); pipe INPUT, OUTPUT;
- if (my $pid = fork()) {
- close OUTPUT;
- my $error_msg = '';
- local $_;
- while (<INPUT>) {
- if (/^die:(.*)/) {
- $error_msg = $1;
- last;
- } else {
- chomp;
- my @params = split ":";
- if ($params[0] eq 'close') {
- my $pkg = $packages->{depslist}[$params[1]];
- #- update flag associated to package.
- $pkg->set_flag_installed(1);
- $pkg->set_flag_upgrade(0);
- #- update obsoleted entry.
- foreach (keys %{$packages->{state}{rejected}}) {
- if (exists $packages->{state}{rejected}{$_}{closure}{$pkg->fullname}) {
- delete $packages->{state}{rejected}{$_}{closure}{$pkg->fullname};
- %{$packages->{state}{rejected}{$_}{closure}} or delete $packages->{state}{rejected}{$_};
- }
- }
- } else {
- installCallback($packages, @params);
- }
- }
- }
- $error_msg and $error_msg .= join('', <INPUT>);
- waitpid $pid, 0;
- close INPUT;
- $error_msg and die $error_msg;
- } else {
- #- child process will run each transaction.
- $SIG{SEGV} = sub { log::l("segmentation fault on transactions"); c::_exit(0) };
- my @prev_pids = grep { /^\d+$/ } all("/proc");
- close INPUT;
- select((select(OUTPUT), $| = 1)[0]);
- if ($::testing) {
- my $size_typical = $nb ? int($total/$nb) : 0;
- foreach (@transToInstall) {
- log::l("i would install ", $_->name, " now");
- my $id = $_->id;
- print OUTPUT "inst:$id:start:0:$size_typical\ninst:$id:progress:0:$size_typical\nclose:$id\n";
- }
- } else { eval {
- my $db = rpmDbOpenForInstall() or die "error opening RPM database: ", c::rpmErrorString();
- my $trans = $db->create_transaction($::prefix);
- if ($retry_pkg) {
- log::l("opened rpm database for retry transaction of 1 package only");
- $trans->add($retry_pkg, $isUpgrade && allowedToUpgrade($retry_pkg->name))
- or log::l("add failed for " . $retry_pkg->fullname);
- } else {
- log::l("opened rpm database for transaction of " . int(@transToInstall) .
- " new packages, still $nb after that to do");
- $trans->add($_, $isUpgrade && allowedToUpgrade($_->name))
- foreach @transToInstall;
- }
-
- my @checks = $trans->check; @checks and log::l("check failed : " . join("\n ", @checks));
- $trans->order or die "error ordering package list: " . c::rpmErrorString();
- $trans->set_script_fd(fileno $LOG);
-
- log::l("rpm transactions start");
- my $fd; #- since we return the "fileno", perl does not know we're still using it, and so closes it, and :-(
- my @probs = $trans->run($packages, force => 1, nosize => 1, callback_open => sub {
- my ($data, $_type, $id) = @_;
- my $pkg = defined $id && $data->{depslist}[$id];
- my $medium = packageMedium($packages, $pkg);
- my $f = $pkg && $pkg->filename;
- print $LOG "$f\n";
- if (isSupplCDMedium($medium)) {
- $fd = install_any::getFile($f, $::o->{method}, supplCDMountPoint());
- } else {
- $fd = install_any::getFile($f, $::o->{method}, $medium->{prefix});
- }
- $fd ? fileno $fd : -1;
- }, callback_close => sub {
- my ($data, $_type, $id) = @_;
- my $pkg = defined $id && $data->{depslist}[$id] or return;
- my $check_installed;
- $db->traverse_tag('name', [ $pkg->name ], sub {
- my ($p) = @_;
- $check_installed ||= $pkg->compare_pkg($p) == 0;
- });
- $check_installed or log::l($pkg->name . " not installed, " . c::rpmErrorString());
- $check_installed and print OUTPUT "close:$id\n";
- }, callback_inst => sub {
- my ($_data, $type, $id, $subtype, $amount, $total) = @_;
- print OUTPUT "$type:$id:$subtype:$amount:$total\n";
- });
- log::l("transactions done, now trying to close still opened fd");
- install_any::getFile('XXX'); #- close still opened fd.
-
- @probs and die "installation of rpms failed:\n ", join("\n ", @probs);
- }; $@ and print OUTPUT "die:$@\n" }
- close OUTPUT;
-
- #- now search for child process which may be locking the cdrom, making it unable to be ejected.
- my @allpids = grep { /^\d+$/ } all("/proc");
- my %ppids;
- foreach (@allpids) {
- push @{$ppids{$1 || 1}}, $_
- if cat_("/proc/$_/status") =~ /^PPid:\s+(\d+)/m;
- }
- my @killpid = difference2(\@allpids, [ @prev_pids,
- difference2([ $$, hashtree2list(getppid(), \%ppids) ],
- [ hashtree2list($$, \%ppids) ]) ]);
-
- if (@killpid && $::isInstall) {
- foreach (@killpid) {
- my ($prog, @para) = split("\0", cat_("/proc/$_/cmdline"));
- log::l("ERROR: DrakX should not have to clean the packages shit. Killing $_: " . join(' ', $prog, @para) . ".") if $prog ne '/usr/lib/gconfd-2';
- }
- kill 15, @killpid;
- sleep 2;
- kill 9, @killpid;
- }
-
- c::_exit(0);
- }
-
- #- if we are using a retry mode, this means we have to split the transaction with only
- #- one package for each real transaction.
- if (!$retry_pkg) {
- my @badPackages;
- foreach (@transToInstall) {
- if (!$_->flag_installed && packageMedium($packages, $_)->{selected} && !exists($ignoreBadPkg{$_->name})) {
- push @badPackages, $_;
- log::l("bad package " . $_->fullname);
- } else {
- $_->free_header;
- }
- }
- @transToInstall = @badPackages;
- #- if we are in retry mode, we have to fetch only one package at a time.
- $retry_pkg = shift @transToInstall;
- $retry_count = 3;
- } else {
- my $name;
- if (!$retry_pkg->flag_installed && packageMedium($packages, $retry_pkg)->{selected} && !exists($ignoreBadPkg{$retry_pkg->name})) {
- if ($retry_count) {
- log::l("retrying installing package " . $retry_pkg->fullname . " alone in a transaction");
- --$retry_count;
- } else {
- log::l("bad package " . $retry_pkg->fullname . " unable to be installed");
- $retry_pkg->set_flag_requested(0);
- $retry_pkg->set_flag_required(0);
- #- keep name to display (problem of displaying ?).
- $name = $retry_pkg->fullname;
- $retry_pkg->free_header;
- $retry_pkg = shift @transToInstall;
- $retry_count = 3;
- #- now it could be safe to display error message ?
- cdie("error installing package list: $name");
- }
- }
- #- check if name has been set (so that the following code has been executed already).
- if (!$name && ($retry_pkg->flag_installed || !$retry_pkg->flag_selected)) {
- $retry_pkg->free_header;
- $retry_pkg = shift @transToInstall;
- $retry_count = 3;
- }
- }
- }
- cleanHeaders();
- } while $nb > 0 && !$pkgs::cancel_install;
-
- log::l("closing install.log file");
- close $LOG;
- eval { fs::umount("/mnt/cdrom") };
-
- cleanHeaders();
-
- loopback::save_boot($loop_boot);
-}
-
-sub remove {
- my ($toRemove, $packages) = @_;
-
- delete $packages->{rpmdb}; #- make sure rpmdb is closed before.
-
- return if !@{$toRemove || []};
-
- my $db = rpmDbOpenForInstall() or die "error opening RPM database: ", c::rpmErrorString();
- my $trans = $db->create_transaction($::prefix);
-
- foreach my $p (@$toRemove) {
- #- stuff remove all packages that matches $p, not a problem since $p has name-version-release format.
- $trans->remove($p);
- }
-
- #- we are not checking depends since it should come when
- #- upgrading a system. although we may remove some functionalities ?
-
- #- do not modify/translate the message used with installCallback since
- #- these are keys during progressing installation, or change in other
- #- place (install_steps_gtk.pm,...).
- installCallback($db, 'user', undef, 'remove', scalar @$toRemove);
-
- if (my @probs = $trans->run(undef, force => 1)) {
- die "removing of old rpms failed:\n ", join("\n ", @probs);
- } else {
- #- clean ask_remove according to package marked to be deleted.
- if ($packages) {
- foreach my $p (@$toRemove) {
- delete $packages->{state}{ask_remove}{$p};
- }
- }
- }
-
- #- keep in mind removing of these packages by cleaning $toRemove.
- @{$toRemove || []} = ();
-}
-
-sub selected_leaves {
- my ($packages) = @_;
- my @leaves;
-
- foreach (@{$packages->{depslist}}) {
- $_->flag_requested && !$_->flag_base and push @leaves, $_->name;
- }
- \@leaves;
-}
-
-sub naughtyServers_list {
- my ($quiet) = @_;
-
- my @_old_81 = qw(
-freeswan
-);
- my @_old_82 = qw(
-vnc-server
-postgresql-server
-);
-
- my @_old_92 = qw(
-postfix ypbind bind ibod
-);
-
- my @_removed_92 = qw(
-mcserv
-samba
-lpr
-);
-
- my @_moved_to_contrib_92 = qw(
-boa
-LPRng
-wu-ftpd
-am-utils
-);
-
- my @new_80 = qw(
-jabber
-MySQL
-am-utils
-apache
-boa
-cfengine
-cups
-drakxtools-http
-finger-server
-imap
-leafnode
-lpr
-ntp
-openssh-server
-pidentd
-proftpd
-rwall
-rwho
-squid
-webmin
-wu-ftpd
-);
-
- my @new_81 = qw(
-apache-mod_perl
-ftp-server-krb5
-mcserv
-samba
-telnet-server-krb5
-ypserv
-);
-
- my @new_82 = qw(
-LPRng
-httpd-naat
-inn
-netatalk
-nfs-utils
-rusers-server
-samba-swat
-tftp-server
-ucd-snmp
-);
-
- my @new_92 = qw(
-apache2
-apache2-mod_perl
-DansGuardian
-MySQL-Max
-clusternfs
-gkrellm-server
-lisa
-mon
-net-snmp
-openldap-servers
-samba-server
-saned
-vsftpd
-);
-
- my @not_warned = qw(
-nfs-utils-clients
-portmap
-); # X server
-
- (@new_80, @new_81, @new_82, @new_92, if_(!$quiet, @not_warned));
-}
-
-sub naughtyServers {
- my ($packages) = @_;
-
- grep {
- my $p = packageByName($packages, $_);
- $p && $p->flag_selected;
- } naughtyServers_list('quiet');
-}
-
-sub hashtree2list {
- my ($e, $h) = @_;
- my @l;
- my @todo = $e;
- while (@todo) {
- my $e = shift @todo;
- push @l, $e;
- push @todo, @{$h->{$e} || []};
- }
- @l;
-}
-
-1;
diff --git a/perl-install/printer/STATUS b/perl-install/printer/STATUS
deleted file mode 100644
index e9c5bc205..000000000
--- a/perl-install/printer/STATUS
+++ /dev/null
@@ -1,5 +0,0 @@
-printerdrake status
-
-- printer::printerdrake still needs to be splited/cleaned
-
-- printer::printerdrake should probably be renamed printer::gui
diff --git a/perl-install/printer/common.pm b/perl-install/printer/common.pm
deleted file mode 100644
index 9d8f4d9a5..000000000
--- a/perl-install/printer/common.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-package printer::common;
-
-use strict;
-use vars qw(@ISA @EXPORT);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(addentry addsection removeentry removesection);
-
-
-sub addentry {
- my ($section, $entry, $filecontent) = @_;
- my $sectionfound = 0;
- my $entryinserted = 0;
- my @lines = split("\n", $filecontent);
- foreach (@lines) {
- if (!$sectionfound) {
- $sectionfound = 1 if /^\s*\[\s*$section\s*\]\s*$/;
- } else {
- if (!/^\s*$/ && !/^\s*;/) { #-#
- $_ = "$entry\n$_";
- $entryinserted = 1;
- last;
- }
- }
- }
- push(@lines, $entry) if $sectionfound && !$entryinserted;
- return join "\n", @lines;
-}
-
-sub addsection {
- my ($section, $filecontent) = @_;
- my @lines = split("\n", $filecontent);
- foreach (@lines) {
- # section already there, nothing to be done
- return $filecontent if /^\s*\[\s*$section\s*\]\s*$/;
- }
- return $filecontent . "\n[$section]";
-}
-
-sub removeentry {
- my ($section, $entry, $filecontent) = @_;
- my $sectionfound = 0;
- my $done = 0;
- my @lines = split("\n", $filecontent);
- foreach (@lines) {
- $_ = "$_\n";
- next if $done;
- if (!$sectionfound) {
- $sectionfound = 1 if /^\s*\[\s*$section\s*\]\s*$/;
- } else {
- if (/^\s*\[.*\]\s*$/) { # Next section
- $done = 1;
- } elsif (/^\s*$entry/) {
- $_ = "";
- $done = 1;
- }
- }
- }
- return join "", @lines;
-}
-
-sub removesection {
- my ($section, $filecontent) = @_;
- my $sectionfound = 0;
- my $done = 0;
- my @lines = split("\n", $filecontent);
- foreach (@lines) {
- $_ = "$_\n";
- next if $done;
- if (!$sectionfound) {
- if (/^\s*\[\s*$section\s*\]\s*$/) {
- $_ = "";
- $sectionfound = 1;
- }
- } else {
- if (/^\s*\[.*\]\s*$/) { # Next section
- $done = 1;
- } else {
- $_ = "";
- }
- }
- }
- return join "", @lines;
-}
-
-1;
diff --git a/perl-install/printer/cups.pm b/perl-install/printer/cups.pm
deleted file mode 100644
index 64b0df045..000000000
--- a/perl-install/printer/cups.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-package printer::cups;
-
-use strict;
-
-use printer::data;
-use run_program;
-use common;
-
-
-#------------------------------------------------------------------------------
-
-sub lpstat_lpv() {
-
- # Get a list of remotely defined print queues, with "Description" and
- # "Location"
-
- # Info to return
- my @items;
-
- # Hash to simplify the adding of the URIs
- my $itemshash;
-
- # Run the "lpstat" command in a mode to give as much info about the
- # print queues as possible
- my @lpstat = run_program::rooted_get_stdout
- ($::prefix, 'lpstat', '-l', '-p', '-v');
-
- my $currentitem = -1;
- for my $line (@lpstat) {
- chomp ($line);
- if (!($line =~ m!^\s*$!)) {
- if ($line =~ m!^printer\s+(\S+)\s+(\S.*)$!) {
- # Beginning of new printer's entry
- my $name = $1;
- push(@items, {});
- $currentitem = $#items;
- $itemshash->{$name} = $currentitem;
- $items[$currentitem]{queuename} ||= $name;
- } elsif ($line =~ m!^\s+Description:\s+(\S.*)$!) {
- # Description field
- if ($currentitem != -1) {
- $items[$currentitem]{description} ||= $1;
- }
- } elsif ($line =~ m!^\s+Location:\s+(\S.*)$!) {
- # Location field
- if ($currentitem != -1) {
- $items[$currentitem]{location} ||= $1;
- }
- } elsif ($line =~ m!^device\s+for\s+(\S+):\s+(\S.*)$!) {
- # "device for ..." line, extract URI
- my $name = $1;
- my $uri = $2;
- if (defined($itemshash->{$name})) {
- if ($uri !~ /:/) {$uri = "file:" . $uri};
- $currentitem = $itemshash->{$name};
- if (($currentitem <= $#items) &&
- ($items[$currentitem]{queuename} eq $name)) {
- $items[$currentitem]{uri} ||= $uri;
- if ($uri =~ m!^ipp://([^/:]+)[:/]!) {
- $items[$currentitem]{ipp} = $1;
- }
- }
- }
- }
- }
- }
- return @items;
-}
-
-sub lpstat_v() {
- map {
- if (my ($queuename, $uri) = m/^\s*device\s+for\s+([^:\s]+):\s*(\S+)\s*$/) {
- +{ queuename => $queuename, uri => $uri, if_($uri =~ m!^ipp://([^/:]+)[:/]!, ipp => $1) };
- } else {
- ();
- }
- } run_program::rooted_get_stdout($::prefix, 'lpstat', '-v');
-}
-
-sub lpinfo_v() {
- map {
- if (my ($type, $uri) = m/^\s*(\S+)\s+(\S+)\b/) {
- if ($uri =~ m!:/!) {
- $uri;
- } elsif ($type =~ m/network/i) {
- "$uri://";
- } else {
- "$uri:/";
- }
- } else {
- ();
- }
- } run_program::rooted_get_stdout($::prefix, 'lpinfo', '-v');
-}
-
-sub read_printer_list {
- my ($printer) = @_;
- # This function reads in a list of all printers which the local CUPS
- # daemon currently knows, including remote ones.
- map {
- my $comment =
- $_->{ipp} && !$printer->{configured}{$_->{queuename}} ?
- N("(on %s)", $_->{ipp}) : N("(on this machine)");
- "$_->{queuename} $comment";
- } lpstat_v();
-}
-
-sub get_formatted_remote_queues {
- my ($printer) = @_;
-
- # This function reads in a list of all remote printers which the local
- # CUPS daemon knows due to broadcasting of remote servers or
- # "BrowsePoll" entries in the local /etc/cups/cupsd.conf/
- map {
- join('!', if_($printer->{expert}, N("CUPS")), N("Configured on other machines"), $_);
- } map {
- my $comment = N("On CUPS server \"%s\"", ($_->{ipp} ? $_->{ipp} : $printer->{remote_cups_server})) . ($_->{queuename} eq $printer->{DEFAULT} ? N(" (Default)") : "");
- "$_->{queuename}: $comment";
- } grep {
- !$printer->{configured}{$_->{queuename}};
- } lpstat_v();
-}
-
-sub get_remote_queues {
- my ($printer) = @_;
- # The following code reads in a list of all remote printers which the
- # local CUPS daemon knows due to broadcasting of remote servers or
- # "BrowsePoll" entries in the local /etc/cups/cupsd.conf
- map {
- "$_->{queuename}|$_->{ipp}";
- } grep {
- $_->{ipp} && !$printer->{configured}{$_->{queuename}};
- } lpstat_v();
-}
-
-sub queue_enabled {
- my ($queue) = @_;
- 0 != grep {
- /\b$queue\b.*\benabled\b/i
- } run_program::rooted_get_stdout($::prefix, 'lpstat', '-p', $queue);
-}
-
-
-
-1;
diff --git a/perl-install/printer/data.pm b/perl-install/printer/data.pm
deleted file mode 100644
index 0f5cad96c..000000000
--- a/perl-install/printer/data.pm
+++ /dev/null
@@ -1,170 +0,0 @@
-package printer::data;
-
-use strict;
-use common;
-use vars qw(@ISA @EXPORT);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(%spoolers %spooler_inv %shortspooler_inv
- $kernelversion $usbprintermodule
- $commonpackages $gimpprintingpackages $localqueuepackages);
-
-
-# Kernel-specific data
-our $kernelversion = `uname -r 2>/dev/null`;
-$kernelversion =~ s/^(\s*)(\d+\.\d+)(\..*)$/$2/;
-chomp $kernelversion;
-
-our $usbprintermodule = ($kernelversion eq '2.6' ? "usblp" : "printer");
-
-# Packages which are always needed to run printerdrake
-our $commonpackages = [ [ 'foomatic-db-engine' ],
- [ '/usr/bin/foomatic-configure' ] ];
-
-# Packages which are needed to print with the GIMP
-our $gimpprintingpackages = [ [ 'gutenprint-gimp2' ],
- [ '/usr/lib/gimp/2.0/plug-ins/print' ] ];
-
-# Packages which are needed to create and manage local print queues
-our $localqueuepackages = [ [ 'foomatic-filters', 'foomatic-db',
- 'foomatic-db-hpijs', 'foomatic-db-engine',
- 'printer-filters',
- 'printer-utils', 'printer-testpages',
- 'ghostscript', 'hplip-hpijs', 'gutenprint-ijs',
- 'gutenprint-foomatic', 'gutenprint-escputil',
- 'postscript-ppds', 'hplip-hpijs-ppds',
- 'hplip-model-data', 'nmap', 'scli' ],
- [qw(/usr/bin/foomatic-rip
- /usr/share/foomatic/db/source/driver/ljet4.xml
- /usr/share/foomatic/db/source/driver/hpijs.xml
- /usr/bin/foomatic-configure
- /usr/bin/pnm2ppa
- /usr/bin/getusbprinterid
- /usr/share/printer-testpages/testprint.ps
- /usr/bin/gs-common
- /usr/bin/hpijs
- /usr/share/man/man1/ijsgutenprint.1.bz2
- /usr/share/foomatic/db/source/driver/gutenprint-ijs.5.0.xml
- /usr/bin/escputil
- /usr/share/cups/model/postscript.ppd.gz
- /usr/share/ppd/HP/HP-2000C-hpijs.ppd.gz
- /usr/share/hplip/data/xml/models.xml
- /usr/bin/nmap
- /usr/bin/scli)] ];
-
-# Spooler-specific data
-our %spoolers = ('pdq' => {
- 'help' => "/usr/bin/pdq -h -P %s 2>&1 |",
- 'print_command' => 'lpr-pdq',
- 'print_gui' => 'xpdq',
- 'long_name' => N("PDQ - Print, Do not Queue"),
- 'short_name' => N("PDQ"),
- 'local_queues' => 1,
- 'packages2add' => [ [ 'pdq' ], [qw(/usr/bin/pdq /usr/X11R6/bin/xpdq)] ],
- 'alternatives' => [
- [ 'lpr', '/usr/bin/lpr-pdq' ],
- [ 'lpq', '/usr/bin/lpq-foomatic' ],
- [ 'lprm', '/usr/bin/lprm-foomatic' ]
- ],
- },
- 'lpd' => {
- 'print_command' => 'lpr-lpd',
- 'print_gui' => 'lpr-lpd',
- 'long_name' => N("LPD - Line Printer Daemon"),
- 'short_name' => N("LPD"),
- 'boot_spooler' => 'lpd',
- 'service' => 'lpd',
- 'local_queues' => 1,
- 'packages2add' => [ [qw(lpr net-tools a2ps ImageMagick)],
- [qw(/usr/sbin/lpf
- /usr/sbin/lpd
- /sbin/ifconfig
- /usr/bin/a2ps
- /usr/bin/convert)] ],
- 'packages2rm' => [ 'LPRng', '/usr/lib/filters/lpf' ],
- 'alternatives' => [
- [ 'lpr', '/usr/bin/lpr-lpd' ],
- [ 'lpq', '/usr/bin/lpq-lpd' ],
- [ 'lprm', '/usr/bin/lprm-lpd' ],
- [ 'lpc', '/usr/sbin/lpc-lpd' ]
- ]
- },
- 'lprng' => {
- 'print_command' => 'lpr-lpd',
- 'print_gui' => 'lpr-lpd',
- 'long_name' => N("LPRng - LPR New Generation"),
- 'short_name' => N("LPRng"),
- 'boot_spooler' => 'lpd',
- 'service' => 'lpd',
- 'local_queues' => 1,
- 'packages2add' => [ [qw(LPRng net-tools a2ps ImageMagick)],
- [qw(/usr/lib/filters/lpf
- /usr/sbin/lpd
- /sbin/ifconfig
- /usr/bin/a2ps
- /usr/bin/convert)] ],
- 'packages2rm' => [ 'lpr', '/usr/sbin/lpf' ],
- 'alternatives' => [
- [ 'lpr', '/usr/bin/lpr-lpd' ],
- [ 'lpq', '/usr/bin/lpq-lpd' ],
- [ 'lprm', '/usr/bin/lprm-lpd' ],
- [ 'lp', '/usr/bin/lp-lpd' ],
- [ 'cancel', '/usr/bin/cancel-lpd' ],
- [ 'lpstat', '/usr/bin/lpstat-lpd' ],
- [ 'lpc', '/usr/sbin/lpc-lpd' ]
- ]
- },
- 'cups' => {
- 'help' => "/usr/bin/lphelp %s |",
- 'print_command' => 'lpr-cups',
- 'print_gui' => 'xpp',
- 'long_name' => N("CUPS - Common Unix Printing System"),
- 'short_name' => N("CUPS"),
- 'boot_spooler' => 'cups',
- 'service' => 'cups',
- 'local_queues' => 1,
- 'packages2add' => [ ['cups', 'net-tools', 'xpp', 'cups-drivers', 'gutenprint-cups',
- $::isInstall ? 'curl' : 'webfetch'],
- [ qw(/usr/lib/cups/cgi-bin/printers.cgi
- /sbin/ifconfig
- /usr/bin/xpp
- /usr/lib/cups/filter/rastertolxx74
- /usr/lib/cups/filter/commandtoepson),
- $::isInstall ||
- !(-x '/usr/bin/wget') ?
- '/usr/bin/curl' :
- '/usr/bin/wget' ] ],
- 'alternatives' => [
- [ 'lpr', '/usr/bin/lpr-cups' ],
- [ 'lpq', '/usr/bin/lpq-cups' ],
- [ 'lprm', '/usr/bin/lprm-cups' ],
- [ 'lp', '/usr/bin/lp-cups' ],
- [ 'cancel', '/usr/bin/cancel-cups' ],
- [ 'lpstat', '/usr/bin/lpstat-cups' ],
- [ 'lpc', '/usr/sbin/lpc-cups' ]
- ]
- },
- 'rcups' => {
- 'help' => "/usr/bin/lphelp %s |",
- 'print_command' => 'lpr-cups',
- 'print_gui' => 'xpp',
- 'long_name' => N("CUPS - Common Unix Printing System (remote server)"),
- 'short_name' => N("Remote CUPS"),
- 'local_queues' => 0,
- 'packages2add' => [ ['cups-common', 'xpp'],
- ['/usr/bin/lpr-cups',
- '/usr/bin/xpp'] ],
- 'alternatives' => [
- [ 'lpr', '/usr/bin/lpr-cups' ],
- [ 'lpq', '/usr/bin/lpq-cups' ],
- [ 'lprm', '/usr/bin/lprm-cups' ],
- [ 'lp', '/usr/bin/lp-cups' ],
- [ 'cancel', '/usr/bin/cancel-cups' ],
- [ 'lpstat', '/usr/bin/lpstat-cups' ],
- [ 'lpc', '/usr/sbin/lpc-cups' ]
- ]
- }
- );
-our %spooler_inv = map { $spoolers{$_}{long_name} => $_ } keys %spoolers;
-
-our %shortspooler_inv = map { $spoolers{$_}{short_name} => $_ } keys %spoolers;
diff --git a/perl-install/printer/default.pm b/perl-install/printer/default.pm
deleted file mode 100644
index 41da25c56..000000000
--- a/perl-install/printer/default.pm
+++ /dev/null
@@ -1,64 +0,0 @@
-package printer::default;
-
-use strict;
-use run_program;
-use common;
-
-#-configuration directory of Foomatic
-my $FOOMATICCONFDIR = "/etc/foomatic";
-#-location of the file containing the default spooler's name
-my $FOOMATIC_DEFAULT_SPOOLER = "$FOOMATICCONFDIR/defaultspooler";
-
-sub set_printer {
- my ($printer) = $_[0];
- my $spooler = $printer->{SPOOLER};
- if ($spooler eq "rcups") {
- run_program::rooted($::prefix, "lpoptions",
- "-d", $printer->{DEFAULT}) or return 0;
- } else {
- run_program::rooted($::prefix, "foomatic-configure",
- "-D", "-q", "-s", $spooler,
- "-n", $printer->{DEFAULT}) or return 0;
- }
- return 1;
-}
-
-sub get_printer {
- my $printer = $_[0];
- my $spooler = $printer->{SPOOLER};
- $spooler = "cups" if $spooler eq "rcups";
- local *F;
- open F, ($::testing ? $::prefix : "chroot $::prefix/ ") .
- "foomatic-configure -Q -q -s $spooler |" or return undef;
- my $line;
- while ($line = <F>) {
- if ($line =~ m!^\s*<defaultqueue>(.*)</defaultqueue>\s*$!) {
- return $1;
- }
- }
- return undef;
-}
-
-sub printer_type() { "LOCAL" }
-
-sub get_spooler () {
- if (-f "$::prefix$FOOMATIC_DEFAULT_SPOOLER") {
- my $spool = cat_("$::prefix$FOOMATIC_DEFAULT_SPOOLER");
- chomp $spool;
- if ($spool =~ /cups/) {
- my ($daemonless_cups, $_remote_cups_server) =
- printer::main::read_client_conf();
- $spool = ($daemonless_cups > 0 ? "rcups" : "cups");
- }
- return $spool if $spool =~ /cups|lpd|lprng|pdq/;
- }
-}
-
-sub set_spooler ($) {
- my ($printer) = @_;
- # Mark the default driver in a file
- output_p("$::prefix$FOOMATIC_DEFAULT_SPOOLER", $printer->{SPOOLER});
-}
-
-
-1;
diff --git a/perl-install/printer/detect.pm b/perl-install/printer/detect.pm
deleted file mode 100644
index 065ac23e1..000000000
--- a/perl-install/printer/detect.pm
+++ /dev/null
@@ -1,534 +0,0 @@
-package printer::detect;
-
-use strict;
-use common;
-use modules;
-use detect_devices;
-use printer::data;
-
-sub local_detect() {
- modules::any_conf->read->get_probeall("usb-interface") and eval { modules::load($usbprintermodule) };
- # Reload parallel port modules only when we were not called from the
- # hotplug script, to avoid the hotplug script running recursively
- if (!$::noX) {
- eval { modules::unload(qw(lp parport_pc parport)) }; #- on kernel 2.4 parport has to be unloaded to probe again
- eval { modules::load(qw(parport_pc lp)) }; #- take care as not available on 2.4 kernel (silent error).
- }
- whatPrinter();
-}
-
-sub net_detect { whatNetPrinter(1, 0, @_) }
-
-sub net_smb_detect { whatNetPrinter(0, 1, @_) }
-
-sub detect {
- local_detect(), whatNetPrinter(1, 1, @_);
-}
-
-
-#-CLASS:PRINTER;
-#-MODEL:HP LaserJet 1100;
-#-MANUFACTURER:Hewlett-Packard;
-#-DESCRIPTION:HP LaserJet 1100 Printer;
-#-COMMAND SET:MLC,PCL,PJL;
-sub whatPrinter() {
- my @res = (whatParport(), whatUsbport());
- grep { $_->{val}{CLASS} eq "PRINTER" } @res;
-}
-
-sub whatParport() {
- my @res;
- foreach (0..3) {
- my $elem = {};
- my $F;
- open $F, "/proc/parport/$_/autoprobe" or open $F, "/proc/sys/dev/parport/parport$_/autoprobe" or next;
- {
- local $_;
- my $itemfound = 0;
- while (<$F>) {
- if (/(.*):(.*);/) { #-#
- $elem->{$1} = $2;
- $elem->{$1} =~ s/Hewlett[-\s_]Packard/HP/;
- $elem->{$1} =~ s/HEWLETT[-\s_]PACKARD/HP/;
- $itemfound = 1;
- }
- }
- # Some parallel printers miss the "CLASS" field
- $elem->{CLASS} = 'PRINTER'
- if $itemfound && !defined($elem->{CLASS});
- }
- push @res, { port => "/dev/lp$_", val => $elem };
- }
- @res;
-}
-
-sub whatPrinterPort() {
- grep { detect_devices::tryWrite($_) } qw(/dev/lp0 /dev/lp1 /dev/lp2 /dev/usb/lp0 /dev/usb/lp1 /dev/usb/lp2 /dev/usb/lp3 /dev/usb/lp4 /dev/usb/lp5 /dev/usb/lp6 /dev/usb/lp7 /dev/usb/lp8 /dev/usb/lp9);
-}
-
-sub whatUsbport() {
- # The printer manufacturer and model names obtained with the usb_probe()
- # function were very messy, once there was a lot of noise around the
- # manufacturers name ("Inc.", "SA", "International", ...) and second,
- # all Epson inkjets answered with the name "Epson Stylus Color 760" which
- # lead many newbies to install their Epson Stylus Photo XXX as an Epson
- # Stylus Color 760 ...
- #
- # This routine based on an ioctl request gives very clean and correct
- # manufacturer and model names, so that they are easily matched to the
- # printer entries in the Foomatic database
- my @res;
- foreach my $i (0..15) {
- my $port = "/dev/usb/lp$i";
- my $realport = devices::make($port);
- next if !$realport;
- next if ! -r $realport;
- foreach my $j (1..3) {
- open(my $PORT, $realport) or next;
- my $idstr = "";
- # Calculation of IOCTL function 0x84005001 (to get device ID
- # string):
- # len = 1024
- # IOCNR_GET_DEVICE_ID = 1
- # LPIOC_GET_DEVICE_ID(len) =
- # _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
- # _IOC(), _IOC_READ as defined in /usr/include/asm/ioctl.h
- # Use "eval" so that program does not stop when IOCTL fails
- eval {
- my $output = "\0" x 1024;
- ioctl($PORT, 0x84005001, $output);
- $idstr = $output;
- } or do {
- close $PORT;
- next;
- };
- close $PORT;
- # Remove non-printable characters
- $idstr =~ tr/[\x00-\x1f]/./;
- # If we do not find any item in the ID string, we try to read
- # it again
- my $itemfound = 0;
- # Extract the printer data from the ID string
- my ($manufacturer, $model, $serialnumber, $description, $commandset) =
- ("", "", "", "", "");
- my ($sku);
- if ($idstr =~ /CLS:([^;]+);/ || $idstr =~ /CLASS:([^;]+);/) {
- $itemfound = 1;
- }
- if ($idstr =~ /MFG:([^;]+);/ || $idstr =~ /MANUFACTURER:([^;]+);/) {
- $manufacturer = $1;
- $manufacturer =~ s/Hewlett[-\s_]Packard/HP/;
- $manufacturer =~ s/HEWLETT[-\s_]PACKARD/HP/;
- $itemfound = 1;
- }
- # For HP's multi-function devices the real model name is in the "SKU"
- # field. So use this field with priority for $model when it exists.
- if ($idstr =~ /MDL:([^;]+);/ || $idstr =~ /MODEL:([^;]+);/) {
- $model ||= $1;
- $itemfound = 1;
- }
- if ($idstr =~ /SKU:([^;]+);/) {
- $sku = $1;
- $itemfound = 1;
- }
- if ($idstr =~ /DES:([^;]+);/ || $idstr =~ /DESCRIPTION:([^;]+);/) {
- $description = $1;
- $description =~ s/Hewlett[-\s_]Packard/HP/;
- $description =~ s/HEWLETT[-\s_]PACKARD/HP/;
- $itemfound = 1;
- }
- if (($idstr =~ /SE*R*N:([^;]+);/) ||
- ($idstr =~ /SN:([^;]+);/)) {
- $serialnumber = $1;
- $itemfound = 1;
- }
- if ($idstr =~ /CMD:([^;]+);/ ||
- $idstr =~ /COMMAND\s*SET:([^;]+);/) {
- $commandset ||= $1;
- $itemfound = 1;
- }
- # Nothing found? Try again if not in the third attempt,
- # after the third attempt give up
- next if !$itemfound;
- # Was there a manufacturer and a model in the string?
- if ($manufacturer eq "" || $model eq "") {
- $manufacturer = "";
- $model = N("Unknown Model");
- }
- # No description field? Make one out of manufacturer and model.
- if ($description eq "") {
- $description = "$manufacturer $model";
- }
- # Store this auto-detection result in the data structure
- push @res, { port => $port, val =>
- { CLASS => 'PRINTER',
- MODEL => $model,
- MANUFACTURER => $manufacturer,
- DESCRIPTION => $description,
- SERIALNUMBER => $serialnumber,
- 'COMMAND SET' => $commandset,
- SKU => $sku
- } };
- last;
- }
- }
- @res;
-}
-
-sub whatNetPrinter {
- my ($network, $smb, $timeout) = @_;
-
- my (@res);
-
- # Set timeouts for "nmap"
- $timeout = 4000 if !$timeout;
- my $irtimeout = $timeout / 2;
-
- # Which ports should be scanned?
- my @portstoscan;
- push @portstoscan, "139" if $smb;
- push @portstoscan, "4010", "4020", "4030", "5503", "9100-9104" if $network;
-
- return () if $#portstoscan < 0;
- my $portlist = join ",", @portstoscan;
-
- # Which hosts should be scanned?
- # (Applying nmap to a whole network is very time-consuming, because nmap
- # waits for a certain timeout period on non-existing hosts, so we get a
- # lists of existing hosts by pinging the broadcast addresses for existing
- # hosts and then scanning only them, which is much faster)
- my @hostips = getIPsInLocalNetworks();
- return () if $#hostips < 0;
- my $hostlist = join " ", @hostips;
-
- # Scan network for printers, the timeout settings are there to avoid
- # delays caused by machines blocking their ports with a firewall
- local *F;
- open F, ($::testing ? "" : "chroot $::prefix/ ") .
- qq(/bin/sh -c "export LC_ALL=C; nmap -r -P0 --host_timeout $timeout --initial_rtt_timeout $irtimeout -p $portlist $hostlist" 2> /dev/null |)
- or return @res;
- my ($host, $ip, $port, $modelinfo) = ("", "", "", "");
- while (my $line = <F>) {
- chomp $line;
-
- # head line of the report of a host with the ports in question open
- if (($line =~ m/^\s*Interesting\s+ports\s+on\s+(\S*)\s*\((\S+)\)\s*:\s*$/i) ||
- ($line =~ m/^\s*Interesting\s+ports\s+on\s+(\S+)\s*:\s*$/i)) {
- ($host, $ip) = ($1, $2);
- $ip = $host if !$ip;
- $host = $ip if $host eq "";
- $port = "";
-
- undef $modelinfo;
-
- } elsif ($line =~ m!^\s*(\d+)/\S+\s+open\s+!i) {
- next if $ip eq "";
- $port = $1;
-
- # Now we have all info for one printer
- # Store this auto-detection result in the data structure
-
- # Determine the protocol by the port number
-
- # SMB/Windows
- if ($port eq "139") {
- my @shares = getSMBPrinterShares($ip);
- foreach my $share (@shares) {
- push @res, { port => "smb://$host/$share->{name}",
- val => { CLASS => 'PRINTER',
- MODEL => N("Unknown Model"),
- MANUFACTURER => "",
- DESCRIPTION => $share->{description},
- SERIALNUMBER => ""
- }
- };
- }
- } else {
- if (!defined($modelinfo)) {
- # SNMP request to auto-detect model
- $modelinfo = getSNMPModel($ip);
- }
- if (defined($modelinfo)) {
- push @res, { port => "socket://$host:$port",
- val => $modelinfo
- };
- }
- }
- }
- }
- close F;
- @res;
-}
-
-sub getNetworkInterfaces() {
-
- # subroutine determines the list of all network interfaces reported
- # by "ifconfig", except "lo".
-
- # Return an empty list if no network is running
- return () unless network_running();
-
- my @interfaces;
-
- local *IFCONFIG_OUT;
- open IFCONFIG_OUT, ($::testing ? "" : "chroot $::prefix/ ") .
- '/bin/sh -c "export LC_ALL=C; ifconfig" 2> /dev/null |' or return ();
- while (my $readline = <IFCONFIG_OUT>) {
- # New entry ...
- if ($readline =~ /^(\S+)\s/) {
- my $dev = $1;
- if ($dev ne "lo") {
- push @interfaces, $dev;
- }
- }
- }
- close(IFCONFIG_OUT);
-
- @interfaces;
-}
-
-sub getIPsOfLocalMachine() {
-
- # subroutine determines all IPs which point to the local machine,
- # except 127.0.0.1 (localhost).
-
- # Return an empty list if no network is running
- return () unless network_running();
-
- # Read the output of "ifconfig" to determine the broadcast addresses of
- # the local networks
- my $dev_is_realnet = 0;
- my @local_ips;
- my $current_ip = "";
-
- local *IFCONFIG_OUT;
- open IFCONFIG_OUT, ($::testing ? "" : "chroot $::prefix/ ") .
- '/bin/sh -c "export LC_ALL=C; ifconfig" 2> /dev/null |' or return ();
- while (my $readline = <IFCONFIG_OUT>) {
- # New entry ...
- if ($readline =~ /^(\S+)\s/) {
- my $dev = $1;
- # ... for a real network (not lo = localhost)
- $dev_is_realnet = $dev ne 'lo';
- # delete previous address
- $current_ip = "";
- }
- # Are we in the important line now?
- if ($readline =~ /\sinet addr:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\s/) {
- # Rip out the IP address
- $current_ip = $1;
-
- # Are we in an entry for a real network?
- if ($dev_is_realnet) {
- # Store current IP address
- push @local_ips, $current_ip;
- }
- }
- }
- close(IFCONFIG_OUT);
- @local_ips;
-}
-
-sub getIPsInLocalNetworks() {
-
- # subroutine determines the list of all hosts reachable in the local
- # networks by means of pinging the broadcast addresses.
-
- # Return an empty list if no network is running
- return () unless network_running();
-
- # Read the output of "ifconfig" to determine the broadcast addresses of
- # the local networks
- my $dev_is_localnet = 0;
- my @local_bcasts;
- my $current_bcast = "";
-
- local *IFCONFIG_OUT;
- open IFCONFIG_OUT, ($::testing ? "" : "chroot $::prefix/ ") .
- '/bin/sh -c "export LC_ALL=C; ifconfig" 2> /dev/null |' or return ();
- while (my $readline = <IFCONFIG_OUT>) {
- # New entry ...
- if ($readline =~ /^(\S+)\s/) {
- my $dev = $1;
- # ... for a local network (eth = ethernet,
- # vmnet = VMWare,
- # ethernet card connected to ISP excluded)?
- $dev_is_localnet = $dev =~ /^eth/ || $dev =~ /^vmnet/;
- # delete previous address
- $current_bcast = "";
- }
- # Are we in the important line now?
- if ($readline =~ /\sBcast:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\s/) {
- # Rip out the broadcast IP address
- $current_bcast = $1;
-
- # Are we in an entry for a local network?
- if ($dev_is_localnet == 1) {
- # Store current IP address
- push @local_bcasts, $current_bcast;
- }
- }
- }
- close(IFCONFIG_OUT);
-
- my @addresses;
- # Now ping all broadcast addresses and additionally "nmblookup" the
- # networks (to find Windows servers which do not answer to ping)
- foreach my $bcast (@local_bcasts) {
- local *F;
- open F, ($::testing ? "" : "chroot $::prefix/ ") .
- qq(/bin/sh -c "export LC_ALL=C; ping -w 1 -b -n $bcast 2> /dev/null | cut -f 4 -d ' ' | sed s/:// | egrep '^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+' | uniq | sort" |)
- or next;
- local $_;
- while (<F>) { chomp; push @addresses, $_ }
- close F;
- if (-x "/usr/bin/nmblookup") {
- local *F;
- open F, ($::testing ? "" : "chroot $::prefix/ ") .
- qq(/bin/sh -c "export LC_ALL=C; nmblookup -B $bcast \\* 2> /dev/null | cut -f 1 -d ' ' | egrep '^[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+' | uniq | sort" |)
- or next;
- local $_;
- while (<F>) {
- chomp;
- push @addresses, $_ if !(member($_,@addresses));
- }
- }
- }
-
- @addresses;
-}
-
-sub getSMBPrinterShares {
- my ($host) = @_;
-
- # SMB request to auto-detect shares
- local *F;
- open F, ($::testing ? "" : "chroot $::prefix/ ") .
- qq(/bin/sh -c "export LC_ALL=C; smbclient -N -L $host" 2> /dev/null |) or return ();
- my $insharelist = 0;
- my @shares;
- while (my $l = <F>) {
- chomp $l;
- if ($l =~ /^\s*Sharename\s+Type\s+Comment\s*$/i) {
- $insharelist = 1;
- } elsif ($l =~ /^\s*Server\s+Comment\s*$/i) {
- $insharelist = 0;
- } elsif ($l =~ /^\s*(\S+)\s+Printer\s*(.*)$/i &&
- $insharelist) {
- my $name = $1;
- my $description = $2;
- $description =~ s/^(\s*)//;
- push @shares, { name => $name, description => $description };
- }
- }
- close F;
-
- return @shares;
-}
-
-sub getSNMPModel {
- my ($host) = @_;
- my $manufacturer = "";
- my $model = "";
- my $description = "";
- my $serialnumber = "";
-
- # SNMP request to auto-detect model
- local *F;
- open F, ($::testing ? $::prefix : "chroot $::prefix/ ") .
- qq(/bin/sh -c "scli -v 1 -c 'show printer info' $host" 2> /dev/null |) or
- return { CLASS => 'PRINTER',
- MODEL => N("Unknown Model"),
- MANUFACTURER => "",
- DESCRIPTION => "",
- SERIALNUMBER => ""
- };
- while (my $l = <F>) {
- chomp $l;
- if ($l =~ /^\s*Manufacturer:\s*(\S.*)$/i &&
- $l =~ /^\s*Vendor:\s*(\S.*)$/i) {
- $manufacturer = $1;
- $manufacturer =~ s/Hewlett[-\s_]Packard/HP/;
- $manufacturer =~ s/HEWLETT[-\s_]PACKARD/HP/;
- } elsif ($l =~ /^\s*Model:\s*(\S.*)$/i) {
- $model = $1;
- } elsif ($l =~ /^\s*Description:\s*(\S.*)$/i) {
- $description = $1;
- $description =~ s/Hewlett[-\s_]Packard/HP/;
- $description =~ s/HEWLETT[-\s_]PACKARD/HP/;
- } elsif ($l =~ /^\s*Serial\s*Number:\s*(\S.*)$/i) {
- $serialnumber = $1;
- }
- }
- close F;
-
- # Was there a manufacturer and a model in the output?
- # If not, get them from the description
- if ($manufacturer eq "" || $model eq "") {
- if ($description =~ /^\s*(\S*)\s+(\S.*)$/) {
- $manufacturer = $1 if $manufacturer eq "";
- $model = $2 if $model eq "";
- }
- # No description field? Make one out of manufacturer and model.
- } elsif ($description eq "") {
- $description = "$manufacturer $model";
- }
-
- # We couldn't determine a model
- $model = N("Unknown Model") if $model eq "";
-
- # Remove trailing spaces
- $manufacturer =~ s/(\S+)\s+$/$1/;
- $model =~ s/(\S+)\s+$/$1/;
- $description =~ s/(\S+)\s+$/$1/;
- $serialnumber =~ s/(\S+)\s+$/$1/;
-
- # Now we have all info for one printer
- # Store this auto-detection result in the data structure
- return { CLASS => 'PRINTER',
- MODEL => $model,
- MANUFACTURER => $manufacturer,
- DESCRIPTION => $description,
- SERIALNUMBER => $serialnumber
- };
-}
-
-sub network_running() {
- # If the network is not running return 0, otherwise 1.
- local *F;
- open F, ($::testing ? $::prefix : "chroot $::prefix/ ") .
- '/bin/sh -c "export LC_ALL=C; /sbin/ifconfig" 2> /dev/null |' or
- die 'Could not run "ifconfig"!';
- while (my $line = <F>) {
- if ($line !~ /^lo\s+/ && # The loopback device can have been
- # started by the spooler's startup script
- $line =~ /^(\S+)\s+/) { # In this line starts an entry for a
- # running network
- close F;
- return 1;
- }
- }
- close F;
- return 0;
-}
-
-sub parport_addr {
- # auto-detect the parallel port addresses
- my ($device) = @_;
- $device =~ m!^/dev/lp(\d+)$! or
- $device =~ m!^/dev/printers/(\d+)$!;
- my $portnumber = $1;
- my $parport_addresses =
- `cat /proc/sys/dev/parport/parport$portnumber/base-addr`;
- my $address_arg;
- if ($parport_addresses =~ /^\s*(\d+)\s+(\d+)\s*$/) {
- $address_arg = sprintf(" -base 0x%x -basehigh 0x%x", $1, $2);
- } elsif ($parport_addresses =~ /^\s*(\d+)\s*$/) {
- $address_arg = sprintf(" -base 0x%x", $1);
- } else {
- $address_arg = "";
- }
- return $address_arg;
-}
-
-1;
diff --git a/perl-install/printer/main.pm b/perl-install/printer/main.pm
deleted file mode 100644
index d7eb593fd..000000000
--- a/perl-install/printer/main.pm
+++ /dev/null
@@ -1,3114 +0,0 @@
-package printer::main;
-
-# $Id$
-
-use strict;
-
-use common;
-use run_program;
-use printer::data;
-use printer::services;
-use printer::default;
-use printer::cups;
-use printer::detect;
-use handle_configs;
-use services;
-use lang;
-
-use vars qw(@ISA @EXPORT);
-
-@ISA = qw(Exporter);
-@EXPORT = qw(%printer_type %printer_type_inv);
-
-#-Did we already read the subroutines of /usr/sbin/ptal-init?
-my $ptalinitread = 0;
-
-our %printer_type = (
- N("Local printer") => "LOCAL",
- N("Remote printer") => "REMOTE",
- N("Printer on remote CUPS server") => "CUPS",
- N("Printer on remote lpd server") => "LPD",
- N("Network printer (TCP/Socket)") => "SOCKET",
- N("Printer on SMB/Windows 95/98/NT server") => "SMB",
- N("Printer on NetWare server") => "NCP",
- N("Enter a printer device URI") => "URI",
- N("Pipe job into a command") => "POSTPIPE"
-);
-
-our %printer_type_inv = reverse %printer_type;
-
-our %thedb;
-
-our $hplipdevicesdb;
-
-# Translation of the "(recommended)" in printer driver entries
-our $recstr = N("recommended");
-our $precstr = "($recstr)";
-our $sprecstr = quotemeta($precstr);
-
-#------------------------------------------------------------------------------
-
-sub spooler() {
- # LPD is taken from the menu for the moment because the classic LPD is
- # highly unsecure. Depending on how the GNU lpr development is going on
- # LPD support can be reactivated by uncommenting the following line.
-
- #return @spooler_inv{qw(cups lpd lprng pdq)};
-
- # LPRng is not officially supported any more since version 9.0 of
- # this distribution, so show it only in the spooler menu when it
- # was manually installed.
-
- # PDQ is not officially supported any more since version 9.1, so
- # show it only in the spooler menu when it was manually installed.
-
- return map { $spoolers{$_}{long_name} } ('cups', 'rcups' ,
- if_(files_exist(qw(/usr/bin/pdq)), 'pdq'),
- if_(files_exist(qw(/usr/lib/filters/lpf /usr/sbin/lpd)), 'lprng'));
-}
-
-sub printer_type($) {
- my ($printer) = @_;
- for ($printer->{SPOOLER}) {
- /cups/ and return @printer_type_inv{qw(LOCAL LPD SOCKET SMB), if_($printer->{expert}, qw(URI))};
- /lpd/ and return @printer_type_inv{qw(LOCAL LPD SOCKET SMB NCP), if_($printer->{expert}, qw(POSTPIPE URI))};
- /lprng/ and return @printer_type_inv{qw(LOCAL LPD SOCKET SMB NCP), if_($printer->{expert}, qw(POSTPIPE URI))};
- /pdq/ and return @printer_type_inv{qw(LOCAL LPD SOCKET), if_($printer->{expert}, qw(URI))};
- /rcups/ and return ();
- }
-}
-
-sub SIGHUP_daemon {
- my ($service) = @_;
- if ($service eq "cupsd") { $service = "cups" };
- # PDQ and remote CUPS have no daemons, exit.
- if (($service eq "pdq") || ($service eq "rcups")) { return 1 };
- # CUPS needs auto-correction for its configuration
- run_program::rooted($::prefix, "/usr/sbin/correctcupsconfig") if $service eq "cups";
- # Name of the daemon
- my %daemons = (
- "lpr" => "lpd",
- "lpd" => "lpd",
- "lprng" => "lpd",
- "cups" => "cupsd",
- "devfs" => "devfsd",
- );
- my $daemon = $daemons{$service};
- $daemon = $service unless defined $daemon;
-# if ($service eq "cups") {
-# # The current CUPS (1.1.13) dies on SIGHUP, do the normal restart.
-# printer::services::restart($service);
-# # CUPS needs some time to come up.
-# printer::services::wait_for_cups();
-# } else {
-
- # Send the SIGHUP
- run_program::rooted($::prefix, "/usr/bin/killall", "-HUP", $daemon);
- if ($service eq "cups") {
- # CUPS needs some time to come up.
- printer::services::wait_for_cups();
- }
-
- return 1;
-}
-
-
-sub assure_device_is_available_for_cups {
- # Checks whether CUPS already "knows" a certain port, it does not
- # know it usually when the appropriate kernel module is loaded
- # after CUPS was started or when the printer is turned on after
- # CUPS was started. CUPS 1.1.12 and newer refuses to set up queues
- # on devices which it does not know, it points these queues to
- # file:/dev/null instead. Restart CUPS if necessary to assure that
- # CUPS knows the device.
- my ($device) = @_;
- my $sdevice = handle_configs::searchstr($device);
- my ($result, $i);
- # USB printers get special model-dependent URLs in "lpinfo -v" here
- # checking is complicated, so we simply restart CUPS then and ready.
- if ($device =~ /usb/) {
- $result = printer::services::restart("cups");
- return 1;
- }
- my $maxattempts = 3;
- for ($i = 0; $i < $maxattempts; $i++) {
- open(my $F, ($::testing ? $::prefix : "chroot $::prefix/ ") .
- '/bin/sh -c "export LC_ALL=C; /usr/sbin/lpinfo -v" |') or
- die 'Could not run "lpinfo"!';
- while (my $line = <$F>) {
- if ($line =~ /$sdevice/) { # Found a line containing the device
- # name, so CUPS knows it.
- close $F;
- return 1;
- }
- }
- close $F;
- $result = printer::services::restart("cups");
- }
- return $result;
-}
-
-
-sub spooler_in_security_level {
- # Was the current spooler already added to the current security level?
- my ($spooler, $level) = @_;
- my $sp;
- $sp = $spooler eq "lpr" || $spooler eq "lprng" ? "lpd" : $spooler;
- my $file = "$::prefix/etc/security/msec/server.$level";
- if (-f $file) {
- open(my $F, "< $file") or return 0;
- while (my $line = <$F>) {
- if ($line =~ /^\s*$sp\s*$/) {
- close $F;
- return 1;
- }
- }
- close $F;
- }
- return 0;
-}
-
-sub add_spooler_to_security_level {
- my ($spooler, $level) = @_;
- my $sp;
- $sp = $spooler eq "lpr" || $spooler eq "lprng" ? "lpd" : $spooler;
- my $file = "$::prefix/etc/security/msec/server.$level";
- if (-f $file) {
- eval { append_to_file($file, "$sp\n") } or return 0;
- }
- return 1;
-}
-
-sub pdq_panic_button {
- my $setting = $_[0];
- if (-f "$::prefix/usr/sbin/pdqpanicbutton") {
- run_program::rooted($::prefix, "/usr/sbin/pdqpanicbutton", "--$setting")
- or die "Could not $setting PDQ panic buttons!";
- }
-}
-
-sub copy_printer_params($$) {
- my ($from, $to) = @_;
- map { $to->{$_} = $from->{$_} } grep { $_ ne 'configured' } keys %$from;
- #- avoid cycles-----------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-}
-
-sub getinfo($) {
- my ($prefix) = @_;
- my $printer = {};
-
- $::prefix = $prefix;
-
- # Initialize $printer data structure
- resetinfo($printer);
-
- return $printer;
-}
-
-#------------------------------------------------------------------------------
-sub resetinfo($) {
- my ($printer) = @_;
- $printer->{QUEUE} = "";
- $printer->{OLD_QUEUE} = "";
- $printer->{OLD_CHOICE} = "";
- $printer->{ARGS} = {};
- $printer->{DBENTRY} = "";
- $printer->{DEFAULT} = "";
- $printer->{currentqueue} = {};
- # -check which printing system was used previously and load the information
- # -about its queues
- read_configured_queues($printer);
-}
-
-sub read_configured_queues($) {
- my ($printer) = @_;
- my @QUEUES;
- # Get the default spooler choice from the config file
- $printer->{SPOOLER} ||= printer::default::get_spooler();
- if (!$printer->{SPOOLER}) {
- #- Find the first spooler where there are queues
- foreach my $spooler (qw(rcups cups pdq lprng lpd)) {
- #- Is the spooler's daemon running?
- my $service = $spooler;
- if ($service eq "lprng") {
- $service = "lpd";
- }
- if (($service ne "pdq") && ($service ne "rcups")) {
- next unless services::is_service_running($service);
- # daemon is running, spooler found
- $printer->{SPOOLER} = $spooler;
- }
- #- poll queue info
- if ($service ne "rcups") {
- open(my $F, ($::testing ?
- $::prefix : "chroot $::prefix/ ") .
- "foomatic-configure -P -q -s $spooler |") or
- die "Could not run foomatic-configure";
- eval join('', <$F>);
- close $F;
- }
- if ($service eq "pdq") {
- #- Have we found queues? PDQ has no damon, so we consider
- #- it in use when there are defined printer queues
- if ($#QUEUES != -1) {
- $printer->{SPOOLER} = $spooler;
- last;
- }
- } elsif ($service eq "rcups") {
- #- In daemon-less CUPS mode there are no local queues,
- #- we can only recognize it by a server entry in
- #- /etc/cups/client.conf
- my ($daemonless_cups, $remote_cups_server) =
- printer::main::read_client_conf();
- if ($daemonless_cups) {
- $printer->{SPOOLER} = $spooler;
- $printer->{remote_cups_server} = $remote_cups_server;
- last;
- }
- } else {
- #- For other spoolers we have already found a running
- #- daemon when we have arrived here
- last;
- }
- }
- } else {
- if ($printer->{SPOOLER} ne "rcups") {
- #- Poll the queues of the current default spooler
- open(my $F, ($::testing ? $::prefix : "chroot $::prefix/ ") .
- "foomatic-configure -P -q -s $printer->{SPOOLER} -r |") or
- die "Could not run foomatic-configure";
- eval join('', <$F>);
- close $F;
- } else {
- my ($_daemonless_cups, $remote_cups_server) =
- printer::main::read_client_conf();
- $printer->{remote_cups_server} = $remote_cups_server;
- }
- }
- $printer->{configured} = {};
- my $i;
- my $N = $#QUEUES + 1;
- for ($i = 0; $i < $N; $i++) {
- # Set the default printer
- $printer->{DEFAULT} = $QUEUES[$i]{queuedata}{queue} if
- $QUEUES[$i]{queuedata}{default};
- # Advance to the next entry if the current is a remotely defined
- # printer
- next if $QUEUES[$i]{queuedata}{remote};
- # Add an entry for a locally defined queue
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}} =
- $QUEUES[$i];
- if (!$QUEUES[$i]{make} || !$QUEUES[$i]{model}) {
- if ($printer->{SPOOLER} eq "cups") {
- $printer->{OLD_QUEUE} = $QUEUES[$i]{queuedata}{queue};
- my $descr = get_descr_from_ppd($printer);
- if ($descr =~ m/^([^\|]*)\|([^\|]*)(\|.*|)$/) {
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{make} ||= $1;
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{model} ||= $2;
- }
- # Read out which PPD file was originally used to set up this
- # queue
- if (open(my $F, "< $::prefix/etc/cups/ppd/$QUEUES[$i]{queuedata}{queue}.ppd")) {
- while (my $line = <$F>) {
- if ($line =~ /^\*%MDKMODELCHOICE:(.+)$/) {
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{ppd} = $1;
- }
- }
- close $F;
- }
- # Mark that we have a CUPS queue but do not know the name
- # the PPD file in /usr/share/cups/model
- if ((!$printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{ppd}) &&
- (! -r $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{ppd})) {
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{ppd} = '1';
- }
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{driver} = 'PPD';
- $printer->{OLD_QUEUE} = "";
- }
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{make} ||= "";
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{model} ||= N("Unknown model");
- } else {
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{make} = $QUEUES[$i]{make};
- $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{model} = $QUEUES[$i]{model};
- }
- # Fill in "options" field
- if (my $args = $printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{args}) {
- my @options;
- foreach my $arg (@$args) {
- push(@options, "-o");
- my $optstr = $arg->{name} . "=" . $arg->{default};
- push(@options, $optstr);
- }
- @{$printer->{configured}{$QUEUES[$i]{queuedata}{queue}}{queuedata}{options}} = @options;
- }
- # Construct an entry line for tree view in main window of
- # printerdrake
- make_menuentry($printer, $QUEUES[$i]{queuedata}{queue});
- }
-}
-
-sub make_menuentry {
- my ($printer, $queue) = @_;
- my $spooler = $spoolers{$printer->{SPOOLER}}{short_name};
- my $connect = $printer->{configured}{$queue}{queuedata}{connect};
- my $localremote = N("Configured on this machine");
- my $make = $printer->{configured}{$queue}{queuedata}{make};
- my $model = $printer->{configured}{$queue}{queuedata}{model};
- my $connection;
- if ($connect =~ m!^(file|parallel):/dev/lp(\d+)$!) {
- my $number = $2;
- $connection = N(" on parallel port #%s", $number);
- } elsif ($connect =~ m!^(file|usb):/dev/usb/lp(\d+)$!) {
- my $number = $2;
- $connection = N(", USB printer #%s", $number);
- } elsif ($connect =~ m!^usb://!) {
- $connection = N(", USB printer");
- } elsif ($connect =~ m!^hp:/(.+?)$!) {
- my $hplipdevice = $1;
- if ($hplipdevice =~ m!^par/!) {
- $connection = N(", HP printer on a parallel port");
- } elsif ($hplipdevice =~ m!^usb/!) {
- $connection = N(", HP printer on USB");
- } elsif ($hplipdevice =~ m!^net/!) {
- $connection = N(", HP printer on HP JetDirect");
- } else {
- $connection = N(", HP printer");
- }
- } elsif ($connect =~ m!^ptal://?(.+?)$!) {
- my $ptaldevice = $1;
- if ($ptaldevice =~ /^mlc:par:(\d+)$/) {
- my $number = $1;
- $connection = N(", multi-function device on parallel port #%s",
- $number);
- } elsif ($ptaldevice =~ /^mlc:par:/) {
- $connection = N(", multi-function device on a parallel port");
- } elsif ($ptaldevice =~ /^mlc:usb:/) {
- $connection = N(", multi-function device on USB");
- } elsif ($ptaldevice =~ /^hpjd:/) {
- $connection = N(", multi-function device on HP JetDirect");
- } else {
- $connection = N(", multi-function device");
- }
- } elsif ($connect =~ m!^file:(.+)$!) {
- my $file = $1;
- $connection = N(", printing to %s", $file);
- } elsif ($connect =~ m!^lpd://([^/]+)/([^/]+)/?$!) {
- my ($server, $printer) = ($1, $2);
- $connection = N(" on LPD server \"%s\", printer \"%s\"", $server, $printer);
- } elsif ($connect =~ m!^socket://([^/:]+):([^/:]+)/?$!) {
- my ($host, $port) = ($1, $2);
- $connection = N(", TCP/IP host \"%s\", port %s", $host, $port);
- } elsif ($connect =~ m!^smb://([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^smb://.*/([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^smb://.*\@([^/\@]+)/([^/\@]+)/?$!) {
- my ($server, $share) = ($1, $2);
- $connection = N(" on SMB/Windows server \"%s\", share \"%s\"", $server, $share);
- } elsif ($connect =~ m!^ncp://([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^ncp://.*/([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^ncp://.*\@([^/\@]+)/([^/\@]+)/?$!) {
- my ($server, $printer) = ($1, $2);
- $connection = N(" on Novell server \"%s\", printer \"%s\"", $server, $printer);
- } elsif ($connect =~ m!^postpipe:(.+)$!) {
- my $command = $1;
- $connection = N(", using command %s", $command);
- } else {
- $connection = ($printer->{expert} ? ", URI: $connect" : "");
- }
- my $sep = "!";
- $printer->{configured}{$queue}{queuedata}{menuentry} =
- ($printer->{expert} ? "$spooler$sep" : "") .
- "$localremote$sep$queue: $make $model$connection";
-}
-
-sub connectionstr {
- my ($connect) = @_;
- my $connection;
- if ($connect =~ m!^(file|parallel):/dev/lp(\d+)$!) {
- my $number = $2;
- $connection = N("Parallel port #%s", $number);
- } elsif ($connect =~ m!^(file|usb):/dev/usb/lp(\d+)$!) {
- my $number = $2;
- $connection = N("USB printer #%s", $number);
- } elsif ($connect =~ m!^usb://!) {
- $connection = N("USB printer");
- } elsif ($connect =~ m!^hp:/(.+?)$!) {
- my $hplipdevice = $1;
- if ($hplipdevice =~ m!^par/!) {
- $connection = N("HP printer on a parallel port");
- } elsif ($hplipdevice =~ m!^usb/!) {
- $connection = N("HP printer on USB");
- } elsif ($hplipdevice =~ m!^net/!) {
- $connection = N("HP printer on HP JetDirect");
- } else {
- $connection = N("HP printer");
- }
- } elsif ($connect =~ m!^ptal://?(.+?)$!) {
- my $ptaldevice = $1;
- if ($ptaldevice =~ /^mlc:par:(\d+)$/) {
- my $number = $1;
- $connection = N("Multi-function device on parallel port #%s",
- $number);
- } elsif ($ptaldevice =~ /^mlc:par:/) {
- $connection = N("Multi-function device on a parallel port");
- } elsif ($ptaldevice =~ /^mlc:usb:/) {
- $connection = N("Multi-function device on USB");
- } elsif ($ptaldevice =~ /^hpjd:/) {
- $connection = N("Multi-function device on HP JetDirect");
- } else {
- $connection = N("Multi-function device");
- }
- } elsif ($connect =~ m!^file:(.+)$!) {
- my $file = $1;
- $connection = N("Prints into %s", $file);
- } elsif ($connect =~ m!^lpd://([^/]+)/([^/]+)/?$!) {
- my ($server, $port) = ($1, $2);
- $connection = N("LPD server \"%s\", printer \"%s\"", $server, $port);
- } elsif ($connect =~ m!^socket://([^/:]+):([^/:]+)/?$!) {
- my ($host, $port) = ($1, $2);
- $connection = N("TCP/IP host \"%s\", port %s", $host, $port);
- } elsif ($connect =~ m!^smb://([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^smb://.*/([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^smb://.*\@([^/\@]+)/([^/\@]+)/?$!) {
- my ($server, $share) = ($1, $2);
- $connection = N("SMB/Windows server \"%s\", share \"%s\"", $server, $share);
- } elsif ($connect =~ m!^ncp://([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^ncp://.*/([^/\@]+)/([^/\@]+)/?$! ||
- $connect =~ m!^ncp://.*\@([^/\@]+)/([^/\@]+)/?$!) {
- my ($server, $share) = ($1, $2);
- $connection = N("Novell server \"%s\", printer \"%s\"", $server, $share);
- } elsif ($connect =~ m!^postpipe:(.+)$!) {
- my $command = $1;
- $connection = N("Uses command %s", $command);
- } else {
- $connection = N("URI: %s", $connect);
- }
- return $connection;
-}
-
-sub read_printer_db {
-
- my ($printer, $spooler) = @_;
-
- # No local queues available in daemon-less CUPS mode
- return 1 if $spooler eq "rcups";
-
- my $DBPATH; #- do not have to do close ... and do not modify globals at least
- # Generate the Foomatic printer/driver overview, read it from the
- # appropriate file when it is already generated
- open($DBPATH, ($::testing ? $::prefix : "chroot $::prefix/ ") . #-#
- "foomatic-configure -O -q |") or
- die "Could not run foomatic-configure";
-
- my $entry = {};
- my $inentry = 0;